{"version":3,"sources":["../../../node_modules/browser-pack/_prelude.js","0000_common/0001_directives/angularJS/build/ktdirectives.js","0000_common/0001_directives/angularTemplates/build/ktdirectivetemplates.js","0000_common/0002_services/angularJS/build/services.js","0000_common/0003_libs/kt-api.js","0000_common/0003_libs/kt-state-manager.js","0000_common/0004_modules/apiModule.js","0000_common/0004_modules/authModule.js","0000_common/0004_modules/codesModule.js","0000_common/0004_modules/errorModule.js","0000_common/0004_modules/gridsterModule.js","0000_common/0004_modules/interceptorModule.js","0000_common/0004_modules/menuModule.js","0000_common/0004_modules/messagingModule.js","0000_common/0004_modules/processingModule.js","0000_common/0004_modules/resourcesDataModule.js","0000_common/0004_modules/settingsModule.js","0000_common/0004_modules/stateManagerModule.js","0000_common/0004_modules/tasksDataModule.js","0000_common/0004_modules/utilityModule.js","0000_common/0004_modules/widgetDataExchangeModule.js","0000_common/0004_modules/widgetRegisterModule.js","0001_modules/0001_index/angularJS/bootstrap.js","0001_modules/0001_index/angularJS/index.json","0001_modules/0001_index/angularJS/index.js","0001_modules/0001_index/angularJS/indexCtrls.js","0001_modules/0001_index/angularJS/katalyoCtrls.js","0001_modules/0002_auth/angularJS/authCtrls.js","0001_modules/0003_resources/angularJS/resourcesCtrls.js","0001_modules/0004_settings/angularJS/settingsCtrls.js","0001_modules/0005_tasks/angularJS/tasksCtrls.js","0001_modules/0006_vpage/angularJS/vpageCtrls.js","0001_modules/ctrls/build/angularTemplates/ktroutetemplates.js"],"names":[],"mappings":"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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCACG,CAlID,IAkIO,CACe;AACrB;AACA,CACM,CA5ID,CA4IG;AAGH,KAAK,CAAC,yBAAN,CAAkC,UAAW,CAAE;AAE5C,GAAI,KAAK,CAAC,EAAN,CAAS,UAAT,EAAqB,SAAzB,CACC,IAAK,GAAI,CAAA,CAAC,CAAC,CAAX,CAAa,CAAC,CAAE,KAAK,CAAC,EAAN,CAAS,UAAT,CAAoB,MAApC,CAA2C,CAAC,EAA5C,CAAgD,CAC5C,GAAI,CAAA,cAAc,CAAC,KAAK,CAAC,EAAN,CAAS,UAAT,CAAoB,CAApB,EAAuB,QAA1C,CAAqD;AACrD,GAAI,CAAA,UAAU,CAAG,cAAjB,CAAqD;AAErD,GAAI,cAAc,EAAE,SAAhB,EAA6B,cAAc,EAAE,IAAjD,CAAwD,CACpD,IAAK,GAAI,CAAA,CAAC,CAAC,CAAX,CAAa,CAAC,CAAC,KAAK,CAAC,EAAN,CAAS,UAAT,CAAoB,CAApB,EAAuB,GAAvB,CAA2B,MAA1C,CAAiD,CAAC,EAAlD,CAAsD,CAClD,GAAK,KAAK,CAAC,EAAN,CAAS,UAAT,CAAoB,CAApB,EAAuB,GAAvB,CAA2B,CAA3B,EAA8B,IAA9B,EAAoC,cAArC,EAAyD,KAAK,CAAC,EAAN,CAAS,UAAT,CAAoB,CA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,EAAgC,WAAhC,C;;AAgFpB;eAEc,qB;;;;ACxIf;;AAEA;;AAEA;;AACA;;;;AAFA;AAIA,OAAO,CAAC,SAAR,CAAkB,QAAlB,EAA4B,CAAC,iBAAD,CAA5B;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7JA;;;;;;;;;AAMA;;AACA;;AAGA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;;;AA5BA,OAAO,CAAC,MAAR,CAAe,mBAAf,EAAmC,EAAnC,E,CAEA;;AA4BA,IAAI,GAAG,GAAG,OAAO,CAAC,MAAR,CAAe,0BAAf,EAA0C,EAA1C,CAAV;AAEA,OAAO,CAAC,OAAR,CAAgB,cAAh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","file":"katalyo_bundle.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i0)\r\n { \r\n TaskDataService.GetTaskOutcomes( $scope.fd.localVars.resourceDefinition?.ResourceDefId,outcomeId,lang).then(function(data) { \r\n \r\n $scope.fd.localVars.outcomes = data.data;\r\n $scope.outcomesDownloaded = true;\r\n \r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n else\r\n {\r\n $scope.loadingActions=false; \r\n }\r\n \r\n }//GetOutcomes\r\n \r\n if ($scope.fd.localVars.outcomes==undefined) {\r\n $scope.GetOutcomes(); \r\n }\r\n \r\n $scope.fd.localVars.loadedTasks = [];\r\n if ($scope.fd.localVars.actionButtonProps==undefined)\r\n {\r\n $scope.fd.localVars.actionButtonProps={};\r\n }\r\n \r\n $scope.fd.localVars.actionButtonProps[$scope.fd.UuidRef]=0; \r\n\r\n $scope.fd.localVars.formType=$scope.resourceDefinition?.form_type;\r\n //var taskDefId = $stateParams.id;\r\n var lang=$rootScope.globals.currentUser.lang;\r\n $scope.fd.localVars.taskListParameters = {placeholder:'Select or search task...',label:$scope.fd.placeholder,name:'task',\r\n paddingLeft:true,selectedItem:null,hideLabel:true,columnSizeLabel:'col-lg-24',dropdownSize:'col-lg-24',onSelectFunction:''};\r\n \r\n $scope.fd.localVars.selectedTaskIndex=-1;\r\n \r\n \r\n let process_event_task_action = function(data)\r\n {\r\n \r\n if (data?.state?.error==true) $scope.stopExecutingActions=true\r\n\r\n if ($scope.fd.localVars.clickedButton!==undefined && $scope.fd.FormDef.length>$scope.fd.localVars.clickedButton && !$scope.stopExecutingActions){\r\n\r\n for (let j=0;j<$scope.fd.FormDef[$scope.fd.localVars.clickedButton].visibilityAfterAction.length;j++)\r\n {\r\n $scope.fd.FormDef[j].hideButton = !$scope.fd.FormDef[$scope.fd.localVars.clickedButton].visibilityAfterAction[j].visible;\r\n }\r\n \r\n\r\n \r\n if (data?.state?.action_index!=undefined) \r\n {\r\n $scope.fd.localVars.actionsExecuted[$scope.fd.localVars.clickedButton+'-'+data?.state?.action_index] = true\r\n $scope.fd.localVars.processExecutionQueue(data?.state?.action_index)\r\n }\r\n\r\n }\r\n }\r\n\r\n let process_after_widget_action = function(data)\r\n {\r\n if (data?.state?.error==true) $scope.stopExecutingActions=true\r\n\r\n \r\n if ($scope.fd.localVars.clickedButton!==undefined && $scope.fd.FormDef.length>$scope.fd.localVars.clickedButton && !$scope.stopExecutingActions){\r\n\r\n for (let j=0;j<$scope.fd.FormDef[$scope.fd.localVars.clickedButton].visibilityAfterAction.length;j++)\r\n {\r\n $scope.fd.FormDef[j].hideButton = !$scope.fd.FormDef[$scope.fd.localVars.clickedButton].visibilityAfterAction[j].visible;\r\n }\r\n \r\n\r\n \r\n if (data?.state?.action_index!=undefined) \r\n {\r\n $scope.fd.localVars.actionsExecuted[$scope.fd.localVars.clickedButton+'-'+data?.state?.action_index] = true\r\n $scope.fd.localVars.processExecutionQueue(data?.state?.action_index)\r\n }\r\n\r\n }\r\n \r\n }\r\n \r\n let dependent_field1 = \"Field\"+$scope.fd.PresentationId;\r\n let subscribedSubject1 = \"task\"+$scope.resourceDefinition?.transaction_id\r\n let observer1 = $scope.ksm.subscribe(initiateTaskStateName,dependent_field1,\"task_initiated\",process_event_task_action);\r\n let subscribedSubject2 = \"executeTaskStateName\"+$scope.resourceDefinition?.transaction_id\r\n let observer2 = $scope.ksm.subscribe(subscribedSubject2,dependent_field1,\"task_executed\",process_event_task_action);\r\n\r\n let subscribedSubject3 = \"processWidgetsStateName\"+$scope.resourceDefinition?.page_state_id\r\n let observer3 = $scope.ksm.subscribe(subscribedSubject3,dependent_field1,\"widgets_processed\",process_event_task_action);\r\n\r\n \r\n \r\n $scope.$on('InlineTaskClosed',function(event,data){\r\n //var index=data;\r\n //$scope.fd.loadedTasks.splice(index,1);\r\n var taskId=data;\r\n var pos = $scope.fd.localVars.loadedTasks.map(function(e) { return e.taskId; }).indexOf(taskId);\r\n \r\n if (pos>=0)\r\n {\r\n $scope.fd.localVars.loadedTasks.splice(pos,1); \r\n }\r\n });\r\n \r\n \r\n $scope.fd.localVars.LoadTask=function(taskId,outcomeId,previousTask,openTaskType,button)\r\n {\r\n \r\n var localVars = {'isInlineTask':$scope.fd.isInlineTask,'OpenTaskType':openTaskType,'taskIndex':$scope.fd.localVars.loadedTasks.length,'loadTaskDirect' : true,'taskId':taskId,'outcomeId':outcomeId,'previousTask':previousTask,};\r\n \r\n localVars.ShowCloseBtn = button.ShowCloseTaskBtn;\r\n var pos = $scope.fd.localVars.loadedTasks.map(function(e) { return e.taskId; }).indexOf(taskId);\r\n \r\n if (pos<0 && openTaskType==\"current\")\r\n {\r\n $scope.fd.localVars.loadedTasks.splice(0,0,{'taskId':taskId,'outcomeId':outcomeId,'previousTask':previousTask,'localVars':localVars});\r\n $scope.ksm.executeAction(initiateTaskStateName,\"task_initiated\", {'taskId':taskId,'outcomeId':outcomeId,'previousTask':previousTask,'localVars':localVars});\r\n \r\n \r\n }else if (openTaskType==\"inline\")\r\n {\r\n $scope.fd.localVars.loadedTasks.length=0;\r\n $scope.fd.localVars.loadedTasks.push({'taskId':taskId,'outcomeId':outcomeId,'previousTask':previousTask,'localVars':localVars});\r\n $scope.ksm.executeAction(initiateTaskStateName,\"task_initiated\", {'taskId':taskId,'outcomeId':outcomeId,'previousTask':previousTask,'localVars':localVars});\r\n \r\n \r\n }else if (openTaskType==\"container\")\r\n {\r\n localVars = {'isInlineTask':$scope.fd.isInlineTask,'OpenTaskType':'current','taskIndex':0,'loadTaskDirect' : true,'taskId':taskId,'outcomeId':outcomeId,'previousTask':previousTask,};\r\n \r\n $scope.ksm.executeAction(initiateTaskStateName,\"task_initiated\", {'taskId':taskId,'outcomeId':outcomeId,'previousTask':previousTask,'localVars':localVars});\r\n \r\n }\r\n $scope.gsrvc.setOpenTaskType(openTaskType);\r\n \r\n }\r\n \r\n \r\n $scope.fd.localVars.copyToClipboard = function(text){\r\n $scope.fd.localVars.copyUuid = true;\r\n\r\n navigator.clipboard.writeText(text).then( \r\n () => {\r\n $timeout(function(){$scope.fd.localVars.copyUuid = false;},1000);\r\n },\r\n () => { /* clipboard write failed */\r\n MessagingService.addMessage('Copy to clipboard failed','error');\r\n $timeout(function(){$scope.fd.localVars.copyUuid = false;},1000);\r\n });\r\n \r\n }\r\n\r\n $scope.fd.localVars.addButtonAction = function(){\r\n \r\n if ($scope.fd.localVars.selectedButton.actions==undefined) $scope.fd.localVars.selectedButton.actions=[]\r\n $scope.fd.localVars.selectedButton.actions.push({id:$scope.fd.localVars.selectedButton.actions.length+1,widgetRef:'',widgetActionName:''})\r\n }\r\n $scope.fd.localVars.delButtonAction = function(index){\r\n $scope.fd.localVars.selectedButton.actions.splice(index,1)\r\n }\r\n $scope.fd.localVars.insertButtonAction = function(index){\r\n $scope.fd.localVars.selectedButton.actions.splice(index,0,{id:$scope.fd.localVars.selectedButton.actions.length+1,widgetRef:'',widgetActionName:''})\r\n }\r\n $scope.fd.localVars.ProcessOutcome = function (outcome,form){\r\n \r\n for (var i=0;i0) $scope.fd.localVars.LoadTask(taskDefId,outcomeId,$scope.resourceDefinition?.task_execute_id,openInNewPage); \r\n }\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n\r\n });\r\n\r\n }else\r\n {\r\n MessagingService.addMessage(\"Invalid task data --> Task execution object is undefined\",'error');\r\n }\r\n };\r\n \r\n\r\n \r\n $scope.fd.localVars.ProcessSingleAction=function(button,action,event,previousTask,index,action_idx,old_clicked_btn){\r\n \r\n $scope.fd.localVars.actionsExecuted[$scope.fd.localVars.clickedButton+'-'+action_idx] = false\r\n\r\n if (action.action.value=='completetask')\r\n {\r\n \r\n $scope.fd.localVars.ProcessOutcome(action.outcome,event.target.form);\r\n // $scope.$emit(\"ExecuteTask\"+$scope.resourceDefinition.task_execute_id,{form:event.target.form,outcomeId:button.outcome.id1}); \r\n }\r\n else if (action.action.value=='runtask')\r\n {\r\n if (old_clicked_btn!==$scope.fd.localVars.clickedButton) $scope.fd.localVars.LoadTask(action.task.id,0,previousTask,action.OpenTaskType,action);\r\n }\r\n else if (action.action.value=='closeform')\r\n {\r\n \r\n \r\n $scope.ksm.executeAction(taskStateName,\"task_closed\");\r\n $scope.$emit(\"CloseTaskForm\"+$scope.resourceDefinition?.transaction_id,$scope.resourceDefinition?.ResourceDefId);\r\n \r\n \r\n }\r\n else if (action.action.value=='refreshtask')\r\n {\r\n $scope.fd.localVars.taskInitiated=false;\r\n $scope.$emit(\"RefreshTask\"+$scope.resourceDefinition?.ResourceDefId,$scope.resourceDefinition?.ResourceDefId); \r\n }\r\n else if (action.action.value=='executetask')\r\n {\r\n let taskStateName = \"task\"+$scope.resourceDefinition?.prev_task_transaction_id\r\n $scope.fd.localVars.taskInitiated=false;\r\n $scope.$emit(\"ExecuteTask\"+$scope.resourceDefinition?.task_execute_id,{form:event.target.form,outcomeId:null}); \r\n }\r\n else if (action.action.value=='taskstatus')\r\n {\r\n \r\n }\r\n else if (action.action.value=='procwidgets')\r\n {\r\n \r\n $scope.$emit(\"ProcessWidgets\"+$scope.resourceDefinition?.page_state_id,{form:event.target.form,action_index:action_idx}); \r\n }\r\n \r\n else if (action.action.value=='widgetaction')\r\n {\r\n \r\n //ToDo - create workflow with conditions (execute action based on condition) \r\n if (action.dependsOn>0){\r\n\r\n \r\n if ($scope.fd.localVars.actionsExecuted[$scope.fd.localVars.clickedButton+'-'+(action.dependsOn-1)]==true) \r\n {\r\n let observer_widget_action = $scope.ksm.subscribe($scope.resourceDefinition?.page_state_id+'-'+action.widgetRef,dependent_field1,action.widgetActionName,process_after_widget_action)\r\n $scope.ksm.executeAction($scope.resourceDefinition?.page_state_id+'-'+action.widgetRef,action.widgetActionName,{'action_index':action_idx})\r\n \r\n }\r\n else $scope.fd.localVars.executionQueue.push({button:button,action:action,event:event,previousTask:previousTask,index:index,action_idx:action_idx,depends_idx:action.dependsOn-1,old_clicked_btn:old_clicked_btn}) //put in execution queue\r\n \r\n }else{\r\n let observer_widget_action = $scope.ksm.subscribe($scope.resourceDefinition?.page_state_id+'-'+action.widgetRef,dependent_field1,action.widgetActionName,process_after_widget_action)\r\n \r\n $scope.ksm.executeAction($scope.resourceDefinition?.page_state_id+'-'+action.widgetRef,action.widgetActionName,{'action_index':action_idx})\r\n }\r\n }\r\n else if (action.action.value=='clearform')\r\n {\r\n \r\n \r\n let widgetStateName = \"taskWidget\"+action.widgetId;\r\n $scope.ksm.executeAction(widgetStateName,action.action.value);\r\n \r\n }\r\n else if (action.action.value=='openpage')\r\n {\r\n let page_version \r\n \r\n if (action.SelectVersionDirect) page_version = action.selectedPublishedResource?.Version\r\n else page_version=0\r\n\r\n $state.go(action.page_def.ResourceExtended.Target,{pageid: action.page.id,rinstance:0,version:page_version,parameters:{prev_page_state_id:$scope.resourceDefinition.page_state_id,prev_task:$scope.resourceDefinition,use_state:action.use_state}});\r\n }\r\n else if (action.action.value=='backbutton')\r\n {\r\n $window.history.back();\r\n }\r\n \r\n\r\n }\r\n\r\n $scope.fd.localVars.processExecutionQueue=function(action_idx)\r\n {\r\n \r\n\r\n for (let l=0;l<$scope.fd.localVars.executionQueue.length;l++)\r\n {\r\n if ($scope.fd.localVars.executionQueue[l].depends_idx==action_idx && !$scope.fd.localVars.executionQueue[l].processed)\r\n {\r\n $scope.fd.localVars.ProcessSingleAction($scope.fd.localVars.executionQueue[l].button,$scope.fd.localVars.executionQueue[l].action,$scope.fd.localVars.executionQueue[l].event,$scope.fd.localVars.executionQueue[l].previousTask,$scope.fd.localVars.executionQueue[l].index,$scope.fd.localVars.executionQueue[l].action_idx,$scope.fd.localVars.executionQueue[l].old_clicked_btn)\r\n $scope.fd.localVars.executionQueue[l].processed = true\r\n }\r\n }\r\n }\r\n $scope.fd.localVars.getPublishedResources=function(pageId,isChecked)\r\n {\r\n \r\n if (isChecked){\r\n if ($scope.fd.localVars.publishedResourceList==undefined) $scope.fd.localVars.publishedResourceList={}\r\n \r\n ResourcesDataService.GetPublishedResourcesByTypeId(pageId,'form').then(\r\n function (data) { \r\n \r\n $scope.fd.localVars.publishedResourceList[pageId] = data.data;\r\n \r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n \r\n } \r\n $scope.fd.localVars.ProcessButtonAction=function(button,event,previousTask,index)\r\n {\r\n \r\n let old_clicked_btn = $scope.fd.localVars.clickedButton\r\n $scope.fd.localVars.clickedButton = index\r\n $scope.fd.localVars.executionQueue=[]\r\n if (button.actions==undefined)\r\n {\r\n button.actions=[]\r\n let action = angular.copy(button)\r\n action.action=button.action\r\n if (button.action!=undefined) button.actions.push(action)\r\n \r\n }\r\n \r\n $scope.stopExecutingActions = false\r\n\r\n for (let i=0;i=0) return true;\r\n else return false;\r\n };\r\n \r\n $scope.fd.localVars.showButtonDefinition = function (index,noShow){\r\n \r\n //debugger //showButtonDefinition\r\n $scope.fd.localVars.loadingActions=true\r\n $scope.fd.localVars.selectedButton=undefined\r\n\r\n $scope.fd.localVars.selectedButtonIndex=index;\r\n \r\n $scope.fd.localVars.selectedButton = $scope.fd.FormDef[index];\r\n \r\n if ($scope.fd.localVars.selectedButton?.action && !$scope.fd.localVars.selectedButton?.actions)\r\n\r\n {\r\n\r\n \r\n let subaction = $scope.fd.localVars.selectedButton.action\r\n subaction['page'] = $scope.fd.localVars.selectedButton.page\r\n subaction['SelectVersionDirect'] = $scope.fd.localVars.selectedButton.SelectVersionDirect\r\n subaction['selectedPublishedResource'] = $scope.fd.localVars.selectedButton.selectedPublishedResource\r\n \r\n let action = {id:1,widgetRef:'',widgetActionName:$scope.fd.localVars.selectedButton.action.name,action:subaction}\r\n action['page'] = $scope.fd.localVars.selectedButton.page\r\n action['SelectVersionDirect'] = $scope.fd.localVars.selectedButton.SelectVersionDirect\r\n action['selectedPublishedResource'] = $scope.fd.localVars.selectedButton.selectedPublishedResource\r\n \r\n $scope.fd.localVars.selectedButton.actions=[action]\r\n }\r\n\r\n \r\n \r\n for (let i =0;i<$scope.fd.localVars.actionButtonClass.length;i++)\r\n {\r\n if($scope.fd.localVars.actionButtonClass[i]===$scope.fd.localVars.selectedButton?.size)\r\n {\r\n\r\n $scope.fd.localVars.selectedButtonSizeIndex = i\r\n if ($scope.fd.localVars.selectedButton!=undefined) $scope.fd.localVars.selectedButton.sizeIndex= i\r\n }\r\n }\r\n if ($scope.fd.localVars.selectedButtonSizeIndex==undefined && $scope.fd.localVars.selectedButton!=undefined)\r\n {\r\n $scope.fd.localVars.selectedButtonSizeIndex=2\r\n $scope.fd.localVars.selectedButton.sizeIndex = 2\r\n $scope.fd.localVars.selectedButton.size= $scope.fd.localVars.actionButtonClass[$scope.fd.localVars.selectedButtonSizeIndex]\r\n }\r\n\r\n if (!noShow) $scope.fd.localVars.actionButtonProps[$scope.fd.UuidRef] = 1\r\n \r\n $scope.fd.localVars.setupDragula($scope.fd.localVars.selectedButtonIndex)\r\n \r\n $timeout(function(){\r\n $scope.fd.localVars.loadingActions=false\r\n })\r\n };\r\n \r\n\r\n\r\n $scope.fd.localVars.toggleButtonDefinition = function (index){\r\n \r\n \r\n $scope.fd.localVars.showButtonDefinition(index,true)\r\n\r\n if ($scope.fd.localVars.actionButtonProps[$scope.fd.UuidRef] !=1)\r\n $scope.fd.localVars.actionButtonProps[$scope.fd.UuidRef] = 1\r\n else \r\n $scope.fd.localVars.actionButtonProps[$scope.fd.UuidRef] = 0 //toggle\r\n\r\n\r\n\r\n };\r\n \r\n \r\n $scope.fd.localVars.addButtonToList = function (){\r\n \r\n \r\n $scope.fd.FormDef.push( $scope.fd.localVars.getNewActionButton()) \r\n $scope.fd.localVars.addShowHideVars($scope.fd.FormDef.length-1)\r\n $scope.fd.localVars.showButtonDefinition($scope.fd.FormDef.length-1);\r\n \r\n \r\n };\r\n \r\n $scope.fd.localVars.clearVisibilityParams=function(index)\r\n\r\n {\r\n\t\t\t\t\t//remove items with specific index \r\n\t\t\t\t\tfor (let i = 0; i < $scope.fd.FormDef.length; i++) {\r\n\t\t\t\t\t\t$scope.fd.FormDef[i].visibilityAfterAction = $scope.fd.FormDef[i].visibilityAfterAction.filter(action => action.index !== index);\r\n\t\t\t\t\t}\r\n\r\n\r\n \r\n \r\n\r\n }\r\n \r\n $scope.fd.localVars.RemoveButtonFromList = function (index)\r\n { \r\n \r\n $scope.fd.localVars.clearVisibilityParams(index)\r\n\t\t\t\t\t \r\n\t\t\t\t\t if (index>=0) \r\n\t\t\t\t\t\t $scope.fd.FormDef.splice(index,1);\r\n\t\t\t\t\t \r\n if ($scope.fd.FormDef.length > 0) \r\n $scope.fd.localVars.showButtonDefinition($scope.fd.FormDef.length - 1)\r\n\r\n \r\n }\r\n \r\n \r\n $scope.fd.localVars.saveTaskToResource = function(tdid,tei,datasetDefId,datasetRecordId){\r\n TaskDataService.saveTaskToResource(tei,datasetDefId,datasetRecordId,$scope.fd.presentationId).then(function(data) {\r\n \r\n $state.go('app.navbar.tasks.initiate',{id: tdid,fromStateName:$state.current.name,fromStateParams:$state.params,outcome_id:0,prev_task_execute_id:tei});\r\n \r\n \r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n \r\n if ($scope.gsrvc.getFormViewType()==1 || $scope.fd.ElementType=='itask')\r\n {\r\n \r\n ResourcesDataService.getResourceDefListByType(lang,'task').then(function(data) {\r\n \r\n $scope.fd.localVars.taskList = data.data;\r\n $scope.fd.localVars.tasksLoaded=true;\r\n \r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n if ($scope.resourceDefinition?.form_definition) \r\n {\r\n ResourcesDataService.getResourceDefListByType(lang,'page').then(function(data) {\r\n \r\n $scope.fd.localVars.pageList = data.data;\r\n \r\n $scope.fd.localVars.pagesLoaded=true;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n \r\n let template;\r\n if ($scope.resourceDefinition?.form_definition) template = $templateCache.get('ktdirectivetemplates/ktActionButtons.html');\r\n else template = $templateCache.get('ktdirectivetemplates/ktActionButtonsExe.html');\r\n \r\n $element.append($compile(template)($scope)); \r\n\r\n },\r\n link: function (scope, elem, attrs) {\r\n\r\n \r\n scope.fd.localVars.setupDragula=function (index) {\r\n \r\n if (!index) index = 0\r\n \r\n let actionHandle = 'action-drag-handle'\r\n let bag = dragulaService.find($rootScope, 'bag-action-'+scope.fd.UuidRef+'-'+index);\r\n \r\n /* \r\n if (bag) {\r\n dragulaService.destroy($rootScope, 'bag-action-'+scope.fd.UuidRef+'-'+index);\r\n }\r\n */\r\n if (!bag)\r\n {\r\n dragulaService.options($rootScope, 'bag-action-'+scope.fd.UuidRef+'-'+index, {\r\n revertOnSpill: true,\r\n removeOnSpill: false,\r\n direction:'vertical',\r\n // copy:function(el,target, source){\r\n // return false\r\n // },\r\n accept:function (el,target, source) {\r\n return false;\r\n },\r\n moves: function (el, container, handle) {\r\n \r\n return handle.classList.contains(actionHandle);\r\n }\r\n });\r\n }\r\n }\r\n scope.fd.localVars.actionsFinished= function(actions){\r\n for (let i=0;i-1) {\n $scope.taskListParameters.selectedItem = $scope.taskList[pos];\n \n }\n \n }\n }\n };\n \n $scope.getTaskList = function()\n {\n if ($scope.taskList==undefined)\n {\n ResourcesDataService.getResourceDefListByType(lang,'task').then(function(data) {\n \n $scope.taskList = data.data;\n $scope.setTask();\n \n \n },function(error){\n \n MessagingService.addMessage(error.msg,'error');\n });\n }else $scope.setTask();\n \n }; \n \n $scope.$watch('act.taskId', function(oldValue,newValue){\n \n $scope.getTaskList();\n });\n \n \n \n $scope.getTaskList(); \n \n },\n link: function (scope, elem, attrs) {\n \n \n }\n }\n};\n\n//export {ktActionInitiateTask};\n'use strict';\n\nexport function ktActionSendNotification () {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktActionSendNotification.html',\n \n controller: function($scope,$rootScope,ResourcesDataService,KatalyoStateManager,MessagingService){\n \n $scope.notificationSelected = function(item,model)\n {\n $scope.act.actionParams.notificationId = item.id;\n \n };\n \n $scope.ksm = KatalyoStateManager\n var lang = $rootScope.globals.currentUser.lang;\n \n let dependent_field_pid = $scope.fd.LocalId;\n let subscribedSubjectPid = \"formDefinitionState\"+$scope.taskId+$scope.resourceDefinition.form_type;\n let dependent_field_pid2\n let update_presentation_id2 = function(data) {\n let presentation_id = angular.copy($scope.fd.PresentationId)\n if (data[presentation_id]!==undefined)\n {\n $scope.fd.PresentationId = data[presentation_id];\n //unsubscribe here later after implementing unsubscribe - ToDo\n dependent_field_pid2 = $scope.fd.PresentationId\n let observerPid2 = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid2,\"formSaved\",update_presentation_id2);\n }\n }\n let update_presentation_id = function(data) {\n if (data[$scope.fd.LocalId]>0 && $scope.fd.PresentationId==0 && data[$scope.fd.LocalId]!==undefined) $scope.fd.PresentationId = data[$scope.fd.LocalId];\n \n let observerPid2 = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid2,\"formSaved\",update_presentation_id2);\n //unsubscribe here later after implementing unsubscribe - ToDo\n }\n \n \n if ($scope.fd.PresentationId===null || $scope.fd.PresentationId===0)\n {\n let observerPid = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid,\"formSaved\",update_presentation_id);\n } else{\n dependent_field_pid2 = $scope.fd.PresentationId\n let observerPid2 = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid2,\"formSaved\",update_presentation_id2);\n }\n\n $scope.setNotification = function(){\n if ($scope.act!=null && $scope.act!=undefined)\n {\n if ($scope.act.actionParams.notificationId!=null) {\n var pos = $scope.notificationList.map(function(e) { return e.id; }).indexOf($scope.act.actionParams.notificationId);\n if (pos>-1) {\n $scope.act.actionParams.notification = $scope.notificationList[pos];\n \n }\n \n }\n }\n }; \n $scope.getNotificationList = function()\n {\n if ($scope.notificationList==undefined)\n {\n ResourcesDataService.getResourceDefListByType(lang,'notification').then(function(data) {\n \n $scope.notificationList = data.data;\n $scope.act.notificationsLoaded = true;\n $scope.setNotification();\n \n \n },function(error){\n \n MessagingService.addMessage(error.msg,'error');\n });\n }else $scope.setNotification();\n \n }; \n \n /*\n $scope.$watch('act.notificationId', function(oldValue,newValue){\n \n $scope.getNotificationList();\n });\n */\n \n \n $scope.getNotificationList(); \n \n },\n link: function (scope, elem, attrs) {\n \n \n }\n }\n};\n\n//export {ktActionInitiateTask};\n\r\n'use strict';\r\n\r\nexport function ktActivity() {\r\n \r\n return {\r\n restrict: 'EA',\r\n controller: function(){},\r\n templateUrl: 'ktdirectivetemplates/processing.html',\r\n scope: {\r\n message: '=',\r\n //showMsg: '=',\r\n },\r\n controller: function($scope,PROCESSING_CONST){\r\n $scope.showMsg=false;\r\n $scope.showMsgObj={}; \r\n $scope.$on(PROCESSING_CONST._START_REQUEST_, function (event,data) {\r\n // got the request start notification, show the element\r\n $scope.showMsgObj[data] = true;\r\n $scope.showMsg=true;\r\n });\r\n \r\n $scope.$on(PROCESSING_CONST._END_REQUEST_, function (event,data) {\r\n // got the request end notification, hide the element\r\n delete $scope.showMsgObj[data];\r\n var ol = Object.keys($scope.showMsgObj);\r\n if (ol.length==0) $scope.showMsg=false;\r\n });\r\n },\r\n link: function (scope, element, attrs) {\r\n \r\n \r\n \r\n \r\n }\r\n }\r\n \r\n};\n'use strict';\r\n\r\nexport function ktAdjustContentToNavbar(){\r\n \r\n var directive = {\r\n\t\trestrict \t: 'EA',\r\n link: function (scope, element, attrs) {\r\n \r\n \r\n },\r\n controller: function ($scope,$element,GridsterService)\r\n {\r\n $scope.gsrvc = GridsterService;\r\n $scope.$watch(function(){\r\n if ($element[0].offsetHeight>0 && $scope.gsrvc.navbarHeight!=$element[0].offsetHeight)\r\n {\r\n $scope.gsrvc.setNavbarHeight($element[0].offsetHeight);\r\n }\r\n }); \r\n \r\n }\r\n\t};\r\n\treturn directive;\r\n\r\n};\n'use strict';\r\n\r\nexport function ktAppNavbar ($rootScope, dragulaService) {\r\n\r\n return {\r\n restrict: 'A',\r\n templateUrl: 'ktdirectivetemplates/ktAppNavbar.html',\r\n scope:{\r\n localVars:'=',\r\n navbarItemsLeft:'=',\r\n navbarItemsRight:'=',\r\n resource:'=',\r\n },\r\n controller: ['$scope','$timeout','dragulaService','$rootScope','MenuService','ResourcesDataService','MessagingService','GridsterService','$state',\r\n \r\n function($scope,$timeout,dragulaService,$rootScope,MenuService,ResourcesDataService,MessagingService,GridsterService,$state){\r\n \r\n $scope.gsrvc = GridsterService; \r\n $scope.CTRL='ktAppNavbar'\r\n \r\n $scope.$on(\"$destroy\", function() {\r\n dragulaService.destroy($rootScope, dragula_bag)\r\n });\r\n \r\n let currentUser=$rootScope.globals.currentUser;\r\n \r\n if ($rootScope.globals.navbars==undefined) //for debugging purposes (if multiple navbars are there - not good)\r\n $rootScope.globals.navbars=[$scope]\r\n else {\r\n $rootScope.globals.navbars.push($scope)\r\n }\r\n \r\n if ($scope.localVars == undefined) $scope.localVars={};\r\n $scope.localVars.pagesLoaded=false; \r\n let lang = $rootScope.globals.currentUser.lang;\r\n \r\n if ($scope.navbarItemsLeft==undefined) $scope.navbarItemsLeft = [];\r\n if ($scope.navbarItemsRight==undefined) $scope.navbarItemsRight = [];\r\n \r\n let widgetHandle = 'element-drag-handle';\r\n let setupDragula = $scope.gsrvc.setupDragula('app-menu-bag','app-menu-task-list',widgetHandle);\r\n let dragula_bag=\"app-menu-bag\";\r\n let source_container_page = 'app-menu-page-list';\r\n \r\n let bag = dragulaService.find($rootScope, dragula_bag);\r\n \r\n if (!bag) dragulaService.options($rootScope, dragula_bag, {\r\n revertOnSpill: true,\r\n removeOnSpill: false,\r\n direction:'horizontal',\r\n copy:function (el,source){\r\n return source.id==source.id==source_container_page;\r\n },\r\n accept:function (el,target, source) {\r\n return target.id!= source_container_page; \r\n },\r\n moves: function (el, container, handle) {\r\n return handle.classList.contains(drag_handle);\r\n } \r\n });\r\n \r\n \r\n if (bag) bag.drake.on('drop',\r\n\t\t\t\t\tfunction(el,target,source,sibling){\r\n\t\t\t\t\t\tlet index;\r\n\t\t\t\t\t\tif (target.id===\"navbarLeft\" || target.id===\"navbarRight\"){\r\n\t\t\t\t\t\t\tif (sibling!==null) index = parseInt(sibling.id);\r\n\t\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\t\tif (target.id===\"navbarLeft\") index = $scope.navbarItemsLeft.length;\r\n\t\t\t\t\t\t\t\telse index = $scope.navbarItemsRight.length;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tMenuService.setCurrentNavbarId(index);\r\n\t\t\t\t\t\t\t$scope.lastIndex = index;\r\n\t\t\t\t\t\t\tif ($scope.localVars.selectedNavbar!==undefined && $scope.localVars.selectedNavbar!==null){\r\n\t\t\t\t\t\t\t\tif ($scope.localVars.selectedNavbar?.index0) index--;\r\n $scope.localVars.showNavbarDetails = false;\r\n $scope.localVars.showMenuDetails = false;\r\n $scope.localVars.selectedNavbar = navbar[index];\r\n \r\n if ($scope.localVars.selectedNavbar != undefined) { \r\n $scope.localVars.selectedNavbar.index=index;\r\n $scope.localVars.selectedMenu = null;\r\n \r\n\t\t\t\t\t// rebuild Target object\r\n if ($scope.localVars.selectedNavbar.Target==undefined)\t$scope.localVars.selectedNavbar.Target = {id:navbar[index].id,name:navbar[index].name}\r\n //rebuild s_menu_Target\r\n\t\t\t\t\tif ($scope.localVars.selectedNavbar.s_menus_Target == undefined) $scope.localVars.selectedNavbar.s_menus_Target = navbar[index].id\t \r\n\t\t\t\t\tif ($scope.localVars.selectedNavbar.s_menus_Name == undefined) \t$scope.localVars.selectedNavbar.s_menus_Name = navbar[index].name \r\n if ($scope.localVars.selectedNavbar.layout==undefined) \t$scope.localVars.selectedNavbar.layout = [];\r\n \r\n $timeout(function(){\r\n\t\t\t\t\t\t\t\t\t$scope.localVars.selectedNavbar.UsersGroupsDownloaded = true;\r\n\t\t\t\t\t\t\t\t\t$scope.localVars.showNavbarDetails = true;\r\n\t\t\t\t\t\t\t\t\t$scope.localVars.showNavbarDetailsFirst = true;\r\n\t\t\t\t\t\t\t\t\t$scope.selectedUsers =[]\r\n\t\t\t\t\t\t\t\t\t $scope.selectedGroups =[]\r\n }) \r\n \r\n }\r\n };\r\n \r\n \r\n $scope.localVars.getMenuDetails = function(menu,index)\r\n {\r\n $scope.localVars.showMenuDetails = false;\r\n if (menu.length===index) index--;\r\n $scope.localVars.selectedMenu = menu[index];\r\n $scope.localVars.selectedMenu.index=index;\r\n $scope.localVars.showMenuDetails = false;\r\n $scope.localVars.showNavbarDetails = false;\r\n if ($scope.localVars.selectedMenu.Target==undefined) $scope.localVars.selectedMenu.Target = {id:menu[index].id,name:menu[index].name};\r\n if ($scope.localVars.selectedMenu.s_menus_Name==undefined) $scope.localVars.selectedMenu.s_menus_Name = menu[index].name; \r\n\t\t\t\t\t $timeout(function(){ \r\n\t\t\t\t\t\t\t$scope.localVars.showMenuDetails = true;\r\n\t\t\t\t\t\t}) \r\n };\r\n \r\n $scope.localVars.deleteNavbar = function(navbar,index,type) {\r\n \r\n if (type===\"left\") {\r\n if (navbar.s_menus_id!==null && navbar.s_menus_id!==undefined) {\r\n if (navbar.deleteItem) \r\n navbar.deleteItem = false;\r\n else navbar.deleteItem = true; \r\n }\r\n else {\r\n $scope.navbarItemsLeft.splice(index,1);\r\n $scope.localVars.selectedNavbar = null;\r\n }\r\n \r\n } else // not left\r\n {\r\n if (navbar.s_menus_id!==null) \r\n navbar.deleteItem = true;\r\n else {\r\n $scope.navbarItemsRight.splice(index,1);\r\n $scope.localVars.selectedNavbar = null;\r\n $scope.localVars.showNavbarDetails = false;\r\n }\r\n \r\n }\r\n };\r\n \r\n $scope.localVars.deleteMenu = function(menu,index) {\r\n \r\n if (menu.s_menus_id!==null && menu.s_menus_id!==undefined) {\r\n if (menu.deleteItem) menu.deleteItem = false;\r\n else menu.deleteItem = true;\r\n }\r\n else {\r\n $scope.localVars.selectedNavbar.layout.splice(index,1);\r\n $scope.localVars.selectedMenu = null;\r\n $scope.localVars.showMenuDetails = false;\r\n }\r\n };\r\n \r\n $scope.activeLinkEditNavbarLeft = function(index) {\r\n \r\n for (let i=0;i<$scope.navbarItemsLeft.length;i++){\r\n if (i==index) return \"active\";\r\n else \"\";\r\n }\r\n \r\n };\r\n \r\n\r\n $scope.newVersion = function()\r\n {\r\n $scope.creatingNewVersion=true\r\n\r\n ResourcesDataService.SetNewResourceVersion($scope.resource.uid)\r\n .then(function(data) {\r\n if (data.status==200)\r\n {\r\n $scope.resource.NewVersion = data.data\r\n $scope.resource.Published=false\r\n $scope.localVars.updateResource($scope.resource)\r\n }else MessagingService.addMessage(data.data,'error');\r\n $scope.creatingNewVersion=false\r\n $scope.hasChanges=false\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.creatingNewVersion=false\r\n \r\n });\r\n };\r\n\r\n $scope.buildDataset = function(e)\r\n {\r\n $state.go(\"'app.navbar.resources.new\",{'resource_type':'dataset'});\r\n };\r\n \r\n $scope.buildPage = function(e)\r\n {\r\n $state.go(\"'app.navbar.resources.new\",{'resource_type':'page'});\r\n };\r\n \r\n $scope.$watch('navbarItemsLeft',function(newValue,oldValue){\r\n let a=newValue\r\n }, true)\r\n \r\n\t\t\t\t\r\n $scope.saveMenu = function(is_valid) \r\n {\r\n if (is_valid)\r\n {\r\n let navbarLeft = angular.copy($scope.navbarItemsLeft);\r\n let navbarRight = angular.copy($scope.navbarItemsRight); \r\n \r\n $scope.localVars.showNavbarDetails = false;\r\n $scope.localVars.showMenuDetails = false;\r\n $scope.localVars.selectedNavbar = null;\r\n $scope.savingMenu = true\r\n \r\n MenuService.saveFullAppMenu($scope.resource.uid, navbarLeft, navbarRight,null,$scope.localVars.newDescription,$scope.gsrvc.resourceFormVersion[$scope.resource.uid].Version).then(function(data) {\r\n $timeout(function(){\r\n $scope.navbarItemsLeft.length = 0 \r\n $scope.navbarItemsRight.length = 0\r\n for (const item of data.navbarItemsLeft) $scope.navbarItemsLeft.push(item);\r\n for (const item of data.navbarItemsRight) $scope.navbarItemsRight.push(item);\r\n $('#menuPublish').modal('hide')\r\n })\r\n $scope.savingMenu = false\r\n \r\n if (data.count_changes>0) $scope.resource.Published=true\r\n MessagingService.addMessage(data.msg,'success');\r\n\r\n \r\n },\r\n function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.savingMenu = false\r\n });\r\n \r\n }\r\n };\r\n\t\t\t\t\r\n //get pages\r\n ResourcesDataService.getResourceDefListByType(lang,'page').then(function(data) {\t\t\t\t\t\r\n\t\t\t\t\t$scope.localVars.pageList = data.data;\r\n for (let i=0;i<$scope.localVars.pageList.length;i++)\r\n {\r\n $scope.localVars.pageList[i].s_menus_PopulateType=\"navbar\"; \r\n }\r\n $scope.localVars.pagesLoaded=true; \r\n\t\t\t\t\t\t\t\t\t\t\t \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t});\r\n \r\n }],\r\n link: function (scope, elem, attrs) {\r\n \r\n\t\t\t\t if (scope.navbarItemsRight.length==0) {\r\n\t\t\t\t\tlet settings = {id:null,name:\"Settings\",s_menus_id:null,s_menus_Name:\"Settings\",s_menus_MenuPosition:\"navbarright\",s_menus_Icon:\"fa fa-cog\",s_menus_MenuType:2};\r\n\t\t\t\t\tscope.navbarItemsRight.push(settings);\r\n\t\t\t\t\t\r\n\t\t\t\t }\r\n\r\n\t\t\t\t let bag2 = dragulaService.find($rootScope, \"app-menu-bag\");\r\n\t\t\t\r\n }\r\n }\r\n \r\n};\n\r\n'use strict';\r\n\r\nexport function ktBasicTable() {\r\n \r\n return {\r\n restrict: 'EA',\r\n templateUrl: 'ktdirectivetemplates/ktBasicTable.html',\r\n scope: {\r\n columns: '=',\r\n data: '=',\r\n mapping:'='\r\n },\r\n controller: function($scope){\r\n \r\n $scope.getMapping = function(map)\r\n \r\n {\r\n \r\n return $scope.mapping[map]\r\n };\r\n\r\n },\r\n link: function (scope, element, attrs) {\r\n\r\n \r\n \r\n \r\n }\r\n }\r\n \r\n};\n'use strict';\r\n\r\nexport function ktBoolean () {\r\n return {\r\n restrict: 'A',\r\n controller: function ($scope,GridsterService,KatalyoStateManager) {\r\n \r\n $scope.gsrvc = GridsterService;\r\n if (!$scope.fd.localVars) $scope.fd.localVars={} \r\n $scope.showProperties = function(event)\r\n {\r\n $scope.gsrvc.setFieldProperties($scope.fd, event);\r\n };\r\n \r\n \r\n let itemValue = null;\r\n if ($scope.formData!=undefined)\r\n {\r\n if ($scope.formData.length==0) $scope.formData=[{}];\r\n itemValue=$scope.formData[0][$scope.fd.FieldName]\r\n \r\n }else $scope.formData=[{}];\r\n\r\n \r\n\r\n $scope.fd.localVars.search=[{id:1,filter:'eq',code_name:'eq',name:\"Equals\",icon:\"fa fa-bars\"} ];\r\n \r\n if (!$scope.fd.Search) $scope.fd.Search = $scope.fd.localVars.search[0]\r\n if ($scope.formData[0][$scope.fd.FieldName] ===undefined) $scope.formData[0][$scope.fd.FieldName] = false;\r\n \r\n let itemValueState= $scope.ksm.addSubject($scope.resourceDefinition.page_state_id+'-boolValueStateName'+$scope.fd.PresentationId,itemValue);\r\n let itemValueStateName = itemValueState.subject.name;\r\n \r\n \r\n let value_changed = function(data)\r\n {\r\n itemValueState.subject.setStateChanges = data;\r\n itemValueState.subject.notifyObservers(\"valueChanged\");\r\n };\r\n \r\n let action_value_changed = $scope.ksm.addAction(itemValueState,\"valueChanged\",value_changed);\r\n \r\n $scope.on_blur_action=function()\r\n {\r\n \r\n $scope.ksm.executeAction(itemValueState,\"valueChanged\", $scope.formData[0][$scope.fd.FieldName]);\r\n //$scope.fd.DefaultValue = $scope.formData[0][$scope.fd.FieldName];\r\n };\r\n \r\n \r\n \r\n let apply_value = function(data) {\r\n if (data!=undefined) $scope.formData[0][$scope.fd.FieldName] = data;\r\n };\r\n\r\n\r\n $scope.fd.SetDefault = function()\r\n {\r\n $scope.fd.DefaultValue = {value:$scope.formData[0][$scope.fd.FieldName]};\r\n }\r\n \r\n if ($scope.fd?.Parameters?.DependentFieldId!=undefined && $scope?.fd.Parameters?.DependentFieldId!=null) \r\n {\r\n if ($scope.fd.Parameters.DependentFieldId!=\"\")\r\n {\r\n let dependent_field = \"Field\"+$scope.fd.PresentationId;\r\n let subscribedSubject = $scope.resourceDefinition.page_state_id+'-'+$scope.fd.Parameters.DependentFieldType+\"ValueStateName\"+$scope.fd.Parameters.DependentFieldId;\r\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",apply_value);\r\n let state = $scope.ksm.getState(subscribedSubject);\r\n if (state.status==\"ok\") $scope.formData[0][$scope.fd.FieldName] = state.state;\r\n }\r\n }\r\n \r\n \r\n if (itemValueState.subject.currentStateIndex>=0)\r\n {\r\n \r\n $scope.formData[0][$scope.fd.FieldName] = itemValueState.subject.getState;\r\n \r\n } \r\n \r\n if ($scope.formData[0][$scope.fd.FieldName]!=undefined) $scope.ksm.executeAction(itemValueStateName,\"valueChanged\", $scope.formData[0][$scope.fd.FieldName]);\r\n \r\n \r\n \r\n \r\n \r\n },\r\n templateUrl: 'ktdirectivetemplates/ktBoolean.html',\r\n link: function (scope, elem, attrs) {\r\n\t\t\t\t\r\n if (scope.formData===undefined) scope.formData = [{'Field':0}];\r\n if (scope.formParams===undefined) scope.formParams = {formViewType:1};\r\n if (scope.formParamsParent===undefined) scope.formParamsParent = {formViewType:1};\r\n \r\n \r\n \r\n }\r\n };\r\n\r\n}\r\n\n'use strict';\r\n\r\nexport function ktBootstrapTooltip () {\r\n\r\n return {\r\n restrict: 'A',\r\n \r\n link: function (scope, elem, attrs) {\r\n \r\n attrs.$observe('title',function(title){\r\n\t\t\t\t\t\r\n // Destroy any existing tooltips (otherwise new ones won't get initialized)\r\n elem.tooltip('dispose');\r\n // Only initialize the tooltip if there's text (prevents empty tooltips)\r\n\r\n\t\t\t\t\tif (jQuery.trim(title)) elem.tooltip();\r\n\t\t\t\t\t\r\n\t\t\t\t\t//elem.tooltip(\"show\");\r\n\t\t\t\t\t//setTimeout( ()=> {elem.tooltip(\"hide\"); } , 3000)\r\n\t \r\n\t \r\n });\r\n \r\n elem.on('$destroy', function() {\r\n\t\t\t\t\t\r\n elem.tooltip('dispose');\r\n delete attrs.$$observers['title'];\r\n });\r\n \r\n \r\n \r\n \r\n }\r\n }\r\n \r\n};\n'use strict';\n\nexport function ktBroadcastLastRepeaterElement () {\n \n return{\n \n priority: -1000, // a low number so this directive loads after all other directives have loaded. \n restrict: \"A\", // attribute only\n controller: function($rootScope)\n {},\n link: function(scope, elem, attrs) {\n if (scope.$last){\n \n setTimeout(function(){\n $rootScope.$broadcast('LastRepeaterElement');\n });\n \n }\n }\n }\n};\n'use strict';\r\n\r\nexport function ktCalculatedField () {\r\n return {\r\n restrict: 'A',\r\n templateUrl: 'ktdirectivetemplates/ktCalculatedField.html',\r\n controller: function($scope,GridsterService)\r\n {\r\n $scope.gsrvc = GridsterService;\r\n if ($scope.localVars==undefined) $scope.localVars={};\r\n if ($scope.fd==undefined) $scope.fd={};\r\n if ($scope.formData==undefined) $scope.formData = [{}];\r\n\t\t\t \r\n $scope.showProperties = function(event)\r\n {\r\n $scope.gsrvc.setFieldProperties($scope.fd,event);\r\n \r\n };\r\n //$scope.formData[0]={Field256:2,Field257:3};\r\n $scope.localVars.Calculate=function(){\r\n var scopeVar = $scope.formData[0];\r\n $scope.fd.sItemValue=math.eval($scope.fd.Label,scopeVar);\r\n \r\n };\r\n \r\n },\r\n link: function (scope, elem, attrs) {\r\n\t\t\t\t\r\n \r\n \r\n \r\n }\r\n };\r\n };\n'use strict';\r\n\r\n\r\nexport function ktCalendar () {\r\n\r\n return {\r\n restrict: 'A',\r\n templateUrl: 'ktdirectivetemplates/ktCalendar.html',\r\n\r\n controller: function($scope,$rootScope,$timeout,UserService,ResourcesDataService,TaskDataService,MessagingService,GridsterService, UtilityService) {\r\n \r\n const numFormat = new Intl.NumberFormat(\"de-DE\", {\r\n maximumFractionDigits: $scope.fd.Parameters.chartFractionDigits || 2,\r\n minimumFractionDigits: $scope.fd.Parameters.chartFractionDigits || 2\r\n });\r\n\r\n\r\n \r\n $scope.gsrvc= GridsterService;\r\n if (!Array.isArray($scope.fd.selectedTasks)) $scope.fd.selectedTasks=[];\r\n if ($scope.resourceDefinition!=undefined) {\r\n $scope.taskExecuteId = $scope.resourceDefinition.task_execute_id;\r\n }\r\n if ($scope.localVars == undefined) $scope.localVars={};\r\n \r\n $scope.localObj={loadedTasks : []};\r\n $scope.localVars.taskItem = null; \r\n $scope.localVars.selectedTask = {};\r\n $scope.localVars.showMenu = false\r\n if ($scope.fd.localVars == undefined) $scope.fd.localVars={};\r\n \r\n $scope.fd.localVars.dashboard = {\r\n id: '1',\r\n name: 'Home',\r\n widgets: {}\r\n\t\t\t\t} ;\r\n $scope.fd.localVars.taskItem = null;\r\n $scope.fd.localVars.selectedTask = {};\r\n \r\n //MIGOR - PREBACIO IZ TASK ADD RESOURCE, TODO - IZBACITI VISAK\r\n $scope.taskId=$scope.resourceDefinition.ResourceDefId;\r\n if ($scope.taskId==undefined) $scope.taskId=$scope.resourceDefinition.ResourceDefId_id;\r\n if ($scope.taskId==undefined) $scope.taskId=0;\r\n $scope.fd.localVars.taskId=$scope.taskId;\r\n $scope.fd.ParentDatasetDefId=$scope.fd.Related;\r\n $scope.prevTaskExeId = $scope.resourceDefinition.prev_task_id;\r\n $scope.fd.localVars.formType=$scope.resourceDefinition.form_type;\r\n $scope.source_type=$scope.resourceDefinition.source_type;\r\n $scope.taskInitiateId = $scope.resourceDefinition.task_initiate_id;\r\n $scope.taskExecuteId = $scope.resourceDefinition.task_execute_id;\r\n $scope.formDefinition = $scope.resourceDefinition.form_definition;\r\n $scope.fd.localVars.resourceRecordId=0;\r\n\t\t\t\t\r\n\t\t\t\tif ($scope.fd.UuidRef==undefined) $scope.fd.UuidRef=UtilityService.uuidv4();\r\n\t\t\t\t$scope.fd.Parameters.UuidRef = $scope.fd.UuidRef;\r\n \r\n $scope.formDefinition = $scope.formDefinition || false\r\n $scope.taskInitiateId = $scope.taskInitiateId || 0\r\n $scope.taskExecuteId = $scope.taskExecuteId || 0\r\n $scope.prevTaskExeId = $scope.prevTaskExeId || 0\r\n \r\n\r\n let hsvtorgb = function (h,s,v) { \r\n let f= (n,k=(n+h/60)%6) => v - v*s*Math.max( Math.min(k,4-k,1), 0); \r\n return \"#\" + Math.round(f(5) * 255).toString(16) + Math.round(f(3) * 255).toString(16) + Math.round(f(1) * 255) .toString(16) \r\n } \r\n\r\n let HSV2RGB = function(h, s, v) {\r\n var r, g, b, i, f, p, q, t;\r\n if (arguments.length === 1) {\r\n s = h.s, v = h.v, h = h.h;\r\n }\r\n i = Math.floor(h * 6);\r\n f = h * 6 - i;\r\n p = v * (1 - s);\r\n q = v * (1 - f * s);\r\n t = v * (1 - (1 - f) * s);\r\n switch (i % 6) {\r\n case 0: r = v, g = t, b = p; break;\r\n case 1: r = q, g = v, b = p; break;\r\n case 2: r = p, g = v, b = t; break;\r\n case 3: r = p, g = q, b = v; break;\r\n case 4: r = t, g = p, b = v; break;\r\n case 5: r = v, g = p, b = q; break;\r\n }\r\n return \"#\" + Math.round(r * 255).toString(16) + Math.round(g * 255).toString(16) + Math.round(b * 255) .toString(16) \r\n }\r\n\r\n\r\n $scope.fd.localVars.toggleDropdown = function(){\r\n $scope.fd.localVars.showMenu = $scope.fd.localVars.showMenu ? false: true \r\n }\r\n \r\n \r\n $scope.fd.localVars.copyToClipboard = function(text){\r\n $scope.fd.localVars.copyUuid = true;\r\n navigator.clipboard.writeText(text).then( \r\n () => {\r\n $timeout(function(){$scope.fd.localVars.copyUuid = false;},1000);\r\n },\r\n () => { /* clipboard write failed */\r\n MessagingService.addMessage('Copy to clipboard failed','error');\r\n $timeout(function(){$scope.fd.localVars.copyUuid = false;},1000);\r\n }); \r\n }\r\n \r\n \r\n \r\n var process_observed_data = function(data) // called by datasetList (via KSM)\r\n { \r\n $scope.fd.localVars.errormsg =''\r\n \r\n if (data==undefined || data?.state?.sharedData?.analytics==undefined)\r\n return \r\n if ($scope.fd.Parameters.CalculateFunction?.name==undefined) \r\n $scope.fd.localVars.errormsg='Calculate Function not defined!'\r\n \r\n if ($scope.fd.Parameters.chartType==undefined) \r\n $scope.fd.Parameters.chartType='counter'\r\n \r\n $scope.fd.localVars.SelectedChartAnalytics = $scope.fd.Parameters.SelectedChartAnalytics || 0 \r\n $scope.fd.localVars.analytics = data?.state?.sharedData?.analytics[$scope.fd.localVars.SelectedChartAnalytics][$scope.fd.Parameters.CalculateFunction.name]\r\n let analytics = $scope.fd.localVars.analytics \r\n \r\n //find minvalue and maxvalue of current Anaytics data\r\n $scope.fd.localVars.maxvalue=-1\r\n $scope.fd.localVars.minvalue=-1\r\n Object.keys(analytics).forEach(function(key,index) { //must use inverse logic (undefined == number is always false)\r\n if (!( analytics[key] < analytics[$scope.fd.localVars.maxvalue])) $scope.fd.localVars.maxvalue = key\r\n if (!( analytics[key] > analytics[$scope.fd.localVars.minvalue])) $scope.fd.localVars.minvalue = key \r\n })\r\n \r\n \r\n \r\n \r\n $scope.fd.localVars.data = Object.values(analytics)\r\n $scope.fd.localVars.labels = Object.keys(analytics)\r\n \r\n if ($scope.fd.Parameters?.chartType?.name == 'pie' || $scope.fd.Parameters?.chartType?.name == 'doughnut' || $scope.fd.Parameters?.chartType?.name == 'polarArea') { \r\n let colors=[] \r\n let golden_ratio = 0.618033988749895\r\n let h = Math.random() // use random start value\r\n \r\n for (let item of $scope.fd.localVars.data) { \r\n h += golden_ratio\r\n h %= 1 \r\n colors.push( HSV2RGB( h, 0.5, 0.95) ) \r\n } \r\n //convert colors to array \r\n $scope.fd.localVars.chartColors = [ { backgroundColor: colors } ]\r\n $scope.fd.localVars.data = [ $scope.fd.localVars.data ] \r\n }\r\n \r\n if ($scope.fd.Parameters?.chartType?.name!=undefined) \r\n $scope.fd.localVars.chartType = $scope.fd.Parameters.chartType.name \r\n else \r\n $scope.fd.localVars.chartType = $scope.fd.Parameters.chartType //counter does not have .name\r\n \r\n \r\n $scope.fd.localVars.chartLabel = $scope.fd.Parameters.chartLabel\r\n $scope.fd.localVars.sharedData = data?.sharedData\r\n //summing all values for counter\r\n $scope.fd.localVars.countAll = $scope.fd.localVars.data.reduce((partialSum, a) => partialSum + a, 0); \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t// **** JSONE SCRIPTING ***** //\r\n\t\t\t\t\t//var template = {a: {$eval: \"foo.bar\"}};\r\n //var template = \"${foo.bar}\"\r\n //var template = \"${minvalue} ${analytics[minvalue]}\" \r\n //var context = {foo: {bar: \"zoo\"}} \r\n //$scope.fd.localVars.testjsone = jsone(template, $scope.fd.localVars) \r\n\t\t\t\t\t\r\n $scope.fd.localVars.scriptValue = jsone($scope.fd.Parameters.script || '', $scope.fd.localVars)\r\n \r\n }; \r\n \r\n $scope.fd.localVars.formatNumber = function(num) {\r\n let newFormat , useGrouping;\r\n \r\n useGrouping = $scope.fd.Parameters.useGroupingSeparator ; \r\n if ($scope.fd.Parameters.chartFractionDigits)\r\n newFormat = new Intl.NumberFormat(\"de-DE\", { useGrouping: useGrouping, maximumFractionDigits: $scope.fd.Parameters.chartFractionDigits , minimumFractionDigits: $scope.fd.Parameters.chartFractionDigits });\r\n else \r\n newFormat = new Intl.NumberFormat(\"de-DE\", { useGrouping: useGrouping }); \r\n\r\n try {\r\n if ($scope.fd.Parameters.disableFormatting) \r\n return num \r\n else \r\n return newFormat.format(num)\r\n \r\n } catch (err) {\r\n MessagingService.addMessage(error.msg,'error');\r\n return 'Error!'\r\n }\r\n \r\n }\r\n \r\n \r\n $scope.fd.localVars.setSelectedDataset = function(id,saved) {\r\n //debugger\r\n if ($scope.fd.localVars.selectedResourceItem==undefined) $scope.fd.localVars.selectedResourceItem={}\r\n //pick orher parameters from database\r\n $scope.fd.localVars.getPublishedResourceById(id,saved);\r\n \r\n\t\t}\r\n \r\n \r\n $scope.fd.localVars.getPublishedResourceById = function(id,saved) \r\n {\r\n let pos\r\n if (saved && $scope.fd.FormDef!==undefined && $scope.fd.FormDef!==null)\r\n { \r\n pos = $scope.fd.localVars.publishedResourceList.map(function(e) { return e.id; }).indexOf(id);\r\n \r\n if (pos>=0){\r\n $scope.fd.localVars.selectedResourceItem.name = $scope.fd.localVars.publishedResourceList[pos].name;\r\n $scope.fd.localVars.selectedDataset = $scope.fd.localVars.publishedResourceList[pos]\r\n }\r\n $scope.fd.localVars.selectedResourceItem.id = id;\r\n $scope.fd.localVars.selectedResourceItem.name_confirmed = $scope.fd.localVars.selectedResourceItem.name +' ('+$scope.fd.localVars.selectedResourceItem.id +')'\r\n $scope.fd.localVars.selectedResourceItem_c=$scope.fd.localVars.selectedResourceItem;\r\n $scope.fd.localVars.dashboard.widgets.layout = $scope.fd.FormDef\r\n $scope.fd.localVars.formLoaded=true;\r\n\r\n }else{\r\n pos = $scope.fd.localVars.publishedResourceList.map(function(e) { return e.id; }).indexOf(id);\r\n \r\n if (pos>=0){\r\n ResourcesDataService.GetPublishedResourceById(id).then(function (data) {\r\n\r\n $scope.fd.localVars.selectedDataset = $scope.fd.localVars.publishedResourceList[pos];\r\n $scope.fd.localVars.dashboard.widgets.layout = data.data.Form\r\n $scope.fd.FormDef = $scope.fd.localVars.dashboard.widgets.layout\r\n if ($scope.fd.localVars.selectedResourceItem_c!==undefined)\r\n {\r\n $scope.fd.Parameters.PublishedResourceId=$scope.fd.localVars.selectedResourceItem_c.id;\r\n $scope.fd.Parameters.PublishedResourceVersion=$scope.fd.localVars.selectedResourceItem_c.Version;\r\n $scope.fd.Related=$scope.fd.localVars.selectedResourceItem_c.ResourceDefId; \r\n $scope.fd.localVars.freshForm=angular.copy($scope.fd.localVars.selectedResourceItem_c.Form)\r\n $scope.fd.Related = $scope.fd.localVars.publishedResourceList[pos].ResourceDefId\r\n\r\n }else MessagingService.addMessage('Error - published dataset not selected ktTAskAdd','error')\r\n \r\n $scope.fd.localVars.formLoaded=true;\r\n\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n\r\n }\r\n }\r\n \r\n}\r\n \r\n\r\n $scope.fd.localVars.calculateFunctions= [ {id:1,name:'sum'},{id:2,name:'mean'},{id:3,name:'min'},{id:4,name:'max'},{id:5,name:'count'} ] \r\n\r\n\r\n\r\n $scope.fd.localVars.chartOptions= {\r\n scale: {\r\n ticks: {\r\n //precision: defined as parameter\r\n }\r\n } ,\r\n plugins: { \r\n legend: {\r\n display: true,\r\n position: 'bottom',\r\n labels: {\r\n color: 'rgb(255, 99, 132)'\r\n }\r\n }, \r\n labels: { \r\n render: 'label', // render 'label', 'value', 'percentage', 'image' or custom function, default is 'percentage\r\n precision: 0,// precision for percentage, default is 0\r\n showZero: false, // whether or not labels of value 0 are displayed, default is false \r\n fontSize: 14, \r\n fontColor: '#000',// font color, can be color array for each data or function for dynamic color, default is defaultFontColor\r\n fontStyle: 'normal', // font style, default is defaultFontStyle\r\n fontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\", // font family, default is defaultFontFamily \r\n textShadow: false, // draw text shadows under labels, default is false\r\n }\r\n } \r\n }\r\n \r\n \r\n if ($scope.fd.Parameters.chartPrecision!=undefined && $scope.fd.Parameters.chartPrecision!=null ) { \r\n $scope.fd.localVars.chartOptions.scale.ticks.precision = $scope.fd.Parameters.chartPrecision\r\n }\r\n \r\n \r\n if ($scope.fd.Parameters?.chartType?.name === 'bar' || $scope.fd.Parameters?.chartType?.name === 'line' || $scope.fd.Parameters?.chartType?.name === 'radar' || $scope.fd.Parameters?.chartType?.name === 'bubble') {\r\n $scope.fd.localVars.chartOptions.plugins.legend.display= false\r\n }\r\n\r\n \r\n\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t$scope.fd.localVars.chartTypes = [ //removed radar, bubble and script\r\n {id:1,name:'line'},{id:2,name:'bar'}, \r\n {id:4,name:'doughnut'},{id:5,name:'pie'},{id:6,name:'polarArea'},\r\n ,{id:99,name:'counter'} //{id:3,name:'radar'},{id:7,name:'bubble'},{id:100, name:'script' },\r\n ]\r\n \r\n\t\t\tif ($scope.fd.Parameters.chartType==undefined) \r\n $scope.fd.Parameters.chartType=$scope.fd.localVars.chartTypes[1] //default = bar\r\n\t\t\t\t\t\t\r\n $scope.localVars.toggleDropdown = function()\r\n {\r\n $scope.localVars.showMenu = $scope.localVars.showMenu ? false: true \r\n }\r\n \r\n $scope.$on('InlineTaskClosed',function(event,data){\r\n var taskId=data;\r\n var pos = $scope.localObj.loadedTasks.map(function(e) { return e.taskId; }).indexOf(taskId);\r\n if (pos>=0) {\r\n $scope.localObj.loadedTasks.splice(pos,1); \r\n }\r\n });\r\n \r\n if ($scope.fd.selectedTasks===undefined || $scope.fd.selectedTasks===null) $scope.fd.selectedTasks = [];\r\n \r\n if ($scope.fd.FormDef!=null && $scope.fd.FormDef!==undefined) {\r\n $scope.fd.selectedTasks = $scope.fd.FormDef;\r\n }else {\r\n $scope.fd.FormDef = []; \r\n } \r\n \r\n let initiate_task = function(data)\r\n {\r\n let loadTask=false;\r\n $scope.localVars.taskLoaded = false;\r\n if ($scope.localObj.loadedTasks.length>0) {\r\n if ($scope.localObj.loadedTasks[0].taskId.id != data.taskId) {\r\n $scope.localObj.loadedTasks.length=0;\r\n loadTask=true;\r\n }\r\n } else loadTask=true;\r\n \r\n $scope.localObj.loadedTasks.splice(0,1);\r\n \r\n for (let j = 0;j<$scope.fd.selectedTasks.length;j++) {\r\n if ($scope.fd.selectedTasks[j].taskId.id==data.taskId) {\r\n $timeout(function(){\r\n $scope.localObj.loadedTasks.push(data);\r\n $scope.localVars.taskLoaded = true;\r\n });\r\n }\r\n }\r\n }\r\n \r\n //subscribe to events - initially only refresh data \r\n \r\n if ($scope.resourceDefinition.page_state_id && $scope.fd.Parameters.widgetReference ) {\r\n let whoami ='chart'+ $scope.fd.UuidRef // valueStateName \r\n let subscribedSubject = $scope.resourceDefinition.page_state_id + '-'+ $scope.fd.Parameters.widgetReference //odabraniUUIDnekogELEMENTA \r\n let observer = $scope.ksm.subscribe(subscribedSubject,whoami,\"valueChanged\",process_observed_data); \r\n }\r\n \r\n \r\n let lang=$rootScope.globals.currentUser.lang; \r\n \r\n \r\n\r\n $scope.localVars.taskIsOpen = function(taskId)\r\n {\r\n var isOpenPos = $scope.localObj.loadedTasks.map(function(e) { return e.taskId; }).indexOf(taskId);\r\n \r\n if (isOpenPos>=0) return true;\r\n else return false;\r\n }\r\n \r\n $scope.fd.pasteFromClipboard = function(task){\r\n \r\n navigator.clipboard.readText().then( (data) => {\r\n /* clipboard successfully read */\r\n $timeout(function(){task.widgetId = data})\r\n },\r\n () => {\r\n /* clipboard read failed */\r\n MessagingService.addMessage('Paste from clipboard failed','error');\r\n });\r\n \r\n }\r\n\r\n \r\n $scope.fd.AddTaskToList = function ()\r\n {\r\n $scope.fd.selectedTasks.push({widgetId:null,taskId:null});\r\n }\r\n \r\n $scope.fd.ConfirmTaskList = function ()\r\n {\r\n $scope.fd.FormDef = $scope.fd.selectedTasks;\r\n $scope.fd.showConfirmed=true;\r\n $timeout(function(){$scope.fd.showConfirmed=false},5000);\r\n }\r\n \r\n $scope.fd.RemoveTaskFromList = function (index){\r\n \r\n if (index>=0){\r\n $scope.fd.selectedTasks.splice(index,1); \r\n } \r\n }\r\n \r\n \r\n $scope.localVars.saveTaskToResource = function(tdid,tei,datasetDefId,datasetRecordId){\r\n TaskDataService.saveTaskToResource(tei,datasetDefId,datasetRecordId,$scope.fd.presentationId).then(function(data) {\r\n \r\n $state.go('app.navbar.tasks.initiate',{id: tdid,fromStateName:$state.current.name,fromStateParams:$state.params,outcome_id:0,prev_task_execute_id:tei});\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n \r\n \r\n $scope.fd.localVars.showProperties = function(datasetMapperType,showPropertiesRight)\r\n {\r\n //debugger\r\n if ($scope.fd.localVars.datasetMapperType==undefined)\r\n {\r\n $scope.fd.localVars.datasetMapperType = datasetMapperType;\r\n }else\r\n {\r\n if ($scope.fd.localVars.datasetMapperType==0 || $scope.fd.localVars.datasetMapperType!=datasetMapperType) \r\n $scope.fd.localVars.datasetMapperType = datasetMapperType;\r\n else \r\n $scope.fd.localVars.datasetMapperType=0;\r\n }\r\n \r\n \r\n if (showPropertiesRight) $scope.gsrvc.setFieldProperties($scope.fd);\r\n \r\n if ($scope.fd.localVars.dashboard != undefined) {\r\n //debugger\r\n $scope.fd.localVars.fieldsList = []\r\n $scope.fd.localVars.getFieldNamesFromObject($scope.fd.localVars.dashboard, $scope.fd.localVars.fieldsList)\r\n \r\n }\r\n };\r\n \r\n \r\n \r\n $scope.fd.localVars.getFieldNamesFromObject = function (obj, fieldsList) // find FieldNames in given Dashboard object recursively \r\n {// fieldsList is return variable (used for multiple select)\r\n //debugger\r\n var o = {};\r\n Object.keys(obj).forEach(function(key) {\r\n \r\n if ( (typeof(obj[key]) === 'object') && obj[key] && key != 'NameField') { //Do NOT parse 'NameField' (we need it as it is)\r\n $scope.fd.localVars.getFieldNamesFromObject(obj[key], fieldsList)\r\n } \r\n else { \r\n if (key == 'FieldName' ) { \r\n //debugger\r\n o[key]= obj[key];\r\n }\r\n \r\n if (key == 'PresentationId' ) {\r\n o['id']= obj[key];\r\n } \r\n if (key == 'Label' ) {\r\n o['name']= obj[key];\r\n } \r\n }\r\n }) ; \r\n \r\n if ( o['FieldName'] && Object.keys(o).length > 0 ) fieldsList.push(o) \r\n }; \r\n\r\n \r\n },\r\n link: function (scope, elem, attrs) {\r\n \r\n \r\n } \r\n \r\n }\r\n \r\n};\r\n\r\n\r\n \r\n \n'use strict';\n\nexport function ktCodesActions () {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktCodesActions.html',\n controller: function(dragulaService)\n {}, \n link: function (scope, elem, attrs) {\n \n scope.actions = [\n {id1:1,type:1,name1:'Initiate task',taskId:null,actionParams:{}},\n {id1:2,type:2,name1:'Send notification',notificationId:null,actionParams:{}}, \n ];\n \n \n scope.getSeqNoForNewAction = function(){\n var seqNo=0;\n var actLen=0;\n for (var i=0;i0) {\r\n \r\n CodesService.getCodesDetails($scope.codeId,lang).then(function(data) { \r\n $scope.codesDetails = data.data;\r\n $scope.codesLoaded = true; \r\n $('#exampleModalC').modal('show'); \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n } else {\r\n \r\n $scope.codesDetails.length = 0;\r\n $scope.codesLoaded = false;\r\n }\r\n }\r\n \r\n // KORISTI SE\r\n $scope.saveCodesDetails = function(){\r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n debugger\r\n \r\n if ($scope.codeId>0) {\r\n CodesService.saveCodesDetails($scope.codeId, $scope.codesList, lang).then(\r\n function(data) {\r\n MessagingService.addMessage(data.msg,'success');\r\n $scope.codesDetails = data.data; \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n } else { \r\n $scope.codesDetails.length = 0;\r\n }\r\n }\r\n \r\n $scope.addEmptyCodeItem = function(){\r\n var lang=$rootScope.globals.currentUser.lang;\r\n\t\t\t\t var n = {id:null,Name:null,Value:null,Active:true,CodesDetailLang:[{Value:null,Lang:lang}]}\r\n \r\n\t\t\t\t \r\n\t\t\t\t $scope.codesList.push(n)\r\n\t\t\t\t \r\n\t\t\t\t \t\t$timeout(function(){\r\n\t\t\t\t\t\t\tvar container = document.getElementById('scrollcontainer');\r\n\t\t\t\t\t\t\tcontainer.scrollTop = container.scrollHeight; \r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\r\n\t\t\t\t \r\n\t\t\t\t}\r\n\r\n \r\n if ($scope.codeId>0)\r\n {\r\n $scope.getCodesDetails();\r\n \r\n if ($scope.codeId==0) $scope.codesLoaded = false;\r\n } else $scope.codesLoaded = false;\r\n \r\n \r\n },//controller\r\n \r\n link: function (scope, elem, attrs) {\r\n \r\n } \r\n }\r\n };\n'use strict';\n\nexport function ktCodesDetailList () {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktCodesDetailList.html',\n /*scope:{\n CodeHead : '=',\n },*/\n controller:function($scope,CodesService,MessagingService,TaskDataService,$rootScope,$timeout,dragularService)\n {\n $scope.showEditCodes = false\n $scope.showListCodes = false\n \n\n $scope.pokaziModal = function() {\n $('#exampleModalC').modal('show'); \n }\n \n $scope.$watch('codeId', function (newValue, oldValue, scope) {\n if (newValue) $scope.pokaziModal();\n //debugger \n \n });\n \n $scope.toggleEditCodes = function() { \n $scope.showEditCodes = !$scope.showEditCodes \n }\n\n $scope.toggleListCodes = function() { \n $scope.showListCodes = !$scope.showListCodes \n } \n \n \n $scope.removeCode = function(index){\n console.log(\"text\")\n //debugger\n $scope.codesDetails.splice(index,1);\n }\n \n $scope.unselectRows = function() {\n \n //$scope.gridApi1.selection.clearSelectedRows()\n $scope.codeId=0; \n $scope.codeSelected=false;\n $scope.selectedCode=0\n \n }\n \n\n $scope.getCodesDetails = function(codeId,codeName){\n \n var lang=$rootScope.globals.currentUser.lang;\n \n $scope.codeId = codeId;\n $scope.codeName = codeName;\n $('#exampleModalC').modal('show'); \n \n \n if ($scope.codeId>0) {\n \n CodesService.getCodesDetails($scope.codeId,lang).then(function(data) { \n $scope.codesDetails = data.data;\n $scope.codesLoaded = true; \n $('#exampleModalC').modal('show'); \n },function(error){\n MessagingService.addMessage(error.msg,'error');\n });\n } else {\n \n $scope.codesDetails.length = 0;\n $scope.codesLoaded = false;\n }\n }\n \n \n $scope.saveCodesDetails = function(){\n \n var lang=$rootScope.globals.currentUser.lang;\n //debugger\n \n if ($scope.codeId>0) {\n CodesService.saveCodesDetails($scope.codeId,$scope.codesDetails,lang).then(\n function(data) {\n MessagingService.addMessage(data.msg,'success');\n $scope.codesDetails = data.data; \n },function(error){ \n MessagingService.addMessage(error.msg,'error');\n });\n } else { \n $scope.codesDetails.length = 0;\n }\n }\n \n $scope.saveCodeHead = function (isValid) {\n //debugger\n if (isValid) {\n //$scope.activity.activityMessage = ProcessingService.setActivityMsg('Saving code '+ $scope.CodeHead.CodesHeadLang[0].CodeName);\n CodesService.CodesPost($scope.CodeHead)\n .then(function(data) {\n MessagingService.addMessage(data.data.msg,'success');\n },function(error){\n MessagingService.addMessage(error.msg,'error');\n }); \n }\n }; \n\n \n\n $scope.addEmptyCodeItem = function(){\n \n \n var lang=$rootScope.globals.currentUser.lang;\n $scope.codesDetails.push({id:null,Name:null,Value:null,Active:true,CodesDetailLang:[{Value:null,Lang:lang}]});\n }\n \n //$scope.codeChanged({theDirFn: $scope.getCodesDetails});\n \n if ($scope.codeId>0)\n {\n $scope.getCodesDetails();\n \n if ($scope.codeId==0) $scope.codesLoaded = false;\n } else $scope.codesLoaded = false;\n \n },\n \n link: function (scope, elem, attrs) {\n \n \n \n } \n }\n };\n'use strict';\n\nexport function ktCodesDropdown () {\n \n var controller = ['$scope', '$stateParams','$state','CodesService','MessagingService','TaskDataService','$rootScope','$timeout','dragularService',function ($scope,$stateParams,$state,CodesService,MessagingService,TaskDataService,$rootScope,$timeout,dragularService) {\n \n $scope.GetCodesByName = function()\n {\n var lang=$rootScope.globals.currentUser.lang;\n \n CodesService.getCodesByName($scope.codeName,lang).then(function(data) {\n $scope.codeList = data.data;\n \n var pos;\n if ($scope.selectedCodeId!=undefined)\n {\n pos = $scope.codeList.map(function(e) { return e.id; }).indexOf($scope.selectedCodeId);\n }\n \n /*\n if (scope.selectedCodeValue!=undefined)\n {\n pos = scope.codeList.map(function(e) { return e.value; }).indexOf(scope.selectedCodeValue);\n } */ \n if (pos>-1) {\n \n $scope.selectedCode = $scope.codeList[pos];\n \n }\n \n \n },function(error){\n \n MessagingService.addMessage(error.msg,'error');\n });\n \n };\n \n $scope.GetCodes= function()\n {\n var lang=$rootScope.globals.currentUser.lang;\n \n CodesService.getCodesByName($scope.codeName,lang).then(function(data) {\n $scope.codeList = data.data;\n \n \n \n },function(error){\n \n MessagingService.addMessage(error.msg,'error');\n });\n \n };\n \n $scope.GetCodesClick = function(){\n //scope.task.TaskOutcomeCodeId = null;\n scope.GetCodes();\n };\n $scope.GetCodesByNameClick = function(){\n //scope.task.TaskOutcomeCodeId = null;\n $scope.GetCodesByName();\n };\n \n if (!!$scope.codeName)\n {\n $scope.GetCodesByName();\n }\n else{\n \n $scope.GetCodes();\n }\n \n \n }];\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktCodesDropdown.html',\n scope:{\n //codeList: '=',\n selectedCodeId: '=',\n codeId: \"=\",\n codeName: \"@\",\n valueLength:\"@\",\n labelLength:\"@\",\n name:\"@\",\n label:\"@\",\n searchText:\"@\",\n required:\"=\",\n sizeXs: \"=\",\n //errorText:\"@\",\n \n \n },\n controller:controller,\n link: function (scope, elem, attrs) {\n \n if (scope.selectedCode == undefined) scope.selectedCode=null;\n \n /*\n scope.$watch('selectedCodeId',function(newValue, oldValue){\n \n if (scope.codeList!=undefined)\n {\n var pos = scope.codeList.map(function(e) { return e.id; }).indexOf(scope.selectedCodeId);\n if (pos>-1) {\n \n scope.selectedCode = scope.codeList[pos];\n \n }\n \n }\n });\n */\n scope.clear = function(event,selected){\n \n scope.selectedCode = null;\n \n \n };\n \n scope.onSelectUniqueCallback = function (item, model){\n \n if (item!=undefined)\n {\n scope.selectedCode = item;\n scope.selectedCodeId = item.id;\n \n }else {\n \n scope.selectedCode = null;\n scope.selectedCodeId=null;\n }\n };\n \n }\n }\n };\n'use strict';\r\n\r\n\r\n\r\nexport function ktDatasetMapper () {\r\n\r\n return {\r\n restrict: 'A',\r\n templateUrl: 'ktdirectivetemplates/ktDatasetMapper.html',\r\n scope:{\r\n fd : \"=\",\r\n },\r\n controller: function($scope,CodesService,ResourcesDataService,GridsterService,$rootScope,ProcessingService,dragularService,$timeout,CODES_CONST,MessagingService)\r\n {\r\n $scope.fd.formPriority='e';\r\n $scope.fd.localVars.src_type_text=CODES_CONST._POPULATE_TYPE_NEW_;\r\n $scope.fd.RelatedPopulateType=1;\r\n $scope.gsrvc = GridsterService\r\n if ($scope.fd.Parameters==undefined) $scope.fd.Parameters ={}; \r\n if ($scope.fd.PopulateType!=null && $scope.fd.PopulateType!=\"\")\r\n {\r\n var pType = $scope.fd.PopulateType;\r\n var formPriority = pType.toString().substr(1,1);\r\n $scope.fd.RelatedPopulateType=pType.toString().substr(0,1);\r\n if (formPriority==\"i\" || formPriority==\"e\")\r\n {\r\n \r\n $scope.fd.formPriority = formPriority;\r\n }\r\n }\r\n\r\n if ($scope.fd.localVars.selectedResourceItem!=undefined)\r\n {\r\n $scope.fd.localVars.selectedResourceItem.src_type_text = $scope.fd.localVars.src_type_text[$scope.fd.RelatedPopulateType];\r\n }else\r\n {\r\n $scope.fd.localVars.selectedResourceItem = {src_type_text:$scope.fd.localVars.src_type_text[$scope.fd.RelatedPopulateType]};\r\n }\r\n \r\n $scope.fd.localVars.selectedResource=[];\r\n if ($scope.fd.localVars.selectedResourceItem != undefined)\r\n {\r\n $scope.fd.localVars.selectedResource.push($scope.fd.localVars.selectedResourceItem);\r\n \r\n }\r\n\r\n\r\n // MIGOR DODAO 2.6.2021- PROVJERITI -POPUNI LISTU DEFINICIJA OD RESURSA (RESOURCES LIST)\r\n\r\n $scope.fd.localVars.getResources = function(resource_type) {\t\r\n \r\n if (resource_type==undefined) resource_type = $scope.fd.Parameters.SelectedResourceType\r\n if ($scope.fd.localVars.resourceList==undefined) $scope.fd.localVars.resourceList=[];\r\n var lang=$rootScope.globals.currentUser.lang;\r\n ResourcesDataService.getResourceDefListByType(lang,resource_type).then(\r\n function(data) {\r\n $scope.fd.localVars.resourceList = data.data;\r\n $scope.fd.localVars.setResourceDd() \r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n\t\t\t\t\t}\r\n \r\n\t\t$scope.fd.localVars.setResourceDd = function(){\t\t \r\n let tmpResourceItem = $scope.fd.localVars.selectedResourceItem\r\n if ($scope.fd.Related!=undefined && $scope.fd.Related!=null) {\r\n let pos = $scope.fd.localVars.resourceList.map(function(e) { return e.id; }).indexOf($scope.fd.Related);\r\n if (pos>=0) {\r\n $scope.fd.localVars.selectedResourceItem = $scope.fd.localVars.resourceList[pos]\r\n $scope.fd.localVars.selectedResourceItem.name_confirmed=tmpResourceItem.name_confirmed\r\n\r\n }\r\n } \r\n }\r\n\r\n $scope.fd.localVars.getPublishedResources=function()\r\n {\r\n $scope.fd.localVars.publishedLoaded=false\r\n \r\n ResourcesDataService.GetPublishedResourcesByTypeId($scope.fd.Related,'form').then(\r\n function (data) { \r\n \r\n $scope.fd.localVars.publishedResourceList = data.data;\r\n $scope.fd.localVars.publishedLoaded=true\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n } \r\n \r\n $scope.fd.localVars.GetPublishedResourcesByType = function(resource_type) {\t\r\n \r\n if (resource_type==undefined) resource_type = $scope.fd.Parameters.SelectedResourceType\r\n if ($scope.fd.localVars.publishedResourceList==undefined) $scope.fd.localVars.publishedResourceList=[];\r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n // we are in build mode, so we should invalidate cahce (useCache is false) TODO - provjeriti da li treba korisiti cache\r\n ResourcesDataService.GetPublishedResourcesByType(resource_type,'form', false).then(function (data) { \r\n //debugger //GetPublishedResourcesByType \r\n \r\n $timeout(function(){\r\n $scope.fd.localVars.publishedResourceList.length = 0; \r\n angular.extend($scope.fd.localVars.publishedResourceList, data.data);\r\n //$scope.fd.localVars.publishedResourceList = data.data;\r\n \r\n \r\n if ($scope.fd.Parameters.PublishedResourceId!=null && $scope.fd.Parameters.SelectVersionDirect) {\r\n $scope.fd.localVars.setSelectedResource($scope.fd.Parameters.PublishedResourceId);\r\n } \r\n \r\n })\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n } \r\n \r\n if ($scope.fd.localVars.resourceList==undefined) $scope.fd.localVars.resourceList=[]\r\n if ($scope.fd.Related==undefined || $scope.fd.localVars.resourceList.length==0) $scope.fd.localVars.getResources($scope.fd.Parameters.SelectedResourceType)\r\n else $scope.fd.localVars.setResourceDd()\r\n /*\r\n if ($scope.fd.localVars.publishedResourceList==undefined || $scope.fd.localVars.publishedResourceList.length==0) {\r\n $scope.fd.localVars.GetPublishedResourcesByType();\r\n }\r\n */\r\n \r\n $scope.fd.localVars.changePriority= function(fp){\r\n $scope.fd.formPriority =fp; \r\n };\r\n \r\n \r\n $scope.fd.localVars.confirm= function(){\r\n \r\n $timeout(function(){\r\n $scope.fd.Parameters.Analytics = []; // REMOVE OLD PARAMETERS (Analytics....)\r\n \r\n $scope.fd.localVars.selectedResourceItem.src_type_text = $scope.fd.localVars.src_type_text[$scope.fd.RelatedPopulateType];\r\n $scope.fd.PopulateType=$scope.fd.RelatedPopulateType+$scope.fd.formPriority;\r\n\r\n\r\n $scope.fd.localVars.selectedResourceItem.name_confirmed = $scope.fd.localVars.selectedResourceItem.name\r\n $scope.fd.Parameters.selectedResourceItem = {\r\n 'name_confirmed': $scope.fd.localVars.selectedResourceItem?.name_confirmed\r\n }\r\n\r\n\r\n $scope.fd.localVars.gridOptionsResourceData = {} //dataset is changed and gridOptions should be reset?? \r\n $scope.fd.localVars.datasetMapperType=0;\r\n $scope.fd.GridState = {}\r\n $scope.fd.localVars.selectedResourceItem_c=$scope.fd.localVars.selectedResourceItemPublished; \r\n \r\n //if (!$scope.fd.Parameters.SelectVersionDirect) \r\n //{\r\n let published = $scope.fd.localVars.publishedResourceList[$scope.fd.localVars.publishedResourceList.length-1]\r\n \r\n if (published!=undefined)\r\n {\r\n $scope.fd.localVars.selectedResourceItem_c = published\r\n $scope.fd.Parameters.PublishedResourceId = published.id\r\n $scope.fd.Parameters.PublishedResourceVersion = published.Version\r\n }\r\n\r\n // }\r\n $scope.fd.localVars.setSelectedResource($scope.fd.Parameters.PublishedResourceId)\r\n\r\n \r\n });\r\n \r\n // $scope.localVars.toggleProperties(0); //MIGOR dodao da se sakrije property kad stisne prozor , TODO - treba potvrditi da se nesto s time ne kvari\r\n };\r\n\t\t\t\t \r\n \r\n \r\n $scope.fd.localVars.onSelectResourceCallback = function (item, model){\r\n\r\n \tlet eventResultId=item.id;\r\n \tlet eventResultName=item.name;\r\n let eventResultParentElementId =item.parentElementId;\r\n /*\r\n if ($scope.fd.RelatedPopulateType!=1)\r\n {\r\n $scope.fd.localVars.getFormWidgets(item.id,$scope.fd.RelatedPopulateType); \r\n }*/\r\n $scope.fd.Related=item.id\r\n $scope.fd.Parameters.PublishedResourceId=0\r\n $scope.fd.localVars.getPublishedResources()\r\n //$scope.fd.localVars.selectedResourceItem = {id:eventResultId, name : eventResultName,parentElementId:eventResultParentElementId,Version:item.Version,ResourceDefId:item.ResourceDefId};\r\n \r\n \r\n }\r\n\r\n $scope.fd.localVars.onSelectVersionCallback = function (item, model){\r\n\r\n $scope.fd.localVars.selectedResourceItemPublished = item\r\n $scope.fd.Parameters.PublishedResourceId = item.id\r\n $scope.fd.Parameters.PublishedResourceVersion = item.Version\r\n /*\r\n var eventResultId=item.id;\r\n var eventResultName=item.name;\r\n var eventResultParentElementId =item.parentElementId;\r\n if ( item.id!=$scope.fd.localVars.selectedResourceItem.id && $scope.fd.localVars.relatedPopulateType!=1 )\r\n {\r\n $scope.fd.localVars.getFormWidgets(item.id,$scope.fd.RelatedPopulateType); \r\n }\r\n \r\n $scope.fd.localVars.selectedResourceItem = {id:eventResultId, name : eventResultName,parentElementId:eventResultParentElementId,Version:item.Version,ResourceDefId:item.ResourceDefId};\r\n */\r\n \r\n }\r\n \r\n $scope.fd.localVars.setSelectedSource = function(source_id){\r\n \r\n if (source_id==-1)\r\n {\r\n \r\n $scope.fd.RelatedPopulateType = '3';\r\n $scope.fd.formPriority = 'e';\r\n \r\n }else\r\n {\r\n \r\n $scope.fd.RelatedPopulateType = '2';\r\n $scope.fd.formPriority = source_id.form_type;\r\n $scope.fd.SrcWidgetId = source_id.parentElementId;\r\n if (source_id.type=='rlist') $scope.fd.RelatedPopulateType = '4';\r\n \r\n }\r\n };\r\n \r\n $scope.fd.localVars.getFormWidgets = function(resource_id){\r\n \r\n\r\n var lang=$rootScope.globals.currentUser.lang;\r\n if ($scope.fd.PresentationId == undefined || $scope.fd.PresentationId==null) $scope.fd.PresentationId=0;\r\n if ($scope.fd.UuidRef == undefined || $scope.fd.UuidRef==null) $scope.fd.UuidRef=\"0\";\r\n let formVersion = $scope.gsrvc.getResourceFormVersion($scope.fd.localVars.resourceId+$scope.fd.localVars.formType)\r\n if (formVersion!=undefined)\r\n {\r\n ResourcesDataService.getFormWidgets(resource_id,$scope.fd.localVars.resourceId,$scope.fd.UuidRef,1,lang,formVersion?.Version).then(function(data) {\r\n \r\n \r\n \r\n $scope.fd.localVars.currentResourceInitiate = data.data.initiate_widgets;\r\n \r\n $scope.fd.localVars.currentResourceExecute = data.data.execute_widgets;\r\n \r\n $scope.fd.localVars.currentDownloaded = true;\r\n \r\n \r\n \r\n $scope.fd.localVars.previousResourceInitiate = data.data.initiate_widgets;\r\n $scope.fd.localVars.previousResourceExecute = data.data.execute_widgets;\r\n \r\n $scope.fd.localVars.previousDownloaded = true;\r\n \r\n \r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }else MessagingService.addMessage('Error - Form version is undefined in dataset mapper directive (getFormWidgets function)','error');\r\n };\r\n \r\n \r\n $scope.fd.localVars.setPopulateMethod= function(populateMethod){\r\n \r\n $scope.fd.PopulateMethod=populateMethod;\r\n \r\n if (populateMethod=='A')\r\n {\r\n if ($scope.fd.localVars.selectedResourceItem_c!=undefined)\r\n {\r\n var id=$scope.fd.localVars.selectedResourceItem_c.id;\r\n if (id==undefined) id=$scope.fd.localVars.selectedResourceItem_c.relatedId;\r\n //if (id!=undefined) $scope.fd.localVars.getFormWidgets($scope.fd.localVars.selectedResourceItem_c.id);\r\n }\r\n \r\n }\r\n };\r\n \r\n $scope.fd.localVars.setPopulateMethod($scope.fd.PopulateMethod);\r\n \r\n \r\n $scope.fd.localVars.setPopulateType= function(populateType){\r\n \r\n $scope.fd.RelatedPopulateType=populateType;\r\n \r\n /*\r\n if ($scope.fd.localVars.selectedResourceItem_c!=undefined)\r\n {\r\n $scope.fd.localVars.getFormWidgets($scope.fd.localVars.selectedResourceItem_c.relatedId);\r\n }\r\n */\r\n \r\n }\r\n \r\n },\r\n link: function (scope, elem, attrs) {\r\n \r\n \r\n }\r\n }\r\n};\n'use strict';\r\n\r\n\r\n\r\nexport function ktDatasetMapperParent () {\r\n\r\n return {\r\n restrict: 'A',\r\n templateUrl: 'ktdirectivetemplates/ktDatasetMapperParent.html',\r\n controller: function($scope,CodesService,ResourcesDataService,GridsterService,$rootScope,ProcessingService,dragularService,$timeout,CODES_CONST,MessagingService){\r\n \r\n \r\n $scope.gsrvc = GridsterService\r\n if ($scope.gsrvc.parentResource[$scope.fd.UuidRef] == undefined) $scope.gsrvc.parentResource[$scope.fd.UuidRef]={}\r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].formPriorityParent='e';\r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].ParentSearchPriority='d';\r\n $scope.src_type_text_parent=CODES_CONST._POPULATE_TYPE_NEW_;\r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].PopulateTypeParentLocal=1;\r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].resourceListParentDownloaded=false\r\n \r\n if ($scope.gsrvc.parentResource[$scope.fd.UuidRef].PopulateTypeParent!=null)\r\n {\r\n var rpType = $scope.gsrvc.parentResource[$scope.fd.UuidRef].PopulateTypeParent;\r\n var formPriorityParent = rpType.toString().substr(1,1);\r\n var parentSearchPriority = rpType.toString().substr(2,1);\r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].PopulateTypeParentLocal=rpType.toString().substr(0,1);\r\n \r\n if (formPriorityParent==\"i\" || formPriorityParent==\"e\")\r\n {\r\n \r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].formPriorityParent = formPriorityParent;\r\n }\r\n \r\n if (parentSearchPriority==\"i\" || parentSearchPriority==\"d\")\r\n {\r\n \r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].ParentSearchPriority = parentSearchPriority;\r\n }\r\n }\r\n\r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].selectedResourceItemParent={}\r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].selectedResourceItemParent.src_type_text_parent = $scope.src_type_text_parent[$scope.gsrvc.parentResource[$scope.fd.UuidRef].PopulateTypeParent];\r\n \r\n\r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].resourceListParent=[];\r\n \r\n $scope.SetSelectedResourceParent = function(id) {\r\n \r\n \r\n var pos = $scope.gsrvc.parentResource[$scope.fd.UuidRef].resourceListParent.map(function(e) { return e.id; }).indexOf(id);\r\n\r\n if (pos>=0){\r\n \r\n\r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].selectedResourceParent = $scope.gsrvc.parentResource[$scope.fd.UuidRef].resourceListParent[pos]\r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].ParentResourceDefId = $scope.gsrvc.parentResource[$scope.fd.UuidRef].selectedResourceParent.id\r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].selectedResourceItemParent.id = $scope.gsrvc.parentResource[$scope.fd.UuidRef].resourceListParent[pos].id;\r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].selectedResourceItemParent.name = $scope.gsrvc.parentResource[$scope.fd.UuidRef].resourceListParent[pos].name;\r\n \r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].selectedResourceItemParent.name_confirmed = $scope.gsrvc.parentResource[$scope.fd.UuidRef].selectedResourceItemParent.name +' ('+$scope.gsrvc.parentResource[$scope.fd.UuidRef].selectedResourceItemParent.id +')'\r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].selectedResourceItemParent_c=$scope.gsrvc.parentResource[$scope.fd.UuidRef].selectedResourceItemParent;\r\n \r\n \r\n $scope.SetPopulateTypeParent($scope.gsrvc.parentResource[$scope.fd.UuidRef].PopulateTypeParentLocal)\r\n\r\n \r\n\r\n $timeout(function(){\r\n\r\n \r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].resourceListParentDownloaded= true\r\n \r\n })\r\n \r\n }\r\n\t\t\t \r\n }\r\n \r\n $scope.setSelectedSourceParent = function(source_id){\r\n \r\n if (source_id==-1)\r\n {\r\n \r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].PopulateTypeParentLocal = '3';\r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].formPriorityParent = 'e';\r\n \r\n }else\r\n {\r\n \r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].PopulateTypeParentLocal = '2';\r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].formPriorityParent = source_id.form_type;\r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].SrcParentWidgetId = source_id.parentElementId;\r\n if (source_id.type=='rlist') $scope.gsrvc.parentResource[$scope.fd.UuidRef].PopulateTypeParentLocal = '4';\r\n \r\n }\r\n }; \r\n \r\n \r\n\r\n\t\t \r\n\t\t\t$scope.getResourceParent = function() {\r\n\t\t\t\t\r\n\t\t\t\tif ($scope.fd.ElementType==\"uploadfile\" || $scope.fd.ElementType==\"view\" || $scope.fd.ElementType==\"add\" || $scope.fd.ElementType==\"update\") {\r\n\t\t\t\t\tvar lang=$rootScope.globals.currentUser.lang;\r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].resourceListParentDownloaded = false\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t// POPUNI LISTU DEFINICIJA OD RESURSA - potential parents \r\n\t\t\t\t\tif ($scope.fd.ElementType==\"uploadfile\") $scope.fd.ParentResourceDefId = $scope.fd?.Parameters?.rules?.[0]?.fileType?.ResourceDefUid\r\n\t\t\t\t\t\r\n\t\t\t\t\tif ( ! $scope.fd.ParentResourceDefId) \r\n\r\n\t\t\t\t\t\tMessagingService.addMessage($scope.fd.ElementType + ', uuid=' + $scope.fd.UuidRef + ' - parent Resource not found' ,'error')\r\n\t\t\t\t\t\t \r\n\t\t\t\t\telse ResourcesDataService.getExistingResourceRelationships($scope.fd.ParentResourceDefId, true).then(function(data) {\r\n \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t$scope.gsrvc.parentResource[$scope.fd.UuidRef].resourceListParent = data.data;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif ($scope?.fd?.localVars?.loadingParams) \t$scope.fd.localVars.loadingParams=false\r\n\r\n\t\t\t\t\t\t\tif ($scope.gsrvc.parentResource[$scope.fd.UuidRef].ParentResourceDefId!=null && $scope.gsrvc.parentResource[$scope.fd.UuidRef].ParentResourceDefId!=undefined)\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t$scope.SetSelectedResourceParent($scope.gsrvc.parentResource[$scope.fd.UuidRef].ParentResourceDefId);\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t$scope.gsrvc.parentResource[$scope.fd.UuidRef].resourceListParentDownloaded = true\r\n\t\t\t\t\t\t\t\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n })\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\t \r\n \r\n \r\n\t\t\t\t $scope.getResourceParent();\r\n \r\n $scope.changePriorityParent= function(id){\r\n \r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].formPriorityParent = id;\r\n \r\n };\r\n $scope.changeParentSearchPriority= function(id){\r\n \r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].ParentSearchPriority = id;\r\n }; \r\n \r\n\t\t $scope.confirmParent= function(){\r\n \r\n \r\n if ($scope.gsrvc.parentResource[$scope.fd.UuidRef].selectedResourceItemParent_c!=undefined){\r\n \r\n if ($scope.gsrvc.parentResource[$scope.fd.UuidRef].ParentResourceDefId!=$scope.gsrvc.parentResource[$scope.fd.UuidRef].selectedResourceItemParent_c.id && $scope.gsrvc.parentResource[$scope.fd.UuidRef].PopulateTypeParent!=null && $scope.gsrvc.parentResource[$scope.fd.UuidRef].PopulateTypeParent!=undefined)\r\n {\r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].ParentResourceDefId=$scope.gsrvc.parentResource[$scope.fd.UuidRef].selectedResourceItemParent_c.id;\r\n \r\n }\r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].selectedResourceItemParent.name_confirmed = $scope.gsrvc.parentResource[$scope.fd.UuidRef].selectedResourceItemParent_c.name +' ('+$scope.gsrvc.parentResource[$scope.fd.UuidRef].selectedResourceItemParent_c.id +')'\r\n\r\n }\r\n \r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].selectedResourceItemParent.src_type_text = $scope.src_type_text_parent[$scope.gsrvc.parentResource[$scope.fd.UuidRef].PopulateTypeParentLocal];\r\n \r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].PopulateTypeParent=$scope.gsrvc.parentResource[$scope.fd.UuidRef].PopulateTypeParentLocal+$scope.gsrvc.parentResource[$scope.fd.UuidRef].formPriorityParent+$scope.gsrvc.parentResource[$scope.fd.UuidRef].ParentSearchPriority;\r\n \r\n };\r\n\r\n // FUNCTION ONSELECT DATASET CALLBACK\r\n $scope.onSelectResourceParentCallback = function (item, model){\r\n\t\t\t\t \r\n\t\t\t\t if (item) {\r\n \tvar eventResultId=item.id;\r\n \tvar eventResultName=item.name;\r\n var eventResultParentElementId =item.parentElementId;\r\n //if (item.id!=$scope.gsrvc.parentResource[$scope.fd.UuidRef].selectedResourceItemParent_c?.id){\r\n // $scope.gsrvc.parentResource[$scope.fd.UuidRef].localVars.getFormWidgetsParent(item.id,$scope.gsrvc.parentResource[$scope.fd.UuidRef].PopulateTypeParentLocal); \r\n //}\r\n \r\n \t $scope.gsrvc.parentResource[$scope.fd.UuidRef].selectedResourceItemParent_c = {id:eventResultId, name : eventResultName,parentElementId:eventResultParentElementId};\r\n\t\t\t\t } else\r\n\t\t\t\t\t\t$scope.gsrvc.parentResource[$scope.fd.UuidRef].selectedResourceItemParent_c=null\r\n \r\n }//ONSELECT DATASET CALLBACK\r\n \r\n $scope.getFormWidgetsParent = function(resource_id,type){\r\n \r\n\r\n var lang=$rootScope.globals.currentUser.lang;\r\n if ($scope.gsrvc.parentResource[$scope.fd.UuidRef].localVars.formType==undefined) $scope.gsrvc.parentResource[$scope.fd.UuidRef].localVars.formType=\"\"\r\n if ($scope.gsrvc.parentResource[$scope.fd.UuidRef].UuidRef == undefined || $scope.gsrvc.parentResource[$scope.fd.UuidRef].UuidRef==null) $scope.gsrvc.parentResource[$scope.fd.UuidRef].UuidRef=\"0\";\r\n let formVersion = $scope.gsrvc.getResourceFormVersion($scope.gsrvc.parentResource[$scope.fd.UuidRef].localVars.resourceId+$scope.gsrvc.parentResource[$scope.fd.UuidRef].localVars.formType)\r\n\r\n if (formVersion!=undefined)\r\n {\r\n ResourcesDataService.getFormWidgets(resource_id,$scope.gsrvc.parentResource[$scope.fd.UuidRef].localVars.resourceId,$scope.gsrvc.parentResource[$scope.fd.UuidRef].UuidRef,1,lang,formVersion.Version).then(function(data) {\r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].localVars.currentTaskInitiateDatasetsParent = data.data.initiate_widgets;\r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].localVars.currentTaskExecuteDatasetsParent = data.data.execute_widgets;\r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].localVars.currentDownloadedParent = true;\r\n \r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n\r\n }else MessagingService.addMessage('Error - Form version is undefined in dataset mapper parent directive (getFormWidgetsParent function)','error');\r\n };\r\n \r\n \r\n \r\n $scope.SetPopulateTypeParent= function(populateType){\r\n \r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].PopulateTypeParentLocal=populateType;\r\n \r\n /*if ($scope.gsrvc.parentResource[$scope.fd.UuidRef].selectedResourceItemParent_c!=undefined)\r\n {\r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef].localVars.getFormWidgetsParent($scope.gsrvc.parentResource[$scope.fd.UuidRef].selectedResourceItemParent_c.id,$scope.gsrvc.parentResource[$scope.fd.UuidRef].PopulateTypeParentLocal);\r\n }\r\n */ \r\n \r\n }\r\n \r\n $scope.getDatasetSources= function(){\r\n \r\n var radio = $scope.gsrvc.parentResource[$scope.fd.UuidRef].PopulateTypeParentLocal;\r\n \r\n }\r\n \r\n },\r\n link: function (scope, elem, attrs) {\r\n \r\n \r\n \r\n \r\n //$scope.getDatasetSources();\r\n \r\n }\r\n }\r\n};\n'use strict';\r\n\r\nexport function ktDatasetToDatasetMapper () {\r\n\r\n return {\r\n restrict: 'A',\r\n templateUrl: 'ktdirectivetemplates/ktDatasetToDatasetMapper.html',\r\n controller: function ($scope,$state,CodesService,ResourcesDataService,GridsterService,$rootScope,ProcessingService,dragulaService,$timeout,CODES_CONST,MessagingService)\r\n\t\t\t {\r\n $scope.gsrvc = GridsterService; \r\n $scope.CTRL='ktDatasetToDatasetMapper'\r\n if ($scope.fd.DatasetMapping ==undefined) $scope.fd.DatasetMapping = []; \r\n \r\n $scope.$on(\"$destroy\", function() {\r\n //debugger\r\n //dragulaService.destroy($rootScope, dragula_bag);\r\n // TODO - Check is dragula is properly destroying bags (if not - manually destroy)\r\n });\r\n \r\n $scope.dataset1Fields = [];\r\n $scope.dataset2Fields = [];\r\n\t\t\t \r\n\t\t\t $scope.remove = function(sMap, index)\r\n\t\t\t {\r\n\t\t\t\t //debugger\r\n\t\t\t\t $scope.mappingList.push( $scope.fd.DatasetMapping.splice(index,1)[0])\r\n\t\t\t }\r\n\t\t\t \r\n\t\t\t $scope.sortList = function (list) {\r\n\t\t\t\t \r\n\t\t\treturn list\r\n\t\t\t\t if (list?.length==0) {\r\n\t\t\t\t\t return [{id:0}]\r\n\t\t\t\t } else return list\r\n\t\t\t }\r\n\t\t\t \r\n \r\n //if ($scope.fd.selectedPackages==undefined) $scope.fd.selectedPackages=[];\r\n \r\n /*\r\n $scope.fd.localVars.confirmDataset2Dataset= function(){\r\n \r\n $timeout(function(){\r\n \r\n //$scope.fd.selectedPackages =$scope.fd.localVars.gridApi.selection.getSelectedRows();\r\n \r\n if ($scope.fd.selectedPackages!=undefined)\r\n {\r\n $scope.fd.DatasetMapping = [];\r\n for (var i=0;i<$scope.fd.selectedPackages.length;i++)\r\n {\r\n $scope.fd.DatasetMapping.push($scope.fd.selectedPackages[i])\r\n \r\n \r\n }\r\n }\r\n\r\n });\r\n \r\n };\r\n */\r\n var lang=$rootScope.globals.currentUser.lang;\r\n\r\n $scope.mappingTypes = [{id:1,value:1,name:'Fixed'},{id:2,value:2,name:'This resource'},{id:3,value:3,name:'Previous resource'}]\r\n /*\r\n CodesService.getCodesByName('dmt',lang).then(function (data) {\r\n $scope.mappingTypes = data.data;\r\n });*/ \r\n //setup dragula\r\n $scope.setupDragula = function()\r\n {\r\n var widgetHandle = \"element-drag-handle\";\r\n var bag = dragulaService.find($rootScope, 'bag-resource-mapping');\r\n if (bag) dragulaService.destroy($rootScope, 'bag-resource-mapping');\r\n \r\n dragulaService.options($rootScope, 'bag-resource-mapping', {\r\n revertOnSpill: true,\r\n removeOnSpill: false,\r\n /* copy:function (el,source){\r\n \r\n return source.id=='resource1-mapping';\r\n \r\n },\r\n //direction:'vertical',\r\n accepts:function (el,target, source) {\r\n return target.id!='resource1-mapping';\r\n },*/\r\n moves: function (el, container, handle) {\r\n return handle.classList.contains(widgetHandle);\r\n }\r\n }); \r\n \r\n };\r\n \r\n // POPUNI LISTU DEFINICIJA OD RESURSA (RESOURCES LIST)\r\n\t\t$scope.fd.localVars.getDatasets = function() {\r\n\t\t\t\r\n ResourcesDataService.getResourceDefListByType(lang,'dataset').then(\r\n\t\t\t\t\t\tfunction(data) {\t\t\t\r\n\t\t\t\t\t\t\t$scope.fd.localVars.datasetList = data.data;\r\n $scope.fd.localVars.datasetLoaded=true;\r\n //console.log($scope.datasetList);\r\n\t\t\t\t \r\n\t\t\t\t\t\t\t},function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t\t\t\t\t\t });\r\n\t\t\t\t\t};\r\n $scope.getDatasetMappings = function (datasetId) {\r\n \r\n var lang = $rootScope.globals.currentUser.lang;\r\n \r\n ResourcesDataService.getDatasetMappings(datasetId,lang).then(function(data) {\r\n \r\n $scope.dataset2Fields = data.data;\r\n \r\n $scope.setupDragula();\r\n $scope.dataset1Loaded=true;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }; \r\n\r\n $scope.getResourceFields = function (item,type) {\r\n \r\n var lang = $rootScope.globals.currentUser.lang;\r\n \r\n ResourcesDataService.getResourceFields(item.Dataset1.id,lang).then(function(data) {\r\n \r\n \r\n if (type==1){\r\n $scope.dataset1Fields = data.data;\r\n\r\n }\r\n \r\n else{\r\n $scope.dataset2Fields = data.data;\r\n\r\n }\r\n \r\n $scope.getDatasetMappings(item.id);\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n };\r\n \r\n $scope.fd.localVars.showMappingDetailsFn = function (item) {\r\n /*\r\n $scope.dataset1Loaded=false;\r\n if ($scope.dataset1Fields!=undefined) $scope.dataset1Fields.length=0;\r\n if ($scope.dataset2Fields!=undefined) $scope.dataset2Fields.length=0;\r\n \r\n $scope.selectedDataset1 = {id:item.Dataset1.id,name: item.Dataset1.resourcedeflang_set[0].Name};\r\n $scope.selectedDataset2 = {id:item.Dataset2.id,name: item.Dataset2.resourcedeflang_set[0].Name};\r\n $scope.getResourceFields(item,1);\r\n \r\n $scope.tmpMappingFields={}\r\n $scope.tmpMappingFields.dataset1=$scope.selectedDataset1;\r\n $scope.tmpMappingFields.dataset2=$scope.selectedDataset2;\r\n $scope.tmpMappingFields.mappingType= {id:item.MappingType.id,name:item.MappingType.Value,value:item.MappingType.Name}; \r\n $scope.tmpMappingFields.mappingDisplayName=item.DatasetMappingHeadLang_datasetmappingheadid[0].Name\r\n $scope.tmpMappingFields.mappingName=item.MappingName;\r\n \r\n $scope.fd.localVars.showMappingData(item);\r\n */\r\n \r\n };\r\n $scope.fd.localVars.showMappingData = function (selectedResource) {\r\n \r\n\r\n $scope.fd.localVars.showMappingDetails=true;\r\n $scope.fd.localVars.showMappingName=true;\r\n \r\n if (selectedResource==false || selectedResource==undefined) \r\n {\r\n $scope.mappingFields={};\r\n $scope.saveDatasetMappingHeadStatus='createMapping';\r\n } else \r\n {\r\n $scope.saveDatasetMappingHeadStatus='updateMapping';\r\n $scope.mappingFields= $scope.tmpMappingFields;\r\n }\r\n \r\n $scope.fd.localVars.getDatasets();//puni datasetList\r\n var lang = $rootScope.globals.currentUser.lang;\r\n CodesService.getCodesByName('dmt',lang).then(function (data) {\r\n $scope.fd.localVars.codeList = data.data;\r\n $scope.fd.localVars.mappingTypeLoaded = true;\r\n }); \r\n };\r\n \r\n $scope.fd.localVars.gotoMapping = function () {\r\n \r\n $state.go('app.navbar.resources.dataset-transform')\r\n }\r\n $scope.removeSelectedMappings= function()\r\n {\r\n let pos;\r\n if ($scope.fd?.DatasetMapping)\r\n for (let i=0;i<$scope.fd.DatasetMapping.length;i++)\r\n {\r\n if ($scope.fd.DatasetMapping[i]!==undefined && $scope.fd.DatasetMapping[i]!==null)\r\n {\r\n pos = $scope.mappingList.map(function(e) { return e.id; }).indexOf($scope.fd.DatasetMapping[i].id);\r\n \r\n $scope.mappingList.splice(pos,1);\r\n }\r\n }\r\n }\r\n $scope.removeItem= function(pindex,index)\r\n {\r\n $scope.dataset2Fields[pindex].fields.splice(index,1);\r\n };\r\n $scope.cancelMapping = function () {\r\n $scope.saveDatasetMappingHeadStatus='CancelOrInit';\r\n $scope.fd.localVars.showMappingDetails=false;\r\n $scope.fd.localVars.showMappingName=false;\r\n };\r\n $scope.fd.localVars.getMappingPackages = function () {\r\n \r\n var lang = $rootScope.globals.currentUser.lang;\r\n var fromDs = 0;\r\n var toDs = $scope.fd.localVars.selectedResourceItem?.id;\r\n \r\n ResourcesDataService.getMappingPackages(fromDs,toDs,lang).then(function(data) {\r\n \r\n $scope.mappingList = data.data;\r\n $scope.removeSelectedMappings();\r\n $scope.mappingsLoaded=true;\r\n $scope.setupDragula();\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n };\r\n $scope.fd.localVars.getMappingPackages(); \r\n },\r\n\r\n link: function (scope, elem, attrs) {\r\n \r\n }\r\n } \r\n};\n'use strict';\r\n\r\nexport function ktDate () {\r\n\r\n\tvar datePickerCtrl = ['$scope','$rootScope','GridsterService','CodesService','$compile','$element','$templateCache', \r\n\t\tfunction ($scope,$rootScope,GridsterService,CodesService,$compile,$element,$templateCache) {\r\n \r\n\t\t//debugger\r\n\t\t$scope.$rootScope =$rootScope\r\n\t\t//convert string dates to js\r\n\t\tif ($scope.fd.Search) {\r\n\t\t\tif ($scope.fd.Search.between1) $scope.fd.Search.between1= new Date($scope.fd.Search.between1 )\r\n\t\t\tif ($scope.fd.Search.between2) $scope.fd.Search.between2= new Date($scope.fd.Search.between2 )\r\n\t\t\tif ($scope.fd.Search.value) \t$scope.fd.Search.value= new Date($scope.fd.Search.value)\t\r\n\t\t}\r\n\t\r\n\t\tlet itemValue = null;\r\n \r\n\t\tif ($scope.formData!=undefined) {\r\n\t\t\tif ($scope.formData.length==0)\t\r\n\t\t\t\t\t\t$scope.formData=[{}];\r\n\t\t\titemValue=$scope.formData[0][$scope.fd.FieldName] \r\n\t\t} else \r\n\t\t\t$scope.formData=[{}];\r\n\t\t\r\n\t\t//set FormData values\r\n\t\tif ($scope.fd.Search) {\r\n\t\t\tif ($scope.fd.Search.value) $scope.formData[0][$scope.fd.FieldName]= new Date($scope.fd.Search.value)\t\r\n\t\t}\r\n\t\t\r\n\t\t$scope.myscope = $scope\t\r\n\t\t$scope.CTRL = $scope.CTRL + ':ktdate'\r\n\t\t$scope.gsrvc = GridsterService;\r\n\t\t$scope.fd.localVars = {} \r\n\t\t$scope[$scope.fd.id] = {'fd': $scope.fd, 'localvars':$scope.fd.localVars}\r\n\r\n\t\tif ($scope.fd.ParametersLang==undefined || $scope.fd.ParametersLang==null) \r\n\t\t\t\t$scope.fd.ParametersLang={};\r\n\t\t\r\n\t\t$scope.fd.isOpen=false;\r\n if ($scope.localVars==undefined) \r\n\t\t\t\t$scope.localVars={};\r\n\t\t\t\r\n\t\t$scope.fd.localVars.search = [\r\n\t\t\t{id:1,filter:'gt',code_name:'gte_date',name:\"From date\",icon:\"fa fa-chevron-right\"},\r\n\t\t\t{id:2,filter:'lt',code_name:'lte_date',name:\"To date\",icon:\"fa fa-chevron-left\"},\r\n\t\t\t{id:3,filter:'eq',code_name:'eq_date',name:\"Exact date\",icon:\"fa fa-bars\"},\r\n\t\t\t{id:4,filter:'between',code_name:'between_date',name:\"Between and \",icon:\"fa fa-expand\"}\r\n\t\t];\r\n\t\r\n\r\n $scope.fd.localVars.processFilters = function(filterList)\r\n {\r\n for (let i=0;i<$scope[$scope.fd.id]['fd'].localVars.search.length;i++) {\r\n let pos = filterList.map(function(e) { return e.id; }).indexOf($scope[$scope.fd.id]['fd'].localVars.search[i].code_name);\r\n if (pos>=0) $scope[$scope.fd.id]['fd'].localVars.search[i].name = filterList[pos].name\r\n }\r\n \r\n if ($scope.fd.Search===undefined || $scope.fd.Search===null) $scope.fd.Search=$scope[$scope.fd.id]['fd'].localVars.search[2];//initialize to equals\r\n if ($scope.fd.Search) $scope.fd.Search.value= $scope.formData[0][$scope.fd.FieldName]; \r\n $scope[$scope.fd.id]['fd'].localVars.filterReady=true\r\n }\r\n\r\n if ($scope.showSearchFilters || $scope.resourceDefinition.form_definition) {\r\n let lang=$rootScope.globals.currentUser.lang;\r\n CodesService.getCodesByName('search_filters',lang).then(function (data) {\r\n try {\r\n //$scope.fd.localVars.processFilters(data.data) // BUG TODO\r\n $scope[$scope.fd.id]['fd'].localVars.processFilters(data.data)\r\n \r\n } catch (err) {\r\n debugger\r\n } \r\n });\r\n }\r\n\t\t \r\n\r\n \r\n let itemValueState= $scope.ksm.addSubject($scope.resourceDefinition.page_state_id+'-boolValueStateName'+$scope.fd.PresentationId,itemValue);\r\n let itemValueStateName = itemValueState.subject.name;\r\n \r\n \r\n let value_changed = function(data)\r\n {\r\n itemValueState.subject.setStateChanges = data;\r\n itemValueState.subject.notifyObservers(\"valueChanged\");\r\n };\r\n \r\n let action_value_changed = $scope.ksm.addAction(itemValueState,\"valueChanged\",value_changed);\r\n \r\n\t \r\n\t \r\n $scope.fd.on_change_action=function()\r\n { \r\n\t\t//debugger //on_change_action\t\t\r\n\t\t\r\n\t\tif ($scope.$rootScope.globals.currentApp.uid!=\"323_1\") //only in execute mode\r\n\t\t\tif ( $scope.formData[0][$scope.fd.FieldName] == null) \t$scope.formData[0][$scope.fd.FieldName] ='' // after clearing the date on the form, the date must be '' instead \"null\"\r\n\t\t \r\n if ($scope.fd.Dbtype===\"datefielddefinition\" && $scope.formData[0][$scope.fd.FieldName]) {\r\n $scope.formData[0][$scope.fd.FieldName].setHours(12,0,0,0); \r\n }\r\n\r\n $scope.ksm.executeAction(itemValueState,\"valueChanged\", $scope.formData[0][$scope.fd.FieldName]);\r\n if ($scope.fd.Search)\t{\r\n\t\t\t\tif ( $scope?.formData.length>0) \r\n\t\t\t\t\t\t\t\t$scope.fd.Search.value = $scope.formData[0][$scope.fd.FieldName];\r\n\t\t\t}\t\t\r\n }\r\n \r\n\t \r\n $scope.fd.on_change_between=function(between)\r\n {\r\n if ($scope.fd.Dbtype===\"datefielddefinition\" && $scope.fd.Search[between]!==undefined && $scope.fd.Search[between]!==null) $scope.fd.Search[between].setHours(12,0,0,0); \r\n }\r\n \r\n let apply_value = function(data) {\r\n if (data!=undefined) $scope.formData[0][$scope.fd.FieldName] = data;\r\n };\r\n \r\n if ($scope.fd?.Parameters?.DependentFieldId!=undefined && $scope.fd?.Parameters?.DependentFieldId!=null) \r\n {\r\n if ($scope.fd.Parameters.DependentFieldId!=\"\") {\r\n let dependent_field = \"Field\"+$scope.fd.PresentationId;\r\n let subscribedSubject = $scope.resourceDefinition.page_state_id+'-'+$scope.fd.Parameters.DependentFieldType+\"ValueStateName\"+$scope.fd.Parameters.DependentFieldId;\r\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",apply_value);\r\n let state = $scope.ksm.getState(subscribedSubject);\r\n if (state.status==\"ok\") $scope.formData[0][$scope.fd.FieldName] = state.state;\r\n }\r\n }\r\n \r\n \r\n\t\t\r\n\t $scope.applyDateFilters = function(index) //ovo je aktivna funkcija!!\r\n\t {\r\n\t\t$scope.fd.Search=$scope.fd.localVars.search[index];\r\n \r\n if ($scope.formData !=undefined && $scope.formData.length>0) {\r\n if ($scope.formData[0][$scope.fd.FieldName]!=undefined)\r\n\t\t\t\t\t\t\t$scope.fd.Search.value=$scope.formData[0][$scope.fd.FieldName];// ponovno dodaj value\r\n }\r\n\t\t\r\n\t\tif ($scope.fd.Search.id==4) \r\n\t\t\t\t$scope.fd.Search.ShowSecondDate=true // kad je between\r\n\t\telse \r\n\t\t\t$scope.fd.Search.ShowSecondDate=false \t\t\r\n\t };\r\n\r\n\r\n $scope.showHideProperties = function(value)\r\n {\r\n $scope.gsrvc.setFieldPropertiesOpened(value);\r\n $scope.localVars.showFieldProperties=$scope.gsrvc.getFieldPropertiesOpened();\r\n if (value) \t$scope.gsrvc.setPropertiesPosition();\r\n };\r\n\r\n $scope.fd.formats = [{id:1,name:'dd-MMMM-yyyy HH:mm:ss:sss'}, {id:2,name:'yyyy/MM/dd HH:mm:ss:sss'}, {id:3,name:'dd.MM.yyyy HH:mm:ss:sss'}];\r\n $scope.fd.formatsTime = [{id:1,name:'HH:mm:ss'}, {id:2,name:'HH:mm:ss:sss'}, {id:2,name:'HH:mm'}];\r\n $scope.fd.formatsDate = [{id:1,name:'dd-MMMM-yyyy'}, {id:2,name:'yyyy/MM/dd'}, {id:3,name:'dd.MM.yyyy'}, {id:4,name:'shortDate'}];\r\n \r\n $scope.fd.setFormat = function()\r\n {\r\n $scope.fd.format=\"\";\r\n if ($scope.fd.ParametersLang.format1!=undefined && $scope.fd.ParametersLang.format1!=null) {\r\n $scope.fd.format = $scope.fd.ParametersLang.format1.name;\r\n }\r\n \r\n if ($scope.fd.ParametersLang.format2!=undefined && $scope.fd.ParametersLang.format2!=null){\r\n if ($scope.fd.format!=\"\") {\r\n\t\t\t$scope.fd.format = $scope.fd.format+\" \"+$scope.fd.ParametersLang.format2.name;\r\n } else {\r\n $scope.fd.format = $scope.fd.ParametersLang.format2.name; \r\n }\r\n }\r\n \r\n if ($scope.fd.format ==\"\"){\r\n $scope.fd.format = $scope.fd.formats[2].name;\r\n }\r\n }\r\n \r\n let template;\r\n if ($scope.resourceDefinition.form_definition) template = $templateCache.get('ktdirectivetemplates/ktDate.html');\r\n else template = $templateCache.get('ktdirectivetemplates/ktDateExe.html');\r\n \r\n $element.append($compile(template)($scope));\r\n \r\n if (itemValueState.subject.currentStateIndex>=0) {\r\n\t\t\t$scope.formData[0][$scope.fd.FieldName] = itemValueState.subject.getState;\r\n } \r\n \r\n if ($scope.formData[0][$scope.fd.FieldName]!=undefined) $scope.ksm.executeAction(itemValueStateName,\"valueChanged\", $scope.formData[0][$scope.fd.FieldName]);\r\n\r\n \r\n}];//datepickerCtrl\r\n\r\n \r\n return {\r\n restrict: 'A',\r\n\t\t\tcontroller: datePickerCtrl,\r\n link: function (scope, elem, attrs,ctrl) \r\n\t\t\t {\r\n \r\n scope.fd.dateFormatList = [{id:1,name:'dd.MM.yyyy'},{id:2,name:'dd-MM-yyyy'},{id:3,name:'dd/MM/yyyy'},{id:4,name:'dd.MM.yy'}];\r\n scope.fd.timeFormatList = [ {id:1,name:'HH:mm', mask:'99:99'},\r\n\t\t\t\t\t\t\t\t\t\t {id:2,name:'HH:mm:ss'},\r\n\t\t\t\t\t\t\t\t\t\t// {id:3,name:'HH:mm'},\r\n\t\t\t\t\t\t\t\t\t\t {id:4,name:'HH:mm:ss:sss'}\r\n\t\t\t\t\t\t\t\t\t\t ];\r\n \r\n var posFormatDate = scope.fd.dateFormatList.map(function(e) { return e.name.toString(); }).indexOf(scope.fd.ParametersLang.format1);\r\n \r\n if (posFormatDate>=0){\r\n scope.fd.format1=scope.fd.dateFormatList[posFormatDate]; \r\n }\r\n\t\t\t\r\n var posFormatTime = scope.fd.timeFormatList.map(function(e) { return e.name.toString(); }).indexOf(scope.fd.ParametersLang.format2);\r\n \r\n if (posFormatTime>=0){\r\n scope.fd.ParametersLang.format2=scope.fd.timeFormatList[posFormatTime]; \r\n }\r\n\t\t\t \r\n scope.fd.dirLoaded = true\r\n\r\n scope.fd.setFormat(); \r\n //find object\r\n\t\t\t \r\n scope.fd.showProperties = function()\r\n {\r\n scope.localVars.showFieldProperties = true;\r\n scope.gsrvc.setFieldProperties(scope.fd,scope.inputArray);\r\n }; \r\n \r\n scope.fd.setSystemDate=function()\r\n\t\t {\r\n if (scope.fd.UseSystemDate) {\r\n if (scope.formData !=undefined && scope.formData.length>0) {\r\n scope.formData[0][scope.fd.FieldName]=new Date();\r\n }\r\n } \r\n }\r\n \r\n \r\n \r\n if (scope.formData !=undefined && scope.formData.length>0)\r\n {\r\n if (scope.formData[0][scope.fd.FieldName]!= null && scope.formData[0][scope.fd.FieldName]!=\"\") {\r\n scope.formData[0][scope.fd.FieldName] = new Date (scope.formData[0][scope.fd.FieldName]);\r\n }\r\n }\r\n \r\n scope.fd.SetDefault = function()\r\n {\r\n scope.fd.DefaultValue = {value:scope.formData[0][scope.fd.FieldName]};\r\n }\r\n \r\n if (scope.fd.UpdateWithDefault && !scope.fd.NoUpdate) scope.formData[0][scope.fd.FieldName] = new Date (scope.fd.DefaultValue?.value)\r\n if (scope.fd.UseSystemDate) scope.fd.setSystemDate();\r\n\r\n \r\n }\r\n };\r\n };\r\n\t\r\n\t\r\nfunction DatePickerCtrl2 ($scope) {\r\n\r\n\t$scope.CTRLNAME='DatePickerCtrl2';\r\n $scope.fd.localVars.search=[ /* MIGOR TODO - VIDJETI DA LI OVO TREBA zaKOMENTIRATI ILI NE */\r\n\t\t{id:1,filter:'gte',name:\"From \",icon:\"fa fa-chevron-right\"},\r\n\t\t{id:2,filter:'lte',name:\"To \",icon:\"fa fa-chevron-left\"},\r\n\t\t{id:3,filter:'eq',name:\"On \",icon:\"fa fa-bars\"}, // MIGOR TODO - vidjeti zasto se pokazuje na pocetku od datePicker2 kontrolera umjesto prvog\r\n\t\t{id:4,filter:'between',name:\"Between and \",icon:\"fa fa-expand\"}\r\n\t];\r\n \r\n if ($scope.fd.ParametersLang==undefined || $scope.fd.ParametersLang==null) $scope.fd.ParametersLang={};\r\n \r\n $scope.CTRL='datepicker2';\r\n \r\n $scope.refreshSearchValue = function() {\r\n if ($scope.fd.Search) $scope.fd.Search.value=$scope.fd.sItemValue; \r\n } \r\n \r\n\t $scope.applyDateFilters = function(index) {\r\n \r\n\t\t var i=$scope.fd.localVars.search.selected.id; \r\n\r\n\t\t if ($scope.fd.localVars.search.selected.id==4) \t$scope.fd.localVars.search.showSecondDate=true // if (scope.fd.search.name==\"Equals\") scope.fd.search=null;\r\n\t\t else $scope.fd.localVars.search.showSecondDate=false\r\n\t\t \t\t\r\n\t };\r\n\r\n $scope.today = function() {\r\n $scope.dt = new Date();\r\n };\r\n $scope.today();\r\n\r\n $scope.clear = function() {\r\n $scope.dt = null;\r\n };\r\n\r\n $scope.inlineOptions = {\r\n customClass: getDayClass,\r\n minDate: new Date(),\r\n showWeeks: true\r\n };\r\n\r\n $scope.dateOptions = {\r\n dateDisabled: disabled,\r\n formatYear: 'yy',\r\n minDate: new Date(),\r\n startingDay: 1\r\n };\r\n\r\n // Disable weekend selection\r\n function disabled(data) {\r\n var date = data.date,\r\n mode = data.mode;\r\n return mode === 'day' && (date.getDay() === 0 || date.getDay() === 6);\r\n }\r\n\r\n $scope.toggleMin = function() {\r\n $scope.inlineOptions.minDate = $scope.inlineOptions.minDate ? null : new Date();\r\n $scope.dateOptions.minDate = $scope.inlineOptions.minDate;\r\n };\r\n\r\n $scope.toggleMin();\r\n\r\n $scope.open1 = function() {\r\n $scope.popup1.opened = true;\r\n };\r\n\r\n $scope.open2 = function() {\r\n $scope.popup2.opened = true; //DatePickerCtrl2\r\n };\r\n \r\n $scope.applyDateFilters = function() {\r\n\t var sc=$scope;\r\n\t var t=sc.fd;\r\n\t\r\n $scope.popup2.opened = true;\r\n };\r\n \r\n\r\n $scope.setDate = function(year, month, day) {\r\n $scope.dt = new Date(year, month, day);\r\n };\r\n\r\n $scope.fd.formats = [{id:1,name:'dd-MMMM-yyyy HH:mm:ss:sss'}, {id:2,name:'yyyy/MM/dd HH:mm:ss:sss'}, {id:3,name:'dd.MM.yyyy HH:mm:ss:sss'}];\r\n $scope.fd.formatsTime = [{id:1,name:'HH:mm:ss'}, {id:2,name:'HH:mm:ss:sss'}, {id:2,name:'HH:mm'}];\r\n $scope.fd.formatsDate = [{id:1,name:'dd-MMMM-yyyy'}, {id:2,name:'yyyy/MM/dd'}, {id:3,name:'dd.MM.yyyy'}, {id:4,name:'shortDate'}];\r\n \r\n $scope.setFormat = function()\r\n {\r\n $scope.format=\"\";\r\n if ($scope.fd.ParametersLang.format1!=undefined && $scope.fd.ParametersLang.format1!=null){\r\n $scope.format = $scope.fd.ParametersLang.format1.name;\r\n }\r\n \r\n if ($scope.fd.ParametersLang.format2!=undefined && $scope.fd.ParametersLang.format2!=null)\r\n {\r\n if ($scope.format!=\"\") {\r\n $scope.format = $scope.format+\" \"+$scope.fd.ParametersLang.format2.name;\r\n } else {\r\n $scope.format = $scope.fd.ParametersLang.format2.name;\r\n }\r\n }\r\n \r\n if ($scope.format ==\"\") {\r\n $scope.format = $scope.formats[2];\r\n }\r\n }\r\n $scope.altInputFormats = ['M!/d!/yyyy'];\r\n\r\n $scope.popup1 = {\r\n opened: false\r\n };\r\n\r\n $scope.popup2 = {\r\n opened: false\r\n };\r\n\r\n var tomorrow = new Date();\r\n tomorrow.setDate(tomorrow.getDate() + 1);\r\n var afterTomorrow = new Date();\r\n afterTomorrow.setDate(tomorrow.getDate() + 1);\r\n \r\n $scope.events = [\r\n {\r\n date: tomorrow, status: 'full' },\r\n {\r\n date: afterTomorrow, status: 'partially' }\r\n ];\r\n\r\n function getDayClass(data) {\r\n var date = data.date,\r\n mode = data.mode;\r\n if (mode === 'day') {\r\n var dayToCheck = new Date(date).setHours(0,0,0,0);\r\n\r\n for (var i = 0; i < $scope.events.length; i++) {\r\n var currentDay = new Date($scope.events[i].date).setHours(0,0,0,0);\r\n\r\n if (dayToCheck === currentDay) {\r\n return $scope.events[i].status;\r\n }\r\n }\r\n }\r\n return '';\r\n }\r\n};\n'use strict';\n\nexport function ktDateExtendedProperties () {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktDateExtendedProperties.html',\n controller: function(CodesService,ResourcesDataService,$rootScope,ProcessingService){},\n link: function (scope, elem, attrs) {\n \n }\n }\n \n};\n'use strict';\n\nexport function ktDeleteElement () {\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktDeleteElement.html',\n link: function (scope, elem, attrs) {\n \n }\n };\n};\n'use strict';\r\n\r\nexport function ktDownload () {\r\n return {\r\n restrict: 'A',\r\n\t\t\r\n templateUrl: 'ktdirectivetemplates/ktDownload.html',\r\n controller: function($scope,$rootScope,GridsterService,WidgetDataExchangeService,UtilityService,ResourcesDataService){\r\n\t\t\t\t \r\n\t\t\t\r\n\t\t\t\t$scope.fd.localVars = {\r\n\t\t\t\t\tcalculateFunctions :[ {id:1,name:'sum'},{id:2,name:'mean'},{id:3,name:'min'},{id:4,name:'max'},{id:5,name:'count'} ] ,\r\n\t\t\t\t\tgsrvc: GridsterService\r\n\t\t\t\t} \r\n\r\n \r\n let w_actions=[\r\n {id:1,name:'download'},\r\n {id:2,name:'downloadWithParams'},\r\n \r\n ]\r\n\t\t\t\t\r\n \r\n\t\t\t\tif ($scope.fd.localVars==undefined) $scope.fd.localVars={}\r\n\t\t\t\t$scope.fd.localVars.resourceDefinition = $scope.resourceDefinition\r\n\t\t\t\t\r\n\t\t\t\t$scope.localVars = {gsrvc:GridsterService} //because kt-delete-element\r\n\t\t\t\r\n\t\t\t\tif ($scope.fd.localVars.parentResourceId==undefined) $scope.fd.localVars.parentResourceId = $scope.resourceDefinition.pageId ?? $scope.resourceDefinition.uid // if directly on page \r\n\r\n $scope.showProperties = function(event)\r\n {\r\n $scope.fd.localVars.gsrvc.setFieldProperties($scope.fd,event);\r\n }\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t //register widget \r\n\t\t\t\t var out_fields = ['resourceId']\r\n\t\t\t\t if ($scope.fd.UuidRef==undefined) $scope.fd.UuidRef=UtilityService.uuidv4()\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t var widgetDefinition = {\r\n\t\t\t\t\t DEI: [],\r\n\t\t\t\t\t\tactions: w_actions,\r\n\t\t\t\t\t\twidgetLabel: 'Download',\r\n\t\t\t\t\t\twidgetName: 'ktDownload',\r\n\t\t\t\t\t\twidgetId: $scope.fd.UuidRef,\r\n\t\t\t\t\t\ttask_initiate_id:$scope.taskInitiateId,\r\n\t\t\t\t\t\ttask_execute_id:$scope.taskExecuteId,\r\n\t\t\t\t\t\ttaskId: $scope.lTaskId,\r\n\t\t\t\t\t\tresource_id:$scope.resourceDefinition.page_state_id,\r\n\t\t\t\t\t\tresourceDefId : $scope.fd.Related, \r\n\t\t\t\t\t\toutput:out_fields,\r\n\t\t\t\t\t\tparentResourceId:$scope.fd.localVars?.parentResourceId\r\n\t\t\t\t\t}\r\n\t\t\t\t \r\n\t\t\t\t $scope.fd.localVars.localWidgetId = WidgetDataExchangeService.registerWidget(widgetDefinition);\r\n\t\t\t\t \r\n\t\t\t\t $scope.fd.localVars.localId=$scope.fd.localVars.localWidgetId;\r\n\t\t\t\t $scope.fd.LocalId=$scope.fd.localVars.localWidgetId;\r\n\t\t\t\t\r\n\t\t\t\t if ($scope.resourceDefinition.form_definition || true){\r\n ResourcesDataService.getResourceDefListByType($rootScope.globals.currentUser.lang,'file').then(\r\n function(data) { \r\n $scope.fd.localVars.listOfFileTypes = data.data;\r\n }\r\n ,function(error){ MessagingService.addMessage(error.msg,'error') }\r\n );\r\n }\r\n\t\t\r\n\t\t$scope.fd.localVars.convertToDropdownList = function (inputlist, uid)\r\n\t\t{\r\n\t\t\tfor (let i=0; i-1) temp.push($scope.dropdownItems[i]);\r\n }\r\n return angular.copy(temp);\r\n }\r\n }\r\n $scope.clear = function(ev)\r\n {\r\n if (!$scope.isMultiple){\r\n if (ev!=undefined) ev.preventDefault();\r\n $scope.clearOnly();\r\n }\r\n }\r\n \r\n \r\n /*\r\n $scope.clearMultiple = function()\r\n {\r\n \r\n $scope.formData[0][$scope.fd.FieldName] = null;\r\n $scope.fd.Search.value.length=0;\r\n }\r\n */ \r\n \r\n },\r\n scope:{\r\n \r\n dropdownItems:'=',\r\n dropdownId:'=',\r\n parentFormId:'=',\r\n searchText:'=',\r\n isMultiple:'=',\r\n selectedItems:'=?',\r\n onSelectFn:'&',\r\n clearFn: '&',\r\n selectItemFn:'&',\r\n loadItemsFn:'&',\r\n size:'=?',\r\n },\r\n \r\n link: function (scope, elem, attrs,ctrls) {\r\n \r\n scope.form = ctrls[0];\r\n scope.ngModel= ctrls[1];\r\n scope.selectedItem = null; //{id:null,name:scope.searchText};\r\n scope.clearCloseLink=\"Clear\";\r\n scope.search={};\r\n \r\n if (scope.dropdownItems!=undefined) scope.dropdownItemsFiltered = angular.copy(scope.dropdownItems.slice(0,50));\r\n \r\n scope.clearFn({theClearFn: scope.clearOnly});\r\n scope.selectItemFn({theSelectItemFn: scope.selectItem});\r\n scope.loadItemsFn({theLoadItemsFn: scope.loadItems});\r\n \r\n if (!scope.isMultiple)\r\n {\r\n if (scope.selectedItems!=\"\" && scope.selectedItems!=undefined && scope.selectedItems!=null) scope.selectedItem=scope.selectedItems;\r\n scope.ngModel.$setViewValue(scope.selectedItem); \r\n }else\r\n {\r\n scope.ngModel.$setViewValue(scope.selectedItems);\r\n }\r\n \r\n scope.showSearchInput = false;\r\n if (scope.isMultiple) scope.clearCloseLink=\"Close\";\r\n \r\n let dropdownShow = elem[0].getElementsByClassName(\"dropdown\");\r\n \r\n \r\n angular.element(dropdownShow).on(\"shown.bs.dropdown\", function(event){\r\n $timeout(function(){\r\n scope.showSearchInput = true;\r\n let elementId = scope.parentFormId+\".\"+scope.dropdownId+\"search\";\r\n let searchInput = document.getElementById(elementId);\r\n if (searchInput!=null) searchInput.focus();\r\n });\r\n });\r\n \r\n angular.element(dropdownShow).on(\"hidden.bs.dropdown\", function(event){\r\n $timeout(function(){\r\n scope.showSearchInput = false;\r\n \r\n });\r\n });\r\n \r\n $timeout(function(){\r\n scope.showSearchInput = false;\r\n \r\n });\r\n \r\n scope.isSelectedMultiple = function(item)\r\n {\r\n \r\n //let items = ngModel.$modelValue;\r\n if (item!=undefined)\r\n {\r\n if (item.id!=undefined)\r\n {\r\n let items = scope.ngModel.$modelValue;\r\n if (items!=undefined)\r\n {\r\n for (let i=0;i\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\t\r\n\t\t\t\t\t\t`\r\n\t\t\t\t\t\t\r\n\t\t\tvar KeyCodes = {\r\n\t\t\t\tBACKSPACE : 8,\tTABKEY : 9,\tRETURNKEY : 13,\tESCAPE : 27, SPACEBAR : 32,\tLEFTARROW : 37,\t\tUPARROW : 38,\t\tRIGHTARROW : 39,\tDOWNARROW : 40,\r\n\t\t\t};\r\n\r\n\t\t\t$scope.onKeydown = function( $event) {\r\n\t\t\t\t\r\n\t\t\t\t//console.log('onkeydown: '+ $event?.key)\r\n\t\t\t\t\t/*console.log($event.target)\r\n\t\t\t\r\n\t\t\t\t\tvar e = $event;\r\n\t\t\t\t\tvar $target = $(e.target);\r\n\t\t\t\t\tvar nextTab;\r\n\t\t\t\t\tswitch (e.keyCode) {\r\n\t\t\t\t\t\tcase KeyCodes.ESCAPE:\r\n\t\t\t\t\t\t\tif ( $scope.localVars.editMode) {\r\n\t\t\t\t\t\t\t\t$scope.switchMode( $event);\r\n\t\t\t\t\t\t\t\t $timeout(function () {\r\n\t\t\t\t\t\t\t\t\tconsole.log('fokusirao2!')\r\n\t\t\t\t\t\t\t\t\t\t$target.focus();\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase KeyCodes.UPARROW:\r\n\t\t\t\t\t\t\tnextTab = - 1;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase KeyCodes.RETURNKEY: e.preventDefault();\r\n\t\t\t\t\t\tcase KeyCodes.DOWNARROW:\r\n\t\t\t\t\t\t\tnextTab = 1;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (nextTab != undefined) {\r\n\t\t\t\t\t\t// do this outside the current $digest cycle\r\n\t\t\t\t\t\t// focus the next element by tabindex\r\n\t\t\t\t\t $timeout(() => $('[tabindex=' + (parseInt($target.attr(\"tabindex\")) + nextTab) + ']').focus());\r\n\t\t\t\t\t}\r\n\t\t\t\t\t*/\r\n\t\t\t};\r\n\r\n\r\n\t\t$element.on( \"keydown\", function(evt) {\r\n\t\t\t\r\n\t\t\tconsole.log( 'keydown, edit mode=' +$scope.localVars.editMode );\r\n\t\t\tconsole.log(evt);\r\n\t\t\tif (evt.key ==\"ArrowDown\" ) {\r\n\t\t\t\tconsole.log('arrowdown')\r\n\t\t\t\tdocument.activeElement.dispatchEvent(new KeyboardEvent(\"keypress\", { \tkey: \"Tab\" }))\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (evt.key ==\"Escape\" || evt.key ==\"Enter\" ) {\r\n\t\t\t\t$scope.switchMode(evt)\r\n\t\t\t\tdocument.getElementById('dropdownmultiple'+$scope.$id).focus({ focusVisible: true });\r\n\t\t\t\tconsole.log('fokusirao! dropdownmultiple'+$scope.$id)\r\n\t\t\t}\r\n\t\t\t \r\n\t\t});\r\n\t\t\r\n\t\t$scope.onFocus = function( $event) {\r\n\t\t\t// clear all other items\r\n\t\t\tconsole.log('onfocus ')\r\n\t\t\tconsole.log($event.target)\r\n\t\t if (! $scope.localVars.editMode) {\r\n\t\t\t console.log('focus switch to ' + $scope.localVars.editMode)\r\n\t\t }\r\n\t\t};\r\n\r\n\r\n\t\t\t\t$scope.generatebadges = (selectedItems) => {\r\n\t\t\t\t\tlet badges='
I
'\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\tlet badgeVisibility = $scope.localVars.editMode ? 'visible': 'hidden'\r\n\t\t\t\t\tif (selectedItems) selectedItems.forEach( (item) => {\t\r\n\t\t\t\t\t\tbadges = badges + `\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t ${item.name} \r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
`\r\n\t\t\t\t\t})\r\n\t\t\t\t\treturn badges\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\r\n $scope.clickItem = function(item,index)\r\n {\r\n\t\t\t\t\tif ( $scope.isSelected[item.id]) { // Remove from selected\r\n\t\t\t\t\t\t$scope.isSelected[item.id]= false\r\n let pos = $scope.selectedItems.map(function(e) { return e.id; }).indexOf($scope.dropdownItems[index].id);\r\n if (pos>=0) $scope.selectedItems.splice(pos,1); \t\r\n } else \r\n\t\t\t\t\t{ \t// add to selected\t\r\n\t\t\t\t\t\t$scope.isSelected[item.id]= true\r\n\t\t\t\t\t\t$scope.selectedItems.push({...item})\r\n }\t\r\n\t\t\t\t\t$scope.badgecontainer.innerHTML = $scope.generatebadges($scope.selectedItems)\r\n\t\t\t\t\t$scope.onSelectFn( {item: $scope.selectedItems, model: {}} ); \r\n // $scope.ngModel.$setViewValue($scope.selectedItems); \r\n }\r\n \r\n \r\n $scope.switchMode = function(event)\r\n { \r\n\t\t\t\t\t\r\n\t\t\t\t\t// clicked on x to remove badge element\r\n\t\t\t\t\tif (event.target.classList.contains('fa-times')) {\r\n\t\t\t\t\t\tevent.stopPropagation()\r\n\t\t\t\t\t\tvar pos = Array.prototype.indexOf.call(event.target.parentNode.parentNode.parentNode.parentNode.children, event.target.parentNode.parentNode.parentNode);//get index of clicked delete element\r\n\t\t\t\t\t\tif (pos>=0) {\r\n\t\t\t\t\t\t\tpos = pos-1 // ignore first badge which is static\r\n\t\t\t\t\t\t\tlet item_id = $scope.selectedItems[pos].id\r\n\t\t\t\t\t\t\t$scope.isSelected[item_id]= false\r\n\t\t\t\t\t\t\t$scope.selectedItems.splice(pos,1)\r\n\t\t\t\t\t\t\t$scope.badgecontainer.innerHTML = $scope.generatebadges($scope.selectedItems)\r\n\t\t\t\t\t\t\t$scope.onSelectFn( {item: $scope.selectedItems, model: {}} ); \r\n\t\t\t\t\t\t}\t\t\t\t\t\t\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\r\n if ($scope.localVars.editMode) //Close Edit MODE\r\n\t\t\t\t\t{ \r\n\t\t\t\t\t\t$scope.localVars.editMode = false;\r\n\t\t\t\t\t\t$element[0].getElementsByClassName('fa-angle-down')[0].style.visibility = 'visible';\r\n\t\t\t\t\t\t$element[0].getElementsByClassName('fa-angle-up')[0].style.visibility = 'hidden';\r\n\t\t\t\t\t\tfor (let el of $element[0].querySelectorAll('.removebadge')) el.style.visibility = 'hidden';\r\n\t\t\t\t\t\tif ($rootScope.globals?.dropdownMultipleOpenedScope == $scope.$id) \t$rootScope.globals.dropdownMultipleOpenedScope=null\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n else { //open EDIT mode\r\n\t\t\t\t\t\t$rootScope.globals.dropdownMultipleOpenedScope =$scope.$id\r\n\t\t\t\t\t\t$scope.localVars.editMode = true;\r\n\t\t\t\t\t\tfor (let el of $element[0].querySelectorAll('.removebadge')) el.style.visibility = 'visible';\r\n\t\t\t\t\t\t$element[0].getElementsByClassName('fa-angle-down')[0].style.visibility = 'hidden';\r\n\t\t\t\t\t\t$element[0].getElementsByClassName('fa-angle-up')[0].style.visibility = 'visible';\r\n\t\t\t\t\t\r\n\t\t\t\t\t}\r\n }\r\n \r\n $scope.getItemName = function(item)\r\n {\r\n \tlet name\r\n \tname=item.name\r\n \tif ($scope.showId) name = name +' ('+item.id+')'\r\n\r\n \treturn name\r\n } \r\n\t\t\t\t\r\n $scope.selectItemsOnLoad = function()// TODO - vidjeti da li se koristi\r\n {\r\n debugger \r\n let pos;\r\n if ($scope.selectedItems!=undefined) {\r\n for(let j=0;j<$scope.selectedItems.length;j++){\r\n pos = $scope.dropdownItems.map(function(e) { return e.id; }).indexOf($scope.selectedItems[j].id); \r\n //if found (almost) identical object - replace it WITH newer version\r\n if (pos>=0 && $scope.dropdownItems[pos].id!=null){\r\n $scope.dropdownItems[pos] = $scope.selectedItems[j] \r\n } \r\n } \r\n } \r\n };\r\n\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t$element.append($compile(dropdownTemplate)($scope));\r\n \r\n\t\t\t\t\r\n\t\t\t\tif (!document.body.hasAttribute('listener')) //This function is only active in first ktDropdownMultiple on the page, but important for all ktdropdownmultiples!\r\n\t\t\t\t{\t\t\t\r\n\t\t\t\t\tdocument.body.setAttribute('listener', $scope.$id)\t\r\n\t\t\t\t\t\r\n\t\t\t\t\tdocument.addEventListener('click', // Check if clicked outside dropdown --> close it\r\n\t\t\t\t\t\tfunction(e){\r\n\t\t\t\t\t\t\tvar openedScope = $rootScope.globals?.dropdownMultipleOpenedScope\r\n\t\t\t\t\t\t\tvar openedDropdown = document.getElementById(\"dropdownmultiple\" + openedScope ) \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif ( openedDropdown && !openedDropdown?.parentNode.contains(e.target) ) //is click outside dropdown ?\r\n\t\t\t\t\t\t\t{ \r\n\t\t\t\t\t\t\t\t//debugger\r\n\t\t\t\t\t\t\t\topenedDropdown.getElementsByClassName('fa-angle-down')[0].style.visibility = 'visible';\r\n\t\t\t\t\t\t\t\topenedDropdown.getElementsByClassName('fa-angle-up')[0].style.visibility = 'hidden';\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tfor (let el of openedDropdown.querySelectorAll('.removebadge')) el.style.visibility = 'hidden';\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tvar otherscope = $rootScope.globals?.scopes?.[openedScope]\r\n\t\t\t\t\t\t\t\tif (otherscope) {\r\n\t\t\t\t\t\t\t\t\totherscope.$evalAsync( ()=> {otherscope.localVars.editMode=false });\r\n\t\t\t\t\t\t\t\t\totherscope.$digest();\r\n\t\t\t\t\t\t\t\t }\t\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t})//click\r\n\t\t\t\t}\r\n\t\t\t\t\r\n },\r\n \r\n\t\t\t\r\n scope:\t{\r\n\t\t\t\tdropdownItems:'=',\r\n\t\t\t\tdropdownId:'=',\r\n\t\t\t\tparentFormId:'=',\r\n\t\t\t\tsearchText:'=',\r\n\t\t\t\tselectedItems:'=?',\r\n\t\t\t\trequiredField:'=?',\r\n\t\t\t\tonSelectFn:'&',\r\n\t\t\t\toptionsFn: '=?',\r\n\t\t\t\tselectItemFn:'&',\r\n\t\t\t\tloadItemsFn:'&',\r\n\t\t\t\tsetItemFn:'&',\r\n\t\t\t\tsize:'=?',\r\n\t\t\t\tshowId:'=?',\r\n\t\t\t\tmodelType:'=?',\r\n\t\t\t\tcustomStyleItems:'=?',\r\n\t\t\t\tfieldElement:'=?'\r\n },\r\n \r\n link: function (scope, elem, attrs, ctrls) {\r\n scope.badgecontainer = elem[0].getElementsByClassName(\"badgecontainer\")[0]\r\n scope.form = ctrls[0];\r\n scope.ngModel= ctrls[1];\r\n scope.selectedItem = null; //{id:null,name:scope.searchText};\r\n \r\n\r\n if (!Array.isArray(scope.selectedItems)) scope.selectedItems=[]\r\n\t\t\t\r\n\r\n //For DOM -> model validation\r\n scope.ngModel.$parsers.unshift(function(value) {\r\n let valid = true\r\n if (scope.requiredField) {\r\n if (value?.length===0) valid = false\r\n }\r\n \r\n scope.ngModel.$setValidity('required', valid);\r\n return valid ? value : undefined;\r\n });\r\n\r\n //For model -> DOM validation\r\n scope.ngModel.$formatters.unshift(function(value) {\r\n let valid = true\r\n if (scope.requiredField) {\r\n if (value?.length===0) valid = false\r\n }\r\n scope.ngModel.$setValidity('required', valid);\r\n return value;\r\n });\r\n\r\n \r\n\r\n scope.clearSelectedItems = function() //\tTODO - vidjeti da li se koristi\r\n { \r\n scope.selectedItems = [];\r\n scope.badgecontainer.innerHTML = scope.generatebadges(scope.selectedItems)\r\n //set ngModel to null\r\n //$scope.ngModel.$setViewValue(null); \r\n }\r\n scope.optionsFn = {clearItems: scope.clearSelectedItems};\r\n scope.selectItemFn({theSelectItemFn: scope.selectItem});\r\n scope.loadItemsFn({theLoadItemsFn: scope.loadItems});\r\n scope.setItemFn({theSetItemFn: scope.setItem});\r\n\t\t\t\t\r\n \r\n\t\t\t scope.$watch('selectedItems',function(newValue,oldValue){\r\n \r\n\t\t\t\t//debugger\t\r\n\t\t\t\t\tif (scope.isSelected==undefined) \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tscope.isSelected={}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tscope.badgecontainer.innerHTML = scope.generatebadges(newValue)\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\tif (newValue) newValue.forEach\r\n\t\t\t\t\t\t\t(item => {\t\r\n\t\t\t\t\t\t\t\tscope.isSelected[item.id] = true \r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t })\r\n\t\t\t \r\n // FOR TEST ONLY !!\r\n\t\t\t /*\r\n\t\t\t scope.$watch('dropdownItems',function(newValue,oldValue){\r\n\t\t\t\t\t//debugger\r\n\t\t\t\t\t if (newValue==undefined) return\r\n\t\t\t\t\t scope.isSelected={}\r\n\t\t\t\t\t scope.selectedItems=[]\r\n\t\t\t\t\t let sid = scope.$id \r\n\t\t\t\t\t scope.badgecontainer.innerHTML = scope.generatebadges(scope.selectedItems)\r\n }) \r\n */ \r\n }\r\n }\r\n \r\n};\n'use strict';\r\n\r\nexport function ktDropdownStandard ($timeout, $rootScope, UtilityService) {\r\n\r\n return {\r\n restrict: 'EA',\r\n require:['^form','ngModel'],\r\n templateUrl: 'ktdirectivetemplates/ktDropdownStandard.html',\r\n controller: function($scope,$element,$timeout,$rootScope, UtilityService)\r\n {\r\n if ($scope.isMultiple==undefined) $scope.isMultiple = false \r\n $scope.CTRL='ktDropdownStandard';\r\n $scope.search={searchFilter:''};\r\n $scope.model = {\r\n selectedItems: {},\r\n deletedItems: []\r\n };\r\n\t\t\t\t\t\r\n\t\t\r\n if ($scope.dropdownItems==undefined) $scope.dropdownItems=[]; \r\n $scope.editMode=false;\r\n\r\n\r\n $scope.$watch(\"selectedItems\",function(newValue,oldValue){ // z parametra \"selectedItems\" puni selectedItems objekt iz dropdown elemenata - defaultna vrijednost //TODO - VIDJETI DA LI OVO TREBA UOPCE\r\n if (newValue!==undefined && (oldValue?.id != newValue?.id) ) {\r\n\t\t\t\t\t\t\t//debugger //ktdropdownstandard selectedItems \r\n $scope.selectItemsOnLoad()\r\n } \r\n });\r\n \r\n\r\n $scope.selectItem = function() {\r\n\t\t\t\t\t\t//debugger //ktDropdownStandard //selectItem \r\n if ($scope.isMultiple==false){\r\n\r\n\t\t\t\t\t\t\tif ($scope.model?.id==\"\" ) { // if manually selected 'none' item (first item)\r\n\t\t\t\t\t\t\t\t $scope.model.selectedItems=null;\r\n\t\t\t\t\t\t\t\t $scope.ngModel.$setViewValue( $scope.model.id );\r\n\t\t\t\t\t\t\t} else if ($scope.model?.id==undefined ) {\t\r\n\t\t\t\t\t\t\t if ($scope.model?.selectedItems?.id) {\r\n\t\t\t\t\t\t\t\t $scope.model.id = $scope.model.selectedItems.id\r\n\t\t\t\t\t\t\t } \r\n\t\t\t\t\t\t\t \r\n } else {\r\n let pos = $scope.dropdownItems.map(function(e) { return e.id; }).indexOf($scope.model.id);\r\n if (pos>=0 && $scope.dropdownItems[pos].id!=null){\r\n $scope.model.selectedItems = angular.copy($scope.dropdownItems[pos])\r\n }\r\n\t\t\t\t\t\t\t\t\r\n $scope.ngModel.$setViewValue($scope.model.selectedItems);\r\n } \r\n } else { \r\n\t\t\t\t\t\t\t//if multiple\r\n\t\t\t\t\t\t\t if ($scope.model.selectedItems==null || $scope.model.selectedItems==undefined || !Array.isArray($scope.model.selectedItems)) $scope.model = {selectedItems:[]};\r\n\t\t\t\t\t\t\t $scope.ngModel.$setViewValue($scope.model.selectedItems); \r\n }\r\n\t\t\t\t\t\t\r\n $scope.onSelectFn({item:$scope.model.selectedItems , model:$scope.ngModel}); \r\n }\r\n \r\n $scope.setItem = function(item) // Externaly called\r\n {\r\n if (item.id!=undefined && item.id==null) $scope.model.selectedItems=item.id;\r\n else $scope.model.selectedItems=item; \r\n }\r\n \r\n \r\n \r\n $scope.removeItem = function(index)\r\n {\r\n //debugger\r\n $scope.model.deletedItems.push($scope.model.selectedItems[index]);\r\n $scope.model.selectedItems.splice(index,1);\r\n $scope.ngModel.$setViewValue($scope.model.selectedItems); \r\n \r\n }\r\n \r\n $scope.clearOnly = function()\r\n {\r\n //debugger\r\n \r\n let sel = $element[0].getElementsByTagName('select')\r\n sel[0].focus() \r\n\r\n $scope.model.id = null\r\n //set ngModel to null\r\n $scope.ngModel.$setViewValue(null)\r\n $scope.ngModel.$touched = true\r\n \r\n }\r\n \r\n \r\n $scope.loadItems = function(items) //Externally called\r\n {\r\n if (items!=undefined)\r\n {\r\n $scope.dropdownItems = items;\r\n if ($scope.search.searchFilter!=undefined && $scope.search.searchFilter!=\"\") $scope.dropdownItemsFiltered = $scope.filterItems();\r\n else $scope.dropdownItemsFiltered = angular.copy($scope.dropdownItems.slice(0,50));\r\n } \r\n }\r\n \r\n\t\t\t\t\r\n $scope.setEditMode = function(value)\r\n {\r\n $scope.editMode = value;\r\n if (!value)\r\n { \r\n for (let i = 0;i<$scope.model.deletedItems.length;i++)\r\n $scope.model.selectedItems.push($scope.model.deletedItems[i]); \r\n }\r\n \r\n $scope.model.deletedItems.length=0;\r\n }\r\n \r\n $scope.acceptChanges = function()\r\n {\r\n $scope.editMode = false;\r\n $scope.model.deletedItems.length=0;\r\n }\r\n \r\n $scope.selectItemsOnLoad = function() // fill \"model.selectedItems\" from props\r\n {\r\n let pos;\r\n //debugger //selectItemsOnLoad\r\n\t\t\t\t $scope.dropdownItems.sort(UtilityService.getSortMethod(['aname'], $rootScope.globals?.currentUser?.langObj?.Code ))\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n if ( $scope.isMultiple==false ) {\r\n if ( $scope.dropdownItems && $scope.dropdownItems.length>0) {\r\n pos = $scope.dropdownItems.map(function(e) { return e.id; }).indexOf($scope.selectedItems?.id);\r\n\t\t\t\t\t\t\t\t\r\n if (pos>=0 && $scope.dropdownItems[pos].id != null) { \r\n $scope.model.selectedItems = $scope.dropdownItems[pos];\r\n $scope.model.id = $scope.dropdownItems[pos].id;\r\n }\r\n else {\r\n\t\t\t\r\n $scope.model.selectedItems = undefined\r\n\t\t\t\t\t\t\t\t\t$scope.model.id = undefined \t\t\t\t\t\t\t\t\t\r\n }\r\n } \r\n }\r\n\t\t\t\t\t\r\n\t\t\t\t\tif ($scope.isMultiple) {\r\n $scope.model.selectedItems=[];\r\n for(let j=0;j<$scope.selectedItems.length;j++) {\r\n if ($scope.selectedItems[j]!==null && $scope.dropdownItems!==undefined && $scope.dropdownItems.length>0) {\r\n\t\t\t\t\t\t\t\t\t pos = $scope.dropdownItems.map(function(e) { return e.id; }).indexOf($scope.selectedItems[j].id);\r\n\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\tif (pos>=0 && $scope.dropdownItems[pos].id!=null){\r\n\t\t\t\t\t\t\t\t\t\t\t$scope.model.selectedItems.push($scope.dropdownItems[pos]);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tif ($scope.model.selectedItems.length==0) $scope.model.selectedItems = null;\r\n }\r\n }\r\n \r\n }\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n \r\n };\r\n \r\n \r\n },\r\n scope:{\r\n dropdownItems:'=',\r\n dropdownId:'=',\r\n parentFormId:'=',\r\n searchText:'=',\r\n isMultiple:'=',\r\n selectedItems:'=?',\r\n requiredField:'=?',\r\n onSelectFn:'&',\r\n clearFn: '&',\r\n selectItemFn:'&',\r\n loadItemsFn:'&',\r\n setItemFn:'&',\r\n size:'=?',\r\n showId:'=?',\r\n modelType:'=?',\r\n },\r\n \r\n link: function (scope, elem, attrs,ctrls) {\r\n \r\n scope.form = ctrls[0];\r\n scope.ngModel= ctrls[1];\r\n \r\n\t\t\t\t\r\n scope.clearFn({theClearFn: scope.clearOnly});\r\n scope.selectItemFn({theSelectItemFn: scope.selectItem});\r\n scope.loadItemsFn({theLoadItemsFn: scope.loadItems});\r\n scope.setItemFn({theSetItemFn: scope.setItem});\r\n \r\n scope.selectItemsOnLoad(); \r\n\r\n\t\t\t\t/*\r\n scope.isSelectedMultiple = function(item)\r\n { \r\n if (item!=undefined)\r\n {\r\n if (item.id!=undefined)\r\n {\r\n let items = scope.ngModel.$modelValue;\r\n if (items!=undefined)\r\n {\r\n for (let i=0;i2) $scope.relationshipType=2;\r\n\t\t\t\t\t\t\r\n $scope.colLength = ['col-lg-2','col-lg-4','col-lg-6','col-lg-8','col-lg-10','col-lg-12','col-lg-14','col-lg-16','col-lg-18','col-lg-20','col-lg-22','col-lg-24'];\r\n \r\n //$scope.fd.tItemValue = $scope.fd.formDef;\r\n //if (typeof $scope.fd.tItemValue==\"string\") $scope.fd.tItemValue=[]; \r\n\t\t $scope.fd.resourcesList=[];\r\n $scope.resourceListLength=0;\r\n $scope.fd.selectedDataset = 0;\r\n if ($scope.fd.related!=null) $scope.fd.selectedDataset = $scope.fd.related;\r\n\t\t\t\t\t// POPUNI LISTU DEFINICIJA OD RESURSA (RESOURCES LIST)\r\n\t\t\t\t\t$scope.fd.getResources = function(search) {\r\n\t\t\t\t\t\tvar lang=$rootScope.globals.currentUser.lang;\r\n ResourcesDataService.getResourceDefListByTypeFilter(lang,'dataset',search,$scope.fd.selectedDataset).then(\r\n\t\t\t\t\t\tfunction(data) {\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t $scope.fd.resourcesList = data.data;\r\n \r\n if ($scope.fd.related!=null)\r\n {\r\n $scope.resourceId = $scope.fd.related;\r\n $scope.resourceListLength = $scope.fd.resourcesList.length;\r\n //select dataset from dropdown\r\n var pos = $scope.fd.resourcesList.map(function(e) { return e.id; }).indexOf($scope.resourceId);\r\n\r\n if (pos>=0){\r\n $scope.selectedResource=$scope.fd.resourcesList[pos];\r\n $scope.localVars.isResourceSelected=true;\r\n $scope.localVars.pickButtonLabel=\"Choose \"+$scope.selectedResource.name+\" record...\";\r\n \r\n }\r\n \r\n if ($scope.resourceId != undefined) {\t\r\n $scope.fd.getResourceData();\r\n } \r\n } \r\n\t\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t\t\t\t\t\t });\r\n\t\t\t\t\t}\r\n\t\t\t\t \r\n\t\t\t\t //$scope.getResources();\r\n\t\t\t\t $scope.localVars.pickButtonClicked=false;\r\n\t\t\t\t $scope.resourceDataRecordSelected=false;\r\n\t\t\t\t \r\n\t\t\t\t \r\n \r\n\t\t\t\t\t\t// ******************* ZA GRID 1 \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t$scope.localVars.gridOptions.onRegisterApi = function (gridApi) {\r\n\t\t\t\t\t\t\t\t\t$scope.gridApi = gridApi;\r\n\t\t\t\t\t\t\t\t\t$scope.gridApi.grid.registerRowsProcessor($scope.fd.singleFilter, 200);\r\n\t\t\t\t\t\t\t\t\t $scope.gridApi.treeBase.on.rowExpanded(null, function(row) {\r\n\t\t\t\t\t\t\t\t\t\tupdatePagination(row.treeNode.children.length);\r\n\t\t\t\t\t\t\t\t\t });\r\n\t\t\t\t\t\t\t\t\t $scope.gridApi.treeBase.on.rowCollapsed(null, function(row) {\r\n\t\t\t\t\t\t\t\t\t\tupdatePagination(-row.treeNode.children.length);\r\n\t\t\t\t\t\t\t\t\t });\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tgridApi.selection.on.rowSelectionChanged($scope,function(row){\r\n\t\t\t\t\t\t\t\t\r\n // Ubaci odabrane u FD\r\n $scope.fd.Value=$scope.gridApi.selection.getSelectedRows().map( function (a) { return a.id; });\r\n\t\t\t\t\t\t\t \r\n // Ubaci odabrane u GRID2\r\n $scope.localVars.gridOptions2.data=$scope.gridApi.selection.getSelectedRows();\r\n // koliko ih je odabranih\r\n $scope.resourceDataRecordSelected=$scope.fd.Value.length; \r\n\t\t\t\t\t\t\t}); \r\n\t\t\t\t\t\t }\r\n \r\n\t\t\t\t\t\t// ******************* ZA GRID 2\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t$scope.localVars.gridOptions2.onRegisterApi = function (gridApi) {\r\n\t\t\t\t\t\t\t\t\t$scope.gridApi2 = gridApi;\r\n }\r\n \r\n function updatePagination(rowsDifference) {\r\n\t\t\t\t\t\t //updating pagination will trigger singleFilter where the height is being reset\r\n\t\t\t\t\t\t $scope.gridOptions.paginationPageSizes = [$scope.gridOptions.paginationPageSize + rowsDifference, 25, 50, 100, 500];\r\n\t\t\t\t\t\t $scope.gridOptions.paginationPageSize = $scope.gridOptions.paginationPageSize + rowsDifference;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t//you can name the function anything, I was doing global external filtering inside this, so just named this.\r\n\t\t\t\t\t\t$scope.fd.singleFilter = function(renderableRows) {\r\n\t\t\t\t\t\t\t$timeout(function() {\r\n\t\t\t\t\t\t\t var newHeight = ($scope.gridApi.grid.getVisibleRowCount() * 30) + 145;\r\n\t\t\t\t\t\t\t angular.element(document.getElementsByClassName('myGrid')[0]).css('height', newHeight + 'px');\r\n\t\t\t\t\t\t\t}, 10);\r\n\t\t\t\t\t\t\treturn renderableRows;\r\n\t\t\t\t\t\t }\r\n \r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// when PICK BUTTON pressed\r\n\t\t\t\t\t\t$scope.localVars.pickResourceData = function ()\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t//console.log($scope.resourceDataRecordSelected);\r\n\t\t\t\t\t\t\t$scope.localVars.pickButtonClicked=!$scope.localVars.pickButtonClicked;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif (!$scope.localVars.pickButtonClicked) { // RESOURCE_SELECTED stanje\r\n\t\t\t\t\t\t\t\t$scope.localVars.pickButtonLabel=\"Choose \"+$scope.selectedResource.name+\" record...\";\r\n\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif ($scope.localVars.pickButtonClicked) { //CHOOSE_RESOURCE stanje\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t$scope.localVars.pickButtonLabel='Click to finish';\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t }\r\n \r\n $scope.fd.getResourceDataRefresh = function (retValue) \r\n {\r\n var lang = $rootScope.globals.currentUser.lang;\r\n //ToDo ovo prebaciti sve u jedan API poziv??\r\n ResourcesDataService.getResourceDataWithRelated($scope.parentResourceDefId,$scope.resourceId,$scope.resourceRecordId,$scope.taskId,$scope.fd.itemId,lang).then(function(data) {\r\n $scope.formData[0]['Field'+$scope.fd.itemId] = data.m2m; \r\n $scope.setupGrid(data); \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t\t\t\t\t});\r\n \r\n }\r\n $scope.localVars.setupGrid= function(data)\r\n {\r\n $scope.localVars.gridOptions.data = data.data;\r\n \r\n $scope.localVars.gridOptions.columnDefs = data.columnsDef;\r\n $scope.localVars.gridOptions2.columnDefs = data.columnsDef;\r\n \r\n if ($scope.formData[0]['Field'+$scope.fd.itemId]!=undefined){\r\n for (var i=0;i<$scope.formData[0]['Field'+$scope.fd.itemId].length;i++)\r\n {\r\n var pos = $scope.localVars.gridOptions.data.map(function(e) { return e.id; }).indexOf($scope.formData[0]['Field'+$scope.fd.itemId][i]);\r\n\r\n if (pos>=0){\r\n //prebaci u grid 2\r\n $scope.localVars.gridOptions2.data.push(angular.copy($scope.gridOptions.data[pos]));\r\n \r\n //selektiraj odabrane\r\n $scope.fd.gridApi.grid.modifyRows($scope.localVars.gridOptions.data);\r\n $scope.fd.gridApi.selection.selectRow($scope.localVars.gridOptions.data[pos]);\r\n } \r\n \r\n }\r\n }\r\n\r\n \r\n $timeout(function(){\r\n $scope.restoreGridState();\r\n \r\n });\r\n }\r\n \r\n $scope.fd.getResourceData = function () \r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t// $scope.activity.activityMessage = ProcessingService.setActivityMsg('Downloading resource data for '+$scope.resourceId);\r\n\t\t\t\t\t\t\t\t var lang = $rootScope.globals.currentUser.lang;\r\n\t\t\t\t\t\t\t\t ResourcesDataService.getResourceData($scope.resourceId,$scope.taskId,lang).then(function(data) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$scope.localVars.setupGrid(data);\r\n \r\n\t\t\t\t\t\t\t\t\t\t\t },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t};\r\n \r\n \r\n \t\t $scope.fd.saveGridState= function() {\r\n var state = $scope.gridApi2.saveState.save();\r\n $scope.fd.gridState = state;\r\n MessagingService.addMessage(\"To make changes stick please save form\",'info');\r\n \r\n }\r\n \r\n $scope.restoreGridState= function() {\r\n if ($scope.fd.gridState!=null)\r\n {\r\n if ($scope.gridApi2!=undefined)\r\n {\r\n \r\n $scope.gridApi2.saveState.restore($scope,$scope.fd.gridState);\r\n \r\n }else\r\n {\r\n $timeout(function(){\r\n $scope.restoreGridState();\r\n });\r\n }\r\n }\r\n }\r\n \r\n \t\t\r\n\t\t\t\t\t// Resource is selected\r\n $scope.fd.onSelectCallback = function (item, model){\r\n var eventResultId=item.id;\r\n $scope.fd.selectedDatasetName=item.name;\r\n \r\n \r\n $scope.fd.selectedResource={name :item.name};\r\n //console.log(\"onSelectCallback :\" + $scope.eventResultName+ ' ' + eventResultId);\r\n $scope.localVars.pickButtonLabel=\"Choose \"+$scope.eventResultName+\" record...\";\r\n\t\t\t\t\t\t \r\n $scope.resourceId=eventResultId;\r\n $scope.localVars.isResourceSelected=true;\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\r\n if ($scope.resourceId != undefined) {\t\r\n \t\t$scope.fd.getResourceData();\r\n \t}\r\n \t$scope.fd.related=$scope.resourceId;\t\t\t\t\t\t\r\n } \r\n \r\n \r\n\t\t\t\t},//...controller\r\n\t\t\t\t\r\n templateUrl: 'ktdirectivetemplates/ktDynamicResource.html',\r\n link: function (scope, elem, attrs) {\r\n\t\t\t\t \r\n }\r\n \r\n }\r\n};\n'use strict';\n\nexport function ktEditCodes () {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktEditCodes.html',\n controller: function($scope,CodesService,ResourcesDataService,$rootScope,ProcessingService){ \n },\n link: function (scope, elem, attrs) {\n \n \n }\n }\n \n};\n'use strict';\r\n\r\nexport function ktExecuteSmartContract () {\r\n \r\n var controller = ['$scope', '$uibModal', '$stateParams','$state','$timeout','CodesService','ResourcesDataService','$rootScope','CODES_CONST','ProcessingService','MessagingService','GridsterService','TaskDataService','WidgetDataExchangeService','KatalyoStateManager','UtilityService','$templateCache','$compile','$element',\r\n function ($scope,$uibModal,$stateParams,$state,$timeout,CodesService,ResourcesDataService,$rootScope,CODES_CONST,ProcessingService,MessagingService,GridsterService,TaskDataService,WidgetDataExchangeService,KatalyoStateManager,UtilityService,$templateCache,$compile,$element) {\r\n \r\n $scope.localVarsWidget = {};\r\n //$scope.fd = {};\r\n $scope.localVarsWidget.searchFormDownloaded = false;\r\n $scope.localVarsWidget.formLoaded=false;\r\n $scope.localVarsWidget.src_type_text=CODES_CONST._POPULATE_TYPE_;\r\n $scope.localVarsWidget.animationsEnabled = true;\r\n $scope.localVarsWidget.widgetType = 3;\r\n $scope.gsrvc = GridsterService;\r\n $scope.localVarsWidget.formParams={formViewType:1,showGridNavigation:true};\r\n $scope.fd.contractDatasets = true;\r\n if ($scope.formData==undefined) $scope.formData={};\r\n if ($scope.formData[$scope.fd.PresentationId]==undefined) $scope.formData[$scope.fd.PresentationId]=[];\r\n \r\n $scope.localVarsWidget.datasetMapperType=0;\r\n \r\n if ($scope.fd.PopulateType==undefined) $scope.fd.PopulateType=\"\";\r\n \r\n $scope.localVarsWidget.openModal = function (size,template,ctrl,selectedType) {\r\n \r\n var modalInstance = $uibModal.open({\r\n animation: $scope.animationsEnabled,\r\n templateUrl: template,\r\n controller: ctrl,\r\n size: size,\r\n resolve: {\r\n selectedResourceItem: function () {\r\n return $scope.localVarsWidget.selectedResourceItem;\r\n },\r\n type: function () {\r\n return $scope.localVarsWidget.selectDatasetType;\r\n }\r\n }\r\n });\r\n modalInstance.result.then(function (selectedItem,windex,index) {\r\n \r\n if ($scope.localVarsWidget.selectDatasetType==1){\r\n $scope.localVarsWidget.selectedResourceItem = selectedItem;\r\n $scope.fd.Related = $scope.selectedResourceItem.relatedId;\r\n $scope.fd.PopulateType=selectedItem.src_type_id;\r\n $scope.fd.ParentElementId = $scope.selectedResourceItem.parentElementId;\r\n $scope.fd.PresentationId = $scope.selectedResourceItem.presentationId;\r\n $scope.localVarsWidget.getFormResourceOriginal();\r\n \r\n }else if ($scope.localVarsWidget.selectDatasetType==2)\r\n {\r\n $scope.localVarsWidget.selectedRelatedResourceItem = selectedItem;\r\n $scope.fd.HasParentDataset = $scope.selectedResourceItem.relatedId;\r\n $scope.fd.PopulateTypeParent=selectedItem.src_type_id;\r\n //$scope.fd.ParentElementId = $scope.selectedResourceItem.parentElementId;\r\n //$scope.fd.PresentationId = $scope.selectedResourceItem.presentationId;\r\n }\r\n \r\n }, function () {\r\n //$log.info('Modal dismissed at: ' + new Date());\r\n });\r\n \r\n };\r\n \r\n $scope.localVarsWidget.openModalSelectResource = function(){\r\n $scope.localVarsWidget.selectDatasetType = 1;\r\n $scope.localVarsWidget.openModal('lg','selectResourceModal.html','SelectResourceModalCtrl',$scope.localVarsWidget.selectDatasetType);\r\n \r\n };\r\n \r\n $scope.localVarsWidget.openModalSelectRelatedResource = function(){\r\n $scope.localVarsWidget.selectDatasetType = 2;\r\n $scope.localVarsWidget.openModal('lg','selectDatasetModal.html','SelectDatasetModalCtrl',$scope.localVarsWidget.selectDatasetType);\r\n };\r\n \r\n \r\n $scope.localVarsWidget.gridsterType=\"resource\";\r\n // $scope.gridsterOpts = GridsterService.getGridsterOptions();\r\n \r\n \r\n \r\n $scope.localVarsWidget.dashboard = {\r\n \t\t\t\tid: '1',\r\n \t\t\t\tname: 'Home',\r\n \t\t\t\twidgets: []\r\n } ;\r\n \r\n \r\n \r\n //$scope.taskId=$stateParams.id;\r\n $scope.taskId=$scope.resourceDefinition.ResourceDefId;\r\n if ($scope.taskId==undefined) $scope.taskId=$scope.resourceDefinition.ResourceDefId_id;\r\n if ($scope.taskId==undefined) $scope.taskId=0;\r\n $scope.localVarsWidget.taskId=$scope.taskId;\r\n $scope.fd.ParentDatasetDefId=$scope.fd.Related;\r\n $scope.prevTaskExeId = $scope.resourceDefinition.prev_task_id;\r\n $scope.localVarsWidget.formType=$scope.resourceDefinition.form_type;\r\n $scope.source_type=$scope.resourceDefinition.source_type;\r\n $scope.taskInitiateId = $scope.resourceDefinition.task_initiate_id;\r\n $scope.taskExecuteId = $scope.resourceDefinition.task_execute_id;\r\n $scope.formDefinition = $scope.resourceDefinition.form_definition;\r\n \r\n if ($scope.localVars == undefined) $scope.localVars= {} \r\n $scope.localVars.showMenu = false\r\n \r\n $scope.localVars.toggleDropdown = function(){\r\n $scope.localVars.showMenu = $scope.localVars.showMenu ? false: true \r\n }\r\n \r\n if ($scope.formDefinition==undefined) $scope.formDefinition=false;\r\n \r\n $scope.localVarsWidget.resourceRecordId=0;\r\n if ($scope.taskInitiateId==undefined)\r\n {\r\n $scope.taskInitiateId =0;\r\n \r\n }\r\n if ($scope.taskExecuteId==undefined)\r\n {\r\n $scope.taskExecuteId =0; \r\n }\r\n if ($scope.prevTaskExeId==undefined)\r\n {\r\n $scope.prevTaskExeId =0;\r\n }\r\n \r\n //register widget \r\n var out_fields = ['resourceId'];\r\n //if ($scope.fd.LocalId==undefined || $scope.fd.LocalId==null || $scope.fd.LocalId==0)\r\n //{\r\n var widgetDefinition = {DEI: [{'name':'resourceLink','value':[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:''}]}],actions: [{name:'PrepareData',status:false}],name: 'viewResourceWidget',widgetId: $scope.fd.PresentationId,task_initiate_id:$scope.taskInitiateId,task_execute_id:$scope.taskExecuteId,taskId: $scope.lTaskId,resourceDefId : $scope.localVarsWidget.selectedResource, output:out_fields, };\r\n $scope.localVarsWidget.localWidgetId = WidgetDataExchangeService.registerWidget(widgetDefinition);\r\n $scope.localVarsWidget.LocalId=$scope.localVarsWidget.localWidgetId;\r\n $scope.fd.LocalId=$scope.localVarsWidget.localWidgetId;\r\n //$scope.fd.LocalId=UtilityService.uuidNow();\r\n \r\n //}\r\n $scope.ksm = KatalyoStateManager;\r\n \r\n let update_presentation_id = function(data)\r\n {\r\n if (data[$scope.fd.LocalId]>0 && ($scope.fd.PresentationId==null || $scope.fd.PresentationId==0)) $scope.fd.PresentationId = data[$scope.fd.LocalId];\r\n //unsubscribe here later after implementing unsubscribe - ToDo\r\n \r\n }\r\n if ($scope.fd.PresentationId==0 || $scope.fd.PresentationId==null)\r\n {\r\n \r\n let dependent_field = $scope.fd.LocalId;\r\n let subscribedSubject = \"formDefinitionState\"+$scope.taskId+$scope.resourceDefinition.form_type;\r\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"formSaved\",update_presentation_id);\r\n \r\n } \r\n \r\n let apply_value = function(data)\r\n {\r\n let do_refresh=false;\r\n if (data!=undefined)\r\n {\r\n if (data != $scope.localVarsWidget.resourceRecordId)\r\n {\r\n if (typeof data ==='number') $scope.localVarsWidget.resourceRecordId= data;\r\n else if (Array.isArray(data))\r\n {\r\n if (data.length>0)\r\n {\r\n $scope.localVarsWidget.resourceRecordId= data[0].id \r\n }\r\n }else\r\n {\r\n $scope.localVarsWidget.resourceRecordId = data.id;\r\n }\r\n do_refresh = true;\r\n }\r\n }\r\n //get selectedRecord\r\n if ($scope.localVarsWidget.resourceRecordId == null) $scope.localVarsWidget.resourceRecordId=0;\r\n \r\n if ($scope.localVarsWidget.resourceRecordId>0 && do_refresh) $scope.localVarsWidget.getFormResourceWithData();\r\n \r\n \r\n };\r\n \r\n \r\n if ($scope.fd.Parameters==undefined) $scope.fd.Parameters={};\r\n \r\n if ($scope.fd.Parameters.RefreshOnIdChange)\r\n {\r\n \r\n //find \r\n //subscribe observer\r\n \r\n let dependent_field = \"Field\"+$scope.fd.PresentationId;\r\n let subscribedSubject = \"resourceidValueStateName\"+$scope.fd.Parameters.ResourceIdItemId+$scope.resourceDefinition.transaction_id;\r\n let subject = $scope.ksm.addSubject(subscribedSubject,null); \r\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",apply_value);\r\n let val = $scope.ksm.getState(subscribedSubject);\r\n $scope.localVarsWidget.resourceRecordId= val.id;\r\n \r\n //get selectedRecord\r\n if ($scope.localVarsWidget.resourceRecordId == null) $scope.localVarsWidget.resourceRecordId=0;\r\n \r\n if ($scope.localVarsWidget.resourceRecordId>0) $scope.localVarsWidget.getFormResourceWithData();\r\n }\r\n \r\n //subscribe observer\r\n if ($scope.fd.PopulateType.toString().substr(0,1)==\"4\")\r\n {\r\n /**********************************************************************\r\n ****************** Sync data with State manager **********************\r\n ***********************************************************************/\r\n /*\r\n $scope.itemValue = {val:null};\r\n \r\n let valueState= $scope.ksm.addSubject('datasetValueStateName'+$scope.fd.ItemId,$scope.itemValue.val);\r\n let valueStateName = valueState.subject.name;\r\n \r\n let value_changed = function(data)\r\n {\r\n valueState.subject.setStateChanges = data;\r\n valueState.subject.notifyObservers(\"valueChanged\");\r\n };\r\n \r\n let action_value_changed = $scope.ksm.addAction(valueStateName,\"valueChanged\",value_changed);\r\n \r\n */\r\n \r\n \r\n if ($scope.fd.SrcWidgetId!=undefined && $scope.fd.SrcWidgetId!=null)\r\n \r\n {\r\n \r\n let dependent_field = \"Field\"+$scope.fd.SrcWidgetId;\r\n // let subscribedSubject = $scope.fd.Parameters.SrcWidgetType+\"ValueStateName\"+$scope.fd.SrcWidgetId;\r\n let subscribedSubject = \"rlistValueStateName\"+$scope.fd.SrcWidgetId+$scope.resourceDefinition.transaction_id;\r\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",apply_value);\r\n \r\n } \r\n \r\n }\r\n \r\n let refresh_widget_data = function()\r\n \r\n {\r\n $scope.localVarsWidget.getFormResourceWithData(); \r\n \r\n }\r\n if ($scope.fd.Parameters.EventName!=undefined)\r\n {\r\n if ($scope.fd.Parameters.EventName!=\"\")\r\n {\r\n let dependent_field2 = \"Field\"+$scope.fd.PresentationId;\r\n let subscribedSubject2 = \"task\"+$scope.resourceDefinition.transaction_id;\r\n let observer2 = $scope.ksm.subscribe(subscribedSubject2,dependent_field2,$scope.fd.Parameters.EventName,refresh_widget_data);\r\n }\r\n }\r\n \r\n $scope.localVarsWidget.showProperties=function(datasetMapperType)\r\n {\r\n \r\n if ($scope.localVarsWidget.datasetMapperType==undefined)\r\n {\r\n $scope.localVarsWidget.datasetMapperType = datasetMapperType;\r\n }else\r\n {\r\n if ($scope.localVarsWidget.datasetMapperType==0 || $scope.localVarsWidget.datasetMapperType!=datasetMapperType) $scope.localVarsWidget.datasetMapperType = datasetMapperType;\r\n else $scope.localVarsWidget.datasetMapperType=0;\r\n }\r\n \r\n };\r\n \r\n $scope.localVarsWidget.setField = function(form,name,value,msg)\r\n {\r\n TaskDataService.setField(form,name,value);\r\n if (msg) MessagingService.addMessage(msg,'info');\r\n }; \r\n \r\n $scope.localVarsWidget.getResourceAll = function () {\r\n \r\n ResourcesDataService.getResourceDefAll($scope.fd.Related).then(function(data) {\r\n \r\n // MessagingService.addMessage(data.msg,'success');\r\n $scope.fd.resource = data.data;\r\n $scope.localVarsWidget.resourceLoaded = true;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n };\r\n $scope.localVarsWidget.getResourceAll();\r\n \r\n $scope.fd.loadBlockchainDataset = function (dataset) {\r\n \r\n if (dataset.DatasetId==undefined) dataset.DatasetId = {id:0}; \r\n $scope.fd.selectedDataset = dataset;\r\n if (dataset.DatasetId.id>0) $scope.localVarsWidget.getFormResourceOriginal(dataset.DatasetId.id);\r\n \r\n };\r\n $scope.fd.loadBlockchainFunction = function (func)\r\n {\r\n if (func.InputDatasetId==undefined) func.DatasetId = {id:0}; \r\n $scope.fd.selectedFunction = func;\r\n if (func.InputDatasetId.id>0) $scope.localVarsWidget.getFormResourceOriginal(func.InputDatasetId.id);\r\n }\r\n \r\n $scope.fd.executeBlockchainFunction = function (func)\r\n {\r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n //$scope.localVarsWidget.formLoading=true;\r\n let limit = 100;\r\n $scope.fd.datasetLoaded=false;\r\n $scope.fd.gridOptions.columnDefs=[];\r\n if ($scope.fd.BlockChainPrimaryKey==undefined) $scope.fd.BlockChainPrimaryKey=\"\";\r\n ResourcesDataService.executeBlockchainFunction($scope.fd.resource.Parameters.ContractId,$scope.fd.selectedFunction.FunctionName,$scope.formData[$scope.fd.PresentationId][0]).then(function(data) {\r\n \r\n MessagingService.addMessage(data.data,'success'); \r\n\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n \r\n });\r\n }\r\n $scope.localVarsWidget.getFormResourceOriginal = function(datasetId){\r\n var lang=$rootScope.globals.currentUser.lang;\r\n if ($scope.fd.PresentationId==null)\r\n {\r\n $scope.fd.PresentationId = 0;\r\n \r\n }\r\n $scope.localVarsWidget.formLoaded=false;\r\n ResourcesDataService.getResourceForm(datasetId,\"i\",lang).then(function(data) {\r\n \r\n $scope.localVarsWidget.resourceWidgetDefinition= data.data.resourceDefinition;\r\n if (Array.isArray(data.data.widgets)) $scope.localVarsWidget.dashboard.widgets.layout = data.data.widgets;\r\n \r\n if ($scope.localVarsWidget.selectedResourceItem!=undefined)\r\n { \r\n $scope.localVarsWidget.selectedResourceItem.name=$scope.localVarsWidget.resourceWidgetDefinition.name;\r\n $scope.localVarsWidget.selectedResourceItem.relatedId=$scope.fd.Related;\r\n $scope.localVarsWidget.selectedResourceItem.presentationId=$scope.fd.PresentationId;\r\n $scope.localVarsWidget.selectedResourceItem.src_type_id=$scope.fd.PopulateType;\r\n $scope.localVarsWidget.selectedResourceItem.src_type_text=$scope.localVarsWidget.src_type_text[$scope.fd.PopulateType];\r\n $scope.localVarsWidget.selectedResourceItem.parentElementId=$scope.fd.ParentElementId;\r\n }\r\n else{\r\n $scope.localVarsWidget.selectedResourceItem={'name':$scope.localVarsWidget.resourceWidgetDefinition.name,'relatedId':$scope.fd.Related, 'presentationId':$scope.fd.PresentationId ,'src_type_id':$scope.fd.PopulateType,'src_type_text':$scope.localVarsWidget.src_type_text[$scope.fd.PopulateType],'parentElementId':$scope.fd.ParentElementId};\r\n \r\n }\r\n $scope.fd.wItemValue=data.data.widgets;\r\n \r\n /*\r\n var container = $element.children().eq(0);\r\n GridsterService.setupDragular($scope.fd.wItemValue,container,'rows-'+$scope.fd.PresentationId,'row-'+$scope.localVarsWidget.gridsterType+'-hadle',true);\r\n */ \r\n \r\n //MIGOR - bitno - DOBIO RESOURCERECORD-ID ZA BROADCAST - ADD_RESOURCE WIDGET\r\n WidgetDataExchangeService.setData({widgetId:$scope.fd.PresentationId, DEI: [{'name':'resourceLink','value':[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:$scope.fd.ResourceRecordId}]}]});\r\n\t\t\t\t\t\t\r\n $scope.localVarsWidget.searchFormDownloaded = true;\r\n //$timeout(function(){$scope.localVarsWidget.formLoaded=true});\r\n $scope.localVarsWidget.formLoaded=true;\r\n \r\n // $scope.localVarsWidget.setField($scope.localVarsWidget.dashboard.widgets.layout,'ReadOnly',true); \r\n $scope.localVarsWidget.setField($scope.localVarsWidget.dashboard.widgets.layout,'Required',false); \r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n \r\n };\r\n $scope.fd.gridOptions = {\r\n \r\n showGridFooter: true,\r\n showColumnFooter: true,\r\n enableRowSelection: true,\r\n multiSelect: false,\r\n // enableHorizontalScrollbar : 1,\r\n // enableVerticalScrollbar : 2,\r\n enableFiltering: true,\r\n enableRowHeaderSelection: false,\r\n enableColumnResizing: true,\r\n enableColumnReordering: true,\r\n //useExternalPagination: false,\r\n paginationPageSizes: [10, 25, 50,100,200,500,1000,5000,10000],\r\n }\r\n $scope.fd.GetBlockchainDatasetRecords = function(){\r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n //$scope.localVarsWidget.formLoading=true;\r\n let limit = 100;\r\n $scope.fd.datasetLoaded=false;\r\n $scope.fd.gridOptions.columnDefs=[];\r\n if ($scope.fd.BlockChainPrimaryKey==undefined) $scope.fd.BlockChainPrimaryKey=\"\";\r\n ResourcesDataService.getBlockchainDatasetRecords($scope.fd.selectedDataset.DatasetId.id,$scope.fd.selectedDataset.DatasetName,$scope.fd.resource.Parameters.ContractId,limit,$scope.fd.BlockChainPrimaryKey,lang).then(function(data) {\r\n \r\n $scope.fd.datasetLoaded=true;\r\n \r\n $scope.fd.gridOptions.data = data.data.data.rows;\r\n \r\n //$scope.fd.gridOptions.columnDefs = data.data.columns;\r\n \r\n //$scope.localVarsWidget.formLoading=false;\r\n \r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }\r\n $scope.localVarsWidget.getFormResource = function(){\r\n var lang=$rootScope.globals.currentUser.lang;\r\n $scope.localVarsWidget.formLoaded=false;\r\n if ($scope.fd.PresentationId==null)\r\n {\r\n $scope.fd.PresentationId=0;\r\n \r\n }\r\n $scope.localVarsWidget.formLoading=true;\r\n \r\n ResourcesDataService.getResourceFormExtended($scope.fd.Related,$scope.taskId,$scope.localVarsWidget.formType,$scope.fd.PresentationId,\"w\",lang).then(function(data) {\r\n \r\n $scope.localVarsWidget.resourceWidgetDefinition= data.data.resourceDefinition;\r\n if (Array.isArray(data.data.widgets)) $scope.localVarsWidget.dashboard.widgets.layout = data.data.widgets;\r\n \r\n if ($scope.localVarsWidget.selectedResourceItem!=undefined)\r\n { \r\n $scope.localVarsWidget.selectedResourceItem.name=$scope.localVarsWidget.resourceWidgetDefinition.name;\r\n $scope.localVarsWidget.selectedResourceItem.relatedId=$scope.fd.Related;\r\n $scope.localVarsWidget.selectedResourceItem.presentationId=$scope.fd.PresentationId;\r\n $scope.localVarsWidget.selectedResourceItem.src_type_id=$scope.fd.PopulateType;\r\n $scope.localVarsWidget.selectedResourceItem.src_type_text=$scope.localVarsWidget.src_type_text[$scope.fd.PopulateType];\r\n $scope.localVarsWidget.selectedResourceItem.parentElementId=$scope.fd.ParentElementId;\r\n }\r\n else{\r\n $scope.localVarsWidget.selectedResourceItem={'name':$scope.localVarsWidget.resourceWidgetDefinition.name,'relatedId':$scope.fd.Related, 'presentationId':$scope.fd.PresentationId ,'src_type_id':$scope.fd.PopulateType,'src_type_text':$scope.localVarsWidget.src_type_text[$scope.fd.PopulateType],'parentElementId':$scope.fd.ParentElementId};\r\n \r\n }\r\n \r\n $scope.fd.wItemValue=data.data.widgets;\r\n \r\n \r\n \r\n $scope.localVarsWidget.searchFormDownloaded = true;\r\n \r\n $timeout(function(){ \r\n $scope.localVarsWidget.formLoaded=true;\r\n $scope.localVarsWidget.formLoading=false;\r\n });\r\n \r\n \r\n // $scope.localVarsWidget.setField($scope.localVarsWidget.dashboard.widgets.layout,'ReadOnly',true); \r\n $scope.localVarsWidget.setField($scope.localVarsWidget.dashboard.widgets.layout,'Required',false);\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.localVarsWidget.formLoading=false;\r\n \r\n \r\n });\r\n \r\n };\r\n \r\n \r\n $scope.localVarsWidget.getFormResourceWithData = function(){\r\n var lang=$rootScope.globals.currentUser.lang;\r\n $scope.localVarsWidget.formLoaded=false;\r\n if ($scope.fd.PresentationId==null || $scope.fd.PresentationId==undefined)\r\n {\r\n $scope.fd.PresentationId = 0;\r\n \r\n }\r\n \r\n if ($scope.fd.ParentElementId==null || $scope.fd.ParentElementId==undefined)\r\n {\r\n $scope.fd.ParentElementId = 0;\r\n \r\n }\r\n \r\n \r\n \r\n \r\n if ($scope.localVarsWidget.resourceRecordId==undefined || $scope.localVarsWidget.resourceRecordId==0)\r\n {\r\n \r\n if ($scope.localVarsWidget.previousTaskData['datasetRecordId']!=undefined && $scope.localVarsWidget.previousTaskData['datasetRecordId']!=\"\" && $scope.localVarsWidget.previousTaskData['datasetId']==$scope.fd.Related) $scope.localVarsWidget.resourceRecordId = $scope.localVarsWidget.previousTaskData['datasetRecordId'];\r\n \r\n }\r\n if (typeof $scope.localVarsWidget.resourceRecordId !=='number' && typeof $scope.localVarsWidget.resourceRecordId !=='string')\r\n {\r\n \r\n if (Array.isArray($scope.localVarsWidget.resourceRecordId))\r\n {\r\n if ($scope.localVarsWidget.resourceRecordId.length>0)\r\n {\r\n $scope.localVarsWidget.resourceRecordId= $scope.localVarsWidget.resourceRecordId[0].id \r\n \r\n }\r\n }\r\n else $scope.localVarsWidget.resourceRecordId = $scope.localVarsWidget.resourceRecordId.id; \r\n }\r\n \r\n ResourcesDataService.getResourceFormExtendedWithData($scope.fd.Related,$scope.taskInitiateId,$scope.taskExecuteId,$scope.fd.PopulateType,$scope.fd.ParentElementId,$scope.fd.PresentationId,$scope.prevTaskExeId,$scope.localVarsWidget.formType,$scope.localVarsWidget.widgetType,$scope.localVarsWidget.resourceRecordId,\"w\",lang).then(function(data) {\r\n\r\n $scope.formData[$scope.fd.PresentationId] = data.data.form_data;\r\n if ($scope.formData[$scope.fd.PresentationId]==undefined) $scope.formData[$scope.fd.PresentationId]=[];\r\n $scope.localVarsWidget.resourceWidgetDefinition= data.data.resourceDefinition;\r\n if (Array.isArray(data.data.widgets)) $scope.localVarsWidget.dashboard.widgets.layout = data.data.widgets;\r\n \r\n if ($scope.formData[$scope.fd.PresentationId].length>0)\r\n {\r\n $scope.localVarsWidget.resourceRecordId = $scope.formData[$scope.fd.PresentationId][0]['id'];\r\n }\r\n $scope.localVarsWidget.datasetRecordId=$scope.localVarsWidget.resourceRecordId;\r\n if ($scope.localVarsWidget.selectedResourceItem!=undefined)\r\n { \r\n $scope.localVarsWidget.selectedResourceItem.name=$scope.localVarsWidget.resourceWidgetDefinition.name;\r\n $scope.localVarsWidget.selectedResourceItem.relatedId=$scope.fd.Related;\r\n $scope.localVarsWidget.selectedResourceItem.presentationId=$scope.fd.PresentationId;\r\n $scope.localVarsWidget.selectedResourceItem.src_type_id=$scope.fd.PopulateType;\r\n $scope.localVarsWidget.selectedResourceItem.src_type_text=$scope.localVarsWidget.src_type_text[$scope.fd.PopulateType];\r\n $scope.localVarsWidget.selectedResourceItem.parentElementId=$scope.fd.ParentElementId;\r\n }\r\n else{\r\n $scope.localVarsWidget.selectedResourceItem={'name':$scope.localVarsWidget.resourceWidgetDefinition.name,'relatedId':$scope.fd.Related, 'presentationId':$scope.fd.PresentationId ,'src_type_id':$scope.fd.PopulateType,'src_type_text':$scope.localVarsWidget.src_type_text[$scope.fd.PopulateType],'parentElementId':$scope.fd.ParentElementId};\r\n \r\n }\r\n //$scope.fd.wItemValue=data.data.widgets;\r\n \r\n // $timeout(function() {\r\n $scope.localVarsWidget.formLoaded=true;\r\n // $scope.localVarsWidget.initiateFormLoaded=true;\r\n $scope.localVarsWidget.formLoading=false;\r\n $scope.localVarsWidget.searchFormDownloaded = true;\r\n \r\n // }); \r\n \r\n \r\n //MIGOR - bitno - DOBIO RESOURCERECORD-ID ZA BROADCAST - VIEW_RESOURCE WIDGET\r\n WidgetDataExchangeService.setData({widgetId:$scope.fd.PresentationId, DEI: [{'name':'resourceLink','value':[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:$scope.localVarsWidget.resourceRecordId}]}]});\r\n \r\n // $scope.localVarsWidget.setField($scope.localVarsWidget.dashboard.widgets.layout,'ReadOnly',true); \r\n $scope.localVarsWidget.setField($scope.localVarsWidget.dashboard.widgets.layout,'Required',false); \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n \r\n };\r\n \r\n \r\n $scope.localVarsWidget.setSelectedDataset = function(id) {\r\n \r\n if ($scope.localVarsWidget.selectedResourceItem==undefined) $scope.localVarsWidget.selectedResourceItem={};\r\n var pos = $scope.localVarsWidget.resourceList.map(function(e) { return e.id; }).indexOf(id);\r\n \r\n if (pos>=0){\r\n $scope.localVarsWidget.selectedResourceItem.id = $scope.localVarsWidget.resourceList[pos].id;\r\n $scope.localVarsWidget.selectedResourceItem.name = $scope.localVarsWidget.resourceList[pos].name;\r\n $scope.localVarsWidget.selectedDataset = $scope.localVarsWidget.resourceList[pos];\r\n $scope.localVarsWidget.selectedResourceItem.name_confirmed = $scope.localVarsWidget.selectedResourceItem.name +' ('+$scope.localVarsWidget.selectedResourceItem.id +')'\r\n $scope.localVarsWidget.selectedResourceItem_c=$scope.localVarsWidget.selectedResourceItem;\r\n }\r\n\t\t\t\t\t}\r\n \r\n \r\n // POPUNI LISTU DEFINICIJA OD RESURSA (RESOURCES LIST)\r\n\t$scope.localVarsWidget.getResources = function() {\r\n\t\t\t\t\t\t\r\n if ($scope.localVarsWidget.resourceList==undefined) $scope.localVarsWidget.resourceList=[];\r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n ResourcesDataService.getResourceDefListByType(lang,'smartcontract').then(\r\n\t\t\t\t\t\tfunction(data) {\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t $scope.localVarsWidget.resourceList = data.data;\r\n if ($scope.fd.Related!=null)\r\n {\r\n $scope.localVarsWidget.setSelectedDataset($scope.fd.Related);\r\n \r\n } \r\n\t\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t\t\t\t\t\t });\r\n\t\t\t\t\t}\r\n \r\n \r\n\r\n$scope.localVarsWidget.getPreviousTaskWidget = function(linkType)\r\n {\r\n var pTaskData;\r\n var pTaskDataRet = WidgetDataExchangeService.getPrevTaskData($scope.prevTaskExeId);\r\n if (Array.isArray(pTaskDataRet) && pTaskDataRet.length>0) pTaskData = pTaskDataRet[0];\r\n var datasetId=0,datasetRecordId=0;\r\n if (pTaskData!=undefined)\r\n {\r\n if (pTaskData.DEI!=undefined && pTaskData.DEI!=null)\r\n {\r\n for (var i=0;i=0) $scope.localVarsWidget.listOfConnectors[i].parentDatasetName = $scope.resourceList[p].name; \r\n }\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n \r\n \t\t\t\t\t\t\tif ($scope.fd.tItemValue==undefined || $scope.fd.tItemValue[0]==null) $scope.fd.tItemValue = []; \r\n\t\t\t\t\t\t\t// ovo je Kt-UPLOADER\r\n\t\t\t\t\t\t\t $scope.localVarsWidget.listOfConnectors= WidgetDataExchangeService.getRegisteredWidgets();//MIGOR - uzmi sve registrirane widgete\r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t //Brisi sve koji se vec nalaze u tItemValue\r\n\t\t\t\t\t\t\t if ($scope.localVarsWidget.listOfConnectors!=undefined) \r\n\t\t\t\t\t\t\t\t for (var i=0;i< $scope.fd.tItemValue.length ;i++) {\r\n\t\t\t\t\t\t\t\t\t\t for (var j=0;j< $scope.localVarsWidget.listOfConnectors.length;j++) {\r\n if ($scope.fd.tItemValue[i]!=null) {\r\n if ($scope.localVarsWidget.listOfConnectors[j].widgetId==$scope.fd.tItemValue[i].widgetId) {\r\n $scope.localVarsWidget.listOfConnectors.splice(j,1);//brisi lokalni\t\t\t\t \t\t\t\t\t \t\t\r\n }\r\n }\r\n }\r\n\t\t\t\t\t\t\t }\r\n //dodaj sa servera\r\n for (var i=0;i< $scope.fd.tItemValue.length ;i++) \r\n if ($scope.fd.tItemValue[i]!=null) \r\n $scope.localVarsWidget.listOfConnectors.push($scope.fd.tItemValue[i]);\t\t\r\n \r\n\r\n\t\t\t\t\t\t\t //Ostavi u listi konektora samo WIDGETE koji imaju \"ResourceID\" jer su to data widgeti\r\n\t\t\t\t\t\t\t var newlist=[];\r\n \r\n\t\t\t\t\t\t\t if ($scope.localVarsWidget.listOfConnectors!=undefined){\r\n \r\n for (var i=0;i< $scope.localVarsWidget.listOfConnectors.length;i++) {\r\n if ($scope.localVarsWidget.listOfConnectors[i].DEI!=undefined) \r\n for (var j=0;j< $scope.localVarsWidget.listOfConnectors[i].DEI.length;j++) {\r\n //ako DEI nije true/false - resetiraj na false\r\n if ( ($scope.localVarsWidget.listOfConnectors[i].DEI[j].value!=false) && ($scope.localVarsWidget.listOfConnectors[i].DEI[j].value!=true) ) $scope.localVarsWidget.listOfConnectors[i].DEI[j].value=false;\r\n //dodaj konektor u novu listu \r\n \r\n };\r\n newlist.push($scope.localVarsWidget.listOfConnectors[i]);\r\n }\r\n }//if\r\n\t\t\t\t\t\t\t $scope.localVarsWidget.listOfConnectors=newlist; //konacna lista NOVIH dataset konektora \r\n \r\n\t\t\t\r\n\t\r\n } //if showfileconnetor \r\n\t\t}; // open FILECONNECTOR - VIEW\r\n \r\n\r\n $scope.localVarsWidget.okWidgetConnector = function () {\r\n $timeout(function() {\r\n $scope.fd.tItemValue=$scope.localVarsWidget.listOfConnectors;\r\n $scope.localVarsWidget.showWidgetConnector=false; \r\n \r\n });\r\n };\r\n\r\n $scope.localVarsWidget.cancelWidgetConnector = function () {\r\n $timeout(function() {\r\n \r\n $scope.localVarsWidget.showWidgetConnector=false; \r\n \r\n });\r\n };\r\n\r\n \r\n $scope.localVarsWidget.processWidgetDependencies = function() { //----- \r\n if ($scope.fd.tItemValue!=undefined) \r\n for (var i=0;i< $scope.fd.tItemValue.length;i++) {\r\n var linkedWidgetId=$scope.fd.tItemValue[i].widgetId; // linkedWidgetId= WidgetDataExchangeService.getLocalWidgetId(linkedWidgetId);//MIGOR - moram dobiti localwidgetId od vezanog WidgetId \r\n var linkedItem = 'resourceLink' //var linkedItem = $scope.fd.tItemValue[i].name;\r\n \r\n if (linkedWidgetId!=undefined && linkedWidgetId!=null ) {\r\n for (var j=0;j<$scope.fd.tItemValue[i].DEI.length;j++) {\r\n if (($scope.fd.tItemValue[i].DEI[j].name==linkedItem) && ($scope.fd.tItemValue[i].DEI[j].value==true)) { //SCOPE.ON samo kad je DEI value = true\r\n var linkedItem = $scope.fd.tItemValue[i].DEI[j].name; \r\n //console.log(\"view \"+$scope.fd.PresentationId+\" se veze na serverski \" + linkedWidgetId); \r\n \r\n $scope.$on('Event'+linkedWidgetId+linkedItem,function(event, data){ //ide po svim vezanim widgetima i dodaj $scope.on //MIGOR TODO - DODATI SAMO U SLUCAJU DA JE DEI VALUE = TRUE !!!! <<<<<<<<<<<<< !!!!!!!!!\r\n \r\n // console.log(\"view \"+ $scope.fd.PresentationId+\" dobio event \" + event.name);\r\n for (var k=0;k0)\n {\n $scope.localVarsExecuteTask.taskDefinition.task_execute_id = $scope.localVarsExecuteTask.taskExecuteInstance[0].id;\n $scope.localVarsExecuteTask.taskDefinition.taskExecuteInstance=$scope.localVarsExecuteTask.taskExecuteInstance[0];\n \n }\n else\n {\n \n $scope.localVarsExecuteTask.taskDefinition.task_execute_id = 0;\n }\n \n if ($scope.localVarsExecuteTask.taskInitiateInstance.length>0)\n {\n $scope.localVarsExecuteTask.taskDefinition.task_initiate_id = $scope.localVarsExecuteTask.taskInitiateInstance[0].id;\n $scope.localVarsExecuteTask.taskDefinition.taskInitiateInstance=$scope.localVarsExecuteTask.taskInitiateInstance[0];\n \n }\n else\n {\n $scope.localVarsExecuteTask.taskDefinition.task_initiate_id = 0;\n \n }\n $scope.localVarsExecuteTask.taskDefinition.form_type=\"e\";\n \n if ($scope.localVarsExecuteTask.taskDefinition.TaskOutcomeHeadId_id==undefined || $scope.localVarsExecuteTask.taskDefinition.TaskOutcomeHeadId_id==null)\n {\n $scope.localVarsExecuteTask.taskDefinition.TaskOutcomeHeadId_id = 0;\n \n }\n \n $scope.$on('ExecuteTaskPostProcess'+ $scope.localVarsExecuteTask.taskDefinition.task_execute_id,function(event,data1){\n $scope.localVars.getTaskExecuteData($scope.localVarsExecuteTask.taskDefinition.task_initiate_id,$scope.localVarsExecuteTask.taskDefinition.task_execute_id);\n });\n $scope.$on('InlineTaskClosed',function(event,data){\n if (data==$scope.localVarsExecuteTask.taskId) $scope.localVars.executeTaskDataLoaded=false;\n });\n \n \n $scope.$on('RefreshData'+ $scope.localVarsExecuteTask.taskDefinition.task_execute_id,function(event,data2){\n \n $scope.localVars.getTaskExecuteData($scope.localVarsExecuteTask.taskDefinition.task_initiate_id,$scope.localVarsExecuteTask.taskDefinition.task_execute_id,data2);\n });\n \n /*\n $scope.$on('ExecuteTask'+$scope.localVarsExecuteTask.task_execute_id,function(event,data){\n $scope.localVars.ExecuteTask(data.form,data.outcomeId);\n });\n */ \n TaskDataService.GetTaskOutcomes($scope.localVarsExecuteTask.taskDefinition.ResourceDefId_id,$scope.localVarsExecuteTask.taskDefinition.TaskOutcomeHeadId_id,lang).then(function(data3) { \n \n $scope.localVarsExecuteTask.taskOutcomes = data3.data;\n \n \n $scope.localVars.executeTaskDataLoaded=true;\n \n \n \n },function(error){\n \n MessagingService.addMessage(error.msg,'error');\n });\n }\n \n $scope.localVars.getTaskExecuteData = function(initiate_id,execute_id,inData){\n var lang=$rootScope.globals.currentUser.lang;\n \n $scope.localVarsExecuteTask.task_initiate_id = initiate_id;\n \n \n $scope.localVarsExecuteTask.task_execute_id = execute_id;\n $scope.localVars.executeTaskDataLoaded=false; \n TaskDataService.preExecuteTask(initiate_id,execute_id,lang).then(function(data) {\n \n \n $scope.localVars.setTaskExecuteData(data); \n \n },function(error){\n \n \n MessagingService.addMessage(error.msg,'error');\n });\n \n };\n $scope.localVars.ExecuteTaskAction = function(action){\n \n \n var lang=$rootScope.globals.currentUser.lang;\n \n TaskDataService.ExecuteTaskAction($scope.localVarsExecuteTask.task_initiate_id,$scope.localVarsExecuteTask.task_execute_id,action,lang).then(function(data) {\n \n \n $scope.localVarsExecuteTask.taskInitiateInstance =data.data.data.taskInitiateInstance;\n $scope.localVarsExecuteTask.taskExecuteInstance =data.data.data.taskExecuteInstance;\n if ($scope.localVarsExecuteTask.taskExecuteInstance!=undefined)\n {\n $scope.localVarsExecuteTask.taskDefinition.task_execute_id = $scope.localVarsExecuteTask.taskExecuteInstance.id;\n \n }\n \n if (action==\"claim\")\n \n {\n $scope.localVars.pageChanged();\n $scope.localVarsExecuteTask.enableActions=true;\n $rootScope.$broadcast('RefreshData0',data.data.ret_value);\n \n }\n \n MessagingService.addMessage(data.data.msg,'success');\n \n \n },function(error){\n \n \n MessagingService.addMessage(error.msg,'error');\n });\n }\n \n \n \n $scope.localVars.ExecuteTask = function(form,outcomeId){\n \n \n var lang=$rootScope.globals.currentUser.lang;\n \n if (form.$submitted) $scope.localVars.setSubmitted(form);\n if (form.$valid) {\n \n \n TaskDataService.executeTask($scope.localVarsExecuteTask.task_execute_id,$scope.localVarsExecuteTask.dashboard.data,outcomeId,lang).then(function(data) {\n \n MessagingService.addMessage(data.data.msg,'success');\n $rootScope.$broadcast('ExecuteTaskPostProcess'+$scope.localVarsExecuteTask.task_execute_id,data.data.ret_value);\n },function(error){\n \n MessagingService.addMessage(error.msg,'error'); \n \n });\n \n } // if (isValid)\n else\n {\n MessagingService.addMessage(\"Please enter required data\",'warning');\n \n }\n }; \n \n $scope.localVars.setSubmitted = function (form) {\n form.$setSubmitted();\n angular.forEach(form, function(item) {\n if(item && item.$$parentForm === form && item.$setSubmitted) {\n $scope.localVars.setSubmitted(item);\n }\n });\n }; \n \n let template;\n if ($scope.formDefinition) template = $templateCache.get('ktdirectivetemplates/ktExecuteTaskWidget.html');\n else template = $templateCache.get('ktdirectivetemplates/ktExecuteTaskWidgetExe.html');\n \n $element.append($compile(template)($scope)); \n \n \n },\n link: function (scope, elem, attrs) {\n \n \n \n \n \n \n \n }\n } \n};\n'use strict';\r\n\r\nexport function ktFieldAdvancedProperties () {\r\n\r\n return {\r\n restrict: 'A',\r\n templateUrl: 'ktdirectivetemplates/ktFieldAdvancedProperties.html',\r\n controller: function($scope,CodesService,ResourcesDataService,$rootScope,ProcessingService){ \r\n \r\n $scope.CTRL=\"ktFieldAdvancedProperties\"\r\n \r\n if ($scope.fd?.localVars?.[$scope.fd.id]==undefined ) {\r\n\t\t\t\t\t\t//debugger\r\n\t\t\t\t\t\t$scope.fd.localVars[$scope.fd.id] = {}\r\n\t\t\t\t\t}\r\n\r\n $scope.fd.localVars[$scope.fd.id].addEvent=function()\r\n {\r\n if ($scope.fd.Parameters.events==undefined) $scope.fd.Parameters.events=[]\r\n $scope.fd.Parameters.events.push({actions:[]}) \r\n }\r\n\r\n $scope.fd.localVars[$scope.fd.id].delEvent = function(idx){\r\n $scope.fd.Parameters.events.splice(idx,1) \r\n }\r\n\r\n $scope.fd.localVars[$scope.fd.id].addAction=function(event)\r\n {\r\n if (event.actions==undefined) event.actions=[]\r\n event.actions.push({}) \r\n }\r\n\r\n $scope.fd.localVars[$scope.fd.id].insertAction=function(event,index)\r\n {\r\n if (event.actions==undefined) event.actions=[]\r\n event.actions.splice(index,0,{}) \r\n }\r\n $scope.fd.localVars[$scope.fd.id].delAction=function(event,index)\r\n {\r\n if (event.actions==undefined) event.actions=[]\r\n if (event.actions.length>index) event.actions.splice(index,1) \r\n }\r\n },\r\n link: function (scope, elem, attrs) {\r\n \r\n \r\n }\r\n }\r\n \r\n};\n'use strict';\n\nexport function ktFieldBasicProperties () {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktFieldBasicProperties.html',\n controller: function($scope,CodesService,ResourcesDataService,$rootScope,ProcessingService){ \n },\n link: function (scope, elem, attrs) {\n \n \n }\n }\n \n};\nexport function ktFieldBorderProperty () {\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktFieldBorderProperty.html',\n scope: {\n fd: '=',\n },\n controller: function($scope, $rootScope){\n $scope.CTRL=\"ktFieldBorderProperty\"\n if ($scope.fd.Parameters == undefined || $scope.fd.Parameters == null) $scope.fd.Parameters={};\n \n if ($scope.fd.Parameters.border == undefined || $scope.fd.Parameters.border == null )\n {\n \n $scope.fd.Parameters.border = {\n left: {\n name: 'Left',\n style:'solid',\n width:0,\n color:\"#000000\"\n },\n right: {\n name: 'Right',\n style:'solid',\n width:0,\n color:\"#000000\"\n } ,\n top:{\n name: 'Top',\n style:'solid',\n width:0,\n color:\"#000000\"\n },\n bottom:{\n name: 'Bottom',\n style:'solid',\n width:0,\n color:\"#000000\"\n }\n };\n }\n \n \n if ($scope.fd.Parameters.margin == undefined || $scope.fd.Parameters.margin == null) {\n $scope.fd.Parameters.margin= {\n left: { \n name: 'Left Margin',\n value: 0,\n units:\"px\",\n auto: true\n },\n right: { \n name: 'Right Margin',\n value: 0,\n units:\"px\",\n auto: true\n },\n top: { \n name: 'Top Margin',\n value: 0,\n units:\"px\",\n auto: true\n },\n bottom: { \n name: 'Bottom Margin',\n value: 0,\n units:\"px\",\n auto: true\n }, \n }\n }\n if ($scope.fd.Parameters.padding == undefined || $scope.fd.Parameters.padding == null){\n $scope.fd.Parameters.padding= {\n left: { \n name: 'Left Padding',\n value: 0,\n units:\"px\",\n auto: true\n },\n right: { \n name: 'Right Padding',\n value: 0,\n units:\"px\",\n auto: true\n },\n top: { \n name: 'Top Padding',\n value: 0,\n units:\"px\",\n auto: true\n },\n bottom: { \n name: 'Bottom Padding',\n value: 0,\n units:\"px\",\n auto: true\n },\n \n };\n }\n\n\n\n $scope.fd.select = function(selected){\n $scope.fd.selected=selected;\n }\n \n $scope.fd.selectBorder = function(selected){\n $scope.fd.selectedBorder=selected;\n }\n },\n link: function (scope, element, attr) {\n \n \n }\n }\n};\n'use strict';\n\nexport function ktFieldDataSourceProperties () {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktFieldDataSourceProperties.html',\n controller: function($scope,CodesService,ResourcesDataService,$rootScope,ProcessingService){\n \n },\n link: function (scope, elem, attrs) {\n \n \n \n \n }\n }\n \n};\n'use strict';\n\nexport function ktFieldExtendedProperties () {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktFieldExtendedProperties.html',\n controller: function($scope,CodesService,ResourcesDataService,$rootScope,ProcessingService){\n \n },\n link: function (scope, elem, attrs) {\n \n \n \n \n }\n }\n \n};\n'use strict';\n\nexport function ktFieldGeneralProperty () {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktFieldGeneralProperty.html',\n controller: function($scope,CodesService,ResourcesDataService,$rootScope,ProcessingService){ \n },\n link: function (scope, elem, attrs) {\n \n \n }\n }\n \n};\n'use strict';\n\nexport function ktFieldSizeProperty () {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktFieldSizeProperty.html',\n controller: function($scope,CodesService,ResourcesDataService,$rootScope,ProcessingService){ \n },\n link: function (scope, elem, attrs) {\n \n \n }\n }\n \n};\n'use strict';\n\nexport function ktFieldStyleProperty () {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktFieldStyleProperty.html',\n controller: function($scope,CodesService,ResourcesDataService,$rootScope,ProcessingService){ \n },\n link: function (scope, elem, attrs) {\n \n \n }\n }\n \n};\n'use strict';\r\n\r\nexport function ktFile () {\r\n return {\r\n restrict: 'A', \r\n\t\t\tcontroller: function ($scope, $rootScope,$element,ResourcesDataService,ProcessingService,$timeout,MessagingService,CODES_CONST,GridsterService,WidgetDataExchangeService,KatalyoStateManager,$q) {\r\n\t\r\n \r\n $scope.gsrvc = GridsterService;\r\n $scope.org_id = $rootScope.globals.currentUser.organisation.id;\r\n if ($scope.fd.localVars==undefined) $scope.fd.localVars={}; \r\n if ($scope.formData == undefined) $scope.formData=[{}];\r\n if ($scope.formData.length == 0) $scope.formData.push({});\r\n\r\n $scope.fd.localVars = {dashboard:{widgets:[]}}\r\n let newValueSingle,newValueMultiple;\r\n $scope.ctrl = this;\r\n \r\n $scope.fd.localVars.TablePrefix = 'resource'+$scope.fd.Related+'_'+$rootScope.globals.currentUser.organisation.id\r\n\r\n\r\n $scope.CTRLNAME='ktFile'\r\n\r\n if ($scope.fd.Parameters===undefined || $scope.fd.Parameters===null) $scope.fd.Parameters={}\r\n if ($scope.fd.Parameters.ResourceRelationshipType===undefined) $scope.fd.Parameters.ResourceRelationshipType='new'\r\n\r\n if ($scope.fd.MaxLength===undefined || $scope.fd.MaxLength===null) $scope.fd.MaxLength=1\r\n\r\n $scope.fd.localVars.formParams = {formViewType:1,showGridNavigation:true}\r\n\r\n if ($scope.fd.PresentationType==1)\r\n {\r\n $scope.setDropdownValue=function(theSelectItemFn)\r\n {\r\n $scope.setItemValueDropdown = theSelectItemFn;\r\n \r\n }\r\n $scope.setLoadDropdown = function(directiveFn) {\r\n $scope.loadDropdown = directiveFn;\r\n \r\n };\r\n $scope.setClearDropdown = function(directiveFn) {\r\n $scope.clearDropdown = directiveFn;\r\n }\r\n }\r\n $scope.fd.localVars.paginationOptions = {\r\n pageNumber: 1,\r\n pageSize: 10,\r\n sort: null\r\n };\r\n \r\n \r\n var widgetDefinition = {DEI: [{'name':'resourceLinkFile','value':[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:''}]}],actions: [{name:'PrepareData',status:false}],name: 'datasetListWidget',widgetId: $scope.fd.PresentationId,taskId: $scope.lTaskId,\r\n resourceDefId : $scope.fd.Related, //resourceDefId : $scope.selectedResource\r\n resourceRecordId:$scope.fd.localVars.resourceRecordId,task_initiate_id:$scope.resourceDefinition.task_initiate_id,task_execute_id:$scope.resourceDefinition.task_execute_id, output:null };\r\n $scope.fd.localVars.localWidgetId = WidgetDataExchangeService.registerWidget(widgetDefinition);\r\n \r\n $scope.ksm = KatalyoStateManager;\r\n \r\n $scope.populateValue = function(newValue)\r\n {\r\n if ($scope.fd.MaxLength!=1)\r\n {\r\n newValueMultiple = newValue;\r\n newValueSingle=\"\";\r\n }\r\n else\r\n {\r\n newValueMultiple = [];\r\n newValueSingle=newValue;\r\n }\r\n \r\n $scope.itemValue.val = newValue;\r\n if ($scope.fd.PresentationType==1 && $scope.setItemValueDropdown!=undefined) $scope.setItemValueDropdown(null,$scope.itemValue.val);\r\n $scope.formData[0][$scope.fd.FieldName] = $scope.itemValue.val;\r\n $scope.fd.Search.value = $scope.formData[0][$scope.fd.FieldName];\r\n $scope.ksm.executeAction(valueStateName,\"valueChanged\", newValue);\r\n if (newValue && $scope.setItemValueDropdown!=undefined) $scope.setItemValueDropdown(null,newValue);\r\n else if ($scope.clearDropdown!=undefined) $scope.clearDropdown();\r\n WidgetDataExchangeService.setData({\r\n DEI: [{name:'resourceLinkFile',value:[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:newValueSingle}\r\n ,{name:'resourceRecordIds',value:newValueMultiple},{name:'resourceRecordsAll',value:$scope.fd.localVars.datasetItems}]}],widgetId: $scope.fd.PresentationId,task_execute_id:$scope.taskExecuteId}); \r\n \r\n }\r\n\r\n $scope.fd.localVars.filesData = []\r\n \r\n /**********************************************************************/\r\n /***************** Get files for smart table ktFile *******************/\r\n /**********************************************************************/\r\n $scope.fd.localVars.getFiles= function(tableState, pageNumber,pageSize){\r\n\r\n\r\n //taskExecuteId: 0 taskInitiateId: 0\r\n let deferred = $q.defer(); \r\n\r\n $timeout(function(){\r\n\r\n $scope.resourceLoading=true;\r\n var lang=$rootScope.globals.currentUser.lang;\r\n var newPage\r\n \r\n \r\n if (pageNumber==undefined) pageNumber = $scope.fd.localVars.paginationOptions.pageNumber;\r\n if (pageSize==undefined) pageSize = $scope.fd.localVars.paginationOptions.pageSize;\r\n \r\n if ($scope.fd.localVars.filesData!==undefined) {\r\n $scope.fd.localVars.totalCount= $scope.fd.localVars.filesData?.length\r\n $scope.fd.localVars.paginationOptions.totalItemCount=$scope.fd.localVars.filesData?.length\r\n $scope.fd.localVars.paginationOptions.numberOfPages = Math.ceil($scope.fd.localVars.paginationOptions.totalItemCount/pageSize);\r\n }\r\n\r\n if ($scope.fd.localVars.totalCount>0){\r\n if (Math.ceil($scope.fd.localVars.totalCount/pageSize)0) local_data = state[0];\r\n else local_data = null;\r\n \r\n }\r\n else\r\n {\r\n local_data = state;\r\n }\r\n if ($scope.fd.localVars.datasetItems==undefined)\r\n {\r\n $scope.fd.refreshDatasetDataList(\"\",true,local_data);\r\n local_data=null;\r\n }\r\n else\r\n {\r\n let element1,element2;\r\n if ($scope.fd.Parameters.DependentFieldFilter!=\"\")\r\n {\r\n element1 = $scope.fd.Parameters.DependentFieldFilter;\r\n element2 = \"id\";\r\n }\r\n else\r\n {\r\n element1 = \"id\";\r\n element2 = $scope.fd.Parameters.DependentFieldElement;\r\n }\r\n let pos = $scope.fd.localVars.datasetItems.map(function(e) { return e[element1]; }).indexOf(local_data[element2]);\r\n\r\n if (pos>=0) local_data = $scope.fd.localVars.datasetItems[pos];\r\n else local_data = null;\r\n }\r\n }\r\n }\r\n $scope.populateValue(local_data);\r\n }\r\n }; \r\n \r\n if ($scope.fd.Parameters.DependentFieldId!=undefined && $scope.fd.Parameters.DependentFieldId!=null)\r\n \r\n {\r\n if ($scope.fd.Parameters.DependentFieldId!=\"\")\r\n {\r\n let dependent_field = $scope.fd.FieldName;\r\n let subscribedSubject = $scope.fd.Parameters.DependentFieldType+\"ValueStateName\"+$scope.fd.Parameters.DependentFieldId+$scope.resourceDefinition.transaction_id;\r\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",apply_value,true);\r\n let val = $scope.ksm.getState(subscribedSubject);\r\n $scope.populateValue(val.state);\r\n }\r\n }\r\n \r\n\r\n //**********************************************************\r\n // GET FORM FIELDS\r\n //********************************************************** \r\n \r\n $scope.fd.getFormFields = function(){\r\n \r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n \r\n ResourcesDataService.getFormFields($scope.fd.Related,lang).then(function(data) {\r\n \r\n $scope.fd.presentationElements= data.data;\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n \r\n });\r\n \r\n };\r\n\r\n /************ Get selected records for dropdown **************/\r\n $scope.fd.getDatasetList = function()\r\n {\r\n if ($scope.formData[0][$scope.fd.FieldName+'l']!=undefined && $scope.formData[0][$scope.fd.FieldName+'l'].length>0 && $scope.fd.PresentationId!=null && $scope.fd.PresentationId!=undefined)\r\n {\r\n ResourcesDataService.getResourceDataList($scope.fd.Related,$scope.fd.PresentationId,lang,{'id__in': $scope.formData[0][$scope.fd.FieldName+'l']}).then(function(data) {\r\n \r\n if ($scope.formData===undefined) $scope.formData = [{}];\r\n if ($scope.fd.MaxLength==1) $scope.formData[0][$scope.fd.FieldName] = data.data[0];\r\n else $scope.formData[0][$scope.fd.FieldName] = data.data;\r\n $scope.populateValue($scope.formData[0][$scope.fd.FieldName]);\r\n WidgetDataExchangeService.setSearch($scope.fd.PresentationId,$scope.taskExecuteId);\r\n //$scope.ksm.executeAction(valueStateName,\"valueChanged\", $scope.formData[0][$scope.fd.FieldName]);\r\n //$scope.itemValue.val = $scope.formData[0][$scope.fd.FieldName];\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n }\r\n \r\n \r\n \r\n $scope.$watch('itemValue.val',function(newValue,oldValue){\r\n if (newValue!=oldValue)\r\n {\r\n $scope.populateValue(newValue); \r\n \r\n }\r\n });\r\n \r\n \r\n $scope.fd.localVars.fileSelectionChanged = function(file){\r\n \r\n $scope.formData[0][$scope.fd.FieldName]=file;\r\n \r\n $scope.fd.localVars.fileSelected =file.isSelected\r\n \r\n $scope.fd.localVars.SelectedFile = file \r\n // count selected\r\n $scope.fd.localVars.resourceDataRecordSelected=$scope.formData[0][$scope.fd.FieldName].length; \r\n \r\n WidgetDataExchangeService.setData({\r\n DEI: [{name:'resourceLinkFile',value:[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:$scope.fd.localVars.SelectedFile.id},\r\n {name:'resourceRecordIds',value:file},{name:'resourceRecordsAll',value:$scope.fd.localVars.filesData}]}],\r\n widgetId: $scope.fd.PresentationId,task_execute_id:$scope.taskExecuteId});\r\n\r\n };\r\n\r\n $scope.search=[\r\n {id:1,filter:'onlist',name:\"On list:\",icon:\"fa fa-chevron-right\"},\r\n {id:2,filter:'notonlist',name:\"Not on list:\",icon:\"fa fa-expand\"},\r\n ];\r\n\t\t\t\t\r\n if ($scope.fd!=undefined) {\r\n if ($scope.fd.Search==undefined)\r\n {\r\n $scope.fd.Search=$scope.search[0]; //MIGOR TODO - greska kod incijacije za multiple , mozda treba kod promjene na multiple ovo jos jednom okinuti\r\n }\r\n } \r\n\r\n\t\t\t $scope.applySearchFilters = function(index) {\r\n \r\n\t\t\t\t $scope.fd.Search=$scope.search[index];\r\n $scope.fd.Search.value = [ $scope.formData[0][$scope.fd.FieldName] ];\r\n $scope.fd.isOpen=false;\t\t\r\n\t\t\t };\r\n \r\n \r\n $scope.src_type_text=CODES_CONST._POPULATE_TYPE_ \r\n \r\n \r\n var lang = $rootScope.globals.currentUser.lang;\r\n \r\n $scope.fd.localVars.isResourceSelected = false;\r\n \r\n\t\t\t\t$scope.fd.localVars.selectedDataRecord=false;\r\n \r\n\t\t\t\t$scope.taskId=0;\r\n \r\n \t\t\t \r\n\t\t\t\t\t \r\n\t$scope.fd.gridOptionsFile = {\r\n data:[],\r\n showGridFooter: false,\r\n showColumnFooter: false,\r\n enableRowSelection: true,\r\n multiSelect: false,\r\n enableHorizontalScrollbar : true, \r\n enableVerticalScrollbar : true,\r\n enableRowHeaderSelection: false, //false\r\n showHeader:true,\r\n enableColumnResizing: true,\r\n autoResize:true,\r\n minRowsToShow: 4,\r\n displayselectionCheckbox:false,\r\n enableGridMenu: true,\r\n }\r\n\t\t\t\t\t \r\n $scope.fd.RelationshipType = $scope.fd.MaxLength;\r\n \r\n\t\t\t\t\t\t\r\n if ( $scope.fd.localVars==undefined ) $scope.fd.localVars={}\r\n\r\n if ($scope.resourceDefinition!=undefined)\r\n {\r\n $scope.taskId=$scope.resourceDefinition.ResourceDefId;\r\n $scope.prevTaskExeId = $scope.resourceDefinition.prev_task_id;\r\n $scope.formType=$scope.resourceDefinition.form_type;\r\n $scope.source_type=$scope.resourceDefinition.source_type;\r\n $scope.taskInitiateId = $scope.resourceDefinition.task_initiate_id;\r\n $scope.taskExecuteId = $scope.resourceDefinition.task_execute_id;\r\n $scope.formDefinition = $scope.resourceDefinition.form_definition;\r\n \r\n \r\n \r\n }\r\n \r\n $scope.fd.gridsterType = \"resource\";\r\n \r\n $scope.fd.localVars.resourceDashboard = {\r\n \t\t\t\tid: '1',\r\n \t\t\t\tname: 'Home',\r\n \t\t\t\twidgets: [],\r\n data:{}\r\n\t\t\t\t} ;\r\n if ($scope.formDefinition==undefined) $scope.formDefinition=false;\r\n \r\n $scope.fd.resourceRecordId=0;\r\n if ($scope.taskInitiateId==undefined)\r\n {\r\n $scope.taskInitiateId =0;\r\n \r\n }\r\n if ($scope.taskExecuteId==undefined)\r\n {\r\n $scope.taskExecuteId =0;\r\n \r\n }\r\n if ($scope.prevTaskExeId==undefined)\r\n {\r\n $scope.prevTaskExeId =0;\r\n }\r\n if ($scope.fd.PresentationType==null)\r\n {\r\n $scope.fd.PresentationType = 0;\r\n }\r\n \r\n //$scope.fd.tItemValue = $scope.fd.FormDef;\r\n //if (typeof $scope.fd.tItemValue==\"string\") $scope.fd.tItemValue=[]; \r\n $scope.fd.resourcesList=[];\r\n $scope.fd.resourceListLength=0;\r\n $scope.fd.selectedFile = 0;\r\n //$scope.fd.selectedFileDropdown = 0;\r\n //if ($scope.fd.Related!=null) $scope.fd.selectedFile = $scope.fd.Related;\r\n\t\t\t\t\t\r\n \r\n \r\n $scope.setItemFn = function(directiveFn) {\r\n $scope.SetFileId = directiveFn;\r\n \r\n };\r\n \r\n $scope.fd.resourceDataRecordSelected=false;\r\n\t\t\t\t \r\n //*********************************************************************************************\r\n //************************************ GET FILE LIST ***************************************\r\n //*********************************************************************************************\r\n $scope.fd.localVars.getResources = function(search) {\r\n var lang=$rootScope.globals.currentUser.lang;\r\n ResourcesDataService.getResourceDefListByTypeFilter(lang,'file',search,$scope.fd.selectedFile).then(\r\n function(data) {\r\n \r\n $scope.fd.resourcesList = data.data;\r\n \r\n if (!Array.isArray($scope.fd.resourcesList)) $scope.fd.resourcesList=[]; \r\n \r\n if ($scope.fd.Related!=null)\r\n {\r\n $scope.fd.resourceId = $scope.fd.Related;\r\n $scope.fd.resourceListLength = $scope.fd.resourcesList.length;\r\n //select dataset from dropdown\r\n var pos = $scope.fd.resourcesList.map(function(e) { return e.id; }).indexOf($scope.fd.resourceId);\r\n\r\n if (pos>=0){\r\n $scope.fd.selectedResource=$scope.fd.resourcesList[pos];\r\n \r\n $scope.fd.isResourceSelected=true;\r\n $scope.fd.localVars.pickButtonLabel=\"Choose \"+$scope.fd.selectedResource.name+\" record...\";\r\n\r\n }\r\n \r\n }\r\n $scope.fd.RelatedLoaded=true;\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }; \r\n \r\n $scope.fd.localVars.downloadFile = function(fileId,fileName){\r\n ResourcesDataService.downloadFile($scope.fd.Related,fileId).then(function(data) {\r\n \r\n MessagingService.addMessage('File '+fileName+' downloaded','info');\r\n var url = URL.createObjectURL(new Blob([data.data]));\r\n var a = document.createElement('a');\r\n a.href = url;\r\n a.download = fileName;\r\n a.target = '_blank';\r\n a.click();\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n \r\n });\r\n };// dowload file END\r\n \r\n \r\n $scope.fd.localVars.previewFile = function(fileId,fileName,fileType){\r\n \r\n ResourcesDataService.downloadFile($scope.fd.Related,fileId).then(function(data) {\r\n \r\n var url = URL.createObjectURL(new Blob([data.data],{type:fileType}));\r\n let new_doc = window.open(url,\"_blank\");\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n \r\n });\r\n };// preview file END\r\n\r\n $scope.fd.getResourceDataRefresh = function (retValue) \r\n {\r\n var lang = $rootScope.globals.currentUser.lang;\r\n //ToDo ovo prebaciti sve u jedan API poziv\r\n if ($scope.resourceRecordId>0 && $scope.fd.MaxLength==0)\r\n {\r\n ResourcesDataService.getResourceDataWithRelated($scope.parentResourceDefId,$scope.resourceId,$scope.resourceRecordId,$scope.taskId,$scope.fd.ItemId,lang).then(function(data) {\r\n $scope.formData[0][$scope.fd.FieldName] = data; \r\n $scope.setupGrid(data); \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n\t\t\t \t\t\t\t\t});\r\n \r\n }\r\n }\r\n \r\n\r\n\r\n /* delete selected child record*/\r\n $scope.fd.localVars.deleteChildRecord = function()\r\n {\r\n var lang = $rootScope.globals.currentUser.lang;\r\n if ($scope.resourceRecordId>0 && $scope.fd.MaxLength==0 && $scope.fd.localVars.fileSelected)\r\n {\r\n \r\n ResourcesDataService.DeleteChildRelationship($scope.fd.PresentationId,$scope.parentResourceDefId,$scope.resourceRecordId,$scope.fd.localVars.SelectedFile[$scope.fd.localVars.TablePrefix+'_id']).then(function(data) {\r\n MessagingService.addMessage(data.data,'success');\r\n $scope.fd.localVars.filesData.length = 0\r\n $scope.fd.localVars.fileSelected = false\r\n $scope.fd.localVars.GetResourceDataForParent()\r\n },function(error){ \r\n MessagingService.addMessage(error.data,'error');\r\n });\r\n } \r\n }\r\n\r\n $scope.linkedWidgetId = 0;\r\n \r\n if ($scope.fd.Search!=undefined) $scope.linkedWidgetId = $scope.fd.Search.WidgetId;\r\n \r\n var refresh_list_from_callback=function(data)\r\n {\r\n $scope.fd.refreshDatasetDataList(\"\",true,$scope.lData);\r\n \r\n }\r\n \r\n $scope.fd.refreshDatasetDataList = function(search,apply,val)\r\n {\r\n var lang = $rootScope.globals.currentUser.lang;\r\n //ToDo ovo prebaciti sve u jedan API poziv\r\n $scope.lData = val;\r\n if ($scope.fd.PresentationId!=null && $scope.fd.PresentationId!=undefined)\r\n {\r\n var ctrl = this;\r\n this.l_apply = apply;\r\n this.l_val = val;\r\n let fromCache=true;\r\n //ResourcesDataService.getResourceDataList($scope.fd.Related,$scope.fd.PresentationId,lang,search).then(function(data) {\r\n ResourcesDataService.getResourceDataListAll($scope.fd.Related,$scope.fd.PresentationId,lang,fromCache,refresh_list_from_callback).then(function(data) {\r\n \r\n $scope.fd.localVars.datasetItems = data.data;\r\n $timeout(function(){\r\n //if (!$scope.fd.ReadOnly) $scope.loadDropdown($scope.fd.localVars.datasetItems);\r\n if (ctrl.l_apply) apply_value(ctrl.l_val);\r\n });\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t\t\t\t\t});\r\n \r\n }\r\n };\r\n \r\n \r\n $scope.fd.localVars.restoreGridState= function() {\r\n //debugger\r\n if ($scope.fd['GridState']!==undefined && $scope.fd['GridState']!==null)\r\n {\r\n \r\n if ($scope.fd['GridState']['columnsDef']!==undefined) $scope.fd.localVars.filesColumns = $scope.fd['GridState']['columnsDef']\r\n if ($scope.fd['GridState']['columnsQuery']!==undefined) $scope.fd.columnsForQuery = $scope.fd['GridState']['columnsQuery']\r\n\r\n }\r\n }; \r\n \r\n // Resource is selected\r\n $scope.fd.onSelectCallback = function (item, model){\r\n var eventResultId=item.id;\r\n $scope.fd.eventResultName=item.name;\r\n \r\n $scope.fd.resourceId=eventResultId;\r\n $scope.fd.isResourceSelected=true;\r\n \r\n $scope.fd.Related=$scope.fd.resourceId;\r\n $scope.fd.localVars.getPublishedResources()\r\n if ($scope.fd.Related!=undefined && $scope.fd.Related!=null) $scope.fd.getFormFields();\r\n \r\n }\r\n \r\n // Resource is selected\r\n $scope.fd.onSelectPublished = function (item, model){\r\n let pos = $scope.fd.localVars.publishedResourceList.map(function(e) { return e.id; }).indexOf(item.id);\r\n let old_publish_id = $scope.fd.Parameters.PublishedResourceId\r\n if (pos>=0){\r\n $scope.fd.Parameters.PublishedResourceId = $scope.fd.localVars.publishedResourceList[pos].id;\r\n \r\n $scope.fd.Parameters.PublishedResourceVersion = $scope.fd.localVars.publishedResourceList[pos].Version;\r\n if ($scope.fd.GridState?.columnsDef===undefined || $scope.fd.Parameters.PublishedResourceId !=old_publish_id) $scope.fd.localVars.getColumnsDef()\r\n else $scope.fd.localVars.fileListDownloaded =true\r\n }\r\n \r\n \r\n }\r\n $scope.fd.localVars.getPublishedResources=function()\r\n {\r\n $scope.fd.localVars.publishedLoaded=false \r\n ResourcesDataService.GetPublishedResourcesByTypeId($scope.fd.Related,'form').then(\r\n function (data) { \r\n if ($scope.fd.localVars===undefined) $scope.fd.localVars={} \r\n $scope.fd.localVars.publishedResourceList = data.data;\r\n $scope.fd.localVars.publishedLoaded=true\r\n\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n\r\n\r\n\r\n $scope.fd.localVars.ShowSearchForm = function(id) \r\n \r\n { let show_search_form\r\n if ($scope.fd.ShowSearchForm) show_search_form = false\r\n else show_search_form = true\r\n $scope.fd.localVars.getPublishedResourceById(id,show_search_form)\r\n \r\n }\r\n /*********************************************************************************************/\r\n /******************************* GET PUBLISHED DATASET DETAILS *******************************/\r\n /*********************************************************************************************/ \r\n\r\n $scope.fd.localVars.getPublishedResourceById = function(id,show_search_form) \r\n {\r\n if (show_search_form) {\r\n let pos\r\n let old_publish_id = $scope.fd.Parameters.PublishedResourceId\r\n if ($scope.fd.FormDef!==undefined && $scope.fd.FormDef!==null && $scope.fd.FormDef.length>0) { \r\n pos = $scope.fd.localVars.publishedResourceList.map(function(e) { return e.id; }).indexOf(id);\r\n $scope.fd.localVars.dashboard.widgets.layout = $scope.fd.FormDef\r\n $scope.fd.localVars.formLoaded=true;\r\n } else \r\n {\r\n pos = $scope.fd.localVars.publishedResourceList.map(function(e) { return e.id; }).indexOf(id);\r\n $scope.fd.FormDef={}\r\n if (pos>=0){\r\n ResourcesDataService.GetPublishedResourceById(id).then(function (data) {\r\n $scope.fd.FormDef = data.data.Form \r\n $scope.fd.localVars.dashboard.widgets.layout = $scope.fd.FormDef\r\n $scope.fd.localVars.formLoaded=true;\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n\r\n }\r\n }\r\n \r\n }\r\n } \r\n\r\n $scope.fd.localVars.getColumnsDef = function () {\r\n\r\n \r\n ResourcesDataService. getResourceColumns($scope.fd.Parameters.PublishedResourceId,'file',lang,$scope.fd.Parameters.PublishedResourceVersion).then(function(data) {//MIGOR\r\n \r\n $scope.fd.localVars.filesColumns = data.data.columnsDef\r\n $scope.fd.localVars.results.columns = $scope.fd.localVars.filesColumns\r\n $scope.fd.localVars.fileListDownloaded = true;\r\n \r\n $scope.fd.localVars.saveGridState(false)\r\n \r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n\r\n }\r\n\r\n /*********************************************************************************************/\r\n /************************ GET RESOURCE LIST FOR EXISTING RELATIONSHIP *************************/\r\n /*********************************************************************************************/\r\n $scope.fd.localVars.getExistingResources = function() {\r\n\r\n $scope.fd.resourcesList.length=0\r\n $scope.fd.RelatedLoaded=false\r\n \r\n let resource_def_id = $scope.resourceDefinition.ResourceDefId_id\r\n if (resource_def_id===undefined) resource_def_id = $scope.resourceDefinition.ResourceDefId\r\n \r\n if (resource_def_id===undefined) resource_def_id = $scope.resourceDefinition.ParentDatasetDefId\r\n\r\n if (resource_def_id)\r\n {\r\n ResourcesDataService.getExistingResourceRelationships(resource_def_id).then(function(data) {\r\n \r\n $scope.fd.resourcesList = data.data;\r\n \r\n if (!Array.isArray($scope.fd.resourcesList)) $scope.fd.resourcesList=[]; \r\n \r\n if ($scope.fd.Related!=null)\r\n {\r\n $scope.fd.resourceId = $scope.fd.Related;\r\n $scope.fd.resourceListLength = $scope.fd.resourcesList.length;\r\n //select dataset from dropdown\r\n var pos = $scope.fd.resourcesList.map(function(e) { return e.id; }).indexOf($scope.fd.resourceId);\r\n\r\n if (pos>=0){\r\n $scope.fd.selectedResource=$scope.fd.resourcesList[pos];\r\n \r\n $scope.fd.isResourceSelected=true;\r\n }\r\n \r\n }\r\n\r\n if ($scope.fd.Parameters.PublishedResourceId!=undefined) $scope.fd.localVars.getPublishedResources()\r\n \r\n $scope.fd.RelatedLoaded=true;\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }else MessagingService.addMessage('Dataset id error (directive fn getExistingResources)','error');\r\n }; \r\n \r\n \r\n \r\n if ($scope.formDefinition)\r\n {\r\n if ($scope.fd.Parameters.ResourceRelationshipType==='new' || $scope.fd.Parameters.ResourceRelationshipType==='view') $scope.fd.localVars.getResources();\r\n else $scope.fd.localVars.getExistingResources();\r\n }\r\n $scope.fd.setupGrid= function(data)\r\n {\r\n $scope.fd.localVars.filesColumns = data.columnsDef;\r\n \r\n $timeout(function(){\r\n $scope.fd.localVars.restoreGridState();\r\n \r\n });\r\n \r\n \r\n }\r\n \r\n $scope.fd.localVars.setupGridNew= function(data)\r\n {\r\n $scope.fd.localVars.filesData = data.data;\r\n if ($scope.fd.GridState?.columnsDef===undefined) $scope.fd.localVars.filesColumns = data.columnsDef;\r\n $scope.fd.localVars.fileListDownloaded = true\r\n \r\n }\r\n \r\n \r\n $scope.fd.localVars.restoreGridState();\r\n \r\n \r\n \r\n \r\n \r\n // Popuni listu gridOptions.data sa listom svih resursa odabranog tipa\r\n\t\t\t\t\t\t\r\n \r\n $scope.fd.getResourceDataFiltered = function () {\r\n\r\n $scope.filter = {};\r\n var lang = $rootScope.globals.currentUser.lang;\r\n\r\n //scope.activity.activityMessage = ProcessingService.setActivityMsg('Retriving data '+scope.selectedResource);\r\n //$scope.filter = ResourcesDataService.prepareResourceWidgetData($scope.dashboard.widgets,-1);\r\n \r\n if ($scope.fd.selectedResource==null) {\r\n $scope.fd.selectedResourceId = $scope.fd.Related;\r\n }else\r\n {\r\n $scope.fd.selectedResourceId = $scope.fd.selectedResource.id;\r\n \r\n }\r\n\t//\t\tResourcesDataService.getResourceDataFiltered($scope.fd.Related,lang,$scope.filter).then(function(data) {//MIGOR\r\n ResourcesDataService.getResourceDataFiltered($scope.fd.selectedResourceId,$scope.taskId,lang,$scope.fd.resourceDashboard.widgets).then(function(data) {//MIGOR\r\n \r\n $scope.fd.setupGrid(data);\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n\t\t\r\n\t\r\n\r\n $scope.fd.localVars.saveGridState= function(show_message) {\r\n //debugger //ktTaskDatasetList smarttable\r\n let columnsDef = $scope.fd.localVars.filesColumns\r\n\r\n let columnsQuery = $scope.fd.localVars.columnsForQuery\r\n $scope.fd['GridState']={'columnsDef':columnsDef,'columnsQuery': columnsQuery}\r\n \r\n if (show_message)\r\n MessagingService.addMessage(\"To make changes stick please save form\",'info'); \r\n };\t\t\r\n \r\n $scope.fd.getResourceData = function () \r\n\t{\r\n // $scope.activity.activityMessage = ProcessingService.setActivityMsg('Downloading resource data for '+$scope.resourceId);\r\n var lang = $rootScope.globals.currentUser.lang;\r\n ResourcesDataService.getResourceData($scope.resourceId,$scope.taskId,lang).then(function(data) {\r\n \r\n $scope.fd.setupGridNew(data);\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n\t};\r\n $scope.fd.localVars.results = {} \r\n\r\n\r\n //**********************************************************\r\n // GET FILES DIRECT FILTER\r\n //********************************************************** \r\n $scope.fd.localVars.getFilesDirect = function (relatedDatasetId,items) {\r\n \r\n $scope.fd.localVars.fileListDownloaded =false\r\n\r\n ResourcesDataService.getResourceDataDirectFilter(relatedDatasetId,$scope.fd.PresentationId,\"i\",lang,{id__in: items}).then(function(data) {\r\n \r\n $scope.fd.localVars.setupGridNew(data);\r\n \r\n // MessagingService.addMessage(data.msg,'success');\r\n },function(error){\r\n $scope.fd.localVars.fileListDownloaded = true\r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n };\r\n\r\n \r\n /* Get children for parent*/\r\n $scope.fd.localVars.GetResourceDataForParent = function () \r\n {\r\n var lang = $rootScope.globals.currentUser.lang;\r\n if ($scope.resourceRecordId>0 && $scope.fd.MaxLength==0)\r\n {\r\n $scope.fd.localVars.fileListDownloaded =false\r\n ResourcesDataService.getResourceDataM2m($scope.fd.PresentationId,$scope.parentResourceDefId,$scope.fd.Related,$scope.resourceRecordId,$scope.taskId,$scope.fd.ItemId,lang).then(function(data) {\r\n $scope.formData[0][$scope.fd.FieldName] = data; \r\n $scope.fd.localVars.setupGridNew(data); \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.fd.localVars.fileListDownloaded = true\r\n });\r\n } \r\n }\r\n\r\n //**********************************************************\r\n // GET FILES DATA DIRECT FILTER\r\n //********************************************************** \r\n $scope.fd.localVars.getFilesData = function (file_def_id,dataset_def_id) {\r\n \r\n $scope.filter = {};\r\n var lang = $rootScope.globals.currentUser.lang;\r\n //$scope.fd.linkedResourceId = resource_id; //MIGOR - mozda je visak (je)\r\n //$scope.fd.linkedResourceDefId = resource_def_id; //MIGOR - mozda je visak (je)\r\n if (file_def_id!=undefined)\r\n {\r\n \r\n $scope.fd.localVars.filesData.data.length=0;\r\n $scope.fd.fileSelected = false;\r\n $scope.fd.localVars.resourceDataDownloading = true\r\n ResourcesDataService.getFilesData($scope.fd.PresentationId,file_def_id,dataset_def_id,0).then(function(data) {\r\n \r\n \r\n \r\n $scope.fd.localVars.filesData = data.data\r\n \r\n $scope.lastResourceDefId = file_def_id;\r\n $scope.lastResourceId = dataset_def_id;\r\n $scope.fd.localVars.fileListDownloaded = true;\r\n $scope.fd.localVars.resourceDataDownloading = false\r\n \r\n } \r\n ,function(error){ \r\n MessagingService.addMessage(error.msg,'error'); \r\n $scope.fd.localVars.fileListDownloaded = true;\r\n $scope.fd.localVars.resourceDataDownloading = false\r\n });\r\n }\r\n \r\n };//getFilsData END\r\n \r\n \r\n \r\n \r\n $scope.fd.onSelectSearchForm= function (item, model){\r\n \r\n if ($scope.fd.Search==undefined) $scope.fd['search']={taskId:item};\r\n else $scope.fd.Search.taskId = item;\r\n //$scope.fd.Search.widgetId=0; //ovo treba na serveru dohvatiti widgetId\r\n \r\n \r\n } \r\n if ($scope.fd.Parameters.PublishedResourceId!=undefined && $scope.fd.Parameters.PublishedResourceId!=null)\r\n\r\n {\r\n $scope.fd.localVars.getPublishedResources()\r\n\r\n if ($scope.fd.GridState?.columnsDef===undefined) $scope.fd.localVars.getColumnsDef()\r\n else \r\n\r\n {\r\n $scope.fd.localVars.restoreGridState()\r\n $scope.fd.localVars.fileListDownloaded =true\r\n }\r\n\r\n \r\n \r\n \r\n \r\n }\r\n\r\n //ako ima odabranih dohvati ih i setupiraj\r\n if ($scope.formData!=undefined && $scope.formData.length>0 && !$scope.fd.Parameters.NoGetData)\r\n {\r\n if ($scope.formData[0][$scope.fd.FieldName]!=undefined){\r\n if ($scope.fd.PresentationType==0)\r\n {\r\n $scope.fd.localVars.getFilesDirect($scope.fd.Related,[$scope.formData[0][$scope.fd.FieldName]]);\r\n }\r\n else\r\n {\r\n if ($scope.fd.OverrideType!=\"f\") $scope.fd.getDatasetList();\r\n }\r\n } else if (!$scope.formDefinition && $scope.fd.MaxLength==0) $scope.fd.localVars.GetResourceDataForParent();\r\n\r\n }else if ($scope.fd.PresentationType==0)\r\n \r\n {\r\n if (!$scope.formDefinition && $scope.fd.MaxLength==0 && !$scope.fd.Parameters.NoGetData) $scope.fd.localVars.GetResourceDataForParent();\r\n }\r\n \r\n if ($scope.fd.Parameters.PublishedResourceId!=undefined) {\r\n\r\n if ($scope.formDefinition) {\r\n $scope.fd.localVars.getPublishedResources() \r\n $scope.fd.getFormFields()\r\n }\r\n else $scope.fd.localVars.getPublishedResourceById($scope.fd.Parameters.PublishedResourceId,$scope.fd.ShowSearchForm)\r\n \r\n }\r\n \r\n\t\t\t\t},//...controller\r\n\t\t\t\t\r\n templateUrl: 'ktdirectivetemplates/ktFile.html',\r\n link: function (scope, elem, attrs) {\r\n\t\t\t\t \r\n scope.fd.localVars.smartTableLinked=true\r\n \r\n }\r\n \r\n }\r\n};\n'use strict';\r\n\r\nexport function ktFileUpload($timeout,WidgetDataExchangeService,ResourcesDataService,TaskDataService) {\r\n return {\r\n restrict: 'A', \r\n templateUrl: 'ktdirectivetemplates/ktFileUpload.html',\r\n controller: function ($scope, $element,$rootScope,$uibModal,MessagingService,ProcessingService,$log,GridsterService,$timeout,$cookies,$stateParams) {\r\n\r\n //console.log(\"U kontroleru\");\r\n $scope.gsrvc = GridsterService;\r\n $scope.fd.ReadOnly=false;\r\n $scope.animationsEnabled = true;\r\n $scope.showFileMetaData=false;\r\n $scope.taskId=$scope.resourceDefinition.ResourceDefId;\r\n if ($scope.taskId==undefined) $scope.taskId=$scope.resourceDefinition.ResourceDefId_id;\r\n if ($scope.taskId==undefined) $scope.taskId=0; \r\n if ($scope.localVars==undefined) $scope.localVars = {datasetMapperType:0};\r\n $scope.fd.files = []; \r\n $scope.localVars.showProperties=function(datasetMapperType)\r\n {\r\n \r\n if ($scope.localVars.datasetMapperType==undefined)\r\n {\r\n $scope.localVars.datasetMapperType = datasetMapperType;\r\n }else\r\n {\r\n if ($scope.localVars.datasetMapperType==0 || $scope.localVars.datasetMapperType!=datasetMapperType) $scope.localVars.datasetMapperType = datasetMapperType;\r\n else $scope.localVars.datasetMapperType=0;\r\n }\r\n \r\n };\r\n \r\n \r\n $scope.localVars.okFileConnector = function () {\r\n $timeout(function() {\r\n $scope.fd.tItemValue=$scope.fd.listOfConnectors;\r\n $scope.localVars.showProperties(0);\r\n \r\n });\r\n };\r\n \r\n $scope.localVars.cancelFileConnector = function () {\r\n $timeout(function() {\r\n $scope.fd.listOfConnectors=angular.copy($scope.fd.tItemValue);\r\n $scope.localVars.showProperties(0);\r\n \r\n });\r\n };\r\n\r\n \r\n\t\t $scope.okModal = function (windex,index) {\r\n\t\t\t$timeout(function() {$scope.showFileMetaData=false; });\r\n\t\t };\r\n\r\n\t\t $scope.cancelModal = function () {\r\n\t\t\t$timeout(function() {$scope.showFileMetaData=false; });\r\n\t\t };\r\n\t\t \r\n \r\n \r\n\t\t $scope.showMetadata = function(fileIndex,fileId){ \r\n\t\t \r\n\t\t\t\t var lang=$rootScope.globals.currentUser.lang;\r\n\t\t\t\t var file_resource_type = \"file\";\r\n\t\t\t\t $scope.taskId=$stateParams.id;\r\n\t\t\t\t \r\n\t\t\t\t //ResourcesDataService.getResourceFormextended(id resursa ,task-id, i, $scope.fd.presentationId,lang)\r\n\t\t\t\t\t\r\n\t\t\t\t ResourcesDataService.getResourceForm(fileId,\"i\",lang).then(function(data) {\r\n \r\n var sc=$scope;\r\n //$scope.gridOptions.data = data.data;\r\n\t\t\t\t\t\t\t\t //$scope.fd.files[fileIndex].dashboard=[];\r\n\t\t\t\t\t\t\t\t $scope.fd.files[fileIndex].dashboard=data.data;\r\n\t\t\t\t\t\t\t\t //files[$index].dashboard.widgets\r\n\t\t\t\t\t\t\t\t \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t\t});\r\n \r\n\t\t\r\n\r\n\t\t\t };\r\n \r\n \r\n\t\t\t// OPEN MODAL filehelper\r\n\t\t\t $scope.openModal = function (size,fileIndex) {\r\n var modalInstance = $uibModal.open({\r\n animation: $scope.animationsEnabled,\r\n templateUrl: 'filehelper.html',\r\n controller: 'FileModalInstanceCtrl',\r\n size: size,\r\n resolve: {\r\n retValue: function () {\r\n return {resourceId:$scope.resourceId,fileIndex:fileIndex,files:$scope.fd.files,headline:'Enter file metadata'};\r\n }\r\n }\r\n });\r\n\t\t\t\r\n\t\t\t\r\n modalInstance.result.then(function (retValue,windex,index) {\r\n // $scope.getResourceForm ();\r\n \r\n \r\n }, function () {\r\n //$log.info('Modal dismissed at: ' + new Date());\r\n });\r\n \r\n\t\t};\r\n \r\n \r\n //novi FILE CONNECTOR - UPLOADER\r\n $scope.localVars.openFileConnector = function(){\r\n //$scope.fd.showFileConnector= !$scope.fd.showFileConnector;\r\n $scope.localVars.showProperties(1);\r\n if ($scope.localVars.datasetMapperType==1) {\r\n \r\n //POPUNI LISTU DATASETOVA \r\n ResourcesDataService.getResourceDefListByType(lang,'dataset').then(\r\n function(data) {\r\n $scope.datasetList = data.data;\r\n //dodaj ime dataseta u konektore\r\n if ($scope.fd.listOfConnectors!=undefined) \r\n for (var i=0;i< $scope.fd.listOfConnectors.length;i++) {\r\n //var p = $scope.datasetList.map(function(e) { return e.id; }).indexOf($scope.fd.listOfConnectors[i].parentDatasetDefId);\r\n var p = $scope.datasetList.map(function(e) { return e.id; }).indexOf($scope.fd.listOfConnectors[i].parentDatasetDefId);\r\n if (p>=0) $scope.fd.listOfConnectors[i].parentDatasetName = $scope.datasetList[p].name; \r\n }\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n \r\n \t\t\t\t\t\t\tif ($scope.fd.tItemValue==undefined || $scope.fd.tItemValue[0]==null) $scope.fd.tItemValue = []; \r\n\t\t\t\t\t\t\t// ovo je Kt-UPLOADER\r\n\t\t\t\t\t\t\t $scope.fd.listOfConnectors= WidgetDataExchangeService.getRegisteredWidgets();//MIGOR - uzmi sve registrirane widgete\r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t //Brisi sve koji se vec nalaze u tItemValue\r\n\t\t\t\t\t\t\t if ($scope.fd.listOfConnectors!=undefined) \r\n\t\t\t\t\t\t\t\t for (var i=0;i< $scope.fd.tItemValue.length ;i++) {\r\n\t\t\t\t\t\t\t\t\t\t for (var j=0;j< $scope.fd.listOfConnectors.length;j++) {\r\n if ($scope.fd.tItemValue[i]!=null) {\r\n if ($scope.fd.listOfConnectors[j].widgetId==$scope.fd.tItemValue[i].widgetId) {\r\n $scope.fd.listOfConnectors.splice(j,1);//brisi lokalni\t\t\t\t \t\t\t\t\t \t\t\r\n }\r\n }\r\n }\r\n\t\t\t\t\t\t\t }\r\n //dodaj sa servera\r\n for (var i=0;i< $scope.fd.tItemValue.length ;i++) \r\n if ($scope.fd.tItemValue[i]!=null) \r\n $scope.fd.listOfConnectors.push($scope.fd.tItemValue[i]);\t\t\r\n \r\n\r\n\t\t\t\t\t\t\t //Ostavi u listi konektora samo WIDGETE koji imaju \"ResourceID\" jer su to data widgeti\r\n\t\t\t\t\t\t\t var newlist=[];\r\n \r\n\t\t\t\t\t\t\t if ($scope.fd.listOfConnectors!=undefined){\r\n \r\n for (var i=0;i< $scope.fd.listOfConnectors.length;i++) {\r\n if ($scope.fd.listOfConnectors[i].DEI!=undefined) \r\n for (var j=0;j< $scope.fd.listOfConnectors[i].DEI.length;j++) {\r\n if ($scope.fd.listOfConnectors[i].DEI[j].name=='resourceLink') {\r\n //ako DEI nije true/false - resetiraj na false\r\n if ( ($scope.fd.listOfConnectors[i].DEI[j].value!=false) && ($scope.fd.listOfConnectors[i].DEI[j].value!=true) ) $scope.fd.listOfConnectors[i].DEI[j].value=false;\r\n //dodaj konektor u novu listu \r\n newlist.push($scope.fd.listOfConnectors[i]);\r\n };\t\t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t \r\n }\r\n }\r\n }//if\r\n\t\t\t\t\t\t\t $scope.fd.listOfConnectors=newlist; //konacna lista NOVIH dataset konektora \r\n \r\n\t\t\t\t\t\t\t //return {selectedItemFromServer:$scope.fd.tItemValue,listOfConnectors: $scope.fd.listOfConnectors,headline:'Choose required interfaces',selectedFileConnector:$scope.selectedFileConnector};\r\n\t\t\t\t\t\t\r\n\t\t\t\t \r\n\t\t\t\t/* interfaceModal.result.then(function (selectedItem) { \r\n\t\t\t\t\t\t\t//$scope.fd.tItemValue=selectedItem; // //MIGOR TODO vidjet da li treba angular.copy(selectedItem);\r\n $scope.fd.tItemValue=angular.copy(selectedItem); // MIGOR TODO - TEST SA ANGULAR COPY\r\n \r\n \r\n\t\t\t\t\t\t\t// MIGOR TODO -\r\n\t\t\t\t\t\t\t//selektirani widget ima \"resourceID\" interface\" - registriramo se na njegov \"event\"\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t$scope.$on('resourceId:'+selectedItem,\r\n\t\t\t\t\t\t\t\tfunction(event, data){\r\n\t\t\t\t\t\t\t\t\tconsole.log('resourceID uhvacen u ktUploader! data:' + data);\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t//$scope.fd.listOfConnectors= WidgetDataExchangeService.getRegisteredInterfaces(selectedItem); \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t}*/\r\n\t\r\n } //if showfileconnetor \r\n\t\t}; // open FILECONNECTOR - UPLOADER\r\n \r\n \r\n\t\t\t\t\t\r\n\t\t\t\t \t// FUNCTION ONSELECT CALLBACK II\r\n\t\t\t\t\t$scope.onSelectCallback2 = function (item, model,fileIndex){\r\n\t\t\t\t\t\tvar eventResultId=item.id;\r\n\t\t\t\t\t\t$scope.eventResultName=item.Name;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t //console.log(\"onSelectCallback II:\" + $scope.eventResultName+ ' ' + eventResultId);\r\n\r\n\t\t\t\t\t\t $scope.resourceId=eventResultId;\r\n\t\t\t\t\t\t $scope.isResourceSelected=true;\r\n\t\t\t\t\t\t \t\r\n\t\t\t\t\t\t\t\t$scope.fd.filetype=$scope.resourceId; \t\t\t\t\t\t\r\n\t\t\t\t\t}//onSelectCallback II\r\n\t\t\t\t \r\n\t\t\t\t \r\n\t\t\t\t \r\n\t\t\t\t \r\n\t\t\t\t\t// FUNCTION - ON_SELECT_FILETYPE \r\n\t\t\t\t\t// NAKON ŠTO SE ZA POJEDINAÈNI FILE ODABERE FILE-TYPE --> $scope.resourceId\r\n\t\t\t\t\t\r\n\t\t\t\t\t$scope.onSelectFileType = function (item,fileIndex){\r\n\t\t\t\t\t\tvar selectedFileTypeId=item.id;\r\n\t\t\t\t\t\t$scope.resourceId=selectedFileTypeId;\r\n\t\t\t\t\t\t $scope.isResourceSelected=true;\r\n\t\t\t if ($scope.fd.files[fileIndex].fileResourceID!=selectedFileTypeId) {\r\n\t\t\t $scope.fd.files[fileIndex].fileResourceID = selectedFileTypeId;\r\n\t\t\t $scope.fd.files[fileIndex].formLoaded = false;\r\n\t\t\t }\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\tconsole.log(\"onSelectFileType :\" + selectedFileTypeId);\r\n\t\t\r\n\t\t\t\t\t\t$scope.fileIndex=fileIndex;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t//if ($scope.fd.files[fileIndex].fileResourceID== undefined) {\r\n\t\t\t\t\t\t\t\t//\t$scope.getResourceForm ();\r\n\t\t\t\t\t\t\t\t//\t}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t//if ($scope.resourceId != undefined) {\t\r\n\t\t\t\t\t\t\t\t\t//$scope.getResourceForm ();\r\n\t\t\t\t\t\t\t\t//}\r\n\t\t\t\t\t\t \t\t\r\n\t\t\t\t\t\t//$scope.fd.related=$scope.resourceId; // ovo viska??? MIGOR\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t$scope.showMetadata(fileIndex,$scope.fd.files[fileIndex].fileResourceID );\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tvar err=$scope.testRules();\r\n\t\t\t\t\r\n\t\t\t\t\t}//onSelectFileType\r\n\t\t\t\t \r\n\t\t\t\t \r\n\t\t\t\t \r\n\t\t\t\tvar lang = $rootScope.globals.currentUser.lang;\r\n\t\t\t\tvar type=\"file\"; // PROMJENITI - ZASAD JE HARD-CODED !!!!! MIGOR\r\n\t\t\t\t\t \r\n\t\t\t\t\t \r\n\t\t\t\t\t// poziva se iz ktUploader.html\r\n\t\t\t\t\t$scope.remove = function (index) {\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t$scope.fd.MetaData.splice(index,1);\r\n\t\t\t\t\t\t$scope.isOpen=true;\r\n\t\t\t\t\t\tvar err=$scope.testRules();\t\r\n\t\t\t\t\t}\r\n\t\t\t\t\t \r\n\t\t\t\t\t \r\n\t\t\t// POPUNI LISTU lIST OF FILE TYPES\r\n ResourcesDataService.getResourceDefByType(lang,type).then(\r\n\t\t\t\t\t\tfunction(data) {\r\n\t\t\t\t\t\t\t\t\t\t\t $scope.listOfFileTypes = data.data;\r\n\t\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t},function(error){\r\n\t\t\t\t\t\t\t\t\t\t\t MessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t});\r\n \t \r\n \r\n\t\r\n \r\n \r\n\t\t\t },// controler_ktUploader_END\r\n\t\t\t\r\n\r\n\t\t\t// *************************************************** KT- UPLOADER LINK FUNKCIJA *****************************\r\n\t\t\trequire: '^form', // MIGOR - NOVO DODAO \r\n\t\t\tlink: function (scope, elem, attrs,formCtrl) { //MIGOR NOVO\r\n \r\n \r\n \r\n //console.log(\"U post-link\");\r\n\t\t \r\n //var element = elem[0].getElementsByClassName('fileElement');\r\n //scope.fd.uiUploader = uiUploader;\r\n //scope.fd.uiUploader.createUploader(scope.fd.PresentationId);\r\n \r\n \t\t\t\t\r\n //MIGOR TODO - prilagoditi widgetdefinition za uploader da salje i povezani related dataset\r\n var out_fields = ['resourceId'];\r\n var widgetDefinition = {DEI: [{'name':'resourceLinkR','value':[{name:'resourceId',value:scope.fd.Related},{name:'resourceRecordId',value:''}]}],actions: [{name:'PrepareData',status:false}],name: 'ktUploader',localWidgetId:scope.fd.LocalId,widgetId: scope.fd.PresentationId,taskId: scope.lTaskId,resourceDefId : scope.selectedResource, output:out_fields, };\r\n //var widgetDefinition = {DEI: [{'name':'resourceLinkR','value':false}],actions: [{name:'PrepareData',status:false}],name: 'ktUploader',localWidgetId:scope.fd.localId,widgetId: scope.fd.presentationId,taskId: scope.lTaskId,resourceDefId : scope.selectedResource, output:out_fields, };\r\n\t\t \r\n scope.localWidgetId = WidgetDataExchangeService.registerWidget(widgetDefinition); //zamijeniti gdje se sve pojavljujue i staviti LOCAL TODO\r\n scope.fd.LocalId=scope.localWidgetId; \r\n \r\n // scope.fd.uiUploader.removeAll(scope.fd.PresentationId); //MIGOR TEMP- TREBA nekako obrisati inicijalne fajlove kod reigstracija ali ovdje ne radi !!!\r\n //console.log(element.files);\r\n\r\n /*\r\n var element = elem[0].getElementsByClassName('fileElement');\r\n \r\n element[0].addEventListener('change', function(e) {\r\n \r\n $timeout(function() {\r\n var files = e.target.files;\r\n scope.fd.uiUploader.addFiles(files,scope.fd.PresentationId);\t\t\t\t\r\n scope.fd.files =scope.fd.uiUploader.getFiles(scope.fd.PresentationId); \r\n \r\n var err=scope.testRules();\r\n });\r\n }); \r\n \t\r\n */\r\n var fileCounter = 0;\r\n\t\t\t//scope.rules=[];\r\n\t\t\tif (scope.fd.MetaData==undefined) scope.fd.MetaData=[]; \r\n\t\t\tscope.rules = scope.fd.MetaData;\r\n\t\t\t\t\r\n\t\t\t\t// ADD RULE DEFINITION - poziva se iz ktUploader.html\r\n\t\t\t\tscope.addRuleDefinition=function(name,min,max,minTotal){\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (min==undefined) min=0;\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\tfor (var i=1, l=scope.rules.length; i scope.rules[i].max) {formCtrl.uploaderForm.$setValidity('Too many file types', false);\r\n }\t else formCtrl.uploaderForm.$setValidity('Too many file types', true);\r\n \r\n }\r\n\t\t\t\t\t\r\n\t\tif (scope.rules.length>0) {\r\n if (scope.fd.files.length < scope.rules[0].min) formCtrl.uploaderForm.$setValidity('Minimum files needed', false); \r\n else formCtrl.uploaderForm.$setValidity('Minimum files needed', true); }\r\n \r\n\t\t\t\t\t//errMsg=null; // samo za test !!! MAKNUTI KASNIJEEE !!!! <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\r\n return errMsg;\r\n\t\t\t\t\t\r\n }//test_RULES\r\n \r\n\tscope.checkForChanges = function(files) {\r\n //scope.fd.files = files;\r\n scope.files = files;\r\n };\r\n \t//*******************************************************************************************************\r\n\t\t// \t\t\t\t\t\t\t\t\t\t\t kt-UPLOADER BTN_UPLOAD\r\n\t\t//*******************************************************************************************************\r\n scope.btn_upload = function() {\r\n \t\t\t\t\r\n // CHECK THE RULES FIRST\r\n\t\tvar errMsg=scope.testRules();\r\n errMsg=null; // samo za test !!! MAKNUTI KASNIJEEEE !!!! <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\r\n\t\t\t\t\t\r\n\t\tif (errMsg==null) {\r\n\t\r\n \t\tvar csrf_token = $cookies.get('csrftoken'); //'miro';//$cookieStore.get('csrftoken');\r\n\t\t\t\r\n Upload.upload({\r\n url: '../api/file-upload/',\r\n headers: {'X-CSRFToken' : csrf_token },\r\n file: scope.fd.files,\r\n data: {resource_def_id:scope.fd.linkedResourceDefId,resource_id:scope.fd.linkedResourceId},\r\n }).then(function (resp) {\r\n console.log('Success ' + resp.config.data.file.name + 'uploaded. Response: ' + resp.data);\r\n file.uploadSuccess=true;\r\n }, function (resp) {\r\n console.log('Error status: ' + resp.status);\r\n file.uploadError=true;\r\n file.status=resp;\r\n }, function (evt) {\r\n var progressPercentage = parseInt(100.0 * evt.loaded / evt.total);\r\n console.log('progress: ' + progressPercentage + '% ' + evt.config.data.file.name);\r\n file.status='Uploading...';\r\n });\r\n \r\n /*\r\n \t\t// ZA svaki FAJL pojedinaèno !\r\n \t\tscope.fd.uiUploader.startUpload(scope.fd.PresentationId,{ \r\n\t\t\t\turl: '../api/file-upload/', \r\n\t\t\t\theaders: {'X-CSRFToken' : csrf_token },\r\n\t\t\t\t\tconcurrency: 3,\r\n\t\t\t\t\t// u data napuniti podatke vezane za fajl - fileType , ID resursa\r\n\t\t\t\t\tdata: {resource_def_id:scope.fd.linkedResourceDefId,resource_id:scope.fd.linkedResourceId},\r\n\t\t\t\t\tonProgress: function(file) {\r\n\t\t\t\t\t\t$log.info(file.name + '=' + file.humanSize);\r\n $timeout(function() { file.status='Uploading...'; });\r\n },\r\n\t\t\t\t\tonCompleted: function(file, response,status) {\r\n\r\n //$log.info(file + 'response' + response);\r\n response=JSON.parse(response); //convertiram string u JSON objekt\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\tif (status==201) {// NAKON SMO USPJESNO UPLOADALI FILE , POTREBAN METADATA UPLOAD\r\n\r\n // response.... ID fajla\r\n // file.fileResourceID ... je file_type \r\n // scope.resourceData .. spremljeni meta podaci\r\n\t\t\t\t\t\t\t\t\r\n $timeout(function() { file.uploadSuccess=true; });\r\n\t\t\t\t\t\t\t\t\t\r\n\r\n \t\t\t\t//OUTPUT: data.savedResourceId .. ID meta-resursa koji je pridružen fajlu (unutar 11-ice ili 12-ice)\r\n\t\t\t\t\t\t\t\t\t\r\n \t\t file.resourceData={};\r\n\t\t\t\t\t\t\t\t\t\r\n //MessagingService.addMessage(\"File upload successful! \"+response,'success');\r\n\t\t\t\t\t\t\t\t\t\r\n //PRIPREMA scope.resourceData ZA UPLOAD \r\n if (file.dashboard!=undefined)\r\n {\r\n //code\r\n var fieldId=\"\";\r\n var sc=scope;\r\n \r\n for (var i=0;i0 && scope.fd.linkedResourceId>0) scope.fd.uploadReady = true;\r\n }\r\n \r\n \r\n if (scope.fd.files.length>0 && scope.fd.uploadReady) scope.btn_upload(); // poziva UPLOAD - MIGOR TODO - upload treba samo ako ima fajl !!!\r\n \r\n \r\n };\r\n \r\n \r\n \t\r\n \t\t\t\r\n\t\r\n \t // ne znam da li ce u ovoj link funkciji widget vec imati resource_id\r\n //ILJU treba dohvatit sa servera tItemValue\r\n \r\n scope.formType=scope.resourceDefinition.form_type;\r\n \r\n /* if (scope.fd.PresentationId!=undefined && scope.fd.PresentationId!=null) {\r\n TaskDataService.getWidgetDependencies(scope.taskId,scope.fd.PresentationId,scope.formType).then(function(data) {\r\n \r\n //scope.fd.tItemValue=data.data;\r\n\r\n //ovo je da trenutno radi\r\n // WidgetDataExchangeService.setData(scope.fd.tItemValue);\r\n //scope.processWidgetDependencies();\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n \r\n } */\r\n \r\n //MIGOR - poèisti fajlove kad dobiješ InitateTask event\r\n\t\t scope.$on('ProcessTaskWidgets',function(event, data){\r\n //scope.btn_clean(); // MIGOR - PRIVREMENO MAKNUO JER CE BITI VISAK KAD PRORADI OVO GORE\r\n if (scope.fd.files.length>0 && scope.fd.uploadReady) scope.btn_upload();\r\n });\r\n\r\n\t\t \r\n\t\t \r\n\t\t //MIGOR NOVO TODO\r\n\t\t scope.interfaceHandler= function (event,data) {\r\n\t\t\t\t\t\t\tscope.test=0;\r\n\t\t\t\t\r\n\t\t\t // scope.fd.linkedResourceId = data.resource_id;\r\n\t\t\t //scope.fd.linkedResourceDefId = data.resource_def_id;\r\n\t\t\t \r\n\t\t\t //scope.btn_upload(); \r\n\t\t }\r\n\t\t \r\n \r\n \r\n \r\n \r\n } //link directive 'ktUploader'\r\n };\r\n};\n'use strict';\r\n\r\nexport function ktFormElementProperties () {\r\n return {\r\n restrict: 'A',\r\n replace: true,\r\n template: '
',\r\n scope: {\r\n fd: '=',\r\n localVars: '=',\r\n resourceDefinition:'=?',\r\n },\r\n controller: function($scope, $rootScope, TaskDefinitionService,GridsterService){\r\n $scope.CTRL=\"ktFormElementProperties\"\r\n $scope.tds =TaskDefinitionService\r\n $scope.gsrvc = GridsterService\r\n $rootScope.massUpdateFieldList = [\r\n {id:1, name: 'Required', value:'required'},\r\n {id:2, name: 'Read Only', value:'readOnly'}\r\n ]\r\n \r\n },\r\n link: function (scope, element, attr) {\r\n \r\n scope.getTemplateUrl = function() {\r\n \r\n var template =\"\";\r\n if (scope.localVars==undefined) scope.localVars = {};\r\n if (scope.fd!==undefined)\r\n {\r\n template = 'ktdirectivetemplates/'+scope.fd.DirectiveName+'Properties.html';// MIGOR TODO- Security check !!!\r\n }else\r\n {\r\n template = 'ktdirectivetemplates/ErrorElementProperties.html';\r\n }\r\n return template;\r\n \r\n };\r\n }\r\n }\r\n};\nexport function ktFormFieldGenerator () {\n return {\n \n controller:function($scope,$compile,$element){\n \n //$scope.CTRL=\"ktFormFieldGenerator\"\n var generatedTemplate = '
';\n $element.append($compile(generatedTemplate)($scope));\n \n },\n link: function(scope, element) {\n \n }\n };\n};\n'use strict';\n\nexport function ktFormlayout () {\n \n return {\n restrict: 'A',\n \n controller: ['$scope','dragulaService','$rootScope','GridsterService','$element','$compile','$templateCache',\n function($scope,dragulaService,$rootScope,GridsterService,$element,$compile,$templateCache){\n \n $scope.gsrvc = GridsterService; \n $scope.CTRL = \"ktFormlayout\"; \n var widgetHandleResource = 'element-drag-handle';\n let template = $templateCache.get('ktdirectivetemplates/ktFormLayoutExe.html');\n \n if ($scope.resourceDefinition.form_definition) template = $templateCache.get('ktdirectivetemplates/ktFormLayout.html');\n \n $scope.massUpdateFieldList=[\n {id:1, Field:'ReadOnly',Label:'Read only',Component:'checkbox'},\n {id:2, Field:'ShowField',Label:'Show field',Component:'checkbox'},\n {id:3, Field:'Required',Label:'Required',Component:'checkbox'},\n ];\n \n var bag = dragulaService.find($rootScope, 'bag-dataset');\n if (!bag) \n $scope.gsrvc.setupDragula('bag-dataset','dataset-toolbox',widgetHandleResource); \n else {\n if ($scope.gsrvc.formViewType == 4){\n if ($scope.gsrvc.formViewTypeCounterDs==0) $scope.gsrvc.destroyDragula('bag-dataset');\n $scope.gsrvc.setupDragula('bag-dataset','dataset-toolbox',widgetHandleResource); \n $scope.gsrvc.addFormViewTypeCounterDs(1);\n } \n }\n\n $element.append($compile(template)($scope)); \n }],\n \n link: function (scope, elem, attrs) {\n \n \n scope.hideAnimation=false;\n \n scope.inputArray.countActive=scope.inputArray.length;\n \n scope.countActiveFn = function (){\n scope.countActive=0;\n for (var i=0;i0) break;\n \n }\n return scope.countActive;\n };\n \n scope.removeField = function (index){\n\t\t\t\t\t\t\n if (index > -1) {\n\t\t\t\t\t\t\t// if (scope.inputArray.layout[index].saved==false) {\n scope.inputArray.layout[index].Status='Deleted'; //splice(index, 1);\n scope.inputArray.countActive--;\n\t\t\t\t\t\t\t// }\n\t\t\t\t}\n\n }; \n }\n \n };\n };\nexport function ktGenericPropertyGenerator () {\n return {\n restrict: 'A',\n replace: true,\n template: '
',\n scope: {\n fd: '=',\n wTemplate:'=',\n },\n controller: function($scope, $rootScope){\n $scope.CTRL=\"ktGenericPropertyGenerator\"\n \n },\n link: function (scope, element, attr) {\n \n scope.getTemplateUrl = function() {\n \n var template =\"\";\n \n template = 'ktdirectivetemplates/'+scope.wTemplate\n \n return template;\n \n };\n }\n }\n};\n'use strict';\r\n\r\nexport function ktGrid (GridsterService,$timeout,$rootScope,dragulaService) {\r\n\r\n return {\r\n restrict: 'A',\r\n \r\n\t\t\tscope:{\r\n allColumns: \"=\",\r\n parent:'=',\r\n gridType: '=',\r\n formParams:'=',\r\n formParamsParent:'=',\r\n showSearchFilters:'=',\r\n resourceDefinition: '=',\r\n parentResourceDefId: '=',\r\n resourceRecordId: '=',\r\n resourceFormLoaded : '=',\r\n formData : '=', \r\n hideProcessingAnimation : '=?',\r\n params:'=?',\r\n parentWidget:'=?', \t\t \r\n },\r\n controller: ['$scope','dragulaService','$rootScope','$element','$compile','$templateCache',\r\n \r\n function($scope,dragulaService,$rootScope,$element,$compile,$templateCache){\r\n \r\n $scope.gsrvc = GridsterService;\r\n $scope.CTRL=\"ktGrid\"\r\n var widgetHandle = $scope.gridType+'-row-drag-handle';\r\n \r\n $scope.$on(\"$destroy\", function() {\r\n //debugger\r\n //dragulaService.destroy($rootScope, dragula_bag);\r\n // TODO - Check is dragula is properly destroying bags (if not - manually destroy)\r\n });\r\n \r\n var bag = dragulaService.find($scope, 'bag-rows-'+$scope.gridType+'-'+$scope.$id);\r\n\r\n if (bag) {\r\n dragulaService.destroy($scope, 'bag-rows-'+$scope.gridType+'-'+$scope.$id); \r\n } \r\n dragulaService.options($scope, 'bag-rows-'+$scope.gridType+'-'+$scope.$id, {\r\n revertOnSpill: true,\r\n removeOnSpill: false,\r\n \r\n accept:function (el,target, source) {\r\n return false;\r\n },\r\n moves: function (el, container, handle) {\r\n return handle.classList.contains(widgetHandle);\r\n }\r\n });\r\n\t\t\t\t\r\n \r\n \r\n let template;\r\n if ($scope.resourceDefinition===undefined) $scope.resourceDefinition={form_definition:false}\r\n if ($scope.resourceDefinition.form_definition) template = $templateCache.get('ktdirectivetemplates/ktGrid.html');\r\n else template = $templateCache.get('ktdirectivetemplates/ktGridExe.html');\r\n \r\n $element.append($compile(template)($scope));\r\n\t\t\t\t\r\n\t\t\t\t$scope.myparentWidgetUid=''\r\n\t\t\t\tif ($scope.resourceDefinition?.parentWidgetUid) \t\r\n\t\t\t\t\t\t$scope.myparentWidgetUid = $scope.resourceDefinition?.parentWidgetUid\r\n\t\t\t\t\t\r\n\t\t\t\tif ($scope.resourceDefinition.showHidden==undefined) $scope.resourceDefinition.showHidden={}\r\n\t\t\t\t//$scope.resourceDefinition.showHidden[$scope.myparentResourceDefId + '-'+ $scope.resourceDefinition.uid]=false\r\n\t\t\t\t//debugger\r\n\t\t\t\t$scope.resourceDefinition.showHidden[$scope.myparentWidgetUid+ '-'+ $scope.resourceDefinition.uid]=false\r\n\t\t\t\t\t\t\r\n \r\n \r\n }],\r\n link: function (scope, elem, attrs) {\r\n\t\t\t\t\r\n \r\n scope.ShowFormView = function(viewId)\r\n { \r\n scope.formParams.formViewType=viewId;\r\n scope.gsrvc.setFormViewType(scope.formParams.formViewType); \r\n };\r\n \r\n scope.getClass = function(size)\r\n {\r\n return \"col-lg-\"+size;\r\n };\r\n \r\n \r\n scope.$watch('resourceFormLoaded',function(newValue,oldValue){ \r\n if (newValue!=oldValue || newValue) {\r\n scope.formLoaded = scope.resourceFormLoaded;\r\n }\r\n });\r\n \r\n scope.$watch('formParams.showGridNavigation',function(newValue,oldValue){ \r\n if (newValue!=oldValue || newValue ) {\r\n if (scope.formParams!==undefined) scope.showGridNavigation = scope.formParams.showGridNavigation;\r\n }\r\n });\r\n \r\n } \r\n }\r\n };\n'use strict';\r\n\r\nexport function clone(obj) { // javascript object cloning (replacement for angular.copy)\r\n if (obj === null || typeof (obj) !== 'object' || 'isActiveClone' in obj)\r\n return obj;\r\n\r\n if (obj instanceof Date)\r\n var temp = new obj.constructor(); //or new Date(obj);\r\n else\r\n var temp = obj.constructor();\r\n\r\n for (var key in obj) {\r\n if (key=='gsrvc') continue // skipping angular objects!!\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n obj['isActiveClone'] = null;\r\n temp[key] = clone(obj[key]);\r\n delete obj['isActiveClone'];\r\n }\r\n }\r\n return temp;\r\n}\r\n\r\n\r\nexport function ktGridColumn () {\r\n // console.log(\"u direktivi kt-textbox \");\r\n return {\r\n restrict: 'A',\r\n \r\n scope:{\r\n inputArray : '=',\r\n allColumns: \"=\",\r\n parent: \"=\",\r\n gridType: '=',\r\n formType: '=',\r\n resourceDefinition: '=', \r\n formParams:'=',\r\n formParamsParent:'=',\r\n showSearchFilters:'=',\r\n parentResourceDefId: '=',\r\n resourceRecordId: '=',\r\n resourceFormLoaded : '=',\r\n formData : '=',\r\n index : '=',\r\n params: '=?',\r\n parentWidget:'=?',\r\n \t\t\t},\r\n controller: ['$scope', '$element','$rootScope','GridsterService','WidgetDataExchangeService','$timeout','dragulaService','KatalyoStateManager','$compile','$templateCache','UtilityService',\r\n function ($scope, $element,$rootScope,GridsterService,WidgetDataExchangeService,$timeout,dragulaService,KatalyoStateManager,$compile,$templateCache,UtilityService) {\r\n \r\n //if ($scope.localVars == undefined || $scope.localVars == null) $scope.localVars={};\r\n if ($scope.inputArray.localVars == undefined || $scope.inputArray.localVars == null) $scope.inputArray.localVars={};\r\n $scope.CTRL='ktGridColumn'\r\n $scope.ksm = KatalyoStateManager;\r\n $scope.gsrvc = GridsterService;\r\n //$scope.localVars.gsrvc = GridsterService;\r\n //$scope.inputArray.localVars.gsrvc = GridsterService;\r\n $scope.inputArray.localVars.gsrvc_changeConfirmDeleteElement = GridsterService.changeConfirmDeleteElement\r\n $scope.inputArray.localVars.gsrvc_setConfirmDeleteElement = GridsterService.setConfirmDeleteElement\r\n $scope.inputArray.localVars.gsrvc_getConfirmDeleteElement = GridsterService.getConfirmDeleteElement\r\n $scope.inputArray.localVars.gsrvc_deleteElement = GridsterService.deleteElement\r\n \r\n if ( $scope.inputArray.Parameters == undefined || Object.keys($scope.inputArray.Parameters || {}).length === 0 ) {\r\n \r\n $scope.inputArray.Parameters={ //DDEFAULT VALUES\r\n SizeXMd: 24,\r\n SizeXSm: 24, \r\n SizeXXs: 24\r\n }\r\n }\r\n \r\n \r\n if ($scope.inputArray.Parameters.border == undefined || $scope.inputArray.Parameters.border == null )\r\n {\r\n \r\n $scope.inputArray.Parameters.border = {\r\n left: {\r\n name: 'Left',\r\n style:'solid',\r\n width:0,\r\n color:\"#000000\"\r\n },\r\n right: {\r\n name: 'Right',\r\n style:'solid',\r\n width:0,\r\n color:\"#000000\"\r\n } ,\r\n top:{\r\n name: 'Top',\r\n style:'solid',\r\n width:0,\r\n color:\"#000000\"\r\n },\r\n bottom:{\r\n name: 'Bottom',\r\n style:'solid',\r\n width:0,\r\n color:\"#000000\"\r\n }\r\n };\r\n }\r\n \r\n \r\n if ($scope.inputArray.Parameters.margin == undefined || $scope.inputArray.Parameters.margin == null) {\r\n $scope.inputArray.Parameters.margin= {\r\n left: { \r\n name: 'Left Margin',\r\n value: 0,\r\n units:\"px\",\r\n auto: true\r\n },\r\n right: { \r\n name: 'Right Margin',\r\n value: 0,\r\n units:\"px\",\r\n auto: true\r\n },\r\n top: { \r\n name: 'Top Margin',\r\n value: 0,\r\n units:\"px\",\r\n auto: true\r\n },\r\n bottom: { \r\n name: 'Bottom Margin',\r\n value: 0,\r\n units:\"px\",\r\n auto: true\r\n }, \r\n }\r\n }\r\n if ($scope.inputArray.Parameters.padding == undefined || $scope.inputArray.Parameters.padding == null){\r\n $scope.inputArray.Parameters.padding= {\r\n left: { \r\n name: 'Left Padding',\r\n value: 0,\r\n units:\"px\",\r\n auto: true\r\n },\r\n right: { \r\n name: 'Right Padding',\r\n value: 0,\r\n units:\"px\",\r\n auto: true\r\n },\r\n top: { \r\n name: 'Top Padding',\r\n value: 0,\r\n units:\"px\",\r\n auto: true\r\n },\r\n bottom: { \r\n name: 'Bottom Padding',\r\n value: 0,\r\n units:\"px\",\r\n auto: true\r\n },\r\n \r\n };\r\n }\r\n \r\n\r\n \r\n if ($scope.inputArray.UuidRef==undefined) $scope.inputArray.UuidRef=UtilityService.uuidv4()\r\n $scope.inputArray.Parameters.UuidRef = $scope.inputArray.UuidRef\r\n\r\n let w_actions=[\r\n {id:1,name:'toggleVisibility'},\r\n {id:2,name:'showField'},\r\n {id:3,name:'hideField'},\r\n ]\r\n let parentWidgetUid = ''\r\n\r\n if ($scope.parentWidget!=undefined) parentWidgetUid = $scope.parentWidget+'-'\r\n var widgetDefinition = {widgetLabel: 'Column',widgetName: 'column',widgetId: parentWidgetUid+$scope.inputArray.UuidRef,fd:$scope.inputArray,actions:w_actions,task_initiate_id:$scope.taskInitiateId,task_execute_id:$scope.taskExecuteId,taskId: $scope.lTaskId,parentResourceId:$scope.resourceDefinition.uid};\r\n $scope.inputArray.localVars.localWidgetId = WidgetDataExchangeService.registerWidget(widgetDefinition);\r\n $scope.inputArray.localVars.LocalId=$scope.inputArray.localVars.localWidgetId;\r\n $scope.inputArray.LocalId=$scope.inputArray.localVars.localWidgetId;\r\n \r\n let update_presentation_id = function(data)\r\n {\r\n if (data[$scope.inputArray.LocalId]>0 && ($scope.inputArray.PresentationId==null || $scope.inputArray.PresentationId==0)) $scope.inputArray.PresentationId = data[$scope.inputArray.LocalId];\r\n //unsubscribe here later after implementing unsubscribe - ToDo\r\n \r\n }\r\n \r\n if ($scope.inputArray.PresentationId==0 || $scope.inputArray.PresentationId==null)\r\n {\r\n \r\n let resource_id = $scope.resourceDefinition.ResourceDefId;\r\n if (resource_id==undefined) resource_id = $scope.resourceDefinition.ResourceDefId_id;\r\n let dependent_field = $scope.inputArray.LocalId;\r\n let subscribedSubject = \"formDefinitionState\"+resource_id+$scope.resourceDefinition.form_type;\r\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"formSaved\",update_presentation_id);\r\n }\r\n\r\n \r\n let columnId = $scope.gridType+'_'+$scope.resourceDefinition.ResourceDefId_id+'_'+$scope.inputArray.ElementType+'_'+$scope.parent.id+'_'+$scope.inputArray.id;\r\n let formChangesSubject = 'datasetFormState'+$scope.resourceDefinition.ResourceDefId_id;\r\n //let originalColumn = angular.copy($scope.inputArray); \r\n //Add Subject to katalyo state manager (name must be unique)\r\n //let columnSubject = $scope.ksm.addSubject(columnId,angular.copy($scope.inputArray));\r\n \r\n //define fn for applyChange action \r\n /*\r\n let changed_item= function(data)\r\n {\r\n \r\n //scope.inputArray = data; \r\n if (!$scope.syncFromObserver)\r\n {\r\n columnSubject.subject.setState = angular.copy($scope.inputArray);\r\n columnSubject.subject.notifyObservers();\r\n }\r\n \r\n };\r\n \r\n //add action to subject rowSubject\r\n let action_change_column = $scope.ksm.addAction(columnSubject.subject.name,\"applyChangeToColumn\",changed_item); \r\n */\r\n \r\n \r\n \r\n \r\n \r\n //define fn to sync to manager \r\n let process_undo = function(data,action)\r\n {\r\n if (data!==undefined)\r\n {\r\n let columnData = data.oldData;\r\n if (data.id===columnId && action===\"undoDatasetFormChange\")\r\n \r\n {\r\n $scope.parent.layout[$scope.index] = columnData;\r\n $scope.ksm.executeAction(formChangesSubject,\"undoDatasetFormChangeDone\"); \r\n $scope.syncFromObserver=true;\r\n }\r\n }\r\n };\r\n \r\n //define fn to sync to manager \r\n let process_redo = function(data,action)\r\n {\r\n if (data!==undefined)\r\n {\r\n let columnData = data.newData;\r\n if (data.id===columnId && action===\"redoDatasetFormChange\")\r\n \r\n {\r\n \r\n $scope.parent.layout[$scope.index] = columnData;\r\n $scope.syncFromObserver=true;\r\n \r\n }\r\n }\r\n };\r\n \r\n //create observer if change comes from someplace else (e.g. undo or from server)\r\n let observer_undo = $scope.ksm.subscribe(formChangesSubject,columnId,\"undoDatasetFormChange\",process_undo);\r\n //create observer if change comes from someplace else (e.g. undo or from server)\r\n let observer_redo = $scope.ksm.subscribe(formChangesSubject,columnId,\"redoDatasetFormChange\",process_redo);\r\n \r\n // if ($scope.formParams.formViewType!==2 && ($scope.formParamsParent.formViewType!==2 || $scope.formParamsParent===undefined)) \r\n // {\r\n \r\n /****************** remove bloody watchers that kill the application START ****************************************\r\n $scope.$watch('inputArray.layout',function(newValue,oldValue){\r\n \r\n //process object change\r\n if (newValue.length!==oldValue.length && !$scope.syncFromObserver)\r\n {\r\n //$scope.ksm.executeAction(columnSubject.subject.name,'applyChangeToColumn',angular.copy(newValue));\r\n $scope.ksm.executeAction(formChangesSubject,\"datasetFormChanged\",{'id':columnId,'source':columnId,'oldData':angular.copy(oldValue),'newData':angular.copy(newValue)});\r\n } else $scope.syncFromObserver=false; \r\n \r\n });\r\n \r\n $scope.$watch('inputArray',function(newValue,oldValue){\r\n \r\n //process object change\r\n if (newValue.SizeX!==oldValue.SizeX && !$scope.syncFromObserver)\r\n {\r\n //$scope.ksm.executeAction(columnSubject.subject.name,'applyChangeToColumn',angular.copy(newValue));\r\n $scope.ksm.executeAction(formChangesSubject,\"datasetFormChanged\",{'id':columnId,'source':columnId,'oldData':angular.copy(oldValue),'newData':angular.copy(newValue)});\r\n } else $scope.syncFromObserver=false; \r\n \r\n });\r\n \r\n //}\r\n ***************** remove bloody watchers that kill the application END ****************************************/\r\n \r\n $scope.addColumn = function (row,type)\r\n {\r\n \r\n let lindex = $scope.index+type;\r\n let size = $scope.inputArray.SizeX; \r\n let newColumn = GridsterService.getEmptyColumnWithId($scope.allColumns);\r\n \r\n newColumn.SizeX = size;\r\n //let oldRow = angular.copy(row);\r\n //let oldRow = clone(row);\r\n row.layout.splice(lindex,0, newColumn);\r\n //let newRow = clone(row);\r\n //let source = $scope.gridType+'_'+$scope.resourceDefinition.ResourceDefId_id+'_'+row.ElementType+'_'+row.ContainerId+'_'+row.id;\r\n //$scope.ksm.executeAction(formChangesSubject,\"datasetFormChanged\",{'id':source,'source':source,'oldData':oldRow,'newData':newRow });\r\n $scope.gsrvc.selectedFieldParent.countActive++;\r\n };\r\n \r\n \r\n \r\n \r\n if ($scope.gridType==\"\" || $scope.gridType==undefined) {\r\n $scope.gridType=\"resource\";\r\n }\r\n \r\n $scope.getClass = function(size)\r\n {\r\n \r\n return \"col-lg-\"+size;\r\n \r\n };\r\n \r\n $scope.setpOpen = function(value)\r\n {\r\n $scope.pOpen=value;\r\n };\r\n \r\n $scope.setHandle = function (type){\r\n return \"column-\"+type+\"-handle\";\r\n };\r\n \r\n \r\n $scope.addRow = function (){\r\n $scope.inputArray.layout.push(GridsterService.getEmptyRowWithId($scope.inputArray));\r\n };\r\n \r\n\r\n \r\n \r\n $scope.showHideProperties = function(value)\r\n {\r\n $scope.gsrvc.setFieldPropertiesOpened(value);\r\n $scope.showFieldProperties=$scope.gsrvc.getFieldPropertiesOpened();\r\n \r\n };\r\n \r\n $scope.splitColumn = function (column)\r\n {\r\n \r\n var splitColumn = GridsterService.getNewRowForSplitColumn($scope.allRows,column);\r\n $scope.parent.layout.splice($scope.parent.layout.indexOf(column),1,splitColumn);\r\n };\r\n \r\n \r\n $scope.remove = function (item){\r\n //debugger\r\n\t\t\t\t\t\t\r\n if (item.layout.length==0) {\r\n if ($scope.parent==undefined){\r\n $scope.allColumns.splice($scope.allColumns.indexOf(item), 1);\r\n } else {\r\n $scope.parent.layout.splice($scope.parent.layout.indexOf(item), 1); \r\n }\r\n }\r\n \r\n };\r\n \r\n const subjectCol= $scope.resourceDefinition.page_state_id+\"-\"+$scope.inputArray.UuidRef\r\n\r\n let valueState= $scope.ksm.addSubject(subjectCol,null);\r\n const valueStateName = valueState.subject.name;\r\n \r\n let show_field = function(data)\r\n {\r\n $scope.inputArray.ShowField = true\r\n let state = data\r\n state['val'] = true\r\n valueState.subject.setStateChanges = state\r\n valueState.subject.notifyObservers(\"showField\",state)\r\n }\r\n let hide_field = function(data)\r\n {\r\n $scope.inputArray.ShowField = false\r\n let state = data\r\n state['val'] = true\r\n valueState.subject.setStateChanges = state\r\n valueState.subject.notifyObservers(\"hideField\",state)\r\n }\r\n\r\n let toggle_visibility = function(data)\r\n {\r\n $scope.inputArray.ShowField = !$scope.inputArray.ShowField\r\n let state = data\r\n state['val'] = $scope.inputArray.ShowField\r\n valueState.subject.setStateChanges = state\r\n valueState.subject.notifyObservers(\"toggleVisibility\",data) \r\n }\r\n\r\n let action_show = $scope.ksm.addAction(valueStateName,\"showField\",show_field);\r\n let action_hide = $scope.ksm.addAction(valueStateName,\"hideField\",hide_field);\r\n let action_toggle = $scope.ksm.addAction(valueStateName,\"toggleVisibility\",toggle_visibility);\r\n \r\n \r\n // ng-click=\"fd.localVars.gsrvc.setConfirmDeleteElement(false); localVars.gsrvc.deleteElement(fd)\">\r\n $scope.inputArray.localVars.confirmAndDeleteElement = function (yesno , fdvalue) // delete Column\r\n {\r\n //debugger\r\n $scope.inputArray.localVars.gsrvc_setConfirmDeleteElement(yesno)\r\n $scope.inputArray.localVars.gsrvc_deleteElement(fdvalue)\r\n } \r\n \r\n \r\n \r\n $scope.deleteElement = function (index) // delete Column - not used ??\r\n {\r\n debugger\r\n $scope.inputArray.localVars.gsrvc.deleteElement($scope.inputArray)\r\n } \r\n \r\n $scope.inputArray.select = function(selected)\r\n {\r\n $scope.inputArray.selected=selected;\r\n }\r\n \r\n $scope.inputArray.selectBorder = function(selected)\r\n {\r\n $scope.inputArray.selectedBorder=selected;\r\n }\r\n \r\n let template;\r\n if ($scope.resourceDefinition.form_definition) template = $templateCache.get('ktdirectivetemplates/ktGridColumn.html');\r\n else template = $templateCache.get('ktdirectivetemplates/ktGridColumnExe.html');\r\n \r\n $element.append($compile(template)($scope)); \r\n \r\n }],\r\n \r\n \r\n link: function (scope, elem, attrs) {\r\n \r\n \r\n }\r\n }\r\n};\n'use strict';\r\n\r\nexport function ktGridRow () {\r\n return {\r\n restrict: 'A',\r\n scope:{\r\n row : '=',\r\n allRows: \"=\",\r\n parent: \"=\",\r\n gridType: '=',\r\n formType: '=',\r\n resourceDefinition: '=', \r\n formParams:'=',\r\n formParamsParent:'=',\r\n showSearchFilters:'=',\r\n parentResourceDefId: '=',\r\n resourceRecordId: '=',\r\n resourceFormLoaded : '=',\r\n formData : '=', \r\n params:'=?',\r\n parentWidget:'=?', \r\n \t\t\t},\r\n \r\n controller: ['$scope','GridsterService','WidgetDataExchangeService','$timeout','dragulaService','$rootScope','KatalyoStateManager','$compile','$element','$templateCache',\r\n function($scope,GridsterService,WidgetDataExchangeService,$timeout,dragulaService,$rootScope,KatalyoStateManager,$compile,$element,$templateCache)\r\n {\r\n $scope.CTRL = 'ktGridRow';\r\n $scope.gsrvc = GridsterService;\r\n $scope.row.localVars = {}\r\n $scope.row.localVars.gsrvc = () => GridsterService\r\n $scope.ksm = KatalyoStateManager;\r\n \r\n //let originalRow = angular.copy($scope.row); // TODO - Zasto je ovo tu ako se ne koristi??? MIGOR\r\n let rowId = $scope.gridType+'_'+$scope.resourceDefinition.ResourceDefId_id+'_'+$scope.row.ElementType+'_'+$scope.row.ContainerId+'_'+$scope.row.id;\r\n let formChangesSubject = 'datasetFormState'+$scope.resourceDefinition.ResourceDefId_id;\r\n \r\n var widgetDefinition = {name: 'row',widgetId: $scope.row.PresentationId,task_initiate_id:$scope.taskInitiateId,task_execute_id:$scope.taskExecuteId,taskId: $scope.lTaskId};\r\n $scope.row.localWidgetId = WidgetDataExchangeService.registerWidget(widgetDefinition);\r\n $scope.row.LocalId=$scope.row.localWidgetId;\r\n \r\n $scope.$on(\"$destroy\", function() {\r\n //debugger\r\n //dragulaService.destroy($rootScope, dragula_bag);\r\n // TODO - Check is dragula is properly destroying bags (if not - manually destroy)\r\n });\r\n \r\n \r\n /**********************************************************************\r\n ****************** Sync data with State manager **********************\r\n ***********************************************************************/\r\n let dependent_field_pid = $scope.row.LocalId;\r\n let resource_id = $scope.resourceDefinition.ResourceDefId\r\n let subscribedSubjectPid = \"formDefinitionState\"+resource_id+$scope.resourceDefinition.form_type;\r\n let dependent_field_pid2\r\n \r\n \r\n let update_presentation_id2 = function(data) \r\n {\r\n let presentation_id = angular.copy($scope.row.PresentationId)\r\n if (data[presentation_id]!==undefined)\r\n {\r\n $scope.row.PresentationId = data[presentation_id];\r\n //unsubscribe here later after implementing unsubscribe - ToDo\r\n dependent_field_pid2 = $scope.row.PresentationId\r\n let observerPid2 = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid2,\"formSaved\",update_presentation_id2);\r\n }\r\n }\r\n \r\n let update_presentation_id = function(data) \r\n {\r\n if (data[$scope.row.LocalId]>0 && $scope.row.PresentationId==0 && data[$scope.row.LocalId]!==undefined) $scope.row.PresentationId = data[$scope.row.LocalId]; \r\n let observerPid2 = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid2,\"formSaved\",update_presentation_id2);\r\n //unsubscribe here later after implementing unsubscribe - ToDo\r\n }\r\n \r\n \r\n if ($scope.row.PresentationId===null || $scope.row.PresentationId===0) {\r\n let observerPid = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid,\"formSaved\",update_presentation_id);\r\n } else{\r\n dependent_field_pid2 = $scope.row.PresentationId\r\n let observerPid2 = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid2,\"formSaved\",update_presentation_id2);\r\n }\r\n \r\n\r\n $scope.isFormViewTypeEqual = function(what) {\r\n let gsrvcType= $scope.gsrvc.getFormViewType() \r\n if ( gsrvcType == what) return true;\r\n return false; \r\n }\r\n \r\n \r\n \r\n $scope.oldprintRow = function(pid) {// STILL USED !!!\r\n \r\n let x=document.getElementById('row'+pid)\r\n x.classList.add(\"printme\");\r\n \r\n var doc = document.implementation.createHTMLDocument('My title'); \r\n doc.head.innerHTML+=' ' \r\n doc.head.innerHTML+=' '\r\n doc.body.innerHTML+='
TEST
'\r\n\r\n var strWindowFeatures = \"location=yes,height=570,width=520,scrollbars=yes,status=yes\";\r\n var win = window.open(\"\", \"_blank\", strWindowFeatures);\r\n \r\n //win.document.open();\r\n //win.document.write('
');\r\n //win.document.close();\r\n \r\n var loadingscreen = document.getElementById('loadingscreen')\r\n if (loadingscreen) loadingscreen.parentNode.removeChild(loadingscreen); \r\n \r\n var gridloading= document.getElementById('gridloading') \r\n if (gridloading) gridloading.parentNode.removeChild(gridloading); \r\n \r\n var printContents = document.getElementById('row'+pid)\r\n //var com = $compile(printContents)($scope);\r\n \r\n htmlTree(printContents) \r\n win.document.body.innerHTML = printContents.innerHTML;\r\n\r\n $timeout(function() { \r\n// win.print(); \r\n }); \r\n \r\n }\r\n\r\n $scope.printRow = function(pid) {\r\n \r\n let x=document.getElementById('row'+pid)\r\n x.classList.add(\"printme\");\r\n \r\n var doc = document.implementation.createHTMLDocument('My title'); \r\n doc.head.innerHTML+=' ' \r\n doc.head.innerHTML+=' '\r\n doc.body.innerHTML+='
TEST
'\r\n\r\n //var URL = \"https://localhost:8080;url=\" + location.href;\r\n var strWindowFeatures = \"location=yes,height=570,width=520,scrollbars=yes,status=yes\";\r\n //var win = window.open(\"\", \"_blank\", strWindowFeatures);\r\n \r\n // win.document.open();\r\n //win.document.write('
');\r\n //win.document.close();\r\n \r\n var loadingscreen = document.getElementById('loadingscreen')\r\n if (loadingscreen) loadingscreen.parentNode.removeChild(loadingscreen); \r\n \r\n var gridloading= document.getElementById('gridloading') \r\n if (gridloading) gridloading.parentNode.removeChild(gridloading); \r\n \r\n //var printContents = document.getElementById('row'+pid)\r\n \r\n //var com = $compile(printContents)($scope);\r\n //win.document.body.innerHTML = com[0].innerHTML \r\n //win.document.body.innerHTML = printContents.innerHTML;\r\n $timeout(function() { window.print(); }); \r\n \r\n // win.document = document.getElementById('row'+pid).cloneNode(true);\r\n \r\n }\r\n \r\n //define fn to sync to manager \r\n let process_undo = function(data,action) \r\n {\r\n if (data!==undefined) {\r\n let rowData = data.oldData;\r\n if (data.id===rowId && action===\"undoDatasetFormChange\") {\r\n $scope.row = rowData;\r\n $scope.ksm.executeAction(formChangesSubject,\"undoDatasetFormChangeDone\"); \r\n $scope.syncFromObserver=true;\r\n }\r\n }\r\n };\r\n \r\n //define fn to sync to manager \r\n let process_redo = function(data,action) \r\n {\r\n if (data!==undefined) {\r\n let rowData = data.newData;\r\n if (data.id===rowId && action===\"redoDatasetFormChange\") {\r\n $scope.row = rowData;\r\n $scope.syncFromObserver=true;\r\n }\r\n }\r\n };\r\n \r\n //create observer if change comes from someplace else (e.g. undo or from server)\r\n let observer_undo = $scope.ksm.subscribe(formChangesSubject,rowId,\"undoDatasetFormChange\",process_undo);\r\n //create observer if change comes from someplace else (e.g. undo or from server)\r\n let observer_redo = $scope.ksm.subscribe(formChangesSubject,rowId,\"redoDatasetFormChange\",process_redo);\r\n \r\n $scope.addColumn = function (row){\r\n row.layout.push($scope.gsrvc.getEmptyColumnWithId($scope.parent.layout)); \r\n };\r\n $scope.addRowAbove = function (row){\r\n $scope.parent.layout.splice($scope.parent.layout.indexOf(row),0, GridsterService.getEmptyRowWithId($scope.allRows));\r\n };\r\n \r\n $scope.addRowBelow = function (row){\r\n $scope.parent.layout.splice($scope.parent.layout.indexOf(row)+1,0, GridsterService.getEmptyRowWithId($scope.allRows));\r\n };\r\n $scope.getClass = function(size) { \r\n return \"col-lg-\"+size; \r\n };\r\n \r\n $scope.getHandle = function(){\r\n return \"row-\"+$scope.gridType+\"-handle\"; \r\n };\r\n \r\n $scope.setHandle = function (type){\r\n return type+\"-handle\";\r\n };\r\n if ($scope.row.Parameters==undefined) $scope.row.Parameters={};\r\n if ($scope.row.Parameters.BackgroundOpacity==null || $scope.row.Parameters.BackgroundOpacity==undefined ) $scope.row.Parameters.BackgroundOpacity=1;\r\n \r\n \r\n $scope.row.BackRepeatChanged = function (){ \r\n if ($scope.row.Parameters.RepeatBackImg) $scope.row.Parameters.RepeatBackText = 'repeat';\r\n else $scope.row.Parameters.RepeatBackText = 'no-repeat';\r\n };\r\n \r\n\t\t\t\t \r\n\t\t\t\t /*\r\n $scope.$watch('row',function(newValue,oldValue){\r\n \r\n if (newValue!==oldValue && !$scope.syncFromObserver) {\r\n $scope.ksm.executeAction(formChangesSubject,\"addDatasetFormChange\",{'id':rowId,'data':angular.copy(oldValue)});\r\n } else $scope.syncFromObserver=false; \r\n \r\n });*/\r\n \r\n \r\n var widgetHandle = $scope.setHandle($scope.gridType+'-column-drag');\r\n \r\n var bag = dragulaService.find($scope, 'bag-columns-'+$scope.gridType);\r\n \r\n if (bag) {\r\n dragulaService.destroy($scope, 'bag-columns-'+$scope.gridType);\r\n }\r\n dragulaService.options($scope, 'bag-columns-'+$scope.gridType, {\r\n revertOnSpill: true,\r\n removeOnSpill: false,\r\n direction:'vertical',\r\n accept:function (el,target, source) {\r\n return false;\r\n },\r\n moves: function (el, container, handle) {\r\n return handle.classList.contains(widgetHandle);\r\n }\r\n });\r\n\r\n $scope.row.downloadImage = function(fileDefId,fileId){\r\n ResourcesDataService.downloadFile(fileDefId,fileId).then(function(data) {\r\n \r\n \r\n var url = URL.createObjectURL(new Blob([data.data]));\r\n $scope.row.Parameters.BackgroundImageUrl=url\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n \r\n });\r\n };// dowload image END\r\n\r\n if ($scope.row.Parameters.FileDefId?.id>0 && $scope.row.Parameters.FileId>0) $scope.row.downloadImage($scope.row.Parameters.FileDefId?.id,$scope.row.Parameters.FileId);\r\n\r\n \r\n let template;\r\n if ($scope.resourceDefinition.form_definition) {\r\n template = $templateCache.get('ktdirectivetemplates/ktGridRow.html');\r\n }\r\n else template = $templateCache.get('ktdirectivetemplates/ktGridRowExe.html');\r\n \r\n $element.append($compile(template)($scope)); \r\n \r\n }],\r\n \r\n link: function (scope, elem, attrs) {\r\n \r\n\r\n // if (scope.formParams.formViewType!==2 && (scope.formParamsParent.formViewType!==2 || scope.formParamsParent===undefined)) \r\n // {\r\n \r\n /*\r\n scope.$watch('row.layout',function(newValue,oldValue){\r\n \r\n //process object change\r\n if (newValue.length!==oldValue.length && !scope.syncFromObserver)\r\n {\r\n scope.ksm.executeAction(formChangesSubject,\"addDatasetFormChange\",{'id':rowId,'data':angular.copy(oldValue)});\r\n } else scope.syncFromObserver=false; \r\n \r\n },true);\r\n */\r\n \r\n }\r\n };\r\n };\r\n \r\n \r\n \r\nexport function htmlTree (obj){\r\n var obj = obj || document.getElementsByTagName('body')[0];\r\n var str=\"\"\r\n \r\n \r\n if (obj.tagName == 'INPUT') {\r\n if (obj.value) obj.setAttribute(\"value\", obj.value); \r\n // output.push(obj);\r\n }\r\n if (obj.hasChildNodes()) {\r\n var child = obj.firstChild;\r\n while (child) {\r\n if (child.nodeType === 1 && child.nodeName != 'SCRIPT'){\r\n str += htmlTree(child) + \".\";\r\n }\r\n child = child.nextSibling;\r\n }\r\n }\r\n \r\n if (obj.classList.contains('noprint' )) \r\n { \r\n obj.remove()\r\n }\r\n return \"\";\r\n }\n'use strict';\r\n\r\nexport function ktGroup () {\r\n\r\n return {\r\n restrict: 'A',\r\n templateUrl: 'ktdirectivetemplates/ktGroup.html',\r\n controller:function($scope,UserService,$rootScope,GridsterService){\r\n \r\n $scope.gsrvc = GridsterService;\r\n if ($scope.localVars==undefined) $scope.localVars={};\r\n //MIGOR START\r\n $scope.search=[\r\n {id:1,filter:'onlist',name:\"On list:\",icon:\"fa fa-chevron-right\"},\r\n {id:2,filter:'notonlist',name:\"Not on list:\",icon:\"fa fa-expand\"},\r\n ];\r\n\t\t\t\t\r\n if ($scope.fd!=undefined) {\r\n if ($scope.fd.search==undefined)\r\n {\r\n $scope.fd.search=$scope.search[0]; //MIGOR TODO - greska kod incijacije za multiple , mozda treba kod promjene na multiple ovo jos jednom okinuti\r\n }\r\n } \r\n\r\n\t\t\t $scope.applyListFilters = function(index) {\r\n \r\n\t\t\t\t $scope.fd.search=$scope.search[index];\r\n if( typeof $scope.formData[0][$scope.fd.FieldName] === 'string' ) {\r\n //$scope.fd.search.value = [ $scope.fd.sItemValue ];\r\n $scope.fd.search.value = [ {'id':$scope.formData[0][$scope.fd.FieldName]} ];\r\n }\r\n //if ($scope.fd.search.name==\"Equals\") $scope.fd.search=null;\r\n\t\t\t\t $scope.isOpen=false;\t\t\r\n\t\t\t \t};\r\n \r\n //MIGOR END\r\n \r\n $scope.showProperties = function(event)\r\n {\r\n $scope.gsrvc.setFieldProperties($scope.fd,event);\r\n }; \r\n\t\t\t\r\n\t\t\tif ($scope.fd.localVars==undefined) $scope.fd.localVars={}\r\n\r\n $scope.groupItem = {selectedGroup : null};\r\n \r\n $scope.populateGroup = function (item,model) { \r\n \r\n $scope.selectedGroup = item;\r\n $scope.fd.codeId = item.id;\r\n $scope.formData[0][$scope.fd.FieldName]=item.id;\r\n \r\n $scope.fd.search.value = [ {'id':$scope.formData[0][$scope.fd.FieldName]} ]; //MIGOR TODO - vidjeti da li ovjde siTemValue ( provjeriti i ostale sluèajeve u onselect funkciji)\r\n\r\n \t\t\t\t};\r\n\r\n \r\n $scope.getGroups = function () {\r\n UserService.getUsersGroups('groups').then(function(data){\r\n \r\n $scope.groupList = data.data;\r\n \r\n if ($scope.formData!=undefined && $scope.formData.length>0)\r\n {\r\n if ($scope.formData[0][$scope.fd.FieldName]!=null) {\r\n UserService.getGroupObjectById($scope.formData[0][$scope.fd.FieldName]).then(function(data){\r\n $scope.selectedGroup = data;\r\n $scope.groupItem.selectedGroup=$scope.selectedGroup;\r\n \r\n });\r\n \r\n \r\n }\r\n else if ($scope.formData[0][$scope.fd.FieldName]!=null) {\r\n \r\n if ($scope.formData[0][$scope.fd.FieldName].length>0)\r\n {\r\n if ($scope.formData[0][$scope.fd.FieldName][0]!=undefined)\r\n {\r\n UserService.getGroupObjectById($scope.formData[0][$scope.fd.FieldName][0]).then(function(data){\r\n $scope.selectedGroup = data;\r\n $scope.groupItem.selectedGroup=$scope.selectedGroup;\r\n $scope.formData[0][$scope.fd.FieldName]=$scope.selectedGroup.id;\r\n });\r\n }\r\n \r\n }\r\n }\r\n }\r\n \t\t\t\t});\r\n \r\n }\r\n \r\n \r\n $scope.$watch('groupItem.selectedGroup', function(newValue,oldValue){\r\n //debugger\r\n if ($scope.formData && newValue) $scope.formData[0][$scope.fd.FieldName]=newValue.id;\r\n });\r\n $scope.clear = function(event,select)\r\n {\r\n $scope.formData[0][$scope.fd.FieldName] = null;\r\n $scope.fd.search.value = null;\r\n $scope.groupItem.selectedGroup = null;\r\n }\r\n \r\n \t\t\t\t$scope.getGroups();\r\n \r\n \r\n \r\n },\r\n link: function (scope, elem, attrs) {\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n }\r\n \r\n};\n'use strict';\r\n\r\nexport function ktHeader () {\r\n return {\r\n restrict: 'A',\r\n\t\t\t controller: function ($scope) {},\r\n templateUrl: 'ktdirectivetemplates/ktHeader.html',\r\n controller:function($scope,KatalyoStateManager,WidgetDataExchangeService)\r\n { \r\n \r\n if ($scope.fd.localVars===undefined) $scope.fd.localVars={}\r\n var widgetDefinition = {name: 'header',widgetId: $scope.fd.PresentationId,task_initiate_id:$scope.taskInitiateId,task_execute_id:$scope.taskExecuteId,taskId: $scope.lTaskId};\r\n $scope.fd.localVars.localWidgetId = WidgetDataExchangeService.registerWidget(widgetDefinition);\r\n $scope.fd.LocalId=$scope.fd.localVars.localWidgetId;\r\n if ($scope.fd.localVars == undefined ) \r\n $scope.fd.localVars = {showMenu: false }\r\n \r\n $scope.fd.localVars.PropertyElements=['ktFieldBorderProperty.html']\r\n \r\n\r\n $scope.fd.localVars.taskId=$scope.resourceDefinition.ResourceDefId;\r\n if ($scope.fd.localVars.taskId==undefined) $scope.fd.localVars.taskId=$scope.resourceDefinition.ResourceDefId_id;\r\n if ($scope.fd.localVars.taskId==undefined) $scope.fd.localVars.taskId=0;\r\n \r\n\r\n $scope.fd.localVars.toggleDropdown = function(){\r\n $scope.fd.localVars.showMenu = $scope.fd.localVars.showMenu ? false: true \r\n }\r\n \r\n \r\n $scope.ksm = KatalyoStateManager;\r\n let update_presentation_id = function(data)\r\n {\r\n if (data[$scope.fd.LocalId]>0 && ($scope.fd.PresentationId==null || $scope.fd.PresentationId==0)) $scope.fd.PresentationId = data[$scope.fd.LocalId];\r\n //unsubscribe here later after implementing unsubscribe - ToDo\r\n \r\n }\r\n if ($scope.fd.PresentationId==0 || $scope.fd.PresentationId==null)\r\n {\r\n \r\n let dependent_field = $scope.fd.LocalId;\r\n let subscribedSubject = \"formDefinitionState\"+$scope.fd.localVars.taskId+$scope.resourceDefinition.form_type;\r\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"formSaved\",update_presentation_id);\r\n \r\n }\r\n\r\n\r\n },\r\n link: function (scope, elem, attrs) {\r\n \r\n if (scope.fd==undefined) scope.fd={};\r\n\r\n if (scope.fd.Parameters==undefined) scope.fd.Parameters={};\r\n if (scope.fd.Parameters.BackgroundOpacity==null || scope.fd.Parameters.BackgroundOpacity==undefined ) scope.fd.Parameters.BackgroundOpacity=1;\r\n\r\n\r\n\r\n }\r\n };\r\n};\n'use strict';\r\n\r\nexport function ktHelpCenter (KatalyoStateManager,SettingsService,MessagingService) {\r\n return {\r\n restrict: 'A',\r\n scope:{\r\n helpId : '=',\r\n position : '=?',\r\n \r\n },\r\n\t\t\t controller: function ($scope) {},\r\n templateUrl: 'ktdirectivetemplates/ktHelpCenter.html',\r\n \r\n link: function (scope, elem, attrs) {\r\n scope.showHelp = false\r\n scope.ksm = KatalyoStateManager;\r\n if (!scope.position) scope.position='fixed'\r\n \r\n //get page by helpId\r\n SettingsService.getHelpPage(scope.helpId).then(function(data) {\r\n \r\n scope.pageId = data?.data?.pageid\r\n scope.pVer = data?.data?.pagev\r\n scope.pageEnvId = data?.data?.envid\r\n scope.exeUserId = data?.data?.exeuser\r\n scope.pageMaxWidth = data?.data?.maxwidth\r\n scope.statusCode=data.status\r\n \r\n },function(error){\r\n scope.statusCode = error.status\r\n\r\n if (scope.statusCode!=404) MessagingService.addMessage(error.msg,'error')\r\n });\r\n \r\n scope.showHideHelp = function(show){\r\n if (!scope.firstClick) scope.firstClick=true\r\n scope.showHelp = show\r\n }\r\n }\r\n };\r\n};\n'use strict';\r\n\r\nexport function ktIconPicker ($timeout) {\r\n return {\r\n restrict: 'A',\r\n controller: function($scope){ \r\n $scope.allButtons=['btn-primary','btn-light','btn-dark','btn-success','btn-danger','btn-info','btn-warning','btn-outline-primary','btn-outline-light','btn-outline-dark','btn-outline-success','btn-outline-danger','btn-outline-info','btn-outline-warning','btn-link'];\r\n $scope.icons = [{\"full\": \"fab fa-500px\",\"shorty\": \"500px\"},{\"full\": \"fab fa-accessible-icon\",\"shorty\": \"accessible-icon\"},{\"full\": \"fab fa-accusoft\",\"shorty\": \"accusoft\"},{\"full\": \"fab fa-adn\",\"shorty\": \"adn\"},{\"full\": \"fab fa-adversal\",\"shorty\": \"adversal\"},{\"full\": \"fab fa-affiliatetheme\",\"shorty\": \"affiliatetheme\"},{\"full\": \"fab fa-algolia\",\"shorty\": \"algolia\"},{\"full\": \"fab fa-alipay\",\"shorty\": \"alipay\"},{\"full\": \"fab fa-amazon\",\"shorty\": \"amazon\"},{\"full\": \"fab fa-amazon-pay\",\"shorty\": \"amazon-pay\"},{\"full\": \"fab fa-amilia\",\"shorty\": \"amilia\"},{\"full\": \"fab fa-android\",\"shorty\": \"android\"},{\"full\": \"fab fa-angellist\",\"shorty\": \"angellist\"},{\"full\": \"fab fa-angrycreative\",\"shorty\": \"angrycreative\"},{\"full\": \"fab fa-angular\",\"shorty\": \"angular\"},{\"full\": \"fab fa-app-store\",\"shorty\": \"app-store\"},{\"full\": \"fab fa-app-store-ios\",\"shorty\": \"app-store-ios\"},{\"full\": \"fab fa-apper\",\"shorty\": \"apper\"},{\"full\": \"fab fa-apple\",\"shorty\": \"apple\"},{\"full\": \"fab fa-apple-pay\",\"shorty\": \"apple-pay\"},{\"full\": \"fab fa-asymmetrik\",\"shorty\": \"asymmetrik\"},{\"full\": \"fab fa-audible\",\"shorty\": \"audible\"},{\"full\": \"fab fa-autoprefixer\",\"shorty\": \"autoprefixer\"},{\"full\": \"fab fa-avianex\",\"shorty\": \"avianex\"},{\"full\": \"fab fa-aviato\",\"shorty\": \"aviato\"},{\"full\": \"fab fa-aws\",\"shorty\": \"aws\"},{\"full\": \"fab fa-bandcamp\",\"shorty\": \"bandcamp\"},{\"full\": \"fab fa-behance\",\"shorty\": \"behance\"},{\"full\": \"fab fa-behance-square\",\"shorty\": \"behance-square\"},{\"full\": \"fab fa-bimobject\",\"shorty\": \"bimobject\"},{\"full\": \"fab fa-bitbucket\",\"shorty\": \"bitbucket\"},{\"full\": \"fab fa-bitcoin\",\"shorty\": \"bitcoin\"},{\"full\": \"fab fa-bity\",\"shorty\": \"bity\"},{\"full\": \"fab fa-black-tie\",\"shorty\": \"black-tie\"},{\"full\": \"fab fa-blackberry\",\"shorty\": \"blackberry\"},{\"full\": \"fab fa-blogger\",\"shorty\": \"blogger\"},{\"full\": \"fab fa-blogger-b\",\"shorty\": \"blogger-b\"},{\"full\": \"fab fa-bluetooth\",\"shorty\": \"bluetooth\"},{\"full\": \"fab fa-bluetooth-b\",\"shorty\": \"bluetooth-b\"},{\"full\": \"fab fa-btc\",\"shorty\": \"btc\"},{\"full\": \"fab fa-buromobelexperte\",\"shorty\": \"buromobelexperte\"},{\"full\": \"fab fa-buysellads\",\"shorty\": \"buysellads\"},{\"full\": \"fab fa-cc-amazon-pay\",\"shorty\": \"cc-amazon-pay\"},{\"full\": \"fab fa-cc-amex\",\"shorty\": \"cc-amex\"},{\"full\": \"fab fa-cc-apple-pay\",\"shorty\": \"cc-apple-pay\"},{\"full\": \"fab fa-cc-diners-club\",\"shorty\": \"cc-diners-club\"},{\"full\": \"fab fa-cc-discover\",\"shorty\": \"cc-discover\"},{\"full\": \"fab fa-cc-jcb\",\"shorty\": \"cc-jcb\"},{\"full\": \"fab fa-cc-mastercard\",\"shorty\": \"cc-mastercard\"},{\"full\": \"fab fa-cc-paypal\",\"shorty\": \"cc-paypal\"},{\"full\": \"fab fa-cc-stripe\",\"shorty\": \"cc-stripe\"},{\"full\": \"fab fa-cc-visa\",\"shorty\": \"cc-visa\"},{\"full\": \"fab fa-centercode\",\"shorty\": \"centercode\"},{\"full\": \"fab fa-chrome\",\"shorty\": \"chrome\"},{\"full\": \"fab fa-cloudscale\",\"shorty\": \"cloudscale\"},{\"full\": \"fab fa-cloudsmith\",\"shorty\": \"cloudsmith\"},{\"full\": \"fab fa-cloudversify\",\"shorty\": \"cloudversify\"},{\"full\": \"fab fa-codepen\",\"shorty\": \"codepen\"},{\"full\": \"fab fa-codiepie\",\"shorty\": \"codiepie\"},{\"full\": \"fab fa-connectdevelop\",\"shorty\": \"connectdevelop\"},{\"full\": \"fab fa-contao\",\"shorty\": \"contao\"},{\"full\": \"fab fa-cpanel\",\"shorty\": \"cpanel\"},{\"full\": \"fab fa-creative-commons\",\"shorty\": \"creative-commons\"},{\"full\": \"fab fa-creative-commons-by\",\"shorty\": \"creative-commons-by\"},{\"full\": \"fab fa-creative-commons-nc\",\"shorty\": \"creative-commons-nc\"},{\"full\": \"fab fa-creative-commons-nc-eu\",\"shorty\": \"creative-commons-nc-eu\"},{\"full\": \"fab fa-creative-commons-nc-jp\",\"shorty\": \"creative-commons-nc-jp\"},{\"full\": \"fab fa-creative-commons-nd\",\"shorty\": \"creative-commons-nd\"},{\"full\": \"fab fa-creative-commons-pd\",\"shorty\": \"creative-commons-pd\"},{\"full\": \"fab fa-creative-commons-pd-alt\",\"shorty\": \"creative-commons-pd-alt\"},{\"full\": \"fab fa-creative-commons-remix\",\"shorty\": \"creative-commons-remix\"},{\"full\": \"fab fa-creative-commons-sa\",\"shorty\": \"creative-commons-sa\"},{\"full\": \"fab fa-creative-commons-sampling\",\"shorty\": \"creative-commons-sampling\"},{\"full\": \"fab fa-creative-commons-sampling-plus\",\"shorty\": \"creative-commons-sampling-plus\"},{\"full\": \"fab fa-creative-commons-share\",\"shorty\": \"creative-commons-share\"},{\"full\": \"fab fa-css3\",\"shorty\": \"css3\"},{\"full\": \"fab fa-css3-alt\",\"shorty\": \"css3-alt\"},{\"full\": \"fab fa-cuttlefish\",\"shorty\": \"cuttlefish\"},{\"full\": \"fab fa-d-and-d\",\"shorty\": \"d-and-d\"},{\"full\": \"fab fa-dashcube\",\"shorty\": \"dashcube\"},{\"full\": \"fab fa-delicious\",\"shorty\": \"delicious\"},{\"full\": \"fab fa-deploydog\",\"shorty\": \"deploydog\"},{\"full\": \"fab fa-deskpro\",\"shorty\": \"deskpro\"},{\"full\": \"fab fa-deviantart\",\"shorty\": \"deviantart\"},{\"full\": \"fab fa-digg\",\"shorty\": \"digg\"},{\"full\": \"fab fa-digital-ocean\",\"shorty\": \"digital-ocean\"},{\"full\": \"fab fa-discord\",\"shorty\": \"discord\"},{\"full\": \"fab fa-discourse\",\"shorty\": \"discourse\"},{\"full\": \"fab fa-dochub\",\"shorty\": \"dochub\"},{\"full\": \"fab fa-docker\",\"shorty\": \"docker\"},{\"full\": \"fab fa-draft2digital\",\"shorty\": \"draft2digital\"},{\"full\": \"fab fa-dribbble\",\"shorty\": \"dribbble\"},{\"full\": \"fab fa-dribbble-square\",\"shorty\": \"dribbble-square\"},{\"full\": \"fab fa-dropbox\",\"shorty\": \"dropbox\"},{\"full\": \"fab fa-drupal\",\"shorty\": \"drupal\"},{\"full\": \"fab fa-dyalog\",\"shorty\": \"dyalog\"},{\"full\": \"fab fa-earlybirds\",\"shorty\": \"earlybirds\"},{\"full\": \"fab fa-ebay\",\"shorty\": \"ebay\"},{\"full\": \"fab fa-edge\",\"shorty\": \"edge\"},{\"full\": \"fab fa-elementor\",\"shorty\": \"elementor\"},{\"full\": \"fab fa-ello\",\"shorty\": \"ello\"},{\"full\": \"fab fa-ember\",\"shorty\": \"ember\"},{\"full\": \"fab fa-empire\",\"shorty\": \"empire\"},{\"full\": \"fab fa-envira\",\"shorty\": \"envira\"},{\"full\": \"fab fa-erlang\",\"shorty\": \"erlang\"},{\"full\": \"fab fa-ethereum\",\"shorty\": \"ethereum\"},{\"full\": \"fab fa-etsy\",\"shorty\": \"etsy\"},{\"full\": \"fab fa-expeditedssl\",\"shorty\": \"expeditedssl\"},{\"full\": \"fab fa-facebook\",\"shorty\": \"facebook\"},{\"full\": \"fab fa-facebook-f\",\"shorty\": \"facebook-f\"},{\"full\": \"fab fa-facebook-messenger\",\"shorty\": \"facebook-messenger\"},{\"full\": \"fab fa-facebook-square\",\"shorty\": \"facebook-square\"},{\"full\": \"fab fa-firefox\",\"shorty\": \"firefox\"},{\"full\": \"fab fa-first-order\",\"shorty\": \"first-order\"},{\"full\": \"fab fa-first-order-alt\",\"shorty\": \"first-order-alt\"},{\"full\": \"fab fa-firstdraft\",\"shorty\": \"firstdraft\"},{\"full\": \"fab fa-flickr\",\"shorty\": \"flickr\"},{\"full\": \"fab fa-flipboard\",\"shorty\": \"flipboard\"},{\"full\": \"fab fa-fly\",\"shorty\": \"fly\"},{\"full\": \"fab fa-font-awesome\",\"shorty\": \"font-awesome\"},{\"full\": \"fab fa-font-awesome-alt\",\"shorty\": \"font-awesome-alt\"},{\"full\": \"fab fa-font-awesome-flag\",\"shorty\": \"font-awesome-flag\"},{\"full\": \"fab fa-fonticons\",\"shorty\": \"fonticons\"},{\"full\": \"fab fa-fonticons-fi\",\"shorty\": \"fonticons-fi\"},{\"full\": \"fab fa-fort-awesome\",\"shorty\": \"fort-awesome\"},{\"full\": \"fab fa-fort-awesome-alt\",\"shorty\": \"fort-awesome-alt\"},{\"full\": \"fab fa-forumbee\",\"shorty\": \"forumbee\"},{\"full\": \"fab fa-foursquare\",\"shorty\": \"foursquare\"},{\"full\": \"fab fa-free-code-camp\",\"shorty\": \"free-code-camp\"},{\"full\": \"fab fa-freebsd\",\"shorty\": \"freebsd\"},{\"full\": \"fab fa-fulcrum\",\"shorty\": \"fulcrum\"},{\"full\": \"fab fa-galactic-republic\",\"shorty\": \"galactic-republic\"},{\"full\": \"fab fa-galactic-senate\",\"shorty\": \"galactic-senate\"},{\"full\": \"fab fa-get-pocket\",\"shorty\": \"get-pocket\"},{\"full\": \"fab fa-gg\",\"shorty\": \"gg\"},{\"full\": \"fab fa-gg-circle\",\"shorty\": \"gg-circle\"},{\"full\": \"fab fa-git\",\"shorty\": \"git\"},{\"full\": \"fab fa-git-square\",\"shorty\": \"git-square\"},{\"full\": \"fab fa-github\",\"shorty\": \"github\"},{\"full\": \"fab fa-github-alt\",\"shorty\": \"github-alt\"},{\"full\": \"fab fa-github-square\",\"shorty\": \"github-square\"},{\"full\": \"fab fa-gitkraken\",\"shorty\": \"gitkraken\"},{\"full\": \"fab fa-gitlab\",\"shorty\": \"gitlab\"},{\"full\": \"fab fa-gitter\",\"shorty\": \"gitter\"},{\"full\": \"fab fa-glide\",\"shorty\": \"glide\"},{\"full\": \"fab fa-glide-g\",\"shorty\": \"glide-g\"},{\"full\": \"fab fa-gofore\",\"shorty\": \"gofore\"},{\"full\": \"fab fa-goodreads\",\"shorty\": \"goodreads\"},{\"full\": \"fab fa-goodreads-g\",\"shorty\": \"goodreads-g\"},{\"full\": \"fab fa-google\",\"shorty\": \"google\"},{\"full\": \"fab fa-google-drive\",\"shorty\": \"google-drive\"},{\"full\": \"fab fa-google-play\",\"shorty\": \"google-play\"},{\"full\": \"fab fa-google-plus\",\"shorty\": \"google-plus\"},{\"full\": \"fab fa-google-plus-g\",\"shorty\": \"google-plus-g\"},{\"full\": \"fab fa-google-plus-square\",\"shorty\": \"google-plus-square\"},{\"full\": \"fab fa-google-wallet\",\"shorty\": \"google-wallet\"},{\"full\": \"fab fa-gratipay\",\"shorty\": \"gratipay\"},{\"full\": \"fab fa-grav\",\"shorty\": \"grav\"},{\"full\": \"fab fa-gripfire\",\"shorty\": \"gripfire\"},{\"full\": \"fab fa-grunt\",\"shorty\": \"grunt\"},{\"full\": \"fab fa-gulp\",\"shorty\": \"gulp\"},{\"full\": \"fab fa-hacker-news\",\"shorty\": \"hacker-news\"},{\"full\": \"fab fa-hacker-news-square\",\"shorty\": \"hacker-news-square\"},{\"full\": \"fab fa-hackerrank\",\"shorty\": \"hackerrank\"},{\"full\": \"fab fa-hips\",\"shorty\": \"hips\"},{\"full\": \"fab fa-hire-a-helper\",\"shorty\": \"hire-a-helper\"},{\"full\": \"fab fa-hooli\",\"shorty\": \"hooli\"},{\"full\": \"fab fa-hornbill\",\"shorty\": \"hornbill\"},{\"full\": \"fab fa-hotjar\",\"shorty\": \"hotjar\"},{\"full\": \"fab fa-houzz\",\"shorty\": \"houzz\"},{\"full\": \"fab fa-html5\",\"shorty\": \"html5\"},{\"full\": \"fab fa-hubspot\",\"shorty\": \"hubspot\"},{\"full\": \"fab fa-imdb\",\"shorty\": \"imdb\"},{\"full\": \"fab fa-instagram\",\"shorty\": \"instagram\"},{\"full\": \"fab fa-internet-explorer\",\"shorty\": \"internet-explorer\"},{\"full\": \"fab fa-ioxhost\",\"shorty\": \"ioxhost\"},{\"full\": \"fab fa-itunes\",\"shorty\": \"itunes\"},{\"full\": \"fab fa-itunes-note\",\"shorty\": \"itunes-note\"},{\"full\": \"fab fa-java\",\"shorty\": \"java\"},{\"full\": \"fab fa-jedi-order\",\"shorty\": \"jedi-order\"},{\"full\": \"fab fa-jenkins\",\"shorty\": \"jenkins\"},{\"full\": \"fab fa-joget\",\"shorty\": \"joget\"},{\"full\": \"fab fa-joomla\",\"shorty\": \"joomla\"},{\"full\": \"fab fa-js\",\"shorty\": \"js\"},{\"full\": \"fab fa-js-square\",\"shorty\": \"js-square\"},{\"full\": \"fab fa-jsfiddle\",\"shorty\": \"jsfiddle\"},{\"full\": \"fab fa-kaggle\",\"shorty\": \"kaggle\"},{\"full\": \"fab fa-keybase\",\"shorty\": \"keybase\"},{\"full\": \"fab fa-keycdn\",\"shorty\": \"keycdn\"},{\"full\": \"fab fa-kickstarter\",\"shorty\": \"kickstarter\"},{\"full\": \"fab fa-kickstarter-k\",\"shorty\": \"kickstarter-k\"},{\"full\": \"fab fa-korvue\",\"shorty\": \"korvue\"},{\"full\": \"fab fa-laravel\",\"shorty\": \"laravel\"},{\"full\": \"fab fa-lastfm\",\"shorty\": \"lastfm\"},{\"full\": \"fab fa-lastfm-square\",\"shorty\": \"lastfm-square\"},{\"full\": \"fab fa-leanpub\",\"shorty\": \"leanpub\"},{\"full\": \"fab fa-less\",\"shorty\": \"less\"},{\"full\": \"fab fa-line\",\"shorty\": \"line\"},{\"full\": \"fab fa-linkedin\",\"shorty\": \"linkedin\"},{\"full\": \"fab fa-linkedin-in\",\"shorty\": \"linkedin-in\"},{\"full\": \"fab fa-linode\",\"shorty\": \"linode\"},{\"full\": \"fab fa-linux\",\"shorty\": \"linux\"},{\"full\": \"fab fa-lyft\",\"shorty\": \"lyft\"},{\"full\": \"fab fa-magento\",\"shorty\": \"magento\"},{\"full\": \"fab fa-mailchimp\",\"shorty\": \"mailchimp\"},{\"full\": \"fab fa-mandalorian\",\"shorty\": \"mandalorian\"},{\"full\": \"fab fa-markdown\",\"shorty\": \"markdown\"},{\"full\": \"fab fa-mastodon\",\"shorty\": \"mastodon\"},{\"full\": \"fab fa-maxcdn\",\"shorty\": \"maxcdn\"},{\"full\": \"fab fa-medapps\",\"shorty\": \"medapps\"},{\"full\": \"fab fa-medium\",\"shorty\": \"medium\"},{\"full\": \"fab fa-medium-m\",\"shorty\": \"medium-m\"},{\"full\": \"fab fa-medrt\",\"shorty\": \"medrt\"},{\"full\": \"fab fa-meetup\",\"shorty\": \"meetup\"},{\"full\": \"fab fa-megaport\",\"shorty\": \"megaport\"},{\"full\": \"fab fa-microsoft\",\"shorty\": \"microsoft\"},{\"full\": \"fab fa-mix\",\"shorty\": \"mix\"},{\"full\": \"fab fa-mixcloud\",\"shorty\": \"mixcloud\"},{\"full\": \"fab fa-mizuni\",\"shorty\": \"mizuni\"},{\"full\": \"fab fa-modx\",\"shorty\": \"modx\"},{\"full\": \"fab fa-monero\",\"shorty\": \"monero\"},{\"full\": \"fab fa-napster\",\"shorty\": \"napster\"},{\"full\": \"fab fa-neos\",\"shorty\": \"neos\"},{\"full\": \"fab fa-nimblr\",\"shorty\": \"nimblr\"},{\"full\": \"fab fa-nintendo-switch\",\"shorty\": \"nintendo-switch\"},{\"full\": \"fab fa-node\",\"shorty\": \"node\"},{\"full\": \"fab fa-node-js\",\"shorty\": \"node-js\"},{\"full\": \"fab fa-npm\",\"shorty\": \"npm\"},{\"full\": \"fab fa-ns8\",\"shorty\": \"ns8\"},{\"full\": \"fab fa-nutritionix\",\"shorty\": \"nutritionix\"},{\"full\": \"fab fa-odnoklassniki\",\"shorty\": \"odnoklassniki\"},{\"full\": \"fab fa-odnoklassniki-square\",\"shorty\": \"odnoklassniki-square\"},{\"full\": \"fab fa-old-republic\",\"shorty\": \"old-republic\"},{\"full\": \"fab fa-opencart\",\"shorty\": \"opencart\"},{\"full\": \"fab fa-openid\",\"shorty\": \"openid\"},{\"full\": \"fab fa-opera\",\"shorty\": \"opera\"},{\"full\": \"fab fa-optin-monster\",\"shorty\": \"optin-monster\"},{\"full\": \"fab fa-osi\",\"shorty\": \"osi\"},{\"full\": \"fab fa-page4\",\"shorty\": \"page4\"},{\"full\": \"fab fa-pagelines\",\"shorty\": \"pagelines\"},{\"full\": \"fab fa-palfed\",\"shorty\": \"palfed\"},{\"full\": \"fab fa-patreon\",\"shorty\": \"patreon\"},{\"full\": \"fab fa-paypal\",\"shorty\": \"paypal\"},{\"full\": \"fab fa-periscope\",\"shorty\": \"periscope\"},{\"full\": \"fab fa-phabricator\",\"shorty\": \"phabricator\"},{\"full\": \"fab fa-phoenix-framework\",\"shorty\": \"phoenix-framework\"},{\"full\": \"fab fa-phoenix-squadron\",\"shorty\": \"phoenix-squadron\"},{\"full\": \"fab fa-php\",\"shorty\": \"php\"},{\"full\": \"fab fa-pied-piper\",\"shorty\": \"pied-piper\"},{\"full\": \"fab fa-pied-piper-alt\",\"shorty\": \"pied-piper-alt\"},{\"full\": \"fab fa-pied-piper-hat\",\"shorty\": \"pied-piper-hat\"},{\"full\": \"fab fa-pied-piper-pp\",\"shorty\": \"pied-piper-pp\"},{\"full\": \"fab fa-pinterest\",\"shorty\": \"pinterest\"},{\"full\": \"fab fa-pinterest-p\",\"shorty\": \"pinterest-p\"},{\"full\": \"fab fa-pinterest-square\",\"shorty\": \"pinterest-square\"},{\"full\": \"fab fa-playstation\",\"shorty\": \"playstation\"},{\"full\": \"fab fa-product-hunt\",\"shorty\": \"product-hunt\"},{\"full\": \"fab fa-pushed\",\"shorty\": \"pushed\"},{\"full\": \"fab fa-python\",\"shorty\": \"python\"},{\"full\": \"fab fa-qq\",\"shorty\": \"qq\"},{\"full\": \"fab fa-quinscape\",\"shorty\": \"quinscape\"},{\"full\": \"fab fa-quora\",\"shorty\": \"quora\"},{\"full\": \"fab fa-r-project\",\"shorty\": \"r-project\"},{\"full\": \"fab fa-ravelry\",\"shorty\": \"ravelry\"},{\"full\": \"fab fa-react\",\"shorty\": \"react\"},{\"full\": \"fab fa-readme\",\"shorty\": \"readme\"},{\"full\": \"fab fa-rebel\",\"shorty\": \"rebel\"},{\"full\": \"fab fa-red-river\",\"shorty\": \"red-river\"},{\"full\": \"fab fa-reddit\",\"shorty\": \"reddit\"},{\"full\": \"fab fa-reddit-alien\",\"shorty\": \"reddit-alien\"},{\"full\": \"fab fa-reddit-square\",\"shorty\": \"reddit-square\"},{\"full\": \"fab fa-rendact\",\"shorty\": \"rendact\"},{\"full\": \"fab fa-renren\",\"shorty\": \"renren\"},{\"full\": \"fab fa-replyd\",\"shorty\": \"replyd\"},{\"full\": \"fab fa-researchgate\",\"shorty\": \"researchgate\"},{\"full\": \"fab fa-resolving\",\"shorty\": \"resolving\"},{\"full\": \"fab fa-rev\",\"shorty\": \"rev\"},{\"full\": \"fab fa-rocketchat\",\"shorty\": \"rocketchat\"},{\"full\": \"fab fa-rockrms\",\"shorty\": \"rockrms\"},{\"full\": \"fab fa-safari\",\"shorty\": \"safari\"},{\"full\": \"fab fa-sass\",\"shorty\": \"sass\"},{\"full\": \"fab fa-schlix\",\"shorty\": \"schlix\"},{\"full\": \"fab fa-scribd\",\"shorty\": \"scribd\"},{\"full\": \"fab fa-searchengin\",\"shorty\": \"searchengin\"},{\"full\": \"fab fa-sellcast\",\"shorty\": \"sellcast\"},{\"full\": \"fab fa-sellsy\",\"shorty\": \"sellsy\"},{\"full\": \"fab fa-servicestack\",\"shorty\": \"servicestack\"},{\"full\": \"fab fa-shirtsinbulk\",\"shorty\": \"shirtsinbulk\"},{\"full\": \"fab fa-shopware\",\"shorty\": \"shopware\"},{\"full\": \"fab fa-simplybuilt\",\"shorty\": \"simplybuilt\"},{\"full\": \"fab fa-sistrix\",\"shorty\": \"sistrix\"},{\"full\": \"fab fa-sith\",\"shorty\": \"sith\"},{\"full\": \"fab fa-skyatlas\",\"shorty\": \"skyatlas\"},{\"full\": \"fab fa-skype\",\"shorty\": \"skype\"},{\"full\": \"fab fa-slack\",\"shorty\": \"slack\"},{\"full\": \"fab fa-slack-hash\",\"shorty\": \"slack-hash\"},{\"full\": \"fab fa-slideshare\",\"shorty\": \"slideshare\"},{\"full\": \"fab fa-snapchat\",\"shorty\": \"snapchat\"},{\"full\": \"fab fa-snapchat-ghost\",\"shorty\": \"snapchat-ghost\"},{\"full\": \"fab fa-snapchat-square\",\"shorty\": \"snapchat-square\"},{\"full\": \"fab fa-soundcloud\",\"shorty\": \"soundcloud\"},{\"full\": \"fab fa-speakap\",\"shorty\": \"speakap\"},{\"full\": \"fab fa-spotify\",\"shorty\": \"spotify\"},{\"full\": \"fab fa-squarespace\",\"shorty\": \"squarespace\"},{\"full\": \"fab fa-stack-exchange\",\"shorty\": \"stack-exchange\"},{\"full\": \"fab fa-stack-overflow\",\"shorty\": \"stack-overflow\"},{\"full\": \"fab fa-staylinked\",\"shorty\": \"staylinked\"},{\"full\": \"fab fa-steam\",\"shorty\": \"steam\"},{\"full\": \"fab fa-steam-square\",\"shorty\": \"steam-square\"},{\"full\": \"fab fa-steam-symbol\",\"shorty\": \"steam-symbol\"},{\"full\": \"fab fa-sticker-mule\",\"shorty\": \"sticker-mule\"},{\"full\": \"fab fa-strava\",\"shorty\": \"strava\"},{\"full\": \"fab fa-stripe\",\"shorty\": \"stripe\"},{\"full\": \"fab fa-stripe-s\",\"shorty\": \"stripe-s\"},{\"full\": \"fab fa-studiovinari\",\"shorty\": \"studiovinari\"},{\"full\": \"fab fa-stumbleupon\",\"shorty\": \"stumbleupon\"},{\"full\": \"fab fa-stumbleupon-circle\",\"shorty\": \"stumbleupon-circle\"},{\"full\": \"fab fa-superpowers\",\"shorty\": \"superpowers\"},{\"full\": \"fab fa-supple\",\"shorty\": \"supple\"},{\"full\": \"fab fa-teamspeak\",\"shorty\": \"teamspeak\"},{\"full\": \"fab fa-telegram\",\"shorty\": \"telegram\"},{\"full\": \"fab fa-telegram-plane\",\"shorty\": \"telegram-plane\"},{\"full\": \"fab fa-tencent-weibo\",\"shorty\": \"tencent-weibo\"},{\"full\": \"fab fa-the-red-yeti\",\"shorty\": \"the-red-yeti\"},{\"full\": \"fab fa-themeco\",\"shorty\": \"themeco\"},{\"full\": \"fab fa-themeisle\",\"shorty\": \"themeisle\"},{\"full\": \"fab fa-trade-federation\",\"shorty\": \"trade-federation\"},{\"full\": \"fab fa-trello\",\"shorty\": \"trello\"},{\"full\": \"fab fa-tripadvisor\",\"shorty\": \"tripadvisor\"},{\"full\": \"fab fa-tumblr\",\"shorty\": \"tumblr\"},{\"full\": \"fab fa-tumblr-square\",\"shorty\": \"tumblr-square\"},{\"full\": \"fab fa-twitch\",\"shorty\": \"twitch\"},{\"full\": \"fab fa-twitter\",\"shorty\": \"twitter\"},{\"full\": \"fab fa-twitter-square\",\"shorty\": \"twitter-square\"},{\"full\": \"fab fa-typo3\",\"shorty\": \"typo3\"},{\"full\": \"fab fa-uber\",\"shorty\": \"uber\"},{\"full\": \"fab fa-uikit\",\"shorty\": \"uikit\"},{\"full\": \"fab fa-uniregistry\",\"shorty\": \"uniregistry\"},{\"full\": \"fab fa-untappd\",\"shorty\": \"untappd\"},{\"full\": \"fab fa-usb\",\"shorty\": \"usb\"},{\"full\": \"fab fa-ussunnah\",\"shorty\": \"ussunnah\"},{\"full\": \"fab fa-vaadin\",\"shorty\": \"vaadin\"},{\"full\": \"fab fa-viacoin\",\"shorty\": \"viacoin\"},{\"full\": \"fab fa-viadeo\",\"shorty\": \"viadeo\"},{\"full\": \"fab fa-viadeo-square\",\"shorty\": \"viadeo-square\"},{\"full\": \"fab fa-viber\",\"shorty\": \"viber\"},{\"full\": \"fab fa-vimeo\",\"shorty\": \"vimeo\"},{\"full\": \"fab fa-vimeo-square\",\"shorty\": \"vimeo-square\"},{\"full\": \"fab fa-vimeo-v\",\"shorty\": \"vimeo-v\"},{\"full\": \"fab fa-vine\",\"shorty\": \"vine\"},{\"full\": \"fab fa-vk\",\"shorty\": \"vk\"},{\"full\": \"fab fa-vnv\",\"shorty\": \"vnv\"},{\"full\": \"fab fa-vuejs\",\"shorty\": \"vuejs\"},{\"full\": \"fab fa-weebly\",\"shorty\": \"weebly\"},{\"full\": \"fab fa-weibo\",\"shorty\": \"weibo\"},{\"full\": \"fab fa-weixin\",\"shorty\": \"weixin\"},{\"full\": \"fab fa-whatsapp\",\"shorty\": \"whatsapp\"},{\"full\": \"fab fa-whatsapp-square\",\"shorty\": \"whatsapp-square\"},{\"full\": \"fab fa-whmcs\",\"shorty\": \"whmcs\"},{\"full\": \"fab fa-wikipedia-w\",\"shorty\": \"wikipedia-w\"},{\"full\": \"fab fa-windows\",\"shorty\": \"windows\"},{\"full\": \"fab fa-wix\",\"shorty\": \"wix\"},{\"full\": \"fab fa-wolf-pack-battalion\",\"shorty\": \"wolf-pack-battalion\"},{\"full\": \"fab fa-wordpress\",\"shorty\": \"wordpress\"},{\"full\": \"fab fa-wordpress-simple\",\"shorty\": \"wordpress-simple\"},{\"full\": \"fab fa-wpbeginner\",\"shorty\": \"wpbeginner\"},{\"full\": \"fab fa-wpexplorer\",\"shorty\": \"wpexplorer\"},{\"full\": \"fab fa-wpforms\",\"shorty\": \"wpforms\"},{\"full\": \"fab fa-xbox\",\"shorty\": \"xbox\"},{\"full\": \"fab fa-xing\",\"shorty\": \"xing\"},{\"full\": \"fab fa-xing-square\",\"shorty\": \"xing-square\"},{\"full\": \"fab fa-y-combinator\",\"shorty\": \"y-combinator\"},{\"full\": \"fab fa-yahoo\",\"shorty\": \"yahoo\"},{\"full\": \"fab fa-yandex\",\"shorty\": \"yandex\"},{\"full\": \"fab fa-yandex-international\",\"shorty\": \"yandex-international\"},{\"full\": \"fab fa-yelp\",\"shorty\": \"yelp\"},{\"full\": \"fab fa-yoast\",\"shorty\": \"yoast\"},{\"full\": \"fab fa-youtube\",\"shorty\": \"youtube\"},{\"full\": \"fab fa-youtube-square\",\"shorty\": \"youtube-square\"},{\"full\": \"fab fa-zhihu\",\"shorty\": \"zhihu\"},{\"full\": \"far fa-address-book\",\"shorty\": \"address-book\"},{\"full\": \"far fa-address-card\",\"shorty\": \"address-card\"},{\"full\": \"far fa-angry\",\"shorty\": \"angry\"},{\"full\": \"far fa-arrow-alt-circle-down\",\"shorty\": \"arrow-alt-circle-down\"},{\"full\": \"far fa-arrow-alt-circle-left\",\"shorty\": \"arrow-alt-circle-left\"},{\"full\": \"far fa-arrow-alt-circle-right\",\"shorty\": \"arrow-alt-circle-right\"},{\"full\": \"far fa-arrow-alt-circle-up\",\"shorty\": \"arrow-alt-circle-up\"},{\"full\": \"far fa-bell\",\"shorty\": \"bell\"},{\"full\": \"far fa-bell-slash\",\"shorty\": \"bell-slash\"},{\"full\": \"far fa-bookmark\",\"shorty\": \"bookmark\"},{\"full\": \"far fa-building\",\"shorty\": \"building\"},{\"full\": \"far fa-calendar\",\"shorty\": \"calendar\"},{\"full\": \"far fa-calendar-alt\",\"shorty\": \"calendar-alt\"},{\"full\": \"far fa-calendar-check\",\"shorty\": \"calendar-check\"},{\"full\": \"far fa-calendar-minus\",\"shorty\": \"calendar-minus\"},{\"full\": \"far fa-calendar-plus\",\"shorty\": \"calendar-plus\"},{\"full\": \"far fa-calendar-times\",\"shorty\": \"calendar-times\"},{\"full\": \"far fa-caret-square-down\",\"shorty\": \"caret-square-down\"},{\"full\": \"far fa-caret-square-left\",\"shorty\": \"caret-square-left\"},{\"full\": \"far fa-caret-square-right\",\"shorty\": \"caret-square-right\"},{\"full\": \"far fa-caret-square-up\",\"shorty\": \"caret-square-up\"},{\"full\": \"far fa-chart-bar\",\"shorty\": \"chart-bar\"},{\"full\": \"far fa-check-circle\",\"shorty\": \"check-circle\"},{\"full\": \"far fa-check-square\",\"shorty\": \"check-square\"},{\"full\": \"far fa-circle\",\"shorty\": \"circle\"},{\"full\": \"far fa-clipboard\",\"shorty\": \"clipboard\"},{\"full\": \"far fa-clock\",\"shorty\": \"clock\"},{\"full\": \"far fa-clone\",\"shorty\": \"clone\"},{\"full\": \"far fa-closed-captioning\",\"shorty\": \"closed-captioning\"},{\"full\": \"far fa-comment\",\"shorty\": \"comment\"},{\"full\": \"far fa-comment-alt\",\"shorty\": \"comment-alt\"},{\"full\": \"far fa-comment-dots\",\"shorty\": \"comment-dots\"},{\"full\": \"far fa-comments\",\"shorty\": \"comments\"},{\"full\": \"far fa-compass\",\"shorty\": \"compass\"},{\"full\": \"far fa-copy\",\"shorty\": \"copy\"},{\"full\": \"far fa-copyright\",\"shorty\": \"copyright\"},{\"full\": \"far fa-credit-card\",\"shorty\": \"credit-card\"},{\"full\": \"far fa-dizzy\",\"shorty\": \"dizzy\"},{\"full\": \"far fa-dot-circle\",\"shorty\": \"dot-circle\"},{\"full\": \"far fa-edit\",\"shorty\": \"edit\"},{\"full\": \"far fa-envelope\",\"shorty\": \"envelope\"},{\"full\": \"far fa-envelope-open\",\"shorty\": \"envelope-open\"},{\"full\": \"far fa-eye\",\"shorty\": \"eye\"},{\"full\": \"far fa-eye-slash\",\"shorty\": \"eye-slash\"},{\"full\": \"far fa-file\",\"shorty\": \"file\"},{\"full\": \"far fa-file-alt\",\"shorty\": \"file-alt\"},{\"full\": \"far fa-file-archive\",\"shorty\": \"file-archive\"},{\"full\": \"far fa-file-audio\",\"shorty\": \"file-audio\"},{\"full\": \"far fa-file-code\",\"shorty\": \"file-code\"},{\"full\": \"far fa-file-excel\",\"shorty\": \"file-excel\"},{\"full\": \"far fa-file-image\",\"shorty\": \"file-image\"},{\"full\": \"far fa-file-pdf\",\"shorty\": \"file-pdf\"},{\"full\": \"far fa-file-powerpoint\",\"shorty\": \"file-powerpoint\"},{\"full\": \"far fa-file-video\",\"shorty\": \"file-video\"},{\"full\": \"far fa-file-word\",\"shorty\": \"file-word\"},{\"full\": \"far fa-flag\",\"shorty\": \"flag\"},{\"full\": \"far fa-flushed\",\"shorty\": \"flushed\"},{\"full\": \"far fa-folder\",\"shorty\": \"folder\"},{\"full\": \"far fa-folder-open\",\"shorty\": \"folder-open\"},{\"full\": \"far fa-frown\",\"shorty\": \"frown\"},{\"full\": \"far fa-frown-open\",\"shorty\": \"frown-open\"},{\"full\": \"far fa-futbol\",\"shorty\": \"futbol\"},{\"full\": \"far fa-gem\",\"shorty\": \"gem\"},{\"full\": \"far fa-grimace\",\"shorty\": \"grimace\"},{\"full\": \"far fa-grin\",\"shorty\": \"grin\"},{\"full\": \"far fa-grin-alt\",\"shorty\": \"grin-alt\"},{\"full\": \"far fa-grin-beam\",\"shorty\": \"grin-beam\"},{\"full\": \"far fa-grin-beam-sweat\",\"shorty\": \"grin-beam-sweat\"},{\"full\": \"far fa-grin-hearts\",\"shorty\": \"grin-hearts\"},{\"full\": \"far fa-grin-squint\",\"shorty\": \"grin-squint\"},{\"full\": \"far fa-grin-squint-tears\",\"shorty\": \"grin-squint-tears\"},{\"full\": \"far fa-grin-stars\",\"shorty\": \"grin-stars\"},{\"full\": \"far fa-grin-tears\",\"shorty\": \"grin-tears\"},{\"full\": \"far fa-grin-tongue\",\"shorty\": \"grin-tongue\"},{\"full\": \"far fa-grin-tongue-squint\",\"shorty\": \"grin-tongue-squint\"},{\"full\": \"far fa-grin-tongue-wink\",\"shorty\": \"grin-tongue-wink\"},{\"full\": \"far fa-grin-wink\",\"shorty\": \"grin-wink\"},{\"full\": \"far fa-hand-lizard\",\"shorty\": \"hand-lizard\"},{\"full\": \"far fa-hand-paper\",\"shorty\": \"hand-paper\"},{\"full\": \"far fa-hand-peace\",\"shorty\": \"hand-peace\"},{\"full\": \"far fa-hand-point-down\",\"shorty\": \"hand-point-down\"},{\"full\": \"far fa-hand-point-left\",\"shorty\": \"hand-point-left\"},{\"full\": \"far fa-hand-point-right\",\"shorty\": \"hand-point-right\"},{\"full\": \"far fa-hand-point-up\",\"shorty\": \"hand-point-up\"},{\"full\": \"far fa-hand-pointer\",\"shorty\": \"hand-pointer\"},{\"full\": \"far fa-hand-rock\",\"shorty\": \"hand-rock\"},{\"full\": \"far fa-hand-scissors\",\"shorty\": \"hand-scissors\"},{\"full\": \"far fa-hand-spock\",\"shorty\": \"hand-spock\"},{\"full\": \"far fa-handshake\",\"shorty\": \"handshake\"},{\"full\": \"far fa-hdd\",\"shorty\": \"hdd\"},{\"full\": \"far fa-heart\",\"shorty\": \"heart\"},{\"full\": \"far fa-hospital\",\"shorty\": \"hospital\"},{\"full\": \"far fa-hourglass\",\"shorty\": \"hourglass\"},{\"full\": \"far fa-id-badge\",\"shorty\": \"id-badge\"},{\"full\": \"far fa-id-card\",\"shorty\": \"id-card\"},{\"full\": \"far fa-image\",\"shorty\": \"image\"},{\"full\": \"far fa-images\",\"shorty\": \"images\"},{\"full\": \"far fa-keyboard\",\"shorty\": \"keyboard\"},{\"full\": \"far fa-kiss\",\"shorty\": \"kiss\"},{\"full\": \"far fa-kiss-beam\",\"shorty\": \"kiss-beam\"},{\"full\": \"far fa-kiss-wink-heart\",\"shorty\": \"kiss-wink-heart\"},{\"full\": \"far fa-laugh\",\"shorty\": \"laugh\"},{\"full\": \"far fa-laugh-beam\",\"shorty\": \"laugh-beam\"},{\"full\": \"far fa-laugh-squint\",\"shorty\": \"laugh-squint\"},{\"full\": \"far fa-laugh-wink\",\"shorty\": \"laugh-wink\"},{\"full\": \"far fa-lemon\",\"shorty\": \"lemon\"},{\"full\": \"far fa-life-ring\",\"shorty\": \"life-ring\"},{\"full\": \"far fa-lightbulb\",\"shorty\": \"lightbulb\"},{\"full\": \"far fa-list-alt\",\"shorty\": \"list-alt\"},{\"full\": \"far fa-map\",\"shorty\": \"map\"},{\"full\": \"far fa-meh\",\"shorty\": \"meh\"},{\"full\": \"far fa-meh-blank\",\"shorty\": \"meh-blank\"},{\"full\": \"far fa-meh-rolling-eyes\",\"shorty\": \"meh-rolling-eyes\"},{\"full\": \"far fa-minus-square\",\"shorty\": \"minus-square\"},{\"full\": \"far fa-money-bill-alt\",\"shorty\": \"money-bill-alt\"},{\"full\": \"far fa-moon\",\"shorty\": \"moon\"},{\"full\": \"far fa-newspaper\",\"shorty\": \"newspaper\"},{\"full\": \"far fa-object-group\",\"shorty\": \"object-group\"},{\"full\": \"far fa-object-ungroup\",\"shorty\": \"object-ungroup\"},{\"full\": \"far fa-paper-plane\",\"shorty\": \"paper-plane\"},{\"full\": \"far fa-pause-circle\",\"shorty\": \"pause-circle\"},{\"full\": \"far fa-play-circle\",\"shorty\": \"play-circle\"},{\"full\": \"far fa-plus-square\",\"shorty\": \"plus-square\"},{\"full\": \"far fa-question-circle\",\"shorty\": \"question-circle\"},{\"full\": \"far fa-registered\",\"shorty\": \"registered\"},{\"full\": \"far fa-sad-cry\",\"shorty\": \"sad-cry\"},{\"full\": \"far fa-sad-tear\",\"shorty\": \"sad-tear\"},{\"full\": \"far fa-save\",\"shorty\": \"save\"},{\"full\": \"far fa-share-square\",\"shorty\": \"share-square\"},{\"full\": \"far fa-smile\",\"shorty\": \"smile\"},{\"full\": \"far fa-smile-beam\",\"shorty\": \"smile-beam\"},{\"full\": \"far fa-smile-wink\",\"shorty\": \"smile-wink\"},{\"full\": \"far fa-snowflake\",\"shorty\": \"snowflake\"},{\"full\": \"far fa-square\",\"shorty\": \"square\"},{\"full\": \"far fa-star\",\"shorty\": \"star\"},{\"full\": \"far fa-star-half\",\"shorty\": \"star-half\"},{\"full\": \"far fa-sticky-note\",\"shorty\": \"sticky-note\"},{\"full\": \"far fa-stop-circle\",\"shorty\": \"stop-circle\"},{\"full\": \"far fa-sun\",\"shorty\": \"sun\"},{\"full\": \"far fa-surprise\",\"shorty\": \"surprise\"},{\"full\": \"far fa-thumbs-down\",\"shorty\": \"thumbs-down\"},{\"full\": \"far fa-thumbs-up\",\"shorty\": \"thumbs-up\"},{\"full\": \"far fa-times-circle\",\"shorty\": \"times-circle\"},{\"full\": \"far fa-tired\",\"shorty\": \"tired\"},{\"full\": \"far fa-trash-alt\",\"shorty\": \"trash-alt\"},{\"full\": \"far fa-user\",\"shorty\": \"user\"},{\"full\": \"far fa-user-circle\",\"shorty\": \"user-circle\"},{\"full\": \"far fa-window-close\",\"shorty\": \"window-close\"},{\"full\": \"far fa-window-maximize\",\"shorty\": \"window-maximize\"},{\"full\": \"far fa-window-minimize\",\"shorty\": \"window-minimize\"},{\"full\": \"far fa-window-restore\",\"shorty\": \"window-restore\"},{\"full\": \"fas fa-ad\",\"shorty\": \"ad\"},{\"full\": \"fas fa-address-book\",\"shorty\": \"address-book\"},{\"full\": \"fas fa-address-card\",\"shorty\": \"address-card\"},{\"full\": \"fas fa-adjust\",\"shorty\": \"adjust\"},{\"full\": \"fas fa-air-freshener\",\"shorty\": \"air-freshener\"},{\"full\": \"fas fa-align-center\",\"shorty\": \"align-center\"},{\"full\": \"fas fa-align-justify\",\"shorty\": \"align-justify\"},{\"full\": \"fas fa-align-left\",\"shorty\": \"align-left\"},{\"full\": \"fas fa-align-right\",\"shorty\": \"align-right\"},{\"full\": \"fas fa-allergies\",\"shorty\": \"allergies\"},{\"full\": \"fas fa-ambulance\",\"shorty\": \"ambulance\"},{\"full\": \"fas fa-american-sign-language-interpreting\",\"shorty\": \"american-sign-language-interpreting\"},{\"full\": \"fas fa-anchor\",\"shorty\": \"anchor\"},{\"full\": \"fas fa-angle-double-down\",\"shorty\": \"angle-double-down\"},{\"full\": \"fas fa-angle-double-left\",\"shorty\": \"angle-double-left\"},{\"full\": \"fas fa-angle-double-right\",\"shorty\": \"angle-double-right\"},{\"full\": \"fas fa-angle-double-up\",\"shorty\": \"angle-double-up\"},{\"full\": \"fas fa-angle-down\",\"shorty\": \"angle-down\"},{\"full\": \"fas fa-angle-left\",\"shorty\": \"angle-left\"},{\"full\": \"fas fa-angle-right\",\"shorty\": \"angle-right\"},{\"full\": \"fas fa-angle-up\",\"shorty\": \"angle-up\"},{\"full\": \"fas fa-angry\",\"shorty\": \"angry\"},{\"full\": \"fas fa-ankh\",\"shorty\": \"ankh\"},{\"full\": \"fas fa-apple-alt\",\"shorty\": \"apple-alt\"},{\"full\": \"fas fa-archive\",\"shorty\": \"archive\"},{\"full\": \"fas fa-archway\",\"shorty\": \"archway\"},{\"full\": \"fas fa-arrow-alt-circle-down\",\"shorty\": \"arrow-alt-circle-down\"},{\"full\": \"fas fa-arrow-alt-circle-left\",\"shorty\": \"arrow-alt-circle-left\"},{\"full\": \"fas fa-arrow-alt-circle-right\",\"shorty\": \"arrow-alt-circle-right\"},{\"full\": \"fas fa-arrow-alt-circle-up\",\"shorty\": \"arrow-alt-circle-up\"},{\"full\": \"fas fa-arrow-circle-down\",\"shorty\": \"arrow-circle-down\"},{\"full\": \"fas fa-arrow-circle-left\",\"shorty\": \"arrow-circle-left\"},{\"full\": \"fas fa-arrow-circle-right\",\"shorty\": \"arrow-circle-right\"},{\"full\": \"fas fa-arrow-circle-up\",\"shorty\": \"arrow-circle-up\"},{\"full\": \"fas fa-arrow-down\",\"shorty\": \"arrow-down\"},{\"full\": \"fas fa-arrow-left\",\"shorty\": \"arrow-left\"},{\"full\": \"fas fa-arrow-right\",\"shorty\": \"arrow-right\"},{\"full\": \"fas fa-arrow-up\",\"shorty\": \"arrow-up\"},{\"full\": \"fas fa-arrows-alt\",\"shorty\": \"arrows-alt\"},{\"full\": \"fas fa-arrows-alt-h\",\"shorty\": \"arrows-alt-h\"},{\"full\": \"fas fa-arrows-alt-v\",\"shorty\": \"arrows-alt-v\"},{\"full\": \"fas fa-assistive-listening-systems\",\"shorty\": \"assistive-listening-systems\"},{\"full\": \"fas fa-asterisk\",\"shorty\": \"asterisk\"},{\"full\": \"fas fa-at\",\"shorty\": \"at\"},{\"full\": \"fas fa-atlas\",\"shorty\": \"atlas\"},{\"full\": \"fas fa-atom\",\"shorty\": \"atom\"},{\"full\": \"fas fa-audio-description\",\"shorty\": \"audio-description\"},{\"full\": \"fas fa-award\",\"shorty\": \"award\"},{\"full\": \"fas fa-backspace\",\"shorty\": \"backspace\"},{\"full\": \"fas fa-backward\",\"shorty\": \"backward\"},{\"full\": \"fas fa-balance-scale\",\"shorty\": \"balance-scale\"},{\"full\": \"fas fa-ban\",\"shorty\": \"ban\"},{\"full\": \"fas fa-band-aid\",\"shorty\": \"band-aid\"},{\"full\": \"fas fa-barcode\",\"shorty\": \"barcode\"},{\"full\": \"fas fa-bars\",\"shorty\": \"bars\"},{\"full\": \"fas fa-baseball-ball\",\"shorty\": \"baseball-ball\"},{\"full\": \"fas fa-basketball-ball\",\"shorty\": \"basketball-ball\"},{\"full\": \"fas fa-bath\",\"shorty\": \"bath\"},{\"full\": \"fas fa-battery-empty\",\"shorty\": \"battery-empty\"},{\"full\": \"fas fa-battery-full\",\"shorty\": \"battery-full\"},{\"full\": \"fas fa-battery-half\",\"shorty\": \"battery-half\"},{\"full\": \"fas fa-battery-quarter\",\"shorty\": \"battery-quarter\"},{\"full\": \"fas fa-battery-three-quarters\",\"shorty\": \"battery-three-quarters\"},{\"full\": \"fas fa-bed\",\"shorty\": \"bed\"},{\"full\": \"fas fa-beer\",\"shorty\": \"beer\"},{\"full\": \"fas fa-bell\",\"shorty\": \"bell\"},{\"full\": \"fas fa-bell-slash\",\"shorty\": \"bell-slash\"},{\"full\": \"fas fa-bezier-curve\",\"shorty\": \"bezier-curve\"},{\"full\": \"fas fa-bible\",\"shorty\": \"bible\"},{\"full\": \"fas fa-bicycle\",\"shorty\": \"bicycle\"},{\"full\": \"fas fa-binoculars\",\"shorty\": \"binoculars\"},{\"full\": \"fas fa-birthday-cake\",\"shorty\": \"birthday-cake\"},{\"full\": \"fas fa-blender\",\"shorty\": \"blender\"},{\"full\": \"fas fa-blind\",\"shorty\": \"blind\"},{\"full\": \"fas fa-bold\",\"shorty\": \"bold\"},{\"full\": \"fas fa-bolt\",\"shorty\": \"bolt\"},{\"full\": \"fas fa-bomb\",\"shorty\": \"bomb\"},{\"full\": \"fas fa-bone\",\"shorty\": \"bone\"},{\"full\": \"fas fa-bong\",\"shorty\": \"bong\"},{\"full\": \"fas fa-book\",\"shorty\": \"book\"},{\"full\": \"fas fa-book-open\",\"shorty\": \"book-open\"},{\"full\": \"fas fa-book-reader\",\"shorty\": \"book-reader\"},{\"full\": \"fas fa-bookmark\",\"shorty\": \"bookmark\"},{\"full\": \"fas fa-bowling-ball\",\"shorty\": \"bowling-ball\"},{\"full\": \"fas fa-box\",\"shorty\": \"box\"},{\"full\": \"fas fa-box-open\",\"shorty\": \"box-open\"},{\"full\": \"fas fa-boxes\",\"shorty\": \"boxes\"},{\"full\": \"fas fa-braille\",\"shorty\": \"braille\"},{\"full\": \"fas fa-brain\",\"shorty\": \"brain\"},{\"full\": \"fas fa-briefcase\",\"shorty\": \"briefcase\"},{\"full\": \"fas fa-briefcase-medical\",\"shorty\": \"briefcase-medical\"},{\"full\": \"fas fa-broadcast-tower\",\"shorty\": \"broadcast-tower\"},{\"full\": \"fas fa-broom\",\"shorty\": \"broom\"},{\"full\": \"fas fa-brush\",\"shorty\": \"brush\"},{\"full\": \"fas fa-bug\",\"shorty\": \"bug\"},{\"full\": \"fas fa-building\",\"shorty\": \"building\"},{\"full\": \"fas fa-bullhorn\",\"shorty\": \"bullhorn\"},{\"full\": \"fas fa-bullseye\",\"shorty\": \"bullseye\"},{\"full\": \"fas fa-burn\",\"shorty\": \"burn\"},{\"full\": \"fas fa-bus\",\"shorty\": \"bus\"},{\"full\": \"fas fa-bus-alt\",\"shorty\": \"bus-alt\"},{\"full\": \"fas fa-business-time\",\"shorty\": \"business-time\"},{\"full\": \"fas fa-calculator\",\"shorty\": \"calculator\"},{\"full\": \"fas fa-calendar\",\"shorty\": \"calendar\"},{\"full\": \"fas fa-calendar-alt\",\"shorty\": \"calendar-alt\"},{\"full\": \"fas fa-calendar-check\",\"shorty\": \"calendar-check\"},{\"full\": \"fas fa-calendar-minus\",\"shorty\": \"calendar-minus\"},{\"full\": \"fas fa-calendar-plus\",\"shorty\": \"calendar-plus\"},{\"full\": \"fas fa-calendar-times\",\"shorty\": \"calendar-times\"},{\"full\": \"fas fa-camera\",\"shorty\": \"camera\"},{\"full\": \"fas fa-camera-retro\",\"shorty\": \"camera-retro\"},{\"full\": \"fas fa-cannabis\",\"shorty\": \"cannabis\"},{\"full\": \"fas fa-capsules\",\"shorty\": \"capsules\"},{\"full\": \"fas fa-car\",\"shorty\": \"car\"},{\"full\": \"fas fa-car-alt\",\"shorty\": \"car-alt\"},{\"full\": \"fas fa-car-battery\",\"shorty\": \"car-battery\"},{\"full\": \"fas fa-car-crash\",\"shorty\": \"car-crash\"},{\"full\": \"fas fa-car-side\",\"shorty\": \"car-side\"},{\"full\": \"fas fa-caret-down\",\"shorty\": \"caret-down\"},{\"full\": \"fas fa-caret-left\",\"shorty\": \"caret-left\"},{\"full\": \"fas fa-caret-right\",\"shorty\": \"caret-right\"},{\"full\": \"fas fa-caret-square-down\",\"shorty\": \"caret-square-down\"},{\"full\": \"fas fa-caret-square-left\",\"shorty\": \"caret-square-left\"},{\"full\": \"fas fa-caret-square-right\",\"shorty\": \"caret-square-right\"},{\"full\": \"fas fa-caret-square-up\",\"shorty\": \"caret-square-up\"},{\"full\": \"fas fa-caret-up\",\"shorty\": \"caret-up\"},{\"full\": \"fas fa-cart-arrow-down\",\"shorty\": \"cart-arrow-down\"},{\"full\": \"fas fa-cart-plus\",\"shorty\": \"cart-plus\"},{\"full\": \"fas fa-certificate\",\"shorty\": \"certificate\"},{\"full\": \"fas fa-chalkboard\",\"shorty\": \"chalkboard\"},{\"full\": \"fas fa-chalkboard-teacher\",\"shorty\": \"chalkboard-teacher\"},{\"full\": \"fas fa-charging-station\",\"shorty\": \"charging-station\"},{\"full\": \"fas fa-chart-area\",\"shorty\": \"chart-area\"},{\"full\": \"fas fa-chart-bar\",\"shorty\": \"chart-bar\"},{\"full\": \"fas fa-chart-line\",\"shorty\": \"chart-line\"},{\"full\": \"fas fa-chart-pie\",\"shorty\": \"chart-pie\"},{\"full\": \"fas fa-check\",\"shorty\": \"check\"},{\"full\": \"fas fa-check-circle\",\"shorty\": \"check-circle\"},{\"full\": \"fas fa-check-double\",\"shorty\": \"check-double\"},{\"full\": \"fas fa-check-square\",\"shorty\": \"check-square\"},{\"full\": \"fas fa-chess\",\"shorty\": \"chess\"},{\"full\": \"fas fa-chess-bishop\",\"shorty\": \"chess-bishop\"},{\"full\": \"fas fa-chess-board\",\"shorty\": \"chess-board\"},{\"full\": \"fas fa-chess-king\",\"shorty\": \"chess-king\"},{\"full\": \"fas fa-chess-knight\",\"shorty\": \"chess-knight\"},{\"full\": \"fas fa-chess-pawn\",\"shorty\": \"chess-pawn\"},{\"full\": \"fas fa-chess-queen\",\"shorty\": \"chess-queen\"},{\"full\": \"fas fa-chess-rook\",\"shorty\": \"chess-rook\"},{\"full\": \"fas fa-chevron-circle-down\",\"shorty\": \"chevron-circle-down\"},{\"full\": \"fas fa-chevron-circle-left\",\"shorty\": \"chevron-circle-left\"},{\"full\": \"fas fa-chevron-circle-right\",\"shorty\": \"chevron-circle-right\"},{\"full\": \"fas fa-chevron-circle-up\",\"shorty\": \"chevron-circle-up\"},{\"full\": \"fas fa-chevron-down\",\"shorty\": \"chevron-down\"},{\"full\": \"fas fa-chevron-left\",\"shorty\": \"chevron-left\"},{\"full\": \"fas fa-chevron-right\",\"shorty\": \"chevron-right\"},{\"full\": \"fas fa-chevron-up\",\"shorty\": \"chevron-up\"},{\"full\": \"fas fa-child\",\"shorty\": \"child\"},{\"full\": \"fas fa-church\",\"shorty\": \"church\"},{\"full\": \"fas fa-circle\",\"shorty\": \"circle\"},{\"full\": \"fas fa-circle-notch\",\"shorty\": \"circle-notch\"},{\"full\": \"fas fa-city\",\"shorty\": \"city\"},{\"full\": \"fas fa-clipboard\",\"shorty\": \"clipboard\"},{\"full\": \"fas fa-clipboard-check\",\"shorty\": \"clipboard-check\"},{\"full\": \"fas fa-clipboard-list\",\"shorty\": \"clipboard-list\"},{\"full\": \"fas fa-clock\",\"shorty\": \"clock\"},{\"full\": \"fas fa-clone\",\"shorty\": \"clone\"},{\"full\": \"fas fa-closed-captioning\",\"shorty\": \"closed-captioning\"},{\"full\": \"fas fa-cloud\",\"shorty\": \"cloud\"},{\"full\": \"fas fa-cloud-download-alt\",\"shorty\": \"cloud-download-alt\"},{\"full\": \"fas fa-cloud-upload-alt\",\"shorty\": \"cloud-upload-alt\"},{\"full\": \"fas fa-cocktail\",\"shorty\": \"cocktail\"},{\"full\": \"fas fa-code\",\"shorty\": \"code\"},{\"full\": \"fas fa-code-branch\",\"shorty\": \"code-branch\"},{\"full\": \"fas fa-coffee\",\"shorty\": \"coffee\"},{\"full\": \"fas fa-cog\",\"shorty\": \"cog\"},{\"full\": \"fas fa-cogs\",\"shorty\": \"cogs\"},{\"full\": \"fas fa-coins\",\"shorty\": \"coins\"},{\"full\": \"fas fa-columns\",\"shorty\": \"columns\"},{\"full\": \"fas fa-comment\",\"shorty\": \"comment\"},{\"full\": \"fas fa-comment-alt\",\"shorty\": \"comment-alt\"},{\"full\": \"fas fa-comment-dollar\",\"shorty\": \"comment-dollar\"},{\"full\": \"fas fa-comment-dots\",\"shorty\": \"comment-dots\"},{\"full\": \"fas fa-comment-slash\",\"shorty\": \"comment-slash\"},{\"full\": \"fas fa-comments\",\"shorty\": \"comments\"},{\"full\": \"fas fa-comments-dollar\",\"shorty\": \"comments-dollar\"},{\"full\": \"fas fa-compact-disc\",\"shorty\": \"compact-disc\"},{\"full\": \"fas fa-compass\",\"shorty\": \"compass\"},{\"full\": \"fas fa-compress\",\"shorty\": \"compress\"},{\"full\": \"fas fa-concierge-bell\",\"shorty\": \"concierge-bell\"},{\"full\": \"fas fa-cookie\",\"shorty\": \"cookie\"},{\"full\": \"fas fa-cookie-bite\",\"shorty\": \"cookie-bite\"},{\"full\": \"fas fa-copy\",\"shorty\": \"copy\"},{\"full\": \"fas fa-copyright\",\"shorty\": \"copyright\"},{\"full\": \"fas fa-couch\",\"shorty\": \"couch\"},{\"full\": \"fas fa-credit-card\",\"shorty\": \"credit-card\"},{\"full\": \"fas fa-crop\",\"shorty\": \"crop\"},{\"full\": \"fas fa-crop-alt\",\"shorty\": \"crop-alt\"},{\"full\": \"fas fa-cross\",\"shorty\": \"cross\"},{\"full\": \"fas fa-crosshairs\",\"shorty\": \"crosshairs\"},{\"full\": \"fas fa-crow\",\"shorty\": \"crow\"},{\"full\": \"fas fa-crown\",\"shorty\": \"crown\"},{\"full\": \"fas fa-cube\",\"shorty\": \"cube\"},{\"full\": \"fas fa-cubes\",\"shorty\": \"cubes\"},{\"full\": \"fas fa-cut\",\"shorty\": \"cut\"},{\"full\": \"fas fa-database\",\"shorty\": \"database\"},{\"full\": \"fas fa-deaf\",\"shorty\": \"deaf\"},{\"full\": \"fas fa-desktop\",\"shorty\": \"desktop\"},{\"full\": \"fas fa-dharmachakra\",\"shorty\": \"dharmachakra\"},{\"full\": \"fas fa-diagnoses\",\"shorty\": \"diagnoses\"},{\"full\": \"fas fa-dice\",\"shorty\": \"dice\"},{\"full\": \"fas fa-dice-five\",\"shorty\": \"dice-five\"},{\"full\": \"fas fa-dice-four\",\"shorty\": \"dice-four\"},{\"full\": \"fas fa-dice-one\",\"shorty\": \"dice-one\"},{\"full\": \"fas fa-dice-six\",\"shorty\": \"dice-six\"},{\"full\": \"fas fa-dice-three\",\"shorty\": \"dice-three\"},{\"full\": \"fas fa-dice-two\",\"shorty\": \"dice-two\"},{\"full\": \"fas fa-digital-tachograph\",\"shorty\": \"digital-tachograph\"},{\"full\": \"fas fa-directions\",\"shorty\": \"directions\"},{\"full\": \"fas fa-divide\",\"shorty\": \"divide\"},{\"full\": \"fas fa-dizzy\",\"shorty\": \"dizzy\"},{\"full\": \"fas fa-dna\",\"shorty\": \"dna\"},{\"full\": \"fas fa-dollar-sign\",\"shorty\": \"dollar-sign\"},{\"full\": \"fas fa-dolly\",\"shorty\": \"dolly\"},{\"full\": \"fas fa-dolly-flatbed\",\"shorty\": \"dolly-flatbed\"},{\"full\": \"fas fa-donate\",\"shorty\": \"donate\"},{\"full\": \"fas fa-door-closed\",\"shorty\": \"door-closed\"},{\"full\": \"fas fa-door-open\",\"shorty\": \"door-open\"},{\"full\": \"fas fa-dot-circle\",\"shorty\": \"dot-circle\"},{\"full\": \"fas fa-dove\",\"shorty\": \"dove\"},{\"full\": \"fas fa-download\",\"shorty\": \"download\"},{\"full\": \"fas fa-drafting-compass\",\"shorty\": \"drafting-compass\"},{\"full\": \"fas fa-draw-polygon\",\"shorty\": \"draw-polygon\"},{\"full\": \"fas fa-drum\",\"shorty\": \"drum\"},{\"full\": \"fas fa-drum-steelpan\",\"shorty\": \"drum-steelpan\"},{\"full\": \"fas fa-dumbbell\",\"shorty\": \"dumbbell\"},{\"full\": \"fas fa-edit\",\"shorty\": \"edit\"},{\"full\": \"fas fa-eject\",\"shorty\": \"eject\"},{\"full\": \"fas fa-ellipsis-h\",\"shorty\": \"ellipsis-h\"},{\"full\": \"fas fa-ellipsis-v\",\"shorty\": \"ellipsis-v\"},{\"full\": \"fas fa-envelope\",\"shorty\": \"envelope\"},{\"full\": \"fas fa-envelope-open\",\"shorty\": \"envelope-open\"},{\"full\": \"fas fa-envelope-open-text\",\"shorty\": \"envelope-open-text\"},{\"full\": \"fas fa-envelope-square\",\"shorty\": \"envelope-square\"},{\"full\": \"fas fa-equals\",\"shorty\": \"equals\"},{\"full\": \"fas fa-eraser\",\"shorty\": \"eraser\"},{\"full\": \"fas fa-euro-sign\",\"shorty\": \"euro-sign\"},{\"full\": \"fas fa-exchange-alt\",\"shorty\": \"exchange-alt\"},{\"full\": \"fas fa-exclamation\",\"shorty\": \"exclamation\"},{\"full\": \"fas fa-exclamation-circle\",\"shorty\": \"exclamation-circle\"},{\"full\": \"fas fa-exclamation-triangle\",\"shorty\": \"exclamation-triangle\"},{\"full\": \"fas fa-expand\",\"shorty\": \"expand\"},{\"full\": \"fas fa-expand-arrows-alt\",\"shorty\": \"expand-arrows-alt\"},{\"full\": \"fas fa-external-link-alt\",\"shorty\": \"external-link-alt\"},{\"full\": \"fas fa-external-link-square-alt\",\"shorty\": \"external-link-square-alt\"},{\"full\": \"fas fa-eye\",\"shorty\": \"eye\"},{\"full\": \"fas fa-eye-dropper\",\"shorty\": \"eye-dropper\"},{\"full\": \"fas fa-eye-slash\",\"shorty\": \"eye-slash\"},{\"full\": \"fas fa-fast-backward\",\"shorty\": \"fast-backward\"},{\"full\": \"fas fa-fast-forward\",\"shorty\": \"fast-forward\"},{\"full\": \"fas fa-fax\",\"shorty\": \"fax\"},{\"full\": \"fas fa-feather\",\"shorty\": \"feather\"},{\"full\": \"fas fa-feather-alt\",\"shorty\": \"feather-alt\"},{\"full\": \"fas fa-female\",\"shorty\": \"female\"},{\"full\": \"fas fa-fighter-jet\",\"shorty\": \"fighter-jet\"},{\"full\": \"fas fa-file\",\"shorty\": \"file\"},{\"full\": \"fas fa-file-alt\",\"shorty\": \"file-alt\"},{\"full\": \"fas fa-file-archive\",\"shorty\": \"file-archive\"},{\"full\": \"fas fa-file-audio\",\"shorty\": \"file-audio\"},{\"full\": \"fas fa-file-code\",\"shorty\": \"file-code\"},{\"full\": \"fas fa-file-contract\",\"shorty\": \"file-contract\"},{\"full\": \"fas fa-file-download\",\"shorty\": \"file-download\"},{\"full\": \"fas fa-file-excel\",\"shorty\": \"file-excel\"},{\"full\": \"fas fa-file-export\",\"shorty\": \"file-export\"},{\"full\": \"fas fa-file-image\",\"shorty\": \"file-image\"},{\"full\": \"fas fa-file-import\",\"shorty\": \"file-import\"},{\"full\": \"fas fa-file-invoice\",\"shorty\": \"file-invoice\"},{\"full\": \"fas fa-file-invoice-dollar\",\"shorty\": \"file-invoice-dollar\"},{\"full\": \"fas fa-file-medical\",\"shorty\": \"file-medical\"},{\"full\": \"fas fa-file-medical-alt\",\"shorty\": \"file-medical-alt\"},{\"full\": \"fas fa-file-pdf\",\"shorty\": \"file-pdf\"},{\"full\": \"fas fa-file-powerpoint\",\"shorty\": \"file-powerpoint\"},{\"full\": \"fas fa-file-prescription\",\"shorty\": \"file-prescription\"},{\"full\": \"fas fa-file-signature\",\"shorty\": \"file-signature\"},{\"full\": \"fas fa-file-upload\",\"shorty\": \"file-upload\"},{\"full\": \"fas fa-file-video\",\"shorty\": \"file-video\"},{\"full\": \"fas fa-file-word\",\"shorty\": \"file-word\"},{\"full\": \"fas fa-fill\",\"shorty\": \"fill\"},{\"full\": \"fas fa-fill-drip\",\"shorty\": \"fill-drip\"},{\"full\": \"fas fa-film\",\"shorty\": \"film\"},{\"full\": \"fas fa-filter\",\"shorty\": \"filter\"},{\"full\": \"fas fa-fingerprint\",\"shorty\": \"fingerprint\"},{\"full\": \"fas fa-fire\",\"shorty\": \"fire\"},{\"full\": \"fas fa-fire-extinguisher\",\"shorty\": \"fire-extinguisher\"},{\"full\": \"fas fa-first-aid\",\"shorty\": \"first-aid\"},{\"full\": \"fas fa-fish\",\"shorty\": \"fish\"},{\"full\": \"fas fa-flag\",\"shorty\": \"flag\"},{\"full\": \"fas fa-flag-checkered\",\"shorty\": \"flag-checkered\"},{\"full\": \"fas fa-flask\",\"shorty\": \"flask\"},{\"full\": \"fas fa-flushed\",\"shorty\": \"flushed\"},{\"full\": \"fas fa-folder\",\"shorty\": \"folder\"},{\"full\": \"fas fa-folder-minus\",\"shorty\": \"folder-minus\"},{\"full\": \"fas fa-folder-open\",\"shorty\": \"folder-open\"},{\"full\": \"fas fa-folder-plus\",\"shorty\": \"folder-plus\"},{\"full\": \"fas fa-font\",\"shorty\": \"font\"},{\"full\": \"fas fa-football-ball\",\"shorty\": \"football-ball\"},{\"full\": \"fas fa-forward\",\"shorty\": \"forward\"},{\"full\": \"fas fa-frog\",\"shorty\": \"frog\"},{\"full\": \"fas fa-frown\",\"shorty\": \"frown\"},{\"full\": \"fas fa-frown-open\",\"shorty\": \"frown-open\"},{\"full\": \"fas fa-funnel-dollar\",\"shorty\": \"funnel-dollar\"},{\"full\": \"fas fa-futbol\",\"shorty\": \"futbol\"},{\"full\": \"fas fa-gamepad\",\"shorty\": \"gamepad\"},{\"full\": \"fas fa-gas-pump\",\"shorty\": \"gas-pump\"},{\"full\": \"fas fa-gavel\",\"shorty\": \"gavel\"},{\"full\": \"fas fa-gem\",\"shorty\": \"gem\"},{\"full\": \"fas fa-genderless\",\"shorty\": \"genderless\"},{\"full\": \"fas fa-gift\",\"shorty\": \"gift\"},{\"full\": \"fas fa-glass-martini\",\"shorty\": \"glass-martini\"},{\"full\": \"fas fa-glass-martini-alt\",\"shorty\": \"glass-martini-alt\"},{\"full\": \"fas fa-glasses\",\"shorty\": \"glasses\"},{\"full\": \"fas fa-globe\",\"shorty\": \"globe\"},{\"full\": \"fas fa-globe-africa\",\"shorty\": \"globe-africa\"},{\"full\": \"fas fa-globe-americas\",\"shorty\": \"globe-americas\"},{\"full\": \"fas fa-globe-asia\",\"shorty\": \"globe-asia\"},{\"full\": \"fas fa-golf-ball\",\"shorty\": \"golf-ball\"},{\"full\": \"fas fa-gopuram\",\"shorty\": \"gopuram\"},{\"full\": \"fas fa-graduation-cap\",\"shorty\": \"graduation-cap\"},{\"full\": \"fas fa-greater-than\",\"shorty\": \"greater-than\"},{\"full\": \"fas fa-greater-than-equal\",\"shorty\": \"greater-than-equal\"},{\"full\": \"fas fa-grimace\",\"shorty\": \"grimace\"},{\"full\": \"fas fa-grin\",\"shorty\": \"grin\"},{\"full\": \"fas fa-grin-alt\",\"shorty\": \"grin-alt\"},{\"full\": \"fas fa-grin-beam\",\"shorty\": \"grin-beam\"},{\"full\": \"fas fa-grin-beam-sweat\",\"shorty\": \"grin-beam-sweat\"},{\"full\": \"fas fa-grin-hearts\",\"shorty\": \"grin-hearts\"},{\"full\": \"fas fa-grin-squint\",\"shorty\": \"grin-squint\"},{\"full\": \"fas fa-grin-squint-tears\",\"shorty\": \"grin-squint-tears\"},{\"full\": \"fas fa-grin-stars\",\"shorty\": \"grin-stars\"},{\"full\": \"fas fa-grin-tears\",\"shorty\": \"grin-tears\"},{\"full\": \"fas fa-grin-tongue\",\"shorty\": \"grin-tongue\"},{\"full\": \"fas fa-grin-tongue-squint\",\"shorty\": \"grin-tongue-squint\"},{\"full\": \"fas fa-grin-tongue-wink\",\"shorty\": \"grin-tongue-wink\"},{\"full\": \"fas fa-grin-wink\",\"shorty\": \"grin-wink\"},{\"full\": \"fas fa-grip-horizontal\",\"shorty\": \"grip-horizontal\"},{\"full\": \"fas fa-grip-vertical\",\"shorty\": \"grip-vertical\"},{\"full\": \"fas fa-h-square\",\"shorty\": \"h-square\"},{\"full\": \"fas fa-hamsa\",\"shorty\": \"hamsa\"},{\"full\": \"fas fa-hand-holding\",\"shorty\": \"hand-holding\"},{\"full\": \"fas fa-hand-holding-heart\",\"shorty\": \"hand-holding-heart\"},{\"full\": \"fas fa-hand-holding-usd\",\"shorty\": \"hand-holding-usd\"},{\"full\": \"fas fa-hand-lizard\",\"shorty\": \"hand-lizard\"},{\"full\": \"fas fa-hand-paper\",\"shorty\": \"hand-paper\"},{\"full\": \"fas fa-hand-peace\",\"shorty\": \"hand-peace\"},{\"full\": \"fas fa-hand-point-down\",\"shorty\": \"hand-point-down\"},{\"full\": \"fas fa-hand-point-left\",\"shorty\": \"hand-point-left\"},{\"full\": \"fas fa-hand-point-right\",\"shorty\": \"hand-point-right\"},{\"full\": \"fas fa-hand-point-up\",\"shorty\": \"hand-point-up\"},{\"full\": \"fas fa-hand-pointer\",\"shorty\": \"hand-pointer\"},{\"full\": \"fas fa-hand-rock\",\"shorty\": \"hand-rock\"},{\"full\": \"fas fa-hand-scissors\",\"shorty\": \"hand-scissors\"},{\"full\": \"fas fa-hand-spock\",\"shorty\": \"hand-spock\"},{\"full\": \"fas fa-hands\",\"shorty\": \"hands\"},{\"full\": \"fas fa-hands-helping\",\"shorty\": \"hands-helping\"},{\"full\": \"fas fa-handshake\",\"shorty\": \"handshake\"},{\"full\": \"fas fa-hashtag\",\"shorty\": \"hashtag\"},{\"full\": \"fas fa-haykal\",\"shorty\": \"haykal\"},{\"full\": \"fas fa-hdd\",\"shorty\": \"hdd\"},{\"full\": \"fas fa-heading\",\"shorty\": \"heading\"},{\"full\": \"fas fa-headphones\",\"shorty\": \"headphones\"},{\"full\": \"fas fa-headphones-alt\",\"shorty\": \"headphones-alt\"},{\"full\": \"fas fa-headset\",\"shorty\": \"headset\"},{\"full\": \"fas fa-heart\",\"shorty\": \"heart\"},{\"full\": \"fas fa-heartbeat\",\"shorty\": \"heartbeat\"},{\"full\": \"fas fa-helicopter\",\"shorty\": \"helicopter\"},{\"full\": \"fas fa-highlighter\",\"shorty\": \"highlighter\"},{\"full\": \"fas fa-history\",\"shorty\": \"history\"},{\"full\": \"fas fa-hockey-puck\",\"shorty\": \"hockey-puck\"},{\"full\": \"fas fa-home\",\"shorty\": \"home\"},{\"full\": \"fas fa-hospital\",\"shorty\": \"hospital\"},{\"full\": \"fas fa-hospital-alt\",\"shorty\": \"hospital-alt\"},{\"full\": \"fas fa-hospital-symbol\",\"shorty\": \"hospital-symbol\"},{\"full\": \"fas fa-hot-tub\",\"shorty\": \"hot-tub\"},{\"full\": \"fas fa-hotel\",\"shorty\": \"hotel\"},{\"full\": \"fas fa-hourglass\",\"shorty\": \"hourglass\"},{\"full\": \"fas fa-hourglass-end\",\"shorty\": \"hourglass-end\"},{\"full\": \"fas fa-hourglass-half\",\"shorty\": \"hourglass-half\"},{\"full\": \"fas fa-hourglass-start\",\"shorty\": \"hourglass-start\"},{\"full\": \"fas fa-i-cursor\",\"shorty\": \"i-cursor\"},{\"full\": \"fas fa-id-badge\",\"shorty\": \"id-badge\"},{\"full\": \"fas fa-id-card\",\"shorty\": \"id-card\"},{\"full\": \"fas fa-id-card-alt\",\"shorty\": \"id-card-alt\"},{\"full\": \"fas fa-image\",\"shorty\": \"image\"},{\"full\": \"fas fa-images\",\"shorty\": \"images\"},{\"full\": \"fas fa-inbox\",\"shorty\": \"inbox\"},{\"full\": \"fas fa-indent\",\"shorty\": \"indent\"},{\"full\": \"fas fa-industry\",\"shorty\": \"industry\"},{\"full\": \"fas fa-infinity\",\"shorty\": \"infinity\"},{\"full\": \"fas fa-info\",\"shorty\": \"info\"},{\"full\": \"fas fa-info-circle\",\"shorty\": \"info-circle\"},{\"full\": \"fas fa-italic\",\"shorty\": \"italic\"},{\"full\": \"fas fa-jedi\",\"shorty\": \"jedi\"},{\"full\": \"fas fa-joint\",\"shorty\": \"joint\"},{\"full\": \"fas fa-journal-whills\",\"shorty\": \"journal-whills\"},{\"full\": \"fas fa-kaaba\",\"shorty\": \"kaaba\"},{\"full\": \"fas fa-key\",\"shorty\": \"key\"},{\"full\": \"fas fa-keyboard\",\"shorty\": \"keyboard\"},{\"full\": \"fas fa-khanda\",\"shorty\": \"khanda\"},{\"full\": \"fas fa-kiss\",\"shorty\": \"kiss\"},{\"full\": \"fas fa-kiss-beam\",\"shorty\": \"kiss-beam\"},{\"full\": \"fas fa-kiss-wink-heart\",\"shorty\": \"kiss-wink-heart\"},{\"full\": \"fas fa-kiwi-bird\",\"shorty\": \"kiwi-bird\"},{\"full\": \"fas fa-landmark\",\"shorty\": \"landmark\"},{\"full\": \"fas fa-language\",\"shorty\": \"language\"},{\"full\": \"fas fa-laptop\",\"shorty\": \"laptop\"},{\"full\": \"fas fa-laptop-code\",\"shorty\": \"laptop-code\"},{\"full\": \"fas fa-laugh\",\"shorty\": \"laugh\"},{\"full\": \"fas fa-laugh-beam\",\"shorty\": \"laugh-beam\"},{\"full\": \"fas fa-laugh-squint\",\"shorty\": \"laugh-squint\"},{\"full\": \"fas fa-laugh-wink\",\"shorty\": \"laugh-wink\"},{\"full\": \"fas fa-layer-group\",\"shorty\": \"layer-group\"},{\"full\": \"fas fa-leaf\",\"shorty\": \"leaf\"},{\"full\": \"fas fa-lemon\",\"shorty\": \"lemon\"},{\"full\": \"fas fa-less-than\",\"shorty\": \"less-than\"},{\"full\": \"fas fa-less-than-equal\",\"shorty\": \"less-than-equal\"},{\"full\": \"fas fa-level-down-alt\",\"shorty\": \"level-down-alt\"},{\"full\": \"fas fa-level-up-alt\",\"shorty\": \"level-up-alt\"},{\"full\": \"fas fa-life-ring\",\"shorty\": \"life-ring\"},{\"full\": \"fas fa-lightbulb\",\"shorty\": \"lightbulb\"},{\"full\": \"fas fa-link\",\"shorty\": \"link\"},{\"full\": \"fas fa-lira-sign\",\"shorty\": \"lira-sign\"},{\"full\": \"fas fa-list\",\"shorty\": \"list\"},{\"full\": \"fas fa-list-alt\",\"shorty\": \"list-alt\"},{\"full\": \"fas fa-list-ol\",\"shorty\": \"list-ol\"},{\"full\": \"fas fa-list-ul\",\"shorty\": \"list-ul\"},{\"full\": \"fas fa-location-arrow\",\"shorty\": \"location-arrow\"},{\"full\": \"fas fa-lock\",\"shorty\": \"lock\"},{\"full\": \"fas fa-lock-open\",\"shorty\": \"lock-open\"},{\"full\": \"fas fa-long-arrow-alt-down\",\"shorty\": \"long-arrow-alt-down\"},{\"full\": \"fas fa-long-arrow-alt-left\",\"shorty\": \"long-arrow-alt-left\"},{\"full\": \"fas fa-long-arrow-alt-right\",\"shorty\": \"long-arrow-alt-right\"},{\"full\": \"fas fa-long-arrow-alt-up\",\"shorty\": \"long-arrow-alt-up\"},{\"full\": \"fas fa-low-vision\",\"shorty\": \"low-vision\"},{\"full\": \"fas fa-luggage-cart\",\"shorty\": \"luggage-cart\"},{\"full\": \"fas fa-magic\",\"shorty\": \"magic\"},{\"full\": \"fas fa-magnet\",\"shorty\": \"magnet\"},{\"full\": \"fas fa-mail-bulk\",\"shorty\": \"mail-bulk\"},{\"full\": \"fas fa-male\",\"shorty\": \"male\"},{\"full\": \"fas fa-map\",\"shorty\": \"map\"},{\"full\": \"fas fa-map-marked\",\"shorty\": \"map-marked\"},{\"full\": \"fas fa-map-marked-alt\",\"shorty\": \"map-marked-alt\"},{\"full\": \"fas fa-map-marker\",\"shorty\": \"map-marker\"},{\"full\": \"fas fa-map-marker-alt\",\"shorty\": \"map-marker-alt\"},{\"full\": \"fas fa-map-pin\",\"shorty\": \"map-pin\"},{\"full\": \"fas fa-map-signs\",\"shorty\": \"map-signs\"},{\"full\": \"fas fa-marker\",\"shorty\": \"marker\"},{\"full\": \"fas fa-mars\",\"shorty\": \"mars\"},{\"full\": \"fas fa-mars-double\",\"shorty\": \"mars-double\"},{\"full\": \"fas fa-mars-stroke\",\"shorty\": \"mars-stroke\"},{\"full\": \"fas fa-mars-stroke-h\",\"shorty\": \"mars-stroke-h\"},{\"full\": \"fas fa-mars-stroke-v\",\"shorty\": \"mars-stroke-v\"},{\"full\": \"fas fa-medal\",\"shorty\": \"medal\"},{\"full\": \"fas fa-medkit\",\"shorty\": \"medkit\"},{\"full\": \"fas fa-meh\",\"shorty\": \"meh\"},{\"full\": \"fas fa-meh-blank\",\"shorty\": \"meh-blank\"},{\"full\": \"fas fa-meh-rolling-eyes\",\"shorty\": \"meh-rolling-eyes\"},{\"full\": \"fas fa-memory\",\"shorty\": \"memory\"},{\"full\": \"fas fa-menorah\",\"shorty\": \"menorah\"},{\"full\": \"fas fa-mercury\",\"shorty\": \"mercury\"},{\"full\": \"fas fa-microchip\",\"shorty\": \"microchip\"},{\"full\": \"fas fa-microphone\",\"shorty\": \"microphone\"},{\"full\": \"fas fa-microphone-alt\",\"shorty\": \"microphone-alt\"},{\"full\": \"fas fa-microphone-alt-slash\",\"shorty\": \"microphone-alt-slash\"},{\"full\": \"fas fa-microphone-slash\",\"shorty\": \"microphone-slash\"},{\"full\": \"fas fa-microscope\",\"shorty\": \"microscope\"},{\"full\": \"fas fa-minus\",\"shorty\": \"minus\"},{\"full\": \"fas fa-minus-circle\",\"shorty\": \"minus-circle\"},{\"full\": \"fas fa-minus-square\",\"shorty\": \"minus-square\"},{\"full\": \"fas fa-mobile\",\"shorty\": \"mobile\"},{\"full\": \"fas fa-mobile-alt\",\"shorty\": \"mobile-alt\"},{\"full\": \"fas fa-money-bill\",\"shorty\": \"money-bill\"},{\"full\": \"fas fa-money-bill-alt\",\"shorty\": \"money-bill-alt\"},{\"full\": \"fas fa-money-bill-wave\",\"shorty\": \"money-bill-wave\"},{\"full\": \"fas fa-money-bill-wave-alt\",\"shorty\": \"money-bill-wave-alt\"},{\"full\": \"fas fa-money-check\",\"shorty\": \"money-check\"},{\"full\": \"fas fa-money-check-alt\",\"shorty\": \"money-check-alt\"},{\"full\": \"fas fa-monument\",\"shorty\": \"monument\"},{\"full\": \"fas fa-moon\",\"shorty\": \"moon\"},{\"full\": \"fas fa-mortar-pestle\",\"shorty\": \"mortar-pestle\"},{\"full\": \"fas fa-mosque\",\"shorty\": \"mosque\"},{\"full\": \"fas fa-motorcycle\",\"shorty\": \"motorcycle\"},{\"full\": \"fas fa-mouse-pointer\",\"shorty\": \"mouse-pointer\"},{\"full\": \"fas fa-music\",\"shorty\": \"music\"},{\"full\": \"fas fa-neuter\",\"shorty\": \"neuter\"},{\"full\": \"fas fa-newspaper\",\"shorty\": \"newspaper\"},{\"full\": \"fas fa-not-equal\",\"shorty\": \"not-equal\"},{\"full\": \"fas fa-notes-medical\",\"shorty\": \"notes-medical\"},{\"full\": \"fas fa-object-group\",\"shorty\": \"object-group\"},{\"full\": \"fas fa-object-ungroup\",\"shorty\": \"object-ungroup\"},{\"full\": \"fas fa-oil-can\",\"shorty\": \"oil-can\"},{\"full\": \"fas fa-om\",\"shorty\": \"om\"},{\"full\": \"fas fa-outdent\",\"shorty\": \"outdent\"},{\"full\": \"fas fa-paint-brush\",\"shorty\": \"paint-brush\"},{\"full\": \"fas fa-paint-roller\",\"shorty\": \"paint-roller\"},{\"full\": \"fas fa-palette\",\"shorty\": \"palette\"},{\"full\": \"fas fa-pallet\",\"shorty\": \"pallet\"},{\"full\": \"fas fa-paper-plane\",\"shorty\": \"paper-plane\"},{\"full\": \"fas fa-paperclip\",\"shorty\": \"paperclip\"},{\"full\": \"fas fa-parachute-box\",\"shorty\": \"parachute-box\"},{\"full\": \"fas fa-paragraph\",\"shorty\": \"paragraph\"},{\"full\": \"fas fa-parking\",\"shorty\": \"parking\"},{\"full\": \"fas fa-passport\",\"shorty\": \"passport\"},{\"full\": \"fas fa-pastafarianism\",\"shorty\": \"pastafarianism\"},{\"full\": \"fas fa-paste\",\"shorty\": \"paste\"},{\"full\": \"fas fa-pause\",\"shorty\": \"pause\"},{\"full\": \"fas fa-pause-circle\",\"shorty\": \"pause-circle\"},{\"full\": \"fas fa-paw\",\"shorty\": \"paw\"},{\"full\": \"fas fa-peace\",\"shorty\": \"peace\"},{\"full\": \"fas fa-pen\",\"shorty\": \"pen\"},{\"full\": \"fas fa-pen-alt\",\"shorty\": \"pen-alt\"},{\"full\": \"fas fa-pen-fancy\",\"shorty\": \"pen-fancy\"},{\"full\": \"fas fa-pen-nib\",\"shorty\": \"pen-nib\"},{\"full\": \"fas fa-pen-square\",\"shorty\": \"pen-square\"},{\"full\": \"fas fa-pencil-alt\",\"shorty\": \"pencil-alt\"},{\"full\": \"fas fa-pencil-ruler\",\"shorty\": \"pencil-ruler\"},{\"full\": \"fas fa-people-carry\",\"shorty\": \"people-carry\"},{\"full\": \"fas fa-percent\",\"shorty\": \"percent\"},{\"full\": \"fas fa-percentage\",\"shorty\": \"percentage\"},{\"full\": \"fas fa-phone\",\"shorty\": \"phone\"},{\"full\": \"fas fa-phone-slash\",\"shorty\": \"phone-slash\"},{\"full\": \"fas fa-phone-square\",\"shorty\": \"phone-square\"},{\"full\": \"fas fa-phone-volume\",\"shorty\": \"phone-volume\"},{\"full\": \"fas fa-piggy-bank\",\"shorty\": \"piggy-bank\"},{\"full\": \"fas fa-pills\",\"shorty\": \"pills\"},{\"full\": \"fas fa-place-of-worship\",\"shorty\": \"place-of-worship\"},{\"full\": \"fas fa-plane\",\"shorty\": \"plane\"},{\"full\": \"fas fa-plane-arrival\",\"shorty\": \"plane-arrival\"},{\"full\": \"fas fa-plane-departure\",\"shorty\": \"plane-departure\"},{\"full\": \"fas fa-play\",\"shorty\": \"play\"},{\"full\": \"fas fa-play-circle\",\"shorty\": \"play-circle\"},{\"full\": \"fas fa-plug\",\"shorty\": \"plug\"},{\"full\": \"fas fa-plus\",\"shorty\": \"plus\"},{\"full\": \"fas fa-plus-circle\",\"shorty\": \"plus-circle\"},{\"full\": \"fas fa-plus-square\",\"shorty\": \"plus-square\"},{\"full\": \"fas fa-podcast\",\"shorty\": \"podcast\"},{\"full\": \"fas fa-poll\",\"shorty\": \"poll\"},{\"full\": \"fas fa-poll-h\",\"shorty\": \"poll-h\"},{\"full\": \"fas fa-poo\",\"shorty\": \"poo\"},{\"full\": \"fas fa-poop\",\"shorty\": \"poop\"},{\"full\": \"fas fa-portrait\",\"shorty\": \"portrait\"},{\"full\": \"fas fa-pound-sign\",\"shorty\": \"pound-sign\"},{\"full\": \"fas fa-power-off\",\"shorty\": \"power-off\"},{\"full\": \"fas fa-pray\",\"shorty\": \"pray\"},{\"full\": \"fas fa-praying-hands\",\"shorty\": \"praying-hands\"},{\"full\": \"fas fa-prescription\",\"shorty\": \"prescription\"},{\"full\": \"fas fa-prescription-bottle\",\"shorty\": \"prescription-bottle\"},{\"full\": \"fas fa-prescription-bottle-alt\",\"shorty\": \"prescription-bottle-alt\"},{\"full\": \"fas fa-print\",\"shorty\": \"print\"},{\"full\": \"fas fa-procedures\",\"shorty\": \"procedures\"},{\"full\": \"fas fa-project-diagram\",\"shorty\": \"project-diagram\"},{\"full\": \"fas fa-puzzle-piece\",\"shorty\": \"puzzle-piece\"},{\"full\": \"fas fa-qrcode\",\"shorty\": \"qrcode\"},{\"full\": \"fas fa-question\",\"shorty\": \"question\"},{\"full\": \"fas fa-question-circle\",\"shorty\": \"question-circle\"},{\"full\": \"fas fa-quidditch\",\"shorty\": \"quidditch\"},{\"full\": \"fas fa-quote-left\",\"shorty\": \"quote-left\"},{\"full\": \"fas fa-quote-right\",\"shorty\": \"quote-right\"},{\"full\": \"fas fa-quran\",\"shorty\": \"quran\"},{\"full\": \"fas fa-random\",\"shorty\": \"random\"},{\"full\": \"fas fa-receipt\",\"shorty\": \"receipt\"},{\"full\": \"fas fa-recycle\",\"shorty\": \"recycle\"},{\"full\": \"fas fa-redo\",\"shorty\": \"redo\"},{\"full\": \"fas fa-redo-alt\",\"shorty\": \"redo-alt\"},{\"full\": \"fas fa-registered\",\"shorty\": \"registered\"},{\"full\": \"fas fa-reply\",\"shorty\": \"reply\"},{\"full\": \"fas fa-reply-all\",\"shorty\": \"reply-all\"},{\"full\": \"fas fa-retweet\",\"shorty\": \"retweet\"},{\"full\": \"fas fa-ribbon\",\"shorty\": \"ribbon\"},{\"full\": \"fas fa-road\",\"shorty\": \"road\"},{\"full\": \"fas fa-robot\",\"shorty\": \"robot\"},{\"full\": \"fas fa-rocket\",\"shorty\": \"rocket\"},{\"full\": \"fas fa-route\",\"shorty\": \"route\"},{\"full\": \"fas fa-rss\",\"shorty\": \"rss\"},{\"full\": \"fas fa-rss-square\",\"shorty\": \"rss-square\"},{\"full\": \"fas fa-ruble-sign\",\"shorty\": \"ruble-sign\"},{\"full\": \"fas fa-ruler\",\"shorty\": \"ruler\"},{\"full\": \"fas fa-ruler-combined\",\"shorty\": \"ruler-combined\"},{\"full\": \"fas fa-ruler-horizontal\",\"shorty\": \"ruler-horizontal\"},{\"full\": \"fas fa-ruler-vertical\",\"shorty\": \"ruler-vertical\"},{\"full\": \"fas fa-rupee-sign\",\"shorty\": \"rupee-sign\"},{\"full\": \"fas fa-sad-cry\",\"shorty\": \"sad-cry\"},{\"full\": \"fas fa-sad-tear\",\"shorty\": \"sad-tear\"},{\"full\": \"fas fa-save\",\"shorty\": \"save\"},{\"full\": \"fas fa-school\",\"shorty\": \"school\"},{\"full\": \"fas fa-screwdriver\",\"shorty\": \"screwdriver\"},{\"full\": \"fas fa-search\",\"shorty\": \"search\"},{\"full\": \"fas fa-search-dollar\",\"shorty\": \"search-dollar\"},{\"full\": \"fas fa-search-location\",\"shorty\": \"search-location\"},{\"full\": \"fas fa-search-minus\",\"shorty\": \"search-minus\"},{\"full\": \"fas fa-search-plus\",\"shorty\": \"search-plus\"},{\"full\": \"fas fa-seedling\",\"shorty\": \"seedling\"},{\"full\": \"fas fa-server\",\"shorty\": \"server\"},{\"full\": \"fas fa-shapes\",\"shorty\": \"shapes\"},{\"full\": \"fas fa-share\",\"shorty\": \"share\"},{\"full\": \"fas fa-share-alt\",\"shorty\": \"share-alt\"},{\"full\": \"fas fa-share-alt-square\",\"shorty\": \"share-alt-square\"},{\"full\": \"fas fa-share-square\",\"shorty\": \"share-square\"},{\"full\": \"fas fa-shekel-sign\",\"shorty\": \"shekel-sign\"},{\"full\": \"fas fa-shield-alt\",\"shorty\": \"shield-alt\"},{\"full\": \"fas fa-ship\",\"shorty\": \"ship\"},{\"full\": \"fas fa-shipping-fast\",\"shorty\": \"shipping-fast\"},{\"full\": \"fas fa-shoe-prints\",\"shorty\": \"shoe-prints\"},{\"full\": \"fas fa-shopping-bag\",\"shorty\": \"shopping-bag\"},{\"full\": \"fas fa-shopping-basket\",\"shorty\": \"shopping-basket\"},{\"full\": \"fas fa-shopping-cart\",\"shorty\": \"shopping-cart\"},{\"full\": \"fas fa-shower\",\"shorty\": \"shower\"},{\"full\": \"fas fa-shuttle-van\",\"shorty\": \"shuttle-van\"},{\"full\": \"fas fa-sign\",\"shorty\": \"sign\"},{\"full\": \"fas fa-sign-in-alt\",\"shorty\": \"sign-in-alt\"},{\"full\": \"fas fa-sign-language\",\"shorty\": \"sign-language\"},{\"full\": \"fas fa-sign-out-alt\",\"shorty\": \"sign-out-alt\"},{\"full\": \"fas fa-signal\",\"shorty\": \"signal\"},{\"full\": \"fas fa-signature\",\"shorty\": \"signature\"},{\"full\": \"fas fa-sitemap\",\"shorty\": \"sitemap\"},{\"full\": \"fas fa-skull\",\"shorty\": \"skull\"},{\"full\": \"fas fa-sliders-h\",\"shorty\": \"sliders-h\"},{\"full\": \"fas fa-smile\",\"shorty\": \"smile\"},{\"full\": \"fas fa-smile-beam\",\"shorty\": \"smile-beam\"},{\"full\": \"fas fa-smile-wink\",\"shorty\": \"smile-wink\"},{\"full\": \"fas fa-smoking\",\"shorty\": \"smoking\"},{\"full\": \"fas fa-smoking-ban\",\"shorty\": \"smoking-ban\"},{\"full\": \"fas fa-snowflake\",\"shorty\": \"snowflake\"},{\"full\": \"fas fa-socks\",\"shorty\": \"socks\"},{\"full\": \"fas fa-solar-panel\",\"shorty\": \"solar-panel\"},{\"full\": \"fas fa-sort\",\"shorty\": \"sort\"},{\"full\": \"fas fa-sort-alpha-down\",\"shorty\": \"sort-alpha-down\"},{\"full\": \"fas fa-sort-alpha-up\",\"shorty\": \"sort-alpha-up\"},{\"full\": \"fas fa-sort-amount-down\",\"shorty\": \"sort-amount-down\"},{\"full\": \"fas fa-sort-amount-up\",\"shorty\": \"sort-amount-up\"},{\"full\": \"fas fa-sort-down\",\"shorty\": \"sort-down\"},{\"full\": \"fas fa-sort-numeric-down\",\"shorty\": \"sort-numeric-down\"},{\"full\": \"fas fa-sort-numeric-up\",\"shorty\": \"sort-numeric-up\"},{\"full\": \"fas fa-sort-up\",\"shorty\": \"sort-up\"},{\"full\": \"fas fa-spa\",\"shorty\": \"spa\"},{\"full\": \"fas fa-space-shuttle\",\"shorty\": \"space-shuttle\"},{\"full\": \"fas fa-spinner\",\"shorty\": \"spinner\"},{\"full\": \"fas fa-splotch\",\"shorty\": \"splotch\"},{\"full\": \"fas fa-spray-can\",\"shorty\": \"spray-can\"},{\"full\": \"fas fa-square\",\"shorty\": \"square\"},{\"full\": \"fas fa-square-full\",\"shorty\": \"square-full\"},{\"full\": \"fas fa-square-root-alt\",\"shorty\": \"square-root-alt\"},{\"full\": \"fas fa-stamp\",\"shorty\": \"stamp\"},{\"full\": \"fas fa-star\",\"shorty\": \"star\"},{\"full\": \"fas fa-star-and-crescent\",\"shorty\": \"star-and-crescent\"},{\"full\": \"fas fa-star-half\",\"shorty\": \"star-half\"},{\"full\": \"fas fa-star-half-alt\",\"shorty\": \"star-half-alt\"},{\"full\": \"fas fa-star-of-david\",\"shorty\": \"star-of-david\"},{\"full\": \"fas fa-star-of-life\",\"shorty\": \"star-of-life\"},{\"full\": \"fas fa-step-backward\",\"shorty\": \"step-backward\"},{\"full\": \"fas fa-step-forward\",\"shorty\": \"step-forward\"},{\"full\": \"fas fa-stethoscope\",\"shorty\": \"stethoscope\"},{\"full\": \"fas fa-sticky-note\",\"shorty\": \"sticky-note\"},{\"full\": \"fas fa-stop\",\"shorty\": \"stop\"},{\"full\": \"fas fa-stop-circle\",\"shorty\": \"stop-circle\"},{\"full\": \"fas fa-stopwatch\",\"shorty\": \"stopwatch\"},{\"full\": \"fas fa-store\",\"shorty\": \"store\"},{\"full\": \"fas fa-store-alt\",\"shorty\": \"store-alt\"},{\"full\": \"fas fa-stream\",\"shorty\": \"stream\"},{\"full\": \"fas fa-street-view\",\"shorty\": \"street-view\"},{\"full\": \"fas fa-strikethrough\",\"shorty\": \"strikethrough\"},{\"full\": \"fas fa-stroopwafel\",\"shorty\": \"stroopwafel\"},{\"full\": \"fas fa-subscript\",\"shorty\": \"subscript\"},{\"full\": \"fas fa-subway\",\"shorty\": \"subway\"},{\"full\": \"fas fa-suitcase\",\"shorty\": \"suitcase\"},{\"full\": \"fas fa-suitcase-rolling\",\"shorty\": \"suitcase-rolling\"},{\"full\": \"fas fa-sun\",\"shorty\": \"sun\"},{\"full\": \"fas fa-superscript\",\"shorty\": \"superscript\"},{\"full\": \"fas fa-surprise\",\"shorty\": \"surprise\"},{\"full\": \"fas fa-swatchbook\",\"shorty\": \"swatchbook\"},{\"full\": \"fas fa-swimmer\",\"shorty\": \"swimmer\"},{\"full\": \"fas fa-swimming-pool\",\"shorty\": \"swimming-pool\"},{\"full\": \"fas fa-synagogue\",\"shorty\": \"synagogue\"},{\"full\": \"fas fa-sync\",\"shorty\": \"sync\"},{\"full\": \"fas fa-sync-alt\",\"shorty\": \"sync-alt\"},{\"full\": \"fas fa-syringe\",\"shorty\": \"syringe\"},{\"full\": \"fas fa-table\",\"shorty\": \"table\"},{\"full\": \"fas fa-table-tennis\",\"shorty\": \"table-tennis\"},{\"full\": \"fas fa-tablet\",\"shorty\": \"tablet\"},{\"full\": \"fas fa-tablet-alt\",\"shorty\": \"tablet-alt\"},{\"full\": \"fas fa-tablets\",\"shorty\": \"tablets\"},{\"full\": \"fas fa-tachometer-alt\",\"shorty\": \"tachometer-alt\"},{\"full\": \"fas fa-tag\",\"shorty\": \"tag\"},{\"full\": \"fas fa-tags\",\"shorty\": \"tags\"},{\"full\": \"fas fa-tape\",\"shorty\": \"tape\"},{\"full\": \"fas fa-tasks\",\"shorty\": \"tasks\"},{\"full\": \"fas fa-taxi\",\"shorty\": \"taxi\"},{\"full\": \"fas fa-teeth\",\"shorty\": \"teeth\"},{\"full\": \"fas fa-teeth-open\",\"shorty\": \"teeth-open\"},{\"full\": \"fas fa-terminal\",\"shorty\": \"terminal\"},{\"full\": \"fas fa-text-height\",\"shorty\": \"text-height\"},{\"full\": \"fas fa-text-width\",\"shorty\": \"text-width\"},{\"full\": \"fas fa-th\",\"shorty\": \"th\"},{\"full\": \"fas fa-th-large\",\"shorty\": \"th-large\"},{\"full\": \"fas fa-th-list\",\"shorty\": \"th-list\"},{\"full\": \"fas fa-theater-masks\",\"shorty\": \"theater-masks\"},{\"full\": \"fas fa-thermometer\",\"shorty\": \"thermometer\"},{\"full\": \"fas fa-thermometer-empty\",\"shorty\": \"thermometer-empty\"},{\"full\": \"fas fa-thermometer-full\",\"shorty\": \"thermometer-full\"},{\"full\": \"fas fa-thermometer-half\",\"shorty\": \"thermometer-half\"},{\"full\": \"fas fa-thermometer-quarter\",\"shorty\": \"thermometer-quarter\"},{\"full\": \"fas fa-thermometer-three-quarters\",\"shorty\": \"thermometer-three-quarters\"},{\"full\": \"fas fa-thumbs-down\",\"shorty\": \"thumbs-down\"},{\"full\": \"fas fa-thumbs-up\",\"shorty\": \"thumbs-up\"},{\"full\": \"fas fa-thumbtack\",\"shorty\": \"thumbtack\"},{\"full\": \"fas fa-ticket-alt\",\"shorty\": \"ticket-alt\"},{\"full\": \"fas fa-times\",\"shorty\": \"times\"},{\"full\": \"fas fa-times-circle\",\"shorty\": \"times-circle\"},{\"full\": \"fas fa-tint\",\"shorty\": \"tint\"},{\"full\": \"fas fa-tint-slash\",\"shorty\": \"tint-slash\"},{\"full\": \"fas fa-tired\",\"shorty\": \"tired\"},{\"full\": \"fas fa-toggle-off\",\"shorty\": \"toggle-off\"},{\"full\": \"fas fa-toggle-on\",\"shorty\": \"toggle-on\"},{\"full\": \"fas fa-toolbox\",\"shorty\": \"toolbox\"},{\"full\": \"fas fa-tooth\",\"shorty\": \"tooth\"},{\"full\": \"fas fa-torah\",\"shorty\": \"torah\"},{\"full\": \"fas fa-torii-gate\",\"shorty\": \"torii-gate\"},{\"full\": \"fas fa-trademark\",\"shorty\": \"trademark\"},{\"full\": \"fas fa-traffic-light\",\"shorty\": \"traffic-light\"},{\"full\": \"fas fa-train\",\"shorty\": \"train\"},{\"full\": \"fas fa-transgender\",\"shorty\": \"transgender\"},{\"full\": \"fas fa-transgender-alt\",\"shorty\": \"transgender-alt\"},{\"full\": \"fas fa-trash\",\"shorty\": \"trash\"},{\"full\": \"fas fa-trash-alt\",\"shorty\": \"trash-alt\"},{\"full\": \"fas fa-tree\",\"shorty\": \"tree\"},{\"full\": \"fas fa-trophy\",\"shorty\": \"trophy\"},{\"full\": \"fas fa-truck\",\"shorty\": \"truck\"},{\"full\": \"fas fa-truck-loading\",\"shorty\": \"truck-loading\"},{\"full\": \"fas fa-truck-monster\",\"shorty\": \"truck-monster\"},{\"full\": \"fas fa-truck-moving\",\"shorty\": \"truck-moving\"},{\"full\": \"fas fa-truck-pickup\",\"shorty\": \"truck-pickup\"},{\"full\": \"fas fa-tshirt\",\"shorty\": \"tshirt\"},{\"full\": \"fas fa-tty\",\"shorty\": \"tty\"},{\"full\": \"fas fa-tv\",\"shorty\": \"tv\"},{\"full\": \"fas fa-umbrella\",\"shorty\": \"umbrella\"},{\"full\": \"fas fa-umbrella-beach\",\"shorty\": \"umbrella-beach\"},{\"full\": \"fas fa-underline\",\"shorty\": \"underline\"},{\"full\": \"fas fa-undo\",\"shorty\": \"undo\"},{\"full\": \"fas fa-undo-alt\",\"shorty\": \"undo-alt\"},{\"full\": \"fas fa-universal-access\",\"shorty\": \"universal-access\"},{\"full\": \"fas fa-university\",\"shorty\": \"university\"},{\"full\": \"fas fa-unlink\",\"shorty\": \"unlink\"},{\"full\": \"fas fa-unlock\",\"shorty\": \"unlock\"},{\"full\": \"fas fa-unlock-alt\",\"shorty\": \"unlock-alt\"},{\"full\": \"fas fa-upload\",\"shorty\": \"upload\"},{\"full\": \"fas fa-user\",\"shorty\": \"user\"},{\"full\": \"fas fa-user-alt\",\"shorty\": \"user-alt\"},{\"full\": \"fas fa-user-alt-slash\",\"shorty\": \"user-alt-slash\"},{\"full\": \"fas fa-user-astronaut\",\"shorty\": \"user-astronaut\"},{\"full\": \"fas fa-user-check\",\"shorty\": \"user-check\"},{\"full\": \"fas fa-user-circle\",\"shorty\": \"user-circle\"},{\"full\": \"fas fa-user-clock\",\"shorty\": \"user-clock\"},{\"full\": \"fas fa-user-cog\",\"shorty\": \"user-cog\"},{\"full\": \"fas fa-user-edit\",\"shorty\": \"user-edit\"},{\"full\": \"fas fa-user-friends\",\"shorty\": \"user-friends\"},{\"full\": \"fas fa-user-graduate\",\"shorty\": \"user-graduate\"},{\"full\": \"fas fa-user-lock\",\"shorty\": \"user-lock\"},{\"full\": \"fas fa-user-md\",\"shorty\": \"user-md\"},{\"full\": \"fas fa-user-minus\",\"shorty\": \"user-minus\"},{\"full\": \"fas fa-user-ninja\",\"shorty\": \"user-ninja\"},{\"full\": \"fas fa-user-plus\",\"shorty\": \"user-plus\"},{\"full\": \"fas fa-user-secret\",\"shorty\": \"user-secret\"},{\"full\": \"fas fa-user-shield\",\"shorty\": \"user-shield\"},{\"full\": \"fas fa-user-slash\",\"shorty\": \"user-slash\"},{\"full\": \"fas fa-user-tag\",\"shorty\": \"user-tag\"},{\"full\": \"fas fa-user-tie\",\"shorty\": \"user-tie\"},{\"full\": \"fas fa-user-times\",\"shorty\": \"user-times\"},{\"full\": \"fas fa-users\",\"shorty\": \"users\"},{\"full\": \"fas fa-users-cog\",\"shorty\": \"users-cog\"},{\"full\": \"fas fa-utensil-spoon\",\"shorty\": \"utensil-spoon\"},{\"full\": \"fas fa-utensils\",\"shorty\": \"utensils\"},{\"full\": \"fas fa-vector-square\",\"shorty\": \"vector-square\"},{\"full\": \"fas fa-venus\",\"shorty\": \"venus\"},{\"full\": \"fas fa-venus-double\",\"shorty\": \"venus-double\"},{\"full\": \"fas fa-venus-mars\",\"shorty\": \"venus-mars\"},{\"full\": \"fas fa-vial\",\"shorty\": \"vial\"},{\"full\": \"fas fa-vials\",\"shorty\": \"vials\"},{\"full\": \"fas fa-video\",\"shorty\": \"video\"},{\"full\": \"fas fa-video-slash\",\"shorty\": \"video-slash\"},{\"full\": \"fas fa-vihara\",\"shorty\": \"vihara\"},{\"full\": \"fas fa-volleyball-ball\",\"shorty\": \"volleyball-ball\"},{\"full\": \"fas fa-volume-down\",\"shorty\": \"volume-down\"},{\"full\": \"fas fa-volume-off\",\"shorty\": \"volume-off\"},{\"full\": \"fas fa-volume-up\",\"shorty\": \"volume-up\"},{\"full\": \"fas fa-walking\",\"shorty\": \"walking\"},{\"full\": \"fas fa-wallet\",\"shorty\": \"wallet\"},{\"full\": \"fas fa-warehouse\",\"shorty\": \"warehouse\"},{\"full\": \"fas fa-weight\",\"shorty\": \"weight\"},{\"full\": \"fas fa-weight-hanging\",\"shorty\": \"weight-hanging\"},{\"full\": \"fas fa-wheelchair\",\"shorty\": \"wheelchair\"},{\"full\": \"fas fa-wifi\",\"shorty\": \"wifi\"},{\"full\": \"fas fa-window-close\",\"shorty\": \"window-close\"},{\"full\": \"fas fa-window-maximize\",\"shorty\": \"window-maximize\"},{\"full\": \"fas fa-window-minimize\",\"shorty\": \"window-minimize\"},{\"full\": \"fas fa-window-restore\",\"shorty\": \"window-restore\"},{\"full\": \"fas fa-wine-glass\",\"shorty\": \"wine-glass\"},{\"full\": \"fas fa-wine-glass-alt\",\"shorty\": \"wine-glass-alt\"},{\"full\": \"fas fa-won-sign\",\"shorty\": \"won-sign\"},{\"full\": \"fas fa-wrench\",\"shorty\": \"wrench\"},{\"full\": \"fas fa-x-ray\",\"shorty\": \"x-ray\"},{\"full\": \"fas fa-yen-sign\",\"shorty\": \"yen-sign\"},{\"full\": \"fas fa-yin-yang\",\"shorty\": \"yin-yang\"}] \r\n \r\n },\r\n \r\n templateUrl: 'ktdirectivetemplates/ktIconPicker.html',\r\n\t\t\t link: function (scope, elem, attrs) {\r\n \r\n scope.CTRL='ktIconPicker'\r\n scope.filteredIcons=[];\r\n scope.iconsFilter={filter:null,filteringIcons:false};\r\n scope.showIcons=false;\r\n scope.showButtons=false;\r\n scope.itemsLoaded=false;\r\n \r\n \r\n \r\n scope.resetStyle = function () {\r\n scope.selectedIcon=null;\r\n\t\t\t\t\t scope.selectedButton=null\r\n }\r\n\t\t\t\t \r\n\t\t\t\t \r\n scope.showIconsFunc = function (state) { \r\n if (state) {\r\n\t\t\t\t\t\t\tscope.filteredIcons = scope.icons \r\n\t\t\t\t\t\t\tscope.itemsLoaded = true;\r\n } else {\r\n }\r\n scope.showIcons=state;\r\n scope.showButtons=state; \r\n scope.iconsFilter.filter=''; \r\n };\r\n \r\n\r\n //when icon is selected\r\n scope.iconChosen = function (id) {\r\n scope.selectedIcon=id.full;\r\n }\r\n \r\n \r\n //when button style is selected\r\n scope.styleChosen = function (id) {\r\n scope.selectedButton=id;\r\n }\r\n \r\n \r\n scope.showButtonsFunc = function (state) {\r\n scope.showButtons=state; \r\n }\r\n \r\n \r\n \r\n scope.getBtnClass = function () {\r\n //debugger\r\n var btnCls =\"btn btn-outline-primary btn-sm\"; //default class\r\n if (scope.selectedButton!=\"\" && scope.selectedButton!=undefined) {\r\n btnCls = scope.selectedButton+\" btn btn-sm\";\r\n }\r\n return btnCls;\r\n };\r\n \r\n \r\n scope.pickIcon = function () {\r\n scope.showIcons=true;\r\n scope.showButtons=false; \r\n } \r\n\r\n scope.pickAll= function () {\r\n scope.showIcons=true;\r\n scope.showButtons=true;\r\n console.log('pick button');\r\n }\r\n\t\t\t\t \r\n scope.pickButton = function () {\r\n scope.showButtons=true;\r\n scope.showIcons=false;\r\n //console.log('pick button='+ $scope.selectedButton);\r\n } \r\n \r\n\r\n scope.filterFn = function(currIcon) {\r\n if (currIcon.indexOf(scope.iconsFilter.filter)!== -1) {\r\n return true; // this will be listed in the results\r\n }\r\n return false; // otherwise it won't be within the results\r\n };\r\n \r\n scope.hideBtns=function() {\r\n scope.showButtons=false; \r\n };\r\n \r\n\r\n \r\n scope.getFilteringStatus=function() { \r\n return scope.iconsFilter.filteringIcons; \r\n };\r\n\r\n scope.changed_filter=function () {\r\n scope.filteredIcons=[]\r\n for (var i=0;i0)\r\n {\r\n let pos\r\n pos = $scope.fd.localVars.fileRecords.map(function(e) { return e.guid }).indexOf($scope.fd.Parameters.FileId)\r\n if (pos>=0) $scope.fd.localVars.recordSelected = $scope.fd.localVars.fileRecords[pos]\r\n }\r\n\t\t}\r\n\t\t\r\n\t\tif ( $scope.resourceDefinition.form_definition && $scope.fd.Parameters?.FileId && $scope.fd.Parameters.FileDefId?.id) {\r\n\t\t\t\r\n\t\t\t\t$scope.fd.localVars.getRecordListOnInit()\r\n\t\t\t\t\r\n\t\t}\r\n\t\t\r\n\t\t\r\n\t\t$scope.fd.localVars.fileSelected = async function (selected) {//Prepare list for dropdown ( {id , name})\r\n\t\t\tlet id = selected.id//.split(\"_\")[0]\r\n\t\t\tlet data = await ResourcesDataService.getDatasetDataSimple(id)\t\r\n\t\t\t$scope.fd.localVars.convertToDropdownList (data.data, selected.id)\r\n\t\t\t$scope.fd.localVars.fileRecords = data.data\r\n\t\t}\r\n\t\t\t\t\r\n\t\t\r\n\t\t$scope.fd.localVars.fileRecordSelected = function (selected) {\t\t\r\n\t\t\t\t\t\t$scope.fd.Parameters.FileId = selected.guid\r\n\t\t}\r\n\t\t\t\t\r\n\t\t\r\n\r\n $scope.taskId = $scope.resourceDefinition.ResourceDefId;\r\n $scope.fd.localVars.prevTaskExeId = $scope.resourceDefinition.prev_task_id;\r\n $scope.fd.localVars.formType=$scope.resourceDefinition.form_type;\r\n $scope.fd.localVars.source_type=$scope.resourceDefinition.source_type;\r\n $scope.fd.localVars.taskInitiateId = $scope.resourceDefinition.task_initiate_id;\r\n $scope.fd.localVars.taskExecuteId = $scope.resourceDefinition.task_execute_id;\r\n $scope.fd.localVars.formDefinition = $scope.resourceDefinition.form_definition;\r\n $scope.fd.localVars.resourceRecordId = 0;\r\n $scope.fd.ParentElementId = 0;\r\n if ($scope.fd.localVars.formDefinition==undefined) $scope.fd.localVars.formDefinition = false;\r\n if ($scope.fd.localVars.taskInitiateId==undefined) $scope.fd.localVars.taskInitiateId =0;\r\n if ($scope.fd.localVars.taskExecuteId==undefined) $scope.fd.localVars.taskExecuteId =0;\r\n if ($scope.fd.localVars.prevTaskExeId==undefined) $scope.fd.localVars.prevTaskExeId =0;\r\n\t\tif ($scope.fd.localVars==undefined) $scope.fd.localVars={}\r\n\r\n var widgetDefinition = {name: 'ktImage',widgetId: $scope.fd.PresentationId,taskId: $scope.taskId,\r\n task_initiate_id:$scope.fd.localVars.taskInitiateId,task_execute_id:$scope.fd.localVars.taskExecuteId};\r\n $scope.fd.localVars.localWidgetId = WidgetDataExchangeService.registerWidget(widgetDefinition);\r\n $scope.fd.localVars.LocalId=$scope.fd.localVars.localWidgetId;\r\n $scope.fd.LocalId=$scope.fd.localVars.localWidgetId;\r\n \r\n \r\n $scope.fd.localVars.showMenu = false\r\n \r\n $scope.fd.localVars.toggleDropdown = function(){\r\n $scope.fd.localVars.showMenu = $scope.fd.localVars.showMenu ? false: true \r\n }\r\n \r\n \r\n $scope.fd.localVars.setField = function(form,name,value,msg)\r\n {\r\n TaskDataService.setField(form,name,value);\r\n if (msg) MessagingService.addMessage(msg,'info');\r\n };\r\n \r\n $scope.ksm=KatalyoStateManager\r\n \r\n /**********************************************************************\r\n ****************** Sync data with State manager **********************\r\n ***********************************************************************/\r\n let dependent_field_pid = $scope.fd.LocalId;\r\n let subscribedSubjectPid = \"formDefinitionState\"+$scope.taskId+$scope.resourceDefinition.form_type;\r\n let dependent_field_pid2\r\n let update_presentation_id2 = function(data) {\r\n let presentation_id = angular.copy($scope.fd.PresentationId)\r\n if (data[presentation_id]!==undefined)\r\n {\r\n $scope.fd.PresentationId = data[presentation_id];\r\n //unsubscribe here later after implementing unsubscribe - ToDo\r\n dependent_field_pid2 = $scope.fd.PresentationId\r\n let observerPid2 = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid2,\"formSaved\",update_presentation_id2);\r\n }\r\n }\r\n let update_presentation_id = function(data) {\r\n if (data[$scope.fd.LocalId]>0 && ($scope.fd.PresentationId==0 || $scope.fd.PresentationId==null) && data[$scope.fd.LocalId]!==undefined) $scope.fd.PresentationId = data[$scope.fd.LocalId];\r\n \r\n let observerPid2 = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid2,\"formSaved\",update_presentation_id2);\r\n //unsubscribe here later after implementing unsubscribe - ToDo\r\n }\r\n \r\n \r\n if ($scope.fd.PresentationId===null || $scope.fd.PresentationId===0)\r\n {\r\n let observerPid = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid,\"formSaved\",update_presentation_id);\r\n } else{\r\n dependent_field_pid2 = $scope.fd.PresentationId\r\n let observerPid2 = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid2,\"formSaved\",update_presentation_id2);\r\n }\r\n \r\n\t\t\r\n\t\t\r\n\r\n $scope.gsrvc= GridsterService;\r\n\r\n if ($scope.resourceDefinition.form_definition){\r\n ResourcesDataService.getResourceDefListByType($rootScope.globals.currentUser.lang,'file').then(\r\n function(data) { \r\n $scope.fd.localVars.listOfFileTypes = data.data;\r\n }\r\n ,function(error){ MessagingService.addMessage(error.msg,'error') }\r\n );\r\n }\r\n \r\n\t $scope.fd.downloadImage = function(fileDefId,fileId)\r\n\t {\r\n ResourcesDataService.downloadFile(fileDefId,fileId).then(\r\n\t\t\t\tfunction(data) { \r\n var url = URL.createObjectURL(new Blob([data.data]));\r\n $scope.fd.ImageUrl=url\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n\t\t\t\t});\r\n };// dowload image\r\n\t \r\n\r\n if ($scope.fd.Parameters.FileDefId?.id && $scope.fd.Parameters.FileId?.length>0) \r\n\t\t\t\t$scope.fd.downloadImage( $scope.fd.Parameters.FileDefId?.id,$scope.fd.Parameters.FileId)\r\n },\r\n \r\n templateUrl: 'ktdirectivetemplates/ktImage.html',\r\n link: function (scope, elem, attrs) { \r\n \r\n }\r\n };\r\n};\n'use strict';\r\n\r\nexport function ktInitiateTaskWidget ($timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n templateUrl: 'ktdirectivetemplates/ktInitiateTaskWidget.html',\r\n controller: function($scope,$rootScope,UserService,ResourcesDataService,TaskDataService,MessagingService,KatalyoStateManager,GridsterService,$timeout,$state,$stateParams) \r\n\t\t {\r\n $scope.gsrvc= GridsterService;\r\n $scope.CTRL='ktInitiateTaskWidget'\r\n \r\n if ($scope.fd.FormDef==undefined) $scope.fd.FormDef= []\r\n if ($scope.resourceDefinition!=undefined) {\r\n $scope.taskExecuteId = $scope.resourceDefinition.task_execute_id;\r\n }\r\n \r\n if ($scope.fd.localVars == undefined) $scope.fd.localVars={};\r\n $scope.fd.localVars.loadedTasks = [];\r\n $scope.fd.localVars.resourceItem = {}\r\n $scope.fd.localVars.selectedResource = {};\r\n $scope.fd.localVars.showMenu = false\r\n\t\t\t\t$scope.fd.localVars.resourceLoaded = false\r\n \r\n $scope.fd.localVars.toggleDropdown = function(){\r\n $scope.fd.localVars.showMenu = $scope.fd.localVars.showMenu ? false: true \r\n }\r\n \r\n if ($scope.fd.ElementType==\"itask\") \t$scope.fd.localVars.datasetMapperType=0; \r\n \r\n \r\n /*********** SETUP KATALYO STATE MANAGER *************************/\r\n $scope.ksm = KatalyoStateManager;\r\n let initiatedTaskId=null;\r\n let initiateTaskState= $scope.ksm.addSubject('initiateTaskStateName'+$scope.fd.PresentationId,initiatedTaskId);\r\n let initiateTaskStateName = initiateTaskState.subject.name;\r\n \r\n let task_initiated = function(data)\r\n {\r\n initiateTaskState.subject.setStateChanges = data;\r\n initiateTaskState.subject.notifyObservers(\"taskInitiated\");\r\n \r\n };\r\n \r\n let action_task_initiated = $scope.ksm.addAction(initiateTaskStateName,\"taskInitiated\",task_initiated);\r\n \r\n $scope.$on('InlineTaskClosed',function(event,data){\r\n var taskId=data;\r\n var pos = $scope.fd.localVars.loadedTasks.map(function(e) { return e.taskId; }).indexOf(taskId);\r\n if (pos>=0) {\r\n $scope.fd.localVars.loadedTasks.splice(pos,1); \r\n }\r\n });\r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n $scope.fd.localVars.taskListParameters = {placeholder:'Select or search task...',label:$scope.fd.placeholder,name:'task',\r\n paddingLeft:true,selectedItem:null,hideLabel:true,columnSizeLabel:'col-lg-24',dropdownSize:'col-lg-24',onSelectFunction:''};\r\n \r\n if ($scope.fd.FormDef==undefined) $scope.fd.FormDef = [];\r\n $scope.fd.localVars.selectedResourceIndex=-1;\r\n \r\n\r\n \r\n $scope.fd.localVars.LoadTask=function(taskId,outcomeId,previousTask,openTaskType)\r\n {\r\n \r\n var localVars = {'isInlineTask':$scope.fd.localVars.isInlineTask,'OpenTaskType':openTaskType,'taskIndex':$scope.fd.localVars.loadedTasks.length,'loadTaskDirect' : true,'taskId':taskId,'outcomeId':outcomeId,'previousTask':previousTask,};\r\n \r\n if (openTaskType!=\"newPage\") localVars.ShowCloseBtn = true;\r\n else localVars.ShowReturnBtn = true;\r\n var pos = $scope.fd.localVars.loadedTasks.map(function(e) { return e.taskId; }).indexOf(taskId);\r\n \r\n if (pos<0 && openTaskType==\"current\") {\r\n $scope.fd.localVars.loadedTasks.splice(0,0,{'taskId':taskId,'outcomeId':outcomeId,'previousTask':previousTask,'localVars':localVars});\r\n \r\n } else if (openTaskType==\"inline\") {\r\n $scope.fd.localVars.loadedTasks.length=0;\r\n $scope.fd.localVars.loadedTasks.push({'taskId':taskId,'outcomeId':outcomeId,'previousTask':previousTask,'localVars':localVars});\r\n } else if (openTaskType==\"container\") {\r\n localVars = {'isInlineTask':$scope.fd.localVars.isInlineTask,'OpenTaskType':'current','taskIndex':0,'loadTaskDirect' : true,'taskId':taskId,'outcomeId':outcomeId,'previousTask':previousTask,};\r\n \r\n $scope.ksm.executeAction(initiateTaskStateName,\"taskInitiated\", {'taskId':taskId,'outcomeId':outcomeId,'previousTask':previousTask,'localVars':localVars}); \r\n }\r\n \r\n if (openTaskType==\"newPage\") {\r\n $scope.gsrvc.setTaskDataInNewPage({'localVars':localVars,'taskDefinition':$scope.resourceDefinition});\r\n }\r\n\t\t\t\t\t\r\n $scope.gsrvc.setOpenTaskType(openTaskType); \r\n }\r\n\t\t\t\t \r\n \r\n $scope.fd.localVars.OpenPage = function(button)\r\n {\r\n let page_version \r\n if (button.SelectVersionDirect) \r\n\t\t\t\t\t\t\tpage_version = button.selectedPublishedResource?.Version\r\n else page_version=0\r\n \r\n $state.go(button.page_def.ResourceExtended.Target,{pageid: button.id,rinstance:0,version:page_version,parameters:{prev_task:$scope.resourceDefinition,page_state_id:$stateParams.parameters?.prev_page_state_id,prev_page_state_id:$scope.resourceDefinition.page_state_id,use_state:false}});\r\n }\r\n \r\n \r\n\t\t\t\t$scope.fd.localVars.taskIsOpen = function(taskId)\r\n {\r\n var isOpenPos = $scope.fd.localVars.loadedTasks.map(function(e) { return e.taskId; }).indexOf(taskId);\r\n if (isOpenPos>=0) return true \r\n return false\r\n }\r\n \r\n \r\n /* $scope.fd.localVars.ShowResourceDefinition = function (resourceId)\r\n\t\t\t\t{\r\n $scope.fd.localVars.showResourceDetails=true\r\n if ($scope.fd.FormDef.length>0) {\r\n for (var i=0;i<$scope.fd.FormDef.length;i++) {\r\n if ($scope.fd.FormDef[i].id==resourceId) {\r\n $scope.fd.localVars.selectedResourceIndex=i;\r\n $scope.fd.localVars.selectedResourceType = $scope.fd.FormDef[i].ResourceType;\r\n $timeout(function() { \r\n\t\t\t\t\t\t\t\t\t\t$scope.fd.localVars.resourceItem = $scope.fd.FormDef[i] //TODO .......\r\n\t\t\t\t\t\t\t\t});// resource Item is shown on screen \r\n break;\r\n }\r\n } \r\n } else {\r\n //this is the first resource to be selectedItem - just show\r\n if ($scope.fd.localVars.resourceItem) { \r\n $scope.fd.localVars.selectedResourceIndex=0; \r\n $scope.fd.localVars.selectedResourceType=$scope.fd.localVars.resourceItem.ResourceType\r\n $timeout(function() { });\r\n } \r\n } \r\n }*/\r\n \r\n \r\n $scope.fd.localVars.ShowResourceDefinition = function (i)\r\n\t\t\t\t{\r\n \r\n $scope.fd.localVars.showResourceDetails=true\r\n\r\n //debugger\r\n\t\t\t\t\t \r\n if ($scope.fd.FormDef.length>0 && $scope.fd.localVars.selectedResource!==$scope.fd.FormDef[i]) {\r\n $scope.fd.localVars.showResourceDetails=true\r\n $scope.fd.localVars.selectedResourceIndex=i;\r\n //$scope.fd.localVars.selectedResourceType = $scope.fd.FormDef[i].ResourceType;\r\n $scope.fd.localVars.selectedResource = $scope.fd.FormDef[i] \r\n\t\t\t\t\t\t//$scope.fd.localVars.setResourceType ($scope.fd.localVars.selectedResourceType)// just to get list of all resources - resourceListForDropdown \r\n\t\t\t\t\t\t$scope.fd.localVars.resourceItem.id= $scope.fd.FormDef[i].id\r\n\t\t\t\t\t\t$scope.fd.localVars.resourceItem.name= $scope.fd.FormDef[i].name \r\n\t\t\t\t\t\t$scope.fd.localVars.resourceLoaded = false\r\n\r\n $timeout(function(){ $scope.fd.localVars.resourceLoaded = true})\r\n\t\t\t\t\t\t //$scope.fd.localVars.ShowResourceDetails()\r\n \r\n \r\n }\r\n /*\r\n \r\n else { \r\n if ($scope.fd.localVars.resourceItem) { //this is the first resource to be selectedItem - just show\r\n $scope.fd.localVars.selectedResourceIndex=0; \r\n //$scope.fd.localVars.selectedResourceType=$scope.fd.localVars.resourceItem.ResourceType\r\n }\r\n } \r\n */\r\n }\r\n\t\t\t\t \r\n\t\t\t\t \r\n \r\n $scope.fd.localVars.NewResource = function ()\r\n\t\t\t\t {\r\n\t\t\t\t\t\t//debugger\r\n\t\t\t\t\t\t//RESET \r\n\t\t\t\t\t\t$scope.fd.localVars.selectedResource = { ResourceType: null, id: null, name: '', btnLabel: '', btnClass: 'btn-primary'}\r\n\t\t\t\t\t\t//$scope.fd.localVars.selectedResourceType=null\r\n\t\t\t\t\t\t$scope.fd.localVars.resourceItem = {}\r\n\t\t\t\t\t\tif ($scope.clearDropdownValue) $scope.clearDropdownValue()\r\n \r\n\t\t\t\t\t\tif (!$scope.fd.localVars.showResourceDetails) $scope.fd.localVars.showResourceDetails = true\t \t\r\n\t\t\t\t\t\t $scope.fd.localVars.selectedResourceIndex=-1\r\n\t\t\t\t\t\t //$scope.fd.localVars.ShowResourceDetails()\r\n\t\t\t\t }\r\n\t\t\t\t\t\r\n\t\t\t\r\n\t\t\t\t $scope.setClearFn = function(theClearFn)\r\n\t\t\t\t {\r\n\t\t\t\t\t $scope.clearDropdownValue = theClearFn\t \r\n\t\t\t\t }\r\n\t\t\t\t \r\n\t\t\t\t \r\n $scope.fd.localVars.AddResource = function ()\r\n\t\t\t\t {\r\n //debugger\r\n\t\t\t\t\tif (!$scope.fd.localVars.selectedResourceType) { MessagingService.addMessage('Action not selected!','warning'); return }\r\n\t\t\t\t\tif (!$scope.fd.localVars.resourceItem?.id && $scope.fd.localVars.selectedResourceType=='page') { MessagingService.addMessage('Resource not selected!','warning'); return }\r\n\t\t\t\t\tif ($scope.fd.localVars.selectedResource.btnLabel=='') { MessagingService.addMessage('Label is missing!','warning'); return }\r\n\t\t\t\t\t\r\n $scope.fd.localVars.showResourceDetails=false\r\n\r\n\t\t\t\t\tif ($scope.fd.localVars.selectedResource===$scope.fd.FormDef[0]) return\r\n\t\t\t\t\t \r\n\t\t\t\t\t$scope.fd.localVars.selectedResource.ResourceType = $scope.fd.localVars.selectedResourceType;\r\n\t\t\t\t\t$scope.fd.localVars.selectedResource.name = $scope.fd.localVars.resourceItem.name;\r\n\t\t\t\t\t$scope.fd.localVars.selectedResource.id = $scope.fd.localVars.resourceItem.id;\r\n\t\t\t\t\t\t\r\n if ( $scope.fd.localVars.selectedResourceIndex == -1) $scope.fd.FormDef.push(angular.copy($scope.fd.localVars.selectedResource)); \r\n\r\n \r\n\r\n }\r\n \r\n\t\t\t\t \r\n \r\n\t\t\t\t $scope.fd.localVars.ShowResourceDetails = function ()\r\n\t\t\t\t {\r\n if ($scope.fd.localVars.selectedResource?.id) {\r\n \r\n ResourcesDataService.getResourceDefAll($scope.fd.localVars.selectedResource.id).then( //get page\r\n\t\t\t\t\t\t\t\tfunction(data) {\r\n\t\t\t\t\t\t\t\t\t\t$scope.fd.localVars.selectedResource.page_def = data.data; \t\r\n\t\t\t\t\t\t\t\t\t\t$scope.fd.localVars.selectedResource.id=data.data.uid //TODO - we probably dont need fd.localVars.selectedResource.id\r\n\t\t\t\t\t\t\t\t\t\t$scope.fd.localVars.selectedResource.name=data.data.Name//TODO - we probably dont need fd.localVars.selectedResource.id\r\n\t\t\t\t\t\t\t\t },function(error){\r\n\t\t\t\t\t\t\t\t\t\tMessagingService.addMessage(error.msg,'error'); \r\n\t\t\t\t\t\t\t\t}); \r\n } else {\r\n var pos = $scope.fd.FormDef.map(function(e) { if (e!=undefined) return e.id; else return null;}).indexOf($scope.fd.localVars.selectedResource.id);\r\n // if (pos<0) $scope.fd.FormDef.push(angular.copy($scope.fd.localVars.selectedResource)); \r\n }\r\n \r\n /*\r\n if ($scope.fd.ElementType=='itask') \r\n $scope.fd.wItemValue = $scope.fd.FormDef;\r\n else \r\n $scope.fd.tItemValue = $scope.fd.FormDef;\r\n */\r\n\r\n $scope.fd.localVars.showResourceDetails = true\r\n };\r\n\t\t\t\t \r\n\t\t\t\t \r\n \r\n $scope.fd.localVars.RemoveResourceFromList = function (index)\r\n\t\t\t\t{\r\n if (index>=0){\r\n $scope.fd.FormDef.splice(index,1);\r\n $scope.fd.localVars.selectedResourceIndex=-1;\r\n //$scope.fd.localVars.selectedResourceType=''\r\n $scope.fd.localVars.showResourceDetails=false;\r\n \r\n }\r\n }\r\n \r\n \r\n\t\t \r\n $scope.fd.localVars.saveTaskToResource = function(tdid,tei,datasetDefId,datasetRecordId){\r\n TaskDataService.saveTaskToResource(tei,datasetDefId,datasetRecordId,$scope.fd.presentationId)\r\n .then(function(data) { \r\n $state.go('app.navbar.tasks.initiate',{id: tdid,fromStateName:$state.current.name,fromStateParams:$state.params,outcome_id:0,prev_task_execute_id:tei}); \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n \r\n \r\n \r\n $scope.fd.localVars.setResourceType = function (resource_type)//page or task - callback on button click\r\n\t\t\t\t {\r\n $scope.fd.localVars.selectedResourceType= resource_type;//TODO - mozda viska\r\n\t\t\t\t $scope.fd.localVars.selectedResource.ResourceType= resource_type;\r\n $scope.fd.localVars.resourceLoaded = false; \r\n if ($scope.gsrvc.getFormViewType()==1 || $scope.fd.ElementType=='itask') {\r\n ResourcesDataService.getResourceDefListByType(lang,resource_type).then(\r\n\t\t\t\t\t\t\tfunction(data) { \r\n $timeout(function() {\r\n $scope.fd.localVars.resourceListForDropdown = data.data;\r\n $scope.fd.localVars.resourceLoaded = true; \r\n }); \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n\t\t\t\t\t} \r\n \r\n } \r\n\t\t\t\t\r\n\r\n $scope.fd.localVars.setResourceType('page')\r\n\t\t\t\t\r\n $scope.onSelectResourceCallback = function(selected, model)\r\n\t\t\t\t{\r\n\t\t\t\t\t //debugger //onSelectResourceCallback\r\n\t\t\t\t\t if ( selected?.id) {\r\n ResourcesDataService.getResourceDefAll(selected.id).then( //get page\r\n\t\t\t\t\t\t\t\tfunction(data) {\r\n\t\t\t\t\t\t\t\t\t\t$scope.fd.localVars.selectedResource.page_def = data.data; \r\n\t\t\t\t\t\t\t\t\t\t$scope.fd.localVars.selectedResource.id=data.data.uid //TODO - we probably dont need fd.localVars.selectedResource.id\r\n\t\t\t\t\t\t\t\t\t\t$scope.fd.localVars.selectedResource.name=data.data.Name//TODO - we probably dont need fd.localVars.selectedResource.name\r\n $scope.fd.localVars.showResourceDetails=true\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t },function(error){\r\n\t\t\t\t\t\t\t\t\t\tMessagingService.addMessage(error.msg,'error'); \r\n\t\t\t\t\t\t\t\t}); \r\n } \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t}\r\n\r\n },\r\n\r\n link: function (scope, elem, attrs) { } \r\n \r\n }\r\n \r\n};\n'use strict';\r\n\r\nexport function ktKtlyoStaking () {\r\n \r\n var controller = ['$scope', '$uibModal','$stateParams','$state','$timeout','CodesService','ResourcesDataService','$rootScope','CODES_CONST','ProcessingService','MessagingService','GridsterService','TaskDataService','WidgetDataExchangeService','KatalyoStateManager','UtilityService','$templateCache','$compile','$element',\r\n function ($scope,$uibModal,$stateParams,$state,$timeout,CodesService,ResourcesDataService,$rootScope,CODES_CONST,ProcessingService,MessagingService,GridsterService,TaskDataService,WidgetDataExchangeService,KatalyoStateManager,UtilityService,$templateCache,$compile,$element) {\r\n \r\n $scope.localVarsWidget = {};\r\n //$scope.fd = {};\r\n $scope.localVarsWidget.searchFormDownloaded = false;\r\n $scope.localVarsWidget.formLoaded=false;\r\n $scope.localVarsWidget.src_type_text=CODES_CONST._POPULATE_TYPE_;\r\n $scope.localVarsWidget.animationsEnabled = true;\r\n $scope.localVarsWidget.widgetType = 3;\r\n $scope.gsrvc = GridsterService;\r\n $scope.localVarsWidget.formParams={formViewType:1,showGridNavigation:true};\r\n $scope.fd.contractDatasets = true;\r\n if ($scope.formData==undefined) $scope.formData={};\r\n if ($scope.formData[$scope.fd.PresentationId]==undefined) $scope.formData[$scope.fd.PresentationId]=[];\r\n $scope.fd.msgs={};\r\n $scope.localVarsWidget.datasetMapperType=0;\r\n $scope.fd.ShowTab=1;\r\n if ($scope.fd.PopulateType==undefined) $scope.fd.PopulateType=\"\";\r\n $scope.fd.token1Contract=\"0x24E3794605C84E580EEA4972738D633E8a7127c8\";\r\n $scope.fd.token1ContractAbi=[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}];;\r\n $scope.fd.token2Contract=\"0x1DE5e000C41C8d35b9f1f4985C23988f05831057\";\r\n $scope.fd.token2ContractAbi=[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}];;\r\n $scope.fd.stakingContract=\"0x8C05bA21557936E3e0713dCE4F9C3bfc974f4C8E\";\r\n $scope.fd.stakingContractAbi=[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token2\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_apy\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_tokenRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxStakeAmt1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_rewardAmt1\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sentDate\",\"type\":\"uint256\"}],\"name\":\"AddedToBlackList\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token2\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"apy\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxStakeAmt1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxStakeAmt2\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardAmt1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardAmt2\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"interestRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenRatio\",\"type\":\"uint256\"}],\"name\":\"CreatedContract\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"redeemedDate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EarlyRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"redeemedDate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount2\",\"type\":\"uint256\"}],\"name\":\"EarlyRedeemedAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Received\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"redeemedDate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount2\",\"type\":\"uint256\"}],\"name\":\"Redeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"redeemedDate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount2\",\"type\":\"uint256\"}],\"name\":\"RedeemedAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sentDate\",\"type\":\"uint256\"}],\"name\":\"RemovedFromBlackList\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Reverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenCtr\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Staked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startDate\",\"type\":\"uint256\"}],\"name\":\"StartStaking\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stopDate\",\"type\":\"uint256\"}],\"name\":\"StopStaking\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sentDate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferBackReward\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sentDate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferReward\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"activate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"apy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"addressList\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"blStatus\",\"type\":\"bool\"}],\"name\":\"blackList\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createdAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deActivate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"duration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wallet\",\"type\":\"address\"}],\"name\":\"getBlackListedStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMyInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"wallet\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"redeemed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"rewardAmt1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewardAmt2\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"redeemedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"stakeEnd\",\"type\":\"uint256\"}],\"internalType\":\"struct KtlyoStaking.Transaction[]\",\"name\":\"\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"limit1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit2\",\"type\":\"uint256\"}],\"internalType\":\"struct KtlyoStaking.MaxLimit\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMyLimits\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"limit1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit2\",\"type\":\"uint256\"}],\"internalType\":\"struct KtlyoStaking.MaxLimit\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMyStakings\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"wallet\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"redeemed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"rewardAmt1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewardAmt2\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"redeemedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"stakeEnd\",\"type\":\"uint256\"}],\"internalType\":\"struct KtlyoStaking.Transaction[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRewardsInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStakeRewardAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wallet\",\"type\":\"address\"}],\"name\":\"getStakings\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"wallet\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"redeemed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"rewardAmt1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewardAmt2\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"redeemedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"stakeEnd\",\"type\":\"uint256\"}],\"internalType\":\"struct KtlyoStaking.Transaction[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"info\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxStakeAmt1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxStakeAmt2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"indexId\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeemAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"indexId\",\"type\":\"uint256\"}],\"name\":\"redeemEarly\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeemEarlyAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardAmt1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardAmt2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amt\",\"type\":\"uint256\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token2\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reward_amount\",\"type\":\"uint256\"}],\"name\":\"transferBackReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reward_amount\",\"type\":\"uint256\"}],\"name\":\"transferReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}];\r\n \r\n \r\n \r\n $scope.localVarsWidget.gridsterType=\"resource\";\r\n // $scope.gridsterOpts = GridsterService.getGridsterOptions();\r\n \r\n \r\n \r\n $scope.localVarsWidget.dashboard = {\r\n \t\t\t\tid: '1',\r\n \t\t\t\tname: 'Home',\r\n \t\t\t\twidgets: []\r\n } ;\r\n \r\n \r\n \r\n //$scope.taskId=$stateParams.id;\r\n $scope.taskId=$scope.resourceDefinition.ResourceDefId;\r\n if ($scope.taskId==undefined) $scope.taskId=$scope.resourceDefinition.ResourceDefId_id;\r\n if ($scope.taskId==undefined) $scope.taskId=0;\r\n $scope.localVarsWidget.taskId=$scope.taskId;\r\n $scope.fd.ParentDatasetDefId=$scope.fd.Related;\r\n $scope.prevTaskExeId = $scope.resourceDefinition.prev_task_id;\r\n $scope.localVarsWidget.formType=$scope.resourceDefinition.form_type;\r\n $scope.source_type=$scope.resourceDefinition.source_type;\r\n $scope.taskInitiateId = $scope.resourceDefinition.task_initiate_id;\r\n $scope.taskExecuteId = $scope.resourceDefinition.task_execute_id;\r\n $scope.formDefinition = $scope.resourceDefinition.form_definition;\r\n \r\n if ($scope.formDefinition==undefined) $scope.formDefinition=false;\r\n \r\n $scope.localVarsWidget.resourceRecordId=0;\r\n if ($scope.taskInitiateId==undefined)\r\n {\r\n $scope.taskInitiateId =0;\r\n \r\n }\r\n if ($scope.taskExecuteId==undefined)\r\n {\r\n $scope.taskExecuteId =0; \r\n }\r\n if ($scope.prevTaskExeId==undefined)\r\n {\r\n $scope.prevTaskExeId =0;\r\n }\r\n \r\n //register widget \r\n var out_fields = ['resourceId'];\r\n //if ($scope.fd.LocalId==undefined || $scope.fd.LocalId==null || $scope.fd.LocalId==0)\r\n //{\r\n var widgetDefinition = {DEI: [{'name':'resourceLink','value':[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:''}]}],actions: [{name:'PrepareData',status:false}],name: 'viewResourceWidget',widgetId: $scope.fd.PresentationId,task_initiate_id:$scope.taskInitiateId,task_execute_id:$scope.taskExecuteId,taskId: $scope.lTaskId,resourceDefId : $scope.localVarsWidget.selectedResource, output:out_fields, };\r\n $scope.localVarsWidget.localWidgetId = WidgetDataExchangeService.registerWidget(widgetDefinition);\r\n $scope.localVarsWidget.LocalId=$scope.localVarsWidget.localWidgetId;\r\n $scope.fd.LocalId=$scope.localVarsWidget.localWidgetId;\r\n //$scope.fd.LocalId=UtilityService.uuidNow();\r\n \r\n //}\r\n $scope.ksm = KatalyoStateManager;\r\n \r\n let update_presentation_id = function(data)\r\n {\r\n if (data[$scope.fd.LocalId]>0 && ($scope.fd.PresentationId==null || $scope.fd.PresentationId==0)) $scope.fd.PresentationId = data[$scope.fd.LocalId];\r\n //unsubscribe here later after implementing unsubscribe - ToDo\r\n \r\n }\r\n if ($scope.fd.PresentationId==0 || $scope.fd.PresentationId==null)\r\n {\r\n \r\n let dependent_field = $scope.fd.LocalId;\r\n let subscribedSubject = \"formDefinitionState\"+$scope.taskId+$scope.resourceDefinition.form_type;\r\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"formSaved\",update_presentation_id);\r\n \r\n } \r\n \r\n let apply_value = function(data)\r\n {\r\n let do_refresh=false;\r\n if (data!=undefined)\r\n {\r\n if (data != $scope.localVarsWidget.resourceRecordId)\r\n {\r\n if (typeof data ==='number') $scope.localVarsWidget.resourceRecordId= data;\r\n else if (Array.isArray(data))\r\n {\r\n if (data.length>0)\r\n {\r\n $scope.localVarsWidget.resourceRecordId= data[0].id \r\n }\r\n }else\r\n {\r\n $scope.localVarsWidget.resourceRecordId = data.id;\r\n }\r\n do_refresh = true;\r\n }\r\n }\r\n //get selectedRecord\r\n if ($scope.localVarsWidget.resourceRecordId == null) $scope.localVarsWidget.resourceRecordId=0;\r\n \r\n if ($scope.localVarsWidget.resourceRecordId>0 && do_refresh) $scope.localVarsWidget.getFormResourceWithData();\r\n \r\n \r\n };\r\n \r\n \r\n if ($scope.fd.Parameters==undefined) $scope.fd.Parameters={};\r\n \r\n if ($scope.fd.Parameters.RefreshOnIdChange)\r\n {\r\n \r\n //find \r\n //subscribe observer\r\n \r\n let dependent_field = \"Field\"+$scope.fd.PresentationId;\r\n let subscribedSubject = \"resourceidValueStateName\"+$scope.fd.Parameters.ResourceIdItemId+$scope.resourceDefinition.transaction_id;\r\n let subject = $scope.ksm.addSubject(subscribedSubject,null); \r\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",apply_value);\r\n let val = $scope.ksm.getState(subscribedSubject);\r\n $scope.localVarsWidget.resourceRecordId= val.id;\r\n \r\n //get selectedRecord\r\n if ($scope.localVarsWidget.resourceRecordId == null) $scope.localVarsWidget.resourceRecordId=0;\r\n \r\n if ($scope.localVarsWidget.resourceRecordId>0) $scope.localVarsWidget.getFormResourceWithData();\r\n }\r\n \r\n //subscribe observer\r\n if ($scope.fd.PopulateType.toString().substr(0,1)==\"4\")\r\n {\r\n /**********************************************************************\r\n ****************** Sync data with State manager **********************\r\n ***********************************************************************/\r\n \r\n \r\n if ($scope.fd.SrcWidgetId!=undefined && $scope.fd.SrcWidgetId!=null)\r\n \r\n {\r\n \r\n let dependent_field = \"Field\"+$scope.fd.SrcWidgetId;\r\n // let subscribedSubject = $scope.fd.Parameters.SrcWidgetType+\"ValueStateName\"+$scope.fd.SrcWidgetId;\r\n let subscribedSubject = \"rlistValueStateName\"+$scope.fd.SrcWidgetId+$scope.resourceDefinition.transaction_id;\r\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",apply_value);\r\n \r\n } \r\n \r\n }\r\n \r\n let refresh_widget_data = function()\r\n \r\n {\r\n $scope.localVarsWidget.getFormResourceWithData(); \r\n \r\n }\r\n if ($scope.fd.Parameters.EventName!=undefined)\r\n {\r\n if ($scope.fd.Parameters.EventName!=\"\")\r\n {\r\n let dependent_field2 = \"Field\"+$scope.fd.PresentationId;\r\n let subscribedSubject2 = \"task\"+$scope.resourceDefinition.transaction_id;\r\n let observer2 = $scope.ksm.subscribe(subscribedSubject2,dependent_field2,$scope.fd.Parameters.EventName,refresh_widget_data);\r\n }\r\n }\r\n \r\n $scope.localVarsWidget.showProperties=function(datasetMapperType)\r\n {\r\n \r\n if ($scope.localVarsWidget.datasetMapperType==undefined)\r\n {\r\n $scope.localVarsWidget.datasetMapperType = datasetMapperType;\r\n }else\r\n {\r\n if ($scope.localVarsWidget.datasetMapperType==0 || $scope.localVarsWidget.datasetMapperType!=datasetMapperType) $scope.localVarsWidget.datasetMapperType = datasetMapperType;\r\n else $scope.localVarsWidget.datasetMapperType=0;\r\n }\r\n \r\n };\r\n \r\n $scope.localVarsWidget.setField = function(form,name,value,msg)\r\n {\r\n TaskDataService.setField(form,name,value);\r\n if (msg) MessagingService.addMessage(msg,'info');\r\n }; \r\n \r\n $scope.localVarsWidget.getResourceAll = function () {\r\n \r\n ResourcesDataService.getResourceDefAll($scope.fd.Related).then(function(data) {\r\n \r\n // MessagingService.addMessage(data.msg,'success');\r\n $scope.fd.resource = data.data;\r\n $scope.localVarsWidget.resourceLoaded = true;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n };\r\n //$scope.localVarsWidget.getResourceAll();\r\n \r\n \r\n $scope.localVarsWidget.getFormResourceOriginal = function(datasetId){\r\n var lang=$rootScope.globals.currentUser.lang;\r\n if ($scope.fd.PresentationId==null)\r\n {\r\n $scope.fd.PresentationId = 0;\r\n \r\n }\r\n $scope.localVarsWidget.formLoaded=false;\r\n ResourcesDataService.getResourceForm(datasetId,\"i\",lang).then(function(data) {\r\n \r\n $scope.localVarsWidget.resourceWidgetDefinition= data.data.resourceDefinition;\r\n if (Array.isArray(data.data.widgets)) $scope.localVarsWidget.dashboard.widgets.layout = data.data.widgets;\r\n \r\n if ($scope.localVarsWidget.selectedResourceItem!=undefined)\r\n { \r\n $scope.localVarsWidget.selectedResourceItem.name=$scope.localVarsWidget.resourceWidgetDefinition.name;\r\n $scope.localVarsWidget.selectedResourceItem.relatedId=$scope.fd.Related;\r\n $scope.localVarsWidget.selectedResourceItem.presentationId=$scope.fd.PresentationId;\r\n $scope.localVarsWidget.selectedResourceItem.src_type_id=$scope.fd.PopulateType;\r\n $scope.localVarsWidget.selectedResourceItem.src_type_text=$scope.localVarsWidget.src_type_text[$scope.fd.PopulateType];\r\n $scope.localVarsWidget.selectedResourceItem.parentElementId=$scope.fd.ParentElementId;\r\n }\r\n else{\r\n $scope.localVarsWidget.selectedResourceItem={'name':$scope.localVarsWidget.resourceWidgetDefinition.name,'relatedId':$scope.fd.Related, 'presentationId':$scope.fd.PresentationId ,'src_type_id':$scope.fd.PopulateType,'src_type_text':$scope.localVarsWidget.src_type_text[$scope.fd.PopulateType],'parentElementId':$scope.fd.ParentElementId};\r\n \r\n }\r\n $scope.fd.wItemValue=data.data.widgets;\r\n \r\n /*\r\n var container = $element.children().eq(0);\r\n GridsterService.setupDragular($scope.fd.wItemValue,container,'rows-'+$scope.fd.PresentationId,'row-'+$scope.localVarsWidget.gridsterType+'-hadle',true);\r\n */ \r\n \r\n //MIGOR - bitno - DOBIO RESOURCERECORD-ID ZA BROADCAST - ADD_RESOURCE WIDGET\r\n WidgetDataExchangeService.setData({widgetId:$scope.fd.PresentationId, DEI: [{'name':'resourceLink','value':[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:$scope.fd.ResourceRecordId}]}]});\r\n\t\t\t\t\t\t\r\n $scope.localVarsWidget.searchFormDownloaded = true;\r\n //$timeout(function(){$scope.localVarsWidget.formLoaded=true});\r\n $scope.localVarsWidget.formLoaded=true;\r\n \r\n // $scope.localVarsWidget.setField($scope.localVarsWidget.dashboard.widgets.layout,'ReadOnly',true); \r\n $scope.localVarsWidget.setField($scope.localVarsWidget.dashboard.widgets.layout,'Required',false); \r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n \r\n };\r\n \r\n $scope.fd.openStakeScreen=function(token){\r\n \r\n $scope.fd.ShowTab=2;\r\n if (token=='BNF') $scope.fd.ShowTab=3;\r\n $scope.fd.currentTokenTicker=token;\r\n $scope.fd.confirmation1 = null;\r\n $scope.fd.transactionHash1 = null;\r\n $scope.fd.errorMessage1 = null;\r\n $scope.fd.confirmation2 = null;\r\n $scope.fd.transactionHash2 = null;\r\n $scope.fd.errorMessage2 = null;\r\n \r\n if ($scope.fd.eth_address==undefined)\r\n {\r\n web3.eth.getAccounts().then(function (result) {\r\n $timeout(function(){\r\n $scope.fd.eth_address = result[0];\r\n $scope.fd.getAllowance($scope.fd.eth_address,token);\r\n $scope.fd.getMyLimits(token);\r\n });\r\n });\r\n \r\n } else\r\n {\r\n $scope.fd.getAllowance($scope.fd.eth_address,token);\r\n $scope.fd.getMyLimits(token); \r\n \r\n }\r\n \r\n \r\n }\r\n \r\n $scope.fd.getAllowance = function(wallet,token){\r\n \r\n var tokenAddress;\r\n var tokenABI;\r\n var contractAddress = $scope.fd.stakingContract;\r\n if (token==\"KTLYO\")\r\n {\r\n tokenAddress= $scope.fd.token1Contract;\r\n tokenABI = $scope.fd.token1ContractAbi;\r\n }else\r\n {\r\n tokenAddress= $scope.fd.token2Contract;\r\n tokenABI = $scope.fd.token2ContractAbi;\r\n \r\n \r\n }\r\n \r\n let web3; \r\n if (window.ethereum)\r\n {\r\n web3= new Web3(window.ethereum); \r\n }else if (window.web3)\r\n {\r\n web3= new Web3(window.web3); \r\n }else\r\n {\r\n web3 = null;\r\n MessagingService.addMessage(\"Error connecting to web3 wallet!\",'error');\r\n }\r\n \r\n if (web3!=null)\r\n {\r\n var tokenInst = new web3.eth.Contract(tokenABI,tokenAddress);\r\n \r\n \r\n tokenInst.methods.allowance(wallet,contractAddress).call().then(function (allowance_raw) {\r\n var bal = web3.utils.fromWei(allowance_raw, 'ether');\r\n \r\n $timeout(function(){$scope.fd.allowance = bal;});\r\n });\r\n } \r\n \r\n }\r\n \r\n $scope.fd.setAllowance = function(){\r\n \r\n $scope.fd.confirmation1 = null;\r\n $scope.fd.transactionHash1 = null;\r\n $scope.fd.errorMessage1 = null;\r\n let web3;\r\n var tokenAddress,tokenABI;\r\n var spender = $scope.fd.stakingContract;\r\n var owner = $scope.fd.eth_address;\r\n var token = $scope.fd.currentTokenTicker;\r\n if (token==\"KTLYO\")\r\n {\r\n tokenAddress= $scope.fd.token1Contract;\r\n tokenABI = $scope.fd.token1ContractAbi;\r\n }else\r\n {\r\n tokenAddress= $scope.fd.token2Contract;\r\n tokenABI = $scope.fd.token2ContractAbi;\r\n \r\n \r\n }\r\n if (window.ethereum)\r\n {\r\n web3= new Web3(window.ethereum); \r\n }else if (window.web3)\r\n {\r\n web3= new Web3(window.web3); \r\n }else\r\n {\r\n web3 = null;\r\n MessagingService.addMessage(\"Error connecting to wallet!\",'error');\r\n }\r\n \r\n if (web3!=null)\r\n {\r\n var tokenInst = new web3.eth.Contract(tokenABI,tokenAddress);\r\n \r\n tokenInst.options.from = owner;\r\n let amount_wei = web3.utils.toWei($scope.fd.ApproveAmount.toString(), 'ether');\r\n \r\n tokenInst.methods.approve(spender,amount_wei).send()\r\n .on('transactionHash', function(hash){\r\n \r\n $timeout(function(){$scope.fd.transactionHash1=hash;\r\n $scope.fd.pending1=true;});\r\n \r\n })\r\n .on('confirmation', function(confirmationNumber, receipt){\r\n if (confirmationNumber>0)\r\n {\r\n $timeout(function(){$scope.fd.confirmation1=confirmationNumber;\r\n $scope.fd.pending1=false;\r\n \r\n });\r\n $scope.fd.getAllowance($scope.fd.eth_address,$scope.fd.currentTokenTicker);\r\n }\r\n })\r\n .on('receipt', function(receipt){\r\n $timeout(function(){$scope.fd.trxReceipt1=receipt;\r\n $scope.fd.status1=receipt.status; \r\n });\r\n \r\n //console.log(receipt);\r\n\r\n })\r\n .on('error', function(error, receipt) { // If the transaction was rejected by the network with a receipt, the second parameter will be the receipt.\r\n $timeout(function(){$scope.fd.errorMessage1=error.message;\r\n if (receipt!=undefined) $scope.fd.status1=receipt.status; \r\n });\r\n });\r\n \r\n \r\n } else MessagingService.addMessage(\"Error connecting to wallet!\",'error'); \r\n \r\n }\r\n \r\n $scope.fd.stake = function(){\r\n \r\n var tokenAddress,tokenABI;\r\n var contractAddress = $scope.fd.stakingContract;\r\n var contractABI = $scope.fd.stakingContractAbi;\r\n var owner = $scope.fd.eth_address;\r\n var token = $scope.fd.currentTokenTicker;\r\n $scope.fd.confirmation2 = null;\r\n $scope.fd.transactionHash2 = null;\r\n $scope.fd.errorMessage2 = null;\r\n let web3;\r\n if (token==\"KTLYO\")\r\n {\r\n tokenAddress= $scope.fd.token1Contract;\r\n tokenABI = $scope.fd.token1ContractAbi;\r\n }else\r\n {\r\n tokenAddress= $scope.fd.token2Contract;\r\n tokenABI = $scope.fd.token2ContractAbi;\r\n \r\n \r\n }\r\n if (window.ethereum)\r\n {\r\n web3= new Web3(window.ethereum); \r\n }else if (window.web3)\r\n {\r\n web3= new Web3(window.web3); \r\n }else\r\n {\r\n web3 = null;\r\n MessagingService.addMessage(\"Error connecting to web3 wallet!\",'error');\r\n }\r\n \r\n if (web3!=null)\r\n {\r\n \r\n \r\n var contractInst = new web3.eth.Contract(contractABI,contractAddress);\r\n \r\n contractInst.options.from = owner;\r\n let amount_wei = web3.utils.toWei($scope.fd.StakeAmount.toString(), 'ether');\r\n contractInst.methods.stake(tokenAddress,amount_wei).send()\r\n .on('transactionHash', function(hash){\r\n \r\n $timeout(function(){$scope.fd.transactionHash2=hash;\r\n $scope.fd.pending2=true;});\r\n \r\n })\r\n .on('confirmation', function(confirmationNumber, receipt){\r\n if (confirmationNumber>0)\r\n {\r\n $timeout(function(){$scope.fd.confirmation2=confirmationNumber;\r\n $scope.fd.pending2=false;\r\n });\r\n }\r\n })\r\n .on('receipt', function(receipt){\r\n $timeout(function(){$scope.fd.trxReceipt2=receipt;\r\n $scope.fd.status2=receipt.status; \r\n });\r\n $scope.fd.getAllowance($scope.fd.eth_address,token);\r\n //console.log(receipt);\r\n\r\n })\r\n .on('error', function(error, receipt) { // If the transaction was rejected by the network with a receipt, the second parameter will be the receipt.\r\n $timeout(function(){$scope.fd.errorMessage2=error.message;\r\n $scope.fd.pending2=false;\r\n if (receipt!=undefined) $scope.fd.status2=receipt.status;\r\n });\r\n });\r\n\r\n /*\r\n contractInst.methods.stake(tokenAddress,amount_wei).send().then(function (trx) {\r\n \r\n MessagingService.addMessage(trx,'success');\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.message,'error'); \r\n });\r\n */\r\n } else MessagingService.addMessage(\"Error connecting to wallet!\",'error'); \r\n \r\n }\r\n \r\n $scope.fd.Redeem = function(early,index){\r\n \r\n var web3;\r\n \r\n if ($scope.fd.msgs[index]==undefined) $scope.fd.msgs[index] = {confirmation : null,transactionHash : null,errorMessage : null,pending:null,trxReceipt:null,status : null};\r\n else\r\n {\r\n $scope.fd.msgs[index].confirmation=null;\r\n $scope.fd.msgs[index].transactionHash = null;\r\n $scope.fd.msgs[index].errorMessage = null;\r\n $scope.fd.msgs[index].trxReceipt = null;\r\n $scope.fd.msgs[index].pending = null;\r\n $scope.fd.msgs[index].status = null;\r\n \r\n }\r\n \r\n $scope.fd.currectIndex=index; \r\n \r\n if (window.ethereum)\r\n {\r\n web3= new Web3(window.ethereum); \r\n }else if (window.web3)\r\n {\r\n web3= new Web3(window.web3); \r\n }else\r\n {\r\n web3 = null;\r\n MessagingService.addMessage(\"Error connecting to web3 wallet!\",'error');\r\n }\r\n \r\n if (web3!=null)\r\n {\r\n var contractAddress = $scope.fd.stakingContract;\r\n var contractABI = $scope.fd.stakingContractAbi;\r\n \r\n var contractInst = new web3.eth.Contract(contractABI,contractAddress);\r\n \r\n web3.eth.getAccounts().then(function (result) { \r\n $scope.fd.eth_address = result[0];\r\n \r\n contractInst.options.from = $scope.fd.eth_address;\r\n \r\n if (early)\r\n {\r\n contractInst.methods.redeemEarly(index).send()\r\n .on('transactionHash', function(hash){\r\n \r\n $timeout(function(){$scope.fd.msgs[index].transactionHash=hash;\r\n $scope.fd.msgs[index].pending=true;\r\n });\r\n \r\n })\r\n .on('confirmation', function(confirmationNumber, receipt){\r\n if (confirmationNumber>0)\r\n {\r\n $timeout(function(){$scope.fd.msgs[index].confirmation=confirmationNumber;\r\n $scope.fd.msgs[index].pending=false;\r\n \r\n });\r\n }\r\n })\r\n .on('receipt', function(receipt){\r\n $timeout(function(){\r\n $scope.fd.msgs[index].trxReceipt=receipt;\r\n $scope.fd.msgs[index].status=receipt.status; \r\n \r\n \r\n });\r\n \r\n $scope.fd.getMyStakings();\r\n \r\n\r\n })\r\n .on('error', function(error, receipt) { // If the transaction was rejected by the network with a receipt, the second parameter will be the receipt.\r\n $timeout(function(){$scope.fd.msgs[index].errorMessage=error.message;\r\n if (receipt!=undefined) $scope.fd.msgs[index].status=receipt.status;\r\n $scope.fd.msgs[index].pending=false;});\r\n });\r\n \r\n }\r\n else{\r\n contractInst.methods.redeem(index).send()\r\n .on('transactionHash', function(hash){\r\n \r\n $timeout(function(){$scope.fd.msgs[index].transactionHash=hash;\r\n $scope.fd.msgs[index].pending=true;});\r\n \r\n })\r\n .on('confirmation', function(confirmationNumber, receipt){\r\n if (confirmationNumber>0)\r\n {\r\n $timeout(function(){\r\n $scope.fd.msgs[index].confirmation=confirmationNumber;\r\n $scope.fd.msgs[index].pending=false;});\r\n }\r\n })\r\n .on('receipt', function(receipt){\r\n \r\n $timeout(function(){\r\n \r\n $scope.fd.msgs[index].trxReceipt=receipt;\r\n $scope.fd.msgs[index].status=receipt.status; \r\n \r\n \r\n });\r\n $scope.fd.getMyStakings();\r\n \r\n\r\n })\r\n .on('error', function(error, receipt) { // If the transaction was rejected by the network with a receipt, the second parameter will be the receipt.\r\n $timeout(function(){\r\n $scope.fd.msgs[index].errorMessage=error.message;\r\n \r\n if (receipt!=undefined) $scope.fd.msgs[index].status=receipt.status;\r\n $scope.fd.msgs[index].pending=false;});\r\n \r\n });\r\n \r\n }\r\n });\r\n \r\n } \r\n \r\n };\r\n \r\n $scope.fd.getBalance = function(token){\r\n \r\n let web3;\r\n var tokenAddress,tokenABI;\r\n \r\n if (token==\"KTLYO\")\r\n {\r\n tokenAddress= $scope.fd.token1Contract;\r\n tokenABI = $scope.fd.token1ContractAbi;\r\n }else\r\n {\r\n tokenAddress= $scope.fd.token2Contract;\r\n tokenABI = $scope.fd.token2ContractAbi;\r\n \r\n \r\n }\r\n if (window.ethereum)\r\n {\r\n web3= new Web3(window.ethereum); \r\n }else if (window.web3)\r\n {\r\n web3= new Web3(window.web3); \r\n }else\r\n {\r\n web3 = null;\r\n MessagingService.addMessage(\"Error connecting to web3 wallet!\",'error');\r\n }\r\n \r\n if (web3!=null)\r\n {\r\n var tokenInst = new web3.eth.Contract(tokenABI,tokenAddress);\r\n \r\n \r\n tokenInst.methods.balanceOf($scope.fd.eth_address).call().then(function (bal_raw) {\r\n var bal = web3.utils.fromWei(bal_raw, 'ether');\r\n if (bal<=100)\r\n {\r\n $scope.ktlyo_balance_ok = false;\r\n $scope.ktlyo_balance_msg = \"Insufficient balance\";\r\n }else $scope.ktlyo_balance_ok = true;\r\n $timeout(function(){$scope.balance_ktlyo = bal+ \" KTLYO\";});\r\n });\r\n } \r\n };\r\n \r\n \r\n \r\n $scope.fd.formatNumber = function(input_string){\r\n let number;\r\n \r\n if (window.ethereum)\r\n {\r\n web3= new Web3(window.ethereum); \r\n }else if (window.web3)\r\n {\r\n web3= new Web3(window.web3); \r\n }else\r\n {\r\n web3 = null;\r\n MessagingService.addMessage(\"Error connecting to web3 wallet!\",'error');\r\n }\r\n \r\n if (web3!=null)\r\n {\r\n \r\n \r\n number = Number(web3.utils.fromWei(input_string, 'ether')).toLocaleString(undefined, { maximumFractionDigits: 18 });\r\n \r\n }\r\n \r\n /*\r\n let decimals = (\"000000000000000000\" + input_string.substr(input_string.length - 18)).slice(-18);\r\n if (input_string.length<19) number= \"0.\"+decimals;\r\n else number = input_string.substring(0,input_string.length - 18)+\".\"+decimals;\r\n */\r\n return number;\r\n }\r\n \r\n \r\n $scope.fd.getAmount = function(token,forToken,amount,amountReward){\r\n let number,numberReward;\r\n \r\n let tokenTicker = $scope.fd.getTokenTicker(token);\r\n if (window.ethereum)\r\n {\r\n web3= new Web3(window.ethereum); \r\n }else if (window.web3)\r\n {\r\n web3= new Web3(window.web3); \r\n }else\r\n {\r\n web3 = null;\r\n MessagingService.addMessage(\"Error connecting to wallet!\",'error');\r\n }\r\n \r\n if (web3!=null)\r\n {\r\n \r\n number = Number(web3.utils.fromWei(amount, 'ether'));\r\n numberReward = Number(web3.utils.fromWei(amountReward, 'ether'));\r\n if (tokenTicker==forToken) number = number+numberReward;\r\n else number = numberReward;\r\n number = number.toLocaleString(undefined, { maximumFractionDigits: 4 });\r\n \r\n }\r\n \r\n return number;\r\n }\r\n \r\n $scope.fd.isReleased = function(stake){\r\n \r\n if (stake.stakeEnd>=$scope.fd.currentDate) return false;\r\n else return true;\r\n }\r\n \r\n \r\n \r\n \r\n $scope.fd.formatDate = function(input_timestamp){\r\n let date_var;\r\n let options = { weekday: 'short', year: 'numeric', month: 'short', day: 'numeric',hour: '2-digit', minute:'2-digit',second:'2-digit',hour12:false };\r\n date_var = new Date(input_timestamp*1000).toLocaleDateString(undefined,options);\r\n \r\n return date_var;\r\n }\r\n \r\n $scope.fd.getTokenTicker = function(tokenAddress){\r\n \r\n let tokenTicker;\r\n if (tokenAddress.toLowerCase()== $scope.fd.token1Contract.toLowerCase())\r\n {\r\n tokenTicker=\"KTLYO\";\r\n }else\r\n {\r\n tokenTicker=\"BNF\";\r\n \r\n }\r\n return tokenTicker;\r\n }\r\n \r\n $scope.fd.setMax = function(){\r\n \r\n if ($scope.fd.remainStakeLimit > $scope.fd.allowance) $scope.fd.StakeAmount = $scope.fd.allowance;\r\n else $scope.fd.StakeAmount = $scope.fd.remainStakeLimit;\r\n \r\n \r\n };\r\n $scope.fd.setMaxAllowance = function(){\r\n \r\n $scope.fd.ApproveAmount = $scope.fd.remainStakeLimit;\r\n \r\n };\r\n $scope.fd.getMyLimits = function(token){\r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n if (window.ethereum)\r\n {\r\n web3= new Web3(window.ethereum); \r\n }else if (window.web3)\r\n {\r\n web3= new Web3(window.web3); \r\n }else\r\n {\r\n web3 = null;\r\n MessagingService.addMessage(\"Error connecting to wallet!\",'error');\r\n }\r\n \r\n if (web3!=null)\r\n { \r\n web3.eth.getAccounts().then(function (result) {\r\n $timeout(function(){\r\n $scope.fd.eth_address = result[0];\r\n if ($scope.fd.eth_address!=null)\r\n {\r\n \r\n //get address and abi\r\n var contractAddress = $scope.fd.stakingContract;\r\n var contractABI = $scope.fd.stakingContractAbi;\r\n \r\n var contractInst = new web3.eth.Contract(contractABI,contractAddress);\r\n \r\n contractInst.options.from = $scope.fd.eth_address;\r\n \r\n contractInst.methods.getMyLimits().call().then(function (data) {\r\n \r\n if (token==\"KTLYO\") $scope.fd.spentStakeLimit=web3.utils.fromWei(data.limit1,'ether');\r\n else $scope.fd.spentStakeLimit=web3.utils.fromWei(data.limit2,'ether');\r\n \r\n \r\n contractInst.methods.getStakeRewardAmounts().call().then(function (data) {\r\n \r\n $timeout(function(){\r\n if (token==\"KTLYO\") $scope.fd.maxStakeLimit=web3.utils.fromWei(data[4],'ether');\r\n else $scope.fd.maxStakeLimit=web3.utils.fromWei(data[5],'ether');\r\n $scope.fd.maxStakeLimitPrint = Number($scope.fd.maxStakeLimit).toLocaleString(undefined, { maximumFractionDigits: 18 });\r\n $scope.fd.remainStakeLimit = $scope.fd.maxStakeLimit - $scope.fd.spentStakeLimit;\r\n $scope.fd.remainStakeLimitPrint = Number($scope.fd.remainStakeLimit).toLocaleString(undefined, { maximumFractionDigits: 18 });\r\n })\r\n },\r\n function(error){\r\n MessagingService.addMessage(error.message,'error')\r\n });\r\n \r\n },\r\n function(error){\r\n MessagingService.addMessage(error.message,'error')\r\n });\r\n \r\n contractInst.methods.getStakeRewardAmounts().call().then(function (data) {\r\n \r\n if (token==\"KTLYO\") $scope.fd.maxStakeLimit=data.maxStakeAmt1; \r\n else $scope.fd.maxStakeLimit=data.maxStakeAmt2;\r\n \r\n },\r\n function(error){\r\n MessagingService.addMessage(error.message,'error')\r\n });\r\n \r\n \r\n \r\n }else MessagingService.addMessage(\"Error connecting to wallet!\",'error') ;\r\n });\r\n },function(error){\r\n $timeout(function(){\r\n \r\n $scope.fd.error_msg = error.message;\r\n \r\n });\r\n });\r\n \r\n \r\n }\r\n\r\n }\r\n \r\n \r\n \r\n \r\n $scope.fd.getMyStakings = function(){\r\n var lang=$rootScope.globals.currentUser.lang;\r\n $scope.fd.afterQuery=false;\r\n //$scope.fd.myStakes=[];\r\n \r\n if (window.ethereum)\r\n {\r\n web3= new Web3(window.ethereum); \r\n }else if (window.web3)\r\n {\r\n web3= new Web3(window.web3); \r\n }else\r\n {\r\n web3 = null;\r\n MessagingService.addMessage(\"Error connecting to wallet!\",'error');\r\n }\r\n \r\n if (web3!=null)\r\n {\r\n \r\n\r\n \r\n web3.eth.getAccounts().then(function (result) {\r\n \r\n $scope.fd.eth_address = result[0];\r\n if ($scope.fd.eth_address!=null)\r\n {\r\n \r\n //get address and abi\r\n var contractAddress = $scope.fd.stakingContract;\r\n var contractABI = $scope.fd.stakingContractAbi;\r\n \r\n var contractInst = new web3.eth.Contract(contractABI,contractAddress);\r\n \r\n contractInst.options.from = $scope.fd.eth_address;\r\n \r\n contractInst.methods.getMyStakings().call().then(function (data) {\r\n \r\n $scope.fd.currentDate = Math.floor(Date.now() / 1000);\r\n \r\n $timeout(function(){ $scope.fd.myStakes = data;$scope.fd.afterQuery=true;});\r\n \r\n },\r\n function(error){\r\n MessagingService.addMessage(error.message,'error')\r\n });\r\n \r\n \r\n \r\n }else MessagingService.addMessage(\"Error connecting to wallet!\",'error') ;\r\n \r\n },function(error){\r\n $timeout(function(){\r\n \r\n $scope.fd.error_msg = error.message;\r\n \r\n });\r\n });\r\n \r\n \r\n }\r\n\r\n }\r\n \r\n \r\n \r\n //$scope.fd.getMyStakings();\r\n \r\n $scope.localVarsWidget.getFormResource = function(){\r\n var lang=$rootScope.globals.currentUser.lang;\r\n $scope.localVarsWidget.formLoaded=false;\r\n if ($scope.fd.PresentationId==null)\r\n {\r\n $scope.fd.PresentationId=0;\r\n \r\n }\r\n $scope.localVarsWidget.formLoading=true;\r\n \r\n ResourcesDataService.getResourceFormExtended($scope.fd.Related,$scope.taskId,$scope.localVarsWidget.formType,$scope.fd.PresentationId,\"w\",lang).then(function(data) {\r\n \r\n $scope.localVarsWidget.resourceWidgetDefinition= data.data.resourceDefinition;\r\n if (Array.isArray(data.data.widgets)) $scope.localVarsWidget.dashboard.widgets.layout = data.data.widgets;\r\n \r\n if ($scope.localVarsWidget.selectedResourceItem!=undefined)\r\n { \r\n $scope.localVarsWidget.selectedResourceItem.name=$scope.localVarsWidget.resourceWidgetDefinition.name;\r\n $scope.localVarsWidget.selectedResourceItem.relatedId=$scope.fd.Related;\r\n $scope.localVarsWidget.selectedResourceItem.presentationId=$scope.fd.PresentationId;\r\n $scope.localVarsWidget.selectedResourceItem.src_type_id=$scope.fd.PopulateType;\r\n $scope.localVarsWidget.selectedResourceItem.src_type_text=$scope.localVarsWidget.src_type_text[$scope.fd.PopulateType];\r\n $scope.localVarsWidget.selectedResourceItem.parentElementId=$scope.fd.ParentElementId;\r\n }\r\n else{\r\n $scope.localVarsWidget.selectedResourceItem={'name':$scope.localVarsWidget.resourceWidgetDefinition.name,'relatedId':$scope.fd.Related, 'presentationId':$scope.fd.PresentationId ,'src_type_id':$scope.fd.PopulateType,'src_type_text':$scope.localVarsWidget.src_type_text[$scope.fd.PopulateType],'parentElementId':$scope.fd.ParentElementId};\r\n \r\n }\r\n \r\n $scope.fd.wItemValue=data.data.widgets;\r\n \r\n \r\n \r\n $scope.localVarsWidget.searchFormDownloaded = true;\r\n \r\n $timeout(function(){ \r\n $scope.localVarsWidget.formLoaded=true;\r\n $scope.localVarsWidget.formLoading=false;\r\n });\r\n \r\n \r\n // $scope.localVarsWidget.setField($scope.localVarsWidget.dashboard.widgets.layout,'ReadOnly',true); \r\n $scope.localVarsWidget.setField($scope.localVarsWidget.dashboard.widgets.layout,'Required',false);\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.localVarsWidget.formLoading=false;\r\n \r\n \r\n });\r\n \r\n };\r\n \r\n \r\n $scope.localVarsWidget.getFormResourceWithData = function(){\r\n var lang=$rootScope.globals.currentUser.lang;\r\n $scope.localVarsWidget.formLoaded=false;\r\n if ($scope.fd.PresentationId==null || $scope.fd.PresentationId==undefined)\r\n {\r\n $scope.fd.PresentationId = 0;\r\n \r\n }\r\n \r\n if ($scope.fd.ParentElementId==null || $scope.fd.ParentElementId==undefined)\r\n {\r\n $scope.fd.ParentElementId = 0;\r\n \r\n }\r\n \r\n \r\n \r\n \r\n if ($scope.localVarsWidget.resourceRecordId==undefined || $scope.localVarsWidget.resourceRecordId==0)\r\n {\r\n \r\n if ($scope.localVarsWidget.previousTaskData['datasetRecordId']!=undefined && $scope.localVarsWidget.previousTaskData['datasetRecordId']!=\"\" && $scope.localVarsWidget.previousTaskData['datasetId']==$scope.fd.Related) $scope.localVarsWidget.resourceRecordId = $scope.localVarsWidget.previousTaskData['datasetRecordId'];\r\n \r\n }\r\n if (typeof $scope.localVarsWidget.resourceRecordId !=='number' && typeof $scope.localVarsWidget.resourceRecordId !=='string')\r\n {\r\n \r\n if (Array.isArray($scope.localVarsWidget.resourceRecordId))\r\n {\r\n if ($scope.localVarsWidget.resourceRecordId.length>0)\r\n {\r\n $scope.localVarsWidget.resourceRecordId= $scope.localVarsWidget.resourceRecordId[0].id \r\n \r\n }\r\n }\r\n else $scope.localVarsWidget.resourceRecordId = $scope.localVarsWidget.resourceRecordId.id; \r\n }\r\n \r\n ResourcesDataService.getResourceFormExtendedWithData($scope.fd.Related,$scope.taskInitiateId,$scope.taskExecuteId,$scope.fd.PopulateType,$scope.fd.ParentElementId,$scope.fd.PresentationId,$scope.prevTaskExeId,$scope.localVarsWidget.formType,$scope.localVarsWidget.widgetType,$scope.localVarsWidget.resourceRecordId,\"w\",lang).then(function(data) {\r\n\r\n $scope.formData[$scope.fd.PresentationId] = data.data.form_data;\r\n if ($scope.formData[$scope.fd.PresentationId]==undefined) $scope.formData[$scope.fd.PresentationId]=[];\r\n $scope.localVarsWidget.resourceWidgetDefinition= data.data.resourceDefinition;\r\n if (Array.isArray(data.data.widgets)) $scope.localVarsWidget.dashboard.widgets.layout = data.data.widgets;\r\n \r\n if ($scope.formData[$scope.fd.PresentationId].length>0)\r\n {\r\n $scope.localVarsWidget.resourceRecordId = $scope.formData[$scope.fd.PresentationId][0]['id'];\r\n }\r\n $scope.localVarsWidget.datasetRecordId=$scope.localVarsWidget.resourceRecordId;\r\n if ($scope.localVarsWidget.selectedResourceItem!=undefined)\r\n { \r\n $scope.localVarsWidget.selectedResourceItem.name=$scope.localVarsWidget.resourceWidgetDefinition.name;\r\n $scope.localVarsWidget.selectedResourceItem.relatedId=$scope.fd.Related;\r\n $scope.localVarsWidget.selectedResourceItem.presentationId=$scope.fd.PresentationId;\r\n $scope.localVarsWidget.selectedResourceItem.src_type_id=$scope.fd.PopulateType;\r\n $scope.localVarsWidget.selectedResourceItem.src_type_text=$scope.localVarsWidget.src_type_text[$scope.fd.PopulateType];\r\n $scope.localVarsWidget.selectedResourceItem.parentElementId=$scope.fd.ParentElementId;\r\n }\r\n else{\r\n $scope.localVarsWidget.selectedResourceItem={'name':$scope.localVarsWidget.resourceWidgetDefinition.name,'relatedId':$scope.fd.Related, 'presentationId':$scope.fd.PresentationId ,'src_type_id':$scope.fd.PopulateType,'src_type_text':$scope.localVarsWidget.src_type_text[$scope.fd.PopulateType],'parentElementId':$scope.fd.ParentElementId};\r\n \r\n }\r\n //$scope.fd.wItemValue=data.data.widgets;\r\n \r\n // $timeout(function() {\r\n $scope.localVarsWidget.formLoaded=true;\r\n // $scope.localVarsWidget.initiateFormLoaded=true;\r\n $scope.localVarsWidget.formLoading=false;\r\n $scope.localVarsWidget.searchFormDownloaded = true;\r\n \r\n // }); \r\n \r\n \r\n //MIGOR - bitno - DOBIO RESOURCERECORD-ID ZA BROADCAST - VIEW_RESOURCE WIDGET\r\n WidgetDataExchangeService.setData({widgetId:$scope.fd.PresentationId, DEI: [{'name':'resourceLink','value':[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:$scope.localVarsWidget.resourceRecordId}]}]});\r\n \r\n // $scope.localVarsWidget.setField($scope.localVarsWidget.dashboard.widgets.layout,'ReadOnly',true); \r\n $scope.localVarsWidget.setField($scope.localVarsWidget.dashboard.widgets.layout,'Required',false); \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n \r\n };\r\n \r\n \r\n $scope.localVarsWidget.setSelectedDataset = function(id) {\r\n \r\n if ($scope.localVarsWidget.selectedResourceItem==undefined) $scope.localVarsWidget.selectedResourceItem={};\r\n var pos = $scope.localVarsWidget.resourceList.map(function(e) { return e.id; }).indexOf(id);\r\n \r\n if (pos>=0){\r\n $scope.localVarsWidget.selectedResourceItem.id = $scope.localVarsWidget.resourceList[pos].id;\r\n $scope.localVarsWidget.selectedResourceItem.name = $scope.localVarsWidget.resourceList[pos].name;\r\n $scope.localVarsWidget.selectedDataset = $scope.localVarsWidget.resourceList[pos];\r\n $scope.localVarsWidget.selectedResourceItem.name_confirmed = $scope.localVarsWidget.selectedResourceItem.name +' ('+$scope.localVarsWidget.selectedResourceItem.id +')'\r\n $scope.localVarsWidget.selectedResourceItem_c=$scope.localVarsWidget.selectedResourceItem;\r\n }\r\n\t\t\t\t\t}\r\n \r\n \r\n // POPUNI LISTU DEFINICIJA OD RESURSA (RESOURCES LIST)\r\n\t$scope.localVarsWidget.getResources = function() {\r\n\t\t\t\t\t\t\r\n if ($scope.localVarsWidget.resourceList==undefined) $scope.localVarsWidget.resourceList=[];\r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n ResourcesDataService.getResourceDefListByType(lang,'smartcontract').then(\r\n\t\t\t\t\t\tfunction(data) {\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t $scope.localVarsWidget.resourceList = data.data;\r\n if ($scope.fd.Related!=null)\r\n {\r\n $scope.localVarsWidget.setSelectedDataset($scope.fd.Related);\r\n \r\n } \r\n\t\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t\t\t\t\t\t });\r\n\t\t\t\t\t}\r\n \r\n \r\n if ($scope.fd.Related!=null && !$scope.formDefinition && !$scope.localVarsWidget.searchFormDownloaded)\r\n {\r\n \r\n // $scope.localVarsWidget.getFormResourceWithData();\r\n // $scope.localVarsWidget.getDatasets();\r\n // $scope.localVarsWidget.setSelectedDataset($scope.fd.Related);\r\n \r\n }else if ($scope.fd.Related!=null)\r\n {\r\n //$scope.localVarsWidget.getFormResource();\r\n //$scope.localVarsWidget.getResources();\r\n //$scope.localVarsWidget.setSelectedDataset($scope.fd.Related);\r\n \r\n } \r\n\r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n let template\r\n template = $templateCache.get('ktdirectivetemplates/ktKtlyoStaking.html');\r\n $element.append($compile(template)($scope)); \r\n\r\n \r\n }];\r\n\r\n return {\r\n restrict: 'A',\r\n \r\n controller: controller,\r\n link: function (scope, elem, attrs) {\r\n\r\n } \r\n }\r\n \r\n};\n'use strict';\r\n\r\nexport function ktLabel () {\r\n return {\r\n restrict: 'A',\r\n\t\t\r\n templateUrl: 'ktdirectivetemplates/ktLabel.html',\r\n controller: function($scope,GridsterService,WidgetDataExchangeService,UtilityService){\r\n\t\t\t\t \r\n\t\t\t\r\n\t\t\t\t$scope.fd.localVars = {\r\n\t\t\t\t\tcalculateFunctions :[ {id:1,name:'sum'},{id:2,name:'mean'},{id:3,name:'min'},{id:4,name:'max'},{id:5,name:'count'} ] ,\r\n\t\t\t\t\tgsrvc: GridsterService\r\n\t\t\t\t} \r\n\r\n \r\n //$scope.gsrvc = GridsterService;\r\n\t\t\t\t\r\n \r\n\t\t\t\tif ($scope.fd.localVars==undefined) $scope.fd.localVars={}\r\n\t\t\t\t$scope.fd.localVars.resourceDefinition = $scope.resourceDefinition\r\n\t\t\t\t\r\n\t\t\t\t$scope.localVars = {gsrvc:GridsterService} //because kt-delete-element\r\n\t\t\t\r\n\t\t\t\tif ($scope.fd.localVars.parentResourceId==undefined) $scope.fd.localVars.parentResourceId = $scope.resourceDefinition.pageId ?? $scope.resourceDefinition.uid // if directly on page \r\n\r\n $scope.showProperties = function(event)\r\n {\r\n $scope.fd.localVars.gsrvc.setFieldProperties($scope.fd,event);\r\n }\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t //register widget \r\n\t\t\t\t var out_fields = ['resourceId']\r\n\t\t\t\t if ($scope.fd.UuidRef==undefined) $scope.fd.UuidRef=UtilityService.uuidv4()\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t let w_actions=[]\r\n\r\n\t\t\t\t var widgetDefinition = {\r\n\t\t\t\t\t DEI: [{'name':'resourceLink','displayName':'Dataset record id','value':[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:''}]}],\r\n\t\t\t\t\t\tactions: w_actions,\r\n\t\t\t\t\t\twidgetLabel: 'Label',\r\n\t\t\t\t\t\twidgetName: 'ktLabel',\r\n\t\t\t\t\t\twidgetId: $scope.fd.UuidRef,\r\n\t\t\t\t\t\ttask_initiate_id:$scope.taskInitiateId,\r\n\t\t\t\t\t\ttask_execute_id:$scope.taskExecuteId,\r\n\t\t\t\t\t\ttaskId: $scope.lTaskId,\r\n\t\t\t\t\t\tresource_id:$scope.resourceDefinition.page_state_id,\r\n\t\t\t\t\t\tresourceDefId : $scope.fd.Related, \r\n\t\t\t\t\t\toutput:out_fields,\r\n\t\t\t\t\t\tparentResourceId:$scope.fd.localVars?.parentResourceId\r\n\t\t\t\t\t}\r\n\t\t\t\t \r\n\t\t\t\t $scope.fd.localVars.localWidgetId = WidgetDataExchangeService.registerWidget(widgetDefinition);\r\n\t\t\t\t $scope.fd.localVars.localId=$scope.fd.localVars.localWidgetId;\r\n\t\t\t\t $scope.fd.LocalId=$scope.fd.localVars.localWidgetId;\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n },//end controler\r\n\t\t\t\t\r\n link: function (scope, elem, attrs) {\r\n \r\n if (scope.fd) {\r\n if (scope.fd.Parameters == null) scope.fd.Parameters = {} //null or undefined !\r\n \r\n scope.fd.isLabelStyle = true;\r\n\t\t\t\t scope.fd.Parameters.HideElementProperties = false \r\n\t\t\t\t \r\n\t\t\t\t //if (scope.fd.Parameters.widgetReference)\r\n\t\t\t\t\t\t\t//scope.fd.Parameters.HideElementProperties = false \r\n\t\t\t\t //else \r\n\t\t\t\t\t// scope.fd.Parameters.HideElementProperties = true //hide value properties\r\n\t\t\t\t\t\t\r\n\t\t\t\t \r\n }\r\n \r\n \r\n \r\n }\r\n };\r\n};\n'use strict';\r\n\r\nexport function ktList ($rootScope,CodesService,GridsterService, KatalyoStateManager,$timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n controller: function ($scope,CodesService,$rootScope,MessagingService,GridsterService,UtilityService, KatalyoStateManager,$compile,$element,$templateCache,$timeout,$q){\r\n $scope.CTRL='ktList'\r\n\t\t\t\t//$scope.fd.testuid=UtilityService.uuidv4() // scope testing\r\n\t\t\t\t//console.log('init controler: ' + $scope.fd.testuid) //scope testing\r\n $scope.fd.localVars = {}\r\n\t\t\t\t$scope.fd.localVars[$scope.fd.id] = $scope.fd\r\n $scope[$scope.fd.id] = {'fd': $scope.fd}\r\n\t\t\t\t$scope.myscope = $scope\r\n\t\t\t\t$scope.MessagingService=MessagingService\r\n \r\n\t\t\t\t//if ($scope.fd.localVars==undefined) $scope.fd.localVars={ }\r\n\r\n let template;\r\n if ($scope.resourceDefinition.form_definition) template = $templateCache.get('ktdirectivetemplates/ktList.html');\r\n else template = $templateCache.get('ktdirectivetemplates/ktListExe.html');\r\n \r\n\t\t \r\n\r\n\t\t \t\t//console.log('init link: ' + $scope.fd.testuid) //scope testing\r\n\t\t\t\r\n if ($scope.fd.Parameters===undefined) $scope.fd.Parameters = {}\r\n var lang = $rootScope.globals.currentUser.lang; \r\n $scope.organisation_id = $rootScope.globals.currentUser?.organisation?.id\r\n\r\n if ($scope.fd.Parameters.ValueFontColor===undefined) $scope.fd.Parameters.ValueFontColor = '#000'\r\n $scope.gsrvc = GridsterService;\r\n $scope.codesService = CodesService;\r\n $scope.fd.codesLoaded = false\r\n $scope.codesLoaded = false\r\n\t\t\t\t$scope.fd.codeList = []\r\n\t\t\t\t\r\n let field_name = $scope.fd.FieldName;\r\n let elementObject = {};\r\n elementObject[field_name]=null;\r\n if ($scope.formData==undefined)\r\n {\r\n\r\n $scope.formData=[];\r\n $scope.formData.push(elementObject);\r\n }\r\n if (!$scope.formData.length) $scope.formData = [{}]\r\n // else if ($scope.formData[0][field_name]==undefined) $scope.formData[0][field_name] =null;\r\n $scope.itemValue = {val:$scope.formData[0][field_name]};\r\n \r\n $scope.ksm = KatalyoStateManager;\r\n if ($scope.fd.Parameters==undefined) $scope.fd.Parameters={};\r\n \r\n \r\n let listValueState= $scope.ksm.addSubject('listValueStateName'+$scope.fd.ItemId,$scope.itemValue.val);\r\n let listValueStateName = listValueState.subject.name;\r\n \r\n let value_changed = function(data)\r\n {\r\n listValueState.subject.setStateChanges = data;\r\n listValueState.subject.notifyObservers(\"valueChanged\");\r\n };\r\n \r\n let action_value_changed = $scope.ksm.addAction(listValueStateName,\"valueChanged\",value_changed);\r\n \r\n let parentWidgetUid = ''\r\n\r\n if ($scope.parentWidget!=undefined) parentWidgetUid = $scope.parentWidget+'-'\r\n\r\n let wrState= $scope.ksm.addSubject($scope.resourceDefinition.page_state_id+'-'+parentWidgetUid+$scope.fd.UuidRef+'-widgetReady',{widget:$scope.fd.UuidRef,processed:false})\r\n let wrStateName = wrState.subject.name\r\n \r\n \r\n let widget_ready = function(data)\r\n {\r\n wrState.subject.setStateChanges = data\r\n wrState.subject.notifyObservers(\"widgetReady\")\r\n \r\n };\r\n \r\n let action_widget_ready = $scope.ksm.addAction(wrStateName,\"widgetReady\",widget_ready)\r\n \r\n let apply_value = function(data)\r\n {\r\n if ($scope.formData[0][field_name]!=data) $scope.formData[0][field_name] = data;\r\n }; \r\n \r\n if ($scope.fd.Parameters.DependentFieldId!=undefined && $scope.fd.Parameters.DependentFieldId!=null)\r\n \r\n {\r\n if ($scope.fd.Parameters.DependentFieldId!=\"\")\r\n {\r\n let dependent_field = $scope.fd.Parameters.DependentFieldId;\r\n let subscribedSubject = $scope.fd.Parameters.DependentFieldType+\"ValueStateName\"+$scope.fd.Parameters.DependentFieldId;\r\n let observer_undo = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",apply_value,true);\r\n \r\n }\r\n }\r\n \r\n \r\n $scope.fd.searchList=[\r\n {id:1,filter:'onlist',code_name:'onlist',name:\"On list\",icon:\"fa fa-check\"},\r\n {id:2,filter:'notonlist',code_name:'notonlist',name:\"Not on list\",icon:\"fa fa-times\"},\r\n ];\r\n \r\n // get search filter in correct language\r\n $scope.fd.localVars.processFilters = function(filterList)\r\n {\r\n for (let i=0;i<$scope.fd.searchList.length;i++) {\r\n let pos = filterList.map(function(e) { return e.id; }).indexOf($scope.fd.searchList[i].code_name);\r\n if (pos>=0) $scope.fd.searchList[i].name = filterList[pos].name\r\n }\r\n \r\n if (!$scope.fd.Search) \r\n\t\t\t\t\t\t\t\t$scope.fd.Search=$scope.fd.searchList[0];//initialize to equals\r\n else\r\n\t\t\t\t\t\t\t\t$scope.fd.Search.value = $scope.formData[0][$scope.fd.FieldName]; \r\n\r\n $scope.fd.filterReady=true\r\n }\r\n\r\n if ($scope.showSearchFilters || $scope.resourceDefinition.form_definition)\r\n {\r\n CodesService.getCodesByName('search_filters',lang).then(function (data) {\r\n //debugger;\r\n try {\r\n\t\t\t\t\t\t\t\t\t\t\t$scope[$scope.fd.id]['fd'].localVars.processFilters(data.data)\r\n } catch (err) {\r\n //debugger\r\n }\r\n \r\n });\r\n }\r\n \r\n $scope.setDropdownValue=function(theSelectItemFn)\r\n {\r\n $scope.setItemValueDropdown = theSelectItemFn;\r\n \r\n }\r\n \r\n $scope.setClearDropdown = function(directiveFn) {\r\n $scope.clearDropdown = directiveFn;\r\n }\r\n \r\n \r\n\t\t\t $scope.fd.saveNewCode = function (CodeHead) {\r\n\r\n\t\t\t\r\n\t\t\t\t\t\tCodeHead.Version=1;\r\n\t\t\t\t\t\tCodeHead.Active=true;\r\n\t\t\t\t\t\tCodeHead.CodeType={\"id\": 2, \"name\": \"User\"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t CodesService.CodesPost(CodeHead).then(function(data) { \r\n\t\t\t\t\t\t\t\t\t\t\t $scope.MessagingService.addMessage(data.data.msg,'success');\r\n\t\t\t\t\t\t\t\t\t\t\t CodeHead.id=data.data.data; \r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t CodesService.CodesList().then(function(data) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t//$scope.fd.showAddNew=false\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$scope.fd.codesDefinitionList = data.data\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t })\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t },function(error){\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t $scope.MessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t\t\t\t\t\t}); \r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t};\r\n\t\t\t\t\t\r\n\t\t\r\n $scope.fd.selection_changed = function (item,model) {\r\n //debugger\r\n if ($rootScope.globals?.app?.uniqueId!=\"ktlyo_builder\")\r\n\t\t\t\t\t\t\t$scope.fd.Search.value = $scope.formData[0][field_name];\r\n $scope.fd.DefaultValue = {value:$scope.formData[0][field_name]};\r\n $scope.ksm.executeAction(listValueStateName,\"valueChanged\", $scope.formData[0][field_name]);\r\n if (!$scope.fd.Multiline && $scope.formData[0][field_name]?.id==null) delete $scope.formData[0][field_name]\r\n }\r\n $scope.removeItem = function(index)\r\n {\r\n $scope.formData[0][field_name].splice(index,1);\r\n //$scope.ngModel.$setViewValue($scope.model.selectedItems); \r\n \r\n }\r\n \r\n $scope.selectedItemId = $scope.gsrvc.getSelectedItemId(); \r\n \r\n $scope.showProperties = function(event)\r\n {\r\n $scope.fd.loadingProperties=true\r\n\t\t\t\t $scope.gsrvc.setFieldProperties($scope.fd, $scope.inputArray);// inputArray is parent\r\n\r\n $timeout(function(){$scope.fd.loadingProperties=false})\r\n \r\n };\r\n \r\n \r\n \r\n $scope.fd.code={selectedCode:null};\r\n\t\t\t\t\r\n\r\n \r\n if ($scope.resourceDefinition.form_definition)\r\n {\r\n\t\t\t\t\t$scope.fd.codesDefinitionList=[]\r\n\t\t\t\t\t\tCodesService.CodesGet(lang).then(\r\n\t\t\t\t\t\tfunction(data) \r\n\t\t\t\t\t\t{\r\n \r\n\t\t\t\t\t\t\tif ($scope.fd.localVars==undefined) { //cudna greska kad izgubi localvars\r\n\t\t\t\t\t\t\t\t//debugger\r\n\t\t\t\t\t\t\t\t$scope[$scope.fd.id].fd.localVars.codeHeads = data.data;\r\n\t\t\t\t\t\t\t} else \r\n\t\t\t\t\t\t\t\t$scope.fd.localVars.codeHeads = data.data; \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n //$scope.totalCount = data.data.length\r\n\t\t\t\t\t\t\t$scope[$scope.fd.id].fd.localVars.codeHeads.forEach( (ch) => {\r\n\t\t\t\t\t\t\t\t\t$scope[$scope.fd.id].fd.codesDefinitionList.push ( {'id': ch.id, 'uid':ch.uid, 'name': ch.CodeName })\r\n\t\t\t\t\t\t\t})\r\n \r\n\t\t\t\t\t\r\n if ($scope.fd.CodeId!=undefined)\r\n {\r\n var posCodesDef = $scope[$scope.fd.id].fd.codesDefinitionList.map(function(e) { return e.uid.toString(); }).indexOf($scope.fd.CodeId.toString());\r\n \r\n if (posCodesDef>=0){\r\n $scope.fd.code.selectedCode=$scope[$scope.fd.id].fd.codesDefinitionList[posCodesDef]; \r\n }else\r\n\t\t\t\t\t\t\t\t{\r\n if (!isNaN(+$scope.fd.CodeId) )\t $scope.fd.CodeId = $scope.fd.CodeId+'-'+$scope.organisation_id //if code is number then add org_id\r\n posCodesDef = $scope[$scope.fd.id].fd.codesDefinitionList.map(function(e) { return e.id.toString(); }).indexOf($scope.fd.CodeId.toString());\r\n if (posCodesDef>=0) \t$scope.fd.code.selectedCode=$scope[$scope.fd.id].fd.codesDefinitionList[posCodesDef]\r\n\r\n }\r\n }\r\n $scope.fd.codeListPropsDownloaded=true\r\n\t\t\t\t\t\t},function(error){\r\n $scope.MessagingService.addMessage(error.msg,'error');\r\n })\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n \r\n }//if\r\n \r\n\r\n\t\t\t\r\n \r\n $scope.applyListFilters = function(index) {\r\n \r\n $scope.fd.Search=$scope.fd.searchList[index];\r\n \r\n if( typeof $scope.formData[0][$scope.fd.FieldName] === 'string' ) {\r\n $scope.fd.Search.value = [ {'id':$scope.formData[0][$scope.fd.FieldName]} ];\r\n }\r\n \r\n $scope.isOpen=false; \r\n };\r\n\r\n if ($scope.fd.Multiline && $scope.formData[0][$scope.fd.FieldName]===undefined) $scope.formData[0][$scope.fd.FieldName]=[]\r\n\r\n \r\n\t\t\t\t\r\n\t\t$scope.fd.openModal = function(isnew) {\r\n\t\t\t\r\n\t\t\tif (!isnew) {\r\n\t\t\t\t$scope.fd.getCodes($scope.fd.code?.selectedCode.uid)\r\n\t\t\t\r\n\t\t\t\tfor (const ch of $scope.fd.localVars.codeHeads) {\r\n\t\t\t\t\tif ($scope.fd.code?.selectedCode?.id == ch.id) {\r\n\t\t\t\t\t\t$scope.fd.localVars.selectedCodeHead = ch\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else { //NEW\r\n\t\t\t\t$scope.fd.localVars.selectedCodeHead = null\t\t\t\t\r\n\t\t\t\t$scope.fd.codeList.length=0\r\n\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t $timeout(function() { $scope.fd.showAddNew= true });\r\n\t\t\t\r\n\r\n\t\t}\r\n\t\t\r\n\t\t\r\n $scope.fd.saveCodesDetails = function(selectedCodeHead, codesList){\r\n \r\n if (selectedCodeHead.id>0) {\r\n CodesService.saveCodesDetails(selectedCodeHead.id, codesList, lang).then(\r\n function(data) {\r\n\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t $scope.MessagingService.addMessage(data.msg,'success');\r\n\t\t\t\t\t\t\t\t\t\t \r\n $scope.codesDetails = data.data;\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t$timeout(function() { \r\n\t\t\t\t\t\t\t\t\t\t\t\t$scope.fd.codeList = data.data; \t\t// $scope.fd.codeList\t? \r\n\t\t\t\t\t\t\t\t\t\t});\r\n \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \r\n },function(error){ \r\n $scope.MessagingService.addMessage(error.msg,'error');\r\n });\r\n } else { \r\n //$scope.codesDetails.length = 0;\r\n }\r\n }\r\n\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n $scope.fd.getCodes = function (code) {\r\n \r\n if (code == undefined) return;\r\n\t\t \r\n let searchCode=\"\";\r\n //if (typeof codeId==='number') codeId = codeId+'-'+$scope.organisation_id\r\n //$scope.fd.CodeId = codeId;\r\n \r\n $scope.codesService.getCodes(code,lang).then(function(data){\r\n \r\n $scope.fd.codeListFull = data.data;\r\n $scope.fd.codeList = [];\r\n //filter data here\r\n if ($scope.fd.Parameters.Condition!=undefined)\r\n {\r\n if ($scope.fd.Parameters.Condition!=\"\")\r\n {\r\n let conditions = $scope.fd.Parameters.Condition.split(\";\");\r\n \r\n for (let i=0;i=0) $scope.fd.codeList.push($scope.fd.codeListFull[idx]);\r\n }\r\n } else $scope.fd.codeList= $scope.fd.codeListFull;\r\n }else $scope.fd.codeList= $scope.fd.codeListFull;\r\n \r\n \r\n if ($scope.CTRL !=='ktList') { //angular scope mix debug\r\n console.log('ktlist - nije moj scope ! CTRL= ' + $scope.CTRL)\r\n \r\n }\r\n \r\n if ($scope.fd.localVars===undefined) {//angular scope mix debug fix errror\r\n\t\t\t\t\t\t\t//debugger\r\n\t\t\t\t\t\t\t Object.assign($scope.fd , $scope[$scope.fd.id].fd);//vrati nazad fd koji je dobar! scopeovi se mixaju zbog nečeg.\r\n console.log('ktlist - nemam localvars!') \r\n }\r\n \r\n $scope.fd.codesLoaded = true\r\n $scope.codesLoaded = true\r\n //this should come from server however for also on client\r\n if ($scope.fd.UpdateWithDefault && !$scope.fd.NoUpdate) $scope.formData[0][$scope.fd.FieldName] = $scope.fd.DefaultValue?.value\r\n\r\n if ($scope.fd.Parameters.UseUserProperty) $scope.formData[0][$scope.fd.FieldName] = $rootScope.globals.currentUser.uep.AdvancedProperties[$scope.fd.Parameters.UserPropertyId]\r\n\r\n\r\n if ($scope.formData!=undefined && !$scope.fd.Multiline) // NOT MULTILLINE !\r\n {\r\n if ($scope.formData[0][$scope.fd.FieldName]!=null && $scope.formData[0][$scope.fd.FieldName]!=undefined)\r\n { \r\n\t\t\t\t\t\t\t\tif ( Array.isArray($scope.formData[0][$scope.fd.FieldName]) )\r\n\t\t\t\t\t\t\t\t\tsearchCode = $scope.formData[0][$scope.fd.FieldName][0]?.id // if ARRAY\r\n if (typeof($scope.formData[0][$scope.fd.FieldName])=='string' || typeof($scope.formData[0][$scope.fd.FieldName])=='number' ) \r\n\t\t\t\t\t\t\t\t\tsearchCode = $scope.formData[0][$scope.fd.FieldName].toString() //if STRING or NUMBER\r\n else if ($scope.formData[0][$scope.fd.FieldName].id) searchCode = $scope.formData[0][$scope.fd.FieldName].id.toString()\r\n else searchCode = $scope.formData[0][$scope.fd.FieldName]\r\n \r\n\t\t\t\t\t\t\t\tif (searchCode) {\r\n let pos = $scope.fd.codeList.map(function(e) {\r\n\t\t\t\t\t\t\t\t\t\tif (e.id!=null) return e.id.toString();\r\n\t\t\t\t\t\t\t\t\t\telse return e.id;\r\n }).indexOf(searchCode);\r\n \r\n if (pos>=0) $timeout(function(){ $scope.formData[0][$scope.fd.FieldName]=$scope.fd.codeList[pos] })\r\n\r\n\t\t\t\t\t\t\t\t}\r\n }\r\n \r\n }\r\n\r\n $scope.ksm.executeAction(wrStateName,\"widgetReady\", {widget:$scope.fd.UuidRef,processed:true});\r\n \r\n });\r\n \r\n }\r\n \r\n if (!$scope.fd.ReadOnly && $scope.fd.CodeId!=undefined && $scope.fd.CodeId.toString().length>0) $scope.fd.getCodes($scope.fd.CodeId);\r\n else if ($scope.fd.CodeId && $scope.fd.CodeId.toString().length>0){\r\n if ($scope.fd.UpdateWithDefault && !$scope.fd.NoUpdate) $scope.formData[0][$scope.fd.FieldName] = $scope.fd.DefaultValue?.value\r\n\r\n if ($scope.fd.Parameters.UseUserProperty) $scope.formData[0][$scope.fd.FieldName] = $rootScope.globals.currentUser.uep.AdvancedProperties[$scope.fd.Parameters.UserPropertyId]\r\n }\r\n\r\n\t\t \r\n\t\t \r\n\t\t \r\n $element.append($compile(template)($scope)); \r\n },\r\n \r\n link: function (scope, elem, attrs) {\r\n\r\n }//link\r\n\r\n }\r\n};\r\n\r\n\r\nexport function ktListParser () {\r\n return {\r\n restrict: 'A',\r\n require:'ngModel',\r\n \r\n link: function (scope, elem, attrs,ngModelController) {\r\n\r\n\r\n //For model -> DOM validation (model -> view)\r\n //\r\n function formatFormatter(value){\r\n\r\n let valid = true\r\n //if (value===undefined) value={id:null,name:$scope.fd.SearchText}\r\n if ($scope.fd.Required && !$scope.fd.Multiline) {\r\n if (value?.id==null) {\r\n\r\n valid = false\r\n \r\n }\r\n ngModelController.$setValidity('required', valid);\r\n }\r\n \r\n return valid? value : undefined;\r\n //return value\r\n\r\n }\r\n //For DOM -> model validation (view -> model)\r\n function formatParser(value){\r\n\r\n let valid = true\r\n if ($scope.fd.Required && !$scope.fd.Multiline) {\r\n if (value?.id==null) {\r\n\r\n valid = false\r\n \r\n }\r\n ngModelController.$setValidity('required', valid);\r\n }\r\n \r\n //return value\r\n return valid? value : undefined;\r\n\r\n }\r\n\r\n ngModelController.$formatters.push(formatFormatter)\r\n\r\n ngModelController.$parsers.push(formatParser)\r\n\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n}\n'use strict';\n\n\n\nexport function ktMassPropertyUpdateSelect (KatalyoStateManager, TaskDataService,MessagingService) {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktMassPropertyUpdateSelect.html',\n controller: function($scope){\n \n },\n link: function (scope, elem, attrs) {\n \n //To do - get this from server (db table)\n scope.fd.massUpdateFieldList=[\n {id:1, Field:'ReadOnly',Label:'Read only',Component:'checkbox'},\n {id:2, Field:'ShowField',Label:'Show field',Component:'checkbox'},\n {id:3, Field:'Required',Label:'Required',Component:'checkbox'},\n {id:4, Field:'Parameters[ValueFontBold]',Label:'Value-Font-Bold',Component:'checkbox'}\n ];\n \n scope.ksm = KatalyoStateManager;\n scope.taskDataService = TaskDataService;\n scope.messagingService = MessagingService\n\n let massUpdateState= scope.ksm.addSubject('massUpdateState',null);\n let massUpdateStateName = massUpdateState.subject.name;\n\n let activate_mass_update = function(data)\n {\n massUpdateState.subject.setStateChanges = data;\n massUpdateState.subject.notifyObservers(\"massUpdateChanged\");\n }\n \n let action_mass_update_changed = scope.ksm.addAction(massUpdateStateName,\"massUpdateChanged\",activate_mass_update);\n \n scope.activateMassUpdateFn = function(item)\n {\n scope.ksm.executeAction(massUpdateStateName,\"massUpdateChanged\", {Active:true,Item:item});\n }\n \n scope.deActivateMassUpdateFn = function(index)\n {\n scope.ksm.executeAction(massUpdateStateName,\"massUpdateChanged\", {Active:false,Item:null});\n $('#massPropertyUpdate'+ scope.fd.PresentationId).modal('hide')\n }\n \n \n scope.hideMassUpdateFn = function()\n { \n $('#massPropertyUpdate'+ scope.fd.PresentationId).modal('hide') \n\n if (scope.localVars.turnAllPropertiesOn) { \n scope.taskDataService.setField(scope.inputArray.layout, scope.selected.Field , true ); \n scope.messagingService.addMessage('All fields are ' + scope.selected.Label ,'info');\n }\n \n if (scope.localVars.turnAllPropertiesOff) {\n scope.taskDataService.setField(scope.inputArray.layout, scope.selected.Field , false ); \n scope.messagingService.addMessage('All fields are not ' + scope.selected.Label ,'info'); \n }\n scope.localVars.turnAllPropertiesOn = false\n scope.localVars.turnAllPropertiesOff = false \n }\n\n }\n }\n};\n'use strict';\r\n\r\n\r\n\r\nexport function ktMassPropertyUpdateSelect2 (KatalyoStateManager, TaskDataService, MessagingService) {\r\n\r\n return {\r\n restrict: 'A',\r\n templateUrl: 'ktdirectivetemplates/ktMassPropertyUpdateSelect2.html',\r\n controller: function($scope) { },\r\n link: function (scope, elem, attrs) \r\n {\r\n \r\n //To do - get this from server (db table)\r\n scope.massUpdateFieldList=[\r\n {id:1, Field:'ReadOnly',Label:'Read only',Component:'checkbox'},\r\n {id:2, Field:'ShowField',Label:'Show field',Component:'checkbox'},\r\n {id:3, Field:'Required',Label:'Required',Component:'checkbox'},\r\n\r\n ];\r\n \r\n scope.ksm = KatalyoStateManager;\r\n scope.taskDataService = TaskDataService;\r\n scope.messagingService = MessagingService;\r\n //scope.localVars.turnAllPropertiesOn = false\r\n scope.inputArray.localVars.turnAllPropertiesOn = false\r\n \r\n //scope.localVars.turnAllPropertiesOff = false\r\n scope.inputArray.localVars.turnAllPropertiesOff = false\r\n \r\n\r\n let massUpdateState= scope.ksm.addSubject('massUpdateState',null);\r\n let massUpdateStateName = massUpdateState.subject.name;\r\n \r\n \r\n scope.inputArray.localVars.setField = function(form,name,value,msg)\r\n {\r\n scope.taskDataService.setField(form,name,value);\r\n if (msg) scope.messagingService.addMessage(msg,'info');\r\n };\r\n\r\n let activate_mass_update = function(data)\r\n {\r\n scope.active = data.Active\r\n massUpdateState.subject.setStateChanges = data;\r\n massUpdateState.subject.notifyObservers(\"massUpdateChanged\");\r\n }\r\n \r\n let action_mass_update_changed = scope.ksm.addAction(massUpdateStateName,\"massUpdateChanged\",activate_mass_update);\r\n \r\n \r\n scope.activateMassUpdateFn = function(item)\r\n {\r\n scope.ksm.executeAction(massUpdateStateName,\"massUpdateChanged\", {Active:true,Item:item}); \r\n }\r\n \r\n scope.deActivateMassUpdateFn = function(index)\r\n {\r\n scope.selected = null\r\n scope.ksm.executeAction(massUpdateStateName,\"massUpdateChanged\", {Active:false,Item:null});\r\n $('#massPropertyUpdate').modal('hide')\r\n }\r\n \r\n \r\n scope.hideMassUpdateFn = function()\r\n { \r\n //debugger\r\n $('#massPropertyUpdate').modal('hide')\r\n if (scope.localVars.turnAllPropertiesOn) {\r\n scope.localVars.setField(scope.inputArray.layout, scope.selected.Field , true , 'All fields are ' + scope.selected.Label )\r\n }\r\n if (scope.localVars.turnAllPropertiesOff) {\r\n scope.localVars.setField(scope.inputArray.layout, scope.selected.Field , false , 'All fields are not' + scope.selected.Label )\r\n }\r\n scope.localVars.turnAllPropertiesOn = false\r\n scope.localVars.turnAllPropertiesOff = false\r\n \r\n \r\n }\r\n \r\n\r\n }\r\n }\r\n};\n'use strict';\n\nexport function ktMassUpdateProperties (KatalyoStateManager) {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktMassUpdateProperties.html',\n controller: function($scope){ \n },\n link: function (scope, elem, attrs) {\n \n //\n scope.ksm = KatalyoStateManager;\n\n \n let massUpdateState= scope.ksm.addSubject('massUpdateState',null);\n let massUpdateStateName = massUpdateState.subject.name;\n\n let activate_mass_update = function(data)\n {\n scope.fd.massUpdate = data;\n }\n \n let dependent_field = \"Field\"+scope.fd.PresentationId;\n let observer = scope.ksm.subscribe(massUpdateStateName,dependent_field,\"massUpdateChanged\",activate_mass_update);\n let state = scope.ksm.getState(massUpdateStateName);\n if (state.status==\"ok\" && state.state!==null) scope.fd.massUpdate = state.state;\n }\n }\n \n};\n'use strict';\n\nexport function ktMenuClick () {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktMenuClick.html',\n controller: function($scope,$stateParams){\n \n if ($scope.localVars==undefined) $scope.localVars={};\n if ($scope.fd==undefined) $scope.fd={};\n if ($scope.taskDefinition==undefined) $scope.taskDefinition={};\n \n $scope.localVars.menuId = $stateParams.id;\n $scope.localVars.previousTask=$stateParams.prev_task_execute_id;\n $scope.localVars.outcomeId=$stateParams.outcome_id;\n $scope.localVars.OpenTaskType = \"newPage\";\n //$scope.localVars.ShowReturnBtn = true;\n if ($scope.localVars.previousTask==undefined) $scope.localVars.previousTask = 0;\n if ($scope.localVars.outcomeId==undefined) $scope.localVars.outcomeId = 0;\n $scope.initType = $stateParams.init_type;\n $scope.localVars.processMenuClicked = true;\n if ($scope.initType==\"t\")\n {\n $scope.localVars.processMenuClicked = false;\n $scope.localVars.processStartTask = true;\n }\n \n \n },\n link: function (scope, elem, attrs) {\n \n \n \n \n \n }\n \n \n }\n};\n'use strict';\r\n\r\nexport function ktMenuDefinition() {\r\n \r\n return {\r\n restrict: 'A',\r\n templateUrl: 'ktdirectivetemplates/ktMenuDefinition.html',\r\n scope: {\r\n\t\t\t\t\tmenuItem:'=',\r\n\t\t\t\t\tlocalVars:'='\r\n },\r\n controller: function($scope,$rootScope,$timeout,MenuService,MessagingService,ResourcesDataService)\r\n\t\t\t{\r\n let lang = $rootScope.globals.currentUser.lang;\r\n if ($scope.localVars==undefined) $scope.localVars={};\r\n $scope.menu_service = MenuService;\r\n $scope.CTRL='ktMenuDefinition'\r\n \r\n if ($scope.menuItem==undefined) $scope.menuItem = $scope.menu_service.getSelectedSidemenu();\r\n \r\n $scope.headerLabel=\"Grant access to side menu\";\r\n $scope.usersLabel=\"Users\";\r\n $scope.groupsLabel=\"Groups\"; \r\n \r\n $scope.localVars.setPage = function() \r\n\t\t\t {\r\n var pos = $scope.localVars.pageList.map(function(e) { return e.id; }).indexOf($scope.menuItem.s_menus_Target_id); \r\n if (pos>=0){\r\n $scope.menuItem.Target = $scope.localVars.pageList[pos];\r\n }\r\n }\r\n\t\t\t \r\n $scope.getUsersGroups4menu= function(menuId)\r\n\t\t\t {\r\n\t\t\t\t$scope.menuItem.UsersGroupsDownloaded = false;\r\n //var menuId = $scope.menuItem.s_menus_id;\r\n if (menuId!=null) {\r\n\t\t\t\t\t MenuService.getUsersGroupsForMenu(menuId,lang).then(\r\n\t\t\t\t\t\t\tfunction(data) {\r\n\t\t\t\t\t\t\t $scope.menuItem.Users = data.Users;\r\n\t\t\t\t\t\t\t $scope.menuItem.Groups = data.Groups;\r\n\t\t\t\t\t\t\t $scope.menuItem.UsersGroupsDownloaded = true;\r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t},function(error){ \r\n\t\t\t\t\t\t\t MessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t\t});\r\n } else \r\n\t\t\t\t\t$scope.menuItem.UsersGroupsDownloaded = true; \r\n }\r\n \r\n\t\t\t \r\n\t\t\t \r\n $scope.localVars.getPages = function()\r\n {\r\n\t\t\t\tResourcesDataService.getResourceDefListByType(lang,'page').then(\r\n\t\t\t\t\tfunction(data) {\r\n\t\t\t\t\t\t $scope.localVars.pageList = data.data;\r\n\t\t\t\t\t\t $scope.localVars.pagesLoaded=true;\r\n\t\t\t\t\t\t $scope.localVars.setPage();\r\n\t\t\t\t\t\t if (! $scope.menuItem?.UsersGroupsDownloaded) \t$scope.getUsersGroups4menu( $scope.menuItem.s_menus_id );\r\n\t\t\t\t\t},function(error){ \r\n\t\t\t\t\t\tMessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t});\r\n }\r\n\t\t\t \r\n \r\n\t\t\tResourcesDataService.GetPublishedResourcesByTypeId($scope.menuItem.s_menus_Target,'form').then(\r\n function (data) { \r\n\t\t\t\t\t$scope.localVars.selectedResourcesPublishedList={}\r\n $scope.localVars.selectedResourcesPublishedList[$scope.menuItem.s_menus_Target] = data.data;\r\n\r\n if (! $scope.menuItem.s_menus_SelectVersionDirect){\r\n let published = $scope.localVars.selectedResourcesPublishedList[$scope.menuItem.s_menus_Target][$scope.localVars.selectedResourcesPublishedList[$scope.menuItem.s_menus_Target].length-1] \r\n }\r\n\t\t\t\t\t\r\n\t\t\t\t\tif ($scope.menuItem.s_menus_SelectVersionDirect){ // fill 'select version' options to have both id and name (when there is saved data)\r\n\t\t\t\t\t\t let publishedList = $scope.localVars.selectedResourcesPublishedList[$scope.menuItem.s_menus_Target] \r\n\t\t\t\t\t\t publishedList.forEach( (item)=> {\r\n\t\t\t\t\t\t\t if (item.Version == $scope.menuItem.s_menus_TargetPageVersion) \r\n\t\t\t\t\t\t\t\t $scope.menuItem.selectedPublishedResource = item\r\n\t\t\t\t\t\t } )\r\n\t\t\t\t\t \r\n\t\t\t\t\t}\r\n \r\n\t\t\t\t\t //if (!$scope.menuItem.SelectVersionDirect || (initial_load && $scope.menuItem.SelectVersionDirect)){\r\n\t\t\t\t\t // scope.localVars.relatedResourcesColumns[$scope.menuItem.s_menus_Target] = [] \r\n\t\t\t\t\t // }\r\n } \r\n\t\t\t ,function(error){ \r\n MessagingService.addMessage(error.msg,'error'); \r\n\t\t\t});\r\n\t\t\t \r\n\t\t\t \r\n $scope.saveSideMenu = function()\r\n { \r\n $scope.menu_service.saveMenu($scope.menu_service.selectedSideMenu,lang).then(\r\n\t\t\t\t\tfunction(data) {\r\n if ($scope.menu_service.selectedSideMenu.s_menus_id == null || $scope.menu_service.selectedSideMenu.s_menus_id==undefined) {\r\n $scope.menu_service.setSelectedSidemenu(data.data,lang);\r\n $scope.menu_service.addNewSideMenuToNavbar($scope.menu_service.selectedSideMenu);\r\n }\r\n\t\t\t\t\t\t\telse {\r\n $scope.menu_service.selectedSideMenu = data.data; \r\n }\r\n\t\t\t\t\t\t\t\r\n $scope.menu_service.updateNavbarSelectedSideMenu();\r\n MessagingService.addMessage(data.msg,'success');\r\n },\r\n\t\t\t\t\tfunction(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n };\r\n \r\n \r\n \r\n $scope.localVars.getPages(); \r\n $scope.localVars.menuLoaded = true;\r\n\t\t\t\r\n $scope.$watch('menu_service.selectedSideMenu',function(newValue,oldValue){\r\n if (newValue!=oldValue) {\r\n $scope.menuItem=$scope.menu_service.getSelectedSidemenu();\r\n }\r\n });\r\n\t\t\t \r\n },\r\n link: function (scope, elem, attrs) {\r\n \r\n \r\n }\r\n }\r\n \r\n};\n'use strict';\n\nexport function multipleList (){ \n return {\n require: 'ngModel',\n link: function(scope, elem, attr,ngModel) {\n \n //MIGOR START\n scope.search=[\n\t\t\t\t{id:1,filter:'onlist',name:\"On list:\",icon:\"fa fa-chevron-right\"},\n\t\t\t\t{id:2,filter:'notonlist',name:\"Not on list:\",icon:\"fa fa-expand\"},\n ];\n\t\t\t\t\n // if (scope.fd!=undefined) scope.fd.search=scope.search[0]; //MIGOR TODO - greska kod incijacije za multiple , mozda treba kod promjene na multiple ovo jos jednom okinuti\n \n //MIGOR END\n var lenList = attr.multipleList;\n scope.doneBlur = false;\n if (lenList == undefined)\n {\n lenList = 0;\n }\n \n scope.updateValues=function(){\n if (scope.fd!=undefined)\n {\n if (scope.formData[0]['Field'+scope.fd.itemId]==undefined || scope.formData[0]['Field'+scope.fd.itemId]==null)\n {\n \n scope.formData[0]['Field'+scope.fd.itemId]=[];\n \n }\n scope.$select.selectedItemsMultipleList= scope.formData[0]['Field'+scope.fd.itemId];\n \n if (scope.formData[0]['Field'+scope.fd.itemId].length>0)\n {\n scope.fd.search.value=scope.formData[0]['Field'+scope.fd.itemId]; //MIGOR\n }\n }else\n {\n scope.$select.selectedItemsMultipleList=scope.selectedItems;\n \n }\n \n };\n \n // scope.updateValues();\n \n scope.$watch('selectedItems', function(){\n \n scope.updateValues();\n\n });\n \n /*function for multiple list START ILJ*/\n scope.removeItemFromList = function(index){\n \n if (scope.formData[0]['Field'+scope.fd.itemId]!=undefined)\n {\n scope.formData[0]['Field'+scope.fd.itemId].splice(index,1);\n }else\n {\n \n scope.selectedItems.splice(index,1);\n }\n scope.checkValidity(); \n if (scope.fd!=undefined) scope.fd.search.value=scope.formData[0]['Field'+scope.fd.itemId]; //MIGOR\n \n\n };\n \n \n scope.addItemToList = function(item) {\n \n if (item!=null)\n {\n var pos;\n if (scope.formData[0]['Field'+scope.fd.itemId]!=undefined)\n {\n pos = scope.formData[0]['Field'+scope.fd.itemId].map(function(e) { return e.id; }).indexOf(item.id);\n \n if (pos<0){\n \n scope.formData[0]['Field'+scope.fd.itemId].push(angular.copy(item));\n \n \n \n }\n }else\n {\n if (scope.selectedItems==undefined) scope.selectedItems = [];\n pos = scope.selectedItems.map(function(e) { return e.id; }).indexOf(item.id);\n \n if (pos<0){\n \n scope.selectedItems.push(angular.copy(item));\n \n \n }\n }\n if (scope.doneBlur)\n {\n scope.checkValidity(); \n }\n if (scope.fd!=undefined) scope.fd.search.value=scope.formData[0]['Field'+scope.fd.itemId]; //MIGOR\n }\n \n\n };\n scope.checkValidity = function(){\n scope.doneBlur = true;\n var valid;\n if (scope.fd!=undefined)\n {\n valid = (!scope.fd.required) || (scope.formData[0]['Field'+scope.fd.itemId].length >= lenList);\n }else\n {\n valid = (!scope.required) || (scope.selectedItems.length >= lenList);\n }\n ngModel.$setValidity('multipleList', valid);\n \n };\n /*function for multiple list END*/ \n }\n };\n};\n'use strict';\r\n\r\nexport function ktNavbarDefinition() {\r\n \r\n return {\r\n restrict: 'A',\r\n templateUrl: 'ktdirectivetemplates/ktNavbarDefinition.html',\r\n scope: {\r\n navbarItem:'=',\r\n localVars:'='\r\n },\r\n controller: function($scope,$rootScope,$timeout,MenuService,CodesService,MessagingService,ResourcesDataService){\r\n \r\n $scope.CTRL=\"ktNavbarDefinition\"\r\n \r\n let lang = $rootScope.globals.currentUser.lang;\r\n var curUser=$rootScope.globals.currentUser\r\n\r\n if ($scope.localVars==undefined) $scope.localVars={};\r\n $scope.menu_service=MenuService;\r\n \r\n if ($scope.navbarItem==undefined) { \r\n $scope.navbarItem=$scope.menu_service.getSelectedNavbar(); \r\n }\r\n \r\n if ($scope.navbarItem.Users == undefined) $scope.navbarItem.Users=[]\r\n if ($scope.navbarItem.Groups == undefined) $scope.navbarItem.Groups=[]\r\n \r\n $scope.selectedUsers = $scope.navbarItem.Users\r\n $scope.selectedGroups = $scope.navbarItem.Groups\r\n \r\n $scope.headerLabel=\"Grant access to navigation\";\r\n $scope.usersLabel=\"Users\";\r\n $scope.groupsLabel=\"Groups\";\r\n \r\n $scope.getUsersGroups= function()\r\n\t\t\t {\r\n\t\t\t\t\tvar menuId = $scope.navbarItem.s_menus_id;\r\n\t\t\t\t\tif (menuId!=null) {\r\n\t\t\t\t\t MenuService.getUsersGroupsForMenu(menuId,lang).then(\r\n\t\t\t\t\t\t\tfunction(data) {\r\n\t\t\t\t\t\t\t\t $scope.navbarItem.Users = data.Users;\r\n\t\t\t\t\t\t\t\t $scope.navbarItem.Groups = data.Groups; \r\n\t\t\t\t\t\t\t\t $scope.selectedUsers = $scope.navbarItem.Users //needed for selectUsers widget\r\n\t\t\t\t\t\t\t\t $scope.selectedGroups = $scope.navbarItem.Groups //needed for selectGroups widget\r\n\t\t\t\t\t\t\t\t $scope.navbarItem.UsersGroupsDownloaded = true; \r\n\t\t\t\t\t\t\t},function(error){ \r\n\t\t\t\t\t\t\t\tMessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t });\r\n\t\t\t\t\t} else $scope.navbarItem.UsersGroupsDownloaded = true;\r\n }\r\n \t\r\n\t\t\t\r\n\t\t\tResourcesDataService.GetPublishedResourcesByTypeId($scope.navbarItem.s_menus_Target,'form').then(\r\n\t\t\t\t\tfunction (data) { \r\n\t\t\t\t\t\t$scope.localVars.selectedResourcesPublishedList={}\r\n\t\t\t\t\t\t$scope.localVars.selectedResourcesPublishedList[$scope.navbarItem.s_menus_Target] = data.data;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// fill 'select version' options to have both id and name (for already saved data)\r\n\t\t\t\t\t\tif ($scope.navbarItem.s_menus_SelectVersionDirect){ \r\n\t\t\t\t\t\t\t let publishedList = $scope.localVars.selectedResourcesPublishedList[$scope.navbarItem.s_menus_Target] \r\n\t\t\t\t\t\t\t publishedList.forEach( (item)=> {\r\n\t\t\t\t\t\t\t\t if (item.Version == $scope.navbarItem.s_menus_TargetPageVersion) \r\n\t\t\t\t\t\t\t\t\t $scope.navbarItem.selectedPublishedResource = item\r\n\t\t\t\t\t\t\t } ) \r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},function(error){ \r\n\t\t\t\t\t\tMessagingService.addMessage(error.msg,'error'); \r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t\r\n $scope.localVars.setPage = function() {\r\n var pos = $scope.localVars.pageList.map(function(e) { return e.id; }).indexOf($scope.navbarItem.s_menus_Target_id);\r\n if (pos>=0){\r\n $scope.navbarItem.Target = $scope.localVars.pageList[pos];\r\n }\r\n }\r\n\r\n\r\n $scope.localVars.getPages = function() {\r\n ResourcesDataService.getResourceDefListByType(lang,'page').then(\r\n function(data) {\r\n $scope.localVars.pageList = data.data;\r\n $scope.localVars.pagesLoaded=true;\r\n $scope.localVars.setPage(); \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n \r\n $scope.localVars.getPages()\r\n\r\n //TODO - vidjeti jel ovo dole treba\r\n if ($scope.selectedUsers==undefined || $scope.selectedGroups==undefined) $scope.getUsersGroups(); \r\n \r\n \r\n $scope.$watch('menu_service.selectedNavbar',function(newValue,oldValue){\r\n if (newValue!=oldValue) {\r\n $scope.navbarItem=$scope.menu_service.getSelectedNavbar();\r\n $scope.localVars.setPage()\r\n }\r\n });\r\n \r\n $scope.$watch('selectedUsers',function(newValue,oldValue){\r\n let a= newValue\r\n // debugger\r\n });\r\n \r\n $scope.$watch('navbarItem',function(newValue,oldValue){\r\n let a= newValue\r\n $scope.localVars.setPage()\r\n\r\n });\r\n \r\n $scope.Cancel = function() {\r\n $scope.menu_service.navbarSelected = false; \r\n }; \r\n \r\n $scope.saveNavbar = function(form) {\r\n //debugger; //saveNavbar\r\n if (form.$valid) $scope.menu_service.saveMenu($scope.menu_service.selectedNavbar,lang).then(\r\n\t\t\t\t\tfunction(data) { \r\n if ($scope.menu_service.selectedNavbar.s_menus_id == 0 || $scope.menu_service.selectedNavbar.s_menus_id == null || $scope.menu_service.selectedNavbar.s_menus_id==undefined) {\r\n $scope.menu_service.selectedNavbar = data.data;\r\n $scope.currentNavbarId = $scope.menu_service.selectedNavbar.s_menus_id;\r\n $scope.menu_service.selectedNavbar.SideMenus = [];\r\n $scope.menu_service.navbarItems.push(angular.copy($scope.menu_service.selectedNavbar));\r\n $scope.menu_service.setCurrentNavbarId($scope.currentNavbarId,lang); \r\n } else {\r\n $scope.menu_service.selectedNavbar = data.data;\r\n $scope.currentNavbarId = $scope.menu_service.selectedNavbar.s_menus_id; \r\n }\r\n \r\n\t\t\t\t\t\tMessagingService.addMessage(data.msg,'success');\r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t},function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n };\r\n \r\n $scope.localVars.navbarLoaded = true;\r\n\t\t\t \r\n }, //controller\r\n \r\n link: function (scope, elem, attrs) { \r\n }\r\n }\r\n \r\n};\n'use strict';\n\nexport function ktNotificationList () {\n \n var controller = ['$scope', '$uibModal','$stateParams','$timeout','CodesService','ResourcesDataService','$rootScope','ProcessingService','WidgetDataExchangeService','GridsterService','MessagingService','CODES_CONST','TaskDataService',\n function ($scope,$uibModal,$stateParams,$timeout,CodesService,ResourcesDataService,$rootScope,ProcessingService,WidgetDataExchangeService,GridsterService,MessagingService,CODES_CONST,TaskDataService) {\n \n \n \n $scope.localVars={};\n $scope.localVars.datasetMapperType=0;\n $scope.localVars.src_type_text=CODES_CONST._POPULATE_TYPE_; \n $scope.localVars.searchFormDownloaded = false;\n $scope.localVars.showSearchFilters=true;\n $scope.localVars.resourceDataDownloaded = true;\n $scope.taskId=$scope.resourceDefinition.ResourceDefId;\n if ($scope.taskId==undefined) $scope.taskId=$scope.resourceDefinition.ResourceDefId_id;\n if ($scope.taskId==undefined) $scope.taskId=0\n $scope.localVars.taskId=$scope.taskId;\n $scope.localVars.widgetType = 4;\n \n $scope.localVars.parentDatasetDefId=$scope.fd.related;\n $scope.localVars.animationsEnabled = true;\n $scope.localVars.gridsterType=\"resource\";\n \n\n $scope.localVars.dashboard = {\n \t\t\t\tid: '1',\n \t\t\t\tname: 'Home',\n \t\t\t\twidgets: GridsterService.getEmptyDatasetForm()\n\t\t\t\t} ;\n \n \n $scope.localVars.gridOptionsResourceData = {\n // columnDefs: colDefs,\n enableGridMenu: true,\n showGridFooter: true,\n showColumnFooter: true,\n enableRowSelection: true,\n multiSelect: $scope.fd.multiline,\n // enableHorizontalScrollbar : 1,\n // enableVerticalScrollbar : 2,\n enableFiltering: true,\n enableRowHeaderSelection: true,\n enableColumnResizing: true,\n enableColumnReordering: true,\n useExternalPagination: true,\n paginationPageSizes: [10, 25, 50,100,200,500,1000],\n enablePaginationControls: false,\n };\n\n var paginationOptions = {\n pageNumber: 1,\n pageSize: 10,\n sort: null\n };\n \n \n $scope.localVars.gridOptionsRelated = {\n // columnDefs: colDefs,\n enableGridMenu: true,\n showGridFooter: true,\n showColumnFooter: true,\n enableRowSelection: false,\n multiSelect: false,\n enableHorizontalScrollbar : 2, \n nableVerticalScrollbar : 2,\n enableFiltering: true,\n enableRowHeaderSelection: true,\n enableColumnResizing: true,\n minRowsToShow: 2,\n \n }\n \n $scope.taskId=$scope.resourceDefinition.ResourceDefId;\n if ($scope.taskId==undefined) $scope.taskId=$scope.resourceDefinition.ResourceDefId_id;\n if ($scope.taskId==undefined) $scope.taskId=0;\n \n //$scope.fd.populateType=1;\n $scope.fd.parentDatasetDefId=$scope.fd.related;\n $scope.prevTaskExeId = $scope.resourceDefinition.prev_task_id;\n $scope.localVars.formType=$scope.resourceDefinition.form_type;\n $scope.localVars.source_type=$scope.resourceDefinition.source_type;\n $scope.taskInitiateId = $scope.resourceDefinition.task_initiate_id;\n $scope.taskExecuteId = $scope.resourceDefinition.task_execute_id;\n $scope.formDefinition = $scope.resourceDefinition.form_definition;\n if ($scope.formDefinition==undefined)\n {\n \n $scope.formDefinition = false;\n }\n \n \n \n \n if ($scope.taskInitiateId==undefined)\n {\n $scope.taskInitiateId =0;\n \n }\n if ($scope.taskExecuteId==undefined)\n {\n $scope.taskExecuteId =0;\n \n }\n if ($scope.prevTaskExeId==undefined)\n {\n $scope.prevTaskExeId =0;\n }\n \n $scope.localVars.resourceRecordId = 0;\n $scope.fd.parentElementId = 0;\n \n \n \n var out_fields = ['resourceRecordId']\n //resourceLink\n var widgetDefinition = {DEI: [{'name':'resourceLinkDatasetList','value':[{name:'resourceId',value:$scope.fd.related},{name:'resourceRecordId',value:''}]}],actions: [{name:'PrepareData',status:false}],name: 'datasetListWidget',widgetId: $scope.fd.presentationId,taskId: $scope.lTaskId,\n resourceDefId : $scope.fd.related, //resourceDefId : $scope.selectedResource\n resourceRecordId:$scope.localVars.resourceRecordId,task_initiate_id:$scope.taskInitiateId,task_execute_id:$scope.taskExecuteId, output:out_fields };\n $scope.localVars.localWidgetId = WidgetDataExchangeService.registerWidget(widgetDefinition);\n $scope.localVars.localId=$scope.localWidgetId;\n \n \n $scope.localVars.gridOptionsResourceData.onRegisterApi = function (gridApi) {\n //set gridApi on scope\n $scope.localVars.gridApi = gridApi;\n \n gridApi.selection.on.rowSelectionChanged($scope,function(row){\n\n $scope.localVars.datasetRecordSelected=row.isSelected;\n if ($scope.localVars.datasetRecordSelected)\n {\n if (row.entity.id!=$scope.localVars.selectedDatasetRecordId)\n {\n $scope.localVars.selectedDatasetRecordId = row.entity.id;\n }\n }else\n {\n $scope.localVars.selectedDatasetRecordId = 0;\n \n }\n $scope.localVars.gridOptionsRelated.columnDefs=[];\n $scope.localVars.gridOptionsRelated.data=[];\n $scope.localVars.showGrid=false;\n $scope.localVars.prevTaskPackage ={resourceDefId:$scope.fd.related,records:gridApi.selection.getSelectedRows()}\n \n if (gridApi.selection.getSelectedRows().length>0)\n {\n //$rootScope.$broadcast('EventresourceLink'+$scope.fd.presentationId,$scope.selectedDatasetRecordId);\n WidgetDataExchangeService.setData({\n DEI: [{name:'resourceLinkDatasetList',value:[{name:'resourceId',value:$scope.fd.related},{name:'resourceRecordId',value:$scope.localVars.selectedDatasetRecordId}\n ,{name:'resourceRecordIds',value:gridApi.selection.getSelectedRows()},{name:'resourceRecordsAll',value:$scope.localVars.gridOptionsResourceData.data}]}],widgetId: $scope.fd.presentationId,task_execute_id:$scope.taskExecuteId});\n \n }\n \n });\n \n //external pagination\n gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {\n paginationOptions.pageNumber = newPage;\n paginationOptions.pageSize = pageSize;\n $scope.localVars.getResourceDataPaginated($scope.localVars.nextPage,$scope.localVars.previousPage,newPage,pageSize);\n });\n \n gridApi.selection.on.rowSelectionChangedBatch($scope,function(row){\n\n $scope.localVars.prevTaskPackage ={resourceDefId:$scope.fd.related,records:gridApi.selection.getSelectedRows()}\n \n });\n }\n \n \n $scope.localVars.ProcessSearchForm=function (form){\n \n if (form!=undefined){\n \t\t\t\t\tfor(var i=0;i=0){\n $scope.localVars.selectedResourceItem.id = $scope.localVars.datasetList[pos].id;\n $scope.localVars.selectedResourceItem.name = $scope.localVars.datasetList[pos].name;\n $scope.localVars.selectedDataset = $scope.localVars.datasetList[pos];\n $scope.localVars.selectedResourceItem.name_confirmed = $scope.localVars.selectedResourceItem.name +' ('+$scope.localVars.selectedResourceItem.id +')'\n $scope.localVars.selectedResourceItem_c=$scope.localVars.selectedResourceItem;\n }\n\t\t\t\t\t};\n \n // POPUNI LISTU DEFINICIJA OD RESURSA (RESOURCES LIST)\n $scope.localVars.getDatasets = function() {\n\t\t\t\t\t\t\n if ($scope.localVars.datasetList==undefined) $scope.localVars.datasetList=[];\n \n var lang=$rootScope.globals.currentUser.lang;\n ResourcesDataService.getResourceDefListByType(lang,'notification').then(\n\t\t\t\t\t\tfunction(data) {\n $scope.localVars.datasetList = data.data;\n if ($scope.fd.related!=null)\n {\n $scope.localVars.setSelectedDataset($scope.fd.related);\n \n } \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t },function(error){ \n MessagingService.addMessage(error.msg,'error');\n\t });\n\t}\n \n $scope.localVars.GetDatasetData=function(data)\n\n {\n\n fromWidget = data.widgetId;\n var allProcessed=true;\n var pos = $scope.localVars.childWidgets.map(function(e) { return e.widgetId; }).indexOf(fromWidget);\n //if (pos<0) $scope.fd.childWidgets.push({widgetId:fromWidget,processed:true});\n for (var i=0;i<$scope.localVars.childWidgets.length;i++)\n {\n \n if ($scope.localVars.childWidgets[i].widgetId == fromWidget) $scope.localVars.childWidgets[i].processed = true;\n if (!$scope.localVars.childWidgets[i].processed) allProcessed = $scope.localVars.childWidgets[i].processed;\n }\n // if (!$scope.SearchFormProcessed) $timeout(function() {$scope.GetDatasetData(fromWidget);},1000);\n if($scope.fd.autoSearch && allProcessed && $scope.localVars.SearchFormProcessed) {\n $scope.localVars.selectedResource=$scope.fd.related;\n $scope.localVars.getResourceColumns(true);\n \n }\n };\n \n if ($scope.localVars!=undefined) $scope.localVars.childWidgets = [];\n else $scope.localVars = {childWidgets : []};\n // $scope.uncaughtWidgets = [];\n var fromWidget=0;\n \n \n $scope.$on('SearchFormReady'+$scope.taskExecuteId,function(event, data){\n \n $scope.localVars.GetDatasetData(data); \n \n }); \n \n \n //**********************************************************\n\t// GET DATASET RELATED RECORDS\n\t//********************************************************** \n $scope.localVars.getDatasetRelatedRecords = function (relatedDatasetId,recordId,modelId) {\n \n \n var lang = $rootScope.globals.currentUser.lang;\n \n ResourcesDataService.getResourceDataRelated($scope.fd.related,recordId,relatedDatasetId,0,modelId,lang).then(function(data) {\n \n $scope.localVars.gridOptionsRelated.data = data.data;\n $scope.localVars.gridOptionsRelated.columnDefs = data.columnsDef;\n $scope.localVars.showGrid=true;\n // MessagingService.addMessage(data.msg,'success');\n },function(error){\n MessagingService.addMessage(error.msg,'error'); \n });\n };\n \n \n //**********************************************************\n\t// GET DATASET SINGLE RECORD\n\t//********************************************************** \n $scope.localVars.getDatasetSingleRecord = function (relatedDatasetId,recordId) {\n \n \n var lang = $rootScope.globals.currentUser.lang;\n \n ResourcesDataService.getResourceDataDirectFilter(relatedDatasetId,0,lang,{id: recordId}).then(function(data) {\n \n $scope.localVars.gridOptionsRelated.data = data.data;\n $scope.localVars.gridOptionsRelated.columnDefs = data.columnsDef;\n \n // MessagingService.addMessage(data.msg,'success');\n },function(error){\n MessagingService.addMessage(error.msg,'error'); \n });\n };\n \n $scope.$on('SearchFormReady'+$scope.taskExecuteId+$scope.fd.presentationId,function(event, data1){\n \n $scope.localVars.GetDatasetData(data1); \n \n });\n \n $scope.localVars.getFormResource = function(){ \n var lang=$rootScope.globals.currentUser.lang;\n if ($scope.fd.presentationId==null) {\n $scope.fd.presentationId = 0;\n }\n \n \n ResourcesDataService.getResourceFormExtendedWithData($scope.fd.related,$scope.taskInitiateId,$scope.taskExecuteId,$scope.fd.populateType,$scope.fd.parentElementId,$scope.fd.presentationId,$scope.prevTaskExeId,$scope.localVars.formType,$scope.localVars.widgetType,$scope.localVars.resourceRecordId,\"f\",lang).then(function(data) {\n \n $scope.localVars.resourceWidgetDefinition= data.data.resourceDefinition;\n \n \n $scope.localVars.selectedResourceItem_c = {'name':$scope.localVars.resourceWidgetDefinition.name,'id':$scope.fd.related,'relatedId':$scope.fd.related,'presentationId':$scope.fd.presentationId,'src_type_id':$scope.fd.populateType,'src_type_text':$scope.localVars.src_type_text[$scope.fd.populateType],'parentElementId':$scope.fd.parentElementId};\n \n \n $scope.fd.fItemValue=data.data.widgets;\n\n $scope.localVars.searchFormDownloaded = true;\n $scope.localVars.setField($scope.fd.fItemValue,'required',false);\n $scope.localVars.formLoaded=true;\n //prepare search form\n $scope.localVars.ProcessSearchForm($scope.fd.fItemValue);\n $scope.localVars.SearchFormProcessed = true;\n if ($scope.localVars.childWidgets.length>0)\n {\n WidgetDataExchangeService.registerSearch({widgetId:$scope.fd.presentationId,taskExecuteId:$scope.taskExecuteId,prevTaskExeId:$scope.prevTaskExeId,childWidgets:$scope.localVars.childWidgets});\n }\n else\n {\n $rootScope.$broadcast('SearchFormReady'+$scope.taskExecuteId,{widgetId:$scope.fd.presentationId});\n }\n $scope.localVars.dashboard.widgets.layout = data.data.widgets; \n $scope.formData[$scope.fd.presentationId] = data.data.form_data;\n $scope.fd.search = $scope.formData[$scope.fd.presentationId];\n \n },function(error){\n MessagingService.addMessage(error.msg,'error'); \n });\n \n };//getFormResource_END\n \n $scope.localVars.getFormResourceOriginal = function(){\n var lang=$rootScope.globals.currentUser.lang;\n if ($scope.fd.presentationId==null)\n {\n $scope.fd.presentationId = 0;\n \n }\n ResourcesDataService.getResourceForm($scope.fd.related,\"i\",lang).then(function(data) {\n \n $scope.localVars.resourceWidgetDefinition= data.data.resourceDefinition;\n $scope.localVars.dashboard.widgets.layout=data.data.widgets;\n $scope.localVars.selectedResourceItem_c = {'name':$scope.localVars.resourceWidgetDefinition.name,'id':$scope.fd.related,'relatedId':$scope.fd.related, 'presentationId':$scope.fd.presentationId ,'src_type_id':$scope.fd.populateType,'src_type_text':$scope.localVars.src_type_text[$scope.fd.populateType],'parentElementId':$scope.fd.parentElementId};\n \n \n $scope.fd.fItemValue=data.data.widgets;\n \n //MIGOR - bitno - DOBIO RESOURCERECORD-ID ZA BROADCAST - ADD_RESOURCE WIDGET\n WidgetDataExchangeService.setData({widgetId:$scope.fd.presentationId, DEI: [{'name':'resourceLink','value':[{name:'resourceId',value:$scope.fd.related},{name:'resourceRecordId',value:$scope.localVars.resourceRecordId}]}]});\n\t\t\t\t\t\t\n $scope.localVars.searchFormDownloaded = true;\n $timeout(function() {\n $scope.localVars.formLoaded=true;\n \n });\n },function(error){\n MessagingService.addMessage(error.msg,'error');\n \n });\n \n };\n \n $scope.localVars.datasetRecordSelected = false;\n $scope.localVars.selectedDatasetRecordId = 0;\n \n \n $scope.localVars.getResourceData = function () {\n\n // scope.activity.activityMessage = ProcessingService.setActivityMsg('Downloading resource data for '+scope.selectedResource);\n var lang = $rootScope.globals.currentUser.lang;\n $scope.localVars.resourceDataDownloading = true;\n if ($scope.localVars.pageSize==undefined) $scope.localVars.pageSize = paginationOptions.pageSize;\n ResourcesDataService.getResourceData($scope.localVars.selectedResource,$scope.taskId,lang).then(function(data) {\n \n $scope.localVars.gridOptionsResourceData.data = data.data;\n $scope.localVars.gridOptionsResourceData.columnDefs = data.columnsDef;\n $scope.localVars.restoreGridState();\n $scope.localVars.resourceDataDownloaded = true;\n \n },function(error){\n MessagingService.addMessage(error.msg,'error');\n \n });\n };\n\n\t\t \n //**********************************************************\n // GET RESOURCE DATA PAGINATED\n //********************************************************** \n $scope.localVars.getResourceDataPaginated = function (urlNext,urlPrev,newPage,pageSize) {\n \n \n $scope.localVars.resourceDataDownloaded = false; \n if (Math.ceil($scope.localVars.totalCount/pageSize)=0){\r\n $scope.fd.localVars.selectedResourceItem.id = $scope.fd.localVars.datasetList[pos].id;\r\n $scope.fd.localVars.selectedResourceItem.name = $scope.fd.localVars.datasetList[pos].name;\r\n $scope.fd.localVars.selectedDataset = $scope.fd.localVars.datasetList[pos];\r\n $scope.fd.localVars.selectedResourceItem.name_confirmed = $scope.fd.localVars.selectedResourceItem.name +' ('+$scope.fd.localVars.selectedResourceItem.id +')'\r\n $scope.fd.localVars.selectedResourceItem_c=$scope.fd.localVars.selectedResourceItem;\r\n }\r\n\t\t\t\t\t}\r\n \r\n \r\n // POPUNI LISTU DEFINICIJA OD RESURSA (RESOURCES LIST)\r\n\t\t\t\t\t$scope.fd.localVars.getDatasets = function() {\r\n\t\t\t\t\t\t\r\n if ($scope.fd.localVars.datasetList==undefined) $scope.fd.localVars.datasetList=[];\r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n ResourcesDataService.getResourceDefListByType(lang,'notification').then(\r\n\t\t\t\t\t\tfunction(data) {\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t $scope.fd.localVars.datasetList = data.data;\r\n if ($scope.fd.related!=null)\r\n {\r\n $scope.fd.localVars.setSelectedDataset($scope.fd.related);\r\n \r\n } \r\n\t\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t\t\t\t\t\t });\r\n\t\t\t\t\t}\r\n \r\n if ($scope.fd.related!=null && !$scope.formDefinition && !$scope.fd.localVars.searchFormDownloaded)\r\n {\r\n $scope.fd.localVars.getFormResourceWithData();\r\n // $scope.fd.localVars.getDatasets();\r\n // $scope.fd.localVars.setSelectedDataset($scope.fd.related);\r\n \r\n }else if ($scope.fd.related!=null)\r\n {\r\n $scope.fd.localVars.getFormResource();\r\n $scope.fd.localVars.getDatasets();\r\n //$scope.fd.localVars.setSelectedDataset($scope.fd.related);\r\n \r\n }\r\n \r\n \r\n }];\r\n\r\n return {\r\n restrict: 'A',\r\n templateUrl: 'ktdirectivetemplates/ktNotificationSendWidget.html',\r\n controller: controller,\r\n link: function (scope, elem, attrs) {\r\n\r\n \r\n \r\n // scope.resourceData = {};\r\n \r\n scope.fd.localVars.prepareResourceData = function(resourceRecordId){\r\n\r\n scope.fd.itemValue = ResourcesDataService.prepareResourceWidgetData(scope.fd.localVars.dashboard.widgets.layout,resourceRecordId);\r\n }\r\n \r\n scope.fd.localVars.processWidgetDependencies = function() { //----- ktUploader -----\r\n \r\n if (scope.fd.tItemValue!=undefined) \r\n for (var i=0;i< scope.fd.tItemValue.length;i++) {\r\n var linkedWidgetId=scope.fd.tItemValue[i].widgetId; // linkedWidgetId= WidgetDataExchangeService.getLocalWidgetId(linkedWidgetId);//MIGOR - moram dobiti localwidgetId od vezanog WidgetId \r\n var linkedItem = 'resourceLink' //var linkedItem = scope.fd.tItemValue[i].name;\r\n \r\n if (linkedWidgetId!=undefined && linkedWidgetId!=null ) {\r\n for (var j=0;j=0) $scope[$scope.fd.id]['fd'].localVars.search[i].name = filterList[pos].name\r\n }\r\n \r\n \r\n if ($scope.fd.Search===undefined || $scope.fd.Search===null) $scope.fd.Search=$scope.fd.localVars.search[3];//initialize to equals\r\n if ($scope.fd.Search) $scope.fd.Search.Value=$scope.formData[0][$scope.fd.FieldName]; \r\n\r\n $scope[$scope.fd.id]['fd'].localVars.filterReady=true\r\n }\r\n\r\n if ($scope.showSearchFilters || $scope.resourceDefinition.form_definition)\r\n {\r\n let lang=$rootScope.globals.currentUser.lang;\r\n CodesService.getCodesByName('search_filters',lang).then(function (data) {\r\n //debugger;\r\n //$scope.fd.localVars.processFilters(data.data)\r\n $scope[$scope.fd.id]['fd'].localVars.processFilters(data.data); \r\n });\r\n }\r\n\r\n let itemValue = null;\r\n if ($scope.formData!=undefined)\r\n {\r\n if (!$scope.formData.length) $scope.formData=[{}];\r\n itemValue=$scope.formData[0][$scope.fd.FieldName]\r\n \r\n }else $scope.formData=[{}];\r\n \r\n let itemValueState= $scope.ksm.addSubject($scope.resourceDefinition.page_state_id+'-numberValueStateName'+$scope.fd.PresentationId,itemValue);\r\n let itemValueStateName = itemValueState.subject.name;\r\n \r\n \r\n let value_changed = function(data)\r\n {\r\n itemValueState.subject.setStateChanges = data;\r\n itemValueState.subject.notifyObservers(\"valueChanged\");\r\n };\r\n \r\n let action_value_changed = $scope.ksm.addAction(itemValueState,\"valueChanged\",value_changed);\r\n \r\n $scope.on_blur_action=function()\r\n {\r\n \r\n $scope.ksm.executeAction(itemValueState,\"valueChanged\", $scope.formData[0][$scope.fd.FieldName]);\r\n //$scope.fd.DefaultValue = $scope.formData[0][$scope.fd.FieldName];\r\n };\r\n \r\n \r\n \r\n let apply_value = function(data) {\r\n if (data!=undefined) $scope.formData[0][$scope.fd.FieldName] = data;\r\n };\r\n \r\n if ($scope.fd?.Parameters?.DependentFieldId!=undefined && $scope.fd?.Parameters?.DependentFieldId!=null) \r\n {\r\n if ($scope.fd.Parameters.DependentFieldId!=\"\")\r\n {\r\n let dependent_field = \"Field\"+$scope.fd.PresentationId;\r\n let subscribedSubject = $scope.resourceDefinition.page_state_id+'-'+$scope.fd.Parameters.DependentFieldType+\"ValueStateName\"+$scope.fd.Parameters.DependentFieldId;\r\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",apply_value);\r\n let state = $scope.ksm.getState(subscribedSubject);\r\n if (state.status==\"ok\") $scope.formData[0][$scope.fd.FieldName] = state.state;\r\n }\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n $scope.fd.localVars.loadCounters = function()\r\n {\r\n \r\n \r\n\r\n if (!$scope.fd.localVars.counterList)\r\n {\r\n \r\n const lang=$rootScope.globals.currentUser.lang\r\n $scope.fd.localVars.countersLoaded=false\r\n let counterDefId = 0\r\n if ($scope.fd.Parameters.counterDefId?.id) counterDefId = $scope.fd.Parameters.counterDefId.id\r\n ResourcesDataService.getResourceDefListByTypeFilter(lang,'counter','',counterDefId).then(\r\n function(data) {\r\n \r\n $scope.fd.localVars.counterList = data.data;\r\n \r\n if (!Array.isArray($scope.fd.localVars.counterList)) $scope.fd.localVars.counterList=[]; \r\n \r\n \r\n //let pos = $scope.fd.localVars.countersList.map(function(e) { return e.id; }).indexOf($scope.fd.Parameters.counterDefId.id);\r\n\r\n //if (pos>=0) $scope.fd.selectedResource=$scope.fd.resourcesList[pos];\r\n \r\n \r\n $scope.fd.localVars.countersLoaded=true;\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n\r\n } \r\n\r\n \r\n } \r\n \r\n if ($scope.fd.Parameters.UseCounter) $scope.fd.localVars.loadCounters()\r\n \r\n $scope.fd.localVars.formatNumber = function(inputNumber)\r\n {\r\n \r\n let formatedNumber = \"\"\r\n\r\n if ($scope.formData.length && $scope.formData[0][$scope.fd.FieldName]!=undefined)\r\n {\r\n let NoOfDecimals = 0\r\n \r\n if ($scope.fd.MaxLength>0) NoOfDecimals = $scope.fd.MaxLength\r\n\r\n //if ($scope.fd.Parameters.UseFormat) \r\n\r\n if ($scope.fd.Dbtype!='integerfielddefinition') formatedNumber = inputNumber?.toLocaleString(navigator.language,{minimumFractionDigits:NoOfDecimals,maximumFractionDigits:NoOfDecimals});\r\n else formatedNumber=inputNumber?.toString()\r\n \r\n } \r\n\r\n return formatedNumber\r\n }\r\n \r\n \r\n \r\n $scope.fd.formatNumberBlockchain = function(input)\r\n {\r\n let formatedNumber;\r\n let web3;\r\n if ($scope.fd.Parameters.ConvertBlockchainFormat)\r\n {\r\n if (input!=undefined)\r\n {\r\n \r\n\r\n if (window.ethereum)\r\n {\r\n web3 = new Web3(window.ethereum);\r\n }else if (window.web3)\r\n {\r\n web3 = new Web3(window.web3);\r\n //console.log(web3);\r\n }\r\n \r\n else if ($rootScope.globals.currentUser.web3Infura)\r\n {\r\n web3 = new Web3($rootScope.globals.currentUser.web3Infura); \r\n } else\r\n {\r\n console.log('web3 provider not available');\r\n $scope.fd.WalletError = 'web3 provider not available';\r\n return input;\r\n }\r\n if ($scope.fd.Parameters.FromArray!=undefined) input = $scope.formData[0][$scope.fd.Parameters.SourceFieldName][$scope.fd.Parameters.FromArray];\r\n \r\n formatedNumber = web3.utils.fromWei(input.toLocaleString('fullwide', {useGrouping:false}), 'ether').toLocaleString(undefined,{minimumFractionDigits:$scope.fd.Parameters.NoOfDecimals,maximumFractionDigits:18});\r\n \r\n \r\n }else formatedNumber = input;\r\n }else formatedNumber=input;\r\n if ($scope.fd.Parameters.ConvertToDays) formatedNumber = formatedNumber/86400; \r\n return formatedNumber;\r\n }\r\n \r\n $scope.fd.localVars.formatNumber();\r\n let template;\r\n if ($scope.resourceDefinition.form_definition) template = $templateCache.get('ktdirectivetemplates/ktNumber.html');\r\n else template = $templateCache.get('ktdirectivetemplates/ktNumberExe.html');\r\n $element.append($compile(template)($scope)); \r\n \r\n \r\n if (itemValueState.subject.currentStateIndex>=0)\r\n {\r\n \r\n $scope.formData[0][$scope.fd.FieldName] = itemValueState.subject.getState;\r\n \r\n } \r\n \r\n if ($scope.formData[0][$scope.fd.FieldName]!=undefined) $scope.ksm.executeAction(itemValueStateName,\"valueChanged\", $scope.formData[0][$scope.fd.FieldName]);\r\n \r\n \r\n \r\n \r\n },\r\n \r\n link: function (scope, elem, attrs) {\r\n \r\n\t\t\t\tscope.isOpen=true;\r\n \r\n scope.refreshSearchValue = function() {\r\n if (scope.fd.Search) scope.fd.Search.Value=scope.formData[0][scope.fd.FieldName]\r\n }; \r\n \r\n \r\n \r\n \r\n scope.showProperties = function(event) {\r\n \t scope.gsrvc.setFieldProperties(scope.fd, scope.inputArray);// inputArray is parent\r\n };\r\n \r\n scope.applyNumFilters = function(index) {\r\n\t\t\t\t scope.fd.Search=scope.fd.localVars.search[index];\r\n if (scope.fd.Search && scope.formData!=undefined && scope.formData.length) {\r\n scope.fd.Search.Value=scope.formData[0][scope.fd.FieldName]; \r\n }\r\n if (scope.fd.Search.Value==undefined) scope.fd.Search.Value = \"\";\t\t\r\n };\r\n\r\n if (scope.fd.UpdateWithDefault && !scope.fd.NoUpdate) scope.formData[0][scope.fd.FieldName] = scope.fd.DefaultValue?.value\r\n \r\n }\r\n \r\n }\r\n};\n'use strict';\n\nexport function ktOutcomeActions () {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktOutcomeActions.html',\n controller: function($scope,dragularService){\n \n $scope.getSeqNoForNewAction = function(){\n var seqNo=0;\n for (var i=0;i<$scope.outcomes.length;i++) {\n \n seqNo = seqNo+$scope.outcomes[i].actions.length;\n \n }\n \n seqNo++; \n return seqNo;\n \n }\n \n $scope.actions = [\n {id1:1,type:1,name1:'Start task',taskId:null,actionParams:{}},\n {id1:2,type:2,name1:'Send notification',taskId:null,actionParams:{}}\n \n ];\n \n \n $scope.setupDragular = function(){\n \n setTimeout(function(){\n // var container = elem.children().eq(0).children().eq(0).children().eq(0).children().eq(2).children().eq(0).children().eq(0).children().eq(1).children().eq(0).children();\n var container = document.getElementsByClassName('outcomeActionsDragular');\n // var widgets =[$$scope.pTaskInitiateFormResources,$$scope.pTaskExecuteFormResources,$$scope.initiateFormResources,$$scope.selectedResource,$$scope.executeFormResources];\n \n dragularService(container,\n {\n // nameSpace: namespace ,\n copy: true,\n classes: {\n //mirror: 'gu-mirror-empty'\n },\n revertOnSpill: true,\n containersModel: $scope.actions,\n //direction:'vertical',\n // accepts: accepts,\n \n moves: function (el, container, handle) {\n return handle.classList.contains(\"element-drag-handle\");\n }\n \n }\n );\n }\n ); \n \n }\n \n $scope.setupDragular();\n },\n link: function (scope, elem, attrs) {\n \n \n \n /* \n scope.outcomeDefActionsOptions =\n \n {\n itemMoved: function (event) {\n event.dest.sortableScope.modelValue[event.dest.index].id = scope.getSeqNoForNewAction();\n },\n clone:true,\n }\n */\n \n \n \n }\n }\n};\n'use strict';\n\nexport function ktOutcomeDefList () {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktOutcomeDefList.html',\n scope:{\n task: '=',\n localVars: '=',\n fd: '=',\n },\n controller: function($scope,TaskDefinitionService,CodesService,MessagingService,TaskDataService,$rootScope,$timeout,dragulaService,GridsterService){\n \n $scope.parameters = {placeholder:'Select template to load',label:'Outcomes',name:'outcomes',selectedItem:$scope.task.TaskOutcomeHeadId,\n paddingLeft:true,hideLabel:true,dropdownSize:'col-lg-24'};\n $scope.showLoadFromTemplate ={};\n $scope.tds=TaskDefinitionService;\n $scope.outcomesDownloaded = false;\n $scope.localVars.outcomes=[];\n var lang=$rootScope.globals.currentUser.lang;\n \n $scope.gsrvc=GridsterService;\n \n $scope.setupDragula = function()\n {\n var widgetHandleResource = 'element-drag-handle';\n \n var bag = dragulaService.find($rootScope, 'bag-outcomes');\n if (!bag)\n {\n $scope.gsrvc.setupDragula('bag-outcomes','outcomesDragula',widgetHandleResource); \n }\n else\n {\n $scope.gsrvc.destroyDragula('bag-outcomes');\n $scope.gsrvc.setupDragula('bag-outcomes','outcomesDragula',widgetHandleResource); \n \n }\n }; \n \n \n TaskDataService.GetTaskOutcomesDef(lang).then(function(data) {\n \n $scope.outcomeCodes = data.data;\n if ($scope.task.TaskOutcomeHeadId!=null)\n {\n \n var pos = $scope.outcomeCodes.map(function(e) { return e.id; }).indexOf($scope.task.TaskOutcomeHeadId);\n if (pos>-1) {\n $scope.parameters.selectedItem = $scope.outcomeCodes[pos];\n $scope.selectedOutcomeId=$scope.parameters.selectedItem.id;\n \n \n }\n $scope.GetOutcomes(); \n \n \n } \n \n },function(error){\n \n MessagingService.addMessage(error.msg,'error');\n }\n );\n \n \n $scope.showoutcomedetails= function(outcome,index,showLoadFromTemplate){\n //transfer child $scope parameters to parents \n $scope.showLoadFromTemplate=showLoadFromTemplate;\n $scope.clickedOutcome = outcome;\n $scope.selectedOutcomeIndex=index\n $scope.showConfirmRemoveOutcome = false;\n $scope.setupDragula();\n };\n \n $scope.selectOutcome= function(outcome){\n $scope.localVars.selectedButton.outcome=outcome;\n \n };\n \n \n $scope.selectedOutcome = function(item,model){\n $scope.parameters.selectedItem = item;\n $scope.selectedOutcomeId=item.id;\n } \n $scope.removeAction = function(index){\n //$scope.task.TaskOutcomeCodeId = null;\n $scope.clickedOutcome.actions.splice(index,1);\n }\n \n $scope.removeOutcome = function(index){\n //$scope.task.TaskOutcomeCodeId = null;\n $scope.localVars.outcomes.splice(index,1);\n }\n \n \n \n $scope.isSelectedOutcome = function(index) {\n // if ($scope.selectedIndex==index) return true;\n //return false;\n if ($scope.selectedOutcomeIndex==index ) return true;\n return false;\n \n };\n \n \n $scope.localVars.promjenioOutcome = function (index,isSelected) {\n //debugger //promjenioOutcome \n\n isSelected = isSelected[$scope.localVars.selectedButtonIndex]\n \n if (isSelected[index] == true) {\n for (let key in isSelected) {\n isSelected[key]=false\n } \n\n isSelected[index] = true\n \n $scope.localVars.selectedOutcomeIndex = index\n } else \n $scope.localVars.selectedOutcomeIndex = null\n }\n \n \n \n $scope.addOutcomeItem = function(newItem){\n \n if (newItem!=undefined && newItem!=null) {\n $scope.localVars.outcomes.push(newItem);\n }else {\n // $timeout(function(){ //MIGOR -može se maknuti timeout\n $scope.localVars.outcomes.push({id1:null,name1:null,outcomeName:null,icon:null,btnName:'*New Outcome*',btnClass:null,actions:[]});\n $scope.selectedOutcomeIndex= $scope.localVars.outcomes.length-1;\n $scope.clickedOutcome=$scope.localVars.outcomes[$scope.selectedOutcomeIndex];\n $scope.showLoadFromTemplate[$scope.selectedOutcomeIndex]=true;\n //});\n };\n \n //$timeout(function(){ //MIGOR -može se maknuti timeout\n $scope.showoutcomedetails( $scope.localVars.outcomes[$scope.localVars.outcomes.length-1], $scope.localVars.outcomes.length-1, $scope.showLoadFromTemplate);\n // });\n \n \n // vidjeti da li ovo dole ima funkciju \n // if ($scope.parameters.selectedItem) delete $scope.parameters.selectedItem; //reset selected item\n }\n \n $scope.GetOutcomes = function(){\n \n var lang=$rootScope.globals.currentUser.lang; \n var outcomeId = 0 /*MIGOR provjeriti jos*/ \n // if ($scope.parameters.selectedItem!=undefined) { /*MIGOR provjeriti jos*/ \n // outcomeId = $scope.parameters.selectedItem.id; \n // }\n if ($scope.task.TaskOutcomeHeadId !=undefined) outcomeId = $scope.task.TaskOutcomeHeadId;\n \n \n $scope.loadingActions=true; \n if (!$scope.outcomesDownloaded)\n { \n TaskDataService.GetTaskOutcomes( $scope.task.ResourceDefId,outcomeId,lang).then(function(data) { \n \n $scope.localVars.outcomes = data.data;\n //$scope.task.TaskOutcomeHeadId = $scope.parameters.selectedItem.id;\n //$scope.selectedOutcomeId=$scope.parameters.selectedItem.id;\n $scope.outcomesDownloaded = true;\n $scope.loadingActions=false; \n // if ($scope.localVars.outcomes.length>0) $scope.showoutcomedetails($scope.localVars.outcomes[0],0,$scope.showLoadFromTemplate); //show first available outcome (if any)\n \n },function(error){\n $scope.loadingActions=false; \n MessagingService.addMessage(error.msg,'error');\n });\n }\n else\n {\n $scope.loadingActions=false; \n }\n \n }//GetOutcomes\n \n //**********************************************************\n // SAVE TASK OUTCOMES\n //********************************************************** \n $scope.localVars.saveTaskOutcomes = function(){\n \n //check for errors\n var saveTaskOutcomesErrors=[];\n if (!$scope.task.InfiniteTask)\n {\n for(var i=0;i<$scope.localVars.outcomes.length;i++){\n if ($scope.localVars.outcomes[i].outcomeName==null) \n saveTaskOutcomesErrors.push('Outcome name must be defined!');\n }\n if ($scope.localVars.outcomes.length==0)\n saveTaskOutcomesErrors.push(\"Outcome must be defined!\");\n }\n \n if (saveTaskOutcomesErrors.length>0) \n MessagingService.addMessage(saveTaskOutcomesErrors,'error');\n else \n { // NO ERRORS\n \n var lang=$rootScope.globals.currentUser.lang;\n \n //ako ne postoji outcomeHead a ima podataka onda kreiramo novi outcomeHead \n if (($scope.task.TaskOutcomeHeadId == null || $scope.task.TaskOutcomeHeadId==undefined || $scope.task.TaskOutcomeHeadId==0))\n {\n if ($scope.localVars.outcomes.length>0) {\n \n $scope.OutcomeHead = {Active:true,id:null};\n $scope.OutcomeHead.Lang = lang;\n $scope.OutcomeHead.OutcomeName=\"OutcomeTask\"+$scope.task.ResourceDefId;\n $scope.OutcomeHead.Name=\"OutcomeTask\"+$scope.task.ResourceDefId;\n \n TaskDataService.SaveOutcomeDefinition($scope.OutcomeHead).then(function(data) {\n \n $scope.task.TaskOutcomeHeadId=data.data.data.id;\n MessagingService.addMessage(data.data.msg,'success'); \n $scope.saveTaskOutcomesFinalize();\n \n },function(error){ \n MessagingService.addMessage(error.msg,'error');\n }); \n }\n \n } //ako već postoji outcomehead onda samo snimamo outcome \n else $scope.saveTaskOutcomesFinalize();\n }\n };\n \n\n $scope.saveTaskOutcomesFinalize = function(){\n \n var outcomes = {outcomeId: $scope.task.TaskOutcomeHeadId, defaultOutcomeId:$scope.task.DefaultOutcomeId, outcomes:$scope.localVars.outcomes};\n //TODO - nekad je ResourceDefId_id a nekad ResourceDefId !!\n TaskDataService.SaveTaskOutcomes($scope.task.ResourceDefId_id || $scope.task.ResourceDefId,!$scope.task.InfiniteTask,outcomes,lang).then(function(data) {\n \n $scope.localVars.outcomes.outcomeCodesDetails = data.data;\n $scope.localVars.outcomes.selectedOutcomeIndex=-1;\n MessagingService.addMessage(data.msg,'success');\n \n \n },function(error){\n \n MessagingService.addMessage(error.msg,'error');\n });\n \n }\n \n \n $scope.GetAllOutcomes = function(){\n \n var lang=$rootScope.globals.currentUser.lang; \n TaskDataService.GetTaskOutcomes(0,0,lang).then(function(data) { \n \n for(var i=0;i0) {\r\n $scope.dashboard={widgets:{layout:resourceFormData.widgets}}\r\n }else {\r\n $scope.dashboard = {widgets:{layout:angular.copy($scope.resourceDefinition.ResourceExtended.DefaultForm)}}\r\n }\r\n \r\n $scope.resourceVersion = $scope.resourceDefinition.Version;\r\n \r\n $scope.gsrvc.setResourceFormVersion($scope.resourceDefinition.id,{Version:$scope.resourceVersion}); \r\n\r\n $scope.resourceDefinition.formParams={formViewType:1,showGridNavigation:false};\r\n \r\n \r\n $scope.formLoaded=true;\r\n $scope.formFromServerLoaded = true;\r\n $scope.ShowFormView($scope.resourceDefinition.formParams.formViewType,false);\r\n \r\n \r\n },function(error){\r\n \r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n \r\n });\r\n \r\n };\r\n \r\n $scope.localVars.getResourceForm()\r\n\r\n $scope.get_published_resource_forms=function(){ \r\n ResourcesDataService.GetPublishedResources($scope.resource.uid).then(function (data) { \r\n $scope.localVars.publishedResources = data.data;\r\n });\r\n }\r\n $scope.get_published_resource_forms();\r\n \r\n\r\n $scope.newVersion = function()\r\n {\r\n $scope.creatingNewVersion=true\r\n ResourcesDataService.SetNewResourceVersion($scope.resourceId)\r\n .then(function(data) {\r\n if (data.status==200)\r\n {\r\n \r\n $scope.resourceDefinition.NewVersion = data.data\r\n $scope.resourceDefinition.Published=false\r\n $scope.formVersion = {NewVersion:data.data,Published:false}\r\n $scope.gsrvc.setResourceFormVersion($scope.resourceDefinition.id,$scope.formVersion);\r\n }else MessagingService.addMessage(data.data,'error');\r\n $scope.creatingNewVersion=false\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.creatingNewVersion=false\r\n \r\n });\r\n\r\n };\r\n \r\n //**********************************************************\r\n // SHOW MODAL\r\n //**********************************************************\r\n $scope.showModal = function (p_type) {\r\n //POST publish-resource , resource_id, version i description\r\n //$scope.saveModal=true;\r\n $('#pagePublish').modal('show'); \r\n $scope.modalAction=p_type\r\n $scope.newPublishVersion = $scope.resourceDefinition.NewVersion\r\n\r\n \r\n }\r\n //**********************************************************\r\n // SAVE TASK FORM DEFINITION\r\n //**********************************************************\r\n \r\n $scope.saveForm = function (isValid) {\r\n \r\n if (isValid)\r\n {\r\n $scope.activity.activityMessage = ProcessingService.setActivityMsg('Saving page form for '+$scope.resourceId);\r\n $scope.savingForm = true;\r\n \r\n ResourcesDataService.saveResourceForm($scope.dashboard.widgets.layout,$scope.resourceId,$scope.formType,$scope.localVars.newDescription).then(function(data) {\r\n \r\n MessagingService.addMessage(data.data.msg,data.data.msgType);\r\n $scope.formVersion= {Version:data.data.version}\r\n $scope.resourceDefinition.FormVersion=$scope.formVersion\r\n \r\n if (data.data.has_changes) \r\n {\r\n $scope.resourceDefinition.Published=true\r\n $scope.formVersion.Published=true\r\n $scope.resourceDefinition.Version = $scope.formVersion.Version\r\n $scope.gsrvc.setFieldPropertiesOpened(false)\r\n }\r\n\r\n $scope.gsrvc.setResourceFormVersion($scope.resourceDefinition.id,$scope.formVersion); \r\n $scope.ksm.executeAction(formDefinitionStateName,\"formSaved\",data.data.new_items);\r\n\r\n $scope.savingForm = false;\r\n \r\n \r\n if (data.data.formData.length>0) {\r\n $scope.dashboard={widgets:{layout:data.data.formData}}\r\n \r\n \r\n } \r\n\r\n $scope.formLoaded=true;\r\n $scope.formFromServerLoaded = true;\r\n \r\n $('#pagePublish').modal('hide') \r\n\r\n // $scope.ShowFormView($scope.resourceDefinition.formParams.formViewType,false);\r\n \r\n \r\n },function(error){\r\n \r\n $scope.savingForm = false;\r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n \r\n \r\n }\r\n }\r\n \r\n \r\n $scope.$on('CtrlPBPressed',function(event,data){\r\n \r\n var key=data;\r\n if (key=='b' || key=='B')\r\n {\r\n if ($scope.resourceDefinition.formParams.formViewType!=1) $scope.ShowFormView(1);\r\n \r\n }\r\n if (key=='p' || key=='P')\r\n {\r\n if ($scope.resourceDefinition.formParams.formViewType!=2) $scope.ShowFormView(2);\r\n }\r\n \r\n }); \r\n \r\n \r\n \r\n \r\n \r\n },\r\n link: function (scope, elem, attrs) {\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n }\r\n};\n'use strict';\n\nexport function ktPageformlayout () {\n return {\n restrict: 'A',\n \n\t\t\tcontroller: function ($scope,dragulaService,$rootScope,WidgetDataExchangeService,GridsterService,$compile,$element,$templateCache) {\n \n $scope.CTRL=\"ktPageformlayout\"\n \n let deletedWidgetsState= $scope.ksm.addSubject('deletedWidgetsState'+$scope.resourceDefinition.id+$scope.resourceDefinition.form_type,null);\n let deletedWidgetsStateName = deletedWidgetsState.subject.name;\n \n let add_deleted = function(data){\n\n let deleted = deletedWidgetsState.subject.getState\n if (deleted===undefined || deleted===null) deleted=[] \n deleted.push(data)\n deletedWidgetsState.subject.setStateChanges = deleted;\n } \n\n let action_value_changed = $scope.ksm.addAction(deletedWidgetsStateName,\"addDeleted\",add_deleted);\n\t\t\t\t//let action_value_changed = $scope.ksm.addAction(deletedWidgetsState,\"addDeleted\",add_deleted);\n \n let process_deleted_widgets=function(){\n\n let deletedw = deletedWidgetsState.subject.getState\n if (deletedw!==null)\n {\n for (let i=0;i -1) {\n \n WidgetDataExchangeService.deRegisterWidget($scope.inputArray.layout[index].LocalId);\n if ($scope.inputArray.layout[index].Saved==true && $scope.inputArray.layout[index].PresentationId!=null && $scope.inputArray.layout[index].PresentationId!=undefined) {\n\t\t\t\t\t\t\t\t\n $scope.inputArray.layout[index].Status=\"Deleted\";\n //subscribe to save form event\n\n $scope.ksm.executeAction(deletedWidgetsStateName,\"addDeleted\",{PresentationId:$scope.inputArray.layout[index].PresentationId,idx:index})\n\t\t\t\t\t\t\t }else\n {\n $scope.inputArray.layout.splice(index,1);\n \n }\n \n\t\t\t\t\t\t}\n\n\t\t\t\t};\n\n $scope.undoDelete = function (index){\n // console.log(\"REMOVE FIELD \"+index);\n if (index > -1) {\n \n $scope.inputArray.layout[index].Status=\"Active\";\n }\n\n };\n \n \n let template;\n if ($scope.resourceDefinition.form_definition) template = $templateCache.get('ktdirectivetemplates/ktPageFormLayout.html');\n else template = $templateCache.get('ktdirectivetemplates/ktPageFormLayoutExe.html');\n\n //template = $templateCache.get('ktdirectivetemplates/ktPageFormLayout.html');\n \n $element.append($compile(template)($scope));\n\n\t\t\t},\n\t\t\t link: function (scope, elem, attrs) {\n\n if (scope.inputArray.layout==undefined || scope.inputArray.layout==null) scope.inputArray.layout = [];\n \n }\n };\n};\n'use strict';\r\n\r\nexport function ktPageMenu () {\r\n\r\n return {\r\n restrict: 'A',\r\n templateUrl: 'ktdirectivetemplates/ktPageMenu.html',\r\n scope:{\r\n localVars:'=',\r\n navbarItemsLeft:'=',\r\n navbarItemsRight:'=',\r\n pageMenu:'=?',\r\n resource:'=',\r\n },\r\n controller: ['$scope','$timeout','dragulaService','$rootScope','MenuService','ResourcesDataService','MessagingService','GridsterService','$state',\r\n \r\n function($scope,$timeout,dragulaService,$rootScope,MenuService,ResourcesDataService,MessagingService,GridsterService,$state){\r\n \r\n $scope.localVars.selectedNavbar = {layout : []}\r\n $scope.localVars.pageMenuItems= []\r\n\r\n\t\t\t $scope.gsrvc = GridsterService; \r\n let currentUser=$rootScope.globals.currentUser;\r\n\t\t\t \r\n if ($scope.pageMenu) \r\n $scope.localVars.pageMenuItems= $scope.pageMenu\r\n else \r\n $scope.localVars.pageMenuItems=[]\r\n \r\n \r\n if ($scope.resource.ResourceType.ResourceCode=='pagemenu') {\r\n $scope.localVars.showNavbarDetails = true;\r\n $scope.localVars.showMenuDetails = false;\r\n $timeout(function(){\r\n $scope.localVars.showNavbarDetails = true;\r\n $scope.localVars.showNavbarDetailsFirst = true;\r\n }) \r\n }\r\n \r\n \r\n $scope.whenSuccesfullDrop = function(itemIndex) {\r\n $scope.localVars.getMenuDetails(itemIndex)\r\n $scope.localVars.selectedPageMenuItem = $scope.localVars.pageMenuItems[itemIndex]\r\n $timeout(function(){\r\n $scope.localVars.showMenuDetails = true;\r\n }) \r\n }\r\n \r\n\r\n\r\n if ($scope.localVars == undefined) $scope.localVars={};\r\n $scope.localVars.pagesLoaded=false; \r\n let lang = $rootScope.globals.currentUser.lang;\r\n \r\n \r\n $scope.localVars.getMenuDetails = function(index) // when clicked on specific page menu item\r\n {\r\n\t\t\t\t //debugger\r\n if ( $scope.localVars.pageMenuItems.length===index) index--;\r\n $scope.localVars.selectedMenu = $scope.localVars.pageMenuItems[index];\r\n $scope.localVars.selectedMenu.index=index;\r\n $scope.localVars.showMenuDetails = false;\r\n\t\t\t\t \r\n\t\t\t\t \t\t\t\t \r\n\t\t\t\t if ($scope.localVars.selectedMenu.Groups==undefined) $scope.localVars.selectedMenu.Groups=[]\r\n\t\t\t\t if ($scope.localVars.selectedMenu.Users==undefined) $scope.localVars.selectedMenu.Users=[]\r\n\t\t\t\t \t\t\t \r\n if ($scope.localVars.selectedMenu.Target==undefined) \r\n\t\t\t\t\t\t\t$scope.localVars.selectedMenu.Target = {id: $scope.localVars.pageMenuItems[index].id,name: $scope.localVars.pageMenuItems[index].name};\r\n \r\n\t\t\t\t if ($scope.localVars.selectedMenu.s_menus_Name==undefined) $scope.localVars.selectedMenu.s_menus_Name = $scope.localVars.pageMenuItems[index].name;\r\n\r\n\t\t\t\t \r\n $timeout(function(){\r\n $scope.localVars.showMenuDetails = true;\r\n })\r\n \r\n \r\n };\r\n \r\n \r\n \r\n $scope.localVars.deletePageMenu = function(menu,index) {\r\n if (menu.s_menus_id!==null && menu.s_menus_id!==undefined) {\r\n if (menu.deleteItem) menu.deleteItem = false;\r\n else menu.deleteItem = true;\r\n }\r\n else {\r\n $scope.localVars.pageMenuItems.splice(index,1);\r\n $scope.localVars.selectedMenu = null;\r\n $scope.localVars.showMenuDetails = false;\r\n }\r\n };\r\n \r\n \r\n $scope.buildDataset = function(e)\r\n {\r\n $state.go(\"'app.navbar.resources.new\",{'resource_type':'dataset'});\r\n };\r\n \r\n $scope.buildPage = function(e)\r\n {\r\n $state.go(\"'app.navbar.resources.new\",{'resource_type':'page'});\r\n };\r\n \r\n $scope.savePageMenu = function()\r\n {\r\n let navbarLeft,navbarRight\r\n let sideMenuItems = angular.copy($scope.localVars.pageMenuItems);\r\n\t\t\t\t\t//sideMenuItem may contain \"Groups\" or \"Users\" if there was change (if clicked on page menu element)\r\n \r\n MenuService.saveFullAppMenu($scope.resource.uid, navbarLeft, navbarRight,sideMenuItems ).then(\r\n\t\t\t\t\t\tfunction(data) {\r\n\t\t\t\t\t\t\tMessagingService.addMessage(data.msg,'success');\r\n\t\t\t\t\t\t\t$scope.localVars.pageMenuItems=data.pageMenu \r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfunction(error){ \r\n\t\t\t\t\t\t\tMessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t\t});\r\n };\r\n \r\n //get pages\r\n ResourcesDataService.getResourceDefListByType(lang,'page').then(\r\n\t\t\t\t\tfunction(data) {\t\t\t\t\t\r\n\t\t\t\t\t\t$scope.localVars.pageList = data.data;\r\n\t\t\t\t\t\t$scope.localVars.pagesLoaded=true; \t\t\t\t\t\t \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t});\r\n \r\n \r\n }],\r\n link: function (scope, elem, attrs) { \r\n \r\n }\r\n }\r\n \r\n};\n'use strict';\r\n\r\nexport function ktPageMenuExe ($timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n templateUrl: 'ktdirectivetemplates/ktPageMenuExe.html',\r\n scope:{\r\n sideMenus:'=',\r\n params:'=',\r\n },\r\n controller: ['$scope','$rootScope','MenuService','GridsterService',\r\n \r\n function($scope,$rootScope,MenuService,GridsterService){\r\n \r\n $scope.menu_service = MenuService; \r\n $scope.gsrvc = GridsterService; \r\n\r\n let currentUser=$rootScope.globals.currentUser;\r\n \r\n }],\r\n link: function (scope, elem, attrs) {\r\n\r\n scope.setSideMenu = function(menuId) { \r\n scope.menu_service.setSelectedSidemenu(menuId) ;\r\n };\r\n scope.mergeObjects = (...objects) =>\r\n objects.reduce((acc, cur) => ({ ...acc, ...cur }));\r\n\r\n document.addEventListener('mouseup', function(e) {\r\n // hide side-menu when clicked outside\r\n let container = document.getElementById('page-menu-id');\r\n if (container && scope.menu_service.getSideMenuVisibility()) {\r\n $timeout(function(){scope.menu_service.toggleSideMenuVisibility()})\r\n } \r\n });\r\n \r\n }\r\n }\r\n \r\n};\n'use strict';\r\n\r\n//import indexJson from './index.json' assert {type: 'json'};\r\nimport indexJson from './../../../../0001_modules/0001_index/angularJs/index.json'//with {type: 'json'};\r\n\r\nexport function ktPopover ($compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n scope: {\r\n\t\t\t\t\ttid: '=',\r\n\t\t\t\t\tenable: '=',\r\n\t\t\t\t\ttimeout: '=',\r\n\t\t\t\t\tshowOnStart: '=',\r\n\t\t\t\t\ticon: '='\r\n\t\t\t\t},\r\n\t\t\tcontroller: function($scope, $rootScope,$timeout, TaskDefinitionService,GridsterService){\r\n\t\t\t\tthis.$timeout = $timeout\r\n\t\t\t\tvar langCode = $rootScope.globals.currentUser.langObj.Code\r\n\t\t\t\t$scope.content= indexJson[langCode].popover \r\n\t\t\t},\t\r\n link: function (scope, elem, attrs) {\r\n \t\r\n\t\t\t\tscope.open = function (tid) {\r\n\t\t\t\t\t//debugger\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\tscope.$watch('enable',function(newValue,oldValue){\r\n\t\t\t\t\tif (oldValue==true && newValue==false) {\r\n\t\t\t\t\t\t//debugger\r\n\t\t\t\t\t\telem.tooltip(\"hide\");\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (newValue && scope.content[scope.tid] ) {\r\n\t\t\t\t\t\telem.attr('title', scope.content[scope.tid]);\r\n\t\t\t\t\t\t//elem.attr('content', scope.content[scope.tid]);\r\n\t\t\t\t\t\telem.tooltip({html:true});\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\tif (scope?.icon) elem.append($compile(\" \")(scope));\r\n\t\t\t\t\t\tif (scope?.showOnStart) {\r\n\t\t\t\t\t\t\telem.tooltip(\"show\");\t\r\n\t\t\t\t\t\t\tsetTimeout( ()=> { elem.tooltip(\"hide\")} , 3000) \r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\t\t\t\t \r\n\r\n\t\t\t\t\telem.on('$destroy', function() {\t\r\n\t\t\t\t\t\telem.tooltip('dispose');\r\n\t\t\t\t\t\tif (attrs?.$$observers?.['title']) delete attrs.$$observers['title'];\r\n\t\t\t\t\t});\r\n\t\t\t\t})\r\n \r\n }\r\n }\r\n \r\n};\n'use strict';\n\nexport function ktProcessingAnimation () {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktProcessingAnimation.html',\n scope:{\n message : \"@\",\n showMsg: \"=\",\n showAsCard: \"=\",\n \t\t\t},\n controller: function(){},\n link: function (scope, elem, attrs) {\n \n }\n } \n};\n'use strict';\r\n\r\nexport function ktProcessingAnimationTimeline () {\r\n\r\n return {\r\n restrict: 'A',\r\n templateUrl: 'ktdirectivetemplates/ktProcessingAnimationTimeline.html',\r\n scope:{\r\n message : \"@\",\r\n showMsg: \"=\",\r\n animationType: \"=\",\r\n params: \"=?\",\r\n \t\t\t},\r\n link: function (scope, elem, attrs) {\r\n \r\n scope.formItems = [1,2,3,4];\r\n if (scope.animationType==\"table\") scope.formItems = [1,2,3,4,5,6,7,8];\r\n if (scope.animationType==\"card\") \r\n { \r\n scope.cardItems = []\r\n for (let i =0;i.+)/(?P.+)'\n $scope.fd.localVars.GetPublishedResourcesByType = function() {\t\n \n if ($scope.fd.localVars.publishedResourceList==undefined) $scope.fd.localVars.publishedResourceList=[];\n var lang=$rootScope.globals.currentUser.lang;\n \n ResourcesDataService.GetPublishedResourcesByType($scope.fd.localVars.resourceType,'form').then(function (data) { \n $scope.fd.localVars.publishedResourceList = data.data;\n \n \n if ($scope.fd.Parameters.PublishedResourceId!=null) {\n $scope.fd.localVars.setSelectedResource($scope.fd.Parameters.PublishedResourceId);\n } \n },function(error){ \n MessagingService.addMessage(error.msg,'error');\n });\n } \n \n \n \n \n\tif ($scope.fd.localVars.publishedResourceList==undefined) {\n $scope.fd.localVars.GetPublishedResourcesByType();\n }\n \n /* if ($scope.fd.localVars.resourceList==undefined) {\n $scope.fd.localVars.getResources();\n }\n */ \n $scope.fd.localVars.changePriority= function(fp){ \n $scope.fd.formPriority =fp; \n };\n \n \n $scope.fd.localVars.confirm= function(){\n \n $scope.fd.localVars.selectedResourceItem = $scope.fd.localVars.selectedResource\n //$scope.fd.localVars.selectedResourceItem.src_type_text = $scope.fd.localVars.src_type_text[$scope.fd.RelatedPopulateType];\n // $scope.fd.localVars.selectedResourceItem.name_confirmed = $scope.fd.localVars.selectedResourceItem.name +' ('+$scope.fd.localVars.selectedResourceItem.id +')'\n $scope.fd.PopulateType=$scope.fd.RelatedPopulateType+$scope.fd.formPriority;\n $scope.fd.localVars.datasetMapperType=0;\n $scope.fd.localVars.setSelectedResource($scope.fd.localVars.selectedResourceItem.id);\n \n \n // $scope.localVars.toggleProperties(0); //MIGOR dodao da se sakrije property kad stisne prozor , TODO - treba potvrditi da se nesto s time ne kvari\n };\n\t\t\t\t \n \n \n $scope.fd.localVars.onSelectResourceCallback = function (item, model){\n\n \tvar eventResultId=item.id;\n \tvar eventResultName=item.name;\n var eventResultParentElementId =item.parentElementId;\n \n // if (item.id!=$scope.fd.localVars.selectedResourceItem.id && $scope.fd.localVars.relatedPopulateType!=1){\n // TODO - kad se promjeni dataset onda se treba resetirati GRIDSTATE\n // $scope.fd.GridState = {} TODO i ovo dodati?\n //$scope.fd.Parameters.GridState = {state:[]}\n \n //$scope.fd.localVars.getFormWidgets(item.id);\n \n // }\n \n \n \t $scope.fd.localVars.selectedResourceItem_c = {id:eventResultId, name : eventResultName,parentElementId:eventResultParentElementId,Form:item.Form,Version:item.Version,ResourceDefId:item.ResourceDefId};\n \n \n }\n \n $scope.fd.localVars.setSelectedSource = function(source_id){\n \n if (source_id==-1)\n {\n \n $scope.fd.RelatedPopulateType = '3';\n $scope.fd.formPriority = 'e';\n \n }else\n {\n \n $scope.fd.RelatedPopulateType = '2';\n $scope.fd.formPriority = source_id.form_type;\n $scope.fd.SrcWidgetId = source_id.parentElementId;\n if (source_id.type=='rlist') $scope.fd.RelatedPopulateType = '4';\n \n }\n };\n \n $scope.fd.localVars.getFormWidgets = function(resource_id){\n \n\n var lang=$rootScope.globals.currentUser.lang;\n if ($scope.fd.PresentationId == undefined || $scope.fd.PresentationId==null) $scope.fd.PresentationId=0;\n \n ResourcesDataService.getFormWidgets(resource_id,$scope.fd.localVars.taskId,$scope.fd.PresentationId,1,lang).then(function(data) {\n \n \n \n $scope.fd.localVars.currentTaskInitiateDatasets = data.data.initiate_widgets;\n \n $scope.fd.localVars.currentTaskExecuteDatasets = data.data.execute_widgets;\n \n $scope.fd.localVars.currentDownloaded = true;\n \n \n \n $scope.fd.localVars.previousTaskInitiateDatasets = data.data.initiate_widgets;\n $scope.fd.localVars.previousTaskExecuteDatasets = data.data.execute_widgets;\n \n $scope.fd.localVars.previousDownloaded = true;\n \n \n \n },function(error){\n MessagingService.addMessage(error.msg,'error');\n });\n };\n \n \n $scope.fd.localVars.setPopulateMethod= function(populateMethod){\n \n $scope.fd.PopulateMethod=populateMethod;\n \n if (populateMethod=='A')\n {\n if ($scope.fd.localVars.selectedResourceItem_c!=undefined)\n {\n var id=$scope.fd.localVars.selectedResourceItem_c.id;\n if (id==undefined) id=$scope.fd.localVars.selectedResourceItem_c.relatedId;\n if (id!=undefined) $scope.fd.localVars.getFormWidgets($scope.fd.localVars.selectedResourceItem_c.id);\n }\n \n }\n };\n \n $scope.fd.localVars.setPopulateMethod($scope.fd.PopulateMethod);\n \n \n $scope.fd.localVars.setPopulateType= function(populateType){\n \n $scope.fd.RelatedPopulateType=populateType;\n \n if ($scope.fd.localVars.selectedResourceItem_c!=undefined)\n {\n $scope.fd.localVars.getFormWidgets($scope.fd.localVars.selectedResourceItem_c.relatedId);\n }\n \n \n }\n \n },\n link: function (scope, elem, attrs) {\n \n \n }\n }\n};\n'use strict';\r\n\r\nexport function ktReadSmartContract () {\r\n \r\n var controller = ['$scope', '$uibModal', '$stateParams','$state','$timeout','CodesService','ResourcesDataService','$rootScope','CODES_CONST','ProcessingService','MessagingService','GridsterService','TaskDataService','WidgetDataExchangeService','KatalyoStateManager','UtilityService','$templateCache','$compile','$element',\r\n function ($scope,$uibModal,$stateParams,$state,$timeout,CodesService,ResourcesDataService,$rootScope,CODES_CONST,ProcessingService,MessagingService,GridsterService,TaskDataService,WidgetDataExchangeService,KatalyoStateManager,UtilityService,$templateCache,$compile,$element) {\r\n \r\n \r\n //$scope.fd = {};\r\n if ($scope.fd.formData==undefined) $scope.fd.formData=[{}];\r\n $scope.fd.searchFormDownloaded = false;\r\n $scope.fd.formLoaded=false;\r\n $scope.fd.src_type_text=CODES_CONST._POPULATE_TYPE_;\r\n $scope.fd.animationsEnabled = true;\r\n $scope.fd.widgetType = 3;\r\n $scope.gsrvc = GridsterService;\r\n $scope.fd.formParams={formViewType:1,showGridNavigation:true};\r\n $scope.fd.contractDatasets = true;\r\n\r\n\r\n if ($scope.localVars == undefined) $scope.localVars= {} \r\n $scope.localVars.showMenu = false\r\n \r\n $scope.localVars.toggleDropdown = function(){\r\n $scope.localVars.showMenu = $scope.localVars.showMenu ? false: true \r\n }\r\n \r\n \r\n $scope.fd.datasetMapperType=0;\r\n \r\n if ($scope.fd.PopulateType==undefined) $scope.fd.PopulateType=\"\";\r\n \r\n $scope.fd.gridsterType=\"resource\";\r\n // $scope.gridsterOpts = GridsterService.getGridsterOptions();\r\n \r\n $scope.fd.dashboard = {\r\n \t\t\t\tid: '1',\r\n \t\t\t\tname: 'Home',\r\n \t\t\t\twidgets: []\r\n } ;\r\n \r\n \r\n \r\n //$scope.taskId=$stateParams.id;\r\n $scope.taskId=$scope.resourceDefinition.ResourceDefId;\r\n if ($scope.taskId==undefined) $scope.taskId=$scope.resourceDefinition.ResourceDefId_id;\r\n if ($scope.taskId==undefined) $scope.taskId=0;\r\n $scope.fd.taskId=$scope.taskId;\r\n $scope.fd.ParentDatasetDefId=$scope.fd.Related;\r\n $scope.prevTaskExeId = $scope.resourceDefinition.prev_task_id;\r\n $scope.fd.formType=$scope.resourceDefinition.form_type;\r\n $scope.source_type=$scope.resourceDefinition.source_type;\r\n $scope.taskInitiateId = $scope.resourceDefinition.task_initiate_id;\r\n $scope.taskExecuteId = $scope.resourceDefinition.task_execute_id;\r\n $scope.formDefinition = $scope.resourceDefinition.form_definition;\r\n \r\n if ($scope.formDefinition==undefined) $scope.formDefinition=false;\r\n \r\n $scope.fd.resourceRecordId=0;\r\n if ($scope.taskInitiateId==undefined)\r\n {\r\n $scope.taskInitiateId =0;\r\n \r\n }\r\n if ($scope.taskExecuteId==undefined)\r\n {\r\n $scope.taskExecuteId =0; \r\n }\r\n if ($scope.prevTaskExeId==undefined)\r\n {\r\n $scope.prevTaskExeId =0;\r\n }\r\n \r\n //register widget \r\n var out_fields = ['resourceId'];\r\n //if ($scope.fd.LocalId==undefined || $scope.fd.LocalId==null || $scope.fd.LocalId==0)\r\n //{\r\n var widgetDefinition = {DEI: [{'name':'resourceLink','value':[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:''}]}],actions: [{name:'PrepareData',status:false}],name: 'viewResourceWidget',widgetId: $scope.fd.PresentationId,task_initiate_id:$scope.taskInitiateId,task_execute_id:$scope.taskExecuteId,taskId: $scope.lTaskId,resourceDefId : $scope.fd.selectedResource, output:out_fields, };\r\n $scope.fd.localWidgetId = WidgetDataExchangeService.registerWidget(widgetDefinition);\r\n $scope.fd.LocalId=$scope.fd.localWidgetId;\r\n $scope.fd.LocalId=$scope.fd.localWidgetId;\r\n //$scope.fd.LocalId=UtilityService.uuidNow();\r\n \r\n //}\r\n $scope.ksm = KatalyoStateManager;\r\n \r\n let update_presentation_id = function(data)\r\n {\r\n if (data[$scope.fd.LocalId]>0 && ($scope.fd.PresentationId==null || $scope.fd.PresentationId==0)) $scope.fd.PresentationId = data[$scope.fd.LocalId];\r\n //unsubscribe here later after implementing unsubscribe - ToDo\r\n \r\n }\r\n if ($scope.fd.PresentationId==0 || $scope.fd.PresentationId==null)\r\n {\r\n \r\n let dependent_field = $scope.fd.LocalId;\r\n let subscribedSubject = \"formDefinitionState\"+$scope.taskId+$scope.resourceDefinition.form_type;\r\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"formSaved\",update_presentation_id);\r\n \r\n } \r\n \r\n let apply_value = function(data)\r\n {\r\n let do_refresh=false;\r\n if (data!=undefined)\r\n {\r\n if (data != $scope.fd.resourceRecordId)\r\n {\r\n if (typeof data ==='number') $scope.fd.resourceRecordId= data;\r\n else if (Array.isArray(data))\r\n {\r\n if (data.length>0)\r\n {\r\n $scope.fd.resourceRecordId= data[0].id \r\n }\r\n }else\r\n {\r\n $scope.fd.resourceRecordId = data.id;\r\n }\r\n do_refresh = true;\r\n }\r\n }\r\n //get selectedRecord\r\n if ($scope.fd.resourceRecordId == null) $scope.fd.resourceRecordId=0;\r\n \r\n // if ($scope.fd.resourceRecordId>0 && do_refresh) $scope.fd.getFormResourceWithData();\r\n \r\n \r\n };\r\n \r\n \r\n if ($scope.fd.Parameters==undefined) $scope.fd.Parameters={};\r\n \r\n if ($scope.fd.Parameters.RefreshOnIdChange)\r\n {\r\n \r\n //find \r\n //subscribe observer\r\n \r\n let dependent_field = \"Field\"+$scope.fd.PresentationId;\r\n let subscribedSubject = \"resourceidValueStateName\"+$scope.fd.Parameters.ResourceIdItemId+$scope.resourceDefinition.transaction_id;\r\n let subject = $scope.ksm.addSubject(subscribedSubject,null); \r\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",apply_value);\r\n let val = $scope.ksm.getState(subscribedSubject);\r\n $scope.fd.resourceRecordId= val.id;\r\n \r\n //get selectedRecord\r\n if ($scope.fd.resourceRecordId == null) $scope.fd.resourceRecordId=0;\r\n \r\n //if ($scope.fd.resourceRecordId>0) $scope.fd.getFormResourceWithData();\r\n }\r\n \r\n //subscribe observer\r\n if ($scope.fd.PopulateType.toString().substr(0,1)==\"4\")\r\n {\r\n \r\n if ($scope.fd.SrcWidgetId!=undefined && $scope.fd.SrcWidgetId!=null)\r\n \r\n {\r\n \r\n let dependent_field = \"Field\"+$scope.fd.SrcWidgetId;\r\n // let subscribedSubject = $scope.fd.Parameters.SrcWidgetType+\"ValueStateName\"+$scope.fd.SrcWidgetId;\r\n let subscribedSubject = \"rlistValueStateName\"+$scope.fd.SrcWidgetId+$scope.resourceDefinition.transaction_id;\r\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",apply_value);\r\n \r\n } \r\n \r\n }\r\n \r\n let refresh_widget_data = function()\r\n \r\n {\r\n // $scope.fd.getFormResourceWithData(); \r\n \r\n }\r\n if ($scope.fd.Parameters.EventName!=undefined)\r\n {\r\n if ($scope.fd.Parameters.EventName!=\"\")\r\n {\r\n let dependent_field2 = \"Field\"+$scope.fd.PresentationId;\r\n let subscribedSubject2 = \"task\"+$scope.resourceDefinition.transaction_id;\r\n let observer2 = $scope.ksm.subscribe(subscribedSubject2,dependent_field2,$scope.fd.Parameters.EventName,refresh_widget_data);\r\n }\r\n }\r\n \r\n $scope.fd.showProperties=function(datasetMapperType)\r\n {\r\n \r\n if ($scope.fd.datasetMapperType==undefined)\r\n {\r\n $scope.fd.datasetMapperType = datasetMapperType;\r\n }else\r\n {\r\n if ($scope.fd.datasetMapperType==0 || $scope.fd.datasetMapperType!=datasetMapperType) $scope.fd.datasetMapperType = datasetMapperType;\r\n else $scope.fd.datasetMapperType=0;\r\n }\r\n \r\n };\r\n \r\n $scope.fd.setField = function(form,name,value,msg)\r\n {\r\n TaskDataService.setField(form,name,value);\r\n if (msg) MessagingService.addMessage(msg,'info');\r\n }; \r\n \r\n $scope.fd.getResourceAll = function () {\r\n \r\n ResourcesDataService.getResourceDefAll($scope.fd.Related).then(function(data) {\r\n \r\n // MessagingService.addMessage(data.msg,'success');\r\n $scope.fd.resource = data.data;\r\n $scope.fd.resourceLoaded = true;\r\n if ( $scope.fd.Parameters.AutoLoad) $scope.fd.readBlockchainVars();\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n };\r\n \r\n $scope.fd.readBlockchainVars = function ()\r\n {\r\n var lang=$rootScope.globals.currentUser.lang;\r\n //let provider=$rootScope.globals.currentUser.web3Provider;\r\n //$rootScope.globals.currentUser.web3Infura = new Web3(new Web3.providers.WebsocketProvider('wss://ropsten.infura.io/ws/v3/d5619a41905a41f88c5e742e4180ef3c'))\r\n $rootScope.globals.currentUser.web3Infura = new Web3(new Web3.providers.HttpProvider('https://mainnet.infura.io/v3/d5619a41905a41f88c5e742e4180ef3c'))\r\n \r\n ResourcesDataService.readBlockchainVars($scope.fd.resource.Parameters.ContractId,$scope.fd.resource.Parameters.ContractAbi).then(function(data) {\r\n \r\n $scope.fd.formData[0]=data.data.vars;\r\n $scope.fd.getFormResourceOriginal( $scope.fd.resource.Parameters.PublicVarsDatasetId.id);\r\n\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n \r\n });\r\n }\r\n $scope.fd.getFormResourceOriginal = function(datasetId){\r\n var lang=$rootScope.globals.currentUser.lang;\r\n if ($scope.fd.PresentationId==null)\r\n {\r\n $scope.fd.PresentationId = 0;\r\n \r\n }\r\n $scope.fd.formLoaded=false;\r\n ResourcesDataService.getResourceForm(datasetId,\"i\",lang).then(function(data) {\r\n \r\n $scope.fd.resourceWidgetDefinition= data.data.resourceDefinition;\r\n if (Array.isArray(data.data.widgets)) $scope.fd.dashboard.widgets.layout = data.data.widgets;\r\n \r\n if ($scope.fd.selectedResourceItem!=undefined)\r\n { \r\n $scope.fd.selectedResourceItem.name=$scope.fd.resourceWidgetDefinition.name;\r\n $scope.fd.selectedResourceItem.relatedId=$scope.fd.Related;\r\n $scope.fd.selectedResourceItem.presentationId=$scope.fd.PresentationId;\r\n $scope.fd.selectedResourceItem.src_type_id=$scope.fd.PopulateType;\r\n $scope.fd.selectedResourceItem.src_type_text=$scope.fd.src_type_text[$scope.fd.PopulateType];\r\n $scope.fd.selectedResourceItem.parentElementId=$scope.fd.ParentElementId;\r\n }\r\n else{\r\n $scope.fd.selectedResourceItem={'name':$scope.fd.resourceWidgetDefinition.name,'relatedId':$scope.fd.Related, 'presentationId':$scope.fd.PresentationId ,'src_type_id':$scope.fd.PopulateType,'src_type_text':$scope.fd.src_type_text[$scope.fd.PopulateType],'parentElementId':$scope.fd.ParentElementId};\r\n \r\n }\r\n $scope.fd.wItemValue=data.data.widgets;\r\n \r\n /*\r\n var container = $element.children().eq(0);\r\n GridsterService.setupDragular($scope.fd.wItemValue,container,'rows-'+$scope.fd.PresentationId,'row-'+$scope.fd.gridsterType+'-hadle',true);\r\n */ \r\n \r\n //MIGOR - bitno - DOBIO RESOURCERECORD-ID ZA BROADCAST - ADD_RESOURCE WIDGET\r\n WidgetDataExchangeService.setData({widgetId:$scope.fd.PresentationId, DEI: [{'name':'resourceLink','value':[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:$scope.fd.ResourceRecordId}]}]});\r\n\t\t\t\t\t\t\r\n $scope.fd.searchFormDownloaded = true;\r\n //$timeout(function(){$scope.fd.formLoaded=true});\r\n $scope.fd.formLoaded=true;\r\n \r\n // $scope.fd.setField($scope.fd.dashboard.widgets.layout,'ReadOnly',true); \r\n $scope.fd.setField($scope.fd.dashboard.widgets.layout,'Required',false);\r\n //$scope.fd.readBlockchainVars();\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n \r\n };\r\n $scope.fd.gridOptions = {\r\n \r\n showGridFooter: true,\r\n showColumnFooter: true,\r\n enableRowSelection: true,\r\n multiSelect: false,\r\n // enableHorizontalScrollbar : 1,\r\n // enableVerticalScrollbar : 2,\r\n enableFiltering: true,\r\n enableRowHeaderSelection: false,\r\n enableColumnResizing: true,\r\n enableColumnReordering: true,\r\n //useExternalPagination: false,\r\n paginationPageSizes: [10, 25, 50,100,200,500,1000,5000,10000],\r\n }\r\n \r\n $scope.fd.getFormResource = function(){\r\n var lang=$rootScope.globals.currentUser.lang;\r\n $scope.fd.formLoaded=false;\r\n if ($scope.fd.PresentationId==null)\r\n {\r\n $scope.fd.PresentationId=0;\r\n \r\n }\r\n $scope.fd.formLoading=true;\r\n \r\n ResourcesDataService.getResourceFormExtended($scope.fd.resource.Parameters,$scope.taskId,$scope.fd.formType,$scope.fd.PresentationId,\"w\",lang).then(function(data) {\r\n \r\n $scope.fd.resourceWidgetDefinition= data.data.resourceDefinition;\r\n if (Array.isArray(data.data.widgets)) $scope.fd.dashboard.widgets.layout = data.data.widgets;\r\n \r\n if ($scope.fd.selectedResourceItem!=undefined)\r\n { \r\n $scope.fd.selectedResourceItem.name=$scope.fd.resourceWidgetDefinition.name;\r\n $scope.fd.selectedResourceItem.relatedId=$scope.fd.Related;\r\n $scope.fd.selectedResourceItem.presentationId=$scope.fd.PresentationId;\r\n $scope.fd.selectedResourceItem.src_type_id=$scope.fd.PopulateType;\r\n $scope.fd.selectedResourceItem.src_type_text=$scope.fd.src_type_text[$scope.fd.PopulateType];\r\n $scope.fd.selectedResourceItem.parentElementId=$scope.fd.ParentElementId;\r\n }\r\n else{\r\n $scope.fd.selectedResourceItem={'name':$scope.fd.resourceWidgetDefinition.name,'relatedId':$scope.fd.Related, 'presentationId':$scope.fd.PresentationId ,'src_type_id':$scope.fd.PopulateType,'src_type_text':$scope.fd.src_type_text[$scope.fd.PopulateType],'parentElementId':$scope.fd.ParentElementId};\r\n \r\n }\r\n \r\n $scope.fd.wItemValue=data.data.widgets;\r\n \r\n \r\n \r\n $scope.fd.searchFormDownloaded = true;\r\n \r\n $timeout(function(){ \r\n $scope.fd.formLoaded=true;\r\n $scope.fd.formLoading=false;\r\n });\r\n \r\n \r\n // $scope.fd.setField($scope.fd.dashboard.widgets.layout,'ReadOnly',true); \r\n $scope.fd.setField($scope.fd.dashboard.widgets.layout,'Required',false);\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.fd.formLoading=false;\r\n \r\n \r\n });\r\n \r\n };\r\n \r\n \r\n \r\n $scope.fd.setSelectedDataset = function(id) {\r\n \r\n if ($scope.fd.selectedResourceItem==undefined) $scope.fd.selectedResourceItem={};\r\n var pos = $scope.fd.resourceList.map(function(e) { return e.id; }).indexOf(id);\r\n \r\n if (pos>=0){\r\n $scope.fd.selectedResourceItem.id = $scope.fd.resourceList[pos].id;\r\n $scope.fd.selectedResourceItem.name = $scope.fd.resourceList[pos].name;\r\n $scope.fd.selectedDataset = $scope.fd.resourceList[pos];\r\n $scope.fd.selectedResourceItem.name_confirmed = $scope.fd.selectedResourceItem.name +' ('+$scope.fd.selectedResourceItem.id +')'\r\n $scope.fd.selectedResourceItem_c=$scope.fd.selectedResourceItem;\r\n }\r\n\t\t\t\t\t}\r\n \r\n \r\n // POPUNI LISTU DEFINICIJA OD RESURSA (RESOURCES LIST)\r\n\t$scope.fd.getResources = function() {\r\n\t\t\t\t\t\t\r\n if ($scope.fd.resourceList==undefined) $scope.fd.resourceList=[];\r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n ResourcesDataService.getResourceDefListByType(lang,'smartcontract').then(\r\n\t\t\t\t\t\tfunction(data) {\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t $scope.fd.resourceList = data.data;\r\n if ($scope.fd.Related!=null)\r\n {\r\n $scope.fd.setSelectedDataset($scope.fd.Related);\r\n \r\n } \r\n\t\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t\t\t\t\t\t });\r\n\t\t\t\t\t}\r\n \r\n\r\n$scope.fd.getPreviousTaskWidget = function(linkType)\r\n {\r\n var pTaskData;\r\n var pTaskDataRet = WidgetDataExchangeService.getPrevTaskData($scope.prevTaskExeId);\r\n if (Array.isArray(pTaskDataRet) && pTaskDataRet.length>0) pTaskData = pTaskDataRet[0];\r\n var datasetId=0,datasetRecordId=0;\r\n if (pTaskData!=undefined)\r\n {\r\n if (pTaskData.DEI!=undefined && pTaskData.DEI!=null)\r\n {\r\n for (var i=0;i=0) $scope.itemValue.val = $scope.fd.localVars.datasetItems[pos]\r\n else{\r\n\r\n if (newValue?.state?.selectedItems) pos = $scope.fd.localVars.datasetItems.map(function(e) { return e.id }).indexOf(newValue.state?.selectedItems[ip?.fieldId])\r\n if (pos>=0) $scope.itemValue.val = $scope.fd.localVars.datasetItems[pos]\r\n }\r\n }else{\r\n\r\n if (newValue?.state?.itemValue) $scope.itemValue = newValue.state.itemValue\r\n else if (newValue?.state?.selectedItems) $scope.itemValue.val = newValue.state.selectedItems\r\n }\r\n $scope.formData[0][$scope.fd.FieldName] = $scope.itemValue.val;\r\n $scope.fd.Search.value = $scope.formData[0][$scope.fd.FieldName];\r\n if (newValue?.state) $scope.ksm.executeAction(valueStateName,\"valueChanged\", newValue?.state)\r\n else $scope.ksm.executeAction(valueStateName,\"valueChanged\", newValue)\r\n \r\n WidgetDataExchangeService.setData({\r\n DEI: [{name:'resourceLinkDataset',value:[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:newValue}\r\n ,{name:'resourceRecordIds',value:newValue},{name:'resourceRecordsAll',value:$scope.fd.localVars.datasetItems}]}],widgetId: $scope.fd.PresentationId,task_execute_id:$scope.taskExecuteId}); \r\n \r\n }\r\n \r\n /**********************************************************************\r\n ****************** Sync data with State manager **********************\r\n ***********************************************************************/\r\n \r\n if ($scope.fd.Parameters==undefined) $scope.fd.Parameters={};\r\n $scope.itemValue = {val:null};\r\n \r\n let valueState= $scope.ksm.addSubject($scope.resourceDefinition.page_state_id+'-'+parentWidgetUid+$scope.fd.UuidRef,$scope.itemValue.val);\r\n let valueStateName = valueState.subject.name;\r\n\r\n let wrState= $scope.ksm.addSubject($scope.resourceDefinition.page_state_id+'-'+parentWidgetUid+$scope.fd.UuidRef+'-widgetReady',$scope.itemValue.val);\r\n let wrStateName = wrState.subject.name;\r\n \r\n let value_changed = function(data)\r\n { \r\n valueState.subject.setStateChanges = data;\r\n valueState.subject.notifyObservers(\"valueChanged\");\r\n };\r\n \r\n let action_value_changed = $scope.ksm.addAction(valueStateName,\"valueChanged\",value_changed);\r\n \r\n let refresh_data = function(data)\r\n {\r\n $scope.localVars[$scope.fd.id].GetResourceDataForParent()\r\n let st = valueState.subject.getState\r\n\r\n if (st==undefined) st={}\r\n st['action_index'] = data?.action_index\r\n valueState.subject.setStateChanges = st\r\n valueState.subject.notifyObservers(\"refreshData\")\r\n };\r\n \r\n let action_refresh_data = $scope.ksm.addAction(valueStateName,\"refreshData\",refresh_data);\r\n \r\n let widget_ready = function(data)\r\n {\r\n wrState.subject.setStateChanges = data;\r\n wrState.subject.notifyObservers(\"widgetReady\");\r\n \r\n };\r\n \r\n let action_widget_ready = $scope.ksm.addAction(wrStateName,\"widgetReady\",widget_ready);\r\n\r\n let data_loaded = function(data)\r\n {\r\n valueState.subject.setStateChanges = data\r\n //notify\r\n valueState.subject.notifyObservers(\"dataLoaded\")\r\n }\r\n let action_data_loaded= $scope.ksm.addAction(valueStateName,\"dataLoaded\",data_loaded);\r\n\r\n\r\n let count_records = function(data)\r\n {\r\n\r\n //valueState.subject.setStateChanges = data\r\n\r\n let result\r\n \r\n result = [$scope.localVars[$scope.fd.id].gridData.length]\r\n \r\n if ($scope.localVars[$scope.fd.id].gridData.length>0){\r\n //apply filter\r\n let key,val\r\n let in_data = data['events_data']['in_data']\r\n if (in_data==undefined) in_data = \"{}\"\r\n let input = JSON.parse(in_data)\r\n\r\n \r\n\r\n if (Object.keys(input).length>0)\r\n {\r\n result = Object.entries(input).map( ([key, val] = item) => {\r\n \r\n if (val=='currentUser()') val = $rootScope.globals.currentUser.userid\r\n return $scope.localVars[$scope.fd.id].gridData.reduce((count, item) => (item[key] == val ? count + 1 : count), 0)\r\n \r\n });\r\n } \r\n\r\n }\r\n let state = valueState.subject.getState\r\n if (result!=undefined && result.length>0) state['countRecords'] = result[0]\r\n else state['countRecords'] = null\r\n valueState.subject.setStateChanges = state\r\n\r\n $scope.fd.Parameters.events[data.event_index].actions[data.action_index].completed = true\r\n $scope.fd.Parameters.events[data.event_index].actions[data.action_index].result = state['countRecords']\r\n $scope.processEvents(state,false)\r\n //notify\r\n valueState.subject.notifyObservers(\"countRecords\")\r\n }\r\n let action_count_records= $scope.ksm.addAction(valueStateName,\"countRecords\",count_records);\r\n\r\n\r\n \r\n let apply_value = function(data)\r\n {\r\n let local_data; \r\n \r\n local_data = data;\r\n if ($scope.fd.Parameters.DependentFieldFilter!=undefined)\r\n {\r\n if ($scope.fd.Parameters.DependentFieldFilter!=\"\" || $scope.fd.Parameters.DependentFieldElement!=\"\")\r\n {\r\n if (Array.isArray(data))\r\n {\r\n if (data.length>0) local_data = data[0];\r\n else local_data = null;\r\n \r\n }\r\n else\r\n {\r\n local_data = data;\r\n }\r\n let dItems ;\r\n if ($scope.fd.ShowField && !$scope.fd.ReadOnly) dItems = $scope.fd.localVars.datasetItems;\r\n else dItems = $scope.fd.localVars.datasetItemsHidden;\r\n if (dItems==undefined)\r\n {\r\n $scope.fd.refreshDatasetDataList(\"\",true,local_data);\r\n local_data=null;\r\n }\r\n else\r\n {\r\n let element1,element2;\r\n if ($scope.fd.Parameters.DependentFieldFilter!=\"\")\r\n {\r\n element1 = $scope.fd.Parameters.DependentFieldFilter;\r\n element2 = \"id\";\r\n }\r\n else\r\n {\r\n element1 = \"id\";\r\n element2 = $scope.fd.Parameters.DependentFieldElement;\r\n }\r\n let pos = dItems.map(function(e) { return e[element1]; }).indexOf(local_data[element2]);\r\n\r\n if (pos>=0) local_data = dItems[pos];\r\n else local_data = null;\r\n }\r\n }\r\n }\r\n $scope.populateValue(local_data);\r\n };\r\n \r\n $scope.apply_value = apply_value\r\n \r\n /*\r\n if ($scope.fd.Parameters.DependentFieldId!=undefined && $scope.fd.Parameters.DependentFieldId!=null)\r\n \r\n {\r\n if ($scope.fd.Parameters.DependentFieldId!=\"\")\r\n {\r\n let dependent_field = \"Field\"+$scope.fd.PresentationId;\r\n let subscribedSubject = $scope.resourceDefinition.page_state_id+\"-\"+$scope.fd.Parameters.DependentFieldType+\"ValueStateName\"+$scope.fd.Parameters.DependentFieldId;\r\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",apply_value,true);\r\n let val = $scope.ksm.getState(subscribedSubject);\r\n $scope.populateValue(val.state);\r\n }\r\n }\r\n */\r\n /************ Get selected records for dropdown **************/\r\n $scope.fd.getDatasetList = function()\r\n {\r\n if ($scope.formData[0][$scope.fd.FieldName]!=undefined && $scope.formData[0][$scope.fd.FieldName].length>0 && $scope.fd.PresentationId!=null && $scope.fd.PresentationId!=undefined)\r\n {\r\n ResourcesDataService.getResourceDataList($scope.fd.Related,$scope.fd.PresentationId,lang,{'id__in': $scope.formData[0][$scope.fd.FieldName]}).then(function(data) {\r\n \r\n if ($scope.formData===undefined) $scope.formData = [{}];\r\n if ($scope.fd.MaxLength==1) $scope.formData[0][$scope.fd.FieldName] = data.data[0];\r\n else $scope.formData[0][$scope.fd.FieldName] = data.data;\r\n $scope.populateValue($scope.formData[0][$scope.fd.FieldName]);\r\n WidgetDataExchangeService.setSearch($scope.fd.PresentationId,$scope.taskExecuteId);\r\n //$scope.ksm.executeAction(valueStateName,\"valueChanged\", $scope.formData[0][$scope.fd.FieldName]);\r\n //$scope.itemValue.val = $scope.formData[0][$scope.fd.FieldName];\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n }\r\n \r\n $scope.localVars[$scope.fd.id].gridDataRetrieved =false;\r\n $scope.localVars[$scope.fd.id].results = {} \r\n $scope.localVars[$scope.fd.id].gridData=[]\r\n \r\n\r\n $scope.localVars[$scope.fd.id].processTableAction = function(file, actionId){\r\n let btn = $scope.localVars[$scope.fd.id].actionDef[actionId]\r\n if (btn.id==1){\r\n\r\n $scope.localVars[$scope.fd.id].previewFile(file['resource'+$scope.fd.Related+'_id'],file['resource'+$scope.fd.Related+'_FileName'])\r\n\r\n }\r\n\r\n if (btn.id==2){\r\n $scope.localVars[$scope.fd.id].downloadFile(file['resource'+$scope.fd.Related+'_id'],file['resource'+$scope.fd.Related+'_FileName'])\r\n\r\n }\r\n } \r\n /**********************************************************/\r\n /************ Populate ktResource smart table **************/\r\n /**********************************************************/\r\n $scope.localVars[$scope.fd.id].getDatasetDataForSmartTable = function(tableState, pageNumber,pageSize)\r\n {\r\n let deferred = $q.defer(); \r\n if ($scope.fd.Related!=null && $scope.fd.Related!=undefined && $scope.fd.Related!=\"\")\r\n {\r\n if (!$scope.resourceDefinition.form_definition)\r\n {\r\n \r\n let presentation_id = $scope.fd.PresentationId\r\n if (presentation_id==null || presentation_id===undefined) presentation_id=0\r\n var lang=$rootScope.globals.currentUser.lang;\r\n if ($scope.localVars[$scope.fd.id].gridData===undefined) $scope.localVars[$scope.fd.id].gridData = []\r\n \r\n //debugger //getDatasetDataForSmartTable //==ktRefreshData\r\n \r\n if (pageNumber==undefined) pageNumber = 1;\r\n if (pageSize==undefined) pageSize = 5;\r\n \r\n let items = $scope.formData[0][$scope.fd.FieldName] \r\n if (items==undefined) items = []\r\n if ($scope.localVars[$scope.fd.id].gridDataRetrieved === true || items.length===0)\r\n {\r\n \r\n $scope.localVars[$scope.fd.id].results.columns=$scope.localVars[$scope.fd.id].columnDefs\r\n $scope.localVars[$scope.fd.id].results.pageSize = pageSize;\r\n $scope.localVars[$scope.fd.id].results.count = $scope.localVars[$scope.fd.id].gridData.length\r\n $scope.localVars[$scope.fd.id].results.numberOfPages = Math.ceil($scope.localVars[$scope.fd.id].results.count/pageSize)\r\n $scope.localVars[$scope.fd.id].results.results = $scope.localVars[$scope.fd.id].gridData.slice( (pageNumber -1) * pageSize, pageNumber * pageSize)\r\n\r\n deferred.resolve({data: $scope.localVars[$scope.fd.id].results});\r\n }\r\n else\r\n {\r\n if (items!=[{}])\r\n {\r\n ResourcesDataService.getResourceDataDirectFilter($scope.fd.Related,{id__in: items},$scope.fd.GridState['columnsQuery']).then(function(data) {\r\n \r\n $scope.localVars[$scope.fd.id].gridDataRetrieved = true; \r\n \r\n $scope.localVars[$scope.fd.id].results.columns = $scope.fd.GridState['columnsDef']\r\n \r\n $scope.localVars[$scope.fd.id].results.pageSize = pageSize;\r\n $scope.localVars[$scope.fd.id].gridData = data.data\r\n $scope.localVars[$scope.fd.id].results.count = $scope.localVars[$scope.fd.id].gridData.length\r\n $scope.localVars[$scope.fd.id].results.numberOfPages = Math.ceil($scope.localVars[$scope.fd.id].results.count/pageSize)\r\n if ($scope.localVars[$scope.fd.id].gridData) \r\n $scope.localVars[$scope.fd.id].results.results = $scope.localVars[$scope.fd.id].gridData.slice( (pageNumber -1) * pageSize, pageNumber * pageSize)\r\n else \r\n $scope.localVars[$scope.fd.id].results = {}\r\n \r\n deferred.resolve({data: $scope.localVars[$scope.fd.id].results});\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }\r\n }\r\n }\r\n \r\n }else\r\n\r\n {\r\n\r\n MessagingService.addMessage($scope.fd.Parameters.ResourceType+' is not selected. Please select '+$scope.fd.Parameters.ResourceType,'info');\r\n deferred.resolve({data: $scope.localVars[$scope.fd.id].results});\r\n }\r\n \r\n return deferred.promise;\r\n }\r\n \r\n /*\r\n $scope.$watch('itemValue.val',function(newValue,oldValue){\r\n if (newValue!=oldValue && newValue!=undefined)\r\n {\r\n // $scope.fd.Parameters.ChildResource \r\n \r\n }\r\n });\r\n */\r\n \r\n $scope.search=[\r\n {id:1,filter:'onlist',name:\"On list:\",icon:\"fa fa-chevron-right\"},\r\n {id:2,filter:'notonlist',name:\"Not on list:\",icon:\"fa fa-expand\"},\r\n ];\r\n\t\t\t\t\r\n if ($scope.fd!=undefined) {\r\n if ($scope.fd.Search==undefined)\r\n {\r\n $scope.fd.Search=$scope.search[0]; //MIGOR TODO - greska kod incijacije za multiple , mozda treba kod promjene na multiple ovo jos jednom okinuti\r\n }\r\n } \r\n\r\n\t\t\t $scope.applySearchFilters = function(index) {\r\n \r\n\t\t\t\t $scope.fd.Search=$scope.search[index];\r\n $scope.fd.Search.value = [ $scope.formData[0][$scope.fd.FieldName] ];\r\n $scope.fd.isOpen=false;\t\t\r\n\t\t\t };\r\n \r\n \r\n $scope.src_type_text=CODES_CONST._POPULATE_TYPE_ \r\n \r\n $scope.fd.inputParamsDatasets = {placeholder:'Select dataset...',label:'Dataset',name:'datasets',columnSizeLabel:'col-24',\r\n hideLabel:false,paddingLeft:true,dropdownSize:'col-24',labelTextSize:'label-xs text-muted',sizeXs:true};\r\n \r\n \r\n $scope.fd.inputParamsSearchForm = {placeholder:'Select task...',label:'Search form task',name:'tasks',columnSizeLabel:'col-24',\r\n hideLabel:false,paddingLeft:true,dropdownSize:'col-24',labelTextSize:'label-xs text-muted',sizeXs:true};\r\n \r\n \r\n var lang = $rootScope.globals.currentUser.lang;\r\n \r\n $scope.localVars[$scope.fd.id].isResourceSelected = false;\r\n \r\n\t\t\t\t$scope.localVars[$scope.fd.id].selectedDataRecord=false;\r\n\t\t\t\t$scope.taskId=0;\r\n \r\n $scope.localVars[$scope.fd.id].showForm = false;\r\n \r\n $scope.localVars[$scope.fd.id].gridOptions ={}\r\n\t\r\n\t\t\t\t\t \r\n $scope.fd.RelationshipType = $scope.fd.MaxLength;\r\n\r\n\t\t\tif ($scope.fd.localVars==undefined) $scope.fd.localVars={}\r\n \r\n $scope.fd.ParentDatasetDefId=$scope.fd.Related;\r\n if ($scope.resourceDefinition!=undefined)\r\n {\r\n $scope.taskId=$scope.resourceDefinition.ResourceDefId;\r\n $scope.prevTaskExeId = $scope.resourceDefinition.prev_task_id;\r\n $scope.formType=$scope.resourceDefinition.form_type;\r\n $scope.source_type=$scope.resourceDefinition.source_type;\r\n $scope.taskInitiateId = $scope.resourceDefinition.task_initiate_id;\r\n $scope.taskExecuteId = $scope.resourceDefinition.task_execute_id;\r\n $scope.formDefinition = $scope.resourceDefinition.form_definition;\r\n \r\n \r\n \r\n }\r\n \r\n if ($scope.taskId==undefined) $scope.taskId=0\r\n $scope.fd.gridsterType = \"resource\";\r\n \r\n $scope.localVars[$scope.fd.id].resourceDashboard = {\r\n \t\t\t\tid: '1',\r\n \t\t\t\tname: 'Home',\r\n \t\t\t\twidgets: [],\r\n data:{}\r\n\t\t\t\t} ;\r\n if ($scope.formDefinition==undefined) $scope.formDefinition=false;\r\n \r\n $scope.fd.resourceRecordId=0;\r\n if ($scope.taskInitiateId==undefined)\r\n {\r\n $scope.taskInitiateId =0;\r\n \r\n }\r\n if ($scope.taskExecuteId==undefined)\r\n {\r\n $scope.taskExecuteId =0;\r\n \r\n }\r\n if ($scope.prevTaskExeId==undefined)\r\n {\r\n $scope.prevTaskExeId =0;\r\n }\r\n /*if ($scope.fd.PresentationType==null)\r\n {\r\n $scope.fd.PresentationType = 1;\r\n }*/\r\n \r\n \r\n $scope.fd.resourcesList=[];\r\n $scope.fd.resourceListLength=0;\r\n $scope.fd.selectedResource = 0;\r\n //if ($scope.fd.Related!=null) $scope.fd.selectedDataset = $scope.fd.Related;\r\n\t\t\r\n /*\r\n $scope.localVars[$scope.fd.id].addEvent=function()\r\n {\r\n if ($scope.fd.Parameters.events==undefined) $scope.fd.Parameters.events=[]\r\n $scope.fd.Parameters.events.push({actions:[]}) \r\n }\r\n\r\n $scope.localVars[$scope.fd.id].addAction=function(event)\r\n {\r\n if (event.actions==undefined) event.actions=[]\r\n event.actions.push({}) \r\n }\r\n\r\n $scope.localVars[$scope.fd.id].insertAction=function(event,index)\r\n {\r\n if (event.actions==undefined) event.actions=[]\r\n event.actions.splice(index,0,{}) \r\n }\r\n $scope.localVars[$scope.fd.id].delAction=function(event,index)\r\n {\r\n if (event.actions==undefined) event.actions=[]\r\n if (event.actions.length>index) event.actions.splice(index,1) \r\n }\r\n */\r\n //*********************************************************************************************\r\n //************************************ GET DATASET LIST ***************************************\r\n\t\t//*********************************************************************************************\r\n $scope.localVars[$scope.fd.id].getResources = function(element_type,search) {\r\n\t\t\tconst lang=$rootScope.globals.currentUser.lang\r\n $scope.fd.RelatedLoaded=false\r\n //set widget variables\r\n\r\n //$scope.fd.ElementType=element_type\r\n\r\n ResourcesDataService.getResourceDefListByTypeFilter(lang,element_type,search,$scope.fd.selectedResource).then(\r\n\t\t\t function(data) {\r\n\t\t\t\t\t\t\t\t\t\r\n \t\t\t $scope.fd.resourcesList = data.data;\r\n \r\n if (!Array.isArray($scope.fd.resourcesList)) $scope.fd.resourcesList=[]; \r\n \r\n if ($scope.fd.Related!=null)\r\n {\r\n $scope.fd.resourceId = $scope.fd.Related;\r\n $scope.fd.resourceListLength = $scope.fd.resourcesList.length;\r\n //select dataset from dropdown\r\n var pos = $scope.fd.resourcesList.map(function(e) { return e.id; }).indexOf($scope.fd.resourceId);\r\n\r\n if (pos>=0){\r\n $scope.fd.selectedResource=$scope.fd.resourcesList[pos];\r\n \r\n $scope.fd.isResourceSelected=true;\r\n }\r\n \r\n }\r\n\r\n \r\n\t\t\t\t\t\t\tif ( !$scope.localVars[$scope.fd.id].publishedLoaded ) $scope.localVars[$scope.fd.id].getPublishedResources()\r\n \r\n $scope.fd.RelatedLoaded=true;\r\n \t\t\t\t\t\t\t\t\t\t\t \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t\t\t\t\t\t });\r\n };\t \r\n\r\n $scope.localVars[$scope.fd.id].getPublishedResources=function()\r\n {\r\n if ($scope.localVars[$scope.fd.id]!=undefined)\r\n {\r\n $scope.localVars[$scope.fd.id].publishedLoaded=false \r\n ResourcesDataService.GetPublishedResourcesByTypeId($scope.fd.Related,'form').then(\r\n function (data) { \r\n if ($scope.localVars[$scope.fd.id]!=undefined)\r\n {\r\n $scope.localVars[$scope.fd.id].publishedResourceList = data.data\r\n $scope.localVars[$scope.fd.id].publishedLoaded=true\r\n if ($scope.formDefinition && $scope.fd.GridState?.columnsDef!=undefined) \r\n\r\n {\r\n $scope.localVars[$scope.fd.id].gridDataRetrieved = true\r\n $scope.localVars[$scope.fd.id].resourceDataDownloaded = true\r\n \r\n }\r\n if ($scope.fd.Parameters.PublishedResourceId!=undefined) {\r\n if ($scope.fd.PresentationType==2) $scope.fd.ShowSearchForm = true\r\n $scope.localVars[$scope.fd.id].getPublishedResourceById($scope.fd.Parameters.PublishedResourceId,$scope.fd.ShowSearchForm)\r\n }\r\n }else MessagingService.addMessage('Error in localVars = '+$scope.fd.UuidRef,'error')\r\n\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }else MessagingService.addMessage('Error - localVars = '+$scope.localVars[$scope.fd.id],'error');\r\n } \r\n \r\n\t\t\t\r\n $scope.fd.resourceDataRecordSelected=false;\r\n\r\n \r\n\r\n $scope.localVars[$scope.fd.id].ShowForm = function(id) \r\n { \r\n $scope.localVars[$scope.fd.id].getPublishedResourceById(id,true)\r\n \r\n }\r\n\r\n $scope.localVars[$scope.fd.id].ShowSearchForm = function(id) \r\n { let show_search_form\r\n if ($scope.fd.ShowSearchForm) show_search_form = false\r\n else show_search_form = true\r\n $scope.localVars[$scope.fd.id].getPublishedResourceById(id,show_search_form)\r\n \r\n }\r\n\t\t/*********************************************************************************************/\r\n /******************************* GET PUBLISHED DATASET DETAILS *******************************/\r\n /*********************************************************************************************/\t\r\n\r\n $scope.localVars[$scope.fd.id].getPublishedResourceById = function(id,show_search_form) \r\n {\r\n \r\n let pos\r\n let old_publish_id = $scope.fd.Parameters.PublishedResourceId\r\n \r\n pos = $scope.localVars[$scope.fd.id].publishedResourceList.map(function(e) { return e.id; }).indexOf(id);\r\n \r\n if (pos>=0){\r\n $scope.localVars[$scope.fd.id].publishedResource = $scope.localVars[$scope.fd.id].publishedResourceList[pos]\r\n if (show_search_form) {\r\n\r\n if ($scope.fd.FormDefSearch?.layout!==undefined && $scope.fd.FormDefSearch?.layout!==null && $scope.fd.FormDefSearch?.layout?.length>0) {\r\n //$scope.fd.FormDefinition.layout = $scope.fd.FormDef\r\n //$scope.localVars[$scope.fd.id].formLoaded=true;\r\n $scope.fd.formLoaded = true\r\n } else \r\n {\r\n \r\n $scope.fd.FormDefSearch={}\r\n\r\n ResourcesDataService.GetPublishedResourceById(id).then(function (data) {\r\n $scope.fd.FormDefSearch.layout = data.data.Form \r\n //$scope.fd.FormDefinition.layout = $scope.fd.FormDef\r\n //$scope.localVars[$scope.fd.id].formLoaded=true;\r\n $scope.fd.formLoaded = true\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.fd.formLoaded=true;\r\n });\r\n\r\n \r\n }\r\n }else $scope.fd.formLoaded=true;\r\n \r\n }else $scope.fd.formLoaded=true;\r\n } \r\n\r\n\r\n //*********************************************************************************************\r\n //************************************ GET TASK LIST ***************************************\r\n\t\t\t\t\t//*********************************************************************************************\r\n\t\t\t\t\t$scope.fd.getTasks = function(search) {\r\n\t\t\t\t\t\tvar lang=$rootScope.globals.currentUser.lang;\r\n ResourcesDataService.getResourceDefListByType(lang,'task').then(function(data) {\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t $scope.fd.taskList = data.data;\r\n \r\n\t\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t\t\t\t\t\t });\r\n }\r\n\t\t\t\t\t\r\n // $scope.fd.getTasks('');\r\n \r\n\t\t\t\t // when confirm selection clicked\r\n /*\r\n $scope.fd.confirmSelection = function ()\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t$scope.fd.SearchFormDownloaded=false;\r\n\t\t\t\t\t\t\t$scope.fd.resourceDashboard.widgets.length=0;\r\n\t\t\t\t\t }\r\n \t$scope.fd.cancel = function ()\r\n\t\t\t\t\t\t{\r\n $scope.fd.SearchFormDownloaded=false;\r\n $scope.fd.resourceDashboard.widgets.length=0;\r\n\r\n }\r\n */\r\n\t\r\n \r\n $scope.fd.rowSelectionChanged = function(row){\r\n \r\n $scope.formData[0][$scope.fd.FieldName]=row\r\n $scope.localVars[$scope.fd.id].selectedResourceRecord = row\r\n $scope.localVars[$scope.fd.id].selectedResourceRecordId = row[$scope.localVars[$scope.fd.id].TablePrefix+'_id']; \r\n $scope.localVars[$scope.fd.id].isRecordSelected=row.isSelected;\r\n // count selected\r\n $scope.fd.resourceDataRecordSelected=$scope.formData[0][$scope.fd.FieldName].length; \r\n \r\n WidgetDataExchangeService.setData({\r\n DEI: [{name:'resourceLinkDataset',value:[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:$scope.localVars[$scope.fd.id].selectedResourceRecordId},\r\n {name:'resourceRecordIds',value:row},{name:'resourceRecordsAll',value:$scope.localVars[$scope.fd.id].gridOptions.data}]}],\r\n widgetId: $scope.fd.PresentationId,task_execute_id:$scope.taskExecuteId});\r\n\r\n };\r\n \r\n /* delete selected child record*/\r\n $scope.localVars[$scope.fd.id].deleteChildRecord = function()\r\n {\r\n var lang = $rootScope.globals.currentUser.lang;\r\n if ($scope.localVars[$scope.fd.id].parentResourceRecordId>0 && $scope.localVars[$scope.fd.id].isRecordSelected)\r\n {\r\n \r\n ResourcesDataService.DeleteChildRelationship($scope.fd.PresentationId,$scope.parentResourceDefId,$scope.localVars[$scope.fd.id].parentResourceRecordId,$scope.localVars[$scope.fd.id].selectedResourceRecordId).then(function(data) {\r\n MessagingService.addMessage(data.data,'success');\r\n $scope.localVars[$scope.fd.id].gridData.length=0\r\n $scope.localVars[$scope.fd.id].isRecordSelected = false\r\n $scope.localVars[$scope.fd.id].GetResourceDataForParent();\r\n\r\n },function(error){ \r\n MessagingService.addMessage(error.data,'error');\r\n });\r\n } \r\n }\r\n /* \r\n $scope.fd.getResourceDataRefresh = function (retValue) \r\n {\r\n var lang = $rootScope.globals.currentUser.lang;\r\n //ToDo ovo prebaciti sve u jedan API poziv\r\n if ($scope.resourceRecordId>0)\r\n {\r\n ResourcesDataService.getResourceDataM2m($scope.fd.PresentationId,$scope.parentResourceDefId,$scope.fd.Related,$scope.resourceRecordId).then(function(data) {\r\n $scope.formData[0][$scope.fd.FieldName] = data; \r\n $scope.setupGrid(data); \r\n },function(error){ \r\n MessagingService.addMessage(error,'error');\r\n\t\t\t\t\t\t\t\t\t});\r\n } \r\n }\r\n */ \r\n\r\n $scope.localVars[$scope.fd.id].GetResourceDataForParent = function () \r\n {\r\n var lang = $rootScope.globals.currentUser.lang;\r\n if ($scope.localVars[$scope.fd.id].parentResourceRecordId>0)\r\n {\r\n $scope.localVars[$scope.fd.id].gridDataRetrieved = false\r\n //$scope.formData[0][$scope.fd.FieldName]={}\r\n ResourcesDataService.getResourceDataM2m($scope.fd.PresentationId,$scope.parentResourceDefId,$scope.fd.Related,$scope.localVars[$scope.fd.id].parentResourceRecordId,$scope.taskId,$scope.fd.ItemId,lang).then(function(data) {\r\n $scope.formData[0][$scope.fd.FieldName] = data; \r\n // $scope.localVars[$scope.fd.id].setupGridNew(data); BUG TODO!\r\n $scope.localVars[$scope.fd.id].setupGridNew(data); \r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n } \r\n }\r\n\r\n\r\n $scope.linkedWidgetId = 0;\r\n \r\n if ($scope.fd.Search!=undefined) $scope.linkedWidgetId = $scope.fd.Search.WidgetId;\r\n \r\n var refresh_list_from_callback=function(data)\r\n {\r\n $scope.fd.refreshDatasetDataList(\"\",true,$scope.lData); \r\n }\r\n \r\n \r\n $scope.fd.localVars.datasetItems= []\r\n\t\t\t\r\n\t\t\t\r\n $scope.fd.refreshDatasetDataList = function(search,apply,val)\r\n {\r\n\t\t\t\t//debugger\r\n var lang = $rootScope.globals.currentUser.lang;\r\n //ToDo ovo prebaciti sve u jedan API poziv\r\n if ($scope.fd.PresentationId!=null && $scope.fd.PresentationId!=undefined && $scope.fd.NameField?.id!=undefined && $scope.fd.NameField?.name!=undefined)\r\n {\r\n var ctrl = this;\r\n this.l_apply = apply;\r\n this.l_val = val;\r\n let fromCache=true;\r\n \r\n //ResourcesDataService.getResourceDataList($scope.fd.Related,$scope.fd.PresentationId,lang,search).then(function(data) {\r\n ResourcesDataService.getResourceDataListAll($scope.fd.Related,$scope.fd.PresentationId,lang,fromCache,refresh_list_from_callback,$scope.fd.NameField).then(function(data) {\r\n \r\n if ($scope.itemValue.val==undefined || $scope.itemValue.val==null)\r\n {\r\n if (Array.isArray($scope.formData))\r\n {\r\n if (Array.isArray($scope.formData[0][$scope.fd.FieldName]))\r\n for (let i=0;i<$scope.formData[0][$scope.fd.FieldName].length;i++)\r\n {\r\n if ($scope.fd.MaxLength==1) $scope.itemValue.val={'id':$scope.formData[0][$scope.fd.FieldName][i]};\r\n else\r\n \r\n {\r\n $scope.itemValue.val = [];\r\n $scope.itemValue.val.push ({'id':$scope.formData[0][$scope.fd.FieldName][i]});\r\n \r\n }\r\n }\r\n }\r\n \r\n }\r\n \r\n if ($scope.fd.ShowField)\r\n {\r\n $scope.fd.localVars.datasetItems = angular.copy(data.data)\r\n if ($scope.fd.localVars.datasetItems.length>0)\r\n {\r\n //if (!$scope.fd.Required && $scope.fd.localVars.datasetItems[0].id!=null) $scope.fd.localVars.datasetItems.unshift({id:null});\r\n\r\n //select value if exists\r\n if (typeof($scope.formData[0][$scope.fd.FieldName])=='number')\r\n {\r\n let pos = $scope.fd.localVars.datasetItems.map(function(e) { return e.id; }).indexOf($scope.formData[0][$scope.fd.FieldName]);\r\n \r\n if (pos>=0) $scope.formData[0][$scope.fd.FieldName] = $scope.fd.localVars.datasetItems[pos]\r\n\r\n if ($scope.fd.ReadOnly) $scope.fd.selectItem($scope.formData[0][$scope.fd.FieldName])\r\n\r\n }\r\n }\r\n \r\n }\r\n else\r\n {\r\n $scope.fd.localVars.datasetItemsHidden = angular.copy(data.data)\r\n /*\r\n if ($scope.fd.localVars.datasetItemsHidden.length>0)\r\n {\r\n if (!$scope.fd.Required && $scope.fd.localVars.datasetItemsHidden[0].id!=null) $scope.fd.localVars.datasetItemsHidden.unshift({id:null}); \r\n }\r\n */\r\n }\r\n $timeout(function(){\r\n //if (!$scope.fd.ReadOnly) $scope.loadDropdown($scope.fd.localVars.datasetItems);\r\n $scope.fd.dataReady = true\r\n //if (ctrl.l_apply) apply_value(ctrl.l_val); //TODO - migor uncomment later when bug is found\r\n\t\t\t\t\t\t\t\t\r\n });\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t\t\t\t\t});\r\n \r\n }\r\n };\r\n \r\n \r\n \r\n /************ Call task when magnifier is clicked or autoSearch=true **************/\r\n \r\n $scope.fd.SelectDatasetRecords = function(taskId,autoSearch){\r\n \r\n // $scope.PreInitiateTask(taskId,0);\r\n $scope.fd.autoSearchLocal=autoSearch;\r\n $scope.localVars.showForm = true;\r\n if (!$scope.fd.searchFormDownloaded)\r\n { \r\n if (taskId==undefined || taskId==null || taskId==0) MessagingService.addMessage(\"Error in definition!! Search form is not assigned to dataset.\",\"error\");\r\n else \r\n {\r\n $scope.localVars.StartTask(taskId,0,0);\r\n //$rootScope.$broadcast(\"ProcessTask\"+$scope.fd.presentationId,{'taskId':taskId,'task_execute_id':$scope.taskExecuteId});\r\n //if (autoSearch) $scope.fd.ConfirmSelection();\r\n \r\n $scope.fd.searchFormDownloaded=true;\r\n \r\n }\r\n }\r\n };\r\n \r\n \r\n $scope.localVars[$scope.fd.id].downloadFile = function(fileId,fileName){\r\n ResourcesDataService.downloadFile($scope.fd.Related,fileId).then(function(data) {\r\n \r\n MessagingService.addMessage('File '+fileName+' downloaded','info');\r\n var url = URL.createObjectURL(new Blob([data.data]));\r\n var a = document.createElement('a');\r\n a.href = url;\r\n a.download = fileName;\r\n a.target = '_blank';\r\n a.click();\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n \r\n });\r\n };// dowload file END\r\n \r\n \r\n $scope.localVars[$scope.fd.id].previewFile = function(fileId,fileName,fileType){\r\n \r\n ResourcesDataService.downloadFile($scope.fd.Related,fileId).then(function(data) {\r\n \r\n var url = URL.createObjectURL(new Blob([data.data],{type:fileType}));\r\n let new_doc = window.open(url,\"_blank\");\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n \r\n });\r\n };// preview file END\r\n \r\n \r\n /*\r\n var localWidgetId=\"\"; \r\n $scope.$on(\"Event\"+localWidgetId+\"resourceLinkDataset\",function(event,data){\r\n \r\n for (var i=0;i0) $scope.formData[0][$scope.fd.FieldName]=items;\r\n }\r\n \r\n if ($scope.fd.PresentationType==0)\r\n {\r\n if ($scope.localVars[$scope.fd.id].gridOptions.data!=undefined)\r\n {\r\n if (items.length>0 && $scope.localVars[$scope.fd.id].gridOptions.data.length0 && items!=[{}]) $scope.fd.getDatasetDirect($scope.fd.Related,{'id__in':items});\r\n \r\n }\r\n }\r\n }\r\n \r\n if ($scope.fd.PresentationType==1 && items.length>0) $scope.fd.getDatasetList();\r\n \r\n //$scope.fd.searchFormDownloaded=false;\r\n \r\n \r\n $scope.localVars.showForm = false;\r\n };\r\n /*\r\n Cancel selection - cancel selection from search form \r\n */\r\n \r\n $scope.fd.CancelSelection = function(){\r\n $scope.localVars.showForm = false;\r\n \r\n }\r\n \r\n \r\n //**********************************************************\r\n // GET FORM FIELDS\r\n //********************************************************** \r\n \r\n $scope.fd.getFormFields = function(){\r\n \r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n \r\n ResourcesDataService.getFormFields($scope.fd.Related,lang).then(function(data) {\r\n \r\n $scope.fd.presentationElements= data.data;\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n \r\n });\r\n \r\n };\r\n \r\n \r\n //**********************************************************\r\n // Clear saerch task dropdown\r\n //********************************************************** \r\n \r\n $scope.localVars[$scope.fd.id].clearSearchTask = function(event,select){\r\n $scope.fd.Search.taskId = null;\r\n };\r\n //**********************************************************\r\n // Remove selected records from grid\r\n //********************************************************** \r\n \r\n \r\n \r\n $scope.localVars[$scope.fd.id].setupGridNew= function(data)\r\n {\r\n $scope.localVars[$scope.fd.id].gridData = data.data;\r\n if (!$scope.localVars[$scope.fd.id].columnDefs) $scope.localVars[$scope.fd.id].columnDefs = $scope.fd['GridState']['columnsDef'] //data.columnsDef;\r\n $scope.localVars[$scope.fd.id].gridDataRetrieved = true\r\n $scope.ksm.executeAction(valueStateName,\"dataLoaded\", {data:$scope.localVars[$scope.fd.id].gridData});\r\n $scope.ksm.executeAction(wrStateName,\"widgetReady\", {widget:$scope.fd.UuidRef,processed:true});\r\n \r\n }\r\n \r\n \r\n $scope.localVars[$scope.fd.id].saveGridState= function(show_message) {\r\n //debugger //ktTaskDatasetList smarttable\r\n let columnsDef = $scope.localVars[$scope.fd.id].columnDefs\r\n\r\n let columnsQuery = $scope.localVars[$scope.fd.id].columnsForQuery\r\n $scope.fd['GridState']={'columnsDef':columnsDef,'columnsQuery': columnsQuery}\r\n \r\n if (show_message)\r\n MessagingService.addMessage(\"To make changes stick please save form\",'info'); \r\n };\r\n\r\n $scope.localVars[$scope.fd.id].restoreGridState= function() {\r\n //debugger\r\n if ($scope.fd['GridState']!==undefined && $scope.fd['GridState']!==null)\r\n {\r\n \r\n if ($scope.fd['GridState']['columnsDef']!==undefined) $scope.localVars[$scope.fd.id].columnDefs = $scope.fd['GridState']['columnsDef']\r\n if ($scope.fd['GridState']['columnsQuery']!==undefined) $scope.localVars[$scope.fd.id].columnsForQuery = $scope.fd['GridState']['columnsQuery']\r\n\r\n }\r\n }; \r\n \r\n if ($scope.fd['GridState']!==undefined && $scope.fd['GridState']!==null) $scope.localVars[$scope.fd.id].restoreGridState();\r\n\r\n $scope.localVars[$scope.fd.id].getResourceDataRelated= function () {\r\n\r\n $scope.filter = {};\r\n var lang = $rootScope.globals.currentUser.lang;\r\n\r\n //scope.activity.activityMessage = ProcessingService.setActivityMsg('Retriving data '+scope.selectedResource);\r\n //$scope.filter = ResourcesDataService.prepareResourceWidgetData($scope.dashboard.widgets,-1);\r\n \r\n if ($scope.fd.selectedResource==null) {\r\n $scope.fd.selectedResourceId = $scope.fd.Related;\r\n }else\r\n {\r\n $scope.fd.selectedResourceId = $scope.fd.selectedResource.id;\r\n \r\n }\r\n // ResourcesDataService.getResourceDataFiltered($scope.fd.Related,lang,$scope.filter).then(function(data) {//MIGOR\r\n ResourcesDataService.getResourceDataFiltered($scope.fd.Related,$scope.fd.ResourceId).then(function(data) {//MIGOR\r\n \r\n $scope.fd.setupGrid(data);\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n\r\n \r\n\t\t $scope.fd.getResourceDataFiltered = function () {\r\n\r\n $scope.filter = {};\r\n var lang = $rootScope.globals.currentUser.lang;\r\n\r\n //scope.activity.activityMessage = ProcessingService.setActivityMsg('Retriving data '+scope.selectedResource);\r\n //$scope.filter = ResourcesDataService.prepareResourceWidgetData($scope.dashboard.widgets,-1);\r\n \r\n if ($scope.fd.selectedResource==null) {\r\n $scope.fd.selectedResourceId = $scope.fd.Related;\r\n }else\r\n {\r\n $scope.fd.selectedResourceId = $scope.fd.selectedResource.id;\r\n \r\n }\r\n\t//\t\tResourcesDataService.getResourceDataFiltered($scope.fd.Related,lang,$scope.filter).then(function(data) {//MIGOR\r\n ResourcesDataService.getResourceDataFiltered($scope.fd.selectedResourceId,$scope.taskId,lang,$scope.fd.resourceDashboard.widgets).then(function(data) {//MIGOR\r\n \r\n $scope.fd.setupGrid(data);\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n\t\t\r\n\t\t\t\t\t\t\r\n \r\n $scope.fd.getResourceData = function () \r\n\t{\r\n // $scope.activity.activityMessage = ProcessingService.setActivityMsg('Downloading resource data for '+$scope.resourceId);\r\n var lang = $rootScope.globals.currentUser.lang;\r\n ResourcesDataService.getResourceData($scope.resourceId,$scope.taskId,lang).then(function(data) {\r\n \r\n $scope.localVars[$scope.fd.id].setupGridNew(data);\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n\t};\r\n \r\n if ($scope.localVars[$scope.fd.id].publishedResourceList==undefined) $scope.localVars[$scope.fd.id].publishedResourceList=[];\r\n var lang=$rootScope.globals.currentUser.lang;\r\n\r\n \r\n $scope.localVars[$scope.fd.id].GetRecordForView = function(datasetDefId,datasetRecordId){\r\n \r\n if (datasetRecordId===undefined) datasetRecordId=0\r\n if (datasetDefId===undefined) datasetDefId=0\r\n $scope.localVars[$scope.fd.id].resourceRecordId = datasetRecordId\r\n $scope.fd.ParentDatasetDefId = datasetDefId\r\n if ($scope.resourceDefinition.pageId==undefined) $scope.resourceDefinition.pageId=0\r\n\r\n let pageid = $scope.resourceDefinition.pageId\r\n let rinstance = $scope.resourceDefinition.page_instance_id\r\n let prev_resource_id = $scope.taskExecuteId\r\n if ($scope.fd.PopulateType.toString().substr(0,1)=='3')\r\n {\r\n //pageid = $scope.resourceDefinition.prev_page_id\r\n prev_resource_id = $scope.resourceDefinition.prev_page_instance_id\r\n \r\n }\r\n if (prev_resource_id==undefined) prev_resource_id=0\r\n\r\n TaskDataService.GetTaskViewResource($scope.fd.UuidRef,pageid,$scope.taskId,prev_resource_id,rinstance,'i',datasetDefId,datasetRecordId,$scope.fd.Parameters.PublishedResourceVersion).then(function(data) {\r\n\r\n let dataset_record\r\n if (Array.isArray(data.data.data))\r\n {\r\n if (data.data.length>0) dataset_record = data.data.data[0]\r\n else dataset_record={}\r\n }\r\n else dataset_record = data.data.data\r\n \r\n $scope.formData[0][$scope.fd.FieldName] = [dataset_record]\r\n\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n } \r\n\r\n //**********************************************************\r\n // GET DATASET DIRECT FILTER\r\n //********************************************************** \r\n $scope.fd.getDatasetDirect = function (relatedDatasetId,filter_data) {\r\n\r\n ResourcesDataService.getResourceDataDirectFilter(relatedDatasetId,filter_data,$scope.fd.GridState['columnsQuery']).then(function(data) {\r\n \r\n if ($scope.fd.PresentationType==0) $scope.localVars[$scope.fd.id].setupGridNew(data);\r\n else if ($scope.fd.PresentationType==2)\r\n {\r\n $scope.formData=[{}]\r\n $scope.formData[0][$scope.fd.FieldName]=data\r\n }\r\n // MessagingService.addMessage(data.msg,'success');\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n };\r\n \r\n $scope.localVars[$scope.fd.id].getColumnsDef = function () {\r\n\r\n \r\n ResourcesDataService. getResourceColumns($scope.fd.Parameters.PublishedResourceId,'dataset',lang,$scope.fd.Parameters.PublishedResourceVersion).then(function(data) {//MIGOR\r\n \r\n $scope.localVars[$scope.fd.id].columnDefs = data.data.columnsDef\r\n $scope.localVars[$scope.fd.id].results.columns = $scope.localVars[$scope.fd.id].columnDefs\r\n $scope.localVars[$scope.fd.id].resourceDataDownloaded = true;\r\n \r\n $scope.localVars[$scope.fd.id].saveGridState(false)\r\n \r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n\r\n }\r\n\r\n $scope.fd.selectItem = function(item)\r\n {\r\n $scope.ksm.executeAction(valueStateName,\"valueChanged\", {itemValue:{val:item}})\r\n }\r\n\r\n //element is selected\r\n $scope.localVars[$scope.fd.id].itemSelected = function(item,model)\r\n\r\n {\r\n $scope.fd.selectItem(item)\r\n }\r\n\r\n // Resource is selected\r\n $scope.fd.onSelectCallback = function (item, model)\r\n\t\t{\r\n var eventResultId=item.id;\r\n $scope.fd.eventResultName=item.name;\r\n \r\n $scope.fd.resourceId=eventResultId;\r\n $scope.fd.isResourceSelected=true;\r\n\t\t\t\t\r\n //if ($scope.fd.Parameters.ResourceRelationshipType==='existing')\r\n //{\r\n if (item.max_length!=undefined) $scope.fd.MaxLength=item.max_length\r\n if (item.db_type!=undefined) $scope.fd.Dbtype=item.db_type\r\n $scope.fd.Parameters.FieldNameRelatedParent=item.field_name\r\n\r\n if ($scope.fd.Parameters.FieldNameRelatedParent==undefined) $scope.fd.Parameters.FieldNameRelatedParent = 'Field'+item.rmdUid\r\n \r\n //}\r\n \t$scope.fd.Related=$scope.fd.resourceId;\r\n $scope.localVars[$scope.fd.id].getPublishedResources()\r\n if ($scope.fd.Related!=undefined && $scope.fd.Related!=null) $scope.fd.getFormFields();\r\n \r\n }\r\n \r\n // Resource is selected\r\n $scope.fd.onSelectPublished = function (item, model)\r\n\t\t{\r\n let pos = $scope.localVars[$scope.fd.id].publishedResourceList.map(function(e) { return e.id; }).indexOf(item?.id);\r\n let old_publish_id = $scope.fd.Parameters.PublishedResourceId\r\n if (pos>=0){\r\n $scope.fd.Parameters.PublishedResourceId = $scope.localVars[$scope.fd.id].publishedResourceList[pos].id\r\n $scope.fd.Parameters.ChildResourceName = $scope.fd.name+ ' ('+$scope.fd.id+')'\r\n $scope.fd.Parameters.PublishedResourceVersion = $scope.localVars[$scope.fd.id].publishedResourceList[pos].Version;\r\n if ($scope.fd.GridState?.columnsDef===undefined || $scope.fd.Parameters.PublishedResourceId !=old_publish_id) $scope.localVars[$scope.fd.id].getColumnsDef()\r\n else $scope.localVars[$scope.fd.id].resourceDataDownloaded =true\r\n }\r\n\r\n $scope.fd.Parameters.DefState = 'advanced'\r\n\r\n\r\n \r\n }\r\n\r\n $scope.fd.onSelectSearchForm= function (item, model)\r\n\t\t{\r\n \r\n if ($scope.fd.Search==undefined) $scope.fd['search']={taskId:item};\r\n else $scope.fd.Search.taskId = item;\r\n //$scope.fd.Search.widgetId=0; //ovo treba na serveru dohvatiti widgetId\r\n \r\n \r\n } \r\n\t\t\t \r\n if ($scope.fd.Parameters.UseUserProperty && $rootScope.globals.currentUser.uep?.AdvancedProperties!=undefined) $scope.formData[0][$scope.fd.FieldName] = $rootScope.globals.currentUser.uep?.AdvancedProperties[$scope.fd.Parameters.UserPropertyId]\r\n\r\n //ako ima odabranih dohvati ih i setupiraj\r\n if ($scope.formData!=undefined && $scope.fd.Parameters.GetData && !$scope.formDefinition)\r\n {\r\n if (Array.isArray($scope.formData) && $scope.formData.length>0)\r\n {\r\n if ($scope.formData[0][$scope.fd.FieldName]!=undefined && Array.isArray($scope.formData[0][$scope.fd.FieldName]))\r\n {\r\n\r\n if ($scope.fd.PresentationType==0)\r\n {\r\n //$scope.localVars[$scope.fd.id].resourceDataDownloaded =true\r\n if ($scope.formData[0][$scope.fd.FieldName]!=[{}] && $scope.fd.ElementType!='eresource') $scope.fd.getDatasetDirect($scope.fd.Related,{'id__in':[$scope.formData[0][$scope.fd.FieldName]]});\r\n else if ($scope.fd.ElementType=='eresource') \r\n {\r\n let f_data = {}\r\n f_data[$scope.fd.FieldName] = $scope.localVars[$scope.fd.id].parentResourceRecordId\r\n $scope.fd.getDatasetDirect($scope.fd.Related,f_data);\r\n }\r\n }\r\n else if ($scope.fd.PresentationType==1 && $scope.fd.ShowField)\r\n {\r\n $scope.fd.refreshDatasetDataList() // TODO - check why no parameters is sent to function\r\n }\r\n \r\n else if ($scope.fd.Related===null)\r\n {\r\n MessagingService.addMessage('Resource is not selected. Please select resource','info');\r\n }\r\n else if ($scope.fd.PresentationType==1 && $scope.fd.ShowField)\r\n {\r\n $scope.fd.refreshDatasetDataList()// TODO - check why no parameters is sent to function\r\n \r\n }else $scope.localVars[$scope.fd.id].GetResourceDataForParent()\r\n\r\n \r\n }\r\n else if ($scope.fd.PresentationType==1 && $scope.fd.ShowField)\r\n {\r\n $scope.fd.refreshDatasetDataList()// TODO - check why no parameters is sent to function\r\n\r\n }\r\n else if ($scope.fd.PresentationType==2 && typeof($scope.formData[0][$scope.fd.FieldName])=='number')\r\n { \r\n $scope.fd.itemValue = angular.copy($scope.formData[0][$scope.fd.FieldName])\r\n $scope.formData[0][$scope.fd.FieldName] = [{}]\r\n $scope.localVars[$scope.fd.id].GetRecordForView($scope.fd.Related,$scope.fd.itemValue);\r\n }\r\n else $scope.localVars[$scope.fd.id].GetResourceDataForParent() \r\n \r\n \r\n \r\n }\r\n }\r\n \r\n if ($scope.resourceDefinition.form_definition)\r\n {\r\n if ($scope.fd.Parameters.ResourceRelationshipType==='new' || $scope.fd.Parameters.ResourceRelationshipType==='view') $scope.localVars[$scope.fd.id].getResources($scope.fd.Parameters.ResourceType)\r\n else $scope.localVars[$scope.fd.id].getPublishedResources()\r\n }\r\n\r\n if ($scope.fd.Parameters.PublishedResourceId!=undefined) {\r\n\r\n if ($scope.formDefinition) {\r\n $scope.localVars[$scope.fd.id].getPublishedResources() \r\n $scope.fd.getFormFields()\r\n }\r\n else if($scope.fd.Parameters.GetData || $scope.fd.ShowSearchForm) $scope.localVars[$scope.fd.id].getPublishedResourceById($scope.fd.Parameters.PublishedResourceId,$scope.fd.ShowSearchForm)\r\n \r\n }\r\n\r\n $scope.processEvents = function(data,newRound)\r\n {\r\n\r\n UtilityService.process_events($scope.resourceDefinition.page_state_id,valueState,data,$scope.fd.Parameters.events,$scope.ksm,newRound)\r\n }\r\n\r\n //process events and execute actions\r\n if (!$scope.formDefinition && $scope.fd.Parameters?.events?.length>0) UtilityService.subscribe_2_events($scope.resourceDefinition.page_state_id,$scope.parentWidget,$scope.fd.Parameters.events,$scope,$scope.ksm)\r\n\r\n let template;\r\n if ($scope.formDefinition) template = $templateCache.get('ktdirectivetemplates/ktResource.html');\r\n else \r\n { \r\n if ($scope.fd.Parameters.ResourceType=='file') template = $templateCache.get('ktdirectivetemplates/ktFileExe.html')\r\n else template = $templateCache.get('ktdirectivetemplates/ktResourceExe.html')\r\n }\r\n\r\n\r\n \r\n $element.append($compile(template)($scope)); \r\n \r\n\t},//...controller\r\n\t\t\t\t\r\n \r\n link: function (scope, elem, attrs) {\r\n \t\tscope.localVars[scope.fd.id].datasetlistlinked = true\r\n }\r\n \r\n }\r\n};\n'use strict';\r\n\r\nexport function ktResourceDefinition () {\r\n \r\n return {\r\n restrict: 'A',\r\n scope:{\r\n resource:'=',\r\n \r\n },\r\n\ttemplateUrl: 'ktdirectivetemplates/ktResourceDefinition.html',\r\n controller: function ($scope,$rootScope,GridsterService,KatalyoStateManager,ResourcesDataService,MessagingService,CodesService)\r\n {\r\n $scope.gsrvc = GridsterService;\r\n \r\n $scope.ksm = KatalyoStateManager;\r\n \r\n \r\n $scope.EditResourceFn=function(val)\r\n {\r\n \r\n $scope.editResource=val;\r\n }\r\n let lang = $rootScope.globals.currentUser.lang;\r\n CodesService.getCodesByName('codestatus',lang).then(function (data) {\r\n $scope.resourceStatusList = data.data\r\n $scope.statusesDownloaded=true\r\n });\r\n\r\n $scope.saveResourceDef = function (forma) {\r\n \r\n if (forma.$valid)\r\n {\r\n ResourcesDataService.SaveResourceDef2($scope.resource).then(function(data) {\r\n \r\n if (data.status===200 || data.status==201)\r\n {\r\n MessagingService.addMessage(data.msg,'success'); \r\n }\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n \r\n });\r\n \r\n }else\r\n {\r\n \r\n MessagingService.addMessage(\"Please enter required data\",'warning'); \r\n }\r\n }; \r\n \r\n },\r\n link: function (scope, elem, attrs) {\r\n\t\t\t\t\r\n \r\n \r\n } \r\n \r\n }\r\n};\n'use strict';\r\n\r\nexport function ktResourceid () {\r\n \r\n return {\r\n restrict: 'A',\r\n\t//templateUrl: 'ktdirectivetemplates/ktResourceid.html',\r\n controller: function ($scope,GridsterService,KatalyoStateManager,$templateCache,$compile,$element)\r\n {\r\n $scope.gsrvc = GridsterService;\r\n \r\n $scope.ksm = KatalyoStateManager;\r\n if ($scope.fd.Parameters==undefined) $scope.fd.Parameters={};\r\n let resourceIdValue = null;\r\n if ($scope.formData!=undefined)\r\n {\r\n if ($scope.formData.length==0) $scope.formData=[{}]\r\n if (!Array.isArray($scope.formData)) $scope.formData=[{}]\r\n \r\n resourceIdValue=$scope.formData[0][$scope.fd.FieldName]\r\n \r\n }else $scope.formData=[{}];\r\n \r\n let parentWidgetUid = ''\r\n\r\n if ($scope.parentWidget!=undefined) parentWidgetUid = $scope.parentWidget+'-'\r\n\r\n let valueState= $scope.ksm.addSubject($scope.resourceDefinition.page_state_id+'-'+parentWidgetUid+$scope.fd.UuidRef,resourceIdValue);\r\n\r\n //let valueState= $scope.ksm.addSubject($scope.resourceDefinition.page_state_id+'-resourceidValueStateName'+$scope.fd.UuidRed,resourceIdValue);\r\n let valueStateName = valueState.subject.name;\r\n //valueState.subject.notifyObservers(\"valueChanged\"); \r\n \r\n let value_changed = function(data)\r\n {\r\n valueState.subject.setStateChanges = data;\r\n valueState.subject.notifyObservers(\"valueChanged\");\r\n };\r\n \r\n let action_value_changed = $scope.ksm.addAction(valueStateName,\"valueChanged\",value_changed);\r\n \r\n \r\n $scope.on_blur_action=function()\r\n {\r\n \r\n $scope.ksm.executeAction(valueStateName,\"valueChanged\", $scope.formData[0][$scope.fd.FieldName]);\r\n \r\n };\r\n \r\n \r\n \r\n let apply_value = function(data)\r\n {\r\n if (Array.isArray(data)) \r\n {\r\n if (data[0][$scope.fd.FieldName]==undefined) $scope.formData[0][$scope.fd.FieldName] = data[0][$scope.fd.FieldName]\r\n else if (data[0]['id']==undefined) $scope.formData[0][$scope.fd.FieldName] = data[0]['id']\r\n } \r\n else if (Object.prototype.toString.call(data) === '[object Object]') \r\n {\r\n if (data[$scope.fd.FieldName]==undefined) $scope.formData[0][$scope.fd.FieldName] = data[$scope.fd.FieldName]\r\n else if (data['id']==undefined) $scope.formData[0][$scope.fd.FieldName] = data['id']\r\n }\r\n\r\n $scope.ksm.executeAction(valueStateName,\"valueChanged\", $scope.formData[0][$scope.fd.FieldName]);\r\n }; \r\n // let observer_undo = $scope.ksm.subscribe(formChangesSubject,\"Field\"+$scope.fd.ItemId,\"valueChanged\",apply_value);\r\n if ($scope.fd.Parameters.DependentFieldId!=undefined && $scope.fd.Parameters.DependentFieldId!=null)\r\n \r\n {\r\n if ($scope.fd.Parameters.DependentFieldId!=\"\")\r\n {\r\n let dependent_field = \"Field\"+$scope.fd.PresentationId;\r\n let subscribedSubject = $scope.fd.Parameters.DependentFieldType+\"ValueStateName\"+$scope.fd.Parameters.DependentFieldId+$scope.resourceDefinition.transaction_id;\r\n let subject = $scope.ksm.addSubject(subscribedSubject,null); \r\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",apply_value);\r\n let val = $scope.ksm.getState(subscribedSubject);\r\n if (val.state!=null) apply_value(val.state);\r\n }\r\n }\r\n\r\n\t\t\t\tif ( $scope.fd.localVars==undefined) $scope.fd.localVars={}\r\n\r\n if (resourceIdValue!=undefined) $scope.ksm.executeAction(valueStateName,\"valueChanged\", resourceIdValue);\r\n\r\n let template\r\n if ($scope.resourceDefinition.form_definition) template = $templateCache.get('ktdirectivetemplates/ktResourceid.html');\r\n else template = $templateCache.get('ktdirectivetemplates/ktResourceidExe.html');\r\n \r\n $element.append($compile(template)($scope)); \r\n\r\n },\r\n link: function (scope, elem, attrs) {\r\n\t\t\t\t\r\n \r\n \r\n scope.search=[\r\n {id:1,filter:'gt',name:\"Greater than\",icon:\"fa fa-chevron-right\"},\r\n {id:2,filter:'between',name:\"Between\",icon:\"fa fa-expand\"},\r\n {id:3,filter:'lt',name:\"Lower than\",icon:\"fa fa-chevron-left\"},\r\n {id:4,filter:'eq',name:\"Equals\",icon:\"fa fa-bars\"} ];\r\n\t\t\t\t\r\n scope.refreshSearchValue = function() {\r\n if (scope.fd.Search) scope.fd.Search.Value=scope.formData[0][scope.fd.FieldName]; \r\n } \r\n \r\n if (scope.showSearchFilters) {\r\n scope.fd.Search=scope.search[3];//initialize to equals\r\n if (scope.fd.Search && scope.formData!=undefined && scope.formData.length>0) scope.fd.Search.Value=scope.formData[0][scope.fd.FieldName]; \r\n }\r\n \r\n scope.showProperties = function(event)\r\n {\r\n scope.gsrvc.setFieldProperties(scope.fd, scope.inputArray);// inputArray is parent\r\n \r\n };\r\n \r\n scope.applyFilters = function(index) {\r\n scope.fd.Search=scope.search[index];\r\n \r\n if (scope.formData[0][scope.fd.FieldName]) scope.fd.Search.Value=scope.formData[0][scope.fd.FieldName]; \r\n \r\n }\r\n \r\n }\r\n };\r\n};\n'use strict';\r\n\r\nexport function ktResourceRef () {\r\n return {\r\n restrict: 'A', \r\n controller: function ($scope, $rootScope,ResourcesDataService,ProcessingService,$timeout,MessagingService,GridsterService,UtilityService,WidgetDataExchangeService) {\r\n\t\r\n $scope.gsrvc = GridsterService;\r\n \t\r\n \t if ($scope.fd.localVars==undefined) $scope.fd.localVars={}; \r\n \t\t\t\t if (!$scope.fd.Parameters) $scope.fd.Parameters={}\r\n if ($scope.localVars==undefined) $scope.localVars={}; \r\n\r\n\t\t\t\t\t\t\r\n $scope.colLength = ['col-lg-2','col-lg-4','col-lg-6','col-lg-8','col-lg-10','col-lg-12','col-lg-14','col-lg-16','col-lg-18','col-lg-20','col-lg-22','col-lg-24'];\r\n \r\n\t \t\t\t$scope.fd.localVars.resourceTypesList=[{id:1,type:'page',name:'Page'},{id:2,name:'Dataset',type:'resource'},{id:3,name:'File',type:'file'},{id:4,name:'Application',type:'application'}]\r\n \t\t\t\t\t\r\n \t\t\t\t\t let w_actions=[\r\n {id:1,name:'valueChanged'}, \r\n ]\r\n\r\n let parentWidgetUid = ''\r\n\r\n if ($scope.parentWidget!=undefined) parentWidgetUid = $scope.parentWidget+'-'\r\n\r\n if ($scope.fd.UuidRef==undefined) $scope.fd.UuidRef=UtilityService.uuidv4()\r\n $scope.fd.Parameters.UuidRef = $scope.fd.UuidRef\r\n\r\n if (!$scope.fd.Saved) $scope.fd.ItemId = $scope.localVars.localWidgetId\r\n\t\t\t\t\r\n\t\t\t\tlet widgetDefinition = {actions: w_actions,name: 'resourceRefWidget',widgetLabel: 'Resource reference',widgetName: 'resourceRefWidget',widgetId: parentWidgetUid+$scope.fd.UuidRef,output:null,parentResourceId:$scope.resourceDefinition.uid };\r\n \r\n\t\t\t\t$scope.localVars.localWidgetId = WidgetDataExchangeService.registerWidget(widgetDefinition);\r\n \t\t\r\n\t\t\t\t\t// Resource type is selected\r\n $scope.fd.localVars.onSelectCallback = function (item, model){\r\n var eventResultId=item.id;\t\t\t\t\r\n } \r\n \r\n \r\n\t\t\t\t},//...controller\r\n\t\t\t\t\r\n templateUrl: 'ktdirectivetemplates/ktResourceRef.html',\r\n link: function (scope, elem, attrs) {\r\n\t\t\t\t \r\n if (!scope.fd.PopulateType) scope.fd.PopulateType=0\r\n }\r\n \r\n }\r\n};\n'use strict';\r\n\r\n\r\n\r\nexport function ktResourceSelector (ResourcesDataService,$rootScope,dragularService,$timeout,MessagingService) {\r\n\r\n return {\r\n restrict: 'A',\r\n templateUrl: 'ktdirectivetemplates/ktResourceSelector.html',\r\n scope:{\r\n selectedResource:'=',\r\n resourceTypesList:'=',\r\n parameters:'=',\r\n\r\n\r\n },\r\n link: function (scope, elem, attrs) {\r\n \r\n\r\n if (!scope.parameters) scope.parameters={}\r\n \r\n scope.getResources = function(resource_type) { \r\n \r\n \r\n if (scope.resourceList==undefined) {\r\n scope.resourceList={};\r\n scope.resourceList[resource_type]=[]\r\n }\r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n if (!scope.resourceList[scope.parameters.SelectedResourceType]?.length && scope.parameters.SelectedResourceType){\r\n\r\n ResourcesDataService.getResourceDefListByType(lang,resource_type).then(\r\n function(data) {\r\n scope.resourceList[resource_type] = data.data;\r\n scope.setResourceDd() \r\n if (scope.selectedResource?.id) scope.getPublishedResources() \r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n \r\n }\r\n \r\n scope.setResourceDd = function(){ \r\n let tmpResourceItem = scope.selectedResource\r\n if (!scope.selectedResource){\r\n let pos = scope.resourceList[scope.parameters.SelectedResourceType].map(function(e) { return e.id; }).indexOf(scope.selectedResource?.id);\r\n if (pos>=0) {\r\n scope.selectedResource= scope.resourceList[scope.parameters.SelectedResourceType][pos]\r\n }\r\n } \r\n }\r\n\r\n scope.getPublishedResources=function()\r\n {\r\n scope.publishedLoaded=false\r\n \r\n if (scope.publishedResourceList==undefined) \r\n {\r\n scope.publishedResourceList={};\r\n if (scope.parameters.SelectedResourceType) scope.publishedResourceList[scope.parameters.SelectedResourceType]=[]\r\n }\r\n\r\n ResourcesDataService.GetPublishedResourcesByTypeId(scope.selectedResource.id,'form').then(\r\n function (data) { \r\n \r\n scope.publishedResourceList[scope.parameters.SelectedResourceType] = data.data;\r\n scope.publishedLoaded=true\r\n\r\n if (!scope.parameters.SelectVersionDirect) {\r\n\r\n scope.parameters.PublishedResourceId = scope.publishedResourceList[scope.parameters.SelectedResourceType][0].id\r\n scope.parameters.PublishedResourceVersion = scope.publishedResourceList[scope.parameters.SelectedResourceType][0].Version\r\n }\r\n\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n } \r\n \r\n scope.GetPublishedResourcesByType = function(resource_type) { \r\n \r\n if (resource_type==undefined) resource_type = scope.resourceType\r\n if (scope.publishedResourceList==undefined) \r\n {\r\n scope.publishedResourceList={};\r\n if (scope.parameters.SelectedResourceType) scope.publishedResourceList[scope.parameters.SelectedResourceType]=[]\r\n }\r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n // we are in build mode, so we should invalidate cahce (useCache is false) TODO - provjeriti da li treba korisiti cache\r\n ResourcesDataService.GetPublishedResourcesByType(resource_type,'form', false).then(function (data) { \r\n //debugger //GetPublishedResourcesByType \r\n \r\n $timeout(function(){\r\n scope.publishedResourceList[scope.parameters.SelectedResourceType].length = 0; \r\n angular.extend(scope.publishedResourceList[scope.parameters.SelectedResourceType], data.data);\r\n\r\n })\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n } \r\n \r\n /* \r\n scope.confirm= function(){\r\n \r\n $timeout(function(){\r\n \r\n \r\n \r\n \r\n\r\n\r\n scope.selectedResourceItem.name_confirmed = scope.selectedResourceItem.name +' ('+scope.selectedResourceItem.id +')'\r\n scope.parameters.selectedResourceItem = {\r\n 'name_confirmed': scope.selectedResourceItem?.name_confirmed\r\n }\r\n\r\n\r\n \r\n scope.selectedResourceItem_c=scope.selectedResourceItemPublished; \r\n \r\n \r\n let published = scope.publishedResourceList[scope.publishedResourceList.length-1]\r\n \r\n if (published!=undefined)\r\n {\r\n scope.selectedResourceItem_c = published\r\n scope.parameters.PublishedResourceId = published.id\r\n scope.parameters.PublishedResourceVersion = published.Version\r\n }\r\n\r\n \r\n \r\n\r\n \r\n });\r\n \r\n };\r\n \r\n */ \r\n \r\n scope.onResourceSelectorCallback = function (item, model){\r\n\r\n let eventResultId=item.id;\r\n let eventResultName=item.name;\r\n let eventResultParentElementId =item.parentElementId;\r\n \r\n scope.selectedResource = item\r\n scope.parameters.PublishedResourceId=0\r\n scope.getPublishedResources()\r\n \r\n \r\n }\r\n\r\n scope.onResourceSelectorVersionCallback = function (item, model){\r\n\r\n scope.selectedResourceItemPublished = item\r\n scope.parameters.PublishedResourceId = item.id\r\n scope.parameters.PublishedResourceVersion = item.Version\r\n \r\n \r\n }\r\n\r\n if (scope.parameters.SelectedResourceType) scope.getResources(scope.parameters.SelectedResourceType)\r\n \r\n \r\n }\r\n }\r\n};\n'use strict';\r\n\r\nexport function ktRichtextbox () {\r\n \r\n return {\r\n restrict: 'A',\r\n controller: function ($scope,$rootScope,$templateCache,$element,$compile,GridsterService,WidgetDataExchangeService,CodesService,$sce) {\r\n $scope.gsrvc = GridsterService;\r\n if ($scope.localVars==undefined) $scope.localVars={};\r\n\t\t\t\t\t\tif ($scope.fd.localVars==undefined) $scope.fd.localVars={};\r\n \r\n\t\t\t\t\t\t$scope.fd.localVars.wdes = WidgetDataExchangeService\r\n $scope.fd.localVars.resourceDefinition=$scope.resourceDefinition\r\n if ($scope.formData==undefined)\r\n {\r\n $scope.formData = [{}]; \r\n } else if ($scope.formData.length==0) \r\n\t\t\t\t\t\t\t\t$scope.formData = [{}];\r\n \r\n $scope.fd.localVars.enableEditDefault=true\r\n var lang=$rootScope.globals.currentUser.lang;\r\n CodesService.getCodesByName('usertags',lang).then(\r\n\t\t\t\t\t\t\tfunction (data) {\r\n $scope.fd.tagList = data.data;\r\n \r\n var pos = $scope.fd.tagList.map(function(e) { return e.id; }).indexOf($scope.fd.UniqueId);\r\n\r\n if (pos>=0){\r\n $scope.fd.UniqueIdObj=$scope.fd.tagList[pos];\r\n \r\n }\r\n });\r\n \r\n if ($scope.formData[0]!=undefined && $scope.fd.ReadOnly) $scope.fd.readOnlyVal=$sce.trustAsHtml($scope.formData[0][$scope.fd.FieldName]);\r\n \r\n $scope.$watch(\"fd.ReadOnly\",function(newValue,oldValue){\r\n \r\n if (newValue)\r\n {\r\n //if ($scope.showSearchFilters)\r\n if ($scope.formData[0]!=undefined && $scope.fd.ReadOnly) $scope.fd.readOnlyVal=$sce.trustAsHtml($scope.formData[0][$scope.fd.FieldName]);\r\n } \r\n });\r\n \r\n\r\n $scope.isOpen=true;\r\n $scope.isOpen=false;\r\n \r\n $scope.search=[\r\n {id:1,filter:'begins',name:\"Begins with\",icon:\"fa fa-chevron-right\"},\r\n {id:2,filter:'contains',name:\"Contains\",icon:\"fa fa-expand\"},\r\n {id:3,filter:'ends',name:\"Ends with\",icon:\"fa fa-chevron-left\"},\r\n {id:4,filter:'eq',name:\"Equals\",icon:\"fa fa-bars\"} ];\r\n \r\n $scope.fd.localVars.EditDefault = function(){\r\n $scope.formData[0][$scope.fd.FieldName]=$scope.fd.DefaultValue\r\n\r\n }\r\n\r\n $scope.fd.SetDefault = function(){\r\n $scope.fd.DefaultValue = $scope.formData[0][$scope.fd.FieldName];\r\n }\r\n \r\n $scope.applyTextFilters = function(index) {\r\n $scope.fd.Search=$scope.search[index];\r\n if ($scope.fd.Search) $scope.fd.Search.value=$scope.fd.sItemValue; \r\n $scope.isOpen=false;\t\t\r\n };\r\n \r\n $scope.refreshSearchValue = function() {\r\n if ($scope.fd.Search) $scope.fd.Search.value=$scope.fd.sItemValue; \r\n };\r\n \r\n $scope.fd.onSelectUnique = function(item,model)\r\n {\r\n \r\n $scope.fd.UniqueId=item.id;\r\n }\r\n \r\n $scope.showProperties = function(event)\r\n {\r\n $scope.gsrvc.setFieldProperties($scope.fd,event);\r\n \r\n };\r\n \r\n if ($scope.fd.showSearchForm) {\r\n if ($scope.fd.Search==undefined) $scope.fd.Search=$scope.search[3];//initialize to equals\r\n }\r\n \r\n let template;\r\n if ($scope.resourceDefinition.form_definition) template = $templateCache.get('ktdirectivetemplates/ktRichtextbox.html');\r\n else template = $templateCache.get('ktdirectivetemplates/ktRichtextboxExe.html');\r\n \r\n $element.append($compile(template)($scope)); \r\n \r\n },\r\n \r\n link: function (scope, elem, attrs) {\r\n\t\t\t\t\r\n\r\n\r\n \r\n }\r\n };\r\n};\n'use strict';\r\n\r\nexport function ktRunPageDir ($rootScope,$location,KatalyoStateManager,ResourcesDataService,UtilityService,SettingsService,MessagingService,AuthenticationService,$timeout,$stateParams,GridsterService,MenuService,$state) {\r\n return {\r\n restrict: 'A',\r\n\t\t scope:{\r\n pageid:'=',\r\n pver:'=',\r\n envid:'=',\r\n exeuser:'=',\r\n pageType: '=?',\r\n },\r\n templateUrl: 'ktdirectivetemplates/ktRunPageDir.html',\r\n \r\n link: function (scope, elem, attrs) {\r\n \r\n \r\n scope.gridsterType =\"page\";\r\n\r\n var page_id = scope.pageid\r\n scope.page_version = scope.pver\r\n scope.resourceId = page_id\r\n\r\n var lang=$rootScope.globals.currentUser.lang;\r\n\r\n scope.localVars={page_state:{}};\r\n \r\n if ($stateParams.parameters!=undefined && $stateParams.parameters!=\"\") scope.localVars.page_state = {};\r\n \r\n scope.formRenderingCompleted=false;\r\n scope.ksm = KatalyoStateManager;\r\n scope.gsrvc = GridsterService\r\n scope.menu_service = MenuService\r\n\r\n scope.gsrvc.setFormViewType(2)\r\n scope.menu_service.resetPublicPage()\r\n\r\n let pageValueState\r\n let pageValueStateName \r\n let processWidgetsStateName,processWidgetsState\r\n let menuVisibility= scope.ksm.addSubject(\"menuVisibility\",scope.localVars.page_state?.Parameters);\r\n let menuVisibilityName = menuVisibility.subject.name;\r\n\r\n let page_value_changed = function(data)\r\n {\r\n pageValueState.subject.setStateChanges = data;\r\n pageValueState.subject.notifyObservers(\"pageValueChanged\");\r\n };\r\n \r\n let menu_visibility_changed = function(data)\r\n {\r\n menuVisibility.subject.setStateChanges = data;\r\n menuVisibility.subject.notifyObservers(\"menuVisibilityChanged\");\r\n };\r\n\r\n let menu_visibility_action = scope.ksm.addAction(menuVisibilityName,menuVisibilityName+\"Changed\",menu_visibility_changed);\r\n \r\n \r\n scope.setPageState = function () \r\n { \r\n let action_page_value_changed\r\n\r\n if ($stateParams.parameters?.page_state_id!=undefined && $stateParams.parameters?.page_state_id.trim()!=\"\" && $stateParams.parameters?.use_state) {\r\n //load state directly from params\r\n scope.localVars.page_state.page_state_id = $stateParams.parameters.page_state_id;\r\n scope.localVars.page_state.prev_page_state_id = $stateParams.parameters.prev_page_state_id\r\n scope.localVars.page_state.previousTask = $stateParams.parameters.prev_task\r\n pageValueState = scope.ksm.addSubject($stateParams.parameters.page_state_id,scope.localVars.page_state);\r\n pageValueStateName = pageValueState.subject.name\r\n \r\n if (pageValueState.status==='ok') \r\n action_page_value_changed = scope.ksm.addAction(pageValueStateName,\"pageValueChanged\",page_value_changed);\r\n\r\n } else if ($stateParams.parameters?.use_state || $stateParams.parameters?.use_state===undefined && $stateParams.parameters?.page_state_id!==undefined)\r\n { \r\n pageValueState = scope.ksm.addSubject($stateParams.parameters?.page_state_id,null);\r\n pageValueStateName = pageValueState.subject.name\r\n if (pageValueState.status==='ok') \r\n action_page_value_changed = scope.ksm.addAction(pageValueStateName,\"pageValueChanged\",page_value_changed);\r\n \r\n if (pageValueState.subject.currentStateIndex>=0){ //load last state\r\n scope.localVars.page_state = pageValueState.subject.getState;\r\n } else {\r\n //create new state\r\n //generate guid\r\n let uuid = UtilityService.uuidv4();\r\n scope.localVars.page_state.page_state_id = $state.current.name+\"-\"+page_id+\"-\"+uuid;\r\n scope.localVars.page_state.prev_page_state_id = $stateParams.parameters?.prev_page_state_id;\r\n scope.localVars.page_state.previousTask = $stateParams.parameters?.prev_task\r\n pageValueState = scope.ksm.addSubject(scope.localVars.page_state.page_state_id,null);\r\n pageValueStateName = pageValueState.subject.name\r\n \r\n if (pageValueState.status==='ok')\r\n action_page_value_changed = scope.ksm.addAction(pageValueStateName,\"pageValueChanged\",page_value_changed);\r\n \r\n scope.ksm.executeAction(pageValueStateName,\"pageValueChanged\", scope.localVars.page_state);\r\n }\r\n }\r\n else\r\n {\r\n //create new state\r\n //generate guid\r\n let uuid = UtilityService.uuidv4();\r\n scope.localVars.page_state.page_state_id = $state.current.name+\"-\"+page_id+\"-\"+uuid;\r\n scope.localVars.page_state.prev_page_state_id = $stateParams.parameters?.prev_page_state_id;\r\n scope.localVars.page_state.previousTask = $stateParams.parameters?.prev_task\r\n pageValueState = scope.ksm.addSubject(scope.localVars.page_state.page_state_id,null)\r\n pageValueStateName = pageValueState.subject.name\r\n if (pageValueState.status==='ok') \r\n action_page_value_changed = scope.ksm.addAction(pageValueStateName,\"pageValueChanged\",page_value_changed);\r\n \r\n scope.ksm.executeAction(pageValueStateName,\"pageValueChanged\", scope.localVars.page_state);\r\n }\r\n scope.resourceDefinition.page_state_id=scope.localVars.page_state.page_state_id\r\n scope.resourceDefinition.prev_page_state_id=scope.localVars.page_state.prev_page_state_id\r\n scope.resourceDefinition.pageId= scope.resourceId\r\n scope.resourceDefinition.page_instance_id= scope.localVars.page_state.page_instance_id\r\n scope.resourceDefinition.prev_page_id=scope.localVars.page_state.previousTask?.pageId\r\n scope.resourceDefinition.prev_page_instance_id=scope.localVars.page_state.previousTask?.page_instance_id\r\n \r\n scope.ksm.executeAction(menuVisibilityName,menuVisibilityName+\"Changed\", scope.localVars.page_state.Parameters);\r\n scope.setProcessWidgetEvent()\r\n }//setPageStateFN\r\n\r\n\r\n let widgets_processed = function(data)\r\n {\r\n processWidgetsState.subject.setStateChanges = data;\r\n processWidgetsState.subject.notifyObservers(\"widgets_processed\");\r\n \r\n }\r\n \r\n\r\n scope.getResourceForm = function () \r\n { \r\n ResourcesDataService.getResourceForm(scope.resourceId,'i',lang).then(\r\n function(data) {\r\n if (data.data.widgets.length>0){\r\n scope.dashboard = {widgets:{layout:data.data.widgets},data:{}}\r\n } else \r\n scope.dashboard={widgets : {layout:GridsterService.getEmptyTaskForm()},data:{}}; \r\n \r\n scope.resourceDefinition= data.data.resourceDefinition;\r\n scope.resourceDefinition.formParams = {formViewType:2}\r\n\r\n scope.gsrvc.setFormViewType(scope.resourceDefinition.formParams.formViewType)\r\n scope.resourceDefinition.form_definition = false\r\n\r\n scope.setPageState();\r\n if (scope.resourceDefinition.Parameters.setBgColor) \r\n scope.gsrvc.setBodyBgColor(scope.resourceDefinition.Parameters.bgColor)\r\n else scope.gsrvc.resetBodyBgColor()\r\n scope.pageLoaded=true\r\n \r\n if (scope.resourceDefinition.ParametersLang===undefined) \r\n scope.resourceDefinition.ParametersLang={InvalidFormMessage:'Please correct invalid entries'}\r\n else if (scope.resourceDefinition.ParametersLang.InvalidFormMessage===undefined) \r\n scope.resourceDefinition.ParametersLang.InvalidFormMessage = \"Please correct invalid entries\"\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n scope.pageLoaded=true\r\n \r\n });\r\n };\r\n \r\n scope.getResourceDefinition = function () {\r\n \r\n ResourcesDataService.getResourceDefAll(scope.resourceId).then(\r\n function(data) { \r\n scope.resource = data.data;\r\n if (scope.resource.Parameters==null) { \r\n scope.resource.Parameters = {navbar:true,sideMenu:true,pageGridItems:[{id:1}],grid:{NoOfRows:null,NoOfColumns:null,RowGap:null,ColumnGap:null}} \r\n }\r\n \r\n scope.localVars.page_state = scope.resource;\r\n scope.localVars.page_state.page_instance_id = scope.page_instance_id\r\n scope.localVars.sideMenus = scope.resource.ResourceExtended?.page_menu\r\n \r\n if (scope.localVars.sideMenus === undefined) scope.localVars.sideMenus = []\r\n if (scope.localVars.sideMenus.length>0) {\r\n if (scope.localVars.page_state.Parameters==undefined) scope.localVars.page_state.Parameters={}\r\n scope.localVars.page_state.Parameters.sideMenu = true \r\n }\r\n scope.getResourceForm()\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n };\r\n\r\n\r\n scope.setProcessWidgetEvent=function()\r\n {\r\n scope.$on('ProcessWidgets'+scope.localVars.page_state.page_state_id, \r\n function(event,data){ \r\n let form = scope['form'+scope.resourceId]\r\n form.$setSubmitted()\r\n scope.localVars.ProcessWidgets(form,data.action_index);\r\n });\r\n\r\n processWidgetsStateName= \"processWidgetsStateName\"+scope.localVars.page_state.page_state_id;\r\n processWidgetsState= scope.ksm.addSubject(processWidgetsStateName,scope.localVars.page_state.page_state_id);\r\n let action_widgets_processed = scope.ksm.addAction(processWidgetsStateName,\"widgets_processed\",widgets_processed);\r\n } \r\n\r\n \r\n scope.localVars.ProcessWidgets = function(form,action_idx)\r\n {\r\n var lang=$rootScope.globals.currentUser.lang;\r\n if (form.$valid) { \r\n ResourcesDataService.processWidgets(scope.resourceId,scope.dashboard.data,scope.localVars.page_state.page_instance_id,scope.page_version).then(\r\n function(data) { \r\n if (data?.data?.msg!==\"\") MessagingService.addMessage(data.data.msg,'success');\r\n $rootScope.$broadcast('ProcessWidgetPostProcess'+scope.localVars.page_state.page_state_id,data.data.ret_value);\r\n scope.ksm.executeAction(processWidgetsStateName,\"widgets_processed\",{page_id:scope.resourceId,action:'procwidgets','action_index':action_idx});\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n scope.ksm.executeAction(processWidgetsStateName,\"widgets_processed\",{page_id:scope.resourceId,action:'procwidgets','action_index':action_idx,'error':true}); \r\n });\r\n \r\n } // if (isValid)\r\n else {\r\n scope.ksm.executeAction(processWidgetsStateName,\"widgets_processed\",{page_id:scope.resourceId,action:'procwidgets','action_index':action_idx,'error':true}); \r\n MessagingService.addMessage(scope.resourceDefinition.ParametersLang.InvalidFormMessage,'warning'); \r\n }\r\n }; \r\n \r\n /*\r\n window.addEventListener('popstate', (e) => { // on browser \"Back\" click\r\n e.preventDefault(); \r\n let page_instance = $location.search().rinstance\r\n if(page_instance.toString()==\"0\") { // if initial load \r\n //window.history.pushState(null, null, null); // Prevent adding current URL to History API\r\n window.history.go(-2)\r\n }else window.history.back()\r\n \r\n });\r\n */\r\n \r\n \r\n scope.openSecuredPage = function(pageId, pageVersion)\r\n { \r\n let page_instance = $location.search().rinstance\r\n if (!pageVersion) pageVersion=0\r\n\r\n ResourcesDataService.openSecuredPage(pageId, pageVersion, page_instance).then(\r\n \r\n function(data) { \r\n //set page instance\r\n scope.page_instance_id = data?.data?.instance?.id\r\n $state.params.rinstance = scope.page_instance_id\r\n scope.resource = data?.data?.params;\r\n \r\n if (page_instance?.toString()==\"0\") // mijenja URL bez zvanja kontrolera\r\n $state.transitionTo($state.current.name, $state.params, { notify: false, location:'replace', inherit:true})\r\n if (scope.resource.Parameters==null) { \r\n scope.resource.Parameters = {navbar:true,sideMenu:true,pageGridItems:[{id:1}],grid:{NoOfRows:null,NoOfColumns:null,RowGap:null,ColumnGap:null}} \r\n }\r\n \r\n scope.localVars.page_state = scope.resource;\r\n scope.localVars.page_state.page_instance_id = scope.page_instance_id\r\n\r\n // here get page menu exe\r\n let type = 1\r\n let menu_id = scope.resource.ResourceExtended?.rlinks[0]?.Resource2\r\n let m_ver = scope.resource.ResourceExtended?.rlinks[0]?.Resource2_Version ?? 0\r\n\r\n scope.resourceDefinition= scope.resource //data.data.resourceDefinition;\r\n\r\n scope.resourceDefinition.formParams = {formViewType:2}\r\n\r\n scope.gsrvc.setFormViewType(scope.resourceDefinition.formParams.formViewType)\r\n scope.resourceDefinition.form_definition = false\r\n scope.resourceDefinition.ExeVersion = pageVersion\r\n if (scope.resourceDefinition.Parameters.setBgColor) scope.gsrvc.setBodyBgColor(scope.resourceDefinition.Parameters.bgColor)\r\n else scope.gsrvc.resetBodyBgColor()\r\n \r\n \r\n if (menu_id!=undefined) {\r\n MenuService.getMenusExe(menu_id,type,m_ver).then(\r\n function (datam) { \r\n scope.menu_service.setSideMenu(menu_id,m_ver,datam.menus,datam.properties) \r\n if (scope.menu_service.sideMenu.menus.length>0) {\r\n if (scope.localVars.page_state.Parameters==undefined) scope.localVars.page_state.Parameters={}\r\n scope.localVars.page_state.Parameters.sideMenu = true\r\n }\r\n scope.setPageState()\r\n scope.pageLoaded=true \r\n })\r\n } else {\r\n \r\n scope.menu_service.clearSideMenu()\r\n scope.setPageState()\r\n scope.pageLoaded=true\r\n }\r\n\r\n \r\n\r\n if (data.data.form.length>0)\r\n scope.dashboard = {widgets:{layout:data.data.form},data:{}}\r\n else \r\n scope.dashboard={widgets : {layout:GridsterService.getEmptyTaskForm()},data:{}}; \r\n \r\n \r\n \r\n \r\n \r\n if (scope.resourceDefinition.ParametersLang===undefined) \r\n scope.resourceDefinition.ParametersLang={InvalidFormMessage:'Please correct invalid entries'}\r\n else if (scope.resourceDefinition.ParametersLang.InvalidFormMessage===undefined) \r\n scope.resourceDefinition.ParametersLang.InvalidFormMessage = \"Please correct invalid entries\"\r\n \r\n },function(error){\r\n scope.formLoaded=true;\r\n scope.unauthorised = true; \r\n scope.pageLoaded=true \r\n $state.params.rinstance = undefined\r\n\r\n if (page_instance?.toString()==\"0\") \r\n $state.transitionTo( $state.current.name, $state.params, { notify: false, location:'replace', inherit:true}) \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n\r\n }\r\n\r\n\r\n scope.openPublicPage = function(orgId,pageId, pageVersion)\r\n {\r\n \r\n let page_instance = $location.search().rinstance\r\n\r\n let schemaname = $location.search().env\r\n\r\n if (schemaname) { \r\n sessionStorage.setItem(\"environment\", schemaname)\r\n $rootScope.globals.currentEnv = schemaname\r\n } else $state.go(\"app.otherwise\")\r\n\r\n scope.menu_service.setPublicPage(true)\r\n ResourcesDataService.openPublicPage(orgId,pageId, pageVersion, page_instance).then(\r\n function(data) {\r\n \r\n //set page instance\r\n scope.page_instance_id = data?.data?.instance?.id\r\n $state.params.rinstance = scope.page_instance_id\r\n \r\n if (page_instance?.toString()==\"0\") // mijenja URL bez zvanja kontrolera\r\n $state.transitionTo($state.current.name, $state.params, { notify: false, location:'replace', inherit:true})\r\n scope.resource = data?.data?.params;\r\n if (scope.resource.Parameters==null) { \r\n scope.resource.Parameters = {navbar:true,sideMenu:true,pageGridItems:[{id:1}],grid:{NoOfRows:null,NoOfColumns:null,RowGap:null,ColumnGap:null}} \r\n }\r\n \r\n scope.localVars.page_state = scope.resource;\r\n scope.localVars.page_state.page_instance_id = scope.page_instance_id\r\n\r\n scope.resourceId = scope.resource.uid\r\n \r\n let type = 1\r\n let menu_id = scope.resource.ResourceExtended?.rlinks[0]?.Resource2\r\n let m_ver = scope.resource.ResourceExtended?.rlinks[0]?.Resource2_Version ?? 0\r\n\r\n AuthenticationService.SetCredentials(data.data.api_user,data.data.api_user?.username, \"\",false);\r\n \r\n \r\n scope.resourceDefinition= scope.resource //data.data.resourceDefinition;\r\n scope.resourceDefinition.formParams = {formViewType:2}\r\n\r\n scope.gsrvc.setFormViewType(scope.resourceDefinition.formParams.formViewType)\r\n scope.resourceDefinition.form_definition = false\r\n\r\n if (scope.resourceDefinition.Parameters.setBgColor) \r\n scope.gsrvc.setBodyBgColor(scope.resourceDefinition.Parameters.bgColor)\r\n else scope.gsrvc.resetBodyBgColor()\r\n\r\n \r\n \r\n if (data.data.form.length>0)\r\n scope.dashboard = {widgets:{layout:data.data.form},data:{}}\r\n else \r\n scope.dashboard={widgets : {layout:GridsterService.getEmptyTaskForm()},data:{}}; \r\n\r\n scope.pageLoaded=true\r\n \r\n if (menu_id!=undefined) {\r\n MenuService.getMenusExe(menu_id,type,m_ver).then(\r\n function (datam) { \r\n scope.menu_service.setSideMenu(menu_id,m_ver,datam.menus,datam.properties)\r\n \r\n if (scope.menu_service.sideMenu.menus.length>0) {\r\n if (scope.localVars.page_state.Parameters==undefined) scope.localVars.page_state.Parameters={}\r\n scope.localVars.page_state.Parameters.sideMenu = true\r\n }\r\n scope.setPageState() \r\n \r\n })\r\n\r\n } else \r\n {\r\n scope.menu_service.clearSideMenu()\r\n scope.setPageState()\r\n }\r\n \r\n if (scope.resourceDefinition.ParametersLang===undefined) \r\n scope.resourceDefinition.ParametersLang={InvalidFormMessage:'Please correct invalid entries'}\r\n else if (scope.resourceDefinition.ParametersLang.InvalidFormMessage===undefined) \r\n scope.resourceDefinition.ParametersLang.InvalidFormMessage = \"Please correct invalid entries\" \r\n \r\n },function(error){\r\n scope.formLoaded=true;\r\n scope.unauthorised = true; \r\n scope.pageLoaded=true \r\n $state.params.rinstance = undefined\r\n if (page_instance?.toString()==\"0\") \r\n $state.transitionTo($state.current.name, $state.params, { notify: false, location:'replace', inherit:true}) \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n\r\n }\r\n\r\n scope.openSaasPage = function(envId,exeUser,pageId, pageVersion)\r\n {\r\n \r\n let page_instance = $location.search().rinstance\r\n\r\n let schemaname = $location.search().env\r\n\r\n if (schemaname) { \r\n sessionStorage.setItem(\"environment\", schemaname)\r\n $rootScope.globals.currentEnv = schemaname\r\n } else $state.go(\"app.otherwise\")\r\n\r\n ResourcesDataService.openSaasPage(envId,exeUser,pageId, pageVersion, page_instance).then(\r\n \r\n function(data) { \r\n //set page instance\r\n scope.page_instance_id = data?.data?.instance?.id\r\n $state.params.rinstance = scope.page_instance_id\r\n scope.resource = data?.data?.params;\r\n \r\n if (page_instance?.toString()==\"0\") // mijenja URL bez zvanja kontrolera\r\n $state.transitionTo($state.current.name, $state.params, { notify: false, location:'replace', inherit:true})\r\n if (scope.resource.Parameters==null) { \r\n scope.resource.Parameters = {navbar:true,sideMenu:true,pageGridItems:[{id:1}],grid:{NoOfRows:null,NoOfColumns:null,RowGap:null,ColumnGap:null}} \r\n }\r\n \r\n scope.localVars.page_state = scope.resource;\r\n scope.localVars.page_state.page_instance_id = scope.page_instance_id\r\n\r\n // here get page menu exe\r\n let type = 1\r\n let menu_id = scope.resource.ResourceExtended?.rlinks[0]?.Resource2\r\n let m_ver = scope.resource.ResourceExtended?.rlinks[0]?.Resource2_Version ?? 0\r\n\r\n scope.resourceDefinition= scope.resource //data.data.resourceDefinition;\r\n\r\n scope.resourceDefinition.formParams = {formViewType:2}\r\n\r\n scope.gsrvc.setFormViewType(scope.resourceDefinition.formParams.formViewType)\r\n scope.resourceDefinition.form_definition = false\r\n scope.resourceDefinition.ExeVersion = pageVersion\r\n if (scope.resourceDefinition.Parameters.setBgColor) scope.gsrvc.setBodyBgColor(scope.resourceDefinition.Parameters.bgColor)\r\n else scope.gsrvc.resetBodyBgColor()\r\n \r\n \r\n if (menu_id!=undefined) {\r\n MenuService.getMenusExe(menu_id,type,m_ver).then(\r\n function (datam) { \r\n scope.menu_service.setSideMenu(menu_id,m_ver,datam.menus,datam.properties) \r\n if (scope.menu_service.sideMenu.menus.length>0) {\r\n if (scope.localVars.page_state.Parameters==undefined) scope.localVars.page_state.Parameters={}\r\n scope.localVars.page_state.Parameters.sideMenu = true\r\n }\r\n scope.setPageState()\r\n scope.pageLoaded=true \r\n })\r\n } else {\r\n \r\n scope.menu_service.clearSideMenu()\r\n scope.setPageState()\r\n scope.pageLoaded=true\r\n }\r\n\r\n \r\n\r\n if (data.data.form.length>0)\r\n scope.dashboard = {widgets:{layout:data.data.form},data:{}}\r\n else \r\n scope.dashboard={widgets : {layout:GridsterService.getEmptyTaskForm()},data:{}}; \r\n \r\n \r\n \r\n \r\n \r\n if (scope.resourceDefinition.ParametersLang===undefined) \r\n scope.resourceDefinition.ParametersLang={InvalidFormMessage:'Please correct invalid entries'}\r\n else if (scope.resourceDefinition.ParametersLang.InvalidFormMessage===undefined) \r\n scope.resourceDefinition.ParametersLang.InvalidFormMessage = \"Please correct invalid entries\"\r\n \r\n },function(error){\r\n scope.formLoaded=true;\r\n scope.unauthorised = true; \r\n scope.pageLoaded=true \r\n $state.params.rinstance = undefined\r\n\r\n if (page_instance?.toString()==\"0\") \r\n $state.transitionTo( $state.current.name, $state.params, { notify: false, location:'replace', inherit:true}) \r\n MessagingService.addMessage(error.msg,'error'); \r\n }); \r\n\r\n }\r\n \r\n \r\n\r\n if (scope.resourceId != undefined){\r\n if (scope.pageType=='secured') scope.openSecuredPage(scope.resourceId, scope.page_version);\r\n else if (scope.pageType=='saas') scope.openSaasPage(scope.envid,scope.exeuser,scope.resourceId, scope.page_version);\r\n else if (scope.pageType=='public') scope.openPublicPage(scope.orgId,scope.resourceId, scope.page_version);\r\n } else{\r\n scope.formLoaded=true;\r\n scope.unauthorised = true; \r\n } \r\n\r\n \r\n \r\n }\r\n }\r\n}\n'use strict';\r\n\r\nexport function ktSearchBox () {\r\n return {\r\n restrict: 'A',\r\n\t\tcontroller: function ($scope,GridsterService,$templateCache,$compile,$element) {\r\n \r\n $scope.gsrvc = GridsterService;\r\n if ($scope.localVars==undefined) $scope.localVars = {};\r\n if ($scope.formData==undefined) $scope.formData = [{}];\r\n if ($scope.fd.Parameters==undefined) $scope.fd.Parameters = {};\r\n \r\n $scope.fd.setStep = function() {\r\n $scope.fd.stepValue =parseFloat(Math.pow(0.1,$scope.fd.Parameters.NoOfDecimals)).toFixed($scope.fd.Parameters.NoOfDecimals);\r\n }; \r\n \r\n if ($scope.fd.stepValue==null || $scope.fd.stepValue==undefined) $scope.fd.setStep();\r\n \r\n \r\n if ($scope.fd.showSearchForm) \r\n {\r\n if ($scope.fd.search==undefined) $scope.fd.search=$scope.search[3];//initialize to equals\r\n if ($scope.fd.search) $scope.fd.search.value=$scope.fd.sItemValue; \r\n }\r\n \r\n $scope.search=[\r\n\t\t\t \t{id:1,filter:'gt',name:\"Greater than\",icon:\"fa fa-chevron-right\"},\r\n\t\t\t \t{id:2,filter:'between',name:\"Between\",icon:\"fa fa-expand\"},\r\n\t\t\t \t{id:3,filter:'lt',name:\"Lower than\",icon:\"fa fa-chevron-left\"},\r\n\t\t\t \t{id:4,filter:'eq',name:\"Equals\",icon:\"fa fa-bars\"} ];\r\n \r\n $scope.formatNumber = function()\r\n {\r\n if ($scope.formData[0][$scope.fd.FieldName]!=undefined)\r\n {\r\n $scope.formatedNumber = $scope.formData[0][$scope.fd.FieldName].toLocaleString(navigator.language,{minimumFractionDigits:$scope.fd.Parameters.NoOfDecimals,maximumFractionDigits:$scope.fd.Parameters.NoOfDecimals});\r\n \r\n }else $scope.formatedNumber = \"\";\r\n }\r\n \r\n \r\n \r\n $scope.fd.formatNumberBlockchain = function(input)\r\n {\r\n let formatedNumber;\r\n let web3;\r\n if ($scope.fd.Parameters.ConvertBlockchainFormat)\r\n {\r\n if (input!=undefined)\r\n {\r\n \r\n\r\n if (window.ethereum)\r\n {\r\n web3 = new Web3(window.ethereum);\r\n }else if (window.web3)\r\n {\r\n web3 = new Web3(window.web3);\r\n console.log(web3);\r\n }\r\n \r\n else if ($rootScope.globals.currentUser.web3Infura)\r\n {\r\n web3 = new Web3($rootScope.globals.currentUser.web3Infura); \r\n } else\r\n {\r\n console.log('web3 provider not available');\r\n \r\n return input;\r\n }\r\n if ($scope.fd.Parameters.FromArray!=undefined) input = $scope.formData[0][$scope.fd.Parameters.SourceFieldName][$scope.fd.Parameters.FromArray];\r\n \r\n formatedNumber = web3.utils.fromWei(input.toLocaleString('fullwide', {useGrouping:false}), 'ether').toLocaleString(undefined,{minimumFractionDigits:$scope.fd.Parameters.NoOfDecimals,maximumFractionDigits:18});\r\n \r\n \r\n }else formatedNumber = input;\r\n }else formatedNumber=input;\r\n if ($scope.fd.Parameters.ConvertToDays) formatedNumber = formatedNumber/86400; \r\n return formatedNumber;\r\n }\r\n \r\n let template;\r\n if ($scope.resourceDefinition.form_definition) template = $templateCache.get('ktdirectivetemplates/ktSearchBox.html');\r\n else template = $templateCache.get('ktdirectivetemplates/ktSearchBoxExe.html');\r\n $element.append($compile(template)($scope)); \r\n\r\n },\r\n \r\n link: function (scope, elem, attrs) {\r\n \r\n\t\t\t\tscope.isOpen=true;\r\n \r\n scope.refreshSearchValue = function() {\r\n if (scope.fd.search) scope.fd.search.value=scope.fd.sItemValue; \r\n }; \r\n \r\n if (scope.fd.showSearchForm) {\r\n if (scope.fd.search==undefined) scope.fd.search=scope.search[3];//initialize to equals\r\n if (scope.fd.search) scope.fd.search.value=scope.fd.sItemValue; \r\n }\r\n \r\n scope.showProperties = function(event) {\r\n \t\t\t scope.gsrvc.setFieldProperties(scope.fd, scope.inputArray);// inputArray is parent\r\n };\r\n \r\n scope.applyNumFilters = function(index) {\r\n\t\t\t\t scope.fd.search=scope.search[index];\r\n if (scope.fd.sItemValue) scope.fd.search.value=scope.fd.sItemValue;\r\n\t\t\t\t scope.isOpen=false;\t\t\r\n };\r\n \r\n }\r\n \r\n }\r\n};\r\n\t\t\r\n \r\n \n'use strict';\n\nexport function ktSelectGeneric () {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktSelectGeneric.html',\n scope: {\n inputParameters: '=',\n selectedItem: '=',\n inputArray: '=',\n requiredField: '=?',\n onSelectFn: '&',\n refreshFn: '&',\n },\n controller: function(UserService,ResourcesDataService,$rootScope,ProcessingService){},\n link: function (scope, elem, attrs) {\n \n scope.onSelectItem = function(item,model) {\n scope.onSelectFn(item,model);\n }\n \n scope.refreshResults = function(filter) {\n scope.refreshFn(filter);\n }\n \n }\n }\n \n};\n'use strict';\n\nexport function ktSelectGroups () {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktSelectGroups.html',\n /* scope:{\n selectedItems:'=',\n },*/\n controller: function($scope,UserService){\n \n \n \n $scope.groupList=[];\n \n $scope.getGroups = function () {\n UserService.getUsersGroups('groups').then(function(data){\n $scope.groupList = data.data;\n $scope.groupsDownloaded=true;\n });\n \n }\n \n $scope.getGroups();\n \n },\n link: function (scope, elem, attrs) {\n \n \n \n \n \n \n \n }\n\n }\n};\n'use strict';\n\nexport function ktSelectGroupsWithScope () {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktSelectGroupsWithScope.html',\n scope:{\n selectedItems:'=',\r\n size:'=?',\r\n selectId:'=',\n },\n controller: function($scope,UserService){\r\n $scope.selected={groups:$scope.selectedItems};\r\n \r\n \r\n $scope.$watch('selected.groups',function(newValue,oldValue){\r\n \r\n if (newValue!=oldValue && newValue!==undefined)\r\n {\r\n $scope.selectedItems=newValue;\r\n }\r\n });\r\n \r\n \r\n $scope.groupList=[];\r\n //if ($scope.selectedItems==undefined) $scope.selectedItems=[]\r\n\r\n $scope.getGroups = function () {\r\n UserService.getUsersGroups('groups').then(function(data){\r\n $scope.groupList = data.data;\r\n $scope.groupsDownloaded = true;\r\n\t\t\t\t});\r\n\r\n }\r\n\t\t\t\t$scope.getGroups();\r\n },\n link: function (scope, elem, attrs) {\n \n \n \n \n \n \n \n\n }\n\n }\n};\n'use strict';\n\nexport function ktSelectUsers (UserService,$timeout) {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktSelectUsers.html',\n controller: function($scope, UserService){\n \n $scope.userList=[];\n $scope.getUsers = function () {\n \n UserService.getUsersGroups('users').then(function(data){\n $scope.userList = data.data;\n $scope.usersDownloaded=true;\n //$scope.addCurrentUser();\n });\n }\n\t\t\n $scope.getUsers(); \n \n },\n \n link: function (scope, elem, attrs) {\n \n }//LInk\n }\n};\n'use strict';\n\nexport function ktSelectUsersWithScope (UserService) {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktSelectUsersWithScope.html',\n scope:{\n selectedItems:'=',\n size:'=?',\n selectId:'=',\n },\n controller: function(UserService){},\n link: function (scope, elem, attrs) {\n\n\n \n scope.userList=[];\n //if (scope.selectedItems==undefined) scope.selectedItems=[]\n scope.selected={users:scope.selectedItems};\n \n \n \n scope.$watch('selected.users',function(newValue,oldValue){\n \n if (newValue!==oldValue && newValue!==undefined)\n {\n scope.selectedItems=newValue;\n }\n });\n \n\n scope.getUsers = function () {\n //debugger\n \n UserService.getUsersGroups('users').then(function(data){\n scope.userList = angular.copy(data.data);\n scope.usersDownloaded = true;\n\t\t\t\t});\n\n }\n\t\t\t\tscope.getUsers();\n\n \n \n scope.userSelected = function(item,model) {\n \n \n /*\n var pos = scope.selectedItems.map(function(e) { return e.id; }).indexOf(item.id);\n \n if (pos<0){\n scope.selectedItems.push(angular.copy(item));\n \n }\n */ \n\n };\n \n }\n }\n};\n'use strict';\n\nexport function ktSeparator () {\n return {\n restrict: 'A',\n\t\t\t controller: function ($scope,GridsterService) {\n \r\n $scope.gsrvc = GridsterService;\r\n $scope.showProperties = function(event)\r\n {\r\n $scope.gsrvc.setFieldProperties($scope.fd,event);\r\n };\n\n },\n templateUrl: 'ktdirectivetemplates/ktSeparator.html',\n link: function (scope, elem, attrs) {\n\n }\n };\n};\n'use strict';\n\nexport function ktSimpleUser (UserService) {\n\n\treturn {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktSimpleUser.html',\n scope:{\n selectedUser : '=',\n userList: '=',\n selectedUserModel: '='\n }, \n\t\t controller: function(UserService){},\n link: function (scope, elem, attrs) {\n \n console.log('scope user list')\n console.log(scope.userList);\n /* scope.getUsers = function () {\n UserService.getUsersGroups('users').then(function(data){\n scope.userList = data.data;\n scope.selectedUserModel = UserService.getUserObjectById(scope.selectedUser); \n scope.selectedUser = scope.selectedUserModel.id; \n });\n }*/\n \n scope.populateUser = function (item,model) { \n scope.selectedUserModel = item;\n scope.selectedUser = item.id; \n \t\t};\n \n\n }\n }\n};\n'use strict';\r\n\r\nexport function ktSmartCards($timeout, UtilityService, ResourcesDataService,MessagingService) {\r\n return {\r\n restrict: 'EA',\r\n controller: function ($scope, $rootScope, $filter, $timeout, UtilityService, ResourcesDataService,MessagingService,$sce,$element) {\r\n \r\n $scope.displayTableData = [];\r\n $scope.priority= { min:1, max:3 }\r\n $scope.isSortChanged = true\r\n $scope.Math = window.Math;\r\n $scope.local= { stItemsOnPage:$scope.itemsOnPage}\r\n $scope.showTableConfigMenu=false\r\n $scope.pageItemsList = [5,10,25,50,100,250,500,1000];\r\n $scope.myFormat={}\r\n $scope.langCode = $rootScope.globals.currentUser.langObj.Code\r\n $scope.leftCss=\"left: 0px;\" \r\n if ($scope.fontSize==undefined ) $scope.fontSize = \"1rem\" \r\n $scope.CTRL='ktSmartCards'\r\n if ($scope.clientSide==undefined) $scope.clientSide=false;\r\n if ($scope.usePagination==undefined) $scope.usePagination=false;\r\n if ($scope.tableData!=undefined) $scope.displayTableData = $scope.tableData;\r\n // PARAMETERS DEFAULTS\r\n if ($scope.parameters===undefined) $scope.parameters.table = { } \r\n if ($scope.parameters.table==undefined) $scope.parameters.table = { }\r\n \r\n if ($scope.parameters.PagerLabel1===undefined) $scope.parameters.PagerLabel1 ='items per page | Page:'\r\n if ($scope.parameters.PagerLabel2===undefined) $scope.parameters.PagerLabel2 ='of'\r\n if ($scope.parameters.PagerLabel3===undefined) $scope.parameters.PagerLabel3 ='items' \r\n if ($scope.parameters.PagerMaxPages===undefined) {\r\n $scope.parameters.PagerMaxPages = 10\r\n if (window.innerWidth<992) \r\n $scope.parameters.PagerMaxPages = Math.round($scope.parameters.PagerMaxPages/2)\r\n } else if ($scope.parameters.PagerMaxPages>=10) {\r\n if (window.innerWidth<992) \r\n $scope.parameters.PagerMaxPages = Math.round($scope.parameters.PagerMaxPages/2)\r\n }\r\n \r\n\r\n if ($scope.parameters.table.VerticalSpacing==undefined) $scope.parameters.table.VerticalSpacing=0\r\n \r\n \r\n /* Array.prototype.sortBy = function (propertyName, sortDirection) { // should be used instead GETSORTMEHTOD !!\r\n // sortDirection : true=ascending, false=descending\r\n var sortArguments = arguments;\r\n this.sort(function (objA, objB) {\r\n\r\n var result = 0;\r\n for (var argIndex = 0; argIndex < sortArguments.length && result === 0; argIndex += 2) {\r\n\r\n var propertyName = sortArguments[argIndex];\r\n result = (objA[propertyName] < objB[propertyName]) ? -1 : (objA[propertyName] > objB[propertyName]) ? 1 : 0;\r\n\r\n //Reverse if sort order is false (DESC)\r\n result *= !sortArguments[argIndex + 1] ? 1 : -1;\r\n }\r\n return result;\r\n });\r\n\r\n }*/\r\n \r\n $scope.getSortMethod = UtilityService.getSortMethod\r\n \r\n \r\n $scope.sortGridData = function ()\r\n {\r\n $scope.isSortChanged = false \r\n let sortArguments = []\r\n var allTableData = $scope.gridData()\r\n \r\n if (allTableData!=undefined && allTableData.length >1 ) {\r\n for (const col of $scope.columnDefs) { \r\n if (col.sort =='ascending' || col.sort =='descending') {\r\n sortArguments.push(col.sort[0] + col.name) \r\n } \r\n }\r\n // var langCode = $rootScope.globals?.currentUser?.langObj?.Code ?? 'en-GB'\r\n allTableData.sort ($scope.getSortMethod(sortArguments,$rootScope.globals?.currentUser?.langObj?.Code )); \r\n }\r\n \r\n }\r\n \r\n \r\n const numFormat = new Intl.NumberFormat(\"de-DE\", {\r\n maximumFractionDigits: 2 ,\r\n minimumFractionDigits: 2\r\n });\r\n \r\n \r\n \r\n \r\n $scope.getItem = function (column,item)\r\n { \r\n let val;\r\n if (item.resourcedeflang_set) {\r\n val = get(item,column.name, null) // For RESOURCE LIST table\r\n }\r\n else {\r\n val = item[column.name] //for user data\r\n }\r\n \r\n if (val===null || val===undefined) return \"∅\"; \r\n //debugger //smarttable //getItem\r\n \r\n if (column.cellFilter) { //DATE FORMAT\r\n if (column.cellFilter.substring(0,4).trim()==\"date\") \r\n val = $filter(column.cellFilter.substring(0,4))(val,column.cellFilter.substring(6,column.cellFilter.length).trim());\r\n }\r\n \r\n // number.toString().replace(/\\./g, ',') # replace dot with comma\r\n if (column.ElementType == \"number\") val = $scope.myFormat[column.id].format(val)\r\n \r\n return val;\r\n };\r\n \r\n \r\n $scope.rowSelected = function(row) \r\n { \r\n $scope.rowSelectedCount = row.isSelected;\r\n $scope.positionCss=\"left: \"+$scope.cursorPositionLeft+\"px\"\r\n $scope.rowSelectedChange({item:row}); \r\n };\r\n \r\n $scope.setActionsPosition = function(event,index) \r\n { \r\n let currentTargetOffsetLeft = event.currentTarget.offsetLeft \r\n \r\n // let actions = $element[0].getElementsByClassName(\"sm-actions\"+index)\r\n let table = document.getElementById(\"tblcontainer\"+$scope.parameters.UuidRef)\r\n // if (actions.length) actions[0].offsetLeft = currentTargetOffsetLeft\r\n $scope.cursorPositionLeft = currentTargetOffsetLeft - table.scrollLeft + event.offsetX\r\n }; \r\n \r\n $scope.copycolumnDefs = function() \r\n {\r\n //debugger //copycolumnDefs\r\n for (let item of $scope.columnDefs) {\r\n if (item.sort == \"true\" || item.sort == \"reverse\") {\r\n $timeout(function() {\r\n if ($scope.sortColumnDefs) $scope.sortColumnDefs.push(item) })\r\n }\r\n } \r\n }\r\n \r\n \r\n $scope.dropSuccess = function() { // NOT USED - DEMONSTRATION OF \"ACTION ON DROP\"\r\n for (let src of $scope.sortColumnDefs) {\r\n for (let dst of $scope.columnDefs) {\r\n if (src == dst) {\r\n //debugger\r\n }\r\n } \r\n }\r\n }\r\n \r\n \r\n $scope.sortFilter = function (item) { \r\n return item.sort === 'true' || item.sort === 'reverse'; \r\n };\r\n \r\n \r\n $scope.toggleTableConfigMenu = function()\r\n {\r\n $scope.showTableConfigMenu = !$scope.showTableConfigMenu\r\n }\r\n \r\n $scope.toggleSortMenu = function()\r\n {\r\n $scope.showSortMenu = !$scope.showSortMenu\r\n }\r\n \r\n \r\n $scope.selectPage = function (page) { \r\n $scope.$broadcast ('selectPage', page);//send to smart-table controller\r\n };\r\n \r\n \r\n $scope.printTable = function()\r\n { \r\n let columns=[]\r\n var output=\"
\"\r\n output = output+ \"
\" \r\n var data= $scope.gridData()\r\n \r\n\r\n // PRINT HEADER\r\n output = output+ \"
\" \r\n var columnStyles=''\r\n for (let i=0; i< $scope.columnDefs.length;i++) {\r\n let col = $scope.columnDefs[i]\r\n if (col.visible == true) {\r\n let colClass=\"cell col\" + i \r\n if ( col.ElementType == \"number\" ) \r\n output = output + \"
\" + col.displayName + \"
\";\r\n else \r\n output = output + \"
\" + col.displayName + \"
\";\r\n columnStyles+= ' .col' + i + ' { margin-left: 4px ; width:' + col.width + ' }' \r\n }\r\n }\r\n output = output+ \"
\" \r\n\r\n // PRINT DATA\r\n for(let row of data) {\r\n \r\n output = output+ \"
\"\r\n for (let i=0; i< $scope.columnDefs.length; i++) {\r\n let col = $scope.columnDefs[i]\r\n if (col.visible == true) {\r\n let colClass=\"cell col\" + i\r\n if ( col.ElementType == \"number\" ) {\r\n let formatted = row[col.name].toLocaleString( $scope.langCode || 'en-GB', { maximumFractionDigits: 2, minimumFractionDigits: 2 });\r\n output=output + '
'+ formatted + '
'\r\n }\r\n else {\r\n output=output + '
'+ row[col.name] + '
'\r\n }\r\n }\r\n } \r\n output = output+ \"
\" \r\n }\r\n \r\n /*\r\n var doc = document.implementation.createHTMLDocument('My title'); \r\n doc.head.innerHTML+=' ' \r\n doc.head.innerHTML+=' '\r\n doc.body.innerHTML+='
TEST
'\r\n */\r\n \r\n var strWindowFeatures = \"location=yes,height=570,width=520,scrollbars=yes,status=yes\";\r\n var win = window.open(\"\", \"_blank\", strWindowFeatures); \r\n \r\n win.document.body.innerHTML+=\r\n // ' ' \r\n // ' ' \r\n ' '\r\n \r\n win.document.body.innerHTML += output;\r\n\r\n }\r\n \r\n $scope.export2excel = function() {\r\n \r\n var wb = new ExcelJS.Workbook();\r\n if ($scope.parameters.excelExportTemplateFileType?.id!=undefined)\r\n {\r\n ResourcesDataService.downloadFile($scope.parameters.excelExportTemplateFileId , $scope.parameters.excelExportTemplateFileType.id)\r\n .then(function(data) {\r\n MessagingService.addMessage('File downloaded','info');\r\n $scope.template = data.data;\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error'); \r\n })\r\n .then( function(data) { \r\n wb.xlsx.load($scope.template).\r\n then(workbook => {\r\n workbook.eachSheet((sheet, id) => {\r\n if ($scope.$parent.formData) {\r\n let party_name = $scope.$parent.formData[Object.keys($scope.$parent.formData)[0]][0][\"party_name\"]\r\n let contract_number = $scope.$parent.formData[Object.keys($scope.$parent.formData)[0]][0][\"contract_number\"]\r\n sheet.getCell('A2').value = party_name;\r\n sheet.getCell('B3').value = contract_number; \r\n }\r\n \r\n let temp=[]\r\n let header=[]\r\n \r\n $scope.columnDefs.forEach( (col, i) => \r\n {\r\n if (col.visible) {\r\n header.push(col.displayName)\r\n let colWidth = col.width.replace(\"%\",\"\").replace(\"px\",\"\") // for Excel we dont want % or px\r\n temp.push({header: col.displayName, key:col.name, width: colWidth } ) \r\n } \r\n });\r\n \r\n sheet.columns = temp\r\n \r\n /*sheet.insertRow(6, header,'i') TODO - make header dynamicaly created\r\n sheet.spliceRows(5, 1); */\r\n var data = $scope.gridData()\r\n sheet.insertRows(7, data,'i') \r\n sheet.spliceRows(6, 1);\r\n //sheet.spliceRows(1, 1);\r\n sheet.getRow(1).hidden = true \r\n \r\n return workbook \r\n })\r\n \r\n \r\n workbook.xlsx.writeBuffer().then((data) => {\r\n const blob = new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8' });\r\n saveAs(blob, 'export.xlsx');\r\n }); \r\n \r\n })\r\n })\r\n }else MessagingService.addMessage('Export template is not defined!','warning');\r\n }\r\n \r\n \r\n \r\n $scope.exportTable = function()\r\n { \r\n const workbook = new ExcelJS.Workbook();\r\n const worksheet = workbook.addWorksheet('New Sheet'); \r\n let temp=[]\r\n let isDate={}\r\n let isList={}\r\n let isColumnVisible=[]\r\n \r\n for (let col of $scope.columnDefs) {\r\n if (col.visible) {\r\n isColumnVisible.push(col.name)\r\n temp.push({header: col.displayName, key:col.name})\r\n if (col.ElementType== 'list') isList[col.name] = true \r\n if (col.ElementType== 'date') isDate[col.name] = true \r\n }\r\n }\r\n \r\n worksheet.columns = temp\r\n //worksheet.columns = $scope.columnDefs.map(col => {header: col.displayName, key:col.name}); //TODO mozda ovo ubaciti umjesto gore\r\n\r\n var allTableData=$scope.gridData()\r\n var allExportData = []\r\n // creating data for export\r\n for (let row of allTableData) {\r\n let obj = {}\r\n for (let col of isColumnVisible) { \r\n obj[col] = row[col]\r\n if (row[col] && isList[col]) { //when list\r\n obj[col] = row[col]\r\n } \r\n if (row[col] && isDate[col]) { //when date\r\n obj[col] = new Date(row[col])\r\n } \r\n }\r\n allExportData.push(obj)\r\n }\r\n \r\n worksheet.addRows(allExportData)\r\n \r\n workbook.xlsx.writeBuffer().then((data) => {\r\n const blob = new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8' });\r\n saveAs(blob, 'export.xlsx');\r\n }); \r\n }\r\n \r\n \r\n $scope.refreshDataExt = function(pageNumber,pageSize) \r\n { \r\n $scope.tableState.pagination.number = pageSize;\r\n $scope.tableState.pagination.start = (pageNumber-1)*pageSize;\r\n $scope.refreshData($scope.tableState);\r\n }\r\n \r\n \r\n $scope.flipSort = function(tc) {\r\n if (tc.sort == undefined || tc.sort==\"\")\r\n tc.sort=\"ascending\"\r\n else if (tc.sort==\"ascending\") \r\n tc.sort=\"descending\" \r\n else if (tc.sort==\"descending\") \r\n tc.sort=\"\"\r\n \r\n $scope.isSortChanged = true\r\n\r\n \r\n }\r\n \r\n // REFRESH FUNCTION - CALLED FROM SMART-TABLE !!\r\n $scope.refreshData = function(tableState) \r\n { \r\n if (tableState.pagination.number==undefined || tableState.pagination.number==NaN) \r\n tableState.pagination.number=10;\r\n \r\n //debugger //refreshData\r\n if ( $scope.isSortChanged) {\r\n $scope.isSortChanged = false\r\n $scope.sortGridData() \r\n }\r\n \r\n //actually function GETDATASMARTTABLE in ktTaskDatasetList widget \r\n $scope.ktRefreshData({tableState: tableState, pageNumber:(tableState.pagination.start/tableState.pagination.number)+1, pageSize:tableState.pagination.number})\r\n .then(function (result) {\r\n //debugger //smarttable //get formated displayTabeData \r\n \r\n $scope.displayTableData = result.data.results;\r\n $scope.columnDefs = result.data.columns;\r\n $scope.totalMatched = result.data.count;\r\n\r\n \r\n for (const col of $scope.columnDefs) {\r\n var newFormat;\r\n let useGrouping = col.disableGrouping ? false : true\r\n \r\n if (col.decimalPlaces) \r\n newFormat = new Intl.NumberFormat(\"de-DE\", { useGrouping: useGrouping, maximumFractionDigits: col.decimalPlaces , minimumFractionDigits: col.decimalPlaces });\r\n else \r\n newFormat = new Intl.NumberFormat(\"de-DE\", { useGrouping: useGrouping });\r\n $scope.myFormat[col.id] = newFormat\r\n }\r\n \r\n \r\n \r\n \r\n if (result.data.results!=undefined) {\r\n for (let item of result.data.results){ \r\n item.getItem= {}\r\n for (let col of result.data.columns) {\r\n item.getItem[col.name] = $scope.getItem(col ,item)\r\n } \r\n } \r\n }\r\n \r\n \r\n if (tableState!=undefined) {\r\n tableState.pagination.numberOfPages = result.data.numberOfPages;\r\n tableState.pagination.totalItemCount = result.data.count;\r\n }\r\n $scope.tableState = tableState;\r\n \r\n \r\n }); \r\n };\r\n \r\n /*\r\n $scope.getActionLabel = function(index) \r\n { \r\n return $scope.actionDefinition[index].Label\r\n };\r\n */\r\n \r\n let stringToPath = function (path) {\r\n // If the path isn't a string, return it\r\n if (typeof path !== 'string') return path;\r\n var output = []; \r\n path.split('.').forEach(function (item, index) {\r\n // Split to an array with bracket notation\r\n item.split(/\\[([^}]+)\\]/g).forEach(function (key) {\r\n if (key.length > 0) output.push(key);// Push to the new array\r\n });\r\n });\r\n return output;\r\n };\r\n \r\n \r\n \r\n let get = function (obj, path, def) {\r\n \r\n \r\n path = stringToPath(path);// Get the path as an array\r\n var current = obj;// Cache the current object\r\n // For each item in the path, dig into the object\r\n if (path!==null && path!==undefined)\r\n {\r\n for (var i = 0; i < path.length; i++) {\r\n // If the item isn't found, return the default (or null)\r\n if ( current[path[i]] === undefined || current[path[i]] === null ) return def;\r\n current = current[path[i]]; // Otherwise, update the current value\r\n }\r\n } else return def\r\n return current;\r\n };\r\n\r\n $scope.convertToHtml=function(content){\r\n \r\n return $sce.trustAsHtml(content)\r\n }\r\n \r\n $scope.$watch('columnDefs', function (newValue) { //SORTIRANJE KOLONA - NE ZNAM DA LI UOPČE OVO IMA IKAKVOG SMISLA..MISLIM DA NE - TODO OBRISATI\r\n\r\n if ($scope.sortColumnDefs == undefined) $scope.sortColumnDefs = [] \r\n if ($scope.columnDefs == undefined) $scope.columnDefs = [] \r\n \r\n for (let item of $scope.columnDefs) {\r\n if (item.sort == \"ascending\" || item.sort == \"descending\") {\r\n //if new column already exists in sort array do nothing otherwise push into new array\r\n if ( ! $scope.sortColumnDefs.includes(item) ) \r\n $scope.sortColumnDefs.push(item) \r\n \r\n } \r\n } \r\n\r\n // //sort kolona \r\n // $scope.sortColumnDefs.sort( (a,b) => (a.sortOrder > b.sortOrder) ? 1 : ((b.sortOrder > a.sortOrder) ? -1 : 0)) \r\n \r\n },true);\r\n \r\n /* \r\n $scope.$watch('sortColumnDefs', function (newValue,oldValue) {\r\n \r\n for (let i=0; i < $scope.sortColumnDefs.length;i++) {\r\n if ($scope.sortColumnDefs[i].sort == \"\") {\r\n $scope.sortColumnDefs.splice(i, 1);\r\n } else \r\n $scope.sortColumnDefs[i]['sortOrder'] = i\r\n \r\n }\r\n \r\n }, true);*/\r\n \r\n\r\n \r\n }, //CTRL\r\n scope:{\r\n tableData:'=?',\r\n parameters:'=?',\r\n fontSize:'=?',\r\n cellPadding:'=?',\r\n columnDefs:'=?',\r\n usePagination:'=?',\r\n clientSide:'=?',\r\n itemsOnPage:'=',\r\n allowSort:'=',\r\n\t\t\t\t\tfd:'=',\r\n\t\t\t\t\tresourceDefinition:'=',\r\n rowSelectedChange:'&',\r\n ktRefreshData:'&ktRefreshData',\r\n gridData:'&gridData',\r\n setFnRefreshData: '&',\r\n showActionButtons:'=?',\r\n processAction:'&ktProcessAction',\r\n initialPage: '=?',\r\n actionDefinition: '=?',\r\n },\r\n templateUrl: 'ktdirectivetemplates/ktSmartCards.html',\r\n link: function (scope, elem, attrs) {\r\n // scope.formLoaded=true // MIGOR - todo test\r\n scope.setFnRefreshData({theDirFn: scope.refreshDataExt});\r\n if (scope.actionDefinition===undefined) scope.actionDefinition=[{actionId:1,Label:'Edit'}]\r\n \r\n }\r\n }\r\n \r\n \r\n};\n'use strict';\r\n\r\nexport function ktSmartTable ($timeout, UtilityService, ResourcesDataService,MessagingService) {\r\n return {\r\n restrict: 'EA',\r\n controller: function ($scope, $rootScope, $filter, $timeout, UtilityService, ResourcesDataService,MessagingService,$sce,$element) { \r\n $scope.displayTableData = [];\r\n $scope.priority= { min:1, max:3 }\r\n $scope.isSortChanged = true\r\n $scope.Math = window.Math;\r\n $scope.local= { stItemsOnPage:$scope.itemsOnPage}\r\n $scope.showTableConfigMenu=false\r\n $scope.pageItemsList = [5,10,25,50,100,250,500,1000];\r\n $scope.myFormat={}\r\n $scope.langCode = $rootScope.globals.currentUser.langObj.Code\r\n $scope.leftCss=\"left: 0px;\" \r\n\t\t\t\t\t$scope.positionCss=\"\"\t\t\t\t\r\n if ($scope.fontSize==undefined ) $scope.fontSize = \"1rem\" \r\n $scope.CTRL='ktSmartTable'\r\n if ($scope.clientSide==undefined) $scope.clientSide=false;\r\n if ($scope.usePagination==undefined) $scope.usePagination=false;\r\n if ($scope.tableData!=undefined) $scope.displayTableData = $scope.tableData;\r\n // PARAMETERS DEFAULTS\r\n if ($scope.parameters===undefined) $scope.parameters.table = { } \r\n if ($scope.parameters.table==undefined) $scope.parameters.table = { }\r\n \r\n if ($scope.parameters.PagerLabel1===undefined) $scope.parameters.PagerLabel1 ='items per page | Page:'\r\n if ($scope.parameters.PagerLabel2===undefined) $scope.parameters.PagerLabel2 ='of'\r\n if ($scope.parameters.PagerLabel3===undefined) $scope.parameters.PagerLabel3 ='items' \r\n if ($scope.parameters.PagerMaxPages===undefined) {\r\n $scope.parameters.PagerMaxPages = 10\r\n if (window.innerWidth<992) \r\n $scope.parameters.PagerMaxPages = Math.round($scope.parameters.PagerMaxPages/2)\r\n } else if ($scope.parameters.PagerMaxPages>=10) {\r\n if (window.innerWidth<992) \r\n $scope.parameters.PagerMaxPages = Math.round($scope.parameters.PagerMaxPages/2)\r\n }\r\n \r\n\r\n if ($scope.parameters.table.VerticalSpacing==undefined) $scope.parameters.table.VerticalSpacing=0\r\n \r\n \r\n /* Array.prototype.sortBy = function (propertyName, sortDirection) { // should be used instead GETSORTMEHTOD !!\r\n // sortDirection : true=ascending, false=descending\r\n var sortArguments = arguments;\r\n this.sort(function (objA, objB) {\r\n var result = 0;\r\n for (var argIndex = 0; argIndex < sortArguments.length && result === 0; argIndex += 2) {\r\n var propertyName = sortArguments[argIndex];\r\n result = (objA[propertyName] < objB[propertyName]) ? -1 : (objA[propertyName] > objB[propertyName]) ? 1 : 0;\r\n result *= !sortArguments[argIndex + 1] ? 1 : -1;//Reverse if sort order is false (DESC)\r\n }\r\n return result;\r\n }); }*/\r\n \r\n $scope.getSortMethod = UtilityService.getSortMethod\r\n \r\n \r\n $scope.sortGridData = function ()\r\n {\r\n $scope.isSortChanged = false \r\n let sortArguments = []\r\n var allTableData = $scope.gridData()\r\n \r\n if (allTableData!=undefined && allTableData.length >1 ) {\r\n for (const col of $scope.columnDefs) { \r\n if (col.sort =='ascending' || col.sort =='descending') {\r\n sortArguments.push(col.sort[0] + col.name) // first leter is a(scending) or d(escending) \r\n } \r\n }\r\n \r\n allTableData.sort ($scope.getSortMethod(sortArguments, $rootScope.globals?.currentUser?.langObj?.Code )); \r\n }\r\n \r\n }\r\n \r\n \r\n const numFormat = new Intl.NumberFormat(\"de-DE\", {\r\n maximumFractionDigits: 2 ,\r\n minimumFractionDigits: 2\r\n });\r\n \r\n \r\n\t\t\t\t\t$scope.showMenuFn = (event) => {\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tlet cursorPositionLeft = event.clientX \r\n \r\n\t\t\t\t\t\tlet table = document.getElementById(\"dlist-\" +$scope.parameters.UuidRef)\r\n\t\t\t\t\t\tif (table) {\r\n\t\t\t\t\t\t\tlet rect = table.getBoundingClientRect();\r\n\t\t\t\t\t\t\tconsole.log(rect.top, rect.right, rect.bottom, rect.left);\r\n\t\t\t\t\t\t\tcursorPositionLeft = event.clientX - rect.x \r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t$scope.positionCss= \"left: \"+ cursorPositionLeft +\"px\"\r\n\t\t\r\n\t\t\t\t\t}\r\n \r\n $scope.getItem = function (column,item)\r\n { \r\n let val;\r\n if (item.resourcedeflang_set) {\r\n val = get(item,column.name, null) // For RESOURCE LIST table\r\n }\r\n else {\r\n val = item[column.name] //for user data\r\n }\r\n \r\n if (val===null || val===undefined) return \"∅\"; \r\n //debugger //smarttable //getItem\r\n \r\n if (column.cellFilter) { //DATE FORMAT\r\n if (column.cellFilter.substring(0,4).trim()==\"date\") \r\n val = $filter(column.cellFilter.substring(0,4))(val,column.cellFilter.substring(6,column.cellFilter.length).trim());\r\n }\r\n \r\n // number.toString().replace(/\\./g, ',') # replace dot with comma\r\n if (column.ElementType == \"number\") val = $scope.myFormat[column.id].format(val)\r\n \r\n return val;\r\n };\r\n \r\n \r\n $scope.rowSelected = function(row) \r\n { \r\n if (!$scope.parameters.Multiline){\r\n \r\n $scope.rowSelectedCount = row.isSelected;\r\n $scope.positionCss=\"left: \"+$scope.cursorPositionLeft+\"px\"\r\n $scope.rowSelectedChange({item:row});\r\n \r\n }else {\r\n if ($scope.allSelected) $scope.allSelected = row.isSelected\r\n $scope.rowSelectedMultiple(row)\r\n }\r\n };\r\n $scope.rowSelectedMultiple = function(row) \r\n { \r\n \r\n $scope.selectMultiple({item:row});\r\n \r\n };\r\n\r\n $scope.selectAllRows = function() \r\n\r\n { \r\n $scope.allSelected = !$scope.allSelected\r\n\r\n for (let i=0;i<$scope.displayTableData.length;i++)\r\n {\r\n $scope.displayTableData[i].isSelected = $scope.allSelected \r\n }\r\n $scope.selectMultiple({item:null,selectAll:$scope.allSelected,deselectAll:!$scope.allSelected}); \r\n };\r\n \r\n $scope.setActionsPosition = function(event,index) \r\n { \r\n let currentTargetOffsetLeft = event.currentTarget.offsetLeft \r\n \r\n // let actions = $element[0].getElementsByClassName(\"sm-actions\"+index)\r\n let table = document.getElementById(\"tblcontainer\"+$scope.parameters.UuidRef)\r\n // if (actions.length) actions[0].offsetLeft = currentTargetOffsetLeft\r\n $scope.cursorPositionLeft = currentTargetOffsetLeft - table.scrollLeft + event.offsetX\r\n }; \r\n \r\n $scope.copycolumnDefs = function() \r\n {\r\n //debugger //copycolumnDefs\r\n for (let item of $scope.columnDefs) {\r\n if (item.sort == \"true\" || item.sort == \"reverse\") {\r\n $timeout(function() {\r\n if ($scope.sortColumnDefs) $scope.sortColumnDefs.push(item) })\r\n }\r\n } \r\n }\r\n \r\n \r\n $scope.dropSuccess = function() { // NOT USED - DEMONSTRATION OF \"ACTION ON DROP\"\r\n for (let src of $scope.sortColumnDefs) {\r\n for (let dst of $scope.columnDefs) {\r\n if (src == dst) {\r\n //debugger\r\n }\r\n } \r\n }\r\n }\r\n \r\n \r\n $scope.sortFilter = function (item) { \r\n return item.sort === 'true' || item.sort === 'reverse'; \r\n };\r\n \r\n \r\n $scope.toggleTableConfigMenu = function()\r\n {\r\n $scope.showTableConfigMenu = !$scope.showTableConfigMenu\r\n }\r\n \r\n $scope.toggleSortMenu = function()\r\n {\r\n $scope.showSortMenu = !$scope.showSortMenu\r\n }\r\n \r\n \r\n $scope.selectPage = function (page) { \r\n $scope.$broadcast ('selectPage', page);//send to smart-table controller\r\n };\r\n \r\n \r\n $scope.printTable = function()\r\n { \r\n let columns=[]\r\n var output=\"
\"\r\n output = output+ \"
\" \r\n var data= $scope.gridData()\r\n \r\n\r\n // PRINT HEADER\r\n output = output+ \"
\" \r\n var columnStyles=''\r\n for (let i=0; i< $scope.columnDefs.length;i++) {\r\n let col = $scope.columnDefs[i]\r\n if (col.visible == true) {\r\n let colClass=\"cell col\" + i \r\n if ( col.ElementType == \"number\" ) \r\n output = output + \"
\" + col.displayName + \"
\";\r\n else \r\n output = output + \"
\" + col.displayName + \"
\";\r\n columnStyles+= ' .col' + i + ' { margin-left: 4px ; width:' + col.width + ' }' \r\n }\r\n }\r\n output = output+ \"
\" \r\n\r\n // PRINT DATA\r\n for(let row of data) {\r\n \r\n output = output+ \"
\"\r\n for (let i=0; i< $scope.columnDefs.length; i++) {\r\n let col = $scope.columnDefs[i]\r\n if (col.visible == true) {\r\n let colClass=\"cell col\" + i\r\n if ( col.ElementType == \"number\" ) {\r\n let formatted = row[col.name].toLocaleString( $scope.langCode || 'en-GB', { maximumFractionDigits: 2, minimumFractionDigits: 2 });\r\n output=output + '
'+ formatted + '
'\r\n }\r\n else {\r\n output=output + '
'+ row[col.name] + '
'\r\n }\r\n }\r\n } \r\n output = output+ \"
\" \r\n }\r\n \r\n /*\r\n var doc = document.implementation.createHTMLDocument('My title'); \r\n doc.head.innerHTML+=' ' \r\n doc.head.innerHTML+=' '\r\n doc.body.innerHTML+='
TEST
'\r\n */\r\n \r\n var strWindowFeatures = \"location=yes,height=570,width=520,scrollbars=yes,status=yes\";\r\n var win = window.open(\"\", \"_blank\", strWindowFeatures); \r\n \r\n win.document.body.innerHTML+=\r\n // ' ' \r\n // ' ' \r\n ' '\r\n \r\n win.document.body.innerHTML += output;\r\n\r\n }\r\n \r\n $scope.export2excel = function() {\r\n \r\n var wb = new ExcelJS.Workbook();\r\n if ($scope.parameters.excelExportTemplateFileType?.id!=undefined)\r\n {\r\n ResourcesDataService.downloadFile($scope.parameters.excelExportTemplateFileId , $scope.parameters.excelExportTemplateFileType.id)\r\n .then(function(data) {\r\n MessagingService.addMessage('File downloaded','info');\r\n $scope.template = data.data;\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error'); \r\n })\r\n .then( function(data) { \r\n wb.xlsx.load($scope.template).\r\n then(workbook => {\r\n workbook.eachSheet((sheet, id) => {\r\n if ($scope.$parent.formData) {\r\n let party_name = $scope.$parent.formData[Object.keys($scope.$parent.formData)[0]][0][\"party_name\"]\r\n let contract_number = $scope.$parent.formData[Object.keys($scope.$parent.formData)[0]][0][\"contract_number\"]\r\n sheet.getCell('A2').value = party_name;\r\n sheet.getCell('B3').value = contract_number; \r\n }\r\n \r\n let temp=[]\r\n let header=[]\r\n \r\n $scope.columnDefs.forEach( (col, i) => \r\n {\r\n if (col.visible) {\r\n header.push(col.displayName)\r\n let colWidth = col.width.replace(\"%\",\"\").replace(\"px\",\"\") // for Excel we dont want % or px\r\n temp.push({header: col.displayName, key:col.name, width: colWidth } ) \r\n } \r\n });\r\n \r\n sheet.columns = temp\r\n \r\n /*sheet.insertRow(6, header,'i') TODO - make header dynamicaly created\r\n sheet.spliceRows(5, 1); */\r\n var data = $scope.gridData()\r\n sheet.insertRows(7, data,'i') \r\n sheet.spliceRows(6, 1);\r\n //sheet.spliceRows(1, 1);\r\n sheet.getRow(1).hidden = true \r\n \r\n return workbook \r\n })\r\n \r\n \r\n workbook.xlsx.writeBuffer().then((data) => {\r\n const blob = new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8' });\r\n saveAs(blob, 'export.xlsx');\r\n }); \r\n \r\n })\r\n })\r\n }else MessagingService.addMessage('Export template is not defined!','warning');\r\n }\r\n \r\n \r\n \r\n $scope.exportTable = function()\r\n { \r\n const workbook = new ExcelJS.Workbook();\r\n const worksheet = workbook.addWorksheet('New Sheet'); \r\n let temp=[]\r\n let isDate={}\r\n let isList={}\r\n let isColumnVisible=[]\r\n \r\n for (let col of $scope.columnDefs) {\r\n if (col.visible) {\r\n isColumnVisible.push(col.name)\r\n temp.push({header: col.displayName, key:col.name})\r\n if (col.ElementType== 'list') isList[col.name] = true \r\n if (col.ElementType== 'date') isDate[col.name] = true \r\n }\r\n }\r\n \r\n worksheet.columns = temp\r\n //worksheet.columns = $scope.columnDefs.map(col => {header: col.displayName, key:col.name}); //TODO mozda ovo ubaciti umjesto gore\r\n\r\n var allTableData=$scope.gridData()\r\n var allExportData = []\r\n // creating data for export\r\n for (let row of allTableData) {\r\n let obj = {}\r\n for (let col of isColumnVisible) { \r\n obj[col] = row[col]\r\n if (row[col] && isList[col]) { //when list\r\n obj[col] = row[col]\r\n } \r\n if (row[col] && isDate[col]) { //when date\r\n obj[col] = new Date(row[col])\r\n } \r\n }\r\n allExportData.push(obj)\r\n }\r\n \r\n worksheet.addRows(allExportData)\r\n \r\n workbook.xlsx.writeBuffer().then((data) => {\r\n const blob = new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8' });\r\n saveAs(blob, 'export.xlsx');\r\n }); \r\n }\r\n \r\n \r\n $scope.refreshDataExt = function(pageNumber,pageSize) \r\n { \r\n $scope.tableState.pagination.number = pageSize;\r\n $scope.tableState.pagination.start = (pageNumber-1)*pageSize;\r\n $scope.refreshData($scope.tableState);\r\n }\r\n \r\n \r\n $scope.flipSort = function(tc) {\r\n if (tc.sort == undefined || tc.sort==\"\")\r\n tc.sort=\"ascending\"\r\n else if (tc.sort==\"ascending\") \r\n tc.sort=\"descending\" \r\n else if (tc.sort==\"descending\") \r\n tc.sort=\"\"\r\n \r\n $scope.isSortChanged = true\r\n\r\n \r\n }\r\n \r\n // REFRESH FUNCTION - CALLED FROM SMART-TABLE !!\r\n $scope.refreshData = function(tableState) \r\n { \r\n if (tableState.pagination.number==undefined || tableState.pagination.number==NaN) \r\n tableState.pagination.number=10;\r\n \r\n //debugger\r\n if ( $scope.isSortChanged) {\r\n $scope.isSortChanged = false\r\n $scope.sortGridData() \r\n }\r\n \r\n //actually function GETDATASMARTTABLE in ktTaskDatasetList widget \r\n $scope.ktRefreshData({tableState: tableState, pageNumber:(tableState.pagination.start/tableState.pagination.number)+1, pageSize:tableState.pagination.number})\r\n .then(function (result) {\r\n //debugger //smarttable //get formated displayTabeData \r\n \r\n $scope.displayTableData = result.data.results;\r\n $scope.columnDefs = result.data.columns;\r\n $scope.totalMatched = result.data.count;\r\n\r\n \r\n for (const col of $scope.columnDefs) {\r\n var newFormat;\r\n let useGrouping = col.disableGrouping ? false : true\r\n \r\n if (col.decimalPlaces) \r\n newFormat = new Intl.NumberFormat(\"de-DE\", { useGrouping: useGrouping, maximumFractionDigits: col.decimalPlaces , minimumFractionDigits: col.decimalPlaces });\r\n else \r\n newFormat = new Intl.NumberFormat(\"de-DE\", { useGrouping: useGrouping });\r\n $scope.myFormat[col.id] = newFormat\r\n }\r\n \r\n \r\n \r\n \r\n if (result.data.results!=undefined) {\r\n for (let item of result.data.results){ \r\n item.getItem= {}\r\n for (let col of result.data.columns) {\r\n item.getItem[col.name] = $scope.getItem(col ,item)\r\n } \r\n } \r\n }\r\n \r\n \r\n if (tableState!=undefined) {\r\n tableState.pagination.numberOfPages = result.data.numberOfPages;\r\n tableState.pagination.totalItemCount = result.data.count;\r\n }\r\n $scope.tableState = tableState;\r\n \r\n \r\n }); \r\n };\r\n \r\n /*\r\n $scope.getActionLabel = function(index) \r\n { \r\n return $scope.actionDefinition[index].Label\r\n };\r\n */\r\n \r\n let stringToPath = function (path) {\r\n // If the path isn't a string, return it\r\n if (typeof path !== 'string') return path;\r\n var output = []; \r\n path.split('.').forEach(function (item, index) {\r\n // Split to an array with bracket notation\r\n item.split(/\\[([^}]+)\\]/g).forEach(function (key) {\r\n if (key.length > 0) output.push(key);// Push to the new array\r\n });\r\n });\r\n return output;\r\n };\r\n \r\n \r\n \r\n let get = function (obj, path, def) {\r\n \r\n \r\n path = stringToPath(path);// Get the path as an array\r\n var current = obj;// Cache the current object\r\n // For each item in the path, dig into the object\r\n if (path!==null && path!==undefined)\r\n {\r\n for (var i = 0; i < path.length; i++) {\r\n // If the item isn't found, return the default (or null)\r\n if ( current[path[i]] === undefined || current[path[i]] === null ) return def;\r\n current = current[path[i]]; // Otherwise, update the current value\r\n }\r\n } else return def\r\n return current;\r\n };\r\n\r\n $scope.convertToHtml=function(content){\r\n \r\n return $sce.trustAsHtml(content)\r\n }\r\n \r\n $scope.$watch('columnDefs', function (newValue) { //SORTIRANJE KOLONA - NE ZNAM DA LI UOPČE OVO IMA IKAKVOG SMISLA..MISLIM DA NE - TODO OBRISATI\r\n\r\n if ($scope.sortColumnDefs == undefined) $scope.sortColumnDefs = [] \r\n if ($scope.columnDefs == undefined) $scope.columnDefs = [] \r\n \r\n for (let item of $scope.columnDefs) {\r\n if (item.sort == \"ascending\" || item.sort == \"descending\") {\r\n //if new column already exists in sort array do nothing otherwise push into new array\r\n if ( ! $scope.sortColumnDefs.includes(item) ) \r\n $scope.sortColumnDefs.push(item) \r\n \r\n } \r\n } \r\n\r\n // //sort kolona \r\n // $scope.sortColumnDefs.sort( (a,b) => (a.sortOrder > b.sortOrder) ? 1 : ((b.sortOrder > a.sortOrder) ? -1 : 0)) \r\n \r\n },true);\r\n \r\n /* \r\n $scope.$watch('sortColumnDefs', function (newValue,oldValue) {\r\n \r\n for (let i=0; i < $scope.sortColumnDefs.length;i++) {\r\n if ($scope.sortColumnDefs[i].sort == \"\") {\r\n $scope.sortColumnDefs.splice(i, 1);\r\n } else \r\n $scope.sortColumnDefs[i]['sortOrder'] = i\r\n \r\n }\r\n \r\n }, true);*/\r\n \r\n\r\n \r\n }, //CTRL\r\n scope:{\r\n tableData:'=?',\r\n parameters:'=?',\r\n\t\t\t\t\tparameterslang:'=?',\r\n fontSize:'=?',\r\n cellPadding:'=?',\r\n columnDefs:'=?',\r\n usePagination:'=?',\r\n clientSide:'=?',\r\n itemsOnPage:'=',\r\n allowSort:'=',\r\n rowSelectedChange:'&',\r\n selectMultiple:'&',\r\n ktRefreshData:'&ktRefreshData',\r\n gridData:'&gridData',\r\n setFnRefreshData: '&',\r\n showActionButtons:'=?',\r\n processAction:'&ktProcessAction',\r\n initialPage: '=?',\r\n actionDefinition: '=?',\r\n },\r\n templateUrl: 'ktdirectivetemplates/ktSmartTable.html',\r\n link: function (scope, elem, attrs) {\r\n \r\n scope.setFnRefreshData({theDirFn: scope.refreshDataExt});\r\n if (scope.actionDefinition===undefined) scope.actionDefinition=[{actionId:1,Label:'Edit'}]\r\n \r\n }\r\n }\r\n \r\n \r\n};\n'use strict';\r\n\r\nexport function ktStartTaskWidget ($rootScope,$stateParams,GridsterService,ResourcesDataService,TaskDataService,MessagingService,WidgetDataExchangeService,$timeout,$cookies) {\r\n\r\n return {\r\n restrict: 'A',\r\n templateUrl: 'ktdirectivetemplates/ktStartTaskWidget.html',\r\n controller: function(UserService,ResourcesDataService,$rootScope,ProcessingService,$timeout,$stateParams,$cookies,WidgetDataExchangeService,$state,TaskDataService,MessagingService,GridsterService){},\r\n link: function (scope, elem, attrs) {\r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n scope.taskListParameters = {placeholder:'Select or search task...',label:scope.fd.Label,name:'task',\r\n selectedItem:null,hideLabel:false,columnSizeLabel:'col-lg-4',dropdownSize:'col-lg-8',onSelectFunction:''};\r\n \r\n scope.initiateFormLoaded=false;\r\n scope.isSaving=false;\r\n \r\n scope.previousTask=$stateParams.prev_task_execute_id;\r\n scope.previousTaskOutcomeId=$stateParams.outcome_id;\r\n scope.previousTaskPackage=$stateParams.prev_task_package; \r\n scope.gridsterType=\"task\";\r\n //scope.gridsterOpts = GridsterService.getGridsterOptions();\r\n scope.showSearchFilters=false; \r\n scope.dashboard = {widgets : []};\r\n scope.taskDefId=scope.fd.Related; \r\n \r\n scope.fromStateName=$stateParams.fromStateName;\r\n scope.fromStateParams=$stateParams.fromStateParams;\r\n scope.cookieFromStateName=$cookies.getObject('initiateTaskFromStateName');\r\n scope.cookieFromStateParams=$cookies.getObject('initiateTaskFromStateParams');\r\n scope.noBackbutton = false;\r\n scope.backBtnFromCookie=false;\r\n \r\n \r\n \r\n scope.removeField = function (index){\r\n\t\t\t\t\t\t\r\n if (index > -1) {\r\n\t\t\t\t\t\t \r\n scope.inputArray.layout.splice(index, 1);\r\n\t\t\t\t\t\t \r\n }\r\n\r\n } \r\n\r\n \r\n \r\n \r\n scope.InititateAllList = function(){\r\n \r\n \r\n ResourcesDataService.getResourceDefByType(lang,'task').then(function(data) {\r\n \r\n scope.gridOptions.data = data.data;\r\n \r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n \r\n \r\n //napuni grid s definicijama resursa\r\n // $scope.InititateAllList();\r\n \r\n scope.InititateMyList = function(){\r\n \r\n \r\n ResourcesDataService.getResourceDefListByLangByTypeUser(lang,'task').then(function(data) {\r\n \r\n scope.gridOptions.data = data.data;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n \r\n }; \r\n \r\n scope.TaskSelectionChanged = function(item,model){\r\n \r\n scope.taskListParameters.selectedItem=item;\r\n scope.fd.Related = scope.taskListParameters.selectedItem.id;\r\n scope.SelectAnyTask();\r\n \r\n };\r\n \r\n scope.SelectAnyTask = function(){\r\n \r\n if (scope.fd.Search.startAnyTask)\r\n {\r\n \r\n scope.taskDefId=scope.taskListParameters.selectedItem.id; \r\n // scope.InititateMyList(); \r\n }\r\n else\r\n {\r\n scope.taskDefId = scope.fd.Related;\r\n }\r\n \r\n };\r\n \r\n \r\n if (scope.fromStateName==undefined || scope.fromStateName==\"\")\r\n {\r\n if (scope.cookieFromStateName==undefined || scope.cookieFromStateName==\"\")\r\n {\r\n scope.noBackButton = true;\r\n }else\r\n {\r\n scope.fromStateName = scope.cookieFromStateName;\r\n scope.backBtnFromCookie = true;\r\n }\r\n \r\n \r\n }else{\r\n $cookies.putObject('initiateTaskFromStateName',scope.fromStateName);\r\n \r\n }\r\n \r\n if (scope.fromStateParams==undefined)\r\n {\r\n if (scope.cookieFromStateParams!=undefined)\r\n {\r\n if (scope.backBtnFromCookie)\r\n {\r\n scope.fromStateParams = scope.cookieFromStateParams;\r\n }\r\n }\r\n \r\n }else if (scope.cookieFromStateParams==undefined)\r\n {\r\n $cookies.putObject('initiateTaskFromStateParams',scope.fromStateParams);\r\n \r\n }else\r\n {\r\n if (scope.backBtnFromCookie)\r\n {\r\n \r\n scope.fromStateParams = scope.cookieFromStateParams;\r\n \r\n }else\r\n {\r\n $cookies.putObject('initiateTaskFromStateParams',scope.fromStateParams); \r\n }\r\n }\r\n \r\n \r\n if (scope.previousTask==undefined || scope.previousTask==\"\")\r\n {\r\n // $state.go();\r\n \r\n scope.previousTask = 0;\r\n \r\n }\r\n scope.potentialOwners = {};\r\n \r\n\r\n \r\n //WidgetDataExchangeService.deRegisterAllWidgets();\t//Migor - cistim taskwidgetRegistry \r\n\r\n scope.localTaskId=WidgetDataExchangeService.registerTask(scope.taskDefId);\r\n \r\n if (scope.fd.localVars===undefined) scope.fd.localVars={} \r\n scope.fd.localVars.taskDefinition ={};\r\n scope.potentialOwners.potentialOwnersUsers = [];\r\n scope.potentialOwners.potentialOwnersGroups = [];\r\n \r\n scope.FormLockUnlock = function()\r\n {\r\n scope.resourceDefinition.formParams.formLocked=!scope.resourceDefinition.formParams.formLocked;\r\n\r\n \r\n };\r\n \r\n scope.PreInitiateTask = function(){\r\n var lang=$rootScope.globals.currentUser.lang;\r\n scope.taskInitiateId=0;\r\n scope.taskExecuteId=0;\r\n \r\n \r\n TaskDataService.preInitiateTask(scope.taskDefId,scope.previousTask,lang).then(function(data) {\r\n \r\n \r\n scope.fd.localVars.taskDefinition = data.data.taskdef[0];\r\n scope.fd.localVars.taskDefinition.prev_task_id = scope.previousTask;\r\n scope.fd.localVars.taskDefinition.form_type=\"i\";\r\n scope.fd.localVars.taskDefinition.source_type = $stateParams.src_type;\r\n scope.fd.localVars.taskDefinition.taskFormLoaded = false;\r\n if (scope.fd.localVars.taskDefinition.AutoInitiate) {\r\n \r\n scope.AutoInitiateTask();\r\n \r\n }else\r\n {\r\n scope.resourceDefinition=data.data.resourceDefinition;\r\n scope.dashboard.widgets.layout = data.data.widgets;\r\n scope.resourceDefinition.formParams = {formLocked:true,formViewType:2};\r\n \r\n $timeout(function(){scope.initiateFormLoaded = true;});\r\n \r\n }\r\n \r\n \r\n },function(error){\r\n \r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n };\r\n \r\n scope.CancelClicked = function(){\r\n \r\n $state.go( scope.fromStateName, scope.fromStateParams);\r\n \r\n };\r\n \r\n scope.AutoInitiateTask = function(){\r\n var lang=$rootScope.globals.currentUser.lang;\r\n // if (isValid) {\r\n var parentDataset=scope.getPreviousTaskWidget();\r\n if (scope.previousTaskOutcomeId==undefined) scope.previousTaskOutcomeId=0;\r\n \r\n TaskDataService.initiateTask(scope.taskDefId,scope.previousTask,scope.previousTaskOutcomeId,[],scope.potentialOwners,parentDataset['datasetId'],parentDataset['datasetRecordId'],lang).then(function(data) {\r\n \r\n \r\n scope.task_initiate_id = data.data.task_initiate_id;\r\n scope.task_execute_id = data.data.task_execute_id;\r\n //$state.go('app.navbar.tasks.execute',{id: scope.taskDefId,task_initiate_id:scope.task_initiate_id,task_execute_id:scope.task_execute_id,fromStateName:scope.fromStateName,fromStateParams:scope.fromStateParams,prev_task_package:scope.previousTaskPackage,prev:scope.taskExecuteId});\r\n \r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n // }\r\n }\r\n \r\n scope.InitiateTask = function(form){\r\n var f = scope.forma;\r\n if (form.$submitted) scope.setSubmitted(form);\r\n if (form.$valid) {\r\n \r\n //var initiateData={};\r\n $rootScope.$broadcast('ProcessTaskWidgets',{}); //svi widgeti slusaju ovaj event\r\n scope.isSaving = true;\r\n var lang=$rootScope.globals.currentUser.lang;\r\n if (scope.previousTaskOutcomeId==undefined) scope.previousTaskOutcomeId=0;\r\n //ako je prethodni task imao listu povuci WidgetData\r\n var parentDataset=scope.getPreviousTaskWidget();\r\n \r\n TaskDataService.initiateTask(scope.taskDefId,scope.previousTask,scope.previousTaskOutcomeId,scope.dashboard.widgets.layout,scope.potentialOwners,parentDataset['datasetId'],parentDataset['datasetRecordId'],lang).then(function(data) {\r\n \r\n\t\t\t\t\t\r\n MessagingService.addMessage(data.data.msg,'success');\r\n $rootScope.$broadcast('InitiateTaskPostProcess',data.data.ret_value);\r\n //ovo treba staviti u event InitiateTaskPostProcessFinished \r\n scope.fd.GridState.cancelBtnIcon = \"fa fa-arrow-circle-left\";\r\n scope.fd.GridState.cancelBtnTxt = \"Go back\";\r\n scope.taskInitiated=true;\r\n \r\n \r\n },function(error){\r\n // $scope.isSaving = false; \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n scope.isSaving = false; \r\n\t\t\t\t\t\t\r\n\t\t\t\r\n\t\t\t\t\t\t\t\r\n } // if (isValid)\r\n else\r\n {\r\n MessagingService.addMessage(\"Please enter required data\",'warning');\r\n \r\n }\r\n };\r\n\r\n scope.getPreviousTaskWidget = function()\r\n {\r\n var pTaskData = WidgetDataExchangeService.getPrevTaskData(scope.fd.localVars.taskDefinition.prev_task_id);\r\n var datasetId=0,datasetRecordId=0;\r\n if (pTaskData.DEI!=undefined && pTaskData.DEI!=null)\r\n {\r\n for (var i=0;i=0){\r\n scope.taskListParameters.selectedItem = scope.taskList[pos];\r\n } \r\n \r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n if (scope.fd.Search===undefined || scope.fd.Search===null) scope.fd.Search = {startAnyTask:false}; \r\n if (scope.taskDefId!=undefined && scope.taskDefId>0 && !scope.fd.Search.startAnyTask) scope.PreInitiateTask();\r\n else if (scope.fd.Search.startAnyTask) $rootScope.$broadcast('PageLoaded',{}); \r\n }\r\n } \r\n};\n'use strict';\r\n\r\nexport function ktStyleAttribute () {\r\n\r\n return {\r\n restrict: 'A',\r\n scope:{\r\n fd: '=',\r\n styleType:'=',\r\n },\r\n \r\n link: function (scope, elem, attrs) {\r\n\t\t\t\t\r\n\t\t\t scope.colLength=[];\r\n for (var i=0;i<24;i++) scope.colLength.push('col-lg-'+(i+1));\r\n\r\n if (scope.fd.Parameters==undefined) scope.fd.Parameters={};\r\n \r\n scope.$watch(function () { return elem[0].style.width}, widthChangedCallBack, true);\r\n scope.$watch(function () { return elem[0].style.height}, heightChangedCallBack, true);\r\n\r\n function widthChangedCallBack(newValue, oldValue) {\r\n if (newValue !== oldValue && scope.fd.Parameters!=undefined && scope.fd.Parameters?.CustomSize) {\r\n if (scope.styleType==\"label\") {\r\n if (scope.fd.Parameters.LabelStyle==undefined) scope.fd.Parameters.LabelStyle = {};\r\n scope.fd.Parameters.LabelStyle.Width = newValue;\r\n }\r\n if (scope.styleType==\"element\") {\r\n if (scope.fd.Parameters.ElementStyle==undefined) scope.fd.Parameters.ElementStyle = {};\r\n scope.fd.Parameters.ElementStyle.Width = newValue;\r\n }\r\n }\r\n }\r\n \r\n\r\n function heightChangedCallBack(newValue, oldValue) {\r\n if (newValue !== oldValue && scope.fd.Parameters!=undefined && scope.fd.Parameters?.CustomSize) {\r\n // do something interesting here\r\n if (scope.styleType==\"label\") {\r\n if (scope.fd.Parameters.LabelStyle==undefined) scope.fd.Parameters.LabelStyle = {};\r\n scope.fd.Parameters.LabelStyle.Height = newValue;\r\n }\r\n if (scope.styleType==\"element\") {\r\n if (scope.fd.Parameters.ElementStyle==undefined) scope.fd.Parameters.ElementStyle = {};\r\n scope.fd.Parameters.ElementStyle.Height = newValue;\r\n }\r\n }\r\n }\r\n\r\n\t\t\t\t\r\n\t\t\t\t//MIGOR NEW\r\n scope.$watch('fd.LabelLength',function(newValue,oldValue){\r\n if (newValue!=oldValue){\r\n scope.fd.gridClassLabel = scope.colLength[scope.fd.LabelLength-1];\r\n }\r\n });\r\n\r\n scope.$watch('fd.ValueLength',function(newValue,oldValue){\r\n if (newValue!=oldValue) {\r\n scope.fd.gridClassElement = scope.colLength[scope.fd.ValueLength-1];\r\n }\r\n });\r\n \r\n \r\n scope.fd.process_size_style = function(newValue)\r\n {\r\n let customStyleLabel = scope.fd.Parameters.customCssLabel+\";text-align:\"+scope.fd.Parameters.LabelAlign+\" !important;font-size:\"+scope.fd.Parameters.FontSize+scope.fd.Parameters.FontUnits+\";color:\"+scope.fd.Parameters.FontColor+\";\";\r\n let customStyleElement = scope.fd.Parameters.customCssElement+\";font-size:\"+scope.fd.Parameters.ValueFontSize+scope.fd.Parameters.ValueFontUnits+\";color:\"+scope.fd.Parameters.ValueFontColor+\";\";\r\n \r\n scope.fd.labelAlign = \"text-align:\"+scope.fd.Parameters.LabelAlign+\" !important\";\r\n if (scope.fd.Parameters.FontBold) customStyleLabel = customStyleLabel+ \"font-weight: bold;\"\r\n if (scope.fd.Parameters.ValueFontBold) customStyleElement = customStyleElement+ \"font-weight: bold;\"\r\n\r\n if (newValue?.CustomSize) {\r\n scope.fd.customStyleLabel= customStyleLabel+\";width:\"+scope.fd.Parameters.LabelStyle?.Width+\";height:\"+scope.fd.Parameters.LabelStyle?.Height;\r\n scope.fd.customStyleElement = customStyleElement+\"resize:both;width:\"+scope.fd.Parameters.ElementStyle?.Width+\";height:\"+scope.fd.Parameters.ElementStyle?.Height;\r\n scope.fd.gridClassLabel=\"\";\r\n scope.fd.gridClassElement=\"\"; \r\n } else {\r\n scope.fd.customStyleLabel=customStyleLabel;\r\n scope.fd.customStyleElement=customStyleElement;\r\n scope.fd.gridClassLabel = scope.colLength[scope.fd.LabelLength-1];\r\n scope.fd.gridClassElement = scope.colLength[scope.fd.ValueLength-1];\r\n }\r\n }\r\n \r\n scope.$watch('fd.Parameters',function(newValue,oldValue){\r\n\t\t\t\t\t if (newValue!=oldValue && scope.fd.process_size_style) {\r\n\t\t\t\t\t\tscope.fd.process_size_style(newValue);\r\n\t\t\t\t\t }\r\n },true);\r\n\t\t\t\t \r\n scope.fd.process_size_style(scope.fd.Parameters);\r\n\r\n \r\n }\r\n }\r\n \r\n};\n'use strict';\r\n\r\nexport function ktTabs () {\r\n \r\n return {\r\n restrict: 'A',\r\n\t\tcontroller: function ($scope,GridsterService,UtilityService,$templateCache,$compile,$element) {\r\n\r\n \r\n //if ($scope.fd.layout==undefined || $scope.fd.layout.length==0) $scope.fd.layout=$scope.resourceDefinition.ResourceExtended.DefaultForm// $scope.fd.layout=[]\r\n $scope.fd.selectedTab = 0\r\n $scope.gsrvc = GridsterService\r\n //$scope.fd.countActive=1\r\n\r\n $scope.parent = $scope.inputArray\r\n \r\n \r\n if ($scope.fd.localVars == undefined) $scope.fd.localVars= {} \r\n $scope.fd.localVars.parent = $scope.inputArray\r\n \r\n\r\n $scope.fd.localVars.confirmAndDeleteElement = function (yesno , fdvalue) // delete Column\r\n {\r\n //debugger\r\n $scope.fd.localVars.gsrvc_setConfirmDeleteElement(yesno)\r\n $scope.fd.localVars.gsrvc_deleteElement(fdvalue)\r\n } \r\n \r\n $scope.fd.localVars.gsrvc_changeConfirmDeleteElement = GridsterService.changeConfirmDeleteElement\r\n\t $scope.fd.localVars.gsrvc_setConfirmDeleteElement = GridsterService.setConfirmDeleteElement\r\n\t $scope.fd.localVars.gsrvc_getConfirmDeleteElement = GridsterService.getConfirmDeleteElement\r\n\t $scope.fd.localVars.gsrvc_deleteElement = GridsterService.deleteElement\r\n\t\t\r\n\t\t\r\n\t\t$scope.fd.localVars.confirmDeleteTab = function () {\r\n\t\t\t if ($scope.fd.layout.length > 1) // \tdo not delete last tab! \r\n\t\t\t\t\t$scope.fd.layout[$scope.fd.selectedTab].Status='Deleted';\r\n\t\t\t\t\t//$scope.fd.layout.splice($scope.fd.selectedTab,1)\r\n\t\t\t $scope.fd.localVars.clickedOnDeleteTab=false\r\n\t\t}\r\n\t\t\r\n \r\n \r\n $scope.addNewTab = function () {\r\n \r\n let newTab = angular.copy($scope.resourceDefinition.ResourceExtended.DefaultForm[0])\r\n newTab.UuidRef = UtilityService.uuidv4()\r\n $scope.fd.layout.push(newTab)\r\n }\r\n \r\n \r\n $scope.showProperties=function(index,showPropertiesRight)\r\n {\r\n //debugger\r\n $scope.fd.selectedTab=index\r\n if (showPropertiesRight) $scope.gsrvc.setFieldProperties($scope.fd, $scope.fd.localVars.parent );\r\n \r\n };\r\n\r\n let template;\r\n if ($scope.resourceDefinition.form_definition) template = $templateCache.get('ktdirectivetemplates/ktTabs.html');\r\n else template = $templateCache.get('ktdirectivetemplates/ktTabsExe.html');\r\n \r\n $element.append($compile(template)($scope)); \r\n\r\n\r\n },\r\n link: function (scope, elem, attrs) {\r\n\r\n }\r\n };\r\n};\n'use strict';\r\n\r\nexport function ktTaskAddResource ($timeout,UtilityService) {\r\n \r\n var controller = ['$scope', '$uibModal', '$state','$stateParams','dragularService','$timeout','CodesService','ResourcesDataService','UtilityService','$rootScope','ProcessingService','MessagingService','GridsterService','TaskDataService','WidgetDataExchangeService','CODES_CONST','$templateCache','$compile','$element',\r\n function ($scope,$uibModal,$state,$stateParams,dragularService,$timeout,CodesService,ResourcesDataService,UtilityService,$rootScope,ProcessingService,MessagingService,GridsterService,TaskDataService,WidgetDataExchangeService,CODES_CONST,$templateCache,$compile,$element) {\r\n \r\n $scope.fd.localVars = {};\r\n $scope.fd.localVars.searchFormDownloaded = false;\r\n\r\n $scope.fd.localVars.src_type_text=CODES_CONST._POPULATE_TYPE_;\r\n $scope.fd.localVars.animationsEnabled = true;\r\n $scope.fd.localVars.widgetType = 1;\r\n $scope.fd.localVars.hidePopulateMethod = true;\r\n $scope.fd.localVars.datasetMapperType=0; \r\n $scope.fd.localVars.formParams={formViewType:1,showGridNavigation:false};\r\n $scope.fd.localVars.showMenu = false\r\n $scope.fd.localVars.widgetReady=false\r\n $scope.gsrvc = GridsterService\r\n $scope.fd.localVars.ShowAdvancedProperties = true\r\n\r\n\t $scope.gsrvc.parentResource[$scope.fd.UuidRef] = $scope.fd\r\n\r\n if ($scope.fd.Parameters===null || $scope.fd.Parameters===undefined) $scope.fd.Parameters = {}\r\n if ($scope.formData===undefined) $scope.formData={}\r\n $scope.formData[$scope.fd.UuidRef]= [{}]\r\n if ($scope.fd.Multiline) $scope.formData[$scope.fd.UuidRef]= [[{}]]\r\n $scope.fd.Parameters.SelectedResourceType='dataset'\r\n\r\n $scope.fd.Parameters.ShowAdvancedProperties = true\r\n $scope.fd.localVars.selectedRecords={}\r\n\r\n $scope.fd.localVars.toggleDropdown = function(){\r\n $scope.fd.localVars.showMenu = $scope.fd.localVars.showMenu ? false: true \r\n }\r\n \r\n \r\n $scope.formParamsParent=$scope.formParams;\r\n \r\n if ($scope.fd!=undefined){\r\n $scope.fd.PopulateMethod = \"M\";\r\n } else {\r\n $scope.fd={PopulateMethod : \"M\"};\r\n }\r\n\t \r\n if (typeof($scope.fd.DatasetMapping)=='string') $scope.fd.DatasetMapping=[];\r\n \r\n $scope.fd.localVars.gridsterType=\"dataset\";\r\n $scope.fd.localVars.resourceType=\"dataset\";\r\n \r\n \r\n $scope.fd.localVars.dashboard = {\r\n \t\t\t\tid: '1',\r\n \t\t\t\tname: 'Home',\r\n \t\t\t\twidgets: {}\r\n\t\t} ;\r\n \r\n \r\n $scope.taskId=$scope.resourceDefinition.ResourceDefUid;\r\n if ($scope.taskId==undefined) $scope.taskId=\"0\";\r\n $scope.fd.localVars.taskId=$scope.taskId;\r\n $scope.fd.localVars.resourceId=$scope.taskId;\r\n if ($scope.fd.localVars.resourceId==\"0\") $scope.fd.localVars.resourceId=$scope.resourceDefinition.id \r\n\r\n $scope.fd.localVars.resourceDefinition = $scope.resourceDefinition\r\n $scope.fd.ParentDatasetDefId=$scope.fd.Related;\r\n $scope.prevTaskExeId = $scope.resourceDefinition.prev_task_id;\r\n $scope.fd.localVars.formType=$scope.resourceDefinition.form_type;\r\n $scope.source_type=$scope.resourceDefinition.source_type;\r\n $scope.taskInitiateId = $scope.resourceDefinition.task_initiate_id;\r\n $scope.taskExecuteId = $scope.resourceDefinition.task_execute_id;\r\n $scope.formDefinition = $scope.resourceDefinition.form_definition;\r\n $scope.fd.localVars.resourceRecordId=0;\r\n \r\n $scope.formDefinition = $scope.formDefinition || false\r\n $scope.taskInitiateId = $scope.taskInitiateId || 0\r\n $scope.taskExecuteId = $scope.taskExecuteId || 0\r\n $scope.prevTaskExeId = $scope.prevTaskExeId || 0\r\n\t\t\r\n\t\t$scope.resourceDefinition.parentWidgetUid = $scope.fd.UuidRef\r\n \r\n\r\n if ($scope.fd.Multiline) $scope.fd.localVars.dashboard.widgets = []\r\n \r\n //register widget \r\n var out_fields = ['resourceId']\r\n if ($scope.fd.UuidRef==undefined) $scope.fd.UuidRef=UtilityService.uuidv4()\r\n \r\n let w_actions=[\r\n {id:1,name:'addResourceRecord'},\r\n {id:2,name:'addRecord'},\r\n {id:3,name:'removeRecord'},\r\n {id:4,name:'setRecords'}, \r\n ]\r\n\r\n var widgetDefinition = {DEI: [{'name':'resourceLink','displayName':'Dataset record id','value':[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:''}]}],actions: w_actions,widgetLabel: 'Add dataset record',widgetName: 'addResourceWidget',widgetId: $scope.fd.UuidRef,task_initiate_id:$scope.taskInitiateId,task_execute_id:$scope.taskExecuteId,taskId: $scope.lTaskId,resource_id:$scope.resourceDefinition.page_state_id,resourceDefId : $scope.fd.Related, output:out_fields,parentResourceId:$scope.fd.localVars.resourceDefinition.uid };\r\n \r\n $scope.fd.localVars.localWidgetId = WidgetDataExchangeService.registerWidget(widgetDefinition);\r\n $scope.fd.localVars.localId=$scope.fd.localVars.localWidgetId;\r\n $scope.fd.LocalId=$scope.fd.localVars.localWidgetId;\r\n \r\n if ($scope.resourceDefinition.showHidden==undefined) $scope.resourceDefinition.showHidden={}\r\n\t \r\n\t $scope.resourceDefinition.showHidden[$scope.fd.UuidRef] = true\r\n \r\n $scope.fd.localVars.showProperties=function(datasetMapperType,showPropertiesRight)\r\n { \r\n if ($scope.fd.localVars.datasetMapperType==undefined) {\r\n $scope.fd.localVars.datasetMapperType = datasetMapperType;\r\n } else {\r\n if ($scope.fd.localVars.datasetMapperType==0 || $scope.fd.localVars.datasetMapperType!=datasetMapperType) \r\n $scope.fd.localVars.datasetMapperType = datasetMapperType;\r\n else \r\n $scope.fd.localVars.datasetMapperType=0;\r\n }\r\n if (showPropertiesRight) \t$scope.gsrvc.setFieldProperties($scope.fd);\r\n \r\n };\r\n \r\n \r\n \r\n $scope.fd.localVars.setField = function(form,name,value,msg)\r\n {\r\n \t\t\t\tTaskDataService.setField(form,name,value);\r\n if (msg) MessagingService.addMessage(msg,'info');\r\n };\r\n \r\n \r\n let valueState= $scope.ksm.addSubject($scope.resourceDefinition.page_state_id+'-'+$scope.fd.UuidRef,$scope.fd.PresentationId);\r\n let valueStateName = valueState.subject.name;\r\n \r\n\r\n let add_resource_record = function(data){\r\n \r\n let state = valueState.subject.getStateChanges\r\n if (state==undefined) state={}\r\n if (data?.action_index!=undefined) state['action_index'] = data.action_index\r\n valueState.subject.setStateChanges = state\r\n $scope.fd.localVars.AddResourceRecord(valueState,data?.action_index)\r\n \r\n };\r\n \r\n let action_add_resource_record = $scope.ksm.addAction(valueStateName,\"addResourceRecord\",add_resource_record);\r\n\r\n let add_record = function(data){\r\n \r\n let state = valueState.subject.getStateChanges\r\n if (state==undefined) state={}\r\n if (data?.action_index!=undefined) state['action_index'] = data.action_index\r\n valueState.subject.setStateChanges = state\r\n if ($scope.fd.Multiline) $scope.fd.localVars.addRecordToMultiple(data.record)\r\n \r\n };\r\n let action_add_record = $scope.ksm.addAction(valueStateName,\"addRecord\",add_record);\r\n\r\n let remove_record = function(data){\r\n \r\n //find record to remove\r\n //splice from array\r\n \r\n }; \r\n let action_remove_record = $scope.ksm.addAction(valueStateName,\"removeRecord\",remove_record);\r\n\r\n\r\n \r\n let set_records = function(data){\r\n \r\n let recs,input_params,default_data\r\n if (data.in_data?.event_data?.state){\r\n recs = data.in_data?.event_data?.state\r\n input_params = data.in_data?.in_params\r\n \r\n if (typeof input_params == 'string') input_params = JSON.parse(input_params)\r\n else input_params = {}\r\n $scope.fd.localVars.dashboard.widgets.length=0\r\n $scope.formData[$scope.fd.UuidRef].length=0\r\n \r\n for (let i=0;i=0 && $scope.fd.localVars.selectedResourceItem.id===undefined) \r\n {\r\n $scope.fd.localVars.selectedResourceItem = $scope.fd.localVars.resourceList[pos]\r\n \r\n } \r\n\r\n $scope.fd.localVars.getPublishedResourceById(id,saved);\r\n }\r\n\r\n $scope.fd.localVars.getPublishedResourceById = function(id,saved) \r\n \r\n {\r\n let pos\r\n if (saved && $scope.fd.FormDef!==undefined && $scope.fd.FormDef!==null)\r\n { \r\n pos = $scope.fd.localVars.publishedResourceList.map(function(e) { return e.id; }).indexOf(id);\r\n \r\n if (pos>=0){\r\n $scope.fd.localVars.selectedResourceItem.name = $scope.fd.localVars.publishedResourceList[pos].name;\r\n $scope.fd.localVars.selectedDataset = $scope.fd.localVars.publishedResourceList[pos]\r\n }\r\n \r\n $scope.fd.localVars.selectedResourceItem_c=$scope.fd.localVars.selectedResourceItem;\r\n if ($scope.formDefinition) $scope.fd.localVars.dashboard.widgets.layout = $scope.fd.FormDef\r\n else if (!$scope.fd.Multiline) $scope.fd.localVars.dashboard.widgets.layout = UtilityService.clone($scope.fd.FormDef)\r\n else $scope.fd.localVars.dashboard.widgets.push({layout:[UtilityService.clone($scope.fd.FormDef[0])]})\r\n $scope.fd.localVars.formLoaded=true;\r\n\r\n }else{\r\n pos = $scope.fd.localVars.publishedResourceList.map(function(e) { return e.id; }).indexOf(id);\r\n \r\n if (pos>=0){\r\n ResourcesDataService.GetPublishedResourceById(id).then(function (data) {\r\n\r\n $scope.fd.localVars.selectedPublishedResource = $scope.fd.localVars.publishedResourceList[pos];\r\n $scope.fd.FormDef = data.data.Form\r\n if ($scope.formDefinition) $scope.fd.localVars.dashboard.widgets.layout = $scope.fd.FormDef\r\n else if (!$scope.fd.Multiline) $scope.fd.localVars.dashboard.widgets.layout = UtilityService.clone($scope.fd.FormDef)\r\n else $scope.fd.localVars.dashboard.widgets.push({layout:[UtilityService.clone($scope.fd.FormDef[0])]})\r\n if ($scope.fd.localVars.selectedResourceItem_c!==undefined)\r\n {\r\n $scope.fd.Parameters.PublishedResourceId=$scope.fd.localVars.selectedResourceItem_c.id;\r\n $scope.fd.Parameters.PublishedResourceVersion=$scope.fd.localVars.selectedResourceItem_c.Version;\r\n \r\n }else MessagingService.addMessage('Error - published dataset not selected ktTAskAdd','error')\r\n \r\n $scope.fd.localVars.formLoaded=true;\r\n\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n\r\n }\r\n }\r\n \r\n \r\n}\r\n \r\n\r\n if ($scope.fd.localVars.publishedResourceList==undefined) $scope.fd.localVars.publishedResourceList=[];\r\n \r\n\tvar lang=$rootScope.globals.currentUser.lang;\r\n \r\n \r\n if ($scope.fd.Related!=\"\" && $scope.fd.Related!=undefined && $scope.fd.Related!=null) {\r\n\r\n if ($scope.formDefinition) $scope.fd.localVars.dashboard.widgets.layout = $scope.fd.FormDef\r\n else if (!$scope.fd.Multiline) $scope.fd.localVars.dashboard.widgets.layout = UtilityService.clone($scope.fd.FormDef)\r\n else $scope.fd.localVars.dashboard.widgets.push({layout:[UtilityService.clone($scope.fd.FormDef[0])]})\r\n $scope.fd.localVars.formLoaded=true;\r\n \r\n }else $scope.fd.localVars.NoPublishedResourceMsg=\"Definition error --> Resource form not defined!\"\r\n \r\n $scope.fd.localVars.prepareResourceData = function(resourceRecordId){\r\n\r\n $scope.fd.itemValue = ResourcesDataService.prepareResourceWidgetData($scope.fd.localVars.dashboard.widgets.layout,resourceRecordId);\r\n }\r\n \r\n $scope.fd.localVars.processWidgetDependencies = function() { //----- ktUploader -----\r\n \r\n if ($scope.fd.tItemValue!=undefined) \r\n for (var i=0;i< $scope.fd.tItemValue.length;i++) {\r\n var linkedWidgetId=$scope.fd.tItemValue[i].widgetId; // linkedWidgetId= WidgetDataExchangeService.getLocalWidgetId(linkedWidgetId);//MIGOR - moram dobiti localwidgetId od vezanog WidgetId \r\n var linkedItem = 'resourceLink' //var linkedItem = $scope.fd.tItemValue[i].name;\r\n \r\n if (linkedWidgetId!=undefined && linkedWidgetId!=null ) {\r\n for (var j=0;j<$scope.fd.tItemValue[i].DEI.length;j++) {\r\n if (($scope.fd.tItemValue[i].DEI[j].name==linkedItem) && ($scope.fd.tItemValue[i].DEI[j].value==true)) { //SCOPE.ON samo kad je DEI value = true\r\n var linkedItem = $scope.fd.tItemValue[i].DEI[j].name; \r\n //console.log(\"view \"+$scope.fd.PresentationId+\" se veze na serverski \" + linkedWidgetId); \r\n \r\n $scope.$on('Event'+linkedWidgetId+linkedItem,function(event, data){ //ide po svim vezanim widgetima i dodaj $scope.on //MIGOR TODO - DODATI SAMO U SLUCAJU DA JE DEI VALUE = TRUE !!!! <<<<<<<<<<<<< !!!!!!!!!\r\n \r\n for (var k=0;k0)\r\n {\r\n if ($scope.fd.localVars.TablePrefix+'_id' in record[0])\r\n {\r\n record_id=record[0][$scope.fd.localVars.TablePrefix+'_id']\r\n \r\n }else record_id = record[0].id\r\n\r\n }else{\r\n if ($scope.fd.localVars.TablePrefix+'_id' in record)\r\n {\r\n record_id = record[$scope.fd.localVars.TablePrefix+'_id']\r\n \r\n }else record_id = record.id\r\n\r\n }\r\n }else record_id = null\r\n\r\n return record_id \r\n }\r\n\r\n $scope.fd.localVars.processMappingData = function(){\r\n\r\n if ($scope.fd.localVars.mappingD2d){\r\n\r\n Object.keys($scope.fd.localVars.mappingD2d).forEach(function(key) {\r\n \r\n if ($scope.fd.Multiline){\r\n\r\n for (let i=0;i<$scope.formData[$scope.fd.UuidRef].length;i++){\r\n $scope.formData[$scope.fd.UuidRef][i][0][key]=$scope.fd.localVars.mappingD2d[key]\r\n }\r\n }else{\r\n $scope.formData[$scope.fd.UuidRef][0][key]=$scope.fd.localVars.mappingD2d[key]\r\n }\r\n \r\n })\r\n }\r\n }\r\n\r\n $scope.fd.localVars.ProcessMapping = function(){\r\n\r\n let filter_data = {}\r\n if (!$scope.fd.localVars.mappingD2d){\r\n\r\n ResourcesDataService.processR2rMapping($scope.fd.UuidRef,$scope.resourceDefinition.uid,$scope.resourceDefinition.Version,$scope.fd.DatasetMapping,filter_data,$scope.resourceDefinition.page_instance_id,$scope.resourceDefinition.prev_page_instance_id).then(function(data) {\r\n $scope.fd.localVars.mappingD2d = data.data\r\n\r\n $scope.fd.localVars.processMappingData()\r\n\r\n \r\n\r\n $scope.fd.localVars.widgetReady = true\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.fd.localVars.widgetReady = true\r\n });\r\n }else{\r\n $scope.fd.localVars.processMappingData()\r\n $scope.fd.localVars.widgetReady = true\r\n }\r\n }\r\n\r\n\r\n \r\n\r\n let wait_for_widget = function(data){\r\n\r\n $scope.fd.localVars.start_widget()\r\n }\r\n\r\n\r\n $scope.fd.localVars.start_widget = function()\r\n {\r\n if ($scope.fd.DatasetMapping?.length>0 && !$scope.formDefinition)\r\n {\r\n\r\n if (($scope.fd.Multiline && $scope.formData[$scope.fd.UuidRef].length) || !$scope.fd.Multiline) $scope.fd.localVars.ProcessMapping ()\r\n }else $scope.fd.localVars.widgetReady = true\r\n \r\n }\r\n\r\n\r\n\r\n if ($scope.fd.SrcWidgetId!=undefined && $scope.fd.SrcWidgetId!=null)\r\n \r\n {\r\n \r\n let dependent_field = \"Field\"+$scope.fd.UuidRef;\r\n // let subscribedSubject = $scope.fd.Parameters.SrcWidgetType+\"ValueStateName\"+$scope.fd.SrcWidgetId;\r\n let subscribedSubject = $scope.resourceDefinition.page_state_id+\"-\"+$scope.fd.SrcWidgetId;\r\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",wait_for_widget);\r\n \r\n }else \r\n\r\n {\r\n if (!$scope.fd.Parameters?.events?.length) $scope.fd.localVars.start_widget()\r\n }\r\n\r\n\r\n $scope.fd.localVars.AddResourceRecord = function(valueStateParam,act_idx){\r\n let fdata = $scope.formData[$scope.fd.UuidRef][0]\r\n\r\n if ($scope.fd.Multiline) fdata = $scope.formData[$scope.fd.UuidRef]\r\n \r\n ResourcesDataService.addResourceRecord($scope.resourceDefinition.uid,$scope.fd.UuidRef,fdata,$scope.resourceDefinition.ExeVersion,$scope.resourceDefinition.page_instance_id,$scope.resourceDefinition.prev_page_instance_id).then(function(data) {\r\n\r\n let response = data.data\r\n let rmsg = response.ResponseMsg\r\n if (!rmsg) rmsg=\"Record created successfuly!\"\r\n MessagingService.addMessage(rmsg,'success');\r\n\r\n $scope.fd.localVars.resourceRecordId = $scope.fd.localVars.ExtractIdFromRecord(response.record)\r\n //$scope.formData[$scope.fd.PresentationId][0] = response.record\r\n WidgetDataExchangeService.setData({DEI: [{'name':'resourceLink','value':[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:$scope.fd.localVars.resourceRecordId}]}],\r\n actions: [{name:'PrepareData',status:false}],\r\n\r\n name: 'addResourceWidget',widgetId: $scope.fd.PresentationId,task_initiate_id:$scope.taskInitiateId,task_execute_id:$scope.taskExecuteId,\r\n\r\n taskId: $scope.lTaskId,resource_id:$scope.resourceDefinition.page_state_id,resourceDefId : $scope.fd.Related, output:out_fields});\r\n \r\n valueStateParam.subject.notifyObservers(\"addResourceRecord\");\r\n $scope.ksm.executeAction(valueStateName,\"valueChanged\", {datasetDefId:$scope.fd.Related,recordId:$scope.fd.localVars.resourceRecordId,record:$scope.formData[$scope.fd.UuidRef][0]});\r\n\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.ksm.executeAction(valueStateName,\"valueChanged\", {error:true});\r\n\r\n \r\n });\r\n } \r\n\r\n\r\n $scope.processEvents = function(data)\r\n {\r\n\r\n UtilityService.process_events($scope.resourceDefinition.page_state_id,valueState,data,$scope.fd.Parameters.events,$scope.ksm)\r\n }\r\n $scope.parentWidget=\"\"\r\n //process events and execute actions\r\n if (!$scope.formDefinition && $scope.fd.Parameters?.events?.length>0) UtilityService.subscribe_2_events($scope.resourceDefinition.page_state_id,$scope.parentWidget,$scope.fd.Parameters.events,$scope,$scope.ksm)\r\n\r\n\r\n $scope.$on('InitiateTaskPostProcess'+$scope.resourceDefinition.transaction_id,function(event, data){\r\n $scope.fd.localVars.processTaskReturn(data)\r\n \r\n });\r\n \r\n $scope.$on('ExecuteTaskPostProcess'+$scope.resourceDefinition.task_execute_id,function(event, data){\r\n \r\n $scope.fd.localVars.processTaskReturn(data)\r\n \r\n });\r\n\r\n $scope.$on('ProcessWidgetPostProcess'+$scope.resourceDefinition.page_state_id,function(event, data){\r\n \r\n $scope.fd.localVars.processTaskReturn(data)\r\n \r\n });\r\n\r\n\r\n let template;\r\n if ($scope.formDefinition) template = $templateCache.get('ktdirectivetemplates/ktTaskAddResource.html');\r\n else template = $templateCache.get('ktdirectivetemplates/ktTaskAddResourceExe.html');\r\n \r\n $element.append($compile(template)($scope)); \r\n }];\r\n\r\n return {\r\n restrict: 'A',\r\n \r\n controller: controller,\r\n link: function (scope, elem, attrs) {\r\n\r\n \r\n \r\n let widgetState= scope.ksm.addSubject('taskWidget'+scope.fd.PresentationId,scope.fd.PresentationId);\r\n let widgetStateName = widgetState.subject.name;\r\n \r\n let clear_form = function()\r\n {\r\n //scope.fd.localVars.dashboard.widgets.layout=[]\r\n scope.fd.localVars.formLoaded=false\r\n \r\n $timeout(function(){\r\n scope.fd.localVars.formLoaded=true;\r\n scope.fd.localVars.dashboard.widgets.layout = UtilityService.clone(scope.fd.FormDef);\r\n scope.formData[scope.fd.UuidRef]= [{}]\r\n widgetState.subject.setStateChanges = scope.fd.PresentationId\r\n widgetState.subject.notifyObservers(\"clearform\");\r\n }) \r\n \r\n \r\n \r\n \r\n } \r\n let action_form_cleared = scope.ksm.addAction(widgetStateName,\"clearform\",clear_form);\r\n\r\n\r\n \r\n } \r\n }\r\n }\r\n\n'use strict';\r\n\r\n//import {Chart} from 'chart';\r\n//import ChartDataLabels from 'chartjs-plugin-datalabels';\r\n\r\n\r\nexport function ktTaskChart () {\r\n\r\n return {\r\n restrict: 'A',\r\n templateUrl: 'ktdirectivetemplates/ktTaskChart.html',\r\n\r\n controller: function($scope,$rootScope,$timeout,UserService,ResourcesDataService,TaskDataService,MessagingService,GridsterService, UtilityService) {\r\n \r\n const numFormat = new Intl.NumberFormat(\"de-DE\", {\r\n maximumFractionDigits: $scope.fd.Parameters.chartFractionDigits || 2,\r\n minimumFractionDigits: $scope.fd.Parameters.chartFractionDigits || 2\r\n });\r\n\r\n\r\n \r\n $scope.gsrvc= GridsterService;\r\n if (!Array.isArray($scope.fd.selectedTasks)) $scope.fd.selectedTasks=[];\r\n if ($scope.resourceDefinition!=undefined) {\r\n $scope.taskExecuteId = $scope.resourceDefinition.task_execute_id;\r\n }\r\n if ($scope.localVars == undefined) $scope.localVars={};\r\n \r\n $scope.localObj={loadedTasks : []};\r\n $scope.localVars.taskItem = null; \r\n $scope.localVars.selectedTask = {};\r\n $scope.localVars.showMenu = false\r\n if ($scope.fd.localVars == undefined) $scope.fd.localVars={};\r\n \r\n $scope.fd.localVars.dashboard = {\r\n id: '1',\r\n name: 'Home',\r\n widgets: {}\r\n\t\t\t\t} ;\r\n $scope.fd.localVars.taskItem = null;\r\n $scope.fd.localVars.selectedTask = {};\r\n \r\n //MIGOR - PREBACIO IZ TASK ADD RESOURCE, TODO - IZBACITI VISAK\r\n $scope.taskId=$scope.resourceDefinition.ResourceDefId;\r\n if ($scope.taskId==undefined) $scope.taskId=$scope.resourceDefinition.ResourceDefId_id;\r\n if ($scope.taskId==undefined) $scope.taskId=0;\r\n $scope.fd.localVars.taskId=$scope.taskId;\r\n $scope.fd.ParentDatasetDefId=$scope.fd.Related;\r\n $scope.prevTaskExeId = $scope.resourceDefinition.prev_task_id;\r\n $scope.fd.localVars.formType=$scope.resourceDefinition.form_type;\r\n $scope.source_type=$scope.resourceDefinition.source_type;\r\n $scope.taskInitiateId = $scope.resourceDefinition.task_initiate_id;\r\n $scope.taskExecuteId = $scope.resourceDefinition.task_execute_id;\r\n $scope.formDefinition = $scope.resourceDefinition.form_definition;\r\n $scope.fd.localVars.resourceRecordId=0;\r\n\t\t\t\t\r\n\t\t\t\tif ($scope.fd.UuidRef==undefined) $scope.fd.UuidRef=UtilityService.uuidv4();\r\n\t\t\t\t$scope.fd.Parameters.UuidRef = $scope.fd.UuidRef;\r\n \r\n $scope.formDefinition = $scope.formDefinition || false\r\n $scope.taskInitiateId = $scope.taskInitiateId || 0\r\n $scope.taskExecuteId = $scope.taskExecuteId || 0\r\n $scope.prevTaskExeId = $scope.prevTaskExeId || 0\r\n \r\n\r\n let hsvtorgb = function (h,s,v) { \r\n let f= (n,k=(n+h/60)%6) => v - v*s*Math.max( Math.min(k,4-k,1), 0); \r\n return \"#\" + Math.round(f(5) * 255).toString(16) + Math.round(f(3) * 255).toString(16) + Math.round(f(1) * 255) .toString(16) \r\n } \r\n\r\n let HSV2RGB = function(h, s, v) {\r\n var r, g, b, i, f, p, q, t;\r\n if (arguments.length === 1) {\r\n s = h.s, v = h.v, h = h.h;\r\n }\r\n i = Math.floor(h * 6);\r\n f = h * 6 - i;\r\n p = v * (1 - s);\r\n q = v * (1 - f * s);\r\n t = v * (1 - (1 - f) * s);\r\n switch (i % 6) {\r\n case 0: r = v, g = t, b = p; break;\r\n case 1: r = q, g = v, b = p; break;\r\n case 2: r = p, g = v, b = t; break;\r\n case 3: r = p, g = q, b = v; break;\r\n case 4: r = t, g = p, b = v; break;\r\n case 5: r = v, g = p, b = q; break;\r\n }\r\n return \"#\" + Math.round(r * 255).toString(16) + Math.round(g * 255).toString(16) + Math.round(b * 255) .toString(16) \r\n }\r\n\r\n\r\n $scope.fd.localVars.toggleDropdown = function(){\r\n $scope.fd.localVars.showMenu = $scope.fd.localVars.showMenu ? false: true \r\n }\r\n \r\n \r\n $scope.fd.localVars.copyToClipboard = function(text){\r\n $scope.fd.localVars.copyUuid = true;\r\n navigator.clipboard.writeText(text).then( \r\n () => {\r\n $timeout(function(){$scope.fd.localVars.copyUuid = false;},1000);\r\n },\r\n () => { /* clipboard write failed */\r\n MessagingService.addMessage('Copy to clipboard failed','error');\r\n $timeout(function(){$scope.fd.localVars.copyUuid = false;},1000);\r\n }); \r\n }\r\n \r\n \r\n \r\n var process_observed_data = function(data) // called by datasetList (via KSM)\r\n { \r\n $scope.fd.localVars.errormsg =''\r\n \r\n if (data==undefined || data?.state?.sharedData?.analytics==undefined)\r\n return \r\n if ($scope.fd.Parameters.CalculateFunction?.name==undefined) \r\n $scope.fd.localVars.errormsg='Calculate Function not defined!'\r\n \r\n if ($scope.fd.Parameters.chartType==undefined) \r\n $scope.fd.Parameters.chartType='counter'\r\n \r\n $scope.fd.localVars.SelectedChartAnalytics = $scope.fd.Parameters.SelectedChartAnalytics || 0 \r\n $scope.fd.localVars.analytics = data?.state?.sharedData?.analytics[$scope.fd.localVars.SelectedChartAnalytics][$scope.fd.Parameters.CalculateFunction.name]\r\n let analytics = $scope.fd.localVars.analytics \r\n \r\n //find minvalue and maxvalue of current Anaytics data\r\n $scope.fd.localVars.maxvalue=-1\r\n $scope.fd.localVars.minvalue=-1\r\n Object.keys(analytics).forEach(function(key,index) { //must use inverse logic (undefined == number is always false)\r\n if (!( analytics[key] < analytics[$scope.fd.localVars.maxvalue])) $scope.fd.localVars.maxvalue = key\r\n if (!( analytics[key] > analytics[$scope.fd.localVars.minvalue])) $scope.fd.localVars.minvalue = key \r\n })\r\n \r\n \r\n \r\n \r\n $scope.fd.localVars.data = Object.values(analytics)\r\n $scope.fd.localVars.labels = Object.keys(analytics)\r\n \r\n if ($scope.fd.Parameters?.chartType?.name == 'pie' || $scope.fd.Parameters?.chartType?.name == 'doughnut' || $scope.fd.Parameters?.chartType?.name == 'polarArea') { \r\n let colors=[] \r\n let golden_ratio = 0.618033988749895\r\n let h = Math.random() // use random start value\r\n \r\n for (let item of $scope.fd.localVars.data) { \r\n h += golden_ratio\r\n h %= 1 \r\n colors.push( HSV2RGB( h, 0.5, 0.95) ) \r\n } \r\n //convert colors to array \r\n $scope.fd.localVars.chartColors = [ { backgroundColor: colors } ]\r\n $scope.fd.localVars.data = [ $scope.fd.localVars.data ] \r\n }\r\n \r\n if ($scope.fd.Parameters?.chartType?.name!=undefined) \r\n $scope.fd.localVars.chartType = $scope.fd.Parameters.chartType.name \r\n else \r\n $scope.fd.localVars.chartType = $scope.fd.Parameters.chartType //counter does not have .name\r\n \r\n \r\n $scope.fd.localVars.chartLabel = $scope.fd.Parameters.chartLabel\r\n $scope.fd.localVars.sharedData = data?.sharedData\r\n //summing all values for counter\r\n $scope.fd.localVars.countAll = $scope.fd.localVars.data.reduce((partialSum, a) => partialSum + a, 0); \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t// **** JSONE SCRIPTING ***** //\r\n\t\t\t\t\t//var template = {a: {$eval: \"foo.bar\"}};\r\n //var template = \"${foo.bar}\"\r\n //var template = \"${minvalue} ${analytics[minvalue]}\" \r\n //var context = {foo: {bar: \"zoo\"}} \r\n //$scope.fd.localVars.testjsone = jsone(template, $scope.fd.localVars) \r\n\t\t\t\t\t\r\n $scope.fd.localVars.scriptValue = jsone($scope.fd.Parameters.script || '', $scope.fd.localVars)\r\n \r\n }; \r\n \r\n $scope.fd.localVars.formatNumber = function(num) {\r\n let newFormat , useGrouping;\r\n \r\n useGrouping = $scope.fd.Parameters.useGroupingSeparator ; \r\n if ($scope.fd.Parameters.chartFractionDigits)\r\n newFormat = new Intl.NumberFormat(\"de-DE\", { useGrouping: useGrouping, maximumFractionDigits: $scope.fd.Parameters.chartFractionDigits , minimumFractionDigits: $scope.fd.Parameters.chartFractionDigits });\r\n else \r\n newFormat = new Intl.NumberFormat(\"de-DE\", { useGrouping: useGrouping }); \r\n\r\n try {\r\n if ($scope.fd.Parameters.disableFormatting) \r\n return num \r\n else \r\n return newFormat.format(num)\r\n \r\n } catch (err) {\r\n MessagingService.addMessage(error.msg,'error');\r\n return 'Error!'\r\n }\r\n \r\n }\r\n \r\n \r\n $scope.fd.localVars.setSelectedDataset = function(id,saved) {\r\n //debugger\r\n if ($scope.fd.localVars.selectedResourceItem==undefined) $scope.fd.localVars.selectedResourceItem={}\r\n //pick orher parameters from database\r\n $scope.fd.localVars.getPublishedResourceById(id,saved);\r\n \r\n\t\t}\r\n \r\n \r\n $scope.fd.localVars.getPublishedResourceById = function(id,saved) \r\n {\r\n let pos\r\n if (saved && $scope.fd.FormDef!==undefined && $scope.fd.FormDef!==null)\r\n { \r\n pos = $scope.fd.localVars.publishedResourceList.map(function(e) { return e.id; }).indexOf(id);\r\n \r\n if (pos>=0){\r\n $scope.fd.localVars.selectedResourceItem.name = $scope.fd.localVars.publishedResourceList[pos].name;\r\n $scope.fd.localVars.selectedDataset = $scope.fd.localVars.publishedResourceList[pos]\r\n }\r\n $scope.fd.localVars.selectedResourceItem.id = id;\r\n $scope.fd.localVars.selectedResourceItem.name_confirmed = $scope.fd.localVars.selectedResourceItem.name +' ('+$scope.fd.localVars.selectedResourceItem.id +')'\r\n $scope.fd.localVars.selectedResourceItem_c=$scope.fd.localVars.selectedResourceItem;\r\n $scope.fd.localVars.dashboard.widgets.layout = $scope.fd.FormDef\r\n $scope.fd.localVars.formLoaded=true;\r\n\r\n }else{\r\n pos = $scope.fd.localVars.publishedResourceList.map(function(e) { return e.id; }).indexOf(id);\r\n \r\n if (pos>=0){\r\n ResourcesDataService.GetPublishedResourceById(id).then(function (data) {\r\n\r\n $scope.fd.localVars.selectedDataset = $scope.fd.localVars.publishedResourceList[pos];\r\n $scope.fd.localVars.dashboard.widgets.layout = data.data.Form\r\n $scope.fd.FormDef = $scope.fd.localVars.dashboard.widgets.layout\r\n if ($scope.fd.localVars.selectedResourceItem_c!==undefined)\r\n {\r\n $scope.fd.Parameters.PublishedResourceId=$scope.fd.localVars.selectedResourceItem_c.id;\r\n $scope.fd.Parameters.PublishedResourceVersion=$scope.fd.localVars.selectedResourceItem_c.Version;\r\n $scope.fd.Related=$scope.fd.localVars.selectedResourceItem_c.ResourceDefId; \r\n $scope.fd.localVars.freshForm=angular.copy($scope.fd.localVars.selectedResourceItem_c.Form)\r\n $scope.fd.Related = $scope.fd.localVars.publishedResourceList[pos].ResourceDefId\r\n\r\n }else MessagingService.addMessage('Error - published dataset not selected ktTAskAdd','error')\r\n \r\n $scope.fd.localVars.formLoaded=true;\r\n\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n\r\n }\r\n }\r\n \r\n}\r\n \r\n\r\n $scope.fd.localVars.calculateFunctions= [ {id:1,name:'sum'},{id:2,name:'mean'},{id:3,name:'min'},{id:4,name:'max'},{id:5,name:'count'} ] \r\n\r\n\r\n// options.plugins.legend : true\r\n\r\n\r\n $scope.fd.localVars.chartOptions= {\r\n scale: {\r\n ticks: {\r\n //precision: defined as parameter\r\n }\r\n } ,\r\n plugins: { \r\n legend: {\r\n display: true,\r\n position: 'bottom',\r\n labels: {\r\n color: 'rgb(255, 99, 132)'\r\n }\r\n }, \r\n labels: { \r\n render: 'label', // render 'label', 'value', 'percentage', 'image' or custom function, default is 'percentage\r\n precision: 0,// precision for percentage, default is 0\r\n showZero: false, // whether or not labels of value 0 are displayed, default is false \r\n fontSize: 14, \r\n fontColor: '#000',// font color, can be color array for each data or function for dynamic color, default is defaultFontColor\r\n fontStyle: 'normal', // font style, default is defaultFontStyle\r\n fontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\", // font family, default is defaultFontFamily \r\n textShadow: false, // draw text shadows under labels, default is false\r\n }\r\n } \r\n }\r\n \r\n \r\n if ($scope.fd.Parameters.chartPrecision!=undefined && $scope.fd.Parameters.chartPrecision!=null ) { \r\n $scope.fd.localVars.chartOptions.scale.ticks.precision = $scope.fd.Parameters.chartPrecision\r\n }\r\n \r\n \r\n if ($scope.fd.Parameters?.chartType?.name === 'bar' || $scope.fd.Parameters?.chartType?.name === 'line' || $scope.fd.Parameters?.chartType?.name === 'radar' || $scope.fd.Parameters?.chartType?.name === 'bubble') {\r\n $scope.fd.localVars.chartOptions.plugins.legend.display= false\r\n }\r\n\r\n /* $scope.fd.localVars.chartTypes = [\r\n {id:1,name:'line'},{id:2,name:'bar'},{id:3,name:'radar'},\r\n {id:4,name:'doughnut'},{id:5,name:'pie'},{id:6,name:'polarArea'},\r\n {id:7,name:'bubble'} ,{id:99,name:'counter'}, {id:100, name:'script' }\r\n ]*/\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t$scope.fd.localVars.chartTypes = [ //removed radar, bubble and script\r\n {id:1,name:'line'},{id:2,name:'bar'}, \r\n {id:4,name:'doughnut'},{id:5,name:'pie'},{id:6,name:'polarArea'},\r\n {id:99,name:'counter'} ,{id:100, name:'script'}\r\n\t\t\t\t\t\t\t //{id:3,name:'radar'},{id:7,name:'bubble'}\r\n ]\r\n \r\n\t\t\tif ($scope.fd.Parameters.chartType==undefined) \r\n $scope.fd.Parameters.chartType=$scope.fd.localVars.chartTypes[1] //default = bar\r\n\t\t\t\t\t\t\r\n $scope.localVars.toggleDropdown = function()\r\n {\r\n $scope.localVars.showMenu = $scope.localVars.showMenu ? false: true \r\n }\r\n \r\n $scope.$on('InlineTaskClosed',function(event,data){\r\n var taskId=data;\r\n var pos = $scope.localObj.loadedTasks.map(function(e) { return e.taskId; }).indexOf(taskId);\r\n if (pos>=0) {\r\n $scope.localObj.loadedTasks.splice(pos,1); \r\n }\r\n });\r\n \r\n if ($scope.fd.selectedTasks===undefined || $scope.fd.selectedTasks===null) $scope.fd.selectedTasks = [];\r\n \r\n if ($scope.fd.FormDef!=null && $scope.fd.FormDef!==undefined) {\r\n $scope.fd.selectedTasks = $scope.fd.FormDef;\r\n }else {\r\n $scope.fd.FormDef = []; \r\n } \r\n \r\n let initiate_task = function(data)\r\n {\r\n let loadTask=false;\r\n $scope.localVars.taskLoaded = false;\r\n if ($scope.localObj.loadedTasks.length>0) {\r\n if ($scope.localObj.loadedTasks[0].taskId.id != data.taskId) {\r\n $scope.localObj.loadedTasks.length=0;\r\n loadTask=true;\r\n }\r\n } else loadTask=true;\r\n \r\n $scope.localObj.loadedTasks.splice(0,1);\r\n \r\n for (let j = 0;j<$scope.fd.selectedTasks.length;j++) {\r\n if ($scope.fd.selectedTasks[j].taskId.id==data.taskId) {\r\n $timeout(function(){\r\n $scope.localObj.loadedTasks.push(data);\r\n $scope.localVars.taskLoaded = true;\r\n });\r\n }\r\n }\r\n }\r\n \r\n //subscribe to events - initially only refresh data \r\n \r\n if ($scope.resourceDefinition.page_state_id && $scope.fd.Parameters.widgetReference ) {\r\n let whoami ='chart'+ $scope.fd.UuidRef // valueStateName \r\n let subscribedSubject = $scope.resourceDefinition.page_state_id + '-'+ $scope.fd.Parameters.widgetReference //odabraniUUIDnekogELEMENTA \r\n let observer = $scope.ksm.subscribe(subscribedSubject,whoami,\"valueChanged\",process_observed_data); \r\n }\r\n \r\n \r\n let lang=$rootScope.globals.currentUser.lang; \r\n \r\n /* ResourcesDataService.getResourceDefListByType(lang,'task').then(function(data) { \r\n $scope.fd.taskList = data.data;\r\n $scope.fd.tasksLoaded=true; \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });*/\r\n \r\n\r\n $scope.localVars.taskIsOpen = function(taskId)\r\n {\r\n var isOpenPos = $scope.localObj.loadedTasks.map(function(e) { return e.taskId; }).indexOf(taskId);\r\n \r\n if (isOpenPos>=0) return true;\r\n else return false;\r\n }\r\n \r\n $scope.fd.pasteFromClipboard = function(task){\r\n \r\n navigator.clipboard.readText().then( (data) => {\r\n /* clipboard successfully read */\r\n $timeout(function(){task.widgetId = data})\r\n },\r\n () => {\r\n /* clipboard read failed */\r\n MessagingService.addMessage('Paste from clipboard failed','error');\r\n });\r\n \r\n }\r\n\r\n \r\n $scope.fd.AddTaskToList = function ()\r\n {\r\n $scope.fd.selectedTasks.push({widgetId:null,taskId:null});\r\n }\r\n \r\n $scope.fd.ConfirmTaskList = function ()\r\n {\r\n $scope.fd.FormDef = $scope.fd.selectedTasks;\r\n $scope.fd.showConfirmed=true;\r\n $timeout(function(){$scope.fd.showConfirmed=false},5000);\r\n }\r\n \r\n $scope.fd.RemoveTaskFromList = function (index){\r\n \r\n if (index>=0){\r\n $scope.fd.selectedTasks.splice(index,1); \r\n } \r\n }\r\n \r\n \r\n $scope.localVars.saveTaskToResource = function(tdid,tei,datasetDefId,datasetRecordId){\r\n TaskDataService.saveTaskToResource(tei,datasetDefId,datasetRecordId,$scope.fd.presentationId).then(function(data) {\r\n \r\n $state.go('app.navbar.tasks.initiate',{id: tdid,fromStateName:$state.current.name,fromStateParams:$state.params,outcome_id:0,prev_task_execute_id:tei});\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n \r\n \r\n $scope.fd.localVars.showProperties = function(datasetMapperType,showPropertiesRight)\r\n {\r\n //debugger\r\n if ($scope.fd.localVars.datasetMapperType==undefined)\r\n {\r\n $scope.fd.localVars.datasetMapperType = datasetMapperType;\r\n }else\r\n {\r\n if ($scope.fd.localVars.datasetMapperType==0 || $scope.fd.localVars.datasetMapperType!=datasetMapperType) \r\n $scope.fd.localVars.datasetMapperType = datasetMapperType;\r\n else \r\n $scope.fd.localVars.datasetMapperType=0;\r\n }\r\n \r\n \r\n if (showPropertiesRight) $scope.gsrvc.setFieldProperties($scope.fd);\r\n \r\n if ($scope.fd.localVars.dashboard != undefined) {\r\n //debugger\r\n $scope.fd.localVars.fieldsList = []\r\n $scope.fd.localVars.getFieldNamesFromObject($scope.fd.localVars.dashboard, $scope.fd.localVars.fieldsList)\r\n \r\n }\r\n };\r\n \r\n \r\n \r\n $scope.fd.localVars.getFieldNamesFromObject = function (obj, fieldsList) // find FieldNames in given Dashboard object recursively \r\n {// fieldsList is return variable (used for multiple select)\r\n //debugger\r\n var o = {};\r\n Object.keys(obj).forEach(function(key) {\r\n \r\n if ( (typeof(obj[key]) === 'object') && obj[key] && key != 'NameField') { //Do NOT parse 'NameField' (we need it as it is)\r\n $scope.fd.localVars.getFieldNamesFromObject(obj[key], fieldsList)\r\n } \r\n else { \r\n if (key == 'FieldName' ) { \r\n //debugger\r\n o[key]= obj[key];\r\n }\r\n \r\n if (key == 'PresentationId' ) {\r\n o['id']= obj[key];\r\n } \r\n if (key == 'Label' ) {\r\n o['name']= obj[key];\r\n } \r\n }\r\n }) ; \r\n \r\n if ( o['FieldName'] && Object.keys(o).length > 0 ) fieldsList.push(o) \r\n }; \r\n\r\n \r\n },\r\n link: function (scope, elem, attrs) {\r\n \r\n \r\n } \r\n \r\n }\r\n \r\n};\r\n\r\n\r\n/*\r\n $scope.fd.localVars.newdata = {\r\n labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],\r\n datasets: [{\r\n label: '# of Votes',\r\n data: [12, 19, 3, 5, 2, 3],\r\n backgroundColor: [\r\n 'rgba(255, 99, 132, 0.2)',\r\n 'rgba(54, 162, 235, 0.2)',\r\n 'rgba(255, 206, 86, 0.2)',\r\n 'rgba(75, 192, 192, 0.2)',\r\n 'rgba(153, 102, 255, 0.2)',\r\n 'rgba(255, 159, 64, 0.2)'\r\n ],\r\n borderColor: [\r\n 'rgba(255, 99, 132, 1)',\r\n 'rgba(54, 162, 235, 1)',\r\n 'rgba(255, 206, 86, 1)',\r\n 'rgba(75, 192, 192, 1)',\r\n 'rgba(153, 102, 255, 1)',\r\n 'rgba(255, 159, 64, 1)'\r\n ],\r\n borderWidth: 1\r\n }]\r\n }*/\r\n \r\n \r\n /*\r\n $scope.fd.localVars.chartOptions.plugins.labels.generateLabels(chart) {\r\n \r\n const datasets = chart.data.datasets;\r\n const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\r\n \r\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\r\n const borderWidth = toPadding(style.borderWidth);\r\n return {\r\n text: datasets[meta.index].label,\r\n fillStyle: style.backgroundColor,\r\n fontColor: color,\r\n hidden: !meta.visible,\r\n lineCap: style.borderCapStyle,\r\n lineDash: style.borderDash,\r\n lineDashOffset: style.borderDashOffset,\r\n lineJoin: style.borderJoinStyle,\r\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\r\n strokeStyle: style.borderColor,\r\n pointStyle: pointStyle || style.pointStyle,\r\n rotation: style.rotation,\r\n textAlign: textAlign || style.textAlign,\r\n borderRadius: 0,\r\n datasetIndex: meta.index\r\n };\r\n \r\n }\r\n */\r\n \r\n \n'use strict';\r\n\r\nexport function ktTaskContainer () {\r\n\r\n return {\r\n restrict: 'A',\r\n templateUrl: 'ktdirectivetemplates/ktTaskContainer.html',\r\n /*scope: {\r\n inputParameters: '=',\r\n //selectedItem: '=',\r\n inputArray: '=',\r\n },*/\r\n controller: function($scope,$rootScope,$timeout,UserService,ResourcesDataService,TaskDataService,MessagingService,GridsterService) {\r\n \r\n $scope.gsrvc= GridsterService;\r\n if (!Array.isArray($scope.fd.selectedTasks)) $scope.fd.selectedTasks=[];\r\n if ($scope.resourceDefinition!=undefined)\r\n {\r\n $scope.taskExecuteId = $scope.resourceDefinition.task_execute_id;\r\n }\r\n if ($scope.localVars == undefined) $scope.localVars={};\r\n $scope.localObj={loadedTasks : []};\r\n $scope.localVars.taskItem = null;\r\n $scope.localVars.selectedTask = {};\r\n $scope.localVars.showMenu = false\r\n \r\n $scope.localVars.toggleDropdown = function(){\r\n $scope.localVars.showMenu = $scope.localVars.showMenu ? false: true \r\n }\r\n \r\n \r\n $scope.$on('InlineTaskClosed',function(event,data){\r\n //var index=data;\r\n //$scope.localObj.loadedTasks.splice(index,1);\r\n var taskId=data;\r\n var pos = $scope.localObj.loadedTasks.map(function(e) { return e.taskId; }).indexOf(taskId);\r\n \r\n if (pos>=0)\r\n {\r\n $scope.localObj.loadedTasks.splice(pos,1); \r\n }\r\n });\r\n \r\n if ($scope.fd.selectedTasks===undefined || $scope.fd.selectedTasks===null) $scope.fd.selectedTasks = [];\r\n \r\n if ($scope.fd.FormDef!=null && $scope.fd.FormDef!==undefined) {\r\n $scope.fd.selectedTasks = $scope.fd.FormDef;\r\n }else\r\n {\r\n $scope.fd.FormDef = [];\r\n \r\n } \r\n \r\n let initiate_task = function(data)\r\n {\r\n let loadTask=false;\r\n $scope.localVars.taskLoaded = false;\r\n if ($scope.localObj.loadedTasks.length>0)\r\n \r\n {\r\n if ($scope.localObj.loadedTasks[0].taskId.id != data.taskId)\r\n {\r\n $scope.localObj.loadedTasks.length=0;\r\n loadTask=true;\r\n }\r\n }else loadTask=true;\r\n \r\n \r\n // if (loadTask)\r\n //{\r\n $scope.localObj.loadedTasks.splice(0,1);\r\n \r\n for (let j = 0;j<$scope.fd.selectedTasks.length;j++)\r\n {\r\n \r\n if ($scope.fd.selectedTasks[j].taskId.id==data.taskId)\r\n {\r\n \r\n $timeout(function(){\r\n $scope.localObj.loadedTasks.push(data);\r\n $scope.localVars.taskLoaded = true;\r\n });\r\n }\r\n }\r\n //}\r\n }\r\n \r\n for (let i = 0;i<$scope.fd.selectedTasks.length;i++)\r\n {\r\n let subscribedSubject = 'initiateTaskStateName'+$scope.fd.selectedTasks[i].widgetId;\r\n let dependent_field = 'taskContainer'+$scope.fd.UuidRef+$scope.resourceDefinition.transaction_id;\r\n $scope.ksm.subscribe(subscribedSubject,dependent_field,\"taskInitiated\",initiate_task); \r\n \r\n }\r\n \r\n /*\r\n $scope.localVars.LoadTask=function(taskId,outcomeId,previousTask,openTaskType)\r\n {\r\n \r\n \r\n $scope.localObj.loadedTasks.splice(0,0,{'taskId':taskId,'outcomeId':outcomeId,'previousTask':previousTask,'localVars':localVars});\r\n \r\n \r\n \r\n }\r\n \r\n */\r\n let lang=$rootScope.globals.currentUser.lang; \r\n ResourcesDataService.getResourceDefListByType(lang,'task').then(function(data) {\r\n \r\n $scope.fd.taskList = data.data;\r\n $scope.fd.tasksLoaded=true;\r\n \r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n\r\n $scope.localVars.taskIsOpen = function(taskId)\r\n {\r\n var isOpenPos = $scope.localObj.loadedTasks.map(function(e) { return e.taskId; }).indexOf(taskId);\r\n \r\n if (isOpenPos>=0) return true;\r\n else return false;\r\n }\r\n \r\n $scope.fd.pasteFromClipboard = function(task){\r\n \r\n navigator.clipboard.readText().then( (data) => {\r\n /* clipboard successfully read */\r\n $timeout(function(){task.widgetId = data})\r\n },\r\n () => {\r\n /* clipboard read failed */\r\n MessagingService.addMessage('Paste from clipboard failed','error');\r\n });\r\n \r\n }\r\n\r\n \r\n $scope.fd.AddTaskToList = function (){\r\n \r\n $scope.fd.selectedTasks.push({widgetId:null,taskId:null});\r\n \r\n }\r\n \r\n $scope.fd.ConfirmTaskList = function (){\r\n $scope.fd.FormDef = $scope.fd.selectedTasks;\r\n $scope.fd.showConfirmed=true;\r\n $timeout(function(){$scope.fd.showConfirmed=false},5000);\r\n }\r\n $scope.fd.RemoveTaskFromList = function (index){\r\n \r\n \r\n if (index>=0){\r\n \r\n $scope.fd.selectedTasks.splice(index,1);\r\n \r\n }\r\n \r\n \r\n }\r\n \r\n \r\n $scope.localVars.saveTaskToResource = function(tdid,tei,datasetDefId,datasetRecordId){\r\n TaskDataService.saveTaskToResource(tei,datasetDefId,datasetRecordId,$scope.fd.presentationId).then(function(data) {\r\n \r\n $state.go('app.navbar.tasks.initiate',{id: tdid,fromStateName:$state.current.name,fromStateParams:$state.params,outcome_id:0,prev_task_execute_id:tei});\r\n \r\n \r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n \r\n \r\n },\r\n link: function (scope, elem, attrs) {\r\n \r\n \r\n } \r\n \r\n }\r\n \r\n};\n'use strict';\r\n\r\nexport function ktTaskDatasetList ($rootScope,MessagingService,TaskDataService,ResourcesDataService,$timeout,WidgetDataExchangeService,$q,KatalyoStateManager,UtilityService) {\r\n \r\n var controller = ['$scope', '$uibModal','$stateParams','$timeout','CodesService','ResourcesDataService','$rootScope','ProcessingService','WidgetDataExchangeService','GridsterService','UtilityService', 'MessagingService','CODES_CONST','TaskDataService','KatalyoStateManager','$q','$filter','$templateCache','$compile','$element',\r\n function ($scope,$uibModal,$stateParams,$timeout,CodesService,ResourcesDataService,$rootScope,ProcessingService,WidgetDataExchangeService,GridsterService, UtilityService, MessagingService,CODES_CONST,TaskDataService,KatalyoStateManager,$q,$filter,$templateCache,$compile,$element) {\r\n \r\n if ($scope.fd.localVars===undefined) $scope.fd.localVars={}\r\n\r\n $scope.fd.localVars.datasetlistlinked= false\r\n $scope.CTRL='ktTaskDatasetList'\r\n $scope.gsrvc=GridsterService;\r\n $scope.fd.localVars.datasetMapperType=0;\r\n $scope.fd.localVars.InitialLoad=true;\r\n \r\n $scope.fd.localVars.tablePosition = $element\r\n \r\n $scope.fd.localVars.src_type_text=CODES_CONST._POPULATE_TYPE_; \r\n $scope.fd.localVars.searchFormDownloaded = false;\r\n $scope.fd.localVars.showSearchFilters=true;\r\n $scope.fd.localVars.resourceDataDownloaded = false;\r\n $scope.fd.localVars.hidePopulateMethod=true\r\n $scope.fd.PopulateMethod=\"M\"\r\n $scope.fd.localVars.loadingParams = true\r\n $scope.fd.localVars.resourceTypesList=[{type:'dataset',name:'Dataset'},{type:'file',name:'File'}]\r\n $scope.fd.localVars.widgetState={};\r\n $scope.fd.localVars.widgetState.selectedItems=[];\r\n $scope.taskId=$scope.resourceDefinition.uid;\r\n $scope.fd.localVars.taskId=$scope.resourceDefinition.uid;\r\n\t\r\n\t\r\n $scope.fd.localVars.parentResourceId=$scope.resourceDefinition.uid;\r\n if ($scope.fd.localVars.parentResourceId==undefined) $scope.fd.localVars.parentResourceId = $scope.resourceDefinition.pageId\r\n if ($scope.taskId==undefined) $scope.taskId=$scope.resourceDefinition.uid;\r\n if ($scope.taskId==undefined) $scope.taskId=\"0\"\r\n $scope.resourceDefinition.resourceVersion = $stateParams.version;\r\n\t\r\n\t$scope.resourceDefinition.parentWidgetUid = $scope.fd.UuidRef\r\n\r\n if ($scope.resourceDefinition.resourceVersion==undefined) $scope.resourceDefinition.resourceVersion = $scope.resourceDefinition.Version || 0\r\n\r\n $scope.fd.localVars.taskId=$scope.taskId;\r\n $scope.fd.localVars.widgetType = 4;\r\n $scope.fd.localVars.results = {}\r\n $scope.fd.localVars.formParams={formViewType:1,showGridNavigation:false};\r\n $scope.fd.localVars.sqFormParams = {formViewType:1,showGridNavigation:false};\r\n $scope.fd.localVars.cardLayoutParams={formViewType:1,showGridNavigation:false};\r\n\r\n $scope.fd.localVars.TablePrefix = 'resource'+$scope.fd.Related\r\n \r\n $scope.fd.localVars.parentDatasetDefId=$scope.fd.Related;\r\n $scope.fd.localVars.animationsEnabled = true;\r\n if ($scope.fd.Parameters==undefined) $scope.fd.Parameters = {}\r\n if ($scope.fd.Parameters.table==undefined) $scope.fd.Parameters.table={} \r\n if ($scope.fd.Parameters.Analytics==undefined) $scope.fd.Parameters.Analytics=[]\r\n if ($scope.fd.Parameters.SelectedResourceType==undefined) $scope.fd.Parameters.SelectedResourceType='dataset'\r\n\r\n \r\n if ($scope.fd.ParametersLang==undefined) $scope.fd.ParametersLang = {}\r\n if ($scope.fd.ParametersLang.PagerLabel1==undefined) $scope.fd.ParametersLang.PagerLabel1='items per page | Page:'\r\n if ($scope.fd.ParametersLang.PagerLabel2==undefined) $scope.fd.ParametersLang.PagerLabel2='of'\r\n if ($scope.fd.ParametersLang.PagerLabel3==undefined) $scope.fd.ParametersLang.PagerLabel3='items'\r\n \r\n $scope.fd.localVars[$scope.fd.id] = $scope.fd.localVars\r\n \r\n $scope.fd.localVars.ShowAdvancedProperties = true\r\n $scope.fd.Parameters.ShowAdvancedProperties = true\r\n \r\n $scope.fd.Parameters.PagerLabel1 = $scope.fd.ParametersLang.PagerLabel1\r\n $scope.fd.Parameters.PagerLabel2 = $scope.fd.ParametersLang.PagerLabel2\r\n $scope.fd.Parameters.PagerLabel3 = $scope.fd.ParametersLang.PagerLabel3\r\n $scope.fd.Parameters.NoDataMsg = $scope.fd.ParametersLang.NoDataMsg\r\n\r\n if ($scope.fd.Parameters.PresentationType==undefined || $scope.fd.Parameters.PresentationType==null) $scope.fd.Parameters.PresentationType='table';\r\n $scope.fd.localVars.gridsterType=$scope.fd.Parameters.SelectedResourceType;\r\n $scope.fd.localVars.widgetState.itemValue = {val:null};\r\n if ($scope.fd.Multiline) $scope.fd.localVars.widgetState.itemValue.val = []\r\n $scope.fd.Parameters.Multiline = $scope.fd.Multiline\r\n\r\n $scope.fd.localVars.isCollapsed = $scope.fd.Parameters.SearchFormCollapsed;\r\n if ($scope.fd.localVars.isCollapsed==undefined) $scope.fd.localVars.isCollapsed =false;\r\n if ($scope.fd.localVars.isCollapsedData==undefined) $scope.fd.localVars.isCollapsedData =false;\r\n if ($scope.fd.localVars.isCollapsedActions==undefined) $scope.fd.localVars.isCollapsedActions =false;\r\n $scope.fd.localVars.showRelatedResources=false\r\n $scope.fd.localVars.relatedResourcesPublishedList={}\r\n $scope.fd.localVars.relatedResourcesColumns={}\r\n $scope.fd.localVars.resourceDefinition = $scope.resourceDefinition;\r\n $scope.fd.localVars.dashboard = {\r\n \t\t\t\tid: '1',\r\n \t\t\t\tname: 'Home',\r\n \t\t\t\twidgets: {}\r\n\t\t\t\t} ;\r\n \r\n $scope.fd.localVars.dashboardCard = {\r\n \t\t\t\tid: '1',\r\n \t\t\t\tname: 'Home',\r\n \t\t\t\twidgets: {}\r\n\t\t\t\t} ;\r\n $scope.fd.localVars.gridOptionsResourceData = {\r\n // columnDefs: colDefs,\r\n //enableGridMenu: true,\r\n showGridFooter: true,\r\n showColumnFooter: true,\r\n enableRowSelection: true,\r\n multiSelect: $scope.fd.Multiline,\r\n // enableHorizontalScrollbar : 1,\r\n // enableVerticalScrollbar : 2,\r\n enableFiltering: true,\r\n fontSize: 12,\r\n cellPadding:30,\r\n enableRowHeaderSelection: false,\r\n enableColumnResizing: true,\r\n enableColumnReordering: true,\r\n //useExternalPagination: false,\r\n paginationPageSizes: [10, 25, 50,100,200,500,1000,5000,10000],\r\n // enablePaginationControls: true,\r\n };\r\n\r\n if ($scope.fd.Parameters.printable == true) {\r\n $scope.fd.localVars.gridOptionsResourceData.showColumnFooter = false;\r\n $scope.fd.localVars.gridOptionsResourceData.showColumnFooter = false;\r\n $scope.fd.localVars.gridOptionsResourceData.showGridFooter = false;\r\n $scope.fd.localVars.gridOptionsResourceData.enablePaginationControls = false; \r\n $scope.fd.localVars.gridOptionsResourceData.enableVerticalScrollbar = 0; \r\n $scope.fd.localVars.gridOptionsResourceData.enableHorizontalScrollbar = 0; \r\n $scope.fd.localVars.gridOptionsResourceData.enableFiltering = false; \r\n \r\n }\r\n \r\n var paginationOptions = {\r\n pageNumber: 1,\r\n pageSize: 10,\r\n sort: null\r\n };\r\n \r\n $scope.paginationOptions = {\r\n pageNumber: 1,\r\n pageSize: 10,\r\n sort: null\r\n };\r\n \r\n $scope.fd.localVars.gridOptionsRelated = {\r\n // columnDefs: colDefs,\r\n enableGridMenu: true,\r\n showGridFooter: true,\r\n showColumnFooter: true,\r\n enableRowSelection: false,\r\n multiSelect: false,\r\n enableHorizontalScrollbar : 2, \r\n nableVerticalScrollbar : 2,\r\n enableFiltering: true,\r\n enableRowHeaderSelection: true,\r\n enableColumnResizing: true,\r\n minRowsToShow: 2,\r\n }\r\n \r\n //MIGORCHART\r\n $scope.fd.localVars.calculateFunction= [ {id:1,name:'sum'},{id:2,name:'mean'},{id:3,name:'min'},{id:4,name:'max'},{id:5,name:'count'} ]\r\n $scope.fd.localVars.chartOptions= {\r\n scales: {\r\n y: {\r\n beginAtZero: true\r\n },\r\n x: {\r\n beginAtZero: true\r\n },\r\n }\r\n },\r\n //$scope.fd.localVars.chartTypes = [{id:1,name:'line'},{id:2,name:'bar'},{id:3,name:'radar'},{id:4,name:'doughnut'},{id:5,name:'pie'},{id:6,name:'polarArea'},{id:7,name:'bubble'}]\r\n\t\t $scope.fd.localVars.chartTypes = [{id:1,name:'line'},{id:2,name:'bar'},{id:4,name:'doughnut'},{id:5,name:'pie'},{id:6,name:'polarArea'}]\r\n \r\n \r\n \r\n //$scope.fd.PopulateType=1;\r\n $scope.fd.ParentDatasetDefId=$scope.fd.Related;\r\n $scope.resourceDefinition.ParentDatasetDefId = $scope.fd.ParentDatasetDefId\r\n $scope.prevTaskExeId = $scope.resourceDefinition.prev_task_id;\r\n $scope.fd.localVars.formType=$scope.resourceDefinition.form_type;\r\n $scope.fd.localVars.source_type=$scope.resourceDefinition.source_type;\r\n $scope.taskInitiateId = $scope.resourceDefinition.task_initiate_id;\r\n $scope.taskExecuteId = $scope.resourceDefinition.task_execute_id;\r\n $scope.fd.localVars.formDefinition = $scope.resourceDefinition.form_definition;\r\n $scope.fd.localVars.resourceRecordId = 0;\r\n $scope.fd.ParentElementId = 0;\r\n if ($scope.fd.localVars.formDefinition==undefined) $scope.fd.localVars.formDefinition = false;\r\n if ($scope.taskInitiateId==undefined) $scope.taskInitiateId =0;\r\n if ($scope.taskExecuteId==undefined) $scope.taskExecuteId =0;\r\n if ($scope.prevTaskExeId==undefined) $scope.prevTaskExeId =0;\r\n \r\n $scope.fd.localVars.widgetState.datasetRecordSelected = false;\r\n $scope.fd.localVars.widgetState.selectedDatasetRecordId = 0; \r\n var out_fields = ['resourceRecordId'];\r\n\r\n if ($scope.fd.UuidRef==undefined) $scope.fd.UuidRef=UtilityService.uuidv4()\r\n $scope.fd.Parameters.UuidRef = $scope.fd.UuidRef\r\n\r\n let w_actions=[\r\n {id:1,name:'refreshData'},\r\n {id:2,name:'countSelected'},\r\n {id:3,name:'countRecords'},\r\n {id:4,name:'setFilter'},\r\n {id:5,name:'unselectItems'}\r\n ]\r\n\r\n //resourceLink\r\n var widgetDefinition = {DEI: [{'name':'resourceLinkDatasetList','value':[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:''}]}],actions: w_actions,widgetName: 'resourceListWidget',widgetId: $scope.fd.UuidRef,taskId: $scope.lTaskId,\r\n resourceDefId : $scope.fd.Related, widgetLabel:'Resource list',parentResourceId:$scope.fd.localVars.parentResourceId,\r\n resourceRecordId:$scope.fd.localVars.resourceRecordId,task_initiate_id:$scope.taskInitiateId,task_execute_id:$scope.taskExecuteId,pageId:$scope.fd.localVars.parentResourceId,resource_id:$scope.resourceDefinition.page_state_id, output:out_fields };\r\n $scope.fd.localVars.localWidgetId = WidgetDataExchangeService.registerWidget(widgetDefinition);\r\n $scope.fd.localVars.LocalId=$scope.fd.localVars.localWidgetId;\r\n $scope.fd.LocalId=$scope.fd.localVars.localWidgetId;\r\n\r\n \r\n $scope.gsrvc.parentResource[$scope.fd.UuidRef] = $scope.fd\r\n if ($scope.fd.localVars.formDefinition && $scope.fd.localVars.formParams.formViewType==1) $scope.fd.Parameters.BuildMode = true\r\n else $scope.fd.Parameters.BuildMode = false\r\n\r\n $scope.fd.localVars.showMenu = false\r\n \r\n\r\n \r\n\r\n\r\n let template;\r\n if ($scope.resourceDefinition.form_definition) template = $templateCache.get('ktdirectivetemplates/ktTaskDatasetList.html');\r\n else template = $templateCache.get('ktdirectivetemplates/ktTaskDatasetListExe.html');\r\n \r\n $element.append($compile(template)($scope)); \r\n \r\n \r\n \r\n}]; //controler_END\r\n\r\n return {\r\n restrict: 'A',\r\n //templateUrl: 'ktdirectivetemplates/ktTaskDatasetList.html',\r\n controller: controller,\r\n link: function (scope, elem, attrs) {\r\n scope.fd.localVars.datasetlistlinked = true\r\n \r\n\r\n var paginationOptions = {\r\n pageNumber: 1,\r\n pageSize: 10,\r\n sort: null\r\n }; \r\n \r\n \r\n scope.fd.localVars.toggleDropdown = function(){\r\n scope.fd.localVars.showMenu = scope.fd.localVars.showMenu ? false: true \r\n }\r\n \r\n \r\n scope.fd.localVars.setField = function(form,name,value,msg)\r\n {\r\n TaskDataService.setField(form,name,value);\r\n if (msg) MessagingService.addMessage(msg,'info');\r\n };\r\n \r\n \r\n \r\n \r\n if (scope.fd.Parameters==undefined) \r\n scope.fd.Parameters= {\r\n table: {}, \r\n PresentationType:'table', \r\n Analytics:[]\r\n };\r\n \r\n const subjectName= scope.resourceDefinition.page_state_id+\"-\"+scope.fd.UuidRef\r\n\r\n let valueState= scope.ksm.addSubject(subjectName,scope.fd.localVars.widgetState);\r\n const valueStateName = valueState.subject.name;\r\n \r\n\r\n scope.fd.localVars.clearDropdown = {}\r\n \r\n scope.fd.localVars.callClearDropdownFn=function(){\r\n\r\n if (scope.fd.localVars.clearDropdown.clearItems) scope.fd.localVars.clearDropdown.clearItems();\r\n }\r\n\r\n \r\n\r\n //**********************************************************\r\n // GET RESOURCE DATA PAGINATED\r\n //********************************************************** \r\n scope.fd.localVars.getResourceDataPaginated = function (urlNext,urlPrev,newPage,pageSize,getChildren) {\r\n \r\n if (scope.fd.localVars.gridOptionsResourceData.data==undefined) scope.fd.localVars.gridOptionsResourceData.data = [];\r\n \r\n \r\n \r\n if (Math.ceil(scope.fd.localVars.totalCount/pageSize) 0) \r\n // scope.fd.localVars.gridOptionsResourceData.columnDefs = scope.fd.GridState.columnsDef\r\n \r\n scope.fd.localVars.widgetState.sharedData = data.data\r\n scope.ksm.executeAction(valueStateName,\"valueChanged\", scope.fd.localVars.widgetState);\r\n \r\n scope.fd.localVars.gridOptionsResourceData.data = data.data.data;\r\n if (scope.fd.Parameters.PresentationType=='card') {\r\n\t\t\t\t\t\t\t\t\t\t\tscope.fd.localVars.gridOptionsResourceData.data = scope.fd.localVars.TransformDataForCard(data.data.data);\r\n\t\t\t\t\t\t\t\t\t\t\tscope.fd.localVars.dashboardCard.widgets.layout = scope.fd.FormDefSearch?.CardForm //MIGOR dodao jer se ne prikazuju kartice u tabu\r\n\t\t\t\t\t\t\t\t\t\t\tscope.fd.localVars.cardLayoutLoaded = true //MIGOR dodao jer se ne prikazuju kartice u tabu\r\n\t\t\t\t\t\t\t\t\t}\r\n //scope.fd.localVars.restoreGridState();\r\n scope.fd.localVars.nextPage = data.data.data.next;\r\n scope.fd.localVars.previousPage = data.data.data.previous;\r\n scope.fd.localVars.totalCount=data.data.data.count;\r\n scope.fd.localVars.widgetState.currentPage=1;\r\n if (scope.fd.localVars.totalCount>0 && scope.fd.localVars.widgetState.currentPage==0) scope.fd.localVars.widgetState.currentPage=1;\r\n scope.fd.localVars.numPages = Math.ceil(scope.fd.localVars.totalCount/scope.fd.localVars.widgetState.pageSize);\r\n \r\n scope.fd.localVars.gridOptionsResourceData.totalItems=scope.fd.localVars.totalCount;\r\n if (!scope.fd.localVars.formLoaded) scope.fd.localVars.formLoaded=true\r\n scope.fd.localVars.resourceDataDownloaded = true\r\n scope.fd.localVars.resourceDataDownloading = false\r\n scope.fd.localVars.InitialLoad = false\r\n\r\n if (scope.fd.Parameters.PresentationType=='dropdown') scope.fd.localVars.setDropdown(scope.fd.Parameters.ClientSideFilter, data.data)\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n scope.fd.localVars.resourceDataDownloading = false\r\n });\r\n }else{\r\n MessagingService.addMessage(scope.fd.ErrorMsg,'warning');\r\n $timeout(function(){scope.fd.localVars.resourceDataDownloading = false});\r\n }\r\n }\r\n else if (scope.fd.PopulateMethod=='A')\r\n {\r\n var task_instance=0; \r\n if (scope.fd.localVars.formType=='i') task_instance = scope.taskInitiateId;\r\n else task_instance = scope.taskExecuteId;\r\n scope.fd.localVars.gridOptionsResourceData.data.length=0\r\n //if (scope.fd.Parameters.PresentationType=='dropdown') scope.fd.localVars.setDropdown(scope.fd.Parameters.ClientSideFilter, scope.fd.localVars.gridOptionsResourceData)\r\n if (scope.fd.Multiline && scope.fd.localVars.widgetState.itemValue?.val?.length) scope.fd.localVars.widgetState.itemValue.val.length=0\r\n scope.fd.localVars.resourceDataDownloading = true\r\n ResourcesDataService.getResourceDataPaginatedAuto(scope.fd.localVars.selectedResourceId,urlNext,urlPrev,newPage,pageSize,lang,scope.fd.PresentationId,task_instance,scope.fd.localVars.formType).then(function(data) {\r\n \r\n scope.fd.localVars.gridOptionsResourceData.data = data.data;\r\n scope.fd.localVars.restoreGridState();\r\n \r\n scope.fd.localVars.resourceDataDownloaded = true;\r\n scope.fd.localVars.resourceDataDownloading = false;\r\n scope.fd.localVars.nextPage = data.data.next;\r\n scope.fd.localVars.previousPage = data.data.previous;\r\n scope.fd.localVars.totalCount=data.data.count;\r\n scope.fd.localVars.widgetState.currentPage=newPage;\r\n scope.fd.localVars.numPages = Math.ceil(scope.fd.localVars.totalCount/pageSize);\r\n scope.fd.localVars.widgetState.pageSize = pageSize;\r\n scope.fd.localVars.gridOptionsResourceData.totalItems=scope.fd.localVars.totalCount;\r\n scope.fd.localVars.InitialLoad = false\r\n WidgetDataExchangeService.setData({\r\n DEI: [{name:'resourceLink',value:[{name:'resourceId',value:scope.fd.Related},{name:'resourceRecordId',value:scope.fd.localVars.widgetState.selectedDatasetRecordId}\r\n ,{name:'resourceRecordIds',value: null},{name:'resourceRecordsAll',value:scope.fd.localVars.gridOptionsResourceData.data}]}],widgetId: scope.fd.UuidRef,parentResourceId:$scope.fd.localVars.parentResourceId,task_execute_id:scope.taskExecuteId});\r\n \r\n $rootScope.$broadcast(\"StartTask\"+scope.fd.PresentationId+\"Completed\",scope.fd.localVars.gridOptionsResourceData.data);\r\n if (scope.fd.Parameters.PresentationType=='dropdown') scope.fd.localVars.setDropdown(scope.fd.Parameters.ClientSideFilter, scope.fd.localVars.gridOptionsResourceData)\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n scope.fd.localVars.resourceDataDownloading = false;\r\n });\r\n \r\n }\r\n\r\n }\r\n \r\n /* Get children for parent*/\r\n scope.fd.localVars.GetResourceDataForParent = function () \r\n { \r\n scope.fd.localVars.resourceDataDownloading = true\r\n var lang = $rootScope.globals.currentUser.lang;\r\n scope.fd.localVars.dashboard.widgets.layout = scope.fd.FormDefSearch?.SearchForm\r\n \r\n scope.fd.localVars.getResourceDataPaginated(scope.fd.localVars.nextPage,scope.fd.localVars.previousPage,scope.fd.localVars.widgetState.currentPage,scope.fd.localVars.widgetState.pageSize,true)\r\n /*\r\n ResourcesDataService.getResourceDataM2mFilter(scope.fd.PresentationId,scope.fd.ParentDatasetDefId,scope.fd.Related,scope.fd.localVars.ParentRecordId,scope.fd.localVars.widgetState.formData, scope.fd.localVars.dashboard.widgets.layout,scope.taskId,0,lang).then(function(data) {\r\n \r\n scope.fd.localVars.gridOptionsResourceData.data = data.data\r\n scope.fd.localVars.gridOptionsResourceData.columnDefs = data.columnsDef\r\n scope.fd.localVars.resourceDataDownloaded = true\r\n scope.fd.localVars.resourceDataDownloading = false \r\n scope.fd.localVars.InitialLoad = false\r\n scope.fd.localVars.formLoaded=true\r\n \r\n scope.fd.localVars.widgetState.sharedData = data\r\n \r\n scope.ksm.executeAction(valueStateName,\"valueChanged\", scope.fd.localVars.widgetState);\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n scope.fd.localVars.resourceDataDownloading = false \r\n \r\n }); \r\n }*/\r\n }\r\n\r\n //*********************** get state if exists********************************************\r\n //***************************************************************************************\r\n if (valueState.subject.currentStateIndex>=0 && !scope.fd.AutoSearch)\r\n {\r\n scope.fd.localVars.loadFromState=true;\r\n scope.fd.localVars.widgetState = valueState.subject.getState;\r\n scope.fd.localVars.dashboard.widgets.layout=scope.fd.localVars.widgetState.widgets;\r\n scope.fd.fItemValue = scope.fd.localVars.dashboard.widgets.layout;\r\n scope.fd.localVars.searchFormDownloaded = true;\r\n //scope.fd.localVars.setField(scope.fd.fItemValue,'Required',false);\r\n scope.fd.localVars.formLoaded=true;\r\n //scope.fd.Search = scope.fd.localVars.widgetState.formData;\r\n //scope.formData[scope.fd.PresentationId]=scope.fd.Search;\r\n }else\r\n \r\n {\r\n scope.fd.localVars.widgetState.formData=[{}]; \r\n }\r\n \r\n let value_changed = function(data){\r\n valueState.subject.setStateChanges = data;\r\n valueState.subject.notifyObservers(\"valueChanged\");\r\n };\r\n \r\n let action_value_changed = scope.ksm.addAction(valueStateName,\"valueChanged\",value_changed);\r\n \r\n let selection_changed = function(data){\r\n valueState.subject.setStateChanges = data;\r\n valueState.subject.notifyObservers(\"selectionChanged\");\r\n };\r\n \r\n let action_selection_changed = scope.ksm.addAction(valueStateName,\"selectionChanged\",selection_changed);\r\n\r\n let apply_value = function(data) {\r\n scope.fd.localVars.widgetState.itemValue.val = data.state;\r\n }; \r\n \r\n if (scope.fd.Parameters.DependentFieldId!=undefined && scope.fd.Parameters.DependentFieldId!=null) {\r\n if (scope.fd.Parameters.DependentFieldId!=\"\") {\r\n let dependent_field = scope.fd.Parameters.DependentFieldId;\r\n \r\n let subscribedSubject = scope.fd.Parameters.DependentFieldType+\"ValueStateName\"+scope.fd.Parameters.DependentFieldId;\r\n let observer = scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",apply_value);\r\n }\r\n }\r\n \r\n\r\n let default_refresh_data = function(data)\r\n {\r\n valueState.subject.setStateChanges = data\r\n \r\n scope.fd.localVars.GetDatasetDataClick()\r\n \r\n valueState.subject.notifyObservers(\"refreshData\",data)\r\n }\r\n \r\n let action_refresh_data = scope.ksm.addAction(valueStateName,\"refreshData\",default_refresh_data)\r\n scope.refreshData = default_refresh_data\r\n\r\n \r\n let count_selected = function(data)\r\n {\r\n\r\n //valueState.subject.setStateChanges = data\r\n\r\n let result\r\n \r\n result = scope.fd.localVars.widgetState.selectedItems.length\r\n \r\n if (scope.fd.localVars.widgetState.selectedItems.length>0){\r\n //apply filter\r\n let key,val\r\n let in_params = data['in_data']['in_params']\r\n if (in_params==undefined) in_params = \"{}\"\r\n let input = JSON.parse(in_params)\r\n\r\n \r\n\r\n if (Object.keys(input).length>0)\r\n {\r\n result = Object.entries(input).map( ([key, val] = item) => {\r\n \r\n if (val=='currentUser()') val = $rootScope.globals.currentUser.userid\r\n return scope.fd.localVars.widgetState.selectedItems.reduce((count, item) => (item[key] == val ? count + 1 : count), 0)\r\n \r\n });\r\n } \r\n\r\n }\r\n let state = valueState.subject.getState\r\n if (result!=undefined) state['countSelected'] = result\r\n else state['countSelected'] = null\r\n valueState.subject.setStateChanges = state\r\n\r\n scope.fd.Parameters.events[data.event_index].actions[data.action_index].completed = true\r\n scope.fd.Parameters.events[data.event_index].actions[data.action_index].result = state['countSelected']\r\n scope.processEvents(state,false)\r\n //notify\r\n valueState.subject.notifyObservers(\"countSelected\")\r\n }\r\n let action_count_records= scope.ksm.addAction(valueStateName,\"countSelected\",count_selected);\r\n\r\n scope.fd.localVars.showProperties=function(datasetMapperType,showPropertiesRight,propertyType)\r\n {\r\n //debugger\r\n if ( !scope.fd.localVars.datasetMapperType ) //set if not defined or zero\r\n {\r\n scope.fd.localVars.datasetMapperType = datasetMapperType;\r\n } else if (propertyType=='basic') {\r\n if (scope.fd.localVars.datasetMapperType==0 || scope.fd.localVars.datasetMapperType!=datasetMapperType) \r\n scope.fd.localVars.datasetMapperType = datasetMapperType;\r\n else \r\n scope.fd.localVars.datasetMapperType=0;\r\n }\r\n if (showPropertiesRight) scope.gsrvc.setFieldProperties(scope.fd);\r\n \r\n scope.fd.localVars.PropertyType =propertyType\r\n };\r\n \r\n\r\n scope.fd.localVars.processTableAction = function(resource, actionId){\r\n let btn = scope.fd.FormDef[actionId]\r\n if (btn.ResourceType=='task'){\r\n\r\n let pageState = scope.ksm.getState(scope.resourceDefinition.page_state_id)\r\n let prev_task_execute_id = pageState.state.previousTask?.task_execute_id\r\n scope.fd.localVars.LoadTask(btn.id,0,prev_task_execute_id,btn.OpenTaskType)\r\n\r\n }\r\n\r\n if (btn.ResourceType=='page'){\r\n scope.fd.localVars.OpenPage(btn)\r\n\r\n }\r\n }\r\n\r\n // **** MAIN smart table function for preparation and pagination ****\r\n \r\n \r\n scope.fd.localVars.getDataSmartTable = function(tableState, pageNumber,pageSize){\r\n \r\n //debugger //debug getDataSmartTable (zapravo ktRefresh u smarttable widgetu)\r\n let deferred = $q.defer(); \r\n scope.resourceLoading=true;\r\n var lang=$rootScope.globals.currentUser.lang;\r\n var newPage\r\n \r\n \r\n if (pageNumber==undefined) pageNumber = scope.paginationOptions.pageNumber;\r\n if (pageSize==undefined) pageSize = scope.paginationOptions.pageSize;\r\n \r\n if (scope.fd.localVars.gridOptionsResourceData.data) {\r\n scope.totalCount= scope.fd.localVars.gridOptionsResourceData.data.length\r\n scope.paginationOptions.totalItemCount=scope.fd.localVars.gridOptionsResourceData.data.length\r\n scope.paginationOptions.numberOfPages = Math.ceil(scope.paginationOptions.totalItemCount/pageSize);\r\n }\r\n\r\n if (scope.totalCount>0){\r\n if (Math.ceil(scope.totalCount/pageSize) 0 && scope.fd.Multiline) { \r\n let pos = scope.fd.localVars.widgetState.selectedItems.indexOf( newselectedId )\r\n if (pos != -1) scope.fd.localVars.widgetState.selectedItems.splice(pos,1)\r\n }else if (!scope.fd.Multiline) scope.fd.localVars.widgetState.selectedItems.length=0 \r\n } else \r\n if (newselectedId) {\r\n scope.fd.localVars.widgetState.selectedDatasetRecordId = newselectedId;\r\n if (scope.fd.Multiline == true) scope.fd.localVars.widgetState.selectedItems.push(newselectedId)\r\n else scope.fd.localVars.widgetState.selectedItems =[newselectedId]\r\n\r\n //scope.fd.actionsPosition = \"position:absolute;left:\"+event.clientX+\"px;top:\"+event.clientY+\"px\"\r\n \r\n\r\n }\r\n\r\n scope.fd.localVars.widgetState.datasetRecordSelected = row.isSelected;\r\n scope.fd.localVars.widgetState.selectedResourceRecord = row\r\n scope.fd.localVars.prevTaskPackage ={resourceDefId:scope.fd.Related,records: scope.fd.localVars.widgetState.selectedItems}\r\n \r\n\r\n\r\n WidgetDataExchangeService.setData({\r\n DEI: [{name:'resourceLinkDatasetList',value:[{name:'resourceId',value:scope.fd.Related},{name:'resourceRecordId',value:scope.fd.localVars.widgetState.selectedDatasetRecordId}\r\n // ,{name:'resourceRecordIds',value:gridApi.selection.getSelectedRows()},{name:'resourceRecordsAll',value:scope.fd.localVars.gridOptionsResourceData.data}]}],\r\n ,{name:'resourceRecordIds', value: scope.fd.localVars.widgetState.selectedItems},{name:'resourceRecordsAll',value:scope.fd.localVars.gridOptionsResourceData.data}]}],\r\n \r\n parentResourceId:scope.fd.localVars.parentResourceId,widgetId: scope.fd.UuidRef,resource_id:scope.resourceDefinition.page_state_id,task_execute_id:scope.taskExecuteId,resource_id:scope.resourceDefinition.page_state_id});\r\n \r\n\r\n scope.ksm.executeAction(valueStateName,\"selectionChanged\", scope.fd.localVars.widgetState.selectedItems);\r\n };\r\n scope.fd.localVars.multipleSelect = function(row,selectAll,deselectAll){\r\n\r\n if (selectAll) {\r\n scope.fd.localVars.widgetState.selectedItems = angular.copy(scope.fd.localVars.gridOptionsResourceData.data)\r\n for(let i=0;i x[scope.fd.localVars.TablePrefix+'_'+extDataSourceIdName] === newselectedId)\r\n scope.fd.localVars.widgetState.selectedItems.splice(objWithIdIndex, 1);\r\n }\r\n }\r\n scope.ksm.executeAction(valueStateName,\"selectionChanged\", scope.fd.localVars.widgetState.selectedItems);\r\n }\r\n scope.fd.localVars.dropdownSelectionChanged = function (item,model) {\r\n\r\n \r\n scope.fd.localVars.widgetState.selectedDatasetRecordId = 0\r\n \r\n scope.fd.localVars.widgetState.selectedItems=item\r\n \r\n scope.fd.localVars.widgetState.datasetRecordSelected = true;\r\n scope.fd.localVars.widgetState.selectedResourceRecord = item\r\n scope.fd.localVars.prevTaskPackage ={resourceDefId:scope.fd.Related,records: scope.fd.localVars.widgetState.selectedItems}\r\n \r\n WidgetDataExchangeService.setData({\r\n DEI: [{name:'resourceLinkDatasetList',value:[{name:'resourceId',value:scope.fd.Related},{name:'resourceRecordId',value:scope.fd.localVars.widgetState.selectedDatasetRecordId}\r\n // ,{name:'resourceRecordIds',value:gridApi.selection.getSelectedRows()},{name:'resourceRecordsAll',value:scope.fd.localVars.gridOptionsResourceData.data}]}],\r\n ,{name:'resourceRecordIds', value: scope.fd.localVars.widgetState.selectedItems},{name:'resourceRecordsAll',value:scope.fd.localVars.gridOptionsResourceData.data}]}],\r\n \r\n parentResourceId:scope.fd.localVars.parentResourceId,widgetId: scope.fd.UuidRef,resource_id:scope.resourceDefinition.page_state_id,task_execute_id:scope.taskExecuteId,resource_id:scope.resourceDefinition.page_state_id});\r\n \r\n scope.ksm.executeAction(valueStateName,\"selectionChanged\", scope.fd.localVars.widgetState);\r\n };\r\n\r\n \r\n \r\n scope.fd.localVars.resetSelection = function()\r\n {\r\n scope.fd.localVars.widgetState.selectedItems.length=0;\r\n scope.fd.localVars.widgetState.selectedDatasetRecordId = 0;\r\n scope.fd.localVars.widgetState.datasetRecordSelected = false;\r\n \r\n }\r\n \r\n let process_form_change = function(data)\r\n { \r\n if (data.state!=undefined)\r\n {\r\n scope.fd.Search = scope.fd.localVars.widgetState.formData;\r\n if (scope.fd.Parameters.PresentationType=='dropdown') scope.fd.localVars.getDatasetDataList(scope.fd.Parameters.ClientSideFilter,true);\r\n else scope.fd.localVars.getResourceDataPaginated(scope.fd.localVars.nextPage,scope.fd.localVars.previousPage,1,scope.fd.localVars.widgetState.pageSize); \r\n } \r\n };\r\n \r\n //subscribe to events - initially only refresh data\r\n \r\n let dependent_field2 = \"Field\"+scope.fd.PresentationId;\r\n let subscribedSubject2 = \"task\"+scope.resourceDefinition.transaction_id;\r\n let observer2 = scope.ksm.subscribe(subscribedSubject2,dependent_field2,scope.fd.Parameters.EventName,process_form_change);\r\n\r\n \r\n scope.fd.localVars.ProcessSearchForm=function (form){0\r\n \r\n if (form!=undefined){\r\n for(var i=0;i=0 && scope.fd.localVars.selectedResourceItem.id===undefined) scope.fd.localVars.selectedResourceItem = scope.fd.localVars.resourceList[pos]\r\n scope.fd.localVars.getPublishedResourceById(id,saved);\r\n }\r\n \r\n scope.fd.localVars.getPublishedResourceById = function(id,saved) \r\n \r\n {\r\n let pos\r\n let old_publish_id = scope.fd.Parameters.PublishedResourceId\r\n \r\n \r\n if (saved && scope.fd.FormDefSearch?.SearchForm!==undefined && scope.fd.FormDefSearch?.SearchForm!==null && scope.fd.FormDefSearch?.SearchForm.length>0)\r\n { \r\n pos = scope.fd.localVars.publishedResourceList.map(function(e) { return e.id; }).indexOf(id);\r\n \r\n if (pos>=0){\r\n scope.fd.localVars.selectedPublishedResource = scope.fd.localVars.publishedResourceList[pos];\r\n\r\n scope.fd.localVars.selectedResourceItem.name_confirmed = scope.fd.localVars.selectedResourceItem.name\r\n }\r\n \r\n scope.fd.localVars.dashboard.widgets.layout = scope.fd.FormDefSearch?.SearchForm\r\n scope.fd.localVars.formLoaded=true\r\n\t\t\t\t\t\r\n if (scope.fd.Parameters.PresentationType=='card') \r\n {\r\n scope.fd.localVars.dashboardCard.widgets.layout = scope.fd.FormDefSearch?.CardForm\r\n scope.fd.localVars.cardLayoutLoaded = true\r\n }\r\n\r\n if (scope.fd.localVars.formDefinition) \r\n {\r\n scope.fd.localVars.resourceDataDownloaded =true\r\n if (scope.fd.GridState?.columnsDef===undefined || old_publish_id!=id) scope.fd.localVars.getDefaultColumnsDef()\r\n else scope.fd.localVars.restoreGridState()\r\n }\r\n if (scope.fd.localVars.fieldsList == undefined) scope.fd.localVars.fieldsList = []\r\n else scope.fd.localVars.fieldsList.length=0\r\n //FOR ANAYLTICS\r\n scope.fd.localVars.fieldsList = scope.fd.GridState?.columnsDef?.map( \r\n x => { \r\n if ( x.name && x.name.includes('.name') ) \r\n return {'id':x.id, 'FieldName':x.name.slice(0, -5), 'name':x.displayName} \r\n else \r\n return {'id':x.id, 'FieldName':x.name, 'name':x.displayName} \r\n })\r\n // scope.fd.localVars.getFieldNamesFromObject(scope.fd.localVars.dashboard, scope.fd.localVars.fieldsList)\r\n\r\n }else{\r\n pos = scope.fd.localVars.publishedResourceList.map(function(e) { return e.id; }).indexOf(id);\r\n scope.fd.FormDefSearch={}\r\n if (pos>=0){\r\n ResourcesDataService.GetPublishedResourceById(id).then(function (data) {\r\n\r\n //scope.fd.localVars.selectedResourceItem.id = scope.fd.localVars.publishedResourceList[pos].id;\r\n //scope.fd.localVars.selectedResourceItem.name = scope.fd.localVars.publishedResourceList[pos].name;\r\n scope.fd.localVars.selectedResourceItem.Form = data.data.Form\r\n scope.fd.localVars.selectedPublishedResource = scope.fd.localVars.publishedResourceList[pos];\r\n //scope.fd.localVars.selectedResourceItem_c=scope.fd.localVars.selectedResourceItem;\r\n \r\n scope.fd.localVars.selectedResourceItem.name_confirmed = scope.fd.localVars.selectedResourceItem.name\r\n if (scope.fd.localVars.selectedResourceItem_c!==undefined)\r\n {\r\n scope.fd.Parameters.PublishedResourceId=scope.fd.localVars.selectedResourceItem_c.id;\r\n scope.fd.Parameters.PublishedResourceVersion=scope.fd.localVars.selectedResourceItem_c.Version;\r\n scope.fd.Related=scope.fd.localVars.selectedResourceItem_c.ResourceDefUid; \r\n scope.fd.localVars.freshForm=angular.copy(scope.fd.localVars.selectedResourceItem_c.Form)\r\n }\r\n scope.fd.localVars.dashboard.widgets.layout = data.data.Form\r\n\r\n \r\n if (scope.fd.Parameters.PresentationType=='card') {\r\n\t\t\t\t\t\t\t\tscope.fd.localVars.dashboardCard.widgets.layout = data.data.Form\t\t\r\n\t\t\t\t\t\t\t}\r\n \r\n scope.fd.FormDefSearch['SearchForm'] = scope.fd.localVars.dashboard.widgets.layout\r\n if (scope.fd.Parameters.PresentationType=='card') \r\n {\r\n scope.fd.FormDefSearch['CardForm'] = scope.fd.localVars.dashboardCard.widgets.layout\r\n scope.fd.localVars.cardLayoutLoaded = true\r\n\r\n }\r\n if (scope.fd.GridState?.columnsDef===undefined || old_publish_id!=id) \r\n scope.fd.localVars.getDefaultColumnsDef()\r\n else scope.fd.localVars.resourceDataDownloaded =true\r\n \r\n scope.fd.localVars.formLoaded=true;\r\n \r\n //MIGORCHART\r\n \r\n scope.fd.localVars.fieldsList = []\r\n \r\n scope.fd.localVars.getFieldNamesFromObject(scope.fd.localVars.dashboard, scope.fd.localVars.fieldsList)//MIGORCHART\r\n \r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n scope.fd.localVars.formLoaded=true;\r\n });\r\n\r\n }\r\n }\r\n \r\n \r\n} \r\n \r\n //needed for ANAYLTICS\r\n scope.fd.localVars.getFieldNamesFromObject = function (obj, fieldsList, parent,path) { // find FieldNames in given Dashboard object recursively . fieldsList is return variable \r\n var o = {};\r\n Object.keys(obj).forEach(function(key) { \r\n if ( (typeof(obj[key]) === 'object') && obj[key] && key != 'FormDefSearch' && key != 'NameField' && key != 'Parameters' && key != 'localVars' && key != 'FormDef' && key != 'publishedDataset') { //Do NOT parse 'NameField' (we need it as it is)\r\n scope.fd.localVars.getFieldNamesFromObject( obj[key], fieldsList, parent, path + '/' + key)\r\n } \r\n else { \r\n if (key == 'DirectiveName') { parent = obj['Related'] } \r\n \r\n if (key == 'name') { \r\n if ( obj[key] && obj[key].includes('.name') ) \r\n o['FieldName'] = obj[key].slice(0, -5);\r\n else o['FieldName'] = obj[key]; \r\n } \r\n \r\n if (key == 'displayName') { o['name'] = obj[key] } \r\n if (key == 'ElementType' || key == 'id' ) { \r\n o[key]= obj[key];\r\n } \r\n }\r\n }); \r\n \r\n o['parent'] = parent \r\n //o['path'] = path\r\n // if (path.includes('Gridstate') && path.includes('columnsDef')) {\r\n if ( o['ElementType'] && o['name'] && Object.keys(o).length > 0 ) {\r\n // delete o['ElementType']\r\n // delete o['FieldName']\r\n // delete o['parent']\r\n if (fieldsList.find(x => x.id === o.id)===undefined) fieldsList.push(o) \r\n }\r\n \r\n }; \r\n\r\n \r\n \r\n scope.fd.localVars.GetDatasetData=function(data)\r\n {\r\n fromWidget = data.widgetId;\r\n var allProcessed=true;\r\n var pos = scope.fd.localVars.childWidgets.map(function(e) { return e.widgetId; }).indexOf(fromWidget);\r\n //if (pos<0) scope.fd.childWidgets.push({widgetId:fromWidget,processed:true});\r\n for (var i=0;i 0) output.push(key);// Push to the new array\r\n });\r\n });\r\n return output;\r\n };\r\n \r\n \r\n let get = function (obj, path, def) {\r\n /**\r\n * If the path is a string, convert it to an array\r\n * @param {String|Array} path The path\r\n * @return {Array} The path array */\r\n \r\n path = stringToPath(path);// Get the path as an array\r\n var current = obj;// Cache the current object\r\n // For each item in the path, dig into the object\r\n for (var i = 0; i < path.length; i++) {\r\n // If the item isn't found, return the default (or null)\r\n if ( current[path[i]] === undefined || current[path[i]] === null ) return def;\r\n current = current[path[i]]; // Otherwise, update the current value\r\n }\r\n return current;\r\n };\r\n \r\n let getItem = function (column,item)\r\n { \r\n \r\n let def = null\r\n let val = get(item,column.name,def) ;\r\n if (val===null) return \"∅\";\r\n //debugger //smarttable //getItem\r\n \r\n if (column.cellFilter) {\r\n if (column.cellFilter.substring(0,4).trim()==\"date\") \r\n val = $filter(column.cellFilter.substring(0,4))(val,column.cellFilter.substring(6,column.cellFilter.length).trim());\r\n }\r\n \r\n if (column.NoOfDecimals){\r\n val= (val).toLocaleString( navigator.language, { minimumFractionDigits: column.NoOfDecimals } ); \r\n }\r\n \r\n \r\n return val;\r\n };\r\n \r\n \r\n scope.fd.localVars.executeDatasetList = function(){ \r\n var lang=$rootScope.globals.currentUser.lang;\r\n if (scope.fd.PresentationId==null) {\r\n scope.fd.PresentationId = 0;\r\n }\r\n if (scope.fd.localVars.selectedResourceId==undefined) scope.fd.localVars.selectedResourceId = scope.fd.Related;\r\n if (scope.fd.localVars.widgetState.pageSize==undefined) scope.fd.localVars.widgetState.pageSize = paginationOptions.pageSize\r\n\r\n if (scope.fd.Multiline && scope.fd.localVars.widgetState.itemValue?.val?.length) scope.fd.localVars.widgetState.itemValue.val.length=0\r\n else if (!scope.fd.Multiline) scope.fd.localVars.widgetState.itemValue.val = null\r\n scope.fd.localVars.resourceDataDownloading = true\r\n \r\n TaskDataService.ktTaskDatasetList(scope.fd.Related,scope.fd.PresentationId,scope.fd.localVars.parentResourceId,scope.fd.UuidRef,scope.fd.Parameters.PublishedResourceVersion,scope.resourceDefinition.resourceVersion).then(function(data) {\r\n \r\n scope.fd.localVars.widgetState.resourceWidgetDefinition= data.data.resourceDefinition;\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t if (data.data.columns?.columnsDef?.length==0 ) {\r\n\t\t\t\t\t\t\t\t\t\t MessagingService.addMessage('Did not receive columnDefs data for uuid: ' + scope.fd.UuidRef,'error')\r\n\t\t\t\t\t\t\t\t\t\t console.log ('$scope.fd.localVars.executeDatasetList(): Did not receive columnDefs data for uuid: ' + scope.fd.UuidRef)\r\n\t\t\t\t\t\t\t\t\t }\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t \r\n \r\n scope.fd.localVars.gridOptionsResourceData.columnDefs = data.data.columns.columnsDef;\r\n //debugger //ktTaskDatasetList\r\n \r\n //if (scope.fd.GridState?.columnsDef?.length > 0) \r\n // scope.fd.localVars.gridOptionsResourceData.columnDefs = scope.fd.GridState.columnsDef\r\n // MIGOR TODO KAD SE MIJENJA RESURS NA DATASET LISTI TREBA NULIRATI GRIDSTATE !\r\n \r\n //debugger //prepare columnDefs //smarttable\r\n \r\n scope.fd.fItemValue=data.data.widgets;\r\n if (data.data.widgetsCard!=null) {\r\n scope.fd.localVars.dashboardCard.widgets.layout = data.data.widgetsCard;\r\n }\r\n \r\n scope.fd.localVars.dashboard.widgets.layout = data.data.widgets;\r\n scope.fd.localVars.widgetState.widgets = scope.fd.localVars.dashboard.widgets.layout;\r\n \r\n scope.fd.localVars.widgetState.formData = data.data.formData;\r\n scope.fd.Search = scope.fd.localVars.widgetState.formData;\r\n if (scope.fd.Search==undefined) scope.fd.Search={};\r\n\r\n scope.fd.localVars.widgetState.sharedData = data.data\r\n scope.ksm.executeAction(valueStateName,\"valueChanged\", scope.fd.localVars.widgetState);\r\n \r\n //setup data grid or card\r\n scope.fd.localVars.gridOptionsResourceData.data = data.data.data;\r\n if (scope.fd.Parameters.PresentationType=='card') { \r\n\t\t\t\t\t\t\t\t\t\tscope.fd.localVars.gridOptionsResourceData.data = scope.fd.localVars.TransformDataForCard(data.data.data);\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t//scope.fd.localVars.dashboardCard.widgets.layout = scope.fd.FormDefSearch?.CardForm //MIGOR TODO VIDJETI DA LI OVO TREBA \r\n\t\t\t\t\t\t\t\t\t\t\t//scope.fd.localVars.cardLayoutLoaded = true //MIGOR dodao jer se ne prikazuju kartice //MIGOR TODO VIDJETI DA LI OVO TREBA\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t}\r\n //scope.fd.localVars.restoreGridState();\r\n scope.fd.localVars.nextPage = data.data.data.next;\r\n scope.fd.localVars.previousPage = data.data.data.previous;\r\n scope.fd.localVars.totalCount=data.data.data.count;\r\n scope.fd.localVars.widgetState.currentPage=1;\r\n if (scope.fd.localVars.totalCount>0 && scope.fd.localVars.widgetState.currentPage==0) scope.fd.localVars.widgetState.currentPage=1;\r\n scope.fd.localVars.numPages = Math.ceil(scope.fd.localVars.totalCount/scope.fd.localVars.widgetState.pageSize);\r\n \r\n scope.fd.localVars.gridOptionsResourceData.totalItems=scope.fd.localVars.totalCount;\r\n \r\n scope.fd.localVars.resourceDataDownloaded = true;\r\n scope.fd.localVars.resourceDataDownloading = false;\r\n scope.fd.localVars.InitialLoad = false;\r\n scope.fd.localVars.searchFormDownloaded = true;\r\n scope.fd.localVars.formLoaded=true;\r\n scope.fd.localVars.cardLayoutLoaded = true\r\n\r\n if (scope.fd.Parameters.PresentationType=='dropdown') scope.fd.localVars.setDropdown(scope.fd.Parameters.ClientSideFilter, data.data)\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n scope.fd.localVars.resourceDataDownloading = false\r\n });\r\n \r\n };//getFormResource_END\r\n\r\n \r\n \r\n scope.fd.localVars.restoreGridState= function() {\r\n //debugger\r\n if (scope.fd['GridState']!==undefined && scope.fd['GridState']!==null)\r\n {\r\n \r\n\r\n if (scope.fd['GridState']['columnsDef']!==undefined && scope.fd['GridState']['columnsDef'].length) scope.fd.localVars.gridOptionsResourceData.columnDefs = scope.fd['GridState']['columnsDef']\r\n if (scope.fd['GridState']['columnsQuery']!==undefined && scope.fd['GridState']['columnsQuery'].length) scope.fd.localVars.columnsForQuery = scope.fd['GridState']['columnsQuery']\r\n if (scope.fd['GridState']['relatedResources']!==undefined && scope.fd['GridState']['relatedResources'].length) scope.fd.localVars.relatedResources = scope.fd['GridState']['relatedResources']\r\n if (scope.fd.localVars.columnsForQuery===undefined) scope.fd.localVars.columnsForQuery=[]\r\n }\r\n };\r\n \r\n scope.fd.localVars.getResourceData = function () {\r\n\r\n // scope.activity.activityMessage = ProcessingService.setActivityMsg('Downloading resource data for '+scope.selectedResource);\r\n var lang = $rootScope.globals.currentUser.lang;\r\n scope.fd.localVars.resourceDataDownloading = true;\r\n if (scope.fd.localVars.widgetState.pageSize==undefined) scope.fd.localVars.widgetState.pageSize = paginationOptions.pageSize;\r\n ResourcesDataService.getResourceData(scope.fd.localVars.selectedResourceId,scope.taskId,scope.fd.localVars.formType,lang).then(function(data) {\r\n \r\n scope.fd.localVars.gridOptionsResourceData.data = data.data;\r\n scope.fd.localVars.gridOptionsResourceData.columnDefs = data.columnsDef;\r\n //debugger //getResourceData() //smarttable\r\n scope.fd.localVars.restoreGridState();\r\n scope.fd.localVars.InitialLoad = false;\r\n scope.fd.localVars.resourceDataDownloaded = true;\r\n scope.fd.localVars.resourceDataDownloading = false;\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n scope.fd.localVars.resourceDataDownloading = false;\r\n });\r\n };\r\n\r\n //**********************************************************\r\n // GET FORM FIELDS\r\n //********************************************************** \r\n \r\n scope.fd.localVars.getFormFields = function(){\r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n scope.fd.localVars.peLoaded=false \r\n ResourcesDataService.getFormFields(scope.fd.Related,lang).then(function(data) {\r\n scope.fd.localVars.PresentationElements= data.data;\r\n scope.fd.localVars.peLoaded=true\r\n },function(error){\r\n scope.fd.localVars.peLoaded=true\r\n MessagingService.addMessage(error.msg,'error');\r\n }); \r\n };\r\n \r\n \r\n /* \r\n scope.$watch('localVars.widgetState.itemValue.val',function(newValue,oldValue){\r\n if (newValue!=oldValue)\r\n {\r\n //send data to package\r\n let newValueSingle,newValueMultiple;\r\n if (scope.fd.Multiline)\r\n {\r\n newValueMultiple = newValue;\r\n newValueSingle=\"\";\r\n }\r\n else\r\n {\r\n newValueMultiple = {};\r\n newValueSingle=newValue;\r\n }\r\n \r\n scope.ksm.executeAction(valueStateName,\"valueChanged\", scope.fd.localVars.widgetState);\r\n \r\n WidgetDataExchangeService.setData({\r\n DEI: [{name:'resourceLinkDatasetList',value:[{name:'resourceId',value:scope.fd.Related},{name:'resourceRecordId',value:newValueSingle}\r\n ,{name:'resourceRecordIds',value:newValueMultiple},{name:'resourceRecordsAll',value:scope.fd.localVars.datasetItems}]}],widgetId: scope.fd.UuidRef,parentResourceId:scope.fd.localVars.parentResourceId,task_execute_id:scope.taskExecuteId});\r\n \r\n }\r\n });\r\n */\r\n \r\n //**********************************************************\r\n // GET DATASET DATA FOR DROPDOWN\r\n //**********************************************************\r\n var refresh_list_from_callback=function(data)\r\n {\r\n scope.fd.localVars.getDatasetDataList(true);\r\n \r\n }\r\n scope.filterOnClient = function(items)\r\n {\r\n let temp=[];\r\n let search;\r\n if (Array.isArray(scope.fd.Search) && scope.fd.Search.length>0) search = scope.fd.Search[0];\r\n else search = scope.fd.Search;\r\n for (let i=0;i=0) scope.fd.localVars.relatedResourcesColumns[related_id][j].selected= true\r\n }\r\n }\r\n \r\n scope.fd.localVars.RelatedResourceDirectColumns = function(published){\r\n\r\n //get columns\r\n //selected_related.resourceType='dataset' //remove hardcoding later\r\n\r\n let pos = scope.fd.GridState.relatedResources.map(function(e) { return e.id; }).indexOf(published.ResourceDefUid)\r\n\r\n if (pos>=0){\r\n scope.fd.GridState.relatedResources[pos].LoadingColumns=true\r\n scope.fd.GridState.relatedResources[pos].PublishedResourceId=published.id\r\n scope.fd.GridState.relatedResources[pos].PublishedResourceVersion = published.Version\r\n }\r\n scope.fd.localVars.relatedResourcesColumns[published.ResourceDefUid] = []\r\n published.ResourceType = 'dataset' //remove this after implementation on server\r\n\r\n ResourcesDataService.getResourceColumns(published.id,published.ResourceType,lang,published.Version).then(function(data) {//MIGOR\r\n \r\n scope.fd.localVars.relatedResourcesColumns[published.ResourceDefUid] = data.data.columnsDef\r\n scope.fd.GridState.relatedResources[pos].LoadingColumns=false \r\n scope.setColSelected(pos) \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n scope.fd.GridState.relatedResources[pos].LoadingColumns=false\r\n });\r\n }\r\n scope.fd.localVars.addRemoveColumn = function(col,related_id){\r\n\r\n \r\n let pos = scope.fd.GridState['columnsDef'].map(function(e) { return e.name; }).indexOf(col.name);\r\n let pos_rel = scope.fd.GridState['relatedResources'].map(function(e) { return e.id; }).indexOf(related_id);\r\n\r\n if (pos>0) {\r\n if (col.selected) \r\n\r\n {\r\n scope.fd.GridState['columnsDef'].splice(pos,1)\r\n if (scope.fd.GridState.relatedResources[pos_rel].selectedCols==undefined) scope.fd.GridState.relatedResources[pos_rel].selectedCols=[]\r\n \r\n scope.fd.GridState.relatedResources[pos_rel].selectedCols.splice(col.name)\r\n }\r\n\r\n }else{\r\n if (!col.selected) \r\n {\r\n scope.fd.GridState['columnsDef'].push(col)\r\n if (scope.fd.GridState.relatedResources[pos_rel].selectedCols==undefined) scope.fd.GridState.relatedResources[pos_rel].selectedCols=[]\r\n \r\n scope.fd.GridState.relatedResources[pos_rel].selectedCols.push(col.name)\r\n }\r\n }\r\n\r\n }\r\n\r\n scope.fd.localVars.onSelectColumnsVersionCallback=function (item,model) {\r\n\r\n let pos = scope.fd.localVars.relatedResourcesPublishedList[item.ResourceDefUid].map(function(e) { return e.id; }).indexOf(item.id);\r\n\r\n if (pos>0) {\r\n\r\n scope.fd.localVars.RelatedResourceDirectColumns(scope.fd.localVars.relatedResourcesPublishedList[item.ResourceDefUid][pos])\r\n //scope.fd.localVars.relatedResourcesPublishedList[pos]\r\n }\r\n }\r\n scope.fd.localVars.getResourceDataFiltered = function () {\r\n\r\n scope.filter = {};\r\n var lang = $rootScope.globals.currentUser.lang;\r\n\r\n //scope.activity.activityMessage = ProcessingService.setActivityMsg('Retriving data '+scope.selectedResource);\r\n //scope.filter = ResourcesDataService.prepareResourceWidgetData(scope.dashboard.widgets,-1);\r\n \r\n if (scope.fd.localVars.selectedResourceId==null) {\r\n scope.fd.localVars.selectedResourceId = scope.fd.Related;\r\n }\r\n scope.fd.localVars.resourceDataDownloading = true;\r\n // ResourcesDataService.getResourceDataFiltered(scope.fd.Related,lang,scope.filter).then(function(data) {//MIGOR\r\n ResourcesDataService.getResourceDataFiltered(scope.fd.localVars.selectedResourceId,scope.taskId,scope.fd.localVars.formType,lang,scope.fd.localVars.dashboard.data).then(function(data) {//MIGOR\r\n \r\n scope.fd.localVars.gridOptionsResourceData.data = data.data;\r\n scope.fd.localVars.gridOptionsResourceData.columnDefs = data.columnsDef;\r\n \r\n scope.fd.localVars.resourceDataDownloaded = true;\r\n scope.fd.localVars.resourceDataDownloading = false;\r\n scope.fd.localVars.restoreGridState();\r\n scope.fd.localVars.InitialLoad = false\r\n \r\n \r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n scope.fd.localVars.resourceDataDownloading = false;\r\n });\r\n };\r\n \r\n \r\n scope.fd.localVars.showHideSearchForm = function()\r\n {\r\n //if (scope.fd.ShowSearchForm) scope.fd.localVars.getFormResource();\r\n };\r\n \r\n //GET Published resources\r\n scope.fd.localVars.getPublishedResources=function()\r\n {\r\n scope.fd.localVars.publishedLoaded=false\r\n \r\n ResourcesDataService.GetPublishedResourcesByTypeId(scope.fd.Related,'form').then(\r\n function (data) { \r\n \r\n scope.fd.localVars.publishedResourceList = data.data;\r\n scope.fd.localVars.publishedLoaded=true\r\n\r\n if (!scope.fd.Parameters.SelectVersionDirect){\r\n let published = scope.fd.localVars.publishedResourceList[scope.fd.localVars.publishedResourceList.length-1]\r\n \r\n scope.fd.localVars.selectedResourceItem_c = published\r\n scope.fd.Parameters.PublishedResourceId = published?.id\r\n scope.fd.Parameters.PublishedResourceVersion = published?.Version\r\n }\r\n\r\n if (scope.fd.Parameters.PublishedResourceId>0) scope.fd.localVars.setSelectedResource(scope.fd.Parameters.PublishedResourceId,true);\r\n \r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n } \r\n \r\n // POPUNI LISTU DEFINICIJA OD RESURSA (RESOURCES LIST)\r\n scope.fd.localVars.getResources = function() {\r\n\r\n if (scope.fd.localVars.resourceList==undefined) scope.fd.localVars.resourceList=[];\r\n \r\n let lang=$rootScope.globals.currentUser.lang;\r\n ResourcesDataService.getResourceDefListByType(lang,scope.fd.Parameters.SelectedResourceType).then(\r\n function(data) {\r\n \r\n scope.fd.localVars.resourceList = data.data;\r\n if (scope.fd.Related!=\"\" && scope.fd.Related!=undefined && scope.fd.Related!=null) {\r\n let pos = scope.fd.localVars.resourceList.map(function(e) { return e.id; }).indexOf(scope.fd.Related);\r\n if (pos>0) scope.fd.localVars.selectedResourceItem = scope.fd.localVars.resourceList[pos]\r\n }\r\n scope.fd.localVars.getPublishedResources()\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n\r\n //Load subquery form\r\n scope.fd.localVars.loadSubqueryForm = function(){\r\n\r\n let version = 0\r\n if (scope.fd.Parameters.SubQuery.SelectVersionDirect) version = scope.fd.Parameters.SubQuery.PublishedResourceVersion\r\n \r\n\r\n ResourcesDataService.GetPublishedResourceById(scope.fd.Parameters.SubQuery.PublishedResourceId).then(function (data) {\r\n\r\n \r\n scope.fd.Parameters.SubQuery.form = {layout:data.data.Form}\r\n if (!scope.fd.Parameters.SubQuery.formData) scope.fd.Parameters.SubQuery.formData=[{}]\r\n scope.fd.localVars.subqueryFormLoaded=true;\r\n\r\n \r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n scope.fd.localVars.subqueryFormLoaded=true;\r\n \r\n });\r\n\r\n \r\n }\r\n\r\n scope.fd.localVars.sqResourceDefinition = {uid:scope.fd.Parameters.SubQuery?.SelectedResource?.id,form_definition:true}\r\n if (scope.fd.Parameters.UseSubQuery && scope.fd.Parameters.SubQuery.PublishedResourceId && !scope.fd.Parameters.SubQuery.form?.layout?.length) scope.fd.localVars.loadSubqueryForm()\r\n else{\r\n\r\n if (!scope.fd.Parameters.SubQuery) scope.fd.Parameters.SubQuery={}\r\n if (!scope.fd.Parameters.SubQuery.formData) scope.fd.Parameters.SubQuery.formData=[{}]\r\n \r\n scope.fd.localVars.subqueryFormLoaded=true\r\n\r\n }\r\n //**********************************************************\r\n // GET DATASET DIRECT FILTER\r\n //********************************************************** \r\n scope.fd.localVars.getDatasetDirect = function (item) {\r\n\r\n let children = [item[scope.fd.localVars.TablePrefix+'_id']]\r\n scope.fd.localVars.resourceDataDownloading = true \r\n ResourcesDataService.getResourceDataDirectFilter(scope.fd.Related,{id__in: children},scope.fd.GridState['columnsQuery']).then(function(data) {\r\n \r\n $timeout(function(){\r\n scope.fd.localVars.gridOptionsResourceData.data = data.data\r\n scope.fd.localVars.gridOptionsResourceData.columnDefs = scope.fd.GridState['columnsDef']\r\n scope.fd.localVars.resourceDataDownloaded = true\r\n scope.fd.localVars.resourceDataDownloading = false \r\n scope.fd.localVars.InitialLoad = false\r\n })\r\n // MessagingService.addMessage(data.msg,'success');\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n scope.fd.localVars.resourceDataDownloading = false \r\n });\r\n };\r\n\r\n\r\n \r\n \r\n \r\n let refresh_data=function(data)\r\n {\r\n let state = data.state\r\n let search_form = scope[\"datasetListSearchForm\" + scope.fd.PresentationId]\r\n //if search form is undefined you can't get the data\r\n if (state!==undefined && search_form!=undefined)\r\n {\r\n scope.fd.ParentDatasetDefId = state.datasetDefId\r\n scope.fd.localVars.ParentRecordId = state.recordId\r\n //if (scope.fd.Parameters.ParentRelationshipType==0) \r\n scope.fd.localVars.GetResourceDataForParent()\r\n //else scope.fd.localVars.getDatasetDirect(state.record)\r\n }\r\n\r\n }\r\n if (scope.fd.HasParentDataset && scope.fd.PopulateParentMethod=='A')\r\n {\r\n \r\n\r\n //setup here state manager\r\n let dependent_field = valueStateName\r\n let subscribedSubject = scope.resourceDefinition.page_state_id+'-'+scope.fd.SrcParentWidgetId;\r\n let subject = scope.ksm.addSubject(subscribedSubject,null); \r\n let observer = scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",refresh_data);\r\n let val = scope.ksm.getState(subscribedSubject);\r\n if (val.state!==undefined && val.state!==null)\r\n { \r\n let parent_item = val.state\r\n scope.fd.ParentDatasetDefId = parent_item.datasetDefId\r\n scope.fd.localVars.ParentRecordId = parent_item.recordId\r\n //if (scope.fd.Parameters.ParentRelationshipType==0) \r\n scope.fd.localVars.GetResourceDataForParent()\r\n //else scope.fd.localVars.getDatasetDirect(parent_item.record)\r\n \r\n }\r\n \r\n }\r\n\r\n scope.fd.localVars.getPreviousTaskWidget = function(linkType)\r\n {\r\n var pTaskData = WidgetDataExchangeService.getPrevTaskData(scope.prevTaskExeId);\r\n var datasetId=0,datasetRecordId=0;\r\n let action;\r\n for (let k=0;k 0) ..do somoething with o \r\n }; \r\n\r\n\r\n scope.fd.localVars.saveGridState= function(show_message) {\r\n //debugger //ktTaskDatasetList smarttable\r\n let columnsDef = scope.fd.localVars.gridOptionsResourceData.columnDefs\r\n\r\n let columnsQuery = scope.fd.localVars.columnsForQuery\r\n let relatedResources = scope.fd.localVars.gridOptionsResourceData.relatedResources\r\n scope.fd['GridState']={'columnsDef':columnsDef,'columnsQuery': columnsQuery,'relatedResources':relatedResources}\r\n \r\n //var destId=scope.fd.LocalId\r\n \r\n //find corresponding columns in Presentation elements\r\n /*\r\n for (let i=0; i < scope.fd.fItemValue[0].layout[0].layout.length;i++) {\r\n for (let j=0; j< state.length;j++) {\r\n if (state[j]['id'] == scope.fd.fItemValue[0].layout[0].layout[i]['id']) {\r\n scope.fd.fItemValue[0].layout[0].layout[i]['Parameters']['GridState'] = state[j]\r\n }\r\n \r\n }\r\n \r\n }\r\n */\r\n //var res = scope.fd.localVars.patchDashboard (s, scope.fd.LocalId, state)\r\n if (show_message)\r\n MessagingService.addMessage(\"To make changes stick please save form\",'info'); \r\n };\r\n \r\n /*********************************** preview and dowlload files functions *************************/\r\n /*********************************** preview and dowlload files functions *************************/\r\n /*********************************** preview and dowlload files functions *************************/\r\n scope.fd.localVars.downloadFile = function(fileId,fileName){\r\n ResourcesDataService.downloadFile(scope.fd.Related,fileId).then(function(data) {\r\n \r\n MessagingService.addMessage('File '+fileName+' downloaded','info');\r\n var url = URL.createObjectURL(new Blob([data.data]));\r\n var a = document.createElement('a');\r\n a.href = url;\r\n a.download = fileName;\r\n a.target = '_blank';\r\n a.click();\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n \r\n });\r\n };// dowload file END\r\n \r\n \r\n scope.fd.localVars.previewFile = function(fileId,fileName,fileType){\r\n \r\n ResourcesDataService.downloadFile(scope.fd.Related,fileId).then(function(data) {\r\n \r\n var url = URL.createObjectURL(new Blob([data.data],{type:fileType}));\r\n let new_doc = window.open(url,\"_blank\");\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n \r\n });\r\n };// preview file END\r\n /*********************************** preview and dowlload files functions *************************/\r\n /*********************************** preview and dowlload files functions *************************/\r\n /*********************************** preview and dowlload files functions *************************/\r\n\r\n\r\n if (scope.fd.localVars.publishedResourceList==undefined) scope.fd.localVars.publishedResourceList=[];\r\n var lang=$rootScope.globals.currentUser.lang;\r\n\r\n /* \r\n ResourcesDataService.GetPublishedResourcesByType(scope.fd.Parameters.SelectedResourceType,'form').then(\r\n function (data) { \r\n if (scope.fd.localVars===undefined) scope.fd.localVars={} \r\n scope.fd.localVars.publishedResourceList = data.data;\r\n //debugger //GetPublishedResourcesByType \r\n \r\n if (scope.fd.Parameters.PublishedResourceId!=null) \r\n scope.fd.localVars.setSelectedResource(scope.fd.Parameters.PublishedResourceId,true); \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n */\r\n scope.fd.localVars.getFileTypes = function(){\r\n ResourcesDataService.getResourceDefListByType($rootScope.globals.currentUser.lang,'file').then(\r\n function(data) { \r\n scope.fd.localVars.listOfFileTypes = data.data;\r\n }\r\n ,function(error){ MessagingService.addMessage(error.msg,'error') }\r\n );\r\n \r\n }\r\n\r\n //check the purpose of this function\r\n if (scope.fd.localVars.formDefinition) scope.fd.localVars.getFileTypes()\r\n \r\n \r\n\r\n //&& !scope.fd.Parameters.DownloadAllRecord\r\n if (scope.fd.Related!=null && !scope.fd.localVars.formDefinition && !scope.fd.HasParentDataset) {\r\n \r\n if (!scope.fd.localVars.loadFromState && !scope.fd.Parameters.AutoSearchClient && scope.fd.AutoSearch) scope.fd.localVars.executeDatasetList();\r\n else if (scope.fd.localVars.loadFromState || (scope.fd.localVars.searchFormDownloaded && scope.fd.Parameters.AutoSearchClient))\r\n {\r\n scope.fd.localVars.getResourceDataPaginated(scope.fd.localVars.nextPage,scope.fd.localVars.previousPage,scope.fd.localVars.widgetState.currentPage,scope.fd.localVars.widgetState.pageSize);\r\n }\r\n else if (!scope.fd.localVars.searchFormDownloaded && scope.fd.Parameters.AutoSearchClient)\r\n {\r\n scope.fd.localVars.showHideSearchForm();\r\n \r\n }\r\n\r\n \r\n }else if (scope.fd.Related!=null && !scope.fd.localVars.formDefinition && !scope.fd.localVars.searchFormDownloaded && scope.fd.Parameters.DownloadAllRecords && !scope.fd.Parameters.AutoSearchClient)\r\n \r\n {\r\n scope.fd.localVars.getResourceDataPaginated(scope.fd.localVars.nextPage,scope.fd.localVars.previousPage,scope.fd.localVars.widgetState.currentPage,scope.fd.localVars.widgetState.pageSize); \r\n }\r\n else if (scope.fd.Related!=null && (scope.fd.localVars.datasetMapperType!=5 || scope.fd.Parameters.AutoSearchClient))\r\n {\r\n //if (scope.fd.Parameters.PresentationType=='card') scope.fd.localVars.getCardLayout();\r\n scope.fd.localVars.restoreGridState();\r\n scope.fd.localVars.showHideSearchForm();\r\n\r\n }\r\n \r\n \r\n if (scope.fd.localVars.formDefinition && scope.fd.Related!=\"\" && scope.fd.Related!=undefined && scope.fd.Related!=null) \r\n {\r\n scope.fd.localVars.getResources()\r\n if (scope.fd.Parameters.PresentationType=='dropdown') scope.fd.localVars.getFormFields()\r\n //setup related resources and columns\r\n if (scope.fd.GridState?.relatedResources!==undefined){\r\n for (let i=0;i0) UtilityService.subscribe_2_events(scope.resourceDefinition.page_state_id,scope.fd.UuidRef,scope.fd.Parameters.events,scope,scope.ksm)\r\n\r\n \r\n }\r\n \r\n \r\n } \r\n \r\n};\r\n \r\n \r\n \r\n \n'use strict';\n\nexport function ktTaskDefDetails () {\n\n return {\n restrict: 'A',\n scope:{\n taskDefinition:'=',\n isCollapsed:'='\n },\n templateUrl: 'ktdirectivetemplates/ktTaskDefDetails.html',\n link: function (scope, elem, attrs) {\n\n \n \n }\n\n }\n};\n'use strict';\n\nexport function ktTaskDetails () {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktTaskDetails.html',\n scope:{\n tName: \"=\",\n tInit:'=',\n tExe:'=',\n },\n controller: function(CodesService,$rootScope){},\n link: function (scope, elem, attrs) {\n\n \n \n scope.ti = scope.tInit;\n /*\n scope.getInitiateId = function(){\n \n if (scope.taskInitiateInstance != undefined)\n {\n return scope.taskInitiateInstance.id;\n }else\n \n {\n return scope.taskExecuteInstance.id;\n \n }\n \n }\n \n scope.getStatus = function(){\n if (scope.taskInitiateInstance != undefined)\n {\n return scope.taskInitiateInstance.Status.Name;\n }else\n \n {\n return scope.taskExecuteInstance.Status.Name;\n \n } \n \n }\n */\n \n }\n\n }\n};\n'use strict';\n\nexport function ktTaskDropdown () {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktTaskDropdown.html',\n controller: function($scope,CodesService,ResourcesDataService,$rootScope,ProcessingService){ \n },\n link: function (scope, elem, attrs) {\n \n \n }\n }\n \n};\n'use strict';\n\nexport function ktTaskDropdown2 () {\n\n return {\n restrict: 'A',\n templateUrl: 'ktdirectivetemplates/ktTaskDropdown2.html',\n controller: function($scope,CodesService,ResourcesDataService,$rootScope,ProcessingService){ \n },\n link: function (scope, elem, attrs) {\n \n \n }\n }\n \n};\n'use strict';\r\n\r\nexport function ktTaskExecuteOutcomes () {\r\n\r\n return {\r\n restrict: 'A',\r\n templateUrl: 'ktdirectivetemplates/ktTaskExecuteOutcomes.html',\r\n scope:{\r\n outcomes: '=',\r\n taskDefinition: '=',\r\n taskExe: '=',\r\n exeForm: '=',\r\n form: '=',\r\n formParams: '=',\r\n taskInitiateInstance: '=',\r\n localVars:'=',\r\n },\r\n controller: function($scope,CodesService,MessagingService,TaskDataService,$rootScope,$state)\r\n {\r\n \r\n },\r\n link: function (scope, elem, attrs) {\r\n \r\n if (scope.localVars==undefined) scope.localVars={};\r\n \r\n scope.localVars.showInlineTask=false;\r\n scope.localVars.isInlineTask = false;\r\n \r\n if (scope.taskExe!=undefined) scope.taskExe.showInlineTask=false;\r\n else scope.taskExe = {showInlineTask:false}; \r\n \r\n scope.localVars.ProcessOutcome = function (outcome){\r\n \r\n for (var i=0;i0) scope.localVars.StartTask(taskDefId,outcomeId,scope.taskExe.id); \r\n \r\n \r\n }\r\n if (type==2)\r\n {\r\n $state.go('app.navbar.tasks.proc',{id: taskDefId,fromStateName:$state.current.name,\r\n fromStateParams:$state.params,prev_task_execute_id:scope.taskExe.id,outcome_id:outcomeId,presentation_id:0});\r\n \r\n }\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n\r\n });\r\n\r\n }\r\n else{\r\n \r\n MessagingService.addMessage(\"Invalid task data --> Task execution id is undefined\",'error');\r\n }\r\n }else\r\n {\r\n MessagingService.addMessage(\"Invalid task data --> Task execution object is undefined\",'error');\r\n }\r\n }\r\n \r\n \r\n \r\n }\r\n }\r\n};\n'use strict';\r\n\r\nexport function ktTaskFiles () {\r\n \r\n return {\r\n restrict: 'A', \r\n templateUrl: 'ktdirectivetemplates/ktTaskFiles.html',\r\n controller: function ($scope, $rootScope,$uibModal,KatalyoStateManager,ResourcesDataService,ProcessingService,MessagingService,CODES_CONST,WidgetDataExchangeService,GridsterService,TaskDataService,$timeout,$q) {\r\n\t\t\t\t \r\n $scope.fd.ReadOnly=false;\r\n $scope.animationsEnabled = true;\r\n \r\n $scope.gsrvc = GridsterService;\r\n \r\n if ($scope.fd.localVars==undefined) $scope.fd.localVars = {datasetMapperType:0};\r\n \r\n $scope.fd.localVars.dashboard = {widgets:[]}\r\n $scope.fd.localVars.showMenu = false\r\n $scope.fd.localVars.widgetState={}\r\n $scope.fd.localVars.gridsterType = 'file'\r\n $scope.fd.localVars.TablePrefix = 'resource'+$scope.fd.Related+'_'+$rootScope.globals.currentUser.organisation.id\r\n $scope.fd.localVars.showSearchFilters = true\r\n $scope.fd.localVars.formParams={formViewType:1,showGridNavigation:true};\r\n $scope.fd.localVars.taskId=$scope.resourceDefinition.ResourceDefId;\r\n $scope.fd.localVars.InitialLoad = true\r\n if ($scope.resourceDefinition.form_definition && $scope.fd.localVars.formParams.formViewType==1) $scope.fd.Parameters.BuildMode = true\r\n else $scope.fd.Parameters.BuildMode = false\r\n\r\n $scope.fd.localVars.toggleDropdown = function(){\r\n $scope.fd.localVars.showMenu = $scope.fd.localVars.showMenu ? false: true \r\n }\r\n \r\n if ($scope.fd.Parameters == null || $scope.fd.Parameters==undefined) $scope.fd.Parameters = {};\r\n \r\n $scope.fd.localVars.paginationOptions = {\r\n pageNumber: 1,\r\n pageSize: 10,\r\n sort: null\r\n };\r\n \r\n $scope.showMetadata = function (fileId) {\r\n \r\n \r\n var modalInstance = $uibModal.open({\r\n animation: $scope.animationsEnabled,\r\n templateUrl: 'metadata_modal.html',\r\n controller: 'FileMetadataModalInstanceCtrl',\r\n size: 'lg',\r\n resolve: {\r\n retValue: function () {\r\n return {file_id:fileId};\r\n }\r\n }\r\n });\r\n \r\n modalInstance.result.then(function (retValue,windex,index) {\r\n \r\n \r\n }, function () {\r\n \r\n });\r\n \r\n \r\n };\r\n \r\n\r\n\r\n $scope.fd.localVars.showProperties=function(datasetMapperType)\r\n {\r\n \r\n if ($scope.fd.localVars.datasetMapperType==undefined)\r\n {\r\n $scope.fd.localVars.datasetMapperType = datasetMapperType;\r\n }else\r\n {\r\n if ($scope.fd.localVars.datasetMapperType==0 || $scope.fd.localVars.datasetMapperType!=datasetMapperType) $scope.fd.localVars.datasetMapperType = datasetMapperType;\r\n else $scope.fd.localVars.datasetMapperType=0;\r\n }\r\n \r\n };\r\n\r\n \r\n let valueState= $scope.ksm.addSubject($scope.resourceDefinition.page_state_id+\"-\"+$scope.fd.ElementType+\"ValueStateName-\"+$scope.fd.PresentationId,$scope.fd.localVars.widgetState);\r\n let valueStateName = valueState.subject.name;\r\n \r\n\r\n //*********************** get state if exists********************************************\r\n //***************************************************************************************\r\n if (valueState.subject.currentStateIndex>=0 && !$scope.fd.AutoSearch)\r\n {\r\n $scope.fd.localVars.loadFromState=true;\r\n $scope.fd.localVars.widgetState = valueState.subject.getState;\r\n $scope.fd.localVars.dashboard.widgets.layout=$scope.fd.localVars.widgetState.widgets;\r\n $scope.fd.localVars.searchFormDownloaded = true;\r\n $scope.fd.localVars.formLoaded=true;\r\n }else\r\n \r\n {\r\n $scope.fd.localVars.widgetState.formData=[{}]; \r\n }\r\n\r\n /*\r\n $scope.fd.localVars.okFileConnector = function () {\r\n $timeout(function() {\r\n $scope.fd.tItemValue=$scope.fd.listOfConnectors;\r\n $scope.fd.localVars.showProperties(0);\r\n \r\n });\r\n };\r\n \r\n $scope.fd.localVars.cancelFileConnector = function () {\r\n $timeout(function() {\r\n //Can't copy! Making copies of Window or Scope instances is not supported\r\n $scope.fd.listOfConnectors=angular.copy($scope.fd.tItemValue);\r\n //$scope.fd.listOfConnectors=$scope.fd.tItemValue;\r\n $scope.fd.localVars.showProperties(0);\r\n \r\n });\r\n };\r\n */\r\n // kt taskfiles - FILECONNECTOR - ista funkcija kao i za uploader!\r\n /*\r\n\t\t $scope.fd.localVars.openFileConnector = function(){\r\n $scope.fd.localVars.showProperties(1);\r\n \r\n if ($scope.fd.localVars.datasetMapperType==1) {\r\n\t\t\t\t//POPUNI LISTU DATASETOVA \r\n var lang = $rootScope.globals.currentUser.lang; \r\n ResourcesDataService.getResourceDefListByType(lang,'dataset').then(\r\n function(data) {\r\n $scope.fd.datasetList = data.data;\r\n //dodaj ime dataseta u konektore\r\n if ($scope.fd.listOfConnectors!=undefined) \r\n for (var i=0;i< $scope.fd.listOfConnectors.length;i++) {\r\n var p = $scope.fd.datasetList.map(function(e) { return e.id; }).indexOf($scope.fd.listOfConnectors[i].parentDatasetDefId);\r\n if (p>=0) $scope.fd.listOfConnectors[i].parentDatasetName = $scope.fd.datasetList[p].name; \r\n }\r\n },function(error){ MessagingService.addMessage(error.msg,'error');\r\n });\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n if ($scope.fd.tItemValue==undefined || $scope.fd.tItemValue[0]==null) $scope.fd.tItemValue = []; \r\n\t\t\t\t\t\t \r\n //ovo je kt-taskFiles\r\n $scope.fd.listOfConnectors= WidgetDataExchangeService.getRegisteredWidgets();//MIGOR - uzmi sve registrirane widgete\r\n \r\n //Brisi sve koji se vec nalaze u tItemValue\r\n\t\t\t\t\t\tif ($scope.fd.listOfConnectors!=undefined) \r\n\t\t\t\t\t\t\t\t for (var i=0;i< $scope.fd.tItemValue.length ;i++) {\r\n\t\t\t\t\t\t\t\t\t\t for (var j=0;j< $scope.fd.listOfConnectors.length;j++) {\r\n if ($scope.fd.tItemValue[i]!=null) {\r\n if ($scope.fd.listOfConnectors[j].widgetId==$scope.fd.tItemValue[i].widgetId) {\r\n $scope.fd.listOfConnectors.splice(j,1);//brisi lokalni\t\t\t\t \t\t\t\t\t \t\t\r\n }\r\n }\r\n }\r\n\t\t\t\t\t\t\t }\r\n //dodaj sa servera\r\n for (var i=0;i< $scope.fd.tItemValue.length ;i++) \r\n if ($scope.fd.tItemValue[i]!=null) \r\n $scope.fd.listOfConnectors.push($scope.fd.tItemValue[i]);\t\r\n \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t //Ostavi u listi konektora samo WIDGETE koji imaju \"ResourceID\" jer su to data widgeti\r\n\t\t\t\t\t\t\t var newlist=[];\r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\tif ($scope.fd.listOfConnectors!=undefined){\r\n\t\t\t\t\t\t\t\t\tfor (var i=0;i< $scope.fd.listOfConnectors.length;i++) {\r\n if ($scope.fd.listOfConnectors[i].DEI!=undefined) \r\n for (var j=0;j< $scope.fd.listOfConnectors[i].DEI.length;j++) {\r\n if ($scope.fd.listOfConnectors[i].DEI[j].name=='resourceLink' || $scope.fd.listOfConnectors[i].DEI[j].name=='resourceLinkDatasetList') {\r\n //ako DEI nije true/false - resetiraj na false\r\n if ( ($scope.fd.listOfConnectors[i].DEI[j].value!=false) && ($scope.fd.listOfConnectors[i].DEI[j].value!=true) ) $scope.fd.listOfConnectors[i].DEI[j].value=false;\r\n //dodaj konektor u novu listu \r\n newlist.push($scope.fd.listOfConnectors[i]);\r\n };\t\t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\t \t\t\t\t\t \r\n }\r\n }\r\n\t\t\t\t\t\t\t\t\t}//if\r\n\t\t\t\t\t\t\t $scope.fd.listOfConnectors=newlist; //konacna lista NOVIH dataset konektora (NE ukljucuje one u tItemValue koja se salje posebno)\r\n \r\n\t\t\t\t\t\t\r\n }//if\r\n\t\t\t}; // open FIleConnector - ktTaskFiles \r\n */\r\n \r\n $scope.fd.fileListDownloaded = false;\r\n $scope.fd.isCollapsedFilesList = true;\r\n $scope.fd.localVars.hidePopulateMethod=true;\r\n\r\n $scope.fd.localVars.resourceType=\"file\";\r\n \r\n \r\n $scope.taskId=$scope.resourceDefinition.ResourceDefId;\r\n\r\n if ($scope.taskId==undefined) $scope.taskId=$scope.resourceDefinition.ResourceDefId_id;\r\n if ($scope.taskId==undefined) $scope.taskId=0;\r\n \r\n\r\n $scope.fd.localVars.setSelectedResource = function(id,saved) {\r\n\r\n if ($scope.fd.localVars.selectedResourceItem==undefined) $scope.fd.localVars.selectedResourceItem={};\r\n $scope.fd.localVars.getPublishedResourceById(id,saved);\r\n\r\n }\r\n \r\n $scope.fd.localVars.getPublishedResourceById = function(id,saved) \r\n \r\n {\r\n \r\n let pos\r\n let old_publish_id = $scope.fd.Parameters.PublishedResourceId\r\n \r\n \r\n if (saved && $scope.fd.FormDef!==undefined && $scope.fd.FormDef!==null && $scope.fd.FormDef.length>0)\r\n { \r\n pos = $scope.fd.localVars.publishedResourceList.map(function(e) { return e.id; }).indexOf(id);\r\n \r\n if (pos>=0){\r\n $scope.fd.localVars.selectedResourceItem = $scope.fd.localVars.publishedResourceList[pos];\r\n $scope.fd.localVars.selectedResource = $scope.fd.localVars.publishedResourceList[pos];\r\n\r\n $scope.fd.localVars.selectedResourceItem.name_confirmed = $scope.fd.localVars.selectedResourceItem.name +' ('+$scope.fd.localVars.selectedResourceItem.id +')'\r\n }\r\n \r\n $scope.fd.localVars.dashboard.widgets.layout = $scope.fd.FormDef\r\n \r\n if ($scope.resourceDefinition.form_definition) $scope.fd.fileListDownloaded =true\r\n $scope.fd.localVars.formLoaded=true;\r\n\r\n }else{\r\n pos = $scope.fd.localVars.publishedResourceList.map(function(e) { return e.id; }).indexOf(id);\r\n if (pos>=0){\r\n ResourcesDataService.GetPublishedResourceById(id).then(function (data) {\r\n\r\n $scope.fd.localVars.selectedResourceItem = $scope.fd.localVars.publishedResourceList[pos];\r\n $scope.fd.localVars.selectedResourceItem.Form = data.data.Form\r\n $scope.fd.localVars.selectedResource = $scope.fd.localVars.publishedResourceList[pos];\r\n \r\n $scope.fd.localVars.selectedResourceItem.name_confirmed = $scope.fd.localVars.selectedResourceItem.name +' ('+$scope.fd.localVars.selectedResourceItem.id +')'\r\n if ($scope.fd.localVars.selectedResourceItem!==undefined)\r\n {\r\n $scope.fd.Parameters.PublishedResourceId=$scope.fd.localVars.selectedResourceItem.id;\r\n $scope.fd.Parameters.PublishedResourceVersion=$scope.fd.localVars.selectedResourceItem.Version;\r\n $scope.fd.Related=$scope.fd.localVars.selectedResourceItem.ResourceDefId; \r\n $scope.fd.localVars.dashboard.widgets.layout = $scope.fd.localVars.selectedResourceItem.Form\r\n $scope.fd.FormDef = $scope.fd.localVars.selectedResourceItem.Form\r\n $scope.fd.localVars.freshForm=angular.copy($scope.fd.localVars.selectedResourceItem.Form)\r\n }\r\n\r\n if ($scope.fd.GridState?.columnsDef===undefined || old_publish_id!=id) $scope.fd.localVars.getColumnsDef()\r\n else $scope.fd.fileListDownloaded =true\r\n $scope.fd.localVars.formLoaded=true;\r\n\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n\r\n }\r\n } \r\n} \r\n\r\n \r\n \r\n var out_fields = ['resourceId'];\r\n var widgetDefinition = { DEI: [{'name':'resourceLinkR','value':[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:''}]}],actions: [{name:'PrepareData',status:false}],name: 'ktTaskFiles',widgetId: $scope.fd.PresentationId,taskId: $scope.lTaskId,resourceDefId : $scope.selectedResource, output:out_fields, };\r\n $scope.fd.localVars.localWidgetId = WidgetDataExchangeService.registerWidget(widgetDefinition);\r\n $scope.fd.localVars.LocalId=$scope.fd.localVars.localWidgetId;\r\n \r\n $scope.fd.LocalId=$scope.fd.localVars.localWidgetId;\r\n \r\n $scope.ksm = KatalyoStateManager;\r\n \r\n $scope.fd.localVars.formType=$scope.resourceDefinition.form_type;\r\n \r\n \r\n ResourcesDataService.GetPublishedResourcesByType('file','form').then(function (data) { \r\n $scope.fd.localVars.publishedResourceList = data.data;\r\n //debugger //GetPublishedResourcesByType \r\n //$scope.fd.localVars.dashboard.widgets.layout = JSON.parse(data.data[0].Form)\r\n \r\n if ($scope.fd.Parameters.PublishedResourceId!=null) $scope.fd.localVars.setSelectedResource($scope.fd.Parameters.PublishedResourceId,true);\r\n else {\r\n\r\n $scope.fd.localVars.formLoaded=true;\r\n $scope.fd.localVars.NoPublishedResourceMsg=\"Definition error --> Published dataset not defined!\"\r\n }\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n\r\n\r\n\r\n\t $scope.fd.downloadFile = function(fileId,fileName){\r\n ResourcesDataService.downloadFile($scope.fd.Related,fileId).then(function(data) {\r\n \r\n MessagingService.addMessage('File '+fileName+' downloaded','info');\r\n var url = URL.createObjectURL(new Blob([data.data]));\r\n var a = document.createElement('a');\r\n a.href = url;\r\n a.download = fileName;\r\n a.target = '_blank';\r\n a.click();\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n \r\n });\r\n };// dowload file END\r\n \r\n \r\n $scope.fd.previewFile = function(fileId,fileName,fileType){\r\n \r\n ResourcesDataService.downloadFile($scope.fd.Related,fileId).then(function(data) {\r\n \r\n var url = URL.createObjectURL(new Blob([data.data],{type:fileType}));\r\n let new_doc = window.open(url,\"_blank\");\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n \r\n });\r\n };// preview file END\r\n \r\n //kt TASK FILES\r\n \r\n $scope.fd.localVars.filesData = {data:[]};\r\n \r\n $scope.fd.localVars.fileSelectionChanged = function (item) {\r\n $scope.fd.fileSelected=item.isSelected;\r\n $scope.fd.SelectedFile = item;\r\n \r\n }\r\n\r\n \r\n $scope.fd.localVars.getFiles= function(tableState, pageNumber,pageSize){\r\n\r\n\r\n //taskExecuteId: 0 taskInitiateId: 0\r\n let deferred = $q.defer(); \r\n $scope.resourceLoading=true;\r\n var lang=$rootScope.globals.currentUser.lang;\r\n var newPage\r\n \r\n \r\n if (pageNumber==undefined) pageNumber = $scope.fd.localVars.paginationOptions.pageNumber;\r\n if (pageSize==undefined) pageSize = $scope.fd.localVars.paginationOptions.pageSize;\r\n \r\n if ($scope.fd.localVars.filesData!==undefined) {\r\n $scope.fd.localVars.totalCount= $scope.fd.localVars.filesData.data?.length\r\n $scope.fd.localVars.paginationOptions.totalItemCount=$scope.fd.localVars.filesData.data?.length\r\n $scope.fd.localVars.paginationOptions.numberOfPages = Math.ceil($scope.fd.localVars.paginationOptions.totalItemCount/pageSize);\r\n }\r\n\r\n if ($scope.fd.localVars.totalCount>0){\r\n if (Math.ceil($scope.fd.localVars.totalCount/pageSize)0 && $scope.fd.localVars.widgetState.currentPage==0) $scope.fd.localVars.widgetState.currentPage=1;\r\n $scope.fd.localVars.numPages = Math.ceil($scope.fd.localVars.totalCount/$scope.fd.localVars.widgetState.pageSize);\r\n \r\n $scope.fd.localVars.filesData.totalItems=$scope.fd.localVars.totalCount;\r\n \r\n WidgetDataExchangeService.setData({\r\n DEI: [{name:'resourceLinkTaskFiles',value:[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:$scope.fd.localVars.widgetState.selectedDatasetRecordId}\r\n ,{name:'resourceRecordIds',value: null},{name:'resourceRecordsAll',value:$scope.fd.localVars.filesData.data}]}],widgetId: $scope.fd.PresentationId,task_execute_id:$scope.taskExecuteId});\r\n \r\n $scope.fd.localVars.loadFromState = false;\r\n })\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.fd.fileListDownloaded = true;\r\n $scope.fd.localVars.resourceDataDownloading = false\r\n });\r\n }else{\r\n MessagingService.addMessage($scope.fd.ErrorMsg,'warning');\r\n $timeout(function(){ $scope.fd.fileListDownloaded = true;$scope.fd.localVars.resourceDataDownloading = false});\r\n }\r\n\r\n };\r\n \r\n\r\n\r\n $scope.fd.localVars.pageChanged = function(){\r\n \r\n $scope.ksm.executeAction(valueStateName,\"valueChanged\", $scope.fd.localVars.widgetState);\r\n $scope.fd.localVars.GetFilesFilter($scope.fd.localVars.nextPage,$scope.fd.localVars.previousPage,$scope.fd.localVars.widgetState.currentPage,$scope.fd.localVars.widgetState.pageSize);\r\n };\r\n\r\n //**********************************************************\r\n // GET DATASET DIRECT FILTER\r\n //********************************************************** \r\n $scope.fd.localVars.getDatasetDirect = function (item) {\r\n let lang = $rootScope.globals.currentUser.lang; \r\n let children = [item[$scope.fd.Parameters.ParentDatasetFieldName]]\r\n $scope.fd.fileListDownloaded = false\r\n ResourcesDataService.getResourceDataDirectFilter($scope.fd.Related,$scope.fd.PresentationId,\"i\",lang,{id__in: children}).then(function(data) {\r\n \r\n $scope.fd.localVars.filesData.data = data.data\r\n //$scope.fd.localVars.gridOptionsResourceData.columnDefs = data.columnsDef\r\n $scope.fd.localVars.restoreGridState()\r\n $scope.fd.fileListDownloaded = true\r\n $scope.fd.localVars.InitialLoad = false\r\n // MessagingService.addMessage(data.msg,'success');\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n };\r\n\r\n /* Get children for parent*/\r\n $scope.fd.localVars.GetResourceDataForParent = function () \r\n {\r\n var lang = $rootScope.globals.currentUser.lang;\r\n if ($scope.fd.localVars.ParentRecordId>0)\r\n {\r\n $scope.fd.fileListDownloaded = false\r\n ResourcesDataService.getResourceDataM2m($scope.fd.PresentationId,$scope.fd.ParentDatasetDefId,$scope.fd.Related,$scope.fd.localVars.ParentRecordId,$scope.taskId,0,lang).then(function(data) {\r\n $scope.fd.localVars.filesData.data = data.data\r\n //$scope.fd.localVars.gridOptionsResourceData.columnDefs = data.columnsDef\r\n $scope.fd.localVars.restoreGridState()\r\n $scope.fd.fileListDownloaded = true\r\n $scope.fd.localVars.InitialLoad = false\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n } \r\n }\r\n\r\n $scope.fd.localVars.restoreGridState= function() {\r\n //debugger\r\n if ($scope.fd['GridState']!==undefined && $scope.fd['GridState']!==null)\r\n {\r\n \r\n if ($scope.fd['GridState']['columnsDef']!==undefined) $scope.fd.localVars.filesColumns = $scope.fd['GridState']['columnsDef']\r\n if ($scope.fd['GridState']['columnsQuery']!==undefined) $scope.fd.localVars.columnsForQuery = $scope.fd['GridState']['columnsQuery']\r\n\r\n }\r\n };\r\n $scope.fd.localVars.saveGridState= function(showMsg) {\r\n //debugger //ktTaskDatasetList smarttable\r\n let columnsDef = $scope.fd.localVars.filesColumns\r\n\r\n let columnsQuery = $scope.fd.localVars.columnsForQuery\r\n $scope.fd['GridState']={'columnsDef':columnsDef,'columnsQuery': columnsQuery}\r\n\r\n if (showMsg) MessagingService.addMessage(\"To make changes stick please save form\",'info'); \r\n };\r\n\r\n $scope.fd.localVars.getColumnsDef = function () {\r\n\r\n let lang = $rootScope.globals.currentUser.lang;\r\n ResourcesDataService.getResourceColumns($scope.fd.Parameters.PublishedResourceId,'file',lang,$scope.fd.Parameters.PublishedResourceVersion).then(function(data) {//MIGOR\r\n \r\n $scope.fd.localVars.filesColumns = data.data.columnsDef;\r\n //$scope.fd.localVars.columnsDownloaded = true;\r\n $scope.fd.fileListDownloaded = true\r\n $scope.fd.localVars.InitialLoad = false\r\n $scope.fd.localVars.saveGridState()\r\n \r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n\r\n }\r\n\r\n //ktTaskFiles - ProcessEvent\r\n $scope.fd.ProcessEvent=function(data)\r\n {\r\n for (var i=0;i0) {\r\n \r\n $scope.taskDefinition = data[0];\r\n $scope.taskDefinition.form_type=$scope.formType;\r\n $scope.taskDefinition.form_definition=true;\r\n\r\n $scope.getResourceForm();\r\n\r\n if (!$scope.taskDefinition.InfiniteTask)\r\n {\r\n //get Task Outcomes \r\n if ($scope.taskDefinition.TaskOutcomeHeadId == null || $scope.taskDefinition.TaskOutcomeHeadId==undefined)\r\n {\r\n $scope.taskDefinition.TaskOutcomeHeadId=0; //vidjeti da li ovo treba MIGOR\r\n }\r\n \r\n \r\n //TaskDataService.GetTaskCodesActionsById($scope.resourceId,lang,$scope.taskDefinition.TaskOutcomeHeadId).then(function(data) {\r\n if ($scope.form_type===\"e\")\r\n {\r\n TaskDataService.GetTaskOutcomes($scope.resourceId,$scope.taskDefinition.TaskOutcomeHeadId,lang).then(function(data) { \r\n $scope.outcomes.outcomeCodesDetails = data.data;\r\n $scope.taskDefinition = {outcomes:{outcomeCodesDetails:data.data}};\r\n //prikazi defaultno detalje od prvog\r\n // if ($scope.outcomes.outcomeCodesDetails.length>0) $scope.clickedOutcome = $scope.outcomes.outcomeCodesDetails[0];\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n }\r\n \r\n \r\n } \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n \r\n };\r\n */ \r\n \r\n\r\n $scope.formFromServerLoaded = {};\r\n \r\n $scope.localVars.getResourceForm = function (afterSave,afterSaveMsg) {\r\n if (!$scope.formFromServerLoaded[$scope.formType])\r\n {\r\n ResourcesDataService.getResourceForm($scope.resourceId,$scope.formType,lang).then(function(data) {\r\n \r\n var resourceFormData = data.data\r\n $scope.resourceDefinition = resourceFormData.resourceDefinition\r\n ResourcesDataService.GetWidgetToolbox($scope.resourceDefinition.ResourceCode).then(\r\n \r\n function (widgetData) {\r\n \r\n if ($scope.gsrvc.taskToolboxItems==undefined || $scope.gsrvc.taskToolboxItems.length==0) $scope.gsrvc.setTaskToolboxItems(widgetData.data);\r\n \r\n \r\n if (resourceFormData.widgets.length>0) {\r\n $scope.dashboard[$scope.formType]={widgets:{layout:resourceFormData.widgets}}\r\n }else {\r\n $scope.dashboard[$scope.formType] = {widgets:{layout:$scope.resourceDefinition.ResourceExtended.DefaultForm}}\r\n }\r\n \r\n $scope.formVersion [$scope.formType] = $scope.resourceDefinition.FormVersion;\r\n \r\n //$scope.gsrvc.setTaskFormVersion($scope.resourceDefinition.id+$scope.formType,$scope.formVersion[$scope.formType]); \r\n $scope.gsrvc.setTaskFormVersion($scope.resourceDefinition.id + $scope.formType,{Version:$scope.resourceDefinition.Version,Published:$scope.resourceDefinition.Published,NewVersion:$scope.resourceDefinition.NewVersion}); \r\n \r\n $scope.resourceDefinition.formParams={formViewType:1,showGridNavigation:false};\r\n if ($scope.gsrvc.formLocked == true) $scope.resourceDefinition.formParams.formViewType = 2;\r\n \r\n \r\n $scope.formLoaded=true;\r\n $scope.formFromServerLoaded[$scope.formType] = true;\r\n $scope.ShowFormView($scope.resourceDefinition.formParams.formViewType,false);\r\n //debugger; //getResourceForm migor\r\n \r\n \r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n }); \r\n \r\n \r\n \r\n\r\n \r\n \r\n if (afterSave)\r\n {\r\n MessagingService.addMessage(afterSaveMsg,'success');\r\n \r\n }\r\n },function(error){\r\n \r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n \r\n });\r\n }\r\n };\r\n \r\n\r\n $scope.newVersion = function()\r\n {\r\n $scope.creatingNewVersion=true\r\n ResourcesDataService.SetNewResourceVersion($scope.resourceId)\r\n .then(function(data) {\r\n if (data.status==200)\r\n {\r\n \r\n $scope.resourceDefinition.NewVersion = data.data\r\n $scope.resourceDefinition.Published=false\r\n $scope.formVersion [$scope.formType] = {NewVersion:data.data,Published:false}\r\n $scope.gsrvc.setTaskFormVersion($scope.resourceDefinition.id+$scope.formType,$scope.formVersion[$scope.formType]);\r\n }else MessagingService.addMessage(data.data,'error');\r\n $scope.creatingNewVersion=false\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.creatingNewVersion=false\r\n \r\n });\r\n\r\n };\r\n \r\n $scope.get_published_resource_forms=function(){ \r\n ResourcesDataService.GetPublishedResources($scope.resourceId).then(function (data) { \r\n $scope.publishedResources = data.data;\r\n });\r\n }\r\n $scope.get_published_resource_forms(); \r\n //**********************************************************\r\n // SAVE TASK FORM DEFINITION\r\n //**********************************************************\r\n $scope.showSaveModal = function (p_type) {\r\n //POST publish-resource , resource_id, version i description\r\n //$scope.saveModal=true;\r\n $('#taskPublish').modal('show'); \r\n $scope.saveOrPublish='save'\r\n $scope.newPublishVersion = $scope.gsrvc.resourceFormVersion[$scope.resourceDefinition.id+$scope.formType].NewVersion\r\n\r\n \r\n }\r\n $scope.saveTaskForm = function (form) {\r\n\r\n if (form.$valid)\r\n {\r\n $scope.activity.activityMessage = ProcessingService.setActivityMsg('Saving task form for '+$scope.resourceId);\r\n $scope.savingTaskForm = true;\r\n $('#taskPublish').modal('hide') \r\n ResourcesDataService.saveResourceForm($scope.dashboard[$scope.formType].widgets.layout,$scope.resourceId,$scope.formType,$scope.localVars.newDescription).then(function(data) {\r\n \r\n MessagingService.addMessage(data.msg,data.msgType);\r\n $scope.formVersion [$scope.formType] = {Version:data.version,Published:true}\r\n $scope.resourceDefinition.FormVersion={Version:data.version}\r\n $scope.gsrvc.setTaskFormVersion($scope.resourceDefinition.id+$scope.formType,$scope.formVersion[$scope.formType]); \r\n $scope.ksm.executeAction(formDefinitionStateName,\"formSaved\",data.new_items);\r\n $scope.savingTaskForm = false;\r\n let rememberTaskFormFn = $scope.tds.showTaskFormFn()\r\n \r\n if (data.data.formData.length>0) {\r\n $scope.dashboard[$scope.formType]={widgets:{layout:data.data.formData}}\r\n $scope.tds.showHideTaskForm('')\r\n $timeout(function(){ \r\n $scope.tds.showHideTaskForm(rememberTaskFormFn)\r\n })\r\n \r\n } \r\n \r\n $scope.formLoaded=true;\r\n $scope.formFromServerLoaded[$scope.formType] = true;\r\n $scope.get_published_resource_forms()\r\n // $timeout(function(){ \r\n \r\n // })\r\n // $scope.ShowFormView($scope.resourceDefinition.formParams.formViewType,false);\r\n \r\n \r\n },function(error){\r\n \r\n $scope.savingTaskForm = false;\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n } \r\n };\r\n\r\n \r\n //**********************************************************\r\n // SAVE TASK BUTTONS\r\n //********************************************************** \r\n $scope.saveTaskBtns = function () {\r\n \r\n \r\n //$scope.activity.activityMessage = ProcessingService.setActivityMsg('Saving task btns for '+$scope.resourceId);\r\n \r\n TaskDataService.SaveTaskBtns($scope.resourceDefinition.initTaskBtnDef,$scope.resourceId,lang).then(function(data) {\r\n \r\n \r\n MessagingService.addMessage(data.msg,'success');\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n \r\n \r\n \r\n };\r\n \r\n\r\n \r\n \r\n $scope.$on('CtrlPBPressed',function(event,data){\r\n \r\n var key=data;\r\n if (key=='b' || key=='B')\r\n {\r\n if ($scope.resourceDefinition.formParams.formViewType!=1) $scope.ShowFormView(1);\r\n \r\n }\r\n if (key=='p' || key=='P')\r\n {\r\n if ($scope.resourceDefinition.formParams.formViewType!=2) $scope.ShowFormView(2);\r\n }\r\n \r\n }); \r\n \r\n //**********************************************************\r\n // CALL FUNCTIONS FOR FETCHING TASK FORM, PARAMETERS, OUTCOMES\r\n //**********************************************************\r\n \r\n $scope.$watch('tds.showTaskFormFn()',function(newValue,oldValue){\r\n \r\n $scope.formType = newValue;\r\n //$scope.ksm.executeAction(\"taskToolBox\",\"toolboxLoaded\",{widget_id:null,state:false});\r\n \r\n if ($scope.resourceId != undefined)\r\n {\r\n $timeout(function() {\r\n $scope.localVars.getTaskParameters()\r\n })\r\n \r\n \r\n }\r\n \r\n \r\n \r\n });\r\n \r\n \r\n \r\n },\r\n link: function (scope, elem, attrs) {\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n }\r\n};\n'use strict';\n\nexport function ktTaskformlayout () {\n return {\n restrict: 'A',\n \n\t\t\tcontroller: function ($scope,dragulaService,$rootScope,WidgetDataExchangeService,GridsterService,$compile,$element,$templateCache) {\n \n $scope.CTRL=\"ktTaskformlayout\"\n\t\t\t\t$scope.removeField = function (index){\n\t\t\t\t\t\t// console.log(\"REMOVE FIELD \"+index);\n\t\t\t\t\t\tif (index > -1) {\n \n WidgetDataExchangeService.deRegisterWidget($scope.inputArray.layout[index].LocalId);\n if ($scope.inputArray.layout[index].Saved==true && $scope.inputArray.layout[index].PresentationId!=null && $scope.inputArray.layout[index].PresentationId!=undefined) {\n\t\t\t\t\t\t\t\t\n $scope.inputArray.layout[index].Status=\"Deleted\";\n\t\t\t\t\t\t\t }else\n {\n $scope.inputArray.layout.splice(index,1);\n \n }\n \n\t\t\t\t\t\t}\n\n\t\t\t\t};\n \n \n let template;\n if ($scope.resourceDefinition.form_definition) template = $templateCache.get('ktdirectivetemplates/ktTaskFormLayout.html');\n else template = $templateCache.get('ktdirectivetemplates/ktTaskFormLayoutExe.html');\n \n $element.append($compile(template)($scope));\n\n\t\t\t},\n\t\t\t link: function (scope, elem, attrs) {\n\n if (scope.inputArray.layout==undefined || scope.inputArray.layout==null) scope.inputArray.layout = [];\n \n }\n };\n};\n'use strict';\n\nexport function ktTaskForPage () {\n var controller = ['$scope', '$stateParams','$state','$rootScope','GridsterService','WidgetDataExchangeService','ResourcesDataService','KatalyoStateManager','$templateCache','$compile','$element','TaskDefinitionService',\n function ($scope,$stateParams,$state,$rootScope,GridsterService,WidgetDataExchangeService,ResourcesDataService,KatalyoStateManager,$templateCache,$compile,$element,TaskDefinitionService) {\n\n $scope.CTRL=\"ktTaskForPage\"\n let lang = $rootScope.globals.currentUser.lang\n if ($scope.fd==undefined) $scope.fd={};\n if ($scope.fd.localVars==undefined) $scope.fd.localVars={}; \n if ($scope.resourceDefinition==undefined) $scope.resourceDefinition={}; \n if ($scope.fd.localVars.previousTask==undefined) $scope.fd.localVars.previousTask = 0;\n if ($scope.fd.localVars.outcomeId==undefined) $scope.fd.localVars.outcomeId = 0;\n $scope.fd.localVars.loadTaskDirect = true;\n $scope.fd.localVars.taskDefinition = {};\n $scope.fd.localVars.taskDefinition.page_state_id = $scope.resourceDefinition.page_state_id\n $scope.fd.localVars.taskId = $scope.fd.Parameters?.taskDefId?.id\n $scope.ksm = KatalyoStateManager\n $scope.tds = TaskDefinitionService\n $scope.gsrvc=GridsterService\n \n let widgetDefinition = {name: 'taskForPage',widgetId: $scope.fd.LocalId,taskId: $scope.resourceDefinition.id };\n $scope.fd.LocalId=WidgetDataExchangeService.registerWidget(widgetDefinition);\n \n let dependent_field_pid = $scope.fd.LocalId;\n let subscribedSubjectPid = \"formDefinitionState\"+$scope.taskId+$scope.resourceDefinition.form_type;\n let dependent_field_pid2\n \n let update_presentation_id2 = function(data) {\n let presentation_id = angular.copy($scope.fd.PresentationId)\n if (data[presentation_id]!==undefined) {\n $scope.fd.PresentationId = data[presentation_id];\n //unsubscribe here later after implementing unsubscribe - ToDo\n dependent_field_pid2 = $scope.fd.PresentationId\n let observerPid2 = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid2,\"formSaved\",update_presentation_id2);\n }\n }\n \n let update_presentation_id = function(data) {\n if (data[$scope.fd.LocalId]>0 && $scope.fd.PresentationId==0 && data[$scope.fd.LocalId]!==undefined) $scope.fd.PresentationId = data[$scope.fd.LocalId];\n let observerPid2 = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid2,\"formSaved\",update_presentation_id2);\n //unsubscribe here later after implementing unsubscribe - ToDo\n }\n \n \n\n $scope.fd.localVars.toggleDropdown = function(){\n $scope.fd.localVars.showMenu = $scope.fd.localVars.showMenu ? false: true \n }\n\n $scope.fd.localVars.showProperties=function(datasetMapperType,showPropertiesRight) {\n \n if ($scope.fd.localVars.datasetMapperType==undefined) {\n $scope.fd.localVars.datasetMapperType = datasetMapperType;\n }else {\n if ($scope.fd.localVars.datasetMapperType==0 || $scope.fd.localVars.datasetMapperType!=datasetMapperType) \n $scope.fd.localVars.datasetMapperType = datasetMapperType;\n else \n $scope.fd.localVars.datasetMapperType=0;\n }\n if (showPropertiesRight) $scope.gsrvc.setFieldProperties($scope.fd); \n } \n\n\n // ************** EXECUTE ON INIT ****************\n \n if ($scope.fd.PresentationId===null || $scope.fd.PresentationId===0) {\n let observerPid = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid,\"formSaved\",update_presentation_id);\n } else {\n dependent_field_pid2 = $scope.fd.PresentationId\n let observerPid2 = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid2,\"formSaved\",update_presentation_id2);\n }\n\n \n \n let template;\n template = $templateCache.get('ktdirectivetemplates/ktTaskForPage.html');\n \n \n $element.append($compile(template)($scope));\n\n }];\n \n \n return {\n restrict: 'A',\n controller:controller,\n link: function (scope, elem, attrs) {\n \n\n }\n } \n};\n'use strict';\n\nexport function ktTaskIntegrationWidget () {\n \n var controller = ['$scope', '$uibModal', '$stateParams','$state','$timeout','CodesService','ResourcesDataService','$rootScope','CODES_CONST','ProcessingService','MessagingService','GridsterService','TaskDataService','WidgetDataExchangeService','KatalyoStateManager','UtilityService','$templateCache','$compile','$element',\n function ($scope,$uibModal,$stateParams,$state,$timeout,CodesService,ResourcesDataService,$rootScope,CODES_CONST,ProcessingService,MessagingService,GridsterService,TaskDataService,WidgetDataExchangeService,KatalyoStateManager,UtilityService,$templateCache,$compile,$element) {\n \n $scope.gsrvc = GridsterService;\n var lang=$rootScope.globals.currentUser.lang;\n $scope.localVars.widgetType = 5;\n $scope.fd.PopulateType = \"4\";\n $scope.localVars.formParams={formViewType:1,showGridNavigation:true};\n if ($scope.formData==undefined) $scope.formData={};\n if ($scope.formData[$scope.fd.PresentationId]==undefined) $scope.formData[$scope.fd.PresentationId]=[{}];\n \n $scope.localVars.datasetMapperType=0;\n \n $scope.localVars.gridsterType=\"resource\";\n // $scope.gridsterOpts = GridsterService.getGridsterOptions();\n \n \n \n $scope.localVars.dashboard = {\n \t\t\t\tid: '1',\n \t\t\t\tname: 'Home',\n \t\t\t\twidgets: []\n } ;\n \n if ($scope.localVars == undefined) $scope.localVars={};\n \n $scope.localVars.showMenu = false\n \n $scope.localVars.toggleDropdown = function(){\n $scope.localVars.showMenu = $scope.localVars.showMenu ? false: true \n }\n \n \n \n //$scope.taskId=$stateParams.id;\n $scope.taskId=$scope.resourceDefinition.ResourceDefId;\n if ($scope.taskId==undefined) $scope.taskId=$scope.resourceDefinition.ResourceDefId_id;\n if ($scope.taskId==undefined) $scope.taskId=0;\n $scope.localVars.taskId=$scope.taskId;\n $scope.fd.ParentDatasetDefId=$scope.fd.Related;\n $scope.prevTaskExeId = $scope.resourceDefinition.prev_task_id;\n $scope.localVars.formType=$scope.resourceDefinition.form_type;\n $scope.source_type=$scope.resourceDefinition.source_type;\n $scope.taskInitiateId = $scope.resourceDefinition.task_initiate_id;\n $scope.taskExecuteId = $scope.resourceDefinition.task_execute_id;\n $scope.formDefinition = $scope.resourceDefinition.form_definition;\n \n if ($scope.formDefinition==undefined) $scope.formDefinition=false;\n \n $scope.localVars.resourceRecordId=0;\n if ($scope.taskInitiateId==undefined)\n {\n $scope.taskInitiateId =0;\n \n }\n if ($scope.taskExecuteId==undefined)\n {\n $scope.taskExecuteId =0; \n }\n if ($scope.prevTaskExeId==undefined)\n {\n $scope.prevTaskExeId =0;\n }\n \n //register widget \n var out_fields = ['resourceId'];\n //if ($scope.fd.LocalId==undefined || $scope.fd.LocalId==null || $scope.fd.LocalId==0)\n //{\n var widgetDefinition = {DEI: [{'name':'resourceLink','value':[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:''}]}],actions: [{name:'PrepareData',status:false}],name: 'viewResourceWidget',widgetId: $scope.fd.PresentationId,task_initiate_id:$scope.taskInitiateId,task_execute_id:$scope.taskExecuteId,taskId: $scope.lTaskId,resourceDefId : $scope.localVars.selectedResource, output:out_fields, };\n $scope.localVars.localWidgetId = WidgetDataExchangeService.registerWidget(widgetDefinition);\n $scope.localVars.LocalId=$scope.localVars.localWidgetId;\n $scope.fd.LocalId=$scope.localVars.localWidgetId;\n //$scope.fd.LocalId=UtilityService.uuidNow();\n \n //}\n $scope.ksm = KatalyoStateManager;\n \n let dependent_field_pid = $scope.fd.LocalId;\n let subscribedSubjectPid = \"formDefinitionState\"+$scope.taskId+$scope.resourceDefinition.form_type;\n let dependent_field_pid2\n let update_presentation_id2 = function(data) {\n let presentation_id = angular.copy($scope.fd.PresentationId)\n if (data[presentation_id]!==undefined)\n {\n $scope.fd.PresentationId = data[presentation_id];\n //unsubscribe here later after implementing unsubscribe - ToDo\n dependent_field_pid2 = $scope.fd.PresentationId\n let observerPid2 = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid2,\"formSaved\",update_presentation_id2);\n }\n }\n let update_presentation_id = function(data) {\n if (data[$scope.fd.LocalId]>0 && $scope.fd.PresentationId==0 && data[$scope.fd.LocalId]!==undefined) $scope.fd.PresentationId = data[$scope.fd.LocalId];\n \n let observerPid2 = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid2,\"formSaved\",update_presentation_id2);\n //unsubscribe here later after implementing unsubscribe - ToDo\n }\n \n \n if ($scope.fd.PresentationId===null || $scope.fd.PresentationId===0)\n {\n let observerPid = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid,\"formSaved\",update_presentation_id);\n } else{\n dependent_field_pid2 = $scope.fd.PresentationId\n let observerPid2 = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid2,\"formSaved\",update_presentation_id2);\n }\n \n \n let apply_value = function(data)\n {\n let do_refresh=false;\n if (data!=undefined)\n {\n if (data != $scope.localVars.resourceRecordId)\n {\n if (typeof data ==='number') $scope.localVars.resourceRecordId= data;\n else if (Array.isArray(data))\n {\n if (data.length>0)\n {\n $scope.localVars.resourceRecordId= data[0].id \n }\n }else\n {\n $scope.localVars.resourceRecordId = data.id;\n }\n do_refresh = true;\n }\n }\n //get selectedRecord\n if ($scope.localVars.resourceRecordId == null) $scope.localVars.resourceRecordId=0;\n \n if ($scope.localVars.resourceRecordId>0 && do_refresh) $scope.localVars.getFormResourceWithData();\n \n \n };\n \n \n if ($scope.fd.Parameters==undefined) $scope.fd.Parameters={};\n \n if ($scope.fd.Parameters.RefreshOnIdChange)\n {\n \n //find \n //subscribe observer\n \n let dependent_field = \"Field\"+$scope.fd.PresentationId;\n let subscribedSubject = \"integrationValueStateName\"+$scope.fd.Parameters.ResourceIdItemId+$scope.resourceDefinition.transaction_id;\n let subject = $scope.ksm.addSubject(subscribedSubject,null); \n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",apply_value);\n let val = $scope.ksm.getState(subscribedSubject);\n $scope.localVars.resourceRecordId= val.id;\n \n //get selectedRecord\n if ($scope.localVars.resourceRecordId == null) $scope.localVars.resourceRecordId=0;\n \n if ($scope.localVars.resourceRecordId>0) $scope.localVars.getFormResourceWithData();\n }\n \n \n //subscribe observer\n if ($scope.fd?.PopulateType?.toString().substr(0,1)==\"4\")\n {\n /**********************************************************************\n ****************** Sync data with State manager **********************\n ***********************************************************************/\n \n \n if ($scope.fd.SrcWidgetId!=undefined && $scope.fd.SrcWidgetId!=null)\n \n {\n \n let dependent_field = \"Field\"+$scope.fd.SrcWidgetId;\n // let subscribedSubject = $scope.fd.Parameters.SrcWidgetType+\"ValueStateName\"+$scope.fd.SrcWidgetId;\n let subscribedSubject = \"integrationValueStateName\"+$scope.fd.SrcWidgetId+$scope.resourceDefinition.transaction_id;\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",apply_value);\n \n } \n \n }\n \n // MIGOR DODAO 2.6.2021- PROVJERITI -POPUNI LISTU DEFINICIJA OD RESURSA (RESOURCES LIST)\n $scope.fd.getResources = function() {\t\t\t\t\n if ($scope.localVars.resourceList==undefined) $scope.localVars.resourceList=[];\n var lang=$rootScope.globals.currentUser.lang;\n ResourcesDataService.getResourceDefListByType(lang,'integration').then(\n function(data) {\n $scope.localVars.resourceList = data.data;\n $scope.localVars.resourcesLoaded = true;\n $scope.localVars.setSelectedIntegration($scope.fd.Related);\n },function(error){ \n MessagingService.addMessage(error.msg,'error');\n });\n\t\t\t}\n \n $scope.fd.getResources();\n let refresh_widget_data = function()\n \n {\n $scope.localVars.getFormResourceWithData(); \n \n }\n \n $scope.localVars.showProperties=function(datasetMapperType)\n {\n \n if ($scope.localVars.datasetMapperType==undefined)\n {\n $scope.localVars.datasetMapperType = datasetMapperType;\n }else\n {\n if ($scope.localVars.datasetMapperType==0 || $scope.localVars.datasetMapperType!=datasetMapperType) $scope.localVars.datasetMapperType = datasetMapperType;\n else $scope.localVars.datasetMapperType=0;\n }\n \n };\n \n $scope.localVars.setField = function(form,name,value,msg)\n {\n TaskDataService.setField(form,name,value);\n if (msg) MessagingService.addMessage(msg,'info');\n }; \n \n $scope.localVars.confirmIntegration = function()\n {\n // $scope.localVars.selectedResourceItem.src_type_text = $scope.localVars.src_type_text[$scope.fd.RelatedPopulateType];\n $scope.localVars.name_confirmed = $scope.localVars.selectedResourceItem.name +' ('+$scope.localVars.selectedResourceItem.id +')'\n //$scope.fd.PopulateType=$scope.fd.RelatedPopulateType+$scope.fd.formPriority;\n \n $scope.fd.Related=$scope.localVars.selectedResourceItem.id;\n $scope.localVars.getFormResource();\n $scope.localVars.integrationConfirmed = true;\n $timeout(function(){\n $scope.localVars.integrationConfirmed = false;\n },2000);\n }; \n\n \n $scope.localVars.getFormResourceOriginal = function(){\n if ($scope.fd.PresentationId==null)\n {\n $scope.fd.PresentationId = 0;\n \n }\n let datasetId = $scope.localVars.datasetFormParams.Parameters.dataset.id;\n ResourcesDataService.getResourceForm(datasetId,\"i\",lang).then(function(data) {\n \n $scope.localVars.resourceWidgetDefinition= data.data.resourceDefinition;\n if (Array.isArray(data.data.widgets)) $scope.localVars.dashboard.widgets.layout = data.data.widgets;\n \n $scope.fd.wItemValue=data.data.widgets;\n \n \n \n //MIGOR - bitno - DOBIO RESOURCERECORD-ID ZA BROADCAST - ADD_RESOURCE WIDGET\n WidgetDataExchangeService.setData({widgetId:$scope.fd.PresentationId, DEI: [{'name':'resourceLink','value':[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:$scope.fd.ResourceRecordId}]}]});\n\t\t\t\t\t\t\n $scope.localVars.searchFormDownloaded = true;\n $scope.localVars.formLoaded=true;\n \n \n // $scope.localVars.setField($scope.localVars.dashboard.widgets.layout,'ReadOnly',true); \n $scope.localVars.setField($scope.localVars.dashboard.widgets.layout,'Required',false); \n \n },function(error){\n MessagingService.addMessage(error.msg,'error');\n \n });\n \n };\n \n $scope.localVars.getFormResource = function(){\n var lang=$rootScope.globals.currentUser.lang;\n $scope.localVars.formLoaded=false;\n if ($scope.fd.PresentationId==null)\n {\n $scope.fd.PresentationId=0;\n \n }\n $scope.localVars.formLoading=true;\n \n let datasetId;\n //if ($scope.fd.Parameters.FormSaved)\n datasetId = $scope.fd.Related;\n //else datasetId= $scope.localVars.datasetFormParams.Parameters.dataset.id;\n ResourcesDataService.getResourceFormExtended(datasetId,$scope.taskId,$scope.localVars.formType,$scope.fd.PresentationId,\"w\",lang).then(function(data) {\n \n $scope.localVars.resourceWidgetDefinition= data.data.resourceDefinition;\n if (Array.isArray(data.data.widgets)) $scope.localVars.dashboard.widgets.layout = data.data.widgets;\n \n $scope.fd.wItemValue=data.data.widgets;\n \n \n \n $scope.localVars.searchFormDownloaded = true;\n \n $timeout(function(){ \n $scope.localVars.formLoaded=true;\n $scope.localVars.formLoading=false;\n });\n \n \n // $scope.localVars.setField($scope.localVars.dashboard.widgets.layout,'ReadOnly',true); \n $scope.localVars.setField($scope.localVars.dashboard.widgets.layout,'Required',false);\n \n },function(error){\n MessagingService.addMessage(error.msg,'error');\n $scope.localVars.formLoading=false;\n \n \n });\n \n };\n \n \n $scope.localVars.getFormResourceWithData = function(){\n var lang=$rootScope.globals.currentUser.lang;\n $scope.localVars.formLoaded=false;\n if ($scope.fd.PresentationId==null || $scope.fd.PresentationId==undefined)\n {\n $scope.fd.PresentationId = 0;\n \n }\n \n if ($scope.fd.ParentElementId==null || $scope.fd.ParentElementId==undefined)\n {\n $scope.fd.ParentElementId = 0;\n \n }\n \n \n \n \n if ($scope.localVars.resourceRecordId==undefined || $scope.localVars.resourceRecordId==0)\n {\n \n if ($scope.localVars.previousTaskData['datasetRecordId']!=undefined && $scope.localVars.previousTaskData['datasetRecordId']!=\"\" && $scope.localVars.previousTaskData['datasetId']==$scope.fd.Related) $scope.localVars.resourceRecordId = $scope.localVars.previousTaskData['datasetRecordId'];\n \n }\n if (typeof $scope.localVars.resourceRecordId !=='number' && typeof $scope.localVars.resourceRecordId !=='string')\n {\n \n if (Array.isArray($scope.localVars.resourceRecordId))\n {\n if ($scope.localVars.resourceRecordId.length>0)\n {\n $scope.localVars.resourceRecordId= $scope.localVars.resourceRecordId[0].id \n \n }\n }\n else $scope.localVars.resourceRecordId = $scope.localVars.resourceRecordId.id; \n }\n //let datasetId = $scope.localVars.datasetFormParams.Parameters.dataset.id;\n let datasetId = $scope.fd.Related;\n \n ResourcesDataService.getResourceFormExtendedWithData(datasetId,$scope.taskInitiateId,$scope.taskExecuteId,$scope.fd.PopulateType,$scope.fd.ParentElementId,$scope.fd.PresentationId,$scope.prevTaskExeId,$scope.localVars.formType,$scope.localVars.widgetType,$scope.localVars.resourceRecordId,\"w\",lang).then(function(data) {\n\n $scope.formData[$scope.fd.PresentationId] = data.data.form_data;\n if ($scope.formData[$scope.fd.PresentationId]==undefined) $scope.formData[$scope.fd.PresentationId]=[];\n $scope.localVars.resourceWidgetDefinition= data.data.resourceDefinition;\n if (Array.isArray(data.data.widgets)) $scope.localVars.dashboard.widgets.layout = data.data.widgets;\n \n if ($scope.formData[$scope.fd.PresentationId].length>0)\n {\n $scope.localVars.resourceRecordId = $scope.formData[$scope.fd.PresentationId][0]['id'];\n }\n $scope.localVars.datasetRecordId=$scope.localVars.resourceRecordId;\n \n $scope.localVars.formLoaded=true;\n \n $scope.localVars.formLoading=false;\n $scope.localVars.searchFormDownloaded = true;\n \n \n \n //MIGOR - bitno - DOBIO RESOURCERECORD-ID ZA BROADCAST - VIEW_RESOURCE WIDGET\n WidgetDataExchangeService.setData({widgetId:$scope.fd.PresentationId, DEI: [{'name':'resourceLink','value':[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:$scope.localVars.resourceRecordId}]}]});\n \n // $scope.localVars.setField($scope.localVars.dashboard.widgets.layout,'ReadOnly',true); \n $scope.localVars.setField($scope.localVars.dashboard.widgets.layout,'Required',false); \n },function(error){\n MessagingService.addMessage(error.msg,'error');\n $scope.localVars.formLoaded=true;\n \n $scope.localVars.formLoading=false;\n $scope.localVars.searchFormDownloaded = true;\n });\n \n };\n \n $scope.localVars.callApi = function () {\n let apiEndPoint = $scope.localVars.datasetFormParams.Parameters.APIEndpoint;\n let method = $scope.localVars.datasetFormParams.Parameters.APIMethod;\n let form_data = $scope.formData[$scope.fd.PresentationId][0];\n ResourcesDataService.CallApiGeneric(apiEndPoint,method,form_data).then(function(data){\n MessagingService.addMessage(data.data.msg,'success');\n \n },function(error){\n MessagingService.addMessage(error.data.msg,'error');\n \n });\n }\n $scope.getDatasetParams = function () {\n \n \n ResourcesDataService.getResourceDefAll($scope.fd.Related).then(function(data) {\n \n // MessagingService.addMessage(data.msg,'success');\n $scope.localVars.datasetFormParams = data.data;\n \n if (!$scope.formDefinition && !$scope.localVars.searchFormDownloaded)\n {\n \n $scope.localVars.getFormResourceWithData();\n \n }else\n {\n $scope.localVars.getFormResource();\n \n } \n \n },function(error){\n \n MessagingService.addMessage(error.msg,'error'); \n });\n }; \n \n $scope.localVars.setSelectedIntegration = function(id) {\n \n if ($scope.localVars.selectedResourceItem==undefined) $scope.localVars.selectedResourceItem={};\n var pos = $scope.localVars.resourceList.map(function(e) { return e.id; }).indexOf(id);\n \n if (pos>=0){\n $scope.localVars.selectedResourceItem = $scope.localVars.resourceList[pos];\n\n $scope.localVars.name_confirmed = $scope.localVars.selectedResourceItem.name +' ('+$scope.localVars.selectedResourceItem.id +')';\n \n }\n\t\t\t\t\t}\n \n\n$scope.localVars.getPreviousTaskWidget = function(linkType)\n {\n var pTaskData;\n var pTaskDataRet = WidgetDataExchangeService.getPrevTaskData($scope.prevTaskExeId);\n if (Array.isArray(pTaskDataRet) && pTaskDataRet.length>0) pTaskData = pTaskDataRet[0];\n var datasetId=0,datasetRecordId=0;\n if (pTaskData!=undefined)\n {\n if (pTaskData.DEI!=undefined && pTaskData.DEI!=null)\n {\n for (var i=0;i0 && $scope.fd.PresentationId==0 && data[$scope.fd.LocalId]!==undefined) $scope.fd.PresentationId = data[$scope.fd.LocalId];\n \n let observerPid2 = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid2,\"formSaved\",update_presentation_id2);\n //unsubscribe here later after implementing unsubscribe - ToDo\n }\n \n \n if ($scope.fd.PresentationId===null || $scope.fd.PresentationId===0)\n {\n let observerPid = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid,\"formSaved\",update_presentation_id);\n } else{\n dependent_field_pid2 = $scope.fd.PresentationId\n let observerPid2 = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid2,\"formSaved\",update_presentation_id2);\n }\n $scope.filter=$scope.fd.Search;\n //ovo treba prilagoditi\n if ($scope.fd.Search.taskListType==undefined) $scope.fd.Search.taskListType=\"claim\";\n \n \n \n $scope.gridOptions.onRegisterApi = function (gridApi) {\n $scope.gridApi = gridApi;\n gridApi.selection.on.rowSelectionChanged($scope,function(row){\n $scope.localVars.taskSelected=row.isSelected\n \n if(row.isSelected){\n \n \n if ($scope.fd.Search.taskListType==\"execute\")\n {\n $scope.selectedTask=row.entity.id\n $scope.task_execute_id = $scope.selectedTask;\n $scope.selectedTaskDefId=row.entity.resourcedef.id\n $scope.selectedTaskObject = row.entity; \n }\n else\n {\n $scope.selectedTask=row.entity.TaskInitiationId.id\n $scope.task_initiate_id = $scope.selectedTask;\n $scope.selectedTaskDefId=row.entity.TaskInitiationId.Resourcedef.id\n $scope.selectedTaskObject = row.entity.TaskInitiationId; \n }\n \n }\n });\n \n //external pagination\n gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {\n paginationOptions.pageNumber = newPage;\n paginationOptions.pageSize = pageSize;\n $scope.fd.ExecuteAllListPaginatedFilter($scope.fd.Search.taskListType,1,false,\"\",$scope.localVars.nextPage,$scope.localVars.previousPage,newPage,pageSize,$scope.filter);\n });\n \n gridApi.core.on.filterChanged($scope, function() {\n // Set some $scope variable that both lists use for filtering\n // $$scope.someFilterValueBothListsLookAt = ......\n });\n \n \n }\n \n \n $scope.localVars.showProperties=function(datasetMapperType)\n {\n \n if ($scope.localVars.datasetMapperType==undefined)\n {\n $scope.localVars.datasetMapperType = datasetMapperType;\n }else\n {\n if ($scope.localVars.datasetMapperType==0 || $scope.localVars.datasetMapperType!=datasetMapperType) $scope.localVars.datasetMapperType = datasetMapperType;\n else $scope.localVars.datasetMapperType=0;\n }\n \n };\n \n /*\n $scope.removeField = function (index){\n\t\t\t\t\t\t\n if (index > -1) {\n\t\t\t\t\t\t \n $scope.inputArray.layout.splice(index, 1);\n\t\t\t\t\t\t \n }\n\n }\n */\n $scope.ClaimSelected = function(){\n \n \n var lang=$rootScope.globals.currentUser.lang;\n TaskDataService.ExecuteTaskAction($scope.selectedTask,0,'claim',lang).then(function(data) {\n \n \n \n //refresh liste task-ova za claim\n $scope.ExecuteAllList($scope.fd.Search.taskListType,1,true,data.data.msg);\n \n },function(error){\n \n \n MessagingService.addMessage(error.msg,'error');\n });\n } \n \n $scope.ExecuteAllList = function(type,filter,afterClaim,msgAfter){\n \n var lang=$rootScope.globals.currentUser.lang;\n \n TaskDataService.getInitiatedTasks(type,filter).then(function(data) {\n \n $scope.gridOptions.data = data.data.results;\n if (afterClaim)\n {\n MessagingService.addMessage(msgAfter,'success');\n \n }\n },function(error){\n \n MessagingService.addMessage(error.msg,'error');\n });\n }\n \n \n \n $scope.ExecuteAllListPaginated = function(type,filter,afterClaim,msgAfter,urlNext,urlPrev,newPage,pageSize){\n \n $scope.localVars.dataLoaded = false;\n var lang=$rootScope.globals.currentUser.lang;\n if ($scope.localVars.totalCount>0)\n {\n if (Math.ceil($scope.totalCount/pageSize)0)\n {\n if (Math.ceil($scope.localVars.totalCount/pageSize)0) $scope.localVars.inlineTaskDefinition.task_execute_id = $scope.localVars.inlineTaskDefinition.taskExecuteInstance[0].id;\r\n if ($scope.localVars.inlineTaskDefinition.taskInitiateInstance!=undefined && $scope.localVars.inlineTaskDefinition.taskInitiateInstance.length>0) $scope.localVars.inlineTaskDefinition.task_initiate_id = $scope.localVars.inlineTaskDefinition.taskInitiateInstance[0].id;\r\n $scope.localVars.inlineTask.resourceDefinition=data.resourceDefinition; \r\n \r\n $scope.localVars.inlineTask.data = data.form_data;\r\n \r\n if ($scope.localVars.inlineTask.data==undefined) $scope.localVars.inlineTask.data = {};\r\n $scope.localVars.inlineTask.widgets.layout= data.widgets;\r\n if ($scope.localVars.inlineTask.resourceDefinition==undefined) $scope.localVars.inlineTask.resourceDefinition = {};\r\n $scope.localVars.inlineTask.resourceDefinition.formParams = {formViewType:2,formLocked : true};\r\n \r\n $scope.gsrvc.setFormViewType($scope.localVars.inlineTask.resourceDefinition.formParams.formViewType)\r\n \r\n $scope.gsrvc.setTaskFormVersion($scope.localVars.inlineTask.resourceDefinition.id+$scope.localVars.inlineTaskDefinition.form_type,$scope.localVars.inlineTask.resourceDefinition.FormVersion)\r\n\r\n $scope.ksm = KatalyoStateManager;\r\n //define task_closed action from parent task if parent exists\r\n if ($scope.taskDefinition!=undefined)\r\n {\r\n $scope.localVars.inlineTask.resourceDefinition.page_state_id = $scope.taskDefinition.page_state_id\r\n \r\n let taskParentState= $scope.ksm.getSubject(\"task\"+$scope.taskDefinition.transaction_id);\r\n let task_closed = function(data)\r\n {\r\n //textValueState.subject.setStateChanges = data;\r\n taskParentState.notifyObservers(\"task_closed\");\r\n };\r\n \r\n let action_task_closed;\r\n if (taskParentState!=undefined) action_task_closed = $scope.ksm.addAction(taskParentState.name,\"task_closed\",task_closed); \r\n \r\n //Register task with state manager\r\n let taskState= $scope.ksm.addSubject('task'+$scope.localVars.inlineTaskDefinition.transaction_id,$scope.localVars.inlineTaskDefinition);\r\n let taskStateName = taskState.subject.name;\r\n \r\n let task_started = function(data)\r\n {\r\n //textValueState.subject.setStateChanges = data;\r\n taskState.subject.notifyObservers(\"task_started\");\r\n };\r\n \r\n let action_task_started = $scope.ksm.addAction(taskStateName,\"task_started\",task_started);\r\n \r\n $scope.ksm.executeAction(taskStateName,\"task_started\");\r\n \r\n let task_initiated = function(data)\r\n {\r\n //textValueState.subject.setStateChanges = data;\r\n taskState.subject.notifyObservers(\"task_initiated\");\r\n };\r\n \r\n let action_task_initiated = $scope.ksm.addAction(taskStateName,\"task_initiated\",task_initiated);\r\n \r\n $scope.$on('RefreshTask'+$scope.localVars.inlineTaskDefinition.transaction_id,function(event,data){\r\n\r\n $scope.localVars.StartNewTask();\r\n });\r\n \r\n $timeout(function(){\r\n $scope.localVars.initiateFormLoaded=true;\r\n $scope.localVars.taskInitiated=false;\r\n $scope.localVars.isCollapsed3=true;\r\n },500); \r\n \r\n \r\n \r\n }\r\n\r\n };\r\n $scope.localVars.ProcessMenuClick= function(menuId){\r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n \r\n if (menuId!=0)\r\n {\r\n $scope.localVars.initiateFormLoaded=false;\r\n MenuService.ProcessMenuClick(menuId).then(function(data) {\r\n \r\n $scope.ProcessDataFromStartTask(data); \r\n \r\n \r\n },function(error){\r\n \r\n if (error.msg!=undefined) MessagingService.addMessage(error.msg,'error');\r\n else MessagingService.addMessage(error,'error');\r\n $scope.localVars.inlineTask.taskProcResponse = {status : error.status,msg:error.msg};\r\n \r\n });\r\n }\r\n };\r\n \r\n $scope.localVars.GetExecuteTaskByExeId= function(task_execute_id,task_initiate_id){\r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n \r\n if (task_execute_id>0)\r\n {\r\n \r\n TaskDataService.preExecuteTask(task_initiate_id,task_execute_id,lang).then(function(data) {\r\n \r\n $scope.ProcessDataFromStartTask(data.data); \r\n \r\n \r\n },function(error){\r\n \r\n if (error.msg!=undefined) MessagingService.addMessage(error.msg,'error');\r\n else MessagingService.addMessage(error,'error');\r\n $scope.localVars.inlineTask.taskProcResponse = {status : error.status,msg:error.msg};\r\n \r\n });\r\n }\r\n };\r\n \r\n if ($scope.localVars.processMenuClicked) $scope.localVars.ProcessMenuClick($scope.localVars.menuId);\r\n \r\n \r\n $scope.localVars.StartTask = function(taskId,outcomeId,previousTaskId){\r\n var lang=$rootScope.globals.currentUser.lang;\r\n if (outcomeId==undefined || outcomeId==\"\") outcomeId=0;\r\n if (previousTaskId==undefined || previousTaskId==\"\") previousTaskId=0;\r\n \r\n if (taskId!=0)\r\n {\r\n $scope.localVars.initiateFormLoaded=false;\r\n \r\n TaskDataService.StartTask(taskId,outcomeId,previousTaskId).then(function(data) {\r\n \r\n \r\n if (Object.keys(data.data).length==0 || data.data==null || data.data==undefined)\r\n {\r\n MessagingService.addMessage('Task processing error. Task data is empty! --> Check task definition --> Task id = '+taskId,'error');\r\n }\r\n else\r\n {\r\n \r\n $scope.ProcessDataFromStartTask(data.data);\r\n }\r\n },function(error){\r\n \r\n \r\n MessagingService.addMessage(error.msg.msg,'error');\r\n $scope.localVars.inlineTask.taskProcResponse = {status : error.status,msg:error.msg};\r\n \r\n });\r\n }\r\n };\r\n \r\n $scope.localVars.StartPublicTask = function(organisationId,taskName,taskId,outcomeId,previousTaskId){\r\n if (organisationId==undefined || organisationId==\"\") organisationId=0;\r\n if (outcomeId==undefined || outcomeId==\"\") outcomeId=0;\r\n if (previousTaskId==undefined || previousTaskId==\"\") previousTaskId=0;\r\n if (taskId==undefined || taskId==\"\") taskId=0;\r\n if (taskName==undefined) taskName=\"\";\r\n if ((taskId!=0 || taskName!=\"\") && organisationId>0)\r\n {\r\n PublicTaskDataService.StartTask(organisationId,taskName,taskId,outcomeId,previousTaskId).then(function(data) {\r\n \r\n if (Object.keys(data.data).length==0 || data.data==null || data.data==undefined)\r\n {\r\n MessagingService.addMessage('Task processing error. Task data is empty! --> Check task definition --> Task id = '+taskId,'error');\r\n }\r\n else\r\n {\r\n \r\n $scope.ProcessDataFromStartTask(data.data);\r\n }\r\n\r\n /*\r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.localVars.inlineTask.taskProcResponse = {status : error.status,msg:error.msg};\r\n\r\n $scope.localVars.inlineTaskDefinition = data.data.taskdef[0];\r\n if ($scope.taskDefinition!=undefined) $scope.localVars.inlineTaskDefinition.prev_task_id = $scope.taskDefinition.task_execute_id;\r\n $scope.localVars.inlineTaskDefinition.proc_type = data.data.procType;\r\n $scope.localVars.inlineTaskDefinition.form_type = data.data.formType;\r\n $scope.localVars.inlineTaskDefinition.transaction_id = data.data.transactionId;\r\n $scope.localVars.inlineTaskDefinition.inline_task=$scope.localVars.isInlineTask;\r\n $scope.localVars.inlineTaskDefinition.source_type = $stateParams.src_type;\r\n $scope.localVars.inlineTaskDefinition.taskFormLoaded = false;\r\n $scope.localVars.inlineTaskDefinition.taskExecuteInstance = data.data.taskExecuteInstance;\r\n $scope.localVars.inlineTaskDefinition.taskInitiateInstance = data.data.taskInitiateInstance;\r\n $scope.localVars.inlineTaskDefinition.inlineInitiateFormLoaded = true; \r\n \r\n if ($scope.localVars.inlineTaskDefinition.taskExecuteInstance!=undefined && $scope.localVars.inlineTaskDefinition.taskExecuteInstance.length>0) $scope.localVars.inlineTaskDefinition.task_execute_id = $scope.localVars.inlineTaskDefinition.taskExecuteInstance[0].id;\r\n if ($scope.localVars.inlineTaskDefinition.taskInitiateInstance!=undefined && $scope.localVars.inlineTaskDefinition.taskInitiateInstance.length>0) $scope.localVars.inlineTaskDefinition.task_initiate_id = $scope.localVars.inlineTaskDefinition.taskInitiateInstance[0].id;\r\n \r\n $scope.localVars.inlineTask.resourceDefinition=data.data.resourceDefinition;\r\n $scope.localVars.inlineTask.data = data.data.form_data;\r\n if ($scope.localVars.inlineTask.data==undefined) $scope.localVars.inlineTask.data = {};\r\n $scope.localVars.inlineTask.widgets.layout= data.data.widgets;\r\n \r\n $scope.localVars.inlineTask.resourceDefinition.formParams = {formViewType:2,formLocked : true};\r\n $scope.localVars.taskInitiated = false; \r\n \r\n $timeout(function(){\r\n $scope.localVars.initiateFormLoaded=true;\r\n $scope.localVars.isCollapsed3=true;\r\n },1); \r\n\r\n */\r\n\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.localVars.inlineTask.taskProcResponse = {status : error.status,msg:error.msg};\r\n \r\n });\r\n }\r\n };\r\n \r\n \r\n if ($scope.localVars.loadTaskDirect) $scope.localVars.StartTask($scope.localVars.taskId,$scope.localVars.outcomeId,$scope.localVars.previousTask);\r\n \r\n if ($scope.localVars.processStartTask || $scope.localVars.autoSearch) $scope.localVars.StartTask($scope.localVars.menuId,$scope.localVars.outcomeId,$scope.localVars.previousTask);\r\n \r\n if ($scope.localVars.publicTask) $scope.localVars.StartPublicTask($scope.localVars.organisationId,$scope.localVars.publicTaskName,$scope.localVars.publicTaskId,$scope.localVars.outcomeId,$scope.localVars.previousTask);\r\n \r\n },\r\n \r\n link: function (scope, elem, attrs) {\r\n \r\n \r\n \r\n \r\n }\r\n }\r\n};\n'use strict';\r\n\r\nexport function ktTaskProcExecute () {\r\n\r\n return {\r\n restrict: 'A',\r\n templateUrl: 'ktdirectivetemplates/ktTaskProcExecute.html',\r\n scope:{\r\n taskDefinition : \"=\",\r\n dashboard: \"=\",\r\n resourceDefinition:\"=\",\r\n taskExecuteInstance: \"=\",\r\n taskInitiateInstance: \"=\",\r\n localVars: \"=\",\r\n \r\n \t\t\t},\r\n controller: function($scope,$stateParams,$cookies,$rootScope,TaskDataService,GridsterService,MessagingService,KatalyoStateManager){\r\n \r\n $scope.CTRL =\"ktTaskProcExecute\" \r\n if ($scope.fd==undefined) $scope.fd={};\r\n if ($scope.lVars==undefined) $scope.lVars={};\r\n $scope.gsrvc = GridsterService;\r\n var lang=$rootScope.globals.currentUser.lang;\r\n if ($scope.localVars==undefined) $scope.localVars={};\r\n $scope.lVars.isCollapsed3=true;\r\n $scope.taskOutcomes = $scope.localVars.taskOutcomes; \r\n $scope.executeTaskDataLoaded=false;\r\n $scope.taskDefinition.page_state_id=$scope.localVars.page_state_id;\r\n\r\n if ($scope.taskDefinition.page_state_id===undefined) $scope.taskDefinition.page_state_id=$scope.resourceDefinition.page_state_id;\r\n \r\n $scope.fromStateName=$stateParams.fromStateName;\r\n $scope.fromStateParams=$stateParams.fromStateParams;\r\n $scope.cookieFromStateName=$cookies.getObject('executeTaskFromStateName');\r\n $scope.cookieFromStateParams=$cookies.getObject('executeTaskFromStateParams');\r\n $scope.noBackbutton = false;\r\n $scope.backBtnFromCookie=false;\r\n $scope.ksm = KatalyoStateManager;\r\n \r\n\r\n let executeTaskState= $scope.ksm.addSubject('executeTaskStateName'+$scope.taskDefinition.transaction_id,$scope.taskDefinition.task_execute_id);\r\n let executeTaskStateName = executeTaskState.subject.name;\r\n\r\n let task_executed = function(data)\r\n {\r\n executeTaskState.subject.setStateChanges = data;\r\n executeTaskState.subject.notifyObservers(\"task_executed\");\r\n \r\n };\r\n \r\n let action_task_executed = $scope.ksm.addAction(executeTaskStateName,\"task_executed\",task_executed);\r\n\r\n if ($scope.taskInitiateInstance.length>0)\r\n {\r\n $scope.task_initiate_id = $scope.taskInitiateInstance[0].id;\r\n $scope.taskDefinition.taskInitiateInstance = $scope.taskInitiateInstance[0];\r\n }\r\n else $scope.task_initiate_id = 0;\r\n \r\n if ($scope.taskExecuteInstance.length>0)\r\n {\r\n $scope.task_execute_id = $scope.taskExecuteInstance[0].id;\r\n $scope.taskDefinition.taskExecuteInstance = $scope.taskExecuteInstance[0];\r\n }\r\n else $scope.task_execute_id=0;\r\n if ($scope.fromStateName==undefined || $scope.fromStateName==\"\")\r\n {\r\n if ($scope.cookieFromStateName==undefined || $scope.cookieFromStateName==\"\")\r\n {\r\n $scope.noBackButton = true;\r\n }else\r\n {\r\n $scope.fromStateName = $scope.cookieFromStateName;\r\n $scope.backBtnFromCookie = true;\r\n }\r\n \r\n \r\n }else{\r\n $cookies.putObject('executeTaskFromStateName',$scope.fromStateName);\r\n \r\n }\r\n \r\n if ($scope.fromStateParams==undefined)\r\n {\r\n if ($scope.cookieFromStateParams!=undefined)\r\n {\r\n if ($scope.backBtnFromCookie)\r\n {\r\n $scope.fromStateParams = $scope.cookieFromStateParams;\r\n }\r\n }\r\n \r\n }else if ($scope.cookieFromStateParams==undefined)\r\n {\r\n $cookies.putObject('executeTaskFromStateParams',$scope.fromStateParams);\r\n \r\n }else\r\n {\r\n if ($scope.backBtnFromCookie)\r\n {\r\n \r\n $scope.fromStateParams = $scope.cookieFromStateParams;\r\n \r\n }else\r\n {\r\n $cookies.putObject('executeTaskFromStateParams',$scope.fromStateParams); \r\n }\r\n }\r\n \r\n $scope.gridsterType=\"task\";\r\n //$scope.gridsterExeFormOpts = GridsterService.getGridsterOptions();\r\n $scope.formType=\"e\";\r\n \r\n $scope.isCollapsedTaskDetails=true;\r\n \r\n $scope.lVars.changeIsCollapsed3 = function()\r\n {\r\n if ($scope.lVars.isCollapsed3) $scope.lVars.isCollapsed3 = false;\r\n else $scope.lVars.isCollapsed3 = true;\r\n \r\n }\r\n \r\n \r\n $scope.setForm = function(form)\r\n {\r\n $scope.forma = form;\r\n \r\n }\r\n \r\n $scope.FormLockUnlock = function()\r\n {\r\n $scope.resourceDefinition.formParams.formLocked=!$scope.resourceDefinition.formParams.formLocked;\r\n \r\n }\r\n \r\n $scope.goBack = function(){\r\n $state.go($scope.fromStateName,$scope.fromStateParams);\r\n \r\n };\r\n \r\n $scope.returnToPreviousTask = function(){\r\n \r\n $scope.gsrvc.setOpenTaskInNewPage(false);\r\n \r\n };\r\n \r\n \r\n $scope.fd.CancelClicked = function()\r\n {\r\n $scope.taskDefinition.proc_type = 0;\r\n $scope.taskDefinition.inlineInitiateFormLoaded=false;\r\n $scope.taskDefinition.showInlineTask = false;\r\n $scope.localVars.showInlineTask = false;\r\n $scope.taskDefinition.inlineTaskInitiated = false;\r\n $scope.$emit('InlineTaskClosed',$scope.localVars.taskId);\r\n };\r\n \r\n \r\n \r\n $scope.ExecuteTaskAction = function(action){\r\n \r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n TaskDataService.ExecuteTaskAction($scope.localVars.task_initiate_id,$scope.localVars.task_execute_id,action,lang).then(function(data) {\r\n \r\n \r\n $scope.taskInitiateInstance =data.data.data.taskInitiateInstance[0];\r\n $scope.taskExecuteInstance =data.data.data.taskExecuteInstance[0];\r\n if ($scope.taskExecuteInstance!=undefined)\r\n {\r\n $scope.taskDefinition.task_execute_id = $scope.taskExecuteInstance.id;\r\n \r\n }\r\n \r\n if (action==\"claim\")\r\n \r\n {\r\n //$scope.pageChanged();\r\n $rootScope.$broadcast('RefreshData0',data.data.ret_value);\r\n }\r\n \r\n MessagingService.addMessage(data.data.msg,'success');\r\n \r\n \r\n },function(error){\r\n \r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n \r\n \r\n $scope.$on('ExecuteTask'+$scope.task_execute_id,function(event,data){\r\n \r\n let form = $scope.forma;\r\n form.$setSubmitted()\r\n //if (form.$submitted) $scope.localVars.setSubmitted(form);\r\n $scope.localVars.ExecuteTask(data.outcomeId,form);\r\n });\r\n \r\n \r\n \r\n \r\n $scope.localVars.ExecuteTask = function(outcomeId,form){\r\n \r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n if (form.$valid) {\r\n \r\n \r\n TaskDataService.executeTask($scope.task_execute_id,$scope.dashboard.data,outcomeId,lang).then(function(data) {\r\n \r\n if (data?.data?.msg!==\"\") MessagingService.addMessage(data.data.msg,'success');\r\n $rootScope.$broadcast($scope.taskDefinition.page_state_id+'-'+\"TaskPostProcess\"+$scope.taskDefinition.transaction_id,data.data.ret_value);\r\n $rootScope.$broadcast('ExecuteTaskPostProcess'+$scope.task_execute_id,data.data.ret_value);\r\n \r\n let taskStateName = \"executeTaskStateName\"+$scope.taskDefinition.transaction_id;\r\n $scope.ksm.executeAction(taskStateName,\"task_executed\",{task_id:$scope.taskDefinition.task_execute_id,action:'executetask'});\r\n\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n \r\n });\r\n \r\n } // if (isValid)\r\n else\r\n {\r\n MessagingService.addMessage($scope.resourceDefinition.ParametersLang.InvalidFormMessage,'warning');\r\n \r\n }\r\n };\r\n // \r\n \r\n $scope.localVars.setSubmitted = function (form) {\r\n angular.forEach(form, function(item) {\r\n if(item && item.$$parentForm === form && item.$setSubmitted) {\r\n $scope.localVars.setSubmitted(item);\r\n }\r\n });\r\n } \r\n \r\n },\r\n link: function (scope, elem, attrs) {\r\n \r\n \r\n }\r\n } \r\n};\n'use strict';\r\n\r\nexport function ktTaskProcInitiate () {\r\n var controller = ['$scope', '$stateParams','$state','UserService','ResourcesDataService','$rootScope','ProcessingService','$timeout','$cookies','CodesService','KatalyoStateManager',\r\n 'WidgetDataExchangeService','TaskDataService','TaskProcService','MessagingService','GridsterService', '$window','$sce',\r\n function ($scope,$stateParams,$state,UserService,ResourcesDataService,$rootScope,ProcessingService,$timeout,$cookies,CodesService,KatalyoStateManager,\r\n WidgetDataExchangeService,TaskDataService,TaskProcService,MessagingService,GridsterService, $window,$sce) {\r\n $scope.CTRL =\"ktTaskProcInitiate\"\r\n if ($scope.localVars==undefined) $scope.localVars={};\r\n \r\n $scope.localVars.isCollapsed3=true; \r\n //$scope.localVars = {dashboard:{}};\r\n $scope.localVars.autoInitiate=false;\r\n $scope.localVars.showTask = true;\r\n if ($scope.localVars.previousTask==undefined) $scope.localVars.previousTask = 0;\r\n var aParams = {};\r\n var pTaskPackage={};\r\n $scope.gsrvc = GridsterService;\r\n if ($scope.fd!=undefined)\r\n {\r\n $scope.$on('ProcessTask'+ $scope.fd.presentationId,function(event,data){\r\n if ($scope.localVars.inlineTaskDefinition==undefined) $scope.localVars.inlineTaskDefinition={task_execute_id : data.task_execute_id};\r\n else if ($scope.localVars.inlineTaskDefinition.task_execute_id==undefined) $scope.localVars.inlineTaskDefinition.task_execute_id = data.task_execute_id;\r\n \r\n $scope.localVars.StartTask(data.taskId,data.outcomeId);\r\n });\r\n }\r\n \r\n \r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n $scope.localVars.initiateFormLoaded=false;\r\n $scope.isSaving=false;\r\n $scope.previousTask=$scope.taskDefinition.prev_task_id;\r\n $scope.previousTaskOutcomeId=$stateParams.outcome_id;\r\n $scope.previousTaskPackage=$stateParams.prev_task_package; \r\n $scope.gridsterType=\"task\";\r\n $scope.showSearchFilters=false; \r\n //$scope.dashboard = {widgets : []};\r\n if ($scope.previousTaskOutcomeId==\"\") $scope.previousTaskOutcomeId = 0;\r\n \r\n $scope.fromStateName=$stateParams.fromStateName;\r\n $scope.fromStateParams=$stateParams.fromStateParams;\r\n $scope.cookieFromStateName=$cookies.getObject('initiateTaskFromStateName');\r\n $scope.cookieFromStateParams=$cookies.getObject('initiateTaskFromStateParams');\r\n $scope.noBackbutton = false;\r\n $scope.backBtnFromCookie=false;\r\n \r\n \r\n \r\n $scope.removeField = function (index){\r\n\t\t\t\t\t\t\r\n if (index > -1) {\r\n\t\t\t\t\t\t \r\n $scope.inputArray.layout.splice(index, 1);\r\n\t\t\t\t\t\t \r\n }\r\n\r\n } \r\n\r\n \r\n \r\n \r\n $scope.InititateAllList = function(){\r\n \r\n \r\n ResourcesDataService.getResourceDefByType(lang,'task').then(function(data) {\r\n \r\n $scope.gridOptions.data = data.data;\r\n \r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n \r\n \r\n \r\n $scope.InititateMyList = function(){\r\n \r\n \r\n ResourcesDataService.getResourceDefListByLangByTypeUser(lang,'task').then(function(data) {\r\n \r\n $scope.gridOptions.data = data.data;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n \r\n }; \r\n \r\n \r\n \r\n \r\n \r\n if ($scope.fromStateName==undefined || $scope.fromStateName==\"\")\r\n {\r\n if ($scope.cookieFromStateName==undefined || $scope.cookieFromStateName==\"\")\r\n {\r\n $scope.noBackButton = true;\r\n }else\r\n {\r\n $scope.fromStateName = $scope.cookieFromStateName;\r\n $scope.backBtnFromCookie = true;\r\n }\r\n \r\n \r\n }else{\r\n $cookies.putObject('initiateTaskFromStateName',$scope.fromStateName);\r\n \r\n }\r\n \r\n if ($scope.fromStateParams==undefined)\r\n {\r\n if ($scope.cookieFromStateParams!=undefined)\r\n {\r\n if ($scope.backBtnFromCookie)\r\n {\r\n $scope.fromStateParams = $scope.cookieFromStateParams;\r\n }\r\n }\r\n \r\n }else if ($scope.cookieFromStateParams==undefined)\r\n {\r\n $cookies.putObject('initiateTaskFromStateParams',$scope.fromStateParams);\r\n \r\n }else\r\n {\r\n if ($scope.backBtnFromCookie)\r\n {\r\n \r\n $scope.fromStateParams = $scope.cookieFromStateParams;\r\n \r\n }else\r\n {\r\n $cookies.putObject('initiateTaskFromStateParams',$scope.fromStateParams); \r\n }\r\n }\r\n \r\n \r\n if ($scope.previousTask==undefined || $scope.previousTask==\"\")\r\n {\r\n // $state.go();\r\n \r\n $scope.previousTask = 0;\r\n \r\n }\r\n $scope.potentialOwners = {};\r\n \r\n\r\n \r\n //WidgetDataExchangeService.deRegisterAllWidgets();\t//Migor - cistim taskwidgetRegistry \r\n\r\n $scope.localTaskId=WidgetDataExchangeService.registerTask($scope.taskDefId);\r\n \r\n // $scope.taskDefinition ={};\r\n $scope.potentialOwners.potentialOwnersUsers = [];\r\n $scope.potentialOwners.potentialOwnersGroups = [];\r\n \r\n $scope.FormLockUnlock = function()\r\n {\r\n $scope.resourceDefinition.formParams.formLocked=!$scope.resourceDefinition.formParams.formLocked;\r\n\r\n \r\n };\r\n \r\n $scope.menuId = $stateParams.id;\r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n $scope.localVars.NewTask = function(taskId)\r\n {\r\n $scope.localVars.inlineTask.widgets.layout=angular.copy($scope.localVars.inlineTask.widgetsOriginal);\r\n $scope.taskDefinition.inlineTaskInitiated=false;\r\n };\r\n \r\n $scope.localVars.StartNewTask = function()\r\n {\r\n $scope.localVars.StartTask($scope.taskDefinition.ResourceDefId_id,0,0);\r\n \r\n };\r\n \r\n $scope.returnToPreviousTask = function(){\r\n \r\n \r\n $scope.ksm=KatalyoStateManager;\r\n let taskStateName = \"task\"+$scope.taskDefinition.prev_task_transaction_id;\r\n \r\n $scope.ksm.executeAction(taskStateName,\"task_closed\");\r\n \r\n $scope.gsrvc.setOpenTaskInNewPage(false);\r\n \r\n }; \r\n $scope.localVars.CancelClicked = function()\r\n {\r\n if ($scope.localVars.fromOutcome && !$scope.taskDefinition.inline_task)\r\n {\r\n $scope.localVars.executeTaskDataLoaded=false;\r\n if ($scope.localVars.pageChanged!=undefined) $scope.localVars.pageChanged();\r\n }\r\n $scope.taskDefinition.proc_type=0;\r\n $scope.taskDefinition.inlineInitiateFormLoaded=false;\r\n $scope.taskDefinition.showInlineTask = false;\r\n $scope.taskDefinition.inlineTaskInitiated = false;\r\n /*\r\n $scope.localVars.proc_type=0;\r\n $scope.localVars.inlineInitiateFormLoaded=false;\r\n $scope.localVars.showInlineTask = false;\r\n $scope.localVars.inlineTaskInitiated = false;\r\n */\r\n $scope.$emit('InlineTaskClosed',$scope.localVars.taskId);\r\n if (!$scope.taskDefinition.inline_task) $window.history.back();\r\n };\r\n \r\n \r\n $scope.localVars.AutoInitiateTask = function(){\r\n var lang=$rootScope.globals.currentUser.lang;\r\n // if (isValid) {\r\n var parentDataset=$scope.localVars.getPreviousTaskWidget();\r\n if ($scope.previousTaskOutcomeId==undefined) $scope.previousTaskOutcomeId=0;\r\n \r\n TaskDataService.initiateTask($scope.taskDefinition.ResourceDefId_id,$scope.previousTask,$scope.previousTaskOutcomeId,[],$scope.potentialOwners,parentDataset['datasetId'],parentDataset['datasetRecordId'],lang).then(function(data) {\r\n \r\n \r\n $scope.task_initiate_id = data.data.task_initiate_id;\r\n $scope.task_execute_id = data.data.task_execute_id;\r\n //$state.go('app.navbar.tasks.execute',{id: $scope.taskDefId,task_initiate_id:$scope.task_initiate_id,task_execute_id:$scope.task_execute_id,fromStateName:$scope.fromStateName,fromStateParams:$scope.fromStateParams,prev_task_package:$scope.previousTaskPackage,prev:$scope.taskExecuteId});\r\n \r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n // }\r\n };\r\n \r\n $scope.$on('CloseTaskForm'+$scope.taskDefinition.transaction_id,function(event,data){\r\n \r\n $scope.localVars.showTask = false;\r\n $scope.$emit('InlineTaskClosed',$scope.localVars.taskId);\r\n });\r\n \r\n $scope.localVars.InitiateTask = function(form){\r\n var f = $scope.forma;\r\n \r\n if (form.$submitted) $scope.localVars.setSubmitted(form);\r\n if (form.$valid) {\r\n \r\n //var initiateData={};\r\n $rootScope.$broadcast('ProcessTaskWidgets',{}); //svi widgeti slusaju ovaj event\r\n $scope.isSaving = true;\r\n var lang=$rootScope.globals.currentUser.lang;\r\n if ($scope.previousTaskOutcomeId==undefined) $scope.previousTaskOutcomeId=0;\r\n //ako je prethodni task imao listu povuci WidgetData\r\n var parentDataset=$scope.localVars.getPreviousTaskWidget(\"resourceLinkDatasetList\");\r\n \r\n if (parentDataset['datasetId']==undefined || parentDataset['datasetId']==\"\") parentDataset['datasetId'] = 0;\r\n if (parentDataset['datasetRecordId']==undefined || parentDataset['datasetRecordId']==\"\") parentDataset['datasetRecordId'] = 0;\r\n let resource_def_id = $scope.taskDefinition.ResourceDefId;\r\n if (resource_def_id==undefined) resource_def_id = $scope.taskDefinition.ResourceDefId_id;\r\n TaskDataService.InitiateTask(resource_def_id,$scope.taskDefinition.transaction_id,$scope.dashboard.data,$scope.potentialOwners,parentDataset['datasetId'],parentDataset['datasetRecordId'],lang).then(function(data) {\r\n \r\n\t\t\t\t\t\r\n MessagingService.addMessage(data.data.msg,'success');\r\n //$rootScope.$broadcast('InitiateTaskPostProcess'+$scope.taskDefinition.transaction_id,data.data);\r\n //ovo treba staviti u event InitiateTaskPostProcessFinished\r\n if (data.data.taskInitiateInstance!=undefined)\r\n {\r\n if (data.data.taskInitiateInstance.length>0)\r\n $scope.taskDefinition.taskInitiateInstance = data.data.taskInitiateInstance[0];\r\n $scope.taskDefinition.task_initiate_id = $scope.taskDefinition.taskInitiateInstance.id;\r\n }\r\n let r_val;\r\n if (data.data.ret_value!=undefined)\r\n {\r\n if(data.data.ret_value.length>0)\r\n {\r\n if (data.data.ret_value[0].eosResponse!=null && data.data.ret_value[0].eosResponse!=undefined) $scope.eosResponse = JSON.stringify(data.data.ret_value[0].eosResponse,null,2);\r\n if (data.data.ret_value[0].eosResponse2!=null && data.data.ret_value[0].eosResponse2!=undefined) $scope.eosResponse2 = JSON.stringify(data.data.ret_value[0].eosResponse2,null,2);\r\n r_val = data.data.ret_value;\r\n }else r_val = {task_initiate_id:$scope.taskDefinition.task_initiate_id};\r\n }\r\n \r\n \r\n $rootScope.$broadcast($scope.taskDefinition.page_state_id+'-'+\"TaskPostProcess\"+$scope.taskDefinition.transaction_id,r_val);\r\n \r\n //execute action task_initiated\r\n $scope.ksm = KatalyoStateManager;\r\n let taskStateName = \"task\"+$scope.taskDefinition.transaction_id;\r\n $scope.ksm.executeAction(taskStateName,\"task_initiated\");\r\n \r\n if (data.data.restart_task!=null && data.data.restart_task!=undefined)\r\n \r\n {\r\n $scope.taskDefinition.transaction_id = data.data.restart_task.data.transactionId;\r\n \r\n $scope.$on('CloseTaskForm'+$scope.taskDefinition.transaction_id,function(event,data){\r\n \r\n $scope.localVars.showTask = false;\r\n $scope.$emit('InlineTaskClosed',$scope.localVars.taskId);\r\n });\r\n }\r\n \r\n \r\n $scope.$emit('RefreshData'+ $scope.taskDefinition.prev_task_id,$scope.taskDefinition.ResourceDefId_id); \r\n $scope.localVars.taskInitiated=true;\r\n if (data.data.task_execute_id>0)\r\n {\r\n if (data.data.taskdef.Parameters!=null && data.data.taskdef.Parameters!=undefined)\r\n { \r\n if (data.data.taskdef.Parameters.AutoLoadExeForm)\r\n {\r\n $scope.localVars.GetExecuteTaskByExeId(data.data.task_execute_id,data.data.task_initiate_id); \r\n }\r\n }\r\n }\r\n \r\n },function(error){\r\n // $scope.isSaving = false; \r\n MessagingService.addMessage(error.msg,'error');\r\n\r\n $scope.errorMsg = $sce.trustAsHtml(error.msg)\r\n });\r\n \r\n $scope.isSaving = false; \r\n\t\t\t\t\t\t\r\n\t\t\t\r\n\t\t\t\t\t\t\t\r\n } // if (isValid)\r\n else\r\n {\r\n MessagingService.addMessage(\"Please correct invalid entries\",'warning');\r\n \r\n }\r\n };\r\n\r\n $scope.localVars.getPreviousTaskWidget = function(deiType)\r\n {\r\n var pTaskPkg = WidgetDataExchangeService.getPrevTaskData($scope.taskDefinition.prev_task_id);\r\n var datasetId=0,datasetRecordId=0,pTaskData,pTaskDataArray;\r\n if (!Array.isArray(pTaskPkg))\r\n {\r\n pTaskDataArray = [pTaskPkg];\r\n }else\r\n {\r\n pTaskDataArray = pTaskPkg; \r\n }\r\n for (let l=0;l -1) {\n\t\t\t\t\t\t \n scope.inputArray.layout.splice(index, 1);\n\t\t\t\t\t\t \n }\n\n }\n \n scope.ClaimSelected = function(){\n \n \n var lang=$rootScope.globals.currentUser.lang;\n TaskDataService.ExecuteTaskAction(scope.selectedTask,0,'claim',lang).then(function(data) {\n \n \n \n //refresh liste task-ova za claim\n scope.ExecuteAllList(scope.fd.search.taskListType,1,true,data.data.msg);\n \n },function(error){\n \n \n MessagingService.addMessage(error.msg,'error');\n });\n } \n \n scope.ExecuteAllList = function(type,filter,afterClaim,msgAfter){\n \n var lang=$rootScope.globals.currentUser.lang;\n \n TaskDataService.getInitiatedTasks(type,filter).then(function(data) {\n \n scope.gridOptions.data = data.data.results;\n if (afterClaim)\n {\n MessagingService.addMessage(msgAfter,'success');\n \n }\n },function(error){\n \n MessagingService.addMessage(error.msg,'error');\n });\n }\n \n \n \n scope.ExecuteAllListPaginated = function(type,filter,afterClaim,msgAfter,urlNext,urlPrev,newPage,pageSize){\n \n var lang=$rootScope.globals.currentUser.lang;\n \n if (Math.ceil(scope.totalCount/pageSize)=0) { \r\n $scope.fd.localVars.widgetState = valueState.subject.getState;\r\n $scope.fd.localVars.resourceRecordId = $scope.fd.localVars.widgetState.resourceRecordId;\r\n $scope.fd.localVars.loadFromState=true;\r\n } else {\r\n $scope.fd.localVars.widgetState={'resourceId':$scope.fd.Related,'resourceRecordId':0};\r\n }\r\n \r\n let value_changed = function(data){\r\n valueState.subject.setStateChanges = data;\r\n valueState.subject.notifyObservers(\"valueChanged\");\r\n };\r\n \r\n let action_value_changed = $scope.ksm.addAction(valueStateName,\"valueChanged\",value_changed);\r\n \r\n let update_record = function(data){\r\n \r\n let state = valueState.subject.getStateChanges\r\n if (state==undefined) valueState.subject.setStateChanges = data\r\n\r\n if ($scope.fd.Parameters.flowActions?.length>0)\r\n {\r\n for (let i=0;i<$scope.fd.Parameters.flowActions?.length;i++)\r\n {\r\n let condition={}\r\n let values={}\r\n if (!$scope.fd.Parameters.flowActions[i].NoCondition)\r\n {\r\n condition = JSON.parse($scope.fd.Parameters.flowActions[i].Condition)\r\n }\r\n \r\n values = JSON.parse($scope.fd.Parameters.flowActions[i].Values)\r\n \r\n if (UtilityService.check_condition(condition?.operator,condition?.value,$scope.formData[$scope.fd.UuidRef][0][condition?.field]) || $scope.fd.Parameters.flowActions[i].NoCondition)\r\n {\r\n for ( const property in values ) {\r\n $scope.formData[$scope.fd.UuidRef][0][property] = values[property]\r\n }\r\n\r\n $scope.fd.localVars.UpdateResourceRecord()\r\n }\r\n \r\n }\r\n }else $scope.fd.localVars.UpdateResourceRecord()\r\n \r\n //valueState.subject.notifyObservers(\"updateResourceRecord\");\r\n };\r\n \r\n let action_update_record = $scope.ksm.addAction(valueStateName,\"updateResourceRecord\",update_record);\r\n \r\n \r\n let apply_value = function(data)\r\n {\r\n let do_refresh=false;\r\n if (data!=undefined)\r\n {\r\n \r\n if (typeof data ==='number') $scope.fd.localVars.resourceRecordId= data;\r\n else if (Array.isArray(data))\r\n {\r\n if (data.length>0)\r\n {\r\n if ($scope.fd.localVars.TablePrefix+'_id' in data)\r\n {\r\n $scope.fd.localVars.resourceRecordId= data[0][$scope.fd.localVars.TablePrefix+'_id']\r\n }else $scope.fd.localVars.resourceRecordId= data[0].id\r\n\r\n }\r\n }else\r\n {\r\n if ($scope.fd.localVars.TablePrefix+'_id' in data)\r\n {\r\n $scope.fd.localVars.resourceRecordId= data[$scope.fd.localVars.TablePrefix+'_id']\r\n }else $scope.fd.localVars.resourceRecordId= data.id\r\n \r\n }\r\n do_refresh = true;\r\n \r\n }\r\n //get selectedRecord\r\n if ($scope.fd.localVars.resourceRecordId == null) $scope.fd.localVars.resourceRecordId=0;\r\n \r\n if ($scope.fd.localVars.resourceRecordId>0 && do_refresh) $scope.fd.localVars.GetRecordForUpdate($scope.fd.ParentDatasetDefId,$scope.fd.localVars.resourceRecordId)\r\n \r\n \r\n };\r\n \r\n \r\n if ($scope.fd.Parameters==undefined) $scope.fd.Parameters={};\r\n \r\n let dependent_field,subscribedSubject,subject ,observer , val\r\n dependent_field = \"Field\"+$scope.fd.UuidRef\r\n /*\r\n if ($scope.fd.Parameters.RefreshOnIdChange)\r\n {\r\n \r\n //find \r\n //subscribe observer\r\n \r\n subscribedSubject = \"resourceidValueStateName\"+$scope.fd.Parameters.ResourceIdItemId+$scope.resourceDefinition.transaction_id;\r\n subject = $scope.ksm.addSubject(subscribedSubject,null); \r\n observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",apply_value);\r\n val = $scope.ksm.getState(subscribedSubject);\r\n if ($scope.fd.localVars.TablePrefix+'_id' in val) $scope.fd.localVars.resourceRecordId= val.state[$scope.fd.localVars.TablePrefix+'_id']\r\n else $scope.fd.localVars.resourceRecordId= val.id\r\n \r\n //get selectedRecord\r\n if ($scope.fd.localVars.resourceRecordId == null) $scope.fd.localVars.resourceRecordId=0;\r\n \r\n if ($scope.fd.localVars.resourceRecordId>0) $scope.fd.localVars.GetRecordForUpdate($scope.fd.ParentDatasetDefId,$scope.fd.localVars.resourceRecordId);\r\n }\r\n */\r\n\r\n $scope.fd.localVars.showProperties=function(datasetMapperType,showPropertiesRight)\r\n {\r\n \r\n if ($scope.fd.localVars.datasetMapperType==undefined)\r\n {\r\n $scope.fd.localVars.datasetMapperType = datasetMapperType;\r\n }else\r\n {\r\n if ($scope.fd.localVars.datasetMapperType==0 || $scope.fd.localVars.datasetMapperType!=datasetMapperType) \r\n $scope.fd.localVars.datasetMapperType = datasetMapperType;\r\n else \r\n $scope.fd.localVars.datasetMapperType=0;\r\n }\r\n if (showPropertiesRight) $scope.gsrvc.setFieldProperties($scope.fd);\r\n \r\n };\r\n \r\n\r\n $scope.fd.localVars.addAction=function()\r\n {\r\n if ($scope.fd.Parameters.flowActions==undefined) $scope.fd.Parameters.flowActions=[]\r\n $scope.fd.Parameters.flowActions.push({}) \r\n }\r\n\r\n $scope.fd.localVars.insertAction=function(index)\r\n {\r\n if ($scope.fd.Parameters.flowActions==undefined) $scope.fd.Parameters.flowActions=[]\r\n $scope.fd.Parameters.flowActions.splice(index,0,{}) \r\n }\r\n $scope.fd.localVars.delAction=function(index)\r\n {\r\n if ($scope.fd.Parameters.flowActions==undefined) $scope.fd.Parameters.flowActions=[]\r\n if ($scope.fd.Parameters.flowActions.length>index) $scope.fd.Parameters.flowActions.splice(index,1) \r\n } \r\n $scope.fd.localVars.ExtractIdFromRecord=function(record){\r\n\r\n let record_id\r\n\r\n if (record!==undefined)\r\n { \r\n if (Array.isArray(record) && record.length>0)\r\n {\r\n if ($scope.fd.localVars.TablePrefix+'_id' in record[0])\r\n {\r\n record_id=record[0][$scope.fd.localVars.TablePrefix+'_id']\r\n \r\n }else record_id = record[0].id\r\n\r\n }else{\r\n if ($scope.fd.localVars.TablePrefix+'_id' in record)\r\n {\r\n record_id = record[$scope.fd.localVars.TablePrefix+'_id']\r\n \r\n }else record_id = record.id\r\n\r\n }\r\n }else record_id = null\r\n\r\n return record_id \r\n }\r\n\r\n $scope.fd.localVars.ProcessAuditInfo = function(record)\r\n {\r\n\r\n $scope.fd.localVars.CreatedByLabel = $scope.fd.ParametersLang.CreatedByTemplate.replace('{{user}}',record[$scope.fd.localVars.TablePrefix+'_CreatedBy.name'])\r\n $scope.fd.localVars.CreatedByLabel = $scope.fd.localVars.CreatedByLabel.replace('{{date}}',new Date(record[$scope.fd.localVars.TablePrefix+'_CreatedDateTime']).toLocaleDateString())\r\n $scope.fd.localVars.CreatedByLabel = $scope.fd.localVars.CreatedByLabel.replace('{{time}}',new Date(record[$scope.fd.localVars.TablePrefix+'_CreatedDateTime']).toLocaleTimeString())\r\n if (record[$scope.fd.localVars.TablePrefix+'_ChangedBy.name']!==null)\r\n {\r\n $scope.fd.localVars.ChangedByLabel = $scope.fd.ParametersLang.ChangedByTemplate.replace('{{user}}',record[$scope.fd.localVars.TablePrefix+'_ChangedBy.name'])\r\n $scope.fd.localVars.ChangedByLabel = $scope.fd.localVars.ChangedByLabel.replace('{{date}}',new Date(record[$scope.fd.localVars.TablePrefix+'_ChangedDateTime']).toLocaleDateString())\r\n $scope.fd.localVars.ChangedByLabel = $scope.fd.localVars.ChangedByLabel.replace('{{time}}',new Date(record[$scope.fd.localVars.TablePrefix+'_ChangedDateTime']).toLocaleTimeString())\r\n $scope.fd.localVars.HasChangedBy=true\r\n } \r\n }\r\n\r\n $scope.fd.localVars.UpdateResourceRecord = function(datasetDefId,datasetRecordId){\r\n \r\n if (datasetRecordId===undefined) datasetRecordId=$scope.fd.localVars.resourceRecordId\r\n if (datasetDefId===undefined) datasetDefId=$scope.fd.ParentDatasetDefId\r\n let resource_id = $scope.resourceDefinition.pageId\r\n let rversion = $scope.resourceDefinition.ExeVersion\r\n\r\n ResourcesDataService.updateResourceRecord(resource_id,$scope.fd.UuidRef,$scope.formData[$scope.fd.UuidRef][0],rversion).then(function(data) {\r\n\r\n\r\n\r\n let response = data.data\r\n let rmsg = response.ResponseMsg\r\n if (!rmsg) rmsg=\"Record updated successfuly!\"\r\n MessagingService.addMessage(rmsg,'success');\r\n\r\n $scope.fd.localVars.resourceRecordId = $scope.fd.localVars.ExtractIdFromRecord(response.record)\r\n //$scope.formData[$scope.fd.UuidRef][0] = response.record\r\n WidgetDataExchangeService.setData({DEI: [{'name':'resourceLink','value':[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:$scope.fd.localVars.resourceRecordId}]}],\r\n actions: [{name:'PrepareData',status:false}],\r\n\r\n name: 'updateResourceWidget',widgetId: $scope.fd.UuidRef,task_initiate_id:$scope.taskInitiateId,task_execute_id:$scope.taskExecuteId,\r\n\r\n taskId: $scope.lTaskId,resource_id:$scope.resourceDefinition.page_state_id,resourceDefId : $scope.fd.Related, output:out_fields});\r\n \r\n valueState.subject.notifyObservers(\"updateResourceRecord\");\r\n $scope.ksm.executeAction(valueStateName,\"valueChanged\", {datasetDefId:$scope.fd.Related,recordId:$scope.fd.localVars.resourceRecordId,record:$scope.formData[$scope.fd.UuidRef][0]});\r\n\r\n\r\n\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.ksm.executeAction(valueStateName,\"valueChanged\", {error:true});\r\n \r\n });\r\n } \r\n\r\n $scope.fd.localVars.GetRecordForUpdate = function(datasetDefId,datasetRecordId){\r\n\r\n if (datasetRecordId===undefined) datasetRecordId=0\r\n if (datasetDefId===undefined) datasetDefId=0\r\n $scope.fd.localVars.resourceRecordId = datasetRecordId\r\n $scope.fd.ParentDatasetDefId = datasetDefId\r\n if ($scope.fd.ParentDatasetDefId==undefined || $scope.fd.ParentDatasetDefId==0) \r\n {\r\n $scope.fd.ParentDatasetDefId=$scope.fd.Related\r\n datasetDefId=$scope.fd.ParentDatasetDefId\r\n }\r\n if ($scope.resourceDefinition.pageId==undefined) $scope.resourceDefinition.pageId=0\r\n\r\n let pageid = $scope.resourceDefinition.pageId\r\n let rinstance = $scope.resourceDefinition.page_instance_id\r\n let prev_resource_id = $scope.taskExecuteId\r\n if ($scope.fd.PopulateType.toString().substr(0,1)=='3')\r\n {\r\n //pageid = $scope.resourceDefinition.prev_page_id\r\n prev_resource_id = $scope.resourceDefinition.prev_page_instance_id\r\n \r\n }\r\n if (prev_resource_id==undefined) prev_resource_id=0\r\n\r\n TaskDataService.GetTaskUpdateResource($scope.fd.UuidRef,pageid,$scope.taskId,prev_resource_id,rinstance,$scope.fd.localVars.formType,datasetDefId,datasetRecordId,$scope.fd.Parameters.PublishedResourceVersion).then(function(data) {\r\n\r\n \r\n //TaskDataService.GetTaskUpdateResource($scope.fd.UuidRef,$scope.taskId,$scope.taskExecuteId,$scope.fd.localVars.formType,datasetDefId,datasetRecordId).then(function(data) {\r\n\r\n let dataset_record\r\n if (Array.isArray(data.data.data))\r\n {\r\n if (data.data.length>0) dataset_record = data.data.data[0]\r\n else dataset_record={}\r\n }\r\n else dataset_record = data.data.data\r\n $scope.formData[$scope.fd.UuidRef][0] = dataset_record\r\n $scope.fd.localVars.resourceRecordId = $scope.fd.localVars.ExtractIdFromRecord(dataset_record)\r\n WidgetDataExchangeService.setData({DEI: [{'name':'resourceLink','value':[{name:'resourceId',value:datasetDefId},{name:'resourceRecordId',value:$scope.fd.localVars.resourceRecordId}]}],\r\n actions: [{name:'PrepareData',status:false}],\r\n\r\n name: 'updateResourceWidget',widgetId: $scope.fd.UuidRef,task_initiate_id:$scope.taskInitiateId,task_execute_id:$scope.taskExecuteId,\r\n\r\n taskId: $scope.lTaskId,resource_id:$scope.resourceDefinition.page_state_id,resourceDefId : $scope.fd.Related, output:out_fields});\r\n \r\n\r\n $scope.ksm.executeAction(valueStateName,\"valueChanged\", {datasetDefId:datasetDefId,recordId:$scope.fd.localVars.resourceRecordId,record:$scope.formData[$scope.fd.UuidRef][0]});\r\n\r\n if ($scope.fd.Parameters.ShowAuditInfo) $scope.fd.localVars.ProcessAuditInfo(dataset_record)\r\n \r\n $scope.fd.localVars.dataDownloaded = true\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n } \r\n \r\n \r\n $scope.fd.localVars.GetRecordFilter = function(filter_data){\r\n\r\n $scope.fd.localVars.formLoaded = false\r\n ResourcesDataService.getDatasetData($scope.fd.Parameters.PublishedResourceId,filter_data).then(function(data) {\r\n\r\n let dataset_record\r\n if (Array.isArray(data.data))\r\n {\r\n if (data.data.length>0) dataset_record = data.data[0]\r\n else dataset_record={}\r\n }\r\n else dataset_record = data.data\r\n $scope.formData[$scope.fd.UuidRef][0] = dataset_record\r\n $scope.fd.localVars.formLoaded = true\r\n\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.fd.localVars.formLoaded = true\r\n });\r\n }\r\n \r\n \r\n \r\n /* \r\n $scope.fd.localVars.setReadOnly = function(form,readOnly)\r\n {\r\n if (form!=undefined){\r\n \t\t\t\t\tfor(var i=0;i=0){\r\n $scope.fd.localVars.selectedResourceItem.name = $scope.fd.localVars.publishedResourceList[pos].name;\r\n $scope.fd.localVars.selectedDataset = $scope.fd.localVars.publishedResourceList[pos]\r\n }\r\n $scope.fd.localVars.selectedResourceItem.id = id;\r\n $scope.fd.localVars.selectedResourceItem.name_confirmed = $scope.fd.localVars.selectedResourceItem.name +' ('+$scope.fd.localVars.selectedResourceItem.id +')'\r\n $scope.fd.localVars.selectedResourceItem_c=$scope.fd.localVars.selectedResourceItem;\r\n $scope.fd.localVars.dashboard.widgets.layout = $scope.fd.FormDef\r\n $scope.fd.localVars.dashboard.searchForm.layout=angular.copy($scope.fd.FormDef)\r\n $scope.fd.localVars.formLoaded=true;\r\n\r\n }else{\r\n pos = $scope.fd.localVars.publishedResourceList.map(function(e) { return e.id; }).indexOf(id);\r\n \r\n if (pos>=0){\r\n $scope.fd.localVars.selectedResourceItem = $scope.fd.localVars.publishedResourceList[pos]\r\n ResourcesDataService.GetPublishedResourceById(id).then(function (data) {\r\n\r\n $scope.fd.localVars.selectedResourceItem.Form = data.data.Form\r\n $scope.fd.localVars.selectedDataset = $scope.fd.localVars.publishedResourceList[pos];\r\n $scope.fd.localVars.dashboard.widgets.layout = data.data.Form\r\n $scope.fd.localVars.selectedResourceItem_c=$scope.fd.localVars.selectedResourceItem\r\n $scope.fd.localVars.selectedResourceItem.name_confirmed = $scope.fd.localVars.selectedResourceItem.name +' ('+$scope.fd.localVars.selectedResourceItem.id +')'\r\n if ($scope.fd.localVars.selectedResourceItem_c!==undefined)\r\n {\r\n $scope.fd.Parameters.PublishedResourceId=$scope.fd.localVars.selectedResourceItem_c.id;\r\n $scope.fd.Parameters.PublishedResourceVersion=$scope.fd.localVars.selectedResourceItem_c.Version;\r\n $scope.fd.Related=$scope.fd.localVars.selectedResourceItem_c.ResourceDefUid; \r\n $scope.fd.localVars.dashboard.searchForm.layout=angular.copy($scope.fd.localVars.selectedResourceItem_c.Form)\r\n $scope.fd.localVars.freshForm=angular.copy($scope.fd.localVars.selectedResourceItem_c.Form)\r\n $scope.fd.Related = $scope.fd.localVars.publishedResourceList[pos].ResourceDefUid\r\n\r\n }else MessagingService.addMessage('Error - published dataset not selected','error')\r\n \r\n $scope.fd.FormDef = $scope.fd.localVars.dashboard.widgets.layout\r\n $scope.fd.localVars.formLoaded=true;\r\n\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n\r\n }\r\n }\r\n \r\n \r\n}\r\n\r\n if ($scope.fd.localVars.publishedResourceList==undefined) $scope.fd.localVars.publishedResourceList=[];\r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n ResourcesDataService.GetPublishedResourcesByType('dataset','form').then(\r\n function (data) { \r\n $scope.fd.localVars.publishedResourceList = data.data;\r\n $scope.fd.localVars.formLoaded = true\r\n //debugger //GetPublishedResourcesByType \r\n //$scope.fd.localVars.dashboard.widgets.layout = JSON.parse(data.data[0].Form)\r\n \r\n if ($scope.fd.Parameters.PublishedResourceId!=null) \r\n $scope.fd.localVars.setSelectedResource($scope.fd.Parameters.PublishedResourceId,true);\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n\r\n \r\n $scope.fd.localVars.setField = function(form,name,value,msg)\r\n {\r\n \t\t\t\tTaskDataService.setField(form,name,value);\r\n if (msg) MessagingService.addMessage(msg,'info');\r\n }; \r\n \r\n \r\n let get_resource_record = function(data)\r\n {\r\n let rec = data.state?.itemValue?.val?.id\r\n\r\n if (!rec) rec = data.state\r\n\r\n if (rec) $scope.fd.localVars.GetRecordForUpdate($scope.fd.Related,rec)\r\n }\r\n\r\n $scope.fd.localVars.getThisResourceWidget = function()\r\n {\r\n\r\n //register here to ksm\r\n let dependent_field = \"Field\"+$scope.fd.UuidRef;\r\n let subscribedSubject =$scope.resourceDefinition.page_state_id+'-'+$scope.fd.SrcWidgetId\r\n let subject = $scope.ksm.addSubject(subscribedSubject,null); \r\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",get_resource_record);\r\n let val = $scope.ksm.getState(subscribedSubject)\r\n if (val.status=='ok' && val.state) get_resource_record(val.state)\r\n }\r\n\r\n $scope.fd.localVars.getPreviousResourceWidget = function(linkType)\r\n {\r\n var pTaskData;\r\n\r\n let pageState = $scope.ksm.getState($scope.resourceDefinition.page_state_id)\r\n let prev_task_execute_id = pageState.state.previousTask?.task_execute_id\r\n let prev_page_id = $scope.resourceDefinition.prev_page_id\r\n let pTaskDataRet\r\n //pTaskDataRet = WidgetDataExchangeService.getPrevTaskData(prev_task_execute_id);\r\n pTaskDataRet = WidgetDataExchangeService.getPrevResourceData(prev_task_execute_id,$scope.resourceDefinition.prev_page_state_id,prev_page_id);\r\n\r\n if (Array.isArray(pTaskDataRet) && pTaskDataRet.length>0)\r\n { \r\n var datasetId=0,datasetRecordId=0;\r\n for (let k=0;k0) datasetRecordId=pTaskData.DEI[i].value[k].value;\r\n }\r\n }\r\n \r\n \r\n }\r\n \r\n \r\n }\r\n \r\n }\r\n \r\n }\r\n }\r\n }\r\n }\r\n }\r\n return {'datasetId':datasetId,'datasetRecordId':datasetRecordId};\r\n \r\n };\r\n \r\n \r\n if (!$scope.resourceDefinition.form_definition && $scope.fd.PopulateMethod=='A' && ($scope.fd.PopulateType.toString().substr(0,1)=='3' || $scope.fd.PopulateType.toString().substr(0,1)=='4')) \r\n\r\n {\r\n $scope.fd.localVars.previousTaskData=$scope.fd.localVars.getPreviousResourceWidget();\r\n\r\n if ($scope.fd.localVars.previousTaskData===undefined)\r\n {\r\n $scope.fd.localVars.previousTaskData = {datasetRecordId:0,datasetId:$scope.fd.Related} \r\n }\r\n\r\n if ($scope.fd.Related!=null && $scope.fd.Related!=undefined) $scope.fd.localVars.GetRecordForUpdate($scope.fd.localVars.previousTaskData?.datasetId,$scope.fd.localVars.previousTaskData?.datasetRecordId)\r\n\r\n }else if ($scope.fd.PopulateType.toString().substr(0,1)=='2')\r\n {\r\n $scope.fd.localVars.getThisResourceWidget()\r\n }\r\n \r\n if (!$scope.resourceDefinition.form_definition && $scope.fd.PopulateMethod=='A' && $scope.fd.PopulateType.toString().substr(0,1)=='2') \r\n\r\n {\r\n\r\n //subscribe to value_changed event\r\n let widgetIdFrom = $scope.resourceDefinition.page_state_id+'-'+$scope.fd.SrcWidgetId\r\n observer = $scope.ksm.subscribe(widgetIdFrom,dependent_field,\"valueChanged\",apply_value);\r\n let st = $scope.ksm.getState(widgetIdFrom)\r\n\r\n if (st.status=='ok')\r\n {\r\n val = st.state?.record\r\n if (val!=undefined)\r\n {\r\n if ($scope.fd.localVars.TablePrefix+'_id' in val) $scope.fd.localVars.resourceRecordId= val[$scope.fd.localVars.TablePrefix+'_id']\r\n else $scope.fd.localVars.resourceRecordId= val.id\r\n \r\n if ($scope.fd.localVars.resourceRecordId == null) $scope.fd.localVars.resourceRecordId=0;\r\n \r\n if ($scope.fd.localVars.resourceRecordId>0) $scope.fd.localVars.GetRecordForUpdate($scope.fd.ParentDatasetDefId,$scope.fd.localVars.resourceRecordId);\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n $scope.$on('InitiateTaskPostProcess'+$scope.resourceDefinition.transaction_id,function(event, data){\r\n $scope.fd.localVars.processTaskReturn(data)\r\n \r\n });\r\n \r\n $scope.$on('ExecuteTaskPostProcess'+$scope.resourceDefinition.task_execute_id,function(event, data){\r\n \r\n $scope.fd.localVars.processTaskReturn(data)\r\n \r\n });\r\n\r\n $scope.$on('ProcessWidgetPostProcess'+$scope.resourceDefinition.page_state_id,function(event, data){\r\n \r\n $scope.fd.localVars.processTaskReturn(data)\r\n \r\n });\r\n \r\n \r\n let template;\r\n if ($scope.formDefinition) template = $templateCache.get('ktdirectivetemplates/ktTaskUpdateResource.html');\r\n else template = $templateCache.get('ktdirectivetemplates/ktTaskUpdateResourceExe.html');\r\n \r\n $element.append($compile(template)($scope)); \r\n \r\n \r\n}];\r\n return {\r\n restrict: 'A',\r\n \r\n controller: controller,\r\n link: function (scope, elem, attrs) {\r\n\r\n \r\n\r\n let widgetState= scope.ksm.addSubject(scope.resourceDefinition.page_state_id+'-'+scope.fd.UuidRef,scope.fd.UuidRef);\r\n let widgetStateName = widgetState.subject.name;\r\n \r\n let clear_form = function()\r\n {\r\n //scope.fd.localVars.dashboard.widgets.layout=[]\r\n scope.fd.localVars.formLoaded=false\r\n \r\n $timeout(function(){\r\n scope.fd.localVars.formLoaded=true;\r\n //scope.fd.localVars.dashboard.widgets.layout = angular.copy(scope.fd.localVars.freshForm);\r\n scope.formData[scope.fd.UuidRef]= [{}]\r\n widgetState.subject.setStateChanges = scope.fd.UuidRef\r\n widgetState.subject.notifyObservers(\"clearform\");\r\n }) \r\n \r\n \r\n \r\n \r\n } \r\n let action_form_cleared = scope.ksm.addAction(widgetStateName,\"clearform\",clear_form);\r\n\r\n\r\n scope.fd.localVars.resourceData = {};\r\n \r\n scope.fd.localVars.prepareResourceData = function(resourceRecordId){\r\n \r\n \r\n scope.fd.itemValue = ResourcesDataService.prepareResourceWidgetData(scope.fd.localVars.dashboard.widgets.layout,resourceRecordId);\r\n \r\n }\r\n \r\n \r\n scope.fd.localVars.processWidgetDependencies = function() { //----- ktUploader -----\r\n \r\n if (scope.fd.tItemValue!=undefined) \r\n for (var i=0;i< scope.fd.tItemValue.length;i++) {\r\n var linkedWidgetId=scope.fd.tItemValue[i].widgetId; // linkedWidgetId= WidgetDataExchangeService.getLocalWidgetId(linkedWidgetId);//MIGOR - moram dobiti localwidgetId od vezanog WidgetId \r\n var linkedItem = 'resourceLink' //var linkedItem = scope.fd.tItemValue[i].name;\r\n \r\n if (linkedWidgetId!=undefined && linkedWidgetId!=null ) {\r\n for (var j=0;j0 && $scope.fd.PresentationId==0 && data[$scope.fd.LocalId]!==undefined) $scope.fd.PresentationId = data[$scope.fd.LocalId];\n \n let observerPid2 = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid2,\"formSaved\",update_presentation_id2);\n //unsubscribe here later after implementing unsubscribe - ToDo\n }\n \n \n if ($scope.fd.PresentationId===null || $scope.fd.PresentationId===0)\n {\n let observerPid = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid,\"formSaved\",update_presentation_id);\n } else{\n dependent_field_pid2 = $scope.fd.PresentationId\n let observerPid2 = $scope.ksm.subscribe(subscribedSubjectPid,dependent_field_pid2,\"formSaved\",update_presentation_id2);\n }\n \n if ($scope.fd.Parameters==undefined) $scope.fd.Parameters={};\n \n \n let valueState= $scope.ksm.addSubject($scope.fd.ElementType+\"ValueStateName\"+$scope.fd.PresentationId+$scope.resourceDefinition.transaction_id,$scope.itemValue.val);\n let valueStateName = valueState.subject.name;\n \n let value_changed = function(data)\n {\n valueState.subject.setStateChanges = data;\n valueState.subject.notifyObservers(\"valueChanged\");\n };\n \n let action_value_changed = $scope.ksm.addAction(valueStateName,\"valueChanged\",value_changed);\n \n let apply_value = function(data)\n {\n $scope.itemValue.val = data;\n }; \n \n if ( $scope.fd.Parameters.DependentFieldId!=undefined && $scope.fd.Parameters.DependentFieldId!=null && $scope.fd.Parameters.DependentFieldId!=\"\" )\n {\n let dependent_field = \"Field\"+$scope.fd.Parameters.DependentFieldId;\n let subscribedSubject = $scope.fd.Parameters.DependentFieldType+\"ValueStateName\"+$scope.fd.Parameters.DependentFieldId;\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",apply_value);\n }\n \n \n $scope.localVars.showProperties = function(datasetMapperType) {\n \n // if ($scope.localVars.datasetMapperType==undefined)\n // {\n // $scope.localVars.datasetMapperType = datasetMapperType;\n // }else\n // {\n // if ($scope.localVars.datasetMapperType==0 || $scope.localVars.datasetMapperType!=datasetMapperType) $scope.localVars.datasetMapperType = datasetMapperType;\n // else $scope.localVars.datasetMapperType=0;\n // } \n \n $scope.localVars.datasetMapperType = (datasetMapperType == $scope.localVars.datasetMapperType) ? 0: datasetMapperType;\n \n };\n \n $scope.localVars.gridOptionsResourceData.onRegisterApi = function (gridApi) {\n //set gridApi on scope\n $scope.localVars.gridApi = gridApi;\n if ($scope.restoreGridState) $scope.localVars.gridApi.saveState.restore($scope,$scope.fd.GridState);\n gridApi.selection.on.rowSelectionChanged($scope,function(row){\n\n $scope.localVars.datasetRecordSelected=row.isSelected;\n if ($scope.localVars.datasetRecordSelected)\n {\n if (row.entity.id!=$scope.localVars.selectedDatasetRecordId)\n {\n $scope.localVars.selectedDatasetRecordId = row.entity.id;\n }\n }else\n {\n $scope.localVars.selectedDatasetRecordId = 0;\n \n }\n $scope.localVars.gridOptionsRelated.columnDefs=[];\n $scope.localVars.gridOptionsRelated.data=[];\n $scope.localVars.showGrid=false;\n $scope.localVars.prevTaskPackage ={resourceDefId:$scope.fd.Related,records:gridApi.selection.getSelectedRows()}\n \n \n $scope.localVars.selectedItems = gridApi.selection.getSelectedRows();\n \n //$rootScope.$broadcast('EventresourceLink'+$scope.fd.PresentationId,$scope.selectedDatasetRecordId);\n WidgetDataExchangeService.setData({\n DEI: [{name:'resourceLinkDatasetList',value:[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:$scope.localVars.selectedDatasetRecordId}\n ,{name:'resourceRecordIds',value:gridApi.selection.getSelectedRows()},{name:'resourceRecordsAll',value:$scope.localVars.gridOptionsResourceData.data}]}],widgetId: $scope.fd.PresentationId,task_execute_id:$scope.taskExecuteId});\n \n \n \n });\n \n //external pagination\n /*\n gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {\n paginationOptions.pageNumber = newPage;\n paginationOptions.pageSize = pageSize;\n $scope.localVars.getResourceDataPaginated($scope.localVars.nextPage,$scope.localVars.previousPage,newPage,pageSize);\n });\n */\n gridApi.selection.on.rowSelectionChangedBatch($scope,function(row){\n\n $scope.localVars.prevTaskPackage ={resourceDefId:$scope.fd.Related,records:gridApi.selection.getSelectedRows()}\n \n });\n }\n \n \n let process_form_change = function(data)\n { \n $scope.fd.Search = $scope.formData[$scope.fd.PresentationId];\n if ($scope.fd.Parameters.PresentationType=='table') $scope.localVars.getResourceColumns(true);\n else if ($scope.fd.Parameters.PresentationType=='dropdown') $scope.localVars.getDatasetDataList($scope.fd.Parameters.ClientSideFilter,true);\n else $scope.localVars.getResourceDataPaginated($scope.localVars.nextPage,$scope.localVars.previousPage,1,$scope.localVars.pageSize); \n \n };\n \n \n //subscribe to events - initially only refresh data\n \n let dependent_field2 = \"Field\"+$scope.fd.PresentationId;\n let subscribedSubject2 = \"task\"+$scope.resourceDefinition.transaction_id;\n let observer2 = $scope.ksm.subscribe(subscribedSubject2,dependent_field2,$scope.fd.Parameters.EventName,process_form_change);\n\n \n $scope.localVars.ProcessSearchForm=function (form){\n \n if (form!=undefined){\n for(var i=0;i=0){\n $scope.localVars.selectedResourceItem.id = $scope.localVars.datasetList[pos].id;\n $scope.localVars.selectedResourceItem.name = $scope.localVars.datasetList[pos].name;\n $scope.localVars.selectedDataset = $scope.localVars.datasetList[pos];\n $scope.localVars.selectedResourceItem.name_confirmed = $scope.localVars.selectedResourceItem.name +' ('+$scope.localVars.selectedResourceItem.id +')'\n $scope.localVars.selectedResourceItem_c=$scope.localVars.selectedResourceItem;\n }\n\t\t\t\t\t};\n \n // POPUNI LISTU DEFINICIJA OD RESURSA (RESOURCES LIST)\n $scope.localVars.getDatasets = function() {\n\t\t\t\t\t\t\n if ($scope.localVars.datasetList==undefined) $scope.localVars.datasetList=[];\n \n var lang=$rootScope.globals.currentUser.lang;\n ResourcesDataService.getResourceDefListByType(lang,'dataset').then(\n \n function(data) {\n\t\t\t\t\t\t\t\t\t\t\n $scope.localVars.datasetList = data.data;\n if ($scope.fd.Related!=null)\n {\n $scope.localVars.setSelectedDataset($scope.fd.Related);\n } \t\t \n },function(error){ \n MessagingService.addMessage(error.msg,'error');\n });\n\t};\n \n $scope.localVars.GetDatasetData=function(data)\n\n {\n fromWidget = data.widgetId;\n var allProcessed=true;\n var pos = $scope.localVars.childWidgets.map(function(e) { return e.widgetId; }).indexOf(fromWidget);\n\n for (var i=0;i<$scope.localVars.childWidgets.length;i++)\n {\n \n if ($scope.localVars.childWidgets[i].widgetId == fromWidget) $scope.localVars.childWidgets[i].processed = true;\n if (!$scope.localVars.childWidgets[i].processed) allProcessed = $scope.localVars.childWidgets[i].processed;\n }\n\n if($scope.fd.AutoSearch && allProcessed && $scope.localVars.SearchFormProcessed) {\n $scope.localVars.selectedResource=$scope.fd.Related;\n if ($scope.fd.Parameters!=null && $scope.fd.Parameters!=undefined)\n {\n if ($scope.fd.Parameters.PresentationType=='table') $scope.localVars.getResourceColumns(true);\n else if ($scope.fd.Parameters.PresentationType=='dropdown') $scope.localVars.getDatasetDataList($scope.fd.Parameters.ClientSideFilter,false);\n else $scope.localVars.getResourceDataPaginated($scope.localVars.nextPage,$scope.localVars.previousPage,1,$scope.localVars.pageSize); \n \n } \n }\n };\n \n if ($scope.localVars!=undefined) $scope.localVars.childWidgets = [];\n else $scope.localVars = {childWidgets : []};\n var fromWidget=0;\n\n let search_form_ready = function(data)\n {\n $scope.localVars.GetDatasetData(data); \n };\n \n let action_search_form_ready = $scope.ksm.addAction(valueStateName,\"SearchFormReady\"+$scope.taskExecuteId+$scope.resourceDefinition.transaction_id,search_form_ready);\n \n \n \n //**********************************************************\n\t// GET DATASET RELATED RECORDS\n\t//********************************************************** \n $scope.localVars.getDatasetRelatedRecords = function (relatedDatasetId,recordId,modelId) {\n \n \n var lang = $rootScope.globals.currentUser.lang;\n \n ResourcesDataService.getResourceDataRelated($scope.fd.Related,recordId,relatedDatasetId,0,modelId,lang).then(\n function(data) { \n $scope.localVars.gridOptionsRelated.data = data.data;\n $scope.localVars.gridOptionsRelated.columnDefs = data.columnsDef;\n $scope.localVars.showGrid=true;\n },function(error){\n MessagingService.addMessage(error.msg,'error'); \n });\n };\n \n \n //**********************************************************\n\t// GET DATASET SINGLE RECORD\n\t//********************************************************** \n $scope.localVars.getDatasetSingleRecord = function (relatedDatasetId,recordId) {\n \n \n var lang = $rootScope.globals.currentUser.lang;\n \n ResourcesDataService.getResourceDataDirectFilter(relatedDatasetId,0,lang,{id: recordId}).then(\n \n function(data) { \n $scope.localVars.gridOptionsRelated.data = data.data;\n $scope.localVars.gridOptionsRelated.columnDefs = data.columnsDef;\n \n },function(error){\n MessagingService.addMessage(error.msg,'error'); \n });\n };\n \n $scope.$on('SearchFormReady'+$scope.taskExecuteId+$scope.fd.PresentationId,function(event, data1){\n \n $scope.localVars.GetDatasetData(data1); \n \n });\n \n $scope.localVars.getFormResource = function(){ \n var lang=$rootScope.globals.currentUser.lang;\n if ($scope.fd.PresentationId==null) {\n $scope.fd.PresentationId = 0;\n }\n \n \n ResourcesDataService.getResourceFormExtendedWithData($scope.fd.Related,$scope.taskInitiateId,$scope.taskExecuteId,$scope.fd.PopulateType,$scope.fd.ParentElementId,$scope.fd.PresentationId,$scope.prevTaskExeId,$scope.localVars.formType,$scope.localVars.widgetType,$scope.localVars.resourceRecordId,\"f\",lang).then(function(data) {\n \n $scope.localVars.resourceWidgetDefinition= data.data.resourceDefinition;\n \n $scope.localVars.selectedResourceItem_c = {'name':$scope.localVars.resourceWidgetDefinition.name,'id':$scope.fd.Related,'relatedId':$scope.fd.Related,'presentationId':$scope.fd.PresentationId,'src_type_id':$scope.fd.PopulateType,'src_type_text':$scope.localVars.src_type_text[$scope.fd.PopulateType],'parentElementId':$scope.fd.ParentElementId};\n \n $scope.fd.fItemValue=data.data.widgets;\n\n $scope.localVars.searchFormDownloaded = true;\n $scope.localVars.setField($scope.fd.fItemValue,'Required',false);\n $scope.localVars.formLoaded=true;\n //prepare search form\n $scope.localVars.ProcessSearchForm($scope.fd.fItemValue);\n $scope.localVars.SearchFormProcessed = true;\n if ($scope.localVars.childWidgets.length>0)\n {\n WidgetDataExchangeService.registerSearch({widgetId:$scope.fd.PresentationId,taskExecuteId:$scope.taskExecuteId,prevTaskExeId:$scope.prevTaskExeId,childWidgets:$scope.localVars.childWidgets});\n }\n else\n {\n $scope.ksm.executeAction(valueStateName,\"SearchFormReady\"+$scope.taskExecuteId+$scope.resourceDefinition.transaction_id, {widgetId:$scope.fd.PresentationId});\n }\n $scope.localVars.dashboard.widgets.layout = data.data.widgets;\n if ($scope.formData == undefined) $scope.formData={};\n $scope.formData[$scope.fd.PresentationId] = data.data.form_data;\n $scope.fd.Search = $scope.formData[$scope.fd.PresentationId];\n if ($scope.fd.Search==undefined) $scope.fd.Search={};\n \n },function(error){\n MessagingService.addMessage(error.msg,'error'); \n });\n \n };//getFormResource_END\n \n $scope.localVars.executeDatasetList = function(){ \n var lang=$rootScope.globals.currentUser.lang;\n if ($scope.fd.PresentationId==null) {\n $scope.fd.PresentationId = 0;\n }\n if ($scope.localVars.selectedResource==undefined) $scope.localVars.selectedResource = $scope.fd.Related;\n if ($scope.localVars.pageSize==undefined) $scope.localVars.pageSize = paginationOptions.pageSize;\n \n TaskDataService.ktTaskDatasetList($scope.fd.Related,$scope.fd.PresentationId,$scope.localVars.taskId,$scope.localVars.formType,lang).then(\n \n function(data) {\n \n $scope.localVars.resourceWidgetDefinition= data.data.resourceDefinition;\n \n $scope.localVars.gridOptionsResourceData.columnDefs = data.data.columns;\n $scope.fd.fItemValue=data.data.widgets;\n if (data.data.widgetsCard!=null)\n {\n $scope.fd.wItemValue=data.data.widgets;\n $scope.localVars.dashboardCard.widgets.layout = data.data.widgetsCard;\n }\n $scope.localVars.searchFormDownloaded = true;\n $scope.localVars.setField($scope.fd.fItemValue,'Required',false);\n $scope.localVars.formLoaded=true;\n \n $scope.localVars.dashboard.widgets.layout = data.data.widgets;\n if ($scope.formData == undefined) $scope.formData={};\n $scope.formData[$scope.fd.PresentationId] = data.data.formData;\n $scope.fd.Search = $scope.formData[$scope.fd.PresentationId];\n if ($scope.fd.Search==undefined) $scope.fd.Search={};\n \n //setup data grid or card\n $scope.localVars.gridOptionsResourceData.data = data.data.data;\n if ($scope.fd.Parameters.PresentationType=='card')\n $scope.localVars.gridOptionsResourceData.data = $scope.TransformDataForCard(data.data.data);\n $scope.localVars.restoreGridState();\n $scope.fd.initialLoad = false;\n $scope.localVars.resourceDataDownloaded = true;\n $scope.localVars.resourceDataDownloading = false;\n $scope.localVars.nextPage = data.data.data.next;\n $scope.localVars.previousPage = data.data.data.previous;\n $scope.localVars.totalCount=data.data.data.count;\n $scope.localVars.currentPage=1;\n if ($scope.localVars.totalCount>0 && $scope.localVars.currentPage==0) $scope.localVars.currentPage=1;\n $scope.localVars.numPages = Math.ceil($scope.localVars.totalCount/$scope.localVars.pageSize);\n \n $scope.localVars.gridOptionsResourceData.totalItems=$scope.localVars.totalCount;\n \n },function(error){\n MessagingService.addMessage(error.msg,'error'); \n });\n \n };//getFormResource_END\n\n \n \n $scope.localVars.getFormResourceOriginal = function(){\n var lang=$rootScope.globals.currentUser.lang;\n if ($scope.fd.PresentationId==null)\n {\n $scope.fd.PresentationId = 0;\n \n }\n ResourcesDataService.getResourceForm($scope.fd.Related,\"i\",lang).then(\n \n function(data) {\n \n $scope.localVars.resourceWidgetDefinition= data.data.resourceDefinition;\n $scope.localVars.dashboard.widgets.layout=data.data.widgets;\n $scope.localVars.selectedResourceItem_c = {'name':$scope.localVars.resourceWidgetDefinition.name,'id':$scope.fd.Related,'relatedId':$scope.fd.Related, 'presentationId':$scope.fd.PresentationId ,'src_type_id':$scope.fd.PopulateType,'src_type_text':$scope.localVars.src_type_text[$scope.fd.PopulateType],'parentElementId':$scope.fd.ParentElementId};\n \n \n $scope.fd.fItemValue=data.data.widgets;\n \n //MIGOR - bitno - DOBIO RESOURCERECORD-ID ZA BROADCAST - ADD_RESOURCE WIDGET\n WidgetDataExchangeService.setData({widgetId:$scope.fd.PresentationId, DEI: [{'name':'resourceLink','value':[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:$scope.localVars.resourceRecordId}]}]});\n\t\t\t\t\t\t\n $scope.localVars.searchFormDownloaded = true;\n $timeout(function() {\n $scope.localVars.formLoaded=true;\n });\n \n if ($scope.formData == undefined) $scope.formData={};\n $scope.formData[$scope.fd.PresentationId] = [{}];\n $scope.fd.Search = $scope.formData[$scope.fd.PresentationId];\n },\n function(error){\n MessagingService.addMessage(error.msg,'error');\n \n });\n \n };\n \n $scope.localVars.getDatasetCardLayoutOriginal = function(){\n var lang=$rootScope.globals.currentUser.lang;\n if ($scope.fd.PresentationId==null)\n {\n $scope.fd.PresentationId = 0;\n \n }\n ResourcesDataService.getResourceForm($scope.fd.Related,\"i\",lang).then(function(data) {\n \n $scope.localVars.resourceDefinitionCard= data.data.resourceDefinition;\n $scope.localVars.dashboardCard.widgets.layout=data.data.widgets;\n \n $scope.fd.wItemValue=data.data.widgets;\n \n $timeout(function() {\n $scope.localVars.cardLayoutLoaded = true;\n \n });\n \n if ($scope.formDataCard == undefined) $scope.formDataCard={};\n \n }, function(error){\n MessagingService.addMessage(error.msg,'error');\n });\n \n };\n \n \n $scope.localVars.getCardLayout = function(){ \n var lang=$rootScope.globals.currentUser.lang;\n if ($scope.fd.PresentationId==null) {\n $scope.fd.PresentationId = 0;\n }\n \n ResourcesDataService.getResourceFormExtendedWithData($scope.fd.Related,$scope.taskInitiateId,$scope.taskExecuteId,$scope.fd.PopulateType,$scope.fd.ParentElementId,$scope.fd.PresentationId,$scope.prevTaskExeId,$scope.localVars.formType,$scope.localVars.widgetType,$scope.localVars.resourceRecordId,\"w\",lang).then(function(data) {\n \n $scope.localVars.resourceDefinitionCard= data.data.resourceDefinition;\n \n $scope.fd.wItemValue=data.data.widgets;\n $scope.localVars.dashboardCard.widgets.layout = data.data.widgets;\n \n $scope.formDataCard = data.data.form_data;\n if ($scope.formDataCard == undefined) $scope.formDataCard={};\n \n $timeout(function() {\n $scope.localVars.cardLayoutLoaded = true;\n \n });\n \n },function(error){\n MessagingService.addMessage(error.msg,'error'); \n });\n \n };//getCardlayout_END\n\n $scope.localVars.selectCardItem = function(index){\n let value;\n if ($scope.localVars.selectedCardIndex!=index)\n {\n $scope.localVars.selectedCardIndex=index;\n value=$scope.localVars.gridOptionsResourceData.data[$scope.localVars.selectedCardIndex][0];\n }\n else\n {\n $scope.localVars.selectedCardIndex=null;\n value = null;\n }\n //send data to package\n WidgetDataExchangeService.setData({\n DEI: [{name:'resourceLinkDatasetList',value:[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:$scope.localVars.selectedDatasetRecordId}\n ,{name:'resourceRecordIds',value:value},{name:'resourceRecordsAll',value:$scope.localVars.gridOptionsResourceData.data}]}],widgetId: $scope.fd.PresentationId,task_execute_id:$scope.taskExecuteId});\n \n };\n \n $scope.localVars.datasetRecordSelected = false;\n $scope.localVars.selectedDatasetRecordId = 0;\n \n $scope.localVars.restoreGridState= function() {\n if ($scope.fd.GridState!=null)\n {\n if ($scope.localVars.gridApi!=undefined)\n {\n $scope.localVars.gridApi.saveState.restore($scope,$scope.fd.GridState);\n }\n else\n {\n $scope.restoreGridState=true;\n }\n }\n };\n $scope.localVars.getResourceData = function () {\n\n var lang = $rootScope.globals.currentUser.lang;\n $scope.localVars.resourceDataDownloading = true;\n if ($scope.localVars.pageSize==undefined) $scope.localVars.pageSize = paginationOptions.pageSize;\n ResourcesDataService.getResourceData($scope.localVars.selectedResource,$scope.taskId,$scope.localVars.formType,lang).then(function(data) {\n \n $scope.localVars.gridOptionsResourceData.data = data.data;\n $scope.localVars.gridOptionsResourceData.columnDefs = data.columnsDef;\n $scope.localVars.restoreGridState();\n $scope.fd.initialLoad = false;\n $scope.localVars.resourceDataDownloaded = true;\n $scope.localVars.resourceDataDownloading = false;\n \n },function(error){\n MessagingService.addMessage(error.msg,'error');\n $scope.localVars.resourceDataDownloading = false;\n });\n };\n\n //**********************************************************\n // GET FORM FIELDS\n //********************************************************** \n \n $scope.localVars.getFormFields = function(){\n \n var lang=$rootScope.globals.currentUser.lang;\n \n ResourcesDataService.getFormFields($scope.fd.Related,lang).then(function(data) {\n \n $scope.localVars.PresentationElements= data.data;\n \n },function(error){\n MessagingService.addMessage(error.msg,'error');\n \n });\n \n };\n \n \n $scope.$watch('itemValue.val',function(newValue,oldValue){\n if (newValue!=oldValue)\n {\n //send data to package\n let newValueSingle,newValueMultiple;\n if ($scope.fd.Multiline)\n {\n newValueMultiple = newValue;\n newValueSingle=\"\";\n }\n else\n {\n newValueMultiple = {};\n newValueSingle=newValue;\n }\n \n $scope.ksm.executeAction(valueStateName,\"valueChanged\", newValue);\n \n WidgetDataExchangeService.setData({\n DEI: [{name:'resourceLinkDatasetList',value:[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:newValueSingle}\n ,{name:'resourceRecordIds',value:newValueMultiple},{name:'resourceRecordsAll',value:$scope.localVars.datasetItems}]}],widgetId: $scope.fd.PresentationId,task_execute_id:$scope.taskExecuteId});\n \n }\n });\n \n \n //**********************************************************\n // GET DATASET DATA FOR DROPDOWN\n //**********************************************************\n var refresh_list_from_callback=function(data)\n {\n $scope.localVars.getDatasetDataList(true); \n }\n $scope.filterOnClient = function(items)\n {\n let temp=[];\n let search;\n if (Array.isArray($scope.fd.Search) && $scope.fd.Search.length>0) search = $scope.fd.Search[0];\n else search = $scope.fd.Search;\n for (let i=0;i0 && $scope.localVars.currentPage==0) $scope.localVars.currentPage=1;\n $scope.localVars.numPages = Math.ceil($scope.localVars.totalCount/pageSize);\n $scope.localVars.pageSize = pageSize;\n $scope.localVars.gridOptionsResourceData.totalItems=$scope.localVars.totalCount;\n \n WidgetDataExchangeService.setData({\n DEI: [{name:'resourceLinkDatasetList',value:[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:$scope.localVars.selectedDatasetRecordId}\n ,{name:'resourceRecordIds',value: null},{name:'resourceRecordsAll',value:$scope.localVars.gridOptionsResourceData.data}]}],widgetId: $scope.fd.PresentationId,task_execute_id:$scope.taskExecuteId});\n \n $rootScope.$broadcast(\"StartTask\"+$scope.fd.PresentationId+\"Completed\",$scope.localVars.gridOptionsResourceData.data);\n \n \n },function(error){\n MessagingService.addMessage(error.msg,'error');\n $scope.localVars.resourceDataDownloading = false;\n });\n }\n else if ($scope.fd.PopulateMethod=='A')\n {\n var task_instance=0; \n if ($scope.localVars.formType=='i') task_instance = $scope.taskInitiateId;\n else task_instance = $scope.taskExecuteId;\n $scope.localVars.resourceDataDownloading = true;\n ResourcesDataService.getResourceDataPaginatedAuto($scope.localVars.selectedResource,urlNext,urlPrev,newPage,pageSize,lang,$scope.fd.PresentationId,task_instance,$scope.localVars.formType).then(function(data) {\n \n $scope.localVars.gridOptionsResourceData.data = data.data;\n $scope.localVars.restoreGridState();\n $scope.fd.initialLoad = false;\n $scope.localVars.resourceDataDownloaded = true;\n $scope.localVars.resourceDataDownloading = false;\n $scope.localVars.nextPage = data.data.next;\n $scope.localVars.previousPage = data.data.previous;\n $scope.localVars.totalCount=data.data.count;\n $scope.localVars.currentPage=newPage;\n $scope.localVars.numPages = Math.ceil($scope.localVars.totalCount/pageSize);\n $scope.localVars.pageSize = pageSize;\n $scope.localVars.gridOptionsResourceData.totalItems=$scope.localVars.totalCount;\n \n WidgetDataExchangeService.setData({\n DEI: [{name:'resourceLink',value:[{name:'resourceId',value:$scope.fd.Related},{name:'resourceRecordId',value:$scope.localVars.selectedDatasetRecordId}\n ,{name:'resourceRecordIds',value: null},{name:'resourceRecordsAll',value:$scope.localVars.gridOptionsResourceData.data}]}],widgetId: $scope.fd.PresentationId,task_execute_id:$scope.taskExecuteId});\n \n $rootScope.$broadcast(\"StartTask\"+$scope.fd.PresentationId+\"Completed\",$scope.localVars.gridOptionsResourceData.data);\n \n \n },function(error){\n MessagingService.addMessage(error.msg,'error');\n $scope.localVars.resourceDataDownloading = false;\n });\n \n }\n };\n\n\n $scope.localVars.pageChanged = function(){ \n $scope.localVars.getResourceDataPaginated($scope.localVars.nextPage,$scope.localVars.previousPage,$scope.localVars.currentPage,$scope.localVars.pageSize);\n };\n \n //**********************************************************\n\t// GET RESOURCE COLUMNS\n\t//********************************************************** \n $scope.localVars.getResourceColumns = function (getData) {\n var lang = $rootScope.globals.currentUser.lang;\n if ($scope.localVars.selectedResource==undefined) $scope.localVars.selectedResource = $scope.fd.Related;\n \n if ($scope.localVars.selectedResource!=undefined && $scope.localVars.selectedResource!=null)\n {\n taskId = $scope.taskId;\n if ($scope.fd.PresentationId==undefined || $scope.fd.PresentationId==null || $scope.fd.PresentationId==0)\n {\n var taskId = 0; \n }\n $scope.localVars.resourceDataDownloading = true;\n\n ResourcesDataService.getResourceColumns($scope.localVars.selectedResource,taskId,$scope.localVars.formType,lang).then(function(data) {\n \n $scope.localVars.gridOptionsResourceData.columnDefs = data.data;\n if ($scope.localVars.currentPage==undefined) $scope.localVars.currentPage=1;\n if (getData && !$scope.formDefinition) $scope.localVars.getResourceDataPaginated($scope.localVars.nextPage,$scope.localVars.previousPage,1,$scope.localVars.pageSize); \n else\n {\n $scope.localVars.restoreGridState();\n $scope.fd.initialLoad = false;\n $scope.localVars.resourceDataDownloaded = true;\n $scope.localVars.resourceDataDownloading = false;\n }\n },function(error){\n MessagingService.addMessage(error.msg,'error');\n $scope.localVars.resourceDataDownloading = false;\n });\n \n }\n };\n \n $scope.localVars.getResourceDataFiltered = function () {\n\n $scope.filter = {};\n var lang = $rootScope.globals.currentUser.lang;\n\n \n if ($scope.localVars.selectedResource==null) {\n $scope.localVars.selectedResource = $scope.fd.Related;\n }\n $scope.localVars.resourceDataDownloading = true;\n \n ResourcesDataService.getResourceDataFiltered($scope.localVars.selectedResource,$scope.taskId,$scope.localVars.formType,lang,$scope.localVars.dashboard.data).then(function(data) {//MIGOR\n \n $scope.localVars.gridOptionsResourceData.data = data.data;\n $scope.localVars.gridOptionsResourceData.columnDefs = data.columnsDef;\n \n $timeout(function(){\n $scope.fd.initialLoad = false;\n $scope.localVars.resourceDataDownloaded = true;\n $scope.localVars.resourceDataDownloading = false;\n $scope.localVars.restoreGridState();\n });\n \n \n },function(error){\n MessagingService.addMessage(error.msg,'error');\n $scope.localVars.resourceDataDownloading = false;\n });\n };\n\t\t\n $scope.localVars.setField = function(form,name,value,msg)\n {\n \t\t\t\tTaskDataService.setField(form,name,value);\n if (msg) MessagingService.addMessage(msg,'info');\n };\n \n $scope.localVars.showHideSearchForm = function()\n {\n \t\t\t\tif ($scope.fd.ShowSearchForm) $scope.localVars.getFormResource();\n };\n \n \n \n $scope.localVars.getPreviousTaskWidget = function(linkType)\n {\n var pTaskData = WidgetDataExchangeService.getPrevTaskData($scope.prevTaskExeId);\n var datasetId=0,datasetRecordId=0;\n let action;\n for (let k=0;k=0) { \r\n $scope.fd.localVars.widgetState = valueState.subject.getState;\r\n $scope.fd.localVars.resourceRecordId = $scope.fd.localVars.widgetState.resourceRecordId;\r\n $scope.fd.localVars.loadFromState=true;\r\n } else {\r\n $scope.fd.localVars.widgetState={'resourceId':$scope.fd.Related,'resourceRecordId':0};\r\n }\r\n \r\n let value_changed = function(data){\r\n valueState.subject.setStateChanges = data;\r\n valueState.subject.notifyObservers(\"valueChanged\");\r\n };\r\n \r\n let action_value_changed = $scope.ksm.addAction(valueStateName,\"valueChanged\",value_changed);\r\n \r\n \r\n let apply_value = function(data)\r\n {\r\n let do_refresh=false;\r\n let state=data.state\r\n if (state!=undefined)\r\n {\r\n \r\n if (typeof state ==='number') $scope.fd.localVars.resourceRecordId= state;\r\n else if (Array.isArray(state))\r\n {\r\n if (state.length>0)\r\n {\r\n if ($scope.fd.localVars.TablePrefix+'_id' in state)\r\n {\r\n $scope.fd.localVars.resourceRecordId= state[0][$scope.fd.localVars.TablePrefix+'_id']\r\n }else $scope.fd.localVars.resourceRecordId= state[0].id\r\n\r\n }\r\n }else\r\n {\r\n if ($scope.fd.localVars.TablePrefix+'_id' in state)\r\n {\r\n $scope.fd.localVars.resourceRecordId= state[$scope.fd.localVars.TablePrefix+'_id']\r\n }else $scope.fd.localVars.resourceRecordId= state.id\r\n \r\n }\r\n do_refresh = true;\r\n \r\n }\r\n //get selectedRecord\r\n if ($scope.fd.localVars.resourceRecordId == null) $scope.fd.localVars.resourceRecordId=0;\r\n \r\n if ($scope.fd.localVars.resourceRecordId>0 && do_refresh) $scope.fd.localVars.GetRecordForView($scope.fd.ParentDatasetDefId,$scope.fd.localVars.resourceRecordId)\r\n \r\n \r\n };\r\n \r\n \r\n \r\n \r\n if ($scope.fd.Parameters.RefreshOnIdChange)\r\n {\r\n \r\n //find \r\n //subscribe observer\r\n \r\n let dependent_field = \"Field\"+$scope.fd.UuidRef;\r\n let subscribedSubject = \"resourceidValueStateName\"+$scope.fd.Parameters.ResourceIdItemId+$scope.resourceDefinition.transaction_id;\r\n let subject = $scope.ksm.addSubject(subscribedSubject,null); \r\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",apply_value);\r\n let val = $scope.ksm.getState(subscribedSubject);\r\n if ($scope.fd.localVars.TablePrefix+'_id' in val)\r\n {\r\n $scope.fd.localVars.resourceRecordId= val[$scope.fd.localVars.TablePrefix+'_id']\r\n }else $scope.fd.localVars.resourceRecordId= val.id\r\n \r\n //get selectedRecord\r\n if ($scope.fd.localVars.resourceRecordId == null) $scope.fd.localVars.resourceRecordId=0;\r\n \r\n if ($scope.fd.localVars.resourceRecordId>0) $scope.fd.localVars.GetRecordForView($scope.fd.ParentDatasetDefId,$scope.fd.localVars.resourceRecordId);\r\n }\r\n \r\n //subscribe observer\r\n if ($scope.fd.PopulateType.toString().substr(0,1)==\"4\")\r\n {\r\n /**********************************************************************\r\n ****************** Sync data with State manager **********************\r\n ***********************************************************************/\r\n \r\n if ($scope.fd.SrcWidgetId!=undefined && $scope.fd.SrcWidgetId!=null)\r\n \r\n {\r\n \r\n let dependent_field = \"Field\"+$scope.fd.SrcWidgetId;\r\n // let subscribedSubject = $scope.fd.Parameters.SrcWidgetType+\"ValueStateName\"+$scope.fd.SrcWidgetId;\r\n let subscribedSubject = \"rlistValueStateName\"+$scope.fd.SrcWidgetId+$scope.resourceDefinition.transaction_id;\r\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",apply_value);\r\n \r\n } \r\n \r\n }\r\n \r\n let refresh_widget_data = function()\r\n \r\n {\r\n $scope.fd.localVars.GetRecordForView($scope.fd.ParentDatasetDefId,$scope.fd.localVars.resourceRecordId) \r\n \r\n }\r\n if ($scope.fd.Parameters.EventName!=undefined)\r\n {\r\n if ($scope.fd.Parameters.EventName!=\"\")\r\n {\r\n let dependent_field2 = \"Field\"+$scope.fd.PresentationId;\r\n let subscribedSubject2 = \"task\"+$scope.resourceDefinition.transaction_id;\r\n let observer2 = $scope.ksm.subscribe(subscribedSubject2,dependent_field2,$scope.fd.Parameters.EventName,refresh_widget_data);\r\n }\r\n }\r\n \r\n \r\n $scope.fd.localVars.showProperties=function(datasetMapperType,showPropertiesRight)\r\n {\r\n \r\n if ($scope.fd.localVars.datasetMapperType==undefined)\r\n {\r\n $scope.fd.localVars.datasetMapperType = datasetMapperType;\r\n }else\r\n {\r\n if ($scope.fd.localVars.datasetMapperType==0 || $scope.fd.localVars.datasetMapperType!=datasetMapperType) \r\n $scope.fd.localVars.datasetMapperType = datasetMapperType;\r\n else \r\n $scope.fd.localVars.datasetMapperType=0;\r\n }\r\n if (showPropertiesRight) $scope.gsrvc.setFieldProperties($scope.fd);\r\n \r\n };\r\n \r\n $scope.fd.openModal = function(modalId)\r\n {\r\n $(modalId).modal();\r\n }\r\n\r\n $scope.fd.localVars.addWidgetDep = function()\r\n {\r\n\r\n if ($scope.fd.localVars.DepSearchWidgetId){\r\n\r\n $scope.fd.Parameters.SearchFormDependencies.push({widget:$scope.fd.localVars.DepSearchWidgetId,processed:false})\r\n $scope.fd.localVars.DepSearchWidgetId=\"\"\r\n }\r\n }\r\n\r\n $scope.fd.localVars.removeWidgetDep = function(idx)\r\n {\r\n\r\n $scope.fd.Parameters.SearchFormDependencies.splice(idx,1)\r\n \r\n }\r\n\r\n //process search form dependencies\r\n \r\n let process_search_form_ready = function(data)\r\n { \r\n if (!$scope.fd.Parameters.SearchFormDependencies.length) return\r\n let widget = data?.state?.widget\r\n if (widget){\r\n let pos = $scope.fd.Parameters.SearchFormDependencies.map(function(e) { return e.widget; }).indexOf(widget)\r\n \r\n if (pos>=0 && data?.state?.processed)\r\n {\r\n $scope.fd.Parameters.SearchFormDependencies.splice(pos,1)\r\n }\r\n }\r\n \r\n if (!$scope.fd.Parameters.SearchFormDependencies.length && $scope.fd.AutoSearch && $scope.fd.PopulateMethod=='M' && !$scope.formDefinition) $scope.fd.localVars.GetRecord()\r\n\r\n }\r\n\r\n for (let i=0;i<$scope.fd.Parameters.SearchFormDependencies.length;i++){\r\n\r\n let dep_field = \"Field\"+$scope.fd.UuidRef\r\n let subSubject = $scope.resourceDefinition.page_state_id+'-'+$scope.fd.UuidRef+'-'+$scope.fd.Parameters.SearchFormDependencies[i].widget+'-widgetReady'\r\n let subj = $scope.ksm.addSubject(subSubject,null)\r\n let observer = $scope.ksm.subscribe(subSubject,dep_field,\"widgetReady\",process_search_form_ready)\r\n let val = $scope.ksm.getState(subSubject)\r\n if (val?.status==\"ok\" && val?.state) process_search_form_ready(val)\r\n \r\n } \r\n \r\n\r\n $scope.fd.localVars.GetFormArray = function(position){\r\n\r\n $scope.fd.localVars.currentRecordIndex = $scope.fd.localVars.currentRecordIndex +position\r\n $scope.formData[$scope.fd.UuidRef][0] = $scope.fd.localVars.recordsArray[$scope.fd.localVars.currentRecordIndex]\r\n }\r\n \r\n $scope.fd.localVars.GetRecord = function(){\r\n\r\n let resourceVersion = 0\r\n if ($scope.fd.Parameters.PublishedResourceVersion) resourceVersion = $scope.fd.Parameters.PublishedResourceVersion\r\n\r\n if (!$scope.fd.Parameters.SelectVersionDirect) resourceVersion=0\r\n\r\n ResourcesDataService.getDatasetData($scope.fd.Related,$scope.formData[$scope.fd.UuidRef+'-search'][0],resourceVersion).then(function(data) {\r\n //ResourcesDataService.getTaskViewResource($scope.fd.PresentationId,$scope.taskId,$scope.fd.localVars.formType,$scope.fd.Related,).then(function(data) {\r\n\r\n let dataset_record\r\n if (Array.isArray(data.data))\r\n {\r\n if (data.data.length>1) \r\n {\r\n \r\n dataset_record = data.data[0]\r\n $scope.fd.localVars.recordsArray = data.data\r\n $scope.fd.localVars.currentRecordIndex = 0\r\n $scope.fd.localVars.isMultipleRecords = true\r\n \r\n }else if (data.data.length==1){\r\n \r\n dataset_record = data.data[0]\r\n $scope.fd.localVars.isMultipleRecords = false\r\n }\r\n else \r\n {\r\n dataset_record={}\r\n $scope.fd.localVars.isMultipleRecords = false\r\n }\r\n }\r\n else \r\n {\r\n dataset_record = data.data\r\n $scope.fd.localVars.isMultipleRecords = false\r\n }\r\n $scope.formData[$scope.fd.UuidRef][0] = dataset_record\r\n $scope.fd.localVars.dataDownloaded = true\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.fd.localVars.isMultipleRecords = false\r\n });\r\n }\r\n\r\n\r\n $scope.fd.localVars.ProcessAuditInfo = function(record)\r\n {\r\n\r\n $scope.fd.localVars.CreatedByLabel = $scope.fd.ParametersLang.CreatedByTemplate.replace('{{user}}',record[$scope.fd.localVars.TablePrefix+'_CreatedBy.name'])\r\n $scope.fd.localVars.CreatedByLabel = $scope.fd.localVars.CreatedByLabel.replace('{{date}}',new Date(record[$scope.fd.localVars.TablePrefix+'_CreatedDateTime']).toLocaleDateString())\r\n $scope.fd.localVars.CreatedByLabel = $scope.fd.localVars.CreatedByLabel.replace('{{time}}',new Date(record[$scope.fd.localVars.TablePrefix+'_CreatedDateTime']).toLocaleTimeString())\r\n if (record[$scope.fd.localVars.TablePrefix+'_ChangedBy.name']!==null)\r\n {\r\n $scope.fd.localVars.ChangedByLabel = $scope.fd.ParametersLang.ChangedByTemplate.replace('{{user}}',record[$scope.fd.localVars.TablePrefix+'_ChangedBy.name'])\r\n $scope.fd.localVars.ChangedByLabel = $scope.fd.localVars.ChangedByLabel.replace('{{date}}',new Date(record[$scope.fd.localVars.TablePrefix+'_ChangedDateTime']).toLocaleDateString())\r\n $scope.fd.localVars.ChangedByLabel = $scope.fd.localVars.ChangedByLabel.replace('{{time}}',new Date(record[$scope.fd.localVars.TablePrefix+'_ChangedDateTime']).toLocaleTimeString())\r\n $scope.fd.localVars.HasChangedBy=true\r\n } \r\n }\r\n\r\n $scope.fd.localVars.ExtractIdFromRecord=function(record){\r\n\r\n let record_id\r\n\r\n if (record!==undefined)\r\n { \r\n if (Array.isArray(record) && record.length>0)\r\n {\r\n if ($scope.fd.localVars.TablePrefix+'_id' in record[0])\r\n {\r\n record_id=record[0][$scope.fd.localVars.TablePrefix+'_id']\r\n \r\n }else record_id = record[0].id\r\n\r\n }else{\r\n if ($scope.fd.localVars.TablePrefix+'_id' in record)\r\n {\r\n record_id = record[$scope.fd.localVars.TablePrefix+'_id']\r\n \r\n }else record_id = record.id\r\n\r\n }\r\n }else record_id = null\r\n\r\n return record_id \r\n }\r\n \r\n \r\n $scope.fd.localVars.GetRecordForView = function(datasetDefId,datasetRecordId){\r\n \r\n if (datasetRecordId===undefined) datasetRecordId=0\r\n if (datasetDefId===undefined) datasetDefId=0\r\n $scope.fd.localVars.resourceRecordId = datasetRecordId\r\n $scope.fd.ParentDatasetDefId = datasetDefId\r\n if ($scope.resourceDefinition.pageId==undefined) $scope.resourceDefinition.pageId=0\r\n\r\n let pageid = $scope.resourceDefinition.pageId\r\n let rinstance = $scope.resourceDefinition.page_instance_id\r\n let prev_resource_id = $scope.taskExecuteId\r\n if ($scope.fd.PopulateType.toString().substr(0,1)=='3')\r\n {\r\n //pageid = $scope.resourceDefinition.prev_page_id\r\n prev_resource_id = $scope.resourceDefinition.prev_page_instance_id\r\n \r\n }\r\n if (prev_resource_id==undefined) prev_resource_id=0\r\n\r\n TaskDataService.GetTaskViewResource($scope.fd.UuidRef,pageid,$scope.taskId,prev_resource_id,rinstance,$scope.fd.localVars.formType,datasetDefId,datasetRecordId,$scope.fd.Parameters.PublishedResourceVersion).then(function(data) {\r\n\r\n let dataset_record\r\n if (Array.isArray(data.data.data))\r\n {\r\n if (data.data.length>0) dataset_record = data.data.data[0]\r\n else dataset_record={}\r\n }\r\n else dataset_record = data.data.data\r\n $scope.formData[$scope.fd.UuidRef][0] = dataset_record\r\n $scope.fd.localVars.resourceRecordId = $scope.fd.localVars.ExtractIdFromRecord(dataset_record)\r\n WidgetDataExchangeService.setData({DEI: [{'name':'resourceLink','value':[{name:'resourceId',value:datasetDefId},{name:'resourceRecordId',value:$scope.fd.localVars.resourceRecordId}]}],\r\n actions: [{name:'PrepareData',status:false}],\r\n\r\n name: 'viewResourceWidget',widgetId: $scope.fd.UuidRef,task_initiate_id:$scope.taskInitiateId,task_execute_id:$scope.taskExecuteId,\r\n\r\n taskId: $scope.lTaskId,resource_id:$scope.resourceDefinition.page_state_id, resourceDefId : $scope.fd.Related, output:out_fields})\r\n\r\n $scope.ksm.executeAction(valueStateName,\"valueChanged\", {datasetDefId:datasetDefId,recordId:$scope.fd.localVars.resourceRecordId,record:$scope.formData[$scope.fd.UuidRef][0]});\r\n \r\n if ($scope.fd.Parameters.ShowAuditInfo) $scope.fd.localVars.ProcessAuditInfo(dataset_record)\r\n\r\n $scope.fd.localVars.dataDownloaded = true\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n } \r\n\r\nlet get_resource_record = function(data)\r\n{\r\n let rec = data.state?.itemValue?.val?.id\r\n\r\n if (!rec) rec = data.state\r\n\r\n if (rec) $scope.fd.localVars.GetRecordForView($scope.fd.Related,rec)\r\n}\r\n\r\n$scope.fd.localVars.getThisResourceWidget = function()\r\n{\r\n\r\n //register here to ksm\r\n let dependent_field = \"Field\"+$scope.fd.UuidRef;\r\n let subscribedSubject =$scope.resourceDefinition.page_state_id+'-'+$scope.fd.SrcWidgetId\r\n let subject = $scope.ksm.addSubject(subscribedSubject,null); \r\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",get_resource_record);\r\n let val = $scope.ksm.getState(subscribedSubject)\r\n if (val.status=='ok' && val.state) get_resource_record(val.state)\r\n}\r\n$scope.fd.localVars.getPreviousTaskWidget = function(linkType)\r\n {\r\n var pTaskData;\r\n\r\n let pageState = $scope.ksm.getState($scope.resourceDefinition.page_state_id)\r\n let prev_task_execute_id = pageState.state.previousTask?.task_execute_id\r\n let prev_page_id = $scope.resourceDefinition.prev_page_id\r\n let pTaskDataRet\r\n //pTaskDataRet = WidgetDataExchangeService.getPrevTaskData(prev_task_execute_id);\r\n pTaskDataRet = WidgetDataExchangeService.getPrevResourceData(prev_task_execute_id,$scope.resourceDefinition.prev_page_state_id,prev_page_id);\r\n\r\n if (Array.isArray(pTaskDataRet) && pTaskDataRet.length>0)\r\n { \r\n var datasetId=0,datasetRecordId=0;\r\n for (let k=0;k0) datasetRecordId=pTaskData.DEI[i].value[k].value;\r\n }\r\n }\r\n \r\n \r\n }\r\n \r\n \r\n }\r\n \r\n }\r\n \r\n }\r\n }\r\n }\r\n }\r\n }\r\n return {'datasetId':datasetId,'datasetRecordId':datasetRecordId};\r\n \r\n };\r\n\r\n\r\n \r\n if (!$scope.resourceDefinition.form_definition && $scope.fd.PopulateMethod=='A' && $scope.fd.PopulateType.toString().substr(0,1)=='3') \r\n\r\n {\r\n $scope.fd.localVars.previousTaskData=$scope.fd.localVars.getPreviousTaskWidget();\r\n\r\n if ($scope.fd.localVars.previousTaskData===undefined)\r\n {\r\n $scope.fd.localVars.previousTaskData = {datasetRecordId:0,datasetId:$scope.fd.Related} \r\n }\r\n\r\n }else if ($scope.fd.PopulateType.toString().substr(0,1)=='2')\r\n {\r\n $scope.fd.localVars.getThisResourceWidget()\r\n }\r\n\r\n // POPUNI LISTU DEFINICIJA OD RESURSA (RESOURCES LIST)\r\n $scope.fd.localVars.getResources = function() {\r\n\r\n if ($scope.fd.localVars.resourceList==undefined) $scope.fd.localVars.resourceList=[];\r\n \r\n let lang=$rootScope.globals.currentUser.lang;\r\n ResourcesDataService.getResourceDefListByType(lang,$scope.fd.Parameters.SelectedResourceType).then(\r\n function(data) {\r\n \r\n $scope.fd.localVars.resourceList = data.data;\r\n if ($scope.fd.Related!=\"\" && $scope.fd.Related!=undefined && $scope.fd.Related!=null) {\r\n let pos = $scope.fd.localVars.resourceList.map(function(e) { return e.id; }).indexOf($scope.fd.Related);\r\n if (pos>=0) $scope.fd.localVars.selectedResourceItem = $scope.fd.localVars.resourceList[pos]\r\n }\r\n //$scope.fd.localVars.getPublishedResources()\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n\r\n $scope.fd.localVars.setSelectedResource = function(id,saved) {\r\n\r\n if ($scope.fd.localVars.selectedResourceItem==undefined) $scope.fd.localVars.selectedResourceItem={};\r\n let pos = $scope.fd.localVars.resourceList.map(function(e) { return e.id; }).indexOf($scope.fd.Related);\r\n if (pos>=0 && $scope.fd.localVars.selectedResourceItem.id===undefined) \r\n {\r\n $scope.fd.localVars.selectedResourceItem = $scope.fd.localVars.resourceList[pos]\r\n \r\n }\r\n $scope.fd.localVars.getPublishedResourceById(id,saved);\r\n \r\n if ($scope.fd.AutoSearch && $scope.fd.PopulateMethod=='M' && !$scope.formDefinition && !$scope.fd.Parameters.SearchFormDependencies.length) $scope.fd.localVars.GetRecord()\r\n\r\n \r\n }\r\n \r\n\r\n\r\n $scope.fd.localVars.getPublishedResourceById = function(id,saved){\r\n let pos\r\n let old_publish_id = $scope.fd.Parameters.PublishedResourceId\r\n \r\n \r\n if (saved && $scope.fd.FormDef)\r\n { \r\n pos = $scope.fd.localVars.publishedResourceList.map(function(e) { return e.id; }).indexOf(id);\r\n \r\n if (pos>=0){\r\n $scope.fd.localVars.selectedPublishedResource = $scope.fd.localVars.publishedResourceList[pos];\r\n }\r\n \r\n $scope.fd.localVars.dashboard.widgets.layout = $scope.fd.FormDef\r\n $scope.fd.localVars.formLoaded=true\r\n\r\n if ($scope.fd.PopulateMethod=='M')\r\n {\r\n\r\n $scope.fd.localVars.dashboard.searchForm.layout = $scope.fd.FormDefSearch\r\n $scope.fd.localVars.searchFormLoaded=true;\r\n\r\n \r\n }\r\n\r\n }else{\r\n pos = $scope.fd.localVars.publishedResourceList.map(function(e) { return e.id; }).indexOf(id);\r\n $scope.fd.FormDef={}\r\n if (pos>=0){\r\n ResourcesDataService.GetPublishedResourceById(id).then(function (data) {\r\n\r\n \r\n $scope.fd.localVars.selectedResourceItem.Form = data.data.Form\r\n $scope.fd.localVars.selectedPublishedResource = $scope.fd.localVars.publishedResourceList[pos];\r\n \r\n \r\n if ($scope.fd.localVars.selectedResourceItem_c!==undefined)\r\n {\r\n $scope.fd.Parameters.PublishedResourceId=$scope.fd.localVars.selectedResourceItem_c.id;\r\n $scope.fd.Parameters.PublishedResourceVersion=$scope.fd.localVars.selectedResourceItem_c.Version;\r\n $scope.fd.Related=$scope.fd.localVars.selectedResourceItem_c.ResourceDefUid; \r\n $scope.fd.localVars.freshForm=angular.copy($scope.fd.localVars.selectedResourceItem_c.Form)\r\n }\r\n $scope.fd.localVars.dashboard.widgets.layout = data.data.Form\r\n \r\n $scope.fd.FormDef = $scope.fd.localVars.dashboard.widgets.layout\r\n $scope.fd.localVars.formLoaded=true;\r\n\r\n \r\n $scope.fd.FormDefSearch = angular.copy($scope.fd.localVars.dashboard.widgets.layout)\r\n $scope.fd.localVars.dashboard.searchForm.layout = $scope.fd.FormDefSearch\r\n $scope.fd.localVars.searchFormLoaded=true;\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.fd.localVars.formLoaded=true;\r\n $scope.fd.localVars.searchFormLoaded=true;\r\n });\r\n\r\n }\r\n }\r\n \r\n \r\n } \r\n \r\nif ($scope.fd.localVars.resourceList==undefined) $scope.fd.localVars.resourceList=[];\r\nif ($scope.fd.localVars.publishedResourceList==undefined) $scope.fd.localVars.publishedResourceList=[];\r\nvar lang=$rootScope.globals.currentUser.lang;\r\n \r\n \r\n ResourcesDataService.GetPublishedResourcesByType('dataset','form').then(\r\n function (data) { \r\n $scope.fd.localVars.publishedResourceList = data.data;\r\n //debugger //GetPublishedResourcesByType \r\n //$scope.fd.localVars.dashboard.widgets.layout = JSON.parse(data.data[0].Form)\r\n \r\n if ($scope.fd.Parameters.PublishedResourceId!=null) \r\n $scope.fd.localVars.setSelectedResource($scope.fd.Parameters.PublishedResourceId,true);\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n //if ($scope.resourceDefinition.form_definition) $scope.fd.localVars.getResources();\r\n \r\n if ($scope.fd.Related!=null && !$scope.resourceDefinition.form_definition && !$scope.fd.localVars.searchFormDownloaded)\r\n { \r\n if ($scope.fd.PopulateMethod=='A' && $scope.fd.PopulateType.toString().substr(0,1)=='3') $scope.fd.localVars.GetRecordForView($scope.fd.Related,$scope.fd.localVars.previousTaskData?.datasetRecordId)\r\n \r\n }\r\n\r\n \r\n $scope.fd.localVars.processWidgetDependencies = function() { //----- \r\n if ($scope.fd.tItemValue!=undefined) \r\n for (var i=0;i< $scope.fd.tItemValue.length;i++) {\r\n var linkedWidgetId=$scope.fd.tItemValue[i].widgetId; // linkedWidgetId= WidgetDataExchangeService.getLocalWidgetId(linkedWidgetId);//MIGOR - moram dobiti localwidgetId od vezanog WidgetId \r\n var linkedItem = 'resourceLink' //var linkedItem = $scope.fd.tItemValue[i].name;\r\n \r\n if (linkedWidgetId!=undefined && linkedWidgetId!=null ) {\r\n for (var j=0;j<$scope.fd.tItemValue[i].DEI.length;j++) {\r\n if (($scope.fd.tItemValue[i].DEI[j].name==linkedItem) && ($scope.fd.tItemValue[i].DEI[j].value==true)) { //SCOPE.ON samo kad je DEI value = true\r\n var linkedItem = $scope.fd.tItemValue[i].DEI[j].name; \r\n //console.log(\"view \"+$scope.fd.PresentationId+\" se veze na serverski \" + linkedWidgetId); \r\n \r\n $scope.$on('Event'+linkedWidgetId+linkedItem,function(event, data){ //ide po svim vezanim widgetima i dodaj $scope.on //MIGOR TODO - DODATI SAMO U SLUCAJU DA JE DEI VALUE = TRUE !!!! <<<<<<<<<<<<< !!!!!!!!!\r\n \r\n // console.log(\"view \"+ $scope.fd.PresentationId+\" dobio event \" + event.name);\r\n for (var k=0;k=0){\r\n $scope.fd.UniqueIdObj=$scope.fd.tagList[pos];\r\n \r\n }\r\n });\r\n \r\n $scope.searchFilter={};\r\n $scope.searchFilter[$scope.fd.PresentationId] = {};\r\n $scope.fd.localVars.search=[\r\n {id:1,filter:'begins',code_name:'begins',name:\"Begins with\",icon:\"fa fa-chevron-right\"},\r\n {id:2,filter:'contains',code_name:'contains',name:\"Contains\",icon:\"fa fa-expand\"},\r\n {id:3,filter:'ends',code_name:'ends',name:\"Ends with\",icon:\"fa fa-chevron-left\"},\r\n {id:4,filter:'eq',code_name:'eq',name:\"Equals\",icon:\"fa fa-bars\"} ];\r\n \r\n $scope.fd.localVars.processFilters = function(filterList)\r\n {\r\n for (let i=0;i< $scope[$scope.fd.id]['fd'].localVars.search.length;i++)\r\n {\r\n let pos = filterList.map(function(e) { return e.id; }).indexOf( $scope[$scope.fd.id]['fd'].localVars.search[i].code_name);\r\n if (pos>=0) $scope[$scope.fd.id]['fd'].localVars.search[i].name = filterList[pos].name\r\n }\r\n \r\n \r\n if ($scope.fd.Search===undefined || $scope.fd.Search===null) $scope.fd.Search= $scope[$scope.fd.id]['fd'].localVars.search[1];//initialize to equals\r\n if ($scope.fd.Search) $scope.fd.Search.Value=$scope.formData[0][$scope.fd.FieldName]; \r\n\r\n $scope[$scope.fd.id]['fd'].localVars.filterReady=true\r\n }\r\n\r\n if ($scope.showSearchFilters || $scope.resourceDefinition.form_definition)\r\n {\r\n CodesService.getCodesByName('search_filters',lang).then(function (data) {\r\n //debugger;\r\n try {\r\n //$scope.fd.localVars.processFilters(data.data)\r\n $scope[$scope.fd.id]['fd'].localVars.processFilters(data.data) \r\n //$scope.fd.localVars = $scope[$scope.fd.id]['fd'].localVars\r\n } catch (err) { \r\n console.log(err)\r\n debugger\r\n } \r\n });\r\n }\r\n if ($scope.fd.Parameters==undefined) $scope.fd.Parameters={};\r\n let textValue = null;\r\n if ($scope.formData!=undefined)\r\n {\r\n if (!$scope.formData.length) $scope.formData=[{}];\r\n textValue=$scope.formData[0][$scope.fd.FieldName]\r\n \r\n }else $scope.formData=[{}];\r\n \r\n let parentWidgetUid = ''\r\n\r\n if ($scope.parentWidget!=undefined) parentWidgetUid = $scope.parentWidget+'-'\r\n\r\n let textValueState= $scope.ksm.addSubject($scope.resourceDefinition.page_state_id+'-'+parentWidgetUid+$scope.fd.UuidRef,textValue);\r\n let textValueStateName = textValueState.subject.name;\r\n \r\n \r\n let value_changed = function(data)\r\n {\r\n textValueState.subject.setStateChanges = data;\r\n textValueState.subject.notifyObservers(\"valueChanged\");\r\n $scope.localVars.refreshSearchValue();\r\n };\r\n \r\n let action_value_changed = $scope.ksm.addAction(textValueStateName,\"valueChanged\",value_changed);\r\n \r\n $scope.on_blur_action=function()\r\n {\r\n \r\n $scope.ksm.executeAction(textValueStateName,\"valueChanged\", $scope.formData[0][$scope.fd.FieldName]);\r\n //$scope.fd.DefaultValue = $scope.formData[0][$scope.fd.FieldName];\r\n };\r\n \r\n \r\n \r\n let apply_value = function(data) {\r\n if (data!=undefined) $scope.formData[0][$scope.fd.FieldName] = data;\r\n };\r\n \r\n if ($scope.fd?.Parameters?.DependentFieldId!=undefined && $scope.fd?.Parameters?.DependentFieldId!=null) \r\n {\r\n if ($scope.fd.Parameters.DependentFieldId!=\"\")\r\n {\r\n let dependent_field = \"Field\"+$scope.fd.PresentationId;\r\n let subscribedSubject = $scope.resourceDefinition.page_state_id+'-'+$scope.fd.Parameters.DependentFieldType+\"ValueStateName\"+$scope.fd.Parameters.DependentFieldId;\r\n let observer = $scope.ksm.subscribe(subscribedSubject,dependent_field,\"valueChanged\",apply_value);\r\n let state = $scope.ksm.getState(subscribedSubject);\r\n if (state.status==\"ok\") $scope.formData[0][$scope.fd.FieldName] = state.state;\r\n }\r\n }\r\n \r\n $scope.localVars.refreshSearchValue = function() {\r\n if ($scope.fd.Search) $scope.fd.Search.Value=$scope.formData[0][$scope.fd.FieldName]; \r\n };\r\n \r\n $scope.fd.SetDefault = function()\r\n {\r\n $scope.fd.DefaultValue = {value:$scope.formData[0][$scope.fd.FieldName]};\r\n }\r\n \r\n $scope.fd.onSelectUnique = function(item,model)\r\n { \r\n $scope.fd.UniqueId=item.id;\r\n }\r\n \r\n let template;\r\n if ($scope.resourceDefinition.form_definition) template = $templateCache.get('ktdirectivetemplates/ktTextbox.html');\r\n else template = $templateCache.get('ktdirectivetemplates/ktTextboxExe.html');\r\n \r\n $element.append($compile(template)($scope)); \r\n \r\n if (textValueState.subject.currentStateIndex>=0 && $scope.fd.Parameters.LoadFromState)\r\n {\r\n \r\n $scope.formData[0][$scope.fd.FieldName] = textValueState.subject.getState;\r\n \r\n } \r\n \r\n if ($scope.formData[0][$scope.fd.FieldName]!=undefined) $scope.ksm.executeAction(textValueStateName,\"valueChanged\", $scope.formData[0][$scope.fd.FieldName]);\r\n \r\n },\r\n \r\n link: function (scope, elem, attrs) {\r\n \r\n \r\n scope.applyTextFilters = function(index) {\r\n scope.fd.Search=scope.fd.localVars.search[index];\r\n if (scope.fd.Search && scope.formData!=undefined && scope.formData.length>0) {\r\n scope.fd.Search.Value=scope.formData[0][scope.fd.FieldName]; \r\n }\r\n if (scope.fd.Search.Value==undefined) scope.fd.Search.Value = \"\";\r\n };\r\n\r\n \r\n \r\n scope.showProperties = function(event) {\r\n\t\t\t\t\tscope.gsrvc.setFieldProperties(scope.fd, scope.inputArray); //inputArray is first parent of the element\r\n };\r\n \r\n if (scope.fd.UpdateWithDefault && !scope.fd.NoUpdate) scope.formData[0][scope.fd.FieldName] = scope.fd.DefaultValue?.value\r\n\r\n \r\n \r\n \r\n }\r\n };\r\n};\n'use strict';\r\n\r\nexport function ktTime () {\r\n return {\r\n restrict: 'A',\r\n controller: function ($scope,GridsterService,KatalyoStateManager,$templateCache,$element,$compile) {\r\n \r\n $scope.gsrvc = GridsterService;\r\n $scope.showProperties = function()\r\n {\r\n //$scope.gsrvc.setFieldProperties($scope.fd);\r\n\t\t\t\t\t\t\t $scope.gsrvc.setFieldProperties($scope.fd, $scope.inputArray);\r\n\t\t\t\t\t\t\t\r\n };\r\n \r\n let template;\r\n if ($scope.resourceDefinition.form_definition) template = $templateCache.get('ktdirectivetemplates/ktTime.html');\r\n else template = $templateCache.get('ktdirectivetemplates/ktTimeExe.html');\r\n \r\n $element.append($compile(template)($scope)); \r\n\r\n },\r\n link: function (scope, elem, attrs,ngModelController) {\r\n\t\t\t\t\r\n if (scope.formData===undefined) scope.formData = [{'Field':0}];\r\n if (scope.formParams===undefined) scope.formParams = {formViewType:1};\r\n if (scope.formParamsParent===undefined) scope.formParamsParent = {formViewType:1};\r\n if (scope.fd.LabelLength === undefined) scope.fd.labelLength= 14;\r\n if (scope.fd.localVars===undefined) scope.fd.localVars={}\r\n if (scope.fd.ParametersLang===undefined) scope.fd.ParametersLang={format1:'HH:mm'};\r\n \r\n \r\n scope.fd.timeFormatList = [{id:1,name:'HH:mm',mask:'99:99'},{id:2,name:'HH:mm:ss',mask:'99:99:99'},{id:3,name:'HH:mm'},{id:4,name:'HH:mm:ss:sss'}];\r\n \r\n if (scope.fd.ParametersLang!=undefined && scope.fd.ParametersLang!=null)\r\n {\r\n \r\n var posFormatTime = scope.fd.timeFormatList.map(function(e) { return e.name.toString(); }).indexOf(scope.fd.ParametersLang.format1);\r\n \r\n if (posFormatTime>=0){\r\n \r\n scope.fd.ParametersLang.format1=scope.fd.timeFormatList[posFormatTime];\r\n \r\n }\r\n \r\n scope.fd.localVars.format = scope.fd.ParametersLang.format1 \r\n\r\n } else scope.fd.localVars.format = scope.fd.timeFormatList[0]\r\n\r\n\r\n\r\n scope.search=[ \r\n {id:1,filter:'gt',name:\"From
\",\r\n data: {\r\n requireLogin: true // this property will apply to all children of 'app'\r\n }, \r\n })\r\n.state('app.menu', {\r\n url:'/m',\r\n abstract: true,\r\n views: {\r\n 'header@': {\r\n templateUrl: '/0001_index/angularTemplates/navbar.html',\r\n // controller: 'homeNavbarCtrl'\r\n },\r\n 'content@': {\r\n templateUrl: '/0001_index/angularTemplates/layout.html',\r\n //controller: 'homeContentCtrl' \r\n },\r\n \r\n 'footer@': {\r\n templateUrl: '/0001_index/angularTemplates/footer.html',\r\n // controller: 'homeCtrl' \r\n },\r\n }\r\n }) \r\n.state('app.nomenu', {\r\n url:'/nm', \r\n abstract: true,\r\n views:\r\n {\r\n 'content@': {\r\n templateUrl: '/0001_index/angularTemplates/layout.html',\r\n \r\n },\r\n 'footer@': {\r\n templateUrl: '/0001_index/angularTemplates/footer.html',\r\n },\r\n }\r\n})\r\n\r\n.state('app.navbar', {\r\n url:'/n',\r\n abstract: true,\r\n views: {\r\n 'header@': {\r\n templateUrl: '/0001_index/angularTemplates/navbar.html',\r\n // controller: 'homeNavbarCtrl'\r\n },\r\n 'content@': {\r\n templateUrl: '/0001_index/angularTemplates/layout.html',\r\n //controller: 'homeContentCtrl' \r\n },\r\n \r\n 'footer@': {\r\n templateUrl: '/0001_index/angularTemplates/footer.html',\r\n // controller: 'homeCtrl' \r\n },\r\n }\r\n })\r\n\r\n.state('app.nomenu.onboarding', {\r\n url:'/onboarding',\r\n views: {\r\n \r\n 'contentR': {\r\n templateUrl: '/0001_index/angularTemplates/onboarding.html',\r\n controller: 'onboardingCtrl', \r\n },\r\n /* 'menu': {\r\n templateUrl: '/0003_resources/angularTemplates/homeMenu.html',\r\n controller: 'menuCtrl' \r\n },*/ \r\n \r\n },\r\n \r\n \r\n})\r\n.state('app.navbar.home', {\r\n url:'/',\r\n views: {\r\n \r\n 'contentR': {\r\n templateUrl: '/0001_index/angularTemplates/home.html',\r\n controller: 'homeCtrl', \r\n },\r\n /* 'menu': {\r\n templateUrl: '/0003_resources/angularTemplates/homeMenu.html',\r\n controller: 'menuCtrl' \r\n },*/ \r\n \r\n }\r\n \r\n \r\n })\r\n.state('app.navbar.appsettings', {\r\n url:'/settings',\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0001_index/angularTemplates/appsettings.html',\r\n controller: 'appSettingsCtrl', \r\n },\r\n /* 'menu': {\r\n templateUrl: '/0003_resources/angularTemplates/homeMenu.html',\r\n controller: 'menuCtrl' \r\n },*/ \r\n }\r\n \r\n \r\n })\r\n.state('app.navbar.market', {\r\n url:'/market',\r\n views: {\r\n \r\n 'contentR': {\r\n templateUrl: '/0001_index/angularTemplates/market.html',\r\n controller: 'marketCtrl', \r\n },\r\n /* 'menu': {\r\n templateUrl: '/0003_resources/angularTemplates/homeMenu.html',\r\n controller: 'menuCtrl' \r\n },*/ \r\n \r\n }\r\n \r\n \r\n })\r\n.state('app.navbar.home.dashboard', {\r\n url:'/dashboard',\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0003_resources/angularTemplates/homeDashboard.html',\r\n controller: 'homeDashboardCtrl' \r\n \r\n },\r\n }\r\n }) \r\n.state('app.menu.resources', {\r\n abstract: true,\r\n url:'/resources',\r\n views: {\r\n 'content@': {\r\n templateUrl: '/0001_index/angularTemplates/layout.html',\r\n },\r\n } \r\n })\r\n.state('app.navbar.resources', {\r\n abstract: true,\r\n url:'/resources',\r\n views: {\r\n /* 'header@': {\r\n templateUrl: '/0001_index/angularTemplates/navbar.html',\r\n // controller: 'homeNavbarCtrl'\r\n },*/\r\n 'content@': {\r\n templateUrl: '/0001_index/angularTemplates/layout.html',\r\n //controller: 'resourceUnifiedCtrl' \r\n },\r\n /*\r\n 'footer@': {\r\n templateUrl: '/0001_index/angularTemplates/footer.html',\r\n // controller: 'loginCtrl' \r\n },*/\r\n }\r\n \r\n })\r\n.state('app.navbar.resources.import', {\r\n url:'/import/:resource_id/:id',\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0003_resources/angularTemplates/importData.html',\r\n controller: 'importDataCtrl' \r\n },\r\n \r\n },\r\n params: {\r\n resource_id: {\r\n value: '',\r\n },\r\n id: {\r\n value: '',\r\n\r\n },\r\n \r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n })\r\n .state('app.navbar.resources.list', {\r\n url:'',\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0003_resources/angularTemplates/resourceList.html',\r\n controller: 'resourceListCtrl' \r\n },\r\n /*'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n },*/ \r\n \r\n \r\n },\r\n params: {\r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n resource_type: {\r\n value: '',\r\n\r\n },\r\n resource_name: {\r\n value: '',\r\n\r\n },\r\n pageid: {\r\n value: '',\r\n\r\n },\r\n }\r\n})\r\n .state('app.navbar.resources.new', {\r\n url:'/new',\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0003_resources/angularTemplates/newResource.html',\r\n controller: 'newResourceCtrl' \r\n },\r\n },\r\n params: {\r\n from_resource: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n resource_type: {\r\n value: '',\r\n\r\n },\r\n pageid: {\r\n value: '',\r\n\r\n },\r\n }\r\n \r\n})\r\n .state('app.navbar.resources.edit', {\r\n url:'/edit/:id',\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0003_resources/angularTemplates/editResource.html',\r\n controller: 'editResourceCtrl' \r\n },\r\n /*'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n },*/\r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n prev_state: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n})\r\n .state('app.navbar.resources.view', {\r\n url:'/view/:id',\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0003_resources/angularTemplates/viewResource.html',\r\n controller: 'viewResourceCtrl' \r\n },\r\n \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n prev_state:{\r\n value:'', \r\n },\r\n resource_type:{\r\n value:'', \r\n }\r\n }\r\n}) \r\n.state('app.navbar.resources.form', {\r\n url:'/form/:id',\r\n views: {\r\n \r\n 'contentR': {\r\n templateUrl: '/0003_resources/angularTemplates/resourceForm.html',\r\n controller: 'resourceFormCtrl' \r\n },\r\n /*'menu': {\r\n templateUrl: '/0001_index/angularTemplates/toolbox.html',\r\n controller: 'toolboxCtrl' \r\n },*/\r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n subTypeSelected: {\r\n value: '',\r\n },\r\n returnState: {\r\n value: '',\r\n },\r\n \r\n }\r\n}) \r\n.state('app.navbar.resources.form-vue', {\r\n url:'/form-vue/:id',\r\n\r\n views: {\r\n \r\n 'contentR': {\r\n templateUrl: '/0003_resources/angularTemplates/resourceFormVue.html',\r\n controller: 'resourceFormComponent' \r\n },\r\n /* 'menu': {\r\n templateUrl: '/0003_resources/angularTemplates/toolboxVue.html',\r\n controller: 'toolboxComponent' \r\n },*/\r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n }) \r\n\r\n.state('app.navbar.resources.mappings', {\r\n url:'/mappings/:id',\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0003_resources/angularTemplates/mappingsForm.html',\r\n controller: 'mappingsFormCtrl' \r\n },\r\n /*'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n },*/\r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n },\r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n })\r\n .state('app.navbar.resources.data', {\r\n url:'/rdata/:id',\r\n\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0003_resources/angularTemplates/resourceData.html',\r\n controller: 'resourceDataCtrl' \r\n },\r\n /*'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n },*/ \r\n \r\n \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n })\r\n .state('app.navbar.resources.data-record', {\r\n url:'/data-record/:resource_id/:id',\r\n\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0003_resources/angularTemplates/resourceDataRecord.html',\r\n controller: 'resourceDataRecordCtrl' \r\n },\r\n /*'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n },*/ \r\n \r\n \r\n },\r\n params: {\r\n resource_id: {\r\n value: '',\r\n\r\n },\r\n id: {\r\n value: '',\r\n\r\n },\r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n })\r\n .state('app.navbar.resources.dataset-transform', {\r\n url:'/dataset-transform',\r\n\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0003_resources/angularTemplates/datasetTransform.html',\r\n controller: 'datasetTransformCtrl' \r\n },\r\n /*'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n },*/ \r\n \r\n \r\n },\r\n params: {\r\n \r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n \r\n })\r\n .state('app.navbar.resources.mapping-def', {\r\n url:'/mapping-def/:id',\r\n\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0003_resources/angularTemplates/mappingDefinition.html',\r\n controller: 'mappingDefinitionCtrl' \r\n },\r\n /*'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n },*/ \r\n \r\n \r\n },\r\n params: {\r\n \r\n id: {\r\n value: '',\r\n\r\n },\r\n }\r\n \r\n })\r\n.state('app.navbar.resources.application-definition', { \t\t\t\r\n url:'/application-definition/:id',\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0003_resources/angularTemplates/applicationDefinition.html',\r\n controller: 'applicationDefinitionCtrl' \r\n },\r\n \r\n },\r\n params: {\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n id: {\r\n value: '',\r\n\r\n },\r\n }\r\n \r\n \r\n })\r\n.state('app.navbar.resources.app-menu-definition', { \t\t\t\r\n url:'/app-menu-definition/:id',\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0003_resources/angularTemplates/appMenuDefinition.html',\r\n controller: 'appMenuDefinitionCtrl' \r\n },\r\n \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n \r\n },\r\n fromApplication: {\r\n value: '',\r\n \r\n },\r\n }\r\n \r\n \r\n })\r\n.state('app.navbar.resources.integration-definition', { \t\t\t\r\n url:'/integration-definition/:id',\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0003_resources/angularTemplates/integrationDefinition.html',\r\n controller: 'integrationDefinitionCtrl' \r\n },\r\n \r\n },\r\n params: {\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n id: {\r\n value: '',\r\n\r\n },\r\n }\r\n \r\n \r\n })\r\n.state('app.navbar.resources.notification-definition', { \t\t\t\r\n url:'/notification-definition/:id',\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0003_resources/angularTemplates/notificationDefinition.html',\r\n controller: 'notificationDefinitionCtrl' \r\n },\r\n \r\n },\r\n params: {\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n id: {\r\n value: '',\r\n\r\n },\r\n }\r\n \r\n \r\n })\r\n.state('app.navbar.resources.token-definition', { \t\t\t\r\n url:'/token-definition/:id',\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0003_resources/angularTemplates/tokenDefinitionVue.html',\r\n controller: 'tokenDefinitionCtrl' \r\n },\r\n \r\n },\r\n params: {\r\n \r\n id: {\r\n value: '',\r\n\r\n },\r\n }\r\n \r\n \r\n })\r\n.state('app.navbar.resources.smart-contract-definition', { \t\t\t\r\n url:'/smart-contract-definition/:id',\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0003_resources/angularTemplates/smartContractDefinition.html',\r\n controller: 'smartContractDefinitionCtrl' \r\n },\r\n \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n }\r\n \r\n \r\n })\r\n .state('app.navbar.resources.pages', {\r\n url:'/pages',\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0003_resources/angularTemplates/pages.html',\r\n controller: 'pagesCtrl' \r\n },\r\n /*'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n },*/ \r\n \r\n \r\n },\r\n params: {\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n \r\n \r\n })\r\n.state('app.navbar.resources.pages-form', {\r\n url:'/pages-form/:id',\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0003_resources/angularTemplates/pagesForm.html',\r\n controller: 'pagesFormCtrl' \r\n },\r\n /*'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n },*/ \r\n \r\n \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n prev_state: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n \r\n })\r\n.state('app.navbar.resources.pages-definition', {\r\n url:'/pages-definition/:id',\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0003_resources/angularTemplates/pagesDefinition.html',\r\n controller: 'pagesDefinitionCtrl' \r\n },\r\n \r\n \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n \r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n prev_state: {\r\n value: '',\r\n\r\n },\r\n }\r\n })\r\n.state('app.navbar.resources.menus-definition', {\r\n url:'/menus-definition',\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0003_resources/angularTemplates/menusDefinition.html',\r\n controller: 'menusDefinitionCtrl' \r\n },\r\n /*'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n },*/ \r\n \r\n \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n \r\n })\r\n .state('app.navbar.codes', {\r\n url: '/codes',\r\n\r\n abstract: true,\r\n \r\n /*views: {\r\n \r\n 'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n },\r\n \r\n },*/\r\n \r\n \r\n })\r\n.state('app.navbar.codes.list', {\r\n url: '',\r\n\r\n views: {\r\n 'contentR@app.navbar': {\r\n templateUrl: '/0004_settings/angularTemplates/codesData.html',\r\n controller: 'codesDataCtrl' \r\n },\r\n \r\n },\r\n /* /*'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n },*/\r\n \r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n \r\n })\r\n .state('app.navbar.codes.details', {\r\n url: '/details',\r\n\r\n views: {\r\n 'contentR@app.navbar': {\r\n templateUrl: '/0004_settings/angularTemplates/codesDetails.html',\r\n controller: 'codesDetailsCtrl' \r\n },\r\n /* 'menu': {\r\n templateUrl: '/0004_settings/angularTemplates/codesMenu.html',\r\n controller: 'menuCtrl' \r\n },*/ \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n \r\n \r\n })\r\n \r\n.state('app.navbar.codes.new', {\r\n url: '/new',\r\n\r\n views: {\r\n 'contentR@app.navbar': {\r\n templateUrl: '/0004_settings/angularTemplates/codesNew.html',\r\n controller: 'codesNewCtrl' \r\n },\r\n /* 'menu': {\r\n templateUrl: '/0004_settings/angularTemplates/codesMenu.html',\r\n controller: 'menuCtrl' \r\n },*/ \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n \r\n \r\n })\r\n \r\n /*\r\n.state('app.navbar.codes.edit', {\r\n url: '/edit/:id',\r\n\r\n views: {\r\n 'contentR@app.navbar': {\r\n templateUrl: '/0004_settings/angularTemplates/codesEdit.html',\r\n controller: 'codesEditCtrl' \r\n }, \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n \r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n \r\n \r\n \r\n })\r\n */\r\n\r\n\r\n.state('app.navbar.user', {\r\n url: '/user',\r\n\r\n abstract: true,\r\n \r\n /*views: {\r\n \r\n 'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n },\r\n \r\n },*/\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n \r\n \r\n })\r\n .state('app.navbar.user.details', {\r\n url: '/details',\r\n\r\n views: {\r\n 'contentR@app.navbar': {\r\n templateUrl: '/0004_settings/angularTemplates/userDetails.html',\r\n controller: 'userDetailsCtrl' \r\n },\r\n /* 'menu': {\r\n templateUrl: '/0004_settings/angularTemplates/codesMenu.html',\r\n controller: 'menuCtrl' \r\n },*/ \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n \r\n \r\n })\r\n.state('app.navbar.groups', {\r\n url:'/groups',\r\n\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0004_settings/angularTemplates/groupsDefinition.html',\r\n controller: 'groupsCtrl' \r\n },\r\n /*'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n },*/ \r\n \r\n \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n })\r\n.state('app.navbar.users', {\r\n url:'/users',\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0004_settings/angularTemplates/usersDefinition.html',\r\n controller: 'usersDefinitionCtrl' \r\n }, \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n },\r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n })\r\n.state('app.navbar.userssecurity', {\r\n url:'/security',\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0004_settings/angularTemplates/usersSecurity.html',\r\n controller: 'usersSecurityCtrl' \r\n }, \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n },\r\n menu_id: {\r\n value: '',\r\n },\r\n navbar_id: {\r\n value: '',\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n },\r\n }\r\n })\r\n.state('app.menu.tasks', {\r\n url: '/tasks',\r\n abstract:true,\r\n views: {\r\n 'content@': {\r\n templateUrl: '/0001_index/angularTemplates/layout.html',\r\n //controller: 'taskListCtrl' \r\n },\r\n /* 'menu': {\r\n templateUrl: '/0004_settings/angularTemplates/codesMenu.html',\r\n controller: 'menuCtrl' \r\n },\r\n */\r\n },\r\n \r\n \r\n })\r\n.state('app.navbar.tasks', {\r\n url: '/tasks',\r\n abstract:true,\r\n views: {\r\n 'content@': {\r\n templateUrl: '/0001_index/angularTemplates/layout.html',\r\n //controller: 'taskListCtrl' \r\n },\r\n /* 'menu': {\r\n templateUrl: '/0004_settings/angularTemplates/codesMenu.html',\r\n controller: 'menuCtrl' \r\n },\r\n */\r\n },\r\n \r\n \r\n })\r\n.state('app.navbar.tasks.list', {\r\n url:'/',\r\n\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0005_tasks/angularTemplates/tasksList.html',\r\n controller: 'taskListCtrl' \r\n },\r\n /* 'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n },*/\r\n \r\n },\r\n params: {\r\n \r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n \r\n})\r\n.state('app.navbar.tasks.form', {\r\n url:'/form/:formType/:id',\r\n\r\n views: {\r\n \r\n 'contentR': {\r\n templateUrl: '/0005_tasks/angularTemplates/tasksForm.html',\r\n controller: 'taskFormCtrl' \r\n },\r\n 'menu': {\r\n templateUrl: '/0001_index/angularTemplates/tasktoolbox.html',\r\n controller: 'taskToolboxCtrl' \r\n },\r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n formType: {\r\n value: '',\r\n\r\n },\r\n \r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n resource:{value: {}},\r\n }\r\n }) \r\n.state('app.navbar.tasks.new', {\r\n url:'/new',\r\n\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0005_tasks/angularTemplates/tasksNew.html',\r\n controller: 'taskNewCtrl' \r\n },\r\n /*'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n },*/ \r\n \r\n \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n})\r\n.state('app.navbar.tasks.definition', {\r\n url:'/definition/:id',\r\n\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0005_tasks/angularTemplates/tasksDefinition.html',\r\n controller: 'taskDefinitionCtrl' \r\n },\r\n /* 'menu': {\r\n templateUrl: '/0005_tasks/angularTemplates/tasksDefinitionList.html',\r\n controller: 'taskDefinitionListCtrl' \r\n }, \r\n */ \r\n \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n tab_id: {\r\n value: '',\r\n\r\n },\r\n \r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n})\r\n.state('app.navbar.tasks.definition2', {\r\n url:'/definition2/:id',\r\n\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0005_tasks/angularTemplates/tasksDefinitionDetailed.html',\r\n controller: 'taskDefinitionCtrl' \r\n },\r\n /*'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n },*/ \r\n \r\n \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n tab_id: {\r\n value: '',\r\n\r\n },\r\n \r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n})\r\n.state('app.navbar.tasks.initiate-list', {\r\n url:'/initiate-list',\r\n\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0005_tasks/angularTemplates/tasksInitiateList.html',\r\n controller: 'taskInitiateListCtrl' \r\n },\r\n /*'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n },*/\r\n },\r\n params: {\r\n \r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n \r\n }\r\n \r\n \r\n})\r\n.state('app.navbar.tasks.execute-list', {\r\n url:'/execute-list',\r\n\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0005_tasks/angularTemplates/tasksExecuteList.html',\r\n controller: 'taskExecuteListCtrl' \r\n },\r\n 'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n },\r\n }, \r\n params: {\r\n navbarId: {\r\n value: '',\r\n\r\n },\r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n \r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n \r\n }\r\n})\r\n.state('app.navbar.tasks.proc', {\r\n url:'/proc/:id',\r\n\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0005_tasks/angularTemplates/tasksProc.html',\r\n controller: 'taskProcCtrl' \r\n },\r\n 'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n }, \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n fromStateName: {\r\n value: '',\r\n\r\n },\r\n fromStateParams: {\r\n value: '',\r\n\r\n },\r\n prev_task_execute_id: {\r\n value: '',\r\n\r\n },\r\n prev_task_package: {\r\n value: '',\r\n\r\n },\r\n outcome_id: {\r\n value: '',\r\n\r\n },\r\n presentation_id: {\r\n value: '',\r\n\r\n },\r\n init_type: {\r\n value: '',\r\n\r\n },\r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n \r\n }\r\n})\r\n.state('app.navbar.tasks.initiate', {\r\n url:'/initiate/:id/:prev_task_execute_id/:outcome_id/:presentation_id',\r\n\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0005_tasks/angularTemplates/tasksInitiate.html',\r\n controller: 'taskInitiateCtrl' \r\n },\r\n 'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n }, \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n fromStateName: {\r\n value: '',\r\n\r\n },\r\n fromStateParams: {\r\n value: '',\r\n\r\n },\r\n prev_task_execute_id: {\r\n value: '',\r\n\r\n },\r\n prev_task_package: {\r\n value: '',\r\n\r\n },\r\n outcome_id: {\r\n value: '',\r\n\r\n },\r\n presentation_id: {\r\n value: '',\r\n\r\n },\r\n \r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n \r\n }\r\n})\r\n.state('app.navbar.tasks.execute', {\r\n url:'/execute/:id/:task_initiate_id/:task_execute_id',\r\n\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0005_tasks/angularTemplates/tasksExecute.html',\r\n controller: 'taskExecuteCtrl' \r\n },\r\n 'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n }, \r\n \r\n \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n fromStateName: {\r\n value: '',\r\n\r\n },\r\n fromStateParams: {\r\n value: '',\r\n\r\n },\r\n task_initiate_id: {\r\n value: '',\r\n\r\n },\r\n task_execute_id: {\r\n value: '',\r\n\r\n },\r\n prev_task_package: {\r\n value: '',\r\n\r\n },\r\n for_group: {\r\n value: '',\r\n\r\n },\r\n \r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n \r\n }\r\n})\r\n.state('app.navbar.tasks.claim', {\r\n url:'/claim',\r\n\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0005_tasks/angularTemplates/tasksExecuteList.html',\r\n controller: 'taskExecuteListCtrl' \r\n },\r\n 'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n }, \r\n \r\n \r\n },\r\n params: {\r\n \r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n})\r\n\r\n.state('app.navbar.tasks.outcome-definition', {\r\n url:'/outcome-definition/:id',\r\n\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0005_tasks/angularTemplates/tasksOutcomeDefinition.html',\r\n controller: 'taskOutcomeDefinitionCtrl' \r\n },\r\n 'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n }, \r\n \r\n \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n fromStateName: {\r\n value: '',\r\n\r\n },\r\n fromStateParams: {\r\n value: '',\r\n\r\n },\r\n \r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n \r\n }\r\n})\r\n.state('app.navbar.organisation', {\r\n url:'/organisation',\r\n\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0004_settings/angularTemplates/organisation.html',\r\n controller: 'organisationCtrl' \r\n },\r\n /*'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n },*/ \r\n \r\n \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n })\r\n.state('app.navbar.community', {\r\n url:'/community',\r\n\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0004_settings/angularTemplates/community.html',\r\n controller: 'organisationCtrl' \r\n },\r\n /*'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n },*/ \r\n \r\n \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n })\r\n\r\n.state('app.navbar.menu-create', {\r\n url:'/menu-create',\r\n abstract:true,\r\n\r\n views: {\r\n 'content@': {\r\n templateUrl: '/0001_index/angularTemplates/layout.html',\r\n //controller: 'taskListCtrl' \r\n },\r\n \r\n }\r\n})\r\n.state('app.navbar.menu-create.navbar', {\r\n url:'/menu-create/navbar',\r\n \r\n\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0004_settings/angularTemplates/createNavbar.html',\r\n controller: 'organisationCtrl' \r\n },\r\n /*'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n },*/ \r\n \r\n },\r\n params: {\r\n id: {\r\n value: '',\r\n\r\n },\r\n menu_id: {\r\n value: '',\r\n\r\n },\r\n navbar_id: {\r\n value: '',\r\n\r\n },\r\n sidemenu_id: {\r\n value: '',\r\n\r\n },\r\n }\r\n})\r\n.state('app.navbar.vpage', {\r\n url:'/vpage/:pageid/:version?rinstance',\r\n \r\n\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0006_vpage/angularTemplates/vpage.html',\r\n controller: 'vpageCtrl' \r\n },\r\n /* 'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n }, */ \r\n \r\n },\r\n params: {\r\n pageid: {\r\n value: '',\r\n },\r\n parameters: {\r\n value: '',\r\n },\r\n version: {\r\n value: '0',\r\n }\r\n }\r\n})\r\n.state('app.navbar.public-vpage', {\r\n url:'/pvpage/:orgid/:version/:pageid?rinstance',\r\n \r\n\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0006_vpage/angularTemplates/vpage.html',\r\n controller: 'vpageCtrl' \r\n },\r\n /* 'menu': {\r\n templateUrl: '/0001_index/angularTemplates/menu.html',\r\n controller: 'menuCtrl' \r\n }, */ \r\n \r\n },\r\n params: {\r\n pageid: {\r\n value: '',\r\n },\r\n version: {\r\n value: '',\r\n },\r\n orgid: {\r\n value: '',\r\n },\r\n parameters: {\r\n value: '',\r\n }\r\n },\r\n\r\n data: {\r\n \r\n requireLogin: false // change default value from 'app'\r\n \r\n }\r\n})\r\n.state('app.navbar.selectenvironment', {\r\n url:'/selectenv/:type',\r\n views: {\r\n 'contentR': {\r\n templateUrl: '/0002_auth/angularTemplates/selectenvironment.html',\r\n controller: 'selectenvironmentCtrl' \r\n },\r\n \r\n },\r\n\r\n params: {\r\n type: {\r\n value: '',\r\n },\r\n },\r\n \r\n\r\n}) \r\n.state('app.signup', {\r\n url:'/signup',\r\n\r\n views: {\r\n /* 'header@': {\r\n templateUrl: '/0002_auth/angularTemplates/simpleheader.html',\r\n // controller: 'simpleheaderController'\r\n },*/\r\n 'content@': {\r\n templateUrl: '/0001_index/angularTemplates/signup.html',\r\n controller: 'signupCtrl' \r\n },\r\n /* 'footer@': {\r\n templateUrl: '/0001_index/angularTemplates/footer.html',\r\n // controller: 'loginCtrl' \r\n },\r\n */\r\n },\r\n data: {\r\n requireLogin: false // change default value from 'app'\r\n \r\n }\r\n })\r\n.state('app.register', {\r\n url:'/register/:signupid',\r\n\r\n views: {\r\n /* 'header@': {\r\n templateUrl: '/0002_auth/angularTemplates/simpleheader.html',\r\n // controller: 'simpleheaderController'\r\n },*/\r\n 'content@': {\r\n templateUrl: '/0001_index/angularTemplates/register.html',\r\n controller: 'registerCtrl' \r\n },\r\n 'footer@': {\r\n templateUrl: '/0001_index/angularTemplates/footer.html',\r\n // controller: 'loginCtrl' \r\n },\r\n params: {\r\n signupid: {\r\n value: '',\r\n\r\n },\r\n }\r\n\r\n },\r\n data: {\r\n requireLogin: false // change default value from 'app'\r\n \r\n }\r\n }) \r\n.state('app.unregister', {\r\n url:'/unregister/:signupid',\r\n\r\n views: {\r\n /* 'header@': {\r\n templateUrl: '/0002_auth/angularTemplates/simpleheader.html',\r\n // controller: 'simpleheaderController'\r\n },*/\r\n 'content@': {\r\n templateUrl: '/0001_index/angularTemplates/unregister.html',\r\n controller: 'unregisterCtrl' \r\n },\r\n 'footer@': {\r\n templateUrl: '/0001_index/angularTemplates/footer.html',\r\n // controller: 'loginCtrl' \r\n },\r\n params: {\r\n signupid: {\r\n value: '',\r\n\r\n },\r\n }\r\n\r\n },\r\n data: {\r\n requireLogin: false // change default value from 'app'\r\n \r\n }\r\n }) \r\n.state('app.nomenu.publictasks', {\r\n url:'/public/:org_id/:task_name',\r\n views: { \r\n 'contentR': {\r\n templateUrl: '/0005_tasks/angularTemplates/tasksPublicExecute.html',\r\n controller: 'taskPublicCtrl',\r\n }, \r\n },\r\n params: {\r\n \r\n org_id: {\r\n value: '',\r\n \r\n },\r\n task_name: {\r\n value: '',\r\n \r\n },\r\n task_id: {\r\n value: '',\r\n \r\n } \r\n },\r\n data: {\r\n \r\n requireLogin: false // change default value from 'app'\r\n \r\n }\r\n \r\n})\r\n\r\n\r\n.state('app.index', {\r\n \r\n // redirectTo: () => \"app.navbar.home\",\r\n // data: {\r\n \r\n // requireLogin: true // change default value from 'app'\r\n \r\n //} \r\n url:'/',\r\n views: {\r\n /*'header@': {\r\n templateUrl: '/0002_auth/angularTemplates/simpleheader.html',\r\n },*/\r\n 'content@': {\r\n templateUrl: function() {\r\n return indexJson.config.homepagetemplate\r\n },\r\n \r\n\r\n controller: 'changePasswordRequestCtrl' \r\n },\r\n 'footer@': {\r\n templateUrl: '/0001_index/angularTemplates/footer.html',\r\n },\r\n \r\n },\r\n data: {\r\n requireLogin: false // change default value from 'app'\r\n } \r\n})\r\n.state('app.changepassrequest', {\r\n url:'/changepassrequest',\r\n views: {\r\n 'header@': {\r\n templateUrl: '/0002_auth/angularTemplates/simpleheader.html',\r\n },\r\n 'content@': {\r\n templateUrl: '/0002_auth/angularTemplates/changePasswordRequest.html',\r\n controller: 'changePasswordRequestCtrl' \r\n },\r\n 'footer@': {\r\n templateUrl: '/0001_index/angularTemplates/footer.html',\r\n },\r\n \r\n },\r\n data: {\r\n requireLogin: false // change default value from 'app'\r\n } \r\n}) \r\n.state('app.changepass', {\r\n url:'/changepass/:digest',\r\n views: {\r\n 'header@': {\r\n templateUrl: '/0002_auth/angularTemplates/simpleheader.html',\r\n },\r\n 'content@': {\r\n templateUrl: '/0002_auth/angularTemplates/changePassword.html',\r\n controller: 'changePasswordCtrl' \r\n },\r\n 'footer@': {\r\n templateUrl: '/0001_index/angularTemplates/footer.html',\r\n },\r\n params: {\r\n digest: {\r\n value: '',\r\n },\r\n } \r\n },\r\n data: {\r\n requireLogin: false // change default value from 'app'\r\n } \r\n}) \r\n.state('app.login', {\r\n url:'/login',\r\n views: {\r\n 'header@': {\r\n templateUrl: '/0002_auth/angularTemplates/simpleheader.html',\r\n },\r\n 'content@': {\r\n templateUrl: '/0002_auth/angularTemplates/login.html',\r\n controller: 'loginCtrl' \r\n },\r\n 'footer@': {\r\n templateUrl: '/0001_index/angularTemplates/footer.html',\r\n }, \r\n },\r\n params: {\r\n return_url: {\r\n value: '',\r\n },\r\n }, \r\n data: {\r\n requireLogin: false // change default value from 'app'\r\n } \r\n}) \r\n.state('app.selectenvironment', {\r\n url:'/selectenv',\r\n views: {\r\n 'header@': {\r\n templateUrl: '/0002_auth/angularTemplates/simpleheader.html',\r\n },\r\n 'content@': {\r\n templateUrl: '/0002_auth/angularTemplates/selectenvironment.html',\r\n controller: 'selectenvironmentCtrl' \r\n },\r\n 'footer@': {\r\n templateUrl: '/0001_index/angularTemplates/footer.html', \r\n },\r\n },\r\n data: {\r\n requireLogin: true // change default value from 'app' \r\n } \r\n}) \r\n.state('app.logout', {\r\n url: '/logout',\r\n\r\n views: {\r\n 'header@': {\r\n templateUrl: '/0002_auth/angularTemplates/simpleheader.html',\r\n // controller: 'simpleheaderController'\r\n },\r\n 'content@': {\r\n templateUrl: '/0002_auth/angularTemplates/logged_out.html',\r\n controller: 'logoutCtrl'\r\n \r\n },\r\n },\r\n \r\n data: {\r\n requireLogin: false\r\n }\r\n})\r\n.state('app.sso', {\r\n url:'/sso',\r\n\r\n views: {\r\n 'header@': {\r\n templateUrl: '/0002_auth/angularTemplates/simpleheader.html',\r\n // controller: 'simpleheaderController'\r\n },\r\n 'content@': {\r\n templateUrl: '/0002_auth/angularTemplates/sso.html',\r\n controller: 'ssoCtrl' \r\n },\r\n 'footer@': {\r\n templateUrl: '/0001_index/angularTemplates/footer.html',\r\n // controller: 'loginCtrl' \r\n },\r\n params: {\r\n is_ldap: {\r\n value: false,\r\n },\r\n } \r\n },\r\n data: {\r\n \r\n requireLogin: false // change default value from 'app'\r\n \r\n } \r\n}) \r\n.state(\"app.otherwise\", {\r\n url: \"*path\",\r\n views: {\r\n 'header@': {\r\n templateUrl: '/0002_auth/angularTemplates/simpleheader.html',\r\n \r\n },\r\n 'content@': {\r\n templateUrl: '/0001_index/angularTemplates/error_not_found.html',\r\n controller: 'errorNotFoundCtrl'\r\n \r\n },\r\n },\r\n \r\n data: {\r\n requireLogin: false \r\n }\r\n}).state(\"app.error\", {\r\n url: \"*path\",\r\n views: {\r\n 'header@': {\r\n templateUrl: '/0002_auth/angularTemplates/simpleheader.html',\r\n \r\n },\r\n 'content@': {\r\n templateUrl: '/0001_index/angularTemplates/error.html',\r\n controller: 'errorCtrl'\r\n \r\n },\r\n },\r\n\t params: {\r\n msg: {\r\n value: '',\r\n },\r\n },\r\n \r\n data: {\r\n requireLogin: false \r\n }\r\n}) \r\n\r\n}]);\r\n\r\napp.run(['$rootScope','$state', '$cookies','$location','$timeout','RestApiService','AuthenticationService','MenuService','MessagingService',\r\n function ($rootScope,$state,$cookies, $location,$timeout,RestApiService,AuthenticationService,MenuService,MessagingService) \r\n { \r\n if ($rootScope.globals===undefined) $rootScope.globals={}\r\n var lastFromState, lastToState, requireLogin, env, defaultenv , app_ref\r\n \r\n let userid = sessionStorage.getItem('user')\r\n let cUser = $cookies.getObject('currentUser') || null; \r\n if (cUser) $rootScope.globals.currentUser = cUser\r\n else if (userid) $rootScope.globals.currentUser = JSON.parse(localStorage.getItem(userid))\r\n\t \r\n\t\t\r\n if ($rootScope.globals.currentUser) {\r\n if ($rootScope.globals.currentUser.authdata.substring(0,5)==='Token') {\r\n RestApiService.add_api_classes('token',$cookies.get('csrftoken'),$rootScope.globals.currentUser.authdata);\r\n } else \r\n RestApiService.add_api_classes('sso',$cookies.get('csrftoken')); \r\n }\r\n else {\r\n $rootScope.globals = {currentUser:{lang:'en-GB'}};\r\n RestApiService.add_api_classes('sso',$cookies.get('csrftoken'));\r\n }\r\n \r\n\t \r\n\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t \r\n $rootScope.$on('$stateChangeStart', function (ev,toState,toParams,fromState,fromParams) // when state transition starts!\r\n\t\t{ \r\n if (!$rootScope.globals.currentUser)\r\n {\r\n let userid = sessionStorage.getItem('user')\r\n let cUser = $cookies.getObject('currentUser') || null; \r\n if (cUser) $rootScope.globals.currentUser = cUser\r\n else if (userid) $rootScope.globals.currentUser = JSON.parse(localStorage.getItem(userid))\r\n }\r\n\t\t\t$rootScope.globals.toState = toState\r\n\t\t\trequireLogin = toState.data?.requireLogin ?? true; \r\n\t\t\t//debugger\r\n\t\t\r\n\t\t\t// SYNCHRONIZE ENV between globals and params\r\n\t\t\tif ($location.search().env ) \t\r\n\t\t\t\t$rootScope.globals.currentEnv = $location.search().env\t//override curentENV with URL env\t\r\n\t\t\tif (toParams['env'] ) //set currentENV if we have toParams['env']\r\n\t\t\t\t$rootScope.globals.currentEnv = toParams['env'] \r\n\t\t\telse {\r\n\t\t\t\ttoParams['env'] = $rootScope.globals.currentEnv \r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif ($rootScope.globals?.currentEnv && $rootScope.globals?.currentUser?.uep?.defaultenv && $rootScope.globals?.environments) {\r\n\t\t\t\t//check if user does not belong to current env!\r\n\t\t\t\t//debugger\r\n\t\t\t\tif ($rootScope.globals?.environments?.[$rootScope.globals.currentEnv] == undefined ) { //reset env to default\r\n\t\t\t\t\ttoParams['env'] = $rootScope.globals?.currentUser?.uep?.defaultenv \r\n\t\t\t\t\t$rootScope.globals.currentEnv = $rootScope.globals?.currentUser?.uep?.defaultenv \r\n\t\t\t\t\t$location.search({'env': $rootScope.globals.currentUser.uep.defaultenv })\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//exit when in excluded state \r\n\t\t\tconst excludedStates = [\"app.nomenu.onboarding\", \"app.error\", \"app.signup\", \"app.register\", \"app.index\", \"app.login\", \"app.sso\", \"app.logout\", \"app.otherwise\", \"app.nomenu.publictasks\", \"app.changepass\", \"app.changepassrequest\"]\r\n\t\t\tif (excludedStates.includes(toState.name)) \r\n {\r\n app_ref = null\r\n return\r\n }\r\n\r\n if (toState.name=='app.login' || toState.name=='app.logout') app_ref=null\r\n\r\n\t\t\tconst today = new Date();\r\n\t\t\tconst expiresValue = new Date(today);\r\n\t\t\texpiresValue.setMinutes(today.getMinutes() + 10);\r\n\r\n\t\t\t$cookies.putObject('lastToState', toState, {'expires': expiresValue});\r\n\t\t\t$cookies.putObject('lastToParams', toParams, {'expires': expiresValue});\r\n \r\n sessionStorage.setItem('lastToState',JSON.stringify(toState))\r\n sessionStorage.setItem('lastToParams',JSON.stringify(toParams))\r\n\t\t\t\r\n if ($rootScope.globals.currentUser?.username) { //if user is logged\r\n\t\t\t\tlastFromState = fromState;\r\n\t\t\t\tlastToState = toState;\r\n\t\t\t\t//debugger\r\n\r\n\t\t\t\tif ($location.search().app_ref ) \r\n\t\t\t\t\t\tapp_ref = $location.search().app_ref \r\n\t\t\t\t\t\r\n\t\t\t if ( MenuService.navbarItems.length==0 )\t MenuService.loadDefaultMenu( !!app_ref )\r\n\r\n\t\t\t\t$rootScope.globals.InterceptorIsActive = true;\r\n\t\t\t\t\r\n\t\t\t\t if ( $rootScope.globals?.currentUser?.uep?.id == undefined) { // if we have user ID but no extended\r\n\t\t\t\t\t\tev.preventDefault(); \r\n AuthenticationService.getUserInfo($rootScope.globals.currentUser?.organisation.id)\r\n\t\t\t\t\t\t .then( (response) => { \r\n\t\t\t\t\t\t\t\t AuthenticationService.SetCredentials(response.data.user) \r\n\t\t\t\t\t\t\t\t if (response.data.environments) \r\n\t\t\t\t\t\t\t\t\t $rootScope.globals.environments = response.data.environments.reduce((acc, obj) => {\r\n acc[obj.id.toString()] = obj;\r\n return acc;\r\n }, {}); \r\n\t\t\t\t\t\t\t\t $state.go(toState.name, toParams);\r\n }).catch(error =>{\r\n\t\t\t\t\t\t\t\t$state.go(\"app.error\", {msg: 'Server error: ' + error.msg })\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t }).finally(() => {\r\n\t\t\t\t\t\t\t\t //$state.go(toState.name, toParams);// ovdje je možda već kasno\r\n\t\t\t\t\t\t });\r\n\t\t\t\t\t\t//$state.go(toState.name, toParams); //TODO - staviti ovdje umjesto gore ????\r\n\t\t\t\t\t\treturn \r\n\t\t\t\t} \r\n \r\n if (!$rootScope.globals.envinfo) { // when ENV changed get from envinfo statistics from server - TODO - correct to get proper env from server\r\n ev.preventDefault();\r\n\t\t\t\t\t\tAuthenticationService.getEnvInfo($rootScope.globals.currentUser?.organisation.id)\r\n\t\t\t\t\t\t .then( (response) => { \r\n\t\t\t\t\t\t\t\t\t$rootScope.globals.envinfo = response.data\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t }).catch(error =>{\r\n\t\t\t\t\t\t\t\talert(error.message)\t \r\n\t\t\t\t\t\t }).finally(() => {\r\n\t\t\t\t\t\t\t\t $state.go(toState.name, toParams);\r\n\t\t\t\t\t\t });\r\n\t\t\t\t\t\t//$state.go(toState.name, toParams); //TODO - staviti ovdje umjesto gore????\r\n\t\t\t\t\t\treturn \r\n }\r\n\t\t\t\t \r\n if (! $rootScope.globals?.environments) { // when ENV changed get from envinfo statistics from server - TODO move this in loadAPP ?? \r\n ev.preventDefault();\r\n\t\t\t\t\t\tAuthenticationService.getOrgSchemas($rootScope.globals.currentUser?.organisation.id)\r\n\t\t\t\t\t\t\t.then((response) => {\r\n if (response.data) $rootScope.globals.environments = response.data.reduce((acc, obj) => {\r\n acc[obj.id.toString()] = obj;\r\n return acc;\r\n }, {}); \r\n\t\t\t\t\t\t\t}).catch(error =>{\r\n\t\t\t\t\t\t\t\talert(error.message)\t \r\n\t\t\t\t\t\t\t}).finally(() => {\r\n\t\t\t\t\t\t\t\t $state.go(toState.name, toParams);\r\n\t\t\t\t\t\t\t});\t\r\n\t\t\t\t\t\t//$state.go(toState.name, toParams); //TODO - staviti ovdje umjesto gore ????\r\n\t\t\t\t\t\treturn\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// **********************\r\n\t\t\t\t// TODO - mozda bi trebalo napraviti da ovdje dođe samo kad su završile sve gornje asinkrone radnje ?? ($state.go iz finally prebaciti prije 'return')\r\n\t\t\t\t// ***********************\r\n\t\t\t\t\r\n\t\t\t\tif (app_ref && !MenuService.isAppSelected() ) { // if app is selected, but menu is not ??\r\n\t\t\t\t\ttoParams = toParams ?? {};\r\n\t\t\t\t\ttoParams['app_ref'] = app_ref;\r\n\r\n\t\t\t\t\tAuthenticationService.loadApp(toState.name, toParams, app_ref)\r\n\t\t\t\t\t\t.then((data) => {\r\n\t\t\t\t\t\t\tlet lapp = data?.subscriptions\r\n\t\t\t\t\t\t\t//AuthenticationService.SetCredentials(data?.user) // migor commented\r\n\t\t\t\t\t\t\tAuthenticationService.SetUep(data?.user?.uep)\t\r\n\t\t\t\t\t\t\tif (!lapp) \tthrow new Error('Error loading application id =' + app_ref);\r\n\r\n\t\t\t\t\t\t\treturn AuthenticationService.SetMenusForApp(lapp)\r\n\t\t\t\t\t\t\t\t.then((menuLoaded) => {\r\n\t\t\t\t\t\t\t\t\treturn AuthenticationService.loadFirstPage(toState.name, toParams, lapp, menuLoaded);\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t/*.catch((error) => {\r\n\t\t\t\t\t\t\tMessagingService.addMessage(error.msg || error.message, 'error');\r\n\t\t\t\t\t\t\ttoParams['app_ref'] = undefined\r\n\t\t\t\t\t\t\t//$state.go(toState.name, toParams);\r\n\t\t\t\t\t\t\t\t//$state.go(\"app.error\", {msg: 'Server error: ' + error.msg }) //maybe this instead of upper ?\r\n\t\t\t\t\t\t});*/\r\n\t\t\t\t} else {\r\n\t\t\t\t\tMenuService.setSelectedAppMenuWithParams(toState.name, toParams);\r\n\t\t\t\t\t//$state.go(toState.name, toParams);\r\n\t\t\t\t}\t\t\r\n\t\t\t\t\r\n\t\t\t} else { // USER does not exist or is empty!\r\n\t\t\t\tif (!requireLogin) {\r\n\t\t\t\t\t// login not required for PUBLIC pages\r\n\t\t\t\t\tlastFromState = fromState;\r\n\t\t\t\t\tlastToState = toState;\r\n\t\t\t\t\t$rootScope.globals.InterceptorIsActive = true;\r\n\t\t\t\t\tMenuService.setSelectedAppMenuWithParams(toState.name, toParams);\r\n\t\t\t\t\t$state.go(toState.name, toParams); //TODO - vidjeti da li ovo uopce treba ili ce otici sam po sebi na taj state\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// login is required - go to login page\r\n\t\t\t\t\tev.preventDefault();\r\n\t\t\t\t\ttoParams = toParams ?? {};\r\n\t\t\t\t\tlet params = angular.copy(toParams);\r\n\t\t\t\t\tparams['return_url_name'] = toState.name;\r\n\t\t\t\t\ttoParams['return_url'] = params;\r\n\t\t\t\t\t$state.go('app.login', toParams);\r\n\t\t\t\t}\r\n\t\t\t}\r\n \r\n });//onStateChange//\r\n \r\n }]);\r\n\r\n","'use strict';\r\n\r\n\r\n\r\nimport indexJson from './index.json'//with {type: 'json'};\r\n\r\nexport default function appController ($scope,$rootScope,$cookies, $window,$location,$state,GridsterService,MenuService,ResourcesDataService,MessagingService,AuthenticationService,KatalyoStateManager) { \r\n $scope.CTRL='appController'; //active during LOGIN phase and immidiately after app.run !\r\n $scope.gsrvc = GridsterService;\r\n $scope.menu_service = MenuService;\r\n\t\t$scope.ksm = KatalyoStateManager; \r\n\t\tif (!$rootScope.globals?.currentUser?.name)\r\n\t\t\t\t$rootScope.globals.currentUser = $cookies.getObject('currentUser') || null; \r\n\t\t\r\n $scope.activity = { activityMessage : \"\" }; \r\n $scope.ac = { alerts : [] }; \r\n \r\n $scope.currentState = $state.current.name;\r\n\r\n $scope.showNavbar = true;\r\n $scope.showSideMenu = false;\r\n\t\t\r\n let menuVisibility= $scope.ksm.addSubject( \"menuVisibility\", null);\r\n let menuVisibilityName = menuVisibility.subject.name;\r\n\r\n let dependent_field = \"appCtrl\"\r\n let observer = $scope.ksm.subscribe(menuVisibilityName,dependent_field,\"menuVisibilityChanged\",menu_visibility_process);\r\n let state = $scope.ksm.getState(menuVisibilityName);\r\n if (state.status==\"ok\" && state.state!==null) menu_visibility_process(state.state);\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\tlet langCode = $rootScope.globals.currentUser?.langObj?.Code ?? 'en-GB'\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t$scope.pageLabels = indexJson[langCode]\r\n\t\t$scope.config = indexJson['config']\r\n\t\t\r\n\t\t\r\n\t\t$scope.mergeObjects = (...objects) =>\r\n\t\t\tobjects.reduce((acc, cur) => ({ ...acc, ...cur }));\r\n\t\t\t\r\n $scope.showActivity = function (msg) {\r\n setTimeout(function () { \r\n $scope.activity.activityMessage = msg; \r\n });\r\n };\r\n\t\t\r\n\t\r\n function menu_visibility_process (data)\r\n {\r\n $scope.showNavbar = data?.state?.navbar ?? $scope.showNavbar\r\n if (data?.state?.sideMenu!==undefined) $scope.showSideMenu = data.state.sideMenu\r\n else $scope.showSideMenu = false\r\n }\r\n\t\t\r\n\t\t\r\n $scope.checkIfActive = function(ni)\r\n {\r\n return ni.s_menus_Params.pagestate==$scope.menu_service.currentTarget && (ni.s_menus_Target==$scope.menu_service.currentPageId || ni.s_menus_Params.pagestate!='app.navbar.vpage')\r\n }\r\n\t\t\t\r\n\t\t\t\r\n $scope.multiSelectKeyUpDown = function (ev,id) \r\n\t\t{\r\n var code = ev.keyCode || ev.which;\r\n var key = ev.key;\r\n var elem=$window.document.getElementById(id);\r\n if ((key==='p' || key==='P' || key==='b' || key==='B') && ev.ctrlKey) {\r\n ev.preventDefault();\r\n $scope.$broadcast(\"CtrlPBPressed\",key);\r\n }\r\n \r\n /* if (code==13){\r\n //select element in focus \r\n }\r\n //keyup\r\n if (code==38){ //move focus to next element\r\n ev.preventDefault();\r\n elem.next().focus(); \r\n }\r\n //keydown\r\n if (code==40){//move focus to previous element \r\n ev.preventDefault();\r\n elem.previous().focus(); \r\n } */\r\n }\r\n \r\n};\r\n\r\n\r\nappController.$inject = ['$scope','$rootScope','$cookies', '$window','$location','$state','GridsterService','MenuService','ResourcesDataService','MessagingService','AuthenticationService','KatalyoStateManager'];\r\n\r\nexport function homeNavbarCtrl($scope,$rootScope,$state) {\r\n //$scope.navbar = \"/static/modules/0001_index/angularTemplates/navbar.html\";\r\n $scope.CTRL='homeNavbarCtrl';\r\n };\r\n\r\nhomeNavbarCtrl.$inject = ['$scope','$rootScope','$state'];\r\n \r\nexport function errorNotFoundCtrl ($scope,$rootScope,$state,$stateParams) {\r\n //$scope.navbar = \"/static/modules/0001_index/angularTemplates/navbar.html\";\r\n //$scope.previousPage=$stateParams.fromState;\r\n $scope.params = $state.params;\r\n $scope.CTRL='errorNotFoundCtrl';\r\n};\r\n\r\nerrorNotFoundCtrl.$inject = ['$scope','$rootScope','$state','$stateParams'];\r\n\r\n\r\nexport function errorCtrl ($scope,$rootScope,$state,$stateParams) {\r\n \r\n $scope.params = $state.params;\r\n\t\t//debugger\r\n\t\tif ($scope.params?.msg) { \r\n\t\t\tif (typeof $scope.params.msg === 'string')\r\n\t\t\t\t\t$scope.msg = $scope.params.msg\r\n\t\t\tif (typeof $scope.params.msg === 'object')\r\n\t\t\t\t\t$scope.msg = JSON.stringify($scope.params.msg)\r\n\t\t}\r\n $scope.CTRL='errorCtrl';\r\n};\r\n\r\nerrorCtrl.$inject = ['$scope','$rootScope','$state','$stateParams'];\r\n\r\n\r\n\r\n\r\nexport function homeCtrl($scope, $rootScope,$state,$cookies,$location,KatalyoStateManager,ProcessingService,MessagingService,CodesService,AuthenticationService,MenuService,ResourcesDataService,TaskDataService,GridsterService,SettingsService,$timeout,$stateParams){\r\n \r\n \r\n $scope.CTRL='homeCtrl';\r\n $rootScope.headTitle =\"Katalyo | Home\";\r\n $scope.currentState=$state.current.name;\r\n $scope.selectedApp = {'name':''}\r\n $scope.localVars = {};\r\n $scope.fd={};\r\n $scope.taskDefinition={};\r\n var lang = $rootScope.globals.currentUser.lang;\r\n $scope.currentUserFirstName=$rootScope.globals.currentUser?.first_name;\r\n $scope.extendedUser = angular.copy($rootScope.globals.currentUser.uep);\r\n $scope.resource={};\r\n $scope.resource_page_size=12;\r\n $scope.is_superuser = $rootScope.globals.currentUser.is_superuser;\r\n $scope.appListParameters={iNumber:8}\r\n if ($scope.extendedUser==undefined) $scope.extendedUser = {};\r\n\r\n \r\n $scope.menu_service = MenuService;\r\n\t$scope.menu_service.clearSideMenu()\r\n let app_ref = $location.search().app_ref \r\n \r\n\t\t\t\r\n //$scope.menu_service.loadDefaultMenu( !!app_ref )\r\n\t\r\n\t\t$scope.getCurrentEnvData = function(){\r\n\t\t\treturn $rootScope?.globals?.environments[$rootScope?.globals?.currentEnv]\r\n\t\t}\r\n\t\t\r\n\r\n\t\tif ($stateParams.env) {\r\n\t\t\t//debugger\r\n\t\t\tsessionStorage.setItem(\"environment\", $stateParams.env )\r\n\t\t\t$rootScope.globals.currentEnv = $stateParams.env \r\n\t\t}\r\n \r\n $scope.gsrvc=GridsterService;\r\n $scope.gsrvc.resetBodyBgColor() \r\n $scope.params={showAppList:1,subscribing:false};\r\n let tab= $location.search().tab\r\n if (tab!=undefined) $scope.params.showAppList = tab\r\n //connect to metamask\r\n \r\n $scope.linkWeb3Wallet = function()\r\n {\r\n $scope.balance=\"\";\r\n $scope.balance_ktlyo=\"\";\r\n $scope.ktlyo_balance_ok = false;\r\n $scope.ktlyo_balance_msg = \"\";\r\n $scope.eth_address=null;\r\n \r\n if ($scope.fd.eth_address!=null)\r\n {\r\n $scope.ktlyoAddressConnected=true;\r\n var wei;\r\n web3.eth.getBalance($scope.fd.eth_address, function (error, wei) {\r\n if (!error) {\r\n var balance = web3.utils.fromWei(wei, 'ether');\r\n $scope.balance = balance + \" ETH\";\r\n }\r\n });\r\n \r\n var tokenAddress = \"0x24E3794605C84E580EEA4972738D633E8a7127c8\";\r\n var tokenABI = [{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}];\r\n \r\n var tokenInst = new web3.eth.Contract(tokenABI,tokenAddress);\r\n \r\n \r\n tokenInst.methods.balanceOf($scope.fd.eth_address).call().then(function (bal_raw) {\r\n var bal = web3.utils.fromWei(bal_raw, 'ether');\r\n if (bal<100)\r\n {\r\n $scope.ktlyo_balance_ok = false;\r\n $scope.ktlyo_balance_msg = \"Insufficient balance\";\r\n }else $scope.ktlyo_balance_ok = true;\r\n $timeout(function(){\r\n bal = parseFloat(bal).toLocaleString(navigator.language,{minimumFractionDigits:4,maximumFractionDigits:4});\r\n $scope.balance_ktlyo = bal+ \" KTLYO\";\r\n });\r\n });\r\n \r\n return true;\r\n }\r\n \r\n return false;\r\n } \r\n \r\n $scope.getKtlyoBal = function()\r\n {\r\n //var tokenAddress = \"0x24E3794605C84E580EEA4972738D633E8a7127c8\";\r\n var eth_address = $rootScope.globals.currentUser.organisation.ETHAccount;\r\n \r\n //\"0xc30c523a8eee10e36beb7a6d07c636e02762cb27\";\r\n if (eth_address==null || eth_address.trim()==\"\")\r\n {\r\n $scope.noKtlyoAddress=true;\r\n } else\r\n {\r\n \r\n $scope.linkedBlockchainAddress=true;\r\n $scope.fd.eth_address = eth_address;\r\n SettingsService.GetKtyloBalance(eth_address).then(function (data) {\r\n let bal = data.data.balance;\r\n \r\n $rootScope.globals.currentUser.uep.ktlyo_block = data.data.block\r\n $rootScope.globals.currentUser.uep.ktlyo_balance = bal\r\n\r\n bal = bal.toLocaleString(navigator.language,{minimumFractionDigits:4,maximumFractionDigits:4});\r\n $scope.balance_ktlyo =bal+\" KTLYO\" ;\r\n $scope.block_ktlyo = \"(at block \"+data.data.block+ \")\";\r\n $scope.balance = data.data.balance_eth + \" ETH (at block \"+data.data.block_eth+ \")\" ;\r\n $scope.balanceChecked=true;\r\n \r\n\r\n $cookies.putObject('currentUser',$rootScope.globals.currentUser)\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }\r\n }\r\n \r\n $scope.mapKtlyoBal = function()\r\n {\r\n //var tokenAddress = \"0x24E3794605C84E580EEA4972738D633E8a7127c8\";\r\n var eth_address = $rootScope.globals.currentUser.organisation.ETHAccount;\r\n \r\n //\"0xc30c523a8eee10e36beb7a6d07c636e02762cb27\";\r\n if (eth_address==null || eth_address.trim()==\"\")\r\n {\r\n $scope.noKtlyoAddress=true;\r\n } else\r\n {\r\n \r\n // $timeout(function(){\r\n $scope.linkedBlockchainAddress=true;\r\n $scope.fd.eth_address = eth_address;\r\n $scope.balance_ktlyo = $rootScope.globals.currentUser.uep.ktlyo_balance?.toLocaleString(navigator.language,{minimumFractionDigits:4,maximumFractionDigits:4})+\" KTLYO\" ;\r\n $scope.balance_ktlyo_num = $rootScope.globals.currentUser.uep.ktlyo_balance;\r\n $scope.block_ktlyo = \"(at block \"+$rootScope.globals.currentUser.uep.ktlyo_block?.toLocaleString(navigator.language,{minimumFractionDigits:0,maximumFractionDigits:0})+ \")\";\r\n $scope.balanceChecked=true;\r\n if ($scope.balance_ktlyo_num>=100) $scope.ktlyo_balance_ok = true;\r\n else\r\n {\r\n $scope.ktlyo_balance_ok = false;\r\n $scope.ktlyo_balance_msg = \"Insufficient balance!\";\r\n }\r\n \r\n // });\r\n /*\r\n SettingsService.GetKtyloBalance(eth_address).then(function (data) {\r\n let bal = data.data.balance;\r\n $scope.balance_ktlyo =bal+\" KTLYO\" ;\r\n $scope.block_ktlyo = \"(at block \"+data.data.block+ \")\";\r\n $scope.balance = data.data.balance_eth + \" ETH (at block \"+data.data.block_eth+ \")\" ;\r\n $scope.balanceChecked=true;\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n */\r\n }\r\n }\r\n \r\n //$scope.getKtlyoBal();\r\n \r\n if ($scope.extendedUser.use_blockchain) $scope.mapKtlyoBal(); \r\n \r\n $scope.$watch(\"fd.web3Connected\",function(newValue,oldValue){\r\n if ($scope.fd.eth_address!=null && !$scope.linkedBlockchainAddress) $scope.linkWeb3Wallet();\r\n });\r\n \r\n \r\n $scope.changeWeb3WalletLinkStatus = function(status)\r\n {\r\n $scope.linkedBlockchainAddress=status;\r\n $scope.fd.web3Connected=status;\r\n $scope.fd.eth_address=null;\r\n }\r\n \r\n $scope.openedTaskInNewPage={localVars:null,taskDefinition:null};\r\n \r\n $scope.openTaskInNewPage=function(){\r\n \r\n $scope.openedTaskInNewPage = $scope.gsrvc.getTaskDataInNewPage();\r\n };\r\n \r\n \r\n $scope.saveBlockchainAccount=function(){\r\n \r\n SettingsService.SaveBlockchainAccount($scope.fd.eth_address).then(function (data) {\r\n MessagingService.addMessage(data.data,'success');\r\n //MenuService.LoadMenus($scope).then(function () { });\r\n $rootScope.globals.currentUser.organisation.ETHAccount = $scope.fd.eth_address\r\n \r\n $scope.getKtlyoBal();\r\n $scope.ktlyoAddressConnected=false; \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.data,'error'); \r\n }); };\r\n \r\n $scope.localVars.loadedTasks=[];\r\n \r\n $scope.extendedUser.taskDefinitions = [];\r\n \r\n \r\n $scope.LoadTasks = function()\r\n {\r\n if ($scope.extendedUser.TaskListHome!=undefined)\r\n {\r\n $scope.localVars.loadedTasks.length = 0;\r\n \r\n for (var i=0;i<$scope.extendedUser.TaskListHome.length;i++)\r\n {\r\n var localVars = {'isInlineTask':$scope.localVars.isInlineTask,'taskIndex':$scope.localVars.loadedTasks.length,'loadTaskDirect' : true,'taskId':$scope.extendedUser.TaskListHome[i].id,'outcomeId':0,'previousTask':0};\r\n $scope.localVars.loadedTasks.push({'taskId':$scope.extendedUser.TaskListHome[i].id,'outcomeId':0,'previousTask':0,'localVars':localVars});\r\n \r\n }\r\n }\r\n };\r\n //$scope.LoadTasks();\r\n //get apps\r\n $scope.getApps = function()\r\n {\r\n $scope.appListLoading=true;\r\n ResourcesDataService.GetResourceSubscriptions('application').then(function (data) {\r\n \r\n $scope.appListLoading=false; \r\n $scope.appList =data.data;\r\n\r\n },function(error){\r\n $scope.appListLoading=false; \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n \r\n }\r\n \r\n $scope.getMyApps = function()\r\n {\r\n ResourcesDataService.GetResourceSubscriptions('application').then(function (data) {\r\n \r\n $scope.appList =data.data;\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n \r\n }\r\n \r\n $scope.getUnsubscribedAppsFiltered = function(start,end)\r\n {\r\n ResourcesDataService.GetResourceSubscriptions('application').then(function (data) {\r\n \r\n $scope.appList =data.data;\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n \r\n }\r\n \r\n /*\r\n $scope.getAllApps = function()\r\n {\r\n ResourcesDataService.getResourceDefByType(lang,'application').then(function (data) {\r\n \r\n $scope.appListFull =data.data;\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n \r\n }*/\r\n \r\n $scope.getApps();\r\n \r\n $scope.loadApp = function(app)\r\n {\r\n app.loadingApp=true\r\n //get application params and load menus\r\n\t\t\t\t$rootScope.globals.app = app\r\n AuthenticationService.SetMenusForApp(app).then(function(data) {\r\n\r\n //load default page\r\n $scope.getDefaultPage(app,data);\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error')\r\n app.loadingApp=false\r\n });\r\n \r\n \r\n };\r\n \r\n $scope.findLink = function (link_type,app) {\r\n for (let i=0;i Page definition not found for page-id='+page.Resource2+', version='+page.Version,'error');\r\n } else {\r\n if (!menu_loaded) MessagingService.addMessage('#'+iapp.Name+' application is not fully launched!','warning');\r\n else MessagingService.addMessage('#'+iapp.Name+' application launched successfuly!','info');\r\n default_page_version = page.Version\r\n if (!default_page_version || !page?.SelectVersionDirect) default_page_version = 0\r\n $state.go(pagePub.Definition?.ResourceExtended?.Target ,{ pageid: pagePub.Definition?.uid,version:default_page_version, app_ref:iapp.uid,tab:$scope.params.showAppList}); \r\n } \r\n iapp.loadingApp=false \r\n\t\t\t\t\t\t\t\t\t},function(error){ \r\n MessagingService.addMessage(error.msg,'error'); \r\n iapp.loadingApp=false\r\n });\r\n }\r\n \r\n\t\t\t\t}\r\n };\r\n \r\n /*\r\n ResourcesDataService.getResourceDefByType(lang,'application').then(function (data) {\r\n \r\n $scope.appListFull =data.data;\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n \r\n \r\n */\r\n $scope.subscribe_unsubscribe = function(app,index,sub_type)\r\n {\r\n app.subscribing=true;\r\n ResourcesDataService.ManageResourceSubscriptions(app,'application-'+app.app_type,sub_type).then(function (data) {\r\n \r\n MessagingService.addMessage(data.data.msg,'success');\r\n app.subscribing=false;\r\n $scope.appList[index].SubId=data.data.data.SubId;\r\n $scope.appList[index].ActiveSub=data.data.data.ActiveSub;\r\n \r\n \r\n },function(error){\r\n \r\n if (error.data['msg']!=undefined) MessagingService.addMessage(error.data.msg,'error');\r\n else MessagingService.addMessage(error.data,'error');\r\n app.subscribing=false;\r\n });\r\n \r\n }\r\n \r\n\r\n $scope.getApplications = function(pageNumber,pageSize){\r\n \r\n \r\n $scope.resource_page_size = pageSize;\r\n $scope.resourceLoading=true;\r\n \r\n var filter=$scope.resource;\r\n \r\n if ($scope.totalCount>0){\r\n if (Math.ceil($scope.totalCount/pageSize)0) || $scope.totalItemCount==0) $scope.hideBtnMore = true;\r\n else $scope.hideBtnMore=false;\r\n \r\n $scope.resourceLoading=false;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.resourceLoading=false;\r\n });\r\n };\r\n $scope.loadMoreApplications = function(){\r\n $scope.resource_page_size = $scope.resource_page_size+12;\r\n $scope.getApplications(1,$scope.resource_page_size); \r\n \r\n }\r\n \r\n \r\n $scope.getResourceDef = function(pageNumber,pageSize){\r\n \r\n \r\n $scope.resource_page_size = pageSize;\r\n $scope.resourceLoading=true;\r\n \r\n var filter=$scope.resource;\r\n \r\n if ($scope.totalCount>0){\r\n if (Math.ceil($scope.totalCount/pageSize)0) || $scope.totalItemCount==0) $scope.hideBtnMore = true;\r\n else $scope.hideBtnMore=false;\r\n \r\n $scope.resourceLoading=false;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.resourceLoading=false;\r\n });\r\n };\r\n $scope.loadMoreResource = function(){\r\n $scope.resource_page_size = $scope.resource_page_size+12;\r\n $scope.getResourceDef(1,$scope.resource_page_size); \r\n \r\n }\r\n $scope.saveHomePage = function()\r\n {\r\n \r\n MenuService.saveHomePage($scope.extendedUser).then(function(data) {\r\n $rootScope.globals.currentUser.uep = data.data;\r\n $cookies.put('globals', $rootScope.globals);\r\n $scope.extendedUser = $rootScope.globals.currentUser.uep;\r\n $scope.LoadTasks();\r\n MessagingService.addMessage(data.msg,'success');\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n };\r\n\r\n \r\n\r\n if ($rootScope.globals.currentUser.uep?.Params?.Onboarding!='completed' && $rootScope.globals.currentUser.uep?.Params?.Onboarding!='stoppedOnClient') $state.go(\"app.nomenu.onboarding\",{app_ref:undefined})\r\n /*\r\n ResourcesDataService.getResourceDefListByType(lang,'task').then(function(data) {\r\n \r\n $scope.taskList = data.data;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n */\r\n \r\n }\r\n \r\nhomeCtrl.$inject = ['$scope', '$rootScope','$state','$cookies','$location','KatalyoStateManager','ProcessingService','MessagingService','CodesService','AuthenticationService','MenuService','ResourcesDataService','TaskDataService','GridsterService','SettingsService','$timeout','$stateParams'];\r\n\r\n\r\nexport function marketCtrl($scope, $rootScope,$state,$cookies,$location,KatalyoStateManager,ProcessingService,MessagingService,CodesService,AuthenticationService,MenuService,ResourcesDataService,TaskDataService,GridsterService,SettingsService,$timeout,$stateParams){\r\n \r\n \r\n $scope.CTRL='marketCtrl';\r\n $rootScope.headTitle =\"Katalyo | Marketplace\";\r\n $scope.currentState=$state.current.name;\r\n $scope.selectedApp = {'name':''}\r\n $scope.localVars = {};\r\n $scope.fd={};\r\n $scope.taskDefinition={};\r\n var lang = $rootScope.globals.currentUser.lang;\r\n $scope.currentUserFirstName=$rootScope.globals.currentUser?.first_name;\r\n $scope.extendedUser = angular.copy($rootScope.globals.currentUser.uep);\r\n $scope.resource={};\r\n $scope.resource_page_size=12;\r\n $scope.is_superuser = $rootScope.globals.currentUser.is_superuser;\r\n $scope.appListParameters={iNumber:8}\r\n if ($scope.extendedUser==undefined) $scope.extendedUser = {};\r\n \r\n if (!$scope.params) $scope.params={}\r\n\r\n $scope.params.showAppList=1\r\n $scope.menu_service = MenuService;\r\n $scope.menu_service.clearSideMenu() \r\n\r\n\t\t$scope.showManifest = function (p_type) {\r\n\t\t\t\t$('#manifest').modal('show')\r\n\t\t\t\t$scope.modalAction='mainfest'\r\n\t\t\t\t//$scope.buildAppManifest()\r\n\t\t}\r\n\t\t\r\n \r\n $scope.getCurrentEnvData = function(){\r\n return $rootScope?.globals?.environments[$rootScope?.globals?.currentEnv]\r\n }\r\n \r\n\r\n if ($stateParams.env) {\r\n //debugger\r\n sessionStorage.setItem(\"environment\", $stateParams.env )\r\n $rootScope.globals.currentEnv = $stateParams.env \r\n }\r\n \r\n $scope.gsrvc=GridsterService;\r\n $scope.gsrvc.resetBodyBgColor() \r\n\r\n //get apps\r\n $scope.getApps = function()\r\n {\r\n $scope.appListLoading=true;\r\n ResourcesDataService.GetPublishedPublicResourcesByType('app-manifest').then(function (data) {\r\n \r\n $scope.appListLoading=false; \r\n $scope.appList =data.data;\r\n\r\n },function(error){\r\n $scope.appListLoading=false; \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n \r\n }\r\n \r\n\t\t\r\n\t//\tappList: installed: []\r\n\t\t//\t\tnew: Array(1)\r\n \r\n \r\n $scope.getApps();\r\n \r\n $scope.appManifest=[]\r\n $scope.getAppManifest = function (resourceUid) {\r\n $scope.manifestLoading = true\r\n $scope.appManifest.length=0\r\n ResourcesDataService.GetPublishedResourceVersion(resourceUid,'app-manifest',0,'public').then(function(data) {\r\n //debugger\r\n $scope.manifestLoading = false\r\n $scope.selectedApp=data.data\r\n $scope.appManifest=data.data?.definition\r\n $scope.params.selectedTab=1\r\n },function(error){\r\n\r\n $scope.manifestLoading = false\r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n \r\n };\r\n\r\n $scope.showInstall = function(app)\r\n {\r\n //debugger\r\n\t\t\t $scope.params.selectedApp=app\r\n $scope.params.showAppList=3\r\n $scope.getAppManifest(app.uid)\r\n \r\n };\r\n\t\t\r\n $scope.resourceInstalled = {}\r\n\r\n $scope.installResource = function()\r\n {\r\n $scope.installingResource = true\r\n ResourcesDataService.InstallResource($scope.selectedApp.id,$scope.selectedApp.uid,'application').then(\r\n\t\t\t\t\tfunction(data) {\r\n $scope.installingResource = false\r\n\t\t\t\t\t\t\t\t$('#manifest').modal('hide')\r\n $scope.resourceInstalled[$scope.selectedApp.uid]=true\r\n MessagingService.addMessage(data.data,'success');\r\n\t\t\t\t\t\t\t\t$scope.getApps();\r\n },function(error){\r\n $scope.installingResource = false\r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n \r\n };\r\n\r\n\r\n\r\n \r\n }\r\n \r\nexport function onboardingCtrl ($scope, $rootScope,$state,$cookies,MessagingService,MenuService,UserService,$timeout,$stateParams){\r\n\r\n $scope.CTRL='onboardingCtrl';\r\n $rootScope.headTitle =\"Katalyo | Onboarding\";\r\n $scope.currentState=$state.current.name;\r\n $scope.selectedApp = {'name':''}\r\n $scope.currentUserFirstName=$rootScope.globals.currentUser?.first_name;\r\n //$scope.extendedUser = angular.copy($rootScope.globals.currentUser.uep)\r\n \r\n $scope.menu_service = MenuService \r\n $scope.menu_service.clearSideMenu()\r\n \r\n\r\n $scope.openProcess= function (evt,orderNumber) {\r\n // Get all elements with class=\"onboard-grid\" and hide them\r\n document.querySelectorAll(\".onboard-grid\").forEach((content) => {\r\n content.style.display = \"none\";\r\n });\r\n\r\n // Get all elements with class=\"dot\" and remove \"dot-active\" class from them.\r\n document.querySelectorAll(\".dot\").forEach((content) => {\r\n content.classList.remove(\"dot-active\");\r\n });\r\n\r\n // Show the current tab, and add an \"dot-active\" class to the dotter.\r\n document.getElementById(orderNumber).style.display = \"grid\";\r\n document.getElementById('dot' + orderNumber).classList.add(\"dot-active\");\r\n }\r\n\r\n \r\n $scope.closeProcess=function (status,gotoServer) {// Last button closes the whole process.\r\n \r\n\t\t\tif (! $rootScope.globals?.currentUser?.userid) $state.go('app.navbar.home')\t\t\r\n\t\t\t\r\n // update onboarding status to finish\r\n if ($rootScope.globals.currentUser.uep==undefined) $rootScope.globals.currentUser.uep={}\r\n if ($rootScope.globals.currentUser.uep.Params==undefined) $rootScope.globals.currentUser.uep.Params={}\r\n $rootScope.globals.currentUser.uep.Params.Onboarding=status\r\n \r\n //ToDo - send onboarding status to server \r\n if (gotoServer)\r\n {\r\n UserService.saveUserExtended(status).then(function(data) {\r\n MessagingService.addMessage(data.data.msg,'success');\r\n //put object in cookie\r\n \r\n $cookies.putObject('currentUser', {\r\n userid : $rootScope.globals.currentUser.userid,\r\n username: $rootScope.globals.currentUser.username,\r\n first_name: $rootScope.globals.currentUser.first_name,\r\n last_name : $rootScope.globals.currentUser.last_name,\r\n // environments: $rootScope.globals.currentUser.environments,\r\n last_login:$rootScope.globals.currentUser.last_login,\r\n is_superuser:$rootScope.globals.currentUser.is_superuser,\r\n authdata: $rootScope.globals.currentUser.authdata,\r\n auth_type: $rootScope.globals.currentUser.auth_type,\r\n lang: $rootScope.globals.currentUser.lang,\r\n langObj: $rootScope.globals.currentUser.langObj,\r\n uep:{Params:{Onboarding:$rootScope.globals.currentUser.uep.Params.Onboarding}},\r\n organisation: {id:$rootScope.globals.currentUser.organisation.id}\r\n });\r\n\r\n $state.go('app.navbar.home')\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n\r\n } else $state.go('app.navbar.home')\r\n //go to home page\r\n \r\n\r\n }\r\n\r\n \r\n \r\n $scope.displayProcess=function (display) {\r\n document.querySelectorAll(\".onboarding-container\").forEach((content) => {\r\n content.style.display = display;\r\n }); \r\n }\r\n // Don't show again double check.\r\n $scope.dontShow=function () {\r\n $scope.displayProcess('none')\r\n document.getElementById(\"noShow\").style.display = \"grid\";\r\n }\r\n\r\n // Undo closes the whole modal.\r\n $scope.reopenProcess = function () {\r\n $scope.displayProcess('block')\r\n document.getElementById(\"noShow\").style.display = \"none\";\r\n }\r\n\r\n // Close and don't show again\r\n $scope.dontShowTrue = function () {\r\n $scope.closeProcess('completed',true)\r\n }\r\n \r\n}\r\n\r\n\r\n onboardingCtrl.$inject = ['$scope', '$rootScope','$state','$cookies','MessagingService','MenuService','UserService','$timeout','$stateParams'];\r\n\r\n \r\n export function demoCtrl ($scope, $rootScope,$state,$cookies,KatalyoStateManager,ProcessingService,MessagingService,CodesService,AuthenticationService,MenuService,ResourcesDataService,TaskDataService,GridsterService,$timeout,$stateParams){\r\n\r\n $scope.CTRL='demoCtrl';\r\n $rootScope.headTitle =\"Katalyo | Demo\";\r\n $scope.currentState=$state.current.name;\r\n //Login\r\n}\r\n\r\n\r\n demoCtrl.$inject = ['$scope', '$rootScope','$state','$cookies','KatalyoStateManager','ProcessingService','MessagingService','CodesService','AuthenticationService','MenuService','ResourcesDataService','TaskDataService','GridsterService','$timeout','$stateParams'];\r\n\r\n \r\nexport function navbarCtrl($scope,$rootScope,$state,ResourcesDataService,CodesService,MenuService,$stateParams,$cookies,$timeout,MessagingService){\r\n\r\n\r\n $scope.CTRL='navbarCtrl';\r\n $scope.menu_service = MenuService;\r\n $scope.menus= {editMode: $scope.menu_service.getMenuEditMode()};\r\n $scope.logoutLoaded=false;\r\n $scope.navbarLoaded=true;\r\n \r\n $scope.cMenus=[];\r\n $scope.is_superuser = $rootScope.globals.currentUser.is_superuser;\r\n $scope.currentPage = $state.current.name;\r\n $scope.currentNavbarId = $stateParams.navbar_id;\r\n $scope.menus.currentSideMenuId = $stateParams.sidemenu_id;\r\n var lang = $rootScope.globals.currentUser.lang;\r\n $scope.deploydir = indexJson['config']['deploydir']\r\n\r\n $scope.getNavbarItems = function(lang)\r\n {\r\n \r\n $scope.menu_service.getNavbars(lang).then(function (data) {\r\n \r\n if ($scope.currentNavbarId==undefined || isNaN($scope.currentNavbarId) || $scope.currentNavbarId===0 || $scope.currentNavbarId===\"\")\r\n {\r\n $scope.currentNavbarId = $scope.getLinkNavbarByName($scope.currentPage);\r\n }\r\n \r\n \r\n \r\n if ($scope.menu_service.getMenuEditMode())\r\n {\r\n $scope.setEditNavbar($scope.currentEditNavbarId);\r\n \r\n }\r\n else\r\n {\r\n $scope.setNavbar($scope.currentNavbarId);\r\n }\r\n \r\n \r\n });\r\n \r\n };\r\n \r\n \r\n \r\n \r\n //get navbarId by page id\r\n $scope.getLinkNavbar = function(pageid) {\r\n \r\n return $scope.menu_service.getPageNavbar(pageid,lang);\r\n \r\n };\r\n \r\n $scope.LoadLogout = function() {\r\n //$timeout(function(){\r\n $scope.logoutLoaded=true;\r\n // },1000);\r\n };\r\n //get navbarId by state name\r\n $scope.getLinkNavbarByName = function(currentStateName) {\r\n \r\n return $scope.menu_service.getNavbarByTargetName(currentStateName,lang);\r\n \r\n };\r\n \r\n \r\n $scope.setSideMenu = function(menuId) { \r\n $scope.menu_service.setSelectedSidemenu(menuId) ;\r\n //$scope.currentSideMenuId=menuId;\r\n };\r\n \r\n //SET current navbarId for editMode=false\r\n $scope.setNavbar = function(navbarId) {\r\n $scope.currentNavbarId = navbarId;\r\n $scope.menu_service.setCurrentNavbarId($scope.currentNavbarId,lang);\r\n \r\n //GET child menus\r\n $scope.cMenus = $rootScope.globals.currentUser.cMenus;\r\n \r\n if ($scope.menus.currentSideMenuId>0) $scope.setSideMenu($scope.menus.currentSideMenuId);\r\n // $scope.getMenusForNavbar();\r\n };\r\n \r\n //GET navbar definition details\r\n $scope.getNavbarDetails = function(navbarId,index) {\r\n \r\n \r\n $scope.currentEditNavbarIndex=index;\r\n $scope.setEditNavbar(navbarId);\r\n \r\n //navbarItem.Users\r\n \r\n }\r\n \r\n //SET current navbarId for editMode=true\r\n $scope.setEditNavbar = function(navbarId) {\r\n $scope.menu_service.navbarSelected = false;\r\n $timeout(function(){\r\n $scope.currentEditNavbarId = navbarId;\r\n $scope.menu_service.setCurrentNavbarId(navbarId,lang);\r\n \r\n });\r\n }\r\n \r\n //generate children navbar right\r\n \r\n $scope.checkIfLast = function() {\r\n \r\n var rval=true;\r\n // if ($scope.menu_service.navbarItems != undefined) \r\n for (var i=$scope.currentEditNavbarIndex+1; i<$scope.menu_service?.navbarItems?.length ;i++)\r\n {\r\n if ($scope.menu_service.navbarItems[$scope.currentEditNavbarIndex].s_menus_MenuPosition.id==$scope.menu_service.navbarItems[i].s_menus_MenuPosition.id)\r\n {\r\n rval= false;\r\n }\r\n }\r\n return rval;\r\n \r\n };\r\n \r\n $scope.checkIfFirst = function() {\r\n \r\n var rval=true;\r\n if ($scope.currentEditNavbarIndex==0) return rval;\r\n for (var i=$scope.currentEditNavbarIndex-1;i>=0;i--)\r\n {\r\n if ($scope.menu_service.navbarItems[$scope.currentEditNavbarIndex].s_menus_MenuPosition.id==$scope.menu_service.navbarItems[i].s_menus_MenuPosition.id)\r\n {\r\n rval= false;\r\n }\r\n }\r\n return rval;\r\n \r\n };\r\n \r\n $scope.moveNavbarLeft = function() {\r\n \r\n var element1 = $scope.menu_service.navbarItems[$scope.currentEditNavbarIndex];\r\n var newIndex=$scope.currentEditNavbarIndex-1;\r\n while ($scope.menu_service.navbarItems[$scope.currentEditNavbarIndex].s_menus_MenuPosition.id!=$scope.menu_service.navbarItems[newIndex].s_menus_MenuPosition.id && newIndex>0)\r\n {\r\n newIndex=newIndex-1;\r\n }\r\n \r\n $scope.menu_service.navbarItems.splice($scope.currentEditNavbarIndex, 1);\r\n $scope.menu_service.navbarItems.splice(newIndex, 0, element1);\r\n $scope.currentEditNavbarIndex = newIndex;\r\n \r\n };\r\n $scope.moveNavbarRight = function() {\r\n \r\n var element2 = $scope.menu_service.navbarItems[$scope.currentEditNavbarIndex];\r\n var newIndex=$scope.currentEditNavbarIndex+1;\r\n while ($scope.menu_service.navbarItems[$scope.currentEditNavbarIndex].s_menus_MenuPosition.id!=$scope.menu_service.navbarItems[newIndex].s_menus_MenuPosition.id && newIndex<$scope.menu_service.navbarItems.length-1)\r\n {\r\n newIndex=newIndex+1;\r\n }\r\n \r\n $scope.menu_service.navbarItems.splice($scope.currentEditNavbarIndex, 1);\r\n $scope.menu_service.navbarItems.splice(newIndex, 0, element2);\r\n $scope.currentEditNavbarIndex = newIndex;\r\n };\r\n \r\n $scope.setNavbarActive = function(navbarId) {\r\n if ($scope.navbarLoaded)\r\n {\r\n \r\n return navbarId==$scope.currentNavbarId ? \"active\" : \"\";\r\n }else $scope.setNavbarActive(navbarId);\r\n }\r\n \r\n $scope.newNavbar = function(){\r\n $scope.currentEditNavbarId = 0;\r\n $scope.menu_service.newNavbar(lang,'navbar');\r\n }; \r\n \r\n $scope.newChildNavbar = function(){\r\n $scope.currentEditNavbarId = 0;\r\n $scope.menu_service.newNavbar(lang,'navbarrightc');\r\n }; \r\n \r\n $scope.activeLinkEditNavbar = function(navbar) {\r\n $scope.navbarEdit = null;\r\n if ($scope.navbarLoaded)\r\n {\r\n if ($scope.currentEditNavbarId!=undefined && $scope.currentEditNavbarId!=null)\r\n {\r\n $scope.navbarEdit = $scope.currentEditNavbarId;\r\n }\r\n return navbar==$scope.navbarEdit ? \"active\" : \"\";\r\n }else $scope.activeLinkEditNavbar(navbar);\r\n };\r\n \r\n $scope.saveNavbarOrder = function()\r\n \r\n {\r\n \r\n $scope.menu_service.saveMenuOrder(lang,0).then(function(data) {\r\n \r\n MessagingService.addMessage(data.msg,'success');\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n \r\n }; \r\n \r\n $scope.gotoState=function(name,params)\r\n {\r\n $state.go(name,{navbarId: params});\r\n \r\n };\r\n\r\n}\r\n\r\nnavbarCtrl.$inject = ['$scope', '$rootScope','$state','ResourcesDataService','CodesService','MenuService','$stateParams','$cookies','$timeout','MessagingService'];\r\n\r\nexport function menuCtrl($scope,$rootScope,$state,CodesService,MenuService,$stateParams,$cookies,MessagingService)\r\n{\r\n \r\n $scope.CTRL='menuCtrl';\r\n $scope.menu_service = MenuService;\r\n $scope.menus={currentSideMenuId : $stateParams.sidemenu_id};\r\n var lang = $rootScope.globals.currentUser.lang;\r\n $scope.activeLinkSidemenu = function(n) {\r\n \r\n return ($state.current.name.indexOf(n)>=0 ? \"active\" : \"\");\r\n };\r\n \r\n $scope.setSideMenu = function(menuId) {\r\n \r\n $scope.menu_service.setSelectedSidemenu(menuId) ;\r\n $scope.menus.currentSideMenuId=menuId;\r\n };\r\n \r\n\r\n //GET side menu definition details\r\n $scope.getSideMenuDetails = function(sidemenuId,index) {\r\n $scope.currentEditSideMenuIndex=index;\r\n $scope.currentEditSideMenuId = sidemenuId;\r\n $scope.setSideMenu(sidemenuId);\r\n }\r\n \r\n $scope.moveMenuUp = function() {\r\n \r\n var element = $scope.menu_service.selectedNavbar.SideMenus[ $scope.currentEditSideMenuIndex];\r\n $scope.menu_service.selectedNavbar.SideMenus.splice( $scope.currentEditSideMenuIndex, 1);\r\n $scope.menu_service.selectedNavbar.SideMenus.splice( $scope.currentEditSideMenuIndex-1, 0, element);\r\n $scope.currentEditSideMenuIndex--;\r\n }\r\n $scope.moveMenuDown = function() {\r\n \r\n var element = $scope.menu_service.selectedNavbar.SideMenus[ $scope.currentEditSideMenuIndex];\r\n $scope.menu_service.selectedNavbar.SideMenus.splice( $scope.currentEditSideMenuIndex, 1);\r\n $scope.menu_service.selectedNavbar.SideMenus.splice( $scope.currentEditSideMenuIndex+1, 0, element);\r\n $scope.currentEditSideMenuIndex++;\r\n }\r\n \r\n $scope.newSideMenu = function(){\r\n $scope.currentEditSideMenuId = 0;\r\n $scope.menu_service.newSideMenu(lang);\r\n }; \r\n \r\n $scope.saveMenuOrder = function()\r\n \r\n {\r\n \r\n $scope.menu_service.saveMenuOrder(lang,1).then(function(data) {\r\n \r\n $scope.menu_service.setSidemenuOrder(lang); \r\n MessagingService.addMessage(data.msg,'success');\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n \r\n };\r\n \r\n $scope.activeLinkSideByMenuId = function(menuItem) {\r\n \r\n return ($scope.menus.currentSideMenuId==menuItem.s_menus_id ? true : false);\r\n \r\n };\r\n \r\n \r\n $scope.activeLinkSideEditByParams = function(params,menuItem) {\r\n \r\n \r\n return ($scope.currentEditSideMenuId==menuItem.s_menus_id ? true : false);\r\n \r\n \r\n };\r\n \r\n \r\n if ($scope.sideMenuId!=undefined && $scope.sideMenuId!=\"\" && $scope.sideMenuId!=null)\r\n {\r\n $scope.setSideMenu($scope.sideMenuId);\r\n }\r\n\r\n\r\n }\r\n \r\n menuCtrl.$inject = ['$scope', '$rootScope','$state','CodesService','MenuService','$stateParams','$cookies','MessagingService'];\r\n\r\nexport function toolboxCtrl ($scope,GridsterService) {\r\n $scope.CTRL='toolboxCtrl';\r\n $scope.gsrvc = GridsterService;\r\n}\r\ntoolboxCtrl.$inject =['$scope','GridsterService'];\r\nexport function taskToolboxCtrl ($scope,GridsterService) {\r\n \r\n $scope.CTRL='taskToolboxCtrl';\r\n $scope.gsrvc = GridsterService;\r\n \r\n}\r\ntaskToolboxCtrl.$inject = ['$scope','GridsterService']; \r\n\r\nexport function signupCtrl($scope,$http,$rootScope,$state,$timeout,vcRecaptchaService,RestApiService) {\r\n \r\n $scope.CTRL='signupCtrl';\r\n $rootScope.headTitle =\"Katalyo | Sign up\";\r\n $scope.signupSuccess = false;\r\n $scope.hideError=\"\";\r\n var widgetId;\r\n $scope.signup = function(){\r\n \r\n // var language = $rootScope.globals.currentUser.lang;\r\n //if (language == undefined) language=\"en-GB\";\r\n var language = \"en-GB\";\r\n $scope.dataLoading=true;\r\n \r\n let url = '../api/signup/';\r\n RestApiService.post(url,{'email':$scope.email,'captchaResponse':$scope.captchaResponse}).then(\r\n response =>{\r\n $timeout(function(){\r\n if (response.status === 200) {\r\n $scope.signupSuccess = true;\r\n } else {\r\n $scope.signupSuccess = false;\r\n $scope.errorMsg= response.data;\r\n vcRecaptchaService.reload(widgetId); \r\n }\r\n $scope.checkingSignup=false;\r\n $scope.signupCheckDone = true;\r\n $scope.dataLoading=false;\r\n });\r\n },error=>{\r\n $scope.dataLoading=false;\r\n $scope.signupSuccess = false;\r\n $scope.errorMsg=error;\r\n vcRecaptchaService.reload(widgetId); \r\n \r\n }); \r\n \r\n };\r\n\r\n \r\n $scope. onWidgetCreate = function(_widgetId){\r\n widgetId = _widgetId;\r\n };\r\n \r\n $scope.hideError = function(){\r\n $scope.errorMsg=\"\";\r\n };\r\n \r\n }\r\n\r\n signupCtrl.$inject = ['$scope','$http', '$rootScope','$state','$timeout','vcRecaptchaService','RestApiService'];\r\n \r\n \r\n \r\nexport function registerCtrl($scope,$cookies, $location, $http,$rootScope,$timeout,$state,$stateParams,AuthenticationService,RestApiService,MenuService,MessagingService) {\r\n \r\n $scope.CTRLNAME='registerCtrl';\r\n $rootScope.headTitle =\"Katalyo | Register | Onboarding\";\r\n \r\n //get data from hash and email\r\n $scope.signupkey=$stateParams.signupid;\r\n $scope.InvalidRequest=false;\r\n $scope.checkingSignup=true;\r\n $scope.signupOK=false;\r\n $scope.signupCheckDone=false;\r\n $scope.checkingEOSAccount = false;\r\n $scope.register={};\r\n \r\n let params = $stateParams\r\n params.env=undefined\r\n\r\n AuthenticationService.ClearCredentials()\r\n\r\n $scope.register.organisation_type=\"Personal\";\r\n $scope.register.signup_key=$scope.signupkey;\r\n \r\n var weakRegularExp = new RegExp(\"^(?=.*[a-z])|(?=.*[A-Z])|(?=.*[0-9])|(?=.*[!@#\\$%\\^&\\*\\\"\\(\\)\\=\\?\\+\\'<>;:,\\-\\._/\\\\\\\\])(?=.{8,})\"); \r\n var midRegularExp = new RegExp(\"^((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))(?=.*[!@#\\$%\\^&\\*\\\"\\(\\)\\=\\?\\+\\'<>;:,\\-\\._/\\\\\\\\])(?=.{8,})\"); \r\n var strongRegularExp = new RegExp(\"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\\$%\\^&\\*\\\"\\(\\)\\=\\?\\+\\'<>;:,\\-\\._/\\\\\\\\])(?=.{8,})\"); \r\n \r\n $scope.checkPassword = function(element)\r\n { \r\n if (!strongRegularExp.test(element.$modelValue)) element.$setValidity(\"required\",false);\r\n }\r\n \r\n\t \r\n $scope.checkSignup = function(){\r\n let url = '../api/check-signup/';\r\n RestApiService.post(url,{'signupkey':$scope.signupkey})\r\n\t\t\t.then(response =>{\r\n if (response.status === 200) {\r\n $timeout(function(){ \r\n $scope.signupOK = true;\r\n $scope.checkingSignup=false;\r\n $scope.signupCheckDone = true;\r\n }) \r\n } else {\r\n $timeout(function(){ \r\n $scope.signupOK = false;\r\n $scope.checkingSignup=false;\r\n $scope.signupCheckDone = true;\r\n $scope.InvalidRequest = true; \r\n\t\t if (response.data) $scope.errorMsg = response.data \r\n }) \r\n }\r\n\r\n },(error) => {\r\n\t\t\t$timeout(function(){\r\n $scope.signupOK = false;\r\n $scope.checkingSignup=false;\r\n $scope.signupCheckDone = true;\r\n\t\t\t})\r\n\t })\r\n\t\t\t\r\n\r\n };\r\n \r\n \r\n $scope.fn_register = function(valid){\r\n \r\n if (!valid) return\r\n\r\n $scope.dataLoading = true\r\n let url = '../api/register/';\r\n RestApiService.post(url,$scope.register).then(response =>{\r\n \r\n //$timeout(function(){\r\n if (response.status === 200) { // if successful, bind success message to message\t\r\n\t\t\t\t\t\t\t\t\t //set user info\r\n\t\t\t\t\t\t\t\t\t$rootScope.globals.currentUser = response.data.data\t\r\n\t\t\t\t\t\t\t\t\tsessionStorage.setItem(\"environment\", $rootScope.globals.currentUser.uep.defaultenv )\r\n\t\t\t\t\t\t\t\t\t//$location.search({'env': $rootScope.globals.currentUser.uep.defaultenv })\r\n\t\t\t\t\t\t\t\t\t$state.params.env = $rootScope.globals.currentUser.uep.defaultenv\r\n $state.transitionTo($state.current.name, $state.params, { notify: false, location:'replace', inherit:true})\r\n\r\n\t\t\t\t\t\t\t\t\tAuthenticationService.SetCredentials(response.data.data, $scope.register.username,$scope.register.password);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tAuthenticationService.getOrgSchemas($rootScope.globals.currentUser?.organisation.id)\r\n\t\t\t\t\t\t\t\t\t.then(response2 => {\t\r\n\t\t\t\t\t\t\t\t\t\t\tif (response2.data) \t\r\n\t\t\t\t\t\t\t\t\t\t\t\t$rootScope.globals.environments = response2.data.reduce((acc, obj) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tacc[obj.id.toString()] = obj;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn acc;\r\n\t\t\t\t\t\t\t\t\t\t\t\t}, {});\t\r\n\r\n MessagingService.addMessage(response.data.msg,'success');\r\n $scope.dataLoading = false\r\n \r\n $state.go(\"app.navbar.home\", {env: $rootScope.globals.currentUser.uep.defaultenv }); //go to home page \r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t,(error) => {\r\n $scope.errorMsg = error.data; \r\n MessagingService.addMessage(error.data,'error');\r\n $scope.dataLoading = false \r\n }) \r\n\r\n } else { //response not 200!\r\n\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t $timeout(function(){\r\n\t\t\t\t\t\t\t\t\t\t\t$scope.errorMsg = response.data; \r\n\t\t\t\t\t\t\t\t\t\t\t//MessagingService.addMessage(response.data,'error'); //no message widget here available\r\n\t\t\t\t\t\t\t\t\t\t\t$scope.dataLoading = false \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t});\r\n\t \r\n \r\n }\r\n\t\t //}); //timeout!\r\n\t\t});\r\n \t\t\t \r\n };\r\n \r\n \r\n if ($scope.signupkey==undefined || $scope.signupkey==\"\") {\r\n $scope.signupCheckDone = true;\r\n $scope.checkingSignup=false;\r\n \r\n }else $scope.checkSignup(); \r\n\r\n \r\n \r\n\t\t\t\t\r\n $scope.convertMemory = function(sizeInBytes){\r\n \r\n var convertedMemory={size:0,unit:''};\r\n if (sizeInBytes==0)\r\n {\r\n convertedMemory.size=sizeInBytes;\r\n convertedMemory.unit = \"\";\r\n }\r\n else if ((sizeInBytes/1024)<0.5)\r\n {\r\n convertedMemory.size=sizeInBytes;\r\n convertedMemory.unit = \"Bytes\";\r\n }\r\n else if ((sizeInBytes/1024)<1024)\r\n {\r\n convertedMemory.size=(sizeInBytes/1024).toFixed(2);\r\n \r\n convertedMemory.unit =\"KB\";\r\n \r\n }\r\n else if (sizeInBytes/1024<1024*1024)\r\n {\r\n convertedMemory.size=(sizeInBytes/1024/1024).toFixed(2);\r\n \r\n convertedMemory.unit =\"MB\";\r\n }\r\n else\r\n {\r\n convertedMemory.size=(sizeInBytes/1024/1024/1024).toFixed(2);\r\n \r\n convertedMemory.unit =\"GB\";\r\n }\r\n \r\n return convertedMemory;\r\n }; \r\n \r\n \r\n\t$scope.convertTime = function (sizeInMicroSec) {\r\n\r\n\t\tvar convertedTime = { size: 0, unit: '' };\r\n\t\tif (sizeInMicroSec == 0) {\r\n\t\t\tconvertedTime.size = sizeInMicroSec;\r\n\t\t\tconvertedTime.unit = \"\";\r\n\t\t}\r\n\t\telse if ((sizeInMicroSec / 1000) < 0.01) {\r\n\t\t\tconvertedTime.size = sizeInMicroSec;\r\n\t\t\tconvertedTime.unit = \"microsec\";\r\n\t\t}\r\n\t\telse if ((sizeInMicroSec / 1000) < 1000) {\r\n\t\t\tconvertedTime.size = (sizeInMicroSec / 1000).toFixed(2);\r\n\t\t\tconvertedTime.unit = \"ms\";\r\n\t\t}\r\n\t\telse if (sizeInMicroSec / 1000 / 1000 < 1000) {\r\n\t\t\tconvertedTime.size = (sizeInMicroSec / 1000 / 1000).toFixed(2);\r\n\t\t\tconvertedTime.unit = \"s\";\r\n\t\t}\r\n\t\telse if (sizeInMicroSec / 1000 / 1000 / 60 < 60) {\r\n\t\t\tconvertedTime.size = (sizeInMicroSec / 1000 / 1000 / 60).toFixed(2);\r\n\t\t\tconvertedTime.unit = \"min\";\r\n\t\t}\r\n\t\telse {\r\n\t\t\tconvertedTime.size = (sizeInMicroSec / 1000 / 1000 / 60 / 60).toFixed(2);\r\n\t\t\tconvertedTime.unit = \"h\";\r\n\t\t}\r\n\r\n\t\treturn convertedTime;\r\n\t}; \r\n \r\n}\r\n \r\nregisterCtrl.$inject = ['$scope','$cookies', '$location', '$http', '$rootScope','$timeout','$state','$stateParams','AuthenticationService','RestApiService','MenuService','MessagingService'];\r\n\r\nexport function unregisterCtrl($scope,$cookies, $location,$http,$rootScope,$timeout,$state,$stateParams,AuthenticationService,RestApiService,MenuService,MessagingService) {\r\n \r\n $scope.CTRLNAME='unregisterCtrl';\r\n $rootScope.headTitle =\"Katalyo | Unregister | Onboarding\";\r\n \r\n //get data from hash and email\r\n $scope.signupkey=$stateParams.signupid;\r\n $scope.InvalidRequest=false;\r\n $scope.checkingSignup=true;\r\n $scope.signupOK=false;\r\n $scope.signupCheckDone=false;\r\n $scope.checkingEOSAccount = false;\r\n $scope.register={};\r\n \r\n let params = $stateParams\r\n params.env=undefined\r\n\r\n AuthenticationService.ClearCredentials()\r\n\r\n $scope.register.organisation_type=\"Personal\";\r\n $scope.register.signup_key=$scope.signupkey;\r\n \r\n \r\n $scope.checkSignup = function(){\r\n let url = '../api/check-signup/';\r\n RestApiService.post(url,{'signupkey':$scope.signupkey,'type':'unregister'})\r\n .then(response =>{\r\n if (response.status === 200) {\r\n $timeout(function(){ \r\n $scope.signupOK = true;\r\n $scope.checkingSignup=false;\r\n $scope.signupCheckDone = true;\r\n }) \r\n } else {\r\n $timeout(function(){ \r\n $scope.signupOK = false;\r\n $scope.checkingSignup=false;\r\n $scope.signupCheckDone = true;\r\n $scope.InvalidRequest = true; \r\n if (response.data) $scope.errorMsg = response.data \r\n }) \r\n }\r\n\r\n },(error) => {\r\n $timeout(function(){\r\n $scope.signupOK = false;\r\n $scope.checkingSignup=false;\r\n $scope.signupCheckDone = true;\r\n })\r\n })\r\n \r\n\r\n };\r\n \r\n $scope.goto_registration= function()\r\n {\r\n $state.go(\"app.register\", {signupid: $scope.signupkey });\r\n }\r\n\r\n $scope.fn_unregister = function(){\r\n \r\n \r\n $scope.dataLoading = true\r\n let url = '../api/unregister/'\r\n RestApiService.post(url,$scope.signupkey).then(response =>{\r\n \r\n \r\n if (response.status === 200) { // if successful, bind success message to message \r\n $timeout(function(){ \r\n $scope.dataLoading = false\r\n $scope.retMsg = response.data; \r\n $scope.unregisterOk = true; \r\n }); //timeout!\r\n } else { //response not 200!\r\n $scope.errorMsg = response.data; \r\n MessagingService.addMessage(response.data,'error');\r\n $scope.dataLoading = false \r\n }\r\n \r\n });\r\n \r\n };\r\n \r\n \r\n if ($scope.signupkey==undefined || $scope.signupkey==\"\") {\r\n $scope.signupCheckDone = true;\r\n $scope.checkingSignup=false;\r\n \r\n }else $scope.checkSignup(); \r\n\r\n \r\n \r\n \r\n \r\n}\r\n \r\nunregisterCtrl.$inject = ['$scope','$cookies', '$location', '$http','$rootScope','$timeout','$state','$stateParams','AuthenticationService','RestApiService','MenuService','MessagingService'];\r\n \r\nexport function appSettingsCtrl($scope, $rootScope,$state,$cookies,$location,KatalyoStateManager,ProcessingService,MessagingService,CodesService,AuthenticationService,MenuService,ResourcesDataService,TaskDataService,GridsterService,SettingsService,$timeout,$stateParams){\r\n \r\n //debugger\r\n\t\t$scope.newgroup={}\r\n $scope.CTRL='appSettingsCtrl';\r\n $rootScope.headTitle =\"Katalyo | Settings\";\r\n $scope.currentState=$state.current.name;\r\n $scope.app = {'name':''}\r\n $scope.localVars = {};\r\n\r\n var lang = $rootScope.globals.currentUser.lang;\r\n\r\n $scope.resource={};\r\n $scope.resource_page_size=12;\r\n\t\t$scope.localVars.showList=1\r\n\t\t\t\t\t\r\n\t\t$scope.all_groups={} // holding all groups found\r\n\t\t$scope.all_page_groups={}\r\n\t\t$scope.all_menu_groups={} // holding all menu groups found\t\t\t\t\t\r\n\t\t$scope.allchecked={} // check all groups \r\n\t\t$scope.pageDict= {}\t\t\r\n\t\t$scope.menuDict= {}\t\t\r\n\t\t$scope.resourceDict= {}\r\n\r\n\t\t//default is page\r\n\t\t$scope.resourceDict=$scope.pageDict\r\n\t\t$scope.all_groups = $scope.all_page_groups\r\n \r\n $scope.menu_service = MenuService;\r\n\t\t$scope.menu_service.clearSideMenu()\r\n let app_ref = $location.search().app_ref \r\n let over = false\r\n if (!app_ref) over=true\r\n $scope.menu_service.loadDefaultMenu(over)\r\n\t\t\t\r\n\t\r\n\t\t$scope.show = function(what)// get-menus/(?P.+)/(?P.+)/(?P.+)/(?P.+)\r\n\t\t{\r\n\t\t\tif (what=='page') {\r\n\t\t\t $scope.localVars.showList=1\r\n\t\t\t $scope.resourceDict = $scope.pageDict\r\n\t\t\t $scope.all_groups = $scope.all_page_groups\r\n\t\t\t}\r\n\r\n\t\t\tif (what=='admin') {\r\n\t\t\t $scope.localVars.showList=2\t \r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (what=='menu') {\r\n\t\t\t $scope.localVars.showList=3\r\n\t\t\t $scope.resourceDict = $scope.menuDict\r\n\t\t\t $scope.all_groups = $scope.all_menu_groups\r\n\t\t\t} \r\n\t\t}\r\n\t \r\n\t\t \r\n $scope.saveApplication = function (isFormValid) \r\n\t {\r\n let app_data = {appId: $scope.app.uid, type: 'admins', admins: {users: $scope.localVars.adminUsers, groups: $scope.localVars.adminGroups}, version: $scope.app.version}\r\n\t\tif (isFormValid)\r\n {\r\n $scope.savingApp = true\r\n ResourcesDataService.saveApplication(app_data).then(\r\n\t\t\t\t\tfunction(data) { \r\n\t\t\t\t\t\t$scope.savingApp = false \r\n\t\t\t\t\t\tMessagingService.addMessage(data.data.msg,'success');\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfunction(error){\r\n\t\t\t\t\t\t$scope.savingApp = false\r\n\t\t\t\t\t\tMessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t})\r\n \r\n } else MessagingService.addMessage('App description is mandatory!','error'); \r\n\r\n };\r\n\t \r\n \r\n\t\r\n\t\t$scope.getCurrentEnvData = function(){\r\n\t\t\treturn $rootScope?.globals?.environments[$rootScope?.globals?.currentEnv]\r\n\t\t}\r\n\t\t\r\n\t\tif ($stateParams.env) {\r\n\t\t\tsessionStorage.setItem(\"environment\", $stateParams.env )\r\n\t\t\t$rootScope.globals.currentEnv = $stateParams.env \r\n\t\t}\r\n \r\n $scope.gsrvc=GridsterService;\r\n $scope.gsrvc.resetBodyBgColor() \r\n $scope.params={showAppList:1,subscribing:false};\r\n let tab= $location.search().tab\r\n if (tab!=undefined) $scope.params.showAppList = tab\r\n \r\n \r\n\r\n \r\n\t\t$scope.inputchanged = function(item, g)\r\n\t\t{\r\n\t\t\titem[g.gid].gid=g.gid\r\n\t\t\titem[g.gid].gname=g.gname\r\n\t\t\t\r\n\t\t}\r\n\t \r\n\t\t$scope.addGroup = function(newgroup)\r\n\t\t{\r\n\t\t\t//'3': {'$checked': True, '$resourceid': 21, 'gid': 3, 'gname': 'josjednalang'\r\n\t\t\t$scope.showResourceList=false\r\n\t\t\t\r\n\t\t\t$scope.all_groups[newgroup.uid]= {gid: newgroup.uid, gname: newgroup.name}\r\n\t\t\t\r\n\t\t\tfor (const [key, resource] of Object.entries($scope.resourceDict)) {\r\n\t\t\t\t\tif (typeof resource === 'object' && resource !== null) {\r\n\t\t\t\t\t\tresource[newgroup.uid]= { '$checked': null, 'gid': newgroup.uid, 'gname': newgroup.name }\r\n\t\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t $timeout(function(){$scope.showResourceList=true })\r\n\t\t}\r\n\t\t\r\n\t\t\r\n $scope.getApps = function()// USED\r\n {\r\n\t\t\t//debugger\r\n $scope.appListLoading=true;\r\n ResourcesDataService.GetResourceSubscriptions('application').then(function (data) { \r\n $scope.appListLoading=false; \r\n $scope.appList =data.data;\r\n },function(error){\r\n $scope.appListLoading=false; \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n \r\n }\r\n \r\n $scope.getMyApps = function()\r\n {\r\n ResourcesDataService.GetResourceSubscriptions('application').then(function (data) { \r\n $scope.appList =data.data;\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n }); \r\n }\r\n \r\n $scope.getUnsubscribedAppsFiltered = function(start,end)\r\n {\r\n ResourcesDataService.GetResourceSubscriptions('application').then(function (data) { \r\n $scope.appList =data.data;\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }\r\n \r\n \r\n \r\n $scope.getApps();\r\n\t\t$scope.showResourceList = false\r\n\r\n \r\n $scope.findLink = function (link_type,app) {\r\n for (let i=0;i0){\r\n if (Math.ceil($scope.totalCount/pageSize)0) || $scope.totalItemCount==0) $scope.hideBtnMore = true;\r\n else $scope.hideBtnMore=false;\r\n \r\n $scope.resourceLoading=false;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.resourceLoading=false;\r\n });\r\n };\r\n\t\t\r\n\t\t\r\n $scope.loadMoreApplications = function(){\r\n $scope.resource_page_size = $scope.resource_page_size+12;\r\n $scope.getApplications(1,$scope.resource_page_size); \r\n }\r\n \r\n \r\n $scope.getResourceDef = function(pageNumber,pageSize){\r\n \r\n $scope.resource_page_size = pageSize;\r\n $scope.resourceLoading=true;\r\n \r\n var filter=$scope.resource;\r\n \r\n if ($scope.totalCount>0){\r\n if (Math.ceil($scope.totalCount/pageSize)0) || $scope.totalItemCount==0) $scope.hideBtnMore = true;\r\n else $scope.hideBtnMore=false;\r\n \r\n $scope.resourceLoading=false;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.resourceLoading=false;\r\n });\r\n };\r\n\t\t\r\n\t\t\r\n $scope.loadMoreResource = function(){\r\n $scope.resource_page_size = $scope.resource_page_size+12;\r\n $scope.getResourceDef(1,$scope.resource_page_size); \r\n \r\n }\r\n\t\t\r\n\t\t\r\n $scope.SaveResourceAccess = function()\r\n { \r\n\t\t\t//remove entries with \"checked= null\"\r\n\t\t\tfor (let key in $scope.resourceDict) {\r\n\t\t\t\tif ($scope.resourceDict.hasOwnProperty(key)) {\r\n\t\t\t\t\tlet entry = $scope.resourceDict[key];\r\n\t\t\t\t\tfor (let subKey in entry) {\r\n\t\t\t\t\t\tif (entry[subKey][\"$checked\"] == null && entry[subKey]['$resourceid']) {\r\n\t\t\t\t\t\t\tdelete entry[subKey];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (entry['userCanWrite']==false) {\r\n\t\t\t\t\t\t//debugger $scope.localVars.showList=1\r\n\t\t\t\t\t\tdelete $scope.resourceDict[key]\r\n\t\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\tif ($scope.localVars.showList==1) //saving admin-groups\r\n ResourcesDataService.SaveResourceAccess($scope.app, $scope.resourceDict).then(\r\n\t\t\t\tfunction(response) {\r\n MessagingService.addMessage('Inserted:' + response.data.inserted.length + ', Updated:' + response.data.updated.length + ' items','success');\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n })\r\n\t\t\r\n\t\tif ($scope.localVars.showList==3) //saving menu-groups\r\n ResourcesDataService.SaveMenuAccess($scope.app, $scope.resourceDict).then(\r\n\t\t\t\tfunction(response) {\r\n MessagingService.addMessage('Inserted:' + response.data.inserted.length + ', Updated:' + response.data.updated.length + ' items','success');\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n })\r\n\t\t\t \r\n\t\t\t \r\n }\r\n\t\t\r\n\t\t\r\n\t\t$scope.reloadPage = function()\r\n\t\t{\r\n\t\t\t$scope.selectedApp=null\r\n\t\t\t$state.reload()\t\r\n\t\t}\r\n\t\t\r\n\t\t$scope.allChanged = function(g)\r\n\t\t{\t\t\r\n\t\t\tfor (const [key, resource] of Object.entries($scope.resourceDict)) {\r\n\t\t\t\t\tif (resource[g.gid] && $scope.allchecked[g.gid]!=undefined) resource[g.gid].$checked = $scope.allchecked[g.gid]\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t$scope.loadAppSettings = function(app)\r\n\t\t{\t\r\n\t\t\t ResourcesDataService.GetResourceAccess(app).then(\r\n\t\t\t \r\n\t\t\t\tresponse => {\r\n if (response.status === 200 || response.status === 201 ) { \r\n\t\t\t\t\t\t$scope.app = app\r\n \t$scope.resourceList= response.data.access_records\t\r\n\t\t\t\t\t\t$scope.localVars.adminUsers= response.data.admin_users\r\n\t\t\t\t\t\t$scope.localVars.adminGroups= response.data.admin_groups\r\n\t\t\t\t\t\t$scope.allGroups = response.data.allgroups\r\n\t\t\t\t\t\t$scope.showResourceList = true\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t//debugger\r\n\t\t\t\t\t\tfor (const item of app.ResourceExtended ) {\r\n\t\t\t\t\t\t\tif (item.LinkType=='app-menu') $scope.localVars.appMenu = {id: item.Resource2, version: item.Version}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tfor (const [key, resource] of Object.entries($scope.resourceList)) {\r\n\t\t\t\t\t\t\tif (resource.itemSubType==\"menu\") $scope.localVars.appMenu = { 'id':key,'version':resource.version}\r\n\t\t\t\t\t\t\tif (resource.itemSubType!=\"page\") delete $scope.resourceList[key] //delete non pages\r\n\t\t\t\t\t\t\tif (resource.version==null) delete $scope.resourceList[key] //delete if version is null (for examp. Home page) TODO - find another way to detect home page\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tfor (const [gid, access] of Object.entries(resource.$access)) {\r\n\t\t\t\t\t\t\t\t\t$scope.all_page_groups[gid]= { 'gid':gid, 'gname': access.$group_name }\r\n\t\t\t\t\t\t\t}\t\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t//create resource dict\r\n\t\t\t\t\t\tfor (const [key, item] of Object.entries($scope.resourceList)) {\r\n\t\t\t\t\t\t\t//create empty resource object if undefined\r\n\t\t\t\t\t\t\tif ($scope.resourceDict?.[item.id]==undefined) {\t\r\n\t\t\t\t\t\t\t\t$scope.resourceDict[item.id]={}\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tfor (const [group_id, resource] of Object.entries($scope.all_page_groups)) {//add all groups\r\n\t\t\t\t\t\t\t\t\t\t$scope.resourceDict[item.id][group_id] = {\t\r\n\t\t\t\t\t\t\t\t\t\t\t'$checked': item.$access?.[group_id]?.e , '$resourceid': item.id, 'gid': resource.gid, \t'gname': resource.gname\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t$scope.resourceDict[item.id]['name']= item.itemName\r\n\t\t\t\t\t\t\t$scope.resourceDict[item.id]['type']= item.itemSubType\r\n\t\t\t\t\t\t\t$scope.resourceDict[item.id]['userCanWrite']= item.$userCanWrite ?? true\r\n\t\t\t\t\t\t\t$scope.resourceDict[item.id]['$resource_version']= item.version\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t// getMenusExe (menuId,type,version,refresh){\r\n\t\t\t\t\t\t\t$scope.menu_service.getMenusExe ($scope.localVars.appMenu.id,'a', $scope.localVars.appMenu.version,false).then( \r\n\t\t\t\t\t\t\t\t(data) => {\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t$scope.menuList= data.menus\r\n\t\t\t\t\t\t\t\t\tfor (const item of $scope.menuList) {\r\n\t\t\t\t\t\t\t\t\t\t\t$scope.all_menu_groups[item.auth_group_uid]= { 'gid':item.auth_group_uid, 'gname': item.auth_group_name}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t//create resource dict\r\n\t\t\t\t\t\t\t\t\tfor (const item of $scope.menuList) {\r\n\t\t\t\t\t\t\t\t\t\tif ($scope.menuDict?.[item.s_menus_id]==undefined) \t$scope.menuDict[item.s_menus_id]={}\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tfor (const [group_uid, resource] of Object.entries($scope.all_menu_groups)) {\r\n\t\t\t\t\t\t\t\t\t\t\t//add all groups\r\n\t\t\t\t\t\t\t\t\t\t\tif ($scope.menuDict[item.s_menus_id][group_uid]==undefined) \t$scope.menuDict[item.s_menus_id][group_uid] = {\t'$checked': null , '$resourceid': item.s_menus_id, 'gid': resource.gid, \t'gname': resource.gname\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tif (item.auth_group_uid==group_uid)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t$scope.menuDict[item.s_menus_id][group_uid]['$checked'] = true\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t$scope.menuDict[item.s_menus_id]['name']= item.s_menus_Name\r\n\t\t\t\t\t\t\t\t\t\t$scope.menuDict[item.s_menus_id]['type']= item.s_menus_MenuType\r\n\t\t\t\t\t\t\t\t\t\t//$scope.menuDict[item.s_menus_id]['userCanWrite']= item?.$userCanWrite ?? true\r\n\t\t\t\t\t\t\t\t\t\t$scope.menuDict[item.s_menus_id]['userCanWrite']= true\r\n\t\t\t\t\t\t\t\t\t\t//$scope.menuDict[item.id]['$resource_version']= item.version\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\r\n\t\t\t\t\r\n } else {\r\n MessagingService.addMessage('Get resources in manifest!', 'info'); \r\n } \r\n\t\t\t\t\t\r\n }, \r\n\t\t\t\terror => {\r\n\t\t\t\t\t MessagingService.addMessage(error.msg,'error'); \r\n\t\t\t\t}\r\n\t\t\t\t);\r\n\t}\r\n\r\n \r\n\r\n \r\n \r\n}\r\n \r\nappSettingsCtrl.$inject = ['$scope', '$rootScope','$state','$cookies','$location','KatalyoStateManager','ProcessingService','MessagingService','CodesService','AuthenticationService','MenuService','ResourcesDataService','TaskDataService','GridsterService','SettingsService','$timeout','$stateParams'];\r\n\r\n ","'use strict';\r\n\r\nimport appController,{appSettingsCtrl, homeNavbarCtrl,errorNotFoundCtrl,errorCtrl,homeCtrl,onboardingCtrl,signupCtrl,registerCtrl,unregisterCtrl,navbarCtrl,menuCtrl,toolboxCtrl,taskToolboxCtrl,marketCtrl} from './indexCtrls.js';\r\nimport loginCtrl,{selectenvironmentCtrl,ssoCtrl,logoutCtrl,changePasswordRequestCtrl,changePasswordCtrl} from '../../0002_auth/angularJS/authCtrls.js';\r\nimport importDataCtrl,{datasetTransformCtrl,resourceFormCtrl,resourceDataCtrl,resourceDataRecordCtrl,newResourceCtrl,editResourceCtrl,viewResourceCtrl,resourceListCtrl,menusDefinitionCtrl,integrationDefinitionCtrl,applicationDefinitionCtrl,notificationDefinitionCtrl,tokenDefinitionCtrl,smartContractDefinitionCtrl,appMenuDefinitionCtrl,resourceFormComponent,toolboxComponent,pagesCtrl,pagesDefinitionCtrl,mappingDefinitionCtrl,mappingsFormCtrl,formDefinitionCtrl} from '../../0003_resources/angularJS/resourcesCtrls.js';\r\nimport codesDataCtrl,{usersSecurityCtrl,codesDetailsCtrl,codesNewCtrl,userDetailsCtrl,usersDefinitionCtrl,groupsCtrl,organisationCtrl} from '../../0004_settings/angularJS/settingsCtrls.js';\r\nimport taskListCtrl,{taskFormCtrl,taskDefinitionCtrl,taskDefinitionListCtrl,taskInitiateListCtrl,taskProcCtrl,taskPublicCtrl,taskInitiateCtrl,taskExecuteCtrl,taskExecuteListCtrl} from '../../0005_tasks/angularJS/tasksCtrls.js';\r\nimport {vpageCtrl} from '../../0006_vpage/angularJS/vpageCtrls.js';\r\n\r\nvar moduleCtrls='KatalyoCtrls';\r\n\r\nvar module = angular.module(moduleCtrls, []);\r\n\r\nmodule\r\n.controller('selectenvironmentCtrl',selectenvironmentCtrl)\r\n.controller('appController',appController)\r\n.controller('homeNavbarCtrl',homeNavbarCtrl)\r\n.controller('errorNotFoundCtrl',errorNotFoundCtrl)\r\n.controller('errorCtrl',errorCtrl)\r\n.controller('homeCtrl',homeCtrl)\r\n.controller('onboardingCtrl',onboardingCtrl)\r\n.controller('signupCtrl',signupCtrl)\r\n.controller('registerCtrl',registerCtrl)\r\n.controller('unregisterCtrl',unregisterCtrl)\r\n.controller('appSettingsCtrl',appSettingsCtrl)\r\n.controller('navbarCtrl',navbarCtrl)\r\n.controller('menuCtrl',menuCtrl)\r\n.controller('menusDefinitionCtrl',menusDefinitionCtrl)\r\n.controller('toolboxCtrl',toolboxCtrl)\r\n.controller('toolboxComponent',toolboxComponent)\r\n.controller('taskToolboxCtrl',taskToolboxCtrl)\r\n.controller('loginCtrl',loginCtrl)\r\n.controller('ssoCtrl',ssoCtrl)\r\n.controller('changePasswordRequestCtrl',changePasswordRequestCtrl)\r\n.controller('changePasswordCtrl',changePasswordCtrl)\r\n.controller('mappingsFormCtrl', mappingsFormCtrl)\r\n.controller('logoutCtrl',logoutCtrl)\r\n.controller('importDataCtrl',importDataCtrl)\r\n.controller('datasetTransformCtrl',datasetTransformCtrl)\r\n.controller('resourceFormCtrl',resourceFormCtrl)\r\n.controller('resourceDataCtrl',resourceDataCtrl)\r\n.controller('resourceDataRecordCtrl',resourceDataRecordCtrl)\r\n.controller('resourceFormComponent',resourceFormComponent)\r\n.controller('resourceListCtrl',resourceListCtrl)\r\n.controller('newResourceCtrl',newResourceCtrl)\r\n.controller('editResourceCtrl',editResourceCtrl)\r\n.controller('viewResourceCtrl',viewResourceCtrl)\r\n.controller('pagesCtrl',pagesCtrl)\r\n.controller('pagesDefinitionCtrl',pagesDefinitionCtrl)\r\n.controller('applicationDefinitionCtrl',applicationDefinitionCtrl)\r\n.controller('notificationDefinitionCtrl',notificationDefinitionCtrl)\r\n.controller('tokenDefinitionCtrl',tokenDefinitionCtrl)\r\n.controller('smartContractDefinitionCtrl',smartContractDefinitionCtrl)\r\n.controller('codesDataCtrl',codesDataCtrl)\r\n.controller('codesDetailsCtrl',codesDetailsCtrl)\r\n.controller('codesNewCtrl',codesNewCtrl)\r\n.controller('marketCtrl',marketCtrl)\r\n.controller('userDetailsCtrl',userDetailsCtrl)\r\n.controller('usersSecurityCtrl',usersSecurityCtrl)\r\n.controller('usersDefinitionCtrl',usersDefinitionCtrl)\r\n.controller('groupsCtrl',groupsCtrl)\r\n.controller('organisationCtrl',organisationCtrl)\r\n.controller('taskListCtrl',taskListCtrl)\r\n.controller('taskFormCtrl',taskFormCtrl)\r\n.controller('taskDefinitionCtrl',taskDefinitionCtrl)\r\n.controller('taskDefinitionListCtrl',taskDefinitionListCtrl)\r\n.controller('taskInitiateListCtrl',taskInitiateListCtrl)\r\n.controller('taskProcCtrl',taskProcCtrl)\r\n.controller('taskPublicCtrl',taskPublicCtrl)\r\n.controller('taskInitiateCtrl',taskInitiateCtrl)\r\n.controller('taskExecuteCtrl',taskExecuteCtrl)\r\n.controller('taskExecuteListCtrl',taskExecuteListCtrl)\r\n.controller('integrationDefinitionCtrl',integrationDefinitionCtrl)\r\n.controller('appMenuDefinitionCtrl',appMenuDefinitionCtrl)\r\n.controller('mappingDefinitionCtrl',mappingDefinitionCtrl)\r\n.controller('formDefinitionCtrl',formDefinitionCtrl)\r\n.controller('vpageCtrl',vpageCtrl)\r\n;\r\n\r\n\r\nexport default moduleCtrls;","'use strict';\r\n/*import authJson from './auth.json' assert {type: 'json'};*/\r\nimport indexJson from './../../0001_index/angularJs/index.json' //with {type: 'json'};\r\n\r\nexport function changePasswordCtrl ($scope, $rootScope, $state,$cookies,$timeout,AuthenticationService,MenuService,$stateParams,$location) {\r\n \r\n $scope.CTRLNAME='changePasswordCtrl';\r\n let touched=[false,false]\r\n AuthenticationService.ClearCredentials();\r\n $scope.signupkey = $stateParams.digest\r\n\r\n $scope.cp={username : \"\", password1 : \"\",password2 : \"\"}\r\n \r\n let lang = $location.search().lang\r\n if (lang===undefined) lang ='en-GB'\r\n \r\n $scope.pageLabels = indexJson[lang]\r\n\r\n $scope.CheckChangeRequest = function(){\r\n \r\n AuthenticationService.CheckPassChangeRequest($scope.signupkey,function(response) {\r\n $timeout(function(){\r\n if (response.status === 200) {\r\n \r\n $scope.checkDigestOk = true\r\n $scope.userId = response.data.user_id\r\n }else\r\n {\r\n $scope.checkDigestOk = false\r\n \r\n }\r\n $scope.checkDone = true\r\n })\r\n });\r\n \r\n \r\n };\r\n\r\n $scope.CheckChangeRequest()\r\n\r\n $scope.checkUsernameValidity=function() { \r\n \r\n if ($scope.cp.username==='' || $scope.cp.username===undefined) $scope.usernameInvalid=true\r\n else $scope.usernameInvalid=false\r\n }\r\n\r\n $scope.hideError=function() { \r\n \r\n $scope.errorMsg=\"\"\r\n }\r\n\r\n $scope.checkPasswordValidity1=function() { \r\n \r\n if ($scope.cp.password1==='' || $scope.cp.password1===undefined) $scope.passwordInvalid1=true\r\n else $scope.passwordInvalid1=false\r\n }\r\n $scope.checkPasswordValidity2=function() { \r\n //touched[i]=true \r\n //if (this.password[i]=='' || this.password[i]==undefined || this.password[i]==null) this.passwordInvalid[i]= true;\r\n //else this.passwordInvalid[i]=false;\r\n //if (!this.password[i] && touched[i]==true\r\n //passwords must match\r\n if ($scope.cp.password1!==$scope.cp.password2) $scope.passwordInvalid2=true\r\n else $scope.passwordInvalid2=false\r\n }\r\n\r\n\r\n $scope.ResetPassword=function(username,userId,password1,password2,digest) {\r\n \r\n $scope.dataLoading = true;\r\n\r\n AuthenticationService.PswReset(username,userId,password1,password2,digest, function(response) {\r\n \r\n $timeout(function(){\r\n\r\n if(response.success) {\r\n\r\n $scope.passwordChangeSuccess=true\r\n $scope.successMsg = response.message;\r\n \r\n }\r\n else {\r\n \r\n $scope.errorMsg = response.message;\r\n $scope.passwordChangeSuccess=false\r\n \r\n }\r\n\r\n $scope.dataLoading = false;\r\n\r\n\r\n })\r\n });\r\n\r\n }\r\n \r\n \r\n }\r\n\r\nchangePasswordCtrl.$inject=['$scope', '$rootScope', '$state','$cookies','$timeout','AuthenticationService','MenuService','$stateParams','$location'];\r\n\r\n\r\nexport function changePasswordRequestCtrl ($scope, $rootScope, $state,$cookies,$timeout,AuthenticationService,MenuService) {\r\n \r\n $scope.CTRLNAME='changePasswordRequestCtrl';\r\n AuthenticationService.ClearCredentials();\r\n \r\n $scope.reg= /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,24}))$/\r\n $scope.signupSuccess= false\r\n $scope.errorMsg= ''\r\n $scope.dataLoading= false\r\n $scope.emailInvalid=false\r\n $scope.email=''\r\n \r\n\r\n $scope.isEmailValid = function () {\r\n return ($scope.email == \"\")? \"\" : ($scope.reg.test($scope.email)) ? 'is-valid' : 'is-invalid';\r\n }\r\n\r\n $scope.checkEmailValidity = function () {\r\n $scope.errorMsg=''\r\n if ($scope.email=='' || $scope.email==undefined || $scope.email==null) $scope.emailInvalid= true;\r\n else $scope.emailInvalid=false; \r\n }\r\n \r\n \r\n $scope.requestChg = function(ev) \r\n { \r\n ev.preventDefault()\r\n AuthenticationService.RequestPswReset($scope.email, function(response) {\r\n if(response.success) {\r\n $scope.signupSuccess=true\r\n } else { \r\n $scope.errorMsg = response.message;\r\n $scope.dataLoading = false;\r\n }\r\n });\r\n } //login\r\n \r\n \r\n $scope.validity = function () {\r\n return $scope.reg.test($scope.email)\r\n \r\n }\r\n \r\n \r\n \r\n}\r\n\r\n changePasswordRequestCtrl.$inject=['$scope', '$rootScope', '$state','$cookies','$timeout','AuthenticationService','MenuService'];\r\n\r\n\r\nexport default function loginCtrl ($scope, $rootScope, $state,$cookies,MessagingService,AuthenticationService,MenuService,$location,$timeout) {\r\n \r\n AuthenticationService.ClearCredentials();\r\n let lang = $location.search().lang\r\n if (lang===undefined) lang ='en-GB'\r\n $scope.pageLabels = indexJson[lang]\r\n $scope.CTRL='loginCtrl'\r\n $scope.config = indexJson['config'] \r\n \r\n $scope.errorMsg= ''\r\n $scope.dataLoading= false\r\n $scope.usernameInvalid=false\r\n $scope.passwordInvalid=false\r\n $scope.firstTime=true\r\n $scope.username=''\r\n $scope.password=''\r\n $scope.query_hash='' \r\n $scope.dataLoadingText=\"\" + $scope.pageLabels?.dataLoadingText || \" Logging in...\"\r\n \r\n\r\n\r\n function checkUsernameValidity() {\r\n if ($scope.username=='' || $scope.username==undefined || $scope.username==null) $scope.usernameInvalid= true;\r\n else $scope.usernameInvalid=false; \r\n }\r\n \r\n function checkPasswordValidity() {\r\n if (!$scope.firstTime && $scope.password=='' || $scope.password==undefined || $scope.password==null) $scope.passwordInvalid= true;\r\n else $scope.passwordInvalid=false;\r\n $scope.firstTime=false;\r\n }\r\n \r\n $scope.login = function(ev) {\r\n \r\n ev.preventDefault()\r\n \r\n $scope.firstTime=false;\r\n checkUsernameValidity()\r\n checkPasswordValidity()\r\n if ($scope.usernameInvalid || $scope.passwordInvalid) return;\r\n \r\n $scope.dataLoading=true;\r\n AuthenticationService.Login($scope.username, $scope.password, function(response) {\r\n \r\n if (response.success) { \r\n if (response.data.environments)\r\n $rootScope.globals.environments = response.data.environments.reduce((acc, obj) => {\r\n acc[obj.id.toString()] = obj;\r\n return acc;}, {}); \r\n \r\n\r\n AuthenticationService.SetCredentials(response.data, $scope.username,$scope.password);\r\n \r\n\r\n var lang = $rootScope.globals.currentUser.lang;\r\n var default_page = $rootScope.globals.currentUser.uep?.Params?.DefaultPageUri;\r\n let params = $rootScope.globals.currentUser.uep?.Params?.DefaultPageParams;\r\n let default_app = $rootScope.globals.currentUser.organisation?.DefaultApp\r\n \r\n \r\n if (params==undefined) params = Object.assign({}, $state.params);\r\n\r\n let stateName = 'app.navbar.home' \r\n let return_url = $state.params['return_url']\r\n \r\n if (default_page!=undefined) stateName=default_page\r\n \r\n if (return_url?.return_url_name!=undefined) {\r\n stateName = return_url.return_url_name\r\n params = return_url\r\n }\r\n \r\n\r\n if ( response.data?.uep?.defaultenv ) { \r\n var defaultEnv = response.data?.uep?.defaultenv.toString()\r\n if (!$rootScope.globals?.currentEnv) {\r\n $rootScope.globals.currentEnv = defaultEnv // following API calls must have global ENV\r\n }\r\n if (!$location.search().env ) {\r\n //$location.search({'env': defaultEnv})\r\n $state.params.env=defaultEnv\r\n \r\n $state.transitionTo($state.current.name,$state.params, { notify: false, location:'replace', inherit:true}) \r\n }\r\n } else { // selectEnvironment if there is no Default user ENV \r\n stateName = 'app.selectenvironment' \r\n $state.go(stateName, params);\r\n return \r\n }\r\n\r\n\r\n if (default_app) { //current only ADRIA has default_App\r\n let app_ref = $location.search().app_ref ?? $rootScope.globals.currentUser?.organisation?.DefaultApp\r\n \r\n AuthenticationService.loadApp(\"\", {'environment': defaultEnv}, app_ref).then(function(data){\r\n let lapp = data?.subscriptions\r\n //debugger\r\n AuthenticationService.SetCredentials(data?.user)\r\n \r\n if (lapp!=null){\r\n AuthenticationService.SetMenusForApp(lapp).then(\r\n function(data) {\r\n AuthenticationService.loadFirstPage(stateName,params,lapp,data) //todo - ovdje u params nema trenutni ENV !!\r\n },function(error2){\r\n MessagingService.addMessage(error2,'error'); \r\n $state.go(toState.name,toParams); \r\n }); \r\n } else {\r\n MessagingService.addMessage('Error loading application id ='+app_ref,'error');\r\n $state.go(toState.name,toParams);\r\n }\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n if (error.status==405) $state.go('app.navbar.home',{});\r\n })\r\n \r\n } else \r\n {\r\n var navbar=MenuService.getNavbarByTargetName(stateName,lang);\r\n if (params==undefined) params={'environment': defaultEnv};\r\n \r\n $state.go(stateName,params);\r\n }\r\n }\r\n else { // when response is not success \r\n $scope.errorMsg = $scope.loginErrorMsg;\r\n $scope.dataLoading = false;\r\n \r\n $timeout( ()=> {\r\n MessagingService.addMessage(response.message,'error');\r\n })\r\n \r\n }\r\n });\r\n } //login\r\n\t \r\n\t $scope.checkEnterKey = function(event) {\r\n\t\t if (event.key === \"Enter\" || event.keyCode === 13) {\r\n\t\t\t$scope.login(event); // Call the login function\r\n\t\t }\r\n\t}\r\n\t \r\n }//LoginCtrl\r\n \r\n \r\n \r\n \r\n\r\n// loginCtrl.$inject=['$scope', '$rootScope','$state','$cookies','MessagingService','AuthenticationService','MenuService','$location','$timeout'];\r\nexport function ssoCtrl ($scope, $rootScope, $state,$cookies,AuthenticationService,MenuService,$location) {\r\n \r\n AuthenticationService.ClearCredentials();\r\n\r\n \r\n \r\n \r\n \r\n $wscope.errorMsg= '',\r\n $scope.dataLoading= false,\r\n \r\n $scope. loginSso = function() {\r\n \r\n\r\n $scope.dataLoading=true;\r\n AuthenticationService.LoginSsoFetch(function(response) {\r\n \r\n if(response.success) {\r\n \r\n AuthenticationService.SetCredentialsSso(response.data, null,null);\r\n $scope.dataLoading=true;\r\n //load menus\r\n var lang = $rootScope.globals.currentUser.lang;\r\n var default_page = $rootScope.globals.currentUser.uep?.Params?.DefaultPageUri;\r\n var params = $rootScope.globals.currentUser.uep?.Params?.DefaultPageParams;\r\n \r\n var stateName = 'app.navbar.home'; \r\n if (default_page!=undefined) stateName=default_page;\r\n \r\n if (params==undefined) params={};\r\n $state.go(stateName,params);\r\n \r\n }\r\n else {\r\n \r\n $scope.errorMsg = response.message;\r\n $scope.dataLoading = false;\r\n }\r\n });\r\n\r\n }\r\n\r\n } \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n ssoCtrl.$inject=['$scope', '$rootScope', '$state','$cookies','AuthenticationService','MenuService','$location'];\r\n\r\n\r\nexport function logoutCtrl ($scope,$rootScope, $location, $state, GridsterService,AuthenticationService, MenuService,MessagingService,ProcessingService) {\r\n\r\n $scope.CTRL='logoutCtrl';\r\n $scope.ac={\r\n alerts : []\r\n };\r\n let lang=$rootScope.globals?.currentUser?.lang ?? 'en-GB'\r\n $scope.pageLabels = indexJson[lang]\r\n \r\n $scope.gsrvc = GridsterService\r\n $scope.gsrvc.resetBodyBgColor() \r\n \r\n $scope.menu_service = MenuService \r\n $scope.menu_service.clearSideMenu()\r\n $scope.config = indexJson['config']\r\n \r\n AuthenticationService.Logout(function(response) {\r\n $scope.activity.activityMessage = ProcessingService.setActivityMsg('Logging out...');\r\n if (response.success) {\r\n AuthenticationService.ClearCredentials(); \r\n MessagingService.clearAllMessages();\r\n \r\n $scope.activity.activityMessage = ProcessingService.setActivityMsg('');\r\n } else \r\n $scope.errorMsg = response.message;\r\n \r\n });\r\n \r\n $scope.login_page = function() \r\n {\r\n let auth_type = $rootScope.globals?.currentUser?.auth_type;\r\n if (auth_type==='sso') \r\n $state.go('app.sso');\r\n else\r\n {\r\n\t\t\t\t $location.search('app_ref', null)\r\n\t\t\t\t\t $location.search('env', null)\r\n\t\t\t\t\t $location.search('tab', null)\r\n $location.url('/login')\r\n\t\t\t\t\t //$state.go('app.login'); \r\n\r\n\t\t\t\t\t }\r\n \r\n\t\t}\r\n};\r\n\r\nlogoutCtrl.$inject=['$scope', '$rootScope','$location', '$state','GridsterService','AuthenticationService','MenuService','MessagingService','ProcessingService'];\r\n\r\n\r\nexport function selectenvironmentCtrl ($scope,$rootScope, $state, $cookies, AuthenticationService,MenuService,$location,$timeout, UserService, MessagingService,ProcessingService) {\r\n\r\n $scope.CTRL='selectenvironmentCtrl';\r\n $scope.ac = { alerts : [] };\r\n $scope.actionType = $state.params.type\r\n let lang= $rootScope.globals.currentUser.lang\r\n $scope.pageLabels = indexJson[lang]\r\n \r\n $scope.menu_service = MenuService \r\n $scope.menu_service.clearSideMenu()\r\n\r\n\r\n\t$scope.getUserEnvironments = function() // Used in \"selectenv\" page\r\n\t{\r\n\t\t if (! $rootScope.globals?.environments) { // when ENV changed get from envinfo statistics from server - TODO move this in loadAPP ?? \r\n AuthenticationService.getOrgSchemas($rootScope.globals.currentUser?.organisation.id)\r\n .then((response) => {\r\n if (response.data) $rootScope.globals.environments = response.data.reduce((acc, obj) => {\r\n acc[obj.id.toString()] = obj;\r\n return acc;\r\n }, {}); \r\n return $rootScope.globals?.environments\r\n }) \r\n } else return $rootScope.globals?.environments\r\n\t}\r\n\t\r\n\t\r\n\r\n \r\n\t$scope.goToEnv = function(whereto) \r\n { \r\n let actions = { \t'actions': { \r\n\t\t\t\t\t 'set': \t\t { 'defaultEnv': whereto, }\r\n }}\r\n \r\n if ($scope.actionType == 'change') {\r\n\t\t\t//debugger\r\n sessionStorage.setItem(\"environment\", whereto.id )\r\n\t\t\t$rootScope.globals.currentEnv = whereto.id\t \r\n MenuService.resetNavbar()\r\n $location.search('app_ref', null)\r\n \t\t\t$state.go('app.navbar.home',{'app_ref': null, 'env':whereto.id});\r\n } else {\r\n\t\t\tUserService.ExecuteActions(actions).then(\r\n\t\t\t\tfunction(data) { \r\n\t\t\t\t\tMessagingService.addMessage(data.data.msg,'success'); \r\n\t\t\t\t},function(error){\r\n\t\t\t\t\tMessagingService.addMessage(error.data.msg,'error');\r\n\t\t\t}) \r\n \r\n\t\t\tvar default_page = $rootScope.globals.currentUser.uep?.Params?.DefaultPageUri;\r\n\t\t\tvar params = $rootScope.globals.currentUser.uep?.Params?.DefaultPageParams;\r\n\t\t\tif (params == undefined)\t params={}\r\n\r\n\t\t\tparams['schema'] = whereto.id\r\n\r\n\t\t\tlet default_app = $rootScope.globals.currentUser.organisation?.DefaultApp\r\n\r\n\t\t\tvar stateName = 'app.navbar.home' \r\n\t\t\tif (default_page!=undefined) stateName=default_page \r\n\r\n\t\t\tsessionStorage.setItem(\"environment\", whereto.id )\r\n\t\t\t$rootScope.globals.currentEnv = whereto.id\r\n\r\n\t\t\tif (default_app) {\r\n let app_ref = $location.search().app_ref;\r\n if (app_ref===undefined) app_ref = $rootScope.globals.currentUser?.organisation?.DefaultApp\r\n AuthenticationService.loadApp(\"\", {'environment': whereto.id}, app_ref);\r\n\t\t\t} else \r\n {\r\n var navbar=MenuService.getNavbarByTargetName(stateName,lang);\r\n if (params==undefined) params={}; \r\n $state.go(stateName,params);\r\n } \r\n }\r\n }//goToEnv func//\r\n\t \r\n\r\n\r\n \r\n};\r\n\r\n\r\n\r\n","'use strict';\r\n\r\nimport indexJson from './../../0001_index/angularJs/index.json'//with {type: 'json'};\r\n\r\nexport default function importDataCtrl ($cookies,uiUploader,$element,$scope, $rootScope, $location, $timeout,AuthenticationService,ProcessingService,MessagingService,GridsterService,ResourcesDataService,CodesService,$stateParams) {\r\n \r\n\t\t$scope.CTRLNAME='importDataCtrl';\r\n $scope.resourceId=$stateParams.resource_id;\r\n $scope.showGrid=true;\r\n \r\n uiUploader.createUploader(1);//MIGOR TODO - ovo je bilo kod mene, ne znam da li si to izbacio ili ne treba više\r\n $scope.gsrvc = GridsterService\r\n $scope.gsrvc.resetBodyBgColor() \r\n \r\n $scope.gridOptions = {\r\n enableGridMenu: true,\r\n showGridFooter: true,\r\n //showColumnFooter: true,\r\n enableRowSelection: true,\r\n multiSelect: false,\r\n enableHorizontalScrollbar : 0, \r\n enableVerticalScrollbar : 2,\r\n //enableFiltering: true,\r\n enableRowHeaderSelection: true,\r\n enableColumnResizing: true,\r\n useExternalPagination: true,\r\n paginationPageSizes: [5, 10, 50,100,200,500,1000],\r\n enablePaginationControls: false,\r\n }\r\n /* $scope.gridOptions.columnDefs = [ { name:'id', width:50 }, { name:'name' }, ];*/\r\n \r\n $scope.gridOptions.onRegisterApi = function (gridApi) {\r\n //set gridApi on scope\r\n $scope.gridApi = gridApi;\r\n gridApi.selection.on.rowSelectionChanged($scope,function(row){\r\n \r\n $scope.isSelected=row.isSelected;\r\n //$scope.showGrid=false;\r\n $scope.selectedId = row.entity.id;\r\n //$scope.selectedTaskObject = row.entity;\r\n });\r\n }\r\n \r\n\t\r\n\t\t$scope.animationsEnabled = true;\t \r\n\t\tvar lang = $rootScope.globals.currentUser.lang;\r\n\t\tvar type=\"file\"; \r\n\t\t var out_fields = ['resourceId'];\r\n var element = $element[0].getElementsByClassName('fileElement');\r\n\t\t $scope.files = [];\r\n\t\r\n\t\t uiUploader.removeAll(1); //MIGOR TEMP- TREBA nekako obrisati inicijalne fajlove kod reigstracija ali ovdje ne radi !!!\r\n\r\n\t\t //GET MAAPINGLIST \r\n ResourcesDataService.getMappingsList($scope.resourceId).then(function(data) {\r\n //MessagingService.addMessage(data.msg,'success');\r\n $scope.gridOptions.data = data.data;\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n \r\n \r\n element[0].addEventListener('change', function(e) {\r\n\t\t\t$timeout(function() {\r\n\t\t\t\t var files = e.target.files;\r\n uiUploader.addFiles(files,1);\t\t\t\t\r\n $scope.files = uiUploader.getFiles(1); \r\n\t\t\t\t });\r\n });\r\n\t\t\t\t\r\n var fileCounter = 0;\r\n\t\t\t \r\n\t\t\t$scope.btn_remove = function(index,file) {\t\r\n $log.info('deleting=' + file);\r\n\t\t\t\t\tvar s=$scope;\r\n\t\t\t\t\tvar f=formCtrl;\r\n uiUploader.removeFile(file,1);\r\n\t\t\t\t\t var err=$scope.testRules();\r\n\t\t\t\t\t\r\n };\r\n\r\n $scope.btn_clean = function() {\r\n uiUploader.removeAll(1);\r\n };\r\n\r\n\t\t\t\r\n\t\t\t// FUNCTION - ON_SELECT_FILETYPE \r\n\t\t\t// NAKON ŠTO SE ZA POJEDINAČNI FILE ODABERE FILE-TYPE --> $scope.resourceId\r\n\t\t\t\t\t\r\n\t\t\t$scope.onSelectFileType = function (item,fileIndex){\r\n\t\t\t\t\t\tvar selectedFileTypeId=item.id;\r\n\t\t\t\t\t\t$scope.resourceId=selectedFileTypeId;\r\n\t\t\t\t\t\t $scope.isResourceSelected=true;\r\n\t\t\t if ($scope.files[fileIndex].fileResourceID!=selectedFileTypeId) {\r\n\t\t\t $scope.files[fileIndex].fileResourceID = selectedFileTypeId;\r\n\t\t\t $scope.files[fileIndex].formLoaded = false;\r\n\t\t\t }\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tconsole.log(\"onSelectFileType :\" + selectedFileTypeId);\r\n\t\t\r\n\t\t\t\t\t\t$scope.fileIndex=fileIndex;\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t}//onSelectFileType\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t$scope.importData =function (fileServerId) {\r\n\t\t\t\t\r\n\t\t\t\tvar i=fileServerId;\r\n\t\t\t\t\t\t\r\n\t\t\t}\r\n\r\n\r\n //FAKE API - ovaj importresource dolje je samo za testiranje importa iz filea (vezan za TEST IMPORT button)\r\n $scope.importTest = function() {\r\n //debugger\r\n ResourcesDataService.importResource(117, 257, 17).then( // argumenti su file.serverId, $stateParams.resource_id, $scope.selectedId\r\n function(data) {\r\n $scope.listOfFileTypes = data.data;\r\n MessagingService.addMessage('Imported data frome file '+ data.data.fileId + \" using mapping \" + $scope.selectedId,'success');\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n \r\n }\r\n \r\n\t\t\t//*******************************************************************************************************\r\n\t\t\t// \t\t\t\t\t\t\t\t\t\t\tUPLOAD AND IMPORT FILE\r\n\t\t$scope.btn_upload = function() {\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\tvar csrf_token = $cookies.get('csrftoken'); \r\n\t\t\t\t\t\r\n\t\t\t// ZA svaki FAJL pojedinačno !\r\n\t\t\tuiUploader.startUpload(1,{ \r\n\t\t\t\t\t\turl:'api/file-upload/', \r\n\t\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t\t\t\t'X-CSRFToken' : csrf_token ,\r\n 'Authorization': this.$root.globals.currentUser.authdata\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\tconcurrency: 3,\r\n\t\t\t\t\t\t\t\t // u data punimo podatke vezane za fajl - fileType , ID resursa\r\n\t\t\t\t\t\tdata: {resource_def_id:$scope.resourceId,resource_id:0}, //HARDCODIRAN RESOURCE_ID = 0 \r\n\t\t\t\t\t\tonProgress: function(file) {\r\n\t\t\t\t\t\t\t\t\t//$log.info(file.name + '=' + file.humanSize);\r\n\t\t\t\t\t\t\t\t\t $timeout(function() { file.status='Uploading...'; });\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tonCompleted: function(file, response,status) {\r\n\t\t\t\t\t\t\t\t//$log.info(file + 'response' + response);\r\n //debugger\r\n\t\t\t\t\t\t\t\tresponse=JSON.parse(response); //convertiram string u JSON objekt\r\n \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n if (status==201) { \r\n // NAKON ŠTO SMO USPJESNO UPLOADALI FILE POZIVAMO IMPORTRESOURCE ...\r\n\t\t\t\t\t\t\t\t\t\t\tfile.serverId=response;\r\n MessagingService.addMessage('Uploaded file '+file.serverId,'success');\r\n\t\t\t\t\t\t\t\t\t\t\t$timeout(function() { file.uploadSuccess=true; });\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\tfile.resourceData={};\r\n \r\n //import resource \r\n ResourcesDataService.importResource(file.serverId,$stateParams.resource_id,$scope.selectedId).then(\r\n function(data) {\r\n $scope.listOfFileTypes = data.data;\r\n MessagingService.addMessage('Imported data frome file '+file.serverId + \" using mapping \" + $scope.selectedId,'success');\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n \t\r\n\t\t\t\t\t\t\t\t\t\t\t// PRIPREMA $scope.resourceData ZA UPLOAD \r\n\t\t\t\t\t\t\t\t\t\t\tif (file.dashboard!=undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t var fieldId=\"\";\r\n\t\t\t\t\t\t\t\t\t\t\t\t var sc=$scope;\r\n\t\t\t\t\t\t\t\t\t\t\t\t fileCounter++;\r\n\t\t\t\t\t\t\t\t\t\t\t\t// if ($scope.files.length == fileCounter){\r\n\t\t\t\t\t\t\t\t\t\t\t\t // $rootScope.$broadcast('InitiateTaskFilesUploaded',{'resource_id':$scope.linkedResourceId,'resource_def_id': $scope.linkedResourceDefId})\r\n\t\t\t\t\t\t\t\t\t\t\t\t //}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t}//if\r\n\t\t\t\t\t\t\t\telse { \r\n\t\t\t\t\t\t\t\t\t\t//if file upload error\r\n\t\t\t\t\t\t\t\t\t\t$timeout(function() {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t file.uploadError=true;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t file.status=response;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t});\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t} //on_completed\r\n\t\t\t\t\t\t}) //startUpload\r\n\t\t\t\t\t\r\n\t\t}; // FUNCTION btn_upload\r\n\t\t\t\t\t \t\t \r\n\t\tResourcesDataService.getResourceDefByType(lang,type).then(\r\n\t\t\t\t\t\t\tfunction(data) {\r\n\t\t\t\t\t\t\t\t\t\t\t $scope.listOfFileTypes = data.data;\r\n\t\t\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t},function(error){\r\n\t\t\t\t\t\t\t\t\t\t\tMessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\r\n\t /* ResourcesDataService.getResourceDef(lang).then(function(data) {\r\n\t\t\t\t\t\t\t\t $scope.listOfResourceDefs = data.data; \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });*/\r\n \r\n \r\n\t var lang = $rootScope.globals.currentUser.lang;\r\n CodesService.getCodesByName('resourcetype',lang).then(function (data) {\r\n //debugger;\r\n $scope.resourceTypeList = data.data;\r\n });\r\n CodesService.getCodesByName('codestatus',lang).then(function (data) {\r\n $scope.resourceStatusList = data.data;\r\n });\r\n CodesService.getCodesByName('_RESOURCE_GROUP_',lang).then(function (data) {\r\n $scope.resourceGroupList = data.data;\r\n });\r\n \r\n $scope.newResource = function (isValid) {\r\n if (isValid) {\r\n $scope.SaveResourceDef();\r\n } else {\r\n MessagingService.addMessage(\"Save failed - please enter all required data!\",'error');\r\n \r\n }\r\n }\r\n \r\n \r\n \r\n}//...importDataCtrl\r\n\r\nexport function datasetTransformCtrl ($scope, $rootScope, $location, $timeout,AuthenticationService,ProcessingService,MessagingService,GridsterService,ResourcesDataService,CodesService,UserService,dragularService) {\r\n \r\n $scope.CTRL='datasetTransformCtrl';\r\n $scope.datasetDict={}\r\n\t$scope.publishedForms={}\r\n \r\n $scope.gridOptions1 = {\r\n columnDefs: [\r\n { name: 'id', displayName: 'ID', type: 'number', width:'7%',enableHiding: false, visible: true },\r\n { name: 'name', displayName: 'Mapping name'},\r\n { name: 'dataset1name', displayName: 'Dataset 1' },\r\n { name: 'dataset2name', displayName: 'Dataset 2' },\r\n { name: 'mappingtype', displayName: 'Mapping type' },\r\n ],\r\n enableGridMenu: true,\r\n showGridFooter: false,\r\n showColumnFooter: true,\r\n enableRowSelection: true,\r\n multiSelect: false,\r\n enableHorizontalScrollbar : 2, \r\n enableVerticalScrollbar : 2,\r\n enableFiltering: true,\r\n enableRowHeaderSelection: true,\r\n enableColumnResizing: true,\r\n /* paginationPageSizes: [5, 10, 20, 50, 100], paginationPageSize: 5, enableSelectAll: false, enableCellEdit: false*/ \r\n }\r\n \r\n $scope.gridOptions2 = {\r\n columnDefs: [\r\n { name: 'id', displayName: 'ID', type: 'number', width:'7%',enableHiding: false, visible: true },\r\n { name: 'transform_name', displayName: 'Transform name'},\r\n { name: 'name', displayName: 'Transform label'},\r\n { name: 'field_type1.name', displayName: 'Field 1 type' },\r\n { name: 'field_type2.name', displayName: 'Field 2 type ' },\r\n ],\r\n enableGridMenu: true,\r\n showGridFooter: false,\r\n showColumnFooter: true,\r\n enableRowSelection: true,\r\n multiSelect: false,\r\n enableHorizontalScrollbar : 2, \r\n enableVerticalScrollbar : 2,\r\n enableFiltering: true,\r\n enableRowHeaderSelection: true,\r\n enableColumnResizing: true,\r\n /* paginationPageSizes: [5, 10, 20, 50, 100], paginationPageSize: 5, enableSelectAll: false, enableCellEdit: false*/ \r\n }\r\n \r\n $scope.gsrvc = GridsterService\r\n $scope.gsrvc.resetBodyBgColor() \r\n \r\n $scope.removeItem= (pindex,index) => $scope.dataset2Fields[pindex].fields.splice(index,1);\r\n $scope.removeItemF2= (pindex,index) => $scope.dataset2Fields[pindex].fields2.splice(index,1);\r\n \r\n var drake;\r\n \r\n $scope.setupDragular = function(dragularContainerModels,dragularContainerClasses,copy,namespaces){\r\n $timeout(function(){\r\n var containers=[];\r\n \r\n for (var i =0;i1 ( DATASET2)\r\n $scope.dataset2Fields = data.data.Definition;\r\n var dragularContainerClasses=[];\r\n var dragularContainerModels = []; \r\n for(var i=0;i<$scope.dataset2Fields.length;i++) {\r\n if ($scope.dataset2Fields[i].fields==undefined) $scope.dataset2Fields[i]['fields'] = [];\r\n dragularContainerModels.push($scope.dataset2Fields[i].fields);\r\n dragularContainerClasses.push('exampleRow'+i); \r\n }\r\n $scope.setupDragular(dragularContainerModels,dragularContainerClasses,false,'dataset2');\r\n \r\n } \r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n })\r\n\t\t\t\t\t\r\n } \r\n \r\n\t\t\r\n\t\t$scope.GetPublishedResourceById = function(dataset1or2Fields, res) \r\n\t\t{\r\n\t\t\tvar res\r\n\t\t\tif (dataset1or2Fields == 'dataset1Fields') res = $scope.mappingFields['dataset1']?.version\r\n\t\t\tif (dataset1or2Fields == 'dataset2Fields') res = $scope.mappingFields['dataset2']?.version\r\n\t\t\t\r\n if (res && res.length>0) \r\n\t\t\t ResourcesDataService.GetPublishedResourceById(res.id).then(\r\n\t\t\t\tfunction (data) {\r\n\t\t\t\t\tif (dataset1or2Fields=='dataset1Fields') {\r\n\t\t\t\t\t\t $scope['dataset1Fields'] = data.data.Definition; \r\n\t\t\t\t\t\t $scope.setupDragular([$scope['dataset1Fields']],['dataset1Container'],true,'dataset1'); \r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (dataset1or2Fields=='dataset2Fields') {\r\n\t\t\t\t\t\t $scope['dataset2Fields'] = data.data.Definition;\r\n var dragularContainerClasses = [];\r\n var dragularContainerModels = []; \r\n for(var i=0;i<$scope.dataset2Fields.length;i++) {\r\n if ($scope.dataset2Fields[i].fields==undefined) $scope.dataset2Fields[i]['fields'] = [];\r\n dragularContainerModels.push($scope.dataset2Fields[i].fields);\r\n dragularContainerClasses.push('exampleRow'+i); \r\n }\r\n $scope.setupDragular(dragularContainerModels,dragularContainerClasses,false,'dataset2');\r\n\t\t\t\t\t\t //$scope.setupDragular([$scope['dataset2Fields']],['dataset2Container'],true,'dataset2');\r\n\t\t\t\t\t }\t \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n\t\t}\t\r\n $scope.getTransformFields = function (transformId,field1,field2) {\r\n\t\t//get FIELDS for transform\r\n ResourcesDataService.getTransformFields(transformId,field1,field2).then(function(data) {\r\n\t\t\t //debugger\r\n if (type==1){\r\n $scope.dataset1Fields = data.data;\r\n $scope.setupDragular([$scope.dataset1Fields],['dataset1Container']); \r\n } else{\r\n $scope.dataset2Fields = data.data;\r\n var dragularContainerClasses=[];\r\n var dragularContainerModels = []; \r\n for(var i=0;i<$scope.dataset2Fields.length;i++) {\r\n dragularContainerModels.push($scope.dataset2Fields[i].fields);\r\n dragularContainerClasses.push('exampleRow'+i); \r\n }\r\n $scope.setupDragular(dragularContainerModels,dragularContainerClasses);\r\n } \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n };\r\n \r\n $scope.gridOptions1.onRegisterApi = function (gridApi) {\r\n $scope.gridApi = gridApi;\r\n\t\t\r\n gridApi.selection.on.rowSelectionChanged($scope,function(row)\r\n\t\t{\r\n $scope.resourceSelected=row.isSelected;\r\n $scope.selectedResource = row.entity.id;\r\n if (drake!=undefined) drake.destroy();\r\n if ($scope.dataset1Fields!=undefined) $scope.dataset1Fields.length=0;\r\n if ($scope.dataset2Fields!=undefined) $scope.dataset2Fields.length=0;\r\n \r\n if ($scope.resourceSelected) {\r\n\t\t\t\t\r\n\t\t\t\t ResourcesDataService.GetPublishedResourcesByTypeId(row.entity.dataset1uid ,'form')\r\n\t\t\t\t .then(function (data) { \r\n\t\t\t\t\t\t$scope.publishedForms['dataset1'] = data.data;\r\n\t\t\t\t\t\treturn ResourcesDataService.GetPublishedResourcesByTypeId(row.entity.dataset2uid ,'form')\r\n\t\t\t\t\t})\r\n\t\t\t\t .then(function (data) { // Puni mapping strukturu za API poziv\r\n\t\t\t\t\t \r\n\t\t\t\t\t \r\n\t\t\t\t\t $scope.tmpMappingFields={}\r\n\t\t\t\t\t $scope.publishedForms['dataset2'] = data.data;\r\n\t\t\t\t\t \r\n\t\t\t\t\t $scope.setupResourcesDragular(row.entity.dataset1,1);\r\n\t\t\t\t\t $scope.getDatasetMappings(row.entity.id)\r\n\r\n\t\t\t\t\t $scope.tmpMappingFields.mappingName= row.entity.name; \r\n\t\t\t\t\t $scope.tmpMappingFields.mappingDisplayName = row.entity.displayname\r\n\t\t\t\t\t $scope.tmpMappingFields.dataset1= {id:row.entity.dataset1uid, name: row.entity.dataset1name};\r\n\t\t\t\t\t $scope.tmpMappingFields.dataset1.version = { id: row.entity.dataset1 , ResourceDefUid: row.entity.dataset1uid }\r\n\t\t\t\t\t \r\n\t\t\t\t\t $scope.tmpMappingFields.dataset2= {id:row.entity.dataset2uid, name: row.entity.dataset2name};\r\n\t\t\t\t\t $scope.tmpMappingFields.dataset2.version = { id:row.entity.dataset2 , ResourceDefUid: row.entity.dataset2uid }\r\n\t\t\t\t\t \r\n\t\t\t\t\t $scope.tmpMappingFields.mappingType = { id: $scope.map2codeDict[row.entity.mappingtype] }\r\n\t\t\t\t\t $scope.mappingFields = $scope.tmpMappingFields\r\n\t\t\t\t\t\t\r\n\t\t\t\t }).catch( function(error) {\r\n\t\t\t\t\t MessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t })\r\n }\r\n else {\r\n $scope.selectedDataset1 = { };\r\n $scope.selectedDataset2 = { }; \r\n }\r\n \r\n });\r\n }\r\n \r\n $scope.gridOptions2.onRegisterApi = function (gridApi) {\r\n\r\n $scope.gridApi2 = gridApi;\r\n \r\n gridApi.selection.on.rowSelectionChanged(\r\n\t\t\t\r\n\t\t\t$scope,function(row) {\r\n\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\t $scope.transformSelected=row.isSelected;\r\n\t\t\t\t$scope.selectedTransform = row.entity.id;\r\n\t\t\t\t\r\n\t\t\t\tif ($scope.transformPackage!=undefined) $scope.transformPackage.length=0;\r\n\t\t\t\t\r\n\t\t\t\tif ($scope.transformSelected) { \r\n\t\t\t\t $scope.getTransformFields(row.entity.id); \r\n\t\t\t\t\t//fix this with correct fields ToDo\r\n\t\t\t\t\t//debugger\r\n\t\t\t\t $scope.selectedDataset1 = {id:row.entity.field_type1,name: row.entity.field_type1};\r\n\t\t\t\t $scope.selectedDataset2 = {id:row.entity.field_type2,name: row.entity.field_type2};\r\n\t\t\t\t\t\r\n\t\t\t\t $scope.tmpTransformPackage={}\r\n\t\t\t\t $scope.tmpTransformPackage.fieldType1=$scope.selectedDataset1;\r\n\t\t\t\t $scope.tmpTransformPackage.fieldType2=$scope.selectedDataset2;\r\n\t\t\t\t $scope.tmpTransformPackage.transformDisplayName=row.entity.name\r\n\t\t\t\t $scope.tmpTransformPackage.transformName=row.entity.transform_name; \r\n\t\t\t\t console.log($scope.tmpTransformPackage); \r\n\r\n\r\n\t\t\t\t \r\n\t\t\t\t }\r\n });\r\n }\r\n \r\n $scope.getMappingPackages = function () {\r\n \r\n var lang = $rootScope.globals.currentUser.lang; \r\n ResourcesDataService.getMappingPackages(0,0,lang).then(function(data) { \r\n \r\n for (let mapItem of data.data) { //append DatasetNames to mappings data \r\n if ($scope.datasetDict[mapItem.dataset1]) mapItem.dataset1name = $scope.datasetDict[mapItem.dataset1] \r\n if ($scope.datasetDict[mapItem.dataset2]) mapItem.dataset2name = $scope.datasetDict[mapItem.dataset2] \r\n }\r\n \r\n $scope.gridOptions1.data = data.data;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }; \r\n \r\n $scope.getDatasetMappings = function (datasetId) {\r\n \r\n var lang = $rootScope.globals.currentUser.lang;\r\n \r\n ResourcesDataService.getDatasetMappings(datasetId,lang).then(\r\n\t\t\t\t\tfunction(data) { \r\n $scope.dataset2Fields = data.data;\r\n //treba dragulirati\r\n var dragularContainerClasses=[];\r\n var dragularContainerModels = []; \r\n for(var i=0;i<$scope.dataset2Fields.length;i++) {\r\n dragularContainerModels.push($scope.dataset2Fields[i].fields);\r\n dragularContainerClasses.push('exampleRow'+i);\r\n dragularContainerModels.push($scope.dataset2Fields[i].fields2);\r\n dragularContainerClasses.push('exampleRowFields2'+i); \r\n }\r\n \r\n $scope.setupDragular(dragularContainerModels,dragularContainerClasses);\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }; \r\n \r\n $scope.getTransformFields = function (transformId) {\r\n \r\n var lang = $rootScope.globals.currentUser.lang;\r\n ResourcesDataService.getTransformFields(transformId).then(\r\n\t\t\t\tfunction(data) { \r\n $scope.transformFields = data.data; \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }; \r\n \r\n \r\n // POPUNI LISTU DEFINICIJA OD RESURSA (RESOURCES LIST)\r\n\t$scope.getDatasets = function() {\r\n\t\t\tvar lang=$rootScope.globals.currentUser.lang;\r\n ResourcesDataService.getResourceDefListByType(lang,'dataset').then(\r\n\t\t\t\t\tfunction(data) {\t\t\t\r\n\t\t\t\t\t\t\t$scope.datasetList = data.data;\r\n for (let item of $scope.datasetList) \r\n $scope.datasetDict[item.id] = item.name // create dictionary from datasetList\r\n\t\t\t\t\t},function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t\t\t\t\t\t });\r\n\t}\r\n \r\n $scope.showMappingData = function (selectedResource) {\r\n if (selectedResource==false || selectedResource==undefined) \r\n {\r\n $scope.mappingFields={};\r\n $scope.saveDatasetMappingHeadStatus='createMapping'\r\n } else {\r\n $scope.saveDatasetMappingHeadStatus='updateMapping'\r\n $scope.mappingFields= $scope.tmpMappingFields;\r\n }\r\n \r\n };\r\n \r\n $scope.showTransformData = function (selectedResource) {\r\n \r\n if (selectedResource) {\r\n $scope.saveDatasetTransformHeadStatus='updateTransform'\r\n $scope.transformPackage= $scope.tmpTransformPackage;\r\n } else \r\n { //create new\r\n $scope.transformPackage={};\r\n $scope.saveDatasetTransformHeadStatus='createTransform'\r\n }\r\n \r\n \r\n // $scope.getDatasets();//puni datasetList\r\n CodesService.getCodesByName('euiu',lang).then(function (data) {\r\n $scope.transformList = data.data; \r\n }); \r\n };\t\t\t\t \r\n \r\n \r\n $scope.addTransformField = function () {\r\n \r\n $scope.transformFields.push({id:null,TransformationHeadId:{FieldType1:{Name:'text'},FieldType2:{Name:'user'}}})\r\n };\r\n \r\n \r\n $scope.saveTransformFields = function () { \r\n\t\t\tResourcesDataService.saveTransformFields($scope.transformFields,$scope.selectedTransform).then(\r\n\t\t\t\tfunction(data) {\r\n $scope.transformFields = data.data.data; \r\n MessagingService.addMessage(data.data.msg,'success'); \r\n },function(error){ \r\n MessagingService.addMessage(error.data.msg,'error'); \r\n });\r\n };\r\n \r\n $scope.saveDatasetMappingDetails = function () {\r\n \r\n ResourcesDataService.saveDatasetMappingDetails($scope.dataset2Fields,$scope.selectedResource).then(\r\n\t\t\t\tfunction(data) { \r\n MessagingService.addMessage(data.data.msg,'success'); \r\n },function(error){\r\n MessagingService.addMessage(error.data.msg,'error'); \r\n });\r\n }; \r\n \r\n \r\n $scope.saveDatasetMappingHead = function (selectedResource) {//ulaz: $scope.mappingFields,$scope.selectedResource)\r\n \r\n ResourcesDataService.saveDatasetMappingHead($scope.mappingFields,selectedResource,lang).then(\r\n\t\t\t\tfunction(data) { \r\n\t\t\t\t\t\t $scope.getMappingPackages();\r\n MessagingService.addMessage(data.data.msg,'success');\r\n\t\t\t\t\t\t //debugger\r\n\t\t\t\t\t\t $scope.selectedResource=data.data.data\r\n\t\t\t\t\t\t //$scope.selectedResource=null\r\n\t\t\t\t\t\t $scope.resourceSelected=false\r\n $scope.saveDatasetMappingHeadStatus='CancelOrInit'\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n $scope.saveDatasetMappingHeadStatus='CancelOrInit'\r\n });\r\n \r\n $scope.getMappingPackages();\r\n }; \r\n \r\n $scope.cancelMapping = function () {\r\n $scope.saveDatasetMappingHeadStatus='CancelOrInit';\r\n console.log($scope.saveDatasetMappingHeadStatus);\r\n }\r\n \r\n $scope.cancelTransform = function () {\r\n $scope.saveDatasetTransformHeadStatus='CancelOrInit';\r\n console.log($scope.saveDatasetTransformHeadStatus);\r\n } \r\n\r\n \r\n $scope.saveDatasetTransformHead = function (selectedResource) {\r\n \r\n\t\t\tResourcesDataService.saveDatasetTransformHead($scope.transformPackage,selectedResource,lang).then(\r\n\t\t\t\t\tfunction(data) { \r\n MessagingService.addMessage(data.data.msg,'success'); \r\n $scope.saveDatasetTransformHeadStatus='CancelOrInit'\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n $scope.saveDatasetTransformHeadStatus='CancelOrInit'\r\n });\r\n \r\n $scope.getTransformPackages();\r\n }; \r\n \r\n\r\n \r\n \r\n $scope.getTransformPackages = function () {\r\n \r\n var lang = $rootScope.globals.currentUser.lang;\r\n \r\n ResourcesDataService.getTransformPackages(lang).then(\r\n\t\t\t\tfunction(data) {\r\n $scope.gridOptions2.data = data.data; \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }; \r\n \r\n \r\n $scope.getUsers = function () {\r\n UserService.getUsersGroups('users').then(function(data){\r\n $scope.userList = data.data; \r\n });\r\n }\r\n \r\n \r\n $scope.getCodesDetails = function(codeId)// TODO zamjeniti ostale getCodesDetails sa ovim jednostavnim\r\n\t\t {\r\n $scope.codesDetails=[]; \r\n CodesService.getCodesDetails(codeId,lang).then(function(data) {\r\n $scope.codesDetails = data.data; \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n \r\n\t\t // MIGOR - Added versioning\r\n\t $scope.onNewMappingSelectCallback=function(item, selectedDataset)\r\n {\r\n\t\t ResourcesDataService.GetPublishedResourcesByTypeId(item.id,'form').then(\r\n\t\t\t\t\tfunction (data) { \r\n\t\t\t\t\t\t$scope.publishedForms[selectedDataset] = data.data;\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n\t\t}\r\n\t\t\r\n\r\n // SELECT FIELDS CALLBACKS\r\n $scope.onSelectField1 = function (item){\r\n \r\n $scope.transformPackage.dataset1=null\r\n $scope.transformPackage.dataset1Field=null\r\n \t$scope.selectedField1=item \r\n }\r\n\r\n $scope.onSelectField2 = function (item){\r\n \r\n $scope.transformPackage.dataset2=null\r\n $scope.transformPackage.dataset2Field=null;\r\n \t$scope.selectedField2=item \r\n\r\n }\r\n \r\n // TRANSFORM CALLBACKS\r\n $scope.onSelectDataset1= function (item){\r\n ResourcesDataService.getResourceFields(item.id,lang).then(function(data) { \r\n $scope.field1resources = data.data;\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n }); \r\n }\r\n\r\n $scope.onSelectDataset2 = function (item){\r\n ResourcesDataService.getResourceFields(item.id,lang).then(function(data) { \r\n $scope.field2resources = data.data;\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error'); \r\n }); \r\n }\r\n \r\n //**************** inicijalizacija ********************\r\n \r\n \r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n if ($scope.mappingFields===undefined) \r\n\t\t\t\t$scope.mappingFields={ dataset1: {}, dataset2: {} };\r\n if ($scope.transformPackage===undefined) \r\n\t\t\t$scope.transformPackage={ Params:{} };\r\n \r\n $scope.getDatasets();//puni datasetList\r\n \r\n $scope.getUsers();\r\n\t \r\n\t $scope.map2codeDict ={}\r\n CodesService.getCodesByName('dmt',lang).then(function (data) {\r\n $scope.codeList = data.data;\r\n\t\t\t data.data.forEach( (item,index) =>\r\n\t\t\t\t $scope.map2codeDict[item.value] = item.id\r\n\t\t\t\t \r\n\t\t\t )\r\n }); \r\n $scope.getCodesDetails(69);//69 je id od data_transform kodova - ne može ovako, jer id ovisi o serveru. Treba by code name\r\n\r\n $scope.saveDatasetMappingHeadStatus='CancelOrInit';\r\n $scope.saveDatasetTransformHeadStatus='CancelOrInit';\r\n $scope.getMappingPackages();\r\n $scope.getTransformPackages();\r\n \r\n }\r\n \r\n \r\n //////// KRAJ DATASETTRANSFORM CTRL ///////////\r\n\r\n\r\n export function mappingDefinitionCtrl ($scope, $rootScope, $location, $state,$timeout,AuthenticationService,ProcessingService,MessagingService,GridsterService,ResourcesDataService,CodesService,UserService,dragularService) {\r\n \r\n $scope.CTRL='mappingDefinitionCtrl';\r\n $scope.datasetDict={}\r\n $scope.publishedForms={}\r\n \r\n $scope.gsrvc = GridsterService\r\n $scope.gsrvc.resetBodyBgColor() \r\n \r\n $scope.removeItem= (pindex,index) => $scope.dataset2Fields[pindex].fields.splice(index,1);\r\n $scope.removeItemF2= (pindex,index) => $scope.dataset2Fields[pindex].fields2.splice(index,1);\r\n \r\n var drake;\r\n $scope.resourceId = $state.params?.id\r\n $scope.getResourceAll = function () {\r\n \r\n $scope.loadingResource=true\r\n ResourcesDataService.getResourceDefAll($scope.resourceId).then(function(data) {\r\n $scope.loadingResource=false \r\n // MessagingService.addMessage(data.msg,'success');\r\n $scope.resource = data.data;\r\n $scope.resource.resourceDefDownloaded = true\r\n $scope.gsrvc.setResourceFormVersion($scope.resource.uid,$scope.resource) \r\n $scope.mappHead = $scope.resource.ResourceExtended?.MappingHead\r\n if ($scope.resource.ResourceExtended?.MappingId !=undefined) $scope.getResourceFields()\r\n \r\n },function(error){\r\n $scope.loadingResource=false \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }; \r\n $scope.setResourceVersion = function(type){\r\n if (type==1)\r\n {\r\n let pos = $scope.publishedForms.dataset1.map(function(e) { return e.id.toString(); }).indexOf($scope.mappHead?.Dataset1.toString());\r\n if (pos>=0) {\r\n $scope.mappingFields.dataset1.version = $scope.publishedForms.dataset1[pos]\r\n }\r\n \r\n \r\n }else{\r\n\r\n let pos2 = $scope.publishedForms.dataset2.map(function(e) { return e.id.toString(); }).indexOf($scope.mappHead?.Dataset2.toString());\r\n if (pos2>=0) {\r\n $scope.mappingFields.dataset2.version = $scope.publishedForms.dataset2[pos2]\r\n }\r\n }\r\n } \r\n $scope.getResourceFields=function(){\r\n\r\n $scope.mappingFields.dataset1.version={}\r\n $scope.mappingFields.dataset2.version={}\r\n \r\n ResourcesDataService.GetPublishedResourcesByTypeId($scope.mappHead.Dataset1uid ,'form')\r\n .then(function (data) { \r\n $scope.publishedForms['dataset1'] = data.data;\r\n return ResourcesDataService.GetPublishedResourcesByTypeId($scope.mappHead.Dataset2uid ,'form')\r\n })\r\n .then(function (data) { // Puni mapping strukturu za API poziv\r\n \r\n \r\n $scope.tmpMappingFields={}\r\n $scope.publishedForms['dataset2'] = data.data;\r\n \r\n $scope.setupResourcesDragular($scope.mappHead.Dataset1,1);\r\n $scope.getDatasetMappings($scope.mappHead.id)\r\n \r\n $scope.tmpMappingFields.dataset1= {id:$scope.mappHead.Dataset1uid, name: $scope.mappHead.Dataset1Name};\r\n $scope.tmpMappingFields.dataset2= {id:$scope.mappHead.Dataset2uid, name: $scope.mappHead.Dataset2Name};\r\n $scope.mappingFields = $scope.tmpMappingFields\r\n $scope.setResourceVersion(1)\r\n $scope.setResourceVersion(2)\r\n \r\n \r\n }).catch( function(error) {\r\n MessagingService.addMessage(error.msg,'error');\r\n })\r\n \r\n }\r\n $scope.setupDragular = function(dragularContainerModels,dragularContainerClasses,copy,namespaces){\r\n $timeout(function(){\r\n var containers=[];\r\n \r\n for (var i =0;i1 ( DATASET2)\r\n $scope.dataset2Fields = data.data.Definition;\r\n var dragularContainerClasses=[];\r\n var dragularContainerModels = []; \r\n for(var i=0;i<$scope.dataset2Fields.length;i++) {\r\n if ($scope.dataset2Fields[i].fields==undefined) $scope.dataset2Fields[i]['fields'] = [];\r\n dragularContainerModels.push($scope.dataset2Fields[i].fields);\r\n dragularContainerClasses.push('exampleRow'+i); \r\n }\r\n \r\n \r\n $scope.setupDragular(dragularContainerModels,dragularContainerClasses,false,'dataset2');\r\n \r\n } \r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n })\r\n \r\n } \r\n \r\n \r\n $scope.GetPublishedResourceById = function(dataset1or2Fields, res) \r\n {\r\n var res\r\n if (dataset1or2Fields == 'dataset1Fields') res = $scope.mappingFields['dataset1']?.version\r\n if (dataset1or2Fields == 'dataset2Fields') res = $scope.mappingFields['dataset2']?.version\r\n \r\n if (res.id && $scope.mappHead.id) \r\n ResourcesDataService.GetPublishedResourceById(res.id).then(\r\n function (data) {\r\n if (dataset1or2Fields=='dataset1Fields') {\r\n $scope['dataset1Fields'] = data.data.Definition; \r\n $scope.setupDragular([$scope['dataset1Fields']],['dataset1Container'],true,'dataset1'); \r\n }\r\n if (dataset1or2Fields=='dataset2Fields') {\r\n $scope['dataset2Fields'] = data.data.Definition;\r\n var dragularContainerClasses = [];\r\n var dragularContainerModels = []; \r\n for(var i=0;i<$scope.dataset2Fields.length;i++) {\r\n if ($scope.dataset2Fields[i].fields==undefined) $scope.dataset2Fields[i]['fields'] = [];\r\n dragularContainerModels.push($scope.dataset2Fields[i].fields);\r\n dragularContainerClasses.push('exampleRow'+i); \r\n }\r\n $scope.setupDragular(dragularContainerModels,dragularContainerClasses,false,'dataset2');\r\n //$scope.setupDragular([$scope['dataset2Fields']],['dataset2Container'],true,'dataset2');\r\n } \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n } \r\n $scope.onChangeResourceVersion = function(dataset1or2) \r\n {\r\n if ($scope[dataset1or2]) $scope[dataset1or2].length=0\r\n } \r\n $scope.getDatasetMappings = function (datasetId) {\r\n \r\n var lang = $rootScope.globals.currentUser.lang;\r\n \r\n ResourcesDataService.getDatasetMappings(datasetId,lang).then(\r\n function(data) { \r\n $scope.dataset2Fields = data.data;\r\n //treba dragulirati\r\n var dragularContainerClasses=[];\r\n var dragularContainerModels = []; \r\n for(var i=0;i<$scope.dataset2Fields.length;i++) {\r\n dragularContainerModels.push($scope.dataset2Fields[i].fields);\r\n dragularContainerClasses.push('exampleRow'+i);\r\n dragularContainerModels.push($scope.dataset2Fields[i].fields2);\r\n dragularContainerClasses.push('exampleRowFields2'+i); \r\n }\r\n \r\n $scope.setupDragular(dragularContainerModels,dragularContainerClasses);\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }; \r\n \r\n // POPUNI LISTU DEFINICIJA OD RESURSA (RESOURCES LIST)\r\n $scope.getDatasets = function() {\r\n var lang=$rootScope.globals.currentUser.lang;\r\n ResourcesDataService.getResourceDefListByType(lang,'dataset').then(\r\n function(data) { \r\n $scope.datasetList = data.data;\r\n for (let item of $scope.datasetList) \r\n $scope.datasetDict[item.id] = item.name // create dictionary from datasetList\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n \r\n $scope.saveDatasetMappingHead = function () {//ulaz: $scope.mappingFields,$scope.selectedResource)\r\n let mappId\r\n if ($scope.mappHead?.id==undefined) mappId = 0\r\n else mappId = $scope.mappHead.id\r\n $scope.mappingFields.id=$scope.resourceId\r\n $scope.savingHead = true\r\n ResourcesDataService.saveDatasetMappingHead($scope.mappingFields,mappId,lang).then(\r\n function(data) { \r\n $scope.savingHead=false \r\n MessagingService.addMessage(data.data.msg,'success');\r\n \r\n $scope.resource.ResourceExtended = data.data.data\r\n if ($scope.resource.ResourceExtended.Version!=undefined) \r\n {\r\n $scope.resource.Version = $scope.resource.ResourceExtended.Version\r\n if ($scope.resource.ResourceExtended.Published!=undefined) $scope.resource.Published = $scope.resource.ResourceExtended.Published\r\n $scope.gsrvc.setResourceFormVersion($scope.resource.uid,$scope.resource)\r\n }\r\n $scope.mappHead = $scope.resource.ResourceExtended?.MappingHead \r\n $scope.getResourceFields()\r\n \r\n \r\n },function(error){\r\n $scope.savingHead=false\r\n MessagingService.addMessage(error.msg,'error'); \r\n \r\n });\r\n \r\n }; \r\n\r\n $scope.saveDatasetMappingDetails = function () {\r\n \r\n ResourcesDataService.saveDatasetMappingDetails($scope.dataset2Fields,$scope.mappHead?.id).then(\r\n function(data) { \r\n MessagingService.addMessage(data.data.msg,'success'); \r\n },function(error){\r\n MessagingService.addMessage(error.data.msg,'error'); \r\n });\r\n }; \r\n \r\n \r\n \r\n $scope.cancelMapping = function () {\r\n $scope.saveDatasetMappingHeadStatus='CancelOrInit';\r\n console.log($scope.saveDatasetMappingHeadStatus);\r\n }\r\n \r\n \r\n // MIGOR - Added versioning\r\n $scope.onNewMappingSelectCallback=function(item, selectedDataset)\r\n {\r\n $scope.getPublishedResources(item.id,selectedDataset)\r\n if ($scope.dataset1Fields!=undefined) $scope.dataset1Fields.length=0;\r\n if ($scope.dataset2Fields!=undefined) $scope.dataset2Fields.length=0;\r\n }\r\n \r\n $scope.getPublishedResources=function(itemId,selectedDataset){\r\n\r\n ResourcesDataService.GetPublishedResourcesByTypeId(itemId,'form').then(\r\n function (data) { \r\n $scope.publishedForms[selectedDataset] = data.data;\r\n if (selectedDataset=='dataset1') $scope.setResourceVersion(1)\r\n else $scope.setResourceVersion(2)\r\n\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n // SELECT FIELDS CALLBACKS\r\n $scope.onSelectField1 = function (item){\r\n \r\n $scope.transformPackage.dataset1=null\r\n $scope.transformPackage.dataset1Field=null\r\n $scope.selectedField1=item \r\n }\r\n\r\n $scope.onSelectField2 = function (item){\r\n \r\n $scope.transformPackage.dataset2=null\r\n $scope.transformPackage.dataset2Field=null;\r\n $scope.selectedField2=item \r\n\r\n }\r\n \r\n // TRANSFORM CALLBACKS\r\n $scope.onSelectDataset1= function (item){\r\n ResourcesDataService.getResourceFields(item.id,lang).then(function(data) { \r\n $scope.field1resources = data.data;\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n }); \r\n }\r\n\r\n $scope.onSelectDataset2 = function (item){\r\n ResourcesDataService.getResourceFields(item.id,lang).then(function(data) { \r\n $scope.field2resources = data.data;\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error'); \r\n }); \r\n }\r\n \r\n //**************** inicijalizacija ********************\r\n \r\n \r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n if ($scope.mappingFields===undefined) \r\n $scope.mappingFields={ dataset1: {}, dataset2: {} };\r\n if ($scope.transformPackage===undefined) \r\n $scope.transformPackage={ Params:{} };\r\n \r\n $scope.getDatasets();//puni datasetList\r\n\r\n \r\n $scope.map2codeDict ={}\r\n CodesService.getCodesByName('dmt',lang).then(function (data) {\r\n $scope.codeList = data.data;\r\n data.data.forEach( (item,index) =>\r\n $scope.map2codeDict[item.value] = item.id\r\n \r\n )\r\n }); \r\n $scope.returnToPreviousPage = function()\r\n {\r\n let prev_state=\"\";\r\n if ($state.params.prev_state!=\"\" && $state.params.prev_state!=undefined) prev_state = $state.params.prev_state;\r\n else prev_state = \"app.navbar.home\";\r\n \r\n $state.go(prev_state);\r\n }\r\n //$scope.getCodesDetails(69);//69 je id od data_transform kodova - ne može ovako, jer id ovisi o serveru. Treba by code name\r\n\r\n $scope.saveDatasetMappingHeadStatus='CancelOrInit';\r\n $scope.saveDatasetTransformHeadStatus='CancelOrInit';\r\n // $scope.getMappingPackages();\r\n $scope.getResourceAll()\r\n \r\n }\r\n \r\n \r\n //////// END mapping definition CTRL ///////////\r\n \r\nexport function newResourceCtrl ($scope, $rootScope, $location, $timeout,AuthenticationService,ProcessingService,MessagingService,GridsterService,ResourcesDataService,CodesService,MenuService,$stateParams) {\r\n \r\n $scope.CTRL='newResourceCtrl';\r\n $scope.selectedItems=[];\r\n $scope.resource={};\r\n $scope.resource_type_filter=$stateParams.resource_type;\r\n $scope.saveSuccess2 = false\r\n\t $scope.rootscope = $rootScope\r\n \r\n\t $scope.showme = function (resourcetype) {\r\n\t\t switch(resourcetype) {\r\n\t\t\t case 'page':\r\n\t\t\t\treturn true //always show\r\n\t\t\t\tbreak;\r\n\t\t\t case 'application': //show if we have page\r\n\t\t\t\tif ( $scope.rootscope.globals.envinfo.page>0) return true \r\n\t\t\t\tbreak;\r\n\t\t\t case 'dataset':\r\n\t\t\t\tif ( $scope.rootscope.globals.envinfo.page>0 && \r\n\t\t\t\t\t $scope.rootscope.globals.envinfo.application>0 ) return true\r\n\t\t\t\tbreak;\r\n\t\t\t default:\r\n\t\t\t\tif ( \t$scope.rootscope.globals.envinfo.dataset>0 &&\r\n\t\t\t\t\t\t$scope.rootscope.globals.envinfo.page>0 && \r\n\t\t\t\t\t\t$scope.rootscope.globals.envinfo.application>0 \r\n\t\t\t\t) return true\r\n\t\t\t}\t\r\n\t\r\n\t\t return false\r\n\t }\r\n\t \r\n var lang = $rootScope.globals.currentUser.lang;\r\n $scope.selectedResourceType={Value:false, HideBack:false};\r\n \r\n $scope.gsrvc = GridsterService\r\n $scope.menu_service = MenuService\r\n $scope.menu_service.clearSideMenu()\r\n $scope.gsrvc.resetBodyBgColor() \r\n \r\n $scope.saveResourceDef = function (isValid) \r\n { \r\n if (isValid) {\r\n ResourcesDataService.SaveResourceDef2($scope.resource)\r\n .then( \r\n function(data) { \r\n if (data.status===200 || data.status===201 ) {\r\n MessagingService.addMessage(\"Resource saved successfuly\",'success'); \r\n $scope.saveSuccess2 = true\r\n } \r\n }\r\n ,function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n $scope.saveSuccess2 = false \r\n }); \r\n } else { \r\n MessagingService.addMessage(\"Please enter required data\",'warning'); \r\n }\r\n };\r\n \r\n \r\n \r\n ResourcesDataService.GetResourceParams().then(function (data) { \r\n $scope.resourceTypeList = data.data;\r\n if ($scope.resourceStatusList!=undefined) $scope.filterResources();\r\n });\r\n \r\n \r\n CodesService.getCodesByName('codestatus',lang)\r\n .then(function (data) {\r\n $scope.resourceStatusList = data.data;\r\n // Setting resource to ACTIVE state ==\t{id: 17, value: 'a', name: 'Active', active: true, params: null}\r\n var pos = $scope.resourceStatusList.map(function(e) { return e.value; }).indexOf(\"a\");\r\n if (pos>=0) {\r\n \r\n $scope.resource.Status = $scope.resourceStatusList[pos];\r\n }\r\n if ($scope.resourceTypeList!=undefined) $scope.filterResources();\r\n });\r\n \r\n CodesService.getCodesByName('_RESOURCE_GROUP_',lang).then(function (data) {\r\n $scope.resourceGroupList = data.data;\r\n });\r\n \r\n\r\n \r\n $scope.resourceTypeSelected = function (resourceType) {\r\n \r\n var pos = $scope.resourceTypeList.map(function(e) { return e.ResourceCode; }).indexOf(resourceType);\r\n if (pos>=0) {\r\n //debugger //newResourceCtrl\r\n $scope.resource.ResourceType= $scope.resourceTypeList[pos];\r\n $scope.resource.Parameters={};\r\n $scope.selectedResourceType.Value=true;\r\n \r\n \r\n if ($scope.resource.ResourceType.ResourceCode == 'page')\r\n $scope.resource.Parameters.navbar= true //show Application menu on pages\r\n \r\n if (resourceType != 'dataset') \r\n $scope.subTypeSelected = true;// skip submenu for other types (not datasets)\r\n else {\r\n\t\t\t\t // $scope.subTypeSelected = false;\r\n\t\t\t\t $scope.subTypeSelected = true;// TODO - temporary skip dataset submenu - allowing only 1 type of datasets\r\n\t\t\t\t $scope.resourcesubTypeSelected('standard');// TODO - temporary skip dataset submenu - allowing only 1 type of datasets\r\n\t\t\t }\r\n }\r\n \r\n };\r\n \r\n \r\n \r\n $scope.resourcesubTypeSelected = function (resourceSubType) {\r\n \r\n $scope.subTypeSelected = resourceSubType\r\n $scope.resource.ResourceSubType = resourceSubType\r\n if (resourceSubType=='standard') {\r\n $scope.resource.Parameters.extDataSourceType = {id:1,name: \"Database Table\"}\r\n }\r\n \r\n };\r\n \r\n \r\n \r\n if ($scope.resource.Parameters ==undefined || $scope.resource.Parameters==null)\r\n {\r\n $scope.resource.Parameters = {extDataSourceParams:{formFieldsList:[]} }; \r\n } else\r\n {\r\n if ($scope.resource.Parameters.extDataSourceParams == undefined || value == false) { \r\n $scope.resource.Parameters.extDataSourceParams={ formFieldsList:[] }; \r\n } else $scope.resource.Parameters.extDataSourceParams.formFieldsList.length=0; \r\n } \r\n \r\n \r\n $scope.newResource = function (isValid) {\r\n \r\n if (isValid) {\r\n $scope.SaveResourceDef();\r\n } else {\r\n MessagingService.addMessage(\"Save failed - please enter all required data!\",'error'); \r\n }\r\n };\r\n \r\n $scope.setImmutable = function () {\r\n \r\n if (!$scope.saveSuccess) $scope.resource.IsBlockchain = !$scope.resource.IsBlockchain;\r\n };\r\n\r\n \r\n\r\n $scope.SaveResourceDef = function () {\r\n //call new resource from service\r\n //debugger\r\n $scope.savingResource=true\r\n $scope.activity.activityMessage = ProcessingService.setActivityMsg('Saving resource '+$scope.resource.Name);\r\n \r\n ResourcesDataService.SaveResourceDef2($scope.resource).then(function(data) {\r\n \r\n MessagingService.addMessage(data.msg,'success');\r\n $scope.saveSuccess=true;\r\n $scope.resource = data.data\r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t $rootScope.globals.envinfo[$scope.resource.ResourceCode]=$rootScope.globals.envinfo[ $scope.resource.ResourceCode]+1\r\n $scope.savingResource=false \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.saveSuccess=false;\r\n $scope.savingResource=false\r\n });\r\n }; \r\n \r\n $scope.filterResources = function()\r\n {\r\n if ($scope.resource_type_filter!=\"\")\r\n {\r\n $scope.selectedResourceType.Value=true;\r\n $scope.selectedResourceType.HideBack=true;\r\n $scope.resourceTypeSelected($scope.resource_type_filter);\r\n }\r\n }\r\n \r\n }\r\n \r\n \r\n\r\nexport function viewResourceCtrl ($scope, $rootScope, $state, $timeout,MessagingService,GridsterService,ResourcesDataService,CodesService,MenuService) {\r\n \r\n \r\n $scope.resourceId=$state.params.id;\r\n $scope.resource_type=$state.params.resource_type;\r\n $scope.CTRL='viewResourceCtrl';\r\n $scope.selectedItems=[];\r\n $scope.menu_service = MenuService\r\n $scope.menu_service.clearSideMenu()\r\n $scope.gsrvc = GridsterService\r\n $scope.gsrvc.resetBodyBgColor() \r\n \r\n //$scope.showReturnLink = $state.params.prev_state.params.showReturnLink; \r\n var lang = $rootScope.globals.currentUser.lang;\r\n \r\n CodesService.getCodesByName('codestatus',lang).then(function (data) {\r\n $scope.resourceStatusList = data.data;\r\n });\r\n \r\n $scope.getResourceAll = function () {\r\n \r\n\r\n ResourcesDataService.getResourceDefAll($scope.resourceId).then(function(data) {\r\n \r\n // MessagingService.addMessage(data.msg,'success');\r\n $scope.resource = data.data;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }; \r\n \r\n $scope.getResourceInfo = function () {\r\n \r\n\r\n ResourcesDataService.getExternalResourceInfo($scope.resourceId).then(function(data) {\r\n \r\n \r\n $scope.resource = data.data;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }; \r\n \r\n\r\n $scope.getResourceInfo($scope.resourceId);\r\n \r\n \r\n $scope.returnToPreviousPage = function()\r\n {\r\n let prev_state=\"\";\r\n if ($state.params.prev_state!=\"\" && $state.params.prev_state!=undefined) prev_state = $state.params.prev_state;\r\n else prev_state = \"app.navbar.home\";\r\n \r\n $state.go(prev_state);\r\n }\r\n \r\n}\r\n\r\n\r\nexport function editResourceCtrl ($scope, $rootScope, $state, $timeout,MessagingService,GridsterService,ResourcesDataService,CodesService,MenuService) {\r\n \r\n \r\n $scope.resourceId=$state.params.id;\r\n $scope.CTRL='editResourceCtrl';\r\n $scope.selectedItems=[];\r\n //$scope.selectedItem={};\r\n $scope.menu_service = MenuService\r\n $scope.menu_service.clearSideMenu()\r\n $scope.gsrvc = GridsterService\r\n $scope.gsrvc.resetBodyBgColor() \r\n \r\n $scope.showReturnLink = $state.params.prev_state.params?.showReturnLink; \r\n var lang = $rootScope.globals.currentUser.lang;\r\n \r\n \r\n CodesService.getCodesByName('resourcetype',lang).then(function (data) {\r\n \r\n $scope.resourceTypeList = data.data;\r\n });\r\n \r\n CodesService.getCodesByName('codestatus',lang).then(function (data) {\r\n $scope.resourceStatusList = data.data;\r\n });\r\n CodesService.getCodesByName('_APPS_',lang).then(function (data) {\r\n \r\n $scope.resourceTagsList = data.data;\r\n });\r\n \r\n $scope.getResourceAll = function () {\r\n \r\n ResourcesDataService.getResourceDefAll($scope.resourceId).then(function(data) {\r\n \r\n // MessagingService.addMessage(data.msg,'success');\r\n $scope.resource = data.data;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }; \r\n \r\n $scope.getResourceAll();\r\n \r\n $scope.setImmutable = function () {\r\n \r\n \r\n if (!$scope.saveSuccess) $scope.resource.IsBlockchain = !$scope.resource.IsBlockchain;\r\n };\r\n\r\n $scope.returnToPreviousPage = function()\r\n {\r\n $state.go($state.params.prev_state.state,$state.params.prev_state.params);\r\n }\r\n \r\n \r\n $scope.saveResourceDef = function (isValid) {\r\n \r\n if (isValid)\r\n {\r\n ResourcesDataService.saveResourceDefAll($scope.resource).then(function(data) {\r\n \r\n if (data.status===200 || data.status===201)\r\n {\r\n MessagingService.addMessage(\"Resource saved successfuly\",'success'); \r\n }\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n \r\n });\r\n \r\n }else\r\n {\r\n \r\n MessagingService.addMessage(\"Please enter required data\",'warning'); \r\n }\r\n }; \r\n \r\n \r\n \r\n }\r\n \r\n \r\n\r\nexport function applicationDefinitionCtrl ($scope, $rootScope, $location, $timeout,AuthenticationService,ProcessingService,MessagingService,ResourcesDataService,UtilityService,GridsterService,KatalyoStateManager,MenuService,$stateParams,$state) {\r\n \r\n $scope.resourceId=$stateParams.id;\r\n $scope.CTRLNAME='applicationDefinitionCtrl';\r\n $scope.pageState={ selectedPage: {}, selectedMenu: {} };\r\n $scope.gsrvc = GridsterService\r\n $scope.gsrvc.resetBodyBgColor()\r\n $scope.menu_service = MenuService\r\n $scope.menu_service.clearSideMenu() \r\n $scope.selectedTab=1\r\n $scope.ksm = KatalyoStateManager;\r\n $scope.localVars={}\r\n\t$scope.pageLabels = $rootScope?.globals?.pageLabels\r\n\tvar lang = $rootScope.globals.currentUser.lang;\r\n\t \r\n\t\r\n\t$scope.openSelectMenu = function(a) {\r\n\t\t$scope.pageState.selectMenu = true\r\n\t}\r\n\r\n\t\r\n\t$scope.oncheck = function() {\r\n\t//debugger\r\n\t\tif ($scope.pageState.selectedMenu.SelectVersionDirect==false) \r\n\t\t\t\t$scope.pageState.selectedMenu.selectedPublishedResource=null\r\n\t}\r\n\t\r\n\t\r\n if ($location.search().page_state!=undefined) {\r\n var page_state = $location.search().page_state;\r\n } else {\r\n var uuid = UtilityService.uuidv4(); //generate guid\r\n }\r\n \r\n \r\n $scope.existingMenu = function () \r\n\t{\r\n $scope.pageState.selectedMenuOption = \"existing\";\r\n }\r\n \r\n \r\n //get menus\r\n ResourcesDataService.getResourceDefListByType(lang,'menu').then(\r\n\t\tfunction(data) {\t\t\t\t\t\t\t\t\r\n $scope.menuList = data.data;\r\n $scope.getResourceAll();\r\n\t\t\t$scope.localVars.menusdownloaded=true\t\t\t\t\t \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n \r\n\t//get pages\r\n ResourcesDataService.getResourceDefListByType(lang,'page').then(\r\n\tfunction(data) {\t\t\t\t\t\t\t\t\t\r\n $scope.pageList = data.data;\r\n\t\t\t\t$scope.localVars.pagesdownloaded=true\t\t\t\t\t\t\t\t \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n\t});\r\n\r\n\r\n $scope.get_published_apps = function()\r\n\t{ \r\n\t\t\t\r\n ResourcesDataService.GetPublishedResources($scope.resourceId, 'application').then(\r\n\t\t\tfunction (data) { \t\t\r\n\t\t\t $scope.publishedResources = data.data;\r\n\t\t\t $scope.localVars.publishresourcesdownloaded=true\r\n\t\t\t});\r\n\t\t\t\r\n\t\t/*\t\r\n\t\tResourcesDataService.GetPublishedResourcesByTypeId($scope.resourceId,'application').then(\r\n function (data) { \t\t\t\t\t\r\n\t\t\t\t\t\t$scope.publishedResources = data.data;\r\n\t\t\t\t\t\t$scope.localVars.publishresourcesdownloaded=true\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error'); \r\n })*/\r\n }\r\n \r\n $scope.get_published_apps()\r\n \r\n $scope.selectMenu = function (menu) {\r\n $scope.pageState.selectedMenu = menu;\r\n $scope.pageState.selectedMenuOption = undefined;\r\n $scope.pageState.saveEnabled = true;\r\n $scope.pageState.selectMenu =false;\r\n if ($scope.pageState.selectedMenu?.SelectVersionDirect){\r\n $scope.getPublishedResources($scope.pageState.selectedMenu,'app-menu')\r\n } \r\n }\r\n\r\n\r\n $scope.PreparePublish2Prod = function() //TODO - vidjeti cemu ovo sluzi , da li se $scope.publishedResource koristi negdje ??\r\n {\r\n ResourcesDataService.preparePublish2Prod($scope.resourceId,$scope.resource.ResourceCode,$scope.resource.Version).then(\r\n\t\t\t\tfunction(data) { \r\n\t\t\t\t\t$scope.publishedResource = data.data;\r\n\t\t\t\t\t$scope.localVars.preparePublish2Prod = true \r\n\t\t\t\t},function(error){ \r\n\t\t\t\t\tMessagingService.addMessage(error.msg,'error'); \r\n });\r\n }\r\n\r\n\r\n $scope.Publish2Prod = function() //APP controler\r\n {\r\n $scope.publishingApp=true\r\n let resources = [{uid:$scope.resourceId,itemSubType:$scope.resource.ResourceCode,version: $scope.gsrvc.resourceFormVersion[$scope.resource.uid]?.Version }]\r\n ResourcesDataService.publish2Prod(resources).then(function(data) {\r\n \r\n MessagingService.addMessage(data.data.msg,data.data.msg_type); \r\n $scope.publishingApp=false\r\n if ($scope.publishedResource==undefined) $scope.publishedResource={}\r\n $scope.publishedResource.Published = data?.data?.Published\r\n $scope.publishedResource.PublishedBy = data?.data?.PublishedBy\r\n $scope.publishedResource.Version = data?.data?.Version\r\n $scope.gsrvc.resourceFormVersion[$scope.resource.uid].Version = $scope.publishedResource.Version\r\n $scope.publishedResource.PublishedVersion = data?.data?.PublishedVersion\r\n $scope.publishedResource.DateTime = data?.data?.DateTime\r\n $scope.publishedResource.ChangedDateTime = data?.data?.ChangedDateTime\r\n $scope.publishedResource.ChangedBy = data?.data?.ChangedBy\r\n\t\t\t\t$('#manifest').modal('hide')\r\n\t\t\t\t$scope.showPublish2Market($scope.resource) \r\n \r\n },function(error){\r\n $scope.publishingApp=false \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }\r\n\r\n $scope.selectedResources = []\r\n $scope.pageState.selectAllResources = false\r\n \r\n\r\n $scope.selectResource2Publish = function (resource,isAll) {\r\n \r\n let pos = $scope.selectedResources.map(function(e) { return e.id; }).indexOf(resource.id)\r\n if (!isAll) { \r\n if (pos>=0) {\r\n $scope.selectedResources.splice(pos,1)\r\n resource.selected = false\r\n } else {\r\n resource.selected = true\r\n $scope.selectedResources.push(resource)\r\n }\r\n } else {\r\n resource.selected = !$scope.pageState.selectAllResources\r\n if (!$scope.pageState.selectAllResources) {\r\n if (pos<0) $scope.selectedResources.push(resource) \r\n } \r\n else \r\n\t\t\t\t\tif (pos>=0) $scope.selectedResources.splice(pos,1)\r\n } \r\n\r\n }\r\n\r\n $scope.selectAll4Publish = function (itemType) \r\n\t\t {\r\n \r\n for (let i=0;i<$scope.appManifest.length;i++){ \r\n\t\t\t\tif ($scope.appManifest[i].itemType==itemType) \r\n\t\t\t\t\t$scope.selectResource2Publish($scope.appManifest[i],true)\r\n \r\n }\r\n\r\n }\r\n\r\n\r\n $scope.selectPage = function (page) {\r\n \r\n $scope.pageState.selectedPage = page;\r\n $scope.pageState.selectDefaultPage = false;\r\n if ($scope.pageState.selectedPage?.SelectVersionDirect)\r\n {\r\n $scope.getPublishedResources($scope.pageState.selectedPage,'form')\r\n }\r\n \r\n \r\n } \r\n\r\n $scope.selectHelpPage = function (page) {\r\n \r\n $scope.pageState.helpPage = page;\r\n $scope.pageState.selectHelpPage = false;\r\n if ($scope.pageState.helpPage?.SelectVersionDirect)\r\n {\r\n $scope.getPublishedResources($scope.pageState.helpPage,'form')\r\n }\r\n \r\n \r\n } \r\n $scope.getResourceAll = function () {\r\n \r\n ResourcesDataService.getResourceDefAll($scope.resourceId).then(function(data) {\r\n \r\n // MessagingService.addMessage(data.msg,'success');\r\n $scope.resource = data.data;\r\n $scope.resource.resourceDefDownloaded = true\r\n\t\t\t\t\t\t\t $scope.localVars.resourcedefdownloaded=true\r\n\r\n $scope.resource.adminHeaderLabel = 'App permissions'\r\n let menu = $scope.findLink(\"app-menu\",$scope.menuList);\r\n $scope.selectMenu(menu);\r\n let defaultPage = $scope.findLink(\"default-page\",$scope.pageList);\r\n $scope.selectPage(defaultPage);\r\n let helpPage = $scope.findLink(\"help-page\",$scope.pageList);\r\n $scope.selectHelpPage(helpPage);\r\n $scope.gsrvc.setResourceFormVersion($scope.resource.uid,$scope.resource);\r\n $scope.PreparePublish2Prod()\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n };\r\n\t\t\r\n\t\t\r\n $scope.findLink = function(link_type,resourceList)\r\n {\r\n let resource2,r_item;\r\n for (let i=0;i<$scope.resource.ResourceExtended?.length;i++) \r\n {\r\n if ($scope.resource.ResourceExtended[i].LinkType==link_type) \r\n {\r\n r_item = $scope.resource.ResourceExtended[i]\r\n resource2=$scope.resource.ResourceExtended[i].Resource2;\r\n\r\n }\r\n }\r\n let pos = resourceList.map(function(e) { return e.id; }).indexOf(resource2);\r\n\r\n if (pos>=0) return { ...r_item ,...resourceList[pos] }\r\n else return null;\r\n \r\n }\r\n \r\n\t\t$scope.newMenu = function () \r\n\t\t{\r\n\t\t\t$state.go(\"app.navbar.resources.new\",{resource_type:'menu',return_page:{'id':$scope.resource.uid,'page':'app.navbar.resources.application-definition'}}) \r\n\t\t};\r\n\t \r\n\t \r\n $scope.findLinkIndex = function(link_type)\r\n {\r\n for (let i=0;i<$scope.resource.ResourceExtended.length;i++) {\r\n if ($scope.resource.ResourceExtended[i].LinkType==link_type) return i;\r\n }\r\n return -1;\r\n }\r\n\t\t\r\n\t\t$scope.findLinkId = function( link_type, wheretolook)\r\n {\r\n for (let i=0;i {\r\n if (item.Version == resource?.Version) \r\n resource.selectedPublishedResource = item\r\n } ) \r\n }\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error'); \r\n })\r\n\r\n }\r\n\r\n $scope.publishApplication = function () {\r\n \r\n $scope.publishingApp = true;\r\n //debugger\r\n ResourcesDataService.PublishResource($scope.resourceId,$scope.resource.NewVersion,'publish to PROD','application')\r\n .then(function(data) {\r\n MessagingService.addMessage(data.msg,'success');\r\n //$('#datasetPublish').modal('hide'); \r\n $scope.publishingApp = false; \r\n } ,function(error){ \r\n $scope.publishingApp = false;\r\n MessagingService.addMessage(error.msg,'error'); \r\n })\r\n }\r\n\r\n $scope.appManifest=[] \r\n\t\r\n $scope.buildAppManifest = function () \r\n\t{\r\n\t\t//debugger\r\n $scope.buildingApp = true\r\n $scope.appManifest.length=0\r\n ResourcesDataService.publishApplication($scope.resourceId,$scope.resource.NewVersion).then(\r\n\t\t\t\tfunction(data) { \r\n $scope.buildingApp = false\r\n $scope.appManifest=data.data?.manifest\r\n $scope.readyToPublish = data.data?.ready_to_publish\r\n \r\n },function(error){\r\n $scope.buildingApp = false\r\n MessagingService.addMessage(error.msg,'error'); \r\n })\r\n \r\n }\r\n\r\n\r\n $scope.publishPublicResource = function (modalResource) \r\n\t {\r\n $scope.savingManifest = true\r\n\t\tlet version = $scope.resource.NewVersion\r\n\t\tif (modalResource?.Version) \tversion = modalResource.Version\t\r\n let publish = {publishtype:'app-manifest',envtype:'ALL',install:true,definition:$scope.appManifest}\r\n\t\r\n ResourcesDataService.publishPublicResource($scope.resourceId,$scope.resource.ResourceCode, version ,publish).then(\r\n\t\t\t\tfunction(data) {\r\n MessagingService.addMessage(data.data.msg,'success');\r\n $scope.savingManifest = false\r\n },function(error){\r\n $scope.savingManifest = false\r\n MessagingService.addMessage(error.msg,'error'); \r\n }).finally( () => {\r\n\t\t\t\t\t $('#publish2market').modal('hide')\r\n\t\t\t\t\t $('#manifest').modal('hide')\r\n\t\t\t\t })\r\n \r\n };\r\n \r\n $scope.returnToPreviousPage = function()\r\n {\r\n let page = \"app.navbar.resources.list\";\r\n //let navbar = MenuService.getPageNavbarByName(page);\r\n $state.go(page,{});\r\n \r\n }\r\n \r\n }\r\n\r\nexport function appMenuDefinitionCtrl ($scope, $rootScope, $location, $timeout,AuthenticationService,ProcessingService,MessagingService,ResourcesDataService,CodesService,GridsterService,MenuService,$stateParams,$state) {\r\n \r\n \r\n $scope.resourceId=$stateParams.id;\r\n $scope.CTRLNAME='appMenuDefinitionCtrl';\r\n $scope.selectedItems=[];\r\n $scope.menuLoaded = false;\r\n $scope.menu_service = MenuService\r\n $scope.menu_service.clearSideMenu()\r\n \r\n $scope.localVars = {taskList:[]};\r\n $scope.localVars.hideBtns=true;\r\n $scope.localVars.showDelete=true;\r\n var lang = $rootScope.globals.currentUser.lang;\r\n $scope.gsrvc = GridsterService\r\n $scope.gsrvc.resetBodyBgColor() \r\n /* CodesService.getCodesByName('resourcetype',lang).then(function (data) {\r\n \r\n $scope.resourceTypeList = data.data;\r\n });\r\n \r\n CodesService.getCodesByName('codestatus',lang).then(function (data) {\r\n $scope.resourceStatusList = data.data;\r\n });\r\n \r\n */\r\n\t\t\r\n $scope.getResourceAll = function () {\r\n \r\n ResourcesDataService.getResourceDefAll($scope.resourceId).then(function(data) {\r\n \r\n $scope.resource = data.data;\r\n $scope.resource.resourceDefDownloaded = true\r\n $scope.resource.adminHeaderLabel = 'App menu permissions'\r\n\t\t\t\t\t\t\t$scope.gsrvc.setResourceFormVersion($scope.resource.uid,{Version:$scope.resource.Version,Published:$scope.resource.Published,NewVersion:$scope.resource.NewVersion})\r\n\r\n\r\n $scope.PreparePublish2Prod()\r\n\r\n $scope.menuLoaded = true;\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }; \r\n \r\n \r\n \r\n $scope.returnToPreviousPage = function()\r\n {\r\n let page = \"app.navbar.resources.list\";\r\n $state.go(page,{});\r\n \r\n }\r\n \r\n $scope.showModal = function (p_type) {\r\n \r\n $('#menuPublish').modal('show'); \r\n //$scope.modalAction=p_type\r\n //$scope.newPublishVersion = $scope.resource.NewVersion\r\n }\r\n\r\n $scope.PreparePublish2Prod = function()\r\n {\r\n ResourcesDataService.preparePublish2Prod($scope.resourceId,$scope.resource.ResourceCode,$scope.resource.Version).then(function(data) {\r\n \r\n $scope.publishedResource = data.data;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }\r\n\r\n $scope.Publish2Prod = function()\r\n {\r\n $scope.publishingDataset=true\r\n //if (!$scope.publishedResource?.Version) $scope.publishedResource.PublishedVersion = $scope.gsrvc.resourceFormVersion[$scope.resource.uid].Version\r\n let resources = [{uid:$scope.resourceId,itemSubType:$scope.resource.ResourceCode,version: $scope.gsrvc.resourceFormVersion[$scope.resource.uid].Version }] //$scope.gsrvc.resourceFormVersion[$scope.resource.uid]?.Version\r\n ResourcesDataService.publish2Prod(resources).then(function(data) {\r\n \r\n MessagingService.addMessage(data.data.msg,'success'); \r\n $scope.publishedResource.Published = data.data.Published\r\n $scope.publishedResource.Deployed = data.data.Deployed\r\n $scope.publishedResource.Version = data.data.Version\r\n $scope.gsrvc.resourceFormVersion[$scope.resource.uid].Version = $scope.publishedResource.Version\r\n $scope.publishedResource.PublishedVersion = data?.data?.PublishedVersion\r\n $scope.publishedResource.DateTime = data.data.DateTime\r\n $scope.publishedResource.PublishedBy = data.data.PublishedBy\r\n $scope.publishedResource.ChangedDateTime = data.data.ChangedDateTime\r\n $scope.publishedResource.ChangedBy = data.data.ChangedBy\r\n $scope.publishedResource.count = 0 \r\n // $scope.publishedResource.rmd = data.data.rmd\r\n $scope.publishingDataset=false\r\n \r\n },function(error){\r\n $scope.publishingDataset=false \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }\r\n\r\n $scope.getResourceAll();\r\n \r\n $scope.localVars.updateResource = function(resource)\r\n {\r\n $scope.resource=resource\r\n }\r\n $scope.saveResourceDef = function (forma) {\r\n \r\n if (forma.$valid)\r\n {\r\n ResourcesDataService.SaveResourceDef2($scope.resource).then(function(data) {\r\n \r\n if (data.status===200 || data.status==201)\r\n {\r\n MessagingService.addMessage(data.msg,'success'); \r\n }\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n \r\n });\r\n \r\n }else\r\n {\r\n \r\n MessagingService.addMessage(\"Please enter required data\",'warning'); \r\n }\r\n }; \r\n\r\n \r\n \r\n \r\n \r\n \r\n }\r\nexport function integrationDefinitionCtrl ($scope, $rootScope, $location, $state, $timeout,AuthenticationService,ProcessingService,MessagingService,ResourcesDataService,CodesService,GridsterService,MenuService,$stateParams) {\r\n \r\n \r\n $scope.resourceId=$stateParams.id;\r\n $scope.CTRLNAME='integrationDefinitionCtrl';\r\n $scope.selectedItems=[];\r\n $scope.dashboard = {};\r\n $scope.dashboard.widgetsRight={};\r\n $scope.localVars = {taskList:[]};\r\n $scope.gsrvc=GridsterService\r\n $scope.gsrvc.resetBodyBgColor()\r\n $scope.menu_service = MenuService\r\n $scope.menu_service.clearSideMenu() \r\n \r\n var lang = $rootScope.globals.currentUser.lang;\r\n \r\n CodesService.getCodesByName('resourcetype',lang).then(function (data) {\r\n //debugger;\r\n $scope.resourceTypeList = data.data;\r\n });\r\n \r\n CodesService.getCodesByName('codestatus',lang).then(function (data) {\r\n $scope.resourceStatusList = data.data;\r\n });\r\n \r\n \r\n $scope.getResourceAll = function () {\r\n \r\n ResourcesDataService.getResourceDefAll($scope.resourceId).then(function(data) {\r\n \r\n // MessagingService.addMessage(data.msg,'success');\r\n $scope.resource = data.data;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }; \r\n \r\n $scope.getResourceAll();\r\n \r\n \r\n $scope.getResourceDefinition = function () {\r\n \r\n ResourcesDataService.getResourceDefAll($scope.resourceId).then(function(data) {\r\n \r\n // MessagingService.addMessage(data.msg,'success');\r\n $scope.resource = data.data;\r\n \r\n if ( $scope.resource.Parameters ==null || angular.equals( {}, $scope.resource.Parameters) )\r\n { \r\n $scope.resource.Parameters = {navbar:true,sideMenu:true,pageGridItems:[{id:1}],grid:{NoOfRows:null,NoOfColumns:null,RowGap:null,ColumnGap:null}} \r\n }\r\n $scope.pageDownloaded = true;\r\n $scope.BuildGrid(true);\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n };\r\n \r\n \r\n ResourcesDataService.getResourceDefListByType(lang,'dataset').then(function(data) {\r\n \r\n $scope.resourceList = data.data;\r\n $scope.resourcesLoaded = true;\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n }); \r\n \r\n \r\n $scope.saveResourceDef = function (isValid) {\r\n \r\n if (isValid)\r\n {\r\n ResourcesDataService.saveResourceDefAllNew($scope.resource).then(function(data) {\r\n \r\n \r\n if (data.status===200 || data.status===201)\r\n {\r\n MessagingService.addMessage(\"Integration saved successfuly\",'success'); \r\n }\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n \r\n });\r\n \r\n }else\r\n {\r\n \r\n MessagingService.addMessage(\"Please enter required data\",'warning'); \r\n }\r\n }; \r\n \r\n \r\n \r\n $scope.returnToPreviousPage = function()\r\n {\r\n let page = \"app.navbar.resources.list\";\r\n //let navbar = MenuService.getPageNavbarByName(page);\r\n $state.go(page,{});\r\n \r\n }\r\n \r\n \r\n $scope.getIntegration = function () {\r\n $scope.integrationLoaded=false;\r\n //debugger\r\n ResourcesDataService.getResourceForm($scope.resourceId,'i',lang).then(function(data) {\r\n if (data.data.widgets.length>0)\r\n {\r\n $scope.dashboard.widgetsRight={layout:data.data.widgets};\r\n }else $scope.dashboard.widgetsRight.layout = GridsterService.getEmptyApplicationMenu();\r\n \r\n //datasetFormState.subject.setState=$scope.dashboard.widgets;\r\n \r\n $scope.resourceDefinition= data.data.resourceDefinition;\r\n \r\n $timeout(function() {\r\n $scope.integrationLoaded=true;\r\n });\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n };\r\n \r\n $scope.getIntegration();\r\n \r\n}\r\nexport function smartContractDefinitionCtrl ($scope, $rootScope, $location, $timeout,MessagingService,ResourcesDataService,CodesService,GridsterService,MenuService,$stateParams,$state) {\r\n \r\n \r\n $scope.resourceId=$stateParams.id;\r\n $scope.CTRL='smartContractDefinitionCtrl';\r\n $scope.selectedItems=[];\r\n \r\n $scope.gsrvc = GridsterService\r\n $scope.gsrvc.resetBodyBgColor() \r\n $scope.menu_service = MenuService\r\n $scope.menu_service.clearSideMenu()\r\n var lang = $rootScope.globals.currentUser.lang;\r\n \r\n \r\n ResourcesDataService.getResourceDefListByType($rootScope.globals.currentUser.lang,'dataset').then(\r\n function(data) {\t\t\t\r\n\t\t\t\t\t\t\t$scope.datasetList = data.data;\r\n //debugger\r\n }\r\n ,function(error){ MessagingService.addMessage(error.msg,'error')\t}\r\n );\r\n \r\n /*\r\n CodesService.getCodesByName('usertags',lang).then(function (data) {\r\n $scope.tagList = data.data;\r\n $scope.tagList1 = angular.copy($scope.tagList);\r\n $scope.tagList2 = angular.copy($scope.tagList);\r\n \r\n });\r\n \r\n CodesService.getCodesByName('codestatus',lang).then(function (data) {\r\n $scope.resourceStatusList = data.data;\r\n });\r\n \r\n */\r\n $scope.newFunction = function(){\r\n \r\n if ($scope.resource.Parameters.Functions==undefined) $scope.resource.Parameters.Functions = [];\r\n $scope.resource.Parameters.Functions.push({});\r\n \r\n };\r\n \r\n $scope.newBlockchainDataset = function(){\r\n \r\n if ($scope.resource.Parameters.Datasets==undefined) $scope.resource.Parameters.Datasets = [];\r\n $scope.resource.Parameters.Datasets.push({});\r\n \r\n };\r\n \r\n $scope.getResourceAll = function () {\r\n \r\n ResourcesDataService.getResourceDefAll($scope.resourceId).then(function(data) {\r\n \r\n // MessagingService.addMessage(data.msg,'success');\r\n $scope.resource = data.data;\r\n $scope.resourceLoaded = true;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }; \r\n \r\n $scope.getResourceAll();\r\n \r\n $scope.saveResourceParameters = function () {\r\n \r\n ResourcesDataService.saveResourceDefParameters($scope.resourceId,$scope.resource.Parameters).then(function(data) {\r\n \r\n if (data.status===200 || data.status===201)\r\n {\r\n MessagingService.addMessage(data.data,'success'); \r\n }\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.data,'error'); \r\n \r\n });\r\n \r\n \r\n };\r\n \r\n \r\n}\r\n\r\n\r\nexport function tokenDefinitionCtrl ($scope, $rootScope, $location, $timeout,MessagingService,ResourcesDataService,CodesService,GridsterService,MenuService,$stateParams,$state) {\r\n \r\n \r\n $scope.resourceId=$stateParams.id;\r\n $scope.CTRL='tokenDefinitionCtrl';\r\n $scope.selectedItems=[];\r\n let lang = $rootScope.globals.currentUser.lang;\r\n\r\n let tokenDef = Vue.createApp(TokenDefinition);\r\n $scope.gsrvc = GridsterService\r\n $scope.gsrvc.resetBodyBgColor()\r\n $scope.menu_service = MenuService\r\n $scope.menu_service.clearSideMenu()\r\n\r\n tokenDef.mount(\"#tokenDefinitionComponent\");\r\n \r\n}\r\nexport function notificationDefinitionCtrl ($scope, $rootScope, $location, $timeout,MessagingService,ResourcesDataService,CodesService,GridsterService,MenuService,$stateParams,$state) {\r\n \r\n \r\n $scope.resourceId=$stateParams.id;\r\n $scope.CTRL='notificationDefinitionCtrl';\r\n $scope.selectedItems=[];\r\n \r\n $scope.menu_service = MenuService\r\n $scope.menu_service.clearSideMenu()\r\n $scope.returnToPreviousPage = function() {\r\n $state.go(\"app.navbar.resources.list\",{});\r\n }\r\n \r\n \r\n \r\n //$state.go(\"app.navbar.codes.new\",{id:$scope.resourceId,returnState:{Label:'Return to notification definition',state:$state.current,params:{id:$scope.resourceId}}});\r\n \r\n \r\n \r\n var lang = $rootScope.globals.currentUser.lang;\r\n \r\n CodesService.getCodesByName('usertags',lang).then(function (data) {\r\n $scope.tagList = data.data;\r\n $scope.tagListUsers = angular.copy($scope.tagList);\r\n $scope.tagListGroups = angular.copy($scope.tagList);\r\n $scope.tagList1 = angular.copy($scope.tagList);\r\n $scope.tagList2 = angular.copy($scope.tagList);\r\n \r\n });\r\n \r\n CodesService.getCodesByName('codestatus',lang).then(function (data) {\r\n $scope.resourceStatusList = data.data;\r\n });\r\n \r\n \r\n $scope.setEmailParams = function()\r\n {\r\n var pos = $scope.tagList1.map(function(e) { return e.id; }).indexOf($scope.resource.Parameters.EmailSubjectField.id);\r\n\r\n if (pos>=0){\r\n \r\n $scope.resource.Parameters.EmailSubjectField=$scope.tagList1[pos];\r\n \r\n }\r\n pos = $scope.tagList2.map(function(e) { return e.id; }).indexOf($scope.resource.Parameters.EmailMessageField.id);\r\n\r\n if (pos>=0){\r\n \r\n $scope.resource.Parameters.EmailMessageField=$scope.tagList2[pos];\r\n \r\n } \r\n }\r\n $scope.getResourceAll = function () {\r\n \r\n ResourcesDataService.getResourceDefAll($scope.resourceId).then(function(data) {\r\n \r\n // MessagingService.addMessage(data.msg,'success');\r\n $scope.resource = data.data;\r\n $scope.resourceLoaded = true;\r\n if ($scope.resource.Parameters===null || $scope.resource.Parameters===undefined) $scope.resource.Parameters={};\r\n if ($scope.resource.Parameters.SendEmail) $scope.setEmailParams();\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }; \r\n \r\n $scope.getResourceAll();\r\n \r\n $scope.GotoMessageDef = function()\r\n {\r\n $state.go(\"app.navbar.resources.form\",{id:$scope.resourceId,returnState:{Label:'Return to notification definition',state:$state.current,params:{id:$scope.resourceId}}});\r\n }\r\n \r\n $scope.saveResourceParameters = function () {\r\n \r\n ResourcesDataService.saveResourceDefParameters($scope.resourceId,$scope.resource.Parameters).then(function(data) {\r\n \r\n if (data.status===200 || data.status===201)\r\n {\r\n MessagingService.addMessage(data.msg,'success'); \r\n }\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n \r\n });\r\n \r\n \r\n };\r\n \r\n \r\n /*\r\n \r\n $scope.getNotificationForm= function () {\r\n $scope.menuLoaded=false;\r\n ResourcesDataService.getResourceForm($scope.resourceId,'i',lang).then(function(data) {\r\n if (data.data.widgets.length>0)\r\n {\r\n $scope.dashboard.widgetsRight={layout:data.data.widgets};\r\n }else $scope.dashboard.widgetsRight.layout = GridsterService.getEmptyApplicationMenu();\r\n \r\n //datasetFormState.subject.setState=$scope.dashboard.widgets;\r\n \r\n $scope.resourceDefinition= data.data.resourceDefinition;\r\n \r\n $timeout(function() {\r\n $scope.menuLoaded=true;\r\n });\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n };\r\n \r\n $scope.getNotificationForm();\r\n */\r\n }\r\n\r\n//import kt_rd from '../../../0000_common/0001_components/vue/kt-resource-definition.vue';\r\n\r\nexport function notificationDefinitionComponent (ResourcesDataService,MessagingService,$stateParams) {\r\n \r\n \r\n var resource;\r\n var resourceId=$stateParams.id;\r\n // get notification details here\r\n \r\n ResourcesDataService.getResourceDefAll(resourceId).then(function(data) {\r\n \r\n resource = data.data;\r\n let vueNotificationDef = new Vue({\r\n el: '#notificationDefinitionComponent',\r\n data: {\r\n resource: resource,\r\n },\r\n \r\n methods: {\r\n \r\n saveNotification:function() {\r\n \r\n }\r\n \r\n },\r\n mounted(){\r\n \r\n },\r\n components: {\r\n // 'kt-resource-definition': kt_rd\r\n }\r\n \r\n \r\n });\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n \r\n }\r\n\t\r\n\t\r\nexport function resourceListCtrl ($scope, $rootScope, AuthenticationService,CodesService,ResourcesDataService,UserService,KatalyoStateManager,uiGridConstants,MessagingService,MenuService,$timeout,$state,$stateParams,$q) {\r\n\r\n $scope.CTRL='resourceListCtrl';\r\n\r\n $scope.menu_service = MenuService\r\n $scope.menu_service.clearSideMenu()\r\n\r\n $scope.paginationOptions = {\r\n pageNumber: 1,\r\n pageSize: 10,\r\n sort: null\r\n };\r\n\t\r\n\t$scope.statusList = [ {id:1 ,name: 'Active'}, {id:2, name: 'Disabled'}]\r\n\t\r\n\t$scope.testfn = function(a,b){\r\n\t\tconsole.log(a)\r\n\t\t//debugger\r\n\t\t\r\n\t}\r\n\t\r\n\t$scope.showEnvInfoCount = function() {\r\n\t\tlet cc=0\r\n\t\tif ($rootScope.globals.envinfo) {\r\n\t\t\t\tfor (const [key, value] of Object.entries($rootScope.globals.envinfo \t)) {\r\n\t\t\t\t\t\t console.log(`${key}: ${value}`);\r\n\t\t\t\t\t\t cc=cc+value\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t} else return 0\r\n\t\treturn cc\r\n\t}\r\n\t\r\n $scope.pageState = {\r\n\t\trememberSearch: true, \r\n\t\tresource: {\r\n\t\t\tStatus: [{id:1 ,name: 'Active'}] \r\n\t\t\t}\r\n\t}\r\n\t\r\n $scope.results = {};\r\n $scope.filter = {'resource_type':$stateParams.resource_type,'name':$stateParams.resource_name};\r\n $scope.actionDef= [{id:1,btnLabel:'Edit resource',btnClass:'btn-outline-primary',icon:'fa fa-edit'}] \r\n $scope.smParams = {UuidRef:1}\r\n $scope.resourceTableColumns = [\r\n { name: 'nid', displayName: 'ID', type: 'number', width:'1%',enableHiding: false, visible: true },\r\n { name: 'id', displayName: 'GUID'},\r\n { name: \"ResourceType.ResourceName\", width:'1%',displayName: 'Type', type:'badge' },\r\n { name: \"resourcedeflang_set[0].Name\", displayName: 'Resource name'},\r\n { name: \"resourcedeflang_set[0].Subject\", displayName: 'Resource subject' },\r\n { name: \"resourcedeflang_set[0].Description\", displayName: 'Resource description' },\r\n // { name: \"resourcedeflang_set[0].Lang.name\", displayName: 'Language'},\r\n { name: \"Active\", displayName: 'Active',width:'1%',type:'bool'},\r\n /* { name: \"act\", displayName: ''}, //special actions column*/\r\n ];\r\n \r\n $scope.ksm = KatalyoStateManager;\r\n \r\n let resourceListState= $scope.ksm.addSubject($scope.CTRL,$scope.resource);\r\n let resourceListStateName = resourceListState.subject.name;\r\n \r\n if (resourceListState.subject.getState!=undefined) $scope.pageState =resourceListState.subject.getState;\r\n if ($scope.pageState?.rememberSearch)\r\n {\r\n $scope.resource = $scope.pageState.resource;\r\n $scope.currentPage=$scope.pageState.currentPage;\t\r\n $scope.results.pageSize = $scope.pageState.pageSize;\r\n \r\n }\r\n if ($scope.resource==undefined) $scope.resource={};\r\n \r\n let search_saved = function(data)\r\n {\r\n resourceListState.subject.setStateChanges = data;\r\n resourceListState.subject.notifyObservers(); \r\n \r\n }\r\n \r\n let action_search_saved = $scope.ksm.addAction(resourceListStateName,\"resourceListSearch\",search_saved);\r\n \r\n $scope.resourceSelected = false;\r\n \r\n $scope.updateState = function()\r\n {\r\n // $scope.pageState.rememberSearch=!$scope.pageState.rememberSearch;\r\n $scope.pageState.resource = $scope.resource;\r\n $scope.pageState.currentPage = $scope.currentPage;\r\n $scope.pageState.pageSize = $scope.results.pageSize;\r\n $scope.ksm.executeAction(resourceListStateName,\"resourceListSearch\",$scope.pageState);\r\n \r\n \r\n } \r\n \r\n $scope.rowSelectionChanged = function(item){\r\n //debugger //rowSelectionChanged\r\n \r\n $scope.resourceSelected=item.isSelected;\r\n $scope.selectedResource = item.id;\r\n $scope.selectedResourceType = item.ResourceType.ResourceName;\r\n $scope.resourceIconSelected=item.ResourceType.Parameters.Icon;\r\n $scope.resourceDetailsState=item.ResourceType.Parameters.DefinitionPage;\r\n $scope.resourceDetailsParams={id:$scope.selectedResource}; \r\n };\r\n \r\n $scope.resourceIconSelected = \"globe\";\r\n $scope.selectedResourceType=\"Resource\";\r\n $scope.resourceDetailsLink=\"app.navbar.resources.list\";\r\n $scope.advancedSearch=false;\r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n ResourcesDataService.GetResourceParams().then(function (data) {\r\n $scope.resourceTypeList = data.data;\r\n if ($scope.resourceStatusList!=undefined) $scope.filterResources();\r\n $scope.ResourceSearch(); \r\n });\r\n \r\n \r\n CodesService.getCodesByName('_APPS_',lang).then(function (data) {\r\n $scope.resourceTagsList = data.data;\r\n }); \r\n \r\n\r\n $scope.gotoState = function(){\r\n $state.go($scope.resourceDetailsState,$scope.resourceDetailsParams);\r\n };\r\n \r\n \r\n $scope.resourceLoading=false;\r\n $scope.showTableActions=true;\r\n \r\n $scope.processTableAction = function(item,actionId){\r\n $scope.resourceDetailsState=item.ResourceType.Parameters.DefinitionPage;\r\n $scope.resourceDetailsParams={id:item.uid};\r\n $scope.gotoState();\r\n };\r\n \r\n \r\n \r\n $scope.getResourceDef = function(pageNumber,pageSize){//Called by smart table\r\n \r\n let deferred = $q.defer(); \r\n $scope.resourceLoading=true;\r\n //debugger //getResourceDef\r\n \r\n var filter=$scope.resource;\r\n \r\n if (pageNumber==undefined) pageNumber = $scope.paginationOptions.pageNumber;\r\n \r\n if (pageSize==undefined) pageSize = $scope.paginationOptions.pageSize;\r\n \r\n if ($scope.totalCount>0){\r\n if (Math.ceil($scope.totalCount/pageSize)0 && $scope.currentPage==0) $scope.currentPage=1;\r\n $scope.numPages = Math.ceil($scope.totalCount/pageSize);\r\n $scope.pageSize = pageSize;\r\n $scope.totalItems=$scope.totalCount; \r\n \r\n // MessagingService.addMessage(data.msg,'success');\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n };\r\n\r\n\r\n $scope.pageChanged = function(){\r\n $scope.getResourceData($scope.nextPage,$scope.previousPage,$scope.currentPage,$scope.pageSize);\r\n }\r\n \r\n $scope.gridOptions.onRegisterApi = function (gridApi) {\r\n //set gridApi on scope\r\n $scope.gridApi = gridApi;\r\n gridApi.selection.on.rowSelectionChanged($scope,function(row){\r\n \r\n $scope.resourceRecordSelected=row.isSelected;\r\n \r\n if(row.isSelected){\r\n $scope.selectedRecordId=row.entity.id;\r\n }\r\n \r\n \r\n });\r\n //external pagination\r\n gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {\r\n paginationOptions.pageNumber = newPage;\r\n paginationOptions.pageSize = pageSize;\r\n $scope.getResourceData($scope.nextPage,$scope.previousPage,newPage,pageSize);\r\n });\r\n };\r\n \r\n\r\n \r\n //**********************************************************\r\n\t// GET RESOURCE COLUMNS\r\n\t//********************************************************** \r\n $scope.getResourceColumns = function () {\r\n var lang = $rootScope.globals.currentUser.lang;\r\n ResourcesDataService.getResourceColumns($scope.resourceId,0,\"i\",lang).then(function(data) {\r\n \r\n $scope.gridOptions.columnDefs = data.data;\r\n //debugger //getResourceColumns //smarttable\r\n $scope.getResourceData($scope.nextPage,$scope.previousPage,paginationOptions.pageNumber,paginationOptions.pageSize); \r\n // MessagingService.addMessage(data.msg,'success');\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }\r\n //**********************************************************\r\n\t// GET DATASET RELATED RECORDS\r\n\t//********************************************************** \r\n $scope.getDatasetRelatedRecords = function (relatedDatasetId,recordId) {\r\n \r\n \r\n var lang = $rootScope.globals.currentUser.lang;\r\n \r\n ResourcesDataService.getResourceDataRelated($scope.resourceId,recordId,relatedDatasetId,0,lang).then(function(data) {\r\n \r\n $scope.gridOptionsRelated.data = data.data;\r\n //debugger\r\n $scope.gridOptionsRelated.columnDefs = data.columnsDef;\r\n \r\n // MessagingService.addMessage(data.msg,'success');\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n };\r\n \r\n \r\n //**********************************************************\r\n\t// GET DATASET SINGLE RECORD\r\n\t//********************************************************** \r\n $scope.getDatasetSingleRecord = function (relatedDatasetId,recordId) {\r\n \r\n \r\n var lang = $rootScope.globals.currentUser.lang;\r\n \r\n ResourcesDataService.getResourceDataDirectFilter(relatedDatasetId,0,lang,{id: recordId}).then(function(data) {\r\n \r\n $scope.gridOptionsRelated.data = data.data;\r\n $scope.gridOptionsRelated.columnDefs = data.columnsDef;\r\n //debugger\r\n // MessagingService.addMessage(data.msg,'success');\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n };\r\n \r\n \r\n if ($scope.resourceId != undefined)\r\n {\r\n UserService.getUsersGroups('users').then(function (data){\r\n $scope.getResourceColumns();\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n// OVO JE KOD MENE BILO a nemas ti - VIDJETI MIGOR TODO - vidjeti treba li\r\n $scope.gridOptions.onRegisterApi = function (gridApi) {\r\n //set gridApi on scope\r\n $scope.gridApi = gridApi;\r\n gridApi.selection.on.rowSelectionChanged($scope,function(row){\r\n \r\n $scope.resourceRecordSelected=row.isSelected\r\n \r\n if(row.isSelected){\r\n $scope.selectedRecordId=row.entity.id\r\n }\r\n \r\n \r\n });\r\n\r\n \r\n }\r\n\r\n $scope.gridOptions.data = $scope.data;\r\n\t \r\n\t \r\n\t \r\n\t $scope.openSettings = function(widget) {\r\n\t\t console.log(\"opensettings!\");\r\n\t\t\t\r\n\t\t};\r\n \r\n }\r\n\r\n//**********************************************************\r\n// resourceMAPPINGS ctrl \r\n//**********************************************************\r\nexport function mappingsFormCtrl ($scope, $rootScope, AuthenticationService,ResourcesDataService,ProcessingService,MessagingService,$stateParams,$timeout,GridsterService,$element,dragularService) {\r\n $scope.CTRL='mappingsFormCtrl';\r\n $scope.resourceId=$stateParams.id;\r\n $scope.formLoaded = false;\r\n $scope.gridsterType =\"dataset\";\r\n $scope.dashboard= {widgets:{layout:[]}};\r\n $scope.gsrvc = GridsterService\r\n $scope.gsrvc.resetBodyBgColor()\r\n var lang=$rootScope.globals.currentUser.lang;\r\n $scope.dashboard.widgets = GridsterService.getEmptyDatasetForm();\r\n \r\n // SELECTED RESOURCE CALLBACKS\r\n $scope.onSelectDataset= function (item){\r\n\r\n ResourcesDataService.getResourceFields(item.id,lang).then(function(data) { \r\n $scope.fieldResources = [];\r\n //debugger\r\n \r\n data.data.forEach( dfield => {\r\n $scope.fieldResources.push( { 'id': dfield.id, 'dbtype':dfield.Dbtype, 'FieldName': dfield.FieldName, 'FieldType': dfield.FieldType,'ResourceDefId':dfield.ResourceDefId })\r\n })\r\n\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n }); \r\n }\r\n \r\n //Dodao funkciju getTransformFields jer ova druga sa 3 argumenta ne radi($scope.getTransformFields = function (transformId,field1,field2) )\r\n\t $scope.getTransformFields = function (transformId) {\r\n \r\n var lang = $rootScope.globals.currentUser.lang;\r\n \r\n ResourcesDataService.getTransformFields(transformId).then(function(data) {\r\n \r\n $scope.transformFields = data.data;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }; \r\n \r\n var fileel= document.getElementById('myfile');\r\n //debugger\r\n fileel.addEventListener('change', function(e) {\r\n \r\n //after file is picked we process its content\r\n var files = e.target.files;\r\n if (files.length) {\r\n var r = new FileReader();\r\n r.onload = function(e) {\r\n //debugger\r\n var contents = e.target.result;\r\n $scope.fileContent = contents;\r\n \r\n $timeout(function() { $scope.extractFieldsFromFile(); }); \r\n };\r\n \r\n r.readAsText(files[0]);\r\n }\r\n // apply changes to angular with $timeout\r\n\t\t\t$timeout(function() { });\r\n });\r\n \r\n \r\n \r\n \r\n $scope.showGrid=false;\r\n $scope.gridOptions = {\r\n enableGridMenu: true,\r\n showGridFooter: true,\r\n //showColumnFooter: true,\r\n enableRowSelection: true,\r\n multiSelect: false,\r\n enableHorizontalScrollbar : 0, \r\n enableVerticalScrollbar : 2,\r\n //enableFiltering: true,\r\n enableRowHeaderSelection: true,\r\n enableColumnResizing: true,\r\n // useExternalPagination: true,\r\n paginationPageSizes: [5,10, 25, 50,100,200,500],\r\n enablePaginationControls: true,\r\n }\r\n \r\n $scope.gridOptions.columnDefs = [\r\n { name:'id', width:50 },\r\n { name:'name' },\r\n ];\r\n\r\n /* kOD MENE JE OVDJE VELIKI KOMAD KOJI PUNI GRIDOPTIONS2 - NE ZNAM DA LI to treba evo ga komentiranog*/\r\n // TRANSFROM GRID\r\n $scope.gridOptions2 = {\r\n columnDefs: [\r\n { name: 'id', displayName: 'Transform ID', type: 'number', width:'15%',enableHiding: false, visible: true },\r\n { name: 'transform_name', displayName: 'Transform unique name'},\r\n { name: 'name', displayName: 'Transform display name'},\r\n { name: 'field_type1.name', displayName: 'Field 1 type' },\r\n { name: 'field_type2.name', displayName: 'Field 2 type ' },\r\n ],\r\n enableGridMenu: true,\r\n showGridFooter: true,\r\n showColumnFooter: true,\r\n enableRowSelection: true,\r\n multiSelect: false,\r\n enableHorizontalScrollbar : 2, \r\n enableVerticalScrollbar : 2,\r\n enableFiltering: true,\r\n enableRowHeaderSelection: true,\r\n enableColumnResizing: true,\r\n }\r\n \r\n $scope.gridOptions2.onRegisterApi = function (gridApi) {\r\n $scope.gridApi2 = gridApi;\r\n gridApi.selection.on.rowSelectionChanged($scope,function(row){\r\n \r\n $scope.transformSelected=row.isSelected;\r\n $scope.selectedTransform = row.entity.id;\r\n \r\n if ($scope.transformFields!=undefined) $scope.transformFields.length=0;\r\n \r\n if ($scope.transformSelected)\r\n {\r\n $scope.getTransformFields(row.entity.id);\r\n }\r\n });\r\n }\r\n\r\n //kad se selektira mapping na gridu \r\n $scope.gridOptions.onRegisterApi = function (gridApi) {\r\n $scope.gridApi = gridApi;\r\n \r\n gridApi.selection.on.rowSelectionChanged(\r\n\t\t \r\n\t\t $scope,function(row){\r\n $scope.isSelected=row.isSelected;\r\n $scope.selectedId = row.entity.id;\r\n $scope.mappingName = row.entity.name;\r\n $scope.items.length=0; //vidjeti da li treba\r\n $scope.items=JSON.parse(row.entity.fileFields.replace(/'/g,\"\\\"\"));\r\n $scope.items2.length=0;//vidjeti da li treba\r\n $scope.items2=JSON.parse(row.entity.resourceMapping.replace(/'/g,\"\\\"\"));\r\n \r\n \r\n // dragular items2\r\n var dragularContainerClasses=[];\r\n var dragularContainerModels = [];\r\n for(var i=0;i<$scope.items2.length;i++) {\r\n dragularContainerModels.push($scope.items2[i].cells);\r\n dragularContainerClasses.push('exampleRows'+i); \r\n }\r\n $scope.setupDragular4(dragularContainerModels,dragularContainerClasses, false);\r\n \r\n //dragular items\r\n var dragularContainerClasses=[];\r\n var dragularContainerModels = []; \r\n for(var i=0;i<$scope.items.length;i++) {\r\n dragularContainerModels.push($scope.items[i].cells);\r\n dragularContainerClasses.push('exampleRow'+i); \r\n }\r\n $scope.setupDragular4(dragularContainerModels,dragularContainerClasses, false);\r\n \r\n \r\n });//on.rowSelectionChanged\r\n }\r\n \r\n \r\n \r\n $scope.recursiveTraverse = function (obj, patchData) { // recursively patching dashboard object\r\n \r\n var o = {};\r\n \r\n if (obj && obj.hasOwnProperty('FieldType')) \r\n patchData.push({cells:[],name:obj.Name,itemID:obj.ItemId,presentationId:obj.PresentationId,placeholder:obj.Placeholder});\r\n \r\n if (obj) Object.keys(obj).forEach(\r\n function(key) {\r\n \r\n if ( (typeof(obj[key]) === 'object') && obj[key] ) { //container level\r\n //if ( (key === 'codesDefinitionList') || (key ==='publishedResourceList') || (key==='resourceList') || (key==='datasetListParent') || (key=='localVars') || (key=='tagList') ) {\r\n \r\n $scope.recursiveTraverse(obj[key], patchData)\r\n } \r\n else { // leaf level\r\n if (key == 'nesto' ) {\r\n // o['id']= obj[key];\r\n } \r\n \r\n }\r\n }) ; \r\n \r\n //if (Object.keys(o).length > 0) ..do somoething with o \r\n };\r\n \r\n \r\n $scope.fillItems2 = function (sourceDashboard) {\r\n // Prepare Resource fields for drag&drop \r\n \r\n var res=[]\r\n \r\n $scope.recursiveTraverse(sourceDashboard, res)\r\n \r\n $scope.items2 = res\r\n \r\n /* var tmp=[];\r\n for (var w = 0 ;w < $scope.dashboard.widgets.length; w++) \r\n for (var l = 0; l< $scope.dashboard.widgets[w].layout.length; l++) \r\n for (var ll = 0; ll< $scope.dashboard.widgets[w].layout[l].layout.length; ll++) {\r\n //console.log($scope.dashboard2.widgets[w].layout[l].layout[ll]);\r\n tmp.push($scope.dashboard.widgets[w].layout[l].layout[ll]);\r\n }\r\n \r\n for(var i=0;i0)\r\n {\r\n $scope.dashboard.widgets=data.data.widgets;\r\n } \r\n $scope.resourceDefinition= data.data.resourceDefinition;\r\n $scope.fillItems2($scope.dashboard.widgets); \r\n \r\n //**********************************************************\r\n // Drag And Drop dragular\r\n //**********************************************************\r\n $timeout(function(){\r\n var container = $element.children().eq(0).children().eq(2).children(), widgets = $scope.dashboard.widgets;\r\n // scope.widgetHandle = scope.setHandle('outer'); \r\n dragularService(container,\r\n {\r\n nameSpace: 'row-layout',\r\n //copy: true,\r\n classes: {\r\n //mirror: 'show-border'\r\n },\r\n revertOnSpill: true,\r\n containersModel: widgets,\r\n //direction:'vertical',\r\n moves: function (el, container, handle) {\r\n return handle.classList.contains(\"row-\"+$scope.gridsterType+\"-handle\");\r\n }\r\n \r\n }\r\n );\r\n }\r\n );\r\n \r\n \r\n $timeout(function() {$scope.formLoaded=true;},1000);\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n };\r\n \r\n if ($scope.resourceId != undefined)\r\n {\r\n $scope.getResourceForm();\r\n //MIGOR - kod dolje ne popunjava sva polja već samo resourceID,treba ga valjda negdje drugdje ubaciti \r\n }\r\n \r\n\r\n $scope.saveMappings = function (mapId) {\r\n if (mapId==undefined) MessagingService.addMessage('Mapping not selected!','error'); \r\n else\r\n if (mapId=='New') { \r\n ResourcesDataService.putMappings($scope.mappingName,$scope.resourceId,$scope.items2,$scope.items).then(function(data) {\r\n MessagingService.addMessage(data.msg,'success');\r\n $scope.showDetails=false;\r\n $scope.refreshMappingsList();\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n })\r\n }//if \r\n else ResourcesDataService.putMappingsWithId($scope.mappingName,$scope.resourceId, mapId, $scope.items2,$scope.items).then(function(data) {\r\n MessagingService.addMessage(data.msg,'success');\r\n $scope.showDetails=false;\r\n $scope.refreshMappingsList();\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n })\r\n \r\n // $scope.refreshMappingsList();\r\n \r\n } //saveMappings_END\r\n \r\n \r\n $scope.refreshMappingsList = function() {\r\n //refresh MAPINGLIST \r\n ResourcesDataService.getMappingsList($scope.resourceId).then(function(data) {\r\n $scope.gridOptions.data = data.data;\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n }); \r\n }\r\n \r\n $scope.extractFieldsFromFile = function () {\r\n \r\n console.log($scope.fileContent); \r\n $scope.items[0].cells.length=0;\r\n\r\n var lines = $scope.fileContent.split('\\n');\r\n $scope.fileFields = lines[0].split(/[;,]+/) //Currently splitting on ; and ,\r\n \r\n for(var i=0;i< $scope.fileFields.length;i++) {\r\n var tmp=$scope.fileFields[i];\r\n if (tmp.charCodeAt(tmp.length-1)==10) tmp=tmp.substring(0,tmp.length-1) //makni CR ili LF\r\n if (tmp.charCodeAt(tmp.length-1)==13) tmp=tmp.substring(0,tmp.length-1) //makni CR ili LF\r\n if ((tmp[tmp.length-1]=='\"') && (tmp[0]=='\"')) tmp=tmp.substring(1,tmp.length-1);//makni navodnike ako ih ima\r\n $scope.items[0].cells.push({name: tmp}); \r\n }\r\n \r\n \r\n console.log($scope.fileFields);\r\n \r\n } \r\n \r\n \r\n $scope.mapping = function (mappedResource) {\r\n \r\n //$scope.activity.activityMessage = ProcessingService.setActivityMsg('Syncing database for '+$scope.resourceId);\r\n console.log(mappedResource);\r\n \r\n //ovo dolje je obsolete jer će se puniti na početku prikaza forme\r\n //debugger\r\n ResourcesDataService.getResourceForm(mappedResource,'i',lang).then(function(data) {\r\n $scope.dashboard2=[];\r\n //debugger\r\n if (data.data.widgets.length>0){\r\n $scope.dashboard2.widgets=data.data.widgets;\r\n var tmp=[];\r\n for (var w = 0 ;w < $scope.dashboard2.widgets.length; w++) \r\n for (var l = 0; l< $scope.dashboard2.widgets[w].layout.length; l++) \r\n for (var ll = 0; ll< $scope.dashboard2.widgets[w].layout[l].layout.length; ll++) {\r\n //console.log($scope.dashboard2.widgets[w].layout[l].layout[ll]);\r\n tmp.push($scope.dashboard2.widgets[w].layout[l].layout[ll]);\r\n }\r\n \r\n //kreirati items2 iz tmp \r\n for(var i=0;i0)\r\n if (data.data.widgets.length>0)\r\n {\r\n // $scope.dashboard.widgets={layout:data.data.widgets.top_rows};\r\n vm.dashboard.widgets={layout:data.data.widgets};\r\n \r\n }else vm.dashboard.widgets={layout : GridsterService.getEmptyDatasetForm()};\r\n \r\n \r\n //datasetFormState.subject.setState=$scope.dashboard.widgets;\r\n \r\n //set state here\r\n \r\n vm.resourceDefinition= data.data.resourceDefinition;\r\n \r\n vm.resourceDefinition.formParams = {formViewType:1,formLocked:true};\r\n \r\n //GridsterModule.setFormViewType($scope.resourceDefinition.formParams.formViewType);\r\n vm.formLoaded=true;\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n },\r\n \r\n undo:function() {\r\n let vm = this;\r\n \r\n },\r\n \r\n redo:function() {\r\n let vm = this;\r\n \r\n },\r\n showDatasetDeploy:function() {\r\n let vm = this;\r\n \r\n },\r\n deployToDb:function() {\r\n let vm = this;\r\n \r\n },\r\n ShowFormView:function() {\r\n let vm = this;\r\n \r\n },\r\n saveResourceForm:function() {\r\n let vm = this;\r\n \r\n }\r\n \r\n },\r\n computed: {\r\n \r\n getTopForSticky:function(){\r\n \r\n return GridsterService.getTopForSticky(0);\r\n \r\n \r\n }\r\n },\r\n components: {\r\n // 'kt-resource-definition': kt_rd,\r\n },\r\n created: function(){\r\n \r\n \r\n var vm = this;\r\n if (this.resourceId != undefined)\r\n {\r\n \r\n ResourcesDataService.getResourceDefAll(this.resourceId).then(function(data) {\r\n \r\n vm.resource = data.data;\r\n vm.resourceLoaded = true;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n this.getResourceForm();\r\n \r\n }\r\n \r\n //import {AuthenticationClass,Login} from './authModule';\r\n \r\n }\r\n \r\n });\r\n \r\n}\r\n\r\n\r\n\t //**********************************************************\r\n \r\n // searching dashboard for \"relatedrmd\" parents (files, resources)\r\n \r\n\t//**********************************************************\r\n\r\n export function getParents (obj, outputList) //find recursively\r\n {\r\n let o = {};\r\n var parentWidget = {};\r\n Object.keys(obj).forEach(function(key) {\r\n if ( (typeof(obj[key]) === 'object') && obj[key] && key != 'NameField' && key != 'Parameters' && key != ' GridState') { //Do NOT parse into 'NameField' and \"Parameters' \r\n getParents(obj[key], outputList)\r\n } else { \r\n if ( ['RelatedRmd', 'DirectiveName', 'Label', 'FieldName' , 'ResourceModelDefinitionId' ,'ElementType','ItemId', 'ResourceDefId' , 'PresentationId'].includes(key) ) { \r\n o[key]= obj[key];\r\n parentWidget=obj\r\n } \r\n }\r\n }) ; \r\n \r\n if (Object.keys(o).length > 0 \r\n && o['ElementType']=='resource') {\r\n o['widget']=parentWidget\r\n outputList.push(parentWidget) \r\n }\r\n }; \r\n \r\n\t //**********************************************************\r\n\t// getFieldNamesFromObject\r\n //\r\n // find FieldNames in given Dashboard object recursively \r\n // fieldsList is return variable \r\n\t//**********************************************************\r\n\r\n export function getFieldNamesFromObject (obj, fieldsList) // find FieldNames in given Dashboard object recursively \r\n {\r\n let o = {};\r\n var parentWidget = {};\r\n Object.keys(obj).forEach(function(key) {\r\n if ( (typeof(obj[key]) === 'object') && obj[key] \r\n && key != 'NameField') //Do NOT parse into 'NameField' (we need it as it is)\r\n { \r\n getFieldNamesFromObject(obj[key], fieldsList)\r\n } \r\n else { \r\n if ( ['DirectiveName', 'Label', 'FieldName' , 'ResourceModelDefinitionId' ,'ElementType','ItemId', 'ResourceDefId' , 'PresentationId'].includes(key) ) { \r\n o[key]= obj[key];\r\n parentWidget=obj\r\n }\r\n if ( key == 'NameField' ) {\r\n //debugger\r\n if (Array.isArray(obj[key]) ) o[key]= obj[key][0];\r\n else o[key]= obj[key];\r\n } \r\n \r\n }\r\n }) ; \r\n \r\n if (Object.keys(o).length > 0 && !(['ktGridRow','ktGridColumn'].includes(o['DirectiveName'] ) )) \r\n {\r\n o['widget']=parentWidget\r\n fieldsList.push(o) \r\n }\r\n }; \r\n\r\n\r\n\t //**********************************************************\r\n\t// resourceFormCtrl - angularJs version\r\n\t//**********************************************************\r\n\r\nexport function resourceFormCtrl ($scope, $rootScope, AuthenticationService,KatalyoStateManager,ResourcesDataService,CodesService,ProcessingService,MessagingService,WidgetRegisterService,$stateParams,$timeout,GridsterService,MenuService,$element,dragulaService,$state)\r\n{ \r\n \r\n $scope.gsrvc = GridsterService; \r\n $scope.ksm = KatalyoStateManager;\r\n $scope.localVars = { gsrvc:$scope.gsrvc, PropertiesSize:'standard'};\r\n $scope.formVars = { };\r\n $scope.resource = {}\r\n $scope.parentResources=[]\r\n $scope.CTRL='resourceFormCtrl';\r\n $scope.formLoaded = false;\r\n $scope.gridsterType =\"dataset\";\r\n var lang=$rootScope.globals.currentUser.lang;\r\n $scope.resourceId=$stateParams.id;\r\n $scope.SavedButNotDeployed = false\r\n $scope.isCollapsedVerHistory = true\r\n $scope.localVars.publishedResources = []\r\n $scope.returnState=$stateParams.returnState\r\n $scope.datasetDeploy=[]\r\n $scope.datasetDeployCols=[\r\n\t\t{label:'ID',name:'id',len:1,type:'id'},\r\n\t\t{label:'Field name',name:'label',len:3},\r\n\t\t{label:'Field type',name:'dbtype',len:2},\r\n\t\t{label:'Table column',name:'field',len:4},\r\n\t\t{label:'Max len',name:'maxLength',len:1},\r\n\t\t{label:'Required',name:'required',type:'bool',len:2},\r\n\t\t{label:'Deployed',name:'deployed',type:'bool',len:2},\r\n\t\t{label:'Status',name:'status',len:2},\r\n\t\t{label:'Action',name:'deployAction',len:1,type:'mapping'},\r\n\t\t{label:'Version',name:'version',len:2},\r\n\t\t{label:'Deployed version',name:'deployedVersion',len:2}\r\n ]\r\n\r\n $scope.deployActionMappings={'A':'Add','C':'Change','D':'Delete','N':'No change'}\r\n\r\n $scope.gsrvc.resetBodyBgColor()\r\n $scope.menu_service = MenuService\r\n $scope.menu_service.clearSideMenu()\r\n\r\n if ($scope.returnState===undefined || $scope.returnState==='')\r\n {\r\n\r\n $scope.returnState={state:{name:'app.navbar.resources.list'},Label:'Return to resource list',params:{}} \r\n }\r\n $scope.resourceDef = {ResourceDefId_id: $scope.resourceId,form_definition : true}\r\n \r\n let massUpdateState= $scope.ksm.addSubject('massUpdateState',null);\r\n let massUpdateStateName = massUpdateState.subject.name;\r\n $scope.ksm.executeAction(massUpdateStateName,\"massUpdateChanged\", {Active:false,Item:null}); \r\n \r\n $scope.get_published_resource_forms=function(){ \r\n ResourcesDataService.GetPublishedResources($scope.resourceId).then(function (data) { \r\n $scope.localVars.publishedResources = data.data;\r\n });\r\n }\r\n $scope.get_published_resource_forms();\r\n $timeout(function() { $scope.definitionType = 'form'; });\r\n \r\n /*\r\n $scope.$watch('dashboard.widgets.layout',function(newValue,oldValue){ \r\n console.log(\"promjena!\")\r\n console.log(newValue)\r\n },true)\r\n \r\n */\r\n\r\n $scope.localVars.ChangePropertiesSize = function()\r\n {\r\n let propElement = document.getElementsByClassName(\"propertiesContainer\");\r\n \r\n $scope.propertiesTop = \"\";\r\n \r\n if ($scope.localVars.PropertiesSize=='standard')\r\n {\r\n $scope.localVars.PropertiesSize = 'large';\r\n $scope.propertiesTop = $scope.gsrvc.calcTopForExtendedProperties(propElement[0]); \r\n \r\n }\r\n else $scope.localVars.PropertiesSize='standard';\r\n }\r\n \r\n \r\n \r\n $scope.PreparePublish2Prod = function()\r\n {\r\n ResourcesDataService.preparePublish2Prod($scope.resourceId,$scope.resource.ResourceCode,$scope.resource.Version).then(\r\n\t\t\tfunction(data) { \r\n\t\t\t\t$scope.publishedResource = data.data;\r\n\t\t\t\t/*\r\n\t\t\t\tif ($scope.publishedResource?.rmd) { \r\n\t\t\t\t\t$scope.publishedResource.rmd.forEach( item => {\t\r\n\t\t\t\t\t})\r\n\t\t\t\t}*/ \r\n\t\t\t},function(error){\t\t\t \r\n\t\t\t\tMessagingService.addMessage(error.msg,'error'); \r\n\t\t\t});\r\n }\r\n\r\n $scope.Publish2Prod = function()\r\n {\r\n $scope.publishingDataset=true\r\n let resources = [{uid:$scope.resourceId,itemSubType:$scope.resource.ResourceCode,version:$scope.resource.Version }]\r\n ResourcesDataService.publish2Prod(resources).then(function(data) {\r\n \r\n MessagingService.addMessage(data.data.msg,'success'); \r\n $scope.publishedResource.Published = data.data.Published\r\n $scope.publishedResource.Deployed = data.data.Deployed\r\n $scope.publishedResource.Version = data.data.Version\r\n $scope.resource.Version=$scope.publishedResource.Version\r\n $scope.publishedResource.PublishedVersion = data?.data?.PublishedVersion\r\n $scope.publishedResource.DateTime = data.data.DateTime\r\n $scope.publishedResource.PublishedBy = data.data.PublishedBy\r\n $scope.publishedResource.ChangedDateTime = data.data.ChangedDateTime\r\n $scope.publishedResource.ChangedBy = data.data.ChangedBy\r\n $scope.publishedResource.count = 0 \r\n $scope.publishedResource.rmd = data.data.rmd\r\n $scope.publishingDataset=false\r\n \r\n },function(error){\r\n $scope.publishingDataset=false \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }\r\n \r\n\r\n let datasetform_changed = function(data)\r\n {\r\n datasetFormState.subject.setStateChanges = data;\r\n \r\n currentIndex = datasetFormState.subject.getCurrentStateIndex;\r\n \r\n if (currentIndex<0) undo=false;\r\n else undo = true;\r\n \r\n if (currentIndex==datasetFormState.subject.stateChanges.length-1) redo=false;\r\n else redo=true;\r\n \r\n $scope.currentStateIndex ={'undo':undo ,'redo':redo}; \r\n \r\n datasetFormState.subject.notifyObservers();\r\n \r\n };\r\n \r\n let datasetform_undo = function(data)\r\n {\r\n undoIndex = datasetFormState.subject.getCurrentStateIndex;\r\n \r\n undoIndex--;\r\n if (undoIndex<0) undo=false;\r\n else undo = true;\r\n \r\n if (undoIndex==datasetFormState.subject.stateChanges.length-1) redo=false;\r\n else redo=true;\r\n $scope.currentStateIndex ={'undo':undo ,'redo':redo};\r\n \r\n datasetFormState.subject.notifyObservers(\"undoDatasetFormChange\");\r\n \r\n };\r\n \r\n let datasetform_undo_done = function(data)\r\n {\r\n \r\n currentIndex = datasetFormState.subject.getCurrentStateIndex;\r\n currentIndex--;\r\n datasetFormState.subject.setCurrentStateIndex = currentIndex;\r\n \r\n };\r\n \r\n var datasetform_redo = function(data)\r\n {\r\n\r\n currentIndex = datasetFormState.subject.getCurrentStateIndex;\r\n currentIndex++;\r\n datasetFormState.subject.setCurrentStateIndex = currentIndex;\r\n \r\n if (currentIndex<0) undo=false;\r\n else undo = true;\r\n \r\n if (currentIndex==datasetFormState.subject.stateChanges.length-1) redo=false;\r\n else redo=true;\r\n \r\n $scope.currentStateIndex ={'undo':undo ,'redo':redo};\r\n datasetFormState.subject.notifyObservers(\"redoDatasetFormChange\");\r\n };\r\n \r\n\r\n \r\n $scope.undoRedoChanges = function(actionType)\r\n {\r\n \r\n $scope.ksm.executeAction(datasetFormStateName,actionType+\"DatasetFormChange\");\r\n $scope.showHideProperties(false);\r\n \r\n };\r\n \r\n \r\n $scope.showHideProperties = function(value)\r\n {\r\n \r\n \r\n $scope.gsrvc.setFieldPropertiesOpened(value);\r\n $scope.showFieldProperties=$scope.gsrvc.getFieldPropertiesOpened();\r\n // if (value) $scope.gsrvc.setPropertiesPosition();\r\n };\r\n\r\n\r\n \r\n $scope.ShowFormView = function(viewId,locked)\r\n {\r\n \r\n $scope.resource.formParams.formViewType=viewId;\r\n $scope.resource.formParams.formLocked = locked;\r\n $scope.gsrvc.setFormViewType($scope.resource.formParams.formViewType);\r\n \r\n };\r\n \r\n CodesService.getCodesByName('resourcetype',lang).then(function (data) {\r\n //debugger;\r\n $scope.resourceTypeList = data.data;\r\n });\r\n \r\n CodesService.getCodesByName('codestatus',lang).then(function (data) {\r\n $scope.resourceStatusList = data.data;\r\n $scope.statusesDownloaded= true;\r\n });\r\n \r\n \r\n \r\n $scope.getResourceDefinition = function () {\r\n \r\n ResourcesDataService.getResourceDefAll($scope.resourceId).then(function(data) {\r\n \r\n // MessagingService.addMessage(data.msg,'success');\r\n $scope.resource = data.data;\r\n \r\n $scope.resourceDefDownloaded=true\r\n\r\n //get resource published info (from PROD instance)\r\n $scope.PreparePublish2Prod()\r\n\r\n ResourcesDataService.GetWidgetToolbox($scope.resource.ResourceCode).then(function (data) {\r\n $scope.gsrvc.setWidgetToolboxItems(data.data,$scope.gridsterType);\r\n $scope.getResourceForm();\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n }); \r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }; \r\n \r\n \r\n //$scope.getResourceDefinition();\r\n \r\n $scope.$on('CtrlPBPressed',function(event,data){\r\n \r\n let key=data;\r\n if (key=='b' || key=='B')\r\n {\r\n if ($scope.resource.formParams.formViewType!=1) $scope.ShowFormView(1);\r\n \r\n }\r\n if (key=='p' || key=='P')\r\n {\r\n if ($scope.resource.formParams.formViewType!=2) $scope.ShowFormView(2);\r\n }\r\n \r\n }); \r\n \r\n $scope.getInnerHtml = function()\r\n \r\n {\r\n //$scope.innerHtml = document.querySelector('div[kt-grid]').innerHTML;\r\n $scope.resource.FormDef = document.querySelector('div[kt-grid]').innerHTML;\r\n //console.log(document.querySelector('div[kt-grid]').innerHTML);\r\n //$scope.innerHtml = elem;\r\n \r\n }\r\n \r\n $scope.setImmutable = function () {\r\n \r\n if (!$scope.saveSuccess) $scope.resource.IsBlockchain = !$scope.resource.IsBlockchain;\r\n };\r\n \r\n $scope.DatasetData = function () {\r\n \r\n let params={id:$scope.resourceId};\r\n $state.go(\"app.navbar.resources.data\",params)\r\n };\r\n\r\n $scope.existingRelationships = []\r\n $scope.existingRelationshipsCopy=[]\r\n\t\t \r\n\t\t \r\n\t\t \r\n /*********************************************************************************************/\r\n /************************ GET CHILD/PARENT RELATIONSHIPS *************************/\r\n \r\n $scope.getExistingResources = function(getParent=false) {\r\n \r\n $scope.existingRelationships.length=0\r\n $scope.RelatedLoaded=false\r\n //debugger \r\n ResourcesDataService.getExistingResourceRelationships($scope.resourceId, getParent).then(function(data) {\r\n \r\n $scope.existingRelationships = data.data;\r\n $scope.existingRelationshipsCopy = angular.copy($scope.existingRelationships)\r\n $scope.RelatedLoaded=true;\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n })\r\n \r\n }; \r\n \r\n $scope.getExistingResources()\r\n\r\n $scope.checkDroppedChildren = function(child)\r\n {\r\n \r\n let item = $scope.existingRelationships.find(element => element.id == child.id)\r\n\r\n if (item == undefined) return true\r\n else return false\r\n };\r\n \r\n \r\n \r\n $scope.saveResourceDef = function (isValid)\r\n {\r\n if (isValid) {\r\n ResourcesDataService.SaveResourceDef2 ($scope.resource).then(\r\n function(data) { \r\n if (data.status===200 || data.status===201 ) MessagingService.addMessage(\"Resource saved successfuly\",'success'); \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n \r\n } else { \r\n MessagingService.addMessage(\"Please enter required data\",'warning'); \r\n }\r\n }; \r\n \r\n \r\n $scope.SetDefinitionType = function(value) //TODO\r\n {\r\n $scope.definitionType=value;\r\n if (value=='datasource') $scope.EditDataset();\r\n }\r\n \r\n \r\n $scope.clearResourceParameters = function() {\r\n \r\n if ($scope.resource.Parameters ==undefined || $scope.resource.Parameters==null)\r\n {\r\n $scope.resource.Parameters = {extDataSourceParams:{formFieldsList:[]} }; \r\n } else\r\n {\r\n if ($scope.resource.Parameters.extDataSourceParams == undefined || value == false) { \r\n $scope.resource.Parameters.extDataSourceParams={ formFieldsList:[] }; \r\n } else $scope.resource.Parameters.extDataSourceParams.formFieldsList.length=0; \r\n } \r\n }\r\n \r\n \r\n \r\n $scope.EditDataset = function(value) //TODO\r\n {\r\n var localFieldsList=[] \r\n if ( $scope.resource.Parameters?.extDataSourceParams?.formFieldsList) \r\n getFieldNamesFromObject($scope.dashboard, $scope.resource.Parameters.extDataSourceParams.formFieldsList); \r\n };\r\n \r\n \r\n \r\n $scope.$watch('gsrvc.getFieldPropertiesOpened()',function(newValue,oldValue){\r\n \r\n if (newValue!=oldValue)\r\n {\r\n $scope.selectedField=$scope.gsrvc.getFieldProperties();\r\n \r\n $scope.showFieldProperties = $scope.gsrvc.getFieldPropertiesOpened();\r\n }\r\n if ($scope.refreshProperties && $scope.showFieldProperties)\r\n {\r\n $scope.selectedField=$scope.gsrvc.getFieldProperties();\r\n $scope.refreshProperties=false;\r\n }\r\n });\r\n \r\n $scope.$watch('gsrvc.getFieldProperties()',function(newValue,oldValue){\r\n \r\n if (newValue!=oldValue)\r\n {\r\n $scope.selectedField=$scope.gsrvc.getFieldProperties();\r\n $scope.localVars.PropertiesSize ='standard';\r\n $scope.showFieldProperties = $scope.gsrvc.getFieldPropertiesOpened();\r\n }\r\n if ($scope.refreshProperties && $scope.showFieldProperties)\r\n {\r\n $scope.selectedField=$scope.gsrvc.getFieldProperties();\r\n $scope.refreshProperties=false;\r\n }\r\n });\r\n \r\n \r\n \r\n $scope.getResourceForm = function () //in resourceFormCtrl\r\n {\r\n $scope.formLoaded=false;\r\n \r\n ResourcesDataService.getResourceForm($scope.resourceId,'i',lang).then(\r\n function(data) {\r\n \r\n \r\n $scope.resource= data.data.resourceDefinition\r\n if (data?.data?.widgets && data.data.widgets.length>0) {\r\n $scope.dashboard.widgets={layout:data.data.widgets};\r\n } else \r\n $scope.dashboard.widgets={layout : $scope.resource.ResourceExtended.DefaultForm};\r\n \r\n \r\n //get resource published info (from PROD instance)\r\n $scope.PreparePublish2Prod()\r\n //check if has something for deployment\r\n $scope.showPublish(false)\r\n\r\n ResourcesDataService.GetWidgetToolbox($scope.resource.ResourceCode).then(function (data) {\r\n $scope.gsrvc.setWidgetToolboxItems(data.data,$scope.gridsterType);\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n }); \r\n\r\n getParents( $scope.dashboard.widgets , $scope.parentResources)\r\n \r\n datasetFormState.subject.setState=$scope.dashboard.widgets;\r\n $scope.resource.formParams = {formViewType:1,formLocked:true}; \r\n $scope.adminHeaderLabel=\"Select \"+$scope.resource.ResourceCode+\" administrators\"; \r\n $scope.gsrvc.setFormViewType($scope.resource.formParams.formViewType);\r\n\r\n $timeout( function() {\r\n $scope.formLoaded=true;\r\n //if (!$scope.resource.Published && $scope.resource.Version==$scope.resource.NewVersion) $scope.showPublish(false)\r\n });\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n };\r\n \r\n $scope.getResourceForm();\r\n\r\n $scope.getDeployAction = function(action)\r\n \r\n {\r\n var deployActionMappings={'A':'Add','C':'Change','D':'Delete','N':'No change'};\r\n return deployActionMappings[action];\r\n };\r\n\r\n $scope.newVersion = function()\r\n \r\n {\r\n $scope.creatingNewVersion=true\r\n\r\n ResourcesDataService.SetNewResourceVersion($scope.resourceId)\r\n .then(function(data) {\r\n if (data.status==200)\r\n {\r\n $scope.resource.NewVersion = data.data\r\n $scope.resource.Published=false\r\n }else MessagingService.addMessage(data.data,'error');\r\n $scope.creatingNewVersion=false\r\n $scope.hasChanges=false\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.creatingNewVersion=false\r\n \r\n });\r\n\r\n };\r\n\r\n\r\n //**********************************************************\r\n\t// SAVE RESOURCE FORM DEFINITION\r\n\t//********************************************************** \r\n $scope.saveResourceForm = function (val) {\r\n $scope.savingForm = true; //disable save button\r\n $scope.formLoaded=false; \r\n $scope.showHideProperties(false);\r\n // First save the form\r\n\r\n ResourcesDataService.saveResourceForm($scope.dashboard.widgets.layout,$scope.resourceId,'i',$scope.localVars.newDescription)\r\n .then(function(data) {\r\n if (data.data.formData.length>0) {\r\n $scope.dashboard.widgets={layout:data.data.formData};\r\n $scope.resource.FormVersion = data.data.form_version;\r\n $scope.resource.Version = data.data.version;\r\n $scope.hasChanges=data.data.has_changes\r\n }\r\n $scope.definitionType = val;\r\n var lang=$rootScope.globals.currentUser.lang;\r\n MessagingService.addMessage(data.msg,data.msgType);\r\n $scope.savingForm = false;\r\n \r\n $scope.formLoaded=true;\r\n $scope.showPublish()\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.savingForm = false;\r\n $scope.formLoaded=true;\r\n });\r\n\r\n };\r\n\r\n $scope.showModal = function (p_type) {\r\n //POST publish-resource , resource_id, version i description\r\n //$scope.saveModal=true;\r\n $('#datasetPublish').modal('show'); \r\n $scope.modalAction=p_type\r\n $scope.newPublishVersion = $scope.resource.Version\r\n }\r\n \r\n \r\n \r\n $scope.showPublish = function (val) {\r\n //POST publish-resource , resource_id, version i description\r\n $scope.modalAction='publish'\r\n $scope.datasetDeploy.length=0\r\n if (val==undefined) val = true\r\n ResourcesDataService.getResourceModelForDeployment($scope.resourceId,$scope.resource.Version,lang)\r\n .then(function(data) {\r\n $scope.datasetDeploy = data.data;\r\n\t\t\t\t\t\t\t\t\t\t\t\t$scope.datasetDeploy.forEach( (e) => e.dbtype = e.dbtype.replace('definition',''))\t\r\n\r\n //debugger //getResourceModelForDeployment\r\n if ($scope.datasetDeploy.length==0 && $scope.hasChanges) \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t$scope.resource.Published = true\r\n else if ($scope.datasetDeploy.length>0) \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t$scope.resource.Published = false\r\n $scope.newPublishVersion = $scope.resource.NewVersion\r\n if (val || $scope.datasetDeploy.length) $('#datasetPublish').modal('show'); \r\n\r\n \r\n },function(error){\r\n if (error.status=904) MessagingService.addMessage('Nothing to deploy','info'); \r\n else MessagingService.addMessage(error.msg,'error'); \r\n });\r\n \r\n }\r\n\r\n \r\n //**********************************************************\r\n // Publish resource\r\n //********************************************************** \r\n $scope.save_resource = function (formValid) {\r\n \r\n let publish_type='form'\r\n if (formValid) {\r\n if ($scope.modalAction=='save')\r\n {\r\n $scope.saveResourceForm(publish_type)\r\n }else{\r\n $scope.publishingForm = true;\r\n //debugger\r\n ResourcesDataService.PublishResource($scope.resourceId,$scope.resource.Version,$scope.localVars.newDescription,publish_type)\r\n .then(function(data) {\r\n MessagingService.addMessage(data.msg,'success');\r\n //$('#datasetPublish').modal('hide'); \r\n $scope.publishingForm = false;\r\n $scope.resource.Published = true\r\n $scope.get_published_resource_forms()\r\n $scope.PreparePublish2Prod()\r\n $scope.datasetDeploy = []\r\n $('#datasetPublish').modal('hide'); \r\n //TODO - SKINUTI PONOVNO PUBLISHED RESOURCES\r\n } ,function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.publishingForm = false;\r\n \r\n });\r\n }\r\n $scope.activity.activityMessage = ProcessingService.setActivityMsg(\"\");\r\n }\r\n };\r\n \r\n //**********************************************************\r\n\t// SAVE RESOURCE FORM DEFINITION\r\n\t//********************************************************** \r\n /*\r\n $scope.saveResourceForm = function (isValid) {\r\n \r\n $scope.activity.activityMessage = ProcessingService.setActivityMsg('Saving resource form for '+$scope.resourceId);\r\n $scope.savingForm = true; //disable save button\r\n \r\n ResourcesDataService.saveResourceForm($scope.dashboard.widgets.layout,$scope.resourceId,'i')\r\n .then(function(data) {\r\n //debugger //ResourcesDataService.saveResourceForm(\r\n if (data.data.formData.length>0) \r\n {\r\n $scope.dashboard.widgets={layout:data.data.formData};\r\n $scope.resource.Version = data.version;\r\n $scope.resource.FormVersion = data.form_version;\r\n $scope.resource.Published = true;\r\n }\r\n MessagingService.addMessage(data.msg,'success');\r\n $scope.savingForm = false;\r\n $scope.showHideProperties(false);\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.savingForm = false;\r\n });\r\n $scope.activity.activityMessage = ProcessingService.setActivityMsg(\"\");\r\n };\r\n */\r\n \r\n $scope.closeDatasetDeploy = function (isvalid) {\r\n $scope.SavedButNotDeployed = true\r\n $('#datasetDeploy').modal('hide'); \r\n //$scope.saveResourceForm(isvalid);\r\n \r\n \r\n }\r\n \r\n $scope.compiledb=function(){\r\n $('#datasetDeploy').modal('show'); \r\n\r\n } \r\n //**********************************************************\r\n\t// SYNC DATABASE - CREATE OR ALTER TABLE\r\n\t//********************************************************** \r\n $scope.syncdb = function () {\r\n //debugger //syncdb\r\n $scope.activity.activityMessage = ProcessingService.setActivityMsg('Syncing database for '+$scope.resourceId);\r\n if ($scope.resource.FormVersion===undefined || $scope.resource.FormVersion===null) $scope.resource.FormVersion=1\r\n ResourcesDataService.syncdb($scope.resourceId,$scope.resource.FormVersion)\r\n .then(function(data) {\r\n $scope.SavedButNotDeployed = false\r\n MessagingService.addMessage(data.msg,'success');\r\n $('#datasetDeploy').modal('hide'); \r\n } ,function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n $scope.activity.activityMessage = ProcessingService.setActivityMsg(\"\");\r\n };\r\n\r\n\r\n $scope.returnToPreviousPage = function()\r\n {\r\n let page = $scope.returnState.state.name\r\n //let navbar = MenuService.getPageNavbarByName(page);\r\n $state.go(page,$scope.returnState.params);\r\n \r\n }\r\n \r\n // *********** ktFormResource INIT ******************\r\n \r\n\r\n $scope.extDataSourceTypeList = [{id:1,name: 'Database Table'},{id:2, name: 'API'}, {id:3, name: 'SmartContract'}]\r\n $scope.clearResourceParameters()\r\n \r\n if ($stateParams.subTypeSelected == 'standard') {\r\n //something\r\n }\r\n \r\n $scope.dataForGridReady = false;\r\n $scope.editDataset=false;\r\n $scope.dashboard={};\r\n \r\n $scope.gsrvc.destroyDragula('bag-dataset');\r\n $scope.gsrvc.destroyDragula('bag-columns');\r\n $scope.gsrvc.destroyDragula('bag-rows-'+$scope.gridsterType);\r\n //WidgetRegisterService.RegisterDatasetWidgets();\r\n \r\n $scope.showFieldProperties=false;\r\n \r\n //register to state manager\r\n \r\n \r\n let datasetFormState= $scope.ksm.addSubject('datasetFormState'+$scope.resourceId,$scope.dashboard.widgets);\r\n let datasetFormStateName = datasetFormState.subject.name;\r\n //let datasetFormChangesLog = $scope.ksm.addSubject('datasetFormChangesLog'+$scope.resourceId,\"\");\r\n let undo,redo,currentIndex,undoIndex; \r\n \r\n currentIndex =datasetFormState.subject.getCurrentStateIndex;\r\n \r\n if (currentIndex<0) undo=false;\r\n else undo = true;\r\n if (currentIndex==datasetFormState.subject.stateChanges.length-1) redo=false;\r\n else redo=true;\r\n \r\n \r\n let action_dataseform_changed = $scope.ksm.addAction(datasetFormStateName,\"datasetFormChanged\",datasetform_changed);\r\n let action_undo = $scope.ksm.addAction(datasetFormStateName,\"undoDatasetFormChange\",datasetform_undo); \r\n let action_redo = $scope.ksm.addAction(datasetFormStateName,\"redoDatasetFormChange\",datasetform_redo);\r\n let action_undoDone = $scope.ksm.addAction(datasetFormStateName,\"undoDatasetFormChangeDone\",datasetform_undo_done);\r\n //let action_redoDone = $scope.ksm.addAction(datasetFormStateName,\"redoDatasetFormChangeDone\",datasetform_redo_done);\r\n \r\n \r\n \r\n \r\n $scope.showGrid=false;\r\n $scope.gridOptions = {\r\n enableGridMenu: true,\r\n showGridFooter: true,\r\n //showColumnFooter: true,\r\n enableRowSelection: true,\r\n multiSelect: false,\r\n enableHorizontalScrollbar : 0, \r\n enableVerticalScrollbar : 2,\r\n //enableFiltering: true,\r\n enableRowHeaderSelection: true,\r\n enableColumnResizing: true,\r\n // useExternalPagination: true,\r\n paginationPageSizes: [5,10, 25, 50,100,200,500],\r\n enablePaginationControls: true,\r\n }\r\n \r\n $scope.gridOptions.columnDefs = [\r\n { name:'id', width:50 },\r\n { name:'name' },\r\n ];\r\n \r\n $scope.currentStateIndex ={'undo':undo ,'redo':redo};\r\n \r\n}\r\n\r\nexport function formDefinitionCtrl ($scope, $rootScope, AuthenticationService,KatalyoStateManager,ResourcesDataService,CodesService,ProcessingService,MessagingService,WidgetRegisterService,$stateParams,$timeout,GridsterService,MenuService,$element,dragulaService,$state)\r\n{ \r\n \r\n $scope.gsrvc = GridsterService; \r\n $scope.ksm = KatalyoStateManager;\r\n $scope.localVars = { gsrvc:$scope.gsrvc, PropertiesSize:'standard'};\r\n $scope.formVars = { };\r\n $scope.resource = {}\r\n $scope.parentResources=[]\r\n $scope.CTRL='formDefinitionCtrl';\r\n $scope.formLoaded = false;\r\n $scope.gridsterType =\"form\"; //dataset\r\n var lang=$rootScope.globals.currentUser.lang;\r\n $scope.resourceId=$stateParams.id;\r\n $scope.SavedButNotDeployed = false\r\n $scope.isCollapsedVerHistory = true\r\n $scope.localVars.publishedResources = []\r\n $scope.returnState=$stateParams.returnState\r\n \r\n $scope.gsrvc.resetBodyBgColor()\r\n $scope.menu_service = MenuService\r\n $scope.menu_service.clearSideMenu()\r\n\r\n if ($scope.returnState===undefined || $scope.returnState==='')\r\n {\r\n\r\n $scope.returnState={state:{name:'app.navbar.resources.list'},Label:'Return to resource list',params:{}} \r\n }\r\n $scope.resourceDef = {ResourceDefId_id: $scope.resourceId,form_definition : true}\r\n \r\n let massUpdateState= $scope.ksm.addSubject('massUpdateState',null);\r\n let massUpdateStateName = massUpdateState.subject.name;\r\n $scope.ksm.executeAction(massUpdateStateName,\"massUpdateChanged\", {Active:false,Item:null}); \r\n \r\n $scope.get_published_resource_forms=function(){ \r\n ResourcesDataService.GetPublishedResources($scope.resourceId).then(function (data) { \r\n $scope.localVars.publishedResources = data.data;\r\n });\r\n }\r\n $scope.get_published_resource_forms();\r\n $timeout(function() { $scope.definitionType = 'form'; });\r\n \r\n\r\n $scope.widgetPropertyHideMap={general:true,dataValidation:true}\r\n \r\n $scope.localVars.ChangePropertiesSize = function()\r\n {\r\n let propElement = document.getElementsByClassName(\"propertiesContainer\");\r\n \r\n $scope.propertiesTop = \"\";\r\n \r\n if ($scope.localVars.PropertiesSize=='standard')\r\n {\r\n $scope.localVars.PropertiesSize = 'large';\r\n $scope.propertiesTop = $scope.gsrvc.calcTopForExtendedProperties(propElement[0]); \r\n \r\n }\r\n else $scope.localVars.PropertiesSize='standard';\r\n }\r\n \r\n \r\n \r\n $scope.PreparePublish2Prod = function()\r\n {\r\n ResourcesDataService.preparePublish2Prod($scope.resourceId,$scope.resource.ResourceCode,$scope.resource.Version).then(\r\n function(data) { \r\n $scope.publishedResource = data.data;\r\n /*\r\n if ($scope.publishedResource?.rmd) { \r\n $scope.publishedResource.rmd.forEach( item => { \r\n })\r\n }*/ \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }\r\n\r\n $scope.Publish2Prod = function()\r\n {\r\n $scope.publishingDataset=true\r\n let resources = [{uid:$scope.resourceId,itemSubType:$scope.resource.ResourceCode,version:$scope.resource.Version }]\r\n ResourcesDataService.publish2Prod(resources).then(function(data) {\r\n \r\n MessagingService.addMessage(data.data.msg,'success'); \r\n $scope.publishedResource.Published = data.data.Published\r\n $scope.publishedResource.Deployed = data.data.Deployed\r\n $scope.publishedResource.Version = data.data.Version\r\n $scope.resource.Version=$scope.publishedResource.Version\r\n $scope.publishedResource.PublishedVersion = data?.data?.PublishedVersion\r\n $scope.publishedResource.DateTime = data.data.DateTime\r\n $scope.publishedResource.PublishedBy = data.data.PublishedBy\r\n $scope.publishedResource.ChangedDateTime = data.data.ChangedDateTime\r\n $scope.publishedResource.ChangedBy = data.data.ChangedBy\r\n $scope.publishedResource.count = 0 \r\n $scope.publishedResource.rmd = data.data.rmd\r\n $scope.publishingDataset=false\r\n \r\n },function(error){\r\n $scope.publishingDataset=false \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }\r\n \r\n\r\n \r\n $scope.showHideProperties = function(value)\r\n {\r\n \r\n \r\n $scope.gsrvc.setFieldPropertiesOpened(value);\r\n $scope.showFieldProperties=$scope.gsrvc.getFieldPropertiesOpened();\r\n // if (value) $scope.gsrvc.setPropertiesPosition();\r\n };\r\n\r\n\r\n \r\n $scope.ShowFormView = function(viewId,locked)\r\n {\r\n \r\n $scope.resource.formParams.formViewType=viewId;\r\n $scope.resource.formParams.formLocked = locked;\r\n $scope.gsrvc.setFormViewType($scope.resource.formParams.formViewType);\r\n \r\n };\r\n \r\n CodesService.getCodesByName('resourcetype',lang).then(function (data) {\r\n //debugger;\r\n $scope.resourceTypeList = data.data;\r\n });\r\n \r\n CodesService.getCodesByName('codestatus',lang).then(function (data) {\r\n $scope.resourceStatusList = data.data;\r\n $scope.statusesDownloaded= true;\r\n });\r\n \r\n \r\n \r\n $scope.getResourceDefinition = function () {\r\n \r\n ResourcesDataService.getResourceDefAll($scope.resourceId).then(function(data) {\r\n \r\n // MessagingService.addMessage(data.msg,'success');\r\n $scope.resource = data.data;\r\n $scope.resource.widgetPropertyHideMap = $scope.widgetPropertyHideMap\r\n $scope.resourceDefDownloaded=true\r\n\r\n //get resource published info (from PROD instance)\r\n $scope.PreparePublish2Prod()\r\n\r\n ResourcesDataService.GetWidgetToolbox($scope.resource.ResourceCode).then(function (data) {\r\n $scope.gsrvc.setWidgetToolboxItems(data.data,$scope.gridsterType);\r\n $scope.getResourceForm();\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n }); \r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }; \r\n \r\n \r\n //$scope.getResourceDefinition();\r\n \r\n $scope.$on('CtrlPBPressed',function(event,data){\r\n \r\n let key=data;\r\n if (key=='b' || key=='B')\r\n {\r\n if ($scope.resource.formParams.formViewType!=1) $scope.ShowFormView(1);\r\n \r\n }\r\n if (key=='p' || key=='P')\r\n {\r\n if ($scope.resource.formParams.formViewType!=2) $scope.ShowFormView(2);\r\n }\r\n \r\n }); \r\n \r\n $scope.getInnerHtml = function()\r\n \r\n {\r\n //$scope.innerHtml = document.querySelector('div[kt-grid]').innerHTML;\r\n $scope.resource.FormDef = document.querySelector('div[kt-grid]').innerHTML;\r\n //console.log(document.querySelector('div[kt-grid]').innerHTML);\r\n //$scope.innerHtml = elem;\r\n \r\n }\r\n \r\n \r\n \r\n \r\n\r\n $scope.existingRelationships = []\r\n $scope.existingRelationshipsCopy=[]\r\n /*********************************************************************************************/\r\n /************************ GET CHILD RELATIONSHIPS *************************/\r\n /*********************************************************************************************/\r\n $scope.getExistingResources = function() {\r\n\r\n \r\n $scope.existingRelationships.length=0\r\n $scope.RelatedLoaded=false\r\n \r\n \r\n \r\n ResourcesDataService.getExistingResourceRelationships($scope.resourceId).then(function(data) {\r\n \r\n $scope.existingRelationships = data.data;\r\n $scope.existingRelationshipsCopy = angular.copy($scope.existingRelationships)\r\n $scope.RelatedLoaded=true;\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n })\r\n \r\n }; \r\n \r\n \r\n \r\n $scope.saveResourceDef = function (isValid)\r\n {\r\n if (isValid) {\r\n ResourcesDataService.SaveResourceDef2 ($scope.resource).then(\r\n function(data) { \r\n if (data.status===200 || data.status===201 ) MessagingService.addMessage(\"Resource saved successfuly\",'success'); \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n \r\n } else { \r\n MessagingService.addMessage(\"Please enter required data\",'warning'); \r\n }\r\n }; \r\n \r\n \r\n \r\n $scope.clearResourceParameters = function() {\r\n \r\n if ($scope.resource.Parameters ==undefined || $scope.resource.Parameters==null)\r\n {\r\n $scope.resource.Parameters = {extDataSourceParams:{formFieldsList:[]} }; \r\n } else\r\n {\r\n if ($scope.resource.Parameters.extDataSourceParams == undefined || value == false) { \r\n $scope.resource.Parameters.extDataSourceParams={ formFieldsList:[] }; \r\n } else $scope.resource.Parameters.extDataSourceParams.formFieldsList.length=0; \r\n } \r\n }\r\n \r\n \r\n \r\n $scope.EditDataset = function(value) //TODO\r\n {\r\n var localFieldsList=[] \r\n if ( $scope.resource.Parameters?.extDataSourceParams?.formFieldsList) \r\n getFieldNamesFromObject($scope.dashboard, $scope.resource.Parameters.extDataSourceParams.formFieldsList); \r\n };\r\n \r\n \r\n \r\n $scope.$watch('gsrvc.getFieldPropertiesOpened()',function(newValue,oldValue){\r\n \r\n if (newValue!=oldValue)\r\n {\r\n $scope.selectedField=$scope.gsrvc.getFieldProperties();\r\n \r\n $scope.showFieldProperties = $scope.gsrvc.getFieldPropertiesOpened();\r\n }\r\n if ($scope.refreshProperties && $scope.showFieldProperties)\r\n {\r\n $scope.selectedField=$scope.gsrvc.getFieldProperties();\r\n $scope.refreshProperties=false;\r\n }\r\n });\r\n \r\n $scope.$watch('gsrvc.getFieldProperties()',function(newValue,oldValue){\r\n \r\n if (newValue!=oldValue)\r\n {\r\n $scope.selectedField=$scope.gsrvc.getFieldProperties();\r\n $scope.localVars.PropertiesSize ='standard';\r\n $scope.showFieldProperties = $scope.gsrvc.getFieldPropertiesOpened();\r\n }\r\n if ($scope.refreshProperties && $scope.showFieldProperties)\r\n {\r\n $scope.selectedField=$scope.gsrvc.getFieldProperties();\r\n $scope.refreshProperties=false;\r\n }\r\n });\r\n \r\n \r\n \r\n $scope.getResourceForm = function () //in resourceFormCtrl\r\n {\r\n $scope.formLoaded=false;\r\n \r\n ResourcesDataService.getResourceForm($scope.resourceId,'i',lang).then(\r\n function(data) {\r\n \r\n \r\n $scope.resource= data.data.resourceDefinition\r\n $scope.resource.widgetPropertyHideMap = $scope.widgetPropertyHideMap\r\n if (data?.data?.widgets && data.data.widgets.length>0) {\r\n $scope.dashboard.widgets={layout:data.data.widgets};\r\n } else \r\n $scope.dashboard.widgets={layout : $scope.resource.ResourceExtended.DefaultForm};\r\n \r\n \r\n //get resource published info (from PROD instance)\r\n $scope.PreparePublish2Prod()\r\n\r\n ResourcesDataService.GetWidgetToolbox($scope.resource.ResourceCode).then(function (data) {\r\n $scope.gsrvc.setWidgetToolboxItems(data.data,$scope.gridsterType);\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n }); \r\n\r\n \r\n \r\n $scope.resource.formParams = {formViewType:1,formLocked:true}; \r\n $scope.adminHeaderLabel=\"Select \"+$scope.resource.ResourceCode+\" administrators\"; \r\n $scope.gsrvc.setFormViewType($scope.resource.formParams.formViewType);\r\n\r\n $timeout( function() {\r\n $scope.formLoaded=true;\r\n //if (!$scope.resource.Published && $scope.resource.Version==$scope.resource.NewVersion) $scope.showPublish(false)\r\n });\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n };\r\n \r\n $scope.getResourceForm();\r\n\r\n\r\n\r\n //**********************************************************\r\n // SAVE RESOURCE FORM DEFINITION\r\n //********************************************************** \r\n $scope.saveResourceForm = function (val) {\r\n $scope.savingForm = true; //disable save button\r\n $scope.formLoaded=false; \r\n $scope.showHideProperties(false);\r\n // First save the form\r\n\r\n ResourcesDataService.saveResourceForm($scope.dashboard.widgets.layout,$scope.resourceId,'i',$scope.localVars.newDescription)\r\n .then(function(data) {\r\n if (data.data.formData.length>0) {\r\n $scope.dashboard.widgets={layout:data.data.formData};\r\n $scope.resource.FormVersion = data.data.form_version;\r\n $scope.resource.Version = data.data.version;\r\n $scope.hasChanges=data.data.has_changes\r\n }\r\n $scope.definitionType = val;\r\n var lang=$rootScope.globals.currentUser.lang;\r\n MessagingService.addMessage(data.msg,data.msgType);\r\n $scope.savingForm = false;\r\n \r\n $scope.formLoaded=true;\r\n $('#datasetPublish').modal('hide'); \r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.savingForm = false;\r\n $scope.formLoaded=true;\r\n });\r\n\r\n };\r\n\r\n $scope.showModal = function (p_type) {\r\n //POST publish-resource , resource_id, version i description\r\n //$scope.saveModal=true;\r\n $('#datasetPublish').modal('show'); \r\n $scope.modalAction=p_type\r\n $scope.newPublishVersion = $scope.resource.Version\r\n }\r\n \r\n \r\n \r\n \r\n //**********************************************************\r\n // Publish resource\r\n //********************************************************** \r\n $scope.save_resource = function (formValid) {\r\n \r\n let publish_type='form'\r\n if (formValid) {\r\n if ($scope.modalAction=='save')\r\n {\r\n $scope.saveResourceForm(publish_type)\r\n }else{\r\n $scope.publishingForm = true;\r\n //debugger\r\n ResourcesDataService.PublishResource($scope.resourceId,$scope.resource.Version,$scope.localVars.newDescription,publish_type)\r\n .then(function(data) {\r\n MessagingService.addMessage(data.msg,'success');\r\n //$('#datasetPublish').modal('hide'); \r\n $scope.publishingForm = false;\r\n $scope.resource.Published = true\r\n $scope.get_published_resource_forms()\r\n $scope.PreparePublish2Prod()\r\n $scope.datasetDeploy = []\r\n $('#datasetPublish').modal('hide'); \r\n //TODO - SKINUTI PONOVNO PUBLISHED RESOURCES\r\n } ,function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.publishingForm = false;\r\n \r\n });\r\n }\r\n $scope.activity.activityMessage = ProcessingService.setActivityMsg(\"\");\r\n }\r\n };\r\n \r\n \r\n\r\n $scope.returnToPreviousPage = function()\r\n {\r\n let page = $scope.returnState.state.name\r\n //let navbar = MenuService.getPageNavbarByName(page);\r\n $state.go(page,$scope.returnState.params);\r\n \r\n }\r\n \r\n // *********** ktFormResource INIT ******************\r\n \r\n\r\n \r\n $scope.dataForGridReady = false;\r\n $scope.editDataset=false;\r\n $scope.dashboard={};\r\n \r\n $scope.gsrvc.destroyDragula('bag-form');\r\n $scope.gsrvc.destroyDragula('bag-columns');\r\n $scope.gsrvc.destroyDragula('bag-rows-'+$scope.gridsterType);\r\n \r\n \r\n $scope.showFieldProperties=false;\r\n \r\n \r\n}\r\n \r\n \r\n \r\nexport function resourceDataRecordCtrl ($scope,$timeout ,$rootScope, AuthenticationService,ResourcesDataService,ProcessingService,MessagingService,$stateParams,GridsterService) {\r\n \r\n $scope.resourceId=$stateParams.resource_id;\r\n $scope.record_id=$stateParams.id;\r\n $scope.CTRL='resourceDataRecordCtrl';\r\n $scope.resourceDefinition = {'ResourceDefId_id':$scope.resourceId};\r\n $scope.formData=[{}];\r\n $scope.gridsterType=\"resource\";\r\n\r\n $scope.dashboard = {\r\n\t\t\t\tid: '1',\r\n\t\t\t\tname: 'Home',\r\n\t\t\t\twidgets: GridsterService.getEmptyDatasetForm()\r\n\t\t\t\t} ;\r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n $scope.getResourceForm = function () {// in resourceDataRecordCtrl\r\n //debugger\r\n ResourcesDataService.getResourceForm($scope.resourceId,'i',lang,$scope.resourceDefiniton.resourceType).then(function(data) {\r\n \r\n $scope.dashboard.widgets.layout=data.data.widgets;\r\n $scope.resourceDefinition= data.data.resourceDefinition;\r\n //debugger;\r\n $scope.resource.formParams = {formViewType:1};\r\n $scope.formLoaded=true;\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n \r\n });\r\n };\r\n\r\n $scope.getResourceFormWithData = function () {\r\n ResourcesDataService.getResourceFormWithData($scope.resourceId,$scope.record_id,'i',lang).then(function(data) {\r\n \r\n $scope.dashboard.widgets.layout=data.data.widgets;\r\n $scope.formData = data.data.form_data;\r\n $scope.resourceDefinition= data.data.resourceDefinition;\r\n //debugger;\r\n $scope.resource.formParams = {formViewType:1};\r\n $scope.formLoaded=true;\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n \r\n });\r\n };\r\n \r\n if ($scope.record_id==\"\")\r\n {\r\n $scope.action = \"Create\";\r\n \r\n }\r\n else\r\n {\r\n \r\n $scope.action = \"Update\";\r\n \r\n }\r\n if ($scope.resourceId != undefined && $scope.action == \"Create\")\r\n {\r\n $scope.getResourceForm();\r\n }\r\n else if ($scope.record_id != undefined)\r\n {\r\n $scope.getResourceFormWithData();\r\n \r\n \r\n }\r\n \r\n $scope.saveResourceData = function () {\r\n \r\n \r\n \r\n $scope.activity.activityMessage = ProcessingService.setActivityMsg(\"Saving record for \"+$scope.resourceId);\r\n \r\n //$scope.resourceData = ResourcesDataService.prepareResourceWidgetData($scope.dashboard1.widgets);\r\n \r\n\r\n ResourcesDataService.saveResourceData($scope.resourceId,$scope.formData).then(function(data) {\r\n MessagingService.addMessage(data.msg,'success');\r\n $scope.activity.activityMessage = ProcessingService.setActivityMsg(\"\");\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n };\r\n \r\n \r\n $scope.deleteSelectedRecord = function () {\r\n \r\n ResourcesDataService.deleteDatasetRecord($scope.resourceId,$scope.record_id).then(function(data) {\r\n MessagingService.addMessage(data.msg,'success');\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n }; \r\n }\r\n \r\n \r\nexport function pagesCtrl ($scope, $rootScope,$state,ResourcesDataService,UserService,uiGridConstants,MessagingService,$timeout) {\r\n \r\n $scope.CTRL='pagesCtrl';\r\n $scope.navbar_id=$state.params.navbar_id;\r\n $scope.previousState = {state:$state.current.name,params:{navbar_id:$scope.navbar_id,sidemenu_id:$state.params.sidemenu_id}};\r\n //Get data from server\r\n $scope.gridOptions = {\r\n columnDefs: [\r\n { name: 'id', displayName: 'ID', aggregationType: uiGridConstants.aggregationTypes.maX,type: 'number', width:'5%',enableHiding: false, visible: true },\r\n { name: 'resourcedeflang_set[0].Name', displayName: 'Page name'},\r\n { name: 'resourcedeflang_set[0].Subject', displayName: 'Page subject' },\r\n { name: 'resourcedeflang_set[0].Description', displayName: 'Page description' },\r\n // { name: 'resourcedeflang_set[0].Lang.name', displayName: 'Language'},\r\n // { name: 'ResourceType.CodesDetailLang[0].Value', displayName: 'Task type' },\r\n { name: 'CreatedDateTime', displayName: 'Date created',enableHiding: false,type: 'date', cellFilter: 'date:\\'dd.MM.yyyy HH:MM:ss:sss\\'' },\r\n { name: 'createdBy.name', displayName: 'Created by'},\r\n { name: 'Status.CodesDetailLang[0].Value', displayName: 'Status'},\r\n ],\r\n enableGridMenu: true,\r\n showGridFooter: true,\r\n showColumnFooter: true,\r\n enableRowSelection: true,\r\n multiSelect: false,\r\n enableHorizontalScrollbar : 0, \r\n enableVerticalScrollbar : 2,\r\n enableFiltering: true,\r\n enableRowHeaderSelection: true,\r\n enableColumnResizing: true,\r\n /* \r\n paginationPageSizes: [5, 10, 20, 50, 100],\r\n paginationPageSize: 5,\r\n enableSelectAll: false,\r\n \r\n \r\n enableCellEdit: false*/\r\n \r\n }\r\n \r\n \r\n\r\n $scope.gridOptions.onRegisterApi = function (gridApi) {\r\n //set gridApi on scope\r\n $scope.gridApi = gridApi;\r\n \r\n gridApi.selection.on.rowSelectionChanged($scope,function(row){\r\n \r\n $scope.pageSelected=row.isSelected;\r\n $scope.selectedPage = row.entity.id;\r\n $scope.selectedPageObject = row.entity;\r\n });\r\n }\r\n \r\n \r\n \r\n $scope.getPageDef = function(){\r\n \r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n ResourcesDataService.getResourceDefByType(lang,'page').then(function(data) {\r\n \r\n $scope.gridOptions.data = data.data;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n };\r\n \r\n \r\n //napuni grid s definicijama resursa\r\n $scope.getPageDef();\r\n \r\n \r\n \r\n }\r\n\r\nexport function pagesDefinitionCtrl ($scope, $rootScope,$state,$location,CodesService,ResourcesDataService,UserService,MessagingService,MenuService,GridsterService,$timeout) {\r\n\r\n $scope.CTRL='pagesDefinitionCtrl';\r\n $scope.gsrvc = GridsterService\r\n $scope.dashboard = {widgets:$scope.gsrvc.getEmptyTaskForm()}\r\n $scope.resourceId=$state.params.id;\r\n $scope.grid={};\r\n $scope.navbar_id=$state.params.navbar_id;\r\n var lang=$rootScope.globals.currentUser.lang;\r\n $scope.user_is_admin = $rootScope.globals.currentUser.is_superuser;\r\n $scope.selectedTab=1;\r\n $scope.previousState = {state:$state.current.name,params:{id:$scope.pageid,navbar_id:$scope.navbar_id,showReturnLink:true}};\r\n $scope.resourceDefinition={form_definition:true}\r\n $scope.gridsterType='page'\r\n $scope.localVars={};\r\n //$scope.organisation_id = $rootScope.globals.currentUser.uep.Organisation\r\n\t\t$scope.organisation_id = $rootScope.globals.currentUser?.organisation?.id\r\n $scope.gsrvc.resetBodyBgColor()\r\n $scope.previewPagePath = indexJson['config']['preview_page_path']\r\n\r\n $scope.menu_service = MenuService\r\n $scope.menu_service.clearSideMenu()\r\n $scope.env_id = $rootScope.globals.currentEnv\r\n /*\r\n\t\t$timeout(function(){\r\n $('[data-toggle=\"tooltipm\"]').popover('show')\r\n });\r\n \r\n \r\n $timeout(function(){\r\n $('[data-toggle=\"tooltipm\"]').popover('hide')\r\n },5000);\r\n\t\t*/\r\n\t\tif ($scope.localVars.selectedPageMenu) {\r\n\t\t}\r\n \r\n\t \r\n $scope.findLinkIndex = function( link_type, wheretolook)\r\n {\r\n for (let i=0;i {\r\n if (item.Version == resource?.Version) \r\n\t\t\t\t\t\t\t\t\t\tresource.selectedPublishedResource = item\r\n\t\t\t\t\t\t\t\t\t\t$scope.localVars.selectedPageMenu.selectedPublishedResource = item //TODO - popraviti da radi i bez toga\r\n } ) \r\n }\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n\t}\r\n\r\n $scope.pageTypeList = [{id:1,name:'System page',value:'system'},{id:2,name:'User page',value:'user'}]\r\n\r\n \r\n \r\n /*\r\n CodesService.getCodesByName('pagetypes',lang).then(function (data) {\r\n $scope.pageTypeList = data.data;\r\n\t\t\t\t //napuni grid s definicijama resursa\r\n\t\t\t\t\r\n });\r\n */\r\n \r\n ResourcesDataService.getResourceDefListByType(lang,'pagemenu').then(\r\n\t\t\t\t\t\tfunction(data) {\t \r\n $scope.localVars.pageMenuList = [{id:0, name: 'No menu selected'}].concat(data.data)\r\n\t\t\t\t \r\n\t\t\t\t\t\t\t},function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n\t\t });\r\n \r\n ResourcesDataService.GetResourceParams().then(function (data) {\r\n //debugger\r\n $scope.resourceTypeList = data.data;\r\n $scope.resourceTypesLoaded = true;\r\n });\r\n \r\n let form_saved = function(data) {\r\n formDefinitionState.subject.setStateChanges = data;\r\n formDefinitionState.subject.notifyObservers(\"formSaved\");\r\n\r\n };\r\n \r\n \r\n let formDefinitionState,formDefinitionStateName; \r\n formDefinitionState= $scope.ksm.addSubject('formDefinitionState'+$scope.resourceId+'i',null);\r\n formDefinitionStateName = formDefinitionState.subject.name;\r\n \r\n let action_value_changed = $scope.ksm.addAction(formDefinitionStateName,\"formSaved\",form_saved);\r\n\r\n \r\n \r\n $scope.PreparePublish2Prod = function()\r\n {\r\n ResourcesDataService.preparePublish2Prod($scope.resourceId,$scope.resource.ResourceCode,$scope.resource.Version).then(function(data) {\r\n \r\n $scope.publishedResource = data.data;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }\r\n\r\n $scope.Publish2Prod = function()\r\n {\r\n $scope.publishingDataset=true\r\n let resources = [{uid:$scope.resourceId,itemSubType:$scope.resource.ResourceCode,version: $scope.gsrvc.resourceFormVersion[$scope.resource.uid]?.Version }]\r\n if ($scope.publishedResource==undefined) $scope.publishedResource={}\r\n ResourcesDataService.publish2Prod(resources).then(function(data) {\r\n \r\n MessagingService.addMessage(data.data.msg,'success'); \r\n $scope.publishedResource.Published = data.data.Published\r\n $scope.publishedResource.Deployed = data.data.Deployed\r\n $scope.publishedResource.Version = data.data.Version\r\n $scope.publishedResource.PublishedVersion = data?.data?.PublishedVersion\r\n $scope.publishedResource.DateTime = data.data.DateTime\r\n $scope.publishedResource.PublishedBy = data.data.PublishedBy\r\n $scope.publishedResource.ChangedDateTime = data.data.ChangedDateTime\r\n $scope.publishedResource.ChangedBy = data.data.ChangedBy\r\n $scope.publishedResource.count = 0 \r\n $scope.publishedResource.rmd = data.data.rmd\r\n $scope.publishingDataset=false\r\n $scope.gsrvc.resourceFormVersion[$scope.resource.uid] = data.data\r\n \r\n },function(error){\r\n $scope.publishingDataset=false \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n }\r\n \r\n\r\n $scope.getResourceForm = function () {// in pagesDefinitionCtrl\r\n\r\n \r\n $scope.pageDownloaded=true;\r\n //debugger\r\n /*\r\n ResourcesDataService.getResourceForm($scope.resourceId,'i',lang).then(function(data) {\r\n \r\n if (data?.data?.widgets && data.data.widgets.length>0) {\r\n $scope.dashboard.widgets={layout:data.data.widgets};\r\n } else \r\n $scope.dashboard.widgets={layout : GridsterService.getEmptyTaskForm()};\r\n \r\n $scope.resourceDefinition= data.data.resourceDefinition; \r\n $scope.resource.formParams = {formViewType:1,formLocked:true};\r\n $scope.resourceDefinition.form_definition = true\r\n $scope.resourceDefinition.form_type='i'\r\n $scope.resourceDefinition.ResourceDefId_id = $scope.resourceId\r\n \r\n $scope.adminHeaderLabel=\"Select \"+$scope.resourceDefinition.ResourceCode+\" administrators\"; \r\n \r\n $scope.gsrvc.setFormViewType($scope.resourceDefinition.formParams.formViewType);\r\n\r\n $timeout(function() {\r\n $scope.pageDownloaded = true\r\n });\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n */\r\n \r\n };\r\n\r\n $scope.savePageForm = function () {\r\n\r\n $scope.savingForm = true;\r\n ResourcesDataService.saveResourceForm($scope.dashboard.widgets.layout,$scope.resourceId,'i').then(function(data) {\r\n \r\n MessagingService.addMessage(data.msg,data.msgType);\r\n $scope.FormVersion = data.version;\r\n\r\n if (data.data.formData.length>0) {\r\n $scope.dashboard.widgets={layout:data.data.formData}\r\n } \r\n\r\n $scope.ksm.executeAction(formDefinitionStateName,\"formSaved\",data.new_items);\r\n $scope.savingForm = false;\r\n \r\n },function(error){\r\n \r\n $scope.savingForm = false;\r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n \r\n \r\n };\r\n $scope.setPageDef = function(){\r\n \r\n \r\n $scope.resource.headerLabel=\"Page permissions\";\r\n $scope.resource.usersLabel=\"Users\";\r\n $scope.resource.groupsLabel=\"Groups\";\r\n \r\n if ($scope.resource.ResourceExtended.PageType!= undefined)\r\n {\r\n if ($scope.resource.ResourceExtended.PageType.value==\"user\")\r\n {\r\n $scope.resource.ResourceExtended.Target = \"app.navbar.vpage\";\r\n if ($scope.resource.Parameters.PublicPage) $scope.resource.ResourceExtended.Target = \"app.navbar.public-vpage\"\r\n $scope.resource.disabledTarget = true;\r\n }else\r\n {\r\n //$scope.page.Target = \"app.navbar.vpage\";\r\n $scope.resource.disabledTarget = false;\r\n \r\n }\r\n }else\r\n {\r\n var pos = $scope.pageTypeList.map(function(e) { return e.value; }).indexOf(\"user\");\r\n if (pos>=0) {\r\n $scope.resource.ResourceExtended.PageType = $scope.pageTypeList[pos];\r\n $scope.resource.ResourceExtended.Target = \"app.navbar.vpage\";\r\n if ($scope.resource.Parameters.PublicPage) $scope.resource.ResourceExtended.Target = \"app.navbar.public-vpage\"\r\n $scope.resource.disabledTarget = true; \r\n }\r\n $scope.savePageDef($scope.resource,'info')\r\n }\r\n\r\n\r\n \r\n };\r\n \r\n $scope.getResourceDefinition = function () {\r\n \r\n ResourcesDataService.getResourceDefAll($scope.resourceId).then(function(data) {\r\n \r\n $scope.resource = data.data;\r\n \r\n $scope.resource.resourceDefDownloaded = true\r\n $scope.resource.adminHeaderLabel = 'Page permissions'\r\n if ($scope.resource.Parameters?.AccessUsers==undefined) $scope.resource.Parameters.AccessUsers=[]\r\n\r\n if ($scope.resource.Parameters?.AccessGroups==undefined) $scope.resource.Parameters.AccessGroups=[]\r\n\r\n $scope.gsrvc.setResourceFormVersion($scope.resource.uid,{Version:$scope.resource.Version,Published:$scope.resource.Published,NewVersion:$scope.resource.NewVersion})\r\n $scope.PreparePublish2Prod() \r\n ResourcesDataService.GetWidgetToolbox($scope.resource.ResourceCode).then(function (data) {\r\n $scope.gsrvc.setWidgetToolboxItems(data.data,$scope.gridsterType);\r\n $scope.getResourceForm();\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n }); \r\n $scope.setPageDef();\r\n \r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n };\r\n \r\n \r\n /*\r\n ResourcesDataService.getResourceDefListByType(lang,'task').then(function(data) {\r\n \r\n $scope.resourceList = data.data;\r\n $scope.resourcesLoaded = true;\r\n //debugger\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n }); \r\n */\r\n $scope.getResourceDefinition();\r\n \r\n $scope.saveResourceDef = function (isValid) {\r\n \r\n if (isValid)\r\n {\r\n ResourcesDataService.saveResourceDefAllNew($scope.resource).then(function(data) {\r\n \r\n if (data.status===200 || data.status===201)\r\n {\r\n MessagingService.addMessage(\"Page saved successfuly\",'success'); \r\n }\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n \r\n });\r\n \r\n }else\r\n {\r\n \r\n MessagingService.addMessage(\"Please enter required data\",'warning'); \r\n }\r\n }; \r\n \r\n $scope.showHideProperties = function(value)\r\n {\r\n $scope.gsrvc.setFieldPropertiesOpened(value);\r\n $scope.showFieldProperties=$scope.gsrvc.getFieldPropertiesOpened();\r\n \r\n };\r\n\r\n $scope.showHideProperties(false)\r\n\r\n $scope.$watch('gsrvc.getFieldProperties()',function(newValue,oldValue){\r\n \r\n if (newValue!=oldValue)\r\n {\r\n $scope.selectedField=$scope.gsrvc.getFieldProperties();\r\n $scope.showFieldProperties = $scope.gsrvc.getFieldPropertiesOpened();\r\n }\r\n });\r\n $scope.returnToPreviousPage = function()\r\n {\r\n let page = \"app.navbar.resources.list\";\r\n //let navbar = MenuService.getPageNavbarByName(page);\r\n $state.go(page,{});\r\n \r\n }\r\n \r\n \r\n $scope.savePageDef = function(valid,save_type){\r\n //debugger\r\n if (valid)\r\n {\r\n ResourcesDataService.savePageDef($scope.resource,lang,save_type).then(function(data) {\r\n \r\n MessagingService.addMessage(data.data,'success');\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n }\r\n };\r\n \r\n \r\n $scope.savePageMenu = function () {\r\n \r\n let link_id1=null\r\n if ($scope.resource.ResourceExtended.rlinks[0] && $scope.resource.ResourceExtended.rlinks[0].id ) link_id1 = $scope.resource.ResourceExtended.rlinks[0].id;\r\n \r\n $scope.rLinks=[{'id':link_id1,\r\n\t\t\t\t\t\t'Resource1':$scope.resource.uid,\r\n\t\t\t\t\t\t'Resource2':$scope.localVars.selectedPageMenu.id,\r\n\t\t\t\t\t\t'LinkType':'page-menu',\r\n\t\t\t\t\t\t'SelectVersionDirect':$scope.localVars.selectedPageMenu?.SelectVersionDirect,\r\n\t\t\t\t\t\t}];\r\n\t\t\t\t\t\t\r\n\t\t\tif ($scope.localVars.selectedPageMenu?.SelectVersionDirect) {\r\n\t\t\t\t\t$scope.rLinks[0].publishedResource = $scope.localVars.selectedPageMenu?.selectedPublishedResource\r\n\t\t\t\t\t$scope.rLinks[0].Version = $scope.localVars.selectedPageMenu?.selectedPublishedResource?.Version\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n ResourcesDataService.saveResourceLinks($scope.rLinks).then(function(data) {\r\n MessagingService.addMessage(data.data.msg,'success'); \r\n },function(error){\r\n MessagingService.addMessage(error.data.msg,'error');\r\n });\r\n \r\n };\r\n \r\n\t \r\n\t \r\n $scope.newVersion = function()\r\n {\r\n $scope.creatingNewVersion=true\r\n\r\n ResourcesDataService.SetNewResourceVersion($scope.resource.id)\r\n .then(function(data) {\r\n if (data.status==200)\r\n {\r\n $scope.resource.NewVersion = data.data\r\n $scope.resource.Published=false\r\n }else MessagingService.addMessage(data.data,'error');\r\n $scope.creatingNewVersion=false\r\n $scope.hasChanges=false\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.creatingNewVersion=false\r\n \r\n });\r\n\r\n };\r\n\r\n $scope.showModal = function (p_type) {\r\n $('#pagePublish').modal('show')\r\n $scope.modalAction=p_type\r\n $scope.newPublishVersion = $scope.resourceDefinition.NewVersion\r\n\r\n }\r\n\r\n $scope.pageGridItemsPreview = [];\r\n \r\n $scope.calcRowSize = function(rebuildGrid)\r\n {\r\n $scope.rowSizes=\"\";\r\n for (let i=0;i<$scope.resource.Parameters.grid.NoOfRows;i++) {\r\n //$scope.rowSizes = $scope.rowSizes+\" auto\";\r\n $scope.rowSizes = $scope.rowSizes+ \"minmax(0,1fr)\"; //TODO - zbog overflowa tablice u gridu, vidjeti negativne efekte\r\n }\r\n \r\n if (rebuildGrid) $scope.rebuildGrid();\r\n }\r\n \r\n \r\n \r\n $scope.calcColumnSize = function(rebuildGrid)\r\n {\r\n $scope.columnSizes=\"\";\r\n for (let i=0;i<$scope.resource.Parameters.grid.NoOfColumns;i++)\r\n {\r\n // $scope.columnSizes = $scope.columnSizes+\" auto\";\r\n $scope.columnSizes = $scope.columnSizes+\"minmax(0,1fr)\";//TODO - zbog overflowa tablice u gridu, vidjeti negativne efekte\r\n } \r\n //debugger\r\n if (rebuildGrid) $scope.rebuildGrid(); \r\n }\r\n \r\n \r\n $scope.BuildGrid = function(loadFromDB)\r\n {\r\n //debugger\r\n /* $scope.pageGridItemsPreview.length=0;\r\n let itemLength = $scope.resource.Parameters.grid.NoOfRows*$scope.resource.Parameters.grid.NoOfColumns;\r\n \r\n for (let j=0;j itemLength) {\r\n MessagingService.addMessage('Data loss error ','error'); \r\n }\r\n else {\r\n for (let j=0;j item.id == $scope.resource.ResourceExtended.rlinks[0].Resource2 )[0];\r\n\t\t $scope.localVars.selectedPageMenu.SelectVersionDirect = $scope.resource.ResourceExtended.rlinks[0].Resource2_Version ? true : false\r\n\t\t \r\n\t\t if ($scope.localVars.selectedPageMenu.id) {\r\n\t\t\t $scope.getPublishedResources($scope.localVars.selectedPageMenu,'all')\r\n\t\t }\r\n\t\t //scope().localVars.selectedPageMenu.selectedPublishedResource\r\n }\r\n \r\n \r\n \r\n \r\n }\r\n\r\n\r\n\r\n\r\nexport function pagesFormCtrl ($scope, $rootScope, dragularService,ResourcesDataService,UserService,GridsterService,ProcessingService,MessagingService,$timeout,$stateParams,$element) {\r\n \r\n $scope.CTRL='pagesFormCtrl';\r\n $scope.gridsterType =\"page\";\r\n\r\n $scope.resourceId=$stateParams.id;\r\n var lang=$rootScope.globals.currentUser.lang;\r\n $scope.dashboard.widgets = GridsterService.getEmptyTaskForm();\r\n $scope.formDefinition=true;\r\n $scope.gsrvc=GridsterService\r\n $scope.gsrvc.resetBodyBgColor()\r\n \r\n \r\n \r\n $scope.getResourceForm = function () {// in pagesFormCtrl\r\n //debugger\r\n ResourcesDataService.getResourceForm($scope.resourceId,'i',lang).then(function(data) {\r\n if (data.data.widgets.length>0) {\r\n $scope.dashboard.widgets=data.data.widgets;\r\n } \r\n $scope.resourceDefinition= data.data.resourceDefinition;\r\n \r\n \r\n //**********************************************************\r\n // Drag And Drop dragular\r\n //**********************************************************\r\n \r\n $timeout(function(){\r\n var container = $element.children().eq(0).children().eq(2).children().eq(0), widgets = $scope.dashboard.widgets; \r\n dragularService(container[0],\r\n {\r\n nameSpace: 'row-layout',\r\n classes: { },\r\n revertOnSpill: true,\r\n containersModel: widgets,\r\n moves: function (el, container, handle) {\r\n return handle.classList.contains(\"row-\"+$scope.gridsterType+\"-handle\");\r\n }\r\n \r\n } );\r\n });\r\n \r\n $timeout(function() {$scope.formLoaded=true;},1000);\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n };\r\n \r\n if ($scope.resourceId != undefined) {\r\n $scope.getResourceForm(); \r\n }\r\n \r\n \r\n //**********************************************************\r\n // SAVE PAGE FORM DEFINITION\r\n //********************************************************** \r\n $scope.savePageForm = function (isValid) {\r\n //debugger\r\n //code\r\n \r\n $scope.activity.activityMessage = ProcessingService.setActivityMsg('Saving form for page'+$scope.resourceId);\r\n \r\n ResourcesDataService.saveResourceForm($scope.dashboard.widgets,$scope.resourceId,'i').then(function(data) {\r\n \r\n \r\n \r\n $scope.dashboard.widgets = data.data;\r\n MessagingService.addMessage(data.msg,'success');\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n $scope.activity.activityMessage = ProcessingService.setActivityMsg(\"\");\r\n // }\r\n };\r\n \r\n \r\n }\r\n \r\nexport function menusDefinitionCtrl ($scope, $rootScope,$state, dragularService,ResourcesDataService,MenuService,CodesService,GridsterService,ProcessingService,MessagingService,$timeout,$stateParams,$element) {\r\n \r\n \r\n \r\n $scope.CTRL='menusDefinitionCtrl';\r\n $scope.menu_service=MenuService;\r\n $scope.menus= {editMode: $scope.menu_service.getMenuEditMode(),showNavbar:$scope.menu_service.navbarSelected,showSideMenu:$scope.menu_service.sideMenuSelected};\r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n $scope.menu_service.clearSideMenu()\r\n\r\n $scope.localVars={manualPageSelect:true};\r\n $scope.changeEditMode = function(){\r\n \r\n \r\n $scope.menus.editMode = !$scope.menus.editMode;\r\n $scope.menu_service.setMenuEditMode($scope.menus.editMode);\r\n if ($scope.menus.editMode) $scope.menu_service.setCurrentNavbarId(null,lang);\r\n else $scope.menu_service.refreshMenus(lang,0).then(function(data){\r\n \r\n });\r\n // $scope.showNavbar=!$scope.showNavbar;\r\n }\r\n $scope.initMenu = function(){\r\n $scope.menus.editMode= $scope.menu_service.getMenuEditMode();\r\n \r\n }\r\n \r\n \r\n //two-way binding with the service - not working like that\r\n \r\n $scope.selectedNavbar=$scope.menu_service.selectedNavbar;\r\n //make sure the navbars are loaded \r\n $scope.menu_service.getMenus(lang,1).then(function (data) {\r\n \r\n });\r\n \r\n $scope.$watch('menu_service.loadingMenu',function(newValue,oldValue){\r\n if (newValue!=oldValue)\r\n {\r\n $scope.loadingMenu=$scope.menu_service.getLoadingMenu();\r\n }\r\n }); \r\n \r\n\r\n $scope.PreparePublish2Prod = function()\r\n {\r\n ResourcesDataService.preparePublish2Prod($scope.resourceId,$scope.resource.Version).then(\r\n\t\t\tfunction(data) { \r\n\t\t\t\t$scope.publishedResource = data.data; \r\n\t\t\t},function(error){ \r\n\t\t\t\tMessagingService.addMessage(error.msg,'error'); \r\n });\r\n }\r\n \r\n $scope.PreparePublish2Prod()\r\n\r\n $scope.newChildNavbar = function() {\r\n if ($scope.cMenus==undefined) $scope.cMenus=[];\r\n $scope.selectedNavbar = {Users:[],Groups:[],Target:null,ParentItem:null,Params: {pageid: $scope.selectedPageId},Order:$scope.cMenus[$scope.currentNavbarId].length+1,MenuType:CodesService.getCodesDetailObjectByName('menutypes','navbarrightc',lang),Navbar:$scope.currentNavbarId};\r\n $scope.cMenus[$scope.currentNavbarId].push($scope.selectedNavbar);\r\n \r\n } \r\n \r\n}\r\n\r\n\r\n","'use strict';\r\n\r\n\r\n\r\n//import userDefinitionJson from './usersDefinition.json' assert {type: 'json'};\r\n//import dict from './dict.json' assert {type: 'json'};\r\nimport indexJson from './../../0001_index/angularJs/index.json'//with {type: 'json'};\r\n\r\n\r\nexport default function codesDataCtrl ($scope, $stateParams,$state,$rootScope,uiGridConstants,ProcessingService,MessagingService,CodesService,GridsterService,MenuService,ResourcesDataService, $q, $timeout,KatalyoStateManager) {\r\n \r\n $scope.CTRLNAME='codesDataCtrl';\r\n $scope.isCollapsed = false;\r\n $scope.pageState={} //MIGOR - samo da proradi GETRESOUCEDEF\r\n $scope.paginationOptions={}//MIGOR - samo da proradi GETRESOUCEDEF\r\n $scope.showTableActions=true;// Needed by SmartTable\r\n $scope.actionDef= [{id:1,btnLabel:'Edit code',btnClass:'btn-outline-primary',icon:'fa fa-edit'}] \r\n $scope.smParams = {UuidRef:1}\r\n $scope.codeId=0;\r\n $scope.searchInitiated = true\r\n var lang=$rootScope.globals.currentUser.lang;\r\n $scope.gsrvc = GridsterService\r\n $scope.gsrvc.resetBodyBgColor() \r\n $scope.menu_service = MenuService \r\n $scope.menu_service.clearSideMenu()\r\n let menuVisibility= $scope.ksm.addSubject(\"menuVisibility\",null);\r\n let menuVisibilityName = menuVisibility.subject.name;\r\n $scope.ksm = KatalyoStateManager \r\n $scope.ksm.executeAction(menuVisibilityName,menuVisibilityName+\"Changed\", {state:{sideMenu:false}});\r\n \r\n\t $scope.codeTypeList = [{id:1,name:'System'},{id:2,name:'User'}]\r\n\r\n $scope.columnDefs = [// Needed by SmartTable\r\n {name: 'id', displayName: 'ID', type: 'number'},\r\n {name: 'CodeName', displayName: 'Code name', type: 'string'},\r\n {name: 'CodeHeadName', displayName: 'Code unique identifier', type: 'string'},\r\n {name: 'Description', displayName: 'Code description', type: 'string'},\r\n {name: 'Active', displayName: 'Active', type: 'bool'},\r\n {name: 'CodeType.name', displayName: 'Code Type', type: 'number'},\r\n // {name: 'Version', displayName: 'Version', type: 'string'},\r\n // {name: 'Lang', displayName: 'Language', type: 'string'}\r\n ]\r\n \r\n $scope.ResourceSearch = function(page){\r\n $scope.searchInitiated=false;\r\n $scope.paginationOptions.totalItemCount=0;\r\n if (page!=undefined) $scope.currentPage=page; \r\n $timeout(function(){\r\n $scope.searchInitiated=true;\r\n });\r\n };\r\n \r\n $scope.gotoMessageDef = function(){\r\n $state.go(\"app.navbar.codes.new\",{id:$scope.resourceId,returnState:{Label:'Return to notification definition',state:$state.current,params:{id:$scope.resourceId}}});\r\n }\r\n \r\n \r\n $scope.processTableAction = function(row,actionId)\r\n { // Needed by SmartTable - on EDIT ROW selection\r\n // debugger\r\n $scope.codeId = row.id\r\n $scope.codeSelected=true;\r\n $scope.selectedCode= row.id\r\n $scope.CodeHead = {}\r\n $scope.codesList = []\r\n $scope.codesDetails = []\r\n \r\n $scope.codeSelected=row.isSelected \r\n $scope.selectedCode = row.id;\r\n \r\n $scope.selectedCodeLang = row.Lang; \r\n $scope.CodeHead = {CodeName: row.CodeName,CodesHeadId: row.id,Description:row.Description,Lang:row.Lang};\r\n \r\n $scope.getCodesDetails($scope.selectedCode, $scope.CodeHead.CodeName)\r\n \r\n CodesService.CodesGetById($scope.selectedCode,lang)\r\n .then(function(data) { \r\n $scope.CodeHead = data.data;\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n }); \r\n };\r\n \r\n\r\n \r\n $scope.getCodesFiltered = function(pageNumber,pageSize,filter, lang) {// Needed by SmartTable\r\n let deferred = $q.defer();\r\n \r\n // if ($scope.data1 == undefined) \r\n // {\r\n CodesService.CodesGet(lang).then(function(data) {\r\n \r\n if (filter?.Name?.trim().length>0) //filter by Search query\r\n $scope.data1 = data.data.filter(item => item?.CodeName?.toLowerCase().includes(filter.Name?.toLowerCase()))\r\n else\r\n $scope.data1 = data.data;\r\n \r\n $scope.totalCount = $scope.data1.length\r\n $scope.paginationOptions.totalItemCount =$scope.data1.length\r\n let startAt = (pageNumber - 1) * pageSize \r\n let newData = $scope.data1.slice(startAt , Math.min( pageNumber * pageSize, $scope.totalCount) )\r\n //debugger\r\n deferred.resolve( {status: 200, data:newData, totalCount: $scope.totalCount});\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n })\r\n // } else deferred.resolve( $scope.data1);\r\n\r\n return deferred.promise; \r\n \r\n }\r\n \r\n \r\n $scope.getResourceDef = function (pageNumber,pageSize) {// Called by SmartTable\r\n \r\n let deferred = $q.defer(); \r\n $scope.resourceLoading=true;\r\n var filter=$scope.resource;\r\n //debugger //getResourceDef\r\n \r\n if (pageNumber==undefined) pageNumber = $scope.paginationOptions.pageNumber;\r\n if (pageSize==undefined) pageSize = $scope.paginationOptions.pageSize;\r\n if ($scope.totalCount>0){\r\n if (Math.ceil($scope.totalCount/pageSize) < pageSize) {\r\n let newPage = Math.ceil($scope.totalCount/pageSize);\r\n }\r\n }\r\n $scope.pageState.resource = $scope.resource;\r\n \r\n if ($scope.firstQuery) {\r\n $scope.pageState.currentPage = pageNumber;\r\n $scope.pageState.pageSize = pageSize; \r\n } else {\r\n if ($scope.pageState.rememberSearch) {\r\n if ($scope.currentPage == 1) {\r\n $scope.pageState.currentPage = $scope.currentPage;\r\n }\r\n pageNumber = $scope.pageState.currentPage;\r\n pageSize = $scope.pageState.pageSize;\r\n }\r\n }\r\n \r\n // $scope.ksm.executeAction(resourceListStateName,\"resourceListSearch\",$scope.pageState);\r\n \r\n $scope.getCodesFiltered (pageNumber,pageSize,filter,lang).then( \r\n function(response) {\r\n \r\n //debugger\r\n \r\n $scope.firstQuery=true;\r\n $scope.resourceTableData = response.data;\r\n let newData = {}\r\n newData.results = response.data;\r\n $scope.paginationOptions.totalItemCount = response.totalCount\r\n \r\n \r\n //$scope.nextPage = data.data.next;\r\n //$scope.previousPage = data.data.previous;\r\n \r\n $scope.currentPage=pageNumber;\r\n $scope.paginationOptions.numberOfPages = Math.ceil($scope.paginationOptions.totalItemCount/pageSize);\r\n \r\n newData.pageSize = pageSize;\r\n newData.numberOfPages = $scope.paginationOptions.numberOfPages;\r\n newData.columns = $scope.columnDefs;\r\n newData.count = response.totalCount\r\n deferred.resolve({data: newData });\r\n \r\n $scope.resourceLoading=false;\r\n }\r\n , function (error) {\r\n deferred.resolve( {data: newData });\r\n }\r\n ) \r\n \r\n \r\n return deferred.promise;\r\n }; // ---getResourceDEf ---\r\n \r\n \r\n CodesService.getCodesByName('languages',lang)\r\n\t\t.then( (data) => {\r\n //debugger\r\n $scope.codeLanguageList = data.data; });\r\n\t\t\r\n/*\t\t\r\n CodesService.getCodesByName('_CODE_TYPE_LIST_',lang)\r\n\t\t.then( (data) =>{ $scope.codeTypeList = data.data; });\r\n CodesService.getCodesByName('codestatus',lang)\r\n\t\t.then( (data) => { $scope.codeStatusList = data.data; });\r\n */\r\n \r\n \r\n \r\n $scope.setDirectiveFn = function(directiveFn) { // directiveFn == getCodesDetails()\r\n //debugger //setDirectiveFn \r\n $scope.directiveFn = directiveFn;\r\n };\r\n\r\n $scope.isCollapsedEditItem = false;\r\n \r\n \r\n $scope.editCodeItem = function(){\r\n \r\n //populate from grid\r\n $scope.codeItemHeader={Text: 'Edit code item',Type:'Edit'};\r\n if ($scope.CodesDetailLang.Lang==undefined) {\r\n //code\r\n $scope.CodesDetailLang.Lang=$scope.CodeHeadLang.Lang;\r\n }\r\n $scope.CodesDetailLang.CreatedBy=null;\r\n $scope.CodesDetailLang.ChangedBy=null;\r\n \r\n $scope.isCollapsedEditItem = !$scope.isCollapsedEditItem;\r\n \r\n }\r\n \r\n $scope.CodesDetail = {codesdetaillang_set: []};\r\n $scope.CodesDetailLang ={CodesDetailId:{}}; \r\n \r\n \r\n $scope.newCodeItem = function(){\r\n \r\n $scope.codeItemHeader={Text: 'New code item',Type:'New'};\r\n //populate from grid\r\n $scope.isCollapsedEditItem = !$scope.isCollapsedEditItem;\r\n $scope.CodesDetailLang.id=undefined;\r\n $scope.CodesDetailLang.Lang=$scope.CodeHeadLang.Lang;\r\n $scope.CodesDetailLang.CodesDetailId.CodesHeadId=$scope.CodeHeadLang.CodesHeadId;\r\n }\r\n \r\n $scope.editCodeLang = function(){\r\n //populate from grid\r\n $scope.isCollapsedEditLang = !$scope.isCollapsedEditLang \r\n }\r\n \r\n $scope.saveCodeLang = function(id) {\r\n //debugger\r\n $scope.isCollapsedEditLang = !$scope.isCollapsedEditLang\r\n \r\n CodesService.CodesPost($scope.CodeHead).then(function(data) { \r\n $scope.data1 = data.data;\r\n //$scope.gridOptions1.data = $scope.data1;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n }\r\n \r\n $scope.getListOfCodes = function(){\r\n\r\n var lang=$rootScope.globals.currentUser.lang;\r\n CodesService.CodesGet(lang).then(function(data) {\r\n \r\n $scope.data1 = data.data;\r\n // $scope.gridOptions1.data = $scope.data1;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n }); \r\n }\r\n \r\n \r\n $scope.getListOfCodes();\r\n \r\n \r\n \r\n $scope.saveCodeItem = function (isValid) {\r\n //debugger\r\n if (isValid) {\r\n //var codesStatus = CODES_LIST._CODE_STATUS_LIST_;\r\n $scope.CodesDetailLang.CodesDetailId.Status = 'Active';\r\n \r\n CodesService.addUpdateCodesDetails($scope.codeItemHeader.Type,$scope.CodesDetailLang).then(function(data) {\r\n \r\n MessagingService.addMessage(data.msg,'success');\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n };\r\n \r\n }\r\n \r\n \r\n \r\nexport function codesDetailsCtrl ($scope, $rootScope,uiGridConstants,GridsterService,MenuService,CodesService,KatalyoStateManager) {\r\n \r\n $scope.CTRLNAME='codesDetailsCtrl';\r\n //Get data from server\r\n var colDefs = [\r\n { name: 'id', displayName: 'ID', aggregationType: uiGridConstants.aggregationTypes.max,type: 'number', width:'5%',enableHiding: false, visible: true },\r\n { name: 'CodeName', displayName: 'Code name'},\r\n { name: 'Description', displayName: 'Code description' },\r\n { name: 'Status', displayName: 'Status'},\r\n { name: 'Lang', displayName: 'Language',cellFilter:\"getCodeByName: 'languages'\"},\r\n ];\r\n \r\n $scope.paginationOptions = {\r\n pageNumber: 1,\r\n pageSize: 10,\r\n sort: null\r\n };\r\n $scope.gsrvc = GridsterService\r\n $scope.gsrvc.resetBodyBgColor() \r\n\r\n\r\n $scope.menu_service = MenuService \r\n $scope.menu_service.clearSideMenu()\r\n\r\n let menuVisibility= $scope.ksm.addSubject(\"menuVisibility\",null);\r\n let menuVisibilityName = menuVisibility.subject.name;\r\n $scope.ksm = KatalyoStateManager \r\n $scope.ksm.executeAction(menuVisibilityName,menuVisibilityName+\"Changed\", {state:{sideMenu:false}});\r\n \r\n\r\n $scope.gridOptions = {\r\n columnDefs: colDefs,\r\n enableGridMenu: true,\r\n showGridFooter: true,\r\n showColumnFooter: true,\r\n enableRowSelection: true,\r\n multiSelect: false,\r\n enableHorizontalScrollbar : 0, \r\n enableVerticalScrollbar : 2,\r\n enableFiltering: true,\r\n enableRowHeaderSelection: true,\r\n enableColumnResizing: true,\r\n /* \r\n paginationPageSizes: [5, 10, 20, 50, 100],\r\n paginationPageSize: 5,\r\n enableSelectAll: false,\r\n \r\n \r\n \r\n enableCellEdit: false*/\r\n \r\n }\r\n \r\n\r\n $scope.gridOptions.onRegisterApi = function (gridApi) {\r\n //set gridApi on scope\r\n $scope.gridApi = gridApi;\r\n gridApi.selection.on.rowSelectionChanged($scope,function(row){\r\n //debugger\r\n $scope.codeSelected=row.isSelected\r\n });\r\n \r\n }\r\n \r\n $scope.getListOfCodes = function(){\r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n CodesService.CodesGet(lang)\r\n .then(function(data) { \r\n $scope.data = data.data;\r\n $scope.gridOptions.data = $scope.data;\r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n }\r\n \r\n getListOfCodes();\r\n \r\n \r\n \r\n }\r\n\r\n\r\nexport function codesNewCtrl ($scope, $rootScope,uiGridConstants,ProcessingService,MessagingService,GridsterService,MenuService,CodesService,KatalyoStateManager) {\r\n \r\n\t$scope.codeTypeList = [{id:1,name:'System'},{id:2,name:'User'}]\r\n $scope.CodeHead = { Active: true, CodesHeadLang:[], CodeType: $scope.codeTypeList[1] };\r\n $scope.CTRLNAME='codesNewCtrl';\r\n $scope.activity.activityMessage = ProcessingService.setActivityMsg('Processing request');\r\n\r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n $scope.gsrvc = GridsterService\r\n $scope.gsrvc.resetBodyBgColor() \r\n $scope.codesList=[]\r\n\r\n $scope.menu_service = MenuService \r\n $scope.menu_service.clearSideMenu()\r\n\r\n let menuVisibility= $scope.ksm.addSubject(\"menuVisibility\",null);\r\n let menuVisibilityName = menuVisibility.subject.name;\r\n $scope.ksm = KatalyoStateManager \r\n $scope.ksm.executeAction(menuVisibilityName,menuVisibilityName+\"Changed\", {state:{sideMenu:false}});\r\n \r\n \r\n $scope.codeTypeListDownloaded=true;\r\n \r\n $scope.saveNewCode = function (isValid) {\r\n\r\n //debugger\r\n if (isValid) {\r\n \r\n $scope.CodeHead.Version=1;\r\n \r\n CodesService.CodesPost($scope.CodeHead).then(function(data) { \r\n MessagingService.addMessage(data.data.msg,'success');\r\n $scope.CodeHead.id=data.data.data; \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n }); \r\n \r\n }\r\n };\r\n \r\n \r\n }\r\n\r\n\r\nexport function codesEditCtrl ($scope, $rootScope,uiGridConstants,ProcessingService,MessagingService,GridsterService,MenuService,CodesService,$stateParams,KatalyoStateManager) {\r\n \r\n $scope.CTRLNAME='codesEditCtrl';\r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n\r\n $scope.activity.activityMessage = ProcessingService.setActivityMsg('Processing request');\r\n $scope.gsrvc = GridsterService\r\n $scope.gsrvc.resetBodyBgColor() \r\n\r\n $scope.menu_service = MenuService \r\n $scope.menu_service.clearSideMenu()\r\n\r\n let menuVisibility= $scope.ksm.addSubject(\"menuVisibility\",null);\r\n let menuVisibilityName = menuVisibility.subject.name;\r\n $scope.ksm = KatalyoStateManager \r\n $scope.ksm.executeAction(menuVisibilityName,menuVisibilityName+\"Changed\", {state:{sideMenu:false}});\r\n \r\n $scope.codeTypeList = [{id:1,name:'System'},{id:2,name:'User'}]\r\n $scope.codeTypeListDownloaded=true;\r\n\r\n CodesService.getCodesByName('languages',lang).then(function (data) {\r\n $scope.codeLanguageList = data.data;\r\n });\r\n /*\r\n CodesService.getCodesByName('_CODE_TYPE_LIST_',lang).then(function (data) {\r\n $scope.codeTypeList = data.data;\r\n });\r\n \r\n CodesService.getCodesByName('codestatus',lang).then(function (data) {\r\n $scope.codeStatusList = data.data;\r\n });\r\n */\r\n $scope.codeId = $stateParams.id;\r\n \r\n $scope.getCode = function (codeid) {\r\n \r\n \r\n CodesService.CodesGetById($scope.codeId,lang).then(function(data) {\r\n \r\n $scope.CodeHead = data.data[0];\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n }); \r\n \r\n }\r\n \r\n $scope.getCode($scope.codeId);\r\n \r\n $scope.clear = function(event, select)\r\n \r\n {\r\n select.selected = null;\r\n \r\n }\r\n $scope.saveCode = function (isValid) {\r\n\r\n //debugger\r\n\r\n if (isValid) {\r\n $scope.activity.activityMessage = ProcessingService.setActivityMsg('Saving code '+$scope.CodeHead.CodesHeadLang[0].CodeName);\r\n \r\n CodesService.CodesPost($scope.CodeHead).then(function(data) {\r\n \r\n MessagingService.addMessage(data.data,'success');\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n }); \r\n \r\n \r\n }\r\n };\r\n \r\n \r\n }\r\n \r\n\r\n\r\nexport function userDetailsCtrl ($scope, $rootScope, $location, $timeout,AuthenticationService,ProcessingService,MessagingService,GridsterService,MenuService,CodesService,KatalyoStateManager) {\r\n \r\n $scope.CTRLNAME='userDetailsCtrl';\r\n var lang=$rootScope.globals.currentUser.lang; \r\n\tvar langCode = $rootScope.globals?.currentUser?.langObj?.Code ?? 'en-GB'\t\r\n $scope.strongPassRegex =\"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#%&<>;:,_/'\\\"\\$\\\\s\\*\\(\\)\\=\\?\\+\\^\\.\\-]).{8,}$\";\r\n\r\n $scope.gsrvc = GridsterService\r\n $scope.gsrvc.resetBodyBgColor() \r\n\r\n\r\n $scope.menu_service = MenuService \r\n $scope.menu_service.clearSideMenu()\r\n\r\n let menuVisibility= $scope.ksm.addSubject(\"menuVisibility\",null);\r\n let menuVisibilityName = menuVisibility.subject.name;\r\n $scope.ksm = KatalyoStateManager \r\n $scope.ksm.executeAction(menuVisibilityName,menuVisibilityName+\"Changed\", {state:{sideMenu:false}});\r\n \r\n\r\n $scope.pageLabels = indexJson[langCode]\r\n\t\r\n\t//debugger\r\n\r\n $scope.validate_pass2 = function (form) {\r\n \r\n if (form.pass1.$valid && $scope.pass1!=$scope.pass2) form.pass2.$setValidity('pass2',false);\r\n else if (form.pass1.$valid && $scope.pass1==$scope.pass2) form.pass2.$setValidity('pass2',true);\r\n else form.pass2.$setValidity('pass2',false);\r\n };\r\n \r\n $scope.user = $rootScope.globals.currentUser;\r\n\r\n $scope.change_password = function() {\r\n \r\n AuthenticationService.ChangePasswordWithAuth($scope.currentPass,$scope.pass1).then(function(response) {\r\n \r\n \r\n if (response.success)\r\n {\r\n MessagingService.addMessage(response.data.msg,'success');\r\n AuthenticationService.UpdateAuthToken(response.data.token);\r\n }else\r\n {\r\n MessagingService.addMessage(response.message,'error');\r\n }\r\n },function(error){\r\n MessagingService.addMessage(error.message,'error');\r\n\r\n })\r\n\r\n };\r\n \r\n \r\n}\r\n\r\nexport function usersDefinitionCtrl ($scope, $rootScope, $timeout,SettingsService, UserService, AuthenticationService, ResourcesDataService, MessagingService,GridsterService,MenuService,CodesService,KatalyoStateManager) {\r\n \r\n $scope.CTRLNAME='usersDefinitionCtrl';\r\n\t$scope.localVars = {}\r\n var lang=$rootScope.globals.currentUser.lang; \r\n\tvar langCode = $rootScope.globals?.currentUser?.langObj?.Code ?? 'en-GB'\r\n\tif ($rootScope.globals?.environments) \r\n\t\t\t$rootScope.globals.environments.length=0 //must reset this for watcher\r\n\t\r\n $scope.inviteUserObj={}\r\n\t\r\n\t$scope.selectedUserCopy={}\r\n \r\n\t$scope.pageLabels = indexJson[langCode]\r\n\t\r\n $scope.gsrvc = GridsterService\r\n $scope.gsrvc.resetBodyBgColor() \r\n\r\n\r\n// advancedUserPropList.value = getCurrentUser.value.environments[applicationStore.currentEnv]?.Parameters?.AdvancedUserPropertiesDef\r\n\r\n\r\n $scope.menu_service = MenuService \r\n $scope.menu_service.clearSideMenu()\r\n\r\n let menuVisibility= $scope.ksm.addSubject(\"menuVisibility\",null);\r\n let menuVisibilityName = menuVisibility.subject.name;\r\n \r\n $scope.ksm = KatalyoStateManager \r\n $scope.ksm.executeAction(menuVisibilityName,menuVisibilityName+\"Changed\", {state:{sideMenu:false}});\r\n\t$scope.datasetFieldsList={}\r\n\t\r\n\t\t\t\r\n\t$scope.getOrgSchemas = function()\r\n\t{\r\n\t\tlet caching=true\r\n\t\tif ($rootScope?.globals?.environments) \r\n\t\t\t\t\treturn $rootScope.globals.environments\r\n\r\n\t\r\n\r\n\t\tif ($scope?.environments == undefined)\r\n\t\t\t\r\n\t\t AuthenticationService.getOrgSchemas($rootScope.globals.currentUser?.organisation.id, caching).then((response) => {\r\n\t\t\t\t\t//debugger\r\n\t\t\t\t\tif (response.data) \r\n\t\t\t\t\t\t\t$rootScope.globals.environments = response.data.reduce((acc, obj) => {\r\n\t\t\t\t\t\t\t\t\t\t acc[obj.id.toString()] = obj;\r\n\t\t\t\t\t\t\t\t\t\t return acc;\r\n\t\t\t\t\t\t\t}, {});\t\t\t \t\t \t \r\n\t\t\t })\r\n\t}\r\n\t\r\n\t$scope.onSelectResourceCallback = function(dataset, model){\r\n\t\t//debugger\r\n\t\tlet item=dataset.selectedItem\r\n\t\titem['selectedField']={}\r\n\t\titem['resourceId']=item['id']\r\n\t\t//delete item['id']\r\n\t\titem['UserIdField']=\"\"\r\n\t\tlet pos = $scope.resourceList.map(function(e) { return e.id }).indexOf(item.resourceId);\r\n\t\tdataset.selectedItem= $scope.resourceList[pos]\r\n\t\tdataset.selectedField = {}\r\n\t\t\t\t\t\r\n\t\tResourcesDataService.getResourceFields (item.resourceId ,lang ).then( (resp)=> { \r\n\t\t\t\t\tresp.data = resp.data.filter ( (item) => item.generictype==\"user\")\r\n\t\t\t\t $scope.datasetFieldsList[item.resourceId] = resp.data\t\t\t\t\t\r\n\t\t})\t\t\t\t\t\t\t\r\n\t}\r\n\t\r\n\r\n\r\n $scope.getOrganisationInfo = function () {\r\n SettingsService.getOrganisationInfo($scope.organisationId).then(function(data) { \r\n $scope.organisation = data.data; \r\n },function(error){ \r\n MessagingService.addMessage(error.data.msg,'error');\r\n });\r\n \r\n };\r\n\t\r\n\t\t \r\n\t\t$scope.saveAdvancedUserParams = async function() \r\n\t\t{\r\n\t\t\t//debugger\r\n\t\t\tlet resp = await SettingsService.getOrganisationInfo($rootScope.globals.currentUser?.organisation.id)\r\n\t\t let org = resp.data; \r\n\t\t\tif (org.Parameters==undefined) org.Parameters={}\r\n\t\t\t//let org = JSON.parse(JSON.stringify($rootScope.globals.currentUser?.organisation)) //CLONE\r\n\t\t\tlet cleanList = []\r\n\t\t\t$scope.advancedUserPropList.forEach( (item) => {\r\n\t\t\t\tif (item?.selectedField?.id && item?.selectedItem?.id && !item?.isDeleted) {\r\n\t\t\t\t\tlet UserIdField = \"Field\" + item.selectedField.id + \"_\" + org.id\r\n\t\t\t\t\tcleanList.push( \r\n\t\t\t\t\t{'UserIdField': UserIdField, \r\n\t\t\t\t\t'resourceId':item.selectedItem.id, \r\n\t\t\t\t\t'required': item.required,\r\n\t\t\t\t\t'advancedUserPropErrorMessage': item.advancedUserPropErrorMessage, \r\n\t\t\t\t\t'advancedUserPropErrorPage' : item.advancedUserPropErrorPage\r\n\t\t\t\t\t})\r\n\t\t\t\t}\t\t\t\t\t\r\n\t\t\t})\r\n\t\t\t\r\n\t\t\tif (cleanList.length==0) {\r\n\t\t\t\tMessagingService.addMessage('No data to save!','info');\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\torg.Parameters.AdvancedUserPropertiesDef = cleanList //Alternative way. 2.param in fun.call can be obsolete\r\n\r\n\t\t SettingsService.saveOrganisationInfo (org).then(\r\n\t\t\t\tfunction(data) { \r\n\t\t\t\t MessagingService.addMessage('Saved!','success'); \r\n\t\t\t\t},function(error){ \r\n\t\t\t\t MessagingService.addMessage(error.message,'error');\r\n\t\t });\r\n\t\t}\r\n\t\r\n\t\r\n\t$scope.removeDataset = function(item, index) {\r\n\t\titem.isDeleted=true\t\r\n\t\t\r\n\t}\r\n\t\r\n\t$scope.addDataset = function(){\r\n\t\t\r\n\t\tif (!$scope.advancedUserPropList) $scope.advancedUserPropList=[]\r\n\t\t$scope.advancedUserPropList.push( {\r\n\t\t\tselectedField: {},\r\n\t\t\tselectedItem: {}\r\n\t\t})\r\n\t}\r\n\t\r\n\t$scope.getOrgSchemas()\r\n\t\r\n\t$scope.$watch(function() { //waiting for Menu controller to fill-in globals\r\n\t\t return $rootScope.globals.environments}, \r\n\t\t async function( newValue, oldValue) {\r\n\t\t\t \r\n\t\t\t // advancedUserPropList.value = getCurrentUser.value.environments[applicationStore.currentEnv]?.Parameters?.AdvancedUserPropertiesDef\r\n\r\n\t\t\t //currentUser.organisation.Parameters.AdvancedUserPropertiesDef[0].UserIdField\r\n\t\t\t\tif (newValue && !$scope.advancedUserPropList ) {\r\n\t\t\t\t\t\t//if (newValue && oldValue && Object.keys(newValue).length == Object.keys(oldValue).length ) return //if no changes in environments\r\n\t\t\t\t\t\t$scope.resourceList = await $scope.getResourcesList()\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t//only if newData exists and advancedUserPropList is empty\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t//$scope.advancedUserPropList = $rootScope.globals.environments[$rootScope.globals.currentEnv]?.Parameters?.AdvancedUserPropertiesDef\r\n\t\t\t\t\t\t$scope.advancedUserPropList = $rootScope.globals.currentUser.organisation.Parameters.AdvancedUserPropertiesDef\r\n\r\n\t\t\t\t\t\tif ($scope.advancedUserPropList) \r\n\t\t\t\t\t\t\t\t$scope.advancedUserPropList.forEach ( (item) => \r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlet pos = $scope.resourceList.map(function(e) { return e.id }).indexOf(item.resourceId);\r\n\t\t\t\t\t\t\t\t\titem.selectedItem = $scope.resourceList[pos]\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tResourcesDataService.getResourceFields (item.resourceId ,lang )\r\n\t\t\t\t\t\t\t\t\t.then( (resp)=> {\r\n\t\t\t\t\t\t\t\t\t\t\t\t //debugger\r\n\t\t\t\t\t\t\t\t\t\t\t\t resp.data = resp.data.filter ( (item) => item.generictype==\"user\")\r\n\t\t\t\t\t\t\t\t\t\t\t\t $scope.datasetFieldsList[item.resourceId] = resp.data\r\n\t\t\t\t\t\t\t\t\t\t\t\t let id = Number(item.UserIdField.substring(5).split(\"_\")[0])\r\n\t\t\t\t\t\t\t\t\t\t\t\t let pos = resp.data.map(function(e) { return e.id }).indexOf(id);\r\n\t\t\t\t\t\t\t\t\t\t\t\t if (pos>=0) item.selectedField = resp.data[pos]\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t});\r\n\r\n\t\r\n\t$scope.prepareSelected = function (){\r\n\t\t //TODO\r\n\t}\r\n\r\n CodesService.getCodesByName('languages',lang).then(function (data) {\r\n $scope.codeLanguageList = data.data;\r\n \r\n });\r\n \r\n\t\t\r\n\t// POPUNI LISTU DEFINICIJA OD RESURSA (RESOURCES LIST)\r\n $scope.getResourcesList = async function() \r\n\t{\r\n if ($scope.resourceList==undefined) $scope.resourceList=[];\r\n return ResourcesDataService.getResourceDefListByType(lang,'dataset').then(\r\n function(data) { \r\n return data.data; \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n\t\r\n\t\r\n\r\n $scope.getGroups = function ()\r\n\t{\r\n UserService.getUsersGroups('groups').then(function(data){\r\n $scope.groupList = data.data;\r\n $scope.groupsDownloaded = true;\r\n\t\t\t\t});\r\n\r\n };\r\n\t\t\r\n $scope.getGroups();\r\n\t\t\r\n $scope.editUser = function (user,index) { \r\n $scope.selectedUser = user \r\n\t\t\t$scope.selectedUserCopy[index] = angular.copy(user); \r\n $scope.newUser=false;\r\n $scope.showUserDetails=true;\r\n $scope.selectedIndex=index;\r\n };\r\n\t\t\r\n\t\t\r\n \r\n $scope.showUserDetailsFn = function (show) { \r\n //debugger\r\n\t\t\tif (show==false && $scope.selectedIndex >= 0) {\r\n\t\t\t\t$scope.users[$scope.selectedIndex] = $scope.selectedUserCopy[$scope.selectedIndex] \r\n\t\t\t}\r\n\t\t\r\n\t\t\t$scope.showUserDetails=show;\r\n $scope.newUser = null;\r\n $scope.selectedUser = null;\r\n $scope.actionType=null\r\n\t\t\t$scope.selectedIndex = null\r\n };\r\n\r\n \r\n $scope.getUsersExtended = function () {\r\n UserService.getUsersExtended().then(function(data){\r\n $scope.users = data.data;\r\n $scope.usersLoaded=true\r\n\t\t\t\t});\r\n\r\n };\r\n\t\t\t\t//$scope.getUsers();\r\n $scope.getUsersExtended();\r\n \r\n $scope.newUserFunc = function (form) {\r\n $scope.newUser=true;\r\n $scope.actionType=1\r\n $scope.showUserDetails=true;\r\n $scope.selectedUser = {'UserId':null,'Lang':null};\r\n if (form!=undefined)\r\n {\r\n form.$setPristine();\r\n if (form.username!=undefined) form.username.$setUntouched();\r\n //form.password.$setUntouched();\r\n if (form.first_name!=undefined) form.first_name.$setUntouched();\r\n if (form.last_name!=undefined) form.last_name.$setUntouched();\r\n if (form.email!=undefined) form.email.$setUntouched();\r\n if (form.lang!=undefined) form.lang.$setUntouched();\r\n }\r\n };\r\n\r\n $scope.inviteUserFunc = function (form) {\r\n $scope.inviteUser=true;\r\n $scope.actionType=0\r\n \r\n \r\n if (form!=undefined)\r\n {\r\n form.$setPristine();\r\n if (form.email!=undefined) form.email.$setUntouched();\r\n }\r\n };\r\n $scope.sendInvitation = function (form) {\r\n form.$setSubmitted()\r\n if (form.email.$valid && form.groups.$valid)\r\n {\r\n UserService.JoinInvitaton($scope.inviteUserObj).then(function(data){\r\n MessagingService.addMessage(data.msg,'success');\r\n },\r\n function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n\r\n });\r\n }else MessagingService.addMessage('Please enter valid e-mail!','warning');\r\n };\r\n \r\n $scope.ResetPassword = function (user_id) {\r\n UserService.ResetPassword(user_id).then(function(data){\r\n $scope.selectedUser.resetPasswordRef = data.data.digest;\r\n MessagingService.addMessage(data.data.msg,'success');\r\n },\r\n function(error){\r\n MessagingService.addMessage(error.data.msg,'error');\r\n\r\n });\r\n\r\n };\r\n\r\n $scope.CopyResetPasswordLink = function () {\r\n \r\n \r\n let pass_reset_link = window.location.origin+\"/changepass/\"+$scope.selectedUser.resetPasswordRef\r\n\r\n $scope.copyPassResetLink = true;\r\n\r\n navigator.clipboard.writeText(pass_reset_link).then( \r\n () => {\r\n $timeout(function(){$scope.copyPassResetLink = false;},1000);\r\n },\r\n () => { /* clipboard write failed */\r\n MessagingService.addMessage('Copy to clipboard failed','error');\r\n $timeout(function(){$scope.copyPassResetLink = false;},1000);\r\n });\r\n \r\n\r\n };\r\n\r\n $scope.saveUser = function (isValid) { \r\n if (isValid) \r\n UserService.SaveUser($scope.selectedUser).then(\r\n function(data) { \r\n MessagingService.addMessage(data.data.msg,'success');\r\n $scope.selectedUser=data.data.user;\r\n \r\n if ($scope.newUser) { \r\n $scope.users.push($scope.selectedUser);\r\n $scope.newUser=false;\r\n } else\r\n $scope.users[$scope.selectedIndex] = $scope.selectedUser;\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.data.msg,'error');\r\n }); \r\n \r\n };\r\n \r\n \r\n }\r\n\r\nexport function groupsCtrl ($scope, $rootScope, $timeout,UserService,MessagingService,GridsterService,MenuService,CodesService,KatalyoStateManager) {\r\n \r\n var lang=$rootScope.globals.currentUser.lang; \r\n $scope.CTRLNAME='groupsCtrl';\r\n \t \r\n \r\n\t//debugger\r\n $scope.gsrvc = GridsterService\r\n $scope.gsrvc.resetBodyBgColor() \r\n\r\n\r\n $scope.menu_service = MenuService \r\n $scope.menu_service.clearSideMenu()\r\n\r\n let menuVisibility= $scope.ksm.addSubject(\"menuVisibility\",null);\r\n let menuVisibilityName = menuVisibility.subject.name;\r\n $scope.ksm = KatalyoStateManager \r\n $scope.ksm.executeAction(menuVisibilityName,menuVisibilityName+\"Changed\", {state:{sideMenu:false}});\r\n \r\n\r\n /*\r\n CodesService.getCodesByName('languages',lang).then(function (data) {\r\n $scope.codeLanguageList = data.data;\r\n \r\n });\r\n */ \r\n $scope.newGroup = {GroupId:null};\r\n $scope.editGroup = function (group,index) { \r\n //$scope.selectedGroup = angular.copy(group);\r\n\t\t $scope.selectedGroup = group\r\n $scope.isShowNewGroup=false;\r\n\t\t$scope.selectedIndex=index;\r\n \t\t};\r\n\r\n $scope.deselectGroup = function () { \r\n $scope.newGroup = {GroupId:null}\r\n $scope.selectedGroup = null\r\n $scope.isShowNewGroup=false\r\n\r\n\t\t};\r\n \r\n $scope.showNewGroup = function (form) {\r\n \r\n if (form!=undefined)\r\n {\r\n form.$setPristine();\r\n if (form.groupName!=undefined) form.groupName.$setUntouched();\r\n }\r\n $scope.isShowNewGroup=true;\r\n }\r\n \r\n $scope.getUsers = function () {\r\n UserService.getUsersGroups('users').then(function(data){\r\n $scope.userList = data.data;\r\n\t\t\t\t});\r\n };\r\n $scope.groupsLoaded=false\r\n $scope.getGroupsExtended = function () {\r\n\r\n UserService.getGroupsExtended().then(function(data){\r\n $scope.groups = data.data;\r\n $scope.groupsLoaded=true\r\n\r\n\r\n\t\t\t\t},\r\n function(error){\r\n let msg\r\n if (error.msg || error.data?.msg){\r\n\r\n if (error.msg) msg = error.msg\r\n if (error.data?.msg) msg = error.data.msg\r\n }else msg = error\r\n\r\n MessagingService.addMessage(error.data.msg,'error');\r\n });\r\n\r\n };\r\n \r\n\r\n \r\n \r\n //Execute this\r\n $scope.getUsers();\r\n $scope.getGroupsExtended(); \r\n\r\n \r\n \r\n $scope.saveGroup = function (selectedGroup,isValid) {\r\n \r\n if (isValid) {\r\n \r\n UserService.SaveGroup(selectedGroup).then(function(data) {\r\n \r\n \r\n MessagingService.addMessage(data.data.msg,'success');\r\n $scope.selectedGroup=data.data.group;\r\n if (selectedGroup.id == null)\r\n {\r\n selectedGroup.GroupId.id=$scope.selectedGroup.id\r\n selectedGroup.id=$scope.selectedGroup?.eid\r\n $scope.groups.push(selectedGroup);\r\n }else{\r\n $scope.groups[$scope.selectedIndex] = selectedGroup\r\n }\r\n \r\n $scope.deselectGroup();\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.data.msg,'error');\r\n }); \r\n \r\n } \r\n \r\n \r\n };\r\n \r\n \r\n }\r\n\r\n\r\n\r\nexport function usersSecurityCtrl ($scope, $rootScope, $timeout,UserService,MessagingService,GridsterService,CodesService,KatalyoStateManager,ResourcesDataService) \r\n{\r\n \r\n $scope.CTRLNAME='usersSecurityCtrl';\r\n var lang=$rootScope.globals.currentUser.lang; \r\n\tvar langCode = $rootScope.globals?.currentUser?.langObj?.Code ?? 'en-GB'\t\r\n \r\n //$scope.label =dict[lang]\r\n\t$scope.label = indexJson[langCode]\r\n\t$scope.userFilter=''\r\n\t$scope.groupFilter=''\r\n\t$scope.groupsecurityDict={}\r\n\t$scope.groupsecurityList=[]\r\n\t$scope.usersecurityDict={}\r\n\t$scope.usersecurityList=[]\r\n\r\n $scope.gsrvc = GridsterService\r\n $scope.gsrvc.resetBodyBgColor() \r\n\r\n\r\n let menuVisibility= $scope.ksm.addSubject(\"menuVisibility\",null);\r\n let menuVisibilityName = menuVisibility.subject.name;\r\n \r\n $scope.ksm = KatalyoStateManager \r\n $scope.ksm.executeAction(menuVisibilityName,menuVisibilityName+\"Changed\", {state:{sideMenu:false}});\r\n\r\n \r\n $scope.getGroups = async function () \r\n\t{\r\n\t\t $scope.groupsDownloaded = false;\r\n let data = await UserService.getUsersGroups('groups')\r\n\t\t$scope.groupList = data.data\r\n\t\t$scope.groupName = {}\r\n\t\t $scope.groupList.forEach( item => {\r\n\t\t\t\t $scope.groupName[item.id] = item.name\r\n\t\t})\r\n\r\n\t\t//$scope.getGroupsSecurity()\r\n };\r\n\t\r\n\t $scope.getUsers= async function () \r\n{\r\n\t\t $scope.usersDownloaded = false;\r\n let data = await UserService.getUsersGroups('users')\r\n\t\t$scope.userList = data.data;\r\n\t\t$scope.userName = {}\r\n\t\t data.data.forEach( item => {\r\n\t\t\t\t $scope.userName[item.id] = item.name\r\n\t\t\t })\r\n\t\r\n\t\t// $scope.getUsersSecurity()\r\n\r\n };\r\n\t\t\t\t \r\n\t\r\n\t\r\n\t $scope.saveUsersGroupsSecurity= function (record,index) { \r\n\r\n\t\t UserService.saveGroupsSecurity(record).then(function(data){\r\n\t\t\t\r\n\t\t })\r\n };\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t$scope.changedFilter = function() {\r\n\r\n\t\t\t\t$scope.listReady=false\r\n\t\t\t\t$scope.groupsecurityList.length=0\r\n\t\t\t\tfor (const [key, item] of Object.entries($scope.groupsecurityDict)) {\r\n\t\t\t\t\t if (item && item.resourcedef_name.includes($scope.userFilter)) $scope.groupsecurityList.push(item)\r\n\t\t\t\t }\r\n\t\t\r\n\t\t\t\t$timeout( function(){$scope.listReady=true} )\r\n\r\n\t\t}\r\n\t\t\r\n\t\t\t\r\n\t$scope.getGroupsSecurityDict = async function () {\r\n let data = await UserService.getGroupsSecurity()\r\n\r\n\t\t //first create dictionary with resources having each \"access\" list of group objects\r\n\t\t data.data.forEach( item => {\r\n\t\t\t if ( $scope.groupName?.[item.group_id]) \r\n\t\t\t\t\titem['group_name'] = $scope.groupName?.[item.group_id]\r\n\t\t\t if ( $scope.groupsecurityDict[item.resourcedefuid] == undefined) //first time\r\n\t\t\t\t\t$scope.groupsecurityDict[item.resourcedefuid] = {\r\n\t\t\t\t\t\t\tresourcedefuid: item.resourcedefuid,\r\n\t\t\t\t\t\t\tversion: item.version, \r\n\t\t\t\t\t\t\tresourcedef_name: item.resourcedef_name, \r\n\t\t\t\t\t\t\tgroups: [{id: item.group_id, name: item.group_name}] ,\r\n\t\t\t\t\t\t\tusers: []\r\n\t\t\t\t\t\t\t}\r\n\t\t\t else \r\n\t\t\t\t $scope.groupsecurityDict[item.resourcedefuid].groups.push({id: item.group_id, name: item.group_name})\r\n\t\t })\r\n\t\t \r\n\t\t \r\n\t\t //$scope.changedFilter()\r\n\t\t //$scope.groupsDownloaded = true;\t \r\n\t\r\n };\r\n\t\r\n\t\r\n\t\t$scope.getUsersSecurityDict = async function () {\r\n let data = await UserService.getUsersSecurity()\r\n\r\n\t\t //first create dictionary with resources having each \"access\" list of group objects\r\n\t\t data.data.forEach( item => {\r\n\t\t\t if ( $scope.userName?.[item.user_id]) \r\n\t\t\t\t\titem['user_name'] = $scope.userName?.[item.user_id]\r\n\t\t\t if ( $scope.groupsecurityDict[item.resourcedefuid] == undefined) //only relevant data is kept\r\n\t\t\t\t \r\n\t\t\t\t\t$scope.groupsecurityDict[item.resourcedefuid] = {\r\n\t\t\t\t\t\t\tresourcedefuid: item.resourcedefuid,\r\n\t\t\t\t\t\t\tversion: item.version, \r\n\t\t\t\t\t\t\tresourcedef_name: item.resourcedef_name, \r\n\t\t\t\t\t\t\tusers: [{id: item.user_id, name: item.user_name}] ,\r\n\t\t\t\t\t\t\tgroups: []\r\n\t\t\t\t\t\t\t}\r\n\t\t\t else \r\n\t\t\t\t $scope.groupsecurityDict[item.resourcedefuid].users.push({id: item.user_id, name: item.user_name})\r\n\t\t })\r\n\t\t \r\n\t\t //$scope.changedFilter()\r\n\t\t // $scope.usersDownloaded = true;\t \r\n };\r\n\t\r\n\t// Promise chaining\r\n\t$scope.getGroups().then( (data) => \r\n\t$scope.getUsers()).then( (data) =>\r\n\t$scope.getUsersSecurityDict()).then( (data) =>\r\n\t$scope.getGroupsSecurityDict()).then ((data) => {\r\n\t\t//debugger\r\n\t\t //convert dict to list \r\n\t\t for (const item in $scope.groupsecurityDict) {\r\n\t\t\t $scope.groupsecurityList.push($scope.groupsecurityDict[item])\r\n\t\t }\r\n\t\t $scope.changedFilter()\r\n\t\t $scope.groupsDownloaded = true;\t\r\n\t\r\n\t})\r\n \r\n \r\n}\r\n\r\nexport function organisationCtrl ($scope, $rootScope, $location, $timeout,SettingsService,CodesService,GridsterService,MessagingService,KatalyoStateManager) {\r\n \r\n \r\n $scope.CTRLNAME='organisationCtrl';\r\n $scope.organisationId = $rootScope.globals.currentUser.organisation.id;\r\n var lang = $rootScope.globals.currentUser.langObj.id;\r\n //get all codes\r\n \r\n //status\r\n /* CodesService.getCodesByName('codestatus',lang).then(function (data) {\r\n $scope.statusList = data.data;\r\n });\r\n */ \r\n $scope.gsrvc = GridsterService\r\n $scope.gsrvc.resetBodyBgColor()\r\n $scope.showTab = 1;\r\n \r\n let menuVisibility= $scope.ksm.addSubject(\"menuVisibility\",null);\r\n let menuVisibilityName = menuVisibility.subject.name;\r\n $scope.ksm = KatalyoStateManager \r\n $scope.ksm.executeAction(menuVisibilityName,menuVisibilityName+\"Changed\", {state:{sideMenu:false}});\r\n \r\n $scope.getOrganisationInfo = function () {\r\n \r\n SettingsService.getOrganisationInfo($scope.organisationId).then(function(data) {\r\n \r\n $scope.organisation = data.data;\r\n\r\n $scope.getCredits('org')\r\n //country\r\n /* CodesService.getCodesByName('countries',lang).then(function (data) {\r\n $scope.countryList = data.data;\r\n $scope.countryList.unshift({id:null});\r\n });\r\n \r\n //industry\r\n CodesService.getCodesByName('industry',lang).then(function (data) {\r\n $scope.industryList = data.data;\r\n $scope.industryList.unshift({id:null});\r\n });\r\n */ \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.data.msg,'error');\r\n });\r\n \r\n };\r\n\r\n $scope.getCredits = function (balanceType) {\r\n \r\n SettingsService.getCredits(balanceType).then(function(data) {\r\n \r\n $scope.balances = data.data?.balances;\r\n \r\n $scope.trans = data.data?.trans;\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.data.msg,'error');\r\n });\r\n \r\n };\r\n $scope.formatNumber = function(number)\r\n {\r\n return new Intl.NumberFormat().format(number)\r\n }\r\n $scope.GenerateApiKeys = function () {\r\n let api_id;\r\n if ($scope.organisation.ApiUser == null) api_id = $scope.organisation.ApiUser;\r\n else api_id = $scope.organisation.ApiUser.username;\r\n SettingsService.GenerateApiKeys(api_id).then(function(data) {\r\n \r\n $scope.api_id = data.data.api_id;\r\n $scope.api_key = data.data.api_key;\r\n \r\n MessagingService.addMessage(data.data.msg,'success');\r\n \r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n };\r\n\r\n $scope.getOrganisationInfo();\r\n \r\n $scope.saveOrganisation = function (isValid) {\r\n \r\n if (isValid) {\r\n \r\n \r\n SettingsService.saveOrganisationInfo($scope.organisation).then(function(data) {\r\n \r\n MessagingService.addMessage(data?.msg,'success');\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error?.msg,'error');\r\n });\r\n }\r\n\r\n }\r\n \r\n};","'use strict';\r\n\r\n/*\r\nimport KatalyoCtrls from '../../0001_index/angularJS/katalyoCtrls.js';\r\nvar moduleName='tasksCtrls';\r\nexport default moduleName;\r\n\r\nvar module = angular.module('KatalyoCtrls',KatalyoCtrls);\r\n*/\r\n\r\nexport default function taskListCtrl ($scope, $rootScope, AuthenticationService,ResourcesDataService,uiGridConstants,MessagingService,$timeout) {\r\n \r\n $scope.CRTRLNAME='taskListCtrl';\r\n \r\n //Get data from server\r\n $scope.gridOptions = {\r\n columnDefs: [\r\n { name: 'id', displayName: 'ID', type: 'number', width:'5%',enableHiding: false, visible: true },\r\n { name: 'resourcedeflang_set[0].Name', displayName: 'Task name'},\r\n { name: 'resourcedeflang_set[0].Subject', displayName: 'Task subject' },\r\n { name: 'resourcedeflang_set[0].Description', displayName: 'Task description' },\r\n // { name: 'resourcedeflang_set[0].Lang.name', displayName: 'Language'},\r\n // { name: 'ResourceType.CodesDetailLang[0].Value', displayName: 'Task type' },\r\n // { name: 'CreatedDateTime', displayName: 'Date created',enableHiding: false,type: 'date', cellFilter: 'date:\\'dd.MM.yyyy HH:MM:ss:sss\\'' },\r\n // { name: 'CreatedBy.name', displayName: 'Created by'},\r\n { name: 'Status.CodesDetailLang[0].Value', displayName: 'Status'},\r\n ],\r\n enableGridMenu: true,\r\n showGridFooter: true,\r\n showColumnFooter: true, \r\n multiSelect: false,\r\n enableHorizontalScrollbar : 0, \r\n enableVerticalScrollbar : 2,\r\n enableFiltering: true,\r\n enableRowHeaderSelection: false,\r\n enableColumnResizing: true,\r\n useExternalPagination: true,\r\n paginationPageSizes: [5, 10, 20, 50, 100,200,500,1000],\r\n enablePaginationControls: false,\r\n \r\n };\r\n \r\n var paginationOptions = {\r\n pageNumber: 1,\r\n pageSize: 10,\r\n sort: null\r\n }; \r\n\r\n\r\n $scope.gridOptions.onRegisterApi = function (gridApi) {\r\n //set gridApi on scope\r\n $scope.gridApi = gridApi;\r\n \r\n gridApi.selection.on.rowSelectionChanged($scope,function(row){\r\n \r\n $scope.taskSelected=row.isSelected;\r\n $scope.selectedTask = row.entity.id;\r\n $scope.selectedTaskObject = row.entity;\r\n });\r\n }\r\n \r\n \r\n \r\n $scope.getTaskDef = function(url_next,url_prev,new_page,page_size){\r\n \r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n if (new_page==undefined) new_page = paginationOptions.pageNumber;\r\n \r\n if (page_size==undefined) page_size = paginationOptions.pageSize;\r\n \r\n if (Math.ceil($scope.totalCount/page_size)0) {\r\n \r\n $scope.taskDefinition = data.data[0];\r\n $scope.taskDefinition.form_type=$scope.formType;\r\n $scope.taskDefinition.form_definition=true;\r\n if (!$scope.taskDefinition.InfiniteTask)\r\n {\r\n //get Task Outcomes \r\n\t\t\t\t\t\t\t\t\t\tif ($scope.taskDefinition.TaskOutcomeHeadId == null || $scope.taskDefinition.TaskOutcomeHeadId==undefined)\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t $scope.taskDefinition.TaskOutcomeHeadId=0; //vidjeti da li ovo treba MIGOR\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t//TaskDataService.GetTaskCodesActionsById($scope.resourceId,lang,$scope.taskDefinition.TaskOutcomeHeadId).then(function(data) {\r\n\t\t\t\t\t\t\t\t\t\tTaskDataService.GetTaskOutcomes($scope.resourceId,$scope.taskDefinition.TaskOutcomeHeadId,lang).then(function(data) { \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t $scope.outcomes.outcomeCodesDetails = data.data;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t //prikazi defaultno detalje od prvog\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t if ($scope.outcomes.outcomeCodesDetails.length>0) $scope.clickedOutcome = $scope.outcomes.outcomeCodesDetails[0];\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},function(error){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t MessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t });\r\n }\r\n \r\n } \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n \r\n };\r\n \r\n \r\n $scope.getResourceForm = function (afterSave,afterSaveMsg,refresh) {\r\n ResourcesDataService.getResourceForm($scope.resourceId,$scope.formType,lang,refresh).then(function(data) {\r\n \r\n if (data.data.widgets.length>0)\r\n {\r\n $scope.dashboard.widgets.layout=data.data.widgets;\r\n }\r\n $scope.resourceDefinition= data.data.resourceDefinition;\r\n $scope.resourceDefinition.formParams={formViewType:2,formLocked:false};\r\n $scope.gsrvc.setFormLockStatus($scope.resourceDefinition.formParams);\r\n $scope.gsrvc.setFormViewType($scope.resourceDefinition.formParams.formViewType);\r\n \r\n \r\n $scope.importantFields = $scope.localVarsWidget.getFields($scope.localVarsWidget.dashboard.widgets.layout, ['Required', 'ReadOnly']); \r\n \r\n //$scope.dashboard.widgets = GridsterService.ProcessWidgets($scope.dashboard.widgetsOriginal);\r\n $scope.formLoaded=true;\r\n if (afterSave)\r\n {\r\n MessagingService.addMessage(afterSaveMsg,'success');\r\n \r\n }\r\n },function(error){\r\n \r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n \r\n });\r\n };\r\n \r\n \r\n //**********************************************************\r\n\t// SAVE TASK FORM DEFINITION\r\n\t//**********************************************************\r\n\r\n $scope.saveTaskForm = function () {\r\n //if (isValid) {\r\n //code\r\n \r\n $scope.activity.activityMessage = ProcessingService.setActivityMsg('Saving task form for '+$scope.resourceId);\r\n $scope.formLoaded=false; \r\n ResourcesDataService.saveResourceForm($scope.dashboard.widgets.layout,$scope.resourceId,$scope.formType).then(function(data) {\r\n \r\n\r\n $scope.formLoaded=true;\r\n // $scope.dashboard.widgets = data.data;\r\n $scope.getResourceForm(true,data.msg,true);\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n \r\n \r\n // }\r\n };\r\n \r\n //**********************************************************\r\n\t// SAVE TASK BUTTONS\r\n\t//********************************************************** \r\n $scope.saveTaskBtns = function () {\r\n \r\n \r\n //$scope.activity.activityMessage = ProcessingService.setActivityMsg('Saving task btns for '+$scope.resourceId);\r\n \r\n TaskDataService.SaveTaskBtns($scope.resourceDefinition.initTaskBtnDef,$scope.resourceId,lang).then(function(data) {\r\n \r\n \r\n MessagingService.addMessage(data.msg,'success');\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n \r\n });\r\n \r\n \r\n \r\n };\r\n \r\n//**********************************************************\r\n\t// SAVE TASK OUTCOMES\r\n\t//********************************************************** \r\n $scope.saveTaskOutcomes = function(){\r\n \r\n\t\t//check for errors\r\n\t\tvar saveTaskOutcomesErrors=[];\r\n if (!$scope.taskDefinition.InfiniteTask)\r\n\t\t{\r\n for(var i=0;i<$scope.outcomes.outcomeCodesDetails.length;i++){\r\n if \t($scope.outcomes.outcomeCodesDetails[i].outcomeName==null) saveTaskOutcomesErrors.push('Outcome name must be defined!');\r\n //if \t($scope.outcomes.outcomeCodesDetails[i].actions.length==0) saveTaskOutcomesErrors.push('Outcome action must be defined!');\r\n }\r\n if ($scope.outcomes.outcomeCodesDetails.length==0) {\tsaveTaskOutcomesErrors.push(\"Outcome must be defined!\");};\r\n }\r\n if (saveTaskOutcomesErrors.length>0) \r\n\t\t\tMessagingService.addMessage(saveTaskOutcomesErrors,'error') //MessagingService.addMessage('No outcomes defined!','error');}\r\n\t\telse \r\n\t\t{\r\n\t\t\r\n\t\t\tvar lang=$rootScope.globals.currentUser.lang;\r\n\t\t\t\r\n\t\t\t//ako ne postoji outcomeHead a ima podataka onda kreiramo novi outcomeHead \r\n\t\t\tif (($scope.taskDefinition.TaskOutcomeHeadId == null || $scope.taskDefinition.TaskOutcomeHeadId==undefined || $scope.taskDefinition.TaskOutcomeHeadId==0) && !$scope.taskDefinition.InfiniteTask)\r\n\t\t\t{\r\n\t\t\t if ($scope.outcomes.outcomeCodesDetails.length>0) {\r\n\t\t\t \r\n\t\t\t\t $scope.OutcomeHead = {Active:true,id:null};\r\n\t\t\t\t $scope.OutcomeHead.Lang = lang;\r\n\t\t\t\t $scope.OutcomeHead.OutcomeName=$scope.resourceDefinition.name;\r\n\t\t\t\t $scope.OutcomeHead.Name=$scope.resourceDefinition.name;\r\n \r\n\t\t\t\t TaskDataService.SaveOutcomeDefinition($scope.OutcomeHead).then(function(data) {\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t $scope.taskDefinition.TaskOutcomeHeadId=data.data.data.id;\r\n\t\t\t\t\t\t MessagingService.addMessage(data.data.msg,'success'); \r\n\t\t\t\t\t\t $scope.saveTaskOutcomesFinalize();\r\n\t\t\t\t\t \r\n\t\t\t\t },function(error){ \r\n\t\t\t\t\t\tMessagingService.addMessage(error.msg,'error');\r\n\t\t\t\t\t}); \r\n }\r\n\r\n\t\t } //ako već postoji outcomehead onda samo snimamo outcome \r\n\t\t else $scope.saveTaskOutcomesFinalize();\r\n }\r\n\t }\r\n\t \r\n\t \r\n\t $scope.saveTaskOutcomesFinalize = function(){\r\n\t\t \r\n\t\t \tvar outcomes = {outcomeId:$scope.taskDefinition.TaskOutcomeHeadId,defaultOutcomeId:$scope.taskDefinition.DefaultOutcomeId,outcomes:$scope.outcomes.outcomeCodesDetails};\r\n\r\n\t\t\tTaskDataService.SaveTaskOutcomes($scope.resourceId,!$scope.taskDefinition.InfiniteTask,outcomes,lang).then(function(data) {\r\n \r\n $scope.outcomes.outcomeCodesDetails = data.data;\r\n $scope.outcomes.selectedOutcomeIndex=-1;\r\n MessagingService.addMessage(data.msg,'success');\r\n \r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n\t\t\t\t\t\t\t \r\n\t }\r\n\t \r\n\t \r\n \r\n //**********************************************************\r\n\t// CALL FUNCTIONS FOR FETCHING TASK FORM, PARAMETERS, OUTCOMES\r\n\t//********************************************************** \r\n if ($scope.resourceId != undefined)\r\n {\r\n $scope.getResourceForm();\r\n }\r\n \r\n $scope.getTaskParameters();\r\n \r\n \r\n \r\n}\r\nexport function taskDefinitionCtrl ($scope, $rootScope,$timeout,uiGridConstants,ProcessingService,MessagingService,GridsterService,CodesService,$stateParams,TaskDataService,TaskDefinitionService,ResourcesDataService,$state,dragulaService,KatalyoStateManager) {\r\n \r\n $scope.is_superuser = $rootScope.globals.currentUser.is_superuser;\r\n //$scope.organisation_id = $rootScope.globals.currentUser.uep.Organisation;\r\n\t $scope.organisation_id = $rootScope.globals.currentUser?.organisation?.id\r\n \r\n $scope.CTRLNAME='taskDefinitionCtrl';\r\n // //taskDefinitionCtrl\r\n \r\n $scope.taskId=parseInt($stateParams.id.split(\"_\")[0]) \r\n $scope.taskUid=$stateParams.id;\r\n \r\n \r\n $scope.tds=TaskDefinitionService;\r\n $scope.gsrvc = GridsterService;\r\n $scope.firstDownloadAssignments = false;\r\n $scope.localVars = {};\r\n $scope.localVars.gsrvc = GridsterService;\r\n $scope.localVars.reloadToolbox = false;\r\n //$scope.gsrvc.destroyDragula('bag-resource');\r\n //$scope.gsrvc.destroyDragula('bag-task');\r\n $scope.ksm = KatalyoStateManager;\r\n $scope.tds.SetScopeForDefinition($scope);\r\n $scope.gsrvc.resetBodyBgColor() \r\n \r\n $scope.loadingActions={loading:false}; \r\n $scope.checklist = {form:true,assign:false,outcomes:false,status:true,params:false};\r\n $scope.outcomes = {outcomeCodesDetails:[]};\r\n $scope.codesActions = {codesActionsList:[],codesActionsListOriginal:[]};\r\n $scope.taskDefinition={};\r\n $scope.task={};\r\n var lang = $rootScope.globals.currentUser.lang;\r\n \r\n $scope.taskDefinition.TaskTypeObject={};\r\n $scope.taskDefinition.NoLimit = false;\r\n $scope.taskDefinition.MaxActualOwners = 0;\r\n $scope.taskDefinition.AutoStart = false;\r\n $scope.taskDefinition.AutoClaim = true;\r\n $scope.taskDefinition.AutoAssign = true;\r\n $scope.taskDefinition.AutoInitiate = true;\r\n $scope.taskDefinition.AutoExecute = false;\r\n $scope.taskDefinition.SelfAssigned = true;\r\n $scope.taskDefinition.CanDelegate = false;\r\n $scope.taskDefinition.CanHold = false;\r\n $scope.taskDefinition.CanRelease = false;\r\n $scope.taskDefinition.InfiniteTask = false;\r\n $scope.taskDefinition.PublicTask = false;\r\n $scope.taskDefinition.AssignTypeOwner = 's'\r\n $scope.taskDefinition.AssignTypeInitiator='a'\r\n $scope.taskDefinition.SetupAssignments=true\r\n $scope.taskDefinition.ResourceDefId = $scope.taskId;\r\n $scope.taskDefinition.ResourceDefUid = $scope.taskUid;\r\n $scope.taskDefinition.UniqueName = $scope.taskId;\r\n $scope.taskDefinition.OrganisationId = 1;\r\n //$scope.taskDefinition.CreatedBy = $rootScope.globals.currentUser.userid;\r\n //$scope.taskDefinition.ChangedBy = $rootScope.globals.currentUser.userid;\r\n //$scope.taskDefinition.VersionFrom = 1;\r\n //$scope.taskDefinition.VersionTo = 1;\r\n $scope.taskDefinition.TaskOutcomeCodeId = null;\r\n $scope.taskDefinition.DefaultOutcomeId = null;\r\n $scope.taskStatusFrom={'id':null,'name':null};\r\n $scope.taskStatusTo={'id':null,'name':null};\r\n // $scope.taskTypeList=[];\r\n $scope.taskDefinition.Parameters = {};\r\n $scope.taskDefinition.form_definition=true;\r\n $scope.taskDefinition.formParams={formViewType:1,showGridNavigation:false}; \r\n\r\n \r\n $rootScope.markAll = {\r\n readOnly: false,\r\n required: false\r\n }\r\n \r\n \r\n // $scope.$watch('taskAssignments.taskInitiatorsUsers.AssigneeList',function(newValue,oldValue){ \r\n // });\r\n \r\n $scope.localVars.initTaskTypeSelection = function ()\r\n {\r\n let a= $scope.taskTypeList.find( e => e.id == $scope.taskDefinition.TaskType) \r\n $scope.taskDefinition.TaskTypeObject = a\r\n }\r\n $scope.localVars.markAll = function(what){\r\n $rootScope.markAll[what] = true\r\n }\r\n \r\n \r\n $scope.localVars.getFields = function(form,requiredFields,msg)\r\n {\r\n let resultProperties = TaskDataService.getFields(form, requiredFields);\r\n if (msg) MessagingService.addMessage(msg,'info');\r\n return resultProperties\r\n }; \r\n \r\n \r\n $scope.clearTaskAssignments = function()\r\n {\r\n // //clearTaskAssignments\r\n $scope.taskAssignments = {\r\n potentialOwnersUsers:{\r\n AssigneeList:[],\r\n AssignType:\"a\"\r\n },\r\n potentialOwnersGroups: {\r\n AssigneeList:[],\r\n AssignType:\"a\"\r\n },\r\n taskInitiatorsUsers:{\r\n AssigneeList:[],\r\n AssignType:\"a\"\r\n },\r\n taskInitiatorsGroups:{\r\n AssigneeList:[],\r\n AssignType:\"a\"\r\n }\r\n \r\n }\r\n \r\n }\r\n \r\n $scope.clearTaskAssignments();\r\n \r\n \r\n $scope.taskDefinition.AssignTypeAdmin=\"\";\r\n \r\n\r\n var form_changed = function(data)\r\n {\r\n $scope.tds.showHideTaskForm('');\r\n $timeout(function(){$scope.tds.showHideTaskForm(data);},300)\r\n };\r\n \r\n let taskDefinitionState= $scope.ksm.addSubject('taskDefinitionState'+$scope.taskId,null);\r\n let taskDefinitionStateName = taskDefinitionState.subject.name;\r\n \r\n \r\n let action_form_changed = $scope.ksm.addAction(taskDefinitionStateName,\"formTypeChanged\",form_changed);\r\n\r\n //populate dropdown\r\n CodesService.getCodesByName('_TASK_TYPE_',lang).then(function (data) {\r\n if (data.data.length>0)\r\n {\r\n $scope.taskTypeList = data.data;\r\n }else\r\n {\r\n $scope.taskTypeList = [{id:1,name:'Single instance'},{id:2,name:'Multiple instance'}];\r\n \r\n }\r\n });\r\n \r\n\r\n CodesService.getCodesByName('codestatus',lang).then(function (data) {\r\n $scope.resourceStatusList = data.data;\r\n });\r\n CodesService.getCodesByName('_APPS_',lang).then(function (data) {\r\n $scope.resourceTagsList = data.data;\r\n });\r\n \r\n $scope.setAutoExecute= function(){\r\n \r\n $scope.taskDefinition.AutoExecute=!$scope.taskDefinition.AutoExecute;\r\n if ($scope.taskDefinition.AutoExecute)\r\n {\r\n $scope.taskDefinition.SelfAssigned=true;\r\n $scope.taskDefinition.InfiniteTask=false;\r\n }//else\r\n // {\r\n // $scope.task=angular.copy($scope.taskOriginal);\r\n // }\r\n }; \r\n \r\n $scope.localVars.setAutoInitiate= function(){\r\n \r\n \r\n if ($scope.taskDefinition.AutoInitiate===undefined) $scope.taskDefinition.AutoInitiate=true\r\n else $scope.taskDefinition.AutoInitiate = !$scope.taskDefinition.AutoInitiate\r\n $scope.localVars.saveTaskParameters()\r\n \r\n };\r\n\r\n \r\n $scope.getActions= function(){\r\n \r\n $scope.showActionsList = true;\r\n \r\n }; \r\n\r\n $scope.selectPreviousTaskUser= function(previousTaskUserType){\r\n \r\n $scope.taskDefinition.PublicTask=false;\r\n \r\n if (previousTaskUserType!=\"i\" && previousTaskUserType!=\"o\")\r\n {\r\n \r\n }\r\n $scope.taskAssignments.taskInitiatorsUsers.AssignType =previousTaskUserType;\r\n $scope.taskAssignments.taskInitiatorsGroups.AssignType = previousTaskUserType;\r\n \r\n };\r\n \r\n $scope.selectPreviousTaskForOwnerUser= function(previousTaskUserType){\r\n \r\n $scope.taskAssignments.potentialOwnersUsers.AssignType=previousTaskUserType;\r\n $scope.taskAssignments.potentialOwnersGroups.AssignType=previousTaskUserType;\r\n if (previousTaskUserType==\"s\" )\r\n {\r\n $scope.taskDefinition.SelfAssigned=true;\r\n }else\r\n {\r\n $scope.taskDefinition.SelfAssigned=false;\r\n }\r\n \r\n if (previousTaskUserType==\"d\" || previousTaskUserType==\"s\")\r\n {\r\n $scope.setTaskType('oneinstance');\r\n }\r\n \r\n };\r\n \r\n $scope.showHidePreviousTask = function()\r\n {\r\n if (!$scope.taskAssignments.showPreviousTask) $scope.taskAssignments.showPreviousTask=!$scope.taskAssignments.showPreviousTask;\r\n else if ($scope.taskAssignments.taskInitiatorsUsers.AssignType!='i' && $scope.taskAssignments.taskInitiatorsUsers.AssignType!='o' && $scope.taskAssignments.taskInitiatorsUsers.AssignType!=undefined)\r\n {\r\n $scope.taskAssignments.showPreviousTask=!$scope.taskAssignments.showPreviousTask;\r\n } \r\n };\r\n \r\n $scope.showHidePreviousTaskForOwner = function()\r\n {\r\n if (!$scope.taskAssignments.showPreviousTaskForOwner) $scope.taskAssignments.showPreviousTaskForOwner=!$scope.taskAssignments.showPreviousTaskForOwner;\r\n else if ($scope.taskAssignments.potentialOwnersUsers.AssignType!='i' && $scope.taskAssignments.potentialOwnersUsers.AssignType!='o' && $scope.taskAssignments.potentialOwnersUsers.AssignType!=undefined)\r\n {\r\n $scope.taskAssignments.showPreviousTaskForOwner=!$scope.taskAssignments.showPreviousTaskForOwner;\r\n } \r\n };\r\n \r\n $scope.changeInitAssignTypeUser = function(selection)\r\n {\r\n if (selection) {$scope.taskAssignments.taskInitiatorsUsers.AssignType=selection} \r\n else {\r\n if ($scope.taskAssignments.taskInitiatorsUsers.AssignType=='a')\r\n {\r\n $scope.taskAssignments.taskInitiatorsUsers.AssignType='e';\r\n }else $scope.taskAssignments.taskInitiatorsUsers.AssignType='a';\r\n } \r\n };\r\n \r\n \r\n $scope.changeInitAssignTypeGroup = function(selection)\r\n {\r\n if (selection) {$scope.taskAssignments.taskInitiatorsGroups.AssignType=selection }\r\n else {\r\n if ($scope.taskAssignments.taskInitiatorsGroups.AssignType=='a')\r\n {\r\n $scope.taskAssignments.taskInitiatorsGroups.AssignType='e';\r\n }else $scope.taskAssignments.taskInitiatorsGroups.AssignType='a';\r\n } \r\n };\r\n \r\n \r\n $scope.changeOwnerAssignTypeUser = function(selection)\r\n {\r\n if (selection) {$scope.taskAssignments.potentialOwnersUsers.AssignType=selection } else {\r\n if ($scope.taskAssignments.potentialOwnersUsers.AssignType=='a')\r\n {\r\n $scope.taskAssignments.potentialOwnersUsers.AssignType='e';\r\n }else $scope.taskAssignments.potentialOwnersUsers.AssignType='a';\r\n }\r\n };\r\n \r\n \r\n $scope.changeOwnerAssignTypeGroup = function(selection)\r\n {\r\n if (selection) {$scope.taskAssignments.potentialOwnersGroups.AssignType=selection}\r\n else {\r\n if ($scope.taskAssignments.potentialOwnersGroups.AssignType=='a')\r\n {\r\n $scope.taskAssignments.potentialOwnersGroups.AssignType='e';\r\n }else $scope.taskAssignments.potentialOwnersGroups.AssignType='a';\r\n } \r\n };\r\n \r\n //get codes by name\r\n $scope.GetCodesByName = function()\r\n {\r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n CodesService.getCodesByName(\"taskstatuses\",lang).then(function(data) {\r\n $scope.taskStatuses = data.data;\r\n \r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n };\r\n $scope.GetCodesByName();\r\n \r\n //set task type\r\n $scope.setTaskType = function(taskTypeName)\r\n {\r\n $scope.taskDefinition.TaskTypeObject.Name=taskTypeName;\r\n \r\n var pos = $scope.taskTypeList.map(function(e) { return e.value; }).indexOf(taskTypeName);\r\n \r\n if (pos>=0){\r\n $scope.taskDefinition.TaskType = $scope.taskTypeList[pos].id;\r\n $scope.taskDefinition.TaskTypeObject.id=$scope.taskTypeList[pos].id;\r\n }\r\n \r\n \r\n };\r\n \r\n\r\n \r\n $scope.localVars.getTaskParameters = function()\r\n {\r\n TaskDataService.GetTaskParameters($scope.taskUid).then(\r\n function(data) {\r\n if (data.length>0) {\r\n $scope.processTaskDefinition(data[0]) \r\n } else {\r\n CodesService.getCodesDetailObjectByName('_TASK_TYPE_','oneinstance',lang,true).then(\r\n function(dataCodes){\r\n $scope.taskDefinition.TaskType = dataCodes.id;\r\n $scope.localVars.saveTaskParameters(true); \r\n }); \r\n }\r\n }, \r\n function(error) {\r\n if (error.status===904) {\r\n CodesService.getCodesDetailObjectByName('_TASK_TYPE_','oneinstance',lang,true).then(function(dataCodes){\r\n $scope.taskDefinition.TaskType = dataCodes.id;\r\n $scope.localVars.saveTaskParameters(true);\r\n $scope.getResourceDefinition($scope.taskDefinition.ResourceDefUid);\r\n });\r\n \r\n } else \r\n MessagingService.addMessage(error.msg,'error');\r\n }\r\n );\r\n \r\n };\r\n\r\n\r\n $scope.processTaskDefinition=function (taskParameters) \r\n {\r\n $scope.taskDefinition = taskParameters;\r\n $scope.prettyTask = JSON.stringify($scope.taskDefinition,null,2); \r\n $scope.taskParametersId = $scope.taskId;\r\n if ($scope.taskDefinition.Parameters==null) \r\n $scope.taskDefinition.Parameters={AutoLoadExeForm:false,RestartTask:false};\r\n\r\n $scope.taskDefinition.form_definition=true;\r\n\r\n \r\n $scope.clearTaskAssignments(); \r\n \r\n if ($scope.taskDefinition.AssignTypeOwner)\r\n $scope.taskAssignments.potentialOwnersUsers.AssignType = $scope.taskDefinition.AssignTypeOwner;\r\n if ($scope.taskDefinition.AssignTypeInitiator)\r\n $scope.taskAssignments.taskInitiatorsUsers.AssignType = $scope.taskDefinition.AssignTypeInitiator;\r\n if ($scope.taskDefinition.AssignTypeOwnerGroup) \r\n $scope.taskAssignments.potentialOwnersGroups.AssignType = $scope.taskDefinition.AssignTypeOwnerGroup;\r\n if ($scope.taskDefinition.AssignTypeInitiatorGroup)\r\n $scope.taskAssignments.taskInitiatorsGroups.AssignType = $scope.taskDefinition.AssignTypeInitiatorGroup;\r\n \r\n $scope.getResourceDefinition($scope.taskDefinition.ResourceDefUid);\r\n $scope.taskDefinition.formParams={formLocked:true,formViewType:1,showGridNavigation:false}; \r\n $scope.taskDefinition.form_type=$scope.tds.showTaskFormFn() \r\n $scope.taskOriginal = angular.copy($scope.taskDefinition);\r\n $scope.tds.SetSelectedTask($scope.taskDefinition);\r\n $scope.localVars.getResourceForm();\r\n }\r\n \r\n \r\n \r\n $scope.saveTaskDef = function (isValid) {\r\n \r\n if (isValid) {\r\n // ResourcesDataService.saveResourceDefAll($scope.resourceDefinition).then(function(data) {\r\n ResourcesDataService.SaveResourceDef2 ($scope.resourceDefinition).then(\r\n function(data) { \r\n if (data.status===200 || data.status===201) {\r\n MessagingService.addMessage(\"Task properties saved successfuly\",'success'); \r\n } \r\n },\r\n function(error){\r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n \r\n } else { \r\n MessagingService.addMessage(\"Please enter required data\",'warning'); \r\n }\r\n }; \r\n $scope.EditTask = function(value)\r\n {\r\n $scope.editTask=value;\r\n if (value) $scope.getResourceDefinition($scope.taskDefinition.ResourceDefUid);\r\n };\r\n \r\n //get resource def\r\n $scope.getResourceDefinition = function(resourceDefId){\r\n \r\n ResourcesDataService.getResourceDefAll(resourceDefId).then(function(data) {\r\n \r\n // MessagingService.addMessage(data.msg,'success');\r\n $scope.resourceDefinition = data.data;\r\n $scope.resourceDefDownloaded = true\r\n $scope.resourceDefinition.formParams={formLocked:true,formViewType:1,showGridNavigation:false};\r\n $scope.gsrvc.setTaskFormVersion($scope.resourceDefinition.id+$scope.taskDefinition.form_type,{Version:$scope.resourceDefinition.Version,Published:$scope.resourceDefinition.Published,NewVersion:$scope.resourceDefinition.NewVersion}); \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n };\r\n \r\n //save task parameters\r\n $scope.localVars.saveTaskParameters = function(isInitial){\r\n \r\n TaskDataService.SaveTaskParameters($scope.taskDefinition.id,$scope.taskDefinition).then(function(data) {\r\n \r\n MessagingService.addMessage(data.msg,'success');\r\n \r\n if (isInitial) $scope.processTaskDefinition(data.data) \r\n else $scope.taskDefinition=data.data \r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error'); \r\n }); \r\n };\r\n \r\n \r\n \r\n //get task assignments\r\n $scope.getTaskAssignments = function(){\r\n if ($scope.taskId!==undefined)\r\n {\r\n if (!$scope.taskAssignmentsDownloaded)\r\n {\r\n TaskDataService.GetTaskAssignments($scope.taskId).then(function(data) {\r\n \r\n $scope.taskAssignmentsOriginal = angular.copy(data.data);\r\n $scope.processTaskAssignments(data.data);\r\n $scope.taskAssignmentsDownloaded = true;\r\n $scope.firstDownloadAssignments = true;\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }else\r\n {\r\n $scope.processTaskAssignments($scope.taskAssignmentsOriginal); //MIGOR TODO - vidjeti d ali ovo odkomentirati ili sta\r\n }\r\n } else MessagingService.addMessage('Task id (taskId) is undefined','error');\r\n };\r\n \r\n //save task status actions\r\n $scope.saveTaskStatuses = function(){\r\n if ($scope.codesActions.codesActionsList[$scope.codesActions.selectedActionIndex] == null) $scope.codesActions.codesActionsList[$scope.codesActions.selectedActionIndex] = {};\r\n\r\n TaskDataService.SaveTaskStatuses($scope.taskId,[$scope.codesActions.codesActionsList[$scope.codesActions.selectedActionIndex]],'taskstatuses').then(function(data) {\r\n \r\n MessagingService.addMessage(data.msg,'success');\r\n \r\n },\r\n function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n };\r\n \r\n //save task assignments\r\n $scope.saveTaskAssignments = function(assignType){\r\n \r\n TaskDataService.SaveTaskAssignments($scope.prepareTaskAssignments($scope.taskAssignments,assignType),$scope.taskId,$scope.taskDefinition.SelfAssigned,$scope.taskDefinition.PublicTask,$scope.taskDefinition.UniqueName,assignType,$scope.taskDefinition.TaskType).then(function(data) {\r\n \r\n MessagingService.addMessage(data.msg,'success');\r\n $scope.showTaskInitiators = false;\r\n $scope.showTaskOwners = false;\r\n if (assignType===0) $scope.taskDefinition.TaskInitiatorsSaved = true;\r\n if (assignType===1) $scope.taskDefinition.PotentialOwnersSaved = true;\r\n $scope.taskAssignmentsDownloaded = false; \r\n \r\n },\r\n function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n };\r\n \r\n $scope.processTaskAssignments = function(taskAssignments){ //MIGOR TODO - Ova funkcija se pokreće i u BUILD modu !! Da li treba??\r\n \r\n \r\n // Initialize taskAssigments if undefined !\r\n if (taskAssignments.potentialOwnersUsers ===undefined)\r\n taskAssignments.potentialOwnersUsers = {AssigneeList : []};\r\n \r\n if (taskAssignments.potentialOwnersGroups ===undefined)\r\n taskAssignments.potentialOwnersGroups = {AssigneeList : []};\r\n \r\n if (taskAssignments.taskInitiatorsUsers ===undefined)\r\n taskAssignments.taskInitiatorsUsers = {AssigneeList : []};\r\n\r\n if (taskAssignments.taskInitiatorsGroups ===undefined)\r\n taskAssignments.taskInitiatorsGroups = {AssigneeList : []};\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n // $scope.clearTaskAssignments();//migor - čini mi se da je ovo pjesnik htio reći umjesto gornjeg\r\n \r\n var users = taskAssignments.users;\r\n var groups = taskAssignments.groups;\r\n \r\n if (taskAssignments.taskDefinition!==null && taskAssignments.taskDefinition!==undefined)\r\n {\r\n if (taskAssignments.taskDefinition.AssignTypeOwner) $scope.taskAssignments.potentialOwnersUsers.AssignType = taskAssignments.taskDefinition.AssignTypeOwner;\r\n if (taskAssignments.taskDefinition.UniqueId) $scope.taskAssignments.potentialOwnersUsers.UniqueId = taskAssignments.taskDefinition.UniqueId;\r\n if (taskAssignments.taskDefinition.AssignTypeInitiator) $scope.taskAssignments.taskInitiatorsUsers.AssignType = taskAssignments.taskDefinition.AssignTypeInitiator;\r\n if ( taskAssignments.taskDefinition.AssignTypeOwnerGroup) $scope.taskAssignments.potentialOwnersGroups.AssignType = taskAssignments.taskDefinition.AssignTypeOwnerGroup;\r\n if ( taskAssignments.taskDefinition.UniqueIdGroup) $scope.taskAssignments.potentialOwnersGroups.UniqueId = taskAssignments.taskDefinition.UniqueIdGroup;\r\n if (taskAssignments.taskDefinition.AssignTypeInitiatorGroup) $scope.taskAssignments.taskInitiatorsGroups.AssignType = taskAssignments.taskDefinition.AssignTypeInitiatorGroup; \r\n }\r\n \r\n \r\n var pos; \r\n for (var i=0;i=0 ? \"active\" : \"\"); \r\n }\r\n\r\n $scope.gridOptions = {\r\n columnDefs: [\r\n { name: 'id', displayName: 'ID', aggregationType: uiGridConstants.aggregationTypes.avg,type: 'number', width:'5%',enableHiding: false, visible: true },\r\n { name: 'resourcedeflang_set[0].Name', displayName: 'Task name'},\r\n { name: 'resourcedeflang_set[0].Subject', displayName: 'Task subject' },\r\n { name: 'resourcedeflang_set[0].Description', displayName: 'Task description' },\r\n // { name: 'resourcedeflang_set[0].Lang.name', displayName: 'Language'},\r\n //{ name: 'ResourceType.CodesDetailLang[0].Value', displayName: 'Task type' },\r\n { name: 'Status.CodesDetailLang[0].Value', displayName: 'Status'},\r\n \r\n ],\r\n\t\tenableGridMenu: true,\r\n showGridFooter: true,\r\n\t\tshowColumnFooter: true,\r\n enableRowSelection: true,\r\n\t\tmultiSelect: false,\r\n\t\tenableHorizontalScrollbar : 0, \r\n\t\tenableVerticalScrollbar : 2,\r\n\t\tenableFiltering: true,\r\n\t\tenableRowHeaderSelection: true,\r\n\t\tenableColumnResizing: true,\r\n // minRowsToShow : 3\r\n }\r\n \r\n $scope.currentStateName=$state.current.name;\r\n $scope.currentStateParams=$state.params;\r\n \r\n $scope.gridOptions.onRegisterApi = function (gridApi) {\r\n $scope.gridApi = gridApi;\r\n gridApi.selection.on.rowSelectionChanged($scope,function(row){\r\n $scope.taskSelected=row.isSelected;\r\n \r\n if(row.isSelected){\r\n $scope.selectedTask=row.entity.id;\r\n $scope.selectedTaskObject = row.entity;\r\n }\r\n }); \r\n }\r\n \r\n \r\n \r\n $scope.InititateAllList = function(){\r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n ResourcesDataService.getResourceDefByType(lang,'task').then(function(data) {\r\n \r\n $scope.gridOptions.data = data.data;\r\n \r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n \r\n \r\n //napuni grid s definicijama resursa\r\n $scope.InititateAllList();\r\n $scope.InitiateTask = function (taskDefId){\r\n \r\n $state.go('app.navbar.tasks.proc',{id: taskDefId,fromStateName:$state.current.name,fromStateParams:$state.params,outcome_id:0,prev_task_execute_id:$scope.taskExecuteId,menu_type:\"t\"});\r\n \r\n }\r\n \r\n $scope.InititateMyList = function(){\r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n var user=$rootScope.globals.currentUser.userid;\r\n \r\n \r\n \r\n ResourcesDataService.getResourceDefListByLangByTypeUser(lang,'task',user).then(function(data) {\r\n \r\n //$scope.gridOptions.data = data.data;\r\n $scope.myInitiateTaskList = data.data.results;\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }; \r\n \r\n $scope.InititateMyList();\r\n \r\n }\r\nexport function taskProcCtrl ($scope, $rootScope,$timeout,uiGridConstants,ProcessingService,MessagingService,MenuService,$stateParams,GridsterService,TaskDataService,TaskProcService,WidgetDataExchangeService,$state,$cookies) {\r\n \r\n $scope.gsrvc=GridsterService;\r\n $scope.fd={};\r\n $scope.openedTaskInNewPage={localVars:null,taskDefinition:null};\r\n // $scope.localVars={};\r\n // $scope.taskDefinition={};\r\n $scope.gsrvc.setOpenTaskType(\"current\");\r\n \r\n $scope.openTaskInNewPage=function(){\r\n \r\n $scope.openedTaskInNewPage = $scope.gsrvc.getTaskDataInNewPage();\r\n \r\n \r\n };\r\n \r\n //$scope.gsrvc.destroyDragula('bag-resource');\r\n //$scope.gsrvc.destroyDragula('bag-task');\r\n \r\n}\r\nexport function taskPublicCtrl ($scope, $rootScope,$timeout,uiGridConstants,ProcessingService,MessagingService,MenuService,$stateParams,GridsterService,TaskDataService,TaskProcService,WidgetDataExchangeService,$state,$cookies) {\r\n \r\n let org_id = $state.params.org_id;\r\n let task_name = $state.params.task_name;\r\n let task_id = $state.params.task_id;\r\n $rootScope.headTitle =\"Katalyo | \"+task_name;\r\n $scope.CTRLNAME='taskPublicCtrl';\r\n $scope.localVars={};\r\n $scope.localVars.publicTask=true;\r\n $scope.taskDefinition={};\r\n $scope.localVars.publicTaskName = task_name;\r\n \r\n $scope.localVars.publicTaskId = task_id;\r\n $scope.localVars.organisationId = org_id;\r\n \r\n}\r\n\r\nexport function taskInitiateCtrl ($scope, $rootScope,$timeout,uiGridConstants,ProcessingService,MessagingService,$stateParams,GridsterService,TaskDataService,WidgetDataExchangeService,$state,$cookies) {\r\n $scope.CTRLNAME='taskInitiateCtrl';\r\n $scope.initiateFormLoaded=false;\r\n $scope.isSaving=false;\r\n $scope.taskDefId=$stateParams.id;\r\n $scope.previousTask=$stateParams.prev_task_execute_id;\r\n $scope.previousTaskOutcomeId=$stateParams.outcome_id;\r\n $scope.previousTaskPackage=$stateParams.prev_task_package; \r\n $scope.gridsterType=\"task\";\r\n $scope.gridsterOpts = GridsterService.getGridsterOptions();\r\n $scope.showSearchFilters=false; \r\n $scope.dashboard.widgets = [];\r\n $scope.dashboard.data = {};\r\n \r\n $scope.backCloseIcon = \"fa fa-close\";\r\n $scope.cancelBackBtnTxt = \"Cancel\";\r\n \r\n $scope.fromStateName=$stateParams.fromStateName;\r\n $scope.fromStateParams=$stateParams.fromStateParams;\r\n $scope.cookieFromStateName=$cookies.getObject('initiateTaskFromStateName');\r\n $scope.cookieFromStateParams=$cookies.getObject('initiateTaskFromStateParams');\r\n $scope.noBackbutton = false;\r\n $scope.backBtnFromCookie=false;\r\n \r\n \r\n \r\n if ($scope.fromStateName==undefined || $scope.fromStateName==\"\")\r\n {\r\n if ($scope.cookieFromStateName==undefined || $scope.cookieFromStateName==\"\")\r\n {\r\n $scope.noBackButton = true;\r\n }else\r\n {\r\n $scope.fromStateName = $scope.cookieFromStateName;\r\n $scope.backBtnFromCookie = true;\r\n }\r\n \r\n \r\n }else{\r\n $cookies.putObject('initiateTaskFromStateName',$scope.fromStateName);\r\n \r\n }\r\n \r\n if ($scope.fromStateParams==undefined)\r\n {\r\n if ($scope.cookieFromStateParams!=undefined)\r\n {\r\n if ($scope.backBtnFromCookie)\r\n {\r\n $scope.fromStateParams = $scope.cookieFromStateParams;\r\n }\r\n }\r\n \r\n }else if ($scope.cookieFromStateParams==undefined)\r\n {\r\n $cookies.putObject('initiateTaskFromStateParams',$scope.fromStateParams);\r\n \r\n }else\r\n {\r\n if ($scope.backBtnFromCookie)\r\n {\r\n \r\n $scope.fromStateParams = $scope.cookieFromStateParams;\r\n \r\n }else\r\n {\r\n $cookies.putObject('initiateTaskFromStateParams',$scope.fromStateParams); \r\n }\r\n }\r\n \r\n \r\n \r\n \r\n \r\n if ($scope.previousTask==undefined || $scope.previousTask==\"\")\r\n {\r\n // $state.go();\r\n \r\n $scope.previousTask = 0;\r\n \r\n }\r\n $scope.potentialOwners = {};\r\n \r\n // $scope.potentialOwnersUsers=[];\r\n //$scope.potentialOwnersGroups=[]; \r\n \r\n // ILJ 22.12.2018 can't deregister - deregister prev task which is needed \r\n //WidgetDataExchangeService.deRegisterAllWidgets();\t//Migor - deregistering taskwidgetRegistry \r\n\r\n $scope.localTaskId=WidgetDataExchangeService.registerTask($scope.taskDefId);\r\n \r\n $scope.taskDefinition ={};\r\n $scope.potentialOwners.potentialOwnersUsers = [];\r\n $scope.potentialOwners.potentialOwnersGroups = [];\r\n \r\n $scope.FormLockUnlock = function()\r\n {\r\n $scope.resourceDefinition.formParams.formLocked=!$scope.resourceDefinition.formParams.formLocked;\r\n\r\n /*\r\n if ($scope.resourceDefinition.formLocked) {\r\n $scope.dashboard.widgets=GridsterService.ProcessWidgets($scope.dashboard.widgetsOriginal);\r\n }else\r\n {\r\n $scope.dashboard.widgets = $scope.dashboard.widgetsOriginal;\r\n \r\n }\r\n */\r\n };\r\n \r\n $scope.PreInitiateTask = function(){\r\n var lang=$rootScope.globals.currentUser.lang;\r\n $scope.taskInitiateId=0;\r\n $scope.taskExecuteId=0;\r\n \r\n \r\n TaskDataService.preInitiateTask($scope.taskDefId,$scope.previousTask,lang).then(function(data) {\r\n \r\n \r\n $scope.taskDefinition = data.data.taskdef[0];\r\n $scope.taskDefinition.prev_task_id = $scope.previousTask;\r\n $scope.taskDefinition.form_type=\"i\";\r\n $scope.taskDefinition.source_type = $stateParams.src_type;\r\n $scope.taskDefinition.taskFormLoaded = false;\r\n if ($scope.taskDefinition.AutoInitiate) {\r\n \r\n $scope.AutoInitiateTask();\r\n \r\n }else\r\n {\r\n $scope.dashboard.data= data.data.form_data;\r\n $scope.resourceDefinition=data.data.resourceDefinition;\r\n $scope.dashboard.widgets= data.data.widgets;\r\n \r\n $scope.resourceDefinition.formParams={formLocked:true,formViewType:2};\r\n \r\n $timeout(function(){$scope.initiateFormLoaded = true;});\r\n /* if ($scope.resourceDefinition.formParams) {\r\n $scope.dashboard.widgets=GridsterService.ProcessWidgets($scope.dashboard.widgetsOriginal);\r\n }else\r\n {\r\n $scope.dashboard.widgets = $scope.dashboard.widgetsOriginal;\r\n \r\n }*/\r\n \r\n // $state.go('app.navbar.tasks.initiate',{id: $scope.taskDefId,fromStateName:$state.current.name,fromStateParams:$state.params,prev:$scope.taskExecuteId});\r\n }\r\n \r\n \r\n },function(error){\r\n \r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n };\r\n \r\n $scope.CancelClicked = function(){\r\n \r\n $state.go( $scope.fromStateName, $scope.fromStateParams);\r\n \r\n };\r\n \r\n $scope.AutoInitiateTask = function(){\r\n var lang=$rootScope.globals.currentUser.lang;\r\n // if (isValid) {\r\n var parentDataset=$scope.getPreviousTaskWidget();\r\n \r\n TaskDataService.initiateTask($scope.taskDefId,$scope.previousTask,$scope.previousTaskOutcomeId,[],$scope.potentialOwners,parentDataset['datasetId'],parentDataset['datasetRecordId'],lang).then(function(data) {\r\n \r\n \r\n if (data.data.taskExecuteInstance.length>0)\r\n {\r\n $scope.task_initiate_id = data.data.taskExecuteInstance.TaskInitiateId.id;\r\n $scope.task_execute_id = data.data.taskExecuteInstance.id; \r\n \r\n }\r\n else if (data.data.taskInitiateInstance.length>0)\r\n {\r\n $scope.task_initiate_id = data.data.taskInitiateInstance.id;\r\n $scope.task_execute_id = 0; \r\n \r\n }\r\n $state.go('app.navbar.tasks.execute',{id: $scope.taskDefId,task_initiate_id:$scope.task_initiate_id,task_execute_id:$scope.task_execute_id,fromStateName:$scope.fromStateName,fromStateParams:$scope.fromStateParams,prev_task_package:$scope.previousTaskPackage,prev:$scope.taskExecuteId});\r\n \r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n // }\r\n }\r\n \r\n $scope.InitiateTask = function(form){\r\n var f = $scope.forma;\r\n if (form.$submitted) $scope.setSubmitted(form);\r\n if (form.$valid) {\r\n \r\n //var initiateData={};\r\n $rootScope.$broadcast('ProcessTaskWidgets',{}); //svi widgeti slusaju ovaj event\r\n $scope.isSaving = true;\r\n var lang=$rootScope.globals.currentUser.lang;\r\n var parentDataset=$scope.getPreviousTaskWidget();\r\n \r\n TaskDataService.initiateTask($scope.taskDefId,$scope.previousTask,$scope.previousTaskOutcomeId,$scope.dashboard.data,$scope.potentialOwners,parentDataset['datasetId'],parentDataset['datasetRecordId'],lang).then(function(data) {\r\n \r\n\t\t\t\t\t\t\t\t//trebam dobiti od svih widgeta informacije koje mi trebaju npr resuorceID u ret_value - array \r\n\t\t\t\t\t\t\t\t// widgeti slusaju 'InitiateTaskPostProcess' i onda moraju sa SETDATA broadcasti za sruge widgete npr resourceid \r\n \r\n \r\n MessagingService.addMessage(data.data.msg,'success');\r\n $rootScope.$broadcast('InitiateTaskPostProcess',data.data.ret_value);\r\n //ovo treba staviti u event InitiateTaskPostProcessFinished \r\n $scope.backCloseIcon = \"fa fa-arrow-circle-left\";\r\n $scope.cancelBackBtnTxt = \"Go back\";\r\n $scope.taskInitiated=true;\r\n \r\n \r\n },function(error){\r\n // $scope.isSaving = false; \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n $scope.isSaving = false; \r\n\t\t\t\t\t\t\r\n // });\t\t\t\r\n\t\t\t\t\t\t\t\r\n } // if (isValid)\r\n else\r\n {\r\n MessagingService.addMessage(\"Please enter required data\",'warning');\r\n \r\n }\r\n };\r\n // \r\n \r\n \r\n $scope.getPreviousTaskWidget = function()\r\n {\r\n var pTaskData = WidgetDataExchangeService.getPrevTaskData($scope.taskDefinition.prev_task_id);\r\n var datasetId=0,datasetRecordId=0;\r\n if (pTaskData.DEI!=undefined && pTaskData.DEI!=null)\r\n {\r\n for (var i=0;i0) $scope.taskDefinition.task_execute_id = $scope.taskExecuteInstance[0].id;\r\n else $scope.taskDefinition.task_execute_id = 0;\r\n \r\n }\r\n if ($scope.taskInitiateInstance!=undefined)\r\n {\r\n if ($scope.taskInitiateInstance.length>0) $scope.taskDefinition.task_initiate_id = $scope.taskInitiateInstance[0].id;\r\n else $scope.taskDefinition.task_initiate_id=0;\r\n }\r\n $scope.taskDefinition.form_type=\"e\";\r\n \r\n if ($scope.taskDefinition.TaskOutcomeHeadId_id==undefined || $scope.taskDefinition.TaskOutcomeHeadId_id==null)\r\n {\r\n $scope.taskDefinition.TaskOutcomeHeadId_id = 0;\r\n \r\n }\r\n \r\n TaskDataService.GetTaskOutcomes($scope.taskDefinition.ResourceDefId_id,$scope.taskDefinition.TaskOutcomeHeadId_id,lang).then(function(data) { \r\n \r\n $scope.localVars.taskOutcomes = data.data;\r\n $timeout(function() {\r\n $scope.localVars.OpenTaskType=\"newPage\";\r\n $scope.executeTaskDataLoaded=true;\r\n $scope.localVars.initiateFormLoaded=true;\r\n \r\n });\r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n },function(error){\r\n \r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n /* \r\n TaskDataService.GetTaskExecuteData($scope.taskInstanceId,lang).then(function(data) {\r\n // $scope.ac.alerts = data.data;\r\n \r\n $scope.taskInstance = data.data;\r\n \r\n \r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n \r\n */ \r\n };\r\n $scope.ExecuteTaskAction = function(action){\r\n \r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n \r\n TaskDataService.ExecuteTaskAction($scope.task_initiate_id,$scope.task_execute_id,action,lang,$scope.forGroup).then(function(data) {\r\n \r\n \r\n $scope.taskInitiateInstance =data.data.data.taskInitiateInstance[0];\r\n $scope.taskExecuteInstance =data.data.data.taskExecuteInstance[0];\r\n \r\n if ($scope.task_execute_id==0 && $scope.taskExecuteInstance!=undefined)\r\n {\r\n $state.go('app.navbar.tasks.execute',{id: $scope.taskDefinition.id,task_initiate_id:0,task_execute_id:$scope.taskExecuteInstance.id,fromStateName:$state.current.name,fromStateParams:$state.params,prev:$scope.taskExecuteId});\r\n \r\n \r\n }\r\n \r\n MessagingService.addMessage(data.data.msg,'success');\r\n \r\n \r\n },function(error){\r\n \r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n $scope.getTaskExecuteData();\r\n \r\n $scope.$on('ExecuteTask'+$scope.task_execute_id,function(event,data){\r\n $scope.ExecuteTask(data.form,data.outcomeId);\r\n });\r\n \r\n \r\n $scope.$on('ExecuteTaskPostProcess',function(event,data){\r\n $scope.getTaskExecuteData();\r\n });\r\n \r\n $scope.$on('RefreshData',function(event,data){\r\n $scope.getTaskExecuteData();\r\n });\r\n \r\n $scope.ExecuteTask = function(form,outcomeId){\r\n \r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n //$rootScope.$broadcast('ProcessTaskWidgets',{});\r\n if (form.$submitted) $scope.setSubmitted(form);\r\n if (form.$valid) {\r\n \r\n TaskDataService.executeTask($scope.task_execute_id,$scope.dashboard.data,outcomeId,lang).then(function(data) {\r\n \r\n MessagingService.addMessage(data.data.msg,'success');\r\n $rootScope.$broadcast('ExecuteTaskPostProcess',data.data.ret_value);\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error'); \r\n \r\n });\r\n \t\t\t\t\r\n } // if (isValid)\r\n else\r\n {\r\n MessagingService.addMessage(\"Please enter required data\",'warning');\r\n \r\n }\r\n };\r\n // \r\n \r\n $scope.setSubmitted = function (form) {\r\n form.$setSubmitted();\r\n angular.forEach(form, function(item) {\r\n if(item && item.$$parentForm === form && item.$setSubmitted) {\r\n $scope.setSubmitted(item);\r\n }\r\n });\r\n} \r\n \r\n \r\n }\r\nexport function taskExecuteListCtrl ($scope, $rootScope,ProcessingService,MessagingService,TaskDataService,$state,$timeout) {\r\n$scope.CTRLNAME='taskExecuteListCtrl';\r\n \r\n $scope.stateName=$state.current.name;\r\n $scope.stateParams = $state.current.params;\r\n \r\n $scope.is_superuser = $rootScope.globals.currentUser.is_superuser;\r\n \r\n $scope.gridOptions = {\r\n enableGridMenu: true,\r\n //showGridFooter: true,\r\n\t\t//showColumnFooter: true,\r\n enableRowSelection: true,\r\n\t\tmultiSelect: false,\r\n\t\tenableHorizontalScrollbar : 0, \r\n\t\tenableVerticalScrollbar : 2,\r\n\t\t//enableFiltering: true,\r\n\t\tenableRowHeaderSelection: true,\r\n\t\tenableColumnResizing: true,\r\n useExternalPagination: true,\r\n paginationPageSizes: [5,10, 20, 50,100,200,500,1000],\r\n enablePaginationControls: false,\r\n //paginationPageSize: 10,\r\n //useExternalSorting : true,\r\n //useExternalFiltering: true,\r\n // minRowsToShow : 3\r\n }\r\n\r\n var paginationOptions = {\r\n pageNumber: 1,\r\n pageSize: 10,\r\n sort: null\r\n };\r\n \r\n var columnDefsInitiate = [\r\n { name: 'TaskInitiationId.id', displayName: 'ID', type: 'number', width:'5%',enableHiding: false, visible: true },\r\n { name: 'TaskInitiationId.InitiatorId.name', displayName: 'Started by'},\r\n { name: 'TaskInitiationId.Status.CodesDetailLang[0].Value', displayName: 'Task status' },\r\n { name: 'TaskInitiationId.Resourcedef.resourcedeflang_set[0].Name', displayName: 'Task name' },\r\n { name: 'TaskInitiationId.Resourcedef.resourcedeflang_set[0].Description', displayName: 'Task description' },\r\n { name: 'TaskInitiationId.Resourcedef.id', displayName: 'Task def id',enableHiding: false,visible: false },\r\n { name: 'TaskInitiationId.CreatedDateTime', displayName: 'Date created',enableHiding: false,type: 'date', cellFilter: 'date:\\'dd.MM.yyyy HH:mm:ss:sss\\'' },\r\n { name: 'TaskInitiationId.CreatedBy.name', displayName: 'Created by'},\r\n { name: 'ForGroup.name', displayName: 'For group'},\r\n ];\r\n \r\n var columnDefsExecute = [\r\n { name: 'id', displayName: 'Task Execute ID', type: 'number', width:'10%',enableHiding: false, visible: true },\r\n { name: 'resourcedef.resourcedeflang_set[0].Name', displayName: 'Task name' },\r\n { name: 'resourcedef.resourcedeflang_set[0].Description', displayName: 'Task description' },\r\n { name: 'actualOwner.name', displayName: 'Task Owner'},\r\n { name: 'status.CodesDetailLang[0].Value', displayName: 'Task status' },\r\n { name: 'TaskOutcomeCodeItemId.Name', displayName: 'Task outcome' },\r\n { name: 'resourcedef.id', displayName: 'Task def id',enableHiding: false,visible: false },\r\n { name: 'CreatedDateTime', displayName: 'Date created',enableHiding: false,type: 'date', cellFilter: 'date:\\'dd.MM.yyyy HH:mm:ss:sss\\'' },\r\n { name: 'createdBy.name', displayName: 'Created by'},\r\n ]; \r\n \r\n $scope.taskExecuteId = 0;\r\n $scope.taskInitiateId = 0;\r\n \r\n $scope.type = \"claim\";\r\n if ($state.current.name ==\"app.navbar.tasks.claim\")\r\n {\r\n $scope.gridOptions.columnDefs = columnDefsInitiate;\r\n \r\n }\r\n else\r\n {\r\n \r\n $scope.gridOptions.columnDefs = columnDefsExecute;\r\n $scope.type = \"execute\";\r\n }\r\n \r\n $scope.gridOptions.onRegisterApi = function (gridApi) {\r\n $scope.gridApi = gridApi;\r\n gridApi.selection.on.rowSelectionChanged($scope,function(row){\r\n $scope.taskSelected=row.isSelected\r\n \r\n if(row.isSelected){\r\n \r\n if ($scope.type == \"claim\")\r\n {\r\n $scope.selectedTask=row.entity.TaskInitiationId.id\r\n $scope.selectedTaskDefId=row.entity.TaskInitiationId.Resourcedef.id\r\n $scope.selectedTaskObject = row.entity.TaskInitiationId;\r\n $scope.taskInitiateId = $scope.selectedTask;\r\n }\r\n else\r\n {\r\n $scope.selectedTask=row.entity.id\r\n $scope.selectedTaskDefId=row.entity.resourcedef.id\r\n $scope.selectedTaskObject = row.entity;\r\n $scope.taskExecuteId = $scope.selectedTask;\r\n }\r\n \r\n }\r\n });\r\n \r\n //external pagination\r\n gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {\r\n paginationOptions.pageNumber = newPage;\r\n paginationOptions.pageSize = pageSize;\r\n $scope.ExecuteAllListPaginated($scope.type,1,false,\"\",$scope.nextPage,$scope.previousPage,newPage,pageSize);\r\n });\r\n \r\n gridApi.core.on.filterChanged($scope, function() {\r\n // Set some scope variable that both lists use for filtering\r\n // $scope.someFilterValueBothListsLookAt = ......\r\n });\r\n\r\n \r\n }\r\n \r\n \r\n \r\n $scope.ClaimSelected = function(){\r\n \r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n var forGroup = $scope.selectedTaskObject.forgroup[0].ForGroup;\r\n TaskDataService.ExecuteTaskAction($scope.selectedTask,0,'claim',lang,forGroup).then(function(data) {\r\n \r\n \r\n \r\n //refresh liste task-ova za claim\r\n $scope.ExecuteAllList($scope.type,1,true,data.data.msg);\r\n \r\n },function(error){\r\n \r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n } \r\n \r\n $scope.ExecuteAllList = function(type,filter,afterClaim,msgAfter){\r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n TaskDataService.getInitiatedTasks(type,filter).then(function(data) {\r\n \r\n $scope.gridOptions.data = data.data.results;\r\n if (afterClaim)\r\n {\r\n MessagingService.addMessage(msgAfter,'success');\r\n \r\n }\r\n },function(error){\r\n \r\n MessagingService.addMessage(error.msg,'error');\r\n });\r\n }\r\n $scope.ExecuteAllListPaginated = function(type,filter,afterClaim,msgAfter,urlNext,urlPrev,newPage,pageSize){\r\n \r\n var lang=$rootScope.globals.currentUser.lang;\r\n \r\n if (Math.ceil($scope.totalCount/pageSize)=0){ //load last state\r\n $scope.localVars.page_state = pageValueState.subject.getState;\r\n } else {\r\n //create new state\r\n //generate guid\r\n let uuid = UtilityService.uuidv4();\r\n $scope.localVars.page_state.page_state_id = $state.current.name+\"-\"+page_id+\"-\"+uuid;\r\n $scope.localVars.page_state.prev_page_state_id = $stateParams.parameters.prev_page_state_id;\r\n $scope.localVars.page_state.previousTask = $stateParams.parameters.prev_task\r\n pageValueState = $scope.ksm.addSubject($scope.localVars.page_state.page_state_id,null);\r\n pageValueStateName = pageValueState.subject.name\r\n \r\n if (pageValueState.status==='ok')\r\n\t\t\t\t\t\taction_page_value_changed = $scope.ksm.addAction(pageValueStateName,\"pageValueChanged\",page_value_changed);\r\n \r\n $scope.ksm.executeAction(pageValueStateName,\"pageValueChanged\", $scope.localVars.page_state);\r\n }\r\n }\r\n else\r\n {\r\n //create new state\r\n //generate guid\r\n let uuid = UtilityService.uuidv4();\r\n $scope.localVars.page_state.page_state_id = $state.current.name+\"-\"+page_id+\"-\"+uuid;\r\n $scope.localVars.page_state.prev_page_state_id = $stateParams.parameters.prev_page_state_id;\r\n $scope.localVars.page_state.previousTask = $stateParams.parameters.prev_task\r\n pageValueState = $scope.ksm.addSubject($scope.localVars.page_state.page_state_id,null)\r\n pageValueStateName = pageValueState.subject.name\r\n if (pageValueState.status==='ok') \r\n\t\t\t\t\taction_page_value_changed = $scope.ksm.addAction(pageValueStateName,\"pageValueChanged\",page_value_changed);\r\n \r\n $scope.ksm.executeAction(pageValueStateName,\"pageValueChanged\", $scope.localVars.page_state);\r\n }\r\n $scope.resourceDefinition.page_state_id=$scope.localVars.page_state.page_state_id\r\n $scope.resourceDefinition.prev_page_state_id=$scope.localVars.page_state.prev_page_state_id\r\n $scope.resourceDefinition.pageId= $scope.resourceId\r\n $scope.resourceDefinition.page_instance_id= $scope.localVars.page_state.page_instance_id\r\n $scope.resourceDefinition.prev_page_id=$scope.localVars.page_state.previousTask?.pageId\r\n $scope.resourceDefinition.prev_page_instance_id=$scope.localVars.page_state.previousTask?.page_instance_id\r\n \r\n $scope.ksm.executeAction(menuVisibilityName,menuVisibilityName+\"Changed\", $scope.localVars.page_state.Parameters);\r\n $scope.setProcessWidgetEvent()\r\n }//setPageStateFN\r\n\r\n\r\n let widgets_processed = function(data)\r\n {\r\n processWidgetsState.subject.setStateChanges = data;\r\n processWidgetsState.subject.notifyObservers(\"widgets_processed\");\r\n \r\n }\r\n \r\n\r\n $scope.getResourceForm = function () \r\n\t{ \r\n ResourcesDataService.getResourceForm($scope.resourceId,'i',lang).then(\r\n\t\t\t\tfunction(data) {\r\n if (data.data.widgets.length>0){\r\n $scope.dashboard = {widgets:{layout:data.data.widgets},data:{}}\r\n } else \r\n\t\t\t\t\t\t\t\t\t$scope.dashboard={widgets : {layout:GridsterService.getEmptyTaskForm()},data:{}}; \r\n \r\n\t\t\t\t\t\t\t\t$scope.resourceDefinition= data.data.resourceDefinition;\r\n $scope.resourceDefinition.formParams = {formViewType:2}\r\n\r\n $scope.gsrvc.setFormViewType($scope.resourceDefinition.formParams.formViewType)\r\n $scope.resourceDefinition.form_definition = false\r\n\r\n $scope.setPageState();\r\n if ($scope.resourceDefinition.Parameters.setBgColor) \r\n\t\t\t\t\t\t\t\t\t\t$scope.gsrvc.setBodyBgColor($scope.resourceDefinition.Parameters.bgColor)\r\n else $scope.gsrvc.resetBodyBgColor()\r\n $scope.pageLoaded=true\r\n \r\n if ($scope.resourceDefinition.ParametersLang===undefined) \r\n\t\t\t\t\t\t\t\t\t\t$scope.resourceDefinition.ParametersLang={InvalidFormMessage:'Please correct invalid entries'}\r\n else if ($scope.resourceDefinition.ParametersLang.InvalidFormMessage===undefined) \r\n\t\t\t\t\t\t\t\t\t\t$scope.resourceDefinition.ParametersLang.InvalidFormMessage = \"Please correct invalid entries\"\r\n \r\n },function(error){\r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.pageLoaded=true\r\n \r\n });\r\n };\r\n\t \r\n $scope.getResourceDefinition = function () {\r\n \r\n ResourcesDataService.getResourceDefAll($scope.resourceId).then(\r\n\t\t\t\t\tfunction(data) { \r\n $scope.resource = data.data;\r\n if ($scope.resource.Parameters==null) { \r\n $scope.resource.Parameters = {navbar:true,sideMenu:true,pageGridItems:[{id:1}],grid:{NoOfRows:null,NoOfColumns:null,RowGap:null,ColumnGap:null}} \r\n }\r\n\t\t\t\t\t\t\r\n $scope.localVars.page_state = $scope.resource;\r\n $scope.localVars.page_state.page_instance_id = $scope.page_instance_id\r\n $scope.localVars.sideMenus = $scope.resource.ResourceExtended?.page_menu\r\n \r\n if ($scope.localVars.sideMenus === undefined) $scope.localVars.sideMenus = []\r\n if ($scope.localVars.sideMenus.length>0) {\r\n if ($scope.localVars.page_state.Parameters==undefined)\t $scope.localVars.page_state.Parameters={}\r\n $scope.localVars.page_state.Parameters.sideMenu = true \r\n }\r\n $scope.getResourceForm()\r\n \r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n };\r\n\r\n\r\n $scope.setProcessWidgetEvent=function()\r\n {\r\n $scope.$on('ProcessWidgets'+$scope.localVars.page_state.page_state_id, \r\n\t\t\t\tfunction(event,data){ \r\n\t\t\t\t\tlet form = $scope['form'+$scope.resourceId]\r\n\t\t\t\t\tform.$setSubmitted()\r\n\t\t\t\t\t$scope.localVars.ProcessWidgets(form,data.action_index);\r\n });\r\n\r\n processWidgetsStateName= \"processWidgetsStateName\"+$scope.localVars.page_state.page_state_id;\r\n processWidgetsState= $scope.ksm.addSubject(processWidgetsStateName,$scope.localVars.page_state.page_state_id);\r\n let action_widgets_processed = $scope.ksm.addAction(processWidgetsStateName,\"widgets_processed\",widgets_processed);\r\n } \r\n\r\n\t\t\r\n $scope.localVars.ProcessWidgets = function(form,action_idx)\r\n\t\t{\r\n var lang=$rootScope.globals.currentUser.lang;\r\n if (form.$valid) { \r\n\t\t\t\tResourcesDataService.processWidgets($scope.resourceId,$scope.dashboard.data,$scope.localVars.page_state.page_instance_id,$scope.page_version).then(\r\n\t\t\t\t\tfunction(data) { \r\n if (data?.data?.msg!==\"\") MessagingService.addMessage(data.data.msg,'success');\r\n $rootScope.$broadcast('ProcessWidgetPostProcess'+$scope.localVars.page_state.page_state_id,data.data.ret_value);\r\n $scope.ksm.executeAction(processWidgetsStateName,\"widgets_processed\",{page_id:$scope.resourceId,action:'procwidgets','action_index':action_idx});\r\n },function(error){ \r\n MessagingService.addMessage(error.msg,'error');\r\n $scope.ksm.executeAction(processWidgetsStateName,\"widgets_processed\",{page_id:$scope.resourceId,action:'procwidgets','action_index':action_idx,'error':true}); \r\n });\r\n \r\n } // if (isValid)\r\n else {\r\n $scope.ksm.executeAction(processWidgetsStateName,\"widgets_processed\",{page_id:$scope.resourceId,action:'procwidgets','action_index':action_idx,'error':true}); \r\n MessagingService.addMessage($scope.resourceDefinition.ParametersLang.InvalidFormMessage,'warning'); \r\n }\r\n }; \r\n\t\t\t \r\n /*\r\n window.addEventListener('popstate', (e) => { // on browser \"Back\" click\r\n e.preventDefault(); \r\n let page_instance = $location.search().rinstance\r\n if(page_instance.toString()==\"0\") { // if initial load \r\n //window.history.pushState(null, null, null); // Prevent adding current URL to History API\r\n window.history.go(-2)\r\n }else window.history.back()\r\n \r\n });\r\n */\r\n \r\n \r\n $scope.openSecuredPage = function(pageId, pageVersion)\r\n\t{ \r\n let page_instance = $location.search().rinstance\r\n\r\n ResourcesDataService.openSecuredPage(pageId, pageVersion, page_instance).then(\r\n\t\t\r\n\t\t\tfunction(data) { \r\n\t\t\t\t//set page instance\r\n\t\t\t\t$scope.page_instance_id = data?.data?.instance?.id\r\n\t\t\t\t$state.params.rinstance = $scope.page_instance_id\r\n\t\t\t\t$scope.resource = data?.data?.params;\r\n\t\t\t\t\r\n\t\t\t\tif (page_instance?.toString()==\"0\") // mijenja URL bez zvanja kontrolera\r\n\t\t\t\t\t\t$state.transitionTo($state.current.name, $state.params, { notify: false, location:'replace', inherit:true})\r\n\t\t\t\tif ($scope.resource.Parameters==null) { \r\n\t\t\t\t\t\t$scope.resource.Parameters = {navbar:true,sideMenu:true,pageGridItems:[{id:1}],grid:{NoOfRows:null,NoOfColumns:null,RowGap:null,ColumnGap:null}} \r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t$scope.localVars.page_state = $scope.resource;\r\n\t\t\t\t$scope.localVars.page_state.page_instance_id = $scope.page_instance_id\r\n\r\n\t\t\t\t// here get page menu exe\r\n\t\t\t\tlet type = 1\r\n\t\t\t\tlet menu_id = $scope.resource.ResourceExtended?.rlinks[0]?.Resource2\r\n\t\t\t\tlet m_ver = $scope.resource.ResourceExtended?.rlinks[0]?.Resource2_Version ?? 0\r\n\r\n\t\t\t\t$scope.resourceDefinition= $scope.resource //data.data.resourceDefinition;\r\n\r\n\t\t\t\t$scope.resourceDefinition.formParams = {formViewType:2}\r\n\r\n\t\t\t\t$scope.gsrvc.setFormViewType($scope.resourceDefinition.formParams.formViewType)\r\n\t\t\t\t$scope.resourceDefinition.form_definition = false\r\n $scope.resourceDefinition.ExeVersion = pageVersion\r\n\t\t\t\tif ($scope.resourceDefinition.Parameters.setBgColor) \t$scope.gsrvc.setBodyBgColor($scope.resourceDefinition.Parameters.bgColor)\r\n\t\t\t\telse $scope.gsrvc.resetBodyBgColor()\r\n \r\n \r\n if (menu_id!=undefined) {\r\n MenuService.getMenusExe(menu_id,type,m_ver).then(\r\n function (datam) { \r\n $scope.menu_service.setSideMenu(menu_id,m_ver,datam.menus,datam.properties) \r\n if ($scope.menu_service.sideMenu.menus.length>0) {\r\n if ($scope.localVars.page_state.Parameters==undefined) $scope.localVars.page_state.Parameters={}\r\n $scope.localVars.page_state.Parameters.sideMenu = true\r\n }\r\n $scope.setPageState()\r\n $scope.pageLoaded=true \r\n })\r\n } else {\r\n \r\n $scope.menu_service.clearSideMenu()\r\n $scope.setPageState()\r\n $scope.pageLoaded=true\r\n }\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\tif (data.data.form.length>0)\r\n\t\t\t\t\t $scope.dashboard = {widgets:{layout:data.data.form},data:{}}\r\n\t\t\t\t else \r\n\t\t\t\t\t$scope.dashboard={widgets : {layout:GridsterService.getEmptyTaskForm()},data:{}}; \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n if ($scope.resourceDefinition.ParametersLang===undefined) \r\n\t\t\t\t\t$scope.resourceDefinition.ParametersLang={InvalidFormMessage:'Please correct invalid entries'}\r\n else if ($scope.resourceDefinition.ParametersLang.InvalidFormMessage===undefined) \r\n\t\t\t\t\t$scope.resourceDefinition.ParametersLang.InvalidFormMessage = \"Please correct invalid entries\"\r\n \r\n },function(error){\r\n $scope.formLoaded=true;\r\n $scope.unauthorised = true; \r\n $scope.pageLoaded=true \r\n $state.params.rinstance = undefined\r\n\r\n if (page_instance?.toString()==\"0\") \r\n\t\t\t\t\t$state.transitionTo( $state.current.name, $state.params, { notify: false, location:'replace', inherit:true}) \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n\r\n }\r\n\r\n\r\n $scope.openPublicPage = function(orgId,pageId, pageVersion)\r\n\t {\r\n \r\n let page_instance = $location.search().rinstance\r\n\r\n let schemaname = $location.search().env\r\n\r\n if (schemaname) { \r\n sessionStorage.setItem(\"environment\", schemaname)\r\n $rootScope.globals.currentEnv = schemaname\r\n } else $state.go(\"app.otherwise\")\r\n\r\n $scope.menu_service.setPublicPage(true)\r\n ResourcesDataService.openPublicPage(orgId,pageId, pageVersion, page_instance).then(\r\n\t\t\tfunction(data) {\r\n \r\n\t\t\t\t//set page instance\r\n\t\t\t\t$scope.page_instance_id = data?.data?.instance?.id\r\n\t\t\t\t$state.params.rinstance = $scope.page_instance_id\r\n\t\t\t\t\r\n\t\t\t\tif (page_instance?.toString()==\"0\") // mijenja URL bez zvanja kontrolera\r\n\t\t\t\t\t\t$state.transitionTo($state.current.name, $state.params, { notify: false, location:'replace', inherit:true})\r\n\t\t\t\t$scope.resource = data?.data?.params;\r\n\t\t\t\tif ($scope.resource.Parameters==null) { \r\n\t\t\t\t\t\t$scope.resource.Parameters = {navbar:true,sideMenu:true,pageGridItems:[{id:1}],grid:{NoOfRows:null,NoOfColumns:null,RowGap:null,ColumnGap:null}} \r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t$scope.localVars.page_state = $scope.resource;\r\n\t\t\t\t$scope.localVars.page_state.page_instance_id = $scope.page_instance_id\r\n\r\n\t\t\t\t$scope.resourceId = $scope.resource.uid\r\n\t\t\r\n\t\t\t\tlet type = 1\r\n\t\t\t\tlet menu_id = $scope.resource.ResourceExtended?.rlinks[0]?.Resource2\r\n\t\t\t\tlet m_ver = $scope.resource.ResourceExtended?.rlinks[0]?.Resource2_Version ?? 0\r\n\r\n\t\t\t\tAuthenticationService.SetCredentials(data.data.api_user,data.data.api_user?.username, \"\",false);\r\n\t\t\t \r\n\t\t\t \r\n\t\t\t\t$scope.resourceDefinition= $scope.resource //data.data.resourceDefinition;\r\n\t\t\t\t$scope.resourceDefinition.formParams = {formViewType:2}\r\n\r\n\t\t\t\t$scope.gsrvc.setFormViewType($scope.resourceDefinition.formParams.formViewType)\r\n\t\t\t\t$scope.resourceDefinition.form_definition = false\r\n\r\n\t\t\t\tif ($scope.resourceDefinition.Parameters.setBgColor) \r\n\t\t\t\t\t$scope.gsrvc.setBodyBgColor($scope.resourceDefinition.Parameters.bgColor)\r\n\t\t\t\telse $scope.gsrvc.resetBodyBgColor()\r\n\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\tif (data.data.form.length>0)\r\n\t\t\t\t\t $scope.dashboard = {widgets:{layout:data.data.form},data:{}}\r\n\t\t\t\telse \r\n\t\t\t\t\t$scope.dashboard={widgets : {layout:GridsterService.getEmptyTaskForm()},data:{}}; \r\n\r\n\t\t\t\t$scope.pageLoaded=true\r\n \r\n\t\t\t\tif (menu_id!=undefined) {\r\n\t\t\t\t\tMenuService.getMenusExe(menu_id,type,m_ver).then(\r\n\t\t\t\t\t\tfunction (datam) { \r\n\t\t\t\t\t\t\t$scope.menu_service.setSideMenu(menu_id,m_ver,datam.menus,datam.properties)\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif ($scope.menu_service.sideMenu.menus.length>0) {\r\n\t\t\t\t\t\t\t\tif ($scope.localVars.page_state.Parameters==undefined) $scope.localVars.page_state.Parameters={}\r\n\t\t\t\t\t\t\t\t$scope.localVars.page_state.Parameters.sideMenu = true\r\n\t\t\t\t\t\t\t}\r\n $scope.setPageState() \r\n\t\t \r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t} else \r\n {\r\n $scope.menu_service.clearSideMenu()\r\n $scope.setPageState()\r\n }\r\n \r\n\t\t\t\tif ($scope.resourceDefinition.ParametersLang===undefined) \r\n\t\t\t\t\t$scope.resourceDefinition.ParametersLang={InvalidFormMessage:'Please correct invalid entries'}\r\n\t\t\t\telse if ($scope.resourceDefinition.ParametersLang.InvalidFormMessage===undefined) \r\n\t\t\t\t\t$scope.resourceDefinition.ParametersLang.InvalidFormMessage = \"Please correct invalid entries\"\t\t\t\t\t\t \r\n \r\n },function(error){\r\n $scope.formLoaded=true;\r\n $scope.unauthorised = true; \r\n $scope.pageLoaded=true \r\n $state.params.rinstance = undefined\r\n if (page_instance?.toString()==\"0\") \r\n\t\t\t\t$state.transitionTo($state.current.name, $state.params, { notify: false, location:'replace', inherit:true}) \r\n MessagingService.addMessage(error.msg,'error'); \r\n });\r\n\r\n }\r\n\r\n if ($scope.resourceId != undefined){\r\n if ($state.current.name=='app.navbar.vpage') $scope.openSecuredPage($scope.resourceId, $scope.page_version);\r\n else if ($state.current.name=='app.navbar.public-vpage') $scope.openPublicPage($scope.orgId,$scope.resourceId, $scope.page_version);\r\n } else{\r\n $scope.formLoaded=true;\r\n $scope.unauthorised = true; \r\n }\r\n\r\n \r\n}\r\n","export default angular.module('Katalyo').run(['$templateCache', function($templateCache) {$templateCache.put('/0001_index/angularTemplates/appsettings.html','
Access permissions for \\'{{ app.Name }}\\'
Resource
Version
{{g.gname }}

{{item.name}} ({{ key}})
{{item.$resource_version}}

ALL

{{app.Name}}
v{{app.version}}
Created by {{app.OrgName}} Starting {{app.Name}}...
There are no applications in your organisation!
');\n$templateCache.put('/0001_index/angularTemplates/app_home.html','

Welcome to Katalyo community!

A place where citizen developers turn ideas into reality.

Join the no-code revolution and build applications without writing a single line of code.

If you are a citizen developer with a passion for Web3 try it now!
Signing up to Katalyo community is free and always will be!
Sign up now!
Already have an account? Login
\"Main
If you are a citizen developer with a passion for Web3 try it now!
Signup now! Signing up to Katalyo community is free and always will be!
Sign up now!
');\n$templateCache.put('/0001_index/angularTemplates/app_home_adria.html','
\"Katalyo

Dobrodo\\u0161li na Katalyo no-code platformu.

Va\\u0161e mjesto za digitalnu transformaciju i jednostavnu automatizaciju va\\u0161eg poslovanja.

\"Ilustracija
Ilustracija

Tra\\u017Eite aplikaciju Adria fleet management?

Adria fleet management je va\\u0161 prvi korak u digitalnoj transformaciji.
Za prijavu u Adria fleet management pritisnite gumb Prijava.

');\n$templateCache.put('/0001_index/angularTemplates/content.html','
');\n$templateCache.put('/0001_index/angularTemplates/error.html','
Ooops!

{{errorMsg}}

{{msg}}

Go to login page Visit our website
');\n$templateCache.put('/0001_index/angularTemplates/error_not_found.html','
Ooops!

{{errorMsg}}

You must have taken the wrong turn somewhere.

Path {{params.path}} does not exist!
Sign up for Katalyo Go to login page Visit our website
');\n$templateCache.put('/0001_index/angularTemplates/footer.html','
');\n$templateCache.put('/0001_index/angularTemplates/home.html','
Welcome {{currentUserFirstName}}!
Welcome {{currentUserFirstName}}!
CONNECTED ADDRESS: {{fd.eth_address}}
{{balance_ktlyo}} {{block_ktlyo}}
{{ktlyo_balance_msg}}
To access Katalyo\\'s web3 features you must connect Ethereum address with a minimum balance of 100 KTLYO!
Please transfer KTLYO to selected address or
To access Katalyo\\'s web3 features you must connect Ethereum address with a minimum balance of 100 KTLYO!
Connected address: {{fd.eth_address}}
{{balance_ktlyo}} ({{ktlyo_balance_msg}})
Unsubscribe Unsubscribing...
{{app.Name}}
v{{app.version}}
Created by {{app.OrgName}} Starting {{app.Name}}...
{{app.Name}}
v{{app.version}}
Created by {{app.OrgName}}
No applications found!
No subscribed applications found!
Click on All apps to subscribe to applications
There are no applications in your organisation!
It\\'s time to Create new application
Click to switch to development environment and with Katalyo builder create your first application!
');\n$templateCache.put('/0001_index/angularTemplates/home_v1.html','

Hi {{ currentUserFirstName}} , good to see you back!

Welcome to Katalyo!

Bring in the resources!

It\\'s always good to start with the introduction of the main concept for building applications with Katalyo!

Say hello to RESOURCES, the main building blocks of Katalyo platform.

You will define, setup and integrate many different resources to build all the pretty features of your applications.

Datasets, tasks, notifications or files are just a few of the resource types available and even an application itself is a resource. (Learn more about resources)

Enough talk, lets start building and the best way to start is to create your first resource, a brand new application!

You can customize your home page to fit your needs by clicking on a lock above!

Build new application

If you want to build a new application click on Build new application button

OR

Search applications

If you want to work with existing applications click on Search applications button

Customize your home page

To customize home page add any task

{{$select.selected.name}} {{ task.name }}

Check out these #Apps powered by Katalyo!

To create #Apps in Katalyo all you need to do is assign #hashtags to tasks.

$index+1}\">

#{{app.name}}

');\n$templateCache.put('/0001_index/angularTemplates/how-it-works.html','{% load staticfiles %}Katalyo | Next generation Zero-code platform powered by EOS | How it works

How it all works


h4 class=\"tag\"><The mission/>

Katalyo is on a mission to empower people and provide them with the tools to build enterprise grade applications, even if they do not have the necessary coding skills. Why are we doing this or what problem are we trying to solve? There is saying that software developers are people with a magical skill of turning coffee into code. The demand for new application is huge and there\\'s either not enough coffee or developers in the world to bring all innovative solution to life. Katalyo has the solution in the form of the next generation low-code platform powered by the EOS blockchain.


<What is different about Katalyo?/>

Katalyo is built in a way to mimic real life and deliver automation where the work is being done. In our daily lives we use various resources to achieve desired results. For example resources like raw materials or parts are used to build all kind of products. In a services industry things are not so tangible however also various resources are used to provide a service. For that reason the main building block of Katalyo system is a resource. The system provides the tools to create and manage different types of resources like datasets, files or notifications for example. There is however a special type of a resource and that is work i.e. a task which has the ability to transform other resources and enable creation of workflows. With this simple concept people with different backgrounds and skills can easily design and develop various applications without writing a single line of code. This approach takes productivity to a new level even for software developers however the main benefit comes from increasing the pool of people that are able to deliver new functionality and ideas to life.


<Why blockchain?/>

Blockchain is the most hyped technology in the world today and some are trying to apply the blockchain as the solution to every problem. At Katalyo we strongly believe that blockchain is a revolutionary technology that will transform many aspects of our lives in the future however it can not be applied as a solution to every problem. With that being said Katalyo is using a blockchain to introduce a token that is used to enable a rewarding system and enable and drive a marketplace where people can build various features and services on the platform and be rewarded in the form of Katalyo token. In addition the blockchain is used to enable advanced data management services like data immutability. This essentially means that data managed in the system can be tracked and managed on the blockchain for cases where data immutality feature is required which will enables a new level of both transparency and security of the data.


<Why EOS blockchain?/>

EOS was the blockchain technology of choice due to it\\'s 3.0 features however two main features stand out and those are high transaction throughput and zero transaction fees for the end users.

');\n$templateCache.put('/0001_index/angularTemplates/landing.html','{% load staticfiles %}Katalyo | Next generation Zero-code platform powered by EOS
Build applications.
Earn rewards.
No coding.
Welcome to Katalyo!
Katalyo is an open-source, decentralised, community driven zero-code (aka low-code) platform powered by the EOS blockchain.
Token, community and a marketplace
Katalyo token created on the EOS blockchain is a force that will drive the community Katalyo aims to build. When you join you get access to the zero-code platform like no other empowering people to create applications without writing a single line of code. If you create something great that other members want to use you should get rewarded and with Katalyo you absolutely do get rewarded in the form of Katalyo token. Rewards are coming in as long as the application is being used by other organisations or individuals. If you just want to use aplications built by other members of the community you can do just that. Whether you\\'re a Creator or a Consumer your journey with Katalyo has 3 simple steps and it starts with signing up.
Creators
Consumers
Step 1: Sign up
Step 1: Sign up
Step 2: Create applications
Step 2: Find applications
Step 3: Earn rewards!
Step 3: Start working!
Consumers
As the community grows the consumers will have access to a plethora of applications for many different needs. The real strenght of the zero-code platform like Katalyo is shown when the existing functionality is not fitting perfectly. Changes can be introduced at 10x when compared to traditional programming and if the original Creator is not available to help services can be requested from other Creators in the community. But when Consumers see how easy it is to build features in Katalyo they will soon become Creators themselves.
Creators
Creators of the apps are equipped with an easy to use visual tools that empowers them to create applications without writing a single line of code. With simple yet powerful zero-code engine building apps is a breeze. At this stage Katalyo is best suited for creating applications that require data capture and workflow capabilities including collaboration and notification capabilities. On top of that Katalyo enables creation of tokens and immutable datasets securely stored on the EOS blockchain.
Marketplace
Finally creators and consumers meet in the marketplace. Marketplace is established by seemingly integrating Katalyo token into the platform. Value is exchanged auto-magically without any need for intervention of the participants.
Why Katalyo zero-code engine ?
WYSIWYG
What You See Is What You Get is one of the main principles of creating applications in Katalyo
It is of critical importance to provide instant feedback when building application features. Katalyo is using What You See Is What You Get approach whrever and whenever that is possible and the most efficient way to build certain functionality. With this approach you immediatelly know how will some functionality will behave and not find out later that particular checkbox completelly changes the way designed feature works.
Just in time
In todays volatile environment the technology must be an enabler and not the bottleneck. With it\\'s JIT (Just In Time) capabilities you can change the way the system works while you\\'re working. In matter of minutes functionality can be adjusted to fully fits the needs and prevent issues later due to missing or poor quality of the captured data.
Automated devops & version control
Devops with Katalyo is a breeze. You always know what version of the system you\\'re operating including in-built version control for platform building blocks like resources or forms. The plaform comes with a out-of-the-box test environment with one-click migration from test to production environment.
Data immutability
Trust in business is important however building trust takes time and effort. With it\\'s data immutability features Katalyo creates trust beetwen two parties where trust doesn\\'t exist. Data can be stored or anchored on the blockchain to make sure that noone has tampered with the data and to be able to track the changes without a shred of a doubt. To accomplish this Katalyo integrates with EOS the most powerful blockchain infrastructure for building decentralised applications.
Gamification
With it\\'s low-code capabilities Katalyo empowers individuals and organisations to create custom gamification features that will best suit their needs but with the Katalyo token gamification is taken to a whole new level where you can reward people with real and tangible value which with adoption will only increase in value.

Meet the founding team

As in every startup we all wear many hats and do whatever is required from our venture but we do try to split the work to make it as efficient as possible

Igor
Co-founder
Ivica
Co-founder
Daniel
Co-founder

Open source

We firmly believe in sharing knowledge and that is why we\\'re building our platform on open source techonology stack.
Angular JS, Django Rest Framework, PostgreSQL. Naturally our platform will be fully open source so that everyone can get involved and participate in digital revolution that Katalyo plans to be a huge part of.
Contact Us
If you would like to contact us, this is the way

We\\'ll never share your email with anyone else.
Copyright © Katalyo. All rights reserved.
');\n$templateCache.put('/0001_index/angularTemplates/landing_old.html','{% load staticfiles %}Katalyo | Next generation Zero-code platform powered by EOS
Build applications.
Earn rewards.
No coding.

Katalyo is the next-generation low-code platform

powered by

Welcome to Katalyo - the next generation low-code platform

This is Katalyo community
Katalyo is building a community and a marketplace for creators and consumers
Both creators and consumers a working with Katalyo using a three simple steps
Consumers
Consumers are utilising the power of Katalyo community and marketplace
Start working immediately

What is different about Katalyo

WYSIWYG
What You See Is What You Get is of the main principles of creating applications in Katalyo
It is imperative that you can immediatelly see what will you application look like and not click on various boxes and later learn it changes the way the applications works.
JIT
New demands are The customers, the competitors, the goverment and regulators are all pressuring organisations
Just In Time empowers people and organisations to be agile and change the way application is working even during the execution of the process.

Meet the founding team

As in every startup we all wear many hats and do whatever is required from our venture but we do try to split the work to make it as efficient as possible

Igor
Co-founder
Daniel
Co-founder
Ivica
Co-founder
Open source
We firmly believe in sharing knowledge and that is why we\\'re building our platform on open source techonology stack. Angular JS, Django Rest Framework, Postgres. Naturally our platform will be fully open source so that everyone can get involved and participate in digital revolution that Katalyo plans to be a huge part of.
');\n$templateCache.put('/0001_index/angularTemplates/landing_old2.html','{% load staticfiles %}Katalyo | Next generation Zero-code platform powered by EOS
Build applications.
Earn rewards.
No coding.
powered by

Katalyo is the next-generation low-code platform

Welcome to Katalyo - the next generation low-code platform

This is Katalyo community
Katalyo is building a community and a marketplace for creators and consumers
Both creators and consumers a working with Katalyo using a three simple steps
Consumers
Consumers are utilising the power of Katalyo community and marketplace
Start working immediately
Creators
Creators are working and creating
Start working immediately
Market
Marketplace enables all participants to...
Start working immediately

What is different about Katalyo

WYSIWYG
What You See Is What You Get is of the main principles of creating applications in Katalyo
It is imperative that you can immediatelly see what will you application look like and not click on various boxes and later learn it changes the way the applications works.
JIT
New demands are The customers, the competitors, the goverment and regulators are all pressuring organisations
Just In Time empowers people and organisations to be agile and change the way application is working even during the execution of the process.
Automated dev-ops and version control
Automated dev-ops and version control is o..
It is imperative ...
Immutable
Immutable data management is needed to...
Security is the key...
Gamification
Work is a game...
Gamification is ...

Meet the founding team

As in every startup we all wear many hats and do whatever is required from our venture but we do try to split the work to make it as efficient as possible

Igor
Co-founder
Daniel
Co-founder
Ivica
Co-founder
Open source
We firmly believe in sharing knowledge and that is why we\\'re building our platform on open source techonology stack. Angular JS, Django Rest Framework, Postgres. Naturally our platform will be fully open source so that everyone can get involved and participate in digital revolution that Katalyo plans to be a huge part of.
');\n$templateCache.put('/0001_index/angularTemplates/landing_old3.html','{% load staticfiles %}Katalyo | Next generation Zero-code platform powered by EOS
Build applications.
Earn rewards.
No coding.
Katalyo is the next-generation low-code platform
Welcome to Katalyo!
This is Katalyo community
Katalyo is building a community and a marketplace for creators and consumers
Both creators and consumers a working with Katalyo using a three simple steps
Consumers
Consumers are utilising the power of Katalyo community and marketplace
Start working immediately
Creators
Creators are working and creating
Start working immediately
Market
Marketplace enables all participants to...
Start working immediately
What is different about Katalyo
WYSIWYG
What You See Is What You Get is of the main principles of creating applications in Katalyo
It is imperative that you can immediatelly see what will you application look like and not click on various boxes and later learn it changes the way the applications works.
JIT
New demands are The customers, the competitors, the goverment and regulators are all pressuring organisations
Just In Time empowers people and organisations to be agile and change the way application is working even during the execution of the process.
Automated DEVOPS
Automated dev-ops and version control is o..
It is imperative ...
Immutable
Immutable data management is needed to...
Security is the key...
Gamification
Work is a game...
Gamification is ...

Meet the founding team

As in every startup we all wear many hats and do whatever is required from our venture but we do try to split the work to make it as efficient as possible

Igor
Co-founder
Daniel
Co-founder
Ivica
Co-founder
Open source
We firmly believe in sharing knowledge and that is why we\\'re building our platform on open source techonology stack.
Angular JS, Django Rest Framework, Postgres. Naturally our platform will be fully open source so that everyone can get involved and participate in digital revolution that Katalyo plans to be a huge part of.
Contact Us
If you would like to contact us, this is the way

We\\'ll never share your email with anyone else.
');\n$templateCache.put('/0001_index/angularTemplates/layout.html','
0\">
0,\\'col-24\\':!menu_service.sideMenu.menus.length,\\'card mt-2\\':menu_service.sideMenu.params.ShowCard}\">
');\n$templateCache.put('/0001_index/angularTemplates/market.html','
No new apps in the marketplace!
{{app.name}}
v.{{app.version}}
Created by {{app.orgname}} {{app.install_type_loader}} {{app.name}}...
Description:
{{app.description}}
Nothing is installed here!
To install new apps go to New apps
{{app.name}}
Installed: v{{app.install_version}}
Created by {{app.orgname}} {{app.install_type_loader}} {{app.name}}...
Description:
{{app.description}}
Up to date
0\" class=\"px-2 w-100\" style=\"top: -40px;position: relative;margin-left: auto;margin-right: auto;width: 40%;\">
{{selectedApp.name}}
by {{params.selectedApp.orgname}}
App description
{{selectedApp.description}}
');\n$templateCache.put('/0001_index/angularTemplates/menu.html','
0 || menu_service.getMenuEditMode()) && showSideMenu\" class=\"row m-0\">
0\" class=card>
Editing side menu
');\n$templateCache.put('/0001_index/angularTemplates/navbar.html','');\n$templateCache.put('/0001_index/angularTemplates/onboarding.html','

Welcome {{currentUserFirstName}} !

Thanks for joining an amazing community of citizen developers! Katalyo will empower you to design and develop awesome applications without writing a single line of code!

How it all works?

Katalyo is a component based no-code platform from top to bottom. Resource is the name of the main building block and you will use various resources in diverse ways to build full blown applications. It\\u2019s simple, fast and scalable.

Resources

A cornerstone of the Katalyo platform is the resource, serving as a fundamental building block.Think of it as a puzzle piece; when combined, these resources create a cohesive and complete product. Various resource types play a crucial role in constructing applications on the platform, encompassing datasets, files, pages, menus, and even the application itself, which is essentially another type of resource.

Dataset

A dataset serves as a resource for the storage and retrieval of data within an application. It can acquire data from various sources, including a database table, a REST API endpoint, or information stored on a blockchain. Almost every other resource within an application relies on data sourced from datasets, forming a fundamental link in the functionality of the application. Typically, a single application will utilize multiple datasets.

Page

An application is composed of one or more pages, each serving as a means for users to interact with the application. Typically, a page includes one or more form elements, commonly known as widgets. These widgets are designed to enable users to input, view, or update data within the application. In essence, a page acts as a user interface, providing a platform for users to engage with the application.

Menu

The menu is the primary navigation resource in the application. Users can navigate throughout the entire application using the application menu, while side menus aid in navigation within specific pages of the application. Unlike page menus, there\\u2019s only one application menu per application.

Application

An application is a collection of resources working in unison to offer a specific functionality to users. Application brings together various resources to ensure they function collectively, presenting a consolidated solution.

Are you sure you don\\'t want to see this tutorial again?

');\n$templateCache.put('/0001_index/angularTemplates/onboarding_old.html','

Hi {{ currentUserFirstName}} and welcome to Katalyo!

Having the right resources for the job! ili Continuosly innovate with the right resources! ili To build the application of your dreams you need the right resources!

It\\'s always good to start with the introduction of the main concept for building applications with Katalyo!

Say hello to RESOURCES, the main building blocks of Katalyo platform.

You will define, setup and integrate many different resources to build all the awesome features of your applications.

Datasets, tasks, notifications or files are just a few of the resource types available and even an application itself is a resource. (Learn more about resources)

Enough talk, lets start building and the best way to start is to create your first resource, a brand new application!

Build new application

If you want to build a new application click on Build new application button

OR

Search applications

If you want to work with existing applications click on Search applications button

Hi {{ currentUserFirstName}} and welcome to Katalyo!

You\\'ve successfuly created your first application!

Continue building {{application_name}} by setting up menus and tasks that will be part of your application!

');\n$templateCache.put('/0001_index/angularTemplates/register.html','
Ooops!
{{errorMsg}}
Sign up for Katalyo
Go to login page
Visit our website
Checking request...

Welcome onboard Katalyo!

Please enter basic info and you\\'ll be up and running in no time!

Organisation name is required
First name is required
Last name is required
Username is required
Please enter strong password (Minimum eight characters, at least one uppercase letter, one lowercase letter, one number and one special character)
Passwords don\\'t match
{{errorMsg}}
Processing onboarding...
');\n$templateCache.put('/0001_index/angularTemplates/register_old.html','
Ooops!
{{errorMsg}}
Sign up for Katalyo
Go to login page
Visit our website
Checking request...

Welcome onboard Katalyo!

We know you can\\'t wait to start building!
Please enter basic info and you\\'ll be up and running in no time!
Step 2. Register your EOS account (Why do I need EOS account?)
You need EOS account because Katalyo token is built on EOS blockchain (learn more about EOS blockchain)
Don\\'t have an EOS account? Don\\'t worry you can still use Katalyo and add your EOS account later at any time. However you will need an EOS account if you want full control of your Katalyo tokens!
Organisation name is required
First name is required
Last name is required
Username is required
Please enter strong password (Minimum eight characters, at least one uppercase letter, one lowercase letter, one number and one special character)
Passwords don\\'t match

Enter organisation details

Organisation name is required
{{$select.selected.name}} {{country.name}}

Select country

{{$select.selected.name}} {{industry.name}}

Select industry

Register EOS account
EOS account is required

Searching for EOS account...

Account name

{{eosAccountObject.account_name}}

Total balance

{{eosAccountObject.balance_total}} EOS

Proxy

{{eosAccountObject.is_proxy}}

Privileged

{{eosAccountObject.privileged}}

Staked balance{{eosAccountObject.balance_staked}} EOS
Unstaked balance{{eosAccountObject.balance_unstaked}} EOS
CPU {{eosAccountObject.cpu_limit_used}} {{eosAccountObject.cpu_unit_used}} / {{eosAccountObject.cpu_limit_max}} {{eosAccountObject.cpu_unit_max}} ({{eosAccountObject.cpu_weight}})
RAM {{eosAccountObject.ram_usage}} {{eosAccountObject.ram_unit_usage}} / {{eosAccountObject.ram_quota}} {{eosAccountObject.ram_unit_quota}}
Network {{eosAccountObject.net_limit_used}} {{eosAccountObject.net_unit_used}} / {{eosAccountObject.net_limit_max}} {{eosAccountObject.net_unit_max}} ({{eosAccountObject.net_weight}})
Processing onboarding...
{{errorMsg}}
');\n$templateCache.put('/0001_index/angularTemplates/signup-old.html','
Build with Katalyo.
Unleash innovation.
No coding.
Signup now!
Not only it\\'s free but you can earn rewards for building with Katalyo!
Already have an account? Log in

Ready to build with Katalyo?

Enter your e-mail and start building today
Processing signup request...
E-mail is required
By clicking \"Sign up for Katalyo\", you agree to our terms of service and privacy statement.
Your e-mail will be used only to interact with the system and to receive notifications.
At Katalyo we value your privacy so we promise never to share your e-mail with anyone
Thank you for signing up to Katalyo !
You have signed up with email: {{email}}
To complete the signup process please check your inbox and verify entered e-mail!
{{errorMsg}}
');\n$templateCache.put('/0001_index/angularTemplates/signup.html','
Start building today
Build with Katalyo.
Unleash innovation.
No coding.
Did you know you can earn rewards for building with Katalyo!
Sign up
E-mail is required
By clicking \"Sign up for Katalyo\", you agree to our terms of service and privacy statement. Your e-mail will be used only to interact with the system and to receive notifications. At Katalyo we value your privacy so we promise never to share your e-mail with anyone
By clicking \"Sign up for Katalyo\", you agree to our terms of service and privacy statement.
Your e-mail will be used only to interact with the system and to receive notifications.
At Katalyo we value your privacy so we promise never to share your e-mail with anyone
Already have an account? Log in
Processing signup request...
Thank you for signing up for Katalyo !
To complete the signup process please check your inbox at {{email}} !
{{errorMsg}}
');\n$templateCache.put('/0001_index/angularTemplates/simpleheader.html','

Katalyo

');\n$templateCache.put('/0001_index/angularTemplates/tasktoolbox.html','
');\n$templateCache.put('/0001_index/angularTemplates/toolbox.html','
');\n$templateCache.put('/0001_index/angularTemplates/unregister.html','
Ooops!
{{errorMsg}}
Sign up for Katalyo
Go to login page
Visit our website
{{retMsg}}
Sign up for Katalyo
Go to login page
Visit our website
Checking request...

We\\'re sorry to see you go!

If you\\'ve changed your mind you can continue with signup!

Processing...
{{errorMsg}}
');\n$templateCache.put('/0002_auth/angularTemplates/changePassword.html','
{{errorMsg}}

{{errorMsg}}

{{successMsg}}
');\n$templateCache.put('/0002_auth/angularTemplates/changePasswordRequest.html','
{{errorMsg}}
  Password reset
   Logging in...

Enter your e-mail to reset password

To complete the password reset process please check your inbox at

   Processing request...
E-mail is required

 E-mail : {{email}}

');\n$templateCache.put('/0002_auth/angularTemplates/logged_out.html','

{{errorMsg}}

.

.

');\n$templateCache.put('/0002_auth/angularTemplates/login.html','
{{errorMsg}}
{{pageLabels.loginMsg || \\'Logging in...\\'}}

');\n$templateCache.put('/0002_auth/angularTemplates/loginVue.html','
{{errorMsg}}
{{pageLabels?.loginPageHeader || \\'Please login\\'}}
{{pageLabels?.loginMsg || \\'Loging in...\\'}}
{{ pageLabels?.usernameError || \\'Username is required\\'}}
{{pageLabels?.passwordError || \\'Password is required\\'}}

');\n$templateCache.put('/0002_auth/angularTemplates/selectenvironment.html','
You are in {{menu_service.getcurrentEnv().description}}
Select Environment: Switch to:
Katalyo platform version 0.9.5beta
Build ac9d965729737e9661acde2f6e5ede08a6824565
');\n$templateCache.put('/0002_auth/angularTemplates/simpleheader.html','');\n$templateCache.put('/0002_auth/angularTemplates/sso.html','
{{errorMsg}}
  Please login
   Logging in...

');\n$templateCache.put('/0003_resources/angularTemplates/applicationDefinition.html','
{{resource.ResourceName}} {{resource.Name}}
0)\" class=col-auto>ID: {{resource.id}}
0)\" class=\"small bold mt-1\">Active 0)\" class=\"small bold mt-1\">Not active
{{resource.ResourceName}} PUBLISH
Version
Description
Production
Market
{{element.Version}}
{{element.Description}}
X
Current version: {{resource.Version}}.0
Published:
Published definition (no changes)
0\">Changes for publishing
Last change: {{resource.ChangedDateTime | date:\"dd.MM.yyyy \\'at\\' HH:mm:ss\"}}
Nothing yet published !
{{::pageLabels.applicationMenu || \\'Application menu\\'}}
{{pageState.selectedMenu.name}}
No versions found!
Select aplication menu
Select default page
0\" class=mt-2>Select version
No versions found!
Select help page
0\" class=mt-2>Select version
No versions found!
');\n$templateCache.put('/0003_resources/angularTemplates/appMenuDefinition.html','
{{resource.ResourceName}} {{resource.Name}}
ADVANCED {{resource.ResourceName}} PROPERTIES
Menu style
Publish {{resourceDefinition.ResourceName}}
Published
1\">Version {{publishedResource.PublishedVersion}} published by {{publishedResource.ChangedBy}} on {{publishedResource.ChangedDateTime | date:\"dd.MM.yyyy \\'at\\' HH:mm:ss\"}} Version {{publishedResource.PublishedVersion}} published by {{publishedResource.PublishedBy}} on {{publishedResource.DateTime | date:\"dd.MM.yyyy \\'at\\' HH:mm:ss\"}} 1\">(Version 1 published by {{publishedResource.PublishedBy}} on {{publishedResource.DateTime | date:\"dd.MM.yyyy \\'at\\' HH:mm:ss\"}})
Not published
Published definition (no changes)
0\">Changes for publishing
');\n$templateCache.put('/0003_resources/angularTemplates/datasetTransform.html','

Dataset mappings

Mapping Name:

Display Name:
 
Select dataset1:
 
Select version:
 
Select dataset2:
 
Select version:
 
Select mapping type:


Dataset transforms



Transform Name:

Display Name:
Field1
 Transform Type for Field1{{$select.selected.Name}} ({{$select.selected.id}}) {{dataset.Name}} ({{dataset.id}})
 
Dataset for Field1
{{$select.selected.name}} ({{$select.selected.id}}) {{dataset.name}} ({{dataset.id}})
 
Select Dataset Property
{{$select.selected.FieldName}} ({{$select.selected.id}}) {{dataset.FieldName}} {{dataset.FieldType}} ({{dataset.id}})
Field2
{{$select.selected.Name}} ({{$select.selected.id}}) {{dataset.Name}} ({{dataset.id}})
 
Select Dataset for Field2{{$select.selected.name}} ({{$select.selected.id}}) {{dataset.name}} ({{dataset.id}})
 
Field2
{{$select.selected.FieldName}} ({{$select.selected.id}}) {{dataset.FieldName}} {{dataset.FieldType}} ({{dataset.id}})



0 && dataset2Fields.length>0\" class=\"px-0 col-12\">
{{mappingFields.mappingName}}
DATASET {{mappingFields.dataset1.id}}
{{item.Label }} ({{item.GenericType}})
DATASET {{mappingFields.dataset2.id}}
{{$index+1}}. {{item2.Label}} ({{item2.GenericType}} - from)
{{field.Label}} ({{field.GenericType}})
{{$index+1}}. {{item2.Label}} ({{item2.GenericType}} - to)
{{field.Label}} ({{field.GenericType}})
{{$index+1}}. {{item2.Label}} ({{item2.GenericType}})
{{field.Label}} ({{field.GenericType}})

Field 1

Field 2

{{tf.id}}
group
code
dataset
group
code
dataset
');\n$templateCache.put('/0003_resources/angularTemplates/editResource.html','

Edit {{resource.ResourceType.name}}

{{resource.ResourceType.name}}
0\" ng-class=\"{ \\'has-error\\' : (form.$submitted || form.Subject.$touched) && form.Subject.$invalid }\">

Enter resource name

Enter resource subject

Enter resource description(min 20 chars).

{{$select.selected.name}} {{rt.name}}

Select resource type

{{$select.selected.name}} {{rt.name}}

Select resource hashtags

{{$select.selected.name}} {{rs.name}}

Select resource status

');\n$templateCache.put('/0003_resources/angularTemplates/formDefinition.html','
{{resource.Name}} {{resource.ResourceCode}}
0)\" class=\"col-auto mx-1\" id=version>ID {{resource.id}}
0)\" class=\"tag text-success my-1\">STATUS 0)\" class=\"small bold mr-4\">Active 0)\" class=\"small bold mr-4\">Not active
VERSION {{resource.Version}}
0)\" class=small>TYPE
{{resource.ResourceName}}
CREATED {{resource.CreatedDateTime | date: \"dd.MM.yyyy \\'at\\' HH:mm:ss\"}} (by {{resource.CreatedBy.first_name}} {{resource.CreatedBy.last_name}})
MODIFIED {{resource.ChangedDateTime | date:\"dd.MM.yyyy \\'at\\' HH:mm:ss\"}} (by {{resource.ChangedBy.first_name}} {{resource.ChangedBy.last_name}})
{{resource.ResourceName}} PROPERTIES

Enter resource name

Enter resource subject

Enter resource description(min 20 chars).

{{$select.selected.name}} {{rt.name}}

Select resource hashtags

Active
Publish {{resource.ResourceName}}
Published
Version {{publishedResource.PublishedVersion}} published by {{publishedResource.PublishedBy}} on {{publishedResource.DateTime | date:\"dd.MM.yyyy \\'at\\' HH:mm:ss\"}} (last changed by {{publishedResource.ChangedBy}} on {{publishedResource.ChangedDateTime | date:\"dd.MM.yyyy \\'at\\' HH:mm:ss\"}})
Not published
0\">Pending changes
{{resource.ResourceName}} changes to publish
To publish dataset first deploy all pending database changes!
Form definition
Properties
');\n$templateCache.put('/0003_resources/angularTemplates/importData.html','

Import Data

Select mapping


{{$index+1}}. {{file.name}}
Size: ({{ (file.size/1000).toFixed(2) }} kb) {{file.status}} {{file.metaStatus}}
');\n$templateCache.put('/0003_resources/angularTemplates/integrationDefinition.html','
{{resource.Name}}

Enter API endpoint

Enter API method (POST, GET,...)

Enter resource name

Enter resource subject

Enter resource description(min 20 chars).

Created by {{resource.CreatedBy.first_name}} {{resource.CreatedBy.last_name}}, {{resource.CreatedDateTime | date: \"dd.MM.yyyy \\'at\\' HH:mm:ss\"}}
Last change by {{resource.ChangedBy.first_name}} {{resource.ChangedBy.last_name}}, {{resource.ChangedDateTime | date:\"dd.MM.yyyy \\'at\\' HH:mm:ss\"}}
');\n$templateCache.put('/0003_resources/angularTemplates/mappingDefinition.html','
{{resource.ResourceName}} {{resource.Name}}
0)\" class=\"col-auto mx-1\">ID {{resource.id}}
0)\" class=\"tag text-success my-1\">{{resource.ResourceName}} 0)\" class=\"small bold mr-4\">Active 0)\" class=\"small bold mr-4\">Not active
VERSION {{resource.NewVersion}}
0)\" class=small>STATUS
CREATED {{resource.CreatedDateTime | date: \"dd.MM.yyyy \\'at\\' HH:mm:ss\"}} (by {{resource.CreatedBy.first_name}} {{resource.CreatedBy.last_name}})
MODIFIED {{resource.ChangedDateTime | date:\"dd.MM.yyyy \\'at\\' HH:mm:ss\"}} (by {{resource.ChangedBy.first_name}} {{resource.ChangedBy.last_name}})
Publish {{resourceDefinition.ResourceName}}
Published
Version {{publishedResource.Version}} published by {{publishedResource.PublishedBy}} on {{publishedResource.DateTime | date:\"dd.MM.yyyy \\'at\\' HH:mm:ss\"}} (last changed by {{publishedResource.ChangedBy}} on {{publishedResource.ChangedDateTime | date:\"dd.MM.yyyy \\'at\\' HH:mm:ss\"}})
Not published
Published definition (no changes)
0\">Changes for publishing
0 && dataset2Fields.length>0\" class=\"col text-right\">
0 && dataset2Fields.length>0\">
Mapping definition
 
Select dataset1:
 
Select version:
 
Select dataset2:
 
Select version:
0 && dataset2Fields.length>0 && mappHead.id\" ng-if=\"!loadingResource && !savingHead\" class=row>
Field level mapping
DATASET {{mappHead.Dataset1Name}} ({{mappHead.Dataset1uid}})
{{item.Label }} ({{item.GenericType}})
{{item.FieldName}}
DATASET {{mappHead.Dataset2Name}} ({{mappHead.Dataset2uid}})
{{$index+1}}. {{item2.Label}} ({{item2.GenericType}} - from)
{{field.Label}} ({{field.GenericType}})
{{$index+1}}. {{item2.Label}} ({{item2.GenericType}} - to)
{{field.Label}} ({{field.GenericType}})
{{$index+1}}. {{item2.Label}} ({{item2.GenericType}}:Field{{item2.ItemId}}_{{resource.OrganisationId}})
{{field.Label}} ({{field.GenericType}})
');\n$templateCache.put('/0003_resources/angularTemplates/mappingsForm.html','

{{resourceDefinition.name}}

Available mappings:

Transform packages:

FILE

Import fields from CSV file:

FILE FIELDS

{{cells.name}}

RESOURCE FIELDS

{{item.placeholder}} ({{item.name}})
{{cells.name}}
{{$select.selected}} {{dataset.name}} ({{dataset.id}}){{$select.selected.FieldName}} {{$select.selected.FieldType}} ({{$select.selected.id}}) {{dataset.FieldName}} {{dataset.FieldType}} ({{dataset.id}})

TRANSFORM

{{cells.name}}
Name
');\n$templateCache.put('/0003_resources/angularTemplates/menusDefinition.html','
Menu edit mode
Click on navigation bar link(s) to edit menu items
');\n$templateCache.put('/0003_resources/angularTemplates/newResource.html','
Create new resource
{{resourceType.ResourceName}}
Select dataset type
Database table
Define and create database table
External table
Connect to existing database table
Resource view
Combine multiple data sources into a single view
API proxy dataset
Smartcontract dataset
{{resource.ResourceType.ResourceName}} definition
0\">

Enter {{ resource.ResourceType.ResourceName}} name !

Enter {{ resource.ResourceType.ResourceName}} subject !

Enter {{ resource.ResourceType.ResourceName}} description(min 20 chars) !

{{$select.selected.name}} {{rt.name}}

Select resource hashtags

Go to {{resource.ResourceType.name}} definition

External resource link

');\n$templateCache.put('/0003_resources/angularTemplates/newResource_v1_multiselect.html','

New resource


0\">

Enter resource name

Enter resource description(min 20 chars).

{{$select.selected.name}} {{rt.name}}

Select resource type

{{$select.selected.name}} {{rs.name}}

Select resource status

{{$select.selected.name}} {{rs.name}}

Select resource test



');\n$templateCache.put('/0003_resources/angularTemplates/notificationDefinition.html','
Define notification recepients
0\" ng-model=resource.Parameters.UserTags selected-items=resource.Parameters.UserTags name=userTags required=false dropdown-items=tagListUsers dropdown-id=\"\\'userTags\\'\" parent-form-id=\"\\'userTag\\'\" search-text=\"\\'Select user\\'\">0\" ng-model=resource.Parameters.GroupTags selected-items=resource.Parameters.GroupTags name=groupTags required=false dropdown-items=tagListGroups dropdown-id=\"\\'groupTags\\'\" parent-form-id=\"\\'groupTag\\'\" search-text=\"\\'Select group\\'\">
E-mail
0\" ng-model=resource.Parameters.EmailTags selected-items=resource.Parameters.EmailTags name=emailTags required=false dropdown-items=tagList dropdown-id=\"\\'emailTag\\'\" parent-form-id=\"\\'emailTagForm\\'\" search-text=\"\\'Select e-mail tag...\\'\">
');\n$templateCache.put('/0003_resources/angularTemplates/pages.html','

Pages

');\n$templateCache.put('/0003_resources/angularTemplates/pagesDefinition.html','
\\'{{resource.Name}}\\' page
0)\" class=col-auto>ID: {{resource.id}} ({{resource.nid}})
0)\" class=\"small bold mt-1\">Active 0)\" class=\"small bold mt-1\">Not active
ADVANCED {{resource.ResourceName}} PROPERTIES
Page parameters
{{$select.selected.name}} {{pt.name}}

Select page type

Enter page target

{{resource.ResourceExtended.PageType.name}}
{{resource.ResourceExtended.Target}}

Enter loading page text

Count processed widgets! Do NOT count processed widgets!
Page access
This is public page (authentication is not required) This is secured page (selected users and groups can access this page)
/n/pvpage/{{organisation_id}}/{{gsrvc.resourceFormVersion[resource.uid].NewVersion}}/ ?env={{env_id}}
Page style
Page is styled as card No style (enable to style page as card)
Apply default background color (toggle to apply custom color) Apply custom background color
Publish {{resourceDefinition.ResourceName}}
Published
Current version {{publishedResource.PublishedVersion}} published by {{publishedResource.ChangedBy}} on {{publishedResource.ChangedDateTime | date:\"dd.MM.yyyy \\'at\\' HH:mm:ss\"}} (Version 1 published by {{publishedResource.PublishedBy}} on {{publishedResource.DateTime | date:\"dd.MM.yyyy \\'at\\' HH:mm:ss\"}})
Not published
Published definition (no changes)
0\">Changes for publishing
Application menu is visible Application menu is hidden
>
Page Menu
0\" class=\"mt-2 text-left\">Select version
No versions found!
Page form
Properties
');\n$templateCache.put('/0003_resources/angularTemplates/pagesForm.html','

{{resourceDefinition.name}}






');\n$templateCache.put('/0003_resources/angularTemplates/resourceData.html','

{{resourceName}}

    items per page    |    Page: {{currentPage}} / {{numPages}}    |    {{pageSize*currentPage+1-pageSize}} - {{pageSize*currentPage>totalCount ? totalCount : pageSize*currentPage}} of {{totalCount}} items
    ');\n$templateCache.put('/0003_resources/angularTemplates/resourceDataRecord.html','

    {{resourceDefinition.name}}


    ');\n$templateCache.put('/0003_resources/angularTemplates/resourceForm.html','
    {{resource.Name}} {{resource.ResourceCode}}
    0)\" class=\"col-auto mx-1\" id=version>ID {{resource.id}} ({{resource.nid}})
    0)\" class=\"tag text-success my-1\">{{resource.ResourceName}} 0)\" class=\"small bold mr-4\">Active 0)\" class=\"small bold mr-4\">Not active
    VERSION {{resource.Version}}
    0)\" class=small>STATUS
    CREATED {{resource.CreatedDateTime | date: \"dd.MM.yyyy \\'at\\' HH:mm:ss\"}} (by {{resource.CreatedBy.first_name}} {{resource.CreatedBy.last_name}})
    MODIFIED {{resource.ChangedDateTime | date:\"dd.MM.yyyy \\'at\\' HH:mm:ss\"}} (by {{resource.ChangedBy.first_name}} {{resource.ChangedBy.last_name}})
    Dataset columns definition
    id
    Field name
    Field type
    Table column
    {{element.ItemId}}
    {{element.Label}}
    {{element.ElementType}}
    {{resource.ResourceName}} PROPERTIES

    Enter resource name

    Enter resource subject

    Active
    {{$select.selected.name}} {{rt.name}}

    Select resource hashtags

    Enter resource description(min 20 chars).

    Publish {{resource.ResourceName}}
    Published
    Version {{publishedResource.PublishedVersion}} published by {{publishedResource.PublishedBy}} on {{publishedResource.DateTime | date:\"dd.MM.yyyy \\'at\\' HH:mm:ss\"}} (last changed by {{publishedResource.ChangedBy}} on {{publishedResource.ChangedDateTime | date:\"dd.MM.yyyy \\'at\\' HH:mm:ss\"}})
    Not published
    0\">Pending changes
    {{resource.ResourceName}} changes to publish
    To publish dataset first deploy all pending database changes!
    Form definition
    Toolbox
    {{toolboxItem.name}} ({{toolboxItem.Related}})
    Child resources
    None
    {{child.name}} ({{child.Related}})
    Parent resources
    None
    {{toolboxItem.Label}} ({{toolboxItem.Related}})
    Properties
    ');\n$templateCache.put('/0003_resources/angularTemplates/resourceList.html','
    Search Resources

    Enter {{ resource.ResourceDefId.ResourceType.name}} id

    Enter {{ resource.ResourceDefId.ResourceType.name}} guid

    Enter {{ resource.ResourceDefId.ResourceType.name}} name

    2 ? \\'col-lg-6\\':\\'col-lg-5\\'}}\">0\" ng-model=resource.ResourceType selected-items=resource.ResourceType name=resourceTypes ng-required=false dropdown-items=resourceTypeList dropdown-id=\"\\'resourceType\\'\" parent-form-id=\"\\'form\\'\" search-text=\"\\'Search or select resource type...\\'\">
    hidden placeholder

    Enter {{ resource.ResourceDefId.ResourceType.name}} subject

    Enter {{ resource.ResourceDefId.ResourceType.name}} description(min 20 chars).


    No resources were found
    Try adjusting your search! If you haven\\'t created any resource yet, it\\'s time to create resource !
    0\">
    0\">
    ');\n$templateCache.put('/0003_resources/angularTemplates/resourceMenu.html','');\n$templateCache.put('/0003_resources/angularTemplates/resources.html','
    ');\n$templateCache.put('/0003_resources/angularTemplates/smartContractDefinition.html','
    Smart contract definition

    Enter smart contract id

    Enter smart contract ABI

    Select public variables

    Function {{$index+1}}

    Enter function name

    Blockchain datasets
    Dataset {{$index+1}}

    Enter dataset name

    ');\n$templateCache.put('/0003_resources/angularTemplates/tokenDefinition.html','
    Define token properties

    Enter token ticker

    Enter token supply

    Enter number of decimals

    ');\n$templateCache.put('/0003_resources/angularTemplates/viewResource.html','
    {{resource.ResourceName}}
    {{resource.id}}
    {{resource.Name}}
    {{resource.Subject}}
    {{resource.Description}}
    Active
    Not active
    Created by {{resource.CreatedBy.first_name}} {{resource.CreatedBy.last_name}} at {{resource.CreatedDateTime | date: \"dd.MM.yyyy \\'at\\' HH:mm:ss\"}}
    Changed by {{resource.ChangedBy.first_name}} {{resource.ChangedBy.last_name}} at {{resource.ChangedDateTime | date: \"dd.MM.yyyy \\'at\\' HH:mm:ss\"}}
    ');\n$templateCache.put('/0004_settings/angularTemplates/codesData.html','
    Codes

    Enter Code name

    Enter {{ resource.ResourceDefId.ResourceType.name}} subject

    Enter {{ resource.ResourceDefId.ResourceType.name}} description(min 20 chars).


    No codes for your search
    0\">
    0\">
    ');\n$templateCache.put('/0004_settings/angularTemplates/codesDetails.html','

    Organisation details


    Enter organisation name

    Enter organisation description(min 20 chars).

    {{$select.selected.name}} {{rt.name}}

    Select organisation type

    {{$select.selected.name}} {{rt.name}}

    Select organisation type

    {{$select.selected.name}} {{ind.name}}

    Select industry

    {{$select.selected.name}} {{os.name}}

    Select organisation status



    ');\n$templateCache.put('/0004_settings/angularTemplates/codesEdit.html','

    Edit code

    Enter code id

    Enter code name

    Enter unique identifier (any text up to 255 characters)

    Enter code description(min 20 chars).

    {{$select.selected.name}} {{ct.name}}

    Select code type

    {{$select.selected.name}} {{cl.name}}

    Select language

    {{$select.selected.name}} {{cs.name}}

    Select status

    ');\n$templateCache.put('/0004_settings/angularTemplates/codesMenu.html','');\n$templateCache.put('/0004_settings/angularTemplates/codesNew.html','
    Enter new code
    0}\">
    0\">

    Enter code name

    Enter unique hashtag (any text up to 255 characters)

    Enter code description(min 20 chars)

    Select code type

    0\">
    ');\n$templateCache.put('/0004_settings/angularTemplates/community.html','
    Community info

    Enter community name

    Enter community description(min 20 chars).

    Balances
    {{bal.amt.toLocaleString()}}{{bal.ccy}}
    Transactions
    ID
    Amount
    Currency
    Date
    Description
    {{tr.id}}
    {{tr.ccy}}
    {{tr.tdate}}
    {{tr.tdesc}}
    ');\n$templateCache.put('/0004_settings/angularTemplates/createNavbar.html','

    New navbar


    Enter name

    Enter target

    Enter organisation description(min 20 chars).

    {{$select.selected.name}} {{orgType.name}}

    Select organisation type

    {{$select.selected.name}} {{country.name}}

    Select country

    {{$select.selected.name}} {{industry.name}}

    Select industry

    {{$select.selected.name}} {{status.name}}

    Select status



    ');\n$templateCache.put('/0004_settings/angularTemplates/groupsDefinition.html','
    Groups
    New group

    Enter group name

    Group owners

    Select owners

    Users

    Select user(s)

    • {{group.GroupName}} ( id={{group.GroupId.id}} )

      Enter group id

      Enter group name

      Group owners

      Select owners

      Users

      Select user(s)

    ');\n$templateCache.put('/0004_settings/angularTemplates/menu.html','
    Build menu here 1
    Build menu here 2
    Build menu here 3
    Build menu here 4
    Build menu here 5
    Build menu here 6
    ');\n$templateCache.put('/0004_settings/angularTemplates/organisation.html','
    Organisation info

    Enter organisation name

    Enter organisation description(min 20 chars).

    Select country

    Select industry

    API setup
    Api id: {{organisation.ApiUser.username}}
    Api id created: {{api_id}}
    Api key: {{api_key}}
    ');\n$templateCache.put('/0004_settings/angularTemplates/organisationMenu.html','');\n$templateCache.put('/0004_settings/angularTemplates/userDetails.html','

    Enter username

    {{user.username}}

    Enter first name

    {{user.first_name}}

    Enter last name

    {{user.last_name}}

    Enter e-mail

    {{user.email}}
    {{user.langObj.Name}} ({{user.langObj.Code}})
    {{user.last_login | date:\\'dd.MM.yyyy HH:mm:ss:ms\\'}}

    Groups
    Group id
    Group name
    • {{group.id}}
      {{group.name}}
    ');\n$templateCache.put('/0004_settings/angularTemplates/userMenu.html','
      Menu
      ');\n$templateCache.put('/0004_settings/angularTemplates/usersDefinition.html','

      • {{user.UserId.id}}
        {{user.UserId.username}}
        {{group.name}}
        None
        :
        : {{selectedUser.UserId.last_login | date:\\'dd.MM.yyyy HH:mm:ss\\'}}

      {{::pageLabels.userAdvancedSettings}}
      Dataset {{$index+1}}
      Dataset
      No applicable datasets !
      User field
      ');\n$templateCache.put('/0004_settings/angularTemplates/usersSecurity.html','
      • {{::item.resourcedef_name}} ({{::item.resourcedefuid }} v{{::item.version }})
      ');\n$templateCache.put('/0005_tasks/angularTemplates/tasksData.html','

      Codes




      Edit code


      Enter code name

      Enter code description(min 20 chars).





      {{codeItemHeader.Text}}


      Enter code name

      Enter code value



      ');\n$templateCache.put('/0005_tasks/angularTemplates/tasksDefinition.html','
      Definition for 0)\" class=\"h5 mt-1\"> {{resourceDefinition.Name}} {{resourceDefinition.ResourceCode}}
      0)\" class=\"col-auto mx-1\">ID {{resourceDefinition.id}}
      0)\" class=\"tag text-success my-1\">{{resourceDefinition.ResourceName}} 0)\" class=\"small bold mr-4\">Active 0)\" class=\"small bold mr-4\">Not active
      VERSION {{gsrvc.resourceFormVersion[resourceDefinition.id+tds.showTaskForm].Version}}
      WORK VERSION {{gsrvc.resourceFormVersion[resourceDefinition.id+tds.showTaskForm].NewVersion}}
      0)\" class=small>STATUS
      CREATED {{resourceDefinition.CreatedDateTime | date: \"dd.MM.yyyy \\'at\\' HH:mm:ss\"}} (by {{resourceDefinition.CreatedBy.first_name}} {{resourceDefinition.CreatedBy.last_name}})
      MODIFIED {{resourceDefinition.ChangedDateTime | date:\"dd.MM.yyyy \\'at\\' HH:mm:ss\"}} (by {{resourceDefinition.ChangedBy.first_name}} {{resourceDefinition.ChangedBy.last_name}})
      Version:{{resourceDefinition.FormVersion}}
      {{prettyTask}}
      {{resourceDefinition.ResourceName}} PROPERTIES

      Enter task name!

      Enter task subject!

      Enter task description(min 20 chars) !

      Active
      Task visuals
      Task execution parameters
      TASK PERMISSIONS
      /nm/public/{{organisation_id}}/
      Users
      Selected users are alowed to start this task Selected users are forbiden to start this task
      Groups
      Selected groups are alowed to start this task Selected groups are forbiden to start this task
      Task assignment
        Users
      Task is assigned only to selected users Task is fobidden to be assigned to selected users
        Groups
      Task is assigned only to selected groups Task is fobidden to be assigned to selected groups
      Please select user from dataset
      Properties
      ');\n$templateCache.put('/0005_tasks/angularTemplates/tasksDefinitionDetailed.html','
      Task info
      Definition checklist     Forms     Assignments     Outcomes     Statuses     Parameters
      System
        Ready   Completed
      Task owner
        Claimed
        In Progress
        Complete task   Complete task
        Completed   Completed
        On Hold
        Users  Selected users have the permission to create this task  Selected users do NOT have the permission to create this task
        Groups   Groups  Selected groups have the permission to start this task  Selected groups do NOT have the permission to start this task

      How many tasks do you want to create?

        Users  Selected users can be the owners and execute this task  Selected users can NOT be the owners and execute this task
        Groups  Selected groups can be the owners and execute this task  Selected groups can NOT can be the owners and execute this task
      Status transition       {{taskStatusFrom.value}}   {{taskStatusTo.value}}
      ');\n$templateCache.put('/0005_tasks/angularTemplates/tasksDefinitionList.html','');\n$templateCache.put('/0005_tasks/angularTemplates/tasksDetails.html','

      Task definition


      {{$select.selected.name}} {{tt.name}}

      Select task type

      Enter organisation description(min 20 chars).

      {{$select.selected.name}} {{rt.name}}

      Select organisation type

      {{$select.selected.name}} {{ind.name}}

      Select industry

      {{$select.selected.name}} {{os.name}}

      Select organisation status



      ');\n$templateCache.put('/0005_tasks/angularTemplates/tasksExecute.html','
      ');\n$templateCache.put('/0005_tasks/angularTemplates/tasksExecuteList.html','

      Execute tasks

          items per page    |    Page: {{currentPage}} / {{numPages}}    |    {{pageSize*currentPage+1-pageSize}} - {{pageSize*currentPage>totalCount ? totalCount : pageSize*currentPage}} of {{totalCount}} items
        ');\n$templateCache.put('/0005_tasks/angularTemplates/tasksInitiate.html','

        {{resourceDefinition.name}}

        Potential owners
        Users
        Groups

        ');\n$templateCache.put('/0005_tasks/angularTemplates/tasksInitiateList.html','

        Start tasks

        ');\n$templateCache.put('/0005_tasks/angularTemplates/tasksList.html','
        Tasks
            items per page    |    Page: {{currentPage}} / {{numPages}}    |    {{pageSize*currentPage+1-pageSize}} - {{pageSize*currentPage>totalCount ? totalCount : pageSize*currentPage}} of {{totalCount}} items
          ');\n$templateCache.put('/0005_tasks/angularTemplates/tasksMenu.html','
            Menu
          ');\n$templateCache.put('/0005_tasks/angularTemplates/tasksNew.html','

          Enter new code


          Enter code name

          Enter code description(min 20 chars).

          {{$select.selected.name}} {{ct.name}}

          Select code type

          {{$select.selected.name}} {{cl.name}}

          Select language

          {{$select.selected.name}} {{cs.name}}

          Select status



          ');\n$templateCache.put('/0005_tasks/angularTemplates/tasksOutcomeDefinition.html','

          Outcome definition


          Enter outcome name

          Enter outcome display name



          ');\n$templateCache.put('/0005_tasks/angularTemplates/tasksProc.html','
          ');\n$templateCache.put('/0005_tasks/angularTemplates/tasksPublicExecute.html','
          ');\n$templateCache.put('/0006_vpage/angularTemplates/vpage.html','

          Unauthorised!

          {{resource.ParametersLang.LoadPageText}}
          -
          ');\n$templateCache.put('/0006_vpage/angularTemplates/vpage_v1.html','

          Loading page...

          Unauthorised!

          {{resourceDefinition.Name}}

          Build the layout of your page
          Katalyo uses css3 grid to build the layout of your page. If you\\'re familiar with it great but don\\'t worry if you\\'re not, it\\'s easy as it gets.
          Define the page layout containers
          Layout container {{item.id}}
          Position
          Size
          ');}]);"],"preExistingComment":"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCIwMDAwX2NvbW1vbi8wMDAxX2RpcmVjdGl2ZXMvYW5ndWxhckpTL2J1aWxkL2t0ZGlyZWN0aXZlcy5qcyIsIjAwMDBfY29tbW9uLzAwMDFfZGlyZWN0aXZlcy9hbmd1bGFyVGVtcGxhdGVzL2J1aWxkL2t0ZGlyZWN0aXZldGVtcGxhdGVzLmpzIiwiMDAwMF9jb21tb24vMDAwMl9zZXJ2aWNlcy9hbmd1bGFySlMvYnVpbGQvc2VydmljZXMuanMiLCIwMDAwX2NvbW1vbi8wMDAzX2xpYnMva3QtYXBpLmpzIiwiMDAwMF9jb21tb24vMDAwM19saWJzL2t0LXN0YXRlLW1hbmFnZXIuanMiLCIwMDAwX2NvbW1vbi8wMDA0X21vZHVsZXMvYXBpTW9kdWxlLmpzIiwiMDAwMF9jb21tb24vMDAwNF9tb2R1bGVzL2F1dGhNb2R1bGUuanMiLCIwMDAwX2NvbW1vbi8wMDA0X21vZHVsZXMvY29kZXNNb2R1bGUuanMiLCIwMDAwX2NvbW1vbi8wMDA0X21vZHVsZXMvZXJyb3JNb2R1bGUuanMiLCIwMDAwX2NvbW1vbi8wMDA0X21vZHVsZXMvZ3JpZHN0ZXJNb2R1bGUuanMiLCIwMDAwX2NvbW1vbi8wMDA0X21vZHVsZXMvaW50ZXJjZXB0b3JNb2R1bGUuanMiLCIwMDAwX2NvbW1vbi8wMDA0X21vZHVsZXMvbWVudU1vZHVsZS5qcyIsIjAwMDBfY29tbW9uLzAwMDRfbW9kdWxlcy9tZXNzYWdpbmdNb2R1bGUuanMiLCIwMDAwX2NvbW1vbi8wMDA0X21vZHVsZXMvcHJvY2Vzc2luZ01vZHVsZS5qcyIsIjAwMDBfY29tbW9uLzAwMDRfbW9kdWxlcy9yZXNvdXJjZXNEYXRhTW9kdWxlLmpzIiwiMDAwMF9jb21tb24vMDAwNF9tb2R1bGVzL3NldHRpbmdzTW9kdWxlLmpzIiwiMDAwMF9jb21tb24vMDAwNF9tb2R1bGVzL3N0YXRlTWFuYWdlck1vZHVsZS5qcyIsIjAwMDBfY29tbW9uLzAwMDRfbW9kdWxlcy90YXNrc0RhdGFNb2R1bGUuanMiLCIwMDAwX2NvbW1vbi8wMDA0X21vZHVsZXMvdXRpbGl0eU1vZHVsZS5qcyIsIjAwMDBfY29tbW9uLzAwMDRfbW9kdWxlcy93aWRnZXREYXRhRXhjaGFuZ2VNb2R1bGUuanMiLCIwMDAwX2NvbW1vbi8wMDA0X21vZHVsZXMvd2lkZ2V0UmVnaXN0ZXJNb2R1bGUuanMiLCIwMDAxX21vZHVsZXMvMDAwMV9pbmRleC9hbmd1bGFySlMvYm9vdHN0cmFwLmpzIiwiMDAwMV9tb2R1bGVzLzAwMDFfaW5kZXgvYW5ndWxhckpTL2luZGV4Lmpzb24iLCIwMDAxX21vZHVsZXMvMDAwMV9pbmRleC9hbmd1bGFySlMvaW5kZXguanMiLCIwMDAxX21vZHVsZXMvMDAwMV9pbmRleC9hbmd1bGFySlMvaW5kZXhDdHJscy5qcyIsIjAwMDFfbW9kdWxlcy8wMDAxX2luZGV4L2FuZ3VsYXJKUy9rYXRhbHlvQ3RybHMuanMiLCIwMDAxX21vZHVsZXMvMDAwMl9hdXRoL2FuZ3VsYXJKUy9hdXRoQ3RybHMuanMiLCIwMDAxX21vZHVsZXMvMDAwM19yZXNvdXJjZXMvYW5ndWxhckpTL3Jlc291cmNlc0N0cmxzLmpzIiwiMDAwMV9tb2R1bGVzLzAwMDRfc2V0dGluZ3MvYW5ndWxhckpTL3NldHRpbmdzQ3RybHMuanMiLCIwMDAxX21vZHVsZXMvMDAwNV90YXNrcy9hbmd1bGFySlMvdGFza3NDdHJscy5qcyIsIjAwMDFfbW9kdWxlcy8wMDA2X3ZwYWdlL2FuZ3VsYXJKUy92cGFnZUN0cmxzLmpzIiwiMDAwMV9tb2R1bGVzL2N0cmxzL2J1aWxkL2FuZ3VsYXJUZW1wbGF0ZXMva3Ryb3V0ZXRlbXBsYXRlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQ0FBLGEsdXlMQTQ1Y0EseUcsdWlJQTE1Y08sUUFBUyxDQUFBLFdBQVQsRUFBd0IsQ0FDdkIsTUFBTyxDQUNILFFBQVEsQ0FBRSxJQURQLENBRUgsV0FBVyxDQUFFLGtDQUZWLENBR0g7QUFDRDtBQUNDLEtBQUssQ0FBRSxDQUNKLFdBQVcsQ0FBRyxHQURWLENBTEosQ0FTSCxVQUFVLENBQUUsb0JBQVMsTUFBVCxDQUFnQixJQUFoQixDQUFxQixnQkFBckIsQ0FDWixDQUNLLE1BQU0sQ0FBQyxJQUFQLENBQWMsZ0JBQWQsQ0FDQyxNQUFNLENBQUMsV0FBUCxDQUFxQixNQUFNLENBQUMsSUFBUCxDQUFZLFdBQVosRUFBckIsQ0FFTixNQUFNLENBQUMsZUFBUCxDQUF3QixLQUF4QixDQUlBLE1BQU0sQ0FBQyxlQUFQLENBQXlCLFVBQVUsQ0FFL0IsTUFBTSxDQUFDLGtCQUFQLENBQTRCLElBQTVCLENBQ0EsTUFBTSxDQUFDLElBQVAsQ0FBWSxpQkFBWixHQUNELFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLEtBQTFCLENBQWdDLENBQTVDLENBQTZDLElBQTdDLENBQVYsQ0FFRixDQU5ELENBUUMsTUFBTSxDQUFDLFVBQVAsQ0FBb0IsU0FBUyxFQUFULENBQVksQ0FFN0IsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsRUFBbkIsRUFBdUIsSUFBdkIsQ0FBOEIsS0FBOUIsQ0FFQSxHQUFJLENBQUEsT0FBTyxDQUFHLE1BQU0sQ0FBQyxJQUFQLENBQVksdUJBQVosRUFBZCxDQUVBLEdBQUksT0FBTyxFQUFFLENBQWIsQ0FBZ0IsTUFBTSxDQUFDLElBQVAsQ0FBWSxpQkFBWixHQUVuQixDQVJBLENBVUQsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsVUFBVSxDQUU1QixHQUFJLENBQUEsZUFBZSxDQUFDLENBQXBCLENBQ0EsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUUsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsTUFBbkMsQ0FBMEMsQ0FBQyxFQUEzQyxDQUNBLENBQ0UsR0FBSSxNQUFNLENBQUMsV0FBUCxDQUFtQixDQUFuQixFQUFzQixJQUExQixDQUFnQyxlQUFlLEdBRWhELENBQ0QsTUFBTyxDQUFBLGVBQVAsQ0FDSCxDQVRELENBWUMsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsU0FBUyxHQUFULENBQWEsQ0FDbEMsTUFBTyxDQUFBLElBQUksQ0FBQyxXQUFMLENBQWlCLEdBQWpCLENBQVAsQ0FDRixDQUZBLENBR0EsQ0FuREUsQ0FvREgsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixPQUFqQixDQUEwQixLQUExQixDQUFpQyxDQVF0QyxDQTVERSxDQUFQLENBOERQLEVBRUQsYUFHTyxRQUFTLENBQUEsZUFBVCxDQUEwQixjQUExQixDQUF5QyxVQUF6QyxDQUFxRCxDQUVwRCxNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FHSCxVQUFVLENBQUUsb0JBQVMsTUFBVCxDQUFnQixXQUFoQixDQUE0QixvQkFBNUIsQ0FBaUQsZUFBakQsQ0FBaUUsZ0JBQWpFLENBQWtGLHlCQUFsRixDQUE0RyxVQUE1RyxDQUF1SCxlQUF2SCxDQUF1SSxjQUF2SSxDQUFzSixXQUF0SixDQUFrSyxZQUFsSyxDQUErSyxNQUEvSyxDQUFzTCxtQkFBdEwsQ0FBME0sY0FBMU0sQ0FBeU4sUUFBek4sQ0FBa08sUUFBbE8sQ0FBMk8sUUFBM08sQ0FBb1AsT0FBcFAsQ0FDWixnSkFDSSxNQUFNLENBQUMsS0FBUCxDQUFjLGVBQWQsQ0FDQSxNQUFNLENBQUMsUUFBUCxDQUFnQixpQkFBaEIsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixHQUFzQixTQUExQixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBc0IsRUFBdEIsQ0FFckMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLElBQXBCLENBQTJCLHlCQUEzQixDQUVBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFrQyxDQUNoQyxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFFLGlCQUFaLENBQStCLEtBQUssQ0FBRSxhQUF0QyxDQURnQyxDQUVoQyxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFFLGVBQVosQ0FBOEIsS0FBSyxDQUFFLGNBQXJDLENBRmdDLENBR2hDLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTyxJQUFJLENBQUUsV0FBYixDQUEwQixLQUFLLENBQUUsVUFBakMsQ0FIZ0MsQ0FJL0IsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFPLElBQUksQ0FBRSxxQkFBYixDQUFvQyxLQUFLLENBQUUsWUFBM0MsQ0FDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVhrQyxDQUFsQyxDQWNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBc0MsQ0FBQyxRQUFELENBQVUsUUFBVixDQUFtQixFQUFuQixDQUFzQixRQUF0QixDQUF0QyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBcUMsQ0FBQyxhQUFELENBQWUsT0FBZixDQUF1QixRQUF2QixDQUFnQyxPQUFoQyxDQUFyQyxDQUdBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixlQUFwQixDQUFvQyxFQUFwQyxDQUVBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUErQixLQUEvQixDQUNBLE1BQU0sQ0FBQyxNQUFQLENBQWMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBQXhDLENBRUEsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsR0FBb0IsU0FBcEIsRUFBaUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEdBQW9CLElBQXJELEVBQTZELE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixHQUFvQixFQUFyRixDQUF5RixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsRUFBbEIsQ0FHdkYsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLFVBQVUsQ0FDN0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQWdDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUErQixLQUEvQixDQUFzQyxJQUF0RSxDQUNDLENBRkgsQ0FJRCxHQUFJLE1BQU0sQ0FBQyxrQkFBUCxFQUEyQixTQUEvQixDQUNELENBQ0UsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGdCQUFsRCxDQUNBLE1BQU0sQ0FBQyxhQUFQLENBQXVCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUFqRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBeUMsTUFBTSxDQUFDLGtCQUFoRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFtQyxNQUFNLENBQUMsYUFBMUMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixFQUFrQyxTQUF0QyxDQUFpRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBbUMsTUFBTSxDQUFDLGNBQTFDLENBQ2xELENBUEEsSUFPSyxDQUFBLE1BQU0sQ0FBQyxrQkFBUCxDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isa0JBQWhELENBSU4sR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsRUFBbUIsU0FBdkIsQ0FBa0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLGNBQWMsQ0FBQyxNQUFmLEVBQWxCLENBQ2xDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixPQUFyQixDQUErQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXpDLENBQ0EsR0FBSSxDQUFBLFNBQVMsQ0FBQyxDQUNWLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsa0JBQVgsQ0FEVSxDQUVWLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsV0FBWCxDQUZVLENBR1YsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxXQUFYLENBSFUsQ0FBZCxDQUtBLEdBQUksQ0FBQSxnQkFBZ0IsQ0FBRyxDQUFDLFdBQVcsQ0FBRSxnQkFBZCxDQUErQixVQUFVLENBQUUsWUFBM0MsQ0FBd0QsUUFBUSxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBNUUsQ0FBb0YsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUE5RixDQUFpRyxPQUFPLENBQUMsU0FBekcsQ0FBb0gsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLGNBQTVJLENBQTJKLGVBQWUsQ0FBQyxNQUFNLENBQUMsYUFBbEwsQ0FBZ00sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUF1QyxHQUF4UCxDQUF2QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixPQUFwQixDQUE0Qix5QkFBeUIsQ0FBQyxjQUExQixDQUF5QyxnQkFBekMsQ0FBNUIsQ0FHQSxtRUFDQSxNQUFNLENBQUMsR0FBUCxDQUFhLG1CQUFiLENBQ0EsR0FBSSxDQUFBLGVBQWUsQ0FBQyxJQUFwQixDQUNBLEdBQUksQ0FBQSxpQkFBaUIsQ0FBRSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0Isb0JBQW9CLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBcEQsQ0FBNEQsZUFBNUQsQ0FBdkIsQ0FDQSxHQUFJLENBQUEscUJBQXFCLENBQUcsaUJBQWlCLENBQUMsT0FBbEIsQ0FBMEIsSUFBdEQsQ0FFQSxHQUFJLENBQUEsY0FBYyxDQUFHLFFBQWpCLENBQUEsY0FBaUIsQ0FBUyxJQUFULENBQ3JCLENBQ0ksaUJBQWlCLENBQUMsT0FBbEIsQ0FBMEIsZUFBMUIsQ0FBNEMsSUFBNUMsQ0FDQSxpQkFBaUIsQ0FBQyxPQUFsQixDQUEwQixlQUExQixDQUEwQyxnQkFBMUMsRUFFSCxDQUxELENBT0EsR0FBSSxDQUFBLHFCQUFxQixDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixxQkFBckIsQ0FBMkMsZ0JBQTNDLENBQTRELGNBQTVELENBQTVCLENBSUEsR0FBTSxDQUFBLGFBQWEsQ0FBRSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBMUIsQ0FBd0MsR0FBeEMsQ0FBNEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUEzRSxDQUVBLEdBQUksQ0FBQSxnQkFBZ0IsQ0FBRSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsYUFBdEIsQ0FBb0MsSUFBcEMsQ0FBdEIsQ0FDQSxHQUFNLENBQUEsb0JBQW9CLENBQUcsZ0JBQWdCLENBQUMsT0FBakIsQ0FBeUIsSUFBdEQsQ0FFQSxHQUFJLENBQUEsVUFBVSxDQUFHLFFBQWIsQ0FBQSxVQUFhLENBQVMsSUFBVCxDQUNqQixDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFzQixJQUF0QixDQUNBLEdBQUksQ0FBQSxLQUFLLENBQUcsSUFBWixDQUNBLEtBQUssQ0FBQyxLQUFELENBQUwsQ0FBZSxJQUFmLENBQ0EsZ0JBQWdCLENBQUMsT0FBakIsQ0FBeUIsZUFBekIsQ0FBMkMsS0FBM0MsQ0FDQSxnQkFBZ0IsQ0FBQyxPQUFqQixDQUF5QixlQUF6QixDQUF5QyxXQUF6QyxDQUFxRCxLQUFyRCxFQUNILENBUEQsQ0FRQSxHQUFJLENBQUEsVUFBVSxDQUFHLFFBQWIsQ0FBQSxVQUFhLENBQVMsSUFBVCxDQUNqQixDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFzQixLQUF0QixDQUNBLEdBQUksQ0FBQSxLQUFLLENBQUcsSUFBWixDQUNBLEtBQUssQ0FBQyxLQUFELENBQUwsQ0FBZSxLQUFmLENBQ0EsZ0JBQWdCLENBQUMsT0FBakIsQ0FBeUIsZUFBekIsQ0FBMkMsS0FBM0MsQ0FDQSxnQkFBZ0IsQ0FBQyxPQUFqQixDQUF5QixlQUF6QixDQUF5QyxXQUF6QyxDQUFxRCxLQUFyRCxFQUNILENBUEQsQ0FTQSxHQUFJLENBQUEsaUJBQWlCLENBQUcsUUFBcEIsQ0FBQSxpQkFBb0IsQ0FBUyxJQUFULENBQ3hCLENBQ0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQXNCLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFqQyxDQUNBLEdBQUksQ0FBQSxLQUFLLENBQUcsSUFBWixDQUNBLEtBQUssQ0FBQyxLQUFELENBQUwsQ0FBZSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQXpCLENBQ0EsZ0JBQWdCLENBQUMsT0FBakIsQ0FBeUIsZUFBekIsQ0FBMkMsS0FBM0MsQ0FDQSxnQkFBZ0IsQ0FBQyxPQUFqQixDQUF5QixlQUF6QixDQUF5QyxrQkFBekMsQ0FBNEQsS0FBNUQsRUFDSCxDQVBELENBVUEsR0FBSSxDQUFBLFdBQVcsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsb0JBQXJCLENBQTBDLFdBQTFDLENBQXNELFVBQXRELENBQWxCLENBQ0EsR0FBSSxDQUFBLFdBQVcsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsb0JBQXJCLENBQTBDLFdBQTFDLENBQXNELFVBQXRELENBQWxCLENBQ0EsR0FBSSxDQUFBLGFBQWEsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsb0JBQXJCLENBQTBDLGtCQUExQyxDQUE2RCxpQkFBN0QsQ0FBcEIsQ0FJQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBcEIsQ0FBaUMsU0FBUyxJQUFULENBQWMsS0FBZCxDQUFvQixLQUFwQixDQUEyQixDQUN6RDtBQUNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFtQyxPQUFuQyxDQUEyQyxLQUEzQyxFQUFrRCxNQUFsRCxDQUEyRCxJQUEzRCxDQUNILENBSEQsQ0FNRCxNQUFNLENBQUMsV0FBUCxDQUFxQixVQUFVLDJCQUVqQixHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0EsR0FBSSxDQUFBLFNBQVMsQ0FBRyxDQUFoQixDQUFpQyx3QkFFakMsR0FBSSx3QkFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isa0JBQXBCLHNFQUF3QyxpQkFBeEMsR0FBNEQsU0FBaEUsQ0FBMkUsU0FBUyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBdUMsaUJBQW5ELENBRzNFLEdBQUksQ0FBQyxNQUFNLENBQUMsa0JBQVIsRUFBOEIsU0FBUyxDQUFDLENBQTVDLENBQ0MsNEJBQ0ssZUFBZSxDQUFDLGVBQWhCLHlCQUFpQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isa0JBQXJELGlEQUFpQyx1QkFBd0MsYUFBekUsQ0FBdUYsU0FBdkYsQ0FBaUcsSUFBakcsRUFBdUcsSUFBdkcsQ0FBNEcsU0FBUyxJQUFULENBQWUsQ0FFbkgsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQStCLElBQUksQ0FBQyxJQUFwQyxDQUNBLE1BQU0sQ0FBQyxrQkFBUCxDQUE0QixJQUE1QixDQUdQLENBTkQsQ0FNRSxTQUFTLEtBQVQsQ0FBZSxDQUVSLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNSLENBVEQsRUFVSixDQVpGLElBY0MsQ0FDQyxNQUFNLENBQUMsY0FBUCxDQUFzQixLQUF0QixDQUNBLENBRWYsQ0ExQkQsQ0EwQkM7QUFFRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixFQUE4QixTQUFsQyxDQUE4QyxDQUMxQyxNQUFNLENBQUMsV0FBUCxHQUNILENBRUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWtDLEVBQWxDLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLEVBQXVDLFNBQTNDLENBQ0EsQ0FDSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXNDLEVBQXRDLENBQ0gsQ0FFRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBaEQsRUFBeUQsQ0FBekQsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsd0JBQTZCLE1BQU0sQ0FBQyxrQkFBcEMsZ0RBQTZCLHNCQUEyQixTQUF4RCxDQUNBO0FBQ0EsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBeUMsQ0FBQyxXQUFXLENBQUMsMEJBQWIsQ0FBd0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBeEQsQ0FBb0UsSUFBSSxDQUFDLE1BQXpFLENBQ3ZDLFdBQVcsQ0FBQyxJQUQyQixDQUN0QixZQUFZLENBQUMsSUFEUyxDQUNKLFNBQVMsQ0FBQyxJQUROLENBQ1csZUFBZSxDQUFDLFdBRDNCLENBQ3VDLFlBQVksQ0FBQyxXQURwRCxDQUNnRSxnQkFBZ0IsQ0FBQyxFQURqRixDQUF6QyxDQUdBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBc0MsQ0FBQyxDQUF2QyxDQUdBLEdBQUksQ0FBQSx5QkFBeUIsQ0FBRyxRQUE1QixDQUFBLHlCQUE0QixDQUFTLElBQVQsQ0FDaEMsaUJBRUksR0FBSSxDQUFBLElBQUksT0FBSixFQUFBLElBQUksU0FBSixxQkFBQSxJQUFJLENBQUUsS0FBTixrREFBYSxLQUFiLEdBQW9CLElBQXhCLENBQThCLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixJQUE1QixDQUU5QixHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixHQUFvQyxTQUFwQyxFQUFpRCxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsTUFBbEIsQ0FBeUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQTlGLEVBQStHLENBQUMsTUFBTSxDQUFDLG9CQUEzSCxDQUFnSixrQkFFNUksSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUF0QyxFQUFxRCxxQkFBckQsQ0FBMkUsTUFBMUYsQ0FBaUcsQ0FBQyxFQUFsRyxDQUNBLENBQ0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLENBQWxCLEVBQXFCLFVBQXJCLENBQWtDLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUF0QyxFQUFxRCxxQkFBckQsQ0FBMkUsQ0FBM0UsRUFBOEUsT0FBakgsQ0FDSCxDQUlELEdBQUksQ0FBQSxJQUFJLE9BQUosRUFBQSxJQUFJLFNBQUosc0JBQUEsSUFBSSxDQUFFLEtBQU4sb0RBQWEsWUFBYixHQUEyQixTQUEvQixDQUNBLCtCQUNRLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixlQUFwQixDQUFvQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBcEIsQ0FBa0MsR0FBbEMsRUFBc0MsSUFBdEMsU0FBc0MsSUFBdEMsK0JBQXNDLElBQUksQ0FBRSxLQUE1Qyx1Q0FBc0MsYUFBYSxZQUFuRCxDQUFwQyxFQUF1RyxJQUF2RyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBMEMsSUFBMUMsU0FBMEMsSUFBMUMsK0JBQTBDLElBQUksQ0FBRSxLQUFoRCx1Q0FBMEMsYUFBYSxZQUF2RCxFQUNQLENBRUosQ0FDSixDQXJCRCxDQXVCQSxHQUFJLENBQUEsMkJBQTJCLENBQUcsUUFBOUIsQ0FBQSwyQkFBOEIsQ0FBUyxJQUFULENBQ2xDLGtCQUNJLEdBQUksQ0FBQSxJQUFJLE9BQUosRUFBQSxJQUFJLFNBQUosc0JBQUEsSUFBSSxDQUFFLEtBQU4sb0RBQWEsS0FBYixHQUFvQixJQUF4QixDQUE4QixNQUFNLENBQUMsb0JBQVAsQ0FBNEIsSUFBNUIsQ0FHOUIsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBcEIsR0FBb0MsU0FBcEMsRUFBaUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLE1BQWxCLENBQXlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUE5RixFQUErRyxDQUFDLE1BQU0sQ0FBQyxvQkFBM0gsQ0FBZ0osa0JBRTVJLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBdEMsRUFBcUQscUJBQXJELENBQTJFLE1BQTFGLENBQWlHLENBQUMsRUFBbEcsQ0FDQSxDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixDQUFsQixFQUFxQixVQUFyQixDQUFrQyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBdEMsRUFBcUQscUJBQXJELENBQTJFLENBQTNFLEVBQThFLE9BQWpILENBQ0gsQ0FJRCxHQUFJLENBQUEsSUFBSSxPQUFKLEVBQUEsSUFBSSxTQUFKLHNCQUFBLElBQUksQ0FBRSxLQUFOLG9EQUFhLFlBQWIsR0FBMkIsU0FBL0IsQ0FDQSwrQkFDUSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZUFBcEIsQ0FBb0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQXBCLENBQWtDLEdBQWxDLEVBQXNDLElBQXRDLFNBQXNDLElBQXRDLCtCQUFzQyxJQUFJLENBQUUsS0FBNUMsdUNBQXNDLGFBQWEsWUFBbkQsQ0FBcEMsRUFBdUcsSUFBdkcsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLElBQTFDLFNBQTBDLElBQTFDLCtCQUEwQyxJQUFJLENBQUUsS0FBaEQsdUNBQTBDLGFBQWEsWUFBdkQsRUFDUCxDQUVKLENBRUosQ0F0QkQsQ0F3QkEsR0FBSSxDQUFBLGdCQUFnQixDQUFHLFFBQVEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF6QyxDQUNBLEdBQUksQ0FBQSxrQkFBa0IsQ0FBRyxnQ0FBTyxNQUFNLENBQUMsa0JBQWQsaURBQU8sdUJBQTJCLGNBQWxDLENBQXpCLENBQ0EsR0FBSSxDQUFBLFNBQVMsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIscUJBQXJCLENBQTJDLGdCQUEzQyxDQUE0RCxnQkFBNUQsQ0FBNkUseUJBQTdFLENBQWhCLENBQ0EsR0FBSSxDQUFBLGtCQUFrQixDQUFHLGdEQUF1QixNQUFNLENBQUMsa0JBQTlCLGlEQUF1Qix1QkFBMkIsY0FBbEQsQ0FBekIsQ0FDQSxHQUFJLENBQUEsU0FBUyxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixrQkFBckIsQ0FBd0MsZ0JBQXhDLENBQXlELGVBQXpELENBQXlFLHlCQUF6RSxDQUFoQixDQUVBLEdBQUksQ0FBQSxrQkFBa0IsQ0FBRyxtREFBMEIsTUFBTSxDQUFDLGtCQUFqQyxpREFBMEIsdUJBQTJCLGFBQXJELENBQXpCLENBQ0EsR0FBSSxDQUFBLFNBQVMsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsa0JBQXJCLENBQXdDLGdCQUF4QyxDQUF5RCxtQkFBekQsQ0FBNkUseUJBQTdFLENBQWhCLENBSUUsTUFBTSxDQUFDLEdBQVAsQ0FBVyxrQkFBWCxDQUE4QixTQUFTLEtBQVQsQ0FBZSxJQUFmLENBQW9CLENBQ2hEO0FBQ0E7QUFDQSxHQUFJLENBQUEsTUFBTSxDQUFDLElBQVgsQ0FDQSxHQUFJLENBQUEsR0FBRyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxHQUFoQyxDQUFvQyxTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsTUFBVCxDQUFrQixDQUFwRSxFQUFzRSxPQUF0RSxDQUE4RSxNQUE5RSxDQUFWLENBRUEsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUNBLENBQ0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLE1BQWhDLENBQXVDLEdBQXZDLENBQTJDLENBQTNDLEVBQ0QsQ0FDSixDQVZDLEVBYUYsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQTZCLFNBQVMsTUFBVCxDQUFnQixTQUFoQixDQUEwQixZQUExQixDQUF1QyxZQUF2QyxDQUFvRCxNQUFwRCxDQUM3QixDQUVJLEdBQUksQ0FBQSxTQUFTLENBQUcsQ0FBQyxlQUFlLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBMUIsQ0FBdUMsZUFBZSxZQUF0RCxDQUFtRSxZQUFZLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxNQUEvRyxDQUFzSCxpQkFBbUIsSUFBekksQ0FBOEksU0FBUyxNQUF2SixDQUE4SixZQUFZLFNBQTFLLENBQW9MLGVBQWUsWUFBbk0sQ0FBaEIsQ0FFQSxTQUFTLENBQUMsWUFBVixDQUF5QixNQUFNLENBQUMsZ0JBQWhDLENBQ0EsR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsR0FBaEMsQ0FBb0MsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLE1BQVQsQ0FBa0IsQ0FBcEUsRUFBc0UsT0FBdEUsQ0FBOEUsTUFBOUUsQ0FBVixDQUVBLEdBQUksR0FBRyxDQUFDLENBQUosRUFBUyxZQUFZLEVBQUUsU0FBM0IsQ0FDQSxDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxNQUFoQyxDQUF1QyxDQUF2QyxDQUF5QyxDQUF6QyxDQUEyQyxDQUFDLFNBQVMsTUFBVixDQUFpQixZQUFZLFNBQTdCLENBQXVDLGVBQWUsWUFBdEQsQ0FBbUUsWUFBWSxTQUEvRSxDQUEzQyxFQUNBLE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBWCxDQUF5QixxQkFBekIsQ0FBK0MsZ0JBQS9DLENBQWlFLENBQUMsU0FBUyxNQUFWLENBQWlCLFlBQVksU0FBN0IsQ0FBdUMsZUFBZSxZQUF0RCxDQUFtRSxZQUFZLFNBQS9FLENBQWpFLEVBR0gsQ0FORCxJQU1NLElBQUksWUFBWSxFQUFFLFFBQWxCLENBQ04sQ0FDSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsTUFBaEMsQ0FBdUMsQ0FBdkMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsSUFBaEMsQ0FBcUMsQ0FBQyxTQUFTLE1BQVYsQ0FBaUIsWUFBWSxTQUE3QixDQUF1QyxlQUFlLFlBQXRELENBQW1FLFlBQVksU0FBL0UsQ0FBckMsRUFDQSxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIscUJBQXpCLENBQStDLGdCQUEvQyxDQUFpRSxDQUFDLFNBQVMsTUFBVixDQUFpQixZQUFZLFNBQTdCLENBQXVDLGVBQWUsWUFBdEQsQ0FBbUUsWUFBWSxTQUEvRSxDQUFqRSxFQUdILENBUEssSUFPQSxJQUFJLFlBQVksRUFBRSxXQUFsQixDQUNOLENBQ0ksU0FBUyxDQUFHLENBQUMsZUFBZSxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQTFCLENBQXVDLGVBQWUsU0FBdEQsQ0FBZ0UsWUFBWSxDQUE1RSxDQUE4RSxpQkFBbUIsSUFBakcsQ0FBc0csU0FBUyxNQUEvRyxDQUFzSCxZQUFZLFNBQWxJLENBQTRJLGVBQWUsWUFBM0osQ0FBWixDQUVDLE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBWCxDQUF5QixxQkFBekIsQ0FBK0MsZ0JBQS9DLENBQWlFLENBQUMsU0FBUyxNQUFWLENBQWlCLFlBQVksU0FBN0IsQ0FBdUMsZUFBZSxZQUF0RCxDQUFtRSxZQUFZLFNBQS9FLENBQWpFLEVBRUosQ0FDRCxNQUFNLENBQUMsS0FBUCxDQUFhLGVBQWIsQ0FBNkIsWUFBN0IsRUFFSCxDQTlCRCxDQWlDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZUFBcEIsQ0FBc0MsU0FBUyxJQUFULENBQWMsQ0FDaEQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQStCLElBQS9CLENBRUEsU0FBUyxDQUFDLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBOEIsSUFBOUIsRUFBb0MsSUFBcEMsQ0FDSSxVQUFNLENBQ0YsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBK0IsS0FBL0IsQ0FBc0MsQ0FBbEQsQ0FBbUQsSUFBbkQsQ0FBUixDQUNILENBSEwsQ0FJSSxVQUFNLENBQUssNEJBQ1AsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsMEJBQTVCLENBQXVELE9BQXZELEVBQ0EsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBK0IsS0FBL0IsQ0FBc0MsQ0FBbEQsQ0FBbUQsSUFBbkQsQ0FBUixDQUNQLENBUEQsRUFTSCxDQVpELENBY0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGVBQXBCLENBQXNDLFVBQVUsQ0FFNUMsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBbUMsT0FBbkMsRUFBNEMsU0FBaEQsQ0FBMkQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLE9BQW5DLENBQTJDLEVBQTNDLENBQzNELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFtQyxPQUFuQyxDQUEyQyxJQUEzQyxDQUFnRCxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBbUMsT0FBbkMsQ0FBMkMsTUFBM0MsQ0FBa0QsQ0FBdEQsQ0FBd0QsU0FBUyxDQUFDLEVBQWxFLENBQXFFLGdCQUFnQixDQUFDLEVBQXRGLENBQWhELEVBQ0gsQ0FKRCxDQUtBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixlQUFwQixDQUFzQyxTQUFTLEtBQVQsQ0FBZSxDQUNqRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBbUMsT0FBbkMsQ0FBMkMsTUFBM0MsQ0FBa0QsS0FBbEQsQ0FBd0QsQ0FBeEQsRUFDSCxDQUZELENBR0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUF5QyxTQUFTLEtBQVQsQ0FBZSxDQUNwRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBbUMsT0FBbkMsQ0FBMkMsTUFBM0MsQ0FBa0QsS0FBbEQsQ0FBd0QsQ0FBeEQsQ0FBMEQsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLE9BQW5DLENBQTJDLE1BQTNDLENBQWtELENBQXRELENBQXdELFNBQVMsQ0FBQyxFQUFsRSxDQUFxRSxnQkFBZ0IsQ0FBQyxFQUF0RixDQUExRCxFQUNILENBRkQsQ0FHQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBcUMsU0FBVSxPQUFWLENBQWtCLElBQWxCLENBQXVCLENBRXhELElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFSLENBQWdCLE1BQS9CLENBQXNDLENBQUMsRUFBdkMsQ0FBMkMsQ0FDekMsR0FBSSxPQUFPLENBQUMsT0FBUixDQUFnQixDQUFoQixFQUFtQixJQUFuQixFQUF5QixDQUF6QixFQUE4QixPQUFPLENBQUMsT0FBUixDQUFnQixDQUFoQixFQUFtQixJQUFuQixFQUF5QixDQUEzRCxDQUNBLENBQ0csTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHVCQUFwQixDQUE0QyxPQUFPLENBQUMsT0FBUixDQUFnQixDQUFoQixFQUFtQixNQUEvRCxDQUFzRSxPQUFPLENBQUMsR0FBOUUsQ0FBa0YsT0FBTyxDQUFDLE9BQVIsQ0FBZ0IsQ0FBaEIsRUFBbUIsSUFBckcsQ0FBMEcsT0FBTyxDQUFDLE9BQVIsQ0FBZ0IsQ0FBaEIsRUFBbUIsWUFBN0gsQ0FBMEksTUFBTSxDQUFDLFFBQWpKLENBQTBKLE9BQU8sQ0FBQyxPQUFSLENBQWdCLENBQWhCLEVBQW1CLFlBQW5CLENBQWdDLFlBQTFMLEVBRUYsQ0FFRixDQUNELEdBQUksT0FBTyxDQUFDLE9BQVIsQ0FBZ0IsTUFBaEIsRUFBd0IsQ0FBNUIsQ0FDQSw0QkFDRyxNQUFNLENBQUMsS0FBUCxDQUFhLHVDQUFjLE1BQU0sQ0FBQyxrQkFBckIsaURBQWMsdUJBQTJCLGVBQXpDLENBQWIsQ0FBc0UsQ0FBQyxJQUFJLENBQUMsSUFBTixDQUFXLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBN0IsQ0FBdEUsRUFFRixDQUVKLENBaEJELENBb0JGLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix1QkFBcEIsQ0FBOEMsU0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLElBQTlCLENBQW1DLFlBQW5DLENBQWdELE9BQWhELENBQXdELGFBQXhELENBQXNFLDRCQUM1RztBQUVBLEdBQUksYUFBYSxFQUFFLFNBQW5CLENBQThCLGFBQWEsQ0FBQyxRQUFkLENBQzlCLEdBQUkseUJBQUEsTUFBTSxDQUFDLGtCQUFQLHdFQUEyQixlQUEzQixHQUE0QyxTQUFoRCxDQUNBLDRCQUNBLGVBQWUsQ0FBQyxnQkFBaEIseUJBQWlDLE1BQU0sQ0FBQyxrQkFBeEMsaURBQWlDLHVCQUEyQixFQUE1RCxDQUErRCxPQUEvRCxFQUF3RSxJQUF4RSxDQUE2RSxTQUFTLElBQVQsQ0FBZSxDQUNuRixHQUFJLElBQUksRUFBRSxDQUFWLENBQ0EsNEJBQ1EsTUFBTSxDQUFDLEVBQVAsQ0FBVSx1QkFBVixDQUFrQyxDQUFDLEVBQUUsQ0FBRSxTQUFMLENBQWUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFQLENBQWUsSUFBNUMsQ0FDbkMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQURZLENBQ0wsb0JBQW9CLHlCQUFDLE1BQU0sQ0FBQyxrQkFBUixpREFBQyx1QkFBMkIsZUFEM0MsQ0FDMkQsVUFBVSxDQUFDLFNBRHRFLENBQ2dGLGVBQWUsQ0FBQyxDQURoRyxDQUFsQyxFQUVQLENBQ0QsR0FBSSxJQUFJLEVBQUUsQ0FBVixDQUNBLDRCQUdHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxJQUFoQyxDQUNBLEdBQUksU0FBUyxFQUFFLFNBQVgsRUFBeUIsU0FBUyxDQUFDLENBQXZDLENBQTBDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUE2QixTQUE3QixDQUF1QyxTQUF2Qyx5QkFBaUQsTUFBTSxDQUFDLGtCQUF4RCxpREFBaUQsdUJBQTJCLGVBQTVFLENBQTRGLGFBQTVGLEVBQzVDLENBQ0UsQ0FiWixDQWFhLFNBQVMsS0FBVCxDQUFlLENBQ2YsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBRUwsQ0FoQlIsRUFrQkMsQ0FwQkQsSUFxQkEsQ0FDRyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QiwwREFBNUIsQ0FBdUYsT0FBdkYsRUFDRixDQUNOLENBNUJILENBZ0NFLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixtQkFBcEIsQ0FBd0MsU0FBUyxNQUFULENBQWdCLE1BQWhCLENBQXVCLEtBQXZCLENBQTZCLFlBQTdCLENBQTBDLEtBQTFDLENBQWdELFVBQWhELENBQTJELGVBQTNELENBQTJFLENBRS9HLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixlQUFwQixDQUFvQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBcEIsQ0FBa0MsR0FBbEMsQ0FBc0MsVUFBMUUsRUFBd0YsS0FBeEYsQ0FFSSxHQUFJLE1BQU0sQ0FBQyxNQUFQLENBQWMsS0FBZCxFQUFxQixjQUF6QixDQUNBLENBRUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLE1BQU0sQ0FBQyxPQUExQyxDQUFrRCxLQUFLLENBQUMsTUFBTixDQUFhLElBQS9ELEVBQ0Q7QUFDQSxDQUxELElBTUssSUFBSSxNQUFNLENBQUMsTUFBUCxDQUFjLEtBQWQsRUFBcUIsU0FBekIsQ0FDTCxDQUNHLEdBQUksZUFBZSxHQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUExQyxDQUF5RCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBNkIsTUFBTSxDQUFDLElBQVAsQ0FBWSxFQUF6QyxDQUE0QyxDQUE1QyxDQUE4QyxZQUE5QyxDQUEyRCxNQUFNLENBQUMsWUFBbEUsQ0FBK0UsTUFBL0UsRUFDM0QsQ0FISSxJQUlBLElBQUksTUFBTSxDQUFDLE1BQVAsQ0FBYyxLQUFkLEVBQXFCLFdBQXpCLENBQ0wscURBR0csTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLGFBQXpCLENBQXVDLGFBQXZDLEVBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBYSwwQ0FBZ0IsTUFBTSxDQUFDLGtCQUF2QixrREFBZ0Isd0JBQTJCLGNBQTNDLENBQWIsMEJBQXVFLE1BQU0sQ0FBQyxrQkFBOUUsa0RBQXVFLHdCQUEyQixhQUFsRyxFQUdGLENBUkksSUFTQSxJQUFJLE1BQU0sQ0FBQyxNQUFQLENBQWMsS0FBZCxFQUFxQixhQUF6QixDQUNMLHFEQUNHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFrQyxLQUFsQyxDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWEsd0NBQWMsTUFBTSxDQUFDLGtCQUFyQixrREFBYyx3QkFBMkIsYUFBekMsQ0FBYiwwQkFBb0UsTUFBTSxDQUFDLGtCQUEzRSxrREFBb0Usd0JBQTJCLGFBQS9GLEVBQ0YsQ0FKSSxJQUtBLElBQUksTUFBTSxDQUFDLE1BQVAsQ0FBYyxLQUFkLEVBQXFCLGFBQXpCLENBQ0wscURBQ0csR0FBSSxDQUFBLGNBQWEsQ0FBRyxpQ0FBTyxNQUFNLENBQUMsa0JBQWQsa0RBQU8sd0JBQTJCLHdCQUFsQyxDQUFwQixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFrQyxLQUFsQyxDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWEsd0NBQWMsTUFBTSxDQUFDLGtCQUFyQixrREFBYyx3QkFBMkIsZUFBekMsQ0FBYixDQUFzRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTixDQUFhLElBQW5CLENBQXdCLFNBQVMsQ0FBQyxJQUFsQyxDQUF0RSxFQUNGLENBTEksSUFNQSxJQUFJLE1BQU0sQ0FBQyxNQUFQLENBQWMsS0FBZCxFQUFxQixZQUF6QixDQUNMLENBRUMsQ0FISSxJQUlBLElBQUksTUFBTSxDQUFDLE1BQVAsQ0FBYyxLQUFkLEVBQXFCLGFBQXpCLENBQ0wsNkJBRUcsTUFBTSxDQUFDLEtBQVAsQ0FBYSwyQ0FBaUIsTUFBTSxDQUFDLGtCQUF4QixrREFBaUIsd0JBQTJCLGFBQTVDLENBQWIsQ0FBdUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU4sQ0FBYSxJQUFuQixDQUF3QixZQUFZLENBQUMsVUFBckMsQ0FBdkUsRUFDRixDQUpJLElBTUEsSUFBSSxNQUFNLENBQUMsTUFBUCxDQUFjLEtBQWQsRUFBcUIsY0FBekIsQ0FDTCxDQUVJO0FBQ0EsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixDQUFyQixDQUF1QixDQUduQixHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixlQUFwQixDQUFvQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBcEIsQ0FBa0MsR0FBbEMsRUFBdUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsQ0FBeEQsQ0FBcEMsR0FBaUcsSUFBckcsQ0FDQSxxREFDSSxHQUFJLENBQUEsc0JBQXNCLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLDBCQUFBLE1BQU0sQ0FBQyxrQkFBUCwwRUFBMkIsYUFBM0IsRUFBeUMsR0FBekMsQ0FBNkMsTUFBTSxDQUFDLFNBQXpFLENBQW1GLGdCQUFuRixDQUFvRyxNQUFNLENBQUMsZ0JBQTNHLENBQTRILDJCQUE1SCxDQUE3QixDQUNBLE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBWCxDQUF5QiwwQkFBQSxNQUFNLENBQUMsa0JBQVAsMEVBQTJCLGFBQTNCLEVBQXlDLEdBQXpDLENBQTZDLE1BQU0sQ0FBQyxTQUE3RSxDQUF1RixNQUFNLENBQUMsZ0JBQTlGLENBQStHLENBQUMsZUFBZSxVQUFoQixDQUEvRyxFQUVILENBTEQsSUFNSyxDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFtQyxJQUFuQyxDQUF3QyxDQUFDLE1BQU0sQ0FBQyxNQUFSLENBQWUsTUFBTSxDQUFDLE1BQXRCLENBQTZCLEtBQUssQ0FBQyxLQUFuQyxDQUF5QyxZQUFZLENBQUMsWUFBdEQsQ0FBbUUsS0FBSyxDQUFDLEtBQXpFLENBQStFLFVBQVUsQ0FBQyxVQUExRixDQUFxRyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsQ0FBbEksQ0FBb0ksZUFBZSxDQUFDLGVBQXBKLENBQXhDLEVBQThNO0FBRXROLENBWEQsSUFXSyxxREFDRCxHQUFJLENBQUEsdUJBQXNCLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLDBCQUFBLE1BQU0sQ0FBQyxrQkFBUCwwRUFBMkIsYUFBM0IsRUFBeUMsR0FBekMsQ0FBNkMsTUFBTSxDQUFDLFNBQXpFLENBQW1GLGdCQUFuRixDQUFvRyxNQUFNLENBQUMsZ0JBQTNHLENBQTRILDJCQUE1SCxDQUE3QixDQUVBLE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBWCxDQUF5QiwwQkFBQSxNQUFNLENBQUMsa0JBQVAsMEVBQTJCLGFBQTNCLEVBQXlDLEdBQXpDLENBQTZDLE1BQU0sQ0FBQyxTQUE3RSxDQUF1RixNQUFNLENBQUMsZ0JBQTlGLENBQStHLENBQUMsZUFBZSxVQUFoQixDQUEvRyxFQUNILENBQ0osQ0FwQkksSUFxQkMsSUFBSSxNQUFNLENBQUMsTUFBUCxDQUFjLEtBQWQsRUFBcUIsV0FBekIsQ0FDTixDQUdHLEdBQUksQ0FBQSxlQUFlLENBQUcsYUFBYSxNQUFNLENBQUMsUUFBMUMsQ0FDQSxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIsZUFBekIsQ0FBeUMsTUFBTSxDQUFDLE1BQVAsQ0FBYyxLQUF2RCxFQUVGLENBUEssSUFRRCxJQUFJLE1BQU0sQ0FBQyxNQUFQLENBQWMsS0FBZCxFQUFxQixVQUF6QixDQUNMLDJCQUNJLEdBQUksQ0FBQSxZQUFKLENBRUEsR0FBSSxNQUFNLENBQUMsbUJBQVgsQ0FBZ0MsWUFBWSx3QkFBRyxNQUFNLENBQUMseUJBQVYsZ0RBQUcsc0JBQWtDLE9BQWpELENBQWhDLElBQ0ssQ0FBQSxZQUFZLENBQUMsQ0FBYixDQUVMLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsZ0JBQWhCLENBQWlDLE1BQTNDLENBQWtELENBQUMsTUFBTSxDQUFFLE1BQU0sQ0FBQyxJQUFQLENBQVksRUFBckIsQ0FBd0IsU0FBUyxDQUFDLENBQWxDLENBQW9DLE9BQU8sQ0FBQyxZQUE1QyxDQUF5RCxVQUFVLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBOUMsQ0FBNEQsU0FBUyxDQUFDLE1BQU0sQ0FBQyxrQkFBN0UsQ0FBZ0csU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFqSCxDQUFwRSxDQUFsRCxFQUNILENBUkksSUFTQSxJQUFJLE1BQU0sQ0FBQyxNQUFQLENBQWMsS0FBZCxFQUFxQixZQUF6QixDQUNMLENBQ0ksT0FBTyxDQUFDLE9BQVIsQ0FBZ0IsSUFBaEIsR0FDSCxDQUdSLENBeEZELENBMEZBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBMEMsU0FBUyxVQUFULENBQzFDLENBR08sSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLE1BQWxELENBQXlELENBQUMsRUFBMUQsQ0FDQyxDQUNJLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLENBQW5DLEVBQXNDLFdBQXRDLEVBQW1ELFVBQW5ELEVBQWlFLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLENBQW5DLEVBQXNDLFNBQTVHLENBQ0EsQ0FDSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsbUJBQXBCLENBQXdDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFtQyxDQUFuQyxFQUFzQyxNQUE5RSxDQUFxRixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBbUMsQ0FBbkMsRUFBc0MsTUFBM0gsQ0FBa0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLENBQW5DLEVBQXNDLEtBQXhLLENBQThLLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFtQyxDQUFuQyxFQUFzQyxZQUFwTixDQUFpTyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBbUMsQ0FBbkMsRUFBc0MsS0FBdlEsQ0FBNlEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLENBQW5DLEVBQXNDLFVBQW5ULENBQThULE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFtQyxDQUFuQyxFQUFzQyxlQUFwVyxFQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFtQyxDQUFuQyxFQUFzQyxTQUF0QyxDQUFrRCxJQUFsRCxDQUNILENBQ0osQ0FDUixDQVpELENBYUosTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixDQUEwQyxTQUFTLE1BQVQsQ0FBZ0IsU0FBaEIsQ0FDMUMsQ0FFSSxHQUFJLFNBQUosQ0FBYyxDQUNWLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixFQUEyQyxTQUEvQyxDQUEyRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLEVBQTFDLENBRTNELG9CQUFvQixDQUFDLDZCQUFyQixDQUFtRCxNQUFuRCxDQUEwRCxNQUExRCxFQUFrRSxJQUFsRSxDQUNBLFNBQVUsSUFBVixDQUFnQixDQUVoQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLE1BQTFDLEVBQW9ELElBQUksQ0FBQyxJQUF6RCxDQUdBLENBTkEsQ0FNQyxTQUFTLEtBQVQsQ0FBZSxDQUNaLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNILENBUkQsRUFTSCxDQUVKLENBakJELENBa0JJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixtQkFBcEIsQ0FBd0MsU0FBUyxNQUFULENBQWdCLEtBQWhCLENBQXNCLFlBQXRCLENBQW1DLEtBQW5DLENBQ3hDLENBRUksR0FBSSxDQUFBLGVBQWUsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBMUMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBcEIsQ0FBb0MsS0FBcEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBbUMsRUFBbkMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxPQUFQLEVBQWdCLFNBQXBCLENBQ0EsQ0FDSSxNQUFNLENBQUMsT0FBUCxDQUFlLEVBQWYsQ0FDQSxHQUFJLENBQUEsTUFBTSxDQUFHLE9BQU8sQ0FBQyxJQUFSLENBQWEsTUFBYixDQUFiLENBQ0EsTUFBTSxDQUFDLE1BQVAsQ0FBYyxNQUFNLENBQUMsTUFBckIsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxNQUFQLEVBQWUsU0FBbkIsQ0FBOEIsTUFBTSxDQUFDLE9BQVAsQ0FBZSxJQUFmLENBQW9CLE1BQXBCLEVBRWpDLENBRUQsTUFBTSxDQUFDLG9CQUFQLENBQThCLEtBQTlCLENBRUEsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLG1CQUFDLE1BQU0sQ0FBQyxPQUFSLDBDQUFDLGdCQUFnQixNQUFqQixDQUFkLENBQXNDLENBQUMsRUFBdkMsQ0FDQSxxQkFFSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsbUJBQXBCLENBQXdDLE1BQXhDLENBQStDLE1BQU0sQ0FBQyxPQUFQLENBQWUsQ0FBZixDQUEvQyxDQUFpRSxLQUFqRSxDQUF1RSxZQUF2RSxDQUFvRixLQUFwRixDQUEwRixDQUExRixDQUE0RixlQUE1RixFQUNILENBQ0Q7QUFDSCxDQXZCRCxDQTBCQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isc0JBQXBCLENBQTZDLFNBQVMsSUFBVCxDQUFjLEtBQWQsQ0FBb0IsTUFBcEIsQ0FDN0MsQ0FDRyxNQUFNLENBQUMsWUFBUCxDQUFvQixNQUFwQixDQUE2QixLQUE3QixDQUVDLFFBQVEsQ0FBQyxVQUFVLENBRVgsTUFBTSxDQUFDLFNBQVAsQ0FBbUIsSUFBbkIsU0FBbUIsSUFBbkIsaUJBQW1CLElBQUksQ0FBRSxFQUF6QixDQUNBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLE1BQXBCLENBQTZCLElBQTdCLENBQ1AsQ0FKTyxDQUFSLENBT0gsQ0FYRCxDQWFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixzQkFBcEIsQ0FBNkMsU0FBUyxJQUFULENBQWMsS0FBZCxDQUFvQixNQUFwQixDQUM5QyxDQUNJLE1BQU0sQ0FBQyxnQkFBUCxDQUEwQixJQUExQixTQUEwQixJQUExQixpQkFBMEIsSUFBSSxDQUFFLElBQWhDLENBQ0gsQ0FIQSxDQUtELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsU0FBUyxJQUFULENBQWMsS0FBZCxDQUFvQixHQUFwQixDQUN6QyxDQUVJLEdBQUksQ0FBQSxJQUFJLE9BQUosRUFBQSxJQUFJLFNBQUosUUFBQSxJQUFJLENBQUUsRUFBTixHQUFVLFNBQVYsRUFBdUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLEVBQW9DLFNBQS9ELENBQ0EsQ0FDSSxvQkFBb0IsQ0FBQyxpQkFBckIsQ0FBdUMsSUFBSSxDQUFDLEVBQTVDLEVBQWdELElBQWhELENBQXFELFNBQVMsSUFBVCxDQUFlLENBQ3hELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFtQyxPQUFuQyxDQUEyQyxHQUEzQyxFQUFnRCxRQUFoRCxDQUEyRCxJQUFJLENBQUMsSUFBaEUsQ0FFWCxDQUhELEVBSUgsQ0FDSixDQVZELENBWUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUF5QyxVQUN6QyxDQUNHLEdBQUksQ0FBQSxTQUFTLENBQUcsQ0FDWiwrQ0FDbEIsT0FBTyxDQUFFLEVBRnFCLENBR1osUUFBUSxDQUFFLFlBSEUsQ0FJWixRQUFRLENBQUUscUJBSkUsQ0FLWixJQUFJLENBQUMsUUFMTyxDQU1aLFNBQVMsQ0FBQyxNQU5FLENBT1osU0FBUyxDQUFDLENBUEUsQ0FRWixxQkFBcUIsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZUFBcEIsRUFSVixDQUFoQixDQVdBLE1BQU8sQ0FBQSxTQUFQLENBR0YsQ0FoQkQsQ0FrQkEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGVBQXBCLENBQXNDLFVBQ3ZDLENBQ1EsR0FBSSxDQUFBLElBQUksQ0FBRyxFQUFYLENBQ0EsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLE1BQWpDLENBQXdDLENBQUMsRUFBekMsQ0FDQSxDQUNJLElBQUksQ0FBQyxJQUFMLENBQVUsQ0FBQyxRQUFRLENBQVQsQ0FBVyxVQUFVLElBQXJCLENBQVYsRUFDSCxDQUNELE1BQU8sQ0FBQSxJQUFQLENBQ1AsQ0FSQSxDQVdELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixlQUFwQixDQUFzQyxTQUFTLEtBQVQsQ0FDdEMsQ0FDUSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsTUFBakMsQ0FBd0MsQ0FBQyxFQUF6QyxDQUNBLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLENBQWxCLEVBQXFCLHFCQUFyQixDQUEyQyxJQUEzQyxDQUFnRCxDQUFDLFFBQVEsS0FBVCxDQUFlLFVBQVUsSUFBekIsQ0FBaEQsRUFDQyxDQUNSLENBTkQsQ0FTRSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBbUMsU0FBUyxJQUFULENBQWMsS0FBZCxDQUNuQyxDQUNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBdUMsWUFBdkMsQ0FBc0QsSUFBdEQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBaUMsRUFBakMsQ0FDRCxDQUpELENBTUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQWlDLFNBQVMsTUFBVCxDQUNsQyxDQUNFLEdBQUksQ0FBQSxTQUFTLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLEdBQWhDLENBQW9DLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxNQUFULENBQWtCLENBQXBFLEVBQXNFLE9BQXRFLENBQThFLE1BQTlFLENBQWhCLENBRUEsR0FBSSxTQUFTLEVBQUUsQ0FBZixDQUFrQixNQUFPLEtBQVAsQ0FBbEIsSUFDSyxPQUFPLE1BQVAsQ0FDTixDQU5BLENBUUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUEyQyxTQUFVLEtBQVYsQ0FBZ0IsTUFBaEIsQ0FBdUIsbURBRTdEO0FBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLElBQW5DLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLFNBQW5DLENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG1CQUFwQixDQUF3QyxLQUF4QyxDQUVBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsS0FBbEIsQ0FBckMsQ0FFQSxHQUFJLHdCQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixrRUFBb0MsTUFBcEMsRUFBOEMsMEJBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXJCLDJDQUFDLHVCQUFvQyxPQUFyQyxDQUFsRCxDQUVBLENBR0ksR0FBSSxDQUFBLFNBQVMsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBbUMsTUFBbkQsQ0FDQSxTQUFTLENBQUMsTUFBRCxDQUFULENBQW9CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFtQyxJQUF2RCxDQUNBLFNBQVMsQ0FBQyxxQkFBRCxDQUFULENBQW1DLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFtQyxtQkFBdEUsQ0FDQSxTQUFTLENBQUMsMkJBQUQsQ0FBVCxDQUF5QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBbUMseUJBQTVFLENBRUEsR0FBSSxDQUFBLE1BQU0sQ0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sU0FBUyxDQUFDLEVBQWhCLENBQW1CLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFtQyxNQUFuQyxDQUEwQyxJQUE5RSxDQUFtRixNQUFNLENBQUMsU0FBMUYsQ0FBYixDQUNBLE1BQU0sQ0FBQyxNQUFELENBQU4sQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLElBQXBELENBQ0EsTUFBTSxDQUFDLHFCQUFELENBQU4sQ0FBZ0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLG1CQUFuRSxDQUNBLE1BQU0sQ0FBQywyQkFBRCxDQUFOLENBQXNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFtQyx5QkFBekUsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBbUMsT0FBbkMsQ0FBMkMsQ0FBQyxNQUFELENBQTNDLENBQ0gsQ0FJRCxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUUsQ0FBWixDQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXNDLE1BQXRELENBQTZELENBQUMsRUFBOUQsQ0FDQSw0QkFDSSxHQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBc0MsQ0FBdEMsNkJBQTJDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUEvRCxpREFBMkMsdUJBQW9DLElBQS9FLENBQUgsQ0FDQSxDQUVJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix1QkFBcEIsQ0FBOEMsQ0FBOUMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixFQUFvQyxTQUF4QyxDQUFtRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBbUMsU0FBbkMsQ0FBOEMsQ0FBOUMsQ0FDdEQsQ0FDSixDQUNELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHVCQUFwQixFQUE2QyxTQUE3QyxFQUEwRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsRUFBb0MsU0FBbEcsQ0FDQSxDQUNZLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix1QkFBcEIsQ0FBNEMsQ0FBNUMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBbUMsU0FBbkMsQ0FBK0MsQ0FBL0MsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBbUMsSUFBbkMsQ0FBeUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUFzQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsdUJBQTFELENBQXpDLENBQ1gsQ0FFRCxHQUFJLENBQUMsTUFBTCxDQUFhLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBc0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFoRCxFQUEyRCxDQUEzRCxDQUViLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFpQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsbUJBQXJELEVBRUEsUUFBUSxDQUFDLFVBQVUsQ0FDZixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBbUMsS0FBbkMsQ0FDSCxDQUZPLENBQVIsQ0FHSixDQXJERCxDQXlEQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isc0JBQXBCLENBQTZDLFNBQVUsS0FBVixDQUFnQixDQUdyRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLEtBQXpDLENBQStDLElBQS9DLEVBRUEsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBaEQsR0FBMkQsQ0FBL0QsQ0FDSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBaEQsRUFBMkQsQ0FBM0QsQ0FESixJQUdJLENBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUFzQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQWhELEVBQTJELENBQTNELENBQTZEO0FBSXpFLENBWkEsQ0FlRixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZUFBcEIsQ0FBc0MsVUFBVyxDQUd2QyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsSUFBbEIsQ0FBd0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixFQUF4QixFQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixlQUFwQixDQUFvQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsTUFBbEIsQ0FBeUIsQ0FBN0QsRUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixNQUFsQixDQUF5QixDQUFsRSxFQUdWLENBUkEsQ0FVQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLFNBQVMsS0FBVCxDQUUxQyxDQUNiO0FBQ0EsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFHLENBQWIsQ0FBZ0IsQ0FBQyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixNQUF0QyxDQUE4QyxDQUFDLEVBQS9DLENBQW1ELENBQ2xELE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixDQUFsQixFQUFxQixxQkFBckIsQ0FBNkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLENBQWxCLEVBQXFCLHFCQUFyQixDQUEyQyxNQUEzQyxDQUFrRCxTQUFBLE1BQU0sUUFBSSxDQUFBLE1BQU0sQ0FBQyxLQUFQLEdBQWlCLEtBQXJCLEVBQXhELENBQTdDLENBQ0EsQ0FNYSxDQVpELENBY0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUEyQyxTQUFVLEtBQVYsQ0FDM0MsQ0FFRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLEtBQTFDLEVBRWYsR0FBSSxLQUFLLEVBQUUsQ0FBWCxDQUNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixNQUFsQixDQUF5QixLQUF6QixDQUErQixDQUEvQixFQUVjLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLE1BQWxCLENBQTJCLENBQS9CLENBQ00sTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUF5QyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsTUFBbEIsQ0FBMkIsQ0FBcEUsRUFHUCxDQVpGLENBZUYsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUF5QyxTQUFTLElBQVQsQ0FBYyxHQUFkLENBQWtCLFlBQWxCLENBQStCLGVBQS9CLENBQStDLENBQy9FLGVBQWUsQ0FBQyxrQkFBaEIsQ0FBbUMsR0FBbkMsQ0FBdUMsWUFBdkMsQ0FBb0QsZUFBcEQsQ0FBb0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUE5RSxFQUE4RixJQUE5RixDQUFtRyxTQUFTLElBQVQsQ0FBZSxDQUU5RyxNQUFNLENBQUMsRUFBUCxDQUFVLDJCQUFWLENBQXNDLENBQUMsRUFBRSxDQUFFLElBQUwsQ0FBVSxhQUFhLENBQUMsTUFBTSxDQUFDLE9BQVAsQ0FBZSxJQUF2QyxDQUE0QyxlQUFlLENBQUMsTUFBTSxDQUFDLE1BQW5FLENBQTBFLFVBQVUsQ0FBQyxDQUFyRixDQUF1RixvQkFBb0IsQ0FBQyxHQUE1RyxDQUF0QyxFQUlFLENBTk4sQ0FNTyxTQUFTLEtBQVQsQ0FBZSxDQUVkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNMLENBVEgsRUFVWixDQVhHLENBYUosR0FBTSxNQUFNLENBQUMsS0FBUCxDQUFhLGVBQWIsSUFBZ0MsQ0FBaEMsRUFBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLEVBQXVCLE9BQWxFLENBQ0EsQ0FFRyxvQkFBb0IsQ0FBQyx3QkFBckIsQ0FBOEMsSUFBOUMsQ0FBbUQsTUFBbkQsRUFBMkQsSUFBM0QsQ0FBZ0UsU0FBUyxJQUFULENBQWUsQ0FFL0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQStCLElBQUksQ0FBQyxJQUFwQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxJQUFoQyxDQUdBLENBTmhCLENBTWlCLFNBQVMsS0FBVCxDQUFlLENBRWQsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0FUYixFQVVFLENBQ1YsNEJBQUksTUFBTSxDQUFDLGtCQUFYLDRDQUFJLHdCQUEyQixlQUEvQixDQUNBLENBQ00sb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLElBQTlDLENBQW1ELE1BQW5ELEVBQTJELElBQTNELENBQWdFLFNBQVMsSUFBVCxDQUFlLENBRTNELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUErQixJQUFJLENBQUMsSUFBcEMsQ0FFRixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsSUFBaEMsQ0FFQSxDQU5sQixDQU1tQixTQUFTLEtBQVQsQ0FBZSxDQUVkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNMLENBVGYsRUFVTCxDQUVHLEdBQUksQ0FBQSxRQUFKLENBQ0EsNEJBQUksTUFBTSxDQUFDLGtCQUFYLDRDQUFJLHdCQUEyQixlQUEvQixDQUFnRCxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsMkNBQW5CLENBQVgsQ0FBaEQsSUFDSyxDQUFBLFFBQVEsQ0FBRyxjQUFjLENBQUMsR0FBZixDQUFtQiw4Q0FBbkIsQ0FBWCxDQUVMLFFBQVEsQ0FBQyxNQUFULENBQWdCLFFBQVEsQ0FBQyxRQUFELENBQVIsQ0FBbUIsTUFBbkIsQ0FBaEIsRUFFSyxDQXJ1QkYsQ0FzdUJILElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FHaEMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFlBQW5CLENBQWdDLFNBQVUsS0FBVixDQUFpQixDQUU3QyxHQUFJLENBQUMsS0FBTCxDQUFZLEtBQUssQ0FBRyxDQUFSLENBRVosR0FBSSxDQUFBLFlBQVksQ0FBRyxvQkFBbkIsQ0FDQSxHQUFJLENBQUEsR0FBRyxDQUFHLGNBQWMsQ0FBQyxJQUFmLENBQW9CLFVBQXBCLENBQWdDLGNBQWMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxPQUF2QixDQUErQixHQUEvQixDQUFtQyxLQUFuRSxDQUFWLENBRUE7QUFDcEI7QUFDQTtBQUNBO0FBQ0Esc0JBQ29CLEdBQUksQ0FBQyxHQUFMLENBQ0EsQ0FDQSxjQUFjLENBQUMsT0FBZixDQUF1QixVQUF2QixDQUFtQyxjQUFjLEtBQUssQ0FBQyxFQUFOLENBQVMsT0FBdkIsQ0FBK0IsR0FBL0IsQ0FBbUMsS0FBdEUsQ0FBNkUsQ0FDckUsYUFBYSxDQUFFLElBRHNELENBRXJFLGFBQWEsQ0FBRSxLQUZzRCxDQUdyRSxTQUFTLENBQUMsVUFIMkQsQ0FJdkU7QUFDQTtBQUNBO0FBQ0UsTUFBTSxDQUFDLGdCQUFVLEVBQVYsQ0FBYSxNQUFiLENBQXFCLE1BQXJCLENBQTZCLENBQ2hDLE1BQU8sTUFBUCxDQUNILENBVG9FLENBVXJFLEtBQUssQ0FBRSxlQUFVLEVBQVYsQ0FBYyxTQUFkLENBQXlCLE1BQXpCLENBQWlDLENBRXBDLE1BQU8sQ0FBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUEwQixZQUExQixDQUFQLENBQ0gsQ0Fib0UsQ0FBN0UsRUFlQyxDQUNKLENBOUJELENBK0JBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixlQUFuQixDQUFvQyxTQUFTLE9BQVQsQ0FBaUIsQ0FDakQsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQXZCLENBQThCLENBQUMsRUFBL0IsQ0FDQSxDQUNJLEdBQUksT0FBTyxDQUFDLENBQUQsQ0FBUCxDQUFXLEVBQVgsRUFBZSxTQUFuQixDQUE4QixPQUFPLENBQUMsQ0FBRCxDQUFQLENBQVcsRUFBWCxDQUFnQixDQUFDLENBQUMsQ0FBbEIsQ0FDakMsQ0FDSixDQUxELENBT0E7QUFFQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixjQUFuQixFQUFtQyxTQUF2QyxDQUFrRCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsWUFBbkIsQ0FBZ0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLG1CQUFuRCxFQUdsRDtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQ1MsQ0EzeEJNLENBQVAsQ0E4eEJQLEVBQ0QsYUFFTyxRQUFTLENBQUEsb0JBQVQsRUFBaUMsQ0FFaEMsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUYsV0FBVyxDQUFFLGdEQUZYLENBSUYsVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBZ0IsVUFBaEIsQ0FBMkIsb0JBQTNCLENBQWdELGdCQUFoRCxDQUFpRSxDQUU1RSxNQUFNLENBQUMsa0JBQVAsa0JBQTZCLFdBQVcsQ0FBQywwQkFBekMsQ0FBb0UsS0FBSyxDQUFDLGVBQTFFLENBQTBGLElBQUksQ0FBQyxNQUEvRixDQUNBLFdBQVcsQ0FBQyxLQURaLENBQ2tCLFlBQVksQ0FBQyxJQUQvQixDQUNvQyxTQUFTLENBQUMsS0FEOUMsQ0FDb0QsZUFBZSxDQUFDLFVBRHBFLENBQytFLFlBQVksQ0FBQyxLQUQ1RixpQkFDK0csSUFEL0csRUFHQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsS0FBMUIsQ0FBa0MsTUFBTSxDQUFDLEdBQVAsQ0FBVyxLQUE3QyxDQUdBLE1BQU0sQ0FBQyxxQkFBUCxDQUErQixTQUFTLElBQVQsQ0FBYyxLQUFkLENBQ3JCLENBQ0Y7QUFDRTtBQUVBLE1BQU0sQ0FBQyxHQUFQLENBQVcsTUFBWCxDQUFvQixJQUFJLENBQUMsRUFBekIsQ0FDQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsWUFBMUIsQ0FBeUMsSUFBekMsQ0FHQyxDQVRYLENBWUUsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUVELE1BQU0sQ0FBQyxPQUFQLENBQWlCLFVBQVUsQ0FDMUIsR0FBSSxNQUFNLENBQUMsR0FBUCxFQUFZLElBQVosRUFBb0IsTUFBTSxDQUFDLEdBQVAsRUFBWSxTQUFwQyxDQUNBLENBQ0EsR0FBSSxNQUFNLENBQUMsR0FBUCxDQUFXLE1BQVgsRUFBbUIsSUFBdkIsQ0FBNkIsQ0FDWCxHQUFJLENBQUEsR0FBRyxDQUFHLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEdBQWhCLENBQW9CLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBaEQsRUFBa0QsT0FBbEQsQ0FBMEQsTUFBTSxDQUFDLE9BQVAsQ0FBZSxHQUFmLENBQW1CLE1BQTdFLENBQVYsQ0FDQSxHQUFJLEdBQUcsQ0FBQyxDQUFDLENBQVQsQ0FBWSxDQUNULE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixZQUExQixDQUF5QyxNQUFNLENBQUMsUUFBUCxDQUFnQixHQUFoQixDQUF6QyxDQUVELENBRWpCLENBQ0YsQ0FDSCxDQVpDLENBY0YsTUFBTSxDQUFDLFdBQVAsQ0FBcUIsVUFDckIsQ0FDRyxHQUFJLE1BQU0sQ0FBQyxRQUFQLEVBQWlCLFNBQXJCLENBQ0EsQ0FDRyxvQkFBb0IsQ0FBQyx3QkFBckIsQ0FBOEMsSUFBOUMsQ0FBbUQsTUFBbkQsRUFBMkQsSUFBM0QsQ0FBZ0UsU0FBUyxJQUFULENBQWUsQ0FFN0QsTUFBTSxDQUFDLFFBQVAsQ0FBa0IsSUFBSSxDQUFDLElBQXZCLENBQ0EsTUFBTSxDQUFDLE9BQVAsR0FHRixDQU5oQixDQU1pQixTQUFTLEtBQVQsQ0FBZSxDQUVkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNMLENBVGIsRUFVRixDQVpELElBWU8sQ0FBQSxNQUFNLENBQUMsT0FBUCxHQUVSLENBaEJGLENBa0JJLE1BQU0sQ0FBQyxNQUFQLENBQWMsWUFBZCxDQUE0QixTQUFTLFFBQVQsQ0FBa0IsUUFBbEIsQ0FBMkIsQ0FFbkQsTUFBTSxDQUFDLFdBQVAsR0FDRCxDQUhILEVBT0osTUFBTSxDQUFDLFdBQVAsR0FFQyxDQW5FQyxDQW9FRixJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBR3hDLENBdkVNLENBQVAsQ0F5RVAsRUFFRDtBQUNBLGFBRU8sUUFBUyxDQUFBLHdCQUFULEVBQXFDLENBRXBDLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVGLFdBQVcsQ0FBRSxvREFGWCxDQUlGLFVBQVUsQ0FBRSxvQkFBUyxNQUFULENBQWdCLFVBQWhCLENBQTJCLG9CQUEzQixDQUFnRCxtQkFBaEQsQ0FBb0UsZ0JBQXBFLENBQXFGLENBRWhHLE1BQU0sQ0FBQyxvQkFBUCxDQUE4QixTQUFTLElBQVQsQ0FBYyxLQUFkLENBQ3BCLENBQ0ksTUFBTSxDQUFDLEdBQVAsQ0FBVyxZQUFYLENBQXdCLGNBQXhCLENBQXlDLElBQUksQ0FBQyxFQUE5QyxDQUVILENBSlgsQ0FNQSxNQUFNLENBQUMsR0FBUCxDQUFhLG1CQUFiLENBQ0UsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUVBLEdBQUksQ0FBQSxtQkFBbUIsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXBDLENBQ0EsR0FBSSxDQUFBLG9CQUFvQixDQUFHLHNCQUFzQixNQUFNLENBQUMsTUFBN0IsQ0FBb0MsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFNBQXpGLENBQ0EsR0FBSSxDQUFBLG9CQUFKLENBQ0EsR0FBSSxDQUFBLHVCQUF1QixDQUFHLFFBQTFCLENBQUEsdUJBQTBCLENBQVMsSUFBVCxDQUFlLENBQ3pDLEdBQUksQ0FBQSxlQUFlLENBQUcsT0FBTyxDQUFDLElBQVIsQ0FBYSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXZCLENBQXRCLENBQ0EsR0FBSSxJQUFJLENBQUMsZUFBRCxDQUFKLEdBQXdCLFNBQTVCLENBQ0EsQ0FDSSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBMkIsSUFBSSxDQUFDLGVBQUQsQ0FBL0IsQ0FDSjtBQUNBLG9CQUFvQixDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBakMsQ0FDQSxHQUFJLENBQUEsWUFBWSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixvQkFBckIsQ0FBMEMsb0JBQTFDLENBQStELFdBQS9ELENBQTJFLHVCQUEzRSxDQUFuQixDQUNDLENBQ0osQ0FURCxDQVVBLEdBQUksQ0FBQSxzQkFBc0IsQ0FBRyxRQUF6QixDQUFBLHNCQUF5QixDQUFTLElBQVQsQ0FBZSxDQUN4QyxHQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVgsQ0FBSixDQUF3QixDQUF4QixFQUE2QixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsQ0FBdkQsRUFBNEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBWCxDQUFKLEdBQTBCLFNBQTFGLENBQXFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUEyQixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFYLENBQS9CLENBRXJHLEdBQUksQ0FBQSxZQUFZLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLG9CQUFyQixDQUEwQyxvQkFBMUMsQ0FBK0QsV0FBL0QsQ0FBMkUsdUJBQTNFLENBQW5CLENBQ0E7QUFDSCxDQUxELENBUUEsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsR0FBMkIsSUFBM0IsRUFBbUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEdBQTJCLENBQWxFLENBQ0EsQ0FDSSxHQUFJLENBQUEsV0FBVyxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixvQkFBckIsQ0FBMEMsbUJBQTFDLENBQThELFdBQTlELENBQTBFLHNCQUExRSxDQUFsQixDQUNILENBSEQsSUFHTSxDQUNGLG9CQUFvQixDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBakMsQ0FDQSxHQUFJLENBQUEsWUFBWSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixvQkFBckIsQ0FBMEMsb0JBQTFDLENBQStELFdBQS9ELENBQTJFLHVCQUEzRSxDQUFuQixDQUNILENBRUYsTUFBTSxDQUFDLGVBQVAsQ0FBeUIsVUFBVSxDQUNsQyxHQUFJLE1BQU0sQ0FBQyxHQUFQLEVBQVksSUFBWixFQUFvQixNQUFNLENBQUMsR0FBUCxFQUFZLFNBQXBDLENBQ0EsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxHQUFQLENBQVcsWUFBWCxDQUF3QixjQUF4QixFQUF3QyxJQUE1QyxDQUFrRCxDQUNoQyxHQUFJLENBQUEsR0FBRyxDQUFHLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixHQUF4QixDQUE0QixTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsRUFBVCxDQUFjLENBQXhELEVBQTBELE9BQTFELENBQWtFLE1BQU0sQ0FBQyxHQUFQLENBQVcsWUFBWCxDQUF3QixjQUExRixDQUFWLENBQ0EsR0FBSSxHQUFHLENBQUMsQ0FBQyxDQUFULENBQVksQ0FDVCxNQUFNLENBQUMsR0FBUCxDQUFXLFlBQVgsQ0FBd0IsWUFBeEIsQ0FBdUMsTUFBTSxDQUFDLGdCQUFQLENBQXdCLEdBQXhCLENBQXZDLENBRUQsQ0FFakIsQ0FDRixDQUNILENBWkMsQ0FhRixNQUFNLENBQUMsbUJBQVAsQ0FBNkIsVUFDN0IsQ0FDRyxHQUFJLE1BQU0sQ0FBQyxnQkFBUCxFQUF5QixTQUE3QixDQUNBLENBQ0csb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLElBQTlDLENBQW1ELGNBQW5ELEVBQW1FLElBQW5FLENBQXdFLFNBQVMsSUFBVCxDQUFlLENBRXJFLE1BQU0sQ0FBQyxnQkFBUCxDQUEwQixJQUFJLENBQUMsSUFBL0IsQ0FDQSxNQUFNLENBQUMsR0FBUCxDQUFXLG1CQUFYLENBQWlDLElBQWpDLENBQ0EsTUFBTSxDQUFDLGVBQVAsR0FHRixDQVBoQixDQU9pQixTQUFTLEtBQVQsQ0FBZSxDQUVkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNMLENBVmIsRUFXRixDQWJELElBYU0sQ0FBQSxNQUFNLENBQUMsZUFBUCxHQUVQLENBakJGLENBbUJHO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBR2EsTUFBTSxDQUFDLG1CQUFQLEdBRUMsQ0F0RkMsQ0F1RkYsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUd4QyxDQTFGTSxDQUFQLENBNEZQLEVBRUQ7QUFFQSxhQUVPLFFBQVMsQ0FBQSxVQUFULEVBQXNCLFdBRWIsY0FDSSxRQUFRLENBQUUsSUFEZCxDQUVJLFVBQVUsQ0FBRSxxQkFBVSxDQUFFLENBRjVCLENBR0ksV0FBVyxDQUFFLHNDQUhqQixDQUlJLEtBQUssQ0FBRSxDQUNILE9BQU8sQ0FBRSxHQUNUO0FBRkcsQ0FKWCxxQ0FRaUIsb0JBQVMsTUFBVCxDQUFnQixnQkFBaEIsQ0FBaUMsQ0FDbEMsTUFBTSxDQUFDLE9BQVAsQ0FBZSxLQUFmLENBQ0EsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsRUFBbEIsQ0FDQSxNQUFNLENBQUMsR0FBUCxDQUFXLGdCQUFnQixDQUFDLGVBQTVCLENBQTZDLFNBQVUsS0FBVixDQUFnQixJQUFoQixDQUFzQixDQUNuRTtBQUNBLE1BQU0sQ0FBQyxVQUFQLENBQWtCLElBQWxCLEVBQTBCLElBQTFCLENBQ0EsTUFBTSxDQUFDLE9BQVAsQ0FBZSxJQUFmLENBQ0MsQ0FKRCxFQU1QLE1BQU0sQ0FBQyxHQUFQLENBQVcsZ0JBQWdCLENBQUMsYUFBNUIsQ0FBMkMsU0FBVSxLQUFWLENBQWdCLElBQWhCLENBQXNCLENBQzdEO0FBQ0EsTUFBTyxDQUFBLE1BQU0sQ0FBQyxVQUFQLENBQWtCLElBQWxCLENBQVAsQ0FDQSxHQUFJLENBQUEsRUFBRSxDQUFHLE1BQU0sQ0FBQyxJQUFQLENBQVksTUFBTSxDQUFDLFVBQW5CLENBQVQsQ0FDQSxHQUFJLEVBQUUsQ0FBQyxNQUFILEVBQVcsQ0FBZixDQUFrQixNQUFNLENBQUMsT0FBUCxDQUFlLEtBQWYsQ0FDckIsQ0FMRCxFQU1ILENBdkJOLCtCQXdCUyxjQUFVLEtBQVYsQ0FBaUIsT0FBakIsQ0FBMEIsS0FBMUIsQ0FBaUMsQ0FLakMsQ0E3QlQsUUFnQ2YsRUFDRCxhQUVPLFFBQVMsQ0FBQSx1QkFBVCxFQUFrQyxDQUV0QyxHQUFJLENBQUEsU0FBUyxDQUFHLENBQ2pCLFFBQVEsQ0FBSSxJQURLLENBRVgsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixPQUFqQixDQUEwQixLQUExQixDQUFpQyxDQUd0QyxDQUxVLENBTVgsVUFBVSxDQUFFLG9CQUFVLE1BQVYsQ0FBaUIsUUFBakIsQ0FBMEIsZUFBMUIsQ0FDWixDQUNJLE1BQU0sQ0FBQyxLQUFQLENBQWUsZUFBZixDQUNBLE1BQU0sQ0FBQyxNQUFQLENBQWMsVUFBVSxDQUNyQixHQUFJLFFBQVEsQ0FBQyxDQUFELENBQVIsQ0FBWSxZQUFaLENBQXlCLENBQXpCLEVBQThCLE1BQU0sQ0FBQyxLQUFQLENBQWEsWUFBYixFQUEyQixRQUFRLENBQUMsQ0FBRCxDQUFSLENBQVksWUFBekUsQ0FDQSxDQUNDLE1BQU0sQ0FBQyxLQUFQLENBQWEsZUFBYixDQUE2QixRQUFRLENBQUMsQ0FBRCxDQUFSLENBQVksWUFBekMsRUFDQSxDQUNILENBTEQsRUFPSCxDQWhCVSxDQUFoQixDQWtCRixNQUFPLENBQUEsU0FBUCxDQUVBLEVBQ0QsYUFFTyxRQUFTLENBQUEsV0FBVCxDQUFzQixVQUF0QixDQUFrQyxjQUFsQyxDQUFrRCxDQUVqRCxNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFSCxXQUFXLENBQUUsdUNBRlYsQ0FHSCxLQUFLLENBQUMsQ0FDRixTQUFTLENBQUMsR0FEUixDQUVGLGVBQWUsQ0FBQyxHQUZkLENBR0YsZ0JBQWdCLENBQUMsR0FIZixDQUlGLFFBQVEsQ0FBQyxHQUpQLENBSEgsQ0FTSCxVQUFVLENBQUUsQ0FBQyxRQUFELENBQVUsVUFBVixDQUFxQixnQkFBckIsQ0FBc0MsWUFBdEMsQ0FBbUQsYUFBbkQsQ0FBaUUsc0JBQWpFLENBQXdGLGtCQUF4RixDQUEyRyxpQkFBM0csQ0FBNkgsUUFBN0gsQ0FFWixTQUFTLE1BQVQsQ0FBZ0IsUUFBaEIsQ0FBeUIsY0FBekIsQ0FBd0MsVUFBeEMsQ0FBbUQsV0FBbkQsQ0FBK0Qsb0JBQS9ELENBQW9GLGdCQUFwRixDQUFxRyxlQUFyRyxDQUFxSCxNQUFySCxDQUE0SCxDQUV6SCxNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FDQSxNQUFNLENBQUMsSUFBUCxDQUFZLGFBQVosQ0FFQSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBdUIsVUFBVyxDQUM3QixjQUFjLENBQUMsT0FBZixDQUF1QixVQUF2QixDQUFtQyxXQUFuQyxFQUNILENBRkYsRUFJQSxHQUFJLENBQUEsV0FBVyxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5DLENBRUEsR0FBSSxVQUFVLENBQUMsT0FBWCxDQUFtQixPQUFuQixFQUE0QixTQUFoQyxDQUE0QztBQUN2QyxVQUFVLENBQUMsT0FBWCxDQUFtQixPQUFuQixDQUEyQixDQUFDLE1BQUQsQ0FBM0IsQ0FETCxJQUVLLENBQ0ksVUFBVSxDQUFDLE9BQVgsQ0FBbUIsT0FBbkIsQ0FBMkIsSUFBM0IsQ0FBZ0MsTUFBaEMsRUFDUixDQUVBLEdBQUksTUFBTSxDQUFDLFNBQVAsRUFBb0IsU0FBeEIsQ0FBbUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsRUFBakIsQ0FDbkMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsS0FBN0IsQ0FDQSxHQUFJLENBQUEsSUFBSSxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDLENBRUEsR0FBSSxNQUFNLENBQUMsZUFBUCxFQUF3QixTQUE1QixDQUF1QyxNQUFNLENBQUMsZUFBUCxDQUF5QixFQUF6QixDQUN2QyxHQUFJLE1BQU0sQ0FBQyxnQkFBUCxFQUF5QixTQUE3QixDQUF3QyxNQUFNLENBQUMsZ0JBQVAsQ0FBMEIsRUFBMUIsQ0FFeEMsR0FBSSxDQUFBLFlBQVksQ0FBRyxxQkFBbkIsQ0FDQSxHQUFJLENBQUEsWUFBWSxDQUFHLE1BQU0sQ0FBQyxLQUFQLENBQWEsWUFBYixDQUEwQixjQUExQixDQUF5QyxvQkFBekMsQ0FBOEQsWUFBOUQsQ0FBbkIsQ0FDQSxHQUFJLENBQUEsV0FBVyxDQUFDLGNBQWhCLENBQ0EsR0FBSSxDQUFBLHFCQUFxQixDQUFHLG9CQUE1QixDQUVBLEdBQUksQ0FBQSxHQUFHLENBQUcsY0FBYyxDQUFDLElBQWYsQ0FBb0IsVUFBcEIsQ0FBZ0MsV0FBaEMsQ0FBVixDQUVBLEdBQUksQ0FBQyxHQUFMLENBQVcsY0FBYyxDQUFDLE9BQWYsQ0FBdUIsVUFBdkIsQ0FBbUMsV0FBbkMsQ0FBZ0QsQ0FDakQsYUFBYSxDQUFFLElBRGtDLENBRWpELGFBQWEsQ0FBRSxLQUZrQyxDQUdqRCxTQUFTLENBQUMsWUFIdUMsQ0FJakQsSUFBSSxDQUFDLGNBQVUsRUFBVixDQUFhLE1BQWIsQ0FBb0IsQ0FDdkIsTUFBTyxDQUFBLE1BQU0sQ0FBQyxFQUFQLEVBQVcsTUFBTSxDQUFDLEVBQWxCLEVBQXNCLHFCQUE3QixDQUNBLENBTitDLENBT2pELE1BQU0sQ0FBQyxnQkFBVSxFQUFWLENBQWEsTUFBYixDQUFxQixNQUFyQixDQUE2QixDQUNoQyxNQUFPLENBQUEsTUFBTSxDQUFDLEVBQVAsRUFBWSxxQkFBbkIsQ0FDSCxDQVRnRCxDQVVqRCxLQUFLLENBQUUsZUFBVSxFQUFWLENBQWMsU0FBZCxDQUF5QixNQUF6QixDQUFpQyxDQUM5QixNQUFPLENBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIsV0FBMUIsQ0FBUCxDQUNULENBWmdELENBQWhELEVBZ0JYLEdBQUksR0FBSixDQUFVLEdBQUcsQ0FBQyxLQUFKLENBQVUsRUFBVixDQUFhLE1BQWIsQ0FDckIsU0FBUyxFQUFULENBQVksTUFBWixDQUFtQixNQUFuQixDQUEwQixPQUExQixDQUFrQyxDQUNqQyxHQUFJLENBQUEsS0FBSixDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsR0FBWSxZQUFaLEVBQTRCLE1BQU0sQ0FBQyxFQUFQLEdBQVksYUFBNUMsQ0FBMEQsQ0FDekQsR0FBSSxPQUFPLEdBQUcsSUFBZCxDQUFvQixLQUFLLENBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFULENBQWhCLENBQXBCLElBQ0ksQ0FDSCxHQUFJLE1BQU0sQ0FBQyxFQUFQLEdBQVksWUFBaEIsQ0FBOEIsS0FBSyxDQUFHLE1BQU0sQ0FBQyxlQUFQLENBQXVCLE1BQS9CLENBQTlCLElBQ0ssQ0FBQSxLQUFLLENBQUcsTUFBTSxDQUFDLGdCQUFQLENBQXdCLE1BQWhDLENBQ0wsQ0FDRCxXQUFXLENBQUMsa0JBQVosQ0FBK0IsS0FBL0IsRUFDQSxNQUFNLENBQUMsU0FBUCxDQUFtQixLQUFuQixDQUNBLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBakIsR0FBa0MsU0FBbEMsRUFBK0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBakIsR0FBa0MsSUFBckYsQ0FBMEYsMkJBQ3pGLEdBQUksd0JBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBakIsc0VBQWlDLEtBQWpDLEVBQXVDLEtBQTNDLENBQWtELE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWdDLEtBQWhDLENBQXNDLEtBQUssQ0FBQyxDQUE1QyxDQUFsRCxJQUNLLENBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBakIsQ0FBZ0MsS0FBaEMsQ0FBc0MsS0FBdEMsQ0FDTCxDQUVELENBYkQsSUFhTyxDQUNOLEdBQUksT0FBTyxHQUFHLElBQWQsQ0FBb0IsS0FBSyxDQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBVCxDQUFoQixDQUFwQixJQUNLLENBQUEsS0FBSyxDQUFHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWdDLE1BQWhDLENBQXVDLE1BQS9DLENBQ0wsTUFBTSxDQUFDLFNBQVAsQ0FBbUIsS0FBbkIsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLEdBQWdDLFNBQWhDLEVBQTZDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLEdBQWdDLElBQWpGLENBQ0EsNEJBQ0MsR0FBSSx5QkFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQix3RUFBK0IsS0FBL0IsRUFBcUMsS0FBekMsQ0FBZ0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsS0FBOUIsQ0FBb0MsS0FBSyxDQUFDLENBQTFDLENBQWhELElBQ0ssQ0FBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixLQUE5QixDQUFvQyxLQUFwQyxDQUNMLENBQ0QsQ0FDRCxDQTFCb0IsRUE0QlYsR0FBSSxHQUFKLENBQVMsR0FBRyxDQUFDLEtBQUosQ0FBVSxFQUFWLENBQWEsWUFBYixDQUEwQixTQUFTLEVBQVQsQ0FBWSxNQUFaLENBQW1CLE1BQW5CLENBQTBCLENBQ3pELEdBQUksTUFBTSxDQUFDLEVBQVAsR0FBWSxZQUFoQixDQUE4QixNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsQ0FBa0MsTUFBTSxDQUFDLGVBQXpDLENBQXlELE1BQU0sQ0FBQyxTQUFoRSxFQUM5QixHQUFJLE1BQU0sQ0FBQyxFQUFQLEdBQVksYUFBaEIsQ0FBZ0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLENBQWtDLE1BQU0sQ0FBQyxnQkFBekMsQ0FBMEQsTUFBTSxDQUFDLFNBQWpFLEVBQ2hDLEdBQUksTUFBTSxDQUFDLEVBQVAsR0FBWSxVQUFoQixDQUE0QixNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFnQyxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFnQyxNQUFoRSxDQUF1RSxNQUFNLENBQUMsU0FBOUUsRUFDL0IsQ0FKUSxFQU9ULEdBQUksR0FBSixDQUFTLEdBQUcsQ0FBQyxLQUFKLENBQVUsRUFBVixDQUFhLFVBQWIsQ0FBeUIsVUFBVyxDQUN2RDtBQUNjLGNBQWMsQ0FBQyxPQUFmLENBQXVCLFVBQXZCLENBQW1DLFdBQW5DLEVBQ0gsQ0FIUSxFQUtULE1BQU0sQ0FBQyxTQUFQLENBQW1CLFNBQVUsTUFBVixDQUFrQixDQUNqQyxDQUFDLENBQUMsY0FBRCxDQUFELENBQWtCLEtBQWxCLENBQXdCLE1BQXhCLEVBQ0EsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsTUFBbkIsQ0FDQSxNQUFNLENBQUMsaUJBQVAsQ0FBMkIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBM0MsQ0FDSCxDQUpELENBTVosTUFBTSxDQUFDLDRCQUFQLENBQW9DLFVBQVUsQ0FDN0Msb0JBQW9CLENBQUMscUJBQXJCLENBQTJDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEdBQTNELEVBQWdFLElBQWhFLENBQXFFLFNBQVUsSUFBVixDQUFnQixDQUNsRixNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBc0MsSUFBSSxDQUFDLElBQTNDLENBQ0YsQ0FGRCxFQUdBLENBSkQsQ0FNUSxNQUFNLENBQUMsNEJBQVAsR0FHQSxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsQ0FBb0MsU0FBUyxNQUFULENBQWdCLEtBQWhCLENBQ3BDLENBQ00sR0FBSSxNQUFNLENBQUMsTUFBUCxHQUFnQixLQUFoQixFQUF5QixNQUFNLENBQUMsTUFBUCxDQUFjLENBQTNDLENBQWdELEtBQUssR0FDckQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLENBQXFDLEtBQXJDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBakIsQ0FBbUMsS0FBbkMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFtQyxNQUFNLENBQUMsS0FBRCxDQUF6QyxDQUVBLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBakIsRUFBbUMsU0FBdkMsQ0FBcUQsQ0FDakQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBakIsQ0FBZ0MsS0FBaEMsQ0FBc0MsS0FBdEMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUFnQyxJQUFoQyxDQUVqQjtBQUNlLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBakIsQ0FBZ0MsTUFBaEMsRUFBd0MsU0FBNUMsQ0FBdUQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBakIsQ0FBZ0MsTUFBaEMsQ0FBeUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUQsQ0FBTixDQUFjLEVBQWxCLENBQXFCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBRCxDQUFOLENBQWMsSUFBeEMsQ0FBekMsQ0FDdkQ7QUFDZixHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWdDLGNBQWhDLEVBQWtELFNBQXRELENBQW9FLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWdDLGNBQWhDLENBQWlELE1BQU0sQ0FBQyxLQUFELENBQU4sQ0FBYyxFQUEvRCxDQUNwRSxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWdDLFlBQWhDLEVBQWdELFNBQXBELENBQWdFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWdDLFlBQWhDLENBQStDLE1BQU0sQ0FBQyxLQUFELENBQU4sQ0FBYyxJQUE3RCxDQUNqRCxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWdDLE1BQWhDLEVBQXdDLFNBQTVDLENBQXdELE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWdDLE1BQWhDLENBQXlDLEVBQXpDLENBRXBELFFBQVEsQ0FBQyxVQUFVLENBQ2xDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWdDLHFCQUFoQyxDQUF3RCxJQUF4RCxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGlCQUFqQixDQUFxQyxJQUFyQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHNCQUFqQixDQUEwQyxJQUExQyxDQUNBLE1BQU0sQ0FBQyxhQUFQLENBQXNCLEVBQXRCLENBQ0MsTUFBTSxDQUFDLGNBQVAsQ0FBdUIsRUFBdkIsQ0FDZ0IsQ0FOTSxDQUFSLENBUUwsQ0FDRixDQTNCTCxDQThCSSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFrQyxTQUFTLElBQVQsQ0FBYyxLQUFkLENBQ2xDLENBQ0UsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBakIsQ0FBbUMsS0FBbkMsQ0FDQSxHQUFJLElBQUksQ0FBQyxNQUFMLEdBQWMsS0FBbEIsQ0FBeUIsS0FBSyxHQUM5QixNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUFpQyxJQUFJLENBQUMsS0FBRCxDQUFyQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQThCLEtBQTlCLENBQW9DLEtBQXBDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBakIsQ0FBbUMsS0FBbkMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBcUMsS0FBckMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQThCLE1BQTlCLEVBQXNDLFNBQTFDLENBQXFELE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQThCLE1BQTlCLENBQXVDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFELENBQUosQ0FBWSxFQUFoQixDQUFtQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUQsQ0FBSixDQUFZLElBQXBDLENBQXZDLENBQ3JELEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsWUFBOUIsRUFBNEMsU0FBaEQsQ0FBMkQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsWUFBOUIsQ0FBNkMsSUFBSSxDQUFDLEtBQUQsQ0FBSixDQUFZLElBQXpELENBQ3JFLFFBQVEsQ0FBQyxVQUFVLENBQ3BCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGVBQWpCLENBQW1DLElBQW5DLENBQ0EsQ0FGUyxDQUFSLENBR1MsQ0FiRCxDQWVBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQWdDLFNBQVMsTUFBVCxDQUFnQixLQUFoQixDQUFzQixJQUF0QixDQUE0QixDQUV6RCxHQUFJLElBQUksR0FBRyxNQUFYLENBQW1CLENBQ2QsR0FBSSxNQUFNLENBQUMsVUFBUCxHQUFvQixJQUFwQixFQUE0QixNQUFNLENBQUMsVUFBUCxHQUFvQixTQUFwRCxDQUErRCxDQUMzRCxHQUFJLE1BQU0sQ0FBQyxVQUFYLENBQ1EsTUFBTSxDQUFDLFVBQVAsQ0FBb0IsS0FBcEIsQ0FEUixJQUVLLENBQUEsTUFBTSxDQUFDLFVBQVAsQ0FBb0IsSUFBcEIsQ0FDUixDQUpELElBS0ssQ0FDRCxNQUFNLENBQUMsZUFBUCxDQUF1QixNQUF2QixDQUE4QixLQUE5QixDQUFvQyxDQUFwQyxFQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWtDLElBQWxDLENBQ0gsQ0FFTCxDQVhELElBV1M7QUFDVCxDQUNDLEdBQUksTUFBTSxDQUFDLFVBQVAsR0FBb0IsSUFBeEIsQ0FDSSxNQUFNLENBQUMsVUFBUCxDQUFvQixJQUFwQixDQURKLElBRU0sQ0FDRixNQUFNLENBQUMsZ0JBQVAsQ0FBd0IsTUFBeEIsQ0FBK0IsS0FBL0IsQ0FBcUMsQ0FBckMsRUFDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFrQyxJQUFsQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGlCQUFqQixDQUFxQyxLQUFyQyxDQUNILENBRUQsQ0FDRCxDQXhCSCxDQTBCRSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE4QixTQUFTLElBQVQsQ0FBYyxLQUFkLENBQXFCLENBRWpELEdBQUksSUFBSSxDQUFDLFVBQUwsR0FBa0IsSUFBbEIsRUFBMEIsSUFBSSxDQUFDLFVBQUwsR0FBa0IsU0FBaEQsQ0FBNEQsQ0FDekQsR0FBSSxJQUFJLENBQUMsVUFBVCxDQUFxQixJQUFJLENBQUMsVUFBTCxDQUFrQixLQUFsQixDQUFyQixJQUNLLENBQUEsSUFBSSxDQUFDLFVBQUwsQ0FBa0IsSUFBbEIsQ0FDUCxDQUhELElBSU0sQ0FDRixNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFnQyxNQUFoQyxDQUF1QyxNQUF2QyxDQUE4QyxLQUE5QyxDQUFvRCxDQUFwRCxFQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQWdDLElBQWhDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBakIsQ0FBbUMsS0FBbkMsQ0FDSCxDQUNGLENBWEQsQ0FhRixNQUFNLENBQUMsd0JBQVAsQ0FBa0MsU0FBUyxLQUFULENBQWdCLENBRS9DLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLE1BQXRDLENBQTZDLENBQUMsRUFBOUMsQ0FBaUQsQ0FDaEQsR0FBSSxDQUFDLEVBQUUsS0FBUCxDQUFpQixNQUFPLFFBQVAsQ0FBakIsSUFDSyxHQUNMLENBRUgsQ0FQRCxDQVVKLE1BQU0sQ0FBQyxVQUFQLENBQW9CLFVBQ3BCLENBQ0ksTUFBTSxDQUFDLGtCQUFQLENBQTBCLElBQTFCLENBRUEsb0JBQW9CLENBQUMscUJBQXJCLENBQTJDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEdBQTNELEVBQ1MsSUFEVCxDQUNjLFNBQVMsSUFBVCxDQUFlLENBQ2pCLEdBQUksSUFBSSxDQUFDLE1BQUwsRUFBYSxHQUFqQixDQUNBLENBQ0EsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBNkIsSUFBSSxDQUFDLElBQWxDLENBQ0EsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsU0FBaEIsQ0FBMEIsS0FBMUIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFnQyxNQUFNLENBQUMsUUFBdkMsRUFDQyxDQUxELElBS00sQ0FBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsSUFBakMsQ0FBc0MsT0FBdEMsRUFDTixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsS0FBMUIsQ0FDQSxNQUFNLENBQUMsVUFBUCxDQUFrQixLQUFsQixDQUVBLENBWFosQ0FXYSxTQUFTLEtBQVQsQ0FBZSxDQUNGLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNBLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixLQUExQixDQUVKLENBZnRCLEVBZ0JILENBcEJELENBc0JJLE1BQU0sQ0FBQyxZQUFQLENBQXNCLFNBQVMsQ0FBVCxDQUN0QixDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsMkJBQVYsQ0FBc0MsQ0FBQyxnQkFBZ0IsU0FBakIsQ0FBdEMsRUFDSCxDQUhELENBS0MsTUFBTSxDQUFDLFNBQVAsQ0FBbUIsU0FBUyxDQUFULENBQ3BCLENBQ0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSwyQkFBVixDQUFzQyxDQUFDLGdCQUFnQixNQUFqQixDQUF0QyxFQUNILENBSEEsQ0FLRCxNQUFNLENBQUMsTUFBUCxDQUFjLGlCQUFkLENBQWdDLFNBQVMsUUFBVCxDQUFrQixRQUFsQixDQUEyQixDQUN4RCxHQUFJLENBQUEsQ0FBQyxDQUFDLFFBQU4sQ0FDRixDQUZELENBRUcsSUFGSCxFQUtBLE1BQU0sQ0FBQyxRQUFQLENBQWtCLFNBQVMsUUFBVCxDQUNsQixDQUNJLEdBQUksUUFBSixDQUNBLENBQ0ksR0FBSSxDQUFBLFVBQVUsQ0FBRyxPQUFPLENBQUMsSUFBUixDQUFhLE1BQU0sQ0FBQyxlQUFwQixDQUFqQixDQUNBLEdBQUksQ0FBQSxXQUFXLENBQUcsT0FBTyxDQUFDLElBQVIsQ0FBYSxNQUFNLENBQUMsZ0JBQXBCLENBQWxCLENBRUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLENBQXFDLEtBQXJDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBakIsQ0FBbUMsS0FBbkMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFrQyxJQUFsQyxDQUNBLE1BQU0sQ0FBQyxVQUFQLENBQW9CLElBQXBCLENBRUEsV0FBVyxDQUFDLGVBQVosQ0FBNEIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsR0FBNUMsQ0FBaUQsVUFBakQsQ0FBNkQsV0FBN0QsQ0FBeUUsSUFBekUsQ0FBOEUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBL0YsQ0FBOEcsTUFBTSxDQUFDLEtBQVAsQ0FBYSxtQkFBYixDQUFpQyxNQUFNLENBQUMsUUFBUCxDQUFnQixHQUFqRCxFQUFzRCxPQUFwSyxFQUE2SyxJQUE3SyxDQUFrTCxTQUFTLElBQVQsQ0FBZSxDQUM1TCxRQUFRLENBQUMsVUFBVSxDQUNaLE1BQU0sQ0FBQyxlQUFQLENBQXVCLE1BQXZCLENBQWdDLENBQWhDLENBQ0EsTUFBTSxDQUFDLGdCQUFQLENBQXdCLE1BQXhCLENBQWlDLENBQWpDLENBRlkseUNBR08sSUFBSSxDQUFDLGVBSFosWUFHWixtREFBVyxDQUFBLEtBQVgsYUFBNEMsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsSUFBdkIsQ0FBNEIsS0FBNUIsRUFBNUMsQ0FIWSwrRkFJTyxJQUFJLENBQUMsZ0JBSlosYUFJWixzREFBVyxDQUFBLE1BQVgsY0FBNEMsTUFBTSxDQUFDLGdCQUFQLENBQXdCLElBQXhCLENBQTZCLE1BQTdCLEVBQTVDLENBSlksdURBS1osQ0FBQyxDQUFDLGNBQUQsQ0FBRCxDQUFrQixLQUFsQixDQUF3QixNQUF4QixFQUNILENBTkksQ0FBUixDQU9LLE1BQU0sQ0FBQyxVQUFQLENBQW9CLEtBQXBCLENBRUEsR0FBSSxJQUFJLENBQUMsYUFBTCxDQUFtQixDQUF2QixDQUEwQixNQUFNLENBQUMsUUFBUCxDQUFnQixTQUFoQixDQUEwQixJQUExQixDQUNoQyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsR0FBakMsQ0FBcUMsU0FBckMsRUFHSCxDQWRELENBZUEsU0FBUyxLQUFULENBQWUsQ0FDWCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDRSxNQUFNLENBQUMsVUFBUCxDQUFvQixLQUFwQixDQUNMLENBbEJELEVBb0JILENBQ0osQ0FqQ0QsQ0FtQ0E7QUFDQSxvQkFBb0IsQ0FBQyx3QkFBckIsQ0FBOEMsSUFBOUMsQ0FBbUQsTUFBbkQsRUFBMkQsSUFBM0QsQ0FBZ0UsU0FBUyxJQUFULENBQWUsQ0FDMUYsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQWpDLENBQ2UsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIsTUFBekMsQ0FBZ0QsQ0FBQyxFQUFqRCxDQUNBLENBQ0csTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIsQ0FBMUIsRUFBNkIsb0JBQTdCLENBQWtELFFBQWxELENBQ0YsQ0FDRCxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixDQUE2QixJQUE3QixDQUVDLENBUkwsQ0FRTSxTQUFTLEtBQVQsQ0FBZSxDQUNqQixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDZixDQVZXLEVBWUgsQ0EzUlcsQ0FUVCxDQXFTSCxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBRTFDLEdBQUksS0FBSyxDQUFDLGdCQUFOLENBQXVCLE1BQXZCLEVBQStCLENBQW5DLENBQXNDLENBQ3ZDLEdBQUksQ0FBQSxRQUFRLENBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSixDQUFTLElBQUksQ0FBQyxVQUFkLENBQXlCLFVBQVUsQ0FBQyxJQUFwQyxDQUF5QyxZQUFZLENBQUMsVUFBdEQsQ0FBaUUsb0JBQW9CLENBQUMsYUFBdEYsQ0FBb0csWUFBWSxDQUFDLFdBQWpILENBQTZILGdCQUFnQixDQUFDLENBQTlJLENBQWYsQ0FDQSxLQUFLLENBQUMsZ0JBQU4sQ0FBdUIsSUFBdkIsQ0FBNEIsUUFBNUIsRUFFRSxDQUVELEdBQUksQ0FBQSxJQUFJLENBQUcsY0FBYyxDQUFDLElBQWYsQ0FBb0IsVUFBcEIsQ0FBZ0MsY0FBaEMsQ0FBWCxDQUVPLENBL1NFLENBQVAsQ0FrVFAsRUFFRCxhQUVPLFFBQVMsQ0FBQSxZQUFULEVBQXdCLENBRTNCLE1BQU8sQ0FDSCxRQUFRLENBQUUsSUFEUCxDQUVILFdBQVcsQ0FBRSx3Q0FGVixDQUdILEtBQUssQ0FBRSxDQUNILE9BQU8sQ0FBRSxHQUROLENBRUgsSUFBSSxDQUFFLEdBRkgsQ0FHSCxPQUFPLENBQUMsR0FITCxDQUhKLENBUUgsVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBZ0IsQ0FFeEIsTUFBTSxDQUFDLFVBQVAsQ0FBb0IsU0FBUyxHQUFULENBRXBCLENBRUksTUFBTyxDQUFBLE1BQU0sQ0FBQyxPQUFQLENBQWUsR0FBZixDQUFQLENBQ0gsQ0FMRCxDQU9GLENBakJDLENBa0JKLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsT0FBakIsQ0FBMEIsS0FBMUIsQ0FBaUMsQ0FLakMsQ0F2QkYsQ0FBUCxDQTBCSCxFQUNELGFBRU8sUUFBUyxDQUFBLFNBQVQsRUFBc0IsQ0FDckIsTUFBTyxDQUNDLFFBQVEsQ0FBRSxHQURYLENBRUMsVUFBVSxDQUFFLG9CQUFVLE1BQVYsQ0FBaUIsZUFBakIsQ0FBaUMsbUJBQWpDLENBQXNELDZEQUUxRCxNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FDQSxHQUFJLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFmLENBQTBCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixFQUFwQixDQUN6QixNQUFNLENBQUMsY0FBUCxDQUF3QixTQUFTLEtBQVQsQ0FDdkIsQ0FDRyxNQUFNLENBQUMsS0FBUCxDQUFhLGtCQUFiLENBQWdDLE1BQU0sQ0FBQyxFQUF2QyxDQUEyQyxLQUEzQyxFQUNGLENBSEYsQ0FNRCxHQUFJLENBQUEsU0FBUyxDQUFHLElBQWhCLENBQ0EsR0FBSSxNQUFNLENBQUMsUUFBUCxFQUFpQixTQUFyQixDQUNBLENBQ1EsR0FBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFoQixFQUF3QixDQUE1QixDQUErQixNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFDLEVBQUQsQ0FBaEIsQ0FDL0IsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsQ0FBVixDQUVQLENBTEQsSUFLTSxDQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQUMsRUFBRCxDQUFoQixDQUlMLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixNQUFwQixDQUEyQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxNQUFNLENBQUMsSUFBYixDQUFrQixTQUFTLENBQUMsSUFBNUIsQ0FBaUMsSUFBSSxDQUFDLFFBQXRDLENBQStDLElBQUksQ0FBQyxZQUFwRCxDQUFELENBQTNCLENBRUEsR0FBSSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBZixDQUF1QixNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBb0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE1BQXBCLENBQTJCLENBQTNCLENBQXBCLENBQ3hCLEdBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixJQUEyQyxTQUEvQyxDQUEwRCxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQTBDLEtBQTFDLENBRTFELEdBQUksQ0FBQSxjQUFjLENBQUUsTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXNCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUExQixDQUF3QyxxQkFBeEMsQ0FBOEQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUE5RixDQUE2RyxTQUE3RyxDQUFwQixDQUNBLEdBQUksQ0FBQSxrQkFBa0IsQ0FBRyxjQUFjLENBQUMsT0FBZixDQUF1QixJQUFoRCxDQUdBLEdBQUksQ0FBQSxhQUFhLENBQUcsUUFBaEIsQ0FBQSxhQUFnQixDQUFTLElBQVQsQ0FDcEIsQ0FDSSxjQUFjLENBQUMsT0FBZixDQUF1QixlQUF2QixDQUF5QyxJQUF6QyxDQUNBLGNBQWMsQ0FBQyxPQUFmLENBQXVCLGVBQXZCLENBQXVDLGNBQXZDLEVBQ0gsQ0FKRCxDQU1BLEdBQUksQ0FBQSxvQkFBb0IsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsY0FBckIsQ0FBb0MsY0FBcEMsQ0FBbUQsYUFBbkQsQ0FBM0IsQ0FFQSxNQUFNLENBQUMsY0FBUCxDQUFzQixVQUN0QixDQUVRLE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBWCxDQUF5QixjQUF6QixDQUF3QyxjQUF4QyxDQUF3RCxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLENBQXhELEVBQ0E7QUFDUCxDQUxELENBU0EsR0FBSSxDQUFBLFdBQVcsQ0FBRyxRQUFkLENBQUEsV0FBYyxDQUFTLElBQVQsQ0FBZSxDQUN6QixHQUFJLElBQUksRUFBRSxTQUFWLENBQXFCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsRUFBMEMsSUFBMUMsQ0FDNUIsQ0FGRCxDQUtBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUF1QixVQUN2QixDQUNRLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF5QixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLENBQVAsQ0FBekIsQ0FDUCxDQUhELENBS0EsR0FBSSxhQUFBLE1BQU0sQ0FBQyxFQUFQLHVFQUFXLFVBQVgsc0VBQXVCLGdCQUF2QixHQUF5QyxTQUF6QyxFQUFzRCxDQUFBLE1BQU0sT0FBTixFQUFBLE1BQU0sU0FBTixnQ0FBQSxNQUFNLENBQUUsRUFBUixDQUFXLFVBQVgsd0VBQXVCLGdCQUF2QixHQUF5QyxJQUFuRyxDQUNBLENBQ0ksR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsZ0JBQXJCLEVBQXVDLEVBQTNDLENBQ0EsQ0FDSSxHQUFJLENBQUEsZUFBZSxDQUFHLFFBQVEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF4QyxDQUNBLEdBQUksQ0FBQSxpQkFBaUIsQ0FBRyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBMUIsQ0FBd0MsR0FBeEMsQ0FBNEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGtCQUFqRSxDQUFvRixnQkFBcEYsQ0FBcUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGdCQUFsSixDQUNBLEdBQUksQ0FBQSxRQUFRLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLGlCQUFyQixDQUF1QyxlQUF2QyxDQUF1RCxjQUF2RCxDQUFzRSxXQUF0RSxDQUFmLENBQ0EsR0FBSSxDQUFBLEtBQUssQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFFBQVgsQ0FBb0IsaUJBQXBCLENBQVosQ0FDQSxHQUFJLEtBQUssQ0FBQyxNQUFOLEVBQWMsSUFBbEIsQ0FBd0IsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixFQUEwQyxLQUFLLENBQUMsS0FBaEQsQ0FDM0IsQ0FDSixDQUdBLEdBQUksY0FBYyxDQUFDLE9BQWYsQ0FBdUIsaUJBQXZCLEVBQTBDLENBQTlDLENBQ0QsQ0FFUSxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQTBDLGNBQWMsQ0FBQyxPQUFmLENBQXVCLFFBQWpFLENBRVAsQ0FFRCxHQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsR0FBeUMsU0FBN0MsQ0FBd0QsTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLGtCQUF6QixDQUE0QyxjQUE1QyxDQUE0RCxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLENBQTVELEVBTXZELENBcEZWLENBcUZQLFdBQVcsQ0FBRSxxQ0FyRk4sQ0FzRlAsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUVqQyxHQUFJLEtBQUssQ0FBQyxRQUFOLEdBQWlCLFNBQXJCLENBQWdDLEtBQUssQ0FBQyxRQUFOLENBQWlCLENBQUMsQ0FBQyxRQUFRLENBQVQsQ0FBRCxDQUFqQixDQUNqQyxHQUFJLEtBQUssQ0FBQyxVQUFOLEdBQW1CLFNBQXZCLENBQWtDLEtBQUssQ0FBQyxVQUFOLENBQW1CLENBQUMsWUFBWSxDQUFDLENBQWQsQ0FBbkIsQ0FDbEMsR0FBSSxLQUFLLENBQUMsZ0JBQU4sR0FBeUIsU0FBN0IsQ0FBd0MsS0FBSyxDQUFDLGdCQUFOLENBQXlCLENBQUMsWUFBWSxDQUFDLENBQWQsQ0FBekIsQ0FJekMsQ0E5Rk0sQ0FBUCxDQWlHUCxDQUVELGFBRU8sUUFBUyxDQUFBLGtCQUFULEVBQStCLENBRTlCLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUdILElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FFL0IsS0FBSyxDQUFDLFFBQU4sQ0FBZSxPQUFmLENBQXVCLFNBQVMsS0FBVCxDQUFlLENBRW5DO0FBQ0EsSUFBSSxDQUFDLE9BQUwsQ0FBYSxTQUFiLEVBQ0E7QUFFZixHQUFJLE1BQU0sQ0FBQyxJQUFQLENBQVksS0FBWixDQUFKLENBQXdCLElBQUksQ0FBQyxPQUFMLEdBRXhCO0FBQ0E7QUFHYyxDQVpGLEVBY0MsSUFBSSxDQUFDLEVBQUwsQ0FBUSxVQUFSLENBQW9CLFVBQVcsQ0FFN0IsSUFBSSxDQUFDLE9BQUwsQ0FBYSxTQUFiLEVBQ0EsTUFBTyxDQUFBLEtBQUssQ0FBQyxXQUFOLENBQWtCLE9BQWxCLENBQVAsQ0FDRCxDQUpELEVBU0wsQ0E1QkUsQ0FBUCxDQStCUCxFQUNELGFBRU8sUUFBUyxDQUFBLDhCQUFULEVBQTJDLENBRWhELE1BQU0sQ0FFSSxRQUFRLENBQUUsQ0FBQyxJQUZmLENBRXFCO0FBQ2pCLFFBQVEsQ0FBRSxHQUhkLENBR21CO0FBQ2YsVUFBVSxDQUFFLG9CQUFTLFVBQVQsQ0FDWixDQUFFLENBTE4sQ0FNSSxJQUFJLENBQUUsY0FBUyxLQUFULENBQWdCLElBQWhCLENBQXNCLEtBQXRCLENBQTZCLENBQ2pDLEdBQUksS0FBSyxDQUFDLEtBQVYsQ0FBZ0IsQ0FFWixVQUFVLENBQUMsVUFBVSxDQUNyQixVQUFVLENBQUMsVUFBWCxDQUFzQixxQkFBdEIsRUFDRCxDQUZXLENBQVYsQ0FJWCxDQUNGLENBZEcsQ0FBTixDQWdCRCxFQUNELGFBRU8sUUFBUyxDQUFBLGlCQUFULEVBQThCLENBQzdCLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVGLFdBQVcsQ0FBRSw2Q0FGWCxDQUdGLFVBQVUsQ0FBRSxvQkFBUyxNQUFULENBQWdCLGVBQWhCLENBQ1QsQ0FDUyxNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FDakIsR0FBSSxNQUFNLENBQUMsU0FBUCxFQUFrQixTQUF0QixDQUFpQyxNQUFNLENBQUMsU0FBUCxDQUFpQixFQUFqQixDQUNqQyxHQUFJLE1BQU0sQ0FBQyxFQUFQLEVBQVcsU0FBZixDQUEwQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQVYsQ0FDMUIsR0FBSSxNQUFNLENBQUMsUUFBUCxFQUFpQixTQUFyQixDQUFnQyxNQUFNLENBQUMsUUFBUCxDQUFrQixDQUFDLEVBQUQsQ0FBbEIsQ0FFMUIsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsU0FBUyxLQUFULENBQ3RCLENBQ0UsTUFBTSxDQUFDLEtBQVAsQ0FBYSxrQkFBYixDQUFnQyxNQUFNLENBQUMsRUFBdkMsQ0FBMEMsS0FBMUMsRUFFRCxDQUpILENBS0Q7QUFDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixTQUFqQixDQUEyQixVQUFVLENBQ3BDLEdBQUksQ0FBQSxRQUFRLENBQUcsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsQ0FBZixDQUNGLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixJQUFJLENBQUMsSUFBTCxDQUFVLE1BQU0sQ0FBQyxFQUFQLENBQVUsS0FBcEIsQ0FBMEIsUUFBMUIsQ0FBckIsQ0FFRyxDQUpGLENBTVksQ0F0QlYsQ0F1QkYsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUtwQyxDQTVCRSxDQUFQLENBOEJILEVBQ0wsYUFHTyxRQUFTLENBQUEsVUFBVCxFQUF1QixDQUV0QixNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFRixXQUFXLENBQUUsc0NBRlgsQ0FJRixVQUFVLENBQUUsb0JBQVMsTUFBVCxDQUFnQixVQUFoQixDQUEyQixRQUEzQixDQUFvQyxXQUFwQyxDQUFnRCxvQkFBaEQsQ0FBcUUsZUFBckUsQ0FBcUYsZ0JBQXJGLENBQXNHLGVBQXRHLENBQXVILGNBQXZILENBQXVJLHFNQUUvSSxHQUFNLENBQUEsU0FBUyxDQUFHLEdBQUksQ0FBQSxJQUFJLENBQUMsWUFBVCxDQUFzQixPQUF0QixDQUErQixDQUM1QyxxQkFBcUIsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsbUJBQXJCLEVBQTRDLENBRHhCLENBRTVDLHFCQUFxQixDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixtQkFBckIsRUFBNEMsQ0FGeEIsQ0FBL0IsQ0FBbEIsQ0FPQSxNQUFNLENBQUMsS0FBUCxDQUFjLGVBQWQsQ0FDQSxHQUFJLENBQUMsS0FBSyxDQUFDLE9BQU4sQ0FBYyxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQXhCLENBQUwsQ0FBNkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLEVBQXhCLENBQzlDLEdBQUksTUFBTSxDQUFDLGtCQUFQLEVBQTJCLFNBQS9CLENBQTJDLENBQ3pDLE1BQU0sQ0FBQyxhQUFQLENBQXVCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUFqRCxDQUNELENBQ0QsR0FBSSxNQUFNLENBQUMsU0FBUCxFQUFvQixTQUF4QixDQUFtQyxNQUFNLENBQUMsU0FBUCxDQUFpQixFQUFqQixDQUVuQyxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFDLFdBQVcsQ0FBRyxFQUFmLENBQWhCLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsSUFBNUIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUFnQyxFQUFoQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTRCLEtBQTVCLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsRUFBdUIsU0FBM0IsQ0FBc0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLEVBQXBCLENBRXRDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUFnQyxDQUM1QixFQUFFLENBQUUsR0FEd0IsQ0FFNUIsSUFBSSxDQUFFLE1BRnNCLENBRzVCLE9BQU8sQ0FBRSxFQUhtQixDQUFoQyxDQUtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUErQixJQUEvQixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFtQyxFQUFuQyxDQUVEO0FBQ0EsTUFBTSxDQUFDLE1BQVAsQ0FBYyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBeEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxNQUFQLEVBQWUsU0FBbkIsQ0FBK0IsTUFBTSxDQUFDLE1BQVAsQ0FBYyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZ0JBQXhDLENBQy9CLEdBQUksTUFBTSxDQUFDLE1BQVAsRUFBZSxTQUFuQixDQUE4QixNQUFNLENBQUMsTUFBUCxDQUFjLENBQWQsQ0FDOUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE1BQXBCLENBQTJCLE1BQU0sQ0FBQyxNQUFsQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBNkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF2QyxDQUNBLE1BQU0sQ0FBQyxhQUFQLENBQXdCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixZQUFsRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUE2QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsU0FBdkQsQ0FDQSxNQUFNLENBQUMsV0FBUCxDQUFtQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsV0FBN0MsQ0FDQSxNQUFNLENBQUMsY0FBUCxDQUF3QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZ0JBQWxELENBQ0EsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQWpELENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQWxELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFxQyxDQUFyQyxDQUVaLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLFNBQXZCLENBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixjQUFjLENBQUMsTUFBZixFQUFsQixDQUNsQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsT0FBckIsQ0FBK0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF6QyxDQUVZLE1BQU0sQ0FBQyxjQUFQLENBQXdCLE1BQU0sQ0FBQyxjQUFQLEVBQXlCLEtBQWpELENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsTUFBTSxDQUFDLGNBQVAsRUFBeUIsQ0FBakQsQ0FDQSxNQUFNLENBQUMsYUFBUCxDQUF1QixNQUFNLENBQUMsYUFBUCxFQUF3QixDQUEvQyxDQUNBLE1BQU0sQ0FBQyxhQUFQLENBQXVCLE1BQU0sQ0FBQyxhQUFQLEVBQXdCLENBQS9DLENBR0EsR0FBSSxDQUFBLFFBQVEsQ0FBRyxRQUFYLENBQUEsUUFBVyxDQUFVLENBQVYsQ0FBWSxDQUFaLENBQWMsQ0FBZCxDQUFtQixDQUN4QixHQUFJLENBQUEsQ0FBQyxDQUFFLFFBQUgsQ0FBQSxDQUFHLENBQUMsQ0FBRCxLQUFHLENBQUEsQ0FBSCwyREFBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBTCxFQUFTLENBQWQsT0FBb0IsQ0FBQSxDQUFDLENBQUcsQ0FBQyxDQUFDLENBQUYsQ0FBSSxJQUFJLENBQUMsR0FBTCxDQUFVLElBQUksQ0FBQyxHQUFMLENBQVMsQ0FBVCxDQUFXLEVBQUUsQ0FBYixDQUFlLENBQWYsQ0FBVixDQUE2QixDQUE3QixDQUE1QixFQUFQLENBQ0EsTUFBUyxJQUFNLElBQUksQ0FBQyxLQUFMLENBQVcsQ0FBQyxDQUFDLENBQUQsQ0FBRCxDQUFPLEdBQWxCLEVBQXVCLFFBQXZCLENBQWdDLEVBQWhDLENBQU4sQ0FBNkMsSUFBSSxDQUFDLEtBQUwsQ0FBVyxDQUFDLENBQUMsQ0FBRCxDQUFELENBQU8sR0FBbEIsRUFBdUIsUUFBdkIsQ0FBZ0MsRUFBaEMsQ0FBN0MsQ0FBbUYsSUFBSSxDQUFDLEtBQUwsQ0FBVyxDQUFDLENBQUMsQ0FBRCxDQUFELENBQU8sR0FBbEIsRUFBd0IsUUFBeEIsQ0FBaUMsRUFBakMsQ0FBNUYsQ0FDVCxDQUhELENBS0EsR0FBSSxDQUFBLE9BQU8sQ0FBRyxRQUFWLENBQUEsT0FBVSxDQUFTLENBQVQsQ0FBWSxDQUFaLENBQWUsQ0FBZixDQUFrQixDQUM1QixHQUFJLENBQUEsQ0FBSixDQUFPLENBQVAsQ0FBVSxDQUFWLENBQWEsQ0FBYixDQUFnQixDQUFoQixDQUFtQixDQUFuQixDQUFzQixDQUF0QixDQUF5QixDQUF6QixDQUNBLEdBQUksU0FBUyxDQUFDLE1BQVYsR0FBcUIsQ0FBekIsQ0FBNEIsQ0FDeEIsQ0FBQyxDQUFHLENBQUMsQ0FBQyxDQUFOLENBQVMsQ0FBQyxDQUFHLENBQUMsQ0FBQyxDQUFmLENBQWtCLENBQUMsQ0FBRyxDQUFDLENBQUMsQ0FBeEIsQ0FDSCxDQUNELENBQUMsQ0FBRyxJQUFJLENBQUMsS0FBTCxDQUFXLENBQUMsQ0FBRyxDQUFmLENBQUosQ0FDQSxDQUFDLENBQUcsQ0FBQyxDQUFHLENBQUosQ0FBUSxDQUFaLENBQ0EsQ0FBQyxDQUFHLENBQUMsRUFBSSxFQUFJLENBQVIsQ0FBTCxDQUNBLENBQUMsQ0FBRyxDQUFDLEVBQUksRUFBSSxDQUFDLENBQUcsQ0FBWixDQUFMLENBQ0EsQ0FBQyxDQUFHLENBQUMsRUFBSSxFQUFJLENBQUMsRUFBSSxDQUFMLEVBQVUsQ0FBbEIsQ0FBTCxDQUNBLE9BQVEsQ0FBQyxDQUFHLENBQVosRUFDSSxJQUFLLEVBQUwsQ0FBUSxDQUFDLENBQUcsQ0FBSixDQUFPLENBQUMsQ0FBRyxDQUFYLENBQWMsQ0FBQyxDQUFHLENBQWxCLENBQXFCLE1BQzdCLElBQUssRUFBTCxDQUFRLENBQUMsQ0FBRyxDQUFKLENBQU8sQ0FBQyxDQUFHLENBQVgsQ0FBYyxDQUFDLENBQUcsQ0FBbEIsQ0FBcUIsTUFDN0IsSUFBSyxFQUFMLENBQVEsQ0FBQyxDQUFHLENBQUosQ0FBTyxDQUFDLENBQUcsQ0FBWCxDQUFjLENBQUMsQ0FBRyxDQUFsQixDQUFxQixNQUM3QixJQUFLLEVBQUwsQ0FBUSxDQUFDLENBQUcsQ0FBSixDQUFPLENBQUMsQ0FBRyxDQUFYLENBQWMsQ0FBQyxDQUFHLENBQWxCLENBQXFCLE1BQzdCLElBQUssRUFBTCxDQUFRLENBQUMsQ0FBRyxDQUFKLENBQU8sQ0FBQyxDQUFHLENBQVgsQ0FBYyxDQUFDLENBQUcsQ0FBbEIsQ0FBcUIsTUFDN0IsSUFBSyxFQUFMLENBQVEsQ0FBQyxDQUFHLENBQUosQ0FBTyxDQUFDLENBQUcsQ0FBWCxDQUFjLENBQUMsQ0FBRyxDQUFsQixDQUFxQixNQU5qQyxDQVFILE1BQVUsSUFBTSxJQUFJLENBQUMsS0FBTCxDQUFXLENBQUMsQ0FBRyxHQUFmLEVBQW9CLFFBQXBCLENBQTZCLEVBQTdCLENBQU4sQ0FBNEMsSUFBSSxDQUFDLEtBQUwsQ0FBVyxDQUFDLENBQUcsR0FBZixFQUFvQixRQUFwQixDQUE2QixFQUE3QixDQUE1QyxDQUErRSxJQUFJLENBQUMsS0FBTCxDQUFXLENBQUMsQ0FBRyxHQUFmLEVBQXFCLFFBQXJCLENBQThCLEVBQTlCLENBQXpGLENBQ0EsQ0FuQkQsQ0FzQkEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLFVBQVUsQ0FDM0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQWdDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUErQixLQUEvQixDQUFzQyxJQUF0RSxDQUNILENBRkQsQ0FLQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZUFBcEIsQ0FBc0MsU0FBUyxJQUFULENBQWMsQ0FDaEQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQStCLElBQS9CLENBQ0EsU0FBUyxDQUFDLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBOEIsSUFBOUIsRUFBb0MsSUFBcEMsQ0FDSSxVQUFNLENBQ0YsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBK0IsS0FBL0IsQ0FBc0MsQ0FBbEQsQ0FBbUQsSUFBbkQsQ0FBUixDQUNILENBSEwsQ0FJSSxVQUFNLENBQUssNEJBQ1AsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsMEJBQTVCLENBQXVELE9BQXZELEVBQ0EsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBK0IsS0FBL0IsQ0FBc0MsQ0FBbEQsQ0FBbUQsSUFBbkQsQ0FBUixDQUNQLENBUEQsRUFRSCxDQVZELENBY0EsR0FBSyxDQUFBLHFCQUFxQixDQUFHLFFBQXhCLENBQUEscUJBQXdCLENBQVMsSUFBVCxDQUFlO0FBQzVDLDZSQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUE4QixFQUE5QixDQUVBLEdBQUksSUFBSSxFQUFFLFNBQU4sRUFBbUIsQ0FBQSxJQUFJLE9BQUosRUFBQSxJQUFJLFNBQUosc0JBQUEsSUFBSSxDQUFFLEtBQU4sMkVBQWEsVUFBYixzRUFBeUIsU0FBekIsR0FBb0MsU0FBM0QsQ0FDSSxPQUNKLEdBQUkseUJBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGlCQUFyQix3RUFBd0MsSUFBeEMsR0FBOEMsU0FBbEQsQ0FDSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBNkIsaUNBQTdCLENBRUosR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsU0FBckIsRUFBZ0MsU0FBcEMsQ0FDUSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsU0FBckIsQ0FBK0IsU0FBL0IsQ0FFUixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isc0JBQXBCLENBQTZDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixzQkFBckIsRUFBK0MsQ0FBNUYsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBaUMsSUFBakMsU0FBaUMsSUFBakMsZ0NBQWlDLElBQUksQ0FBRSxLQUF2QywrREFBaUMsY0FBYSxVQUE5QyxnREFBaUMsc0JBQXlCLFNBQXpCLENBQW1DLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixzQkFBdkQsRUFBK0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGlCQUFyQixDQUF1QyxJQUF0SCxDQUFqQyxDQUNBLEdBQUksQ0FBQSxTQUFTLENBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXJDLENBRUE7QUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBNkIsQ0FBQyxDQUE5QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUE2QixDQUFDLENBQTlCLENBQ0EsTUFBTSxDQUFDLElBQVAsQ0FBWSxTQUFaLEVBQXVCLE9BQXZCLENBQStCLFNBQVMsR0FBVCxDQUFhLEtBQWIsQ0FBb0IsQ0FBRTtBQUM3QyxHQUFJLEVBQUcsU0FBUyxDQUFDLEdBQUQsQ0FBVCxDQUFpQixTQUFTLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXJCLENBQTdCLENBQUosQ0FBb0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQStCLEdBQS9CLENBQ3BFLEdBQUksRUFBRyxTQUFTLENBQUMsR0FBRCxDQUFULENBQWlCLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBckIsQ0FBN0IsQ0FBSixDQUFvRSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBK0IsR0FBL0IsQ0FDM0UsQ0FIRCxFQVFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixJQUFwQixDQUEyQixNQUFNLENBQUMsTUFBUCxDQUFjLFNBQWQsQ0FBM0IsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsTUFBcEIsQ0FBNkIsTUFBTSxDQUFDLElBQVAsQ0FBWSxTQUFaLENBQTdCLENBRUEsR0FBSSx5QkFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsZ0dBQXNCLFNBQXRCLHdFQUFpQyxJQUFqQyxHQUF5QyxLQUF6QyxFQUFrRCx5QkFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsZ0dBQXNCLFNBQXRCLHdFQUFpQyxJQUFqQyxHQUF5QyxVQUEzRixFQUF5Ryx5QkFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsZ0dBQXNCLFNBQXRCLHdFQUFpQyxJQUFqQyxHQUF5QyxXQUF0SixDQUFtSyxDQUMzSixHQUFJLENBQUEsTUFBTSxDQUFDLEVBQVgsQ0FDQSxHQUFJLENBQUEsWUFBWSxDQUFHLGlCQUFuQixDQUNBLEdBQUksQ0FBQSxDQUFDLENBQUcsSUFBSSxDQUFDLE1BQUwsRUFBUixDQUFzQjtBQUhxSSwwQ0FLMUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLElBTHNILGFBSzNKLGtEQUEyQyxJQUFsQyxDQUFBLE1BQWtDLGNBQ3RDLENBQUMsRUFBSSxZQUFMLENBQ0EsQ0FBQyxFQUFJLENBQUwsQ0FDQSxNQUFNLENBQUMsSUFBUCxDQUFhLE9BQU8sQ0FBRSxDQUFGLENBQUssR0FBTCxDQUFVLElBQVYsQ0FBcEIsRUFDSixDQUNEO0FBVjJKLHVEQVczSixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBa0MsQ0FBSSxDQUFFLGVBQWUsQ0FBRSxNQUFuQixDQUFKLENBQWxDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLElBQXBCLENBQStCLENBQUssTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLElBQXpCLENBQS9CLENBQ1AsQ0FFRCxHQUFJLDBCQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixtR0FBc0IsU0FBdEIsMEVBQWlDLElBQWpDLEdBQXVDLFNBQTNDLENBQ0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQWlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixTQUFyQixDQUErQixJQUFoRSxDQURKLElBR0ksQ0FBQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBaUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFNBQXRELENBQWdFO0FBR3BFLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUFrQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsVUFBdkQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBcEIsQ0FBaUMsSUFBakMsU0FBaUMsSUFBakMsaUJBQWlDLElBQUksQ0FBRSxVQUF2QyxDQUNBO0FBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQStCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixJQUFwQixDQUF5QixNQUF6QixDQUFnQyxTQUFDLFVBQUQsQ0FBYSxDQUFiLFFBQW1CLENBQUEsVUFBVSxDQUFHLENBQWhDLEVBQWhDLENBQW1FLENBQW5FLENBQS9CLENBR2Y7QUFDQTtBQUNlO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQW1DLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsTUFBckIsRUFBK0IsRUFBaEMsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUEvQyxDQUF4QyxDQUVILENBbEVELENBb0VKLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFtQyxTQUFTLEdBQVQsQ0FBZSxDQUM1QyxHQUFJLENBQUEsU0FBSixDQUFnQixXQUFoQixDQUVBLFdBQVcsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsb0JBQW5DLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsbUJBQXpCLENBQ08sU0FBUyxDQUFHLEdBQUksQ0FBQSxJQUFJLENBQUMsWUFBVCxDQUFzQixPQUF0QixDQUErQixDQUFFLFdBQVcsQ0FBRSxXQUFmLENBQTZCLHFCQUFxQixDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixtQkFBekUsQ0FBZ0cscUJBQXFCLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG1CQUE1SSxDQUEvQixDQUFaLENBRFAsSUFHSyxDQUFBLFNBQVMsQ0FBRyxHQUFJLENBQUEsSUFBSSxDQUFDLFlBQVQsQ0FBc0IsT0FBdEIsQ0FBK0IsQ0FBRSxXQUFXLENBQUUsV0FBZixDQUEvQixDQUFaLENBRVIsR0FBSSxDQUNDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGlCQUF6QixDQUNJLE1BQU8sQ0FBQSxHQUFQLENBREosSUFHSSxPQUFPLENBQUEsU0FBUyxDQUFDLE1BQVYsQ0FBaUIsR0FBakIsQ0FBUCxDQUVILENBQUMsTUFBTyxHQUFQLENBQVksQ0FDTixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDQSxNQUFPLFFBQVAsQ0FDUCxDQUVSLENBcEJELENBdUJBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBeUMsU0FBUyxFQUFULENBQVksS0FBWixDQUFvQixDQUM3RDtBQUNFLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixFQUEwQyxTQUE5QyxDQUF5RCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLEVBQXpDLENBQ3pEO0FBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHdCQUFwQixDQUE2QyxFQUE3QyxDQUFnRCxLQUFoRCxFQUVYLENBTlMsQ0FTSixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isd0JBQXBCLENBQStDLFNBQVMsRUFBVCxDQUFZLEtBQVosQ0FDL0MsQ0FDSSxHQUFJLENBQUEsR0FBSixDQUNBLEdBQUksS0FBSyxFQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixHQUFvQixTQUE3QixFQUEwQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsR0FBb0IsSUFBbEUsQ0FDRSxDQUNNLEdBQUcsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLEdBQTFDLENBQThDLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBMUUsRUFBNEUsT0FBNUUsQ0FBb0YsRUFBcEYsQ0FBTixDQUVBLEdBQUksR0FBRyxFQUFFLENBQVQsQ0FBVyxDQUNQLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsSUFBekMsQ0FBZ0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixDQUEwQyxHQUExQyxFQUErQyxJQUEvRixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixlQUFwQixDQUFzQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLEdBQTFDLENBQXRDLENBQ0gsQ0FDRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLEVBQXpDLENBQThDLEVBQTlDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUF5QyxjQUF6QyxDQUEwRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLElBQXpDLENBQStDLElBQS9DLENBQW9ELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsRUFBN0YsQ0FBaUcsR0FBM0osQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isc0JBQXBCLENBQTJDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBL0QsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBOEIsT0FBOUIsQ0FBc0MsTUFBdEMsQ0FBK0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF6RCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUErQixJQUEvQixDQUVMLENBZEgsSUFjTyxDQUNELEdBQUcsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLEdBQTFDLENBQThDLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBMUUsRUFBNEUsT0FBNUUsQ0FBb0YsRUFBcEYsQ0FBTixDQUVBLEdBQUksR0FBRyxFQUFFLENBQVQsQ0FBVyxDQUNULG9CQUFvQixDQUFDLHdCQUFyQixDQUE4QyxFQUE5QyxFQUFrRCxJQUFsRCxDQUF1RCxTQUFVLElBQVYsQ0FBZ0IsQ0FFL0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGVBQXBCLENBQXNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBMEMsR0FBMUMsQ0FBdEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBOEIsT0FBOUIsQ0FBc0MsTUFBdEMsQ0FBK0MsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUF6RCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFvQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBOEIsT0FBOUIsQ0FBc0MsTUFBMUQsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixzQkFBcEIsR0FBNkMsU0FBakQsQ0FDQSxDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixtQkFBckIsQ0FBeUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHNCQUFwQixDQUEyQyxFQUFwRixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQix3QkFBckIsQ0FBOEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHNCQUFwQixDQUEyQyxPQUF6RixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isc0JBQXBCLENBQTJDLGFBQTdELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLE9BQU8sQ0FBQyxJQUFSLENBQWEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHNCQUFwQixDQUEyQyxJQUF4RCxDQUE5QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFvQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLEdBQTFDLEVBQStDLGFBQW5FLENBRUgsQ0FSRCxJQVFNLENBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsa0RBQTVCLENBQStFLE9BQS9FLEVBRU4sTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQStCLElBQS9CLENBRUgsQ0FqQkwsQ0FpQk0sU0FBUyxLQUFULENBQWUsQ0FDZixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDTCxDQW5CRCxFQXFCSCxDQUNKLENBRVosQ0E3Q08sQ0FnREQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUF3QyxDQUFFLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsS0FBWCxDQUFGLENBQW9CLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsTUFBWCxDQUFwQixDQUF1QyxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLEtBQVgsQ0FBdkMsQ0FBeUQsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxLQUFYLENBQXpELENBQTJFLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsT0FBWCxDQUEzRSxDQUF4QyxDQUlFLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFrQyxDQUN2QixLQUFLLENBQUUsQ0FDSCxLQUFLLENBQUUsQ0FDTDtBQURLLENBREosQ0FEZ0IsQ0FNbEIsT0FBTyxDQUFFLENBQ0UsTUFBTSxDQUFFLENBQ0osT0FBTyxDQUFFLElBREwsQ0FFSixRQUFRLENBQUUsUUFGTixDQUdKLE1BQU0sQ0FBRSxDQUNKLEtBQUssQ0FBRSxtQkFESCxDQUhKLENBRFYsQ0FRSSxNQUFNLENBQUUsQ0FDTixNQUFNLENBQUUsT0FERixDQUNZO0FBQ2xCLFNBQVMsQ0FBRSxDQUZMLENBRU87QUFDYixRQUFRLENBQUUsS0FISixDQUdXO0FBQ2pCLFFBQVEsQ0FBRSxFQUpKLENBS04sU0FBUyxDQUFFLE1BTEwsQ0FLWTtBQUNsQixTQUFTLENBQUUsUUFOTCxDQU1pQjtBQUN2QixVQUFVLENBQUUsb0RBUE4sQ0FPb0U7QUFDMUUsVUFBVSxDQUFFLEtBQU87QUFSYixDQVJaLENBTlMsQ0FBbEMsQ0E0QkMsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsY0FBckIsRUFBcUMsU0FBckMsRUFBa0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGNBQXJCLEVBQXFDLElBQTNGLENBQWtHLENBQzdGLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFpQyxLQUFqQyxDQUF1QyxLQUF2QyxDQUE2QyxTQUE3QyxDQUF5RCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsY0FBOUUsQ0FDSixDQUdILEdBQUksMEJBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLG1HQUFzQixTQUF0QiwwRUFBaUMsSUFBakMsSUFBMkMsS0FBM0MsRUFBcUQsMEJBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLG1HQUFzQixTQUF0QiwwRUFBaUMsSUFBakMsSUFBNEMsTUFBakcsRUFBMkcsMEJBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLG1HQUFzQixTQUF0QiwwRUFBaUMsSUFBakMsSUFBNEMsT0FBdkosRUFBa0ssMEJBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLG1HQUFzQixTQUF0QiwwRUFBaUMsSUFBakMsSUFBNEMsUUFBbE4sQ0FBNk4sQ0FDek4sTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQWlDLE9BQWpDLENBQXlDLE1BQXpDLENBQWdELE9BQWhELENBQXlELEtBQXpELENBQ0gsQ0FLTCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBcEIsQ0FBaUMsQ0FBRTtBQUNYLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsTUFBWCxDQURTLENBQ1UsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxLQUFYLENBRFYsQ0FFVCxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLFVBQVgsQ0FGUyxDQUVjLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsS0FBWCxDQUZkLENBRWdDLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsV0FBWCxDQUZoQyxFQUdQLENBQUMsRUFBRSxDQUFDLEVBQUosQ0FBTyxJQUFJLENBQUMsU0FBWixDQUF1QjtBQUhoQixDQUFqQyxDQU1ELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFNBQXJCLEVBQWdDLFNBQXBDLENBQ3lCLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixTQUFyQixDQUErQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBcEIsQ0FBK0IsQ0FBL0IsQ0FBL0IsQ0FBaUU7QUFFN0UsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBakIsQ0FBa0MsVUFDbEMsQ0FDVyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE2QixNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixLQUE1QixDQUFtQyxJQUFoRSxDQUNWLENBSEQsQ0FLQSxNQUFNLENBQUMsR0FBUCxDQUFXLGtCQUFYLENBQThCLFNBQVMsS0FBVCxDQUFlLElBQWYsQ0FBb0IsQ0FDOUMsR0FBSSxDQUFBLE1BQU0sQ0FBQyxJQUFYLENBQ0EsR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsUUFBUCxDQUFnQixXQUFoQixDQUE0QixHQUE1QixDQUFnQyxTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsTUFBVCxDQUFrQixDQUFoRSxFQUFrRSxPQUFsRSxDQUEwRSxNQUExRSxDQUFWLENBQ0EsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFZLENBQ1YsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsV0FBaEIsQ0FBNEIsTUFBNUIsQ0FBbUMsR0FBbkMsQ0FBdUMsQ0FBdkMsRUFDRCxDQUNKLENBTkQsRUFRQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixHQUEwQixTQUExQixFQUF1QyxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsR0FBMEIsSUFBckUsQ0FBMkUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQTBCLEVBQTFCLENBRTNFLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLElBQW5CLEVBQTJCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixHQUFvQixTQUFuRCxDQUE4RCxDQUMxRCxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBMEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFwQyxDQUNILENBRkQsSUFFUSxDQUNKLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFvQixFQUFwQixDQUNILENBRUQsR0FBSSxDQUFBLGFBQWEsQ0FBRyxRQUFoQixDQUFBLGFBQWdCLENBQVMsSUFBVCxDQUNwQixDQUNJLEdBQUksQ0FBQSxRQUFRLENBQUMsS0FBYixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQThCLEtBQTlCLENBQ0EsR0FBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixXQUFoQixDQUE0QixNQUE1QixDQUFtQyxDQUF2QyxDQUEyQyxDQUN2QyxHQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFdBQWhCLENBQTRCLENBQTVCLEVBQStCLE1BQS9CLENBQXNDLEVBQXRDLEVBQTRDLElBQUksQ0FBQyxNQUFyRCxDQUE2RCxDQUN6RCxNQUFNLENBQUMsUUFBUCxDQUFnQixXQUFoQixDQUE0QixNQUE1QixDQUFtQyxDQUFuQyxDQUNBLFFBQVEsQ0FBQyxJQUFULENBQ0gsQ0FDSixDQUxELElBS08sQ0FBQSxRQUFRLENBQUMsSUFBVCxDQUVQLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFdBQWhCLENBQTRCLE1BQTVCLENBQW1DLENBQW5DLENBQXFDLENBQXJDLEVBRUEsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFHLENBQWIsQ0FBZSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLE1BQXpDLENBQWdELENBQUMsRUFBakQsQ0FBcUQsQ0FDN0MsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsQ0FBeEIsRUFBMkIsTUFBM0IsQ0FBa0MsRUFBbEMsRUFBc0MsSUFBSSxDQUFDLE1BQS9DLENBQXVELENBQ25ELFFBQVEsQ0FBQyxVQUFVLENBQ2YsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsV0FBaEIsQ0FBNEIsSUFBNUIsQ0FBaUMsSUFBakMsRUFDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE4QixJQUE5QixDQUNILENBSE8sQ0FBUixDQUlILENBQ0osQ0FDUixDQXJCRCxDQXVCRTtBQUVBLEdBQUksTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBQTFCLEVBQTJDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixlQUFwRSxDQUFzRixDQUNoRixHQUFJLENBQUEsTUFBTSxDQUFFLFFBQVMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUEvQixDQUF3QztBQUN4QyxHQUFJLENBQUEsaUJBQWlCLENBQUcsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBQTFCLENBQTBDLEdBQTFDLENBQStDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixlQUE1RixDQUE0RztBQUM1RyxHQUFJLENBQUEsUUFBUSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixpQkFBckIsQ0FBdUMsTUFBdkMsQ0FBOEMsY0FBOUMsQ0FBNkQscUJBQTdELENBQWYsQ0FDTCxDQUdKLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FJQyxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE4QixTQUFTLE1BQVQsQ0FDNUIsQ0FDRSxHQUFJLENBQUEsU0FBUyxDQUFHLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFdBQWhCLENBQTRCLEdBQTVCLENBQWdDLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxNQUFULENBQWtCLENBQWhFLEVBQWtFLE9BQWxFLENBQTBFLE1BQTFFLENBQWhCLENBRUEsR0FBSSxTQUFTLEVBQUUsQ0FBZixDQUFrQixNQUFPLEtBQVAsQ0FBbEIsSUFDSyxPQUFPLE1BQVAsQ0FDTixDQU5ILENBUUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUErQixTQUFTLElBQVQsQ0FBYyxDQUV0QyxTQUFTLENBQUMsU0FBVixDQUFvQixRQUFwQixHQUErQixJQUEvQixDQUFxQyxTQUFDLElBQUQsQ0FBVSxDQUMzQyxpQ0FDQSxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFMLENBQWdCLElBQWhCLENBQXFCLENBQWpDLENBQVIsQ0FDSCxDQUhELENBSUEsVUFBTSxDQUNGLDJCQUNBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLDZCQUE1QixDQUEwRCxPQUExRCxFQUNILENBUEQsRUFTUCxDQVhBLENBY0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQTBCLFVBQzFCLENBQ0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLElBQXhCLENBQTZCLENBQUMsUUFBUSxDQUFDLElBQVYsQ0FBZSxNQUFNLENBQUMsSUFBdEIsQ0FBN0IsRUFDSCxDQUhELENBS0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFWLENBQTRCLFVBQzVCLENBQ0ssTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQW9CLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBOUIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsSUFBeEIsQ0FDQSxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUF3QixLQUF4QixDQUE4QixDQUExQyxDQUEyQyxJQUEzQyxDQUFSLENBQ0osQ0FMRCxDQU9BLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBK0IsU0FBVSxLQUFWLENBQWdCLENBRTVDLEdBQUksS0FBSyxFQUFFLENBQVgsQ0FBYSxDQUNILE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUF3QixNQUF4QixDQUErQixLQUEvQixDQUFxQyxDQUFyQyxFQUNULENBQ0gsQ0FMRCxDQVFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGtCQUFqQixDQUFzQyxTQUFTLElBQVQsQ0FBYyxHQUFkLENBQWtCLFlBQWxCLENBQStCLGVBQS9CLENBQStDLENBQzVFLGVBQWUsQ0FBQyxrQkFBaEIsQ0FBbUMsR0FBbkMsQ0FBdUMsWUFBdkMsQ0FBb0QsZUFBcEQsQ0FBb0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUE5RSxFQUE4RixJQUE5RixDQUFtRyxTQUFTLElBQVQsQ0FBZSxDQUU5RyxNQUFNLENBQUMsRUFBUCxDQUFVLDJCQUFWLENBQXNDLENBQUMsRUFBRSxDQUFFLElBQUwsQ0FBVSxhQUFhLENBQUMsTUFBTSxDQUFDLE9BQVAsQ0FBZSxJQUF2QyxDQUE0QyxlQUFlLENBQUMsTUFBTSxDQUFDLE1BQW5FLENBQTBFLFVBQVUsQ0FBQyxDQUFyRixDQUF1RixvQkFBb0IsQ0FBQyxHQUE1RyxDQUF0QyxFQUVFLENBSk4sQ0FJTyxTQUFTLEtBQVQsQ0FBZSxDQUVkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNMLENBUEgsRUFRWixDQVRHLENBWU4sTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLFNBQVMsaUJBQVQsQ0FBMkIsbUJBQTNCLENBQ3RDLENBQ0s7QUFDQyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsRUFBdUMsU0FBM0MsQ0FDQSxDQUNHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBd0MsaUJBQXhDLENBQ0YsQ0FIRCxJQUlBLENBQ0csR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLEVBQXVDLENBQXZDLEVBQTRDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsRUFBdUMsaUJBQXZGLENBQ0ssTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUF3QyxpQkFBeEMsQ0FETCxJQUdJLENBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUFzQyxDQUF0QyxDQUNOLENBR0QsR0FBSSxtQkFBSixDQUF5QixNQUFNLENBQUMsS0FBUCxDQUFhLGtCQUFiLENBQWdDLE1BQU0sQ0FBQyxFQUF2QyxFQUV6QixHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixFQUFpQyxTQUFyQyxDQUFpRCxDQUM3QztBQUNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUFpQyxFQUFqQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix1QkFBcEIsQ0FBNEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQWhFLENBQTJFLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUEvRixFQUVKLENBQ04sQ0F2QkEsQ0EyQkosTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHVCQUFwQixDQUE4QyxTQUFVLEdBQVYsQ0FBZSxVQUFmLENBQTZCO0FBQzdFLENBQUM7QUFDRTtBQUNBLEdBQUksQ0FBQSxDQUFDLENBQUcsRUFBUixDQUNBLE1BQU0sQ0FBQyxJQUFQLENBQVksR0FBWixFQUFpQixPQUFqQixDQUF5QixTQUFTLEdBQVQsQ0FBYyxDQUVuQyxHQUFNLFFBQU8sR0FBRyxDQUFDLEdBQUQsQ0FBVixJQUFxQixRQUF0QixFQUFtQyxHQUFHLENBQUMsR0FBRCxDQUF0QyxFQUFrRCxHQUFHLEVBQUksV0FBOUQsQ0FBNEUsQ0FBRTtBQUM1RSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsdUJBQXBCLENBQTRDLEdBQUcsQ0FBQyxHQUFELENBQS9DLENBQXNELFVBQXRELEVBQ0QsQ0FGRCxJQUdLLENBQ0csR0FBSSxHQUFHLEVBQUksV0FBWCxDQUEwQixDQUN0QjtBQUNBLENBQUMsQ0FBQyxHQUFELENBQUQsQ0FBUSxHQUFHLENBQUMsR0FBRCxDQUFYLENBQ0MsQ0FFTCxHQUFJLEdBQUcsRUFBSSxnQkFBWCxDQUE4QixDQUMxQixDQUFDLENBQUMsSUFBRCxDQUFELENBQVMsR0FBRyxDQUFDLEdBQUQsQ0FBWixDQUNILENBQ0QsR0FBSSxHQUFHLEVBQUksT0FBWCxDQUFxQixDQUNqQixDQUFDLENBQUMsTUFBRCxDQUFELENBQVcsR0FBRyxDQUFDLEdBQUQsQ0FBZCxDQUNILENBQ0osQ0FDSixDQWxCTCxFQW9CQSxHQUFLLENBQUMsQ0FBQyxXQUFELENBQUQsRUFBa0IsTUFBTSxDQUFDLElBQVAsQ0FBWSxDQUFaLEVBQWUsTUFBZixDQUF3QixDQUEvQyxDQUFtRCxVQUFVLENBQUMsSUFBWCxDQUFnQixDQUFoQixFQUN0RCxDQXpCRSxDQTRCRyxDQXRkSyxDQXVkRixJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBR3hDLENBMWRNLENBQVAsQ0E4ZFAsRUFLRCxhQUVPLFFBQVMsQ0FBQSxjQUFULEVBQTJCLENBRTFCLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVGLFdBQVcsQ0FBRSwwQ0FGWCxDQUdELFVBQVUsQ0FBRSxvQkFBUyxjQUFULENBQ1YsQ0FBRSxDQUpILENBS0YsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUVwQyxLQUFLLENBQUMsT0FBTixDQUFnQixDQUNiLENBQUMsR0FBRyxDQUFDLENBQUwsQ0FBTyxJQUFJLENBQUMsQ0FBWixDQUFjLEtBQUssQ0FBQyxlQUFwQixDQUFvQyxNQUFNLENBQUMsSUFBM0MsQ0FBZ0QsWUFBWSxDQUFDLEVBQTdELENBRGEsQ0FFYixDQUFDLEdBQUcsQ0FBQyxDQUFMLENBQU8sSUFBSSxDQUFDLENBQVosQ0FBYyxLQUFLLENBQUMsbUJBQXBCLENBQXdDLGNBQWMsQ0FBQyxJQUF2RCxDQUE0RCxZQUFZLENBQUMsRUFBekUsQ0FGYSxDQUFoQixDQU1FLEtBQUssQ0FBQyxvQkFBTixDQUE2QixVQUFVLENBQ3BDLEdBQUksQ0FBQSxLQUFLLENBQUMsQ0FBVixDQUNBLEdBQUksQ0FBQSxNQUFNLENBQUMsQ0FBWCxDQUNBLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFOLENBQW1CLE1BQWxDLENBQXlDLENBQUMsRUFBMUMsQ0FBOEMsQ0FHNUMsR0FBSSxLQUFLLENBQUMsWUFBTixDQUFtQixDQUFuQixFQUFzQixPQUF0QixFQUFnQyxTQUFwQyxDQUNBLENBRUUsTUFBTSxDQUFHLEtBQUssQ0FBQyxZQUFOLENBQW1CLENBQW5CLEVBQXNCLE9BQXRCLENBQThCLE1BQXZDLENBRUQsQ0FFRCxLQUFLLENBQUcsS0FBSyxDQUFDLE1BQWQsQ0FFRCxDQUVELE1BQU8sQ0FBQSxLQUFQLENBS0YsQ0F0QkQsQ0F3QkYsQ0FyQ0UsQ0FBUCxDQXVDUCxFQUNELGFBRU8sUUFBUyxDQUFBLGlCQUFULEVBQThCLENBRTFCLEdBQUksQ0FBQSxVQUFVLENBQUcsQ0FBQyxRQUFELENBQVcsY0FBWCxDQUEwQixRQUExQixDQUFtQyxjQUFuQyxDQUFrRCxrQkFBbEQsQ0FBcUUsaUJBQXJFLENBQXVGLFlBQXZGLENBQW9HLFVBQXBHLENBQStHLGdCQUEvRyxDQUFnSSxpQkFBaEksQ0FDQyxTQUFVLE1BQVYsQ0FBaUIsWUFBakIsQ0FBOEIsTUFBOUIsQ0FBcUMsWUFBckMsQ0FBa0QsZ0JBQWxELENBQW1FLGVBQW5FLENBQW1GLFVBQW5GLENBQThGLFFBQTlGLENBQXVHLGNBQXZHLENBQXNILGVBQXRILENBQXVJLENBRzVKLE1BQU0sQ0FBQyxTQUFQLENBQWlCLElBQWpCLENBRUEsWUFBWSxDQUFDLFNBQWIsR0FBeUIsSUFBekIsQ0FBOEIsU0FBUyxJQUFULENBQWUsQ0FFekIsTUFBTSxDQUFDLFNBQVAsQ0FBbUIsSUFBSSxDQUFDLElBQXhCLENBRUwsQ0FKZixDQUlnQixTQUFTLEtBQVQsQ0FBZSxDQUViLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNWLENBUFIsRUFTRSxNQUFNLENBQUMsWUFBUCxDQUFvQixlQUFwQixDQUFvQyxLQUFwQyxDQUVBLE1BQU0sQ0FBQyxjQUFQLENBQXdCLFVBQ3hCLENBQ1csR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNEO0FBQ0MsWUFBWSxDQUFDLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLFdBQW5DLENBQStDLElBQS9DLEVBQXFELElBQXJELENBQTBELFNBQVMsSUFBVCxDQUFlLENBQ2pFLE1BQU0sQ0FBQyxLQUFQLENBQWUsSUFBSSxDQUFDLElBQXBCLENBQ1A7QUFFUyxDQUpWLENBSVcsU0FBUyxLQUFULENBQWUsQ0FFYixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDTCxDQVBSLEVBU1YsQ0FiRCxDQWdCTSxNQUFNLENBQUMsS0FBUCxDQUFjLGVBQWQsQ0FFQSxNQUFNLENBQUMsWUFBUCxDQUFzQixVQUN0QixDQUNLLEdBQUksQ0FBQSxvQkFBb0IsQ0FBRyxxQkFBM0IsQ0FFQSxHQUFJLENBQUEsR0FBRyxDQUFHLGNBQWMsQ0FBQyxJQUFmLENBQW9CLFVBQXBCLENBQWdDLGFBQWhDLENBQVYsQ0FDQSxHQUFJLENBQUMsR0FBTCxDQUNBLENBQ0csTUFBTSxDQUFDLEtBQVAsQ0FBYSxZQUFiLENBQTBCLGFBQTFCLENBQXdDLG9CQUF4QyxDQUE2RCxvQkFBN0QsRUFDRixDQUhELElBS0EsQ0FDSyxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsYUFBNUIsRUFDQSxNQUFNLENBQUMsS0FBUCxDQUFhLFlBQWIsQ0FBMEIsYUFBMUIsQ0FBd0Msb0JBQXhDLENBQTZELG9CQUE3RCxFQUVILENBQ04sQ0FmRCxDQW1CSSxNQUFNLENBQUMsc0JBQVAsQ0FBOEIsU0FBUyxXQUFULENBQXNCLENBQ2hELFdBQVcsQ0FBQyxjQUFaLENBQTJCLEVBQTNCLENBQ0EsR0FBSSxDQUFBLFVBQVUsQ0FBQyxFQUFmLENBRUEsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsV0FBVyxDQUFDLGdCQUFaLENBQTZCLE1BQTVDLENBQW1ELENBQUMsRUFBcEQsQ0FDQSxDQUNJLFVBQVUsQ0FBQyxXQUFXLENBQUMsZ0JBQVosQ0FBNkIsQ0FBN0IsRUFBZ0MsTUFBaEMsQ0FBdUMsV0FBVyxDQUFDLGdCQUFaLENBQTZCLENBQTdCLEVBQWdDLE1BQWxGLENBQ0EsR0FBSSxXQUFXLENBQUMsY0FBWixDQUEyQixVQUEzQixJQUEyQyxTQUEvQyxDQUNBLENBQ0ssV0FBVyxDQUFDLGNBQVosQ0FBMkIsVUFBM0IsRUFBdUMsQ0FBdkMsQ0FDSixDQUhELElBSVUsQ0FBQSxXQUFXLENBQUMsY0FBWixDQUEyQixVQUEzQixJQUNiLENBR0osQ0FmRCxDQWlCRixNQUFNLENBQUMsY0FBUCxDQUF3QixTQUFTLE1BQVQsQ0FBZ0IsQ0FDdEM7QUFDQyxNQUFNLENBQUMsWUFBUCxDQUFvQixnQkFBcEIsQ0FBcUMsTUFBckMsQ0FBNEMsTUFBNUMsQ0FBbUQsQ0FBbkQsRUFDRSxDQUhMLENBTUEsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsU0FBUyxNQUFULENBQWdCLEtBQWhCLENBQXNCLENBQzFDO0FBQ0MsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsZ0JBQXBCLENBQXFDLE1BQXJDLEVBQTZDLE9BQTdDLENBQXFELE1BQXJELENBQTRELEtBQTVELENBQWtFLENBQWxFLEVBQ0UsQ0FITCxDQUtBLE1BQU0sQ0FBQyxhQUFQLENBQXVCLFVBQVUsQ0FDL0I7QUFDQSxLQUFLLENBQUMsUUFBTixHQUNHLENBSEwsQ0FJQSxNQUFNLENBQUMsbUJBQVAsQ0FBNkIsVUFBVSxDQUNyQztBQUNBLEtBQUssQ0FBQyxjQUFOLEdBQ0csQ0FITCxDQUtBLE1BQU0sQ0FBQyxTQUFQLENBQW1CLFVBQVUsQ0FFekIsR0FBSSxDQUFBLEtBQUssQ0FBQyxLQUFWLENBQ0E7QUFDQSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBUCxDQUFvQixnQkFBcEIsQ0FBcUMsTUFBcEQsQ0FBMkQsQ0FBQyxFQUE1RCxDQUNBLENBQ0UsR0FBSSxNQUFNLENBQUMsWUFBUCxDQUFvQixnQkFBcEIsQ0FBcUMsQ0FBckMsRUFBd0MsR0FBeEMsRUFBNkMsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsRUFBL0QsRUFBcUUsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsZ0JBQXBCLENBQXFDLENBQXJDLEVBQXdDLEdBQXhDLEVBQTZDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEVBQXRJLENBQTBJLEtBQUssQ0FBQyxJQUFOLENBRTNJLENBQ0QsR0FBSSxDQUFDLEtBQUwsQ0FDQSxDQUVFLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGdCQUFwQixDQUFxQyxJQUFyQyxDQUEwQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBUCxDQUFrQixFQUF2QixDQUEwQixLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsSUFBbEQsQ0FBdUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFQLENBQWtCLElBQWhGLENBQXFGLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUCxDQUFnQixFQUF6RyxDQUE0RyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsSUFBbEksQ0FBdUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLElBQTlKLENBQW1LLE9BQU8sQ0FBQyxFQUEzSyxDQUExQyxFQUNBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLG1CQUFwQixDQUF3QyxNQUFNLENBQUMsWUFBUCxDQUFvQixnQkFBcEIsQ0FBcUMsTUFBckMsQ0FBNEMsQ0FBcEYsQ0FFRCxDQUVKLENBakJELENBbUJGLE1BQU0sQ0FBQyxRQUFQLENBQWtCLFVBQVUsQ0FDekI7QUFDRCxNQUFNLENBQUMsY0FBUCxDQUFzQixJQUF0QixDQUNFLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQTtBQUVFLEdBQUksQ0FBQyxNQUFNLENBQUMsWUFBUCxDQUFvQixlQUF6QixDQUNBLENBQ0csZUFBZSxDQUFDLHlCQUFoQixDQUEwQyxNQUFNLENBQUMsT0FBakQsQ0FBeUQsSUFBekQsQ0FBOEQsTUFBTSxDQUFDLFdBQXJFLEVBQWtGLElBQWxGLENBQXVGLFNBQVMsSUFBVCxDQUFlLENBRTVGLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGdCQUFwQixDQUF1QyxJQUFJLENBQUMsSUFBNUMsQ0FDQSxNQUFNLENBQUMsWUFBUCxDQUFvQixlQUFwQixDQUFvQyxJQUFwQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLEtBQWpCLENBQ0EsTUFBTSxDQUFDLHNCQUFQLENBQThCLE1BQU0sQ0FBQyxZQUFyQyxFQUFxRDtBQUNyRCxNQUFNLENBQUMsc0JBQVAsR0FDQSxNQUFNLENBQUMsY0FBUCxDQUFzQixLQUF0QixDQUVKLENBVE4sQ0FTTyxTQUFTLEtBQVQsQ0FBZSxDQUViLE1BQU0sQ0FBQyxjQUFQLENBQXNCLEtBQXRCLENBQ0EsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0FiSixFQWVGLENBakJELElBa0JBLENBQ0MsTUFBTSxDQUFDLHNCQUFQLEdBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsS0FBdEIsQ0FDQSxDQUdOLENBOUJELENBa0NDO0FBQ0MsTUFBTSxDQUFDLHNCQUFQLENBQStCLFVBQVUsQ0FDdEMsR0FBSSxDQUFBLEtBQUssQ0FBQyxLQUFWLENBQ0MsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsZ0JBQXBCLENBQXFDLE1BQXBELENBQTJELENBQUMsRUFBNUQsQ0FDQSxDQUNNLEdBQUksTUFBTSxDQUFDLFlBQVAsQ0FBb0IsZ0JBQXBCLENBQXFDLENBQXJDLEVBQXdDLE1BQXhDLEVBQWtELE1BQU0sQ0FBQyxVQUFQLENBQWtCLElBQXBFLEVBQTRFLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGdCQUFwQixDQUFxQyxDQUFyQyxFQUF3QyxNQUF4QyxFQUFrRCxNQUFNLENBQUMsUUFBUCxDQUFnQixJQUE5SSxFQUFzSixDQUFDLEtBQTNKLENBQ0osQ0FDWTtBQUNELE1BQU0sQ0FBQyxZQUFQLENBQW9CLG1CQUFwQixDQUF3QyxDQUF4QyxDQUNBLEtBQUssQ0FBQyxJQUFOLENBRVYsQ0FDRixDQUNELEdBQUksQ0FBQyxLQUFMLENBQVksTUFBTSxDQUFDLFNBQVAsR0FDWixNQUFNLENBQUMsWUFBUCxHQUNILENBZEQsQ0FlRixNQUFNLENBQUMsTUFBUCxDQUFjLGlDQUFkLENBQWlELFNBQVMsUUFBVCxDQUFrQixRQUFsQixDQUEyQixDQUcxRSxHQUFJLFFBQVEsRUFBRSxRQUFWLEVBQXNCLE1BQU0sQ0FBQyxTQUFqQyxDQUNBLENBRUMsR0FBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQWIsQ0FDQSxDQUNJLE1BQU0sQ0FBQyxjQUFQLEdBQ0gsQ0FFQSxNQUFNLENBQUMsUUFBUCxHQUdGO0FBQ0MsQ0FDRDtBQUNsQjtBQUNBO0FBQ0EscUJBRWlCLENBckJELEVBdUJBO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBRVcsQ0FqTWlCLENBQWpCLENBb01ILE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVGLFdBQVcsQ0FBRSw2Q0FGWCxDQUdELEtBQUssQ0FBQyxDQUNKLEtBQUssQ0FBRSxHQURILENBRUosVUFBVSxDQUFFLEdBRlIsQ0FHSixXQUFXLENBQUUsR0FIVCxDQUlKLElBQUksQ0FBRSxHQUpGLENBS0osTUFBTSxDQUFFLElBTEosQ0FNaEIsT0FBTyxDQUFFLElBTk8sQ0FPSixXQUFXLENBQUUsR0FQVCxDQVFKLFlBQVksQ0FBRSxHQVJWLENBU0osVUFBVSxDQUFFLEdBVFIsQ0FVSixRQUFRLENBQUUsR0FWTixDQUhMLENBZUMsVUFBVSxDQUFDLFVBZlosQ0FnQkYsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUdwQyxDQW5CRSxDQUFQLENBc0JQLEVBQ0QsYUFHTyxRQUFTLENBQUEsaUJBQVQsRUFBOEIsQ0FFN0IsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUYsV0FBVyxDQUFFLDZDQUZYLENBR0QsS0FBSyxDQUFDLENBQ2hCLE1BQU0sQ0FBRyxHQURPLENBRWhCLFNBQVMsQ0FBRSxHQUZLLENBR2hCLGNBQWMsQ0FBRSxHQUhBLENBSWhCLEVBQUUsQ0FBRSxHQUpZLENBSEwsQ0FTQyxVQUFVLENBQUMsb0JBQVMsWUFBVCxDQUFzQixNQUF0QixDQUE4QixNQUE5QixDQUFxQyxlQUFyQyxDQUFxRCxVQUFyRCxDQUFnRSxlQUFoRSxDQUFnRixlQUFoRixDQUFnRyxpQkFBaEcsQ0FBa0gsZ0JBQWxILENBQW1JLFlBQW5JLENBQWdKLG9CQUFoSixDQUFzSyxFQUF0SyxDQUEwSyxRQUExSyxDQUNYLENBRWQsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsaUJBQWhCLENBQ0EsTUFBTSxDQUFDLFdBQVAsQ0FBc0IsS0FBdEIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixFQUFqQixDQUFvQjtBQUNwQixNQUFNLENBQUMsaUJBQVAsQ0FBeUIsRUFBekIsQ0FBMkI7QUFDM0IsTUFBTSxDQUFDLGdCQUFQLENBQXdCLElBQXhCLENBQTZCO0FBQzdCLE1BQU0sQ0FBQyxlQUFQLENBQXlCLElBQXpCLENBQ0EsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLEVBQXBCLENBR0EsTUFBTSxDQUFDLFdBQVAsQ0FBcUIsWUFBWSxDQUFDLFdBQWxDLENBQ0EsR0FBSSxNQUFNLENBQUMsV0FBUCxHQUFxQixTQUFyQixFQUFrQyxNQUFNLENBQUMsV0FBUCxHQUFxQixFQUEzRCxDQUErRCxDQUM1RCxNQUFNLENBQUMsV0FBUCxDQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBTixDQUFQLENBQXNDLEtBQUssQ0FBQyxzQkFBNUMsQ0FBbUUsTUFBTSxDQUFDLEVBQTFFLENBQW5CLENBQ0YsQ0FHRCxNQUFNLENBQUMsWUFBUCxDQUFzQixFQUF0QixDQUdBLE1BQU0sQ0FBQyxjQUFQLENBQXdCLFNBQVMsSUFBVCxDQUFjLENBQ3BDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLEtBQXZCLENBQ0EsTUFBTSxDQUFDLGlCQUFQLENBQXlCLGNBQXpCLENBQXdDLENBQXhDLENBQ0EsR0FBSSxJQUFJLEVBQUUsU0FBVixDQUFxQixNQUFNLENBQUMsV0FBUCxDQUFtQixJQUFuQixDQUNyQixRQUFRLENBQUMsVUFBVSxDQUNsQixNQUFNLENBQUMsZUFBUCxDQUF1QixJQUF2QixDQUNBLENBRk8sQ0FBUixDQUdBLENBUEYsQ0FVQyxNQUFNLENBQUMsb0JBQVAsQ0FBOEIsVUFDOUIsQ0FDRSxHQUFJLENBQUEsSUFBSSxDQUFHLE1BQU0sQ0FBQyxXQUFQLENBQW1CLEtBQW5CLENBQXlCLElBQXBDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLENBQWUsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsTUFBbEMsRUFFRCxDQUxELENBUUMsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLFFBQVgsQ0FBRCxDQUFzQixDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLE1BQVgsQ0FBdEIsQ0FBdEIsQ0FHQSxNQUFNLENBQUMsUUFBUCxDQUFrQixTQUFVLE9BQVYsQ0FBbUIsQ0FDakM7QUFDRSxHQUFJLE9BQUosQ0FBYSxDQUNQLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGVBQWhCLENBQWtDLGlCQUFpQixDQUFDLGNBQWxCLENBQWlDLGVBQWdCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGFBQWhCLENBQThCLENBQTlCLEVBQWlDLFFBQWxGLENBQWxDLENBQ0EsWUFBWSxDQUFDLFNBQWIsQ0FBdUIsTUFBTSxDQUFDLFFBQTlCLEVBQ1MsSUFEVCxDQUNjLFNBQVMsSUFBVCxDQUFlLENBQ1YsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQWpDLENBQXNDLFNBQXRDLEVBQ0osQ0FIZixDQUdnQixTQUFTLEtBQVQsQ0FBZSxDQUNiLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNMLENBTGIsRUFNTCxDQUNMLENBWEYsQ0FjQSxNQUFNLENBQUMsY0FBUCxDQUF3QixTQUFTLFdBQVQsQ0FBc0IsQ0FBRTtBQUM1QztBQUNBLE1BQU0sQ0FBQyxXQUFQLENBQXFCLFdBQXJCLENBQ0gsQ0FIRCxDQUtDLE1BQU0sQ0FBQyxtQkFBUCxDQUE2QixLQUE3QixDQUdELE1BQU0sQ0FBQyxZQUFQLENBQXNCLFVBQ3hCLENBRU07QUFDQSxNQUFNLENBQUMsY0FBUCxDQUFzQixDQUFDLElBQUksQ0FBRSxnQkFBUCxDQUF3QixJQUFJLENBQUMsTUFBN0IsQ0FBdEIsQ0FDQyxHQUFJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLElBQXZCLEVBQTZCLFNBQWpDLENBQTRDLENBQzFDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLElBQXZCLENBQTRCLE1BQU0sQ0FBQyxZQUFQLENBQW9CLElBQWhELENBQ0YsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixTQUF2QixDQUFpQyxJQUFqQyxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFNBQXZCLENBQWlDLElBQWpDLENBRUQsTUFBTSxDQUFDLG1CQUFQLENBQTZCLENBQUMsTUFBTSxDQUFDLG1CQUFyQyxDQUVILENBYkQsQ0FlRCxNQUFNLENBQUMsV0FBUCxDQUFxQixDQUFDLG1CQUFtQixDQUFFLEVBQXRCLENBQXJCLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBd0IsQ0FBQyxhQUFhLENBQUMsRUFBZixDQUF4QixDQUdHLE1BQU0sQ0FBQyxXQUFQLENBQXFCLFVBQVUsQ0FFekIsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsQ0FBQyxJQUFJLENBQUUsZUFBUCxDQUF1QixJQUFJLENBQUMsS0FBNUIsQ0FBdEIsQ0FDQTtBQUNBLE1BQU0sQ0FBQyxtQkFBUCxDQUE2QixDQUFDLE1BQU0sQ0FBQyxtQkFBckMsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixFQUF2QixDQUEwQixTQUExQixDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLElBQXZCLENBQTRCLE1BQU0sQ0FBQyxZQUFQLENBQW9CLElBQWhELENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsYUFBdkIsQ0FBcUMsV0FBckMsQ0FBaUQsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsV0FBckUsQ0FDSCxDQVJILENBVUYsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsVUFBVSxDQUM1QjtBQUNBLE1BQU0sQ0FBQyxtQkFBUCxDQUE2QixDQUFDLE1BQU0sQ0FBQyxtQkFBckMsQ0FDSCxDQUhELENBS0EsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsU0FBUyxFQUFULENBQWEsQ0FDL0I7QUFDSSxNQUFNLENBQUMsbUJBQVAsQ0FBNkIsQ0FBQyxNQUFNLENBQUMsbUJBQXJDLENBQ0EsWUFBWSxDQUFDLFNBQWIsQ0FBdUIsTUFBTSxDQUFDLFFBQTlCLEVBQXdDLElBQXhDLENBQTZDLFNBQVMsSUFBVCxDQUFlLENBQy9DLE1BQU0sQ0FBQyxLQUFQLENBQWUsSUFBSSxDQUFDLElBQXBCLENBQ0osQ0FGVCxDQUVVLFNBQVMsS0FBVCxDQUFlLENBQ2IsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0FKUCxFQU1QLENBVEQsQ0FXQSxNQUFNLENBQUMsY0FBUCxDQUF3QixVQUFVLENBQy9CLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxZQUFZLENBQUMsUUFBYixDQUFzQixJQUF0QixFQUE0QixJQUE1QixDQUFpQyxTQUFTLElBQVQsQ0FBZSxDQUNwQixNQUFNLENBQUMsS0FBUCxDQUFlLElBQUksQ0FBQyxJQUFwQixDQUNKLENBRnhCLENBRXlCLFNBQVMsS0FBVCxDQUFlLENBQ2IsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0FKdEIsRUFLRixDQVBELENBVUEsTUFBTSxDQUFDLGNBQVAsR0FHRSxNQUFNLENBQUMsWUFBUCxDQUFzQixTQUFVLE9BQVYsQ0FBbUIsQ0FDcEM7QUFDQSxHQUFJLE9BQUosQ0FBYSxDQUNaLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGFBQXZCLENBQXFDLE1BQXJDLENBQThDLFFBQTlDLENBQ0ksWUFBWSxDQUFDLHFCQUFiLENBQW1DLE1BQU0sQ0FBQyxjQUFQLENBQXNCLElBQXpELENBQThELE1BQU0sQ0FBQyxlQUFyRSxFQUFzRixJQUF0RixDQUEyRixTQUFTLElBQVQsQ0FBZSxDQUN4RixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsR0FBakMsQ0FBcUMsU0FBckMsRUFDSCxDQUZmLENBRWdCLFNBQVMsS0FBVCxDQUFlLENBQ2IsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0FKYixFQUtMLENBQ0YsQ0FWSCxDQWNVLE1BQU0sQ0FBQyxhQUFQLENBQXVCLEtBQXZCLENBQ0UsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsS0FBdkIsQ0FFQSxNQUFNLENBQUMsV0FBUCxDQUFxQixVQUFXLENBQ3ZCLENBQUMsQ0FBQyxnQkFBRCxDQUFELENBQW9CLEtBQXBCLENBQTBCLE1BQTFCLEVBQ1IsQ0FGRCxDQUlDLE1BQU0sQ0FBQyxNQUFQLENBQWMsUUFBZCxDQUF3QixTQUFVLFFBQVYsQ0FBb0IsUUFBcEIsQ0FBOEIsS0FBOUIsQ0FBcUMsQ0FDeEQsR0FBSSxRQUFKLENBQWMsTUFBTSxDQUFDLFdBQVAsR0FDZDtBQUVILENBSkYsRUFNRCxNQUFNLENBQUMsZUFBUCxDQUF5QixVQUFXLENBQzlCLE1BQU0sQ0FBQyxhQUFQLENBQXVCLENBQUMsTUFBTSxDQUFDLGFBQS9CLENBQ0wsQ0FGRCxDQUlBLE1BQU0sQ0FBQyxlQUFQLENBQXlCLFVBQVcsQ0FDOUIsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsQ0FBQyxNQUFNLENBQUMsYUFBL0IsQ0FDTCxDQUZELENBS0EsTUFBTSxDQUFDLFVBQVAsQ0FBb0IsU0FBUyxLQUFULENBQWUsaUJBQzNCO0FBQ3BCLE1BQU0sQ0FBQyxZQUFQLENBQW9CLE1BQXBCLENBQTJCLEtBQTNCLENBQWlDLENBQWpDLEVBQ0UsR0FBSSxNQUFKLFNBQUksTUFBSix3QkFBSSxNQUFNLENBQUUsRUFBWixnQ0FBSSxZQUFZLFFBQWhCLENBQTJCLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBVixDQUFtQixNQUFuQixDQUEwQixLQUExQixDQUFnQyxDQUFoQyxFQUMzQixHQUFJLE1BQUosU0FBSSxNQUFKLFdBQUksTUFBTSxDQUFFLFNBQVosQ0FBd0IsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBakIsQ0FBd0IsS0FBeEIsQ0FBOEIsQ0FBOUIsRUFDYixDQUxELENBT0EsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsVUFBVyxDQUM3QixNQUFNLENBQUMsTUFBUCxDQUFjLENBQWQsQ0FDQSxNQUFNLENBQUMsWUFBUCxDQUFvQixLQUFwQixDQUNBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLENBQXBCLENBQ0gsQ0FKRCxDQU9ELE1BQU0sQ0FBQyxlQUFQLENBQXlCLFNBQVMsTUFBVCxDQUFnQixRQUFoQixDQUF5QixDQUUvQyxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBRUMsTUFBTSxDQUFDLE1BQVAsQ0FBZ0IsTUFBaEIsQ0FDQSxNQUFNLENBQUMsUUFBUCxDQUFrQixRQUFsQixDQUNBLENBQUMsQ0FBQyxnQkFBRCxDQUFELENBQW9CLEtBQXBCLENBQTBCLE1BQTFCLEVBRUQsR0FBSSxNQUFNLENBQUMsTUFBUCxDQUFjLENBQWxCLENBQXNCLENBRXRCLFlBQVksQ0FBQyxlQUFiLENBQTZCLE1BQU0sQ0FBQyxNQUFwQyxDQUEyQyxJQUEzQyxFQUFpRCxJQUFqRCxDQUFzRCxTQUFTLElBQVQsQ0FBZSxDQUN0RCxNQUFNLENBQUMsWUFBUCxDQUFzQixJQUFJLENBQUMsSUFBM0IsQ0FDQSxNQUFNLENBQUMsV0FBUCxDQUFxQixJQUFyQixDQUNDLENBQUMsQ0FBQyxnQkFBRCxDQUFELENBQW9CLEtBQXBCLENBQTBCLE1BQTFCLEVBQ0wsQ0FKWCxDQUlZLFNBQVMsS0FBVCxDQUFlLENBQ2IsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0FOVCxFQU9DLENBVEQsSUFTTyxDQUVMLE1BQU0sQ0FBQyxZQUFQLENBQW9CLE1BQXBCLENBQTZCLENBQTdCLENBQ0EsTUFBTSxDQUFDLFdBQVAsQ0FBcUIsS0FBckIsQ0FDRCxDQUNKLENBdEJBLENBd0JEO0FBQ0MsTUFBTSxDQUFDLGdCQUFQLENBQTBCLFVBQVUsQ0FFN0IsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNBLFNBRUEsR0FBSSxNQUFNLENBQUMsTUFBUCxDQUFjLENBQWxCLENBQXFCLENBQ2pCLFlBQVksQ0FBQyxnQkFBYixDQUE4QixNQUFNLENBQUMsTUFBckMsQ0FBNkMsTUFBTSxDQUFDLFNBQXBELENBQStELElBQS9ELEVBQXFFLElBQXJFLENBQ0ksU0FBUyxJQUFULENBQWUsQ0FDSixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsR0FBakMsQ0FBcUMsU0FBckMsRUFDQSxNQUFNLENBQUMsWUFBUCxDQUFzQixJQUFJLENBQUMsSUFBM0IsQ0FDWixDQUpILENBSUksU0FBUyxLQUFULENBQWUsQ0FDTCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDWixDQU5GLEVBT0gsQ0FSRCxJQVFPLENBQ0wsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsTUFBcEIsQ0FBNkIsQ0FBN0IsQ0FDRCxDQUNKLENBaEJKLENBa0JELE1BQU0sQ0FBQyxnQkFBUCxDQUEwQixVQUFVLENBQ2xDLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDWixHQUFJLENBQUEsQ0FBQyxDQUFNLENBQUMsRUFBRSxDQUFDLElBQUosQ0FBUyxJQUFJLENBQUMsSUFBZCxDQUFtQixLQUFLLENBQUMsSUFBekIsQ0FBOEIsTUFBTSxDQUFDLElBQXJDLENBQTBDLGVBQWUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQVAsQ0FBWSxJQUFJLENBQUMsSUFBakIsQ0FBRCxDQUExRCxDQUFYLENBR0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsSUFBakIsQ0FBc0IsQ0FBdEIsRUFFRSxRQUFRLENBQUMsVUFBVSxDQUNyQixHQUFJLENBQUEsU0FBUyxDQUFHLFFBQVEsQ0FBQyxjQUFULENBQXdCLGlCQUF4QixDQUFoQixDQUNBLFNBQVMsQ0FBQyxTQUFWLENBQXNCLFNBQVMsQ0FBQyxZQUFoQyxDQUNBLENBSFUsQ0FBUixDQU1KLENBYlcsQ0FnQkQsR0FBSSxNQUFNLENBQUMsTUFBUCxDQUFjLENBQWxCLENBQ0csQ0FDRSxNQUFNLENBQUMsZUFBUCxHQUVBLEdBQUksTUFBTSxDQUFDLE1BQVAsRUFBZSxDQUFuQixDQUFzQixNQUFNLENBQUMsV0FBUCxDQUFxQixLQUFyQixDQUN2QixDQUxKLElBS1UsQ0FBQSxNQUFNLENBQUMsV0FBUCxDQUFxQixLQUFyQixDQUdkLENBelBJLENBeVBIO0FBRUgsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUVoQyxDQTdQRSxDQUFQLENBK1BILEVBQ0wsYUFFTyxRQUFTLENBQUEsaUJBQVQsRUFBOEIsQ0FFN0IsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUYsV0FBVyxDQUFFLDZDQUZYLENBR0Q7QUFDZDtBQUNBLG9CQUNnQixVQUFVLENBQUMsb0JBQVMsTUFBVCxDQUFnQixZQUFoQixDQUE2QixnQkFBN0IsQ0FBOEMsZUFBOUMsQ0FBOEQsVUFBOUQsQ0FBeUUsUUFBekUsQ0FBa0YsZUFBbEYsQ0FDWCxDQUNFLE1BQU0sQ0FBQyxhQUFQLENBQXVCLEtBQXZCLENBQ0EsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsS0FBdkIsQ0FHQSxNQUFNLENBQUMsV0FBUCxDQUFxQixVQUFXLENBQ3ZCLENBQUMsQ0FBQyxnQkFBRCxDQUFELENBQW9CLEtBQXBCLENBQTBCLE1BQTFCLEVBQ1IsQ0FGRCxDQUlDLE1BQU0sQ0FBQyxNQUFQLENBQWMsUUFBZCxDQUF3QixTQUFVLFFBQVYsQ0FBb0IsUUFBcEIsQ0FBOEIsS0FBOUIsQ0FBcUMsQ0FDeEQsR0FBSSxRQUFKLENBQWMsTUFBTSxDQUFDLFdBQVAsR0FDZDtBQUVILENBSkYsRUFNRCxNQUFNLENBQUMsZUFBUCxDQUF5QixVQUFXLENBQzlCLE1BQU0sQ0FBQyxhQUFQLENBQXVCLENBQUMsTUFBTSxDQUFDLGFBQS9CLENBQ0wsQ0FGRCxDQUlBLE1BQU0sQ0FBQyxlQUFQLENBQXlCLFVBQVcsQ0FDOUIsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsQ0FBQyxNQUFNLENBQUMsYUFBL0IsQ0FDTCxDQUZELENBS0EsTUFBTSxDQUFDLFVBQVAsQ0FBb0IsU0FBUyxLQUFULENBQWUsQ0FDM0IsT0FBTyxDQUFDLEdBQVIsQ0FBWSxNQUFaLEVBQ0E7QUFDSixNQUFNLENBQUMsWUFBUCxDQUFvQixNQUFwQixDQUEyQixLQUEzQixDQUFpQyxDQUFqQyxFQUNILENBSkQsQ0FNQSxNQUFNLENBQUMsWUFBUCxDQUFzQixVQUFXLENBRTdCO0FBQ0EsTUFBTSxDQUFDLE1BQVAsQ0FBYyxDQUFkLENBQ0EsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsS0FBcEIsQ0FDQSxNQUFNLENBQUMsWUFBUCxDQUFvQixDQUFwQixDQUVILENBUEQsQ0FVRCxNQUFNLENBQUMsZUFBUCxDQUF5QixTQUFTLE1BQVQsQ0FBZ0IsUUFBaEIsQ0FBeUIsQ0FFL0MsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUVDLE1BQU0sQ0FBQyxNQUFQLENBQWdCLE1BQWhCLENBQ0EsTUFBTSxDQUFDLFFBQVAsQ0FBa0IsUUFBbEIsQ0FDQSxDQUFDLENBQUMsZ0JBQUQsQ0FBRCxDQUFvQixLQUFwQixDQUEwQixNQUExQixFQUdELEdBQUksTUFBTSxDQUFDLE1BQVAsQ0FBYyxDQUFsQixDQUFzQixDQUV0QixZQUFZLENBQUMsZUFBYixDQUE2QixNQUFNLENBQUMsTUFBcEMsQ0FBMkMsSUFBM0MsRUFBaUQsSUFBakQsQ0FBc0QsU0FBUyxJQUFULENBQWUsQ0FDdEQsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsSUFBSSxDQUFDLElBQTNCLENBQ0EsTUFBTSxDQUFDLFdBQVAsQ0FBcUIsSUFBckIsQ0FDQyxDQUFDLENBQUMsZ0JBQUQsQ0FBRCxDQUFvQixLQUFwQixDQUEwQixNQUExQixFQUNMLENBSlgsQ0FJWSxTQUFTLEtBQVQsQ0FBZSxDQUNiLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNMLENBTlQsRUFPQyxDQVRELElBU08sQ0FFTCxNQUFNLENBQUMsWUFBUCxDQUFvQixNQUFwQixDQUE2QixDQUE3QixDQUNBLE1BQU0sQ0FBQyxXQUFQLENBQXFCLEtBQXJCLENBQ0QsQ0FDSixDQXZCQSxDQTBCRSxNQUFNLENBQUMsZ0JBQVAsQ0FBMEIsVUFBVSxDQUUvQixHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0E7QUFFQSxHQUFJLE1BQU0sQ0FBQyxNQUFQLENBQWMsQ0FBbEIsQ0FBcUIsQ0FDakIsWUFBWSxDQUFDLGdCQUFiLENBQThCLE1BQU0sQ0FBQyxNQUFyQyxDQUE0QyxNQUFNLENBQUMsWUFBbkQsQ0FBZ0UsSUFBaEUsRUFBc0UsSUFBdEUsQ0FDSSxTQUFTLElBQVQsQ0FBZSxDQUNKLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxHQUFqQyxDQUFxQyxTQUFyQyxFQUNBLE1BQU0sQ0FBQyxZQUFQLENBQXNCLElBQUksQ0FBQyxJQUEzQixDQUNaLENBSkgsQ0FJSSxTQUFTLEtBQVQsQ0FBZSxDQUNMLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNaLENBTkYsRUFPSCxDQVJELElBUU8sQ0FDTCxNQUFNLENBQUMsWUFBUCxDQUFvQixNQUFwQixDQUE2QixDQUE3QixDQUNELENBQ0osQ0FoQkYsQ0FrQmYsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsU0FBVSxPQUFWLENBQW1CLENBQ3JDO0FBQ0UsR0FBSSxPQUFKLENBQWEsQ0FDUDtBQUNBLFlBQVksQ0FBQyxTQUFiLENBQXVCLE1BQU0sQ0FBQyxRQUE5QixFQUNTLElBRFQsQ0FDYyxTQUFTLElBQVQsQ0FBZSxDQUNWLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsR0FBdEMsQ0FBMEMsU0FBMUMsRUFDSixDQUhmLENBR2dCLFNBQVMsS0FBVCxDQUFlLENBQ2IsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0FMYixFQU1MLENBQ0YsQ0FYTCxDQWVZLE1BQU0sQ0FBQyxnQkFBUCxDQUEwQixVQUFVLENBR2xDLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQyxNQUFNLENBQUMsWUFBUCxDQUFvQixJQUFwQixDQUF5QixDQUFDLEVBQUUsQ0FBQyxJQUFKLENBQVMsSUFBSSxDQUFDLElBQWQsQ0FBbUIsS0FBSyxDQUFDLElBQXpCLENBQThCLE1BQU0sQ0FBQyxJQUFyQyxDQUEwQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFQLENBQVksSUFBSSxDQUFDLElBQWpCLENBQUQsQ0FBMUQsQ0FBekIsRUFDRixDQUxELENBT0E7QUFFRCxHQUFJLE1BQU0sQ0FBQyxNQUFQLENBQWMsQ0FBbEIsQ0FDRyxDQUNFLE1BQU0sQ0FBQyxlQUFQLEdBRUEsR0FBSSxNQUFNLENBQUMsTUFBUCxFQUFlLENBQW5CLENBQXNCLE1BQU0sQ0FBQyxXQUFQLENBQXFCLEtBQXJCLENBQ3ZCLENBTEosSUFLVSxDQUFBLE1BQU0sQ0FBQyxXQUFQLENBQXFCLEtBQXJCLENBRWQsQ0ExSEksQ0E0SE4sSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUloQyxDQWhJRSxDQUFQLENBa0lILEVBQ0wsYUFFTyxRQUFTLENBQUEsZUFBVCxFQUE2QixDQUUxQixHQUFJLENBQUEsVUFBVSxDQUFHLENBQUMsUUFBRCxDQUFXLGNBQVgsQ0FBMEIsUUFBMUIsQ0FBbUMsY0FBbkMsQ0FBa0Qsa0JBQWxELENBQXFFLGlCQUFyRSxDQUF1RixZQUF2RixDQUFvRyxVQUFwRyxDQUErRyxpQkFBL0csQ0FBaUksU0FBVSxNQUFWLENBQWlCLFlBQWpCLENBQThCLE1BQTlCLENBQXFDLFlBQXJDLENBQWtELGdCQUFsRCxDQUFtRSxlQUFuRSxDQUFtRixVQUFuRixDQUE4RixRQUE5RixDQUF1RyxlQUF2RyxDQUF3SCxDQUVsUSxNQUFNLENBQUMsY0FBUCxDQUF3QixVQUN4QixDQUNHLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FFQSxZQUFZLENBQUMsY0FBYixDQUE0QixNQUFNLENBQUMsUUFBbkMsQ0FBNEMsSUFBNUMsRUFBa0QsSUFBbEQsQ0FBdUQsU0FBUyxJQUFULENBQWUsQ0FDOUQsTUFBTSxDQUFDLFFBQVAsQ0FBa0IsSUFBSSxDQUFDLElBQXZCLENBRUEsR0FBSSxDQUFBLEdBQUosQ0FDQSxHQUFJLE1BQU0sQ0FBQyxjQUFQLEVBQXVCLFNBQTNCLENBQ0EsQ0FDQyxHQUFHLENBQUcsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsR0FBaEIsQ0FBb0IsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUFoRCxFQUFrRCxPQUFsRCxDQUEwRCxNQUFNLENBQUMsY0FBakUsQ0FBTixDQUNBLENBRUQ7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsaUNBQzZCLEdBQUksR0FBRyxDQUFDLENBQUMsQ0FBVCxDQUFZLENBRVgsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsR0FBaEIsQ0FBdEIsQ0FFQyxDQUdBLENBckJWLENBcUJXLFNBQVMsS0FBVCxDQUFlLENBRWIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0F4QlIsRUEwQkYsQ0E5QkQsQ0FnQ0MsTUFBTSxDQUFDLFFBQVAsQ0FBaUIsVUFDbEIsQ0FDRyxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBRUEsWUFBWSxDQUFDLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLFFBQW5DLENBQTRDLElBQTVDLEVBQWtELElBQWxELENBQXVELFNBQVMsSUFBVCxDQUFlLENBQzlELE1BQU0sQ0FBQyxRQUFQLENBQWtCLElBQUksQ0FBQyxJQUF2QixDQUlFLENBTFYsQ0FLVyxTQUFTLEtBQVQsQ0FBZSxDQUViLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNMLENBUlIsRUFVRixDQWRBLENBZ0JELE1BQU0sQ0FBQyxhQUFQLENBQXVCLFVBQVUsQ0FDL0I7QUFDQSxLQUFLLENBQUMsUUFBTixHQUNHLENBSEwsQ0FJQSxNQUFNLENBQUMsbUJBQVAsQ0FBNkIsVUFBVSxDQUNyQztBQUNBLE1BQU0sQ0FBQyxjQUFQLEdBQ0csQ0FITCxDQUtDLEdBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFiLENBQ0MsQ0FDRSxNQUFNLENBQUMsY0FBUCxHQUNELENBSEYsSUFJQyxDQUVFLE1BQU0sQ0FBQyxRQUFQLEdBQ0QsQ0FHVixDQXJFZ0IsQ0FBakIsQ0FzRUYsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUYsV0FBVyxDQUFFLDJDQUZYLENBR0QsS0FBSyxDQUFDLENBQ0o7QUFDQSxjQUFjLENBQUUsR0FGWixDQUdKLE1BQU0sQ0FBRSxHQUhKLENBSUosUUFBUSxDQUFFLEdBSk4sQ0FLSixXQUFXLENBQUMsR0FMUixDQU1KLFdBQVcsQ0FBQyxHQU5SLENBT0osSUFBSSxDQUFDLEdBUEQsQ0FRSixLQUFLLENBQUMsR0FSRixDQVNKLFVBQVUsQ0FBQyxHQVRQLENBVUosUUFBUSxDQUFDLEdBVkwsQ0FXSixNQUFNLENBQUUsR0FDUjtBQVpJLENBSEwsQ0FtQkYsVUFBVSxDQUFDLFVBbkJULENBb0JGLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FFL0IsR0FBSSxLQUFLLENBQUMsWUFBTixFQUFzQixTQUExQixDQUFxQyxLQUFLLENBQUMsWUFBTixDQUFtQixJQUFuQixDQUV0QztBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUNrQixLQUFLLENBQUMsS0FBTixDQUFjLFNBQVMsS0FBVCxDQUFlLFFBQWYsQ0FBd0IsQ0FFckMsS0FBSyxDQUFDLFlBQU4sQ0FBcUIsSUFBckIsQ0FHQSxDQUxELENBT0MsS0FBSyxDQUFDLHNCQUFOLENBQStCLFNBQVUsSUFBVixDQUFnQixLQUFoQixDQUFzQixDQUVsRCxHQUFJLElBQUksRUFBRSxTQUFWLENBQ0EsQ0FDQSxLQUFLLENBQUMsWUFBTixDQUFxQixJQUFyQixDQUNBLEtBQUssQ0FBQyxjQUFOLENBQXVCLElBQUksQ0FBQyxFQUE1QixDQUVDLENBTEQsSUFLTSxDQUVKLEtBQUssQ0FBQyxZQUFOLENBQXFCLElBQXJCLENBQ0EsS0FBSyxDQUFDLGNBQU4sQ0FBcUIsSUFBckIsQ0FDRCxDQUNGLENBWkYsQ0FjVixDQTVETSxDQUFQLENBOERILEVBQ0wsYUFJTyxRQUFTLENBQUEsZUFBVCxFQUE2QixDQUU1QixNQUFPLENBQ0YsUUFBUSxDQUFFLEdBRFIsQ0FFRixXQUFXLENBQUUsMkNBRlgsQ0FHRixLQUFLLENBQUMsQ0FDSSxFQUFFLENBQUcsR0FEVCxDQUhKLENBTUYsVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBZ0IsWUFBaEIsQ0FBNkIsb0JBQTdCLENBQWtELGVBQWxELENBQWtFLFVBQWxFLENBQTZFLGlCQUE3RSxDQUErRixlQUEvRixDQUErRyxRQUEvRyxDQUF3SCxXQUF4SCxDQUFvSSxnQkFBcEksQ0FDWixDQUNHLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF1QixHQUF2QixDQUNGLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFrQyxXQUFXLENBQUMsbUJBQTlDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxtQkFBVixDQUE4QixDQUE5QixDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWUsZUFBZixDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLEVBQXNCLFNBQTFCLENBQXFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFzQixFQUF0QixDQUNyQyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixFQUF3QixJQUF4QixFQUFnQyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsRUFBd0IsRUFBNUQsQ0FDQSxDQUNFLEdBQUksQ0FBQSxLQUFLLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUF0QixDQUNBLEdBQUksQ0FBQSxZQUFZLENBQUcsS0FBSyxDQUFDLFFBQU4sR0FBaUIsTUFBakIsQ0FBd0IsQ0FBeEIsQ0FBMEIsQ0FBMUIsQ0FBbkIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLG1CQUFWLENBQThCLEtBQUssQ0FBQyxRQUFOLEdBQWlCLE1BQWpCLENBQXdCLENBQXhCLENBQTBCLENBQTFCLENBQTlCLENBQ0EsR0FBSSxZQUFZLEVBQUUsR0FBZCxFQUFxQixZQUFZLEVBQUUsR0FBdkMsQ0FDQSxDQUVFLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF5QixZQUF6QixDQUNELENBQ0YsQ0FFRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsRUFBMEMsU0FBOUMsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsYUFBekMsQ0FBeUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQXBCLENBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsbUJBQTVDLENBQXpELENBQ0QsQ0FIRCxJQUlBLENBQ0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUEyQyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBcEIsQ0FBa0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxtQkFBNUMsQ0FBZixDQUEzQyxDQUNELENBRUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFxQyxFQUFyQyxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixFQUE0QyxTQUFoRCxDQUNBLENBQ0csTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFxQyxJQUFyQyxDQUEwQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQTlELEVBRUYsQ0FHUDtBQUVBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFtQyxTQUFTLGFBQVQsQ0FBeUIsQ0FFcEQsR0FBSSxhQUFhLEVBQUUsU0FBbkIsQ0FBOEIsYUFBYSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixvQkFBckMsQ0FDOUIsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsRUFBa0MsU0FBdEMsQ0FBaUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQWlDLEVBQWpDLENBQ2pELEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxvQkFBb0IsQ0FBQyx3QkFBckIsQ0FBOEMsSUFBOUMsQ0FBbUQsYUFBbkQsRUFBa0UsSUFBbEUsQ0FDSSxTQUFTLElBQVQsQ0FBZSxDQUNQLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFtQyxJQUFJLENBQUMsSUFBeEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBcEIsR0FFUCxDQUxMLENBS00sU0FBUyxLQUFULENBQWUsQ0FDVCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDQSxDQVBaLEVBUVYsQ0FiRSxDQWVOLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFvQyxVQUFVLENBQ3BDLEdBQUksQ0FBQSxlQUFlLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUExQyxDQUNJLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLFNBQW5CLEVBQWdDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixFQUFtQixJQUF2RCxDQUE2RCxDQUNyRCxHQUFJLENBQUEsR0FBRyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFpQyxHQUFqQyxDQUFxQyxTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsRUFBVCxDQUFjLENBQWpFLEVBQW1FLE9BQW5FLENBQTJFLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBckYsQ0FBVixDQUNBLEdBQUksR0FBRyxFQUFFLENBQVQsQ0FBWSxDQUNaLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBMkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQWlDLEdBQWpDLENBQTNDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUF5QyxjQUF6QyxDQUF3RCxlQUFlLENBQUMsY0FBeEUsQ0FFSCxDQUNKLENBQ1IsQ0FWUCxDQVlNLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBMEMsVUFDMUMsQ0FDSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZUFBcEIsQ0FBb0MsS0FBcEMsQ0FFSSxvQkFBb0IsQ0FBQyw2QkFBckIsQ0FBbUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUE3RCxDQUFxRSxNQUFyRSxFQUE2RSxJQUE3RSxDQUNBLFNBQVUsSUFBVixDQUFnQixDQUVoQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTRDLElBQUksQ0FBQyxJQUFqRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixlQUFwQixDQUFvQyxJQUFwQyxDQUVBLENBTkEsQ0FNQyxTQUFTLEtBQVQsQ0FBZSxDQUNaLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNILENBUkQsRUFVUCxDQWRELENBZ0JBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQiwyQkFBcEIsQ0FBa0QsU0FBUyxhQUFULENBQXlCLENBRW5FLEdBQUksYUFBYSxFQUFFLFNBQW5CLENBQThCLGFBQWEsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsb0JBQXJDLENBQzlCLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixFQUEyQyxTQUEvQyxDQUEwRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLEVBQTFDLENBQzFELEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FFQTtBQUNBLG9CQUFvQixDQUFDLDJCQUFyQixDQUFpRCxhQUFqRCxDQUErRCxNQUEvRCxDQUF1RSxLQUF2RSxFQUE4RSxJQUE5RSxDQUFtRixTQUFVLElBQVYsQ0FBZ0IsQ0FDM0Y7QUFFQSxRQUFRLENBQUMsVUFBVSxDQUNmLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBMEMsTUFBMUMsQ0FBbUQsQ0FBbkQsQ0FDQSxPQUFPLENBQUMsTUFBUixDQUFlLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBbkMsQ0FBMEQsSUFBSSxDQUFDLElBQS9ELEVBQ0E7QUFHQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixtQkFBckIsRUFBMEMsSUFBMUMsRUFBa0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG1CQUEzRSxDQUFnRyxDQUM1RixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsbUJBQXBCLENBQXdDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixtQkFBN0QsRUFDSCxDQUVILENBVk0sQ0FBUixDQVdOLENBZEYsQ0FjRyxTQUFTLEtBQVQsQ0FBZSxDQUNOLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNULENBaEJILEVBaUJBLENBeEJSLENBMEJKLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLEVBQWtDLFNBQXRDLENBQWlELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFpQyxFQUFqQyxDQUNqRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixFQUFtQixTQUFuQixFQUFnQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBaUMsTUFBakMsRUFBeUMsQ0FBN0UsQ0FBaUYsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQWlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixvQkFBdEQsRUFBakYsSUFDSyxDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixHQUNKO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsTUFFTyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBb0MsU0FBUyxFQUFULENBQVksQ0FDMUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXdCLEVBQXhCLENBQ0EsQ0FGTixDQUtFLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixPQUFwQixDQUE2QixVQUFVLENBRWpDLFFBQVEsQ0FBQyxVQUFVLDRCQUNmLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixTQUFyQixDQUFpQyxFQUFqQyxDQUF1QztBQUV2QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLGFBQXpDLENBQXlELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFrQyxNQUFNLENBQUMsRUFBUCxDQUFVLG1CQUE1QyxDQUF6RCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF1QixNQUFNLENBQUMsRUFBUCxDQUFVLG1CQUFWLENBQThCLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBL0QsQ0FHQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLGNBQXpDLENBQTBELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsSUFBbkcsQ0FDQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsb0JBQXJCLENBQTRDLENBQ3hDLHlDQUFrQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXRDLGlEQUFrQix1QkFBMEMsY0FEcEIsQ0FBNUMsQ0FLRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsdUJBQXBCLENBQThDLEVBQTlDLENBQWlEO0FBQ2pELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBc0MsQ0FBdEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBc0IsRUFBdEIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isc0JBQXBCLENBQTJDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQiw2QkFBL0QsQ0FFQTtBQUNDO0FBQ0ksR0FBSSxDQUFBLFNBQVMsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBMEMsTUFBMUMsQ0FBaUQsQ0FBM0YsQ0FBaEIsQ0FFQSxHQUFJLFNBQVMsRUFBRSxTQUFmLENBQ0EsQ0FDSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isc0JBQXBCLENBQTZDLFNBQTdDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG1CQUFyQixDQUEyQyxTQUFTLENBQUMsRUFBckQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsd0JBQXJCLENBQWdELFNBQVMsQ0FBQyxPQUExRCxDQUNILENBRU47QUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsbUJBQXBCLENBQXdDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixtQkFBN0QsRUFHSCxDQWpDTyxDQUFSLENBbUNGO0FBQ0EsQ0F0Q0osQ0EwQ0ssTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHdCQUFwQixDQUErQyxTQUFVLElBQVYsQ0FBZ0IsS0FBaEIsQ0FBc0IsQ0FFaEUsR0FBSSxDQUFBLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBdkIsQ0FDQyxHQUFJLENBQUEsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUF6QixDQUNBLEdBQUksQ0FBQSwwQkFBMEIsQ0FBRSxJQUFJLENBQUMsZUFBckMsQ0FDQTtBQUNwQjtBQUNBO0FBQ0E7QUFDQSx1QkFDb0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLElBQUksQ0FBQyxFQUF2QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixtQkFBckIsQ0FBeUMsQ0FBekMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLEdBQ0E7QUFHTCxDQWhCRCxDQWtCQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsdUJBQXBCLENBQThDLFNBQVUsSUFBVixDQUFnQixLQUFoQixDQUFzQixDQUU5RCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsNkJBQXBCLENBQW9ELElBQXBELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG1CQUFyQixDQUEyQyxJQUFJLENBQUMsRUFBaEQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsd0JBQXJCLENBQWdELElBQUksQ0FBQyxPQUFyRCxDQUNBO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUVlLENBakJELENBbUJELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBd0MsU0FBUyxTQUFULENBQW1CLENBRXRELEdBQUksU0FBUyxFQUFFLENBQUMsQ0FBaEIsQ0FDQSxDQUVFLE1BQU0sQ0FBQyxFQUFQLENBQVUsbUJBQVYsQ0FBZ0MsR0FBaEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBeUIsR0FBekIsQ0FFRCxDQU5ELElBT0EsQ0FFRSxNQUFNLENBQUMsRUFBUCxDQUFVLG1CQUFWLENBQWdDLEdBQWhDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXlCLFNBQVMsQ0FBQyxTQUFuQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUF3QixTQUFTLENBQUMsZUFBbEMsQ0FDQSxHQUFJLFNBQVMsQ0FBQyxJQUFWLEVBQWdCLE9BQXBCLENBQTZCLE1BQU0sQ0FBQyxFQUFQLENBQVUsbUJBQVYsQ0FBZ0MsR0FBaEMsQ0FFOUIsQ0FDTCxDQWpCRCxDQW1CQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBcUMsU0FBUyxXQUFULENBQXFCLENBR3JELEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUE0QixTQUE1QixFQUF5QyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsSUFBdkUsQ0FBNkUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLENBQXpCLENBQzdFLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQXFCLFNBQXJCLEVBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixFQUFtQixJQUF6RCxDQUErRCxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsR0FBbEIsQ0FDL0QsR0FBSSxDQUFBLFdBQVcsQ0FBRyxNQUFNLENBQUMsS0FBUCxDQUFhLHNCQUFiLENBQW9DLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUErQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBdkYsQ0FBbEIsQ0FDQSxHQUFJLFdBQVcsRUFBRSxTQUFqQixDQUNBLENBQ0Usb0JBQW9CLENBQUMsY0FBckIsQ0FBb0MsV0FBcEMsQ0FBZ0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBFLENBQStFLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBekYsQ0FBaUcsQ0FBakcsQ0FBbUcsSUFBbkcsQ0FBd0csV0FBeEcsU0FBd0csV0FBeEcsaUJBQXdHLFdBQVcsQ0FBRSxPQUFySCxFQUE4SCxJQUE5SCxDQUFtSSxTQUFTLElBQVQsQ0FBZSxDQUk5SSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsdUJBQXBCLENBQThDLElBQUksQ0FBQyxJQUFMLENBQVUsZ0JBQXhELENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHNCQUFwQixDQUE2QyxJQUFJLENBQUMsSUFBTCxDQUFVLGVBQXZELENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUF3QyxJQUF4QyxDQUlBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix3QkFBcEIsQ0FBK0MsSUFBSSxDQUFDLElBQUwsQ0FBVSxnQkFBekQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsdUJBQXBCLENBQThDLElBQUksQ0FBQyxJQUFMLENBQVUsZUFBeEQsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isa0JBQXBCLENBQXlDLElBQXpDLENBSUUsQ0FuQk4sQ0FtQk8sU0FBUyxLQUFULENBQWUsQ0FDZixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDTixDQXJCRCxFQXNCSCxDQXhCQyxJQXdCSSxDQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLHlGQUE1QixDQUFzSCxPQUF0SCxFQUNSLENBaENELENBbUNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBdUMsU0FBUyxjQUFULENBQXdCLENBRXRELE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixjQUF6QixDQUVBLEdBQUksY0FBYyxFQUFFLEdBQXBCLENBQ0MsQ0FDRSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixzQkFBcEIsRUFBNEMsU0FBaEQsQ0FDQSxDQUNPLEdBQUksQ0FBQSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHNCQUFwQixDQUEyQyxFQUFsRCxDQUNBLEdBQUksRUFBRSxFQUFFLFNBQVIsQ0FBbUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixzQkFBcEIsQ0FBMkMsU0FBOUMsQ0FDbkI7QUFDTixDQUVGLENBQ04sQ0FkTCxDQWdCQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBaEQsRUFHQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZUFBcEIsQ0FBcUMsU0FBUyxZQUFULENBQXNCLENBRWxELE1BQU0sQ0FBQyxFQUFQLENBQVUsbUJBQVYsQ0FBOEIsWUFBOUIsQ0FFQztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUVtQixDQVhMLENBYUUsQ0FuU0QsQ0FvU0YsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUduQyxDQXZTQyxDQUFQLENBeVNQLEVBQ0QsYUFJTyxRQUFTLENBQUEscUJBQVQsRUFBa0MsQ0FFakMsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUYsV0FBVyxDQUFFLGlEQUZYLENBR0QsVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBZ0IsWUFBaEIsQ0FBNkIsb0JBQTdCLENBQWtELGVBQWxELENBQWtFLFVBQWxFLENBQTZFLGlCQUE3RSxDQUErRixlQUEvRixDQUErRyxRQUEvRyxDQUF3SCxXQUF4SCxDQUFvSSxnQkFBcEksQ0FBcUosQ0FHL0osTUFBTSxDQUFDLEtBQVAsQ0FBZSxlQUFmLENBQ0YsR0FBSSxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0QyxHQUFrRCxTQUF0RCxDQUFpRSxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0QyxFQUErQyxFQUEvQyxDQUNqRSxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0QyxFQUErQyxrQkFBL0MsQ0FBa0UsR0FBbEUsQ0FDQSxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0QyxFQUErQyxvQkFBL0MsQ0FBb0UsR0FBcEUsQ0FDQSxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsV0FBVyxDQUFDLG1CQUF4QyxDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLHVCQUEvQyxDQUF1RSxDQUF2RSxDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLDRCQUEvQyxDQUE0RSxLQUE1RSxDQUVBLEdBQUksTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0Msa0JBQS9DLEVBQW1FLElBQXZFLENBQ0EsQ0FDRSxHQUFJLENBQUEsTUFBTSxDQUFHLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLGtCQUE1RCxDQUNBLEdBQUksQ0FBQSxrQkFBa0IsQ0FBRyxNQUFNLENBQUMsUUFBUCxHQUFrQixNQUFsQixDQUF5QixDQUF6QixDQUEyQixDQUEzQixDQUF6QixDQUNBLEdBQUksQ0FBQSxvQkFBb0IsQ0FBRyxNQUFNLENBQUMsUUFBUCxHQUFrQixNQUFsQixDQUF5QixDQUF6QixDQUEyQixDQUEzQixDQUEzQixDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLHVCQUEvQyxDQUF1RSxNQUFNLENBQUMsUUFBUCxHQUFrQixNQUFsQixDQUF5QixDQUF6QixDQUEyQixDQUEzQixDQUF2RSxDQUVBLEdBQUksa0JBQWtCLEVBQUUsR0FBcEIsRUFBMkIsa0JBQWtCLEVBQUUsR0FBbkQsQ0FDQSxDQUVFLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLGtCQUEvQyxDQUFvRSxrQkFBcEUsQ0FDRCxDQUVELEdBQUksb0JBQW9CLEVBQUUsR0FBdEIsRUFBNkIsb0JBQW9CLEVBQUUsR0FBdkQsQ0FDQSxDQUVFLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLG9CQUEvQyxDQUFzRSxvQkFBdEUsQ0FDRCxDQUNGLENBRUQsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0MsMEJBQS9DLENBQTBFLEVBQTFFLENBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0MsMEJBQS9DLENBQTBFLG9CQUExRSxDQUFpRyxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0Msa0JBQTNFLENBQWpHLENBR0YsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0Msa0JBQS9DLENBQWtFLEVBQWxFLENBRUEsTUFBTSxDQUFDLHlCQUFQLENBQW1DLFNBQVMsRUFBVCxDQUFjLENBRy9DLEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0Msa0JBQS9DLENBQWtFLEdBQWxFLENBQXNFLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBbEcsRUFBb0csT0FBcEcsQ0FBNEcsRUFBNUcsQ0FBVixDQUVBLEdBQUksR0FBRyxFQUFFLENBQVQsQ0FBVyxDQUdULE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLHNCQUEvQyxDQUF3RSxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0QyxFQUErQyxrQkFBL0MsQ0FBa0UsR0FBbEUsQ0FBeEUsQ0FDQSxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0QyxFQUErQyxtQkFBL0MsQ0FBcUUsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0Msc0JBQS9DLENBQXNFLEVBQTNJLENBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0MsMEJBQS9DLENBQTBFLEVBQTFFLENBQStFLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLGtCQUEvQyxDQUFrRSxHQUFsRSxFQUF1RSxFQUF0SixDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLDBCQUEvQyxDQUEwRSxJQUExRSxDQUFpRixNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0QyxFQUErQyxrQkFBL0MsQ0FBa0UsR0FBbEUsRUFBdUUsSUFBeEosQ0FFQSxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0QyxFQUErQywwQkFBL0MsQ0FBMEUsY0FBMUUsQ0FBMkYsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0MsMEJBQS9DLENBQTBFLElBQTFFLENBQWdGLElBQWhGLENBQXFGLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLDBCQUEvQyxDQUEwRSxFQUEvSixDQUFtSyxHQUE5UCxDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLDRCQUEvQyxDQUE0RSxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0QyxFQUErQywwQkFBM0gsQ0FHQSxNQUFNLENBQUMscUJBQVAsQ0FBNkIsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0MsdUJBQTVFLEVBSUEsUUFBUSxDQUFDLFVBQVUsQ0FHZixNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0QyxFQUErQyw0QkFBL0MsQ0FBNkUsSUFBN0UsQ0FFSCxDQUxPLENBQVIsQ0FPQyxDQUVKLENBOUJELENBZ0NELE1BQU0sQ0FBQyx1QkFBUCxDQUFpQyxTQUFTLFNBQVQsQ0FBbUIsQ0FFN0MsR0FBSSxTQUFTLEVBQUUsQ0FBQyxDQUFoQixDQUNBLENBRUUsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0MsdUJBQS9DLENBQXlFLEdBQXpFLENBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0Msa0JBQS9DLENBQW9FLEdBQXBFLENBRUQsQ0FORCxJQU9BLENBRUUsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0MsdUJBQS9DLENBQXlFLEdBQXpFLENBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0Msa0JBQS9DLENBQW9FLFNBQVMsQ0FBQyxTQUE5RSxDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLGlCQUEvQyxDQUFvRSxTQUFTLENBQUMsZUFBOUUsQ0FDQSxHQUFJLFNBQVMsQ0FBQyxJQUFWLEVBQWdCLE9BQXBCLENBQTZCLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLHVCQUEvQyxDQUF5RSxHQUF6RSxDQUU5QixDQUNMLENBakJILENBc0JSLE1BQU0sQ0FBQyxpQkFBUCxDQUEyQixVQUFZLENBRXRDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLEVBQXVCLFlBQXZCLEVBQXVDLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixFQUF1QixNQUE5RCxFQUF3RSxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsRUFBdUIsS0FBL0YsRUFBd0csTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLEVBQXVCLFFBQW5JLENBQTZJLDRHQUM1SSxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ2UsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0MsNEJBQS9DLENBQThFLEtBQTlFLENBR2Y7QUFDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixFQUF1QixZQUEzQixDQUF5QyxNQUFNLENBQUMsRUFBUCxDQUFVLG1CQUFWLGNBQWlDLE1BQU0sQ0FBQyxFQUF4Qyw2REFBaUMsWUFBVyxVQUE1Qyx3RUFBaUMsc0JBQXVCLEtBQXhELHlFQUFpQyx1QkFBK0IsQ0FBL0IsQ0FBakMseUVBQWlDLHVCQUFtQyxRQUFwRSxpREFBaUMsdUJBQTZDLGNBQTlFLENBRXpDLEdBQUssQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLG1CQUFqQixDQUVDLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUF3QixTQUF4QixDQUFvQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTlDLENBQXdELDhCQUFwRixDQUFvSCxPQUFwSCxFQUZELElBSUssQ0FBQSxvQkFBb0IsQ0FBQyxnQ0FBckIsQ0FBc0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxtQkFBaEUsQ0FBcUYsSUFBckYsRUFBMkYsSUFBM0YsQ0FBZ0csU0FBUyxJQUFULENBQWUsdUNBR2xILE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLGtCQUEvQyxDQUFvRSxJQUFJLENBQUMsSUFBekUsQ0FFQSxHQUFJLE1BQUosU0FBSSxNQUFKLHdCQUFJLE1BQU0sQ0FBRSxFQUFaLHVEQUFJLFlBQVksU0FBaEIsMENBQUksc0JBQXVCLGFBQTNCLENBQTJDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFrQyxLQUFsQyxDQUUzQyxHQUFJLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLG1CQUEvQyxFQUFvRSxJQUFwRSxFQUE0RSxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0QyxFQUErQyxtQkFBL0MsRUFBb0UsU0FBcEosQ0FFQyxNQUFNLENBQUMseUJBQVAsQ0FBaUMsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0MsbUJBQWhGLEVBR0QsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0MsNEJBQS9DLENBQThFLElBQTlFLENBR2UsQ0FmWixDQWVhLFNBQVMsS0FBVCxDQUFlLENBQ04sZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0gsQ0FqQm5CLEVBbUJMLENBQ0QsQ0FsQ0QsQ0FzQ0csTUFBTSxDQUFDLGlCQUFQLEdBRUssTUFBTSxDQUFDLG9CQUFQLENBQTZCLFNBQVMsRUFBVCxDQUFZLENBRXZDLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLGtCQUEvQyxDQUFvRSxFQUFwRSxDQUVBLENBSkYsQ0FLQSxNQUFNLENBQUMsMEJBQVAsQ0FBbUMsU0FBUyxFQUFULENBQVksQ0FFNUMsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0Msb0JBQS9DLENBQXNFLEVBQXRFLENBQ0QsQ0FIRixDQUtSLE1BQU0sQ0FBQyxhQUFQLENBQXNCLFVBQVUsQ0FHcEIsR0FBSyxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0QyxFQUErQyw0QkFBL0MsRUFBNkUsU0FBbEYsQ0FBNEYsQ0FFckYsR0FBSSxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0QyxFQUErQyxtQkFBL0MsRUFBb0UsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0MsNEJBQS9DLENBQTRFLEVBQWhKLEVBQXNKLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLGtCQUEvQyxFQUFtRSxJQUF6TixFQUFpTyxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0QyxFQUErQyxrQkFBL0MsRUFBbUUsU0FBeFMsQ0FDQSxDQUNJLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLG1CQUEvQyxDQUFtRSxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0QyxFQUErQyw0QkFBL0MsQ0FBNEUsRUFBL0ksQ0FFSCxDQUNELE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLDBCQUEvQyxDQUEwRSxjQUExRSxDQUEyRixNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0QyxFQUErQyw0QkFBL0MsQ0FBNEUsSUFBNUUsQ0FBa0YsSUFBbEYsQ0FBdUYsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0MsNEJBQS9DLENBQTRFLEVBQW5LLENBQXVLLEdBQWxRLENBRUosQ0FFSCxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0QyxFQUErQywwQkFBL0MsQ0FBMEUsYUFBMUUsQ0FBMEYsTUFBTSxDQUFDLG9CQUFQLENBQTRCLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLHVCQUEzRSxDQUExRixDQUVBLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLGtCQUEvQyxDQUFrRSxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0QyxFQUErQyx1QkFBL0MsQ0FBdUUsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0Msa0JBQXRILENBQXlJLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLG9CQUExUCxDQUVGLENBbEJWLENBb0JZO0FBQ0QsTUFBTSxDQUFDLDhCQUFQLENBQXdDLFNBQVUsSUFBVixDQUFnQixLQUFoQixDQUFzQixDQUV0RSxHQUFJLElBQUosQ0FBVSxDQUNHLEdBQUksQ0FBQSxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQXZCLENBQ0EsR0FBSSxDQUFBLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBekIsQ0FDQyxHQUFJLENBQUEsMEJBQTBCLENBQUUsSUFBSSxDQUFDLGVBQXJDLENBQ0E7QUFDQztBQUNEO0FBRUQsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0MsNEJBQS9DLENBQThFLENBQUMsRUFBRSxDQUFDLGFBQUosQ0FBbUIsSUFBSSxDQUFHLGVBQTFCLENBQTBDLGVBQWUsQ0FBQywwQkFBMUQsQ0FBOUUsQ0FDWixDQVRELElBVUEsQ0FBQSxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0QyxFQUErQyw0QkFBL0MsQ0FBNEUsSUFBNUUsQ0FFUyxDQWRELENBY0M7QUFFRixNQUFNLENBQUMsb0JBQVAsQ0FBOEIsU0FBUyxXQUFULENBQXFCLElBQXJCLENBQTBCLENBR3JELEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLFNBQS9DLENBQXlELFFBQXpELEVBQW1FLFNBQXZFLENBQWtGLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLFNBQS9DLENBQXlELFFBQXpELENBQWtFLEVBQWxFLENBQ2xGLEdBQUksTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0MsT0FBL0MsRUFBMEQsU0FBMUQsRUFBdUUsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0MsT0FBL0MsRUFBd0QsSUFBbkksQ0FBeUksTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBK0MsT0FBL0MsQ0FBdUQsR0FBdkQsQ0FDekksR0FBSSxDQUFBLFdBQVcsQ0FBRyxNQUFNLENBQUMsS0FBUCxDQUFhLHNCQUFiLENBQW9DLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLFNBQS9DLENBQXlELFVBQXpELENBQW9FLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLFNBQS9DLENBQXlELFFBQWpLLENBQWxCLENBRUMsR0FBSSxXQUFXLEVBQUUsU0FBakIsQ0FDQyxDQUNBLG9CQUFvQixDQUFDLGNBQXJCLENBQW9DLFdBQXBDLENBQWdELE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLFNBQS9DLENBQXlELFVBQXpHLENBQW9ILE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLE9BQW5LLENBQTJLLENBQTNLLENBQTZLLElBQTdLLENBQWtMLFdBQVcsQ0FBQyxPQUE5TCxFQUF1TSxJQUF2TSxDQUE0TSxTQUFTLElBQVQsQ0FBZSxDQUM1TSxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0QyxFQUErQyxTQUEvQyxDQUF5RCxpQ0FBekQsQ0FBNkYsSUFBSSxDQUFDLElBQUwsQ0FBVSxnQkFBdkcsQ0FDQSxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0QyxFQUErQyxTQUEvQyxDQUF5RCxnQ0FBekQsQ0FBNEYsSUFBSSxDQUFDLElBQUwsQ0FBVSxlQUF0RyxDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLFNBQS9DLENBQXlELHVCQUF6RCxDQUFtRixJQUFuRixDQUdaLENBTkgsQ0FNSSxTQUFTLEtBQVQsQ0FBZSxDQUNKLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNWLENBUkwsRUFVSCxDQVpFLElBWUcsQ0FBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixzR0FBNUIsQ0FBbUksT0FBbkksRUFDTixDQXJCRCxDQXlCSyxNQUFNLENBQUMscUJBQVAsQ0FBOEIsU0FBUyxZQUFULENBQXNCLENBRWpELE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQStDLHVCQUEvQyxDQUF1RSxZQUF2RSxDQUVBO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHlCQUVtQixDQVZELENBWUosTUFBTSxDQUFDLGlCQUFQLENBQTBCLFVBQVUsQ0FFMUIsR0FBSSxDQUFBLEtBQUssQ0FBRyxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0QyxFQUErQyx1QkFBM0QsQ0FFQSxDQUpWLENBTUEsQ0FoT0MsQ0FpT0YsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUtwQztBQUVDLENBeE9DLENBQVAsQ0EwT1AsRUFDRCxhQUVPLFFBQVMsQ0FBQSx3QkFBVCxFQUFxQyxDQUVwQyxNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFRixXQUFXLENBQUUsb0RBRlgsQ0FHRixVQUFVLENBQUUsb0JBQVUsTUFBVixDQUFpQixNQUFqQixDQUF3QixZQUF4QixDQUFxQyxvQkFBckMsQ0FBMEQsZUFBMUQsQ0FBMEUsVUFBMUUsQ0FBcUYsaUJBQXJGLENBQXVHLGNBQXZHLENBQXNILFFBQXRILENBQStILFdBQS9ILENBQTJJLGdCQUEzSSxDQUNyQixDQUNhLE1BQU0sQ0FBQyxLQUFQLENBQWUsZUFBZixDQUNDLE1BQU0sQ0FBQyxJQUFQLENBQVksMEJBQVosQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEyQixTQUEvQixDQUEwQyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBMkIsRUFBM0IsQ0FFNUMsTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXVCLFVBQVcsQ0FDOUI7QUFDQTtBQUNBO0FBQ0gsQ0FKRCxFQU1GLE1BQU0sQ0FBQyxjQUFQLENBQXdCLEVBQXhCLENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsRUFBeEIsQ0FFVCxNQUFNLENBQUMsTUFBUCxDQUFnQixTQUFTLElBQVQsQ0FBZSxLQUFmLENBQ2hCLENBQ0M7QUFDQSxNQUFNLENBQUMsV0FBUCxDQUFtQixJQUFuQixDQUF5QixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBeUIsTUFBekIsQ0FBZ0MsS0FBaEMsQ0FBc0MsQ0FBdEMsRUFBeUMsQ0FBekMsQ0FBekIsRUFDQSxDQUpELENBTUEsTUFBTSxDQUFDLFFBQVAsQ0FBa0IsU0FBVSxJQUFWLENBQWdCLENBRXBDLE1BQU8sQ0FBQSxJQUFQLENBQ0UsR0FBSSxDQUFBLElBQUksT0FBSixFQUFBLElBQUksU0FBSixRQUFBLElBQUksQ0FBRSxNQUFOLEdBQWMsQ0FBbEIsQ0FBcUIsQ0FDcEIsTUFBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBRCxDQUFQLENBQ0EsQ0FGRCxJQUVPLE9BQU8sQ0FBQSxJQUFQLENBQ1AsQ0FOQSxDQVNTO0FBRUY7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FDSSxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBRUEsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sS0FBSyxDQUFDLENBQVosQ0FBYyxJQUFJLENBQUMsT0FBbkIsQ0FBRCxDQUE2QixDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sS0FBSyxDQUFDLENBQVosQ0FBYyxJQUFJLENBQUMsZUFBbkIsQ0FBN0IsQ0FBaUUsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLEtBQUssQ0FBQyxDQUFaLENBQWMsSUFBSSxDQUFDLG1CQUFuQixDQUFqRSxDQUF0QixDQUNBO0FBQ0o7QUFDQTtBQUNBLFNBM0RJLENBNERBO0FBQ0EsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsVUFDdEIsQ0FDSyxHQUFJLENBQUEsWUFBWSxDQUFHLHFCQUFuQixDQUNBLEdBQUksQ0FBQSxHQUFHLENBQUcsY0FBYyxDQUFDLElBQWYsQ0FBb0IsVUFBcEIsQ0FBZ0Msc0JBQWhDLENBQVYsQ0FDQSxHQUFJLEdBQUosQ0FBUyxjQUFjLENBQUMsT0FBZixDQUF1QixVQUF2QixDQUFtQyxzQkFBbkMsRUFFVCxjQUFjLENBQUMsT0FBZixDQUF1QixVQUF2QixDQUFtQyxzQkFBbkMsQ0FBMkQsQ0FDN0MsYUFBYSxDQUFFLElBRDhCLENBRTdDLGFBQWEsQ0FBRSxLQUY4QixDQUc5QztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUN1QixLQUFLLENBQUUsZUFBVSxFQUFWLENBQWMsU0FBZCxDQUF5QixNQUF6QixDQUFpQyxDQUM5QixNQUFPLENBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIsWUFBMUIsQ0FBUCxDQUNULENBZDRDLENBQTNELEVBaUJKLENBdkJELENBeUJJO0FBQ04sTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWtDLFVBQVksQ0FFcEMsb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLElBQTlDLENBQW1ELFNBQW5ELEVBQThELElBQTlELENBQ04sU0FBUyxJQUFULENBQWUsQ0FDZCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBa0MsSUFBSSxDQUFDLElBQXZDLENBQ3FCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFrQyxJQUFsQyxDQUNBO0FBRXBCLENBTkksQ0FNSCxTQUFTLEtBQVQsQ0FBZSxDQUNRLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNwQixDQVJBLEVBU04sQ0FYSixDQVlHLE1BQU0sQ0FBQyxrQkFBUCxDQUE0QixTQUFVLFNBQVYsQ0FBcUIsQ0FFN0MsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUVBLG9CQUFvQixDQUFDLGtCQUFyQixDQUF3QyxTQUF4QyxDQUFrRCxJQUFsRCxFQUF3RCxJQUF4RCxDQUE2RCxTQUFTLElBQVQsQ0FBZSxDQUV4RCxNQUFNLENBQUMsY0FBUCxDQUF3QixJQUFJLENBQUMsSUFBN0IsQ0FFQSxNQUFNLENBQUMsWUFBUCxHQUNBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLElBQXRCLENBRUksQ0FQeEIsQ0FPeUIsU0FBUyxLQUFULENBQWUsQ0FFbkIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0QsQ0FWcEIsRUFXQSxDQWZKLENBaUJBLE1BQU0sQ0FBQyxpQkFBUCxDQUEyQixTQUFVLElBQVYsQ0FBZSxJQUFmLENBQXFCLENBRTVDLEdBQUksQ0FBQSxJQUFJLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUMsQ0FFQSxvQkFBb0IsQ0FBQyxpQkFBckIsQ0FBdUMsSUFBSSxDQUFDLFFBQUwsQ0FBYyxFQUFyRCxDQUF3RCxJQUF4RCxFQUE4RCxJQUE5RCxDQUFtRSxTQUFTLElBQVQsQ0FBZSxDQUc3RCxHQUFJLElBQUksRUFBRSxDQUFWLENBQVksQ0FDUixNQUFNLENBQUMsY0FBUCxDQUF3QixJQUFJLENBQUMsSUFBN0IsQ0FFRixDQUhGLElBS0ksQ0FDRixNQUFNLENBQUMsY0FBUCxDQUF3QixJQUFJLENBQUMsSUFBN0IsQ0FFQyxDQUVELE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixJQUFJLENBQUMsRUFBL0IsRUFFQyxDQWZ4QixDQWV5QixTQUFTLEtBQVQsQ0FBZSxDQUVuQixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDRCxDQWxCcEIsRUFtQkEsQ0F2QkosQ0F5QkQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUEyQyxTQUFVLElBQVYsQ0FBZ0IsQ0FDdkQ7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBRUssQ0FwQkQsQ0FxQkksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGVBQXBCLENBQXNDLFNBQVUsZ0JBQVYsQ0FBNEIsQ0FHbEUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUF1QyxJQUF2QyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixlQUFwQixDQUFvQyxJQUFwQyxDQUVDLEdBQUksZ0JBQWdCLEVBQUUsS0FBbEIsRUFBMkIsZ0JBQWdCLEVBQUUsU0FBakQsQ0FDQyxDQUNHLE1BQU0sQ0FBQyxhQUFQLENBQXFCLEVBQXJCLENBQ0EsTUFBTSxDQUFDLDRCQUFQLENBQW9DLGVBQXBDLENBQ0YsQ0FKRixJQUtDLENBQ0ksTUFBTSxDQUFDLDRCQUFQLENBQW9DLGVBQXBDLENBQ0EsTUFBTSxDQUFDLGFBQVAsQ0FBc0IsTUFBTSxDQUFDLGdCQUE3QixDQUNILENBRUYsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLEdBQWtDO0FBQ2xDLEdBQUksQ0FBQSxJQUFJLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUMsQ0FDQSxZQUFZLENBQUMsY0FBYixDQUE0QixLQUE1QixDQUFrQyxJQUFsQyxFQUF3QyxJQUF4QyxDQUE2QyxTQUFVLElBQVYsQ0FBZ0IsQ0FDdEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQStCLElBQUksQ0FBQyxJQUFwQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBd0MsSUFBeEMsQ0FDbkIsQ0FISixFQUlBLENBdEJELENBd0JBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFrQyxVQUFZLENBRTFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsd0NBQVYsRUFDSCxDQUhELENBSUEsTUFBTSxDQUFDLHNCQUFQLENBQWdDLFVBQ2hDLGlCQUNJLEdBQUksQ0FBQSxHQUFKLENBQ0EsZ0JBQUksTUFBTSxDQUFDLEVBQVgsZ0NBQUksWUFBVyxjQUFmLENBQ0ksSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLE1BQXhDLENBQStDLENBQUMsRUFBaEQsQ0FDQSxDQUNJLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLENBQXpCLElBQThCLFNBQTlCLEVBQTJDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixDQUF6QixJQUE4QixJQUE3RSxDQUNBLENBQ0ksR0FBRyxDQUFJLE1BQU0sQ0FBQyxXQUFQLENBQW1CLEdBQW5CLENBQXVCLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBbkQsRUFBcUQsT0FBckQsQ0FBNkQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLENBQXpCLEVBQTRCLEVBQXpGLENBQVAsQ0FFQSxNQUFNLENBQUMsV0FBUCxDQUFtQixNQUFuQixDQUEwQixHQUExQixDQUE4QixDQUE5QixFQUNILENBQ0osQ0FDUixDQWJELENBY0EsTUFBTSxDQUFDLFVBQVAsQ0FBb0IsU0FBUyxNQUFULENBQWdCLEtBQWhCLENBQ3BCLENBQ0ksTUFBTSxDQUFDLGNBQVAsQ0FBc0IsTUFBdEIsRUFBOEIsTUFBOUIsQ0FBcUMsTUFBckMsQ0FBNEMsS0FBNUMsQ0FBa0QsQ0FBbEQsRUFDSCxDQUhELENBSUEsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsVUFBWSxDQUMvQixNQUFNLENBQUMsNEJBQVAsQ0FBb0MsY0FBcEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isa0JBQXBCLENBQXVDLEtBQXZDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGVBQXBCLENBQW9DLEtBQXBDLENBQ0gsQ0FKRCxDQUtBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBeUMsVUFBWSw0QkFFakQsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUNBLEdBQUksQ0FBQSxNQUFNLENBQUcsQ0FBYixDQUNBLEdBQUksQ0FBQSxJQUFJLHlCQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBdkIsaURBQUcsdUJBQTBDLEVBQXJELENBRUEsb0JBQW9CLENBQUMsa0JBQXJCLENBQXdDLE1BQXhDLENBQStDLElBQS9DLENBQW9ELElBQXBELEVBQTBELElBQTFELENBQStELFNBQVMsSUFBVCxDQUFlLENBRTFFLE1BQU0sQ0FBQyxXQUFQLENBQXFCLElBQUksQ0FBQyxJQUExQixDQUNBLE1BQU0sQ0FBQyxzQkFBUCxHQUNBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLElBQXRCLENBQ0EsTUFBTSxDQUFDLFlBQVAsR0FFSCxDQVBELENBT0UsU0FBUyxLQUFULENBQWUsQ0FFYixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDSCxDQVZELEVBV0gsQ0FqQkQsQ0FrQkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixHQUNKLENBNU9VLENBOE9YLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FFbkMsQ0FoUFUsQ0FBUCxDQWtQUCxFQUNELGFBRU8sUUFBUyxDQUFBLE1BQVQsRUFBbUIsQ0FFekIsR0FBSSxDQUFBLGNBQWMsQ0FBRyxDQUFDLFFBQUQsQ0FBVSxZQUFWLENBQXVCLGlCQUF2QixDQUF5QyxjQUF6QyxDQUF3RCxVQUF4RCxDQUFtRSxVQUFuRSxDQUE4RSxnQkFBOUUsQ0FDcEIsU0FBVSxNQUFWLENBQWlCLFVBQWpCLENBQTRCLGVBQTVCLENBQTRDLFlBQTVDLENBQXlELFFBQXpELENBQWtFLFFBQWxFLENBQTJFLGNBQTNFLENBQTJGLHlFQUUzRjtBQUNBLE1BQU0sQ0FBQyxVQUFQLENBQW1CLFVBQW5CLENBQ0E7QUFDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBZCxDQUFzQixDQUNyQixHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixRQUFyQixDQUFnQyxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsUUFBakIsQ0FBMkIsR0FBSSxDQUFBLElBQUosQ0FBUyxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsUUFBMUIsQ0FBM0IsQ0FDaEMsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsUUFBckIsQ0FBZ0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLFFBQWpCLENBQTJCLEdBQUksQ0FBQSxJQUFKLENBQVMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLFFBQTFCLENBQTNCLENBQ2hDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLEtBQXJCLENBQThCLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixLQUFqQixDQUF3QixHQUFJLENBQUEsSUFBSixDQUFTLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixLQUExQixDQUF4QixDQUM5QixDQUVELEdBQUksQ0FBQSxTQUFTLENBQUcsSUFBaEIsQ0FFQSxHQUFJLE1BQU0sQ0FBQyxRQUFQLEVBQWlCLFNBQXJCLENBQWdDLENBQy9CLEdBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBaEIsRUFBd0IsQ0FBNUIsQ0FDRyxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFDLEVBQUQsQ0FBaEIsQ0FDSCxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUFWLENBQ0EsQ0FKRCxJQUtDLENBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBQyxFQUFELENBQWhCLENBRUQ7QUFDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBZCxDQUFzQixDQUNyQixHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixLQUFyQixDQUE2QixNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQXlDLEdBQUksQ0FBQSxJQUFKLENBQVMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLEtBQTFCLENBQXpDLENBQzdCLENBRUQsTUFBTSxDQUFDLE9BQVAsQ0FBaUIsTUFBakIsQ0FDQSxNQUFNLENBQUMsSUFBUCxDQUFjLE1BQU0sQ0FBQyxJQUFQLENBQWUsU0FBN0IsQ0FDQSxNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBc0IsRUFBdEIsQ0FDQSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUFYLENBQU4sQ0FBd0IsQ0FBQyxLQUFNLE1BQU0sQ0FBQyxFQUFkLENBQWtCLFlBQVksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUF4QyxDQUF4QixDQUVBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLFNBQTFCLEVBQXVDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixJQUFyRSxDQUNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixFQUF6QixDQUVGLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixLQUFqQixDQUNNLEdBQUksTUFBTSxDQUFDLFNBQVAsRUFBa0IsU0FBdEIsQ0FDSixNQUFNLENBQUMsU0FBUCxDQUFpQixFQUFqQixDQUVGLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixNQUFwQixDQUE2QixDQUM1QixDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sTUFBTSxDQUFDLElBQWIsQ0FBa0IsU0FBUyxDQUFDLFVBQTVCLENBQXVDLElBQUksQ0FBQyxXQUE1QyxDQUF3RCxJQUFJLENBQUMscUJBQTdELENBRDRCLENBRTVCLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxNQUFNLENBQUMsSUFBYixDQUFrQixTQUFTLENBQUMsVUFBNUIsQ0FBdUMsSUFBSSxDQUFDLFNBQTVDLENBQXNELElBQUksQ0FBQyxvQkFBM0QsQ0FGNEIsQ0FHNUIsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLE1BQU0sQ0FBQyxJQUFiLENBQWtCLFNBQVMsQ0FBQyxTQUE1QixDQUFzQyxJQUFJLENBQUMsWUFBM0MsQ0FBd0QsSUFBSSxDQUFDLFlBQTdELENBSDRCLENBSTVCLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxNQUFNLENBQUMsU0FBYixDQUF1QixTQUFTLENBQUMsY0FBakMsQ0FBZ0QsSUFBSSxDQUFDLDZCQUFyRCxDQUFtRixJQUFJLENBQUMsY0FBeEYsQ0FKNEIsQ0FBN0IsQ0FRTSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBcUMsU0FBUyxVQUFULENBQ3JDLENBQ0ksSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBWCxDQUFOLENBQXFCLElBQXJCLEVBQTJCLFNBQTNCLENBQXFDLE1BQXJDLENBQTRDLE1BQTNELENBQWtFLENBQUMsRUFBbkUsQ0FBdUUsQ0FDbkUsR0FBSSxDQUFBLEdBQUcsQ0FBRyxVQUFVLENBQUMsR0FBWCxDQUFlLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBM0MsRUFBNkMsT0FBN0MsQ0FBcUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBWCxDQUFOLENBQXFCLElBQXJCLEVBQTJCLFNBQTNCLENBQXFDLE1BQXJDLENBQTRDLENBQTVDLEVBQStDLFNBQXBHLENBQVYsQ0FDQSxHQUFJLEdBQUcsRUFBRSxDQUFULENBQVksTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBWCxDQUFOLENBQXFCLElBQXJCLEVBQTJCLFNBQTNCLENBQXFDLE1BQXJDLENBQTRDLENBQTVDLEVBQStDLElBQS9DLENBQXNELFVBQVUsQ0FBQyxHQUFELENBQVYsQ0FBZ0IsSUFBdEUsQ0FDZixDQUVELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLEdBQW1CLFNBQW5CLEVBQWdDLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixHQUFtQixJQUF2RCxDQUErRCxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBWCxDQUFOLENBQXFCLElBQXJCLEVBQTJCLFNBQTNCLENBQXFDLE1BQXJDLENBQTRDLENBQTVDLENBQWpCLENBQWdFO0FBQy9ILEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFkLENBQXVCLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixLQUFqQixDQUF3QixNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLENBQXhCLENBQ3ZCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLEVBQVgsQ0FBTixDQUFxQixJQUFyQixFQUEyQixTQUEzQixDQUFxQyxXQUFyQyxDQUFpRCxJQUFqRCxDQUNILENBVkQsQ0FZQSxHQUFJLE1BQU0sQ0FBQyxpQkFBUCxFQUE0QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBMUQsQ0FBMkUsQ0FDakUsR0FBSSxDQUFBLEtBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNFLFlBQVksQ0FBQyxjQUFiLENBQTRCLGdCQUE1QixDQUE2QyxLQUE3QyxFQUFtRCxJQUFuRCxDQUF3RCxTQUFVLElBQVYsQ0FBZ0IsQ0FDNUQsR0FBSSxDQUNIO0FBQ0EsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBWCxDQUFOLENBQXFCLElBQXJCLEVBQTJCLFNBQTNCLENBQXFDLGNBQXJDLENBQW9ELElBQUksQ0FBQyxJQUF6RCxFQUVBLENBQUMsTUFBTyxHQUFQLENBQVksQ0FDVixTQUNILENBQ1osQ0FSRCxFQVNYLENBSUwsR0FBSSxDQUFBLGNBQWMsQ0FBRSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBQTFCLENBQXdDLHFCQUF4QyxDQUE4RCxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTlGLENBQTZHLFNBQTdHLENBQXBCLENBQ0EsR0FBSSxDQUFBLGtCQUFrQixDQUFHLGNBQWMsQ0FBQyxPQUFmLENBQXVCLElBQWhELENBR0EsR0FBSSxDQUFBLGFBQWEsQ0FBRyxRQUFoQixDQUFBLGFBQWdCLENBQVMsSUFBVCxDQUNwQixDQUNRLGNBQWMsQ0FBQyxPQUFmLENBQXVCLGVBQXZCLENBQXlDLElBQXpDLENBQ0EsY0FBYyxDQUFDLE9BQWYsQ0FBdUIsZUFBdkIsQ0FBdUMsY0FBdkMsRUFDUCxDQUpELENBTUEsR0FBSSxDQUFBLG9CQUFvQixDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixjQUFyQixDQUFvQyxjQUFwQyxDQUFtRCxhQUFuRCxDQUEzQixDQUlBLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBMkIsVUFDM0IsQ0FDRjtBQUVBLEdBQUksTUFBTSxDQUFDLFVBQVAsQ0FBa0IsT0FBbEIsQ0FBMEIsVUFBMUIsQ0FBcUMsR0FBckMsRUFBMEMsT0FBOUMsQ0FBdUQ7QUFDdEQsR0FBSyxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEdBQTJDLElBQWhELENBQXVELE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsRUFBeUMsRUFBekMsQ0FBNEM7QUFFOUYsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsR0FBbUIscUJBQW5CLEVBQTRDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsQ0FBaEQsQ0FBeUYsQ0FDcEYsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixFQUF3QyxRQUF4QyxDQUFpRCxFQUFqRCxDQUFvRCxDQUFwRCxDQUFzRCxDQUF0RCxDQUF3RCxDQUF4RCxFQUNKLENBRUQsTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLGNBQXpCLENBQXdDLGNBQXhDLENBQXdELE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsQ0FBeEQsRUFDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBZCxDQUFzQixDQUMxQixHQUFLLENBQUEsTUFBTSxPQUFOLEVBQUEsTUFBTSxTQUFOLFFBQUEsTUFBTSxDQUFFLFFBQVIsQ0FBaUIsTUFBakIsRUFBd0IsQ0FBN0IsQ0FDSSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsS0FBakIsQ0FBeUIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUF6QixDQUNKLENBQ0MsQ0FoQkQsQ0FtQkEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxpQkFBVixDQUE0QixTQUFTLE9BQVQsQ0FDNUIsQ0FDTSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixHQUFtQixxQkFBbkIsRUFBNEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLE9BQWpCLElBQTRCLFNBQXhFLEVBQXFGLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixPQUFqQixJQUE0QixJQUFySCxDQUE4SCxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsT0FBakIsRUFBMEIsUUFBMUIsQ0FBbUMsRUFBbkMsQ0FBc0MsQ0FBdEMsQ0FBd0MsQ0FBeEMsQ0FBMEMsQ0FBMUMsRUFDbkksQ0FIRCxDQUtJLEdBQUksQ0FBQSxXQUFXLENBQUcsUUFBZCxDQUFBLFdBQWMsQ0FBUyxJQUFULENBQWUsQ0FDekIsR0FBSSxJQUFJLEVBQUUsU0FBVixDQUFxQixNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQTBDLElBQTFDLENBQzVCLENBRkQsQ0FJQSxHQUFJLGNBQUEsTUFBTSxDQUFDLEVBQVAseUVBQVcsVUFBWCxzRUFBdUIsZ0JBQXZCLEdBQXlDLFNBQXpDLEVBQXNELGNBQUEsTUFBTSxDQUFDLEVBQVAseUVBQVcsVUFBWCxzRUFBdUIsZ0JBQXZCLEdBQXlDLElBQW5HLENBQ0EsQ0FDSSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixnQkFBckIsRUFBdUMsRUFBM0MsQ0FBK0MsQ0FDM0MsR0FBSSxDQUFBLGVBQWUsQ0FBRyxRQUFRLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBeEMsQ0FDQSxHQUFJLENBQUEsaUJBQWlCLENBQUcsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBQTFCLENBQXdDLEdBQXhDLENBQTRDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixrQkFBakUsQ0FBb0YsZ0JBQXBGLENBQXFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixnQkFBbEosQ0FDQSxHQUFJLENBQUEsUUFBUSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixpQkFBckIsQ0FBdUMsZUFBdkMsQ0FBdUQsY0FBdkQsQ0FBc0UsV0FBdEUsQ0FBZixDQUNBLEdBQUksQ0FBQSxLQUFLLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxRQUFYLENBQW9CLGlCQUFwQixDQUFaLENBQ0EsR0FBSSxLQUFLLENBQUMsTUFBTixFQUFjLElBQWxCLENBQXdCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsRUFBMEMsS0FBSyxDQUFDLEtBQWhELENBQzNCLENBQ0osQ0FJTixNQUFNLENBQUMsZ0JBQVAsQ0FBMEIsU0FBUyxLQUFULENBQWdCO0FBQzFDLENBQ0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixNQUFwQixDQUEyQixLQUEzQixDQUFqQixDQUVNLEdBQUksTUFBTSxDQUFDLFFBQVAsRUFBa0IsU0FBbEIsRUFBK0IsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBaEIsQ0FBdUIsQ0FBMUQsQ0FBNkQsQ0FDekQsR0FBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEdBQXlDLFNBQTdDLENBQ0wsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLEtBQWpCLENBQXVCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsQ0FBdkIsQ0FBK0Q7QUFDN0QsQ0FFUCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixFQUFqQixFQUFxQixDQUF6QixDQUNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixjQUFqQixDQUFnQyxJQUFoQyxDQUFxQztBQUR2QyxJQUdDLENBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLGNBQWpCLENBQWdDLEtBQWhDLENBQ0MsQ0FiRCxDQWdCQyxNQUFNLENBQUMsa0JBQVAsQ0FBNEIsU0FBUyxLQUFULENBQzVCLENBQ0ksTUFBTSxDQUFDLEtBQVAsQ0FBYSx3QkFBYixDQUFzQyxLQUF0QyxFQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLG1CQUFqQixDQUFxQyxNQUFNLENBQUMsS0FBUCxDQUFhLHdCQUFiLEVBQXJDLENBQ0EsR0FBSSxLQUFKLENBQVksTUFBTSxDQUFDLEtBQVAsQ0FBYSxxQkFBYixHQUNmLENBTEQsQ0FPRixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBb0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLDJCQUFYLENBQUQsQ0FBMEMsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyx5QkFBWCxDQUExQyxDQUFpRixDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLHlCQUFYLENBQWpGLENBQXBCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLENBQXdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxVQUFYLENBQUQsQ0FBeUIsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxjQUFYLENBQXpCLENBQXFELENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsT0FBWCxDQUFyRCxDQUF4QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUF3QixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsY0FBWCxDQUFELENBQTZCLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsWUFBWCxDQUE3QixDQUF1RCxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLFlBQVgsQ0FBdkQsQ0FBaUYsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxXQUFYLENBQWpGLENBQXhCLENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQXNCLFVBQ3RCLENBQ0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLEVBQWpCLENBQ0EsR0FBSyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBeUIsT0FBekIsRUFBa0MsU0FBbEMsRUFBK0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLE9BQXpCLEVBQWtDLElBQXRGLENBQTZGLENBQzNGLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBeUIsT0FBekIsQ0FBaUMsSUFBcEQsQ0FDRCxDQUVELEdBQUssTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLE9BQXpCLEVBQWtDLFNBQWxDLEVBQStDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixPQUF6QixFQUFrQyxJQUF0RixDQUEyRixDQUN6RixHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixFQUFrQixFQUF0QixDQUEwQixDQUMvQixNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLEdBQWpCLENBQXFCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixPQUF6QixDQUFpQyxJQUF6RSxDQUNNLENBRkQsSUFFTyxDQUNMLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBeUIsT0FBekIsQ0FBaUMsSUFBcEQsQ0FDRCxDQUNGLENBRUQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsRUFBbUIsRUFBdkIsQ0FBMEIsQ0FDeEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixDQUFsQixFQUFxQixJQUF4QyxDQUNELENBQ0osQ0FsQkQsQ0FvQkUsR0FBSSxDQUFBLFFBQUosQ0FDQSxHQUFJLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUE5QixDQUErQyxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsa0NBQW5CLENBQVgsQ0FBL0MsSUFDSyxDQUFBLFFBQVEsQ0FBRyxjQUFjLENBQUMsR0FBZixDQUFtQixxQ0FBbkIsQ0FBWCxDQUVMLFFBQVEsQ0FBQyxNQUFULENBQWdCLFFBQVEsQ0FBQyxRQUFELENBQVIsQ0FBbUIsTUFBbkIsQ0FBaEIsRUFFQSxHQUFJLGNBQWMsQ0FBQyxPQUFmLENBQXVCLGlCQUF2QixFQUEwQyxDQUE5QyxDQUFpRCxDQUNsRCxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQTBDLGNBQWMsQ0FBQyxPQUFmLENBQXVCLFFBQWpFLENBQ0UsQ0FFRCxHQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsR0FBeUMsU0FBN0MsQ0FBd0QsTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLGtCQUF6QixDQUE0QyxjQUE1QyxDQUE0RCxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLENBQTVELEVBRzNELENBN0xxQixDQUFyQixDQTZMRTtBQUdLLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVaLFVBQVUsQ0FBRSxjQUZBLENBR0YsSUFBSSxDQUFHLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE2QixJQUE3QixDQUNoQiwyQkFFUyxLQUFLLENBQUMsRUFBTixDQUFTLGNBQVQsQ0FBMEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLFlBQVgsQ0FBRCxDQUEwQixDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLFlBQVgsQ0FBMUIsQ0FBbUQsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxZQUFYLENBQW5ELENBQTRFLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsVUFBWCxDQUE1RSxDQUExQixDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBVCxDQUEwQixDQUFFLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsT0FBWCxDQUFvQixJQUFJLENBQUMsT0FBekIsQ0FBRixDQUM1QixDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLFVBQVgsQ0FENEIsQ0FFN0I7QUFDQyxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLGNBQVgsQ0FINEIsQ0FBMUIsQ0FNRCxHQUFJLENBQUEsYUFBYSxDQUFHLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBVCxDQUF3QixHQUF4QixDQUE0QixTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsSUFBRixDQUFPLFFBQVAsRUFBUCxDQUEyQixDQUFyRSxFQUF1RSxPQUF2RSxDQUErRSxLQUFLLENBQUMsRUFBTixDQUFTLGNBQVQsQ0FBd0IsT0FBdkcsQ0FBcEIsQ0FFQSxHQUFJLGFBQWEsRUFBRSxDQUFuQixDQUFxQixDQUNKLEtBQUssQ0FBQyxFQUFOLENBQVMsT0FBVCxDQUFpQixLQUFLLENBQUMsRUFBTixDQUFTLGNBQVQsQ0FBd0IsYUFBeEIsQ0FBakIsQ0FDaEIsQ0FFRCxHQUFJLENBQUEsYUFBYSxDQUFHLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBVCxDQUF3QixHQUF4QixDQUE0QixTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsSUFBRixDQUFPLFFBQVAsRUFBUCxDQUEyQixDQUFyRSxFQUF1RSxPQUF2RSxDQUErRSxLQUFLLENBQUMsRUFBTixDQUFTLGNBQVQsQ0FBd0IsT0FBdkcsQ0FBcEIsQ0FFQSxHQUFJLGFBQWEsRUFBRSxDQUFuQixDQUFxQixDQUNuQixLQUFLLENBQUMsRUFBTixDQUFTLGNBQVQsQ0FBd0IsT0FBeEIsQ0FBZ0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUFULENBQXdCLGFBQXhCLENBQWhDLENBQ0EsQ0FFRixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBcUIsSUFBckIsQ0FFQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsR0FDRztBQUVGLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBVCxDQUEwQixVQUMxQixDQUNLLEtBQUssQ0FBQyxTQUFOLENBQWdCLG1CQUFoQixDQUFzQyxJQUF0QyxDQUNBLEtBQUssQ0FBQyxLQUFOLENBQVksa0JBQVosQ0FBK0IsS0FBSyxDQUFDLEVBQXJDLENBQXdDLEtBQUssQ0FBQyxVQUE5QyxFQUNELENBSkosQ0FNSCxLQUFLLENBQUMsRUFBTixDQUFTLGFBQVQsQ0FBdUIsVUFDN0IsQ0FDWSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsYUFBYixDQUE0QixDQUMxQixHQUFJLEtBQUssQ0FBQyxRQUFOLEVBQWlCLFNBQWpCLEVBQThCLEtBQUssQ0FBQyxRQUFOLENBQWUsTUFBZixDQUFzQixDQUF4RCxDQUEyRCxDQUN2RCxLQUFLLENBQUMsUUFBTixDQUFlLENBQWYsRUFBa0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUEzQixFQUFzQyxHQUFJLENBQUEsSUFBSixFQUF0QyxDQUNILENBQ0gsQ0FDTCxDQVBELENBV0ksR0FBSSxLQUFLLENBQUMsUUFBTixFQUFpQixTQUFqQixFQUE4QixLQUFLLENBQUMsUUFBTixDQUFlLE1BQWYsQ0FBc0IsQ0FBeEQsQ0FDQSxDQUNNLEdBQUksS0FBSyxDQUFDLFFBQU4sQ0FBZSxDQUFmLEVBQWtCLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBM0IsR0FBd0MsSUFBeEMsRUFBZ0QsS0FBSyxDQUFDLFFBQU4sQ0FBZSxDQUFmLEVBQWtCLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBM0IsR0FBdUMsRUFBM0YsQ0FBZ0csQ0FDOUYsS0FBSyxDQUFDLFFBQU4sQ0FBZSxDQUFmLEVBQWtCLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBM0IsRUFBd0MsR0FBSSxDQUFBLElBQUosQ0FBVSxLQUFLLENBQUMsUUFBTixDQUFlLENBQWYsRUFBa0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUEzQixDQUFWLENBQXhDLENBQ0YsQ0FDTCxDQUVELEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFzQixVQUN2QixDQUNLLEtBQUssQ0FBQyxFQUFOLENBQVMsWUFBVCxDQUF3QixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBTixDQUFlLENBQWYsRUFBa0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUEzQixDQUFQLENBQXhCLENBQ0gsQ0FIRCxDQUtBLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxpQkFBVCxFQUE4QixDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsUUFBNUMsQ0FBc0QsS0FBSyxDQUFDLFFBQU4sQ0FBZSxDQUFmLEVBQWtCLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBM0IsRUFBd0MsR0FBSSxDQUFBLElBQUosd0JBQVUsS0FBSyxDQUFDLEVBQU4sQ0FBUyxZQUFuQixnREFBVSxzQkFBdUIsS0FBakMsQ0FBeEMsQ0FDdEQsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLGFBQWIsQ0FBNEIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxhQUFULEdBRzdCLENBL0RFLENBQVAsQ0FpRUgsRUFHTCxRQUFTLENBQUEsZUFBVCxDQUEwQixNQUExQixDQUFrQyxDQUVqQyxNQUFNLENBQUMsUUFBUCxDQUFnQixpQkFBaEIsQ0FDRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsTUFBcEIsQ0FBMkIsQ0FBc0IsZ0VBQ25ELENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxNQUFNLENBQUMsS0FBYixDQUFtQixJQUFJLENBQUMsYUFBeEIsQ0FBc0MsSUFBSSxDQUFDLHFCQUEzQyxDQUQ2QixDQUU3QixDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sTUFBTSxDQUFDLEtBQWIsQ0FBbUIsSUFBSSxDQUFDLFdBQXhCLENBQW9DLElBQUksQ0FBQyxvQkFBekMsQ0FGNkIsQ0FHN0IsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLE1BQU0sQ0FBQyxJQUFiLENBQWtCLElBQUksQ0FBQyxXQUF2QixDQUFtQyxJQUFJLENBQUMsWUFBeEMsQ0FINkIsQ0FHK0I7QUFDNUQsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLE1BQU0sQ0FBQyxTQUFiLENBQXVCLElBQUksQ0FBQywyQkFBNUIsQ0FBd0QsSUFBSSxDQUFDLGNBQTdELENBSjZCLENBQTNCLENBT0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsU0FBMUIsRUFBdUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLElBQXJFLENBQTJFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixFQUF6QixDQUV2RSxNQUFNLENBQUMsSUFBUCxDQUFZLGFBQVosQ0FFQSxNQUFNLENBQUMsa0JBQVAsQ0FBNEIsVUFBVyxDQUM5QixHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBZCxDQUFzQixNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsS0FBakIsQ0FBdUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFqQyxDQUM5QixDQUZELENBSUwsTUFBTSxDQUFDLGdCQUFQLENBQTBCLFNBQVMsS0FBVCxDQUFnQixDQUV6QyxHQUFJLENBQUEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixNQUFwQixDQUEyQixRQUEzQixDQUFvQyxFQUExQyxDQUVBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE1BQXBCLENBQTJCLFFBQTNCLENBQW9DLEVBQXBDLEVBQXdDLENBQTVDLENBQWlELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixNQUFwQixDQUEyQixjQUEzQixDQUEwQyxJQUExQyxDQUErQztBQUFoRyxJQUNNLENBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE1BQXBCLENBQTJCLGNBQTNCLENBQTBDLEtBQTFDLENBRU4sQ0FQRCxDQVNELE1BQU0sQ0FBQyxLQUFQLENBQWUsVUFBVyxDQUN4QixNQUFNLENBQUMsRUFBUCxDQUFZLEdBQUksQ0FBQSxJQUFKLEVBQVosQ0FDRCxDQUZELENBR0EsTUFBTSxDQUFDLEtBQVAsR0FFQSxNQUFNLENBQUMsS0FBUCxDQUFlLFVBQVcsQ0FDeEIsTUFBTSxDQUFDLEVBQVAsQ0FBWSxJQUFaLENBQ0QsQ0FGRCxDQUlBLE1BQU0sQ0FBQyxhQUFQLENBQXVCLENBQ3JCLFdBQVcsQ0FBRSxXQURRLENBRXJCLE9BQU8sQ0FBRSxHQUFJLENBQUEsSUFBSixFQUZZLENBR3JCLFNBQVMsQ0FBRSxJQUhVLENBQXZCLENBTUEsTUFBTSxDQUFDLFdBQVAsQ0FBcUIsQ0FDbkIsWUFBWSxDQUFFLFFBREssQ0FFbkIsVUFBVSxDQUFFLElBRk8sQ0FHbkIsT0FBTyxDQUFFLEdBQUksQ0FBQSxJQUFKLEVBSFUsQ0FJbkIsV0FBVyxDQUFFLENBSk0sQ0FBckIsQ0FPQTtBQUNBLFFBQVMsQ0FBQSxRQUFULENBQWtCLElBQWxCLENBQXdCLENBQ3RCLEdBQUksQ0FBQSxJQUFJLENBQUcsSUFBSSxDQUFDLElBQWhCLENBQ0UsSUFBSSxDQUFHLElBQUksQ0FBQyxJQURkLENBRUEsTUFBTyxDQUFBLElBQUksR0FBSyxLQUFULEdBQW1CLElBQUksQ0FBQyxNQUFMLEtBQWtCLENBQWxCLEVBQXVCLElBQUksQ0FBQyxNQUFMLEtBQWtCLENBQTVELENBQVAsQ0FDRCxDQUVELE1BQU0sQ0FBQyxTQUFQLENBQW1CLFVBQVcsQ0FDNUIsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsT0FBckIsQ0FBK0IsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsT0FBckIsQ0FBK0IsSUFBL0IsQ0FBc0MsR0FBSSxDQUFBLElBQUosRUFBckUsQ0FDQSxNQUFNLENBQUMsV0FBUCxDQUFtQixPQUFuQixDQUE2QixNQUFNLENBQUMsYUFBUCxDQUFxQixPQUFsRCxDQUNELENBSEQsQ0FLQSxNQUFNLENBQUMsU0FBUCxHQUVBLE1BQU0sQ0FBQyxLQUFQLENBQWUsVUFBVyxDQUN4QixNQUFNLENBQUMsTUFBUCxDQUFjLE1BQWQsQ0FBdUIsSUFBdkIsQ0FDRCxDQUZELENBSUEsTUFBTSxDQUFDLEtBQVAsQ0FBZSxVQUFXLENBQ3hCLE1BQU0sQ0FBQyxNQUFQLENBQWMsTUFBZCxDQUF1QixJQUF2QixDQUE2QjtBQUM5QixDQUZELENBSUEsTUFBTSxDQUFDLGdCQUFQLENBQTBCLFVBQVcsQ0FDcEMsR0FBSSxDQUFBLEVBQUUsQ0FBQyxNQUFQLENBQ0EsR0FBSSxDQUFBLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBVCxDQUVDLE1BQU0sQ0FBQyxNQUFQLENBQWMsTUFBZCxDQUF1QixJQUF2QixDQUNELENBTEQsQ0FRQSxNQUFNLENBQUMsT0FBUCxDQUFpQixTQUFTLElBQVQsQ0FBZSxLQUFmLENBQXNCLEdBQXRCLENBQTJCLENBQzFDLE1BQU0sQ0FBQyxFQUFQLENBQVksR0FBSSxDQUFBLElBQUosQ0FBUyxJQUFULENBQWUsS0FBZixDQUFzQixHQUF0QixDQUFaLENBQ0QsQ0FGRCxDQUlBLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsMkJBQVgsQ0FBRCxDQUEwQyxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLHlCQUFYLENBQTFDLENBQWlGLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMseUJBQVgsQ0FBakYsQ0FBcEIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsQ0FBd0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLFVBQVgsQ0FBRCxDQUF5QixDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLGNBQVgsQ0FBekIsQ0FBcUQsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxPQUFYLENBQXJELENBQXhCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLENBQXdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxjQUFYLENBQUQsQ0FBNkIsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxZQUFYLENBQTdCLENBQXVELENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsWUFBWCxDQUF2RCxDQUFpRixDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLFdBQVgsQ0FBakYsQ0FBeEIsQ0FFQSxNQUFNLENBQUMsU0FBUCxDQUFtQixVQUNuQixDQUNJLE1BQU0sQ0FBQyxNQUFQLENBQWMsRUFBZCxDQUNBLEdBQUssTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLE9BQXpCLEVBQWtDLFNBQWxDLEVBQStDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixPQUF6QixFQUFrQyxJQUF0RixDQUEyRixDQUN6RixNQUFNLENBQUMsTUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBeUIsT0FBekIsQ0FBaUMsSUFBakQsQ0FDRCxDQUVELEdBQUssTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLE9BQXpCLEVBQWtDLFNBQWxDLEVBQStDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixPQUF6QixFQUFrQyxJQUF0RixDQUNBLENBQ0UsR0FBSSxNQUFNLENBQUMsTUFBUCxFQUFlLEVBQW5CLENBQXVCLENBQ3RCLE1BQU0sQ0FBQyxNQUFQLENBQWdCLE1BQU0sQ0FBQyxNQUFQLENBQWMsR0FBZCxDQUFrQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBeUIsT0FBekIsQ0FBaUMsSUFBbkUsQ0FDQSxDQUZELElBRU8sQ0FDTCxNQUFNLENBQUMsTUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBeUIsT0FBekIsQ0FBaUMsSUFBakQsQ0FDRCxDQUNGLENBRUQsR0FBSSxNQUFNLENBQUMsTUFBUCxFQUFnQixFQUFwQixDQUF3QixDQUN0QixNQUFNLENBQUMsTUFBUCxDQUFnQixNQUFNLENBQUMsT0FBUCxDQUFlLENBQWYsQ0FBaEIsQ0FDRCxDQUNKLENBbkJELENBb0JBLE1BQU0sQ0FBQyxlQUFQLENBQXlCLENBQUMsWUFBRCxDQUF6QixDQUVBLE1BQU0sQ0FBQyxNQUFQLENBQWdCLENBQ2QsTUFBTSxDQUFFLEtBRE0sQ0FBaEIsQ0FJQSxNQUFNLENBQUMsTUFBUCxDQUFnQixDQUNkLE1BQU0sQ0FBRSxLQURNLENBQWhCLENBSUEsR0FBSSxDQUFBLFFBQVEsQ0FBRyxHQUFJLENBQUEsSUFBSixFQUFmLENBQ0EsUUFBUSxDQUFDLE9BQVQsQ0FBaUIsUUFBUSxDQUFDLE9BQVQsR0FBcUIsQ0FBdEMsRUFDQSxHQUFJLENBQUEsYUFBYSxDQUFHLEdBQUksQ0FBQSxJQUFKLEVBQXBCLENBQ0EsYUFBYSxDQUFDLE9BQWQsQ0FBc0IsUUFBUSxDQUFDLE9BQVQsR0FBcUIsQ0FBM0MsRUFFQSxNQUFNLENBQUMsTUFBUCxDQUFnQixDQUNkLENBQ0UsSUFBSSxDQUFFLFFBRFIsQ0FDbUIsTUFBTSxDQUFFLE1BRDNCLENBRGMsQ0FHZCxDQUNFLElBQUksQ0FBRSxhQURSLENBQ3VCLE1BQU0sQ0FBRSxXQUQvQixDQUhjLENBQWhCLENBT0EsUUFBUyxDQUFBLFdBQVQsQ0FBcUIsSUFBckIsQ0FBMkIsQ0FDekIsR0FBSSxDQUFBLElBQUksQ0FBRyxJQUFJLENBQUMsSUFBaEIsQ0FDRSxJQUFJLENBQUcsSUFBSSxDQUFDLElBRGQsQ0FFQSxHQUFJLElBQUksR0FBSyxLQUFiLENBQW9CLENBQ2xCLEdBQUksQ0FBQSxVQUFVLENBQUcsR0FBSSxDQUFBLElBQUosQ0FBUyxJQUFULEVBQWUsUUFBZixDQUF3QixDQUF4QixDQUEwQixDQUExQixDQUE0QixDQUE1QixDQUE4QixDQUE5QixDQUFqQixDQUVBLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBRyxDQUFiLENBQWdCLENBQUMsQ0FBRyxNQUFNLENBQUMsTUFBUCxDQUFjLE1BQWxDLENBQTBDLENBQUMsRUFBM0MsQ0FBK0MsQ0FDN0MsR0FBSSxDQUFBLFVBQVUsQ0FBRyxHQUFJLENBQUEsSUFBSixDQUFTLE1BQU0sQ0FBQyxNQUFQLENBQWMsQ0FBZCxFQUFpQixJQUExQixFQUFnQyxRQUFoQyxDQUF5QyxDQUF6QyxDQUEyQyxDQUEzQyxDQUE2QyxDQUE3QyxDQUErQyxDQUEvQyxDQUFqQixDQUVBLEdBQUksVUFBVSxHQUFLLFVBQW5CLENBQStCLENBQzdCLE1BQU8sQ0FBQSxNQUFNLENBQUMsTUFBUCxDQUFjLENBQWQsRUFBaUIsTUFBeEIsQ0FDRCxDQUNGLENBQ0YsQ0FDRCxNQUFPLEVBQVAsQ0FDRCxDQUNGLEVBQ0QsYUFFTyxRQUFTLENBQUEsd0JBQVQsRUFBcUMsQ0FFcEMsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUYsV0FBVyxDQUFFLG9EQUZYLENBR0YsVUFBVSxDQUFFLG9CQUFTLFlBQVQsQ0FBc0Isb0JBQXRCLENBQTJDLFVBQTNDLENBQXNELGlCQUF0RCxDQUF3RSxDQUFFLENBSHBGLENBSUYsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUVsQyxDQU5BLENBQVAsQ0FTUCxFQUNELGFBRU8sUUFBUyxDQUFBLGVBQVQsRUFBNEIsQ0FDM0IsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUYsV0FBVyxDQUFFLDJDQUZYLENBR0YsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUVwQyxDQUxFLENBQVAsQ0FPUCxFQUNELGFBRU8sUUFBUyxDQUFBLFVBQVQsRUFBdUIsQ0FDdEIsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBR0YsV0FBVyxDQUFFLHNDQUhYLENBSUYsVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBZ0IsVUFBaEIsQ0FBMkIsZUFBM0IsQ0FBMkMseUJBQTNDLENBQXFFLGNBQXJFLENBQW9GLG9CQUFwRixDQUF5RyxrREFHOUgsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQXNCLENBQ3JCLGtCQUFrQixDQUFFLENBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxLQUFYLENBQUYsQ0FBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxNQUFYLENBQXBCLENBQXVDLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsS0FBWCxDQUF2QyxDQUF5RCxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLEtBQVgsQ0FBekQsQ0FBMkUsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxPQUFYLENBQTNFLENBREMsQ0FFckIsS0FBSyxDQUFFLGVBRmMsQ0FBdEIsQ0FNYSxHQUFJLENBQUEsU0FBUyxDQUFDLENBQ1gsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxVQUFYLENBRFcsQ0FFWCxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLG9CQUFYLENBRlcsQ0FBZCxDQU9iLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLEVBQXFCLFNBQXpCLENBQXFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixFQUFwQixDQUNyQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isa0JBQXBCLENBQXlDLE1BQU0sQ0FBQyxrQkFBaEQsQ0FFQSxNQUFNLENBQUMsU0FBUCxDQUFtQixDQUFDLEtBQUssQ0FBQyxlQUFQLENBQW5CLENBQTJDO0FBRTNDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixFQUFzQyxTQUExQyxDQUFxRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLDBCQUF1QyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsTUFBakUsbUVBQTJFLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixHQUFyRyxDQUF5RztBQUVsSixNQUFNLENBQUMsY0FBUCxDQUF3QixTQUFTLEtBQVQsQ0FDeEIsQ0FDRSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsS0FBcEIsQ0FBMEIsa0JBQTFCLENBQTZDLE1BQU0sQ0FBQyxFQUFwRCxDQUF1RCxLQUF2RCxFQUNELENBSEQsQ0FPVjtBQUNBLEdBQUksQ0FBQSxVQUFVLENBQUcsQ0FBQyxZQUFELENBQWpCLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsRUFBbUIsU0FBdkIsQ0FBa0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLGNBQWMsQ0FBQyxNQUFmLEVBQWxCLENBR2xDLEdBQUksQ0FBQSxnQkFBZ0IsQ0FBRyxDQUN0QixHQUFHLENBQUUsRUFEaUIsQ0FFdkIsT0FBTyxDQUFFLFNBRmMsQ0FHdkIsV0FBVyxDQUFFLFVBSFUsQ0FJdkIsVUFBVSxDQUFFLFlBSlcsQ0FLdkIsUUFBUSxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FMRyxDQU12QixnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsY0FORCxDQU92QixlQUFlLENBQUMsTUFBTSxDQUFDLGFBUEEsQ0FRdkIsTUFBTSxDQUFHLE1BQU0sQ0FBQyxPQVJPLENBU3ZCLFdBQVcsQ0FBQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFUZixDQVV2QixhQUFhLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQVZILENBV3ZCLE1BQU0sQ0FBQyxVQVhnQixDQVl2QixnQkFBZ0IsdUJBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFYLCtDQUFDLHFCQUFxQixnQkFaZixDQUF2QixDQWVBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFvQyx5QkFBeUIsQ0FBQyxjQUExQixDQUF5QyxnQkFBekMsQ0FBcEMsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsT0FBcEIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQWhELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUF0QyxDQUVELEdBQUksTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQTFCLEVBQTZDLElBQWpELENBQXNELENBQ3ZDLG9CQUFvQixDQUFDLHdCQUFyQixDQUE4QyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUE3RSxDQUFrRixNQUFsRixFQUEwRixJQUExRixDQUNJLFNBQVMsSUFBVCxDQUFlLENBQ1gsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGVBQXBCLENBQXNDLElBQUksQ0FBQyxJQUEzQyxDQUNGLENBSE4sQ0FJSyxTQUFTLEtBQVQsQ0FBZSxDQUFJLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUFpRCxDQUp6RSxFQU1YLENBRVAsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixDQUE0QyxTQUFVLFNBQVYsQ0FBcUIsR0FBckIsQ0FDNUMsQ0FDQyxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFjLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBMUIsQ0FBaUMsQ0FBQyxFQUFsQyxDQUFxQyxDQUNwQyxTQUFTLENBQUMsQ0FBRCxDQUFULENBQWUsQ0FDZCxFQUFFLENBQUUsU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLFdBQWEsR0FBYixDQUFtQixLQUFoQyxDQURVLENBRWQsSUFBSSxDQUFFLFNBQVMsQ0FBQyxDQUFELENBQVQsQ0FBYSxXQUFhLEdBQWIsQ0FBbUIsV0FBaEMsQ0FGUSxDQUdDLElBQUksQ0FBRSxTQUFTLENBQUMsQ0FBRCxDQUFULENBQWEsV0FBYSxHQUFiLENBQW1CLE9BQWhDLENBSFAsQ0FBZixDQUtBLENBQ0QsQ0FURCxDQVdBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQiwwRkFBbUMsaUJBQWdCLFFBQWhCLDRJQUEyQjtBQUN6RCxFQUQ4QixDQUN6QixRQUFRLENBQUMsRUFEZ0IsQ0FDZDtBQUNwQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsTUFBaEMsQ0FBdUMsQ0FBdkMsQ0FGa0Msc0JBR2pCLENBQUEsb0JBQW9CLENBQUMsb0JBQXJCLENBQTBDLEVBQTFDLENBSGlCLFFBRzlCLElBSDhCLGVBSWxDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBMkMsSUFBSSxDQUFDLElBQWhELENBQXNELFFBQVEsQ0FBQyxFQUEvRCxFQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixNQUFyQixDQUE4QixJQUE5QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFxQyxJQUFyQyxDQUNBLGVBQUksSUFBSSxDQUFDLElBQVQsK0JBQUksV0FBVyxNQUFmLENBQXVCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFrQyxJQUFJLENBQUMsSUFBdkMsQ0FQVyxzREFBbkMsZ0VBV0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUEwQyxTQUFVLFFBQVYsQ0FBb0IsQ0FDMUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLE1BQXJCLENBQThCLFFBQVEsQ0FBQyxJQUF2QyxDQUNILENBRkQsQ0FNZSxDQWhHRixDQWdHRztBQUVMLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FFbkMsR0FBSSxLQUFLLENBQUMsRUFBVixDQUFjLENBQ1YsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsRUFBdUIsSUFBM0IsQ0FBaUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQXNCLEVBQXRCLENBQXlCO0FBRTFELEtBQUssQ0FBQyxFQUFOLENBQVMsWUFBVCxDQUF3QixJQUF4QixDQUNaLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixxQkFBcEIsQ0FBNEMsS0FBNUMsQ0FFQTtBQUNDO0FBQ0Q7QUFDRDtBQUdVLENBSUYsQ0FwSEUsQ0FBUCxDQXNIUCxFQUNELGFBRU8sUUFBUyxDQUFBLFVBQVQsQ0FBcUIsUUFBckIsQ0FBK0IsQ0FFOUIsTUFBTyxDQUNILFFBQVEsQ0FBRSxJQURQLENBRUgsT0FBTyxDQUFDLENBQUMsT0FBRCxDQUFTLFNBQVQsQ0FGTCxDQUdILFdBQVcsQ0FBRSxzQ0FIVixDQUlILFVBQVUsQ0FBRSxvQkFBUyxNQUFULENBQ1osQ0FFSSxNQUFNLENBQUMsb0JBQVAsQ0FBOEIsU0FBUyxFQUFULENBQVksS0FBWixDQUM5QixDQUNJLEdBQUksQ0FBQSxJQUFJLENBQUcsRUFBRSxDQUFDLE9BQUgsRUFBYyxFQUFFLENBQUMsS0FBNUIsQ0FDQSxHQUFJLENBQUEsR0FBRyxDQUFHLEVBQUUsQ0FBQyxHQUFiLENBRUE7QUFDQSxHQUFJLElBQUksRUFBRSxFQUFOLEdBQWEsRUFBRSxDQUFDLGFBQUgsQ0FBaUIsSUFBakIsRUFBdUIsUUFBdkIsRUFBbUMsRUFBRSxDQUFDLGFBQUgsQ0FBaUIsSUFBakIsRUFBdUIsTUFBdkUsQ0FBSixDQUFtRixDQUMvRTtBQUNBLEVBQUUsQ0FBQyxjQUFILEdBQ0EsR0FBSSxDQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBZixDQUNBLEdBQUksQ0FBQSxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsR0FBcEIsQ0FBd0IsTUFBTSxDQUFDLFVBQS9CLENBQTBDLGVBQTFDLENBQTBELElBQWpFLENBQ0EsR0FBSSxDQUFBLElBQUksQ0FBRyxRQUFRLENBQUMsY0FBVCxDQUF3QixFQUF4QixDQUFYLENBQ0EsR0FBSSxJQUFJLEVBQUUsSUFBVixDQUFnQixJQUFJLENBQUMsS0FBTCxHQUNuQixDQUNEO0FBQ0EsR0FBSSxJQUFJLEVBQUUsRUFBVixDQUFhLENBQ1g7QUFDQyxFQUFFLENBQUMsY0FBSCxHQUNBLEdBQUksQ0FBQSxNQUFJLENBQUMsS0FBSyxDQUFDLENBQWYsQ0FDQSxHQUFJLENBQUEsR0FBRSxDQUFDLE1BQU0sQ0FBQyxZQUFQLENBQW9CLEdBQXBCLENBQXdCLE1BQU0sQ0FBQyxVQUEvQixDQUEwQyxlQUExQyxDQUEwRCxNQUFqRSxDQUNBLEdBQUksQ0FBQSxLQUFJLENBQUcsUUFBUSxDQUFDLGNBQVQsQ0FBd0IsR0FBeEIsQ0FBWCxDQUNBLEdBQUksS0FBSSxFQUFFLElBQVYsQ0FBZ0IsS0FBSSxDQUFDLEtBQUwsR0FDbEIsQ0FDRDtBQUNBLEdBQUksSUFBSSxFQUFFLEVBQVYsQ0FBYSxDQUNYO0FBQ0MsRUFBRSxDQUFDLGNBQUgsR0FDQSxHQUFJLENBQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFmLENBQ0EsR0FBSSxDQUFBLE9BQU8sQ0FBRyxNQUFNLENBQUMsWUFBUCxDQUFvQixHQUFwQixDQUF3QixNQUFNLENBQUMsVUFBL0IsQ0FBMEMsZUFBMUMsQ0FBMEQsSUFBeEUsQ0FDQSxHQUFJLElBQUksRUFBRSxDQUFDLENBQVgsQ0FBYyxPQUFPLENBQUcsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsR0FBcEIsQ0FBd0IsTUFBTSxDQUFDLFVBQS9CLENBQTBDLFFBQXBELENBQ2QsR0FBSSxDQUFBLE1BQUksQ0FBRyxRQUFRLENBQUMsY0FBVCxDQUF3QixPQUF4QixDQUFYLENBRUEsR0FBSSxNQUFJLEVBQUUsSUFBVixDQUFnQixNQUFJLENBQUMsS0FBTCxHQUNsQixDQUNKLENBbENELENBb0NBO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQ2dCLE1BQU0sQ0FBQyxVQUFQLENBQW9CLFNBQVMsRUFBVCxDQUFZLElBQVosQ0FDcEIsQ0FDSSxHQUFJLElBQUksRUFBRSxTQUFWLENBQ0EsQ0FDSSxHQUFJLENBQUMsTUFBTSxDQUFDLFVBQVosQ0FBdUIsQ0FDckIsTUFBTSxDQUFDLFlBQVAsQ0FBcUIsSUFBckIsQ0FDQSxNQUFNLENBQUMsT0FBUCxDQUFlLGFBQWYsQ0FBNkIsTUFBTSxDQUFDLFlBQXBDLEVBQ0E7QUFDQSxHQUFJLENBQUEsT0FBTyxDQUFHLFFBQVEsQ0FBQyxjQUFULENBQXdCLE1BQU0sQ0FBQyxZQUFQLENBQW9CLEdBQXBCLENBQXdCLE1BQU0sQ0FBQyxVQUF2RCxDQUFkLENBQ0EsR0FBSSxFQUFFLEVBQUUsU0FBUixDQUFtQixPQUFPLENBQUMsS0FBUixHQUNuQixNQUFNLENBQUMsVUFBUCxDQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBYixDQUEwQixLQUFLLENBQUMsTUFBTSxDQUFDLE9BQXZDLENBQWxCLEVBQ0QsQ0FQRCxJQVFBLENBQ0UsR0FBSSxFQUFFLEVBQUUsU0FBUixDQUFtQixFQUFFLENBQUMsZUFBSCxHQUNuQixHQUFJLE1BQU0sQ0FBQyxhQUFQLEVBQXNCLElBQXRCLEVBQThCLE1BQU0sQ0FBQyxhQUFQLEVBQXNCLFNBQXBELEVBQWlFLENBQUMsS0FBSyxDQUFDLE9BQU4sQ0FBYyxNQUFNLENBQUMsYUFBckIsQ0FBdEUsQ0FBMkcsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsRUFBckIsQ0FDM0csR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsYUFBUCxDQUFxQixHQUFyQixDQUF5QixTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsRUFBVCxDQUFjLENBQXJELEVBQXVELE9BQXZELENBQStELElBQUksQ0FBQyxFQUFwRSxDQUFWLENBQ0EsR0FBSSxHQUFHLENBQUMsQ0FBUixDQUFXLE1BQU0sQ0FBQyxhQUFQLENBQXFCLElBQXJCLENBQTBCLElBQTFCLEVBQVgsSUFDSyxDQUFBLE1BQU0sQ0FBQyxhQUFQLENBQXFCLE1BQXJCLENBQTRCLEdBQTVCLENBQWdDLENBQWhDLEVBQ0wsTUFBTSxDQUFDLE9BQVAsQ0FBZSxhQUFmLENBQTZCLE1BQU0sQ0FBQyxhQUFwQyxFQUNBLE1BQU0sQ0FBQyxVQUFQLENBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFiLENBQTJCLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBeEMsQ0FBbEIsRUFDRCxDQUVKLENBQ0osQ0F2QkQsQ0F5QkMsTUFBTSxDQUFDLGVBQVAsQ0FBeUIsVUFDMUIsQ0FDSSxHQUFJLENBQUEsT0FBTyxDQUFHLFFBQVEsQ0FBQyxjQUFULENBQXdCLE1BQU0sQ0FBQyxZQUFQLENBQW9CLEdBQXBCLENBQXdCLE1BQU0sQ0FBQyxVQUF2RCxDQUFkLENBRUEsTUFBTSxDQUFDLE9BQVAsQ0FBZSxXQUFmLEdBRUEsR0FBSSxDQUFBLFVBQVUsQ0FBRyxRQUFRLENBQUMsY0FBVCxDQUF3QixNQUFNLENBQUMsWUFBUCxDQUFvQixHQUFwQixDQUF3QixNQUFNLENBQUMsVUFBL0IsQ0FBMEMsUUFBbEUsQ0FBakIsQ0FDQSxHQUFJLFVBQVUsRUFBRSxJQUFoQixDQUFzQixVQUFVLENBQUMsS0FBWCxHQUV6QixDQVRBLENBV0QsTUFBTSxDQUFDLFVBQVAsQ0FBb0IsU0FBUyxLQUFULENBQ3BCLENBQ0ksTUFBTSxDQUFDLGFBQVAsQ0FBcUIsTUFBckIsQ0FBNEIsS0FBNUIsQ0FBa0MsQ0FBbEMsRUFDQSxNQUFNLENBQUMsT0FBUCxDQUFlLGFBQWYsQ0FBNkIsTUFBTSxDQUFDLGFBQXBDLEVBRUgsQ0FMRCxDQU9BLE1BQU0sQ0FBQyxTQUFQLENBQW1CLFVBQ25CLENBRVEsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsSUFBdEIsQ0FDQTtBQUNBLE1BQU0sQ0FBQyxPQUFQLENBQWUsYUFBZixDQUE2QixJQUE3QixFQUVQLENBUEQsQ0FVQSxNQUFNLENBQUMsU0FBUCxDQUFtQixTQUFTLEtBQVQsQ0FDbkIsQ0FDSSxHQUFJLEtBQUssRUFBRSxTQUFYLENBQ0EsQ0FDSSxNQUFNLENBQUMsYUFBUCxDQUF1QixLQUF2QixDQUNBLEdBQUksTUFBTSxDQUFDLE1BQVAsQ0FBYyxZQUFkLEVBQTRCLFNBQTVCLEVBQXlDLE1BQU0sQ0FBQyxNQUFQLENBQWMsWUFBZCxFQUE0QixFQUF6RSxDQUE2RSxNQUFNLENBQUMscUJBQVAsQ0FBK0IsTUFBTSxDQUFDLFdBQVAsRUFBL0IsQ0FBN0UsSUFDSyxDQUFBLE1BQU0sQ0FBQyxxQkFBUCxDQUErQixPQUFPLENBQUMsSUFBUixDQUFhLE1BQU0sQ0FBQyxhQUFQLENBQXFCLEtBQXJCLENBQTJCLENBQTNCLENBQTZCLEVBQTdCLENBQWIsQ0FBL0IsQ0FDUixDQUVKLENBVEQsQ0FVQyxNQUFNLENBQUMsaUJBQVAsQ0FBMkIsVUFDNUIsQ0FDSSxHQUFJLE1BQU0sQ0FBQyxhQUFQLEVBQXNCLFNBQTFCLENBQ0EsQ0FDSSxHQUFJLE1BQU0sQ0FBQyxNQUFQLENBQWMsWUFBZCxFQUE0QixTQUE1QixFQUF5QyxNQUFNLENBQUMsTUFBUCxDQUFjLFlBQWQsRUFBNEIsRUFBekUsQ0FBNkUsTUFBTSxDQUFDLHFCQUFQLENBQStCLE1BQU0sQ0FBQyxXQUFQLEVBQS9CLENBQTdFLElBQ0ssQ0FBQSxNQUFNLENBQUMscUJBQVAsQ0FBK0IsT0FBTyxDQUFDLElBQVIsQ0FBYSxNQUFNLENBQUMsYUFBUCxDQUFxQixLQUFyQixDQUEyQixDQUEzQixDQUE2QixFQUE3QixDQUFiLENBQS9CLENBQ1IsQ0FFSixDQVJBLENBU0QsTUFBTSxDQUFDLFdBQVAsQ0FBcUIsVUFDckIsQ0FDSSxHQUFJLE1BQU0sQ0FBQyxNQUFQLENBQWMsWUFBZCxFQUE0QixFQUFoQyxDQUFvQyxNQUFPLENBQUEsT0FBTyxDQUFDLElBQVIsQ0FBYSxNQUFNLENBQUMsYUFBUCxDQUFxQixLQUFyQixDQUEyQixDQUEzQixDQUE2QixFQUE3QixDQUFiLENBQVAsQ0FBcEMsSUFDSSxDQUNBLE1BQU0sQ0FBQyxxQkFBUCxDQUE2QixFQUE3QixDQUNBLEdBQUksQ0FBQSxJQUFJLENBQUcsRUFBWCxDQUNBLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFQLENBQXFCLE1BQXBDLENBQTJDLENBQUMsRUFBNUMsQ0FDQSxDQUNJLEdBQUksTUFBTSxDQUFDLGFBQVAsQ0FBcUIsQ0FBckIsRUFBd0IsSUFBeEIsQ0FBNkIsV0FBN0IsR0FBMkMsT0FBM0MsQ0FBbUQsTUFBTSxDQUFDLE1BQVAsQ0FBYyxZQUFkLENBQTJCLFdBQTNCLEVBQW5ELEVBQTZGLENBQUMsQ0FBbEcsQ0FBcUcsSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFNLENBQUMsYUFBUCxDQUFxQixDQUFyQixDQUFWLEVBQ3hHLENBQ0QsTUFBTyxDQUFBLE9BQU8sQ0FBQyxJQUFSLENBQWEsSUFBYixDQUFQLENBQ0gsQ0FDSixDQVpELENBYUEsTUFBTSxDQUFDLEtBQVAsQ0FBZSxTQUFTLEVBQVQsQ0FDZixDQUNJLEdBQUksQ0FBQyxNQUFNLENBQUMsVUFBWixDQUF1QixDQUNuQixHQUFJLEVBQUUsRUFBRSxTQUFSLENBQW1CLEVBQUUsQ0FBQyxjQUFILEdBQ25CLE1BQU0sQ0FBQyxTQUFQLEdBQ0gsQ0FDSixDQU5ELENBU0E7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBRWEsQ0EzSkUsQ0E0SkgsS0FBSyxDQUFDLENBRU4sYUFBYSxDQUFDLEdBRlIsQ0FHTixVQUFVLENBQUMsR0FITCxDQUlOLFlBQVksQ0FBQyxHQUpQLENBS04sVUFBVSxDQUFDLEdBTEwsQ0FNTixVQUFVLENBQUMsR0FOTCxDQU9OLGFBQWEsQ0FBQyxJQVBSLENBUU4sVUFBVSxDQUFDLEdBUkwsQ0FTTixPQUFPLENBQUUsR0FUSCxDQVVOLFlBQVksQ0FBQyxHQVZQLENBV04sV0FBVyxDQUFDLEdBWE4sQ0FZTixJQUFJLENBQUMsSUFaQyxDQTVKSCxDQTJLSCxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQTZCLEtBQTdCLENBQW9DLENBRXRDLEtBQUssQ0FBQyxJQUFOLENBQWEsS0FBSyxDQUFDLENBQUQsQ0FBbEIsQ0FDQSxLQUFLLENBQUMsT0FBTixDQUFlLEtBQUssQ0FBQyxDQUFELENBQXBCLENBQ0EsS0FBSyxDQUFDLFlBQU4sQ0FBcUIsSUFBckIsQ0FBMkI7QUFDM0IsS0FBSyxDQUFDLGNBQU4sQ0FBcUIsT0FBckIsQ0FDQSxLQUFLLENBQUMsTUFBTixDQUFhLEVBQWIsQ0FFQSxHQUFJLEtBQUssQ0FBQyxhQUFOLEVBQXFCLFNBQXpCLENBQW9DLEtBQUssQ0FBQyxxQkFBTixDQUE4QixPQUFPLENBQUMsSUFBUixDQUFhLEtBQUssQ0FBQyxhQUFOLENBQW9CLEtBQXBCLENBQTBCLENBQTFCLENBQTRCLEVBQTVCLENBQWIsQ0FBOUIsQ0FFcEMsS0FBSyxDQUFDLE9BQU4sQ0FBYyxDQUFDLFVBQVUsQ0FBRSxLQUFLLENBQUMsU0FBbkIsQ0FBZCxFQUNBLEtBQUssQ0FBQyxZQUFOLENBQW1CLENBQUMsZUFBZSxDQUFFLEtBQUssQ0FBQyxVQUF4QixDQUFuQixFQUNBLEtBQUssQ0FBQyxXQUFOLENBQWtCLENBQUMsY0FBYyxDQUFFLEtBQUssQ0FBQyxTQUF2QixDQUFsQixFQUVBLEdBQUksQ0FBQyxLQUFLLENBQUMsVUFBWCxDQUNBLENBQ0ksR0FBSSxLQUFLLENBQUMsYUFBTixFQUFxQixFQUFyQixFQUEyQixLQUFLLENBQUMsYUFBTixFQUFxQixTQUFoRCxFQUE2RCxLQUFLLENBQUMsYUFBTixFQUFxQixJQUF0RixDQUE0RixLQUFLLENBQUMsWUFBTixDQUFtQixLQUFLLENBQUMsYUFBekIsQ0FDNUYsS0FBSyxDQUFDLE9BQU4sQ0FBYyxhQUFkLENBQTRCLEtBQUssQ0FBQyxZQUFsQyxFQUNILENBSkQsSUFLQSxDQUNJLEtBQUssQ0FBQyxPQUFOLENBQWMsYUFBZCxDQUE0QixLQUFLLENBQUMsYUFBbEMsRUFDSCxDQUVELEtBQUssQ0FBQyxlQUFOLENBQXdCLEtBQXhCLENBQ0EsR0FBSSxLQUFLLENBQUMsVUFBVixDQUFzQixLQUFLLENBQUMsY0FBTixDQUFxQixPQUFyQixDQUV0QixHQUFJLENBQUEsWUFBWSxDQUFHLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxzQkFBUixDQUErQixVQUEvQixDQUFuQixDQUdBLE9BQU8sQ0FBQyxPQUFSLENBQWdCLFlBQWhCLEVBQThCLEVBQTlCLENBQWlDLG1CQUFqQyxDQUFzRCxTQUFTLEtBQVQsQ0FBZSxDQUNsRSxRQUFRLENBQUMsVUFBVSxDQUNqQixLQUFLLENBQUMsZUFBTixDQUF3QixJQUF4QixDQUNBLEdBQUksQ0FBQSxTQUFTLENBQUcsS0FBSyxDQUFDLFlBQU4sQ0FBbUIsR0FBbkIsQ0FBdUIsS0FBSyxDQUFDLFVBQTdCLENBQXdDLFFBQXhELENBQ0EsR0FBSSxDQUFBLFdBQVcsQ0FBRyxRQUFRLENBQUMsY0FBVCxDQUF3QixTQUF4QixDQUFsQixDQUNBLEdBQUksV0FBVyxFQUFFLElBQWpCLENBQXVCLFdBQVcsQ0FBQyxLQUFaLEdBQ3ZCLENBTE0sQ0FBUixDQU1GLENBUEQsRUFTQSxPQUFPLENBQUMsT0FBUixDQUFnQixZQUFoQixFQUE4QixFQUE5QixDQUFpQyxvQkFBakMsQ0FBdUQsU0FBUyxLQUFULENBQWUsQ0FDbkUsUUFBUSxDQUFDLFVBQVUsQ0FDakIsS0FBSyxDQUFDLGVBQU4sQ0FBd0IsS0FBeEIsQ0FFQSxDQUhNLENBQVIsQ0FJRixDQUxELEVBT0MsUUFBUSxDQUFDLFVBQVUsQ0FDUixLQUFLLENBQUMsZUFBTixDQUF3QixLQUF4QixDQUVILENBSEEsQ0FBUixDQUtBLEtBQUssQ0FBQyxrQkFBTixDQUEyQixTQUFTLElBQVQsQ0FDNUIsQ0FFSTtBQUNBLEdBQUksSUFBSSxFQUFFLFNBQVYsQ0FDQSxDQUNJLEdBQUksSUFBSSxDQUFDLEVBQUwsRUFBUyxTQUFiLENBQ0EsQ0FDSSxHQUFJLENBQUEsS0FBSyxDQUFHLEtBQUssQ0FBQyxPQUFOLENBQWMsV0FBMUIsQ0FDQSxHQUFJLEtBQUssRUFBRSxTQUFYLENBQ0EsQ0FDSSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBckIsQ0FBNEIsQ0FBQyxFQUE3QixDQUNBLENBQ0ksR0FBSSxLQUFLLENBQUMsQ0FBRCxDQUFMLEVBQVUsU0FBZCxDQUNBLENBQ0ksR0FBSSxLQUFLLENBQUMsQ0FBRCxDQUFMLENBQVMsRUFBVCxFQUFhLElBQUksQ0FBQyxFQUF0QixDQUEwQixNQUFPLEtBQVAsQ0FDN0IsQ0FDSixDQUNKLENBQ0osQ0FDSixDQUVELE1BQU8sTUFBUCxDQUNILENBdkJBLENBd0JKLENBclBFLENBQVAsQ0F3UFAsRUFDRCxhQUVPLFFBQVMsQ0FBQSxrQkFBVCxDQUE2QixRQUE3QixDQUF1QyxDQUV0QyxNQUFPLENBQ0gsUUFBUSxDQUFFLElBRFAsQ0FFSCxPQUFPLENBQUMsQ0FBQyxPQUFELENBQVMsU0FBVCxDQUZMLENBR0gsV0FBVyxDQUFFLDhDQUhWLENBSUgsVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBZ0IsVUFBaEIsQ0FBMkIsUUFBM0IsQ0FBb0MsUUFBcEMsQ0FBNkMsUUFBN0MsQ0FDWiwrQ0FDSSxNQUFNLENBQUMsSUFBUCxDQUFZLG9CQUFaLENBQ0EsTUFBTSxDQUFDLE1BQVAsQ0FBYyxDQUFDLFlBQVksQ0FBQyxFQUFkLENBQWQsQ0FDWixHQUFJLE1BQU0sQ0FBQyxhQUFQLEVBQXNCLFNBQTFCLENBQXNDLE1BQU0sQ0FBQyxhQUFQLENBQXFCLEVBQXJCLENBRXRDLEdBQUksVUFBVSxDQUFDLE9BQVgsQ0FBbUIsTUFBbkIsRUFBMkIsU0FBL0IsQ0FDQSxVQUFVLENBQUMsT0FBWCxDQUFtQixNQUFuQix3QkFBNEIsVUFBNUIsU0FBNEIsVUFBNUIsc0NBQTRCLFVBQVUsQ0FBRSxPQUF4Qyw4Q0FBNEIsb0JBQXFCLE1BQWpELCtEQUEyRCxFQUEzRCxDQUNBLFVBQVUsQ0FBQyxPQUFYLENBQW1CLE1BQW5CLENBQTJCLE1BQU0sQ0FBQyxHQUFsQyxFQUF5QyxNQUF6QyxDQUNZLEdBQUksTUFBTSxDQUFDLFlBQVAsR0FBc0IsU0FBMUIsQ0FBcUMsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsRUFBdEIsQ0FDckMsR0FBSSxNQUFNLENBQUMsYUFBUCxFQUFzQixTQUExQixDQUFxQyxNQUFNLENBQUMsYUFBUCxDQUFxQixFQUFyQixDQUNqRCxNQUFNLENBQUMsU0FBUCxDQUFtQixDQUFHLFFBQVEsQ0FBRSxLQUFiLENBQW5CLENBSUQsR0FBSSxDQUFBLGdCQUFnQiwyd0RBQXBCLENBc0JBLEdBQUksQ0FBQSxRQUFRLENBQUcsQ0FDZCxTQUFTLENBQUcsQ0FERSxDQUNDLE1BQU0sQ0FBRyxDQURWLENBQ2EsU0FBUyxDQUFHLEVBRHpCLENBQzZCLE1BQU0sQ0FBRyxFQUR0QyxDQUMyQyxRQUFRLENBQUcsRUFEdEQsQ0FDMEQsU0FBUyxDQUFHLEVBRHRFLENBQzJFLE9BQU8sQ0FBRyxFQURyRixDQUMwRixVQUFVLENBQUcsRUFEdkcsQ0FDMkcsU0FBUyxDQUFHLEVBRHZILENBQWYsQ0FJQSxNQUFNLENBQUMsU0FBUCxDQUFtQixTQUFVLE1BQVYsQ0FBa0IsQ0FFcEM7QUFDQztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUNJLENBbENELENBcUNELFFBQVEsQ0FBQyxFQUFULENBQWEsU0FBYixDQUF3QixTQUFTLEdBQVQsQ0FBYyxDQUVyQyxPQUFPLENBQUMsR0FBUixDQUFhLHNCQUF1QixNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFyRCxFQUNBLE9BQU8sQ0FBQyxHQUFSLENBQVksR0FBWixFQUNBLEdBQUksR0FBRyxDQUFDLEdBQUosRUFBVSxXQUFkLENBQTRCLENBQzNCLE9BQU8sQ0FBQyxHQUFSLENBQVksV0FBWixFQUNBLFFBQVEsQ0FBQyxhQUFULENBQXVCLGFBQXZCLENBQXFDLEdBQUksQ0FBQSxhQUFKLENBQWtCLFVBQWxCLENBQThCLENBQUcsR0FBRyxDQUFFLEtBQVIsQ0FBOUIsQ0FBckMsRUFDQSxDQUVELEdBQUksR0FBRyxDQUFDLEdBQUosRUFBVSxRQUFWLEVBQXNCLEdBQUcsQ0FBQyxHQUFKLEVBQVUsT0FBcEMsQ0FBOEMsQ0FDN0MsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsR0FBbEIsRUFDQSxRQUFRLENBQUMsY0FBVCxDQUF3QixtQkFBbUIsTUFBTSxDQUFDLEdBQWxELEVBQXVELEtBQXZELENBQTZELENBQUUsWUFBWSxDQUFFLElBQWhCLENBQTdELEVBQ0EsT0FBTyxDQUFDLEdBQVIsQ0FBWSw4QkFBOEIsTUFBTSxDQUFDLEdBQWpELEVBQ0EsQ0FFRCxDQWZELEVBaUJBLE1BQU0sQ0FBQyxPQUFQLENBQWlCLFNBQVUsTUFBVixDQUFrQixDQUNsQztBQUNBLE9BQU8sQ0FBQyxHQUFSLENBQVksVUFBWixFQUNBLE9BQU8sQ0FBQyxHQUFSLENBQVksTUFBTSxDQUFDLE1BQW5CLEVBQ0MsR0FBSSxDQUFFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQXZCLENBQWlDLENBQ2hDLE9BQU8sQ0FBQyxHQUFSLENBQVksbUJBQXFCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWxELEVBQ0EsQ0FDRixDQVBELENBVUUsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsU0FBQyxhQUFELENBQW1CLENBQzFDLEdBQUksQ0FBQSxNQUFNLENBQUMsOE5BQVgsQ0FFQSxHQUFJLENBQUEsZUFBZSxDQUFHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTRCLFNBQTVCLENBQXVDLFFBQTdELENBQ0EsR0FBSSxhQUFKLENBQW1CLGFBQWEsQ0FBQyxPQUFkLENBQXVCLFNBQUMsSUFBRCxDQUFVLENBQ25ELE1BQU0sQ0FBRyxNQUFNLDBGQUVMLElBQUksQ0FBQyxJQUZBLHlHQUlLLElBQUksQ0FBQyxFQUpWLGlPQUtvSSxlQUxwSSwrR0FBZixDQVNBLENBVmtCLEVBV25CLE1BQU8sQ0FBQSxNQUFQLENBQ0EsQ0FoQkQsQ0FvQlksTUFBTSxDQUFDLFNBQVAsQ0FBbUIsU0FBUyxJQUFULENBQWMsS0FBZCxDQUNuQixDQUNYLEdBQUssTUFBTSxDQUFDLFVBQVAsQ0FBa0IsSUFBSSxDQUFDLEVBQXZCLENBQUwsQ0FBaUMsQ0FBRTtBQUNsQyxNQUFNLENBQUMsVUFBUCxDQUFrQixJQUFJLENBQUMsRUFBdkIsRUFBNEIsS0FBNUIsQ0FDa0IsR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsYUFBUCxDQUFxQixHQUFyQixDQUF5QixTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsRUFBVCxDQUFjLENBQXJELEVBQXVELE9BQXZELENBQStELE1BQU0sQ0FBQyxhQUFQLENBQXFCLEtBQXJCLEVBQTRCLEVBQTNGLENBQVYsQ0FDQSxHQUFJLEdBQUcsRUFBRSxDQUFULENBQVksTUFBTSxDQUFDLGFBQVAsQ0FBcUIsTUFBckIsQ0FBNEIsR0FBNUIsQ0FBZ0MsQ0FBaEMsRUFDZixDQUpoQixJQUtBLENBQUc7QUFDRixNQUFNLENBQUMsVUFBUCxDQUFrQixJQUFJLENBQUMsRUFBdkIsRUFBNEIsSUFBNUIsQ0FDQSxNQUFNLENBQUMsYUFBUCxDQUFxQixJQUFyQixrQkFBOEIsSUFBOUIsR0FDZSxDQUNoQixNQUFNLENBQUMsY0FBUCxDQUFzQixTQUF0QixDQUFrQyxNQUFNLENBQUMsY0FBUCxDQUFzQixNQUFNLENBQUMsYUFBN0IsQ0FBbEMsQ0FDQSxNQUFNLENBQUMsVUFBUCxDQUFtQixDQUFDLElBQUksQ0FBRSxNQUFNLENBQUMsYUFBZCxDQUE2QixLQUFLLENBQUUsRUFBcEMsQ0FBbkIsRUFDYztBQUNGLENBZEQsQ0FpQkEsTUFBTSxDQUFDLFVBQVAsQ0FBb0IsU0FBUyxLQUFULENBQ3BCLENBRVg7QUFDQSxHQUFJLEtBQUssQ0FBQyxNQUFOLENBQWEsU0FBYixDQUF1QixRQUF2QixDQUFnQyxVQUFoQyxDQUFKLENBQWlELENBQ2hELEtBQUssQ0FBQyxlQUFOLEdBQ0EsR0FBSSxDQUFBLEdBQUcsQ0FBRyxLQUFLLENBQUMsU0FBTixDQUFnQixPQUFoQixDQUF3QixJQUF4QixDQUE2QixLQUFLLENBQUMsTUFBTixDQUFhLFVBQWIsQ0FBd0IsVUFBeEIsQ0FBbUMsVUFBbkMsQ0FBOEMsVUFBOUMsQ0FBeUQsUUFBdEYsQ0FBZ0csS0FBSyxDQUFDLE1BQU4sQ0FBYSxVQUFiLENBQXdCLFVBQXhCLENBQW1DLFVBQW5JLENBQVYsQ0FBeUo7QUFDekosR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFZLENBQ1gsR0FBRyxDQUFHLEdBQUcsQ0FBQyxDQUFWLENBQVk7QUFDWixHQUFJLENBQUEsT0FBTyxDQUFHLE1BQU0sQ0FBQyxhQUFQLENBQXFCLEdBQXJCLEVBQTBCLEVBQXhDLENBQ0EsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsT0FBbEIsRUFBNEIsS0FBNUIsQ0FDQSxNQUFNLENBQUMsYUFBUCxDQUFxQixNQUFyQixDQUE0QixHQUE1QixDQUFnQyxDQUFoQyxFQUNBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFNBQXRCLENBQWtDLE1BQU0sQ0FBQyxjQUFQLENBQXNCLE1BQU0sQ0FBQyxhQUE3QixDQUFsQyxDQUNBLE1BQU0sQ0FBQyxVQUFQLENBQW1CLENBQUMsSUFBSSxDQUFFLE1BQU0sQ0FBQyxhQUFkLENBQTZCLEtBQUssQ0FBRSxFQUFwQyxDQUFuQixFQUNBLENBQ0QsT0FDQSxDQUVjLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBckIsQ0FBK0I7QUFDOUMsMEJBQ0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsS0FBNUIsQ0FDQSxRQUFRLENBQUMsQ0FBRCxDQUFSLENBQVksc0JBQVosQ0FBbUMsZUFBbkMsRUFBb0QsQ0FBcEQsRUFBdUQsS0FBdkQsQ0FBNkQsVUFBN0QsQ0FBMEUsU0FBMUUsQ0FDQSxRQUFRLENBQUMsQ0FBRCxDQUFSLENBQVksc0JBQVosQ0FBbUMsYUFBbkMsRUFBa0QsQ0FBbEQsRUFBcUQsS0FBckQsQ0FBMkQsVUFBM0QsQ0FBd0UsUUFBeEUsQ0FIRCwwQ0FJZ0IsUUFBUSxDQUFDLENBQUQsQ0FBUixDQUFZLGdCQUFaLENBQTZCLGNBQTdCLENBSmhCLGFBSUMsc0RBQVMsQ0FBQSxFQUFULGNBQTZELEVBQUUsQ0FBQyxLQUFILENBQVMsVUFBVCxDQUFzQixRQUF0QixDQUE3RCxDQUpELHVEQUtDLEdBQUksdUJBQUEsVUFBVSxDQUFDLE9BQVgsb0VBQW9CLDJCQUFwQixHQUFtRCxNQUFNLENBQUMsR0FBOUQsQ0FBb0UsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsMkJBQW5CLENBQStDLElBQS9DLENBRXBFLENBUmMsSUFTTSxDQUFFO0FBQ3RCLFVBQVUsQ0FBQyxPQUFYLENBQW1CLDJCQUFuQixDQUFnRCxNQUFNLENBQUMsR0FBdkQsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixJQUE1QixDQUZvQiwwQ0FHTCxRQUFRLENBQUMsQ0FBRCxDQUFSLENBQVksZ0JBQVosQ0FBNkIsY0FBN0IsQ0FISyxhQUdwQixzREFBUyxDQUFBLEdBQVQsY0FBNkQsR0FBRSxDQUFDLEtBQUgsQ0FBUyxVQUFULENBQXNCLFNBQXRCLENBQTdELENBSG9CLHVEQUlwQixRQUFRLENBQUMsQ0FBRCxDQUFSLENBQVksc0JBQVosQ0FBbUMsZUFBbkMsRUFBb0QsQ0FBcEQsRUFBdUQsS0FBdkQsQ0FBNkQsVUFBN0QsQ0FBMEUsUUFBMUUsQ0FDQSxRQUFRLENBQUMsQ0FBRCxDQUFSLENBQVksc0JBQVosQ0FBbUMsYUFBbkMsRUFBa0QsQ0FBbEQsRUFBcUQsS0FBckQsQ0FBMkQsVUFBM0QsQ0FBd0UsU0FBeEUsQ0FFQSxDQUNXLENBbkNELENBcUNBLE1BQU0sQ0FBQyxXQUFQLENBQXFCLFNBQVMsSUFBVCxDQUNyQixDQUNDLEdBQUksQ0FBQSxJQUFKLENBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFWLENBQ0EsR0FBSSxNQUFNLENBQUMsTUFBWCxDQUFtQixJQUFJLENBQUcsSUFBSSxDQUFFLElBQU4sQ0FBVyxJQUFJLENBQUMsRUFBaEIsQ0FBbUIsR0FBMUIsQ0FFbkIsTUFBTyxDQUFBLElBQVAsQ0FDQSxDQVBELENBU0EsTUFBTSxDQUFDLGlCQUFQLENBQTJCLFVBQVU7QUFDckMsQ0FDSSxTQUNBLEdBQUksQ0FBQSxHQUFKLENBQ0EsR0FBSSxNQUFNLENBQUMsYUFBUCxFQUFzQixTQUExQixDQUFxQyxDQUM5QixJQUFJLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBVixDQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBUCxDQUFxQixNQUFuQyxDQUEwQyxDQUFDLEVBQTNDLENBQThDLENBQzNDLEdBQUcsQ0FBRyxNQUFNLENBQUMsYUFBUCxDQUFxQixHQUFyQixDQUF5QixTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsRUFBVCxDQUFjLENBQXJELEVBQXVELE9BQXZELENBQStELE1BQU0sQ0FBQyxhQUFQLENBQXFCLENBQXJCLEVBQXdCLEVBQXZGLENBQU4sQ0FDQTtBQUNBLEdBQUksR0FBRyxFQUFFLENBQUwsRUFBVSxNQUFNLENBQUMsYUFBUCxDQUFxQixHQUFyQixFQUEwQixFQUExQixFQUE4QixJQUE1QyxDQUFpRCxDQUM3QyxNQUFNLENBQUMsYUFBUCxDQUFxQixHQUFyQixFQUE0QixNQUFNLENBQUMsYUFBUCxDQUFxQixDQUFyQixDQUE1QixDQUNILENBQ0gsQ0FDUCxDQUNKLENBYkQsQ0FpQlosUUFBUSxDQUFDLE1BQVQsQ0FBZ0IsUUFBUSxDQUFDLGdCQUFELENBQVIsQ0FBMkIsTUFBM0IsQ0FBaEIsRUFHQSxHQUFJLENBQUMsUUFBUSxDQUFDLElBQVQsQ0FBYyxZQUFkLENBQTJCLFVBQTNCLENBQUwsQ0FBOEM7QUFDOUMsQ0FDQyxRQUFRLENBQUMsSUFBVCxDQUFjLFlBQWQsQ0FBMkIsVUFBM0IsQ0FBdUMsTUFBTSxDQUFDLEdBQTlDLEVBRUEsUUFBUSxDQUFDLGdCQUFULENBQTBCLE9BQTFCLENBQW1DO0FBQ2xDLFNBQVMsQ0FBVCxDQUFXLDBCQUNWLEdBQUksQ0FBQSxXQUFXLHVCQUFHLFVBQVUsQ0FBQyxPQUFkLCtDQUFHLHFCQUFvQiwyQkFBdEMsQ0FDQSxHQUFJLENBQUEsY0FBYyxDQUFJLFFBQVEsQ0FBQyxjQUFULENBQXdCLG1CQUFxQixXQUE3QyxDQUF0QixDQUVBLEdBQUssY0FBYyxFQUFJLEVBQUMsY0FBRCxTQUFDLGNBQUQsV0FBQyxjQUFjLENBQUUsVUFBaEIsQ0FBMkIsUUFBM0IsQ0FBb0MsQ0FBQyxDQUFDLE1BQXRDLENBQUQsQ0FBdkIsQ0FBd0U7QUFDeEUsZ0RBQ0M7QUFDQSxjQUFjLENBQUMsc0JBQWYsQ0FBc0MsZUFBdEMsRUFBdUQsQ0FBdkQsRUFBMEQsS0FBMUQsQ0FBZ0UsVUFBaEUsQ0FBNkUsU0FBN0UsQ0FDQSxjQUFjLENBQUMsc0JBQWYsQ0FBc0MsYUFBdEMsRUFBcUQsQ0FBckQsRUFBd0QsS0FBeEQsQ0FBOEQsVUFBOUQsQ0FBMkUsUUFBM0UsQ0FIRCwwQ0FLZ0IsY0FBYyxDQUFDLGdCQUFmLENBQWdDLGNBQWhDLENBTGhCLGFBS0Msc0RBQVMsQ0FBQSxFQUFULGNBQWdFLEVBQUUsQ0FBQyxLQUFILENBQVMsVUFBVCxDQUFzQixRQUF0QixDQUFoRSxDQUxELHVEQU9DLEdBQUksQ0FBQSxVQUFVLHVCQUFHLFVBQVUsQ0FBQyxPQUFkLHNFQUFHLHFCQUFvQixNQUF2QixnREFBRyxzQkFBNkIsV0FBN0IsQ0FBakIsQ0FDQSxHQUFJLFVBQUosQ0FBZ0IsQ0FDZixVQUFVLENBQUMsVUFBWCxDQUF1QixVQUFLLENBQUMsVUFBVSxDQUFDLFNBQVgsQ0FBcUIsUUFBckIsQ0FBOEIsS0FBOUIsQ0FBcUMsQ0FBbEUsRUFDQSxVQUFVLENBQUMsT0FBWCxHQUNFLENBQ0gsQ0FHRCxDQXJCRixFQXFCRztBQUNILENBRVEsQ0FoUEUsQ0FtUEgsS0FBSyxDQUFFLENBQ2YsYUFBYSxDQUFDLEdBREMsQ0FFZixVQUFVLENBQUMsR0FGSSxDQUdmLFlBQVksQ0FBQyxHQUhFLENBSWYsVUFBVSxDQUFDLEdBSkksQ0FLZixhQUFhLENBQUMsSUFMQyxDQU1mLGFBQWEsQ0FBQyxJQU5DLENBT2YsVUFBVSxDQUFDLEdBUEksQ0FRZixTQUFTLENBQUUsSUFSSSxDQVNmLFlBQVksQ0FBQyxHQVRFLENBVWYsV0FBVyxDQUFDLEdBVkcsQ0FXZixTQUFTLENBQUMsR0FYSyxDQVlmLElBQUksQ0FBQyxJQVpVLENBYWYsTUFBTSxDQUFDLElBYlEsQ0FjZixTQUFTLENBQUMsSUFkSyxDQWVmLGdCQUFnQixDQUFDLElBZkYsQ0FnQmYsWUFBWSxDQUFDLElBaEJFLENBblBKLENBc1FILElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsS0FBOUIsQ0FBcUMsQ0FDdkMsS0FBSyxDQUFDLGNBQU4sQ0FBdUIsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLHNCQUFSLENBQStCLGdCQUEvQixFQUFpRCxDQUFqRCxDQUF2QixDQUNBLEtBQUssQ0FBQyxJQUFOLENBQWEsS0FBSyxDQUFDLENBQUQsQ0FBbEIsQ0FDQSxLQUFLLENBQUMsT0FBTixDQUFlLEtBQUssQ0FBQyxDQUFELENBQXBCLENBQ0EsS0FBSyxDQUFDLFlBQU4sQ0FBcUIsSUFBckIsQ0FBMkI7QUFHM0IsR0FBSSxDQUFDLEtBQUssQ0FBQyxPQUFOLENBQWMsS0FBSyxDQUFDLGFBQXBCLENBQUwsQ0FBeUMsS0FBSyxDQUFDLGFBQU4sQ0FBb0IsRUFBcEIsQ0FHckM7QUFDRSxLQUFLLENBQUMsT0FBTixDQUFjLFFBQWQsQ0FBdUIsT0FBdkIsQ0FBK0IsU0FBUyxLQUFULENBQWdCLENBQzVDLEdBQUksQ0FBQSxLQUFLLENBQUcsSUFBWixDQUNBLEdBQUksS0FBSyxDQUFDLGFBQVYsQ0FBeUIsQ0FDdEIsR0FBSSxDQUFBLEtBQUssT0FBTCxFQUFBLEtBQUssU0FBTCxRQUFBLEtBQUssQ0FBRSxNQUFQLElBQWdCLENBQXBCLENBQXVCLEtBQUssQ0FBRyxLQUFSLENBQ3RCLENBRUYsS0FBSyxDQUFDLE9BQU4sQ0FBYyxZQUFkLENBQTJCLFVBQTNCLENBQXVDLEtBQXZDLEVBQ0YsTUFBTyxDQUFBLEtBQUssQ0FBRyxLQUFILENBQVcsU0FBdkIsQ0FDRixDQVJELEVBVUE7QUFDRSxLQUFLLENBQUMsT0FBTixDQUFjLFdBQWQsQ0FBMEIsT0FBMUIsQ0FBa0MsU0FBUyxLQUFULENBQWdCLENBQ2pELEdBQUksQ0FBQSxLQUFLLENBQUcsSUFBWixDQUNBLEdBQUksS0FBSyxDQUFDLGFBQVYsQ0FBeUIsQ0FDdEIsR0FBSSxDQUFBLEtBQUssT0FBTCxFQUFBLEtBQUssU0FBTCxRQUFBLEtBQUssQ0FBRSxNQUFQLElBQWdCLENBQXBCLENBQXVCLEtBQUssQ0FBRyxLQUFSLENBQ3RCLENBQ0YsS0FBSyxDQUFDLE9BQU4sQ0FBYyxZQUFkLENBQTJCLFVBQTNCLENBQXVDLEtBQXZDLEVBQ0YsTUFBTyxDQUFBLEtBQVAsQ0FDRixDQVBDLEVBV1IsS0FBSyxDQUFDLGtCQUFOLENBQTJCLFVBQVc7QUFDdEMsQ0FDUSxLQUFLLENBQUMsYUFBTixDQUFzQixFQUF0QixDQUNBLEtBQUssQ0FBQyxjQUFOLENBQXFCLFNBQXJCLENBQWtDLEtBQUssQ0FBQyxjQUFOLENBQXFCLEtBQUssQ0FBQyxhQUEzQixDQUFsQyxDQUNBO0FBQ0E7QUFDUCxDQU5ELENBT0EsS0FBSyxDQUFDLFNBQU4sQ0FBa0IsQ0FBQyxVQUFVLENBQUUsS0FBSyxDQUFDLGtCQUFuQixDQUFsQixDQUNBLEtBQUssQ0FBQyxZQUFOLENBQW1CLENBQUMsZUFBZSxDQUFFLEtBQUssQ0FBQyxVQUF4QixDQUFuQixFQUNBLEtBQUssQ0FBQyxXQUFOLENBQWtCLENBQUMsY0FBYyxDQUFFLEtBQUssQ0FBQyxTQUF2QixDQUFsQixFQUNBLEtBQUssQ0FBQyxTQUFOLENBQWdCLENBQUMsWUFBWSxDQUFFLEtBQUssQ0FBQyxPQUFyQixDQUFoQixFQUdWLEtBQUssQ0FBQyxNQUFOLENBQWEsZUFBYixDQUE2QixTQUFTLFFBQVQsQ0FBa0IsUUFBbEIsQ0FBMkIsQ0FFMUQ7QUFDQyxHQUFJLEtBQUssQ0FBQyxVQUFOLEVBQWtCLFNBQXRCLENBQ0EsQ0FDQyxLQUFLLENBQUMsVUFBTixDQUFpQixFQUFqQixDQUVBLEtBQUssQ0FBQyxjQUFOLENBQXFCLFNBQXJCLENBQWtDLEtBQUssQ0FBQyxjQUFOLENBQXFCLFFBQXJCLENBQWxDLENBRUEsR0FBSSxRQUFKLENBQWMsUUFBUSxDQUFDLE9BQVQsQ0FDWixTQUFBLElBQUksQ0FBSSxDQUNSLEtBQUssQ0FBQyxVQUFOLENBQWlCLElBQUksQ0FBQyxFQUF0QixFQUE0QixJQUE1QixDQUNELENBSGEsRUFJZCxDQUVDLENBZkQsRUFpQlE7QUFDVDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFDYSxDQWhWRSxDQUFQLENBbVZQLEVBQ0QsYUFFTyxRQUFTLENBQUEsa0JBQVQsQ0FBNkIsUUFBN0IsQ0FBdUMsVUFBdkMsQ0FBbUQsY0FBbkQsQ0FBbUUsQ0FFbEUsTUFBTyxDQUNILFFBQVEsQ0FBRSxJQURQLENBRUgsT0FBTyxDQUFDLENBQUMsT0FBRCxDQUFTLFNBQVQsQ0FGTCxDQUdILFdBQVcsQ0FBRSw4Q0FIVixDQUlILFVBQVUsQ0FBRSxvQkFBUyxNQUFULENBQWdCLFFBQWhCLENBQXlCLFFBQXpCLENBQWtDLFVBQWxDLENBQThDLGNBQTlDLENBQ1osQ0FDSSxHQUFLLE1BQU0sQ0FBQyxVQUFQLEVBQW1CLFNBQXhCLENBQW1DLE1BQU0sQ0FBQyxVQUFQLENBQW9CLEtBQXBCLENBQ25DLE1BQU0sQ0FBQyxJQUFQLENBQVksb0JBQVosQ0FDQSxNQUFNLENBQUMsTUFBUCxDQUFjLENBQUMsWUFBWSxDQUFDLEVBQWQsQ0FBZCxDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWUsQ0FDUCxhQUFhLENBQUUsRUFEUixDQUVQLFlBQVksQ0FBRSxFQUZQLENBQWYsQ0FNQSxHQUFJLE1BQU0sQ0FBQyxhQUFQLEVBQXNCLFNBQTFCLENBQXFDLE1BQU0sQ0FBQyxhQUFQLENBQXFCLEVBQXJCLENBQ3JDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEtBQWhCLENBR0EsTUFBTSxDQUFDLE1BQVAsQ0FBYyxlQUFkLENBQThCLFNBQVMsUUFBVCxDQUFrQixRQUFsQixDQUEyQixDQUFHO0FBQ3pELEdBQUksUUFBUSxHQUFHLFNBQVgsRUFBeUIsQ0FBQSxRQUFRLE9BQVIsRUFBQSxRQUFRLFNBQVIsUUFBQSxRQUFRLENBQUUsRUFBVixJQUFnQixRQUFoQixTQUFnQixRQUFoQixpQkFBZ0IsUUFBUSxDQUFFLEVBQTFCLENBQTdCLENBQTZELENBQ3pFO0FBQ3NCLE1BQU0sQ0FBQyxpQkFBUCxHQUNKLENBQ1IsQ0FMRCxFQVFBLE1BQU0sQ0FBQyxVQUFQLENBQW9CLFVBQVksQ0FDMUM7QUFDa0IsR0FBSSxNQUFNLENBQUMsVUFBUCxFQUFtQixLQUF2QixDQUE2QixrQ0FFOUMsR0FBSyxnQkFBQSxNQUFNLENBQUMsS0FBUCxzREFBYyxFQUFkLEdBQWtCLEVBQXZCLENBQTRCLENBQUU7QUFDM0IsTUFBTSxDQUFDLEtBQVAsQ0FBYSxhQUFiLENBQTJCLElBQTNCLENBQ0QsTUFBTSxDQUFDLE9BQVAsQ0FBZSxhQUFmLENBQThCLE1BQU0sQ0FBQyxLQUFQLENBQWEsRUFBM0MsRUFDRCxDQUhELElBR1EsSUFBSSxpQkFBQSxNQUFNLENBQUMsS0FBUCx3REFBYyxFQUFkLEdBQWtCLFNBQXRCLENBQWtDLDBDQUN2QyxtQkFBSSxNQUFNLENBQUMsS0FBWCwwREFBSSxlQUFjLGFBQWxCLDBDQUFJLHNCQUE2QixFQUFqQyxDQUFxQyxDQUNwQyxNQUFNLENBQUMsS0FBUCxDQUFhLEVBQWIsQ0FBa0IsTUFBTSxDQUFDLEtBQVAsQ0FBYSxhQUFiLENBQTJCLEVBQTdDLENBQ0EsQ0FFa0IsQ0FMZCxJQUtvQixDQUNILEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsR0FBckIsQ0FBeUIsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUFyRCxFQUF1RCxPQUF2RCxDQUErRCxNQUFNLENBQUMsS0FBUCxDQUFhLEVBQTVFLENBQVYsQ0FDQSxHQUFJLEdBQUcsRUFBRSxDQUFMLEVBQVUsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsR0FBckIsRUFBMEIsRUFBMUIsRUFBOEIsSUFBNUMsQ0FBaUQsQ0FDckMsTUFBTSxDQUFDLEtBQVAsQ0FBYSxhQUFiLENBQTZCLE9BQU8sQ0FBQyxJQUFSLENBQWEsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsR0FBckIsQ0FBYixDQUE3QixDQUNYLENBRUQsTUFBTSxDQUFDLE9BQVAsQ0FBZSxhQUFmLENBQTZCLE1BQU0sQ0FBQyxLQUFQLENBQWEsYUFBMUMsRUFDSCxDQUNKLENBbEJELElBa0JPLENBQ3hCO0FBQ0UsR0FBSSxNQUFNLENBQUMsS0FBUCxDQUFhLGFBQWIsRUFBNEIsSUFBNUIsRUFBb0MsTUFBTSxDQUFDLEtBQVAsQ0FBYSxhQUFiLEVBQTRCLFNBQWhFLEVBQTZFLENBQUMsS0FBSyxDQUFDLE9BQU4sQ0FBYyxNQUFNLENBQUMsS0FBUCxDQUFhLGFBQTNCLENBQWxGLENBQTZILE1BQU0sQ0FBQyxLQUFQLENBQWUsQ0FBQyxhQUFhLENBQUMsRUFBZixDQUFmLENBQzdILE1BQU0sQ0FBQyxPQUFQLENBQWUsYUFBZixDQUE2QixNQUFNLENBQUMsS0FBUCxDQUFhLGFBQTFDLEVBQ2dCLENBRUQsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQVAsQ0FBYSxhQUFuQixDQUFtQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQWhELENBQWxCLEVBQ1AsQ0EzQkQsQ0E2QkEsTUFBTSxDQUFDLE9BQVAsQ0FBaUIsU0FBUyxJQUFULENBQWU7QUFDaEMsQ0FDSSxHQUFJLElBQUksQ0FBQyxFQUFMLEVBQVMsU0FBVCxFQUFzQixJQUFJLENBQUMsRUFBTCxFQUFTLElBQW5DLENBQXlDLE1BQU0sQ0FBQyxLQUFQLENBQWEsYUFBYixDQUEyQixJQUFJLENBQUMsRUFBaEMsQ0FBekMsSUFDSyxDQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsYUFBYixDQUEyQixJQUEzQixDQUNSLENBSkQsQ0FRQSxNQUFNLENBQUMsVUFBUCxDQUFvQixTQUFTLEtBQVQsQ0FDcEIsQ0FDSTtBQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWEsWUFBYixDQUEwQixJQUExQixDQUErQixNQUFNLENBQUMsS0FBUCxDQUFhLGFBQWIsQ0FBMkIsS0FBM0IsQ0FBL0IsRUFDQSxNQUFNLENBQUMsS0FBUCxDQUFhLGFBQWIsQ0FBMkIsTUFBM0IsQ0FBa0MsS0FBbEMsQ0FBd0MsQ0FBeEMsRUFDQSxNQUFNLENBQUMsT0FBUCxDQUFlLGFBQWYsQ0FBNkIsTUFBTSxDQUFDLEtBQVAsQ0FBYSxhQUExQyxFQUVILENBUEQsQ0FTQSxNQUFNLENBQUMsU0FBUCxDQUFtQixVQUNuQixDQUNJO0FBRUksR0FBSSxDQUFBLEdBQUcsQ0FBRyxRQUFRLENBQUMsQ0FBRCxDQUFSLENBQVksb0JBQVosQ0FBaUMsUUFBakMsQ0FBVixDQUNBLEdBQUcsQ0FBQyxDQUFELENBQUgsQ0FBTyxLQUFQLEdBRUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxFQUFiLENBQWtCLElBQWxCLENBQ0E7QUFDQSxNQUFNLENBQUMsT0FBUCxDQUFlLGFBQWYsQ0FBNkIsSUFBN0IsRUFDQSxNQUFNLENBQUMsT0FBUCxDQUFlLFFBQWYsQ0FBMEIsSUFBMUIsQ0FFUCxDQVpELENBZUEsTUFBTSxDQUFDLFNBQVAsQ0FBbUIsU0FBUyxLQUFULENBQWdCO0FBQ25DLENBQ0ksR0FBSSxLQUFLLEVBQUUsU0FBWCxDQUNBLENBQ0ksTUFBTSxDQUFDLGFBQVAsQ0FBdUIsS0FBdkIsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxNQUFQLENBQWMsWUFBZCxFQUE0QixTQUE1QixFQUF5QyxNQUFNLENBQUMsTUFBUCxDQUFjLFlBQWQsRUFBNEIsRUFBekUsQ0FBNkUsTUFBTSxDQUFDLHFCQUFQLENBQStCLE1BQU0sQ0FBQyxXQUFQLEVBQS9CLENBQTdFLElBQ0ssQ0FBQSxNQUFNLENBQUMscUJBQVAsQ0FBK0IsT0FBTyxDQUFDLElBQVIsQ0FBYSxNQUFNLENBQUMsYUFBUCxDQUFxQixLQUFyQixDQUEyQixDQUEzQixDQUE2QixFQUE3QixDQUFiLENBQS9CLENBQ1IsQ0FDSixDQVJELENBV0EsTUFBTSxDQUFDLFdBQVAsQ0FBcUIsU0FBUyxLQUFULENBQ3JCLENBQ0ksTUFBTSxDQUFDLFFBQVAsQ0FBa0IsS0FBbEIsQ0FDQSxHQUFJLENBQUMsS0FBTCxDQUNBLENBQ0ksSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFHLENBQWIsQ0FBZSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQVAsQ0FBYSxZQUFiLENBQTBCLE1BQTNDLENBQWtELENBQUMsRUFBbkQsRUFDSSxNQUFNLENBQUMsS0FBUCxDQUFhLGFBQWIsQ0FBMkIsSUFBM0IsQ0FBZ0MsTUFBTSxDQUFDLEtBQVAsQ0FBYSxZQUFiLENBQTBCLENBQTFCLENBQWhDLEVBREosQ0FFSCxDQUVELE1BQU0sQ0FBQyxLQUFQLENBQWEsWUFBYixDQUEwQixNQUExQixDQUFpQyxDQUFqQyxDQUNILENBVkQsQ0FZQSxNQUFNLENBQUMsYUFBUCxDQUF1QixVQUN2QixDQUNJLE1BQU0sQ0FBQyxRQUFQLENBQWtCLEtBQWxCLENBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBYSxZQUFiLENBQTBCLE1BQTFCLENBQWlDLENBQWpDLENBQ0gsQ0FKRCxDQU1BLE1BQU0sQ0FBQyxpQkFBUCxDQUEyQixVQUFXO0FBQ3RDLHVFQUNHLEdBQUksQ0FBQSxHQUFKLENBQ0E7QUFDWixNQUFNLENBQUMsYUFBUCxDQUFxQixJQUFyQixDQUEwQixjQUFjLENBQUMsYUFBZixDQUE2QixDQUFDLE9BQUQsQ0FBN0IsdUJBQXdDLFVBQVUsQ0FBQyxPQUFuRCxzRUFBd0MscUJBQW9CLFdBQTVELHdFQUF3QyxzQkFBaUMsT0FBekUsaURBQXdDLHVCQUEwQyxJQUFsRixDQUExQixFQUdZLEdBQUssTUFBTSxDQUFDLFVBQVAsRUFBbUIsS0FBeEIsQ0FBaUMsQ0FDeEIsR0FBSyxNQUFNLENBQUMsYUFBUCxFQUF3QixNQUFNLENBQUMsYUFBUCxDQUFxQixNQUFyQixDQUE0QixDQUF6RCxDQUE0RCwyQkFDeEQsR0FBRyxDQUFHLE1BQU0sQ0FBQyxhQUFQLENBQXFCLEdBQXJCLENBQXlCLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBckQsRUFBdUQsT0FBdkQsd0JBQStELE1BQU0sQ0FBQyxhQUF0RSxnREFBK0Qsc0JBQXNCLEVBQXJGLENBQU4sQ0FFQSxHQUFJLEdBQUcsRUFBRSxDQUFMLEVBQVUsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsR0FBckIsRUFBMEIsRUFBMUIsRUFBZ0MsSUFBOUMsQ0FBb0QsQ0FDaEQsTUFBTSxDQUFDLEtBQVAsQ0FBYSxhQUFiLENBQTZCLE1BQU0sQ0FBQyxhQUFQLENBQXFCLEdBQXJCLENBQTdCLENBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBYSxFQUFiLENBQWtCLE1BQU0sQ0FBQyxhQUFQLENBQXFCLEdBQXJCLEVBQTBCLEVBQTVDLENBQ0gsQ0FIRCxJQUlLLENBRUQsTUFBTSxDQUFDLEtBQVAsQ0FBYSxhQUFiLENBQTZCLFNBQTdCLENBQzNCLE1BQU0sQ0FBQyxLQUFQLENBQWEsRUFBYixDQUFrQixTQUFsQixDQUN3QixDQUNKLENBQ1IsQ0FFaEIsR0FBSSxNQUFNLENBQUMsVUFBWCxDQUF3QixDQUNGLE1BQU0sQ0FBQyxLQUFQLENBQWEsYUFBYixDQUEyQixFQUEzQixDQUNBLElBQUksR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFWLENBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFQLENBQXFCLE1BQW5DLENBQTBDLENBQUMsRUFBM0MsQ0FBK0MsQ0FDMUMsR0FBSSxNQUFNLENBQUMsYUFBUCxDQUFxQixDQUFyQixJQUEwQixJQUExQixFQUFrQyxNQUFNLENBQUMsYUFBUCxHQUF1QixTQUF6RCxFQUFzRSxNQUFNLENBQUMsYUFBUCxDQUFxQixNQUFyQixDQUE0QixDQUF0RyxDQUF5RyxDQUMvSCxHQUFHLENBQUcsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsR0FBckIsQ0FBeUIsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUFyRCxFQUF1RCxPQUF2RCxDQUErRCxNQUFNLENBQUMsYUFBUCxDQUFxQixDQUFyQixFQUF3QixFQUF2RixDQUFOLENBRUQsR0FBSSxHQUFHLEVBQUUsQ0FBTCxFQUFVLE1BQU0sQ0FBQyxhQUFQLENBQXFCLEdBQXJCLEVBQTBCLEVBQTFCLEVBQThCLElBQTVDLENBQWlELENBQy9DLE1BQU0sQ0FBQyxLQUFQLENBQWEsYUFBYixDQUEyQixJQUEzQixDQUFnQyxNQUFNLENBQUMsYUFBUCxDQUFxQixHQUFyQixDQUFoQyxFQUNELENBRUQsR0FBSSxNQUFNLENBQUMsS0FBUCxDQUFhLGFBQWIsQ0FBMkIsTUFBM0IsRUFBbUMsQ0FBdkMsQ0FBMEMsTUFBTSxDQUFDLEtBQVAsQ0FBYSxhQUFiLENBQTZCLElBQTdCLENBQ2xCLENBQ0wsQ0FFUCxDQUlKLENBekNELENBNENILENBaktFLENBa0tILEtBQUssQ0FBQyxDQUNGLGFBQWEsQ0FBQyxHQURaLENBRUYsVUFBVSxDQUFDLEdBRlQsQ0FHRixZQUFZLENBQUMsR0FIWCxDQUlGLFVBQVUsQ0FBQyxHQUpULENBS0YsVUFBVSxDQUFDLEdBTFQsQ0FNRixhQUFhLENBQUMsSUFOWixDQU9GLGFBQWEsQ0FBQyxJQVBaLENBUUYsVUFBVSxDQUFDLEdBUlQsQ0FTRixPQUFPLENBQUUsR0FUUCxDQVVGLFlBQVksQ0FBQyxHQVZYLENBV0YsV0FBVyxDQUFDLEdBWFYsQ0FZRixTQUFTLENBQUMsR0FaUixDQWFGLElBQUksQ0FBQyxJQWJILENBY0YsTUFBTSxDQUFDLElBZEwsQ0FlRixTQUFTLENBQUMsSUFmUixDQWxLSCxDQW9MSCxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQTZCLEtBQTdCLENBQW9DLENBRXRDLEtBQUssQ0FBQyxJQUFOLENBQWEsS0FBSyxDQUFDLENBQUQsQ0FBbEIsQ0FDQSxLQUFLLENBQUMsT0FBTixDQUFlLEtBQUssQ0FBQyxDQUFELENBQXBCLENBR0EsS0FBSyxDQUFDLE9BQU4sQ0FBYyxDQUFDLFVBQVUsQ0FBRSxLQUFLLENBQUMsU0FBbkIsQ0FBZCxFQUNBLEtBQUssQ0FBQyxZQUFOLENBQW1CLENBQUMsZUFBZSxDQUFFLEtBQUssQ0FBQyxVQUF4QixDQUFuQixFQUNBLEtBQUssQ0FBQyxXQUFOLENBQWtCLENBQUMsY0FBYyxDQUFFLEtBQUssQ0FBQyxTQUF2QixDQUFsQixFQUNBLEtBQUssQ0FBQyxTQUFOLENBQWdCLENBQUMsWUFBWSxDQUFFLEtBQUssQ0FBQyxPQUFyQixDQUFoQixFQUVBLEtBQUssQ0FBQyxpQkFBTixHQUVaO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBR2EsQ0ExTkUsQ0FBUCxDQTZOUCxFQUNELGFBRU8sUUFBUyxDQUFBLGlCQUFULEVBQThCLENBQzdCLE1BQU8sQ0FDUCxRQUFRLENBQUUsR0FESCxDQUVQLFVBQVUsQ0FBRSxvQkFBVSxNQUFWLENBQWtCLFVBQWxCLENBQTZCLG9CQUE3QixDQUFrRCxpQkFBbEQsQ0FBb0UsUUFBcEUsQ0FBNkUsZ0JBQTdFLENBQThGLGVBQTlGLENBQStHLENBRTNILE1BQU0sQ0FBQyxLQUFQLENBQWUsZUFBZixDQUVBLEdBQUksTUFBTSxDQUFDLFNBQVAsRUFBa0IsU0FBdEIsQ0FBaUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsRUFBakIsQ0FDakMsR0FBSSxNQUFNLENBQUMsUUFBUCxFQUFtQixTQUF2QixDQUFrQyxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFDLEVBQUQsQ0FBaEIsQ0FDbEMsR0FBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFoQixFQUEwQixDQUE5QixDQUFpQyxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixFQUFuQixDQUVqQyxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBc0MsS0FBdEMsQ0FFQSxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBbUMsS0FBbkMsQ0FDSixNQUFNLENBQUMsU0FBUCxDQUFpQixlQUFqQixDQUFpQyxrQkFBakMsQ0FDQyxNQUFNLENBQUMsZ0JBQVAsQ0FBd0IsSUFBeEIsQ0FDRCxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsS0FBMUIsQ0FDQSxNQUFNLENBQUMsTUFBUCxDQUFjLENBQWQsQ0FDSSxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixDQUErQixDQUN6QixVQUFVLENBQUUsRUFEYSxDQUV6QixJQUFJLENBQUUsRUFGbUIsQ0FHaEMsY0FBYyxDQUFFLElBSGdCLENBSWhDLGNBQWMsQ0FBRSxJQUpnQixDQUtoQyxnQkFBZ0IsQ0FBRSxLQUxjLENBTWhDLGtCQUFrQixDQUFFLElBTlksQ0FPOUIsV0FBVyxDQUFFLElBUGlCLENBUTlCLHlCQUF5QixDQUFHLENBUkUsQ0FTOUIsdUJBQXVCLENBQUcsQ0FUSSxDQVU5QixlQUFlLENBQUUsSUFWYSxDQVc5Qix3QkFBd0IsQ0FBRSxJQVhJLENBWTlCLG9CQUFvQixDQUFFLElBWlEsQ0FhOUIsVUFBVSxDQUFDLElBYm1CLENBYzlCLGFBQWEsQ0FBRSxDQWRlLENBZTlCLGlCQUFpQixDQUFFLEVBZlcsQ0FBL0IsQ0FxQkEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBZ0MsQ0FDakM7QUFDQSxjQUFjLENBQUUsS0FGaUIsQ0FHakMsZ0JBQWdCLENBQUUsSUFIZSxDQUlqQyxrQkFBa0IsQ0FBRSxLQUphLENBSy9CLFdBQVcsQ0FBRSxLQUxrQixDQU1oQyx5QkFBeUIsQ0FBRyxJQU5JLENBT2hDLHVCQUF1QixDQUFHLElBUE0sQ0FRaEM7QUFDQSx3QkFBd0IsQ0FBRSxJQVRNLENBU0E7QUFDMUIsVUFBVSxDQUFDLElBVmUsQ0FXaEMsb0JBQW9CLENBQUUsSUFYVSxDQVkvQixVQUFVLENBQUMsSUFab0IsQ0FhL0IsYUFBYSxDQUFFLENBYmdCLENBY3pCLHdCQUF3QixDQUFDLEtBZEEsQ0FlekIsY0FBYyxDQUFFLElBZlMsQ0FBaEMsQ0FtQkYsTUFBTSxDQUFDLGdCQUFQLENBQTBCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBcEMsQ0FDTTtBQUVGLE1BQU0sQ0FBQyxTQUFQLENBQW1CLENBQUMsVUFBRCxDQUFZLFVBQVosQ0FBdUIsVUFBdkIsQ0FBa0MsVUFBbEMsQ0FBNkMsV0FBN0MsQ0FBeUQsV0FBekQsQ0FBcUUsV0FBckUsQ0FBaUYsV0FBakYsQ0FBNkYsV0FBN0YsQ0FBeUcsV0FBekcsQ0FBcUgsV0FBckgsQ0FBaUksV0FBakksQ0FBbkIsQ0FFQTtBQUNBO0FBQ04sTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLEVBQXhCLENBQ00sTUFBTSxDQUFDLGtCQUFQLENBQTBCLENBQTFCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFWLENBQTRCLENBQTVCLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsRUFBbUIsSUFBdkIsQ0FBNkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFWLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsQ0FDbEM7QUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBeUIsU0FBUyxNQUFULENBQWtCLENBQzFDLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDTSxvQkFBb0IsQ0FBQyw4QkFBckIsQ0FBb0QsSUFBcEQsQ0FBeUQsU0FBekQsQ0FBbUUsTUFBbkUsQ0FBMEUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFwRixFQUFxRyxJQUFyRyxDQUNOLFNBQVMsSUFBVCxDQUFlLENBRVIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQTBCLElBQUksQ0FBQyxJQUEvQixDQUVXLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLElBQXZCLENBQ0EsQ0FDRSxNQUFNLENBQUMsVUFBUCxDQUFvQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTlCLENBQ0EsTUFBTSxDQUFDLGtCQUFQLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUF3QixNQUFwRCxDQUNBO0FBQ0MsR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsR0FBeEIsQ0FBNEIsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUF4RCxFQUEwRCxPQUExRCxDQUFrRSxNQUFNLENBQUMsVUFBekUsQ0FBVixDQUVELEdBQUksR0FBRyxFQUFFLENBQVQsQ0FBVyxDQUNMLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsR0FBeEIsQ0FBeEIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBb0MsSUFBcEMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixlQUFqQixDQUFpQyxVQUFVLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixJQUFsQyxDQUF1QyxZQUF4RSxDQUVMLENBRUQsR0FBSSxNQUFNLENBQUMsVUFBUCxFQUFxQixTQUF6QixDQUFvQyxDQUNoQyxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsR0FDSCxDQUNGLENBRVosQ0F4QkQsQ0F3QkUsU0FBUyxLQUFULENBQWUsQ0FDRyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDcEIsQ0ExQkEsRUEyQk4sQ0E3QkQsQ0ErQkM7QUFDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBbUMsS0FBbkMsQ0FDQSxNQUFNLENBQUMsMEJBQVAsQ0FBa0MsS0FBbEMsQ0FJQTtBQUVBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLENBQTZCLGFBQTdCLENBQTZDLFNBQVUsT0FBVixDQUFtQixDQUM3RCxNQUFNLENBQUMsT0FBUCxDQUFpQixPQUFqQixDQUNBLE1BQU0sQ0FBQyxPQUFQLENBQWUsSUFBZixDQUFvQixxQkFBcEIsQ0FBMEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFwRCxDQUFrRSxHQUFsRSxFQUNDLE1BQU0sQ0FBQyxPQUFQLENBQWUsUUFBZixDQUF3QixFQUF4QixDQUEyQixXQUEzQixDQUF1QyxJQUF2QyxDQUE2QyxTQUFTLEdBQVQsQ0FBYyxDQUMzRCxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsUUFBSixDQUFhLFFBQWIsQ0FBc0IsTUFBdkIsQ0FBaEIsQ0FDRSxDQUZGLEVBR0EsTUFBTSxDQUFDLE9BQVAsQ0FBZSxRQUFmLENBQXdCLEVBQXhCLENBQTJCLFlBQTNCLENBQXdDLElBQXhDLENBQThDLFNBQVMsR0FBVCxDQUFjLENBQzVELGdCQUFnQixDQUFDLENBQUMsR0FBRyxDQUFDLFFBQUosQ0FBYSxRQUFiLENBQXNCLE1BQXhCLENBQWhCLENBQ0UsQ0FGRixFQUtILE9BQU8sQ0FBQyxTQUFSLENBQWtCLEVBQWxCLENBQXFCLG1CQUFyQixDQUF5QyxNQUF6QyxDQUFnRCxTQUFTLEdBQVQsQ0FBYSxDQUVsRDtBQUNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsS0FBVixDQUFnQixNQUFNLENBQUMsT0FBUCxDQUFlLFNBQWYsQ0FBeUIsZUFBekIsR0FBMkMsR0FBM0MsQ0FBZ0QsU0FBVSxDQUFWLENBQWEsQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUE3RSxDQUFoQixDQUVGO0FBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsSUFBOUIsQ0FBbUMsTUFBTSxDQUFDLE9BQVAsQ0FBZSxTQUFmLENBQXlCLGVBQXpCLEVBQW5DLENBQ0E7QUFDQSxNQUFNLENBQUMsMEJBQVAsQ0FBa0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxLQUFWLENBQWdCLE1BQWxELENBQ1QsQ0FURCxFQVVDLENBckJGLENBdUJBO0FBRUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsYUFBOUIsQ0FBOEMsU0FBVSxPQUFWLENBQW1CLENBQzlELE1BQU0sQ0FBQyxRQUFQLENBQWtCLE9BQWxCLENBQ0ksQ0FGUCxDQUlPLFFBQVMsQ0FBQSxnQkFBVCxDQUEwQixjQUExQixDQUEwQyxDQUMvQztBQUNBLE1BQU0sQ0FBQyxXQUFQLENBQW1CLG1CQUFuQixDQUF5QyxDQUFDLE1BQU0sQ0FBQyxXQUFQLENBQW1CLGtCQUFuQixDQUF3QyxjQUF6QyxDQUF5RCxFQUF6RCxDQUE2RCxFQUE3RCxDQUFpRSxHQUFqRSxDQUFzRSxHQUF0RSxDQUF6QyxDQUNBLE1BQU0sQ0FBQyxXQUFQLENBQW1CLGtCQUFuQixDQUF3QyxNQUFNLENBQUMsV0FBUCxDQUFtQixrQkFBbkIsQ0FBd0MsY0FBaEYsQ0FDRCxDQUNEO0FBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXlCLFNBQVMsY0FBVCxDQUF5QixDQUNqRCxRQUFRLENBQUMsVUFBVyxDQUNsQixHQUFJLENBQUEsU0FBUyxDQUFJLE1BQU0sQ0FBQyxPQUFQLENBQWUsSUFBZixDQUFvQixrQkFBcEIsR0FBMkMsRUFBNUMsQ0FBa0QsR0FBbEUsQ0FDQSxPQUFPLENBQUMsT0FBUixDQUFnQixRQUFRLENBQUMsc0JBQVQsQ0FBZ0MsUUFBaEMsRUFBMEMsQ0FBMUMsQ0FBaEIsRUFBOEQsR0FBOUQsQ0FBa0UsUUFBbEUsQ0FBNEUsU0FBUyxDQUFHLElBQXhGLEVBQ0QsQ0FITyxDQUdMLEVBSEssQ0FBUixDQUlBLE1BQU8sQ0FBQSxjQUFQLENBQ0UsQ0FOSCxDQVVBO0FBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLENBQW9DLFVBQ3BDLENBQ0M7QUFDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBbUMsQ0FBQyxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBckQsQ0FFQSxHQUFJLENBQUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQXRCLENBQXlDLENBQUU7QUFDMUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBakIsQ0FBaUMsVUFBVSxNQUFNLENBQUMsZ0JBQVAsQ0FBd0IsSUFBbEMsQ0FBdUMsWUFBeEUsQ0FFQSxDQUVELEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQXJCLENBQXdDLENBQUU7QUFFekMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBakIsQ0FBaUMsaUJBQWpDLENBRUEsQ0FFRCxDQWhCRCxDQWtCSyxNQUFNLENBQUMsRUFBUCxDQUFVLHNCQUFWLENBQW1DLFNBQVUsUUFBVixDQUNsQyxDQUNFLEdBQUksQ0FBQSxJQUFJLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUMsQ0FDQTtBQUNBLG9CQUFvQixDQUFDLDBCQUFyQixDQUFnRCxNQUFNLENBQUMsbUJBQXZELENBQTJFLE1BQU0sQ0FBQyxVQUFsRixDQUE2RixNQUFNLENBQUMsZ0JBQXBHLENBQXFILE1BQU0sQ0FBQyxNQUE1SCxDQUFtSSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQTdJLENBQW9KLElBQXBKLEVBQTBKLElBQTFKLENBQStKLFNBQVMsSUFBVCxDQUFlLENBQ2hLLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLFFBQVEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFyQyxFQUErQyxJQUFJLENBQUMsR0FBcEQsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixJQUFqQixFQUNYLENBSEgsQ0FHSSxTQUFTLEtBQVQsQ0FBZSxDQUNiLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNWLENBTEksRUFPRCxDQVhGLENBWUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsU0FBakIsQ0FBNEIsU0FBUyxJQUFULENBQzVCLENBQ0UsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsSUFBN0IsQ0FBb0MsSUFBSSxDQUFDLElBQXpDLENBRUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsVUFBN0IsQ0FBMEMsSUFBSSxDQUFDLFVBQS9DLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsVUFBOUIsQ0FBMkMsSUFBSSxDQUFDLFVBQWhELENBRUEsR0FBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixRQUFRLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBckMsR0FBOEMsU0FBbEQsQ0FBNEQsQ0FDNUQsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsUUFBUSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQXJDLEVBQTZDLE1BQTVELENBQW1FLENBQUMsRUFBcEUsQ0FDRSxDQUNHLEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsSUFBN0IsQ0FBa0MsR0FBbEMsQ0FBc0MsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUFsRSxFQUFvRSxPQUFwRSxDQUE0RSxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixRQUFRLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBckMsRUFBNkMsQ0FBN0MsQ0FBNUUsQ0FBVixDQUVELEdBQUksR0FBRyxFQUFFLENBQVQsQ0FBVyxDQUNQO0FBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsSUFBOUIsQ0FBbUMsSUFBbkMsQ0FBd0MsT0FBTyxDQUFDLElBQVIsQ0FBYSxNQUFNLENBQUMsV0FBUCxDQUFtQixJQUFuQixDQUF3QixHQUF4QixDQUFiLENBQXhDLEVBRUE7QUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsSUFBbEIsQ0FBdUIsVUFBdkIsQ0FBa0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsSUFBL0QsRUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsU0FBbEIsQ0FBNEIsU0FBNUIsQ0FBc0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsSUFBN0IsQ0FBa0MsR0FBbEMsQ0FBdEMsRUFDSCxDQUVGLENBQ0YsQ0FHQyxRQUFRLENBQUMsVUFBVSxDQUNuQixNQUFNLENBQUMsZ0JBQVAsR0FFQSxDQUhRLENBQVIsQ0FJSCxDQTdCRCxDQStCRSxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsQ0FBNEIsVUFDbEMsQ0FDQTtBQUNDLEdBQUksQ0FBQSxJQUFJLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUMsQ0FDQSxvQkFBb0IsQ0FBQyxlQUFyQixDQUFxQyxNQUFNLENBQUMsVUFBNUMsQ0FBdUQsTUFBTSxDQUFDLE1BQTlELENBQXFFLElBQXJFLEVBQTJFLElBQTNFLENBQWdGLFNBQVMsSUFBVCxDQUFlLENBRTFGLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFNBQWpCLENBQTJCLElBQTNCLEVBRUEsQ0FKTCxDQUlNLFNBQVMsS0FBVCxDQUFlLENBQ0UsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ3RCLENBTkQsRUFPQSxDQVhLLENBY0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXlCLFVBQVcsQ0FDL0IsR0FBSSxDQUFBLEtBQUssQ0FBRyxNQUFNLENBQUMsUUFBUCxDQUFnQixTQUFoQixDQUEwQixJQUExQixFQUFaLENBQ0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQXNCLEtBQXRCLENBQ0QsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsd0NBQTVCLENBQXFFLE1BQXJFLEVBRUMsQ0FMSixDQU9HLE1BQU0sQ0FBQyxnQkFBUCxDQUF5QixVQUFXLENBQ25DLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLEVBQXFCLElBQXpCLENBQ0EsQ0FDRyxHQUFJLE1BQU0sQ0FBQyxRQUFQLEVBQWlCLFNBQXJCLENBQ0EsQ0FFQyxNQUFNLENBQUMsUUFBUCxDQUFnQixTQUFoQixDQUEwQixPQUExQixDQUFrQyxNQUFsQyxDQUF5QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQW5ELEVBRUEsQ0FMRCxJQU1BLENBQ0MsUUFBUSxDQUFDLFVBQVUsQ0FDZixNQUFNLENBQUMsZ0JBQVAsR0FDSCxDQUZPLENBQVIsQ0FHQSxDQUNILENBQ0YsQ0FmQSxDQWtCYjtBQUNTLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBNkIsU0FBVSxJQUFWLENBQWdCLEtBQWhCLENBQXNCLENBQ2pELEdBQUksQ0FBQSxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQXZCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxtQkFBVixDQUE4QixJQUFJLENBQUMsSUFBbkMsQ0FHQSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTJCLENBQUMsSUFBSSxDQUFFLElBQUksQ0FBQyxJQUFaLENBQTNCLENBQ0E7QUFDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixlQUFqQixDQUFpQyxVQUFVLE1BQU0sQ0FBQyxlQUFqQixDQUFpQyxZQUFsRSxDQUVDLE1BQU0sQ0FBQyxVQUFQLENBQWtCLGFBQWxCLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQW9DLElBQXBDLENBS0EsR0FBSSxNQUFNLENBQUMsVUFBUCxFQUFxQixTQUF6QixDQUFvQyxDQUNuQyxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsR0FDQSxDQUNELE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixNQUFNLENBQUMsVUFBekIsQ0FDRixDQW5CRCxDQXNCVCxDQXJSVSxDQXFSVDtBQUVNLFdBQVcsQ0FBRSw2Q0F2UlYsQ0F3UkgsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUVuQyxDQTFSRSxDQUFQLENBNlJQLEVBQ0QsYUFFTyxRQUFTLENBQUEsV0FBVCxFQUF3QixDQUV2QixNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFRixXQUFXLENBQUUsdUNBRlgsQ0FHRixVQUFVLENBQUUsb0JBQVMsTUFBVCxDQUFnQixZQUFoQixDQUE2QixvQkFBN0IsQ0FBa0QsVUFBbEQsQ0FBNkQsaUJBQTdELENBQStFLENBQ3ZGLENBSkYsQ0FLRixJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBR2xDLENBUkEsQ0FBUCxDQVdQLEVBQ0QsYUFFTyxRQUFTLENBQUEsc0JBQVQsRUFBbUMsQ0FFdkMsR0FBSSxDQUFBLFVBQVUsQ0FBRyxDQUFDLFFBQUQsQ0FBVyxXQUFYLENBQXdCLGNBQXhCLENBQXVDLFFBQXZDLENBQWdELFVBQWhELENBQTJELGNBQTNELENBQTBFLHNCQUExRSxDQUFpRyxZQUFqRyxDQUE4RyxhQUE5RyxDQUE0SCxtQkFBNUgsQ0FBZ0osa0JBQWhKLENBQW1LLGlCQUFuSyxDQUFxTCxpQkFBckwsQ0FBdU0sMkJBQXZNLENBQW1PLHFCQUFuTyxDQUF5UCxnQkFBelAsQ0FBMFEsZ0JBQTFRLENBQTJSLFVBQTNSLENBQXNTLFVBQXRTLENBQ0MsU0FBVSxNQUFWLENBQWlCLFNBQWpCLENBQTJCLFlBQTNCLENBQXdDLE1BQXhDLENBQStDLFFBQS9DLENBQXdELFlBQXhELENBQXFFLG9CQUFyRSxDQUEwRixVQUExRixDQUFxRyxXQUFyRyxDQUFpSCxpQkFBakgsQ0FBbUksZ0JBQW5JLENBQW9KLGVBQXBKLENBQW9LLGVBQXBLLENBQW9MLHlCQUFwTCxDQUE4TSxtQkFBOU0sQ0FBa08sY0FBbE8sQ0FBaVAsY0FBalAsQ0FBZ1EsUUFBaFEsQ0FBeVEsUUFBelEsQ0FBbVIsQ0FFbFMsTUFBTSxDQUFDLGVBQVAsQ0FBeUIsRUFBekIsQ0FDQTtBQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE4QyxLQUE5QyxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFVBQXZCLENBQWtDLEtBQWxDLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsYUFBdkIsQ0FBcUMsV0FBVyxDQUFDLGVBQWpELENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsaUJBQXZCLENBQTJDLElBQTNDLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsVUFBdkIsQ0FBb0MsQ0FBcEMsQ0FDQSxNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixVQUF2QixDQUFrQyxDQUFDLFlBQVksQ0FBQyxDQUFkLENBQWdCLGtCQUFrQixDQUFDLElBQW5DLENBQWxDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUE2QixJQUE3QixDQUNBLEdBQUksTUFBTSxDQUFDLFFBQVAsRUFBaUIsU0FBckIsQ0FBZ0MsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsRUFBaEIsQ0FDaEMsR0FBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTFCLEdBQTJDLFNBQS9DLENBQTBELE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBMUIsRUFBMEMsRUFBMUMsQ0FFMUQsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsaUJBQXZCLENBQXlDLENBQXpDLENBRUEsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsRUFBd0IsU0FBNUIsQ0FBdUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXVCLEVBQXZCLENBRXZDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFNBQXZCLENBQW1DLFNBQVUsSUFBVixDQUFlLFFBQWYsQ0FBd0IsSUFBeEIsQ0FBNkIsWUFBN0IsQ0FBMkMsQ0FFM0UsR0FBSSxDQUFBLGFBQWEsQ0FBRyxTQUFTLENBQUMsSUFBVixDQUFlLENBQ2hDLFNBQVMsQ0FBRSxNQUFNLENBQUMsaUJBRGMsQ0FFaEMsV0FBVyxDQUFFLFFBRm1CLENBR2hDLFVBQVUsQ0FBRSxJQUhvQixDQUloQyxJQUFJLENBQUUsSUFKMEIsQ0FLaEMsT0FBTyxDQUFFLENBQ1Asb0JBQW9CLENBQUUsK0JBQVksQ0FDaEMsTUFBTyxDQUFBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUE5QixDQUNDLENBSEksQ0FJUCxJQUFJLENBQUUsZUFBWSxDQUNoQixNQUFPLENBQUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsaUJBQTlCLENBQ0MsQ0FOSSxDQUx1QixDQUFmLENBQXBCLENBY0EsYUFBYSxDQUFDLE1BQWQsQ0FBcUIsSUFBckIsQ0FBMEIsU0FBVSxZQUFWLENBQXVCLE1BQXZCLENBQThCLEtBQTlCLENBQXFDLENBRTlELEdBQUksTUFBTSxDQUFDLGVBQVAsQ0FBdUIsaUJBQXZCLEVBQTBDLENBQTlDLENBQWdELENBQzlDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE4QyxZQUE5QyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFxQixNQUFNLENBQUMsb0JBQVAsQ0FBNEIsU0FBakQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBdUIsWUFBWSxDQUFDLFdBQXBDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFWLENBQTRCLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixlQUF4RCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUEyQixNQUFNLENBQUMsb0JBQVAsQ0FBNEIsY0FBdkQsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1Qix1QkFBdkIsR0FFRCxDQVJELElBUU0sSUFBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixpQkFBdkIsRUFBMEMsQ0FBOUMsQ0FDTixDQUNFLE1BQU0sQ0FBQyxlQUFQLENBQXVCLDJCQUF2QixDQUFxRCxZQUFyRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBOEIsTUFBTSxDQUFDLG9CQUFQLENBQTRCLFNBQTFELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUE2QixZQUFZLENBQUMsV0FBMUMsQ0FDQTtBQUNBO0FBQ0QsQ0FFRCxDQW5CRCxDQW1CRyxVQUFZLENBQ2hCO0FBQ0UsQ0FyQkQsRUF1QkYsQ0F2Q0QsQ0F5Q0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsdUJBQXZCLENBQWlELFVBQVUsQ0FDekQsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsaUJBQXZCLENBQTRDLENBQTVDLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsU0FBdkIsQ0FBaUMsSUFBakMsQ0FBc0MsMEJBQXRDLENBQWlFLHlCQUFqRSxDQUEyRixNQUFNLENBQUMsZUFBUCxDQUF1QixpQkFBbEgsRUFFRCxDQUpELENBTUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsOEJBQXZCLENBQXdELFVBQVUsQ0FDaEUsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsaUJBQXZCLENBQTRDLENBQTVDLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsU0FBdkIsQ0FBaUMsSUFBakMsQ0FBc0MseUJBQXRDLENBQWdFLHdCQUFoRSxDQUF5RixNQUFNLENBQUMsZUFBUCxDQUF1QixpQkFBaEgsRUFDRCxDQUhELENBTUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsWUFBdkIsQ0FBb0MsVUFBcEMsQ0FDSTtBQUlKLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFNBQXZCLENBQW1DLENBQ25DLEVBQUUsQ0FBRSxHQUQrQixDQUVuQyxJQUFJLENBQUUsTUFGNkIsQ0FHbkMsT0FBTyxDQUFFLEVBSDBCLENBQW5DLENBUUE7QUFDQSxNQUFNLENBQUMsTUFBUCxDQUFjLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUF4QyxDQUNBLEdBQUksTUFBTSxDQUFDLE1BQVAsRUFBZSxTQUFuQixDQUErQixNQUFNLENBQUMsTUFBUCxDQUFjLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixnQkFBeEMsQ0FDL0IsR0FBSSxNQUFNLENBQUMsTUFBUCxFQUFlLFNBQW5CLENBQThCLE1BQU0sQ0FBQyxNQUFQLENBQWMsQ0FBZCxDQUM5QixNQUFNLENBQUMsZUFBUCxDQUF1QixNQUF2QixDQUE4QixNQUFNLENBQUMsTUFBckMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQTZCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdkMsQ0FDQSxNQUFNLENBQUMsYUFBUCxDQUF3QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsWUFBbEQsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixRQUF2QixDQUFnQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsU0FBMUQsQ0FDQSxNQUFNLENBQUMsV0FBUCxDQUFtQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsV0FBN0MsQ0FDQSxNQUFNLENBQUMsY0FBUCxDQUF3QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZ0JBQWxELENBQ0EsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQWpELENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQWxELENBRUEsR0FBSSxNQUFNLENBQUMsU0FBUCxFQUFvQixTQUF4QixDQUFvQyxNQUFNLENBQUMsU0FBUCxDQUFrQixFQUFsQixDQUNwQyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixLQUE1QixDQUVDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWtDLFVBQVUsQ0FDeEIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNkIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsS0FBNUIsQ0FBbUMsSUFBaEUsQ0FDbkIsQ0FGRCxDQUlELEdBQUssTUFBTSxDQUFDLGNBQVAsRUFBdUIsU0FBNUIsQ0FBdUMsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsS0FBdEIsQ0FFdkMsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLENBQXdDLENBQXhDLENBQ0EsR0FBSSxNQUFNLENBQUMsY0FBUCxFQUF1QixTQUEzQixDQUNBLENBQ0UsTUFBTSxDQUFDLGNBQVAsQ0FBdUIsQ0FBdkIsQ0FFRCxDQUNELEdBQUksTUFBTSxDQUFDLGFBQVAsRUFBc0IsU0FBMUIsQ0FDQSxDQUNHLE1BQU0sQ0FBQyxhQUFQLENBQXNCLENBQXRCLENBQ0YsQ0FDQyxHQUFJLE1BQU0sQ0FBQyxhQUFQLEVBQXNCLFNBQTFCLENBQ0EsQ0FDSSxNQUFNLENBQUMsYUFBUCxDQUFzQixDQUF0QixDQUNILENBRUg7QUFDQSxHQUFJLENBQUEsVUFBVSxDQUFHLENBQUMsWUFBRCxDQUFqQixDQUNBO0FBQ0E7QUFDRyxHQUFJLENBQUEsZ0JBQWdCLENBQUcsQ0FBQyxHQUFHLENBQUUsQ0FBQyxDQUFDLE9BQU8sY0FBUixDQUF1QixRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBTixDQUFtQixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFuQyxDQUFELENBQTZDLENBQUMsSUFBSSxDQUFDLGtCQUFOLENBQXlCLEtBQUssQ0FBQyxFQUEvQixDQUE3QyxDQUEvQixDQUFELENBQU4sQ0FBeUgsT0FBTyxDQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBTixDQUFvQixNQUFNLENBQUMsS0FBM0IsQ0FBRCxDQUFsSSxDQUFzSyxJQUFJLENBQUUsb0JBQTVLLENBQWlNLFFBQVEsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXJOLENBQW9PLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxjQUE1UCxDQUEyUSxlQUFlLENBQUMsTUFBTSxDQUFDLGFBQWxTLENBQWdULE1BQU0sQ0FBRyxNQUFNLENBQUMsT0FBaFUsQ0FBd1UsYUFBYSxDQUFHLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUEvVyxDQUFpWSxNQUFNLENBQUMsVUFBeFksQ0FBdkIsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixhQUF2QixDQUF1Qyx5QkFBeUIsQ0FBQyxjQUExQixDQUF5QyxnQkFBekMsQ0FBdkMsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixPQUF2QixDQUErQixNQUFNLENBQUMsZUFBUCxDQUF1QixhQUF0RCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixNQUFNLENBQUMsZUFBUCxDQUF1QixhQUF6QyxDQUNBO0FBRUg7QUFDQSxNQUFNLENBQUMsR0FBUCxDQUFhLG1CQUFiLENBRUEsR0FBSSxDQUFBLHNCQUFzQixDQUFHLFFBQXpCLENBQUEsc0JBQXlCLENBQVMsSUFBVCxDQUM3QixDQUNHLEdBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBWCxDQUFKLENBQXdCLENBQXhCLEdBQThCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixJQUExQixFQUFrQyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsQ0FBMUYsQ0FBSixDQUFrRyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBMkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBWCxDQUEvQixDQUNqRztBQUVILENBTEQsQ0FNQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixDQUExQixFQUErQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsSUFBN0QsQ0FDQSxDQUVHLEdBQUksQ0FBQSxlQUFlLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFoQyxDQUNBLEdBQUksQ0FBQSxpQkFBaUIsQ0FBRyxzQkFBc0IsTUFBTSxDQUFDLE1BQTdCLENBQW9DLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixTQUF0RixDQUNBLEdBQUksQ0FBQSxRQUFRLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLGlCQUFyQixDQUF1QyxlQUF2QyxDQUF1RCxXQUF2RCxDQUFtRSxzQkFBbkUsQ0FBZixDQUVGLENBRUEsR0FBSSxDQUFBLFdBQVcsQ0FBRyxRQUFkLENBQUEsV0FBYyxDQUFTLElBQVQsQ0FDakIsQ0FDSSxHQUFJLENBQUEsVUFBVSxDQUFDLEtBQWYsQ0FDQSxHQUFJLElBQUksRUFBRSxTQUFWLENBQ0EsQ0FDRyxHQUFJLElBQUksRUFBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBbkMsQ0FDQSxDQUNHLEdBQUksTUFBTyxDQUFBLElBQVAsR0FBZSxRQUFuQixDQUE2QixNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBeUMsSUFBekMsQ0FBN0IsSUFDSyxJQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsSUFBZCxDQUFKLENBQ0wsQ0FDRyxHQUFJLElBQUksQ0FBQyxNQUFMLENBQVksQ0FBaEIsQ0FDQSxDQUNDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF5QyxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsRUFBakQsQ0FDQSxDQUNILENBTkksSUFPTCxDQUNHLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUEwQyxJQUFJLENBQUMsRUFBL0MsQ0FDRixDQUNELFVBQVUsQ0FBRyxJQUFiLENBQ0YsQ0FDSCxDQUNEO0FBQ0EsR0FBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsRUFBMkMsSUFBL0MsQ0FBcUQsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLENBQXdDLENBQXhDLENBRXJELEdBQUksTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLENBQXdDLENBQXhDLEVBQTZDLFVBQWpELENBQTZELE1BQU0sQ0FBQyxlQUFQLENBQXVCLHVCQUF2QixHQUdoRSxDQTNCRixDQThCRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixFQUFzQixTQUExQixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsRUFBckIsQ0FFckMsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsaUJBQXpCLENBQ0EsQ0FFRztBQUNBO0FBRUEsR0FBSSxDQUFBLGdCQUFlLENBQUcsUUFBUSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXhDLENBQ0EsR0FBSSxDQUFBLGtCQUFpQixDQUFHLDJCQUEyQixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsZ0JBQWhELENBQWlFLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixjQUFuSCxDQUNBLEdBQUksQ0FBQSxPQUFPLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXNCLGtCQUF0QixDQUF3QyxJQUF4QyxDQUFkLENBQ0EsR0FBSSxDQUFBLFNBQVEsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsa0JBQXJCLENBQXVDLGdCQUF2QyxDQUF1RCxjQUF2RCxDQUFzRSxXQUF0RSxDQUFmLENBQ0EsR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFFBQVgsQ0FBb0Isa0JBQXBCLENBQVYsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBeUMsR0FBRyxDQUFDLEVBQTdDLENBRUc7QUFDSCxHQUFJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixFQUEyQyxJQUEvQyxDQUFxRCxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBd0MsQ0FBeEMsQ0FFckQsR0FBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBd0MsQ0FBNUMsQ0FBK0MsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsdUJBQXZCLEdBQ2pELENBRUQ7QUFDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF1QixRQUF2QixHQUFrQyxNQUFsQyxDQUF5QyxDQUF6QyxDQUEyQyxDQUEzQyxHQUErQyxHQUFuRCxDQUNBLENBQ0s7QUFDWDtBQUNBLGlGQUhNLENBSUU7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBR1EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsRUFBdUIsU0FBdkIsRUFBb0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLEVBQXVCLElBQS9ELENBRUEsQ0FFUSxHQUFJLENBQUEsaUJBQWUsQ0FBRyxRQUFRLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBeEMsQ0FDRDtBQUNDLEdBQUksQ0FBQSxtQkFBaUIsQ0FBRyxzQkFBc0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFoQyxDQUE0QyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsY0FBOUYsQ0FDQSxHQUFJLENBQUEsVUFBUSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixtQkFBckIsQ0FBdUMsaUJBQXZDLENBQXVELGNBQXZELENBQXNFLFdBQXRFLENBQWYsQ0FFUCxDQUVGLENBRUQsR0FBSSxDQUFBLG1CQUFtQixDQUFHLFFBQXRCLENBQUEsbUJBQXNCLEVBRTFCLENBQ0csTUFBTSxDQUFDLGVBQVAsQ0FBdUIsdUJBQXZCLEdBRUYsQ0FMRCxDQU1BLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFNBQXJCLEVBQWdDLFNBQXBDLENBQ0EsQ0FDRyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixTQUFyQixFQUFnQyxFQUFwQyxDQUNBLENBQ0csR0FBSSxDQUFBLGdCQUFnQixDQUFHLFFBQVEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF6QyxDQUNBLEdBQUksQ0FBQSxrQkFBa0IsQ0FBRyxPQUFPLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixjQUExRCxDQUNBLEdBQUksQ0FBQSxTQUFTLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLGtCQUFyQixDQUF3QyxnQkFBeEMsQ0FBeUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFNBQTlFLENBQXdGLG1CQUF4RixDQUFoQixDQUNGLENBQ0gsQ0FFRCxNQUFNLENBQUMsZUFBUCxDQUF1QixjQUF2QixDQUFzQyxTQUFTLGlCQUFULENBQ3RDLENBRU0sR0FBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixpQkFBdkIsRUFBMEMsU0FBOUMsQ0FDQSxDQUNHLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGlCQUF2QixDQUEyQyxpQkFBM0MsQ0FDRixDQUhELElBSUEsQ0FDRyxHQUFJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGlCQUF2QixFQUEwQyxDQUExQyxFQUErQyxNQUFNLENBQUMsZUFBUCxDQUF1QixpQkFBdkIsRUFBMEMsaUJBQTdGLENBQWdILE1BQU0sQ0FBQyxlQUFQLENBQXVCLGlCQUF2QixDQUEyQyxpQkFBM0MsQ0FBaEgsSUFDSyxDQUFBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGlCQUF2QixDQUF5QyxDQUF6QyxDQUNQLENBRU4sQ0FaRCxDQWNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFFBQXZCLENBQWtDLFNBQVMsSUFBVCxDQUFjLElBQWQsQ0FBbUIsS0FBbkIsQ0FBeUIsR0FBekIsQ0FDbEMsQ0FDRyxlQUFlLENBQUMsUUFBaEIsQ0FBeUIsSUFBekIsQ0FBOEIsSUFBOUIsQ0FBbUMsS0FBbkMsRUFDQSxHQUFJLEdBQUosQ0FBUyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixHQUE1QixDQUFnQyxNQUFoQyxFQUNYLENBSkQsQ0FNQSxNQUFNLENBQUMsZUFBUCxDQUF1QixjQUF2QixDQUF3QyxVQUFZLENBRTlDLG9CQUFvQixDQUFDLGlCQUFyQixDQUF1QyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQWpELEVBQTBELElBQTFELENBQStELFNBQVMsSUFBVCxDQUFlLENBRTdEO0FBQ0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLENBQXFCLElBQUksQ0FBQyxJQUExQixDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGNBQXZCLENBQXdDLElBQXhDLENBRUcsQ0FOckIsQ0FNc0IsU0FBUyxLQUFULENBQWUsQ0FFbkIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0QsQ0FUakIsRUFVSCxDQVpILENBYUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsY0FBdkIsR0FFQyxNQUFNLENBQUMsRUFBUCxDQUFVLHFCQUFWLENBQWtDLFNBQVUsT0FBVixDQUFtQixDQUVqRCxHQUFJLE9BQU8sQ0FBQyxTQUFSLEVBQW1CLFNBQXZCLENBQWtDLE9BQU8sQ0FBQyxTQUFSLENBQW9CLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBcEIsQ0FDbEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFWLENBQTRCLE9BQTVCLENBQ0EsR0FBSSxPQUFPLENBQUMsU0FBUixDQUFrQixFQUFsQixDQUFxQixDQUF6QixDQUE0QixNQUFNLENBQUMsZUFBUCxDQUF1Qix1QkFBdkIsQ0FBK0MsT0FBTyxDQUFDLFNBQVIsQ0FBa0IsRUFBakUsRUFFOUIsQ0FORixDQU9DLE1BQU0sQ0FBQyxFQUFQLENBQVUsc0JBQVYsQ0FBbUMsU0FBVSxJQUFWLENBQ25DLENBQ0csR0FBSSxJQUFJLENBQUMsY0FBTCxFQUFxQixTQUF6QixDQUFvQyxJQUFJLENBQUMsU0FBTCxDQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQWpCLENBQ3BDLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBNkIsSUFBN0IsQ0FDQSxHQUFJLElBQUksQ0FBQyxjQUFMLENBQW9CLEVBQXBCLENBQXVCLENBQTNCLENBQThCLE1BQU0sQ0FBQyxlQUFQLENBQXVCLHVCQUF2QixDQUErQyxJQUFJLENBQUMsY0FBTCxDQUFvQixFQUFuRSxFQUNoQyxDQUxELENBT0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSx5QkFBVixDQUFzQyxTQUFVLElBQVYsQ0FDdkMsQ0FDSSxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBRUc7QUFDRCxHQUFJLENBQUEsS0FBSyxDQUFJLEdBQWIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsS0FBeEIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsQ0FBc0IsVUFBdEIsQ0FBaUMsRUFBakMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsb0JBQVYsRUFBZ0MsU0FBcEMsQ0FBK0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxvQkFBVixDQUErQixFQUEvQixDQUMvQyxvQkFBb0IsQ0FBQyx5QkFBckIsQ0FBK0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLENBQW1CLFVBQW5CLENBQThCLFVBQTdFLENBQXdGLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBMkIsWUFBbkgsQ0FBZ0ksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUExQixFQUEwQyxDQUExQyxDQUFoSSxFQUE4SyxJQUE5SyxDQUFtTCxTQUFTLElBQVQsQ0FBZSxDQUU5TCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsSUFBakMsQ0FBc0MsU0FBdEMsRUFFRixDQUpGLENBSUcsU0FBUyxLQUFULENBQWUsQ0FDRyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFFbkIsQ0FQRixFQVFMLENBakJBLENBa0JILE1BQU0sQ0FBQyxlQUFQLENBQXVCLHVCQUF2QixDQUFpRCxTQUFTLFNBQVQsQ0FBbUIsQ0FDNUQsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLElBQTlCLENBQ0EsQ0FDRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBMkIsQ0FBM0IsQ0FFRCxDQUNELE1BQU0sQ0FBQyxlQUFQLENBQXVCLFVBQXZCLENBQWtDLEtBQWxDLENBQ0Esb0JBQW9CLENBQUMsZUFBckIsQ0FBcUMsU0FBckMsQ0FBK0MsR0FBL0MsQ0FBbUQsSUFBbkQsRUFBeUQsSUFBekQsQ0FBOEQsU0FBUyxJQUFULENBQWUsQ0FFM0QsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsd0JBQXZCLENBQWlELElBQUksQ0FBQyxJQUFMLENBQVUsa0JBQTNELENBQ0EsR0FBSSxLQUFLLENBQUMsT0FBTixDQUFjLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBeEIsQ0FBSixDQUFzQyxNQUFNLENBQUMsZUFBUCxDQUF1QixTQUF2QixDQUFpQyxPQUFqQyxDQUF5QyxNQUF6QyxDQUFtRCxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQTdELENBRXRDLEdBQUksTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLEVBQTZDLFNBQWpELENBQ0MsQ0FDQyxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsSUFBNUMsQ0FBaUQsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsd0JBQXZCLENBQWdELElBQWpHLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLFNBQTVDLENBQXNELE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBaEUsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsY0FBNUMsQ0FBMkQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFyRSxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxXQUE1QyxDQUF3RCxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQWxFLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLGFBQTVDLENBQTBELE1BQU0sQ0FBQyxlQUFQLENBQXVCLGFBQXZCLENBQXFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBL0MsQ0FBMUQsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsZUFBNUMsQ0FBNEQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUF0RSxDQUNBLENBUkYsSUFTSSxDQUNGLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxDQUFDLE9BQU8sTUFBTSxDQUFDLGVBQVAsQ0FBdUIsd0JBQXZCLENBQWdELElBQXhELENBQTZELFlBQVksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFuRixDQUE0RixpQkFBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF2SCxDQUF3SSxjQUFjLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBaEssQ0FBNkssZ0JBQWdCLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGFBQXZCLENBQXFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBL0MsQ0FBN0wsQ0FBMFAsa0JBQWtCLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBdFIsQ0FBNUMsQ0FFRCxDQUNELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixJQUFJLENBQUMsSUFBTCxDQUFVLE9BQS9CLENBRUw7QUFDM0I7QUFDQTtBQUNBLCtCQXZCMkYsQ0F5QjNEO0FBQ0EseUJBQXlCLENBQUMsT0FBMUIsQ0FBa0MsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFwQixDQUFvQyxHQUFHLENBQUUsQ0FBQyxDQUFDLE9BQU8sY0FBUixDQUF1QixRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBTixDQUFtQixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFuQyxDQUFELENBQTZDLENBQUMsSUFBSSxDQUFDLGtCQUFOLENBQXlCLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUF6QyxDQUE3QyxDQUEvQixDQUFELENBQXpDLENBQWxDLEVBRUUsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQThDLElBQTlDLENBQ0E7QUFDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixVQUF2QixDQUFrQyxJQUFsQyxDQUVIO0FBQ0MsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsUUFBdkIsQ0FBZ0MsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsU0FBdkIsQ0FBaUMsT0FBakMsQ0FBeUMsTUFBekUsQ0FBZ0YsVUFBaEYsQ0FBMkYsS0FBM0YsRUFFQyxDQW5DbkIsQ0FtQ29CLFNBQVMsS0FBVCxDQUFlLENBQ2QsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBRUwsQ0F0Q2hCLEVBd0NQLENBaERELENBaURBLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUF3QixDQUVyQixjQUFjLENBQUUsSUFGSyxDQUd0QixnQkFBZ0IsQ0FBRSxJQUhJLENBSXRCLGtCQUFrQixDQUFFLElBSkUsQ0FLdEIsV0FBVyxDQUFFLEtBTFMsQ0FNeEI7QUFDQztBQUNDLGVBQWUsQ0FBRSxJQVJLLENBU3RCLHdCQUF3QixDQUFFLEtBVEosQ0FVdEIsb0JBQW9CLENBQUUsSUFWQSxDQVd0QixzQkFBc0IsQ0FBRSxJQVhGLENBWXRCO0FBQ0EsbUJBQW1CLENBQUUsQ0FBQyxFQUFELENBQUssRUFBTCxDQUFTLEVBQVQsQ0FBWSxHQUFaLENBQWdCLEdBQWhCLENBQW9CLEdBQXBCLENBQXdCLElBQXhCLENBQTZCLElBQTdCLENBQWtDLEtBQWxDLENBYkMsQ0FBeEIsQ0FlRSxNQUFNLENBQUMsRUFBUCxDQUFVLDJCQUFWLENBQXdDLFVBQVUsQ0FDNUMsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUVDO0FBQ0QsR0FBSSxDQUFBLEtBQUssQ0FBSSxHQUFiLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLEtBQXhCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLENBQXNCLFVBQXRCLENBQWlDLEVBQWpDLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLG9CQUFWLEVBQWdDLFNBQXBDLENBQStDLE1BQU0sQ0FBQyxFQUFQLENBQVUsb0JBQVYsQ0FBK0IsRUFBL0IsQ0FDL0Msb0JBQW9CLENBQUMsMkJBQXJCLENBQWlELE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBVixDQUEwQixTQUExQixDQUFvQyxFQUFyRixDQUF3RixNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsQ0FBMEIsV0FBbEgsQ0FBOEgsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLENBQW1CLFVBQW5CLENBQThCLFVBQTVKLENBQXVLLEtBQXZLLENBQTZLLE1BQU0sQ0FBQyxFQUFQLENBQVUsb0JBQXZMLENBQTRNLElBQTVNLEVBQWtOLElBQWxOLENBQXVOLFNBQVMsSUFBVCxDQUFlLENBRWxPLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUF3QixJQUF4QixDQUVBLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUFzQixJQUF0QixDQUE2QixJQUFJLENBQUMsSUFBTCxDQUFVLElBQVYsQ0FBZSxJQUE1QyxDQUVBO0FBRUE7QUFHRixDQVhGLENBV0csU0FBUyxLQUFULENBQWUsQ0FDRyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDTCxDQWJoQixFQWNMLENBdEJELENBdUJBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGVBQXZCLENBQXlDLFVBQVUsQ0FDN0MsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFVBQXZCLENBQWtDLEtBQWxDLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsSUFBOUIsQ0FDQSxDQUNLLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixDQUF6QixDQUVKLENBQ0QsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsV0FBdkIsQ0FBbUMsSUFBbkMsQ0FFRCxvQkFBb0IsQ0FBQyx1QkFBckIsQ0FBNkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF2RCxDQUErRCxNQUFNLENBQUMsTUFBdEUsQ0FBNkUsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsUUFBcEcsQ0FBNkcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF2SCxDQUFzSSxHQUF0SSxDQUEwSSxJQUExSSxFQUFnSixJQUFoSixDQUFxSixTQUFTLElBQVQsQ0FBZSxDQUVoSixNQUFNLENBQUMsZUFBUCxDQUF1Qix3QkFBdkIsQ0FBaUQsSUFBSSxDQUFDLElBQUwsQ0FBVSxrQkFBM0QsQ0FDQSxHQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUF4QixDQUFKLENBQXNDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFNBQXZCLENBQWlDLE9BQWpDLENBQXlDLE1BQXpDLENBQW1ELElBQUksQ0FBQyxJQUFMLENBQVUsT0FBN0QsQ0FFdkMsR0FBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsRUFBNkMsU0FBakQsQ0FDQSxDQUNDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxJQUE1QyxDQUFpRCxNQUFNLENBQUMsZUFBUCxDQUF1Qix3QkFBdkIsQ0FBZ0QsSUFBakcsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsU0FBNUMsQ0FBc0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFoRSxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxjQUE1QyxDQUEyRCxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXJFLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLFdBQTVDLENBQXdELE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBbEUsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsYUFBNUMsQ0FBMEQsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsYUFBdkIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUEvQyxDQUExRCxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxlQUE1QyxDQUE0RCxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQXRFLENBQ0EsQ0FSRCxJQVNHLENBQ0YsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLENBQUMsT0FBTyxNQUFNLENBQUMsZUFBUCxDQUF1Qix3QkFBdkIsQ0FBZ0QsSUFBeEQsQ0FBNkQsWUFBWSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5GLENBQTRGLGlCQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXZILENBQXdJLGNBQWMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFoSyxDQUE2SyxnQkFBZ0IsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsYUFBdkIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUEvQyxDQUE3TCxDQUEwUCxrQkFBa0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUF0UixDQUE1QyxDQUVELENBRUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBL0IsQ0FJQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBOEMsSUFBOUMsQ0FFQSxRQUFRLENBQUMsVUFBVSxDQUNoQixNQUFNLENBQUMsZUFBUCxDQUF1QixVQUF2QixDQUFrQyxJQUFsQyxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFdBQXZCLENBQW1DLEtBQW5DLENBQ0YsQ0FITyxDQUFSLENBTUY7QUFDRSxNQUFNLENBQUMsZUFBUCxDQUF1QixRQUF2QixDQUFnQyxNQUFNLENBQUMsZUFBUCxDQUF1QixTQUF2QixDQUFpQyxPQUFqQyxDQUF5QyxNQUF6RSxDQUFnRixVQUFoRixDQUEyRixLQUEzRixFQUVDLENBbENuQixDQWtDb0IsU0FBUyxLQUFULENBQWUsQ0FDZCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDRixNQUFNLENBQUMsZUFBUCxDQUF1QixXQUF2QixDQUFtQyxLQUFuQyxDQUdILENBdkNoQixFQXlDUCxDQW5EQyxDQXNEQSxNQUFNLENBQUMsZUFBUCxDQUF1Qix1QkFBdkIsQ0FBaUQsVUFBVSxDQUNyRCxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsVUFBdkIsQ0FBa0MsS0FBbEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixJQUExQixFQUFrQyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsU0FBaEUsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUEyQixDQUEzQixDQUVELENBRUQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsRUFBMkIsSUFBM0IsRUFBbUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFWLEVBQTJCLFNBQWxFLENBQ0EsQ0FDRSxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsQ0FBNEIsQ0FBNUIsQ0FFRCxDQUtBLEdBQUksTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLEVBQXlDLFNBQXpDLEVBQXNELE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixFQUF5QyxDQUFuRyxDQUNBLENBRUcsR0FBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBd0MsaUJBQXhDLEdBQTRELFNBQTVELEVBQXlFLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF3QyxpQkFBeEMsR0FBNEQsRUFBckksRUFBMkksTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLENBQXdDLFdBQXhDLEdBQXNELE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBL00sQ0FBd04sTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLENBQTBDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF3QyxpQkFBeEMsQ0FBMUMsQ0FFMU4sQ0FDRCxHQUFJLE1BQU8sQ0FBQSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBOUIsR0FBa0QsUUFBbEQsRUFBOEQsTUFBTyxDQUFBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUE5QixHQUFrRCxRQUFwSCxDQUNBLENBRUcsR0FBSSxLQUFLLENBQUMsT0FBTixDQUFjLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUFyQyxDQUFKLENBQ0EsQ0FDRyxHQUFJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF3QyxNQUF4QyxDQUErQyxDQUFuRCxDQUNBLENBQ0csTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLENBQXlDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF3QyxDQUF4QyxFQUEyQyxFQUFwRixDQUVGLENBQ0gsQ0FQRCxJQVFLLENBQUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLENBQTBDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF3QyxFQUFsRixDQUNQLENBRUYsb0JBQW9CLENBQUMsK0JBQXJCLENBQXFELE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBL0QsQ0FBdUUsTUFBTSxDQUFDLGNBQTlFLENBQTZGLE1BQU0sQ0FBQyxhQUFwRyxDQUFrSCxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQTVILENBQXlJLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBbkosQ0FBbUssTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUE3SyxDQUE0TCxNQUFNLENBQUMsYUFBbk0sQ0FBaU4sTUFBTSxDQUFDLGVBQVAsQ0FBdUIsUUFBeE8sQ0FBaVAsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsVUFBeFEsQ0FBbVIsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQTFTLENBQTJULEdBQTNULENBQStULElBQS9ULEVBQXFVLElBQXJVLENBQTBVLFNBQVMsSUFBVCxDQUFlLENBRXJVLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBMUIsRUFBNkMsSUFBSSxDQUFDLElBQUwsQ0FBVSxTQUF2RCxDQUNBLEdBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUExQixHQUEyQyxTQUEvQyxDQUEwRCxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTFCLEVBQTBDLEVBQTFDLENBQzFELE1BQU0sQ0FBQyxlQUFQLENBQXVCLHdCQUF2QixDQUFpRCxJQUFJLENBQUMsSUFBTCxDQUFVLGtCQUEzRCxDQUNBLEdBQUksS0FBSyxDQUFDLE9BQU4sQ0FBYyxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQXhCLENBQUosQ0FBc0MsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsU0FBdkIsQ0FBaUMsT0FBakMsQ0FBeUMsTUFBekMsQ0FBbUQsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUE3RCxDQUV0QyxHQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBMUIsRUFBMEMsTUFBMUMsQ0FBaUQsQ0FBckQsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUEwQyxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTFCLEVBQTBDLENBQTFDLEVBQTZDLElBQTdDLENBQTFDLENBQ0QsQ0FDRCxNQUFNLENBQUMsZUFBUCxDQUF1QixlQUF2QixDQUF1QyxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBOUQsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixFQUE2QyxTQUFqRCxDQUNELENBQ0MsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLElBQTVDLENBQWlELE1BQU0sQ0FBQyxlQUFQLENBQXVCLHdCQUF2QixDQUFnRCxJQUFqRyxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxTQUE1QyxDQUFzRCxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQWhFLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLGNBQTVDLENBQTJELE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBckUsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsV0FBNUMsQ0FBd0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFsRSxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxhQUE1QyxDQUEwRCxNQUFNLENBQUMsZUFBUCxDQUF1QixhQUF2QixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQS9DLENBQTFELENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLGVBQTVDLENBQTRELE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBdEUsQ0FDQSxDQVJBLElBU0UsQ0FDRixNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxlQUFQLENBQXVCLHdCQUF2QixDQUFnRCxJQUF4RCxDQUE2RCxZQUFZLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBbkYsQ0FBNEYsaUJBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBdkgsQ0FBd0ksY0FBYyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQWhLLENBQTZLLGdCQUFnQixNQUFNLENBQUMsZUFBUCxDQUF1QixhQUF2QixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQS9DLENBQTdMLENBQTBQLGtCQUFrQixNQUFNLENBQUMsRUFBUCxDQUFVLGVBQXRSLENBQTVDLENBRUQsQ0FDRztBQUVGO0FBQ0csTUFBTSxDQUFDLGVBQVAsQ0FBdUIsVUFBdkIsQ0FBa0MsSUFBbEMsQ0FDRDtBQUNDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFdBQXZCLENBQW1DLEtBQW5DLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQThDLElBQTlDLENBRUg7QUFHRjtBQUNBLHlCQUF5QixDQUFDLE9BQTFCLENBQWtDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBcEIsQ0FBb0MsR0FBRyxDQUFFLENBQUMsQ0FBQyxPQUFPLGNBQVIsQ0FBdUIsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQU4sQ0FBbUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBbkMsQ0FBRCxDQUE2QyxDQUFDLElBQUksQ0FBQyxrQkFBTixDQUF5QixLQUFLLENBQUMsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXRELENBQTdDLENBQS9CLENBQUQsQ0FBekMsQ0FBbEMsRUFFRDtBQUNDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFFBQXZCLENBQWdDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFNBQXZCLENBQWlDLE9BQWpDLENBQXlDLE1BQXpFLENBQWdGLFVBQWhGLENBQTJGLEtBQTNGLEVBQ0MsQ0F6Q25CLENBeUNvQixTQUFTLEtBQVQsQ0FBZSxDQUNkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUVMLENBNUNoQixFQThDUCxDQXBGQyxDQXVGRyxNQUFNLENBQUMsZUFBUCxDQUF1QixrQkFBdkIsQ0FBNEMsU0FBUyxFQUFULENBQWMsQ0FFdkQsR0FBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsRUFBNkMsU0FBakQsQ0FBNEQsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLEVBQTVDLENBQzVELEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsWUFBdkIsQ0FBb0MsR0FBcEMsQ0FBd0MsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUFwRSxFQUFzRSxPQUF0RSxDQUE4RSxFQUE5RSxDQUFWLENBRUEsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFXLENBQ1QsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLEVBQTVDLENBQWlELE1BQU0sQ0FBQyxlQUFQLENBQXVCLFlBQXZCLENBQW9DLEdBQXBDLEVBQXlDLEVBQTFGLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLElBQTVDLENBQW1ELE1BQU0sQ0FBQyxlQUFQLENBQXVCLFlBQXZCLENBQW9DLEdBQXBDLEVBQXlDLElBQTVGLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZUFBdkIsQ0FBeUMsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsWUFBdkIsQ0FBb0MsR0FBcEMsQ0FBekMsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsY0FBNUMsQ0FBNkQsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLElBQTVDLENBQWtELElBQWxELENBQXVELE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxFQUFuRyxDQUF1RyxHQUFwSyxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLHNCQUF2QixDQUE4QyxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBckUsQ0FDQyxDQUNYLENBWkssQ0FlRDtBQUNULE1BQU0sQ0FBQyxlQUFQLENBQXVCLFlBQXZCLENBQXNDLFVBQVksQ0FFdkMsR0FBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixZQUF2QixFQUFxQyxTQUF6QyxDQUFvRCxNQUFNLENBQUMsZUFBUCxDQUF1QixZQUF2QixDQUFvQyxFQUFwQyxDQUVwRCxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0Esb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLElBQTlDLENBQW1ELGVBQW5ELEVBQW9FLElBQXBFLENBQ04sU0FBUyxJQUFULENBQWUsQ0FFUixNQUFNLENBQUMsZUFBUCxDQUF1QixZQUF2QixDQUFzQyxJQUFJLENBQUMsSUFBM0MsQ0FDVSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixFQUFtQixJQUF2QixDQUNBLENBQ0MsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsa0JBQXZCLENBQTBDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBcEQsRUFFQyxDQUVaLENBVkQsQ0FVRSxTQUFTLEtBQVQsQ0FBZSxDQUNHLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNwQixDQVpBLEVBYU4sQ0FsQkwsQ0FzQkQsTUFBTSxDQUFDLGVBQVAsQ0FBdUIscUJBQXZCLENBQWdELFNBQVMsUUFBVCxDQUM1QyxDQUNFLEdBQUksQ0FBQSxTQUFKLENBQ0EsR0FBSSxDQUFBLFlBQVksQ0FBRyx5QkFBeUIsQ0FBQyxlQUExQixDQUEwQyxNQUFNLENBQUMsYUFBakQsQ0FBbkIsQ0FDQSxHQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsWUFBZCxHQUErQixZQUFZLENBQUMsTUFBYixDQUFvQixDQUF2RCxDQUEwRCxTQUFTLENBQUcsWUFBWSxDQUFDLENBQUQsQ0FBeEIsQ0FDcEQsR0FBSSxDQUFBLFNBQVMsQ0FBQyxDQUFkLENBQWdCLGVBQWUsQ0FBQyxDQUFoQyxDQUNBLEdBQUksU0FBUyxFQUFFLFNBQWYsQ0FDQSxDQUNHLEdBQUksU0FBUyxDQUFDLEdBQVYsRUFBZSxTQUFmLEVBQTRCLFNBQVMsQ0FBQyxHQUFWLEVBQWUsSUFBL0MsQ0FDQSxDQUNBLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFWLENBQWMsTUFBN0IsQ0FBb0MsQ0FBQyxFQUFyQyxDQUNBLENBQ0UsR0FBSSxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsSUFBakIsRUFBdUIsUUFBM0IsQ0FDQSxDQUNFLEdBQUksU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLEVBQXdCLFNBQXhCLEVBQXFDLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixFQUF3QixJQUFqRSxDQUNBLENBQ0UsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLE1BQXRDLENBQTZDLENBQUMsRUFBOUMsQ0FDQSxDQUNDLEdBQUksU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLENBQXZCLEVBQTBCLElBQTFCLEVBQWdDLFlBQWhDLEVBQWdELFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixDQUF2QixFQUEwQixLQUExQixFQUFpQyxTQUFyRixDQUFnRyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLENBQXZCLEVBQTBCLEtBQXBDLENBQ2hHLEdBQUksU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLENBQXZCLEVBQTBCLElBQTFCLEVBQWdDLGtCQUFoQyxFQUFzRCxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsQ0FBdkIsRUFBMEIsS0FBMUIsRUFBaUMsU0FBM0YsQ0FBc0csZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixDQUF2QixFQUEwQixLQUExQyxDQUd0RyxDQUdGLENBRUYsQ0FFQSxDQUNGLENBQ0gsQ0FDVCxNQUFPLENBQUMsWUFBWSxTQUFiLENBQXVCLGtCQUFrQixlQUF6QyxDQUFQLENBQ0MsQ0FqQ0wsQ0FzQ0UsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLENBQXdDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLHFCQUF2QixDQUE2Qyx5QkFBN0MsQ0FBeEMsQ0FHQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixFQUFtQixJQUFuQixFQUE0QixDQUFDLE1BQU0sQ0FBQyxjQUFwQyxFQUFzRCxDQUFDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUFsRixDQUNBLENBRUU7QUFDQTtBQUNBO0FBRUQsQ0FQRCxJQU9NLElBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLElBQXZCLENBQ04sQ0FDRztBQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFlBQXZCLEdBQ0E7QUFFRixDQUdHO0FBQ0EsTUFBTSxDQUFDLG1CQUFQLENBQThCLFVBQVUsQ0FDakMsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsbUJBQXZCLENBQTRDLENBQUMsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsbUJBQXBFLENBQ0EsR0FBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixtQkFBM0IsQ0FBZ0QsQ0FFNUM7QUFDQyxvQkFBb0IsQ0FBQyx3QkFBckIsQ0FBOEMsSUFBOUMsQ0FBbUQsZUFBbkQsRUFBb0UsSUFBcEUsQ0FDYyxTQUFTLElBQVQsQ0FBZSxDQUNHLE1BQU0sQ0FBQyxZQUFQLENBQXNCLElBQUksQ0FBQyxJQUEzQixDQUNBO0FBQ0EsR0FBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsRUFBeUMsU0FBN0MsQ0FDVyxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBRSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBd0MsTUFBeEQsQ0FBK0QsQ0FBQyxFQUFoRSxDQUFvRSxDQUM5RDtBQUNBLEdBQUksQ0FBQSxDQUFDLENBQUcsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsWUFBdkIsQ0FBb0MsR0FBcEMsQ0FBd0MsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUFwRSxFQUFzRSxPQUF0RSxDQUE4RSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBd0MsQ0FBeEMsRUFBMkMsa0JBQXpILENBQVIsQ0FDQSxHQUFJLENBQUMsRUFBRSxDQUFQLENBQVUsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLENBQXdDLENBQXhDLEVBQTJDLGlCQUEzQyxDQUErRCxNQUFNLENBQUMsWUFBUCxDQUFvQixDQUFwQixFQUF1QixJQUF0RixDQUNmLENBRVgsQ0FYakMsQ0FXa0MsU0FBUyxLQUFULENBQWUsQ0FDM0IsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ1UsQ0FiaEMsRUFnQlYsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsRUFBc0IsU0FBdEIsRUFBbUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLENBQXJCLEdBQXlCLElBQWhFLENBQXNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUF1QixFQUF2QixDQUN2RTtBQUNFLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF5Qyx5QkFBeUIsQ0FBQyxvQkFBMUIsRUFBekMsQ0FBMEY7QUFFMUY7QUFDQyxHQUFJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixFQUF5QyxTQUE3QyxDQUNBLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixNQUFyQyxDQUE2QyxDQUFDLEVBQTlDLENBQWtELENBQ2pELElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFFLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF3QyxNQUF4RCxDQUErRCxDQUFDLEVBQWhFLENBQW9FLENBQ2pDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLENBQXJCLEdBQXlCLElBQTdCLENBQW1DLENBQ2hDLEdBQUksTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLENBQXdDLENBQXhDLEVBQTJDLFFBQTNDLEVBQXFELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixDQUFyQixFQUF3QixRQUFqRixDQUE0RixDQUN4RixNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBd0MsTUFBeEMsQ0FBK0MsQ0FBL0MsQ0FBaUQsQ0FBakQsRUFBb0Q7QUFDdkQsQ0FDSCxDQUNMLENBQzlCLENBQ29CO0FBQ0EsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLE1BQXJDLENBQTZDLENBQUMsRUFBOUMsRUFDYyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixDQUFyQixHQUF5QixJQUE3QixDQUNJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF3QyxJQUF4QyxDQUE2QyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsQ0FBckIsQ0FBN0MsRUFGbEIsQ0FLdkI7QUFDQSxHQUFJLENBQUEsT0FBTyxDQUFDLEVBQVosQ0FFRSxHQUFJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixFQUF5QyxTQUE3QyxDQUF1RCxDQUVqQyxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBRSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBd0MsTUFBeEQsQ0FBK0QsQ0FBQyxFQUFoRSxDQUFvRSxDQUNoRCxHQUFJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF3QyxDQUF4QyxFQUEyQyxHQUEzQyxFQUFnRCxTQUFwRCxDQUNJLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFFLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF3QyxDQUF4QyxFQUEyQyxHQUEzQyxDQUErQyxNQUEvRCxDQUFzRSxDQUFDLEVBQXZFLENBQTJFLENBQ25FO0FBQ0EsR0FBTSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBd0MsQ0FBeEMsRUFBMkMsR0FBM0MsQ0FBK0MsQ0FBL0MsRUFBa0QsS0FBbEQsRUFBeUQsS0FBMUQsRUFBcUUsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLENBQXdDLENBQXhDLEVBQTJDLEdBQTNDLENBQStDLENBQS9DLEVBQWtELEtBQWxELEVBQXlELElBQW5JLENBQTJJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF3QyxDQUF4QyxFQUEyQyxHQUEzQyxDQUErQyxDQUEvQyxFQUFrRCxLQUFsRCxDQUF3RCxLQUF4RCxDQUMzSTtBQUVILEVBQ04sT0FBTyxDQUFDLElBQVIsQ0FBYSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBd0MsQ0FBeEMsQ0FBYixFQUNSLENBQ2Y7QUFDeEIsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLENBQXdDLE9BQXhDLENBQWlEO0FBSTdDLENBQUM7QUFDWCxDQS9ERyxDQStERDtBQUdPLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGlCQUF2QixDQUEyQyxVQUFZLENBQ25ELFFBQVEsQ0FBQyxVQUFXLENBQ3BCLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBNUMsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixtQkFBdkIsQ0FBMkMsS0FBM0MsQ0FFQyxDQUpPLENBQVIsQ0FLSCxDQU5ELENBUUYsTUFBTSxDQUFDLGVBQVAsQ0FBdUIscUJBQXZCLENBQStDLFVBQVksQ0FDckQsUUFBUSxDQUFDLFVBQVcsQ0FFcEIsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsbUJBQXZCLENBQTJDLEtBQTNDLENBRUMsQ0FKTyxDQUFSLENBS0gsQ0FOSCxDQVNGLE1BQU0sQ0FBQyxlQUFQLENBQXVCLHlCQUF2QixDQUFtRCxVQUFXLENBQUU7QUFDN0QsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsRUFBc0IsU0FBMUIsQ0FDQyxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsTUFBckMsQ0FBNEMsQ0FBQyxFQUE3QyxDQUFpRCxDQUM3QyxHQUFJLENBQUEsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixDQUFyQixFQUF3QixRQUEzQyxDQUFzRDtBQUN0RCxHQUFJLENBQUEsVUFBVSxDQUFHLGNBQWpCLENBQXFEO0FBRXJELEdBQUksY0FBYyxFQUFFLFNBQWhCLEVBQTZCLGNBQWMsRUFBRSxJQUFqRCxDQUF3RCxDQUNwRCxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsQ0FBckIsRUFBd0IsR0FBeEIsQ0FBNEIsTUFBM0MsQ0FBa0QsQ0FBQyxFQUFuRCxDQUF1RCxDQUNuRCxHQUFLLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixDQUFyQixFQUF3QixHQUF4QixDQUE0QixDQUE1QixFQUErQixJQUEvQixFQUFxQyxVQUF0QyxFQUFzRCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsQ0FBckIsRUFBd0IsR0FBeEIsQ0FBNEIsQ0FBNUIsRUFBK0IsS0FBL0IsRUFBc0MsSUFBaEcsQ0FBdUcsQ0FBRTtBQUNwRyxHQUFJLENBQUEsVUFBVSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixDQUFyQixFQUF3QixHQUF4QixDQUE0QixDQUE1QixFQUErQixJQUFoRCxDQUNBO0FBRUEsTUFBTSxDQUFDLEdBQVAsQ0FBVyxRQUFRLGNBQVIsQ0FBdUIsVUFBbEMsQ0FBNkMsU0FBUyxLQUFULENBQWdCLElBQWhCLENBQXFCLENBQUc7QUFFcEU7QUFDRSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBcEIsQ0FBMkIsQ0FBQyxFQUE1QixDQUFnQyxDQUM5QixHQUFJLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxJQUFSLEVBQWMsa0JBQWxCLENBQ0EsQ0FDRSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBMEMsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLEtBQWxELENBQXlEO0FBQ3pELE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUEwQyxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBakUsQ0FDRCxDQUNELEdBQUksSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLElBQVIsRUFBYyxZQUFsQixDQUFnQyxNQUFNLENBQUMsZUFBUCxDQUF1QixtQkFBdkIsQ0FBNkMsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLEtBQXJELENBQTZEO0FBQzlGLENBRUg7QUFDQSxNQUFNLENBQUMsZUFBUCxDQUF1Qix1QkFBdkIsR0FFTTtBQUVMLENBakJGLEVBaUJJO0FBQ1I7QUFDSjtBQUNKO0FBRUo7QUFDQSxDQUFDO0FBQ1AsQ0FwQ0MsQ0FvQ0Q7QUFFRyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixTQUExQixFQUF1QyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsSUFBckUsQ0FBMkUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLENBQXpCLENBRTNFLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFFBQXZCLENBQWdDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixTQUExRCxDQUVBO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FHWSxHQUFJLENBQUEsUUFBSixDQUNBLFFBQVEsQ0FBRyxjQUFjLENBQUMsR0FBZixDQUFtQixrREFBbkIsQ0FBWCxDQUNBLFFBQVEsQ0FBQyxNQUFULENBQWdCLFFBQVEsQ0FBQyxRQUFELENBQVIsQ0FBbUIsTUFBbkIsQ0FBaEIsRUFHTCxDQWx4QmEsQ0FBakIsQ0FveEJELE1BQU8sQ0FDRyxRQUFRLENBQUUsR0FEYixDQUdHLFVBQVUsQ0FBRSxVQUhmLENBSUcsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUVuQyxDQU5KLENBQVAsQ0FTRCxFQUNELGFBRU8sUUFBUyxDQUFBLG1CQUFULEVBQWdDLENBRS9CLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVMLFVBQVUsQ0FBQyxvQkFBUyxNQUFULENBQWdCLFdBQWhCLENBQTRCLG9CQUE1QixDQUFpRCxVQUFqRCxDQUE0RCxpQkFBNUQsQ0FBOEUsUUFBOUUsQ0FBdUYsWUFBdkYsQ0FBb0csUUFBcEcsQ0FDUyx5QkFEVCxDQUNtQyxNQURuQyxDQUMwQyxlQUQxQyxDQUMwRCxnQkFEMUQsQ0FDMkUsZUFEM0UsQ0FDMkYsY0FEM0YsQ0FDMEcsUUFEMUcsQ0FDbUgsUUFEbkgsQ0FDNEgsQ0FFdEksR0FBSSxNQUFNLENBQUMsU0FBUCxFQUFrQixTQUF0QixDQUFpQyxNQUFNLENBQUMsU0FBUCxDQUFtQixFQUFuQixDQUNqQyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixLQUE1QixDQUlLLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHFCQUFqQixDQUF1QyxLQUF2QyxDQUNBLEdBQUksTUFBTSxDQUFDLG9CQUFQLEVBQTZCLFNBQWpDLENBQTRDLE1BQU0sQ0FBQyxvQkFBUCxDQUE4QixFQUE5QixDQUM1QyxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0E7QUFDQSxHQUFJLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixjQUE1QixFQUE0QyxTQUFoRCxDQUEyRCxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsY0FBNUIsQ0FBNkMsRUFBN0MsQ0FFM0Q7QUFDQSxNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FFQSxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsYUFBNUIsQ0FBMEMsWUFBWSxDQUFDLGFBQXZELENBQ0EsTUFBTSxDQUFDLG9CQUFQLENBQTRCLGVBQTVCLENBQTRDLFlBQVksQ0FBQyxlQUF6RCxDQUNBLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixtQkFBNUIsQ0FBZ0QsUUFBUSxDQUFDLFNBQVQsQ0FBbUIsMEJBQW5CLENBQWhELENBQ0EsTUFBTSxDQUFDLG9CQUFQLENBQTRCLHFCQUE1QixDQUFrRCxRQUFRLENBQUMsU0FBVCxDQUFtQiw0QkFBbkIsQ0FBbEQsQ0FDQSxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsWUFBNUIsQ0FBMkMsS0FBM0MsQ0FDQSxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsaUJBQTVCLENBQThDLEtBQTlDLENBQ0EsTUFBTSxDQUFDLG9CQUFQLENBQTRCLGtCQUE1QixDQUFpRCxLQUFqRCxDQUNBLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixvQkFBNUIsQ0FBaUQsRUFBakQsQ0FDQSxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsbUJBQTVCLENBQWdELEVBQWhELENBQ0EsTUFBTSxDQUFDLG9CQUFQLENBQTRCLFNBQTVCLENBQXdDLENBQUMsT0FBTyxDQUFHLEVBQVgsQ0FBYyxJQUFJLENBQUMsRUFBbkIsQ0FBeEMsQ0FHQSxHQUFJLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixhQUE1QixFQUEyQyxTQUEzQyxFQUF3RCxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsYUFBNUIsRUFBMkMsRUFBdkcsQ0FDQSxDQUNJLEdBQUksTUFBTSxDQUFDLG9CQUFQLENBQTRCLG1CQUE1QixFQUFpRCxTQUFqRCxFQUE4RCxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsbUJBQTVCLEVBQWlELEVBQW5ILENBQ0EsQ0FDRSxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsWUFBNUIsQ0FBMkMsSUFBM0MsQ0FDRCxDQUhELElBSUEsQ0FDRSxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsYUFBNUIsQ0FBNkMsTUFBTSxDQUFDLG9CQUFQLENBQTRCLG1CQUF6RSxDQUNBLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixpQkFBNUIsQ0FBZ0QsSUFBaEQsQ0FDRCxDQUdKLENBWkQsSUFZSyxDQUNILFFBQVEsQ0FBQyxTQUFULENBQW1CLDBCQUFuQixDQUE4QyxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsYUFBMUUsRUFFRCxDQUVELEdBQUksTUFBTSxDQUFDLG9CQUFQLENBQTRCLGVBQTVCLEVBQTZDLFNBQWpELENBQ0EsQ0FDSSxHQUFJLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixxQkFBNUIsRUFBbUQsU0FBdkQsQ0FDQSxDQUNJLEdBQUksTUFBTSxDQUFDLG9CQUFQLENBQTRCLGlCQUFoQyxDQUNBLENBQ0UsTUFBTSxDQUFDLG9CQUFQLENBQTRCLGVBQTVCLENBQStDLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixxQkFBM0UsQ0FDRCxDQUNKLENBRUosQ0FWRCxJQVVNLElBQUksTUFBTSxDQUFDLG9CQUFQLENBQTRCLHFCQUE1QixFQUFtRCxTQUF2RCxDQUNOLENBQ0UsUUFBUSxDQUFDLFNBQVQsQ0FBbUIsNEJBQW5CLENBQWdELE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixlQUE1RSxFQUVELENBSkssSUFLTixDQUNJLEdBQUksTUFBTSxDQUFDLG9CQUFQLENBQTRCLGlCQUFoQyxDQUNBLENBRUUsTUFBTSxDQUFDLG9CQUFQLENBQTRCLGVBQTVCLENBQStDLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixxQkFBM0UsQ0FFRCxDQUxELElBTUEsQ0FDSSxRQUFRLENBQUMsU0FBVCxDQUFtQiw0QkFBbkIsQ0FBZ0QsTUFBTSxDQUFDLG9CQUFQLENBQTRCLGVBQTVFLEVBQ0gsQ0FDSixDQUVELE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixZQUE1QixDQUF5QyxNQUF6QyxDQUNGO0FBQ0UsTUFBTSxDQUFDLG9CQUFQLENBQTRCLFFBQTVCLENBQXFDLEdBQXJDLENBRUEsTUFBTSxDQUFDLG9CQUFQLENBQTRCLHNCQUE1QixDQUFtRCxJQUFuRCxDQUNFLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixjQUE1QixDQUE2QyxVQUMvQyxDQUNFLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixrQkFBNUIsQ0FBK0MsVUFBL0MsQ0FBMEQsVUFBMUQsQ0FBcUUsQ0FBQyxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsa0JBQTVCLENBQStDLFVBQS9DLENBQTBELFVBQWhJLENBQ0QsQ0FIQyxDQUtGLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixNQUE1QixDQUFxQyxVQUFVLENBQzNCLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBTSxDQUFDLG9CQUFQLENBQTRCLGFBQXRDLENBQW9ELE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixlQUFoRixFQUVuQixDQUhELENBTUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBakIsQ0FBa0MsVUFBVSxDQUNqQyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE2QixNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixLQUE1QixDQUFtQyxJQUFoRSxDQUNWLENBRkQsQ0FLQSxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBc0MsU0FBUyxTQUFULENBQW1CLENBRTVCLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixrQkFBNUIsQ0FBZ0QsU0FBUyxDQUFDLElBQVYsQ0FBZSxrQkFBL0QsQ0FDQSxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsU0FBNUIsQ0FBc0MsT0FBdEMsQ0FBOEMsTUFBOUMsQ0FBdUQsU0FBUyxDQUFDLElBQVYsQ0FBZSxPQUF0RSxDQUNBLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixTQUE1QixDQUFzQyxJQUF0QyxDQUE2QyxTQUFTLENBQUMsSUFBVixDQUFlLFNBQTVELENBQ0EsTUFBTSxDQUFDLG9CQUFQLENBQTRCLGNBQTVCLENBQTZDLFNBQVMsQ0FBQyxJQUFWLENBQWUsT0FBZixDQUF1QixDQUF2QixDQUE3QyxDQUNBLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixjQUE1QixDQUEyQyxjQUEzQyxDQUE0RCxTQUFTLENBQUMsSUFBVixDQUFlLGFBQTNFLENBQ0EsTUFBTSxDQUFDLG9CQUFQLENBQTRCLGNBQTVCLENBQTJDLEVBQTNDLENBQWdELE1BQU0sQ0FBQyxFQUF2RCxDQUNBLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixNQUE1QixDQUFxQyxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsY0FBNUIsQ0FBMkMsZ0JBQWhGLENBQ0EsR0FBSSxNQUFNLENBQUMsb0JBQVAsRUFBNkIsU0FBakMsQ0FBNEMsTUFBTSxDQUFDLG9CQUFQLENBQTRCLGNBQTVCLENBQTJDLFlBQTNDLENBQTBELE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixZQUF0RixDQUU1QyxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsb0JBQTVCLENBQW1ELFNBQVMsQ0FBQyxJQUFWLENBQWUsb0JBQWxFLENBQ0EsTUFBTSxDQUFDLG9CQUFQLENBQTRCLG1CQUE1QixDQUFrRCxTQUFTLENBQUMsSUFBVixDQUFlLG1CQUFqRSxDQUNBLEdBQUksQ0FBQyxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsaUJBQWpDLENBQW9ELE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixZQUE1QixDQUF5QyxJQUF6QyxDQUVwRCxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsa0JBQTVCLENBQWlELElBQWpELENBQ0EsTUFBTSxDQUFDLG9CQUFQLENBQTRCLFlBQTVCLENBQTBDLEtBQTFDLENBQ0EsTUFBTSxDQUFDLG9CQUFQLENBQTRCLGtCQUE1QixDQUErQyxVQUEvQyxDQUEwRCxDQUFDLFVBQVUsQ0FBQyxJQUFaLENBQWlCLFlBQVksQ0FBQyxDQUE5QixDQUExRCxDQUdBLEdBQUksTUFBTSxDQUFDLG9CQUFQLENBQTRCLG1CQUE1QixDQUFnRCxNQUFoRCxDQUF1RCxDQUEzRCxDQUNBLENBQ0csTUFBTSxDQUFDLG9CQUFQLENBQTRCLGNBQTVCLENBQTJDLGVBQTNDLENBQTZELE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixtQkFBNUIsQ0FBZ0QsQ0FBaEQsRUFBbUQsRUFBaEgsQ0FDQSxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsY0FBNUIsQ0FBMkMsbUJBQTNDLENBQStELE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixtQkFBNUIsQ0FBZ0QsQ0FBaEQsQ0FBL0QsQ0FFRixDQUxELElBT0EsQ0FFQyxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsY0FBNUIsQ0FBMkMsZUFBM0MsQ0FBNkQsQ0FBN0QsQ0FDQSxDQUVELEdBQUksTUFBTSxDQUFDLG9CQUFQLENBQTRCLG9CQUE1QixDQUFpRCxNQUFqRCxDQUF3RCxDQUE1RCxDQUNBLENBQ0csTUFBTSxDQUFDLG9CQUFQLENBQTRCLGNBQTVCLENBQTJDLGdCQUEzQyxDQUE4RCxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsb0JBQTVCLENBQWlELENBQWpELEVBQW9ELEVBQWxILENBQ0EsTUFBTSxDQUFDLG9CQUFQLENBQTRCLGNBQTVCLENBQTJDLG9CQUEzQyxDQUFnRSxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsb0JBQTVCLENBQWlELENBQWpELENBQWhFLENBRUYsQ0FMRCxJQU9BLENBQ0MsTUFBTSxDQUFDLG9CQUFQLENBQTRCLGNBQTVCLENBQTJDLGdCQUEzQyxDQUE4RCxDQUE5RCxDQUVBLENBQ0QsTUFBTSxDQUFDLG9CQUFQLENBQTRCLGNBQTVCLENBQTJDLFNBQTNDLENBQXFELEdBQXJELENBRUQsR0FBSSxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsY0FBNUIsQ0FBMkMsb0JBQTNDLEVBQWlFLFNBQWpFLEVBQThFLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixjQUE1QixDQUEyQyxvQkFBM0MsRUFBaUUsSUFBbkosQ0FDQSxDQUNFLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixjQUE1QixDQUEyQyxvQkFBM0MsQ0FBa0UsQ0FBbEUsQ0FFRCxDQUVBLE1BQU0sQ0FBQyxHQUFQLENBQVcseUJBQTBCLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixjQUE1QixDQUEyQyxlQUFoRixDQUFnRyxTQUFTLEtBQVQsQ0FBZSxLQUFmLENBQXFCLENBQ2xILE1BQU0sQ0FBQyxTQUFQLENBQWlCLGtCQUFqQixDQUFvQyxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsY0FBNUIsQ0FBMkMsZ0JBQS9FLENBQWdHLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixjQUE1QixDQUEyQyxlQUEzSSxFQUNILENBRkEsRUFHRCxNQUFNLENBQUMsR0FBUCxDQUFXLGtCQUFYLENBQThCLFNBQVMsS0FBVCxDQUFlLElBQWYsQ0FBb0IsQ0FDOUMsR0FBSSxJQUFJLEVBQUUsTUFBTSxDQUFDLG9CQUFQLENBQTRCLE1BQXRDLENBQThDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHFCQUFqQixDQUF1QyxLQUF2QyxDQUNqRCxDQUZELEVBS0EsTUFBTSxDQUFDLEdBQVAsQ0FBVyxjQUFlLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixjQUE1QixDQUEyQyxlQUFyRSxDQUFxRixTQUFTLEtBQVQsQ0FBZSxLQUFmLENBQXFCLENBRXZHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGtCQUFqQixDQUFvQyxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsY0FBNUIsQ0FBMkMsZ0JBQS9FLENBQWdHLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixjQUE1QixDQUEyQyxlQUEzSSxDQUEySixLQUEzSixFQUNGLENBSEQsRUFLQTtBQUM1QztBQUNBO0FBQ0E7QUFDQSxnREFDNEMsZUFBZSxDQUFDLGVBQWhCLENBQWdDLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixjQUE1QixDQUEyQyxnQkFBM0UsQ0FBNEYsTUFBTSxDQUFDLG9CQUFQLENBQTRCLGNBQTVCLENBQTJDLG9CQUF2SSxDQUE0SixJQUE1SixFQUFrSyxJQUFsSyxDQUF1SyxTQUFTLEtBQVQsQ0FBZ0IsQ0FFbkwsTUFBTSxDQUFDLG9CQUFQLENBQTRCLFlBQTVCLENBQTJDLEtBQUssQ0FBQyxJQUFqRCxDQUdBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHFCQUFqQixDQUF1QyxJQUF2QyxDQUlELENBVEgsQ0FTSSxTQUFTLEtBQVQsQ0FBZSxDQUViLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNILENBWkgsRUFhM0IsQ0FsRkQsQ0FvRkEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQXNDLFNBQVMsV0FBVCxDQUFxQixVQUFyQixDQUFnQyxNQUFoQyxDQUF1QyxDQUN2RSxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBRUUsTUFBTSxDQUFDLG9CQUFQLENBQTRCLGdCQUE1QixDQUErQyxXQUEvQyxDQUdBLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixlQUE1QixDQUE4QyxVQUE5QyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHFCQUFqQixDQUF1QyxLQUF2QyxDQUNGLGVBQWUsQ0FBQyxjQUFoQixDQUErQixXQUEvQixDQUEyQyxVQUEzQyxDQUFzRCxJQUF0RCxFQUE0RCxJQUE1RCxDQUFpRSxTQUFTLElBQVQsQ0FBZSxDQUdoRSxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBb0MsSUFBcEMsRUFFRyxDQUxuQixDQUtvQixTQUFTLEtBQVQsQ0FBZSxDQUdiLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNMLENBVGpCLEVBV0osQ0FuQkYsQ0FvQkEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLENBQXFDLFNBQVMsTUFBVCxDQUFnQixDQUc3QyxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBRUQsZUFBZSxDQUFDLGlCQUFoQixDQUFrQyxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsZ0JBQTlELENBQStFLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixlQUEzRyxDQUEySCxNQUEzSCxDQUFrSSxJQUFsSSxFQUF3SSxJQUF4SSxDQUE2SSxTQUFTLElBQVQsQ0FBZSxDQUdySSxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsb0JBQTVCLENBQWtELElBQUksQ0FBQyxJQUFMLENBQVUsSUFBVixDQUFlLG9CQUFqRSxDQUNBLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixtQkFBNUIsQ0FBaUQsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUFWLENBQWUsbUJBQWhFLENBQ0EsR0FBSSxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsbUJBQTVCLEVBQWlELFNBQXJELENBQ0UsQ0FDQSxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsY0FBNUIsQ0FBMkMsZUFBM0MsQ0FBNkQsTUFBTSxDQUFDLG9CQUFQLENBQTRCLG1CQUE1QixDQUFnRCxFQUE3RyxDQUVDLENBRUgsR0FBSSxNQUFNLEVBQUUsT0FBWixDQUVBLENBQ0UsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsR0FDQSxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsYUFBNUIsQ0FBMEMsSUFBMUMsQ0FDQSxVQUFVLENBQUMsVUFBWCxDQUFzQixjQUF0QixDQUFxQyxJQUFJLENBQUMsSUFBTCxDQUFVLFNBQS9DLEVBRUQsQ0FFRCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLEdBQXRDLENBQTBDLFNBQTFDLEVBR0wsQ0F2QmxCLENBdUJtQixTQUFTLEtBQVQsQ0FBZSxDQUdiLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNMLENBM0JoQixFQTRCTixDQWpDRCxDQXFDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixDQUErQixTQUFTLElBQVQsQ0FBYyxTQUFkLENBQXdCLENBR2pELEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FFQSxHQUFJLElBQUksQ0FBQyxVQUFULENBQXFCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQThCLElBQTlCLEVBQ3JCLEdBQUksSUFBSSxDQUFDLE1BQVQsQ0FBaUIsQ0FHYixlQUFlLENBQUMsV0FBaEIsQ0FBNEIsTUFBTSxDQUFDLG9CQUFQLENBQTRCLGVBQXhELENBQXdFLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixTQUE1QixDQUFzQyxJQUE5RyxDQUFtSCxTQUFuSCxDQUE2SCxJQUE3SCxFQUFtSSxJQUFuSSxDQUF3SSxTQUFTLElBQVQsQ0FBZSxDQUUvSSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLEdBQXRDLENBQTBDLFNBQTFDLEVBQ0EsVUFBVSxDQUFDLFVBQVgsQ0FBc0IseUJBQXlCLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixlQUEzRSxDQUEyRixJQUFJLENBQUMsSUFBTCxDQUFVLFNBQXJHLEVBQ1AsQ0FKRCxDQUlFLFNBQVMsS0FBVCxDQUFlLENBRVQsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBRVAsQ0FSRCxFQVVMLENBQUM7QUFiQSxJQWVGLENBQ0UsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsNEJBQTVCLENBQXlELFNBQXpELEVBRUQsQ0FDSixDQXpCRCxDQTJCSixNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUFnQyxTQUFVLElBQVYsQ0FBZ0IsQ0FDN0MsSUFBSSxDQUFDLGFBQUwsR0FDQSxPQUFPLENBQUMsT0FBUixDQUFnQixJQUFoQixDQUFzQixTQUFTLElBQVQsQ0FBZSxDQUNyQyxHQUFHLElBQUksRUFBSSxJQUFJLENBQUMsWUFBTCxHQUFzQixJQUE5QixFQUFzQyxJQUFJLENBQUMsYUFBOUMsQ0FBNkQsQ0FDekQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsSUFBOUIsRUFDSCxDQUNKLENBSkcsRUFLUCxDQVBJLENBU0YsR0FBSSxDQUFBLFFBQUosQ0FDYyxHQUFJLE1BQU0sQ0FBQyxjQUFYLENBQTJCLFFBQVEsQ0FBRyxjQUFjLENBQUMsR0FBZixDQUFtQiwrQ0FBbkIsQ0FBWCxDQUEzQixJQUNLLENBQUEsUUFBUSxDQUFHLGNBQWMsQ0FBQyxHQUFmLENBQW1CLGtEQUFuQixDQUFYLENBRUwsUUFBUSxDQUFDLE1BQVQsQ0FBZ0IsUUFBUSxDQUFDLFFBQUQsQ0FBUixDQUFtQixNQUFuQixDQUFoQixFQUdiLENBeFJJLENBeVJGLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FRbEMsQ0FqU0EsQ0FBUCxDQW1TUCxFQUNELGFBRU8sUUFBUyxDQUFBLHlCQUFULEVBQXNDLENBRXJDLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVGLFdBQVcsQ0FBRSxxREFGWCxDQUdGLFVBQVUsQ0FBRSxvQkFBUyxNQUFULENBQWdCLFlBQWhCLENBQTZCLG9CQUE3QixDQUFrRCxVQUFsRCxDQUE2RCxpQkFBN0QsQ0FBK0UsdUNBRXBGLE1BQU0sQ0FBQyxJQUFQLENBQVksMkJBQVosQ0FFQSxHQUFLLGNBQUEsTUFBTSxDQUFDLEVBQVAseUVBQVcsU0FBWCxzRUFBdUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUFqQyxJQUFzQyxTQUEzQyxDQUF1RCxDQUNyRTtBQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTlCLEVBQW9DLEVBQXBDLENBQ0EsQ0FFYyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUE5QixFQUFrQyxRQUFsQyxDQUEyQyxVQUMzQyxDQUNJLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLE1BQXJCLEVBQTZCLFNBQWpDLENBQTRDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixNQUFyQixDQUE0QixFQUE1QixDQUM1QyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsTUFBckIsQ0FBNEIsSUFBNUIsQ0FBaUMsQ0FBQyxPQUFPLENBQUMsRUFBVCxDQUFqQyxFQUNILENBSkQsQ0FNQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUE5QixFQUFrQyxRQUFsQyxDQUE2QyxTQUFTLEdBQVQsQ0FBYSxDQUN0RCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsTUFBckIsQ0FBNEIsTUFBNUIsQ0FBbUMsR0FBbkMsQ0FBdUMsQ0FBdkMsRUFDSCxDQUZELENBSUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBOUIsRUFBa0MsU0FBbEMsQ0FBNEMsU0FBUyxLQUFULENBQzVDLENBQ0ksR0FBSSxLQUFLLENBQUMsT0FBTixFQUFlLFNBQW5CLENBQThCLEtBQUssQ0FBQyxPQUFOLENBQWMsRUFBZCxDQUM5QixLQUFLLENBQUMsT0FBTixDQUFjLElBQWQsQ0FBbUIsRUFBbkIsRUFDSCxDQUpELENBTUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBOUIsRUFBa0MsWUFBbEMsQ0FBK0MsU0FBUyxLQUFULENBQWUsS0FBZixDQUMvQyxDQUNJLEdBQUksS0FBSyxDQUFDLE9BQU4sRUFBZSxTQUFuQixDQUE4QixLQUFLLENBQUMsT0FBTixDQUFjLEVBQWQsQ0FDOUIsS0FBSyxDQUFDLE9BQU4sQ0FBYyxNQUFkLENBQXFCLEtBQXJCLENBQTJCLENBQTNCLENBQTZCLEVBQTdCLEVBQ0gsQ0FKRCxDQUtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTlCLEVBQWtDLFNBQWxDLENBQTRDLFNBQVMsS0FBVCxDQUFlLEtBQWYsQ0FDN0MsQ0FDSSxHQUFJLEtBQUssQ0FBQyxPQUFOLEVBQWUsU0FBbkIsQ0FBOEIsS0FBSyxDQUFDLE9BQU4sQ0FBYyxFQUFkLENBQzlCLEdBQUksS0FBSyxDQUFDLE9BQU4sQ0FBYyxNQUFkLENBQXFCLEtBQXpCLENBQWlDLEtBQUssQ0FBQyxPQUFOLENBQWMsTUFBZCxDQUFxQixLQUFyQixDQUEyQixDQUEzQixFQUNwQyxDQUpBLENBS0osQ0F0Q0YsQ0F1Q0YsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUdsQyxDQTFDQSxDQUFQLENBNkNQLEVBQ0QsYUFFTyxRQUFTLENBQUEsc0JBQVQsRUFBbUMsQ0FFbEMsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUYsV0FBVyxDQUFFLGtEQUZYLENBR0YsVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBZ0IsWUFBaEIsQ0FBNkIsb0JBQTdCLENBQWtELFVBQWxELENBQTZELGlCQUE3RCxDQUErRSxDQUN2RixDQUpGLENBS0YsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUdsQyxDQVJBLENBQVAsQ0FXUCxFQUNNLFFBQVMsQ0FBQSxxQkFBVCxFQUFrQyxDQUNyQyxNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFSCxXQUFXLENBQUUsaURBRlYsQ0FHRCxLQUFLLENBQUUsQ0FDTCxFQUFFLENBQUUsR0FEQyxDQUhOLENBTUgsVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBaUIsVUFBakIsQ0FBNEIsQ0FDcEMsTUFBTSxDQUFDLElBQVAsQ0FBWSx1QkFBWixDQUNDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLEVBQXdCLFNBQXhCLEVBQXFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixFQUF3QixJQUFqRSxDQUF1RSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsRUFBckIsQ0FFN0QsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsTUFBckIsRUFBK0IsU0FBL0IsRUFBNEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLE1BQXJCLEVBQStCLElBQS9FLENBQ0EsQ0FFQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsTUFBckIsQ0FBOEIsQ0FDMUIsSUFBSSxDQUFFLENBQ0YsSUFBSSxDQUFFLE1BREosQ0FFRixLQUFLLENBQUMsT0FGSixDQUdGLEtBQUssQ0FBQyxDQUhKLENBSUYsS0FBSyxDQUFDLFNBSkosQ0FEb0IsQ0FPMUIsS0FBSyxDQUFFLENBQ0gsSUFBSSxDQUFFLE9BREgsQ0FFSCxLQUFLLENBQUMsT0FGSCxDQUdILEtBQUssQ0FBQyxDQUhILENBSUYsS0FBSyxDQUFDLFNBSkosQ0FQbUIsQ0FhMUIsR0FBRyxDQUFDLENBQ0EsSUFBSSxDQUFFLEtBRE4sQ0FFQSxLQUFLLENBQUMsT0FGTixDQUdBLEtBQUssQ0FBQyxDQUhOLENBSUEsS0FBSyxDQUFDLFNBSk4sQ0Fic0IsQ0FtQjFCLE1BQU0sQ0FBQyxDQUNILElBQUksQ0FBRSxRQURILENBRUgsS0FBSyxDQUFDLE9BRkgsQ0FHSCxLQUFLLENBQUMsQ0FISCxDQUlILEtBQUssQ0FBQyxTQUpILENBbkJtQixDQUE5QixDQTBCQSxDQUdBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLE1BQXJCLEVBQWdDLFNBQWhDLEVBQThDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixNQUFyQixFQUFnQyxJQUFsRixDQUF3RixDQUNoRixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsTUFBckIsQ0FBNkIsQ0FDeEIsSUFBSSxDQUFFLENBQ0gsSUFBSSxDQUFFLGFBREgsQ0FFSCxLQUFLLENBQUUsQ0FGSixDQUdILEtBQUssQ0FBQyxJQUhILENBSUgsSUFBSSxDQUFFLElBSkgsQ0FEa0IsQ0FPeEIsS0FBSyxDQUFFLENBQ0osSUFBSSxDQUFFLGNBREYsQ0FFSixLQUFLLENBQUUsQ0FGSCxDQUdKLEtBQUssQ0FBQyxJQUhGLENBSUosSUFBSSxDQUFFLElBSkYsQ0FQaUIsQ0FheEIsR0FBRyxDQUFFLENBQ0YsSUFBSSxDQUFFLFlBREosQ0FFRixLQUFLLENBQUUsQ0FGTCxDQUdGLEtBQUssQ0FBQyxJQUhKLENBSUYsSUFBSSxDQUFFLElBSkosQ0FibUIsQ0FtQnhCLE1BQU0sQ0FBRSxDQUNMLElBQUksQ0FBRSxlQURELENBRUwsS0FBSyxDQUFFLENBRkYsQ0FHTCxLQUFLLENBQUMsSUFIRCxDQUlMLElBQUksQ0FBRSxJQUpELENBbkJnQixDQUE3QixDQTBCUCxDQUNELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLE9BQXJCLEVBQWlDLFNBQWpDLEVBQStDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixPQUFyQixFQUFpQyxJQUFwRixDQUF5RixDQUNqRixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsT0FBckIsQ0FBOEIsQ0FDN0IsSUFBSSxDQUFFLENBQ0gsSUFBSSxDQUFFLGNBREgsQ0FFSCxLQUFLLENBQUUsQ0FGSixDQUdILEtBQUssQ0FBQyxJQUhILENBSUgsSUFBSSxDQUFFLElBSkgsQ0FEdUIsQ0FPN0IsS0FBSyxDQUFFLENBQ0osSUFBSSxDQUFFLGVBREYsQ0FFSCxLQUFLLENBQUUsQ0FGSixDQUdKLEtBQUssQ0FBQyxJQUhGLENBSUosSUFBSSxDQUFFLElBSkYsQ0FQc0IsQ0FhN0IsR0FBRyxDQUFFLENBQ0YsSUFBSSxDQUFFLGFBREosQ0FFSCxLQUFLLENBQUUsQ0FGSixDQUdGLEtBQUssQ0FBQyxJQUhKLENBSUYsSUFBSSxDQUFFLElBSkosQ0Fid0IsQ0FtQjdCLE1BQU0sQ0FBRSxDQUNMLElBQUksQ0FBRSxnQkFERCxDQUVMLEtBQUssQ0FBRSxDQUZGLENBR0wsS0FBSyxDQUFDLElBSEQsQ0FJTCxJQUFJLENBQUUsSUFKRCxDQW5CcUIsQ0FBOUIsQ0EyQlAsQ0FJTCxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBbUIsU0FBUyxRQUFULENBQWtCLENBQ2pDLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBVixDQUFtQixRQUFuQixDQUNILENBRkQsQ0FJQSxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBeUIsU0FBUyxRQUFULENBQWtCLENBQ3ZDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixRQUF6QixDQUNILENBRkQsQ0FHTCxDQTdHSixDQThHSCxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLE9BQWpCLENBQTBCLElBQTFCLENBQWdDLENBR3JDLENBakhFLENBQVAsQ0FtSEgsRUFDRCxhQUVPLFFBQVMsQ0FBQSwyQkFBVCxFQUF3QyxDQUV2QyxNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFRixXQUFXLENBQUUsdURBRlgsQ0FHRixVQUFVLENBQUUsb0JBQVMsTUFBVCxDQUFnQixZQUFoQixDQUE2QixvQkFBN0IsQ0FBa0QsVUFBbEQsQ0FBNkQsaUJBQTdELENBQStFLENBRXZGLENBTEYsQ0FNRixJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBS2xDLENBWEEsQ0FBUCxDQWNQLEVBQ0QsYUFFTyxRQUFTLENBQUEseUJBQVQsRUFBc0MsQ0FFckMsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUYsV0FBVyxDQUFFLHFEQUZYLENBR0YsVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBZ0IsWUFBaEIsQ0FBNkIsb0JBQTdCLENBQWtELFVBQWxELENBQTZELGlCQUE3RCxDQUErRSxDQUV2RixDQUxGLENBTUYsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUtsQyxDQVhBLENBQVAsQ0FjUCxFQUNELGFBRU8sUUFBUyxDQUFBLHNCQUFULEVBQW1DLENBRWxDLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVGLFdBQVcsQ0FBRSxrREFGWCxDQUdGLFVBQVUsQ0FBRSxvQkFBUyxNQUFULENBQWdCLFlBQWhCLENBQTZCLG9CQUE3QixDQUFrRCxVQUFsRCxDQUE2RCxpQkFBN0QsQ0FBK0UsQ0FDdkYsQ0FKRixDQUtGLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FHbEMsQ0FSQSxDQUFQLENBV1AsRUFDRCxhQUVPLFFBQVMsQ0FBQSxtQkFBVCxFQUFnQyxDQUUvQixNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFRixXQUFXLENBQUUsK0NBRlgsQ0FHRixVQUFVLENBQUUsb0JBQVMsTUFBVCxDQUFnQixZQUFoQixDQUE2QixvQkFBN0IsQ0FBa0QsVUFBbEQsQ0FBNkQsaUJBQTdELENBQStFLENBQ3ZGLENBSkYsQ0FLRixJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBR2xDLENBUkEsQ0FBUCxDQVdQLEVBQ0QsYUFFTyxRQUFTLENBQUEsb0JBQVQsRUFBaUMsQ0FFaEMsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUYsV0FBVyxDQUFFLGdEQUZYLENBR0YsVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBZ0IsWUFBaEIsQ0FBNkIsb0JBQTdCLENBQWtELFVBQWxELENBQTZELGlCQUE3RCxDQUErRSxDQUN2RixDQUpGLENBS0YsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUdsQyxDQVJBLENBQVAsQ0FXUCxFQUNELGFBRU8sUUFBUyxDQUFBLE1BQVQsRUFBbUIsQ0FDbEIsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRVosVUFBVSxDQUFFLG9CQUFVLE1BQVYsQ0FBa0IsVUFBbEIsQ0FBNkIsUUFBN0IsQ0FBc0Msb0JBQXRDLENBQTJELGlCQUEzRCxDQUE2RSxRQUE3RSxDQUFzRixnQkFBdEYsQ0FBdUcsV0FBdkcsQ0FBbUgsZUFBbkgsQ0FBbUkseUJBQW5JLENBQTZKLG1CQUE3SixDQUFpTCxFQUFqTCxDQUFxTCxDQUc1TCxNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FDQSxNQUFNLENBQUMsTUFBUCxDQUFnQixVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixZQUEvQixDQUE0QyxFQUE1RCxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLEVBQXFCLFNBQXpCLENBQW9DLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixFQUFwQixDQUNwQyxHQUFJLE1BQU0sQ0FBQyxRQUFQLEVBQW1CLFNBQXZCLENBQWtDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQUMsRUFBRCxDQUFoQixDQUNsQyxHQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQWhCLEVBQTBCLENBQTlCLENBQWlDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLElBQWhCLENBQXFCLEVBQXJCLEVBRWpDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFULENBQVgsQ0FBdEIsQ0FDQSxHQUFJLENBQUEsY0FBSixDQUFtQixnQkFBbkIsQ0FDQSxNQUFNLENBQUMsSUFBUCxDQUFjLElBQWQsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBa0MsV0FBVyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXJCLENBQTZCLEdBQTdCLENBQWlDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLFlBQS9CLENBQTRDLEVBQS9HLENBR0EsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsUUFBaEIsQ0FFQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixHQUF1QixTQUF2QixFQUFvQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsR0FBdUIsSUFBL0QsQ0FBcUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLEVBQXJCLENBQ3JFLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLHdCQUFyQixHQUFnRCxTQUFwRCxDQUErRCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsd0JBQXJCLENBQThDLEtBQTlDLENBRS9ELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLEdBQXNCLFNBQXRCLEVBQW1DLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixHQUFzQixJQUE3RCxDQUFtRSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsQ0FBcEIsQ0FFbkUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQWlDLENBQUMsWUFBWSxDQUFDLENBQWQsQ0FBZ0Isa0JBQWtCLENBQUMsSUFBbkMsQ0FBakMsQ0FFQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsRUFBNEIsQ0FBaEMsQ0FDQSxDQUNRLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixTQUFTLGVBQVQsQ0FDeEIsQ0FDUSxNQUFNLENBQUMsb0JBQVAsQ0FBOEIsZUFBOUIsQ0FFUCxDQUpELENBS0MsTUFBTSxDQUFDLGVBQVAsQ0FBeUIsU0FBUyxXQUFULENBQXNCLENBQ3hDLE1BQU0sQ0FBQyxZQUFQLENBQXNCLFdBQXRCLENBRVAsQ0FIQSxDQUlELE1BQU0sQ0FBQyxnQkFBUCxDQUEwQixTQUFTLFdBQVQsQ0FBc0IsQ0FDeEMsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsV0FBdkIsQ0FDUCxDQUZELENBR1AsQ0FDQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXdDLENBQzlCLFVBQVUsQ0FBRSxDQURrQixDQUU5QixRQUFRLENBQUUsRUFGb0IsQ0FHOUIsSUFBSSxDQUFFLElBSHdCLENBQXhDLENBT0YsR0FBSSxDQUFBLGdCQUFnQixDQUFHLENBQUMsR0FBRyxDQUFFLENBQUMsQ0FBQyxPQUFPLGtCQUFSLENBQTJCLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5DLENBQUQsQ0FBNkMsQ0FBQyxJQUFJLENBQUMsa0JBQU4sQ0FBeUIsS0FBSyxDQUFDLEVBQS9CLENBQTdDLENBQW5DLENBQUQsQ0FBTixDQUE2SCxPQUFPLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFOLENBQW9CLE1BQU0sQ0FBQyxLQUEzQixDQUFELENBQXRJLENBQTBLLElBQUksQ0FBRSxtQkFBaEwsQ0FBb00sUUFBUSxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBeE4sQ0FBdU8sTUFBTSxDQUFHLE1BQU0sQ0FBQyxPQUF2UCxDQUNDLGFBQWEsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BRDNCLENBQ29DO0FBQ25DLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFGdEMsQ0FFdUQsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGdCQUZsRyxDQUVtSCxlQUFlLENBQUMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBRjdKLENBRThLLE1BQU0sQ0FBQyxJQUZyTCxDQUF2QixDQUdBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFvQyx5QkFBeUIsQ0FBQyxjQUExQixDQUF5QyxnQkFBekMsQ0FBcEMsQ0FFQSxNQUFNLENBQUMsR0FBUCxDQUFhLG1CQUFiLENBRUEsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsU0FBUyxRQUFULENBQ3ZCLENBQ1EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsRUFBcUIsQ0FBekIsQ0FDQSxDQUNDLGdCQUFnQixDQUFHLFFBQW5CLENBQ0EsY0FBYyxDQUFDLEVBQWYsQ0FDQSxDQUpELElBTUEsQ0FDQyxnQkFBZ0IsQ0FBRyxFQUFuQixDQUNBLGNBQWMsQ0FBQyxRQUFmLENBQ0EsQ0FFRCxNQUFNLENBQUMsU0FBUCxDQUFpQixHQUFqQixDQUF1QixRQUF2QixDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixFQUE0QixDQUE1QixFQUFpQyxNQUFNLENBQUMsb0JBQVAsRUFBNkIsU0FBbEUsQ0FBNkUsTUFBTSxDQUFDLG9CQUFQLENBQTRCLElBQTVCLENBQWlDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLEdBQWxELEVBQzdFLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsRUFBMEMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsR0FBM0QsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsS0FBakIsQ0FBeUIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUF6QixDQUNBLE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBWCxDQUF5QixjQUF6QixDQUF3QyxjQUF4QyxDQUF3RCxRQUF4RCxFQUNBLEdBQUksUUFBUSxFQUFJLE1BQU0sQ0FBQyxvQkFBUCxFQUE2QixTQUE3QyxDQUF3RCxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsSUFBNUIsQ0FBaUMsUUFBakMsRUFBeEQsSUFDSyxJQUFJLE1BQU0sQ0FBQyxhQUFQLEVBQXNCLFNBQTFCLENBQXFDLE1BQU0sQ0FBQyxhQUFQLEdBQzFDLHlCQUF5QixDQUFDLE9BQTFCLENBQWtDLENBQzlCLEdBQUcsQ0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFOLENBQXlCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQU4sQ0FBbUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBbkMsQ0FBRCxDQUE2QyxDQUFDLElBQUksQ0FBQyxrQkFBTixDQUF5QixLQUFLLENBQUMsY0FBL0IsQ0FBN0MsQ0FDaEMsQ0FBQyxJQUFJLENBQUMsbUJBQU4sQ0FBMEIsS0FBSyxDQUFDLGdCQUFoQyxDQURnQyxDQUNrQixDQUFDLElBQUksQ0FBQyxvQkFBTixDQUEyQixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXJELENBRGxCLENBQS9CLENBQUQsQ0FEeUIsQ0FFK0YsUUFBUSxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FGbkgsQ0FFa0ksZUFBZSxDQUFDLE1BQU0sQ0FBQyxhQUZ6SixDQUFsQyxFQUlQLENBeEJELENBMEJILE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUFnQyxFQUFoQyxDQUVELHdFQWxGZ00sQ0FtRmhNLHdFQW5GZ00sQ0FvRmhNLHdFQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUE4QixTQUFTLFVBQVQsQ0FBcUIsVUFBckIsQ0FBZ0MsUUFBaEMsQ0FBeUMsQ0FHbkU7QUFDQSxHQUFJLENBQUEsUUFBUSxDQUFHLEVBQUUsQ0FBQyxLQUFILEVBQWYsQ0FFQSxRQUFRLENBQUMsVUFBVSxDQUVmLE1BQU0sQ0FBQyxlQUFQLENBQXVCLElBQXZCLENBQ0EsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNBLEdBQUksQ0FBQSxPQUFKLENBR0EsR0FBSSxVQUFVLEVBQUUsU0FBaEIsQ0FBMkIsVUFBVSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBc0MsVUFBbkQsQ0FDM0IsR0FBSSxRQUFRLEVBQUUsU0FBZCxDQUF5QixRQUFRLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUFzQyxRQUFqRCxDQUV6QixHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixHQUFnQyxTQUFwQyxDQUErQyxtREFDdkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLHlCQUFnQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEQsaURBQWdDLHVCQUErQixNQUEvRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBc0MsY0FBdEMseUJBQXFELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUF6RSxpREFBcUQsdUJBQStCLE1BQXBGLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUFzQyxhQUF0QyxDQUFzRCxJQUFJLENBQUMsSUFBTCxDQUFVLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBc0MsY0FBdEMsQ0FBcUQsUUFBL0QsQ0FBdEQsQ0FDUCxDQUVELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQStCLENBQW5DLENBQXFDLENBQ2pDLEdBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBcEIsQ0FBK0IsUUFBekMsRUFBbUQsVUFBdkQsQ0FDSSxPQUFPLENBQUcsSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBcEIsQ0FBK0IsUUFBekMsQ0FBVixDQUNQLENBRUEsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBeEIsQ0FDTyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsT0FBcEIsQ0FBOEIsQ0FBQyxPQUFPLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLEtBQTlCLENBQXFDLENBQUMsVUFBVSxDQUFFLENBQWIsRUFBa0IsUUFBdkQsQ0FBaUUsVUFBVSxDQUFHLFFBQTlFLENBQVgsQ0FBOUIsQ0FEUCxJQUdPLENBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE9BQXBCLENBQThCLEVBQTlCLENBQ1AsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE9BQXBCLENBQTRCLE9BQTVCLENBQW9DLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUF4RCxDQUVBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxVQUFoQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixPQUFwQixDQUE0QixRQUE1QixDQUF1QyxRQUF2QyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixPQUFwQixDQUE0QixhQUE1QixDQUE0QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXNDLGFBQWxGLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE9BQXBCLENBQTRCLEtBQTVCLENBQXNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUExRCxDQUdBLFFBQVEsQ0FBQyxPQUFULENBQWlCLENBQUMsSUFBSSxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixPQUEzQixDQUFqQixFQUNILENBbENNLENBQVIsQ0FvQ0YsTUFBTyxDQUFBLFFBQVEsQ0FBQyxPQUFoQixDQUVELENBNUNELENBNkNLO0FBQ1Q7QUFDQSxpRkFFUSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixFQUFzQixTQUExQixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsRUFBckIsQ0FDckMsTUFBTSxDQUFDLFNBQVAsQ0FBbUIsQ0FBQyxHQUFHLENBQUMsSUFBTCxDQUFuQixDQUVBLEdBQUksQ0FBQSxVQUFVLENBQUUsTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXNCLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUFzQixnQkFBdEIsQ0FBdUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFqRCxDQUF3RCxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsY0FBeEcsQ0FBdUgsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsR0FBeEksQ0FBaEIsQ0FDQSxHQUFJLENBQUEsY0FBYyxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLElBQXhDLENBRUEsR0FBSSxDQUFBLGFBQWEsQ0FBRyxRQUFoQixDQUFBLGFBQWdCLENBQVMsSUFBVCxDQUNwQixDQUNJLFVBQVUsQ0FBQyxPQUFYLENBQW1CLGVBQW5CLENBQXFDLElBQXJDLENBQ0EsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsZUFBbkIsQ0FBbUMsY0FBbkMsRUFDSCxDQUpELENBTUEsR0FBSSxDQUFBLG9CQUFvQixDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixjQUFyQixDQUFvQyxjQUFwQyxDQUFtRCxhQUFuRCxDQUEzQixDQUdBLEdBQUksQ0FBQSxXQUFXLENBQUcsUUFBZCxDQUFBLFdBQWMsQ0FBUyxJQUFULENBQ2xCLENBQ0ksR0FBSSxDQUFBLFVBQUosQ0FDQSxHQUFJLENBQUEsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFmLENBQ0EsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixHQUFqQixFQUFzQixLQUExQixDQUNBLENBQ0ksVUFBVSxDQUFHLEtBQWIsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixvQkFBckIsRUFBMkMsU0FBL0MsQ0FDQSxDQUNRLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG9CQUFyQixFQUEyQyxFQUEzQyxFQUFpRCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIscUJBQXJCLEVBQTRDLEVBQWpHLENBQ0EsQ0FDUSxHQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsS0FBZCxDQUFKLENBQ0EsQ0FDUSxHQUFJLEtBQUssQ0FBQyxNQUFOLENBQWEsQ0FBakIsQ0FBb0IsVUFBVSxDQUFHLEtBQUssQ0FBQyxDQUFELENBQWxCLENBQXBCLElBQ0ssQ0FBQSxVQUFVLENBQUcsSUFBYixDQUVaLENBTEQsSUFPQSxDQUNLLFVBQVUsQ0FBRyxLQUFiLENBQ0osQ0FDRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixFQUFrQyxTQUF0QyxDQUNBLENBQ1EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxzQkFBVixDQUFpQyxFQUFqQyxDQUFvQyxJQUFwQyxDQUF5QyxVQUF6QyxFQUNBLFVBQVUsQ0FBQyxJQUFYLENBQ1AsQ0FKRCxJQU1BLENBQ1EsR0FBSSxDQUFBLFFBQUosQ0FBYSxRQUFiLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsb0JBQXJCLEVBQTJDLEVBQS9DLENBQ0EsQ0FDUSxRQUFRLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG9CQUFoQyxDQUNBLFFBQVEsQ0FBRyxJQUFYLENBQ1AsQ0FKRCxJQU1BLENBQ1EsUUFBUSxDQUFHLElBQVgsQ0FDQSxRQUFRLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLHFCQUFoQyxDQUNQLENBQ0QsR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBaUMsR0FBakMsQ0FBcUMsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLFFBQUQsQ0FBUixDQUFxQixDQUF4RSxFQUEwRSxPQUExRSxDQUFrRixVQUFVLENBQUMsUUFBRCxDQUE1RixDQUFWLENBRUEsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFZLFVBQVUsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBaUMsR0FBakMsQ0FBYixDQUFaLElBQ0ssQ0FBQSxVQUFVLENBQUcsSUFBYixDQUNaLENBQ1IsQ0FDUixDQUNELE1BQU0sQ0FBQyxhQUFQLENBQXFCLFVBQXJCLEVBQ0gsQ0FDSixDQWhERCxDQWtEQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixnQkFBckIsRUFBdUMsU0FBdkMsRUFBb0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGdCQUFyQixFQUF1QyxJQUEvRixDQUVBLENBQ0ksR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsZ0JBQXJCLEVBQXVDLEVBQTNDLENBQ0EsQ0FDSSxHQUFJLENBQUEsZUFBZSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBaEMsQ0FDQSxHQUFJLENBQUEsaUJBQWlCLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGtCQUFyQixDQUF3QyxnQkFBeEMsQ0FBeUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGdCQUE5RSxDQUErRixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsY0FBakosQ0FDQSxHQUFJLENBQUEsUUFBUSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixpQkFBckIsQ0FBdUMsZUFBdkMsQ0FBdUQsY0FBdkQsQ0FBc0UsV0FBdEUsQ0FBa0YsSUFBbEYsQ0FBZixDQUNBLEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxRQUFYLENBQW9CLGlCQUFwQixDQUFWLENBQ0EsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsR0FBRyxDQUFDLEtBQXpCLEVBQ0gsQ0FDSixDQUdDO0FBQ0Q7QUFDQTtBQUVDLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUEwQixVQUFVLENBR2hDLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FHQSxvQkFBb0IsQ0FBQyxhQUFyQixDQUFtQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTdDLENBQXFELElBQXJELEVBQTJELElBQTNELENBQWdFLFNBQVMsSUFBVCxDQUFlLENBRTNELE1BQU0sQ0FBQyxFQUFQLENBQVUsb0JBQVYsQ0FBZ0MsSUFBSSxDQUFDLElBQXJDLENBRUQsQ0FKbkIsQ0FJb0IsU0FBUyxLQUFULENBQWUsQ0FDZCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFHTCxDQVJoQixFQVVILENBaEJELENBa0JBLCtEQUNGLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUEyQixVQUMzQixDQUNRLEdBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLEdBQXZDLEdBQTZDLFNBQTdDLEVBQTBELE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixHQUF2QyxFQUE0QyxNQUE1QyxDQUFtRCxDQUE3RyxFQUFrSCxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsSUFBNUksRUFBb0osTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLFNBQWxMLENBQ0EsQ0FDRSxvQkFBb0IsQ0FBQyxtQkFBckIsQ0FBeUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFuRCxDQUEyRCxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXJFLENBQW9GLElBQXBGLENBQXlGLENBQUMsU0FBVSxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsR0FBdkMsQ0FBWCxDQUF6RixFQUFrSixJQUFsSixDQUF1SixTQUFTLElBQVQsQ0FBZSxDQUUzSixHQUFJLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLFNBQXRCLENBQWlDLE1BQU0sQ0FBQyxRQUFQLENBQWtCLENBQUMsRUFBRCxDQUFsQixDQUNqQyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixFQUFxQixDQUF6QixDQUE0QixNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQTBDLElBQUksQ0FBQyxJQUFMLENBQVUsQ0FBVixDQUExQyxDQUE1QixJQUNLLENBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixFQUEwQyxJQUFJLENBQUMsSUFBL0MsQ0FDTCxNQUFNLENBQUMsYUFBUCxDQUFxQixNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLENBQXJCLEVBQ0EseUJBQXlCLENBQUMsU0FBMUIsQ0FBb0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUE5QyxDQUE2RCxNQUFNLENBQUMsYUFBcEUsRUFDQTtBQUNBO0FBQ04sQ0FUTCxDQVNNLFNBQVMsS0FBVCxDQUFlLENBQ2pCLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNILENBWEQsRUFZRCxDQUNSLENBakJELENBcUJBLE1BQU0sQ0FBQyxNQUFQLENBQWMsZUFBZCxDQUE4QixTQUFTLFFBQVQsQ0FBa0IsUUFBbEIsQ0FBMkIsQ0FDakQsR0FBSSxRQUFRLEVBQUUsUUFBZCxDQUNBLENBQ1EsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsUUFBckIsRUFFUCxDQUNSLENBTkQsRUFTQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQTJDLFNBQVMsSUFBVCxDQUFjLENBRWxDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsRUFBd0MsSUFBeEMsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBa0MsSUFBSSxDQUFDLFVBQXZDLENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQW1DLElBQW5DLENBQ0E7QUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsMEJBQXBCLENBQStDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsRUFBd0MsTUFBdkYsQ0FFQSx5QkFBeUIsQ0FBQyxPQUExQixDQUFrQyxDQUNsQyxHQUFHLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBTixDQUF5QixLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5DLENBQUQsQ0FBNkMsQ0FBQyxJQUFJLENBQUMsa0JBQU4sQ0FBeUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFpQyxFQUFoRSxDQUE3QyxDQUNyQyxDQUFDLElBQUksQ0FBQyxtQkFBTixDQUEwQixLQUFLLENBQUMsSUFBaEMsQ0FEcUMsQ0FDQyxDQUFDLElBQUksQ0FBQyxvQkFBTixDQUEyQixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXJELENBREQsQ0FBL0IsQ0FBRCxDQUQ2QixDQUdsQyxRQUFRLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUhjLENBR0MsZUFBZSxDQUFDLE1BQU0sQ0FBQyxhQUh4QixDQUFsQyxFQUt2QixDQWZBLENBaUJELE1BQU0sQ0FBQyxNQUFQLENBQWMsQ0FDTSxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sTUFBTSxDQUFDLFFBQWIsQ0FBc0IsSUFBSSxDQUFDLFVBQTNCLENBQXNDLElBQUksQ0FBQyxxQkFBM0MsQ0FETixDQUVNLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxNQUFNLENBQUMsV0FBYixDQUF5QixJQUFJLENBQUMsY0FBOUIsQ0FBNkMsSUFBSSxDQUFDLGNBQWxELENBRk4sQ0FBZCxDQUtBLEdBQUksTUFBTSxDQUFDLEVBQVAsRUFBVyxTQUFmLENBQTBCLENBQ2hCLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLEVBQWtCLFNBQXRCLENBQ0EsQ0FDRSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsTUFBTSxDQUFDLE1BQVAsQ0FBYyxDQUFkLENBQWpCLENBQW1DO0FBQ3BDLENBQ1YsQ0FFSixNQUFNLENBQUMsa0JBQVAsQ0FBNEIsU0FBUyxLQUFULENBQWdCLENBRTNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixNQUFNLENBQUMsTUFBUCxDQUFjLEtBQWQsQ0FBakIsQ0FDc0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLEtBQWpCLENBQXlCLENBQUUsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUFGLENBQXpCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLEtBQWpCLENBQ3RCLENBTEQsQ0FRRyxNQUFNLENBQUMsYUFBUCxDQUFxQixXQUFXLENBQUMsZUFBakMsQ0FHQSxHQUFJLENBQUEsSUFBSSxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDLENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUF5QyxLQUF6QyxDQUVKLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBdUMsS0FBdkMsQ0FFQSxNQUFNLENBQUMsTUFBUCxDQUFjLENBQWQsQ0FJSCxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsQ0FBNEIsQ0FDYixJQUFJLENBQUMsRUFEUSxDQUViLGNBQWMsQ0FBRSxLQUZILENBR2IsZ0JBQWdCLENBQUUsS0FITCxDQUliLGtCQUFrQixDQUFFLElBSlAsQ0FLYixXQUFXLENBQUUsS0FMQSxDQU1iLHlCQUF5QixDQUFHLElBTmYsQ0FPYix1QkFBdUIsQ0FBRyxJQVBiLENBUWIsd0JBQXdCLENBQUUsS0FSYixDQVFvQjtBQUNqQyxVQUFVLENBQUMsSUFURSxDQVViLG9CQUFvQixDQUFFLElBVlQsQ0FXYixVQUFVLENBQUMsSUFYRSxDQVliLGFBQWEsQ0FBRSxDQVpGLENBYWIsd0JBQXdCLENBQUMsS0FiWixDQWNiLGNBQWMsQ0FBRSxJQWRILENBQTVCLENBaUJPLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBNkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUF2QyxDQUdFLEdBQUssTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLEVBQXFCLFNBQTFCLENBQXVDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixFQUFwQixDQUV6QyxHQUFJLE1BQU0sQ0FBQyxrQkFBUCxFQUEyQixTQUEvQixDQUNBLENBQ0UsTUFBTSxDQUFDLE1BQVAsQ0FBYyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBeEMsQ0FDQSxNQUFNLENBQUMsYUFBUCxDQUF3QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsWUFBbEQsQ0FDQSxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsU0FBMUMsQ0FDQSxNQUFNLENBQUMsV0FBUCxDQUFtQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsV0FBN0MsQ0FDQSxNQUFNLENBQUMsY0FBUCxDQUF3QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZ0JBQWxELENBQ0EsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQWpELENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQWxELENBSUQsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBeUIsVUFBekIsQ0FFQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXdDLENBQzVDLEVBQUUsQ0FBRSxHQUR3QyxDQUU1QyxJQUFJLENBQUUsTUFGc0MsQ0FHNUMsT0FBTyxDQUFFLEVBSG1DLENBSXhDLElBQUksQ0FBQyxFQUptQyxDQUF4QyxDQU1GLEdBQUssTUFBTSxDQUFDLGNBQVAsRUFBdUIsU0FBNUIsQ0FBdUMsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsS0FBdEIsQ0FFdkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUEyQixDQUEzQixDQUNBLEdBQUksTUFBTSxDQUFDLGNBQVAsRUFBdUIsU0FBM0IsQ0FDRCxDQUNDLE1BQU0sQ0FBQyxjQUFQLENBQXVCLENBQXZCLENBRUEsQ0FDRCxHQUFJLE1BQU0sQ0FBQyxhQUFQLEVBQXNCLFNBQTFCLENBQ0EsQ0FDQyxNQUFNLENBQUMsYUFBUCxDQUFzQixDQUF0QixDQUVBLENBQ0EsR0FBSSxNQUFNLENBQUMsYUFBUCxFQUFzQixTQUExQixDQUNBLENBQ0UsTUFBTSxDQUFDLGFBQVAsQ0FBc0IsQ0FBdEIsQ0FDRCxDQUNELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixFQUE0QixJQUFoQyxDQUNBLENBQ00sTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUE2QixDQUE3QixDQUNMLENBRUM7QUFDQTtBQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUF3QixFQUF4QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBNkIsQ0FBN0IsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBeUIsQ0FBekIsQ0FDQTtBQUNBO0FBSUMsTUFBTSxDQUFDLFNBQVAsQ0FBbUIsU0FBUyxXQUFULENBQXNCLENBQ3hDLE1BQU0sQ0FBQyxTQUFQLENBQW1CLFdBQW5CLENBRUgsQ0FIRSxDQUtILE1BQU0sQ0FBQyxFQUFQLENBQVUsMEJBQVYsQ0FBcUMsS0FBckMsQ0FFQztBQUNDO0FBQ1U7QUFDYixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBbUMsU0FBUyxNQUFULENBQWtCLENBQ3BDLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDVixvQkFBb0IsQ0FBQyw4QkFBckIsQ0FBb0QsSUFBcEQsQ0FBeUQsTUFBekQsQ0FBZ0UsTUFBaEUsQ0FBdUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFqRixFQUErRixJQUEvRixDQUNGLFNBQVMsSUFBVCxDQUFlLENBRVgsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQTBCLElBQUksQ0FBQyxJQUEvQixDQUVZLEdBQUksQ0FBQyxLQUFLLENBQUMsT0FBTixDQUFjLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBeEIsQ0FBTCxDQUErQyxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsRUFBeEIsQ0FFL0MsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsRUFBbUIsSUFBdkIsQ0FDQSxDQUNPLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUF1QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQWpDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUErQixNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsTUFBdkQsQ0FDQTtBQUNDLEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLEdBQXhCLENBQTRCLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBeEQsRUFBMEQsT0FBMUQsQ0FBa0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUE1RSxDQUFWLENBRUQsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFXLENBQ1AsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUEyQixNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsR0FBeEIsQ0FBM0IsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQTZCLElBQTdCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGVBQXBCLENBQW9DLFVBQVUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUEyQixJQUFyQyxDQUEwQyxZQUE5RSxDQUVILENBRVAsQ0FDRCxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsSUFBeEIsQ0FFTixDQXpCUixDQXlCUyxTQUFTLEtBQVQsQ0FBZSxDQUNOLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNVLENBM0I1QixFQTRCTixDQTlCRCxDQWdDRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBbUMsU0FBUyxNQUFULENBQWdCLFFBQWhCLENBQXlCLENBQ2xELG9CQUFvQixDQUFDLFlBQXJCLENBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBNUMsQ0FBb0QsTUFBcEQsRUFBNEQsSUFBNUQsQ0FBaUUsU0FBUyxJQUFULENBQWUsQ0FFNUQsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsUUFBUSxRQUFSLENBQWlCLGFBQTdDLENBQTJELE1BQTNELEVBQ0EsR0FBSSxDQUFBLEdBQUcsQ0FBRyxHQUFHLENBQUMsZUFBSixDQUFvQixHQUFJLENBQUEsSUFBSixDQUFTLENBQUMsSUFBSSxDQUFDLElBQU4sQ0FBVCxDQUFwQixDQUFWLENBQ0EsR0FBSSxDQUFBLENBQUMsQ0FBRyxRQUFRLENBQUMsYUFBVCxDQUF1QixHQUF2QixDQUFSLENBQ0EsQ0FBQyxDQUFDLElBQUYsQ0FBUyxHQUFULENBQ0EsQ0FBQyxDQUFDLFFBQUYsQ0FBYSxRQUFiLENBQ0EsQ0FBQyxDQUFDLE1BQUYsQ0FBVyxRQUFYLENBQ0EsQ0FBQyxDQUFDLEtBQUYsR0FDSCxDQVRqQixDQVNrQixTQUFTLEtBQVQsQ0FBZSxDQUNqQixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFHRixDQWJkLEVBY1QsQ0FmRCxDQWVFO0FBR0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWtDLFNBQVMsTUFBVCxDQUFnQixRQUFoQixDQUF5QixRQUF6QixDQUFrQyxDQUUvRCxvQkFBb0IsQ0FBQyxZQUFyQixDQUFrQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTVDLENBQW9ELE1BQXBELEVBQTRELElBQTVELENBQWlFLFNBQVMsSUFBVCxDQUFlLENBRXhELEdBQUksQ0FBQSxHQUFHLENBQUcsR0FBRyxDQUFDLGVBQUosQ0FBb0IsR0FBSSxDQUFBLElBQUosQ0FBUyxDQUFDLElBQUksQ0FBQyxJQUFOLENBQVQsQ0FBcUIsQ0FBQyxJQUFJLENBQUMsUUFBTixDQUFyQixDQUFwQixDQUFWLENBQ0EsR0FBSSxDQUFBLE9BQU8sQ0FBRyxNQUFNLENBQUMsSUFBUCxDQUFZLEdBQVosQ0FBZ0IsUUFBaEIsQ0FBZCxDQUVILENBTHJCLENBS3NCLFNBQVMsS0FBVCxDQUFlLENBQ2pCLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUdGLENBVGxCLEVBVUwsQ0FaQSxDQVlDO0FBRUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxzQkFBVixDQUFtQyxTQUFVLFFBQVYsQ0FDbEMsQ0FDRSxHQUFJLENBQUEsSUFBSSxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDLENBQ0E7QUFDQyxHQUFJLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixDQUF4QixFQUE2QixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsRUFBcUIsQ0FBdEQsQ0FDRCxDQUNFLG9CQUFvQixDQUFDLDBCQUFyQixDQUFnRCxNQUFNLENBQUMsbUJBQXZELENBQTJFLE1BQU0sQ0FBQyxVQUFsRixDQUE2RixNQUFNLENBQUMsZ0JBQXBHLENBQXFILE1BQU0sQ0FBQyxNQUE1SCxDQUFtSSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQTdJLENBQW9KLElBQXBKLEVBQTBKLElBQTFKLENBQStKLFNBQVMsSUFBVCxDQUFlLENBQ2xLLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsRUFBMEMsSUFBMUMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixJQUFqQixFQUNYLENBSEQsQ0FHRSxTQUFTLEtBQVQsQ0FBZSxDQUNiLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNWLENBTE0sRUFPQyxDQUNKLENBZEYsQ0FrQkgsaUNBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUF3QyxVQUN4QyxDQUNNLEdBQUksQ0FBQSxJQUFJLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixDQUF4QixFQUE2QixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsRUFBcUIsQ0FBbEQsRUFBdUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQS9FLENBQ0EsQ0FFQSxvQkFBb0IsQ0FBQyx1QkFBckIsQ0FBNkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF2RCxDQUFzRSxNQUFNLENBQUMsbUJBQTdFLENBQWlHLE1BQU0sQ0FBQyxnQkFBeEcsQ0FBeUgsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQWlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxLQUFqRSxDQUF6SCxFQUFrTSxJQUFsTSxDQUF1TSxTQUFTLElBQVQsQ0FBZSxDQUM5TSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsSUFBakMsQ0FBc0MsU0FBdEMsRUFDQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBOEIsTUFBOUIsQ0FBdUMsQ0FBdkMsQ0FDRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBbUMsS0FBbkMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isd0JBQXBCLEdBQ0wsQ0FMSCxDQUtJLFNBQVMsS0FBVCxDQUFlLENBQ2IsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLElBQWxDLENBQXVDLE9BQXZDLEVBQ2lCLENBUHZCLEVBUUQsQ0FDSixDQWZELENBaUJJLE1BQU0sQ0FBQyxjQUFQLENBQXdCLENBQXhCLENBRUEsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsRUFBa0IsU0FBdEIsQ0FBaUMsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLFFBQXpDLENBRWpDLEdBQUksQ0FBQSwwQkFBMEIsQ0FBQyxRQUEzQixDQUFBLDBCQUEyQixDQUFTLElBQVQsQ0FDL0IsQ0FDSSxNQUFNLENBQUMsRUFBUCxDQUFVLHNCQUFWLENBQWlDLEVBQWpDLENBQW9DLElBQXBDLENBQXlDLE1BQU0sQ0FBQyxLQUFoRCxFQUVILENBSkQsQ0FNQSxNQUFNLENBQUMsRUFBUCxDQUFVLHNCQUFWLENBQW1DLFNBQVMsTUFBVCxDQUFnQixLQUFoQixDQUFzQixHQUF0QixDQUNuQyxDQUNFLEdBQUksQ0FBQSxJQUFJLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUMsQ0FDQTtBQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWUsR0FBZixDQUNDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLElBQTFCLEVBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixTQUFoRSxDQUNDLENBQ1EsR0FBSSxDQUFBLElBQUksQ0FBRyxJQUFYLENBQ0EsS0FBSyxPQUFMLENBQWUsS0FBZixDQUNBLEtBQUssS0FBTCxDQUFhLEdBQWIsQ0FDQSxHQUFJLENBQUEsU0FBUyxDQUFDLElBQWQsQ0FDTDtBQUNBLG9CQUFvQixDQUFDLHNCQUFyQixDQUE0QyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRELENBQThELE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBeEUsQ0FBdUYsSUFBdkYsQ0FBNEYsU0FBNUYsQ0FBc0csMEJBQXRHLEVBQWtJLElBQWxJLENBQXVJLFNBQVMsSUFBVCxDQUFlLENBRTlJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFtQyxJQUFJLENBQUMsSUFBeEMsQ0FDQSxRQUFRLENBQUMsVUFBVSxDQUNkO0FBQ0EsR0FBSSxJQUFJLENBQUMsT0FBVCxDQUFrQixXQUFXLENBQUMsSUFBSSxDQUFDLEtBQU4sQ0FBWCxDQUN0QixDQUhPLENBQVIsQ0FJTixDQVBGLENBT0csU0FBUyxLQUFULENBQWUsQ0FDakIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ1YsQ0FUUyxFQVdGLENBQ0osQ0F4QkQsQ0EyQkEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFzQyxVQUFXLENBQ2pEO0FBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsSUFBeUIsU0FBekIsRUFBc0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLElBQXlCLElBQW5FLENBQ0EsQ0FFSSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixFQUF1QixZQUF2QixJQUF1QyxTQUEzQyxDQUFzRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBb0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLEVBQXVCLFlBQXZCLENBQXBDLENBQ3RELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLEVBQXVCLGNBQXZCLElBQXlDLFNBQTdDLENBQXdELE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBVixDQUE2QixNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsRUFBdUIsY0FBdkIsQ0FBN0IsQ0FFM0QsQ0FDSixDQVRHLENBV0Y7QUFDSSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTZCLFNBQVUsSUFBVixDQUFnQixLQUFoQixDQUFzQixDQUNqRCxHQUFJLENBQUEsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUF2QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBVixDQUEwQixJQUFJLENBQUMsSUFBL0IsQ0FFQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsYUFBckIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQTZCLElBQTdCLENBRUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBNUIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLEdBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsRUFBbUIsU0FBbkIsRUFBZ0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLElBQXZELENBQTZELE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixHQUU5RCxDQVhELENBYUY7QUFDRSxNQUFNLENBQUMsRUFBUCxDQUFVLGlCQUFWLENBQThCLFNBQVUsSUFBVixDQUFnQixLQUFoQixDQUFzQixDQUNsRCxHQUFJLENBQUEsR0FBRyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBMEMsR0FBMUMsQ0FBOEMsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUExRSxFQUE0RSxPQUE1RSxDQUFvRixJQUFJLENBQUMsRUFBekYsQ0FBVixDQUNBLEdBQUksQ0FBQSxjQUFjLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG1CQUExQyxDQUNBLEdBQUksR0FBRyxFQUFFLENBQVQsQ0FBVywwQkFDUCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsbUJBQXJCLENBQTJDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBMEMsR0FBMUMsRUFBK0MsRUFBMUYsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsd0JBQXJCLENBQWdELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBMEMsR0FBMUMsRUFBK0MsT0FBL0YsQ0FDQSxHQUFJLHVCQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixvRUFBcUIsVUFBckIsSUFBa0MsU0FBbEMsRUFBK0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG1CQUFyQixFQUEyQyxjQUE5RixDQUE4RyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBcEIsR0FBOUcsSUFDSyxDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBd0MsSUFBeEMsQ0FDUixDQUdGLENBWkQsQ0FhTCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLFVBQ3JDLENBQ0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGVBQXBCLENBQW9DLEtBQXBDLENBQ0Qsb0JBQW9CLENBQUMsNkJBQXJCLENBQW1ELE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBN0QsQ0FBcUUsTUFBckUsRUFBNkUsSUFBN0UsQ0FDRSxTQUFVLElBQVYsQ0FBZ0IsQ0FDaEIsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsR0FBc0IsU0FBMUIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLEVBQXBCLENBQ2xDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBNEMsSUFBSSxDQUFDLElBQWpELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGVBQXBCLENBQW9DLElBQXBDLENBR0MsQ0FQTixDQU9PLFNBQVMsS0FBVCxDQUFlLENBQ0YsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ2pCLENBVEgsRUFVRCxDQWJKLENBaUJELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFxQyxTQUFTLEVBQVQsQ0FFckMsQ0FBSSxHQUFJLENBQUEsZ0JBQUosQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBZCxDQUE4QixnQkFBZ0IsQ0FBRyxLQUFuQixDQUE5QixJQUNLLENBQUEsZ0JBQWdCLENBQUcsSUFBbkIsQ0FDTCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isd0JBQXBCLENBQTZDLEVBQTdDLENBQWdELGdCQUFoRCxFQUVILENBUEQsQ0FRQSwrRkEzbEI0TCxDQTRsQjVMLCtGQTVsQjRMLENBNmxCNUwsK0ZBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHdCQUFwQixDQUErQyxTQUFTLEVBQVQsQ0FBWSxnQkFBWixDQUMvQyxDQUNJLEdBQUksZ0JBQUosQ0FBdUIsQ0FDbkIsR0FBSSxDQUFBLEdBQUosQ0FDQSxHQUFJLENBQUEsY0FBYyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixtQkFBMUMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixHQUFvQixTQUFwQixFQUFpQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsR0FBb0IsSUFBckQsRUFBNkQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLE1BQWxCLENBQXlCLENBQTFGLENBQTZGLENBQ3JGLEdBQUcsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLEdBQTFDLENBQThDLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBMUUsRUFBNEUsT0FBNUUsQ0FBb0YsRUFBcEYsQ0FBTixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUE4QixPQUE5QixDQUFzQyxNQUF0QyxDQUErQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXpELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQStCLElBQS9CLENBQ0wsQ0FKSCxJQUtFLENBQ0ksR0FBRyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBMEMsR0FBMUMsQ0FBOEMsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUExRSxFQUE0RSxPQUE1RSxDQUFvRixFQUFwRixDQUFOLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLEVBQWxCLENBQ0EsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFXLENBQ1Qsb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLEVBQTlDLEVBQWtELElBQWxELENBQXVELFNBQVUsSUFBVixDQUFnQixDQUMvRCxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBb0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUE5QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUE4QixPQUE5QixDQUFzQyxNQUF0QyxDQUErQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXpELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQStCLElBQS9CLENBQ0gsQ0FKTCxDQUlNLFNBQVMsS0FBVCxDQUFlLENBQ2YsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0FORCxFQVFILENBQ0osQ0FFSixDQUNKLENBMUJELENBNEJBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFvQyxVQUFZLENBR3BDLG9CQUFvQixDQUFFLGtCQUF0QixDQUF5QyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsbUJBQTlELENBQWtGLE1BQWxGLENBQXlGLElBQXpGLENBQThGLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQix3QkFBbkgsRUFBNkksSUFBN0ksQ0FBa0osU0FBUyxJQUFULENBQWUsQ0FBQztBQUU1SSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBbUMsSUFBSSxDQUFDLElBQUwsQ0FBVSxVQUE3QyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixPQUFwQixDQUE0QixPQUE1QixDQUF1QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBM0QsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isa0JBQXBCLENBQXlDLElBQXpDLENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQXBCLENBQWtDLEtBQWxDLEVBR0MsQ0FUdkIsQ0FTd0IsU0FBUyxLQUFULENBQWUsQ0FDbkIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0YsQ0FYbEIsRUFhUCxDQWhCTCxDQWtCQywrRkE3b0IyTCxDQThvQjVMLGdHQTlvQjRMLENBK29CNUwsK0ZBQ0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUEyQyxVQUFZLENBRWpELE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUF3QixNQUF4QixDQUErQixDQUEvQixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUF3QixLQUF4QixDQUVBLEdBQUksQ0FBQSxlQUFlLENBQUcsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGdCQUFoRCxDQUNBLEdBQUksZUFBZSxHQUFHLFNBQXRCLENBQWlDLGVBQWUsQ0FBRyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBNUMsQ0FFakMsR0FBSSxlQUFlLEdBQUcsU0FBdEIsQ0FBaUMsZUFBZSxDQUFHLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixrQkFBNUMsQ0FFbEMsR0FBSSxlQUFKLENBQ0EsQ0FDRSxvQkFBb0IsQ0FBQyxnQ0FBckIsQ0FBc0QsZUFBdEQsRUFBdUUsSUFBdkUsQ0FBNEUsU0FBUyxJQUFULENBQWUsQ0FFekYsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQTBCLElBQUksQ0FBQyxJQUEvQixDQUVZLEdBQUksQ0FBQyxLQUFLLENBQUMsT0FBTixDQUFjLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBeEIsQ0FBTCxDQUErQyxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsRUFBeEIsQ0FFL0MsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsRUFBbUIsSUFBdkIsQ0FDQSxDQUNPLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUF1QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQWpDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUErQixNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsTUFBdkQsQ0FDQTtBQUNDLEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLEdBQXhCLENBQTRCLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBeEQsRUFBMEQsT0FBMUQsQ0FBa0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUE1RSxDQUFWLENBRUQsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFXLENBQ1AsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUEyQixNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsR0FBeEIsQ0FBM0IsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQTZCLElBQTdCLENBQ0gsQ0FFUCxDQUVELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG1CQUFyQixFQUEwQyxTQUE5QyxDQUF5RCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLEdBRXpELE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUF3QixJQUF4QixDQUVOLENBekJSLENBeUJTLFNBQVMsS0FBVCxDQUFlLENBQ04sZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ1UsQ0EzQjVCLEVBNEJILENBOUJDLElBOEJLLENBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsc0RBQTVCLENBQW1GLE9BQW5GLEVBQ1QsQ0F6Q0QsQ0E2Q1MsR0FBSSxNQUFNLENBQUMsY0FBWCxDQUNBLENBQ0MsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsd0JBQXJCLEdBQWdELEtBQWhELEVBQXlELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQix3QkFBckIsR0FBZ0QsTUFBN0csQ0FBcUgsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLEdBQXJILElBQ0ssQ0FBQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLEdBQ0wsQ0FDVCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBcUIsU0FBUyxJQUFULENBQ3JCLENBQ00sTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQW1DLElBQUksQ0FBQyxVQUF4QyxDQUVBLFFBQVEsQ0FBQyxVQUFVLENBQ2pCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsR0FFQSxDQUhNLENBQVIsQ0FNTCxDQVZELENBWU0sTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQWtDLFNBQVMsSUFBVCxDQUNsQywyQkFDRSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBZ0MsSUFBSSxDQUFDLElBQXJDLENBQ0EsR0FBSSx3QkFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsc0VBQXFCLFVBQXJCLElBQWtDLFNBQXRDLENBQWlELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFtQyxJQUFJLENBQUMsVUFBeEMsQ0FDakQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUF5QyxJQUF6QyxDQUVELENBTkQsQ0FTRixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLEdBTUE7QUFHSixNQUFNLENBQUMsRUFBUCxDQUFVLHVCQUFWLENBQW9DLFVBQVksQ0FFNUMsTUFBTSxDQUFDLE1BQVAsQ0FBZ0IsRUFBaEIsQ0FDQSxHQUFJLENBQUEsSUFBSSxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDLENBRUQ7QUFDRDtBQUVBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixFQUE0QixJQUFoQyxDQUFzQyxDQUNwQyxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQStCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBekMsQ0FDRCxDQUZELElBR0EsQ0FDRyxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQStCLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBMkIsRUFBMUQsQ0FFRixDQUNWO0FBQ2Usb0JBQW9CLENBQUMsdUJBQXJCLENBQTZDLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQXZELENBQTBFLE1BQU0sQ0FBQyxNQUFqRixDQUF3RixJQUF4RixDQUE2RixNQUFNLENBQUMsRUFBUCxDQUFVLGlCQUFWLENBQTRCLE9BQXpILEVBQWtJLElBQWxJLENBQXVJLFNBQVMsSUFBVCxDQUFlLENBQUM7QUFFM0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLElBQXBCLEVBRU8sQ0FKbkIsQ0FJb0IsU0FBUyxLQUFULENBQWUsQ0FDbkIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0YsQ0FOZCxFQU9QLENBdkJELENBMkJBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFtQyxTQUFTLFlBQVQsQ0FBdUIsQ0FDbkQ7QUFDQSxHQUFJLENBQUEsVUFBVSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFyQyxDQUVBLEdBQUksQ0FBQSxZQUFZLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGVBQXZDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLEVBQXVCLENBQUMsYUFBYSxVQUFkLENBQXlCLGVBQWdCLFlBQXpDLENBQXZCLENBRUQsR0FBSSxZQUFKLENBQ0MsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsd0NBQTVCLENBQXFFLE1BQXJFLEVBQ1YsQ0FURyxDQVdBLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBVixDQUE0QixVQUNuQyxDQUNlO0FBQ0MsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUNBLG9CQUFvQixDQUFDLGVBQXJCLENBQXFDLE1BQU0sQ0FBQyxVQUE1QyxDQUF1RCxNQUFNLENBQUMsTUFBOUQsQ0FBcUUsSUFBckUsRUFBMkUsSUFBM0UsQ0FBZ0YsU0FBUyxJQUFULENBQWUsQ0FFaEQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXVCLElBQXZCLEVBRS9DLENBSkEsQ0FJQyxTQUFTLEtBQVQsQ0FBZSxDQUNULGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNQLENBTkEsRUFPZixDQVhNLENBWUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE9BQXBCLENBQThCLEVBQTlCLENBR1A7QUFDQTtBQUNBO0FBQ0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLFNBQVUsZ0JBQVYsQ0FBMkIsS0FBM0IsQ0FBa0MsQ0FFckUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUF3QyxLQUF4QyxDQUVBLG9CQUFvQixDQUFDLDJCQUFyQixDQUFpRCxnQkFBakQsQ0FBa0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUE1RSxDQUEyRixHQUEzRixDQUErRixJQUEvRixDQUFvRyxDQUFDLE1BQU0sQ0FBRSxLQUFULENBQXBHLEVBQXFILElBQXJILENBQTBILFNBQVMsSUFBVCxDQUFlLENBRTdHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFpQyxJQUFqQyxFQUUzQjtBQUMwQixDQUwzQixDQUs0QixTQUFTLEtBQVQsQ0FBZSxDQUNmLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBeUMsSUFBekMsQ0FDQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDTixDQVJ0QixFQVNDLENBYkgsQ0FnQkUsNEJBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHdCQUFwQixDQUErQyxVQUMvQyxDQUNNLEdBQUksQ0FBQSxJQUFJLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixDQUF4QixFQUE2QixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsRUFBcUIsQ0FBdEQsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBd0MsS0FBeEMsQ0FDQSxvQkFBb0IsQ0FBQyxrQkFBckIsQ0FBd0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFsRCxDQUFpRSxNQUFNLENBQUMsbUJBQXhFLENBQTRGLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEcsQ0FBOEcsTUFBTSxDQUFDLGdCQUFySCxDQUFzSSxNQUFNLENBQUMsTUFBN0ksQ0FBb0osTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUE5SixDQUFxSyxJQUFySyxFQUEySyxJQUEzSyxDQUFnTCxTQUFTLElBQVQsQ0FBZSxDQUNuTCxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQTBDLElBQTFDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQWlDLElBQWpDLEVBQ1gsQ0FIRCxDQUdFLFNBQVMsS0FBVCxDQUFlLENBQ2IsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUF5QyxJQUF6QyxDQUNpQixDQU5yQixFQU9ILENBQ0osQ0FkRCxDQWdCQztBQUNBO0FBQ0E7QUFDRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBbUMsU0FBVSxXQUFWLENBQXNCLGNBQXRCLENBQXNDLENBRTdELE1BQU0sQ0FBQyxNQUFQLENBQWdCLEVBQWhCLENBQ0EsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUNBO0FBQ0E7QUFDTCxHQUFJLFdBQVcsRUFBRSxTQUFqQixDQUNBLENBRVMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLElBQTlCLENBQW1DLE1BQW5DLENBQTBDLENBQTFDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXlCLEtBQXpCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHVCQUFwQixDQUE4QyxJQUE5QyxDQUNBLG9CQUFvQixDQUFDLFlBQXJCLENBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBNUMsQ0FBMkQsV0FBM0QsQ0FBdUUsY0FBdkUsQ0FBc0YsQ0FBdEYsRUFBeUYsSUFBekYsQ0FBOEYsU0FBUyxJQUFULENBQWUsQ0FJekcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQWdDLElBQUksQ0FBQyxJQUFyQyxDQUVBLE1BQU0sQ0FBQyxpQkFBUCxDQUEyQixXQUEzQixDQUNBLE1BQU0sQ0FBQyxjQUFQLENBQXdCLGNBQXhCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUF5QyxJQUF6QyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix1QkFBcEIsQ0FBOEMsS0FBOUMsQ0FFSCxDQVhELENBWUMsU0FBUyxLQUFULENBQWUsQ0FDWCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isa0JBQXBCLENBQXlDLElBQXpDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHVCQUFwQixDQUE4QyxLQUE5QyxDQUNKLENBaEJELEVBaUJQLENBRVIsQ0EvQkQsQ0ErQkU7QUFLSSxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQThCLFNBQVUsSUFBVixDQUFnQixLQUFoQixDQUFzQixDQUVuRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixFQUFrQixTQUF0QixDQUFpQyxNQUFNLENBQUMsRUFBUCxDQUFVLFFBQVYsRUFBb0IsQ0FBQyxNQUFNLENBQUMsSUFBUixDQUFwQixDQUFqQyxJQUNLLENBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLE1BQWpCLENBQTBCLElBQTFCLENBQ0o7QUFHRCxDQVBELENBUUYsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsbUJBQXJCLEVBQTBDLFNBQTFDLEVBQXVELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixtQkFBckIsRUFBMEMsSUFBckcsQ0FFQSwyQkFDQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLEdBRUEsR0FBSSx3QkFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsc0VBQXFCLFVBQXJCLElBQWtDLFNBQXRDLENBQWlELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixHQUFqRCxJQUdHLENBQ0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixHQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBd0MsSUFBeEMsQ0FDSCxDQU1KLENBRUQ7QUFDQSxHQUFJLE1BQU0sQ0FBQyxRQUFQLEVBQWlCLFNBQWpCLEVBQThCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQWhCLENBQXVCLENBQXJELEVBQTBELENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFNBQXBGLENBQ0EsQ0FDSSxHQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsR0FBeUMsU0FBN0MsQ0FBdUQsQ0FDcEQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLEVBQTRCLENBQWhDLENBQ0QsQ0FDRSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBbUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUE3QyxDQUFxRCxDQUFDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsQ0FBRCxDQUFyRCxFQUNELENBSEEsSUFLRCxDQUNDLEdBQUssTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLEVBQXdCLEdBQTdCLENBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixHQUNsQyxDQUNGLENBVEQsSUFTTyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQVIsRUFBMEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLEVBQXFCLENBQW5ELENBQXNELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix3QkFBcEIsR0FFaEUsQ0FiRCxJQWFNLElBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixFQUE0QixDQUFoQyxDQUVOLENBQ0ksR0FBSSxDQUFDLE1BQU0sQ0FBQyxjQUFSLEVBQTBCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixFQUFxQixDQUEvQyxFQUFvRCxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixTQUE5RSxDQUEwRixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isd0JBQXBCLEdBQzdGLENBRUQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsbUJBQXJCLEVBQTBDLFNBQTlDLENBQXlELENBRXJELEdBQUksTUFBTSxDQUFDLGNBQVgsQ0FBMkIsQ0FDdkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixHQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixHQUNILENBSEQsSUFJSyxDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix3QkFBcEIsQ0FBNkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG1CQUFsRSxDQUFzRixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQWhHLEVBRVIsQ0FFUixDQTM1QlUsQ0EyNUJUO0FBRU0sV0FBVyxDQUFFLGtDQTc1QlYsQ0E4NUJILElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FFaEMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGdCQUFuQixDQUFvQyxJQUFwQyxDQUVILENBbDZCRSxDQUFQLENBcTZCUCxFQUNELGFBRU8sUUFBUyxDQUFBLFlBQVQsQ0FBc0IsUUFBdEIsQ0FBK0IseUJBQS9CLENBQXlELG9CQUF6RCxDQUE4RSxlQUE5RSxDQUErRixDQUM5RixNQUFPLENBQ1AsUUFBUSxDQUFFLEdBREgsQ0FFRixXQUFXLENBQUUsd0NBRlgsQ0FHRixVQUFVLENBQUUsb0JBQVUsTUFBVixDQUFrQixRQUFsQixDQUEyQixVQUEzQixDQUFzQyxTQUF0QyxDQUFnRCxnQkFBaEQsQ0FBaUUsaUJBQWpFLENBQW1GLElBQW5GLENBQXdGLGVBQXhGLENBQXdHLFFBQXhHLENBQWlILFFBQWpILENBQTBILFlBQTFILENBQXdJLENBRWpKO0FBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBZSxlQUFmLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLENBQW1CLEtBQW5CLENBQ0EsTUFBTSxDQUFDLGlCQUFQLENBQTJCLElBQTNCLENBQ0EsTUFBTSxDQUFDLGdCQUFQLENBQXdCLEtBQXhCLENBQ0EsTUFBTSxDQUFDLE1BQVAsQ0FBYyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBeEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxNQUFQLEVBQWUsU0FBbkIsQ0FBK0IsTUFBTSxDQUFDLE1BQVAsQ0FBYyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZ0JBQXhDLENBQy9CLEdBQUksTUFBTSxDQUFDLE1BQVAsRUFBZSxTQUFuQixDQUE4QixNQUFNLENBQUMsTUFBUCxDQUFjLENBQWQsQ0FDOUIsR0FBSSxNQUFNLENBQUMsU0FBUCxFQUFrQixTQUF0QixDQUFrQyxNQUFNLENBQUMsU0FBUCxDQUFtQixDQUFDLGlCQUFpQixDQUFDLENBQW5CLENBQW5CLENBQ2xDLE1BQU0sQ0FBQyxFQUFQLENBQVUsS0FBVixDQUFrQixFQUFsQixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWdDLFNBQVMsaUJBQVQsQ0FDaEMsQ0FFQyxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGlCQUFqQixFQUFvQyxTQUF4QyxDQUNBLENBQ0csTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLENBQXFDLGlCQUFyQyxDQUNGLENBSEQsSUFJQSxDQUNHLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLEVBQW9DLENBQXBDLEVBQXlDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGlCQUFqQixFQUFvQyxpQkFBakYsQ0FBb0csTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLENBQXFDLGlCQUFyQyxDQUFwRyxJQUNLLENBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLENBQW1DLENBQW5DLENBQ1AsQ0FFRCxDQVpELENBZUgsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBakIsQ0FBbUMsVUFBWSxDQUM1QyxRQUFRLENBQUMsVUFBVyxDQUNwQixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBL0IsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFnQyxDQUFoQyxFQUVDLENBSk8sQ0FBUixDQUtILENBTkEsQ0FRQSxNQUFNLENBQUMsU0FBUCxDQUFpQixtQkFBakIsQ0FBdUMsVUFBWSxDQUNoRCxRQUFRLENBQUMsVUFBVyxDQUNwQixNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTJCLE9BQU8sQ0FBQyxJQUFSLENBQWEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUF2QixDQUEzQixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWdDLENBQWhDLEVBRUMsQ0FKTyxDQUFSLENBS0gsQ0FOQSxDQVNULE1BQU0sQ0FBQyxPQUFQLENBQWlCLFNBQVUsTUFBVixDQUFpQixLQUFqQixDQUF3QixDQUMxQyxRQUFRLENBQUMsVUFBVyxDQUFDLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixLQUF4QixDQUFnQyxDQUE3QyxDQUFSLENBQ0UsQ0FGRCxDQUlBLE1BQU0sQ0FBQyxXQUFQLENBQXFCLFVBQVksQ0FDbEMsUUFBUSxDQUFDLFVBQVcsQ0FBQyxNQUFNLENBQUMsZ0JBQVAsQ0FBd0IsS0FBeEIsQ0FBZ0MsQ0FBN0MsQ0FBUixDQUNFLENBRkQsQ0FNRCxNQUFNLENBQUMsWUFBUCxDQUFzQixTQUFTLFNBQVQsQ0FBbUIsTUFBbkIsQ0FBMEIsQ0FFNUMsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNBLEdBQUksQ0FBQSxrQkFBa0IsQ0FBRyxNQUF6QixDQUNDLE1BQU0sQ0FBQyxNQUFQLENBQWMsWUFBWSxDQUFDLEVBQTNCLENBRUE7QUFFRCxvQkFBb0IsQ0FBQyxlQUFyQixDQUFxQyxNQUFyQyxDQUE0QyxHQUE1QyxDQUFnRCxJQUFoRCxFQUFzRCxJQUF0RCxDQUEyRCxTQUFTLElBQVQsQ0FBZSxDQUVoRCxHQUFJLENBQUEsRUFBRSxDQUFDLE1BQVAsQ0FDQztBQUN4QjtBQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsS0FBVixDQUFnQixTQUFoQixFQUEyQixTQUEzQixDQUFxQyxJQUFJLENBQUMsSUFBMUMsQ0FDQTtBQUV1QixDQVIxQixDQVEyQixTQUFTLEtBQVQsQ0FBZSxDQUNqQixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDekIsQ0FWQSxFQWNELENBdEJILENBeUJBO0FBQ0MsTUFBTSxDQUFDLFNBQVAsQ0FBbUIsU0FBVSxJQUFWLENBQWUsU0FBZixDQUEwQixDQUMvQixHQUFJLENBQUEsYUFBYSxDQUFHLFNBQVMsQ0FBQyxJQUFWLENBQWUsQ0FDbkMsU0FBUyxDQUFFLE1BQU0sQ0FBQyxpQkFEaUIsQ0FFbkMsV0FBVyxDQUFFLGlCQUZzQixDQUduQyxVQUFVLENBQUUsdUJBSHVCLENBSW5DLElBQUksQ0FBRSxJQUo2QixDQUtuQyxPQUFPLENBQUUsQ0FDUCxRQUFRLENBQUUsbUJBQVksQ0FDcEIsTUFBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBbkIsQ0FBOEIsU0FBUyxDQUFDLFNBQXhDLENBQWtELEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLEtBQWxFLENBQXdFLFFBQVEsQ0FBQyxxQkFBakYsQ0FBUCxDQUNELENBSE0sQ0FMMEIsQ0FBZixDQUFwQixDQWFOLGFBQWEsQ0FBQyxNQUFkLENBQXFCLElBQXJCLENBQTBCLFNBQVUsUUFBVixDQUFtQixNQUFuQixDQUEwQixLQUExQixDQUFpQyxDQUMxRDtBQUdGLENBSkMsQ0FJQyxVQUFZLENBQ2Y7QUFDQyxDQU5DLEVBUVQsQ0F0QkMsQ0F5QkU7QUFDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBc0MsVUFBVSxDQUN6QztBQUNELE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWdDLENBQWhDLEVBQ0MsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsRUFBb0MsQ0FBeEMsQ0FBMkMsQ0FFdkM7QUFDQyxvQkFBb0IsQ0FBQyx3QkFBckIsQ0FBOEMsSUFBOUMsQ0FBbUQsU0FBbkQsRUFBOEQsSUFBOUQsQ0FDYyxTQUFTLElBQVQsQ0FBZSxDQUNHLE1BQU0sQ0FBQyxXQUFQLENBQXFCLElBQUksQ0FBQyxJQUExQixDQUNBO0FBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLEVBQTRCLFNBQWhDLENBQ1csSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUEyQixNQUEzQyxDQUFrRCxDQUFDLEVBQW5ELENBQXVELENBQ2pEO0FBQ0EsR0FBSSxDQUFBLENBQUMsQ0FBRyxNQUFNLENBQUMsV0FBUCxDQUFtQixHQUFuQixDQUF1QixTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsRUFBVCxDQUFjLENBQW5ELEVBQXFELE9BQXJELENBQTZELE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBMkIsQ0FBM0IsRUFBOEIsa0JBQTNGLENBQVIsQ0FDQSxHQUFJLENBQUMsRUFBRSxDQUFQLENBQVUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUEyQixDQUEzQixFQUE4QixpQkFBOUIsQ0FBa0QsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsQ0FBbkIsRUFBc0IsSUFBeEUsQ0FDZixDQUVYLENBWGpDLENBV2tDLFNBQVMsS0FBVCxDQUFlLENBQzNCLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNVLENBYmhDLEVBZ0JWLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLEVBQXNCLFNBQXRCLEVBQW1DLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixDQUFyQixHQUF5QixJQUFoRSxDQUFzRSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBdUIsRUFBdkIsQ0FDdkU7QUFDRSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTRCLHlCQUF5QixDQUFDLG9CQUExQixFQUE1QixDQUE2RTtBQUU3RTtBQUNDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixFQUE0QixTQUFoQyxDQUNBLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixNQUFyQyxDQUE2QyxDQUFDLEVBQTlDLENBQWtELENBQ2pELElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBMkIsTUFBM0MsQ0FBa0QsQ0FBQyxFQUFuRCxDQUF1RCxDQUNwQixHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixDQUFyQixHQUF5QixJQUE3QixDQUFtQyxDQUNoQyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBMkIsQ0FBM0IsRUFBOEIsUUFBOUIsRUFBd0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLENBQXJCLEVBQXdCLFFBQXBFLENBQStFLENBQzNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBMkIsTUFBM0IsQ0FBa0MsQ0FBbEMsQ0FBb0MsQ0FBcEMsRUFBdUM7QUFDMUMsQ0FDSCxDQUNMLENBQzlCLENBQ29CO0FBQ0EsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLE1BQXJDLENBQTZDLENBQUMsRUFBOUMsRUFDYyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixDQUFyQixHQUF5QixJQUE3QixDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBMkIsSUFBM0IsQ0FBZ0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLENBQXJCLENBQWhDLEVBRmxCLENBS3ZCO0FBQ0EsR0FBSSxDQUFBLE9BQU8sQ0FBQyxFQUFaLENBRUUsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLEVBQTRCLFNBQWhDLENBQTBDLENBRXBCLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBMkIsTUFBM0MsQ0FBa0QsQ0FBQyxFQUFuRCxDQUF1RCxDQUNuQyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBMkIsQ0FBM0IsRUFBOEIsR0FBOUIsRUFBbUMsU0FBdkMsQ0FDSSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTJCLENBQTNCLEVBQThCLEdBQTlCLENBQWtDLE1BQWxELENBQXlELENBQUMsRUFBMUQsQ0FBOEQsQ0FDMUQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTJCLENBQTNCLEVBQThCLEdBQTlCLENBQWtDLENBQWxDLEVBQXFDLElBQXJDLEVBQTJDLGNBQS9DLENBQStELENBQzNEO0FBQ0EsR0FBTSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTJCLENBQTNCLEVBQThCLEdBQTlCLENBQWtDLENBQWxDLEVBQXFDLEtBQXJDLEVBQTRDLEtBQTdDLEVBQXdELE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBMkIsQ0FBM0IsRUFBOEIsR0FBOUIsQ0FBa0MsQ0FBbEMsRUFBcUMsS0FBckMsRUFBNEMsSUFBekcsQ0FBaUgsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUEyQixDQUEzQixFQUE4QixHQUE5QixDQUFrQyxDQUFsQyxFQUFxQyxLQUFyQyxDQUEyQyxLQUEzQyxDQUNqSDtBQUNBLE9BQU8sQ0FBQyxJQUFSLENBQWEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUEyQixDQUEzQixDQUFiLEVBQ0gsRUFDVCxDQUNMLENBQ2Y7QUFDeEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUEyQixPQUEzQixDQUFvQztBQUVwQztBQUdMO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FFYSxDQUFDO0FBQ1gsQ0FwRkcsQ0FvRkQ7QUFJQztBQUNELE1BQU0sQ0FBQyxpQkFBUCxDQUEyQixTQUFVLElBQVYsQ0FBZ0IsS0FBaEIsQ0FBc0IsU0FBdEIsQ0FBZ0MsQ0FDMUQsR0FBSSxDQUFBLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBdkIsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixJQUFJLENBQUMsSUFBNUIsQ0FFQztBQUVDLE1BQU0sQ0FBQyxVQUFQLENBQWtCLGFBQWxCLENBQ0EsTUFBTSxDQUFDLGtCQUFQLENBQTBCLElBQTFCLENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLENBQW1CLE1BQU0sQ0FBQyxVQUExQixDQUNGLENBVkQsQ0FVQztBQUtEO0FBQ0E7QUFFQSxNQUFNLENBQUMsZ0JBQVAsQ0FBMEIsU0FBVSxJQUFWLENBQWUsU0FBZixDQUF5QixDQUNsRCxHQUFJLENBQUEsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQTVCLENBQ0EsTUFBTSxDQUFDLFVBQVAsQ0FBa0Isa0JBQWxCLENBQ0MsTUFBTSxDQUFDLGtCQUFQLENBQTBCLElBQTFCLENBQ1MsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLEtBQVYsQ0FBZ0IsU0FBaEIsRUFBMkIsY0FBM0IsRUFBMkMsa0JBQS9DLENBQW1FLENBQ2xFLE1BQU0sQ0FBQyxFQUFQLENBQVUsS0FBVixDQUFnQixTQUFoQixFQUEyQixjQUEzQixDQUE0QyxrQkFBNUMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLEtBQVYsQ0FBZ0IsU0FBaEIsRUFBMkIsVUFBM0IsQ0FBd0MsS0FBeEMsQ0FDQSxDQUlYLE9BQU8sQ0FBQyxHQUFSLENBQVkscUJBQXVCLGtCQUFuQyxFQUVBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFNBQWpCLENBRUU7QUFDQTtBQUNBO0FBRUE7QUFDQztBQUNEO0FBRUY7QUFFQSxNQUFNLENBQUMsWUFBUCxDQUFvQixTQUFwQixDQUE4QixNQUFNLENBQUMsRUFBUCxDQUFVLEtBQVYsQ0FBZ0IsU0FBaEIsRUFBMkIsY0FBekQsRUFFQSxHQUFJLENBQUEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFQLEVBQVIsQ0FFQSxDQTdCRCxDQTZCQztBQUlGLEdBQUksQ0FBQSxJQUFJLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUMsQ0FDQSxHQUFJLENBQUEsSUFBSSxDQUFDLE1BQVQsQ0FBaUI7QUFHaEI7QUFDQSxNQUFNLENBQUMsTUFBUCxDQUFnQixTQUFVLEtBQVYsQ0FBaUIsQ0FFaEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLENBQW1CLE1BQW5CLENBQTBCLEtBQTFCLENBQWdDLENBQWhDLEVBQ0EsTUFBTSxDQUFDLE1BQVAsQ0FBYyxJQUFkLENBQ0EsR0FBSSxDQUFBLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUCxFQUFSLENBQ0EsQ0FMRCxDQVFGO0FBQ1Msb0JBQW9CLENBQUMsb0JBQXJCLENBQTBDLElBQTFDLENBQStDLElBQS9DLEVBQXFELElBQXJELENBQ04sU0FBUyxJQUFULENBQWUsQ0FDUixNQUFNLENBQUMsZUFBUCxDQUF5QixJQUFJLENBQUMsSUFBOUIsQ0FFTCxDQUpJLENBSUgsU0FBUyxLQUFULENBQWUsQ0FDWixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFFTCxDQVBLLEVBYVAsQ0FwUlUsQ0FvUlQ7QUFHSDtBQUNBLE9BQU8sQ0FBRSxPQXhSRyxDQXdSTTtBQUNsQixJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQTZCLFFBQTdCLENBQXVDLENBQUU7QUFJbEI7QUFFQTtBQUNDO0FBQ0E7QUFHRDtBQUNBLEdBQUksQ0FBQSxVQUFVLENBQUcsQ0FBQyxZQUFELENBQWpCLENBQ0EsR0FBSSxDQUFBLGdCQUFnQixDQUFHLENBQUMsR0FBRyxDQUFFLENBQUMsQ0FBQyxPQUFPLGVBQVIsQ0FBd0IsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQU4sQ0FBbUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsT0FBbEMsQ0FBRCxDQUE0QyxDQUFDLElBQUksQ0FBQyxrQkFBTixDQUF5QixLQUFLLENBQUMsRUFBL0IsQ0FBNUMsQ0FBaEMsQ0FBRCxDQUFOLENBQXlILE9BQU8sQ0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQU4sQ0FBb0IsTUFBTSxDQUFDLEtBQTNCLENBQUQsQ0FBbEksQ0FBc0ssSUFBSSxDQUFFLFlBQTVLLENBQXlMLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLE9BQWhOLENBQXdOLFFBQVEsQ0FBRSxLQUFLLENBQUMsRUFBTixDQUFTLGNBQTNPLENBQTBQLE1BQU0sQ0FBRyxLQUFLLENBQUMsT0FBelEsQ0FBaVIsYUFBYSxDQUFHLEtBQUssQ0FBQyxnQkFBdlMsQ0FBeVQsTUFBTSxDQUFDLFVBQWhVLENBQXZCLENBQ0E7QUFFQSxLQUFLLENBQUMsYUFBTixDQUFzQix5QkFBeUIsQ0FBQyxjQUExQixDQUF5QyxnQkFBekMsQ0FBdEIsQ0FBa0Y7QUFDbEYsS0FBSyxDQUFDLEVBQU4sQ0FBUyxPQUFULENBQWlCLEtBQUssQ0FBQyxhQUF2QixDQUVEO0FBQ0M7QUFFVjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUNRLEdBQUksQ0FBQSxXQUFXLENBQUcsQ0FBbEIsQ0FDTDtBQUNBLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxRQUFULEVBQW1CLFNBQXZCLENBQW1DLEtBQUssQ0FBQyxFQUFOLENBQVMsUUFBVCxDQUFrQixFQUFsQixDQUNuQyxLQUFLLENBQUMsS0FBTixDQUFlLEtBQUssQ0FBQyxFQUFOLENBQVMsUUFBeEIsQ0FFQztBQUNBLEtBQUssQ0FBQyxpQkFBTixDQUF3QixTQUFTLElBQVQsQ0FBYyxHQUFkLENBQWtCLEdBQWxCLENBQXNCLFFBQXRCLENBQStCLENBRXRELEdBQUksR0FBRyxFQUFFLFNBQVQsQ0FBb0IsR0FBRyxDQUFDLENBQUosQ0FFcEIsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQU4sQ0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQU4sQ0FBWSxNQUE1QixDQUFvQyxDQUFDLENBQUMsQ0FBdEMsQ0FBeUMsQ0FBQyxFQUExQyxFQUNHLEdBQUksS0FBSyxDQUFDLEtBQU4sQ0FBWSxDQUFaLEVBQWUsSUFBZixFQUFxQixJQUF6QixDQUErQixJQUFJLENBQUMsRUFBTCxDQURsQyxDQUdBLEdBQUksSUFBSSxFQUFFLFNBQU4sRUFBbUIsSUFBSSxFQUFJLEVBQS9CLENBQW1DLENBQ2xDLEtBQUssQ0FBQyxLQUFOLENBQVksSUFBWixDQUFpQixDQUFDLE9BQU8sSUFBUixDQUFhLE1BQU0sR0FBbkIsQ0FBdUIsTUFBTSxHQUE3QixDQUFqQixFQUNBO0FBQ0EsQ0FDRCxDQVhELENBYVksS0FBSyxDQUFDLFVBQU4sQ0FBbUIsU0FBUyxLQUFULENBQWUsSUFBZixDQUFxQixDQUVoQztBQUNBO0FBQ0E7QUFDRDtBQUNDLEtBQUssQ0FBQyxFQUFOLENBQVMsS0FBVCxDQUFlLE1BQWYsQ0FBc0IsS0FBdEIsQ0FBNEIsQ0FBNUIsRUFDQSxHQUFJLENBQUEsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFOLEVBQVIsQ0FFUCxDQVRELENBWUEsS0FBSyxDQUFDLFNBQU4sQ0FBa0IsVUFBVyxDQUMxQjtBQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsS0FBVCxDQUFlLE1BQWYsQ0FBd0IsQ0FBeEIsQ0FFRixDQUpELENBT1IsS0FBSyxDQUFDLFNBQU4sQ0FBa0IsVUFBVSxDQUVwQixHQUFJLENBQUEsTUFBTSxDQUFDLElBQVgsQ0FDQSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFjLENBQUMsQ0FBRyxLQUFLLENBQUMsS0FBTixDQUFZLE1BQTlCLENBQXNDLENBQUMsRUFBdkMsQ0FBMkMsQ0FBRTtBQUNyQyxHQUFJLENBQUEsVUFBVSxDQUFDLENBQWYsQ0FDQSxJQUFJLEdBQUksQ0FBQSxDQUFDLENBQUcsQ0FBWixDQUFlLENBQUMsQ0FBRyxLQUFLLENBQUMsRUFBTixDQUFTLEtBQVQsQ0FBZSxNQUFsQyxDQUEwQyxDQUFDLEVBQTNDLENBQWdELENBQUM7QUFDekMsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLEtBQVQsQ0FBZSxDQUFmLEVBQWtCLGNBQWxCLEVBQW9DLEtBQUssQ0FBQyxLQUFOLENBQVksQ0FBWixFQUFlLElBQXZELENBQTZELFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBdEIsQ0FDcEUsQ0FFRCxHQUFJLFVBQVUsQ0FBRyxLQUFLLENBQUMsS0FBTixDQUFZLENBQVosRUFBZSxHQUFoQyxDQUFxQyxDQUFDLFFBQVEsQ0FBQyxZQUFULENBQXNCLFlBQXRCLENBQW1DLHVCQUFuQyxDQUE0RCxLQUE1RCxFQUNyQyxDQURELElBQ1EsQ0FBQSxRQUFRLENBQUMsWUFBVCxDQUFzQixZQUF0QixDQUFtQyx1QkFBbkMsQ0FBNEQsSUFBNUQsRUFFUixHQUFJLFVBQVUsQ0FBRyxLQUFLLENBQUMsS0FBTixDQUFZLENBQVosRUFBZSxHQUFoQyxDQUFxQyxDQUFDLFFBQVEsQ0FBQyxZQUFULENBQXNCLFlBQXRCLENBQW1DLHFCQUFuQyxDQUEwRCxLQUExRCxFQUM3QixDQURULElBQ2dCLENBQUEsUUFBUSxDQUFDLFlBQVQsQ0FBc0IsWUFBdEIsQ0FBbUMscUJBQW5DLENBQTBELElBQTFELEVBRXZCLENBRWYsR0FBSSxLQUFLLENBQUMsS0FBTixDQUFZLE1BQVosQ0FBbUIsQ0FBdkIsQ0FBMEIsQ0FDSixHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsS0FBVCxDQUFlLE1BQWYsQ0FBd0IsS0FBSyxDQUFDLEtBQU4sQ0FBWSxDQUFaLEVBQWUsR0FBM0MsQ0FBZ0QsUUFBUSxDQUFDLFlBQVQsQ0FBc0IsWUFBdEIsQ0FBbUMsc0JBQW5DLENBQTJELEtBQTNELEVBQWhELElBQ0ssQ0FBQSxRQUFRLENBQUMsWUFBVCxDQUFzQixZQUF0QixDQUFtQyxzQkFBbkMsQ0FBMkQsSUFBM0QsRUFBbUUsQ0FFM0Y7QUFDVyxNQUFPLENBQUEsTUFBUCxDQUVOLENBeEJGLENBd0JFO0FBRVQsS0FBSyxDQUFDLGVBQU4sQ0FBd0IsU0FBUyxLQUFULENBQWdCLENBQ3pCO0FBQ0EsS0FBSyxDQUFDLEtBQU4sQ0FBYyxLQUFkLENBQ1AsQ0FIUixDQUlLO0FBQ0o7QUFDQTtBQUNNLEtBQUssQ0FBQyxVQUFOLENBQW1CLFVBQVcsQ0FFOUI7QUFDTixHQUFJLENBQUEsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFOLEVBQVgsQ0FDYyxNQUFNLENBQUMsSUFBUCxDQUFhO0FBRTNCLEdBQUksTUFBTSxFQUFFLElBQVosQ0FBa0IsQ0FFVixHQUFJLENBQUEsVUFBVSxDQUFHLFFBQVEsQ0FBQyxHQUFULENBQWEsV0FBYixDQUFqQixDQUE0QztBQUU5QixNQUFNLENBQUMsTUFBUCxDQUFjLENBQ1YsR0FBRyxDQUFFLHFCQURLLENBRVYsT0FBTyxDQUFFLENBQUMsY0FBZ0IsVUFBakIsQ0FGQyxDQUdWLElBQUksQ0FBRSxLQUFLLENBQUMsRUFBTixDQUFTLEtBSEwsQ0FJVixJQUFJLENBQUUsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxtQkFBMUIsQ0FBOEMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsZ0JBQW5FLENBSkksQ0FBZCxFQUtHLElBTEgsQ0FLUSxTQUFVLElBQVYsQ0FBZ0IsQ0FDaEIsT0FBTyxDQUFDLEdBQVIsQ0FBWSxXQUFhLElBQUksQ0FBQyxNQUFMLENBQVksSUFBWixDQUFpQixJQUFqQixDQUFzQixJQUFuQyxDQUEwQyxzQkFBMUMsQ0FBbUUsSUFBSSxDQUFDLElBQXBGLEVBQ0EsSUFBSSxDQUFDLGFBQUwsQ0FBbUIsSUFBbkIsQ0FDUCxDQVJELENBUUcsU0FBVSxJQUFWLENBQWdCLENBQ1gsT0FBTyxDQUFDLEdBQVIsQ0FBWSxpQkFBbUIsSUFBSSxDQUFDLE1BQXBDLEVBQ0EsSUFBSSxDQUFDLFdBQUwsQ0FBaUIsSUFBakIsQ0FDQSxJQUFJLENBQUMsTUFBTCxDQUFZLElBQVosQ0FDUCxDQVpELENBWUcsU0FBVSxHQUFWLENBQWUsQ0FDVixHQUFJLENBQUEsa0JBQWtCLENBQUcsUUFBUSxDQUFDLE1BQVEsR0FBRyxDQUFDLE1BQVosQ0FBcUIsR0FBRyxDQUFDLEtBQTFCLENBQWpDLENBQ0EsT0FBTyxDQUFDLEdBQVIsQ0FBWSxhQUFlLGtCQUFmLENBQW9DLElBQXBDLENBQTJDLEdBQUcsQ0FBQyxNQUFKLENBQVcsSUFBWCxDQUFnQixJQUFoQixDQUFxQixJQUE1RSxFQUNBLElBQUksQ0FBQyxNQUFMLENBQVksY0FBWixDQUNQLENBaEJELEVBa0JBO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQ0csQ0FsSUQsSUFrSU8sQ0FDZTtBQUNyQjtBQUNBLENBQ00sQ0E1SUQsQ0E0SUc7QUFHSCxLQUFLLENBQUMseUJBQU4sQ0FBa0MsVUFBVyxDQUFFO0FBRTVDLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULEVBQXFCLFNBQXpCLENBQ0MsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUUsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLE1BQXBDLENBQTJDLENBQUMsRUFBNUMsQ0FBZ0QsQ0FDNUMsR0FBSSxDQUFBLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsQ0FBcEIsRUFBdUIsUUFBMUMsQ0FBcUQ7QUFDckQsR0FBSSxDQUFBLFVBQVUsQ0FBRyxjQUFqQixDQUFxRDtBQUVyRCxHQUFJLGNBQWMsRUFBRSxTQUFoQixFQUE2QixjQUFjLEVBQUUsSUFBakQsQ0FBd0QsQ0FDcEQsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLENBQXBCLEVBQXVCLEdBQXZCLENBQTJCLE1BQTFDLENBQWlELENBQUMsRUFBbEQsQ0FBc0QsQ0FDbEQsR0FBSyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsQ0FBcEIsRUFBdUIsR0FBdkIsQ0FBMkIsQ0FBM0IsRUFBOEIsSUFBOUIsRUFBb0MsY0FBckMsRUFBeUQsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLENBQXBCLEVBQXVCLEdBQXZCLENBQTJCLENBQTNCLEVBQThCLEtBQTlCLEVBQXFDLElBQWxHLENBQXlHLENBQUU7QUFDdEcsR0FBSSxDQUFBLFVBQVUsQ0FBRyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsQ0FBcEIsRUFBdUIsR0FBdkIsQ0FBMkIsQ0FBM0IsRUFBOEIsSUFBL0MsQ0FDQTtBQUVBLEtBQUssQ0FBQyxHQUFOLENBQVUsUUFBUSxjQUFSLENBQXVCLFVBQWpDLENBQTRDLFNBQVMsS0FBVCxDQUFnQixJQUFoQixDQUFxQixDQUFHO0FBRWpFO0FBQ0EsS0FBSyxDQUFDLFlBQU4sQ0FBbUIsSUFBbkIsRUFFSTtBQUVMLENBUEYsRUFPSTtBQUNKLEdBQUksQ0FBQSxJQUFJLENBQUcseUJBQXlCLENBQUMsaUJBQTFCLENBQTRDLEtBQUssQ0FBQyxrQkFBTixDQUF5QixlQUFyRSxDQUFxRixLQUFLLENBQUMsa0JBQU4sQ0FBeUIsZ0JBQTlHLENBQStILEtBQUssQ0FBQyxrQkFBTixDQUF5QixZQUF4SixDQUFxSyxjQUFySyxDQUFvTCxVQUFwTCxDQUFYLENBQ0EsS0FBSyxDQUFDLFlBQU4sQ0FBbUIsSUFBbkIsRUFDSjtBQUNKO0FBQ0o7QUFFSjtBQUNBLENBQUM7QUFDUCxDQTdCQyxDQTZCRDtBQUNELEtBQUssQ0FBQyxZQUFOLENBQW1CLFNBQVMsSUFBVCxDQUNuQixDQUNHLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFwQixDQUEyQixDQUFDLEVBQTVCLENBQWdDLENBQ1AsR0FBSSxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsSUFBUixFQUFjLGtCQUFsQixDQUFzQyxLQUFLLENBQUMsRUFBTixDQUFTLGdCQUFULENBQTRCLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxLQUFwQyxDQUEyQztBQUNqRixHQUFJLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxJQUFSLEVBQWMsWUFBbEIsQ0FBZ0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxtQkFBVCxDQUErQixJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsS0FBdkMsQ0FBK0M7QUFDL0UsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLG1CQUFULENBQTZCLENBQTdCLEVBQWtDLEtBQUssQ0FBQyxFQUFOLENBQVMsZ0JBQVQsQ0FBMEIsQ0FBaEUsQ0FBbUUsS0FBSyxDQUFDLEVBQU4sQ0FBUyxXQUFULENBQXVCLElBQXZCLENBQ3BFLENBR3hCLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxLQUFULENBQWUsTUFBZixDQUFzQixDQUF0QixFQUEyQixLQUFLLENBQUMsRUFBTixDQUFTLFdBQXhDLENBQXFELEtBQUssQ0FBQyxVQUFOLEdBQXFCO0FBRzVFLENBWkQsQ0FrQkU7QUFDRTtBQUVBLEtBQUssQ0FBQyxRQUFOLENBQWUsS0FBSyxDQUFDLGtCQUFOLENBQXlCLFNBQXhDLENBRUQ7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQTdUZ0QsQ0ErVHRDO0FBQ04sS0FBSyxDQUFDLEdBQU4sQ0FBVSxvQkFBVixDQUErQixTQUFTLEtBQVQsQ0FBZ0IsSUFBaEIsQ0FBcUIsQ0FDN0M7QUFDQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsS0FBVCxDQUFlLE1BQWYsQ0FBc0IsQ0FBdEIsRUFBMkIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxXQUF4QyxDQUFxRCxLQUFLLENBQUMsVUFBTixHQUNyRCxDQUhQLEVBT0E7QUFDQSxLQUFLLENBQUMsZ0JBQU4sQ0FBd0IsU0FBVSxLQUFWLENBQWdCLElBQWhCLENBQXNCLENBQzNDLEtBQUssQ0FBQyxJQUFOLENBQVcsQ0FBWCxDQUVIO0FBQ0U7QUFFQTtBQUNELENBUEQsQ0FhRSxDQUFDO0FBOW1CUSxDQUFQLENBZ25CUCxFQUNELGFBRU8sUUFBUyxDQUFBLHVCQUFULEVBQW9DLENBQ3ZDLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVILE9BQU8sQ0FBRSxJQUZOLENBR0gsUUFBUSxDQUFFLDZEQUhQLENBSUgsS0FBSyxDQUFFLENBQ0gsRUFBRSxDQUFFLEdBREQsQ0FFSCxTQUFTLENBQUUsR0FGUixDQUdILGtCQUFrQixDQUFDLElBSGhCLENBSkosQ0FTSCxVQUFVLENBQUUsb0JBQVMsTUFBVCxDQUFpQixVQUFqQixDQUE2QixxQkFBN0IsQ0FBbUQsZUFBbkQsQ0FBbUUsQ0FDM0UsTUFBTSxDQUFDLElBQVAsQ0FBWSx5QkFBWixDQUNBLE1BQU0sQ0FBQyxHQUFQLENBQVkscUJBQVosQ0FDQSxNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FDQSxVQUFVLENBQUMsbUJBQVgsQ0FBaUMsQ0FDekIsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFPLElBQUksQ0FBRSxVQUFiLENBQXlCLEtBQUssQ0FBQyxVQUEvQixDQUR5QixDQUV6QixDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU8sSUFBSSxDQUFFLFdBQWIsQ0FBMEIsS0FBSyxDQUFDLFVBQWhDLENBRnlCLENBQWpDLENBS0csQ0FsQkosQ0FtQkgsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixPQUFqQixDQUEwQixJQUExQixDQUFnQyxDQUVwQyxLQUFLLENBQUMsY0FBTixDQUF1QixVQUFXLENBRTVCLEdBQUksQ0FBQSxRQUFRLENBQUUsRUFBZCxDQUNBLEdBQUksS0FBSyxDQUFDLFNBQU4sRUFBaUIsU0FBckIsQ0FBZ0MsS0FBSyxDQUFDLFNBQU4sQ0FBa0IsRUFBbEIsQ0FDaEMsR0FBSSxLQUFLLENBQUMsRUFBTixHQUFXLFNBQWYsQ0FDQSxDQUNJLFFBQVEsQ0FBRyx3QkFBd0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxhQUFqQyxDQUErQyxpQkFBMUQsQ0FBNEU7QUFDL0UsQ0FIRCxJQUlBLENBQ0ksUUFBUSxDQUFHLGtEQUFYLENBQ0gsQ0FDRCxNQUFPLENBQUEsUUFBUCxDQUVILENBYkgsQ0FjRCxDQW5DRSxDQUFQLENBcUNILEVBQ00sUUFBUyxDQUFBLG9CQUFULEVBQWlDLENBQ3BDLE1BQU8sQ0FFSCxVQUFVLENBQUMsb0JBQVMsTUFBVCxDQUFnQixRQUFoQixDQUF5QixRQUF6QixDQUFrQyxDQUV4QztBQUNBLEdBQUksQ0FBQSxpQkFBaUIsQ0FBRyxRQUFVLE1BQU0sQ0FBQyxFQUFQLENBQVUsb0JBQXBCLENBQTJDLFNBQW5FLENBQ0EsUUFBUSxDQUFDLE1BQVQsQ0FBZ0IsUUFBUSxDQUFDLGlCQUFELENBQVIsQ0FBNEIsTUFBNUIsQ0FBaEIsRUFFQSxDQVJGLENBU0gsSUFBSSxDQUFFLGNBQVMsS0FBVCxDQUFnQixPQUFoQixDQUF5QixDQUU5QixDQVhFLENBQVAsQ0FhSCxFQUNELGFBRU8sUUFBUyxDQUFBLFlBQVQsRUFBeUIsQ0FFeEIsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBR0wsVUFBVSxDQUFFLENBQUMsUUFBRCxDQUFVLGdCQUFWLENBQTJCLFlBQTNCLENBQXdDLGlCQUF4QyxDQUEwRCxVQUExRCxDQUFxRSxVQUFyRSxDQUFnRixnQkFBaEYsQ0FDUixTQUFTLE1BQVQsQ0FBZ0IsY0FBaEIsQ0FBK0IsVUFBL0IsQ0FBMEMsZUFBMUMsQ0FBMEQsUUFBMUQsQ0FBbUUsUUFBbkUsQ0FBNEUsY0FBNUUsQ0FBMkYsQ0FFekYsTUFBTSxDQUFDLEtBQVAsQ0FBZSxlQUFmLENBQ0EsTUFBTSxDQUFDLElBQVAsQ0FBYyxjQUFkLENBQ0EsR0FBSSxDQUFBLG9CQUFvQixDQUFHLHFCQUEzQixDQUNBLEdBQUksQ0FBQSxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsMkNBQW5CLENBQWYsQ0FFQSxHQUFJLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUE5QixDQUFrRCxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsd0NBQW5CLENBQVgsQ0FFbEQsTUFBTSxDQUFDLG1CQUFQLENBQTJCLENBQ3ZCLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTyxLQUFLLENBQUMsVUFBYixDQUF3QixLQUFLLENBQUMsV0FBOUIsQ0FBMEMsU0FBUyxDQUFDLFVBQXBELENBRHVCLENBRXZCLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTyxLQUFLLENBQUMsV0FBYixDQUF5QixLQUFLLENBQUMsWUFBL0IsQ0FBNEMsU0FBUyxDQUFDLFVBQXRELENBRnVCLENBR3ZCLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTyxLQUFLLENBQUMsVUFBYixDQUF3QixLQUFLLENBQUMsVUFBOUIsQ0FBeUMsU0FBUyxDQUFDLFVBQW5ELENBSHVCLENBQTNCLENBTUEsR0FBSSxDQUFBLEdBQUcsQ0FBRyxjQUFjLENBQUMsSUFBZixDQUFvQixVQUFwQixDQUFnQyxhQUFoQyxDQUFWLENBQ0EsR0FBSSxDQUFDLEdBQUwsQ0FDSyxNQUFNLENBQUMsS0FBUCxDQUFhLFlBQWIsQ0FBMEIsYUFBMUIsQ0FBd0MsaUJBQXhDLENBQTBELG9CQUExRCxFQURMLElBRUssQ0FDRCxHQUFJLE1BQU0sQ0FBQyxLQUFQLENBQWEsWUFBYixFQUE2QixDQUFqQyxDQUFtQyxDQUNoQyxHQUFJLE1BQU0sQ0FBQyxLQUFQLENBQWEscUJBQWIsRUFBb0MsQ0FBeEMsQ0FBMkMsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLGFBQTVCLEVBQzNDLE1BQU0sQ0FBQyxLQUFQLENBQWEsWUFBYixDQUEwQixhQUExQixDQUF3QyxpQkFBeEMsQ0FBMEQsb0JBQTFELEVBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBYSx3QkFBYixDQUFzQyxDQUF0QyxFQUNGLENBQ0gsQ0FFRixRQUFRLENBQUMsTUFBVCxDQUFnQixRQUFRLENBQUMsUUFBRCxDQUFSLENBQW1CLE1BQW5CLENBQWhCLEVBQ0gsQ0E1QlMsQ0FIUCxDQWlDSCxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBR3BDLEtBQUssQ0FBQyxhQUFOLENBQW9CLEtBQXBCLENBRUEsS0FBSyxDQUFDLFVBQU4sQ0FBaUIsV0FBakIsQ0FBNkIsS0FBSyxDQUFDLFVBQU4sQ0FBaUIsTUFBOUMsQ0FFQyxLQUFLLENBQUMsYUFBTixDQUFzQixVQUFXLENBQzlCLEtBQUssQ0FBQyxXQUFOLENBQWtCLENBQWxCLENBQ0EsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQU4sQ0FBaUIsTUFBakIsQ0FBd0IsTUFBdkMsQ0FBOEMsQ0FBQyxFQUEvQyxDQUNBLENBQ0csR0FBSSxLQUFLLENBQUMsVUFBTixDQUFpQixNQUFqQixDQUF3QixDQUF4QixFQUEyQixNQUEzQixFQUFtQyxRQUF2QyxDQUFpRCxLQUFLLENBQUMsV0FBTixHQUVqRCxHQUFJLEtBQUssQ0FBQyxXQUFOLENBQWtCLENBQXRCLENBQXlCLE1BRTNCLENBQ0QsTUFBTyxDQUFBLEtBQUssQ0FBQyxXQUFiLENBQ0YsQ0FWRCxDQVlELEtBQUssQ0FBQyxXQUFOLENBQW9CLFNBQVUsS0FBVixDQUFnQixDQUVoQyxHQUFJLEtBQUssQ0FBRyxDQUFDLENBQWIsQ0FBZ0IsQ0FDekI7QUFDYyxLQUFLLENBQUMsVUFBTixDQUFpQixNQUFqQixDQUF3QixLQUF4QixFQUErQixNQUEvQixDQUFzQyxTQUF0QyxDQUFpRDtBQUNqRCxLQUFLLENBQUMsVUFBTixDQUFpQixXQUFqQixHQUNkO0FBQ0YsQ0FFUSxDQVRELENBVUQsQ0E5REksQ0FBUCxDQWlFSCxFQUNFLFFBQVMsQ0FBQSwwQkFBVCxFQUF1QyxDQUMxQyxNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFSCxPQUFPLENBQUUsSUFGTixDQUdILFFBQVEsQ0FBRSw0Q0FIUCxDQUlELEtBQUssQ0FBRSxDQUNMLEVBQUUsQ0FBRSxHQURDLENBRUwsU0FBUyxDQUFDLEdBRkwsQ0FKTixDQVFILFVBQVUsQ0FBRSxvQkFBUyxNQUFULENBQWlCLFVBQWpCLENBQTRCLENBQ3BDLE1BQU0sQ0FBQyxJQUFQLENBQVksNEJBQVosQ0FFRyxDQVhKLENBWUgsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixPQUFqQixDQUEwQixJQUExQixDQUFnQyxDQUVwQyxLQUFLLENBQUMsY0FBTixDQUF1QixVQUFXLENBRTVCLEdBQUksQ0FBQSxRQUFRLENBQUUsRUFBZCxDQUVBLFFBQVEsQ0FBRyx3QkFBd0IsS0FBSyxDQUFDLFNBQXpDLENBRUEsTUFBTyxDQUFBLFFBQVAsQ0FFSCxDQVJILENBU0QsQ0F2QkUsQ0FBUCxDQXlCSCxFQUNELGFBRU8sUUFBUyxDQUFBLE1BQVQsQ0FBaUIsZUFBakIsQ0FBaUMsUUFBakMsQ0FBMEMsVUFBMUMsQ0FBcUQsY0FBckQsQ0FBcUUsQ0FFcEUsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBR1osS0FBSyxDQUFDLENBQ1UsVUFBVSxDQUFFLEdBRHRCLENBRVUsTUFBTSxDQUFDLEdBRmpCLENBR1UsUUFBUSxDQUFFLEdBSHBCLENBSVUsVUFBVSxDQUFDLEdBSnJCLENBS1UsZ0JBQWdCLENBQUMsR0FMM0IsQ0FNVSxpQkFBaUIsQ0FBQyxHQU41QixDQU9VLGtCQUFrQixDQUFFLEdBUDlCLENBUVUsbUJBQW1CLENBQUUsR0FSL0IsQ0FTVSxnQkFBZ0IsQ0FBRSxHQVQ1QixDQVVVLGtCQUFrQixDQUFHLEdBVi9CLENBV1UsUUFBUSxDQUFHLEdBWHJCLENBWVUsdUJBQXVCLENBQUcsSUFacEMsQ0FhVSxNQUFNLENBQUMsSUFiakIsQ0FjVSxZQUFZLENBQUMsSUFkdkIsQ0FITSxDQW1CSCxVQUFVLENBQUUsQ0FBQyxRQUFELENBQVUsZ0JBQVYsQ0FBMkIsWUFBM0IsQ0FBd0MsVUFBeEMsQ0FBbUQsVUFBbkQsQ0FBOEQsZ0JBQTlELENBRVosU0FBUyxNQUFULENBQWdCLGNBQWhCLENBQStCLFVBQS9CLENBQTBDLFFBQTFDLENBQW1ELFFBQW5ELENBQTRELGNBQTVELENBQTJFLHFEQUV2RSxNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FDQSxNQUFNLENBQUMsSUFBUCxDQUFZLFFBQVosQ0FDQSxHQUFJLENBQUEsWUFBWSxDQUFHLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGtCQUFuQyxDQUVBLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUF1QixVQUFXLENBQzlCO0FBQ0E7QUFDQTtBQUNILENBSkQsRUFNQSxHQUFJLENBQUEsR0FBRyxDQUFHLGNBQWMsQ0FBQyxJQUFmLENBQW9CLE1BQXBCLENBQTRCLFlBQVksTUFBTSxDQUFDLFFBQW5CLENBQTRCLEdBQTVCLENBQWdDLE1BQU0sQ0FBQyxHQUFuRSxDQUFWLENBRUEsR0FBSSxHQUFKLENBQVMsQ0FDSixjQUFjLENBQUMsT0FBZixDQUF1QixNQUF2QixDQUErQixZQUFZLE1BQU0sQ0FBQyxRQUFuQixDQUE0QixHQUE1QixDQUFnQyxNQUFNLENBQUMsR0FBdEUsRUFDSixDQUNELGNBQWMsQ0FBQyxPQUFmLENBQXVCLE1BQXZCLENBQStCLFlBQVksTUFBTSxDQUFDLFFBQW5CLENBQTRCLEdBQTVCLENBQWdDLE1BQU0sQ0FBQyxHQUF0RSxDQUEyRSxDQUN6RSxhQUFhLENBQUUsSUFEMEQsQ0FFekUsYUFBYSxDQUFFLEtBRjBELENBSXpFLE1BQU0sQ0FBQyxnQkFBVSxFQUFWLENBQWEsTUFBYixDQUFxQixNQUFyQixDQUE2QixDQUNoQyxNQUFPLE1BQVAsQ0FDSCxDQU53RSxDQU96RSxLQUFLLENBQUUsZUFBVSxFQUFWLENBQWMsU0FBZCxDQUF5QixNQUF6QixDQUFpQyxDQUM5QixNQUFPLENBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIsWUFBMUIsQ0FBUCxDQUNULENBVHdFLENBQTNFLEVBY0EsR0FBSSxDQUFBLFFBQUosQ0FDQSxHQUFJLE1BQU0sQ0FBQyxrQkFBUCxHQUE0QixTQUFoQyxDQUEyQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsQ0FBQyxlQUFlLENBQUMsS0FBakIsQ0FBMUIsQ0FDM0MsR0FBSSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBOUIsQ0FBK0MsUUFBUSxDQUFHLGNBQWMsQ0FBQyxHQUFmLENBQW1CLGtDQUFuQixDQUFYLENBQS9DLElBQ0ssQ0FBQSxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIscUNBQW5CLENBQVgsQ0FFTCxRQUFRLENBQUMsTUFBVCxDQUFnQixRQUFRLENBQUMsUUFBRCxDQUFSLENBQW1CLE1BQW5CLENBQWhCLEVBRVosTUFBTSxDQUFDLGlCQUFQLENBQXlCLEVBQXpCLENBQ0EsNEJBQUksTUFBTSxDQUFDLGtCQUFYLDRDQUFJLHdCQUEyQixlQUEvQixDQUNFLE1BQU0sQ0FBQyxpQkFBUCwwQkFBMkIsTUFBTSxDQUFDLGtCQUFsQyxrREFBMkIsd0JBQTJCLGVBQXRELENBRUYsR0FBSSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsRUFBc0MsU0FBMUMsQ0FBcUQsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFVBQTFCLENBQXFDLEVBQXJDLENBQ3JEO0FBQ0E7QUFDQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsQ0FBcUMsTUFBTSxDQUFDLGlCQUFQLENBQTBCLEdBQTFCLENBQStCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixHQUE5RixFQUFtRyxLQUFuRyxDQUlTLENBbkRXLENBbkJULENBdUVILElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FHaEMsS0FBSyxDQUFDLFlBQU4sQ0FBcUIsU0FBUyxNQUFULENBQ3JCLENBQ0ksS0FBSyxDQUFDLFVBQU4sQ0FBaUIsWUFBakIsQ0FBOEIsTUFBOUIsQ0FDQSxLQUFLLENBQUMsS0FBTixDQUFZLGVBQVosQ0FBNEIsS0FBSyxDQUFDLFVBQU4sQ0FBaUIsWUFBN0MsRUFDSCxDQUpELENBTUEsS0FBSyxDQUFDLFFBQU4sQ0FBaUIsU0FBUyxJQUFULENBQ2pCLENBQ0ksTUFBTyxVQUFVLElBQWpCLENBQ0gsQ0FIRCxDQU1BLEtBQUssQ0FBQyxNQUFOLENBQWEsb0JBQWIsQ0FBa0MsU0FBUyxRQUFULENBQWtCLFFBQWxCLENBQTJCLENBQ3pELEdBQUksUUFBUSxFQUFFLFFBQVYsRUFBc0IsUUFBMUIsQ0FBb0MsQ0FDbkMsS0FBSyxDQUFDLFVBQU4sQ0FBbUIsS0FBSyxDQUFDLGtCQUF6QixDQUNBLENBQ0osQ0FKRCxFQU1BLEtBQUssQ0FBQyxNQUFOLENBQWEsK0JBQWIsQ0FBNkMsU0FBUyxRQUFULENBQWtCLFFBQWxCLENBQTJCLENBQ3BFLEdBQUksUUFBUSxFQUFFLFFBQVYsRUFBc0IsUUFBMUIsQ0FBcUMsQ0FDakMsR0FBSSxLQUFLLENBQUMsVUFBTixHQUFtQixTQUF2QixDQUFtQyxLQUFLLENBQUMsa0JBQU4sQ0FBMkIsS0FBSyxDQUFDLFVBQU4sQ0FBaUIsa0JBQTVDLENBQ3RDLENBQ0osQ0FKRCxFQU1GLENBbEdDLENBQVAsQ0FvR0gsRUFDTCxhQUVPLFFBQVMsQ0FBQSxLQUFULENBQWUsR0FBZixDQUFvQixDQUFHO0FBQzFCLEdBQUksR0FBRyxHQUFLLElBQVIsRUFBZ0IsUUFBUSxHQUFSLElBQWlCLFFBQWpDLEVBQTZDLGlCQUFtQixDQUFBLEdBQXBFLENBQ0ksTUFBTyxDQUFBLEdBQVAsQ0FFSixHQUFJLEdBQUcsV0FBWSxDQUFBLElBQW5CLENBQ0ksR0FBSSxDQUFBLElBQUksQ0FBRyxHQUFJLENBQUEsR0FBRyxDQUFDLFdBQVIsRUFBWCxDQUFrQztBQUR0QyxJQUdJLElBQUksQ0FBQSxJQUFJLENBQUcsR0FBRyxDQUFDLFdBQUosRUFBWCxDQUVKLElBQUssR0FBSSxDQUFBLEdBQVQsR0FBZ0IsQ0FBQSxHQUFoQixDQUFxQixDQUNqQixHQUFJLEdBQUcsRUFBRSxPQUFULENBQWtCLFNBQVM7QUFDM0IsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFnQyxJQUFoQyxDQUFxQyxHQUFyQyxDQUEwQyxHQUExQyxDQUFKLENBQW9ELENBQ2hELEdBQUcsQ0FBQyxlQUFELENBQUgsQ0FBdUIsSUFBdkIsQ0FDQSxJQUFJLENBQUMsR0FBRCxDQUFKLENBQVksS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFELENBQUosQ0FBakIsQ0FDQSxNQUFPLENBQUEsR0FBRyxDQUFDLGVBQUQsQ0FBVixDQUNILENBQ0osQ0FDRCxNQUFPLENBQUEsSUFBUCxDQUNILENBR00sUUFBUyxDQUFBLFlBQVQsRUFBeUIsQ0FDM0I7QUFDRyxNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FHRixLQUFLLENBQUMsQ0FDQSxVQUFVLENBQUcsR0FEYixDQUVBLFVBQVUsQ0FBRSxHQUZaLENBR0EsTUFBTSxDQUFFLEdBSFIsQ0FJQSxRQUFRLENBQUUsR0FKVixDQUtBLFFBQVEsQ0FBRSxHQUxWLENBTUEsa0JBQWtCLENBQUUsR0FOcEIsQ0FPQSxVQUFVLENBQUMsR0FQWCxDQVFBLGdCQUFnQixDQUFDLEdBUmpCLENBU0EsaUJBQWlCLENBQUMsR0FUbEIsQ0FVQSxtQkFBbUIsQ0FBRSxHQVZyQixDQVdBLGdCQUFnQixDQUFFLEdBWGxCLENBWUEsa0JBQWtCLENBQUcsR0FackIsQ0FhQSxRQUFRLENBQUcsR0FiWCxDQWNBLEtBQUssQ0FBRyxHQWRSLENBZUEsTUFBTSxDQUFFLElBZlIsQ0FnQkEsWUFBWSxDQUFDLElBaEJiLENBSEosQ0FxQkUsVUFBVSxDQUFFLENBQUMsUUFBRCxDQUFXLFVBQVgsQ0FBc0IsWUFBdEIsQ0FBbUMsaUJBQW5DLENBQXFELDJCQUFyRCxDQUFpRixVQUFqRixDQUE0RixnQkFBNUYsQ0FBNkcscUJBQTdHLENBQW1JLFVBQW5JLENBQThJLGdCQUE5SSxDQUErSixnQkFBL0osQ0FDQyxTQUFVLE1BQVYsQ0FBa0IsUUFBbEIsQ0FBMkIsVUFBM0IsQ0FBc0MsZUFBdEMsQ0FBc0QseUJBQXRELENBQWdGLFFBQWhGLENBQXlGLGNBQXpGLENBQXdHLG1CQUF4RyxDQUE0SCxRQUE1SCxDQUFxSSxjQUFySSxDQUFvSixjQUFwSixDQUFvSyxDQUUxSztBQUNBLEdBQUksTUFBTSxDQUFDLFVBQVAsQ0FBa0IsU0FBbEIsRUFBK0IsU0FBL0IsRUFBNEMsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsU0FBbEIsRUFBK0IsSUFBL0UsQ0FBcUYsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsU0FBbEIsQ0FBNEIsRUFBNUIsQ0FDckYsTUFBTSxDQUFDLElBQVAsQ0FBWSxjQUFaLENBQ0EsTUFBTSxDQUFDLEdBQVAsQ0FBYSxtQkFBYixDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWUsZUFBZixDQUNBO0FBQ0E7QUFDQSxNQUFNLENBQUMsVUFBUCxDQUFrQixTQUFsQixDQUE0QixnQ0FBNUIsQ0FBZ0UsZUFBZSxDQUFDLDBCQUFoRixDQUNBLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFNBQWxCLENBQTRCLDZCQUE1QixDQUE2RCxlQUFlLENBQUMsdUJBQTdFLENBQ0EsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsU0FBbEIsQ0FBNEIsNkJBQTVCLENBQTZELGVBQWUsQ0FBQyx1QkFBN0UsQ0FDQSxNQUFNLENBQUMsVUFBUCxDQUFrQixTQUFsQixDQUE0QixtQkFBNUIsQ0FBa0QsZUFBZSxDQUFDLGFBQWxFLENBRUEsR0FBSyxNQUFNLENBQUMsVUFBUCxDQUFrQixVQUFsQixFQUFnQyxTQUFoQyxFQUE2QyxNQUFNLENBQUMsSUFBUCxDQUFZLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFVBQWxCLEVBQWdDLEVBQTVDLEVBQWdELE1BQWhELEdBQTJELENBQTdHLENBQWlILENBRTdHLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFVBQWxCLENBQTZCLENBQUU7QUFDM0IsT0FBTyxDQUFFLEVBRGdCLENBRXpCLE9BQU8sQ0FBRSxFQUZnQixDQUd6QixPQUFPLENBQUUsRUFIZ0IsQ0FBN0IsQ0FLSCxDQUdGLEdBQUksTUFBTSxDQUFDLFVBQVAsQ0FBa0IsVUFBbEIsQ0FBNkIsTUFBN0IsRUFBdUMsU0FBdkMsRUFBb0QsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsVUFBbEIsQ0FBNkIsTUFBN0IsRUFBdUMsSUFBL0YsQ0FDQSxDQUVDLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFVBQWxCLENBQTZCLE1BQTdCLENBQXNDLENBQ2xDLElBQUksQ0FBRSxDQUNGLElBQUksQ0FBRSxNQURKLENBRUYsS0FBSyxDQUFDLE9BRkosQ0FHRixLQUFLLENBQUMsQ0FISixDQUlGLEtBQUssQ0FBQyxTQUpKLENBRDRCLENBT2xDLEtBQUssQ0FBRSxDQUNILElBQUksQ0FBRSxPQURILENBRUgsS0FBSyxDQUFDLE9BRkgsQ0FHSCxLQUFLLENBQUMsQ0FISCxDQUlGLEtBQUssQ0FBQyxTQUpKLENBUDJCLENBYWxDLEdBQUcsQ0FBQyxDQUNBLElBQUksQ0FBRSxLQUROLENBRUEsS0FBSyxDQUFDLE9BRk4sQ0FHQSxLQUFLLENBQUMsQ0FITixDQUlBLEtBQUssQ0FBQyxTQUpOLENBYjhCLENBbUJsQyxNQUFNLENBQUMsQ0FDSCxJQUFJLENBQUUsUUFESCxDQUVILEtBQUssQ0FBQyxPQUZILENBR0gsS0FBSyxDQUFDLENBSEgsQ0FJSCxLQUFLLENBQUMsU0FKSCxDQW5CMkIsQ0FBdEMsQ0EwQkEsQ0FHQSxHQUFJLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFVBQWxCLENBQTZCLE1BQTdCLEVBQXdDLFNBQXhDLEVBQXNELE1BQU0sQ0FBQyxVQUFQLENBQWtCLFVBQWxCLENBQTZCLE1BQTdCLEVBQXdDLElBQWxHLENBQXdHLENBQ2hHLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFVBQWxCLENBQTZCLE1BQTdCLENBQXFDLENBQ2hDLElBQUksQ0FBRSxDQUNILElBQUksQ0FBRSxhQURILENBRUgsS0FBSyxDQUFFLENBRkosQ0FHSCxLQUFLLENBQUMsSUFISCxDQUlILElBQUksQ0FBRSxJQUpILENBRDBCLENBT2hDLEtBQUssQ0FBRSxDQUNKLElBQUksQ0FBRSxjQURGLENBRUosS0FBSyxDQUFFLENBRkgsQ0FHSixLQUFLLENBQUMsSUFIRixDQUlKLElBQUksQ0FBRSxJQUpGLENBUHlCLENBYWhDLEdBQUcsQ0FBRSxDQUNGLElBQUksQ0FBRSxZQURKLENBRUYsS0FBSyxDQUFFLENBRkwsQ0FHRixLQUFLLENBQUMsSUFISixDQUlGLElBQUksQ0FBRSxJQUpKLENBYjJCLENBbUJoQyxNQUFNLENBQUUsQ0FDTCxJQUFJLENBQUUsZUFERCxDQUVMLEtBQUssQ0FBRSxDQUZGLENBR0wsS0FBSyxDQUFDLElBSEQsQ0FJTCxJQUFJLENBQUUsSUFKRCxDQW5Cd0IsQ0FBckMsQ0EwQlAsQ0FDRCxHQUFJLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFVBQWxCLENBQTZCLE9BQTdCLEVBQXlDLFNBQXpDLEVBQXVELE1BQU0sQ0FBQyxVQUFQLENBQWtCLFVBQWxCLENBQTZCLE9BQTdCLEVBQXlDLElBQXBHLENBQXlHLENBQ2pHLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFVBQWxCLENBQTZCLE9BQTdCLENBQXNDLENBQ3JDLElBQUksQ0FBRSxDQUNILElBQUksQ0FBRSxjQURILENBRUgsS0FBSyxDQUFFLENBRkosQ0FHSCxLQUFLLENBQUMsSUFISCxDQUlILElBQUksQ0FBRSxJQUpILENBRCtCLENBT3JDLEtBQUssQ0FBRSxDQUNKLElBQUksQ0FBRSxlQURGLENBRUgsS0FBSyxDQUFFLENBRkosQ0FHSixLQUFLLENBQUMsSUFIRixDQUlKLElBQUksQ0FBRSxJQUpGLENBUDhCLENBYXJDLEdBQUcsQ0FBRSxDQUNGLElBQUksQ0FBRSxhQURKLENBRUgsS0FBSyxDQUFFLENBRkosQ0FHRixLQUFLLENBQUMsSUFISixDQUlGLElBQUksQ0FBRSxJQUpKLENBYmdDLENBbUJyQyxNQUFNLENBQUUsQ0FDTCxJQUFJLENBQUUsZ0JBREQsQ0FFTCxLQUFLLENBQUUsQ0FGRixDQUdMLEtBQUssQ0FBQyxJQUhELENBSUwsSUFBSSxDQUFFLElBSkQsQ0FuQjZCLENBQXRDLENBMkJQLENBSVQsR0FBSSxNQUFNLENBQUMsVUFBUCxDQUFrQixPQUFsQixFQUEyQixTQUEvQixDQUEwQyxNQUFNLENBQUMsVUFBUCxDQUFrQixPQUFsQixDQUEwQixjQUFjLENBQUMsTUFBZixFQUExQixDQUMxQyxNQUFNLENBQUMsVUFBUCxDQUFrQixVQUFsQixDQUE2QixPQUE3QixDQUF1QyxNQUFNLENBQUMsVUFBUCxDQUFrQixPQUF6RCxDQUVBLEdBQUksQ0FBQSxTQUFTLENBQUMsQ0FDVixDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLGtCQUFYLENBRFUsQ0FFVixDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLFdBQVgsQ0FGVSxDQUdWLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsV0FBWCxDQUhVLENBQWQsQ0FLQyxHQUFJLENBQUEsZUFBZSxDQUFHLEVBQXRCLENBRUQsR0FBSSxNQUFNLENBQUMsWUFBUCxFQUFxQixTQUF6QixDQUFvQyxlQUFlLENBQUcsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsR0FBdEMsQ0FDcEMsR0FBSSxDQUFBLGdCQUFnQixDQUFHLENBQUMsV0FBVyxDQUFFLFFBQWQsQ0FBdUIsVUFBVSxDQUFFLFFBQW5DLENBQTRDLFFBQVEsQ0FBRSxlQUFlLENBQUMsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsT0FBeEYsQ0FBZ0csRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUExRyxDQUFxSCxPQUFPLENBQUMsU0FBN0gsQ0FBdUksZ0JBQWdCLENBQUMsTUFBTSxDQUFDLGNBQS9KLENBQThLLGVBQWUsQ0FBQyxNQUFNLENBQUMsYUFBck0sQ0FBbU4sTUFBTSxDQUFHLE1BQU0sQ0FBQyxPQUFuTyxDQUEyTyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsR0FBdFIsQ0FBdkIsQ0FDQSxNQUFNLENBQUMsVUFBUCxDQUFrQixTQUFsQixDQUE0QixhQUE1QixDQUE0Qyx5QkFBeUIsQ0FBQyxjQUExQixDQUF5QyxnQkFBekMsQ0FBNUMsQ0FDQSxNQUFNLENBQUMsVUFBUCxDQUFrQixTQUFsQixDQUE0QixPQUE1QixDQUFvQyxNQUFNLENBQUMsVUFBUCxDQUFrQixTQUFsQixDQUE0QixhQUFoRSxDQUNBLE1BQU0sQ0FBQyxVQUFQLENBQWtCLE9BQWxCLENBQTBCLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFNBQWxCLENBQTRCLGFBQXRELENBRUEsR0FBSSxDQUFBLHNCQUFzQixDQUFHLFFBQXpCLENBQUEsc0JBQXlCLENBQVMsSUFBVCxDQUM3QixDQUNHLEdBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFQLENBQWtCLE9BQW5CLENBQUosQ0FBZ0MsQ0FBaEMsR0FBc0MsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsY0FBbEIsRUFBa0MsSUFBbEMsRUFBMEMsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsY0FBbEIsRUFBa0MsQ0FBbEgsQ0FBSixDQUEwSCxNQUFNLENBQUMsVUFBUCxDQUFrQixjQUFsQixDQUFtQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsT0FBbkIsQ0FBdkMsQ0FDM0g7QUFFRCxDQUxELENBT0EsR0FBSSxNQUFNLENBQUMsVUFBUCxDQUFrQixjQUFsQixFQUFrQyxDQUFsQyxFQUF1QyxNQUFNLENBQUMsVUFBUCxDQUFrQixjQUFsQixFQUFrQyxJQUE3RSxDQUNBLENBRUksR0FBSSxDQUFBLFdBQVcsQ0FBRyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBNUMsQ0FDQSxHQUFJLFdBQVcsRUFBRSxTQUFqQixDQUE0QixXQUFXLENBQUcsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGdCQUF4QyxDQUM1QixHQUFJLENBQUEsZUFBZSxDQUFHLE1BQU0sQ0FBQyxVQUFQLENBQWtCLE9BQXhDLENBQ0EsR0FBSSxDQUFBLGlCQUFpQixDQUFHLHNCQUFzQixXQUF0QixDQUFrQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsU0FBcEYsQ0FDQSxHQUFJLENBQUEsUUFBUSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixpQkFBckIsQ0FBdUMsZUFBdkMsQ0FBdUQsV0FBdkQsQ0FBbUUsc0JBQW5FLENBQWYsQ0FDSCxDQUdELEdBQUksQ0FBQSxRQUFRLENBQUcsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsR0FBaEIsQ0FBb0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGdCQUE5QyxDQUErRCxHQUEvRCxDQUFtRSxNQUFNLENBQUMsVUFBUCxDQUFrQixXQUFyRixDQUFpRyxHQUFqRyxDQUFxRyxNQUFNLENBQUMsTUFBUCxDQUFjLEVBQW5ILENBQXNILEdBQXRILENBQTBILE1BQU0sQ0FBQyxVQUFQLENBQWtCLEVBQTNKLENBQ0EsR0FBSSxDQUFBLGtCQUFrQixDQUFHLG1CQUFtQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZ0JBQXRFLENBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBNUtrTSxDQWtMbEw7QUFDQSxHQUFJLENBQUEsWUFBWSxDQUFHLFFBQWYsQ0FBQSxZQUFlLENBQVMsSUFBVCxDQUFjLE1BQWQsQ0FDbkIsQ0FDSSxHQUFJLElBQUksR0FBRyxTQUFYLENBQ0EsQ0FDSSxHQUFJLENBQUEsVUFBVSxDQUFHLElBQUksQ0FBQyxPQUF0QixDQUNBLEdBQUksSUFBSSxDQUFDLEVBQUwsR0FBVSxRQUFWLEVBQXNCLE1BQU0sR0FBRyx1QkFBbkMsQ0FFQSxDQUNJLE1BQU0sQ0FBQyxNQUFQLENBQWMsTUFBZCxDQUFxQixNQUFNLENBQUMsS0FBNUIsRUFBcUMsVUFBckMsQ0FDQSxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIsa0JBQXpCLENBQTRDLDJCQUE1QyxFQUNBLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixJQUF4QixDQUNILENBQ0osQ0FDSixDQWJELENBZUE7QUFDQSxHQUFJLENBQUEsWUFBWSxDQUFHLFFBQWYsQ0FBQSxZQUFlLENBQVMsSUFBVCxDQUFjLE1BQWQsQ0FDbkIsQ0FDSSxHQUFJLElBQUksR0FBRyxTQUFYLENBQ0EsQ0FDSSxHQUFJLENBQUEsVUFBVSxDQUFHLElBQUksQ0FBQyxPQUF0QixDQUNBLEdBQUksSUFBSSxDQUFDLEVBQUwsR0FBVSxRQUFWLEVBQXNCLE1BQU0sR0FBRyx1QkFBbkMsQ0FFQSxDQUVRLE1BQU0sQ0FBQyxNQUFQLENBQWMsTUFBZCxDQUFxQixNQUFNLENBQUMsS0FBNUIsRUFBcUMsVUFBckMsQ0FDQSxNQUFNLENBQUMsZ0JBQVAsQ0FBd0IsSUFBeEIsQ0FFUCxDQUNKLENBQ0osQ0FkRCxDQWdCQztBQUNELEdBQUksQ0FBQSxhQUFhLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLGtCQUFyQixDQUF3QyxRQUF4QyxDQUFpRCx1QkFBakQsQ0FBeUUsWUFBekUsQ0FBcEIsQ0FDQztBQUNELEdBQUksQ0FBQSxhQUFhLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLGtCQUFyQixDQUF3QyxRQUF4QyxDQUFpRCx1QkFBakQsQ0FBeUUsWUFBekUsQ0FBcEIsQ0FFTjtBQUNDO0FBRUg7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkhBRVksTUFBTSxDQUFDLFNBQVAsQ0FBbUIsU0FBVSxHQUFWLENBQWMsSUFBZCxDQUNuQixDQUVNLEdBQUksQ0FBQSxNQUFNLENBQUcsTUFBTSxDQUFDLEtBQVAsQ0FBYSxJQUExQixDQUNBLEdBQUksQ0FBQSxJQUFJLENBQUcsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsS0FBN0IsQ0FDQSxHQUFJLENBQUEsU0FBUyxDQUFHLGVBQWUsQ0FBQyxvQkFBaEIsQ0FBcUMsTUFBTSxDQUFDLFVBQTVDLENBQWhCLENBRUEsU0FBUyxDQUFDLEtBQVYsQ0FBa0IsSUFBbEIsQ0FDQTtBQUNBO0FBQ0EsR0FBRyxDQUFDLE1BQUosQ0FBVyxNQUFYLENBQWtCLE1BQWxCLENBQXlCLENBQXpCLENBQTRCLFNBQTVCLEVBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBYSxtQkFBYixDQUFpQyxXQUFqQyxHQUNMLENBZkQsQ0FvQkUsR0FBSSxNQUFNLENBQUMsUUFBUCxFQUFpQixFQUFqQixFQUF1QixNQUFNLENBQUMsUUFBUCxFQUFpQixTQUE1QyxDQUF1RCxDQUNqRCxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixDQUNILENBRUMsTUFBTSxDQUFDLFFBQVAsQ0FBa0IsU0FBUyxJQUFULENBQ2xCLENBRUUsTUFBTyxVQUFVLElBQWpCLENBRUQsQ0FMRCxDQU9BLE1BQU0sQ0FBQyxRQUFQLENBQWtCLFNBQVMsS0FBVCxDQUNsQixDQUNFLE1BQU0sQ0FBQyxLQUFQLENBQWEsS0FBYixDQUNELENBSEQsQ0FLQSxNQUFNLENBQUMsU0FBUCxDQUFtQixTQUFVLElBQVYsQ0FBZSxDQUM1QixNQUFPLFVBQVUsSUFBVixDQUFlLFNBQXRCLENBQ04sQ0FGQSxDQUtELE1BQU0sQ0FBQyxNQUFQLENBQWdCLFVBQVcsQ0FDcEIsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsTUFBbEIsQ0FBeUIsSUFBekIsQ0FBOEIsZUFBZSxDQUFDLGlCQUFoQixDQUFrQyxNQUFNLENBQUMsVUFBekMsQ0FBOUIsRUFDTixDQUZELENBT0QsTUFBTSxDQUFDLGtCQUFQLENBQTRCLFNBQVMsS0FBVCxDQUN0QixDQUNFLE1BQU0sQ0FBQyxLQUFQLENBQWEsd0JBQWIsQ0FBc0MsS0FBdEMsRUFDQSxNQUFNLENBQUMsbUJBQVAsQ0FBMkIsTUFBTSxDQUFDLEtBQVAsQ0FBYSx3QkFBYixFQUEzQixDQUVELENBTFAsQ0FPRCxNQUFNLENBQUMsV0FBUCxDQUFxQixTQUFVLE1BQVYsQ0FDckIsQ0FFQyxHQUFJLENBQUEsV0FBVyxDQUFHLGVBQWUsQ0FBQyx1QkFBaEIsQ0FBd0MsTUFBTSxDQUFDLE9BQS9DLENBQXVELE1BQXZELENBQWxCLENBQ0UsTUFBTSxDQUFDLE1BQVAsQ0FBYyxNQUFkLENBQXFCLE1BQXJCLENBQTRCLE1BQU0sQ0FBQyxNQUFQLENBQWMsTUFBZCxDQUFxQixPQUFyQixDQUE2QixNQUE3QixDQUE1QixDQUFpRSxDQUFqRSxDQUFtRSxXQUFuRSxFQUNILENBTEEsQ0FRQSxNQUFNLENBQUMsTUFBUCxDQUFnQixTQUFVLElBQVYsQ0FBZSxDQUMzQjtBQUVBLEdBQUksSUFBSSxDQUFDLE1BQUwsQ0FBWSxNQUFaLEVBQW9CLENBQXhCLENBQTJCLENBQ3BCLEdBQUksTUFBTSxDQUFDLE1BQVAsRUFBZSxTQUFuQixDQUE2QixDQUMzQixNQUFNLENBQUMsVUFBUCxDQUFrQixNQUFsQixDQUF5QixNQUFNLENBQUMsVUFBUCxDQUFrQixPQUFsQixDQUEwQixJQUExQixDQUF6QixDQUEwRCxDQUExRCxFQUNELENBRkQsSUFFVSxDQUNSLE1BQU0sQ0FBQyxNQUFQLENBQWMsTUFBZCxDQUFxQixNQUFyQixDQUE0QixNQUFNLENBQUMsTUFBUCxDQUFjLE1BQWQsQ0FBcUIsT0FBckIsQ0FBNkIsSUFBN0IsQ0FBNUIsQ0FBZ0UsQ0FBaEUsRUFDRCxDQUNILENBRVAsQ0FYRixDQWFDLEdBQU0sQ0FBQSxVQUFVLENBQUUsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBQTFCLENBQXdDLEdBQXhDLENBQTRDLE1BQU0sQ0FBQyxVQUFQLENBQWtCLE9BQWhGLENBRUEsR0FBSSxDQUFBLFVBQVUsQ0FBRSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsVUFBdEIsQ0FBaUMsSUFBakMsQ0FBaEIsQ0FDQSxHQUFNLENBQUEsY0FBYyxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLElBQTFDLENBRUEsR0FBSSxDQUFBLFVBQVUsQ0FBRyxRQUFiLENBQUEsVUFBYSxDQUFTLElBQVQsQ0FDakIsQ0FDSSxNQUFNLENBQUMsVUFBUCxDQUFrQixTQUFsQixDQUE4QixJQUE5QixDQUNBLEdBQUksQ0FBQSxLQUFLLENBQUcsSUFBWixDQUNBLEtBQUssQ0FBQyxLQUFELENBQUwsQ0FBZSxJQUFmLENBQ0EsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsZUFBbkIsQ0FBcUMsS0FBckMsQ0FDQSxVQUFVLENBQUMsT0FBWCxDQUFtQixlQUFuQixDQUFtQyxXQUFuQyxDQUErQyxLQUEvQyxFQUNILENBUEQsQ0FRQSxHQUFJLENBQUEsVUFBVSxDQUFHLFFBQWIsQ0FBQSxVQUFhLENBQVMsSUFBVCxDQUNqQixDQUNJLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFNBQWxCLENBQThCLEtBQTlCLENBQ0EsR0FBSSxDQUFBLEtBQUssQ0FBRyxJQUFaLENBQ0EsS0FBSyxDQUFDLEtBQUQsQ0FBTCxDQUFlLElBQWYsQ0FDQSxVQUFVLENBQUMsT0FBWCxDQUFtQixlQUFuQixDQUFxQyxLQUFyQyxDQUNBLFVBQVUsQ0FBQyxPQUFYLENBQW1CLGVBQW5CLENBQW1DLFdBQW5DLENBQStDLEtBQS9DLEVBQ0gsQ0FQRCxDQVNBLEdBQUksQ0FBQSxpQkFBaUIsQ0FBRyxRQUFwQixDQUFBLGlCQUFvQixDQUFTLElBQVQsQ0FDeEIsQ0FDSSxNQUFNLENBQUMsVUFBUCxDQUFrQixTQUFsQixDQUE4QixDQUFDLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFNBQWpELENBQ0EsR0FBSSxDQUFBLEtBQUssQ0FBRyxJQUFaLENBQ0EsS0FBSyxDQUFDLEtBQUQsQ0FBTCxDQUFnQixNQUFNLENBQUMsVUFBUCxDQUFrQixTQUFsQyxDQUNBLFVBQVUsQ0FBQyxPQUFYLENBQW1CLGVBQW5CLENBQXFDLEtBQXJDLENBQ0EsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsZUFBbkIsQ0FBbUMsa0JBQW5DLENBQXNELElBQXRELEVBQ0gsQ0FQRCxDQVNBLEdBQUksQ0FBQSxXQUFXLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLGNBQXJCLENBQW9DLFdBQXBDLENBQWdELFVBQWhELENBQWxCLENBQ0EsR0FBSSxDQUFBLFdBQVcsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsY0FBckIsQ0FBb0MsV0FBcEMsQ0FBZ0QsVUFBaEQsQ0FBbEIsQ0FDQSxHQUFJLENBQUEsYUFBYSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixjQUFyQixDQUFvQyxrQkFBcEMsQ0FBdUQsaUJBQXZELENBQXBCLENBR0E7QUFDQSxNQUFNLENBQUMsVUFBUCxDQUFrQixTQUFsQixDQUE0Qix1QkFBNUIsQ0FBc0QsU0FBVSxLQUFWLENBQWtCLE9BQWxCLENBQTJCO0FBQ2pGLENBQ0k7QUFDQSxNQUFNLENBQUMsVUFBUCxDQUFrQixTQUFsQixDQUE0Qiw2QkFBNUIsQ0FBMEQsS0FBMUQsRUFDQSxNQUFNLENBQUMsVUFBUCxDQUFrQixTQUFsQixDQUE0QixtQkFBNUIsQ0FBZ0QsT0FBaEQsRUFDSCxDQUxELENBU0EsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsU0FBVSxLQUFWLENBQWlCO0FBQ3hDLENBQ0ksU0FDQSxNQUFNLENBQUMsVUFBUCxDQUFrQixTQUFsQixDQUE0QixLQUE1QixDQUFrQyxhQUFsQyxDQUFnRCxNQUFNLENBQUMsVUFBdkQsRUFDSCxDQUpELENBTUMsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsTUFBbEIsQ0FBMkIsU0FBUyxRQUFULENBQzNCLENBQ0ksTUFBTSxDQUFDLFVBQVAsQ0FBa0IsUUFBbEIsQ0FBMkIsUUFBM0IsQ0FDSCxDQUhELENBS0MsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsWUFBbEIsQ0FBaUMsU0FBUyxRQUFULENBQ2pDLENBQ0ksTUFBTSxDQUFDLFVBQVAsQ0FBa0IsY0FBbEIsQ0FBaUMsUUFBakMsQ0FDSCxDQUhELENBS0YsR0FBSSxDQUFBLFFBQUosQ0FDQSxHQUFJLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUE5QixDQUErQyxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsd0NBQW5CLENBQVgsQ0FBL0MsSUFDSyxDQUFBLFFBQVEsQ0FBRyxjQUFjLENBQUMsR0FBZixDQUFtQiwyQ0FBbkIsQ0FBWCxDQUVMLFFBQVEsQ0FBQyxNQUFULENBQWdCLFFBQVEsQ0FBQyxRQUFELENBQVIsQ0FBbUIsTUFBbkIsQ0FBaEIsRUFFQyxDQXRZWSxDQXJCZCxDQThaRixJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBR3hDLENBamFNLENBQVAsQ0FtYVAsRUFDRCxhQUVPLFFBQVMsQ0FBQSxTQUFULEVBQXNCLENBQ3JCLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVELEtBQUssQ0FBQyxDQUNELEdBQUcsQ0FBRyxHQURMLENBRUQsT0FBTyxDQUFFLEdBRlIsQ0FHRCxNQUFNLENBQUUsR0FIUCxDQUlELFFBQVEsQ0FBRSxHQUpULENBS0QsUUFBUSxDQUFFLEdBTFQsQ0FNRCxrQkFBa0IsQ0FBRSxHQU5uQixDQU9ELFVBQVUsQ0FBQyxHQVBWLENBUUQsZ0JBQWdCLENBQUMsR0FSaEIsQ0FTRCxpQkFBaUIsQ0FBQyxHQVRqQixDQVVELG1CQUFtQixDQUFFLEdBVnBCLENBV0QsZ0JBQWdCLENBQUUsR0FYakIsQ0FZRCxrQkFBa0IsQ0FBRyxHQVpwQixDQWFELFFBQVEsQ0FBRyxHQWJWLENBY0QsTUFBTSxDQUFDLElBZE4sQ0FlRCxZQUFZLENBQUMsSUFmWixDQUZMLENBb0JGLFVBQVUsQ0FBRSxDQUFDLFFBQUQsQ0FBVSxpQkFBVixDQUE0QiwyQkFBNUIsQ0FBd0QsVUFBeEQsQ0FBbUUsZ0JBQW5FLENBQW9GLFlBQXBGLENBQWlHLHFCQUFqRyxDQUF1SCxVQUF2SCxDQUFrSSxVQUFsSSxDQUE2SSxnQkFBN0ksQ0FDQyxTQUFTLE1BQVQsQ0FBZ0IsZUFBaEIsQ0FBZ0MseUJBQWhDLENBQTBELFFBQTFELENBQW1FLGNBQW5FLENBQWtGLFVBQWxGLENBQTZGLG1CQUE3RixDQUFpSCxRQUFqSCxDQUEwSCxRQUExSCxDQUFtSSxjQUFuSSxDQUNWLGtEQUNBLE1BQU0sQ0FBQyxJQUFQLENBQWMsV0FBZCxDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWUsZUFBZixDQUNBLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUF1QixFQUF2QixDQUNBLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixLQUFyQixDQUE2QixpQkFBTSxDQUFBLGVBQU4sRUFBN0IsQ0FDQSxNQUFNLENBQUMsR0FBUCxDQUFhLG1CQUFiLENBRUE7QUFDQSxHQUFJLENBQUEsS0FBSyxDQUFHLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEdBQWhCLENBQW9CLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixnQkFBOUMsQ0FBK0QsR0FBL0QsQ0FBbUUsTUFBTSxDQUFDLEdBQVAsQ0FBVyxXQUE5RSxDQUEwRixHQUExRixDQUE4RixNQUFNLENBQUMsR0FBUCxDQUFXLFdBQXpHLENBQXFILEdBQXJILENBQXlILE1BQU0sQ0FBQyxHQUFQLENBQVcsRUFBaEosQ0FDQSxHQUFJLENBQUEsa0JBQWtCLENBQUcsbUJBQW1CLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixnQkFBdEUsQ0FFQSxHQUFJLENBQUEsZ0JBQWdCLENBQUcsQ0FBQyxJQUFJLENBQUUsS0FBUCxDQUFhLFFBQVEsQ0FBRSxNQUFNLENBQUMsR0FBUCxDQUFXLGNBQWxDLENBQWlELGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxjQUF6RSxDQUF3RixlQUFlLENBQUMsTUFBTSxDQUFDLGFBQS9HLENBQTZILE1BQU0sQ0FBRyxNQUFNLENBQUMsT0FBN0ksQ0FBdkIsQ0FDQSxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBMkIseUJBQXlCLENBQUMsY0FBMUIsQ0FBeUMsZ0JBQXpDLENBQTNCLENBQ0EsTUFBTSxDQUFDLEdBQVAsQ0FBVyxPQUFYLENBQW1CLE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBOUIsQ0FFRSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBdUIsVUFBVyxDQUNoQztBQUNBO0FBQ0E7QUFDSCxDQUpDLEVBT0Y7QUFDaEI7QUFDQSx5RkFDZ0IsR0FBSSxDQUFBLG1CQUFtQixDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsT0FBckMsQ0FDQSxHQUFJLENBQUEsV0FBVyxDQUFHLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUE1QyxDQUNBLEdBQUksQ0FBQSxvQkFBb0IsQ0FBRyxzQkFBc0IsV0FBdEIsQ0FBa0MsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFNBQXZGLENBQ0EsR0FBSSxDQUFBLG9CQUFKLENBR0EsR0FBSSxDQUFBLHVCQUF1QixDQUFHLFFBQTFCLENBQUEsdUJBQTBCLENBQVMsSUFBVCxDQUM5QixDQUNJLEdBQUksQ0FBQSxlQUFlLENBQUcsT0FBTyxDQUFDLElBQVIsQ0FBYSxNQUFNLENBQUMsR0FBUCxDQUFXLGNBQXhCLENBQXRCLENBQ0EsR0FBSSxJQUFJLENBQUMsZUFBRCxDQUFKLEdBQXdCLFNBQTVCLENBQ0EsQ0FDSSxNQUFNLENBQUMsR0FBUCxDQUFXLGNBQVgsQ0FBNEIsSUFBSSxDQUFDLGVBQUQsQ0FBaEMsQ0FDSjtBQUNBLG9CQUFvQixDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsY0FBbEMsQ0FDQSxHQUFJLENBQUEsWUFBWSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixvQkFBckIsQ0FBMEMsb0JBQTFDLENBQStELFdBQS9ELENBQTJFLHVCQUEzRSxDQUFuQixDQUNDLENBQ0osQ0FWRCxDQVlBLEdBQUksQ0FBQSxzQkFBc0IsQ0FBRyxRQUF6QixDQUFBLHNCQUF5QixDQUFTLElBQVQsQ0FDN0IsQ0FDSSxHQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBUCxDQUFXLE9BQVosQ0FBSixDQUF5QixDQUF6QixFQUE4QixNQUFNLENBQUMsR0FBUCxDQUFXLGNBQVgsRUFBMkIsQ0FBekQsRUFBOEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFQLENBQVcsT0FBWixDQUFKLEdBQTJCLFNBQTdGLENBQXdHLE1BQU0sQ0FBQyxHQUFQLENBQVcsY0FBWCxDQUE0QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQVAsQ0FBVyxPQUFaLENBQWhDLENBQ3hHLEdBQUksQ0FBQSxZQUFZLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLG9CQUFyQixDQUEwQyxvQkFBMUMsQ0FBK0QsV0FBL0QsQ0FBMkUsdUJBQTNFLENBQW5CLENBQ0E7QUFDSCxDQUxELENBUUEsR0FBSSxNQUFNLENBQUMsR0FBUCxDQUFXLGNBQVgsR0FBNEIsSUFBNUIsRUFBb0MsTUFBTSxDQUFDLEdBQVAsQ0FBVyxjQUFYLEdBQTRCLENBQXBFLENBQXdFLENBQ3BFLEdBQUksQ0FBQSxXQUFXLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLG9CQUFyQixDQUEwQyxtQkFBMUMsQ0FBOEQsV0FBOUQsQ0FBMEUsc0JBQTFFLENBQWxCLENBQ0gsQ0FGRCxJQUVNLENBQ0Ysb0JBQW9CLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxjQUFsQyxDQUNBLEdBQUksQ0FBQSxZQUFZLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLG9CQUFyQixDQUEwQyxvQkFBMUMsQ0FBK0QsV0FBL0QsQ0FBMkUsdUJBQTNFLENBQW5CLENBQ0gsQ0FHRCxNQUFNLENBQUMsbUJBQVAsQ0FBNkIsU0FBUyxJQUFULENBQWUsQ0FDcEMsR0FBSSxDQUFBLFNBQVMsQ0FBRSxNQUFNLENBQUMsS0FBUCxDQUFhLGVBQWIsRUFBZixDQUNBLEdBQUssU0FBUyxFQUFJLElBQWxCLENBQXdCLE1BQU8sS0FBUCxDQUN4QixNQUFPLE1BQVAsQ0FDUCxDQUpELENBUUEsTUFBTSxDQUFDLFdBQVAsQ0FBcUIsU0FBUyxHQUFULENBQWMsQ0FBQztBQUU1QixHQUFJLENBQUEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxjQUFULENBQXdCLE1BQU0sR0FBOUIsQ0FBTixDQUNBLENBQUMsQ0FBQyxTQUFGLENBQVksR0FBWixDQUFnQixTQUFoQixFQUVBLEdBQUksQ0FBQSxHQUFHLENBQUcsUUFBUSxDQUFDLGNBQVQsQ0FBd0Isa0JBQXhCLENBQTJDLFVBQTNDLENBQVYsQ0FDQSxHQUFHLENBQUMsSUFBSixDQUFTLFNBQVQsRUFBb0IsaUdBQXBCLENBQ0EsR0FBRyxDQUFDLElBQUosQ0FBUyxTQUFULEVBQW9CLDZGQUFwQixDQUNBLEdBQUcsQ0FBQyxJQUFKLENBQVMsU0FBVCxFQUFvQiw4QkFBcEIsQ0FFQSxHQUFJLENBQUEsaUJBQWlCLENBQUcsNkRBQXhCLENBQ0EsR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsSUFBUCxDQUFZLEVBQVosQ0FBZ0IsUUFBaEIsQ0FBMEIsaUJBQTFCLENBQVYsQ0FFQTtBQUNBO0FBQ0E7QUFFQSxHQUFJLENBQUEsYUFBYSxDQUFHLFFBQVEsQ0FBQyxjQUFULENBQXdCLGVBQXhCLENBQXBCLENBQ0EsR0FBSSxhQUFKLENBQW1CLGFBQWEsQ0FBQyxVQUFkLENBQXlCLFdBQXpCLENBQXFDLGFBQXJDLEVBRW5CLEdBQUksQ0FBQSxXQUFXLENBQUUsUUFBUSxDQUFDLGNBQVQsQ0FBd0IsYUFBeEIsQ0FBakIsQ0FDQSxHQUFJLFdBQUosQ0FBaUIsV0FBVyxDQUFDLFVBQVosQ0FBdUIsV0FBdkIsQ0FBbUMsV0FBbkMsRUFFakIsR0FBSSxDQUFBLGFBQWEsQ0FBRyxRQUFRLENBQUMsY0FBVCxDQUF3QixNQUFNLEdBQTlCLENBQXBCLENBQ0E7QUFFQSxRQUFRLENBQUMsYUFBRCxDQUFSLENBQ0EsR0FBRyxDQUFDLFFBQUosQ0FBYSxJQUFiLENBQWtCLFNBQWxCLENBQThCLGFBQWEsQ0FBQyxTQUE1QyxDQUVBLFFBQVEsQ0FBQyxVQUFXLENBQzVDO0FBQ0csQ0FGNkIsQ0FBUixDQUlQLENBakNELENBbUNBLE1BQU0sQ0FBQyxRQUFQLENBQWtCLFNBQVMsR0FBVCxDQUFjLENBRXhCLEdBQUksQ0FBQSxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQVQsQ0FBd0IsTUFBTSxHQUE5QixDQUFOLENBQ0EsQ0FBQyxDQUFDLFNBQUYsQ0FBWSxHQUFaLENBQWdCLFNBQWhCLEVBRUEsR0FBSSxDQUFBLEdBQUcsQ0FBRyxRQUFRLENBQUMsY0FBVCxDQUF3QixrQkFBeEIsQ0FBMkMsVUFBM0MsQ0FBVixDQUNBLEdBQUcsQ0FBQyxJQUFKLENBQVMsU0FBVCxFQUFvQixpR0FBcEIsQ0FDQSxHQUFHLENBQUMsSUFBSixDQUFTLFNBQVQsRUFBb0IsNkZBQXBCLENBQ0EsR0FBRyxDQUFDLElBQUosQ0FBUyxTQUFULEVBQW9CLDhCQUFwQixDQUVBO0FBQ0EsR0FBSSxDQUFBLGlCQUFpQixDQUFHLDZEQUF4QixDQUNBO0FBRUQ7QUFDQztBQUNBO0FBRUEsR0FBSSxDQUFBLGFBQWEsQ0FBRyxRQUFRLENBQUMsY0FBVCxDQUF3QixlQUF4QixDQUFwQixDQUNBLEdBQUksYUFBSixDQUFtQixhQUFhLENBQUMsVUFBZCxDQUF5QixXQUF6QixDQUFxQyxhQUFyQyxFQUVuQixHQUFJLENBQUEsV0FBVyxDQUFFLFFBQVEsQ0FBQyxjQUFULENBQXdCLGFBQXhCLENBQWpCLENBQ0EsR0FBSSxXQUFKLENBQWlCLFdBQVcsQ0FBQyxVQUFaLENBQXVCLFdBQXZCLENBQW1DLFdBQW5DLEVBRWpCO0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUSxDQUFDLFVBQVcsQ0FBUyxNQUFNLENBQUMsS0FBUCxHQUE0QixDQUFqRCxDQUFSLENBRUQ7QUFFTixDQWpDRCxDQW1DQTtBQUNBLEdBQUksQ0FBQSxZQUFZLENBQUcsUUFBZixDQUFBLFlBQWUsQ0FBUyxJQUFULENBQWMsTUFBZCxDQUNuQixDQUNJLEdBQUksSUFBSSxHQUFHLFNBQVgsQ0FBc0IsQ0FDbEIsR0FBSSxDQUFBLE9BQU8sQ0FBRyxJQUFJLENBQUMsT0FBbkIsQ0FDQSxHQUFJLElBQUksQ0FBQyxFQUFMLEdBQVUsS0FBVixFQUFtQixNQUFNLEdBQUcsdUJBQWhDLENBQTRELENBQ3hELE1BQU0sQ0FBQyxHQUFQLENBQWEsT0FBYixDQUNBLE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBWCxDQUF5QixrQkFBekIsQ0FBNEMsMkJBQTVDLEVBQ0EsTUFBTSxDQUFDLGdCQUFQLENBQXdCLElBQXhCLENBQ0gsQ0FDSixDQUNKLENBVkQsQ0FZQTtBQUNBLEdBQUksQ0FBQSxZQUFZLENBQUcsUUFBZixDQUFBLFlBQWUsQ0FBUyxJQUFULENBQWMsTUFBZCxDQUNuQixDQUNJLEdBQUksSUFBSSxHQUFHLFNBQVgsQ0FBdUIsQ0FDbkIsR0FBSSxDQUFBLE9BQU8sQ0FBRyxJQUFJLENBQUMsT0FBbkIsQ0FDQSxHQUFJLElBQUksQ0FBQyxFQUFMLEdBQVUsS0FBVixFQUFtQixNQUFNLEdBQUcsdUJBQWhDLENBQXlELENBQ2pELE1BQU0sQ0FBQyxHQUFQLENBQWEsT0FBYixDQUNBLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixJQUF4QixDQUNQLENBQ0osQ0FDSixDQVRELENBV0M7QUFDRCxHQUFJLENBQUEsYUFBYSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixrQkFBckIsQ0FBd0MsS0FBeEMsQ0FBOEMsdUJBQTlDLENBQXNFLFlBQXRFLENBQXBCLENBQ0M7QUFDRCxHQUFJLENBQUEsYUFBYSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixrQkFBckIsQ0FBd0MsS0FBeEMsQ0FBOEMsdUJBQTlDLENBQXNFLFlBQXRFLENBQXBCLENBRUEsTUFBTSxDQUFDLFNBQVAsQ0FBbUIsU0FBVSxHQUFWLENBQWMsQ0FDN0IsR0FBRyxDQUFDLE1BQUosQ0FBVyxJQUFYLENBQWdCLE1BQU0sQ0FBQyxLQUFQLENBQWEsb0JBQWIsQ0FBa0MsTUFBTSxDQUFDLE1BQVAsQ0FBYyxNQUFoRCxDQUFoQixFQUNILENBRkQsQ0FHQSxNQUFNLENBQUMsV0FBUCxDQUFxQixTQUFVLEdBQVYsQ0FBYyxDQUMvQixNQUFNLENBQUMsTUFBUCxDQUFjLE1BQWQsQ0FBcUIsTUFBckIsQ0FBNEIsTUFBTSxDQUFDLE1BQVAsQ0FBYyxNQUFkLENBQXFCLE9BQXJCLENBQTZCLEdBQTdCLENBQTVCLENBQThELENBQTlELENBQWlFLGVBQWUsQ0FBQyxpQkFBaEIsQ0FBa0MsTUFBTSxDQUFDLE9BQXpDLENBQWpFLEVBQ0gsQ0FGRCxDQUlBLE1BQU0sQ0FBQyxXQUFQLENBQXFCLFNBQVUsR0FBVixDQUFjLENBQy9CLE1BQU0sQ0FBQyxNQUFQLENBQWMsTUFBZCxDQUFxQixNQUFyQixDQUE0QixNQUFNLENBQUMsTUFBUCxDQUFjLE1BQWQsQ0FBcUIsT0FBckIsQ0FBNkIsR0FBN0IsRUFBa0MsQ0FBOUQsQ0FBZ0UsQ0FBaEUsQ0FBbUUsZUFBZSxDQUFDLGlCQUFoQixDQUFrQyxNQUFNLENBQUMsT0FBekMsQ0FBbkUsRUFDSCxDQUZELENBR0EsTUFBTSxDQUFDLFFBQVAsQ0FBa0IsU0FBUyxJQUFULENBQWUsQ0FDN0IsTUFBTyxVQUFVLElBQWpCLENBQ0gsQ0FGRCxDQUlBLE1BQU0sQ0FBQyxTQUFQLENBQW1CLFVBQVUsQ0FDekIsTUFBTyxPQUFPLE1BQU0sQ0FBQyxRQUFkLENBQXVCLFNBQTlCLENBQ0gsQ0FGRCxDQUlBLE1BQU0sQ0FBQyxTQUFQLENBQW1CLFNBQVUsSUFBVixDQUFlLENBQzFCLE1BQU8sQ0FBQSxJQUFJLENBQUMsU0FBWixDQUNQLENBRkQsQ0FHQSxHQUFJLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxFQUF1QixTQUEzQixDQUFzQyxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsRUFBdEIsQ0FDdEMsR0FBSSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsaUJBQXRCLEVBQXlDLElBQXpDLEVBQWlELE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQixpQkFBdEIsRUFBeUMsU0FBOUYsQ0FBMEcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXNCLGlCQUF0QixDQUF3QyxDQUF4QyxDQUcxRyxNQUFNLENBQUMsR0FBUCxDQUFXLGlCQUFYLENBQStCLFVBQVcsQ0FDbEMsR0FBSSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsYUFBMUIsQ0FBeUMsTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXNCLGNBQXRCLENBQXVDLFFBQXZDLENBQXpDLElBQ0ssQ0FBQSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsY0FBdEIsQ0FBdUMsV0FBdkMsQ0FDWixDQUhELENBTVg7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFHWSxHQUFJLENBQUEsWUFBWSxDQUFHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGNBQWpDLENBQW5CLENBRUEsR0FBSSxDQUFBLEdBQUcsQ0FBRyxjQUFjLENBQUMsSUFBZixDQUFvQixNQUFwQixDQUE0QixlQUFlLE1BQU0sQ0FBQyxRQUFsRCxDQUFWLENBRUEsR0FBSSxHQUFKLENBQVMsQ0FDTCxjQUFjLENBQUMsT0FBZixDQUF1QixNQUF2QixDQUErQixlQUFlLE1BQU0sQ0FBQyxRQUFyRCxFQUNILENBQ0QsY0FBYyxDQUFDLE9BQWYsQ0FBdUIsTUFBdkIsQ0FBK0IsZUFBZSxNQUFNLENBQUMsUUFBckQsQ0FBK0QsQ0FDdkQsYUFBYSxDQUFFLElBRHdDLENBRXZELGFBQWEsQ0FBRSxLQUZ3QyxDQUd2RCxTQUFTLENBQUMsVUFINkMsQ0FJdkQsTUFBTSxDQUFDLGdCQUFVLEVBQVYsQ0FBYSxNQUFiLENBQXFCLE1BQXJCLENBQTZCLENBQzFCLE1BQU8sTUFBUCxDQUNULENBTnNELENBT3ZELEtBQUssQ0FBRSxlQUFVLEVBQVYsQ0FBYyxTQUFkLENBQXlCLE1BQXpCLENBQWlDLENBQzlCLE1BQU8sQ0FBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUEwQixZQUExQixDQUFQLENBQ1QsQ0FUc0QsQ0FBL0QsRUFZQyxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBMkIsU0FBUyxTQUFULENBQW1CLE1BQW5CLENBQTBCLENBQ2xELG9CQUFvQixDQUFDLFlBQXJCLENBQWtDLFNBQWxDLENBQTRDLE1BQTVDLEVBQW9ELElBQXBELENBQXlELFNBQVMsSUFBVCxDQUFlLENBR3BELEdBQUksQ0FBQSxHQUFHLENBQUcsR0FBRyxDQUFDLGVBQUosQ0FBb0IsR0FBSSxDQUFBLElBQUosQ0FBUyxDQUFDLElBQUksQ0FBQyxJQUFOLENBQVQsQ0FBcEIsQ0FBVixDQUNBLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQixrQkFBdEIsQ0FBeUMsR0FBekMsQ0FDSCxDQUxqQixDQUtrQixTQUFTLEtBQVQsQ0FBZSxDQUNqQixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFHRixDQVRkLEVBVUgsQ0FYQSxDQVdDO0FBRUYsR0FBSSx3QkFBQSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsU0FBdEIsc0VBQWlDLEVBQWpDLEVBQW9DLENBQXBDLEVBQXlDLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQixNQUF0QixDQUE2QixDQUExRSxDQUE2RSxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgseUJBQXlCLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQixTQUEvQyxpREFBeUIsdUJBQWlDLEVBQTFELENBQTZELE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQixNQUFuRixFQUc3RSxHQUFJLENBQUEsUUFBSixDQUNBLEdBQUksTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQTlCLENBQWtELENBQzlDLFFBQVEsQ0FBRyxjQUFjLENBQUMsR0FBZixDQUFtQixxQ0FBbkIsQ0FBWCxDQUNILENBRkQsSUFHUyxDQUFBLFFBQVEsQ0FBRyxjQUFjLENBQUMsR0FBZixDQUFtQix3Q0FBbkIsQ0FBWCxDQUVULFFBQVEsQ0FBQyxNQUFULENBQWdCLFFBQVEsQ0FBQyxRQUFELENBQVIsQ0FBbUIsTUFBbkIsQ0FBaEIsRUFFQyxDQTdQWSxDQXBCVixDQW1SRixJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBR3ZDO0FBQ0E7QUFFQTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBRWEsQ0FyU0UsQ0FBUCxDQXVTSCxFQUlJLFFBQVksQ0FBQSxRQUFaLENBQXNCLEdBQXRCLENBQTBCLENBQzNCLEdBQUksQ0FBQSxHQUFHLENBQUcsR0FBRyxFQUFJLFFBQVEsQ0FBQyxvQkFBVCxDQUE4QixNQUE5QixFQUFzQyxDQUF0QyxDQUFqQixDQUNBLEdBQUksQ0FBQSxHQUFHLENBQUMsRUFBUixDQUdBLEdBQUksR0FBRyxDQUFDLE9BQUosRUFBZSxPQUFuQixDQUE2QixDQUN6QixHQUFJLEdBQUcsQ0FBQyxLQUFSLENBQWUsR0FBRyxDQUFDLFlBQUosQ0FBaUIsT0FBakIsQ0FBMEIsR0FBRyxDQUFDLEtBQTlCLEVBQ2hCO0FBQ0UsQ0FDTCxHQUFJLEdBQUcsQ0FBQyxhQUFKLEVBQUosQ0FBeUIsQ0FDdkIsR0FBSSxDQUFBLEtBQUssQ0FBRyxHQUFHLENBQUMsVUFBaEIsQ0FDQSxNQUFPLEtBQVAsQ0FBYyxDQUNaLEdBQUksS0FBSyxDQUFDLFFBQU4sR0FBbUIsQ0FBbkIsRUFBd0IsS0FBSyxDQUFDLFFBQU4sRUFBa0IsUUFBOUMsQ0FBdUQsQ0FDckQsR0FBRyxFQUFJLFFBQVEsQ0FBQyxLQUFELENBQVIsQ0FBa0IsR0FBekIsQ0FDRCxDQUNELEtBQUssQ0FBRyxLQUFLLENBQUMsV0FBZCxDQUNELENBQ0YsQ0FFRCxHQUFJLEdBQUcsQ0FBQyxTQUFKLENBQWMsUUFBZCxDQUF1QixTQUF2QixDQUFKLENBQ0EsQ0FDQSxHQUFHLENBQUMsTUFBSixHQUNDLENBQ0QsTUFBTyxFQUFQLENBQ0QsQ0FDUCxhQUVPLFFBQVMsQ0FBQSxPQUFULEVBQW9CLENBRW5CLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVGLFdBQVcsQ0FBRSxtQ0FGWCxDQUdGLFVBQVUsQ0FBQyxvQkFBUyxNQUFULENBQWdCLFdBQWhCLENBQTRCLFVBQTVCLENBQXVDLGVBQXZDLENBQXVELENBRTlELE1BQU0sQ0FBQyxLQUFQLENBQWUsZUFBZixDQUNOLEdBQUksTUFBTSxDQUFDLFNBQVAsRUFBa0IsU0FBdEIsQ0FBaUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsRUFBakIsQ0FDOUI7QUFDQSxNQUFNLENBQUMsTUFBUCxDQUFjLENBQ04sQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLE1BQU0sQ0FBQyxRQUFiLENBQXNCLElBQUksQ0FBQyxVQUEzQixDQUFzQyxJQUFJLENBQUMscUJBQTNDLENBRE0sQ0FFTixDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sTUFBTSxDQUFDLFdBQWIsQ0FBeUIsSUFBSSxDQUFDLGNBQTlCLENBQTZDLElBQUksQ0FBQyxjQUFsRCxDQUZNLENBQWQsQ0FLQyxHQUFJLE1BQU0sQ0FBQyxFQUFQLEVBQVcsU0FBZixDQUEwQixDQUN2QixHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixFQUFrQixTQUF0QixDQUNBLENBQ0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLE1BQU0sQ0FBQyxNQUFQLENBQWMsQ0FBZCxDQUFqQixDQUFtQztBQUNwQyxDQUNILENBRVgsTUFBTSxDQUFDLGdCQUFQLENBQTBCLFNBQVMsS0FBVCxDQUFnQixDQUV4QyxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsTUFBTSxDQUFDLE1BQVAsQ0FBYyxLQUFkLENBQWpCLENBQ1ksR0FBSSxNQUFPLENBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUFQLEdBQW1ELFFBQXZELENBQWtFLENBQzdEO0FBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLEtBQWpCLENBQXlCLENBQUUsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsQ0FBTixDQUFGLENBQXpCLENBQ0gsQ0FDRjtBQUNaLE1BQU0sQ0FBQyxNQUFQLENBQWMsS0FBZCxDQUNBLENBVEYsQ0FXVztBQUVILE1BQU0sQ0FBQyxjQUFQLENBQXdCLFNBQVMsS0FBVCxDQUN6QixDQUNNLE1BQU0sQ0FBQyxLQUFQLENBQWEsa0JBQWIsQ0FBZ0MsTUFBTSxDQUFDLEVBQXZDLENBQTBDLEtBQTFDLEVBQ0wsQ0FIQSxDQUtWLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLEVBQXFCLFNBQXpCLENBQXFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixFQUFwQixDQUU1QixNQUFNLENBQUMsU0FBUCxDQUFtQixDQUFDLGFBQWEsQ0FBRyxJQUFqQixDQUFuQixDQUVDLE1BQU0sQ0FBQyxhQUFQLENBQXVCLFNBQVUsSUFBVixDQUFlLEtBQWYsQ0FBc0IsQ0FFeEMsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsSUFBdkIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBbUIsSUFBSSxDQUFDLEVBQXhCLENBQ0EsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixFQUF3QyxJQUFJLENBQUMsRUFBN0MsQ0FFSCxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsS0FBakIsQ0FBeUIsQ0FBRSxDQUFDLEtBQUssTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUFOLENBQUYsQ0FBekIsQ0FBNkU7QUFFbkYsQ0FSSSxDQVdELE1BQU0sQ0FBQyxTQUFQLENBQW1CLFVBQVksQ0FDN0IsV0FBVyxDQUFDLGNBQVosQ0FBMkIsUUFBM0IsRUFBcUMsSUFBckMsQ0FBMEMsU0FBUyxJQUFULENBQWMsQ0FFeEQsTUFBTSxDQUFDLFNBQVAsQ0FBbUIsSUFBSSxDQUFDLElBQXhCLENBRUEsR0FBSSxNQUFNLENBQUMsUUFBUCxFQUFpQixTQUFqQixFQUE4QixNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFoQixDQUF1QixDQUF6RCxDQUNBLENBQ00sR0FBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEdBQXlDLElBQTdDLENBQW1ELENBQzlDLFdBQVcsQ0FBQyxrQkFBWixDQUErQixNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLENBQS9CLEVBQXdFLElBQXhFLENBQTZFLFNBQVMsSUFBVCxDQUFjLENBQ3hGLE1BQU0sQ0FBQyxhQUFQLENBQXVCLElBQXZCLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsYUFBakIsQ0FBK0IsTUFBTSxDQUFDLGFBQXRDLENBRUQsQ0FKRixFQU9GLENBUkgsSUFTTSxJQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsR0FBeUMsSUFBN0MsQ0FBbUQsQ0FFdkQsR0FBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQXdDLE1BQXhDLENBQStDLENBQW5ELENBQ0EsQ0FDRSxHQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsRUFBd0MsQ0FBeEMsR0FBNEMsU0FBaEQsQ0FDQSxDQUNDLFdBQVcsQ0FBQyxrQkFBWixDQUErQixNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQXdDLENBQXhDLENBQS9CLEVBQTJFLElBQTNFLENBQWdGLFNBQVMsSUFBVCxDQUFjLENBQzNGLE1BQU0sQ0FBQyxhQUFQLENBQXVCLElBQXZCLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsYUFBakIsQ0FBK0IsTUFBTSxDQUFDLGFBQXRDLENBQ0EsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixFQUF3QyxNQUFNLENBQUMsYUFBUCxDQUFxQixFQUE3RCxDQUNELENBSkYsRUFLRixDQUVBLENBQ0QsQ0FDUCxDQUNOLENBL0JLLEVBaUNILENBbENDLENBcUNGLE1BQU0sQ0FBQyxNQUFQLENBQWMseUJBQWQsQ0FBeUMsU0FBUyxRQUFULENBQWtCLFFBQWxCLENBQTJCLENBQzFEO0FBQ0EsR0FBSSxNQUFNLENBQUMsUUFBUCxFQUFtQixRQUF2QixDQUFrQyxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQXdDLFFBQVEsQ0FBQyxFQUFqRCxDQUNyQyxDQUhQLEVBSUMsTUFBTSxDQUFDLEtBQVAsQ0FBZSxTQUFTLEtBQVQsQ0FBZSxNQUFmLENBQ2xCLENBQ0UsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixFQUEwQyxJQUExQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixLQUFqQixDQUF5QixJQUF6QixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGFBQWpCLENBQWlDLElBQWpDLENBQ0QsQ0FMRSxDQU9MLE1BQU0sQ0FBQyxTQUFQLEdBSVcsQ0F6R0YsQ0EwR0YsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQU9sQyxDQWpIQSxDQUFQLENBb0hQLEVBQ0QsYUFFTyxRQUFTLENBQUEsUUFBVCxFQUFxQixXQUNwQixjQUNJLFFBQVEsQ0FBRSxHQURkLENBRUosVUFBVSxDQUFFLG9CQUFVLE1BQVYsQ0FBa0IsQ0FBRSxDQUY1QixDQUdLLFdBQVcsQ0FBRSxvQ0FIbEIscUNBSWdCLG9CQUFTLE1BQVQsQ0FBZ0IsbUJBQWhCLENBQW9DLHlCQUFwQyxDQUNYLENBRUcsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsR0FBc0IsU0FBMUIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLEVBQXBCLENBQ3JDLEdBQUksQ0FBQSxnQkFBZ0IsQ0FBRyxDQUFDLElBQUksQ0FBRSxRQUFQLENBQWdCLFFBQVEsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXBDLENBQW1ELGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxjQUEzRSxDQUEwRixlQUFlLENBQUMsTUFBTSxDQUFDLGFBQWpILENBQStILE1BQU0sQ0FBRyxNQUFNLENBQUMsT0FBL0ksQ0FBdkIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBcEIsQ0FBb0MseUJBQXlCLENBQUMsY0FBMUIsQ0FBeUMsZ0JBQXpDLENBQXBDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUF0QyxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLEVBQXVCLFNBQTNCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQXNCLENBQUMsUUFBUSxDQUFFLEtBQVgsQ0FBdEIsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLENBQXFDLENBQUMsNEJBQUQsQ0FBckMsQ0FHQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsTUFBcEIsQ0FBMkIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBQXJELENBQ0QsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsTUFBcEIsRUFBNEIsU0FBaEMsQ0FBNEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE1BQXBCLENBQTJCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixnQkFBckQsQ0FDNUMsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsTUFBcEIsRUFBNEIsU0FBaEMsQ0FBMkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE1BQXBCLENBQTJCLENBQTNCLENBRzNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFxQyxVQUFVLENBQ3BDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUFnQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBK0IsS0FBL0IsQ0FBc0MsSUFBdEUsQ0FDVixDQUZELENBS0EsTUFBTSxDQUFDLEdBQVAsQ0FBYSxtQkFBYixDQUNRLEdBQUksQ0FBQSxzQkFBc0IsQ0FBRyxRQUF6QixDQUFBLHNCQUF5QixDQUFTLElBQVQsQ0FDN0IsQ0FDRyxHQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVgsQ0FBSixDQUF3QixDQUF4QixHQUE4QixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsSUFBMUIsRUFBa0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLENBQTFGLENBQUosQ0FBa0csTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQTJCLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVgsQ0FBL0IsQ0FDbkc7QUFFRCxDQUxELENBTUEsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsQ0FBMUIsRUFBK0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLElBQTdELENBQ0EsQ0FFSSxHQUFJLENBQUEsZUFBZSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBaEMsQ0FDQSxHQUFJLENBQUEsaUJBQWlCLENBQUcsc0JBQXNCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixNQUExQyxDQUFpRCxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsU0FBbkcsQ0FDQSxHQUFJLENBQUEsUUFBUSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixpQkFBckIsQ0FBdUMsZUFBdkMsQ0FBdUQsV0FBdkQsQ0FBbUUsc0JBQW5FLENBQWYsQ0FFSCxDQUdSLENBNUNULCtCQTZDVyxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FFakMsR0FBSSxLQUFLLENBQUMsRUFBTixFQUFVLFNBQWQsQ0FBeUIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxFQUFULENBRXpCLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULEVBQXFCLFNBQXpCLENBQW9DLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixFQUFwQixDQUNwQyxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixpQkFBcEIsRUFBdUMsSUFBdkMsRUFBK0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLGlCQUFwQixFQUF1QyxTQUExRixDQUFzRyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsaUJBQXBCLENBQXNDLENBQXRDLENBSXpHLENBdERMLFFBd0RQLEVBQ0QsYUFFTyxRQUFTLENBQUEsWUFBVCxDQUF1QixtQkFBdkIsQ0FBMkMsZUFBM0MsQ0FBMkQsZ0JBQTNELENBQTZFLENBQzVFLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVGLEtBQUssQ0FBQyxDQUNBLE1BQU0sQ0FBRyxHQURULENBRUEsUUFBUSxDQUFHLElBRlgsQ0FGSixDQU9YLFVBQVUsQ0FBRSxvQkFBVSxNQUFWLENBQWtCLENBQUUsQ0FQckIsQ0FRRixXQUFXLENBQUUsd0NBUlgsQ0FVRixJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBQ2pDLEtBQUssQ0FBQyxRQUFOLENBQWlCLEtBQWpCLENBQ0EsS0FBSyxDQUFDLEdBQU4sQ0FBWSxtQkFBWixDQUNBLEdBQUksQ0FBQyxLQUFLLENBQUMsUUFBWCxDQUFxQixLQUFLLENBQUMsUUFBTixDQUFlLE9BQWYsQ0FFckI7QUFDQSxlQUFlLENBQUMsV0FBaEIsQ0FBNEIsS0FBSyxDQUFDLE1BQWxDLEVBQTBDLElBQTFDLENBQStDLFNBQVMsSUFBVCxDQUFlLGlFQUVqRCxLQUFLLENBQUMsTUFBTixDQUFlLElBQWYsU0FBZSxJQUFmLDhCQUFlLElBQUksQ0FBRSxJQUFyQixzQ0FBZSxZQUFZLE1BQTNCLENBQ0EsS0FBSyxDQUFDLElBQU4sQ0FBYSxJQUFiLFNBQWEsSUFBYiw4QkFBYSxJQUFJLENBQUUsSUFBbkIsc0NBQWEsWUFBWSxLQUF6QixDQUNBLEtBQUssQ0FBQyxTQUFOLENBQWtCLElBQWxCLFNBQWtCLElBQWxCLDhCQUFrQixJQUFJLENBQUUsSUFBeEIsc0NBQWtCLFlBQVksS0FBOUIsQ0FDQSxLQUFLLENBQUMsU0FBTixDQUFrQixJQUFsQixTQUFrQixJQUFsQiw4QkFBa0IsSUFBSSxDQUFFLElBQXhCLHNDQUFrQixZQUFZLE9BQTlCLENBQ0EsS0FBSyxDQUFDLFlBQU4sQ0FBcUIsSUFBckIsU0FBcUIsSUFBckIsOEJBQXFCLElBQUksQ0FBRSxJQUEzQixzQ0FBcUIsWUFBWSxRQUFqQyxDQUNBLEtBQUssQ0FBQyxVQUFOLENBQWlCLElBQUksQ0FBQyxNQUF0QixDQUVKLENBVFQsQ0FTVSxTQUFTLEtBQVQsQ0FBZSxDQUNiLEtBQUssQ0FBQyxVQUFOLENBQW1CLEtBQUssQ0FBQyxNQUF6QixDQUVBLEdBQUksS0FBSyxDQUFDLFVBQU4sRUFBa0IsR0FBdEIsQ0FBMkIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ3RDLENBYkQsRUFlQSxLQUFLLENBQUMsWUFBTixDQUFxQixTQUFTLElBQVQsQ0FBYyxDQUMvQixHQUFJLENBQUMsS0FBSyxDQUFDLFVBQVgsQ0FBdUIsS0FBSyxDQUFDLFVBQU4sQ0FBaUIsSUFBakIsQ0FDdkIsS0FBSyxDQUFDLFFBQU4sQ0FBaUIsSUFBakIsQ0FDSCxDQUhELENBSUgsQ0FuQ0UsQ0FBUCxDQXFDUCxFQUNELGFBRU8sUUFBUyxDQUFBLFlBQVQsQ0FBdUIsUUFBdkIsQ0FBaUMsQ0FDaEMsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUYsVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBZ0IsQ0FDeEIsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsQ0FBQyxhQUFELENBQWUsV0FBZixDQUEyQixVQUEzQixDQUFzQyxhQUF0QyxDQUFvRCxZQUFwRCxDQUFpRSxVQUFqRSxDQUE0RSxhQUE1RSxDQUEwRixxQkFBMUYsQ0FBZ0gsbUJBQWhILENBQW9JLGtCQUFwSSxDQUF1SixxQkFBdkosQ0FBNkssb0JBQTdLLENBQWtNLGtCQUFsTSxDQUFxTixxQkFBck4sQ0FBMk8sVUFBM08sQ0FBbEIsQ0FDQSxNQUFNLENBQUMsS0FBUCxDQUFnQixDQUFDLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBRCxDQUE0QyxDQUFDLE9BQVEsd0JBQVQsQ0FBa0MsU0FBVSxpQkFBNUMsQ0FBNUMsQ0FBMkcsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBM0csQ0FBNEosQ0FBQyxPQUFRLFlBQVQsQ0FBc0IsU0FBVSxLQUFoQyxDQUE1SixDQUFtTSxDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUFuTSxDQUFvUCxDQUFDLE9BQVEsdUJBQVQsQ0FBaUMsU0FBVSxnQkFBM0MsQ0FBcFAsQ0FBaVQsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBalQsQ0FBZ1csQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUFoVyxDQUE2WSxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTdZLENBQTBiLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQTFiLENBQStlLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBL2UsQ0FBNGhCLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQTVoQixDQUEya0IsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBM2tCLENBQThuQixDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUE5bkIsQ0FBeXJCLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQXpyQixDQUF3dUIsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBeHVCLENBQTJ4QixDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUEzeEIsQ0FBczFCLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBdDFCLENBQWk0QixDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQWo0QixDQUE0NkIsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBNTZCLENBQSs5QixDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUEvOUIsQ0FBb2hDLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQXBoQyxDQUFta0MsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBbmtDLENBQTRuQyxDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUE1bkMsQ0FBMnFDLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBM3FDLENBQXd0QyxDQUFDLE9BQVEsWUFBVCxDQUFzQixTQUFVLEtBQWhDLENBQXh0QyxDQUErdkMsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBL3ZDLENBQWd6QyxDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUFoekMsQ0FBKzFDLENBQUMsT0FBUSx1QkFBVCxDQUFpQyxTQUFVLGdCQUEzQyxDQUEvMUMsQ0FBNDVDLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQTU1QyxDQUErOEMsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBLzhDLENBQWtnRCxDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUFsZ0QsQ0FBaWpELENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBampELENBQTBsRCxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUExbEQsQ0FBNm9ELENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQTdvRCxDQUFrc0QsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBbHNELENBQWl2RCxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUFqdkQsQ0FBb3lELENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQXB5RCxDQUF1MUQsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBdjFELENBQTg0RCxDQUFDLE9BQVEsWUFBVCxDQUFzQixTQUFVLEtBQWhDLENBQTk0RCxDQUFxN0QsQ0FBQyxPQUFRLHlCQUFULENBQW1DLFNBQVUsa0JBQTdDLENBQXI3RCxDQUFzL0QsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBdC9ELENBQTJpRSxDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUEzaUUsQ0FBc21FLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQXRtRSxDQUFxcEUsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBcnBFLENBQThzRSxDQUFDLE9BQVEsdUJBQVQsQ0FBaUMsU0FBVSxnQkFBM0MsQ0FBOXNFLENBQTJ3RSxDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUEzd0UsQ0FBazBFLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBbDBFLENBQSsyRSxDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUEvMkUsQ0FBMDZFLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQTE2RSxDQUE2OUUsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBNzlFLENBQWdoRixDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUFoaEYsQ0FBK2pGLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQS9qRixDQUFvbkYsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUFwbkYsQ0FBaXFGLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQWpxRixDQUFzdEYsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBdHRGLENBQTJ3RixDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUEzd0YsQ0FBbzBGLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQXAwRixDQUFtM0YsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBbjNGLENBQW82RixDQUFDLE9BQVEsdUJBQVQsQ0FBaUMsU0FBVSxnQkFBM0MsQ0FBcDZGLENBQWkrRixDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQWorRixDQUE4Z0csQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUE5Z0csQ0FBMmpHLENBQUMsT0FBUSx5QkFBVCxDQUFtQyxTQUFVLGtCQUE3QyxDQUEzakcsQ0FBNG5HLENBQUMsT0FBUSw0QkFBVCxDQUFzQyxTQUFVLHFCQUFoRCxDQUE1bkcsQ0FBbXNHLENBQUMsT0FBUSw0QkFBVCxDQUFzQyxTQUFVLHFCQUFoRCxDQUFuc0csQ0FBMHdHLENBQUMsT0FBUSwrQkFBVCxDQUF5QyxTQUFVLHdCQUFuRCxDQUExd0csQ0FBdTFHLENBQUMsT0FBUSwrQkFBVCxDQUF5QyxTQUFVLHdCQUFuRCxDQUF2MUcsQ0FBbzZHLENBQUMsT0FBUSw0QkFBVCxDQUFzQyxTQUFVLHFCQUFoRCxDQUFwNkcsQ0FBMitHLENBQUMsT0FBUSw0QkFBVCxDQUFzQyxTQUFVLHFCQUFoRCxDQUEzK0csQ0FBa2pILENBQUMsT0FBUSxnQ0FBVCxDQUEwQyxTQUFVLHlCQUFwRCxDQUFsakgsQ0FBaW9ILENBQUMsT0FBUSwrQkFBVCxDQUF5QyxTQUFVLHdCQUFuRCxDQUFqb0gsQ0FBOHNILENBQUMsT0FBUSw0QkFBVCxDQUFzQyxTQUFVLHFCQUFoRCxDQUE5c0gsQ0FBcXhILENBQUMsT0FBUSxrQ0FBVCxDQUE0QyxTQUFVLDJCQUF0RCxDQUFyeEgsQ0FBdzJILENBQUMsT0FBUSx1Q0FBVCxDQUFpRCxTQUFVLGdDQUEzRCxDQUF4MkgsQ0FBcThILENBQUMsT0FBUSwrQkFBVCxDQUF5QyxTQUFVLHdCQUFuRCxDQUFyOEgsQ0FBa2hJLENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBbGhJLENBQTJqSSxDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUEzakksQ0FBNG1JLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQTVtSSxDQUFpcUksQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBanFJLENBQWd0SSxDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUFodEksQ0FBaXdJLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQWp3SSxDQUFvekksQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBcHpJLENBQXUySSxDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUF2MkksQ0FBczVJLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQXQ1SSxDQUEyOEksQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUEzOEksQ0FBby9JLENBQUMsT0FBUSxzQkFBVCxDQUFnQyxTQUFVLGVBQTFDLENBQXAvSSxDQUEraUosQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBL2lKLENBQThsSixDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUE5bEosQ0FBaXBKLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBanBKLENBQThySixDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTlySixDQUEydUosQ0FBQyxPQUFRLHNCQUFULENBQWdDLFNBQVUsZUFBMUMsQ0FBM3VKLENBQXN5SixDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUF0eUosQ0FBdTFKLENBQUMsT0FBUSx3QkFBVCxDQUFrQyxTQUFVLGlCQUE1QyxDQUF2MUosQ0FBczVKLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQXQ1SixDQUFxOEosQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUFyOEosQ0FBay9KLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBbC9KLENBQStoSyxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUEvaEssQ0FBb2xLLENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBcGxLLENBQTZuSyxDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQTduSyxDQUFzcUssQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBdHFLLENBQXl0SyxDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQXp0SyxDQUFrd0ssQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUFsd0ssQ0FBNnlLLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBN3lLLENBQTAxSyxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTExSyxDQUF1NEssQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUF2NEssQ0FBbzdLLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQXA3SyxDQUFxK0ssQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUFyK0ssQ0FBOGdMLENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQTlnTCxDQUF1a0wsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBdmtMLENBQXduTCxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUF4bkwsQ0FBNnFMLENBQUMsT0FBUSwyQkFBVCxDQUFxQyxTQUFVLG9CQUEvQyxDQUE3cUwsQ0FBa3ZMLENBQUMsT0FBUSx3QkFBVCxDQUFrQyxTQUFVLGlCQUE1QyxDQUFsdkwsQ0FBaXpMLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQWp6TCxDQUFnMkwsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBaDJMLENBQXU1TCxDQUFDLE9BQVEsd0JBQVQsQ0FBa0MsU0FBVSxpQkFBNUMsQ0FBdjVMLENBQXM5TCxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUF0OUwsQ0FBMmdNLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBM2dNLENBQXdqTSxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUF4ak0sQ0FBMm1NLENBQUMsT0FBUSxZQUFULENBQXNCLFNBQVUsS0FBaEMsQ0FBM21NLENBQWtwTSxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUFscE0sQ0FBMnNNLENBQUMsT0FBUSx5QkFBVCxDQUFtQyxTQUFVLGtCQUE3QyxDQUEzc00sQ0FBNHdNLENBQUMsT0FBUSwwQkFBVCxDQUFvQyxTQUFVLG1CQUE5QyxDQUE1d00sQ0FBKzBNLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQS8wTSxDQUFrNE0sQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBbDRNLENBQTI3TSxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUEzN00sQ0FBby9NLENBQUMsT0FBUSx5QkFBVCxDQUFtQyxTQUFVLGtCQUE3QyxDQUFwL00sQ0FBcWpOLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQXJqTixDQUFzbU4sQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBdG1OLENBQTJwTixDQUFDLE9BQVEsdUJBQVQsQ0FBaUMsU0FBVSxnQkFBM0MsQ0FBM3BOLENBQXd0TixDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUF4dE4sQ0FBdXdOLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQXZ3TixDQUFzek4sQ0FBQyxPQUFRLDBCQUFULENBQW9DLFNBQVUsbUJBQTlDLENBQXR6TixDQUF5M04sQ0FBQyxPQUFRLHdCQUFULENBQWtDLFNBQVUsaUJBQTVDLENBQXozTixDQUF3N04sQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBeDdOLENBQTYrTixDQUFDLE9BQVEsV0FBVCxDQUFxQixTQUFVLElBQS9CLENBQTcrTixDQUFraE8sQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBbGhPLENBQXFrTyxDQUFDLE9BQVEsWUFBVCxDQUFzQixTQUFVLEtBQWhDLENBQXJrTyxDQUE0bU8sQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBNW1PLENBQWlxTyxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQWpxTyxDQUE4c08sQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBOXNPLENBQW13TyxDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUFud08sQ0FBOHpPLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQTl6TyxDQUFpM08sQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUFqM08sQ0FBODVPLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBOTVPLENBQTI4TyxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQTM4TyxDQUFzL08sQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBdC9PLENBQXFpUCxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQXJpUCxDQUFrbFAsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBbGxQLENBQXFvUCxDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUFyb1AsQ0FBNHJQLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBNXJQLENBQXl1UCxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUF6dVAsQ0FBa3lQLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQWx5UCxDQUF5MVAsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBejFQLENBQWc1UCxDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUFoNVAsQ0FBMjhQLENBQUMsT0FBUSwyQkFBVCxDQUFxQyxTQUFVLG9CQUEvQyxDQUEzOFAsQ0FBZ2hRLENBQUMsT0FBUSxzQkFBVCxDQUFnQyxTQUFVLGVBQTFDLENBQWhoUSxDQUEya1EsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBM2tRLENBQTRuUSxDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQTVuUSxDQUFxcVEsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBcnFRLENBQXN0USxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQXR0USxDQUFpd1EsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUFqd1EsQ0FBMHlRLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQTF5USxDQUFpMlEsQ0FBQyxPQUFRLDJCQUFULENBQXFDLFNBQVUsb0JBQS9DLENBQWoyUSxDQUFzNlEsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBdDZRLENBQTI5USxDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQTM5USxDQUFvZ1IsQ0FBQyxPQUFRLHNCQUFULENBQWdDLFNBQVUsZUFBMUMsQ0FBcGdSLENBQStqUixDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQS9qUixDQUEwbVIsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBMW1SLENBQTJwUixDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTNwUixDQUF3c1IsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUF4c1IsQ0FBbXZSLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBbnZSLENBQTh4UixDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUE5eFIsQ0FBNjBSLENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBNzBSLENBQXMzUixDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUF0M1IsQ0FBeTZSLENBQUMsT0FBUSwwQkFBVCxDQUFvQyxTQUFVLG1CQUE5QyxDQUF6NlIsQ0FBNCtSLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQTUrUixDQUEyaFMsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUEzaFMsQ0FBd2tTLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQXhrUyxDQUErblMsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUEvblMsQ0FBd3FTLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQXhxUyxDQUE2dFMsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBN3RTLENBQTR3UyxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQTV3UyxDQUF1elMsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUF2elMsQ0FBbzJTLENBQUMsT0FBUSxXQUFULENBQXFCLFNBQVUsSUFBL0IsQ0FBcDJTLENBQXk0UyxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUF6NFMsQ0FBNDdTLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQTU3UyxDQUE2K1MsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUE3K1MsQ0FBMGhULENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQTFoVCxDQUF5a1QsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUF6a1QsQ0FBc25ULENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQXRuVCxDQUE2cVQsQ0FBQyxPQUFRLHNCQUFULENBQWdDLFNBQVUsZUFBMUMsQ0FBN3FULENBQXd1VCxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQXh1VCxDQUFxeFQsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBcnhULENBQW8wVCxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQXAwVCxDQUFpM1QsQ0FBQyxPQUFRLHNCQUFULENBQWdDLFNBQVUsZUFBMUMsQ0FBajNULENBQTQ2VCxDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUE1NlQsQ0FBMjlULENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBMzlULENBQW9nVSxDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQXBnVSxDQUE2aVUsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBN2lVLENBQThsVSxDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUE5bFUsQ0FBcXBVLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBcnBVLENBQWtzVSxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQWxzVSxDQUE2dVUsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUE3dVUsQ0FBc3hVLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQXR4VSxDQUFxMFUsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBcjBVLENBQXczVSxDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUF4M1UsQ0FBKzZVLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQS82VSxDQUFnK1UsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBaCtVLENBQWloVixDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQWpoVixDQUE4alYsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBOWpWLENBQTZtVixDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTdtVixDQUEwcFYsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBMXBWLENBQTJzVixDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQTNzVixDQUFzdlYsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUF0dlYsQ0FBbXlWLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQW55VixDQUFvMVYsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBcDFWLENBQXU0VixDQUFDLE9BQVEsWUFBVCxDQUFzQixTQUFVLEtBQWhDLENBQXY0VixDQUE4NlYsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBOTZWLENBQSs5VixDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQS85VixDQUE0Z1csQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUE1Z1csQ0FBcWpXLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBcmpXLENBQWttVyxDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUFsbVcsQ0FBaXBXLENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBanBXLENBQTByVyxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTFyVyxDQUF1dVcsQ0FBQyxPQUFRLHdCQUFULENBQWtDLFNBQVUsaUJBQTVDLENBQXZ1VyxDQUFzeVcsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUF0eVcsQ0FBKzBXLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQS8wVyxDQUE4M1csQ0FBQyxPQUFRLFlBQVQsQ0FBc0IsU0FBVSxLQUFoQyxDQUE5M1csQ0FBcTZXLENBQUMsT0FBUSxZQUFULENBQXNCLFNBQVUsS0FBaEMsQ0FBcjZXLENBQTQ4VyxDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUE1OFcsQ0FBbWdYLENBQUMsT0FBUSxzQkFBVCxDQUFnQyxTQUFVLGVBQTFDLENBQW5nWCxDQUE4algsQ0FBQyxPQUFRLDZCQUFULENBQXVDLFNBQVUsc0JBQWpELENBQTlqWCxDQUF1b1gsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBdm9YLENBQWdzWCxDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUFoc1gsQ0FBaXZYLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBanZYLENBQTh4WCxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQTl4WCxDQUF5MFgsQ0FBQyxPQUFRLHNCQUFULENBQWdDLFNBQVUsZUFBMUMsQ0FBejBYLENBQW80WCxDQUFDLE9BQVEsWUFBVCxDQUFzQixTQUFVLEtBQWhDLENBQXA0WCxDQUEyNlgsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUEzNlgsQ0FBczlYLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQXQ5WCxDQUF5Z1ksQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUF6Z1ksQ0FBc2pZLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQXRqWSxDQUFxbVksQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUFybVksQ0FBa3BZLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQWxwWSxDQUFxc1ksQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBcnNZLENBQTR2WSxDQUFDLE9BQVEsMEJBQVQsQ0FBb0MsU0FBVSxtQkFBOUMsQ0FBNXZZLENBQSt6WSxDQUFDLE9BQVEseUJBQVQsQ0FBbUMsU0FBVSxrQkFBN0MsQ0FBL3pZLENBQWc0WSxDQUFDLE9BQVEsWUFBVCxDQUFzQixTQUFVLEtBQWhDLENBQWg0WSxDQUF1NlksQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBdjZZLENBQTQ5WSxDQUFDLE9BQVEsdUJBQVQsQ0FBaUMsU0FBVSxnQkFBM0MsQ0FBNTlZLENBQXloWixDQUFDLE9BQVEsdUJBQVQsQ0FBaUMsU0FBVSxnQkFBM0MsQ0FBemhaLENBQXNsWixDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUF0bFosQ0FBaXBaLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQWpwWixDQUFvc1osQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBcHNaLENBQTJ2WixDQUFDLE9BQVEseUJBQVQsQ0FBbUMsU0FBVSxrQkFBN0MsQ0FBM3ZaLENBQTR6WixDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUE1elosQ0FBbTNaLENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQW4zWixDQUE0NlosQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUE1NlosQ0FBeTlaLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBejlaLENBQXNnYSxDQUFDLE9BQVEsV0FBVCxDQUFxQixTQUFVLElBQS9CLENBQXRnYSxDQUEyaWEsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBM2lhLENBQThsYSxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQTlsYSxDQUF5b2EsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBem9hLENBQTRyYSxDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUE1cmEsQ0FBMnVhLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBM3VhLENBQXN4YSxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQXR4YSxDQUFtMGEsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUFuMGEsQ0FBODJhLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQTkyYSxDQUFpNmEsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUFqNmEsQ0FBODhhLENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQTk4YSxDQUF1Z2IsQ0FBQyxPQUFRLHNCQUFULENBQWdDLFNBQVUsZUFBMUMsQ0FBdmdiLENBQWtrYixDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUFsa2IsQ0FBaW5iLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBam5iLENBQThwYixDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTlwYixDQUEyc2IsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBM3NiLENBQW93YixDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUFwd2IsQ0FBdXpiLENBQUMsT0FBUSxZQUFULENBQXNCLFNBQVUsS0FBaEMsQ0FBdnpiLENBQTgxYixDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUE5MWIsQ0FBbTViLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQW41YixDQUFrOGIsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUFsOGIsQ0FBKytiLENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBLytiLENBQXdoYyxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQXhoYyxDQUFxa2MsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUFya2MsQ0FBa25jLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQWxuYyxDQUF5cWMsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBenFjLENBQTB0YyxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTF0YyxDQUF1d2MsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBdndjLENBQWcwYyxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUFoMGMsQ0FBeTNjLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQXozYyxDQUEwNmMsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBMTZjLENBQWkrYyxDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUFqK2MsQ0FBZ2hkLENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBaGhkLENBQXlqZCxDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUF6amQsQ0FBMG1kLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBMW1kLENBQXFwZCxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQXJwZCxDQUFnc2QsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBaHNkLENBQXF2ZCxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUFydmQsQ0FBMHlkLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQTF5ZCxDQUEyMWQsQ0FBQyxPQUFRLHVCQUFULENBQWlDLFNBQVUsZ0JBQTNDLENBQTMxZCxDQUF3NWQsQ0FBQyxPQUFRLHdCQUFULENBQWtDLFNBQVUsaUJBQTVDLENBQXg1ZCxDQUF1OWQsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBdjlkLENBQTRnZSxDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUE1Z2UsQ0FBMmplLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQTNqZSxDQUEwbWUsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBMW1lLENBQWlxZSxDQUFDLE9BQVEsdUJBQVQsQ0FBaUMsU0FBVSxnQkFBM0MsQ0FBanFlLENBQTh0ZSxDQUFDLE9BQVEsdUJBQVQsQ0FBaUMsU0FBVSxnQkFBM0MsQ0FBOXRlLENBQTJ4ZSxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUEzeGUsQ0FBZzFlLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBaDFlLENBQTIzZSxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUEzM2UsQ0FBbzdlLENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQXA3ZSxDQUE2K2UsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBNytlLENBQXNpZixDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQXRpZixDQUFtbGYsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUFubGYsQ0FBZ29mLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQWhvZixDQUFpcmYsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBanJmLENBQTB1ZixDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUExdWYsQ0FBaXlmLENBQUMsT0FBUSwyQkFBVCxDQUFxQyxTQUFVLG9CQUEvQyxDQUFqeWYsQ0FBczJmLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQXQyZixDQUE2NWYsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUE3NWYsQ0FBMDhmLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQTE4ZixDQUE2L2YsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBNy9mLENBQThpZ0IsQ0FBQyxPQUFRLHVCQUFULENBQWlDLFNBQVUsZ0JBQTNDLENBQTlpZ0IsQ0FBMm1nQixDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUEzbWdCLENBQXNxZ0IsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBdHFnQixDQUErdGdCLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQS90Z0IsQ0FBOHdnQixDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUE5d2dCLENBQWkwZ0IsQ0FBQyxPQUFRLHlCQUFULENBQW1DLFNBQVUsa0JBQTdDLENBQWowZ0IsQ0FBazRnQixDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQWw0Z0IsQ0FBKzZnQixDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUEvNmdCLENBQXMrZ0IsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUF0K2dCLENBQW1oaEIsQ0FBQyxPQUFRLHNCQUFULENBQWdDLFNBQVUsZUFBMUMsQ0FBbmhoQixDQUE4a2hCLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBOWtoQixDQUEybmhCLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQTNuaEIsQ0FBMHFoQixDQUFDLE9BQVEsdUJBQVQsQ0FBaUMsU0FBVSxnQkFBM0MsQ0FBMXFoQixDQUF1dWhCLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBdnVoQixDQUFreGhCLENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBbHhoQixDQUEyemhCLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBM3poQixDQUFzMmhCLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQXQyaEIsQ0FBNjVoQixDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUE3NWhCLENBQTQ4aEIsQ0FBQyxPQUFRLFlBQVQsQ0FBc0IsU0FBVSxLQUFoQyxDQUE1OGhCLENBQW0vaEIsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBbi9oQixDQUFvaWlCLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBcGlpQixDQUFpbGlCLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQWpsaUIsQ0FBZ29pQixDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQWhvaUIsQ0FBNnFpQixDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUE3cWlCLENBQXd1aUIsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUF4dWlCLENBQW14aUIsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUFueGlCLENBQTh6aUIsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBOXppQixDQUF1M2lCLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQXYzaUIsQ0FBczZpQixDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQXQ2aUIsQ0FBKzhpQixDQUFDLE9BQVEsV0FBVCxDQUFxQixTQUFVLElBQS9CLENBQS84aUIsQ0FBby9pQixDQUFDLE9BQVEsWUFBVCxDQUFzQixTQUFVLEtBQWhDLENBQXAvaUIsQ0FBMmhqQixDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQTNoakIsQ0FBc2tqQixDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQXRrakIsQ0FBbW5qQixDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQW5uakIsQ0FBOHBqQixDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTlwakIsQ0FBMnNqQixDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUEzc2pCLENBQTR2akIsQ0FBQyxPQUFRLHdCQUFULENBQWtDLFNBQVUsaUJBQTVDLENBQTV2akIsQ0FBMnpqQixDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQTN6akIsQ0FBczJqQixDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUF0MmpCLENBQTY1akIsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBNzVqQixDQUE0OGpCLENBQUMsT0FBUSxZQUFULENBQXNCLFNBQVUsS0FBaEMsQ0FBNThqQixDQUFtL2pCLENBQUMsT0FBUSw0QkFBVCxDQUFzQyxTQUFVLHFCQUFoRCxDQUFuL2pCLENBQTBqa0IsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBMWprQixDQUE2bWtCLENBQUMsT0FBUSx5QkFBVCxDQUFtQyxTQUFVLGtCQUE3QyxDQUE3bWtCLENBQThxa0IsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBOXFrQixDQUFtdWtCLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQW51a0IsQ0FBd3hrQixDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUF4eGtCLENBQXUwa0IsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUF2MGtCLENBQWcza0IsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUFoM2tCLENBQXk1a0IsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBejVrQixDQUFnOWtCLENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQWg5a0IsQ0FBeWdsQixDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQXpnbEIsQ0FBb2psQixDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQXBqbEIsQ0FBaW1sQixDQUFDLE9BQVEsNkJBQVQsQ0FBdUMsU0FBVSxzQkFBakQsQ0FBam1sQixDQUEwcWxCLENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBMXFsQixDQUFtdGxCLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBbnRsQixDQUE4dmxCLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQTl2bEIsQ0FBNnlsQixDQUFDLE9BQVEsdUJBQVQsQ0FBaUMsU0FBVSxnQkFBM0MsQ0FBN3lsQixDQUEwMmxCLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBMTJsQixDQUFxNWxCLENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQXI1bEIsQ0FBODhsQixDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUE5OGxCLENBQXVnbUIsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUF2Z21CLENBQWtqbUIsQ0FBQyxPQUFRLDhCQUFULENBQXdDLFNBQVUsdUJBQWxELENBQWxqbUIsQ0FBNm5tQixDQUFDLE9BQVEsOEJBQVQsQ0FBd0MsU0FBVSx1QkFBbEQsQ0FBN25tQixDQUF3c21CLENBQUMsT0FBUSwrQkFBVCxDQUF5QyxTQUFVLHdCQUFuRCxDQUF4c21CLENBQXF4bUIsQ0FBQyxPQUFRLDRCQUFULENBQXNDLFNBQVUscUJBQWhELENBQXJ4bUIsQ0FBNDFtQixDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQTUxbUIsQ0FBcTRtQixDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUFyNG1CLENBQTA3bUIsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBMTdtQixDQUEyK21CLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQTMrbUIsQ0FBNGhuQixDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUE1aG5CLENBQTZrbkIsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBN2tuQixDQUFzb25CLENBQUMsT0FBUSx1QkFBVCxDQUFpQyxTQUFVLGdCQUEzQyxDQUF0b25CLENBQW1zbkIsQ0FBQyxPQUFRLHVCQUFULENBQWlDLFNBQVUsZ0JBQTNDLENBQW5zbkIsQ0FBZ3duQixDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUFod25CLENBQTJ6bkIsQ0FBQyxPQUFRLHVCQUFULENBQWlDLFNBQVUsZ0JBQTNDLENBQTN6bkIsQ0FBdzNuQixDQUFDLE9BQVEsMEJBQVQsQ0FBb0MsU0FBVSxtQkFBOUMsQ0FBeDNuQixDQUEyN25CLENBQUMsT0FBUSwwQkFBVCxDQUFvQyxTQUFVLG1CQUE5QyxDQUEzN25CLENBQTgvbkIsQ0FBQyxPQUFRLDJCQUFULENBQXFDLFNBQVUsb0JBQS9DLENBQTkvbkIsQ0FBbWtvQixDQUFDLE9BQVEsd0JBQVQsQ0FBa0MsU0FBVSxpQkFBNUMsQ0FBbmtvQixDQUFrb29CLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQWxvb0IsQ0FBcXJvQixDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUFycm9CLENBQTh1b0IsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBOXVvQixDQUF1eW9CLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBdnlvQixDQUFvMW9CLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQXAxb0IsQ0FBdTRvQixDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQXY0b0IsQ0FBazdvQixDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQWw3b0IsQ0FBNjlvQixDQUFDLE9BQVEsMEJBQVQsQ0FBb0MsU0FBVSxtQkFBOUMsQ0FBNzlvQixDQUFnaXBCLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQWhpcEIsQ0FBK2twQixDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUEva3BCLENBQXNvcEIsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBdG9wQixDQUErcnBCLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQS9ycEIsQ0FBZ3ZwQixDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUFodnBCLENBQSt4cEIsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUEveHBCLENBQXcwcEIsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBeDBwQixDQUEyM3BCLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQTMzcEIsQ0FBazdwQixDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQWw3cEIsQ0FBNjlwQixDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUE3OXBCLENBQWtocUIsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUFsaHFCLENBQTJqcUIsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBM2pxQixDQUE0bXFCLENBQUMsT0FBUSxzQkFBVCxDQUFnQyxTQUFVLGVBQTFDLENBQTVtcUIsQ0FBdXFxQixDQUFDLE9BQVEsWUFBVCxDQUFzQixTQUFVLEtBQWhDLENBQXZxcUIsQ0FBOHNxQixDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUE5c3FCLENBQWl3cUIsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUFqd3FCLENBQTB5cUIsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBMXlxQixDQUEyMXFCLENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQTMxcUIsQ0FBbzVxQixDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUFwNXFCLENBQXk4cUIsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBejhxQixDQUE0L3FCLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQTUvcUIsQ0FBaWpyQixDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUFqanJCLENBQXNtckIsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBdG1yQixDQUF1cHJCLENBQUMsT0FBUSx3QkFBVCxDQUFrQyxTQUFVLGlCQUE1QyxDQUF2cHJCLENBQXN0ckIsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBdHRyQixDQUEyd3JCLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQTN3ckIsQ0FBOHpyQixDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQTl6ckIsQ0FBdTJyQixDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUF2MnJCLENBQXM1ckIsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUF0NXJCLENBQW04ckIsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBbjhyQixDQUEwL3JCLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBMS9yQixDQUFxaXNCLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQXJpc0IsQ0FBMGxzQixDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTFsc0IsQ0FBdW9zQixDQUFDLE9BQVEsWUFBVCxDQUFzQixTQUFVLEtBQWhDLENBQXZvc0IsQ0FBOHFzQixDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUE5cXNCLENBQTZ0c0IsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUE3dHNCLENBQXN3c0IsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBdHdzQixDQUF1enNCLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQXZ6c0IsQ0FBMDJzQixDQUFDLE9BQVEsd0JBQVQsQ0FBa0MsU0FBVSxpQkFBNUMsQ0FBMTJzQixDQUF5NnNCLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQXo2c0IsQ0FBZytzQixDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUFoK3NCLENBQXVodEIsQ0FBQyxPQUFRLDBCQUFULENBQW9DLFNBQVUsbUJBQTlDLENBQXZodEIsQ0FBMGx0QixDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUExbHRCLENBQStvdEIsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBL290QixDQUFvc3RCLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQXBzdEIsQ0FBMnZ0QixDQUFDLE9BQVEsMkJBQVQsQ0FBcUMsU0FBVSxvQkFBL0MsQ0FBM3Z0QixDQUFnMHRCLENBQUMsT0FBUSx5QkFBVCxDQUFtQyxTQUFVLGtCQUE3QyxDQUFoMHRCLENBQWk0dEIsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBajR0QixDQUFvN3RCLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQXA3dEIsQ0FBMit0QixDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUEzK3RCLENBQWdpdUIsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBaGl1QixDQUFxbHVCLENBQUMsT0FBUSx3QkFBVCxDQUFrQyxTQUFVLGlCQUE1QyxDQUFybHVCLENBQW9wdUIsQ0FBQyxPQUFRLHdCQUFULENBQWtDLFNBQVUsaUJBQTVDLENBQXBwdUIsQ0FBbXR1QixDQUFDLE9BQVEseUJBQVQsQ0FBbUMsU0FBVSxrQkFBN0MsQ0FBbnR1QixDQUFveHVCLENBQUMsT0FBUSxzQkFBVCxDQUFnQyxTQUFVLGVBQTFDLENBQXB4dUIsQ0FBKzB1QixDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUEvMHVCLENBQXc0dUIsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBeDR1QixDQUEyN3VCLENBQUMsT0FBUSxzQkFBVCxDQUFnQyxTQUFVLGVBQTFDLENBQTM3dUIsQ0FBcy91QixDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUF0L3VCLENBQTJpdkIsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBM2l2QixDQUE4bHZCLENBQUMsT0FBUSxZQUFULENBQXNCLFNBQVUsS0FBaEMsQ0FBOWx2QixDQUFxb3ZCLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBcm92QixDQUFncnZCLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQWhydkIsQ0FBaXV2QixDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUFqdXZCLENBQW94dkIsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBcHh2QixDQUFxMHZCLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQXIwdkIsQ0FBbzN2QixDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQXAzdkIsQ0FBKzV2QixDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQS81dkIsQ0FBNDh2QixDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUE1OHZCLENBQTYvdkIsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUE3L3ZCLENBQXNpd0IsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBdGl3QixDQUF5bHdCLENBQUMsT0FBUSx3QkFBVCxDQUFrQyxTQUFVLGlCQUE1QyxDQUF6bHdCLENBQXdwd0IsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUF4cHdCLENBQW1zd0IsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBbnN3QixDQUF3dndCLENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQXh2d0IsQ0FBaXp3QixDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUFqendCLENBQXMyd0IsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUF0MndCLENBQWk1d0IsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBajV3QixDQUFvOHdCLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQXA4d0IsQ0FBdS93QixDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUF2L3dCLENBQXdpeEIsQ0FBQyxPQUFRLFlBQVQsQ0FBc0IsU0FBVSxLQUFoQyxDQUF4aXhCLENBQStreEIsQ0FBQyxPQUFRLFlBQVQsQ0FBc0IsU0FBVSxLQUFoQyxDQUEva3hCLENBQXNueEIsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBdG54QixDQUF5cXhCLENBQUMsT0FBUSx5QkFBVCxDQUFtQyxTQUFVLGtCQUE3QyxDQUF6cXhCLENBQTB1eEIsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBMXV4QixDQUFteXhCLENBQUMsT0FBUSx1QkFBVCxDQUFpQyxTQUFVLGdCQUEzQyxDQUFueXhCLENBQWcyeEIsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUFoMnhCLENBQXk0eEIsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBejR4QixDQUE0N3hCLENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQTU3eEIsQ0FBcS94QixDQUFDLE9BQVEsdUJBQVQsQ0FBaUMsU0FBVSxnQkFBM0MsQ0FBci94QixDQUFranlCLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQWxqeUIsQ0FBeW15QixDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUF6bXlCLENBQWtxeUIsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBbHF5QixDQUF5dHlCLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQXp0eUIsQ0FBZ3h5QixDQUFDLE9BQVEsd0JBQVQsQ0FBa0MsU0FBVSxpQkFBNUMsQ0FBaHh5QixDQUErMHlCLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQS8weUIsQ0FBbzR5QixDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUFwNHlCLENBQW03eUIsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBbjd5QixDQUFvK3lCLENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBcCt5QixDQUE2Z3pCLENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQTdnekIsQ0FBc2t6QixDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQXRrekIsQ0FBaW56QixDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUFqbnpCLENBQXNxekIsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBdHF6QixDQUEydHpCLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQTN0ekIsQ0FBOHd6QixDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTl3ekIsQ0FBMnp6QixDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQTN6ekIsQ0FBbzJ6QixDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUFwMnpCLENBQXU1ekIsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBdjV6QixDQUE4OHpCLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQTk4ekIsQ0FBcWcwQixDQUFDLE9BQVEsWUFBVCxDQUFzQixTQUFVLEtBQWhDLENBQXJnMEIsQ0FBNGkwQixDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUE1aTBCLENBQTZsMEIsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBN2wwQixDQUFvcDBCLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQXBwMEIsQ0FBdXMwQixDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUF2czBCLENBQWd3MEIsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUFodzBCLENBQTJ5MEIsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBM3kwQixDQUE4MTBCLENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBOTEwQixDQUF1NDBCLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQXY0MEIsQ0FBODcwQixDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUE5NzBCLENBQXUvMEIsQ0FBQyxPQUFRLHdCQUFULENBQWtDLFNBQVUsaUJBQTVDLENBQXYvMEIsQ0FBc2oxQixDQUFDLE9BQVEsd0JBQVQsQ0FBa0MsU0FBVSxpQkFBNUMsQ0FBdGoxQixDQUFxbjFCLENBQUMsT0FBUSx1QkFBVCxDQUFpQyxTQUFVLGdCQUEzQyxDQUFybjFCLENBQWtyMUIsQ0FBQyxPQUFRLFdBQVQsQ0FBcUIsU0FBVSxJQUEvQixDQUFscjFCLENBQXV0MUIsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBdnQxQixDQUFneDFCLENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQWh4MUIsQ0FBeTAxQixDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQXowMUIsQ0FBczMxQixDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUF0MzFCLENBQWk3MUIsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBajcxQixDQUEwKzFCLENBQUMsT0FBUSxzQkFBVCxDQUFnQyxTQUFVLGVBQTFDLENBQTErMUIsQ0FBcWkyQixDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUFyaTJCLENBQTBsMkIsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBMWwyQixDQUFpcDJCLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQWpwMkIsQ0FBb3MyQixDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUFwczJCLENBQXV2MkIsQ0FBQyxPQUFRLDRDQUFULENBQXNELFNBQVUscUNBQWhFLENBQXZ2MkIsQ0FBODEyQixDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTkxMkIsQ0FBMjQyQixDQUFDLE9BQVEsMEJBQVQsQ0FBb0MsU0FBVSxtQkFBOUMsQ0FBMzQyQixDQUE4ODJCLENBQUMsT0FBUSwwQkFBVCxDQUFvQyxTQUFVLG1CQUE5QyxDQUE5ODJCLENBQWloM0IsQ0FBQyxPQUFRLDJCQUFULENBQXFDLFNBQVUsb0JBQS9DLENBQWpoM0IsQ0FBc2wzQixDQUFDLE9BQVEsd0JBQVQsQ0FBa0MsU0FBVSxpQkFBNUMsQ0FBdGwzQixDQUFxcDNCLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQXJwM0IsQ0FBMHMzQixDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUExczNCLENBQSt2M0IsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBL3YzQixDQUFzejNCLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQXR6M0IsQ0FBdTIzQixDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQXYyM0IsQ0FBazUzQixDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQWw1M0IsQ0FBMjczQixDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUEzNzNCLENBQTgrM0IsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBOSszQixDQUE2aDRCLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQTdoNEIsQ0FBNGs0QixDQUFDLE9BQVEsOEJBQVQsQ0FBd0MsU0FBVSx1QkFBbEQsQ0FBNWs0QixDQUF1cDRCLENBQUMsT0FBUSw4QkFBVCxDQUF3QyxTQUFVLHVCQUFsRCxDQUF2cDRCLENBQWt1NEIsQ0FBQyxPQUFRLCtCQUFULENBQXlDLFNBQVUsd0JBQW5ELENBQWx1NEIsQ0FBK3k0QixDQUFDLE9BQVEsNEJBQVQsQ0FBc0MsU0FBVSxxQkFBaEQsQ0FBL3k0QixDQUFzMzRCLENBQUMsT0FBUSwwQkFBVCxDQUFvQyxTQUFVLG1CQUE5QyxDQUF0MzRCLENBQXk3NEIsQ0FBQyxPQUFRLDBCQUFULENBQW9DLFNBQVUsbUJBQTlDLENBQXo3NEIsQ0FBNC80QixDQUFDLE9BQVEsMkJBQVQsQ0FBcUMsU0FBVSxvQkFBL0MsQ0FBNS80QixDQUFpazVCLENBQUMsT0FBUSx3QkFBVCxDQUFrQyxTQUFVLGlCQUE1QyxDQUFqazVCLENBQWdvNUIsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBaG81QixDQUFxcjVCLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQXJyNUIsQ0FBMHU1QixDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUExdTVCLENBQWl5NUIsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBank1QixDQUFrMTVCLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQWwxNUIsQ0FBdTQ1QixDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUF2NDVCLENBQWc4NUIsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBaDg1QixDQUF5LzVCLENBQUMsT0FBUSxvQ0FBVCxDQUE4QyxTQUFVLDZCQUF4RCxDQUF6LzVCLENBQWdsNkIsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBaGw2QixDQUFpbzZCLENBQUMsT0FBUSxXQUFULENBQXFCLFNBQVUsSUFBL0IsQ0FBam82QixDQUFzcTZCLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBdHE2QixDQUFpdDZCLENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBanQ2QixDQUEwdjZCLENBQUMsT0FBUSwwQkFBVCxDQUFvQyxTQUFVLG1CQUE5QyxDQUExdjZCLENBQTZ6NkIsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUE3ejZCLENBQXcyNkIsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBeDI2QixDQUEyNTZCLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQTM1NkIsQ0FBNDg2QixDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUE1ODZCLENBQXVnN0IsQ0FBQyxPQUFRLFlBQVQsQ0FBc0IsU0FBVSxLQUFoQyxDQUF2ZzdCLENBQThpN0IsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBOWk3QixDQUErbDdCLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQS9sN0IsQ0FBOG83QixDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQTlvN0IsQ0FBdXI3QixDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUF2cjdCLENBQWt2N0IsQ0FBQyxPQUFRLHdCQUFULENBQWtDLFNBQVUsaUJBQTVDLENBQWx2N0IsQ0FBaXo3QixDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQWp6N0IsQ0FBMDE3QixDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUExMTdCLENBQXE1N0IsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBcjU3QixDQUE4ODdCLENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQTk4N0IsQ0FBdWc4QixDQUFDLE9BQVEsd0JBQVQsQ0FBa0MsU0FBVSxpQkFBNUMsQ0FBdmc4QixDQUFzazhCLENBQUMsT0FBUSwrQkFBVCxDQUF5QyxTQUFVLHdCQUFuRCxDQUF0azhCLENBQW1wOEIsQ0FBQyxPQUFRLFlBQVQsQ0FBc0IsU0FBVSxLQUFoQyxDQUFucDhCLENBQTByOEIsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUExcjhCLENBQW11OEIsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUFudThCLENBQTR3OEIsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBNXc4QixDQUFpMDhCLENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQWowOEIsQ0FBMDM4QixDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQTEzOEIsQ0FBcTY4QixDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUFyNjhCLENBQW85OEIsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBcDk4QixDQUF5ZzlCLENBQUMsT0FBUSxzQkFBVCxDQUFnQyxTQUFVLGVBQTFDLENBQXpnOUIsQ0FBb2s5QixDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUFwazlCLENBQW1uOUIsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUFubjlCLENBQThwOUIsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUE5cDlCLENBQXVzOUIsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUF2czlCLENBQWd2OUIsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUFodjlCLENBQXl4OUIsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUF6eDlCLENBQWswOUIsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUFsMDlCLENBQTIyOUIsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUEzMjlCLENBQW81OUIsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBcDU5QixDQUF1ODlCLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQXY4OUIsQ0FBOC85QixDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUE5LzlCLENBQStpK0IsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBL2krQixDQUF3bStCLENBQUMsT0FBUSxZQUFULENBQXNCLFNBQVUsS0FBaEMsQ0FBeG0rQixDQUErbytCLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQS9vK0IsQ0FBZ3MrQixDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQWhzK0IsQ0FBMnUrQixDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUEzdStCLENBQTB4K0IsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUExeCtCLENBQXEwK0IsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBcjArQixDQUF3MytCLENBQUMsT0FBUSwwQkFBVCxDQUFvQyxTQUFVLG1CQUE5QyxDQUF4MytCLENBQTI3K0IsQ0FBQyxPQUFRLHdCQUFULENBQWtDLFNBQVUsaUJBQTVDLENBQTM3K0IsQ0FBMC8rQixDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQTEvK0IsQ0FBcWkvQixDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQXJpL0IsQ0FBZ2wvQixDQUFDLE9BQVEsWUFBVCxDQUFzQixTQUFVLEtBQWhDLENBQWhsL0IsQ0FBdW4vQixDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUF2bi9CLENBQXdxL0IsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBeHEvQixDQUF5dC9CLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQXp0L0IsQ0FBMHcvQixDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQTF3L0IsQ0FBbXovQixDQUFDLE9BQVEsWUFBVCxDQUFzQixTQUFVLEtBQWhDLENBQW56L0IsQ0FBMDEvQixDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUExMS9CLENBQXk0L0IsQ0FBQyxPQUFRLHNCQUFULENBQWdDLFNBQVUsZUFBMUMsQ0FBejQvQixDQUFvOC9CLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQXA4L0IsQ0FBeS8vQixDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUF6Ly9CLENBQTBpZ0MsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBMWlnQyxDQUFtbWdDLENBQUMsT0FBUSx1QkFBVCxDQUFpQyxTQUFVLGdCQUEzQyxDQUFubWdDLENBQWdxZ0MsQ0FBQyxPQUFRLHVCQUFULENBQWlDLFNBQVUsZ0JBQTNDLENBQWhxZ0MsQ0FBNnRnQyxDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUE3dGdDLENBQXd4Z0MsQ0FBQyxPQUFRLHVCQUFULENBQWlDLFNBQVUsZ0JBQTNDLENBQXh4Z0MsQ0FBcTFnQyxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQXIxZ0MsQ0FBazRnQyxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUFsNGdDLENBQTI3Z0MsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBMzdnQyxDQUE0K2dDLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQTUrZ0MsQ0FBNmhoQyxDQUFDLE9BQVEsWUFBVCxDQUFzQixTQUFVLEtBQWhDLENBQTdoaEMsQ0FBb2toQyxDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUFwa2hDLENBQW1uaEMsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBbm5oQyxDQUEwcWhDLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQTFxaEMsQ0FBNnRoQyxDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUE3dGhDLENBQTh3aEMsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBOXdoQyxDQUFtMGhDLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQW4waEMsQ0FBdzNoQyxDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUF4M2hDLENBQSs2aEMsQ0FBQyxPQUFRLDBCQUFULENBQW9DLFNBQVUsbUJBQTlDLENBQS82aEMsQ0FBay9oQyxDQUFDLE9BQVEsMEJBQVQsQ0FBb0MsU0FBVSxtQkFBOUMsQ0FBbC9oQyxDQUFxamlDLENBQUMsT0FBUSwyQkFBVCxDQUFxQyxTQUFVLG9CQUEvQyxDQUFyamlDLENBQTBuaUMsQ0FBQyxPQUFRLHdCQUFULENBQWtDLFNBQVUsaUJBQTVDLENBQTFuaUMsQ0FBeXJpQyxDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUF6cmlDLENBQTB1aUMsQ0FBQyxPQUFRLHdCQUFULENBQWtDLFNBQVUsaUJBQTVDLENBQTF1aUMsQ0FBeXlpQyxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUF6eWlDLENBQTQxaUMsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBNTFpQyxDQUFtNWlDLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQW41aUMsQ0FBdzhpQyxDQUFDLE9BQVEsMkJBQVQsQ0FBcUMsU0FBVSxvQkFBL0MsQ0FBeDhpQyxDQUE2Z2pDLENBQUMsT0FBUSx5QkFBVCxDQUFtQyxTQUFVLGtCQUE3QyxDQUE3Z2pDLENBQThrakMsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBOWtqQyxDQUFtb2pDLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQW5vakMsQ0FBc3JqQyxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUF0cmpDLENBQTJ1akMsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBM3VqQyxDQUE4eGpDLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBOXhqQyxDQUF5MGpDLENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQXowakMsQ0FBazRqQyxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUFsNGpDLENBQTI3akMsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBMzdqQyxDQUFvL2pDLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBcC9qQyxDQUEraGtDLENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQS9oa0MsQ0FBd2xrQyxDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUF4bGtDLENBQStva0MsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBL29rQyxDQUFvc2tDLENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQXBza0MsQ0FBNnZrQyxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUE3dmtDLENBQWt6a0MsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBbHprQyxDQUF5MmtDLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQXoya0MsQ0FBODVrQyxDQUFDLE9BQVEsNEJBQVQsQ0FBc0MsU0FBVSxxQkFBaEQsQ0FBOTVrQyxDQUFxK2tDLENBQUMsT0FBUSw0QkFBVCxDQUFzQyxTQUFVLHFCQUFoRCxDQUFyK2tDLENBQTRpbEMsQ0FBQyxPQUFRLDZCQUFULENBQXVDLFNBQVUsc0JBQWpELENBQTVpbEMsQ0FBcW5sQyxDQUFDLE9BQVEsMEJBQVQsQ0FBb0MsU0FBVSxtQkFBOUMsQ0FBcm5sQyxDQUF3cmxDLENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQXhybEMsQ0FBaXZsQyxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUFqdmxDLENBQTB5bEMsQ0FBQyxPQUFRLHNCQUFULENBQWdDLFNBQVUsZUFBMUMsQ0FBMXlsQyxDQUFxMmxDLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQXIybEMsQ0FBMDVsQyxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQTE1bEMsQ0FBcThsQyxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQXI4bEMsQ0FBay9sQyxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQWwvbEMsQ0FBK2htQyxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUEvaG1DLENBQXdsbUMsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUF4bG1DLENBQWlvbUMsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBam9tQyxDQUFvcm1DLENBQUMsT0FBUSx3QkFBVCxDQUFrQyxTQUFVLGlCQUE1QyxDQUFwcm1DLENBQW12bUMsQ0FBQyxPQUFRLHVCQUFULENBQWlDLFNBQVUsZ0JBQTNDLENBQW52bUMsQ0FBZ3ptQyxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQWh6bUMsQ0FBMjFtQyxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQTMxbUMsQ0FBczRtQyxDQUFDLE9BQVEsMEJBQVQsQ0FBb0MsU0FBVSxtQkFBOUMsQ0FBdDRtQyxDQUF5OG1DLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBejhtQyxDQUFvL21DLENBQUMsT0FBUSwyQkFBVCxDQUFxQyxTQUFVLG9CQUEvQyxDQUFwL21DLENBQXlqbkMsQ0FBQyxPQUFRLHlCQUFULENBQW1DLFNBQVUsa0JBQTdDLENBQXpqbkMsQ0FBMG5uQyxDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUExbm5DLENBQTJxbkMsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUEzcW5DLENBQW90bkMsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBcHRuQyxDQUEyd25DLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBM3duQyxDQUF3em5DLENBQUMsT0FBUSxZQUFULENBQXNCLFNBQVUsS0FBaEMsQ0FBeHpuQyxDQUErMW5DLENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBLzFuQyxDQUF3NG5DLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBeDRuQyxDQUFtN25DLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQW43bkMsQ0FBaytuQyxDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUFsK25DLENBQWlob0MsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBamhvQyxDQUF3a29DLENBQUMsT0FBUSx1QkFBVCxDQUFpQyxTQUFVLGdCQUEzQyxDQUF4a29DLENBQXFvb0MsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBcm9vQyxDQUE4cm9DLENBQUMsT0FBUSxzQkFBVCxDQUFnQyxTQUFVLGVBQTFDLENBQTlyb0MsQ0FBeXZvQyxDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUF6dm9DLENBQTB5b0MsQ0FBQyxPQUFRLHdCQUFULENBQWtDLFNBQVUsaUJBQTVDLENBQTF5b0MsQ0FBeTJvQyxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUF6Mm9DLENBQWs2b0MsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBbDZvQyxDQUFpOW9DLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQWo5b0MsQ0FBa2dwQyxDQUFDLE9BQVEsdUJBQVQsQ0FBaUMsU0FBVSxnQkFBM0MsQ0FBbGdwQyxDQUEranBDLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBL2pwQyxDQUE0bXBDLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQTVtcEMsQ0FBbXFwQyxDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQW5xcEMsQ0FBNHNwQyxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUE1c3BDLENBQSt2cEMsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUEvdnBDLENBQTB5cEMsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBMXlwQyxDQUFpMnBDLENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBajJwQyxDQUEwNHBDLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQTE0cEMsQ0FBMjdwQyxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQTM3cEMsQ0FBcytwQyxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUF0K3BDLENBQTJocUMsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUEzaHFDLENBQW9rcUMsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUFwa3FDLENBQSttcUMsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUEvbXFDLENBQXdwcUMsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUF4cHFDLENBQW1zcUMsQ0FBQyxPQUFRLFlBQVQsQ0FBc0IsU0FBVSxLQUFoQyxDQUFuc3FDLENBQTB1cUMsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBMXVxQyxDQUEyeHFDLENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBM3hxQyxDQUFvMHFDLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQXAwcUMsQ0FBbTNxQyxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUFuM3FDLENBQTQ2cUMsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBNTZxQyxDQUErOXFDLENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBLzlxQyxDQUF3Z3JDLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQXhnckMsQ0FBMmpyQyxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUEzanJDLENBQThtckMsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBOW1yQyxDQUErcHJDLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQS9wckMsQ0FBZ3RyQyxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUFodHJDLENBQXF3ckMsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBcndyQyxDQUFzenJDLENBQUMsT0FBUSwyQkFBVCxDQUFxQyxTQUFVLG9CQUEvQyxDQUF0enJDLENBQTIzckMsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBMzNyQyxDQUFnN3JDLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBaDdyQyxDQUE2OXJDLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBNzlyQyxDQUF3Z3NDLENBQUMsT0FBUSxZQUFULENBQXNCLFNBQVUsS0FBaEMsQ0FBeGdzQyxDQUEraXNDLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQS9pc0MsQ0FBc21zQyxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQXRtc0MsQ0FBaXBzQyxDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUFqcHNDLENBQTRzc0MsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUE1c3NDLENBQXl2c0MsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBenZzQyxDQUFnenNDLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQWh6c0MsQ0FBbTJzQyxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUFuMnNDLENBQXc1c0MsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUF4NXNDLENBQWk4c0MsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBajhzQyxDQUFrL3NDLENBQUMsT0FBUSx5QkFBVCxDQUFtQyxTQUFVLGtCQUE3QyxDQUFsL3NDLENBQW1qdEMsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBbmp0QyxDQUE0bXRDLENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBNW10QyxDQUFxcHRDLENBQUMsT0FBUSxzQkFBVCxDQUFnQyxTQUFVLGVBQTFDLENBQXJwdEMsQ0FBZ3R0QyxDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUFodHRDLENBQWl3dEMsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUFqd3RDLENBQTB5dEMsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUExeXRDLENBQXExdEMsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBcjF0QyxDQUEwNHRDLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQTE0dEMsQ0FBKzd0QyxDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUEvN3RDLENBQWcvdEMsQ0FBQyxPQUFRLHNCQUFULENBQWdDLFNBQVUsZUFBMUMsQ0FBaC90QyxDQUEyaXVDLENBQUMsT0FBUSwyQkFBVCxDQUFxQyxTQUFVLG9CQUEvQyxDQUEzaXVDLENBQWdudUMsQ0FBQyxPQUFRLHdCQUFULENBQWtDLFNBQVUsaUJBQTVDLENBQWhudUMsQ0FBK3F1QyxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQS9xdUMsQ0FBNHR1QyxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTV0dUMsQ0FBeXd1QyxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUF6d3VDLENBQTR6dUMsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBNXp1QyxDQUFxM3VDLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQXIzdUMsQ0FBNDZ1QyxDQUFDLE9BQVEsMkJBQVQsQ0FBcUMsU0FBVSxvQkFBL0MsQ0FBNTZ1QyxDQUFpL3VDLENBQUMsT0FBUSw2QkFBVCxDQUF1QyxTQUFVLHNCQUFqRCxDQUFqL3VDLENBQTBqdkMsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUExanZDLENBQXVtdkMsQ0FBQyxPQUFRLDBCQUFULENBQW9DLFNBQVUsbUJBQTlDLENBQXZtdkMsQ0FBMHF2QyxDQUFDLE9BQVEsMEJBQVQsQ0FBb0MsU0FBVSxtQkFBOUMsQ0FBMXF2QyxDQUE2dXZDLENBQUMsT0FBUSxpQ0FBVCxDQUEyQyxTQUFVLDBCQUFyRCxDQUE3dXZDLENBQTh6dkMsQ0FBQyxPQUFRLFlBQVQsQ0FBc0IsU0FBVSxLQUFoQyxDQUE5enZDLENBQXEydkMsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBcjJ2QyxDQUE0NXZDLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQTU1dkMsQ0FBKzh2QyxDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUEvOHZDLENBQTBnd0MsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBMWd3QyxDQUFta3dDLENBQUMsT0FBUSxZQUFULENBQXNCLFNBQVUsS0FBaEMsQ0FBbmt3QyxDQUEwbXdDLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQTFtd0MsQ0FBeXB3QyxDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUF6cHdDLENBQWd0d0MsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUFodHdDLENBQTZ2d0MsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBN3Z3QyxDQUFvendDLENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBcHp3QyxDQUE2MXdDLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQTcxd0MsQ0FBODR3QyxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUE5NHdDLENBQXU4d0MsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBdjh3QyxDQUE0L3dDLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQTUvd0MsQ0FBK2l4QyxDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUEvaXhDLENBQTBteEMsQ0FBQyxPQUFRLHNCQUFULENBQWdDLFNBQVUsZUFBMUMsQ0FBMW14QyxDQUFxcXhDLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQXJxeEMsQ0FBMHR4QyxDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUExdHhDLENBQWl4eEMsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBanh4QyxDQUFzMHhDLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQXQweEMsQ0FBNjN4QyxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUE3M3hDLENBQXM3eEMsQ0FBQyxPQUFRLDRCQUFULENBQXNDLFNBQVUscUJBQWhELENBQXQ3eEMsQ0FBNi94QyxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUE3L3hDLENBQXNqeUMsQ0FBQyxPQUFRLHlCQUFULENBQW1DLFNBQVUsa0JBQTdDLENBQXRqeUMsQ0FBdW55QyxDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUF2bnlDLENBQXdxeUMsQ0FBQyxPQUFRLHdCQUFULENBQWtDLFNBQVUsaUJBQTVDLENBQXhxeUMsQ0FBdXV5QyxDQUFDLE9BQVEsMEJBQVQsQ0FBb0MsU0FBVSxtQkFBOUMsQ0FBdnV5QyxDQUEweXlDLENBQUMsT0FBUSx1QkFBVCxDQUFpQyxTQUFVLGdCQUEzQyxDQUExeXlDLENBQXUyeUMsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBdjJ5QyxDQUE4NXlDLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQTk1eUMsQ0FBbTl5QyxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUFuOXlDLENBQXNnekMsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUF0Z3pDLENBQStpekMsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBL2l6QyxDQUFrbXpDLENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBbG16QyxDQUEyb3pDLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBM296QyxDQUF3cnpDLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQXhyekMsQ0FBK3V6QyxDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQS91ekMsQ0FBd3h6QyxDQUFDLE9BQVEsMEJBQVQsQ0FBb0MsU0FBVSxtQkFBOUMsQ0FBeHh6QyxDQUEyMXpDLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQTMxekMsQ0FBODR6QyxDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQTk0ekMsQ0FBdTd6QyxDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQXY3ekMsQ0FBZyt6QyxDQUFDLE9BQVEsdUJBQVQsQ0FBaUMsU0FBVSxnQkFBM0MsQ0FBaCt6QyxDQUE2aDBDLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBN2gwQyxDQUF3azBDLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQXhrMEMsQ0FBdW4wQyxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQXZuMEMsQ0FBb3EwQyxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUFwcTBDLENBQTZ0MEMsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBN3QwQyxDQUFveDBDLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQXB4MEMsQ0FBMjAwQyxDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQTMwMEMsQ0FBbzMwQyxDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUFwMzBDLENBQSs2MEMsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBLzYwQyxDQUE4OTBDLENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBOTkwQyxDQUF1ZzFDLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBdmcxQyxDQUFrajFDLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQWxqMUMsQ0FBdW0xQyxDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUF2bTFDLENBQWtxMUMsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUFscTFDLENBQStzMUMsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBL3MxQyxDQUE4djFDLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQTl2MUMsQ0FBK3kxQyxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQS95MUMsQ0FBMDExQyxDQUFDLE9BQVEsWUFBVCxDQUFzQixTQUFVLEtBQWhDLENBQTExMUMsQ0FBaTQxQyxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUFqNDFDLENBQXM3MUMsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUF0NzFDLENBQSs5MUMsQ0FBQyxPQUFRLHNCQUFULENBQWdDLFNBQVUsZUFBMUMsQ0FBLzkxQyxDQUEwaDJDLENBQUMsT0FBUSwwQkFBVCxDQUFvQyxTQUFVLG1CQUE5QyxDQUExaDJDLENBQTZsMkMsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBN2wyQyxDQUE0bzJDLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBNW8yQyxDQUF1cjJDLENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQXZyMkMsQ0FBZ3YyQyxDQUFDLE9BQVEsdUJBQVQsQ0FBaUMsU0FBVSxnQkFBM0MsQ0FBaHYyQyxDQUE2eTJDLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQTd5MkMsQ0FBazIyQyxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUFsMjJDLENBQXE1MkMsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBcjUyQyxDQUFvODJDLENBQUMsT0FBUSx1QkFBVCxDQUFpQyxTQUFVLGdCQUEzQyxDQUFwODJDLENBQWlnM0MsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBamczQyxDQUEwajNDLENBQUMsT0FBUSwyQkFBVCxDQUFxQyxTQUFVLG9CQUEvQyxDQUExajNDLENBQStuM0MsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBL24zQyxDQUE4cTNDLENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBOXEzQyxDQUF1dDNDLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQXZ0M0MsQ0FBd3czQyxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUF4dzNDLENBQTJ6M0MsQ0FBQyxPQUFRLHdCQUFULENBQWtDLFNBQVUsaUJBQTVDLENBQTN6M0MsQ0FBMDMzQyxDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUExMzNDLENBQWk3M0MsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBajczQyxDQUF3KzNDLENBQUMsT0FBUSwwQkFBVCxDQUFvQyxTQUFVLG1CQUE5QyxDQUF4KzNDLENBQTJpNEMsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBM2k0QyxDQUFnbTRDLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQWhtNEMsQ0FBcXA0QyxDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUFycDRDLENBQTRzNEMsQ0FBQyxPQUFRLDJCQUFULENBQXFDLFNBQVUsb0JBQS9DLENBQTVzNEMsQ0FBaXg0QyxDQUFDLE9BQVEseUJBQVQsQ0FBbUMsU0FBVSxrQkFBN0MsQ0FBang0QyxDQUFrMTRDLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQWwxNEMsQ0FBcTQ0QyxDQUFDLE9BQVEsd0JBQVQsQ0FBa0MsU0FBVSxpQkFBNUMsQ0FBcjQ0QyxDQUFvODRDLENBQUMsT0FBUSxzQkFBVCxDQUFnQyxTQUFVLGVBQTFDLENBQXA4NEMsQ0FBKy80QyxDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUEvLzRDLENBQWdqNUMsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUFoajVDLENBQTJsNUMsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBM2w1QyxDQUFvcDVDLENBQUMsT0FBUSwyQkFBVCxDQUFxQyxTQUFVLG9CQUEvQyxDQUFwcDVDLENBQXl0NUMsQ0FBQyxPQUFRLHlCQUFULENBQW1DLFNBQVUsa0JBQTdDLENBQXp0NUMsQ0FBMHg1QyxDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUExeDVDLENBQWkxNUMsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBajE1QyxDQUFzNDVDLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQXQ0NUMsQ0FBMjc1QyxDQUFDLE9BQVEsd0JBQVQsQ0FBa0MsU0FBVSxpQkFBNUMsQ0FBMzc1QyxDQUEwLzVDLENBQUMsT0FBUSx3QkFBVCxDQUFrQyxTQUFVLGlCQUE1QyxDQUExLzVDLENBQXlqNkMsQ0FBQyxPQUFRLHlCQUFULENBQW1DLFNBQVUsa0JBQTdDLENBQXpqNkMsQ0FBMG42QyxDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUExbjZDLENBQXFyNkMsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBcnI2QyxDQUE4dTZDLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQTl1NkMsQ0FBaXk2QyxDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUFqeTZDLENBQTQxNkMsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBNTE2QyxDQUFpNTZDLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBajU2QyxDQUE0NzZDLENBQUMsT0FBUSxzQkFBVCxDQUFnQyxTQUFVLGVBQTFDLENBQTU3NkMsQ0FBdS82QyxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUF2LzZDLENBQTBpN0MsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBMWk3QyxDQUF5bDdDLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBemw3QyxDQUFzbzdDLENBQUMsT0FBUSxZQUFULENBQXNCLFNBQVUsS0FBaEMsQ0FBdG83QyxDQUE2cTdDLENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQTdxN0MsQ0FBNHQ3QyxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUE1dDdDLENBQWl4N0MsQ0FBQyxPQUFRLHVCQUFULENBQWlDLFNBQVUsZ0JBQTNDLENBQWp4N0MsQ0FBODA3QyxDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUE5MDdDLENBQTYzN0MsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUE3MzdDLENBQXc2N0MsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBeDY3QyxDQUEyOTdDLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQTM5N0MsQ0FBZ2g4QyxDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUFoaDhDLENBQXVrOEMsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBdms4QyxDQUFzbjhDLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQXRuOEMsQ0FBNnE4QyxDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQTdxOEMsQ0FBc3Q4QyxDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUF0dDhDLENBQXV3OEMsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBdnc4QyxDQUFnMDhDLENBQUMsT0FBUSx3QkFBVCxDQUFrQyxTQUFVLGlCQUE1QyxDQUFoMDhDLENBQSszOEMsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBLzM4QyxDQUE4NjhDLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBOTY4QyxDQUF5OThDLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQXo5OEMsQ0FBNGc5QyxDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUE1ZzlDLENBQXVrOUMsQ0FBQyxPQUFRLHVCQUFULENBQWlDLFNBQVUsZ0JBQTNDLENBQXZrOUMsQ0FBb285QyxDQUFDLE9BQVEsd0JBQVQsQ0FBa0MsU0FBVSxpQkFBNUMsQ0FBcG85QyxDQUFtczlDLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQW5zOUMsQ0FBb3Y5QyxDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUFwdjlDLENBQXF5OUMsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBcnk5QyxDQUFvMTlDLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQXAxOUMsQ0FBMjQ5QyxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQTM0OUMsQ0FBczc5QyxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQXQ3OUMsQ0FBbSs5QyxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQW4rOUMsQ0FBOGcrQyxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTlnK0MsQ0FBMmorQyxDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUEzaitDLENBQTRtK0MsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBNW0rQyxDQUE2cCtDLENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBN3ArQyxDQUFzcytDLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQXRzK0MsQ0FBNnYrQyxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTd2K0MsQ0FBMHkrQyxDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQTF5K0MsQ0FBbTErQyxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQW4xK0MsQ0FBODMrQyxDQUFDLE9BQVEsdUJBQVQsQ0FBaUMsU0FBVSxnQkFBM0MsQ0FBOTMrQyxDQUEyNytDLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBMzcrQyxDQUFzKytDLENBQUMsT0FBUSxZQUFULENBQXNCLFNBQVUsS0FBaEMsQ0FBdCsrQyxDQUE2Zy9DLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQTdnL0MsQ0FBOGovQyxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTlqL0MsQ0FBMm0vQyxDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQTNtL0MsQ0FBb3AvQyxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUFwcC9DLENBQXVzL0MsQ0FBQyxPQUFRLHdCQUFULENBQWtDLFNBQVUsaUJBQTVDLENBQXZzL0MsQ0FBc3cvQyxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUF0dy9DLENBQXl6L0MsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBenovQyxDQUEwMi9DLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQTEyL0MsQ0FBMjUvQyxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTM1L0MsQ0FBdzgvQyxDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUF4OC9DLENBQSsvL0MsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUEvLy9DLENBQTBpZ0QsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBMWlnRCxDQUErbGdELENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQS9sZ0QsQ0FBd3BnRCxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUF4cGdELENBQTZzZ0QsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBN3NnRCxDQUFvd2dELENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBcHdnRCxDQUE2eWdELENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBN3lnRCxDQUF3MWdELENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQXgxZ0QsQ0FBMjRnRCxDQUFDLE9BQVEsd0JBQVQsQ0FBa0MsU0FBVSxpQkFBNUMsQ0FBMzRnRCxDQUEwOGdELENBQUMsT0FBUSx1QkFBVCxDQUFpQyxTQUFVLGdCQUEzQyxDQUExOGdELENBQXVnaEQsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBdmdoRCxDQUFna2hELENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQWhraEQsQ0FBbW5oRCxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUFubmhELENBQXNxaEQsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUF0cWhELENBQStzaEQsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBL3NoRCxDQUFrd2hELENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBbHdoRCxDQUEyeWhELENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQTN5aEQsQ0FBNDFoRCxDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUE1MWhELENBQTI0aEQsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBMzRoRCxDQUEwN2hELENBQUMsT0FBUSx1QkFBVCxDQUFpQyxTQUFVLGdCQUEzQyxDQUExN2hELENBQXUvaEQsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUF2L2hELENBQWdpaUQsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBaGlpRCxDQUFtbGlELENBQUMsT0FBUSw0QkFBVCxDQUFzQyxTQUFVLHFCQUFoRCxDQUFubGlELENBQTBwaUQsQ0FBQyxPQUFRLDRCQUFULENBQXNDLFNBQVUscUJBQWhELENBQTFwaUQsQ0FBaXVpRCxDQUFDLE9BQVEsNkJBQVQsQ0FBdUMsU0FBVSxzQkFBakQsQ0FBanVpRCxDQUEweWlELENBQUMsT0FBUSwwQkFBVCxDQUFvQyxTQUFVLG1CQUE5QyxDQUExeWlELENBQTYyaUQsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBNzJpRCxDQUFrNmlELENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQWw2aUQsQ0FBMjlpRCxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQTM5aUQsQ0FBc2dqRCxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQXRnakQsQ0FBbWpqRCxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUFuampELENBQXNtakQsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUF0bWpELENBQStvakQsQ0FBQyxPQUFRLFlBQVQsQ0FBc0IsU0FBVSxLQUFoQyxDQUEvb2pELENBQXNyakQsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBdHJqRCxDQUEydWpELENBQUMsT0FBUSx1QkFBVCxDQUFpQyxTQUFVLGdCQUEzQyxDQUEzdWpELENBQXd5akQsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBeHlqRCxDQUE2MWpELENBQUMsT0FBUSx1QkFBVCxDQUFpQyxTQUFVLGdCQUEzQyxDQUE3MWpELENBQTA1akQsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBMTVqRCxDQUF5OGpELENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQXo4akQsQ0FBNC9qRCxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTUvakQsQ0FBeWlrRCxDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQXppa0QsQ0FBa2xrRCxDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUFsbGtELENBQXlva0QsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBem9rRCxDQUFnc2tELENBQUMsT0FBUSxzQkFBVCxDQUFnQyxTQUFVLGVBQTFDLENBQWhza0QsQ0FBMnZrRCxDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUEzdmtELENBQXN6a0QsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUF0emtELENBQWkya0QsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUFqMmtELENBQTg0a0QsQ0FBQyxPQUFRLFlBQVQsQ0FBc0IsU0FBVSxLQUFoQyxDQUE5NGtELENBQXE3a0QsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBcjdrRCxDQUF3K2tELENBQUMsT0FBUSx5QkFBVCxDQUFtQyxTQUFVLGtCQUE3QyxDQUF4K2tELENBQXlpbEQsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUF6aWxELENBQXNsbEQsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBdGxsRCxDQUFxb2xELENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQXJvbEQsQ0FBb3JsRCxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUFwcmxELENBQXV1bEQsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBdnVsRCxDQUE0eGxELENBQUMsT0FBUSx1QkFBVCxDQUFpQyxTQUFVLGdCQUEzQyxDQUE1eGxELENBQXkxbEQsQ0FBQyxPQUFRLDZCQUFULENBQXVDLFNBQVUsc0JBQWpELENBQXoxbEQsQ0FBazZsRCxDQUFDLE9BQVEseUJBQVQsQ0FBbUMsU0FBVSxrQkFBN0MsQ0FBbDZsRCxDQUFtK2xELENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQW4rbEQsQ0FBd2htRCxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQXhobUQsQ0FBbWttRCxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUFua21ELENBQTRubUQsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBNW5tRCxDQUFxcm1ELENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBcnJtRCxDQUFrdW1ELENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQWx1bUQsQ0FBdXhtRCxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUF2eG1ELENBQTQwbUQsQ0FBQyxPQUFRLHVCQUFULENBQWlDLFNBQVUsZ0JBQTNDLENBQTUwbUQsQ0FBeTRtRCxDQUFDLE9BQVEsd0JBQVQsQ0FBa0MsU0FBVSxpQkFBNUMsQ0FBejRtRCxDQUF3OG1ELENBQUMsT0FBUSw0QkFBVCxDQUFzQyxTQUFVLHFCQUFoRCxDQUF4OG1ELENBQStnbkQsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBL2duRCxDQUFza25ELENBQUMsT0FBUSx3QkFBVCxDQUFrQyxTQUFVLGlCQUE1QyxDQUF0a25ELENBQXFvbkQsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBcm9uRCxDQUFzcm5ELENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBdHJuRCxDQUErdG5ELENBQUMsT0FBUSxzQkFBVCxDQUFnQyxTQUFVLGVBQTFDLENBQS90bkQsQ0FBMHhuRCxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTF4bkQsQ0FBdTBuRCxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUF2MG5ELENBQTQzbkQsQ0FBQyxPQUFRLHNCQUFULENBQWdDLFNBQVUsZUFBMUMsQ0FBNTNuRCxDQUF1N25ELENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBdjduRCxDQUFrK25ELENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBbCtuRCxDQUErZ29ELENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQS9nb0QsQ0FBa2tvRCxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUFsa29ELENBQXFub0QsQ0FBQyxPQUFRLHNCQUFULENBQWdDLFNBQVUsZUFBMUMsQ0FBcm5vRCxDQUFncm9ELENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQWhyb0QsQ0FBeXVvRCxDQUFDLE9BQVEsdUJBQVQsQ0FBaUMsU0FBVSxnQkFBM0MsQ0FBenVvRCxDQUFzeW9ELENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQXR5b0QsQ0FBcTFvRCxDQUFDLE9BQVEsV0FBVCxDQUFxQixTQUFVLElBQS9CLENBQXIxb0QsQ0FBMDNvRCxDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUExM29ELENBQXk2b0QsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBejZvRCxDQUFnK29ELENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQWgrb0QsQ0FBeWhwRCxDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUF6aHBELENBQXdrcEQsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUF4a3BELENBQXFucEQsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBcm5wRCxDQUE0cXBELENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQTVxcEQsQ0FBK3RwRCxDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUEvdHBELENBQTB4cEQsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBMXhwRCxDQUE2MHBELENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQTcwcEQsQ0FBNDNwRCxDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUE1M3BELENBQTY2cEQsQ0FBQyxPQUFRLHVCQUFULENBQWlDLFNBQVUsZ0JBQTNDLENBQTc2cEQsQ0FBMCtwRCxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQTErcEQsQ0FBcWhxRCxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQXJocUQsQ0FBZ2txRCxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUFoa3FELENBQXlucUQsQ0FBQyxPQUFRLFlBQVQsQ0FBc0IsU0FBVSxLQUFoQyxDQUF6bnFELENBQWdxcUQsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUFocXFELENBQTJzcUQsQ0FBQyxPQUFRLFlBQVQsQ0FBc0IsU0FBVSxLQUFoQyxDQUEzc3FELENBQWt2cUQsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBbHZxRCxDQUFpeXFELENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQWp5cUQsQ0FBbzFxRCxDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUFwMXFELENBQW00cUQsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBbjRxRCxDQUF3N3FELENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQXg3cUQsQ0FBNitxRCxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUE3K3FELENBQXNpckQsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBdGlyRCxDQUErbHJELENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQS9sckQsQ0FBOG9yRCxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUE5b3JELENBQW1zckQsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUFuc3JELENBQTh1ckQsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBOXVyRCxDQUFxeXJELENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQXJ5ckQsQ0FBODFyRCxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUE5MXJELENBQXU1ckQsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBdjVyRCxDQUE0OHJELENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBNThyRCxDQUF1L3JELENBQUMsT0FBUSx5QkFBVCxDQUFtQyxTQUFVLGtCQUE3QyxDQUF2L3JELENBQXdqc0QsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUF4anNELENBQW1tc0QsQ0FBQyxPQUFRLHNCQUFULENBQWdDLFNBQVUsZUFBMUMsQ0FBbm1zRCxDQUE4cHNELENBQUMsT0FBUSx3QkFBVCxDQUFrQyxTQUFVLGlCQUE1QyxDQUE5cHNELENBQTZ0c0QsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUE3dHNELENBQXN3c0QsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBdHdzRCxDQUE2enNELENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBN3pzRCxDQUFzMnNELENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBdDJzRCxDQUErNHNELENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQS80c0QsQ0FBczhzRCxDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUF0OHNELENBQTYvc0QsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBNy9zRCxDQUE0aXRELENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBNWl0RCxDQUFxbHRELENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBcmx0RCxDQUFrb3RELENBQUMsT0FBUSxZQUFULENBQXNCLFNBQVUsS0FBaEMsQ0FBbG90RCxDQUF5cXRELENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBenF0RCxDQUFrdHRELENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQWx0dEQsQ0FBbXd0RCxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUFud3RELENBQXd6dEQsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBeHp0RCxDQUEyMnRELENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBMzJ0RCxDQUFvNXRELENBQUMsT0FBUSxzQkFBVCxDQUFnQyxTQUFVLGVBQTFDLENBQXA1dEQsQ0FBKzh0RCxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUEvOHRELENBQXdndUQsQ0FBQyxPQUFRLDRCQUFULENBQXNDLFNBQVUscUJBQWhELENBQXhndUQsQ0FBK2t1RCxDQUFDLE9BQVEsZ0NBQVQsQ0FBMEMsU0FBVSx5QkFBcEQsQ0FBL2t1RCxDQUE4cHVELENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBOXB1RCxDQUF5c3VELENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQXpzdUQsQ0FBOHZ1RCxDQUFDLE9BQVEsd0JBQVQsQ0FBa0MsU0FBVSxpQkFBNUMsQ0FBOXZ1RCxDQUE2enVELENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQTd6dUQsQ0FBczN1RCxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQXQzdUQsQ0FBbTZ1RCxDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUFuNnVELENBQW85dUQsQ0FBQyxPQUFRLHdCQUFULENBQWtDLFNBQVUsaUJBQTVDLENBQXA5dUQsQ0FBbWh2RCxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUFuaHZELENBQXNrdkQsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBdGt2RCxDQUEybnZELENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQTNudkQsQ0FBa3J2RCxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQWxydkQsQ0FBNnR2RCxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTd0dkQsQ0FBMHd2RCxDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUExd3ZELENBQXl6dkQsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBenp2RCxDQUF3MnZELENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBeDJ2RCxDQUFpNXZELENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQWo1dkQsQ0FBazh2RCxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUFsOHZELENBQXUvdkQsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUF2L3ZELENBQWtpd0QsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBbGl3RCxDQUFxbHdELENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQXJsd0QsQ0FBb293RCxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQXBvd0QsQ0FBaXJ3RCxDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQWpyd0QsQ0FBMHR3RCxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQTF0d0QsQ0FBcXd3RCxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQXJ3d0QsQ0FBa3p3RCxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQWx6d0QsQ0FBNjF3RCxDQUFDLE9BQVEsWUFBVCxDQUFzQixTQUFVLEtBQWhDLENBQTcxd0QsQ0FBbzR3RCxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUFwNHdELENBQXk3d0QsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBejd3RCxDQUE4K3dELENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBOSt3RCxDQUF5aHhELENBQUMsT0FBUSx1QkFBVCxDQUFpQyxTQUFVLGdCQUEzQyxDQUF6aHhELENBQXNseEQsQ0FBQyxPQUFRLHlCQUFULENBQW1DLFNBQVUsa0JBQTdDLENBQXRseEQsQ0FBdXB4RCxDQUFDLE9BQVEsdUJBQVQsQ0FBaUMsU0FBVSxnQkFBM0MsQ0FBdnB4RCxDQUFvdHhELENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQXB0eEQsQ0FBeXd4RCxDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUF6d3hELENBQXd6eEQsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBeHp4RCxDQUF5MnhELENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBejJ4RCxDQUFrNXhELENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBbDV4RCxDQUErN3hELENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQS83eEQsQ0FBcy94RCxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQXQveEQsQ0FBbWl5RCxDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUFuaXlELENBQThseUQsQ0FBQyxPQUFRLHdCQUFULENBQWtDLFNBQVUsaUJBQTVDLENBQTlseUQsQ0FBNnB5RCxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUE3cHlELENBQXN0eUQsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBdHR5RCxDQUE2d3lELENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQTd3eUQsQ0FBOHp5RCxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTl6eUQsQ0FBMjJ5RCxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTMyeUQsQ0FBdzV5RCxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQXg1eUQsQ0FBbTh5RCxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUFuOHlELENBQXMveUQsQ0FBQyxPQUFRLHlCQUFULENBQW1DLFNBQVUsa0JBQTdDLENBQXQveUQsQ0FBdWp6RCxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUF2anpELENBQWduekQsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBaG56RCxDQUF1cXpELENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQXZxekQsQ0FBNHR6RCxDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQTV0ekQsQ0FBcXd6RCxDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUFyd3pELENBQWcwekQsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBaDB6RCxDQUF1M3pELENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQXYzekQsQ0FBZzd6RCxDQUFDLE9BQVEsd0JBQVQsQ0FBa0MsU0FBVSxpQkFBNUMsQ0FBaDd6RCxDQUErK3pELENBQUMsT0FBUSxzQkFBVCxDQUFnQyxTQUFVLGVBQTFDLENBQS8rekQsQ0FBMGkwRCxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTFpMEQsQ0FBdWwwRCxDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUF2bDBELENBQThvMEQsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUE5bzBELENBQXVyMEQsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBdnIwRCxDQUE4dTBELENBQUMsT0FBUSxzQkFBVCxDQUFnQyxTQUFVLGVBQTFDLENBQTl1MEQsQ0FBeXkwRCxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUF6eTBELENBQWsyMEQsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUFsMjBELENBQSs0MEQsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBLzQwRCxDQUFrODBELENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQWw4MEQsQ0FBaS8wRCxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQWovMEQsQ0FBNGgxRCxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUE1aDFELENBQStrMUQsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUEvazFELENBQTBuMUQsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBMW4xRCxDQUErcTFELENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQS9xMUQsQ0FBb3UxRCxDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUFwdTFELENBQW14MUQsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBbngxRCxDQUEwMDFELENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQTEwMUQsQ0FBNjMxRCxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQTczMUQsQ0FBdzYxRCxDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUF4NjFELENBQSs5MUQsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUEvOTFELENBQXdnMkQsQ0FBQyxPQUFRLHdCQUFULENBQWtDLFNBQVUsaUJBQTVDLENBQXhnMkQsQ0FBdWsyRCxDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUF2azJELENBQWtvMkQsQ0FBQyxPQUFRLHlCQUFULENBQW1DLFNBQVUsa0JBQTdDLENBQWxvMkQsQ0FBbXMyRCxDQUFDLE9BQVEsdUJBQVQsQ0FBaUMsU0FBVSxnQkFBM0MsQ0FBbnMyRCxDQUFndzJELENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQWh3MkQsQ0FBbXoyRCxDQUFDLE9BQVEsMEJBQVQsQ0FBb0MsU0FBVSxtQkFBOUMsQ0FBbnoyRCxDQUFzMzJELENBQUMsT0FBUSx3QkFBVCxDQUFrQyxTQUFVLGlCQUE1QyxDQUF0MzJELENBQXE3MkQsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBcjcyRCxDQUFvKzJELENBQUMsT0FBUSxZQUFULENBQXNCLFNBQVUsS0FBaEMsQ0FBcCsyRCxDQUEyZzNELENBQUMsT0FBUSxzQkFBVCxDQUFnQyxTQUFVLGVBQTFDLENBQTNnM0QsQ0FBc2szRCxDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUF0azNELENBQXFuM0QsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBcm4zRCxDQUFvcTNELENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQXBxM0QsQ0FBdXQzRCxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQXZ0M0QsQ0FBb3czRCxDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUFwdzNELENBQTJ6M0QsQ0FBQyxPQUFRLHdCQUFULENBQWtDLFNBQVUsaUJBQTVDLENBQTN6M0QsQ0FBMDMzRCxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQTEzM0QsQ0FBcTYzRCxDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQXI2M0QsQ0FBODgzRCxDQUFDLE9BQVEsMEJBQVQsQ0FBb0MsU0FBVSxtQkFBOUMsQ0FBOTgzRCxDQUFpaDRELENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQWpoNEQsQ0FBb2s0RCxDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUFwazRELENBQStuNEQsQ0FBQyxPQUFRLHNCQUFULENBQWdDLFNBQVUsZUFBMUMsQ0FBL240RCxDQUEwcjRELENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQTFyNEQsQ0FBbXY0RCxDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUFudjRELENBQTh5NEQsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBOXk0RCxDQUF1MjRELENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQXYyNEQsQ0FBODU0RCxDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUE5NTRELENBQXE5NEQsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUFyOTRELENBQTgvNEQsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBOS80RCxDQUFxajVELENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQXJqNUQsQ0FBd201RCxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQXhtNUQsQ0FBbXA1RCxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUFucDVELENBQXNzNUQsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUF0czVELENBQW12NUQsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBbnY1RCxDQUEweTVELENBQUMsT0FBUSxzQkFBVCxDQUFnQyxTQUFVLGVBQTFDLENBQTF5NUQsQ0FBcTI1RCxDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUFyMjVELENBQTQ1NUQsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBNTU1RCxDQUErODVELENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBLzg1RCxDQUE0LzVELENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQTUvNUQsQ0FBNmk2RCxDQUFDLE9BQVEseUJBQVQsQ0FBbUMsU0FBVSxrQkFBN0MsQ0FBN2k2RCxDQUE4bTZELENBQUMsT0FBUSxZQUFULENBQXNCLFNBQVUsS0FBaEMsQ0FBOW02RCxDQUFxcDZELENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQXJwNkQsQ0FBNHM2RCxDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUE1czZELENBQTZ2NkQsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBN3Y2RCxDQUFrejZELENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQWx6NkQsQ0FBaTI2RCxDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUFqMjZELENBQTQ1NkQsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBNTU2RCxDQUErODZELENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBLzg2RCxDQUF3LzZELENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQXgvNkQsQ0FBeWk3RCxDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUF6aTdELENBQXdsN0QsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUF4bDdELENBQW1vN0QsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBbm83RCxDQUE0cjdELENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBNXI3RCxDQUF5dTdELENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQXp1N0QsQ0FBOHg3RCxDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUE5eDdELENBQTYwN0QsQ0FBQyxPQUFRLHVCQUFULENBQWlDLFNBQVUsZ0JBQTNDLENBQTcwN0QsQ0FBMDQ3RCxDQUFDLE9BQVEsWUFBVCxDQUFzQixTQUFVLEtBQWhDLENBQTE0N0QsQ0FBaTc3RCxDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQWo3N0QsQ0FBMDk3RCxDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQTE5N0QsQ0FBbWc4RCxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQW5nOEQsQ0FBOGk4RCxDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQTlpOEQsQ0FBdWw4RCxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQXZsOEQsQ0FBa284RCxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUFsbzhELENBQXVyOEQsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBdnI4RCxDQUF3dThELENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQXh1OEQsQ0FBK3g4RCxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUEveDhELENBQW8xOEQsQ0FBQyxPQUFRLFdBQVQsQ0FBcUIsU0FBVSxJQUEvQixDQUFwMThELENBQXkzOEQsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBejM4RCxDQUEwNjhELENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQTE2OEQsQ0FBeTk4RCxDQUFDLE9BQVEsc0JBQVQsQ0FBZ0MsU0FBVSxlQUExQyxDQUF6OThELENBQW9oOUQsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBcGg5RCxDQUEyazlELENBQUMsT0FBUSwwQkFBVCxDQUFvQyxTQUFVLG1CQUE5QyxDQUEzazlELENBQThvOUQsQ0FBQyxPQUFRLHlCQUFULENBQW1DLFNBQVUsa0JBQTdDLENBQTlvOUQsQ0FBK3M5RCxDQUFDLE9BQVEseUJBQVQsQ0FBbUMsU0FBVSxrQkFBN0MsQ0FBL3M5RCxDQUFneDlELENBQUMsT0FBUSw0QkFBVCxDQUFzQyxTQUFVLHFCQUFoRCxDQUFoeDlELENBQXUxOUQsQ0FBQyxPQUFRLG1DQUFULENBQTZDLFNBQVUsNEJBQXZELENBQXYxOUQsQ0FBNDY5RCxDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUE1NjlELENBQW0rOUQsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBbis5RCxDQUFzaCtELENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQXRoK0QsQ0FBeWsrRCxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUF6aytELENBQThuK0QsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUE5bitELENBQXlxK0QsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBenErRCxDQUFrdStELENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBbHUrRCxDQUEydytELENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQTN3K0QsQ0FBZzArRCxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQWgwK0QsQ0FBMjIrRCxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUEzMitELENBQWc2K0QsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBaDYrRCxDQUFtOStELENBQUMsT0FBUSxnQkFBVCxDQUEwQixTQUFVLFNBQXBDLENBQW45K0QsQ0FBa2cvRCxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQWxnL0QsQ0FBNmkvRCxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQTdpL0QsQ0FBd2wvRCxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUF4bC9ELENBQTZvL0QsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBN28vRCxDQUFncy9ELENBQUMsT0FBUSxzQkFBVCxDQUFnQyxTQUFVLGVBQTFDLENBQWhzL0QsQ0FBMnYvRCxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQTN2L0QsQ0FBc3kvRCxDQUFDLE9BQVEsb0JBQVQsQ0FBOEIsU0FBVSxhQUF4QyxDQUF0eS9ELENBQTYxL0QsQ0FBQyxPQUFRLHdCQUFULENBQWtDLFNBQVUsaUJBQTVDLENBQTcxL0QsQ0FBNDUvRCxDQUFDLE9BQVEsY0FBVCxDQUF3QixTQUFVLE9BQWxDLENBQTU1L0QsQ0FBdTgvRCxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUF2OC9ELENBQTAvL0QsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUExLy9ELENBQW1pZ0UsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUFuaWdFLENBQWdsZ0UsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUFobGdFLENBQTJuZ0UsQ0FBQyxPQUFRLHNCQUFULENBQWdDLFNBQVUsZUFBMUMsQ0FBM25nRSxDQUFzcmdFLENBQUMsT0FBUSxzQkFBVCxDQUFnQyxTQUFVLGVBQTFDLENBQXRyZ0UsQ0FBaXZnRSxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUFqdmdFLENBQTB5Z0UsQ0FBQyxPQUFRLHFCQUFULENBQStCLFNBQVUsY0FBekMsQ0FBMXlnRSxDQUFtMmdFLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBbjJnRSxDQUFnNWdFLENBQUMsT0FBUSxZQUFULENBQXNCLFNBQVUsS0FBaEMsQ0FBaDVnRSxDQUF1N2dFLENBQUMsT0FBUSxXQUFULENBQXFCLFNBQVUsSUFBL0IsQ0FBdjdnRSxDQUE0OWdFLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQTU5Z0UsQ0FBNmdoRSxDQUFDLE9BQVEsdUJBQVQsQ0FBaUMsU0FBVSxnQkFBM0MsQ0FBN2doRSxDQUEwa2hFLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQTFraEUsQ0FBNm5oRSxDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQTduaEUsQ0FBc3FoRSxDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUF0cWhFLENBQXV0aEUsQ0FBQyxPQUFRLHlCQUFULENBQW1DLFNBQVUsa0JBQTdDLENBQXZ0aEUsQ0FBd3hoRSxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUF4eGhFLENBQTYwaEUsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUE3MGhFLENBQTAzaEUsQ0FBQyxPQUFRLGVBQVQsQ0FBeUIsU0FBVSxRQUFuQyxDQUExM2hFLENBQXU2aEUsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBdjZoRSxDQUE0OWhFLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBNTloRSxDQUF5Z2lFLENBQUMsT0FBUSxhQUFULENBQXVCLFNBQVUsTUFBakMsQ0FBemdpRSxDQUFramlFLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQWxqaUUsQ0FBbW1pRSxDQUFDLE9BQVEsdUJBQVQsQ0FBaUMsU0FBVSxnQkFBM0MsQ0FBbm1pRSxDQUFncWlFLENBQUMsT0FBUSx1QkFBVCxDQUFpQyxTQUFVLGdCQUEzQyxDQUFocWlFLENBQTZ0aUUsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBN3RpRSxDQUFreGlFLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQWx4aUUsQ0FBeTBpRSxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUF6MGlFLENBQTgzaUUsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBOTNpRSxDQUErNmlFLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQS82aUUsQ0FBaytpRSxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUFsK2lFLENBQTJoakUsQ0FBQyxPQUFRLHNCQUFULENBQWdDLFNBQVUsZUFBMUMsQ0FBM2hqRSxDQUFzbGpFLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQXRsakUsQ0FBeW9qRSxDQUFDLE9BQVEsZ0JBQVQsQ0FBMEIsU0FBVSxTQUFwQyxDQUF6b2pFLENBQXdyakUsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBeHJqRSxDQUE2dWpFLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQTd1akUsQ0FBa3lqRSxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUFseWpFLENBQXExakUsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBcjFqRSxDQUE0NGpFLENBQUMsT0FBUSxvQkFBVCxDQUE4QixTQUFVLGFBQXhDLENBQTU0akUsQ0FBbThqRSxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUFuOGpFLENBQXcvakUsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBeC9qRSxDQUF5aWtFLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQXppa0UsQ0FBMGxrRSxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUExbGtFLENBQStva0UsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUEvb2tFLENBQTBya0UsQ0FBQyxPQUFRLGtCQUFULENBQTRCLFNBQVUsV0FBdEMsQ0FBMXJrRSxDQUE2dWtFLENBQUMsT0FBUSxzQkFBVCxDQUFnQyxTQUFVLGVBQTFDLENBQTd1a0UsQ0FBd3lrRSxDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUF4eWtFLENBQXkxa0UsQ0FBQyxPQUFRLHNCQUFULENBQWdDLFNBQVUsZUFBMUMsQ0FBejFrRSxDQUFvNWtFLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBcDVrRSxDQUErN2tFLENBQUMsT0FBUSxxQkFBVCxDQUErQixTQUFVLGNBQXpDLENBQS83a0UsQ0FBdy9rRSxDQUFDLE9BQVEsbUJBQVQsQ0FBNkIsU0FBVSxZQUF2QyxDQUF4L2tFLENBQTZpbEUsQ0FBQyxPQUFRLGFBQVQsQ0FBdUIsU0FBVSxNQUFqQyxDQUE3aWxFLENBQXNsbEUsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUF0bGxFLENBQWlvbEUsQ0FBQyxPQUFRLGNBQVQsQ0FBd0IsU0FBVSxPQUFsQyxDQUFqb2xFLENBQTRxbEUsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBNXFsRSxDQUFtdWxFLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBbnVsRSxDQUFneGxFLENBQUMsT0FBUSx3QkFBVCxDQUFrQyxTQUFVLGlCQUE1QyxDQUFoeGxFLENBQSswbEUsQ0FBQyxPQUFRLG9CQUFULENBQThCLFNBQVUsYUFBeEMsQ0FBLzBsRSxDQUFzNGxFLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQXQ0bEUsQ0FBMjdsRSxDQUFDLE9BQVEsa0JBQVQsQ0FBNEIsU0FBVSxXQUF0QyxDQUEzN2xFLENBQTgrbEUsQ0FBQyxPQUFRLGdCQUFULENBQTBCLFNBQVUsU0FBcEMsQ0FBOStsRSxDQUE2aG1FLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBN2htRSxDQUEwa21FLENBQUMsT0FBUSxrQkFBVCxDQUE0QixTQUFVLFdBQXRDLENBQTFrbUUsQ0FBNm5tRSxDQUFDLE9BQVEsZUFBVCxDQUF5QixTQUFVLFFBQW5DLENBQTdubUUsQ0FBMHFtRSxDQUFDLE9BQVEsdUJBQVQsQ0FBaUMsU0FBVSxnQkFBM0MsQ0FBMXFtRSxDQUF1dW1FLENBQUMsT0FBUSxtQkFBVCxDQUE2QixTQUFVLFlBQXZDLENBQXZ1bUUsQ0FBNHhtRSxDQUFDLE9BQVEsYUFBVCxDQUF1QixTQUFVLE1BQWpDLENBQTV4bUUsQ0FBcTBtRSxDQUFDLE9BQVEscUJBQVQsQ0FBK0IsU0FBVSxjQUF6QyxDQUFyMG1FLENBQTgzbUUsQ0FBQyxPQUFRLHdCQUFULENBQWtDLFNBQVUsaUJBQTVDLENBQTkzbUUsQ0FBNjdtRSxDQUFDLE9BQVEsd0JBQVQsQ0FBa0MsU0FBVSxpQkFBNUMsQ0FBNzdtRSxDQUE0L21FLENBQUMsT0FBUSx1QkFBVCxDQUFpQyxTQUFVLGdCQUEzQyxDQUE1L21FLENBQXlqbkUsQ0FBQyxPQUFRLG1CQUFULENBQTZCLFNBQVUsWUFBdkMsQ0FBempuRSxDQUE4bW5FLENBQUMsT0FBUSx1QkFBVCxDQUFpQyxTQUFVLGdCQUEzQyxDQUE5bW5FLENBQTJxbkUsQ0FBQyxPQUFRLGlCQUFULENBQTJCLFNBQVUsVUFBckMsQ0FBM3FuRSxDQUE0dG5FLENBQUMsT0FBUSxlQUFULENBQXlCLFNBQVUsUUFBbkMsQ0FBNXRuRSxDQUF5d25FLENBQUMsT0FBUSxjQUFULENBQXdCLFNBQVUsT0FBbEMsQ0FBenduRSxDQUFvem5FLENBQUMsT0FBUSxpQkFBVCxDQUEyQixTQUFVLFVBQXJDLENBQXB6bkUsQ0FBcTJuRSxDQUFDLE9BQVEsaUJBQVQsQ0FBMkIsU0FBVSxVQUFyQyxDQUFyMm5FLENBQWhCLENBRUosQ0FORSxDQVFGLFdBQVcsQ0FBRSx3Q0FSWCxDQVNYLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FFdkIsS0FBSyxDQUFDLElBQU4sQ0FBVyxjQUFYLENBQ0EsS0FBSyxDQUFDLGFBQU4sQ0FBb0IsRUFBcEIsQ0FDQSxLQUFLLENBQUMsV0FBTixDQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFSLENBQWEsY0FBYyxDQUFDLEtBQTVCLENBQWxCLENBQ0EsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsS0FBaEIsQ0FDQSxLQUFLLENBQUMsV0FBTixDQUFrQixLQUFsQixDQUNBLEtBQUssQ0FBQyxXQUFOLENBQWtCLEtBQWxCLENBSUEsS0FBSyxDQUFDLFVBQU4sQ0FBbUIsVUFBWSxDQUMxQixLQUFLLENBQUMsWUFBTixDQUFtQixJQUFuQixDQUNmLEtBQUssQ0FBQyxjQUFOLENBQXFCLElBQXJCLENBQ1csQ0FIRCxDQU1BLEtBQUssQ0FBQyxhQUFOLENBQXNCLFNBQVUsS0FBVixDQUFpQixDQUNoQyxHQUFJLEtBQUosQ0FBVyxDQUM1QixLQUFLLENBQUMsYUFBTixDQUFzQixLQUFLLENBQUMsS0FBNUIsQ0FDQSxLQUFLLENBQUMsV0FBTixDQUFvQixJQUFwQixDQUNrQixDQUhELElBR08sQ0FDTixDQUNILEtBQUssQ0FBQyxTQUFOLENBQWdCLEtBQWhCLENBQ0EsS0FBSyxDQUFDLFdBQU4sQ0FBa0IsS0FBbEIsQ0FDQSxLQUFLLENBQUMsV0FBTixDQUFrQixNQUFsQixDQUF5QixFQUF6QixDQUNKLENBVEQsQ0FZQztBQUNBLEtBQUssQ0FBQyxVQUFOLENBQW1CLFNBQVUsRUFBVixDQUFjLENBQzdCLEtBQUssQ0FBQyxZQUFOLENBQW1CLEVBQUUsQ0FBQyxJQUF0QixDQUNKLENBRkEsQ0FLRDtBQUNDLEtBQUssQ0FBQyxXQUFOLENBQW9CLFNBQVUsRUFBVixDQUFjLENBQzlCLEtBQUssQ0FBQyxjQUFOLENBQXFCLEVBQXJCLENBQ0osQ0FGQSxDQUtBLEtBQUssQ0FBQyxlQUFOLENBQXdCLFNBQVUsS0FBVixDQUFpQixDQUNyQyxLQUFLLENBQUMsV0FBTixDQUFrQixLQUFsQixDQUNKLENBRkEsQ0FNQyxLQUFLLENBQUMsV0FBTixDQUFvQixVQUFZLENBQzVCO0FBQ0gsR0FBSSxDQUFBLE1BQU0sQ0FBRSxnQ0FBWixDQUE4QztBQUM5QyxHQUFJLEtBQUssQ0FBQyxjQUFOLEVBQXNCLEVBQXRCLEVBQTRCLEtBQUssQ0FBQyxjQUFOLEVBQXNCLFNBQXRELENBQWtFLENBQzlELE1BQU0sQ0FBRyxLQUFLLENBQUMsY0FBTixDQUFxQixhQUE5QixDQUNILENBQ0csTUFBTyxDQUFBLE1BQVAsQ0FDTixDQVBDLENBVUYsS0FBSyxDQUFDLFFBQU4sQ0FBaUIsVUFBWSxDQUN6QixLQUFLLENBQUMsU0FBTixDQUFnQixJQUFoQixDQUNBLEtBQUssQ0FBQyxXQUFOLENBQWtCLEtBQWxCLENBQ0gsQ0FIRCxDQUtBLEtBQUssQ0FBQyxPQUFOLENBQWUsVUFBWSxDQUN2QixLQUFLLENBQUMsU0FBTixDQUFnQixJQUFoQixDQUNBLEtBQUssQ0FBQyxXQUFOLENBQWtCLElBQWxCLENBQ0EsT0FBTyxDQUFDLEdBQVIsQ0FBWSxhQUFaLEVBQ0YsQ0FKRixDQU1ELEtBQUssQ0FBQyxVQUFOLENBQW1CLFVBQVksQ0FDMUIsS0FBSyxDQUFDLFdBQU4sQ0FBa0IsSUFBbEIsQ0FDQSxLQUFLLENBQUMsU0FBTixDQUFnQixLQUFoQixDQUNBO0FBQ0gsQ0FKRixDQU9BLEtBQUssQ0FBQyxRQUFOLENBQWlCLFNBQVMsUUFBVCxDQUF1QixDQUNoQyxHQUFJLFFBQVEsQ0FBQyxPQUFULENBQWlCLEtBQUssQ0FBQyxXQUFOLENBQWtCLE1BQW5DLElBQThDLENBQUMsQ0FBbkQsQ0FBc0QsQ0FDOUMsTUFBTyxLQUFQLENBQWE7QUFDaEIsQ0FDRCxNQUFPLE1BQVAsQ0FBYztBQUNqQixDQUxULENBT0EsS0FBSyxDQUFDLFFBQU4sQ0FBZSxVQUFXLENBQ3RCLEtBQUssQ0FBQyxXQUFOLENBQWtCLEtBQWxCLENBQ0QsQ0FGSCxDQU1BLEtBQUssQ0FBQyxrQkFBTixDQUF5QixVQUFZLENBQ2pDLE1BQVEsQ0FBQSxLQUFLLENBQUMsV0FBTixDQUFrQixjQUExQixDQUNELENBRkgsQ0FJQSxLQUFLLENBQUMsY0FBTixDQUFxQixVQUFZLENBQzFCLEtBQUssQ0FBQyxhQUFOLENBQW9CLEVBQXBCLENBQ0csSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQU4sQ0FBWSxNQUEzQixDQUFrQyxDQUFDLEVBQW5DLENBQXdDLENBQ25DLEdBQUksS0FBSyxDQUFDLEtBQU4sQ0FBWSxDQUFaLEVBQWUsTUFBZixDQUFzQixPQUF0QixDQUE4QixLQUFLLENBQUMsV0FBTixDQUFrQixNQUFoRCxJQUEyRCxDQUFDLENBQWhFLENBQ0ssS0FBSyxDQUFDLGFBQU4sQ0FBb0IsSUFBcEIsQ0FBeUIsS0FBSyxDQUFDLEtBQU4sQ0FBWSxDQUFaLENBQXpCLEVBQ1QsQ0FDVixDQU5ELENBVUYsQ0EvR0MsQ0FnSEYsS0FBSyxDQUFDLENBQ0QsWUFBWSxDQUFDLEdBRFosQ0FFRCxLQUFLLENBQUMsSUFGTCxDQUdiLFdBQVcsQ0FBQyxJQUhDLENBSUQsY0FBYyxDQUFDLEdBSmQsQ0FLRCxRQUFRLENBQUMsR0FMUixDQU1ELFdBQVcsQ0FBQyxHQU5YLENBT0QsWUFBWSxDQUFDLEdBUFosQ0FRRCxRQUFRLENBQUMsR0FSUixDQVNELFNBQVMsQ0FBQyxHQVRULENBVUQsV0FBVyxDQUFDLEdBVlgsQ0FXRCxVQUFVLENBQUMsR0FYVixDQWhISixDQUFQLENBZ0lQLEVBQ0QsYUFFTyxRQUFTLENBQUEsT0FBVCxFQUFvQixDQUMxQixNQUFPLENBQ0YsUUFBUSxDQUFFLEdBRFIsQ0FHTCxVQUFVLENBQUUsb0JBQVUsTUFBVixDQUFpQixVQUFqQixDQUE0QixlQUE1QixDQUE0QyxnQkFBNUMsQ0FBOEQsb0JBQTlELENBQW1GLG1CQUFuRixDQUF1Ryx5QkFBdkcsQ0FDWiw2SEFDRCxNQUFNLENBQUMsRUFBUCxDQUFVLFFBQVYsQ0FBbUIsRUFBbkIsQ0FFTSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixFQUFxQixTQUF6QixDQUFvQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsRUFBcEIsQ0FFcEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQStCLEtBQS9CLENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLFVBQVUsQ0FDM0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQWdDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUErQixLQUEvQixDQUFzQyxJQUF0RSxDQUNILENBRkQsQ0FJTixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTRDLFNBQVUsU0FBVixDQUFxQixHQUFyQixDQUM1QyxDQUNDLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUExQixDQUFpQyxDQUFDLEVBQWxDLENBQXFDLENBQ3BDLFNBQVMsQ0FBQyxDQUFELENBQVQsQ0FBZSxDQUNkLEVBQUUsQ0FBRSxTQUFTLENBQUMsQ0FBRCxDQUFULENBQWEsV0FBYSxHQUFiLENBQW1CLEtBQWhDLENBRFUsQ0FFZCxJQUFJLENBQUUsU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLFdBQWEsR0FBYixDQUFtQixXQUFoQyxDQUZRLENBR0MsSUFBSSxDQUFFLFNBQVMsQ0FBQyxDQUFELENBQVQsQ0FBYSxXQUFhLEdBQWIsQ0FBbUIsT0FBaEMsQ0FIUCxDQUFmLENBS0EsQ0FDRCxDQVRELENBV0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG1CQUFwQixxRUFBMEMsdVBBRXhCLENBQUEsb0JBQW9CLENBQUMsb0JBQXJCLDBCQUEwQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsU0FBL0Qsa0RBQTBDLHdCQUFnQyxFQUExRSxDQUZ3QixRQUVyQyxJQUZxQyxnQkFHekMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixDQUEyQyxJQUFJLENBQUMsSUFBaEQsMEJBQXNELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixTQUEzRSxrREFBc0Qsd0JBQWdDLEVBQXRGLEVBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWtDLElBQUksQ0FBQyxJQUF2QyxDQUNTLEdBQUksMEJBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLE1BQXJCLDBFQUE2QixNQUE3QixFQUFvQyxDQUF4QyxDQUNBLENBRUMsR0FBRyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxHQUFoQyxDQUFvQyxTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsSUFBVCxDQUFlLENBQWpFLEVBQW1FLE9BQW5FLENBQTJFLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixNQUFoRyxDQUFOLENBQ0EsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFZLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsR0FBaEMsQ0FBckMsQ0FDWixDQVYrQix3REFBMUMsR0FhQSxHQUFLLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUExQiwyQkFBNkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUF2RCw0Q0FBNkMsd0JBQXNCLE1BQW5FLDJCQUE4RSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsU0FBbkcsNENBQThFLHdCQUFnQyxFQUFuSCxDQUF1SCxDQUVySCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsbUJBQXBCLEdBRUQsQ0FHRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsMEZBQW1DLGtCQUFnQixRQUFoQixpSUFBMkI7QUFDekQsRUFEOEIsQ0FDekIsUUFBUSxDQUFDLEVBRGdCLENBQ2Q7QUFEYyx1QkFFakIsQ0FBQSxvQkFBb0IsQ0FBQyxvQkFBckIsQ0FBMEMsRUFBMUMsQ0FGaUIsUUFFOUIsSUFGOEIsZ0JBR2xDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBMkMsSUFBSSxDQUFDLElBQWhELENBQXNELFFBQVEsQ0FBQyxFQUEvRCxFQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFrQyxJQUFJLENBQUMsSUFBdkMsQ0FKa0Msd0RBQW5DLGlFQVFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBMEMsU0FBVSxRQUFWLENBQW9CLENBQzFELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixNQUFyQixDQUE4QixRQUFRLENBQUMsSUFBdkMsQ0FDSCxDQUZELENBTU8sTUFBTSxDQUFDLE1BQVAsQ0FBZ0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBQTFDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQXBCLENBQXFDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixZQUEvRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUE2QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsU0FBdkQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFdBQTFELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixnQkFBL0QsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBcEIsQ0FBb0MsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQTlELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUEvRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBdUMsQ0FBdkMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsQ0FBNEIsQ0FBNUIsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixFQUFvQyxTQUF4QyxDQUFtRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBcUMsS0FBckMsQ0FDbkQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsRUFBb0MsU0FBeEMsQ0FBbUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW9DLENBQXBDLENBQ25ELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQXBCLEVBQW1DLFNBQXZDLENBQWtELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFtQyxDQUFuQyxDQUNsRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixFQUFtQyxTQUF2QyxDQUFrRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBcEIsQ0FBbUMsQ0FBbkMsQ0FDekQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsRUFBcUIsU0FBekIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLEVBQXBCLENBRS9CLEdBQUksQ0FBQSxnQkFBZ0IsQ0FBRyxDQUFDLElBQUksQ0FBRSxTQUFQLENBQWlCLFFBQVEsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXJDLENBQW9ELE1BQU0sQ0FBRyxNQUFNLENBQUMsTUFBcEUsQ0FDdkIsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBRGQsQ0FDNkIsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQURqRSxDQUF2QixDQUVBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFvQyx5QkFBeUIsQ0FBQyxjQUExQixDQUF5QyxnQkFBekMsQ0FBcEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsT0FBcEIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQWhELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUF0QyxDQUdBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUErQixLQUEvQixDQUVDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFxQyxVQUFVLENBQzNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUFnQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBK0IsS0FBL0IsQ0FBc0MsSUFBdEUsQ0FDSCxDQUZELENBS0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQStCLFNBQVMsSUFBVCxDQUFjLElBQWQsQ0FBbUIsS0FBbkIsQ0FBeUIsR0FBekIsQ0FDL0IsQ0FDSSxlQUFlLENBQUMsUUFBaEIsQ0FBeUIsSUFBekIsQ0FBOEIsSUFBOUIsQ0FBbUMsS0FBbkMsRUFDQyxHQUFJLEdBQUosQ0FBUyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixHQUE1QixDQUFnQyxNQUFoQyxFQUNiLENBSkQsQ0FNQSxNQUFNLENBQUMsR0FBUCxDQUFXLG1CQUFYLENBRWE7QUFDckI7QUFDQSw2RkFDb0IsR0FBSSxDQUFBLG1CQUFtQixDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBcEMsQ0FDQSxHQUFJLENBQUEsb0JBQW9CLENBQUcsc0JBQXNCLE1BQU0sQ0FBQyxNQUE3QixDQUFvQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsU0FBekYsQ0FDQSxHQUFJLENBQUEsb0JBQUosQ0FDQSxHQUFJLENBQUEsdUJBQXVCLENBQUcsUUFBMUIsQ0FBQSx1QkFBMEIsQ0FBUyxJQUFULENBQWUsQ0FDekMsR0FBSSxDQUFBLGVBQWUsQ0FBRyxPQUFPLENBQUMsSUFBUixDQUFhLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBdkIsQ0FBdEIsQ0FDQSxHQUFJLElBQUksQ0FBQyxlQUFELENBQUosR0FBd0IsU0FBNUIsQ0FDQSxDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUEyQixJQUFJLENBQUMsZUFBRCxDQUEvQixDQUNKO0FBQ0Esb0JBQW9CLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFqQyxDQUNBLEdBQUksQ0FBQSxZQUFZLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLG9CQUFyQixDQUEwQyxvQkFBMUMsQ0FBK0QsV0FBL0QsQ0FBMkUsdUJBQTNFLENBQW5CLENBQ0MsQ0FDSixDQVRELENBVUEsR0FBSSxDQUFBLHNCQUFzQixDQUFHLFFBQXpCLENBQUEsc0JBQXlCLENBQVMsSUFBVCxDQUFlLENBQ3hDLEdBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBWCxDQUFKLENBQXdCLENBQXhCLEdBQThCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixDQUExQixFQUFnQyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsSUFBeEYsR0FBa0csSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBWCxDQUFKLEdBQTBCLFNBQWhJLENBQTJJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUEyQixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFYLENBQS9CLENBRTNJLEdBQUksQ0FBQSxZQUFZLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLG9CQUFyQixDQUEwQyxvQkFBMUMsQ0FBK0QsV0FBL0QsQ0FBMkUsdUJBQTNFLENBQW5CLENBQ0E7QUFDSCxDQUxELENBUUEsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsR0FBMkIsSUFBM0IsRUFBbUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEdBQTJCLENBQWxFLENBQ0EsQ0FDSSxHQUFJLENBQUEsV0FBVyxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixvQkFBckIsQ0FBMEMsbUJBQTFDLENBQThELFdBQTlELENBQTBFLHNCQUExRSxDQUFsQixDQUNILENBSEQsSUFHTSxDQUNGLG9CQUFvQixDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBakMsQ0FDQSxHQUFJLENBQUEsWUFBWSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixvQkFBckIsQ0FBMEMsb0JBQTFDLENBQStELFdBQS9ELENBQTJFLHVCQUEzRSxDQUFuQixDQUNILENBS2hCLE1BQU0sQ0FBQyxLQUFQLENBQWMsZUFBZCxDQUVDLEdBQUksTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQTlCLENBQThDLENBQ2hDLG9CQUFvQixDQUFDLHdCQUFyQixDQUE4QyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUE3RSxDQUFrRixNQUFsRixFQUEwRixJQUExRixDQUNJLFNBQVMsSUFBVCxDQUFlLENBQ1gsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGVBQXBCLENBQXNDLElBQUksQ0FBQyxJQUEzQyxDQUNGLENBSE4sQ0FJSyxTQUFTLEtBQVQsQ0FBZSxDQUFJLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUFpRCxDQUp6RSxFQU1YLENBRVAsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQTBCLFNBQVMsU0FBVCxDQUFtQixNQUFuQixDQUMxQixDQUNRLG9CQUFvQixDQUFDLFlBQXJCLENBQWtDLFNBQWxDLENBQTRDLE1BQTVDLEVBQW9ELElBQXBELENBQ04sU0FBUyxJQUFULENBQWUsQ0FDVSxHQUFJLENBQUEsR0FBRyxDQUFHLEdBQUcsQ0FBQyxlQUFKLENBQW9CLEdBQUksQ0FBQSxJQUFKLENBQVMsQ0FBQyxJQUFJLENBQUMsSUFBTixDQUFULENBQXBCLENBQVYsQ0FDQyxNQUFNLENBQUMsRUFBUCxDQUFVLFFBQVYsQ0FBbUIsR0FBbkIsQ0FDYixDQUpQLENBSVEsU0FBUyxLQUFULENBQWUsQ0FDRCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFFM0IsQ0FQSyxFQVFILENBVkwsQ0FVTTtBQUdGLEdBQUkseUJBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFNBQXJCLG9FQUFnQyxFQUFoQyxFQUFzQywwQkFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsTUFBckIsMEVBQTZCLE1BQTdCLEVBQW9DLENBQTlFLENBQ0YsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLDBCQUF5QixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsU0FBOUMsa0RBQXlCLHdCQUFnQyxFQUF6RCxDQUE0RCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsTUFBakYsRUFDQSxDQTlKSSxDQWdLSCxXQUFXLENBQUUsbUNBaEtWLENBaUtILElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FFNUIsQ0FuS0wsQ0FBUCxDQXFLQSxFQUNELGFBRU8sUUFBUyxDQUFBLG9CQUFULENBQStCLFFBQS9CLENBQXlDLENBRTlDLE1BQU8sQ0FDQyxRQUFRLENBQUUsR0FEWCxDQUVDLFdBQVcsQ0FBRSxnREFGZCxDQUdDLFVBQVUsQ0FBRSxvQkFBUyxNQUFULENBQWdCLFVBQWhCLENBQTJCLFdBQTNCLENBQXVDLG9CQUF2QyxDQUE0RCxlQUE1RCxDQUE0RSxnQkFBNUUsQ0FBNkYsbUJBQTdGLENBQWlILGVBQWpILENBQWlJLFFBQWpJLENBQTBJLE1BQTFJLENBQWlKLFlBQWpKLENBQ2xCLENBQ1ksTUFBTSxDQUFDLEtBQVAsQ0FBYyxlQUFkLENBQ0EsTUFBTSxDQUFDLElBQVAsQ0FBWSxzQkFBWixDQUVBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLFNBQXZCLENBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFtQixFQUFuQixDQUNsQyxHQUFJLE1BQU0sQ0FBQyxrQkFBUCxFQUEyQixTQUEvQixDQUEwQyxDQUN4QyxNQUFNLENBQUMsYUFBUCxDQUF1QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBakQsQ0FDRCxDQUVELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLEVBQXVCLFNBQTNCLENBQXNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixFQUFwQixDQUN0QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBa0MsRUFBbEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBbUMsRUFBbkMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLENBQXVDLEVBQXZDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQStCLEtBQS9CLENBQ1osTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLEtBQXJDLENBRVksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLFVBQVUsQ0FDcEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQWdDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUErQixLQUEvQixDQUFzQyxJQUF0RSxDQUNWLENBRkQsQ0FJQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixFQUF1QixPQUEzQixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXNDLENBQXRDLENBR3JDLG1FQUNBLE1BQU0sQ0FBQyxHQUFQLENBQWEsbUJBQWIsQ0FDQSxHQUFJLENBQUEsZUFBZSxDQUFDLElBQXBCLENBQ0EsR0FBSSxDQUFBLGlCQUFpQixDQUFFLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQix3QkFBd0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF4RCxDQUF1RSxlQUF2RSxDQUF2QixDQUNBLEdBQUksQ0FBQSxxQkFBcUIsQ0FBRyxpQkFBaUIsQ0FBQyxPQUFsQixDQUEwQixJQUF0RCxDQUVBLEdBQUksQ0FBQSxjQUFjLENBQUcsUUFBakIsQ0FBQSxjQUFpQixDQUFTLElBQVQsQ0FDckIsQ0FDSSxpQkFBaUIsQ0FBQyxPQUFsQixDQUEwQixlQUExQixDQUE0QyxJQUE1QyxDQUNBLGlCQUFpQixDQUFDLE9BQWxCLENBQTBCLGVBQTFCLENBQTBDLGVBQTFDLEVBRUgsQ0FMRCxDQU9BLEdBQUksQ0FBQSxxQkFBcUIsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIscUJBQXJCLENBQTJDLGVBQTNDLENBQTJELGNBQTNELENBQTVCLENBRUEsTUFBTSxDQUFDLEdBQVAsQ0FBVyxrQkFBWCxDQUE4QixTQUFTLEtBQVQsQ0FBZSxJQUFmLENBQW9CLENBQzlDLEdBQUksQ0FBQSxNQUFNLENBQUMsSUFBWCxDQUNBLEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLEdBQWhDLENBQW9DLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxNQUFULENBQWtCLENBQXBFLEVBQXNFLE9BQXRFLENBQThFLE1BQTlFLENBQVYsQ0FDQSxHQUFJLEdBQUcsRUFBRSxDQUFULENBQVksQ0FDVixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsTUFBaEMsQ0FBdUMsR0FBdkMsQ0FBMkMsQ0FBM0MsRUFDRCxDQUNKLENBTkQsRUFRQSxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUF5QyxDQUFDLFdBQVcsQ0FBQywwQkFBYixDQUF3QyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUF4RCxDQUFvRSxJQUFJLENBQUMsTUFBekUsQ0FDekMsV0FBVyxDQUFDLElBRDZCLENBQ3hCLFlBQVksQ0FBQyxJQURXLENBQ04sU0FBUyxDQUFDLElBREosQ0FDUyxlQUFlLENBQUMsV0FEekIsQ0FDcUMsWUFBWSxDQUFDLFdBRGxELENBQzhELGdCQUFnQixDQUFDLEVBRC9FLENBQXpDLENBR0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsRUFBbUIsU0FBdkIsQ0FBa0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQW9CLEVBQXBCLENBQ2xDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBMEMsQ0FBQyxDQUEzQyxDQUlBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUE2QixTQUFTLE1BQVQsQ0FBZ0IsU0FBaEIsQ0FBMEIsWUFBMUIsQ0FBdUMsWUFBdkMsQ0FDN0IsQ0FFSSxHQUFJLENBQUEsU0FBUyxDQUFHLENBQUMsZUFBZSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEMsQ0FBaUQsZUFBZSxZQUFoRSxDQUE2RSxZQUFZLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxNQUF6SCxDQUFnSSxpQkFBbUIsSUFBbkosQ0FBd0osU0FBUyxNQUFqSyxDQUF3SyxZQUFZLFNBQXBMLENBQThMLGVBQWUsWUFBN00sQ0FBaEIsQ0FFQSxHQUFJLFlBQVksRUFBRSxTQUFsQixDQUE2QixTQUFTLENBQUMsWUFBVixDQUF5QixJQUF6QixDQUE3QixJQUNLLENBQUEsU0FBUyxDQUFDLGFBQVYsQ0FBMEIsSUFBMUIsQ0FDTCxHQUFJLENBQUEsR0FBRyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxHQUFoQyxDQUFvQyxTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsTUFBVCxDQUFrQixDQUFwRSxFQUFzRSxPQUF0RSxDQUE4RSxNQUE5RSxDQUFWLENBRUEsR0FBSSxHQUFHLENBQUMsQ0FBSixFQUFTLFlBQVksRUFBRSxTQUEzQixDQUFzQyxDQUNsQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsTUFBaEMsQ0FBdUMsQ0FBdkMsQ0FBeUMsQ0FBekMsQ0FBMkMsQ0FBQyxTQUFTLE1BQVYsQ0FBaUIsWUFBWSxTQUE3QixDQUF1QyxlQUFlLFlBQXRELENBQW1FLFlBQVksU0FBL0UsQ0FBM0MsRUFFSCxDQUhELElBR08sSUFBSSxZQUFZLEVBQUUsUUFBbEIsQ0FBOEIsQ0FDakMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLE1BQWhDLENBQXVDLENBQXZDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLElBQWhDLENBQXFDLENBQUMsU0FBUyxNQUFWLENBQWlCLFlBQVksU0FBN0IsQ0FBdUMsZUFBZSxZQUF0RCxDQUFtRSxZQUFZLFNBQS9FLENBQXJDLEVBQ0gsQ0FITSxJQUdBLElBQUksWUFBWSxFQUFFLFdBQWxCLENBQStCLENBQ2xDLFNBQVMsQ0FBRyxDQUFDLGVBQWUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBDLENBQWlELGVBQWUsU0FBaEUsQ0FBMEUsWUFBWSxDQUF0RixDQUF3RixpQkFBbUIsSUFBM0csQ0FBZ0gsU0FBUyxNQUF6SCxDQUFnSSxZQUFZLFNBQTVJLENBQXNKLGVBQWUsWUFBckssQ0FBWixDQUVDLE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBWCxDQUF5QixxQkFBekIsQ0FBK0MsZUFBL0MsQ0FBZ0UsQ0FBQyxTQUFTLE1BQVYsQ0FBaUIsWUFBWSxTQUE3QixDQUF1QyxlQUFlLFlBQXRELENBQW1FLFlBQVksU0FBL0UsQ0FBaEUsRUFDSixDQUVELEdBQUksWUFBWSxFQUFFLFNBQWxCLENBQTZCLENBQ3pCLE1BQU0sQ0FBQyxLQUFQLENBQWEsb0JBQWIsQ0FBa0MsQ0FBQyxZQUFZLFNBQWIsQ0FBdUIsaUJBQWlCLE1BQU0sQ0FBQyxrQkFBL0MsQ0FBbEMsRUFDSCxDQUVELE1BQU0sQ0FBQyxLQUFQLENBQWEsZUFBYixDQUE2QixZQUE3QixFQUNILENBMUJELENBNkJBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUErQixTQUFTLE1BQVQsQ0FDL0IsaURBQ1EsR0FBSSxDQUFBLFlBQUosQ0FDQSxHQUFJLE1BQU0sQ0FBQyxtQkFBWCxDQUNqQixZQUFZLHdCQUFHLE1BQU0sQ0FBQyx5QkFBVixnREFBRyxzQkFBa0MsT0FBakQsQ0FEaUIsSUFFSyxDQUFBLFlBQVksQ0FBQyxDQUFiLENBRUwsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFNLENBQUMsUUFBUCxDQUFnQixnQkFBaEIsQ0FBaUMsTUFBM0MsQ0FBa0QsQ0FBQyxNQUFNLENBQUUsTUFBTSxDQUFDLEVBQWhCLENBQW1CLFNBQVMsQ0FBQyxDQUE3QixDQUErQixPQUFPLENBQUMsWUFBdkMsQ0FBb0QsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxrQkFBbEIsQ0FBcUMsYUFBYSx3QkFBQyxZQUFZLENBQUMsVUFBZCxnREFBQyxzQkFBeUIsa0JBQTVFLENBQStGLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUE1SSxDQUEwSixTQUFTLENBQUMsS0FBcEssQ0FBL0QsQ0FBbEQsRUFDUCxDQVJELENBV1osTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQWlDLFNBQVMsTUFBVCxDQUNyQixDQUNJLEdBQUksQ0FBQSxTQUFTLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLEdBQWhDLENBQW9DLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxNQUFULENBQWtCLENBQXBFLEVBQXNFLE9BQXRFLENBQThFLE1BQTlFLENBQWhCLENBQ0EsR0FBSSxTQUFTLEVBQUUsQ0FBZixDQUFrQixNQUFPLEtBQVAsQ0FDbEIsTUFBTyxNQUFQLENBQ0gsQ0FMYixDQVFVO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBR2dCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixzQkFBcEIsQ0FBNkMsU0FBVSxDQUFWLENBQ3pELENBRWtCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixtQkFBcEIsQ0FBd0MsSUFBeEMsQ0FFQTtBQUVGLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLE1BQWxCLENBQXlCLENBQXpCLEVBQThCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsR0FBdUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLENBQWxCLENBQXpFLENBQStGLENBQzNGLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixtQkFBcEIsQ0FBd0MsSUFBeEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLENBQTFDLENBQ0E7QUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLENBQXVDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixDQUFsQixDQUF2QyxDQUNsQjtBQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFpQyxFQUFqQyxDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsQ0FBbEIsRUFBcUIsRUFBMUQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBaUMsSUFBakMsQ0FBdUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLENBQWxCLEVBQXFCLElBQTVELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLEtBQXJDLENBRXNCLFFBQVEsQ0FBQyxVQUFVLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLElBQXJDLENBQTBDLENBQXZELENBQVIsQ0FDbEI7QUFHVyxDQUNEO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQ2lCLENBL0JELENBbUNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFrQyxVQUM5QyxDQUNBO0FBQ0E7QUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLENBQXVDLENBQUUsWUFBWSxDQUFFLElBQWhCLENBQXNCLEVBQUUsQ0FBRSxJQUExQixDQUFnQyxJQUFJLENBQUUsRUFBdEMsQ0FBMEMsUUFBUSxDQUFFLEVBQXBELENBQXdELFFBQVEsQ0FBRSxhQUFsRSxDQUF2QyxDQUNBO0FBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQW1DLEVBQW5DLENBQ0EsR0FBSSxNQUFNLENBQUMsa0JBQVgsQ0FBK0IsTUFBTSxDQUFDLGtCQUFQLEdBRS9CLEdBQUksQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsbUJBQXpCLENBQThDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixtQkFBcEIsQ0FBMEMsSUFBMUMsQ0FDN0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixDQUEwQyxDQUFDLENBQTNDLENBQ0E7QUFDRCxDQVpZLENBZWIsTUFBTSxDQUFDLFVBQVAsQ0FBb0IsU0FBUyxVQUFULENBQ3BCLENBQ0UsTUFBTSxDQUFDLGtCQUFQLENBQTRCLFVBQTVCLENBQ0QsQ0FIRCxDQU1ZLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFrQyxVQUM5Qyw2QkFDZTtBQUNmLEdBQUksQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXpCLENBQWdELENBQUUsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsc0JBQTVCLENBQW1ELFNBQW5ELEVBQStELE9BQVEsQ0FDekgsR0FBSSwyQkFBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBckIsNENBQUMsd0JBQWtDLEVBQW5DLEdBQXlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsRUFBMEMsTUFBdkYsQ0FBZ0csQ0FBRSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0Qix3QkFBNUIsQ0FBcUQsU0FBckQsRUFBaUUsT0FBUSxDQUMzSyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBcUMsUUFBckMsRUFBK0MsRUFBbkQsQ0FBdUQsQ0FBRSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixtQkFBNUIsQ0FBZ0QsU0FBaEQsRUFBNEQsT0FBUSxDQUU5RyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsbUJBQXBCLENBQXdDLEtBQXhDLENBRWYsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLEdBQXVDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixDQUFsQixDQUEzQyxDQUFrRSxPQUVsRSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLENBQXFDLFlBQXJDLENBQW9ELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBeEUsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLENBQXFDLElBQXJDLENBQTRDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFpQyxJQUE3RSxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBcUMsRUFBckMsQ0FBMEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQWlDLEVBQTNFLENBRWUsR0FBSyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLEVBQTZDLENBQUMsQ0FBbkQsQ0FBc0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLElBQWxCLENBQXVCLE9BQU8sQ0FBQyxJQUFSLENBQWEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFqQyxDQUF2QixFQUl2RCxDQW5CRixDQXVCWixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsbUJBQXBCLENBQTBDLFVBQzFDLDZCQUNtQiw0QkFBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXhCLDRDQUFJLHdCQUFzQyxFQUExQyxDQUE4QyxDQUUxQyxvQkFBb0IsQ0FBQyxpQkFBckIsQ0FBdUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFxQyxFQUE1RSxFQUFnRixJQUFoRixDQUFzRjtBQUMxRyxTQUFTLElBQVQsQ0FBZSxDQUNiLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBcUMsUUFBckMsQ0FBZ0QsSUFBSSxDQUFDLElBQXJELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFxQyxFQUFyQyxDQUF3QyxJQUFJLENBQUMsSUFBTCxDQUFVLEdBQWxELENBQXNEO0FBQ3RELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBcUMsSUFBckMsQ0FBMEMsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUFwRCxDQUF3RDtBQUN4RCxDQUxrQixDQUtqQixTQUFTLEtBQVQsQ0FBZSxDQUNoQixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDRCxDQVBtQixFQVFILENBVkQsSUFVTyxDQUNILEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLEdBQWxCLENBQXNCLFNBQVMsQ0FBVCxDQUFZLENBQUUsR0FBSSxDQUFDLEVBQUUsU0FBUCxDQUFrQixNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBbEIsSUFBb0MsT0FBTyxLQUFQLENBQWEsQ0FBckYsRUFBdUYsT0FBdkYsQ0FBK0YsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFxQyxFQUFwSSxDQUFWLENBQ0E7QUFDSCxDQUVEO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBRW9CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixtQkFBcEIsQ0FBMEMsSUFBMUMsQ0FDRixDQXpCYixDQTZCVyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isc0JBQXBCLENBQTZDLFNBQVUsS0FBVixDQUN6RCxDQUNvQixHQUFJLEtBQUssRUFBRSxDQUFYLENBQWEsQ0FDSCxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsTUFBbEIsQ0FBeUIsS0FBekIsQ0FBK0IsQ0FBL0IsRUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLENBQUMsQ0FBM0MsQ0FDQTtBQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixtQkFBcEIsQ0FBd0MsS0FBeEMsQ0FFVCxDQUNSLENBVEQsQ0FhQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isa0JBQXBCLENBQXlDLFNBQVMsSUFBVCxDQUFjLEdBQWQsQ0FBa0IsWUFBbEIsQ0FBK0IsZUFBL0IsQ0FBK0MsQ0FDL0UsZUFBZSxDQUFDLGtCQUFoQixDQUFtQyxHQUFuQyxDQUF1QyxZQUF2QyxDQUFvRCxlQUFwRCxDQUFvRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTlFLEVBQ0MsSUFERCxDQUNNLFNBQVMsSUFBVCxDQUFlLENBQ2pCLE1BQU0sQ0FBQyxFQUFQLENBQVUsMkJBQVYsQ0FBc0MsQ0FBQyxFQUFFLENBQUUsSUFBTCxDQUFVLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBUCxDQUFlLElBQXZDLENBQTRDLGVBQWUsQ0FBQyxNQUFNLENBQUMsTUFBbkUsQ0FBMEUsVUFBVSxDQUFDLENBQXJGLENBQXVGLG9CQUFvQixDQUFDLEdBQTVHLENBQXRDLEVBQ0YsQ0FIRixDQUdHLFNBQVMsS0FBVCxDQUFlLENBQ1osZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0gsQ0FMSCxFQU1SLENBUEQsQ0FXQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZUFBcEIsQ0FBc0MsU0FBVSxhQUFWLENBQXdCO0FBQzFFLENBQ2EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUEwQyxhQUExQyxDQUF3RDtBQUNwRSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLENBQXFDLFlBQXJDLENBQW1ELGFBQW5ELENBQ1ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLEtBQXJDLENBQ0EsR0FBTSxNQUFNLENBQUMsS0FBUCxDQUFhLGVBQWIsSUFBZ0MsQ0FBaEMsRUFBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLEVBQXVCLE9BQWxFLENBQTJFLENBQ3JFLG9CQUFvQixDQUFDLHdCQUFyQixDQUE4QyxJQUE5QyxDQUFtRCxhQUFuRCxFQUFrRSxJQUFsRSxDQUNqQixTQUFTLElBQVQsQ0FBZSxDQUNZLFFBQVEsQ0FBQyxVQUFXLENBQ2QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHVCQUFwQixDQUE4QyxJQUFJLENBQUMsSUFBbkQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBcUMsSUFBckMsQ0FDTCxDQUhPLENBQVIsQ0FJRixDQU5SLENBTVMsU0FBUyxLQUFULENBQWUsQ0FDZCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDTCxDQVJMLEVBU2xCLENBRVksQ0FqQkQsQ0FvQkQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGVBQXBCLENBQW9DLE1BQXBDLEVBRUEsTUFBTSxDQUFDLHdCQUFQLENBQWtDLFNBQVMsUUFBVCxDQUFtQixLQUFuQixDQUM5QyxDQUNFO0FBQ0EsR0FBSyxRQUFMLFNBQUssUUFBTCxXQUFLLFFBQVEsQ0FBRSxFQUFmLENBQW1CLENBQ0csb0JBQW9CLENBQUMsaUJBQXJCLENBQXVDLFFBQVEsQ0FBQyxFQUFoRCxFQUFvRCxJQUFwRCxDQUEwRDtBQUM5RSxTQUFTLElBQVQsQ0FBZSxDQUNiLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBcUMsUUFBckMsQ0FBZ0QsSUFBSSxDQUFDLElBQXJELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFxQyxFQUFyQyxDQUF3QyxJQUFJLENBQUMsSUFBTCxDQUFVLEdBQWxELENBQXNEO0FBQ3RELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBcUMsSUFBckMsQ0FBMEMsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUFwRCxDQUF3RDtBQUMxQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsbUJBQXBCLENBQXdDLElBQXhDLENBQzlCLENBTmtCLENBTWpCLFNBQVMsS0FBVCxDQUFlLENBQ2hCLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNELENBUm1CLEVBU0gsQ0FFcEIsQ0FmVyxDQWlCUCxDQS9TQSxDQWlURCxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBQU8sQ0FqVDFDLENBQVAsQ0FxVEQsRUFDRCxhQUVPLFFBQVMsQ0FBQSxjQUFULEVBQTJCLENBRS9CLEdBQUksQ0FBQSxVQUFVLENBQUcsQ0FBQyxRQUFELENBQVcsV0FBWCxDQUF1QixjQUF2QixDQUFzQyxRQUF0QyxDQUErQyxVQUEvQyxDQUEwRCxjQUExRCxDQUF5RSxzQkFBekUsQ0FBZ0csWUFBaEcsQ0FBNkcsYUFBN0csQ0FBMkgsbUJBQTNILENBQStJLGtCQUEvSSxDQUFrSyxpQkFBbEssQ0FBb0wsaUJBQXBMLENBQXNNLDJCQUF0TSxDQUFrTyxxQkFBbE8sQ0FBd1AsZ0JBQXhQLENBQXlRLGdCQUF6USxDQUEwUixVQUExUixDQUFxUyxVQUFyUyxDQUNDLFNBQVUsTUFBVixDQUFpQixTQUFqQixDQUEyQixZQUEzQixDQUF3QyxNQUF4QyxDQUErQyxRQUEvQyxDQUF3RCxZQUF4RCxDQUFxRSxvQkFBckUsQ0FBMEYsVUFBMUYsQ0FBcUcsV0FBckcsQ0FBaUgsaUJBQWpILENBQW1JLGdCQUFuSSxDQUFvSixlQUFwSixDQUFvSyxlQUFwSyxDQUFvTCx5QkFBcEwsQ0FBOE0sbUJBQTlNLENBQWtPLGNBQWxPLENBQWlQLGNBQWpQLENBQWdRLFFBQWhRLENBQXlRLFFBQXpRLENBQW1SLENBRWxTLE1BQU0sQ0FBQyxlQUFQLENBQXlCLEVBQXpCLENBQ0E7QUFDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBOEMsS0FBOUMsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixVQUF2QixDQUFrQyxLQUFsQyxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGFBQXZCLENBQXFDLFdBQVcsQ0FBQyxlQUFqRCxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGlCQUF2QixDQUEyQyxJQUEzQyxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFVBQXZCLENBQW9DLENBQXBDLENBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBZSxlQUFmLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsVUFBdkIsQ0FBa0MsQ0FBQyxZQUFZLENBQUMsQ0FBZCxDQUFnQixrQkFBa0IsQ0FBQyxJQUFuQyxDQUFsQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBNkIsSUFBN0IsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxRQUFQLEVBQWlCLFNBQXJCLENBQWdDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEVBQWhCLENBQ2hDLEdBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUExQixHQUEyQyxTQUEvQyxDQUEwRCxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTFCLEVBQTBDLEVBQTFDLENBQzFELE1BQU0sQ0FBQyxFQUFQLENBQVUsSUFBVixDQUFlLEVBQWYsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixpQkFBdkIsQ0FBeUMsQ0FBekMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsQ0FBbEIsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixFQUF3QixTQUE1QixDQUF1QyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBdUIsRUFBdkIsQ0FDdkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLDRDQUF6QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsaUJBQVYsQ0FBNEIsQ0FBQyxDQUFDLFNBQVMsRUFBVixDQUFhLGtCQUFrQixZQUEvQixDQUE0QyxPQUFPLGFBQW5ELENBQUQsQ0FBbUUsQ0FBQyxZQUFZLEtBQWIsQ0FBbUIsU0FBUyxDQUFDLENBQUMsVUFBVSxJQUFYLENBQWdCLGVBQWUsU0FBL0IsQ0FBeUMsT0FBTyxPQUFoRCxDQUF3RCxPQUFPLFNBQS9ELENBQUQsQ0FBMkUsQ0FBQyxVQUFVLElBQVgsQ0FBZ0IsZUFBZSxTQUEvQixDQUF5QyxPQUFPLFNBQWhELENBQTBELE9BQU8sU0FBakUsQ0FBM0UsQ0FBdUosQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLE9BQWpELENBQXlELE9BQU8sU0FBaEUsQ0FBdkosQ0FBNUIsQ0FBK1AsT0FBTyxVQUF0USxDQUFpUixPQUFPLE9BQXhSLENBQW5FLENBQW9XLENBQUMsWUFBWSxLQUFiLENBQW1CLFNBQVMsQ0FBQyxDQUFDLFVBQVUsSUFBWCxDQUFnQixlQUFlLFNBQS9CLENBQXlDLE9BQU8sZUFBaEQsQ0FBZ0UsT0FBTyxTQUF2RSxDQUFELENBQW1GLENBQUMsVUFBVSxJQUFYLENBQWdCLGVBQWUsU0FBL0IsQ0FBeUMsT0FBTyxVQUFoRCxDQUEyRCxPQUFPLFNBQWxFLENBQW5GLENBQTVCLENBQTZMLE9BQU8sc0JBQXBNLENBQTJOLE9BQU8sT0FBbE8sQ0FBcFcsQ0FBK2tCLENBQUMsWUFBWSxLQUFiLENBQW1CLFNBQVMsQ0FBQyxDQUFDLFVBQVUsSUFBWCxDQUFnQixlQUFlLFNBQS9CLENBQXlDLE9BQU8sTUFBaEQsQ0FBdUQsT0FBTyxTQUE5RCxDQUFELENBQTBFLENBQUMsVUFBVSxJQUFYLENBQWdCLGVBQWUsU0FBL0IsQ0FBeUMsT0FBTyxJQUFoRCxDQUFxRCxPQUFPLFNBQTVELENBQTFFLENBQWlKLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxPQUFqRCxDQUF5RCxPQUFPLFNBQWhFLENBQWpKLENBQTVCLENBQXlQLE9BQU8sVUFBaFEsQ0FBMlEsT0FBTyxPQUFsUixDQUEva0IsQ0FBMDJCLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLE9BQWpDLENBQXlDLE9BQU8sU0FBaEQsQ0FBRCxDQUE0RCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxTQUFqQyxDQUEyQyxPQUFPLFNBQWxELENBQTVELENBQVYsQ0FBb0ksT0FBTyxXQUEzSSxDQUF1SixVQUFVLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUFELENBQWpLLENBQXlOLGtCQUFrQixNQUEzTyxDQUFrUCxPQUFPLFVBQXpQLENBQTEyQixDQUErbUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sU0FBakMsQ0FBMkMsT0FBTyxTQUFsRCxDQUFELENBQThELENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFFBQWpDLENBQTBDLE9BQU8sU0FBakQsQ0FBOUQsQ0FBVixDQUFxSSxPQUFPLFNBQTVJLENBQXNKLFVBQVUsQ0FBQyxDQUFDLGVBQWUsTUFBaEIsQ0FBdUIsT0FBTyxFQUE5QixDQUFpQyxPQUFPLE1BQXhDLENBQUQsQ0FBaEssQ0FBa04sa0JBQWtCLFlBQXBPLENBQWlQLE9BQU8sVUFBeFAsQ0FBL21DLENBQW0zQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxTQUFqQyxDQUEyQyxPQUFPLFNBQWxELENBQUQsQ0FBVixDQUF5RSxPQUFPLFdBQWhGLENBQTRGLFVBQVUsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQUQsQ0FBdEcsQ0FBOEosa0JBQWtCLE1BQWhMLENBQXVMLE9BQU8sVUFBOUwsQ0FBbjNDLENBQTZqRCxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sVUFBcEIsQ0FBK0IsVUFBVSxDQUFDLENBQUMsZUFBZSxPQUFoQixDQUF3QixPQUFPLEVBQS9CLENBQWtDLE9BQU8sT0FBekMsQ0FBRCxDQUF6QyxDQUE2RixrQkFBa0IsTUFBL0csQ0FBc0gsT0FBTyxVQUE3SCxDQUE3akQsQ0FBc3NELENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFNBQWpDLENBQTJDLE9BQU8sU0FBbEQsQ0FBRCxDQUE4RCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxpQkFBakMsQ0FBbUQsT0FBTyxTQUExRCxDQUE5RCxDQUFWLENBQThJLE9BQU8sbUJBQXJKLENBQXlLLFVBQVUsQ0FBQyxDQUFDLGVBQWUsTUFBaEIsQ0FBdUIsT0FBTyxFQUE5QixDQUFpQyxPQUFPLE1BQXhDLENBQUQsQ0FBbkwsQ0FBcU8sa0JBQWtCLFlBQXZQLENBQW9RLE9BQU8sVUFBM1EsQ0FBdHNELENBQTY5RCxDQUFDLFNBQVMsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxTQUFqQyxDQUEyQyxPQUFPLFNBQWxELENBQUQsQ0FBOEQsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sWUFBakMsQ0FBOEMsT0FBTyxTQUFyRCxDQUE5RCxDQUFWLENBQXlJLE9BQU8sbUJBQWhKLENBQW9LLFVBQVUsQ0FBQyxDQUFDLGVBQWUsTUFBaEIsQ0FBdUIsT0FBTyxFQUE5QixDQUFpQyxPQUFPLE1BQXhDLENBQUQsQ0FBOUssQ0FBZ08sa0JBQWtCLFlBQWxQLENBQStQLE9BQU8sVUFBdFEsQ0FBNzlELENBQSt1RSxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sTUFBcEIsQ0FBMkIsVUFBVSxDQUFDLENBQUMsZUFBZSxRQUFoQixDQUF5QixPQUFPLEVBQWhDLENBQW1DLE9BQU8sUUFBMUMsQ0FBRCxDQUFyQyxDQUEyRixrQkFBa0IsTUFBN0csQ0FBb0gsT0FBTyxVQUEzSCxDQUEvdUUsQ0FBczNFLENBQUMsU0FBUyxFQUFWLENBQWEsT0FBTyxPQUFwQixDQUE0QixVQUFVLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUFELENBQXRDLENBQThGLGtCQUFrQixNQUFoSCxDQUF1SCxPQUFPLFVBQTlILENBQXQzRSxDQUFnZ0YsQ0FBQyxTQUFTLEVBQVYsQ0FBYSxPQUFPLG1CQUFwQixDQUF3QyxVQUFVLEVBQWxELENBQXFELGtCQUFrQixZQUF2RSxDQUFvRixPQUFPLFVBQTNGLENBQWhnRixDQUF1bUYsQ0FBQyxTQUFTLEVBQVYsQ0FBYSxPQUFPLFFBQXBCLENBQTZCLFVBQVUsQ0FBQyxDQUFDLGVBQWUsUUFBaEIsQ0FBeUIsT0FBTyxFQUFoQyxDQUFtQyxPQUFPLFFBQTFDLENBQUQsQ0FBdkMsQ0FBNkYsa0JBQWtCLE1BQS9HLENBQXNILE9BQU8sVUFBN0gsQ0FBdm1GLENBQWd2RixDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sYUFBcEIsQ0FBa0MsVUFBVSxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBRCxDQUE1QyxDQUFvRyxrQkFBa0IsTUFBdEgsQ0FBNkgsT0FBTyxVQUFwSSxDQUFodkYsQ0FBZzRGLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFdBQWpDLENBQTZDLE9BQU8sU0FBcEQsQ0FBRCxDQUFnRSxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxRQUFqQyxDQUEwQyxPQUFPLFNBQWpELENBQWhFLENBQVYsQ0FBdUksT0FBTyxVQUE5SSxDQUF5SixVQUFVLENBQUMsQ0FBQyxlQUFlLE1BQWhCLENBQXVCLE9BQU8sRUFBOUIsQ0FBaUMsT0FBTyxNQUF4QyxDQUFELENBQW5LLENBQXFOLGtCQUFrQixZQUF2TyxDQUFvUCxPQUFPLFVBQTNQLENBQWg0RixDQUF1b0csQ0FBQyxTQUFTLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sUUFBakMsQ0FBMEMsT0FBTyxTQUFqRCxDQUFELENBQTZELENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFdBQWpDLENBQTZDLE9BQU8sU0FBcEQsQ0FBN0QsQ0FBNEgsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sUUFBakMsQ0FBMEMsT0FBTyxTQUFqRCxDQUE1SCxDQUFWLENBQW1NLE9BQU8sY0FBMU0sQ0FBeU4sVUFBVSxDQUFDLENBQUMsZUFBZSxNQUFoQixDQUF1QixPQUFPLEVBQTlCLENBQWlDLE9BQU8sTUFBeEMsQ0FBRCxDQUFuTyxDQUFxUixrQkFBa0IsWUFBdlMsQ0FBb1QsT0FBTyxVQUEzVCxDQUF2b0csQ0FBODhHLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFVBQWpDLENBQTRDLE9BQU8sU0FBbkQsQ0FBRCxDQUFWLENBQTBFLE9BQU8sbUJBQWpGLENBQXFHLFVBQVUsRUFBL0csQ0FBa0gsa0JBQWtCLFlBQXBJLENBQWlKLE9BQU8sVUFBeEosQ0FBOThHLENBQTVCLENBQStvSCxDQUMvb0gsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLDRDQUF6QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsaUJBQVYsQ0FBNEIsQ0FBQyxDQUFDLFNBQVMsRUFBVixDQUFhLGtCQUFrQixZQUEvQixDQUE0QyxPQUFPLGFBQW5ELENBQUQsQ0FBbUUsQ0FBQyxZQUFZLEtBQWIsQ0FBbUIsU0FBUyxDQUFDLENBQUMsVUFBVSxJQUFYLENBQWdCLGVBQWUsU0FBL0IsQ0FBeUMsT0FBTyxPQUFoRCxDQUF3RCxPQUFPLFNBQS9ELENBQUQsQ0FBMkUsQ0FBQyxVQUFVLElBQVgsQ0FBZ0IsZUFBZSxTQUEvQixDQUF5QyxPQUFPLFNBQWhELENBQTBELE9BQU8sU0FBakUsQ0FBM0UsQ0FBdUosQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLE9BQWpELENBQXlELE9BQU8sU0FBaEUsQ0FBdkosQ0FBNUIsQ0FBK1AsT0FBTyxVQUF0USxDQUFpUixPQUFPLE9BQXhSLENBQW5FLENBQW9XLENBQUMsWUFBWSxLQUFiLENBQW1CLFNBQVMsQ0FBQyxDQUFDLFVBQVUsSUFBWCxDQUFnQixlQUFlLFNBQS9CLENBQXlDLE9BQU8sZUFBaEQsQ0FBZ0UsT0FBTyxTQUF2RSxDQUFELENBQW1GLENBQUMsVUFBVSxJQUFYLENBQWdCLGVBQWUsU0FBL0IsQ0FBeUMsT0FBTyxVQUFoRCxDQUEyRCxPQUFPLFNBQWxFLENBQW5GLENBQTVCLENBQTZMLE9BQU8sc0JBQXBNLENBQTJOLE9BQU8sT0FBbE8sQ0FBcFcsQ0FBK2tCLENBQUMsWUFBWSxLQUFiLENBQW1CLFNBQVMsQ0FBQyxDQUFDLFVBQVUsSUFBWCxDQUFnQixlQUFlLFNBQS9CLENBQXlDLE9BQU8sTUFBaEQsQ0FBdUQsT0FBTyxTQUE5RCxDQUFELENBQTBFLENBQUMsVUFBVSxJQUFYLENBQWdCLGVBQWUsU0FBL0IsQ0FBeUMsT0FBTyxJQUFoRCxDQUFxRCxPQUFPLFNBQTVELENBQTFFLENBQWlKLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxPQUFqRCxDQUF5RCxPQUFPLFNBQWhFLENBQWpKLENBQTVCLENBQXlQLE9BQU8sVUFBaFEsQ0FBMlEsT0FBTyxPQUFsUixDQUEva0IsQ0FBMDJCLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLE9BQWpDLENBQXlDLE9BQU8sU0FBaEQsQ0FBRCxDQUE0RCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxTQUFqQyxDQUEyQyxPQUFPLFNBQWxELENBQTVELENBQVYsQ0FBb0ksT0FBTyxXQUEzSSxDQUF1SixVQUFVLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUFELENBQWpLLENBQXlOLGtCQUFrQixNQUEzTyxDQUFrUCxPQUFPLFVBQXpQLENBQTEyQixDQUErbUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sU0FBakMsQ0FBMkMsT0FBTyxTQUFsRCxDQUFELENBQThELENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFFBQWpDLENBQTBDLE9BQU8sU0FBakQsQ0FBOUQsQ0FBVixDQUFxSSxPQUFPLFNBQTVJLENBQXNKLFVBQVUsQ0FBQyxDQUFDLGVBQWUsTUFBaEIsQ0FBdUIsT0FBTyxFQUE5QixDQUFpQyxPQUFPLE1BQXhDLENBQUQsQ0FBaEssQ0FBa04sa0JBQWtCLFlBQXBPLENBQWlQLE9BQU8sVUFBeFAsQ0FBL21DLENBQW0zQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxTQUFqQyxDQUEyQyxPQUFPLFNBQWxELENBQUQsQ0FBVixDQUF5RSxPQUFPLFdBQWhGLENBQTRGLFVBQVUsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQUQsQ0FBdEcsQ0FBOEosa0JBQWtCLE1BQWhMLENBQXVMLE9BQU8sVUFBOUwsQ0FBbjNDLENBQTZqRCxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sVUFBcEIsQ0FBK0IsVUFBVSxDQUFDLENBQUMsZUFBZSxPQUFoQixDQUF3QixPQUFPLEVBQS9CLENBQWtDLE9BQU8sT0FBekMsQ0FBRCxDQUF6QyxDQUE2RixrQkFBa0IsTUFBL0csQ0FBc0gsT0FBTyxVQUE3SCxDQUE3akQsQ0FBc3NELENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFNBQWpDLENBQTJDLE9BQU8sU0FBbEQsQ0FBRCxDQUE4RCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxpQkFBakMsQ0FBbUQsT0FBTyxTQUExRCxDQUE5RCxDQUFWLENBQThJLE9BQU8sbUJBQXJKLENBQXlLLFVBQVUsQ0FBQyxDQUFDLGVBQWUsTUFBaEIsQ0FBdUIsT0FBTyxFQUE5QixDQUFpQyxPQUFPLE1BQXhDLENBQUQsQ0FBbkwsQ0FBcU8sa0JBQWtCLFlBQXZQLENBQW9RLE9BQU8sVUFBM1EsQ0FBdHNELENBQTY5RCxDQUFDLFNBQVMsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxTQUFqQyxDQUEyQyxPQUFPLFNBQWxELENBQUQsQ0FBOEQsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sWUFBakMsQ0FBOEMsT0FBTyxTQUFyRCxDQUE5RCxDQUFWLENBQXlJLE9BQU8sbUJBQWhKLENBQW9LLFVBQVUsQ0FBQyxDQUFDLGVBQWUsTUFBaEIsQ0FBdUIsT0FBTyxFQUE5QixDQUFpQyxPQUFPLE1BQXhDLENBQUQsQ0FBOUssQ0FBZ08sa0JBQWtCLFlBQWxQLENBQStQLE9BQU8sVUFBdFEsQ0FBNzlELENBQSt1RSxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sTUFBcEIsQ0FBMkIsVUFBVSxDQUFDLENBQUMsZUFBZSxRQUFoQixDQUF5QixPQUFPLEVBQWhDLENBQW1DLE9BQU8sUUFBMUMsQ0FBRCxDQUFyQyxDQUEyRixrQkFBa0IsTUFBN0csQ0FBb0gsT0FBTyxVQUEzSCxDQUEvdUUsQ0FBczNFLENBQUMsU0FBUyxFQUFWLENBQWEsT0FBTyxPQUFwQixDQUE0QixVQUFVLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUFELENBQXRDLENBQThGLGtCQUFrQixNQUFoSCxDQUF1SCxPQUFPLFVBQTlILENBQXQzRSxDQUFnZ0YsQ0FBQyxTQUFTLEVBQVYsQ0FBYSxPQUFPLG1CQUFwQixDQUF3QyxVQUFVLEVBQWxELENBQXFELGtCQUFrQixZQUF2RSxDQUFvRixPQUFPLFVBQTNGLENBQWhnRixDQUF1bUYsQ0FBQyxTQUFTLEVBQVYsQ0FBYSxPQUFPLFFBQXBCLENBQTZCLFVBQVUsQ0FBQyxDQUFDLGVBQWUsUUFBaEIsQ0FBeUIsT0FBTyxFQUFoQyxDQUFtQyxPQUFPLFFBQTFDLENBQUQsQ0FBdkMsQ0FBNkYsa0JBQWtCLE1BQS9HLENBQXNILE9BQU8sVUFBN0gsQ0FBdm1GLENBQWd2RixDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sYUFBcEIsQ0FBa0MsVUFBVSxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBRCxDQUE1QyxDQUFvRyxrQkFBa0IsTUFBdEgsQ0FBNkgsT0FBTyxVQUFwSSxDQUFodkYsQ0FBZzRGLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFdBQWpDLENBQTZDLE9BQU8sU0FBcEQsQ0FBRCxDQUFnRSxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxRQUFqQyxDQUEwQyxPQUFPLFNBQWpELENBQWhFLENBQVYsQ0FBdUksT0FBTyxVQUE5SSxDQUF5SixVQUFVLENBQUMsQ0FBQyxlQUFlLE1BQWhCLENBQXVCLE9BQU8sRUFBOUIsQ0FBaUMsT0FBTyxNQUF4QyxDQUFELENBQW5LLENBQXFOLGtCQUFrQixZQUF2TyxDQUFvUCxPQUFPLFVBQTNQLENBQWg0RixDQUF1b0csQ0FBQyxTQUFTLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sUUFBakMsQ0FBMEMsT0FBTyxTQUFqRCxDQUFELENBQTZELENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFdBQWpDLENBQTZDLE9BQU8sU0FBcEQsQ0FBN0QsQ0FBNEgsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sUUFBakMsQ0FBMEMsT0FBTyxTQUFqRCxDQUE1SCxDQUFWLENBQW1NLE9BQU8sY0FBMU0sQ0FBeU4sVUFBVSxDQUFDLENBQUMsZUFBZSxNQUFoQixDQUF1QixPQUFPLEVBQTlCLENBQWlDLE9BQU8sTUFBeEMsQ0FBRCxDQUFuTyxDQUFxUixrQkFBa0IsWUFBdlMsQ0FBb1QsT0FBTyxVQUEzVCxDQUF2b0csQ0FBODhHLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFVBQWpDLENBQTRDLE9BQU8sU0FBbkQsQ0FBRCxDQUFWLENBQTBFLE9BQU8sbUJBQWpGLENBQXFHLFVBQVUsRUFBL0csQ0FBa0gsa0JBQWtCLFlBQXBJLENBQWlKLE9BQU8sVUFBeEosQ0FBOThHLENBQTVCLENBQStvSCxDQUMvb0gsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFWLENBQTBCLDRDQUExQixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBNkIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxTQUFqQyxDQUEyQyxPQUFPLFNBQWxELENBQUQsQ0FBOEQsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sU0FBakMsQ0FBMkMsT0FBTyxTQUFsRCxDQUE5RCxDQUEySCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxNQUFqQyxDQUF3QyxPQUFPLFNBQS9DLENBQTNILENBQXFMLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFdBQWpDLENBQTZDLE9BQU8sU0FBcEQsQ0FBckwsQ0FBb1AsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sYUFBakMsQ0FBK0MsT0FBTyxTQUF0RCxDQUFwUCxDQUFxVCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxlQUFqQyxDQUFpRCxPQUFPLFNBQXhELENBQXJULENBQXdYLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLGFBQWpDLENBQStDLE9BQU8sU0FBdEQsQ0FBeFgsQ0FBeWIsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sUUFBakMsQ0FBMEMsT0FBTyxTQUFqRCxDQUF6YixDQUFWLENBQWdnQixrQkFBa0IsWUFBbGhCLENBQStoQixPQUFPLGFBQXRpQixDQUFELENBQXNqQixDQUFDLFlBQVksS0FBYixDQUFtQixTQUFTLENBQUMsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLE1BQWpELENBQXdELE9BQU8sU0FBL0QsQ0FBRCxDQUEyRSxDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sVUFBakQsQ0FBNEQsT0FBTyxTQUFuRSxDQUEzRSxDQUE1QixDQUFzTCxPQUFPLGtCQUE3TCxDQUFnTixPQUFPLE9BQXZOLENBQXRqQixDQUFzeEIsQ0FBQyxZQUFZLEtBQWIsQ0FBbUIsU0FBUyxDQUFDLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxRQUFqRCxDQUEwRCxPQUFPLFNBQWpFLENBQUQsQ0FBNkUsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLFFBQWpELENBQTBELE9BQU8sU0FBakUsQ0FBN0UsQ0FBeUosQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLEtBQWpELENBQXVELE9BQU8sU0FBOUQsQ0FBekosQ0FBa08sQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLFVBQWpELENBQTRELE9BQU8sU0FBbkUsQ0FBbE8sQ0FBZ1QsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLGNBQWpELENBQWdFLE9BQU8sU0FBdkUsQ0FBaFQsQ0FBa1ksQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLGNBQWpELENBQWdFLE9BQU8sU0FBdkUsQ0FBbFksQ0FBb2QsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLFlBQWpELENBQThELE9BQU8sU0FBckUsQ0FBcGQsQ0FBb2lCLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxZQUFqRCxDQUE4RCxPQUFPLFNBQXJFLENBQXBpQixDQUFvbkIsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLE9BQWpELENBQXlELE9BQU8sU0FBaEUsQ0FBcG5CLENBQStyQixDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sV0FBakQsQ0FBNkQsT0FBTyxTQUFwRSxDQUEvckIsQ0FBOHdCLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxjQUFqRCxDQUFnRSxPQUFPLFNBQXZFLENBQTl3QixDQUFnMkIsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLFlBQWpELENBQThELE9BQU8sU0FBckUsQ0FBaDJCLENBQTVCLENBQTY4QixPQUFPLGlCQUFwOUIsQ0FBcytCLE9BQU8sT0FBNytCLENBQXR4QixDQUE0d0QsQ0FBQyxZQUFZLEtBQWIsQ0FBbUIsU0FBUyxDQUFDLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxJQUFqRCxDQUFzRCxPQUFPLFNBQTdELENBQUQsQ0FBeUUsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLGNBQWpELENBQWdFLE9BQU8sU0FBdkUsQ0FBekUsQ0FBMkosQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLFFBQWpELENBQTBELE9BQU8sU0FBakUsQ0FBM0osQ0FBNUIsQ0FBb1EsT0FBTyxlQUEzUSxDQUEyUixPQUFPLE9BQWxTLENBQTV3RCxDQUF1akUsQ0FBQyxZQUFZLEtBQWIsQ0FBbUIsU0FBUyxDQUFDLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxJQUFqRCxDQUFzRCxPQUFPLFNBQTdELENBQUQsQ0FBeUUsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLGNBQWpELENBQWdFLE9BQU8sU0FBdkUsQ0FBekUsQ0FBMkosQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLFNBQWpELENBQTJELE9BQU8sU0FBbEUsQ0FBM0osQ0FBd08sQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLFNBQWpELENBQTJELE9BQU8sU0FBbEUsQ0FBeE8sQ0FBNUIsQ0FBa1YsT0FBTyxrQkFBelYsQ0FBNFcsT0FBTyxPQUFuWCxDQUF2akUsQ0FBbTdFLENBQUMsWUFBWSxLQUFiLENBQW1CLFNBQVMsQ0FBQyxDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sTUFBakQsQ0FBd0QsT0FBTyxTQUEvRCxDQUFELENBQTJFLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxRQUFqRCxDQUEwRCxPQUFPLFNBQWpFLENBQTNFLENBQTVCLENBQW9MLE9BQU8sVUFBM0wsQ0FBc00sT0FBTyxPQUE3TSxDQUFuN0UsQ0FBeW9GLENBQUMsWUFBWSxLQUFiLENBQW1CLFNBQVMsQ0FBQyxDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sSUFBakQsQ0FBc0QsT0FBTyxTQUE3RCxDQUFELENBQXlFLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxjQUFqRCxDQUFnRSxPQUFPLFNBQXZFLENBQXpFLENBQTJKLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxTQUFqRCxDQUEyRCxPQUFPLFNBQWxFLENBQTNKLENBQXdPLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxTQUFqRCxDQUEyRCxPQUFPLFNBQWxFLENBQXhPLENBQTVCLENBQWtWLE9BQU8sVUFBelYsQ0FBb1csT0FBTyxPQUEzVyxDQUF6b0YsQ0FBNi9GLENBQUMsWUFBWSxLQUFiLENBQW1CLFNBQVMsQ0FBQyxDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sSUFBakQsQ0FBc0QsT0FBTyxTQUE3RCxDQUFELENBQXlFLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxjQUFqRCxDQUFnRSxPQUFPLFNBQXZFLENBQXpFLENBQTJKLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxTQUFqRCxDQUEyRCxPQUFPLFNBQWxFLENBQTNKLENBQXdPLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxTQUFqRCxDQUEyRCxPQUFPLFNBQWxFLENBQXhPLENBQTVCLENBQWtWLE9BQU8sYUFBelYsQ0FBdVcsT0FBTyxPQUE5VyxDQUE3L0YsQ0FBbzNHLENBQUMsWUFBWSxLQUFiLENBQW1CLFNBQVMsQ0FBQyxDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sTUFBakQsQ0FBd0QsT0FBTyxTQUEvRCxDQUFELENBQTJFLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxVQUFqRCxDQUE0RCxPQUFPLFNBQW5FLENBQTNFLENBQTVCLENBQXNMLE9BQU8sc0JBQTdMLENBQW9OLE9BQU8sT0FBM04sQ0FBcDNHLENBQXdsSCxDQUFDLFlBQVksS0FBYixDQUFtQixTQUFTLENBQUMsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLE1BQWpELENBQXdELE9BQU8sU0FBL0QsQ0FBRCxDQUEyRSxDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sUUFBakQsQ0FBMEQsT0FBTyxTQUFqRSxDQUEzRSxDQUE1QixDQUFvTCxPQUFPLFVBQTNMLENBQXNNLE9BQU8sT0FBN00sQ0FBeGxILENBQTh5SCxDQUFDLFlBQVksS0FBYixDQUFtQixTQUFTLENBQUMsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLE1BQWpELENBQXdELE9BQU8sU0FBL0QsQ0FBRCxDQUEyRSxDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sVUFBakQsQ0FBNEQsT0FBTyxTQUFuRSxDQUEzRSxDQUF5SixDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sUUFBakQsQ0FBMEQsT0FBTyxTQUFqRSxDQUF6SixDQUE1QixDQUFrUSxPQUFPLFFBQXpRLENBQWtSLE9BQU8sT0FBelIsQ0FBOXlILENBQWdsSSxDQUFDLFlBQVksS0FBYixDQUFtQixTQUFTLENBQUMsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLE1BQWpELENBQXdELE9BQU8sU0FBL0QsQ0FBRCxDQUEyRSxDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sV0FBakQsQ0FBNkQsT0FBTyxTQUFwRSxDQUEzRSxDQUE1QixDQUF1TCxPQUFPLGNBQTlMLENBQTZNLE9BQU8sT0FBcE4sQ0FBaGxJLENBQTZ5SSxDQUFDLFlBQVksS0FBYixDQUFtQixTQUFTLENBQUMsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLE1BQWpELENBQXdELE9BQU8sU0FBL0QsQ0FBRCxDQUEyRSxDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sVUFBakQsQ0FBNEQsT0FBTyxTQUFuRSxDQUEzRSxDQUE1QixDQUFzTCxPQUFPLGFBQTdMLENBQTJNLE9BQU8sT0FBbE4sQ0FBN3lJLENBQXdnSixDQUFDLFlBQVksS0FBYixDQUFtQixTQUFTLENBQUMsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLElBQWpELENBQXNELE9BQU8sU0FBN0QsQ0FBRCxDQUF5RSxDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sVUFBakQsQ0FBNEQsT0FBTyxTQUFuRSxDQUF6RSxDQUF1SixDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sUUFBakQsQ0FBMEQsT0FBTyxTQUFqRSxDQUF2SixDQUE1QixDQUFnUSxPQUFPLG9CQUF2USxDQUE0UixPQUFPLE9BQW5TLENBQXhnSixDQUFvekosQ0FBQyxZQUFZLEtBQWIsQ0FBbUIsU0FBUyxDQUFDLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxNQUFqRCxDQUF3RCxPQUFPLFNBQS9ELENBQUQsQ0FBMkUsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLFVBQWpELENBQTRELE9BQU8sU0FBbkUsQ0FBM0UsQ0FBeUosQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLFFBQWpELENBQTBELE9BQU8sU0FBakUsQ0FBekosQ0FBNUIsQ0FBa1EsT0FBTyxnQkFBelEsQ0FBMFIsT0FBTyxPQUFqUyxDQUFwekosQ0FBOGxLLENBQUMsa0JBQWtCLFNBQW5CLENBQTZCLE9BQU8sVUFBcEMsQ0FBOWxLLENBQThvSyxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sVUFBcEIsQ0FBK0IsVUFBVSxFQUF6QyxDQUE0QyxrQkFBa0IsWUFBOUQsQ0FBMkUsT0FBTyxVQUFsRixDQUE5b0ssQ0FBNHVLLENBQUMsU0FBUyxFQUFWLENBQWEsT0FBTyxLQUFwQixDQUEwQixVQUFVLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUFELENBQXBDLENBQTRGLGtCQUFrQixNQUE5RyxDQUFxSCxPQUFPLFVBQTVILENBQTV1SyxDQUFvM0ssQ0FBQyxTQUFTLENBQUMsQ0FBQyxlQUFlLFdBQWhCLENBQTRCLE9BQU8sYUFBbkMsQ0FBaUQsT0FBTyxXQUF4RCxDQUFELENBQXNFLENBQUMsZUFBZSxNQUFoQixDQUF1QixPQUFPLFVBQTlCLENBQXlDLE9BQU8sTUFBaEQsQ0FBdEUsQ0FBVixDQUF5SSxPQUFPLFdBQWhKLENBQTRKLFVBQVUsRUFBdEssQ0FBeUssa0JBQWtCLFlBQTNMLENBQXdNLE9BQU8sVUFBL00sQ0FBcDNLLENBQStrTCxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sV0FBcEIsQ0FBZ0MsVUFBVSxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBRCxDQUExQyxDQUFrRyxrQkFBa0IsTUFBcEgsQ0FBMkgsT0FBTyxVQUFsSSxDQUEva0wsQ0FBNnRMLENBQUMsU0FBUyxFQUFWLENBQWEsT0FBTyxZQUFwQixDQUFpQyxVQUFVLEVBQTNDLENBQThDLGtCQUFrQixZQUFoRSxDQUE2RSxPQUFPLFVBQXBGLENBQTd0TCxDQUE2ekwsQ0FBQyxTQUFTLEVBQVYsQ0FBYSxPQUFPLFVBQXBCLENBQStCLFVBQVUsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQUQsQ0FBekMsQ0FBaUcsa0JBQWtCLE1BQW5ILENBQTBILE9BQU8sVUFBakksQ0FBN3pMLENBQTA4TCxDQUFDLFNBQVMsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxRQUFqQyxDQUEwQyxPQUFPLFNBQWpELENBQUQsQ0FBVixDQUF3RSxPQUFPLHNCQUEvRSxDQUFzRyxVQUFVLENBQUMsQ0FBQyxlQUFlLE1BQWhCLENBQXVCLE9BQU8sRUFBOUIsQ0FBaUMsT0FBTyxNQUF4QyxDQUFELENBQWhILENBQWtLLGtCQUFrQixNQUFwTCxDQUEyTCxPQUFPLFVBQWxNLENBQTE4TCxDQUF3cE0sQ0FBQyxTQUFTLEVBQVYsQ0FBYSxPQUFPLFdBQXBCLENBQWdDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxRQUFqQyxDQUEwQyxPQUFPLFNBQWpELENBQUQsQ0FBNkQsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sT0FBakMsQ0FBeUMsT0FBTyxTQUFoRCxDQUE3RCxDQUF3SCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxRQUFqQyxDQUEwQyxPQUFPLFNBQWpELENBQXhILENBQW9MLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFdBQWpDLENBQTZDLE9BQU8sU0FBcEQsQ0FBcEwsQ0FBbVAsQ0FBQyxlQUFlLE1BQWhCLENBQXVCLE9BQU8sVUFBOUIsQ0FBeUMsT0FBTyxNQUFoRCxDQUFuUCxDQUEyUyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxZQUFqQyxDQUE4QyxPQUFPLFNBQXJELENBQTNTLENBQTJXLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFlBQWpDLENBQThDLE9BQU8sU0FBckQsQ0FBM1csQ0FBMmEsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sWUFBakMsQ0FBOEMsT0FBTyxTQUFyRCxDQUEzYSxDQUEyZSxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxVQUFqQyxDQUE0QyxPQUFPLFNBQW5ELENBQTNlLENBQWQsQ0FBd2pCLGVBQWUsbUNBQXZrQixDQUEybUIsT0FBTyxFQUFsbkIsQ0FBcW5CLE9BQU8sU0FBNW5CLENBQUQsQ0FBd29CLENBQUMsYUFBYSxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFFBQWpDLENBQTBDLE9BQU8sU0FBakQsQ0FBRCxDQUE2RCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxRQUFqQyxDQUEwQyxPQUFPLFNBQWpELENBQTdELENBQWQsQ0FBd0ksZUFBZSw4QkFBdkosQ0FBc0wsT0FBTyxFQUE3TCxDQUFnTSxPQUFPLE9BQXZNLENBQXhvQixDQUExQyxDQUFtNEIsa0JBQWtCLE1BQXI1QixDQUE0NUIsT0FBTyxVQUFuNkIsQ0FBeHBNLENBQXVrTyxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sYUFBcEIsQ0FBa0MsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFFBQWpDLENBQTBDLE9BQU8sU0FBakQsQ0FBRCxDQUE2RCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxRQUFqQyxDQUEwQyxPQUFPLFNBQWpELENBQTdELENBQWQsQ0FBd0ksZUFBZSw4QkFBdkosQ0FBc0wsT0FBTyxFQUE3TCxDQUFnTSxPQUFPLE9BQXZNLENBQUQsQ0FBNUMsQ0FBOFAsa0JBQWtCLE1BQWhSLENBQXVSLE9BQU8sVUFBOVIsQ0FBdmtPLENBQWkzTyxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sZUFBcEIsQ0FBb0MsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFFBQWpDLENBQTBDLE9BQU8sU0FBakQsQ0FBRCxDQUE2RCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxPQUFqQyxDQUF5QyxPQUFPLFNBQWhELENBQTdELENBQXdILENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFFBQWpDLENBQTBDLE9BQU8sU0FBakQsQ0FBeEgsQ0FBb0wsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sV0FBakMsQ0FBNkMsT0FBTyxTQUFwRCxDQUFwTCxDQUFtUCxDQUFDLGVBQWUsTUFBaEIsQ0FBdUIsT0FBTyxVQUE5QixDQUF5QyxPQUFPLE1BQWhELENBQW5QLENBQTJTLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFlBQWpDLENBQThDLE9BQU8sU0FBckQsQ0FBM1MsQ0FBMlcsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sWUFBakMsQ0FBOEMsT0FBTyxTQUFyRCxDQUEzVyxDQUEyYSxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxZQUFqQyxDQUE4QyxPQUFPLFNBQXJELENBQTNhLENBQTJlLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFVBQWpDLENBQTRDLE9BQU8sU0FBbkQsQ0FBM2UsQ0FBZCxDQUF3akIsZUFBZSxtQ0FBdmtCLENBQTJtQixPQUFPLEVBQWxuQixDQUFxbkIsT0FBTyxTQUE1bkIsQ0FBRCxDQUE5QyxDQUF1ckIsa0JBQWtCLE1BQXpzQixDQUFndEIsT0FBTyxVQUF2dEIsQ0FBajNPLENBQW9sUSxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sZ0JBQXBCLENBQXFDLFVBQVUsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQUQsQ0FBdUQsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUF2RCxDQUE2RyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQTdHLENBQW1LLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBbkssQ0FBeU4sQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUF6TixDQUErUSxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQS9RLENBQS9DLENBQXFYLGtCQUFrQixNQUF2WSxDQUE4WSxPQUFPLFVBQXJaLENBQXBsUSxDQUFxL1EsQ0FBQyxTQUFTLEVBQVYsQ0FBYSxPQUFPLHVCQUFwQixDQUE0QyxVQUFVLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUFELENBQXVELENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBdkQsQ0FBNkcsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUE3RyxDQUFtSyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQW5LLENBQXlOLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBek4sQ0FBK1EsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUEvUSxDQUF0RCxDQUE0WCxrQkFBa0IsTUFBOVksQ0FBcVosT0FBTyxVQUE1WixDQUFyL1EsQ0FBNjVSLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFFBQWpDLENBQTBDLE9BQU8sU0FBakQsQ0FBRCxDQUFWLENBQXdFLE9BQU8sYUFBL0UsQ0FBNkYsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFFBQWpDLENBQTBDLE9BQU8sU0FBakQsQ0FBRCxDQUE2RCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxPQUFqQyxDQUF5QyxPQUFPLFNBQWhELENBQTdELENBQXdILENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFFBQWpDLENBQTBDLE9BQU8sU0FBakQsQ0FBeEgsQ0FBb0wsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sV0FBakMsQ0FBNkMsT0FBTyxTQUFwRCxDQUFwTCxDQUFtUCxDQUFDLGVBQWUsTUFBaEIsQ0FBdUIsT0FBTyxVQUE5QixDQUF5QyxPQUFPLE1BQWhELENBQW5QLENBQTJTLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFlBQWpDLENBQThDLE9BQU8sU0FBckQsQ0FBM1MsQ0FBMlcsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sWUFBakMsQ0FBOEMsT0FBTyxTQUFyRCxDQUEzVyxDQUEyYSxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxZQUFqQyxDQUE4QyxPQUFPLFNBQXJELENBQTNhLENBQTJlLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFVBQWpDLENBQTRDLE9BQU8sU0FBbkQsQ0FBM2UsQ0FBZCxDQUF3akIsZUFBZSxtQ0FBdmtCLENBQTJtQixPQUFPLEVBQWxuQixDQUFxbkIsT0FBTyxTQUE1bkIsQ0FBRCxDQUF2RyxDQUFndkIsa0JBQWtCLE1BQWx3QixDQUF5d0IsT0FBTyxVQUFoeEIsQ0FBNzVSLENBQXlyVCxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sTUFBcEIsQ0FBMkIsVUFBVSxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBRCxDQUF1RCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQXZELENBQTZHLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBN0csQ0FBbUssQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUFuSyxDQUF5TixDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQXpOLENBQStRLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBL1EsQ0FBcVUsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUFyVSxDQUFyQyxDQUFpYSxrQkFBa0IsTUFBbmIsQ0FBMGIsT0FBTyxVQUFqYyxDQUF6clQsQ0FBc29VLENBQUMsU0FBUyxFQUFWLENBQWEsT0FBTyxjQUFwQixDQUFtQyxVQUFVLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUFELENBQTdDLENBQXFHLGtCQUFrQixNQUF2SCxDQUE4SCxPQUFPLFVBQXJJLENBQXRvVSxDQUF1eFUsQ0FBQyxTQUFTLEVBQVYsQ0FBYSxPQUFPLGNBQXBCLENBQW1DLFVBQVUsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQUQsQ0FBN0MsQ0FBcUcsa0JBQWtCLE1BQXZILENBQThILE9BQU8sVUFBckksQ0FBdnhVLENBQXc2VSxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sT0FBcEIsQ0FBNEIsVUFBVSxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBRCxDQUF0QyxDQUE4RixrQkFBa0IsTUFBaEgsQ0FBdUgsT0FBTyxVQUE5SCxDQUF4NlUsQ0FBa2pWLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFNBQWpDLENBQTJDLE9BQU8sU0FBbEQsQ0FBRCxDQUFWLENBQXlFLE9BQU8sUUFBaEYsQ0FBeUYsVUFBVSxFQUFuRyxDQUFzRyxrQkFBa0IsWUFBeEgsQ0FBcUksT0FBTyxVQUE1SSxDQUFsalYsQ0FBMHNWLENBQUMsU0FBUyxFQUFWLENBQWEsT0FBTyxXQUFwQixDQUFnQyxVQUFVLEVBQTFDLENBQTZDLGtCQUFrQixZQUEvRCxDQUE0RSxPQUFPLFVBQW5GLENBQTFzVixDQUF5eVYsQ0FBQyxTQUFTLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sU0FBakMsQ0FBMkMsT0FBTyxTQUFsRCxDQUFELENBQVYsQ0FBeUUsT0FBTyxhQUFoRixDQUE4RixVQUFVLEVBQXhHLENBQTJHLGtCQUFrQixZQUE3SCxDQUEwSSxPQUFPLFVBQWpKLENBQXp5VixDQUFzOFYsQ0FBQyxTQUFTLEVBQVYsQ0FBYSxPQUFPLGdCQUFwQixDQUFxQyxVQUFVLEVBQS9DLENBQWtELGtCQUFrQixZQUFwRSxDQUFpRixPQUFPLFVBQXhGLENBQXQ4VixDQUEwaVcsQ0FBQyxTQUFTLEVBQVYsQ0FBYSxPQUFPLFlBQXBCLENBQWlDLFVBQVUsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQUQsQ0FBM0MsQ0FBbUcsa0JBQWtCLE1BQXJILENBQTRILE9BQU8sVUFBbkksQ0FBMWlXLENBQXlyVyxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sWUFBcEIsQ0FBaUMsVUFBVSxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBRCxDQUEzQyxDQUFtRyxrQkFBa0IsTUFBckgsQ0FBNEgsT0FBTyxVQUFuSSxDQUF6clcsQ0FBdzBXLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLGVBQWpDLENBQWlELE9BQU8sU0FBeEQsQ0FBRCxDQUFvRSxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxLQUFqQyxDQUF1QyxPQUFPLFNBQTlDLENBQXBFLENBQVYsQ0FBd0ksT0FBTyxPQUEvSSxDQUF1SixVQUFVLEVBQWpLLENBQW9LLGtCQUFrQixZQUF0TCxDQUFtTSxPQUFPLFVBQTFNLENBQXgwVyxDQUE4aFgsQ0FBQyxTQUFTLEVBQVYsQ0FBYSxPQUFPLFFBQXBCLENBQTZCLFVBQVUsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQUQsQ0FBdkMsQ0FBK0Ysa0JBQWtCLE1BQWpILENBQXdILE9BQU8sVUFBL0gsQ0FBOWhYLENBQXlxWCxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sUUFBcEIsQ0FBNkIsVUFBVSxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBRCxDQUF2QyxDQUErRixrQkFBa0IsTUFBakgsQ0FBd0gsT0FBTyxVQUEvSCxDQUF6cVgsQ0FBb3pYLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLE9BQWpDLENBQXlDLE9BQU8sU0FBaEQsQ0FBRCxDQUE0RCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxlQUFqQyxDQUFpRCxPQUFPLFNBQXhELENBQTVELENBQVYsQ0FBMEksT0FBTyxvQkFBakosQ0FBc0ssVUFBVSxFQUFoTCxDQUFtTCxrQkFBa0IsWUFBck0sQ0FBa04sT0FBTyxVQUF6TixDQUFwelgsQ0FBeWhZLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLE9BQWpDLENBQXlDLE9BQU8sU0FBaEQsQ0FBRCxDQUE0RCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxlQUFqQyxDQUFpRCxPQUFPLFNBQXhELENBQTVELENBQVYsQ0FBMEksT0FBTyxnQkFBakosQ0FBa0ssVUFBVSxFQUE1SyxDQUErSyxrQkFBa0IsWUFBak0sQ0FBOE0sT0FBTyxVQUFyTixDQUF6aFksQ0FBMHZZLENBQUMsa0JBQWtCLFNBQW5CLENBQTZCLE9BQU8sU0FBcEMsQ0FBMXZZLENBQTdCLENBSUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsWUFBdkIsQ0FBb0MsVUFBcEMsQ0FDSTtBQUlKLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFNBQXZCLENBQW1DLENBQ25DLEVBQUUsQ0FBRSxHQUQrQixDQUVuQyxJQUFJLENBQUUsTUFGNkIsQ0FHbkMsT0FBTyxDQUFFLEVBSDBCLENBQW5DLENBUUE7QUFDQSxNQUFNLENBQUMsTUFBUCxDQUFjLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUF4QyxDQUNBLEdBQUksTUFBTSxDQUFDLE1BQVAsRUFBZSxTQUFuQixDQUErQixNQUFNLENBQUMsTUFBUCxDQUFjLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixnQkFBeEMsQ0FDL0IsR0FBSSxNQUFNLENBQUMsTUFBUCxFQUFlLFNBQW5CLENBQThCLE1BQU0sQ0FBQyxNQUFQLENBQWMsQ0FBZCxDQUM5QixNQUFNLENBQUMsZUFBUCxDQUF1QixNQUF2QixDQUE4QixNQUFNLENBQUMsTUFBckMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQTZCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdkMsQ0FDQSxNQUFNLENBQUMsYUFBUCxDQUF3QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsWUFBbEQsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixRQUF2QixDQUFnQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsU0FBMUQsQ0FDQSxNQUFNLENBQUMsV0FBUCxDQUFtQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsV0FBN0MsQ0FDQSxNQUFNLENBQUMsY0FBUCxDQUF3QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZ0JBQWxELENBQ0EsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQWpELENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQWxELENBRUEsR0FBSyxNQUFNLENBQUMsY0FBUCxFQUF1QixTQUE1QixDQUF1QyxNQUFNLENBQUMsY0FBUCxDQUFzQixLQUF0QixDQUV2QyxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBd0MsQ0FBeEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxjQUFQLEVBQXVCLFNBQTNCLENBQ0EsQ0FDRSxNQUFNLENBQUMsY0FBUCxDQUF1QixDQUF2QixDQUVELENBQ0QsR0FBSSxNQUFNLENBQUMsYUFBUCxFQUFzQixTQUExQixDQUNBLENBQ0csTUFBTSxDQUFDLGFBQVAsQ0FBc0IsQ0FBdEIsQ0FDRixDQUNDLEdBQUksTUFBTSxDQUFDLGFBQVAsRUFBc0IsU0FBMUIsQ0FDQSxDQUNJLE1BQU0sQ0FBQyxhQUFQLENBQXNCLENBQXRCLENBQ0gsQ0FFSDtBQUNBLEdBQUksQ0FBQSxVQUFVLENBQUcsQ0FBQyxZQUFELENBQWpCLENBQ0E7QUFDQTtBQUNHLEdBQUksQ0FBQSxnQkFBZ0IsQ0FBRyxDQUFDLEdBQUcsQ0FBRSxDQUFDLENBQUMsT0FBTyxjQUFSLENBQXVCLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5DLENBQUQsQ0FBNkMsQ0FBQyxJQUFJLENBQUMsa0JBQU4sQ0FBeUIsS0FBSyxDQUFDLEVBQS9CLENBQTdDLENBQS9CLENBQUQsQ0FBTixDQUF5SCxPQUFPLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFOLENBQW9CLE1BQU0sQ0FBQyxLQUEzQixDQUFELENBQWxJLENBQXNLLElBQUksQ0FBRSxvQkFBNUssQ0FBaU0sUUFBUSxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBck4sQ0FBb08sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLGNBQTVQLENBQTJRLGVBQWUsQ0FBQyxNQUFNLENBQUMsYUFBbFMsQ0FBZ1QsTUFBTSxDQUFHLE1BQU0sQ0FBQyxPQUFoVSxDQUF3VSxhQUFhLENBQUcsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQS9XLENBQWlZLE1BQU0sQ0FBQyxVQUF4WSxDQUF2QixDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGFBQXZCLENBQXVDLHlCQUF5QixDQUFDLGNBQTFCLENBQXlDLGdCQUF6QyxDQUF2QyxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLE9BQXZCLENBQStCLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGFBQXRELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGFBQXpDLENBQ0E7QUFFSDtBQUNBLE1BQU0sQ0FBQyxHQUFQLENBQWEsbUJBQWIsQ0FFQSxHQUFJLENBQUEsc0JBQXNCLENBQUcsUUFBekIsQ0FBQSxzQkFBeUIsQ0FBUyxJQUFULENBQzdCLENBQ0csR0FBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFYLENBQUosQ0FBd0IsQ0FBeEIsR0FBOEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLElBQTFCLEVBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixDQUExRixDQUFKLENBQWtHLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUEyQixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFYLENBQS9CLENBQ2pHO0FBRUgsQ0FMRCxDQU1BLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLENBQTFCLEVBQStCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixJQUE3RCxDQUNBLENBRUcsR0FBSSxDQUFBLGVBQWUsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQWhDLENBQ0EsR0FBSSxDQUFBLGlCQUFpQixDQUFHLHNCQUFzQixNQUFNLENBQUMsTUFBN0IsQ0FBb0MsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFNBQXRGLENBQ0EsR0FBSSxDQUFBLFFBQVEsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsaUJBQXJCLENBQXVDLGVBQXZDLENBQXVELFdBQXZELENBQW1FLHNCQUFuRSxDQUFmLENBRUYsQ0FFQSxHQUFJLENBQUEsV0FBVyxDQUFHLFFBQWQsQ0FBQSxXQUFjLENBQVMsSUFBVCxDQUNqQixDQUNJLEdBQUksQ0FBQSxVQUFVLENBQUMsS0FBZixDQUNBLEdBQUksSUFBSSxFQUFFLFNBQVYsQ0FDQSxDQUNHLEdBQUksSUFBSSxFQUFJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUFuQyxDQUNBLENBQ0csR0FBSSxNQUFPLENBQUEsSUFBUCxHQUFlLFFBQW5CLENBQTZCLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF5QyxJQUF6QyxDQUE3QixJQUNLLElBQUksS0FBSyxDQUFDLE9BQU4sQ0FBYyxJQUFkLENBQUosQ0FDTCxDQUNHLEdBQUksSUFBSSxDQUFDLE1BQUwsQ0FBWSxDQUFoQixDQUNBLENBQ0MsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLENBQXlDLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxFQUFqRCxDQUNBLENBQ0gsQ0FOSSxJQU9MLENBQ0csTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLENBQTBDLElBQUksQ0FBQyxFQUEvQyxDQUNGLENBQ0QsVUFBVSxDQUFHLElBQWIsQ0FDRixDQUNILENBQ0Q7QUFDQSxHQUFJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixFQUEyQyxJQUEvQyxDQUFxRCxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBd0MsQ0FBeEMsQ0FFckQsR0FBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBd0MsQ0FBeEMsRUFBNkMsVUFBakQsQ0FBNkQsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsdUJBQXZCLEdBR2hFLENBM0JGLENBOEJELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLEVBQXNCLFNBQTFCLENBQXFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixFQUFyQixDQUVyQyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixpQkFBekIsQ0FDQSxDQUVHO0FBQ0E7QUFFQSxHQUFJLENBQUEsaUJBQWUsQ0FBRyxRQUFRLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBeEMsQ0FDQSxHQUFJLENBQUEsbUJBQWlCLENBQUcsMkJBQTJCLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixnQkFBaEQsQ0FBaUUsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGNBQW5ILENBQ0EsR0FBSSxDQUFBLE9BQU8sQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsbUJBQXRCLENBQXdDLElBQXhDLENBQWQsQ0FDQSxHQUFJLENBQUEsVUFBUSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixtQkFBckIsQ0FBdUMsaUJBQXZDLENBQXVELGNBQXZELENBQXNFLFdBQXRFLENBQWYsQ0FDQSxHQUFJLENBQUEsR0FBRyxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsUUFBWCxDQUFvQixtQkFBcEIsQ0FBVixDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF5QyxHQUFHLENBQUMsRUFBN0MsQ0FFRztBQUNILEdBQUksTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLEVBQTJDLElBQS9DLENBQXFELE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF3QyxDQUF4QyxDQUVyRCxHQUFJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF3QyxDQUE1QyxDQUErQyxNQUFNLENBQUMsZUFBUCxDQUF1Qix1QkFBdkIsR0FDakQsQ0FFRDtBQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXVCLFFBQXZCLEdBQWtDLE1BQWxDLENBQXlDLENBQXpDLENBQTJDLENBQTNDLEdBQStDLEdBQW5ELENBQ0EsQ0FDSztBQUNYO0FBQ0EsaUZBR1EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsRUFBdUIsU0FBdkIsRUFBb0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLEVBQXVCLElBQS9ELENBRUEsQ0FFUSxHQUFJLENBQUEsaUJBQWUsQ0FBRyxRQUFRLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBeEMsQ0FDRDtBQUNDLEdBQUksQ0FBQSxtQkFBaUIsQ0FBRyxzQkFBc0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFoQyxDQUE0QyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsY0FBOUYsQ0FDQSxHQUFJLENBQUEsVUFBUSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixtQkFBckIsQ0FBdUMsaUJBQXZDLENBQXVELGNBQXZELENBQXNFLFdBQXRFLENBQWYsQ0FFUCxDQUVGLENBRUQsR0FBSSxDQUFBLG1CQUFtQixDQUFHLFFBQXRCLENBQUEsbUJBQXNCLEVBRTFCLENBQ0csTUFBTSxDQUFDLGVBQVAsQ0FBdUIsdUJBQXZCLEdBRUYsQ0FMRCxDQU1BLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFNBQXJCLEVBQWdDLFNBQXBDLENBQ0EsQ0FDRyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixTQUFyQixFQUFnQyxFQUFwQyxDQUNBLENBQ0csR0FBSSxDQUFBLGdCQUFnQixDQUFHLFFBQVEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF6QyxDQUNBLEdBQUksQ0FBQSxrQkFBa0IsQ0FBRyxPQUFPLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixjQUExRCxDQUNBLEdBQUksQ0FBQSxTQUFTLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLGtCQUFyQixDQUF3QyxnQkFBeEMsQ0FBeUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFNBQTlFLENBQXdGLG1CQUF4RixDQUFoQixDQUNGLENBQ0gsQ0FFRCxNQUFNLENBQUMsZUFBUCxDQUF1QixjQUF2QixDQUFzQyxTQUFTLGlCQUFULENBQ3RDLENBRU0sR0FBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixpQkFBdkIsRUFBMEMsU0FBOUMsQ0FDQSxDQUNHLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGlCQUF2QixDQUEyQyxpQkFBM0MsQ0FDRixDQUhELElBSUEsQ0FDRyxHQUFJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGlCQUF2QixFQUEwQyxDQUExQyxFQUErQyxNQUFNLENBQUMsZUFBUCxDQUF1QixpQkFBdkIsRUFBMEMsaUJBQTdGLENBQWdILE1BQU0sQ0FBQyxlQUFQLENBQXVCLGlCQUF2QixDQUEyQyxpQkFBM0MsQ0FBaEgsSUFDSyxDQUFBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGlCQUF2QixDQUF5QyxDQUF6QyxDQUNQLENBRU4sQ0FaRCxDQWNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFFBQXZCLENBQWtDLFNBQVMsSUFBVCxDQUFjLElBQWQsQ0FBbUIsS0FBbkIsQ0FBeUIsR0FBekIsQ0FDbEMsQ0FDRyxlQUFlLENBQUMsUUFBaEIsQ0FBeUIsSUFBekIsQ0FBOEIsSUFBOUIsQ0FBbUMsS0FBbkMsRUFDQSxHQUFJLEdBQUosQ0FBUyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixHQUE1QixDQUFnQyxNQUFoQyxFQUNYLENBSkQsQ0FNQSxNQUFNLENBQUMsZUFBUCxDQUF1QixjQUF2QixDQUF3QyxVQUFZLENBRTlDLG9CQUFvQixDQUFDLGlCQUFyQixDQUF1QyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQWpELEVBQTBELElBQTFELENBQStELFNBQVMsSUFBVCxDQUFlLENBRTdEO0FBQ0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLENBQXFCLElBQUksQ0FBQyxJQUExQixDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGNBQXZCLENBQXdDLElBQXhDLENBRUcsQ0FOckIsQ0FNc0IsU0FBUyxLQUFULENBQWUsQ0FFbkIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0QsQ0FUakIsRUFVSCxDQVpILENBYUE7QUFHQSxNQUFNLENBQUMsZUFBUCxDQUF1Qix1QkFBdkIsQ0FBaUQsU0FBUyxTQUFULENBQW1CLENBQzVELEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixJQUE5QixDQUNBLENBQ0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQTJCLENBQTNCLENBRUQsQ0FDRCxNQUFNLENBQUMsZUFBUCxDQUF1QixVQUF2QixDQUFrQyxLQUFsQyxDQUNBLG9CQUFvQixDQUFDLGVBQXJCLENBQXFDLFNBQXJDLENBQStDLEdBQS9DLENBQW1ELElBQW5ELEVBQXlELElBQXpELENBQThELFNBQVMsSUFBVCxDQUFlLENBRTNELE1BQU0sQ0FBQyxlQUFQLENBQXVCLHdCQUF2QixDQUFpRCxJQUFJLENBQUMsSUFBTCxDQUFVLGtCQUEzRCxDQUNBLEdBQUksS0FBSyxDQUFDLE9BQU4sQ0FBYyxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQXhCLENBQUosQ0FBc0MsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsU0FBdkIsQ0FBaUMsT0FBakMsQ0FBeUMsTUFBekMsQ0FBbUQsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUE3RCxDQUV0QyxHQUFJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixFQUE2QyxTQUFqRCxDQUNDLENBQ0MsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLElBQTVDLENBQWlELE1BQU0sQ0FBQyxlQUFQLENBQXVCLHdCQUF2QixDQUFnRCxJQUFqRyxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxTQUE1QyxDQUFzRCxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQWhFLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLGNBQTVDLENBQTJELE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBckUsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsV0FBNUMsQ0FBd0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFsRSxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxhQUE1QyxDQUEwRCxNQUFNLENBQUMsZUFBUCxDQUF1QixhQUF2QixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQS9DLENBQTFELENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLGVBQTVDLENBQTRELE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBdEUsQ0FDQSxDQVJGLElBU0ksQ0FDRixNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxlQUFQLENBQXVCLHdCQUF2QixDQUFnRCxJQUF4RCxDQUE2RCxZQUFZLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBbkYsQ0FBNEYsaUJBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBdkgsQ0FBd0ksY0FBYyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQWhLLENBQTZLLGdCQUFnQixNQUFNLENBQUMsZUFBUCxDQUF1QixhQUF2QixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQS9DLENBQTdMLENBQTBQLGtCQUFrQixNQUFNLENBQUMsRUFBUCxDQUFVLGVBQXRSLENBQTVDLENBRUQsQ0FDRCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUEvQixDQUVMO0FBQzNCO0FBQ0E7QUFDQSwrQkF2QjJGLENBeUIzRDtBQUNBLHlCQUF5QixDQUFDLE9BQTFCLENBQWtDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBcEIsQ0FBb0MsR0FBRyxDQUFFLENBQUMsQ0FBQyxPQUFPLGNBQVIsQ0FBdUIsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQU4sQ0FBbUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBbkMsQ0FBRCxDQUE2QyxDQUFDLElBQUksQ0FBQyxrQkFBTixDQUF5QixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBekMsQ0FBN0MsQ0FBL0IsQ0FBRCxDQUF6QyxDQUFsQyxFQUVFLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE4QyxJQUE5QyxDQUNBO0FBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsVUFBdkIsQ0FBa0MsSUFBbEMsQ0FFSDtBQUNDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFFBQXZCLENBQWdDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFNBQXZCLENBQWlDLE9BQWpDLENBQXlDLE1BQXpFLENBQWdGLFVBQWhGLENBQTJGLEtBQTNGLEVBRUMsQ0FuQ25CLENBbUNvQixTQUFTLEtBQVQsQ0FBZSxDQUNkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUVMLENBdENoQixFQXdDUCxDQWhERCxDQWtEQSxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsQ0FBMEIsU0FBUyxLQUFULENBQWUsQ0FFdEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLENBQWxCLENBQ0EsR0FBSSxLQUFLLEVBQUUsS0FBWCxDQUFrQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsQ0FBbEIsQ0FDbEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUE2QixLQUE3QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUEwQixJQUExQixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBNkIsSUFBN0IsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBMEIsSUFBMUIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBMEIsSUFBMUIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTZCLElBQTdCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQTBCLElBQTFCLENBRUEsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsRUFBdUIsU0FBM0IsQ0FDQSxDQUNHLElBQUksQ0FBQyxHQUFMLENBQVMsV0FBVCxHQUF1QixJQUF2QixDQUE0QixTQUFVLE1BQVYsQ0FBa0IsQ0FDcEMsUUFBUSxDQUFDLFVBQVUsQ0FDZCxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsQ0FBd0IsTUFBTSxDQUFDLENBQUQsQ0FBOUIsQ0FDQyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBdUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFqQyxDQUE2QyxLQUE3QyxFQUNELE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUFzQixLQUF0QixFQUNKLENBSk8sQ0FBUixDQUtULENBTkQsRUFRRixDQVZELElBV0EsQ0FDRSxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBdUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFqQyxDQUE2QyxLQUE3QyxFQUNGLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUFzQixLQUF0QixFQUVDLENBR0gsQ0E5QkQsQ0FnQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXlCLFNBQVMsTUFBVCxDQUFnQixLQUFoQixDQUFzQixDQUVsQyxHQUFJLENBQUEsWUFBSixDQUNBLEdBQUksQ0FBQSxRQUFKLENBQ0EsR0FBSSxDQUFBLGVBQWUsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQWhDLENBQ0EsR0FBSSxLQUFLLEVBQUUsT0FBWCxDQUNBLENBQ0UsWUFBWSxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBeEIsQ0FDQSxRQUFRLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxpQkFBckIsQ0FDRCxDQUpELElBS0EsQ0FDRSxZQUFZLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF4QixDQUNBLFFBQVEsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLGlCQUFyQixDQUdELENBRVIsR0FBSSxDQUFBLElBQUosQ0FDQSxHQUFJLE1BQU0sQ0FBQyxRQUFYLENBQ0EsQ0FDQyxJQUFJLENBQUUsR0FBSSxDQUFBLElBQUosQ0FBUyxNQUFNLENBQUMsUUFBaEIsQ0FBTixDQUNBLENBSEQsSUFHTSxJQUFJLE1BQU0sQ0FBQyxJQUFYLENBQ04sQ0FDRyxJQUFJLENBQUUsR0FBSSxDQUFBLElBQUosQ0FBUyxNQUFNLENBQUMsSUFBaEIsQ0FBTixDQUNGLENBSEssSUFJTixDQUNHLElBQUksQ0FBRyxJQUFQLENBQ0EsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsa0NBQTVCLENBQStELE9BQS9ELEVBQ0YsQ0FFRSxHQUFJLElBQUksRUFBRSxJQUFWLENBQ0EsQ0FDaUIsR0FBSSxDQUFBLFNBQVMsQ0FBRyxHQUFJLENBQUEsSUFBSSxDQUFDLEdBQUwsQ0FBUyxRQUFiLENBQXNCLFFBQXRCLENBQStCLFlBQS9CLENBQWhCLENBR0EsU0FBUyxDQUFDLE9BQVYsQ0FBa0IsU0FBbEIsQ0FBNEIsTUFBNUIsQ0FBbUMsZUFBbkMsRUFBb0QsSUFBcEQsR0FBMkQsSUFBM0QsQ0FBZ0UsU0FBVSxhQUFWLENBQXlCLENBQ3pGLEdBQUksQ0FBQSxHQUFHLENBQUcsSUFBSSxDQUFDLEtBQUwsQ0FBVyxPQUFYLENBQW1CLGFBQW5CLENBQWtDLE9BQWxDLENBQVYsQ0FFQSxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFzQixHQUF0QixDQUEyQixDQUF2QyxDQUFSLENBQ0MsQ0FKRCxFQUtiLENBRVosQ0ExQ0QsQ0E0Q0csTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXlCLFVBQVUsQ0FFMUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQTBCLElBQTFCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUE2QixJQUE3QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUEwQixJQUExQixDQUNDLEdBQUksQ0FBQSxJQUFKLENBQ0EsR0FBSSxDQUFBLFlBQUosQ0FBaUIsUUFBakIsQ0FDQSxHQUFJLENBQUEsT0FBTyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBeEIsQ0FDQSxHQUFJLENBQUEsS0FBSyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBdEIsQ0FDQSxHQUFJLENBQUEsS0FBSyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQXRCLENBQ0EsR0FBSSxLQUFLLEVBQUUsT0FBWCxDQUNBLENBQ0UsWUFBWSxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBeEIsQ0FDQSxRQUFRLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxpQkFBckIsQ0FDRCxDQUpELElBS0EsQ0FDRSxZQUFZLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF4QixDQUNBLFFBQVEsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLGlCQUFyQixDQUdELENBQ0QsR0FBSSxNQUFNLENBQUMsUUFBWCxDQUNFLENBQ0MsSUFBSSxDQUFFLEdBQUksQ0FBQSxJQUFKLENBQVMsTUFBTSxDQUFDLFFBQWhCLENBQU4sQ0FDQSxDQUhILElBR1EsSUFBSSxNQUFNLENBQUMsSUFBWCxDQUNOLENBQ0csSUFBSSxDQUFFLEdBQUksQ0FBQSxJQUFKLENBQVMsTUFBTSxDQUFDLElBQWhCLENBQU4sQ0FDRixDQUhLLElBSU4sQ0FDRyxJQUFJLENBQUcsSUFBUCxDQUNBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLDZCQUE1QixDQUEwRCxPQUExRCxFQUNGLENBRUUsR0FBSSxJQUFJLEVBQUUsSUFBVixDQUNBLENBQ1EsR0FBSSxDQUFBLFNBQVMsQ0FBRyxHQUFJLENBQUEsSUFBSSxDQUFDLEdBQUwsQ0FBUyxRQUFiLENBQXNCLFFBQXRCLENBQStCLFlBQS9CLENBQWhCLENBRUEsU0FBUyxDQUFDLE9BQVYsQ0FBa0IsSUFBbEIsQ0FBeUIsS0FBekIsQ0FDQSxHQUFJLENBQUEsVUFBVSxDQUFHLElBQUksQ0FBQyxLQUFMLENBQVcsS0FBWCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsUUFBeEIsRUFBakIsQ0FBcUQsT0FBckQsQ0FBakIsQ0FFQSxTQUFTLENBQUMsT0FBVixDQUFrQixPQUFsQixDQUEwQixPQUExQixDQUFrQyxVQUFsQyxFQUE4QyxJQUE5QyxHQUNDLEVBREQsQ0FDSSxpQkFESixDQUN1QixTQUFTLElBQVQsQ0FBYyxDQUVqQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBMkIsSUFBM0IsQ0FDVixNQUFNLENBQUMsRUFBUCxDQUFVLFFBQVYsQ0FBbUIsSUFBbkIsQ0FBeUIsQ0FEM0IsQ0FBUixDQUdGLENBTkYsRUFPRSxFQVBGLENBT0ssY0FQTCxDQU9xQixTQUFTLGtCQUFULENBQTZCLE9BQTdCLENBQXFDLENBQ3RELEdBQUksa0JBQWtCLENBQUMsQ0FBdkIsQ0FDQSxDQUNBLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLGtCQUF4QixDQUNWLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBVixDQUFtQixLQUFuQixDQUVDLENBSEgsQ0FBUixDQUlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF1QixNQUFNLENBQUMsRUFBUCxDQUFVLFdBQWpDLENBQTZDLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQXZELEVBQ0EsQ0FDSCxDQWhCRixFQWlCRSxFQWpCRixDQWlCSyxTQWpCTCxDQWlCZ0IsU0FBUyxPQUFULENBQWlCLENBQ2pDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLENBQXNCLE9BQXRCLENBQ1gsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLE9BQU8sQ0FBQyxNQUExQixDQUNDLENBRkYsQ0FBUixDQUlFO0FBRUEsQ0F4QkYsRUF5QkQsRUF6QkMsQ0F5QkUsT0F6QkYsQ0F5QlcsU0FBUyxLQUFULENBQWdCLE9BQWhCLENBQXlCLENBQUU7QUFDcEMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsS0FBSyxDQUFDLE9BQTlCLENBQ3JCLEdBQUksT0FBTyxFQUFFLFNBQWIsQ0FBeUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLE9BQU8sQ0FBQyxNQUExQixDQUN2QixDQUZPLENBQVIsQ0FHSCxDQTdCQyxFQWdDYixDQXZDSyxJQXVDQyxDQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLDZCQUE1QixDQUEwRCxPQUExRCxFQUVsQixDQTFFRSxDQTRFRixNQUFNLENBQUMsRUFBUCxDQUFVLEtBQVYsQ0FBa0IsVUFBVSxDQUVoQixHQUFJLENBQUEsWUFBSixDQUFpQixRQUFqQixDQUNBLEdBQUksQ0FBQSxlQUFlLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFoQyxDQUNBLEdBQUksQ0FBQSxXQUFXLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBNUIsQ0FDQSxHQUFJLENBQUEsS0FBSyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBdEIsQ0FDQSxHQUFJLENBQUEsS0FBSyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQXRCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQTBCLElBQTFCLENBQ0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUE2QixJQUE3QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUEwQixJQUExQixDQUNBLEdBQUksQ0FBQSxJQUFKLENBQ0MsR0FBSSxLQUFLLEVBQUUsT0FBWCxDQUNBLENBQ0UsWUFBWSxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBeEIsQ0FDQSxRQUFRLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxpQkFBckIsQ0FDRCxDQUpELElBS0EsQ0FDRSxZQUFZLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF4QixDQUNBLFFBQVEsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLGlCQUFyQixDQUdELENBQ0YsR0FBSSxNQUFNLENBQUMsUUFBWCxDQUNBLENBQ0MsSUFBSSxDQUFFLEdBQUksQ0FBQSxJQUFKLENBQVMsTUFBTSxDQUFDLFFBQWhCLENBQU4sQ0FDQSxDQUhELElBR00sSUFBSSxNQUFNLENBQUMsSUFBWCxDQUNOLENBQ0csSUFBSSxDQUFFLEdBQUksQ0FBQSxJQUFKLENBQVMsTUFBTSxDQUFDLElBQWhCLENBQU4sQ0FDRixDQUhLLElBSU4sQ0FDRyxJQUFJLENBQUcsSUFBUCxDQUNBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLGtDQUE1QixDQUErRCxPQUEvRCxFQUNGLENBRUosR0FBSSxJQUFJLEVBQUUsSUFBVixDQUNBLENBR2lCLEdBQUksQ0FBQSxZQUFZLENBQUcsR0FBSSxDQUFBLElBQUksQ0FBQyxHQUFMLENBQVMsUUFBYixDQUFzQixXQUF0QixDQUFrQyxlQUFsQyxDQUFuQixDQUVBLFlBQVksQ0FBQyxPQUFiLENBQXFCLElBQXJCLENBQTRCLEtBQTVCLENBQ0EsR0FBSSxDQUFBLFVBQVUsQ0FBRyxJQUFJLENBQUMsS0FBTCxDQUFXLEtBQVgsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLENBQXNCLFFBQXRCLEVBQWpCLENBQW1ELE9BQW5ELENBQWpCLENBQ0EsWUFBWSxDQUFDLE9BQWIsQ0FBcUIsS0FBckIsQ0FBMkIsWUFBM0IsQ0FBd0MsVUFBeEMsRUFBb0QsSUFBcEQsR0FDQyxFQURELENBQ0ksaUJBREosQ0FDdUIsU0FBUyxJQUFULENBQWMsQ0FFakMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTJCLElBQTNCLENBQ1YsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLENBQW1CLElBQW5CLENBQXlCLENBRDNCLENBQVIsQ0FHRixDQU5GLEVBT0UsRUFQRixDQU9LLGNBUEwsQ0FPcUIsU0FBUyxrQkFBVCxDQUE2QixPQUE3QixDQUFxQyxDQUN0RCxHQUFJLGtCQUFrQixDQUFDLENBQXZCLENBQ0EsQ0FDQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUF3QixrQkFBeEIsQ0FDVixNQUFNLENBQUMsRUFBUCxDQUFVLFFBQVYsQ0FBbUIsS0FBbkIsQ0FDQyxDQUZILENBQVIsQ0FHQSxDQUNILENBZEYsRUFlRSxFQWZGLENBZUssU0FmTCxDQWVnQixTQUFTLE9BQVQsQ0FBaUIsQ0FDaEMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsQ0FBc0IsT0FBdEIsQ0FDWCxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsT0FBTyxDQUFDLE1BQTFCLENBQ0MsQ0FGRixDQUFSLENBR0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXVCLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBakMsQ0FBNkMsS0FBN0MsRUFDQTtBQUVBLENBdEJGLEVBdUJELEVBdkJDLENBdUJFLE9BdkJGLENBdUJXLFNBQVMsS0FBVCxDQUFnQixPQUFoQixDQUF5QixDQUFFO0FBQ3JDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLEtBQUssQ0FBQyxPQUE5QixDQUNuQixNQUFNLENBQUMsRUFBUCxDQUFVLFFBQVYsQ0FBbUIsS0FBbkIsQ0FDQSxHQUFJLE9BQU8sRUFBRSxTQUFiLENBQXdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixPQUFPLENBQUMsTUFBMUIsQ0FDdkIsQ0FITSxDQUFSLENBSUYsQ0E1QkMsRUE4QkY7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FDbUIsQ0EvQ0osSUErQ1UsQ0FBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0Qiw2QkFBNUIsQ0FBMEQsT0FBMUQsRUFFbEIsQ0FuRkEsQ0FxRkQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQW1CLFNBQVMsS0FBVCxDQUFlLEtBQWYsQ0FBcUIsQ0FFbEMsR0FBSSxDQUFBLElBQUosQ0FFQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsSUFBVixDQUFlLEtBQWYsR0FBdUIsU0FBM0IsQ0FBc0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLENBQWUsS0FBZixFQUF3QixDQUFDLFlBQVksQ0FBRyxJQUFoQixDQUFxQixlQUFlLENBQUcsSUFBdkMsQ0FBNEMsWUFBWSxDQUFHLElBQTNELENBQWdFLE9BQU8sQ0FBQyxJQUF4RSxDQUE2RSxVQUFVLENBQUMsSUFBeEYsQ0FBNkYsTUFBTSxDQUFHLElBQXRHLENBQXhCLENBQXRDLElBRUEsQ0FDRyxNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsQ0FBZSxLQUFmLEVBQXNCLFlBQXRCLENBQW1DLElBQW5DLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLENBQWUsS0FBZixFQUFzQixlQUF0QixDQUF3QyxJQUF4QyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsSUFBVixDQUFlLEtBQWYsRUFBc0IsWUFBdEIsQ0FBcUMsSUFBckMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsQ0FBZSxLQUFmLEVBQXNCLFVBQXRCLENBQW1DLElBQW5DLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLENBQWUsS0FBZixFQUFzQixPQUF0QixDQUFnQyxJQUFoQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsSUFBVixDQUFlLEtBQWYsRUFBc0IsTUFBdEIsQ0FBK0IsSUFBL0IsQ0FFRixDQUVELE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF1QixLQUF2QixDQUVBLEdBQUksTUFBTSxDQUFDLFFBQVgsQ0FDQSxDQUNDLElBQUksQ0FBRSxHQUFJLENBQUEsSUFBSixDQUFTLE1BQU0sQ0FBQyxRQUFoQixDQUFOLENBQ0EsQ0FIRCxJQUdNLElBQUksTUFBTSxDQUFDLElBQVgsQ0FDTixDQUNHLElBQUksQ0FBRSxHQUFJLENBQUEsSUFBSixDQUFTLE1BQU0sQ0FBQyxJQUFoQixDQUFOLENBQ0YsQ0FISyxJQUlOLENBQ0csSUFBSSxDQUFHLElBQVAsQ0FDQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixrQ0FBNUIsQ0FBK0QsT0FBL0QsRUFDRixDQUVFLEdBQUksSUFBSSxFQUFFLElBQVYsQ0FDQSxDQUNTLEdBQUksQ0FBQSxlQUFlLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFoQyxDQUNBLEdBQUksQ0FBQSxXQUFXLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBNUIsQ0FFQSxHQUFJLENBQUEsWUFBWSxDQUFHLEdBQUksQ0FBQSxJQUFJLENBQUMsR0FBTCxDQUFTLFFBQWIsQ0FBc0IsV0FBdEIsQ0FBa0MsZUFBbEMsQ0FBbkIsQ0FFQSxJQUFJLENBQUMsR0FBTCxDQUFTLFdBQVQsR0FBdUIsSUFBdkIsQ0FBNEIsU0FBVSxNQUFWLENBQWtCLENBQ3hDLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUF3QixNQUFNLENBQUMsQ0FBRCxDQUE5QixDQUVBLFlBQVksQ0FBQyxPQUFiLENBQXFCLElBQXJCLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBdEMsQ0FFSCxHQUFJLEtBQUosQ0FDQSxDQUNHLFlBQVksQ0FBQyxPQUFiLENBQXFCLFdBQXJCLENBQWlDLEtBQWpDLEVBQXdDLElBQXhDLEdBQ0UsRUFERixDQUNLLGlCQURMLENBQ3dCLFNBQVMsSUFBVCxDQUFjLENBRWhDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLENBQWUsS0FBZixFQUFzQixlQUF0QixDQUFzQyxJQUF0QyxDQUNqQixNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsQ0FBZSxLQUFmLEVBQXNCLE9BQXRCLENBQThCLElBQTlCLENBQ0MsQ0FGSSxDQUFSLENBSUwsQ0FQRCxFQVFDLEVBUkQsQ0FRSSxjQVJKLENBUW9CLFNBQVMsa0JBQVQsQ0FBNkIsT0FBN0IsQ0FBcUMsQ0FDdEQsR0FBSSxrQkFBa0IsQ0FBQyxDQUF2QixDQUNHLENBQ0csUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsQ0FBZSxLQUFmLEVBQXNCLFlBQXRCLENBQW1DLGtCQUFuQyxDQUNqQixNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsQ0FBZSxLQUFmLEVBQXNCLE9BQXRCLENBQThCLEtBQTlCLENBRUMsQ0FISSxDQUFSLENBSUYsQ0FDTixDQWhCRCxFQWlCQyxFQWpCRCxDQWlCSSxTQWpCSixDQWlCZSxTQUFTLE9BQVQsQ0FBaUIsQ0FDN0IsUUFBUSxDQUFDLFVBQVUsQ0FDYixNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsQ0FBZSxLQUFmLEVBQXNCLFVBQXRCLENBQWlDLE9BQWpDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLENBQWUsS0FBZixFQUFzQixNQUF0QixDQUE2QixPQUFPLENBQUMsTUFBckMsQ0FHTCxDQUxPLENBQVIsQ0FPQSxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsR0FHRixDQTVCRCxFQTZCQyxFQTdCRCxDQTZCSSxPQTdCSixDQTZCYSxTQUFTLEtBQVQsQ0FBZ0IsT0FBaEIsQ0FBeUIsQ0FBRTtBQUNwQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsSUFBVixDQUFlLEtBQWYsRUFBc0IsWUFBdEIsQ0FBbUMsS0FBSyxDQUFDLE9BQXpDLENBQ1osR0FBSSxPQUFPLEVBQUUsU0FBYixDQUF3QixNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsQ0FBZSxLQUFmLEVBQXNCLE1BQXRCLENBQTZCLE9BQU8sQ0FBQyxNQUFyQyxDQUN2QixNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsQ0FBZSxLQUFmLEVBQXNCLE9BQXRCLENBQThCLEtBQTlCLENBQXFDLENBRnRDLENBQVIsQ0FHSCxDQWpDRCxFQW1DRixDQXJDRCxJQXNDSSxDQUNFLFlBQVksQ0FBQyxPQUFiLENBQXFCLE1BQXJCLENBQTRCLEtBQTVCLEVBQW1DLElBQW5DLEdBQ0MsRUFERCxDQUNJLGlCQURKLENBQ3VCLFNBQVMsSUFBVCxDQUFjLENBRWxDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLENBQWUsS0FBZixFQUFzQixlQUF0QixDQUFzQyxJQUF0QyxDQUNYLE1BQU0sQ0FBQyxFQUFQLENBQVUsSUFBVixDQUFlLEtBQWYsRUFBc0IsT0FBdEIsQ0FBOEIsSUFBOUIsQ0FBb0MsQ0FEckMsQ0FBUixDQUdGLENBTkQsRUFPQyxFQVBELENBT0ksY0FQSixDQU9vQixTQUFTLGtCQUFULENBQTZCLE9BQTdCLENBQXFDLENBQ3RELEdBQUksa0JBQWtCLENBQUMsQ0FBdkIsQ0FDQSxDQUNBLFFBQVEsQ0FBQyxVQUFVLENBQ2hCLE1BQU0sQ0FBQyxFQUFQLENBQVUsSUFBVixDQUFlLEtBQWYsRUFBc0IsWUFBdEIsQ0FBbUMsa0JBQW5DLENBQ00sTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLENBQWUsS0FBZixFQUFzQixPQUF0QixDQUE4QixLQUE5QixDQUFxQyxDQUZ0QyxDQUFSLENBR0MsQ0FDSCxDQWRELEVBZUMsRUFmRCxDQWVJLFNBZkosQ0FlZSxTQUFTLE9BQVQsQ0FBaUIsQ0FFakMsUUFBUSxDQUFDLFVBQVUsQ0FFVixNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsQ0FBZSxLQUFmLEVBQXNCLFVBQXRCLENBQWlDLE9BQWpDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLENBQWUsS0FBZixFQUFzQixNQUF0QixDQUE2QixPQUFPLENBQUMsTUFBckMsQ0FHQyxDQU5GLENBQVIsQ0FPRSxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsR0FHQSxDQTNCRCxFQTRCRixFQTVCRSxDQTRCQyxPQTVCRCxDQTRCVSxTQUFTLEtBQVQsQ0FBZ0IsT0FBaEIsQ0FBeUIsQ0FBRTtBQUNwQyxRQUFRLENBQUMsVUFBVSxDQUNYLE1BQU0sQ0FBQyxFQUFQLENBQVUsSUFBVixDQUFlLEtBQWYsRUFBc0IsWUFBdEIsQ0FBbUMsS0FBSyxDQUFDLE9BQXpDLENBRUEsR0FBSSxPQUFPLEVBQUUsU0FBYixDQUF5QixNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsQ0FBZSxLQUFmLEVBQXNCLE1BQXRCLENBQTZCLE9BQU8sQ0FBQyxNQUFyQyxDQUN4QixNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsQ0FBZSxLQUFmLEVBQXNCLE9BQXRCLENBQThCLEtBQTlCLENBQXFDLENBSnRDLENBQVIsQ0FNSCxDQW5DRSxFQXFDTCxDQUNaLENBbEZRLEVBb0ZYLENBRU4sQ0EzSEQsQ0E2SEEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXVCLFNBQVMsS0FBVCxDQUFlLENBRTFCLEdBQUksQ0FBQSxJQUFKLENBQ0MsR0FBSSxDQUFBLFlBQUosQ0FBaUIsUUFBakIsQ0FFQSxHQUFJLEtBQUssRUFBRSxPQUFYLENBQ0EsQ0FDRSxZQUFZLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF4QixDQUNBLFFBQVEsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLGlCQUFyQixDQUNELENBSkQsSUFLQSxDQUNFLFlBQVksQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXhCLENBQ0EsUUFBUSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsaUJBQXJCLENBR0QsQ0FDVCxHQUFJLE1BQU0sQ0FBQyxRQUFYLENBQ0MsQ0FDQyxJQUFJLENBQUUsR0FBSSxDQUFBLElBQUosQ0FBUyxNQUFNLENBQUMsUUFBaEIsQ0FBTixDQUNBLENBSEYsSUFHTyxJQUFJLE1BQU0sQ0FBQyxJQUFYLENBQ04sQ0FDRyxJQUFJLENBQUUsR0FBSSxDQUFBLElBQUosQ0FBUyxNQUFNLENBQUMsSUFBaEIsQ0FBTixDQUNGLENBSEssSUFJTixDQUNHLElBQUksQ0FBRyxJQUFQLENBQ0EsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsa0NBQTVCLENBQStELE9BQS9ELEVBQ0YsQ0FFRSxHQUFJLElBQUksRUFBRSxJQUFWLENBQ0EsQ0FDaUIsR0FBSSxDQUFBLFNBQVMsQ0FBRyxHQUFJLENBQUEsSUFBSSxDQUFDLEdBQUwsQ0FBUyxRQUFiLENBQXNCLFFBQXRCLENBQStCLFlBQS9CLENBQWhCLENBR0EsU0FBUyxDQUFDLE9BQVYsQ0FBa0IsU0FBbEIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUF0QyxFQUFtRCxJQUFuRCxHQUEwRCxJQUExRCxDQUErRCxTQUFVLE9BQVYsQ0FBbUIsQ0FDbEYsR0FBSSxDQUFBLEdBQUcsQ0FBRyxJQUFJLENBQUMsS0FBTCxDQUFXLE9BQVgsQ0FBbUIsT0FBbkIsQ0FBNEIsT0FBNUIsQ0FBVixDQUNBLEdBQUksR0FBRyxFQUFFLEdBQVQsQ0FDQSxDQUNRLE1BQU0sQ0FBQyxnQkFBUCxDQUEwQixLQUExQixDQUNBLE1BQU0sQ0FBQyxpQkFBUCxDQUEyQixzQkFBM0IsQ0FDUCxDQUpELElBSU0sQ0FBQSxNQUFNLENBQUMsZ0JBQVAsQ0FBMEIsSUFBMUIsQ0FDTixRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxhQUFQLENBQXVCLEdBQUcsQ0FBRSxRQUE1QixDQUFzQyxDQUFsRCxDQUFSLENBQ0MsQ0FSRCxFQVNYLENBQ0wsQ0EzQ1YsQ0ErQ0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXlCLFNBQVMsWUFBVCxDQUFzQixDQUM3QyxHQUFJLENBQUEsTUFBSixDQUVELEdBQUksTUFBTSxDQUFDLFFBQVgsQ0FDQyxDQUNDLElBQUksQ0FBRSxHQUFJLENBQUEsSUFBSixDQUFTLE1BQU0sQ0FBQyxRQUFoQixDQUFOLENBQ0EsQ0FIRixJQUdPLElBQUksTUFBTSxDQUFDLElBQVgsQ0FDTixDQUNHLElBQUksQ0FBRSxHQUFJLENBQUEsSUFBSixDQUFTLE1BQU0sQ0FBQyxJQUFoQixDQUFOLENBQ0YsQ0FISyxJQUlOLENBQ0csSUFBSSxDQUFHLElBQVAsQ0FDQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixrQ0FBNUIsQ0FBK0QsT0FBL0QsRUFDRixDQUVFLEdBQUksSUFBSSxFQUFFLElBQVYsQ0FDQSxDQUdBLE1BQU0sQ0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUwsQ0FBVyxPQUFYLENBQW1CLFlBQW5CLENBQWlDLE9BQWpDLENBQUQsQ0FBTixDQUFrRCxjQUFsRCxDQUFpRSxTQUFqRSxDQUE0RSxDQUFFLHFCQUFxQixDQUFFLEVBQXpCLENBQTVFLENBQVQsQ0FFQyxDQUVKO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsYUFDVyxNQUFPLENBQUEsTUFBUCxDQUNBLENBN0JELENBZ0NBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFzQixTQUFTLEtBQVQsQ0FBZSxRQUFmLENBQXdCLE1BQXhCLENBQStCLFlBQS9CLENBQTRDLENBQ2hFLEdBQUksQ0FBQSxNQUFKLENBQVcsWUFBWCxDQUVBLEdBQUksQ0FBQSxXQUFXLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLEtBQXpCLENBQWxCLENBQ0EsR0FBSSxNQUFNLENBQUMsUUFBWCxDQUNBLENBQ0MsSUFBSSxDQUFFLEdBQUksQ0FBQSxJQUFKLENBQVMsTUFBTSxDQUFDLFFBQWhCLENBQU4sQ0FDQSxDQUhELElBR00sSUFBSSxNQUFNLENBQUMsSUFBWCxDQUNOLENBQ0csSUFBSSxDQUFFLEdBQUksQ0FBQSxJQUFKLENBQVMsTUFBTSxDQUFDLElBQWhCLENBQU4sQ0FDRixDQUhLLElBSU4sQ0FDRyxJQUFJLENBQUcsSUFBUCxDQUNBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLDZCQUE1QixDQUEwRCxPQUExRCxFQUNGLENBRUUsR0FBSSxJQUFJLEVBQUUsSUFBVixDQUNBLENBRUEsTUFBTSxDQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBTCxDQUFXLE9BQVgsQ0FBbUIsTUFBbkIsQ0FBMkIsT0FBM0IsQ0FBRCxDQUFmLENBQ0EsWUFBWSxDQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBTCxDQUFXLE9BQVgsQ0FBbUIsWUFBbkIsQ0FBaUMsT0FBakMsQ0FBRCxDQUFyQixDQUNBLEdBQUksV0FBVyxFQUFFLFFBQWpCLENBQTJCLE1BQU0sQ0FBRyxNQUFNLENBQUMsWUFBaEIsQ0FBM0IsSUFDSyxDQUFBLE1BQU0sQ0FBRyxZQUFULENBQ0wsTUFBTSxDQUFHLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFNBQXRCLENBQWlDLENBQUUscUJBQXFCLENBQUUsQ0FBekIsQ0FBakMsQ0FBVCxDQUVGLENBRUYsTUFBTyxDQUFBLE1BQVAsQ0FDQSxDQTVCRCxDQThCQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBdUIsU0FBUyxLQUFULENBQWUsQ0FFbEMsR0FBSSxLQUFLLENBQUMsUUFBTixFQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLFdBQTlCLENBQTJDLE1BQU8sTUFBUCxDQUEzQyxJQUNLLE9BQU8sS0FBUCxDQUNQLENBSkYsQ0FTQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBdUIsU0FBUyxlQUFULENBQXlCLENBQzlDLEdBQUksQ0FBQSxRQUFKLENBQ0EsR0FBSSxDQUFBLE9BQU8sQ0FBRyxDQUFFLE9BQU8sQ0FBRSxPQUFYLENBQW9CLElBQUksQ0FBRSxTQUExQixDQUFxQyxLQUFLLENBQUUsT0FBNUMsQ0FBcUQsR0FBRyxDQUFFLFNBQTFELENBQW9FLElBQUksQ0FBRSxTQUExRSxDQUFxRixNQUFNLENBQUMsU0FBNUYsQ0FBc0csTUFBTSxDQUFDLFNBQTdHLENBQXVILE1BQU0sQ0FBQyxLQUE5SCxDQUFkLENBQ0EsUUFBUSxDQUFHLEdBQUksQ0FBQSxJQUFKLENBQVMsZUFBZSxDQUFDLElBQXpCLEVBQStCLGtCQUEvQixDQUFrRCxTQUFsRCxDQUE0RCxPQUE1RCxDQUFYLENBRUQsTUFBTyxDQUFBLFFBQVAsQ0FDQSxDQU5ELENBUUYsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQTJCLFNBQVMsWUFBVCxDQUFzQixDQUVoRCxHQUFJLENBQUEsV0FBSixDQUNBLEdBQUksWUFBWSxDQUFDLFdBQWIsSUFBNkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLFdBQXpCLEVBQWpDLENBQ0EsQ0FDRyxXQUFXLENBQUMsT0FBWixDQUNGLENBSEQsSUFJQSxDQUNHLFdBQVcsQ0FBQyxLQUFaLENBRUYsQ0FDRCxNQUFPLENBQUEsV0FBUCxDQUNBLENBWkQsQ0FjQSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBbUIsVUFBVSxDQUU1QixHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBNkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUEzQyxDQUFzRCxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsQ0FBd0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFsQyxDQUF0RCxJQUNLLENBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLENBQXdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQWxDLENBR0wsQ0FORCxDQU9BLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBVixDQUE0QixVQUFVLENBRXJDLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUEwQixNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFwQyxDQUVBLENBSkQsQ0FLQSxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsQ0FBd0IsU0FBUyxLQUFULENBQWUsQ0FDakMsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUVELEdBQUksTUFBTSxDQUFDLFFBQVgsQ0FDRCxDQUNDLElBQUksQ0FBRSxHQUFJLENBQUEsSUFBSixDQUFTLE1BQU0sQ0FBQyxRQUFoQixDQUFOLENBQ0EsQ0FIQSxJQUdLLElBQUksTUFBTSxDQUFDLElBQVgsQ0FDTixDQUNHLElBQUksQ0FBRSxHQUFJLENBQUEsSUFBSixDQUFTLE1BQU0sQ0FBQyxJQUFoQixDQUFOLENBQ0YsQ0FISyxJQUlOLENBQ0csSUFBSSxDQUFHLElBQVAsQ0FDQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0Qiw2QkFBNUIsQ0FBMEQsT0FBMUQsRUFDRixDQUVFLEdBQUksSUFBSSxFQUFFLElBQVYsQ0FDQSxDQUNHLElBQUksQ0FBQyxHQUFMLENBQVMsV0FBVCxHQUF1QixJQUF2QixDQUE0QixTQUFVLE1BQVYsQ0FBa0IsQ0FDMUMsUUFBUSxDQUFDLFVBQVUsQ0FDZCxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsQ0FBd0IsTUFBTSxDQUFDLENBQUQsQ0FBOUIsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixFQUF1QixJQUEzQixDQUNBLENBRUc7QUFDQSxHQUFJLENBQUEsZUFBZSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBaEMsQ0FDQSxHQUFJLENBQUEsV0FBVyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQTVCLENBRUEsR0FBSSxDQUFBLFlBQVksQ0FBRyxHQUFJLENBQUEsSUFBSSxDQUFDLEdBQUwsQ0FBUyxRQUFiLENBQXNCLFdBQXRCLENBQWtDLGVBQWxDLENBQW5CLENBRUUsWUFBWSxDQUFDLE9BQWIsQ0FBcUIsSUFBckIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUF0QyxDQUVBLFlBQVksQ0FBQyxPQUFiLENBQXFCLFdBQXJCLEdBQW1DLElBQW5DLEdBQTBDLElBQTFDLENBQStDLFNBQVUsSUFBVixDQUFnQixDQUUzRCxHQUFJLEtBQUssRUFBRSxPQUFYLENBQW9CLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBVixDQUEwQixJQUFJLENBQUMsS0FBTCxDQUFXLE9BQVgsQ0FBbUIsSUFBSSxDQUFDLE1BQXhCLENBQStCLE9BQS9CLENBQTFCLENBQXBCLElBQ0ssQ0FBQSxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsQ0FBMEIsSUFBSSxDQUFDLEtBQUwsQ0FBVyxPQUFYLENBQW1CLElBQUksQ0FBQyxNQUF4QixDQUErQixPQUEvQixDQUExQixDQUdKLFlBQVksQ0FBQyxPQUFiLENBQXFCLHFCQUFyQixHQUE2QyxJQUE3QyxHQUFvRCxJQUFwRCxDQUF5RCxTQUFVLElBQVYsQ0FBZ0IsQ0FFMUUsUUFBUSxDQUFDLFVBQVUsQ0FDaEIsR0FBSSxLQUFLLEVBQUUsT0FBWCxDQUFvQixNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsSUFBSSxDQUFDLEtBQUwsQ0FBVyxPQUFYLENBQW1CLElBQUksQ0FBQyxDQUFELENBQXZCLENBQTJCLE9BQTNCLENBQXhCLENBQXBCLElBQ0ssQ0FBQSxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsSUFBSSxDQUFDLEtBQUwsQ0FBVyxPQUFYLENBQW1CLElBQUksQ0FBQyxDQUFELENBQXZCLENBQTJCLE9BQTNCLENBQXhCLENBQ0wsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUErQixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFYLENBQU4sQ0FBZ0MsY0FBaEMsQ0FBK0MsU0FBL0MsQ0FBMEQsQ0FBRSxxQkFBcUIsQ0FBRSxFQUF6QixDQUExRCxDQUEvQixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBNkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQTBCLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBakUsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLHFCQUFWLENBQWtDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFYLENBQU4sQ0FBbUMsY0FBbkMsQ0FBa0QsU0FBbEQsQ0FBNkQsQ0FBRSxxQkFBcUIsQ0FBRSxFQUF6QixDQUE3RCxDQUFsQyxDQUNGLENBTk8sQ0FBUixDQU9GLENBVEcsQ0FVTCxTQUFTLEtBQVQsQ0FBZSxDQUNYLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxPQUFsQyxDQUEwQyxPQUExQyxFQUNGLENBWkcsRUFjSixDQXBCRCxDQXFCQSxTQUFTLEtBQVQsQ0FBZSxDQUNYLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxPQUFsQyxDQUEwQyxPQUExQyxFQUNGLENBdkJGLEVBeUJBLFlBQVksQ0FBQyxPQUFiLENBQXFCLHFCQUFyQixHQUE2QyxJQUE3QyxHQUFvRCxJQUFwRCxDQUF5RCxTQUFVLElBQVYsQ0FBZ0IsQ0FFckUsR0FBSSxLQUFLLEVBQUUsT0FBWCxDQUFvQixNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsSUFBSSxDQUFDLFlBQTdCLENBQXBCLElBQ0ssQ0FBQSxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsSUFBSSxDQUFDLFlBQTdCLENBRVIsQ0FMRCxDQU1BLFNBQVMsS0FBVCxDQUFlLENBQ1gsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLE9BQWxDLENBQTBDLE9BQTFDLEVBQ0YsQ0FSRixFQVlKLENBaERELElBZ0RNLENBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsNkJBQTVCLENBQTBELE9BQTFELEVBQ1YsQ0FuRE8sQ0FBUixDQW9ESCxDQXJERCxDQXFERSxTQUFTLEtBQVQsQ0FBZSxDQUNYLFFBQVEsQ0FBQyxVQUFVLENBRWhCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFzQixLQUFLLENBQUMsT0FBNUIsQ0FFRixDQUpPLENBQVIsQ0FLTCxDQTNERCxFQThERCxDQUVSLENBakZELENBc0ZBLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUEwQixVQUFVLENBQzlCLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsS0FBckIsQ0FDQTtBQUVGLEdBQUksTUFBTSxDQUFDLFFBQVgsQ0FDQSxDQUNDLElBQUksQ0FBRSxHQUFJLENBQUEsSUFBSixDQUFTLE1BQU0sQ0FBQyxRQUFoQixDQUFOLENBQ0EsQ0FIRCxJQUdNLElBQUksTUFBTSxDQUFDLElBQVgsQ0FDTixDQUNHLElBQUksQ0FBRSxHQUFJLENBQUEsSUFBSixDQUFTLE1BQU0sQ0FBQyxJQUFoQixDQUFOLENBQ0YsQ0FISyxJQUlOLENBQ0csSUFBSSxDQUFHLElBQVAsQ0FDQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0Qiw2QkFBNUIsQ0FBMEQsT0FBMUQsRUFDRixDQUVFLEdBQUksSUFBSSxFQUFFLElBQVYsQ0FDQSxDQUlHLElBQUksQ0FBQyxHQUFMLENBQVMsV0FBVCxHQUF1QixJQUF2QixDQUE0QixTQUFVLE1BQVYsQ0FBa0IsQ0FFckMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLENBQXdCLE1BQU0sQ0FBQyxDQUFELENBQTlCLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsRUFBdUIsSUFBM0IsQ0FDQSxDQUVHO0FBQ0EsR0FBSSxDQUFBLGVBQWUsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQWhDLENBQ0EsR0FBSSxDQUFBLFdBQVcsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUE1QixDQUVBLEdBQUksQ0FBQSxZQUFZLENBQUcsR0FBSSxDQUFBLElBQUksQ0FBQyxHQUFMLENBQVMsUUFBYixDQUFzQixXQUF0QixDQUFrQyxlQUFsQyxDQUFuQixDQUVFLFlBQVksQ0FBQyxPQUFiLENBQXFCLElBQXJCLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBdEMsQ0FFQSxZQUFZLENBQUMsT0FBYixDQUFxQixhQUFyQixHQUFxQyxJQUFyQyxHQUE0QyxJQUE1QyxDQUFpRCxTQUFVLElBQVYsQ0FBZ0IsQ0FFN0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLENBQXdCLElBQUksQ0FBQyxLQUFMLENBQVcsSUFBSSxDQUFDLEdBQUwsR0FBYSxJQUF4QixDQUF4QixDQUVBLFFBQVEsQ0FBQyxVQUFVLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLENBQXFCLElBQXJCLENBQTBCLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixJQUFyQixDQUEyQixDQUFsRSxDQUFSLENBRUgsQ0FORCxDQU9BLFNBQVMsS0FBVCxDQUFlLENBQ1gsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLE9BQWxDLENBQTBDLE9BQTFDLEVBQ0YsQ0FURixFQWFKLENBeEJELElBd0JNLENBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsNkJBQTVCLENBQTBELE9BQTFELEVBRWQsQ0E3QkQsQ0E2QkUsU0FBUyxLQUFULENBQWUsQ0FDWCxRQUFRLENBQUMsVUFBVSxDQUVoQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBc0IsS0FBSyxDQUFDLE9BQTVCLENBRUYsQ0FKTyxDQUFSLENBS0wsQ0FuQ0QsRUFzQ0QsQ0FFUixDQTlERCxDQWtFQTtBQUVBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGVBQXZCLENBQXlDLFVBQVUsQ0FDN0MsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFVBQXZCLENBQWtDLEtBQWxDLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsSUFBOUIsQ0FDQSxDQUNLLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixDQUF6QixDQUVKLENBQ0QsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsV0FBdkIsQ0FBbUMsSUFBbkMsQ0FFRCxvQkFBb0IsQ0FBQyx1QkFBckIsQ0FBNkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF2RCxDQUErRCxNQUFNLENBQUMsTUFBdEUsQ0FBNkUsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsUUFBcEcsQ0FBNkcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF2SCxDQUFzSSxHQUF0SSxDQUEwSSxJQUExSSxFQUFnSixJQUFoSixDQUFxSixTQUFTLElBQVQsQ0FBZSxDQUVoSixNQUFNLENBQUMsZUFBUCxDQUF1Qix3QkFBdkIsQ0FBaUQsSUFBSSxDQUFDLElBQUwsQ0FBVSxrQkFBM0QsQ0FDQSxHQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUF4QixDQUFKLENBQXNDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFNBQXZCLENBQWlDLE9BQWpDLENBQXlDLE1BQXpDLENBQW1ELElBQUksQ0FBQyxJQUFMLENBQVUsT0FBN0QsQ0FFdkMsR0FBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsRUFBNkMsU0FBakQsQ0FDQSxDQUNDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxJQUE1QyxDQUFpRCxNQUFNLENBQUMsZUFBUCxDQUF1Qix3QkFBdkIsQ0FBZ0QsSUFBakcsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsU0FBNUMsQ0FBc0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFoRSxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxjQUE1QyxDQUEyRCxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXJFLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLFdBQTVDLENBQXdELE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBbEUsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsYUFBNUMsQ0FBMEQsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsYUFBdkIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUEvQyxDQUExRCxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxlQUE1QyxDQUE0RCxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQXRFLENBQ0EsQ0FSRCxJQVNHLENBQ0YsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLENBQUMsT0FBTyxNQUFNLENBQUMsZUFBUCxDQUF1Qix3QkFBdkIsQ0FBZ0QsSUFBeEQsQ0FBNkQsWUFBWSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5GLENBQTRGLGlCQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXZILENBQXdJLGNBQWMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFoSyxDQUE2SyxnQkFBZ0IsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsYUFBdkIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUEvQyxDQUE3TCxDQUEwUCxrQkFBa0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUF0UixDQUE1QyxDQUVELENBRUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBL0IsQ0FJQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBOEMsSUFBOUMsQ0FFQSxRQUFRLENBQUMsVUFBVSxDQUNoQixNQUFNLENBQUMsZUFBUCxDQUF1QixVQUF2QixDQUFrQyxJQUFsQyxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFdBQXZCLENBQW1DLEtBQW5DLENBQ0YsQ0FITyxDQUFSLENBTUY7QUFDRSxNQUFNLENBQUMsZUFBUCxDQUF1QixRQUF2QixDQUFnQyxNQUFNLENBQUMsZUFBUCxDQUF1QixTQUF2QixDQUFpQyxPQUFqQyxDQUF5QyxNQUF6RSxDQUFnRixVQUFoRixDQUEyRixLQUEzRixFQUVDLENBbENuQixDQWtDb0IsU0FBUyxLQUFULENBQWUsQ0FDZCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDRixNQUFNLENBQUMsZUFBUCxDQUF1QixXQUF2QixDQUFtQyxLQUFuQyxDQUdILENBdkNoQixFQXlDUCxDQW5EQyxDQXNEQSxNQUFNLENBQUMsZUFBUCxDQUF1Qix1QkFBdkIsQ0FBaUQsVUFBVSxDQUNyRCxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsVUFBdkIsQ0FBa0MsS0FBbEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixJQUExQixFQUFrQyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsU0FBaEUsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUEyQixDQUEzQixDQUVELENBRUQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsRUFBMkIsSUFBM0IsRUFBbUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFWLEVBQTJCLFNBQWxFLENBQ0EsQ0FDRSxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsQ0FBNEIsQ0FBNUIsQ0FFRCxDQUtBLEdBQUksTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLEVBQXlDLFNBQXpDLEVBQXNELE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixFQUF5QyxDQUFuRyxDQUNBLENBRUcsR0FBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBd0MsaUJBQXhDLEdBQTRELFNBQTVELEVBQXlFLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF3QyxpQkFBeEMsR0FBNEQsRUFBckksRUFBMkksTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLENBQXdDLFdBQXhDLEdBQXNELE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBL00sQ0FBd04sTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLENBQTBDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF3QyxpQkFBeEMsQ0FBMUMsQ0FFMU4sQ0FDRCxHQUFJLE1BQU8sQ0FBQSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBOUIsR0FBa0QsUUFBbEQsRUFBOEQsTUFBTyxDQUFBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUE5QixHQUFrRCxRQUFwSCxDQUNBLENBRUcsR0FBSSxLQUFLLENBQUMsT0FBTixDQUFjLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUFyQyxDQUFKLENBQ0EsQ0FDRyxHQUFJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF3QyxNQUF4QyxDQUErQyxDQUFuRCxDQUNBLENBQ0csTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLENBQXlDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF3QyxDQUF4QyxFQUEyQyxFQUFwRixDQUVGLENBQ0gsQ0FQRCxJQVFLLENBQUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLENBQTBDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF3QyxFQUFsRixDQUNQLENBRUYsb0JBQW9CLENBQUMsK0JBQXJCLENBQXFELE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBL0QsQ0FBdUUsTUFBTSxDQUFDLGNBQTlFLENBQTZGLE1BQU0sQ0FBQyxhQUFwRyxDQUFrSCxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQTVILENBQXlJLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBbkosQ0FBbUssTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUE3SyxDQUE0TCxNQUFNLENBQUMsYUFBbk0sQ0FBaU4sTUFBTSxDQUFDLGVBQVAsQ0FBdUIsUUFBeE8sQ0FBaVAsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsVUFBeFEsQ0FBbVIsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQTFTLENBQTJULEdBQTNULENBQStULElBQS9ULEVBQXFVLElBQXJVLENBQTBVLFNBQVMsSUFBVCxDQUFlLENBRXJVLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBMUIsRUFBNkMsSUFBSSxDQUFDLElBQUwsQ0FBVSxTQUF2RCxDQUNBLEdBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUExQixHQUEyQyxTQUEvQyxDQUEwRCxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTFCLEVBQTBDLEVBQTFDLENBQzFELE1BQU0sQ0FBQyxlQUFQLENBQXVCLHdCQUF2QixDQUFpRCxJQUFJLENBQUMsSUFBTCxDQUFVLGtCQUEzRCxDQUNBLEdBQUksS0FBSyxDQUFDLE9BQU4sQ0FBYyxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQXhCLENBQUosQ0FBc0MsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsU0FBdkIsQ0FBaUMsT0FBakMsQ0FBeUMsTUFBekMsQ0FBbUQsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUE3RCxDQUV0QyxHQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBMUIsRUFBMEMsTUFBMUMsQ0FBaUQsQ0FBckQsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUEwQyxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTFCLEVBQTBDLENBQTFDLEVBQTZDLElBQTdDLENBQTFDLENBQ0QsQ0FDRCxNQUFNLENBQUMsZUFBUCxDQUF1QixlQUF2QixDQUF1QyxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBOUQsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixFQUE2QyxTQUFqRCxDQUNELENBQ0MsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLElBQTVDLENBQWlELE1BQU0sQ0FBQyxlQUFQLENBQXVCLHdCQUF2QixDQUFnRCxJQUFqRyxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxTQUE1QyxDQUFzRCxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQWhFLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLGNBQTVDLENBQTJELE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBckUsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsV0FBNUMsQ0FBd0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFsRSxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxhQUE1QyxDQUEwRCxNQUFNLENBQUMsZUFBUCxDQUF1QixhQUF2QixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQS9DLENBQTFELENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLGVBQTVDLENBQTRELE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBdEUsQ0FDQSxDQVJBLElBU0UsQ0FDRixNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxlQUFQLENBQXVCLHdCQUF2QixDQUFnRCxJQUF4RCxDQUE2RCxZQUFZLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBbkYsQ0FBNEYsaUJBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBdkgsQ0FBd0ksY0FBYyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQWhLLENBQTZLLGdCQUFnQixNQUFNLENBQUMsZUFBUCxDQUF1QixhQUF2QixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQS9DLENBQTdMLENBQTBQLGtCQUFrQixNQUFNLENBQUMsRUFBUCxDQUFVLGVBQXRSLENBQTVDLENBRUQsQ0FDRztBQUVGO0FBQ0csTUFBTSxDQUFDLGVBQVAsQ0FBdUIsVUFBdkIsQ0FBa0MsSUFBbEMsQ0FDRDtBQUNDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFdBQXZCLENBQW1DLEtBQW5DLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQThDLElBQTlDLENBRUg7QUFHRjtBQUNBLHlCQUF5QixDQUFDLE9BQTFCLENBQWtDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBcEIsQ0FBb0MsR0FBRyxDQUFFLENBQUMsQ0FBQyxPQUFPLGNBQVIsQ0FBdUIsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQU4sQ0FBbUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBbkMsQ0FBRCxDQUE2QyxDQUFDLElBQUksQ0FBQyxrQkFBTixDQUF5QixLQUFLLENBQUMsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXRELENBQTdDLENBQS9CLENBQUQsQ0FBekMsQ0FBbEMsRUFFRDtBQUNDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFFBQXZCLENBQWdDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFNBQXZCLENBQWlDLE9BQWpDLENBQXlDLE1BQXpFLENBQWdGLFVBQWhGLENBQTJGLEtBQTNGLEVBQ0MsQ0F6Q25CLENBeUNvQixTQUFTLEtBQVQsQ0FBZSxDQUNkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUVMLENBNUNoQixFQThDUCxDQXBGQyxDQXVGRyxNQUFNLENBQUMsZUFBUCxDQUF1QixrQkFBdkIsQ0FBNEMsU0FBUyxFQUFULENBQWMsQ0FFdkQsR0FBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsRUFBNkMsU0FBakQsQ0FBNEQsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLEVBQTVDLENBQzVELEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsWUFBdkIsQ0FBb0MsR0FBcEMsQ0FBd0MsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUFwRSxFQUFzRSxPQUF0RSxDQUE4RSxFQUE5RSxDQUFWLENBRUEsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFXLENBQ1QsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLEVBQTVDLENBQWlELE1BQU0sQ0FBQyxlQUFQLENBQXVCLFlBQXZCLENBQW9DLEdBQXBDLEVBQXlDLEVBQTFGLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLElBQTVDLENBQW1ELE1BQU0sQ0FBQyxlQUFQLENBQXVCLFlBQXZCLENBQW9DLEdBQXBDLEVBQXlDLElBQTVGLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZUFBdkIsQ0FBeUMsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsWUFBdkIsQ0FBb0MsR0FBcEMsQ0FBekMsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsY0FBNUMsQ0FBNkQsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLElBQTVDLENBQWtELElBQWxELENBQXVELE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxFQUFuRyxDQUF1RyxHQUFwSyxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLHNCQUF2QixDQUE4QyxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBckUsQ0FDQyxDQUNYLENBWkssQ0FlRDtBQUNULE1BQU0sQ0FBQyxlQUFQLENBQXVCLFlBQXZCLENBQXNDLFVBQVksQ0FFdkMsR0FBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixZQUF2QixFQUFxQyxTQUF6QyxDQUFvRCxNQUFNLENBQUMsZUFBUCxDQUF1QixZQUF2QixDQUFvQyxFQUFwQyxDQUVwRCxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0Esb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLElBQTlDLENBQW1ELGVBQW5ELEVBQW9FLElBQXBFLENBQ04sU0FBUyxJQUFULENBQWUsQ0FFUixNQUFNLENBQUMsZUFBUCxDQUF1QixZQUF2QixDQUFzQyxJQUFJLENBQUMsSUFBM0MsQ0FDVSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixFQUFtQixJQUF2QixDQUNBLENBQ0MsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsa0JBQXZCLENBQTBDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBcEQsRUFFQyxDQUVaLENBVkQsQ0FVRSxTQUFTLEtBQVQsQ0FBZSxDQUNHLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNwQixDQVpBLEVBYU4sQ0FsQkwsQ0FxQkMsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsRUFBbUIsSUFBbkIsRUFBNEIsQ0FBQyxNQUFNLENBQUMsY0FBcEMsRUFBc0QsQ0FBQyxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBbEYsQ0FDQSxDQUVFO0FBQ0E7QUFDQTtBQUVELENBUEQsSUFPTSxJQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixFQUFtQixJQUF2QixDQUNOLENBQ0c7QUFDQTtBQUNBO0FBRUYsQ0FTUyxHQUFJLENBQUEsUUFBSixDQUNBLFFBQVEsQ0FBRyxjQUFjLENBQUMsR0FBZixDQUFtQiwwQ0FBbkIsQ0FBWCxDQUNBLFFBQVEsQ0FBQyxNQUFULENBQWdCLFFBQVEsQ0FBQyxRQUFELENBQVIsQ0FBbUIsTUFBbkIsQ0FBaEIsRUFHTCxDQTFuQ2EsQ0FBakIsQ0E0bkNELE1BQU8sQ0FDRyxRQUFRLENBQUUsR0FEYixDQUdHLFVBQVUsQ0FBRSxVQUhmLENBSUcsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUVuQyxDQU5KLENBQVAsQ0FTRCxFQUNELGFBRU8sUUFBUyxDQUFBLE9BQVQsRUFBb0IsQ0FDbkIsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBR0YsV0FBVyxDQUFFLG1DQUhYLENBSUYsVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBZ0IsZUFBaEIsQ0FBZ0MseUJBQWhDLENBQTBELGNBQTFELENBQXlFLG1EQUc5RixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBc0IsQ0FDckIsa0JBQWtCLENBQUUsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLEtBQVgsQ0FBRixDQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLE1BQVgsQ0FBcEIsQ0FBdUMsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxLQUFYLENBQXZDLENBQXlELENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsS0FBWCxDQUF6RCxDQUEyRSxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLE9BQVgsQ0FBM0UsQ0FEQyxDQUVyQixLQUFLLENBQUUsZUFGYyxDQUF0QixDQU1ZO0FBR1osR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsRUFBcUIsU0FBekIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLEVBQXBCLENBQ3JDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBeUMsTUFBTSxDQUFDLGtCQUFoRCxDQUVBLE1BQU0sQ0FBQyxTQUFQLENBQW1CLENBQUMsS0FBSyxDQUFDLGVBQVAsQ0FBbkIsQ0FBMkM7QUFFM0MsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLEVBQXNDLFNBQTFDLENBQXFELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsMEJBQXVDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixNQUFqRSxtRUFBMkUsTUFBTSxDQUFDLGtCQUFQLENBQTBCLEdBQXJHLENBQXlHO0FBRWxKLE1BQU0sQ0FBQyxjQUFQLENBQXdCLFNBQVMsS0FBVCxDQUN4QixDQUNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixLQUFwQixDQUEwQixrQkFBMUIsQ0FBNkMsTUFBTSxDQUFDLEVBQXBELENBQXVELEtBQXZELEVBQ0QsQ0FIRCxDQU9WO0FBQ0EsR0FBSSxDQUFBLFVBQVUsQ0FBRyxDQUFDLFlBQUQsQ0FBakIsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixFQUFtQixTQUF2QixDQUFrQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsY0FBYyxDQUFDLE1BQWYsRUFBbEIsQ0FFbEMsR0FBSSxDQUFBLFNBQVMsQ0FBQyxFQUFkLENBRUEsR0FBSSxDQUFBLGdCQUFnQixDQUFHLENBQ3RCLEdBQUcsQ0FBRSxDQUFDLENBQUMsT0FBTyxjQUFSLENBQXVCLGNBQWMsbUJBQXJDLENBQXlELFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5DLENBQUQsQ0FBNkMsQ0FBQyxJQUFJLENBQUMsa0JBQU4sQ0FBeUIsS0FBSyxDQUFDLEVBQS9CLENBQTdDLENBQWpFLENBQUQsQ0FEaUIsQ0FFdkIsT0FBTyxDQUFFLFNBRmMsQ0FHdkIsV0FBVyxDQUFFLE9BSFUsQ0FJdkIsVUFBVSxDQUFFLFNBSlcsQ0FLdkIsUUFBUSxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FMRyxDQU12QixnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsY0FORCxDQU92QixlQUFlLENBQUMsTUFBTSxDQUFDLGFBUEEsQ0FRdkIsTUFBTSxDQUFHLE1BQU0sQ0FBQyxPQVJPLENBU3ZCLFdBQVcsQ0FBQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFUZixDQVV2QixhQUFhLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQVZILENBV3ZCLE1BQU0sQ0FBQyxVQVhnQixDQVl2QixnQkFBZ0Isd0JBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFYLGdEQUFDLHNCQUFxQixnQkFaZixDQUF2QixDQWVBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFvQyx5QkFBeUIsQ0FBQyxjQUExQixDQUF5QyxnQkFBekMsQ0FBcEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsT0FBcEIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQWhELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUF0QyxDQUlXLENBekRGLENBeURHO0FBRUwsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUVuQyxHQUFJLEtBQUssQ0FBQyxFQUFWLENBQWMsQ0FDVixHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxFQUF1QixJQUEzQixDQUFpQyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBc0IsRUFBdEIsQ0FBeUI7QUFFMUQsS0FBSyxDQUFDLEVBQU4sQ0FBUyxZQUFULENBQXdCLElBQXhCLENBQ1osS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLHFCQUFwQixDQUE0QyxLQUE1QyxDQUVBO0FBQ0M7QUFDRDtBQUNEO0FBR1UsQ0FJRixDQTdFRSxDQUFQLENBK0VQLEVBQ0QsYUFFTyxRQUFTLENBQUEsTUFBVCxDQUFpQixVQUFqQixDQUE0QixZQUE1QixDQUF5QyxlQUF6QyxDQUEwRCxtQkFBMUQsQ0FBOEUsUUFBOUUsQ0FBd0YsQ0FFdkYsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUgsVUFBVSxDQUFFLG9CQUFVLE1BQVYsQ0FBaUIsWUFBakIsQ0FBOEIsVUFBOUIsQ0FBeUMsZ0JBQXpDLENBQTBELGVBQTFELENBQTBFLGNBQTFFLENBQTBGLG1CQUExRixDQUE4RyxRQUE5RyxDQUF1SCxRQUF2SCxDQUFnSSxjQUFoSSxDQUErSSxRQUEvSSxDQUF3SixFQUF4SixDQUEySixrREFDbkssTUFBTSxDQUFDLElBQVAsQ0FBWSxRQUFaLENBQ1o7QUFDQTtBQUNZLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFzQixFQUF0QixDQUNaLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTlCLEVBQXFDLE1BQU0sQ0FBQyxFQUE1QyxDQUNZLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLEVBQVgsQ0FBTixDQUF3QixDQUFDLEtBQU0sTUFBTSxDQUFDLEVBQWQsQ0FBeEIsQ0FDWixNQUFNLENBQUMsT0FBUCxDQUFpQixNQUFqQixDQUNBLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixnQkFBeEIsQ0FFQTtBQUVZLEdBQUksQ0FBQSxRQUFKLENBQ0EsR0FBSSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBOUIsQ0FBK0MsUUFBUSxDQUFHLGNBQWMsQ0FBQyxHQUFmLENBQW1CLGtDQUFuQixDQUFYLENBQS9DLElBQ0ssQ0FBQSxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIscUNBQW5CLENBQVgsQ0FJZjtBQUVVLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLEdBQXVCLFNBQTNCLENBQXNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUF1QixFQUF2QixDQUN0QyxHQUFJLENBQUEsSUFBSSxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDLENBQ0EsTUFBTSxDQUFDLGVBQVAsd0JBQTBCLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQTdDLHdFQUEwQixzQkFBZ0MsWUFBMUQsaURBQTBCLHVCQUE4QyxFQUF4RSxDQUVBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGNBQXJCLEdBQXNDLFNBQTFDLENBQXFELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixjQUFyQixDQUFzQyxNQUF0QyxDQUNyRCxNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FDQSxNQUFNLENBQUMsWUFBUCxDQUFzQixZQUF0QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUF3QixLQUF4QixDQUNBLE1BQU0sQ0FBQyxXQUFQLENBQXFCLEtBQXJCLENBQ1osTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLENBQXFCLEVBQXJCLENBRWEsR0FBSSxDQUFBLFVBQVUsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTNCLENBQ0EsR0FBSSxDQUFBLGFBQWEsQ0FBRyxFQUFwQixDQUNBLGFBQWEsQ0FBQyxVQUFELENBQWIsQ0FBMEIsSUFBMUIsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxRQUFQLEVBQWlCLFNBQXJCLENBQ0EsQ0FFRyxNQUFNLENBQUMsUUFBUCxDQUFnQixFQUFoQixDQUNBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLElBQWhCLENBQXFCLGFBQXJCLEVBQ0YsQ0FDQSxHQUFJLENBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBckIsQ0FBNkIsTUFBTSxDQUFDLFFBQVAsQ0FBa0IsQ0FBQyxFQUFELENBQWxCLENBQzlCO0FBQ0QsTUFBTSxDQUFDLFNBQVAsQ0FBbUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsVUFBbkIsQ0FBTCxDQUFuQixDQUVBLE1BQU0sQ0FBQyxHQUFQLENBQWEsbUJBQWIsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixFQUFzQixTQUExQixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsRUFBckIsQ0FHckMsR0FBSSxDQUFBLGNBQWMsQ0FBRSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IscUJBQXFCLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBckQsQ0FBNEQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsR0FBN0UsQ0FBcEIsQ0FDQSxHQUFJLENBQUEsa0JBQWtCLENBQUcsY0FBYyxDQUFDLE9BQWYsQ0FBdUIsSUFBaEQsQ0FFQSxHQUFJLENBQUEsYUFBYSxDQUFHLFFBQWhCLENBQUEsYUFBZ0IsQ0FBUyxJQUFULENBQ3BCLENBQ0ksY0FBYyxDQUFDLE9BQWYsQ0FBdUIsZUFBdkIsQ0FBeUMsSUFBekMsQ0FDQSxjQUFjLENBQUMsT0FBZixDQUF1QixlQUF2QixDQUF1QyxjQUF2QyxFQUNILENBSkQsQ0FNQSxHQUFJLENBQUEsb0JBQW9CLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLGtCQUFyQixDQUF3QyxjQUF4QyxDQUF1RCxhQUF2RCxDQUEzQixDQUVBLEdBQUksQ0FBQSxlQUFlLENBQUcsRUFBdEIsQ0FFQSxHQUFJLE1BQU0sQ0FBQyxZQUFQLEVBQXFCLFNBQXpCLENBQW9DLGVBQWUsQ0FBRyxNQUFNLENBQUMsWUFBUCxDQUFvQixHQUF0QyxDQUVwQyxHQUFJLENBQUEsT0FBTyxDQUFFLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBMUIsQ0FBd0MsR0FBeEMsQ0FBNEMsZUFBNUMsQ0FBNEQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0RSxDQUE4RSxjQUFwRyxDQUFtSCxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQWxCLENBQTBCLFNBQVMsQ0FBQyxLQUFwQyxDQUFuSCxDQUFiLENBQ0EsR0FBSSxDQUFBLFdBQVcsQ0FBRyxPQUFPLENBQUMsT0FBUixDQUFnQixJQUFsQyxDQUdBLEdBQUksQ0FBQSxZQUFZLENBQUcsUUFBZixDQUFBLFlBQWUsQ0FBUyxJQUFULENBQ25CLENBQ0ksT0FBTyxDQUFDLE9BQVIsQ0FBZ0IsZUFBaEIsQ0FBa0MsSUFBbEMsQ0FDQSxPQUFPLENBQUMsT0FBUixDQUFnQixlQUFoQixDQUFnQyxhQUFoQyxFQUVILENBTEQsQ0FPQSxHQUFJLENBQUEsbUJBQW1CLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLFdBQXJCLENBQWlDLGFBQWpDLENBQStDLFlBQS9DLENBQTFCLENBRUEsR0FBSSxDQUFBLFdBQVcsQ0FBRyxRQUFkLENBQUEsV0FBYyxDQUFTLElBQVQsQ0FDbEIsQ0FDSSxHQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLFVBQW5CLEdBQWdDLElBQXBDLENBQTBDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLFVBQW5CLEVBQWlDLElBQWpDLENBQzdDLENBSEQsQ0FLQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixnQkFBckIsRUFBdUMsU0FBdkMsRUFBb0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGdCQUFyQixFQUF1QyxJQUEvRixDQUVBLENBQ0ksR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsZ0JBQXJCLEVBQXVDLEVBQTNDLENBQ0EsQ0FDSSxHQUFJLENBQUEsZUFBZSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixnQkFBM0MsQ0FDQSxHQUFJLENBQUEsaUJBQWlCLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGtCQUFyQixDQUF3QyxnQkFBeEMsQ0FBeUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGdCQUF0RyxDQUNBLEdBQUksQ0FBQSxhQUFhLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLGlCQUFyQixDQUF1QyxlQUF2QyxDQUF1RCxjQUF2RCxDQUFzRSxXQUF0RSxDQUFrRixJQUFsRixDQUFwQixDQUVILENBQ0osQ0FHUSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsQ0FDbEIsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLE1BQU0sQ0FBQyxRQUFiLENBQXNCLFNBQVMsQ0FBQyxRQUFoQyxDQUF5QyxJQUFJLENBQUMsU0FBOUMsQ0FBd0QsSUFBSSxDQUFDLGFBQTdELENBRGtCLENBRWxCLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxNQUFNLENBQUMsV0FBYixDQUF5QixTQUFTLENBQUMsV0FBbkMsQ0FBK0MsSUFBSSxDQUFDLGFBQXBELENBQWtFLElBQUksQ0FBQyxhQUF2RSxDQUZrQixDQUFyQixDQUtEO0FBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLFNBQVMsVUFBVCxDQUNyQyxDQUNJLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixNQUFwQyxDQUEyQyxDQUFDLEVBQTVDLENBQWlELENBQzdDLEdBQUksQ0FBQSxHQUFHLENBQUcsVUFBVSxDQUFDLEdBQVgsQ0FBZSxTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsRUFBVCxDQUFjLENBQTNDLEVBQTZDLE9BQTdDLENBQXFELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixDQUFyQixFQUF3QixTQUE3RSxDQUFWLENBQ0EsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFZLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixDQUFyQixFQUF3QixJQUF4QixDQUErQixVQUFVLENBQUMsR0FBRCxDQUFWLENBQWdCLElBQS9DLENBQ2YsQ0FFRCxHQUFJLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFmLENBQ3BCLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsQ0FBckIsQ0FBakIsQ0FBeUM7QUFEckIsSUFHcEIsQ0FBQSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsS0FBakIsQ0FBeUIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUF6QixDQUVvQixNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsQ0FBc0IsSUFBdEIsQ0FDSCxDQWJELENBZUEsR0FBSSxNQUFNLENBQUMsaUJBQVAsRUFBNEIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQTFELENBQ0EsQ0FDSSxZQUFZLENBQUMsY0FBYixDQUE0QixnQkFBNUIsQ0FBNkMsSUFBN0MsRUFBbUQsSUFBbkQsQ0FBd0QsU0FBVSxJQUFWLENBQWdCLENBQzVEO0FBQ0EsR0FBSSxDQUNqQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUFYLENBQU4sQ0FBcUIsSUFBckIsRUFBMkIsU0FBM0IsQ0FBcUMsY0FBckMsQ0FBb0QsSUFBSSxDQUFDLElBQXpELEVBQzhCLENBQUMsTUFBTyxHQUFQLENBQVksQ0FDTjtBQUNQLENBRVosQ0FSRCxFQVNILENBRVQsTUFBTSxDQUFDLGdCQUFQLENBQXdCLFNBQVMsZUFBVCxDQUN4QixDQUNJLE1BQU0sQ0FBQyxvQkFBUCxDQUE4QixlQUE5QixDQUVILENBSkQsQ0FNQSxNQUFNLENBQUMsZ0JBQVAsQ0FBMEIsU0FBUyxXQUFULENBQXNCLENBQ3hDLE1BQU0sQ0FBQyxhQUFQLENBQXVCLFdBQXZCLENBQ1AsQ0FGRCxDQUtULE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUF3QixTQUFVLFFBQVYsQ0FBb0IsQ0FHN0MsUUFBUSxDQUFDLE9BQVQsQ0FBaUIsQ0FBakIsQ0FDQSxRQUFRLENBQUMsTUFBVCxDQUFnQixJQUFoQixDQUNBLFFBQVEsQ0FBQyxRQUFULENBQWtCLENBQUMsS0FBTSxDQUFQLENBQVUsT0FBUSxNQUFsQixDQUFsQixDQUVHLFlBQVksQ0FBQyxTQUFiLENBQXVCLFFBQXZCLEVBQWlDLElBQWpDLENBQXNDLFNBQVMsSUFBVCxDQUFlLENBQ2hELE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixVQUF4QixDQUFtQyxJQUFJLENBQUMsSUFBTCxDQUFVLEdBQTdDLENBQWlELFNBQWpELEVBQ0EsUUFBUSxDQUFDLEVBQVQsQ0FBWSxJQUFJLENBQUMsSUFBTCxDQUFVLElBQXRCLENBRUksWUFBWSxDQUFDLFNBQWIsR0FBeUIsSUFBekIsQ0FBOEIsU0FBUyxJQUFULENBQWUsQ0FDakQ7QUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLG1CQUFWLENBQWdDLElBQUksQ0FBQyxJQUFyQyxDQUNFLENBSEUsRUFNTCxDQVZKLENBVUssU0FBUyxLQUFULENBQWUsQ0FFZixNQUFNLENBQUMsZ0JBQVAsQ0FBd0IsVUFBeEIsQ0FBbUMsS0FBSyxDQUFDLEdBQXpDLENBQTZDLE9BQTdDLEVBQ0gsQ0FiRixFQWdCSCxDQXZCQyxDQTBCSyxNQUFNLENBQUMsRUFBUCxDQUFVLGlCQUFWLENBQThCLFNBQVUsSUFBVixDQUFlLEtBQWYsQ0FBc0Isc0VBQzVDO0FBQ0EsR0FBSSx1QkFBQSxVQUFVLENBQUMsT0FBWCwyRkFBb0IsR0FBcEIsc0VBQXlCLFFBQXpCLEdBQW1DLGVBQXZDLENBQ2IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLEtBQWpCLENBQXlCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLFVBQW5CLENBQXpCLENBQ2EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXlCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLFVBQW5CLENBQVAsQ0FBekIsQ0FDQSxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIsa0JBQXpCLENBQTRDLGNBQTVDLENBQTRELE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLFVBQW5CLENBQTVELEVBQ0EsR0FBSSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBWCxFQUF3Qix3QkFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixVQUFuQix1RUFBZ0MsRUFBaEMsR0FBb0MsSUFBaEUsQ0FBc0UsTUFBTyxDQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLFVBQW5CLENBQVAsQ0FDekUsQ0FQTCxDQVFBLE1BQU0sQ0FBQyxVQUFQLENBQW9CLFNBQVMsS0FBVCxDQUNoQixDQUNJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLFVBQW5CLEVBQStCLE1BQS9CLENBQXNDLEtBQXRDLENBQTRDLENBQTVDLEVBQ0E7QUFFSCxDQUxMLENBT0MsTUFBTSxDQUFDLGNBQVAsQ0FBeUIsTUFBTSxDQUFDLEtBQVAsQ0FBYSxpQkFBYixFQUF6QixDQUVELE1BQU0sQ0FBQyxjQUFQLENBQXdCLFNBQVMsS0FBVCxDQUNwQixDQUNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsaUJBQVYsQ0FBNEIsSUFBNUIsQ0FDWixNQUFNLENBQUMsS0FBUCxDQUFhLGtCQUFiLENBQWdDLE1BQU0sQ0FBQyxFQUF2QyxDQUEyQyxNQUFNLENBQUMsVUFBbEQsRUFBOEQ7QUFFbEQsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLGlCQUFWLENBQTRCLEtBQTVCLENBQWtDLENBQTlDLENBQVIsQ0FFRCxDQVBMLENBV0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLENBQWUsQ0FBQyxZQUFZLENBQUMsSUFBZCxDQUFmLENBSUEsR0FBSSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBOUIsQ0FDQSxDQUNYLE1BQU0sQ0FBQyxFQUFQLENBQVUsbUJBQVYsQ0FBOEIsRUFBOUIsQ0FDQyxZQUFZLENBQUMsUUFBYixDQUFzQixJQUF0QixFQUE0QixJQUE1QixDQUNBLFNBQVMsSUFBVCxDQUNBLENBRUMsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsRUFBcUIsU0FBekIsQ0FBb0MsQ0FBRTtBQUNyQztBQUNBLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLEVBQVgsQ0FBTixDQUFxQixFQUFyQixDQUF3QixTQUF4QixDQUFrQyxTQUFsQyxDQUE4QyxJQUFJLENBQUMsSUFBbkQsQ0FDQSxDQUhELElBSUMsQ0FBQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBZ0MsSUFBSSxDQUFDLElBQXJDLENBR29CO0FBQ3JCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLEVBQVgsQ0FBTixDQUFxQixFQUFyQixDQUF3QixTQUF4QixDQUFrQyxTQUFsQyxDQUE0QyxPQUE1QyxDQUFxRCxTQUFDLEVBQUQsQ0FBUSxDQUMzRCxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUFYLENBQU4sQ0FBcUIsRUFBckIsQ0FBd0IsbUJBQXhCLENBQTRDLElBQTVDLENBQW1ELENBQUMsS0FBTSxFQUFFLENBQUMsRUFBVixDQUFjLE1BQU0sRUFBRSxDQUFDLEdBQXZCLENBQTRCLE9BQVEsRUFBRSxDQUFDLFFBQXZDLENBQW5ELEVBQ0QsQ0FGRCxFQUtvQixHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixFQUFrQixTQUF0QixDQUNBLENBQ0ssR0FBSSxDQUFBLFdBQVcsQ0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUFYLENBQU4sQ0FBcUIsRUFBckIsQ0FBd0IsbUJBQXhCLENBQTRDLEdBQTVDLENBQWdELFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxHQUFGLENBQU0sUUFBTixFQUFQLENBQTBCLENBQXhGLEVBQTBGLE9BQTFGLENBQWtHLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixRQUFqQixFQUFsRyxDQUFsQixDQUVBLEdBQUksV0FBVyxFQUFFLENBQWpCLENBQW1CLENBQ2YsTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLENBQWUsWUFBZixDQUE0QixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUFYLENBQU4sQ0FBcUIsRUFBckIsQ0FBd0IsbUJBQXhCLENBQTRDLFdBQTVDLENBQTVCLENBQ0gsQ0FGRCxJQUd4QixDQUMwQixHQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFaLENBQVYsQ0FBaUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixHQUFqQixDQUFxQixNQUFNLENBQUMsZUFBL0MsQ0FBZ0U7QUFDakcsV0FBVyxDQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLEVBQVgsQ0FBTixDQUFxQixFQUFyQixDQUF3QixtQkFBeEIsQ0FBNEMsR0FBNUMsQ0FBZ0QsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQUYsQ0FBSyxRQUFMLEVBQVAsQ0FBeUIsQ0FBdkYsRUFBeUYsT0FBekYsQ0FBaUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLFFBQWpCLEVBQWpHLENBQWQsQ0FDQSxHQUFJLFdBQVcsRUFBRSxDQUFqQixDQUFxQixNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsQ0FBZSxZQUFmLENBQTRCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLEVBQVgsQ0FBTixDQUFxQixFQUFyQixDQUF3QixtQkFBeEIsQ0FBNEMsV0FBNUMsQ0FBNUIsQ0FFdEIsQ0FDTCxDQUNELE1BQU0sQ0FBQyxFQUFQLENBQVUsdUJBQVYsQ0FBa0MsSUFBbEMsQ0FDcEIsQ0FoQ0QsQ0FnQ0UsU0FBUyxLQUFULENBQWUsQ0FDVyxNQUFNLENBQUMsZ0JBQVAsQ0FBd0IsVUFBeEIsQ0FBbUMsS0FBSyxDQUFDLEdBQXpDLENBQTZDLE9BQTdDLEVBQ1IsQ0FsQ3BCLEVBc0NXO0FBS0QsTUFBTSxDQUFDLGdCQUFQLENBQTBCLFNBQVMsS0FBVCxDQUFnQixDQUV0QyxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLEtBQXJCLENBQWpCLENBRUEsR0FBSSxNQUFPLENBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUFQLEdBQW1ELFFBQXZELENBQWtFLENBQzlELE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixLQUFqQixDQUF5QixDQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLENBQU4sQ0FBRixDQUF6QixDQUNILENBRUQsTUFBTSxDQUFDLE1BQVAsQ0FBYyxLQUFkLENBQ0gsQ0FURCxDQVdBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLEVBQXVCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsSUFBMEMsU0FBckUsQ0FBZ0YsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixFQUF3QyxFQUF4QyxDQUk5RixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBc0IsU0FBUyxLQUFULENBQWdCLENBRXJDLEdBQUksQ0FBQyxLQUFMLENBQVkscUJBQ1gsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLGtCQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLElBQTdCLDBDQUFtQixnQkFBZ0IsWUFBaEIsQ0FBNkIsR0FBaEQsRUFEVywwQ0FHTSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FIMUIsYUFHWCxrREFBZ0QsK0NBQXJDLENBQUEsRUFBcUMsY0FDL0MsR0FBSSxtQkFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsbUZBQWdCLFlBQWhCLHNFQUE4QixFQUE5QixHQUFvQyxFQUFFLENBQUMsRUFBM0MsQ0FBK0MsQ0FDOUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUF1QyxFQUF2QyxDQUNBLE1BQ0EsQ0FDRCxDQVJVLHVEQVNYLENBVEQsSUFTTyxDQUFFO0FBQ1IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUF1QyxJQUF2QyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBVixDQUFtQixNQUFuQixDQUEwQixDQUExQixDQUVBLENBRUEsUUFBUSxDQUFDLFVBQVcsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBc0IsSUFBdEIsQ0FBK0IsQ0FBN0MsQ0FBUixDQUdELENBcEJELENBdUJlLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBNkIsU0FBUyxnQkFBVCxDQUEyQixTQUEzQixDQUFxQyxDQUUzRCxHQUFJLGdCQUFnQixDQUFDLEVBQWpCLENBQW9CLENBQXhCLENBQTJCLENBQ3ZCLFlBQVksQ0FBQyxnQkFBYixDQUE4QixnQkFBZ0IsQ0FBQyxFQUEvQyxDQUFtRCxTQUFuRCxDQUE4RCxJQUE5RCxFQUFvRSxJQUFwRSxDQUNJLFNBQVMsSUFBVCxDQUFlLENBRW5DLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixVQUF4QixDQUFtQyxJQUFJLENBQUMsR0FBeEMsQ0FBNEMsU0FBNUMsRUFFK0IsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsSUFBSSxDQUFDLElBQTNCLENBRWpDLFFBQVEsQ0FBQyxVQUFXLENBQ2xCLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBVixDQUFxQixJQUFJLENBQUMsSUFBMUIsQ0FBbUM7QUFDcEMsQ0FGTyxDQUFSLENBS3FCLENBWkgsQ0FZSSxTQUFTLEtBQVQsQ0FBZSxDQUNMLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixVQUF4QixDQUFtQyxLQUFLLENBQUMsR0FBekMsQ0FBNkMsT0FBN0MsRUFDWixDQWRGLEVBZUgsQ0FoQkQsSUFnQk8sQ0FDTDtBQUNELENBQ0osQ0FyQkosQ0EyQlQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLENBQXFCLFNBQVUsSUFBVixDQUFnQixDQUVsQyxHQUFJLElBQUksRUFBSSxTQUFaLENBQXVCLE9BRXRCLEdBQUksQ0FBQSxVQUFVLENBQUMsRUFBZixDQUNBO0FBQ0E7QUFFQSxNQUFNLENBQUMsWUFBUCxDQUFvQixRQUFwQixDQUE2QixJQUE3QixDQUFrQyxJQUFsQyxFQUF3QyxJQUF4QyxDQUE2QyxTQUFTLElBQVQsQ0FBYywyQkFFL0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXlCLElBQUksQ0FBQyxJQUE5QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBVixDQUFxQixFQUFyQixDQUNBO0FBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsU0FBckIsRUFBZ0MsU0FBcEMsQ0FDQSxDQUNJLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFNBQXJCLEVBQWdDLEVBQXBDLENBQ0EsQ0FDSSxHQUFJLENBQUEsVUFBVSxDQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixTQUFyQixDQUErQixLQUEvQixDQUFxQyxHQUFyQyxDQUFsQixDQUVBLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUExQixDQUFpQyxDQUFDLEVBQWxDLENBQ0EsQ0FDRyxHQUFJLENBQUEsR0FBRyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF1QixHQUF2QixDQUEyQixTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsS0FBVCxDQUFpQixDQUExRCxFQUE0RCxPQUE1RCxDQUFvRSxVQUFVLENBQUMsQ0FBRCxDQUE5RSxDQUFWLENBQ0EsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFZLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBVixDQUFtQixJQUFuQixDQUF3QixNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBdUIsR0FBdkIsQ0FBeEIsRUFDZCxDQUNKLENBVEQsSUFTTyxDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBVixDQUFvQixNQUFNLENBQUMsRUFBUCxDQUFVLFlBQTlCLENBQ1YsQ0FaRCxJQVlNLENBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLENBQW9CLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBOUIsQ0FHTixHQUFJLE1BQU0sQ0FBQyxJQUFQLEdBQWUsUUFBbkIsQ0FBNkIsQ0FBRTtBQUMxQixPQUFPLENBQUMsR0FBUixDQUFZLG9DQUF1QyxNQUFNLENBQUMsSUFBMUQsRUFFSixDQUVELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLEdBQXNCLFNBQTFCLENBQXFDLENBQUM7QUFDdkQ7QUFDQyxNQUFNLENBQUMsTUFBUCxDQUFjLE1BQU0sQ0FBQyxFQUFyQixDQUEwQixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUFYLENBQU4sQ0FBcUIsRUFBL0MsRUFBbUQ7QUFDOUIsT0FBTyxDQUFDLEdBQVIsQ0FBWSwyQkFBWixFQUNKLENBRUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLENBQXdCLElBQXhCLENBQ0EsTUFBTSxDQUFDLFdBQVAsQ0FBcUIsSUFBckIsQ0FDQTtBQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxpQkFBVixFQUErQixDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBOUMsQ0FBd0QsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3Qix5QkFBMEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFwRCxnREFBMEMsc0JBQXdCLEtBQWxFLENBRXhELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGVBQXpCLENBQTBDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsRUFBMEMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsR0FBL0IsQ0FBbUMsa0JBQW5DLENBQXNELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixjQUEzRSxDQUExQyxDQUcxQyxHQUFJLE1BQU0sQ0FBQyxRQUFQLEVBQWlCLFNBQWpCLEVBQThCLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QyxDQUF3RDtBQUN4RCxDQUNJLEdBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixHQUF5QyxJQUF6QyxFQUFpRCxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEdBQXlDLFNBQTlGLENBQ0EsMkJBQ3BCLEdBQUssS0FBSyxDQUFDLE9BQU4sQ0FBYyxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLENBQWQsQ0FBTCxDQUNDLFVBQVUsd0JBQUcsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixFQUF3QyxDQUF4QyxDQUFILGdEQUFHLHNCQUE0QyxFQUF6RCxDQUE0RDtBQUNyQyxHQUFJLE1BQU8sQ0FBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLENBQVAsRUFBaUQsUUFBakQsRUFBNkQsTUFBTyxDQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsQ0FBUCxFQUFpRCxRQUFsSCxDQUN2QixVQUFVLENBQUcsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixFQUF3QyxRQUF4QyxFQUFiLENBQWdFO0FBRHpDLElBRUssSUFBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQXdDLEVBQTVDLENBQWdELFVBQVUsQ0FBRyxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQXdDLEVBQXhDLENBQTJDLFFBQTNDLEVBQWIsQ0FBaEQsSUFDQyxDQUFBLFVBQVUsQ0FBRyxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLENBQWIsQ0FFOUIsR0FBSSxVQUFKLENBQWdCLENBQ1ksR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFFBQVYsQ0FBbUIsR0FBbkIsQ0FBdUIsU0FBUyxDQUFULENBQVksQ0FDdkUsR0FBSSxDQUFDLENBQUMsRUFBRixFQUFNLElBQVYsQ0FBZ0IsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFGLENBQUssUUFBTCxFQUFQLENBQWhCLElBQ0ssT0FBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQ3NCLENBSFMsRUFHUCxPQUhPLENBR0MsVUFIRCxDQUFWLENBS0EsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFlLFFBQVEsQ0FBQyxVQUFVLENBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixFQUF3QyxNQUFNLENBQUMsRUFBUCxDQUFVLFFBQVYsQ0FBbUIsR0FBbkIsQ0FBeEMsQ0FBcUUsQ0FBcEYsQ0FBUixDQUUxQyxDQUNvQixDQUVKLENBRUQsTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLFdBQXpCLENBQXFDLGFBQXJDLENBQW9ELENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBbEIsQ0FBMEIsU0FBUyxDQUFDLElBQXBDLENBQXBELEVBRVgsQ0FqRUQsRUFtRUgsQ0EzRUQsQ0E2RUEsR0FBSSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBWCxFQUF1QixNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsRUFBa0IsU0FBekMsRUFBc0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLFFBQWpCLEdBQTRCLE1BQTVCLENBQW1DLENBQTdGLENBQWdHLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBVixDQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLE1BQTdCLEVBQWhHLElBQ0ssSUFBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsRUFBb0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLFFBQWpCLEdBQTRCLE1BQTVCLENBQW1DLENBQTNELENBQTZELDRCQUM5RCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsaUJBQVYsRUFBK0IsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFFBQTlDLENBQXdELE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsMEJBQTBDLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBcEQsaURBQTBDLHVCQUF3QixLQUFsRSxDQUV4RCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixlQUF6QixDQUEwQyxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQTBDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLEdBQS9CLENBQW1DLGtCQUFuQyxDQUFzRCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsY0FBM0UsQ0FBMUMsQ0FDN0MsQ0FLTyxRQUFRLENBQUMsTUFBVCxDQUFnQixRQUFRLENBQUMsUUFBRCxDQUFSLENBQW1CLE1BQW5CLENBQWhCLEVBQ0UsQ0E5WUgsQ0FnWkgsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUV6QztBQWxaUSxDQUFQLENBcVpQLEVBR00sUUFBUyxDQUFBLFlBQVQsRUFBeUIsQ0FDeEIsTUFBTyxDQUNDLFFBQVEsQ0FBRSxHQURYLENBRUMsT0FBTyxDQUFDLFNBRlQsQ0FJUCxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQTZCLGlCQUE3QixDQUFnRCxDQUc5QztBQUNBO0FBQ0EsUUFBUyxDQUFBLGVBQVQsQ0FBeUIsS0FBekIsQ0FBK0IsQ0FFM0IsR0FBSSxDQUFBLEtBQUssQ0FBRyxJQUFaLENBQ0E7QUFDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBVixFQUFzQixDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBckMsQ0FBZ0QsQ0FDNUMsR0FBSSxDQUFBLEtBQUssT0FBTCxFQUFBLEtBQUssU0FBTCxRQUFBLEtBQUssQ0FBRSxFQUFQLEdBQVcsSUFBZixDQUF3QixDQUVwQixLQUFLLENBQUcsS0FBUixDQUVILENBQ0YsaUJBQWlCLENBQUMsWUFBbEIsQ0FBK0IsVUFBL0IsQ0FBMkMsS0FBM0MsRUFDRixDQUVELE1BQU8sQ0FBQSxLQUFLLENBQUUsS0FBRixDQUFVLFNBQXRCLENBQ0E7QUFFSCxDQUNEO0FBQ0EsUUFBUyxDQUFBLFlBQVQsQ0FBc0IsS0FBdEIsQ0FBNEIsQ0FFcEIsR0FBSSxDQUFBLEtBQUssQ0FBRyxJQUFaLENBQ0MsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFFBQVYsRUFBc0IsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQXJDLENBQWdELENBQzdDLEdBQUksQ0FBQSxLQUFLLE9BQUwsRUFBQSxLQUFLLFNBQUwsUUFBQSxLQUFLLENBQUUsRUFBUCxHQUFXLElBQWYsQ0FBd0IsQ0FFeEIsS0FBSyxDQUFHLEtBQVIsQ0FFSCxDQUNELGlCQUFpQixDQUFDLFlBQWxCLENBQStCLFVBQS9CLENBQTJDLEtBQTNDLEVBQ0gsQ0FFSTtBQUNBLE1BQU8sQ0FBQSxLQUFLLENBQUUsS0FBRixDQUFVLFNBQXRCLENBRVIsQ0FFRCxpQkFBaUIsQ0FBQyxXQUFsQixDQUE4QixJQUE5QixDQUFtQyxlQUFuQyxFQUVBLGlCQUFpQixDQUFDLFFBQWxCLENBQTJCLElBQTNCLENBQWdDLFlBQWhDLEVBR1AsQ0FqRE0sQ0FBUCxDQXNEUCxDQUNELGFBSU8sUUFBUyxDQUFBLDBCQUFULENBQXFDLG1CQUFyQyxDQUEwRCxlQUExRCxDQUEwRSxnQkFBMUUsQ0FBNEYsQ0FFM0YsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUYsV0FBVyxDQUFFLHNEQUZYLENBR0QsVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBZ0IsQ0FFNUIsQ0FMQyxDQU1GLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FFbkM7QUFDRixLQUFLLENBQUMsRUFBTixDQUFTLG1CQUFULENBQTZCLENBQ3pCLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTyxLQUFLLENBQUMsVUFBYixDQUF3QixLQUFLLENBQUMsV0FBOUIsQ0FBMEMsU0FBUyxDQUFDLFVBQXBELENBRHlCLENBRXpCLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTyxLQUFLLENBQUMsV0FBYixDQUF5QixLQUFLLENBQUMsWUFBL0IsQ0FBNEMsU0FBUyxDQUFDLFVBQXRELENBRnlCLENBR3pCLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTyxLQUFLLENBQUMsVUFBYixDQUF3QixLQUFLLENBQUMsVUFBOUIsQ0FBeUMsU0FBUyxDQUFDLFVBQW5ELENBSHlCLENBSXpCLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTyxLQUFLLENBQUMsMkJBQWIsQ0FBeUMsS0FBSyxDQUFDLGlCQUEvQyxDQUFpRSxTQUFTLENBQUMsVUFBM0UsQ0FKeUIsQ0FBN0IsQ0FPQSxLQUFLLENBQUMsR0FBTixDQUFZLG1CQUFaLENBQ0EsS0FBSyxDQUFDLGVBQU4sQ0FBd0IsZUFBeEIsQ0FDQSxLQUFLLENBQUMsZ0JBQU4sQ0FBMEIsZ0JBQTFCLENBRUUsR0FBSSxDQUFBLGVBQWUsQ0FBRSxLQUFLLENBQUMsR0FBTixDQUFVLFVBQVYsQ0FBcUIsaUJBQXJCLENBQXVDLElBQXZDLENBQXJCLENBQ0EsR0FBSSxDQUFBLG1CQUFtQixDQUFHLGVBQWUsQ0FBQyxPQUFoQixDQUF3QixJQUFsRCxDQUVBLEdBQUksQ0FBQSxvQkFBb0IsQ0FBRyxRQUF2QixDQUFBLG9CQUF1QixDQUFTLElBQVQsQ0FDM0IsQ0FDSyxlQUFlLENBQUMsT0FBaEIsQ0FBd0IsZUFBeEIsQ0FBMEMsSUFBMUMsQ0FDQSxlQUFlLENBQUMsT0FBaEIsQ0FBd0IsZUFBeEIsQ0FBd0MsbUJBQXhDLEVBQ0osQ0FKRCxDQU1ELEdBQUksQ0FBQSwwQkFBMEIsQ0FBRyxLQUFLLENBQUMsR0FBTixDQUFVLFNBQVYsQ0FBb0IsbUJBQXBCLENBQXdDLG1CQUF4QyxDQUE0RCxvQkFBNUQsQ0FBakMsQ0FFQSxLQUFLLENBQUMsb0JBQU4sQ0FBNkIsU0FBUyxJQUFULENBQzVCLENBQ0ksS0FBSyxDQUFDLEdBQU4sQ0FBVSxhQUFWLENBQXdCLG1CQUF4QixDQUE0QyxtQkFBNUMsQ0FBaUUsQ0FBQyxNQUFNLENBQUMsSUFBUixDQUFhLElBQUksQ0FBQyxJQUFsQixDQUFqRSxFQUNILENBSEYsQ0FLQyxLQUFLLENBQUMsc0JBQU4sQ0FBK0IsU0FBUyxLQUFULENBQy9CLENBQ0ksS0FBSyxDQUFDLEdBQU4sQ0FBVSxhQUFWLENBQXdCLG1CQUF4QixDQUE0QyxtQkFBNUMsQ0FBaUUsQ0FBQyxNQUFNLENBQUMsS0FBUixDQUFjLElBQUksQ0FBQyxJQUFuQixDQUFqRSxFQUNBLENBQUMsQ0FBQyxzQkFBdUIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUFqQyxDQUFELENBQWtELEtBQWxELENBQXdELE1BQXhELEVBQ0gsQ0FKRCxDQU9DLEtBQUssQ0FBQyxnQkFBTixDQUF5QixVQUMxQixDQUNHLENBQUMsQ0FBQyxzQkFBdUIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUFqQyxDQUFELENBQWtELEtBQWxELENBQXdELE1BQXhELEVBRUEsR0FBSSxLQUFLLENBQUMsU0FBTixDQUFnQixtQkFBcEIsQ0FBeUMsQ0FDdEMsS0FBSyxDQUFDLGVBQU4sQ0FBc0IsUUFBdEIsQ0FBK0IsS0FBSyxDQUFDLFVBQU4sQ0FBaUIsTUFBaEQsQ0FBd0QsS0FBSyxDQUFDLFFBQU4sQ0FBZSxLQUF2RSxDQUFnRixJQUFoRixFQUNBLEtBQUssQ0FBQyxnQkFBTixDQUF1QixVQUF2QixDQUFrQyxrQkFBb0IsS0FBSyxDQUFDLFFBQU4sQ0FBZSxLQUFyRSxDQUE0RSxNQUE1RSxFQUNGLENBRUQsR0FBSSxLQUFLLENBQUMsU0FBTixDQUFnQixvQkFBcEIsQ0FBMEMsQ0FDdkMsS0FBSyxDQUFDLGVBQU4sQ0FBc0IsUUFBdEIsQ0FBK0IsS0FBSyxDQUFDLFVBQU4sQ0FBaUIsTUFBaEQsQ0FBd0QsS0FBSyxDQUFDLFFBQU4sQ0FBZSxLQUF2RSxDQUFnRixLQUFoRixFQUNBLEtBQUssQ0FBQyxnQkFBTixDQUF1QixVQUF2QixDQUFrQyxzQkFBd0IsS0FBSyxDQUFDLFFBQU4sQ0FBZSxLQUF6RSxDQUFnRixNQUFoRixFQUNGLENBQ0QsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsbUJBQWhCLENBQXNDLEtBQXRDLENBQ0EsS0FBSyxDQUFDLFNBQU4sQ0FBZ0Isb0JBQWhCLENBQXVDLEtBQXZDLENBQ0YsQ0FmQSxDQWlCRCxDQTVEQyxDQUFQLENBOERQLEVBQ0QsYUFJTyxRQUFTLENBQUEsMkJBQVQsQ0FBc0MsbUJBQXRDLENBQTJELGVBQTNELENBQTRFLGdCQUE1RSxDQUE4RixDQUU3RixNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFRixXQUFXLENBQUUsdURBRlgsQ0FHRixVQUFVLENBQUUsb0JBQVMsTUFBVCxDQUFpQixDQUFPLENBSGxDLENBSUYsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUNILENBRUY7QUFDRixLQUFLLENBQUMsbUJBQU4sQ0FBMEIsQ0FDdEIsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFPLEtBQUssQ0FBQyxVQUFiLENBQXdCLEtBQUssQ0FBQyxXQUE5QixDQUEwQyxTQUFTLENBQUMsVUFBcEQsQ0FEc0IsQ0FFdEIsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFPLEtBQUssQ0FBQyxXQUFiLENBQXlCLEtBQUssQ0FBQyxZQUEvQixDQUE0QyxTQUFTLENBQUMsVUFBdEQsQ0FGc0IsQ0FHdEIsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFPLEtBQUssQ0FBQyxVQUFiLENBQXdCLEtBQUssQ0FBQyxVQUE5QixDQUF5QyxTQUFTLENBQUMsVUFBbkQsQ0FIc0IsQ0FBMUIsQ0FPQSxLQUFLLENBQUMsR0FBTixDQUFZLG1CQUFaLENBQ0EsS0FBSyxDQUFDLGVBQU4sQ0FBd0IsZUFBeEIsQ0FDQSxLQUFLLENBQUMsZ0JBQU4sQ0FBeUIsZ0JBQXpCLENBQ0E7QUFDQSxLQUFLLENBQUMsVUFBTixDQUFpQixTQUFqQixDQUEyQixtQkFBM0IsQ0FBaUQsS0FBakQsQ0FFQTtBQUNBLEtBQUssQ0FBQyxVQUFOLENBQWlCLFNBQWpCLENBQTJCLG9CQUEzQixDQUFrRCxLQUFsRCxDQUdBLEdBQUksQ0FBQSxlQUFlLENBQUUsS0FBSyxDQUFDLEdBQU4sQ0FBVSxVQUFWLENBQXFCLGlCQUFyQixDQUF1QyxJQUF2QyxDQUFyQixDQUNBLEdBQUksQ0FBQSxtQkFBbUIsQ0FBRyxlQUFlLENBQUMsT0FBaEIsQ0FBd0IsSUFBbEQsQ0FHQyxLQUFLLENBQUMsVUFBTixDQUFpQixTQUFqQixDQUEyQixRQUEzQixDQUFzQyxTQUFTLElBQVQsQ0FBYyxJQUFkLENBQW1CLEtBQW5CLENBQXlCLEdBQXpCLENBQ3ZDLENBQ0ksS0FBSyxDQUFDLGVBQU4sQ0FBc0IsUUFBdEIsQ0FBK0IsSUFBL0IsQ0FBb0MsSUFBcEMsQ0FBeUMsS0FBekMsRUFDQSxHQUFJLEdBQUosQ0FBUyxLQUFLLENBQUMsZ0JBQU4sQ0FBdUIsVUFBdkIsQ0FBa0MsR0FBbEMsQ0FBc0MsTUFBdEMsRUFDWixDQUpBLENBTUQsR0FBSSxDQUFBLG9CQUFvQixDQUFHLFFBQXZCLENBQUEsb0JBQXVCLENBQVMsSUFBVCxDQUMzQixDQUNPLEtBQUssQ0FBQyxNQUFOLENBQWUsSUFBSSxDQUFDLE1BQXBCLENBQ0EsZUFBZSxDQUFDLE9BQWhCLENBQXdCLGVBQXhCLENBQTBDLElBQTFDLENBQ0EsZUFBZSxDQUFDLE9BQWhCLENBQXdCLGVBQXhCLENBQXdDLG1CQUF4QyxFQUNOLENBTEQsQ0FPQSxHQUFJLENBQUEsMEJBQTBCLENBQUcsS0FBSyxDQUFDLEdBQU4sQ0FBVSxTQUFWLENBQW9CLG1CQUFwQixDQUF3QyxtQkFBeEMsQ0FBNEQsb0JBQTVELENBQWpDLENBR0EsS0FBSyxDQUFDLG9CQUFOLENBQTZCLFNBQVMsSUFBVCxDQUMzQixDQUNJLEtBQUssQ0FBQyxHQUFOLENBQVUsYUFBVixDQUF3QixtQkFBeEIsQ0FBNEMsbUJBQTVDLENBQWlFLENBQUMsTUFBTSxDQUFDLElBQVIsQ0FBYSxJQUFJLENBQUMsSUFBbEIsQ0FBakUsRUFDSCxDQUhILENBS0UsS0FBSyxDQUFDLHNCQUFOLENBQStCLFNBQVMsS0FBVCxDQUMvQixDQUNJLEtBQUssQ0FBQyxRQUFOLENBQWlCLElBQWpCLENBQ0EsS0FBSyxDQUFDLEdBQU4sQ0FBVSxhQUFWLENBQXdCLG1CQUF4QixDQUE0QyxtQkFBNUMsQ0FBaUUsQ0FBQyxNQUFNLENBQUMsS0FBUixDQUFjLElBQUksQ0FBQyxJQUFuQixDQUFqRSxFQUNBLENBQUMsQ0FBQyxxQkFBRCxDQUFELENBQXlCLEtBQXpCLENBQStCLE1BQS9CLEVBQ0gsQ0FMRCxDQVFBLEtBQUssQ0FBQyxnQkFBTixDQUF5QixVQUN6QixDQUNHO0FBQ0EsQ0FBQyxDQUFDLHFCQUFELENBQUQsQ0FBeUIsS0FBekIsQ0FBK0IsTUFBL0IsRUFDQSxHQUFJLEtBQUssQ0FBQyxTQUFOLENBQWdCLG1CQUFwQixDQUF5QyxDQUN2QyxLQUFLLENBQUMsU0FBTixDQUFnQixRQUFoQixDQUF5QixLQUFLLENBQUMsVUFBTixDQUFpQixNQUExQyxDQUFrRCxLQUFLLENBQUMsUUFBTixDQUFlLEtBQWpFLENBQTBFLElBQTFFLENBQWtGLGtCQUFvQixLQUFLLENBQUMsUUFBTixDQUFlLEtBQXJILEVBQ0QsQ0FDRCxHQUFJLEtBQUssQ0FBQyxTQUFOLENBQWdCLG9CQUFwQixDQUEwQyxDQUN4QyxLQUFLLENBQUMsU0FBTixDQUFnQixRQUFoQixDQUF5QixLQUFLLENBQUMsVUFBTixDQUFpQixNQUExQyxDQUFrRCxLQUFLLENBQUMsUUFBTixDQUFlLEtBQWpFLENBQTBFLEtBQTFFLENBQWtGLHFCQUF1QixLQUFLLENBQUMsUUFBTixDQUFlLEtBQXhILEVBQ0QsQ0FDRCxLQUFLLENBQUMsU0FBTixDQUFnQixtQkFBaEIsQ0FBc0MsS0FBdEMsQ0FDQSxLQUFLLENBQUMsU0FBTixDQUFnQixvQkFBaEIsQ0FBdUMsS0FBdkMsQ0FHRixDQWRELENBaUJBLENBM0VDLENBQVAsQ0E2RVAsRUFDRCxhQUVPLFFBQVMsQ0FBQSxzQkFBVCxDQUFpQyxtQkFBakMsQ0FBc0QsQ0FFckQsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUYsV0FBVyxDQUFFLGtEQUZYLENBR0YsVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBZ0IsQ0FDeEIsQ0FKRixDQUtGLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FFbkM7QUFDRixLQUFLLENBQUMsR0FBTixDQUFZLG1CQUFaLENBR0EsR0FBSSxDQUFBLGVBQWUsQ0FBRSxLQUFLLENBQUMsR0FBTixDQUFVLFVBQVYsQ0FBcUIsaUJBQXJCLENBQXVDLElBQXZDLENBQXJCLENBQ0EsR0FBSSxDQUFBLG1CQUFtQixDQUFHLGVBQWUsQ0FBQyxPQUFoQixDQUF3QixJQUFsRCxDQUVBLEdBQUksQ0FBQSxvQkFBb0IsQ0FBRyxRQUF2QixDQUFBLG9CQUF1QixDQUFTLElBQVQsQ0FDM0IsQ0FDUSxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBc0IsSUFBdEIsQ0FDUCxDQUhELENBS0EsR0FBSSxDQUFBLGVBQWUsQ0FBRyxRQUFRLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBdkMsQ0FDQSxHQUFJLENBQUEsUUFBUSxDQUFHLEtBQUssQ0FBQyxHQUFOLENBQVUsU0FBVixDQUFvQixtQkFBcEIsQ0FBd0MsZUFBeEMsQ0FBd0QsbUJBQXhELENBQTRFLG9CQUE1RSxDQUFmLENBQ0EsR0FBSSxDQUFBLEtBQUssQ0FBRyxLQUFLLENBQUMsR0FBTixDQUFVLFFBQVYsQ0FBbUIsbUJBQW5CLENBQVosQ0FDQSxHQUFJLEtBQUssQ0FBQyxNQUFOLEVBQWMsSUFBZCxFQUFzQixLQUFLLENBQUMsS0FBTixHQUFjLElBQXhDLENBQThDLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFzQixLQUFLLENBQUMsS0FBNUIsQ0FDN0MsQ0F2QkUsQ0FBUCxDQTBCUCxFQUNELGFBRU8sUUFBUyxDQUFBLFdBQVQsRUFBd0IsQ0FFdkIsTUFBTyxDQUNMLFFBQVEsQ0FBRSxHQURMLENBRUwsV0FBVyxDQUFFLHVDQUZSLENBR0wsVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBZ0IsWUFBaEIsQ0FBNkIsQ0FFdkMsR0FBSSxNQUFNLENBQUMsU0FBUCxFQUFrQixTQUF0QixDQUFpQyxNQUFNLENBQUMsU0FBUCxDQUFpQixFQUFqQixDQUNqQyxHQUFJLE1BQU0sQ0FBQyxFQUFQLEVBQVcsU0FBZixDQUEwQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQVYsQ0FDMUIsR0FBSSxNQUFNLENBQUMsY0FBUCxFQUF1QixTQUEzQixDQUFzQyxNQUFNLENBQUMsY0FBUCxDQUFzQixFQUF0QixDQUV0QyxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFqQixDQUEwQixZQUFZLENBQUMsRUFBdkMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixZQUFZLENBQUMsb0JBQTNDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsU0FBakIsQ0FBMkIsWUFBWSxDQUFDLFVBQXhDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBZ0MsU0FBaEMsQ0FDQTtBQUNBLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsRUFBK0IsU0FBbkMsQ0FBOEMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBZ0MsQ0FBaEMsQ0FDOUMsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixTQUFqQixFQUE0QixTQUFoQyxDQUEyQyxNQUFNLENBQUMsU0FBUCxDQUFpQixTQUFqQixDQUE2QixDQUE3QixDQUMzQyxNQUFNLENBQUMsUUFBUCxDQUFrQixZQUFZLENBQUMsU0FBL0IsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBc0MsSUFBdEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxRQUFQLEVBQWlCLEdBQXJCLENBQ0EsQ0FDRSxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBc0MsS0FBdEMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsQ0FBb0MsSUFBcEMsQ0FDRCxDQUdBLENBekJFLENBMEJMLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FNdkMsQ0FoQ1EsQ0FBUCxDQW9DUCxFQUNELGFBRU8sUUFBUyxDQUFBLGdCQUFULEVBQTRCLENBRWhDLE1BQU8sQ0FDRSxRQUFRLENBQUUsR0FEWixDQUVFLFdBQVcsQ0FBRSw0Q0FGZixDQUdFLEtBQUssQ0FBRSxDQUNkLFFBQVEsQ0FBQyxHQURLLENBRWQsU0FBUyxDQUFDLEdBRkksQ0FIVCxDQU9FLFVBQVUsQ0FBRSxvQkFBUyxNQUFULENBQWdCLFVBQWhCLENBQTJCLFFBQTNCLENBQW9DLFdBQXBDLENBQWdELGdCQUFoRCxDQUFpRSxvQkFBakUsQ0FDckIsQ0FDVyxHQUFJLENBQUEsSUFBSSxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDLENBQ0EsR0FBSSxNQUFNLENBQUMsU0FBUCxFQUFrQixTQUF0QixDQUFpQyxNQUFNLENBQUMsU0FBUCxDQUFpQixFQUFqQixDQUNqQyxNQUFNLENBQUMsWUFBUCxDQUFzQixXQUF0QixDQUNBLE1BQU0sQ0FBQyxJQUFQLENBQVksa0JBQVosQ0FFQSxHQUFJLE1BQU0sQ0FBQyxRQUFQLEVBQWlCLFNBQXJCLENBQWdDLE1BQU0sQ0FBQyxRQUFQLENBQWtCLE1BQU0sQ0FBQyxZQUFQLENBQW9CLG1CQUFwQixFQUFsQixDQUVoQyxNQUFNLENBQUMsV0FBUCxDQUFtQiwyQkFBbkIsQ0FDQSxNQUFNLENBQUMsVUFBUCxDQUFrQixPQUFsQixDQUNBLE1BQU0sQ0FBQyxXQUFQLENBQW1CLFFBQW5CLENBRUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsT0FBakIsQ0FBMkIsVUFDcEMsQ0FDVyxHQUFJLENBQUEsR0FBRyxDQUFHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTBCLEdBQTFCLENBQThCLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBMUQsRUFBNEQsT0FBNUQsQ0FBb0UsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsaUJBQXBGLENBQVYsQ0FDQSxHQUFJLEdBQUcsRUFBRSxDQUFULENBQVcsQ0FDVCxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFoQixDQUF5QixNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUEwQixHQUExQixDQUF6QixDQUNELENBQ0YsQ0FORCxDQVFBLE1BQU0sQ0FBQyxtQkFBUCxDQUE0QixTQUFTLE1BQVQsQ0FDckMsQ0FDRCxNQUFNLENBQUMsUUFBUCxDQUFnQixxQkFBaEIsQ0FBd0MsS0FBeEMsQ0FDWTtBQUNBLEdBQUksTUFBTSxFQUFFLElBQVosQ0FBa0IsQ0FDM0IsV0FBVyxDQUFDLHFCQUFaLENBQWtDLE1BQWxDLENBQXlDLElBQXpDLEVBQStDLElBQS9DLENBQ0EsU0FBUyxJQUFULENBQWUsQ0FDYixNQUFNLENBQUMsUUFBUCxDQUFnQixLQUFoQixDQUF3QixJQUFJLENBQUMsS0FBN0IsQ0FDQSxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFoQixDQUF5QixJQUFJLENBQUMsTUFBOUIsQ0FDQSxNQUFNLENBQUMsUUFBUCxDQUFnQixxQkFBaEIsQ0FBd0MsSUFBeEMsQ0FFRCxDQU5ELENBTUUsU0FBUyxLQUFULENBQWUsQ0FDZixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDRixDQVJBLEVBU1UsQ0FWRCxJQVdYLENBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IscUJBQWhCLENBQXdDLElBQXhDLENBQ1UsQ0FoQkQsQ0FvQkYsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsVUFDNUIsQ0FDUixvQkFBb0IsQ0FBQyx3QkFBckIsQ0FBOEMsSUFBOUMsQ0FBbUQsTUFBbkQsRUFBMkQsSUFBM0QsQ0FDQyxTQUFTLElBQVQsQ0FBZSxzQkFDWixNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixJQUFJLENBQUMsSUFBakMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixDQUE2QixJQUE3QixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLEdBQ0EsR0FBSSxvQkFBRSxNQUFNLENBQUMsUUFBVCxxQ0FBRSxpQkFBaUIscUJBQW5CLENBQUosQ0FBK0MsTUFBTSxDQUFDLG1CQUFQLENBQTRCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQTVDLEVBQ2pELENBTkYsQ0FNRyxTQUFTLEtBQVQsQ0FBZSxDQUNoQixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDQSxDQVJGLEVBU1MsQ0FYRCxDQWNULG9CQUFvQixDQUFDLDZCQUFyQixDQUFtRCxNQUFNLENBQUMsUUFBUCxDQUFnQixjQUFuRSxDQUFrRixNQUFsRixFQUEwRixJQUExRixDQUNhLFNBQVUsSUFBVixDQUFnQixDQUMzQixNQUFNLENBQUMsU0FBUCxDQUFpQiw4QkFBakIsQ0FBZ0QsRUFBaEQsQ0FDZSxNQUFNLENBQUMsU0FBUCxDQUFpQiw4QkFBakIsQ0FBZ0QsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsY0FBaEUsRUFBa0YsSUFBSSxDQUFDLElBQXZGLENBRUEsR0FBSSxDQUFFLE1BQU0sQ0FBQyxRQUFQLENBQWdCLDJCQUF0QixDQUFrRCxDQUM5QyxHQUFJLENBQUEsU0FBUyxDQUFHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLDhCQUFqQixDQUFnRCxNQUFNLENBQUMsUUFBUCxDQUFnQixjQUFoRSxFQUFnRixNQUFNLENBQUMsU0FBUCxDQUFpQiw4QkFBakIsQ0FBZ0QsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsY0FBaEUsRUFBZ0YsTUFBaEYsQ0FBdUYsQ0FBdkssQ0FBaEIsQ0FDSCxDQUVoQixHQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLDJCQUFwQixDQUFnRCxDQUFFO0FBQy9DLEdBQUksQ0FBQSxhQUFhLENBQUcsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsOEJBQWpCLENBQWdELE1BQU0sQ0FBQyxRQUFQLENBQWdCLGNBQWhFLENBQXBCLENBQ0EsYUFBYSxDQUFDLE9BQWQsQ0FBdUIsU0FBQyxJQUFELENBQVMsQ0FDL0IsR0FBSSxJQUFJLENBQUMsT0FBTCxFQUFnQixNQUFNLENBQUMsUUFBUCxDQUFnQix5QkFBcEMsQ0FDQyxNQUFNLENBQUMsUUFBUCxDQUFnQix5QkFBaEIsQ0FBNEMsSUFBNUMsQ0FDRCxDQUhELEVBS0YsQ0FFQztBQUNBO0FBQ0Q7QUFDVSxDQXJCYixDQXNCSSxTQUFTLEtBQVQsQ0FBZSxDQUNGLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNoQixDQXhCRCxFQTJCUyxNQUFNLENBQUMsWUFBUCxDQUFzQixVQUN0QixDQUNDLE1BQU0sQ0FBQyxZQUFQLENBQW9CLFFBQXBCLENBQTZCLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGdCQUFqRCxDQUFrRSxJQUFsRSxFQUF3RSxJQUF4RSxDQUNSLFNBQVMsSUFBVCxDQUFlLENBQ08sR0FBSSxNQUFNLENBQUMsWUFBUCxDQUFvQixnQkFBcEIsQ0FBcUMsVUFBckMsRUFBbUQsSUFBbkQsRUFBMkQsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsZ0JBQXBCLENBQXFDLFVBQXJDLEVBQWlELFNBQWhILENBQTRILENBQ3pILE1BQU0sQ0FBQyxZQUFQLENBQW9CLG1CQUFwQixDQUF3QyxJQUFJLENBQUMsSUFBN0MsQ0FBa0QsSUFBbEQsRUFDQSxNQUFNLENBQUMsWUFBUCxDQUFvQixzQkFBcEIsQ0FBMkMsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsZ0JBQS9ELEVBQ0QsQ0FIRixJQUlkLENBQ2lCLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGdCQUFwQixDQUF1QyxJQUFJLENBQUMsSUFBNUMsQ0FDRCxDQUVELE1BQU0sQ0FBQyxZQUFQLENBQW9CLDRCQUFwQixHQUNBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxHQUFqQyxDQUFxQyxTQUFyQyxFQUNQLENBWlIsQ0FhUixTQUFTLEtBQVQsQ0FBZSxDQUNZLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUVYLENBaEJSLEVBaUJFLENBbkJILENBdUJBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLEdBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBOEIsSUFBOUIsQ0FFQSxNQUFNLENBQUMsTUFBUCxDQUFjLCtCQUFkLENBQThDLFNBQVMsUUFBVCxDQUFrQixRQUFsQixDQUEyQixDQUNuRSxHQUFJLFFBQVEsRUFBRSxRQUFkLENBQXdCLENBQ3hCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxZQUFQLENBQW9CLG1CQUFwQixFQUFoQixDQUNDLENBQ04sQ0FKRCxFQU1BLENBekhGLENBMEhDLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FHeEMsQ0E3SEcsQ0FBUCxDQWdJRixFQUNELGFBRU8sUUFBUyxDQUFBLFlBQVQsRUFBd0IsQ0FDNUIsTUFBTyxDQUNKLE9BQU8sQ0FBRSxTQURMLENBRUosSUFBSSxDQUFFLGNBQVMsS0FBVCxDQUFnQixJQUFoQixDQUFzQixJQUF0QixDQUEyQixPQUEzQixDQUFvQyxDQUUxQztBQUNRLEtBQUssQ0FBQyxNQUFOLENBQWEsQ0FDdkIsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLE1BQU0sQ0FBQyxRQUFiLENBQXNCLElBQUksQ0FBQyxVQUEzQixDQUFzQyxJQUFJLENBQUMscUJBQTNDLENBRHVCLENBRXZCLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxNQUFNLENBQUMsV0FBYixDQUF5QixJQUFJLENBQUMsY0FBOUIsQ0FBNkMsSUFBSSxDQUFDLGNBQWxELENBRnVCLENBQWIsQ0FLQTtBQUVBO0FBQ0osR0FBSSxDQUFBLE9BQU8sQ0FBRyxJQUFJLENBQUMsWUFBbkIsQ0FDQSxLQUFLLENBQUMsUUFBTixDQUFpQixLQUFqQixDQUNBLEdBQUksT0FBTyxFQUFJLFNBQWYsQ0FDQSxDQUNFLE9BQU8sQ0FBRyxDQUFWLENBQ0QsQ0FFSCxLQUFLLENBQUMsWUFBTixDQUFtQixVQUFVLENBQzVCLEdBQUksS0FBSyxDQUFDLEVBQU4sRUFBVSxTQUFkLENBQ0EsQ0FDRSxHQUFJLEtBQUssQ0FBQyxRQUFOLENBQWUsQ0FBZixFQUFrQixRQUFRLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBbkMsR0FBNEMsU0FBNUMsRUFBeUQsS0FBSyxDQUFDLFFBQU4sQ0FBZSxDQUFmLEVBQWtCLFFBQVEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFuQyxHQUE0QyxJQUF6RyxDQUNBLENBRUUsS0FBSyxDQUFDLFFBQU4sQ0FBZSxDQUFmLEVBQWtCLFFBQVEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFuQyxFQUEyQyxFQUEzQyxDQUVELENBQ0QsS0FBSyxDQUFDLE9BQU4sQ0FBYyx5QkFBZCxDQUF5QyxLQUFLLENBQUMsUUFBTixDQUFlLENBQWYsRUFBa0IsUUFBUSxLQUFLLENBQUMsRUFBTixDQUFTLE1BQW5DLENBQXpDLENBRUEsR0FBSSxLQUFLLENBQUMsUUFBTixDQUFlLENBQWYsRUFBa0IsUUFBUSxLQUFLLENBQUMsRUFBTixDQUFTLE1BQW5DLEVBQTJDLE1BQTNDLENBQWtELENBQXRELENBQ0EsQ0FDRyxLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsQ0FBZ0IsS0FBaEIsQ0FBc0IsS0FBSyxDQUFDLFFBQU4sQ0FBZSxDQUFmLEVBQWtCLFFBQVEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFuQyxDQUF0QixDQUFrRTtBQUNwRSxDQUNGLENBZEQsSUFlQSxDQUNDLEtBQUssQ0FBQyxPQUFOLENBQWMseUJBQWQsQ0FBd0MsS0FBSyxDQUFDLGFBQTlDLENBRUEsQ0FFRCxDQXJCRCxDQXVCRDtBQUVDLEtBQUssQ0FBQyxNQUFOLENBQWEsZUFBYixDQUE4QixVQUFVLENBRWpDLEtBQUssQ0FBQyxZQUFOLEdBRU4sQ0FKRCxFQU1FLHdDQUNBLEtBQUssQ0FBQyxrQkFBTixDQUE0QixTQUFTLEtBQVQsQ0FBZSxDQUV2QyxHQUFJLEtBQUssQ0FBQyxRQUFOLENBQWUsQ0FBZixFQUFrQixRQUFRLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBbkMsR0FBNEMsU0FBaEQsQ0FDQSxDQUNFLEtBQUssQ0FBQyxRQUFOLENBQWUsQ0FBZixFQUFrQixRQUFRLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBbkMsRUFBMkMsTUFBM0MsQ0FBa0QsS0FBbEQsQ0FBd0QsQ0FBeEQsRUFDRCxDQUhELElBSUEsQ0FFRSxLQUFLLENBQUMsYUFBTixDQUFvQixNQUFwQixDQUEyQixLQUEzQixDQUFpQyxDQUFqQyxFQUNELENBQ0QsS0FBSyxDQUFDLGFBQU4sR0FDSixHQUFJLEtBQUssQ0FBQyxFQUFOLEVBQVUsU0FBZCxDQUF5QixLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsQ0FBZ0IsS0FBaEIsQ0FBc0IsS0FBSyxDQUFDLFFBQU4sQ0FBZSxDQUFmLEVBQWtCLFFBQVEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFuQyxDQUF0QixDQUFrRTtBQUcxRixDQWRELENBaUJILEtBQUssQ0FBQyxhQUFOLENBQXVCLFNBQVMsSUFBVCxDQUFlLENBRXJDLEdBQUksSUFBSSxFQUFFLElBQVYsQ0FDQSxDQUNFLEdBQUksQ0FBQSxHQUFKLENBQ0EsR0FBSSxLQUFLLENBQUMsUUFBTixDQUFlLENBQWYsRUFBa0IsUUFBUSxLQUFLLENBQUMsRUFBTixDQUFTLE1BQW5DLEdBQTRDLFNBQWhELENBQ0EsQ0FDQyxHQUFHLENBQUcsS0FBSyxDQUFDLFFBQU4sQ0FBZSxDQUFmLEVBQWtCLFFBQVEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFuQyxFQUEyQyxHQUEzQyxDQUErQyxTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsRUFBVCxDQUFjLENBQTNFLEVBQTZFLE9BQTdFLENBQXFGLElBQUksQ0FBQyxFQUExRixDQUFOLENBRUcsR0FBSSxHQUFHLENBQUMsQ0FBUixDQUFVLENBRVAsS0FBSyxDQUFDLFFBQU4sQ0FBZSxDQUFmLEVBQWtCLFFBQVEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFuQyxFQUEyQyxJQUEzQyxDQUFnRCxPQUFPLENBQUMsSUFBUixDQUFhLElBQWIsQ0FBaEQsRUFJRixDQUNKLENBWEQsSUFZQSxDQUNJLEdBQUksS0FBSyxDQUFDLGFBQU4sRUFBcUIsU0FBekIsQ0FBb0MsS0FBSyxDQUFDLGFBQU4sQ0FBc0IsRUFBdEIsQ0FDcEMsR0FBRyxDQUFHLEtBQUssQ0FBQyxhQUFOLENBQW9CLEdBQXBCLENBQXdCLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBcEQsRUFBc0QsT0FBdEQsQ0FBOEQsSUFBSSxDQUFDLEVBQW5FLENBQU4sQ0FFQSxHQUFJLEdBQUcsQ0FBQyxDQUFSLENBQVUsQ0FFUCxLQUFLLENBQUMsYUFBTixDQUFvQixJQUFwQixDQUF5QixPQUFPLENBQUMsSUFBUixDQUFhLElBQWIsQ0FBekIsRUFHRixDQUNKLENBQ0csR0FBSSxLQUFLLENBQUMsUUFBVixDQUNBLENBQ0MsS0FBSyxDQUFDLGFBQU4sR0FDQSxDQUNELEdBQUksS0FBSyxDQUFDLEVBQU4sRUFBVSxTQUFkLENBQXlCLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBVCxDQUFnQixLQUFoQixDQUFzQixLQUFLLENBQUMsUUFBTixDQUFlLENBQWYsRUFBa0IsUUFBUSxLQUFLLENBQUMsRUFBTixDQUFTLE1BQW5DLENBQXRCLENBQWtFO0FBQ2hHLENBR0YsQ0FwQ0EsQ0FxQ0gsS0FBSyxDQUFDLGFBQU4sQ0FBc0IsVUFBVSxDQUM1QixLQUFLLENBQUMsUUFBTixDQUFpQixJQUFqQixDQUNBLEdBQUksQ0FBQSxLQUFKLENBQ0EsR0FBSSxLQUFLLENBQUMsRUFBTixFQUFVLFNBQWQsQ0FDQSxDQUNFLEtBQUssQ0FBSSxDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsUUFBWCxFQUF5QixLQUFLLENBQUMsUUFBTixDQUFlLENBQWYsRUFBa0IsUUFBUSxLQUFLLENBQUMsRUFBTixDQUFTLE1BQW5DLEVBQTJDLE1BQTNDLEVBQXFELE9BQXRGLENBQ0QsQ0FIRCxJQUlBLENBQ0UsS0FBSyxDQUFJLENBQUMsS0FBSyxDQUFDLFFBQVIsRUFBc0IsS0FBSyxDQUFDLGFBQU4sQ0FBb0IsTUFBcEIsRUFBOEIsT0FBNUQsQ0FDRCxDQUNELE9BQU8sQ0FBQyxZQUFSLENBQXFCLGNBQXJCLENBQXFDLEtBQXJDLEVBRUgsQ0FaRCxDQWFBLGtDQUNHLENBeEhHLENBQVAsQ0EwSEYsRUFDRCxhQUVPLFFBQVMsQ0FBQSxrQkFBVCxFQUE4QixDQUVuQyxNQUFPLENBQ0csUUFBUSxDQUFFLEdBRGIsQ0FFRyxXQUFXLENBQUUsOENBRmhCLENBR0csS0FBSyxDQUFHLENBQ0osVUFBVSxDQUFDLEdBRFAsQ0FFSixTQUFTLENBQUMsR0FGTixDQUhYLENBT0csVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBZ0IsVUFBaEIsQ0FBMkIsUUFBM0IsQ0FBb0MsV0FBcEMsQ0FBZ0QsWUFBaEQsQ0FBNkQsZ0JBQTdELENBQThFLG9CQUE5RSxDQUFtRyxDQUU3RyxNQUFNLENBQUMsSUFBUCxDQUFZLG9CQUFaLENBRUEsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUNBLEdBQUksQ0FBQSxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBL0IsQ0FFQSxHQUFJLE1BQU0sQ0FBQyxTQUFQLEVBQWtCLFNBQXRCLENBQWlDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLEVBQWpCLENBQ2pDLE1BQU0sQ0FBQyxZQUFQLENBQW9CLFdBQXBCLENBRUEsR0FBSSxNQUFNLENBQUMsVUFBUCxFQUFtQixTQUF2QixDQUFrQyxDQUM1QixNQUFNLENBQUMsVUFBUCxDQUFrQixNQUFNLENBQUMsWUFBUCxDQUFvQixpQkFBcEIsRUFBbEIsQ0FDTCxDQUVELEdBQUksTUFBTSxDQUFDLFVBQVAsQ0FBa0IsS0FBbEIsRUFBMkIsU0FBL0IsQ0FBMEMsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsS0FBbEIsQ0FBd0IsRUFBeEIsQ0FDMUMsR0FBSSxNQUFNLENBQUMsVUFBUCxDQUFrQixNQUFsQixFQUE0QixTQUFoQyxDQUEyQyxNQUFNLENBQUMsVUFBUCxDQUFrQixNQUFsQixDQUF5QixFQUF6QixDQUUzQyxNQUFNLENBQUMsYUFBUCxDQUF1QixNQUFNLENBQUMsVUFBUCxDQUFrQixLQUF6QyxDQUNBLE1BQU0sQ0FBQyxjQUFQLENBQXdCLE1BQU0sQ0FBQyxVQUFQLENBQWtCLE1BQTFDLENBRUEsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsNEJBQW5CLENBQ0EsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsT0FBbEIsQ0FDQSxNQUFNLENBQUMsV0FBUCxDQUFtQixRQUFuQixDQUVBLE1BQU0sQ0FBQyxjQUFQLENBQXVCLFVBQ2hDLENBQ0EsR0FBSSxDQUFBLE1BQU0sQ0FBRyxNQUFNLENBQUMsVUFBUCxDQUFrQixVQUEvQixDQUNBLEdBQUksTUFBTSxFQUFFLElBQVosQ0FBa0IsQ0FDaEIsV0FBVyxDQUFDLHFCQUFaLENBQWtDLE1BQWxDLENBQXlDLElBQXpDLEVBQStDLElBQS9DLENBQ0EsU0FBUyxJQUFULENBQWUsQ0FDWixNQUFNLENBQUMsVUFBUCxDQUFrQixLQUFsQixDQUEwQixJQUFJLENBQUMsS0FBL0IsQ0FDQSxNQUFNLENBQUMsVUFBUCxDQUFrQixNQUFsQixDQUEyQixJQUFJLENBQUMsTUFBaEMsQ0FDQSxNQUFNLENBQUMsYUFBUCxDQUF1QixNQUFNLENBQUMsVUFBUCxDQUFrQixLQUF6QyxDQUFnRDtBQUNoRCxNQUFNLENBQUMsY0FBUCxDQUF3QixNQUFNLENBQUMsVUFBUCxDQUFrQixNQUExQyxDQUFrRDtBQUNsRCxNQUFNLENBQUMsVUFBUCxDQUFrQixxQkFBbEIsQ0FBMEMsSUFBMUMsQ0FDRixDQVBELENBT0UsU0FBUyxLQUFULENBQWUsQ0FDaEIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0EsQ0FURCxFQVVELENBWEQsSUFXTyxDQUFBLE1BQU0sQ0FBQyxVQUFQLENBQWtCLHFCQUFsQixDQUEwQyxJQUExQyxDQUNHLENBZkQsQ0FrQlgsb0JBQW9CLENBQUMsNkJBQXJCLENBQW1ELE1BQU0sQ0FBQyxVQUFQLENBQWtCLGNBQXJFLENBQW9GLE1BQXBGLEVBQTRGLElBQTVGLENBQ0UsU0FBVSxJQUFWLENBQWdCLENBQ2YsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsOEJBQWpCLENBQWdELEVBQWhELENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsOEJBQWpCLENBQWdELE1BQU0sQ0FBQyxVQUFQLENBQWtCLGNBQWxFLEVBQW9GLElBQUksQ0FBQyxJQUF6RixDQUVBO0FBQ0EsR0FBSSxNQUFNLENBQUMsVUFBUCxDQUFrQiwyQkFBdEIsQ0FBa0QsQ0FDL0MsR0FBSSxDQUFBLGFBQWEsQ0FBRyxNQUFNLENBQUMsU0FBUCxDQUFpQiw4QkFBakIsQ0FBZ0QsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsY0FBbEUsQ0FBcEIsQ0FDQSxhQUFhLENBQUMsT0FBZCxDQUF1QixTQUFDLElBQUQsQ0FBUyxDQUMvQixHQUFJLElBQUksQ0FBQyxPQUFMLEVBQWdCLE1BQU0sQ0FBQyxVQUFQLENBQWtCLHlCQUF0QyxDQUNDLE1BQU0sQ0FBQyxVQUFQLENBQWtCLHlCQUFsQixDQUE4QyxJQUE5QyxDQUNELENBSEQsRUFJRixDQUNELENBYkgsQ0FhSSxTQUFTLEtBQVQsQ0FBZSxDQUNoQixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDRixDQWZELEVBa0JXLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLENBQTJCLFVBQVcsQ0FDcEMsR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUEwQixHQUExQixDQUE4QixTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsRUFBVCxDQUFjLENBQTFELEVBQTRELE9BQTVELENBQW9FLE1BQU0sQ0FBQyxVQUFQLENBQWtCLGlCQUF0RixDQUFWLENBQ0EsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFXLENBQ1QsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsTUFBbEIsQ0FBMkIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIsR0FBMUIsQ0FBM0IsQ0FDRCxDQUNGLENBTEQsQ0FRQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixVQUFXLENBQ25DLG9CQUFvQixDQUFDLHdCQUFyQixDQUE4QyxJQUE5QyxDQUFtRCxNQUFuRCxFQUEyRCxJQUEzRCxDQUNNLFNBQVMsSUFBVCxDQUFlLENBQ2IsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQWpDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsSUFBN0IsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixPQUFqQixHQUNELENBTFAsQ0FLUSxTQUFTLEtBQVQsQ0FBZSxDQUNmLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNELENBUFAsRUFRSCxDQVRELENBV0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsR0FFRjtBQUNDLEdBQUksTUFBTSxDQUFDLGFBQVAsRUFBc0IsU0FBdEIsRUFBbUMsTUFBTSxDQUFDLGNBQVAsRUFBdUIsU0FBOUQsQ0FBMkUsTUFBTSxDQUFDLGNBQVAsR0FHMUUsTUFBTSxDQUFDLE1BQVAsQ0FBYyw2QkFBZCxDQUE0QyxTQUFTLFFBQVQsQ0FBa0IsUUFBbEIsQ0FBMkIsQ0FDbkUsR0FBSSxRQUFRLEVBQUUsUUFBZCxDQUF3QixDQUNsQixNQUFNLENBQUMsVUFBUCxDQUFrQixNQUFNLENBQUMsWUFBUCxDQUFvQixpQkFBcEIsRUFBbEIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixPQUFqQixHQUNMLENBQ0gsQ0FMRixFQU9DLE1BQU0sQ0FBQyxNQUFQLENBQWMsZUFBZCxDQUE4QixTQUFTLFFBQVQsQ0FBa0IsUUFBbEIsQ0FBMkIsQ0FDdEQsR0FBSSxDQUFBLENBQUMsQ0FBRSxRQUFQLENBQ0Q7QUFDRCxDQUhELEVBS0MsTUFBTSxDQUFDLE1BQVAsQ0FBYyxZQUFkLENBQTJCLFNBQVMsUUFBVCxDQUFrQixRQUFsQixDQUEyQixDQUNwRCxHQUFJLENBQUEsQ0FBQyxDQUFFLFFBQVAsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixPQUFqQixHQUVGLENBSkEsRUFNSixNQUFNLENBQUMsTUFBUCxDQUFnQixVQUFXLENBQ3hCLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGNBQXBCLENBQXFDLEtBQXJDLENBQ0YsQ0FGRCxDQUlBLE1BQU0sQ0FBQyxVQUFQLENBQW9CLFNBQVMsSUFBVCxDQUFlLENBQy9CO0FBQ0EsR0FBSSxJQUFJLENBQUMsTUFBVCxDQUFpQixNQUFNLENBQUMsWUFBUCxDQUFvQixRQUFwQixDQUE2QixNQUFNLENBQUMsWUFBUCxDQUFvQixjQUFqRCxDQUFnRSxJQUFoRSxFQUFzRSxJQUF0RSxDQUM1QixTQUFTLElBQVQsQ0FBZSxDQUNJLEdBQUksTUFBTSxDQUFDLFlBQVAsQ0FBb0IsY0FBcEIsQ0FBbUMsVUFBbkMsRUFBaUQsQ0FBakQsRUFBc0QsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsY0FBcEIsQ0FBbUMsVUFBbkMsRUFBaUQsSUFBdkcsRUFBK0csTUFBTSxDQUFDLFlBQVAsQ0FBb0IsY0FBcEIsQ0FBbUMsVUFBbkMsRUFBK0MsU0FBbEssQ0FBOEssQ0FDdEssTUFBTSxDQUFDLFlBQVAsQ0FBb0IsY0FBcEIsQ0FBcUMsSUFBSSxDQUFDLElBQTFDLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBeUIsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsY0FBcEIsQ0FBbUMsVUFBNUQsQ0FDQSxNQUFNLENBQUMsWUFBUCxDQUFvQixjQUFwQixDQUFtQyxTQUFuQyxDQUErQyxFQUEvQyxDQUNBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLFdBQXBCLENBQWdDLElBQWhDLENBQXFDLE9BQU8sQ0FBQyxJQUFSLENBQWEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsY0FBakMsQ0FBckMsRUFDQSxNQUFNLENBQUMsWUFBUCxDQUFvQixrQkFBcEIsQ0FBdUMsTUFBTSxDQUFDLGVBQTlDLENBQThELElBQTlELEVBQ1AsQ0FORCxJQU1RLENBQ0gsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsY0FBcEIsQ0FBcUMsSUFBSSxDQUFDLElBQTFDLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBeUIsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsY0FBcEIsQ0FBbUMsVUFBNUQsQ0FDRCxDQUV0QixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsR0FBakMsQ0FBcUMsU0FBckMsRUFFQSxDQWYyQixDQWUxQixTQUFTLEtBQVQsQ0FBZSxDQUNHLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNGLENBakJVLEVBa0JwQixDQXBCRCxDQXNCRSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUFnQyxJQUFoQyxDQUVELENBMUlKLENBMElNO0FBRUgsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUN6QyxDQTdJRSxDQUFQLENBZ0pELEVBQ0QsYUFFTyxRQUFTLENBQUEsa0JBQVQsRUFBK0IsQ0FFbEMsR0FBSSxDQUFBLFVBQVUsQ0FBRyxDQUFDLFFBQUQsQ0FBVyxXQUFYLENBQXVCLGNBQXZCLENBQXNDLFVBQXRDLENBQWlELGNBQWpELENBQWdFLHNCQUFoRSxDQUF1RixZQUF2RixDQUFvRyxtQkFBcEcsQ0FBd0gsMkJBQXhILENBQW9KLGlCQUFwSixDQUFzSyxrQkFBdEssQ0FBeUwsYUFBekwsQ0FBdU0saUJBQXZNLENBQ0MsU0FBVSxNQUFWLENBQWlCLFNBQWpCLENBQTJCLFlBQTNCLENBQXdDLFFBQXhDLENBQWlELFlBQWpELENBQThELG9CQUE5RCxDQUFtRixVQUFuRixDQUE4RixpQkFBOUYsQ0FBZ0gseUJBQWhILENBQTBJLGVBQTFJLENBQTBKLGdCQUExSixDQUEySyxXQUEzSyxDQUF1TCxlQUF2TCxDQUF3TSxDQUkxTixNQUFNLENBQUMsU0FBUCxDQUFpQixFQUFqQixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGlCQUFqQixDQUFtQyxDQUFuQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGFBQWpCLENBQStCLFdBQVcsQ0FBQyxlQUEzQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUF3QyxLQUF4QyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGlCQUFqQixDQUFtQyxJQUFuQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHNCQUFqQixDQUEwQyxJQUExQyxDQUNBLE1BQU0sQ0FBQyxNQUFQLENBQWMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBQXhDLENBQ0EsR0FBSSxNQUFNLENBQUMsTUFBUCxFQUFlLFNBQW5CLENBQStCLE1BQU0sQ0FBQyxNQUFQLENBQWMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGdCQUF4QyxDQUMvQixHQUFJLE1BQU0sQ0FBQyxNQUFQLEVBQWUsU0FBbkIsQ0FBOEIsTUFBTSxDQUFDLE1BQVAsQ0FBYyxDQUFkLENBQzlCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQWpCLENBQXdCLE1BQU0sQ0FBQyxNQUEvQixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQThCLENBQTlCLENBRUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQW9DLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBOUMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBcUMsSUFBckMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixVQUE5QixDQUdDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFNBQWpCLENBQTZCLENBQzVCLEVBQUUsQ0FBRSxHQUR3QixDQUU1QixJQUFJLENBQUUsTUFGc0IsQ0FHNUIsT0FBTyxDQUFFLGVBQWUsQ0FBQyxtQkFBaEIsRUFIbUIsQ0FBN0IsQ0FPRSxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBMkMsQ0FDdkM7QUFDSCxjQUFjLENBQUUsSUFGMEIsQ0FHMUMsY0FBYyxDQUFFLElBSDBCLENBSTFDLGdCQUFnQixDQUFFLElBSndCLENBSzFDLGtCQUFrQixDQUFFLElBTHNCLENBTTFDLFdBQVcsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBTm1CLENBTzVDO0FBQ0M7QUFDQyxlQUFlLENBQUUsSUFUeUIsQ0FVMUMsd0JBQXdCLENBQUUsSUFWZ0IsQ0FXMUMsb0JBQW9CLENBQUUsSUFYb0IsQ0FZMUMsc0JBQXNCLENBQUUsSUFaa0IsQ0FhMUMscUJBQXFCLENBQUUsSUFibUIsQ0FjMUMsbUJBQW1CLENBQUUsQ0FBQyxFQUFELENBQUssRUFBTCxDQUFTLEVBQVQsQ0FBWSxHQUFaLENBQWdCLEdBQWhCLENBQW9CLEdBQXBCLENBQXdCLElBQXhCLENBZHFCLENBZTFDLHdCQUF3QixDQUFFLEtBZmdCLENBQTNDLENBa0JMLEdBQUksQ0FBQSxpQkFBaUIsQ0FBRyxDQUN0QixVQUFVLENBQUUsQ0FEVSxDQUV0QixRQUFRLENBQUUsRUFGWSxDQUd0QixJQUFJLENBQUUsSUFIZ0IsQ0FBeEIsQ0FPSyxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBc0MsQ0FDdkM7QUFDQyxjQUFjLENBQUUsSUFGc0IsQ0FHdEMsY0FBYyxDQUFFLElBSHNCLENBSXRDLGdCQUFnQixDQUFFLElBSm9CLENBS3RDLGtCQUFrQixDQUFFLEtBTGtCLENBTXRDLFdBQVcsQ0FBRSxLQU55QixDQU90Qyx5QkFBeUIsQ0FBRyxDQVBVLENBUXRDLHNCQUFzQixDQUFHLENBUmEsQ0FTdEMsZUFBZSxDQUFFLElBVHFCLENBVXRDLHdCQUF3QixDQUFFLElBVlksQ0FXdEMsb0JBQW9CLENBQUUsSUFYZ0IsQ0FZdEMsYUFBYSxDQUFFLENBWnVCLENBQXRDLENBZ0JDLE1BQU0sQ0FBQyxNQUFQLENBQWMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBQXhDLENBQ0EsR0FBSSxNQUFNLENBQUMsTUFBUCxFQUFlLFNBQW5CLENBQStCLE1BQU0sQ0FBQyxNQUFQLENBQWMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGdCQUF4QyxDQUMvQixHQUFJLE1BQU0sQ0FBQyxNQUFQLEVBQWUsU0FBbkIsQ0FBOEIsTUFBTSxDQUFDLE1BQVAsQ0FBYyxDQUFkLENBRTlCO0FBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUE2QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXZDLENBQ0EsTUFBTSxDQUFDLGFBQVAsQ0FBd0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFlBQWxELENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFNBQXBELENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFdBQXZELENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGdCQUFsRCxDQUNBLE1BQU0sQ0FBQyxhQUFQLENBQXVCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUFqRCxDQUNBLE1BQU0sQ0FBQyxjQUFQLENBQXdCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUFsRCxDQUNBLEdBQUssTUFBTSxDQUFDLGNBQVAsRUFBdUIsU0FBNUIsQ0FDQSxDQUVFLE1BQU0sQ0FBQyxjQUFQLENBQXdCLEtBQXhCLENBQ0QsQ0FLQyxHQUFJLE1BQU0sQ0FBQyxjQUFQLEVBQXVCLFNBQTNCLENBQ0gsQ0FDQyxNQUFNLENBQUMsY0FBUCxDQUF1QixDQUF2QixDQUVBLENBQ0QsR0FBSSxNQUFNLENBQUMsYUFBUCxFQUFzQixTQUExQixDQUNBLENBQ0MsTUFBTSxDQUFDLGFBQVAsQ0FBc0IsQ0FBdEIsQ0FFQSxDQUNBLEdBQUksTUFBTSxDQUFDLGFBQVAsRUFBc0IsU0FBMUIsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxhQUFQLENBQXNCLENBQXRCLENBQ0QsQ0FFRCxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsQ0FBb0MsQ0FBcEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsQ0FBNEIsQ0FBNUIsQ0FJRixHQUFJLENBQUEsVUFBVSxDQUFHLENBQUMsa0JBQUQsQ0FBakIsQ0FDQTtBQUNBLEdBQUksQ0FBQSxnQkFBZ0IsQ0FBRyxDQUFDLEdBQUcsQ0FBRSxDQUFDLENBQUMsT0FBTyx5QkFBUixDQUFrQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBTixDQUFtQixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFuQyxDQUFELENBQTZDLENBQUMsSUFBSSxDQUFDLGtCQUFOLENBQXlCLEtBQUssQ0FBQyxFQUEvQixDQUE3QyxDQUExQyxDQUFELENBQU4sQ0FBb0ksT0FBTyxDQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBTixDQUFvQixNQUFNLENBQUMsS0FBM0IsQ0FBRCxDQUE3SSxDQUFpTCxJQUFJLENBQUUsbUJBQXZMLENBQTJNLFFBQVEsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQS9OLENBQThPLE1BQU0sQ0FBRyxNQUFNLENBQUMsT0FBOVAsQ0FDdkIsYUFBYSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FESCxDQUNZO0FBQ25DLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUZYLENBRTRCLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxjQUZwRCxDQUVtRSxlQUFlLENBQUMsTUFBTSxDQUFDLGFBRjFGLENBRXlHLE1BQU0sQ0FBQyxVQUZoSCxDQUF2QixDQUdBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGFBQWpCLENBQWlDLHlCQUF5QixDQUFDLGNBQTFCLENBQXlDLGdCQUF6QyxDQUFqQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLENBQXlCLE1BQU0sQ0FBQyxhQUFoQyxDQUdBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUF5QyxhQUF6QyxDQUF5RCxTQUFVLE9BQVYsQ0FBbUIsQ0FDMUU7QUFDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixPQUFqQixDQUEyQixPQUEzQixDQUVFLE9BQU8sQ0FBQyxTQUFSLENBQWtCLEVBQWxCLENBQXFCLG1CQUFyQixDQUF5QyxNQUF6QyxDQUFnRCxTQUFTLEdBQVQsQ0FBYSxDQUUzRCxNQUFNLENBQUMsU0FBUCxDQUFpQixxQkFBakIsQ0FBdUMsR0FBRyxDQUFDLFVBQTNDLENBQ0EsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixxQkFBckIsQ0FDRSxDQUNFLEdBQUksR0FBRyxDQUFDLE1BQUosQ0FBVyxFQUFYLEVBQWUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQXBDLENBQ0EsQ0FDRSxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBMkMsR0FBRyxDQUFDLE1BQUosQ0FBVyxFQUF0RCxDQUNELENBQ0YsQ0FOSCxJQU9FLENBQ0UsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQTJDLENBQTNDLENBRUQsQ0FDRCxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBb0MsVUFBcEMsQ0FBK0MsRUFBL0MsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBb0MsSUFBcEMsQ0FBeUMsRUFBekMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUEwQixLQUExQixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGVBQWpCLENBQWtDLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBekIsQ0FBaUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFSLENBQWtCLGVBQWxCLEVBQXpDLENBQWxDLENBRUMsR0FBSSxPQUFPLENBQUMsU0FBUixDQUFrQixlQUFsQixHQUFvQyxNQUFwQyxDQUEyQyxDQUEvQyxDQUNELENBQ0U7QUFDQSx5QkFBeUIsQ0FBQyxPQUExQixDQUFrQyxDQUNoQyxHQUFHLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBTixDQUFnQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5DLENBQUQsQ0FBNkMsQ0FBQyxJQUFJLENBQUMsa0JBQU4sQ0FBeUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFoRCxDQUE3QyxDQUNyQyxDQUFDLElBQUksQ0FBQyxtQkFBTixDQUEwQixLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVIsQ0FBa0IsZUFBbEIsRUFBaEMsQ0FEcUMsQ0FDZ0MsQ0FBQyxJQUFJLENBQUMsb0JBQU4sQ0FBMkIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUF5QyxJQUExRSxDQURoQyxDQUF0QyxDQUFELENBRDJCLENBRStILFFBQVEsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBRm5KLENBRWtLLGVBQWUsQ0FBQyxNQUFNLENBQUMsYUFGekwsQ0FBbEMsRUFJRCxDQUVKLENBNUJELEVBOEJFO0FBQ0YsT0FBTyxDQUFDLFVBQVIsQ0FBbUIsRUFBbkIsQ0FBc0IsaUJBQXRCLENBQXdDLE1BQXhDLENBQWdELFNBQVUsT0FBVixDQUFtQixRQUFuQixDQUE2QixDQUMzRSxpQkFBaUIsQ0FBQyxVQUFsQixDQUErQixPQUEvQixDQUNBLGlCQUFpQixDQUFDLFFBQWxCLENBQTZCLFFBQTdCLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsd0JBQWpCLENBQTBDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQTNELENBQW9FLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQXJGLENBQWtHLE9BQWxHLENBQTBHLFFBQTFHLEVBQ0QsQ0FKRCxFQU1DLE9BQU8sQ0FBQyxTQUFSLENBQWtCLEVBQWxCLENBQXFCLHdCQUFyQixDQUE4QyxNQUE5QyxDQUFxRCxTQUFTLEdBQVQsQ0FBYSxDQUUvRCxNQUFNLENBQUMsU0FBUCxDQUFpQixlQUFqQixDQUFrQyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXpCLENBQWlDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUixDQUFrQixlQUFsQixFQUF6QyxDQUFsQyxDQUVILENBSkEsRUFLTCxDQTlDQSxDQWlERCxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBbUMsU0FBVSxJQUFWLENBQWUsQ0FFM0MsR0FBSSxJQUFJLEVBQUUsU0FBVixDQUFvQixDQUN0QixJQUFJLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBVixDQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBbkIsQ0FBMEIsQ0FBQyxFQUEzQixDQUErQixDQUVyQixHQUFJLFFBQVUsQ0FBQSxJQUFJLENBQUMsQ0FBRCxDQUFsQixDQUNBLENBQ0UsR0FBSSxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsSUFBUixFQUFnQixVQUFoQixFQUE4QixJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsVUFBMUMsQ0FDQSxDQUNFLEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsR0FBOUIsQ0FBa0MsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLFFBQVQsQ0FBb0IsQ0FBcEUsRUFBc0UsT0FBdEUsQ0FBOEUsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLGNBQXRGLENBQVYsQ0FDQSxHQUFJLEdBQUcsQ0FBQyxDQUFSLENBQVcsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsSUFBOUIsQ0FBbUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLGNBQWxCLENBQWlDLFNBQVMsQ0FBQyxLQUEzQyxDQUFuQyxFQUVaLENBQ0QsQ0FDQSxHQUFJLFVBQVksQ0FBQSxJQUFJLENBQUMsQ0FBRCxDQUFwQixDQUNBLENBRUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLENBQW1DLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxNQUEzQyxFQUNBLENBQ1IsQ0FDSixDQUVKLENBdEJGLENBd0JDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLG1CQUFqQixDQUFxQyxLQUFyQyxDQUVBO0FBQ047QUFDQTtBQUNBO0FBQ0EsUUFDTyxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBc0MsU0FBUyxFQUFULENBQWMsQ0FFN0MsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBakIsRUFBdUMsU0FBM0MsQ0FBc0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLEVBQXRDLENBQ3RELEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsR0FBN0IsQ0FBaUMsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUE3RCxFQUErRCxPQUEvRCxDQUF1RSxFQUF2RSxDQUFWLENBRUEsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFXLENBQ1QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLEVBQXRDLENBQTJDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLENBQTZCLEdBQTdCLEVBQWtDLEVBQTdFLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLElBQXRDLENBQTZDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLENBQTZCLEdBQTdCLEVBQWtDLElBQS9FLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBakIsQ0FBbUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsR0FBN0IsQ0FBbkMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBakIsQ0FBc0MsY0FBdEMsQ0FBdUQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLElBQXRDLENBQTRDLElBQTVDLENBQWlELE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUFzQyxFQUF2RixDQUEyRixHQUFsSixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHNCQUFqQixDQUF3QyxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBekQsQ0FDQyxDQUNYLENBWkMsQ0FjQTtBQUNDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLENBQStCLFVBQVksQ0FFdkMsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixFQUE4QixTQUFsQyxDQUE2QyxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixDQUE2QixFQUE3QixDQUU3QyxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0Esb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLElBQTlDLENBQW1ELGNBQW5ELEVBQW1FLElBQW5FLENBQ04sU0FBUyxJQUFULENBQWUsQ0FDQyxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixDQUErQixJQUFJLENBQUMsSUFBcEMsQ0FDQyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixFQUFtQixJQUF2QixDQUNBLENBQ0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQW9DLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBOUMsRUFFQyxDQUVyQixDQVRRLENBU1AsU0FBUyxLQUFULENBQWUsQ0FDWSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDN0IsQ0FYUyxFQVlWLENBakJNLENBbUJGLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWdDLFNBQVMsSUFBVCxDQUVoQyxDQUVNLFVBQVUsQ0FBRyxJQUFJLENBQUMsUUFBbEIsQ0FDQSxHQUFJLENBQUEsWUFBWSxDQUFDLElBQWpCLENBQ0EsR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixHQUE5QixDQUFrQyxTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsUUFBVCxDQUFvQixDQUFwRSxFQUFzRSxPQUF0RSxDQUE4RSxVQUE5RSxDQUFWLENBQ0E7QUFDQSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixNQUE3QyxDQUFvRCxDQUFDLEVBQXJELENBQ0UsQ0FFRSxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQThCLENBQTlCLEVBQWlDLFFBQWpDLEVBQTZDLFVBQWpELENBQTZELE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQThCLENBQTlCLEVBQWlDLFNBQWpDLENBQTZDLElBQTdDLENBQzdELEdBQUksQ0FBQyxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixDQUE5QixFQUFpQyxTQUF0QyxDQUFpRCxZQUFZLENBQUcsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsQ0FBOUIsRUFBaUMsU0FBaEQsQ0FDbEQsQ0FDRjtBQUNDLEdBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLEVBQXdCLFlBQXhCLEVBQXdDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLG1CQUE1RCxDQUFpRixDQUM3RSxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsQ0FBa0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUE1QyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGtCQUFqQixDQUFvQyxJQUFwQyxFQUVELENBQ1YsQ0FwQkQsQ0FzQkEsR0FBSSxNQUFNLENBQUMsU0FBUCxFQUFrQixTQUF0QixDQUFpQyxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUFnQyxFQUFoQyxDQUFqQyxJQUNLLENBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBbUIsQ0FBQyxZQUFZLENBQUcsRUFBaEIsQ0FBbkIsQ0FDTjtBQUNDLEdBQUksQ0FBQSxVQUFVLENBQUMsQ0FBZixDQUdBLE1BQU0sQ0FBQyxHQUFQLENBQVcsa0JBQWtCLE1BQU0sQ0FBQyxhQUFwQyxDQUFrRCxTQUFTLEtBQVQsQ0FBZ0IsSUFBaEIsQ0FBcUIsQ0FFbEUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBakIsQ0FBZ0MsSUFBaEMsRUFFSixDQUpELEVBT0g7QUFDRjtBQUNBO0FBQ08sTUFBTSxDQUFDLFNBQVAsQ0FBaUIsd0JBQWpCLENBQTRDLFNBQVUsZ0JBQVYsQ0FBMkIsUUFBM0IsQ0FBb0MsT0FBcEMsQ0FBNkMsQ0FHeEYsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUVBLG9CQUFvQixDQUFDLHNCQUFyQixDQUE0QyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRELENBQThELFFBQTlELENBQXVFLGdCQUF2RSxDQUF3RixDQUF4RixDQUEwRixPQUExRixDQUFrRyxJQUFsRyxFQUF3RyxJQUF4RyxDQUE2RyxTQUFTLElBQVQsQ0FBZSxDQUVoRyxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBb0MsSUFBcEMsQ0FBMkMsSUFBSSxDQUFDLElBQWhELENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQW9DLFVBQXBDLENBQWlELElBQUksQ0FBQyxVQUF0RCxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTBCLElBQTFCLENBQzVCO0FBQzBCLENBTjFCLENBTTJCLFNBQVMsS0FBVCxDQUFlLENBQ2YsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ04sQ0FSckIsRUFTQSxDQWRELENBaUJQO0FBQ0E7QUFDQTtBQUNLLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHNCQUFqQixDQUEwQyxTQUFVLGdCQUFWLENBQTJCLFFBQTNCLENBQXFDLENBRzVFLEdBQUksQ0FBQSxJQUFJLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUMsQ0FFQSxvQkFBb0IsQ0FBQywyQkFBckIsQ0FBaUQsZ0JBQWpELENBQWtFLENBQWxFLENBQW9FLElBQXBFLENBQXlFLENBQUMsRUFBRSxDQUFFLFFBQUwsQ0FBekUsRUFBeUYsSUFBekYsQ0FBOEYsU0FBUyxJQUFULENBQWUsQ0FFakYsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQW9DLElBQXBDLENBQTJDLElBQUksQ0FBQyxJQUFoRCxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGtCQUFqQixDQUFvQyxVQUFwQyxDQUFpRCxJQUFJLENBQUMsVUFBdEQsQ0FFNUI7QUFDMEIsQ0FOMUIsQ0FNMkIsU0FBUyxLQUFULENBQWUsQ0FDZixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDTixDQVJyQixFQVNBLENBZEgsQ0FnQkUsTUFBTSxDQUFDLEdBQVAsQ0FBVyxrQkFBa0IsTUFBTSxDQUFDLGFBQXpCLENBQXVDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBNUQsQ0FBMkUsU0FBUyxLQUFULENBQWdCLEtBQWhCLENBQXNCLENBRWpFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWdDLEtBQWhDLEVBRS9CLENBSkQsRUFNSixNQUFNLENBQUMsU0FBUCxDQUFpQixlQUFqQixDQUFtQyxVQUFVLENBQ25DLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixJQUE5QixDQUFvQyxDQUNsQyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBMkIsQ0FBM0IsQ0FDRCxDQUdELG9CQUFvQixDQUFDLCtCQUFyQixDQUFxRCxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQS9ELENBQXVFLE1BQU0sQ0FBQyxjQUE5RSxDQUE2RixNQUFNLENBQUMsYUFBcEcsQ0FBa0gsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUE1SCxDQUF5SSxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQW5KLENBQW1LLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBN0ssQ0FBNEwsTUFBTSxDQUFDLGFBQW5NLENBQWlOLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWxPLENBQTJPLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQTVQLENBQXVRLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUF4UixDQUF5UyxHQUF6UyxDQUE2UyxJQUE3UyxFQUFtVCxJQUFuVCxDQUF3VCxTQUFTLElBQVQsQ0FBZSxDQUVqVCxNQUFNLENBQUMsU0FBUCxDQUFpQix3QkFBakIsQ0FBMkMsSUFBSSxDQUFDLElBQUwsQ0FBVSxrQkFBckQsQ0FHQSxNQUFNLENBQUMsU0FBUCxDQUFpQixzQkFBakIsQ0FBMEMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHdCQUFqQixDQUEwQyxJQUFsRCxDQUF1RCxLQUFLLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEUsQ0FBOEUsWUFBWSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXBHLENBQTRHLGlCQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXZJLENBQXNKLGNBQWMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUE5SyxDQUEyTCxnQkFBZ0IsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsYUFBakIsQ0FBK0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUF6QyxDQUEzTSxDQUFrUSxrQkFBa0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUE5UixDQUExQyxDQUdBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixJQUFJLENBQUMsSUFBTCxDQUFVLE9BQS9CLENBRUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXdDLElBQXhDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFwQyxDQUErQyxVQUEvQyxDQUEwRCxLQUExRCxFQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLElBQTVCLENBQ0Q7QUFDQyxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBbUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUE3QyxFQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLG1CQUFqQixDQUF1QyxJQUF2QyxDQUNBLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsTUFBOUIsQ0FBcUMsQ0FBekMsQ0FDQSxDQUNFLHlCQUF5QixDQUFDLGNBQTFCLENBQXlDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBcEIsQ0FBbUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxhQUF4RCxDQUFzRSxhQUFhLENBQUMsTUFBTSxDQUFDLGFBQTNGLENBQXlHLFlBQVksQ0FBQyxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUF2SSxDQUF6QyxFQUNELENBSEQsSUFLQSxDQUNHLFVBQVUsQ0FBQyxVQUFYLENBQXNCLGtCQUFrQixNQUFNLENBQUMsYUFBL0MsQ0FBNkQsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFwQixDQUE3RCxFQUNGLENBQ0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsU0FBakIsQ0FBMkIsT0FBM0IsQ0FBbUMsTUFBbkMsQ0FBNkMsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUF2RCxDQUNBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBMUIsRUFBNkMsSUFBSSxDQUFDLElBQUwsQ0FBVSxTQUF2RCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFtQixNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTFCLENBQW5CLENBRUgsQ0E1Qm5CLENBNEJvQixTQUFTLEtBQVQsQ0FBZSxDQUNkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNMLENBOUJoQixFQWdDUCxDQXZDSCxDQXVDSTtBQUVOLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUEyQyxVQUFVLENBQ3pDLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixJQUE5QixDQUNBLENBQ0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQTJCLENBQTNCLENBRUQsQ0FDRCxvQkFBb0IsQ0FBQyxlQUFyQixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQS9DLENBQXVELEdBQXZELENBQTJELElBQTNELEVBQWlFLElBQWpFLENBQXNFLFNBQVMsSUFBVCxDQUFlLENBRW5FLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHdCQUFqQixDQUEyQyxJQUFJLENBQUMsSUFBTCxDQUFVLGtCQUFyRCxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFNBQWpCLENBQTJCLE9BQTNCLENBQW1DLE1BQW5DLENBQTBDLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBcEQsQ0FDQyxNQUFNLENBQUMsU0FBUCxDQUFpQixzQkFBakIsQ0FBMEMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHdCQUFqQixDQUEwQyxJQUFsRCxDQUF1RCxLQUFLLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEUsQ0FBOEUsWUFBWSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXBHLENBQTZHLGlCQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXhJLENBQXlKLGNBQWMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFqTCxDQUE4TCxnQkFBZ0IsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsYUFBakIsQ0FBK0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUF6QyxDQUE5TSxDQUFxUSxrQkFBa0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFqUyxDQUExQyxDQUdELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixJQUFJLENBQUMsSUFBTCxDQUFVLE9BQS9CLENBRUE7QUFDQSx5QkFBeUIsQ0FBQyxPQUExQixDQUFrQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXBCLENBQW9DLEdBQUcsQ0FBRSxDQUFDLENBQUMsT0FBTyxjQUFSLENBQXVCLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5DLENBQUQsQ0FBNkMsQ0FBQyxJQUFJLENBQUMsa0JBQU4sQ0FBeUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFoRCxDQUE3QyxDQUEvQixDQUFELENBQXpDLENBQWxDLEVBRUUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXdDLElBQXhDLENBQ0MsUUFBUSxDQUFDLFVBQVcsQ0FDbkIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsSUFBNUIsQ0FFQyxDQUhNLENBQVIsQ0FJRixDQWpCbkIsQ0FpQm9CLFNBQVMsS0FBVCxDQUFlLENBQ2QsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBRUwsQ0FwQmhCLEVBc0JQLENBN0JMLENBK0JDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHFCQUFqQixDQUF5QyxLQUF6QyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUEyQyxDQUEzQyxDQUdHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGVBQWpCLENBQW1DLFVBQVksQ0FFN0M7QUFDQSxHQUFJLENBQUEsSUFBSSxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQTJDLElBQTNDLENBQ0EsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixFQUEyQixTQUEvQixDQUEwQyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixpQkFBaUIsQ0FBQyxRQUE5QyxDQUMxQyxvQkFBb0IsQ0FBQyxlQUFyQixDQUFxQyxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBdEQsQ0FBdUUsTUFBTSxDQUFDLE1BQTlFLENBQXFGLElBQXJGLEVBQTJGLElBQTNGLENBQWdHLFNBQVMsSUFBVCxDQUFlLENBRWxGLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUF5QyxJQUF6QyxDQUFnRCxJQUFJLENBQUMsSUFBckQsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBeUMsVUFBekMsQ0FBc0QsSUFBSSxDQUFDLFVBQTNELENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLEdBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsc0JBQWpCLENBQTBDLElBQTFDLENBRUgsQ0FQMUIsQ0FPMkIsU0FBUyxLQUFULENBQWUsQ0FDZixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFFTCxDQVZ0QixFQVdDLENBakJILENBb0JBO0FBQ0E7QUFDQTtBQUNGLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHdCQUFqQixDQUE0QyxTQUFVLE9BQVYsQ0FBa0IsT0FBbEIsQ0FBMEIsT0FBMUIsQ0FBa0MsUUFBbEMsQ0FBNEMsQ0FHcEYsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsc0JBQWpCLENBQTBDLEtBQTFDLENBQ0EsR0FBSSxJQUFJLENBQUMsSUFBTCxDQUFVLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLFFBQXRDLEVBQWdELE9BQXBELENBQ0EsQ0FDRSxPQUFPLENBQUcsSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixRQUF0QyxDQUFWLENBQ0QsQ0FFQSxHQUFJLENBQUEsSUFBSSxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDLENBRUEsR0FBSSxRQUFRLEVBQUUsU0FBZCxDQUVBLENBQ0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsaUJBQWlCLENBQUMsUUFBOUMsQ0FDQSxRQUFRLENBQUUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBM0IsQ0FDQSxDQUVELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLEdBQTlCLENBQ0EsQ0FDQyxvQkFBb0IsQ0FBQyw4QkFBckIsQ0FBb0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQXJFLENBQXNGLE9BQXRGLENBQThGLE9BQTlGLENBQXNHLE9BQXRHLENBQThHLFFBQTlHLENBQXVILElBQXZILENBQTRILE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBdEksQ0FBOEksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsU0FBakIsQ0FBMkIsT0FBM0IsQ0FBbUMsTUFBakwsRUFBeUwsSUFBekwsQ0FBOEwsU0FBUyxJQUFULENBQWUsQ0FJbkwsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQXlDLElBQXpDLENBQWdELElBQUksQ0FBQyxJQUFMLENBQVUsT0FBMUQsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsR0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixzQkFBakIsQ0FBMEMsSUFBMUMsQ0FFQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLElBQXRDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBZ0MsSUFBSSxDQUFDLElBQUwsQ0FBVSxRQUExQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsS0FBdEMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixDQUE2QixPQUE3QixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsUUFBdEMsQ0FBNUIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixRQUE1QixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUF5QyxVQUF6QyxDQUFvRCxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFyRSxDQUVBLHlCQUF5QixDQUFDLE9BQTFCLENBQWtDLENBQ2xDLEdBQUcsQ0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUFOLENBQWdDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQU4sQ0FBbUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBbkMsQ0FBRCxDQUE2QyxDQUFDLElBQUksQ0FBQyxrQkFBTixDQUF5QixLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWhELENBQTdDLENBQzNDLENBQUMsSUFBSSxDQUFDLG1CQUFOLENBQTBCLEtBQUssQ0FBRSxJQUFqQyxDQUQyQyxDQUNKLENBQUMsSUFBSSxDQUFDLG9CQUFOLENBQTJCLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBeUMsSUFBMUUsQ0FESSxDQUF0QyxDQUFELENBRDZCLENBRXlGLFFBQVEsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBRjdHLENBRTRILGVBQWUsQ0FBQyxNQUFNLENBQUMsYUFGbkosQ0FBbEMsRUFJQSxVQUFVLENBQUMsVUFBWCxDQUFzQixZQUFZLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBdEIsQ0FBcUMsV0FBM0QsQ0FBdUUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQXlDLElBQWhILEVBR0QsQ0F2QnpCLENBdUIwQixTQUFTLEtBQVQsQ0FBZSxDQUNmLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNOLENBekJwQixFQTBCQSxDQTVCRCxJQTZCSyxJQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixHQUE5QixDQUNMLENBQ0MsR0FBSSxDQUFBLGFBQWEsQ0FBQyxDQUFsQixDQUNBLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsRUFBMkIsR0FBL0IsQ0FBb0MsYUFBYSxDQUFHLE1BQU0sQ0FBQyxjQUF2QixDQUFwQyxJQUNLLENBQUEsYUFBYSxDQUFHLE1BQU0sQ0FBQyxhQUF2QixDQUVMLG9CQUFvQixDQUFDLDRCQUFyQixDQUFrRCxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBbkUsQ0FBb0YsT0FBcEYsQ0FBNEYsT0FBNUYsQ0FBb0csT0FBcEcsQ0FBNEcsUUFBNUcsQ0FBcUgsSUFBckgsQ0FBMEgsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFwSSxDQUFtSixhQUFuSixDQUFpSyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFsTCxFQUE0TCxJQUE1TCxDQUFpTSxTQUFTLElBQVQsQ0FBZSxDQUl0TCxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBeUMsSUFBekMsQ0FBZ0QsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUExRCxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixHQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHNCQUFqQixDQUEwQyxJQUExQyxDQUVBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsSUFBdEMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUFnQyxJQUFJLENBQUMsSUFBTCxDQUFVLFFBQTFDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxLQUF0QyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLENBQTZCLE9BQTdCLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixRQUF0QyxDQUE1QixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTRCLFFBQTVCLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQXlDLFVBQXpDLENBQW9ELE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQXJFLENBRUEseUJBQXlCLENBQUMsT0FBMUIsQ0FBa0MsQ0FDbEMsR0FBRyxDQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBTixDQUFxQixLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5DLENBQUQsQ0FBNkMsQ0FBQyxJQUFJLENBQUMsa0JBQU4sQ0FBeUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFoRCxDQUE3QyxDQUNoQyxDQUFDLElBQUksQ0FBQyxtQkFBTixDQUEwQixLQUFLLENBQUUsSUFBakMsQ0FEZ0MsQ0FDTyxDQUFDLElBQUksQ0FBQyxvQkFBTixDQUEyQixLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQXlDLElBQTFFLENBRFAsQ0FBM0IsQ0FBRCxDQUQ2QixDQUV5RixRQUFRLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUY3RyxDQUU0SCxlQUFlLENBQUMsTUFBTSxDQUFDLGFBRm5KLENBQWxDLEVBSUEsVUFBVSxDQUFDLFVBQVgsQ0FBc0IsWUFBWSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXRCLENBQXFDLFdBQTNELENBQXVFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUF5QyxJQUFoSCxFQUdELENBdkJ6QixDQXVCMEIsU0FBUyxLQUFULENBQWUsQ0FDZixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDTixDQXpCcEIsRUEyQkEsQ0FDRCxDQWpGTCxDQW9GSCxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixDQUErQixVQUFVLENBQ2xDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHdCQUFqQixDQUEwQyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUEzRCxDQUFvRSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFyRixDQUFrRyxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFuSCxDQUErSCxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFoSixFQUNFLENBRlQsQ0FHRTtBQUNGO0FBQ0E7QUFDQyxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBc0MsU0FBVSxPQUFWLENBQW1CLENBQ3RELEdBQUksQ0FBQSxJQUFJLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixFQUFtQyxTQUF2QyxDQUFrRCxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsQ0FBb0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUE5QyxDQUVsRCxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixFQUFtQyxTQUFuQyxFQUFnRCxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsRUFBbUMsSUFBdkYsQ0FDQSxDQUNBLG9CQUFvQixDQUFDLGtCQUFyQixDQUF3QyxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBekQsQ0FBMEUsTUFBTSxDQUFDLE1BQWpGLENBQXdGLElBQXhGLEVBQThGLElBQTlGLENBQW1HLFNBQVMsSUFBVCxDQUFlLENBRXZHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUF5QyxVQUF6QyxDQUFzRCxJQUFJLENBQUMsSUFBM0QsQ0FFQSxHQUFJLE9BQUosQ0FBYSxNQUFNLENBQUMsU0FBUCxDQUFpQix3QkFBakIsQ0FBMEMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBM0QsQ0FBb0UsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBckYsQ0FBa0csQ0FBbEcsQ0FBb0csTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBckgsRUFFcEI7QUFFMEIsQ0FSOUIsQ0FRK0IsU0FBUyxLQUFULENBQWUsQ0FDZixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDTixDQVZ6QixFQVlDLENBQ0gsQ0FuQkQsQ0FxQkcsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQTJDLFVBQVksQ0FFaEQsTUFBTSxDQUFDLE1BQVAsQ0FBZ0IsRUFBaEIsQ0FDQSxHQUFJLENBQUEsSUFBSSxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDLENBRUQ7QUFDRDtBQUVBLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLEVBQW1DLElBQXZDLENBQTZDLENBQzNDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixDQUFvQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTlDLENBQ0QsQ0FDVjtBQUNRLG9CQUFvQixDQUFDLHVCQUFyQixDQUE2QyxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBOUQsQ0FBK0UsTUFBTSxDQUFDLE1BQXRGLENBQTZGLElBQTdGLENBQWtHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFNBQWpCLENBQTJCLElBQTdILEVBQW1JLElBQW5JLENBQXdJLFNBQVMsSUFBVCxDQUFlLENBQUM7QUFFL0gsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQXlDLElBQXpDLENBQWdELElBQUksQ0FBQyxJQUFyRCxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUF5QyxVQUF6QyxDQUFzRCxJQUFJLENBQUMsVUFBM0QsQ0FFRSxRQUFRLENBQUMsVUFBVSxDQUNqQixNQUFNLENBQUMsU0FBUCxDQUFpQixzQkFBakIsQ0FBMEMsSUFBMUMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsR0FDRCxDQUhPLENBQVIsQ0FNRCxDQVgxQixDQVcyQixTQUFTLEtBQVQsQ0FBZSxDQUNuQixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDRixDQWJyQixFQWNBLENBMUJKLENBNEJFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTRCLFNBQVMsSUFBVCxDQUFjLElBQWQsQ0FBbUIsS0FBbkIsQ0FBeUIsR0FBekIsQ0FDM0IsQ0FDQyxlQUFlLENBQUMsUUFBaEIsQ0FBeUIsSUFBekIsQ0FBOEIsSUFBOUIsQ0FBbUMsS0FBbkMsRUFDRyxHQUFJLEdBQUosQ0FBUyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixHQUE1QixDQUFnQyxNQUFoQyxFQUNaLENBSkYsQ0FNRyxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBc0MsVUFDeEMsQ0FDQyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBZCxDQUE4QixNQUFNLENBQUMsU0FBUCxDQUFpQixlQUFqQixHQUM5QixDQUhDLENBT1IsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsRUFBbUIsSUFBbkIsRUFBNEIsQ0FBQyxNQUFNLENBQUMsY0FBcEMsRUFBc0QsQ0FBQyxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBNUUsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGVBQWpCLEdBRUQsQ0FKRCxJQUlNLElBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLElBQW5CLEdBQTRCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLEVBQTZCLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBbkUsQ0FBSixDQUNOLENBQ0csTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBakIsR0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixHQUNDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGtCQUFqQixDQUFvQyxLQUFwQyxFQUVILENBTkssSUFNQSxJQUFHLENBQUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBckIsQ0FDTixDQUNHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGtCQUFqQixHQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGtCQUFqQixDQUFvQyxLQUFwQyxFQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLEdBRUYsQ0FJQSxNQUFNLENBQUMsU0FBUCxDQUFpQixhQUFqQixDQUFnQyxVQUFXLENBQ3ZDLEdBQUksQ0FBQSxLQUFLLENBQUcsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsT0FBakIsQ0FBeUIsU0FBekIsQ0FBbUMsSUFBbkMsRUFBWixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFzQixLQUF0QixDQUNBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLHdDQUE1QixDQUFxRSxNQUFyRSxFQUVGLENBTEYsQ0FPQSxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsQ0FBbUMsVUFBVyxDQUM3QyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixFQUFxQixJQUF6QixDQUNBLENBQ0csR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixPQUFqQixFQUEwQixTQUE5QixDQUNBLENBRUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsT0FBakIsQ0FBeUIsU0FBekIsQ0FBbUMsT0FBbkMsQ0FBMkMsTUFBM0MsQ0FBa0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE1RCxFQUVBLENBTEQsSUFNQSxDQUNDLFFBQVEsQ0FBQyxVQUFVLENBQ2YsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLEdBQ0gsQ0FGTyxDQUFSLENBR0EsQ0FDSCxDQUNGLENBZkEsQ0FpQkYsQ0FqbUJvQixDQUFqQixDQWltQkE7QUFFRixNQUFPLENBQ0csUUFBUSxDQUFFLEdBRGIsQ0FFRyxXQUFXLENBQUUsOENBRmhCLENBR0csVUFBVSxDQUFFLFVBSGYsQ0FJRyxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBSWpDLFVBQVUsQ0FBQyxVQUFYLENBQXNCLFNBQVMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUFsQixDQUFpQyxPQUF2RCxDQUErRCxJQUEvRCxFQUdELENBWEwsQ0FBUCxDQWdCRCxFQUNELGFBRU8sUUFBUyxDQUFBLHdCQUFULENBQW1DLGVBQW5DLENBQW9ELENBRXhELEdBQUksQ0FBQSxVQUFVLENBQUcsQ0FBQyxRQUFELENBQVcsV0FBWCxDQUF3QixRQUF4QixDQUFpQyxjQUFqQyxDQUFnRCxVQUFoRCxDQUEyRCxpQkFBM0QsQ0FBNkUsVUFBN0UsQ0FBd0YsY0FBeEYsQ0FBdUcsc0JBQXZHLENBQThILFlBQTlILENBQTJJLG1CQUEzSSxDQUErSixrQkFBL0osQ0FBa0wsaUJBQWxMLENBQW9NLDJCQUFwTSxDQUFnTyxhQUFoTyxDQUNDLFNBQVUsTUFBVixDQUFpQixTQUFqQixDQUEyQixNQUEzQixDQUFrQyxZQUFsQyxDQUErQyxRQUEvQyxDQUF3RCxlQUF4RCxDQUF3RSxRQUF4RSxDQUFpRixZQUFqRixDQUE4RixvQkFBOUYsQ0FBbUgsVUFBbkgsQ0FBOEgsaUJBQTlILENBQWdKLGdCQUFoSixDQUFpSyxlQUFqSyxDQUFpTCx5QkFBakwsQ0FBMk0sV0FBM00sQ0FBd04sQ0FFdk8sTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQXNCLEVBQXRCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUEyQyxLQUEzQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUErQixLQUEvQixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFrQyxXQUFXLENBQUMsZUFBOUMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXdDLElBQXhDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQWlDLENBQWpDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUF5QyxJQUF6QyxDQUVBLEdBQUksTUFBTSxDQUFDLEVBQVAsRUFBVyxTQUFmLENBQ0EsQ0FDSyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBMkIsR0FBM0IsQ0FDSixDQUhELElBSUEsQ0FDSyxNQUFNLENBQUMsRUFBUCxDQUFVLENBQUMsY0FBYyxDQUFHLEdBQWxCLENBQVYsQ0FDSixDQUVELE1BQU0sQ0FBQyxLQUFQLENBQWUsZUFBZixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFpQyxVQUFqQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFpQyxjQUFqQyxDQUdELEdBQUksTUFBTSxDQUFDLFNBQVAsRUFBb0IsU0FBeEIsQ0FBbUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsRUFBakIsQ0FFbEMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsS0FBNUIsQ0FFQSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFrQyxVQUFVLENBQ1gsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNkIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsS0FBNUIsQ0FBbUMsSUFBaEUsQ0FDaEMsQ0FGRCxDQUtBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUFnQyxDQUNoQyxFQUFFLENBQUUsR0FENEIsQ0FFaEMsSUFBSSxDQUFFLE1BRjBCLENBR2hDLE9BQU8sQ0FBRSxlQUFlLENBQUMsbUJBQWhCLEVBSHVCLENBQWhDLENBUUU7QUFDQSxNQUFNLENBQUMsTUFBUCxDQUFjLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUF4QyxDQUNBLEdBQUksTUFBTSxDQUFDLE1BQVAsRUFBZSxTQUFuQixDQUErQixNQUFNLENBQUMsTUFBUCxDQUFjLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixnQkFBeEMsQ0FDL0IsR0FBSSxNQUFNLENBQUMsTUFBUCxFQUFlLFNBQW5CLENBQThCLE1BQU0sQ0FBQyxNQUFQLENBQWMsQ0FBZCxDQUM5QixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsTUFBcEIsQ0FBMkIsTUFBTSxDQUFDLE1BQWxDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUE2QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXZDLENBQ0EsTUFBTSxDQUFDLGFBQVAsQ0FBd0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFlBQWxELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQTZCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixTQUF2RCxDQUNBLE1BQU0sQ0FBQyxXQUFQLENBQW1CLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixXQUE3QyxDQUNBLE1BQU0sQ0FBQyxjQUFQLENBQXdCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixnQkFBbEQsQ0FDQSxNQUFNLENBQUMsYUFBUCxDQUF1QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBakQsQ0FDQSxNQUFNLENBQUMsY0FBUCxDQUF3QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBbEQsQ0FFQSxHQUFLLE1BQU0sQ0FBQyxjQUFQLEVBQXVCLFNBQTVCLENBQXVDLE1BQU0sQ0FBQyxjQUFQLENBQXNCLEtBQXRCLENBRXZDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBcUMsQ0FBckMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxjQUFQLEVBQXVCLFNBQTNCLENBQ0QsQ0FDQyxNQUFNLENBQUMsY0FBUCxDQUF1QixDQUF2QixDQUVBLENBQ0QsR0FBSSxNQUFNLENBQUMsYUFBUCxFQUFzQixTQUExQixDQUNBLENBQ0MsTUFBTSxDQUFDLGFBQVAsQ0FBc0IsQ0FBdEIsQ0FFQSxDQUNBLEdBQUksTUFBTSxDQUFDLGFBQVAsRUFBc0IsU0FBMUIsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxhQUFQLENBQXNCLENBQXRCLENBQ0QsQ0FFSjtBQUNBLEdBQUksQ0FBQSxVQUFVLENBQUcsQ0FBQyxZQUFELENBQWpCLENBQ0EsR0FBSSxDQUFBLGdCQUFnQixDQUFHLENBQUMsR0FBRyxDQUFFLENBQUMsQ0FBQyxPQUFPLGNBQVIsQ0FBdUIsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQU4sQ0FBbUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBbkMsQ0FBRCxDQUE2QyxDQUFDLElBQUksQ0FBQyxrQkFBTixDQUF5QixLQUFLLENBQUMsRUFBL0IsQ0FBN0MsQ0FBL0IsQ0FBRCxDQUFOLENBQXlILE9BQU8sQ0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQU4sQ0FBb0IsTUFBTSxDQUFDLEtBQTNCLENBQUQsQ0FBbEksQ0FBc0ssSUFBSSxDQUFFLG9CQUE1SyxDQUFpTSxRQUFRLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFyTixDQUFvTyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsY0FBNVAsQ0FBMlEsZUFBZSxDQUFDLE1BQU0sQ0FBQyxhQUFsUyxDQUFnVCxNQUFNLENBQUcsTUFBTSxDQUFDLE9BQWhVLENBQXdVLGFBQWEsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQTVXLENBQThYLE1BQU0sQ0FBQyxVQUFyWSxDQUF2QixDQUNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFvQyx5QkFBeUIsQ0FBQyxjQUExQixDQUF5QyxnQkFBekMsQ0FBcEMsQ0FDQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsT0FBcEIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQWhELENBRUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLFNBQVMsaUJBQVQsQ0FBMkIsbUJBQTNCLENBQ3JDLENBRU0sR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLEVBQXVDLFNBQTNDLENBQ0EsQ0FDRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXdDLGlCQUF4QyxDQUNGLENBSEQsSUFJQSxDQUNHLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixFQUF1QyxDQUF2QyxFQUE0QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLEVBQXVDLGlCQUF2RixDQUNLLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBd0MsaUJBQXhDLENBREwsSUFHSSxDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBc0MsQ0FBdEMsQ0FDTixDQUNELEdBQUksbUJBQUosQ0FBeUIsTUFBTSxDQUFDLEtBQVAsQ0FBYSxrQkFBYixDQUFnQyxNQUFNLENBQUMsRUFBdkMsRUFFOUIsQ0FmQyxDQWlCQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsdUJBQXBCLENBQThDLFVBQVUsQ0FDbEQsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLElBQTlCLENBQ0EsQ0FDRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBMkIsQ0FBM0IsQ0FFRCxDQUNELG9CQUFvQixDQUFDLGVBQXJCLENBQXFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBL0MsQ0FBdUQsR0FBdkQsQ0FBMkQsSUFBM0QsRUFBaUUsSUFBakUsQ0FBc0UsU0FBUyxJQUFULENBQWUsQ0FFbkUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHdCQUFwQixDQUE4QyxJQUFJLENBQUMsSUFBTCxDQUFVLGtCQUF4RCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUE4QixPQUE5QixDQUFzQyxNQUF0QyxDQUE2QyxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQXZELENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLEVBQTBDLFNBQTlDLENBQ0MsQ0FDQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLElBQXpDLENBQThDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix3QkFBcEIsQ0FBNkMsSUFBM0YsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLFNBQXpDLENBQW1ELE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBN0QsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLGNBQXpDLENBQXdELE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBbEUsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLFdBQXpDLENBQXFELE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBL0QsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLGFBQXpDLENBQXVELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFrQyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQTVDLENBQXZELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUF5QyxlQUF6QyxDQUF5RCxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQW5FLENBQ0EsQ0FSRixJQVNJLENBQ0YsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUF5QyxDQUFDLE9BQU8sTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHdCQUFwQixDQUE2QyxJQUFyRCxDQUEwRCxZQUFZLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBaEYsQ0FBeUYsaUJBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBcEgsQ0FBcUksY0FBYyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQTdKLENBQTBLLGdCQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBcEIsQ0FBa0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUE1QyxDQUExTCxDQUFvUCxrQkFBa0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFoUixDQUF6QyxDQUVELENBQ0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBL0IsQ0FFQSxHQUFJLENBQUEsU0FBUyxDQUFHLFFBQVEsQ0FBQyxRQUFULEdBQW9CLEVBQXBCLENBQXVCLENBQXZCLENBQWhCLENBQ0EsZUFBZSxDQUFDLGFBQWhCLENBQThCLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBeEMsQ0FBbUQsU0FBbkQsQ0FBNkQsUUFBUSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQS9FLENBQThGLE9BQU8sTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQTNCLENBQXdDLFFBQXRJLENBQStJLElBQS9JLEVBR0E7QUFDQSx5QkFBeUIsQ0FBQyxPQUExQixDQUFrQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXBCLENBQW9DLEdBQUcsQ0FBRSxDQUFDLENBQUMsT0FBTyxjQUFSLENBQXVCLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5DLENBQUQsQ0FBNkMsQ0FBQyxJQUFJLENBQUMsa0JBQU4sQ0FBeUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBbkQsQ0FBN0MsQ0FBL0IsQ0FBRCxDQUF6QyxDQUFsQyxFQUVFLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBMkMsSUFBM0MsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBcEIsQ0FBK0IsSUFBL0IsQ0FHRCxDQTlCbkIsQ0E4Qm9CLFNBQVMsS0FBVCxDQUFlLENBQ2QsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBRUwsQ0FqQ2hCLEVBbUNQLENBMUNDLENBNENBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixlQUFwQixDQUFzQyxVQUFVLENBQzFDLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixJQUE5QixDQUNBLENBQ0ssTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLENBQXpCLENBRUosQ0FDRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsSUFBaEMsQ0FFRCxvQkFBb0IsQ0FBQyx1QkFBckIsQ0FBNkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF2RCxDQUErRCxNQUFNLENBQUMsTUFBdEUsQ0FBNkUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQWpHLENBQTBHLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBcEgsQ0FBbUksR0FBbkksQ0FBdUksSUFBdkksRUFBNkksSUFBN0ksQ0FBa0osU0FBUyxJQUFULENBQWUsQ0FFN0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHdCQUFwQixDQUE4QyxJQUFJLENBQUMsSUFBTCxDQUFVLGtCQUF4RCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUE4QixPQUE5QixDQUFzQyxNQUF0QyxDQUFnRCxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQTFELENBQ0QsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLEVBQTBDLFNBQTlDLENBQ0EsQ0FDQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLElBQXpDLENBQThDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix3QkFBcEIsQ0FBNkMsSUFBM0YsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLFNBQXpDLENBQW1ELE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBN0QsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLGNBQXpDLENBQXdELE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBbEUsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLFdBQXpDLENBQXFELE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBL0QsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLGFBQXpDLENBQXVELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFrQyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQTVDLENBQXZELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUF5QyxlQUF6QyxDQUF5RCxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQW5FLENBQ0EsQ0FSRCxJQVNHLENBQ0YsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUF5QyxDQUFDLE9BQU8sTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHdCQUFwQixDQUE2QyxJQUFyRCxDQUEwRCxZQUFZLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBaEYsQ0FBeUYsaUJBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBcEgsQ0FBcUksY0FBYyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQTdKLENBQTBLLGdCQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBcEIsQ0FBa0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUE1QyxDQUExTCxDQUFvUCxrQkFBa0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFoUixDQUF6QyxDQUVELENBRUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBL0IsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQTJDLElBQTNDLENBRUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQStCLElBQS9CLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLEtBQWhDLENBRUEsR0FBSSxDQUFBLFNBQVMsQ0FBRyxRQUFRLENBQUMsUUFBVCxHQUFvQixFQUFwQixDQUF1QixDQUF2QixFQUEwQixRQUExQixHQUFxQyxFQUFyQyxDQUF3QyxDQUF4QyxFQUEyQyxRQUEzQyxHQUFzRCxFQUF0RCxDQUF5RCxDQUF6RCxDQUFoQixDQUNBLGVBQWUsQ0FBQyxhQUFoQixDQUE4QixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQXhDLENBQW1ELFNBQVMsQ0FBQyxDQUFELENBQTVELENBQWdFLFFBQVEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFsRixDQUFpRyxPQUFPLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUEzQixDQUF3QyxTQUF6SSxDQUFtSixJQUFuSixFQUVELENBM0JuQixDQTJCb0IsU0FBUyxLQUFULENBQWUsQ0FDZCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDRixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsS0FBaEMsQ0FHSCxDQWhDaEIsRUFrQ1AsQ0EzQ0MsQ0E4Q0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHVCQUFwQixDQUE4QyxVQUFVLENBQ2xELEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixJQUExQixFQUFrQyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsU0FBaEUsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUEyQixDQUEzQixDQUVELENBRUQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsRUFBMkIsSUFBM0IsRUFBbUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFWLEVBQTJCLFNBQWxFLENBQ0EsQ0FDRSxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsQ0FBNEIsQ0FBNUIsQ0FFRCxDQUdELG9CQUFvQixDQUFDLCtCQUFyQixDQUFxRCxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQS9ELENBQXVFLE1BQU0sQ0FBQyxjQUE5RSxDQUE2RixNQUFNLENBQUMsYUFBcEcsQ0FBa0gsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUE1SCxDQUF5SSxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQW5KLENBQW1LLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBN0ssQ0FBNEwsTUFBTSxDQUFDLGFBQW5NLENBQWlOLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFyTyxDQUE4TyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBbFEsQ0FBNlEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFqUyxDQUFrVCxHQUFsVCxDQUFzVCxJQUF0VCxFQUE0VCxJQUE1VCxDQUFpVSxTQUFTLElBQVQsQ0FBZSxDQUU1VCxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTFCLEVBQTZDLElBQUksQ0FBQyxJQUFMLENBQVUsU0FBdkQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isd0JBQXBCLENBQThDLElBQUksQ0FBQyxJQUFMLENBQVUsa0JBQXhELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLE9BQTlCLENBQXNDLE1BQXRDLENBQTZDLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBdkQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLENBQXVDLElBQUksQ0FBQyxJQUFMLENBQVUsZ0JBQWpELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGVBQXBCLENBQW9DLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBeEQsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsRUFBMEMsU0FBOUMsQ0FDRCxDQUNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsSUFBekMsQ0FBOEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHdCQUFwQixDQUE2QyxJQUEzRixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsU0FBekMsQ0FBbUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUE3RCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsY0FBekMsQ0FBd0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFsRSxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsV0FBekMsQ0FBcUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUEvRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsYUFBekMsQ0FBdUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQXBCLENBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBNUMsQ0FBdkQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLGVBQXpDLENBQXlELE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBbkUsQ0FDQSxDQVJBLElBU0UsQ0FDRixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLENBQUMsT0FBTyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isd0JBQXBCLENBQTZDLElBQXJELENBQTBELFlBQVksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFoRixDQUF5RixpQkFBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFwSCxDQUFxSSxjQUFjLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBN0osQ0FBMEssZ0JBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFrQyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQTVDLENBQTFMLENBQW9QLGtCQUFrQixNQUFNLENBQUMsRUFBUCxDQUFVLGVBQWhSLENBQXpDLENBRUQsQ0FDRDtBQUVDO0FBQ0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQStCLElBQS9CLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLEtBQWhDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUEyQyxJQUEzQyxDQUVKO0FBRUUseUJBQXlCLENBQUMsT0FBMUIsQ0FBa0MsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFwQixDQUFvQyxHQUFHLENBQUUsQ0FBQyxDQUFDLE9BQU8sY0FBUixDQUF1QixRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBTixDQUFtQixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFuQyxDQUFELENBQTZDLENBQUMsSUFBSSxDQUFDLGtCQUFOLENBQXlCLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQW5ELENBQTdDLENBQS9CLENBQUQsQ0FBekMsQ0FBbEMsRUFFQSxHQUFJLENBQUEsU0FBUyxDQUFHLFFBQVEsQ0FBQyxRQUFULEdBQW9CLEVBQXBCLENBQXVCLENBQXZCLEVBQTBCLFFBQTFCLEdBQXFDLEVBQXJDLENBQXdDLENBQXhDLEVBQTJDLFFBQTNDLEdBQXNELEVBQXRELENBQXlELENBQXpELENBQWhCLENBQ0EsZUFBZSxDQUFDLGFBQWhCLENBQThCLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBeEMsQ0FBbUQsU0FBUyxDQUFDLENBQUQsQ0FBNUQsQ0FBZ0UsUUFBUSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQWxGLENBQWlHLE9BQU8sTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQTNCLENBQXdDLFNBQXpJLENBQW1KLElBQW5KLEVBR0YsQ0FuQ25CLENBbUNvQixTQUFTLEtBQVQsQ0FBZSxDQUNkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUVMLENBdENoQixFQXdDUCxDQXZEQyxDQTJEQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBK0IsU0FBUyxJQUFULENBQWMsSUFBZCxDQUFtQixLQUFuQixDQUF5QixHQUF6QixDQUMvQixDQUNDLGVBQWUsQ0FBQyxRQUFoQixDQUF5QixJQUF6QixDQUE4QixJQUE5QixDQUFtQyxLQUFuQyxFQUNHLEdBQUksR0FBSixDQUFTLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEdBQTVCLENBQWdDLE1BQWhDLEVBQ1osQ0FKRCxDQU1HLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBeUMsU0FBUyxFQUFULENBQWMsQ0FFcEQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLEVBQTBDLFNBQTlDLENBQXlELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsRUFBekMsQ0FDekQsR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsR0FBaEMsQ0FBb0MsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUFoRSxFQUFrRSxPQUFsRSxDQUEwRSxFQUExRSxDQUFWLENBRUEsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFXLENBQ1QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUF5QyxFQUF6QyxDQUE4QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsR0FBaEMsRUFBcUMsRUFBbkYsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLElBQXpDLENBQWdELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxHQUFoQyxFQUFxQyxJQUFyRixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixlQUFwQixDQUFzQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsR0FBaEMsQ0FBdEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLGNBQXpDLENBQTBELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsSUFBekMsQ0FBK0MsSUFBL0MsQ0FBb0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUF5QyxFQUE3RixDQUFpRyxHQUEzSixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixzQkFBcEIsQ0FBMkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUEvRCxDQUNDLENBQ1gsQ0FaSyxDQWVEO0FBQ0wsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWtDLFVBQVksQ0FFdkMsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsRUFBaUMsU0FBckMsQ0FBZ0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLEVBQWhDLENBRWhELEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxvQkFBb0IsQ0FBQyx3QkFBckIsQ0FBOEMsSUFBOUMsQ0FBbUQsY0FBbkQsRUFBbUUsSUFBbkUsQ0FDTixTQUFTLElBQVQsQ0FBZSxDQUVSLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFrQyxJQUFJLENBQUMsSUFBdkMsQ0FDVSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixFQUFtQixJQUF2QixDQUNBLENBQ0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUF1QyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQWpELEVBRUMsQ0FFWixDQVZELENBVUUsU0FBUyxLQUFULENBQWUsQ0FDRyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDcEIsQ0FaQSxFQWFOLENBbEJELENBb0JILEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLElBQW5CLEVBQTRCLENBQUMsTUFBTSxDQUFDLGNBQXBDLEVBQXNELENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUEvRSxDQUNBLENBQ0csTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHVCQUFwQixHQUNEO0FBQ0E7QUFFRCxDQU5ELElBTU0sSUFBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsRUFBbUIsSUFBdkIsQ0FDTixDQUNHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixlQUFwQixHQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixHQUNBO0FBRUYsQ0FHSSxDQTdTYSxDQUFqQixDQStTRCxNQUFPLENBQ0csUUFBUSxDQUFFLEdBRGIsQ0FFRyxXQUFXLENBQUUsb0RBRmhCLENBR0csVUFBVSxDQUFFLFVBSGYsQ0FJRyxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBSXJDO0FBRUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLG1CQUFuQixDQUF5QyxTQUFTLGdCQUFULENBQTBCLENBRWxFLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFzQixvQkFBb0IsQ0FBQyx5QkFBckIsQ0FBK0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFNBQW5CLENBQTZCLE9BQTdCLENBQXFDLE1BQXBGLENBQTJGLGdCQUEzRixDQUF0QixDQUNBLENBSEQsQ0FLRCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIseUJBQW5CLENBQStDLFVBQVcsQ0FBRTtBQUU1RCxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxFQUFxQixTQUF6QixDQUNDLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFFLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixNQUFwQyxDQUEyQyxDQUFDLEVBQTVDLENBQWdELENBQzVDLEdBQUksQ0FBQSxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLENBQXBCLEVBQXVCLFFBQTFDLENBQXFEO0FBQ3JELEdBQUksQ0FBQSxVQUFVLENBQUcsY0FBakIsQ0FBcUQ7QUFFckQsR0FBSSxjQUFjLEVBQUUsU0FBaEIsRUFBNkIsY0FBYyxFQUFFLElBQWpELENBQXdELENBQ3BELElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixDQUFwQixFQUF1QixHQUF2QixDQUEyQixNQUExQyxDQUFpRCxDQUFDLEVBQWxELENBQXNELENBQ2xELEdBQUssS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLENBQXBCLEVBQXVCLEdBQXZCLENBQTJCLENBQTNCLEVBQThCLElBQTlCLEVBQW9DLFVBQXJDLEVBQXFELEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixDQUFwQixFQUF1QixHQUF2QixDQUEyQixDQUEzQixFQUE4QixLQUE5QixFQUFxQyxJQUE5RixDQUFxRyxDQUFFO0FBQ2xHLEdBQUksQ0FBQSxVQUFVLENBQUcsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLENBQXBCLEVBQXVCLEdBQXZCLENBQTJCLENBQTNCLEVBQThCLElBQS9DLENBQ0E7QUFFQSxLQUFLLENBQUMsR0FBTixDQUFVLFFBQVEsY0FBUixDQUF1QixVQUFqQyxDQUE0QyxTQUFTLEtBQVQsQ0FBZ0IsSUFBaEIsQ0FBcUIsQ0FBRztBQUVsRTtBQUNDLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFwQixDQUEyQixDQUFDLEVBQTVCLENBQWdDLENBQzlCLEdBQUksSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLElBQVIsRUFBYyxrQkFBbEIsQ0FDQSxDQUNFLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixnQkFBbkIsQ0FBc0MsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLEtBQTlDLENBQXFEO0FBQ3JELEtBQUssQ0FBQyxnQkFBTixDQUF5QixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsZ0JBQTVDLENBQ0QsQ0FDRCxHQUFJLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxJQUFSLEVBQWMsWUFBbEIsQ0FBZ0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLG1CQUFuQixDQUF5QyxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsS0FBakQsQ0FBeUQ7QUFDMUYsQ0FFSDtBQUNBO0FBRU07QUFFTCxDQWpCRixFQWlCSTtBQUNSO0FBQ0o7QUFDSjtBQUVKO0FBQ0EsQ0FBQztBQUNQLENBckNJLENBcUNKO0FBRUcsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLGNBQVQsRUFBeUIsU0FBekIsRUFBc0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUFULEVBQXlCLElBQW5FLENBQXlFLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBVCxDQUF3QixDQUF4QixDQUV6RSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsUUFBbkIsQ0FBNEIsS0FBSyxDQUFDLGtCQUFOLENBQXlCLFNBQXJELENBQ0E7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FFWSxLQUFLLENBQUMsR0FBTixDQUFVLHlCQUFWLENBQW9DLFNBQVMsS0FBVCxDQUFnQixJQUFoQixDQUFxQixDQUV6RCxHQUFJLElBQUksRUFBRSxTQUFWLENBQW9CLENBQ2xCLElBQUksR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFWLENBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFuQixDQUEwQixDQUFDLEVBQTNCLENBQStCLENBQzdCLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUFULEVBQXlCLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxRQUFyQyxDQUErQyx5QkFBeUIsQ0FBQyxPQUExQixDQUFrQyxJQUFJLENBQUMsQ0FBRCxDQUF0QyxFQUNoRCxDQUNEO0FBQ0QsQ0FDQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsUUFBbkIsQ0FBNEIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFNBQW5CLENBQTZCLE9BQTdCLENBQXFDLE1BQWpFLENBQXdFLFVBQXhFLENBQW1GLElBQW5GLEVBQ0gsQ0FUQyxFQVdMLENBaEZFLENBQVAsQ0FtRkQsRUFDRCxhQUVPLFFBQVMsQ0FBQSxRQUFULEVBQXFCLENBQ3BCLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUViLFVBQVUsQ0FBRSxvQkFBVSxNQUFWLENBQWlCLFVBQWpCLENBQTRCLG9CQUE1QixDQUFpRCxZQUFqRCxDQUE4RCxnQkFBOUQsQ0FBK0UsZUFBL0UsQ0FBK0YsY0FBL0YsQ0FBOEcsUUFBOUcsQ0FBdUgsUUFBdkgsQ0FBaUksMEVBRTlILE1BQU0sQ0FBQyxLQUFQLENBQWUsZUFBZixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUF1QixFQUF2QixDQUNBLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLEVBQVgsQ0FBTixDQUF3QixDQUFDLEtBQU0sTUFBTSxDQUFDLEVBQWQsQ0FBeEIsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxRQUFQLEVBQWlCLFNBQXJCLENBQWlDLE1BQU0sQ0FBQyxRQUFQLENBQWtCLENBQUMsRUFBRCxDQUFsQixDQUM3QyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixFQUFxQixTQUF6QixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsRUFBcEIsQ0FFekIsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsRUFBc0IsU0FBMUIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXVCLEVBQXZCLENBRXJDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFvQixVQUFXLENBQzlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFxQixVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUwsQ0FBUyxHQUFULENBQWEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFlBQWxDLENBQUQsQ0FBVixDQUE0RCxPQUE1RCxDQUFvRSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsWUFBekYsQ0FBckIsQ0FDQSxDQUZELENBSUQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsRUFBcUIsSUFBckIsRUFBNkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLEVBQXFCLFNBQXRELENBQWlFLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixHQUkxRSxNQUFNLENBQUMsT0FBUCxDQUFlLE1BQWYsQ0FFUyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBdUIsVUFDdkIsQ0FDSSxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBeUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUFQLENBQXpCLENBQ0gsQ0FIRCxDQU9BLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixNQUFwQixDQUEyQixDQUNyQyxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sTUFBTSxDQUFDLElBQWIsQ0FBa0IsU0FBUyxDQUFDLEtBQTVCLENBQWtDLElBQUksQ0FBQyxjQUF2QyxDQUFzRCxJQUFJLENBQUMscUJBQTNELENBRHFDLENBRXJDLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxNQUFNLENBQUMsU0FBYixDQUF1QixTQUFTLENBQUMsU0FBakMsQ0FBMkMsSUFBSSxDQUFDLFNBQWhELENBQTBELElBQUksQ0FBQyxjQUEvRCxDQUZxQyxDQUdyQyxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sTUFBTSxDQUFDLElBQWIsQ0FBa0IsU0FBUyxDQUFDLEtBQTVCLENBQWtDLElBQUksQ0FBQyxZQUF2QyxDQUFvRCxJQUFJLENBQUMsb0JBQXpELENBSHFDLENBSXJDLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxNQUFNLENBQUMsSUFBYixDQUFrQixTQUFTLENBQUMsSUFBNUIsQ0FBaUMsSUFBSSxDQUFDLFFBQXRDLENBQStDLElBQUksQ0FBQyxZQUFwRCxDQUpxQyxDQUEzQixDQU9BLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFxQyxTQUFTLFVBQVQsQ0FDckMsQ0FDSSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUFYLENBQU4sQ0FBcUIsSUFBckIsRUFBMkIsU0FBM0IsQ0FBcUMsTUFBckMsQ0FBNEMsTUFBNUQsQ0FBbUUsQ0FBQyxFQUFwRSxDQUNBLENBQ0ksR0FBSSxDQUFBLEdBQUcsQ0FBRyxVQUFVLENBQUMsR0FBWCxDQUFlLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBM0MsRUFBNkMsT0FBN0MsQ0FBc0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBWCxDQUFOLENBQXFCLElBQXJCLEVBQTJCLFNBQTNCLENBQXFDLE1BQXJDLENBQTRDLENBQTVDLEVBQStDLFNBQXJHLENBQVYsQ0FDQSxHQUFJLEdBQUcsRUFBRSxDQUFULENBQWEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBWCxDQUFOLENBQXFCLElBQXJCLEVBQTJCLFNBQTNCLENBQXFDLE1BQXJDLENBQTRDLENBQTVDLEVBQStDLElBQS9DLENBQXNELFVBQVUsQ0FBQyxHQUFELENBQVYsQ0FBZ0IsSUFBdEUsQ0FDaEIsQ0FHRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixHQUFtQixTQUFuQixFQUFnQyxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsR0FBbUIsSUFBdkQsQ0FBK0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixNQUFwQixDQUEyQixDQUEzQixDQUFqQixDQUErQztBQUM5RyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBZCxDQUF1QixNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsS0FBakIsQ0FBdUIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUF2QixDQUV2QixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUFYLENBQU4sQ0FBcUIsSUFBckIsRUFBMkIsU0FBM0IsQ0FBcUMsV0FBckMsQ0FBaUQsSUFBakQsQ0FDSCxDQWJELENBZUEsR0FBSSxNQUFNLENBQUMsaUJBQVAsRUFBNEIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQTFELENBQ0EsQ0FDSSxHQUFJLENBQUEsTUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0EsWUFBWSxDQUFDLGNBQWIsQ0FBNEIsZ0JBQTVCLENBQTZDLE1BQTdDLEVBQW1ELElBQW5ELENBQXdELFNBQVUsSUFBVixDQUFnQixDQUM1RDtBQUNBO0FBQ0EsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBWCxDQUFOLENBQXFCLElBQXJCLEVBQTJCLFNBQTNCLENBQXFDLGNBQXJDLENBQW9ELElBQUksQ0FBQyxJQUF6RCxFQUNYLENBSkQsRUFLSCxDQUVELEdBQUksQ0FBQSxTQUFTLENBQUcsSUFBaEIsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxRQUFQLEVBQWlCLFNBQXJCLENBQ0EsQ0FDUSxHQUFJLENBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBckIsQ0FBNkIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBQyxFQUFELENBQWhCLENBQzdCLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLENBQVYsQ0FFUCxDQUxELElBS00sQ0FBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFDLEVBQUQsQ0FBaEIsQ0FFTixHQUFJLENBQUEsY0FBYyxDQUFFLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBMUIsQ0FBd0MsdUJBQXhDLENBQWdFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBaEcsQ0FBK0csU0FBL0csQ0FBcEIsQ0FDQSxHQUFJLENBQUEsa0JBQWtCLENBQUcsY0FBYyxDQUFDLE9BQWYsQ0FBdUIsSUFBaEQsQ0FHQSxHQUFJLENBQUEsYUFBYSxDQUFHLFFBQWhCLENBQUEsYUFBZ0IsQ0FBUyxJQUFULENBQ3BCLENBQ0ksY0FBYyxDQUFDLE9BQWYsQ0FBdUIsZUFBdkIsQ0FBeUMsSUFBekMsQ0FDQSxjQUFjLENBQUMsT0FBZixDQUF1QixlQUF2QixDQUF1QyxjQUF2QyxFQUNILENBSkQsQ0FNQSxHQUFJLENBQUEsb0JBQW9CLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLGNBQXJCLENBQW9DLGNBQXBDLENBQW1ELGFBQW5ELENBQTNCLENBRUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsVUFDdEIsQ0FFUSxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIsY0FBekIsQ0FBd0MsY0FBeEMsQ0FBd0QsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUF4RCxFQUNBO0FBQ1AsQ0FMRCxDQVNBLEdBQUksQ0FBQSxXQUFXLENBQUcsUUFBZCxDQUFBLFdBQWMsQ0FBUyxJQUFULENBQWUsQ0FDekIsR0FBSSxJQUFJLEVBQUUsU0FBVixDQUFxQixNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQTBDLElBQTFDLENBQzVCLENBRkQsQ0FJQSxHQUFJLGNBQUEsTUFBTSxDQUFDLEVBQVAseUVBQVcsVUFBWCxzRUFBdUIsZ0JBQXZCLEdBQXlDLFNBQXpDLEVBQXNELGVBQUEsTUFBTSxDQUFDLEVBQVAsMkVBQVcsVUFBWCxzRUFBdUIsZ0JBQXZCLEdBQXlDLElBQW5HLENBQ0EsQ0FDSSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixnQkFBckIsRUFBdUMsRUFBM0MsQ0FDQSxDQUNJLEdBQUksQ0FBQSxlQUFlLENBQUcsUUFBUSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXhDLENBQ0EsR0FBSSxDQUFBLGlCQUFpQixDQUFHLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUExQixDQUF3QyxHQUF4QyxDQUE0QyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsa0JBQWpFLENBQW9GLGdCQUFwRixDQUFxRyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsZ0JBQWxKLENBQ0EsR0FBSSxDQUFBLFFBQVEsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsaUJBQXJCLENBQXVDLGVBQXZDLENBQXVELGNBQXZELENBQXNFLFdBQXRFLENBQWYsQ0FDQSxHQUFJLENBQUEsS0FBSyxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsUUFBWCxDQUFvQixpQkFBcEIsQ0FBWixDQUNBLEdBQUksS0FBSyxDQUFDLE1BQU4sRUFBYyxJQUFsQixDQUF3QixNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQTBDLEtBQUssQ0FBQyxLQUFoRCxDQUMzQixDQUNKLENBT0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQW1DLFVBQ25DLENBSUUsR0FBSSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUF6QixDQUNBLDZCQUVFLEdBQU0sQ0FBQSxNQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBbUMsS0FBbkMsQ0FDQSxHQUFJLENBQUEsWUFBWSxDQUFHLENBQW5CLENBQ0EsNEJBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFlBQXpCLDRDQUFJLHdCQUFtQyxFQUF2QyxDQUEyQyxZQUFZLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFlBQXJCLENBQWtDLEVBQWpELENBQzNDLG9CQUFvQixDQUFDLDhCQUFyQixDQUFvRCxNQUFwRCxDQUF5RCxTQUF6RCxDQUFtRSxFQUFuRSxDQUFzRSxZQUF0RSxFQUFvRixJQUFwRixDQUNJLFNBQVMsSUFBVCxDQUFlLENBRVgsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWtDLElBQUksQ0FBQyxJQUF2QyxDQUVBLEdBQUksQ0FBQyxLQUFLLENBQUMsT0FBTixDQUFjLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFsQyxDQUFMLENBQXVELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxFQUFoQyxDQUd2RDtBQUVBO0FBR0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLElBQW5DLENBRUgsQ0FmTCxDQWVNLFNBQVMsS0FBVCxDQUFlLENBQ2IsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ1AsQ0FqQkQsRUFtQkQsQ0FHRixDQWxDRCxDQW9DQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixVQUF6QixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsR0FFckMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQW1DLFNBQVMsV0FBVCxDQUNuQyxDQUVFLEdBQUksQ0FBQSxjQUFjLENBQUcsRUFBckIsQ0FFQSxHQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQWhCLEVBQTBCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsR0FBeUMsU0FBdkUsQ0FDQSxDQUNFLEdBQUksQ0FBQSxZQUFZLENBQUcsQ0FBbkIsQ0FFQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixDQUF4QixDQUEyQixZQUFZLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUF6QixDQUUzQjtBQUVBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLEVBQWtCLHdCQUF0QixDQUFnRCxjQUFjLENBQUcsV0FBSCxTQUFHLFdBQUgsaUJBQUcsV0FBVyxDQUFFLGNBQWIsQ0FBNEIsU0FBUyxDQUFDLFFBQXRDLENBQStDLENBQUMscUJBQXFCLENBQUMsWUFBdkIsQ0FBb0MscUJBQXFCLENBQUMsWUFBMUQsQ0FBL0MsQ0FBakIsQ0FBaEQsSUFDSyxDQUFBLGNBQWMsQ0FBQyxXQUFELFNBQUMsV0FBRCxpQkFBQyxXQUFXLENBQUUsUUFBYixFQUFmLENBRU4sQ0FFRCxNQUFPLENBQUEsY0FBUCxDQUNELENBbkJELENBdUJDLE1BQU0sQ0FBQyxFQUFQLENBQVUsc0JBQVYsQ0FBbUMsU0FBUyxLQUFULENBQ3BDLENBQ0UsR0FBSSxDQUFBLGNBQUosQ0FDQSxHQUFJLENBQUEsSUFBSixDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLHVCQUF6QixDQUNBLENBQ00sR0FBSSxLQUFLLEVBQUUsU0FBWCxDQUNBLENBR1EsR0FBSSxNQUFNLENBQUMsUUFBWCxDQUNBLENBQ0UsSUFBSSxDQUFHLEdBQUksQ0FBQSxJQUFKLENBQVMsTUFBTSxDQUFDLFFBQWhCLENBQVAsQ0FDRCxDQUhELElBR00sSUFBSSxNQUFNLENBQUMsSUFBWCxDQUNOLENBQ0UsSUFBSSxDQUFHLEdBQUksQ0FBQSxJQUFKLENBQVMsTUFBTSxDQUFDLElBQWhCLENBQVAsQ0FDQztBQUNGLENBSkssSUFNRCxJQUFJLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLFVBQW5DLENBQ0wsQ0FDRyxJQUFJLENBQUcsR0FBSSxDQUFBLElBQUosQ0FBUyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixVQUF4QyxDQUFQLENBQ0YsQ0FISSxJQUlMLENBQ0csT0FBTyxDQUFDLEdBQVIsQ0FBWSw2QkFBWixFQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUF3Qiw2QkFBeEIsQ0FDQSxNQUFPLENBQUEsS0FBUCxDQUNGLENBQ0QsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsU0FBckIsRUFBZ0MsU0FBcEMsQ0FBK0MsS0FBSyxDQUFHLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixlQUF4QyxFQUF5RCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsU0FBOUUsQ0FBUixDQUUvQyxjQUFjLENBQUcsSUFBSSxDQUFDLEtBQUwsQ0FBVyxPQUFYLENBQW1CLEtBQUssQ0FBQyxjQUFOLENBQXFCLFVBQXJCLENBQWlDLENBQUMsV0FBVyxDQUFDLEtBQWIsQ0FBakMsQ0FBbkIsQ0FBMEUsT0FBMUUsRUFBbUYsY0FBbkYsQ0FBa0csU0FBbEcsQ0FBNEcsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsWUFBNUMsQ0FBeUQscUJBQXFCLENBQUMsRUFBL0UsQ0FBNUcsQ0FBakIsQ0FHUCxDQTNCRCxJQTJCTyxDQUFBLGNBQWMsQ0FBRyxLQUFqQixDQUNaLENBOUJELElBOEJNLENBQUEsY0FBYyxDQUFDLEtBQWYsQ0FDTixHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixhQUF6QixDQUF3QyxjQUFjLENBQUcsY0FBYyxDQUFDLEtBQWhDLENBQ3hDLE1BQU8sQ0FBQSxjQUFQLENBQ0QsQ0FyQ0EsQ0F1Q0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLEdBQ0EsR0FBSSxDQUFBLFFBQUosQ0FDQSxHQUFJLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUE5QixDQUFnRCxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsb0NBQW5CLENBQVgsQ0FBaEQsSUFDSyxDQUFBLFFBQVEsQ0FBRyxjQUFjLENBQUMsR0FBZixDQUFtQix1Q0FBbkIsQ0FBWCxDQUNMLFFBQVEsQ0FBQyxNQUFULENBQWdCLFFBQVEsQ0FBQyxRQUFELENBQVIsQ0FBbUIsTUFBbkIsQ0FBaEIsRUFHQyxHQUFJLGNBQWMsQ0FBQyxPQUFmLENBQXVCLGlCQUF2QixFQUEwQyxDQUE5QyxDQUNELENBRVEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixFQUEwQyxjQUFjLENBQUMsT0FBZixDQUF1QixRQUFqRSxDQUVQLENBRUQsR0FBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEdBQXlDLFNBQTdDLENBQXdELE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBWCxDQUF5QixrQkFBekIsQ0FBNEMsY0FBNUMsQ0FBNEQsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUE1RCxFQUszRCxDQXRPRSxDQXdPSCxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLDRCQUU1QyxLQUFLLENBQUMsTUFBTixDQUFhLElBQWIsQ0FFWSxLQUFLLENBQUMsa0JBQU4sQ0FBMkIsVUFBVyxDQUM3QixHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBYixDQUFxQixLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsQ0FBZ0IsS0FBaEIsQ0FBc0IsS0FBSyxDQUFDLFFBQU4sQ0FBZSxDQUFmLEVBQWtCLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBM0IsQ0FBdEIsQ0FDN0IsQ0FGRCxDQU9BLEtBQUssQ0FBQyxjQUFOLENBQXVCLFNBQVMsS0FBVCxDQUFnQixDQUNsQyxLQUFLLENBQUMsS0FBTixDQUFZLGtCQUFaLENBQStCLEtBQUssQ0FBQyxFQUFyQyxDQUF5QyxLQUFLLENBQUMsVUFBL0MsRUFBMkQ7QUFDL0QsQ0FGRCxDQUlBLEtBQUssQ0FBQyxlQUFOLENBQXdCLFNBQVMsS0FBVCxDQUFnQixDQUNoRCxLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsQ0FBZ0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLE1BQW5CLENBQTBCLEtBQTFCLENBQWhCLENBQ1ksR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsRUFBbUIsS0FBSyxDQUFDLFFBQU4sRUFBZ0IsU0FBbkMsRUFBZ0QsS0FBSyxDQUFDLFFBQU4sQ0FBZSxNQUFuRSxDQUEyRSxDQUNuRSxLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsQ0FBZ0IsS0FBaEIsQ0FBc0IsS0FBSyxDQUFDLFFBQU4sQ0FBZSxDQUFmLEVBQWtCLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBM0IsQ0FBdEIsQ0FDUCxDQUNELEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFULENBQWdCLEtBQWhCLEVBQXVCLFNBQTNCLENBQXNDLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBVCxDQUFnQixLQUFoQixDQUF3QixFQUF4QixDQUN6QyxDQU5ELENBUUEsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLGlCQUFULEVBQThCLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxRQUE1QyxDQUFzRCxLQUFLLENBQUMsUUFBTixDQUFlLENBQWYsRUFBa0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUEzQiwwQkFBd0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxZQUFqRCxpREFBd0MsdUJBQXVCLEtBQS9ELENBRXpELENBalFFLENBQVAsQ0FvUVAsRUFDRCxhQUVPLFFBQVMsQ0FBQSxnQkFBVCxFQUE2QixDQUU1QixNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFRixXQUFXLENBQUUsNENBRlgsQ0FHRCxVQUFVLENBQUUsb0JBQVMsTUFBVCxDQUFnQixlQUFoQixDQUFnQyxDQUUzQyxNQUFNLENBQUMsb0JBQVAsQ0FBOEIsVUFBVSxDQUNyQyxHQUFJLENBQUEsS0FBSyxDQUFDLENBQVYsQ0FDQSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUEvQixDQUFzQyxDQUFDLEVBQXZDLENBQTJDLENBRXhDLEtBQUssQ0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsT0FBbkIsQ0FBMkIsTUFBekMsQ0FFRixDQUVELEtBQUssR0FDTCxNQUFPLENBQUEsS0FBUCxDQUVDLENBWEosQ0FhRCxNQUFNLENBQUMsT0FBUCxDQUFpQixDQUNmLENBQUMsR0FBRyxDQUFDLENBQUwsQ0FBTyxJQUFJLENBQUMsQ0FBWixDQUFjLEtBQUssQ0FBQyxZQUFwQixDQUFpQyxNQUFNLENBQUMsSUFBeEMsQ0FBNkMsWUFBWSxDQUFDLEVBQTFELENBRGUsQ0FFZixDQUFDLEdBQUcsQ0FBQyxDQUFMLENBQU8sSUFBSSxDQUFDLENBQVosQ0FBYyxLQUFLLENBQUMsbUJBQXBCLENBQXdDLE1BQU0sQ0FBQyxJQUEvQyxDQUFvRCxZQUFZLENBQUMsRUFBakUsQ0FGZSxDQUFqQixDQU9JLE1BQU0sQ0FBQyxhQUFQLENBQXVCLFVBQVUsQ0FFYixVQUFVLENBQUMsVUFBVSxDQUNuQjtBQUNDLEdBQUksQ0FBQSxTQUFTLENBQUcsUUFBUSxDQUFDLHNCQUFULENBQWdDLHdCQUFoQyxDQUFoQixDQUNEO0FBRUMsZUFBZSxDQUFDLFNBQUQsQ0FDYixDQUNEO0FBQ0MsSUFBSSxDQUFFLElBRk4sQ0FHQSxPQUFPLENBQUUsQ0FDVDtBQURTLENBSFQsQ0FNQSxhQUFhLENBQUUsSUFOZixDQU9BLGVBQWUsQ0FBRSxNQUFNLENBQUMsT0FQeEIsQ0FRQTtBQUNGO0FBRUcsS0FBSyxDQUFFLGVBQVUsRUFBVixDQUFjLFNBQWQsQ0FBeUIsTUFBekIsQ0FBaUMsQ0FDckMsTUFBTyxDQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTBCLHFCQUExQixDQUFQLENBQ0QsQ0FiSCxDQURhLENBQWYsQ0FrQkUsQ0F2QkssQ0FBVixDQTBCVCxDQTVCWCxDQThCRCxNQUFNLENBQUMsYUFBUCxHQUNBLENBeERGLENBeURGLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FJbkM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBSVMsQ0ExRU0sQ0FBUCxDQTRFUCxFQUNELGFBRU8sUUFBUyxDQUFBLGdCQUFULEVBQTZCLENBRWhDLE1BQU8sQ0FDSyxRQUFRLENBQUUsR0FEZixDQUVLLFdBQVcsQ0FBRSw0Q0FGbEIsQ0FHSyxLQUFLLENBQUMsQ0FDRSxJQUFJLENBQUUsR0FEUixDQUVFLFNBQVMsQ0FBRSxHQUZiLENBR0UsRUFBRSxDQUFFLEdBSE4sQ0FIWCxDQVFLLFVBQVUsQ0FBRSxvQkFBUyxNQUFULENBQWdCLHFCQUFoQixDQUFzQyxZQUF0QyxDQUFtRCxnQkFBbkQsQ0FBb0UsZUFBcEUsQ0FBb0YsVUFBcEYsQ0FBK0YsUUFBL0YsQ0FBd0csY0FBeEcsQ0FBdUgsZUFBdkgsQ0FBdUksQ0FFM0ksTUFBTSxDQUFDLFVBQVAsQ0FBb0IsQ0FBQyxXQUFXLENBQUMseUJBQWIsQ0FBdUMsS0FBSyxDQUFDLFVBQTdDLENBQXdELElBQUksQ0FBQyxVQUE3RCxDQUF3RSxZQUFZLENBQUMsTUFBTSxDQUFDLElBQVAsQ0FBWSxpQkFBakcsQ0FDcEIsV0FBVyxDQUFDLElBRFEsQ0FDSCxTQUFTLENBQUMsSUFEUCxDQUNZLFlBQVksQ0FBQyxXQUR6QixDQUFwQixDQUVBLE1BQU0sQ0FBQyxvQkFBUCxDQUE2QixFQUE3QixDQUNBLE1BQU0sQ0FBQyxHQUFQLENBQVcscUJBQVgsQ0FDQSxNQUFNLENBQUMsa0JBQVAsQ0FBNEIsS0FBNUIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUEwQixFQUExQixDQUNBLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FFQSxNQUFNLENBQUMsS0FBUCxDQUFhLGVBQWIsQ0FFQyxNQUFNLENBQUMsWUFBUCxDQUFzQixVQUN0QixDQUNLLEdBQUksQ0FBQSxvQkFBb0IsQ0FBRyxxQkFBM0IsQ0FFQSxHQUFJLENBQUEsR0FBRyxDQUFHLGNBQWMsQ0FBQyxJQUFmLENBQW9CLFVBQXBCLENBQWdDLGNBQWhDLENBQVYsQ0FDQSxHQUFJLENBQUMsR0FBTCxDQUNBLENBQ0csTUFBTSxDQUFDLEtBQVAsQ0FBYSxZQUFiLENBQTBCLGNBQTFCLENBQXlDLGlCQUF6QyxDQUEyRCxvQkFBM0QsRUFDRixDQUhELElBS0EsQ0FDSyxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsY0FBNUIsRUFDQSxNQUFNLENBQUMsS0FBUCxDQUFhLFlBQWIsQ0FBMEIsY0FBMUIsQ0FBeUMsaUJBQXpDLENBQTJELG9CQUEzRCxFQUVILENBQ04sQ0FmRCxDQWtCRCxlQUFlLENBQUMsa0JBQWhCLENBQW1DLElBQW5DLEVBQXlDLElBQXpDLENBQThDLFNBQVMsSUFBVCxDQUFlLENBRWpELE1BQU0sQ0FBQyxZQUFQLENBQXNCLElBQUksQ0FBQyxJQUEzQixDQUNBLEdBQUksTUFBTSxDQUFDLElBQVAsQ0FBWSxpQkFBWixFQUErQixJQUFuQyxDQUNBLENBRUssR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsWUFBUCxDQUFvQixHQUFwQixDQUF3QixTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsRUFBVCxDQUFjLENBQXBELEVBQXNELE9BQXRELENBQThELE1BQU0sQ0FBQyxJQUFQLENBQVksaUJBQTFFLENBQVYsQ0FDQSxHQUFJLEdBQUcsQ0FBQyxDQUFDLENBQVQsQ0FBWSxDQUNWLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFlBQWxCLENBQWlDLE1BQU0sQ0FBQyxZQUFQLENBQW9CLEdBQXBCLENBQWpDLENBQ0EsTUFBTSxDQUFDLGlCQUFQLENBQXlCLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFlBQWxCLENBQStCLEVBQXhELENBR0QsQ0FDRCxNQUFNLENBQUMsV0FBUCxHQUdKLENBRUwsQ0FsQlIsQ0FrQlMsU0FBUyxLQUFULENBQWUsQ0FFYixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDSCxDQXJCUixFQXlCUCxNQUFNLENBQUMsa0JBQVAsQ0FBMkIsU0FBUyxPQUFULENBQWlCLEtBQWpCLENBQXVCLG9CQUF2QixDQUE0QyxDQUN2RDtBQUNBLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixvQkFBNUIsQ0FDQSxNQUFNLENBQUMsY0FBUCxDQUF3QixPQUF4QixDQUNBLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixLQUE1QixDQUNBLE1BQU0sQ0FBQyx3QkFBUCxDQUFrQyxLQUFsQyxDQUNBLE1BQU0sQ0FBQyxZQUFQLEdBQ2YsQ0FQRCxDQVNBLE1BQU0sQ0FBQyxhQUFQLENBQXNCLFNBQVMsT0FBVCxDQUFpQixDQUN2QixNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFnQyxPQUFoQyxDQUF3QyxPQUF4QyxDQUVmLENBSEQsQ0FNQSxNQUFNLENBQUMsZUFBUCxDQUF5QixTQUFTLElBQVQsQ0FBYyxLQUFkLENBQW9CLENBQy9CLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFlBQWxCLENBQWlDLElBQWpDLENBQ0EsTUFBTSxDQUFDLGlCQUFQLENBQXlCLElBQUksQ0FBQyxFQUE5QixDQUNDLENBSGYsQ0FJTyxNQUFNLENBQUMsWUFBUCxDQUFzQixTQUFTLEtBQVQsQ0FBZSxDQUNoQztBQUNDLE1BQU0sQ0FBQyxjQUFQLENBQXNCLE9BQXRCLENBQThCLE1BQTlCLENBQXFDLEtBQXJDLENBQTJDLENBQTNDLEVBQ0wsQ0FIRCxDQUtBLE1BQU0sQ0FBQyxhQUFQLENBQXVCLFNBQVMsS0FBVCxDQUFlLENBQ2pDO0FBQ0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIsTUFBMUIsQ0FBaUMsS0FBakMsQ0FBdUMsQ0FBdkMsRUFDTCxDQUhELENBT0UsTUFBTSxDQUFDLGlCQUFQLENBQTJCLFNBQVMsS0FBVCxDQUFnQixDQUN4QztBQUNDO0FBQ0EsR0FBSSxNQUFNLENBQUMsb0JBQVAsRUFBNkIsS0FBakMsQ0FBeUMsTUFBTyxLQUFQLENBQ3pDLE1BQU8sTUFBUCxDQUVILENBTkQsQ0FTVCxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsQ0FBb0MsU0FBVSxLQUFWLENBQWdCLFVBQWhCLENBQTRCLENBQzdEO0FBRUQsVUFBVSxDQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUCxDQUFpQixtQkFBbEIsQ0FBdkIsQ0FFQSxHQUFJLFVBQVUsQ0FBQyxLQUFELENBQVYsRUFBcUIsSUFBekIsQ0FBK0IsQ0FDM0IsSUFBSyxHQUFJLENBQUEsR0FBVCxHQUFnQixDQUFBLFVBQWhCLENBQTRCLENBQ3ZCLFVBQVUsQ0FBQyxHQUFELENBQVYsQ0FBZ0IsS0FBaEIsQ0FDSixDQUVELFVBQVUsQ0FBQyxLQUFELENBQVYsQ0FBb0IsSUFBcEIsQ0FFQSxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBakIsQ0FBd0MsS0FBeEMsQ0FDSCxDQVJELElBU0ssQ0FBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBakIsQ0FBd0MsSUFBeEMsQ0FDTixDQWZELENBbUJDLE1BQU0sQ0FBQyxjQUFQLENBQXdCLFNBQVMsT0FBVCxDQUFpQixDQUVsQyxHQUFJLE9BQU8sRUFBRSxTQUFULEVBQXNCLE9BQU8sRUFBRSxJQUFuQyxDQUF5QyxDQUN2QyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUEwQixJQUExQixDQUErQixPQUEvQixFQUNELENBRkQsSUFFTSxDQUNIO0FBQ0ssTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIsSUFBMUIsQ0FBK0IsQ0FBQyxHQUFHLENBQUMsSUFBTCxDQUFVLEtBQUssQ0FBQyxJQUFoQixDQUFxQixXQUFXLENBQUMsSUFBakMsQ0FBc0MsSUFBSSxDQUFDLElBQTNDLENBQWdELE9BQU8sQ0FBQyxlQUF4RCxDQUF3RSxRQUFRLENBQUMsSUFBakYsQ0FBc0YsT0FBTyxDQUFDLEVBQTlGLENBQS9CLEVBQ0EsTUFBTSxDQUFDLG9CQUFQLENBQTZCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTBCLE1BQTFCLENBQWlDLENBQTlELENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIsTUFBTSxDQUFDLG9CQUFqQyxDQUF0QixDQUNBLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixNQUFNLENBQUMsb0JBQW5DLEVBQXlELElBQXpELENBQ0w7QUFDRCxFQUVDO0FBQ08sTUFBTSxDQUFDLGtCQUFQLENBQTJCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTBCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTBCLE1BQTFCLENBQWlDLENBQTNELENBQTNCLENBQTBGLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTBCLE1BQTFCLENBQWlDLENBQTNILENBQThILE1BQU0sQ0FBQyxvQkFBckksRUFDUDtBQUdDO0FBQ1A7QUFDQSxDQXBCSixDQXNCRyxNQUFNLENBQUMsV0FBUCxDQUFxQixVQUFVLENBRXJCLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxHQUFJLENBQUEsU0FBUyxDQUFHLENBQWhCLENBQWlDLHdCQUhaLENBSXRCO0FBQ0M7QUFDRDtBQUNBLEdBQUksTUFBTSxDQUFDLElBQVAsQ0FBWSxpQkFBWixFQUFnQyxTQUFwQyxDQUErQyxTQUFTLENBQUcsTUFBTSxDQUFDLElBQVAsQ0FBWSxpQkFBeEIsQ0FHOUMsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsSUFBdEIsQ0FDRCxHQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFaLENBQ0MsQ0FDSyxlQUFlLENBQUMsZUFBaEIsQ0FBaUMsTUFBTSxDQUFDLElBQVAsQ0FBWSxhQUE3QyxDQUEyRCxTQUEzRCxDQUFxRSxJQUFyRSxFQUEyRSxJQUEzRSxDQUFnRixTQUFTLElBQVQsQ0FBZSxDQUVyRixNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixJQUFJLENBQUMsSUFBakMsQ0FDQTtBQUNBO0FBQ0EsTUFBTSxDQUFDLGtCQUFQLENBQTRCLElBQTVCLENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsS0FBdEIsQ0FDRDtBQUVSLENBVEQsQ0FTRSxTQUFTLEtBQVQsQ0FBZSxDQUNSLE1BQU0sQ0FBQyxjQUFQLENBQXNCLEtBQXRCLENBQ0EsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ1IsQ0FaRCxFQWFKLENBZkYsSUFpQkMsQ0FDQyxNQUFNLENBQUMsY0FBUCxDQUFzQixLQUF0QixDQUNBLENBRVYsQ0FoQ0QsQ0FnQ0M7QUFFRTtBQUNBO0FBQ0E7QUFDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsQ0FBb0MsVUFBVSxDQUVsQztBQUNBLEdBQUksQ0FBQSxzQkFBc0IsQ0FBQyxFQUEzQixDQUNBLEdBQUksQ0FBQyxNQUFNLENBQUMsSUFBUCxDQUFZLFlBQWpCLENBQ0EsQ0FDRyxJQUFJLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBVixDQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUEwQixNQUF4QyxDQUErQyxDQUFDLEVBQWhELENBQW1ELENBQzlDLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIsQ0FBMUIsRUFBNkIsV0FBN0IsRUFBMEMsSUFBOUMsQ0FDSSxzQkFBc0IsQ0FBQyxJQUF2QixDQUE0QiwrQkFBNUIsRUFDUixDQUNELEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIsTUFBMUIsRUFBa0MsQ0FBdEMsQ0FDSSxzQkFBc0IsQ0FBQyxJQUF2QixDQUE0QiwwQkFBNUIsRUFDTixDQUVELEdBQUksc0JBQXNCLENBQUMsTUFBdkIsQ0FBOEIsQ0FBbEMsQ0FDUyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixzQkFBNUIsQ0FBbUQsT0FBbkQsRUFEVCxJQUdBLENBQUU7QUFFVSxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBRUE7QUFDQSxHQUFLLE1BQU0sQ0FBQyxJQUFQLENBQVksaUJBQVosRUFBaUMsSUFBakMsRUFBeUMsTUFBTSxDQUFDLElBQVAsQ0FBWSxpQkFBWixFQUErQixTQUF4RSxFQUFxRixNQUFNLENBQUMsSUFBUCxDQUFZLGlCQUFaLEVBQStCLENBQXpILENBQ0EsQ0FDWSxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTBCLE1BQTFCLENBQWlDLENBQXJDLENBQXdDLENBRTVCLE1BQU0sQ0FBQyxXQUFQLENBQXFCLENBQUMsTUFBTSxDQUFDLElBQVIsQ0FBYSxFQUFFLENBQUMsSUFBaEIsQ0FBckIsQ0FDQSxNQUFNLENBQUMsV0FBUCxDQUFtQixJQUFuQixDQUEwQixJQUExQixDQUNBLE1BQU0sQ0FBQyxXQUFQLENBQW1CLFdBQW5CLENBQStCLGNBQWMsTUFBTSxDQUFDLElBQVAsQ0FBWSxhQUF6RCxDQUNBLE1BQU0sQ0FBQyxXQUFQLENBQW1CLElBQW5CLENBQXdCLGNBQWMsTUFBTSxDQUFDLElBQVAsQ0FBWSxhQUFsRCxDQUVBLGVBQWUsQ0FBQyxxQkFBaEIsQ0FBc0MsTUFBTSxDQUFDLFdBQTdDLEVBQTBELElBQTFELENBQStELFNBQVMsSUFBVCxDQUFlLENBRWxFLE1BQU0sQ0FBQyxJQUFQLENBQVksaUJBQVosQ0FBOEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUFWLENBQWUsRUFBN0MsQ0FDQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLEdBQXRDLENBQTBDLFNBQTFDLEVBQ0EsTUFBTSxDQUFDLHdCQUFQLEdBRVgsQ0FORCxDQU1FLFNBQVMsS0FBVCxDQUFlLENBQ0wsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ1gsQ0FSRCxFQVNYLENBRVosQ0FBRTtBQXBCSCxJQXFCTSxDQUFBLE1BQU0sQ0FBQyx3QkFBUCxHQUNqQixDQUNaLENBN0NELENBZ0RBLE1BQU0sQ0FBQyx3QkFBUCxDQUFrQyxVQUFVLENBRW5DLEdBQUksQ0FBQSxRQUFRLENBQUcsQ0FBQyxTQUFTLENBQUUsTUFBTSxDQUFDLElBQVAsQ0FBWSxpQkFBeEIsQ0FBMkMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQVAsQ0FBWSxnQkFBeEUsQ0FBMEYsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQXBILENBQWYsQ0FDRDtBQUNDLGVBQWUsQ0FBQyxnQkFBaEIsQ0FBaUMsTUFBTSxDQUFDLElBQVAsQ0FBWSxnQkFBWixFQUFnQyxNQUFNLENBQUMsSUFBUCxDQUFZLGFBQTdFLENBQTJGLENBQUMsTUFBTSxDQUFDLElBQVAsQ0FBWSxZQUF4RyxDQUFxSCxRQUFySCxDQUE4SCxJQUE5SCxFQUFvSSxJQUFwSSxDQUF5SSxTQUFTLElBQVQsQ0FBZSxDQUU5SSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUEwQixtQkFBMUIsQ0FBZ0QsSUFBSSxDQUFDLElBQXJELENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIsb0JBQTFCLENBQStDLENBQUMsQ0FBaEQsQ0FDQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsR0FBakMsQ0FBcUMsU0FBckMsRUFHTCxDQVBMLENBT00sU0FBUyxLQUFULENBQWUsQ0FFWCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDSCxDQVZQLEVBWVIsQ0FoQkQsQ0FtQkEsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsVUFBVSxDQUUzQixHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0EsZUFBZSxDQUFDLGVBQWhCLENBQWdDLENBQWhDLENBQWtDLENBQWxDLENBQW9DLElBQXBDLEVBQTBDLElBQTFDLENBQStDLFNBQVMsSUFBVCxDQUFlLENBRTFELElBQUksR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFWLENBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBeEIsQ0FBK0IsQ0FBQyxFQUFoQyxDQUFvQyxDQUNuQyxJQUFJLENBQUMsSUFBTCxDQUFVLENBQVYsRUFBYSxFQUFiLENBQWdCLElBQUksQ0FBQyxJQUFMLENBQVUsQ0FBVixFQUFhLEdBQTdCLENBQ0EsSUFBSSxDQUFDLElBQUwsQ0FBVSxDQUFWLEVBQWEsSUFBYixDQUFrQixJQUFJLENBQUMsSUFBTCxDQUFVLENBQVYsRUFBYSxLQUEvQixDQUNBLENBQ0QsTUFBTSxDQUFDLFdBQVAsQ0FBcUIsSUFBSSxDQUFDLElBQTFCLENBRUgsQ0FSRCxDQVFFLFNBQVMsS0FBVCxDQUFlLENBQ0wsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ1gsQ0FWRCxFQVlOLENBZkQsQ0FlRTtBQUVGO0FBRVgsQ0EzUUYsQ0E0UUMsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUduQyxDQS9RRixDQUFQLENBaVJILEVBQ0QsYUFFTyxRQUFTLENBQUEsVUFBVCxFQUF1QixDQUV0QixNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFRixXQUFXLENBQUUsc0NBRlgsQ0FHRixVQUFVLENBQUUsb0JBQVMsTUFBVCxDQUFnQixnQkFBaEIsQ0FBaUMsZUFBakMsQ0FBaUQscUJBQWpELENBQXVFLGlCQUF2RSxDQUNYLG9CQURXLENBQ1UsbUJBRFYsQ0FDOEIseUJBRDlCLENBQ3dELGNBRHhELENBQ3VFLFlBRHZFLENBQ29GLFVBRHBGLENBQytGLFFBRC9GLENBQ3dHLENBRWpILE1BQU0sQ0FBQyxjQUFQLENBQXdCLFlBQVksQ0FBQyxRQUFyQyxDQUNBLE1BQU0sQ0FBQyxJQUFQLENBQVksWUFBWixDQUNBLE1BQU0sQ0FBQyxVQUFQLENBQWtCLEtBQWxCLENBQ0EsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsWUFBWSxDQUFDLEVBQS9CLENBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBZSxlQUFmLENBQ0EsTUFBTSxDQUFDLG1CQUFQLENBQTZCLEtBQTdCLENBQ0EsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBQTFCLENBQXdDLE1BQU0sQ0FBQyxVQUEvQyxDQUNBO0FBQ0EsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsR0FBaEIsQ0FDQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBMUIsQ0FBMEMsSUFBMUMsQ0FFQSxNQUFNLENBQUMsWUFBUCxDQUFvQixNQUFwQixDQUNBLE1BQU0sQ0FBQyxXQUFQLENBQW1CLEtBQW5CLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBbUIsRUFBbkIsQ0FDQSxNQUFNLENBQUMsaUJBQVAsQ0FBMkIsS0FBM0IsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxTQUFQLEVBQWtCLFNBQXRCLENBQWlDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLEVBQWpCLENBRWhDLHlCQUF5QixDQUFDLG9CQUExQixHQUlBLE1BQU0sQ0FBQyxjQUFQLENBQXVCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFFLGVBQWUsQ0FBQyxnQkFBaEIsRUFBVCxDQUE0QyxJQUFJLENBQUMsRUFBakQsQ0FBVCxDQUF2QixDQUNBLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FFRCxNQUFNLENBQUMsR0FBUCxDQUFhLG1CQUFiLENBRUEsR0FBSSxDQUFBLFVBQVUsQ0FBRyxRQUFiLENBQUEsVUFBYSxDQUFTLElBQVQsQ0FDYixDQUNJLG1CQUFtQixDQUFDLE9BQXBCLENBQTRCLGVBQTVCLENBQThDLElBQTlDLENBQ0EsbUJBQW1CLENBQUMsT0FBcEIsQ0FBNEIsZUFBNUIsQ0FBNEMsV0FBNUMsRUFDSCxDQUpMLENBT0EsR0FBSSxDQUFBLG1CQUFKLENBQXdCLHVCQUF4QixDQUNBLE1BQU0sQ0FBQyx3QkFBUCxDQUFrQyxVQUNsQyxDQUNJLG1CQUFtQixDQUFFLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQixzQkFBc0IsTUFBTSxDQUFDLFVBQTdCLENBQXdDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixTQUF4RixDQUFrRyxJQUFsRyxDQUFyQixDQUNBLHVCQUF1QixDQUFHLG1CQUFtQixDQUFDLE9BQXBCLENBQTRCLElBQXRELENBRUEsR0FBSSxDQUFBLG9CQUFvQixDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQix1QkFBckIsQ0FBNkMsV0FBN0MsQ0FBeUQsVUFBekQsQ0FBM0IsQ0FFSCxDQVBELENBUUMsTUFBTSxDQUFDLHdCQUFQLEdBRUQsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsU0FBUyxNQUFULENBQWdCLE1BQWhCLENBQ3RCLENBQ0c7QUFDQyxHQUFJLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixVQUExQixHQUF1QyxTQUEzQyxDQUNBLENBQ0csTUFBTSxDQUFDLGtCQUFQLENBQTBCLFVBQTFCLENBQXFDLEVBQXJDLENBQ0YsQ0FFRyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsQ0FBcUMsWUFBckMsQ0FBa0QsTUFBbEQsQ0FDQSxNQUFNLENBQUMsS0FBUCxDQUFhLGVBQWIsQ0FBNkIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFVBQTFCLENBQXFDLFlBQWxFLEVBRU47QUFHRCxDQWRELENBaUJBLE1BQU0sQ0FBQyxrQkFBUCxDQUE0QixTQUFTLEtBQVQsQ0FDNUIsQ0FDUSxNQUFNLENBQUMsS0FBUCxDQUFhLHdCQUFiLENBQXNDLEtBQXRDLEVBQ0EsTUFBTSxDQUFDLG1CQUFQLENBQTJCLE1BQU0sQ0FBQyxLQUFQLENBQWEsd0JBQWIsRUFBM0IsQ0FFUCxDQUxELENBT0osTUFBTSxDQUFDLE1BQVAsQ0FBYyxrQ0FBZCxDQUFpRCxTQUFTLFFBQVQsQ0FBa0IsUUFBbEIsQ0FBMkIsQ0FFcEUsR0FBSSxRQUFRLEVBQUUsUUFBZCxDQUNBLENBQ0MsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsTUFBTSxDQUFDLEtBQVAsQ0FBYSxrQkFBYixFQUFyQixDQUNBLE1BQU0sQ0FBQyxtQkFBUCxDQUE2QixNQUFNLENBQUMsS0FBUCxDQUFhLHdCQUFiLEVBQTdCLENBQ0EsQ0FDUixDQVBELEVBVUMsTUFBTSxDQUFDLE1BQVAsQ0FBYyw0QkFBZCxDQUEyQyxTQUFTLFFBQVQsQ0FBa0IsUUFBbEIsQ0FBMkIsQ0FFL0QsR0FBSSxRQUFRLEVBQUUsUUFBZCxDQUNBLENBQ0MsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsTUFBTSxDQUFDLEtBQVAsQ0FBYSxrQkFBYixFQUFyQixDQUNBLE1BQU0sQ0FBQyxtQkFBUCxDQUE2QixNQUFNLENBQUMsS0FBUCxDQUFhLHdCQUFiLEVBQTdCLENBQ0EsQ0FDUixDQVBBLEVBV0QsTUFBTSxDQUFDLG9CQUFQLENBQThCLEVBQTlCLENBRUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBakIsQ0FBbUMsVUFBWSxDQUV2QyxvQkFBb0IsQ0FBQyxlQUFyQixDQUFxQyxNQUFNLENBQUMsVUFBNUMsQ0FBdUQsR0FBdkQsQ0FBMkQsSUFBM0QsRUFBaUUsSUFBakUsQ0FBc0UsU0FBUyxJQUFULENBQWUsQ0FFN0UsR0FBSSxDQUFBLGdCQUFnQixDQUFHLElBQUksQ0FBQyxJQUE1QixDQUNBLE1BQU0sQ0FBQyxrQkFBUCxDQUE0QixnQkFBZ0IsQ0FBQyxrQkFBN0MsQ0FDQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBMUIsQ0FBNEMsSUFBNUMsQ0FFQSxHQUFJLGdCQUFnQixDQUFDLE9BQWpCLENBQXlCLE1BQXpCLENBQWdDLENBQXBDLENBQXVDLENBQ25DLE1BQU0sQ0FBQyxTQUFQLENBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQXpCLENBQVQsQ0FBakIsQ0FDRixDQUZGLElBRU8sQ0FDTCxNQUFNLENBQUMsU0FBUCxDQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBUixDQUFhLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixnQkFBMUIsQ0FBMkMsV0FBeEQsQ0FBUixDQUFULENBQW5CLENBQ0EsQ0FFRCxNQUFNLENBQUMsZUFBUCxDQUF5QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsT0FBbkQsQ0FFQSxNQUFNLENBQUMsS0FBUCxDQUFhLHNCQUFiLENBQW9DLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixFQUE5RCxDQUFpRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsZUFBaEIsQ0FBakUsRUFFQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsQ0FBcUMsQ0FBQyxZQUFZLENBQUMsQ0FBZCxDQUFnQixrQkFBa0IsQ0FBQyxLQUFuQyxDQUFyQyxDQUdBLE1BQU0sQ0FBQyxVQUFQLENBQWtCLElBQWxCLENBQ0EsTUFBTSxDQUFDLG9CQUFQLENBQThCLElBQTlCLENBQ0EsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFVBQTFCLENBQXFDLFlBQXpELENBQXNFLEtBQXRFLEVBR1YsQ0F4QkMsQ0F3QkEsU0FBUyxLQUFULENBQWUsQ0FHaEIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBR0gsQ0E5QkksRUFnQ1AsQ0FsQ0QsQ0FvQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBakIsR0FFQyxNQUFNLENBQUMsNEJBQVAsQ0FBb0MsVUFBVSxDQUMzQyxvQkFBb0IsQ0FBQyxxQkFBckIsQ0FBMkMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsR0FBM0QsRUFBZ0UsSUFBaEUsQ0FBcUUsU0FBVSxJQUFWLENBQWdCLENBQ2xGLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGtCQUFqQixDQUFzQyxJQUFJLENBQUMsSUFBM0MsQ0FDRixDQUZELEVBR0gsQ0FKQSxDQUtELE1BQU0sQ0FBQyw0QkFBUCxHQUdSLE1BQU0sQ0FBQyxVQUFQLENBQW9CLFVBQ3BCLENBQ0ksTUFBTSxDQUFDLGtCQUFQLENBQTBCLElBQTFCLENBQ0Esb0JBQW9CLENBQUMscUJBQXJCLENBQTJDLE1BQU0sQ0FBQyxVQUFsRCxFQUNTLElBRFQsQ0FDYyxTQUFTLElBQVQsQ0FBZSxDQUNqQixHQUFJLElBQUksQ0FBQyxNQUFMLEVBQWEsR0FBakIsQ0FDQSxDQUVJLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixVQUExQixDQUF1QyxJQUFJLENBQUMsSUFBNUMsQ0FDQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsU0FBMUIsQ0FBb0MsS0FBcEMsQ0FDQSxNQUFNLENBQUMsV0FBUCxDQUFxQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBakIsQ0FBc0IsU0FBUyxDQUFDLEtBQWhDLENBQXJCLENBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBYSxzQkFBYixDQUFvQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsRUFBOUQsQ0FBaUUsTUFBTSxDQUFDLFdBQXhFLEVBQ0gsQ0FQRCxJQU9NLENBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQWpDLENBQXNDLE9BQXRDLEVBQ04sTUFBTSxDQUFDLGtCQUFQLENBQTBCLEtBQTFCLENBRUEsQ0FaWixDQVlhLFNBQVMsS0FBVCxDQUFlLENBQ0YsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0EsTUFBTSxDQUFDLGtCQUFQLENBQTBCLEtBQTFCLENBRUosQ0FoQnRCLEVBa0JILENBckJELENBdUJBO0FBQ0E7QUFDQTtBQUNDLE1BQU0sQ0FBQyxTQUFQLENBQW1CLFNBQVUsTUFBVixDQUFrQixDQUNyQztBQUNBO0FBQ0EsQ0FBQyxDQUFDLGNBQUQsQ0FBRCxDQUFrQixLQUFsQixDQUF3QixNQUF4QixFQUNBLE1BQU0sQ0FBQyxXQUFQLENBQW1CLE1BQW5CLENBQ0EsTUFBTSxDQUFDLGlCQUFQLENBQTJCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixVQUFyRCxDQUdBLENBUkEsQ0FTRztBQUNFO0FBQ0E7QUFFRixNQUFNLENBQUMsUUFBUCxDQUFrQixTQUFVLE9BQVYsQ0FBbUIsQ0FFakMsR0FBSSxPQUFKLENBQ0EsQ0FDSSxNQUFNLENBQUMsUUFBUCxDQUFnQixlQUFoQixDQUFrQyxpQkFBaUIsQ0FBQyxjQUFsQixDQUFpQyx3QkFBd0IsTUFBTSxDQUFDLFVBQWhFLENBQWxDLENBQ0EsTUFBTSxDQUFDLFVBQVAsQ0FBb0IsSUFBcEIsQ0FFQSxvQkFBb0IsQ0FBQyxnQkFBckIsQ0FBc0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsT0FBakIsQ0FBeUIsTUFBL0QsQ0FBc0UsTUFBTSxDQUFDLFVBQTdFLENBQXdGLE1BQU0sQ0FBQyxRQUEvRixDQUF3RyxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUF6SCxFQUF5SSxJQUF6SSxDQUE4SSxTQUFTLElBQVQsQ0FBZSxDQUV6SSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLEdBQXRDLENBQTBDLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBcEQsRUFDQSxNQUFNLENBQUMsV0FBUCxDQUFvQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQW5CLENBQXBCLENBQ0EsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFdBQTFCLENBQXNDLE1BQU0sQ0FBQyxXQUE3QyxDQUVBLEdBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxXQUFkLENBQ0EsQ0FDSSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsU0FBMUIsQ0FBb0MsSUFBcEMsQ0FDQSxNQUFNLENBQUMsV0FBUCxDQUFtQixTQUFuQixDQUE2QixJQUE3QixDQUNBLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixPQUExQixDQUFxQyxNQUFNLENBQUMsV0FBUCxDQUFtQixPQUF4RCxDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWEsd0JBQWIsQ0FBc0MsS0FBdEMsRUFDSCxDQUVELE1BQU0sQ0FBQyxLQUFQLENBQWEsc0JBQWIsQ0FBb0MsTUFBTSxDQUFDLGtCQUFQLENBQTBCLEVBQTlELENBQWlFLE1BQU0sQ0FBQyxXQUF4RSxFQUNBLE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBWCxDQUF5Qix1QkFBekIsQ0FBaUQsV0FBakQsQ0FBNkQsSUFBSSxDQUFDLElBQUwsQ0FBVSxTQUF2RSxFQUVBLE1BQU0sQ0FBQyxVQUFQLENBQW9CLEtBQXBCLENBR0EsR0FBSSxJQUFJLENBQUMsSUFBTCxDQUFVLFFBQVYsQ0FBbUIsTUFBbkIsQ0FBMEIsQ0FBOUIsQ0FBaUMsQ0FDN0IsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUwsQ0FBVSxRQUFsQixDQUFULENBQWpCLENBR0gsQ0FFRCxNQUFNLENBQUMsVUFBUCxDQUFrQixJQUFsQixDQUNBLE1BQU0sQ0FBQyxvQkFBUCxDQUE4QixJQUE5QixDQUVBLENBQUMsQ0FBQyxjQUFELENBQUQsQ0FBa0IsS0FBbEIsQ0FBd0IsTUFBeEIsRUFFQTtBQUdKLENBbENoQixDQWtDaUIsU0FBUyxLQUFULENBQWUsQ0FFYixNQUFNLENBQUMsVUFBUCxDQUFvQixLQUFwQixDQUNBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUVGLENBdkNqQixFQTBDSCxDQUNSLENBbERHLENBcURJLE1BQU0sQ0FBQyxHQUFQLENBQVcsZUFBWCxDQUEyQixTQUFTLEtBQVQsQ0FBZSxJQUFmLENBQW9CLENBRTNDLEdBQUksQ0FBQSxHQUFHLENBQUMsSUFBUixDQUNBLEdBQUksR0FBRyxFQUFFLEdBQUwsRUFBWSxHQUFHLEVBQUUsR0FBckIsQ0FDQSxDQUNJLEdBQUksTUFBTSxDQUFDLGtCQUFQLENBQTBCLFVBQTFCLENBQXFDLFlBQXJDLEVBQW1ELENBQXZELENBQTBELE1BQU0sQ0FBQyxZQUFQLENBQW9CLENBQXBCLEVBRTdELENBQ0QsR0FBSSxHQUFHLEVBQUUsR0FBTCxFQUFZLEdBQUcsRUFBRSxHQUFyQixDQUNBLENBQ0ksR0FBSSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsQ0FBcUMsWUFBckMsRUFBbUQsQ0FBdkQsQ0FBMEQsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsQ0FBcEIsRUFDN0QsQ0FFSixDQWJELEVBbUJLLENBOVBGLENBK1BGLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FPcEMsQ0F0UUUsQ0FBUCxDQXdRUCxFQUNELGFBRU8sUUFBUyxDQUFBLGdCQUFULEVBQTZCLENBQzVCLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUdaLFVBQVUsQ0FBRSxvQkFBVSxNQUFWLENBQWlCLGNBQWpCLENBQWdDLFVBQWhDLENBQTJDLHlCQUEzQyxDQUFxRSxlQUFyRSxDQUFxRixRQUFyRixDQUE4RixRQUE5RixDQUF1RyxjQUF2RyxDQUF1SCxDQUV0SCxNQUFNLENBQUMsSUFBUCxDQUFZLGtCQUFaLENBRUEsR0FBSSxDQUFBLG1CQUFtQixDQUFFLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQixzQkFBc0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLEVBQWhELENBQW1ELE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixTQUFuRyxDQUE2RyxJQUE3RyxDQUF6QixDQUNBLEdBQUksQ0FBQSx1QkFBdUIsQ0FBRyxtQkFBbUIsQ0FBQyxPQUFwQixDQUE0QixJQUExRCxDQUVBLEdBQUksQ0FBQSxXQUFXLENBQUcsUUFBZCxDQUFBLFdBQWMsQ0FBUyxJQUFULENBQWMsQ0FFNUIsR0FBSSxDQUFBLE9BQU8sQ0FBRyxtQkFBbUIsQ0FBQyxPQUFwQixDQUE0QixRQUExQyxDQUNBLEdBQUksT0FBTyxHQUFHLFNBQVYsRUFBdUIsT0FBTyxHQUFHLElBQXJDLENBQTJDLE9BQU8sQ0FBQyxFQUFSLENBQzNDLE9BQU8sQ0FBQyxJQUFSLENBQWEsSUFBYixFQUNBLG1CQUFtQixDQUFDLE9BQXBCLENBQTRCLGVBQTVCLENBQThDLE9BQTlDLENBQ0gsQ0FORCxDQVFBLEdBQUksQ0FBQSxvQkFBb0IsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsdUJBQXJCLENBQTZDLFlBQTdDLENBQTBELFdBQTFELENBQTNCLENBQ1o7QUFFWSxHQUFJLENBQUEsdUJBQXVCLENBQUMsUUFBeEIsQ0FBQSx1QkFBd0IsRUFBVSxDQUVsQyxHQUFJLENBQUEsUUFBUSxDQUFHLG1CQUFtQixDQUFDLE9BQXBCLENBQTRCLFFBQTNDLENBQ0EsR0FBSSxRQUFRLEdBQUcsSUFBZixDQUNBLENBQ0ksSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQXhCLENBQStCLENBQUMsRUFBaEMsQ0FDQSxDQUNHLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFQLENBQWtCLE1BQWxCLENBQXlCLE1BQXhDLENBQStDLENBQUMsRUFBaEQsQ0FDQSxDQUNFLEdBQUksTUFBTSxDQUFDLFVBQVAsQ0FBa0IsTUFBbEIsQ0FBeUIsQ0FBekIsRUFBNEIsTUFBNUIsRUFBb0MsU0FBcEMsRUFBaUQsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsTUFBbEIsQ0FBeUIsQ0FBekIsRUFBNEIsY0FBNUIsR0FBNkMsUUFBUSxDQUFDLENBQUQsQ0FBUixDQUFZLGNBQTlHLENBQThILE1BQU0sQ0FBQyxVQUFQLENBQWtCLE1BQWxCLENBQXlCLE1BQXpCLENBQWdDLENBQWhDLENBQWtDLENBQWxDLEVBQy9ILENBRUgsQ0FDSixDQUNKLENBZEQsQ0FlQSxHQUFJLENBQUEsaUJBQWlCLENBQUcsc0JBQXNCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixFQUFoRCxDQUFtRCxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsU0FBckcsQ0FDQSxHQUFJLENBQUEsZUFBZSxDQUFHLE1BQU0sQ0FBQyxVQUFQLENBQWtCLGNBQXhDLENBQ0EsR0FBSSxDQUFBLFFBQVEsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsaUJBQXJCLENBQXVDLGVBQXZDLENBQXVELFdBQXZELENBQW1FLHVCQUFuRSxDQUFmLENBSUEsTUFBTSxDQUFDLFdBQVAsQ0FBcUIsU0FBVSxLQUFWLENBQWdCLENBQy9DO0FBQ0EsR0FBSSxLQUFLLENBQUcsQ0FBQyxDQUFiLENBQWdCLENBRU0seUJBQXlCLENBQUMsZ0JBQTFCLENBQTJDLE1BQU0sQ0FBQyxVQUFQLENBQWtCLE1BQWxCLENBQXlCLEtBQXpCLEVBQWdDLE9BQTNFLEVBQ0EsR0FBSSxNQUFNLENBQUMsVUFBUCxDQUFrQixNQUFsQixDQUF5QixLQUF6QixFQUFnQyxLQUFoQyxFQUF1QyxJQUF2QyxFQUErQyxNQUFNLENBQUMsVUFBUCxDQUFrQixNQUFsQixDQUF5QixLQUF6QixFQUFnQyxjQUFoQyxFQUFnRCxJQUEvRixFQUF1RyxNQUFNLENBQUMsVUFBUCxDQUFrQixNQUFsQixDQUF5QixLQUF6QixFQUFnQyxjQUFoQyxFQUFnRCxTQUEzSixDQUFzSyxDQUVqSyxNQUFNLENBQUMsVUFBUCxDQUFrQixNQUFsQixDQUF5QixLQUF6QixFQUFnQyxNQUFoQyxDQUF1QyxTQUF2QyxDQUNBO0FBRUEsTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLHVCQUF6QixDQUFpRCxZQUFqRCxDQUE4RCxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsVUFBUCxDQUFrQixNQUFsQixDQUF5QixLQUF6QixFQUFnQyxjQUFoRCxDQUErRCxHQUFHLENBQUMsS0FBbkUsQ0FBOUQsRUFDeEIsQ0FObUIsSUFPQyxDQUNHLE1BQU0sQ0FBQyxVQUFQLENBQWtCLE1BQWxCLENBQXlCLE1BQXpCLENBQWdDLEtBQWhDLENBQXNDLENBQXRDLEVBRUYsQ0FFdkIsQ0FFRixDQW5CVyxDQXFCQSxNQUFNLENBQUMsVUFBUCxDQUFvQixTQUFVLEtBQVYsQ0FBZ0IsQ0FDNUI7QUFDQSxHQUFJLEtBQUssQ0FBRyxDQUFDLENBQWIsQ0FBZ0IsQ0FFUCxNQUFNLENBQUMsVUFBUCxDQUFrQixNQUFsQixDQUF5QixLQUF6QixFQUFnQyxNQUFoQyxDQUF1QyxRQUF2QyxDQUNSLENBRVIsQ0FQRCxDQVVBLEdBQUksQ0FBQSxRQUFKLENBQ0QsR0FBSSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBOUIsQ0FBK0MsUUFBUSxDQUFHLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDRDQUFuQixDQUFYLENBQS9DLElBQ0ssQ0FBQSxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsK0NBQW5CLENBQVgsQ0FFSjtBQUVELFFBQVEsQ0FBQyxNQUFULENBQWdCLFFBQVEsQ0FBQyxRQUFELENBQVIsQ0FBbUIsTUFBbkIsQ0FBaEIsRUFFWCxDQWpGVyxDQWtGWCxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBRXhCLEdBQUksS0FBSyxDQUFDLFVBQU4sQ0FBaUIsTUFBakIsRUFBeUIsU0FBekIsRUFBc0MsS0FBSyxDQUFDLFVBQU4sQ0FBaUIsTUFBakIsRUFBeUIsSUFBbkUsQ0FBeUUsS0FBSyxDQUFDLFVBQU4sQ0FBaUIsTUFBakIsQ0FBMEIsRUFBMUIsQ0FFNUUsQ0F0RkUsQ0FBUCxDQXdGUCxFQUNELGFBRU8sUUFBUyxDQUFBLFVBQVQsRUFBdUIsQ0FFdEIsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUgsV0FBVyxDQUFFLHNDQUZWLENBR0gsS0FBSyxDQUFDLENBQ04sU0FBUyxDQUFDLEdBREosQ0FFTixlQUFlLENBQUMsR0FGVixDQUdOLGdCQUFnQixDQUFDLEdBSFgsQ0FJTixRQUFRLENBQUMsSUFKSCxDQUtOLFFBQVEsQ0FBQyxHQUxILENBSEgsQ0FVSCxVQUFVLENBQUUsQ0FBQyxRQUFELENBQVUsVUFBVixDQUFxQixnQkFBckIsQ0FBc0MsWUFBdEMsQ0FBbUQsYUFBbkQsQ0FBaUUsc0JBQWpFLENBQXdGLGtCQUF4RixDQUEyRyxpQkFBM0csQ0FBNkgsUUFBN0gsQ0FFWixTQUFTLE1BQVQsQ0FBZ0IsUUFBaEIsQ0FBeUIsY0FBekIsQ0FBd0MsVUFBeEMsQ0FBbUQsV0FBbkQsQ0FBK0Qsb0JBQS9ELENBQW9GLGdCQUFwRixDQUFxRyxlQUFyRyxDQUFxSCxNQUFySCxDQUE0SCxDQUV6SCxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFrQyxDQUFDLE1BQU0sQ0FBRyxFQUFWLENBQWxDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsYUFBakIsQ0FBZ0MsRUFBaEMsQ0FFVCxNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FDUyxHQUFJLENBQUEsV0FBVyxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5DLENBRUEsR0FBSSxNQUFNLENBQUMsUUFBWCxDQUNLLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGFBQWpCLENBQWdDLE1BQU0sQ0FBQyxRQUF2QyxDQURMLElBR0ssQ0FBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixhQUFqQixDQUErQixFQUEvQixDQUdMLEdBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsWUFBaEIsQ0FBNkIsWUFBN0IsRUFBMkMsVUFBL0MsQ0FBMkQsQ0FDeEQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLENBQXFDLElBQXJDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBakIsQ0FBbUMsS0FBbkMsQ0FDTSxRQUFRLENBQUMsVUFBVSxDQUNmLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGlCQUFqQixDQUFxQyxJQUFyQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHNCQUFqQixDQUEwQyxJQUExQyxDQUNILENBSE8sQ0FBUixDQUlQLENBR0YsTUFBTSxDQUFDLGtCQUFQLENBQTRCLFNBQVMsU0FBVCxDQUFvQixDQUMzQyxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFnQyxTQUFoQyxFQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUF3QyxNQUFNLENBQUMsU0FBUCxDQUFpQixhQUFqQixDQUErQixTQUEvQixDQUF4QyxDQUNDLFFBQVEsQ0FBQyxVQUFVLENBQ2hCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGVBQWpCLENBQW1DLElBQW5DLENBQ0gsQ0FGUSxDQUFSLENBR0wsQ0FORCxDQVVBLEdBQUksTUFBTSxDQUFDLFNBQVAsRUFBb0IsU0FBeEIsQ0FBbUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsRUFBakIsQ0FDbkMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsS0FBN0IsQ0FDQSxHQUFJLENBQUEsSUFBSSxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDLENBR0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBakIsQ0FBa0MsU0FBUyxLQUFULENBQWdCO0FBQ2xELENBQ1g7QUFDYSxHQUFNLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGFBQWpCLENBQStCLE1BQS9CLEdBQXdDLEtBQTlDLENBQXFELEtBQUssR0FDMUQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBbUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsYUFBakIsQ0FBK0IsS0FBL0IsQ0FBbkMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixLQUE5QixDQUFvQyxLQUFwQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGVBQWpCLENBQW1DLEtBQW5DLENBR1osR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixNQUE5QixFQUFzQyxTQUExQyxDQUFxRCxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixNQUE5QixDQUFxQyxFQUFyQyxDQUNyRCxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQThCLEtBQTlCLEVBQXFDLFNBQXpDLENBQXFELE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQThCLEtBQTlCLENBQW9DLEVBQXBDLENBRXpDLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsTUFBOUIsRUFBc0MsU0FBMUMsQ0FDWCxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixNQUE5QixDQUF1QyxDQUFDLEVBQUUsQ0FBRyxNQUFNLENBQUMsU0FBUCxDQUFpQixhQUFqQixDQUErQixLQUEvQixFQUFzQyxFQUE1QyxDQUErQyxJQUFJLENBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsYUFBakIsQ0FBK0IsS0FBL0IsRUFBc0MsSUFBN0YsQ0FBdkMsQ0FFRCxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQThCLFlBQTlCLEVBQTRDLFNBQWhELENBQTJELE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQThCLFlBQTlCLENBQStDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGFBQWpCLENBQStCLEtBQS9CLEVBQXNDLElBQXJGLENBRzlDLFFBQVEsQ0FBQyxVQUFVLENBQ2QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBakIsQ0FBbUMsSUFBbkMsQ0FDSCxDQUZNLENBQVIsQ0FLRixDQXZCRCxDQTJCQSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFrQyxTQUFTLElBQVQsQ0FBYyxLQUFkLENBQXFCLENBQ25ELEdBQUksSUFBSSxDQUFDLFVBQUwsR0FBa0IsSUFBbEIsRUFBMEIsSUFBSSxDQUFDLFVBQUwsR0FBa0IsU0FBaEQsQ0FBNkQsQ0FDMUQsR0FBSSxJQUFJLENBQUMsVUFBVCxDQUFxQixJQUFJLENBQUMsVUFBTCxDQUFrQixLQUFsQixDQUFyQixJQUNLLENBQUEsSUFBSSxDQUFDLFVBQUwsQ0FBa0IsSUFBbEIsQ0FDUCxDQUhELElBSUssQ0FDRCxNQUFNLENBQUMsU0FBUCxDQUFpQixhQUFqQixDQUErQixNQUEvQixDQUFzQyxLQUF0QyxDQUE0QyxDQUE1QyxFQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQWdDLElBQWhDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBakIsQ0FBbUMsS0FBbkMsQ0FDSCxDQUNGLENBVkgsQ0FhQSxNQUFNLENBQUMsWUFBUCxDQUFzQixTQUFTLENBQVQsQ0FDdEIsQ0FDSSxNQUFNLENBQUMsRUFBUCxDQUFVLDJCQUFWLENBQXNDLENBQUMsZ0JBQWdCLFNBQWpCLENBQXRDLEVBQ0gsQ0FIRCxDQUtDLE1BQU0sQ0FBQyxTQUFQLENBQW1CLFNBQVMsQ0FBVCxDQUNwQixDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsMkJBQVYsQ0FBc0MsQ0FBQyxnQkFBZ0IsTUFBakIsQ0FBdEMsRUFDSCxDQUhBLENBS0QsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsVUFDdEIsQ0FDSSxHQUFJLENBQUEsVUFBSixDQUFlLFdBQWYsQ0FDQSxHQUFJLENBQUEsYUFBYSxDQUFHLE9BQU8sQ0FBQyxJQUFSLENBQWEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsYUFBOUIsQ0FBcEIsQ0FDZjtBQUVlLFdBQVcsQ0FBQyxlQUFaLENBQTRCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEdBQTVDLENBQWlELFVBQWpELENBQTZELFdBQTdELENBQXlFLGFBQXpFLEVBQXlGLElBQXpGLENBQ2QsU0FBUyxJQUFULENBQWUsQ0FDZCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsR0FBakMsQ0FBcUMsU0FBckMsRUFDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixhQUFqQixDQUErQixJQUFJLENBQUMsUUFBcEMsQ0FDQSxDQUphLENBS2QsU0FBUyxLQUFULENBQWUsQ0FDZCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDQSxDQVBhLEVBUUgsQ0FkRCxDQWdCQTtBQUNBLG9CQUFvQixDQUFDLHdCQUFyQixDQUE4QyxJQUE5QyxDQUFtRCxNQUFuRCxFQUEyRCxJQUEzRCxDQUNYLFNBQVMsSUFBVCxDQUFlLENBQ2QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQWpDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsSUFBN0IsQ0FDZSxDQUpMLENBSU0sU0FBUyxLQUFULENBQWUsQ0FDakIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ2YsQ0FOVyxFQVNILENBckhXLENBVlQsQ0FnSUgsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUVuQyxDQWxJRSxDQUFQLENBcUlQLEVBQ0QsYUFFTyxRQUFTLENBQUEsYUFBVCxDQUF3QixRQUF4QixDQUFrQyxDQUVqQyxNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFSCxXQUFXLENBQUUseUNBRlYsQ0FHSCxLQUFLLENBQUMsQ0FDRixTQUFTLENBQUMsR0FEUixDQUVGLE1BQU0sQ0FBQyxHQUZMLENBSEgsQ0FPSCxVQUFVLENBQUUsQ0FBQyxRQUFELENBQVUsWUFBVixDQUF1QixhQUF2QixDQUFxQyxpQkFBckMsQ0FFWixTQUFTLE1BQVQsQ0FBZ0IsVUFBaEIsQ0FBMkIsV0FBM0IsQ0FBdUMsZUFBdkMsQ0FBdUQsQ0FFbkQsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsV0FBdEIsQ0FDQSxNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FFQyxHQUFJLENBQUEsV0FBVyxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5DLENBRUosQ0FUVyxDQVBULENBaUJILElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FFL0IsS0FBSyxDQUFDLFdBQU4sQ0FBb0IsU0FBUyxNQUFULENBQWlCLENBQ2xDLEtBQUssQ0FBQyxZQUFOLENBQW1CLG1CQUFuQixDQUF1QyxNQUF2QyxFQUNILENBRkEsQ0FHRCxLQUFLLENBQUMsWUFBTixDQUFxQix5Q0FBSSxPQUFKLDBDQUFJLE9BQUosOEJBQ2pCLENBQUEsT0FBTyxDQUFDLE1BQVIsQ0FBZSxTQUFDLEdBQUQsQ0FBTSxHQUFOLHdDQUFvQixHQUFwQixFQUE0QixHQUE1QixHQUFmLENBRGlCLEVBQXJCLENBR0EsUUFBUSxDQUFDLGdCQUFULENBQTBCLFNBQTFCLENBQXFDLFNBQVMsQ0FBVCxDQUFZLENBQzdDO0FBQ0EsR0FBSSxDQUFBLFNBQVMsQ0FBRyxRQUFRLENBQUMsY0FBVCxDQUF3QixjQUF4QixDQUFoQixDQUNBLEdBQUksU0FBUyxFQUFJLEtBQUssQ0FBQyxZQUFOLENBQW1CLHFCQUFuQixFQUFqQixDQUE2RCxDQUMxRCxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxZQUFOLENBQW1CLHdCQUFuQixHQUE4QyxDQUExRCxDQUFSLENBQ0YsQ0FDSixDQU5ELEVBUUgsQ0FqQ0UsQ0FBUCxDQW9DUCxFQUNELGFBRUE7QUFDa0Y7QUFFM0UsUUFBUyxDQUFBLFNBQVQsQ0FBb0IsUUFBcEIsQ0FBOEIsQ0FFN0IsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUYsS0FBSyxDQUFFLENBQ2YsR0FBRyxDQUFFLEdBRFUsQ0FFZixNQUFNLENBQUUsR0FGTyxDQUdmLE9BQU8sQ0FBRSxHQUhNLENBSWYsV0FBVyxDQUFFLEdBSkUsQ0FLZixJQUFJLENBQUUsR0FMUyxDQUZMLENBU1osVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBaUIsVUFBakIsQ0FBNEIsUUFBNUIsQ0FBc0MscUJBQXRDLENBQTRELGVBQTVELENBQTRFLENBQ3ZGLEtBQUssUUFBTCxDQUFnQixRQUFoQixDQUNBLEdBQUksQ0FBQSxRQUFRLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsT0FBL0IsQ0FBdUMsSUFBdEQsQ0FDQSxNQUFNLENBQUMsT0FBUCxDQUFnQixrQkFBVSxRQUFWLEVBQW9CLE9BQXBDLENBQ0EsQ0FiVyxDQWNILElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FFNUMsS0FBSyxDQUFDLElBQU4sQ0FBYSxTQUFVLEdBQVYsQ0FBZSxDQUMzQjtBQUNBLENBRkQsQ0FNQSxLQUFLLENBQUMsTUFBTixDQUFhLFFBQWIsQ0FBc0IsU0FBUyxRQUFULENBQWtCLFFBQWxCLENBQTJCLENBQ2hELEdBQUksUUFBUSxFQUFFLElBQVYsRUFBa0IsUUFBUSxFQUFFLEtBQWhDLENBQXVDLENBQ3RDO0FBQ0EsSUFBSSxDQUFDLE9BQUwsQ0FBYSxNQUFiLEVBQ0EsT0FDQSxDQUVELEdBQUksUUFBUSxFQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsS0FBSyxDQUFDLEdBQXBCLENBQWhCLENBQTJDLENBQzFDLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBVixDQUFtQixLQUFLLENBQUMsT0FBTixDQUFjLEtBQUssQ0FBQyxHQUFwQixDQUFuQixFQUNBO0FBQ0EsSUFBSSxDQUFDLE9BQUwsQ0FBYSxDQUFDLElBQUksQ0FBQyxJQUFOLENBQWIsRUFFQSxHQUFJLEtBQUosU0FBSSxLQUFKLFdBQUksS0FBSyxDQUFFLElBQVgsQ0FBaUIsSUFBSSxDQUFDLE1BQUwsQ0FBWSxRQUFRLENBQUMsMERBQUQsQ0FBUixDQUFxRSxLQUFyRSxDQUFaLEVBQ2pCLEdBQUksS0FBSixTQUFJLEtBQUosV0FBSSxLQUFLLENBQUUsV0FBWCxDQUF3QixDQUN2QixJQUFJLENBQUMsT0FBTCxDQUFhLE1BQWIsRUFDQSxVQUFVLENBQUUsVUFBSyxDQUFFLElBQUksQ0FBQyxPQUFMLENBQWEsTUFBYixFQUFxQixDQUE5QixDQUFpQyxJQUFqQyxDQUFWLENBQ0EsQ0FDRCxDQUVELElBQUksQ0FBQyxFQUFMLENBQVEsVUFBUixDQUFvQixVQUFXLHdCQUM5QixJQUFJLENBQUMsT0FBTCxDQUFhLFNBQWIsRUFDQSxHQUFJLEtBQUosU0FBSSxLQUFKLCtCQUFJLEtBQUssQ0FBRSxXQUFYLHVDQUFJLG1CQUFxQixPQUFyQixDQUFKLENBQW1DLE1BQU8sQ0FBQSxLQUFLLENBQUMsV0FBTixDQUFrQixPQUFsQixDQUFQLENBQ25DLENBSEQsRUFJQSxDQXZCRCxFQXlCUyxDQS9DRSxDQUFQLENBa0RQLEVBQ0QsYUFFTyxRQUFTLENBQUEscUJBQVQsRUFBa0MsQ0FFakMsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUgsV0FBVyxDQUFFLGlEQUZWLENBR0gsS0FBSyxDQUFDLENBQ0MsT0FBTyxDQUFHLEdBRFgsQ0FFQyxPQUFPLENBQUUsR0FGVixDQUdDLFVBQVUsQ0FBRSxHQUhiLENBSEgsQ0FRQyxVQUFVLENBQUUscUJBQVUsQ0FBRSxDQVJ6QixDQVNGLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FFbEMsQ0FYQSxDQUFQLENBYVAsRUFDRCxhQUVPLFFBQVMsQ0FBQSw2QkFBVCxFQUEwQyxDQUV6QyxNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFSCxXQUFXLENBQUUseURBRlYsQ0FHSCxLQUFLLENBQUMsQ0FDQyxPQUFPLENBQUcsR0FEWCxDQUVDLE9BQU8sQ0FBRSxHQUZWLENBR0MsYUFBYSxDQUFFLEdBSGhCLENBSUMsTUFBTSxDQUFFLElBSlQsQ0FISCxDQVNGLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsa0RBRWpDLEtBQUssQ0FBQyxTQUFOLENBQWtCLENBQUMsQ0FBRCxDQUFHLENBQUgsQ0FBSyxDQUFMLENBQU8sQ0FBUCxDQUFsQixDQUNBLEdBQUksS0FBSyxDQUFDLGFBQU4sRUFBcUIsT0FBekIsQ0FBa0MsS0FBSyxDQUFDLFNBQU4sQ0FBa0IsQ0FBQyxDQUFELENBQUcsQ0FBSCxDQUFLLENBQUwsQ0FBTyxDQUFQLENBQVMsQ0FBVCxDQUFXLENBQVgsQ0FBYSxDQUFiLENBQWUsQ0FBZixDQUFsQixDQUNsQyxHQUFJLEtBQUssQ0FBQyxhQUFOLEVBQXFCLE1BQXpCLENBQ0EsQ0FDSSxLQUFLLENBQUMsU0FBTixDQUFrQixFQUFsQixDQUNBLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBRSxDQUFaLENBQWMsQ0FBQyxpQkFBQyxLQUFLLENBQUMsTUFBUCx3Q0FBQyxjQUFjLE9BQWYsQ0FBZixDQUFzQyxDQUFDLEVBQXZDLG9CQUEyQyxLQUFLLENBQUMsU0FBTixDQUFnQixJQUFoQixDQUFxQixDQUFDLENBQUMsQ0FBdkIsRUFBM0MsQ0FDSCxDQUNELG1CQUFJLEtBQUssQ0FBQyxNQUFWLG1DQUFJLGVBQWMsYUFBbEIsQ0FDQSxvQkFDSTtBQUNBLEtBQUssQ0FBQyxhQUFOLENBQXNCLHFDQUFvQixLQUFLLENBQUMsTUFBMUIseUNBQW9CLGVBQWMsYUFBbEMsRUFBZ0QsR0FBdEUsQ0FDSCxDQUVELG1CQUFJLEtBQUssQ0FBQyxNQUFWLG1DQUFJLGVBQWMsZUFBbEIsQ0FBbUMsS0FBSyxDQUFDLGVBQU4sQ0FBd0IscUNBQW9CLEtBQUssQ0FBQyxNQUExQix5Q0FBb0IsZUFBYyxlQUFsQyxFQUFrRCxHQUExRSxDQUcxQyxDQTNCTSxDQUFQLENBNkJQLEVBQ0QsYUFFTyxRQUFTLENBQUEsZ0JBQVQsRUFBNkIsQ0FFNUIsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUYsV0FBVyxDQUFFLDRDQUZYLENBR0YsVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBZ0IsQ0FDeEIsQ0FKRixDQUtGLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FHbEMsQ0FSQSxDQUFQLENBV1AsRUFDRCxhQUVPLFFBQVMsQ0FBQSxnQkFBVCxFQUE2QixDQUU1QixNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFRixXQUFXLENBQUUsNENBRlgsQ0FHRixVQUFVLENBQUUsb0JBQVMsTUFBVCxDQUFnQixZQUFoQixDQUE2QixvQkFBN0IsQ0FBa0QsVUFBbEQsQ0FBNkQsaUJBQTdELENBQStFLENBQ3ZGLENBSkYsQ0FLRixJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBR2xDLENBUkEsQ0FBUCxDQVdQLEVBQ0QsYUFJTyxRQUFTLENBQUEsMkJBQVQsRUFBeUMsQ0FFeEMsTUFBTyxDQUNGLFFBQVEsQ0FBRSxHQURSLENBRUYsV0FBVyxDQUFFLHVEQUZYLENBR0YsS0FBSyxDQUFDLENBQ0QsU0FBUyxDQUFHLEdBRFgsQ0FFSSxFQUFFLENBQUcsR0FGVCxDQUhKLENBT0YsVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBZ0IsWUFBaEIsQ0FBNkIsb0JBQTdCLENBQWtELFVBQWxELENBQTZELGlCQUE3RCxDQUErRSxlQUEvRSxDQUErRixRQUEvRixDQUF3RyxXQUF4RyxDQUFvSCxnQkFBcEgsQ0FDWixDQUNHLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF1QixHQUF2QixDQUNGLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFrQyxXQUFXLENBQUMsbUJBQTlDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxtQkFBVixDQUE4QixDQUE5QixDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLEVBQXNCLFNBQTFCLENBQXFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFzQixFQUF0QixDQUNyQyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixFQUF3QixJQUF4QixFQUFnQyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsRUFBd0IsRUFBNUQsQ0FDQSxDQUNFLEdBQUksQ0FBQSxLQUFLLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUF0QixDQUNBLEdBQUksQ0FBQSxZQUFZLENBQUcsS0FBSyxDQUFDLFFBQU4sR0FBaUIsTUFBakIsQ0FBd0IsQ0FBeEIsQ0FBMEIsQ0FBMUIsQ0FBbkIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLG1CQUFWLENBQThCLEtBQUssQ0FBQyxRQUFOLEdBQWlCLE1BQWpCLENBQXdCLENBQXhCLENBQTBCLENBQTFCLENBQTlCLENBQ0EsR0FBSSxZQUFZLEVBQUUsR0FBZCxFQUFxQixZQUFZLEVBQUUsR0FBdkMsQ0FDQSxDQUVFLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF5QixZQUF6QixDQUNELENBQ0YsQ0FFRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsRUFBMEMsU0FBOUMsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsYUFBekMsQ0FBeUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQXBCLENBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsbUJBQTVDLENBQXpELENBQ0QsQ0FIRCxJQUlBLENBQ0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUEyQyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBcEIsQ0FBa0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxtQkFBNUMsQ0FBZixDQUEzQyxDQUNELENBTUc7QUFDVixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsMkJBQXBCLENBQWtELFVBQVksQ0FFdEQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLEVBQTJDLFNBQS9DLENBQTBELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBMEMsRUFBMUMsQ0FDMUQsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUVBLG9CQUFvQixDQUFDLDJCQUFyQixDQUFpRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBckUsQ0FBa0YsTUFBbEYsRUFBMEYsSUFBMUYsQ0FBK0YsU0FBVSxJQUFWLENBQWdCLENBQ3ZHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBNEMsSUFBSSxDQUFDLElBQWpELENBR0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsbUJBQXJCLEVBQTBDLElBQTlDLENBQW9ELENBQ2hELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixtQkFBcEIsQ0FBd0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG1CQUE3RCxFQUNILENBQ1AsQ0FQRixDQU9HLFNBQVMsS0FBVCxDQUFlLENBQ04sZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ1QsQ0FUSCxFQVVBLENBZlIsQ0FvQlAsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLEVBQTJDLFNBQS9DLENBQTBELENBQy9DLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQiwyQkFBcEIsR0FDUCxDQUVEO0FBQ0o7QUFDQTtBQUNBLE1BQ08sTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW9DLFNBQVMsRUFBVCxDQUFZLENBQzFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF3QixFQUF4QixDQUNBLENBRk4sQ0FLRSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsT0FBcEIsQ0FBNkIsVUFBVSxDQUU1QixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQTJDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBL0QsQ0FDRDtBQUNEO0FBQ0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXVCLE1BQU0sQ0FBQyxFQUFQLENBQVUsbUJBQVYsQ0FBOEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUEvRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBc0MsQ0FBdEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsbUJBQXBCLENBQXdDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsRUFBakYsRUFHTjtBQUNBLENBWEosQ0FlSyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isd0JBQXBCLENBQStDLFNBQVUsSUFBVixDQUFnQixLQUFoQixDQUFzQixDQUVoRSxHQUFJLENBQUEsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUF2QixDQUNBLEdBQUksQ0FBQSxlQUFlLENBQUMsSUFBSSxDQUFDLElBQXpCLENBQ0MsR0FBSSxDQUFBLDBCQUEwQixDQUFFLElBQUksQ0FBQyxlQUFyQyxDQUVEO0FBQ0c7QUFDRDtBQUNBO0FBRUM7QUFFSjtBQUdDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixzQkFBcEIsQ0FBNkMsQ0FBQyxFQUFFLENBQUMsYUFBSixDQUFtQixJQUFJLENBQUcsZUFBMUIsQ0FBMEMsZUFBZSxDQUFDLDBCQUExRCxDQUFxRixJQUFJLENBQUMsSUFBSSxDQUFDLElBQS9GLENBQW9HLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBakgsQ0FBeUgsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUE1SSxDQUE3QyxDQUdKLENBbkJELENBcUJELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBd0MsU0FBUyxTQUFULENBQW1CLENBRXRELEdBQUksU0FBUyxFQUFFLENBQUMsQ0FBaEIsQ0FDQSxDQUVFLE1BQU0sQ0FBQyxFQUFQLENBQVUsbUJBQVYsQ0FBZ0MsR0FBaEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBeUIsR0FBekIsQ0FFRCxDQU5ELElBT0EsQ0FFRSxNQUFNLENBQUMsRUFBUCxDQUFVLG1CQUFWLENBQWdDLEdBQWhDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXlCLFNBQVMsQ0FBQyxTQUFuQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUF3QixTQUFTLENBQUMsZUFBbEMsQ0FDQSxHQUFJLFNBQVMsQ0FBQyxJQUFWLEVBQWdCLE9BQXBCLENBQTZCLE1BQU0sQ0FBQyxFQUFQLENBQVUsbUJBQVYsQ0FBZ0MsR0FBaEMsQ0FFOUIsQ0FDTCxDQWpCRCxDQW1CQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBcUMsU0FBUyxXQUFULENBQXFCLENBR3JELEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUE0QixTQUE1QixFQUF5QyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsSUFBdkUsQ0FBNkUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLENBQXpCLENBRTdFLG9CQUFvQixDQUFDLGNBQXJCLENBQW9DLFdBQXBDLENBQWdELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixNQUFwRSxDQUEyRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXJGLENBQW9HLENBQXBHLENBQXNHLElBQXRHLEVBQTRHLElBQTVHLENBQWlILFNBQVMsSUFBVCxDQUFlLENBSTlHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQiwyQkFBcEIsQ0FBa0QsSUFBSSxDQUFDLElBQUwsQ0FBVSxnQkFBNUQsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsMEJBQXBCLENBQWlELElBQUksQ0FBQyxJQUFMLENBQVUsZUFBM0QsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXdDLElBQXhDLENBSUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLDRCQUFwQixDQUFtRCxJQUFJLENBQUMsSUFBTCxDQUFVLGdCQUE3RCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQiwyQkFBcEIsQ0FBa0QsSUFBSSxDQUFDLElBQUwsQ0FBVSxlQUE1RCxDQUVBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBeUMsSUFBekMsQ0FJRSxDQW5CcEIsQ0FtQnFCLFNBQVMsS0FBVCxDQUFlLENBQ2YsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ04sQ0FyQmYsRUFzQkosQ0E1QkQsQ0ErQkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUF1QyxTQUFTLGNBQVQsQ0FBd0IsQ0FFdEQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLGNBQXpCLENBRUEsR0FBSSxjQUFjLEVBQUUsR0FBcEIsQ0FDQyxDQUNFLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHNCQUFwQixFQUE0QyxTQUFoRCxDQUNBLENBQ08sR0FBSSxDQUFBLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isc0JBQXBCLENBQTJDLEVBQWxELENBQ0EsR0FBSSxFQUFFLEVBQUUsU0FBUixDQUFtQixFQUFFLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHNCQUFwQixDQUEyQyxTQUE5QyxDQUNuQixHQUFJLEVBQUUsRUFBRSxTQUFSLENBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFtQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isc0JBQXBCLENBQTJDLEVBQTlFLEVBQ3pCLENBRUYsQ0FDTixDQWRMLENBZ0JBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBc0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFoRCxFQUdBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixlQUFwQixDQUFxQyxTQUFTLFlBQVQsQ0FBc0IsQ0FFbEQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxtQkFBVixDQUE4QixZQUE5QixDQUVHLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHNCQUFwQixFQUE0QyxTQUFoRCxDQUNBLENBQ0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixzQkFBcEIsQ0FBMkMsU0FBOUUsRUFDRCxDQUdSLENBVkwsQ0FZRSxDQTVMRCxDQTZMRixJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBR25DLENBaE1DLENBQVAsQ0FrTVAsRUFDRCxhQUVPLFFBQVMsQ0FBQSxtQkFBVCxFQUFnQyxDQUVwQyxHQUFJLENBQUEsVUFBVSxDQUFHLENBQUMsUUFBRCxDQUFXLFdBQVgsQ0FBd0IsY0FBeEIsQ0FBdUMsUUFBdkMsQ0FBZ0QsVUFBaEQsQ0FBMkQsY0FBM0QsQ0FBMEUsc0JBQTFFLENBQWlHLFlBQWpHLENBQThHLGFBQTlHLENBQTRILG1CQUE1SCxDQUFnSixrQkFBaEosQ0FBbUssaUJBQW5LLENBQXFMLGlCQUFyTCxDQUF1TSwyQkFBdk0sQ0FBbU8scUJBQW5PLENBQXlQLGdCQUF6UCxDQUEwUSxnQkFBMVEsQ0FBMlIsVUFBM1IsQ0FBc1MsVUFBdFMsQ0FDQyxTQUFVLE1BQVYsQ0FBaUIsU0FBakIsQ0FBMkIsWUFBM0IsQ0FBd0MsTUFBeEMsQ0FBK0MsUUFBL0MsQ0FBd0QsWUFBeEQsQ0FBcUUsb0JBQXJFLENBQTBGLFVBQTFGLENBQXFHLFdBQXJHLENBQWlILGlCQUFqSCxDQUFtSSxnQkFBbkksQ0FBb0osZUFBcEosQ0FBb0ssZUFBcEssQ0FBb0wseUJBQXBMLENBQThNLG1CQUE5TSxDQUFrTyxjQUFsTyxDQUFpUCxjQUFqUCxDQUFnUSxRQUFoUSxDQUF5USxRQUF6USxDQUFtUixDQUdsUztBQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLEVBQW9CLFNBQXhCLENBQW9DLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBVixDQUFtQixDQUFDLEVBQUQsQ0FBbkIsQ0FDcEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxvQkFBVixDQUFpQyxLQUFqQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixLQUFyQixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUF3QixXQUFXLENBQUMsZUFBcEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGlCQUFWLENBQThCLElBQTlCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXVCLENBQXZCLENBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBZSxlQUFmLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLENBQUMsWUFBWSxDQUFDLENBQWQsQ0FBZ0Isa0JBQWtCLENBQUMsSUFBbkMsQ0FBckIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTZCLElBQTdCLENBR0EsR0FBSSxNQUFNLENBQUMsU0FBUCxFQUFvQixTQUF4QixDQUFvQyxNQUFNLENBQUMsU0FBUCxDQUFrQixFQUFsQixDQUNwQyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixLQUE1QixDQUVBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWtDLFVBQVUsQ0FDdkIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNkIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsS0FBNUIsQ0FBbUMsSUFBaEUsQ0FDcEIsQ0FGRCxDQUtBLE1BQU0sQ0FBQyxFQUFQLENBQVUsaUJBQVYsQ0FBNEIsQ0FBNUIsQ0FFQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixFQUF3QixTQUE1QixDQUF1QyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBdUIsRUFBdkIsQ0FFdkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXVCLFVBQXZCLENBQ0k7QUFFSixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBc0IsQ0FDdEIsRUFBRSxDQUFFLEdBRGtCLENBRXRCLElBQUksQ0FBRSxNQUZnQixDQUd0QixPQUFPLENBQUUsRUFIYSxDQUF0QixDQVFBO0FBQ0EsTUFBTSxDQUFDLE1BQVAsQ0FBYyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBeEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxNQUFQLEVBQWUsU0FBbkIsQ0FBK0IsTUFBTSxDQUFDLE1BQVAsQ0FBYyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZ0JBQXhDLENBQy9CLEdBQUksTUFBTSxDQUFDLE1BQVAsRUFBZSxTQUFuQixDQUE4QixNQUFNLENBQUMsTUFBUCxDQUFjLENBQWQsQ0FDOUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLE1BQU0sQ0FBQyxNQUF4QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBNkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF2QyxDQUNBLE1BQU0sQ0FBQyxhQUFQLENBQXdCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixZQUFsRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBVixDQUFtQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsU0FBN0MsQ0FDQSxNQUFNLENBQUMsV0FBUCxDQUFtQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsV0FBN0MsQ0FDQSxNQUFNLENBQUMsY0FBUCxDQUF3QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZ0JBQWxELENBQ0EsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQWpELENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQWxELENBRUEsR0FBSyxNQUFNLENBQUMsY0FBUCxFQUF1QixTQUE1QixDQUF1QyxNQUFNLENBQUMsY0FBUCxDQUFzQixLQUF0QixDQUV2QyxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTJCLENBQTNCLENBQ0EsR0FBSSxNQUFNLENBQUMsY0FBUCxFQUF1QixTQUEzQixDQUNBLENBQ0UsTUFBTSxDQUFDLGNBQVAsQ0FBdUIsQ0FBdkIsQ0FFRCxDQUNELEdBQUksTUFBTSxDQUFDLGFBQVAsRUFBc0IsU0FBMUIsQ0FDQSxDQUNHLE1BQU0sQ0FBQyxhQUFQLENBQXNCLENBQXRCLENBQ0YsQ0FDQyxHQUFJLE1BQU0sQ0FBQyxhQUFQLEVBQXNCLFNBQTFCLENBQ0EsQ0FDSSxNQUFNLENBQUMsYUFBUCxDQUFzQixDQUF0QixDQUNILENBRUg7QUFDQSxHQUFJLENBQUEsVUFBVSxDQUFHLENBQUMsWUFBRCxDQUFqQixDQUNBO0FBQ0E7QUFDRyxHQUFJLENBQUEsZ0JBQWdCLENBQUcsQ0FBQyxHQUFHLENBQUUsQ0FBQyxDQUFDLE9BQU8sY0FBUixDQUF1QixRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBTixDQUFtQixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFuQyxDQUFELENBQTZDLENBQUMsSUFBSSxDQUFDLGtCQUFOLENBQXlCLEtBQUssQ0FBQyxFQUEvQixDQUE3QyxDQUEvQixDQUFELENBQU4sQ0FBeUgsT0FBTyxDQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBTixDQUFvQixNQUFNLENBQUMsS0FBM0IsQ0FBRCxDQUFsSSxDQUFzSyxJQUFJLENBQUUsb0JBQTVLLENBQWlNLFFBQVEsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXJOLENBQW9PLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxjQUE1UCxDQUEyUSxlQUFlLENBQUMsTUFBTSxDQUFDLGFBQWxTLENBQWdULE1BQU0sQ0FBRyxNQUFNLENBQUMsT0FBaFUsQ0FBd1UsYUFBYSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQWxXLENBQW9YLE1BQU0sQ0FBQyxVQUEzWCxDQUF2QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUEwQix5QkFBeUIsQ0FBQyxjQUExQixDQUF5QyxnQkFBekMsQ0FBMUIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUE1QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixNQUFNLENBQUMsRUFBUCxDQUFVLGFBQTVCLENBQ0E7QUFFSDtBQUNBLE1BQU0sQ0FBQyxHQUFQLENBQWEsbUJBQWIsQ0FFQSxHQUFJLENBQUEsc0JBQXNCLENBQUcsUUFBekIsQ0FBQSxzQkFBeUIsQ0FBUyxJQUFULENBQzdCLENBQ0csR0FBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFYLENBQUosQ0FBd0IsQ0FBeEIsR0FBOEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLElBQTFCLEVBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixDQUExRixDQUFKLENBQWtHLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUEyQixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFYLENBQS9CLENBQ2pHO0FBRUgsQ0FMRCxDQU1BLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLENBQTFCLEVBQStCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixJQUE3RCxDQUNBLENBRUcsR0FBSSxDQUFBLGVBQWUsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQWhDLENBQ0EsR0FBSSxDQUFBLGlCQUFpQixDQUFHLHNCQUFzQixNQUFNLENBQUMsTUFBN0IsQ0FBb0MsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFNBQXRGLENBQ0EsR0FBSSxDQUFBLFFBQVEsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsaUJBQXJCLENBQXVDLGVBQXZDLENBQXVELFdBQXZELENBQW1FLHNCQUFuRSxDQUFmLENBRUYsQ0FFQSxHQUFJLENBQUEsV0FBVyxDQUFHLFFBQWQsQ0FBQSxXQUFjLENBQVMsSUFBVCxDQUNqQixDQUNJLEdBQUksQ0FBQSxVQUFVLENBQUMsS0FBZixDQUNBLEdBQUksSUFBSSxFQUFFLFNBQVYsQ0FDQSxDQUNHLEdBQUksSUFBSSxFQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQXRCLENBQ0EsQ0FDRyxHQUFJLE1BQU8sQ0FBQSxJQUFQLEdBQWUsUUFBbkIsQ0FBNkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUE0QixJQUE1QixDQUE3QixJQUNLLElBQUksS0FBSyxDQUFDLE9BQU4sQ0FBYyxJQUFkLENBQUosQ0FDTCxDQUNHLEdBQUksSUFBSSxDQUFDLE1BQUwsQ0FBWSxDQUFoQixDQUNBLENBQ0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUE0QixJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsRUFBcEMsQ0FDQSxDQUNILENBTkksSUFPTCxDQUNHLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBNkIsSUFBSSxDQUFDLEVBQWxDLENBQ0YsQ0FDRCxVQUFVLENBQUcsSUFBYixDQUNGLENBQ0gsQ0FDRDtBQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixFQUE4QixJQUFsQyxDQUF3QyxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTJCLENBQTNCLENBRXpDO0FBR0YsQ0EzQkYsQ0E4QkQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsRUFBc0IsU0FBMUIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLEVBQXJCLENBRXJDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGlCQUF6QixDQUNBLENBRUc7QUFDQTtBQUVBLEdBQUksQ0FBQSxpQkFBZSxDQUFHLFFBQVEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF4QyxDQUNBLEdBQUksQ0FBQSxtQkFBaUIsQ0FBRywyQkFBMkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGdCQUFoRCxDQUFpRSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsY0FBbkgsQ0FDQSxHQUFJLENBQUEsT0FBTyxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQixtQkFBdEIsQ0FBd0MsSUFBeEMsQ0FBZCxDQUNBLEdBQUksQ0FBQSxVQUFRLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLG1CQUFyQixDQUF1QyxpQkFBdkMsQ0FBdUQsY0FBdkQsQ0FBc0UsV0FBdEUsQ0FBZixDQUNBLEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxRQUFYLENBQW9CLG1CQUFwQixDQUFWLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUE0QixHQUFHLENBQUMsRUFBaEMsQ0FFRztBQUNILEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixFQUE4QixJQUFsQyxDQUF3QyxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTJCLENBQTNCLENBRXhDO0FBQ0YsQ0FFRDtBQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXVCLFFBQXZCLEdBQWtDLE1BQWxDLENBQXlDLENBQXpDLENBQTJDLENBQTNDLEdBQStDLEdBQW5ELENBQ0EsQ0FFRSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixFQUF1QixTQUF2QixFQUFvQyxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsRUFBdUIsSUFBL0QsQ0FFQSxDQUVRLEdBQUksQ0FBQSxpQkFBZSxDQUFHLFFBQVEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUF4QyxDQUNEO0FBQ0MsR0FBSSxDQUFBLG1CQUFpQixDQUFHLHNCQUFzQixNQUFNLENBQUMsRUFBUCxDQUFVLFdBQWhDLENBQTRDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixjQUE5RixDQUNBLEdBQUksQ0FBQSxVQUFRLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLG1CQUFyQixDQUF1QyxpQkFBdkMsQ0FBdUQsY0FBdkQsQ0FBc0UsV0FBdEUsQ0FBZixDQUVQLENBRUYsQ0FFRCxHQUFJLENBQUEsbUJBQW1CLENBQUcsUUFBdEIsQ0FBQSxtQkFBc0IsRUFFMUIsQ0FDRTtBQUVELENBTEQsQ0FNQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixTQUFyQixFQUFnQyxTQUFwQyxDQUNBLENBQ0csR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsU0FBckIsRUFBZ0MsRUFBcEMsQ0FDQSxDQUNHLEdBQUksQ0FBQSxnQkFBZ0IsQ0FBRyxRQUFRLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBekMsQ0FDQSxHQUFJLENBQUEsa0JBQWtCLENBQUcsT0FBTyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsY0FBMUQsQ0FDQSxHQUFJLENBQUEsU0FBUyxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixrQkFBckIsQ0FBd0MsZ0JBQXhDLENBQXlELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixTQUE5RSxDQUF3RixtQkFBeEYsQ0FBaEIsQ0FDRixDQUNILENBRUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLFNBQVMsaUJBQVQsQ0FDekIsQ0FFTSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsaUJBQVYsRUFBNkIsU0FBakMsQ0FDQSxDQUNHLE1BQU0sQ0FBQyxFQUFQLENBQVUsaUJBQVYsQ0FBOEIsaUJBQTlCLENBQ0YsQ0FIRCxJQUlBLENBQ0csR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGlCQUFWLEVBQTZCLENBQTdCLEVBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsaUJBQVYsRUFBNkIsaUJBQW5FLENBQXNGLE1BQU0sQ0FBQyxFQUFQLENBQVUsaUJBQVYsQ0FBOEIsaUJBQTlCLENBQXRGLElBQ0ssQ0FBQSxNQUFNLENBQUMsRUFBUCxDQUFVLGlCQUFWLENBQTRCLENBQTVCLENBQ1AsQ0FFTixDQVpELENBY0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLENBQXFCLFNBQVMsSUFBVCxDQUFjLElBQWQsQ0FBbUIsS0FBbkIsQ0FBeUIsR0FBekIsQ0FDckIsQ0FDRyxlQUFlLENBQUMsUUFBaEIsQ0FBeUIsSUFBekIsQ0FBOEIsSUFBOUIsQ0FBbUMsS0FBbkMsRUFDQSxHQUFJLEdBQUosQ0FBUyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixHQUE1QixDQUFnQyxNQUFoQyxFQUNYLENBSkQsQ0FNQSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBMkIsVUFBWSxDQUVqQyxvQkFBb0IsQ0FBQyxpQkFBckIsQ0FBdUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFqRCxFQUEwRCxJQUExRCxDQUErRCxTQUFTLElBQVQsQ0FBZSxDQUU3RDtBQUNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBVixDQUFxQixJQUFJLENBQUMsSUFBMUIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBMkIsSUFBM0IsQ0FDQSxHQUFLLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixRQUExQixDQUFvQyxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLEdBRWpDLENBUHJCLENBT3NCLFNBQVMsS0FBVCxDQUFlLENBRW5CLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNELENBVmpCLEVBV0gsQ0FiSCxDQWVHLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBK0IsVUFDaEMsQ0FDSSxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0U7QUFDQTtBQUNBLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLFVBQS9CLENBQTRDLEdBQUksQ0FBQSxJQUFKLENBQVMsR0FBSSxDQUFBLElBQUksQ0FBQyxTQUFMLENBQWUsWUFBbkIsQ0FBZ0MsK0RBQWhDLENBQVQsQ0FBNUMsQ0FFQSxvQkFBb0IsQ0FBQyxrQkFBckIsQ0FBd0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLENBQW1CLFVBQW5CLENBQThCLFVBQXRFLENBQWlGLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBVixDQUFtQixVQUFuQixDQUE4QixXQUEvRyxFQUE0SCxJQUE1SCxDQUFpSSxTQUFTLElBQVQsQ0FBZSxDQUU1SSxNQUFNLENBQUMsRUFBUCxDQUFVLFFBQVYsQ0FBbUIsQ0FBbkIsRUFBc0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUFoQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsdUJBQVYsQ0FBbUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLENBQW1CLFVBQW5CLENBQThCLG1CQUE5QixDQUFrRCxFQUFyRixFQUVGLENBTEYsQ0FLRyxTQUFTLEtBQVQsQ0FBZSxDQUNHLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUVuQixDQVJGLEVBU0wsQ0FoQkEsQ0FpQkgsTUFBTSxDQUFDLEVBQVAsQ0FBVSx1QkFBVixDQUFvQyxTQUFTLFNBQVQsQ0FBbUIsQ0FDL0MsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLElBQTlCLENBQ0EsQ0FDRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBMkIsQ0FBM0IsQ0FFRCxDQUNELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixLQUFyQixDQUNBLG9CQUFvQixDQUFDLGVBQXJCLENBQXFDLFNBQXJDLENBQStDLEdBQS9DLENBQW1ELElBQW5ELEVBQXlELElBQXpELENBQThELFNBQVMsSUFBVCxDQUFlLENBRTNELE1BQU0sQ0FBQyxFQUFQLENBQVUsd0JBQVYsQ0FBb0MsSUFBSSxDQUFDLElBQUwsQ0FBVSxrQkFBOUMsQ0FDQSxHQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUF4QixDQUFKLENBQXNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixPQUFwQixDQUE0QixNQUE1QixDQUFzQyxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQWhELENBRXRDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxvQkFBVixFQUFnQyxTQUFwQyxDQUNDLENBQ0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxvQkFBVixDQUErQixJQUEvQixDQUFvQyxNQUFNLENBQUMsRUFBUCxDQUFVLHdCQUFWLENBQW1DLElBQXZFLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxvQkFBVixDQUErQixTQUEvQixDQUF5QyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5ELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxvQkFBVixDQUErQixjQUEvQixDQUE4QyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXhELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxvQkFBVixDQUErQixXQUEvQixDQUEyQyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQXJELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxvQkFBVixDQUErQixhQUEvQixDQUE2QyxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFsQyxDQUE3QyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsb0JBQVYsQ0FBK0IsZUFBL0IsQ0FBK0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUF6RCxDQUNBLENBUkYsSUFTSSxDQUNGLE1BQU0sQ0FBQyxFQUFQLENBQVUsb0JBQVYsQ0FBK0IsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxFQUFQLENBQVUsd0JBQVYsQ0FBbUMsSUFBM0MsQ0FBZ0QsWUFBWSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRFLENBQStFLGlCQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTFHLENBQTJILGNBQWMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFuSixDQUFnSyxnQkFBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBbEMsQ0FBaEwsQ0FBZ08sa0JBQWtCLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBNVAsQ0FBL0IsQ0FFRCxDQUNELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixJQUFJLENBQUMsSUFBTCxDQUFVLE9BQS9CLENBRUw7QUFDM0I7QUFDQTtBQUNBLCtCQXZCMkYsQ0F5QjNEO0FBQ0EseUJBQXlCLENBQUMsT0FBMUIsQ0FBa0MsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFwQixDQUFvQyxHQUFHLENBQUUsQ0FBQyxDQUFDLE9BQU8sY0FBUixDQUF1QixRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBTixDQUFtQixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFuQyxDQUFELENBQTZDLENBQUMsSUFBSSxDQUFDLGtCQUFOLENBQXlCLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUF6QyxDQUE3QyxDQUEvQixDQUFELENBQXpDLENBQWxDLEVBRUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxvQkFBVixDQUFpQyxJQUFqQyxDQUNBO0FBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLElBQXJCLENBRUg7QUFDQyxNQUFNLENBQUMsRUFBUCxDQUFVLFFBQVYsQ0FBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE9BQXBCLENBQTRCLE1BQS9DLENBQXNELFVBQXRELENBQWlFLEtBQWpFLEVBQ0E7QUFFQyxDQXBDbkIsQ0FvQ29CLFNBQVMsS0FBVCxDQUFlLENBQ2QsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBRUwsQ0F2Q2hCLEVBeUNQLENBakRELENBa0RBLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUF3QixDQUVyQixjQUFjLENBQUUsSUFGSyxDQUd0QixnQkFBZ0IsQ0FBRSxJQUhJLENBSXRCLGtCQUFrQixDQUFFLElBSkUsQ0FLdEIsV0FBVyxDQUFFLEtBTFMsQ0FNeEI7QUFDQztBQUNDLGVBQWUsQ0FBRSxJQVJLLENBU3RCLHdCQUF3QixDQUFFLEtBVEosQ0FVdEIsb0JBQW9CLENBQUUsSUFWQSxDQVd0QixzQkFBc0IsQ0FBRSxJQVhGLENBWXRCO0FBQ0EsbUJBQW1CLENBQUUsQ0FBQyxFQUFELENBQUssRUFBTCxDQUFTLEVBQVQsQ0FBWSxHQUFaLENBQWdCLEdBQWhCLENBQW9CLEdBQXBCLENBQXdCLElBQXhCLENBQTZCLElBQTdCLENBQWtDLEtBQWxDLENBYkMsQ0FBeEIsQ0FnQkUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFWLENBQTRCLFVBQVUsQ0FDaEMsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixLQUFyQixDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLElBQTlCLENBQ0EsQ0FDSyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBeUIsQ0FBekIsQ0FFSixDQUNELE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUFzQixJQUF0QixDQUVELG9CQUFvQixDQUFDLHVCQUFyQixDQUE2QyxNQUFNLENBQUMsRUFBUCxDQUFVLFFBQVYsQ0FBbUIsVUFBaEUsQ0FBMkUsTUFBTSxDQUFDLE1BQWxGLENBQXlGLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBbkcsQ0FBNEcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF0SCxDQUFxSSxHQUFySSxDQUF5SSxJQUF6SSxFQUErSSxJQUEvSSxDQUFvSixTQUFTLElBQVQsQ0FBZSxDQUUvSSxNQUFNLENBQUMsRUFBUCxDQUFVLHdCQUFWLENBQW9DLElBQUksQ0FBQyxJQUFMLENBQVUsa0JBQTlDLENBQ0EsR0FBSSxLQUFLLENBQUMsT0FBTixDQUFjLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBeEIsQ0FBSixDQUFzQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsT0FBcEIsQ0FBNEIsTUFBNUIsQ0FBc0MsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUFoRCxDQUV2QyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsb0JBQVYsRUFBZ0MsU0FBcEMsQ0FDQSxDQUNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsb0JBQVYsQ0FBK0IsSUFBL0IsQ0FBb0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSx3QkFBVixDQUFtQyxJQUF2RSxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsb0JBQVYsQ0FBK0IsU0FBL0IsQ0FBeUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFuRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsb0JBQVYsQ0FBK0IsY0FBL0IsQ0FBOEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF4RCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsb0JBQVYsQ0FBK0IsV0FBL0IsQ0FBMkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFyRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsb0JBQVYsQ0FBK0IsYUFBL0IsQ0FBNkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBbEMsQ0FBN0MsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLG9CQUFWLENBQStCLGVBQS9CLENBQStDLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBekQsQ0FDQSxDQVJELElBU0csQ0FDRixNQUFNLENBQUMsRUFBUCxDQUFVLG9CQUFWLENBQStCLENBQUMsT0FBTyxNQUFNLENBQUMsRUFBUCxDQUFVLHdCQUFWLENBQW1DLElBQTNDLENBQWdELFlBQVksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0RSxDQUErRSxpQkFBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUExRyxDQUEySCxjQUFjLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBbkosQ0FBZ0ssZ0JBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUF3QixNQUFNLENBQUMsRUFBUCxDQUFVLFlBQWxDLENBQWhMLENBQWdPLGtCQUFrQixNQUFNLENBQUMsRUFBUCxDQUFVLGVBQTVQLENBQS9CLENBRUQsQ0FFRCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUEvQixDQUlBLE1BQU0sQ0FBQyxFQUFQLENBQVUsb0JBQVYsQ0FBaUMsSUFBakMsQ0FFQSxRQUFRLENBQUMsVUFBVSxDQUNoQixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsSUFBckIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsQ0FBc0IsS0FBdEIsQ0FDRixDQUhPLENBQVIsQ0FNRjtBQUNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBVixDQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsT0FBcEIsQ0FBNEIsTUFBL0MsQ0FBc0QsVUFBdEQsQ0FBaUUsS0FBakUsRUFFQyxDQWxDbkIsQ0FrQ29CLFNBQVMsS0FBVCxDQUFlLENBQ2QsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0YsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLENBQXNCLEtBQXRCLENBR0gsQ0F2Q2hCLEVBeUNQLENBbkRDLENBdURHLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBK0IsU0FBUyxFQUFULENBQWMsQ0FFMUMsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLG9CQUFWLEVBQWdDLFNBQXBDLENBQStDLE1BQU0sQ0FBQyxFQUFQLENBQVUsb0JBQVYsQ0FBK0IsRUFBL0IsQ0FDL0MsR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBdUIsR0FBdkIsQ0FBMkIsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUF2RCxFQUF5RCxPQUF6RCxDQUFpRSxFQUFqRSxDQUFWLENBRUEsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFXLENBQ1QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxvQkFBVixDQUErQixFQUEvQixDQUFvQyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBdUIsR0FBdkIsRUFBNEIsRUFBaEUsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLG9CQUFWLENBQStCLElBQS9CLENBQXNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF1QixHQUF2QixFQUE0QixJQUFsRSxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBVixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBdUIsR0FBdkIsQ0FBNUIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLG9CQUFWLENBQStCLGNBQS9CLENBQWdELE1BQU0sQ0FBQyxFQUFQLENBQVUsb0JBQVYsQ0FBK0IsSUFBL0IsQ0FBcUMsSUFBckMsQ0FBMEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxvQkFBVixDQUErQixFQUF6RSxDQUE2RSxHQUE3SCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsc0JBQVYsQ0FBaUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxvQkFBM0MsQ0FDQyxDQUNYLENBWkssQ0FlRDtBQUNULE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF5QixVQUFZLENBRTFCLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLEVBQXdCLFNBQTVCLENBQXVDLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF1QixFQUF2QixDQUV2QyxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0Esb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLElBQTlDLENBQW1ELGVBQW5ELEVBQW9FLElBQXBFLENBQ04sU0FBUyxJQUFULENBQWUsQ0FFUixNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBeUIsSUFBSSxDQUFDLElBQTlCLENBQ1UsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsRUFBbUIsSUFBdkIsQ0FDQSxDQUNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBNkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF2QyxFQUVDLENBRVosQ0FWRCxDQVVFLFNBQVMsS0FBVCxDQUFlLENBQ0csZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ3BCLENBWkEsRUFhTixDQWxCTCxDQXFCRCxNQUFNLENBQUMsRUFBUCxDQUFVLHFCQUFWLENBQW1DLFNBQVMsUUFBVCxDQUMvQixDQUNFLEdBQUksQ0FBQSxTQUFKLENBQ0EsR0FBSSxDQUFBLFlBQVksQ0FBRyx5QkFBeUIsQ0FBQyxlQUExQixDQUEwQyxNQUFNLENBQUMsYUFBakQsQ0FBbkIsQ0FDQSxHQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsWUFBZCxHQUErQixZQUFZLENBQUMsTUFBYixDQUFvQixDQUF2RCxDQUEwRCxTQUFTLENBQUcsWUFBWSxDQUFDLENBQUQsQ0FBeEIsQ0FDcEQsR0FBSSxDQUFBLFNBQVMsQ0FBQyxDQUFkLENBQWdCLGVBQWUsQ0FBQyxDQUFoQyxDQUNBLEdBQUksU0FBUyxFQUFFLFNBQWYsQ0FDQSxDQUNHLEdBQUksU0FBUyxDQUFDLEdBQVYsRUFBZSxTQUFmLEVBQTRCLFNBQVMsQ0FBQyxHQUFWLEVBQWUsSUFBL0MsQ0FDQSxDQUNBLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFWLENBQWMsTUFBN0IsQ0FBb0MsQ0FBQyxFQUFyQyxDQUNBLENBQ0UsR0FBSSxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsSUFBakIsRUFBdUIsUUFBM0IsQ0FDQSxDQUNFLEdBQUksU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLEVBQXdCLFNBQXhCLEVBQXFDLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixFQUF3QixJQUFqRSxDQUNBLENBQ0UsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLE1BQXRDLENBQTZDLENBQUMsRUFBOUMsQ0FDQSxDQUNDLEdBQUksU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLENBQXZCLEVBQTBCLElBQTFCLEVBQWdDLFlBQWhDLEVBQWdELFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixDQUF2QixFQUEwQixLQUExQixFQUFpQyxTQUFyRixDQUFnRyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLENBQXZCLEVBQTBCLEtBQXBDLENBQ2hHLEdBQUksU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLENBQXZCLEVBQTBCLElBQTFCLEVBQWdDLGtCQUFoQyxFQUFzRCxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsQ0FBdkIsRUFBMEIsS0FBMUIsRUFBaUMsU0FBM0YsQ0FBc0csZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixDQUF2QixFQUEwQixLQUExQyxDQUd0RyxDQUdGLENBRUYsQ0FFQSxDQUNGLENBQ0gsQ0FDVCxNQUFPLENBQUMsWUFBWSxTQUFiLENBQXVCLGtCQUFrQixlQUF6QyxDQUFQLENBQ0MsQ0FqQ0wsQ0FzQ0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUEyQixNQUFNLENBQUMsRUFBUCxDQUFVLHFCQUFWLENBQWdDLHlCQUFoQyxDQUEzQixDQUdBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLElBQW5CLEVBQTRCLENBQUMsTUFBTSxDQUFDLGNBQXBDLEVBQXNELENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxvQkFBckUsQ0FDQSxDQUNHLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixHQUVGLENBSkQsSUFLSyxJQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixFQUFtQixJQUF2QixDQUNMLENBQ0c7QUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsR0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsR0FDQTtBQUVGLENBRUssTUFBTSxDQUFDLEVBQVAsQ0FBVSx5QkFBVixDQUFzQyxVQUFXLENBQUU7QUFDaEQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsRUFBc0IsU0FBMUIsQ0FDQyxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsTUFBckMsQ0FBNEMsQ0FBQyxFQUE3QyxDQUFpRCxDQUM3QyxHQUFJLENBQUEsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixDQUFyQixFQUF3QixRQUEzQyxDQUFzRDtBQUN0RCxHQUFJLENBQUEsVUFBVSxDQUFHLGNBQWpCLENBQXFEO0FBRXJELEdBQUksY0FBYyxFQUFFLFNBQWhCLEVBQTZCLGNBQWMsRUFBRSxJQUFqRCxDQUF3RCxDQUNwRCxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsQ0FBckIsRUFBd0IsR0FBeEIsQ0FBNEIsTUFBM0MsQ0FBa0QsQ0FBQyxFQUFuRCxDQUF1RCxDQUNuRCxHQUFLLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixDQUFyQixFQUF3QixHQUF4QixDQUE0QixDQUE1QixFQUErQixJQUEvQixFQUFxQyxVQUF0QyxFQUFzRCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsQ0FBckIsRUFBd0IsR0FBeEIsQ0FBNEIsQ0FBNUIsRUFBK0IsS0FBL0IsRUFBc0MsSUFBaEcsQ0FBdUcsQ0FBRTtBQUNwRyxHQUFJLENBQUEsVUFBVSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixDQUFyQixFQUF3QixHQUF4QixDQUE0QixDQUE1QixFQUErQixJQUFoRCxDQUNBO0FBRUEsTUFBTSxDQUFDLEdBQVAsQ0FBVyxRQUFRLGNBQVIsQ0FBdUIsVUFBbEMsQ0FBNkMsU0FBUyxLQUFULENBQWdCLElBQWhCLENBQXFCLENBQUc7QUFFcEU7QUFDRSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBcEIsQ0FBMkIsQ0FBQyxFQUE1QixDQUFnQyxDQUM5QixHQUFJLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxJQUFSLEVBQWMsa0JBQWxCLENBQ0EsQ0FDRSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTZCLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxLQUFyQyxDQUE0QztBQUM1QyxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTZCLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQXZDLENBQ0QsQ0FDRCxHQUFJLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxJQUFSLEVBQWMsWUFBbEIsQ0FBZ0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxtQkFBVixDQUFnQyxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsS0FBeEMsQ0FBZ0Q7QUFDakYsQ0FFSDtBQUNBO0FBRU07QUFFTCxDQWpCRixFQWlCSTtBQUNSO0FBQ0o7QUFDSjtBQUVKO0FBQ0EsQ0FBQztBQUNQLENBcENDLENBb0NEO0FBRUcsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsU0FBMUIsRUFBdUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLElBQXJFLENBQTJFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixDQUF6QixDQUUzRSxNQUFNLENBQUMsRUFBUCxDQUFVLFFBQVYsQ0FBbUIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFNBQTdDLENBQ0E7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FHWSxHQUFJLENBQUEsUUFBSixDQUNBLFFBQVEsQ0FBRyxjQUFjLENBQUMsR0FBZixDQUFtQiwrQ0FBbkIsQ0FBWCxDQUNBLFFBQVEsQ0FBQyxNQUFULENBQWdCLFFBQVEsQ0FBQyxRQUFELENBQVIsQ0FBbUIsTUFBbkIsQ0FBaEIsRUFLTCxDQTNmYSxDQUFqQixDQTZmRCxNQUFPLENBQ0csUUFBUSxDQUFFLEdBRGIsQ0FHRyxVQUFVLENBQUUsVUFIZixDQUlHLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FFbkMsQ0FOSixDQUFQLENBU0QsRUFDRCxhQUVPLFFBQVMsQ0FBQSxnQkFBVCxFQUE0QixDQUNoQyxNQUFPLENBQ0YsUUFBUSxDQUFFLEdBRFIsQ0FFRixPQUFPLENBQUUsU0FGUCxDQUdGLElBQUksQ0FBRSxjQUFTLEtBQVQsQ0FBZ0IsSUFBaEIsQ0FBc0IsSUFBdEIsQ0FBNEIsT0FBNUIsQ0FBcUMsQ0FDekMsT0FBTyxDQUFDLFdBQVIsQ0FBb0IsZ0JBQXBCLENBQXVDLFNBQVMsVUFBVCxDQUFxQixTQUFyQixDQUFnQyxDQUVyRSxHQUFJLFVBQVUsR0FBRyxTQUFiLEVBQTBCLFNBQVMsR0FBRyxTQUExQyxDQUFxRCxNQUFPLEtBQVAsQ0FFbkQsR0FBSSxDQUFBLEtBQUssQ0FBRyxJQUFJLENBQUMsZ0JBQWpCLENBQ0EsR0FBSSxDQUFBLEtBQUssQ0FBRyxVQUFVLEVBQUksU0FBMUIsQ0FDQSxHQUFJLENBQUEsS0FBSyxDQUFHLEtBQUssQ0FBQyxLQUFOLENBQVksS0FBWixDQUFaLENBQ0EsR0FBSSxLQUFLLEdBQUcsSUFBWixDQUFrQixNQUFPLEtBQVAsQ0FBbEIsSUFFQSxDQUNFLE9BQU8sQ0FBQyxZQUFSLENBQXFCLEtBQUssQ0FBQyxFQUFOLENBQVMsUUFBOUIsQ0FBdUMsS0FBdkMsRUFDQSxNQUFPLE1BQVAsQ0FDRCxDQUNKLENBYkQsQ0FjSCxDQWxCRyxDQUFQLENBb0JGLEVBQ0QsYUFFTyxRQUFTLENBQUEsVUFBVCxFQUF1QixDQUV0QixNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFWixVQUFVLENBQUUsb0JBQVUsTUFBVixDQUFrQixVQUFsQixDQUE2QixRQUE3QixDQUFzQyxRQUF0QyxDQUErQyxjQUEvQyxDQUE4RCxvQkFBOUQsQ0FBbUYsZUFBbkYsQ0FBbUcsaUJBQW5HLENBQXFILFFBQXJILENBQThILEVBQTlILENBQWlJLGdCQUFqSSxDQUFrSixXQUFsSixDQUE4SixlQUE5SixDQUE4SyxjQUE5SyxDQUE2TCx5QkFBN0wsQ0FBdU4sbUJBQXZOLENBQTRPLGtIQUluUCxNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFtQixFQUFuQixDQUVBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBa0MsRUFBbEMsQ0FDQTtBQUVBLEdBQUksS0FBSyxDQUFDLE9BQU4sQ0FBYyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQXhCLENBQUosQ0FBd0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLEVBQXBCLENBQ3hDO0FBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixpQkFBL0IsQ0FBbUQsS0FBbkQsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLFlBQS9CLENBQThDLFNBQTlDLENBQ0EsR0FBSSxNQUFNLENBQUMsUUFBUCxFQUFtQixTQUFuQixFQUFnQyxDQUFDLEtBQUssQ0FBQyxPQUFOLENBQWMsTUFBTSxDQUFDLFFBQXJCLENBQXJDLENBQXFFLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQUMsRUFBRCxDQUFoQixDQUNyRSxHQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQWhCLEVBQTBCLENBQTlCLENBQWlDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLElBQWhCLENBQXFCLEVBQXJCLEVBQ2pDLEdBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixJQUE0QyxTQUFoRCxDQUEyRCxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQXlDLENBQUMsRUFBRCxDQUF6QyxDQUMzRCxHQUFJLENBQUEsY0FBSixDQUFtQixnQkFBbkIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLGlCQUEvQixDQUFpRCxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQU4sQ0FBZ0IsSUFBSSxDQUFDLFNBQXJCLENBQStCLFdBQVcsQ0FBQyxVQUEzQyxDQUFELENBQXdELENBQUMsSUFBSSxDQUFDLE1BQU4sQ0FBYSxJQUFJLENBQUMsTUFBbEIsQ0FBeUIsV0FBVyxDQUFDLE1BQXJDLENBQXhELENBQWpELENBRUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixXQUEvQixDQUE2QyxXQUFXLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBbEUsQ0FBeUU7QUFFekUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixVQUEvQixDQUE0QyxDQUFDLFlBQVksQ0FBQyxDQUFkLENBQWdCLGtCQUFrQixDQUFDLElBQW5DLENBQTVDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixzQkFBL0IsQ0FBd0QsTUFBTSxDQUFDLGdCQUEvRCxDQUNBLE1BQU0sQ0FBQyxJQUFQLENBQWMsSUFBZCxDQUNBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFlBQWhCLENBRUEsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsRUFBdUIsU0FBM0IsQ0FBc0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLEVBQXBCLENBRXRDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0Isc0JBQS9CLGlCQUF3RCxNQUFNLENBQUMsTUFBL0QseUNBQXdELGVBQWUsc0JBQXZFLENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQXNCLE1BQU0sQ0FBQyxTQUE3QixDQUVBO0FBRUEsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsR0FBdUIsU0FBdkIsRUFBb0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLEdBQXVCLElBQS9ELENBQXFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixFQUFyQixDQUNyRSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQix3QkFBckIsR0FBZ0QsU0FBcEQsQ0FBK0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLHdCQUFyQixDQUE4QyxLQUE5QyxDQUMvRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixRQUFyQixHQUFnQyxTQUFwQyxDQUErQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsUUFBckIsQ0FBOEIsT0FBOUIsQ0FFL0MsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsRUFBeUIsU0FBN0IsQ0FBd0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLEVBQXhCLENBRXhDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFlBQXJCLEVBQW1DLFNBQXZDLENBQ0EsQ0FDSSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQix3QkFBckIsRUFBK0MsVUFBbkQsQ0FBZ0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFlBQXJCLENBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBNUMsQ0FBaEUsSUFDSyxDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixZQUFyQixDQUFrQyxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLGlCQUEvQixDQUFpRCxDQUFqRCxFQUFvRCxJQUF0RixDQUNSLENBQ0QsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsWUFBckIsRUFBbUMsTUFBdkMsQ0FBK0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixTQUEvQixDQUEwQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxRQUFRLENBQUMsY0FBZixDQUE4QixRQUFRLENBQUMscUJBQXZDLENBQTZELElBQUksQ0FBQyxjQUFsRSxDQUFELENBQW1GLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxRQUFRLENBQUMsZUFBZixDQUErQixRQUFRLENBQUMscUJBQXhDLENBQThELElBQUksQ0FBQyxnQkFBbkUsQ0FBbkYsQ0FBMUMsQ0FFL0MsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsR0FBc0IsU0FBMUIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLENBQXBCLENBQ3JDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLFNBQXZCLENBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixjQUFjLENBQUMsTUFBZixFQUFsQixDQUNsQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsT0FBckIsQ0FBK0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF6QyxDQUVBLEdBQUksQ0FBQSxlQUFlLENBQUcsRUFBdEIsQ0FFQSxHQUFJLE1BQU0sQ0FBQyxZQUFQLEVBQXFCLFNBQXpCLENBQW9DLGVBQWUsQ0FBRyxNQUFNLENBQUMsWUFBUCxDQUFvQixHQUF0QyxDQUVuQyxHQUFJLENBQUEsU0FBUyxDQUFDLENBQ0gsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxjQUFYLENBREcsQ0FFSCxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLGFBQVgsQ0FGRyxDQUdILENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsWUFBWCxDQUhHLENBSUgsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxjQUFYLENBSkcsQ0FBZCxDQU9ELEdBQUksQ0FBQSxnQkFBZ0IsQ0FBRyxDQUFDLEdBQUcsQ0FBRSxDQUFDLENBQUMsT0FBTyxxQkFBUixDQUE4QixRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBTixDQUFtQixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFuQyxDQUFELENBQTZDLENBQUMsSUFBSSxDQUFDLGtCQUFOLENBQXlCLEtBQUssQ0FBQyxFQUEvQixDQUE3QyxDQUF0QyxDQUFELENBQU4sQ0FBZ0ksT0FBTyxDQUFFLFNBQXpJLENBQW1KLElBQUksQ0FBRSxtQkFBekosQ0FBNkssV0FBVyxDQUFFLDBCQUExTCxDQUFxTixVQUFVLENBQUUsZ0JBQWpPLENBQWtQLFFBQVEsQ0FBRSxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0UixDQUE4UixNQUFNLENBQUcsTUFBTSxDQUFDLE9BQTlTLENBQ0MsYUFBYSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FEM0IsQ0FDb0M7QUFDbkMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixnQkFGakQsQ0FFa0UsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGdCQUY3RyxDQUU4SCxlQUFlLENBQUMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBRnhLLENBRXlMLE1BQU0sQ0FBQyxJQUZoTSxDQUVxTSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsR0FGaFAsQ0FBdkIsQ0FHQSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLGFBQS9CLENBQStDLHlCQUF5QixDQUFDLGNBQTFCLENBQXlDLGdCQUF6QyxDQUEvQyxDQUVBLEdBQUksQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLEtBQWYsQ0FBc0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQW1CLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsYUFBbEQsQ0FHdEIsTUFBTSxDQUFDLEdBQVAsQ0FBYSxtQkFBYixDQUVBLE1BQU0sQ0FBQyxhQUFQLENBQXVCLFNBQVMsUUFBVCxDQUN2QixTQUNRLEdBQUksQ0FBQSxFQUFKLENBQU8sR0FBUCxDQUVBLEdBQUksUUFBUSxDQUFDLFdBQVQsRUFBc0IsU0FBdEIsRUFBbUMsUUFBUSxDQUFDLFdBQVQsRUFBc0IsRUFBN0QsQ0FBaUUsRUFBRSxDQUFJLElBQUksQ0FBQyxLQUFMLENBQVcsUUFBUSxDQUFDLFdBQXBCLENBQU4sQ0FDakUsUUFBSSxFQUFKLHdCQUFJLElBQUksT0FBUixDQUFpQix1RkFFYixvQkFBSSxRQUFRLENBQUMsS0FBYiwyREFBSSxnQkFBZ0IsU0FBcEIsMENBQUksc0JBQTJCLEdBQS9CLENBQW9DLEdBQUcsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBaUMsR0FBakMsQ0FBcUMsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYSxDQUFoRSxFQUFrRSxPQUFsRSxtQkFBMEUsUUFBUSxDQUFDLEtBQW5GLGtFQUEwRSxpQkFBZ0IsU0FBMUYsZ0RBQTBFLHNCQUEyQixHQUEzQixPQUErQixFQUEvQiwrQkFBK0IsS0FBSSxPQUFuQyxDQUExRSxDQUFOLENBRXBDLEdBQUksR0FBRyxFQUFFLENBQVQsQ0FBWSxNQUFNLENBQUMsU0FBUCxDQUFpQixHQUFqQixDQUF1QixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBaUMsR0FBakMsQ0FBdkIsQ0FBWixJQUNJLDRDQUVBLEdBQUksUUFBSixTQUFJLFFBQUosNkJBQUksUUFBUSxDQUFFLEtBQWQscUNBQUksaUJBQWlCLGFBQXJCLENBQW9DLEdBQUcsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBaUMsR0FBakMsQ0FBcUMsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYSxDQUFoRSxFQUFrRSxPQUFsRSxtQkFBMEUsUUFBUSxDQUFDLEtBQW5GLDJDQUEwRSxpQkFBZ0IsYUFBaEIsT0FBOEIsRUFBOUIsK0JBQThCLEtBQUksT0FBbEMsQ0FBMUUsQ0FBTixDQUNwQyxHQUFJLEdBQUcsRUFBRSxDQUFULENBQVksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsR0FBakIsQ0FBdUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQWlDLEdBQWpDLENBQXZCLENBQ2YsQ0FDSixDQVZELElBVUssdUNBRUQsR0FBSSxRQUFKLFNBQUksUUFBSiw2QkFBSSxRQUFRLENBQUUsS0FBZCxxQ0FBSSxpQkFBaUIsU0FBckIsQ0FBZ0MsTUFBTSxDQUFDLFNBQVAsQ0FBbUIsUUFBUSxDQUFDLEtBQVQsQ0FBZSxTQUFsQyxDQUFoQyxJQUNLLElBQUksUUFBSixTQUFJLFFBQUosNkJBQUksUUFBUSxDQUFFLEtBQWQscUNBQUksaUJBQWlCLGFBQXJCLENBQW9DLE1BQU0sQ0FBQyxTQUFQLENBQWlCLEdBQWpCLENBQXVCLFFBQVEsQ0FBQyxLQUFULENBQWUsYUFBdEMsQ0FDNUMsQ0FDRCxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQTBDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLEdBQTNELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLEtBQWpCLENBQXlCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsQ0FBekIsQ0FDQSxHQUFJLFFBQUosU0FBSSxRQUFKLFdBQUksUUFBUSxDQUFFLEtBQWQsQ0FBcUIsTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLGNBQXpCLENBQXdDLGNBQXhDLENBQXdELFFBQXhELFNBQXdELFFBQXhELGlCQUF3RCxRQUFRLENBQUUsS0FBbEUsRUFBckIsSUFDSyxDQUFBLE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBWCxDQUF5QixjQUF6QixDQUF3QyxjQUF4QyxDQUF3RCxRQUF4RCxFQUVMLHlCQUF5QixDQUFDLE9BQTFCLENBQWtDLENBQzlCLEdBQUcsQ0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFOLENBQTRCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQU4sQ0FBbUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBbkMsQ0FBRCxDQUE2QyxDQUFDLElBQUksQ0FBQyxrQkFBTixDQUF5QixLQUFLLENBQUMsUUFBL0IsQ0FBN0MsQ0FDbkMsQ0FBQyxJQUFJLENBQUMsbUJBQU4sQ0FBMEIsS0FBSyxDQUFDLFFBQWhDLENBRG1DLENBQ08sQ0FBQyxJQUFJLENBQUMsb0JBQU4sQ0FBMkIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFyRCxDQURQLENBQWxDLENBQUQsQ0FEeUIsQ0FFdUYsUUFBUSxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FGM0csQ0FFMEgsZUFBZSxDQUFDLE1BQU0sQ0FBQyxhQUZqSixDQUFsQyxFQUlQLENBN0JELENBK0JDO0FBQ1Q7QUFDQSxpRkFFUSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixFQUFzQixTQUExQixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsRUFBckIsQ0FDckMsTUFBTSxDQUFDLFNBQVAsQ0FBbUIsQ0FBQyxHQUFHLENBQUMsSUFBTCxDQUFuQixDQUVBLEdBQUksQ0FBQSxVQUFVLENBQUUsTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXNCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUExQixDQUF3QyxHQUF4QyxDQUE0QyxlQUE1QyxDQUE0RCxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTVGLENBQW9HLE1BQU0sQ0FBQyxTQUFQLENBQWlCLEdBQXJILENBQWhCLENBQ0EsR0FBSSxDQUFBLGNBQWMsQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixJQUF4QyxDQUVBLEdBQUksQ0FBQSxPQUFPLENBQUUsTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXNCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUExQixDQUF3QyxHQUF4QyxDQUE0QyxlQUE1QyxDQUE0RCxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRFLENBQThFLGNBQXBHLENBQW1ILE1BQU0sQ0FBQyxTQUFQLENBQWlCLEdBQXBJLENBQWIsQ0FDQSxHQUFJLENBQUEsV0FBVyxDQUFHLE9BQU8sQ0FBQyxPQUFSLENBQWdCLElBQWxDLENBRUEsR0FBSSxDQUFBLGFBQWEsQ0FBRyxRQUFoQixDQUFBLGFBQWdCLENBQVMsSUFBVCxDQUNwQixDQUNJLFVBQVUsQ0FBQyxPQUFYLENBQW1CLGVBQW5CLENBQXFDLElBQXJDLENBQ0EsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsZUFBbkIsQ0FBbUMsY0FBbkMsRUFDSCxDQUpELENBTUEsR0FBSSxDQUFBLG9CQUFvQixDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixjQUFyQixDQUFvQyxjQUFwQyxDQUFtRCxhQUFuRCxDQUEzQixDQUVBLEdBQUksQ0FBQSxZQUFZLENBQUcsUUFBZixDQUFBLFlBQWUsQ0FBUyxJQUFULENBQ25CLENBQ0ksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQix3QkFBL0IsR0FDQSxHQUFJLENBQUEsRUFBRSxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFFBQTVCLENBRUEsR0FBSSxFQUFFLEVBQUUsU0FBUixDQUFtQixFQUFFLENBQUMsRUFBSCxDQUNuQixFQUFFLENBQUMsY0FBRCxDQUFGLENBQXFCLElBQXJCLFNBQXFCLElBQXJCLGlCQUFxQixJQUFJLENBQUUsWUFBM0IsQ0FDQSxVQUFVLENBQUMsT0FBWCxDQUFtQixlQUFuQixDQUFxQyxFQUFyQyxDQUNBLFVBQVUsQ0FBQyxPQUFYLENBQW1CLGVBQW5CLENBQW1DLGFBQW5DLEVBQ0gsQ0FURCxDQVdBLEdBQUksQ0FBQSxtQkFBbUIsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsY0FBckIsQ0FBb0MsYUFBcEMsQ0FBa0QsWUFBbEQsQ0FBMUIsQ0FFQSxHQUFJLENBQUEsWUFBWSxDQUFHLFFBQWYsQ0FBQSxZQUFlLENBQVMsSUFBVCxDQUNuQixDQUNZLE9BQU8sQ0FBQyxPQUFSLENBQWdCLGVBQWhCLENBQWtDLElBQWxDLENBQ0EsT0FBTyxDQUFDLE9BQVIsQ0FBZ0IsZUFBaEIsQ0FBZ0MsYUFBaEMsRUFFWCxDQUxELENBT0EsR0FBSSxDQUFBLG1CQUFtQixDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixXQUFyQixDQUFpQyxhQUFqQyxDQUErQyxZQUEvQyxDQUExQixDQUVBLEdBQUksQ0FBQSxXQUFXLENBQUcsUUFBZCxDQUFBLFdBQWMsQ0FBUyxJQUFULENBQ2xCLENBQ0ksVUFBVSxDQUFDLE9BQVgsQ0FBbUIsZUFBbkIsQ0FBcUMsSUFBckMsQ0FDQTtBQUNBLFVBQVUsQ0FBQyxPQUFYLENBQW1CLGVBQW5CLENBQW1DLFlBQW5DLEVBQ0gsQ0FMRCxDQU1BLEdBQUksQ0FBQSxrQkFBa0IsQ0FBRSxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsY0FBckIsQ0FBb0MsWUFBcEMsQ0FBaUQsV0FBakQsQ0FBeEIsQ0FHQyxHQUFJLENBQUEsYUFBYSxDQUFHLFFBQWhCLENBQUEsYUFBZ0IsQ0FBUyxJQUFULENBQ3JCLENBRUk7QUFFQSxHQUFJLENBQUEsTUFBSixDQUVBLE1BQU0sQ0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsUUFBL0IsQ0FBd0MsTUFBekMsQ0FBVCxDQUVBLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixRQUEvQixDQUF3QyxNQUF4QyxDQUErQyxDQUFuRCxDQUFxRCxDQUNqRDtBQUNBLEdBQUksQ0FBQSxHQUFKLENBQVEsR0FBUixDQUNBLEdBQUksQ0FBQSxPQUFPLENBQUcsSUFBSSxDQUFDLGFBQUQsQ0FBSixDQUFvQixTQUFwQixDQUFkLENBQ0EsR0FBSSxPQUFPLEVBQUUsU0FBYixDQUF3QixPQUFPLENBQUcsSUFBVixDQUN4QixHQUFJLENBQUEsS0FBSyxDQUFHLElBQUksQ0FBQyxLQUFMLENBQVcsT0FBWCxDQUFaLENBSUEsR0FBSSxNQUFNLENBQUMsSUFBUCxDQUFZLEtBQVosRUFBbUIsTUFBbkIsQ0FBMEIsQ0FBOUIsQ0FDQSxDQUNJLE1BQU0sQ0FBRyxNQUFNLENBQUMsT0FBUCxDQUFlLEtBQWYsRUFBc0IsR0FBdEIsQ0FBMkIsVUFBdUIscUVBQVQsSUFBUywrQkFBckIsR0FBcUIsVUFBaEIsR0FBZ0IsVUFFcEQsR0FBSSxHQUFHLEVBQUUsZUFBVCxDQUEwQixHQUFHLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsTUFBckMsQ0FDMUIsTUFBTyxDQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsUUFBL0IsQ0FBd0MsTUFBeEMsQ0FBK0MsU0FBQyxLQUFELENBQVEsSUFBUixRQUFrQixDQUFBLElBQUksQ0FBQyxHQUFELENBQUosRUFBYSxHQUFiLENBQW1CLEtBQUssQ0FBRyxDQUEzQixDQUErQixLQUFqRCxFQUEvQyxDQUF3RyxDQUF4RyxDQUFQLENBRU4sQ0FMUSxDQUFULENBTUgsQ0FFSixDQUNELEdBQUksQ0FBQSxLQUFLLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsUUFBL0IsQ0FDQSxHQUFJLE1BQU0sRUFBRSxTQUFSLEVBQXFCLE1BQU0sQ0FBQyxNQUFQLENBQWMsQ0FBdkMsQ0FBMEMsS0FBSyxDQUFDLGNBQUQsQ0FBTCxDQUF3QixNQUFNLENBQUMsQ0FBRCxDQUE5QixDQUExQyxJQUNLLENBQUEsS0FBSyxDQUFDLGNBQUQsQ0FBTCxDQUF3QixJQUF4QixDQUNMLFVBQVUsQ0FBQyxPQUFYLENBQW1CLGVBQW5CLENBQXFDLEtBQXJDLENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLE1BQXJCLENBQTRCLElBQUksQ0FBQyxXQUFqQyxFQUE4QyxPQUE5QyxDQUFzRCxJQUFJLENBQUMsWUFBM0QsRUFBeUUsU0FBekUsQ0FBcUYsSUFBckYsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsTUFBckIsQ0FBNEIsSUFBSSxDQUFDLFdBQWpDLEVBQThDLE9BQTlDLENBQXNELElBQUksQ0FBQyxZQUEzRCxFQUF5RSxNQUF6RSxDQUFrRixLQUFLLENBQUMsY0FBRCxDQUF2RixDQUNBLE1BQU0sQ0FBQyxhQUFQLENBQXFCLEtBQXJCLENBQTJCLEtBQTNCLEVBQ0E7QUFDQSxVQUFVLENBQUMsT0FBWCxDQUFtQixlQUFuQixDQUFtQyxjQUFuQyxFQUNILENBdkNBLENBd0NELEdBQUksQ0FBQSxvQkFBb0IsQ0FBRSxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsY0FBckIsQ0FBb0MsY0FBcEMsQ0FBbUQsYUFBbkQsQ0FBMUIsQ0FJQSxHQUFJLENBQUEsV0FBVyxDQUFHLFFBQWQsQ0FBQSxXQUFjLENBQVMsSUFBVCxDQUNsQixDQUNJLEdBQUksQ0FBQSxVQUFKLENBRUksVUFBVSxDQUFHLElBQWIsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixvQkFBckIsRUFBMkMsU0FBL0MsQ0FDQSxDQUNRLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG9CQUFyQixFQUEyQyxFQUEzQyxFQUFpRCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIscUJBQXJCLEVBQTRDLEVBQWpHLENBQ0EsQ0FDUSxHQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsSUFBZCxDQUFKLENBQ0EsQ0FDUSxHQUFJLElBQUksQ0FBQyxNQUFMLENBQVksQ0FBaEIsQ0FBbUIsVUFBVSxDQUFHLElBQUksQ0FBQyxDQUFELENBQWpCLENBQW5CLElBQ0ssQ0FBQSxVQUFVLENBQUcsSUFBYixDQUVaLENBTEQsSUFPQSxDQUNLLFVBQVUsQ0FBRyxJQUFiLENBQ0osQ0FDRCxHQUFJLENBQUEsTUFBSixDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLEVBQXVCLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUF0QyxDQUFnRCxNQUFNLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQTdCLENBQWhELElBQ0ssQ0FBQSxNQUFNLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUE3QixDQUNMLEdBQUksTUFBTSxFQUFFLFNBQVosQ0FDQSxDQUNRLE1BQU0sQ0FBQyxFQUFQLENBQVUsc0JBQVYsQ0FBaUMsRUFBakMsQ0FBb0MsSUFBcEMsQ0FBeUMsVUFBekMsRUFDQSxVQUFVLENBQUMsSUFBWCxDQUNQLENBSkQsSUFNQSxDQUNRLEdBQUksQ0FBQSxRQUFKLENBQWEsUUFBYixDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG9CQUFyQixFQUEyQyxFQUEvQyxDQUNBLENBQ1EsUUFBUSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixvQkFBaEMsQ0FDQSxRQUFRLENBQUcsSUFBWCxDQUNQLENBSkQsSUFNQSxDQUNRLFFBQVEsQ0FBRyxJQUFYLENBQ0EsUUFBUSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixxQkFBaEMsQ0FDUCxDQUNELEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsUUFBRCxDQUFSLENBQXFCLENBQTlDLEVBQWdELE9BQWhELENBQXdELFVBQVUsQ0FBQyxRQUFELENBQWxFLENBQVYsQ0FFQSxHQUFJLEdBQUcsRUFBRSxDQUFULENBQVksVUFBVSxDQUFHLE1BQU0sQ0FBQyxHQUFELENBQW5CLENBQVosSUFDSyxDQUFBLFVBQVUsQ0FBRyxJQUFiLENBQ1osQ0FDUixDQUNSLENBQ0QsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsVUFBckIsRUFDUCxDQWhERCxDQWtEQSxNQUFNLENBQUMsV0FBUCxDQUFxQixXQUFyQixDQUVBO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUF6UTJQLENBMFFqUCwrREFDRixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBMkIsVUFDM0IsQ0FDUSxHQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsR0FBeUMsU0FBekMsRUFBc0QsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixFQUF3QyxNQUF4QyxDQUErQyxDQUFyRyxFQUEwRyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsSUFBcEksRUFBNEksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLFNBQTFLLENBQ0EsQ0FDRSxvQkFBb0IsQ0FBQyxtQkFBckIsQ0FBeUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFuRCxDQUEyRCxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXJFLENBQW9GLElBQXBGLENBQXlGLENBQUMsU0FBVSxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLENBQVgsQ0FBekYsRUFBOEksSUFBOUksQ0FBbUosU0FBUyxJQUFULENBQWUsQ0FFdkosR0FBSSxNQUFNLENBQUMsUUFBUCxHQUFrQixTQUF0QixDQUFpQyxNQUFNLENBQUMsUUFBUCxDQUFrQixDQUFDLEVBQUQsQ0FBbEIsQ0FDakMsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsRUFBcUIsQ0FBekIsQ0FBNEIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixFQUEwQyxJQUFJLENBQUMsSUFBTCxDQUFVLENBQVYsQ0FBMUMsQ0FBNUIsSUFDSyxDQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsRUFBMEMsSUFBSSxDQUFDLElBQS9DLENBQ0wsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUFyQixFQUNBLHlCQUF5QixDQUFDLFNBQTFCLENBQW9DLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBOUMsQ0FBNkQsTUFBTSxDQUFDLGFBQXBFLEVBQ0E7QUFDQTtBQUNOLENBVEwsQ0FTTSxTQUFTLEtBQVQsQ0FBZSxDQUNqQixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDSCxDQVhELEVBWUQsQ0FDUixDQWpCRCxDQW1CSixNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLGlCQUEvQixDQUFrRCxLQUFsRCxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsT0FBL0IsQ0FBeUMsRUFBekMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLFFBQS9CLENBQXdDLEVBQXhDLENBR0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixrQkFBL0IsQ0FBb0QsU0FBUyxJQUFULENBQWUsUUFBZixDQUF3QixDQUN6RSxHQUFJLENBQUEsR0FBRyxDQUFHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsU0FBL0IsQ0FBeUMsUUFBekMsQ0FBVixDQUNBLEdBQUksR0FBRyxDQUFDLEVBQUosRUFBUSxDQUFaLENBQWMsQ0FFVCxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLFdBQS9CLENBQTJDLElBQUksQ0FBQyxXQUFXLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBckIsQ0FBNkIsS0FBOUIsQ0FBL0MsQ0FBb0YsSUFBSSxDQUFDLFdBQVcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFyQixDQUE2QixXQUE5QixDQUF4RixFQUVKLENBRUQsR0FBSSxHQUFHLENBQUMsRUFBSixFQUFRLENBQVosQ0FBYyxDQUNWLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsWUFBL0IsQ0FBNEMsSUFBSSxDQUFDLFdBQVcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFyQixDQUE2QixLQUE5QixDQUFoRCxDQUFxRixJQUFJLENBQUMsV0FBVyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXJCLENBQTZCLFdBQTlCLENBQXpGLEVBRUgsQ0FDSixDQVpBLENBYUQsNERBaFR1UCxDQWlUdFAsNkRBalRzUCxDQWtUdFAsNERBQ0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQiwyQkFBL0IsQ0FBNkQsU0FBUyxVQUFULENBQXFCLFVBQXJCLENBQWdDLFFBQWhDLENBQzdELENBQ0ssR0FBSSxDQUFBLFFBQVEsQ0FBRyxFQUFFLENBQUMsS0FBSCxFQUFmLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsRUFBbUIsSUFBbkIsRUFBMkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLFNBQTlDLEVBQTJELE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixFQUFtQixFQUFsRixDQUNHLENBQ0ksR0FBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUEvQixDQUNBLENBRUksR0FBSSxDQUFBLGVBQWUsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQWhDLENBQ0EsR0FBSSxlQUFlLEVBQUUsSUFBakIsRUFBeUIsZUFBZSxHQUFHLFNBQS9DLENBQTJELGVBQWUsQ0FBQyxDQUFoQixDQUMzRCxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0EsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLFFBQS9CLEdBQTBDLFNBQTlDLENBQXlELE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsUUFBL0IsQ0FBMEMsRUFBMUMsQ0FFekQ7QUFFQSxHQUFJLFVBQVUsRUFBRSxTQUFoQixDQUEyQixVQUFVLENBQUcsQ0FBYixDQUMzQixHQUFJLFFBQVEsRUFBRSxTQUFkLENBQXlCLFFBQVEsQ0FBRyxDQUFYLENBRTFCLEdBQUksQ0FBQSxLQUFLLENBQUcsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUFaLENBQ0EsR0FBSSxLQUFLLEVBQUUsU0FBWCxDQUFzQixLQUFLLENBQUcsRUFBUixDQUN0QixHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsaUJBQS9CLEdBQXFELElBQXJELEVBQTZELEtBQUssQ0FBQyxNQUFOLEdBQWUsQ0FBaEYsQ0FDQSxDQUVRLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsT0FBL0IsQ0FBdUMsT0FBdkMsQ0FBK0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixVQUE5RSxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsT0FBL0IsQ0FBdUMsUUFBdkMsQ0FBa0QsUUFBbEQsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLE9BQS9CLENBQXVDLEtBQXZDLENBQWtELE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsUUFBL0IsQ0FBd0MsTUFBMUYsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLE9BQS9CLENBQXVDLGFBQXZDLENBQXVELElBQUksQ0FBQyxJQUFMLENBQVUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixPQUEvQixDQUF1QyxLQUF2QyxDQUE2QyxRQUF2RCxDQUF2RCxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsT0FBL0IsQ0FBdUMsT0FBdkMsQ0FBaUQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixRQUEvQixDQUF3QyxLQUF4QyxDQUErQyxDQUFDLFVBQVUsQ0FBRSxDQUFiLEVBQWtCLFFBQWpFLENBQTJFLFVBQVUsQ0FBRyxRQUF4RixDQUFqRCxDQUVBLFFBQVEsQ0FBQyxPQUFULENBQWlCLENBQUMsSUFBSSxDQUFFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsT0FBdEMsQ0FBakIsRUFDUCxDQVZELElBWUEsQ0FDSyxHQUFJLEtBQUssRUFBRSxDQUFDLEVBQUQsQ0FBWCxDQUNBLENBQ0csb0JBQW9CLENBQUMsMkJBQXJCLENBQWlELE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBM0QsQ0FBbUUsQ0FBQyxNQUFNLENBQUUsS0FBVCxDQUFuRSxDQUFtRixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBbkYsRUFBd0gsSUFBeEgsQ0FBNkgsU0FBUyxJQUFULENBQWUsQ0FFdkksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixpQkFBL0IsQ0FBbUQsSUFBbkQsQ0FFQSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLE9BQS9CLENBQXVDLE9BQXZDLENBQWlELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFqRCxDQUVBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsT0FBL0IsQ0FBdUMsUUFBdkMsQ0FBa0QsUUFBbEQsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLFFBQS9CLENBQTBDLElBQUksQ0FBQyxJQUEvQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsT0FBL0IsQ0FBdUMsS0FBdkMsQ0FBa0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixRQUEvQixDQUF3QyxNQUExRixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsT0FBL0IsQ0FBdUMsYUFBdkMsQ0FBdUQsSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLE9BQS9CLENBQXVDLEtBQXZDLENBQTZDLFFBQXZELENBQXZELENBQ0EsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLFFBQW5DLENBQ0ksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixPQUEvQixDQUF1QyxPQUF2QyxDQUFpRCxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLFFBQS9CLENBQXdDLEtBQXhDLENBQStDLENBQUMsVUFBVSxDQUFFLENBQWIsRUFBa0IsUUFBakUsQ0FBMkUsVUFBVSxDQUFHLFFBQXhGLENBQWpELENBREosSUFHSSxDQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsT0FBL0IsQ0FBeUMsRUFBekMsQ0FFSixRQUFRLENBQUMsT0FBVCxDQUFpQixDQUFDLElBQUksQ0FBRSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLE9BQXRDLENBQWpCLEVBRUMsQ0FqQk4sQ0FpQk8sU0FBUyxLQUFULENBQWUsQ0FDYixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDUCxDQW5CRixFQW9CRixDQUNKLENBQ0osQ0FFUixDQXhEQSxJQTBERCxDQUVJLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixZQUFyQixDQUFrQyxrQ0FBbEMsQ0FBcUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFlBQXRILENBQW1JLE1BQW5JLEVBQ0EsUUFBUSxDQUFDLE9BQVQsQ0FBaUIsQ0FBQyxJQUFJLENBQUUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixPQUF0QyxDQUFqQixFQUNILENBRUEsTUFBTyxDQUFBLFFBQVEsQ0FBQyxPQUFoQixDQUNKLENBcEVELENBc0VFO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUVRLE1BQU0sQ0FBQyxNQUFQLENBQWMsQ0FDTSxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sTUFBTSxDQUFDLFFBQWIsQ0FBc0IsSUFBSSxDQUFDLFVBQTNCLENBQXNDLElBQUksQ0FBQyxxQkFBM0MsQ0FETixDQUVNLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxNQUFNLENBQUMsV0FBYixDQUF5QixJQUFJLENBQUMsY0FBOUIsQ0FBNkMsSUFBSSxDQUFDLGNBQWxELENBRk4sQ0FBZCxDQUtBLEdBQUksTUFBTSxDQUFDLEVBQVAsRUFBVyxTQUFmLENBQTBCLENBQ2hCLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLEVBQWtCLFNBQXRCLENBQ0EsQ0FDRSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsTUFBTSxDQUFDLE1BQVAsQ0FBYyxDQUFkLENBQWpCLENBQW1DO0FBQ3BDLENBQ1YsQ0FFSixNQUFNLENBQUMsa0JBQVAsQ0FBNEIsU0FBUyxLQUFULENBQWdCLENBRTNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixNQUFNLENBQUMsTUFBUCxDQUFjLEtBQWQsQ0FBakIsQ0FDc0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLEtBQWpCLENBQXlCLENBQUUsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUFGLENBQXpCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLEtBQWpCLENBQ3RCLENBTEQsQ0FRRyxNQUFNLENBQUMsYUFBUCxDQUFxQixXQUFXLENBQUMsZUFBakMsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLG1CQUFWLENBQWdDLENBQUMsV0FBVyxDQUFDLG1CQUFiLENBQWlDLEtBQUssQ0FBQyxTQUF2QyxDQUFpRCxJQUFJLENBQUMsVUFBdEQsQ0FBaUUsZUFBZSxDQUFDLFFBQWpGLENBQ3hCLFNBQVMsQ0FBQyxLQURjLENBQ1IsV0FBVyxDQUFDLElBREosQ0FDUyxZQUFZLENBQUMsUUFEdEIsQ0FDK0IsYUFBYSxDQUFDLHFCQUQ3QyxDQUNtRSxNQUFNLENBQUMsSUFEMUUsQ0FBaEMsQ0FJQSxNQUFNLENBQUMsRUFBUCxDQUFVLHFCQUFWLENBQWtDLENBQUMsV0FBVyxDQUFDLGdCQUFiLENBQThCLEtBQUssQ0FBQyxrQkFBcEMsQ0FBdUQsSUFBSSxDQUFDLE9BQTVELENBQW9FLGVBQWUsQ0FBQyxRQUFwRixDQUMxQixTQUFTLENBQUMsS0FEZ0IsQ0FDVixXQUFXLENBQUMsSUFERixDQUNPLFlBQVksQ0FBQyxRQURwQixDQUM2QixhQUFhLENBQUMscUJBRDNDLENBQ2lFLE1BQU0sQ0FBQyxJQUR4RSxDQUFsQyxDQUlBLEdBQUksQ0FBQSxJQUFJLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUMsQ0FFQSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLGtCQUEvQixDQUFvRCxLQUFwRCxDQUVKLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0Isa0JBQS9CLENBQWtELEtBQWxELENBQ0EsTUFBTSxDQUFDLE1BQVAsQ0FBYyxDQUFkLENBRUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixRQUEvQixDQUEwQyxLQUExQyxDQUVBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsV0FBL0IsQ0FBNEMsRUFBNUMsQ0FHQSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTZCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBdkMsQ0FFTCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixFQUFxQixTQUF6QixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsRUFBcEIsQ0FFaEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUE2QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXZDLENBQ0EsR0FBSSxNQUFNLENBQUMsa0JBQVAsRUFBMkIsU0FBL0IsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxNQUFQLENBQWMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBQXhDLENBQ0EsTUFBTSxDQUFDLGFBQVAsQ0FBd0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFlBQWxELENBQ0EsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFNBQTFDLENBQ0EsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFdBQTdDLENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGdCQUFsRCxDQUNBLE1BQU0sQ0FBQyxhQUFQLENBQXVCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUFqRCxDQUNBLE1BQU0sQ0FBQyxjQUFQLENBQXdCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUFsRCxDQUlELENBRUQsR0FBSSxNQUFNLENBQUMsTUFBUCxFQUFlLFNBQW5CLENBQThCLE1BQU0sQ0FBQyxNQUFQLENBQWMsQ0FBZCxDQUM3QixNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBeUIsVUFBekIsQ0FFQyxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLGlCQUEvQixDQUFtRCxDQUN2RCxFQUFFLENBQUUsR0FEbUQsQ0FFdkQsSUFBSSxDQUFFLE1BRmlELENBR3ZELE9BQU8sQ0FBRSxFQUg4QyxDQUluRCxJQUFJLENBQUMsRUFKOEMsQ0FBbkQsQ0FNRixHQUFLLE1BQU0sQ0FBQyxjQUFQLEVBQXVCLFNBQTVCLENBQXVDLE1BQU0sQ0FBQyxjQUFQLENBQXNCLEtBQXRCLENBRXZDLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBMkIsQ0FBM0IsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxjQUFQLEVBQXVCLFNBQTNCLENBQ0QsQ0FDQyxNQUFNLENBQUMsY0FBUCxDQUF1QixDQUF2QixDQUVBLENBQ0QsR0FBSSxNQUFNLENBQUMsYUFBUCxFQUFzQixTQUExQixDQUNBLENBQ0MsTUFBTSxDQUFDLGFBQVAsQ0FBc0IsQ0FBdEIsQ0FFQSxDQUNBLEdBQUksTUFBTSxDQUFDLGFBQVAsRUFBc0IsU0FBMUIsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxhQUFQLENBQXNCLENBQXRCLENBQ0QsQ0FDRDtBQUNSO0FBQ0E7QUFDQSxXQUdVLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUF3QixFQUF4QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBNkIsQ0FBN0IsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTZCLENBQTdCLENBQ0E7QUFFTjtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUE1ZjJQLENBNmZuUDtBQUNBO0FBQ047QUFDSyxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLFlBQS9CLENBQThDLFNBQVMsWUFBVCxDQUFzQixNQUF0QixDQUErQixDQUNqRixHQUFNLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDLENBQ1MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLEtBQXhCLENBQ0E7QUFFQTtBQUVBLG9CQUFvQixDQUFDLDhCQUFyQixDQUFvRCxJQUFwRCxDQUF5RCxZQUF6RCxDQUFzRSxNQUF0RSxDQUE2RSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUF2RixFQUF5RyxJQUF6RyxDQUNMLFNBQVMsSUFBVCxDQUFlLENBRVYsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQTBCLElBQUksQ0FBQyxJQUEvQixDQUVnQixHQUFJLENBQUMsS0FBSyxDQUFDLE9BQU4sQ0FBYyxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQXhCLENBQUwsQ0FBK0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLEVBQXhCLENBRS9DLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLElBQXZCLENBQ0EsQ0FDTyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBdUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFqQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBK0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLE1BQXZELENBQ0E7QUFDQyxHQUFJLENBQUEsR0FBRyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUF3QixHQUF4QixDQUE0QixTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsRUFBVCxDQUFjLENBQXhELEVBQTBELE9BQTFELENBQWtFLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBNUUsQ0FBVixDQUVELEdBQUksR0FBRyxFQUFFLENBQVQsQ0FBVyxDQUNQLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBMkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLEdBQXhCLENBQTNCLENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUE2QixJQUE3QixDQUNILENBRVAsQ0FHdEIsR0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsZUFBckMsQ0FBd0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixxQkFBL0IsR0FFbkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLElBQXhCLENBRU4sQ0EzQlYsQ0EyQlcsU0FBUyxLQUFULENBQWUsQ0FDTixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDcEIsQ0E3QkEsRUE4QkosQ0FyQ0QsQ0F1Q0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixxQkFBL0IsQ0FBcUQsVUFDcEQsQ0FDSSxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsR0FBZ0MsU0FBcEMsQ0FDQSxDQUNJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsZUFBL0IsQ0FBK0MsS0FBL0MsQ0FDQSxvQkFBb0IsQ0FBQyw2QkFBckIsQ0FBbUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUE3RCxDQUFxRSxNQUFyRSxFQUE2RSxJQUE3RSxDQUNJLFNBQVUsSUFBVixDQUFnQixDQUNaLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixHQUFnQyxTQUFwQyxDQUNBLDJCQUNRLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IscUJBQS9CLENBQXVELElBQUksQ0FBQyxJQUE1RCxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsZUFBL0IsQ0FBK0MsSUFBL0MsQ0FDRCxHQUFJLE1BQU0sQ0FBQyxjQUFQLEVBQXlCLHdCQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixzRUFBcUIsVUFBckIsR0FBaUMsU0FBOUQsQ0FFQyxDQUNJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsaUJBQS9CLENBQW1ELElBQW5ELENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixzQkFBL0IsQ0FBd0QsSUFBeEQsQ0FFSCxDQUNGLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG1CQUFyQixFQUEwQyxTQUE5QyxDQUF5RCxDQUNwRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsRUFBNEIsQ0FBaEMsQ0FBbUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQTJCLElBQTNCLENBQ25DLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0Isd0JBQS9CLENBQXdELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixtQkFBN0UsQ0FBaUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUEzRyxFQUNILENBQ1IsQ0FmRCxJQWVNLENBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsd0JBQXdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBOUQsQ0FBc0UsT0FBdEUsRUFFTixDQW5CUixDQW1CUyxTQUFTLEtBQVQsQ0FBZSxDQUNGLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNyQixDQXJCRCxFQXNCSCxDQXpCRCxJQXlCTSxDQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLHVCQUF1QixNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLENBQW5ELENBQWtGLE9BQWxGLEVBQ1QsQ0E1QkYsQ0ErQkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSwwQkFBVixDQUFxQyxLQUFyQyxDQUlBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsUUFBL0IsQ0FBMEMsU0FBUyxFQUFULENBQzFDLENBQ0ksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQix3QkFBL0IsQ0FBd0QsRUFBeEQsQ0FBMkQsSUFBM0QsRUFFSCxDQUpELENBTUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixjQUEvQixDQUFnRCxTQUFTLEVBQVQsQ0FDaEQsQ0FBSSxHQUFJLENBQUEsZ0JBQUosQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBZCxDQUE4QixnQkFBZ0IsQ0FBRyxLQUFuQixDQUE5QixJQUNLLENBQUEsZ0JBQWdCLENBQUcsSUFBbkIsQ0FDTCxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLHdCQUEvQixDQUF3RCxFQUF4RCxDQUEyRCxnQkFBM0QsRUFFSCxDQU5ELENBT04sK0ZBdmxCeVAsQ0F3bEJuUCwrRkF4bEJtUCxDQXlsQm5QLCtGQUVBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0Isd0JBQS9CLENBQTBELFNBQVMsRUFBVCxDQUFZLGdCQUFaLENBQzFELENBRUksR0FBSSxDQUFBLEdBQUosQ0FDQSxHQUFJLENBQUEsY0FBYyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixtQkFBMUMsQ0FFQSxHQUFHLENBQUcsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixxQkFBL0IsQ0FBcUQsR0FBckQsQ0FBeUQsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUFyRixFQUF1RixPQUF2RixDQUErRixFQUEvRixDQUFOLENBRUEsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFXLENBQ1AsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixpQkFBL0IsQ0FBbUQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixxQkFBL0IsQ0FBcUQsR0FBckQsQ0FBbkQsQ0FDQSxHQUFJLGdCQUFKLENBQXVCLGdHQUVuQixHQUFJLHdCQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixzRUFBeUIsTUFBekIsSUFBa0MsU0FBbEMsRUFBK0MseUJBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLHdFQUF5QixNQUF6QixJQUFrQyxJQUFqRixFQUF5Rix5QkFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsZ0dBQXlCLE1BQXpCLHdFQUFpQyxNQUFqQyxFQUF3QyxDQUFySSxDQUF3SSxDQUNoSTtBQUNBO0FBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXVCLElBQXZCLENBQ0wsQ0FKSCxJQUtFLENBRU0sTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLEVBQXhCLENBRUEsb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLEVBQTlDLEVBQWtELElBQWxELENBQXVELFNBQVUsSUFBVixDQUFnQixDQUMvRCxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsTUFBeEIsQ0FBaUMsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUEzQyxDQUNBO0FBQ0E7QUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBdUIsSUFBdkIsQ0FDSCxDQUxMLENBS00sU0FBUyxLQUFULENBQWUsQ0FDZixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsSUFBckIsQ0FDTCxDQVJELEVBV1AsQ0FDSixDQXZCRCxJQXVCTSxDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixJQUFyQixDQUVULENBM0JELElBMkJNLENBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLElBQXJCLENBQ1QsQ0FwQ0QsQ0F1Q0M7QUFDQztBQUNMO0FBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLENBQXFCLFNBQVMsTUFBVCxDQUFrQixDQUN0QyxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ00sb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLElBQTlDLENBQW1ELE1BQW5ELEVBQTJELElBQTNELENBQWdFLFNBQVMsSUFBVCxDQUFlLENBRTlFLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBVixDQUFxQixJQUFJLENBQUMsSUFBMUIsQ0FHQSxDQUxELENBS0UsU0FBUyxLQUFULENBQWUsQ0FDRyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDcEIsQ0FQQSxFQVFELENBVk4sQ0FZRztBQUVBO0FBQ0k7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUdTLE1BQU0sQ0FBQyxFQUFQLENBQVUsbUJBQVYsQ0FBZ0MsU0FBUyxHQUFULENBQWEsQ0FFdEIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixFQUF3QyxHQUF4QyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0Isc0JBQS9CLENBQXdELEdBQXhELENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQix3QkFBL0IsQ0FBMEQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsV0FBL0IsQ0FBMkMsS0FBNUMsQ0FBN0QsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLGdCQUEvQixDQUFnRCxHQUFHLENBQUMsVUFBcEQsQ0FDQTtBQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsMEJBQVYsQ0FBcUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixFQUF3QyxNQUE3RSxDQUVBLHlCQUF5QixDQUFDLE9BQTFCLENBQWtDLENBQ2xDLEdBQUcsQ0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFOLENBQTRCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQU4sQ0FBbUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBbkMsQ0FBRCxDQUE2QyxDQUFDLElBQUksQ0FBQyxrQkFBTixDQUF5QixLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQix3QkFBOUQsQ0FBN0MsQ0FDeEMsQ0FBQyxJQUFJLENBQUMsbUJBQU4sQ0FBMEIsS0FBSyxDQUFDLEdBQWhDLENBRHdDLENBQ0gsQ0FBQyxJQUFJLENBQUMsb0JBQU4sQ0FBMkIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsV0FBL0IsQ0FBMkMsSUFBNUUsQ0FERyxDQUFsQyxDQUFELENBRDZCLENBR2xDLFFBQVEsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBSGMsQ0FHQyxlQUFlLENBQUMsTUFBTSxDQUFDLGFBSHhCLENBQWxDLEVBS3ZCLENBZEEsQ0FnQkQsaUNBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixpQkFBL0IsQ0FBbUQsVUFDbkQsQ0FDTSxHQUFJLENBQUEsSUFBSSxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDLENBQ0EsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLHNCQUEvQixDQUFzRCxDQUF0RCxFQUEyRCxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLGdCQUE5RixDQUNBLENBRUEsb0JBQW9CLENBQUMsdUJBQXJCLENBQTZDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBdkQsQ0FBc0UsTUFBTSxDQUFDLG1CQUE3RSxDQUFpRyxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLHNCQUFoSSxDQUF1SixNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLHdCQUF0TCxFQUFnTixJQUFoTixDQUFxTixTQUFTLElBQVQsQ0FBZSxDQUM1TixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsSUFBakMsQ0FBc0MsU0FBdEMsRUFDQyxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLFFBQS9CLENBQXdDLE1BQXhDLENBQStDLENBQS9DLENBQ0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixnQkFBL0IsQ0FBa0QsS0FBbEQsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLHdCQUEvQixHQUVMLENBTkgsQ0FNSSxTQUFTLEtBQVQsQ0FBZSxDQUNiLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxJQUFsQyxDQUF1QyxPQUF2QyxFQUNpQixDQVJ2QixFQVNELENBQ0osQ0FoQkQsQ0FpQkE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFFUSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLHdCQUEvQixDQUEwRCxVQUMxRCxDQUNNLEdBQUksQ0FBQSxJQUFJLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0Isc0JBQS9CLENBQXNELENBQTFELENBQ0EsQ0FDRSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLGlCQUEvQixDQUFtRCxLQUFuRCxDQUNBO0FBQ0Esb0JBQW9CLENBQUMsa0JBQXJCLENBQXdDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBbEQsQ0FBaUUsTUFBTSxDQUFDLG1CQUF4RSxDQUE0RixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRHLENBQThHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0Isc0JBQTdJLENBQW9LLE1BQU0sQ0FBQyxNQUEzSyxDQUFrTCxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQTVMLENBQW1NLElBQW5NLEVBQXlNLElBQXpNLENBQThNLFNBQVMsSUFBVCxDQUFlLENBQ2pOLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsRUFBMEMsSUFBMUMsQ0FDRDtBQUNDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsWUFBL0IsQ0FBNEMsSUFBNUMsRUFFWCxDQUxELENBS0UsU0FBUyxLQUFULENBQWUsQ0FDYixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDaUIsQ0FQckIsRUFRSCxDQUNKLENBaEJELENBbUJBLE1BQU0sQ0FBQyxjQUFQLENBQXdCLENBQXhCLENBRUEsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsRUFBa0IsU0FBdEIsQ0FBaUMsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLFFBQXpDLENBRWpDLEdBQUksQ0FBQSwwQkFBMEIsQ0FBQyxRQUEzQixDQUFBLDBCQUEyQixDQUFTLElBQVQsQ0FDL0IsQ0FDUSxNQUFNLENBQUMsRUFBUCxDQUFVLHNCQUFWLENBQWlDLEVBQWpDLENBQW9DLElBQXBDLENBQXlDLE1BQU0sQ0FBQyxLQUFoRCxFQUNQLENBSEQsQ0FNQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBa0MsRUFBbEMsQ0FHQSxNQUFNLENBQUMsRUFBUCxDQUFVLHNCQUFWLENBQW1DLFNBQVMsTUFBVCxDQUFnQixLQUFoQixDQUFzQixHQUF0QixDQUMvQixnREFDUjtBQUNVLEdBQUksQ0FBQSxJQUFJLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUMsQ0FDQTtBQUNDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLElBQTFCLEVBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixTQUE1RCxFQUF5RSx1QkFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsb0VBQXFCLEVBQXJCLEdBQXlCLFNBQWxHLEVBQStHLHdCQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixzRUFBcUIsSUFBckIsR0FBMkIsU0FBOUksQ0FDQyxDQUNRLEdBQUksQ0FBQSxJQUFJLENBQUcsSUFBWCxDQUNBLEtBQUssT0FBTCxDQUFlLEtBQWYsQ0FDQSxLQUFLLEtBQUwsQ0FBYSxHQUFiLENBQ0EsR0FBSSxDQUFBLFNBQVMsQ0FBQyxJQUFkLENBRUw7QUFDQSxvQkFBb0IsQ0FBQyxzQkFBckIsQ0FBNEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0RCxDQUE4RCxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXhFLENBQXVGLElBQXZGLENBQTRGLFNBQTVGLENBQXNHLDBCQUF0RyxDQUFpSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTNJLEVBQXNKLElBQXRKLENBQTJKLFNBQVMsSUFBVCxDQUFlLENBRWxLLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsR0FBakIsRUFBc0IsU0FBdEIsRUFBbUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsR0FBakIsRUFBc0IsSUFBN0QsQ0FDQSxDQUNLLEdBQUksS0FBSyxDQUFDLE9BQU4sQ0FBYyxNQUFNLENBQUMsUUFBckIsQ0FBSixDQUNBLENBQ0csR0FBSSxLQUFLLENBQUMsT0FBTixDQUFjLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsQ0FBZCxDQUFKLENBQ0ssSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixFQUF3QyxNQUF2RCxDQUE4RCxDQUFDLEVBQS9ELENBQ0EsQ0FDUSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixFQUFxQixDQUF6QixDQUE0QixNQUFNLENBQUMsU0FBUCxDQUFpQixHQUFqQixDQUFxQixDQUFDLEtBQUssTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixFQUF3QyxDQUF4QyxDQUFOLENBQXJCLENBQTVCLElBR0EsQ0FDUSxNQUFNLENBQUMsU0FBUCxDQUFpQixHQUFqQixDQUF1QixFQUF2QixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLEdBQWpCLENBQXFCLElBQXJCLENBQTJCLENBQUMsS0FBSyxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQXdDLENBQXhDLENBQU4sQ0FBM0IsRUFFUCxDQUNSLENBQ1IsQ0FFTCxDQUVELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFkLENBQ0EsQ0FDSyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBbUMsT0FBTyxDQUFDLElBQVIsQ0FBYSxJQUFJLENBQUMsSUFBbEIsQ0FBbkMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFpQyxNQUFqQyxDQUF3QyxDQUE1QyxDQUNBLENBQ0k7QUFFQTtBQUNBLEdBQUksTUFBTyxDQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsQ0FBUCxFQUFpRCxRQUFyRCxDQUNBLENBQ0csR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBaUMsR0FBakMsQ0FBcUMsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUFqRSxFQUFtRSxPQUFuRSxDQUEyRSxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLENBQTNFLENBQVYsQ0FFQyxHQUFJLEdBQUcsRUFBRSxDQUFULENBQVksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixFQUEwQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBaUMsR0FBakMsQ0FBMUMsQ0FFWixHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBZCxDQUF3QixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUFyQixFQUUzQixDQUNKLENBRUwsQ0FuQkQsSUFxQkEsQ0FDSyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isa0JBQXBCLENBQXlDLE9BQU8sQ0FBQyxJQUFSLENBQWEsSUFBSSxDQUFDLElBQWxCLENBQXpDLENBQ0E7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FDNEIsQ0FDRCxRQUFRLENBQUMsVUFBVSxDQUNkO0FBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQXNCLElBQXRCLENBQ0E7QUFFSixDQUxPLENBQVIsQ0FNTixDQTFERixDQTBERyxTQUFTLEtBQVQsQ0FBZSxDQUNqQixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDVixDQTVEUyxFQThERixDQUNKLENBNUVMLENBZ0ZFLG9GQUVGLE1BQU0sQ0FBQyxFQUFQLENBQVUsb0JBQVYsQ0FBaUMsU0FBUyxNQUFULENBQWdCLFVBQWhCLENBQTJCLENBRXpEO0FBQ0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFWLENBQTBCLFVBQTFCLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsSUFBNUIsQ0FDQSxHQUFJLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxvQkFBZixDQUNBLENBQ0ksR0FBSyxNQUFNLEVBQUUsU0FBUixFQUFxQixNQUFNLEVBQUUsSUFBN0IsRUFBcUMsTUFBTSxFQUFFLENBQWxELENBQXFELGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLCtEQUE1QixDQUE0RixPQUE1RixFQUFyRCxJQUVBLENBQ0ksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsU0FBakIsQ0FBMkIsTUFBM0IsQ0FBa0MsQ0FBbEMsQ0FBb0MsQ0FBcEMsRUFDQTtBQUNBO0FBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxvQkFBVixDQUErQixJQUEvQixDQUVILENBQ0osQ0FDSixDQWxCRCxDQXFCQSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLFlBQS9CLENBQThDLFNBQVMsTUFBVCxDQUFnQixRQUFoQixDQUF5QixDQUMvRCxvQkFBb0IsQ0FBQyxZQUFyQixDQUFrQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTVDLENBQW9ELE1BQXBELEVBQTRELElBQTVELENBQWlFLFNBQVMsSUFBVCxDQUFlLENBRTVELGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLFFBQVEsUUFBUixDQUFpQixhQUE3QyxDQUEyRCxNQUEzRCxFQUNBLEdBQUksQ0FBQSxHQUFHLENBQUcsR0FBRyxDQUFDLGVBQUosQ0FBb0IsR0FBSSxDQUFBLElBQUosQ0FBUyxDQUFDLElBQUksQ0FBQyxJQUFOLENBQVQsQ0FBcEIsQ0FBVixDQUNBLEdBQUksQ0FBQSxDQUFDLENBQUcsUUFBUSxDQUFDLGFBQVQsQ0FBdUIsR0FBdkIsQ0FBUixDQUNBLENBQUMsQ0FBQyxJQUFGLENBQVMsR0FBVCxDQUNBLENBQUMsQ0FBQyxRQUFGLENBQWEsUUFBYixDQUNBLENBQUMsQ0FBQyxNQUFGLENBQVcsUUFBWCxDQUNBLENBQUMsQ0FBQyxLQUFGLEdBQ0gsQ0FUakIsQ0FTa0IsU0FBUyxLQUFULENBQWUsQ0FDakIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBR0YsQ0FiZCxFQWNULENBZkMsQ0FlQTtBQUdELE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsV0FBL0IsQ0FBNkMsU0FBUyxNQUFULENBQWdCLFFBQWhCLENBQXlCLFFBQXpCLENBQWtDLENBRTFFLG9CQUFvQixDQUFDLFlBQXJCLENBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBNUMsQ0FBb0QsTUFBcEQsRUFBNEQsSUFBNUQsQ0FBaUUsU0FBUyxJQUFULENBQWUsQ0FFeEQsR0FBSSxDQUFBLEdBQUcsQ0FBRyxHQUFHLENBQUMsZUFBSixDQUFvQixHQUFJLENBQUEsSUFBSixDQUFTLENBQUMsSUFBSSxDQUFDLElBQU4sQ0FBVCxDQUFxQixDQUFDLElBQUksQ0FBQyxRQUFOLENBQXJCLENBQXBCLENBQVYsQ0FDQSxHQUFJLENBQUEsT0FBTyxDQUFHLE1BQU0sQ0FBQyxJQUFQLENBQVksR0FBWixDQUFnQixRQUFoQixDQUFkLENBRUgsQ0FMckIsQ0FLc0IsU0FBUyxLQUFULENBQWUsQ0FDakIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBR0YsQ0FUbEIsRUFVTCxDQVpBLENBWUM7QUFHRTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQXg0QjJQLENBMjRCalA7QUFDVjtBQUNBLFlBR1UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFWLENBQTRCLElBQTVCLENBQ0EsR0FBSSxDQUFBLE9BQU8sQ0FBQyxDQUFaLENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUE2QixVQUFVLENBRXJDLEdBQUksQ0FBQSxLQUFLLENBQUMsRUFBVixDQUNBLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixXQUEvQixDQUEyQyxJQUEzQyxFQUFpRCxTQUFyRCxDQUNBLENBQ0UsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixXQUEvQixDQUEyQyxJQUEzQyxDQUFnRCxNQUEvRCxDQUFzRSxDQUFDLEVBQXZFLENBQ0EsQ0FHQyxLQUFLLENBQUMsSUFBTixDQUFXLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsV0FBL0IsQ0FBMkMsSUFBM0MsQ0FBZ0QsQ0FBaEQsRUFBbUQsRUFBOUQsRUFFQSxDQUNGLENBQ0Q7QUFDQSxHQUFJLENBQUEsVUFBVSxDQUFHLHFCQUFqQixDQUNBLEdBQUksTUFBTSxDQUFDLGNBQVAsRUFBdUIsU0FBM0IsQ0FBc0M7QUFDdEMsQ0FDQyxHQUFJLENBQUEsSUFBSSxDQUFHLHlCQUF5QixDQUFDLHFCQUExQixDQUFnRCxNQUFNLENBQUMsY0FBdkQsQ0FBc0UsVUFBdEUsQ0FBWCxDQUNBO0FBQ0EsR0FBSSxDQUFBLFVBQVUsQ0FBQyxFQUFmLENBQ0EsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQXBCLENBQTJCLENBQUMsRUFBNUIsQ0FBZ0MsQ0FDN0IsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsRUFBd0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUF0QyxDQUNBLENBQ0csR0FBSSxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsSUFBUixFQUFjLG9CQUFsQixDQUF3QyxVQUFVLENBQUcsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLEtBQXJCLENBQzFDLENBSEQsSUFJSSxDQUNDLEdBQUksSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLElBQVIsRUFBYyxtQkFBbEIsQ0FBdUMsVUFBVSxDQUFHLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxLQUFyQixDQUE0QjtBQUNyRSxDQUNKLENBR0YsR0FBSSxVQUFVLEVBQUUsSUFBaEIsQ0FDQSxDQUNFLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUExQixDQUFpQyxDQUFDLEVBQWxDLENBQ0EsQ0FFSSxHQUFJLENBQUEsR0FBRyxDQUFHLEtBQUssQ0FBQyxHQUFOLENBQVUsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBUCxDQUFXLENBQW5DLEVBQXFDLE9BQXJDLENBQTZDLFVBQVUsQ0FBQyxDQUFELENBQVYsQ0FBYyxFQUEzRCxDQUFWLENBRUEsR0FBSSxHQUFHLENBQUMsQ0FBUixDQUFXLEtBQUssQ0FBQyxJQUFOLENBQVcsVUFBVSxDQUFDLENBQUQsQ0FBVixDQUFjLEVBQXpCLEVBQ2IsQ0FFRixDQUNGLENBQ0QsR0FBSSxNQUFNLENBQUMsUUFBUCxFQUFpQixTQUFyQixDQUNBLENBQ0UsR0FBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFoQixDQUF1QixDQUEzQixDQUE4QixNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQXdDLEtBQXhDLENBQy9CLENBRUQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLEVBQTRCLENBQWhDLENBQ0EsQ0FDRSxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsV0FBL0IsQ0FBMkMsSUFBM0MsRUFBaUQsU0FBckQsQ0FDQSxDQUNHLEdBQUksS0FBSyxDQUFDLE1BQU4sQ0FBYSxDQUFiLEVBQWtCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsV0FBL0IsQ0FBMkMsSUFBM0MsQ0FBZ0QsTUFBaEQsQ0FBdUQsS0FBSyxDQUFDLE1BQW5GLENBQ0EsQ0FDRSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixDQUFsQixFQUF1QixLQUFLLEVBQUUsQ0FBQyxFQUFELENBQWxDLENBQXdDLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBMkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFyQyxDQUE2QyxDQUFDLFNBQVMsS0FBVixDQUE3QyxFQUV6QyxDQUNILENBQ0YsQ0FFRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsRUFBNEIsQ0FBNUIsRUFBaUMsS0FBSyxDQUFDLE1BQU4sQ0FBYSxDQUFsRCxDQUFxRCxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsR0FFckQ7QUFHQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixLQUE1QixDQUNELENBbEVELENBbUVJO0FBQ2Q7QUFDQSxpQkFFVSxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsQ0FBNEIsVUFBVSxDQUNuQyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixLQUE1QixDQUVGLENBSEQsQ0FNRDtBQUNBO0FBQ0E7QUFFQyxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBMEIsVUFBVSxDQUdoQyxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBR0Esb0JBQW9CLENBQUMsYUFBckIsQ0FBbUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUE3QyxDQUFxRCxJQUFyRCxFQUEyRCxJQUEzRCxDQUFnRSxTQUFTLElBQVQsQ0FBZSxDQUUzRCxNQUFNLENBQUMsRUFBUCxDQUFVLG9CQUFWLENBQWdDLElBQUksQ0FBQyxJQUFyQyxDQUVELENBSm5CLENBSW9CLFNBQVMsS0FBVCxDQUFlLENBQ2QsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBR0wsQ0FSaEIsRUFVSCxDQWhCRCxDQW1CSDtBQUNFO0FBQ0E7QUFFRSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLGVBQS9CLENBQWlELFNBQVMsS0FBVCxDQUFlLE1BQWYsQ0FBc0IsQ0FDdEUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLE1BQWpCLENBQTBCLElBQTFCLENBQ0EsQ0FGRCxDQUdGO0FBQ0E7QUFDQTtBQUlLLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsWUFBL0IsQ0FBNkMsU0FBUyxJQUFULENBQzdDLENBQ0UsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixRQUEvQixDQUEwQyxJQUFJLENBQUMsSUFBL0MsQ0FDQSxHQUFJLENBQUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixVQUFwQyxDQUFnRCxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLFVBQS9CLENBQTRDLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixFQUF1QixZQUF2QixDQUE1QyxDQUFpRjtBQUNqSSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLGlCQUEvQixDQUFtRCxJQUFuRCxDQUNBLE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBWCxDQUF5QixjQUF6QixDQUF3QyxZQUF4QyxDQUFzRCxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLFFBQXJDLENBQXRELEVBQ0EsTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLFdBQXpCLENBQXFDLGFBQXJDLENBQW9ELENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBbEIsQ0FBMEIsU0FBUyxDQUFDLElBQXBDLENBQXBELEVBRUQsQ0FSRCxDQVdILE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsYUFBL0IsQ0FBOEMsU0FBUyxZQUFULENBQXVCLENBQ2pFO0FBQ0EsR0FBSSxDQUFBLFVBQVUsQ0FBRyxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLFVBQWhELENBRUEsR0FBSSxDQUFBLFlBQVksQ0FBRyxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLGVBQWxELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLEVBQXVCLENBQUMsYUFBYSxVQUFkLENBQXlCLGVBQWdCLFlBQXpDLENBQXZCLENBRUQsR0FBSSxZQUFKLENBQ0MsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsd0NBQTVCLENBQXFFLE1BQXJFLEVBQ1YsQ0FUTSxDQVdQLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsZ0JBQS9CLENBQWlELFVBQVcsQ0FDeEQ7QUFDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixJQUF5QixTQUF6QixFQUFzQyxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsSUFBeUIsSUFBbkUsQ0FDQSxDQUVJLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLEVBQXVCLFlBQXZCLElBQXVDLFNBQTNDLENBQXNELE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsVUFBL0IsQ0FBNkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLEVBQXVCLFlBQXZCLENBQTdDLENBQ3RELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLEVBQXVCLGNBQXZCLElBQXlDLFNBQTdDLENBQXdELE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsZUFBL0IsQ0FBa0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLEVBQXVCLGNBQXZCLENBQWxELENBRTNELENBQ0osQ0FURCxDQVdBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLElBQXlCLFNBQXpCLEVBQXNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixJQUF5QixJQUFuRSxDQUF5RSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLGdCQUEvQixHQUV6RSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLHNCQUEvQixDQUF1RCxVQUFZLENBRTNELE1BQU0sQ0FBQyxNQUFQLENBQWdCLEVBQWhCLENBQ0EsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUVEO0FBQ0Q7QUFFQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsRUFBNEIsSUFBaEMsQ0FBc0MsQ0FDcEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUErQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXpDLENBQ0QsQ0FGRCxJQUdBLENBQ0csTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUErQixNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTJCLEVBQTFELENBRUYsQ0FDUDtBQUNLLG9CQUFvQixDQUFDLHVCQUFyQixDQUE2QyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXZELENBQStELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBekUsRUFBcUYsSUFBckYsQ0FBMEYsU0FBUyxJQUFULENBQWUsQ0FBQztBQUV2RixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsSUFBcEIsRUFFTyxDQUoxQixDQUkyQixTQUFTLEtBQVQsQ0FBZSxDQUNuQixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDRixDQU5yQixFQU9BLENBdkJMLENBMEJELE1BQU0sQ0FBQyxFQUFQLENBQVUsdUJBQVYsQ0FBb0MsVUFBWSxDQUV2QyxNQUFNLENBQUMsTUFBUCxDQUFnQixFQUFoQixDQUNBLEdBQUksQ0FBQSxJQUFJLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUMsQ0FFRDtBQUNEO0FBRUEsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLEVBQTRCLElBQWhDLENBQXNDLENBQ3BDLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBK0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF6QyxDQUNELENBRkQsSUFHQSxDQUNHLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBK0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUEyQixFQUExRCxDQUVGLENBQ1Y7QUFDUSxvQkFBb0IsQ0FBQyx1QkFBckIsQ0FBNkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBdkQsQ0FBMEUsTUFBTSxDQUFDLE1BQWpGLENBQXdGLElBQXhGLENBQTZGLE1BQU0sQ0FBQyxFQUFQLENBQVUsaUJBQVYsQ0FBNEIsT0FBekgsRUFBa0ksSUFBbEksQ0FBdUksU0FBUyxJQUFULENBQWUsQ0FBQztBQUVwSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsSUFBcEIsRUFFTyxDQUoxQixDQUkyQixTQUFTLEtBQVQsQ0FBZSxDQUNuQixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDRixDQU5yQixFQU9BLENBdkJOLENBMkJLLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBVixDQUE0QixVQUNuQyxDQUNlO0FBQ0MsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUNBLG9CQUFvQixDQUFDLGVBQXJCLENBQXFDLE1BQU0sQ0FBQyxVQUE1QyxDQUF1RCxNQUFNLENBQUMsTUFBOUQsQ0FBcUUsSUFBckUsRUFBMkUsSUFBM0UsQ0FBZ0YsU0FBUyxJQUFULENBQWUsQ0FFaEQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixZQUEvQixDQUE0QyxJQUE1QyxFQUUvQyxDQUpBLENBSUMsU0FBUyxLQUFULENBQWUsQ0FDVCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDUCxDQU5BLEVBT2YsQ0FYTSxDQWFBLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixxQkFBL0IsRUFBc0QsU0FBMUQsQ0FBcUUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixxQkFBL0IsQ0FBcUQsRUFBckQsQ0FDekUsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUdBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsZ0JBQS9CLENBQWtELFNBQVMsWUFBVCxDQUFzQixlQUF0QixDQUFzQyxDQUVuRixHQUFJLGVBQWUsR0FBRyxTQUF0QixDQUFpQyxlQUFlLENBQUMsQ0FBaEIsQ0FDakMsR0FBSSxZQUFZLEdBQUcsU0FBbkIsQ0FBOEIsWUFBWSxDQUFDLENBQWIsQ0FDOUIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixnQkFBL0IsQ0FBa0QsZUFBbEQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQStCLFlBQS9CLENBQ0EsR0FBSSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsTUFBMUIsRUFBa0MsU0FBdEMsQ0FBaUQsTUFBTSxDQUFDLGtCQUFQLENBQTBCLE1BQTFCLENBQWlDLENBQWpDLENBRTlDLEdBQUksQ0FBQSxNQUFNLENBQUcsTUFBTSxDQUFDLGtCQUFQLENBQTBCLE1BQXZDLENBQ0EsR0FBSSxDQUFBLFNBQVMsQ0FBRyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZ0JBQTFDLENBQ0EsR0FBSSxDQUFBLGdCQUFnQixDQUFHLE1BQU0sQ0FBQyxhQUE5QixDQUNILEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXVCLFFBQXZCLEdBQWtDLE1BQWxDLENBQXlDLENBQXpDLENBQTJDLENBQTNDLEdBQStDLEdBQW5ELENBQ0EsQ0FDRztBQUNBLGdCQUFnQixDQUFHLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixxQkFBN0MsQ0FFRixDQUNELEdBQUksZ0JBQWdCLEVBQUUsU0FBdEIsQ0FBaUMsZ0JBQWdCLENBQUMsQ0FBakIsQ0FFaEMsZUFBZSxDQUFDLG1CQUFoQixDQUFvQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTlDLENBQXNELE1BQXRELENBQTZELE1BQU0sQ0FBQyxNQUFwRSxDQUEyRSxnQkFBM0UsQ0FBNEYsU0FBNUYsQ0FBc0csR0FBdEcsQ0FBMEcsWUFBMUcsQ0FBdUgsZUFBdkgsQ0FBdUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLHdCQUE1SixFQUFzTCxJQUF0TCxDQUEyTCxTQUFTLElBQVQsQ0FBZSxDQUVsTCxHQUFJLENBQUEsY0FBSixDQUNBLEdBQUksS0FBSyxDQUFDLE9BQU4sQ0FBYyxJQUFJLENBQUMsSUFBTCxDQUFVLElBQXhCLENBQUosQ0FDRSxDQUNFLEdBQUssSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFWLENBQWlCLENBQXRCLENBQXlCLGNBQWMsQ0FBSSxJQUFJLENBQUMsSUFBTCxDQUFVLElBQVYsQ0FBZSxDQUFmLENBQWxCLENBQXpCLElBQ0ssQ0FBQSxjQUFjLENBQUMsRUFBZixDQUNOLENBSkgsSUFLSyxDQUFBLGNBQWMsQ0FBSSxJQUFJLENBQUMsSUFBTCxDQUFVLElBQTVCLENBRUwsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixFQUEyQyxDQUFDLGNBQUQsQ0FBM0MsQ0FFRCxDQVp2QixDQVl3QixTQUFTLEtBQVQsQ0FBZSxDQUNkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUVMLENBZnBCLEVBZ0JILENBbkNILENBcUNDO0FBQ0E7QUFDQTtBQUNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBNkIsU0FBVSxnQkFBVixDQUEyQixXQUEzQixDQUF3QyxDQUVuRSxvQkFBb0IsQ0FBQywyQkFBckIsQ0FBaUQsZ0JBQWpELENBQWtFLFdBQWxFLENBQThFLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUE5RSxFQUFtSCxJQUFuSCxDQUF3SCxTQUFTLElBQVQsQ0FBZSxDQUUzRyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsRUFBNEIsQ0FBaEMsQ0FBbUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixZQUEvQixDQUE0QyxJQUE1QyxFQUFuQyxJQUNLLElBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixFQUE0QixDQUFoQyxDQUNMLENBQ0ksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBQyxFQUFELENBQWhCLENBQ0EsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixFQUF3QyxJQUF4QyxDQUNILENBQzVCO0FBQzBCLENBVDNCLENBUzRCLFNBQVMsS0FBVCxDQUFlLENBRWYsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ04sQ0FadEIsRUFhQyxDQWZILENBaUJGLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsYUFBL0IsQ0FBK0MsVUFBWSxDQUduRCxvQkFBb0IsQ0FBRSxrQkFBdEIsQ0FBeUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG1CQUE5RCxDQUFrRixTQUFsRixDQUE0RixJQUE1RixDQUFpRyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsd0JBQXRILEVBQWdKLElBQWhKLENBQXFKLFNBQVMsSUFBVCxDQUFlLENBQUM7QUFFL0ksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixVQUEvQixDQUE0QyxJQUFJLENBQUMsSUFBTCxDQUFVLFVBQXRELENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixPQUEvQixDQUF1QyxPQUF2QyxDQUFrRCxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLFVBQWpGLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixzQkFBL0IsQ0FBd0QsSUFBeEQsQ0FFQSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLGFBQS9CLENBQTZDLEtBQTdDLEVBR0MsQ0FUdkIsQ0FTd0IsU0FBUyxLQUFULENBQWUsQ0FDbkIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0YsQ0FYbEIsRUFhUCxDQWhCRCxDQWtCSyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBdUIsU0FBUyxJQUFULENBQ3ZCLENBQ0csTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLGNBQXpCLENBQXdDLGNBQXhDLENBQXdELENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUwsQ0FBWCxDQUF4RCxFQUNGLENBSEQsQ0FLRDtBQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsWUFBL0IsQ0FBOEMsU0FBUyxJQUFULENBQWMsS0FBZCxDQUU5QyxDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixJQUFyQixFQUNILENBSkQsQ0FNQTtBQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBNkIsU0FBVSxJQUFWLENBQWdCLEtBQWhCLENBQ25DLENBQ2MsR0FBSSxDQUFBLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBdkIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsQ0FBMEIsSUFBSSxDQUFDLElBQS9CLENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGFBQXJCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUE2QixJQUE3QixDQUVBO0FBQ0E7QUFDSSxHQUFJLElBQUksQ0FBQyxVQUFMLEVBQWlCLFNBQXJCLENBQWdDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixJQUFJLENBQUMsVUFBekIsQ0FDaEMsR0FBSSxJQUFJLENBQUMsT0FBTCxFQUFjLFNBQWxCLENBQTZCLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixJQUFJLENBQUMsT0FBdEIsQ0FDN0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLHNCQUFyQixDQUE0QyxJQUFJLENBQUMsVUFBakQsQ0FFQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixzQkFBckIsRUFBNkMsU0FBakQsQ0FBNEQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLHNCQUFyQixDQUE4QyxRQUFRLElBQUksQ0FBQyxNQUEzRCxDQUVoRTtBQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQTVCLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixxQkFBL0IsR0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixFQUFtQixTQUFuQixFQUFnQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsRUFBbUIsSUFBdkQsQ0FBNkQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLEdBRW5FLENBckJGLENBdUJDO0FBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxpQkFBVixDQUE4QixTQUFVLElBQVYsQ0FBZ0IsS0FBaEIsQ0FDckMsQ0FDYyxHQUFJLENBQUEsR0FBRyxDQUFHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IscUJBQS9CLENBQXFELEdBQXJELENBQXlELFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBckYsRUFBdUYsT0FBdkYsQ0FBK0YsSUFBL0YsU0FBK0YsSUFBL0YsaUJBQStGLElBQUksQ0FBRSxFQUFyRyxDQUFWLENBQ0EsR0FBSSxDQUFBLGNBQWMsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsbUJBQTFDLENBQ0EsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFXLDJCQUNQLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixtQkFBckIsQ0FBMkMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixxQkFBL0IsQ0FBcUQsR0FBckQsRUFBMEQsRUFBckcsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsaUJBQXJCLENBQXlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsSUFBVixDQUFnQixJQUFoQixDQUFxQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQS9CLENBQWtDLEdBQTNFLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLHdCQUFyQixDQUFnRCxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLHFCQUEvQixDQUFxRCxHQUFyRCxFQUEwRCxPQUExRyxDQUNBLEdBQUksd0JBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLHNFQUFxQixVQUFyQixJQUFrQyxTQUFsQyxFQUErQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsbUJBQXJCLEVBQTJDLGNBQTlGLENBQThHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsYUFBL0IsR0FBOUcsSUFDSyxDQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0Isc0JBQS9CLENBQXVELElBQXZELENBQ1IsQ0FFRCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsUUFBckIsQ0FBZ0MsVUFBaEMsQ0FJUCxDQWhCQSxDQWtCRCxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQThCLFNBQVUsSUFBVixDQUFnQixLQUFoQixDQUNwQyxDQUVhLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLEVBQWtCLFNBQXRCLENBQWlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBVixFQUFvQixDQUFDLE1BQU0sQ0FBQyxJQUFSLENBQXBCLENBQWpDLElBQ0ssQ0FBQSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsTUFBakIsQ0FBMEIsSUFBMUIsQ0FDSjtBQUdQLENBUkQsQ0FVQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixlQUFyQixFQUF3Qyx5QkFBQSxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixHQUEvQix3RUFBb0Msa0JBQXBDLEdBQXdELFNBQXBHLENBQStHLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsMEJBQTBDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLEdBQXpFLGlEQUEwQyx1QkFBb0Msa0JBQXBDLENBQXVELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixjQUE1RSxDQUExQyxDQUUvRztBQUNBLEdBQUksTUFBTSxDQUFDLFFBQVAsRUFBaUIsU0FBakIsRUFBOEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLE9BQW5ELEVBQThELENBQUMsTUFBTSxDQUFDLGNBQTFFLENBQ0EsQ0FDSSxHQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsTUFBTSxDQUFDLFFBQXJCLEdBQWtDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQWhCLENBQXVCLENBQTdELENBQ0EsQ0FDSSxHQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsR0FBeUMsU0FBekMsRUFBc0QsS0FBSyxDQUFDLE9BQU4sQ0FBYyxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLENBQWQsQ0FBMUQsQ0FDQSxDQUVJLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixFQUE0QixDQUFoQyxDQUNBLENBQ0k7QUFDQSxHQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsR0FBeUMsQ0FBQyxFQUFELENBQXpDLEVBQWlELE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixFQUF1QixXQUE1RSxDQUF5RixNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTJCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBckMsQ0FBNkMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUFELENBQVYsQ0FBN0MsRUFBekYsSUFDSyxJQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixFQUF1QixXQUEzQixDQUNMLENBQ1EsR0FBSSxDQUFBLE1BQU0sQ0FBRyxFQUFiLENBQ0EsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBWCxDQUFOLENBQThCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0Isc0JBQTdELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUEyQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXJDLENBQTZDLE1BQTdDLEVBQ1AsQ0FDSixDQVZELElBV0ssSUFBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLEVBQTRCLENBQTVCLEVBQWlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBL0MsQ0FDTCxDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsc0JBQVYsR0FBbUM7QUFDdEMsQ0FISSxJQUtBLElBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEdBQW9CLElBQXhCLENBQ0wsQ0FDSSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixrREFBNUIsQ0FBK0UsTUFBL0UsRUFDSCxDQUhJLElBSUEsSUFBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLEVBQTRCLENBQTVCLEVBQWlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBL0MsQ0FDTCxDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsc0JBQVYsR0FBa0M7QUFFckMsQ0FKSSxJQUlDLENBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQix3QkFBL0IsR0FHVCxDQTlCRCxJQStCSyxJQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsRUFBNEIsQ0FBNUIsRUFBaUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUEvQyxDQUNMLENBQ1EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxzQkFBVixHQUFrQztBQUV6QyxDQUpJLElBS0EsSUFBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLEVBQTRCLENBQTVCLEVBQWlDLE1BQU8sQ0FBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLENBQVAsRUFBaUQsUUFBdEYsQ0FDTCxDQUNRLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFzQixPQUFPLENBQUMsSUFBUixDQUFhLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsQ0FBYixDQUF0QixDQUNBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsRUFBMEMsQ0FBQyxFQUFELENBQTFDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixnQkFBL0IsQ0FBZ0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUExRCxDQUFrRSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTVFLEVBQ1AsQ0FMSSxJQU1BLENBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQix3QkFBL0IsR0FJUixDQUNKLENBRUQsR0FBSSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBOUIsQ0FDQSxDQUNJLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLHdCQUFyQixHQUFnRCxLQUFoRCxFQUF5RCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsd0JBQXJCLEdBQWdELE1BQTdHLENBQXFILE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBM0IsRUFBK0IsWUFBL0IsQ0FBNEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFlBQWpFLEVBQXJILElBQ0ssQ0FBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLHFCQUEvQixHQUNSLENBRUQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsbUJBQXJCLEVBQTBDLFNBQTlDLENBQXlELENBRXJELEdBQUksTUFBTSxDQUFDLGNBQVgsQ0FBMkIsQ0FDdkIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUEzQixFQUErQixxQkFBL0IsR0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsR0FDSCxDQUhELElBSUssSUFBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsT0FBckIsRUFBZ0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUE3QyxDQUE2RCxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQTNCLEVBQStCLHdCQUEvQixDQUF3RCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsbUJBQTdFLENBQWlHLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBM0csRUFFckUsQ0FFRCxNQUFNLENBQUMsYUFBUCxDQUF1QixTQUFTLElBQVQsQ0FBYyxRQUFkLENBQ3ZCLENBRUksY0FBYyxDQUFDLGNBQWYsQ0FBOEIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBQXhELENBQXNFLFVBQXRFLENBQWlGLElBQWpGLENBQXNGLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixNQUEzRyxDQUFrSCxNQUFNLENBQUMsR0FBekgsQ0FBNkgsUUFBN0gsRUFDSCxDQUpELENBTUE7QUFDQSxHQUFJLENBQUMsTUFBTSxDQUFDLGNBQVIsRUFBMEIsMEJBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLG1HQUFzQixNQUF0QiwwRUFBOEIsTUFBOUIsRUFBcUMsQ0FBbkUsQ0FBc0UsY0FBYyxDQUFDLGtCQUFmLENBQWtDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUE1RCxDQUEwRSxNQUFNLENBQUMsWUFBakYsQ0FBOEYsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLE1BQW5ILENBQTBILE1BQTFILENBQWlJLE1BQU0sQ0FBQyxHQUF4SSxFQUV0RSxHQUFJLENBQUEsUUFBSixDQUNBLEdBQUksTUFBTSxDQUFDLGNBQVgsQ0FBMkIsUUFBUSxDQUFHLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHNDQUFuQixDQUFYLENBQTNCLElBRUksQ0FDSSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixZQUFyQixFQUFtQyxNQUF2QyxDQUFnRCxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIscUNBQW5CLENBQVgsQ0FBaEQsSUFDSyxDQUFBLFFBQVEsQ0FBRyxjQUFjLENBQUMsR0FBZixDQUFtQix5Q0FBbkIsQ0FBWCxDQUNSLENBSUwsUUFBUSxDQUFDLE1BQVQsQ0FBZ0IsUUFBUSxDQUFDLFFBQUQsQ0FBUixDQUFtQixNQUFuQixDQUFoQixFQUVOLENBeDFDYSxDQXcxQ1o7QUFHUyxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBQ2pDLEtBQUssQ0FBQyxTQUFOLENBQWdCLEtBQUssQ0FBQyxFQUFOLENBQVMsRUFBekIsRUFBNkIsaUJBQTdCLENBQWtELElBQWxELENBQ0YsQ0E3MUNFLENBQVAsQ0FnMkNQLEVBQ0QsYUFFTyxRQUFTLENBQUEsb0JBQVQsRUFBaUMsQ0FFaEMsTUFBTyxDQUNQLFFBQVEsQ0FBRSxHQURILENBRVAsS0FBSyxDQUFDLENBQ00sUUFBUSxDQUFDLEdBRGYsQ0FGQyxDQU1kLFdBQVcsQ0FBRSxnREFOQyxDQU9QLFVBQVUsQ0FBRSxvQkFBVSxNQUFWLENBQWlCLFVBQWpCLENBQTRCLGVBQTVCLENBQTRDLG1CQUE1QyxDQUFnRSxvQkFBaEUsQ0FBcUYsZ0JBQXJGLENBQXNHLFlBQXRHLENBQ1osQ0FDUSxNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FFQSxNQUFNLENBQUMsR0FBUCxDQUFhLG1CQUFiLENBR0EsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsU0FBUyxHQUFULENBQ3RCLENBRUssTUFBTSxDQUFDLFlBQVAsQ0FBb0IsR0FBcEIsQ0FDSixDQUpELENBS0EsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUNBLFlBQVksQ0FBQyxjQUFiLENBQTRCLFlBQTVCLENBQXlDLElBQXpDLEVBQStDLElBQS9DLENBQW9ELFNBQVUsSUFBVixDQUFnQixDQUNwRCxNQUFNLENBQUMsa0JBQVAsQ0FBNEIsSUFBSSxDQUFDLElBQWpDLENBQ0EsTUFBTSxDQUFDLGtCQUFQLENBQTBCLElBQTFCLENBQ0YsQ0FIZCxFQUtBLE1BQU0sQ0FBQyxlQUFQLENBQXlCLFNBQVUsS0FBVixDQUFpQixDQUV4QyxHQUFJLEtBQUssQ0FBQyxNQUFWLENBQ0EsQ0FDRSxvQkFBb0IsQ0FBQyxnQkFBckIsQ0FBc0MsTUFBTSxDQUFDLFFBQTdDLEVBQXVELElBQXZELENBQTRELFNBQVMsSUFBVCxDQUFlLENBRXhELEdBQUksSUFBSSxDQUFDLE1BQUwsR0FBYyxHQUFkLEVBQXFCLElBQUksQ0FBQyxNQUFMLEVBQWEsR0FBdEMsQ0FDQyxDQUNBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxHQUFqQyxDQUFxQyxTQUFyQyxFQUNDLENBQ0EsQ0FOckIsQ0FNc0IsU0FBUyxLQUFULENBQWUsQ0FFbkIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBRUQsQ0FWakIsRUFZRCxDQWRELElBZUEsQ0FFRSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0Qiw0QkFBNUIsQ0FBeUQsU0FBekQsRUFDRCxDQUNGLENBckJELENBdUJDLENBaERGLENBaURQLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FJbkMsQ0FyRE0sQ0FBUCxDQXdEUCxFQUNELGFBRU8sUUFBUyxDQUFBLFlBQVQsRUFBeUIsQ0FFeEIsTUFBTyxDQUNQLFFBQVEsQ0FBRSxHQURILENBRWQ7QUFDTyxVQUFVLENBQUUsb0JBQVUsTUFBVixDQUFpQixlQUFqQixDQUFpQyxtQkFBakMsQ0FBcUQsY0FBckQsQ0FBb0UsUUFBcEUsQ0FBNkUsUUFBN0UsQ0FDWixDQUNRLE1BQU0sQ0FBQyxLQUFQLENBQWUsZUFBZixDQUVBLE1BQU0sQ0FBQyxHQUFQLENBQWEsbUJBQWIsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixFQUFzQixTQUExQixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsRUFBckIsQ0FDckMsR0FBSSxDQUFBLGVBQWUsQ0FBRyxJQUF0QixDQUNBLEdBQUksTUFBTSxDQUFDLFFBQVAsRUFBaUIsU0FBckIsQ0FDQSxDQUNRLEdBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBaEIsRUFBd0IsQ0FBNUIsQ0FBK0IsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBQyxFQUFELENBQWhCLENBQy9CLEdBQUksQ0FBQyxLQUFLLENBQUMsT0FBTixDQUFjLE1BQU0sQ0FBQyxRQUFyQixDQUFMLENBQXFDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQUMsRUFBRCxDQUFoQixDQUVyQyxlQUFlLENBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUFoQixDQUVQLENBUEQsSUFPTSxDQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQUMsRUFBRCxDQUFoQixDQUVKLEdBQUksQ0FBQSxlQUFlLENBQUcsRUFBdEIsQ0FFRixHQUFJLE1BQU0sQ0FBQyxZQUFQLEVBQXFCLFNBQXpCLENBQW9DLGVBQWUsQ0FBRyxNQUFNLENBQUMsWUFBUCxDQUFvQixHQUF0QyxDQUVwQyxHQUFJLENBQUEsVUFBVSxDQUFFLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBMUIsQ0FBd0MsR0FBeEMsQ0FBNEMsZUFBNUMsQ0FBNEQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUE1RixDQUFvRyxlQUFwRyxDQUFoQixDQUVBO0FBQ0EsR0FBSSxDQUFBLGNBQWMsQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixJQUF4QyxDQUNBO0FBRUEsR0FBSSxDQUFBLGFBQWEsQ0FBRyxRQUFoQixDQUFBLGFBQWdCLENBQVMsSUFBVCxDQUNwQixDQUNJLFVBQVUsQ0FBQyxPQUFYLENBQW1CLGVBQW5CLENBQXFDLElBQXJDLENBQ0EsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsZUFBbkIsQ0FBbUMsY0FBbkMsRUFDSCxDQUpELENBTUEsR0FBSSxDQUFBLG9CQUFvQixDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixjQUFyQixDQUFvQyxjQUFwQyxDQUFtRCxhQUFuRCxDQUEzQixDQUdBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFVBQ3RCLENBRVEsTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLGNBQXpCLENBQXdDLGNBQXhDLENBQXdELE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsQ0FBeEQsRUFFUCxDQUxELENBU0EsR0FBSSxDQUFBLFdBQVcsQ0FBRyxRQUFkLENBQUEsV0FBYyxDQUFTLElBQVQsQ0FDbEIsQ0FDUSxHQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsSUFBZCxDQUFKLENBQ0EsQ0FDUSxHQUFJLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQWxCLEdBQThCLFNBQWxDLENBQTZDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsRUFBMEMsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBbEIsQ0FBMUMsQ0FBN0MsSUFDSyxJQUFJLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxJQUFSLEdBQWUsU0FBbkIsQ0FBOEIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixFQUEwQyxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsSUFBUixDQUExQyxDQUMxQyxDQUpELElBS0ssSUFBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUEwQixJQUExQixDQUErQixJQUEvQixJQUF5QyxpQkFBN0MsQ0FDTCxDQUNRLEdBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBWCxDQUFKLEVBQTJCLFNBQS9CLENBQTBDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsRUFBMEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBWCxDQUE5QyxDQUExQyxJQUNLLElBQUksSUFBSSxDQUFDLElBQUQsQ0FBSixFQUFZLFNBQWhCLENBQTJCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsRUFBMEMsSUFBSSxDQUFDLElBQUQsQ0FBOUMsQ0FDdkMsQ0FFTCxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIsY0FBekIsQ0FBd0MsY0FBeEMsQ0FBd0QsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUF4RCxFQUNILENBZEQsQ0FlRDtBQUNDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGdCQUFyQixFQUF1QyxTQUF2QyxFQUFvRCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsZ0JBQXJCLEVBQXVDLElBQS9GLENBRUEsQ0FDSSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixnQkFBckIsRUFBdUMsRUFBM0MsQ0FDQSxDQUNJLEdBQUksQ0FBQSxlQUFlLENBQUcsUUFBUSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXhDLENBQ0EsR0FBSSxDQUFBLGlCQUFpQixDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixrQkFBckIsQ0FBd0MsZ0JBQXhDLENBQXlELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixnQkFBOUUsQ0FBK0YsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGNBQWpKLENBQ0EsR0FBSSxDQUFBLE9BQU8sQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsaUJBQXRCLENBQXdDLElBQXhDLENBQWQsQ0FDQSxHQUFJLENBQUEsUUFBUSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixpQkFBckIsQ0FBdUMsZUFBdkMsQ0FBdUQsY0FBdkQsQ0FBc0UsV0FBdEUsQ0FBZixDQUNBLEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxRQUFYLENBQW9CLGlCQUFwQixDQUFWLENBQ0EsR0FBSSxHQUFHLENBQUMsS0FBSixFQUFXLElBQWYsQ0FBcUIsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFMLENBQVgsQ0FDeEIsQ0FDSixDQUViLEdBQUssTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLEVBQXFCLFNBQTFCLENBQXFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixFQUFwQixDQUV4QixHQUFJLGVBQWUsRUFBRSxTQUFyQixDQUFnQyxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIsY0FBekIsQ0FBd0MsY0FBeEMsQ0FBd0QsZUFBeEQsRUFFakMsR0FBSSxDQUFBLFFBQUosQ0FDQSxHQUFJLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUE5QixDQUErQyxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsd0NBQW5CLENBQVgsQ0FBL0MsSUFDSyxDQUFBLFFBQVEsQ0FBRyxjQUFjLENBQUMsR0FBZixDQUFtQiwyQ0FBbkIsQ0FBWCxDQUVKLFFBQVEsQ0FBQyxNQUFULENBQWdCLFFBQVEsQ0FBQyxRQUFELENBQVIsQ0FBbUIsTUFBbkIsQ0FBaEIsRUFFQSxDQXZGRixDQXdGUCxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBSTVCLEtBQUssQ0FBQyxNQUFOLENBQWEsQ0FDYixDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sTUFBTSxDQUFDLElBQWIsQ0FBa0IsSUFBSSxDQUFDLGNBQXZCLENBQXNDLElBQUksQ0FBQyxxQkFBM0MsQ0FEYSxDQUViLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxNQUFNLENBQUMsU0FBYixDQUF1QixJQUFJLENBQUMsU0FBNUIsQ0FBc0MsSUFBSSxDQUFDLGNBQTNDLENBRmEsQ0FHYixDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sTUFBTSxDQUFDLElBQWIsQ0FBa0IsSUFBSSxDQUFDLFlBQXZCLENBQW9DLElBQUksQ0FBQyxvQkFBekMsQ0FIYSxDQUliLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxNQUFNLENBQUMsSUFBYixDQUFrQixJQUFJLENBQUMsUUFBdkIsQ0FBZ0MsSUFBSSxDQUFDLFlBQXJDLENBSmEsQ0FBYixDQU1BLEtBQUssQ0FBQyxrQkFBTixDQUEyQixVQUFXLENBQzlCLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFiLENBQXFCLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBVCxDQUFnQixLQUFoQixDQUFzQixLQUFLLENBQUMsUUFBTixDQUFlLENBQWYsRUFBa0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUEzQixDQUF0QixDQUM1QixDQUZELENBSUEsR0FBSSxLQUFLLENBQUMsaUJBQVYsQ0FBOEIsQ0FDMUIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFULENBQWdCLEtBQUssQ0FBQyxNQUFOLENBQWEsQ0FBYixDQUFoQixDQUFnQztBQUNoQyxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBVCxFQUFtQixLQUFLLENBQUMsUUFBTixFQUFnQixTQUFuQyxFQUFnRCxLQUFLLENBQUMsUUFBTixDQUFlLE1BQWYsQ0FBc0IsQ0FBMUUsQ0FBNkUsS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFULENBQWdCLEtBQWhCLENBQXNCLEtBQUssQ0FBQyxRQUFOLENBQWUsQ0FBZixFQUFrQixLQUFLLENBQUMsRUFBTixDQUFTLFNBQTNCLENBQXRCLENBQ2hGLENBRUQsS0FBSyxDQUFDLGNBQU4sQ0FBdUIsU0FBUyxLQUFULENBQ3ZCLENBQ1EsS0FBSyxDQUFDLEtBQU4sQ0FBWSxrQkFBWixDQUErQixLQUFLLENBQUMsRUFBckMsQ0FBeUMsS0FBSyxDQUFDLFVBQS9DLEVBQTJEO0FBRWxFLENBSkQsQ0FNQSxLQUFLLENBQUMsWUFBTixDQUFxQixTQUFTLEtBQVQsQ0FBZ0IsQ0FDN0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFULENBQWdCLEtBQUssQ0FBQyxNQUFOLENBQWEsS0FBYixDQUFoQixDQUVBLEdBQUksS0FBSyxDQUFDLFFBQU4sQ0FBZSxDQUFmLEVBQWtCLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBM0IsQ0FBSixDQUEyQyxLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsQ0FBZ0IsS0FBaEIsQ0FBc0IsS0FBSyxDQUFDLFFBQU4sQ0FBZSxDQUFmLEVBQWtCLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBM0IsQ0FBdEIsQ0FFbEQsQ0FMRCxDQU9ILENBeEhFLENBQVAsQ0EwSFAsRUFDRCxhQUVPLFFBQVMsQ0FBQSxhQUFULEVBQTBCLENBQ3pCLE1BQU8sQ0FDUCxRQUFRLENBQUUsR0FESCxDQUVQLFVBQVUsQ0FBRSxvQkFBVSxNQUFWLENBQWtCLFVBQWxCLENBQTZCLG9CQUE3QixDQUFrRCxpQkFBbEQsQ0FBb0UsUUFBcEUsQ0FBNkUsZ0JBQTdFLENBQThGLGVBQTlGLENBQThHLGNBQTlHLENBQTZILHlCQUE3SCxDQUF3SixDQUVwSyxNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FFQyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixFQUFxQixTQUF6QixDQUFvQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsRUFBcEIsQ0FDdkMsR0FBSSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBZixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsRUFBckIsQ0FDMUIsR0FBSSxNQUFNLENBQUMsU0FBUCxFQUFrQixTQUF0QixDQUFpQyxNQUFNLENBQUMsU0FBUCxDQUFpQixFQUFqQixDQUcvQixNQUFNLENBQUMsU0FBUCxDQUFtQixDQUFDLFVBQUQsQ0FBWSxVQUFaLENBQXVCLFVBQXZCLENBQWtDLFVBQWxDLENBQTZDLFdBQTdDLENBQXlELFdBQXpELENBQXFFLFdBQXJFLENBQWlGLFdBQWpGLENBQTZGLFdBQTdGLENBQXlHLFdBQXpHLENBQXFILFdBQXJILENBQWlJLFdBQWpJLENBQW5CLENBRUosTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUFzQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsTUFBWCxDQUFrQixJQUFJLENBQUMsTUFBdkIsQ0FBRCxDQUFnQyxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLFNBQVgsQ0FBcUIsSUFBSSxDQUFDLFVBQTFCLENBQWhDLENBQXNFLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsTUFBWCxDQUFrQixJQUFJLENBQUMsTUFBdkIsQ0FBdEUsQ0FBcUcsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxhQUFYLENBQXlCLElBQUksQ0FBQyxhQUE5QixDQUFyRyxDQUF0QyxDQUVTLEdBQUksQ0FBQSxTQUFTLENBQUMsQ0FDVCxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLGNBQVgsQ0FEUyxDQUFkLENBSVAsR0FBSSxDQUFBLGVBQWUsQ0FBRyxFQUF0QixDQUVBLEdBQUksTUFBTSxDQUFDLFlBQVAsRUFBcUIsU0FBekIsQ0FBb0MsZUFBZSxDQUFHLE1BQU0sQ0FBQyxZQUFQLENBQW9CLEdBQXRDLENBRXBDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLFNBQXZCLENBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixjQUFjLENBQUMsTUFBZixFQUFsQixDQUNsQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsT0FBckIsQ0FBK0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF6QyxDQUVBLEdBQUksQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLEtBQWYsQ0FBc0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQW1CLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGFBQXBDLENBRTFCLEdBQUksQ0FBQSxnQkFBZ0IsQ0FBRyxDQUFDLE9BQU8sQ0FBRSxTQUFWLENBQW9CLElBQUksQ0FBRSxtQkFBMUIsQ0FBOEMsV0FBVyxDQUFFLG9CQUEzRCxDQUFnRixVQUFVLENBQUUsbUJBQTVGLENBQWdILFFBQVEsQ0FBRSxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFwSixDQUE0SixNQUFNLENBQUMsSUFBbkssQ0FBd0ssZ0JBQWdCLENBQUMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLEdBQW5OLENBQXZCLENBRUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsYUFBakIsQ0FBaUMseUJBQXlCLENBQUMsY0FBMUIsQ0FBeUMsZ0JBQXpDLENBQWpDLENBRUM7QUFDUyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLENBQXVDLFNBQVUsSUFBVixDQUFnQixLQUFoQixDQUFzQixDQUMzRCxHQUFJLENBQUEsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUF2QixDQUNELENBRkQsQ0FLVCxDQXRDVSxDQXNDVDtBQUVNLFdBQVcsQ0FBRSx5Q0F4Q1YsQ0F5Q0gsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUVwQyxHQUFJLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxZQUFkLENBQTRCLEtBQUssQ0FBQyxFQUFOLENBQVMsWUFBVCxDQUFzQixDQUF0QixDQUMzQixDQTVDRSxDQUFQLENBK0NQLEVBQ0QsYUFJTyxRQUFTLENBQUEsa0JBQVQsQ0FBOEIsb0JBQTlCLENBQW1ELFVBQW5ELENBQThELGVBQTlELENBQThFLFFBQTlFLENBQXVGLGdCQUF2RixDQUF5RyxDQUV4RyxNQUFPLENBQ0YsUUFBUSxDQUFFLEdBRFIsQ0FFRixXQUFXLENBQUUsOENBRlgsQ0FHRixLQUFLLENBQUMsQ0FDSSxnQkFBZ0IsQ0FBQyxHQURyQixDQUVJLGlCQUFpQixDQUFDLEdBRnRCLENBR0ksVUFBVSxDQUFDLEdBSGYsQ0FISixDQVVQLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FHaEMsR0FBSSxDQUFDLEtBQUssQ0FBQyxVQUFYLENBQXVCLEtBQUssQ0FBQyxVQUFOLENBQWlCLEVBQWpCLENBRXZCLEtBQUssQ0FBQyxZQUFOLENBQXFCLFNBQVMsYUFBVCxDQUF5QiwyQkFHMUMsR0FBSSxLQUFLLENBQUMsWUFBTixFQUFvQixTQUF4QixDQUFtQyxDQUNsQyxLQUFLLENBQUMsWUFBTixDQUFtQixFQUFuQixDQUNBLEtBQUssQ0FBQyxZQUFOLENBQW1CLGFBQW5CLEVBQWtDLEVBQWxDLENBQ0EsQ0FFRCxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0EsR0FBSSx5QkFBQyxLQUFLLENBQUMsWUFBTixDQUFtQixLQUFLLENBQUMsVUFBTixDQUFpQixvQkFBcEMsQ0FBRCwwQ0FBQyxzQkFBMkQsTUFBNUQsR0FBc0UsS0FBSyxDQUFDLFVBQU4sQ0FBaUIsb0JBQTNGLENBQWdILENBRTVHLG9CQUFvQixDQUFDLHdCQUFyQixDQUE4QyxJQUE5QyxDQUFtRCxhQUFuRCxFQUFrRSxJQUFsRSxDQUNJLFNBQVMsSUFBVCxDQUFlLDJCQUNYLEtBQUssQ0FBQyxZQUFOLENBQW1CLGFBQW5CLEVBQW9DLElBQUksQ0FBQyxJQUF6QyxDQUNBLEtBQUssQ0FBQyxhQUFOLEdBQ0EsMEJBQUksS0FBSyxDQUFDLGdCQUFWLDBDQUFJLHNCQUF3QixFQUE1QixDQUFnQyxLQUFLLENBQUMscUJBQU4sR0FFdkMsQ0FORCxDQU1FLFNBQVMsS0FBVCxDQUFlLENBQ1QsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0EsQ0FSUixFQVNILENBRVIsQ0F0QkcsQ0F3QkosS0FBSyxDQUFDLGFBQU4sQ0FBc0IsVUFBVSxDQUM1QixHQUFJLENBQUEsZUFBZSxDQUFHLEtBQUssQ0FBQyxnQkFBNUIsQ0FDSSxHQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFYLENBQTRCLDRCQUNwQixHQUFJLENBQUEsR0FBRyxDQUFHLEtBQUssQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxVQUFOLENBQWlCLG9CQUFwQyxFQUEwRCxHQUExRCxDQUE4RCxTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsRUFBVCxDQUFjLENBQTFGLEVBQTRGLE9BQTVGLHlCQUFvRyxLQUFLLENBQUMsZ0JBQTFHLGlEQUFvRyx1QkFBd0IsRUFBNUgsQ0FBVixDQUNBLEdBQUksR0FBRyxFQUFFLENBQVQsQ0FBWSxDQUNaLEtBQUssQ0FBQyxnQkFBTixDQUF3QixLQUFLLENBQUMsWUFBTixDQUFtQixLQUFLLENBQUMsVUFBTixDQUFpQixvQkFBcEMsRUFBMEQsR0FBMUQsQ0FBeEIsQ0FDUCxDQUNKLENBQ0osQ0FSRCxDQVVBLEtBQUssQ0FBQyxxQkFBTixDQUE0QixVQUM1QixDQUNJLEtBQUssQ0FBQyxlQUFOLENBQXNCLEtBQXRCLENBRUMsR0FBSSxLQUFLLENBQUMscUJBQU4sRUFBNkIsU0FBakMsQ0FDRCxDQUNJLEtBQUssQ0FBQyxxQkFBTixDQUE0QixFQUE1QixDQUNBLEdBQUksS0FBSyxDQUFDLFVBQU4sQ0FBaUIsb0JBQXJCLENBQTJDLEtBQUssQ0FBQyxxQkFBTixDQUE0QixLQUFLLENBQUMsVUFBTixDQUFpQixvQkFBN0MsRUFBbUUsRUFBbkUsQ0FDOUMsQ0FFRCxvQkFBb0IsQ0FBQyw2QkFBckIsQ0FBbUQsS0FBSyxDQUFDLGdCQUFOLENBQXVCLEVBQTFFLENBQTZFLE1BQTdFLEVBQXFGLElBQXJGLENBQ0ksU0FBVSxJQUFWLENBQWdCLENBRWhCLEtBQUssQ0FBQyxxQkFBTixDQUE0QixLQUFLLENBQUMsVUFBTixDQUFpQixvQkFBN0MsRUFBcUUsSUFBSSxDQUFDLElBQTFFLENBQ0EsS0FBSyxDQUFDLGVBQU4sQ0FBc0IsSUFBdEIsQ0FFQSxHQUFJLENBQUMsS0FBSyxDQUFDLFVBQU4sQ0FBaUIsbUJBQXRCLENBQTJDLENBRXZDLEtBQUssQ0FBQyxVQUFOLENBQWlCLG1CQUFqQixDQUF1QyxLQUFLLENBQUMscUJBQU4sQ0FBNEIsS0FBSyxDQUFDLFVBQU4sQ0FBaUIsb0JBQTdDLEVBQW1FLENBQW5FLEVBQXNFLEVBQTdHLENBQ0EsS0FBSyxDQUFDLFVBQU4sQ0FBaUIsd0JBQWpCLENBQTRDLEtBQUssQ0FBQyxxQkFBTixDQUE0QixLQUFLLENBQUMsVUFBTixDQUFpQixvQkFBN0MsRUFBbUUsQ0FBbkUsRUFBc0UsT0FBbEgsQ0FDSCxDQUdELENBYkosQ0FhSyxTQUFTLEtBQVQsQ0FBZSxDQUNaLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNQLENBZkQsRUFpQkgsQ0EzQkQsQ0E2QkEsS0FBSyxDQUFDLDJCQUFOLENBQW9DLFNBQVMsYUFBVCxDQUF5QixDQUVyRCxHQUFJLGFBQWEsRUFBRSxTQUFuQixDQUE4QixhQUFhLENBQUcsS0FBSyxDQUFDLFlBQXRCLENBQzlCLEdBQUksS0FBSyxDQUFDLHFCQUFOLEVBQTZCLFNBQWpDLENBQ0ksQ0FDSSxLQUFLLENBQUMscUJBQU4sQ0FBNEIsRUFBNUIsQ0FDQSxHQUFJLEtBQUssQ0FBQyxVQUFOLENBQWlCLG9CQUFyQixDQUEyQyxLQUFLLENBQUMscUJBQU4sQ0FBNEIsS0FBSyxDQUFDLFVBQU4sQ0FBaUIsb0JBQTdDLEVBQW1FLEVBQW5FLENBQzlDLENBQ0wsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUVBO0FBQ0Esb0JBQW9CLENBQUMsMkJBQXJCLENBQWlELGFBQWpELENBQStELE1BQS9ELENBQXVFLEtBQXZFLEVBQThFLElBQTlFLENBQW1GLFNBQVUsSUFBVixDQUFnQixDQUMzRjtBQUVBLFFBQVEsQ0FBQyxVQUFVLENBQ2YsS0FBSyxDQUFDLHFCQUFOLENBQTRCLEtBQUssQ0FBQyxVQUFOLENBQWlCLG9CQUE3QyxFQUFtRSxNQUFuRSxDQUE0RSxDQUE1RSxDQUNBLE9BQU8sQ0FBQyxNQUFSLENBQWUsS0FBSyxDQUFDLHFCQUFOLENBQTRCLEtBQUssQ0FBQyxVQUFOLENBQWlCLG9CQUE3QyxDQUFmLENBQW1GLElBQUksQ0FBQyxJQUF4RixFQUVGLENBSk0sQ0FBUixDQUtOLENBUkYsQ0FRRyxTQUFTLEtBQVQsQ0FBZSxDQUNOLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNULENBVkgsRUFXQSxDQXRCUixDQXdCQztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBRWMsS0FBSyxDQUFDLDBCQUFOLENBQW1DLFNBQVUsSUFBVixDQUFnQixLQUFoQixDQUFzQixDQUVuRCxHQUFJLENBQUEsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUF2QixDQUNBLEdBQUksQ0FBQSxlQUFlLENBQUMsSUFBSSxDQUFDLElBQXpCLENBQ0EsR0FBSSxDQUFBLDBCQUEwQixDQUFFLElBQUksQ0FBQyxlQUFyQyxDQUVBLEtBQUssQ0FBQyxnQkFBTixDQUF5QixJQUF6QixDQUNBLEtBQUssQ0FBQyxVQUFOLENBQWlCLG1CQUFqQixDQUFxQyxDQUFyQyxDQUNBLEtBQUssQ0FBQyxxQkFBTixHQUdMLENBWEQsQ0FhQSxLQUFLLENBQUMsaUNBQU4sQ0FBMEMsU0FBVSxJQUFWLENBQWdCLEtBQWhCLENBQXNCLENBRTFELEtBQUssQ0FBQyw2QkFBTixDQUFzQyxJQUF0QyxDQUNBLEtBQUssQ0FBQyxVQUFOLENBQWlCLG1CQUFqQixDQUF1QyxJQUFJLENBQUMsRUFBNUMsQ0FDQSxLQUFLLENBQUMsVUFBTixDQUFpQix3QkFBakIsQ0FBNEMsSUFBSSxDQUFDLE9BQWpELENBR0wsQ0FQRCxDQVNBLEdBQUksS0FBSyxDQUFDLFVBQU4sQ0FBaUIsb0JBQXJCLENBQTJDLEtBQUssQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxVQUFOLENBQWlCLG9CQUFwQyxFQUczQyxDQXRLQyxDQUFQLENBd0tQLEVBQ0QsYUFFTyxRQUFTLENBQUEsYUFBVCxFQUEwQixDQUV6QixNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFQyxVQUFVLENBQUUsb0JBQVUsTUFBVixDQUFpQixVQUFqQixDQUE0QixjQUE1QixDQUEyQyxRQUEzQyxDQUFvRCxRQUFwRCxDQUE2RCxlQUE3RCxDQUE2RSx5QkFBN0UsQ0FBdUcsWUFBdkcsQ0FBb0gsSUFBcEgsQ0FBMEgsQ0FDOUgsTUFBTSxDQUFDLEtBQVAsQ0FBZSxlQUFmLENBQ0EsR0FBSSxNQUFNLENBQUMsU0FBUCxFQUFrQixTQUF0QixDQUFpQyxNQUFNLENBQUMsU0FBUCxDQUFpQixFQUFqQixDQUNuRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixFQUFxQixTQUF6QixDQUFvQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsRUFBcEIsQ0FFcEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLElBQXBCLENBQTJCLHlCQUEzQixDQUNrQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isa0JBQXBCLENBQXVDLE1BQU0sQ0FBQyxrQkFBOUMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxRQUFQLEVBQWlCLFNBQXJCLENBQ0EsQ0FDSSxNQUFNLENBQUMsUUFBUCxDQUFrQixDQUFDLEVBQUQsQ0FBbEIsQ0FDSCxDQUhELElBR08sSUFBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFoQixFQUF3QixDQUE1QixDQUN2QixNQUFNLENBQUMsUUFBUCxDQUFrQixDQUFDLEVBQUQsQ0FBbEIsQ0FFZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUFzQyxJQUF0QyxDQUNBLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQyxZQUFZLENBQUMsY0FBYixDQUE0QixVQUE1QixDQUF1QyxJQUF2QyxFQUE2QyxJQUE3QyxDQUNsQixTQUFVLElBQVYsQ0FBZ0IsQ0FDUyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBb0IsSUFBSSxDQUFDLElBQXpCLENBRUMsR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsR0FBbEIsQ0FBc0IsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUFsRCxFQUFvRCxPQUFwRCxDQUE0RCxNQUFNLENBQUMsRUFBUCxDQUFVLFFBQXRFLENBQVYsQ0FFRSxHQUFJLEdBQUcsRUFBRSxDQUFULENBQVcsQ0FDUCxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsQ0FBc0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLEdBQWxCLENBQXRCLENBRUgsQ0FDTixDQVZMLEVBWUQsR0FBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixHQUFvQixTQUFwQixFQUFrQyxNQUFNLENBQUMsRUFBUCxDQUFVLFFBQWhELENBQTBELE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUFzQixJQUFJLENBQUMsV0FBTCxDQUFpQixNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLENBQWpCLENBQXRCLENBRXpELE1BQU0sQ0FBQyxNQUFQLENBQWMsYUFBZCxDQUE0QixTQUFTLFFBQVQsQ0FBa0IsUUFBbEIsQ0FBMkIsQ0FFOUMsR0FBSSxRQUFKLENBQ0EsQ0FDRztBQUNFLEdBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsR0FBb0IsU0FBcEIsRUFBa0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFoRCxDQUEwRCxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsQ0FBc0IsSUFBSSxDQUFDLFdBQUwsQ0FBaUIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUFqQixDQUF0QixDQUM5RCxDQUNULENBUEQsRUFVRCxNQUFNLENBQUMsTUFBUCxDQUFjLElBQWQsQ0FDQSxNQUFNLENBQUMsTUFBUCxDQUFjLEtBQWQsQ0FFd0IsTUFBTSxDQUFDLE1BQVAsQ0FBYyxDQUNkLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxNQUFNLENBQUMsUUFBYixDQUFzQixJQUFJLENBQUMsYUFBM0IsQ0FBeUMsSUFBSSxDQUFDLHFCQUE5QyxDQURjLENBRWQsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLE1BQU0sQ0FBQyxVQUFiLENBQXdCLElBQUksQ0FBQyxVQUE3QixDQUF3QyxJQUFJLENBQUMsY0FBN0MsQ0FGYyxDQUdkLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxNQUFNLENBQUMsTUFBYixDQUFvQixJQUFJLENBQUMsV0FBekIsQ0FBcUMsSUFBSSxDQUFDLG9CQUExQyxDQUhjLENBSWQsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLE1BQU0sQ0FBQyxJQUFiLENBQWtCLElBQUksQ0FBQyxRQUF2QixDQUFnQyxJQUFJLENBQUMsWUFBckMsQ0FKYyxDQUFkLENBTXhCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFrQyxVQUFVLENBQ3hDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsRUFBd0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFsRCxDQUVILENBSEQsQ0FLRCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBdUIsVUFBVSxDQUN4QixNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBeUIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUF6QixDQUNQLENBRkYsQ0FJbUIsTUFBTSxDQUFDLGdCQUFQLENBQTBCLFNBQVMsS0FBVCxDQUFnQixDQUNqQyxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsTUFBTSxDQUFDLE1BQVAsQ0FBYyxLQUFkLENBQWpCLENBQ2YsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQWQsQ0FBc0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLEtBQWpCLENBQXVCLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBakMsQ0FDdEIsTUFBTSxDQUFDLE1BQVAsQ0FBYyxLQUFkLENBQ2EsQ0FKUCxDQU1WLE1BQU0sQ0FBQyxrQkFBUCxDQUE0QixVQUFXLENBQ3RDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFkLENBQXNCLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixLQUFqQixDQUF1QixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQWpDLENBQ3pCLENBRkUsQ0FJUCxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBMkIsU0FBUyxJQUFULENBQWMsS0FBZCxDQUM1QixDQUVRLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBVixDQUFtQixJQUFJLENBQUMsRUFBeEIsQ0FDUCxDQUpBLENBTUssTUFBTSxDQUFDLGNBQVAsQ0FBd0IsU0FBUyxLQUFULENBQ3RCLENBQ0UsTUFBTSxDQUFDLEtBQVAsQ0FBYSxrQkFBYixDQUFnQyxNQUFNLENBQUMsRUFBdkMsQ0FBMEMsS0FBMUMsRUFFRCxDQUpILENBTUMsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQWQsQ0FBK0IsQ0FDM0IsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsRUFBa0IsU0FBdEIsQ0FBaUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLE1BQU0sQ0FBQyxNQUFQLENBQWMsQ0FBZCxDQUFqQixDQUFrQztBQUN2RSxDQUVQLEdBQUksQ0FBQSxRQUFKLENBQ0EsR0FBSSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBOUIsQ0FBK0MsUUFBUSxDQUFHLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHlDQUFuQixDQUFYLENBQS9DLElBQ0ssQ0FBQSxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsNENBQW5CLENBQVgsQ0FFTCxRQUFRLENBQUMsTUFBVCxDQUFnQixRQUFRLENBQUMsUUFBRCxDQUFSLENBQW1CLE1BQW5CLENBQWhCLEVBRUMsQ0EzRlYsQ0E2RkYsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUtwQyxDQWxHRSxDQUFQLENBb0dQLEVBQ0QsYUFFTyxRQUFTLENBQUEsWUFBVCxDQUF1QixVQUF2QixDQUFrQyxTQUFsQyxDQUE0QyxtQkFBNUMsQ0FBZ0Usb0JBQWhFLENBQXFGLGNBQXJGLENBQW9HLGVBQXBHLENBQW9ILGdCQUFwSCxDQUFxSSxxQkFBckksQ0FBMkosUUFBM0osQ0FBb0ssWUFBcEssQ0FBaUwsZUFBakwsQ0FBaU0sV0FBak0sQ0FBNk0sTUFBN00sQ0FBcU4sQ0FDcE4sTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRVQsS0FBSyxDQUFDLENBQ08sTUFBTSxDQUFDLEdBRGQsQ0FFTyxJQUFJLENBQUMsR0FGWixDQUdPLEtBQUssQ0FBQyxHQUhiLENBSU8sT0FBTyxDQUFDLEdBSmYsQ0FLTyxRQUFRLENBQUUsSUFMakIsQ0FGRyxDQVNILFdBQVcsQ0FBRSx3Q0FUVixDQVdGLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsMkJBR2pDLEtBQUssQ0FBQyxZQUFOLENBQW9CLE1BQXBCLENBRUEsR0FBSSxDQUFBLE9BQU8sQ0FBRyxLQUFLLENBQUMsTUFBcEIsQ0FDQSxLQUFLLENBQUMsWUFBTixDQUFxQixLQUFLLENBQUMsSUFBM0IsQ0FDQSxLQUFLLENBQUMsVUFBTixDQUFtQixPQUFuQixDQUVBLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FFQSxLQUFLLENBQUMsU0FBTixDQUFnQixDQUFDLFVBQVUsQ0FBQyxFQUFaLENBQWhCLENBRUEsR0FBSSxZQUFZLENBQUMsVUFBYixFQUF5QixTQUF6QixFQUFzQyxZQUFZLENBQUMsVUFBYixFQUF5QixFQUFuRSxDQUEwRSxLQUFLLENBQUMsU0FBTixDQUFnQixVQUFoQixDQUE2QixFQUE3QixDQUUxRSxLQUFLLENBQUMsc0JBQU4sQ0FBNkIsS0FBN0IsQ0FDQSxLQUFLLENBQUMsR0FBTixDQUFZLG1CQUFaLENBQ0EsS0FBSyxDQUFDLEtBQU4sQ0FBYyxlQUFkLENBQ0EsS0FBSyxDQUFDLFlBQU4sQ0FBcUIsV0FBckIsQ0FFQSxLQUFLLENBQUMsS0FBTixDQUFZLGVBQVosQ0FBNEIsQ0FBNUIsRUFDQSxLQUFLLENBQUMsWUFBTixDQUFtQixlQUFuQixHQUVBLEdBQUksQ0FBQSxjQUFKLENBQ0EsR0FBSSxDQUFBLGtCQUFKLENBQ0EsR0FBSSxDQUFBLHVCQUFKLENBQTRCLG1CQUE1QixDQUNBLEdBQUksQ0FBQSxjQUFjLENBQUUsS0FBSyxDQUFDLEdBQU4sQ0FBVSxVQUFWLENBQXFCLGdCQUFyQix3QkFBc0MsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsVUFBdEQsZ0RBQXNDLHNCQUE0QixVQUFsRSxDQUFwQixDQUNBLEdBQUksQ0FBQSxrQkFBa0IsQ0FBRyxjQUFjLENBQUMsT0FBZixDQUF1QixJQUFoRCxDQUVBLEdBQUksQ0FBQSxrQkFBa0IsQ0FBRyxRQUFyQixDQUFBLGtCQUFxQixDQUFTLElBQVQsQ0FDekIsQ0FDSSxjQUFjLENBQUMsT0FBZixDQUF1QixlQUF2QixDQUF5QyxJQUF6QyxDQUNBLGNBQWMsQ0FBQyxPQUFmLENBQXVCLGVBQXZCLENBQXVDLGtCQUF2QyxFQUNILENBSkQsQ0FNQSxHQUFJLENBQUEsdUJBQXVCLENBQUcsUUFBMUIsQ0FBQSx1QkFBMEIsQ0FBUyxJQUFULENBQzlCLENBQ0ssY0FBYyxDQUFDLE9BQWYsQ0FBdUIsZUFBdkIsQ0FBeUMsSUFBekMsQ0FDQSxjQUFjLENBQUMsT0FBZixDQUF1QixlQUF2QixDQUF1Qyx1QkFBdkMsRUFDSixDQUpELENBTUEsR0FBSSxDQUFBLHNCQUFzQixDQUFHLEtBQUssQ0FBQyxHQUFOLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBdUMsa0JBQWtCLENBQUMsU0FBMUQsQ0FBb0UsdUJBQXBFLENBQTdCLENBR0EsS0FBSyxDQUFDLFlBQU4sQ0FBcUIsVUFDckIsNkxBQ1EsR0FBSSxDQUFBLHlCQUFKLENBRUEsR0FBSSx5QkFBQSxZQUFZLENBQUMsVUFBYix3RUFBeUIsYUFBekIsR0FBd0MsU0FBeEMsRUFBcUQseUJBQUEsWUFBWSxDQUFDLFVBQWIsd0VBQXlCLGFBQXpCLENBQXVDLElBQXZDLEtBQStDLEVBQXBHLDBCQUEwRyxZQUFZLENBQUMsVUFBdkgsMkNBQTBHLHVCQUF5QixTQUF2SSxDQUFrSixDQUM5STtBQUNBLEtBQUssQ0FBQyxTQUFOLENBQWdCLFVBQWhCLENBQTJCLGFBQTNCLENBQTJDLFlBQVksQ0FBQyxVQUFiLENBQXdCLGFBQW5FLENBQ0EsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsVUFBaEIsQ0FBMkIsa0JBQTNCLENBQWdELFlBQVksQ0FBQyxVQUFiLENBQXdCLGtCQUF4RSxDQUNBLEtBQUssQ0FBQyxTQUFOLENBQWdCLFVBQWhCLENBQTJCLFlBQTNCLENBQTBDLFlBQVksQ0FBQyxVQUFiLENBQXdCLFNBQWxFLENBQ0EsY0FBYyxDQUFJLEtBQUssQ0FBQyxHQUFOLENBQVUsVUFBVixDQUFxQixZQUFZLENBQUMsVUFBYixDQUF3QixhQUE3QyxDQUEyRCxLQUFLLENBQUMsU0FBTixDQUFnQixVQUEzRSxDQUFsQixDQUNBLGtCQUFrQixDQUFHLGNBQWMsQ0FBQyxPQUFmLENBQXVCLElBQTVDLENBRUEsR0FBSSxjQUFjLENBQUMsTUFBZixHQUF3QixJQUE1QixDQUNJLHlCQUF5QixDQUFHLEtBQUssQ0FBQyxHQUFOLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBdUMsa0JBQXZDLENBQTBELGtCQUExRCxDQUE1QixDQUVQLENBWEQsSUFXTyxJQUFJLHdCQUFBLFlBQVksQ0FBQyxVQUFiLGtFQUF5QixTQUF6QixFQUFzQyx5QkFBQSxZQUFZLENBQUMsVUFBYix3RUFBeUIsU0FBekIsSUFBcUMsU0FBckMsRUFBa0QseUJBQUEsWUFBWSxDQUFDLFVBQWIsd0VBQXlCLGFBQXpCLElBQXlDLFNBQXJJLENBQ1AsNEJBQ0ksY0FBYyxDQUFJLEtBQUssQ0FBQyxHQUFOLENBQVUsVUFBVix5QkFBcUIsWUFBWSxDQUFDLFVBQWxDLGlEQUFxQix1QkFBeUIsYUFBOUMsQ0FBNEQsSUFBNUQsQ0FBbEIsQ0FDQSxrQkFBa0IsQ0FBRyxjQUFjLENBQUMsT0FBZixDQUF1QixJQUE1QyxDQUNBLEdBQUksY0FBYyxDQUFDLE1BQWYsR0FBd0IsSUFBNUIsQ0FDSSx5QkFBeUIsQ0FBRyxLQUFLLENBQUMsR0FBTixDQUFVLFNBQVYsQ0FBb0Isa0JBQXBCLENBQXVDLGtCQUF2QyxDQUEwRCxrQkFBMUQsQ0FBNUIsQ0FFSixHQUFJLGNBQWMsQ0FBQyxPQUFmLENBQXVCLGlCQUF2QixFQUEwQyxDQUE5QyxDQUFnRCxDQUFFO0FBQzlDLEtBQUssQ0FBQyxTQUFOLENBQWdCLFVBQWhCLENBQTZCLGNBQWMsQ0FBQyxPQUFmLENBQXVCLFFBQXBELENBQ0gsQ0FGRCxJQUVPLG9EQUNIO0FBQ0E7QUFDQSxHQUFJLENBQUEsSUFBSSxDQUFHLGNBQWMsQ0FBQyxNQUFmLEVBQVgsQ0FDQSxLQUFLLENBQUMsU0FBTixDQUFnQixVQUFoQixDQUEyQixhQUEzQixDQUEyQyxNQUFNLENBQUMsT0FBUCxDQUFlLElBQWYsQ0FBb0IsR0FBcEIsQ0FBd0IsT0FBeEIsQ0FBZ0MsR0FBaEMsQ0FBb0MsSUFBL0UsQ0FDQSxLQUFLLENBQUMsU0FBTixDQUFnQixVQUFoQixDQUEyQixrQkFBM0IseUJBQWdELFlBQVksQ0FBQyxVQUE3RCxpREFBZ0QsdUJBQXlCLGtCQUF6RSxDQUNBLEtBQUssQ0FBQyxTQUFOLENBQWdCLFVBQWhCLENBQTJCLFlBQTNCLDBCQUEwQyxZQUFZLENBQUMsVUFBdkQsa0RBQTBDLHdCQUF5QixTQUFuRSxDQUNBLGNBQWMsQ0FBSSxLQUFLLENBQUMsR0FBTixDQUFVLFVBQVYsQ0FBcUIsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsVUFBaEIsQ0FBMkIsYUFBaEQsQ0FBOEQsSUFBOUQsQ0FBbEIsQ0FDQSxrQkFBa0IsQ0FBRyxjQUFjLENBQUMsT0FBZixDQUF1QixJQUE1QyxDQUVBLEdBQUksY0FBYyxDQUFDLE1BQWYsR0FBd0IsSUFBNUIsQ0FDSSx5QkFBeUIsQ0FBRyxLQUFLLENBQUMsR0FBTixDQUFVLFNBQVYsQ0FBb0Isa0JBQXBCLENBQXVDLGtCQUF2QyxDQUEwRCxrQkFBMUQsQ0FBNUIsQ0FFSixLQUFLLENBQUMsR0FBTixDQUFVLGFBQVYsQ0FBd0Isa0JBQXhCLENBQTJDLGtCQUEzQyxDQUErRCxLQUFLLENBQUMsU0FBTixDQUFnQixVQUEvRSxFQUNILENBQ0osQ0F4Qk0sSUEwQlAscURBQ0k7QUFDQTtBQUNBLEdBQUksQ0FBQSxLQUFJLENBQUcsY0FBYyxDQUFDLE1BQWYsRUFBWCxDQUNBLEtBQUssQ0FBQyxTQUFOLENBQWdCLFVBQWhCLENBQTJCLGFBQTNCLENBQTJDLE1BQU0sQ0FBQyxPQUFQLENBQWUsSUFBZixDQUFvQixHQUFwQixDQUF3QixPQUF4QixDQUFnQyxHQUFoQyxDQUFvQyxLQUEvRSxDQUNBLEtBQUssQ0FBQyxTQUFOLENBQWdCLFVBQWhCLENBQTJCLGtCQUEzQiwwQkFBZ0QsWUFBWSxDQUFDLFVBQTdELGtEQUFnRCx3QkFBeUIsa0JBQXpFLENBQ0EsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsVUFBaEIsQ0FBMkIsWUFBM0IsMEJBQTBDLFlBQVksQ0FBQyxVQUF2RCxrREFBMEMsd0JBQXlCLFNBQW5FLENBQ0EsY0FBYyxDQUFJLEtBQUssQ0FBQyxHQUFOLENBQVUsVUFBVixDQUFxQixLQUFLLENBQUMsU0FBTixDQUFnQixVQUFoQixDQUEyQixhQUFoRCxDQUE4RCxJQUE5RCxDQUFsQixDQUNBLGtCQUFrQixDQUFHLGNBQWMsQ0FBQyxPQUFmLENBQXVCLElBQTVDLENBQ0EsR0FBSSxjQUFjLENBQUMsTUFBZixHQUF3QixJQUE1QixDQUNJLHlCQUF5QixDQUFHLEtBQUssQ0FBQyxHQUFOLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBdUMsa0JBQXZDLENBQTBELGtCQUExRCxDQUE1QixDQUVKLEtBQUssQ0FBQyxHQUFOLENBQVUsYUFBVixDQUF3QixrQkFBeEIsQ0FBMkMsa0JBQTNDLENBQStELEtBQUssQ0FBQyxTQUFOLENBQWdCLFVBQS9FLEVBQ0gsQ0FDRCxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsYUFBekIsQ0FBdUMsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsVUFBaEIsQ0FBMkIsYUFBbEUsQ0FDQSxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsa0JBQXpCLENBQTRDLEtBQUssQ0FBQyxTQUFOLENBQWdCLFVBQWhCLENBQTJCLGtCQUF2RSxDQUNBLEtBQUssQ0FBQyxrQkFBTixDQUF5QixNQUF6QixDQUFpQyxLQUFLLENBQUMsVUFBdkMsQ0FDQSxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsZ0JBQXpCLENBQTJDLEtBQUssQ0FBQyxTQUFOLENBQWdCLFVBQWhCLENBQTJCLGdCQUF0RSxDQUNBLEtBQUssQ0FBQyxrQkFBTixDQUF5QixZQUF6Qix5QkFBc0MsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsVUFBaEIsQ0FBMkIsWUFBakUsaURBQXNDLHVCQUF5QyxNQUEvRSxDQUNBLEtBQUssQ0FBQyxrQkFBTixDQUF5QixxQkFBekIseUJBQStDLEtBQUssQ0FBQyxTQUFOLENBQWdCLFVBQWhCLENBQTJCLFlBQTFFLGlEQUErQyx1QkFBeUMsZ0JBQXhGLENBRUEsS0FBSyxDQUFDLEdBQU4sQ0FBVSxhQUFWLENBQXdCLGtCQUF4QixDQUEyQyxrQkFBa0IsQ0FBQyxTQUE5RCxDQUF5RSxLQUFLLENBQUMsU0FBTixDQUFnQixVQUFoQixDQUEyQixVQUFwRyxFQUNBLEtBQUssQ0FBQyxxQkFBTixHQUNQLENBaEVELENBZ0VDO0FBR0QsR0FBSSxDQUFBLGlCQUFpQixDQUFHLFFBQXBCLENBQUEsaUJBQW9CLENBQVMsSUFBVCxDQUN4QixDQUNZLG1CQUFtQixDQUFDLE9BQXBCLENBQTRCLGVBQTVCLENBQThDLElBQTlDLENBQ0EsbUJBQW1CLENBQUMsT0FBcEIsQ0FBNEIsZUFBNUIsQ0FBNEMsbUJBQTVDLEVBRVgsQ0FMRCxDQVFBLEtBQUssQ0FBQyxlQUFOLENBQXdCLFVBQ3hCLENBQ0ksb0JBQW9CLENBQUMsZUFBckIsQ0FBcUMsS0FBSyxDQUFDLFVBQTNDLENBQXNELEdBQXRELENBQTBELElBQTFELEVBQWdFLElBQWhFLENBQ1EsU0FBUyxJQUFULENBQWUsQ0FDQyxHQUFJLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBVixDQUFrQixNQUFsQixDQUF5QixDQUE3QixDQUErQixDQUMxQixLQUFLLENBQUMsU0FBTixDQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQWxCLENBQVQsQ0FBb0MsSUFBSSxDQUFDLEVBQXpDLENBQWxCLENBQ0osQ0FGRCxJQUdJLENBQUEsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsQ0FBQyxPQUFPLENBQUcsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLGdCQUFoQixFQUFSLENBQVgsQ0FBdUQsSUFBSSxDQUFDLEVBQTVELENBQWhCLENBRUosS0FBSyxDQUFDLGtCQUFOLENBQTBCLElBQUksQ0FBQyxJQUFMLENBQVUsa0JBQXBDLENBQ0EsS0FBSyxDQUFDLGtCQUFOLENBQXlCLFVBQXpCLENBQXNDLENBQUMsWUFBWSxDQUFDLENBQWQsQ0FBdEMsQ0FFQSxLQUFLLENBQUMsS0FBTixDQUFZLGVBQVosQ0FBNEIsS0FBSyxDQUFDLGtCQUFOLENBQXlCLFVBQXpCLENBQW9DLFlBQWhFLEVBQ0EsS0FBSyxDQUFDLGtCQUFOLENBQXlCLGVBQXpCLENBQTJDLEtBQTNDLENBRUEsS0FBSyxDQUFDLFlBQU4sR0FDQSxHQUFJLEtBQUssQ0FBQyxrQkFBTixDQUF5QixVQUF6QixDQUFvQyxVQUF4QyxDQUNRLEtBQUssQ0FBQyxLQUFOLENBQVksY0FBWixDQUEyQixLQUFLLENBQUMsa0JBQU4sQ0FBeUIsVUFBekIsQ0FBb0MsT0FBL0QsRUFEUixJQUVLLENBQUEsS0FBSyxDQUFDLEtBQU4sQ0FBWSxnQkFBWixHQUNMLEtBQUssQ0FBQyxVQUFOLENBQWlCLElBQWpCLENBRUEsR0FBSSxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsY0FBekIsR0FBMEMsU0FBOUMsQ0FDUSxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsY0FBekIsQ0FBd0MsQ0FBQyxrQkFBa0IsQ0FBQyxnQ0FBcEIsQ0FBeEMsQ0FEUixJQUVLLElBQUksS0FBSyxDQUFDLGtCQUFOLENBQXlCLGNBQXpCLENBQXdDLGtCQUF4QyxHQUE2RCxTQUFqRSxDQUNHLEtBQUssQ0FBQyxrQkFBTixDQUF5QixjQUF6QixDQUF3QyxrQkFBeEMsQ0FBNkQsZ0NBQTdELENBRVAsQ0F4QnpCLENBd0IwQixTQUFTLEtBQVQsQ0FBZSxDQUNmLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNBLEtBQUssQ0FBQyxVQUFOLENBQWlCLElBQWpCLENBRUosQ0E1QnRCLEVBNkJILENBL0JELENBaUNBLEtBQUssQ0FBQyxxQkFBTixDQUE4QixVQUFZLENBRTlCLG9CQUFvQixDQUFDLGlCQUFyQixDQUF1QyxLQUFLLENBQUMsVUFBN0MsRUFBeUQsSUFBekQsQ0FDSSxTQUFTLElBQVQsQ0FBZSwyQkFDWCxLQUFLLENBQUMsUUFBTixDQUFpQixJQUFJLENBQUMsSUFBdEIsQ0FDQSxHQUFJLEtBQUssQ0FBQyxRQUFOLENBQWUsVUFBZixFQUEyQixJQUEvQixDQUFxQyxDQUM3QixLQUFLLENBQUMsUUFBTixDQUFlLFVBQWYsQ0FBNEIsQ0FBQyxNQUFNLENBQUMsSUFBUixDQUFhLFFBQVEsQ0FBQyxJQUF0QixDQUEyQixhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQUQsQ0FBekMsQ0FBa0QsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQVYsQ0FBZSxXQUFXLENBQUMsSUFBM0IsQ0FBZ0MsTUFBTSxDQUFDLElBQXZDLENBQTRDLFNBQVMsQ0FBQyxJQUF0RCxDQUF2RCxDQUE1QixDQUNQLENBRUQsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsVUFBaEIsQ0FBNkIsS0FBSyxDQUFDLFFBQW5DLENBQ0EsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsVUFBaEIsQ0FBMkIsZ0JBQTNCLENBQThDLEtBQUssQ0FBQyxnQkFBcEQsQ0FDQSxLQUFLLENBQUMsU0FBTixDQUFnQixTQUFoQix3QkFBNEIsS0FBSyxDQUFDLFFBQU4sQ0FBZSxnQkFBM0MsZ0RBQTRCLHNCQUFpQyxTQUE3RCxDQUVBLEdBQUksS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsU0FBaEIsR0FBOEIsU0FBbEMsQ0FBNkMsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsU0FBaEIsQ0FBNEIsRUFBNUIsQ0FDN0MsR0FBSSxLQUFLLENBQUMsU0FBTixDQUFnQixTQUFoQixDQUEwQixNQUExQixDQUFpQyxDQUFyQyxDQUEyQyxDQUNuQyxHQUFJLEtBQUssQ0FBQyxTQUFOLENBQWdCLFVBQWhCLENBQTJCLFVBQTNCLEVBQXVDLFNBQTNDLENBQXdELEtBQUssQ0FBQyxTQUFOLENBQWdCLFVBQWhCLENBQTJCLFVBQTNCLENBQXNDLEVBQXRDLENBQ3hELEtBQUssQ0FBQyxTQUFOLENBQWdCLFVBQWhCLENBQTJCLFVBQTNCLENBQXNDLFFBQXRDLENBQWlELElBQWpELENBQ1AsQ0FDRCxLQUFLLENBQUMsZUFBTixHQUVQLENBbEJELENBa0JFLFNBQVMsS0FBVCxDQUFlLENBQ0gsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ2IsQ0FwQkQsRUFxQlAsQ0F2QkwsQ0EwQkksS0FBSyxDQUFDLHFCQUFOLENBQTRCLFVBQzVCLENBQ0ksS0FBSyxDQUFDLEdBQU4sQ0FBVSxpQkFBaUIsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsVUFBaEIsQ0FBMkIsYUFBdEQsQ0FDSSxTQUFTLEtBQVQsQ0FBZSxJQUFmLENBQW9CLENBQ2hCLEdBQUksQ0FBQSxJQUFJLENBQUcsS0FBSyxDQUFDLE9BQU8sS0FBSyxDQUFDLFVBQWQsQ0FBaEIsQ0FDQSxJQUFJLENBQUMsYUFBTCxHQUNBLEtBQUssQ0FBQyxTQUFOLENBQWdCLGNBQWhCLENBQStCLElBQS9CLENBQW9DLElBQUksQ0FBQyxZQUF6QyxFQUNQLENBTEQsRUFPQSx1QkFBdUIsQ0FBRSwwQkFBMEIsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsVUFBaEIsQ0FBMkIsYUFBOUUsQ0FDQSxtQkFBbUIsQ0FBRSxLQUFLLENBQUMsR0FBTixDQUFVLFVBQVYsQ0FBcUIsdUJBQXJCLENBQTZDLEtBQUssQ0FBQyxTQUFOLENBQWdCLFVBQWhCLENBQTJCLGFBQXhFLENBQXJCLENBQ0EsR0FBSSxDQUFBLHdCQUF3QixDQUFHLEtBQUssQ0FBQyxHQUFOLENBQVUsU0FBVixDQUFvQix1QkFBcEIsQ0FBNEMsbUJBQTVDLENBQWdFLGlCQUFoRSxDQUEvQixDQUNILENBWkQsQ0FlQSxLQUFLLENBQUMsU0FBTixDQUFnQixjQUFoQixDQUFpQyxTQUFTLElBQVQsQ0FBYyxVQUFkLENBQ2pDLENBQ0ssR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNBLEdBQUksSUFBSSxDQUFDLE1BQVQsQ0FBaUIsQ0FDZCxvQkFBb0IsQ0FBQyxjQUFyQixDQUFvQyxLQUFLLENBQUMsVUFBMUMsQ0FBcUQsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsSUFBckUsQ0FBMEUsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsVUFBaEIsQ0FBMkIsZ0JBQXJHLENBQXNILEtBQUssQ0FBQyxZQUE1SCxFQUEwSSxJQUExSSxDQUNJLFNBQVMsSUFBVCxDQUFlLGlCQUNWLEdBQUksQ0FBQSxJQUFJLE9BQUosRUFBQSxJQUFJLFNBQUoscUJBQUEsSUFBSSxDQUFFLElBQU4sa0RBQVksR0FBWixJQUFrQixFQUF0QixDQUEwQixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLEdBQXRDLENBQTBDLFNBQTFDLEVBQzFCLFVBQVUsQ0FBQyxVQUFYLENBQXNCLDJCQUEyQixLQUFLLENBQUMsU0FBTixDQUFnQixVQUFoQixDQUEyQixhQUE1RSxDQUEwRixJQUFJLENBQUMsSUFBTCxDQUFVLFNBQXBHLEVBQ0EsS0FBSyxDQUFDLEdBQU4sQ0FBVSxhQUFWLENBQXdCLHVCQUF4QixDQUFnRCxtQkFBaEQsQ0FBb0UsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQWYsQ0FBMEIsTUFBTSxDQUFDLGFBQWpDLENBQStDLGVBQWUsVUFBOUQsQ0FBcEUsRUFDSCxDQUxOLENBS08sU0FBUyxLQUFULENBQWUsQ0FDWCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDQSxLQUFLLENBQUMsR0FBTixDQUFVLGFBQVYsQ0FBd0IsdUJBQXhCLENBQWdELG1CQUFoRCxDQUFvRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBZixDQUEwQixNQUFNLENBQUMsYUFBakMsQ0FBK0MsZUFBZSxVQUE5RCxDQUF5RSxRQUFRLElBQWpGLENBQXBFLEVBQ1QsQ0FSRixFQVVGLENBQUM7QUFYRixJQVlLLENBQ0QsS0FBSyxDQUFDLEdBQU4sQ0FBVSxhQUFWLENBQXdCLHVCQUF4QixDQUFnRCxtQkFBaEQsQ0FBb0UsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQWYsQ0FBMEIsTUFBTSxDQUFDLGFBQWpDLENBQStDLGVBQWUsVUFBOUQsQ0FBeUUsUUFBUSxJQUFqRixDQUFwRSxFQUNBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxrQkFBTixDQUF5QixjQUF6QixDQUF3QyxrQkFBcEUsQ0FBdUYsU0FBdkYsRUFDSCxDQUNBLENBbkJOLENBcUJKO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUdnQixLQUFLLENBQUMsZUFBTixDQUF3QixTQUFTLE1BQVQsQ0FBaUIsV0FBakIsQ0FDeEIsQ0FDSSxHQUFJLENBQUEsYUFBYSxDQUFHLFNBQVMsQ0FBQyxNQUFWLEdBQW1CLFNBQXZDLENBQ0EsR0FBSSxDQUFDLFdBQUwsQ0FBa0IsV0FBVyxDQUFDLENBQVosQ0FFbEIsb0JBQW9CLENBQUMsZUFBckIsQ0FBcUMsTUFBckMsQ0FBNkMsV0FBN0MsQ0FBMEQsYUFBMUQsRUFBeUUsSUFBekUsQ0FFSSxTQUFTLElBQVQsQ0FBZSxxS0FDWDtBQUNBLEtBQUssQ0FBQyxnQkFBTixDQUF5QixJQUF6QixTQUF5QixJQUF6Qiw4QkFBeUIsSUFBSSxDQUFFLElBQS9CLDREQUF5QixZQUFZLFFBQXJDLCtDQUF5QixxQkFBc0IsRUFBL0MsQ0FDQSxNQUFNLENBQUMsTUFBUCxDQUFjLFNBQWQsQ0FBMEIsS0FBSyxDQUFDLGdCQUFoQyxDQUNBLEtBQUssQ0FBQyxRQUFOLENBQWlCLElBQWpCLFNBQWlCLElBQWpCLDhCQUFpQixJQUFJLENBQUUsSUFBdkIsc0NBQWlCLFlBQVksTUFBN0IsQ0FFQSxHQUFJLENBQUEsYUFBYSxPQUFiLEVBQUEsYUFBYSxTQUFiLFFBQUEsYUFBYSxDQUFFLFFBQWYsS0FBMkIsR0FBL0IsQ0FBb0M7QUFDNUIsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsTUFBTSxDQUFDLE9BQVAsQ0FBZSxJQUFuQyxDQUF5QyxNQUFNLENBQUMsTUFBaEQsQ0FBd0QsQ0FBRSxNQUFNLENBQUUsS0FBVixDQUFtQixRQUFRLENBQUMsU0FBNUIsQ0FBdUMsT0FBTyxDQUFDLElBQS9DLENBQXhELEVBQ1IsR0FBSSxLQUFLLENBQUMsUUFBTixDQUFlLFVBQWYsRUFBMkIsSUFBL0IsQ0FBcUMsQ0FDN0IsS0FBSyxDQUFDLFFBQU4sQ0FBZSxVQUFmLENBQTRCLENBQUMsTUFBTSxDQUFDLElBQVIsQ0FBYSxRQUFRLENBQUMsSUFBdEIsQ0FBMkIsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFELENBQXpDLENBQWtELElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFWLENBQWUsV0FBVyxDQUFDLElBQTNCLENBQWdDLE1BQU0sQ0FBQyxJQUF2QyxDQUE0QyxTQUFTLENBQUMsSUFBdEQsQ0FBdkQsQ0FBNUIsQ0FDUCxDQUVELEtBQUssQ0FBQyxTQUFOLENBQWdCLFVBQWhCLENBQTZCLEtBQUssQ0FBQyxRQUFuQyxDQUNBLEtBQUssQ0FBQyxTQUFOLENBQWdCLFVBQWhCLENBQTJCLGdCQUEzQixDQUE4QyxLQUFLLENBQUMsZ0JBQXBELENBRUE7QUFDQSxHQUFJLENBQUEsSUFBSSxDQUFHLENBQVgsQ0FDQSxHQUFJLENBQUEsT0FBTyx5QkFBRyxLQUFLLENBQUMsUUFBTixDQUFlLGdCQUFsQix5RUFBRyx1QkFBaUMsTUFBakMsQ0FBd0MsQ0FBeEMsQ0FBSCxpREFBRyx1QkFBNEMsU0FBMUQsQ0FDQSxHQUFJLENBQUEsS0FBSyxpREFBRyxLQUFLLENBQUMsUUFBTixDQUFlLGdCQUFsQix5RUFBRyx1QkFBaUMsTUFBakMsQ0FBd0MsQ0FBeEMsQ0FBSCxpREFBRyx1QkFBNEMsaUJBQS9DLGlFQUFvRSxDQUE3RSxDQUVBLEtBQUssQ0FBQyxrQkFBTixDQUEwQixLQUFLLENBQUMsUUFBaEMsQ0FBeUM7QUFFekMsS0FBSyxDQUFDLGtCQUFOLENBQXlCLFVBQXpCLENBQXNDLENBQUMsWUFBWSxDQUFDLENBQWQsQ0FBdEMsQ0FFQSxLQUFLLENBQUMsS0FBTixDQUFZLGVBQVosQ0FBNEIsS0FBSyxDQUFDLGtCQUFOLENBQXlCLFVBQXpCLENBQW9DLFlBQWhFLEVBQ0EsS0FBSyxDQUFDLGtCQUFOLENBQXlCLGVBQXpCLENBQTJDLEtBQTNDLENBQ0EsS0FBSyxDQUFDLGtCQUFOLENBQXlCLFVBQXpCLENBQXNDLFdBQXRDLENBQ0EsR0FBSSxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsVUFBekIsQ0FBb0MsVUFBeEMsQ0FBdUQsS0FBSyxDQUFDLEtBQU4sQ0FBWSxjQUFaLENBQTJCLEtBQUssQ0FBQyxrQkFBTixDQUF5QixVQUF6QixDQUFvQyxPQUEvRCxFQUF2RCxJQUNLLENBQUEsS0FBSyxDQUFDLEtBQU4sQ0FBWSxnQkFBWixHQUdMLEdBQUksT0FBTyxFQUFFLFNBQWIsQ0FBd0IsQ0FDcEIsV0FBVyxDQUFDLFdBQVosQ0FBd0IsT0FBeEIsQ0FBZ0MsSUFBaEMsQ0FBcUMsS0FBckMsRUFBNEMsSUFBNUMsQ0FDSSxTQUFVLEtBQVYsQ0FBaUIsQ0FDYixLQUFLLENBQUMsWUFBTixDQUFtQixXQUFuQixDQUErQixPQUEvQixDQUF1QyxLQUF2QyxDQUE2QyxLQUFLLENBQUMsS0FBbkQsQ0FBeUQsS0FBSyxDQUFDLFVBQS9ELEVBQ0EsR0FBSSxLQUFLLENBQUMsWUFBTixDQUFtQixRQUFuQixDQUE0QixLQUE1QixDQUFrQyxNQUFsQyxDQUF5QyxDQUE3QyxDQUFpRCxDQUM3QyxHQUFJLEtBQUssQ0FBQyxTQUFOLENBQWdCLFVBQWhCLENBQTJCLFVBQTNCLEVBQXVDLFNBQTNDLENBQXNELEtBQUssQ0FBQyxTQUFOLENBQWdCLFVBQWhCLENBQTJCLFVBQTNCLENBQXNDLEVBQXRDLENBQ3RELEtBQUssQ0FBQyxTQUFOLENBQWdCLFVBQWhCLENBQTJCLFVBQTNCLENBQXNDLFFBQXRDLENBQWlELElBQWpELENBQ0gsQ0FDRCxLQUFLLENBQUMsWUFBTixHQUNBLEtBQUssQ0FBQyxVQUFOLENBQWlCLElBQWpCLENBQ0gsQ0FUTCxFQVVILENBWEQsSUFXUSxDQUVKLEtBQUssQ0FBQyxZQUFOLENBQW1CLGFBQW5CLEdBQ0EsS0FBSyxDQUFDLFlBQU4sR0FDQSxLQUFLLENBQUMsVUFBTixDQUFpQixJQUFqQixDQUNILENBSUQsR0FBSSxJQUFJLENBQUMsSUFBTCxDQUFVLElBQVYsQ0FBZSxNQUFmLENBQXNCLENBQTFCLENBQ0ssS0FBSyxDQUFDLFNBQU4sQ0FBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUFsQixDQUFULENBQWlDLElBQUksQ0FBQyxFQUF0QyxDQUFsQixDQURMLElBR0ksQ0FBQSxLQUFLLENBQUMsU0FBTixDQUFnQixDQUFDLE9BQU8sQ0FBRyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsZ0JBQWhCLEVBQVIsQ0FBWCxDQUF1RCxJQUFJLENBQUMsRUFBNUQsQ0FBaEIsQ0FNUixHQUFJLEtBQUssQ0FBQyxrQkFBTixDQUF5QixjQUF6QixHQUEwQyxTQUE5QyxDQUNRLEtBQUssQ0FBQyxrQkFBTixDQUF5QixjQUF6QixDQUF3QyxDQUFDLGtCQUFrQixDQUFDLGdDQUFwQixDQUF4QyxDQURSLElBRUssSUFBSSxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsY0FBekIsQ0FBd0Msa0JBQXhDLEdBQTZELFNBQWpFLENBQ0csS0FBSyxDQUFDLGtCQUFOLENBQXlCLGNBQXpCLENBQXdDLGtCQUF4QyxDQUE2RCxnQ0FBN0QsQ0FFWCxDQW5FRCxDQW1FRSxTQUFTLEtBQVQsQ0FBZSxDQUNiLEtBQUssQ0FBQyxVQUFOLENBQWlCLElBQWpCLENBQ0EsS0FBSyxDQUFDLFlBQU4sQ0FBcUIsSUFBckIsQ0FDQSxLQUFLLENBQUMsVUFBTixDQUFpQixJQUFqQixDQUNBLE1BQU0sQ0FBQyxNQUFQLENBQWMsU0FBZCxDQUEwQixTQUExQixDQUVBLEdBQUksQ0FBQSxhQUFhLE9BQWIsRUFBQSxhQUFhLFNBQWIsUUFBQSxhQUFhLENBQUUsUUFBZixLQUEyQixHQUEvQixDQUNRLE1BQU0sQ0FBQyxZQUFQLENBQXFCLE1BQU0sQ0FBQyxPQUFQLENBQWUsSUFBcEMsQ0FBMEMsTUFBTSxDQUFDLE1BQWpELENBQTBELENBQUUsTUFBTSxDQUFFLEtBQVYsQ0FBbUIsUUFBUSxDQUFDLFNBQTVCLENBQXVDLE9BQU8sQ0FBQyxJQUEvQyxDQUExRCxFQUNSLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNILENBNUVELEVBOEVILENBbkZELENBc0ZDLEtBQUssQ0FBQyxjQUFOLENBQXVCLFNBQVMsS0FBVCxDQUFlLE1BQWYsQ0FBdUIsV0FBdkIsQ0FDdkIsQ0FFRyxHQUFJLENBQUEsYUFBYSxDQUFHLFNBQVMsQ0FBQyxNQUFWLEdBQW1CLFNBQXZDLENBRUEsR0FBSSxDQUFBLFVBQVUsQ0FBRyxTQUFTLENBQUMsTUFBVixHQUFtQixHQUFwQyxDQUVBLEdBQUksVUFBSixDQUFnQixDQUNaLGNBQWMsQ0FBQyxPQUFmLENBQXVCLGFBQXZCLENBQXNDLFVBQXRDLEVBQ0EsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsVUFBbkIsQ0FBaUMsVUFBakMsQ0FDSCxDQUhELElBR08sQ0FBQSxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsRUFFUCxLQUFLLENBQUMsWUFBTixDQUFtQixhQUFuQixDQUFpQyxJQUFqQyxFQUNBLG9CQUFvQixDQUFDLGNBQXJCLENBQW9DLEtBQXBDLENBQTBDLE1BQTFDLENBQWtELFdBQWxELENBQStELGFBQS9ELEVBQThFLElBQTlFLENBQ0ksU0FBUyxJQUFULENBQWUsOExBRVg7QUFDQSxLQUFLLENBQUMsZ0JBQU4sQ0FBeUIsSUFBekIsU0FBeUIsSUFBekIsK0JBQXlCLElBQUksQ0FBRSxJQUEvQiw4REFBeUIsYUFBWSxRQUFyQyxnREFBeUIsc0JBQXNCLEVBQS9DLENBQ0EsTUFBTSxDQUFDLE1BQVAsQ0FBYyxTQUFkLENBQTBCLEtBQUssQ0FBQyxnQkFBaEMsQ0FFQSxHQUFJLENBQUEsYUFBYSxPQUFiLEVBQUEsYUFBYSxTQUFiLFFBQUEsYUFBYSxDQUFFLFFBQWYsS0FBMkIsR0FBL0IsQ0FBb0M7QUFDNUIsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsTUFBTSxDQUFDLE9BQVAsQ0FBZSxJQUFuQyxDQUF5QyxNQUFNLENBQUMsTUFBaEQsQ0FBd0QsQ0FBRSxNQUFNLENBQUUsS0FBVixDQUFtQixRQUFRLENBQUMsU0FBNUIsQ0FBdUMsT0FBTyxDQUFDLElBQS9DLENBQXhELEVBQ1IsS0FBSyxDQUFDLFFBQU4sQ0FBaUIsSUFBakIsU0FBaUIsSUFBakIsK0JBQWlCLElBQUksQ0FBRSxJQUF2Qix1Q0FBaUIsYUFBWSxNQUE3QixDQUNBLEdBQUksS0FBSyxDQUFDLFFBQU4sQ0FBZSxVQUFmLEVBQTJCLElBQS9CLENBQXFDLENBQzdCLEtBQUssQ0FBQyxRQUFOLENBQWUsVUFBZixDQUE0QixDQUFDLE1BQU0sQ0FBQyxJQUFSLENBQWEsUUFBUSxDQUFDLElBQXRCLENBQTJCLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBRCxDQUF6QyxDQUFrRCxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBVixDQUFlLFdBQVcsQ0FBQyxJQUEzQixDQUFnQyxNQUFNLENBQUMsSUFBdkMsQ0FBNEMsU0FBUyxDQUFDLElBQXRELENBQXZELENBQTVCLENBQ1AsQ0FFRCxLQUFLLENBQUMsU0FBTixDQUFnQixVQUFoQixDQUE2QixLQUFLLENBQUMsUUFBbkMsQ0FDQSxLQUFLLENBQUMsU0FBTixDQUFnQixVQUFoQixDQUEyQixnQkFBM0IsQ0FBOEMsS0FBSyxDQUFDLGdCQUFwRCxDQUVBLEtBQUssQ0FBQyxVQUFOLENBQW1CLEtBQUssQ0FBQyxRQUFOLENBQWUsR0FBbEMsQ0FFQSxHQUFJLENBQUEsSUFBSSxDQUFHLENBQVgsQ0FDQSxHQUFJLENBQUEsT0FBTyx5QkFBRyxLQUFLLENBQUMsUUFBTixDQUFlLGdCQUFsQix5RUFBRyx1QkFBaUMsTUFBakMsQ0FBd0MsQ0FBeEMsQ0FBSCxpREFBRyx1QkFBNEMsU0FBMUQsQ0FDQSxHQUFJLENBQUEsS0FBSyxrREFBRyxLQUFLLENBQUMsUUFBTixDQUFlLGdCQUFsQiwyRUFBRyx3QkFBaUMsTUFBakMsQ0FBd0MsQ0FBeEMsQ0FBSCxrREFBRyx3QkFBNEMsaUJBQS9DLGlFQUFvRSxDQUE3RSxDQUVBLHFCQUFxQixDQUFDLGNBQXRCLENBQXFDLElBQUksQ0FBQyxJQUFMLENBQVUsUUFBL0Msc0JBQXdELElBQUksQ0FBQyxJQUFMLENBQVUsUUFBbEUsOENBQXdELG9CQUFvQixRQUE1RSxDQUFzRixFQUF0RixDQUF5RixLQUF6RixFQUdBLEtBQUssQ0FBQyxrQkFBTixDQUEwQixLQUFLLENBQUMsUUFBaEMsQ0FBeUM7QUFDekMsS0FBSyxDQUFDLGtCQUFOLENBQXlCLFVBQXpCLENBQXNDLENBQUMsWUFBWSxDQUFDLENBQWQsQ0FBdEMsQ0FFQSxLQUFLLENBQUMsS0FBTixDQUFZLGVBQVosQ0FBNEIsS0FBSyxDQUFDLGtCQUFOLENBQXlCLFVBQXpCLENBQW9DLFlBQWhFLEVBQ0EsS0FBSyxDQUFDLGtCQUFOLENBQXlCLGVBQXpCLENBQTJDLEtBQTNDLENBRUEsR0FBSSxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsVUFBekIsQ0FBb0MsVUFBeEMsQ0FDSSxLQUFLLENBQUMsS0FBTixDQUFZLGNBQVosQ0FBMkIsS0FBSyxDQUFDLGtCQUFOLENBQXlCLFVBQXpCLENBQW9DLE9BQS9ELEVBREosSUFFSyxDQUFBLEtBQUssQ0FBQyxLQUFOLENBQVksZ0JBQVosR0FJTCxHQUFJLElBQUksQ0FBQyxJQUFMLENBQVUsSUFBVixDQUFlLE1BQWYsQ0FBc0IsQ0FBMUIsQ0FDSyxLQUFLLENBQUMsU0FBTixDQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBTCxDQUFVLElBQWxCLENBQVQsQ0FBaUMsSUFBSSxDQUFDLEVBQXRDLENBQWxCLENBREwsSUFHSSxDQUFBLEtBQUssQ0FBQyxTQUFOLENBQWdCLENBQUMsT0FBTyxDQUFHLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxnQkFBaEIsRUFBUixDQUFYLENBQXVELElBQUksQ0FBQyxFQUE1RCxDQUFoQixDQUVKLEtBQUssQ0FBQyxVQUFOLENBQWlCLElBQWpCLENBRUEsR0FBSSxPQUFPLEVBQUUsU0FBYixDQUF3QixDQUNwQixXQUFXLENBQUMsV0FBWixDQUF3QixPQUF4QixDQUFnQyxJQUFoQyxDQUFxQyxLQUFyQyxFQUE0QyxJQUE1QyxDQUNJLFNBQVUsS0FBVixDQUFpQixDQUNiLEtBQUssQ0FBQyxZQUFOLENBQW1CLFdBQW5CLENBQStCLE9BQS9CLENBQXVDLEtBQXZDLENBQTZDLEtBQUssQ0FBQyxLQUFuRCxDQUF5RCxLQUFLLENBQUMsVUFBL0QsRUFFQSxHQUFJLEtBQUssQ0FBQyxZQUFOLENBQW1CLFFBQW5CLENBQTRCLEtBQTVCLENBQWtDLE1BQWxDLENBQXlDLENBQTdDLENBQWlELENBQzdDLEdBQUksS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsVUFBaEIsQ0FBMkIsVUFBM0IsRUFBdUMsU0FBM0MsQ0FBc0QsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsVUFBaEIsQ0FBMkIsVUFBM0IsQ0FBc0MsRUFBdEMsQ0FDdEQsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsVUFBaEIsQ0FBMkIsVUFBM0IsQ0FBc0MsUUFBdEMsQ0FBaUQsSUFBakQsQ0FDSCxDQUNELEtBQUssQ0FBQyxZQUFOLEdBRUgsQ0FWTCxFQVlILENBYkQsSUFjQSxDQUNJLEtBQUssQ0FBQyxZQUFOLENBQW1CLGFBQW5CLEdBQ0EsS0FBSyxDQUFDLFlBQU4sR0FDSCxDQUVELEdBQUksS0FBSyxDQUFDLGtCQUFOLENBQXlCLGNBQXpCLEdBQTBDLFNBQTlDLENBQ0ksS0FBSyxDQUFDLGtCQUFOLENBQXlCLGNBQXpCLENBQXdDLENBQUMsa0JBQWtCLENBQUMsZ0NBQXBCLENBQXhDLENBREosSUFFSyxJQUFJLEtBQUssQ0FBQyxrQkFBTixDQUF5QixjQUF6QixDQUF3QyxrQkFBeEMsR0FBNkQsU0FBakUsQ0FDRCxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsY0FBekIsQ0FBd0Msa0JBQXhDLENBQTZELGdDQUE3RCxDQUVYLENBckVELENBcUVFLFNBQVMsS0FBVCxDQUFlLENBQ2IsS0FBSyxDQUFDLFVBQU4sQ0FBaUIsSUFBakIsQ0FDQSxLQUFLLENBQUMsWUFBTixDQUFxQixJQUFyQixDQUNBLEtBQUssQ0FBQyxVQUFOLENBQWlCLElBQWpCLENBQ0EsTUFBTSxDQUFDLE1BQVAsQ0FBYyxTQUFkLENBQTBCLFNBQTFCLENBQ0EsR0FBSSxDQUFBLGFBQWEsT0FBYixFQUFBLGFBQWEsU0FBYixRQUFBLGFBQWEsQ0FBRSxRQUFmLEtBQTJCLEdBQS9CLENBQ0ksTUFBTSxDQUFDLFlBQVAsQ0FBb0IsTUFBTSxDQUFDLE9BQVAsQ0FBZSxJQUFuQyxDQUF5QyxNQUFNLENBQUMsTUFBaEQsQ0FBeUQsQ0FBRSxNQUFNLENBQUUsS0FBVixDQUFtQixRQUFRLENBQUMsU0FBNUIsQ0FBdUMsT0FBTyxDQUFDLElBQS9DLENBQXpELEVBQ0osZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0gsQ0E3RUQsRUErRUgsQ0E1RkEsQ0E4RkEsS0FBSyxDQUFDLFlBQU4sQ0FBcUIsU0FBUyxLQUFULENBQWUsT0FBZixDQUF1QixNQUF2QixDQUErQixXQUEvQixDQUNyQixDQUVHLEdBQUksQ0FBQSxhQUFhLENBQUcsU0FBUyxDQUFDLE1BQVYsR0FBbUIsU0FBdkMsQ0FFQSxHQUFJLENBQUEsVUFBVSxDQUFHLFNBQVMsQ0FBQyxNQUFWLEdBQW1CLEdBQXBDLENBRUEsR0FBSSxVQUFKLENBQWdCLENBQ1osY0FBYyxDQUFDLE9BQWYsQ0FBdUIsYUFBdkIsQ0FBc0MsVUFBdEMsRUFDQSxVQUFVLENBQUMsT0FBWCxDQUFtQixVQUFuQixDQUFpQyxVQUFqQyxDQUNILENBSEQsSUFHTyxDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBVixFQUVQLG9CQUFvQixDQUFDLFlBQXJCLENBQWtDLEtBQWxDLENBQXdDLE9BQXhDLENBQWdELE1BQWhELENBQXdELFdBQXhELENBQXFFLGFBQXJFLEVBQW9GLElBQXBGLENBRU0sU0FBUyxJQUFULENBQWUsNktBQ2I7QUFDQSxLQUFLLENBQUMsZ0JBQU4sQ0FBeUIsSUFBekIsU0FBeUIsSUFBekIsK0JBQXlCLElBQUksQ0FBRSxJQUEvQiw4REFBeUIsYUFBWSxRQUFyQyxnREFBeUIsc0JBQXNCLEVBQS9DLENBQ0EsTUFBTSxDQUFDLE1BQVAsQ0FBYyxTQUFkLENBQTBCLEtBQUssQ0FBQyxnQkFBaEMsQ0FDQSxLQUFLLENBQUMsUUFBTixDQUFpQixJQUFqQixTQUFpQixJQUFqQiwrQkFBaUIsSUFBSSxDQUFFLElBQXZCLHVDQUFpQixhQUFZLE1BQTdCLENBRUEsR0FBSSxDQUFBLGFBQWEsT0FBYixFQUFBLGFBQWEsU0FBYixRQUFBLGFBQWEsQ0FBRSxRQUFmLEtBQTJCLEdBQS9CLENBQW9DO0FBQzVCLE1BQU0sQ0FBQyxZQUFQLENBQW9CLE1BQU0sQ0FBQyxPQUFQLENBQWUsSUFBbkMsQ0FBeUMsTUFBTSxDQUFDLE1BQWhELENBQXdELENBQUUsTUFBTSxDQUFFLEtBQVYsQ0FBbUIsUUFBUSxDQUFDLFNBQTVCLENBQXVDLE9BQU8sQ0FBQyxJQUEvQyxDQUF4RCxFQUNSLEdBQUksS0FBSyxDQUFDLFFBQU4sQ0FBZSxVQUFmLEVBQTJCLElBQS9CLENBQXFDLENBQzdCLEtBQUssQ0FBQyxRQUFOLENBQWUsVUFBZixDQUE0QixDQUFDLE1BQU0sQ0FBQyxJQUFSLENBQWEsUUFBUSxDQUFDLElBQXRCLENBQTJCLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBRCxDQUF6QyxDQUFrRCxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBVixDQUFlLFdBQVcsQ0FBQyxJQUEzQixDQUFnQyxNQUFNLENBQUMsSUFBdkMsQ0FBNEMsU0FBUyxDQUFDLElBQXRELENBQXZELENBQTVCLENBQ1AsQ0FFRCxLQUFLLENBQUMsU0FBTixDQUFnQixVQUFoQixDQUE2QixLQUFLLENBQUMsUUFBbkMsQ0FDQSxLQUFLLENBQUMsU0FBTixDQUFnQixVQUFoQixDQUEyQixnQkFBM0IsQ0FBOEMsS0FBSyxDQUFDLGdCQUFwRCxDQUVBO0FBQ0EsR0FBSSxDQUFBLElBQUksQ0FBRyxDQUFYLENBQ0EsR0FBSSxDQUFBLE9BQU8sMEJBQUcsS0FBSyxDQUFDLFFBQU4sQ0FBZSxnQkFBbEIsMkVBQUcsd0JBQWlDLE1BQWpDLENBQXdDLENBQXhDLENBQUgsa0RBQUcsd0JBQTRDLFNBQTFELENBQ0EsR0FBSSxDQUFBLEtBQUssbURBQUcsS0FBSyxDQUFDLFFBQU4sQ0FBZSxnQkFBbEIsMkVBQUcsd0JBQWlDLE1BQWpDLENBQXdDLENBQXhDLENBQUgsa0RBQUcsd0JBQTRDLGlCQUEvQyxtRUFBb0UsQ0FBN0UsQ0FFQSxLQUFLLENBQUMsa0JBQU4sQ0FBMEIsS0FBSyxDQUFDLFFBQWhDLENBQXlDO0FBRXpDLEtBQUssQ0FBQyxrQkFBTixDQUF5QixVQUF6QixDQUFzQyxDQUFDLFlBQVksQ0FBQyxDQUFkLENBQXRDLENBRUEsS0FBSyxDQUFDLEtBQU4sQ0FBWSxlQUFaLENBQTRCLEtBQUssQ0FBQyxrQkFBTixDQUF5QixVQUF6QixDQUFvQyxZQUFoRSxFQUNBLEtBQUssQ0FBQyxrQkFBTixDQUF5QixlQUF6QixDQUEyQyxLQUEzQyxDQUNBLEtBQUssQ0FBQyxrQkFBTixDQUF5QixVQUF6QixDQUFzQyxXQUF0QyxDQUNBLEdBQUksS0FBSyxDQUFDLGtCQUFOLENBQXlCLFVBQXpCLENBQW9DLFVBQXhDLENBQXVELEtBQUssQ0FBQyxLQUFOLENBQVksY0FBWixDQUEyQixLQUFLLENBQUMsa0JBQU4sQ0FBeUIsVUFBekIsQ0FBb0MsT0FBL0QsRUFBdkQsSUFDSyxDQUFBLEtBQUssQ0FBQyxLQUFOLENBQVksZ0JBQVosR0FHTCxHQUFJLE9BQU8sRUFBRSxTQUFiLENBQXdCLENBQ3BCLFdBQVcsQ0FBQyxXQUFaLENBQXdCLE9BQXhCLENBQWdDLElBQWhDLENBQXFDLEtBQXJDLEVBQTRDLElBQTVDLENBQ0ksU0FBVSxLQUFWLENBQWlCLENBQ2IsS0FBSyxDQUFDLFlBQU4sQ0FBbUIsV0FBbkIsQ0FBK0IsT0FBL0IsQ0FBdUMsS0FBdkMsQ0FBNkMsS0FBSyxDQUFDLEtBQW5ELENBQXlELEtBQUssQ0FBQyxVQUEvRCxFQUNBLEdBQUksS0FBSyxDQUFDLFlBQU4sQ0FBbUIsUUFBbkIsQ0FBNEIsS0FBNUIsQ0FBa0MsTUFBbEMsQ0FBeUMsQ0FBN0MsQ0FBaUQsQ0FDN0MsR0FBSSxLQUFLLENBQUMsU0FBTixDQUFnQixVQUFoQixDQUEyQixVQUEzQixFQUF1QyxTQUEzQyxDQUFzRCxLQUFLLENBQUMsU0FBTixDQUFnQixVQUFoQixDQUEyQixVQUEzQixDQUFzQyxFQUF0QyxDQUN0RCxLQUFLLENBQUMsU0FBTixDQUFnQixVQUFoQixDQUEyQixVQUEzQixDQUFzQyxRQUF0QyxDQUFpRCxJQUFqRCxDQUNILENBQ0QsS0FBSyxDQUFDLFlBQU4sR0FDQSxLQUFLLENBQUMsVUFBTixDQUFpQixJQUFqQixDQUNILENBVEwsRUFVSCxDQVhELElBV1EsQ0FFSixLQUFLLENBQUMsWUFBTixDQUFtQixhQUFuQixHQUNBLEtBQUssQ0FBQyxZQUFOLEdBQ0EsS0FBSyxDQUFDLFVBQU4sQ0FBaUIsSUFBakIsQ0FDSCxDQUlELEdBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUFWLENBQWUsTUFBZixDQUFzQixDQUExQixDQUNLLEtBQUssQ0FBQyxTQUFOLENBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFMLENBQVUsSUFBbEIsQ0FBVCxDQUFpQyxJQUFJLENBQUMsRUFBdEMsQ0FBbEIsQ0FETCxJQUdJLENBQUEsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsQ0FBQyxPQUFPLENBQUcsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLGdCQUFoQixFQUFSLENBQVgsQ0FBdUQsSUFBSSxDQUFDLEVBQTVELENBQWhCLENBTVIsR0FBSSxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsY0FBekIsR0FBMEMsU0FBOUMsQ0FDUSxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsY0FBekIsQ0FBd0MsQ0FBQyxrQkFBa0IsQ0FBQyxnQ0FBcEIsQ0FBeEMsQ0FEUixJQUVLLElBQUksS0FBSyxDQUFDLGtCQUFOLENBQXlCLGNBQXpCLENBQXdDLGtCQUF4QyxHQUE2RCxTQUFqRSxDQUNHLEtBQUssQ0FBQyxrQkFBTixDQUF5QixjQUF6QixDQUF3QyxrQkFBeEMsQ0FBNkQsZ0NBQTdELENBRVgsQ0FuRUQsQ0FtRUUsU0FBUyxLQUFULENBQWUsQ0FDYixLQUFLLENBQUMsVUFBTixDQUFpQixJQUFqQixDQUNBLEtBQUssQ0FBQyxZQUFOLENBQXFCLElBQXJCLENBQ0EsS0FBSyxDQUFDLFVBQU4sQ0FBaUIsSUFBakIsQ0FDQSxNQUFNLENBQUMsTUFBUCxDQUFjLFNBQWQsQ0FBMEIsU0FBMUIsQ0FFQSxHQUFJLENBQUEsYUFBYSxPQUFiLEVBQUEsYUFBYSxTQUFiLFFBQUEsYUFBYSxDQUFFLFFBQWYsS0FBMkIsR0FBL0IsQ0FDUSxNQUFNLENBQUMsWUFBUCxDQUFxQixNQUFNLENBQUMsT0FBUCxDQUFlLElBQXBDLENBQTBDLE1BQU0sQ0FBQyxNQUFqRCxDQUEwRCxDQUFFLE1BQU0sQ0FBRSxLQUFWLENBQW1CLFFBQVEsQ0FBQyxTQUE1QixDQUF1QyxPQUFPLENBQUMsSUFBL0MsQ0FBMUQsRUFDUixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDSCxDQTVFRCxFQThFSCxDQTFGQSxDQThGTyxHQUFJLEtBQUssQ0FBQyxVQUFOLEVBQW9CLFNBQXhCLENBQWtDLENBQzlCLEdBQUksS0FBSyxDQUFDLFFBQU4sRUFBZ0IsU0FBcEIsQ0FBK0IsS0FBSyxDQUFDLGVBQU4sQ0FBc0IsS0FBSyxDQUFDLFVBQTVCLENBQXdDLEtBQUssQ0FBQyxZQUE5QyxFQUEvQixJQUNLLElBQUksS0FBSyxDQUFDLFFBQU4sRUFBZ0IsTUFBcEIsQ0FBNEIsS0FBSyxDQUFDLFlBQU4sQ0FBbUIsS0FBSyxDQUFDLEtBQXpCLENBQStCLEtBQUssQ0FBQyxPQUFyQyxDQUE2QyxLQUFLLENBQUMsVUFBbkQsQ0FBK0QsS0FBSyxDQUFDLFlBQXJFLEVBQTVCLElBQ0EsSUFBSSxLQUFLLENBQUMsUUFBTixFQUFnQixRQUFwQixDQUE4QixLQUFLLENBQUMsY0FBTixDQUFxQixLQUFLLENBQUMsS0FBM0IsQ0FBaUMsS0FBSyxDQUFDLFVBQXZDLENBQW1ELEtBQUssQ0FBQyxZQUF6RCxFQUNwQyxDQUpILElBSVEsQ0FDSCxLQUFLLENBQUMsVUFBTixDQUFpQixJQUFqQixDQUNBLEtBQUssQ0FBQyxZQUFOLENBQXFCLElBQXJCLENBQ0osQ0FJcEIsQ0EzZ0JVLENBQVAsQ0E2Z0JQLENBQ0QsYUFFTyxRQUFTLENBQUEsV0FBVCxFQUF3QixDQUN2QixNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFYixVQUFVLENBQUUsb0JBQVUsTUFBVixDQUFpQixlQUFqQixDQUFpQyxjQUFqQyxDQUFnRCxRQUFoRCxDQUF5RCxRQUF6RCxDQUFtRSxDQUVoRSxNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxTQUFQLEVBQWtCLFNBQXRCLENBQWlDLE1BQU0sQ0FBQyxTQUFQLENBQW9CLEVBQXBCLENBQ2pDLEdBQUksTUFBTSxDQUFDLFFBQVAsRUFBaUIsU0FBckIsQ0FBaUMsTUFBTSxDQUFDLFFBQVAsQ0FBa0IsQ0FBQyxFQUFELENBQWxCLENBQ2pDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLEVBQXNCLFNBQTFCLENBQXFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUF1QixFQUF2QixDQUVyQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBb0IsVUFBVyxDQUM5QixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBcUIsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFMLENBQVMsR0FBVCxDQUFhLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixZQUFsQyxDQUFELENBQVYsQ0FBNEQsT0FBNUQsQ0FBb0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFlBQXpGLENBQXJCLENBQ0EsQ0FGRCxDQUlELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLEVBQXFCLElBQXJCLEVBQTZCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixFQUFxQixTQUF0RCxDQUFpRSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsR0FHakUsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQWQsQ0FDQSxDQUNDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLEVBQWtCLFNBQXRCLENBQW9DLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixNQUFNLENBQUMsTUFBUCxDQUFjLENBQWQsQ0FBakIsQ0FBa0M7QUFDdEUsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQWQsQ0FBdUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLEtBQWpCLENBQXVCLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBakMsQ0FDdkIsQ0FFRCxNQUFNLENBQUMsTUFBUCxDQUFjLENBQ3hCLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxNQUFNLENBQUMsSUFBYixDQUFrQixJQUFJLENBQUMsY0FBdkIsQ0FBc0MsSUFBSSxDQUFDLHFCQUEzQyxDQUR3QixDQUV4QixDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sTUFBTSxDQUFDLFNBQWIsQ0FBdUIsSUFBSSxDQUFDLFNBQTVCLENBQXNDLElBQUksQ0FBQyxjQUEzQyxDQUZ3QixDQUd4QixDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sTUFBTSxDQUFDLElBQWIsQ0FBa0IsSUFBSSxDQUFDLFlBQXZCLENBQW9DLElBQUksQ0FBQyxvQkFBekMsQ0FId0IsQ0FJeEIsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLE1BQU0sQ0FBQyxJQUFiLENBQWtCLElBQUksQ0FBQyxRQUF2QixDQUFnQyxJQUFJLENBQUMsWUFBckMsQ0FKd0IsQ0FBZCxDQU1BLE1BQU0sQ0FBQyxZQUFQLENBQXNCLFVBQ3RCLENBQ0UsR0FBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEdBQXlDLFNBQTdDLENBQ0EsQ0FDRSxNQUFNLENBQUMsY0FBUCxDQUF3QixNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQXdDLGNBQXhDLENBQXVELFNBQVMsQ0FBQyxRQUFqRSxDQUEwRSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixZQUE1QyxDQUF5RCxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsWUFBcEcsQ0FBMUUsQ0FBeEIsQ0FFRCxDQUpELElBSU8sQ0FBQSxNQUFNLENBQUMsY0FBUCxDQUF3QixFQUF4QixDQUNSLENBUEQsQ0FXQyxNQUFNLENBQUMsRUFBUCxDQUFVLHNCQUFWLENBQW1DLFNBQVMsS0FBVCxDQUNwQyxDQUNFLEdBQUksQ0FBQSxjQUFKLENBQ0EsR0FBSSxDQUFBLElBQUosQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQix1QkFBekIsQ0FDQSxDQUNNLEdBQUksS0FBSyxFQUFFLFNBQVgsQ0FDQSxDQUdRLEdBQUksTUFBTSxDQUFDLFFBQVgsQ0FDQSxDQUNFLElBQUksQ0FBRyxHQUFJLENBQUEsSUFBSixDQUFTLE1BQU0sQ0FBQyxRQUFoQixDQUFQLENBQ0QsQ0FIRCxJQUdNLElBQUksTUFBTSxDQUFDLElBQVgsQ0FDTixDQUNFLElBQUksQ0FBRyxHQUFJLENBQUEsSUFBSixDQUFTLE1BQU0sQ0FBQyxJQUFoQixDQUFQLENBQ0MsT0FBTyxDQUFDLEdBQVIsQ0FBWSxJQUFaLEVBQ0YsQ0FKSyxJQU1ELElBQUksVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsVUFBbkMsQ0FDTCxDQUNHLElBQUksQ0FBRyxHQUFJLENBQUEsSUFBSixDQUFTLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLFVBQXhDLENBQVAsQ0FDRixDQUhJLElBSUwsQ0FDRyxPQUFPLENBQUMsR0FBUixDQUFZLDZCQUFaLEVBRUEsTUFBTyxDQUFBLEtBQVAsQ0FDRixDQUNELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFNBQXJCLEVBQWdDLFNBQXBDLENBQStDLEtBQUssQ0FBRyxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsZUFBeEMsRUFBeUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFNBQTlFLENBQVIsQ0FFL0MsY0FBYyxDQUFHLElBQUksQ0FBQyxLQUFMLENBQVcsT0FBWCxDQUFtQixLQUFLLENBQUMsY0FBTixDQUFxQixVQUFyQixDQUFpQyxDQUFDLFdBQVcsQ0FBQyxLQUFiLENBQWpDLENBQW5CLENBQTBFLE9BQTFFLEVBQW1GLGNBQW5GLENBQWtHLFNBQWxHLENBQTRHLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFlBQTVDLENBQXlELHFCQUFxQixDQUFDLEVBQS9FLENBQTVHLENBQWpCLENBR1AsQ0EzQkQsSUEyQk8sQ0FBQSxjQUFjLENBQUcsS0FBakIsQ0FDWixDQTlCRCxJQThCTSxDQUFBLGNBQWMsQ0FBQyxLQUFmLENBQ04sR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsYUFBekIsQ0FBd0MsY0FBYyxDQUFHLGNBQWMsQ0FBQyxLQUFoQyxDQUN4QyxNQUFPLENBQUEsY0FBUCxDQUNELENBckNBLENBdUNELEdBQUksQ0FBQSxRQUFKLENBQ0EsR0FBSSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBOUIsQ0FBZ0QsUUFBUSxDQUFHLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHVDQUFuQixDQUFYLENBQWhELElBQ0ssQ0FBQSxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsMENBQW5CLENBQVgsQ0FDTCxRQUFRLENBQUMsTUFBVCxDQUFnQixRQUFRLENBQUMsUUFBRCxDQUFSLENBQW1CLE1BQW5CLENBQWhCLEVBRUgsQ0FuRkUsQ0FxRkgsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUU1QyxLQUFLLENBQUMsTUFBTixDQUFhLElBQWIsQ0FFWSxLQUFLLENBQUMsa0JBQU4sQ0FBMkIsVUFBVyxDQUM3QixHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBYixDQUFxQixLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsQ0FBZ0IsS0FBaEIsQ0FBc0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUEvQixDQUM3QixDQUZELENBSUEsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLGNBQWIsQ0FBOEIsQ0FDdEIsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsRUFBaUIsU0FBckIsQ0FBa0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFULENBQWdCLEtBQUssQ0FBQyxNQUFOLENBQWEsQ0FBYixDQUFoQixDQUFnQztBQUNsRSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBYixDQUFzQixLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsQ0FBZ0IsS0FBaEIsQ0FBc0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUEvQixDQUM3QixDQUVELEtBQUssQ0FBQyxjQUFOLENBQXVCLFNBQVMsS0FBVCxDQUFnQixDQUNoQyxLQUFLLENBQUMsS0FBTixDQUFZLGtCQUFaLENBQStCLEtBQUssQ0FBQyxFQUFyQyxDQUF5QyxLQUFLLENBQUMsVUFBL0MsRUFBMkQ7QUFDakUsQ0FGRCxDQUlBLEtBQUssQ0FBQyxlQUFOLENBQXdCLFNBQVMsS0FBVCxDQUFnQixDQUNqRCxLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsQ0FBZ0IsS0FBSyxDQUFDLE1BQU4sQ0FBYSxLQUFiLENBQWhCLENBQ1ksR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFVBQWIsQ0FBeUIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFULENBQWdCLEtBQWhCLENBQXNCLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBL0IsQ0FDckMsS0FBSyxDQUFDLE1BQU4sQ0FBYSxLQUFiLENBQ1UsQ0FKRCxDQU1ILENBNUdFLENBQVAsQ0ErR1AsRUFJRCxhQUVPLFFBQVMsQ0FBQSxlQUFULEVBQTRCLENBRTNCLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVGLFdBQVcsQ0FBRSwyQ0FGWCxDQUdGLEtBQUssQ0FBRSxDQUNKLGVBQWUsQ0FBRSxHQURiLENBRUosWUFBWSxDQUFFLEdBRlYsQ0FHSixVQUFVLENBQUUsR0FIUixDQUlKLGFBQWEsQ0FBRSxJQUpYLENBS0osVUFBVSxDQUFFLEdBTFIsQ0FNSixTQUFTLENBQUUsR0FOUCxDQUhMLENBV0gsVUFBVSxDQUFFLG9CQUFTLFdBQVQsQ0FBcUIsb0JBQXJCLENBQTBDLFVBQTFDLENBQXFELGlCQUFyRCxDQUF1RSxDQUFFLENBWGxGLENBWUYsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUVoQyxLQUFLLENBQUMsWUFBTixDQUFxQixTQUFTLElBQVQsQ0FBYyxLQUFkLENBQXFCLENBQ3hDLEtBQUssQ0FBQyxVQUFOLENBQWlCLElBQWpCLENBQXNCLEtBQXRCLEVBQ0YsQ0FGQSxDQUlBLEtBQUssQ0FBQyxjQUFOLENBQXVCLFNBQVMsTUFBVCxDQUFpQixDQUN0QyxLQUFLLENBQUMsU0FBTixDQUFnQixNQUFoQixFQUNGLENBRkEsQ0FJRixDQXRCQSxDQUFQLENBeUJQLEVBQ0QsYUFFTyxRQUFTLENBQUEsY0FBVCxFQUEyQixDQUUxQixNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFRixXQUFXLENBQUUsMENBRlgsQ0FHSDtBQUNaO0FBQ0EsaUJBQ1ksVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBZ0IsV0FBaEIsQ0FBNEIsQ0FJcEMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsRUFBakIsQ0FFQSxNQUFNLENBQUMsU0FBUCxDQUFtQixVQUFZLENBQ3pCLFdBQVcsQ0FBQyxjQUFaLENBQTJCLFFBQTNCLEVBQXFDLElBQXJDLENBQTBDLFNBQVMsSUFBVCxDQUFjLENBQ3hELE1BQU0sQ0FBQyxTQUFQLENBQW1CLElBQUksQ0FBQyxJQUF4QixDQUNBLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixJQUF4QixDQUNPLENBSFAsRUFLSixDQU5GLENBUUEsTUFBTSxDQUFDLFNBQVAsR0FFSCxDQXRCRSxDQXVCSCxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBUW5DLENBL0JFLENBQVAsQ0FrQ1AsRUFDRCxhQUVPLFFBQVMsQ0FBQSx1QkFBVCxFQUFvQyxDQUVuQyxNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFRixXQUFXLENBQUUsbURBRlgsQ0FHRCxLQUFLLENBQUMsQ0FDSixhQUFhLENBQUMsR0FEVixDQUVKLElBQUksQ0FBQyxJQUZELENBR0osUUFBUSxDQUFDLEdBSEwsQ0FITCxDQVFGLFVBQVUsQ0FBRSxvQkFBUyxNQUFULENBQWdCLFdBQWhCLENBQTRCLENBQ3BDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFmLENBQWhCLENBR04sTUFBTSxDQUFDLE1BQVAsQ0FBYyxpQkFBZCxDQUFnQyxTQUFTLFFBQVQsQ0FBa0IsUUFBbEIsQ0FBMkIsQ0FFeEQsR0FBSSxRQUFRLEVBQUUsUUFBVixFQUFzQixRQUFRLEdBQUcsU0FBckMsQ0FDQSxDQUNDLE1BQU0sQ0FBQyxhQUFQLENBQXFCLFFBQXJCLENBQ0EsQ0FDRixDQU5GLEVBU0UsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsRUFBakIsQ0FDTDtBQUVBLE1BQU0sQ0FBQyxTQUFQLENBQW1CLFVBQVksQ0FDN0IsV0FBVyxDQUFDLGNBQVosQ0FBMkIsUUFBM0IsRUFBcUMsSUFBckMsQ0FBMEMsU0FBUyxJQUFULENBQWMsQ0FDeEQsTUFBTSxDQUFDLFNBQVAsQ0FBbUIsSUFBSSxDQUFDLElBQXhCLENBQ0EsTUFBTSxDQUFDLGdCQUFQLENBQTBCLElBQTFCLENBQ0wsQ0FISyxFQUtELENBTkQsQ0FPSixNQUFNLENBQUMsU0FBUCxHQUNhLENBaENGLENBaUNGLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FTcEMsQ0ExQ0UsQ0FBUCxDQTZDUCxFQUNELGFBRU8sUUFBUyxDQUFBLGFBQVQsQ0FBd0IsV0FBeEIsQ0FBb0MsUUFBcEMsQ0FBOEMsQ0FFakQsTUFBTyxDQUNDLFFBQVEsQ0FBRSxHQURYLENBRUMsV0FBVyxDQUFFLHlDQUZkLENBR0MsVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBaUIsV0FBakIsQ0FBNkIsQ0FFckMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsRUFBaEIsQ0FDQSxNQUFNLENBQUMsUUFBUCxDQUFrQixVQUFZLENBRTlCLFdBQVcsQ0FBQyxjQUFaLENBQTJCLE9BQTNCLEVBQW9DLElBQXBDLENBQXlDLFNBQVMsSUFBVCxDQUFjLENBQzlDLE1BQU0sQ0FBQyxRQUFQLENBQWtCLElBQUksQ0FBQyxJQUF2QixDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLElBQXZCLENBQ0E7QUFDQSxDQUpULEVBS0MsQ0FQRCxDQVNKLE1BQU0sQ0FBQyxRQUFQLEdBRUEsQ0FqQkQsQ0FtQkEsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUV0QztBQXJCRSxDQUFQLENBdUJILEVBQ0QsYUFFTyxRQUFTLENBQUEsc0JBQVQsQ0FBaUMsV0FBakMsQ0FBOEMsQ0FFakQsTUFBTyxDQUNDLFFBQVEsQ0FBRSxHQURYLENBRUUsV0FBVyxDQUFFLGtEQUZmLENBR0UsS0FBSyxDQUFDLENBQ0wsYUFBYSxDQUFDLEdBRFQsQ0FFTCxJQUFJLENBQUMsSUFGQSxDQUdMLFFBQVEsQ0FBQyxHQUhKLENBSFIsQ0FRRyxVQUFVLENBQUUsb0JBQVMsV0FBVCxDQUFxQixDQUFFLENBUnRDLENBU0UsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUkxQyxLQUFLLENBQUMsUUFBTixDQUFlLEVBQWYsQ0FDQztBQUNBLEtBQUssQ0FBQyxRQUFOLENBQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWIsQ0FBZixDQUlLLEtBQUssQ0FBQyxNQUFOLENBQWEsZ0JBQWIsQ0FBOEIsU0FBUyxRQUFULENBQWtCLFFBQWxCLENBQTJCLENBRXhELEdBQUksUUFBUSxHQUFHLFFBQVgsRUFBdUIsUUFBUSxHQUFHLFNBQXRDLENBQ0EsQ0FDQyxLQUFLLENBQUMsYUFBTixDQUFvQixRQUFwQixDQUNBLENBQ0YsQ0FOQSxFQVNMLEtBQUssQ0FBQyxRQUFOLENBQWlCLFVBQVksQ0FDekI7QUFFRixXQUFXLENBQUMsY0FBWixDQUEyQixPQUEzQixFQUFvQyxJQUFwQyxDQUF5QyxTQUFTLElBQVQsQ0FBYyxDQUN2RCxLQUFLLENBQUMsUUFBTixDQUFpQixPQUFPLENBQUMsSUFBUixDQUFhLElBQUksQ0FBQyxJQUFsQixDQUFqQixDQUNBLEtBQUssQ0FBQyxlQUFOLENBQXdCLElBQXhCLENBQ0wsQ0FISyxFQUtELENBUkQsQ0FTSixLQUFLLENBQUMsUUFBTixHQUlJLEtBQUssQ0FBQyxZQUFOLENBQXNCLFNBQVMsSUFBVCxDQUFjLEtBQWQsQ0FBcUIsQ0FHM0M7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUVTLENBWkQsQ0FjRCxDQXZESSxDQUFQLENBeURILEVBQ0QsYUFFTyxRQUFTLENBQUEsV0FBVCxFQUF3QixDQUN2QixNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFWCxVQUFVLENBQUUsb0JBQVUsTUFBVixDQUFpQixlQUFqQixDQUFrQyxDQUVsQyxNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FDQSxNQUFNLENBQUMsY0FBUCxDQUF3QixTQUFTLEtBQVQsQ0FDeEIsQ0FDSyxNQUFNLENBQUMsS0FBUCxDQUFhLGtCQUFiLENBQWdDLE1BQU0sQ0FBQyxFQUF2QyxDQUEwQyxLQUExQyxFQUNKLENBSEQsQ0FLQyxDQVZGLENBV0YsV0FBVyxDQUFFLHVDQVhYLENBWUYsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUVwQyxDQWRFLENBQVAsQ0FnQlAsRUFDRCxhQUVPLFFBQVMsQ0FBQSxZQUFULENBQXVCLFdBQXZCLENBQW9DLENBRTFDLE1BQU8sQ0FDQSxRQUFRLENBQUUsR0FEVixDQUVDLFdBQVcsQ0FBRSx3Q0FGZCxDQUdDLEtBQUssQ0FBQyxDQUNDLFlBQVksQ0FBRyxHQURoQixDQUVDLFFBQVEsQ0FBRSxHQUZYLENBR0MsaUJBQWlCLENBQUUsR0FIcEIsQ0FIUCxDQVFMLFVBQVUsQ0FBRSxvQkFBUyxXQUFULENBQXFCLENBQUUsQ0FSOUIsQ0FTQyxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBRWpDLE9BQU8sQ0FBQyxHQUFSLENBQVksaUJBQVosRUFDQSxPQUFPLENBQUMsR0FBUixDQUFZLEtBQUssQ0FBQyxRQUFsQixFQUNEO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBRVksS0FBSyxDQUFDLFlBQU4sQ0FBcUIsU0FBVSxJQUFWLENBQWUsS0FBZixDQUFzQixDQUNyQyxLQUFLLENBQUMsaUJBQU4sQ0FBMEIsSUFBMUIsQ0FDQSxLQUFLLENBQUMsWUFBTixDQUFxQixJQUFJLENBQUMsRUFBMUIsQ0FDWCxDQUhLLENBTUYsQ0EzQkYsQ0FBUCxDQTZCQSxFQUNELGFBRU8sUUFBUyxDQUFBLFlBQVQsQ0FBc0IsUUFBdEIsQ0FBZ0MsY0FBaEMsQ0FBZ0Qsb0JBQWhELENBQXFFLGdCQUFyRSxDQUF1RixDQUN0RixNQUFPLENBQ0gsUUFBUSxDQUFFLElBRFAsQ0FFRixVQUFVLENBQUUsb0JBQVUsTUFBVixDQUFrQixVQUFsQixDQUE4QixPQUE5QixDQUF1QyxRQUF2QyxDQUFpRCxjQUFqRCxDQUFpRSxvQkFBakUsQ0FBc0YsZ0JBQXRGLENBQXVHLElBQXZHLENBQTRHLFFBQTVHLENBQXNILENBRTNILE1BQU0sQ0FBQyxnQkFBUCxDQUEwQixFQUExQixDQUNBLE1BQU0sQ0FBQyxRQUFQLENBQWlCLENBQUUsR0FBRyxDQUFDLENBQU4sQ0FBUyxHQUFHLENBQUMsQ0FBYixDQUFqQixDQUNBLE1BQU0sQ0FBQyxhQUFQLENBQXVCLElBQXZCLENBQ0EsTUFBTSxDQUFDLElBQVAsQ0FBYyxNQUFNLENBQUMsSUFBckIsQ0FDQSxNQUFNLENBQUMsS0FBUCxDQUFjLENBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxXQUF2QixDQUFkLENBQ0EsTUFBTSxDQUFDLG1CQUFQLENBQTJCLEtBQTNCLENBQ0EsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsQ0FBQyxDQUFELENBQUcsRUFBSCxDQUFNLEVBQU4sQ0FBUyxFQUFULENBQVksR0FBWixDQUFnQixHQUFoQixDQUFvQixHQUFwQixDQUF3QixJQUF4QixDQUF2QixDQUNBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEVBQWhCLENBQ0EsTUFBTSxDQUFDLFFBQVAsQ0FBa0IsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsT0FBL0IsQ0FBdUMsSUFBekQsQ0FDQSxNQUFNLENBQUMsT0FBUCxDQUFlLFlBQWYsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxRQUFQLEVBQWlCLFNBQXJCLENBQWlDLE1BQU0sQ0FBQyxRQUFQLENBQWtCLE1BQWxCLENBQ2pDLE1BQU0sQ0FBQyxJQUFQLENBQVksY0FBWixDQUNBLEdBQUksTUFBTSxDQUFDLFVBQVAsRUFBbUIsU0FBdkIsQ0FBa0MsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsS0FBbEIsQ0FDbEMsR0FBSSxNQUFNLENBQUMsYUFBUCxFQUFzQixTQUExQixDQUFxQyxNQUFNLENBQUMsYUFBUCxDQUFxQixLQUFyQixDQUNyQyxHQUFJLE1BQU0sQ0FBQyxTQUFQLEVBQWtCLFNBQXRCLENBQWlDLE1BQU0sQ0FBQyxnQkFBUCxDQUEwQixNQUFNLENBQUMsU0FBakMsQ0FDakM7QUFDQSxHQUFJLE1BQU0sQ0FBQyxVQUFQLEdBQW9CLFNBQXhCLENBQW9DLE1BQU0sQ0FBQyxVQUFQLENBQWtCLEtBQWxCLENBQTBCLEVBQTFCLENBQ3BDLEdBQUksTUFBTSxDQUFDLFVBQVAsQ0FBa0IsS0FBbEIsRUFBeUIsU0FBN0IsQ0FBMkMsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsS0FBbEIsQ0FBMEIsRUFBMUIsQ0FFM0MsR0FBSSxNQUFNLENBQUMsVUFBUCxDQUFrQixXQUFsQixHQUFnQyxTQUFwQyxDQUErQyxNQUFNLENBQUMsVUFBUCxDQUFrQixXQUFsQixDQUErQix3QkFBL0IsQ0FDL0MsR0FBSSxNQUFNLENBQUMsVUFBUCxDQUFrQixXQUFsQixHQUFnQyxTQUFwQyxDQUErQyxNQUFNLENBQUMsVUFBUCxDQUFrQixXQUFsQixDQUErQixJQUEvQixDQUMvQyxHQUFJLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFdBQWxCLEdBQWdDLFNBQXBDLENBQStDLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFdBQWxCLENBQStCLE9BQS9CLENBQy9DLEdBQUksTUFBTSxDQUFDLFVBQVAsQ0FBa0IsYUFBbEIsR0FBa0MsU0FBdEMsQ0FBaUQsQ0FDN0MsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsYUFBbEIsQ0FBa0MsRUFBbEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxVQUFQLENBQWtCLEdBQXRCLENBQ1EsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsYUFBbEIsQ0FBa0MsSUFBSSxDQUFDLEtBQUwsQ0FBVyxNQUFNLENBQUMsVUFBUCxDQUFrQixhQUFsQixDQUFnQyxDQUEzQyxDQUFsQyxDQUNYLENBSkQsSUFJUSxJQUFJLE1BQU0sQ0FBQyxVQUFQLENBQWtCLGFBQWxCLEVBQWlDLEVBQXJDLENBQTBDLENBQzlDLEdBQUksTUFBTSxDQUFDLFVBQVAsQ0FBa0IsR0FBdEIsQ0FDUSxNQUFNLENBQUMsVUFBUCxDQUFrQixhQUFsQixDQUFrQyxJQUFJLENBQUMsS0FBTCxDQUFXLE1BQU0sQ0FBQyxVQUFQLENBQWtCLGFBQWxCLENBQWdDLENBQTNDLENBQWxDLENBQ1gsQ0FHRCxHQUFJLE1BQU0sQ0FBQyxVQUFQLENBQWtCLEtBQWxCLENBQXdCLGVBQXhCLEVBQXlDLFNBQTdDLENBQXdELE1BQU0sQ0FBQyxVQUFQLENBQWtCLEtBQWxCLENBQXdCLGVBQXhCLENBQXdDLENBQXhDLENBR3pEO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBRXFCLE1BQU0sQ0FBQyxhQUFQLENBQXVCLGNBQWMsQ0FBQyxhQUF0QyxDQUdELE1BQU0sQ0FBQyxZQUFQLENBQXNCLFVBQ3RCLENBQ0ssTUFBTSxDQUFDLGFBQVAsQ0FBdUIsS0FBdkIsQ0FDTyxHQUFJLENBQUEsYUFBYSxDQUFHLEVBQXBCLENBQ0EsR0FBSSxDQUFBLFlBQVksQ0FBRyxNQUFNLENBQUMsUUFBUCxFQUFuQixDQUVBLEdBQUksWUFBWSxFQUFFLFNBQWQsRUFBMkIsWUFBWSxDQUFDLE1BQWIsQ0FBcUIsQ0FBcEQsQ0FBd0QsaUhBQzdCLE1BQU0sQ0FBQyxVQURzQixhQUNoRCxrREFBc0MsSUFBM0IsQ0FBQSxHQUEyQixjQUNsQyxHQUFJLEdBQUcsQ0FBQyxJQUFKLEVBQVcsV0FBWCxFQUEwQixHQUFHLENBQUMsSUFBSixFQUFXLFlBQXpDLENBQXVELENBQ25ELGFBQWEsQ0FBQyxJQUFkLENBQW1CLEdBQUcsQ0FBQyxJQUFKLENBQVMsQ0FBVCxFQUFjLEdBQUcsQ0FBQyxJQUFyQyxFQUNILENBQ0osQ0FDTDtBQU5vRCx1REFPaEQsWUFBWSxDQUFDLElBQWIsQ0FBbUIsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsYUFBckIsdUJBQW1DLFVBQVUsQ0FBQyxPQUE5QyxzRUFBbUMscUJBQW9CLFdBQXZELHdFQUFtQyxzQkFBaUMsT0FBcEUsaURBQW1DLHVCQUEwQyxJQUE3RSxDQUFuQixFQUNQLENBRVosQ0FoQkQsQ0FtQkMsR0FBTSxDQUFBLFNBQVMsQ0FBRyxHQUFJLENBQUEsSUFBSSxDQUFDLFlBQVQsQ0FBc0IsT0FBdEIsQ0FBK0IsQ0FDNUMscUJBQXFCLENBQUUsQ0FEcUIsQ0FFNUMscUJBQXFCLENBQUUsQ0FGcUIsQ0FBL0IsQ0FBbEIsQ0FRRCxNQUFNLENBQUMsT0FBUCxDQUFpQixTQUFVLE1BQVYsQ0FBaUIsSUFBakIsQ0FDakIsQ0FDSSxHQUFJLENBQUEsR0FBSixDQUNBLEdBQUksSUFBSSxDQUFDLG1CQUFULENBQThCLENBQ3pCLEdBQUcsQ0FBRyxHQUFHLENBQUMsSUFBRCxDQUFNLE1BQU0sQ0FBQyxJQUFiLENBQW1CLElBQW5CLENBQVQsQ0FBeUM7QUFDN0MsQ0FGRCxJQUdLLENBQ0QsR0FBRyxDQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBUixDQUFWLENBQTZCO0FBQ2hDLENBRUQsR0FBSSxHQUFHLEdBQUcsSUFBTixFQUFjLEdBQUcsR0FBRyxTQUF4QixDQUFtQyxNQUFPLEdBQVAsQ0FDbkM7QUFFQSxHQUFJLE1BQU0sQ0FBQyxVQUFYLENBQXVCLENBQUU7QUFDckIsR0FBSSxNQUFNLENBQUMsVUFBUCxDQUFrQixTQUFsQixDQUE0QixDQUE1QixDQUE4QixDQUE5QixFQUFpQyxJQUFqQyxJQUF5QyxNQUE3QyxDQUNRLEdBQUcsQ0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsU0FBbEIsQ0FBNEIsQ0FBNUIsQ0FBOEIsQ0FBOUIsQ0FBRCxDQUFQLENBQTBDLEdBQTFDLENBQThDLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFNBQWxCLENBQTRCLENBQTVCLENBQThCLE1BQU0sQ0FBQyxVQUFQLENBQWtCLE1BQWhELEVBQXdELElBQXhELEVBQTlDLENBQU4sQ0FDWCxDQUVEO0FBQ0EsR0FBSSxNQUFNLENBQUMsV0FBUCxFQUFzQixRQUExQixDQUFzQyxHQUFHLENBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQXZCLEVBQTJCLE1BQTNCLENBQWtDLEdBQWxDLENBQVAsQ0FFdEMsTUFBTyxDQUFBLEdBQVAsQ0FDSCxDQXRCRCxDQXlCQSxNQUFNLENBQUMsV0FBUCxDQUFxQixTQUFTLEdBQVQsQ0FDckIsQ0FDSyxNQUFNLENBQUMsZ0JBQVAsQ0FBMEIsR0FBRyxDQUFDLFVBQTlCLENBQ0EsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsU0FBUyxNQUFNLENBQUMsa0JBQWhCLENBQW1DLElBQXRELENBQ0EsTUFBTSxDQUFDLGlCQUFQLENBQXlCLENBQUMsSUFBSSxDQUFDLEdBQU4sQ0FBekIsRUFDSixDQUxELENBT0EsTUFBTSxDQUFDLGtCQUFQLENBQTRCLFNBQVMsS0FBVCxDQUFlLEtBQWYsQ0FDNUIsQ0FDRSxHQUFJLENBQUEsdUJBQXVCLENBQUcsS0FBSyxDQUFDLGFBQU4sQ0FBb0IsVUFBbEQsQ0FFQTtBQUNBLEdBQUksQ0FBQSxLQUFLLENBQUcsUUFBUSxDQUFDLGNBQVQsQ0FBd0IsZUFBZSxNQUFNLENBQUMsVUFBUCxDQUFrQixPQUF6RCxDQUFaLENBQ0E7QUFDQSxNQUFNLENBQUMsa0JBQVAsQ0FBNEIsdUJBQXVCLENBQUcsS0FBSyxDQUFDLFVBQWhDLENBQTZDLEtBQUssQ0FBQyxPQUEvRSxDQUNELENBUkQsQ0FVRCxNQUFNLENBQUMsY0FBUCxDQUF3QixVQUN2QixDQUNJO0FBREosMENBRXFCLE1BQU0sQ0FBQyxVQUY1QiwyQ0FFYSxDQUFBLElBRmIsY0FHYSxHQUFJLElBQUksQ0FBQyxJQUFMLEVBQWEsTUFBYixFQUF1QixJQUFJLENBQUMsSUFBTCxFQUFhLFNBQXhDLENBQW9ELENBQzNDLFFBQVEsQ0FBQyxVQUFXLENBQ2pCLEdBQUksTUFBTSxDQUFDLGNBQVgsQ0FBNEIsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsSUFBdEIsQ0FBMkIsSUFBM0IsRUFBbUMsQ0FEMUQsQ0FBUixDQUVQLENBTmYsRUFFSSxrREFBb0MsU0FLbkMsQ0FQTCx1REFRQyxDQVRGLENBWUMsTUFBTSxDQUFDLFdBQVAsQ0FBcUIsVUFBVyxDQUFFO0FBQUYsMkNBQ1osTUFBTSxDQUFDLGNBREssY0FDNUIscURBQXVDLElBQTlCLENBQUEsR0FBOEIsMERBQ2xCLE1BQU0sQ0FBQyxVQURXLGNBQ2xDLHFEQUFtQyxJQUExQixDQUFBLEdBQTBCLGVBQzVCLEdBQUksR0FBRyxFQUFJLEdBQVgsQ0FBaUIsQ0FDZDtBQUNGLENBQ1AsQ0FMaUMseURBTXRDLENBUDJCLHlEQVEvQixDQVJELENBV0EsTUFBTSxDQUFDLFVBQVAsQ0FBb0IsU0FBVSxJQUFWLENBQWdCLENBQ2hDLE1BQU8sQ0FBQSxJQUFJLENBQUMsSUFBTCxHQUFjLE1BQWQsRUFBd0IsSUFBSSxDQUFDLElBQUwsR0FBYyxTQUE3QyxDQUNILENBRkQsQ0FLQSxNQUFNLENBQUMscUJBQVAsQ0FBK0IsVUFDL0IsQ0FDRyxNQUFNLENBQUMsbUJBQVAsQ0FBNkIsQ0FBQyxNQUFNLENBQUMsbUJBQXJDLENBQ0YsQ0FIRCxDQUtBLE1BQU0sQ0FBQyxjQUFQLENBQXdCLFVBQ3hCLENBQ0csTUFBTSxDQUFDLFlBQVAsQ0FBc0IsQ0FBQyxNQUFNLENBQUMsWUFBOUIsQ0FDRixDQUhELENBTUEsTUFBTSxDQUFDLFVBQVAsQ0FBb0IsU0FBVSxJQUFWLENBQWdCLENBQ2hDLE1BQU0sQ0FBQyxVQUFQLENBQW1CLFlBQW5CLENBQWlDLElBQWpDLEVBQXVDO0FBQzFDLENBRkQsQ0FLQSxNQUFNLENBQUMsVUFBUCxDQUFvQixVQUNwQixDQUNJLEdBQUksQ0FBQSxPQUFPLENBQUMsRUFBWixDQUNBLEdBQUksQ0FBQSxNQUFNLENBQUMseUJBQVgsQ0FDQSxNQUFNLENBQUcsTUFBTSxDQUFFLGlMQUFqQixDQUNBLEdBQUksQ0FBQSxJQUFJLENBQUUsTUFBTSxDQUFDLFFBQVAsRUFBVixDQUdEO0FBQ0MsTUFBTSxDQUFHLE1BQU0sQ0FBRSxtQkFBakIsQ0FDQSxHQUFJLENBQUEsWUFBWSxDQUFDLEVBQWpCLENBQ0EsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYyxDQUFDLENBQUUsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsTUFBbkMsQ0FBMEMsQ0FBQyxFQUEzQyxDQUErQyxDQUN6QyxHQUFJLENBQUEsR0FBRyxDQUFHLE1BQU0sQ0FBQyxVQUFQLENBQWtCLENBQWxCLENBQVYsQ0FDQSxHQUFJLEdBQUcsQ0FBQyxPQUFKLEVBQWUsSUFBbkIsQ0FBeUIsQ0FDckIsR0FBSSxDQUFBLFFBQVEsQ0FBQyxXQUFhLENBQTFCLENBQ0EsR0FBTSxHQUFHLENBQUMsV0FBSixFQUFtQixRQUF6QixDQUNLLE1BQU0sQ0FBRyxNQUFNLENBQUcsZUFBVCxDQUEyQixRQUEzQixDQUFzQyxRQUF0QyxDQUFpRCxHQUFHLENBQUMsV0FBckQsQ0FBbUUsUUFBNUUsQ0FETCxJQUdJLENBQUEsTUFBTSxDQUFHLE1BQU0sQ0FBRyxlQUFULENBQTJCLFFBQTNCLENBQXVDLE1BQXZDLENBQWdELEdBQUcsQ0FBQyxXQUFwRCxDQUFrRSxRQUEzRSxDQUNKLFlBQVksRUFBRyxRQUFVLENBQVYsQ0FBYyxnQ0FBZCxDQUFpRCxHQUFHLENBQUMsS0FBckQsQ0FBNkQsSUFBNUUsQ0FDSCxDQUNOLENBQ0QsTUFBTSxDQUFHLE1BQU0sQ0FBRSxRQUFqQixDQUVBO0FBdkJKLDJDQXdCbUIsSUF4Qm5CLGNBd0JJLHFEQUFxQixJQUFiLENBQUEsR0FBYSxlQUVqQixNQUFNLENBQUcsTUFBTSxDQUFFLG1CQUFqQixDQUNBLElBQUssR0FBSSxDQUFBLEdBQUMsQ0FBQyxDQUFYLENBQWMsR0FBQyxDQUFFLE1BQU0sQ0FBQyxVQUFQLENBQWtCLE1BQW5DLENBQTJDLEdBQUMsRUFBNUMsQ0FBaUQsQ0FDNUMsR0FBSSxDQUFBLElBQUcsQ0FBRyxNQUFNLENBQUMsVUFBUCxDQUFrQixHQUFsQixDQUFWLENBQ0EsR0FBSSxJQUFHLENBQUMsT0FBSixFQUFlLElBQW5CLENBQXlCLENBQ3RCLEdBQUksQ0FBQSxTQUFRLENBQUMsV0FBYSxHQUExQixDQUNBLEdBQU0sSUFBRyxDQUFDLFdBQUosRUFBbUIsUUFBekIsQ0FBb0MsQ0FDaEMsR0FBSSxDQUFBLFNBQVMsQ0FBRyxHQUFHLENBQUMsSUFBRyxDQUFDLElBQUwsQ0FBSCxDQUFjLGNBQWQsQ0FBK0IsTUFBTSxDQUFDLFFBQVAsRUFBbUIsT0FBbEQsQ0FBMkQsQ0FBRSxxQkFBcUIsQ0FBRSxDQUF6QixDQUE0QixxQkFBcUIsQ0FBRSxDQUFuRCxDQUEzRCxDQUFoQixDQUNBLE1BQU0sQ0FBQyxNQUFNLENBQUcsY0FBVCxDQUEwQixTQUExQixDQUFxQyxPQUFyQyxDQUE4QyxTQUE5QyxDQUEyRCxRQUFsRSxDQUNILENBSEQsSUFJSyxDQUNELE1BQU0sQ0FBQyxNQUFNLENBQUcsY0FBVCxDQUEwQixTQUExQixDQUFvQyxJQUFwQyxDQUEwQyxHQUFHLENBQUMsSUFBRyxDQUFDLElBQUwsQ0FBN0MsQ0FBMkQsUUFBbEUsQ0FDSCxDQUNILENBQ0wsQ0FDRCxNQUFNLENBQUcsTUFBTSxDQUFFLFFBQWpCLENBQ0gsQ0FFRDtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQWhEb0IseURBa0RJLEdBQUksQ0FBQSxpQkFBaUIsQ0FBRyw2REFBeEIsQ0FDQSxHQUFJLENBQUEsR0FBRyxDQUFHLE1BQU0sQ0FBQyxJQUFQLENBQVksRUFBWixDQUFnQixRQUFoQixDQUEwQixpQkFBMUIsQ0FBVixDQUVBLEdBQUcsQ0FBQyxRQUFKLENBQWEsSUFBYixDQUFrQixTQUFsQixFQUNEO0FBQ0Q7QUFDRSwyQkFDQywyRkFDRjtBQUZDLENBR0MsdUZBSEQsQ0FJQyxrRUFKRCxDQUtDLDhCQUxELENBTUMsZ0RBTkQsQ0FPRyxZQVBILENBUUMsWUFYRCxDQWFBLEdBQUcsQ0FBQyxRQUFKLENBQWEsSUFBYixDQUFrQixTQUFsQixFQUErQixNQUEvQixDQUVILENBckVELENBdUVSLE1BQU0sQ0FBQyxZQUFQLENBQXNCLFVBQVcsMkJBRTdCLEdBQUksQ0FBQSxFQUFFLENBQUcsR0FBSSxDQUFBLE9BQU8sQ0FBQyxRQUFaLEVBQVQsQ0FDQSxHQUFJLHdCQUFBLE1BQU0sQ0FBQyxVQUFQLENBQWtCLDJCQUFsQixzRUFBK0MsRUFBL0MsR0FBbUQsU0FBdkQsQ0FDQSxDQUNBLG9CQUFvQixDQUFDLFlBQXJCLENBQWtDLE1BQU0sQ0FBQyxVQUFQLENBQWtCLHlCQUFwRCxDQUFnRixNQUFNLENBQUMsVUFBUCxDQUFrQiwyQkFBbEIsQ0FBOEMsRUFBOUgsRUFDQyxJQURELENBQ00sU0FBUyxJQUFULENBQWUsQ0FDVCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixpQkFBNUIsQ0FBOEMsTUFBOUMsRUFDQSxNQUFNLENBQUMsUUFBUCxDQUFrQixJQUFJLENBQUMsSUFBdkIsQ0FDSCxDQUpULENBSVUsU0FBUyxLQUFULENBQWUsQ0FDYixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDTCxDQU5QLEVBT0MsSUFQRCxDQU9PLFNBQVMsSUFBVCxDQUFlLENBQ2xCLEVBQUUsQ0FBQyxJQUFILENBQVEsSUFBUixDQUFhLE1BQU0sQ0FBQyxRQUFwQixFQUNJLElBREosQ0FDUyxTQUFBLFFBQVEsQ0FBSSxDQUNYLFFBQVEsQ0FBQyxTQUFULENBQW1CLFNBQUMsS0FBRCxDQUFRLEVBQVIsQ0FBZSxDQUM3QixHQUFJLE1BQU0sQ0FBQyxPQUFQLENBQWUsUUFBbkIsQ0FBNkIsQ0FDeEIsR0FBSSxDQUFBLFVBQVUsQ0FBRyxNQUFNLENBQUMsT0FBUCxDQUFlLFFBQWYsQ0FBd0IsTUFBTSxDQUFDLElBQVAsQ0FBWSxNQUFNLENBQUMsT0FBUCxDQUFlLFFBQTNCLEVBQXFDLENBQXJDLENBQXhCLEVBQWlFLENBQWpFLEVBQW9FLFlBQXBFLENBQWpCLENBQ0EsR0FBSSxDQUFBLGVBQWUsQ0FBRyxNQUFNLENBQUMsT0FBUCxDQUFlLFFBQWYsQ0FBd0IsTUFBTSxDQUFDLElBQVAsQ0FBWSxNQUFNLENBQUMsT0FBUCxDQUFlLFFBQTNCLEVBQXFDLENBQXJDLENBQXhCLEVBQWlFLENBQWpFLEVBQW9FLGlCQUFwRSxDQUF0QixDQUNDLEtBQUssQ0FBQyxPQUFOLENBQWMsSUFBZCxFQUFvQixLQUFwQixDQUE0QixVQUE1QixDQUNBLEtBQUssQ0FBQyxPQUFOLENBQWMsSUFBZCxFQUFvQixLQUFwQixDQUE0QixlQUE1QixDQUNMLENBRUYsR0FBSSxDQUFBLElBQUksQ0FBQyxFQUFULENBQ0EsR0FBSSxDQUFBLE1BQU0sQ0FBQyxFQUFYLENBRUEsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsT0FBbEIsQ0FBNEIsU0FBQyxHQUFELENBQU0sQ0FBTixDQUM1QixDQUNJLEdBQUksR0FBRyxDQUFDLE9BQVIsQ0FBaUIsQ0FDYixNQUFNLENBQUMsSUFBUCxDQUFZLEdBQUcsQ0FBQyxXQUFoQixFQUNBLEdBQUksQ0FBQSxRQUFRLENBQUcsR0FBRyxDQUFDLEtBQUosQ0FBVSxPQUFWLENBQWtCLEdBQWxCLENBQXNCLEVBQXRCLEVBQTBCLE9BQTFCLENBQWtDLElBQWxDLENBQXVDLEVBQXZDLENBQWYsQ0FBMEQ7QUFDMUQsSUFBSSxDQUFDLElBQUwsQ0FBVSxDQUFDLE1BQU0sQ0FBRSxHQUFHLENBQUMsV0FBYixDQUEwQixHQUFHLENBQUMsR0FBRyxDQUFDLElBQWxDLENBQXdDLEtBQUssQ0FBRSxRQUEvQyxDQUFWLEVBQ0gsQ0FDSixDQVBELEVBU0YsS0FBSyxDQUFDLE9BQU4sQ0FBZ0IsSUFBaEIsQ0FFQTtBQUNoQywwREFDZ0MsR0FBSSxDQUFBLElBQUksQ0FBRyxNQUFNLENBQUMsUUFBUCxFQUFYLENBQ0EsS0FBSyxDQUFDLFVBQU4sQ0FBaUIsQ0FBakIsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFDQSxLQUFLLENBQUMsVUFBTixDQUFpQixDQUFqQixDQUFvQixDQUFwQixFQUNBO0FBQ0EsS0FBSyxDQUFDLE1BQU4sQ0FBYSxDQUFiLEVBQWdCLE1BQWhCLENBQXlCLElBQXpCLENBRUEsTUFBTyxDQUFBLFFBQVAsQ0FDRCxDQS9CRCxFQWtDSixRQUFRLENBQUMsSUFBVCxDQUFjLFdBQWQsR0FBNEIsSUFBNUIsQ0FBaUMsU0FBQyxJQUFELENBQVUsQ0FDbkMsR0FBTSxDQUFBLElBQUksQ0FBRyxHQUFJLENBQUEsSUFBSixDQUFTLENBQUMsSUFBRCxDQUFULENBQWlCLENBQUUsSUFBSSxDQUFFLGlGQUFSLENBQWpCLENBQWIsQ0FDQSxNQUFNLENBQUMsSUFBRCxDQUFPLGFBQVAsQ0FBTixDQUNELENBSFAsRUFLRCxDQXpDTCxFQTBDQyxDQWxETCxFQW1EQyxDQXJERCxJQXFETSxDQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLGlDQUE1QixDQUE4RCxTQUE5RCxFQUNULENBekRELENBNkRPLE1BQU0sQ0FBQyxXQUFQLENBQXFCLFVBQ3BCLENBQ0ksR0FBTSxDQUFBLFFBQVEsQ0FBRyxHQUFJLENBQUEsT0FBTyxDQUFDLFFBQVosRUFBakIsQ0FDQSxHQUFNLENBQUEsU0FBUyxDQUFHLFFBQVEsQ0FBQyxZQUFULENBQXNCLFdBQXRCLENBQWxCLENBQ0EsR0FBSSxDQUFBLElBQUksQ0FBQyxFQUFULENBQ0EsR0FBSSxDQUFBLE1BQU0sQ0FBQyxFQUFYLENBQ0EsR0FBSSxDQUFBLE1BQU0sQ0FBQyxFQUFYLENBQ0EsR0FBSSxDQUFBLGVBQWUsQ0FBQyxFQUFwQixDQU5KLDJDQVFvQixNQUFNLENBQUMsVUFSM0IsY0FRSSxxREFBbUMsSUFBMUIsQ0FBQSxHQUEwQixlQUMzQixHQUFJLEdBQUcsQ0FBQyxPQUFSLENBQWlCLENBQ2IsZUFBZSxDQUFDLElBQWhCLENBQXFCLEdBQUcsQ0FBQyxJQUF6QixFQUNBLElBQUksQ0FBQyxJQUFMLENBQVUsQ0FBQyxNQUFNLENBQUUsR0FBRyxDQUFDLFdBQWIsQ0FBMEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFsQyxDQUFWLEVBQ0EsR0FBSSxHQUFHLENBQUMsV0FBSixFQUFrQixNQUF0QixDQUErQixNQUFNLENBQUMsR0FBRyxDQUFDLElBQUwsQ0FBTixDQUFtQixJQUFuQixDQUMvQixHQUFJLEdBQUcsQ0FBQyxXQUFKLEVBQWtCLE1BQXRCLENBQStCLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBTCxDQUFOLENBQW1CLElBQW5CLENBQ2xDLENBQ1IsQ0FmTCx5REFpQkksU0FBUyxDQUFDLE9BQVYsQ0FBb0IsSUFBcEIsQ0FDQTtBQUVBLEdBQUksQ0FBQSxZQUFZLENBQUMsTUFBTSxDQUFDLFFBQVAsRUFBakIsQ0FDQSxHQUFJLENBQUEsYUFBYSxDQUFHLEVBQXBCLENBQ0E7QUF0QkosMkNBdUJvQixZQXZCcEIsY0F1QkkscURBQThCLElBQXJCLENBQUEsR0FBcUIsZUFDMUIsR0FBSSxDQUFBLEdBQUcsQ0FBRyxFQUFWLENBRDBCLDJDQUVWLGVBRlUsY0FFMUIscURBQWlDLElBQXhCLENBQUEsS0FBd0IsZUFDNUIsR0FBRyxDQUFDLEtBQUQsQ0FBSCxDQUFXLEdBQUcsQ0FBQyxLQUFELENBQWQsQ0FDQSxHQUFJLEdBQUcsQ0FBQyxLQUFELENBQUgsRUFBWSxNQUFNLENBQUMsS0FBRCxDQUF0QixDQUErQixDQUFHO0FBQzFCLEdBQUcsQ0FBQyxLQUFELENBQUgsQ0FBVyxHQUFHLENBQUMsS0FBRCxDQUFkLENBQ0gsQ0FDTCxHQUFJLEdBQUcsQ0FBQyxLQUFELENBQUgsRUFBWSxNQUFNLENBQUMsS0FBRCxDQUF0QixDQUErQixDQUFHO0FBQ3pCLEdBQUcsQ0FBQyxLQUFELENBQUgsQ0FBVyxHQUFJLENBQUEsSUFBSixDQUFTLEdBQUcsQ0FBQyxLQUFELENBQVosQ0FBWCxDQUNKLENBQ1AsQ0FWdUIseURBVzFCLGFBQWEsQ0FBQyxJQUFkLENBQW1CLEdBQW5CLEVBQ0gsQ0FuQ0wseURBcUNJLFNBQVMsQ0FBQyxPQUFWLENBQWtCLGFBQWxCLEVBRUEsUUFBUSxDQUFDLElBQVQsQ0FBYyxXQUFkLEdBQTRCLElBQTVCLENBQWlDLFNBQUMsSUFBRCxDQUFVLENBQ3pDLEdBQU0sQ0FBQSxJQUFJLENBQUcsR0FBSSxDQUFBLElBQUosQ0FBUyxDQUFDLElBQUQsQ0FBVCxDQUFpQixDQUFFLElBQUksQ0FBRSxpRkFBUixDQUFqQixDQUFiLENBQ0EsTUFBTSxDQUFDLElBQUQsQ0FBTyxhQUFQLENBQU4sQ0FDRCxDQUhELEVBSUgsQ0E1Q0YsQ0ErQ0MsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsU0FBUyxVQUFULENBQW9CLFFBQXBCLENBQ3hCLENBQ00sTUFBTSxDQUFDLFVBQVAsQ0FBa0IsVUFBbEIsQ0FBNkIsTUFBN0IsQ0FBc0MsUUFBdEMsQ0FDQSxNQUFNLENBQUMsVUFBUCxDQUFrQixVQUFsQixDQUE2QixLQUE3QixDQUFxQyxDQUFDLFVBQVUsQ0FBQyxDQUFaLEVBQWUsUUFBcEQsQ0FDQSxNQUFNLENBQUMsV0FBUCxDQUFtQixNQUFNLENBQUMsVUFBMUIsRUFDTCxDQUxELENBUUEsTUFBTSxDQUFDLFFBQVAsQ0FBa0IsU0FBUyxFQUFULENBQWEsQ0FDM0IsR0FBSSxFQUFFLENBQUMsSUFBSCxFQUFXLFNBQVgsRUFBd0IsRUFBRSxDQUFDLElBQUgsRUFBUyxFQUFyQyxDQUNJLEVBQUUsQ0FBQyxJQUFILENBQVEsV0FBUixDQURKLElBRU0sSUFBSSxFQUFFLENBQUMsSUFBSCxFQUFTLFdBQWIsQ0FDRixFQUFFLENBQUMsSUFBSCxDQUFRLFlBQVIsQ0FERSxJQUVELElBQUksRUFBRSxDQUFDLElBQUgsRUFBUyxZQUFiLENBQ0QsRUFBRSxDQUFDLElBQUgsQ0FBUSxFQUFSLENBRUosTUFBTSxDQUFDLGFBQVAsQ0FBdUIsSUFBdkIsQ0FHSCxDQVhELENBYUE7QUFDQSxNQUFNLENBQUMsV0FBUCxDQUFxQixTQUFTLFVBQVQsQ0FDckIsQ0FDRyxHQUFJLFVBQVUsQ0FBQyxVQUFYLENBQXNCLE1BQXRCLEVBQThCLFNBQTlCLEVBQTJDLFVBQVUsQ0FBQyxVQUFYLENBQXNCLE1BQXRCLEVBQThCLEdBQTdFLENBQ0ssVUFBVSxDQUFDLFVBQVgsQ0FBc0IsTUFBdEIsQ0FBNkIsRUFBN0IsQ0FFSjtBQUNBLEdBQUssTUFBTSxDQUFDLGFBQVosQ0FBNEIsQ0FDeEIsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsS0FBdkIsQ0FDQSxNQUFNLENBQUMsWUFBUCxHQUNILENBRUY7QUFDQSxNQUFNLENBQUMsYUFBUCxDQUFxQixDQUFDLFVBQVUsQ0FBRSxVQUFiLENBQXlCLFVBQVUsQ0FBRSxVQUFVLENBQUMsVUFBWCxDQUFzQixLQUF0QixDQUE0QixVQUFVLENBQUMsVUFBWCxDQUFzQixNQUFuRCxDQUEyRCxDQUEvRixDQUFrRyxRQUFRLENBQUMsVUFBVSxDQUFDLFVBQVgsQ0FBc0IsTUFBakksQ0FBckIsRUFDTSxJQUROLENBQ1csU0FBVSxNQUFWLENBQWtCLENBQ3BCO0FBRUEsTUFBTSxDQUFDLGdCQUFQLENBQTBCLE1BQU0sQ0FBQyxJQUFQLENBQVksT0FBdEMsQ0FDQSxNQUFNLENBQUMsVUFBUCxDQUFvQixNQUFNLENBQUMsSUFBUCxDQUFZLE9BQWhDLENBQ0EsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsTUFBTSxDQUFDLElBQVAsQ0FBWSxLQUFsQyxDQUxvQiwyQ0FRRixNQUFNLENBQUMsVUFSTCxjQVFwQixxREFBcUMsSUFBMUIsQ0FBQSxLQUEwQixlQUNqQyxHQUFJLENBQUEsU0FBSixDQUNBLEdBQUksQ0FBQSxXQUFXLENBQUcsS0FBRyxDQUFDLGVBQUosQ0FBc0IsS0FBdEIsQ0FBOEIsSUFBaEQsQ0FFQSxHQUFJLEtBQUcsQ0FBQyxhQUFSLENBQ1EsU0FBUyxDQUFHLEdBQUksQ0FBQSxJQUFJLENBQUMsWUFBVCxDQUFzQixPQUF0QixDQUErQixDQUFFLFdBQVcsQ0FBRSxXQUFmLENBQTZCLHFCQUFxQixDQUFFLEtBQUcsQ0FBQyxhQUF4RCxDQUF5RSxxQkFBcUIsQ0FBRSxLQUFHLENBQUMsYUFBcEcsQ0FBL0IsQ0FBWixDQURSLElBR1EsQ0FBQSxTQUFTLENBQUcsR0FBSSxDQUFBLElBQUksQ0FBQyxZQUFULENBQXNCLE9BQXRCLENBQStCLENBQUUsV0FBVyxDQUFFLFdBQWYsQ0FBL0IsQ0FBWixDQUNSLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEtBQUcsQ0FBQyxFQUFwQixFQUEwQixTQUExQixDQUNKLENBakJvQix5REFzQnBCLEdBQUksTUFBTSxDQUFDLElBQVAsQ0FBWSxPQUFaLEVBQXFCLFNBQXpCLENBQW9DLDRDQUNaLE1BQU0sQ0FBQyxJQUFQLENBQVksT0FEQSxjQUM3QixxREFBcUMsSUFBNUIsQ0FBQSxNQUE0QixlQUNuQyxNQUFJLENBQUMsT0FBTCxDQUFjLEVBQWQsQ0FEbUMsMkNBRW5CLE1BQU0sQ0FBQyxJQUFQLENBQVksT0FGTyxjQUVuQyxxREFBcUMsSUFBNUIsQ0FBQSxHQUE0QixlQUM5QixNQUFJLENBQUMsT0FBTCxDQUFhLEdBQUcsQ0FBQyxJQUFqQixFQUF5QixNQUFNLENBQUMsT0FBUCxDQUFlLEdBQWYsQ0FBb0IsTUFBcEIsQ0FBekIsQ0FDSCxDQUorQix5REFLdkMsQ0FOK0IseURBT25DLENBR0QsR0FBSSxVQUFVLEVBQUUsU0FBaEIsQ0FBNEIsQ0FDeEIsVUFBVSxDQUFDLFVBQVgsQ0FBc0IsYUFBdEIsQ0FBc0MsTUFBTSxDQUFDLElBQVAsQ0FBWSxhQUFsRCxDQUNBLFVBQVUsQ0FBQyxVQUFYLENBQXNCLGNBQXRCLENBQXVDLE1BQU0sQ0FBQyxJQUFQLENBQVksS0FBbkQsQ0FDSCxDQUNELE1BQU0sQ0FBQyxVQUFQLENBQW9CLFVBQXBCLENBR0gsQ0F4Q04sRUF5Q0YsQ0FyREQsQ0F1REE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFFb0IsR0FBSSxDQUFBLFlBQVksQ0FBRyxRQUFmLENBQUEsWUFBZSxDQUFVLElBQVYsQ0FBZ0IsQ0FDL0I7QUFDQSxHQUFJLE1BQU8sQ0FBQSxJQUFQLEdBQWdCLFFBQXBCLENBQThCLE1BQU8sQ0FBQSxJQUFQLENBQzlCLEdBQUksQ0FBQSxNQUFNLENBQUcsRUFBYixDQUNBLElBQUksQ0FBQyxLQUFMLENBQVcsR0FBWCxFQUFnQixPQUFoQixDQUF3QixTQUFVLElBQVYsQ0FBZ0IsS0FBaEIsQ0FBdUIsQ0FDM0M7QUFDQSxJQUFJLENBQUMsS0FBTCxDQUFXLGNBQVgsRUFBMkIsT0FBM0IsQ0FBbUMsU0FBVSxHQUFWLENBQWUsQ0FDOUMsR0FBSSxHQUFHLENBQUMsTUFBSixDQUFhLENBQWpCLENBQXVCLE1BQU0sQ0FBQyxJQUFQLENBQVksR0FBWixFQUFpQjtBQUMzQyxDQUZELEVBR0gsQ0FMRCxFQU1BLE1BQU8sQ0FBQSxNQUFQLENBQ0gsQ0FYRCxDQWVBLEdBQUksQ0FBQSxHQUFHLENBQUcsUUFBTixDQUFBLEdBQU0sQ0FBVSxHQUFWLENBQWUsSUFBZixDQUFxQixHQUFyQixDQUEwQixDQUdoQyxJQUFJLENBQUcsWUFBWSxDQUFDLElBQUQsQ0FBbkIsQ0FBMEI7QUFDMUIsR0FBSSxDQUFBLE9BQU8sQ0FBRyxHQUFkLENBQWtCO0FBQ2xCO0FBQ0EsR0FBSSxJQUFJLEdBQUcsSUFBUCxFQUFlLElBQUksR0FBRyxTQUExQixDQUNBLENBQ0ksSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFHLENBQWIsQ0FBZ0IsQ0FBQyxDQUFHLElBQUksQ0FBQyxNQUF6QixDQUFpQyxDQUFDLEVBQWxDLENBQXNDLENBQ3RDO0FBQ0EsR0FBSyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUQsQ0FBTCxDQUFQLEdBQXFCLFNBQXJCLEVBQWtDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBRCxDQUFMLENBQVAsR0FBcUIsSUFBNUQsQ0FBbUUsTUFBTyxDQUFBLEdBQVAsQ0FDbkUsT0FBTyxDQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBRCxDQUFMLENBQWpCLENBQTRCO0FBQzNCLENBQ0osQ0FQRCxJQU9PLE9BQU8sQ0FBQSxHQUFQLENBQ1AsTUFBTyxDQUFBLE9BQVAsQ0FDSCxDQWZELENBaUJSLE1BQU0sQ0FBQyxhQUFQLENBQXFCLFNBQVMsT0FBVCxDQUFpQixDQUVsQyxNQUFPLENBQUEsSUFBSSxDQUFDLFdBQUwsQ0FBaUIsT0FBakIsQ0FBUCxDQUNILENBSEQsQ0FLSixNQUFNLENBQUMsTUFBUCxDQUFjLFlBQWQsQ0FBNEIsU0FBVSxRQUFWLENBQW9CLENBQUU7QUFFOUMsR0FBSSxNQUFNLENBQUMsY0FBUCxFQUF5QixTQUE3QixDQUF3QyxNQUFNLENBQUMsY0FBUCxDQUF5QixFQUF6QixDQUN4QyxHQUFJLE1BQU0sQ0FBQyxVQUFQLEVBQXFCLFNBQXpCLENBQW9DLE1BQU0sQ0FBQyxVQUFQLENBQXFCLEVBQXJCLENBSFEsMkNBSzNCLE1BQU0sQ0FBQyxVQUxvQixjQUs1QyxxREFBb0MsSUFBM0IsQ0FBQSxNQUEyQixlQUM5QixHQUFJLE1BQUksQ0FBQyxJQUFMLEVBQWEsV0FBYixFQUE0QixNQUFJLENBQUMsSUFBTCxFQUFhLFlBQTdDLENBQTJELENBQ3REO0FBQ0EsR0FBSyxDQUFFLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFFBQXRCLENBQStCLE1BQS9CLENBQVAsQ0FDaUIsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsSUFBdEIsQ0FBMkIsTUFBM0IsRUFFckIsQ0FDTixDQUVGO0FBQ0E7QUFmNkMseURBaUIvQyxDQWpCRCxDQWlCRSxJQWpCRixFQW1CRjtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBSWlCLENBNWZGLENBNGZLO0FBQ0wsS0FBSyxDQUFDLENBQ0QsU0FBUyxDQUFDLElBRFQsQ0FFRCxVQUFVLENBQUMsSUFGVixDQUdELFFBQVEsQ0FBQyxJQUhSLENBSUQsV0FBVyxDQUFDLElBSlgsQ0FLRCxVQUFVLENBQUMsSUFMVixDQU1ELGFBQWEsQ0FBQyxJQU5iLENBT0QsVUFBVSxDQUFDLElBUFYsQ0FRRCxXQUFXLENBQUMsR0FSWCxDQVNELFNBQVMsQ0FBQyxHQVRULENBVWhCLEVBQUUsQ0FBQyxHQVZhLENBV2hCLGtCQUFrQixDQUFDLEdBWEgsQ0FZRCxpQkFBaUIsQ0FBQyxHQVpqQixDQWFELGFBQWEsQ0FBQyxnQkFiYixDQWNELFFBQVEsQ0FBQyxXQWRSLENBZUQsZ0JBQWdCLENBQUUsR0FmakIsQ0FnQkQsaUJBQWlCLENBQUMsSUFoQmpCLENBaUJELGFBQWEsQ0FBQyxrQkFqQmIsQ0FrQkQsV0FBVyxDQUFFLElBbEJaLENBbUJELGdCQUFnQixDQUFFLElBbkJqQixDQTdmTixDQWtoQkgsV0FBVyxDQUFFLHdDQWxoQlYsQ0FtaEJILElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FDaEM7QUFDQSxLQUFLLENBQUMsZ0JBQU4sQ0FBdUIsQ0FBQyxRQUFRLENBQUUsS0FBSyxDQUFDLGNBQWpCLENBQXZCLEVBQ0EsR0FBSSxLQUFLLENBQUMsZ0JBQU4sR0FBeUIsU0FBN0IsQ0FBd0MsS0FBSyxDQUFDLGdCQUFOLENBQXVCLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBVixDQUFZLEtBQUssQ0FBQyxNQUFsQixDQUFELENBQXZCLENBRTFDLENBeGhCQyxDQUFQLENBNGhCUCxFQUNELGFBRU8sUUFBUyxDQUFBLFlBQVQsQ0FBdUIsUUFBdkIsQ0FBaUMsY0FBakMsQ0FBaUQsb0JBQWpELENBQXNFLGdCQUF0RSxDQUF3RixDQUN2RixNQUFPLENBQ0gsUUFBUSxDQUFFLElBRFAsQ0FFRixVQUFVLENBQUUsb0JBQVUsTUFBVixDQUFrQixVQUFsQixDQUE4QixPQUE5QixDQUF1QyxRQUF2QyxDQUFpRCxjQUFqRCxDQUFpRSxvQkFBakUsQ0FBc0YsZ0JBQXRGLENBQXVHLElBQXZHLENBQTRHLFFBQTVHLENBQXNILENBQzNILE1BQU0sQ0FBQyxnQkFBUCxDQUEwQixFQUExQixDQUNBLE1BQU0sQ0FBQyxRQUFQLENBQWlCLENBQUUsR0FBRyxDQUFDLENBQU4sQ0FBUyxHQUFHLENBQUMsQ0FBYixDQUFqQixDQUNBLE1BQU0sQ0FBQyxhQUFQLENBQXVCLElBQXZCLENBQ0EsTUFBTSxDQUFDLElBQVAsQ0FBYyxNQUFNLENBQUMsSUFBckIsQ0FDQSxNQUFNLENBQUMsS0FBUCxDQUFjLENBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxXQUF2QixDQUFkLENBQ0EsTUFBTSxDQUFDLG1CQUFQLENBQTJCLEtBQTNCLENBQ0EsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsQ0FBQyxDQUFELENBQUcsRUFBSCxDQUFNLEVBQU4sQ0FBUyxFQUFULENBQVksR0FBWixDQUFnQixHQUFoQixDQUFvQixHQUFwQixDQUF3QixJQUF4QixDQUF2QixDQUNBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEVBQWhCLENBQ0EsTUFBTSxDQUFDLFFBQVAsQ0FBa0IsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsT0FBL0IsQ0FBdUMsSUFBekQsQ0FDQSxNQUFNLENBQUMsT0FBUCxDQUFlLFlBQWYsQ0FDZixNQUFNLENBQUMsV0FBUCxDQUFtQixFQUFuQixDQUNlLEdBQUksTUFBTSxDQUFDLFFBQVAsRUFBaUIsU0FBckIsQ0FBaUMsTUFBTSxDQUFDLFFBQVAsQ0FBa0IsTUFBbEIsQ0FDakMsTUFBTSxDQUFDLElBQVAsQ0FBWSxjQUFaLENBQ0EsR0FBSSxNQUFNLENBQUMsVUFBUCxFQUFtQixTQUF2QixDQUFrQyxNQUFNLENBQUMsVUFBUCxDQUFrQixLQUFsQixDQUNsQyxHQUFJLE1BQU0sQ0FBQyxhQUFQLEVBQXNCLFNBQTFCLENBQXFDLE1BQU0sQ0FBQyxhQUFQLENBQXFCLEtBQXJCLENBQ3JDLEdBQUksTUFBTSxDQUFDLFNBQVAsRUFBa0IsU0FBdEIsQ0FBaUMsTUFBTSxDQUFDLGdCQUFQLENBQTBCLE1BQU0sQ0FBQyxTQUFqQyxDQUNqQztBQUNBLEdBQUksTUFBTSxDQUFDLFVBQVAsR0FBb0IsU0FBeEIsQ0FBb0MsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsS0FBbEIsQ0FBMEIsRUFBMUIsQ0FDcEMsR0FBSSxNQUFNLENBQUMsVUFBUCxDQUFrQixLQUFsQixFQUF5QixTQUE3QixDQUEyQyxNQUFNLENBQUMsVUFBUCxDQUFrQixLQUFsQixDQUEwQixFQUExQixDQUUzQyxHQUFJLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFdBQWxCLEdBQWdDLFNBQXBDLENBQStDLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFdBQWxCLENBQStCLHdCQUEvQixDQUMvQyxHQUFJLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFdBQWxCLEdBQWdDLFNBQXBDLENBQStDLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFdBQWxCLENBQStCLElBQS9CLENBQy9DLEdBQUksTUFBTSxDQUFDLFVBQVAsQ0FBa0IsV0FBbEIsR0FBZ0MsU0FBcEMsQ0FBK0MsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsV0FBbEIsQ0FBK0IsT0FBL0IsQ0FDL0MsR0FBSSxNQUFNLENBQUMsVUFBUCxDQUFrQixhQUFsQixHQUFrQyxTQUF0QyxDQUFpRCxDQUM3QyxNQUFNLENBQUMsVUFBUCxDQUFrQixhQUFsQixDQUFrQyxFQUFsQyxDQUNBLEdBQUksTUFBTSxDQUFDLFVBQVAsQ0FBa0IsR0FBdEIsQ0FDUSxNQUFNLENBQUMsVUFBUCxDQUFrQixhQUFsQixDQUFrQyxJQUFJLENBQUMsS0FBTCxDQUFXLE1BQU0sQ0FBQyxVQUFQLENBQWtCLGFBQWxCLENBQWdDLENBQTNDLENBQWxDLENBQ1gsQ0FKRCxJQUlRLElBQUksTUFBTSxDQUFDLFVBQVAsQ0FBa0IsYUFBbEIsRUFBaUMsRUFBckMsQ0FBMEMsQ0FDOUMsR0FBSSxNQUFNLENBQUMsVUFBUCxDQUFrQixHQUF0QixDQUNRLE1BQU0sQ0FBQyxVQUFQLENBQWtCLGFBQWxCLENBQWtDLElBQUksQ0FBQyxLQUFMLENBQVcsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsYUFBbEIsQ0FBZ0MsQ0FBM0MsQ0FBbEMsQ0FDWCxDQUdELEdBQUksTUFBTSxDQUFDLFVBQVAsQ0FBa0IsS0FBbEIsQ0FBd0IsZUFBeEIsRUFBeUMsU0FBN0MsQ0FBd0QsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsS0FBbEIsQ0FBd0IsZUFBeEIsQ0FBd0MsQ0FBeEMsQ0FHM0Q7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FFb0IsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsY0FBYyxDQUFDLGFBQXRDLENBR0EsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsVUFDdEIsQ0FDSyxNQUFNLENBQUMsYUFBUCxDQUF1QixLQUF2QixDQUNPLEdBQUksQ0FBQSxhQUFhLENBQUcsRUFBcEIsQ0FDQSxHQUFJLENBQUEsWUFBWSxDQUFHLE1BQU0sQ0FBQyxRQUFQLEVBQW5CLENBRUEsR0FBSSxZQUFZLEVBQUUsU0FBZCxFQUEyQixZQUFZLENBQUMsTUFBYixDQUFxQixDQUFwRCxDQUF3RCxrSEFDN0IsTUFBTSxDQUFDLFVBRHNCLGNBQ2hELHFEQUFzQyxJQUEzQixDQUFBLEdBQTJCLGVBQ2xDLEdBQUksR0FBRyxDQUFDLElBQUosRUFBVyxXQUFYLEVBQTBCLEdBQUcsQ0FBQyxJQUFKLEVBQVcsWUFBekMsQ0FBdUQsQ0FDbkQsYUFBYSxDQUFDLElBQWQsQ0FBbUIsR0FBRyxDQUFDLElBQUosQ0FBUyxDQUFULEVBQWMsR0FBRyxDQUFDLElBQXJDLEVBQTRDO0FBQy9DLENBQ0osQ0FMK0MseURBT2hELFlBQVksQ0FBQyxJQUFiLENBQW1CLE1BQU0sQ0FBQyxhQUFQLENBQXFCLGFBQXJCLHVCQUFvQyxVQUFVLENBQUMsT0FBL0Msc0VBQW9DLHFCQUFvQixXQUF4RCx3RUFBb0Msc0JBQWlDLE9BQXJFLGlEQUFvQyx1QkFBMEMsSUFBOUUsQ0FBbkIsRUFDUCxDQUVaLENBaEJELENBbUJDLEdBQU0sQ0FBQSxTQUFTLENBQUcsR0FBSSxDQUFBLElBQUksQ0FBQyxZQUFULENBQXNCLE9BQXRCLENBQStCLENBQzVDLHFCQUFxQixDQUFFLENBRHFCLENBRTVDLHFCQUFxQixDQUFFLENBRnFCLENBQS9CLENBQWxCLENBTWhCLE1BQU0sQ0FBQyxVQUFQLENBQW9CLFNBQUMsS0FBRCxDQUFXLENBRTlCLEtBQUssQ0FBQyxlQUFOLEdBRUEsR0FBSSxDQUFBLGtCQUFrQixDQUFHLEtBQUssQ0FBQyxPQUEvQixDQUVBLEdBQUksQ0FBQSxLQUFLLENBQUcsUUFBUSxDQUFDLGNBQVQsQ0FBd0IsU0FBVSxNQUFNLENBQUMsVUFBUCxDQUFrQixPQUFwRCxDQUFaLENBQ0EsR0FBSSxLQUFKLENBQVcsQ0FDVixHQUFJLENBQUEsSUFBSSxDQUFHLEtBQUssQ0FBQyxxQkFBTixFQUFYLENBQ0EsT0FBTyxDQUFDLEdBQVIsQ0FBWSxJQUFJLENBQUMsR0FBakIsQ0FBc0IsSUFBSSxDQUFDLEtBQTNCLENBQWtDLElBQUksQ0FBQyxNQUF2QyxDQUErQyxJQUFJLENBQUMsSUFBcEQsRUFDQSxrQkFBa0IsQ0FBRyxLQUFLLENBQUMsT0FBTixDQUFnQixJQUFJLENBQUMsQ0FBMUMsQ0FDQSxDQUNELE1BQU0sQ0FBQyxXQUFQLENBQW9CLFNBQVUsa0JBQVYsQ0FBOEIsSUFBbEQsQ0FFQSxDQWRELENBZ0JlLE1BQU0sQ0FBQyxPQUFQLENBQWlCLFNBQVUsTUFBVixDQUFpQixJQUFqQixDQUNqQixDQUNJLEdBQUksQ0FBQSxHQUFKLENBQ0EsR0FBSSxJQUFJLENBQUMsbUJBQVQsQ0FBOEIsQ0FDekIsR0FBRyxDQUFHLEdBQUcsQ0FBQyxJQUFELENBQU0sTUFBTSxDQUFDLElBQWIsQ0FBbUIsSUFBbkIsQ0FBVCxDQUF5QztBQUM3QyxDQUZELElBR0ssQ0FDRCxHQUFHLENBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFSLENBQVYsQ0FBNkI7QUFDaEMsQ0FFRCxHQUFJLEdBQUcsR0FBRyxJQUFOLEVBQWMsR0FBRyxHQUFHLFNBQXhCLENBQW1DLE1BQU8sR0FBUCxDQUNuQztBQUVBLEdBQUksTUFBTSxDQUFDLFVBQVgsQ0FBdUIsQ0FBRTtBQUNyQixHQUFJLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFNBQWxCLENBQTRCLENBQTVCLENBQThCLENBQTlCLEVBQWlDLElBQWpDLElBQXlDLE1BQTdDLENBQ1EsR0FBRyxDQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBUCxDQUFrQixTQUFsQixDQUE0QixDQUE1QixDQUE4QixDQUE5QixDQUFELENBQVAsQ0FBMEMsR0FBMUMsQ0FBOEMsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsU0FBbEIsQ0FBNEIsQ0FBNUIsQ0FBOEIsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsTUFBaEQsRUFBd0QsSUFBeEQsRUFBOUMsQ0FBTixDQUNYLENBRUQ7QUFDQSxHQUFJLE1BQU0sQ0FBQyxXQUFQLEVBQXNCLFFBQTFCLENBQXNDLEdBQUcsQ0FBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBdkIsRUFBMkIsTUFBM0IsQ0FBa0MsR0FBbEMsQ0FBUCxDQUV0QyxNQUFPLENBQUEsR0FBUCxDQUNILENBdEJELENBeUJBLE1BQU0sQ0FBQyxXQUFQLENBQXFCLFNBQVMsR0FBVCxDQUNyQixDQUNJLEdBQUksQ0FBQyxNQUFNLENBQUMsVUFBUCxDQUFrQixTQUF2QixDQUFpQyxDQUVoQyxNQUFNLENBQUMsZ0JBQVAsQ0FBMEIsR0FBRyxDQUFDLFVBQTlCLENBQ0EsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsU0FBUyxNQUFNLENBQUMsa0JBQWhCLENBQW1DLElBQXRELENBQ0EsTUFBTSxDQUFDLGlCQUFQLENBQXlCLENBQUMsSUFBSSxDQUFDLEdBQU4sQ0FBekIsRUFFQSxDQU5ELElBTU0sQ0FDRixHQUFJLE1BQU0sQ0FBQyxXQUFYLENBQXdCLE1BQU0sQ0FBQyxXQUFQLENBQXFCLEdBQUcsQ0FBQyxVQUF6QixDQUN4QixNQUFNLENBQUMsbUJBQVAsQ0FBMkIsR0FBM0IsRUFDSCxDQUNKLENBWkQsQ0FhQyxNQUFNLENBQUMsbUJBQVAsQ0FBNkIsU0FBUyxHQUFULENBQzlCLENBRVEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsQ0FBQyxJQUFJLENBQUMsR0FBTixDQUF0QixFQUVQLENBTEEsQ0FPRCxNQUFNLENBQUMsYUFBUCxDQUF1QixVQUV2QixDQUNJLE1BQU0sQ0FBQyxXQUFQLENBQXFCLENBQUMsTUFBTSxDQUFDLFdBQTdCLENBRUEsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsTUFBTSxDQUFDLGdCQUFQLENBQXdCLE1BQXZDLENBQThDLENBQUMsRUFBL0MsQ0FDQSxDQUNHLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixDQUF4QixFQUEyQixVQUEzQixDQUF3QyxNQUFNLENBQUMsV0FBL0MsQ0FDRixDQUNELE1BQU0sQ0FBQyxjQUFQLENBQXNCLENBQUMsSUFBSSxDQUFDLElBQU4sQ0FBVyxTQUFTLENBQUMsTUFBTSxDQUFDLFdBQTVCLENBQXdDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUE1RCxDQUF0QixFQUNILENBVkQsQ0FZQSxNQUFNLENBQUMsa0JBQVAsQ0FBNEIsU0FBUyxLQUFULENBQWUsS0FBZixDQUM1QixDQUNFLEdBQUksQ0FBQSx1QkFBdUIsQ0FBRyxLQUFLLENBQUMsYUFBTixDQUFvQixVQUFsRCxDQUVBO0FBQ0EsR0FBSSxDQUFBLEtBQUssQ0FBRyxRQUFRLENBQUMsY0FBVCxDQUF3QixlQUFlLE1BQU0sQ0FBQyxVQUFQLENBQWtCLE9BQXpELENBQVosQ0FDQTtBQUNBLE1BQU0sQ0FBQyxrQkFBUCxDQUE0Qix1QkFBdUIsQ0FBRyxLQUFLLENBQUMsVUFBaEMsQ0FBNkMsS0FBSyxDQUFDLE9BQS9FLENBQ0QsQ0FSRCxDQVVELE1BQU0sQ0FBQyxjQUFQLENBQXdCLFVBQ3ZCLENBQ0k7QUFESiwyQ0FFcUIsTUFBTSxDQUFDLFVBRjVCLDhDQUVhLENBQUEsSUFGYixlQUdhLEdBQUksSUFBSSxDQUFDLElBQUwsRUFBYSxNQUFiLEVBQXVCLElBQUksQ0FBQyxJQUFMLEVBQWEsU0FBeEMsQ0FBb0QsQ0FDM0MsUUFBUSxDQUFDLFVBQVcsQ0FDakIsR0FBSSxNQUFNLENBQUMsY0FBWCxDQUE0QixNQUFNLENBQUMsY0FBUCxDQUFzQixJQUF0QixDQUEyQixJQUEzQixFQUFtQyxDQUQxRCxDQUFSLENBRVAsQ0FOZixFQUVJLHFEQUFvQyxVQUtuQyxDQVBMLHlEQVFDLENBVEYsQ0FZQyxNQUFNLENBQUMsV0FBUCxDQUFxQixVQUFXLENBQUU7QUFBRiwyQ0FDWixNQUFNLENBQUMsY0FESyxjQUM1QixxREFBdUMsSUFBOUIsQ0FBQSxHQUE4QiwwREFDbEIsTUFBTSxDQUFDLFVBRFcsY0FDbEMscURBQW1DLElBQTFCLENBQUEsR0FBMEIsZUFDNUIsR0FBSSxHQUFHLEVBQUksR0FBWCxDQUFpQixDQUNkO0FBQ0YsQ0FDUCxDQUxpQyx5REFNdEMsQ0FQMkIseURBUS9CLENBUkQsQ0FXQSxNQUFNLENBQUMsVUFBUCxDQUFvQixTQUFVLElBQVYsQ0FBZ0IsQ0FDaEMsTUFBTyxDQUFBLElBQUksQ0FBQyxJQUFMLEdBQWMsTUFBZCxFQUF3QixJQUFJLENBQUMsSUFBTCxHQUFjLFNBQTdDLENBQ0gsQ0FGRCxDQUtBLE1BQU0sQ0FBQyxxQkFBUCxDQUErQixVQUMvQixDQUNHLE1BQU0sQ0FBQyxtQkFBUCxDQUE2QixDQUFDLE1BQU0sQ0FBQyxtQkFBckMsQ0FDRixDQUhELENBS0EsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsVUFDeEIsQ0FDRyxNQUFNLENBQUMsWUFBUCxDQUFzQixDQUFDLE1BQU0sQ0FBQyxZQUE5QixDQUNGLENBSEQsQ0FNQSxNQUFNLENBQUMsVUFBUCxDQUFvQixTQUFVLElBQVYsQ0FBZ0IsQ0FDaEMsTUFBTSxDQUFDLFVBQVAsQ0FBbUIsWUFBbkIsQ0FBaUMsSUFBakMsRUFBdUM7QUFDMUMsQ0FGRCxDQUtBLE1BQU0sQ0FBQyxVQUFQLENBQW9CLFVBQ3BCLENBQ0ksR0FBSSxDQUFBLE9BQU8sQ0FBQyxFQUFaLENBQ0EsR0FBSSxDQUFBLE1BQU0sQ0FBQyx5QkFBWCxDQUNBLE1BQU0sQ0FBRyxNQUFNLENBQUUsaUxBQWpCLENBQ0EsR0FBSSxDQUFBLElBQUksQ0FBRSxNQUFNLENBQUMsUUFBUCxFQUFWLENBR0Q7QUFDQyxNQUFNLENBQUcsTUFBTSxDQUFFLG1CQUFqQixDQUNBLEdBQUksQ0FBQSxZQUFZLENBQUMsRUFBakIsQ0FDQSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFjLENBQUMsQ0FBRSxNQUFNLENBQUMsVUFBUCxDQUFrQixNQUFuQyxDQUEwQyxDQUFDLEVBQTNDLENBQStDLENBQ3pDLEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsQ0FBbEIsQ0FBVixDQUNBLEdBQUksR0FBRyxDQUFDLE9BQUosRUFBZSxJQUFuQixDQUF5QixDQUNyQixHQUFJLENBQUEsUUFBUSxDQUFDLFdBQWEsQ0FBMUIsQ0FDQSxHQUFNLEdBQUcsQ0FBQyxXQUFKLEVBQW1CLFFBQXpCLENBQ0ssTUFBTSxDQUFHLE1BQU0sQ0FBRyxlQUFULENBQTJCLFFBQTNCLENBQXNDLFFBQXRDLENBQWlELEdBQUcsQ0FBQyxXQUFyRCxDQUFtRSxRQUE1RSxDQURMLElBR0ksQ0FBQSxNQUFNLENBQUcsTUFBTSxDQUFHLGVBQVQsQ0FBMkIsUUFBM0IsQ0FBdUMsTUFBdkMsQ0FBZ0QsR0FBRyxDQUFDLFdBQXBELENBQWtFLFFBQTNFLENBQ0osWUFBWSxFQUFHLFFBQVUsQ0FBVixDQUFjLGdDQUFkLENBQWlELEdBQUcsQ0FBQyxLQUFyRCxDQUE2RCxJQUE1RSxDQUNILENBQ04sQ0FDRCxNQUFNLENBQUcsTUFBTSxDQUFFLFFBQWpCLENBRUE7QUF2QkosMkNBd0JtQixJQXhCbkIsY0F3QkkscURBQXFCLElBQWIsQ0FBQSxHQUFhLGVBRWpCLE1BQU0sQ0FBRyxNQUFNLENBQUUsbUJBQWpCLENBQ0EsSUFBSyxHQUFJLENBQUEsR0FBQyxDQUFDLENBQVgsQ0FBYyxHQUFDLENBQUUsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsTUFBbkMsQ0FBMkMsR0FBQyxFQUE1QyxDQUFpRCxDQUM1QyxHQUFJLENBQUEsS0FBRyxDQUFHLE1BQU0sQ0FBQyxVQUFQLENBQWtCLEdBQWxCLENBQVYsQ0FDQSxHQUFJLEtBQUcsQ0FBQyxPQUFKLEVBQWUsSUFBbkIsQ0FBeUIsQ0FDdEIsR0FBSSxDQUFBLFVBQVEsQ0FBQyxXQUFhLEdBQTFCLENBQ0EsR0FBTSxLQUFHLENBQUMsV0FBSixFQUFtQixRQUF6QixDQUFvQyxDQUNoQyxHQUFJLENBQUEsU0FBUyxDQUFHLEdBQUcsQ0FBQyxLQUFHLENBQUMsSUFBTCxDQUFILENBQWMsY0FBZCxDQUErQixNQUFNLENBQUMsUUFBUCxFQUFtQixPQUFsRCxDQUEyRCxDQUFFLHFCQUFxQixDQUFFLENBQXpCLENBQTRCLHFCQUFxQixDQUFFLENBQW5ELENBQTNELENBQWhCLENBQ0EsTUFBTSxDQUFDLE1BQU0sQ0FBRyxjQUFULENBQTBCLFVBQTFCLENBQXFDLE9BQXJDLENBQThDLFNBQTlDLENBQTJELFFBQWxFLENBQ0gsQ0FIRCxJQUlLLENBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBRyxjQUFULENBQTBCLFVBQTFCLENBQW9DLElBQXBDLENBQTBDLEdBQUcsQ0FBQyxLQUFHLENBQUMsSUFBTCxDQUE3QyxDQUEyRCxRQUFsRSxDQUNILENBQ0gsQ0FDTCxDQUNELE1BQU0sQ0FBRyxNQUFNLENBQUUsUUFBakIsQ0FDSCxDQUVEO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBaERvQix5REFrREksR0FBSSxDQUFBLGlCQUFpQixDQUFHLDZEQUF4QixDQUNBLEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLElBQVAsQ0FBWSxFQUFaLENBQWdCLFFBQWhCLENBQTBCLGlCQUExQixDQUFWLENBRUEsR0FBRyxDQUFDLFFBQUosQ0FBYSxJQUFiLENBQWtCLFNBQWxCLEVBQ0Q7QUFDRDtBQUNFLDJCQUNDLDJGQUNGO0FBRkMsQ0FHQyx1RkFIRCxDQUlDLGtFQUpELENBS0MsOEJBTEQsQ0FNQyxnREFORCxDQU9HLFlBUEgsQ0FRQyxZQVhELENBYUEsR0FBRyxDQUFDLFFBQUosQ0FBYSxJQUFiLENBQWtCLFNBQWxCLEVBQStCLE1BQS9CLENBRUgsQ0FyRUQsQ0F1RVIsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsVUFBVyw0QkFFN0IsR0FBSSxDQUFBLEVBQUUsQ0FBRyxHQUFJLENBQUEsT0FBTyxDQUFDLFFBQVosRUFBVCxDQUNBLEdBQUkseUJBQUEsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsMkJBQWxCLHdFQUErQyxFQUEvQyxHQUFtRCxTQUF2RCxDQUNBLENBQ0Esb0JBQW9CLENBQUMsWUFBckIsQ0FBa0MsTUFBTSxDQUFDLFVBQVAsQ0FBa0IseUJBQXBELENBQWdGLE1BQU0sQ0FBQyxVQUFQLENBQWtCLDJCQUFsQixDQUE4QyxFQUE5SCxFQUNDLElBREQsQ0FDTSxTQUFTLElBQVQsQ0FBZSxDQUNULGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLGlCQUE1QixDQUE4QyxNQUE5QyxFQUNBLE1BQU0sQ0FBQyxRQUFQLENBQWtCLElBQUksQ0FBQyxJQUF2QixDQUNILENBSlQsQ0FJVSxTQUFTLEtBQVQsQ0FBZSxDQUNiLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNMLENBTlAsRUFPQyxJQVBELENBT08sU0FBUyxJQUFULENBQWUsQ0FDbEIsRUFBRSxDQUFDLElBQUgsQ0FBUSxJQUFSLENBQWEsTUFBTSxDQUFDLFFBQXBCLEVBQ0ksSUFESixDQUNTLFNBQUEsUUFBUSxDQUFJLENBQ1gsUUFBUSxDQUFDLFNBQVQsQ0FBbUIsU0FBQyxLQUFELENBQVEsRUFBUixDQUFlLENBQzdCLEdBQUksTUFBTSxDQUFDLE9BQVAsQ0FBZSxRQUFuQixDQUE2QixDQUN4QixHQUFJLENBQUEsVUFBVSxDQUFHLE1BQU0sQ0FBQyxPQUFQLENBQWUsUUFBZixDQUF3QixNQUFNLENBQUMsSUFBUCxDQUFZLE1BQU0sQ0FBQyxPQUFQLENBQWUsUUFBM0IsRUFBcUMsQ0FBckMsQ0FBeEIsRUFBaUUsQ0FBakUsRUFBb0UsWUFBcEUsQ0FBakIsQ0FDQSxHQUFJLENBQUEsZUFBZSxDQUFHLE1BQU0sQ0FBQyxPQUFQLENBQWUsUUFBZixDQUF3QixNQUFNLENBQUMsSUFBUCxDQUFZLE1BQU0sQ0FBQyxPQUFQLENBQWUsUUFBM0IsRUFBcUMsQ0FBckMsQ0FBeEIsRUFBaUUsQ0FBakUsRUFBb0UsaUJBQXBFLENBQXRCLENBQ0MsS0FBSyxDQUFDLE9BQU4sQ0FBYyxJQUFkLEVBQW9CLEtBQXBCLENBQTRCLFVBQTVCLENBQ0EsS0FBSyxDQUFDLE9BQU4sQ0FBYyxJQUFkLEVBQW9CLEtBQXBCLENBQTRCLGVBQTVCLENBQ0wsQ0FFRixHQUFJLENBQUEsSUFBSSxDQUFDLEVBQVQsQ0FDQSxHQUFJLENBQUEsTUFBTSxDQUFDLEVBQVgsQ0FFQSxNQUFNLENBQUMsVUFBUCxDQUFrQixPQUFsQixDQUE0QixTQUFDLEdBQUQsQ0FBTSxDQUFOLENBQzVCLENBQ0ksR0FBSSxHQUFHLENBQUMsT0FBUixDQUFpQixDQUNiLE1BQU0sQ0FBQyxJQUFQLENBQVksR0FBRyxDQUFDLFdBQWhCLEVBQ0EsR0FBSSxDQUFBLFFBQVEsQ0FBRyxHQUFHLENBQUMsS0FBSixDQUFVLE9BQVYsQ0FBa0IsR0FBbEIsQ0FBc0IsRUFBdEIsRUFBMEIsT0FBMUIsQ0FBa0MsSUFBbEMsQ0FBdUMsRUFBdkMsQ0FBZixDQUEwRDtBQUMxRCxJQUFJLENBQUMsSUFBTCxDQUFVLENBQUMsTUFBTSxDQUFFLEdBQUcsQ0FBQyxXQUFiLENBQTBCLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBbEMsQ0FBd0MsS0FBSyxDQUFFLFFBQS9DLENBQVYsRUFDSCxDQUNKLENBUEQsRUFTRixLQUFLLENBQUMsT0FBTixDQUFnQixJQUFoQixDQUVBO0FBQ2hDLDBEQUNnQyxHQUFJLENBQUEsSUFBSSxDQUFHLE1BQU0sQ0FBQyxRQUFQLEVBQVgsQ0FDQSxLQUFLLENBQUMsVUFBTixDQUFpQixDQUFqQixDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUNBLEtBQUssQ0FBQyxVQUFOLENBQWlCLENBQWpCLENBQW9CLENBQXBCLEVBQ0E7QUFDQSxLQUFLLENBQUMsTUFBTixDQUFhLENBQWIsRUFBZ0IsTUFBaEIsQ0FBeUIsSUFBekIsQ0FFQSxNQUFPLENBQUEsUUFBUCxDQUNELENBL0JELEVBa0NKLFFBQVEsQ0FBQyxJQUFULENBQWMsV0FBZCxHQUE0QixJQUE1QixDQUFpQyxTQUFDLElBQUQsQ0FBVSxDQUNuQyxHQUFNLENBQUEsSUFBSSxDQUFHLEdBQUksQ0FBQSxJQUFKLENBQVMsQ0FBQyxJQUFELENBQVQsQ0FBaUIsQ0FBRSxJQUFJLENBQUUsaUZBQVIsQ0FBakIsQ0FBYixDQUNBLE1BQU0sQ0FBQyxJQUFELENBQU8sYUFBUCxDQUFOLENBQ0QsQ0FIUCxFQUtELENBekNMLEVBMENDLENBbERMLEVBbURDLENBckRELElBcURNLENBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsaUNBQTVCLENBQThELFNBQTlELEVBQ1QsQ0F6REQsQ0E2RE8sTUFBTSxDQUFDLFdBQVAsQ0FBcUIsVUFDcEIsQ0FDSSxHQUFNLENBQUEsUUFBUSxDQUFHLEdBQUksQ0FBQSxPQUFPLENBQUMsUUFBWixFQUFqQixDQUNBLEdBQU0sQ0FBQSxTQUFTLENBQUcsUUFBUSxDQUFDLFlBQVQsQ0FBc0IsV0FBdEIsQ0FBbEIsQ0FDQSxHQUFJLENBQUEsSUFBSSxDQUFDLEVBQVQsQ0FDQSxHQUFJLENBQUEsTUFBTSxDQUFDLEVBQVgsQ0FDQSxHQUFJLENBQUEsTUFBTSxDQUFDLEVBQVgsQ0FDQSxHQUFJLENBQUEsZUFBZSxDQUFDLEVBQXBCLENBTkosMkNBUW9CLE1BQU0sQ0FBQyxVQVIzQixjQVFJLHFEQUFtQyxJQUExQixDQUFBLEdBQTBCLGVBQzNCLEdBQUksR0FBRyxDQUFDLE9BQVIsQ0FBaUIsQ0FDYixlQUFlLENBQUMsSUFBaEIsQ0FBcUIsR0FBRyxDQUFDLElBQXpCLEVBQ0EsSUFBSSxDQUFDLElBQUwsQ0FBVSxDQUFDLE1BQU0sQ0FBRSxHQUFHLENBQUMsV0FBYixDQUEwQixHQUFHLENBQUMsR0FBRyxDQUFDLElBQWxDLENBQVYsRUFDQSxHQUFJLEdBQUcsQ0FBQyxXQUFKLEVBQWtCLE1BQXRCLENBQStCLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBTCxDQUFOLENBQW1CLElBQW5CLENBQy9CLEdBQUksR0FBRyxDQUFDLFdBQUosRUFBa0IsTUFBdEIsQ0FBK0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFMLENBQU4sQ0FBbUIsSUFBbkIsQ0FDbEMsQ0FDUixDQWZMLHlEQWlCSSxTQUFTLENBQUMsT0FBVixDQUFvQixJQUFwQixDQUNBO0FBRUEsR0FBSSxDQUFBLFlBQVksQ0FBQyxNQUFNLENBQUMsUUFBUCxFQUFqQixDQUNBLEdBQUksQ0FBQSxhQUFhLENBQUcsRUFBcEIsQ0FDQTtBQXRCSiwyQ0F1Qm9CLFlBdkJwQixjQXVCSSxxREFBOEIsSUFBckIsQ0FBQSxHQUFxQixlQUMxQixHQUFJLENBQUEsR0FBRyxDQUFHLEVBQVYsQ0FEMEIsMkNBRVYsZUFGVSxjQUUxQixxREFBaUMsSUFBeEIsQ0FBQSxLQUF3QixlQUM1QixHQUFHLENBQUMsS0FBRCxDQUFILENBQVcsR0FBRyxDQUFDLEtBQUQsQ0FBZCxDQUNBLEdBQUksR0FBRyxDQUFDLEtBQUQsQ0FBSCxFQUFZLE1BQU0sQ0FBQyxLQUFELENBQXRCLENBQStCLENBQUc7QUFDMUIsR0FBRyxDQUFDLEtBQUQsQ0FBSCxDQUFXLEdBQUcsQ0FBQyxLQUFELENBQWQsQ0FDSCxDQUNMLEdBQUksR0FBRyxDQUFDLEtBQUQsQ0FBSCxFQUFZLE1BQU0sQ0FBQyxLQUFELENBQXRCLENBQStCLENBQUc7QUFDekIsR0FBRyxDQUFDLEtBQUQsQ0FBSCxDQUFXLEdBQUksQ0FBQSxJQUFKLENBQVMsR0FBRyxDQUFDLEtBQUQsQ0FBWixDQUFYLENBQ0osQ0FDUCxDQVZ1Qix5REFXMUIsYUFBYSxDQUFDLElBQWQsQ0FBbUIsR0FBbkIsRUFDSCxDQW5DTCx5REFxQ0ksU0FBUyxDQUFDLE9BQVYsQ0FBa0IsYUFBbEIsRUFFQSxRQUFRLENBQUMsSUFBVCxDQUFjLFdBQWQsR0FBNEIsSUFBNUIsQ0FBaUMsU0FBQyxJQUFELENBQVUsQ0FDekMsR0FBTSxDQUFBLElBQUksQ0FBRyxHQUFJLENBQUEsSUFBSixDQUFTLENBQUMsSUFBRCxDQUFULENBQWlCLENBQUUsSUFBSSxDQUFFLGlGQUFSLENBQWpCLENBQWIsQ0FDQSxNQUFNLENBQUMsSUFBRCxDQUFPLGFBQVAsQ0FBTixDQUNELENBSEQsRUFJSCxDQTVDRixDQStDQyxNQUFNLENBQUMsY0FBUCxDQUF3QixTQUFTLFVBQVQsQ0FBb0IsUUFBcEIsQ0FDeEIsQ0FDTSxNQUFNLENBQUMsVUFBUCxDQUFrQixVQUFsQixDQUE2QixNQUE3QixDQUFzQyxRQUF0QyxDQUNBLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFVBQWxCLENBQTZCLEtBQTdCLENBQXFDLENBQUMsVUFBVSxDQUFDLENBQVosRUFBZSxRQUFwRCxDQUNBLE1BQU0sQ0FBQyxXQUFQLENBQW1CLE1BQU0sQ0FBQyxVQUExQixFQUNMLENBTEQsQ0FRQSxNQUFNLENBQUMsUUFBUCxDQUFrQixTQUFTLEVBQVQsQ0FBYSxDQUMzQixHQUFJLEVBQUUsQ0FBQyxJQUFILEVBQVcsU0FBWCxFQUF3QixFQUFFLENBQUMsSUFBSCxFQUFTLEVBQXJDLENBQ0ksRUFBRSxDQUFDLElBQUgsQ0FBUSxXQUFSLENBREosSUFFTSxJQUFJLEVBQUUsQ0FBQyxJQUFILEVBQVMsV0FBYixDQUNGLEVBQUUsQ0FBQyxJQUFILENBQVEsWUFBUixDQURFLElBRUQsSUFBSSxFQUFFLENBQUMsSUFBSCxFQUFTLFlBQWIsQ0FDRCxFQUFFLENBQUMsSUFBSCxDQUFRLEVBQVIsQ0FFSixNQUFNLENBQUMsYUFBUCxDQUF1QixJQUF2QixDQUdILENBWEQsQ0FhQTtBQUNBLE1BQU0sQ0FBQyxXQUFQLENBQXFCLFNBQVMsVUFBVCxDQUNyQixDQUNHLEdBQUksVUFBVSxDQUFDLFVBQVgsQ0FBc0IsTUFBdEIsRUFBOEIsU0FBOUIsRUFBMkMsVUFBVSxDQUFDLFVBQVgsQ0FBc0IsTUFBdEIsRUFBOEIsR0FBN0UsQ0FDSyxVQUFVLENBQUMsVUFBWCxDQUFzQixNQUF0QixDQUE2QixFQUE3QixDQUVKO0FBQ0EsR0FBSyxNQUFNLENBQUMsYUFBWixDQUE0QixDQUN4QixNQUFNLENBQUMsYUFBUCxDQUF1QixLQUF2QixDQUNBLE1BQU0sQ0FBQyxZQUFQLEdBQ0gsQ0FFRjtBQUNBLE1BQU0sQ0FBQyxhQUFQLENBQXFCLENBQUMsVUFBVSxDQUFFLFVBQWIsQ0FBeUIsVUFBVSxDQUFFLFVBQVUsQ0FBQyxVQUFYLENBQXNCLEtBQXRCLENBQTRCLFVBQVUsQ0FBQyxVQUFYLENBQXNCLE1BQW5ELENBQTJELENBQS9GLENBQWtHLFFBQVEsQ0FBQyxVQUFVLENBQUMsVUFBWCxDQUFzQixNQUFqSSxDQUFyQixFQUNNLElBRE4sQ0FDVyxTQUFVLE1BQVYsQ0FBa0IsQ0FDcEI7QUFFQSxNQUFNLENBQUMsZ0JBQVAsQ0FBMEIsTUFBTSxDQUFDLElBQVAsQ0FBWSxPQUF0QyxDQUNBLE1BQU0sQ0FBQyxVQUFQLENBQW9CLE1BQU0sQ0FBQyxJQUFQLENBQVksT0FBaEMsQ0FDQSxNQUFNLENBQUMsWUFBUCxDQUFzQixNQUFNLENBQUMsSUFBUCxDQUFZLEtBQWxDLENBTG9CLDJDQVFGLE1BQU0sQ0FBQyxVQVJMLGNBUXBCLHFEQUFxQyxJQUExQixDQUFBLEtBQTBCLGVBQ2pDLEdBQUksQ0FBQSxTQUFKLENBQ0EsR0FBSSxDQUFBLFdBQVcsQ0FBRyxLQUFHLENBQUMsZUFBSixDQUFzQixLQUF0QixDQUE4QixJQUFoRCxDQUVBLEdBQUksS0FBRyxDQUFDLGFBQVIsQ0FDUSxTQUFTLENBQUcsR0FBSSxDQUFBLElBQUksQ0FBQyxZQUFULENBQXNCLE9BQXRCLENBQStCLENBQUUsV0FBVyxDQUFFLFdBQWYsQ0FBNkIscUJBQXFCLENBQUUsS0FBRyxDQUFDLGFBQXhELENBQXlFLHFCQUFxQixDQUFFLEtBQUcsQ0FBQyxhQUFwRyxDQUEvQixDQUFaLENBRFIsSUFHUSxDQUFBLFNBQVMsQ0FBRyxHQUFJLENBQUEsSUFBSSxDQUFDLFlBQVQsQ0FBc0IsT0FBdEIsQ0FBK0IsQ0FBRSxXQUFXLENBQUUsV0FBZixDQUEvQixDQUFaLENBQ1IsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsS0FBRyxDQUFDLEVBQXBCLEVBQTBCLFNBQTFCLENBQ0osQ0FqQm9CLHlEQXNCcEIsR0FBSSxNQUFNLENBQUMsSUFBUCxDQUFZLE9BQVosRUFBcUIsU0FBekIsQ0FBb0MsNENBQ1osTUFBTSxDQUFDLElBQVAsQ0FBWSxPQURBLGNBQzdCLHFEQUFxQyxJQUE1QixDQUFBLE1BQTRCLGVBQ25DLE1BQUksQ0FBQyxPQUFMLENBQWMsRUFBZCxDQURtQywyQ0FFbkIsTUFBTSxDQUFDLElBQVAsQ0FBWSxPQUZPLGNBRW5DLHFEQUFxQyxJQUE1QixDQUFBLEdBQTRCLGVBQzlCLE1BQUksQ0FBQyxPQUFMLENBQWEsR0FBRyxDQUFDLElBQWpCLEVBQXlCLE1BQU0sQ0FBQyxPQUFQLENBQWUsR0FBZixDQUFvQixNQUFwQixDQUF6QixDQUNILENBSitCLHlEQUt2QyxDQU4rQix5REFPbkMsQ0FHRCxHQUFJLFVBQVUsRUFBRSxTQUFoQixDQUE0QixDQUN4QixVQUFVLENBQUMsVUFBWCxDQUFzQixhQUF0QixDQUFzQyxNQUFNLENBQUMsSUFBUCxDQUFZLGFBQWxELENBQ0EsVUFBVSxDQUFDLFVBQVgsQ0FBc0IsY0FBdEIsQ0FBdUMsTUFBTSxDQUFDLElBQVAsQ0FBWSxLQUFuRCxDQUNILENBQ0QsTUFBTSxDQUFDLFVBQVAsQ0FBb0IsVUFBcEIsQ0FHSCxDQXhDTixFQXlDRixDQXJERCxDQXVEQTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUVvQixHQUFJLENBQUEsWUFBWSxDQUFHLFFBQWYsQ0FBQSxZQUFlLENBQVUsSUFBVixDQUFnQixDQUMvQjtBQUNBLEdBQUksTUFBTyxDQUFBLElBQVAsR0FBZ0IsUUFBcEIsQ0FBOEIsTUFBTyxDQUFBLElBQVAsQ0FDOUIsR0FBSSxDQUFBLE1BQU0sQ0FBRyxFQUFiLENBQ0EsSUFBSSxDQUFDLEtBQUwsQ0FBVyxHQUFYLEVBQWdCLE9BQWhCLENBQXdCLFNBQVUsSUFBVixDQUFnQixLQUFoQixDQUF1QixDQUMzQztBQUNBLElBQUksQ0FBQyxLQUFMLENBQVcsY0FBWCxFQUEyQixPQUEzQixDQUFtQyxTQUFVLEdBQVYsQ0FBZSxDQUM5QyxHQUFJLEdBQUcsQ0FBQyxNQUFKLENBQWEsQ0FBakIsQ0FBdUIsTUFBTSxDQUFDLElBQVAsQ0FBWSxHQUFaLEVBQWlCO0FBQzNDLENBRkQsRUFHSCxDQUxELEVBTUEsTUFBTyxDQUFBLE1BQVAsQ0FDSCxDQVhELENBZUEsR0FBSSxDQUFBLEdBQUcsQ0FBRyxRQUFOLENBQUEsR0FBTSxDQUFVLEdBQVYsQ0FBZSxJQUFmLENBQXFCLEdBQXJCLENBQTBCLENBR2hDLElBQUksQ0FBRyxZQUFZLENBQUMsSUFBRCxDQUFuQixDQUEwQjtBQUMxQixHQUFJLENBQUEsT0FBTyxDQUFHLEdBQWQsQ0FBa0I7QUFDbEI7QUFDQSxHQUFJLElBQUksR0FBRyxJQUFQLEVBQWUsSUFBSSxHQUFHLFNBQTFCLENBQ0EsQ0FDSSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUcsQ0FBYixDQUFnQixDQUFDLENBQUcsSUFBSSxDQUFDLE1BQXpCLENBQWlDLENBQUMsRUFBbEMsQ0FBc0MsQ0FDdEM7QUFDQSxHQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBRCxDQUFMLENBQVAsR0FBcUIsU0FBckIsRUFBa0MsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFELENBQUwsQ0FBUCxHQUFxQixJQUE1RCxDQUFtRSxNQUFPLENBQUEsR0FBUCxDQUNuRSxPQUFPLENBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFELENBQUwsQ0FBakIsQ0FBNEI7QUFDM0IsQ0FDSixDQVBELElBT08sT0FBTyxDQUFBLEdBQVAsQ0FDUCxNQUFPLENBQUEsT0FBUCxDQUNILENBZkQsQ0FpQlIsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsU0FBUyxPQUFULENBQWlCLENBRWxDLE1BQU8sQ0FBQSxJQUFJLENBQUMsV0FBTCxDQUFpQixPQUFqQixDQUFQLENBQ0gsQ0FIRCxDQUtKLE1BQU0sQ0FBQyxNQUFQLENBQWMsWUFBZCxDQUE0QixTQUFVLFFBQVYsQ0FBb0IsQ0FBRTtBQUU5QyxHQUFJLE1BQU0sQ0FBQyxjQUFQLEVBQXlCLFNBQTdCLENBQXdDLE1BQU0sQ0FBQyxjQUFQLENBQXlCLEVBQXpCLENBQ3hDLEdBQUksTUFBTSxDQUFDLFVBQVAsRUFBcUIsU0FBekIsQ0FBb0MsTUFBTSxDQUFDLFVBQVAsQ0FBcUIsRUFBckIsQ0FIUSwyQ0FLM0IsTUFBTSxDQUFDLFVBTG9CLGNBSzVDLHFEQUFvQyxJQUEzQixDQUFBLE1BQTJCLGVBQzlCLEdBQUksTUFBSSxDQUFDLElBQUwsRUFBYSxXQUFiLEVBQTRCLE1BQUksQ0FBQyxJQUFMLEVBQWEsWUFBN0MsQ0FBMkQsQ0FDdEQ7QUFDQSxHQUFLLENBQUUsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsUUFBdEIsQ0FBK0IsTUFBL0IsQ0FBUCxDQUNpQixNQUFNLENBQUMsY0FBUCxDQUFzQixJQUF0QixDQUEyQixNQUEzQixFQUVyQixDQUNOLENBRUY7QUFDQTtBQWY2Qyx5REFpQi9DLENBakJELENBaUJFLElBakJGLEVBbUJGO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFJaUIsQ0E3aEJGLENBNmhCSztBQUNMLEtBQUssQ0FBQyxDQUNELFNBQVMsQ0FBQyxJQURULENBRUQsVUFBVSxDQUFDLElBRlYsQ0FHaEIsY0FBYyxDQUFDLElBSEMsQ0FJRCxRQUFRLENBQUMsSUFKUixDQUtELFdBQVcsQ0FBQyxJQUxYLENBTUQsVUFBVSxDQUFDLElBTlYsQ0FPRCxhQUFhLENBQUMsSUFQYixDQVFELFVBQVUsQ0FBQyxJQVJWLENBU0QsV0FBVyxDQUFDLEdBVFgsQ0FVRCxTQUFTLENBQUMsR0FWVCxDQVdELGlCQUFpQixDQUFDLEdBWGpCLENBWUQsY0FBYyxDQUFDLEdBWmQsQ0FhRCxhQUFhLENBQUMsZ0JBYmIsQ0FjRCxRQUFRLENBQUMsV0FkUixDQWVELGdCQUFnQixDQUFFLEdBZmpCLENBZ0JELGlCQUFpQixDQUFDLElBaEJqQixDQWlCRCxhQUFhLENBQUMsa0JBakJiLENBa0JELFdBQVcsQ0FBRSxJQWxCWixDQW1CRCxnQkFBZ0IsQ0FBRSxJQW5CakIsQ0E5aEJOLENBbWpCSCxXQUFXLENBQUUsd0NBbmpCVixDQW9qQkgsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUVoQyxLQUFLLENBQUMsZ0JBQU4sQ0FBdUIsQ0FBQyxRQUFRLENBQUUsS0FBSyxDQUFDLGNBQWpCLENBQXZCLEVBQ0EsR0FBSSxLQUFLLENBQUMsZ0JBQU4sR0FBeUIsU0FBN0IsQ0FBd0MsS0FBSyxDQUFDLGdCQUFOLENBQXVCLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBVixDQUFZLEtBQUssQ0FBQyxNQUFsQixDQUFELENBQXZCLENBRTFDLENBempCQyxDQUFQLENBNmpCUCxFQUNELGFBRU8sUUFBUyxDQUFBLGlCQUFULENBQTRCLFVBQTVCLENBQXVDLFlBQXZDLENBQW9ELGVBQXBELENBQW9FLG9CQUFwRSxDQUF5RixlQUF6RixDQUF5RyxnQkFBekcsQ0FBMEgseUJBQTFILENBQW9KLFFBQXBKLENBQTZKLFFBQTdKLENBQXVLLENBRXRLLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVILFdBQVcsQ0FBRSw2Q0FGVixDQUdILFVBQVUsQ0FBRSxvQkFBUyxXQUFULENBQXFCLG9CQUFyQixDQUEwQyxVQUExQyxDQUFxRCxpQkFBckQsQ0FBdUUsUUFBdkUsQ0FBZ0YsWUFBaEYsQ0FBNkYsUUFBN0YsQ0FBc0cseUJBQXRHLENBQWdJLE1BQWhJLENBQXVJLGVBQXZJLENBQXVKLGdCQUF2SixDQUF3SyxlQUF4SyxDQUF3TCxDQUFFLENBSG5NLENBSUYsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUVqQyxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0EsS0FBSyxDQUFDLGtCQUFOLENBQTJCLENBQUMsV0FBVyxDQUFDLDBCQUFiLENBQXdDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLEtBQXZELENBQTZELElBQUksQ0FBQyxNQUFsRSxDQUN6QixZQUFZLENBQUMsSUFEWSxDQUNQLFNBQVMsQ0FBQyxLQURILENBQ1MsZUFBZSxDQUFDLFVBRHpCLENBQ29DLFlBQVksQ0FBQyxVQURqRCxDQUM0RCxnQkFBZ0IsQ0FBQyxFQUQ3RSxDQUEzQixDQUdBLEtBQUssQ0FBQyxrQkFBTixDQUF5QixLQUF6QixDQUNBLEtBQUssQ0FBQyxRQUFOLENBQWUsS0FBZixDQUVBLEtBQUssQ0FBQyxZQUFOLENBQW1CLFlBQVksQ0FBQyxvQkFBaEMsQ0FDQSxLQUFLLENBQUMscUJBQU4sQ0FBNEIsWUFBWSxDQUFDLFVBQXpDLENBQ0EsS0FBSyxDQUFDLG1CQUFOLENBQTBCLFlBQVksQ0FBQyxpQkFBdkMsQ0FDQSxLQUFLLENBQUMsWUFBTixDQUFtQixNQUFuQixDQUNBO0FBQ0EsS0FBSyxDQUFDLGlCQUFOLENBQXdCLEtBQXhCLENBQ0EsS0FBSyxDQUFDLFNBQU4sQ0FBa0IsQ0FBQyxPQUFPLENBQUcsRUFBWCxDQUFsQixDQUNBLEtBQUssQ0FBQyxTQUFOLENBQWdCLEtBQUssQ0FBQyxFQUFOLENBQVMsT0FBekIsQ0FFQSxLQUFLLENBQUMsYUFBTixDQUFvQixZQUFZLENBQUMsYUFBakMsQ0FDQSxLQUFLLENBQUMsZUFBTixDQUFzQixZQUFZLENBQUMsZUFBbkMsQ0FDQSxLQUFLLENBQUMsbUJBQU4sQ0FBMEIsUUFBUSxDQUFDLFNBQVQsQ0FBbUIsMkJBQW5CLENBQTFCLENBQ0EsS0FBSyxDQUFDLHFCQUFOLENBQTRCLFFBQVEsQ0FBQyxTQUFULENBQW1CLDZCQUFuQixDQUE1QixDQUNBLEtBQUssQ0FBQyxZQUFOLENBQXFCLEtBQXJCLENBQ0EsS0FBSyxDQUFDLGlCQUFOLENBQXdCLEtBQXhCLENBSUEsS0FBSyxDQUFDLFdBQU4sQ0FBb0IsU0FBVSxLQUFWLENBQWdCLENBRWxDLEdBQUksS0FBSyxDQUFHLENBQUMsQ0FBYixDQUFnQixDQUVqQixLQUFLLENBQUMsVUFBTixDQUFpQixNQUFqQixDQUF3QixNQUF4QixDQUErQixLQUEvQixDQUFzQyxDQUF0QyxFQUVFLENBRUYsQ0FSRCxDQWFOLEtBQUssQ0FBQyxnQkFBTixDQUF5QixVQUFVLENBRy9CLG9CQUFvQixDQUFDLG9CQUFyQixDQUEwQyxJQUExQyxDQUErQyxNQUEvQyxFQUF1RCxJQUF2RCxDQUE0RCxTQUFTLElBQVQsQ0FBZSxDQUV2RCxLQUFLLENBQUMsV0FBTixDQUFrQixJQUFsQixDQUF5QixJQUFJLENBQUMsSUFBOUIsQ0FHRixDQUxsQixDQUttQixTQUFTLEtBQVQsQ0FBZSxDQUVkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNMLENBUmYsRUFTSCxDQVpELENBZU47QUFDRDtBQUVFLEtBQUssQ0FBQyxlQUFOLENBQXdCLFVBQVUsQ0FHekIsb0JBQW9CLENBQUMsa0NBQXJCLENBQXdELElBQXhELENBQTZELE1BQTdELEVBQXFFLElBQXJFLENBQTBFLFNBQVMsSUFBVCxDQUFlLENBRXRFLEtBQUssQ0FBQyxXQUFOLENBQWtCLElBQWxCLENBQXlCLElBQUksQ0FBQyxJQUE5QixDQUVGLENBSmpCLENBSWtCLFNBQVMsS0FBVCxDQUFlLENBRWIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0FQZixFQVVULENBYkEsQ0FlQyxLQUFLLENBQUMsb0JBQU4sQ0FBNkIsU0FBUyxJQUFULENBQWMsS0FBZCxDQUFvQixDQUVoRCxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsWUFBekIsQ0FBc0MsSUFBdEMsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLE9BQVQsQ0FBbUIsS0FBSyxDQUFDLGtCQUFOLENBQXlCLFlBQXpCLENBQXNDLEVBQXpELENBQ0EsS0FBSyxDQUFDLGFBQU4sR0FFRCxDQU5BLENBUUQsS0FBSyxDQUFDLGFBQU4sQ0FBc0IsVUFBVSxDQUUvQixHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBVCxDQUFnQixZQUFwQixDQUNJLENBRUUsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsS0FBSyxDQUFDLGtCQUFOLENBQXlCLFlBQXpCLENBQXNDLEVBQXRELENBQ0Y7QUFDQyxDQUxMLElBT0ksQ0FDRSxLQUFLLENBQUMsU0FBTixDQUFrQixLQUFLLENBQUMsRUFBTixDQUFTLE9BQTNCLENBQ0QsQ0FFTCxDQWJELENBZ0JDLEdBQUksS0FBSyxDQUFDLGFBQU4sRUFBcUIsU0FBckIsRUFBa0MsS0FBSyxDQUFDLGFBQU4sRUFBcUIsRUFBM0QsQ0FDQSxDQUNJLEdBQUksS0FBSyxDQUFDLG1CQUFOLEVBQTJCLFNBQTNCLEVBQXdDLEtBQUssQ0FBQyxtQkFBTixFQUEyQixFQUF2RSxDQUNBLENBQ0UsS0FBSyxDQUFDLFlBQU4sQ0FBcUIsSUFBckIsQ0FDRCxDQUhELElBSUEsQ0FDRSxLQUFLLENBQUMsYUFBTixDQUF1QixLQUFLLENBQUMsbUJBQTdCLENBQ0EsS0FBSyxDQUFDLGlCQUFOLENBQTBCLElBQTFCLENBQ0QsQ0FHSixDQVpELElBWUssQ0FDSCxRQUFRLENBQUMsU0FBVCxDQUFtQiwyQkFBbkIsQ0FBK0MsS0FBSyxDQUFDLGFBQXJELEVBRUQsQ0FFRCxHQUFJLEtBQUssQ0FBQyxlQUFOLEVBQXVCLFNBQTNCLENBQ0EsQ0FDSSxHQUFJLEtBQUssQ0FBQyxxQkFBTixFQUE2QixTQUFqQyxDQUNBLENBQ0ksR0FBSSxLQUFLLENBQUMsaUJBQVYsQ0FDQSxDQUNFLEtBQUssQ0FBQyxlQUFOLENBQXlCLEtBQUssQ0FBQyxxQkFBL0IsQ0FDRCxDQUNKLENBRUosQ0FWRCxJQVVNLElBQUksS0FBSyxDQUFDLHFCQUFOLEVBQTZCLFNBQWpDLENBQ04sQ0FDRSxRQUFRLENBQUMsU0FBVCxDQUFtQiw2QkFBbkIsQ0FBaUQsS0FBSyxDQUFDLGVBQXZELEVBRUQsQ0FKSyxJQUtOLENBQ0ksR0FBSSxLQUFLLENBQUMsaUJBQVYsQ0FDQSxDQUVFLEtBQUssQ0FBQyxlQUFOLENBQXlCLEtBQUssQ0FBQyxxQkFBL0IsQ0FFRCxDQUxELElBTUEsQ0FDSSxRQUFRLENBQUMsU0FBVCxDQUFtQiw2QkFBbkIsQ0FBaUQsS0FBSyxDQUFDLGVBQXZELEVBQ0gsQ0FDSixDQUdBLEdBQUksS0FBSyxDQUFDLFlBQU4sRUFBb0IsU0FBcEIsRUFBaUMsS0FBSyxDQUFDLFlBQU4sRUFBb0IsRUFBekQsQ0FDRyxDQUNDO0FBRUMsS0FBSyxDQUFDLFlBQU4sQ0FBcUIsQ0FBckIsQ0FFRCxDQUNMLEtBQUssQ0FBQyxlQUFOLENBQXdCLEVBQXhCLENBSUY7QUFFRSxLQUFLLENBQUMsV0FBTixDQUFrQix5QkFBeUIsQ0FBQyxZQUExQixDQUF1QyxLQUFLLENBQUMsU0FBN0MsQ0FBbEIsQ0FFRCxHQUFLLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxHQUFxQixTQUExQixDQUFzQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsRUFBbkIsQ0FDckMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGNBQW5CLENBQW1DLEVBQW5DLENBQ0EsS0FBSyxDQUFDLGVBQU4sQ0FBc0Isb0JBQXRCLENBQTZDLEVBQTdDLENBQ0EsS0FBSyxDQUFDLGVBQU4sQ0FBc0IscUJBQXRCLENBQThDLEVBQTlDLENBRUcsS0FBSyxDQUFDLGNBQU4sQ0FBdUIsVUFDMUIsQ0FDRSxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsVUFBekIsQ0FBb0MsVUFBcEMsQ0FBK0MsQ0FBQyxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsVUFBekIsQ0FBb0MsVUFBcEYsQ0FHRCxDQUxFLENBT0gsS0FBSyxDQUFDLGVBQU4sQ0FBd0IsVUFBVSxDQUM3QixHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0QsS0FBSyxDQUFDLGNBQU4sQ0FBcUIsQ0FBckIsQ0FDQSxLQUFLLENBQUMsYUFBTixDQUFvQixDQUFwQixDQUdGLGVBQWUsQ0FBQyxlQUFoQixDQUFnQyxLQUFLLENBQUMsU0FBdEMsQ0FBZ0QsS0FBSyxDQUFDLFlBQXRELENBQW1FLElBQW5FLEVBQXlFLElBQXpFLENBQThFLFNBQVMsSUFBVCxDQUFlLENBR2xFLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixjQUFuQixDQUFvQyxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQVYsQ0FBa0IsQ0FBbEIsQ0FBcEMsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsY0FBbkIsQ0FBa0MsWUFBbEMsQ0FBaUQsS0FBSyxDQUFDLFlBQXZELENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGNBQW5CLENBQWtDLFNBQWxDLENBQTRDLEdBQTVDLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGNBQW5CLENBQWtDLFdBQWxDLENBQWdELFlBQVksQ0FBQyxRQUE3RCxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixjQUFuQixDQUFrQyxjQUFsQyxDQUFtRCxLQUFuRCxDQUNBLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGNBQW5CLENBQWtDLFlBQXRDLENBQW9ELENBRWhELEtBQUssQ0FBQyxnQkFBTixHQUVKLENBSkEsSUFLRyxDQUNDLEtBQUssQ0FBQyxrQkFBTixDQUF5QixJQUFJLENBQUMsSUFBTCxDQUFVLGtCQUFuQyxDQUNBLEtBQUssQ0FBQyxTQUFOLENBQWdCLE9BQWhCLENBQXdCLE1BQXhCLENBQWlDLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBM0MsQ0FDQSxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsVUFBekIsQ0FBc0MsQ0FBQyxVQUFVLENBQUMsSUFBWixDQUFpQixZQUFZLENBQUMsQ0FBOUIsQ0FBdEMsQ0FFRCxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxrQkFBTixDQUEyQixJQUEzQixDQUFpQyxDQUE3QyxDQUFSLENBRUMsQ0FHUixDQXZCdkIsQ0F1QndCLFNBQVMsS0FBVCxDQUFlLENBR2IsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0EzQnJCLEVBNEJELENBbENELENBb0NBLEtBQUssQ0FBQyxhQUFOLENBQXNCLFVBQVUsQ0FFOUIsTUFBTSxDQUFDLEVBQVAsQ0FBVyxLQUFLLENBQUMsYUFBakIsQ0FBZ0MsS0FBSyxDQUFDLGVBQXRDLEVBRUQsQ0FKRCxDQU1DLEtBQUssQ0FBQyxnQkFBTixDQUF5QixVQUFVLENBQ2xDLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQTtBQUNBLEdBQUksQ0FBQSxhQUFhLENBQUMsS0FBSyxDQUFDLHFCQUFOLEVBQWxCLENBQ0EsR0FBSSxLQUFLLENBQUMscUJBQU4sRUFBNkIsU0FBakMsQ0FBNEMsS0FBSyxDQUFDLHFCQUFOLENBQTRCLENBQTVCLENBRTFDLGVBQWUsQ0FBQyxZQUFoQixDQUE2QixLQUFLLENBQUMsU0FBbkMsQ0FBNkMsS0FBSyxDQUFDLFlBQW5ELENBQWdFLEtBQUssQ0FBQyxxQkFBdEUsQ0FBNEYsRUFBNUYsQ0FBK0YsS0FBSyxDQUFDLGVBQXJHLENBQXFILGFBQWEsQ0FBQyxXQUFELENBQWxJLENBQWdKLGFBQWEsQ0FBQyxpQkFBRCxDQUE3SixDQUFpTCxJQUFqTCxFQUF1TCxJQUF2TCxDQUE0TCxTQUFTLElBQVQsQ0FBZSxDQUdqTCxLQUFLLENBQUMsZ0JBQU4sQ0FBeUIsSUFBSSxDQUFDLElBQUwsQ0FBVSxnQkFBbkMsQ0FDQSxLQUFLLENBQUMsZUFBTixDQUF3QixJQUFJLENBQUMsSUFBTCxDQUFVLGVBQWxDLENBQ0E7QUFHTCxDQVJyQixDQVFzQixTQUFTLEtBQVQsQ0FBZSxDQUViLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNMLENBWG5CLEVBWUQ7QUFDRixDQW5CQSxDQXFCQSxLQUFLLENBQUMsWUFBTixDQUFxQixTQUFTLElBQVQsQ0FBYyxDQUNsQyxHQUFJLENBQUEsQ0FBQyxDQUFHLEtBQUssQ0FBQyxLQUFkLENBQ0EsR0FBSSxJQUFJLENBQUMsVUFBVCxDQUFxQixLQUFLLENBQUMsWUFBTixDQUFtQixJQUFuQixFQUNyQixHQUFJLElBQUksQ0FBQyxNQUFULENBQWlCLENBRWI7QUFDQSxVQUFVLENBQUMsVUFBWCxDQUFzQixvQkFBdEIsQ0FBMkMsRUFBM0MsRUFBZ0Q7QUFDaEQsS0FBSyxDQUFDLFFBQU4sQ0FBaUIsSUFBakIsQ0FDQSxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0EsR0FBSSxLQUFLLENBQUMscUJBQU4sRUFBNkIsU0FBakMsQ0FBNEMsS0FBSyxDQUFDLHFCQUFOLENBQTRCLENBQTVCLENBQzVDO0FBQ0EsR0FBSSxDQUFBLGFBQWEsQ0FBQyxLQUFLLENBQUMscUJBQU4sRUFBbEIsQ0FFSSxlQUFlLENBQUMsWUFBaEIsQ0FBNkIsS0FBSyxDQUFDLFNBQW5DLENBQTZDLEtBQUssQ0FBQyxZQUFuRCxDQUFnRSxLQUFLLENBQUMscUJBQXRFLENBQTRGLEtBQUssQ0FBQyxTQUFOLENBQWdCLE9BQWhCLENBQXdCLE1BQXBILENBQTJILEtBQUssQ0FBQyxlQUFqSSxDQUFpSixhQUFhLENBQUMsV0FBRCxDQUE5SixDQUE0SyxhQUFhLENBQUMsaUJBQUQsQ0FBekwsQ0FBNk0sSUFBN00sRUFBbU4sSUFBbk4sQ0FBd04sU0FBUyxJQUFULENBQWUsQ0FHck4sZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxHQUF0QyxDQUEwQyxTQUExQyxFQUNBLFVBQVUsQ0FBQyxVQUFYLENBQXNCLHlCQUF0QixDQUFnRCxJQUFJLENBQUMsSUFBTCxDQUFVLFNBQTFELEVBQ0E7QUFDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsYUFBbkIsQ0FBbUMseUJBQW5DLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFlBQW5CLENBQWtDLFNBQWxDLENBQ0EsS0FBSyxDQUFDLGFBQU4sQ0FBb0IsSUFBcEIsQ0FHSCxDQVhmLENBV2dCLFNBQVMsS0FBVCxDQUFlLENBQ2Q7QUFDQyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDTCxDQWRiLEVBZ0JVLEtBQUssQ0FBQyxRQUFOLENBQWlCLEtBQWpCLENBSWYsQ0FBQztBQTlCSixJQWdDRSxDQUNFLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLDRCQUE1QixDQUF5RCxTQUF6RCxFQUVELENBQ0osQ0F2Q0EsQ0F5Q0gsS0FBSyxDQUFDLHFCQUFOLENBQStCLFVBQy9CLENBQ0UsR0FBSSxDQUFBLFNBQVMsQ0FBRyx5QkFBeUIsQ0FBQyxlQUExQixDQUEwQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsY0FBbkIsQ0FBa0MsWUFBNUUsQ0FBaEIsQ0FDTSxHQUFJLENBQUEsU0FBUyxDQUFDLENBQWQsQ0FBZ0IsZUFBZSxDQUFDLENBQWhDLENBQ0EsR0FBSSxTQUFTLENBQUMsR0FBVixFQUFlLFNBQWYsRUFBNEIsU0FBUyxDQUFDLEdBQVYsRUFBZSxJQUEvQyxDQUNBLENBQ0EsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQVYsQ0FBYyxNQUE3QixDQUFvQyxDQUFDLEVBQXJDLENBQ0EsQ0FDRSxHQUFJLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixJQUFqQixFQUF1QixjQUEzQixDQUNBLENBQ0UsR0FBSSxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsRUFBd0IsU0FBeEIsRUFBcUMsU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLEVBQXdCLElBQWpFLENBQ0EsQ0FDRSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsTUFBdEMsQ0FBNkMsQ0FBQyxFQUE5QyxDQUNBLENBQ0MsR0FBSSxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsQ0FBdkIsRUFBMEIsSUFBMUIsRUFBZ0MsWUFBaEMsRUFBZ0QsU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLENBQXZCLEVBQTBCLEtBQTFCLEVBQWlDLFNBQXJGLENBQWdHLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsQ0FBdkIsRUFBMEIsS0FBcEMsQ0FDaEcsR0FBSSxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsQ0FBdkIsRUFBMEIsSUFBMUIsRUFBZ0Msa0JBQWhDLEVBQXNELFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixDQUF2QixFQUEwQixLQUExQixFQUFpQyxTQUEzRixDQUFzRyxlQUFlLENBQUMsU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLENBQXZCLEVBQTBCLEtBQTFDLENBR3RHLENBR0YsQ0FFRixDQUVBLENBQ0QsR0FBSSxTQUFTLEVBQUUsU0FBWCxFQUF3QixTQUFTLEVBQUUsRUFBdkMsQ0FBMkMsU0FBUyxDQUFDLENBQVYsQ0FDM0MsR0FBSSxlQUFlLEVBQUUsU0FBakIsRUFBOEIsZUFBZSxFQUFFLEVBQW5ELENBQXVELGVBQWUsQ0FBQyxDQUFoQixDQUN4RCxDQUNULE1BQU8sQ0FBQyxZQUFZLFNBQWIsQ0FBdUIsa0JBQWtCLGVBQXpDLENBQVAsQ0FDQyxDQTlCRCxDQStCSSxLQUFLLENBQUMsWUFBTixDQUFxQixTQUFVLElBQVYsQ0FBZ0IsQ0FDbkMsSUFBSSxDQUFDLGFBQUwsR0FDQSxPQUFPLENBQUMsT0FBUixDQUFnQixJQUFoQixDQUFzQixTQUFTLElBQVQsQ0FBZSxDQUNuQyxHQUFHLElBQUksRUFBSSxJQUFJLENBQUMsWUFBTCxHQUFzQixJQUE5QixFQUFzQyxJQUFJLENBQUMsYUFBOUMsQ0FBNkQsQ0FDM0QsS0FBSyxDQUFDLFlBQU4sQ0FBbUIsSUFBbkIsRUFDRCxDQUNGLENBSkQsRUFLRCxDQVBELENBUUY7QUFJVSxvQkFBb0IsQ0FBQyx3QkFBckIsQ0FBOEMsSUFBOUMsQ0FBbUQsTUFBbkQsRUFBMkQsSUFBM0QsQ0FBZ0UsU0FBUyxJQUFULENBQWUsQ0FFN0QsS0FBSyxDQUFDLFFBQU4sQ0FBaUIsSUFBSSxDQUFDLElBQXRCLENBQ0UsR0FBSSxDQUFBLEdBQUcsQ0FBRyxLQUFLLENBQUMsUUFBTixDQUFlLEdBQWYsQ0FBbUIsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUEvQyxFQUFpRCxPQUFqRCxDQUF5RCxLQUFLLENBQUMsRUFBTixDQUFTLE9BQWxFLENBQVYsQ0FFRCxHQUFJLEdBQUcsRUFBRSxDQUFULENBQVcsQ0FDTixLQUFLLENBQUMsa0JBQU4sQ0FBeUIsWUFBekIsQ0FBeUMsS0FBSyxDQUFDLFFBQU4sQ0FBZSxHQUFmLENBQXpDLENBQ0csQ0FHWCxDQVZoQixDQVVpQixTQUFTLEtBQVQsQ0FBZSxDQUVkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNMLENBYmIsRUFlVixHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBVCxHQUFrQixTQUFsQixFQUErQixLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsR0FBa0IsSUFBckQsQ0FBbUUsS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFULENBQWtCLENBQUMsWUFBWSxDQUFDLEtBQWQsQ0FBbEIsQ0FDbkUsR0FBSSxLQUFLLENBQUMsU0FBTixFQUFpQixTQUFqQixFQUE4QixLQUFLLENBQUMsU0FBTixDQUFnQixDQUE5QyxFQUFtRCxDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBVCxDQUFnQixZQUF4RSxDQUFzRixLQUFLLENBQUMsZUFBTixHQUF0RixJQUNLLElBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFULENBQWdCLFlBQXBCLENBQW1DLFVBQVUsQ0FBQyxVQUFYLENBQXNCLFlBQXRCLENBQW1DLEVBQW5DLEVBQy9CLENBbFZBLENBQVAsQ0FvVlAsRUFDRCxhQUVPLFFBQVMsQ0FBQSxnQkFBVCxFQUE2QixDQUU1QixNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFSCxLQUFLLENBQUMsQ0FDSixFQUFFLENBQUUsR0FEQSxDQUVKLFNBQVMsQ0FBQyxHQUZOLENBRkgsQ0FPSCxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBRXpDLEtBQUssQ0FBQyxTQUFOLENBQWdCLEVBQWhCLENBQ1MsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsRUFBZixDQUFrQixDQUFDLEVBQW5CLEVBQXVCLEtBQUssQ0FBQyxTQUFOLENBQWdCLElBQWhCLENBQXFCLFdBQVcsQ0FBQyxDQUFDLENBQWIsQ0FBckIsRUFBdkIsQ0FFQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxFQUFxQixTQUF6QixDQUFvQyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsRUFBcEIsQ0FFcEMsS0FBSyxDQUFDLE1BQU4sQ0FBYSxVQUFZLENBQUUsTUFBTyxDQUFBLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxLQUFSLENBQWMsS0FBckIsQ0FBMkIsQ0FBdEQsQ0FBeUQsb0JBQXpELENBQStFLElBQS9FLEVBQ0EsS0FBSyxDQUFDLE1BQU4sQ0FBYSxVQUFZLENBQUUsTUFBTyxDQUFBLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxLQUFSLENBQWMsTUFBckIsQ0FBNEIsQ0FBdkQsQ0FBMEQscUJBQTFELENBQWlGLElBQWpGLEVBRUEsUUFBUyxDQUFBLG9CQUFULENBQThCLFFBQTlCLENBQXdDLFFBQXhDLENBQWtELDBCQUM5QyxHQUFJLFFBQVEsR0FBSyxRQUFiLEVBQXlCLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxFQUFxQixTQUE5Qyx3QkFBMkQsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFwRSx5Q0FBMkQscUJBQXFCLFVBQXBGLENBQWdHLENBQ2hHLEdBQUksS0FBSyxDQUFDLFNBQU4sRUFBaUIsT0FBckIsQ0FBOEIsQ0FDMUIsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsVUFBcEIsRUFBZ0MsU0FBcEMsQ0FBK0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLFVBQXBCLENBQWlDLEVBQWpDLENBQy9DLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixVQUFwQixDQUErQixLQUEvQixDQUF1QyxRQUF2QyxDQUNILENBQ0QsR0FBSSxLQUFLLENBQUMsU0FBTixFQUFpQixTQUFyQixDQUFtQyxDQUMvQixHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixZQUFwQixFQUFrQyxTQUF0QyxDQUFpRCxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsWUFBcEIsQ0FBbUMsRUFBbkMsQ0FDakQsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLFlBQXBCLENBQWlDLEtBQWpDLENBQXlDLFFBQXpDLENBQ0gsQ0FDRixDQUNGLENBR0EsUUFBUyxDQUFBLHFCQUFULENBQStCLFFBQS9CLENBQXlDLFFBQXpDLENBQW1ELDJCQUNoRCxHQUFJLFFBQVEsR0FBSyxRQUFiLEVBQXlCLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxFQUFxQixTQUE5Qyx5QkFBMkQsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFwRSwwQ0FBMkQsc0JBQXFCLFVBQXBGLENBQWdHLENBQ2hHO0FBQ0EsR0FBSSxLQUFLLENBQUMsU0FBTixFQUFpQixPQUFyQixDQUErQixDQUMzQixHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixVQUFwQixFQUFnQyxTQUFwQyxDQUErQyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsVUFBcEIsQ0FBaUMsRUFBakMsQ0FDL0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLFVBQXBCLENBQStCLE1BQS9CLENBQXdDLFFBQXhDLENBQ0gsQ0FDRCxHQUFJLEtBQUssQ0FBQyxTQUFOLEVBQWlCLFNBQXJCLENBQWlDLENBQzdCLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLFlBQXBCLEVBQWtDLFNBQXRDLENBQWlELEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixZQUFwQixDQUFtQyxFQUFuQyxDQUNqRCxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsWUFBcEIsQ0FBaUMsTUFBakMsQ0FBMEMsUUFBMUMsQ0FDSCxDQUNGLENBQ0YsQ0FHYjtBQUNZLEtBQUssQ0FBQyxNQUFOLENBQWEsZ0JBQWIsQ0FBOEIsU0FBUyxRQUFULENBQWtCLFFBQWxCLENBQTJCLENBQ3JELEdBQUksUUFBUSxFQUFFLFFBQWQsQ0FBdUIsQ0FDbkIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUFULENBQTBCLEtBQUssQ0FBQyxTQUFOLENBQWdCLEtBQUssQ0FBQyxFQUFOLENBQVMsV0FBVCxDQUFxQixDQUFyQyxDQUExQixDQUNILENBQ0EsQ0FKTCxFQU1BLEtBQUssQ0FBQyxNQUFOLENBQWEsZ0JBQWIsQ0FBOEIsU0FBUyxRQUFULENBQWtCLFFBQWxCLENBQTJCLENBQ3JELEdBQUksUUFBUSxFQUFFLFFBQWQsQ0FBd0IsQ0FDcEIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxnQkFBVCxDQUE0QixLQUFLLENBQUMsU0FBTixDQUFnQixLQUFLLENBQUMsRUFBTixDQUFTLFdBQVQsQ0FBcUIsQ0FBckMsQ0FBNUIsQ0FDSCxDQUNBLENBSkwsRUFPQSxLQUFLLENBQUMsRUFBTixDQUFTLGtCQUFULENBQThCLFNBQVMsUUFBVCxDQUM5QixDQUNZLEdBQUksQ0FBQSxnQkFBZ0IsQ0FBRyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsY0FBcEIsQ0FBbUMsY0FBbkMsQ0FBa0QsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLFVBQXRFLENBQWlGLHdCQUFqRixDQUEwRyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsUUFBOUgsQ0FBdUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLFNBQTNKLENBQXFLLFNBQXJLLENBQStLLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixTQUFuTSxDQUE2TSxHQUFwTyxDQUNBLEdBQUksQ0FBQSxrQkFBa0IsQ0FBRyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsZ0JBQXBCLENBQXFDLGFBQXJDLENBQW1ELEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixhQUF2RSxDQUFxRixLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsY0FBekcsQ0FBd0gsU0FBeEgsQ0FBa0ksS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLGNBQXRKLENBQXFLLEdBQTlMLENBRUEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQXNCLGNBQWMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLFVBQWxDLENBQTZDLGFBQW5FLENBQ0EsR0FBSyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsUUFBekIsQ0FBbUMsZ0JBQWdCLENBQUcsZ0JBQWdCLENBQUUsb0JBQXJDLENBQ25DLEdBQUssS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLGFBQXpCLENBQXdDLGtCQUFrQixDQUFHLGtCQUFrQixDQUFFLG9CQUF6QyxDQUV4QyxHQUFJLFFBQUosU0FBSSxRQUFKLFdBQUksUUFBUSxDQUFFLFVBQWQsQ0FBMkIsZ0dBQ3ZCLEtBQUssQ0FBQyxFQUFOLENBQVMsZ0JBQVQsQ0FBMkIsZ0JBQWdCLENBQUMsU0FBakIseUJBQTJCLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixVQUEvQyxnREFBMkIsc0JBQWdDLEtBQTNELEVBQWlFLFVBQWpFLDBCQUE0RSxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsVUFBaEcsaURBQTRFLHVCQUFnQyxNQUE1RyxDQUEzQixDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsa0JBQVQsQ0FBOEIsa0JBQWtCLENBQUMsb0JBQW5CLDBCQUF3QyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsWUFBNUQsaURBQXdDLHVCQUFrQyxLQUExRSxFQUFnRixVQUFoRiwwQkFBMkYsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLFlBQS9HLGlEQUEyRix1QkFBa0MsTUFBN0gsQ0FBOUIsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLGNBQVQsQ0FBd0IsRUFBeEIsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLGdCQUFULENBQTBCLEVBQTFCLENBQ0gsQ0FMRCxJQUtTLENBQ0wsS0FBSyxDQUFDLEVBQU4sQ0FBUyxnQkFBVCxDQUEwQixnQkFBMUIsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLGtCQUFULENBQTRCLGtCQUE1QixDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBVCxDQUEwQixLQUFLLENBQUMsU0FBTixDQUFnQixLQUFLLENBQUMsRUFBTixDQUFTLFdBQVQsQ0FBcUIsQ0FBckMsQ0FBMUIsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLGdCQUFULENBQTRCLEtBQUssQ0FBQyxTQUFOLENBQWdCLEtBQUssQ0FBQyxFQUFOLENBQVMsV0FBVCxDQUFxQixDQUFyQyxDQUE1QixDQUNILENBQ1osQ0FwQkQsQ0FzQkMsS0FBSyxDQUFDLE1BQU4sQ0FBYSxlQUFiLENBQTZCLFNBQVMsUUFBVCxDQUFrQixRQUFsQixDQUEyQixDQUNsRSxHQUFJLFFBQVEsRUFBRSxRQUFWLEVBQXNCLEtBQUssQ0FBQyxFQUFOLENBQVMsa0JBQW5DLENBQXdELENBQ3pELEtBQUssQ0FBQyxFQUFOLENBQVMsa0JBQVQsQ0FBNEIsUUFBNUIsRUFDRSxDQUNVLENBSkQsQ0FJRSxJQUpGLEVBTUYsS0FBSyxDQUFDLEVBQU4sQ0FBUyxrQkFBVCxDQUE0QixLQUFLLENBQUMsRUFBTixDQUFTLFVBQXJDLEVBR0YsQ0EzRkUsQ0FBUCxDQThGUCxFQUNELGFBRU8sUUFBUyxDQUFBLE1BQVQsRUFBbUIsQ0FFbEIsTUFBTyxDQUNELFFBQVEsQ0FBRSxHQURULENBRWIsVUFBVSxDQUFFLG9CQUFVLE1BQVYsQ0FBaUIsZUFBakIsQ0FBaUMsY0FBakMsQ0FBZ0QsY0FBaEQsQ0FBK0QsUUFBL0QsQ0FBd0UsUUFBeEUsQ0FBa0YsQ0FHekY7QUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsQ0FBd0IsQ0FBeEIsQ0FDQSxNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FDQTtBQUVBLE1BQU0sQ0FBQyxNQUFQLENBQWdCLE1BQU0sQ0FBQyxVQUF2QixDQUdDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLEVBQXVCLFNBQTNCLENBQXNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFxQixFQUFyQixDQUN0QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsTUFBcEIsQ0FBNkIsTUFBTSxDQUFDLFVBQXBDLENBR0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHVCQUFwQixDQUE4QyxTQUFVLEtBQVYsQ0FBa0IsT0FBbEIsQ0FBMkI7QUFDeEUsQ0FDVTtBQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQiw2QkFBcEIsQ0FBa0QsS0FBbEQsRUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsbUJBQXBCLENBQXdDLE9BQXhDLEVBQ1YsQ0FMRCxDQU9ELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQ0FBcEIsQ0FBd0QsZUFBZSxDQUFDLDBCQUF4RSxDQUNILE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQiw2QkFBcEIsQ0FBcUQsZUFBZSxDQUFDLHVCQUFyRSxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQiw2QkFBcEIsQ0FBcUQsZUFBZSxDQUFDLHVCQUFyRSxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixtQkFBcEIsQ0FBMEMsZUFBZSxDQUFDLGFBQTFELENBR0gsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUF1QyxVQUFZLENBQ2hELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLE1BQWpCLENBQTBCLENBQTlCLENBQWlDO0FBQ2pDLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLFdBQTNCLEVBQXdDLE1BQXhDLENBQStDLFNBQS9DLENBQ0E7QUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isa0JBQXBCLENBQXVDLEtBQXZDLENBQ0YsQ0FMRCxDQVNLLE1BQU0sQ0FBQyxTQUFQLENBQW1CLFVBQVksQ0FFNUIsR0FBSSxDQUFBLE1BQU0sQ0FBRyxPQUFPLENBQUMsSUFBUixDQUFhLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixnQkFBMUIsQ0FBMkMsV0FBM0MsQ0FBdUQsQ0FBdkQsQ0FBYixDQUFiLENBQ0EsTUFBTSxDQUFDLE9BQVAsQ0FBaUIsY0FBYyxDQUFDLE1BQWYsRUFBakIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsSUFBakIsQ0FBc0IsTUFBdEIsRUFDRixDQUxELENBUUQsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsU0FBUyxLQUFULENBQWUsbUJBQWYsQ0FDcEIsQ0FDSTtBQUNGLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUFzQixLQUF0QixDQUNDLEdBQUksbUJBQUosQ0FBeUIsTUFBTSxDQUFDLEtBQVAsQ0FBYSxrQkFBYixDQUFnQyxNQUFNLENBQUMsRUFBdkMsQ0FBMkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE1BQS9ELEVBRTNCLENBTkgsQ0FRSSxHQUFJLENBQUEsUUFBSixDQUNBLEdBQUksTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQTlCLENBQStDLFFBQVEsQ0FBRyxjQUFjLENBQUMsR0FBZixDQUFtQixrQ0FBbkIsQ0FBWCxDQUEvQyxJQUNLLENBQUEsUUFBUSxDQUFHLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHFDQUFuQixDQUFYLENBRUwsUUFBUSxDQUFDLE1BQVQsQ0FBZ0IsUUFBUSxDQUFDLFFBQUQsQ0FBUixDQUFtQixNQUFuQixDQUFoQixFQUdMLENBOURVLENBK0RGLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FFcEMsQ0FqRUUsQ0FBUCxDQW1FUCxFQUNELGFBRU8sUUFBUyxDQUFBLGlCQUFULENBQTRCLFFBQTVCLENBQXFDLGNBQXJDLENBQXFELENBRXpELEdBQUksQ0FBQSxVQUFVLENBQUcsQ0FBQyxRQUFELENBQVcsV0FBWCxDQUF3QixRQUF4QixDQUFpQyxjQUFqQyxDQUFnRCxpQkFBaEQsQ0FBa0UsVUFBbEUsQ0FBNkUsY0FBN0UsQ0FBNEYsc0JBQTVGLENBQW1ILGdCQUFuSCxDQUFvSSxZQUFwSSxDQUFpSixtQkFBakosQ0FBcUssa0JBQXJLLENBQXdMLGlCQUF4TCxDQUEwTSxpQkFBMU0sQ0FBNE4sMkJBQTVOLENBQXdQLGFBQXhQLENBQXNRLGdCQUF0USxDQUF1UixVQUF2UixDQUFrUyxVQUFsUyxDQUNDLFNBQVUsTUFBVixDQUFpQixTQUFqQixDQUEyQixNQUEzQixDQUFrQyxZQUFsQyxDQUErQyxlQUEvQyxDQUErRCxRQUEvRCxDQUF3RSxZQUF4RSxDQUFxRixvQkFBckYsQ0FBMEcsY0FBMUcsQ0FBeUgsVUFBekgsQ0FBb0ksaUJBQXBJLENBQXNKLGdCQUF0SixDQUF1SyxlQUF2SyxDQUF1TCxlQUF2TCxDQUF1TSx5QkFBdk0sQ0FBaU8sV0FBak8sQ0FBNk8sY0FBN08sQ0FBNFAsUUFBNVAsQ0FBcVEsUUFBclEsQ0FBK1EscURBRTlSLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFzQixFQUF0QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBMkMsS0FBM0MsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBcEIsQ0FBa0MsV0FBVyxDQUFDLGVBQTlDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUF3QyxJQUF4QyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUFpQyxDQUFqQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBeUMsSUFBekMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXNDLENBQXRDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQStCLENBQUMsWUFBWSxDQUFDLENBQWQsQ0FBZ0Isa0JBQWtCLENBQUMsS0FBbkMsQ0FBL0IsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBK0IsS0FBL0IsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsS0FBaEMsQ0FDQSxNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isc0JBQXBCLENBQTZDLElBQTdDLENBRUgsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBaUQsTUFBTSxDQUFDLEVBQXhELENBRUcsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsR0FBdUIsSUFBdkIsRUFBK0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLEdBQXVCLFNBQTFELENBQXFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUF1QixFQUF2QixDQUNyRSxHQUFJLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLFNBQXRCLENBQWtDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEVBQWhCLENBQ2xDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBMUIsRUFBb0MsQ0FBQyxFQUFELENBQXBDLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQWQsQ0FBeUIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUExQixFQUFvQyxDQUFDLENBQUMsRUFBRCxDQUFELENBQXBDLENBQ3pCLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixvQkFBckIsQ0FBMEMsU0FBMUMsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsc0JBQXJCLENBQThDLElBQTlDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGVBQXBCLENBQW9DLEVBQXBDLENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLFVBQVUsQ0FDMUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQWdDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUErQixLQUEvQixDQUFzQyxJQUF0RSxDQUNILENBRkYsQ0FLQSxNQUFNLENBQUMsZ0JBQVAsQ0FBd0IsTUFBTSxDQUFDLFVBQS9CLENBRUEsR0FBSSxNQUFNLENBQUMsRUFBUCxFQUFXLFNBQWYsQ0FBeUIsQ0FDcEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQTJCLEdBQTNCLENBQ0osQ0FGRCxJQUVPLENBQ0YsTUFBTSxDQUFDLEVBQVAsQ0FBVSxDQUFDLGNBQWMsQ0FBRyxHQUFsQixDQUFWLENBQ0osQ0FFRCxHQUFJLE1BQU8sQ0FBQSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQWpCLEVBQWtDLFFBQXRDLENBQWdELE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixFQUF6QixDQUU5QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBaUMsU0FBakMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBaUMsU0FBakMsQ0FHQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBZ0MsQ0FDbEMsRUFBRSxDQUFFLEdBRDhCLENBRWxDLElBQUksQ0FBRSxNQUY0QixDQUdsQyxPQUFPLENBQUUsRUFIeUIsQ0FBaEMsQ0FPQSxNQUFNLENBQUMsTUFBUCxDQUFjLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixjQUF4QyxDQUNBLEdBQUksTUFBTSxDQUFDLE1BQVAsRUFBZSxTQUFuQixDQUE4QixNQUFNLENBQUMsTUFBUCxDQUFjLEdBQWQsQ0FDOUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE1BQXBCLENBQTJCLE1BQU0sQ0FBQyxNQUFsQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUErQixNQUFNLENBQUMsTUFBdEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixFQUFnQyxHQUFwQyxDQUF5QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBcEIsQ0FBK0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLEVBQXpELENBRXpDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBeUMsTUFBTSxDQUFDLGtCQUFoRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBNkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF2QyxDQUNBLE1BQU0sQ0FBQyxhQUFQLENBQXdCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixZQUFsRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUE2QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsU0FBdkQsQ0FDQSxNQUFNLENBQUMsV0FBUCxDQUFtQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsV0FBN0MsQ0FDQSxNQUFNLENBQUMsY0FBUCxDQUF3QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZ0JBQWxELENBQ0EsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQWpELENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQWxELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFxQyxDQUFyQyxDQUVBLE1BQU0sQ0FBQyxjQUFQLENBQXdCLE1BQU0sQ0FBQyxjQUFQLEVBQXlCLEtBQWpELENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsTUFBTSxDQUFDLGNBQVAsRUFBeUIsQ0FBakQsQ0FDQSxNQUFNLENBQUMsYUFBUCxDQUF1QixNQUFNLENBQUMsYUFBUCxFQUF3QixDQUEvQyxDQUNBLE1BQU0sQ0FBQyxhQUFQLENBQXVCLE1BQU0sQ0FBQyxhQUFQLEVBQXdCLENBQS9DLENBRU4sTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQTFCLENBQTRDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEQsQ0FHRSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBZCxDQUF5QixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBOEIsT0FBOUIsQ0FBd0MsRUFBeEMsQ0FFdkI7QUFDQSxHQUFJLENBQUEsVUFBVSxDQUFHLENBQUMsWUFBRCxDQUFqQixDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLFNBQXZCLENBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixjQUFjLENBQUMsTUFBZixFQUFsQixDQUVsQyxHQUFJLENBQUEsU0FBUyxDQUFDLENBQ0EsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxtQkFBWCxDQURBLENBRUEsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxXQUFYLENBRkEsQ0FHQSxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLGNBQVgsQ0FIQSxDQUlBLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsWUFBWCxDQUpBLENBQWQsQ0FPQSxHQUFJLENBQUEsZ0JBQWdCLENBQUcsQ0FBQyxHQUFHLENBQUUsQ0FBQyxDQUFDLE9BQU8sY0FBUixDQUF1QixjQUFjLG1CQUFyQyxDQUF5RCxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBTixDQUFtQixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFuQyxDQUFELENBQTZDLENBQUMsSUFBSSxDQUFDLGtCQUFOLENBQXlCLEtBQUssQ0FBQyxFQUEvQixDQUE3QyxDQUFqRSxDQUFELENBQU4sQ0FBMkosT0FBTyxDQUFFLFNBQXBLLENBQThLLFdBQVcsQ0FBRSxvQkFBM0wsQ0FBZ04sVUFBVSxDQUFFLG1CQUE1TixDQUFnUCxRQUFRLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFwUSxDQUE0USxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsY0FBcFMsQ0FBbVQsZUFBZSxDQUFDLE1BQU0sQ0FBQyxhQUExVSxDQUF3VixNQUFNLENBQUcsTUFBTSxDQUFDLE9BQXhXLENBQWdYLFdBQVcsQ0FBQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBdFosQ0FBb2EsYUFBYSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBOWIsQ0FBdWMsTUFBTSxDQUFDLFVBQTljLENBQXlkLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBdUMsR0FBamhCLENBQXZCLENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQXBCLENBQW9DLHlCQUF5QixDQUFDLGNBQTFCLENBQXlDLGdCQUF6QyxDQUFwQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixPQUFwQixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBaEQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQXRDLENBRUEsR0FBSSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsRUFBc0MsU0FBMUMsQ0FBcUQsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFVBQTFCLENBQXFDLEVBQXJDLENBRXhELE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixVQUExQixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQS9DLEVBQTBELElBQTFELENBRUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLFNBQVMsaUJBQVQsQ0FBMkIsbUJBQTNCLENBQ25DLENBQ00sR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLEVBQXVDLFNBQTNDLENBQXNELENBQ25ELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBd0MsaUJBQXhDLENBQ0YsQ0FGRCxJQUVPLENBQ0osR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLEVBQXVDLENBQXZDLEVBQTRDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsRUFBdUMsaUJBQXZGLENBQ0ssTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUF3QyxpQkFBeEMsQ0FETCxJQUdJLENBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUFzQyxDQUF0QyxDQUNOLENBQ0QsR0FBSSxtQkFBSixDQUEwQixNQUFNLENBQUMsS0FBUCxDQUFhLGtCQUFiLENBQWdDLE1BQU0sQ0FBQyxFQUF2QyxFQUUvQixDQVpELENBZ0JBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUErQixTQUFTLElBQVQsQ0FBYyxJQUFkLENBQW1CLEtBQW5CLENBQXlCLEdBQXpCLENBQy9CLENBQ0csZUFBZSxDQUFDLFFBQWhCLENBQXlCLElBQXpCLENBQThCLElBQTlCLENBQW1DLEtBQW5DLEVBQ0csR0FBSSxHQUFKLENBQVMsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsR0FBNUIsQ0FBZ0MsTUFBaEMsRUFDZCxDQUpELENBT0UsR0FBSSxDQUFBLFVBQVUsQ0FBRSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBQTFCLENBQXdDLEdBQXhDLENBQTRDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBNUUsQ0FBb0YsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUE5RixDQUFoQixDQUNBLEdBQUksQ0FBQSxjQUFjLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsSUFBeEMsQ0FHSixHQUFJLENBQUEsbUJBQW1CLENBQUcsUUFBdEIsQ0FBQSxtQkFBc0IsQ0FBUyxJQUFULENBQWMsQ0FFcEMsR0FBSSxDQUFBLEtBQUssQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixlQUEvQixDQUNBLEdBQUksS0FBSyxFQUFFLFNBQVgsQ0FBc0IsS0FBSyxDQUFDLEVBQU4sQ0FDdEIsR0FBSSxDQUFBLElBQUksT0FBSixFQUFBLElBQUksU0FBSixRQUFBLElBQUksQ0FBRSxZQUFOLEdBQW9CLFNBQXhCLENBQW1DLEtBQUssQ0FBQyxjQUFELENBQUwsQ0FBd0IsSUFBSSxDQUFDLFlBQTdCLENBQ25DLFVBQVUsQ0FBQyxPQUFYLENBQW1CLGVBQW5CLENBQXFDLEtBQXJDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUFzQyxVQUF0QyxDQUFpRCxJQUFqRCxTQUFpRCxJQUFqRCxpQkFBaUQsSUFBSSxDQUFFLFlBQXZELEVBRUgsQ0FSRCxDQVVBLEdBQUksQ0FBQSwwQkFBMEIsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsY0FBckIsQ0FBb0MsbUJBQXBDLENBQXdELG1CQUF4RCxDQUFqQyxDQUVBLEdBQUksQ0FBQSxVQUFVLENBQUcsUUFBYixDQUFBLFVBQWEsQ0FBUyxJQUFULENBQWMsQ0FFM0IsR0FBSSxDQUFBLEtBQUssQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixlQUEvQixDQUNBLEdBQUksS0FBSyxFQUFFLFNBQVgsQ0FBc0IsS0FBSyxDQUFDLEVBQU4sQ0FDdEIsR0FBSSxDQUFBLElBQUksT0FBSixFQUFBLElBQUksU0FBSixRQUFBLElBQUksQ0FBRSxZQUFOLEdBQW9CLFNBQXhCLENBQW1DLEtBQUssQ0FBQyxjQUFELENBQUwsQ0FBd0IsSUFBSSxDQUFDLFlBQTdCLENBQ25DLFVBQVUsQ0FBQyxPQUFYLENBQW1CLGVBQW5CLENBQXFDLEtBQXJDLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQWQsQ0FBMEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG1CQUFwQixDQUF3QyxJQUFJLENBQUMsTUFBN0MsRUFFN0IsQ0FSRCxDQVNBLEdBQUksQ0FBQSxpQkFBaUIsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsY0FBckIsQ0FBb0MsV0FBcEMsQ0FBZ0QsVUFBaEQsQ0FBeEIsQ0FFQSxHQUFJLENBQUEsYUFBYSxDQUFHLFFBQWhCLENBQUEsYUFBZ0IsQ0FBUyxJQUFULENBQWMsQ0FFMUI7QUFDQTtBQUVQLENBTEQsQ0FNQSxHQUFJLENBQUEsb0JBQW9CLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLGNBQXJCLENBQW9DLGNBQXBDLENBQW1ELGFBQW5ELENBQTNCLENBSUEsR0FBSSxDQUFBLFdBQVcsQ0FBRyxRQUFkLENBQUEsV0FBYyxDQUFTLElBQVQsQ0FBYyx5Q0FFNUIsR0FBSSxDQUFBLElBQUosQ0FBUyxZQUFULENBQXNCLFlBQXRCLENBQ0Esa0JBQUksSUFBSSxDQUFDLE9BQVQseURBQUksY0FBYyxVQUFsQiwwQ0FBSSxzQkFBMEIsS0FBOUIsQ0FBb0MseURBQ2hDLElBQUksaUJBQUcsSUFBSSxDQUFDLE9BQVIsZ0VBQUcsZUFBYyxVQUFqQixnREFBRyxzQkFBMEIsS0FBakMsQ0FDQSxZQUFZLGlCQUFHLElBQUksQ0FBQyxPQUFSLHlDQUFHLGVBQWMsU0FBN0IsQ0FFQSxHQUFJLE1BQU8sQ0FBQSxZQUFQLEVBQXVCLFFBQTNCLENBQXFDLFlBQVksQ0FBRyxJQUFJLENBQUMsS0FBTCxDQUFXLFlBQVgsQ0FBZixDQUFyQyxJQUNLLENBQUEsWUFBWSxDQUFHLEVBQWYsQ0FDTCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBOEIsT0FBOUIsQ0FBc0MsTUFBdEMsQ0FBNkMsQ0FBN0MsQ0FDQSxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTFCLEVBQW1DLE1BQW5DLENBQTBDLENBQTFDLENBRUEsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQXBCLENBQTJCLENBQUMsRUFBNUIsQ0FBK0IsQ0FDM0IsWUFBWSxDQUFDLEVBQWIsQ0FFQSw4QkFBMkIsTUFBTSxDQUFDLE9BQVAsQ0FBZSxZQUFmLENBQTNCLGtDQUF5RCxDQUFwRCw4REFBTyxHQUFQLHVCQUFZLEtBQVosdUJBRUcsWUFBWSxDQUFDLEdBQUQsQ0FBWixDQUFvQixJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsS0FBUixDQUFwQixDQUVQLENBQ0QsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUExQixFQUFtQyxJQUFuQyxDQUF3QyxDQUFDLFlBQUQsQ0FBeEMsRUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBOEIsT0FBOUIsQ0FBc0MsSUFBdEMsQ0FBMkMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBZixDQUFxQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsQ0FBbEIsQ0FBckIsQ0FBRCxDQUFSLENBQTNDLEVBQ0gsQ0FDSixDQUNELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixHQUVILENBMUJELENBMkJBLEdBQUksQ0FBQSxvQkFBb0IsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsY0FBckIsQ0FBb0MsWUFBcEMsQ0FBaUQsV0FBakQsQ0FBM0IsQ0FFQTtBQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixtQkFBcEIsQ0FBMEMsU0FBUyxHQUFULENBQWUsQ0FDckQsR0FBSSxLQUFLLENBQUMsT0FBTixDQUFjLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBMUIsRUFBbUMsQ0FBbkMsQ0FBZCxDQUFKLENBQXlELENBRXJELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUE4QixPQUE5QixDQUFzQyxJQUF0QyxDQUEyQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFmLENBQXFCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixDQUFsQixDQUFyQixDQUFELENBQVIsQ0FBM0MsRUFDQTtBQUNBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBMUIsRUFBbUMsSUFBbkMsQ0FBd0MsQ0FBQyxFQUFELENBQXhDLEVBQ0EsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUExQixFQUFtQyxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTFCLEVBQW1DLE1BQW5DLENBQTBDLENBQTdFLEVBQWdGLENBQWhGLEVBQW1GLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixPQUF4RyxFQUFpSCxHQUFHLENBQUMsRUFBckgsQ0FFSCxDQUNKLENBVEQsQ0FVQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IseUJBQXBCLENBQWdELFVBQVksQ0FFckQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLE9BQTlCLENBQXNDLElBQXRDLENBQTJDLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQWYsQ0FBcUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLENBQWxCLENBQXJCLENBQUQsQ0FBUixDQUEzQyxFQUNBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBMUIsRUFBbUMsSUFBbkMsQ0FBd0MsQ0FBQyxFQUFELENBQXhDLEVBRVAsQ0FMQSxDQU9JLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQiw0QkFBcEIsQ0FBbUQsU0FBUyxHQUFULENBQWUsQ0FFakU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQ2MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLE9BQTlCLENBQXNDLE1BQXRDLENBQTZDLEdBQTdDLENBQWlELENBQWpELEVBQ0EsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUExQixFQUFtQyxNQUFuQyxDQUEwQyxHQUExQyxDQUE4QyxDQUE5QyxFQUNULENBYkksQ0FjTCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsbUJBQXBCLENBQTBDLFNBQVMsRUFBVCxDQUFZLEtBQVosQ0FBb0IsQ0FFdEQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLEVBQTBDLFNBQTlDLENBQXlELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsRUFBekMsQ0FDekQsR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBaUMsR0FBakMsQ0FBcUMsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUFqRSxFQUFtRSxPQUFuRSxDQUEyRSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXJGLENBQVYsQ0FDQSxHQUFJLEdBQUcsRUFBRSxDQUFMLEVBQVUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUF5QyxFQUF6QyxHQUE4QyxTQUE1RCxDQUNBLENBQ0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUEyQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBaUMsR0FBakMsQ0FBM0MsQ0FFSCxDQUVELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix3QkFBcEIsQ0FBNkMsRUFBN0MsQ0FBZ0QsS0FBaEQsRUFDUCxDQVhELENBYUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHdCQUFwQixDQUErQyxTQUFTLEVBQVQsQ0FBWSxLQUFaLENBRS9DLENBQ1EsR0FBSSxDQUFBLEdBQUosQ0FDQSxHQUFJLEtBQUssRUFBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsR0FBb0IsU0FBN0IsRUFBMEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEdBQW9CLElBQWxFLENBQ0UsQ0FDTSxHQUFHLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixDQUEwQyxHQUExQyxDQUE4QyxTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsRUFBVCxDQUFjLENBQTFFLEVBQTRFLE9BQTVFLENBQW9GLEVBQXBGLENBQU4sQ0FFQSxHQUFJLEdBQUcsRUFBRSxDQUFULENBQVcsQ0FDUCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLElBQXpDLENBQWdELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBMEMsR0FBMUMsRUFBK0MsSUFBL0YsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZUFBcEIsQ0FBc0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixDQUEwQyxHQUExQyxDQUF0QyxDQUNILENBRUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHNCQUFwQixDQUEyQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQS9ELENBQ0EsR0FBSSxNQUFNLENBQUMsY0FBWCxDQUEyQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBOEIsT0FBOUIsQ0FBc0MsTUFBdEMsQ0FBK0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF6RCxDQUEzQixJQUNLLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQWYsQ0FBMEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLE9BQTlCLENBQXNDLE1BQXRDLENBQStDLGNBQWMsQ0FBQyxLQUFmLENBQXFCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBL0IsQ0FBL0MsQ0FBMUIsSUFDQSxDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUE4QixPQUE5QixDQUFzQyxJQUF0QyxDQUEyQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFmLENBQXFCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixDQUFsQixDQUFyQixDQUFELENBQVIsQ0FBM0MsRUFDTCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBcEIsQ0FBK0IsSUFBL0IsQ0FFTCxDQWZILElBZU8sQ0FDRCxHQUFHLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixDQUEwQyxHQUExQyxDQUE4QyxTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsRUFBVCxDQUFjLENBQTFFLEVBQTRFLE9BQTVFLENBQW9GLEVBQXBGLENBQU4sQ0FFQSxHQUFJLEdBQUcsRUFBRSxDQUFULENBQVcsQ0FDVCxvQkFBb0IsQ0FBQyx3QkFBckIsQ0FBOEMsRUFBOUMsRUFBa0QsSUFBbEQsQ0FBdUQsU0FBVSxJQUFWLENBQWdCLENBRS9ELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix5QkFBcEIsQ0FBZ0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixDQUEwQyxHQUExQyxDQUFoRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFvQixJQUFJLENBQUMsSUFBTCxDQUFVLElBQTlCLENBQ0EsR0FBSSxNQUFNLENBQUMsY0FBWCxDQUEyQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBOEIsT0FBOUIsQ0FBc0MsTUFBdEMsQ0FBK0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF6RCxDQUEzQixJQUNLLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQWYsQ0FBMEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLE9BQTlCLENBQXNDLE1BQXRDLENBQStDLGNBQWMsQ0FBQyxLQUFmLENBQXFCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBL0IsQ0FBL0MsQ0FBMUIsSUFDQSxDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUE4QixPQUE5QixDQUFzQyxJQUF0QyxDQUEyQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFmLENBQXFCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixDQUFsQixDQUFyQixDQUFELENBQVIsQ0FBM0MsRUFDTCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixzQkFBcEIsR0FBNkMsU0FBakQsQ0FDQSxDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixtQkFBckIsQ0FBeUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHNCQUFwQixDQUEyQyxFQUFwRixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQix3QkFBckIsQ0FBOEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHNCQUFwQixDQUEyQyxPQUF6RixDQUVILENBTEQsSUFLTSxDQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLGtEQUE1QixDQUErRSxPQUEvRSxFQUVOLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUErQixJQUEvQixDQUVILENBaEJMLENBZ0JNLFNBQVMsS0FBVCxDQUFlLENBQ2YsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0FsQkQsRUFvQkgsQ0FDSixDQUdaLENBL0NHLENBa0RBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixFQUEyQyxTQUEvQyxDQUEwRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLEVBQTFDLENBRTdELEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FHRyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixFQUFtQixFQUFuQixFQUF5QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsRUFBbUIsU0FBNUMsRUFBeUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLElBQWhGLENBQXVGLENBRS9FLEdBQUksTUFBTSxDQUFDLGNBQVgsQ0FBMkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLE9BQTlCLENBQXNDLE1BQXRDLENBQStDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBekQsQ0FBM0IsSUFDSyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFmLENBQTBCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUE4QixPQUE5QixDQUFzQyxNQUF0QyxDQUErQyxjQUFjLENBQUMsS0FBZixDQUFxQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQS9CLENBQS9DLENBQTFCLElBQ0EsQ0FBQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBOEIsT0FBOUIsQ0FBc0MsSUFBdEMsQ0FBMkMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBZixDQUFxQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsQ0FBbEIsQ0FBckIsQ0FBRCxDQUFSLENBQTNDLEVBQ0wsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQStCLElBQS9CLENBRUgsQ0FQTCxJQU9VLENBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHNCQUFwQixDQUEyQyxpREFBM0MsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsbUJBQXBCLENBQTBDLFNBQVMsZ0JBQVQsQ0FBMEIsQ0FFckUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQXVCLG9CQUFvQixDQUFDLHlCQUFyQixDQUErQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBOEIsT0FBOUIsQ0FBc0MsTUFBckYsQ0FBNEYsZ0JBQTVGLENBQXZCLENBQ0EsQ0FIQyxDQUtILE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix5QkFBcEIsQ0FBZ0QsVUFBVyxDQUFFO0FBRTdELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLEVBQXNCLFNBQTFCLENBQ0MsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLE1BQXJDLENBQTRDLENBQUMsRUFBN0MsQ0FBaUQsQ0FDN0MsR0FBSSxDQUFBLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsQ0FBckIsRUFBd0IsUUFBM0MsQ0FBc0Q7QUFDdEQsR0FBSSxDQUFBLFVBQVUsQ0FBRyxjQUFqQixDQUFxRDtBQUVyRCxHQUFJLGNBQWMsRUFBRSxTQUFoQixFQUE2QixjQUFjLEVBQUUsSUFBakQsQ0FBd0QsQ0FDcEQsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLENBQXJCLEVBQXdCLEdBQXhCLENBQTRCLE1BQTNDLENBQWtELENBQUMsRUFBbkQsQ0FBdUQsQ0FDbkQsR0FBSyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsQ0FBckIsRUFBd0IsR0FBeEIsQ0FBNEIsQ0FBNUIsRUFBK0IsSUFBL0IsRUFBcUMsVUFBdEMsRUFBc0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLENBQXJCLEVBQXdCLEdBQXhCLENBQTRCLENBQTVCLEVBQStCLEtBQS9CLEVBQXNDLElBQWhHLENBQXVHLENBQUU7QUFDcEcsR0FBSSxDQUFBLFVBQVUsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsQ0FBckIsRUFBd0IsR0FBeEIsQ0FBNEIsQ0FBNUIsRUFBK0IsSUFBaEQsQ0FDQTtBQUVBLE1BQU0sQ0FBQyxHQUFQLENBQVcsUUFBUSxjQUFSLENBQXVCLFVBQWxDLENBQTZDLFNBQVMsS0FBVCxDQUFnQixJQUFoQixDQUFxQixDQUFHO0FBRWxFLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFwQixDQUEyQixDQUFDLEVBQTVCLENBQWdDLENBQzlCLEdBQUksSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLElBQVIsRUFBYyxrQkFBbEIsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBdUMsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLEtBQS9DLENBQXNEO0FBQ3RELE1BQU0sQ0FBQyxnQkFBUCxDQUEwQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQTlDLENBQ0QsQ0FDRCxHQUFJLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxJQUFSLEVBQWMsWUFBbEIsQ0FBZ0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG1CQUFwQixDQUEwQyxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsS0FBbEQsQ0FBMEQ7QUFDM0YsQ0FJRixDQWJGLEVBYUk7QUFDUjtBQUNKO0FBQ0o7QUFFSixDQUFDO0FBQ1AsQ0FoQ0ksQ0FnQ0o7QUFFRyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixTQUExQixFQUF1QyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsSUFBckUsQ0FBMkUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLENBQXpCLENBRTNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUE2QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsU0FBdkQsQ0FFRixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXdDLFNBQVMsSUFBVCxDQUN4QyxDQUNLLEdBQUksSUFBSSxFQUFFLFNBQVYsQ0FBb0IsQ0FDakIsR0FBSSxDQUFBLEVBQUosQ0FDQSxHQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsSUFBZCxDQUFKLENBQ0EsQ0FDQyxFQUFFLENBQUksSUFBTixDQUNBLENBSEQsSUFHTSxDQUFBLEVBQUUsQ0FBRSxDQUFDLElBQUQsQ0FBSixDQUVKLElBQUksR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFWLENBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFqQixDQUF3QixDQUFDLEVBQXpCLENBQTZCLENBRTNCLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLEVBQUUsQ0FBQyxDQUFELENBQUYsQ0FBTSxRQUFwQyxDQUNBLENBQ0UseUJBQXlCLENBQUMsT0FBMUIsQ0FBa0MsRUFBRSxDQUFDLENBQUQsQ0FBcEMsRUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBNkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLE9BQTlCLENBQXNDLE1BQW5FLENBQTBFLFVBQTFFLENBQXFGLElBQXJGLEVBQTRGO0FBQzdGLENBQ0YsQ0FDTixDQUVKLENBbkJELENBcUJBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixtQkFBcEIsQ0FBd0MsU0FBUyxNQUFULENBQWdCLENBRXBELEdBQUksQ0FBQSxTQUFKLENBRUEsR0FBSSxNQUFNLEdBQUcsU0FBYixDQUNBLENBQ0ksR0FBSSxLQUFLLENBQUMsT0FBTixDQUFjLE1BQWQsR0FBeUIsTUFBTSxDQUFDLE1BQVAsQ0FBYyxDQUEzQyxDQUNBLENBQ0ksR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsS0FBaEMsRUFBeUMsQ0FBQSxNQUFNLENBQUMsQ0FBRCxDQUFuRCxDQUNBLENBQ0ksU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFELENBQU4sQ0FBVSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsS0FBMUMsQ0FBVixDQUVILENBSkQsSUFJTSxDQUFBLFNBQVMsQ0FBRyxNQUFNLENBQUMsQ0FBRCxDQUFOLENBQVUsRUFBdEIsQ0FFVCxDQVJELElBUUssQ0FDRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxLQUFoQyxFQUF5QyxDQUFBLE1BQTdDLENBQ0EsQ0FDSSxTQUFTLENBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxLQUFqQyxDQUFsQixDQUVILENBSkQsSUFJTSxDQUFBLFNBQVMsQ0FBRyxNQUFNLENBQUMsRUFBbkIsQ0FFVCxDQUNKLENBbEJELElBa0JNLENBQUEsU0FBUyxDQUFHLElBQVosQ0FFTixNQUFPLENBQUEsU0FBUCxDQUNILENBekJELENBMkJBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBeUMsVUFBVSxDQUUvQyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUF4QixDQUFtQyxDQUUvQixNQUFNLENBQUMsSUFBUCxDQUFZLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFoQyxFQUE0QyxPQUE1QyxDQUFvRCxTQUFTLEdBQVQsQ0FBYyxDQUUxRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBZCxDQUF3QixDQUVwQixJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTFCLEVBQW1DLE1BQWxELENBQXlELENBQUMsRUFBMUQsQ0FBNkQsQ0FDeEQsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUExQixFQUFtQyxDQUFuQyxFQUFzQyxDQUF0QyxFQUF5QyxHQUF6QyxFQUE4QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBcEIsQ0FBK0IsR0FBL0IsQ0FBOUMsQ0FDSixDQUNKLENBTEQsSUFLSyxDQUNELE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBMUIsRUFBbUMsQ0FBbkMsRUFBc0MsR0FBdEMsRUFBMkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQStCLEdBQS9CLENBQTNDLENBQ0gsQ0FFSixDQVhMLEVBWUgsQ0FDSixDQWpCRCxDQW1CQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBcUMsVUFBVSxDQUUzQyxHQUFJLENBQUEsV0FBVyxDQUFHLEVBQWxCLENBQ0EsR0FBSSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUF6QixDQUFvQyxDQUVoQyxvQkFBb0IsQ0FBQyxpQkFBckIsQ0FBdUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFqRCxDQUF5RCxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsR0FBbkYsQ0FBdUYsTUFBTSxDQUFDLGtCQUFQLENBQTBCLE9BQWpILENBQXlILE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBbkksQ0FBa0osV0FBbEosQ0FBOEosTUFBTSxDQUFDLGtCQUFQLENBQTBCLGdCQUF4TCxDQUF5TSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIscUJBQW5PLEVBQTBQLElBQTFQLENBQStQLFNBQVMsSUFBVCxDQUFlLENBQzFRLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUFpQyxJQUFJLENBQUMsSUFBdEMsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isa0JBQXBCLEdBSUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWtDLElBQWxDLENBRUgsQ0FURCxDQVNFLFNBQVMsS0FBVCxDQUFlLENBQ2IsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWtDLElBQWxDLENBQ0gsQ0FaRCxFQWFILENBZkQsSUFlSyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsR0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBa0MsSUFBbEMsQ0FDSixDQUNKLENBdEJELENBMkJBLEdBQUksQ0FBQSxlQUFlLENBQUcsUUFBbEIsQ0FBQSxlQUFrQixDQUFTLElBQVQsQ0FBYyxDQUVoQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsR0FDSCxDQUhELENBTUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQW1DLFVBQ25DLDJCQUNJLEdBQUksd0JBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLHNFQUEwQixNQUExQixFQUFpQyxDQUFqQyxFQUFzQyxDQUFDLE1BQU0sQ0FBQyxjQUFsRCxDQUNBLENBRUUsR0FBSyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsRUFBdUIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUExQixFQUFtQyxNQUEzRCxFQUFzRSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBckYsQ0FBZ0csTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLEdBQ2pHLENBSkQsSUFJTSxDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFrQyxJQUFsQyxDQUVULENBUkQsQ0FZQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixFQUF1QixTQUF2QixFQUFvQyxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsRUFBdUIsSUFBL0QsQ0FFQSxDQUVRLEdBQUksQ0FBQSxlQUFlLENBQUcsUUFBUSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXhDLENBQ0Q7QUFDQyxHQUFJLENBQUEsaUJBQWlCLENBQUcsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBQTFCLENBQXdDLEdBQXhDLENBQTRDLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBOUUsQ0FDQSxHQUFJLENBQUEsUUFBUSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixpQkFBckIsQ0FBdUMsZUFBdkMsQ0FBdUQsY0FBdkQsQ0FBc0UsZUFBdEUsQ0FBZixDQUVQLENBVEQsSUFXQSxxREFDSSxHQUFJLDJCQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBWCxxRUFBQyx3QkFBc0IsTUFBdkIsNENBQUMsd0JBQThCLE1BQS9CLENBQUosQ0FBMkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLEdBQzlDLENBR0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUF3QyxTQUFTLGVBQVQsQ0FBeUIsT0FBekIsQ0FBaUMsQ0FDckUsR0FBSSxDQUFBLEtBQUssQ0FBRyxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTFCLEVBQW1DLENBQW5DLENBQVosQ0FFQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBZCxDQUF5QixLQUFLLENBQUcsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUExQixDQUFSLENBRTdCLG9CQUFvQixDQUFDLGlCQUFyQixDQUF1QyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsR0FBakUsQ0FBcUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUEvRSxDQUF1RixLQUF2RixDQUE2RixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBdkgsQ0FBa0ksTUFBTSxDQUFDLGtCQUFQLENBQTBCLGdCQUE1SixDQUE2SyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIscUJBQXZNLEVBQThOLElBQTlOLENBQW1PLFNBQVMsSUFBVCxDQUFlLENBRTFOLEdBQUksQ0FBQSxRQUFRLENBQUcsSUFBSSxDQUFDLElBQXBCLENBQ0MsR0FBSSxDQUFBLElBQUksQ0FBRyxRQUFRLENBQUMsV0FBcEIsQ0FDRCxHQUFJLENBQUMsSUFBTCxDQUFXLElBQUksQ0FBQyw2QkFBTCxDQUNYLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQTVCLENBQWlDLFNBQWpDLEVBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUF1QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsbUJBQXBCLENBQXdDLFFBQVEsQ0FBQyxNQUFqRCxDQUF2QyxDQUNBO0FBQ0EseUJBQXlCLENBQUMsT0FBMUIsQ0FBa0MsQ0FBQyxHQUFHLENBQUUsQ0FBQyxDQUFDLE9BQU8sY0FBUixDQUF1QixRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBTixDQUFtQixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFuQyxDQUFELENBQTZDLENBQUMsSUFBSSxDQUFDLGtCQUFOLENBQXlCLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQW5ELENBQTdDLENBQS9CLENBQUQsQ0FBTixDQUM5QixPQUFPLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFOLENBQW9CLE1BQU0sQ0FBQyxLQUEzQixDQUFELENBRHFCLENBRzlCLElBQUksQ0FBRSxtQkFId0IsQ0FHSixRQUFRLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUhoQixDQUcrQixnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsY0FIdkQsQ0FHc0UsZUFBZSxDQUFDLE1BQU0sQ0FBQyxhQUg3RixDQUs5QixNQUFNLENBQUcsTUFBTSxDQUFDLE9BTGMsQ0FLTixXQUFXLENBQUMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBTGhDLENBSzhDLGFBQWEsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BTHhFLENBS2lGLE1BQU0sQ0FBQyxVQUx4RixDQUFsQyxFQU9BLGVBQWUsQ0FBQyxPQUFoQixDQUF3QixlQUF4QixDQUF3QyxtQkFBeEMsRUFDQSxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIsY0FBekIsQ0FBd0MsY0FBeEMsQ0FBd0QsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF4QixDQUFnQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUE3RCxDQUE4RSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUExQixFQUFtQyxDQUFuQyxDQUFyRixDQUF4RCxFQUdDLENBcEJ6QixDQW9CMEIsU0FBUyxLQUFULENBQWUsQ0FDZCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDQSxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIsY0FBekIsQ0FBd0MsY0FBeEMsQ0FBd0QsQ0FBQyxLQUFLLENBQUMsSUFBUCxDQUF4RCxFQUcxQixDQXpCRCxFQTBCSCxDQS9CRyxDQWtDQSxNQUFNLENBQUMsYUFBUCxDQUF1QixTQUFTLElBQVQsQ0FDdkIsQ0FFSSxjQUFjLENBQUMsY0FBZixDQUE4QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBeEQsQ0FBc0UsVUFBdEUsQ0FBaUYsSUFBakYsQ0FBc0YsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLE1BQTNHLENBQWtILE1BQU0sQ0FBQyxHQUF6SCxFQUNILENBSkQsQ0FLQSxNQUFNLENBQUMsWUFBUCxDQUFvQixFQUFwQixDQUNBO0FBQ0EsR0FBSSxDQUFDLE1BQU0sQ0FBQyxjQUFSLEVBQTBCLDBCQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixtR0FBc0IsTUFBdEIsMEVBQThCLE1BQTlCLEVBQXFDLENBQW5FLENBQXNFLGNBQWMsQ0FBQyxrQkFBZixDQUFrQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBNUQsQ0FBMEUsTUFBTSxDQUFDLFlBQWpGLENBQThGLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixNQUFuSCxDQUEwSCxNQUExSCxDQUFpSSxNQUFNLENBQUMsR0FBeEksRUFHckUsTUFBTSxDQUFDLEdBQVAsQ0FBVywwQkFBMEIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGNBQS9ELENBQThFLFNBQVMsS0FBVCxDQUFnQixJQUFoQixDQUFxQixDQUNoRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXNDLElBQXRDLEVBRUYsQ0FIRCxFQUtELE1BQU0sQ0FBQyxHQUFQLENBQVcseUJBQXlCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUE5RCxDQUE4RSxTQUFTLEtBQVQsQ0FBZ0IsSUFBaEIsQ0FBcUIsQ0FFL0YsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUFzQyxJQUF0QyxFQUVELENBSkgsRUFNQSxNQUFNLENBQUMsR0FBUCxDQUFXLDJCQUEyQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBaEUsQ0FBOEUsU0FBUyxLQUFULENBQWdCLElBQWhCLENBQXFCLENBRS9GLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBc0MsSUFBdEMsRUFFRCxDQUpILEVBT1UsR0FBSSxDQUFBLFFBQUosQ0FDRixHQUFJLE1BQU0sQ0FBQyxjQUFYLENBQTJCLFFBQVEsQ0FBRyxjQUFjLENBQUMsR0FBZixDQUFtQiw2Q0FBbkIsQ0FBWCxDQUEzQixJQUNLLENBQUEsUUFBUSxDQUFHLGNBQWMsQ0FBQyxHQUFmLENBQW1CLGdEQUFuQixDQUFYLENBRUwsUUFBUSxDQUFDLE1BQVQsQ0FBZ0IsUUFBUSxDQUFDLFFBQUQsQ0FBUixDQUFtQixNQUFuQixDQUFoQixFQUNULENBemhCYSxDQUFqQixDQTJoQkQsTUFBTyxDQUNHLFFBQVEsQ0FBRSxHQURiLENBR0csVUFBVSxDQUFFLFVBSGYsQ0FJRyxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBSWhDLEdBQUksQ0FBQSxXQUFXLENBQUUsS0FBSyxDQUFDLEdBQU4sQ0FBVSxVQUFWLENBQXFCLGFBQWEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUEzQyxDQUEwRCxLQUFLLENBQUMsRUFBTixDQUFTLGNBQW5FLENBQWpCLENBQ0EsR0FBSSxDQUFBLGVBQWUsQ0FBRyxXQUFXLENBQUMsT0FBWixDQUFvQixJQUExQyxDQUVBLEdBQUksQ0FBQSxVQUFVLENBQUcsUUFBYixDQUFBLFVBQWEsRUFDakIsQ0FDRTtBQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixVQUFuQixDQUE4QixLQUE5QixDQUVBLFFBQVEsQ0FBQyxVQUFVLENBQ2pCLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixVQUFuQixDQUE4QixJQUE5QixDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixTQUFuQixDQUE2QixPQUE3QixDQUFxQyxNQUFyQyxDQUE4QyxjQUFjLENBQUMsS0FBZixDQUFxQixLQUFLLENBQUMsRUFBTixDQUFTLE9BQTlCLENBQTlDLENBQ0EsS0FBSyxDQUFDLFFBQU4sQ0FBZSxLQUFLLENBQUMsRUFBTixDQUFTLE9BQXhCLEVBQWtDLENBQUMsRUFBRCxDQUFsQyxDQUNBLFdBQVcsQ0FBQyxPQUFaLENBQW9CLGVBQXBCLENBQXNDLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBL0MsQ0FDQSxXQUFXLENBQUMsT0FBWixDQUFvQixlQUFwQixDQUFvQyxXQUFwQyxFQUNELENBTk8sQ0FBUixDQVdELENBaEJELENBaUJBLEdBQUksQ0FBQSxtQkFBbUIsQ0FBRyxLQUFLLENBQUMsR0FBTixDQUFVLFNBQVYsQ0FBb0IsZUFBcEIsQ0FBb0MsV0FBcEMsQ0FBZ0QsVUFBaEQsQ0FBMUIsQ0FJSCxDQWhDSixDQUFQLENBa0NDLENBRUgsYUFFQTtBQUNBO0FBR08sUUFBUyxDQUFBLFdBQVQsRUFBd0IsQ0FFdkIsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUYsV0FBVyxDQUFFLHVDQUZYLENBSUYsVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBZ0IsVUFBaEIsQ0FBMkIsUUFBM0IsQ0FBb0MsV0FBcEMsQ0FBZ0Qsb0JBQWhELENBQXFFLGVBQXJFLENBQXFGLGdCQUFyRixDQUFzRyxlQUF0RyxDQUF1SCxjQUF2SCxDQUF1SSxxTUFFL0ksR0FBTSxDQUFBLFNBQVMsQ0FBRyxHQUFJLENBQUEsSUFBSSxDQUFDLFlBQVQsQ0FBc0IsT0FBdEIsQ0FBK0IsQ0FDNUMscUJBQXFCLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG1CQUFyQixFQUE0QyxDQUR4QixDQUU1QyxxQkFBcUIsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsbUJBQXJCLEVBQTRDLENBRnhCLENBQS9CLENBQWxCLENBT0EsTUFBTSxDQUFDLEtBQVAsQ0FBYyxlQUFkLENBQ0EsR0FBSSxDQUFDLEtBQUssQ0FBQyxPQUFOLENBQWMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUF4QixDQUFMLENBQTZDLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUF3QixFQUF4QixDQUM5QyxHQUFJLE1BQU0sQ0FBQyxrQkFBUCxFQUEyQixTQUEvQixDQUEyQyxDQUN6QyxNQUFNLENBQUMsYUFBUCxDQUF1QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBakQsQ0FDRCxDQUNELEdBQUksTUFBTSxDQUFDLFNBQVAsRUFBb0IsU0FBeEIsQ0FBbUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsRUFBakIsQ0FFbkMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBQyxXQUFXLENBQUcsRUFBZixDQUFoQixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTRCLElBQTVCLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBZ0MsRUFBaEMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixLQUE1QixDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLEVBQXVCLFNBQTNCLENBQXNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixFQUFwQixDQUV0QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBZ0MsQ0FDNUIsRUFBRSxDQUFFLEdBRHdCLENBRTVCLElBQUksQ0FBRSxNQUZzQixDQUc1QixPQUFPLENBQUUsRUFIbUIsQ0FBaEMsQ0FLQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBK0IsSUFBL0IsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBbUMsRUFBbkMsQ0FFRDtBQUNBLE1BQU0sQ0FBQyxNQUFQLENBQWMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBQXhDLENBQ0EsR0FBSSxNQUFNLENBQUMsTUFBUCxFQUFlLFNBQW5CLENBQStCLE1BQU0sQ0FBQyxNQUFQLENBQWMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGdCQUF4QyxDQUMvQixHQUFJLE1BQU0sQ0FBQyxNQUFQLEVBQWUsU0FBbkIsQ0FBOEIsTUFBTSxDQUFDLE1BQVAsQ0FBYyxDQUFkLENBQzlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixNQUFwQixDQUEyQixNQUFNLENBQUMsTUFBbEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQTZCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdkMsQ0FDQSxNQUFNLENBQUMsYUFBUCxDQUF3QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsWUFBbEQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBNkIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFNBQXZELENBQ0EsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFdBQTdDLENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGdCQUFsRCxDQUNBLE1BQU0sQ0FBQyxhQUFQLENBQXVCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUFqRCxDQUNBLE1BQU0sQ0FBQyxjQUFQLENBQXdCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUFsRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBcUMsQ0FBckMsQ0FFWixHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixFQUFtQixTQUF2QixDQUFrQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsY0FBYyxDQUFDLE1BQWYsRUFBbEIsQ0FDbEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLE9BQXJCLENBQStCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBekMsQ0FFWSxNQUFNLENBQUMsY0FBUCxDQUF3QixNQUFNLENBQUMsY0FBUCxFQUF5QixLQUFqRCxDQUNBLE1BQU0sQ0FBQyxjQUFQLENBQXdCLE1BQU0sQ0FBQyxjQUFQLEVBQXlCLENBQWpELENBQ0EsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsTUFBTSxDQUFDLGFBQVAsRUFBd0IsQ0FBL0MsQ0FDQSxNQUFNLENBQUMsYUFBUCxDQUF1QixNQUFNLENBQUMsYUFBUCxFQUF3QixDQUEvQyxDQUdBLEdBQUksQ0FBQSxRQUFRLENBQUcsUUFBWCxDQUFBLFFBQVcsQ0FBVSxDQUFWLENBQVksQ0FBWixDQUFjLENBQWQsQ0FBbUIsQ0FDeEIsR0FBSSxDQUFBLENBQUMsQ0FBRSxRQUFILENBQUEsQ0FBRyxDQUFDLENBQUQsS0FBRyxDQUFBLENBQUgsMkRBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUwsRUFBUyxDQUFkLE9BQW9CLENBQUEsQ0FBQyxDQUFHLENBQUMsQ0FBQyxDQUFGLENBQUksSUFBSSxDQUFDLEdBQUwsQ0FBVSxJQUFJLENBQUMsR0FBTCxDQUFTLENBQVQsQ0FBVyxFQUFFLENBQWIsQ0FBZSxDQUFmLENBQVYsQ0FBNkIsQ0FBN0IsQ0FBNUIsRUFBUCxDQUNBLE1BQVMsSUFBTSxJQUFJLENBQUMsS0FBTCxDQUFXLENBQUMsQ0FBQyxDQUFELENBQUQsQ0FBTyxHQUFsQixFQUF1QixRQUF2QixDQUFnQyxFQUFoQyxDQUFOLENBQTZDLElBQUksQ0FBQyxLQUFMLENBQVcsQ0FBQyxDQUFDLENBQUQsQ0FBRCxDQUFPLEdBQWxCLEVBQXVCLFFBQXZCLENBQWdDLEVBQWhDLENBQTdDLENBQW1GLElBQUksQ0FBQyxLQUFMLENBQVcsQ0FBQyxDQUFDLENBQUQsQ0FBRCxDQUFPLEdBQWxCLEVBQXdCLFFBQXhCLENBQWlDLEVBQWpDLENBQTVGLENBQ1QsQ0FIRCxDQUtBLEdBQUksQ0FBQSxPQUFPLENBQUcsUUFBVixDQUFBLE9BQVUsQ0FBUyxDQUFULENBQVksQ0FBWixDQUFlLENBQWYsQ0FBa0IsQ0FDNUIsR0FBSSxDQUFBLENBQUosQ0FBTyxDQUFQLENBQVUsQ0FBVixDQUFhLENBQWIsQ0FBZ0IsQ0FBaEIsQ0FBbUIsQ0FBbkIsQ0FBc0IsQ0FBdEIsQ0FBeUIsQ0FBekIsQ0FDQSxHQUFJLFNBQVMsQ0FBQyxNQUFWLEdBQXFCLENBQXpCLENBQTRCLENBQ3hCLENBQUMsQ0FBRyxDQUFDLENBQUMsQ0FBTixDQUFTLENBQUMsQ0FBRyxDQUFDLENBQUMsQ0FBZixDQUFrQixDQUFDLENBQUcsQ0FBQyxDQUFDLENBQXhCLENBQ0gsQ0FDRCxDQUFDLENBQUcsSUFBSSxDQUFDLEtBQUwsQ0FBVyxDQUFDLENBQUcsQ0FBZixDQUFKLENBQ0EsQ0FBQyxDQUFHLENBQUMsQ0FBRyxDQUFKLENBQVEsQ0FBWixDQUNBLENBQUMsQ0FBRyxDQUFDLEVBQUksRUFBSSxDQUFSLENBQUwsQ0FDQSxDQUFDLENBQUcsQ0FBQyxFQUFJLEVBQUksQ0FBQyxDQUFHLENBQVosQ0FBTCxDQUNBLENBQUMsQ0FBRyxDQUFDLEVBQUksRUFBSSxDQUFDLEVBQUksQ0FBTCxFQUFVLENBQWxCLENBQUwsQ0FDQSxPQUFRLENBQUMsQ0FBRyxDQUFaLEVBQ0ksSUFBSyxFQUFMLENBQVEsQ0FBQyxDQUFHLENBQUosQ0FBTyxDQUFDLENBQUcsQ0FBWCxDQUFjLENBQUMsQ0FBRyxDQUFsQixDQUFxQixNQUM3QixJQUFLLEVBQUwsQ0FBUSxDQUFDLENBQUcsQ0FBSixDQUFPLENBQUMsQ0FBRyxDQUFYLENBQWMsQ0FBQyxDQUFHLENBQWxCLENBQXFCLE1BQzdCLElBQUssRUFBTCxDQUFRLENBQUMsQ0FBRyxDQUFKLENBQU8sQ0FBQyxDQUFHLENBQVgsQ0FBYyxDQUFDLENBQUcsQ0FBbEIsQ0FBcUIsTUFDN0IsSUFBSyxFQUFMLENBQVEsQ0FBQyxDQUFHLENBQUosQ0FBTyxDQUFDLENBQUcsQ0FBWCxDQUFjLENBQUMsQ0FBRyxDQUFsQixDQUFxQixNQUM3QixJQUFLLEVBQUwsQ0FBUSxDQUFDLENBQUcsQ0FBSixDQUFPLENBQUMsQ0FBRyxDQUFYLENBQWMsQ0FBQyxDQUFHLENBQWxCLENBQXFCLE1BQzdCLElBQUssRUFBTCxDQUFRLENBQUMsQ0FBRyxDQUFKLENBQU8sQ0FBQyxDQUFHLENBQVgsQ0FBYyxDQUFDLENBQUcsQ0FBbEIsQ0FBcUIsTUFOakMsQ0FRSCxNQUFVLElBQU0sSUFBSSxDQUFDLEtBQUwsQ0FBVyxDQUFDLENBQUcsR0FBZixFQUFvQixRQUFwQixDQUE2QixFQUE3QixDQUFOLENBQTRDLElBQUksQ0FBQyxLQUFMLENBQVcsQ0FBQyxDQUFHLEdBQWYsRUFBb0IsUUFBcEIsQ0FBNkIsRUFBN0IsQ0FBNUMsQ0FBK0UsSUFBSSxDQUFDLEtBQUwsQ0FBVyxDQUFDLENBQUcsR0FBZixFQUFxQixRQUFyQixDQUE4QixFQUE5QixDQUF6RixDQUNBLENBbkJELENBc0JBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFxQyxVQUFVLENBQzNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUFnQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBK0IsS0FBL0IsQ0FBc0MsSUFBdEUsQ0FDSCxDQUZELENBS0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGVBQXBCLENBQXNDLFNBQVMsSUFBVCxDQUFjLENBQ2hELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUErQixJQUEvQixDQUNBLFNBQVMsQ0FBQyxTQUFWLENBQW9CLFNBQXBCLENBQThCLElBQTlCLEVBQW9DLElBQXBDLENBQ0ksVUFBTSxDQUNGLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQStCLEtBQS9CLENBQXNDLENBQWxELENBQW1ELElBQW5ELENBQVIsQ0FDSCxDQUhMLENBSUksVUFBTSxDQUFLLDRCQUNQLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLDBCQUE1QixDQUF1RCxPQUF2RCxFQUNBLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQStCLEtBQS9CLENBQXNDLENBQWxELENBQW1ELElBQW5ELENBQVIsQ0FDUCxDQVBELEVBUUgsQ0FWRCxDQWNBLEdBQUssQ0FBQSxxQkFBcUIsQ0FBRyxRQUF4QixDQUFBLHFCQUF3QixDQUFTLElBQVQsQ0FBZTtBQUM1QyxxU0FDSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBOEIsRUFBOUIsQ0FFQSxHQUFJLElBQUksRUFBRSxTQUFOLEVBQW1CLENBQUEsSUFBSSxPQUFKLEVBQUEsSUFBSSxTQUFKLHVCQUFBLElBQUksQ0FBRSxLQUFOLDZFQUFhLFVBQWIsc0VBQXlCLFNBQXpCLEdBQW9DLFNBQTNELENBQ0ksT0FDSixHQUFJLDBCQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixpQkFBckIsMEVBQXdDLElBQXhDLEdBQThDLFNBQWxELENBQ0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQTZCLGlDQUE3QixDQUVKLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFNBQXJCLEVBQWdDLFNBQXBDLENBQ1EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFNBQXJCLENBQStCLFNBQS9CLENBRVIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHNCQUFwQixDQUE2QyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsc0JBQXJCLEVBQStDLENBQTVGLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQWlDLElBQWpDLFNBQWlDLElBQWpDLGdDQUFpQyxJQUFJLENBQUUsS0FBdkMsK0RBQWlDLGNBQWEsVUFBOUMsZ0RBQWlDLHNCQUF5QixTQUF6QixDQUFtQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isc0JBQXZELEVBQStFLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixpQkFBckIsQ0FBdUMsSUFBdEgsQ0FBakMsQ0FDQSxHQUFJLENBQUEsU0FBUyxDQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFyQyxDQUVBO0FBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQTZCLENBQUMsQ0FBOUIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBNkIsQ0FBQyxDQUE5QixDQUNBLE1BQU0sQ0FBQyxJQUFQLENBQVksU0FBWixFQUF1QixPQUF2QixDQUErQixTQUFTLEdBQVQsQ0FBYSxLQUFiLENBQW9CLENBQUU7QUFDN0MsR0FBSSxFQUFHLFNBQVMsQ0FBQyxHQUFELENBQVQsQ0FBaUIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFyQixDQUE3QixDQUFKLENBQW9FLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUErQixHQUEvQixDQUNwRSxHQUFJLEVBQUcsU0FBUyxDQUFDLEdBQUQsQ0FBVCxDQUFpQixTQUFTLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXJCLENBQTdCLENBQUosQ0FBb0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQStCLEdBQS9CLENBQzNFLENBSEQsRUFRQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsSUFBcEIsQ0FBMkIsTUFBTSxDQUFDLE1BQVAsQ0FBYyxTQUFkLENBQTNCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE1BQXBCLENBQTZCLE1BQU0sQ0FBQyxJQUFQLENBQVksU0FBWixDQUE3QixDQUVBLEdBQUksMEJBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLG1HQUFzQixTQUF0QiwwRUFBaUMsSUFBakMsR0FBeUMsS0FBekMsRUFBa0QsMEJBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLG1HQUFzQixTQUF0QiwwRUFBaUMsSUFBakMsR0FBeUMsVUFBM0YsRUFBeUcsMEJBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLG1HQUFzQixTQUF0QiwwRUFBaUMsSUFBakMsR0FBeUMsV0FBdEosQ0FBbUssQ0FDM0osR0FBSSxDQUFBLE1BQU0sQ0FBQyxFQUFYLENBQ0EsR0FBSSxDQUFBLFlBQVksQ0FBRyxpQkFBbkIsQ0FDQSxHQUFJLENBQUEsQ0FBQyxDQUFHLElBQUksQ0FBQyxNQUFMLEVBQVIsQ0FBc0I7QUFIcUksMkNBSzFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixJQUxzSCxjQUszSixxREFBMkMsSUFBbEMsQ0FBQSxNQUFrQyxlQUN0QyxDQUFDLEVBQUksWUFBTCxDQUNBLENBQUMsRUFBSSxDQUFMLENBQ0EsTUFBTSxDQUFDLElBQVAsQ0FBYSxPQUFPLENBQUUsQ0FBRixDQUFLLEdBQUwsQ0FBVSxJQUFWLENBQXBCLEVBQ0osQ0FDRDtBQVYySix5REFXM0osTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWtDLENBQUksQ0FBRSxlQUFlLENBQUUsTUFBbkIsQ0FBSixDQUFsQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixJQUFwQixDQUErQixDQUFLLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixJQUF6QixDQUEvQixDQUNQLENBRUQsR0FBSSwwQkFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsbUdBQXNCLFNBQXRCLDBFQUFpQyxJQUFqQyxHQUF1QyxTQUEzQyxDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUFpQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsU0FBckIsQ0FBK0IsSUFBaEUsQ0FESixJQUdJLENBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQWlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixTQUF0RCxDQUFnRTtBQUdwRSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBcEIsQ0FBa0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFVBQXZELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQWlDLElBQWpDLFNBQWlDLElBQWpDLGlCQUFpQyxJQUFJLENBQUUsVUFBdkMsQ0FDQTtBQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUErQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsSUFBcEIsQ0FBeUIsTUFBekIsQ0FBZ0MsU0FBQyxVQUFELENBQWEsQ0FBYixRQUFtQixDQUFBLFVBQVUsQ0FBRyxDQUFoQyxFQUFoQyxDQUFtRSxDQUFuRSxDQUEvQixDQUdmO0FBQ0E7QUFDZTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFtQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLE1BQXJCLEVBQStCLEVBQWhDLENBQXFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBL0MsQ0FBeEMsQ0FFSCxDQWxFRCxDQW9FSixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBbUMsU0FBUyxHQUFULENBQWUsQ0FDNUMsR0FBSSxDQUFBLFNBQUosQ0FBZ0IsV0FBaEIsQ0FFQSxXQUFXLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG9CQUFuQyxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG1CQUF6QixDQUNPLFNBQVMsQ0FBRyxHQUFJLENBQUEsSUFBSSxDQUFDLFlBQVQsQ0FBc0IsT0FBdEIsQ0FBK0IsQ0FBRSxXQUFXLENBQUUsV0FBZixDQUE2QixxQkFBcUIsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsbUJBQXpFLENBQWdHLHFCQUFxQixDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixtQkFBNUksQ0FBL0IsQ0FBWixDQURQLElBR0ssQ0FBQSxTQUFTLENBQUcsR0FBSSxDQUFBLElBQUksQ0FBQyxZQUFULENBQXNCLE9BQXRCLENBQStCLENBQUUsV0FBVyxDQUFFLFdBQWYsQ0FBL0IsQ0FBWixDQUVSLEdBQUksQ0FDQyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixpQkFBekIsQ0FDSSxNQUFPLENBQUEsR0FBUCxDQURKLElBR0ksT0FBTyxDQUFBLFNBQVMsQ0FBQyxNQUFWLENBQWlCLEdBQWpCLENBQVAsQ0FFSCxDQUFDLE1BQU8sR0FBUCxDQUFZLENBQ04sZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0EsTUFBTyxRQUFQLENBQ1AsQ0FFUixDQXBCRCxDQXVCQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isa0JBQXBCLENBQXlDLFNBQVMsRUFBVCxDQUFZLEtBQVosQ0FBb0IsQ0FDN0Q7QUFDRSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsRUFBMEMsU0FBOUMsQ0FBeUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUF5QyxFQUF6QyxDQUN6RDtBQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix3QkFBcEIsQ0FBNkMsRUFBN0MsQ0FBZ0QsS0FBaEQsRUFFWCxDQU5TLENBU0osTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHdCQUFwQixDQUErQyxTQUFTLEVBQVQsQ0FBWSxLQUFaLENBQy9DLENBQ0ksR0FBSSxDQUFBLEdBQUosQ0FDQSxHQUFJLEtBQUssRUFBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsR0FBb0IsU0FBN0IsRUFBMEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEdBQW9CLElBQWxFLENBQ0UsQ0FDTSxHQUFHLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixDQUEwQyxHQUExQyxDQUE4QyxTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsRUFBVCxDQUFjLENBQTFFLEVBQTRFLE9BQTVFLENBQW9GLEVBQXBGLENBQU4sQ0FFQSxHQUFJLEdBQUcsRUFBRSxDQUFULENBQVcsQ0FDUCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLElBQXpDLENBQWdELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBMEMsR0FBMUMsRUFBK0MsSUFBL0YsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZUFBcEIsQ0FBc0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixDQUEwQyxHQUExQyxDQUF0QyxDQUNILENBQ0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUF5QyxFQUF6QyxDQUE4QyxFQUE5QyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsY0FBekMsQ0FBMEQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUF5QyxJQUF6QyxDQUErQyxJQUEvQyxDQUFvRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLEVBQTdGLENBQWlHLEdBQTNKLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHNCQUFwQixDQUEyQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQS9ELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLE9BQTlCLENBQXNDLE1BQXRDLENBQStDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBekQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBcEIsQ0FBK0IsSUFBL0IsQ0FFTCxDQWRILElBY08sQ0FDRCxHQUFHLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixDQUEwQyxHQUExQyxDQUE4QyxTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsRUFBVCxDQUFjLENBQTFFLEVBQTRFLE9BQTVFLENBQW9GLEVBQXBGLENBQU4sQ0FFQSxHQUFJLEdBQUcsRUFBRSxDQUFULENBQVcsQ0FDVCxvQkFBb0IsQ0FBQyx3QkFBckIsQ0FBOEMsRUFBOUMsRUFBa0QsSUFBbEQsQ0FBdUQsU0FBVSxJQUFWLENBQWdCLENBRS9ELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixlQUFwQixDQUFzQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLEdBQTFDLENBQXRDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLE9BQTlCLENBQXNDLE1BQXRDLENBQStDLElBQUksQ0FBQyxJQUFMLENBQVUsSUFBekQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBb0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLE9BQTlCLENBQXNDLE1BQTFELENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isc0JBQXBCLEdBQTZDLFNBQWpELENBQ0EsQ0FDSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsbUJBQXJCLENBQXlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixzQkFBcEIsQ0FBMkMsRUFBcEYsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsd0JBQXJCLENBQThDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixzQkFBcEIsQ0FBMkMsT0FBekYsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHNCQUFwQixDQUEyQyxhQUE3RCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUE4QixPQUFPLENBQUMsSUFBUixDQUFhLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixzQkFBcEIsQ0FBMkMsSUFBeEQsQ0FBOUIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBb0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixDQUEwQyxHQUExQyxFQUErQyxhQUFuRSxDQUVILENBUkQsSUFRTSxDQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLGtEQUE1QixDQUErRSxPQUEvRSxFQUVOLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUErQixJQUEvQixDQUVILENBakJMLENBaUJNLFNBQVMsS0FBVCxDQUFlLENBQ2YsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0FuQkQsRUFxQkgsQ0FDSixDQUVaLENBN0NPLENBZ0RELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBd0MsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLEtBQVgsQ0FBRixDQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLE1BQVgsQ0FBcEIsQ0FBdUMsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxLQUFYLENBQXZDLENBQXlELENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsS0FBWCxDQUF6RCxDQUEyRSxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLE9BQVgsQ0FBM0UsQ0FBeEMsQ0FHUDtBQUdTLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFrQyxDQUN2QixLQUFLLENBQUUsQ0FDSCxLQUFLLENBQUUsQ0FDTDtBQURLLENBREosQ0FEZ0IsQ0FNbEIsT0FBTyxDQUFFLENBQ0UsTUFBTSxDQUFFLENBQ0osT0FBTyxDQUFFLElBREwsQ0FFSixRQUFRLENBQUUsUUFGTixDQUdKLE1BQU0sQ0FBRSxDQUNKLEtBQUssQ0FBRSxtQkFESCxDQUhKLENBRFYsQ0FRSSxNQUFNLENBQUUsQ0FDTixNQUFNLENBQUUsT0FERixDQUNZO0FBQ2xCLFNBQVMsQ0FBRSxDQUZMLENBRU87QUFDYixRQUFRLENBQUUsS0FISixDQUdXO0FBQ2pCLFFBQVEsQ0FBRSxFQUpKLENBS04sU0FBUyxDQUFFLE1BTEwsQ0FLWTtBQUNsQixTQUFTLENBQUUsUUFOTCxDQU1pQjtBQUN2QixVQUFVLENBQUUsb0RBUE4sQ0FPb0U7QUFDMUUsVUFBVSxDQUFFLEtBQU87QUFSYixDQVJaLENBTlMsQ0FBbEMsQ0E0QkMsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsY0FBckIsRUFBcUMsU0FBckMsRUFBa0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGNBQXJCLEVBQXFDLElBQTNGLENBQWtHLENBQzdGLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFpQyxLQUFqQyxDQUF1QyxLQUF2QyxDQUE2QyxTQUE3QyxDQUF5RCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsY0FBOUUsQ0FDSixDQUdILEdBQUksMEJBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLG1HQUFzQixTQUF0QiwwRUFBaUMsSUFBakMsSUFBMkMsS0FBM0MsRUFBcUQsMEJBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLG1HQUFzQixTQUF0QiwwRUFBaUMsSUFBakMsSUFBNEMsTUFBakcsRUFBMkcsMEJBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLG1HQUFzQixTQUF0QiwwRUFBaUMsSUFBakMsSUFBNEMsT0FBdkosRUFBa0ssMEJBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLG1HQUFzQixTQUF0QiwwRUFBaUMsSUFBakMsSUFBNEMsUUFBbE4sQ0FBNk4sQ0FDek4sTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQWlDLE9BQWpDLENBQXlDLE1BQXpDLENBQWdELE9BQWhELENBQXlELEtBQXpELENBQ0gsQ0FFTTtBQUNmO0FBQ0E7QUFDQTtBQUNBLG1CQUlJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUFpQyxDQUFFO0FBQ1gsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxNQUFYLENBRFMsQ0FDVSxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLEtBQVgsQ0FEVixDQUVULENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsVUFBWCxDQUZTLENBRWMsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxLQUFYLENBRmQsQ0FFZ0MsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxXQUFYLENBRmhDLENBR1QsQ0FBQyxFQUFFLENBQUMsRUFBSixDQUFPLElBQUksQ0FBQyxTQUFaLENBSFMsQ0FHZSxDQUFDLEVBQUUsQ0FBQyxHQUFKLENBQVMsSUFBSSxDQUFDLFFBQWQsQ0FDNUM7QUFKNkIsQ0FBakMsQ0FPRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixTQUFyQixFQUFnQyxTQUFwQyxDQUN5QixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsU0FBckIsQ0FBK0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQStCLENBQS9CLENBQS9CLENBQWlFO0FBRTdFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWtDLFVBQ2xDLENBQ1csTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNkIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsS0FBNUIsQ0FBbUMsSUFBaEUsQ0FDVixDQUhELENBS0EsTUFBTSxDQUFDLEdBQVAsQ0FBVyxrQkFBWCxDQUE4QixTQUFTLEtBQVQsQ0FBZSxJQUFmLENBQW9CLENBQzlDLEdBQUksQ0FBQSxNQUFNLENBQUMsSUFBWCxDQUNBLEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsV0FBaEIsQ0FBNEIsR0FBNUIsQ0FBZ0MsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLE1BQVQsQ0FBa0IsQ0FBaEUsRUFBa0UsT0FBbEUsQ0FBMEUsTUFBMUUsQ0FBVixDQUNBLEdBQUksR0FBRyxFQUFFLENBQVQsQ0FBWSxDQUNWLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFdBQWhCLENBQTRCLE1BQTVCLENBQW1DLEdBQW5DLENBQXVDLENBQXZDLEVBQ0QsQ0FDSixDQU5ELEVBUUEsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsR0FBMEIsU0FBMUIsRUFBdUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLEdBQTBCLElBQXJFLENBQTJFLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUEwQixFQUExQixDQUUzRSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixFQUFtQixJQUFuQixFQUEyQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsR0FBb0IsU0FBbkQsQ0FBOEQsQ0FDMUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQTBCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBcEMsQ0FDSCxDQUZELElBRVEsQ0FDSixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBb0IsRUFBcEIsQ0FDSCxDQUVELEdBQUksQ0FBQSxhQUFhLENBQUcsUUFBaEIsQ0FBQSxhQUFnQixDQUFTLElBQVQsQ0FDcEIsQ0FDSSxHQUFJLENBQUEsUUFBUSxDQUFDLEtBQWIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE4QixLQUE5QixDQUNBLEdBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsV0FBaEIsQ0FBNEIsTUFBNUIsQ0FBbUMsQ0FBdkMsQ0FBMkMsQ0FDdkMsR0FBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixXQUFoQixDQUE0QixDQUE1QixFQUErQixNQUEvQixDQUFzQyxFQUF0QyxFQUE0QyxJQUFJLENBQUMsTUFBckQsQ0FBNkQsQ0FDekQsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsV0FBaEIsQ0FBNEIsTUFBNUIsQ0FBbUMsQ0FBbkMsQ0FDQSxRQUFRLENBQUMsSUFBVCxDQUNILENBQ0osQ0FMRCxJQUtPLENBQUEsUUFBUSxDQUFDLElBQVQsQ0FFUCxNQUFNLENBQUMsUUFBUCxDQUFnQixXQUFoQixDQUE0QixNQUE1QixDQUFtQyxDQUFuQyxDQUFxQyxDQUFyQyxFQUVBLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBRyxDQUFiLENBQWUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUF3QixNQUF6QyxDQUFnRCxDQUFDLEVBQWpELENBQXFELENBQzdDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLENBQXhCLEVBQTJCLE1BQTNCLENBQWtDLEVBQWxDLEVBQXNDLElBQUksQ0FBQyxNQUEvQyxDQUF1RCxDQUNuRCxRQUFRLENBQUMsVUFBVSxDQUNmLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFdBQWhCLENBQTRCLElBQTVCLENBQWlDLElBQWpDLEVBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBOEIsSUFBOUIsQ0FDSCxDQUhPLENBQVIsQ0FJSCxDQUNKLENBQ1IsQ0FyQkQsQ0F1QkU7QUFFQSxHQUFJLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUExQixFQUEyQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsZUFBcEUsQ0FBc0YsQ0FDaEYsR0FBSSxDQUFBLE1BQU0sQ0FBRSxRQUFTLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBL0IsQ0FBd0M7QUFDeEMsR0FBSSxDQUFBLGlCQUFpQixDQUFHLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUExQixDQUEwQyxHQUExQyxDQUErQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsZUFBNUYsQ0FBNEc7QUFDNUcsR0FBSSxDQUFBLFFBQVEsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsaUJBQXJCLENBQXVDLE1BQXZDLENBQThDLGNBQTlDLENBQTZELHFCQUE3RCxDQUFmLENBQ0wsQ0FHSixHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBRUE7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBR2dCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQThCLFNBQVMsTUFBVCxDQUM1QixDQUNFLEdBQUksQ0FBQSxTQUFTLENBQUcsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsV0FBaEIsQ0FBNEIsR0FBNUIsQ0FBZ0MsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLE1BQVQsQ0FBa0IsQ0FBaEUsRUFBa0UsT0FBbEUsQ0FBMEUsTUFBMUUsQ0FBaEIsQ0FFQSxHQUFJLFNBQVMsRUFBRSxDQUFmLENBQWtCLE1BQU8sS0FBUCxDQUFsQixJQUNLLE9BQU8sTUFBUCxDQUNOLENBTkgsQ0FRQyxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQStCLFNBQVMsSUFBVCxDQUFjLENBRXRDLFNBQVMsQ0FBQyxTQUFWLENBQW9CLFFBQXBCLEdBQStCLElBQS9CLENBQXFDLFNBQUMsSUFBRCxDQUFVLENBQzNDLGlDQUNBLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQUwsQ0FBZ0IsSUFBaEIsQ0FBcUIsQ0FBakMsQ0FBUixDQUNILENBSEQsQ0FJQSxVQUFNLENBQ0YsMkJBQ0EsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsNkJBQTVCLENBQTBELE9BQTFELEVBQ0gsQ0FQRCxFQVNQLENBWEEsQ0FjRCxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBMEIsVUFDMUIsQ0FDSSxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsSUFBeEIsQ0FBNkIsQ0FBQyxRQUFRLENBQUMsSUFBVixDQUFlLE1BQU0sQ0FBQyxJQUF0QixDQUE3QixFQUNILENBSEQsQ0FLQSxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsQ0FBNEIsVUFDNUIsQ0FDSyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBb0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUE5QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUF3QixJQUF4QixDQUNBLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLEtBQXhCLENBQThCLENBQTFDLENBQTJDLElBQTNDLENBQVIsQ0FDSixDQUxELENBT0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUErQixTQUFVLEtBQVYsQ0FBZ0IsQ0FFNUMsR0FBSSxLQUFLLEVBQUUsQ0FBWCxDQUFhLENBQ0gsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLE1BQXhCLENBQStCLEtBQS9CLENBQXFDLENBQXJDLEVBQ1QsQ0FDSCxDQUxELENBUUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQXNDLFNBQVMsSUFBVCxDQUFjLEdBQWQsQ0FBa0IsWUFBbEIsQ0FBK0IsZUFBL0IsQ0FBK0MsQ0FDNUUsZUFBZSxDQUFDLGtCQUFoQixDQUFtQyxHQUFuQyxDQUF1QyxZQUF2QyxDQUFvRCxlQUFwRCxDQUFvRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTlFLEVBQThGLElBQTlGLENBQW1HLFNBQVMsSUFBVCxDQUFlLENBRTlHLE1BQU0sQ0FBQyxFQUFQLENBQVUsMkJBQVYsQ0FBc0MsQ0FBQyxFQUFFLENBQUUsSUFBTCxDQUFVLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBUCxDQUFlLElBQXZDLENBQTRDLGVBQWUsQ0FBQyxNQUFNLENBQUMsTUFBbkUsQ0FBMEUsVUFBVSxDQUFDLENBQXJGLENBQXVGLG9CQUFvQixDQUFDLEdBQTVHLENBQXRDLEVBRUUsQ0FKTixDQUlPLFNBQVMsS0FBVCxDQUFlLENBRWQsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0FQSCxFQVFaLENBVEcsQ0FZTixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBcUMsU0FBUyxpQkFBVCxDQUEyQixtQkFBM0IsQ0FDdEMsQ0FDSztBQUNDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixFQUF1QyxTQUEzQyxDQUNBLENBQ0csTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUF3QyxpQkFBeEMsQ0FDRixDQUhELElBSUEsQ0FDRyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsRUFBdUMsQ0FBdkMsRUFBNEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixFQUF1QyxpQkFBdkYsQ0FDSyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXdDLGlCQUF4QyxDQURMLElBR0ksQ0FBQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXNDLENBQXRDLENBQ04sQ0FHRCxHQUFJLG1CQUFKLENBQXlCLE1BQU0sQ0FBQyxLQUFQLENBQWEsa0JBQWIsQ0FBZ0MsTUFBTSxDQUFDLEVBQXZDLEVBRXpCLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLEVBQWlDLFNBQXJDLENBQWlELENBQzdDO0FBQ0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQWlDLEVBQWpDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHVCQUFwQixDQUE0QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBaEUsQ0FBMkUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQS9GLEVBRUosQ0FDTixDQXZCQSxDQTJCSixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsdUJBQXBCLENBQThDLFNBQVUsR0FBVixDQUFlLFVBQWYsQ0FBNkI7QUFDN0UsQ0FBQztBQUNFO0FBQ0EsR0FBSSxDQUFBLENBQUMsQ0FBRyxFQUFSLENBQ0EsTUFBTSxDQUFDLElBQVAsQ0FBWSxHQUFaLEVBQWlCLE9BQWpCLENBQXlCLFNBQVMsR0FBVCxDQUFjLENBRW5DLEdBQU0sUUFBTyxHQUFHLENBQUMsR0FBRCxDQUFWLElBQXFCLFFBQXRCLEVBQW1DLEdBQUcsQ0FBQyxHQUFELENBQXRDLEVBQWtELEdBQUcsRUFBSSxXQUE5RCxDQUE0RSxDQUFFO0FBQzVFLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix1QkFBcEIsQ0FBNEMsR0FBRyxDQUFDLEdBQUQsQ0FBL0MsQ0FBc0QsVUFBdEQsRUFDRCxDQUZELElBR0ssQ0FDRyxHQUFJLEdBQUcsRUFBSSxXQUFYLENBQTBCLENBQ3RCO0FBQ0EsQ0FBQyxDQUFDLEdBQUQsQ0FBRCxDQUFRLEdBQUcsQ0FBQyxHQUFELENBQVgsQ0FDQyxDQUVMLEdBQUksR0FBRyxFQUFJLGdCQUFYLENBQThCLENBQzFCLENBQUMsQ0FBQyxJQUFELENBQUQsQ0FBUyxHQUFHLENBQUMsR0FBRCxDQUFaLENBQ0gsQ0FDRCxHQUFJLEdBQUcsRUFBSSxPQUFYLENBQXFCLENBQ2pCLENBQUMsQ0FBQyxNQUFELENBQUQsQ0FBVyxHQUFHLENBQUMsR0FBRCxDQUFkLENBQ0gsQ0FDSixDQUNKLENBbEJMLEVBb0JBLEdBQUssQ0FBQyxDQUFDLFdBQUQsQ0FBRCxFQUFrQixNQUFNLENBQUMsSUFBUCxDQUFZLENBQVosRUFBZSxNQUFmLENBQXdCLENBQS9DLENBQW1ELFVBQVUsQ0FBQyxJQUFYLENBQWdCLENBQWhCLEVBQ3RELENBekJFLENBNEJHLENBcmVLLENBc2VGLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FHeEMsQ0F6ZU0sQ0FBUCxDQTZlUCxFQUdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE8sQ0FHWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUdBLGFBRU8sUUFBUyxDQUFBLGVBQVQsRUFBNEIsQ0FFM0IsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUYsV0FBVyxDQUFFLDJDQUZYLENBR0Y7QUFDYjtBQUNBO0FBQ0E7QUFDQSxnQkFDYSxVQUFVLENBQUUsb0JBQVMsTUFBVCxDQUFnQixVQUFoQixDQUEyQixRQUEzQixDQUFvQyxXQUFwQyxDQUFnRCxvQkFBaEQsQ0FBcUUsZUFBckUsQ0FBcUYsZ0JBQXJGLENBQXNHLGVBQXRHLENBQXVILENBRS9ILE1BQU0sQ0FBQyxLQUFQLENBQWMsZUFBZCxDQUNBLEdBQUksQ0FBQyxLQUFLLENBQUMsT0FBTixDQUFjLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBeEIsQ0FBTCxDQUE2QyxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsRUFBeEIsQ0FDOUMsR0FBSSxNQUFNLENBQUMsa0JBQVAsRUFBMkIsU0FBL0IsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxhQUFQLENBQXVCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUFqRCxDQUNELENBQ0QsR0FBSSxNQUFNLENBQUMsU0FBUCxFQUFvQixTQUF4QixDQUFtQyxNQUFNLENBQUMsU0FBUCxDQUFpQixFQUFqQixDQUNuQyxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFDLFdBQVcsQ0FBRyxFQUFmLENBQWhCLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsSUFBNUIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUFnQyxFQUFoQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTRCLEtBQTVCLENBRUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBakIsQ0FBa0MsVUFBVSxDQUNqQyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE2QixNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixLQUE1QixDQUFtQyxJQUFoRSxDQUNWLENBRkQsQ0FLQSxNQUFNLENBQUMsR0FBUCxDQUFXLGtCQUFYLENBQThCLFNBQVMsS0FBVCxDQUFlLElBQWYsQ0FBb0IsQ0FDOUM7QUFDQTtBQUNBLEdBQUksQ0FBQSxNQUFNLENBQUMsSUFBWCxDQUNBLEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsV0FBaEIsQ0FBNEIsR0FBNUIsQ0FBZ0MsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLE1BQVQsQ0FBa0IsQ0FBaEUsRUFBa0UsT0FBbEUsQ0FBMEUsTUFBMUUsQ0FBVixDQUVBLEdBQUksR0FBRyxFQUFFLENBQVQsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFdBQWhCLENBQTRCLE1BQTVCLENBQW1DLEdBQW5DLENBQXVDLENBQXZDLEVBQ0QsQ0FDSixDQVZELEVBWUEsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsR0FBMEIsU0FBMUIsRUFBdUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLEdBQTBCLElBQXJFLENBQTJFLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUEwQixFQUExQixDQUUzRSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixFQUFtQixJQUFuQixFQUEyQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsR0FBb0IsU0FBbkQsQ0FBOEQsQ0FDN0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQTBCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBcEMsQ0FDQSxDQUZELElBR0EsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBb0IsRUFBcEIsQ0FFQyxDQUVELEdBQUksQ0FBQSxhQUFhLENBQUcsUUFBaEIsQ0FBQSxhQUFnQixDQUFTLElBQVQsQ0FDcEIsQ0FDSSxHQUFJLENBQUEsUUFBUSxDQUFDLEtBQWIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE4QixLQUE5QixDQUNBLEdBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsV0FBaEIsQ0FBNEIsTUFBNUIsQ0FBbUMsQ0FBdkMsQ0FFQSxDQUNJLEdBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsV0FBaEIsQ0FBNEIsQ0FBNUIsRUFBK0IsTUFBL0IsQ0FBc0MsRUFBdEMsRUFBNEMsSUFBSSxDQUFDLE1BQXJELENBQ0EsQ0FDSSxNQUFNLENBQUMsUUFBUCxDQUFnQixXQUFoQixDQUE0QixNQUE1QixDQUFtQyxDQUFuQyxDQUNBLFFBQVEsQ0FBQyxJQUFULENBQ0gsQ0FDSixDQVJELElBUU0sQ0FBQSxRQUFRLENBQUMsSUFBVCxDQUdSO0FBQ0U7QUFDSSxNQUFNLENBQUMsUUFBUCxDQUFnQixXQUFoQixDQUE0QixNQUE1QixDQUFtQyxDQUFuQyxDQUFxQyxDQUFyQyxFQUVBLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBRyxDQUFiLENBQWUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUF3QixNQUF6QyxDQUFnRCxDQUFDLEVBQWpELENBQ0EsQ0FFSSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUF3QixDQUF4QixFQUEyQixNQUEzQixDQUFrQyxFQUFsQyxFQUFzQyxJQUFJLENBQUMsTUFBL0MsQ0FDQSxDQUVJLFFBQVEsQ0FBQyxVQUFVLENBQ25CLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFdBQWhCLENBQTRCLElBQTVCLENBQWlDLElBQWpDLEVBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBOEIsSUFBOUIsQ0FDQyxDQUhPLENBQVIsQ0FJSCxDQUNKLENBQ0w7QUFDSCxDQWhDRCxDQWtDQSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUcsQ0FBYixDQUFlLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsTUFBekMsQ0FBZ0QsQ0FBQyxFQUFqRCxDQUNBLENBQ0ksR0FBSSxDQUFBLGlCQUFpQixDQUFHLHdCQUF3QixNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsQ0FBeEIsRUFBMkIsUUFBM0UsQ0FDQSxHQUFJLENBQUEsZUFBZSxDQUFHLGdCQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTFCLENBQWtDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixjQUFsRixDQUNBLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixpQkFBckIsQ0FBdUMsZUFBdkMsQ0FBdUQsZUFBdkQsQ0FBdUUsYUFBdkUsRUFFSCxDQUVEO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQ2dCLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxvQkFBb0IsQ0FBQyx3QkFBckIsQ0FBOEMsSUFBOUMsQ0FBbUQsTUFBbkQsRUFBMkQsSUFBM0QsQ0FBZ0UsU0FBUyxJQUFULENBQWUsQ0FFL0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLENBQXFCLElBQUksQ0FBQyxJQUExQixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUFzQixJQUF0QixDQUdBLENBTmhCLENBTWlCLFNBQVMsS0FBVCxDQUFlLENBRWQsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0FUYixFQVdHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQThCLFNBQVMsTUFBVCxDQUMvQixDQUNFLEdBQUksQ0FBQSxTQUFTLENBQUcsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsV0FBaEIsQ0FBNEIsR0FBNUIsQ0FBZ0MsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLE1BQVQsQ0FBa0IsQ0FBaEUsRUFBa0UsT0FBbEUsQ0FBMEUsTUFBMUUsQ0FBaEIsQ0FFQSxHQUFJLFNBQVMsRUFBRSxDQUFmLENBQWtCLE1BQU8sS0FBUCxDQUFsQixJQUNLLE9BQU8sTUFBUCxDQUNOLENBTkEsQ0FRQSxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQStCLFNBQVMsSUFBVCxDQUFjLENBRXhDLFNBQVMsQ0FBQyxTQUFWLENBQW9CLFFBQXBCLEdBQStCLElBQS9CLENBQXFDLFNBQUMsSUFBRCxDQUFVLENBQzNDLGlDQUNBLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQUwsQ0FBZ0IsSUFBaEIsQ0FBcUIsQ0FBakMsQ0FBUixDQUNILENBSEQsQ0FJQSxVQUFNLENBQ0YsMkJBQ0EsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsNkJBQTVCLENBQTBELE9BQTFELEVBQ0gsQ0FQRCxFQVNQLENBWEUsQ0FjSCxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBMEIsVUFBVyxDQUVqQyxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0IsSUFBeEIsQ0FBNkIsQ0FBQyxRQUFRLENBQUMsSUFBVixDQUFlLE1BQU0sQ0FBQyxJQUF0QixDQUE3QixFQUVILENBSkQsQ0FNRyxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsQ0FBNEIsVUFBVyxDQUNyQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBb0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUE5QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUF3QixJQUF4QixDQUNBLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLEtBQXhCLENBQThCLENBQTFDLENBQTJDLElBQTNDLENBQVIsQ0FDRCxDQUpELENBS0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUErQixTQUFVLEtBQVYsQ0FBZ0IsQ0FHL0MsR0FBSSxLQUFLLEVBQUUsQ0FBWCxDQUFhLENBRUgsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLE1BQXhCLENBQStCLEtBQS9CLENBQXFDLENBQXJDLEVBRVQsQ0FHRixDQVZDLENBYUYsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQXNDLFNBQVMsSUFBVCxDQUFjLEdBQWQsQ0FBa0IsWUFBbEIsQ0FBK0IsZUFBL0IsQ0FBK0MsQ0FDNUUsZUFBZSxDQUFDLGtCQUFoQixDQUFtQyxHQUFuQyxDQUF1QyxZQUF2QyxDQUFvRCxlQUFwRCxDQUFvRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTlFLEVBQThGLElBQTlGLENBQW1HLFNBQVMsSUFBVCxDQUFlLENBRTlHLE1BQU0sQ0FBQyxFQUFQLENBQVUsMkJBQVYsQ0FBc0MsQ0FBQyxFQUFFLENBQUUsSUFBTCxDQUFVLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBUCxDQUFlLElBQXZDLENBQTRDLGVBQWUsQ0FBQyxNQUFNLENBQUMsTUFBbkUsQ0FBMEUsVUFBVSxDQUFDLENBQXJGLENBQXVGLG9CQUFvQixDQUFDLEdBQTVHLENBQXRDLEVBSUUsQ0FOTixDQU1PLFNBQVMsS0FBVCxDQUFlLENBRWQsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0FUSCxFQVVaLENBWEcsQ0FjQSxDQS9LRixDQWdMRixJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBR3hDLENBbkxNLENBQVAsQ0F1TFAsRUFDRCxhQUVPLFFBQVMsQ0FBQSxpQkFBVCxDQUE0QixVQUE1QixDQUF1QyxnQkFBdkMsQ0FBd0QsZUFBeEQsQ0FBd0Usb0JBQXhFLENBQTZGLFFBQTdGLENBQXNHLHlCQUF0RyxDQUFnSSxFQUFoSSxDQUFtSSxtQkFBbkksQ0FBdUosY0FBdkosQ0FBdUssQ0FFMUssR0FBSSxDQUFBLFVBQVUsQ0FBRyxDQUFDLFFBQUQsQ0FBVyxXQUFYLENBQXVCLGNBQXZCLENBQXNDLFVBQXRDLENBQWlELGNBQWpELENBQWdFLHNCQUFoRSxDQUF1RixZQUF2RixDQUFvRyxtQkFBcEcsQ0FBd0gsMkJBQXhILENBQW9KLGlCQUFwSixDQUFzSyxnQkFBdEssQ0FBd0wsa0JBQXhMLENBQTJNLGFBQTNNLENBQXlOLGlCQUF6TixDQUEyTyxxQkFBM08sQ0FBaVEsSUFBalEsQ0FBc1EsU0FBdFEsQ0FBZ1IsZ0JBQWhSLENBQWlTLFVBQWpTLENBQTRTLFVBQTVTLENBQ0MsU0FBVSxNQUFWLENBQWlCLFNBQWpCLENBQTJCLFlBQTNCLENBQXdDLFFBQXhDLENBQWlELFlBQWpELENBQThELG9CQUE5RCxDQUFtRixVQUFuRixDQUE4RixpQkFBOUYsQ0FBZ0gseUJBQWhILENBQTBJLGVBQTFJLENBQTJKLGNBQTNKLENBQTJLLGdCQUEzSyxDQUE0TCxXQUE1TCxDQUF3TSxlQUF4TSxDQUF3TixtQkFBeE4sQ0FBNE8sRUFBNU8sQ0FBK08sT0FBL08sQ0FBdVAsY0FBdlAsQ0FBc1EsUUFBdFEsQ0FBK1EsUUFBL1EsQ0FBeVIsQ0FFM1MsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsR0FBc0IsU0FBMUIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLEVBQXBCLENBRXJDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBdUMsS0FBdkMsQ0FDQSxNQUFNLENBQUMsSUFBUCxDQUFZLG1CQUFaLENBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBYSxlQUFiLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUFzQyxDQUF0QyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxJQUFoQyxDQUVBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFvQyxRQUFwQyxDQUVBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFrQyxXQUFXLENBQUMsZUFBOUMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQTJDLEtBQTNDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUFzQyxJQUF0QyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixzQkFBcEIsQ0FBNkMsS0FBN0MsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isa0JBQXBCLENBQXVDLElBQXZDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLEdBQXpCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQXBCLENBQW9DLElBQXBDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUFzQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQU4sQ0FBZ0IsSUFBSSxDQUFDLFNBQXJCLENBQUQsQ0FBaUMsQ0FBQyxJQUFJLENBQUMsTUFBTixDQUFhLElBQUksQ0FBQyxNQUFsQixDQUFqQyxDQUF0QyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxFQUFoQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxhQUFoQyxDQUE4QyxFQUE5QyxDQUNBLE1BQU0sQ0FBQyxNQUFQLENBQWMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLEdBQXhDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE1BQXBCLENBQTJCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixHQUFyRCxDQUdBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBcUMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLEdBQS9ELENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLEVBQXNDLFNBQTFDLENBQXFELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBdUMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLE1BQWpFLENBQ3JELEdBQUksTUFBTSxDQUFDLE1BQVAsRUFBZSxTQUFuQixDQUErQixNQUFNLENBQUMsTUFBUCxDQUFjLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixHQUF4QyxDQUMvQixHQUFJLE1BQU0sQ0FBQyxNQUFQLEVBQWUsU0FBbkIsQ0FBOEIsTUFBTSxDQUFDLE1BQVAsQ0FBYyxHQUFkLENBQzlCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUExQixDQUE0QyxZQUFZLENBQUMsT0FBekQsQ0FFSCxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBMUIsQ0FBNEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0RCxDQUVHLEdBQUksTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQTFCLEVBQTJDLFNBQS9DLENBQTBELE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUExQixDQUE0QyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsT0FBMUIsRUFBcUMsQ0FBakYsQ0FFMUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE1BQXBCLENBQTJCLE1BQU0sQ0FBQyxNQUFsQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUFpQyxDQUFqQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixPQUFwQixDQUE4QixFQUE5QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUErQixDQUFDLFlBQVksQ0FBQyxDQUFkLENBQWdCLGtCQUFrQixDQUFDLEtBQW5DLENBQS9CLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQW1DLENBQUMsWUFBWSxDQUFDLENBQWQsQ0FBZ0Isa0JBQWtCLENBQUMsS0FBbkMsQ0FBbkMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLENBQXFDLENBQUMsWUFBWSxDQUFDLENBQWQsQ0FBZ0Isa0JBQWtCLENBQUMsS0FBbkMsQ0FBckMsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBa0MsV0FBVyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXZELENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUF1QyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQWpELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUF3QyxJQUF4QyxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLEVBQXNCLFNBQTFCLENBQXNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUF1QixFQUF2QixDQUN0QyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixLQUFyQixFQUE0QixTQUFoQyxDQUEyQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsS0FBckIsQ0FBMkIsRUFBM0IsQ0FDM0MsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsU0FBckIsRUFBZ0MsU0FBcEMsQ0FBZ0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFNBQXJCLENBQStCLEVBQS9CLENBQ2hELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG9CQUFyQixFQUEyQyxTQUEvQyxDQUE0RCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsb0JBQXJCLENBQTBDLFNBQTFDLENBRzVELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLFNBQTlCLENBQTBDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUEyQixFQUEzQixDQUMxQyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixXQUF6QixFQUFzQyxTQUExQyxDQUF1RCxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBeUIsV0FBekIsQ0FBcUMsd0JBQXJDLENBQ3ZELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLFdBQXpCLEVBQXNDLFNBQTFDLENBQXVELE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixXQUF6QixDQUFxQyxJQUFyQyxDQUN2RCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixXQUF6QixFQUFzQyxTQUExQyxDQUF1RCxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBeUIsV0FBekIsQ0FBcUMsT0FBckMsQ0FFdkQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBOUIsRUFBb0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE5QyxDQUVBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixzQkFBcEIsQ0FBNkMsSUFBN0MsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsc0JBQXJCLENBQThDLElBQTlDLENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFdBQXJCLENBQW1DLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixXQUE1RCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixXQUFyQixDQUFtQyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBeUIsV0FBNUQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsV0FBckIsQ0FBbUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLFdBQTVELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFNBQXJCLENBQWlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixTQUExRCxDQUVBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGdCQUFyQixFQUF1QyxTQUF2QyxFQUFvRCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsZ0JBQXJCLEVBQXVDLElBQS9GLENBQXFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixnQkFBckIsQ0FBc0MsT0FBdEMsQ0FDckcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQWlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixvQkFBdEQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsU0FBaEMsQ0FBNEMsQ0FBQyxHQUFHLENBQUMsSUFBTCxDQUE1QyxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFkLENBQXlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxTQUFoQyxDQUEwQyxHQUExQyxDQUFnRCxFQUFoRCxDQUN6QixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsU0FBckIsQ0FBaUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUEzQyxDQUVBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFrQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsbUJBQXZELENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsRUFBaUMsU0FBckMsQ0FBZ0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWlDLEtBQWpDLENBQ2hELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGVBQXBCLEVBQXFDLFNBQXpDLENBQW9ELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixlQUFwQixDQUFxQyxLQUFyQyxDQUNwRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsRUFBd0MsU0FBNUMsQ0FBdUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUF3QyxLQUF4QyxDQUN2RCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLEtBQXpDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLDZCQUFwQixDQUFrRCxFQUFsRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix1QkFBcEIsQ0FBNEMsRUFBNUMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isa0JBQXBCLENBQXlDLE1BQU0sQ0FBQyxrQkFBaEQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBZ0MsQ0FDOUIsRUFBRSxDQUFFLEdBRDBCLENBRTlCLElBQUksQ0FBRSxNQUZ3QixDQUc5QixPQUFPLENBQUUsRUFIcUIsQ0FBaEMsQ0FNQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBcEIsQ0FBb0MsQ0FDbEMsRUFBRSxDQUFFLEdBRDhCLENBRWxDLElBQUksQ0FBRSxNQUY0QixDQUdsQyxPQUFPLENBQUUsRUFIeUIsQ0FBcEMsQ0FLQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsdUJBQXBCLENBQThDLENBQzFDO0FBQ0E7QUFDQSxjQUFjLENBQUUsSUFIMEIsQ0FJMUMsZ0JBQWdCLENBQUUsSUFKd0IsQ0FLMUMsa0JBQWtCLENBQUUsSUFMc0IsQ0FNMUMsV0FBVyxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FObUIsQ0FPNUM7QUFDQztBQUNDLGVBQWUsQ0FBRSxJQVR5QixDQVUxQyxRQUFRLENBQUUsRUFWZ0MsQ0FXMUMsV0FBVyxDQUFDLEVBWDhCLENBWTFDLHdCQUF3QixDQUFFLEtBWmdCLENBYTFDLG9CQUFvQixDQUFFLElBYm9CLENBYzFDLHNCQUFzQixDQUFFLElBZGtCLENBZTFDO0FBQ0EsbUJBQW1CLENBQUUsQ0FBQyxFQUFELENBQUssRUFBTCxDQUFTLEVBQVQsQ0FBWSxHQUFaLENBQWdCLEdBQWhCLENBQW9CLEdBQXBCLENBQXdCLElBQXhCLENBQTZCLElBQTdCLENBQWtDLEtBQWxDLENBQ3RCO0FBakIyQyxDQUE5QyxDQW9CQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixTQUFyQixFQUFrQyxJQUF0QyxDQUE0QyxDQUN4QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsdUJBQXBCLENBQTRDLGdCQUE1QyxDQUErRCxLQUEvRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix1QkFBcEIsQ0FBNEMsZ0JBQTVDLENBQStELEtBQS9ELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHVCQUFwQixDQUE0QyxjQUE1QyxDQUE2RCxLQUE3RCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix1QkFBcEIsQ0FBNEMsd0JBQTVDLENBQXVFLEtBQXZFLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHVCQUFwQixDQUE0Qyx1QkFBNUMsQ0FBc0UsQ0FBdEUsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsdUJBQXBCLENBQTRDLHlCQUE1QyxDQUF3RSxDQUF4RSxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix1QkFBcEIsQ0FBNEMsZUFBNUMsQ0FBOEQsS0FBOUQsQ0FFSCxDQUVELEdBQUksQ0FBQSxpQkFBaUIsQ0FBRyxDQUNwQixVQUFVLENBQUUsQ0FEUSxDQUVwQixRQUFRLENBQUUsRUFGVSxDQUdwQixJQUFJLENBQUUsSUFIYyxDQUF4QixDQU1HLE1BQU0sQ0FBQyxpQkFBUCxDQUEyQixDQUMxQixVQUFVLENBQUUsQ0FEYyxDQUUxQixRQUFRLENBQUUsRUFGZ0IsQ0FHMUIsSUFBSSxDQUFFLElBSG9CLENBQTNCLENBTUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUF5QyxDQUN0QztBQUNDLGNBQWMsQ0FBRSxJQUZxQixDQUdyQyxjQUFjLENBQUUsSUFIcUIsQ0FJckMsZ0JBQWdCLENBQUUsSUFKbUIsQ0FLckMsa0JBQWtCLENBQUUsS0FMaUIsQ0FNckMsV0FBVyxDQUFFLEtBTndCLENBT3JDLHlCQUF5QixDQUFHLENBUFMsQ0FRckMsc0JBQXNCLENBQUcsQ0FSWSxDQVNyQyxlQUFlLENBQUUsSUFUb0IsQ0FVckMsd0JBQXdCLENBQUUsSUFWVyxDQVdyQyxvQkFBb0IsQ0FBRSxJQVhlLENBWXJDLGFBQWEsQ0FBRSxDQVpzQixDQUF6QyxDQWVBO0FBQ0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUF1QyxDQUFFLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsS0FBWCxDQUFGLENBQW9CLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsTUFBWCxDQUFwQixDQUF1QyxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLEtBQVgsQ0FBdkMsQ0FBeUQsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxLQUFYLENBQXpELENBQTJFLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsT0FBWCxDQUEzRSxDQUF2QyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFrQyxDQUNaLE1BQU0sQ0FBRSxDQUNKLENBQUMsQ0FBRSxDQUNDLFdBQVcsQ0FBRSxJQURkLENBREMsQ0FJSixDQUFDLENBQUUsQ0FDQyxXQUFXLENBQUUsSUFEZCxDQUpDLENBREksQ0FBbEMsQ0FVQztBQUNOLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUFpQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsTUFBWCxDQUFELENBQW9CLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsS0FBWCxDQUFwQixDQUFzQyxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLFVBQVgsQ0FBdEMsQ0FBNkQsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxLQUFYLENBQTdELENBQStFLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsV0FBWCxDQUEvRSxDQVg1QixDQWVKO0FBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUE2QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXZDLENBQ0EsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGtCQUExQixDQUErQyxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUF6RCxDQUNBLE1BQU0sQ0FBQyxhQUFQLENBQXdCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixZQUFsRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUE2QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsU0FBdkQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFdBQTFELENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGdCQUFsRCxDQUNBLE1BQU0sQ0FBQyxhQUFQLENBQXVCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUFqRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFxQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBL0QsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLENBQXVDLENBQXZDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFWLENBQTRCLENBQTVCLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsRUFBb0MsU0FBeEMsQ0FBbUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLEtBQXJDLENBQ25ELEdBQUksTUFBTSxDQUFDLGNBQVAsRUFBdUIsU0FBM0IsQ0FBc0MsTUFBTSxDQUFDLGNBQVAsQ0FBdUIsQ0FBdkIsQ0FDdEMsR0FBSSxNQUFNLENBQUMsYUFBUCxFQUFzQixTQUExQixDQUFxQyxNQUFNLENBQUMsYUFBUCxDQUFzQixDQUF0QixDQUNyQyxHQUFJLE1BQU0sQ0FBQyxhQUFQLEVBQXNCLFNBQTFCLENBQXFDLE1BQU0sQ0FBQyxhQUFQLENBQXNCLENBQXRCLENBRXJDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxxQkFBaEMsQ0FBd0QsS0FBeEQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsdUJBQWhDLENBQTBELENBQTFELENBQ0EsR0FBSSxDQUFBLFVBQVUsQ0FBRyxDQUFDLGtCQUFELENBQWpCLENBRUEsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsRUFBbUIsU0FBdkIsQ0FBa0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLGNBQWMsQ0FBQyxNQUFmLEVBQWxCLENBQ2xDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixPQUFyQixDQUErQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXpDLENBRUcsR0FBSSxDQUFBLFNBQVMsQ0FBQyxDQUNILENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsYUFBWCxDQURHLENBRUgsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxlQUFYLENBRkcsQ0FHSCxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLGNBQVgsQ0FIRyxDQUlILENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsV0FBWCxDQUpHLENBS0gsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxlQUFYLENBTEcsQ0FBZCxDQVFIO0FBQ0EsR0FBSSxDQUFBLGdCQUFnQixDQUFHLENBQUMsR0FBRyxDQUFFLENBQUMsQ0FBQyxPQUFPLHlCQUFSLENBQWtDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5DLENBQUQsQ0FBNkMsQ0FBQyxJQUFJLENBQUMsa0JBQU4sQ0FBeUIsS0FBSyxDQUFDLEVBQS9CLENBQTdDLENBQTFDLENBQUQsQ0FBTixDQUFvSSxPQUFPLENBQUUsU0FBN0ksQ0FBdUosVUFBVSxDQUFFLG9CQUFuSyxDQUF3TCxRQUFRLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUE1TSxDQUFvTixNQUFNLENBQUcsTUFBTSxDQUFDLE9BQXBPLENBQ3ZCLGFBQWEsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BREgsQ0FDWSxXQUFXLENBQUMsZUFEeEIsQ0FDd0MsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUQ3RSxDQUV2QixnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBRmQsQ0FFK0IsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLGNBRnZELENBRXNFLGVBQWUsQ0FBQyxNQUFNLENBQUMsYUFGN0YsQ0FFMkcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFGdEksQ0FFdUosV0FBVyxDQUFDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUY3TCxDQUU0TSxNQUFNLENBQUMsVUFGbk4sQ0FBdkIsQ0FHQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBcEIsQ0FBb0MseUJBQXlCLENBQUMsY0FBMUIsQ0FBeUMsZ0JBQXpDLENBQXBDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE9BQXBCLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFoRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBdEMsQ0FHQSxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0QyxFQUFpRCxNQUFNLENBQUMsRUFBeEQsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixFQUFzQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBcEIsQ0FBK0IsWUFBL0IsRUFBNkMsQ0FBdkYsQ0FBMEYsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFNBQXJCLENBQWlDLElBQWpDLENBQTFGLElBQ0ssQ0FBQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsU0FBckIsQ0FBaUMsS0FBakMsQ0FFTCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBK0IsS0FBL0IsQ0FNRixHQUFJLENBQUEsUUFBSixDQUNBLEdBQUksTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQTlCLENBQStDLFFBQVEsQ0FBRyxjQUFjLENBQUMsR0FBZixDQUFtQiw2Q0FBbkIsQ0FBWCxDQUEvQyxJQUNLLENBQUEsUUFBUSxDQUFHLGNBQWMsQ0FBQyxHQUFmLENBQW1CLGdEQUFuQixDQUFYLENBRUwsUUFBUSxDQUFDLE1BQVQsQ0FBZ0IsUUFBUSxDQUFDLFFBQUQsQ0FBUixDQUFtQixNQUFuQixDQUFoQixFQUlILENBbk9vQixDQUFqQixDQW1PQTtBQUVGLE1BQU8sQ0FDRyxRQUFRLENBQUUsR0FEYixDQUVHO0FBQ0EsVUFBVSxDQUFFLFVBSGYsQ0FJRyxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLDZJQUNoQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsaUJBQW5CLENBQXVDLElBQXZDLENBR0YsR0FBSSxDQUFBLGlCQUFpQixDQUFHLENBQ3RCLFVBQVUsQ0FBRSxDQURVLENBRXRCLFFBQVEsQ0FBRSxFQUZZLENBR3RCLElBQUksQ0FBRSxJQUhnQixDQUF4QixDQU9QLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixjQUFuQixDQUFvQyxVQUFVLENBQzFDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixRQUFuQixDQUErQixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsUUFBbkIsQ0FBOEIsS0FBOUIsQ0FBcUMsSUFBcEUsQ0FDSCxDQUZELENBS0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFFBQW5CLENBQThCLFNBQVMsSUFBVCxDQUFjLElBQWQsQ0FBbUIsS0FBbkIsQ0FBeUIsR0FBekIsQ0FDOUIsQ0FDWSxlQUFlLENBQUMsUUFBaEIsQ0FBeUIsSUFBekIsQ0FBOEIsSUFBOUIsQ0FBbUMsS0FBbkMsRUFDUixHQUFJLEdBQUosQ0FBUyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixHQUE1QixDQUFnQyxNQUFoQyxFQUNaLENBSkQsQ0FTQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxFQUFxQixTQUF6QixDQUNJLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFxQixDQUNqQixLQUFLLENBQUUsRUFEVSxDQUVqQixnQkFBZ0IsQ0FBQyxPQUZBLENBR2pCLFNBQVMsQ0FBQyxFQUhPLENBQXJCLENBTUosR0FBTSxDQUFBLFdBQVcsQ0FBRSxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsYUFBekIsQ0FBdUMsR0FBdkMsQ0FBMkMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxPQUF2RSxDQUVBLEdBQUksQ0FBQSxVQUFVLENBQUUsS0FBSyxDQUFDLEdBQU4sQ0FBVSxVQUFWLENBQXFCLFdBQXJCLENBQWlDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFwRCxDQUFoQixDQUNBLEdBQU0sQ0FBQSxjQUFjLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsSUFBMUMsQ0FHSixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsYUFBbkIsQ0FBbUMsRUFBbkMsQ0FFQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsbUJBQW5CLENBQXVDLFVBQVUsQ0FFN0MsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsYUFBbkIsQ0FBaUMsVUFBckMsQ0FBaUQsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGFBQW5CLENBQWlDLFVBQWpDLEdBQ3BELENBSEQsQ0FPSztBQUNIO0FBQ0E7QUFDRixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsd0JBQW5CLENBQThDLFNBQVUsT0FBVixDQUFrQixPQUFsQixDQUEwQixPQUExQixDQUFrQyxRQUFsQyxDQUEyQyxXQUEzQyxDQUF3RCxDQUVsRyxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBMkMsSUFBM0MsRUFBaUQsU0FBckQsQ0FBZ0UsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUEyQyxJQUEzQyxDQUFrRCxFQUFsRCxDQUloRSxHQUFJLElBQUksQ0FBQyxJQUFMLENBQVUsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFVBQW5CLENBQThCLFFBQXhDLEVBQWtELE9BQXRELENBQ0EsQ0FDRSxPQUFPLENBQUcsSUFBSSxDQUFDLElBQUwsQ0FBVSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsVUFBbkIsQ0FBOEIsUUFBeEMsQ0FBVixDQUNELENBRUQsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUVBLEdBQUksUUFBUSxFQUFFLFNBQWQsQ0FFQSxDQUNFLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixRQUEvQixDQUEwQyxLQUFLLENBQUMsaUJBQU4sQ0FBd0IsUUFBbEUsQ0FDQSxRQUFRLENBQUUsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLFFBQXpDLENBQ0QsQ0FFRCxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBVCxFQUF5QixHQUE3QixDQUNBLG9CQUdHLEtBQUssQ0FBQyxHQUFOLENBQVUsYUFBVixDQUF3QixjQUF4QixDQUF1QyxjQUF2QyxDQUF1RCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBMUUsRUFDQSxRQUFBLEtBQUssQ0FBQyx3QkFBMEIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUFwQyxDQUFMLHdDQUEwRCxhQUExRCxHQUNBLEdBQUksQ0FBQSxRQUFRLFVBQUcsS0FBSyxDQUFDLHdCQUEwQixLQUFLLENBQUMsRUFBTixDQUFTLGNBQXBDLENBQVIsa0NBQUcsUUFBMEQsTUFBekUsQ0FDQTtBQUNBLEdBQUksQ0FBQSxLQUFLLENBQUcsRUFBWixDQUNBLEdBQUksV0FBSixDQUNBLENBQ0MsS0FBSyxDQUFDLFFBQU4sQ0FBaUIsV0FBakIsQ0FDQSxLQUFLLENBQUMsa0JBQU4sQ0FBMkIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxrQkFBcEMsQ0FDQSxLQUFLLENBQUMsZ0JBQU4sQ0FBeUIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGNBQTVDLENBRUEsQ0FDRCxHQUFJLFFBQUosQ0FDQSxrREFFSztBQUNBLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULHlCQUFzQixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsU0FBckQsa0VBQXNCLHNCQUEwQyxHQUFoRSwyQ0FBc0IsdUJBQStDLE1BQXpFLENBQWlGLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixtQkFBbkIsR0FBeUM7QUFBMUgsSUFDSyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFWLEVBQXVCLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixnQkFBcEIsRUFBc0MsVUFBakUsQ0FBNkUsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLFNBQS9CLENBQXlDLEdBQXpDLENBQStDLElBQS9DLENBQ2xGLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBNkMsSUFBN0MsQ0FDQTtBQUNBO0FBRUEsZUFBZSxDQUFDLHVCQUFoQixDQUF3QyxLQUFLLENBQUMsRUFBTixDQUFTLE9BQWpELENBQTBELEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBbkUsQ0FBa0YsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGdCQUFyRyxDQUF3SCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsUUFBdkosQ0FBaUssS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFNBQW5CLENBQTZCLE9BQTdCLENBQXFDLE1BQXRNLENBQThNLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixlQUFqTyxDQUFpUCxLQUFLLENBQUMsRUFBTixDQUFTLE9BQTFQLENBQWtRLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQix3QkFBdFIsQ0FBK1MsS0FBSyxDQUFDLGtCQUFOLENBQXlCLGVBQXhVLENBQXdWLEtBQXhWLEVBQStWLElBQS9WLENBRVYsU0FBUyxJQUFULENBQWUsd0JBR2UsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUEyQyxVQUEzQyxxQkFBd0QsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUFsRSw2Q0FBd0QsbUJBQW1CLFVBQTNFLENBQ0E7QUFHQTtBQUNBO0FBRUEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLFVBQS9CLENBQTRDLElBQUksQ0FBQyxJQUFqRCxDQUNBLEtBQUssQ0FBQyxHQUFOLENBQVUsYUFBVixDQUF3QixjQUF4QixDQUF1QyxjQUF2QyxDQUF1RCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBMUUsRUFFQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTJDLElBQTNDLENBQWtELElBQUksQ0FBQyxJQUFMLENBQVUsSUFBNUQsQ0FDQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixnQkFBcEIsRUFBc0MsTUFBMUMsQ0FBa0QsMkJBQzNFLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBMkMsSUFBM0MsQ0FBa0QsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLG9CQUFuQixDQUF3QyxJQUFJLENBQUMsSUFBTCxDQUFVLElBQWxELENBQWxELENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGFBQW5CLENBQWlDLE9BQWpDLENBQXlDLE1BQXpDLHdCQUFrRCxLQUFLLENBQUMsRUFBTixDQUFTLGFBQTNELGdEQUFrRCxzQkFBd0IsUUFBMUUsQ0FBbUY7QUFDbkYsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGdCQUFuQixDQUFzQyxJQUF0QyxDQUEyQztBQUM1QyxDQUMwQjtBQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixRQUFuQixDQUE4QixJQUFJLENBQUMsSUFBTCxDQUFVLElBQVYsQ0FBZSxJQUE3QyxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixZQUFuQixDQUFrQyxJQUFJLENBQUMsSUFBTCxDQUFVLElBQVYsQ0FBZSxRQUFqRCxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixVQUFuQixDQUE4QixJQUFJLENBQUMsSUFBTCxDQUFVLElBQVYsQ0FBZSxLQUE3QyxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixXQUEvQixDQUEyQyxDQUEzQyxDQUNBLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFVBQW5CLENBQThCLENBQTlCLEVBQW1DLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixXQUEvQixFQUE0QyxDQUFuRixDQUFzRixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsV0FBL0IsQ0FBMkMsQ0FBM0MsQ0FDdEYsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFFBQW5CLENBQThCLElBQUksQ0FBQyxJQUFMLENBQVUsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFVBQW5CLENBQThCLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixRQUF2RSxDQUE5QixDQUVBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBMkMsVUFBM0MsQ0FBc0QsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFVBQXpFLENBQ0EsR0FBSSxDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixVQUF4QixDQUFvQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsVUFBbkIsQ0FBOEIsSUFBOUIsQ0FDcEMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHNCQUFuQixDQUE0QyxJQUE1QyxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBNkMsS0FBN0MsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBaUMsS0FBakMsQ0FFQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixnQkFBcEIsRUFBc0MsVUFBMUMsQ0FBc0QsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixnQkFBbkQsQ0FBcUUsSUFBSSxDQUFDLElBQTFFLEVBRXpELENBckNqQixDQXFDa0IsU0FBUyxLQUFULENBQWUsQ0FDZCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTZDLEtBQTdDLENBQ0wsQ0F4Q2QsRUF5Q0MsQ0FuRE4sSUFtRFUsQ0FDSixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsRUFBTixDQUFTLFFBQXJDLENBQThDLFNBQTlDLEVBQ0EsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTZDLEtBQTdDLENBQW1ELENBQS9ELENBQVIsQ0FDQSxDQUNQLENBdkVGLElBd0VNLElBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUFULEVBQXlCLEdBQTdCLENBQ0wsbURBQ0MsR0FBSSxDQUFBLGFBQWEsQ0FBQyxDQUFsQixDQUNBLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFFBQW5CLEVBQTZCLEdBQWpDLENBQXNDLGFBQWEsQ0FBRyxLQUFLLENBQUMsY0FBdEIsQ0FBdEMsSUFDSyxDQUFBLGFBQWEsQ0FBRyxLQUFLLENBQUMsYUFBdEIsQ0FDTCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTJDLElBQTNDLENBQWdELE1BQWhELENBQXVELENBQXZELENBQ0E7QUFDQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCwwQkFBc0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLFNBQXJELG1FQUFzQix1QkFBMEMsR0FBaEUsMkNBQXNCLHVCQUErQyxNQUF6RSxDQUFpRixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsU0FBL0IsQ0FBeUMsR0FBekMsQ0FBNkMsTUFBN0MsQ0FBb0QsQ0FBcEQsQ0FDakYsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUE2QyxJQUE3QyxDQUNBLG9CQUFvQixDQUFDLDRCQUFyQixDQUFrRCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsa0JBQXJFLENBQXdGLE9BQXhGLENBQWdHLE9BQWhHLENBQXdHLE9BQXhHLENBQWdILFFBQWhILENBQXlILElBQXpILENBQThILEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBdkksQ0FBc0osYUFBdEosQ0FBb0ssS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFFBQXZMLEVBQWlNLElBQWpNLENBQXNNLFNBQVMsSUFBVCxDQUFlLENBRTNMLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBMkMsSUFBM0MsQ0FBa0QsSUFBSSxDQUFDLElBQXZELENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGdCQUFuQixHQUVBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixzQkFBbkIsQ0FBNEMsSUFBNUMsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTZDLEtBQTdDLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFFBQW5CLENBQThCLElBQUksQ0FBQyxJQUFMLENBQVUsSUFBeEMsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsWUFBbkIsQ0FBa0MsSUFBSSxDQUFDLElBQUwsQ0FBVSxRQUE1QyxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixVQUFuQixDQUE4QixJQUFJLENBQUMsSUFBTCxDQUFVLEtBQXhDLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLFdBQS9CLENBQTJDLE9BQTNDLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFFBQW5CLENBQThCLElBQUksQ0FBQyxJQUFMLENBQVUsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFVBQW5CLENBQThCLFFBQXhDLENBQTlCLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLFFBQS9CLENBQTBDLFFBQTFDLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUEyQyxVQUEzQyxDQUFzRCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsVUFBekUsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBaUMsS0FBakMsQ0FDQSx5QkFBeUIsQ0FBQyxPQUExQixDQUFrQyxDQUNsQyxHQUFHLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFOLENBQXFCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQU4sQ0FBbUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsT0FBbEMsQ0FBRCxDQUE0QyxDQUFDLElBQUksQ0FBQyxrQkFBTixDQUF5QixLQUFLLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLHVCQUE5RCxDQUE1QyxDQUNoQyxDQUFDLElBQUksQ0FBQyxtQkFBTixDQUEwQixLQUFLLENBQUUsSUFBakMsQ0FEZ0MsQ0FDTyxDQUFDLElBQUksQ0FBQyxvQkFBTixDQUEyQixLQUFLLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUEyQyxJQUE1RSxDQURQLENBQTNCLENBQUQsQ0FENkIsQ0FFMkYsUUFBUSxDQUFFLEtBQUssQ0FBQyxFQUFOLENBQVMsT0FGOUcsQ0FFc0gsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUYzSixDQUU0SyxlQUFlLENBQUMsS0FBSyxDQUFDLGFBRmxNLENBQWxDLEVBSUEsVUFBVSxDQUFDLFVBQVgsQ0FBc0IsWUFBWSxLQUFLLENBQUMsRUFBTixDQUFTLGNBQXJCLENBQW9DLFdBQTFELENBQXNFLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBMkMsSUFBakgsRUFDQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixnQkFBcEIsRUFBc0MsVUFBMUMsQ0FBc0QsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixnQkFBbkQsQ0FBcUUsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUF4RixFQUV2RCxDQXRCekIsQ0FzQjBCLFNBQVMsS0FBVCxDQUFlLENBQ2YsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUE2QyxLQUE3QyxDQUNOLENBekJwQixFQTJCQSxDQUVELENBbElMLENBb0lPLDRCQUNILEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix3QkFBbkIsQ0FBOEMsVUFDOUMsNEJBQ00sS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUE2QyxJQUE3QyxDQUNBLEdBQUksQ0FBQSxJQUFJLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUMsQ0FDQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsU0FBbkIsQ0FBNkIsT0FBN0IsQ0FBcUMsTUFBckMseUJBQThDLEtBQUssQ0FBQyxFQUFOLENBQVMsYUFBdkQsaURBQThDLHVCQUF3QixVQUF0RSxDQUVBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix3QkFBbkIsQ0FBNEMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFFBQS9ELENBQXdFLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixZQUEzRixDQUF3RyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsV0FBdkksQ0FBbUosS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLFFBQWxMLENBQTJMLElBQTNMLEVBQ0M7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFDUyxDQTNCRCxDQTZCQTtBQUNBO0FBQ0EsR0FBSSxVQUFVLENBQUMsT0FBWCxDQUFtQixpQkFBbkIsRUFBc0MsQ0FBdEMsRUFBMkMsQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQXpELENBQ0EsQ0FDSSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsYUFBbkIsQ0FBaUMsSUFBakMsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBaUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsUUFBcEQsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsU0FBbkIsQ0FBNkIsT0FBN0IsQ0FBcUMsTUFBckMsQ0FBNEMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLE9BQTNFLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQXNCLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixTQUFuQixDQUE2QixPQUE3QixDQUFxQyxNQUEzRCxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixvQkFBbkIsQ0FBMEMsSUFBMUMsQ0FDQTtBQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixVQUFuQixDQUE4QixJQUE5QixDQUNBO0FBQ0E7QUFDSCxDQVhELElBYUEsQ0FDRSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsUUFBL0IsQ0FBd0MsQ0FBQyxFQUFELENBQXhDLENBQ0QsQ0FFRCxHQUFJLENBQUEsYUFBYSxDQUFHLFFBQWhCLENBQUEsYUFBZ0IsQ0FBUyxJQUFULENBQWMsQ0FDOUIsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsZUFBbkIsQ0FBcUMsSUFBckMsQ0FDQSxVQUFVLENBQUMsT0FBWCxDQUFtQixlQUFuQixDQUFtQyxjQUFuQyxFQUNILENBSEQsQ0FLQSxHQUFJLENBQUEsb0JBQW9CLENBQUcsS0FBSyxDQUFDLEdBQU4sQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLGNBQW5DLENBQWtELGFBQWxELENBQTNCLENBRUEsR0FBSSxDQUFBLGlCQUFpQixDQUFHLFFBQXBCLENBQUEsaUJBQW9CLENBQVMsSUFBVCxDQUFjLENBQ2xDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLGVBQW5CLENBQXFDLElBQXJDLENBQ0EsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsZUFBbkIsQ0FBbUMsa0JBQW5DLEVBQ0gsQ0FIRCxDQUtBLEdBQUksQ0FBQSx3QkFBd0IsQ0FBRyxLQUFLLENBQUMsR0FBTixDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBbUMsa0JBQW5DLENBQXNELGlCQUF0RCxDQUEvQixDQUVBLEdBQUksQ0FBQSxXQUFXLENBQUcsUUFBZCxDQUFBLFdBQWMsQ0FBUyxJQUFULENBQWUsQ0FDN0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLFNBQS9CLENBQXlDLEdBQXpDLENBQStDLElBQUksQ0FBQyxLQUFwRCxDQUNILENBRkQsQ0FJQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixnQkFBcEIsRUFBc0MsU0FBdEMsRUFBbUQsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLGdCQUFwQixFQUFzQyxJQUE3RixDQUFtRyxDQUMvRixHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixnQkFBcEIsRUFBc0MsRUFBMUMsQ0FBOEMsQ0FDMUMsR0FBSSxDQUFBLGVBQWUsQ0FBRyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsZ0JBQTFDLENBRUEsR0FBSSxDQUFBLGlCQUFpQixDQUFHLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixrQkFBcEIsQ0FBdUMsZ0JBQXZDLENBQXdELEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixnQkFBcEcsQ0FDQSxHQUFJLENBQUEsUUFBUSxDQUFHLEtBQUssQ0FBQyxHQUFOLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBc0MsZUFBdEMsQ0FBc0QsY0FBdEQsQ0FBcUUsV0FBckUsQ0FBZixDQUNILENBQ0osQ0FHRCxHQUFJLENBQUEsb0JBQW9CLENBQUcsUUFBdkIsQ0FBQSxvQkFBdUIsQ0FBUyxJQUFULENBQzNCLENBQ0ksVUFBVSxDQUFDLE9BQVgsQ0FBbUIsZUFBbkIsQ0FBcUMsSUFBckMsQ0FFQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsbUJBQW5CLEdBRUEsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsZUFBbkIsQ0FBbUMsYUFBbkMsQ0FBaUQsSUFBakQsRUFDSCxDQVBELENBU0EsR0FBSSxDQUFBLG1CQUFtQixDQUFHLEtBQUssQ0FBQyxHQUFOLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFtQyxhQUFuQyxDQUFpRCxvQkFBakQsQ0FBMUIsQ0FDRCxLQUFLLENBQUMsV0FBTixDQUFvQixvQkFBcEIsQ0FHQyxHQUFJLENBQUEsY0FBYyxDQUFHLFFBQWpCLENBQUEsY0FBaUIsQ0FBUyxJQUFULENBQ3JCLENBRUk7QUFFQSxHQUFJLENBQUEsTUFBSixDQUVBLE1BQU0sQ0FBRyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsYUFBL0IsQ0FBNkMsTUFBdEQsQ0FFQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixhQUEvQixDQUE2QyxNQUE3QyxDQUFvRCxDQUF4RCxDQUEwRCxDQUN0RDtBQUNBLEdBQUksQ0FBQSxHQUFKLENBQVEsR0FBUixDQUNBLEdBQUksQ0FBQSxTQUFTLENBQUcsSUFBSSxDQUFDLFNBQUQsQ0FBSixDQUFnQixXQUFoQixDQUFoQixDQUNBLEdBQUksU0FBUyxFQUFFLFNBQWYsQ0FBMEIsU0FBUyxDQUFHLElBQVosQ0FDMUIsR0FBSSxDQUFBLEtBQUssQ0FBRyxJQUFJLENBQUMsS0FBTCxDQUFXLFNBQVgsQ0FBWixDQUlBLEdBQUksTUFBTSxDQUFDLElBQVAsQ0FBWSxLQUFaLEVBQW1CLE1BQW5CLENBQTBCLENBQTlCLENBQ0EsQ0FDSSxNQUFNLENBQUcsTUFBTSxDQUFDLE9BQVAsQ0FBZSxLQUFmLEVBQXNCLEdBQXRCLENBQTJCLFVBQXVCLHFFQUFULElBQVMsZ0NBQXJCLEdBQXFCLFdBQWhCLEdBQWdCLFdBRXBELEdBQUksR0FBRyxFQUFFLGVBQVQsQ0FBMEIsR0FBRyxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLE1BQXJDLENBQzFCLE1BQU8sQ0FBQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsYUFBL0IsQ0FBNkMsTUFBN0MsQ0FBb0QsU0FBQyxLQUFELENBQVEsSUFBUixRQUFrQixDQUFBLElBQUksQ0FBQyxHQUFELENBQUosRUFBYSxHQUFiLENBQW1CLEtBQUssQ0FBRyxDQUEzQixDQUErQixLQUFqRCxFQUFwRCxDQUE2RyxDQUE3RyxDQUFQLENBRU4sQ0FMUSxDQUFULENBTUgsQ0FFSixDQUNELEdBQUksQ0FBQSxLQUFLLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsUUFBL0IsQ0FDQSxHQUFJLE1BQU0sRUFBRSxTQUFaLENBQXVCLEtBQUssQ0FBQyxlQUFELENBQUwsQ0FBeUIsTUFBekIsQ0FBdkIsSUFDSyxDQUFBLEtBQUssQ0FBQyxlQUFELENBQUwsQ0FBeUIsSUFBekIsQ0FDTCxVQUFVLENBQUMsT0FBWCxDQUFtQixlQUFuQixDQUFxQyxLQUFyQyxDQUVBLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixNQUFwQixDQUEyQixJQUFJLENBQUMsV0FBaEMsRUFBNkMsT0FBN0MsQ0FBcUQsSUFBSSxDQUFDLFlBQTFELEVBQXdFLFNBQXhFLENBQW9GLElBQXBGLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLE1BQXBCLENBQTJCLElBQUksQ0FBQyxXQUFoQyxFQUE2QyxPQUE3QyxDQUFxRCxJQUFJLENBQUMsWUFBMUQsRUFBd0UsTUFBeEUsQ0FBaUYsS0FBSyxDQUFDLGVBQUQsQ0FBdEYsQ0FDQSxLQUFLLENBQUMsYUFBTixDQUFvQixLQUFwQixDQUEwQixLQUExQixFQUNBO0FBQ0EsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsZUFBbkIsQ0FBbUMsZUFBbkMsRUFDSCxDQXZDRCxDQXdDQSxHQUFJLENBQUEsb0JBQW9CLENBQUUsS0FBSyxDQUFDLEdBQU4sQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLGVBQW5DLENBQW1ELGNBQW5ELENBQTFCLENBRUQsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGNBQW5CLENBQWtDLFNBQVMsaUJBQVQsQ0FBMkIsbUJBQTNCLENBQStDLFlBQS9DLENBQ2xDLENBQ0s7QUFDQSxHQUFLLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGlCQUF6QixDQUE2QztBQUM3QyxDQUNHLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixpQkFBbkIsQ0FBdUMsaUJBQXZDLENBQ0YsQ0FIRCxJQUdPLElBQUksWUFBWSxFQUFFLE9BQWxCLENBQTJCLENBQy9CLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGlCQUFuQixFQUFzQyxDQUF0QyxFQUEyQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsaUJBQW5CLEVBQXNDLGlCQUFyRixDQUNLLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixpQkFBbkIsQ0FBdUMsaUJBQXZDLENBREwsSUFHSSxDQUFBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixpQkFBbkIsQ0FBcUMsQ0FBckMsQ0FDTixDQUNELEdBQUksbUJBQUosQ0FBeUIsS0FBSyxDQUFDLEtBQU4sQ0FBWSxrQkFBWixDQUErQixLQUFLLENBQUMsRUFBckMsRUFFekIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFlBQW5CLENBQWlDLFlBQWpDLENBQ0gsQ0FmRixDQWtCSCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsa0JBQW5CLENBQXdDLFNBQVMsUUFBVCxDQUFtQixRQUFuQixDQUE0QixDQUNoRSxHQUFJLENBQUEsR0FBRyxDQUFHLEtBQUssQ0FBQyxFQUFOLENBQVMsT0FBVCxDQUFpQixRQUFqQixDQUFWLENBQ0EsR0FBSSxHQUFHLENBQUMsWUFBSixFQUFrQixNQUF0QixDQUE2QiwyQkFFekIsR0FBSSxDQUFBLFNBQVMsQ0FBSSxLQUFLLENBQUMsR0FBTixDQUFVLFFBQVYsQ0FBbUIsS0FBSyxDQUFDLGtCQUFOLENBQXlCLGFBQTVDLENBQWpCLENBQ0EsR0FBSSxDQUFBLG9CQUFvQix3QkFBRyxTQUFTLENBQUMsS0FBVixDQUFnQixZQUFuQixnREFBRyxzQkFBOEIsZUFBekQsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsUUFBbkIsQ0FBNEIsR0FBRyxDQUFDLEVBQWhDLENBQW1DLENBQW5DLENBQXFDLG9CQUFyQyxDQUEwRCxHQUFHLENBQUMsWUFBOUQsRUFFSCxDQUVELEdBQUksR0FBRyxDQUFDLFlBQUosRUFBa0IsTUFBdEIsQ0FBNkIsQ0FDekIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFFBQW5CLENBQTRCLEdBQTVCLEVBRUgsQ0FDSixDQWRELENBZ0JBO0FBR0UsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGlCQUFuQixDQUF1QyxTQUFTLFVBQVQsQ0FBcUIsVUFBckIsQ0FBZ0MsUUFBaEMsQ0FBeUMsQ0FFMUU7QUFDQSxHQUFJLENBQUEsUUFBUSxDQUFHLEVBQUUsQ0FBQyxLQUFILEVBQWYsQ0FDQSxLQUFLLENBQUMsZUFBTixDQUFzQixJQUF0QixDQUNBLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxHQUFJLENBQUEsT0FBSixDQUdBLEdBQUksVUFBVSxFQUFFLFNBQWhCLENBQTJCLFVBQVUsQ0FBRyxLQUFLLENBQUMsaUJBQU4sQ0FBd0IsVUFBckMsQ0FDM0IsR0FBSSxRQUFRLEVBQUUsU0FBZCxDQUF5QixRQUFRLENBQUcsS0FBSyxDQUFDLGlCQUFOLENBQXdCLFFBQW5DLENBRXpCLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUEyQyxJQUEvQyxDQUFxRCxDQUM3QyxLQUFLLENBQUMsVUFBTixDQUFrQixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTJDLElBQTNDLENBQWdELE1BQWxFLENBQ0EsS0FBSyxDQUFDLGlCQUFOLENBQXdCLGNBQXhCLENBQXVDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBMkMsSUFBM0MsQ0FBZ0QsTUFBdkYsQ0FDQSxLQUFLLENBQUMsaUJBQU4sQ0FBd0IsYUFBeEIsQ0FBd0MsSUFBSSxDQUFDLElBQUwsQ0FBVSxLQUFLLENBQUMsaUJBQU4sQ0FBd0IsY0FBeEIsQ0FBdUMsUUFBakQsQ0FBeEMsQ0FDUCxDQUVELEdBQUksS0FBSyxDQUFDLFVBQU4sQ0FBaUIsQ0FBckIsQ0FBdUIsQ0FDbkIsR0FBSSxJQUFJLENBQUMsSUFBTCxDQUFVLEtBQUssQ0FBQyxVQUFOLENBQWlCLFFBQTNCLEVBQXFDLFVBQXpDLENBQ0ksT0FBTyxDQUFHLElBQUksQ0FBQyxJQUFMLENBQVUsS0FBSyxDQUFDLFVBQU4sQ0FBaUIsUUFBM0IsQ0FBVixDQUNQLENBRUEsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTJDLElBQS9DLENBQ08sS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLE9BQW5CLENBQTZCLENBQUMsT0FBTyxDQUFHLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBMkMsSUFBM0MsQ0FBZ0QsS0FBaEQsQ0FBdUQsQ0FBQyxVQUFVLENBQUUsQ0FBYixFQUFrQixRQUF6RSxDQUFtRixVQUFVLENBQUcsUUFBaEcsQ0FBWCxDQUE3QixDQURQLElBR08sQ0FBQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsT0FBbkIsQ0FBNkIsRUFBN0IsQ0FDUCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsT0FBbkIsQ0FBMkIsT0FBM0IsQ0FBbUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUEyQyxVQUE5RSxDQUNBO0FBQ0E7QUFDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsVUFBL0IsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsT0FBbkIsQ0FBMkIsUUFBM0IsQ0FBc0MsUUFBdEMsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsT0FBbkIsQ0FBMkIsYUFBM0IsQ0FBMkMsS0FBSyxDQUFDLGlCQUFOLENBQXdCLGFBQW5FLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLE9BQW5CLENBQTJCLEtBQTNCLENBQXFDLEtBQUssQ0FBQyxVQUEzQyxDQUVBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixXQUEvQixDQUE2QyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBaEUsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsUUFBL0IsQ0FBMEMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLE9BQW5CLENBQTJCLFFBQXJFLENBRUE7QUFDQSxHQUFJLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGFBQXhCLENBQXVDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixjQUFuQixHQUN2QyxRQUFRLENBQUMsT0FBVCxDQUFpQixDQUFDLElBQUksQ0FBRSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsT0FBMUIsQ0FBakIsRUFFRCxNQUFPLENBQUEsUUFBUSxDQUFDLE9BQWhCLENBQ0wsQ0EzQ0QsQ0E2Q0k7QUFDRixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsbUJBQW5CLENBQXlDLFNBQVUsR0FBVixDQUFlLDBFQUdoRCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsdUJBQS9CLENBQXlELENBQXpELENBRUU7QUFDRixHQUFJLENBQUEsbUJBQUosQ0FBeUIsYUFBekIsQ0FDQSxtQkFBbUIsQ0FBQyxJQUFwQixDQUNDO0FBQ0MsR0FBSSx5QkFBQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsZ0dBQWdDLHdCQUFoQyxnR0FBMEQsVUFBMUQsd0VBQXNFLGlCQUF0RSxHQUEyRixTQUEvRixDQUNNLG1CQUFtQixDQUFHLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQix3QkFBL0IsQ0FBd0QsVUFBeEQsQ0FBbUUsaUJBQW5FLENBQXVGLEtBQTdHLENBQ04sR0FBTSxHQUFHLENBQUMsY0FBSixDQUFtQixtQkFBbkIsQ0FBTixDQUFnRCxDQUMzQyxhQUFhLENBQUcsR0FBRyxDQUFDLG1CQUFELENBQW5CLENBQ0EsR0FBSSxhQUFhLEVBQUUsSUFBbkIsQ0FDQSxDQUNDLGFBQWEsQ0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLEdBQS9CLENBQW1DLG1CQUFwQyxDQUFuQixDQUVBLENBQ0wsQ0FQRCxJQU9LLENBRUgsYUFBYSxDQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsR0FBL0IsQ0FBbUMsbUJBQXBDLENBQW5CLENBQ0QsQ0FFRDtBQUNEO0FBQ0EsR0FBSyxHQUFHLENBQUMsVUFBSixFQUFrQixLQUF2QixDQUFpQyxDQUMzQjtBQUNBLEdBQUssYUFBYSxDQUFHLENBQWhCLEVBQXNCLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBcEMsQ0FBK0MsQ0FDdEMsR0FBSSxDQUFBLEdBQUcsQ0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsYUFBL0IsQ0FBNkMsT0FBN0MsQ0FBdUQsYUFBdkQsQ0FBWCxDQUNBLEdBQUksR0FBRyxFQUFJLENBQUMsQ0FBWixDQUFnQixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsYUFBL0IsQ0FBNkMsTUFBN0MsQ0FBb0QsR0FBcEQsQ0FBd0QsQ0FBeEQsRUFDeEIsQ0FIRCxJQUdNLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQWQsQ0FBMEIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLGFBQS9CLENBQTZDLE1BQTdDLENBQW9ELENBQXBELENBQ3JDLENBTkQsSUFPSSxJQUFJLGFBQUosQ0FBbUIsQ0FDaEIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLHVCQUEvQixDQUF5RCxhQUF6RCxDQUNBLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULEVBQXNCLElBQTFCLENBQWdDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixhQUEvQixDQUE2QyxJQUE3QyxDQUFrRCxhQUFsRCxFQUFoQyxJQUNTLENBQUEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLGFBQS9CLENBQThDLENBQUMsYUFBRCxDQUE5QyxDQUVUO0FBR0gsQ0FFSCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IscUJBQS9CLENBQXVELEdBQUcsQ0FBQyxVQUEzRCxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixzQkFBL0IsQ0FBd0QsR0FBeEQsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsZUFBbkIsQ0FBb0MsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxPQUF4QixDQUFnQyxPQUFPLENBQUUsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLGFBQXhFLENBQXBDLENBSUEseUJBQXlCLENBQUMsT0FBMUIsa0JBQ0ksR0FBRyxDQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQU4sQ0FBZ0MsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBTixDQUFtQixLQUFLLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxPQUFsQyxDQUFELENBQTRDLENBQUMsSUFBSSxDQUFDLGtCQUFOLENBQXlCLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsdUJBQTlELENBQ3RGO0FBRDBDLENBRXZDLENBQUMsSUFBSSxDQUFDLG1CQUFOLENBQTJCLEtBQUssQ0FBRSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsYUFBakUsQ0FGdUMsQ0FFeUMsQ0FBQyxJQUFJLENBQUMsb0JBQU4sQ0FBMkIsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBMkMsSUFBNUUsQ0FGekMsQ0FBdEMsQ0FBRCxDQURULENBS1UsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGdCQUw5QyxDQUsrRCxRQUFRLENBQUUsS0FBSyxDQUFDLEVBQU4sQ0FBUyxPQUxsRixDQUswRixXQUFXLENBQUMsS0FBSyxDQUFDLGtCQUFOLENBQXlCLGFBTC9ILENBSzZJLGVBQWUsQ0FBQyxLQUFLLENBQUMsYUFMbkssZ0JBSzZMLEtBQUssQ0FBQyxrQkFBTixDQUF5QixhQUx0TixHQVFBLEtBQUssQ0FBQyxHQUFOLENBQVUsYUFBVixDQUF3QixjQUF4QixDQUF1QyxrQkFBdkMsQ0FBMkQsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLGFBQTFGLEVBQ1YsQ0F6REEsQ0EwREosS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGNBQW5CLENBQW9DLFNBQVMsR0FBVCxDQUFhLFNBQWIsQ0FBdUIsV0FBdkIsQ0FBbUMsQ0FFbkUsR0FBSSxTQUFKLENBQWUsQ0FDWCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsYUFBL0IsQ0FBK0MsT0FBTyxDQUFDLElBQVIsQ0FBYSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTJDLElBQXhELENBQS9DLENBQ0csSUFBSSxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVYsQ0FBWSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUEyQyxJQUEzQyxDQUFnRCxNQUE5RCxDQUFxRSxDQUFDLEVBQXRFLENBQ0gsQ0FDSSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTJDLElBQTNDLENBQWdELFVBQWhELENBQTJELElBQTNELENBQ0gsQ0FDSixDQU5ELElBT0ssSUFBSSxXQUFKLENBQ0wsQ0FDSSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsYUFBL0IsQ0FBNkMsTUFBN0MsQ0FBb0QsQ0FBcEQsQ0FDQSxJQUFJLEdBQUksQ0FBQSxHQUFDLENBQUMsQ0FBVixDQUFZLEdBQUMsQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTJDLElBQTNDLENBQWdELE1BQTlELENBQXFFLEdBQUMsRUFBdEUsQ0FDQSxDQUNJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBMkMsSUFBM0MsQ0FBZ0QsVUFBaEQsQ0FBMkQsS0FBM0QsQ0FDSCxDQUVKLENBUkksSUFRQSwyRUFDQyxHQUFJLENBQUEsbUJBQUosQ0FBeUIsYUFBekIsQ0FDRSxtQkFBbUIsQ0FBQyxJQUFwQixDQUNDO0FBQ0MsR0FBSSx5QkFBQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsZ0dBQWdDLHdCQUFoQyxpR0FBMEQsVUFBMUQsMEVBQXNFLGlCQUF0RSxHQUEyRixTQUEvRixDQUNNLG1CQUFtQixDQUFHLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQix3QkFBL0IsQ0FBd0QsVUFBeEQsQ0FBbUUsaUJBQW5FLENBQXVGLEtBQTdHLENBQ04sR0FBTSxHQUFHLENBQUMsY0FBSixDQUFtQixtQkFBbkIsQ0FBTixDQUFnRCxDQUMzQyxhQUFhLENBQUcsR0FBRyxDQUFDLG1CQUFELENBQW5CLENBQ0EsR0FBSSxhQUFhLEVBQUUsSUFBbkIsQ0FDQSxDQUNDLGFBQWEsQ0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLEdBQS9CLENBQW1DLG1CQUFwQyxDQUFuQixDQUVBLENBQ0wsQ0FQRCxJQU9LLENBRUgsYUFBYSxDQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsR0FBL0IsQ0FBbUMsbUJBQXBDLENBQW5CLENBQ0gsQ0FFTCxHQUFJLEdBQUcsQ0FBQyxVQUFSLENBQW9CLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixhQUEvQixDQUE2QyxJQUE3QyxDQUFrRCxHQUFsRCxFQUFwQixJQUNLLElBQUksR0FBRyxDQUFDLFVBQUosR0FBaUIsS0FBckIsQ0FBNEIsQ0FDN0IsR0FBTSxDQUFBLGNBQWMsQ0FBRyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsYUFBL0IsQ0FBNkMsU0FBN0MsQ0FBdUQsU0FBQyxDQUFELFFBQVEsQ0FBQSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLEdBQS9CLENBQW1DLG1CQUFwQyxDQUFELEdBQThELGFBQXRFLEVBQXZELENBQXZCLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLGFBQS9CLENBQTZDLE1BQTdDLENBQW9ELGNBQXBELENBQW9FLENBQXBFLEVBQ0gsQ0FDSixDQUNELEtBQUssQ0FBQyxHQUFOLENBQVUsYUFBVixDQUF3QixjQUF4QixDQUF1QyxrQkFBdkMsQ0FBMkQsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLGFBQTFGLEVBQ0gsQ0ExQ0QsQ0EyQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHdCQUFuQixDQUE4QyxTQUFVLElBQVYsQ0FBZSxLQUFmLENBQXNCLENBR3hELEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQix1QkFBL0IsQ0FBeUQsQ0FBekQsQ0FFQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsYUFBL0IsQ0FBNkMsSUFBN0MsQ0FFQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IscUJBQS9CLENBQXVELElBQXZELENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLHNCQUEvQixDQUF3RCxJQUF4RCxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixlQUFuQixDQUFvQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLE9BQXhCLENBQWdDLE9BQU8sQ0FBRSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsYUFBeEUsQ0FBcEMsQ0FFQSx5QkFBeUIsQ0FBQyxPQUExQixrQkFDTSxHQUFHLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBTixDQUFnQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLE9BQWxDLENBQUQsQ0FBNEMsQ0FBQyxJQUFJLENBQUMsa0JBQU4sQ0FBeUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQix1QkFBOUQsQ0FDdEY7QUFEMEMsQ0FFdkMsQ0FBQyxJQUFJLENBQUMsbUJBQU4sQ0FBMkIsS0FBSyxDQUFFLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixhQUFqRSxDQUZ1QyxDQUV5QyxDQUFDLElBQUksQ0FBQyxvQkFBTixDQUEyQixLQUFLLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUEyQyxJQUE1RSxDQUZ6QyxDQUF0QyxDQUFELENBRFgsQ0FLWSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsZ0JBTGhELENBS2lFLFFBQVEsQ0FBRSxLQUFLLENBQUMsRUFBTixDQUFTLE9BTHBGLENBSzRGLFdBQVcsQ0FBQyxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsYUFMakksQ0FLK0ksZUFBZSxDQUFDLEtBQUssQ0FBQyxhQUxySyxnQkFLK0wsS0FBSyxDQUFDLGtCQUFOLENBQXlCLGFBTHhOLEdBT0EsS0FBSyxDQUFDLEdBQU4sQ0FBVSxhQUFWLENBQXdCLGNBQXhCLENBQXVDLGtCQUF2QyxDQUEyRCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBOUUsRUFDUixDQW5CSixDQXVCQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsY0FBbkIsQ0FBb0MsVUFDcEMsQ0FDSyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsYUFBL0IsQ0FBNkMsTUFBN0MsQ0FBb0QsQ0FBcEQsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsdUJBQS9CLENBQXlELENBQXpELENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLHFCQUEvQixDQUF1RCxLQUF2RCxDQUVKLENBTkQsQ0FRQSxHQUFJLENBQUEsbUJBQW1CLENBQUcsUUFBdEIsQ0FBQSxtQkFBc0IsQ0FBUyxJQUFULENBQzFCLENBQ0ksR0FBSSxJQUFJLENBQUMsS0FBTCxFQUFZLFNBQWhCLENBQ0EsQ0FDSSxLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsQ0FBa0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLFFBQWpELENBQ0EsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsZ0JBQXBCLEVBQXNDLFVBQTFDLENBQXNELEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixrQkFBbkIsQ0FBc0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLGdCQUExRCxDQUEyRSxJQUEzRSxFQUF0RCxJQUNLLENBQUEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHdCQUFuQixDQUE0QyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsUUFBL0QsQ0FBd0UsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFlBQTNGLENBQXdHLENBQXhHLENBQTBHLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixRQUF6SSxFQUNSLENBQ0osQ0FSRCxDQVVBO0FBRUEsR0FBSSxDQUFBLGdCQUFnQixDQUFHLFFBQVEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUF4QyxDQUNBLEdBQUksQ0FBQSxrQkFBa0IsQ0FBRyxPQUFPLEtBQUssQ0FBQyxrQkFBTixDQUF5QixjQUF6RCxDQUNBLEdBQUksQ0FBQSxTQUFTLENBQUcsS0FBSyxDQUFDLEdBQU4sQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUF1QyxnQkFBdkMsQ0FBd0QsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLFNBQTVFLENBQXNGLG1CQUF0RixDQUFoQixDQUdDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixpQkFBbkIsQ0FBcUMsU0FBVSxJQUFWLENBQWUsQ0FBQyxFQUUvQyxHQUFJLElBQUksRUFBRSxTQUFWLENBQW9CLENBQ25CLElBQUksR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFWLENBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFuQixDQUEwQixDQUFDLEVBQTNCLENBQStCLENBRXZCLEdBQUksZUFBaUIsQ0FBQSxJQUFJLENBQUMsQ0FBRCxDQUF6QixDQUNBLENBQ0MsR0FBSSxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsVUFBUixFQUFvQixTQUF4QixDQUNHLENBQ0ksR0FBSSxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsVUFBWixDQUNBLENBQ0UsR0FBSSxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsV0FBUixFQUF1QixVQUEzQixDQUNBLENBQ0UsR0FBSSxDQUFBLEdBQUcsQ0FBRyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsWUFBbkIsQ0FBZ0MsR0FBaEMsQ0FBb0MsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLFFBQVQsQ0FBb0IsQ0FBdEUsRUFBd0UsT0FBeEUsQ0FBZ0YsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLE9BQXhGLENBQVYsQ0FDQSxHQUFJLEdBQUcsQ0FBQyxDQUFSLENBQVcsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFlBQW5CLENBQWdDLElBQWhDLENBQXFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxPQUFsQixDQUEwQixTQUFTLENBQUMsS0FBcEMsQ0FBckMsRUFDWixDQUNEO0FBRUksR0FBSSxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsVUFBUixDQUFtQixnQkFBbkIsRUFBcUMsU0FBckMsRUFBa0QsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLFVBQVIsQ0FBbUIsZ0JBQW5CLEVBQXFDLElBQTNGLENBRUEsQ0FDSSxHQUFJLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxVQUFSLENBQW1CLGdCQUFuQixFQUFxQyxFQUF6QyxDQUNBLENBQ0ksR0FBSSxDQUFBLGlCQUFlLENBQUcsY0FBdEIsQ0FDQSxHQUFJLENBQUEsbUJBQWlCLENBQUcsS0FBSyxDQUFDLGtCQUFOLENBQXlCLGFBQXpCLENBQXVDLEdBQXZDLENBQTJDLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxPQUEzRSxDQUNBLEdBQUksQ0FBQSxPQUFPLENBQUcsS0FBSyxDQUFDLEdBQU4sQ0FBVSxVQUFWLENBQXFCLG1CQUFyQixDQUF1QyxJQUF2QyxDQUFkLENBQ0EsR0FBSSxDQUFBLFVBQVEsQ0FBRyxLQUFLLENBQUMsR0FBTixDQUFVLFNBQVYsQ0FBb0IsbUJBQXBCLENBQXNDLGlCQUF0QyxDQUFzRCxjQUF0RCxDQUFxRSxtQkFBckUsQ0FBZixDQUNBLEdBQUksQ0FBQSxHQUFHLENBQUcsS0FBSyxDQUFDLEdBQU4sQ0FBVSxRQUFWLENBQW1CLG1CQUFuQixDQUFWLENBQ0EsR0FBSSxHQUFHLENBQUMsS0FBSixFQUFXLElBQVgsRUFBbUIsR0FBRyxDQUFDLEtBQUosRUFBVyxTQUFsQyxDQUE2QyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBTCxDQUFuQixDQUNoRCxDQUNKLENBQ0osQ0FFTixDQUVILENBQ0EsR0FBSSxVQUFZLENBQUEsSUFBSSxDQUFDLENBQUQsQ0FBcEIsQ0FDQSxDQUVDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixpQkFBbkIsQ0FBcUMsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLE1BQTdDLEVBQ0EsQ0FDUixDQUNKLENBRUosQ0E1Q0YsQ0E4Q0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLG1CQUFuQixDQUF1QyxLQUF2QyxDQUdFLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixtQkFBbkIsQ0FBeUMsU0FBUyxLQUFULENBQWlCLENBRXRELEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixnQkFBcEIsQ0FBcUMsS0FBckMsQ0FFQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsbUJBQW5CLENBQXVDLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixtQkFBM0QsQ0FBK0UsS0FBL0UsRUFDQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixnQkFBcEIsRUFBc0MsVUFBMUMsQ0FBc0QsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGFBQW5CLEdBQ3pELENBTkQsQ0FRQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsbUJBQW5CLENBQXlDLFNBQVMsRUFBVCxDQUFZLEtBQVosQ0FBb0IsQ0FFekQsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsb0JBQW5CLEVBQXlDLFNBQTdDLENBQXdELEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixvQkFBbkIsQ0FBd0MsRUFBeEMsQ0FDeEQsR0FBSSxDQUFBLEdBQUcsQ0FBRyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsWUFBbkIsQ0FBZ0MsR0FBaEMsQ0FBb0MsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUFoRSxFQUFrRSxPQUFsRSxDQUEwRSxLQUFLLENBQUMsRUFBTixDQUFTLE9BQW5GLENBQVYsQ0FDQSxHQUFJLEdBQUcsRUFBRSxDQUFMLEVBQVUsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLG9CQUFuQixDQUF3QyxFQUF4QyxHQUE2QyxTQUEzRCxDQUFzRSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsb0JBQW5CLENBQTBDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixZQUFuQixDQUFnQyxHQUFoQyxDQUExQyxDQUN0RSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsd0JBQW5CLENBQTRDLEVBQTVDLENBQStDLEtBQS9DLEVBQ0gsQ0FORCxDQVFBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix3QkFBbkIsQ0FBOEMsU0FBUyxFQUFULENBQVksS0FBWixDQUU5QywwRUFDSSxHQUFJLENBQUEsR0FBSixDQUNBLEdBQUksQ0FBQSxjQUFjLENBQUcsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLG1CQUF6QyxDQUdBLEdBQUksS0FBSyxFQUFJLHlCQUFBLEtBQUssQ0FBQyxFQUFOLENBQVMsYUFBVCx3RUFBd0IsVUFBeEIsSUFBcUMsU0FBOUMsRUFBMkQseUJBQUEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxhQUFULHdFQUF3QixVQUF4QixJQUFxQyxJQUFoRyxFQUF3Ryx5QkFBQSxLQUFLLENBQUMsRUFBTixDQUFTLGFBQVQsd0VBQXdCLFVBQXhCLENBQW1DLE1BQW5DLEVBQTBDLENBQXRKLENBQ0UsdUVBQ00sR0FBRyxDQUFHLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixxQkFBbkIsQ0FBeUMsR0FBekMsQ0FBNkMsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUF6RSxFQUEyRSxPQUEzRSxDQUFtRixFQUFuRixDQUFOLENBRUEsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFXLENBQ1AsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHlCQUFuQixDQUErQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIscUJBQW5CLENBQXlDLEdBQXpDLENBQS9DLENBRUEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLG9CQUFuQixDQUF3QyxjQUF4QyxDQUF5RCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsb0JBQW5CLENBQXdDLElBQWpHLENBQ0gsQ0FFRCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsU0FBbkIsQ0FBNkIsT0FBN0IsQ0FBcUMsTUFBckMseUJBQThDLEtBQUssQ0FBQyxFQUFOLENBQVMsYUFBdkQsaURBQThDLHVCQUF3QixVQUF0RSxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixVQUFuQixDQUE4QixJQUE5QixDQUVBLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLGdCQUFwQixFQUFzQyxNQUExQyxDQUNJLDRCQUNJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixhQUFuQixDQUFpQyxPQUFqQyxDQUF5QyxNQUF6Qyx5QkFBa0QsS0FBSyxDQUFDLEVBQU4sQ0FBUyxhQUEzRCxpREFBa0QsdUJBQXdCLFFBQTFFLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGdCQUFuQixDQUFzQyxJQUF0QyxDQUNILENBRUwsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsY0FBdkIsQ0FDQSx5QkFDSSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsc0JBQW5CLENBQTJDLElBQTNDLENBQ0EsR0FBSSxzQkFBQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsa0VBQW9CLFVBQXBCLElBQWlDLFNBQWpDLEVBQThDLGNBQWMsRUFBRSxFQUFsRSxDQUFzRSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsb0JBQW5CLEdBQXRFLElBQ0ssQ0FBQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsZ0JBQW5CLEdBQ1IsQ0FDRCxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixVQUFuQixFQUFpQyxTQUFyQyxDQUFnRCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsVUFBbkIsQ0FBZ0MsRUFBaEMsQ0FBaEQsSUFDSyxDQUFBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixVQUFuQixDQUE4QixNQUE5QixDQUFxQyxDQUFyQyxDQUNMO0FBQ0csS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFVBQW5CLHVCQUFnQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQXpDLHNFQUFnQyxxQkFBb0IsVUFBcEQsZ0RBQWdDLHNCQUFnQyxHQUFoQyxDQUMzQixTQUFBLENBQUMsQ0FBSyxDQUNGLEdBQUssQ0FBQyxDQUFDLElBQUYsRUFBVSxDQUFDLENBQUMsSUFBRixDQUFPLFFBQVAsQ0FBZ0IsT0FBaEIsQ0FBZixDQUNJLE1BQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFSLENBQVksWUFBWSxDQUFDLENBQUMsSUFBRixDQUFPLEtBQVAsQ0FBYSxDQUFiLENBQWdCLENBQUMsQ0FBakIsQ0FBeEIsQ0FBNkMsT0FBTyxDQUFDLENBQUMsV0FBdEQsQ0FBUixDQURKLElBR0ksT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQVIsQ0FBWSxZQUFZLENBQUMsQ0FBQyxJQUExQixDQUFnQyxPQUFPLENBQUMsQ0FBQyxXQUF6QyxDQUFQLENBQ1gsQ0FOOEIsQ0FBaEMsQ0FPRjtBQUVOLENBckNILElBcUNPLENBQ0QsR0FBRyxDQUFHLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixxQkFBbkIsQ0FBeUMsR0FBekMsQ0FBNkMsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUF6RSxFQUEyRSxPQUEzRSxDQUFtRixFQUFuRixDQUFOLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxhQUFULENBQXVCLEVBQXZCLENBQ0EsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFXLENBQ1Qsb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLEVBQTlDLEVBQWtELElBQWxELENBQXVELFNBQVUsSUFBVixDQUFnQiwwQkFFL0Q7QUFDQTtBQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixvQkFBbkIsQ0FBd0MsSUFBeEMsQ0FBK0MsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUF6RCxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix5QkFBbkIsQ0FBK0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHFCQUFuQixDQUF5QyxHQUF6QyxDQUEvQyxDQUNBO0FBRUEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLG9CQUFuQixDQUF3QyxjQUF4QyxDQUF5RCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsb0JBQW5CLENBQXdDLElBQWpHLENBQ0EsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsc0JBQW5CLEdBQTRDLFNBQWhELENBQ0EsQ0FDSSxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsbUJBQXBCLENBQXdDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixzQkFBbkIsQ0FBMEMsRUFBbEYsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0Isd0JBQXBCLENBQTZDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixzQkFBbkIsQ0FBMEMsT0FBdkYsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLE9BQVQsQ0FBaUIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHNCQUFuQixDQUEwQyxjQUEzRCxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixTQUFuQixDQUE2QixPQUFPLENBQUMsSUFBUixDQUFhLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixzQkFBbkIsQ0FBMEMsSUFBdkQsQ0FBN0IsQ0FDSCxDQUNELEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixTQUFuQixDQUE2QixPQUE3QixDQUFxQyxNQUFyQyxDQUE4QyxJQUFJLENBQUMsSUFBTCxDQUFVLElBQXhELENBR0EsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsZ0JBQXBCLEVBQXNDLE1BQTFDLENBQWtELENBQ3RFLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixhQUFuQixDQUFpQyxPQUFqQyxDQUF5QyxNQUF6QyxDQUFrRCxJQUFJLENBQUMsSUFBTCxDQUFVLElBQTVELENBQ0EsQ0FFb0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxhQUFULENBQXVCLFlBQXZCLEVBQXVDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixTQUFuQixDQUE2QixPQUE3QixDQUFxQyxNQUE1RSxDQUNBLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLGdCQUFwQixFQUFzQyxNQUExQyxDQUNJLENBQ0ksS0FBSyxDQUFDLEVBQU4sQ0FBUyxhQUFULENBQXVCLFVBQXZCLEVBQXFDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixhQUFuQixDQUFpQyxPQUFqQyxDQUF5QyxNQUE5RSxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixnQkFBbkIsQ0FBc0MsSUFBdEMsQ0FFSCxDQUNMLEdBQUksdUJBQUEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULG9FQUFvQixVQUFwQixJQUFpQyxTQUFqQyxFQUE4QyxjQUFjLEVBQUUsRUFBbEUsQ0FDSSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsb0JBQW5CLEdBREosSUFFSyxDQUFBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixzQkFBbkIsQ0FBMkMsSUFBM0MsQ0FFTCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsVUFBbkIsQ0FBOEIsSUFBOUIsQ0FFQTtBQUVDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixVQUFuQixDQUFnQyxFQUFoQyxDQUVBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBMkMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFNBQTlELENBQXlFLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixVQUE1RixFQUF1RztBQUczRyxDQTNDTCxDQTJDTSxTQUFTLEtBQVQsQ0FBZSxDQUNiLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixVQUFuQixDQUE4QixJQUE5QixDQUNQLENBOUNELEVBZ0RILENBQ0osQ0FHWixDQXBHTyxDQXNHRjtBQUNDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBNkMsU0FBVSxHQUFWLENBQWUsVUFBZixDQUEyQixNQUEzQixDQUFrQyxJQUFsQyxDQUEwQyxDQUFPO0FBQ3pGLEdBQUksQ0FBQSxDQUFDLENBQUcsRUFBUixDQUNBLE1BQU0sQ0FBQyxJQUFQLENBQVksR0FBWixFQUFpQixPQUFqQixDQUF5QixTQUFTLEdBQVQsQ0FBYyxDQUNuQyxHQUFNLFFBQU8sR0FBRyxDQUFDLEdBQUQsQ0FBVixJQUFxQixRQUF0QixFQUFtQyxHQUFHLENBQUMsR0FBRCxDQUF0QyxFQUFpRCxHQUFHLEVBQUksZUFBeEQsRUFBMkUsR0FBRyxFQUFJLFdBQWxGLEVBQWlHLEdBQUcsRUFBSSxZQUF4RyxFQUF3SCxHQUFHLEVBQUksV0FBL0gsRUFBOEksR0FBRyxFQUFJLFNBQXJKLEVBQWtLLEdBQUcsRUFBSSxrQkFBOUssQ0FBbU0sQ0FBRTtBQUNqTSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTRDLEdBQUcsQ0FBQyxHQUFELENBQS9DLENBQXNELFVBQXRELENBQWtFLE1BQWxFLENBQTBFLElBQUksQ0FBRyxHQUFQLENBQWEsR0FBdkYsRUFDSCxDQUZELElBR0ssQ0FDRyxHQUFJLEdBQUcsRUFBSSxlQUFYLENBQTRCLENBQUUsTUFBTSxDQUFHLEdBQUcsQ0FBQyxTQUFELENBQVosQ0FBeUIsQ0FFdkQsR0FBSSxHQUFHLEVBQUksTUFBWCxDQUFtQixDQUNmLEdBQUssR0FBRyxDQUFDLEdBQUQsQ0FBSCxFQUFZLEdBQUcsQ0FBQyxHQUFELENBQUgsQ0FBUyxRQUFULENBQWtCLE9BQWxCLENBQWpCLENBQ0ksQ0FBQyxDQUFDLFdBQUQsQ0FBRCxDQUFpQixHQUFHLENBQUMsR0FBRCxDQUFILENBQVMsS0FBVCxDQUFlLENBQWYsQ0FBa0IsQ0FBQyxDQUFuQixDQUFqQixDQURKLElBRUssQ0FBQSxDQUFDLENBQUMsV0FBRCxDQUFELENBQWlCLEdBQUcsQ0FBQyxHQUFELENBQXBCLENBQ1IsQ0FFRCxHQUFJLEdBQUcsRUFBSSxhQUFYLENBQTBCLENBQUcsQ0FBQyxDQUFDLE1BQUQsQ0FBRCxDQUFZLEdBQUcsQ0FBQyxHQUFELENBQWYsQ0FBdUIsQ0FDcEQsR0FBSSxHQUFHLEVBQUksYUFBUCxFQUF3QixHQUFHLEVBQUksSUFBbkMsQ0FBMkMsQ0FDdkMsQ0FBQyxDQUFDLEdBQUQsQ0FBRCxDQUFRLEdBQUcsQ0FBQyxHQUFELENBQVgsQ0FDSCxDQUNKLENBQ1IsQ0FsQkQsRUFvQkMsQ0FBQyxDQUFDLFFBQUQsQ0FBRCxDQUFjLE1BQWQsQ0FDQTtBQUNEO0FBQ0UsR0FBTSxDQUFDLENBQUMsYUFBRCxDQUFELEVBQW9CLENBQUMsQ0FBQyxNQUFELENBQXJCLEVBQWlDLE1BQU0sQ0FBQyxJQUFQLENBQVksQ0FBWixFQUFlLE1BQWYsQ0FBd0IsQ0FBL0QsQ0FBbUUsQ0FDNUQ7QUFDQztBQUNBO0FBQ0osR0FBSSxVQUFVLENBQUMsSUFBWCxDQUFnQixTQUFBLENBQUMsUUFBSSxDQUFBLENBQUMsQ0FBQyxFQUFGLEdBQVMsQ0FBQyxDQUFDLEVBQWYsRUFBakIsSUFBc0MsU0FBMUMsQ0FBcUQsVUFBVSxDQUFDLElBQVgsQ0FBZ0IsQ0FBaEIsRUFDeEQsQ0FFVixDQWhDRSxDQW9DRCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsY0FBbkIsQ0FBa0MsU0FBUyxJQUFULENBQ2xDLENBQ00sVUFBVSxDQUFHLElBQUksQ0FBQyxRQUFsQixDQUNBLEdBQUksQ0FBQSxZQUFZLENBQUMsSUFBakIsQ0FDQSxHQUFJLENBQUEsR0FBRyxDQUFHLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixZQUFuQixDQUFnQyxHQUFoQyxDQUFvQyxTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsUUFBVCxDQUFvQixDQUF0RSxFQUF3RSxPQUF4RSxDQUFnRixVQUFoRixDQUFWLENBQ0E7QUFDQSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsWUFBbkIsQ0FBZ0MsTUFBL0MsQ0FBc0QsQ0FBQyxFQUF2RCxDQUNFLENBRUUsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsWUFBbkIsQ0FBZ0MsQ0FBaEMsRUFBbUMsUUFBbkMsRUFBK0MsVUFBbkQsQ0FBK0QsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFlBQW5CLENBQWdDLENBQWhDLEVBQW1DLFNBQW5DLENBQStDLElBQS9DLENBQy9ELEdBQUksQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsWUFBbkIsQ0FBZ0MsQ0FBaEMsRUFBbUMsU0FBeEMsQ0FBbUQsWUFBWSxDQUFHLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixZQUFuQixDQUFnQyxDQUFoQyxFQUFtQyxTQUFsRCxDQUNwRCxDQUNEO0FBQ0EsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixnQkFBcEIsRUFBd0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGFBQTVELEdBQThFLFlBQTlFLEVBQThGLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixtQkFBcEgsQ0FBeUksQ0FDbkksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGtCQUFuQixDQUFzQyxLQUFLLENBQUMsRUFBTixDQUFTLE9BQS9DLENBQ0EsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsRUFBcUIsSUFBckIsRUFBNkIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULEVBQXFCLFNBQXRELENBQ0EsQ0FDRSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixnQkFBcEIsRUFBc0MsVUFBMUMsQ0FBc0QsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGtCQUFuQixDQUFzQyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsZ0JBQTFELENBQTJFLEtBQTNFLEVBQXRELElBQ0ssQ0FBQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsd0JBQW5CLENBQTRDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixRQUEvRCxDQUF3RSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsWUFBM0YsQ0FBd0csS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLFdBQXZJLENBQW1KLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixRQUFsTCxFQUVOLENBQ0osQ0FDVixDQXRCRCxDQXdCQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxFQUFvQixTQUF4QixDQUFtQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsWUFBbkIsQ0FBa0MsRUFBbEMsQ0FBbkMsSUFDSyxDQUFBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFxQixDQUFDLFlBQVksQ0FBRyxFQUFoQixDQUFyQixDQUNOO0FBQ0MsR0FBSSxDQUFBLFVBQVUsQ0FBQyxDQUFmLENBRUMsR0FBSSxDQUFBLGlCQUFpQixDQUFHLFFBQXBCLENBQUEsaUJBQW9CLENBQVMsSUFBVCxDQUN2QixDQUNJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixjQUFuQixDQUFrQyxJQUFsQyxFQUNILENBSEYsQ0FLQyxHQUFJLENBQUEsd0JBQXdCLENBQUcsS0FBSyxDQUFDLEdBQU4sQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLGtCQUFrQixLQUFLLENBQUMsYUFBeEIsQ0FBc0MsS0FBSyxDQUFDLGtCQUFOLENBQXlCLGNBQWxHLENBQWlILGlCQUFqSCxDQUEvQixDQUNGO0FBQ047QUFDQTtBQUNBLE9BcHhCZ0QsQ0FzeEI3QztBQUNDO0FBQ0E7QUFDSSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsd0JBQW5CLENBQThDLFNBQVUsZ0JBQVYsQ0FBMkIsUUFBM0IsQ0FBb0MsT0FBcEMsQ0FBNkMsQ0FHMUYsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUVBLG9CQUFvQixDQUFDLHNCQUFyQixDQUE0QyxLQUFLLENBQUMsRUFBTixDQUFTLE9BQXJELENBQTZELFFBQTdELENBQXNFLGdCQUF0RSxDQUF1RixDQUF2RixDQUF5RixPQUF6RixDQUFpRyxJQUFqRyxFQUF1RyxJQUF2RyxDQUE0RyxTQUFTLElBQVQsQ0FBZSxDQUNwRztBQUNLLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixrQkFBbkIsQ0FBc0MsSUFBdEMsQ0FBNkMsSUFBSSxDQUFDLElBQWxELENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGtCQUFuQixDQUFzQyxVQUF0QyxDQUFtRCxJQUFJLENBQUMsVUFBeEQsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsUUFBbkIsQ0FBNEIsSUFBNUIsQ0FDNUI7QUFDMEIsQ0FOMUIsQ0FNMkIsU0FBUyxLQUFULENBQWUsQ0FDZixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDTixDQVJyQixFQVNBLENBZEQsQ0FnQkg7QUFDRDtBQUNBO0FBRUEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGNBQW5CLENBQW9DLFNBQVMsS0FBVCxDQUFlLENBQy9DLEdBQUksQ0FBQSxLQUFKLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUEyQyxDQUEzQyxDQUNBLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLGlCQUEvQixFQUFrRCxLQUF0RCxDQUNBLENBQ0ksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLGlCQUEvQixDQUFpRCxLQUFqRCxDQUNBLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTJDLElBQTNDLENBQWdELEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixpQkFBL0UsRUFBa0csQ0FBbEcsQ0FBTixDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBNkMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUEyQyxJQUEzQyxDQUFnRCxLQUFoRCxFQUF1RCxDQUF2RCxFQUEwRCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsS0FBekYsQ0FBN0MsQ0FDSCxDQUxELElBT0EsQ0FDSSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsaUJBQS9CLENBQWlELElBQWpELENBQ0EsS0FBSyxDQUFHLElBQVIsQ0FDSCxDQUNEO0FBQ0MseUJBQXlCLENBQUMsT0FBMUIsQ0FBa0MsQ0FDekIsR0FBRyxDQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQU4sQ0FBZ0MsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBTixDQUFtQixLQUFLLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxPQUFsQyxDQUFELENBQTRDLENBQUMsSUFBSSxDQUFDLGtCQUFOLENBQXlCLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQWxELENBQTVDLENBQ3JDLENBQUMsSUFBSSxDQUFDLG1CQUFOLENBQTBCLEtBQUssQ0FBQyxLQUFoQyxDQURxQyxDQUNFLENBQUMsSUFBSSxDQUFDLG9CQUFOLENBQTJCLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTJDLElBQTVFLENBREYsQ0FBdEMsQ0FBRCxDQURvQixDQUUwRyxRQUFRLENBQUUsS0FBSyxDQUFDLEVBQU4sQ0FBUyxPQUY3SCxDQUVxSSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsZ0JBRnpLLENBRTBMLGVBQWUsQ0FBQyxLQUFLLENBQUMsYUFGaE4sQ0FBbEMsRUFJSCxDQW5CRixDQXFCSDtBQUNHO0FBQ0E7QUFDRSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsc0JBQW5CLENBQTRDLFNBQVUsZ0JBQVYsQ0FBMkIsUUFBM0IsQ0FBcUMsQ0FFOUUsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUVBLG9CQUFvQixDQUFDLDJCQUFyQixDQUFpRCxnQkFBakQsQ0FBa0UsQ0FBQyxFQUFFLENBQUUsUUFBTCxDQUFsRSxDQUFpRixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsY0FBbkIsQ0FBakYsRUFBcUgsSUFBckgsQ0FBMEgsU0FBUyxJQUFULENBQWUsQ0FFN0csS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGtCQUFuQixDQUFzQyxJQUF0QyxDQUE2QyxJQUFJLENBQUMsSUFBbEQsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsa0JBQW5CLENBQXNDLFVBQXRDLENBQW1ELEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixZQUFuQixDQUFuRCxDQUU1QjtBQUMwQixDQU4xQixDQU0yQixTQUFTLEtBQVQsQ0FBZSxDQUNmLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNOLENBUnJCLEVBU0EsQ0FiSCxDQWVFLEtBQUssQ0FBQyxHQUFOLENBQVUsa0JBQWtCLEtBQUssQ0FBQyxhQUF4QixDQUFzQyxLQUFLLENBQUMsRUFBTixDQUFTLGNBQXpELENBQXdFLFNBQVMsS0FBVCxDQUFnQixLQUFoQixDQUFzQixDQUU5RCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsY0FBbkIsQ0FBa0MsS0FBbEMsRUFFL0IsQ0FKRCxFQU1KLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixvQkFBbkIsQ0FBMEMsU0FBUyxJQUFULENBQzFDLENBQ0ksR0FBSSxDQUFBLE9BQU8sQ0FBRyxFQUFkLENBQ0EsR0FBSSxDQUFBLFVBQVUsQ0FBRyxFQUFqQixDQUNBLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFwQixDQUEyQixDQUFDLEVBQTVCLENBQ0EsQ0FFQSxVQUFVLENBQUMsSUFBWCxDQUFnQixJQUFJLENBQUMsQ0FBRCxDQUFwQixFQUNBLE9BQU8sQ0FBQyxJQUFSLENBQWEsVUFBYixFQUVBLFVBQVUsQ0FBRyxFQUFiLENBQ0MsQ0FDRCxNQUFPLENBQUEsT0FBUCxDQUNILENBYkQsQ0FnQkksR0FBSSxDQUFBLFlBQVksQ0FBRyxRQUFmLENBQUEsWUFBZSxDQUFVLElBQVYsQ0FBZ0IsQ0FDbkI7QUFDQSxHQUFJLE1BQU8sQ0FBQSxJQUFQLEdBQWdCLFFBQXBCLENBQThCLE1BQU8sQ0FBQSxJQUFQLENBQzlCLEdBQUksQ0FBQSxNQUFNLENBQUcsRUFBYixDQUNBLElBQUksQ0FBQyxLQUFMLENBQVcsR0FBWCxFQUFnQixPQUFoQixDQUF3QixTQUFVLElBQVYsQ0FBZ0IsS0FBaEIsQ0FBdUIsQ0FDM0M7QUFDQSxJQUFJLENBQUMsS0FBTCxDQUFXLGNBQVgsRUFBMkIsT0FBM0IsQ0FBbUMsU0FBVSxHQUFWLENBQWUsQ0FDOUMsR0FBSSxHQUFHLENBQUMsTUFBSixDQUFhLENBQWpCLENBQXVCLE1BQU0sQ0FBQyxJQUFQLENBQVksR0FBWixFQUFpQjtBQUMzQyxDQUZELEVBR0gsQ0FMRCxFQU1BLE1BQU8sQ0FBQSxNQUFQLENBQ2QsQ0FYRixDQWNGLEdBQUksQ0FBQSxHQUFHLENBQUcsUUFBTixDQUFBLEdBQU0sQ0FBVSxHQUFWLENBQWUsSUFBZixDQUFxQixHQUFyQixDQUEwQixDQUNsQjtBQUN4QjtBQUNBO0FBQ0Esa0ZBRXdCLElBQUksQ0FBRyxZQUFZLENBQUMsSUFBRCxDQUFuQixDQUEwQjtBQUMxQixHQUFJLENBQUEsT0FBTyxDQUFHLEdBQWQsQ0FBa0I7QUFDbEI7QUFDQSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUcsQ0FBYixDQUFnQixDQUFDLENBQUcsSUFBSSxDQUFDLE1BQXpCLENBQWlDLENBQUMsRUFBbEMsQ0FBc0MsQ0FDbEM7QUFDQSxHQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBRCxDQUFMLENBQVAsR0FBcUIsU0FBckIsRUFBa0MsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFELENBQUwsQ0FBUCxHQUFxQixJQUE1RCxDQUFtRSxNQUFPLENBQUEsR0FBUCxDQUNuRSxPQUFPLENBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFELENBQUwsQ0FBakIsQ0FBNEI7QUFDL0IsQ0FDRCxNQUFPLENBQUEsT0FBUCxDQUNkLENBZkosQ0FpQkEsR0FBSSxDQUFBLE9BQU8sQ0FBRyxRQUFWLENBQUEsT0FBVSxDQUFVLE1BQVYsQ0FBaUIsSUFBakIsQ0FDZCxDQUVNLEdBQUksQ0FBQSxHQUFHLENBQUcsSUFBVixDQUNBLEdBQUksQ0FBQSxHQUFHLENBQUcsR0FBRyxDQUFDLElBQUQsQ0FBTSxNQUFNLENBQUMsSUFBYixDQUFrQixHQUFsQixDQUFiLENBQ0EsR0FBSSxHQUFHLEdBQUcsSUFBVixDQUFnQixNQUFPLEdBQVAsQ0FDaEI7QUFFQSxHQUFJLE1BQU0sQ0FBQyxVQUFYLENBQXVCLENBQ25CLEdBQUksTUFBTSxDQUFDLFVBQVAsQ0FBa0IsU0FBbEIsQ0FBNEIsQ0FBNUIsQ0FBOEIsQ0FBOUIsRUFBaUMsSUFBakMsSUFBeUMsTUFBN0MsQ0FDUSxHQUFHLENBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFNBQWxCLENBQTRCLENBQTVCLENBQThCLENBQTlCLENBQUQsQ0FBUCxDQUEwQyxHQUExQyxDQUE4QyxNQUFNLENBQUMsVUFBUCxDQUFrQixTQUFsQixDQUE0QixDQUE1QixDQUE4QixNQUFNLENBQUMsVUFBUCxDQUFrQixNQUFoRCxFQUF3RCxJQUF4RCxFQUE5QyxDQUFOLENBQ1gsQ0FFRCxHQUFJLE1BQU0sQ0FBQyxZQUFYLENBQXdCLENBQ2hCLEdBQUcsQ0FBSSxHQUFELENBQU0sY0FBTixDQUF5QixTQUFTLENBQUMsUUFBbkMsQ0FBc0QsQ0FBRSxxQkFBcUIsQ0FBRSxNQUFNLENBQUMsWUFBaEMsQ0FBdEQsQ0FBTixDQUNQLENBR0QsTUFBTyxDQUFBLEdBQVAsQ0FDTCxDQW5CRCxDQXNCRixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsa0JBQW5CLENBQXdDLFVBQVUscURBQzlDLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBVCxFQUF5QixJQUE3QixDQUFtQyxDQUMvQixLQUFLLENBQUMsRUFBTixDQUFTLGNBQVQsQ0FBMEIsQ0FBMUIsQ0FDSCxDQUNELEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGtCQUFuQixFQUF1QyxTQUEzQyxDQUFzRCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsa0JBQW5CLENBQXdDLEtBQUssQ0FBQyxFQUFOLENBQVMsT0FBakQsQ0FDdEQsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsUUFBL0IsRUFBeUMsU0FBN0MsQ0FBd0QsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLFFBQS9CLENBQTBDLGlCQUFpQixDQUFDLFFBQTVELENBRXhELEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULDJCQUFzQixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsU0FBckQscUVBQXNCLHdCQUEwQyxHQUFoRSw0Q0FBc0Isd0JBQStDLE1BQXpFLENBQWlGLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixTQUEvQixDQUF5QyxHQUF6QyxDQUE2QyxNQUE3QyxDQUFvRCxDQUFwRCxDQUFqRixJQUNLLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQWQsQ0FBeUIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLFNBQS9CLENBQXlDLEdBQXpDLENBQStDLElBQS9DLENBQzlCLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBNkMsSUFBN0MsQ0FFQSxlQUFlLENBQUMsaUJBQWhCLENBQWtDLEtBQUssQ0FBQyxFQUFOLENBQVMsT0FBM0MsQ0FBbUQsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUE1RCxDQUEyRSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsZ0JBQTlGLENBQStHLEtBQUssQ0FBQyxFQUFOLENBQVMsT0FBeEgsQ0FBZ0ksS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLHdCQUFwSixDQUE2SyxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsZUFBdE0sRUFBdU4sSUFBdk4sQ0FBNE4sU0FBUyxJQUFULENBQWUsK0NBRS9NLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQix3QkFBL0IsQ0FBeUQsSUFBSSxDQUFDLElBQUwsQ0FBVSxrQkFBbkUsQ0FFMUIsR0FBSSxzQkFBQSxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQVYseUZBQW1CLFVBQW5CLHNFQUErQixNQUEvQixHQUF1QyxDQUEzQyxDQUErQyxDQUM5QyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0Qiw2Q0FBK0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxPQUFwRixDQUE0RixPQUE1RixFQUNBLE9BQU8sQ0FBQyxHQUFSLENBQWEsdUZBQXlGLEtBQUssQ0FBQyxFQUFOLENBQVMsT0FBL0csRUFDQSxDQUd5QixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTJDLFVBQTNDLENBQXdELElBQUksQ0FBQyxJQUFMLENBQVUsT0FBVixDQUFrQixVQUExRSxDQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQSxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUE5QixDQUNBLEdBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxXQUFWLEVBQXVCLElBQTNCLENBQWtDLENBQzlCLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixhQUFuQixDQUFpQyxPQUFqQyxDQUF5QyxNQUF6QyxDQUFtRCxJQUFJLENBQUMsSUFBTCxDQUFVLFdBQTdELENBQ0gsQ0FFRCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsU0FBbkIsQ0FBNkIsT0FBN0IsQ0FBcUMsTUFBckMsQ0FBK0MsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUF6RCxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixPQUEvQixDQUF5QyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsU0FBbkIsQ0FBNkIsT0FBN0IsQ0FBcUMsTUFBOUUsQ0FFQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsUUFBL0IsQ0FBMkMsSUFBSSxDQUFDLElBQUwsQ0FBVSxRQUFyRCxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBVCxDQUFrQixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsUUFBakQsQ0FDQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBVCxFQUFpQixTQUFyQixDQUFnQyxLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsQ0FBZ0IsRUFBaEIsQ0FFaEMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLFVBQS9CLENBQTRDLElBQUksQ0FBQyxJQUFqRCxDQUNBLEtBQUssQ0FBQyxHQUFOLENBQVUsYUFBVixDQUF3QixjQUF4QixDQUF1QyxjQUF2QyxDQUF1RCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBMUUsRUFFQTtBQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBMkMsSUFBM0MsQ0FBa0QsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUE1RCxDQUNBLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLGdCQUFwQixFQUFzQyxNQUExQyxDQUFrRCxDQUM1RSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTJDLElBQTNDLENBQWtELEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixvQkFBbkIsQ0FBd0MsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUFsRCxDQUFsRCxDQUVDO0FBQ0E7QUFFRCxDQUMwQjtBQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixRQUFuQixDQUE4QixJQUFJLENBQUMsSUFBTCxDQUFVLElBQVYsQ0FBZSxJQUE3QyxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixZQUFuQixDQUFrQyxJQUFJLENBQUMsSUFBTCxDQUFVLElBQVYsQ0FBZSxRQUFqRCxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixVQUFuQixDQUE4QixJQUFJLENBQUMsSUFBTCxDQUFVLElBQVYsQ0FBZSxLQUE3QyxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixXQUEvQixDQUEyQyxDQUEzQyxDQUNBLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFVBQW5CLENBQThCLENBQTlCLEVBQW1DLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixXQUEvQixFQUE0QyxDQUFuRixDQUFzRixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsV0FBL0IsQ0FBMkMsQ0FBM0MsQ0FDdEYsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFFBQW5CLENBQThCLElBQUksQ0FBQyxJQUFMLENBQVUsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFVBQW5CLENBQThCLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixRQUF2RSxDQUE5QixDQUVBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBMkMsVUFBM0MsQ0FBc0QsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFVBQXpFLENBRUEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHNCQUFuQixDQUE0QyxJQUE1QyxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBNkMsS0FBN0MsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBaUMsS0FBakMsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsb0JBQW5CLENBQTBDLElBQTFDLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFVBQW5CLENBQThCLElBQTlCLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGdCQUFuQixDQUFzQyxJQUF0QyxDQUVBLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLGdCQUFwQixFQUFzQyxVQUExQyxDQUFzRCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLGdCQUFuRCxDQUFxRSxJQUFJLENBQUMsSUFBMUUsRUFFekQsQ0E5RHpCLENBOEQwQixTQUFTLEtBQVQsQ0FBZSxDQUNkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBNkMsS0FBN0MsQ0FDTCxDQWpFdEIsRUFtRUQsQ0EvRUgsQ0ErRUk7QUFJSixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsZ0JBQW5CLENBQXFDLFVBQVcsQ0FDNUM7QUFDQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsV0FBVCxJQUF3QixTQUF4QixFQUFxQyxLQUFLLENBQUMsRUFBTixDQUFTLFdBQVQsSUFBd0IsSUFBakUsQ0FDQSxDQUdJLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxXQUFULEVBQXNCLFlBQXRCLElBQXNDLFNBQXRDLEVBQW1ELEtBQUssQ0FBQyxFQUFOLENBQVMsV0FBVCxFQUFzQixZQUF0QixFQUFvQyxNQUEzRixDQUFtRyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTJDLFVBQTNDLENBQXlELEtBQUssQ0FBQyxFQUFOLENBQVMsV0FBVCxFQUFzQixZQUF0QixDQUF6RCxDQUNuRyxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsV0FBVCxFQUFzQixjQUF0QixJQUF3QyxTQUF4QyxFQUFxRCxLQUFLLENBQUMsRUFBTixDQUFTLFdBQVQsRUFBc0IsY0FBdEIsRUFBc0MsTUFBL0YsQ0FBdUcsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGVBQW5CLENBQXNDLEtBQUssQ0FBQyxFQUFOLENBQVMsV0FBVCxFQUFzQixjQUF0QixDQUF0QyxDQUN2RyxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsV0FBVCxFQUFzQixrQkFBdEIsSUFBNEMsU0FBNUMsRUFBeUQsS0FBSyxDQUFDLEVBQU4sQ0FBUyxXQUFULEVBQXNCLGtCQUF0QixFQUEwQyxNQUF2RyxDQUErRyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsZ0JBQW5CLENBQXVDLEtBQUssQ0FBQyxFQUFOLENBQVMsV0FBVCxFQUFzQixrQkFBdEIsQ0FBdkMsQ0FDL0csR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsZUFBbkIsR0FBcUMsU0FBekMsQ0FBb0QsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGVBQW5CLENBQW1DLEVBQW5DLENBQ3ZELENBQ0osQ0FYRCxDQWFFLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixlQUFuQixDQUFxQyxVQUFZLENBRS9DO0FBQ0EsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBNkMsSUFBN0MsQ0FDQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixRQUEvQixFQUF5QyxTQUE3QyxDQUF3RCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsUUFBL0IsQ0FBMEMsaUJBQWlCLENBQUMsUUFBNUQsQ0FDeEQsb0JBQW9CLENBQUMsZUFBckIsQ0FBcUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGtCQUF4RCxDQUEyRSxLQUFLLENBQUMsTUFBakYsQ0FBd0YsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFFBQTNHLENBQW9ILElBQXBILEVBQTBILElBQTFILENBQStILFNBQVMsSUFBVCxDQUFlLENBRWpILEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBMkMsSUFBM0MsQ0FBa0QsSUFBSSxDQUFDLElBQXZELENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUEyQyxVQUEzQyxDQUF3RCxJQUFJLENBQUMsVUFBN0QsQ0FDQTtBQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixnQkFBbkIsR0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBaUMsS0FBakMsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsc0JBQW5CLENBQTRDLElBQTVDLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUE2QyxLQUE3QyxDQUVILENBVjFCLENBVTJCLFNBQVMsS0FBVCxDQUFlLENBQ2YsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUE2QyxLQUE3QyxDQUNMLENBYnRCLEVBY0MsQ0FwQkgsQ0FzQkY7QUFDQTtBQUNBO0FBRU0sS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGFBQW5CLENBQW1DLFVBQVUsQ0FFekMsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixRQUFuQixDQUE0QixLQUE1QixDQUNBLG9CQUFvQixDQUFDLGFBQXJCLENBQW1DLEtBQUssQ0FBQyxFQUFOLENBQVMsT0FBNUMsQ0FBb0QsSUFBcEQsRUFBMEQsSUFBMUQsQ0FBK0QsU0FBUyxJQUFULENBQWUsQ0FDMUQsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLG9CQUFuQixDQUF5QyxJQUFJLENBQUMsSUFBOUMsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsUUFBbkIsQ0FBNEIsSUFBNUIsQ0FDRCxDQUhuQixDQUdvQixTQUFTLEtBQVQsQ0FBZSxDQUNiLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixRQUFuQixDQUE0QixJQUE1QixDQUNELGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNMLENBTmhCLEVBT0gsQ0FYRCxDQWNEO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0Foa0NnRCxDQWtrQ3pDO0FBQ0Q7QUFDQTtBQUNBLEdBQUksQ0FBQSwwQkFBMEIsQ0FBQyxRQUEzQixDQUFBLDBCQUEyQixDQUFTLElBQVQsQ0FDekIsQ0FDSSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsa0JBQW5CLENBQXNDLElBQXRDLEVBRUgsQ0FKUCxDQUtFLEtBQUssQ0FBQyxjQUFOLENBQXVCLFNBQVMsS0FBVCxDQUN2QixDQUNJLEdBQUksQ0FBQSxJQUFJLENBQUMsRUFBVCxDQUNBLEdBQUksQ0FBQSxNQUFKLENBQ0EsR0FBSSxLQUFLLENBQUMsT0FBTixDQUFjLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBdkIsR0FBa0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFULENBQWdCLE1BQWhCLENBQXVCLENBQTdELENBQWdFLE1BQU0sQ0FBRyxLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsQ0FBZ0IsQ0FBaEIsQ0FBVCxDQUFoRSxJQUNLLENBQUEsTUFBTSxDQUFHLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBbEIsQ0FDTCxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBckIsQ0FBNEIsQ0FBQyxFQUE3QixDQUNBLENBRUksSUFBSyxHQUFJLENBQUEsR0FBVCxHQUFnQixDQUFBLE1BQWhCLENBQXdCLENBR3BCLEdBQUksTUFBTSxDQUFDLEdBQUQsQ0FBTixFQUFhLFNBQWpCLENBQ0EsQ0FDSSxHQUFJLEdBQUcsR0FBSSxDQUFBLEtBQUssQ0FBQyxDQUFELENBQWhCLENBQ0EsQ0FDSSxHQUFJLEtBQUssQ0FBQyxDQUFELENBQUwsQ0FBUyxHQUFULEdBQWUsTUFBTSxDQUFDLEdBQUQsQ0FBTixDQUFZLEVBQTNCLEVBQWlDLE1BQU0sQ0FBQyxHQUFELENBQU4sRUFBYSxJQUE5QyxFQUFzRCxNQUFNLENBQUMsR0FBRCxDQUFOLEVBQWEsU0FBbkUsRUFBZ0YsS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTLEdBQVQsR0FBZSxTQUFuRyxDQUErRyxJQUFJLENBQUMsSUFBTCxDQUFVLEtBQUssQ0FBQyxDQUFELENBQWYsRUFDbEgsQ0FIRCxJQUdNLElBQUksR0FBRyxHQUFJLENBQUEsS0FBSyxDQUFDLENBQUQsQ0FBaEIsQ0FDTixDQUNJLEdBQUksS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTLEdBQVQsR0FBZSxNQUFNLENBQUMsR0FBRCxDQUFyQixFQUE4QixNQUFNLENBQUMsR0FBRCxDQUFOLEVBQWEsSUFBM0MsRUFBbUQsTUFBTSxDQUFDLEdBQUQsQ0FBTixFQUFhLFNBQWhFLEVBQTZFLEtBQUssQ0FBQyxDQUFELENBQUwsQ0FBUyxHQUFULEdBQWUsU0FBaEcsQ0FBNEcsSUFBSSxDQUFDLElBQUwsQ0FBVSxLQUFLLENBQUMsQ0FBRCxDQUFmLEVBQy9HLENBSEssSUFHQSxDQUFBLElBQUksQ0FBQyxJQUFMLENBQVUsS0FBSyxDQUFDLENBQUQsQ0FBZixFQUNULENBVEQsSUFTTSxDQUFBLElBQUksQ0FBQyxJQUFMLENBQVUsS0FBSyxDQUFDLENBQUQsQ0FBZixFQUNULENBR0osQ0FDRCxNQUFPLENBQUEsSUFBUCxDQUVILENBNUJELENBNkJBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixrQkFBbkIsQ0FBd0MsU0FBUyxTQUFULENBQW1CLGdCQUFuQixDQUN4QyxDQUNZLEdBQUksU0FBUyxFQUFFLFNBQWYsQ0FBMEIsU0FBUyxDQUFDLElBQVYsQ0FDMUIsR0FBSSxnQkFBZ0IsRUFBRSxTQUF0QixDQUFpQyxnQkFBZ0IsQ0FBQyxLQUFqQixDQUNqQyxHQUFJLENBQUEsSUFBSSxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFlBQW5CLENBQWtDLElBQWxDLENBRUEsb0JBQW9CLENBQUMsc0JBQXJCLENBQTRDLEtBQUssQ0FBQyxFQUFOLENBQVMsT0FBckQsQ0FBNkQsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUF0RSxDQUFxRixJQUFyRixDQUEwRixTQUExRixDQUFvRywwQkFBcEcsQ0FBK0gsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUF4SSxFQUFtSixJQUFuSixDQUF3SixTQUFTLElBQVQsQ0FBZSxDQUVuSyxHQUFJLGdCQUFKLENBQXNCLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixZQUFuQixDQUFrQyxLQUFLLENBQUMsY0FBTixDQUFxQixJQUFJLENBQUMsSUFBMUIsQ0FBbEMsQ0FBdEIsSUFDSyxDQUFBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixZQUFuQixDQUFrQyxJQUFJLENBQUMsSUFBdkMsQ0FDTCxRQUFRLENBQUMsVUFBVSxxREFFZixHQUFJLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFkLENBQ0EsQ0FDSSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixTQUEvQixDQUF5QyxHQUF6QyxFQUE4QyxTQUFsRCxDQUNBLENBRUksR0FBSSxDQUFBLEdBQUcsQ0FBRyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsWUFBbkIsQ0FBZ0MsR0FBaEMsQ0FBb0MsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUFoRSxFQUFrRSxPQUFsRSxDQUEwRSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsU0FBL0IsQ0FBeUMsR0FBekMsQ0FBNkMsRUFBdkgsQ0FBVixDQUVBLEdBQUksR0FBRyxDQUFDLENBQVIsQ0FBVSxDQUNOO0FBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLFNBQS9CLENBQXlDLEdBQXpDLENBQStDLElBQS9DLENBQ0gsQ0FFSixDQVZELElBVU0sQ0FBQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsU0FBL0IsQ0FBeUMsR0FBekMsQ0FBK0MsSUFBL0MsQ0FFVCxDQWRELElBY00sNkJBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLFNBQW5DLHFFQUFJLHdCQUEwQyxHQUE5Qyw0Q0FBSSx3QkFBK0MsTUFBbkQsQ0FBMkQsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLFNBQS9CLENBQXlDLEdBQXpDLENBQTZDLE1BQTdDLENBQW9ELENBQXBELENBQ3BFLENBakJPLENBQVIsQ0FtQkgsQ0F2QkQsQ0F1QkUsU0FBUyxLQUFULENBQWUsQ0FDYixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDSCxDQXpCRCxFQTRCWCxDQW5DRCxDQXFDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBaUMsU0FBUyxnQkFBVCxDQUEwQixJQUExQixDQUErQixDQUU1RDtBQUNJLEdBQUksZ0JBQUosQ0FBc0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFlBQW5CLENBQWtDLEtBQUssQ0FBQyxjQUFOLENBQXFCLElBQUksQ0FBQyxJQUExQixDQUFsQyxDQUF0QixJQUNLLENBQUEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFlBQW5CLENBQWtDLElBQUksQ0FBQyxJQUF2QyxDQUdELEdBQUksQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQWQsQ0FDQSxDQUNJLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLFNBQS9CLENBQXlDLEdBQXpDLEdBQStDLFNBQS9DLEVBQTRELEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixTQUEvQixDQUF5QyxHQUF6QyxHQUErQyxJQUEvRyxDQUNBLDZCQUVJLEdBQUksQ0FBQSxHQUFHLENBQUcsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFlBQW5CLENBQWdDLEdBQWhDLENBQW9DLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBaEUsRUFBa0UsT0FBbEUsMEJBQTBFLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixTQUEvQixDQUF5QyxHQUFuSCxrREFBMEUsd0JBQThDLEVBQXhILENBQVYsQ0FFQSxHQUFJLEdBQUcsQ0FBQyxDQUFSLENBQVUsQ0FDTjtBQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixTQUEvQixDQUF5QyxHQUF6QyxDQUE4QyxJQUE5QyxDQUNILENBRUosQ0FWRCxJQVVNLENBQUEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLFNBQS9CLENBQXlDLEdBQXpDLENBQThDLElBQTlDLENBRVQsQ0FDVDtBQUVILENBeEJELENBMEJBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixtQkFBbkIsQ0FBeUMsVUFDekMsQ0FFUSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsa0JBQW5CLENBQXNDLEtBQUssQ0FBQyxFQUFOLENBQVMsT0FBL0MsQ0FDQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsZ0JBQVQsRUFBNkIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxvQkFBVCxFQUErQixHQUFoRSxDQUNBLENBRUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHdCQUFuQixHQUVILENBTEQsSUFLTSxDQUFBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix3QkFBbkIsQ0FBNEMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFFBQS9ELENBQXdFLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixZQUEzRixDQUF3RyxDQUF4RyxDQUEwRyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsUUFBekksRUFFYixDQVhELENBZ0JKLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUFpQyxVQUFVLENBRXZDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix3QkFBbkIsQ0FBNEMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFFBQS9ELENBQXdFLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixZQUEzRixDQUF3RyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsV0FBdkksQ0FBbUosS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQStCLFFBQWxMLEVBQ0gsQ0FIRCxDQU9HLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixRQUFuQixDQUE4QixVQUFXLENBRXJDLE1BQU8sQ0FBQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTJDLElBQWxELENBQ0YsQ0FIRixDQU1ELEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixvQkFBbkIsQ0FBMEMsVUFBWSxDQUdwRCxvQkFBb0IsQ0FBQyxrQkFBckIsQ0FBd0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLG1CQUE1RCxDQUFnRixLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0Isb0JBQXBHLENBQXlILElBQXpILENBQThILEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQix3QkFBbEosRUFBNEssSUFBNUssQ0FBaUwsU0FBUyxJQUFULENBQWUsQ0FBQztBQUV6SyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTJDLFVBQTNDLENBQXdELElBQUksQ0FBQyxJQUFMLENBQVUsVUFBbEUsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTJDLGdCQUEzQyxDQUE4RCxJQUFJLENBQUMsSUFBTCxDQUFVLGdCQUF4RSxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixPQUFuQixDQUEyQixPQUEzQixDQUFzQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTJDLFVBQWpGLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHNCQUFuQixDQUE0QyxJQUE1QyxDQUVBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixhQUFuQixDQUFpQyxLQUFqQyxFQUdQLENBVmpCLENBVWtCLFNBQVMsS0FBVCxDQUFlLENBQ1QsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ3ZCLENBWkQsRUFjRCxDQWpCRCxDQW1CRixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsc0JBQW5CLENBQTRDLFNBQVMsYUFBVCxDQUF1QixZQUF2QixDQUFvQyxDQUc1RSxHQUFJLENBQUEsZ0JBQWdCLENBQUcsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGdCQUFuQixDQUFvQyxhQUFwQyxDQUF2QixDQUNBLEdBQUksZ0JBQWdCLENBQUMsbUJBQWpCLEdBQXVDLFNBQTNDLENBQXNELGdCQUFnQixDQUFDLG1CQUFqQixDQUF1QyxLQUF2QyxDQUV0RCxHQUFLLENBQUMsWUFBRCxFQUFpQixDQUFDLGdCQUFnQixDQUFDLFFBQXBDLEVBQWtELFlBQVksRUFBSSxnQkFBZ0IsQ0FBQyxRQUF2RixDQUFpRyxDQUM3RixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsNkJBQW5CLENBQWlELGdCQUFnQixDQUFDLEVBQWxFLEVBQXdFLEVBQXhFLENBQ0EsZ0JBQWdCLENBQUMsY0FBakIsQ0FBZ0MsSUFBaEMsQ0FDQSxvQkFBb0IsQ0FBQyw2QkFBckIsQ0FBbUQsZ0JBQWdCLENBQUMsRUFBcEUsQ0FBdUUsTUFBdkUsRUFBK0UsSUFBL0UsQ0FDSSxTQUFVLElBQVYsQ0FBZ0IsQ0FFWixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsNkJBQW5CLENBQWlELGdCQUFnQixDQUFDLEVBQWxFLEVBQXdFLElBQUksQ0FBQyxJQUE3RSxDQUVBLEdBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBdEIsQ0FBMEMsQ0FDdEMsR0FBSSxDQUFBLFNBQVMsQ0FBRyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsNkJBQW5CLENBQWlELGdCQUFnQixDQUFDLEVBQWxFLEVBQXNFLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQiw2QkFBbkIsQ0FBaUQsZ0JBQWdCLENBQUMsRUFBbEUsRUFBc0UsTUFBdEUsQ0FBNkUsQ0FBbkosQ0FBaEIsQ0FFQSxnQkFBZ0IsQ0FBQyxtQkFBakIsQ0FBdUMsU0FBUyxDQUFDLEVBQWpELENBQ0EsZ0JBQWdCLENBQUMsd0JBQWpCLENBQTRDLFNBQVMsQ0FBQyxPQUF0RCxDQUdILENBQ0QsR0FBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFsQixFQUEwQyxZQUFZLEVBQUksZ0JBQWdCLENBQUMsbUJBQS9FLENBQW9HLENBQ2hHO0FBQ0EsZ0JBQWdCLENBQUMsWUFBakIsQ0FBOEIsU0FBOUIsQ0FBd0M7QUFDeEMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUEyQyxnQkFBZ0IsQ0FBQyxFQUE1RCxFQUFrRSxFQUFsRSxDQUVBLG9CQUFvQixDQUFDLGtCQUFyQixDQUF3QyxnQkFBZ0IsQ0FBQyxtQkFBekQsQ0FBNkUsZ0JBQWdCLENBQUMsWUFBOUYsQ0FBMkcsSUFBM0csQ0FBZ0gsZ0JBQWdCLENBQUMsd0JBQWpJLEVBQTJKLElBQTNKLENBQWdLLFNBQVMsSUFBVCxDQUFlLENBQUM7QUFFeEssS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUEyQyxnQkFBZ0IsQ0FBQyxFQUE1RCxFQUFrRSxJQUFJLENBQUMsSUFBTCxDQUFVLFVBQTVFLENBQ0EsS0FBSyxDQUFDLGNBQU4sQ0FBcUIsYUFBckIsRUFDQSxnQkFBZ0IsQ0FBQyxjQUFqQixDQUFnQyxLQUFoQyxDQUVILENBTkwsQ0FNTSxTQUFTLEtBQVQsQ0FBZSxDQUNiLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNDLGdCQUFnQixDQUFDLGNBQWpCLENBQWdDLEtBQWhDLENBQ1IsQ0FURCxFQVdILENBR0wsQ0FoQ0osQ0FnQ0ssU0FBUyxLQUFULENBQWUsQ0FDWixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDQyxnQkFBZ0IsQ0FBQyxjQUFqQixDQUFnQyxLQUFoQyxDQUNSLENBbkNELEVBd0NILENBM0NELElBMkNLLENBQ0QsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUEyQyxnQkFBZ0IsQ0FBQyxFQUE1RCxFQUFnRSxFQUFoRSxDQUVILENBRUosQ0F0REQsQ0F1REEsS0FBSyxDQUFDLGNBQU4sQ0FBdUIsU0FBUyxhQUFULENBQXVCLENBR2xDLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGdCQUFuQixDQUFvQyxhQUFwQyxFQUFtRCxZQUFuRCxFQUFpRSxTQUFyRSxDQUFnRixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsZ0JBQW5CLENBQW9DLGFBQXBDLEVBQW1ELFlBQW5ELENBQWdFLEVBQWhFLENBQ2hGLEdBQUksQ0FBQSxVQUFVLENBQUcsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGdCQUFuQixDQUFvQyxhQUFwQyxFQUFtRCxFQUFwRSxDQUNBLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBMkMsVUFBM0MsRUFBdUQsTUFBdEUsQ0FBNkUsQ0FBQyxFQUE5RSxDQUNBLENBQ0ksR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsZ0JBQW5CLENBQW9DLGFBQXBDLEVBQW1ELFlBQW5ELENBQWdFLE9BQWhFLENBQXdFLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBMkMsVUFBM0MsRUFBdUQsQ0FBdkQsRUFBMEQsSUFBbEksR0FBeUksQ0FBN0ksQ0FBZ0osS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUEyQyxVQUEzQyxFQUF1RCxDQUF2RCxFQUEwRCxRQUExRCxDQUFvRSxJQUFwRSxDQUNuSixDQUNaLENBVEQsQ0FXQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsNEJBQW5CLENBQWtELFNBQVMsU0FBVCxDQUFtQixDQUVqRDtBQUNBO0FBRUEsR0FBSSxDQUFBLEdBQUcsQ0FBRyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsZ0JBQW5CLENBQW9DLEdBQXBDLENBQXdDLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBcEUsRUFBc0UsT0FBdEUsQ0FBOEUsU0FBUyxDQUFDLGNBQXhGLENBQVYsQ0FFQSxHQUFJLEdBQUcsRUFBRSxDQUFULENBQVcsQ0FDUCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsZ0JBQW5CLENBQW9DLEdBQXBDLEVBQXlDLGNBQXpDLENBQXdELElBQXhELENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGdCQUFuQixDQUFvQyxHQUFwQyxFQUF5QyxtQkFBekMsQ0FBNkQsU0FBUyxDQUFDLEVBQXZFLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGdCQUFuQixDQUFvQyxHQUFwQyxFQUF5Qyx3QkFBekMsQ0FBb0UsU0FBUyxDQUFDLE9BQTlFLENBQ0gsQ0FDRCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTJDLFNBQVMsQ0FBQyxjQUFyRCxFQUF1RSxFQUF2RSxDQUNBLFNBQVMsQ0FBQyxZQUFWLENBQXlCLFNBQXpCLENBQW1DO0FBRW5ELG9CQUFvQixDQUFDLGtCQUFyQixDQUF3QyxTQUFTLENBQUMsRUFBbEQsQ0FBcUQsU0FBUyxDQUFDLFlBQS9ELENBQTRFLElBQTVFLENBQWlGLFNBQVMsQ0FBQyxPQUEzRixFQUFvRyxJQUFwRyxDQUF5RyxTQUFTLElBQVQsQ0FBZSxDQUFDO0FBRWpHLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBMkMsU0FBUyxDQUFDLGNBQXJELEVBQXVFLElBQUksQ0FBQyxJQUFMLENBQVUsVUFBakYsQ0FDRCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsZ0JBQW5CLENBQW9DLEdBQXBDLEVBQXlDLGNBQXpDLENBQXdELEtBQXhELENBQ0EsS0FBSyxDQUFDLGNBQU4sQ0FBcUIsR0FBckIsRUFDRixDQUxyQixDQUtzQixTQUFTLEtBQVQsQ0FBZSxDQUNiLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixnQkFBbkIsQ0FBb0MsR0FBcEMsRUFBeUMsY0FBekMsQ0FBd0QsS0FBeEQsQ0FDeEIsQ0FSRCxFQVNILENBeEJELENBeUJBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixlQUFuQixDQUFxQyxTQUFTLEdBQVQsQ0FBYSxVQUFiLENBQXdCLENBR3pELEdBQUksQ0FBQSxHQUFHLENBQUcsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFlBQW5CLEVBQWlDLEdBQWpDLENBQXFDLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxJQUFULENBQWdCLENBQW5FLEVBQXFFLE9BQXJFLENBQTZFLEdBQUcsQ0FBQyxJQUFqRixDQUFWLENBQ0EsR0FBSSxDQUFBLE9BQU8sQ0FBRyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsa0JBQW5CLEVBQXVDLEdBQXZDLENBQTJDLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBdkUsRUFBeUUsT0FBekUsQ0FBaUYsVUFBakYsQ0FBZCxDQUVBLEdBQUksR0FBRyxDQUFDLENBQVIsQ0FBVyxDQUNSLEdBQUksR0FBRyxDQUFDLFFBQVIsQ0FFQyxDQUNJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixZQUFuQixFQUFpQyxNQUFqQyxDQUF3QyxHQUF4QyxDQUE0QyxDQUE1QyxFQUNBLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGdCQUFuQixDQUFvQyxPQUFwQyxFQUE2QyxZQUE3QyxFQUEyRCxTQUEvRCxDQUEwRSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsZ0JBQW5CLENBQW9DLE9BQXBDLEVBQTZDLFlBQTdDLENBQTBELEVBQTFELENBRTFFLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixnQkFBbkIsQ0FBb0MsT0FBcEMsRUFBNkMsWUFBN0MsQ0FBMEQsTUFBMUQsQ0FBaUUsR0FBRyxDQUFDLElBQXJFLEVBQ0gsQ0FFSixDQVZELElBVUssQ0FDRCxHQUFJLENBQUMsR0FBRyxDQUFDLFFBQVQsQ0FDSSxDQUNJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixZQUFuQixFQUFpQyxJQUFqQyxDQUFzQyxHQUF0QyxFQUNBLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGdCQUFuQixDQUFvQyxPQUFwQyxFQUE2QyxZQUE3QyxFQUEyRCxTQUEvRCxDQUEwRSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsZ0JBQW5CLENBQW9DLE9BQXBDLEVBQTZDLFlBQTdDLENBQTBELEVBQTFELENBRTFFLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixnQkFBbkIsQ0FBb0MsT0FBcEMsRUFBNkMsWUFBN0MsQ0FBMEQsSUFBMUQsQ0FBK0QsR0FBRyxDQUFDLElBQW5FLEVBQ0gsQ0FDUixDQUVKLENBMUJELENBNEJBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQiw4QkFBbkIsQ0FBa0QsU0FBVSxJQUFWLENBQWUsS0FBZixDQUFzQixDQUVuRSxHQUFJLENBQUEsR0FBRyxDQUFHLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQiw2QkFBbkIsQ0FBaUQsSUFBSSxDQUFDLGNBQXRELEVBQXNFLEdBQXRFLENBQTBFLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBdEcsRUFBd0csT0FBeEcsQ0FBZ0gsSUFBSSxDQUFDLEVBQXJILENBQVYsQ0FFRCxHQUFJLEdBQUcsQ0FBQyxDQUFSLENBQVcsQ0FFUCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsNEJBQW5CLENBQWdELEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQiw2QkFBbkIsQ0FBaUQsSUFBSSxDQUFDLGNBQXRELEVBQXNFLEdBQXRFLENBQWhELEVBQ0Q7QUFDRixDQUNKLENBVEQsQ0FVQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTZDLFVBQVksQ0FFakQsS0FBSyxDQUFDLE1BQU4sQ0FBZSxFQUFmLENBQ0EsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUVEO0FBQ0Q7QUFFQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixrQkFBbkIsRUFBdUMsSUFBM0MsQ0FBaUQsQ0FDL0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGtCQUFuQixDQUF3QyxLQUFLLENBQUMsRUFBTixDQUFTLE9BQWpELENBQ0QsQ0FDRCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTZDLElBQTdDLENBQ0U7QUFDSCxvQkFBb0IsQ0FBQyx1QkFBckIsQ0FBNkMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGtCQUFoRSxDQUFtRixLQUFLLENBQUMsTUFBekYsQ0FBZ0csS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFFBQW5ILENBQTRILElBQTVILENBQWlJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixTQUFuQixDQUE2QixJQUE5SixFQUFvSyxJQUFwSyxDQUF5SyxTQUFTLElBQVQsQ0FBZSxDQUFDO0FBRWxLLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBMkMsSUFBM0MsQ0FBa0QsSUFBSSxDQUFDLElBQXZELENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUEyQyxVQUEzQyxDQUF3RCxJQUFJLENBQUMsVUFBN0QsQ0FFQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsc0JBQW5CLENBQTRDLElBQTVDLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUE2QyxLQUE3QyxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixnQkFBbkIsR0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBaUMsS0FBakMsQ0FJRyxDQVoxQixDQVkyQixTQUFTLEtBQVQsQ0FBZSxDQUNuQixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTZDLEtBQTdDLENBQ0YsQ0FmckIsRUFnQkEsQ0E3QkwsQ0FnQ00sS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGtCQUFuQixDQUF3QyxVQUMxQyxDQUNZO0FBQ1gsQ0FIQyxDQUtOO0FBQ0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHFCQUFuQixDQUF5QyxVQUN0QyxDQUNJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixlQUFuQixDQUFtQyxLQUFuQyxDQUVBLG9CQUFvQixDQUFDLDZCQUFyQixDQUFtRCxLQUFLLENBQUMsRUFBTixDQUFTLE9BQTVELENBQW9FLE1BQXBFLEVBQTRFLElBQTVFLENBQ0ksU0FBVSxJQUFWLENBQWdCLENBRWhCLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixxQkFBbkIsQ0FBMkMsSUFBSSxDQUFDLElBQWhELENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGVBQW5CLENBQW1DLElBQW5DLENBRUEsR0FBSSxDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixtQkFBekIsQ0FBNkMsQ0FDekMsR0FBSSxDQUFBLFNBQVMsQ0FBRyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIscUJBQW5CLENBQXlDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixxQkFBbkIsQ0FBeUMsTUFBekMsQ0FBZ0QsQ0FBekYsQ0FBaEIsQ0FFQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsc0JBQW5CLENBQTRDLFNBQTVDLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLG1CQUFwQixDQUEwQyxTQUExQyxTQUEwQyxTQUExQyxpQkFBMEMsU0FBUyxDQUFFLEVBQXJELENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLHdCQUFwQixDQUErQyxTQUEvQyxTQUErQyxTQUEvQyxpQkFBK0MsU0FBUyxDQUFFLE9BQTFELENBQ0gsQ0FFRCxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixtQkFBcEIsQ0FBd0MsQ0FBNUMsQ0FBK0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLG1CQUFuQixDQUF1QyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsbUJBQTNELENBQStFLElBQS9FLEVBRy9DLENBakJKLENBaUJLLFNBQVMsS0FBVCxDQUFlLENBQ1osZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ1AsQ0FuQkQsRUFxQkgsQ0F6QkosQ0EyQkQ7QUFDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsWUFBbkIsQ0FBa0MsVUFBWSxDQUV0QyxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixZQUFuQixFQUFpQyxTQUFyQyxDQUFnRCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsWUFBbkIsQ0FBZ0MsRUFBaEMsQ0FFaEQsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNBLG9CQUFvQixDQUFDLHdCQUFyQixDQUE4QyxJQUE5QyxDQUFtRCxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0Isb0JBQXZFLEVBQTZGLElBQTdGLENBQ1ksU0FBUyxJQUFULENBQWUsQ0FFZixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsWUFBbkIsQ0FBa0MsSUFBSSxDQUFDLElBQXZDLENBQ0EsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLE9BQVQsRUFBa0IsRUFBbEIsRUFBd0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxPQUFULEVBQWtCLFNBQTFDLEVBQXVELEtBQUssQ0FBQyxFQUFOLENBQVMsT0FBVCxFQUFrQixJQUE3RSxDQUFtRixDQUMvRSxHQUFJLENBQUEsR0FBRyxDQUFHLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixZQUFuQixDQUFnQyxHQUFoQyxDQUFvQyxTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsRUFBVCxDQUFjLENBQWhFLEVBQWtFLE9BQWxFLENBQTBFLEtBQUssQ0FBQyxFQUFOLENBQVMsT0FBbkYsQ0FBVixDQUNBLEdBQUksR0FBRyxDQUFDLENBQVIsQ0FBVyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsb0JBQW5CLENBQTBDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixZQUFuQixDQUFnQyxHQUFoQyxDQUExQyxDQUNkLENBQ0QsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHFCQUFuQixHQUVOLENBVk4sQ0FVTyxTQUFTLEtBQVQsQ0FBZSxDQUNkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNQLENBWkQsRUFhUCxDQWxCRCxDQW9CQTtBQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixnQkFBbkIsQ0FBc0MsVUFBVSxDQUU1QyxHQUFJLENBQUEsT0FBTyxDQUFHLENBQWQsQ0FDQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixRQUFwQixDQUE2QixtQkFBakMsQ0FBc0QsT0FBTyxDQUFHLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixRQUFwQixDQUE2Qix3QkFBdkMsQ0FHdEQsb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixRQUFwQixDQUE2QixtQkFBM0UsRUFBZ0csSUFBaEcsQ0FBcUcsU0FBVSxJQUFWLENBQWdCLENBR3pHLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixRQUFwQixDQUE2QixJQUE3QixDQUFvQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBTCxDQUFVLElBQWxCLENBQXBDLENBQ0EsR0FBSSxDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixRQUFwQixDQUE2QixRQUFsQyxDQUE0QyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsUUFBcEIsQ0FBNkIsUUFBN0IsQ0FBc0MsQ0FBQyxFQUFELENBQXRDLENBQzVDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixrQkFBbkIsQ0FBc0MsSUFBdEMsQ0FJSCxDQVRULENBU1UsU0FBUyxLQUFULENBQWUsQ0FDYixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsa0JBQW5CLENBQXNDLElBQXRDLENBRVgsQ0FiRCxFQWdCSCxDQXRCRCxDQXdCQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsb0JBQW5CLENBQTBDLENBQUMsR0FBRyx5QkFBQyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsUUFBckIseUVBQUMsdUJBQThCLGdCQUEvQixpREFBQyx1QkFBZ0QsRUFBckQsQ0FBd0QsZUFBZSxDQUFDLElBQXhFLENBQTFDLENBQ0EsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsV0FBcEIsRUFBbUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLFFBQXBCLENBQTZCLG1CQUFoRSxFQUF1RiwwQkFBQyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsUUFBcEIsQ0FBNkIsSUFBOUIsbUVBQUMsdUJBQW1DLE1BQXBDLDJDQUFDLHVCQUEyQyxNQUE1QyxDQUEzRixDQUErSSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsZ0JBQW5CLEdBQS9JLElBQ0ksQ0FFQSxHQUFJLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLFFBQXpCLENBQW1DLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixRQUFwQixDQUE2QixFQUE3QixDQUNuQyxHQUFJLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLFFBQXBCLENBQTZCLFFBQWxDLENBQTRDLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixRQUFwQixDQUE2QixRQUE3QixDQUFzQyxDQUFDLEVBQUQsQ0FBdEMsQ0FFNUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGtCQUFuQixDQUFzQyxJQUF0QyxDQUVILENBQ0E7QUFDQTtBQUNBO0FBQ0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGdCQUFuQixDQUFzQyxTQUFVLElBQVYsQ0FBZ0IsQ0FFcEQsR0FBSSxDQUFBLFFBQVEsQ0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsS0FBaEMsQ0FBTCxDQUFmLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUE2QyxJQUE3QyxDQUNBLG9CQUFvQixDQUFDLDJCQUFyQixDQUFpRCxLQUFLLENBQUMsRUFBTixDQUFTLE9BQTFELENBQWtFLENBQUMsTUFBTSxDQUFFLFFBQVQsQ0FBbEUsQ0FBcUYsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGNBQW5CLENBQXJGLEVBQXlILElBQXpILENBQThILFNBQVMsSUFBVCxDQUFlLENBRWpILFFBQVEsQ0FBQyxVQUFVLENBQ2YsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUEyQyxJQUEzQyxDQUFrRCxJQUFJLENBQUMsSUFBdkQsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTJDLFVBQTNDLENBQXdELEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixZQUFuQixDQUF4RCxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixzQkFBbkIsQ0FBNEMsSUFBNUMsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsdUJBQW5CLENBQTZDLEtBQTdDLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQWlDLEtBQWpDLENBQ0gsQ0FOTyxDQUFSLENBTzNCO0FBQzBCLENBVjNCLENBVTRCLFNBQVMsS0FBVCxDQUFlLENBQ2YsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUE2QyxLQUE3QyxDQUNOLENBYnRCLEVBY0MsQ0FsQkgsQ0F3QkUsR0FBSSxDQUFBLFlBQVksQ0FBQyxRQUFiLENBQUEsWUFBYSxDQUFTLElBQVQsQ0FDakIsQ0FDSSxHQUFJLENBQUEsS0FBSyxDQUFHLElBQUksQ0FBQyxLQUFqQixDQUNBLEdBQUksQ0FBQSxXQUFXLENBQUcsS0FBSyxDQUFDLHdCQUEwQixLQUFLLENBQUMsRUFBTixDQUFTLGNBQXBDLENBQXZCLENBQ0E7QUFDQSxHQUFJLEtBQUssR0FBRyxTQUFSLEVBQXFCLFdBQVcsRUFBRSxTQUF0QyxDQUNBLENBQ0ksS0FBSyxDQUFDLEVBQU4sQ0FBUyxrQkFBVCxDQUE4QixLQUFLLENBQUMsWUFBcEMsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsY0FBbkIsQ0FBb0MsS0FBSyxDQUFDLFFBQTFDLENBQ0E7QUFDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsd0JBQW5CLEdBQ0E7QUFDSCxDQUVKLENBZEQsQ0FlSixHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsZ0JBQVQsRUFBNkIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxvQkFBVCxFQUErQixHQUFoRSxDQUNBLENBR0k7QUFDQSxHQUFJLENBQUEsaUJBQWUsQ0FBRyxjQUF0QixDQUNBLEdBQUksQ0FBQSxtQkFBaUIsQ0FBRyxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsYUFBekIsQ0FBdUMsR0FBdkMsQ0FBMkMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxpQkFBNUUsQ0FDQSxHQUFJLENBQUEsT0FBTyxDQUFHLEtBQUssQ0FBQyxHQUFOLENBQVUsVUFBVixDQUFxQixtQkFBckIsQ0FBdUMsSUFBdkMsQ0FBZCxDQUNBLEdBQUksQ0FBQSxVQUFRLENBQUcsS0FBSyxDQUFDLEdBQU4sQ0FBVSxTQUFWLENBQW9CLG1CQUFwQixDQUFzQyxpQkFBdEMsQ0FBc0QsY0FBdEQsQ0FBcUUsWUFBckUsQ0FBZixDQUNBLEdBQUksQ0FBQSxHQUFHLENBQUcsS0FBSyxDQUFDLEdBQU4sQ0FBVSxRQUFWLENBQW1CLG1CQUFuQixDQUFWLENBQ0EsR0FBSSxHQUFHLENBQUMsS0FBSixHQUFZLFNBQVosRUFBeUIsR0FBRyxDQUFDLEtBQUosR0FBWSxJQUF6QyxDQUNBLENBQ0ksR0FBSSxDQUFBLFdBQVcsQ0FBSSxHQUFHLENBQUMsS0FBdkIsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLGtCQUFULENBQThCLFdBQVcsQ0FBQyxZQUExQyxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixjQUFuQixDQUFvQyxXQUFXLENBQUMsUUFBaEQsQ0FDQTtBQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix3QkFBbkIsR0FDQTtBQUVILENBRUosQ0FFRCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIscUJBQW5CLENBQTRDLFNBQVMsUUFBVCxDQUM1QyxDQUNFLEdBQUksQ0FBQSxTQUFTLENBQUcseUJBQXlCLENBQUMsZUFBMUIsQ0FBMEMsS0FBSyxDQUFDLGFBQWhELENBQWhCLENBQ00sR0FBSSxDQUFBLFNBQVMsQ0FBQyxDQUFkLENBQWdCLGVBQWUsQ0FBQyxDQUFoQyxDQUNBLEdBQUksQ0FBQSxNQUFKLENBQ0EsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQXpCLENBQWdDLENBQUMsRUFBakMsQ0FDQSxDQUNJLEdBQUksU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLEdBQWIsRUFBa0IsU0FBbEIsRUFBK0IsU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLEdBQWIsRUFBa0IsSUFBckQsQ0FDQSxDQUNBLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFELENBQVQsQ0FBYSxHQUFiLENBQWlCLE1BQWhDLENBQXVDLENBQUMsRUFBeEMsQ0FDQSxDQUNFLEdBQUksU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLEdBQWIsQ0FBaUIsQ0FBakIsRUFBb0IsSUFBcEIsRUFBMEIsUUFBOUIsQ0FDQSxDQUNFLEdBQUksU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLEdBQWIsQ0FBaUIsQ0FBakIsRUFBb0IsS0FBcEIsRUFBMkIsU0FBM0IsRUFBd0MsU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLEdBQWIsQ0FBaUIsQ0FBakIsRUFBb0IsS0FBcEIsRUFBMkIsSUFBdkUsQ0FDQSxDQUNFO0FBRUEsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLEdBQWIsQ0FBaUIsQ0FBakIsRUFBb0IsS0FBcEIsQ0FBMEIsTUFBekMsQ0FBZ0QsQ0FBQyxFQUFqRCxDQUNBLENBQ0MsR0FBSSxTQUFTLENBQUMsQ0FBRCxDQUFULENBQWEsR0FBYixDQUFpQixDQUFqQixFQUFvQixLQUFwQixDQUEwQixDQUExQixFQUE2QixJQUE3QixFQUFtQyxZQUFuQyxFQUFtRCxTQUFTLENBQUMsQ0FBRCxDQUFULENBQWEsR0FBYixDQUFpQixDQUFqQixFQUFvQixLQUFwQixDQUEwQixDQUExQixFQUE2QixLQUE3QixFQUFvQyxTQUEzRixDQUFzRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLEdBQWIsQ0FBaUIsQ0FBakIsRUFBb0IsS0FBcEIsQ0FBMEIsQ0FBMUIsRUFBNkIsS0FBdkMsQ0FDdEcsR0FBSSxTQUFTLENBQUMsQ0FBRCxDQUFULENBQWEsR0FBYixDQUFpQixDQUFqQixFQUFvQixLQUFwQixDQUEwQixDQUExQixFQUE2QixJQUE3QixFQUFtQyxrQkFBbkMsRUFBeUQsU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLEdBQWIsQ0FBaUIsQ0FBakIsRUFBb0IsS0FBcEIsQ0FBMEIsQ0FBMUIsRUFBNkIsS0FBN0IsRUFBb0MsU0FBakcsQ0FDQSxDQUNLLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBRCxDQUFULENBQWEsR0FBYixDQUFpQixDQUFqQixFQUFvQixLQUFwQixDQUEwQixDQUExQixFQUE2QixLQUE3QyxDQUNBLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLGdCQUFwQixFQUF3QyxVQUF4QyxFQUFzRCxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQU4sQ0FBUyxPQUExRSxFQUFxRixDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBbkcsQ0FDQSxDQUVJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixTQUEvQixDQUF5QyxHQUF6QyxDQUErQyxTQUFTLENBQUMsQ0FBRCxDQUFULENBQWEsR0FBYixDQUFpQixDQUFqQixFQUFvQixLQUFwQixDQUEwQixDQUExQixFQUE2QixLQUE1RSxDQUNBLE1BQU0sQ0FBRyxLQUFLLENBQUMsR0FBTixDQUFVLGFBQVYsQ0FBd0IsY0FBeEIsQ0FBdUMsY0FBdkMsQ0FBdUQsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQTFFLENBQVQsQ0FDSCxDQUNMLENBQ0QsR0FBSSxTQUFTLENBQUMsQ0FBRCxDQUFULENBQWEsR0FBYixDQUFpQixDQUFqQixFQUFvQixLQUFwQixDQUEwQixDQUExQixFQUE2QixJQUE3QixFQUFtQyxtQkFBbkMsRUFBMEQsU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLEdBQWIsQ0FBaUIsQ0FBakIsRUFBb0IsS0FBcEIsQ0FBMEIsQ0FBMUIsRUFBNkIsS0FBN0IsRUFBb0MsU0FBbEcsQ0FDQSxDQUNLLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBRCxDQUFULENBQWEsR0FBYixDQUFpQixDQUFqQixFQUFvQixLQUFwQixDQUEwQixDQUExQixFQUE2QixLQUE3QyxDQUNBLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLGdCQUFwQixFQUF3QyxVQUF4QyxFQUFzRCxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQU4sQ0FBUyxPQUExRSxFQUFxRixLQUFLLENBQUMsRUFBTixDQUFTLFNBQWxHLENBQ0EsQ0FFSSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsU0FBL0IsQ0FBeUMsR0FBekMsQ0FBK0MsU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLEdBQWIsQ0FBaUIsQ0FBakIsRUFBb0IsS0FBcEIsQ0FBMEIsQ0FBMUIsRUFBNkIsS0FBNUUsQ0FDQSxNQUFNLENBQUcsS0FBSyxDQUFDLEdBQU4sQ0FBVSxhQUFWLENBQXdCLGNBQXhCLENBQXVDLGNBQXZDLENBQXVELEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUExRSxDQUFULENBQ0gsQ0FDTCxDQUVELENBR0YsQ0FFRixDQUVBLENBQ0YsQ0FDSixDQUNULE1BQU8sQ0FBQyxZQUFZLFNBQWIsQ0FBdUIsa0JBQWtCLGVBQXpDLENBQVAsQ0FDQyxDQXBERCxDQXVERixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsZ0JBQW5CLENBQW9DLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixxQkFBbkIsQ0FBeUMseUJBQXpDLENBQXBDLENBR0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGNBQW5CLENBQW9DLFNBQVUsR0FBVixDQUFlLE1BQWYsQ0FBdUIsU0FBdkIsQ0FDakMsQ0FBRTtBQUNDLEdBQUksQ0FBQSxDQUFDLENBQUcsRUFBUixDQUNBLE1BQU0sQ0FBQyxJQUFQLENBQVksR0FBWixFQUFpQixPQUFqQixDQUF5QixTQUFTLEdBQVQsQ0FBYyxDQUVuQyxHQUFNLFFBQU8sR0FBRyxDQUFDLEdBQUQsQ0FBVixJQUFxQixRQUF0QixFQUFtQyxHQUFHLENBQUMsR0FBRCxDQUEzQyxDQUNBLENBQ0UsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGNBQW5CLENBQWtDLEdBQUcsQ0FBQyxHQUFELENBQXJDLENBQTRDLE1BQTVDLENBQW9ELFNBQXBELEVBQ0QsQ0FIRCxJQUlLLENBQ0csR0FBSSxHQUFHLEVBQUksc0JBQVAsRUFBaUMsR0FBRyxFQUFJLGFBQXhDLEVBQXlELEdBQUcsRUFBSSxhQUFoRSxFQUFpRixHQUFHLEVBQUksV0FBeEYsRUFBdUcsR0FBRyxFQUFJLE1BQTlHLEVBQXlILEdBQUcsRUFBSSwrQkFBcEksQ0FBcUssQ0FDakssQ0FBQyxDQUFDLEdBQUQsQ0FBRCxDQUFRLEdBQUcsQ0FBQyxHQUFELENBQVgsQ0FDQyxDQUNMLEdBQUssR0FBRyxFQUFJLFdBQVosQ0FBMEIsQ0FDdkI7QUFDQyxHQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsR0FBRyxDQUFDLEdBQUQsQ0FBakIsQ0FBSixDQUE4QixDQUFDLENBQUMsR0FBRCxDQUFELENBQVEsR0FBRyxDQUFDLEdBQUQsQ0FBSCxDQUFTLENBQVQsQ0FBUixDQUE5QixJQUNLLENBQUEsQ0FBQyxDQUFDLEdBQUQsQ0FBRCxDQUFRLEdBQUcsQ0FBQyxHQUFELENBQVgsQ0FDUixDQUNELEdBQUksR0FBRyxFQUFJLGdCQUFYLENBQThCLENBQzFCLENBQUMsQ0FBQyxJQUFELENBQUQsQ0FBUyxHQUFHLENBQUMsR0FBRCxDQUFaLENBQ0gsQ0FFSixDQUNKLENBcEJMLEVBc0JBO0FBQ0gsQ0ExQkgsQ0E2QkEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGFBQW5CLENBQWtDLFNBQVMsWUFBVCxDQUF1QixDQUM1QztBQUNBLEdBQUksQ0FBQSxVQUFVLENBQUcsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHVCQUFuQixDQUEyQyxVQUE1RCxDQUVBLEdBQUksQ0FBQSxZQUFZLENBQUcsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGVBQXRDLENBQ0EsR0FBSSxDQUFBLGdCQUFnQixDQUFHLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQix1QkFBbkIsQ0FBMkMsZ0JBQWxFLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxXQUFULEVBQXNCLENBQUMsYUFBYSxVQUFkLENBQXlCLGVBQWdCLFlBQXpDLENBQXNELG1CQUFtQixnQkFBekUsQ0FBdEIsQ0FFQTtBQUVDO0FBQ0E7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBckIyRCxDQXNCNUM7QUFDRCxHQUFJLFlBQUosQ0FDQyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0Qix3Q0FBNUIsQ0FBcUUsTUFBckUsRUFDVixDQXpCSCxDQTJCRSxvR0Fub0Q0QyxDQW9vRDVDLG9HQXBvRDRDLENBcW9ENUMsb0dBQ0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFlBQW5CLENBQWtDLFNBQVMsTUFBVCxDQUFnQixRQUFoQixDQUF5QixDQUNoRCxvQkFBb0IsQ0FBQyxZQUFyQixDQUFrQyxLQUFLLENBQUMsRUFBTixDQUFTLE9BQTNDLENBQW1ELE1BQW5ELEVBQTJELElBQTNELENBQWdFLFNBQVMsSUFBVCxDQUFlLENBRTNELGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLFFBQVEsUUFBUixDQUFpQixhQUE3QyxDQUEyRCxNQUEzRCxFQUNBLEdBQUksQ0FBQSxHQUFHLENBQUcsR0FBRyxDQUFDLGVBQUosQ0FBb0IsR0FBSSxDQUFBLElBQUosQ0FBUyxDQUFDLElBQUksQ0FBQyxJQUFOLENBQVQsQ0FBcEIsQ0FBVixDQUNBLEdBQUksQ0FBQSxDQUFDLENBQUcsUUFBUSxDQUFDLGFBQVQsQ0FBdUIsR0FBdkIsQ0FBUixDQUNBLENBQUMsQ0FBQyxJQUFGLENBQVMsR0FBVCxDQUNBLENBQUMsQ0FBQyxRQUFGLENBQWEsUUFBYixDQUNBLENBQUMsQ0FBQyxNQUFGLENBQVcsUUFBWCxDQUNBLENBQUMsQ0FBQyxLQUFGLEdBQ0gsQ0FUakIsQ0FTa0IsU0FBUyxLQUFULENBQWUsQ0FDakIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBR0YsQ0FiZCxFQWNULENBZkYsQ0FlRztBQUdELEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUFpQyxTQUFTLE1BQVQsQ0FBZ0IsUUFBaEIsQ0FBeUIsUUFBekIsQ0FBa0MsQ0FFOUQsb0JBQW9CLENBQUMsWUFBckIsQ0FBa0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxPQUEzQyxDQUFtRCxNQUFuRCxFQUEyRCxJQUEzRCxDQUFnRSxTQUFTLElBQVQsQ0FBZSxDQUV2RCxHQUFJLENBQUEsR0FBRyxDQUFHLEdBQUcsQ0FBQyxlQUFKLENBQW9CLEdBQUksQ0FBQSxJQUFKLENBQVMsQ0FBQyxJQUFJLENBQUMsSUFBTixDQUFULENBQXFCLENBQUMsSUFBSSxDQUFDLFFBQU4sQ0FBckIsQ0FBcEIsQ0FBVixDQUNBLEdBQUksQ0FBQSxPQUFPLENBQUcsTUFBTSxDQUFDLElBQVAsQ0FBWSxHQUFaLENBQWdCLFFBQWhCLENBQWQsQ0FFSCxDQUxyQixDQUtzQixTQUFTLEtBQVQsQ0FBZSxDQUNqQixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFHRixDQVRsQixFQVVMLENBWkEsQ0FZQztBQUNILG9HQXJxRDJDLENBc3FEMUMsb0dBdHFEMEMsQ0F1cUR6QyxvR0FHRixHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixxQkFBbkIsRUFBMEMsU0FBOUMsQ0FBeUQsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHFCQUFuQixDQUF5QyxFQUF6QyxDQUMxRCxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBRUU7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUNJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixZQUFuQixDQUFrQyxVQUFVLENBQ3RDLG9CQUFvQixDQUFDLHdCQUFyQixDQUE4QyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUE3RSxDQUFrRixNQUFsRixFQUEwRixJQUExRixDQUNjLFNBQVMsSUFBVCxDQUFlLENBQ1gsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGVBQW5CLENBQXFDLElBQUksQ0FBQyxJQUExQyxDQUNGLENBSGhCLENBSWUsU0FBUyxLQUFULENBQWUsQ0FBSSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFBaUQsQ0FKbkYsRUFPTCxDQVJELENBVUE7QUFDQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixjQUF2QixDQUF1QyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsWUFBbkIsR0FJbkM7QUFDQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsT0FBVCxFQUFrQixJQUFsQixFQUEyQixDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixjQUEvQyxFQUFpRSxDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsZ0JBQS9FLENBQWlHLENBRXZGLEdBQUksQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsYUFBcEIsRUFBcUMsQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsZ0JBQTFELEVBQThFLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBM0YsQ0FBdUcsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGtCQUFuQixHQUF2RyxJQUNLLElBQUssS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGFBQW5CLEVBQXFDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixvQkFBbkIsRUFBMkMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLGdCQUF6RyxDQUNMLENBQ0UsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHdCQUFuQixDQUE0QyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsUUFBL0QsQ0FBd0UsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFlBQTNGLENBQXdHLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixXQUF2SSxDQUFtSixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsUUFBbEwsRUFDRCxDQUhJLElBSUEsSUFBSyxDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixvQkFBcEIsRUFBNEMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLGdCQUFyRSxDQUNMLENBQ0UsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGtCQUFuQixHQUVELENBR1YsQ0FkRCxJQWNNLElBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxPQUFULEVBQWtCLElBQWxCLEVBQTRCLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGNBQWhELEVBQWtFLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLG9CQUF0RixFQUE4RyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0Isa0JBQWxJLEVBQXlKLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLGdCQUFsTCxDQUVOLENBQ0ksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHdCQUFuQixDQUE0QyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsUUFBL0QsQ0FBd0UsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFlBQTNGLENBQXdHLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixDQUErQixXQUF2SSxDQUFtSixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsUUFBbEwsRUFDSCxDQUpLLElBS0QsSUFBSSxLQUFLLENBQUMsRUFBTixDQUFTLE9BQVQsRUFBa0IsSUFBbEIsR0FBNEIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGlCQUFuQixFQUFzQyxDQUF0QyxFQUEyQyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsZ0JBQTNGLENBQUosQ0FDTCxDQUNHO0FBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGdCQUFuQixHQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixrQkFBbkIsR0FFRixDQUdELEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGNBQW5CLEVBQXFDLEtBQUssQ0FBQyxFQUFOLENBQVMsT0FBVCxFQUFrQixFQUF2RCxFQUE2RCxLQUFLLENBQUMsRUFBTixDQUFTLE9BQVQsRUFBa0IsU0FBL0UsRUFBNEYsS0FBSyxDQUFDLEVBQU4sQ0FBUyxPQUFULEVBQWtCLElBQWxILENBQ0EsMEJBQ1EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFlBQW5CLEdBQ0EsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsZ0JBQXBCLEVBQXNDLFVBQTFDLENBQXNELEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixhQUFuQixHQUN0RDtBQUNBLEdBQUksdUJBQUEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULG9FQUFvQixnQkFBcEIsSUFBdUMsU0FBM0MsQ0FBcUQsQ0FDckQsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLHdCQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBViwrQ0FBQyxxQkFBb0IsZ0JBQXBCLENBQXFDLE1BQXRDLENBQWQsQ0FBMkQsQ0FBQyxFQUE1RCxDQUNBLCtDQUNJLHlCQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBYix5Q0FBSSxxQkFBb0IsZ0JBQXBCLENBQXFDLENBQXJDLEVBQXdDLFFBQTVDLENBQXNELEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixzQkFBbkIsQ0FBMEMsQ0FBMUMsQ0FBNEMsSUFBNUMsRUFFekQsQ0FDSixDQUNKLENBWkQsSUFZTyxJQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsT0FBVCxFQUFrQixFQUFsQixFQUF3QixLQUFLLENBQUMsRUFBTixDQUFTLE9BQVQsRUFBa0IsU0FBMUMsRUFBdUQsS0FBSyxDQUFDLEVBQU4sQ0FBUyxPQUFULEVBQWtCLElBQTdFLENBQW1GLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixhQUFuQixDQUFtQyxLQUFuQyxDQUUvRixVQUFVLENBQUMsVUFBWCxDQUFzQixTQUFTLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBbEIsQ0FBaUMsT0FBdkQsQ0FBK0QsSUFBL0QsRUFHQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsWUFBbkIsQ0FBa0MsVUFDbEMsQ0FDSyxHQUFLLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixTQUFwQixFQUFpQyxTQUF0QyxDQUFtRCxDQUMzQyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsU0FBcEIsQ0FBa0MsRUFBbEMsQ0FDUCxDQUNELEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixTQUFwQixDQUE4QixJQUE5QixDQUFvQyxDQUFFLGlCQUFpQixDQUFDLEVBQXBCLENBQXdCLGNBQWMsQ0FBQyxFQUF2QyxDQUEyQyxjQUFjLENBQUMsRUFBMUQsQ0FBOEQsSUFBSSxDQUFDLElBQW5FLENBQXBDLEVBRUosQ0FQRCxDQVFBLEtBQUssQ0FBQyxhQUFOLENBQW9CLFNBQVMsSUFBVCxDQUFjLFFBQWQsQ0FBdUIsQ0FFMUMsY0FBYyxDQUFDLGNBQWYsQ0FBOEIsS0FBSyxDQUFDLGtCQUFOLENBQXlCLGFBQXZELENBQXFFLFVBQXJFLENBQWdGLElBQWhGLENBQXFGLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixNQUF6RyxDQUFnSCxLQUFLLENBQUMsR0FBdEgsQ0FBMEgsUUFBMUgsRUFDQSxDQUhELENBS0M7QUFDQSxHQUFJLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGNBQXBCLEVBQXNDLHdCQUFBLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCw2RkFBcUIsTUFBckIsc0VBQTZCLE1BQTdCLEVBQW9DLENBQTlFLENBQWlGLGNBQWMsQ0FBQyxrQkFBZixDQUFrQyxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsYUFBM0QsQ0FBeUUsS0FBSyxDQUFDLEVBQU4sQ0FBUyxPQUFsRixDQUEwRixLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsTUFBOUcsQ0FBcUgsS0FBckgsQ0FBMkgsS0FBSyxDQUFDLEdBQWpJLEVBR2hGLENBN3dESSxDQUFQLENBa3hERCxFQUtELGFBRU8sUUFBUyxDQUFBLGdCQUFULEVBQTZCLENBRTVCLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVILEtBQUssQ0FBQyxDQUNKLGNBQWMsQ0FBQyxHQURYLENBRUosV0FBVyxDQUFDLEdBRlIsQ0FGSCxDQU1GLFdBQVcsQ0FBRSw0Q0FOWCxDQU9GLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FJcEMsQ0FYRSxDQUFQLENBY1AsRUFDRCxhQUVPLFFBQVMsQ0FBQSxhQUFULEVBQTBCLENBRXpCLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVGLFdBQVcsQ0FBRSx5Q0FGWCxDQUdBLEtBQUssQ0FBQyxDQUNQLEtBQUssQ0FBRSxHQURBLENBRVAsS0FBSyxDQUFDLEdBRkMsQ0FHUCxJQUFJLENBQUMsR0FIRSxDQUhOLENBUUYsVUFBVSxDQUFFLG9CQUFTLFlBQVQsQ0FBc0IsVUFBdEIsQ0FBaUMsQ0FBRSxDQVI3QyxDQVNGLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FJckMsS0FBSyxDQUFDLEVBQU4sQ0FBVyxLQUFLLENBQUMsS0FBakIsQ0FDQTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUVhLENBM0NFLENBQVAsQ0E4Q1AsRUFDRCxhQUVPLFFBQVMsQ0FBQSxjQUFULEVBQTJCLENBRTFCLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVGLFdBQVcsQ0FBRSwwQ0FGWCxDQUdGLFVBQVUsQ0FBRSxvQkFBUyxNQUFULENBQWdCLFlBQWhCLENBQTZCLG9CQUE3QixDQUFrRCxVQUFsRCxDQUE2RCxpQkFBN0QsQ0FBK0UsQ0FDdkYsQ0FKRixDQUtGLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FHbEMsQ0FSQSxDQUFQLENBV1AsRUFDRCxhQUVPLFFBQVMsQ0FBQSxlQUFULEVBQTRCLENBRTNCLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVGLFdBQVcsQ0FBRSwyQ0FGWCxDQUdGLFVBQVUsQ0FBRSxvQkFBUyxNQUFULENBQWdCLFlBQWhCLENBQTZCLG9CQUE3QixDQUFrRCxVQUFsRCxDQUE2RCxpQkFBN0QsQ0FBK0UsQ0FDdkYsQ0FKRixDQUtGLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FHbEMsQ0FSQSxDQUFQLENBV1AsRUFDRCxhQUVPLFFBQVMsQ0FBQSxxQkFBVCxFQUFrQyxDQUVqQyxNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFRixXQUFXLENBQUUsaURBRlgsQ0FHRCxLQUFLLENBQUMsQ0FDSixRQUFRLENBQUUsR0FETixDQUVKLGNBQWMsQ0FBRSxHQUZaLENBR0osT0FBTyxDQUFFLEdBSEwsQ0FJSixPQUFPLENBQUUsR0FKTCxDQUtKLElBQUksQ0FBRSxHQUxGLENBTUosVUFBVSxDQUFFLEdBTlIsQ0FPSixvQkFBb0IsQ0FBRSxHQVBsQixDQVFKLFNBQVMsQ0FBQyxHQVJOLENBSEwsQ0FhQyxVQUFVLENBQUUsb0JBQVMsTUFBVCxDQUFnQixZQUFoQixDQUE2QixnQkFBN0IsQ0FBOEMsZUFBOUMsQ0FBOEQsVUFBOUQsQ0FBeUUsTUFBekUsQ0FDWixDQUVDLENBaEJGLENBaUJGLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FFbkMsR0FBSSxLQUFLLENBQUMsU0FBTixFQUFpQixTQUFyQixDQUFnQyxLQUFLLENBQUMsU0FBTixDQUFnQixFQUFoQixDQUVoQyxLQUFLLENBQUMsU0FBTixDQUFnQixjQUFoQixDQUErQixLQUEvQixDQUNBLEtBQUssQ0FBQyxTQUFOLENBQWdCLFlBQWhCLENBQStCLEtBQS9CLENBRUQsR0FBSSxLQUFLLENBQUMsT0FBTixFQUFlLFNBQW5CLENBQThCLEtBQUssQ0FBQyxPQUFOLENBQWMsY0FBZCxDQUE2QixLQUE3QixDQUE5QixJQUNLLENBQUEsS0FBSyxDQUFDLE9BQU4sQ0FBZ0IsQ0FBQyxjQUFjLENBQUMsS0FBaEIsQ0FBaEIsQ0FFSixLQUFLLENBQUMsU0FBTixDQUFnQixjQUFoQixDQUFpQyxTQUFVLE9BQVYsQ0FBa0IsQ0FFakQsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQVIsQ0FBZ0IsTUFBL0IsQ0FBc0MsQ0FBQyxFQUF2QyxDQUEyQyxDQUN6QyxHQUFJLE9BQU8sQ0FBQyxPQUFSLENBQWdCLENBQWhCLEVBQW1CLElBQW5CLEVBQXlCLENBQXpCLEVBQThCLE9BQU8sQ0FBQyxPQUFSLENBQWdCLENBQWhCLEVBQW1CLElBQW5CLEVBQXlCLENBQTNELENBQ0EsQ0FDRyxLQUFLLENBQUMsU0FBTixDQUFnQix1QkFBaEIsQ0FBd0MsT0FBTyxDQUFDLE9BQVIsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBM0QsQ0FBa0UsT0FBTyxDQUFDLEdBQTFFLENBQThFLE9BQU8sQ0FBQyxPQUFSLENBQWdCLENBQWhCLEVBQW1CLElBQWpHLENBQXNHLE9BQU8sQ0FBQyxPQUFSLENBQWdCLENBQWhCLEVBQW1CLFlBQXpILEVBRUYsQ0FFRixDQUNELEdBQUksT0FBTyxDQUFDLE9BQVIsQ0FBZ0IsTUFBaEIsRUFBd0IsQ0FBNUIsQ0FDQSxDQUNJLFVBQVUsQ0FBQyxVQUFYLENBQXNCLGNBQWMsS0FBSyxDQUFDLE9BQU4sQ0FBYyxFQUFsRCxDQUFxRCxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBWixDQUFpQixTQUFTLENBQUMsT0FBTyxDQUFDLEdBQW5DLENBQXJELEVBRUgsQ0FFQyxDQWhCSixDQW9CQSxLQUFLLENBQUMsU0FBTixDQUFnQix1QkFBaEIsQ0FBMEMsU0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLElBQTlCLENBQW1DLFlBQW5DLENBQWdELENBQ2xGO0FBQ0EsR0FBSSxLQUFLLENBQUMsT0FBTixFQUFlLFNBQW5CLENBQ0EsQ0FDQSxHQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsRUFBZCxFQUFrQixTQUF0QixDQUNBLENBQ0EsZUFBZSxDQUFDLGdCQUFoQixDQUFpQyxLQUFLLENBQUMsT0FBTixDQUFjLEVBQS9DLENBQWtELEtBQUssQ0FBQyxPQUF4RCxFQUFpRSxJQUFqRSxDQUFzRSxTQUFTLElBQVQsQ0FBZSxDQUM1RSxHQUFJLElBQUksRUFBRSxDQUFWLENBQ0EsQ0FFRSxLQUFLLENBQUMsU0FBTixDQUFnQixjQUFoQixDQUErQixJQUEvQixDQUNDLEtBQUssQ0FBQyxPQUFOLENBQWMsY0FBZCxDQUE2QixJQUE3QixDQUVBLEtBQUssQ0FBQyxTQUFOLENBQWdCLFlBQWhCLENBQTZCLElBQTdCLENBQ0EsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsV0FBaEIsQ0FBNEIsSUFBNUIsQ0FDQTtBQUNBO0FBQ0E7QUFDQSxHQUFJLFNBQVMsRUFBRSxTQUFYLEVBQXlCLFNBQVMsQ0FBQyxDQUF2QyxDQUEwQyxLQUFLLENBQUMsU0FBTixDQUFnQixTQUFoQixDQUEwQixTQUExQixDQUFvQyxTQUFwQyxDQUE4QyxLQUFLLENBQUMsT0FBTixDQUFjLEVBQTVELEVBRzNDLENBQ0QsR0FBSSxJQUFJLEVBQUUsQ0FBVixDQUNBLENBQ00sTUFBTSxDQUFDLEVBQVAsQ0FBVSx1QkFBVixDQUFrQyxDQUFDLEVBQUUsQ0FBRSxTQUFMLENBQWUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFQLENBQWUsSUFBNUMsQ0FDbEMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQURXLENBQ0osb0JBQW9CLENBQUMsS0FBSyxDQUFDLE9BQU4sQ0FBYyxFQUQvQixDQUNrQyxVQUFVLENBQUMsU0FEN0MsQ0FDdUQsZUFBZSxDQUFDLENBRHZFLENBQWxDLEVBR0osQ0FDVCxDQXRCSCxDQXNCSSxTQUFTLEtBQVQsQ0FBZSxDQUNOLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUVWLENBekJILEVBMkJDLENBN0JELElBOEJNLENBRUosZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsc0RBQTVCLENBQW1GLE9BQW5GLEVBQ0MsQ0FDRixDQXBDRCxJQXFDQSxDQUNHLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLDBEQUE1QixDQUF1RixPQUF2RixFQUNGLENBQ0wsQ0ExQ0osQ0E4Q0wsQ0E3Rk0sQ0FBUCxDQStGUCxFQUNELGFBRU8sUUFBUyxDQUFBLFdBQVQsRUFBd0IsQ0FFMUIsTUFBTyxDQUNKLFFBQVEsQ0FBRSxHQUROLENBRUosV0FBVyxDQUFFLHVDQUZULENBR0gsVUFBVSxDQUFFLG9CQUFVLE1BQVYsQ0FBa0IsVUFBbEIsQ0FBNkIsU0FBN0IsQ0FBdUMsbUJBQXZDLENBQTJELG9CQUEzRCxDQUFnRixpQkFBaEYsQ0FBa0csZ0JBQWxHLENBQW1ILFdBQW5ILENBQStILHlCQUEvSCxDQUF5SixlQUF6SixDQUF5SyxlQUF6SyxDQUF5TCxRQUF6TCxDQUFrTSxFQUFsTSxDQUFzTSwyQkFFN00sTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLENBQW1CLEtBQW5CLENBQ0EsTUFBTSxDQUFDLGlCQUFQLENBQTJCLElBQTNCLENBRUEsTUFBTSxDQUFDLEtBQVAsQ0FBZSxlQUFmLENBRUEsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsRUFBcUIsU0FBekIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQXNCLENBQUMsaUJBQWlCLENBQUMsQ0FBbkIsQ0FBdEIsQ0FFbkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQWdDLENBQUMsT0FBTyxDQUFDLEVBQVQsQ0FBaEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBK0IsS0FBL0IsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsRUFBaEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBbUMsTUFBbkMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBa0MsV0FBVyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXJCLENBQTZCLEdBQTdCLENBQWlDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLFlBQS9CLENBQTRDLEVBQS9HLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUF3QyxJQUF4QyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUErQixDQUFDLFlBQVksQ0FBQyxDQUFkLENBQWdCLGtCQUFrQixDQUFDLElBQW5DLENBQS9CLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE1BQXBCLENBQTJCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUFyRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFrQyxJQUFsQyxDQUNBLEdBQUksTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQTFCLEVBQTZDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUErQixZQUEvQixFQUE2QyxDQUE5RixDQUFpRyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsU0FBckIsQ0FBaUMsSUFBakMsQ0FBakcsSUFDSyxDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixTQUFyQixDQUFpQyxLQUFqQyxDQUVMLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFxQyxVQUFVLENBQ3BDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUFnQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBK0IsS0FBL0IsQ0FBc0MsSUFBdEUsQ0FDVixDQUZELENBSUYsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsRUFBd0IsSUFBeEIsRUFBaUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLEVBQXNCLFNBQTNELENBQXVFLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUF1QixFQUF2QixDQUVwRSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXdDLENBQ3JDLFVBQVUsQ0FBRSxDQUR5QixDQUVyQyxRQUFRLENBQUUsRUFGMkIsQ0FHckMsSUFBSSxDQUFFLElBSCtCLENBQXhDLENBTUgsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsU0FBVSxNQUFWLENBQWtCLENBR3BDLEdBQUksQ0FBQSxhQUFhLENBQUcsU0FBUyxDQUFDLElBQVYsQ0FBZSxDQUNuQyxTQUFTLENBQUUsTUFBTSxDQUFDLGlCQURpQixDQUVuQyxXQUFXLENBQUUscUJBRnNCLENBR25DLFVBQVUsQ0FBRSwrQkFIdUIsQ0FJbkMsSUFBSSxDQUFFLElBSjZCLENBS25DLE9BQU8sQ0FBRSxDQUNQLFFBQVEsQ0FBRSxtQkFBWSxDQUNwQixNQUFPLENBQUMsT0FBTyxDQUFDLE1BQVQsQ0FBUCxDQUNELENBSE0sQ0FMMEIsQ0FBZixDQUFwQixDQVlBLGFBQWEsQ0FBQyxNQUFkLENBQXFCLElBQXJCLENBQTBCLFNBQVUsUUFBVixDQUFtQixNQUFuQixDQUEwQixLQUExQixDQUFpQyxDQUczRCxDQUhBLENBR0UsVUFBWSxDQUVkLENBTEEsRUFRTCxDQXZCQyxDQTJCSCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBbUMsU0FBUyxpQkFBVCxDQUNuQyxDQUVJLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixFQUF1QyxTQUEzQyxDQUNBLENBQ0csTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUF3QyxpQkFBeEMsQ0FDRixDQUhELElBSUEsQ0FDRyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsRUFBdUMsQ0FBdkMsRUFBNEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixFQUF1QyxpQkFBdkYsQ0FBMEcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUF3QyxpQkFBeEMsQ0FBMUcsSUFDSyxDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBc0MsQ0FBdEMsQ0FDUCxDQUVKLENBWkQsQ0FlSCxHQUFJLENBQUEsVUFBVSxDQUFFLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBMUIsQ0FBd0MsR0FBeEMsQ0FBNEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUF0RCxDQUFrRSxpQkFBbEUsQ0FBb0YsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFwSCxDQUFtSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBdkosQ0FBaEIsQ0FDQSxHQUFJLENBQUEsY0FBYyxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLElBQXhDLENBR0c7QUFDSDtBQUNBLEdBQUksVUFBVSxDQUFDLE9BQVgsQ0FBbUIsaUJBQW5CLEVBQXNDLENBQXRDLEVBQTJDLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUExRCxDQUNBLENBQ0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQXBCLENBQWtDLElBQWxDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWtDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFFBQXJELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLE9BQTlCLENBQXNDLE1BQXRDLENBQTZDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxPQUE3RSxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBMkMsSUFBM0MsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBcEIsQ0FBK0IsSUFBL0IsQ0FDSCxDQVBELElBU0EsQ0FDRSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsUUFBaEMsQ0FBeUMsQ0FBQyxFQUFELENBQXpDLENBQ0QsQ0FFRTtBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQWhIMk4sQ0FpSGpOO0FBQ0E7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFFUSxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQStCLEtBQS9CLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxvQkFBVixDQUFpQyxJQUFqQyxDQUNELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBdUMsSUFBdkMsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBaUMsTUFBakMsQ0FHQyxNQUFNLENBQUMsTUFBUCxDQUFjLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUF4QyxDQUVDLEdBQUksTUFBTSxDQUFDLE1BQVAsRUFBZSxTQUFuQixDQUErQixNQUFNLENBQUMsTUFBUCxDQUFjLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixnQkFBeEMsQ0FDL0IsR0FBSSxNQUFNLENBQUMsTUFBUCxFQUFlLFNBQW5CLENBQStCLE1BQU0sQ0FBQyxNQUFQLENBQWMsQ0FBZCxDQUdoQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsbUJBQXBCLENBQTBDLFNBQVMsRUFBVCxDQUFZLEtBQVosQ0FBb0IsQ0FFeEQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLEVBQTBDLFNBQTlDLENBQXlELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsRUFBekMsQ0FDekQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHdCQUFwQixDQUE2QyxFQUE3QyxDQUFnRCxLQUFoRCxFQUVMLENBTEQsQ0FPQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isd0JBQXBCLENBQStDLFNBQVMsRUFBVCxDQUFZLEtBQVosQ0FFdEQsQ0FFVyxHQUFJLENBQUEsR0FBSixDQUNBLEdBQUksQ0FBQSxjQUFjLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG1CQUExQyxDQUdBLEdBQUksS0FBSyxFQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixHQUFvQixTQUE3QixFQUEwQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsR0FBb0IsSUFBOUQsRUFBc0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLE1BQWxCLENBQXlCLENBQW5HLENBQ0UsQ0FDTSxHQUFHLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixDQUEwQyxHQUExQyxDQUE4QyxTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsRUFBVCxDQUFjLENBQTFFLEVBQTRFLE9BQTVFLENBQW9GLEVBQXBGLENBQU4sQ0FFQSxHQUFJLEdBQUcsRUFBRSxDQUFULENBQVcsQ0FDUCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQTJDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBMEMsR0FBMUMsQ0FBM0MsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLENBQXVDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBMEMsR0FBMUMsQ0FBdkMsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLGNBQXpDLENBQTBELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsSUFBekMsQ0FBK0MsSUFBL0MsQ0FBb0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUF5QyxFQUE3RixDQUFpRyxHQUEzSixDQUNILENBRUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLE9BQTlCLENBQXNDLE1BQXRDLENBQStDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBekQsQ0FFQSxHQUFJLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUE5QixDQUErQyxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQThCLElBQTlCLENBQy9DLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUErQixJQUEvQixDQUVMLENBaEJILElBZ0JPLENBQ0QsR0FBRyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBMEMsR0FBMUMsQ0FBOEMsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUExRSxFQUE0RSxPQUE1RSxDQUFvRixFQUFwRixDQUFOLENBQ0EsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFXLENBQ1Qsb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLEVBQTlDLEVBQWtELElBQWxELENBQXVELFNBQVUsSUFBVixDQUFnQiwyQkFFL0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUEyQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLEdBQTFDLENBQTNDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUF5QyxJQUF6QyxDQUFnRCxJQUFJLENBQUMsSUFBTCxDQUFVLElBQTFELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUF1QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLEdBQTFDLENBQXZDLENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUF5QyxjQUF6QyxDQUEwRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLElBQXpDLENBQStDLElBQS9DLENBQW9ELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsRUFBN0YsQ0FBaUcsR0FBM0osQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsR0FBMkMsU0FBL0MsQ0FDQSxDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixtQkFBckIsQ0FBeUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUF5QyxFQUFsRixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQix3QkFBckIsQ0FBOEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUF5QyxPQUF2RixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLGFBQTNELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLE9BQTlCLENBQXNDLE1BQXRDLENBQStDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsSUFBeEYsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBb0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUF5QyxJQUE3RCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUE4QixPQUFPLENBQUMsSUFBUixDQUFhLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsSUFBdEQsQ0FBOUIsQ0FDSCxDQUVELEdBQUksd0JBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLHNFQUFxQixVQUFyQixJQUFrQyxTQUFsQyxFQUErQyxjQUFjLEVBQUUsRUFBbkUsQ0FBdUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQXBCLEdBQXZFLElBQ0ssQ0FBQSxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQThCLElBQTlCLENBQ0wsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQStCLElBQS9CLENBRUgsQ0FyQkwsQ0FxQk0sU0FBUyxLQUFULENBQWUsQ0FDZixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDTCxDQXZCRCxFQXlCSCxDQUNKLENBQ1osQ0F0RE8sQ0EwREEsR0FBSSxDQUFBLFVBQVUsQ0FBRyxDQUFDLFlBQUQsQ0FBakIsQ0FDQSxHQUFJLENBQUEsZ0JBQWdCLENBQUcsQ0FBRSxHQUFHLENBQUUsQ0FBQyxDQUFDLE9BQU8sZUFBUixDQUF3QixRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBTixDQUFtQixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFuQyxDQUFELENBQTZDLENBQUMsSUFBSSxDQUFDLGtCQUFOLENBQXlCLEtBQUssQ0FBQyxFQUEvQixDQUE3QyxDQUFoQyxDQUFELENBQVAsQ0FBMkgsT0FBTyxDQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBTixDQUFvQixNQUFNLENBQUMsS0FBM0IsQ0FBRCxDQUFwSSxDQUF3SyxJQUFJLENBQUUsYUFBOUssQ0FBNEwsUUFBUSxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBaE4sQ0FBK04sTUFBTSxDQUFHLE1BQU0sQ0FBQyxPQUEvTyxDQUF1UCxhQUFhLENBQUcsTUFBTSxDQUFDLGdCQUE5USxDQUFnUyxNQUFNLENBQUMsVUFBdlMsQ0FBdkIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBcEIsQ0FBb0MseUJBQXlCLENBQUMsY0FBMUIsQ0FBeUMsZ0JBQXpDLENBQXBDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE9BQXBCLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFoRCxDQUVBLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBdEMsQ0FFQSxNQUFNLENBQUMsR0FBUCxDQUFhLG1CQUFiLENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQTZCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixTQUF2RCxDQUdBLG9CQUFvQixDQUFDLDJCQUFyQixDQUFpRCxNQUFqRCxDQUF3RCxNQUF4RCxFQUFnRSxJQUFoRSxDQUFxRSxTQUFVLElBQVYsQ0FBZ0IsQ0FDbEYsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixDQUE0QyxJQUFJLENBQUMsSUFBakQsQ0FDQTtBQUNBO0FBRUEsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsbUJBQXJCLEVBQTBDLElBQTlDLENBQW9ELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixtQkFBcEIsQ0FBd0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG1CQUE3RCxDQUFpRixJQUFqRixFQUFwRCxJQUNLLENBRUYsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQStCLElBQS9CLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHNCQUFwQixDQUEyQyxxREFBM0MsQ0FDRCxDQUVELENBWkosQ0FZSyxTQUFTLEtBQVQsQ0FBZSxDQUNGLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNyQixDQWRHLEVBa0JKLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF5QixTQUFTLE1BQVQsQ0FBZ0IsUUFBaEIsQ0FBeUIsQ0FDdEMsb0JBQW9CLENBQUMsWUFBckIsQ0FBa0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUE1QyxDQUFvRCxNQUFwRCxFQUE0RCxJQUE1RCxDQUFpRSxTQUFTLElBQVQsQ0FBZSxDQUU1RCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixRQUFRLFFBQVIsQ0FBaUIsYUFBN0MsQ0FBMkQsTUFBM0QsRUFDQSxHQUFJLENBQUEsR0FBRyxDQUFHLEdBQUcsQ0FBQyxlQUFKLENBQW9CLEdBQUksQ0FBQSxJQUFKLENBQVMsQ0FBQyxJQUFJLENBQUMsSUFBTixDQUFULENBQXBCLENBQVYsQ0FDQSxHQUFJLENBQUEsQ0FBQyxDQUFHLFFBQVEsQ0FBQyxhQUFULENBQXVCLEdBQXZCLENBQVIsQ0FDQSxDQUFDLENBQUMsSUFBRixDQUFTLEdBQVQsQ0FDQSxDQUFDLENBQUMsUUFBRixDQUFhLFFBQWIsQ0FDQSxDQUFDLENBQUMsTUFBRixDQUFXLFFBQVgsQ0FDQSxDQUFDLENBQUMsS0FBRixHQUNILENBVGpCLENBU2tCLFNBQVMsS0FBVCxDQUFlLENBQ2pCLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUdGLENBYmQsRUFjVCxDQWZILENBZUk7QUFHRCxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsQ0FBd0IsU0FBUyxNQUFULENBQWdCLFFBQWhCLENBQXlCLFFBQXpCLENBQWtDLENBRXJELG9CQUFvQixDQUFDLFlBQXJCLENBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBNUMsQ0FBb0QsTUFBcEQsRUFBNEQsSUFBNUQsQ0FBaUUsU0FBUyxJQUFULENBQWUsQ0FFeEQsR0FBSSxDQUFBLEdBQUcsQ0FBRyxHQUFHLENBQUMsZUFBSixDQUFvQixHQUFJLENBQUEsSUFBSixDQUFTLENBQUMsSUFBSSxDQUFDLElBQU4sQ0FBVCxDQUFxQixDQUFDLElBQUksQ0FBQyxRQUFOLENBQXJCLENBQXBCLENBQVYsQ0FDQSxHQUFJLENBQUEsT0FBTyxDQUFHLE1BQU0sQ0FBQyxJQUFQLENBQVksR0FBWixDQUFnQixRQUFoQixDQUFkLENBRUgsQ0FMckIsQ0FLc0IsU0FBUyxLQUFULENBQWUsQ0FDakIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBR0YsQ0FUbEIsRUFVTCxDQVpBLENBWUM7QUFFRjtBQUVGLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUFnQyxDQUFDLElBQUksQ0FBQyxFQUFOLENBQWhDLENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUEyQyxTQUFVLElBQVYsQ0FBZ0IsQ0FDeEQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXVCLElBQUksQ0FBQyxVQUE1QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF5QixJQUF6QixDQUVGLENBSkQsQ0FPQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBOEIsU0FBUyxVQUFULENBQXFCLFVBQXJCLENBQWdDLFFBQWhDLENBQXlDLDJCQUduRTtBQUNBLEdBQUksQ0FBQSxRQUFRLENBQUcsRUFBRSxDQUFDLEtBQUgsRUFBZixDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLElBQXZCLENBQ0EsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNBLEdBQUksQ0FBQSxPQUFKLENBR0EsR0FBSSxVQUFVLEVBQUUsU0FBaEIsQ0FBMkIsVUFBVSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBc0MsVUFBbkQsQ0FDM0IsR0FBSSxRQUFRLEVBQUUsU0FBZCxDQUF5QixRQUFRLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUFzQyxRQUFqRCxDQUV6QixHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixHQUFnQyxTQUFwQyxDQUErQyxxREFDdkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLDBCQUFnQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBOEIsSUFBOUQsa0RBQWdDLHdCQUFvQyxNQUFwRSxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBc0MsY0FBdEMsMEJBQXFELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUE4QixJQUFuRixrREFBcUQsd0JBQW9DLE1BQXpGLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUFzQyxhQUF0QyxDQUFzRCxJQUFJLENBQUMsSUFBTCxDQUFVLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBc0MsY0FBdEMsQ0FBcUQsUUFBL0QsQ0FBdEQsQ0FDUCxDQUVELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQStCLENBQW5DLENBQXFDLENBQ2pDLEdBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBcEIsQ0FBK0IsUUFBekMsRUFBbUQsVUFBdkQsQ0FDSSxPQUFPLENBQUcsSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBcEIsQ0FBK0IsUUFBekMsQ0FBVixDQUNQLENBRUEsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBeEIsQ0FDTyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsT0FBcEIsQ0FBOEIsQ0FBQyxPQUFPLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLElBQTlCLENBQW1DLEtBQW5DLENBQTBDLENBQUMsVUFBVSxDQUFFLENBQWIsRUFBa0IsUUFBNUQsQ0FBc0UsVUFBVSxDQUFHLFFBQW5GLENBQVgsQ0FBOUIsQ0FEUCxJQUdPLENBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE9BQXBCLENBQThCLEVBQTlCLENBQ1AsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE9BQXBCLENBQTRCLE9BQTVCLHdCQUFvQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTlDLGdEQUFvQyxzQkFBcUIsVUFBekQsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsVUFBaEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsT0FBcEIsQ0FBNEIsUUFBNUIsQ0FBdUMsUUFBdkMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsT0FBcEIsQ0FBNEIsYUFBNUIsQ0FBNEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUFzQyxhQUFsRixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixPQUFwQixDQUE0QixLQUE1QixDQUFzQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBMUQsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsV0FBaEMsQ0FBOEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQWxFLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLFFBQWhDLENBQTJDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixPQUFwQixDQUE0QixRQUF2RSxDQUVBO0FBQ0E7QUFFQSxRQUFRLENBQUMsT0FBVCxDQUFpQixDQUFDLElBQUksQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsT0FBM0IsQ0FBakIsRUFFSCxNQUFPLENBQUEsUUFBUSxDQUFDLE9BQWhCLENBQ0QsQ0E1Q0QsQ0E4Q0gsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXlCLFNBQVUsV0FBVixDQUFzQixjQUF0QixDQUFzQyxDQUU1RCxNQUFNLENBQUMsTUFBUCxDQUFnQixFQUFoQixDQUNBLEdBQUksQ0FBQSxJQUFJLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUMsQ0FDQTtBQUNBO0FBQ08sR0FBSSxXQUFXLEVBQUUsU0FBakIsQ0FDQSxDQUVTLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUE4QixJQUE5QixDQUFtQyxNQUFuQyxDQUEwQyxDQUExQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF5QixLQUF6QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix1QkFBcEIsQ0FBOEMsSUFBOUMsQ0FDQSxvQkFBb0IsQ0FBQyxZQUFyQixDQUFrQyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTVDLENBQTJELFdBQTNELENBQXVFLGNBQXZFLENBQXNGLENBQXRGLEVBQXlGLElBQXpGLENBQThGLFNBQVMsSUFBVCxDQUFlLENBSXpHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUFnQyxJQUFJLENBQUMsSUFBckMsQ0FFQSxNQUFNLENBQUMsaUJBQVAsQ0FBMkIsV0FBM0IsQ0FDQSxNQUFNLENBQUMsY0FBUCxDQUF3QixjQUF4QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBK0IsSUFBL0IsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBa0MsS0FBbEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsdUJBQXBCLENBQThDLEtBQTlDLENBRUgsQ0FaRCxDQWFDLFNBQVMsS0FBVCxDQUFlLENBQ1gsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUErQixJQUEvQixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix1QkFBcEIsQ0FBOEMsS0FBOUMsQ0FDSixDQWpCRCxFQWtCUCxDQUVYLENBaENELENBZ0NFO0FBRUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQXBCLENBQW9DLFVBRXBDLENBR0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUF1QyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQWpELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUF2RCxDQUFnRSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEYsQ0FBaUcsQ0FBakcsQ0FBbUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLFFBQW5JLEVBR0gsQ0FURCxDQVVNO0FBQ0o7QUFDQTtBQUNGLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFxQyxTQUFVLE9BQVYsQ0FBa0IsT0FBbEIsQ0FBMEIsT0FBMUIsQ0FBa0MsUUFBbEMsQ0FDckMsc0JBRUksR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBOEIsSUFBOUIsRUFBb0MsU0FBeEMsQ0FBbUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLElBQTlCLENBQXFDLEVBQXJDLENBQ25ELEdBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBcEIsQ0FBK0IsUUFBekMsRUFBbUQsT0FBdkQsQ0FBZ0UsT0FBTyxDQUFHLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQStCLFFBQXpDLENBQVYsQ0FDaEUsR0FBTSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUE1QyxDQUNBLEdBQUksUUFBUSxFQUFFLFNBQWQsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxRQUFoQyxDQUEyQyxpQkFBaUIsQ0FBQyxRQUE3RCxDQUNBLFFBQVEsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsUUFBMUMsQ0FDRCxDQUdELE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBWCxDQUF5QixjQUF6QixDQUF3QyxjQUF4QyxDQUF3RCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBNUUsRUFDQSxTQUFBLE1BQU0sQ0FBQyxzQkFBd0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFuQyxDQUFOLDBDQUEwRCxhQUExRCxHQUNBLEdBQU0sQ0FBQSxRQUFRLFdBQUcsTUFBTSxDQUFDLHNCQUF3QixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQW5DLENBQVQsbUNBQUcsU0FBMEQsTUFBM0UsQ0FDRztBQUVILEdBQUksUUFBSixDQUNBLENBQ1MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHVCQUFwQixDQUE4QyxJQUE5QyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUE4QixJQUE5QixDQUFtQyxNQUFuQyxDQUEwQyxDQUExQyxDQUVELG9CQUFvQixDQUFDLDhCQUFyQixDQUFvRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isa0JBQXhFLENBQTJGLE9BQTNGLENBQW1HLE9BQW5HLENBQTJHLE9BQTNHLENBQW1ILFFBQW5ILENBQTRILElBQTVILENBQWlJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxRQUFqSyxDQUEySyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBOEIsT0FBOUIsQ0FBc0MsTUFBak4sQ0FBd04sTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGVBQTVPLEVBQTZQLElBQTdQLENBQWtRLFNBQVMsSUFBVCxDQUFlLENBRzdQO0FBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLElBQTlCLENBQXFDLElBQUksQ0FBQyxJQUExQyxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGdCQUFyQixFQUF1QyxNQUEzQyxDQUFtRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsdUJBQXBCLENBQTRDLElBQTVDLENBQW1ELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsSUFBSSxDQUFDLElBQTlDLENBQW5ELENBQ25ELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsR0FFQSxRQUFRLENBQUMsVUFBVSxDQUNmLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBK0IsSUFBL0IsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBa0MsS0FBbEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsdUJBQXBCLENBQThDLEtBQTlDLENBRUEsR0FBSSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUF6QixDQUF3QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsV0FBaEMsQ0FBNEMsQ0FBNUMsQ0FDeEMsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBcEIsQ0FBK0IsQ0FBL0IsRUFBb0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLFdBQWhDLEVBQTZDLENBQXJGLENBQXdGLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxXQUFoQyxDQUE0QyxDQUE1QyxDQUN4RixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBK0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBcEIsQ0FBK0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLFFBQXpFLENBQS9CLENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLFVBQTlCLENBQXlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUE3RCxDQUVBLHlCQUF5QixDQUFDLE9BQTFCLENBQWtDLENBQ2xDLEdBQUcsQ0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUFOLENBQThCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQU4sQ0FBbUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBbkMsQ0FBRCxDQUE2QyxDQUFDLElBQUksQ0FBQyxrQkFBTixDQUF5QixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLHVCQUEvRCxDQUE3QyxDQUN6QyxDQUFDLElBQUksQ0FBQyxtQkFBTixDQUEwQixLQUFLLENBQUUsSUFBakMsQ0FEeUMsQ0FDRixDQUFDLElBQUksQ0FBQyxvQkFBTixDQUEyQixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLElBQS9ELENBREUsQ0FBcEMsQ0FBRCxDQUQ2QixDQUU4RSxRQUFRLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUZsRyxDQUVpSCxlQUFlLENBQUMsTUFBTSxDQUFDLGFBRnhJLENBQWxDLEVBSUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQXBCLENBQW9DLEtBQXBDLENBQ0gsQ0FoQk8sQ0FBUixDQWtCRCxDQTFCbkIsQ0EwQm9CLFNBQVMsS0FBVCxDQUFlLENBQ2YsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUErQixJQUEvQixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix1QkFBcEIsQ0FBOEMsS0FBOUMsQ0FDTixDQTlCZCxFQStCUCxDQXBDRCxJQW9DSyxDQUNJLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBdEMsQ0FBK0MsU0FBL0MsRUFDQSxRQUFRLENBQUMsVUFBVSxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBK0IsSUFBL0IsQ0FBb0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHVCQUFwQixDQUE4QyxLQUE5QyxDQUFvRCxDQUFyRyxDQUFSLENBQ0osQ0FFUixDQTNERCxDQStEQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBa0MsVUFBVSxDQUV4QyxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIsY0FBekIsQ0FBd0MsY0FBeEMsQ0FBd0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQTVFLEVBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUF2RCxDQUFnRSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEYsQ0FBaUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLFdBQWpJLENBQTZJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxRQUE3SyxFQUNFLENBSk4sQ0FNQztBQUNBO0FBQ0E7QUFDQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLENBQXVDLFNBQVUsSUFBVixDQUFnQixDQUNyRCxHQUFJLENBQUEsSUFBSSxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDLENBQ0EsR0FBSSxDQUFBLFFBQVEsQ0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsc0JBQXRCLENBQUwsQ0FBZixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBK0IsS0FBL0IsQ0FDQSxvQkFBb0IsQ0FBQywyQkFBckIsQ0FBaUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUEzRCxDQUFtRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTdFLENBQTRGLEdBQTVGLENBQWdHLElBQWhHLENBQXFHLENBQUMsTUFBTSxDQUFFLFFBQVQsQ0FBckcsRUFBeUgsSUFBekgsQ0FBOEgsU0FBUyxJQUFULENBQWUsQ0FFakgsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLElBQTlCLENBQXFDLElBQUksQ0FBQyxJQUExQyxDQUNBO0FBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixHQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBK0IsSUFBL0IsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBa0MsS0FBbEMsQ0FDM0I7QUFDMEIsQ0FSM0IsQ0FRNEIsU0FBUyxLQUFULENBQWUsQ0FDZixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDTixDQVZ0QixFQVdDLENBZkgsQ0FpQkEsNEJBQ0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHdCQUFwQixDQUErQyxVQUMvQyxDQUNNLEdBQUksQ0FBQSxJQUFJLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFtQyxDQUF2QyxDQUNBLENBQ0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUErQixLQUEvQixDQUNBLG9CQUFvQixDQUFDLGtCQUFyQixDQUF3QyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQWxELENBQWlFLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQTNFLENBQThGLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBeEcsQ0FBZ0gsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBJLENBQW1KLE1BQU0sQ0FBQyxNQUExSixDQUFpSyxDQUFqSyxDQUFtSyxJQUFuSyxFQUF5SyxJQUF6SyxDQUE4SyxTQUFTLElBQVQsQ0FBZSxDQUNqTCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBOEIsSUFBOUIsQ0FBcUMsSUFBSSxDQUFDLElBQTFDLENBQ0E7QUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLEdBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUErQixJQUEvQixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFrQyxLQUFsQyxDQUVYLENBUEQsQ0FPRSxTQUFTLEtBQVQsQ0FBZSxDQUNiLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUVpQixDQVZyQixFQVdILENBQ0osQ0FsQkQsQ0FvQk4sTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFzQyxVQUFXLENBQzNDO0FBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsSUFBeUIsU0FBekIsRUFBc0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLElBQXlCLElBQW5FLENBQ0EsQ0FFSSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixFQUF1QixZQUF2QixJQUF1QyxTQUEzQyxDQUFzRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBb0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLEVBQXVCLFlBQXZCLENBQXBDLENBQ3RELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLEVBQXVCLGNBQXZCLElBQXlDLFNBQTdDLENBQXdELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixlQUFwQixDQUF1QyxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsRUFBdUIsY0FBdkIsQ0FBdkMsQ0FFM0QsQ0FDSixDQVRILENBVUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQXBCLENBQW1DLFNBQVMsT0FBVCxDQUFrQixDQUM1QztBQUNBLEdBQUksQ0FBQSxVQUFVLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXJDLENBRUEsR0FBSSxDQUFBLFlBQVksQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZUFBdkMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsRUFBdUIsQ0FBQyxhQUFhLFVBQWQsQ0FBeUIsZUFBZ0IsWUFBekMsQ0FBdkIsQ0FFQSxHQUFJLE9BQUosQ0FBYSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0Qix3Q0FBNUIsQ0FBcUUsTUFBckUsRUFDdkIsQ0FSQyxDQVVBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFvQyxVQUFZLENBRTlDLEdBQUksQ0FBQSxJQUFJLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUMsQ0FDQSxvQkFBb0IsQ0FBQyxrQkFBckIsQ0FBd0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG1CQUE3RCxDQUFpRixNQUFqRixDQUF3RixJQUF4RixDQUE2RixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsd0JBQWxILEVBQTRJLElBQTVJLENBQWlKLFNBQVMsSUFBVCxDQUFlLENBQUM7QUFFdkksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQW1DLElBQUksQ0FBQyxJQUFMLENBQVUsVUFBN0MsQ0FDQTtBQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBK0IsSUFBL0IsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBa0MsS0FBbEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBcEIsR0FHQyxDQVQzQixDQVM0QixTQUFTLEtBQVQsQ0FBZSxDQUNuQixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDRixDQVh0QixFQWFELENBaEJELENBa0JFO0FBQ0YsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXVCLFNBQVMsSUFBVCxDQUN2QixDQUNFLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFwQixDQUEyQixDQUFDLEVBQTVCLENBQ0EsQ0FDQyxHQUFJLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxJQUFSLEVBQWMsa0JBQWxCLENBQ0EsQ0FDTSxHQUFJLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxLQUFSLEVBQWUsU0FBZixFQUE0QixRQUFPLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxLQUFmLEdBQXVCLFFBQXZELENBQ0EsQ0FDTSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTZCLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxLQUFSLENBQWMsRUFBM0MsQ0FDTCxDQUhELElBR00sQ0FBQSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTZCLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxLQUFyQyxDQUVYLENBQ0QsR0FBSSxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsSUFBUixFQUFjLFlBQWxCLENBQ0MsQ0FFTSxHQUFJLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxLQUFSLEVBQWUsU0FBZixFQUE0QixRQUFPLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxLQUFmLEdBQXVCLFFBQXZELENBQ0QsQ0FDTSxNQUFNLENBQUMsRUFBUCxDQUFVLG1CQUFWLENBQWdDLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxLQUFSLENBQWMsRUFBOUMsQ0FDTCxDQUhBLElBR0ssQ0FBQSxNQUFNLENBQUMsRUFBUCxDQUFVLG1CQUFWLENBQWdDLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxLQUF4QyxDQUNWLENBQ0YsQ0FFRixDQXRCRCxDQXNCRztBQUVEO0FBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSx5QkFBVixDQUFzQyxVQUFXLENBRTdDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLEVBQXNCLFNBQTFCLENBQ0ksSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLE1BQXJDLENBQTRDLENBQUMsRUFBN0MsQ0FBaUQsQ0FBRTtBQUMvQyxHQUFJLENBQUEsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixDQUFyQixFQUF3QixRQUEzQyxDQUNBLEdBQUksY0FBYyxFQUFFLFNBQWhCLEVBQTZCLGNBQWMsRUFBRSxJQUFqRCxDQUF3RCxDQUN2RDtBQUNHLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixDQUFyQixFQUF3QixHQUF4QixDQUE0QixNQUEzQyxDQUFrRCxDQUFDLEVBQW5ELENBQXVELENBQ25ELEdBQUksQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsQ0FBckIsRUFBd0IsR0FBeEIsQ0FBNEIsQ0FBNUIsRUFBK0IsSUFBL0IsR0FBc0MsY0FBdEMsRUFBd0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLENBQXJCLEVBQXdCLEdBQXhCLENBQTRCLENBQTVCLEVBQStCLElBQS9CLEdBQXNDLHlCQUEvRixHQUE4SCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsQ0FBckIsRUFBd0IsR0FBeEIsQ0FBNEIsQ0FBNUIsRUFBK0IsS0FBL0IsRUFBc0MsSUFBeEssQ0FBK0ssQ0FBRTtBQUU5SztBQUNBLEdBQUksQ0FBQSxVQUFVLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLENBQXJCLEVBQXdCLEdBQXhCLENBQTRCLENBQTVCLEVBQStCLElBQWhELENBRUEsTUFBTSxDQUFDLEdBQVAsQ0FBVyxRQUFRLGNBQVIsQ0FBdUIsVUFBbEMsQ0FBNkMsU0FBUyxLQUFULENBQWdCLElBQWhCLENBQXFCLENBQUc7QUFFbkU7QUFDSTtBQUVKLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF1QixJQUF2QixFQUVBLENBUEYsRUFPSTtBQUNGLEdBQUksQ0FBQSxJQUFJLENBQUcseUJBQXlCLENBQUMsaUJBQTFCLENBQTRDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUF0RSxDQUFzRixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZ0JBQWhILENBQWlJLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixZQUEzSixDQUF3SyxjQUF4SyxDQUF1TCxVQUF2TCxDQUFYLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXVCLElBQXZCLEVBQ0o7QUFDUjtBQUNEO0FBQ0gsQ0FBQztBQUNULENBM0JELENBMkJDO0FBRUwsR0FBSSxDQUFBLFlBQVksQ0FBQyxRQUFiLENBQUEsWUFBYSxDQUFTLElBQVQsQ0FDakIsQ0FDUSxHQUFJLENBQUEsS0FBSyxDQUFHLElBQUksQ0FBQyxLQUFqQixDQUVBLEdBQUksS0FBSyxFQUFFLFNBQVgsQ0FDQSxDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBK0IsS0FBSyxDQUFDLFlBQXJDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLEtBQUssQ0FBQyxRQUEzQyxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLHNCQUFyQixFQUE2QyxDQUFqRCxDQUFvRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isd0JBQXBCLEdBQXBELElBQ0ssQ0FBQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLENBQXFDLEtBQUssQ0FBQyxNQUEzQyxFQUNSLENBRVIsQ0FaRCxDQWNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixFQUE4QixNQUFNLENBQUMsRUFBUCxDQUFVLG9CQUFWLEVBQWdDLEdBQWxFLENBQ0EsQ0FHSTtBQUNBLEdBQUksQ0FBQSxlQUFlLENBQUcsUUFBUSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXhDLENBQ0EsR0FBSSxDQUFBLGlCQUFpQixDQUFHLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUExQixDQUF3QyxHQUF4QyxDQUE0QyxNQUFNLENBQUMsRUFBUCxDQUFVLGlCQUE5RSxDQUNBLEdBQUksQ0FBQSxPQUFPLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXNCLGlCQUF0QixDQUF3QyxJQUF4QyxDQUFkLENBQ0EsR0FBSSxDQUFBLFFBQVEsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsaUJBQXJCLENBQXVDLGVBQXZDLENBQXVELGNBQXZELENBQXNFLFlBQXRFLENBQWYsQ0FDQSxHQUFJLENBQUEsR0FBRyxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsUUFBWCxDQUFvQixpQkFBcEIsQ0FBVixDQUNBLEdBQUksR0FBRyxDQUFDLEtBQUosR0FBWSxTQUFaLEVBQXlCLEdBQUcsQ0FBQyxLQUFKLEdBQVksSUFBekMsQ0FDQSxDQUNJLEdBQUksQ0FBQSxXQUFXLENBQUksR0FBRyxDQUFDLEtBQXZCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUErQixXQUFXLENBQUMsWUFBM0MsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBcUMsV0FBVyxDQUFDLFFBQWpELENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsc0JBQXJCLEVBQTZDLENBQWpELENBQW9ELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix3QkFBcEIsR0FBcEQsSUFDSyxDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBcUMsV0FBVyxDQUFDLE1BQWpELEVBRVIsQ0FFSixDQUVDO0FBQ0MsTUFBTSxDQUFDLEdBQVAsQ0FBVywyQkFBWCxDQUF1QyxTQUFTLEtBQVQsQ0FBZ0IsSUFBaEIsQ0FBcUIsQ0FDdEQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXVCLE1BQU0sQ0FBQyxFQUFQLENBQVUsbUJBQWpDLENBQXNELE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQWhFLEVBQ0YsQ0FGSixFQU1DO0FBQ0EsR0FBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUEzQixFQUE4QyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQXhELEVBQXNFLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBckYsQ0FBdUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXVCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBakMsQ0FBeUMsQ0FBekMsRUFBdkcsSUFDSyxJQUFJLHdCQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixzRUFBcUIsVUFBckIsSUFBa0MsU0FBdEMsQ0FBaUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUErQixJQUEvQixDQUVsRDtBQUNGLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixTQUExQyxDQUNBO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUVVLENBbnJCRSxDQW1yQkQ7QUFDSCxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBR3pDO0FBdnJCUyxDQUFQLENBeXJCSixFQUFFO0FBQ0gsYUFFTyxRQUFTLENBQUEsVUFBVCxFQUF1QixDQUV0QixNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFRixXQUFXLENBQUUsc0NBRlgsQ0FHRixVQUFVLENBQUUsb0JBQVMsTUFBVCxDQUFnQixxQkFBaEIsQ0FBc0MsZUFBdEMsQ0FBc0QsZ0JBQXRELENBQXVFLGVBQXZFLENBQXVGLHFCQUF2RixDQUE2RyxpQkFBN0csQ0FDWCxvQkFEVyxDQUNVLG1CQURWLENBQzhCLHlCQUQ5QixDQUN3RCxjQUR4RCxDQUN1RSxZQUR2RSxDQUNvRixVQURwRixDQUMrRixRQUQvRixDQUN3RyxDQUNqSCxNQUFNLENBQUMsR0FBUCxDQUFXLHFCQUFYLENBRUEsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsWUFBWSxDQUFDLFFBQXJDLENBQ0EsTUFBTSxDQUFDLElBQVAsQ0FBWSxZQUFaLENBQ0EsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsS0FBbEIsQ0FDQSxNQUFNLENBQUMsV0FBUCxDQUFtQixFQUFuQixDQUNBLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFlBQVksQ0FBQyxFQUEvQixDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWUsZUFBZixDQUNBLE1BQU0sQ0FBQyxtQkFBUCxDQUE2QixLQUE3QixDQUNBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxHQUFQLENBQVcsY0FBWCxFQUFoQixDQUVBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGdCQUF0QixDQUF1QyxNQUFNLENBQUMsVUFBOUMsQ0FDQSxNQUFNLENBQUMsY0FBUCxDQUFzQixTQUF0QixDQUFnQyxNQUFNLENBQUMsUUFBdkMsQ0FDQSxNQUFNLENBQUMsY0FBUCxDQUFzQixlQUF0QixDQUFzQyxJQUF0QyxDQUVBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLE1BQXBCLENBQ0EsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsS0FBbkIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFtQixDQUFDLElBQUksRUFBTCxDQUFRLElBQUksRUFBWixDQUFuQixDQUNBLE1BQU0sQ0FBQyxpQkFBUCxDQUEyQixLQUEzQixDQUNBLEdBQUksTUFBTSxDQUFDLFNBQVAsRUFBa0IsU0FBdEIsQ0FBaUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsRUFBakIsQ0FFakMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXdDLEtBQXhDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIscUJBQWpCLENBQXlDLEtBQXpDLENBQ0E7QUFDQTtBQUVDO0FBRUQ7QUFDQTtBQUVDLHlCQUF5QixDQUFDLG9CQUExQixHQUVBLE1BQU0sQ0FBQyxZQUFQLENBQXNCLElBQXRCLENBQ0EsTUFBTSxDQUFDLFFBQVAsQ0FBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFyQixDQUFsQixDQUNBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLG9CQUFoQixDQUFxQyxDQUFDLENBQXRDLENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUUsZUFBZSxDQUFDLGdCQUFoQixFQUFULENBQTRDLElBQUksQ0FBQyxFQUFqRCxDQUFULENBQXZCLENBQ0EsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUVELE1BQU0sQ0FBQyxHQUFQLENBQWEsbUJBQWIsQ0FFQSxHQUFJLENBQUEsVUFBVSxDQUFHLFFBQWIsQ0FBQSxVQUFhLENBQVMsSUFBVCxDQUNiLENBQ0ksbUJBQW1CLENBQUMsT0FBcEIsQ0FBNEIsZUFBNUIsQ0FBOEMsSUFBOUMsQ0FDQSxtQkFBbUIsQ0FBQyxPQUFwQixDQUE0QixlQUE1QixDQUE0QyxXQUE1QyxFQUNILENBSkwsQ0FPQSxHQUFJLENBQUEsbUJBQUosQ0FBd0IsdUJBQXhCLENBQ0EsTUFBTSxDQUFDLHdCQUFQLENBQWtDLFVBQ2xDLENBQ0ksbUJBQW1CLENBQUUsTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXNCLHNCQUFzQixNQUFNLENBQUMsVUFBN0IsQ0FBd0MsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsU0FBcEYsQ0FBOEYsSUFBOUYsQ0FBckIsQ0FDQSx1QkFBdUIsQ0FBRyxtQkFBbUIsQ0FBQyxPQUFwQixDQUE0QixJQUF0RCxDQUVBLEdBQUksQ0FBQSxvQkFBb0IsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsdUJBQXJCLENBQTZDLFdBQTdDLENBQXlELFVBQXpELENBQTNCLENBRUgsQ0FQRCxDQVFDLE1BQU0sQ0FBQyx3QkFBUCxHQUVELE1BQU0sQ0FBQyxZQUFQLENBQXNCLFNBQVMsTUFBVCxDQUFnQixNQUFoQixDQUN0QixDQUNHO0FBQ0MsR0FBSSxNQUFNLENBQUMsY0FBUCxDQUFzQixVQUF0QixHQUFtQyxTQUF2QyxDQUNBLENBQ0csTUFBTSxDQUFDLGNBQVAsQ0FBc0IsVUFBdEIsQ0FBaUMsRUFBakMsQ0FDRixDQUVHLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFVBQXRCLENBQWlDLFlBQWpDLENBQThDLE1BQTlDLENBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBYSxlQUFiLENBQTZCLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFVBQXRCLENBQWlDLFlBQTlELEVBRU47QUFHRCxDQWRELENBaUJBLE1BQU0sQ0FBQyxnQkFBUCxDQUEwQixTQUFTLFNBQVQsQ0FDMUIsQ0FFUSxNQUFNLENBQUMsR0FBUCxDQUFXLGdCQUFYLENBQTRCLFNBQTVCLEVBQ0EsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFNBQTFCLENBQW9DLFNBQXBDLENBQ0EsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsQ0FBcEIsQ0FBc0IsS0FBdEIsRUFDQSxNQUFNLENBQUMsd0JBQVAsR0FDQSxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIsc0JBQXNCLE1BQU0sQ0FBQyxVQUF0RCxDQUFpRSxpQkFBakUsQ0FBbUYsU0FBbkYsRUFFUCxDQVRELENBV0EsTUFBTSxDQUFDLGtCQUFQLENBQTRCLFNBQVMsS0FBVCxDQUM1QixDQUNRLE1BQU0sQ0FBQyxLQUFQLENBQWEsd0JBQWIsQ0FBc0MsS0FBdEMsRUFDQSxNQUFNLENBQUMsbUJBQVAsQ0FBMkIsTUFBTSxDQUFDLEtBQVAsQ0FBYSx3QkFBYixFQUEzQixDQUVQLENBTEQsQ0FPSixNQUFNLENBQUMsTUFBUCxDQUFjLGtDQUFkLENBQWlELFNBQVMsUUFBVCxDQUFrQixRQUFsQixDQUEyQixDQUVwRSxHQUFJLFFBQVEsRUFBRSxRQUFkLENBQ0EsQ0FDQyxNQUFNLENBQUMsYUFBUCxDQUFxQixNQUFNLENBQUMsS0FBUCxDQUFhLGtCQUFiLEVBQXJCLENBQ0EsTUFBTSxDQUFDLG1CQUFQLENBQTZCLE1BQU0sQ0FBQyxLQUFQLENBQWEsd0JBQWIsRUFBN0IsQ0FDQSxDQUNSLENBUEQsRUFVQyxNQUFNLENBQUMsTUFBUCxDQUFjLDRCQUFkLENBQTJDLFNBQVMsUUFBVCxDQUFrQixRQUFsQixDQUEyQixDQUUvRCxHQUFJLFFBQVEsRUFBRSxRQUFkLENBQ0EsQ0FDQyxNQUFNLENBQUMsYUFBUCxDQUFxQixNQUFNLENBQUMsS0FBUCxDQUFhLGtCQUFiLEVBQXJCLENBQ0EsTUFBTSxDQUFDLG1CQUFQLENBQTZCLE1BQU0sQ0FBQyxLQUFQLENBQWEsd0JBQWIsRUFBN0IsQ0FDQSxDQUNSLENBUEEsRUFXUDtBQUNBO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBdklpSSxDQTJJL0g7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUdZLE1BQU0sQ0FBQyxvQkFBUCxDQUE4QixFQUE5QixDQUVBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGVBQWpCLENBQW1DLFNBQVUsU0FBVixDQUFvQixZQUFwQixDQUFrQyxDQUMvRCxHQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFQLENBQTRCLE1BQU0sQ0FBQyxRQUFuQyxDQUFMLENBQ0EsQ0FDRSxvQkFBb0IsQ0FBQyxlQUFyQixDQUFxQyxNQUFNLENBQUMsVUFBNUMsQ0FBdUQsTUFBTSxDQUFDLFFBQTlELENBQXVFLElBQXZFLEVBQTZFLElBQTdFLENBQWtGLFNBQVMsSUFBVCxDQUFlLENBRTVFLEdBQUksQ0FBQSxnQkFBZ0IsQ0FBRyxJQUFJLENBQUMsSUFBNUIsQ0FDQSxNQUFNLENBQUMsa0JBQVAsQ0FBNEIsZ0JBQWdCLENBQUMsa0JBQTdDLENBQ0Msb0JBQW9CLENBQUMsZ0JBQXJCLENBQXNDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixZQUFoRSxFQUE4RSxJQUE5RSxDQUVBLFNBQVUsVUFBVixDQUFzQixDQUVuQixHQUFJLE1BQU0sQ0FBQyxLQUFQLENBQWEsZ0JBQWIsRUFBK0IsU0FBL0IsRUFBNEMsTUFBTSxDQUFDLEtBQVAsQ0FBYSxnQkFBYixDQUE4QixNQUE5QixFQUFzQyxDQUF0RixDQUEyRixNQUFNLENBQUMsS0FBUCxDQUFhLG1CQUFiLENBQWlDLFVBQVUsQ0FBQyxJQUE1QyxFQUcxRixHQUFJLGdCQUFnQixDQUFDLE9BQWpCLENBQXlCLE1BQXpCLENBQWdDLENBQXBDLENBQXVDLENBQ3JDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxRQUF4QixFQUFrQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUF6QixDQUFULENBQWxDLENBQ0YsQ0FGQSxJQUVLLENBQ0wsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBTSxDQUFDLFFBQXhCLEVBQW9DLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixnQkFBMUIsQ0FBMkMsV0FBbkQsQ0FBVCxDQUFwQyxDQUNBLENBRUQsTUFBTSxDQUFDLFdBQVAsQ0FBb0IsTUFBTSxDQUFDLFFBQTNCLEVBQXVDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixXQUFqRSxDQUVBO0FBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBYSxrQkFBYixDQUFnQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsRUFBMUIsQ0FBK0IsTUFBTSxDQUFDLFFBQXRFLENBQStFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixPQUFuQyxDQUEyQyxTQUFTLENBQUMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFNBQS9FLENBQXlGLFVBQVUsQ0FBQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBOUgsQ0FBL0UsRUFFQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsQ0FBcUMsQ0FBQyxZQUFZLENBQUMsQ0FBZCxDQUFnQixrQkFBa0IsQ0FBQyxLQUFuQyxDQUFyQyxDQUNBLEdBQUksTUFBTSxDQUFDLEtBQVAsQ0FBYSxVQUFiLEVBQTJCLElBQS9CLENBQXVDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixVQUExQixDQUFxQyxZQUFyQyxDQUFvRCxDQUFwRCxDQUd2QyxNQUFNLENBQUMsVUFBUCxDQUFrQixJQUFsQixDQUNBLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixNQUFNLENBQUMsUUFBbkMsRUFBK0MsSUFBL0MsQ0FDQSxNQUFNLENBQUMsWUFBUCxDQUFvQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsQ0FBcUMsWUFBekQsQ0FBc0UsS0FBdEUsRUFDQTtBQUlILENBN0JBLENBNkJDLFNBQVMsS0FBVCxDQUFlLENBQ2IsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0gsQ0EvQkEsRUFzQ0QsR0FBSSxTQUFKLENBQ0EsQ0FDRSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixZQUE1QixDQUF5QyxTQUF6QyxFQUVELENBQ0gsQ0EvQ25CLENBK0NvQixTQUFTLEtBQVQsQ0FBZSxDQUdoQixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFHSCxDQXJEaEIsRUFzREQsQ0FDTixDQTFERCxDQTZEUixNQUFNLENBQUMsVUFBUCxDQUFvQixVQUNwQixDQUNJLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixJQUExQixDQUNBLG9CQUFvQixDQUFDLHFCQUFyQixDQUEyQyxNQUFNLENBQUMsVUFBbEQsRUFDUyxJQURULENBQ2MsU0FBUyxJQUFULENBQWUsQ0FDakIsR0FBSSxJQUFJLENBQUMsTUFBTCxFQUFhLEdBQWpCLENBQ0EsQ0FFSSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsQ0FBdUMsSUFBSSxDQUFDLElBQTVDLENBQ0EsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFNBQTFCLENBQW9DLEtBQXBDLENBQ0EsTUFBTSxDQUFDLFdBQVAsQ0FBb0IsTUFBTSxDQUFDLFFBQTNCLEVBQXVDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFqQixDQUFzQixTQUFTLENBQUMsS0FBaEMsQ0FBdkMsQ0FDQSxNQUFNLENBQUMsS0FBUCxDQUFhLGtCQUFiLENBQWdDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixFQUExQixDQUE2QixNQUFNLENBQUMsUUFBcEUsQ0FBNkUsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsTUFBTSxDQUFDLFFBQTFCLENBQTdFLEVBQ0gsQ0FQRCxJQU9NLENBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQWpDLENBQXNDLE9BQXRDLEVBQ04sTUFBTSxDQUFDLGtCQUFQLENBQTBCLEtBQTFCLENBRUEsQ0FaWixDQVlhLFNBQVMsS0FBVCxDQUFlLENBQ0YsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0EsTUFBTSxDQUFDLGtCQUFQLENBQTBCLEtBQTFCLENBRUosQ0FoQnRCLEVBa0JILENBckJELENBdUJBLE1BQU0sQ0FBQyw0QkFBUCxDQUFvQyxVQUFVLENBQzFDLG9CQUFvQixDQUFDLHFCQUFyQixDQUEyQyxNQUFNLENBQUMsVUFBbEQsRUFBOEQsSUFBOUQsQ0FBbUUsU0FBVSxJQUFWLENBQWdCLENBQ2hGLE1BQU0sQ0FBQyxrQkFBUCxDQUE0QixJQUFJLENBQUMsSUFBakMsQ0FDRixDQUZELEVBR0gsQ0FKRCxDQUtBLE1BQU0sQ0FBQyw0QkFBUCxHQUNJO0FBQ0U7QUFDQTtBQUNMLE1BQU0sQ0FBQyxhQUFQLENBQXVCLFNBQVUsTUFBVixDQUFrQixDQUN2QztBQUNDO0FBQ0EsQ0FBQyxDQUFDLGNBQUQsQ0FBRCxDQUFrQixLQUFsQixDQUF3QixNQUF4QixFQUNBLE1BQU0sQ0FBQyxhQUFQLENBQXFCLE1BQXJCLENBQ0EsTUFBTSxDQUFDLGlCQUFQLENBQTRCLE1BQU0sQ0FBQyxLQUFQLENBQWEsbUJBQWIsQ0FBaUMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLEVBQTFCLENBQTZCLE1BQU0sQ0FBQyxRQUFyRSxFQUErRSxVQUEzRyxDQUdILENBUkEsQ0FTRyxNQUFNLENBQUMsWUFBUCxDQUFzQixTQUFVLElBQVYsQ0FBZ0IsQ0FFbEMsR0FBSSxJQUFJLENBQUMsTUFBVCxDQUNBLENBQ0csTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsZUFBaEIsQ0FBa0MsaUJBQWlCLENBQUMsY0FBbEIsQ0FBaUMsd0JBQXdCLE1BQU0sQ0FBQyxVQUFoRSxDQUFsQyxDQUNBLE1BQU0sQ0FBQyxjQUFQLENBQXdCLElBQXhCLENBQ0EsQ0FBQyxDQUFDLGNBQUQsQ0FBRCxDQUFrQixLQUFsQixDQUF3QixNQUF4QixFQUNBLG9CQUFvQixDQUFDLGdCQUFyQixDQUFzQyxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsUUFBeEIsRUFBa0MsT0FBbEMsQ0FBMEMsTUFBaEYsQ0FBdUYsTUFBTSxDQUFDLFVBQTlGLENBQXlHLE1BQU0sQ0FBQyxRQUFoSCxDQUF5SCxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUExSSxFQUEwSixJQUExSixDQUErSixTQUFTLElBQVQsQ0FBZSxDQUVySixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsR0FBakMsQ0FBcUMsSUFBSSxDQUFDLE9BQTFDLEVBQ0EsTUFBTSxDQUFDLFdBQVAsQ0FBb0IsTUFBTSxDQUFDLFFBQTNCLEVBQXVDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFkLENBQXNCLFNBQVMsQ0FBQyxJQUFoQyxDQUF2QyxDQUNBLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixXQUExQixDQUFzQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBZCxDQUF0QyxDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWEsa0JBQWIsQ0FBZ0MsTUFBTSxDQUFDLGtCQUFQLENBQTBCLEVBQTFCLENBQTZCLE1BQU0sQ0FBQyxRQUFwRSxDQUE2RSxNQUFNLENBQUMsV0FBUCxDQUFtQixNQUFNLENBQUMsUUFBMUIsQ0FBN0UsRUFDQSxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIsdUJBQXpCLENBQWlELFdBQWpELENBQTZELElBQUksQ0FBQyxTQUFsRSxFQUNBLE1BQU0sQ0FBQyxjQUFQLENBQXdCLEtBQXhCLENBQ0EsR0FBSSxDQUFBLGtCQUFrQixDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsY0FBWCxFQUF6QixDQUVBLEdBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxRQUFWLENBQW1CLE1BQW5CLENBQTBCLENBQTlCLENBQWlDLENBQzdCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQU0sQ0FBQyxRQUF4QixFQUFrQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBTCxDQUFVLFFBQWxCLENBQVQsQ0FBbEMsQ0FDQSxNQUFNLENBQUMsR0FBUCxDQUFXLGdCQUFYLENBQTRCLEVBQTVCLEVBQ0EsUUFBUSxDQUFDLFVBQVUsQ0FDZCxNQUFNLENBQUMsR0FBUCxDQUFXLGdCQUFYLENBQTRCLGtCQUE1QixFQUNKLENBRk8sQ0FBUixDQUlILENBRUQsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsSUFBbEIsQ0FDQSxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsTUFBTSxDQUFDLFFBQW5DLEVBQStDLElBQS9DLENBQ0EsTUFBTSxDQUFDLDRCQUFQLEdBQ0Y7QUFFQTtBQUNFO0FBR0osQ0E1QnJCLENBNEJzQixTQUFTLEtBQVQsQ0FBZSxDQUViLE1BQU0sQ0FBQyxjQUFQLENBQXdCLEtBQXhCLENBQ0EsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0YsQ0FoQ3RCLEVBa0NELENBQ0wsQ0ExQ0QsQ0E2Q0M7QUFDQztBQUNBO0FBQ0YsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsVUFBWSxDQUczQjtBQUVBLGVBQWUsQ0FBQyxZQUFoQixDQUE2QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsY0FBdkQsQ0FBc0UsTUFBTSxDQUFDLFVBQTdFLENBQXdGLElBQXhGLEVBQThGLElBQTlGLENBQW1HLFNBQVMsSUFBVCxDQUFlLENBRzFGLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxHQUFqQyxDQUFxQyxTQUFyQyxFQUVILENBTHJCLENBS3NCLFNBQVMsS0FBVCxDQUFlLENBRWIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBRUYsQ0FUdEIsRUFhQSxDQWxCUCxDQXVCSSxNQUFNLENBQUMsR0FBUCxDQUFXLGVBQVgsQ0FBMkIsU0FBUyxLQUFULENBQWUsSUFBZixDQUFvQixDQUUzQyxHQUFJLENBQUEsR0FBRyxDQUFDLElBQVIsQ0FDQSxHQUFJLEdBQUcsRUFBRSxHQUFMLEVBQVksR0FBRyxFQUFFLEdBQXJCLENBQ0EsQ0FDSSxHQUFJLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixVQUExQixDQUFxQyxZQUFyQyxFQUFtRCxDQUF2RCxDQUEwRCxNQUFNLENBQUMsWUFBUCxDQUFvQixDQUFwQixFQUU3RCxDQUNELEdBQUksR0FBRyxFQUFFLEdBQUwsRUFBWSxHQUFHLEVBQUUsR0FBckIsQ0FDQSxDQUNJLEdBQUksTUFBTSxDQUFDLGtCQUFQLENBQTBCLFVBQTFCLENBQXFDLFlBQXJDLEVBQW1ELENBQXZELENBQTBELE1BQU0sQ0FBQyxZQUFQLENBQW9CLENBQXBCLEVBQzdELENBRUosQ0FiRCxFQWVEO0FBQ0Q7QUFDQTtBQUVDLE1BQU0sQ0FBQyxNQUFQLENBQWMsc0JBQWQsQ0FBcUMsU0FBUyxRQUFULENBQWtCLFFBQWxCLENBQTJCLENBRXRELE1BQU0sQ0FBQyxRQUFQLENBQWtCLFFBQWxCLENBQ0E7QUFFQSxHQUFJLE1BQU0sQ0FBQyxVQUFQLEVBQXFCLFNBQXpCLENBQ0csQ0FDSSxRQUFRLENBQUMsVUFBVyxDQUNoQixNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsR0FDSCxDQUZPLENBQVIsQ0FLSCxDQUlOLENBaEJSLEVBb0JNLENBdFpGLENBdVpGLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FPcEMsQ0E5WkUsQ0FBUCxDQWdhUCxFQUNELGFBRU8sUUFBUyxDQUFBLGdCQUFULEVBQTZCLENBQzVCLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUdaLFVBQVUsQ0FBRSxvQkFBVSxNQUFWLENBQWlCLGNBQWpCLENBQWdDLFVBQWhDLENBQTJDLHlCQUEzQyxDQUFxRSxlQUFyRSxDQUFxRixRQUFyRixDQUE4RixRQUE5RixDQUF1RyxjQUF2RyxDQUF1SCxDQUV0SCxNQUFNLENBQUMsSUFBUCxDQUFZLGtCQUFaLENBQ1osTUFBTSxDQUFDLFdBQVAsQ0FBcUIsU0FBVSxLQUFWLENBQWdCLENBQ25DO0FBQ0EsR0FBSSxLQUFLLENBQUcsQ0FBQyxDQUFiLENBQWdCLENBRU0seUJBQXlCLENBQUMsZ0JBQTFCLENBQTJDLE1BQU0sQ0FBQyxVQUFQLENBQWtCLE1BQWxCLENBQXlCLEtBQXpCLEVBQWdDLE9BQTNFLEVBQ0EsR0FBSSxNQUFNLENBQUMsVUFBUCxDQUFrQixNQUFsQixDQUF5QixLQUF6QixFQUFnQyxLQUFoQyxFQUF1QyxJQUF2QyxFQUErQyxNQUFNLENBQUMsVUFBUCxDQUFrQixNQUFsQixDQUF5QixLQUF6QixFQUFnQyxjQUFoQyxFQUFnRCxJQUEvRixFQUF1RyxNQUFNLENBQUMsVUFBUCxDQUFrQixNQUFsQixDQUF5QixLQUF6QixFQUFnQyxjQUFoQyxFQUFnRCxTQUEzSixDQUFzSyxDQUVqSyxNQUFNLENBQUMsVUFBUCxDQUFrQixNQUFsQixDQUF5QixLQUF6QixFQUFnQyxNQUFoQyxDQUF1QyxTQUF2QyxDQUN4QixDQUhtQixJQUlDLENBQ0csTUFBTSxDQUFDLFVBQVAsQ0FBa0IsTUFBbEIsQ0FBeUIsTUFBekIsQ0FBZ0MsS0FBaEMsQ0FBc0MsQ0FBdEMsRUFFRixDQUV2QixDQUVGLENBaEJELENBbUJZLEdBQUksQ0FBQSxRQUFKLENBQ0QsR0FBSSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBOUIsQ0FBK0MsUUFBUSxDQUFHLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDRDQUFuQixDQUFYLENBQS9DLElBQ0ssQ0FBQSxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsK0NBQW5CLENBQVgsQ0FFTCxRQUFRLENBQUMsTUFBVCxDQUFnQixRQUFRLENBQUMsUUFBRCxDQUFSLENBQW1CLE1BQW5CLENBQWhCLEVBRVgsQ0EvQlcsQ0FnQ1gsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUV4QixHQUFJLEtBQUssQ0FBQyxVQUFOLENBQWlCLE1BQWpCLEVBQXlCLFNBQXpCLEVBQXNDLEtBQUssQ0FBQyxVQUFOLENBQWlCLE1BQWpCLEVBQXlCLElBQW5FLENBQXlFLEtBQUssQ0FBQyxVQUFOLENBQWlCLE1BQWpCLENBQTBCLEVBQTFCLENBRTVFLENBcENFLENBQVAsQ0FzQ1AsRUFDRCxhQUVPLFFBQVMsQ0FBQSxhQUFULEVBQTBCLENBQ3pCLEdBQUksQ0FBQSxVQUFVLENBQUcsQ0FBQyxRQUFELENBQVcsY0FBWCxDQUEwQixRQUExQixDQUFtQyxZQUFuQyxDQUFnRCxpQkFBaEQsQ0FBa0UsMkJBQWxFLENBQThGLHNCQUE5RixDQUFxSCxxQkFBckgsQ0FBMkksZ0JBQTNJLENBQTRKLFVBQTVKLENBQXVLLFVBQXZLLENBQWtMLHVCQUFsTCxDQUNNLFNBQVUsTUFBVixDQUFpQixZQUFqQixDQUE4QixNQUE5QixDQUFxQyxVQUFyQyxDQUFnRCxlQUFoRCxDQUFnRSx5QkFBaEUsQ0FBMEYsb0JBQTFGLENBQStHLG1CQUEvRyxDQUFtSSxjQUFuSSxDQUFrSixRQUFsSixDQUEySixRQUEzSixDQUFvSyxxQkFBcEssQ0FBMkwscURBRWxOLE1BQU0sQ0FBQyxJQUFQLENBQVksZUFBWixDQUNBLEdBQUksQ0FBQSxJQUFJLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLEVBQVcsU0FBZixDQUEwQixNQUFNLENBQUMsRUFBUCxDQUFVLEVBQVYsQ0FDMUIsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsRUFBcUIsU0FBekIsQ0FBb0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLEVBQXBCLENBQ3BDLEdBQUksTUFBTSxDQUFDLGtCQUFQLEVBQTJCLFNBQS9CLENBQTBDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixFQUExQixDQUMxQyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixFQUFrQyxTQUF0QyxDQUFpRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBbUMsQ0FBbkMsQ0FDakQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsRUFBK0IsU0FBbkMsQ0FBOEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQWdDLENBQWhDLENBQzlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFxQyxJQUFyQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFxQyxFQUFyQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFtQyxhQUFuQyxDQUFtRCxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBN0UsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsTUFBcEIsMEJBQTZCLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBdkMsMkVBQTZCLHdCQUFzQixTQUFuRCxrREFBNkIsd0JBQWlDLEVBQTlELENBQ0EsTUFBTSxDQUFDLEdBQVAsQ0FBYSxtQkFBYixDQUNBLE1BQU0sQ0FBQyxHQUFQLENBQWEscUJBQWIsQ0FDQSxNQUFNLENBQUMsS0FBUCxDQUFhLGVBQWIsQ0FFQSxHQUFJLENBQUEsZ0JBQWdCLENBQUcsQ0FBQyxJQUFJLENBQUUsYUFBUCxDQUFxQixRQUFRLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF6QyxDQUFpRCxNQUFNLENBQUcsTUFBTSxDQUFDLGtCQUFQLENBQTBCLEVBQXBGLENBQXZCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLHlCQUF5QixDQUFDLGNBQTFCLENBQXlDLGdCQUF6QyxDQUFsQixDQUVBLEdBQUksQ0FBQSxtQkFBbUIsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXBDLENBQ0EsR0FBSSxDQUFBLG9CQUFvQixDQUFHLHNCQUFzQixNQUFNLENBQUMsTUFBN0IsQ0FBb0MsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFNBQXpGLENBQ0EsR0FBSSxDQUFBLG9CQUFKLENBRUEsR0FBSSxDQUFBLHVCQUF1QixDQUFHLFFBQTFCLENBQUEsdUJBQTBCLENBQVMsSUFBVCxDQUFlLENBQ3pDLEdBQUksQ0FBQSxlQUFlLENBQUcsT0FBTyxDQUFDLElBQVIsQ0FBYSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXZCLENBQXRCLENBQ0EsR0FBSSxJQUFJLENBQUMsZUFBRCxDQUFKLEdBQXdCLFNBQTVCLENBQXVDLENBQy9CLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUEyQixJQUFJLENBQUMsZUFBRCxDQUEvQixDQUNKO0FBQ0Esb0JBQW9CLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFqQyxDQUNBLEdBQUksQ0FBQSxZQUFZLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLG9CQUFyQixDQUEwQyxvQkFBMUMsQ0FBK0QsV0FBL0QsQ0FBMkUsdUJBQTNFLENBQW5CLENBQ0MsQ0FDUixDQVJELENBVUEsR0FBSSxDQUFBLHNCQUFzQixDQUFHLFFBQXpCLENBQUEsc0JBQXlCLENBQVMsSUFBVCxDQUFlLENBQ3hDLEdBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBWCxDQUFKLENBQXdCLENBQXhCLEVBQTZCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixDQUF2RCxFQUE0RCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFYLENBQUosR0FBMEIsU0FBMUYsQ0FBcUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQTJCLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVgsQ0FBL0IsQ0FDckcsR0FBSSxDQUFBLFlBQVksQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsb0JBQXJCLENBQTBDLG9CQUExQyxDQUErRCxXQUEvRCxDQUEyRSx1QkFBM0UsQ0FBbkIsQ0FDQTtBQUNILENBSkQsQ0FRQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBcUMsVUFBVSxDQUN2QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBZ0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQStCLEtBQS9CLENBQXNDLElBQXRFLENBQ1AsQ0FGRCxDQUlBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFtQyxTQUFTLGlCQUFULENBQTJCLG1CQUEzQixDQUFnRCxDQUU5RSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsRUFBdUMsU0FBM0MsQ0FBc0QsQ0FDbkQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUF3QyxpQkFBeEMsQ0FDRixDQUZELElBRU8sQ0FDSixHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsRUFBdUMsQ0FBdkMsRUFBNEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixFQUF1QyxpQkFBdkYsQ0FDSyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXdDLGlCQUF4QyxDQURMLElBR0ksQ0FBQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXNDLENBQXRDLENBQ04sQ0FDRCxHQUFJLG1CQUFKLENBQXlCLE1BQU0sQ0FBQyxLQUFQLENBQWEsa0JBQWIsQ0FBZ0MsTUFBTSxDQUFDLEVBQXZDLEVBQzVCLENBWEYsQ0FjQTtBQUVBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEdBQTJCLElBQTNCLEVBQW1DLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixHQUEyQixDQUFsRSxDQUFxRSxDQUNqRSxHQUFJLENBQUEsV0FBVyxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixvQkFBckIsQ0FBMEMsbUJBQTFDLENBQThELFdBQTlELENBQTBFLHNCQUExRSxDQUFsQixDQUNILENBRkQsSUFFTyxDQUNILG9CQUFvQixDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBakMsQ0FDQSxHQUFJLENBQUEsWUFBWSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixvQkFBckIsQ0FBMEMsb0JBQTFDLENBQStELFdBQS9ELENBQTJFLHVCQUEzRSxDQUFuQixDQUNILENBSUEsR0FBSSxDQUFBLFFBQUosQ0FDQSxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIseUNBQW5CLENBQVgsQ0FHQSxRQUFRLENBQUMsTUFBVCxDQUFnQixRQUFRLENBQUMsUUFBRCxDQUFSLENBQW1CLE1BQW5CLENBQWhCLEVBRUQsQ0E5RWlCLENBQWpCLENBaUZBLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVILFVBQVUsQ0FBQyxVQUZSLENBR0YsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUdsQyxDQU5BLENBQVAsQ0FRUCxFQUNELGFBRU8sUUFBUyxDQUFBLHVCQUFULEVBQW9DLENBRXhDLEdBQUksQ0FBQSxVQUFVLENBQUcsQ0FBQyxRQUFELENBQVcsV0FBWCxDQUF3QixjQUF4QixDQUF1QyxRQUF2QyxDQUFnRCxVQUFoRCxDQUEyRCxjQUEzRCxDQUEwRSxzQkFBMUUsQ0FBaUcsWUFBakcsQ0FBOEcsYUFBOUcsQ0FBNEgsbUJBQTVILENBQWdKLGtCQUFoSixDQUFtSyxpQkFBbkssQ0FBcUwsaUJBQXJMLENBQXVNLDJCQUF2TSxDQUFtTyxxQkFBbk8sQ0FBeVAsZ0JBQXpQLENBQTBRLGdCQUExUSxDQUEyUixVQUEzUixDQUFzUyxVQUF0UyxDQUNDLFNBQVUsTUFBVixDQUFpQixTQUFqQixDQUEyQixZQUEzQixDQUF3QyxNQUF4QyxDQUErQyxRQUEvQyxDQUF3RCxZQUF4RCxDQUFxRSxvQkFBckUsQ0FBMEYsVUFBMUYsQ0FBcUcsV0FBckcsQ0FBaUgsaUJBQWpILENBQW1JLGdCQUFuSSxDQUFvSixlQUFwSixDQUFvSyxlQUFwSyxDQUFvTCx5QkFBcEwsQ0FBOE0sbUJBQTlNLENBQWtPLGNBQWxPLENBQWlQLGNBQWpQLENBQWdRLFFBQWhRLENBQXlRLFFBQXpRLENBQW1SLHdDQUVsUyxNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FDQSxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBOEIsQ0FBOUIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBeUIsR0FBekIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixDQUFDLFlBQVksQ0FBQyxDQUFkLENBQWdCLGtCQUFrQixDQUFDLElBQW5DLENBQTVCLENBQ0EsR0FBSSxNQUFNLENBQUMsUUFBUCxFQUFpQixTQUFyQixDQUFnQyxNQUFNLENBQUMsUUFBUCxDQUFnQixFQUFoQixDQUNoQyxHQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBMUIsR0FBMkMsU0FBL0MsQ0FBMEQsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUExQixFQUEwQyxDQUFDLEVBQUQsQ0FBMUMsQ0FFMUQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLENBQW1DLENBQW5DLENBRUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsVUFBOUIsQ0FDSTtBQUlKLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFNBQWpCLENBQTZCLENBQzdCLEVBQUUsQ0FBRSxHQUR5QixDQUU3QixJQUFJLENBQUUsTUFGdUIsQ0FHN0IsT0FBTyxDQUFFLEVBSG9CLENBQTdCLENBTUMsR0FBSSxNQUFNLENBQUMsU0FBUCxFQUFvQixTQUF4QixDQUFtQyxNQUFNLENBQUMsU0FBUCxDQUFpQixFQUFqQixDQUVsQyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixLQUE1QixDQUVBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWtDLFVBQVUsQ0FDYixNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE2QixNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixLQUE1QixDQUFtQyxJQUFoRSxDQUM3QixDQUZGLENBTUY7QUFDQSxNQUFNLENBQUMsTUFBUCxDQUFjLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUF4QyxDQUNBLEdBQUksTUFBTSxDQUFDLE1BQVAsRUFBZSxTQUFuQixDQUErQixNQUFNLENBQUMsTUFBUCxDQUFjLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixnQkFBeEMsQ0FDL0IsR0FBSSxNQUFNLENBQUMsTUFBUCxFQUFlLFNBQW5CLENBQThCLE1BQU0sQ0FBQyxNQUFQLENBQWMsQ0FBZCxDQUM5QixNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFqQixDQUF3QixNQUFNLENBQUMsTUFBL0IsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQTZCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdkMsQ0FDQSxNQUFNLENBQUMsYUFBUCxDQUF3QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsWUFBbEQsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUEwQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsU0FBcEQsQ0FDQSxNQUFNLENBQUMsV0FBUCxDQUFtQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsV0FBN0MsQ0FDQSxNQUFNLENBQUMsY0FBUCxDQUF3QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZ0JBQWxELENBQ0EsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQWpELENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQWxELENBRUMsR0FBSyxNQUFNLENBQUMsY0FBUCxFQUF1QixTQUE1QixDQUF1QyxNQUFNLENBQUMsY0FBUCxDQUFzQixLQUF0QixDQUV4QyxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsQ0FBa0MsQ0FBbEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxjQUFQLEVBQXVCLFNBQTNCLENBQ0EsQ0FDRSxNQUFNLENBQUMsY0FBUCxDQUF1QixDQUF2QixDQUVELENBQ0QsR0FBSSxNQUFNLENBQUMsYUFBUCxFQUFzQixTQUExQixDQUNBLENBQ0csTUFBTSxDQUFDLGFBQVAsQ0FBc0IsQ0FBdEIsQ0FDRixDQUNDLEdBQUksTUFBTSxDQUFDLGFBQVAsRUFBc0IsU0FBMUIsQ0FDQSxDQUNJLE1BQU0sQ0FBQyxhQUFQLENBQXNCLENBQXRCLENBQ0gsQ0FFSDtBQUNBLEdBQUksQ0FBQSxVQUFVLENBQUcsQ0FBQyxZQUFELENBQWpCLENBQ0E7QUFDQTtBQUNHLEdBQUksQ0FBQSxnQkFBZ0IsQ0FBRyxDQUFDLEdBQUcsQ0FBRSxDQUFDLENBQUMsT0FBTyxjQUFSLENBQXVCLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5DLENBQUQsQ0FBNkMsQ0FBQyxJQUFJLENBQUMsa0JBQU4sQ0FBeUIsS0FBSyxDQUFDLEVBQS9CLENBQTdDLENBQS9CLENBQUQsQ0FBTixDQUF5SCxPQUFPLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFOLENBQW9CLE1BQU0sQ0FBQyxLQUEzQixDQUFELENBQWxJLENBQXNLLElBQUksQ0FBRSxvQkFBNUssQ0FBaU0sUUFBUSxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBck4sQ0FBb08sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLGNBQTVQLENBQTJRLGVBQWUsQ0FBQyxNQUFNLENBQUMsYUFBbFMsQ0FBZ1QsTUFBTSxDQUFHLE1BQU0sQ0FBQyxPQUFoVSxDQUF3VSxhQUFhLENBQUcsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQXpXLENBQTJYLE1BQU0sQ0FBQyxVQUFsWSxDQUF2QixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGFBQWpCLENBQWlDLHlCQUF5QixDQUFDLGNBQTFCLENBQXlDLGdCQUF6QyxDQUFqQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLENBQXlCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGFBQTFDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGFBQW5DLENBQ0E7QUFFSDtBQUNBLE1BQU0sQ0FBQyxHQUFQLENBQWEsbUJBQWIsQ0FFQSxHQUFJLENBQUEsbUJBQW1CLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFwQyxDQUNFLEdBQUksQ0FBQSxvQkFBb0IsQ0FBRyxzQkFBc0IsTUFBTSxDQUFDLE1BQTdCLENBQW9DLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixTQUF6RixDQUNBLEdBQUksQ0FBQSxvQkFBSixDQUNBLEdBQUksQ0FBQSx1QkFBdUIsQ0FBRyxRQUExQixDQUFBLHVCQUEwQixDQUFTLElBQVQsQ0FBZSxDQUN6QyxHQUFJLENBQUEsZUFBZSxDQUFHLE9BQU8sQ0FBQyxJQUFSLENBQWEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF2QixDQUF0QixDQUNBLEdBQUksSUFBSSxDQUFDLGVBQUQsQ0FBSixHQUF3QixTQUE1QixDQUNBLENBQ0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQTJCLElBQUksQ0FBQyxlQUFELENBQS9CLENBQ0o7QUFDQSxvQkFBb0IsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQWpDLENBQ0EsR0FBSSxDQUFBLFlBQVksQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsb0JBQXJCLENBQTBDLG9CQUExQyxDQUErRCxXQUEvRCxDQUEyRSx1QkFBM0UsQ0FBbkIsQ0FDQyxDQUNKLENBVEQsQ0FVQSxHQUFJLENBQUEsc0JBQXNCLENBQUcsUUFBekIsQ0FBQSxzQkFBeUIsQ0FBUyxJQUFULENBQWUsQ0FDeEMsR0FBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFYLENBQUosQ0FBd0IsQ0FBeEIsRUFBNkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLENBQXZELEVBQTRELElBQUksQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVgsQ0FBSixHQUEwQixTQUExRixDQUFxRyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBMkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBWCxDQUEvQixDQUVyRyxHQUFJLENBQUEsWUFBWSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixvQkFBckIsQ0FBMEMsb0JBQTFDLENBQStELFdBQS9ELENBQTJFLHVCQUEzRSxDQUFuQixDQUNBO0FBQ0gsQ0FMRCxDQVFBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEdBQTJCLElBQTNCLEVBQW1DLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixHQUEyQixDQUFsRSxDQUNBLENBQ0ksR0FBSSxDQUFBLFdBQVcsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsb0JBQXJCLENBQTBDLG1CQUExQyxDQUE4RCxXQUE5RCxDQUEwRSxzQkFBMUUsQ0FBbEIsQ0FDSCxDQUhELElBR00sQ0FDRixvQkFBb0IsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQWpDLENBQ0EsR0FBSSxDQUFBLFlBQVksQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsb0JBQXJCLENBQTBDLG9CQUExQyxDQUErRCxXQUEvRCxDQUEyRSx1QkFBM0UsQ0FBbkIsQ0FDSCxDQUdGLEdBQUksQ0FBQSxXQUFXLENBQUcsUUFBZCxDQUFBLFdBQWMsQ0FBUyxJQUFULENBQ2pCLENBQ0ksR0FBSSxDQUFBLFVBQVUsQ0FBQyxLQUFmLENBQ0EsR0FBSSxJQUFJLEVBQUUsU0FBVixDQUNBLENBQ0csR0FBSSxJQUFJLEVBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQTdCLENBQ0EsQ0FDRyxHQUFJLE1BQU8sQ0FBQSxJQUFQLEdBQWUsUUFBbkIsQ0FBNkIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLENBQW1DLElBQW5DLENBQTdCLElBQ0ssSUFBSSxLQUFLLENBQUMsT0FBTixDQUFjLElBQWQsQ0FBSixDQUNMLENBQ0csR0FBSSxJQUFJLENBQUMsTUFBTCxDQUFZLENBQWhCLENBQ0EsQ0FDQyxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsQ0FBbUMsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLEVBQTNDLENBQ0EsQ0FDSCxDQU5JLElBT0wsQ0FDRyxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsQ0FBb0MsSUFBSSxDQUFDLEVBQXpDLENBQ0YsQ0FDRCxVQUFVLENBQUcsSUFBYixDQUNGLENBQ0gsQ0FDRDtBQUNBLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLEVBQXFDLElBQXpDLENBQStDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixDQUFrQyxDQUFsQyxDQUUvQyxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixDQUFrQyxDQUFsQyxFQUF1QyxVQUEzQyxDQUF1RCxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsR0FHMUQsQ0EzQkYsQ0E4QkQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsRUFBc0IsU0FBMUIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLEVBQXJCLENBRXJDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGlCQUF6QixDQUNBLENBRUc7QUFDQTtBQUVBLEdBQUksQ0FBQSxlQUFlLENBQUcsUUFBUSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXhDLENBQ0EsR0FBSSxDQUFBLGlCQUFpQixDQUFHLDRCQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsZ0JBQWpELENBQWtFLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixjQUFwSCxDQUNBLEdBQUksQ0FBQSxPQUFPLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXNCLGlCQUF0QixDQUF3QyxJQUF4QyxDQUFkLENBQ0EsR0FBSSxDQUFBLFFBQVEsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsaUJBQXJCLENBQXVDLGVBQXZDLENBQXVELGNBQXZELENBQXNFLFdBQXRFLENBQWYsQ0FDQSxHQUFJLENBQUEsR0FBRyxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsUUFBWCxDQUFvQixpQkFBcEIsQ0FBVixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixDQUFtQyxHQUFHLENBQUMsRUFBdkMsQ0FFRztBQUNILEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLEVBQXFDLElBQXpDLENBQStDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixDQUFrQyxDQUFsQyxDQUUvQyxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixDQUFrQyxDQUF0QyxDQUF5QyxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsR0FDM0MsQ0FHRDtBQUNBLEdBQUksZUFBQSxNQUFNLENBQUMsRUFBUCwyRUFBVyxZQUFYLHNFQUF5QixRQUF6QixHQUFvQyxNQUFwQyxDQUEyQyxDQUEzQyxDQUE2QyxDQUE3QyxJQUFpRCxHQUFyRCxDQUNBLENBQ0s7QUFDWDtBQUNBLGlGQUdRLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLEVBQXVCLFNBQXZCLEVBQW9DLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixFQUF1QixJQUEvRCxDQUVBLENBRVEsR0FBSSxDQUFBLGlCQUFlLENBQUcsUUFBUSxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQXhDLENBQ0Q7QUFDQyxHQUFJLENBQUEsbUJBQWlCLENBQUcsNEJBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBdEMsQ0FBa0QsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGNBQXBHLENBQ0EsR0FBSSxDQUFBLFVBQVEsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsbUJBQXJCLENBQXVDLGlCQUF2QyxDQUF1RCxjQUF2RCxDQUFzRSxXQUF0RSxDQUFmLENBRVAsQ0FFRixDQUVDO0FBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXlCLFVBQVksQ0FDN0IsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixFQUErQixTQUFuQyxDQUE4QyxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixFQUE5QixDQUM5QyxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0Esb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLElBQTlDLENBQW1ELGFBQW5ELEVBQWtFLElBQWxFLENBQ0ksU0FBUyxJQUFULENBQWUsQ0FDUixNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUFnQyxJQUFJLENBQUMsSUFBckMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixlQUFqQixDQUFtQyxJQUFuQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHNCQUFqQixDQUF3QyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQWxELEVBQ04sQ0FMTCxDQUtNLFNBQVMsS0FBVCxDQUFlLENBQ1QsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ1osQ0FQQSxFQVFaLENBWEksQ0FhRixNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsR0FDQSxHQUFJLENBQUEsbUJBQW1CLENBQUcsUUFBdEIsQ0FBQSxtQkFBc0IsRUFFMUIsQ0FDRyxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsR0FFRixDQUxELENBT0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBakIsQ0FBZ0MsU0FBUyxpQkFBVCxDQUNoQyxDQUVNLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLEVBQW9DLFNBQXhDLENBQ0EsQ0FDRyxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBcUMsaUJBQXJDLENBQ0YsQ0FIRCxJQUlBLENBQ0csR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsRUFBb0MsQ0FBcEMsRUFBeUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLEVBQW9DLGlCQUFqRixDQUFvRyxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBcUMsaUJBQXJDLENBQXBHLElBQ0ssQ0FBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBbUMsQ0FBbkMsQ0FDUCxDQUVOLENBWkQsQ0FjQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixTQUFTLElBQVQsQ0FBYyxJQUFkLENBQW1CLEtBQW5CLENBQXlCLEdBQXpCLENBQzVCLENBQ0csZUFBZSxDQUFDLFFBQWhCLENBQXlCLElBQXpCLENBQThCLElBQTlCLENBQW1DLEtBQW5DLEVBQ0EsR0FBSSxHQUFKLENBQVMsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsR0FBNUIsQ0FBZ0MsTUFBaEMsRUFDWCxDQUpELENBTUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQXNDLFVBQ3ZDLENBQ0M7QUFDRSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFrQyxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBakIsQ0FBc0MsSUFBdEMsQ0FBNEMsSUFBNUMsQ0FBaUQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLEVBQXZGLENBQTJGLEdBQTdILENBQ0E7QUFFQSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLEVBQXhELENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBakIsR0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBakIsQ0FBd0MsSUFBeEMsQ0FDQSxRQUFRLENBQUMsVUFBVSxDQUNoQixNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBakIsQ0FBd0MsS0FBeEMsQ0FDRixDQUZPLENBRU4sSUFGTSxDQUFSLENBR0YsQ0FaQSxDQWVELE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUEyQyxVQUFVLENBQzdDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLElBQTlCLENBQ0EsQ0FDRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBMkIsQ0FBM0IsQ0FFRCxDQUNBLEdBQUksQ0FBQSxTQUFTLENBQUcsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLENBQW1DLFVBQW5DLENBQThDLE9BQTlDLENBQXNELEVBQXRFLENBQ0Qsb0JBQW9CLENBQUMsZUFBckIsQ0FBcUMsU0FBckMsQ0FBK0MsR0FBL0MsQ0FBbUQsSUFBbkQsRUFBeUQsSUFBekQsQ0FBOEQsU0FBUyxJQUFULENBQWUsQ0FFM0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsd0JBQWpCLENBQTJDLElBQUksQ0FBQyxJQUFMLENBQVUsa0JBQXJELENBQ0EsR0FBSSxLQUFLLENBQUMsT0FBTixDQUFjLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBeEIsQ0FBSixDQUFzQyxNQUFNLENBQUMsU0FBUCxDQUFpQixTQUFqQixDQUEyQixPQUEzQixDQUFtQyxNQUFuQyxDQUE2QyxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQXZELENBRXRDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixJQUFJLENBQUMsSUFBTCxDQUFVLE9BQS9CLENBSUE7QUFDQSx5QkFBeUIsQ0FBQyxPQUExQixDQUFrQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXBCLENBQW9DLEdBQUcsQ0FBRSxDQUFDLENBQUMsT0FBTyxjQUFSLENBQXVCLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5DLENBQUQsQ0FBNkMsQ0FBQyxJQUFJLENBQUMsa0JBQU4sQ0FBeUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQXpDLENBQTdDLENBQS9CLENBQUQsQ0FBekMsQ0FBbEMsRUFFRSxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBakIsQ0FBd0MsSUFBeEMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixJQUE1QixDQUdIO0FBQ0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsU0FBakIsQ0FBMkIsT0FBM0IsQ0FBbUMsTUFBN0QsQ0FBb0UsVUFBcEUsQ0FBK0UsS0FBL0UsRUFFQyxDQW5CbkIsQ0FtQm9CLFNBQVMsS0FBVCxDQUFlLENBQ2QsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBRUwsQ0F0QmhCLEVBd0JQLENBL0JELENBaUNFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGVBQWpCLENBQW1DLFVBQVUsQ0FDdkMsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLEtBQTVCLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsSUFBOUIsQ0FDQSxDQUNLLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixDQUF6QixDQUVKLENBQ0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsSUFBN0IsQ0FFQyxHQUFJLENBQUEsU0FBSixDQUNBO0FBQ0EsU0FBUyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEIsQ0FDQTtBQUNGLG9CQUFvQixDQUFDLHVCQUFyQixDQUE2QyxTQUE3QyxDQUF1RCxNQUFNLENBQUMsTUFBOUQsQ0FBcUUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBdEYsQ0FBK0YsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF6RyxDQUF3SCxHQUF4SCxDQUE0SCxJQUE1SCxFQUFrSSxJQUFsSSxDQUF1SSxTQUFTLElBQVQsQ0FBZSxDQUVsSSxNQUFNLENBQUMsU0FBUCxDQUFpQix3QkFBakIsQ0FBMkMsSUFBSSxDQUFDLElBQUwsQ0FBVSxrQkFBckQsQ0FDQSxHQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUF4QixDQUFKLENBQXNDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFNBQWpCLENBQTJCLE9BQTNCLENBQW1DLE1BQW5DLENBQTZDLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBdkQsQ0FFeEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBL0IsQ0FJQSxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBakIsQ0FBd0MsSUFBeEMsQ0FFQSxRQUFRLENBQUMsVUFBVSxDQUNoQixNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixJQUE1QixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLENBQTZCLEtBQTdCLENBQ0YsQ0FITyxDQUFSLENBTUY7QUFDRSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUEwQixNQUFNLENBQUMsU0FBUCxDQUFpQixTQUFqQixDQUEyQixPQUEzQixDQUFtQyxNQUE3RCxDQUFvRSxVQUFwRSxDQUErRSxLQUEvRSxFQUVDLENBcEJuQixDQW9Cb0IsU0FBUyxLQUFULENBQWUsQ0FDZCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDRixNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixDQUE2QixLQUE3QixDQUdILENBekJoQixFQTJCUCxDQXpDQyxDQTRDQSxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBMkMsVUFBVSxDQUMvQyxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsS0FBNUIsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixJQUExQixFQUFrQyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsU0FBaEUsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUEyQixDQUEzQixDQUVELENBRUQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsRUFBMkIsSUFBM0IsRUFBbUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFWLEVBQTJCLFNBQWxFLENBQ0EsQ0FDRSxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsQ0FBNEIsQ0FBNUIsQ0FFRCxDQUtBLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLEVBQW1DLFNBQW5DLEVBQWdELE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixFQUFtQyxDQUF2RixDQUNBLENBRUcsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsQ0FBa0MsaUJBQWxDLEdBQXNELFNBQXRELEVBQW1FLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixDQUFrQyxpQkFBbEMsR0FBc0QsRUFBekgsRUFBK0gsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLENBQWtDLFdBQWxDLEdBQWdELE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBN0wsQ0FBc00sTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLENBQW9DLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixDQUFrQyxpQkFBbEMsQ0FBcEMsQ0FFeE0sQ0FDRCxHQUFJLE1BQU8sQ0FBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBeEIsR0FBNEMsUUFBNUMsRUFBd0QsTUFBTyxDQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUF4QixHQUE0QyxRQUF4RyxDQUNBLENBRUcsR0FBSSxLQUFLLENBQUMsT0FBTixDQUFjLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUEvQixDQUFKLENBQ0EsQ0FDRyxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixDQUFrQyxNQUFsQyxDQUF5QyxDQUE3QyxDQUNBLENBQ0csTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLENBQW1DLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixDQUFrQyxDQUFsQyxFQUFxQyxFQUF4RSxDQUVGLENBQ0gsQ0FQRCxJQVFLLENBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLENBQW9DLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixDQUFrQyxFQUF0RSxDQUNQLENBQ0Q7QUFDQSxHQUFJLENBQUEsU0FBUyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBMUIsQ0FFRCxvQkFBb0IsQ0FBQywrQkFBckIsQ0FBcUQsU0FBckQsQ0FBK0QsTUFBTSxDQUFDLGNBQXRFLENBQXFGLE1BQU0sQ0FBQyxhQUE1RixDQUEwRyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQXBILENBQWlJLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBM0ksQ0FBMkosTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFySyxDQUFvTCxNQUFNLENBQUMsYUFBM0wsQ0FBeU0sTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBMU4sQ0FBbU8sTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBcFAsQ0FBK1AsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWhSLENBQWlTLEdBQWpTLENBQXFTLElBQXJTLEVBQTJTLElBQTNTLENBQWdULFNBQVMsSUFBVCxDQUFlLENBRTNTLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBMUIsRUFBNkMsSUFBSSxDQUFDLElBQUwsQ0FBVSxTQUF2RCxDQUNBLEdBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUExQixHQUEyQyxTQUEvQyxDQUEwRCxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTFCLEVBQTBDLEVBQTFDLENBQzFELE1BQU0sQ0FBQyxTQUFQLENBQWlCLHdCQUFqQixDQUEyQyxJQUFJLENBQUMsSUFBTCxDQUFVLGtCQUFyRCxDQUNBLEdBQUksS0FBSyxDQUFDLE9BQU4sQ0FBYyxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQXhCLENBQUosQ0FBc0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsU0FBakIsQ0FBMkIsT0FBM0IsQ0FBbUMsTUFBbkMsQ0FBNkMsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUF2RCxDQUV0QyxHQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBMUIsRUFBMEMsTUFBMUMsQ0FBaUQsQ0FBckQsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixDQUFvQyxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTFCLEVBQTBDLENBQTFDLEVBQTZDLElBQTdDLENBQXBDLENBQ0QsQ0FDRCxNQUFNLENBQUMsU0FBUCxDQUFpQixlQUFqQixDQUFpQyxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBbEQsQ0FFQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixJQUE1QixDQUVELE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLENBQTZCLEtBQTdCLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXdDLElBQXhDLENBSUQ7QUFDQSx5QkFBeUIsQ0FBQyxPQUExQixDQUFrQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXBCLENBQW9DLEdBQUcsQ0FBRSxDQUFDLENBQUMsT0FBTyxjQUFSLENBQXVCLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5DLENBQUQsQ0FBNkMsQ0FBQyxJQUFJLENBQUMsa0JBQU4sQ0FBeUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFoRCxDQUE3QyxDQUEvQixDQUFELENBQXpDLENBQWxDLEVBRUQ7QUFDQyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUEwQixNQUFNLENBQUMsU0FBUCxDQUFpQixTQUFqQixDQUEyQixPQUEzQixDQUFtQyxNQUE3RCxDQUFvRSxVQUFwRSxDQUErRSxLQUEvRSxFQUNDLENBekJuQixDQXlCb0IsU0FBUyxLQUFULENBQWUsQ0FDYixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixJQUE1QixDQUVBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLENBQTZCLEtBQTdCLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXdDLElBQXhDLENBQ04sQ0EvQmhCLEVBaUNQLENBekVDLENBMkVELE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLENBQTJCLFVBQVksQ0FDckMsR0FBSSxDQUFBLFdBQVcsQ0FBRyxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBbUMsVUFBbkMsQ0FBOEMsV0FBaEUsQ0FDQSxHQUFJLENBQUEsTUFBTSxDQUFHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGlCQUFqQixDQUFtQyxVQUFuQyxDQUE4QyxTQUEzRCxDQUNBLEdBQUksQ0FBQSxTQUFTLENBQUcsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUExQixFQUEwQyxDQUExQyxDQUFoQixDQUNBLG9CQUFvQixDQUFDLGNBQXJCLENBQW9DLFdBQXBDLENBQWdELE1BQWhELENBQXVELFNBQXZELEVBQWtFLElBQWxFLENBQXVFLFNBQVMsSUFBVCxDQUFjLENBQy9FLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsR0FBdEMsQ0FBMEMsU0FBMUMsRUFFRixDQUhKLENBR0ssU0FBUyxLQUFULENBQWUsQ0FDTSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsSUFBTixDQUFXLEdBQXZDLENBQTJDLE9BQTNDLEVBRXRCLENBTkosRUFPRCxDQVhELENBWUQsTUFBTSxDQUFDLGdCQUFQLENBQTBCLFVBQVksQ0FHaEMsb0JBQW9CLENBQUMsaUJBQXJCLENBQXVDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBakQsRUFBMEQsSUFBMUQsQ0FBK0QsU0FBUyxJQUFULENBQWUsQ0FFN0Q7QUFDQyxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBcUMsSUFBSSxDQUFDLElBQTFDLENBRUEsR0FBSSxDQUFDLE1BQU0sQ0FBQyxjQUFSLEVBQTBCLENBQUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWhELENBQ0csQ0FFSSxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsR0FFSCxDQUxKLElBTUcsQ0FDRyxNQUFNLENBQUMsU0FBUCxDQUFpQixlQUFqQixHQUVGLENBRUQsQ0FoQnJCLENBZ0JzQixTQUFTLEtBQVQsQ0FBZSxDQUVuQixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDRCxDQW5CakIsRUFvQkgsQ0F2QkgsQ0F5QkssTUFBTSxDQUFDLFNBQVAsQ0FBaUIsc0JBQWpCLENBQTBDLFNBQVMsRUFBVCxDQUFjLENBRXJELEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLEVBQXVDLFNBQTNDLENBQXNELE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUFzQyxFQUF0QyxDQUN0RCxHQUFJLENBQUEsR0FBRyxDQUFHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQThCLEdBQTlCLENBQWtDLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBOUQsRUFBZ0UsT0FBaEUsQ0FBd0UsRUFBeEUsQ0FBVixDQUVBLEdBQUksR0FBRyxFQUFFLENBQVQsQ0FBVyxDQUNULE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUF3QyxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixHQUE5QixDQUF4QyxDQUVBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWtDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUFzQyxJQUF0QyxDQUE0QyxJQUE1QyxDQUFpRCxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBakIsQ0FBc0MsRUFBdkYsQ0FBMkYsR0FBN0gsQ0FFQyxDQUNYLENBWEssQ0FjWCxNQUFNLENBQUMsU0FBUCxDQUFpQixxQkFBakIsQ0FBMEMsU0FBUyxRQUFULENBQ3RDLENBQ0UsR0FBSSxDQUFBLFNBQUosQ0FDQSxHQUFJLENBQUEsWUFBWSxDQUFHLHlCQUF5QixDQUFDLGVBQTFCLENBQTBDLE1BQU0sQ0FBQyxhQUFqRCxDQUFuQixDQUNBLEdBQUksS0FBSyxDQUFDLE9BQU4sQ0FBYyxZQUFkLEdBQStCLFlBQVksQ0FBQyxNQUFiLENBQW9CLENBQXZELENBQTBELFNBQVMsQ0FBRyxZQUFZLENBQUMsQ0FBRCxDQUF4QixDQUNwRCxHQUFJLENBQUEsU0FBUyxDQUFDLENBQWQsQ0FBZ0IsZUFBZSxDQUFDLENBQWhDLENBQ0EsR0FBSSxTQUFTLEVBQUUsU0FBZixDQUNBLENBQ0csR0FBSSxTQUFTLENBQUMsR0FBVixFQUFlLFNBQWYsRUFBNEIsU0FBUyxDQUFDLEdBQVYsRUFBZSxJQUEvQyxDQUNBLENBQ0EsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQVYsQ0FBYyxNQUE3QixDQUFvQyxDQUFDLEVBQXJDLENBQ0EsQ0FDRSxHQUFJLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixJQUFqQixFQUF1QixRQUEzQixDQUNBLENBQ0UsR0FBSSxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsRUFBd0IsU0FBeEIsRUFBcUMsU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLEVBQXdCLElBQWpFLENBQ0EsQ0FDRSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsTUFBdEMsQ0FBNkMsQ0FBQyxFQUE5QyxDQUNBLENBQ0MsR0FBSSxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsQ0FBdkIsRUFBMEIsSUFBMUIsRUFBZ0MsWUFBaEMsRUFBZ0QsU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLENBQXZCLEVBQTBCLEtBQTFCLEVBQWlDLFNBQXJGLENBQWdHLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsQ0FBdkIsRUFBMEIsS0FBcEMsQ0FDaEcsR0FBSSxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsQ0FBdkIsRUFBMEIsSUFBMUIsRUFBZ0Msa0JBQWhDLEVBQXNELFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixDQUF2QixFQUEwQixLQUExQixFQUFpQyxTQUEzRixDQUFzRyxlQUFlLENBQUMsU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLENBQXZCLEVBQTBCLEtBQTFDLENBR3RHLENBR0YsQ0FFRixDQUVBLENBQ0YsQ0FDSCxDQUNULE1BQU8sQ0FBQyxZQUFZLFNBQWIsQ0FBdUIsa0JBQWtCLGVBQXpDLENBQVAsQ0FDQyxDQWpDTCxDQXNDRSxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsQ0FBa0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIscUJBQWpCLENBQXVDLHlCQUF2QyxDQUFsQyxDQUVBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLElBQXZCLENBQTZCLE1BQU0sQ0FBQyxnQkFBUCxHQUVuQixHQUFJLENBQUEsUUFBSixDQUNBLEdBQUksTUFBTSxDQUFDLGNBQVgsQ0FBMkIsUUFBUSxDQUFHLGNBQWMsQ0FBQyxHQUFmLENBQW1CLG1EQUFuQixDQUFYLENBQTNCLElBQ0ssQ0FBQSxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsbURBQW5CLENBQVgsQ0FFTCxRQUFRLENBQUMsTUFBVCxDQUFnQixRQUFRLENBQUMsUUFBRCxDQUFSLENBQW1CLE1BQW5CLENBQWhCLEVBR0wsQ0F6ZWEsQ0FBakIsQ0EyZUQsTUFBTyxDQUNHLFFBQVEsQ0FBRSxHQURiLENBR0csVUFBVSxDQUFFLFVBSGYsQ0FJRyxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBRW5DLENBTkosQ0FBUCxDQVNELEVBQ0QsYUFFTyxRQUFTLENBQUEsZ0JBQVQsRUFBNkIsQ0FDdkIsR0FBSSxDQUFBLFVBQVUsQ0FBRyxDQUFDLFFBQUQsQ0FBVyxjQUFYLENBQTBCLFFBQTFCLENBQW1DLGFBQW5DLENBQWlELHNCQUFqRCxDQUF3RSxZQUF4RSxDQUFxRixtQkFBckYsQ0FBeUcsVUFBekcsQ0FBb0gsVUFBcEgsQ0FBK0gsY0FBL0gsQ0FBOEksMkJBQTlJLENBQTBLLGlCQUExSyxDQUE0TCxrQkFBNUwsQ0FBK00saUJBQS9NLENBQWlPLHFCQUFqTyxDQUF1UCxJQUF2UCxDQUE0UCxnQkFBNVAsQ0FBNlEsVUFBN1EsQ0FBd1IsVUFBeFIsQ0FBbVMsdUJBQW5TLENBQ0MsU0FBVSxNQUFWLENBQWlCLFlBQWpCLENBQThCLE1BQTlCLENBQXFDLFdBQXJDLENBQWlELG9CQUFqRCxDQUFzRSxVQUF0RSxDQUFpRixpQkFBakYsQ0FBbUcsUUFBbkcsQ0FBNEcsUUFBNUcsQ0FBcUgsWUFBckgsQ0FBa0kseUJBQWxJLENBQTRKLGVBQTVKLENBQTRLLGdCQUE1SyxDQUE2TCxlQUE3TCxDQUE2TSxtQkFBN00sQ0FBaU8sRUFBak8sQ0FBb08sY0FBcE8sQ0FBbVAsUUFBblAsQ0FBNFAsUUFBNVAsQ0FBcVEscUJBQXJRLENBQTRSLENBRTlTLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxNQUFNLENBQUMsSUFBUCxDQUFjLGtCQUFkLENBQ0EsR0FBSSxNQUFNLENBQUMsU0FBUCxFQUFrQixTQUF0QixDQUFpQyxNQUFNLENBQUMsU0FBUCxDQUFtQixFQUFuQixDQUNqQyxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsT0FBUCxDQUFlLElBQWhDLENBQ0EsTUFBTSxDQUFDLFdBQVAsQ0FBcUIsTUFBTSxDQUFDLE9BQVAsQ0FBZSxNQUFwQyxDQUNBLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixZQUFZLENBQUMsZ0JBQXJDLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsWUFBWSxDQUFDLGVBQXBDLENBQ0EsTUFBTSxDQUFDLEdBQVAsQ0FBVyxxQkFBWCxDQUVDLE1BQU0sQ0FBQyxZQUFQLENBQXVCLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLFlBQXRELENBRUQsTUFBTSxDQUFDLFdBQVAsQ0FBcUIsQ0FDbkIsSUFBSSxDQUFDLEVBRGMsQ0FFckIsY0FBYyxDQUFFLElBRkssQ0FHckI7QUFDQTtBQUNBLGtCQUFrQixDQUFFLElBTEMsQ0FNckIsV0FBVyxDQUFFLEtBTlEsQ0FPckIseUJBQXlCLENBQUcsQ0FQUCxDQVFyQix1QkFBdUIsQ0FBRyxDQVJMLENBU3JCO0FBQ0Esd0JBQXdCLENBQUUsS0FWTCxDQVdyQixvQkFBb0IsQ0FBRSxJQVhELENBWXJCLHFCQUFxQixDQUFFLElBWkYsQ0FhckIsbUJBQW1CLENBQUUsQ0FBQyxFQUFELENBQUssRUFBTCxDQUFTLEVBQVQsQ0FBWSxHQUFaLENBQWdCLEdBQWhCLENBQW9CLEdBQXBCLENBQXdCLElBQXhCLENBYkEsQ0FjckIsd0JBQXdCLENBQUUsS0FDMUI7QUFDQTtBQUNBO0FBQ0Q7QUFsQnNCLENBQXJCLENBcUJLLEdBQUksQ0FBQSxpQkFBaUIsQ0FBRyxDQUN0QixVQUFVLENBQUUsQ0FEVSxDQUV0QixRQUFRLENBQUUsRUFGWSxDQUd0QixJQUFJLENBQUUsSUFIZ0IsQ0FBeEIsQ0FNQSxRQUFRLENBQUMsVUFBVSxDQUNWLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTZCLGlCQUFpQixDQUFDLFFBQS9DLENBQ1IsQ0FGTyxDQUFSLENBR0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsU0FBakIsQ0FBNkIsSUFBN0IsQ0FDRixHQUFJLENBQUEsa0JBQWtCLENBQUcsQ0FDdkIsQ0FBRSxJQUFJLENBQUUscUJBQVIsQ0FBK0IsV0FBVyxDQUFFLGVBQTVDLENBQTZELElBQUksQ0FBRSxRQUFuRSxDQUE2RSxLQUFLLENBQUMsSUFBbkYsQ0FBd0YsWUFBWSxDQUFFLEtBQXRHLENBQTZHLE9BQU8sQ0FBRSxJQUF0SCxDQUR1QixDQUV2QixDQUFFLElBQUksQ0FBRSxtQ0FBUixDQUE2QyxXQUFXLENBQUUsWUFBMUQsQ0FGdUIsQ0FHdkIsQ0FBRSxJQUFJLENBQUUsa0RBQVIsQ0FBNEQsV0FBVyxDQUFFLGFBQXpFLENBSHVCLENBSXZCLENBQUUsSUFBSSxDQUFFLDBEQUFSLENBQW9FLFdBQVcsQ0FBRSxXQUFqRixDQUp1QixDQUt2QixDQUFFLElBQUksQ0FBRSxpRUFBUixDQUEyRSxXQUFXLENBQUUsa0JBQXhGLENBTHVCLENBTXZCLENBQUUsSUFBSSxDQUFFLGlDQUFSLENBQTJDLFdBQVcsQ0FBRSxhQUF4RCxDQUFzRSxZQUFZLENBQUUsS0FBcEYsQ0FBMEYsT0FBTyxDQUFFLEtBQW5HLENBTnVCLENBT3ZCLENBQUUsSUFBSSxDQUFFLGtDQUFSLENBQTRDLFdBQVcsQ0FBRSxjQUF6RCxDQUF3RSxZQUFZLENBQUUsS0FBdEYsQ0FBNEYsSUFBSSxDQUFFLE1BQWxHLENBQTBHLFVBQVUsQ0FBRSxrQ0FBdEgsQ0FQdUIsQ0FRdkIsQ0FBRSxJQUFJLENBQUUsaUNBQVIsQ0FBMkMsV0FBVyxDQUFFLFlBQXhELENBUnVCLENBU3ZCLENBQUUsSUFBSSxDQUFFLGVBQVIsQ0FBeUIsV0FBVyxDQUFFLFdBQXRDLENBVHVCLENBQXpCLENBWUcsR0FBSSxDQUFBLGlCQUFpQixDQUFHLENBQ2xCLENBQUUsSUFBSSxDQUFFLElBQVIsQ0FBYyxXQUFXLENBQUUsaUJBQTNCLENBQThDLElBQUksQ0FBRSxRQUFwRCxDQUE4RCxLQUFLLENBQUMsS0FBcEUsQ0FBMEUsWUFBWSxDQUFFLEtBQXhGLENBQStGLE9BQU8sQ0FBRSxJQUF4RyxDQURrQixDQUVsQixDQUFFLElBQUksQ0FBRSxxQkFBUixDQUErQixXQUFXLENBQUUsV0FBNUMsQ0FGa0IsQ0FHbEIsQ0FBRSxJQUFJLENBQUUsNEJBQVIsQ0FBc0MsV0FBVyxDQUFFLGtCQUFuRCxDQUhrQixDQUlsQixDQUFFLElBQUksQ0FBRSxrQkFBUixDQUE0QixXQUFXLENBQUUsWUFBekMsQ0FKa0IsQ0FLbEIsQ0FBRSxJQUFJLENBQUUsaUJBQVIsQ0FBMkIsV0FBVyxDQUFFLGFBQXhDLENBTGtCLENBTW5CO0FBQ0MsQ0FBRSxJQUFJLENBQUUsbUJBQVIsQ0FBNkIsV0FBVyxDQUFFLGFBQTFDLENBQXdELFlBQVksQ0FBRSxLQUF0RSxDQUE0RSxPQUFPLENBQUUsS0FBckYsQ0FQa0IsQ0FRbEIsQ0FBRSxJQUFJLENBQUUsaUJBQVIsQ0FBMkIsV0FBVyxDQUFFLGNBQXhDLENBQXVELFlBQVksQ0FBRSxLQUFyRSxDQUEyRSxJQUFJLENBQUUsTUFBakYsQ0FBeUYsVUFBVSxDQUFFLGtDQUFyRyxDQVJrQixDQVNsQixDQUFFLElBQUksQ0FBRSxnQkFBUixDQUEwQixXQUFXLENBQUUsWUFBdkMsQ0FUa0IsQ0FBeEIsQ0FZQyxHQUFJLE1BQU0sQ0FBQyxlQUFQLEVBQXdCLFNBQTVCLENBQXVDLE1BQU0sQ0FBQyxlQUFQLENBQXlCLENBQXpCLENBQ3ZDLEdBQUksTUFBTSxDQUFDLGdCQUFQLEVBQXlCLFNBQTdCLENBQXdDLE1BQU0sQ0FBQyxnQkFBUCxDQUEwQixDQUExQixDQUN4QyxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFnQyxLQUFoQyxDQUdBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTRCLEtBQTVCLENBRUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBakIsQ0FBa0MsVUFBVSxDQUNqQyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE2QixNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixLQUE1QixDQUFtQyxJQUFoRSxDQUNWLENBRkQsQ0FJQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixHQUFtQixTQUFuQixFQUFnQyxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsR0FBbUIsSUFBdkQsQ0FBNkQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQW1CLEVBQW5CLENBR2pFLEdBQUksQ0FBQSxnQkFBZ0IsQ0FBRyxDQUFDLElBQUksQ0FBRSxtQkFBUCxDQUEyQixRQUFRLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUEvQyxDQUF1RCxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsZ0JBQS9FLENBQWdHLGVBQWUsQ0FBQyxNQUFNLENBQUMsZUFBdkgsQ0FBdUksTUFBTSxDQUFHLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixFQUExSyxDQUF2QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQix5QkFBeUIsQ0FBQyxjQUExQixDQUF5QyxnQkFBekMsQ0FBbEIsQ0FFQSxNQUFNLENBQUMsR0FBUCxDQUFhLG1CQUFiLENBRUMsR0FBSSxDQUFBLG1CQUFtQixDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBcEMsQ0FDVCxHQUFJLENBQUEsb0JBQW9CLENBQUcsc0JBQXNCLE1BQU0sQ0FBQyxNQUE3QixDQUFvQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsU0FBekYsQ0FDQSxHQUFJLENBQUEsb0JBQUosQ0FDQSxHQUFJLENBQUEsdUJBQXVCLENBQUcsUUFBMUIsQ0FBQSx1QkFBMEIsQ0FBUyxJQUFULENBQWUsQ0FDekMsR0FBSSxDQUFBLGVBQWUsQ0FBRyxPQUFPLENBQUMsSUFBUixDQUFhLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBdkIsQ0FBdEIsQ0FDQSxHQUFJLElBQUksQ0FBQyxlQUFELENBQUosR0FBd0IsU0FBNUIsQ0FDQSxDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUEyQixJQUFJLENBQUMsZUFBRCxDQUEvQixDQUNKO0FBQ0Esb0JBQW9CLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFqQyxDQUNBLEdBQUksQ0FBQSxZQUFZLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLG9CQUFyQixDQUEwQyxvQkFBMUMsQ0FBK0QsV0FBL0QsQ0FBMkUsdUJBQTNFLENBQW5CLENBQ0MsQ0FDSixDQVRELENBVUEsR0FBSSxDQUFBLHNCQUFzQixDQUFHLFFBQXpCLENBQUEsc0JBQXlCLENBQVMsSUFBVCxDQUFlLENBQ3hDLEdBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBWCxDQUFKLENBQXdCLENBQXhCLEVBQTZCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixDQUF2RCxFQUE0RCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFYLENBQUosR0FBMEIsU0FBMUYsQ0FBcUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQTJCLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVgsQ0FBL0IsQ0FFckcsR0FBSSxDQUFBLFlBQVksQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsb0JBQXJCLENBQTBDLG9CQUExQyxDQUErRCxXQUEvRCxDQUEyRSx1QkFBM0UsQ0FBbkIsQ0FDQTtBQUNILENBTEQsQ0FRQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixHQUEyQixJQUEzQixFQUFtQyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsR0FBMkIsQ0FBbEUsQ0FDQSxDQUNJLEdBQUksQ0FBQSxXQUFXLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLG9CQUFyQixDQUEwQyxtQkFBMUMsQ0FBOEQsV0FBOUQsQ0FBMEUsc0JBQTFFLENBQWxCLENBQ0gsQ0FIRCxJQUdNLENBQ0Ysb0JBQW9CLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFqQyxDQUNBLEdBQUksQ0FBQSxZQUFZLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLG9CQUFyQixDQUEwQyxvQkFBMUMsQ0FBK0QsV0FBL0QsQ0FBMkUsdUJBQTNFLENBQW5CLENBQ0gsQ0FDVyxNQUFNLENBQUMsTUFBUCxDQUFjLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBeEIsQ0FDRDtBQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLFlBQWpCLEVBQStCLFNBQW5DLENBQThDLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixZQUFqQixDQUE4QixPQUE5QixDQUk1QyxNQUFNLENBQUMsV0FBUCxDQUFtQixhQUFuQixDQUFtQyxTQUFVLE9BQVYsQ0FBbUIsQ0FDbkQsTUFBTSxDQUFDLE9BQVAsQ0FBaUIsT0FBakIsQ0FDQSxPQUFPLENBQUMsU0FBUixDQUFrQixFQUFsQixDQUFxQixtQkFBckIsQ0FBeUMsTUFBekMsQ0FBZ0QsU0FBUyxHQUFULENBQWEsQ0FDNUQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsR0FBRyxDQUFDLFVBQWxDLENBRUEsR0FBRyxHQUFHLENBQUMsVUFBUCxDQUFrQixDQUdaLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLFlBQWpCLEVBQStCLFNBQW5DLENBQ0EsQ0FDQyxNQUFNLENBQUMsWUFBUCxDQUFvQixHQUFHLENBQUMsTUFBSixDQUFXLEVBQS9CLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBeUIsTUFBTSxDQUFDLFlBQWhDLENBQ0EsTUFBTSxDQUFDLGlCQUFQLENBQXlCLEdBQUcsQ0FBQyxNQUFKLENBQVcsV0FBWCxDQUF1QixFQUFoRCxDQUNBLE1BQU0sQ0FBQyxrQkFBUCxDQUE0QixHQUFHLENBQUMsTUFBaEMsQ0FDQSxDQU5ELElBUUEsQ0FDQyxNQUFNLENBQUMsWUFBUCxDQUFvQixHQUFHLENBQUMsTUFBSixDQUFXLGdCQUFYLENBQTRCLEVBQWhELENBQ0EsTUFBTSxDQUFDLGdCQUFQLENBQTBCLE1BQU0sQ0FBQyxZQUFqQyxDQUNBLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixHQUFHLENBQUMsTUFBSixDQUFXLGdCQUFYLENBQTRCLFdBQTVCLENBQXdDLEVBQWpFLENBQ0EsTUFBTSxDQUFDLGtCQUFQLENBQTRCLEdBQUcsQ0FBQyxNQUFKLENBQVcsZ0JBQXZDLENBQ0EsQ0FFSCxDQUNKLENBdEJELEVBd0JBO0FBQ0YsT0FBTyxDQUFDLFVBQVIsQ0FBbUIsRUFBbkIsQ0FBc0IsaUJBQXRCLENBQXdDLE1BQXhDLENBQWdELFNBQVUsT0FBVixDQUFtQixRQUFuQixDQUE2QixDQUN6RSxpQkFBaUIsQ0FBQyxVQUFsQixDQUErQixPQUEvQixDQUNBLGlCQUFpQixDQUFDLFFBQWxCLENBQTZCLFFBQTdCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSw2QkFBVixDQUF3QyxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsWUFBekQsQ0FBc0UsQ0FBdEUsQ0FBd0UsS0FBeEUsQ0FBOEUsRUFBOUUsQ0FBaUYsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBbEcsQ0FBMkcsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBNUgsQ0FBeUksT0FBekksQ0FBaUosUUFBakosQ0FBMEosTUFBTSxDQUFDLE1BQWpLLEVBQ0gsQ0FKRCxFQU1DLE9BQU8sQ0FBQyxJQUFSLENBQWEsRUFBYixDQUFnQixhQUFoQixDQUE4QixNQUE5QixDQUFzQyxVQUFXLENBQzdDO0FBQ0Q7QUFDRixDQUhELEVBTUQsQ0F2Q0QsQ0EwQ0gsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBakIsQ0FBZ0MsU0FBUyxpQkFBVCxDQUNoQyxDQUVDLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLEVBQW9DLFNBQXhDLENBQ0EsQ0FDRyxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBcUMsaUJBQXJDLENBQ0YsQ0FIRCxJQUlBLENBQ0csR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsRUFBb0MsQ0FBcEMsRUFBeUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLEVBQW9DLGlCQUFqRixDQUFvRyxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBcUMsaUJBQXJDLENBQXBHLElBQ0ssQ0FBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBbUMsQ0FBbkMsQ0FDUCxDQUVELENBWkQsQ0FjSjtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUNvQixNQUFNLENBQUMsYUFBUCxDQUF1QixVQUFVLENBR3pCLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQyxlQUFlLENBQUMsaUJBQWhCLENBQWtDLE1BQU0sQ0FBQyxZQUF6QyxDQUFzRCxDQUF0RCxDQUF3RCxPQUF4RCxDQUFnRSxJQUFoRSxFQUFzRSxJQUF0RSxDQUEyRSxTQUFTLElBQVQsQ0FBZSxDQUluRTtBQUNBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixZQUF2QyxDQUFvRCxDQUFwRCxDQUFzRCxJQUF0RCxDQUEyRCxJQUFJLENBQUMsSUFBTCxDQUFVLEdBQXJFLEVBRUwsQ0FQbEIsQ0FPbUIsU0FBUyxLQUFULENBQWUsQ0FHYixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDTCxDQVhoQixFQVlOLENBaEJILENBa0JBLE1BQU0sQ0FBQyxjQUFQLENBQXdCLFNBQVMsSUFBVCxDQUFjLE1BQWQsQ0FBcUIsVUFBckIsQ0FBZ0MsUUFBaEMsQ0FBeUMsQ0FFL0QsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUVBLGVBQWUsQ0FBQyxpQkFBaEIsQ0FBa0MsSUFBbEMsQ0FBdUMsTUFBdkMsRUFBK0MsSUFBL0MsQ0FBb0QsU0FBUyxJQUFULENBQWUsQ0FFdkMsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsSUFBbkIsQ0FBMEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUFwQyxDQUNELEdBQUksVUFBSixDQUNBLENBQ0UsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsUUFBNUIsQ0FBcUMsU0FBckMsRUFFRCxDQUNGLENBUjFCLENBUTJCLFNBQVMsS0FBVCxDQUFlLENBRWQsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0FYdkIsRUFZRCxDQWhCRCxDQW9CRixNQUFNLENBQUMsdUJBQVAsQ0FBaUMsU0FBUyxJQUFULENBQWMsTUFBZCxDQUFxQixVQUFyQixDQUFnQyxRQUFoQyxDQUF5QyxPQUF6QyxDQUFpRCxPQUFqRCxDQUF5RCxPQUF6RCxDQUFpRSxRQUFqRSxDQUEwRSxDQUV2RyxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE4QixLQUE5QixDQUNBLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQyxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLENBQWhDLENBQ0QsQ0FDSyxHQUFJLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsUUFBNUIsRUFBc0MsT0FBMUMsQ0FDQSxDQUNFLE9BQU8sQ0FBRyxJQUFJLENBQUMsSUFBTCxDQUFVLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFFBQTVCLENBQVYsQ0FDRCxDQUNMLENBQ0QsZUFBZSxDQUFDLDBCQUFoQixDQUEyQyxJQUEzQyxDQUFnRCxNQUFoRCxDQUF1RCxPQUF2RCxDQUErRCxPQUEvRCxDQUF1RSxPQUF2RSxDQUErRSxRQUEvRSxFQUF5RixJQUF6RixDQUE4RixTQUFTLElBQVQsQ0FBZSxDQUVqRixNQUFNLENBQUMsV0FBUCxDQUFtQixJQUFuQixDQUEwQixJQUFJLENBQUMsSUFBTCxDQUFVLE9BQXBDLENBQ0EsTUFBTSxDQUFDLFFBQVAsQ0FBa0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUE1QixDQUNBLE1BQU0sQ0FBQyxZQUFQLENBQXNCLElBQUksQ0FBQyxJQUFMLENBQVUsUUFBaEMsQ0FDQSxNQUFNLENBQUMsVUFBUCxDQUFrQixJQUFJLENBQUMsSUFBTCxDQUFVLEtBQTVCLENBQ0EsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsT0FBbkIsQ0FDQSxNQUFNLENBQUMsUUFBUCxDQUFrQixJQUFJLENBQUMsSUFBTCxDQUFVLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFFBQTVCLENBQWxCLENBQ0EsTUFBTSxDQUFDLFFBQVAsQ0FBa0IsUUFBbEIsQ0FDQSxNQUFNLENBQUMsV0FBUCxDQUFtQixVQUFuQixDQUE4QixNQUFNLENBQUMsVUFBckMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE4QixJQUE5QixDQUNELEdBQUksVUFBSixDQUNBLENBQ0UsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsUUFBNUIsQ0FBcUMsU0FBckMsRUFFRCxDQUNGLENBaEIxQixDQWdCMkIsU0FBUyxLQUFULENBQWUsQ0FFZCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDTCxDQW5CdkIsRUFvQkQsQ0EvQkgsQ0FpQ0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxtQkFBVixDQUE4QixTQUFTLElBQVQsQ0FDOUIsQ0FDSSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixJQUFJLENBQUMsVUFBbkMsQ0FFQSxHQUFHLElBQUksQ0FBQyxVQUFSLENBQW1CLENBR1osR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsWUFBakIsRUFBK0IsU0FBbkMsQ0FDQSxDQUNDLE1BQU0sQ0FBQyxZQUFQLENBQW9CLElBQUksQ0FBQyxFQUF6QixDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXlCLE1BQU0sQ0FBQyxZQUFoQyxDQUNBLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixJQUFJLENBQUMsV0FBTCxDQUFpQixDQUFqQixFQUFvQixFQUE3QyxDQUNBLE1BQU0sQ0FBQyxrQkFBUCxDQUE0QixJQUE1QixDQUNBLENBTkQsSUFRQSxDQUNDLE1BQU0sQ0FBQyxZQUFQLENBQW9CLElBQUksQ0FBQyxnQkFBTCxDQUFzQixFQUExQyxDQUNBLE1BQU0sQ0FBQyxnQkFBUCxDQUEwQixNQUFNLENBQUMsWUFBakMsQ0FDQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsSUFBSSxDQUFDLGdCQUFMLENBQXNCLFdBQXRCLENBQWtDLEVBQTNELENBQ0EsTUFBTSxDQUFDLGtCQUFQLENBQTRCLElBQUksQ0FBQyxnQkFBakMsQ0FDQSxDQUVILENBQ1IsQ0F2QkQsQ0F5QkEsTUFBTSxDQUFDLEVBQVAsQ0FBVSw2QkFBVixDQUEwQyxTQUFTLElBQVQsQ0FBYyxNQUFkLENBQXFCLFVBQXJCLENBQWdDLFFBQWhDLENBQXlDLE9BQXpDLENBQWlELE9BQWpELENBQXlELE9BQXpELENBQWlFLFFBQWpFLENBQTBFLFFBQTFFLENBQW1GLENBRTNILEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxHQUFJLENBQUEsUUFBUSxDQUFHLEVBQUUsQ0FBQyxLQUFILEVBQWYsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE4QixLQUE5QixDQUVBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLFlBQWpCLEVBQStCLE9BQW5DLENBQ0EsQ0FDRSxNQUFNLENBQUMsT0FBUCxDQUFpQixDQUFDLE9BQU8sQ0FBRyxrQkFBWCxDQUFqQixDQUNELENBRUUsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsWUFBakIsRUFBK0IsU0FBbkMsQ0FDSCxDQUNFLE1BQU0sQ0FBQyxPQUFQLENBQWlCLENBQUMsT0FBTyxDQUFHLGlCQUFYLENBQWpCLENBQ0QsQ0FHRCxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLENBQWhDLENBQ0EsQ0FDSyxHQUFJLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsUUFBdEMsRUFBZ0QsT0FBcEQsQ0FDQSxDQUNFLE9BQU8sQ0FBRyxJQUFJLENBQUMsSUFBTCxDQUFVLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLFFBQXRDLENBQVYsQ0FDRCxDQUNMLENBQ0Y7QUFFQyxlQUFlLENBQUMsa0NBQWhCLENBQW1ELElBQW5ELENBQXdELE1BQXhELENBQStELE9BQS9ELENBQXVFLE9BQXZFLENBQStFLE9BQS9FLENBQXVGLFFBQXZGLENBQWdHLFFBQWhHLEVBQTBHLElBQTFHLENBQStHLFNBQVMsSUFBVCxDQUFlLENBRWxHLE1BQU0sQ0FBQyxPQUFQLENBQWUsT0FBZixDQUF5QixJQUFJLENBQUMsSUFBTCxDQUFVLE9BQW5DLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUF0QyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQWdDLElBQUksQ0FBQyxJQUFMLENBQVUsUUFBMUMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLEtBQXRDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsT0FBN0IsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLFFBQXRDLENBQTVCLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsUUFBNUIsQ0FDQSxNQUFNLENBQUMsT0FBUCxDQUFlLFVBQWYsQ0FBMEIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBM0MsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixTQUFqQixDQUE2QixLQUE3QixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQThCLElBQTlCLENBSUUsTUFBTSxDQUFDLE9BQVAsQ0FBZSxRQUFmLENBQTBCLFFBQTFCLENBQ0EsTUFBTSxDQUFDLE9BQVAsQ0FBZSxhQUFmLENBQStCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWhELENBQ0EsTUFBTSxDQUFDLE9BQVAsQ0FBZSxLQUFmLENBQXVCLElBQUksQ0FBQyxJQUFMLENBQVUsS0FBakMsQ0FFQSxHQUFJLFFBQVEsRUFBRSxTQUFkLENBQXlCLFFBQVEsQ0FBQyxPQUFULENBQWlCLENBQUMsSUFBSSxDQUFFLE1BQU0sQ0FBQyxPQUFkLENBQWpCLEVBSTlCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkRBRWtELFFBQVEsQ0FBQyxVQUFVLENBQ2YsVUFBVSxDQUFDLFVBQVgsQ0FBc0IsWUFBdEIsRUFDSCxDQUZPLENBQVIsQ0FHRCxHQUFJLFVBQUosQ0FDQSxDQUNFLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLFFBQTVCLENBQXFDLFNBQXJDLEVBRUQsQ0FDRixDQS9DMUIsQ0ErQzJCLFNBQVMsS0FBVCxDQUFlLENBQ2QsUUFBUSxDQUFDLE1BQVQsQ0FBZ0IsQ0FBQyxJQUFJLENBQUUsTUFBTSxDQUFDLE9BQWQsQ0FBaEIsRUFDQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDTCxDQWxEdkIsRUFtREksTUFBTyxDQUFBLFFBQVEsQ0FBQyxPQUFoQixDQUNMLENBOUVELENBK0VQLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUF3QixVQUFVLENBRXZCLE1BQU0sQ0FBQyw0QkFBUCxDQUFvQyxDQUFwQyxDQUFzQyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUF2RCxFQUNBO0FBRVYsQ0FMRCxDQU9BLE1BQU0sQ0FBQyx5QkFBUCxDQUFtQyxTQUFTLFdBQVQsQ0FBc0IsQ0FDNUMsTUFBTSxDQUFDLDRCQUFQLENBQXNDLFdBQXRDLENBQ1osQ0FGRCxDQUlBLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUF3QixTQUFTLFVBQVQsQ0FBb0IsUUFBcEIsQ0FBNkIsQ0FDeEMsR0FBSSxDQUFBLElBQUksQ0FBRyxFQUFFLENBQUMsS0FBSCxFQUFYLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBOEIsS0FBOUIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLDZCQUFWLENBQXdDLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixZQUF6RCxDQUFzRSxDQUF0RSxDQUF3RSxLQUF4RSxDQUE4RSxFQUE5RSxDQUN3QyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUR6RCxDQUNrRSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQURuRixDQUV3QyxVQUZ4QyxDQUVtRCxRQUZuRCxDQUU0RCxNQUFNLENBQUMsTUFGbkUsRUFFMkUsSUFGM0UsQ0FFZ0YsU0FBUyxJQUFULENBRXpDLENBQ2EsSUFBSSxDQUFDLE9BQUwsQ0FBYSxJQUFiLEVBQ1osQ0FOeEMsRUFPQSxNQUFPLENBQUEsSUFBSSxDQUFDLE9BQVosQ0FDWixDQVhELENBZVEsTUFBTSxDQUFDLHVCQUFQLENBQWlDLFNBQVMsVUFBVCxDQUFvQixDQUM5QyxNQUFNLENBQUMsdUJBQVAsQ0FBK0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLFlBQWhELENBQTZELFVBQTdELENBQXdFLEtBQXhFLENBQThFLEVBQTlFLENBQWlGLEVBQWpGLENBQW9GLEVBQXBGLENBQXVGLGlCQUFpQixDQUFDLFVBQXpHLENBQW9ILGlCQUFpQixDQUFDLFFBQXRJLEVBQ0YsQ0FGTCxDQUtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixXQUFqQixDQUErQix3QkFBL0IsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsVUFBakIsQ0FBNkIsT0FBN0IsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsV0FBakIsQ0FBK0IsUUFBL0IsQ0FFSixNQUFNLENBQUMsTUFBUCxDQUFjLHNCQUFkLENBQXFDLFNBQVMsUUFBVCxDQUFrQixRQUFsQixDQUEyQixDQUU5RCxHQUFJLFFBQVEsRUFBRSxRQUFWLEVBQXNCLFFBQVEsRUFBRSxTQUFwQyxDQUNBLENBQ0MsTUFBTSxDQUFDLE1BQVAsQ0FBYyxVQUFkLENBQXlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixVQUExQyxDQUVBLENBQ0YsQ0FQRCxFQVFDLE1BQU0sQ0FBQyxNQUFQLENBQWMsc0JBQWQsQ0FBcUMsU0FBUyxRQUFULENBQWtCLFFBQWxCLENBQTJCLENBRS9ELEdBQUksUUFBUSxFQUFFLFFBQVYsRUFBc0IsUUFBUSxFQUFFLFNBQXBDLENBQ0EsQ0FDQyxNQUFNLENBQUMsTUFBUCxDQUFjLFVBQWQsQ0FBeUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLFVBQTFDLENBRUEsQ0FDRixDQVBBLEVBU0c7QUFFQyxZQUFZLENBQUMsY0FBYixDQUE0QixjQUE1QixDQUEyQyxJQUEzQyxFQUFpRCxJQUFqRCxDQUFzRCxTQUFVLElBQVYsQ0FBZ0IsQ0FDN0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBZ0MsSUFBSSxDQUFDLElBQXJDLENBQ0YsQ0FGUCxFQUdWLEdBQUksQ0FBQSxRQUFKLENBQ0EsR0FBSSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBOUIsQ0FBK0MsUUFBUSxDQUFHLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDRDQUFuQixDQUFYLENBQS9DLElBQ0ssQ0FBQSxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsK0NBQW5CLENBQVgsQ0FFTCxRQUFRLENBQUMsTUFBVCxDQUFnQixRQUFRLENBQUMsUUFBRCxDQUFSLENBQW1CLE1BQW5CLENBQWhCLEVBRUYsQ0EzYW1CLENBQWpCLENBOGFMLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVILFVBQVUsQ0FBQyxVQUZSLENBR0YsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUdsQyxDQU5BLENBQVAsQ0FRUCxFQUNELGFBRU8sUUFBUyxDQUFBLGFBQVQsRUFBMEIsQ0FFekIsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUgsV0FBVyxDQUFFLHlDQUZWLENBR0YsVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBZ0IsZUFBaEIsQ0FBZ0MsSUFBaEMsQ0FBcUMsQ0FFOUMsTUFBTSxDQUFDLEtBQVAsQ0FBYyxlQUFkLENBRUEsR0FBSSxNQUFNLENBQUMsU0FBUCxFQUFvQixTQUF4QixDQUFtQyxNQUFNLENBQUMsU0FBUCxDQUFpQixFQUFqQixDQUVsQyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixLQUE1QixDQUVDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWtDLFVBQVUsQ0FDdkIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNkIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsS0FBNUIsQ0FBbUMsSUFBaEUsQ0FDcEIsQ0FGRCxDQUlGLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLENBQStCLElBQUksQ0FBQyxXQUFMLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBM0IsQ0FBL0IsQ0FFQyxDQWpCRixDQW1CSCxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBR3ZDLENBdEJNLENBQVAsQ0EwQlAsRUFDRCxhQUVPLFFBQVMsQ0FBQSxtQkFBVCxFQUFnQyxDQUUvQixNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFSCxXQUFXLENBQUUsK0NBRlYsQ0FHSCxLQUFLLENBQUUsQ0FDSCxFQUFFLENBQUUsR0FERCxDQUVILFNBQVMsQ0FBRSxHQUZSLENBR0gsY0FBYyxDQUFDLEdBSFosQ0FISixDQVNWLFVBQVUsQ0FBRSxvQkFBUyxNQUFULENBQWdCLGdCQUFoQixDQUFpQyxlQUFqQyxDQUFpRCxxQkFBakQsQ0FBdUUsV0FBdkUsQ0FBbUYsUUFBbkYsQ0FBNEYsVUFBNUYsQ0FBdUcsZUFBdkcsQ0FBdUgsWUFBdkgsQ0FBb0kseUJBQXBJLENBQThKLGNBQTlKLENBQTZLLG1CQUE3SyxDQUNaLENBQ0csTUFBTSxDQUFDLElBQVAsQ0FBYyxxQkFBZCxDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWUsZUFBZixDQUNBLEdBQUksTUFBTSxDQUFDLFNBQVAsRUFBa0IsU0FBdEIsQ0FBaUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsRUFBakIsQ0FDakMsR0FBSSxNQUFNLENBQUMsRUFBUCxFQUFXLFNBQWYsQ0FBMEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUFWLENBQzFCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQWdDLE1BQWhDLENBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBYSxVQUFiLENBQXdCLElBQXhCLENBQ0EsR0FBSSxNQUFNLENBQUMsY0FBUCxFQUF1QixTQUF2QixFQUFvQyxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixFQUErQixTQUF2RSxDQUFrRixNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUErQixNQUFNLENBQUMsY0FBUCxDQUFzQixlQUFyRCxDQUFsRixJQUNLLElBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsRUFBK0IsU0FBbkMsQ0FBK0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsQ0FBOUIsQ0FDcEQ7QUFDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixlQUFqQixDQUFtQyxFQUFuQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGVBQWpCLENBQWlDLG9CQUFqQyxDQUF3RCxFQUF4RCxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGVBQWpCLENBQWlDLHFCQUFqQyxDQUF5RCxFQUF6RCxDQUVBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGFBQWpCLENBQWlDLGFBQWpDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLENBQW9DLFFBQXBDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLEVBQXRDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsRUFBNUIsQ0FFQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE4QixDQUN0QixFQUFFLENBQUUsR0FEa0IsQ0FFdEIsSUFBSSxDQUFFLE1BRmdCLENBR3RCLE9BQU8sQ0FBRSxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsRUFIYSxDQUl0QixlQUFlLENBQUUsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLEVBSkssQ0FLdEIsSUFBSSxDQUFDLEVBTGlCLENBQTlCLENBU0YsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixhQUFqQixFQUFnQyxTQUFwQyxDQUErQyxNQUFNLENBQUMsU0FBUCxDQUFpQixhQUFqQixDQUFpQyxFQUFqQyxDQUUvQyxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBbUMsQ0FBQyxDQUFwQyxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLEVBQWdCLFNBQXBCLENBQ0EsQ0FDSSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsSUFBVixFQUFnQixPQUFwQixDQUNBLENBQ0UsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsRUFBc0IsSUFBMUIsQ0FBZ0MsQ0FDN0IsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsYUFBakIsQ0FBaUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUEzQyxDQUNGLENBRkQsSUFHQSxDQUNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUF1QixFQUF2QixDQUVELENBQ0YsQ0FURCxJQVdBLENBQ0ksR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsRUFBc0IsSUFBMUIsQ0FBZ0MsQ0FDL0IsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsYUFBakIsQ0FBaUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUEzQyxDQUNBLENBRkQsSUFHQSxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUF1QixFQUF2QixDQUVDLENBRUosQ0FDSixDQUVBLE1BQU0sQ0FBQyx3QkFBUCxDQUFrQyxTQUFTLElBQVQsQ0FDbEMsQ0FFUyxHQUFJLElBQUksQ0FBQyxPQUFMLEVBQWMsU0FBbEIsQ0FBOEIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXdDLElBQUksQ0FBQyxPQUE3QyxDQUM5QixHQUFJLE1BQU0sQ0FBQyxjQUFQLEVBQXVCLFNBQTNCLENBQ0EsQ0FDSSxHQUFJLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGVBQXRCLEVBQXVDLFNBQTNDLENBQXNELE1BQU0sQ0FBQyxjQUFQLENBQXNCLGVBQXRCLENBQXdDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQXpELENBQ3RELE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUFzQyxZQUF0QyxDQUFxRCxNQUFNLENBQUMsY0FBUCxDQUFzQixlQUEzRSxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUFzQyx3QkFBdEMsQ0FBaUUsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsY0FBdkYsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBakIsQ0FBc0MsZ0JBQXRDLENBQXlELE1BQU0sQ0FBQyxjQUFoRSxDQUVILENBUEQsSUFPSyxDQUVELE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUFzQyxZQUF0QyxDQUFxRCxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUF0RSxDQUNILENBQ0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLFNBQXRDLENBQWtELElBQUksQ0FBQyxRQUF2RCxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUFzQyxTQUF0QyxDQUFrRCxJQUFJLENBQUMsUUFBdkQsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBakIsQ0FBc0MsY0FBdEMsQ0FBdUQsSUFBSSxDQUFDLGFBQTVELENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLG1CQUF0QyxDQUE0RCxJQUFJLENBQUMsbUJBQWpFLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLG9CQUF0QyxDQUE2RCxJQUFJLENBQUMsb0JBQWxFLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLFdBQXRDLENBQWtELE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQW5FLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLFdBQXRDLENBQW9ELFlBQVksQ0FBQyxRQUFqRSxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUFzQyxjQUF0QyxDQUF1RCxLQUF2RCxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUFzQyx3QkFBdEMsQ0FBaUUsSUFBakUsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUFzQyxtQkFBdEMsRUFBMkQsU0FBM0QsRUFBd0UsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLG1CQUF0QyxDQUEwRCxNQUExRCxDQUFpRSxDQUE3SSxDQUFnSixNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBakIsQ0FBc0MsZUFBdEMsQ0FBd0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLG1CQUF0QyxDQUEwRCxDQUExRCxFQUE2RCxFQUFySCxDQUNoSixHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUFzQyxvQkFBdEMsRUFBNEQsU0FBNUQsRUFBeUUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLG9CQUF0QyxDQUEyRCxNQUEzRCxDQUFrRSxDQUEvSSxDQUFrSixNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBakIsQ0FBc0MsZ0JBQXRDLENBQXlELE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUFzQyxvQkFBdEMsQ0FBMkQsQ0FBM0QsRUFBOEQsRUFBdkgsQ0FDbEosTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsa0JBQTVCLENBQStDLElBQUksQ0FBQyxrQkFBcEQsQ0FFQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixJQUE1QixDQUFtQyxJQUFJLENBQUMsU0FBeEMsQ0FFQSxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLElBQTVCLEVBQWtDLFNBQXRDLENBQWlELE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLElBQTVCLENBQW1DLEVBQW5DLENBQ2pELE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLE9BQTVCLENBQW9DLE1BQXBDLENBQTRDLElBQUksQ0FBQyxPQUFqRCxDQUNBLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsa0JBQTVCLEVBQWdELFNBQXBELENBQStELE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLGtCQUE1QixDQUFpRCxFQUFqRCxDQUMvRCxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixrQkFBNUIsQ0FBK0MsVUFBL0MsQ0FBNEQsQ0FBQyxZQUFZLENBQUMsQ0FBZCxDQUFnQixVQUFVLENBQUcsSUFBN0IsQ0FBNUQsQ0FFQSxNQUFNLENBQUMsS0FBUCxDQUFhLGVBQWIsQ0FBNkIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsa0JBQTVCLENBQStDLFVBQS9DLENBQTBELFlBQXZGLEVBRUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxrQkFBYixDQUFnQyxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixrQkFBNUIsQ0FBK0MsRUFBL0MsQ0FBa0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLFNBQXhILENBQWtJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLGtCQUE1QixDQUErQyxXQUFqTCxFQUVBLE1BQU0sQ0FBQyxHQUFQLENBQWEsbUJBQWIsQ0FDQTtBQUNBLEdBQUksTUFBTSxDQUFDLGNBQVAsRUFBdUIsU0FBM0IsQ0FDQSxDQUNJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLGtCQUE1QixDQUErQyxhQUEvQyxDQUErRCxNQUFNLENBQUMsY0FBUCxDQUFzQixhQUFyRixDQUVBLEdBQUksQ0FBQSxlQUFlLENBQUUsTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXNCLE9BQU8sTUFBTSxDQUFDLGNBQVAsQ0FBc0IsY0FBbkQsQ0FBckIsQ0FDQSxHQUFJLENBQUEsV0FBVyxDQUFHLFFBQWQsQ0FBQSxXQUFjLENBQVMsSUFBVCxDQUNsQixDQUNJO0FBQ0EsZUFBZSxDQUFDLGVBQWhCLENBQWdDLGFBQWhDLEVBQ0gsQ0FKRCxDQU1BLEdBQUksQ0FBQSxrQkFBSixDQUNBLEdBQUksZUFBZSxFQUFFLFNBQXJCLENBQWdDLGtCQUFrQixDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixlQUFlLENBQUMsSUFBckMsQ0FBMEMsYUFBMUMsQ0FBd0QsV0FBeEQsQ0FBckIsQ0FFaEM7QUFDQSxHQUFJLENBQUEsU0FBUyxDQUFFLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQixPQUFPLE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUFzQyxjQUFuRSxDQUFrRixNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBbkcsQ0FBZixDQUNBLEdBQUksQ0FBQSxlQUFhLENBQUcsU0FBUyxDQUFDLE9BQVYsQ0FBa0IsSUFBdEMsQ0FFQSxHQUFJLENBQUEsWUFBWSxDQUFHLFFBQWYsQ0FBQSxZQUFlLENBQVMsSUFBVCxDQUNuQixDQUNJO0FBQ0EsU0FBUyxDQUFDLE9BQVYsQ0FBa0IsZUFBbEIsQ0FBa0MsY0FBbEMsRUFDSCxDQUpELENBTUEsR0FBSSxDQUFBLG1CQUFtQixDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixlQUFyQixDQUFtQyxjQUFuQyxDQUFrRCxZQUFsRCxDQUExQixDQUVBLE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBWCxDQUF5QixlQUF6QixDQUF1QyxjQUF2QyxFQUVBLEdBQUksQ0FBQSxjQUFjLENBQUcsUUFBakIsQ0FBQSxjQUFpQixDQUFTLElBQVQsQ0FDckIsQ0FDSTtBQUNBLFNBQVMsQ0FBQyxPQUFWLENBQWtCLGVBQWxCLENBQWtDLGdCQUFsQyxFQUNILENBSkQsQ0FNQSxHQUFJLENBQUEscUJBQXFCLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLGVBQXJCLENBQW1DLGdCQUFuQyxDQUFvRCxjQUFwRCxDQUE1QixDQUVBLE1BQU0sQ0FBQyxHQUFQLENBQVcsY0FBYyxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBakIsQ0FBc0MsY0FBL0QsQ0FBOEUsU0FBUyxLQUFULENBQWUsSUFBZixDQUFvQixDQUU1RixNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixHQUNMLENBSEQsRUFLQSxRQUFRLENBQUMsVUFBVSxDQUNmLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGtCQUFqQixDQUFvQyxJQUFwQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGFBQWpCLENBQStCLEtBQS9CLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsSUFBOUIsQ0FDSCxDQUpPLENBSU4sR0FKTSxDQUFSLENBUVAsQ0FFSixDQTVGRixDQTZGQyxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsQ0FBbUMsU0FBUyxNQUFULENBQWdCLENBQy9DLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FHRCxHQUFJLE1BQU0sRUFBRSxDQUFaLENBQ0EsQ0FDRyxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBb0MsS0FBcEMsQ0FDQSxXQUFXLENBQUMsZ0JBQVosQ0FBNkIsTUFBN0IsRUFBcUMsSUFBckMsQ0FBMEMsU0FBUyxJQUFULENBQWUsQ0FFdkMsTUFBTSxDQUFDLHdCQUFQLENBQWdDLElBQWhDLEVBR0QsQ0FMakIsQ0FLa0IsU0FBUyxLQUFULENBQWUsQ0FFYixHQUFJLEtBQUssQ0FBQyxHQUFOLEVBQVcsU0FBZixDQUEwQixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFBMUIsSUFDSyxDQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQTVCLENBQWtDLE9BQWxDLEVBQ0wsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsZ0JBQTVCLENBQStDLENBQUMsTUFBTSxDQUFHLEtBQUssQ0FBQyxNQUFoQixDQUF1QixHQUFHLENBQUMsS0FBSyxDQUFDLEdBQWpDLENBQS9DLENBRUwsQ0FYZixFQVlGLENBQ0gsQ0FwQkQsQ0FzQkQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIscUJBQWpCLENBQXdDLFNBQVMsZUFBVCxDQUF5QixnQkFBekIsQ0FBMEMsQ0FDN0UsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUdELEdBQUksZUFBZSxDQUFDLENBQXBCLENBQ0EsQ0FFRyxlQUFlLENBQUMsY0FBaEIsQ0FBK0IsZ0JBQS9CLENBQWdELGVBQWhELENBQWdFLElBQWhFLEVBQXNFLElBQXRFLENBQTJFLFNBQVMsSUFBVCxDQUFlLENBRXhFLE1BQU0sQ0FBQyx3QkFBUCxDQUFnQyxJQUFJLENBQUMsSUFBckMsRUFHRCxDQUxqQixDQUtrQixTQUFTLEtBQVQsQ0FBZSxDQUViLEdBQUksS0FBSyxDQUFDLEdBQU4sRUFBVyxTQUFmLENBQTBCLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUExQixJQUNLLENBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBNUIsQ0FBa0MsT0FBbEMsRUFDTCxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixnQkFBNUIsQ0FBK0MsQ0FBQyxNQUFNLENBQUcsS0FBSyxDQUFDLE1BQWhCLENBQXVCLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBakMsQ0FBL0MsQ0FFTCxDQVhmLEVBWUYsQ0FDSCxDQXBCRixDQXNCQSxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGtCQUFyQixDQUF5QyxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsQ0FBa0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBbkQsRUFHdkMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsU0FBakIsQ0FBNkIsU0FBUyxNQUFULENBQWdCLFNBQWhCLENBQTBCLGNBQTFCLENBQXlDLENBQy9ELEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxHQUFJLFNBQVMsRUFBRSxTQUFYLEVBQXdCLFNBQVMsRUFBRSxFQUF2QyxDQUEyQyxTQUFTLENBQUMsQ0FBVixDQUMzQyxHQUFJLGNBQWMsRUFBRSxTQUFoQixFQUE2QixjQUFjLEVBQUUsRUFBakQsQ0FBcUQsY0FBYyxDQUFDLENBQWYsQ0FFckQsR0FBSSxNQUFNLEVBQUUsQ0FBWixDQUNBLENBQ0ksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQW9DLEtBQXBDLENBRUEsZUFBZSxDQUFDLFNBQWhCLENBQTBCLE1BQTFCLENBQWlDLFNBQWpDLENBQTJDLGNBQTNDLEVBQTJELElBQTNELENBQWdFLFNBQVMsSUFBVCxDQUFlLENBR2pFLEdBQUksTUFBTSxDQUFDLElBQVAsQ0FBWSxJQUFJLENBQUMsSUFBakIsRUFBdUIsTUFBdkIsRUFBK0IsQ0FBL0IsRUFBb0MsSUFBSSxDQUFDLElBQUwsRUFBVyxJQUEvQyxFQUF1RCxJQUFJLENBQUMsSUFBTCxFQUFXLFNBQXRFLENBQ0EsQ0FDRSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixzRkFBc0YsTUFBbEgsQ0FBeUgsT0FBekgsRUFDRCxDQUhELElBS0EsQ0FFRSxNQUFNLENBQUMsd0JBQVAsQ0FBZ0MsSUFBSSxDQUFDLElBQXJDLEVBQ2tDLENBQ3ZDLENBWlgsQ0FZWSxTQUFTLEtBQVQsQ0FBZSxDQUdiLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFOLENBQVUsR0FBdEMsQ0FBMEMsT0FBMUMsRUFDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixnQkFBNUIsQ0FBK0MsQ0FBQyxNQUFNLENBQUcsS0FBSyxDQUFDLE1BQWhCLENBQXVCLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBakMsQ0FBL0MsQ0FFTCxDQWxCVCxFQW1CSCxDQUNOLENBN0JGLENBK0JBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGVBQWpCLENBQW1DLFNBQVMsY0FBVCxDQUF3QixRQUF4QixDQUFpQyxNQUFqQyxDQUF3QyxTQUF4QyxDQUFrRCxjQUFsRCxDQUFpRSxDQUM3RixHQUFJLGNBQWMsRUFBRSxTQUFoQixFQUE2QixjQUFjLEVBQUUsRUFBakQsQ0FBcUQsY0FBYyxDQUFDLENBQWYsQ0FDckQsR0FBSSxTQUFTLEVBQUUsU0FBWCxFQUF3QixTQUFTLEVBQUUsRUFBdkMsQ0FBMkMsU0FBUyxDQUFDLENBQVYsQ0FDM0MsR0FBSSxjQUFjLEVBQUUsU0FBaEIsRUFBNkIsY0FBYyxFQUFFLEVBQWpELENBQXFELGNBQWMsQ0FBQyxDQUFmLENBQ3JELEdBQUksTUFBTSxFQUFFLFNBQVIsRUFBcUIsTUFBTSxFQUFFLEVBQWpDLENBQXFDLE1BQU0sQ0FBQyxDQUFQLENBQ3JDLEdBQUksUUFBUSxFQUFFLFNBQWQsQ0FBeUIsUUFBUSxDQUFDLEVBQVQsQ0FDekIsR0FBSSxDQUFDLE1BQU0sRUFBRSxDQUFSLEVBQWEsUUFBUSxFQUFFLEVBQXhCLEdBQStCLGNBQWMsQ0FBQyxDQUFsRCxDQUNBLENBQ0UscUJBQXFCLENBQUMsU0FBdEIsQ0FBZ0MsY0FBaEMsQ0FBK0MsUUFBL0MsQ0FBd0QsTUFBeEQsQ0FBK0QsU0FBL0QsQ0FBeUUsY0FBekUsRUFBeUYsSUFBekYsQ0FBOEYsU0FBUyxJQUFULENBQWUsQ0FFNUYsR0FBSSxNQUFNLENBQUMsSUFBUCxDQUFZLElBQUksQ0FBQyxJQUFqQixFQUF1QixNQUF2QixFQUErQixDQUEvQixFQUFvQyxJQUFJLENBQUMsSUFBTCxFQUFXLElBQS9DLEVBQXVELElBQUksQ0FBQyxJQUFMLEVBQVcsU0FBdEUsQ0FDRCxDQUNFLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLHNGQUFzRixNQUFsSCxDQUF5SCxPQUF6SCxFQUNELENBSEEsSUFLRCxDQUVFLE1BQU0sQ0FBQyx3QkFBUCxDQUFnQyxJQUFJLENBQUMsSUFBckMsRUFDRCxDQUVIO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBRWlDLENBOUNmLENBOENnQixTQUFTLEtBQVQsQ0FBZSxDQUVmLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLGdCQUE1QixDQUErQyxDQUFDLE1BQU0sQ0FBRyxLQUFLLENBQUMsTUFBaEIsQ0FBdUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFqQyxDQUEvQyxDQUVMLENBbkRYLEVBb0RELENBQ04sQ0E3REYsQ0FnRUQsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFyQixDQUFxQyxNQUFNLENBQUMsU0FBUCxDQUFpQixTQUFqQixDQUEyQixNQUFNLENBQUMsU0FBUCxDQUFpQixNQUE1QyxDQUFtRCxNQUFNLENBQUMsU0FBUCxDQUFpQixTQUFwRSxDQUE4RSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUEvRixFQUVyQyxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixFQUFxQyxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUExRCxDQUFzRSxNQUFNLENBQUMsU0FBUCxDQUFpQixTQUFqQixDQUEyQixNQUFNLENBQUMsU0FBUCxDQUFpQixNQUE1QyxDQUFtRCxNQUFNLENBQUMsU0FBUCxDQUFpQixTQUFwRSxDQUE4RSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUEvRixFQUV0RSxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQXJCLENBQWlDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGVBQWpCLENBQWlDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWxELENBQWlFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWxGLENBQWlHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWxILENBQStILE1BQU0sQ0FBQyxTQUFQLENBQWlCLFNBQWhKLENBQTBKLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQTNLLEVBRXBDLENBblRVLENBcVRGLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FLeEMsQ0ExVE0sQ0FBUCxDQTRUUCxFQUNELGFBRU8sUUFBUyxDQUFBLGlCQUFULEVBQThCLENBRTdCLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVILFdBQVcsQ0FBRSw2Q0FGVixDQUdILEtBQUssQ0FBQyxDQUNDLGNBQWMsQ0FBRyxHQURsQixDQUVDLFNBQVMsQ0FBRSxHQUZaLENBR0Msa0JBQWtCLENBQUMsR0FIcEIsQ0FJQyxtQkFBbUIsQ0FBRSxHQUp0QixDQUtDLG9CQUFvQixDQUFFLEdBTHZCLENBTUMsU0FBUyxDQUFFLEdBTlosQ0FISCxDQVlDLFVBQVUsQ0FBRSxvQkFBUyxNQUFULENBQWdCLFlBQWhCLENBQTZCLFFBQTdCLENBQXNDLFVBQXRDLENBQWlELGVBQWpELENBQWlFLGVBQWpFLENBQWlGLGdCQUFqRixDQUFrRyxtQkFBbEcsQ0FBc0gsQ0FFbEksTUFBTSxDQUFDLElBQVAsQ0FBYSxtQkFBYixDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsRUFBVyxTQUFmLENBQTBCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBVixDQUMxQixHQUFJLE1BQU0sQ0FBQyxLQUFQLEVBQWMsU0FBbEIsQ0FBNkIsTUFBTSxDQUFDLEtBQVAsQ0FBYSxFQUFiLENBQzdCLE1BQU0sQ0FBQyxLQUFQLENBQWUsZUFBZixDQUNDLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxTQUFQLEVBQWtCLFNBQXRCLENBQWlDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLEVBQWpCLENBQ2pDLE1BQU0sQ0FBQyxLQUFQLENBQWEsWUFBYixDQUEwQixJQUExQixDQUNBLE1BQU0sQ0FBQyxZQUFQLENBQXNCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQXZDLENBQ0EsTUFBTSxDQUFDLHFCQUFQLENBQTZCLEtBQTdCLENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsYUFBdEIsQ0FBb0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsYUFBckQsQ0FFQSxHQUFJLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGFBQXRCLEdBQXNDLFNBQTFDLENBQXNELE1BQU0sQ0FBQyxjQUFQLENBQXNCLGFBQXRCLENBQW9DLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUE5RCxDQUV2RCxNQUFNLENBQUMsYUFBUCxDQUFxQixZQUFZLENBQUMsYUFBbEMsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixZQUFZLENBQUMsZUFBcEMsQ0FDQSxNQUFNLENBQUMsbUJBQVAsQ0FBMkIsUUFBUSxDQUFDLFNBQVQsQ0FBbUIsMEJBQW5CLENBQTNCLENBQ0EsTUFBTSxDQUFDLHFCQUFQLENBQTZCLFFBQVEsQ0FBQyxTQUFULENBQW1CLDRCQUFuQixDQUE3QixDQUNBLE1BQU0sQ0FBQyxZQUFQLENBQXNCLEtBQXRCLENBQ0EsTUFBTSxDQUFDLGlCQUFQLENBQXlCLEtBQXpCLENBQ0EsTUFBTSxDQUFDLEdBQVAsQ0FBYSxtQkFBYixDQUdBLEdBQUksQ0FBQSxnQkFBZ0IsQ0FBRSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsdUJBQXVCLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGNBQW5FLENBQWtGLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGVBQXhHLENBQXRCLENBQ0EsR0FBSSxDQUFBLG9CQUFvQixDQUFHLGdCQUFnQixDQUFDLE9BQWpCLENBQXlCLElBQXBELENBRUMsR0FBSSxDQUFBLGFBQWEsQ0FBRyxRQUFoQixDQUFBLGFBQWdCLENBQVMsSUFBVCxDQUNyQixDQUNJLGdCQUFnQixDQUFDLE9BQWpCLENBQXlCLGVBQXpCLENBQTJDLElBQTNDLENBQ0EsZ0JBQWdCLENBQUMsT0FBakIsQ0FBeUIsZUFBekIsQ0FBeUMsZUFBekMsRUFFSCxDQUxBLENBT0QsR0FBSSxDQUFBLG9CQUFvQixDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixvQkFBckIsQ0FBMEMsZUFBMUMsQ0FBMEQsYUFBMUQsQ0FBM0IsQ0FFRCxHQUFJLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixNQUE1QixDQUFtQyxDQUF2QyxDQUNBLENBQ0MsTUFBTSxDQUFDLGdCQUFQLENBQTBCLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixDQUE1QixFQUErQixFQUF6RCxDQUNBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLG9CQUF0QixDQUE2QyxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsQ0FBNUIsQ0FBN0MsQ0FDQSxDQUpELElBS0ssQ0FBQSxNQUFNLENBQUMsZ0JBQVAsQ0FBMEIsQ0FBMUIsQ0FFTCxHQUFJLE1BQU0sQ0FBQyxtQkFBUCxDQUEyQixNQUEzQixDQUFrQyxDQUF0QyxDQUNBLENBQ0MsTUFBTSxDQUFDLGVBQVAsQ0FBeUIsTUFBTSxDQUFDLG1CQUFQLENBQTJCLENBQTNCLEVBQThCLEVBQXZELENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsbUJBQXRCLENBQTRDLE1BQU0sQ0FBQyxtQkFBUCxDQUEyQixDQUEzQixDQUE1QyxDQUNBLENBSkQsSUFLSyxDQUFBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLENBQXZCLENBQ0osR0FBSSxNQUFNLENBQUMsYUFBUCxFQUFzQixTQUF0QixFQUFtQyxNQUFNLENBQUMsYUFBUCxFQUFzQixFQUE3RCxDQUNBLENBQ0ksR0FBSSxNQUFNLENBQUMsbUJBQVAsRUFBNEIsU0FBNUIsRUFBeUMsTUFBTSxDQUFDLG1CQUFQLEVBQTRCLEVBQXpFLENBQ0EsQ0FDRSxNQUFNLENBQUMsWUFBUCxDQUFzQixJQUF0QixDQUNELENBSEQsSUFJQSxDQUNFLE1BQU0sQ0FBQyxhQUFQLENBQXdCLE1BQU0sQ0FBQyxtQkFBL0IsQ0FDQSxNQUFNLENBQUMsaUJBQVAsQ0FBMkIsSUFBM0IsQ0FDRCxDQUdKLENBWkQsSUFZSyxDQUNILFFBQVEsQ0FBQyxTQUFULENBQW1CLDBCQUFuQixDQUE4QyxNQUFNLENBQUMsYUFBckQsRUFFRCxDQUVELEdBQUksTUFBTSxDQUFDLGVBQVAsRUFBd0IsU0FBNUIsQ0FDQSxDQUNJLEdBQUksTUFBTSxDQUFDLHFCQUFQLEVBQThCLFNBQWxDLENBQ0EsQ0FDSSxHQUFJLE1BQU0sQ0FBQyxpQkFBWCxDQUNBLENBQ0UsTUFBTSxDQUFDLGVBQVAsQ0FBMEIsTUFBTSxDQUFDLHFCQUFqQyxDQUNELENBQ0osQ0FFSixDQVZELElBVU0sSUFBSSxNQUFNLENBQUMscUJBQVAsRUFBOEIsU0FBbEMsQ0FDTixDQUNFLFFBQVEsQ0FBQyxTQUFULENBQW1CLDRCQUFuQixDQUFnRCxNQUFNLENBQUMsZUFBdkQsRUFFRCxDQUpLLElBS04sQ0FDSSxHQUFJLE1BQU0sQ0FBQyxpQkFBWCxDQUNBLENBRUUsTUFBTSxDQUFDLGVBQVAsQ0FBMEIsTUFBTSxDQUFDLHFCQUFqQyxDQUVELENBTEQsSUFNQSxDQUNJLFFBQVEsQ0FBQyxTQUFULENBQW1CLDRCQUFuQixDQUFnRCxNQUFNLENBQUMsZUFBdkQsRUFDSCxDQUNKLENBRUQsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsTUFBcEIsQ0FDQTtBQUNBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEdBQWhCLENBRUEsTUFBTSxDQUFDLHNCQUFQLENBQThCLElBQTlCLENBRUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxrQkFBYixDQUFrQyxVQUM5QixDQUNDLEdBQUksTUFBTSxDQUFDLEtBQVAsQ0FBYSxZQUFqQixDQUErQixNQUFNLENBQUMsS0FBUCxDQUFhLFlBQWIsQ0FBNEIsS0FBNUIsQ0FBL0IsSUFDSyxDQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsWUFBYixDQUE0QixJQUE1QixDQUVMLENBTEwsQ0FRQSxNQUFNLENBQUMsT0FBUCxDQUFpQixTQUFTLElBQVQsQ0FDYixDQUNJLE1BQU0sQ0FBQyxLQUFQLENBQWUsSUFBZixDQUVILENBSkwsQ0FNQSxNQUFNLENBQUMsY0FBUCxDQUF3QixVQUN4QixDQUNFLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixVQUExQixDQUFxQyxVQUFyQyxDQUFnRCxDQUFDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixVQUExQixDQUFxQyxVQUF0RixDQUVELENBSkQsQ0FNQSxNQUFNLENBQUMsTUFBUCxDQUFnQixVQUFVLENBQ04sTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFNLENBQUMsYUFBakIsQ0FBK0IsTUFBTSxDQUFDLGVBQXRDLEVBRW5CLENBSEQsQ0FLQSxNQUFNLENBQUMsb0JBQVAsQ0FBOEIsVUFBVSxDQUVwQyxNQUFNLENBQUMsS0FBUCxDQUFhLG9CQUFiLENBQWtDLEtBQWxDLEVBRUgsQ0FKRCxDQU9BLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUEwQixVQUMxQixDQUNPLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFNBQXRCLENBQWtDLENBQWxDLENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBc0Isd0JBQXRCLENBQStDLEtBQS9DLENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsY0FBdEIsQ0FBdUMsS0FBdkMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFrQyxLQUFsQyxDQUNBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLG1CQUF0QixDQUE0QyxLQUE1QyxDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWEsa0JBQWIsQ0FBZ0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBakQsRUFDTixDQVJELENBWUEsTUFBTSxDQUFDLGlCQUFQLENBQTJCLFNBQVMsTUFBVCxDQUFnQixDQUduQyxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBRUQsZUFBZSxDQUFDLGlCQUFoQixDQUFrQyxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBbkQsQ0FBb0UsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBckYsQ0FBcUcsTUFBckcsQ0FBNEcsSUFBNUcsRUFBa0gsSUFBbEgsQ0FBdUgsU0FBUyxJQUFULENBQWUsQ0FHL0csTUFBTSxDQUFDLG9CQUFQLENBQTZCLElBQUksQ0FBQyxJQUFMLENBQVUsSUFBVixDQUFlLG9CQUFmLENBQW9DLENBQXBDLENBQTdCLENBQ0EsTUFBTSxDQUFDLG1CQUFQLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsSUFBVixDQUFlLG1CQUFmLENBQW1DLENBQW5DLENBQTVCLENBQ0EsR0FBSSxNQUFNLENBQUMsbUJBQVAsRUFBNEIsU0FBaEMsQ0FDRSxDQUNBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGVBQXRCLENBQXdDLE1BQU0sQ0FBQyxtQkFBUCxDQUEyQixFQUFuRSxDQUVDLENBRUgsR0FBSSxNQUFNLEVBQUUsT0FBWixDQUVBLENBQ0U7QUFDQSxVQUFVLENBQUMsVUFBWCxDQUFzQixjQUF0QixDQUFxQyxJQUFJLENBQUMsSUFBTCxDQUFVLFNBQS9DLEVBQ0QsQ0FFRCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLEdBQXRDLENBQTBDLFNBQTFDLEVBR0wsQ0FyQmxCLENBcUJtQixTQUFTLEtBQVQsQ0FBZSxDQUdiLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNMLENBekJoQixFQTBCTixDQS9CRCxDQWtDQyxNQUFNLENBQUMsR0FBUCxDQUFXLGNBQWMsTUFBTSxDQUFDLGVBQWhDLENBQWdELFNBQVMsS0FBVCxDQUFlLElBQWYsQ0FBb0IsQ0FFN0QsR0FBSSxDQUFBLElBQUksQ0FBRyxNQUFNLENBQUMsS0FBbEIsQ0FDQSxJQUFJLENBQUMsYUFBTCxHQUNBO0FBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsSUFBSSxDQUFDLFNBQWxDLENBQTRDLElBQTVDLEVBQ0gsQ0FOSixFQVdELE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLENBQStCLFNBQVMsU0FBVCxDQUFtQixJQUFuQixDQUF3QixDQUduRCxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBRUEsR0FBSSxJQUFJLENBQUMsTUFBVCxDQUFpQixDQUdiLGVBQWUsQ0FBQyxXQUFoQixDQUE0QixNQUFNLENBQUMsZUFBbkMsQ0FBbUQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsSUFBcEUsQ0FBeUUsU0FBekUsQ0FBbUYsSUFBbkYsRUFBeUYsSUFBekYsQ0FBOEYsU0FBUyxJQUFULENBQWUsa0JBRXJHLEdBQUksQ0FBQSxJQUFJLE9BQUosRUFBQSxJQUFJLFNBQUosc0JBQUEsSUFBSSxDQUFFLElBQU4sb0RBQVksR0FBWixJQUFrQixFQUF0QixDQUEwQixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLEdBQXRDLENBQTBDLFNBQTFDLEVBQzFCLFVBQVUsQ0FBQyxVQUFYLENBQXNCLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGFBQXRCLENBQW9DLEdBQXBDLENBQXdDLGlCQUF4QyxDQUEwRCxNQUFNLENBQUMsY0FBUCxDQUFzQixjQUF0RyxDQUFxSCxJQUFJLENBQUMsSUFBTCxDQUFVLFNBQS9ILEVBQ0EsVUFBVSxDQUFDLFVBQVgsQ0FBc0IseUJBQXlCLE1BQU0sQ0FBQyxlQUF0RCxDQUFzRSxJQUFJLENBQUMsSUFBTCxDQUFVLFNBQWhGLEVBRUcsR0FBSSxDQUFBLGFBQWEsQ0FBRyx1QkFBdUIsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsY0FBakUsQ0FDQSxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIsYUFBekIsQ0FBdUMsZUFBdkMsQ0FBdUQsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsZUFBL0IsQ0FBK0MsTUFBTSxDQUFDLGFBQXRELENBQXZELEVBRUYsQ0FUVCxDQVNVLFNBQVMsS0FBVCxDQUFlLENBRWYsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBRVQsQ0FiRCxFQWVILENBQUM7QUFsQkYsSUFvQkEsQ0FDRSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsY0FBMUIsQ0FBeUMsa0JBQXJFLENBQXdGLFNBQXhGLEVBRUQsQ0FDSixDQTdCRCxDQThCRztBQUVKLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQWdDLFNBQVUsSUFBVixDQUFnQixDQUM3QyxPQUFPLENBQUMsT0FBUixDQUFnQixJQUFoQixDQUFzQixTQUFTLElBQVQsQ0FBZSxDQUNyQyxHQUFHLElBQUksRUFBSSxJQUFJLENBQUMsWUFBTCxHQUFzQixJQUE5QixFQUFzQyxJQUFJLENBQUMsYUFBOUMsQ0FBNkQsQ0FDekQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsSUFBOUIsRUFDSCxDQUNBLENBSkQsRUFLRCxDQU5GLENBUU0sQ0FoUE4sQ0FpUEYsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUdsQyxDQXBQQSxDQUFQLENBc1BQLEVBQ0QsYUFFTyxRQUFTLENBQUEsa0JBQVQsRUFBK0IsQ0FDekIsR0FBSSxDQUFBLFVBQVUsQ0FBRyxDQUFDLFFBQUQsQ0FBVyxjQUFYLENBQTBCLFFBQTFCLENBQW1DLGFBQW5DLENBQWlELHNCQUFqRCxDQUF3RSxZQUF4RSxDQUFxRixtQkFBckYsQ0FBeUcsVUFBekcsQ0FBb0gsVUFBcEgsQ0FBK0gsY0FBL0gsQ0FBOEkscUJBQTlJLENBQ2hCLDJCQURnQixDQUNZLGlCQURaLENBQzhCLGlCQUQ5QixDQUNnRCxrQkFEaEQsQ0FDbUUsaUJBRG5FLENBQ3NGLFNBRHRGLENBQ2dHLE1BRGhHLENBRUMsU0FBVSxNQUFWLENBQWlCLFlBQWpCLENBQThCLE1BQTlCLENBQXFDLFdBQXJDLENBQWlELG9CQUFqRCxDQUFzRSxVQUF0RSxDQUFpRixpQkFBakYsQ0FBbUcsUUFBbkcsQ0FBNEcsUUFBNUcsQ0FBcUgsWUFBckgsQ0FBa0ksbUJBQWxJLENBQ2pCLHlCQURpQixDQUNTLGVBRFQsQ0FDeUIsZUFEekIsQ0FDeUMsZ0JBRHpDLENBQzBELGVBRDFELENBQzJFLE9BRDNFLENBQ21GLElBRG5GLENBQ3lGLENBQzVHLE1BQU0sQ0FBQyxJQUFQLENBQWEsb0JBQWIsQ0FDSyxHQUFJLE1BQU0sQ0FBQyxTQUFQLEVBQWtCLFNBQXRCLENBQWlDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLEVBQWpCLENBRXhDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQThCLElBQTlCLENBQ0E7QUFDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixLQUE5QixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTRCLElBQTVCLENBQ0EsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixFQUErQixTQUFuQyxDQUE4QyxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUFnQyxDQUFoQyxDQUM5QyxHQUFJLENBQUEsT0FBTyxDQUFHLEVBQWQsQ0FDQSxHQUFJLENBQUEsWUFBWSxDQUFDLEVBQWpCLENBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBZSxlQUFmLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxFQUFXLFNBQWYsQ0FDQSxDQUNJLE1BQU0sQ0FBQyxHQUFQLENBQVcsY0FBZSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXBDLENBQW1ELFNBQVMsS0FBVCxDQUFlLElBQWYsQ0FBb0IsQ0FDbkUsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBakIsRUFBdUMsU0FBM0MsQ0FBc0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLENBQUMsZUFBZSxDQUFHLElBQUksQ0FBQyxlQUF4QixDQUF0QyxDQUF0RCxJQUNLLElBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLGVBQXRDLEVBQXVELFNBQTNELENBQXNFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUFzQyxlQUF0QyxDQUF3RCxJQUFJLENBQUMsZUFBN0QsQ0FFM0UsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsU0FBakIsQ0FBMkIsSUFBSSxDQUFDLE1BQWhDLENBQXVDLElBQUksQ0FBQyxTQUE1QyxFQUNILENBTEQsRUFNSCxDQUlLLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FFQSxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBb0MsS0FBcEMsQ0FDQSxNQUFNLENBQUMsUUFBUCxDQUFnQixLQUFoQixDQUNBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFlBQTFDLENBQ0EsTUFBTSxDQUFDLHFCQUFQLENBQTZCLFlBQVksQ0FBQyxVQUExQyxDQUNBLE1BQU0sQ0FBQyxtQkFBUCxDQUEyQixZQUFZLENBQUMsaUJBQXhDLENBQ0EsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsTUFBcEIsQ0FDQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsS0FBekIsQ0FDQTtBQUNBLEdBQUksTUFBTSxDQUFDLHFCQUFQLEVBQThCLEVBQWxDLENBQXNDLE1BQU0sQ0FBQyxxQkFBUCxDQUErQixDQUEvQixDQUV0QyxNQUFNLENBQUMsYUFBUCxDQUFxQixZQUFZLENBQUMsYUFBbEMsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixZQUFZLENBQUMsZUFBcEMsQ0FDQSxNQUFNLENBQUMsbUJBQVAsQ0FBMkIsUUFBUSxDQUFDLFNBQVQsQ0FBbUIsMkJBQW5CLENBQTNCLENBQ0EsTUFBTSxDQUFDLHFCQUFQLENBQTZCLFFBQVEsQ0FBQyxTQUFULENBQW1CLDZCQUFuQixDQUE3QixDQUNBLE1BQU0sQ0FBQyxZQUFQLENBQXNCLEtBQXRCLENBQ0EsTUFBTSxDQUFDLGlCQUFQLENBQXlCLEtBQXpCLENBSUEsTUFBTSxDQUFDLFdBQVAsQ0FBcUIsU0FBVSxLQUFWLENBQWdCLENBRW5DLEdBQUksS0FBSyxDQUFHLENBQUMsQ0FBYixDQUFnQixDQUVqQixNQUFNLENBQUMsVUFBUCxDQUFrQixNQUFsQixDQUF5QixNQUF6QixDQUFnQyxLQUFoQyxDQUF1QyxDQUF2QyxFQUVFLENBRUYsQ0FSRCxDQWFOLE1BQU0sQ0FBQyxnQkFBUCxDQUEwQixVQUFVLENBR2hDLG9CQUFvQixDQUFDLG9CQUFyQixDQUEwQyxJQUExQyxDQUErQyxNQUEvQyxFQUF1RCxJQUF2RCxDQUE0RCxTQUFTLElBQVQsQ0FBZSxDQUV2RCxNQUFNLENBQUMsV0FBUCxDQUFtQixJQUFuQixDQUEwQixJQUFJLENBQUMsSUFBL0IsQ0FHRixDQUxsQixDQUttQixTQUFTLEtBQVQsQ0FBZSxDQUVkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNMLENBUmYsRUFTSCxDQVpELENBZ0JKLE1BQU0sQ0FBQyxlQUFQLENBQXlCLFVBQVUsQ0FHM0Isb0JBQW9CLENBQUMsa0NBQXJCLENBQXdELElBQXhELENBQTZELE1BQTdELEVBQXFFLElBQXJFLENBQTBFLFNBQVMsSUFBVCxDQUFlLENBRXRFLE1BQU0sQ0FBQyxXQUFQLENBQW1CLElBQW5CLENBQTBCLElBQUksQ0FBQyxJQUEvQixDQUVGLENBSmpCLENBSWtCLFNBQVMsS0FBVCxDQUFlLENBRWIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0FQZixFQVVULENBYkMsQ0FtQkEsR0FBSSxNQUFNLENBQUMsYUFBUCxFQUFzQixTQUF0QixFQUFtQyxNQUFNLENBQUMsYUFBUCxFQUFzQixFQUE3RCxDQUNBLENBQ0ksR0FBSSxNQUFNLENBQUMsbUJBQVAsRUFBNEIsU0FBNUIsRUFBeUMsTUFBTSxDQUFDLG1CQUFQLEVBQTRCLEVBQXpFLENBQ0EsQ0FDRSxNQUFNLENBQUMsWUFBUCxDQUFzQixJQUF0QixDQUNELENBSEQsSUFJQSxDQUNFLE1BQU0sQ0FBQyxhQUFQLENBQXdCLE1BQU0sQ0FBQyxtQkFBL0IsQ0FDQSxNQUFNLENBQUMsaUJBQVAsQ0FBMkIsSUFBM0IsQ0FDRCxDQUdKLENBWkQsSUFZSyxDQUNILFFBQVEsQ0FBQyxTQUFULENBQW1CLDJCQUFuQixDQUErQyxNQUFNLENBQUMsYUFBdEQsRUFFRCxDQUVELEdBQUksTUFBTSxDQUFDLGVBQVAsRUFBd0IsU0FBNUIsQ0FDQSxDQUNJLEdBQUksTUFBTSxDQUFDLHFCQUFQLEVBQThCLFNBQWxDLENBQ0EsQ0FDSSxHQUFJLE1BQU0sQ0FBQyxpQkFBWCxDQUNBLENBQ0UsTUFBTSxDQUFDLGVBQVAsQ0FBMEIsTUFBTSxDQUFDLHFCQUFqQyxDQUNELENBQ0osQ0FFSixDQVZELElBVU0sSUFBSSxNQUFNLENBQUMscUJBQVAsRUFBOEIsU0FBbEMsQ0FDTixDQUNFLFFBQVEsQ0FBQyxTQUFULENBQW1CLDZCQUFuQixDQUFpRCxNQUFNLENBQUMsZUFBeEQsRUFFRCxDQUpLLElBS04sQ0FDSSxHQUFJLE1BQU0sQ0FBQyxpQkFBWCxDQUNBLENBRUUsTUFBTSxDQUFDLGVBQVAsQ0FBMEIsTUFBTSxDQUFDLHFCQUFqQyxDQUVELENBTEQsSUFNQSxDQUNJLFFBQVEsQ0FBQyxTQUFULENBQW1CLDZCQUFuQixDQUFpRCxNQUFNLENBQUMsZUFBeEQsRUFDSCxDQUNKLENBR0EsR0FBSSxNQUFNLENBQUMsWUFBUCxFQUFxQixTQUFyQixFQUFrQyxNQUFNLENBQUMsWUFBUCxFQUFxQixFQUEzRCxDQUNHLENBQ0M7QUFFQyxNQUFNLENBQUMsWUFBUCxDQUFzQixDQUF0QixDQUVELENBQ0wsTUFBTSxDQUFDLGVBQVAsQ0FBeUIsRUFBekIsQ0FJRjtBQUVFLE1BQU0sQ0FBQyxXQUFQLENBQW1CLHlCQUF5QixDQUFDLFlBQTFCLENBQXVDLE1BQU0sQ0FBQyxTQUE5QyxDQUFuQixDQUVEO0FBQ0MsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQThDLEVBQTlDLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIscUJBQXZCLENBQStDLEVBQS9DLENBRUcsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsVUFDM0IsQ0FDRSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsQ0FBcUMsVUFBckMsQ0FBZ0QsQ0FBQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsQ0FBcUMsVUFBdEYsQ0FHRCxDQUxFLENBT0gsTUFBTSxDQUFDLE1BQVAsQ0FBZ0IsWUFBWSxDQUFDLEVBQTdCLENBQ0EsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUVFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLENBQTJCLFNBQVMsTUFBVCxDQUMzQixDQUNLLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLE9BQTVCLENBQW9DLE1BQXBDLENBQTJDLE9BQU8sQ0FBQyxJQUFSLENBQWEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsZUFBekMsQ0FBM0MsQ0FDQSxNQUFNLENBQUMsY0FBUCxDQUFzQixtQkFBdEIsQ0FBMEMsS0FBMUMsQ0FDSixDQUpELENBTUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBZ0MsVUFDaEMsQ0FDSyxNQUFNLENBQUMsU0FBUCxDQUFpQixTQUFqQixDQUEyQixNQUFNLENBQUMsY0FBUCxDQUFzQixnQkFBakQsQ0FBa0UsQ0FBbEUsQ0FBb0UsQ0FBcEUsRUFFSixDQUpELENBTUEsTUFBTSxDQUFDLG9CQUFQLENBQThCLFVBQVUsQ0FHbkMsTUFBTSxDQUFDLEdBQVAsQ0FBVyxtQkFBWCxDQUNBLEdBQUksQ0FBQSxhQUFhLENBQUcsT0FBTyxNQUFNLENBQUMsY0FBUCxDQUFzQix3QkFBakQsQ0FFQSxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIsYUFBekIsQ0FBdUMsYUFBdkMsRUFFQSxNQUFNLENBQUMsS0FBUCxDQUFhLG9CQUFiLENBQWtDLEtBQWxDLEVBRUosQ0FWRCxDQVdFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGFBQWpCLENBQWlDLFVBQ2pDLENBQ0csR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixFQUFpQyxDQUFDLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFdBQTVELENBQ0EsQ0FDQyxNQUFNLENBQUMsU0FBUCxDQUFpQixxQkFBakIsQ0FBdUMsS0FBdkMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLEVBQThCLFNBQWxDLENBQTZDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLEdBQzdDLENBQ0QsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsU0FBdEIsQ0FBZ0MsQ0FBaEMsQ0FDQSxNQUFNLENBQUMsY0FBUCxDQUFzQix3QkFBdEIsQ0FBK0MsS0FBL0MsQ0FDQSxNQUFNLENBQUMsY0FBUCxDQUFzQixjQUF0QixDQUF1QyxLQUF2QyxDQUNBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLG1CQUF0QixDQUE0QyxLQUE1QyxDQUNEO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUNhLE1BQU0sQ0FBQyxLQUFQLENBQWEsa0JBQWIsQ0FBZ0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBakQsRUFDQSxHQUFJLENBQUMsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsV0FBM0IsQ0FBd0MsT0FBTyxDQUFDLE9BQVIsQ0FBZ0IsSUFBaEIsR0FDMUMsQ0FuQkQsQ0FzQkgsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLENBQW9DLFVBQVUsQ0FDN0MsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNBO0FBQ0EsR0FBSSxDQUFBLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUCxDQUFpQixxQkFBakIsRUFBbEIsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxxQkFBUCxFQUE4QixTQUFsQyxDQUE2QyxNQUFNLENBQUMscUJBQVAsQ0FBNkIsQ0FBN0IsQ0FFM0MsZUFBZSxDQUFDLFlBQWhCLENBQTZCLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGdCQUFuRCxDQUFvRSxNQUFNLENBQUMsWUFBM0UsQ0FBd0YsTUFBTSxDQUFDLHFCQUEvRixDQUFxSCxFQUFySCxDQUF3SCxNQUFNLENBQUMsZUFBL0gsQ0FBK0ksYUFBYSxDQUFDLFdBQUQsQ0FBNUosQ0FBMEssYUFBYSxDQUFDLGlCQUFELENBQXZMLENBQTJNLElBQTNNLEVBQWlOLElBQWpOLENBQXNOLFNBQVMsSUFBVCxDQUFlLENBRzNNLE1BQU0sQ0FBQyxnQkFBUCxDQUEwQixJQUFJLENBQUMsSUFBTCxDQUFVLGdCQUFwQyxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXlCLElBQUksQ0FBQyxJQUFMLENBQVUsZUFBbkMsQ0FDQTtBQUdMLENBUnJCLENBUXNCLFNBQVMsS0FBVCxDQUFlLENBRWIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0FYbkIsRUFZRDtBQUNGLENBbkJBLENBcUJELE1BQU0sQ0FBQyxHQUFQLENBQVcsZ0JBQWdCLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGNBQWpELENBQWdFLFNBQVMsS0FBVCxDQUFlLElBQWYsQ0FBb0IsQ0FFeEUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsS0FBNUIsQ0FDQSxNQUFNLENBQUMsS0FBUCxDQUFhLGtCQUFiLENBQWdDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQWpELEVBQ1YsQ0FKRixFQU1DLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQWdDLFNBQVMsSUFBVCxDQUFjLENBQzdDLEdBQUksQ0FBQSxDQUFDLENBQUcsTUFBTSxDQUFDLEtBQWYsQ0FFQSxHQUFJLElBQUksQ0FBQyxVQUFULENBQXFCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQThCLElBQTlCLEVBQ3JCLEdBQUksSUFBSSxDQUFDLE1BQVQsQ0FBaUIsQ0FFYjtBQUNBLFVBQVUsQ0FBQyxVQUFYLENBQXNCLG9CQUF0QixDQUEyQyxFQUEzQyxFQUFnRDtBQUNoRCxNQUFNLENBQUMsUUFBUCxDQUFrQixJQUFsQixDQUNBLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxxQkFBUCxFQUE4QixTQUFsQyxDQUE2QyxNQUFNLENBQUMscUJBQVAsQ0FBNkIsQ0FBN0IsQ0FDN0M7QUFDQSxHQUFJLENBQUEsYUFBYSxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHFCQUFqQixDQUF1Qyx5QkFBdkMsQ0FBbEIsQ0FFQSxHQUFJLGFBQWEsQ0FBQyxXQUFELENBQWIsRUFBNEIsU0FBNUIsRUFBeUMsYUFBYSxDQUFDLFdBQUQsQ0FBYixFQUE0QixFQUF6RSxDQUE2RSxhQUFhLENBQUMsV0FBRCxDQUFiLENBQTZCLENBQTdCLENBQzdFLEdBQUksYUFBYSxDQUFDLGlCQUFELENBQWIsRUFBa0MsU0FBbEMsRUFBK0MsYUFBYSxDQUFDLGlCQUFELENBQWIsRUFBa0MsRUFBckYsQ0FBeUYsYUFBYSxDQUFDLGlCQUFELENBQWIsQ0FBbUMsQ0FBbkMsQ0FDekYsR0FBSSxDQUFBLGVBQWUsQ0FBRyxNQUFNLENBQUMsY0FBUCxDQUFzQixhQUE1QyxDQUNBLEdBQUksZUFBZSxFQUFFLFNBQXJCLENBQWdDLGVBQWUsQ0FBRyxNQUFNLENBQUMsY0FBUCxDQUFzQixnQkFBeEMsQ0FDNUIsZUFBZSxDQUFDLFlBQWhCLENBQTZCLGVBQTdCLENBQTZDLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGNBQW5FLENBQWtGLE1BQU0sQ0FBQyxTQUFQLENBQWlCLElBQW5HLENBQXdHLE1BQU0sQ0FBQyxlQUEvRyxDQUErSCxhQUFhLENBQUMsV0FBRCxDQUE1SSxDQUEwSixhQUFhLENBQUMsaUJBQUQsQ0FBdkssQ0FBMkwsSUFBM0wsRUFBaU0sSUFBak0sQ0FBc00sU0FBUyxJQUFULENBQWUsQ0FHbk0sZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxHQUF0QyxDQUEwQyxTQUExQyxFQUNBO0FBQ0E7QUFDQyxHQUFJLElBQUksQ0FBQyxJQUFMLENBQVUsb0JBQVYsRUFBZ0MsU0FBcEMsQ0FDQyxDQUNBLEdBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxvQkFBVixDQUErQixNQUEvQixDQUFzQyxDQUExQyxDQUNJLE1BQU0sQ0FBQyxjQUFQLENBQXNCLG9CQUF0QixDQUE2QyxJQUFJLENBQUMsSUFBTCxDQUFVLG9CQUFWLENBQStCLENBQS9CLENBQTdDLENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsZ0JBQXRCLENBQXlDLE1BQU0sQ0FBQyxjQUFQLENBQXNCLG9CQUF0QixDQUEyQyxFQUFwRixDQUNILENBQ0QsR0FBSSxDQUFBLEtBQUosQ0FDQSxHQUFJLElBQUksQ0FBQyxJQUFMLENBQVUsU0FBVixFQUFxQixTQUF6QixDQUNBLENBQ0csR0FBRyxJQUFJLENBQUMsSUFBTCxDQUFVLFNBQVYsQ0FBb0IsTUFBcEIsQ0FBMkIsQ0FBOUIsQ0FDQSxDQUNhLEdBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxTQUFWLENBQW9CLENBQXBCLEVBQXVCLFdBQXZCLEVBQW9DLElBQXBDLEVBQTRDLElBQUksQ0FBQyxJQUFMLENBQVUsU0FBVixDQUFvQixDQUFwQixFQUF1QixXQUF2QixFQUFvQyxTQUFwRixDQUErRixNQUFNLENBQUMsV0FBUCxDQUFxQixJQUFJLENBQUMsU0FBTCxDQUFlLElBQUksQ0FBQyxJQUFMLENBQVUsU0FBVixDQUFvQixDQUFwQixFQUF1QixXQUF0QyxDQUFrRCxJQUFsRCxDQUF1RCxDQUF2RCxDQUFyQixDQUMvRixHQUFJLElBQUksQ0FBQyxJQUFMLENBQVUsU0FBVixDQUFvQixDQUFwQixFQUF1QixZQUF2QixFQUFxQyxJQUFyQyxFQUE2QyxJQUFJLENBQUMsSUFBTCxDQUFVLFNBQVYsQ0FBb0IsQ0FBcEIsRUFBdUIsWUFBdkIsRUFBcUMsU0FBdEYsQ0FBaUcsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsSUFBSSxDQUFDLFNBQUwsQ0FBZSxJQUFJLENBQUMsSUFBTCxDQUFVLFNBQVYsQ0FBb0IsQ0FBcEIsRUFBdUIsWUFBdEMsQ0FBbUQsSUFBbkQsQ0FBd0QsQ0FBeEQsQ0FBdEIsQ0FDakcsS0FBSyxDQUFHLElBQUksQ0FBQyxJQUFMLENBQVUsU0FBbEIsQ0FDWixDQUxELElBS00sQ0FBQSxLQUFLLENBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsY0FBUCxDQUFzQixnQkFBeEMsQ0FBUixDQUNSLENBR0QsVUFBVSxDQUFDLFVBQVgsQ0FBc0IsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsYUFBdEIsQ0FBb0MsR0FBcEMsQ0FBd0MsaUJBQXhDLENBQTBELE1BQU0sQ0FBQyxjQUFQLENBQXNCLGNBQXRHLENBQXFILEtBQXJILEVBRUY7QUFDQSxNQUFNLENBQUMsR0FBUCxDQUFhLG1CQUFiLENBQ0EsR0FBSSxDQUFBLGFBQWEsQ0FBRyxPQUFPLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGNBQWpELENBQ0EsTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLGFBQXpCLENBQXVDLGdCQUF2QyxFQUVBLEdBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxZQUFWLEVBQXdCLElBQXhCLEVBQWdDLElBQUksQ0FBQyxJQUFMLENBQVUsWUFBVixFQUF3QixTQUE1RCxDQUVBLENBQ0ssTUFBTSxDQUFDLGNBQVAsQ0FBc0IsY0FBdEIsQ0FBdUMsSUFBSSxDQUFDLElBQUwsQ0FBVSxZQUFWLENBQXVCLElBQXZCLENBQTRCLGFBQW5FLENBRUEsTUFBTSxDQUFDLEdBQVAsQ0FBVyxnQkFBZ0IsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsY0FBakQsQ0FBZ0UsU0FBUyxLQUFULENBQWUsSUFBZixDQUFvQixDQUV2RSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixLQUE1QixDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWEsa0JBQWIsQ0FBZ0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBakQsRUFDWixDQUpELEVBS0osQ0FHRCxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWUsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsWUFBbEQsQ0FBK0QsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsZ0JBQXJGLEVBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsYUFBakIsQ0FBK0IsSUFBL0IsQ0FDQSxHQUFJLElBQUksQ0FBQyxJQUFMLENBQVUsZUFBVixDQUEwQixDQUE5QixDQUNBLENBQ0ssR0FBSSxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQVYsQ0FBa0IsVUFBbEIsRUFBOEIsSUFBOUIsRUFBc0MsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUFWLENBQWtCLFVBQWxCLEVBQThCLFNBQXhFLENBQ0EsQ0FDSyxHQUFJLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBVixDQUFrQixVQUFsQixDQUE2QixlQUFqQyxDQUNBLENBQ2EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIscUJBQWpCLENBQXVDLElBQUksQ0FBQyxJQUFMLENBQVUsZUFBakQsQ0FBaUUsSUFBSSxDQUFDLElBQUwsQ0FBVSxnQkFBM0UsRUFDWixDQUNMLENBQ0wsQ0FFSixDQXpEZixDQXlEZ0IsU0FBUyxLQUFULENBQWUsQ0FDZDtBQUNDLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUVGLE1BQU0sQ0FBQyxRQUFQLENBQWtCLElBQUksQ0FBQyxXQUFMLENBQWlCLEtBQUssQ0FBQyxHQUF2QixDQUFsQixDQUNILENBOURiLEVBZ0VVLE1BQU0sQ0FBQyxRQUFQLENBQWtCLEtBQWxCLENBSWYsQ0FBQztBQWxGSixJQW9GRSxDQUNFLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLGdDQUE1QixDQUE2RCxTQUE3RCxFQUVELENBQ0osQ0E1RkEsQ0E4RkgsTUFBTSxDQUFDLFNBQVAsQ0FBaUIscUJBQWpCLENBQTBDLFNBQVMsT0FBVCxDQUMxQyxDQUNFLEdBQUksQ0FBQSxRQUFRLENBQUcseUJBQXlCLENBQUMsZUFBMUIsQ0FBMEMsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsWUFBaEUsQ0FBZixDQUNPLEdBQUksQ0FBQSxTQUFTLENBQUMsQ0FBZCxDQUFnQixlQUFlLENBQUMsQ0FBaEMsQ0FBa0MsU0FBbEMsQ0FBNEMsY0FBNUMsQ0FDQSxHQUFJLENBQUMsS0FBSyxDQUFDLE9BQU4sQ0FBYyxRQUFkLENBQUwsQ0FDQSxDQUNhLGNBQWMsQ0FBRyxDQUFDLFFBQUQsQ0FBakIsQ0FDWixDQUhELElBSUEsQ0FDYSxjQUFjLENBQUcsUUFBakIsQ0FDWixDQUNELElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUE5QixDQUFxQyxDQUFDLEVBQXRDLENBQ0EsQ0FDYSxTQUFTLENBQUcsY0FBYyxDQUFDLENBQUQsQ0FBMUIsQ0FDQSxHQUFJLFNBQVMsQ0FBQyxHQUFWLEVBQWUsU0FBZixFQUE0QixTQUFTLENBQUMsR0FBVixFQUFlLElBQS9DLENBQ0EsQ0FDQSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBVixDQUFjLE1BQTdCLENBQW9DLENBQUMsRUFBckMsQ0FDQSxDQUNFLEdBQUksU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLElBQWpCLEVBQXVCLE9BQTNCLENBQ0EsQ0FDRSxHQUFJLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixFQUF3QixTQUF4QixFQUFxQyxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsRUFBd0IsSUFBakUsQ0FDQSxDQUNFLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixNQUF0QyxDQUE2QyxDQUFDLEVBQTlDLENBQ0EsQ0FDQyxHQUFJLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixDQUF2QixFQUEwQixJQUExQixFQUFnQyxZQUFoQyxFQUFnRCxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsQ0FBdkIsRUFBMEIsS0FBMUIsRUFBaUMsU0FBckYsQ0FBZ0csU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixDQUF2QixFQUEwQixLQUFwQyxDQUNoRyxHQUFJLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixDQUF2QixFQUEwQixJQUExQixFQUFnQyxrQkFBaEMsRUFBc0QsU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLENBQXZCLEVBQTBCLEtBQTFCLEVBQWlDLFNBQTNGLENBQXNHLGVBQWUsQ0FBQyxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsQ0FBdkIsRUFBMEIsS0FBMUMsQ0FHdEcsQ0FHRixDQUVGLENBRUEsQ0FDRixDQUNiLENBRVYsTUFBTyxDQUFDLFlBQVksU0FBYixDQUF1QixrQkFBa0IsZUFBekMsQ0FBUCxDQUNDLENBeENELENBeUNJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQWdDLFNBQVUsSUFBVixDQUFnQixDQUM5QyxJQUFJLENBQUMsYUFBTCxHQUNBLE9BQU8sQ0FBQyxPQUFSLENBQWdCLElBQWhCLENBQXNCLFNBQVMsSUFBVCxDQUFlLENBQ25DLEdBQUcsSUFBSSxFQUFJLElBQUksQ0FBQyxZQUFMLEdBQXNCLElBQTlCLEVBQXNDLElBQUksQ0FBQyxhQUE5QyxDQUE2RCxDQUMzRCxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixJQUE5QixFQUNELENBQ0YsQ0FKRCxFQUtELENBUEQsQ0FTRyxDQWxZbUIsQ0FBakIsQ0FxWUwsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUgsV0FBVyxDQUFFLDhDQUZWLENBR0gsS0FBSyxDQUFDLENBQ0MsY0FBYyxDQUFHLEdBRGxCLENBRUMsU0FBUyxDQUFFLEdBRlosQ0FHQyxrQkFBa0IsQ0FBQyxHQUhwQixDQUlDLFNBQVMsQ0FBRSxHQUpaLENBSEgsQ0FTSCxVQUFVLENBQUMsVUFUUixDQVdGLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FNNUMsQ0FqQlUsQ0FBUCxDQW1CUCxFQUNELGFBRU8sUUFBUyxDQUFBLGNBQVQsRUFBMkIsQ0FDckIsR0FBSSxDQUFBLFVBQVUsQ0FBRyxDQUFDLFFBQUQsQ0FBVyxjQUFYLENBQTBCLFFBQTFCLENBQW1DLGFBQW5DLENBQWlELHNCQUFqRCxDQUF3RSxZQUF4RSxDQUFxRixtQkFBckYsQ0FBeUcsVUFBekcsQ0FBb0gsVUFBcEgsQ0FBK0gsY0FBL0gsQ0FBOEksMkJBQTlJLENBQTBLLGlCQUExSyxDQUE0TCxrQkFBNUwsQ0FBK00saUJBQS9NLENBQ0MsU0FBVSxNQUFWLENBQWlCLFlBQWpCLENBQThCLE1BQTlCLENBQXFDLFdBQXJDLENBQWlELG9CQUFqRCxDQUFzRSxVQUF0RSxDQUFpRixpQkFBakYsQ0FBbUcsUUFBbkcsQ0FBNEcsUUFBNUcsQ0FBcUgsWUFBckgsQ0FBa0kseUJBQWxJLENBQTRKLGVBQTVKLENBQTRLLGdCQUE1SyxDQUE2TCxlQUE3TCxDQUE4TSxDQUlsTyxDQUxtQixDQUFqQixDQVFMLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVILFdBQVcsQ0FBRSwwQ0FGVixDQUdILFVBQVUsQ0FBQyxVQUhSLENBSUYsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUVwQyxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBRU8sS0FBSyxDQUFDLFNBQU4sQ0FBa0IsRUFBbEIsQ0FDQSxLQUFLLENBQUMsU0FBTixDQUFnQixNQUFNLENBQUMsT0FBUCxDQUFlLElBQS9CLENBQ0EsS0FBSyxDQUFDLFdBQU4sQ0FBb0IsTUFBTSxDQUFDLE9BQVAsQ0FBZSxNQUFuQyxDQUNBLEtBQUssQ0FBQyxnQkFBTixDQUF1QixZQUFZLENBQUMsZ0JBQXBDLENBQ0EsS0FBSyxDQUFDLGVBQU4sQ0FBc0IsWUFBWSxDQUFDLGVBQW5DLENBRUMsS0FBSyxDQUFDLFlBQU4sQ0FBc0IsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsWUFBckQsQ0FFRCxLQUFLLENBQUMsV0FBTixDQUFvQixDQUNsQixJQUFJLENBQUMsRUFEYSxDQUVwQixjQUFjLENBQUUsSUFGSSxDQUdwQjtBQUNBO0FBQ0Esa0JBQWtCLENBQUUsSUFMQSxDQU1wQixXQUFXLENBQUUsS0FOTyxDQU9wQix5QkFBeUIsQ0FBRyxDQVBSLENBUXBCLHVCQUF1QixDQUFHLENBUk4sQ0FTcEI7QUFDQSx3QkFBd0IsQ0FBRSxJQVZOLENBV3BCLG9CQUFvQixDQUFFLElBWEYsQ0FZcEIscUJBQXFCLENBQUUsSUFaSCxDQWFwQixtQkFBbUIsQ0FBRSxDQUFDLEVBQUQsQ0FBSyxFQUFMLENBQVMsRUFBVCxDQUFZLEdBQVosQ0FBZ0IsR0FBaEIsQ0FBb0IsR0FBcEIsQ0FBd0IsSUFBeEIsQ0FiRCxDQWNwQix3QkFBd0IsQ0FBRSxLQUMxQjtBQUNBO0FBQ0E7QUFDRDtBQWxCcUIsQ0FBcEIsQ0FxQkYsR0FBSSxDQUFBLGlCQUFpQixDQUFHLENBQ3RCLFVBQVUsQ0FBRSxDQURVLENBRXRCLFFBQVEsQ0FBRSxFQUZZLENBR3RCLElBQUksQ0FBRSxJQUhnQixDQUF4QixDQU1FLEdBQUksQ0FBQSxrQkFBa0IsQ0FBRyxDQUNyQixDQUFFLElBQUksQ0FBRSxxQkFBUixDQUErQixXQUFXLENBQUUsSUFBNUMsQ0FBa0QsSUFBSSxDQUFFLFFBQXhELENBQWtFLEtBQUssQ0FBQyxJQUF4RSxDQUE2RSxZQUFZLENBQUUsS0FBM0YsQ0FBa0csT0FBTyxDQUFFLElBQTNHLENBRHFCLENBRXJCLENBQUUsSUFBSSxDQUFFLG1DQUFSLENBQTZDLFdBQVcsQ0FBRSxZQUExRCxDQUZxQixDQUdyQixDQUFFLElBQUksQ0FBRSxrREFBUixDQUE0RCxXQUFXLENBQUUsYUFBekUsQ0FIcUIsQ0FJckIsQ0FBRSxJQUFJLENBQUUsMERBQVIsQ0FBb0UsV0FBVyxDQUFFLFdBQWpGLENBSnFCLENBS3JCLENBQUUsSUFBSSxDQUFFLGlFQUFSLENBQTJFLFdBQVcsQ0FBRSxrQkFBeEYsQ0FMcUIsQ0FNckIsQ0FBRSxJQUFJLENBQUUsaUNBQVIsQ0FBMkMsV0FBVyxDQUFFLGFBQXhELENBQXNFLFlBQVksQ0FBRSxLQUFwRixDQUEwRixPQUFPLENBQUUsS0FBbkcsQ0FOcUIsQ0FPckIsQ0FBRSxJQUFJLENBQUUsa0NBQVIsQ0FBNEMsV0FBVyxDQUFFLGNBQXpELENBQXdFLFlBQVksQ0FBRSxLQUF0RixDQUE0RixJQUFJLENBQUUsTUFBbEcsQ0FBMEcsVUFBVSxDQUFFLGtDQUF0SCxDQVBxQixDQVFyQixDQUFFLElBQUksQ0FBRSxpQ0FBUixDQUEyQyxXQUFXLENBQUUsWUFBeEQsQ0FScUIsQ0FTckIsQ0FBRSxJQUFJLENBQUUsZUFBUixDQUF5QixXQUFXLENBQUUsV0FBdEMsQ0FUcUIsQ0FBekIsQ0FZRCxHQUFJLENBQUEsaUJBQWlCLENBQUcsQ0FDbEIsQ0FBRSxJQUFJLENBQUUsSUFBUixDQUFjLFdBQVcsQ0FBRSxpQkFBM0IsQ0FBOEMsSUFBSSxDQUFFLFFBQXBELENBQThELEtBQUssQ0FBQyxLQUFwRSxDQUEwRSxZQUFZLENBQUUsS0FBeEYsQ0FBK0YsT0FBTyxDQUFFLElBQXhHLENBRGtCLENBRWxCLENBQUUsSUFBSSxDQUFFLHlDQUFSLENBQW1ELFdBQVcsQ0FBRSxXQUFoRSxDQUZrQixDQUdsQixDQUFFLElBQUksQ0FBRSxnREFBUixDQUEwRCxXQUFXLENBQUUsa0JBQXZFLENBSGtCLENBSWxCLENBQUUsSUFBSSxDQUFFLGtCQUFSLENBQTRCLFdBQVcsQ0FBRSxZQUF6QyxDQUprQixDQUtsQixDQUFFLElBQUksQ0FBRSxpQ0FBUixDQUEyQyxXQUFXLENBQUUsYUFBeEQsQ0FMa0IsQ0FNbEIsQ0FBRSxJQUFJLENBQUUsbUVBQVIsQ0FBNkUsV0FBVyxDQUFFLGNBQTFGLENBTmtCLENBT2xCLENBQUUsSUFBSSxDQUFFLGdCQUFSLENBQTBCLFdBQVcsQ0FBRSxhQUF2QyxDQUFxRCxZQUFZLENBQUUsS0FBbkUsQ0FBeUUsT0FBTyxDQUFFLEtBQWxGLENBUGtCLENBUWxCLENBQUUsSUFBSSxDQUFFLGlCQUFSLENBQTJCLFdBQVcsQ0FBRSxjQUF4QyxDQUF1RCxZQUFZLENBQUUsS0FBckUsQ0FBMkUsSUFBSSxDQUFFLE1BQWpGLENBQXlGLFVBQVUsQ0FBRSxrQ0FBckcsQ0FSa0IsQ0FTbEIsQ0FBRSxJQUFJLENBQUUsZ0JBQVIsQ0FBMEIsV0FBVyxDQUFFLFlBQXZDLENBVGtCLENBQXhCLENBWUMsS0FBSyxDQUFDLGVBQU4sQ0FBd0IsQ0FBeEIsQ0FDRCxLQUFLLENBQUMsZ0JBQU4sQ0FBeUIsQ0FBekIsQ0FFQyxHQUFJLEtBQUssQ0FBQyxFQUFOLEdBQVcsU0FBZixDQUEwQixLQUFLLENBQUMsRUFBTixDQUFTLEVBQVQsQ0FDMUIsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsR0FBa0IsU0FBbEIsRUFBK0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFULEdBQWtCLElBQXJELENBQTJELEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBVCxDQUFrQixFQUFsQixDQUM1RDtBQUNBLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFULENBQWdCLFlBQWhCLEVBQThCLFNBQWxDLENBQTZDLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBVCxDQUFnQixZQUFoQixDQUE2QixPQUE3QixDQUkzQyxLQUFLLENBQUMsV0FBTixDQUFrQixhQUFsQixDQUFrQyxTQUFVLE9BQVYsQ0FBbUIsQ0FDbEQsS0FBSyxDQUFDLE9BQU4sQ0FBZ0IsT0FBaEIsQ0FDQSxPQUFPLENBQUMsU0FBUixDQUFrQixFQUFsQixDQUFxQixtQkFBckIsQ0FBeUMsS0FBekMsQ0FBK0MsU0FBUyxHQUFULENBQWEsQ0FDM0QsS0FBSyxDQUFDLFlBQU4sQ0FBbUIsR0FBRyxDQUFDLFVBQXZCLENBRUEsR0FBRyxHQUFHLENBQUMsVUFBUCxDQUFrQixDQUVaLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFULENBQWdCLFlBQWhCLEVBQThCLFNBQWxDLENBQ0EsQ0FDQyxLQUFLLENBQUMsWUFBTixDQUFtQixHQUFHLENBQUMsTUFBSixDQUFXLEVBQTlCLENBQ0EsS0FBSyxDQUFDLGVBQU4sQ0FBd0IsS0FBSyxDQUFDLFlBQTlCLENBQ0EsS0FBSyxDQUFDLGlCQUFOLENBQXdCLEdBQUcsQ0FBQyxNQUFKLENBQVcsV0FBWCxDQUF1QixFQUEvQyxDQUNBLEtBQUssQ0FBQyxrQkFBTixDQUEyQixHQUFHLENBQUMsTUFBL0IsQ0FDQSxDQU5ELElBUUEsQ0FDQyxLQUFLLENBQUMsWUFBTixDQUFtQixHQUFHLENBQUMsTUFBSixDQUFXLGdCQUFYLENBQTRCLEVBQS9DLENBQ0EsS0FBSyxDQUFDLGdCQUFOLENBQXlCLEtBQUssQ0FBQyxZQUEvQixDQUNBLEtBQUssQ0FBQyxpQkFBTixDQUF3QixHQUFHLENBQUMsTUFBSixDQUFXLGdCQUFYLENBQTRCLFdBQTVCLENBQXdDLEVBQWhFLENBQ0EsS0FBSyxDQUFDLGtCQUFOLENBQTJCLEdBQUcsQ0FBQyxNQUFKLENBQVcsZ0JBQXRDLENBQ0EsQ0FFSCxDQUNKLENBckJELEVBdUJBO0FBQ0YsT0FBTyxDQUFDLFVBQVIsQ0FBbUIsRUFBbkIsQ0FBc0IsaUJBQXRCLENBQXdDLEtBQXhDLENBQStDLFNBQVUsT0FBVixDQUFtQixRQUFuQixDQUE2QixDQUN4RSxpQkFBaUIsQ0FBQyxVQUFsQixDQUErQixPQUEvQixDQUNBLGlCQUFpQixDQUFDLFFBQWxCLENBQTZCLFFBQTdCLENBQ0EsS0FBSyxDQUFDLDZCQUFOLENBQW9DLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBVCxDQUFnQixZQUFwRCxDQUFpRSxDQUFqRSxDQUFtRSxLQUFuRSxDQUF5RSxFQUF6RSxDQUE0RSxLQUFLLENBQUMsU0FBTixDQUFnQixRQUE1RixDQUFxRyxLQUFLLENBQUMsU0FBTixDQUFnQixZQUFySCxDQUFrSSxPQUFsSSxDQUEwSSxRQUExSSxDQUFtSixNQUFNLENBQUMsRUFBUCxDQUFVLE1BQTdKLEVBQ0gsQ0FKRCxFQU1DLE9BQU8sQ0FBQyxJQUFSLENBQWEsRUFBYixDQUFnQixhQUFoQixDQUE4QixLQUE5QixDQUFxQyxVQUFXLENBQzVDO0FBQ0Q7QUFDRixDQUhELEVBTUQsQ0F0Q0QsQ0F3Q0QsS0FBSyxDQUFDLFdBQU4sQ0FBb0IsU0FBVSxLQUFWLENBQWdCLENBRWhDLEdBQUksS0FBSyxDQUFHLENBQUMsQ0FBYixDQUFnQixDQUViLEtBQUssQ0FBQyxVQUFOLENBQWlCLE1BQWpCLENBQXdCLE1BQXhCLENBQStCLEtBQS9CLENBQXNDLENBQXRDLEVBRUYsQ0FFTixDQVJDLENBVUEsS0FBSyxDQUFDLGFBQU4sQ0FBc0IsVUFBVSxDQUd4QixHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0MsZUFBZSxDQUFDLGlCQUFoQixDQUFrQyxLQUFLLENBQUMsWUFBeEMsQ0FBcUQsQ0FBckQsQ0FBdUQsT0FBdkQsQ0FBK0QsSUFBL0QsRUFBcUUsSUFBckUsQ0FBMEUsU0FBUyxJQUFULENBQWUsQ0FJbEU7QUFDQSxLQUFLLENBQUMsY0FBTixDQUFxQixLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsQ0FBZ0IsWUFBckMsQ0FBa0QsQ0FBbEQsQ0FBb0QsSUFBcEQsQ0FBeUQsSUFBSSxDQUFDLElBQUwsQ0FBVSxHQUFuRSxFQUVMLENBUGxCLENBT21CLFNBQVMsS0FBVCxDQUFlLENBR2IsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0FYaEIsRUFZTixDQWhCSCxDQWtCQSxLQUFLLENBQUMsY0FBTixDQUF1QixTQUFTLElBQVQsQ0FBYyxNQUFkLENBQXFCLFVBQXJCLENBQWdDLFFBQWhDLENBQXlDLENBRTlELEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FFQSxlQUFlLENBQUMsaUJBQWhCLENBQWtDLElBQWxDLENBQXVDLE1BQXZDLEVBQStDLElBQS9DLENBQW9ELFNBQVMsSUFBVCxDQUFlLENBRXZDLEtBQUssQ0FBQyxXQUFOLENBQWtCLElBQWxCLENBQXlCLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBbkMsQ0FDRCxHQUFJLFVBQUosQ0FDQSxDQUNFLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLFFBQTVCLENBQXFDLFNBQXJDLEVBRUQsQ0FDRixDQVIxQixDQVEyQixTQUFTLEtBQVQsQ0FBZSxDQUVkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNMLENBWHZCLEVBWUQsQ0FoQkQsQ0FvQkYsS0FBSyxDQUFDLHVCQUFOLENBQWdDLFNBQVMsSUFBVCxDQUFjLE1BQWQsQ0FBcUIsVUFBckIsQ0FBZ0MsUUFBaEMsQ0FBeUMsT0FBekMsQ0FBaUQsT0FBakQsQ0FBeUQsT0FBekQsQ0FBaUUsUUFBakUsQ0FBMEUsQ0FFdEcsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUVBLEdBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxLQUFLLENBQUMsVUFBTixDQUFpQixRQUEzQixFQUFxQyxPQUF6QyxDQUNBLENBQ0UsT0FBTyxDQUFHLElBQUksQ0FBQyxJQUFMLENBQVUsS0FBSyxDQUFDLFVBQU4sQ0FBaUIsUUFBM0IsQ0FBVixDQUNELENBQ0QsZUFBZSxDQUFDLDBCQUFoQixDQUEyQyxJQUEzQyxDQUFnRCxNQUFoRCxDQUF1RCxPQUF2RCxDQUErRCxPQUEvRCxDQUF1RSxPQUF2RSxDQUErRSxRQUEvRSxFQUF5RixJQUF6RixDQUE4RixTQUFTLElBQVQsQ0FBZSxDQUVqRixLQUFLLENBQUMsV0FBTixDQUFrQixJQUFsQixDQUF5QixJQUFJLENBQUMsSUFBTCxDQUFVLE9BQW5DLENBQ0EsS0FBSyxDQUFDLFFBQU4sQ0FBaUIsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUEzQixDQUNBLEtBQUssQ0FBQyxZQUFOLENBQXFCLElBQUksQ0FBQyxJQUFMLENBQVUsUUFBL0IsQ0FDQSxLQUFLLENBQUMsVUFBTixDQUFpQixJQUFJLENBQUMsSUFBTCxDQUFVLEtBQTNCLENBQ0EsS0FBSyxDQUFDLFdBQU4sQ0FBa0IsT0FBbEIsQ0FDQSxLQUFLLENBQUMsUUFBTixDQUFpQixJQUFJLENBQUMsSUFBTCxDQUFVLEtBQUssQ0FBQyxVQUFOLENBQWlCLFFBQTNCLENBQWpCLENBQ0EsS0FBSyxDQUFDLFFBQU4sQ0FBaUIsUUFBakIsQ0FDQSxLQUFLLENBQUMsV0FBTixDQUFrQixVQUFsQixDQUE2QixLQUFLLENBQUMsVUFBbkMsQ0FDRCxHQUFJLFVBQUosQ0FDQSxDQUNFLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLFFBQTVCLENBQXFDLFNBQXJDLEVBRUQsQ0FDRixDQWYxQixDQWUyQixTQUFTLEtBQVQsQ0FBZSxDQUVkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNMLENBbEJ2QixFQW1CRCxDQTNCSCxDQThCRSxLQUFLLENBQUMsNkJBQU4sQ0FBc0MsU0FBUyxJQUFULENBQWMsTUFBZCxDQUFxQixVQUFyQixDQUFnQyxRQUFoQyxDQUF5QyxPQUF6QyxDQUFpRCxPQUFqRCxDQUF5RCxPQUF6RCxDQUFpRSxRQUFqRSxDQUEwRSxRQUExRSxDQUFtRixDQUV2SCxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBR0EsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsQ0FBZ0IsWUFBaEIsRUFBOEIsT0FBbEMsQ0FDQSxDQUNFLEtBQUssQ0FBQyxXQUFOLENBQWtCLFVBQWxCLENBQStCLGtCQUEvQixDQUNELENBRUUsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsQ0FBZ0IsWUFBaEIsRUFBOEIsU0FBbEMsQ0FDSCxDQUNFLEtBQUssQ0FBQyxXQUFOLENBQWtCLFVBQWxCLENBQStCLGlCQUEvQixDQUNELENBSUQsR0FBSSxJQUFJLENBQUMsSUFBTCxDQUFVLEtBQUssQ0FBQyxTQUFOLENBQWdCLFVBQWhCLENBQTJCLFFBQXJDLEVBQStDLE9BQW5ELENBQ0EsQ0FDRSxPQUFPLENBQUcsSUFBSSxDQUFDLElBQUwsQ0FBVSxLQUFLLENBQUMsU0FBTixDQUFnQixVQUFoQixDQUEyQixRQUFyQyxDQUFWLENBQ0QsQ0FDRCxLQUFLLENBQUMsV0FBTixDQUFrQixJQUFsQixDQUF1QixNQUF2QixDQUE4QixDQUE5QixDQUNBLGVBQWUsQ0FBQyxrQ0FBaEIsQ0FBbUQsSUFBbkQsQ0FBd0QsTUFBeEQsQ0FBK0QsT0FBL0QsQ0FBdUUsT0FBdkUsQ0FBK0UsT0FBL0UsQ0FBdUYsUUFBdkYsQ0FBZ0csUUFBaEcsRUFBMEcsSUFBMUcsQ0FBK0csU0FBUyxJQUFULENBQWUsQ0FFbEcsS0FBSyxDQUFDLFdBQU4sQ0FBa0IsSUFBbEIsQ0FBeUIsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUFuQyxDQUNBLEtBQUssQ0FBQyxTQUFOLENBQWdCLFFBQWhCLENBQTJCLElBQUksQ0FBQyxJQUFMLENBQVUsSUFBckMsQ0FDQSxLQUFLLENBQUMsU0FBTixDQUFnQixZQUFoQixDQUErQixJQUFJLENBQUMsSUFBTCxDQUFVLFFBQXpDLENBQ0EsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsVUFBaEIsQ0FBMkIsSUFBSSxDQUFDLElBQUwsQ0FBVSxLQUFyQyxDQUNBLEtBQUssQ0FBQyxTQUFOLENBQWdCLFdBQWhCLENBQTRCLE9BQTVCLENBQ0EsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsUUFBaEIsQ0FBMkIsSUFBSSxDQUFDLElBQUwsQ0FBVSxLQUFLLENBQUMsU0FBTixDQUFnQixVQUFoQixDQUEyQixRQUFyQyxDQUEzQixDQUNBLEtBQUssQ0FBQyxTQUFOLENBQWdCLFFBQWhCLENBQTJCLFFBQTNCLENBQ0EsS0FBSyxDQUFDLFdBQU4sQ0FBa0IsVUFBbEIsQ0FBNkIsS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsVUFBN0MsQ0FDQSxHQUFJLEtBQUssQ0FBQyxTQUFOLENBQWdCLFVBQWhCLEVBQTRCLENBQWhDLENBQ0EsQ0FDRSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBVCxDQUFnQixZQUFoQixFQUE4QixTQUFsQyxDQUNFLENBQ0MsS0FBSyxDQUFDLGVBQU4sQ0FBd0IsS0FBSyxDQUFDLFdBQU4sQ0FBa0IsSUFBbEIsQ0FBdUIsQ0FBdkIsRUFBMEIsRUFBbEQsQ0FFQSxDQUpILElBTUUsQ0FDQyxLQUFLLENBQUMsZ0JBQU4sQ0FBeUIsS0FBSyxDQUFDLFdBQU4sQ0FBa0IsSUFBbEIsQ0FBdUIsQ0FBdkIsRUFBMEIsZ0JBQTFCLENBQTJDLEVBQXBFLENBRUEsQ0FDRCxLQUFLLENBQUMsU0FBTixDQUFnQixrQkFBaEIsQ0FBbUMsS0FBSyxDQUFDLGdCQUF6QyxDQUEwRCxLQUFLLENBQUMsZUFBaEUsRUFDSCxDQUNELFFBQVEsQ0FBQyxVQUFVLENBQ2YsVUFBVSxDQUFDLFVBQVgsQ0FBc0IsWUFBdEIsRUFDSCxDQUZPLENBQVIsQ0FHRCxHQUFJLFVBQUosQ0FDQSxDQUNFLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLFFBQTVCLENBQXFDLFNBQXJDLEVBRUQsQ0FDRixDQWhDMUIsQ0FnQzJCLFNBQVMsS0FBVCxDQUFlLENBRWQsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0FuQ3ZCLEVBb0NELENBMURELENBMkRDLEtBQUssQ0FBQyxTQUFOLENBQWdCLFdBQWhCLENBQThCLFVBQVUsQ0FDckMsS0FBSyxDQUFDLDZCQUFOLENBQW9DLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBVCxDQUFnQixZQUFwRCxDQUFpRSxDQUFqRSxDQUFtRSxLQUFuRSxDQUF5RSxFQUF6RSxDQUE0RSxLQUFLLENBQUMsU0FBTixDQUFnQixRQUE1RixDQUFxRyxLQUFLLENBQUMsU0FBTixDQUFnQixZQUFySCxDQUFrSSxLQUFLLENBQUMsU0FBTixDQUFnQixXQUFsSixDQUE4SixLQUFLLENBQUMsU0FBTixDQUFnQixRQUE5SyxDQUF1TCxLQUFLLENBQUMsRUFBTixDQUFTLE1BQWhNLEVBQ0UsQ0FGTCxDQUtEO0FBQ0M7QUFDQTtBQUVBLEtBQUssQ0FBQyw2QkFBTixDQUFvQyxLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsQ0FBZ0IsWUFBcEQsQ0FBaUUsQ0FBakUsQ0FBbUUsS0FBbkUsQ0FBeUUsRUFBekUsQ0FBNEUsRUFBNUUsQ0FBK0UsRUFBL0UsQ0FBa0YsaUJBQWlCLENBQUMsVUFBcEcsQ0FBK0csaUJBQWlCLENBQUMsUUFBakksQ0FBMEksS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFuSixFQUVBLEtBQUssQ0FBQyx1QkFBTixDQUFnQyxTQUFTLFVBQVQsQ0FBb0IsQ0FDN0MsS0FBSyxDQUFDLHVCQUFOLENBQThCLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBVCxDQUFnQixZQUE5QyxDQUEyRCxVQUEzRCxDQUFzRSxLQUF0RSxDQUE0RSxFQUE1RSxDQUErRSxFQUEvRSxDQUFrRixFQUFsRixDQUFxRixpQkFBaUIsQ0FBQyxVQUF2RyxDQUFrSCxpQkFBaUIsQ0FBQyxRQUFwSSxFQUNGLENBRkwsQ0FJSyxvQkFBb0IsQ0FBQyx3QkFBckIsQ0FBOEMsSUFBOUMsQ0FBbUQsTUFBbkQsRUFBMkQsSUFBM0QsQ0FBZ0UsU0FBUyxJQUFULENBQWUsQ0FFdkQsS0FBSyxDQUFDLFdBQU4sQ0FBb0IsSUFBSSxDQUFDLElBQXpCLENBSUYsQ0FOdEIsQ0FNdUIsU0FBUyxLQUFULENBQWUsQ0FFZCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDTCxDQVRuQixFQVVKO0FBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFULENBQWdCLFdBQWhCLENBQThCLHdCQUE5QixDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBVCxDQUFnQixVQUFoQixDQUE0QixPQUE1QixDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBVCxDQUFnQixXQUFoQixDQUE4QixRQUE5QixDQUVBO0FBRUMsWUFBWSxDQUFDLGNBQWIsQ0FBNEIsY0FBNUIsQ0FBMkMsSUFBM0MsRUFBaUQsSUFBakQsQ0FBc0QsU0FBVSxJQUFWLENBQWdCLENBQzdELEtBQUssQ0FBQyxZQUFOLENBQXFCLElBQUksQ0FBQyxJQUExQixDQUNGLENBRlAsRUFJUixDQWxTQSxDQUFQLENBb1NQLEVBQ0QsYUFFTyxRQUFTLENBQUEsYUFBVCxFQUEwQixDQUV6QixNQUFPLENBQ0MsUUFBUSxDQUFFLEdBRFgsQ0FFQyxXQUFXLENBQUUseUNBRmQsQ0FJQyxVQUFVLENBQUUsQ0FBQyxRQUFELENBQVUsWUFBVixDQUF1QixpQkFBdkIsQ0FBeUMsdUJBQXpDLENBQWlFLHFCQUFqRSxDQUF1RixVQUF2RixDQUFtRyxTQUFTLE1BQVQsQ0FBZ0IsVUFBaEIsQ0FBMkIsZUFBM0IsQ0FBMkMscUJBQTNDLENBQWlFLG1CQUFqRSxDQUFxRixRQUFyRixDQUE4RixDQUVyTSxNQUFNLENBQUMsSUFBUCxDQUFZLGVBQVosQ0FDQSxNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FDQSxNQUFNLENBQUMsWUFBUCxDQUFzQixFQUF0QixDQUNBLE1BQU0sQ0FBQyxHQUFQLENBQWEscUJBQWIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixFQUFqQixDQUNBLE1BQU0sQ0FBQyxnQkFBUCxDQUEwQixJQUExQixDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixVQUE1QixFQUVBLEdBQUksQ0FBQSxZQUFZLENBQUcsMEJBQW5CLENBRUEsR0FBSSxDQUFBLGtCQUFKLENBRUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxZQUFiLENBQTBCLFVBQTFCLENBQXFDLGNBQXJDLENBQW9ELFlBQXBELEVBQ0EsTUFBTSxDQUFDLGdCQUFQLENBQXlCLE1BQU0sQ0FBQyxLQUFQLENBQWEsbUJBQWIsRUFBekIsQ0FFQTtBQUNBLE1BQU0sQ0FBQyxHQUFQLENBQWEsbUJBQWIsQ0FFQSxHQUFJLENBQUEsY0FBYyxDQUFHLFFBQWpCLENBQUEsY0FBaUIsQ0FBUyxJQUFULENBQ3JCLENBQ0ksTUFBTSxDQUFDLGlCQUFQLENBQXlCLElBQUksQ0FBQyxLQUE5QixFQUNILENBSEQsQ0FLQyxHQUFJLENBQUEsY0FBYyxDQUFHLFFBQWpCLENBQUEsY0FBaUIsQ0FBUyxJQUFULENBQ3RCLENBQ0UsTUFBTSxDQUFDLGlCQUFQLENBQXlCLElBQXpCLEVBQ0QsQ0FIQSxDQUtELEdBQUksQ0FBQSxZQUFZLENBQUUsTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXNCLGFBQXRCLENBQW9DLElBQXBDLENBQWxCLENBQ0EsR0FBSSxDQUFBLGdCQUFnQixDQUFHLFlBQVksQ0FBQyxPQUFiLENBQXFCLElBQTVDLENBRUEsR0FBSSxDQUFBLHFCQUFxQixDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixnQkFBckIsQ0FBc0MsZUFBdEMsQ0FBc0QsY0FBdEQsQ0FBNUIsQ0FFQSxHQUFJLENBQUEscUJBQXFCLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLGdCQUFyQixDQUFzQyxlQUF0QyxDQUFzRCxjQUF0RCxDQUE1QixDQUVDLE1BQU0sQ0FBQyxXQUFQLENBQW1CLFNBQVMsS0FBVCxDQUFlLFlBQWYsQ0FBNEIsQ0FDNUMsR0FBSSxZQUFZLEVBQUUsY0FBbEIsQ0FDQSxDQUNJLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsS0FBakIsSUFBMEIsU0FBOUIsQ0FBeUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsS0FBakIsRUFBMEIsSUFBMUIsQ0FBekMsSUFFQSxDQUNJLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsS0FBakIsQ0FBSixDQUE2QixNQUFNLENBQUMsU0FBUCxDQUFpQixLQUFqQixFQUEwQixLQUExQixDQUE3QixJQUNLLENBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsS0FBakIsRUFBMEIsSUFBMUIsQ0FDUixDQUNKLENBQ0osQ0FWQSxDQVlELE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixTQUFTLEtBQVQsQ0FBZSxDQUNoQyxHQUFJLENBQUMsS0FBTCxDQUFZLENBQ1IsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLFVBQTVCLEVBQ0gsQ0FGRCxJQUdLLENBQ0QsTUFBTSxDQUFDLGdCQUFQLENBQXdCLE1BQXhCLENBQStCLENBQS9CLENBQ0EsT0FBTyxDQUFDLE1BQVIsQ0FBZSxNQUFNLENBQUMsZ0JBQXRCLENBQXdDLE1BQU0sQ0FBQyxLQUFQLENBQWEsbUJBQWIsRUFBeEMsRUFDQTtBQUNBO0FBQ0E7QUFDSCxDQUVSLENBWkQsQ0FjQSxNQUFNLENBQUMsYUFBUCxDQUFxQixTQUFTLEtBQVQsQ0FBZSxDQUVuQyxNQUFNLENBQUMsS0FBUCxDQUFhLG9CQUFiLENBQWtDLEtBQWxDLEVBQ0EsQ0FIRCxDQUtWLENBcEVjLENBSmIsQ0F5RUYsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUdsQyxDQTVFQSxDQUFQLENBOEVQLEVBQ0QsYUFFTyxRQUFTLENBQUEsb0JBQVQsQ0FBK0Isb0JBQS9CLENBQW9ELGVBQXBELENBQW9FLG1CQUFwRSxDQUF3RixRQUF4RixDQUFrRyxDQUNyRyxHQUFJLENBQUEsVUFBVSxDQUFHLENBQUMsUUFBRCxDQUFXLFdBQVgsQ0FBd0IsY0FBeEIsQ0FBdUMsUUFBdkMsQ0FBZ0QsVUFBaEQsQ0FBMkQsY0FBM0QsQ0FBMEUsc0JBQTFFLENBQWlHLFlBQWpHLENBQThHLGFBQTlHLENBQTRILG1CQUE1SCxDQUFnSixrQkFBaEosQ0FBbUssaUJBQW5LLENBQXFMLGlCQUFyTCxDQUF1TSwyQkFBdk0sQ0FBbU8sZ0JBQW5PLENBQW9QLHFCQUFwUCxDQUEwUSxnQkFBMVEsQ0FBMlIsVUFBM1IsQ0FBc1MsVUFBdFMsQ0FDQSxTQUFVLE1BQVYsQ0FBaUIsU0FBakIsQ0FBMkIsWUFBM0IsQ0FBd0MsTUFBeEMsQ0FBK0MsUUFBL0MsQ0FBd0QsWUFBeEQsQ0FBcUUsb0JBQXJFLENBQTBGLFVBQTFGLENBQXFHLFdBQXJHLENBQWlILGlCQUFqSCxDQUFtSSxnQkFBbkksQ0FBb0osZUFBcEosQ0FBb0ssZUFBcEssQ0FBb0wseUJBQXBMLENBQThNLGNBQTlNLENBQTZOLG1CQUE3TixDQUFpUCxjQUFqUCxDQUFnUSxRQUFoUSxDQUF5USxRQUF6USxDQUFtUiw2SUFFbFMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLEVBQXBCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUEyQyxLQUEzQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUErQixLQUEvQixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFrQyxXQUFXLENBQUMsZUFBOUMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXdDLElBQXhDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQWlDLENBQWpDLENBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBZSxlQUFmLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQStCLENBQUMsWUFBWSxDQUFDLENBQWQsQ0FBZ0Isa0JBQWtCLENBQUMsS0FBbkMsQ0FBL0IsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBaUMsU0FBakMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBaUMsU0FBakMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXNDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBTixDQUFnQixJQUFJLENBQUMsU0FBckIsQ0FBRCxDQUFpQyxDQUFDLElBQUksQ0FBQyxNQUFOLENBQWEsSUFBSSxDQUFDLE1BQWxCLENBQWpDLENBQXRDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWtDLFdBQVcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF2RCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixzQkFBcEIsQ0FBNkMsSUFBN0MsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBK0IsS0FBL0IsQ0FHQSxHQUFJLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLFNBQXRCLENBQWlDLENBRS9CLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEVBQWhCLENBQ0EsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUExQixFQUFtQyxDQUFDLEVBQUQsQ0FBbkMsQ0FDRCxDQUpELElBSU8sSUFBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTFCLElBQXFDLFNBQXJDLEVBQWtELE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBMUIsSUFBcUMsSUFBM0YsQ0FDVCxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTFCLEVBQW1DLENBQUMsRUFBRCxDQUFuQyxDQUdFLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFxQyxVQUFVLENBQzFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUFnQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBK0IsS0FBL0IsQ0FBc0MsSUFBdEUsQ0FDSixDQUZELENBS0YsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsRUFBc0IsU0FBMUIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLEVBQXJCLENBRXJDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEdBQTJCLFNBQTNCLEVBQXdDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixHQUEyQixJQUF2RSxDQUE2RSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBeUIsRUFBekIsQ0FFN0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLHNCQUFyQixDQUE4QyxJQUE5QyxDQUVBLEdBQUksMEJBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLDBFQUEwQixpQkFBMUIsSUFBOEMsU0FBbEQsQ0FBOEQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLGlCQUF6QixDQUEyQyw2Q0FBM0MsQ0FDOUQsR0FBSSwwQkFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsMEVBQTBCLGlCQUExQixJQUE4QyxTQUFsRCxDQUE4RCxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBeUIsaUJBQXpCLENBQTJDLGtEQUEzQyxDQUU5RCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixFQUF3QixTQUE1QixDQUF1QyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBdUIsRUFBdkIsQ0FFdkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQWdDLENBQzlCLEVBQUUsQ0FBRSxHQUQwQixDQUU5QixJQUFJLENBQUUsTUFGd0IsQ0FHOUIsT0FBTyxDQUFFLENBQUMsTUFBTSxDQUFFLEVBQVQsQ0FIcUIsQ0FJaEMsVUFBVSxDQUFFLENBQUMsTUFBTSxDQUFFLEVBQVQsQ0FKb0IsQ0FBaEMsQ0FRSSxHQUFJLE1BQU0sQ0FBQyxNQUFQLEVBQWUsU0FBbkIsQ0FBOEIsTUFBTSxDQUFDLE1BQVAsQ0FBYyxHQUFkLENBQzlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixNQUFwQixDQUEyQixNQUFNLENBQUMsTUFBbEMsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isa0JBQXBCLENBQXlDLE1BQU0sQ0FBQyxrQkFBaEQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQTZCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdkMsQ0FDQSxNQUFNLENBQUMsYUFBUCxDQUF3QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsWUFBbEQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBNkIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFNBQXZELENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsRUFBOEIsU0FBbEMsQ0FBNkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQTZCLEdBQTdCLENBQzdDLE1BQU0sQ0FBQyxXQUFQLENBQW1CLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixXQUE3QyxDQUNBLE1BQU0sQ0FBQyxjQUFQLENBQXdCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixnQkFBbEQsQ0FDQSxNQUFNLENBQUMsYUFBUCxDQUF1QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBakQsQ0FDQSxNQUFNLENBQUMsY0FBUCxDQUF3QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBbEQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLG1CQUFWLENBQThCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBeEMsQ0FFQSxHQUFLLE1BQU0sQ0FBQyxjQUFQLEVBQXVCLFNBQTVCLENBQXVDLE1BQU0sQ0FBQyxjQUFQLENBQXNCLEtBQXRCLENBRTdDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUExQixDQUE0QyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRELENBR00sTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFxQyxDQUFyQyxDQUVBLEdBQUksTUFBTSxDQUFDLGNBQVAsRUFBdUIsU0FBM0IsQ0FDRCxDQUNDLE1BQU0sQ0FBQyxjQUFQLENBQXVCLENBQXZCLENBRUEsQ0FDRCxHQUFJLE1BQU0sQ0FBQyxhQUFQLEVBQXNCLFNBQTFCLENBQ0EsQ0FDQyxNQUFNLENBQUMsYUFBUCxDQUFzQixDQUF0QixDQUVBLENBQ0EsR0FBSSxNQUFNLENBQUMsYUFBUCxFQUFzQixTQUExQixDQUNBLENBQ0UsTUFBTSxDQUFDLGFBQVAsQ0FBc0IsQ0FBdEIsQ0FDRCxDQUdIO0FBQ0EsR0FBSSxDQUFBLFVBQVUsQ0FBRyxDQUFDLFlBQUQsQ0FBakIsQ0FHRSxHQUFJLENBQUEsU0FBUyxDQUFDLENBQ0YsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxzQkFBWCxDQURFLENBRUYsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxXQUFYLENBRkUsQ0FHRixDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLGNBQVgsQ0FIRSxDQUlGLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsWUFBWCxDQUpFLENBS0YsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxzQkFBWCxDQUxFLENBTUYsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyx1QkFBWCxDQU5FLENBQWQsQ0FRQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixFQUFtQixTQUF2QixDQUFrQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsY0FBYyxDQUFDLE1BQWYsRUFBbEIsQ0FDbEMsR0FBSSxDQUFBLFlBQVksd0JBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFiLHVFQUFHLHNCQUFxQixrQkFBeEIsZ0RBQUcsc0JBQXlDLEdBQTVELENBQ0EsR0FBSSxDQUFDLFlBQUwsQ0FBbUIsWUFBWSx3QkFBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQWIsdUVBQUcsc0JBQXFCLGtCQUF4QixnREFBRyxzQkFBeUMsTUFBeEQsQ0FFbkIsR0FBSSxDQUFBLGdCQUFnQixDQUFHLENBQUMsR0FBRyxDQUFFLENBQUMsQ0FBQyxPQUFPLGNBQVIsQ0FBdUIsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQU4sQ0FBbUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBbkMsQ0FBRCxDQUE2QyxDQUFDLElBQUksQ0FBQyxrQkFBTixDQUF5QixLQUFLLENBQUMsRUFBL0IsQ0FBN0MsQ0FBL0IsQ0FBRCxDQUFOLENBQXlILE9BQU8sQ0FBRSxTQUFsSSxDQUE2SSxXQUFXLENBQUUsd0JBQTFKLENBQW1MLFVBQVUsQ0FBRSxzQkFBL0wsQ0FDdkIsUUFBUSxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FERyxDQUNLLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxjQUQ3QixDQUM0QyxlQUFlLENBQUMsTUFBTSxDQUFDLGFBRG5FLENBQ2lGLE1BQU0sQ0FBRyxNQUFNLENBQUMsT0FEakcsQ0FDeUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUQvSSxDQUM2SixhQUFhLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUR2TCxDQUNnTSxNQUFNLENBQUMsVUFEdk0sQ0FDbU4sZ0JBQWdCLENBQUMsWUFEcE8sQ0FBdkIsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBcEIsQ0FBb0MseUJBQXlCLENBQUMsY0FBMUIsQ0FBeUMsZ0JBQXpDLENBQXBDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE9BQXBCLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFoRCxDQUVBLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsYUFBdEMsQ0FFQSxNQUFNLENBQUMsR0FBUCxDQUFhLG1CQUFiLENBQ0EsR0FBSSxDQUFBLFVBQVUsQ0FBRSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBQTFCLENBQXdDLEdBQXhDLENBQTRDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBNUUsQ0FBb0YsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXhHLENBQWhCLENBQ0EsR0FBSSxDQUFBLGNBQWMsQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixJQUF4QyxDQUVGO0FBRUEsR0FBSSxVQUFVLENBQUMsT0FBWCxDQUFtQixpQkFBbkIsRUFBc0MsQ0FBMUMsQ0FBOEMsQ0FDMUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWtDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFFBQXJELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUF1QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsZ0JBQXZFLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQXBCLENBQWtDLElBQWxDLENBQ0gsQ0FKRCxJQUlPLENBQ0wsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLENBQUMsYUFBYSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXhCLENBQWdDLG1CQUFtQixDQUFuRCxDQUFoQyxDQUNELENBRUQsR0FBSSxDQUFBLGFBQWEsQ0FBRyxRQUFoQixDQUFBLGFBQWdCLENBQVMsSUFBVCxDQUFjLENBQzlCLFVBQVUsQ0FBQyxPQUFYLENBQW1CLGVBQW5CLENBQXFDLElBQXJDLENBQ0EsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsZUFBbkIsQ0FBbUMsY0FBbkMsRUFDSCxDQUhELENBS0EsR0FBSSxDQUFBLG9CQUFvQixDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixjQUFyQixDQUFvQyxjQUFwQyxDQUFtRCxhQUFuRCxDQUEzQixDQUVBLEdBQUksQ0FBQSxhQUFhLENBQUcsUUFBaEIsQ0FBQSxhQUFnQixDQUFTLElBQVQsQ0FBYyw2QkFFaEMsR0FBSSxDQUFBLEtBQUssQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixlQUEvQixDQUNBLEdBQUksS0FBSyxFQUFFLFNBQVgsQ0FBc0IsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsZUFBbkIsQ0FBcUMsSUFBckMsQ0FFdEIsR0FBSSwwQkFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsV0FBckIsMEVBQWtDLE1BQWxDLEVBQXlDLENBQTdDLENBQ0EsQ0FDTSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsMkJBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFdBQXRCLGtEQUFDLHdCQUFrQyxNQUFuQyxDQUFkLENBQXdELENBQUMsRUFBekQsQ0FDQSxnRUFDRSxHQUFJLENBQUEsU0FBUyxDQUFDLEVBQWQsQ0FDQSxHQUFJLENBQUEsTUFBTSxDQUFDLEVBQVgsQ0FDQSxHQUFJLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFdBQXJCLENBQWlDLENBQWpDLEVBQW9DLFdBQXpDLENBQ0EsQ0FDSSxTQUFTLENBQUcsSUFBSSxDQUFDLEtBQUwsQ0FBVyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsV0FBckIsQ0FBaUMsQ0FBakMsRUFBb0MsU0FBL0MsQ0FBWixDQUNILENBRUQsTUFBTSxDQUFHLElBQUksQ0FBQyxLQUFMLENBQVcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFdBQXJCLENBQWlDLENBQWpDLEVBQW9DLE1BQS9DLENBQVQsQ0FFQSxHQUFJLGNBQWMsQ0FBQyxlQUFmLGFBQStCLFNBQS9CLHFDQUErQixXQUFXLFFBQTFDLGNBQW1ELFNBQW5ELHNDQUFtRCxZQUFXLEtBQTlELENBQW9FLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBMUIsRUFBbUMsQ0FBbkMsZUFBc0MsU0FBdEMsc0NBQXNDLFlBQVcsS0FBakQsQ0FBcEUsR0FBZ0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFdBQXJCLENBQWlDLENBQWpDLEVBQW9DLFdBQXhLLENBQ0EsQ0FDUSxJQUFNLEdBQU0sQ0FBQSxRQUFaLEdBQXdCLENBQUEsTUFBeEIsQ0FBaUMsQ0FDNUIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUExQixFQUFtQyxDQUFuQyxFQUFzQyxRQUF0QyxFQUFrRCxNQUFNLENBQUMsUUFBRCxDQUF4RCxDQUNKLENBRUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixHQUNQLENBRUYsQ0FDTixDQXZCRCxJQXVCTyxDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsR0FFTDtBQUNILENBL0JELENBaUNBLEdBQUksQ0FBQSxvQkFBb0IsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsY0FBckIsQ0FBb0Msc0JBQXBDLENBQTJELGFBQTNELENBQTNCLENBR0MsR0FBSSxDQUFBLFdBQVcsQ0FBRyxRQUFkLENBQUEsV0FBYyxDQUFTLElBQVQsQ0FDakIsQ0FDSSxHQUFJLENBQUEsVUFBVSxDQUFDLEtBQWYsQ0FDQSxHQUFJLElBQUksRUFBRSxTQUFWLENBQ0EsQ0FFTSxHQUFJLE1BQU8sQ0FBQSxJQUFQLEdBQWUsUUFBbkIsQ0FBNkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFzQyxJQUF0QyxDQUE3QixJQUNLLElBQUksS0FBSyxDQUFDLE9BQU4sQ0FBYyxJQUFkLENBQUosQ0FDTCxDQUNFLEdBQUksSUFBSSxDQUFDLE1BQUwsQ0FBWSxDQUFoQixDQUNBLENBQ0ksR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsS0FBaEMsRUFBeUMsQ0FBQSxJQUE3QyxDQUNBLENBQ0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFzQyxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLEtBQXhDLENBQXRDLENBQ0gsQ0FIRCxJQUdNLENBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFzQyxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsRUFBOUMsQ0FFUixDQUNMLENBVk0sSUFXSCxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLEtBQWhDLEVBQXlDLENBQUEsSUFBN0MsQ0FDQSxDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBc0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxLQUFqQyxDQUExQyxDQUNILENBSEQsSUFHTSxDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBc0MsSUFBSSxDQUFDLEVBQTNDLENBRVAsQ0FDRCxVQUFVLENBQUcsSUFBYixDQUVMLENBQ0Q7QUFDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsRUFBd0MsSUFBNUMsQ0FBa0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFxQyxDQUFyQyxDQUVsRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBcUMsQ0FBckMsRUFBMEMsVUFBOUMsQ0FBMEQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUF1QyxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFqRCxDQUFvRSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXhGLEVBRzdELENBbENGLENBcUNDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLEVBQXNCLFNBQTFCLENBQXFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixFQUFyQixDQUVyQyxHQUFJLENBQUEsZUFBSixDQUFvQixpQkFBcEIsQ0FBc0MsT0FBdEMsQ0FBK0MsUUFBL0MsQ0FBMEQsR0FBMUQsQ0FDQSxlQUFlLENBQUcsUUFBUSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXBDLENBQ0E7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUVFLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFtQyxTQUFTLGlCQUFULENBQTJCLG1CQUEzQixDQUMvQixDQUVNLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixFQUF1QyxTQUEzQyxDQUNBLENBQ0csTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUF3QyxpQkFBeEMsQ0FDRixDQUhELElBSUEsQ0FDRyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsRUFBdUMsQ0FBdkMsRUFBNEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixFQUF1QyxpQkFBdkYsQ0FDSyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXdDLGlCQUF4QyxDQURMLElBR0ksQ0FBQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXNDLENBQXRDLENBQ04sQ0FDRCxHQUFJLG1CQUFKLENBQXlCLE1BQU0sQ0FBQyxLQUFQLENBQWEsa0JBQWIsQ0FBZ0MsTUFBTSxDQUFDLEVBQXZDLEVBRTlCLENBZkwsQ0FrQk0sTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLFVBQzlCLENBQ0ksR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsV0FBckIsRUFBa0MsU0FBdEMsQ0FBaUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFdBQXJCLENBQWlDLEVBQWpDLENBQ2pELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixXQUFyQixDQUFpQyxJQUFqQyxDQUFzQyxFQUF0QyxFQUNILENBSkQsQ0FNQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBaUMsU0FBUyxLQUFULENBQ2pDLENBQ0ksR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsV0FBckIsRUFBa0MsU0FBdEMsQ0FBaUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFdBQXJCLENBQWlDLEVBQWpDLENBQ2pELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixXQUFyQixDQUFpQyxNQUFqQyxDQUF3QyxLQUF4QyxDQUE4QyxDQUE5QyxDQUFnRCxFQUFoRCxFQUNILENBSkQsQ0FLQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBOEIsU0FBUyxLQUFULENBQy9CLENBQ0ksR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsV0FBckIsRUFBa0MsU0FBdEMsQ0FBaUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFdBQXJCLENBQWlDLEVBQWpDLENBQ2pELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLFdBQXJCLENBQWlDLE1BQWpDLENBQXdDLEtBQTVDLENBQW9ELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixXQUFyQixDQUFpQyxNQUFqQyxDQUF3QyxLQUF4QyxDQUE4QyxDQUE5QyxFQUN2RCxDQUpBLENBS0YsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG1CQUFwQixDQUF3QyxTQUFTLE1BQVQsQ0FBZ0IsQ0FFdkQsR0FBSSxDQUFBLFNBQUosQ0FFQSxHQUFJLE1BQU0sR0FBRyxTQUFiLENBQ0EsQ0FDSSxHQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsTUFBZCxHQUF5QixNQUFNLENBQUMsTUFBUCxDQUFjLENBQTNDLENBQ0EsQ0FDSSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxLQUFoQyxFQUF5QyxDQUFBLE1BQU0sQ0FBQyxDQUFELENBQW5ELENBQ0EsQ0FDSSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUQsQ0FBTixDQUFVLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxLQUExQyxDQUFWLENBRUgsQ0FKRCxJQUlNLENBQUEsU0FBUyxDQUFHLE1BQU0sQ0FBQyxDQUFELENBQU4sQ0FBVSxFQUF0QixDQUVULENBUkQsSUFRSyxDQUNELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLEtBQWhDLEVBQXlDLENBQUEsTUFBN0MsQ0FDQSxDQUNJLFNBQVMsQ0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLEtBQWpDLENBQWxCLENBRUgsQ0FKRCxJQUlNLENBQUEsU0FBUyxDQUFHLE1BQU0sQ0FBQyxFQUFuQixDQUVULENBQ0osQ0FsQkQsSUFrQk0sQ0FBQSxTQUFTLENBQUcsSUFBWixDQUVOLE1BQU8sQ0FBQSxTQUFQLENBQ0gsQ0F6QkUsQ0EyQkgsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUF1QyxTQUFTLE1BQVQsQ0FDdkMsQ0FFSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLGlCQUF6QixDQUEyQyxPQUEzQyxDQUFtRCxVQUFuRCxDQUE4RCxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLGlCQUFqQyxDQUFwRSxDQUFyQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBbUMsT0FBbkMsQ0FBMkMsVUFBM0MsQ0FBc0QsR0FBSSxDQUFBLElBQUosQ0FBUyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLGtCQUFqQyxDQUFmLEVBQXFFLGtCQUFyRSxFQUF0RCxDQUFyQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBbUMsT0FBbkMsQ0FBMkMsVUFBM0MsQ0FBc0QsR0FBSSxDQUFBLElBQUosQ0FBUyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLGtCQUFqQyxDQUFmLEVBQXFFLGtCQUFyRSxFQUF0RCxDQUFyQyxDQUNBLEdBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxpQkFBakMsQ0FBTixHQUE0RCxJQUFoRSxDQUNBLENBQ0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixpQkFBekIsQ0FBMkMsT0FBM0MsQ0FBbUQsVUFBbkQsQ0FBOEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxpQkFBakMsQ0FBcEUsQ0FBckMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLE9BQW5DLENBQTJDLFVBQTNDLENBQXNELEdBQUksQ0FBQSxJQUFKLENBQVMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxrQkFBakMsQ0FBZixFQUFxRSxrQkFBckUsRUFBdEQsQ0FBckMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLE9BQW5DLENBQTJDLFVBQTNDLENBQXNELEdBQUksQ0FBQSxJQUFKLENBQVMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxrQkFBakMsQ0FBZixFQUFxRSxrQkFBckUsRUFBdEQsQ0FBckMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBaUMsSUFBakMsQ0FDSCxDQUNKLENBYkQsQ0FlQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQTJDLFNBQVMsWUFBVCxDQUFzQixlQUF0QixDQUFzQyxDQUU3RSxHQUFJLGVBQWUsR0FBRyxTQUF0QixDQUFpQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQyxDQUNqQyxHQUFJLFlBQVksR0FBRyxTQUFuQixDQUE4QixZQUFZLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBdkIsQ0FDOUIsR0FBSSxDQUFBLFdBQVcsQ0FBSSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsTUFBN0MsQ0FDQSxHQUFJLENBQUEsUUFBUSxDQUFHLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixVQUF6QyxDQUVBLG9CQUFvQixDQUFDLG9CQUFyQixDQUEwQyxXQUExQyxDQUFzRCxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQWhFLENBQXdFLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBMUIsRUFBbUMsQ0FBbkMsQ0FBeEUsQ0FBOEcsUUFBOUcsRUFBd0gsSUFBeEgsQ0FBNkgsU0FBUyxJQUFULENBQWUsQ0FJbkgsR0FBSSxDQUFBLFFBQVEsQ0FBRyxJQUFJLENBQUMsSUFBcEIsQ0FDRCxHQUFJLENBQUEsSUFBSSxDQUFHLFFBQVEsQ0FBQyxXQUFwQixDQUNBLEdBQUksQ0FBQyxJQUFMLENBQVcsSUFBSSxDQUFDLDZCQUFMLENBQ1gsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBNUIsQ0FBaUMsU0FBakMsRUFFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLENBQXVDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixtQkFBcEIsQ0FBd0MsUUFBUSxDQUFDLE1BQWpELENBQXZDLENBQ0E7QUFDQSx5QkFBeUIsQ0FBQyxPQUExQixDQUFrQyxDQUFDLEdBQUcsQ0FBRSxDQUFDLENBQUMsT0FBTyxjQUFSLENBQXVCLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5DLENBQUQsQ0FBNkMsQ0FBQyxJQUFJLENBQUMsa0JBQU4sQ0FBeUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBbkQsQ0FBN0MsQ0FBL0IsQ0FBRCxDQUFOLENBQzlCLE9BQU8sQ0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQU4sQ0FBb0IsTUFBTSxDQUFDLEtBQTNCLENBQUQsQ0FEcUIsQ0FHOUIsSUFBSSxDQUFFLHNCQUh3QixDQUdELFFBQVEsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BSG5CLENBRzJCLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxjQUhuRCxDQUdrRSxlQUFlLENBQUMsTUFBTSxDQUFDLGFBSHpGLENBSzlCLE1BQU0sQ0FBRyxNQUFNLENBQUMsT0FMYyxDQUtOLFdBQVcsQ0FBQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFMaEMsQ0FLOEMsYUFBYSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FMeEUsQ0FLaUYsTUFBTSxDQUFDLFVBTHhGLENBQWxDLEVBT0EsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsZUFBbkIsQ0FBbUMsc0JBQW5DLEVBQ0EsTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLGNBQXpCLENBQXdDLGNBQXhDLENBQXdELENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBeEIsQ0FBZ0MsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBN0QsQ0FBOEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBMUIsRUFBbUMsQ0FBbkMsQ0FBckYsQ0FBeEQsRUFLQyxDQXhCekIsQ0F3QjBCLFNBQVMsS0FBVCxDQUFlLENBQ2QsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0EsTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLGNBQXpCLENBQXdDLGNBQXhDLENBQXdELENBQUMsS0FBSyxDQUFDLElBQVAsQ0FBeEQsRUFFMUIsQ0E1QkQsRUE2QkgsQ0FwQ0QsQ0FzQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUF5QyxTQUFTLFlBQVQsQ0FBc0IsZUFBdEIsQ0FBc0MsQ0FFMUUsR0FBSSxlQUFlLEdBQUcsU0FBdEIsQ0FBaUMsZUFBZSxDQUFDLENBQWhCLENBQ2pDLEdBQUksWUFBWSxHQUFHLFNBQW5CLENBQThCLFlBQVksQ0FBQyxDQUFiLENBQzlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBdUMsZUFBdkMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQStCLFlBQS9CLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLEVBQThCLFNBQTlCLEVBQTJDLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsRUFBOEIsQ0FBN0UsQ0FDRyxDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBNkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF2QyxDQUNBLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUF2QixDQUNILENBQ0osR0FBSSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsTUFBMUIsRUFBa0MsU0FBdEMsQ0FBaUQsTUFBTSxDQUFDLGtCQUFQLENBQTBCLE1BQTFCLENBQWlDLENBQWpDLENBRTlDLEdBQUksQ0FBQSxNQUFNLENBQUcsTUFBTSxDQUFDLGtCQUFQLENBQTBCLE1BQXZDLENBQ0EsR0FBSSxDQUFBLFNBQVMsQ0FBRyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZ0JBQTFDLENBQ0EsR0FBSSxDQUFBLGdCQUFnQixDQUFHLE1BQU0sQ0FBQyxhQUE5QixDQUNILEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXVCLFFBQXZCLEdBQWtDLE1BQWxDLENBQXlDLENBQXpDLENBQTJDLENBQTNDLEdBQStDLEdBQW5ELENBQ0EsQ0FDRztBQUNBLGdCQUFnQixDQUFHLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixxQkFBN0MsQ0FFRixDQUNELEdBQUksZ0JBQWdCLEVBQUUsU0FBdEIsQ0FBaUMsZ0JBQWdCLENBQUMsQ0FBakIsQ0FFOUIsZUFBZSxDQUFDLHFCQUFoQixDQUFzQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQWhELENBQXdELE1BQXhELENBQStELE1BQU0sQ0FBQyxNQUF0RSxDQUE2RSxnQkFBN0UsQ0FBOEYsU0FBOUYsQ0FBd0csTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQTVILENBQXFJLFlBQXJJLENBQWtKLGVBQWxKLENBQWtLLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQix3QkFBdkwsRUFBaU4sSUFBak4sQ0FBc04sU0FBUyxJQUFULENBQWUsQ0FHck87QUFFc0IsR0FBSSxDQUFBLGNBQUosQ0FDQSxHQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUF4QixDQUFKLENBQ0UsQ0FDRSxHQUFLLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBVixDQUFpQixDQUF0QixDQUF5QixjQUFjLENBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUFWLENBQWUsQ0FBZixDQUFsQixDQUF6QixJQUNLLENBQUEsY0FBYyxDQUFDLEVBQWYsQ0FDTixDQUpILElBS0ssQ0FBQSxjQUFjLENBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUE1QixDQUNMLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBMUIsRUFBbUMsQ0FBbkMsRUFBeUMsY0FBekMsQ0FDRixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLENBQXVDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixtQkFBcEIsQ0FBd0MsY0FBeEMsQ0FBdkMsQ0FDRyx5QkFBeUIsQ0FBQyxPQUExQixDQUFrQyxDQUFDLEdBQUcsQ0FBRSxDQUFDLENBQUMsT0FBTyxjQUFSLENBQXVCLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxZQUF6QixDQUFELENBQXdDLENBQUMsSUFBSSxDQUFDLGtCQUFOLENBQXlCLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQW5ELENBQXhDLENBQS9CLENBQUQsQ0FBTixDQUNqQyxPQUFPLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFOLENBQW9CLE1BQU0sQ0FBQyxLQUEzQixDQUFELENBRHdCLENBR2pDLElBQUksQ0FBRSxzQkFIMkIsQ0FHSixRQUFRLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUhoQixDQUd3QixnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsY0FIaEQsQ0FHK0QsZUFBZSxDQUFDLE1BQU0sQ0FBQyxhQUh0RixDQUtqQyxNQUFNLENBQUcsTUFBTSxDQUFDLE9BTGlCLENBS1QsV0FBVyxDQUFDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUw3QixDQUsyQyxhQUFhLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUxyRSxDQUs4RSxNQUFNLENBQUMsVUFMckYsQ0FBbEMsRUFRQyxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIsY0FBekIsQ0FBd0MsY0FBeEMsQ0FBd0QsQ0FBQyxZQUFZLENBQUMsWUFBZCxDQUEyQixRQUFRLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUF4RCxDQUF5RSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUExQixFQUFtQyxDQUFuQyxDQUFoRixDQUF4RCxFQUVBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGFBQXpCLENBQXdDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBcUMsY0FBckMsRUFFMUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLElBQXJDLENBQ0QsQ0EzQnJCLENBMkJzQixTQUFTLEtBQVQsQ0FBZSxDQUNkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUVMLENBOUJsQixFQStCTCxDQXZESCxDQTBERSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZUFBcEIsQ0FBc0MsU0FBUyxXQUFULENBQXFCLENBRXJELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUFpQyxLQUFqQyxDQUNGLG9CQUFvQixDQUFDLGNBQXJCLENBQW9DLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixtQkFBekQsQ0FBNkUsV0FBN0UsRUFBMEYsSUFBMUYsQ0FBK0YsU0FBUyxJQUFULENBQWUsQ0FFdEYsR0FBSSxDQUFBLGNBQUosQ0FDQSxHQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsSUFBSSxDQUFDLElBQW5CLENBQUosQ0FDRSxDQUNFLEdBQUssSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFWLENBQWlCLENBQXRCLENBQXlCLGNBQWMsQ0FBSSxJQUFJLENBQUMsSUFBTCxDQUFVLENBQVYsQ0FBbEIsQ0FBekIsSUFDSyxDQUFBLGNBQWMsQ0FBQyxFQUFmLENBQ04sQ0FKSCxJQUtLLENBQUEsY0FBYyxDQUFJLElBQUksQ0FBQyxJQUF2QixDQUNMLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBMUIsRUFBbUMsQ0FBbkMsRUFBeUMsY0FBekMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBcEIsQ0FBaUMsSUFBakMsQ0FFRCxDQVp2QixDQVl3QixTQUFTLEtBQVQsQ0FBZSxDQUNkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUFpQyxJQUFqQyxDQUNMLENBZnBCLEVBZ0JILENBbkJELENBdUJBO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUNTLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBd0MsU0FBUyxJQUFULENBQ3pDLENBRUssR0FBSSxJQUFJLEVBQUUsU0FBVixDQUFvQixDQUNqQixHQUFJLENBQUEsRUFBSixDQUNBLEdBQUksS0FBSyxDQUFDLE9BQU4sQ0FBYyxJQUFkLENBQUosQ0FDQSxDQUNDLEVBQUUsQ0FBSSxJQUFOLENBQ0EsQ0FIRCxJQUdNLENBQUEsRUFBRSxDQUFFLENBQUMsSUFBRCxDQUFKLENBRUosSUFBSSxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVYsQ0FBWSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQWpCLENBQXdCLENBQUMsRUFBekIsQ0FBNkIsQ0FFM0IsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsRUFBbUIsRUFBRSxDQUFDLENBQUQsQ0FBRixDQUFNLFFBQTdCLENBQ0EsQ0FDRSx5QkFBeUIsQ0FBQyxPQUExQixDQUFrQyxFQUFFLENBQUMsQ0FBRCxDQUFwQyxFQUNBO0FBQ0QsQ0FDRixDQUNOLENBRUosQ0FwQkEsQ0FzQkksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG1CQUFwQixDQUEwQyxTQUFTLEVBQVQsQ0FBWSxLQUFaLENBQW9CLENBQzdEO0FBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLEVBQTBDLFNBQTlDLENBQ2tCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsRUFBekMsQ0FDbEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHdCQUFwQixDQUE2QyxFQUE3QyxDQUFnRCxLQUFoRCxFQUdELENBUEEsQ0FVVCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isd0JBQXBCLENBQStDLFNBQVMsRUFBVCxDQUFZLEtBQVosQ0FFL0MsQ0FFUSxHQUFJLENBQUEsR0FBSixDQUNBLEdBQUksS0FBSyxFQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixHQUFvQixTQUE3QixFQUEwQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsR0FBb0IsSUFBbEUsQ0FDRSxDQUNNLEdBQUcsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLEdBQTFDLENBQThDLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBMUUsRUFBNEUsT0FBNUUsQ0FBb0YsRUFBcEYsQ0FBTixDQUVBLEdBQUksR0FBRyxFQUFFLENBQVQsQ0FBVyxDQUNQLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsSUFBekMsQ0FBZ0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixDQUEwQyxHQUExQyxFQUErQyxJQUEvRixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixlQUFwQixDQUFzQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLEdBQTFDLENBQXRDLENBQ0gsQ0FDRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLEVBQXpDLENBQThDLEVBQTlDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUF5QyxjQUF6QyxDQUEwRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLElBQXpDLENBQStDLElBQS9DLENBQW9ELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsRUFBN0YsQ0FBaUcsR0FBM0osQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isc0JBQXBCLENBQTJDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBL0QsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBOEIsT0FBOUIsQ0FBc0MsTUFBdEMsQ0FBK0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF6RCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUE4QixVQUE5QixDQUF5QyxNQUF6QyxDQUFnRCxPQUFPLENBQUMsSUFBUixDQUFhLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdkIsQ0FBaEQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBcEIsQ0FBK0IsSUFBL0IsQ0FFTCxDQWZILElBZU8sQ0FDRCxHQUFHLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixDQUEwQyxHQUExQyxDQUE4QyxTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsRUFBVCxDQUFjLENBQTFFLEVBQTRFLE9BQTVFLENBQW9GLEVBQXBGLENBQU4sQ0FFQSxHQUFJLEdBQUcsRUFBRSxDQUFULENBQVcsQ0FDVCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQTJDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBMEMsR0FBMUMsQ0FBM0MsQ0FDQSxvQkFBb0IsQ0FBQyx3QkFBckIsQ0FBOEMsRUFBOUMsRUFBa0QsSUFBbEQsQ0FBdUQsU0FBVSxJQUFWLENBQWdCLENBRS9ELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsSUFBekMsQ0FBZ0QsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUExRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixlQUFwQixDQUFzQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLEdBQTFDLENBQXRDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLE9BQTlCLENBQXNDLE1BQXRDLENBQStDLElBQUksQ0FBQyxJQUFMLENBQVUsSUFBekQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isc0JBQXBCLENBQTJDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBL0QsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLENBQXlDLGNBQXpDLENBQTBELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsSUFBekMsQ0FBK0MsSUFBL0MsQ0FBb0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUF5QyxFQUE3RixDQUFpRyxHQUEzSixDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHNCQUFwQixHQUE2QyxTQUFqRCxDQUNBLENBQ0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG1CQUFyQixDQUF5QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isc0JBQXBCLENBQTJDLEVBQXBGLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLHdCQUFyQixDQUE4QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isc0JBQXBCLENBQTJDLE9BQXpGLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixzQkFBcEIsQ0FBMkMsY0FBN0QsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBOEIsVUFBOUIsQ0FBeUMsTUFBekMsQ0FBZ0QsT0FBTyxDQUFDLElBQVIsQ0FBYSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isc0JBQXBCLENBQTJDLElBQXhELENBQWhELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLE9BQU8sQ0FBQyxJQUFSLENBQWEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHNCQUFwQixDQUEyQyxJQUF4RCxDQUE5QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFvQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLEdBQTFDLEVBQStDLGNBQW5FLENBRUgsQ0FURCxJQVNNLENBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsd0NBQTVCLENBQXFFLE9BQXJFLEVBRU4sTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQW9CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUE4QixPQUE5QixDQUFzQyxNQUExRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUErQixJQUEvQixDQUVILENBckJMLENBcUJNLFNBQVMsS0FBVCxDQUFlLENBQ2YsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0F2QkQsRUF5QkgsQ0FDSixDQUdaLENBdERHLENBd0RBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixFQUEyQyxTQUEvQyxDQUEwRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLEVBQTFDLENBQzNELEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FFQSxvQkFBb0IsQ0FBQywyQkFBckIsQ0FBaUQsU0FBakQsQ0FBMkQsTUFBM0QsRUFBbUUsSUFBbkUsQ0FDSyxTQUFVLElBQVYsQ0FBZ0IsQ0FDYixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTRDLElBQUksQ0FBQyxJQUFqRCxDQUNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUFpQyxJQUFqQyxDQUNEO0FBQ0E7QUFFRSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixtQkFBckIsRUFBMEMsSUFBOUMsQ0FDMkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG1CQUFwQixDQUF3QyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsbUJBQTdELENBQWlGLElBQWpGLEVBRTVCLENBVlQsQ0FVVSxTQUFTLEtBQVQsQ0FBZSxDQUNGLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNyQixDQVpGLEVBZ0JJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUErQixTQUFTLElBQVQsQ0FBYyxJQUFkLENBQW1CLEtBQW5CLENBQXlCLEdBQXpCLENBQzlCLENBQ0MsZUFBZSxDQUFDLFFBQWhCLENBQXlCLElBQXpCLENBQThCLElBQTlCLENBQW1DLEtBQW5DLEVBQ0csR0FBSSxHQUFKLENBQVMsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsR0FBNUIsQ0FBZ0MsTUFBaEMsRUFDWixDQUpGLENBT0gsR0FBSSxDQUFBLG1CQUFtQixDQUFHLFFBQXRCLENBQUEsbUJBQXNCLENBQVMsSUFBVCxDQUMxQixnRUFDSSxHQUFJLENBQUEsR0FBRyxnQkFBRyxJQUFJLENBQUMsS0FBUiwrREFBRyxjQUFZLFNBQWYsd0VBQUcsc0JBQXVCLEdBQTFCLGlEQUFHLHVCQUE0QixFQUF0QyxDQUVBLEdBQUksQ0FBQyxHQUFMLENBQVUsR0FBRyxDQUFHLElBQUksQ0FBQyxLQUFYLENBRVYsR0FBSSxHQUFKLENBQVMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUF1QyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQWpELENBQXlELEdBQXpELEVBQ1osQ0FQRCxDQVNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBNkMsVUFDN0MsQ0FFSTtBQUNBLEdBQUksQ0FBQSxlQUFlLENBQUcsUUFBUSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXhDLENBQ0EsR0FBSSxDQUFBLGlCQUFpQixDQUFFLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUExQixDQUF3QyxHQUF4QyxDQUE0QyxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQTdFLENBQ0EsR0FBSSxDQUFBLE9BQU8sQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsaUJBQXRCLENBQXdDLElBQXhDLENBQWQsQ0FDQSxHQUFJLENBQUEsUUFBUSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixpQkFBckIsQ0FBdUMsZUFBdkMsQ0FBdUQsY0FBdkQsQ0FBc0UsbUJBQXRFLENBQWYsQ0FDQSxHQUFJLENBQUEsR0FBRyxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsUUFBWCxDQUFvQixpQkFBcEIsQ0FBVixDQUNBLEdBQUksR0FBRyxDQUFDLE1BQUosRUFBWSxJQUFaLEVBQW9CLEdBQUcsQ0FBQyxLQUE1QixDQUFtQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBTCxDQUFuQixDQUN0QyxDQVZELENBWUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHlCQUFwQixDQUFpRCxTQUFTLFFBQVQsQ0FDakQsNEJBQ0ksR0FBSSxDQUFBLFNBQUosQ0FFQSxHQUFJLENBQUEsU0FBUyxDQUFJLE1BQU0sQ0FBQyxHQUFQLENBQVcsUUFBWCxDQUFvQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBOUMsQ0FBakIsQ0FDQSxHQUFJLENBQUEsb0JBQW9CLHlCQUFHLFNBQVMsQ0FBQyxLQUFWLENBQWdCLFlBQW5CLGlEQUFHLHVCQUE4QixlQUF6RCxDQUNBLEdBQUksQ0FBQSxZQUFZLENBQUcsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFlBQTdDLENBQ0EsR0FBSSxDQUFBLFlBQUosQ0FDQTtBQUNBLFlBQVksQ0FBRyx5QkFBeUIsQ0FBQyxtQkFBMUIsQ0FBOEMsb0JBQTlDLENBQW1FLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixrQkFBN0YsQ0FBZ0gsWUFBaEgsQ0FBZixDQUVBLEdBQUksS0FBSyxDQUFDLE9BQU4sQ0FBYyxZQUFkLEdBQStCLFlBQVksQ0FBQyxNQUFiLENBQW9CLENBQXZELENBQ0EsQ0FDUSxHQUFJLENBQUEsU0FBUyxDQUFDLENBQWQsQ0FBZ0IsZUFBZSxDQUFDLENBQWhDLENBQ0EsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQTVCLENBQW1DLENBQUMsRUFBcEMsQ0FDQSxDQUNHLFNBQVMsQ0FBRyxZQUFZLENBQUMsQ0FBRCxDQUF4QixDQUNBLEdBQUksU0FBUyxFQUFFLFNBQWYsQ0FDQSxDQUNHLEdBQUksU0FBUyxDQUFDLEdBQVYsRUFBZSxTQUFmLEVBQTRCLFNBQVMsQ0FBQyxHQUFWLEVBQWUsSUFBL0MsQ0FDQSxDQUNBLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFWLENBQWMsTUFBN0IsQ0FBb0MsQ0FBQyxFQUFyQyxDQUNBLENBQ0UsR0FBSyxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsSUFBakIsRUFBdUIsUUFBeEIsRUFBcUMsUUFBUSxFQUFFLFNBQW5ELENBQ0EsQ0FDRSxHQUFJLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixFQUF3QixTQUF4QixFQUFxQyxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsRUFBd0IsSUFBakUsQ0FDQSxDQUVFLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixNQUF0QyxDQUE2QyxDQUFDLEVBQTlDLENBQ0EsQ0FFQyxHQUFJLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixDQUF2QixFQUEwQixJQUExQixFQUFnQyxZQUFoQyxFQUFnRCxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsQ0FBdkIsRUFBMEIsS0FBMUIsRUFBaUMsU0FBakYsRUFBOEYsU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLENBQXZCLEVBQTBCLEtBQTFCLEdBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBOUksQ0FFRCxDQUNJLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsQ0FBdkIsRUFBMEIsS0FBcEMsQ0FDQSxJQUFLLEdBQUksQ0FBQSxFQUFDLENBQUMsQ0FBWCxDQUFhLEVBQUMsQ0FBQyxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsTUFBdEMsQ0FBNkMsRUFBQyxFQUE5QyxDQUNBLENBQ0ksR0FBSSxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsRUFBdkIsRUFBMEIsSUFBMUIsRUFBZ0Msa0JBQWhDLEVBQXNELFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixFQUF2QixFQUEwQixLQUExQixFQUFpQyxTQUF2RixFQUFvRyxTQUFTLEVBQUUsR0FBL0csRUFBc0gsU0FBUyxFQUFFLEVBQWpJLEVBQXVJLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixFQUF2QixFQUEwQixLQUExQixDQUFnQyxDQUEzSyxDQUE4SyxlQUFlLENBQUMsU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLEVBQXZCLEVBQTBCLEtBQTFDLENBQ2pMLENBQ0osQ0FHQSxDQUdGLENBRUYsQ0FFQSxDQUNGLENBQ0gsQ0FDSCxDQUNSLENBQ0QsTUFBTyxDQUFDLFlBQVksU0FBYixDQUF1QixrQkFBa0IsZUFBekMsQ0FBUCxDQUVILENBeERELENBMkRBLEdBQUksQ0FBQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBM0IsRUFBOEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLEdBQXhFLEdBQWdGLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF1QixRQUF2QixHQUFrQyxNQUFsQyxDQUF5QyxDQUF6QyxDQUEyQyxDQUEzQyxHQUErQyxHQUEvQyxFQUFzRCxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBdUIsUUFBdkIsR0FBa0MsTUFBbEMsQ0FBeUMsQ0FBekMsQ0FBMkMsQ0FBM0MsR0FBK0MsR0FBckwsQ0FBSixDQUVBLHFEQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHlCQUFwQixFQUFyQyxDQUVBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixHQUF1QyxTQUEzQyxDQUNBLENBQ0csTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUF1QyxDQUFDLGVBQWUsQ0FBQyxDQUFqQixDQUFtQixTQUFTLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF2QyxDQUF2QyxDQUNGLENBRUQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsRUFBbUIsSUFBbkIsRUFBMkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLFNBQWxELENBQTZELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsMEJBQXVDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBM0Qsa0RBQXVDLHdCQUFzQyxTQUE3RSwwQkFBdUYsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUEzRyxrREFBdUYsd0JBQXNDLGVBQTdILEVBRWhFLENBWkQsSUFZTSxJQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF1QixRQUF2QixHQUFrQyxNQUFsQyxDQUF5QyxDQUF6QyxDQUEyQyxDQUEzQyxHQUErQyxHQUFuRCxDQUNOLENBQ00sTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixHQUNMLENBRUQsR0FBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUEzQixFQUE4QyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsR0FBeEUsRUFBK0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXVCLFFBQXZCLEdBQWtDLE1BQWxDLENBQXlDLENBQXpDLENBQTJDLENBQTNDLEdBQStDLEdBQWxJLENBRUEsQ0FFSTtBQUNBLEdBQUksQ0FBQSxZQUFZLENBQUcsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBQTFCLENBQXdDLEdBQXhDLENBQTRDLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBekUsQ0FDQSxRQUFRLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLFlBQXJCLENBQWtDLGVBQWxDLENBQWtELGNBQWxELENBQWlFLFdBQWpFLENBQVgsQ0FDQSxHQUFJLENBQUEsRUFBRSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsUUFBWCxDQUFvQixZQUFwQixDQUFULENBRUEsR0FBSSxFQUFFLENBQUMsTUFBSCxFQUFXLElBQWYsQ0FDQSxlQUNJLEdBQUcsWUFBRyxFQUFFLENBQUMsS0FBTixvQ0FBRyxVQUFVLE1BQWhCLENBQ0EsR0FBSSxHQUFHLEVBQUUsU0FBVCxDQUNBLENBQ0ksR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsS0FBaEMsRUFBeUMsQ0FBQSxHQUE3QyxDQUFrRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLENBQXNDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsS0FBakMsQ0FBekMsQ0FBbEQsSUFDSyxDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBc0MsR0FBRyxDQUFDLEVBQTFDLENBRUwsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLEVBQXdDLElBQTVDLENBQWtELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBcUMsQ0FBckMsQ0FFbEQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLENBQXFDLENBQXpDLENBQTRDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBdUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBakQsQ0FBb0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUF4RixFQUMvQyxDQUNKLENBRUosQ0FHSSxNQUFNLENBQUMsR0FBUCxDQUFXLDBCQUEwQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsY0FBL0QsQ0FBOEUsU0FBUyxLQUFULENBQWdCLElBQWhCLENBQXFCLENBQ2hHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBc0MsSUFBdEMsRUFFRixDQUhELEVBS0QsTUFBTSxDQUFDLEdBQVAsQ0FBVyx5QkFBeUIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQTlELENBQThFLFNBQVMsS0FBVCxDQUFnQixJQUFoQixDQUFxQixDQUUvRixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXNDLElBQXRDLEVBRUQsQ0FKSCxFQU1BLE1BQU0sQ0FBQyxHQUFQLENBQVcsMkJBQTJCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUFoRSxDQUE4RSxTQUFTLEtBQVQsQ0FBZ0IsSUFBaEIsQ0FBcUIsQ0FFL0YsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUFzQyxJQUF0QyxFQUVELENBSkgsRUFPSixHQUFJLENBQUEsUUFBSixDQUNBLEdBQUksTUFBTSxDQUFDLGNBQVgsQ0FBMkIsUUFBUSxDQUFHLGNBQWMsQ0FBQyxHQUFmLENBQW1CLGdEQUFuQixDQUFYLENBQTNCLElBQ0ssQ0FBQSxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsbURBQW5CLENBQVgsQ0FFTCxRQUFRLENBQUMsTUFBVCxDQUFnQixRQUFRLENBQUMsUUFBRCxDQUFSLENBQW1CLE1BQW5CLENBQWhCLEVBR0gsQ0FudEJvQixDQUFqQixDQW90QkYsTUFBTyxDQUNHLFFBQVEsQ0FBRSxHQURiLENBR0csVUFBVSxDQUFFLFVBSGYsQ0FJRyxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBSWpDLEdBQUksQ0FBQSxXQUFXLENBQUUsS0FBSyxDQUFDLEdBQU4sQ0FBVSxVQUFWLENBQXFCLEtBQUssQ0FBQyxrQkFBTixDQUF5QixhQUF6QixDQUF1QyxHQUF2QyxDQUEyQyxLQUFLLENBQUMsRUFBTixDQUFTLE9BQXpFLENBQWlGLEtBQUssQ0FBQyxFQUFOLENBQVMsT0FBMUYsQ0FBakIsQ0FDQyxHQUFJLENBQUEsZUFBZSxDQUFHLFdBQVcsQ0FBQyxPQUFaLENBQW9CLElBQTFDLENBRUEsR0FBSSxDQUFBLFVBQVUsQ0FBRyxRQUFiLENBQUEsVUFBYSxFQUNqQixDQUNFO0FBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFVBQW5CLENBQThCLEtBQTlCLENBRUEsUUFBUSxDQUFDLFVBQVUsQ0FDakIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFVBQW5CLENBQThCLElBQTlCLENBQ0E7QUFDQSxLQUFLLENBQUMsUUFBTixDQUFlLEtBQUssQ0FBQyxFQUFOLENBQVMsT0FBeEIsRUFBa0MsQ0FBQyxFQUFELENBQWxDLENBQ0EsV0FBVyxDQUFDLE9BQVosQ0FBb0IsZUFBcEIsQ0FBc0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxPQUEvQyxDQUNBLFdBQVcsQ0FBQyxPQUFaLENBQW9CLGVBQXBCLENBQW9DLFdBQXBDLEVBQ0QsQ0FOTyxDQUFSLENBV0QsQ0FoQkQsQ0FpQkEsR0FBSSxDQUFBLG1CQUFtQixDQUFHLEtBQUssQ0FBQyxHQUFOLENBQVUsU0FBVixDQUFvQixlQUFwQixDQUFvQyxXQUFwQyxDQUFnRCxVQUFoRCxDQUExQixDQUdKLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixZQUFuQixDQUFrQyxFQUFsQyxDQUVBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixtQkFBbkIsQ0FBeUMsU0FBUyxnQkFBVCxDQUEwQixDQUcvRCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBc0Isb0JBQW9CLENBQUMseUJBQXJCLENBQStDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixTQUFuQixDQUE2QixPQUE3QixDQUFxQyxNQUFwRixDQUEyRixnQkFBM0YsQ0FBdEIsQ0FFTCxDQUxDLENBUUQsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHlCQUFuQixDQUErQyxVQUFXLENBQUU7QUFFNUQsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsRUFBcUIsU0FBekIsQ0FDQyxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBRSxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsTUFBcEMsQ0FBMkMsQ0FBQyxFQUE1QyxDQUFnRCxDQUM1QyxHQUFJLENBQUEsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixDQUFwQixFQUF1QixRQUExQyxDQUFxRDtBQUNyRCxHQUFJLENBQUEsVUFBVSxDQUFHLGNBQWpCLENBQXFEO0FBRXJELEdBQUksY0FBYyxFQUFFLFNBQWhCLEVBQTZCLGNBQWMsRUFBRSxJQUFqRCxDQUF3RCxDQUNwRCxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsQ0FBcEIsRUFBdUIsR0FBdkIsQ0FBMkIsTUFBMUMsQ0FBaUQsQ0FBQyxFQUFsRCxDQUFzRCxDQUNsRCxHQUFLLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixDQUFwQixFQUF1QixHQUF2QixDQUEyQixDQUEzQixFQUE4QixJQUE5QixFQUFvQyxVQUFyQyxFQUFxRCxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsQ0FBcEIsRUFBdUIsR0FBdkIsQ0FBMkIsQ0FBM0IsRUFBOEIsS0FBOUIsRUFBcUMsSUFBOUYsQ0FBcUcsQ0FBRTtBQUNsRyxHQUFJLENBQUEsVUFBVSxDQUFHLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixDQUFwQixFQUF1QixHQUF2QixDQUEyQixDQUEzQixFQUE4QixJQUEvQyxDQUNBO0FBRUEsS0FBSyxDQUFDLEdBQU4sQ0FBVSxRQUFRLGNBQVIsQ0FBdUIsVUFBakMsQ0FBNEMsU0FBUyxLQUFULENBQWdCLElBQWhCLENBQXFCLENBQUc7QUFFbEU7QUFDQyxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBcEIsQ0FBMkIsQ0FBQyxFQUE1QixDQUFnQyxDQUM5QixHQUFJLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxJQUFSLEVBQWMsa0JBQWxCLENBQ0EsQ0FDRSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsZ0JBQW5CLENBQXNDLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxLQUE5QyxDQUFxRDtBQUNyRCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsZ0JBQW5CLENBQXNDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixnQkFBekQsQ0FDRCxDQUNELEdBQUksSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLElBQVIsRUFBYyxZQUFsQixDQUFnQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsbUJBQW5CLENBQXlDLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxLQUFqRCxDQUF5RDtBQUMxRixDQUVIO0FBQ0E7QUFFTTtBQUVMLENBakJGLEVBaUJJO0FBQ1I7QUFDSjtBQUNKO0FBRUo7QUFDQSxDQUFDO0FBQ1AsQ0FyQ0ksQ0FxQ0o7QUFFRyxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBVCxFQUF5QixTQUF6QixFQUFzQyxLQUFLLENBQUMsRUFBTixDQUFTLGNBQVQsRUFBeUIsSUFBbkUsQ0FBeUUsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUFULENBQXdCLENBQXhCLENBRXpFLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixRQUFuQixDQUE0QixLQUFLLENBQUMsa0JBQU4sQ0FBeUIsU0FBckQsQ0FDQTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUdTLENBaEdBLENBQVAsQ0FtR0QsRUFDRCxhQUVPLFFBQVMsQ0FBQSxhQUFULEVBQTBCLENBRTdCLEdBQUksQ0FBQSxVQUFVLENBQUcsQ0FBQyxRQUFELENBQVcsV0FBWCxDQUF1QixjQUF2QixDQUFzQyxVQUF0QyxDQUFpRCxjQUFqRCxDQUFnRSxzQkFBaEUsQ0FBdUYsWUFBdkYsQ0FBb0csbUJBQXBHLENBQXdILDJCQUF4SCxDQUFvSixpQkFBcEosQ0FBc0ssa0JBQXRLLENBQXlMLGFBQXpMLENBQXVNLGlCQUF2TSxDQUF5TixxQkFBek4sQ0FDQyxTQUFVLE1BQVYsQ0FBaUIsU0FBakIsQ0FBMkIsWUFBM0IsQ0FBd0MsUUFBeEMsQ0FBaUQsWUFBakQsQ0FBOEQsb0JBQTlELENBQW1GLFVBQW5GLENBQThGLGlCQUE5RixDQUFnSCx5QkFBaEgsQ0FBMEksZUFBMUksQ0FBMEosZ0JBQTFKLENBQTJLLFdBQTNLLENBQXVMLGVBQXZMLENBQXVNLG1CQUF2TSxDQUE0TixDQUk5TyxNQUFNLENBQUMsU0FBUCxDQUFpQixFQUFqQixDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWEsZUFBYixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGlCQUFqQixDQUFtQyxDQUFuQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUFzQixJQUF0QixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGFBQWpCLENBQStCLFdBQVcsQ0FBQyxlQUEzQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUF3QyxLQUF4QyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGlCQUFqQixDQUFtQyxJQUFuQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHNCQUFqQixDQUEwQyxLQUExQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGFBQWpCLENBQStCLEVBQS9CLENBQ0EsTUFBTSxDQUFDLE1BQVAsQ0FBYyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBeEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxNQUFQLEVBQWUsU0FBbkIsQ0FBK0IsTUFBTSxDQUFDLE1BQVAsQ0FBYyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZ0JBQXhDLENBQy9CLEdBQUksTUFBTSxDQUFDLE1BQVAsRUFBZSxTQUFuQixDQUE4QixNQUFNLENBQUMsTUFBUCxDQUFjLENBQWQsQ0FDOUIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsTUFBakIsQ0FBd0IsTUFBTSxDQUFDLE1BQS9CLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBOEIsQ0FBOUIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixDQUFDLFlBQVksQ0FBQyxDQUFkLENBQWdCLGtCQUFrQixDQUFDLElBQW5DLENBQTVCLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLENBQWtDLENBQUMsWUFBWSxDQUFDLENBQWQsQ0FBZ0Isa0JBQWtCLENBQUMsSUFBbkMsQ0FBbEMsQ0FDQTtBQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGtCQUFqQixDQUFvQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTlDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLENBQXFDLElBQXJDLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsRUFBc0IsU0FBMUIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXVCLENBQUMsZ0JBQWdCLENBQUMsT0FBbEIsQ0FBdkIsQ0FDckMsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsZ0JBQXJCLEVBQXVDLFNBQXZDLEVBQW9ELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixnQkFBckIsRUFBdUMsSUFBL0YsQ0FBcUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGdCQUFyQixDQUFzQyxPQUF0QyxDQUNyRyxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixVQUE5QixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQW1CLENBQUMsR0FBRyxDQUFDLElBQUwsQ0FBbkIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixDQUErQixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsbUJBQXBELENBQ0EsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixFQUE4QixTQUFsQyxDQUE2QyxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixDQUE4QixJQUE5QixDQUM3QyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBZCxDQUEwQixNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBMkMsSUFBM0MsQ0FFekIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsU0FBakIsQ0FBNkIsQ0FDNUIsRUFBRSxDQUFFLEdBRHdCLENBRTVCLElBQUksQ0FBRSxNQUZzQixDQUc1QixPQUFPLENBQUUsRUFIbUIsQ0FBN0IsQ0FNSSxNQUFNLENBQUMsU0FBUCxDQUFpQixhQUFqQixDQUFpQyxDQUNwQyxFQUFFLENBQUUsR0FEZ0MsQ0FFcEMsSUFBSSxDQUFFLE1BRjhCLENBR3BDLE9BQU8sQ0FBRSxFQUgyQixDQUFqQyxDQUtGLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUEyQyxDQUN2QztBQUNIO0FBQ0EsY0FBYyxDQUFFLElBSDBCLENBSTFDLGdCQUFnQixDQUFFLElBSndCLENBSzFDLGtCQUFrQixDQUFFLElBTHNCLENBTTFDLFdBQVcsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBTm1CLENBTzVDO0FBQ0M7QUFDQyxlQUFlLENBQUUsSUFUeUIsQ0FVMUMsd0JBQXdCLENBQUUsS0FWZ0IsQ0FXMUMsb0JBQW9CLENBQUUsSUFYb0IsQ0FZMUMsc0JBQXNCLENBQUUsSUFaa0IsQ0FhMUM7QUFDQSxtQkFBbUIsQ0FBRSxDQUFDLEVBQUQsQ0FBSyxFQUFMLENBQVMsRUFBVCxDQUFZLEdBQVosQ0FBZ0IsR0FBaEIsQ0FBb0IsR0FBcEIsQ0FBd0IsSUFBeEIsQ0FBNkIsSUFBN0IsQ0FBa0MsS0FBbEMsQ0FDdEI7QUFmMkMsQ0FBM0MsQ0FrQkwsR0FBSSxDQUFBLGlCQUFpQixDQUFHLENBQ3RCLFVBQVUsQ0FBRSxDQURVLENBRXRCLFFBQVEsQ0FBRSxFQUZZLENBR3RCLElBQUksQ0FBRSxJQUhnQixDQUF4QixDQU9LLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGtCQUFqQixDQUFzQyxDQUN2QztBQUNDLGNBQWMsQ0FBRSxJQUZzQixDQUd0QyxjQUFjLENBQUUsSUFIc0IsQ0FJdEMsZ0JBQWdCLENBQUUsSUFKb0IsQ0FLdEMsa0JBQWtCLENBQUUsS0FMa0IsQ0FNdEMsV0FBVyxDQUFFLEtBTnlCLENBT3RDLHlCQUF5QixDQUFHLENBUFUsQ0FRdEMsc0JBQXNCLENBQUcsQ0FSYSxDQVN0QyxlQUFlLENBQUUsSUFUcUIsQ0FVdEMsd0JBQXdCLENBQUUsSUFWWSxDQVd0QyxvQkFBb0IsQ0FBRSxJQVhnQixDQVl0QyxhQUFhLENBQUUsQ0FadUIsQ0FBdEMsQ0FnQkMsTUFBTSxDQUFDLE1BQVAsQ0FBYyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBeEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxNQUFQLEVBQWUsU0FBbkIsQ0FBK0IsTUFBTSxDQUFDLE1BQVAsQ0FBYyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZ0JBQXhDLENBQy9CLEdBQUksTUFBTSxDQUFDLE1BQVAsRUFBZSxTQUFuQixDQUE4QixNQUFNLENBQUMsTUFBUCxDQUFjLENBQWQsQ0FFOUI7QUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQTZCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdkMsQ0FDQSxNQUFNLENBQUMsYUFBUCxDQUF3QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsWUFBbEQsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUEwQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsU0FBcEQsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixDQUE2QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsV0FBdkQsQ0FDQSxNQUFNLENBQUMsY0FBUCxDQUF3QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZ0JBQWxELENBQ0EsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQWpELENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQWxELENBQ0EsR0FBSyxNQUFNLENBQUMsY0FBUCxFQUF1QixTQUE1QixDQUNBLENBRUUsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsS0FBeEIsQ0FDRCxDQUtDLEdBQUksTUFBTSxDQUFDLGNBQVAsRUFBdUIsU0FBM0IsQ0FDSCxDQUNDLE1BQU0sQ0FBQyxjQUFQLENBQXVCLENBQXZCLENBRUEsQ0FDRCxHQUFJLE1BQU0sQ0FBQyxhQUFQLEVBQXNCLFNBQTFCLENBQ0EsQ0FDQyxNQUFNLENBQUMsYUFBUCxDQUFzQixDQUF0QixDQUVBLENBQ0EsR0FBSSxNQUFNLENBQUMsYUFBUCxFQUFzQixTQUExQixDQUNBLENBQ0UsTUFBTSxDQUFDLGFBQVAsQ0FBc0IsQ0FBdEIsQ0FDRCxDQUVELE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixDQUFvQyxDQUFwQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBVixDQUE0QixDQUE1QixDQUVGLEdBQUksQ0FBQSxVQUFVLENBQUcsQ0FBQyxrQkFBRCxDQUFqQixDQUNBO0FBQ0EsR0FBSSxDQUFBLGdCQUFnQixDQUFHLENBQ2pCLEdBQUcsQ0FBRSxDQUFDLENBQUMsT0FBTyx5QkFBUixDQUFrQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBTixDQUFtQixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFuQyxDQUFELENBQTZDLENBQUMsSUFBSSxDQUFDLGtCQUFOLENBQXlCLEtBQUssQ0FBQyxFQUEvQixDQUE3QyxDQUExQyxDQUFELENBRFksQ0FFakIsT0FBTyxDQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBTixDQUFvQixNQUFNLENBQUMsS0FBM0IsQ0FBRCxDQUZRLENBR2pCLElBQUksQ0FBRSxtQkFIVyxDQUlqQixRQUFRLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUpILENBS2pCLE1BQU0sQ0FBRyxNQUFNLENBQUMsT0FMQyxDQU1qQixhQUFhLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQU5ULENBTWtCO0FBQ25DLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQVBqQixDQU9rQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsY0FQMUQsQ0FPeUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxhQVBoRyxDQU8rRyxNQUFNLENBQUMsVUFQdEgsQ0FBdkIsQ0FTQSxNQUFNLENBQUMsU0FBUCxDQUFpQixhQUFqQixDQUFpQyx5QkFBeUIsQ0FBQyxjQUExQixDQUF5QyxnQkFBekMsQ0FBakMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixPQUFqQixDQUF5QixNQUFNLENBQUMsU0FBUCxDQUFpQixhQUExQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixNQUFNLENBQUMsU0FBUCxDQUFpQixhQUFuQyxDQUdHO0FBQ1Q7QUFDQSxpRkFFUSxHQUFJLENBQUEsbUJBQW1CLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFwQyxDQUNBLEdBQUksQ0FBQSxvQkFBb0IsQ0FBRyxzQkFBc0IsTUFBTSxDQUFDLE1BQTdCLENBQW9DLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixTQUF6RixDQUNBLEdBQUksQ0FBQSxvQkFBSixDQUNBLEdBQUksQ0FBQSx1QkFBdUIsQ0FBRyxRQUExQixDQUFBLHVCQUEwQixDQUFTLElBQVQsQ0FBZSxDQUN6QyxHQUFJLENBQUEsZUFBZSxDQUFHLE9BQU8sQ0FBQyxJQUFSLENBQWEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF2QixDQUF0QixDQUNBLEdBQUksSUFBSSxDQUFDLGVBQUQsQ0FBSixHQUF3QixTQUE1QixDQUNBLENBQ0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQTJCLElBQUksQ0FBQyxlQUFELENBQS9CLENBQ0o7QUFDQSxvQkFBb0IsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQWpDLENBQ0EsR0FBSSxDQUFBLFlBQVksQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsb0JBQXJCLENBQTBDLG9CQUExQyxDQUErRCxXQUEvRCxDQUEyRSx1QkFBM0UsQ0FBbkIsQ0FDQyxDQUNKLENBVEQsQ0FVQSxHQUFJLENBQUEsc0JBQXNCLENBQUcsUUFBekIsQ0FBQSxzQkFBeUIsQ0FBUyxJQUFULENBQWUsQ0FDeEMsR0FBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFYLENBQUosQ0FBd0IsQ0FBeEIsRUFBNkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLENBQXZELEVBQTRELElBQUksQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVgsQ0FBSixHQUEwQixTQUExRixDQUFxRyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBMkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBWCxDQUEvQixDQUVyRyxHQUFJLENBQUEsWUFBWSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixvQkFBckIsQ0FBMEMsb0JBQTFDLENBQStELFdBQS9ELENBQTJFLHVCQUEzRSxDQUFuQixDQUNBO0FBQ0gsQ0FMRCxDQVFBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEdBQTJCLElBQTNCLEVBQW1DLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixHQUEyQixDQUFsRSxDQUNBLENBQ0ksR0FBSSxDQUFBLFdBQVcsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsb0JBQXJCLENBQTBDLG1CQUExQyxDQUE4RCxXQUE5RCxDQUEwRSxzQkFBMUUsQ0FBbEIsQ0FDSCxDQUhELElBR00sQ0FDRixvQkFBb0IsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQWpDLENBQ0EsR0FBSSxDQUFBLFlBQVksQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsb0JBQXJCLENBQTBDLG9CQUExQyxDQUErRCxXQUEvRCxDQUEyRSx1QkFBM0UsQ0FBbkIsQ0FDSCxDQUVELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLEVBQXNCLFNBQTFCLENBQXFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixFQUFyQixDQUdyQyxHQUFJLENBQUEsVUFBVSxDQUFFLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQixNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsQ0FBc0IsZ0JBQXRCLENBQXVDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBakQsQ0FBZ0UsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGNBQWhILENBQStILE1BQU0sQ0FBQyxTQUFQLENBQWlCLEdBQWhKLENBQWhCLENBQ0EsR0FBSSxDQUFBLGNBQWMsQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixJQUF4QyxDQUVBLEdBQUksQ0FBQSxhQUFhLENBQUcsUUFBaEIsQ0FBQSxhQUFnQixDQUFTLElBQVQsQ0FDcEIsQ0FDSSxVQUFVLENBQUMsT0FBWCxDQUFtQixlQUFuQixDQUFxQyxJQUFyQyxDQUNBLFVBQVUsQ0FBQyxPQUFYLENBQW1CLGVBQW5CLENBQW1DLGNBQW5DLEVBQ0gsQ0FKRCxDQU1BLEdBQUksQ0FBQSxvQkFBb0IsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsY0FBckIsQ0FBb0MsY0FBcEMsQ0FBbUQsYUFBbkQsQ0FBM0IsQ0FFQSxHQUFJLENBQUEsV0FBVyxDQUFHLFFBQWQsQ0FBQSxXQUFjLENBQVMsSUFBVCxDQUNsQixDQUNJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLEdBQWpCLENBQXVCLElBQXZCLENBQ0gsQ0FIRCxDQUtBLEdBQUssTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGdCQUFyQixFQUF1QyxTQUF2QyxFQUF3RCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsZ0JBQXJCLEVBQXVDLElBQS9GLEVBQTJHLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixnQkFBckIsRUFBdUMsRUFBdkosQ0FDSSxDQUNJLEdBQUksQ0FBQSxlQUFlLENBQUcsUUFBUSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsZ0JBQW5ELENBQ0EsR0FBSSxDQUFBLGlCQUFpQixDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixrQkFBckIsQ0FBd0MsZ0JBQXhDLENBQXlELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixnQkFBdEcsQ0FDQSxHQUFJLENBQUEsUUFBUSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixpQkFBckIsQ0FBdUMsZUFBdkMsQ0FBdUQsY0FBdkQsQ0FBc0UsV0FBdEUsQ0FBZixDQUNILENBR0YsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBakIsQ0FBa0MsU0FBUyxpQkFBVCxDQUE2QixDQUUvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUssTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLENBQXNDLGlCQUFpQixFQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGlCQUF2QyxDQUE0RCxDQUE1RCxDQUErRCxpQkFBcEcsQ0FFSixDQWJELENBZUwsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQXlDLGFBQXpDLENBQXlELFNBQVUsT0FBVixDQUFtQixDQUMxRTtBQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLENBQTJCLE9BQTNCLENBQ0MsR0FBSSxNQUFNLENBQUMsZ0JBQVgsQ0FBNkIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsT0FBakIsQ0FBeUIsU0FBekIsQ0FBbUMsT0FBbkMsQ0FBMkMsTUFBM0MsQ0FBa0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE1RCxFQUM1QixPQUFPLENBQUMsU0FBUixDQUFrQixFQUFsQixDQUFxQixtQkFBckIsQ0FBeUMsTUFBekMsQ0FBZ0QsU0FBUyxHQUFULENBQWEsQ0FFM0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIscUJBQWpCLENBQXVDLEdBQUcsQ0FBQyxVQUEzQyxDQUNBLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIscUJBQXJCLENBQ0UsQ0FDRSxHQUFJLEdBQUcsQ0FBQyxNQUFKLENBQVcsRUFBWCxFQUFlLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFwQyxDQUNBLENBQ0UsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQTJDLEdBQUcsQ0FBQyxNQUFKLENBQVcsRUFBdEQsQ0FDRCxDQUNGLENBTkgsSUFPRSxDQUNFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUEyQyxDQUEzQyxDQUVELENBQ0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQW9DLFVBQXBDLENBQStDLEVBQS9DLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQW9DLElBQXBDLENBQXlDLEVBQXpDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIsS0FBMUIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixlQUFqQixDQUFrQyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXpCLENBQWlDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUixDQUFrQixlQUFsQixFQUF6QyxDQUFsQyxDQUdBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGFBQWpCLENBQWlDLE9BQU8sQ0FBQyxTQUFSLENBQWtCLGVBQWxCLEVBQWpDLENBRUE7QUFDRix5QkFBeUIsQ0FBQyxPQUExQixDQUFrQyxDQUM1QixHQUFHLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBTixDQUFnQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5DLENBQUQsQ0FBNkMsQ0FBQyxJQUFJLENBQUMsa0JBQU4sQ0FBeUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFoRCxDQUE3QyxDQUNyQyxDQUFDLElBQUksQ0FBQyxtQkFBTixDQUEwQixLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVIsQ0FBa0IsZUFBbEIsRUFBaEMsQ0FEcUMsQ0FDZ0MsQ0FBQyxJQUFJLENBQUMsb0JBQU4sQ0FBMkIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUF5QyxJQUExRSxDQURoQyxDQUF0QyxDQUFELENBRHVCLENBRW1JLFFBQVEsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBRnZKLENBRXNLLGVBQWUsQ0FBQyxNQUFNLENBQUMsYUFGN0wsQ0FBbEMsRUFNQyxDQTdCSCxFQStCRTtBQUNKO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQ1csT0FBTyxDQUFDLFNBQVIsQ0FBa0IsRUFBbEIsQ0FBcUIsd0JBQXJCLENBQThDLE1BQTlDLENBQXFELFNBQVMsR0FBVCxDQUFhLENBRS9ELE1BQU0sQ0FBQyxTQUFQLENBQWlCLGVBQWpCLENBQWtDLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBekIsQ0FBaUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFSLENBQWtCLGVBQWxCLEVBQXpDLENBQWxDLENBRUgsQ0FKQSxFQUtMLENBaERBLENBbURGLEdBQUksQ0FBQSxtQkFBbUIsQ0FBRyxRQUF0QixDQUFBLG1CQUFzQixDQUFTLElBQVQsQ0FDMUIsQ0FDSSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBbUIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUExQixDQUFuQixDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGdCQUFyQixFQUF1QyxPQUEzQyxDQUFvRCxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBb0MsSUFBcEMsRUFBcEQsSUFDSyxJQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixnQkFBckIsRUFBdUMsVUFBM0MsQ0FBdUQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQW9DLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixnQkFBekQsQ0FBMEUsSUFBMUUsRUFBdkQsSUFDQSxDQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHdCQUFqQixDQUEwQyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUEzRCxDQUFvRSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFyRixDQUFrRyxDQUFsRyxDQUFvRyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFySCxFQUVSLENBUEQsQ0FVQTtBQUVBLEdBQUksQ0FBQSxnQkFBZ0IsQ0FBRyxRQUFRLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBekMsQ0FDQSxHQUFJLENBQUEsa0JBQWtCLENBQUcsT0FBTyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsY0FBMUQsQ0FDQSxHQUFJLENBQUEsU0FBUyxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixrQkFBckIsQ0FBd0MsZ0JBQXhDLENBQXlELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixTQUE5RSxDQUF3RixtQkFBeEYsQ0FBaEIsQ0FHQyxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBbUMsU0FBVSxJQUFWLENBQWUsQ0FFNUMsR0FBSSxJQUFJLEVBQUUsU0FBVixDQUFvQixDQUNuQixJQUFJLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBVixDQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBbkIsQ0FBMEIsQ0FBQyxFQUEzQixDQUErQixDQUV2QixHQUFJLGVBQWlCLENBQUEsSUFBSSxDQUFDLENBQUQsQ0FBekIsQ0FDQSxDQUNFLEdBQUksSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLFVBQVosQ0FDQSxDQUNFLEdBQUksSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLFdBQVIsRUFBdUIsVUFBM0IsQ0FDQSxDQUNBLEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsR0FBOUIsQ0FBa0MsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLFFBQVQsQ0FBb0IsQ0FBcEUsRUFBc0UsT0FBdEUsQ0FBOEUsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLGNBQXRGLENBQVYsQ0FDQSxHQUFJLEdBQUcsQ0FBQyxDQUFSLENBQVcsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsSUFBOUIsQ0FBbUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLGNBQWxCLENBQWlDLFNBQVMsQ0FBQyxLQUEzQyxDQUFuQyxFQUNWLENBQ0Q7QUFDQSxHQUFJLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxVQUFSLEVBQW9CLFNBQXhCLENBQ0EsQ0FDSSxHQUFJLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxVQUFSLENBQW1CLGdCQUFuQixFQUFxQyxTQUFyQyxFQUFrRCxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsVUFBUixDQUFtQixnQkFBbkIsRUFBcUMsSUFBM0YsQ0FFQSxDQUNJLEdBQUksSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLFVBQVIsQ0FBbUIsZ0JBQW5CLEVBQXFDLEVBQXpDLENBQ0EsQ0FDSSxHQUFJLENBQUEsa0JBQWUsQ0FBRyxRQUFRLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBeEMsQ0FDQSxHQUFJLENBQUEsb0JBQWlCLENBQUcsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLFdBQVIsQ0FBb0IsZ0JBQXBCLENBQXFDLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxNQUE3QyxDQUFvRCxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsY0FBdEcsQ0FDQSxHQUFJLENBQUEsT0FBTyxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQixvQkFBdEIsQ0FBd0MsSUFBeEMsQ0FBZCxDQUNBLEdBQUksQ0FBQSxXQUFRLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLG9CQUFyQixDQUF1QyxrQkFBdkMsQ0FBdUQsY0FBdkQsQ0FBc0UsbUJBQXRFLENBQWYsQ0FDSCxDQUNKLENBQ0osQ0FFRixDQUVELENBQ0EsR0FBSSxVQUFZLENBQUEsSUFBSSxDQUFDLENBQUQsQ0FBcEIsQ0FDQSxDQUNDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGlCQUFqQixDQUFtQyxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsTUFBM0MsRUFDQSxDQUNSLENBQ0osQ0FFSixDQXhDRixDQTBDQyxNQUFNLENBQUMsU0FBUCxDQUFpQixtQkFBakIsQ0FBcUMsS0FBckMsQ0FHQyxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBc0MsU0FBUyxFQUFULENBQWMsQ0FFN0MsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBakIsRUFBdUMsU0FBM0MsQ0FBc0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLEVBQXRDLENBQ3RELEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsR0FBN0IsQ0FBaUMsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUE3RCxFQUErRCxPQUEvRCxDQUF1RSxFQUF2RSxDQUFWLENBRUEsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFXLENBQ1QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLEVBQXRDLENBQTJDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLENBQTZCLEdBQTdCLEVBQWtDLEVBQTdFLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLElBQXRDLENBQTZDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLENBQTZCLEdBQTdCLEVBQWtDLElBQS9FLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBakIsQ0FBbUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsR0FBN0IsQ0FBbkMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBakIsQ0FBc0MsY0FBdEMsQ0FBdUQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLElBQXRDLENBQTRDLElBQTVDLENBQWlELE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUFzQyxFQUF2RixDQUEyRixHQUFsSixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHNCQUFqQixDQUF3QyxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBekQsQ0FDQyxDQUNYLENBWkMsQ0FjQTtBQUNJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLENBQStCLFVBQVksQ0FFL0IsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixFQUE4QixTQUFsQyxDQUE2QyxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixDQUE2QixFQUE3QixDQUU3QyxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0Esb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLElBQTlDLENBQW1ELFNBQW5ELEVBQThELElBQTlELENBRUQsU0FBUyxJQUFULENBQWUsQ0FFSixNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixDQUErQixJQUFJLENBQUMsSUFBcEMsQ0FDQyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixFQUFtQixJQUF2QixDQUNBLENBQ0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQW9DLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBOUMsRUFDQyxDQUNiLENBVEEsQ0FTQyxTQUFTLEtBQVQsQ0FBZSxDQUNoQixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDQSxDQVhBLEVBWXJCLENBakJTLENBbUJMLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWdDLFNBQVMsSUFBVCxDQUVoQyxDQUNNLFVBQVUsQ0FBRyxJQUFJLENBQUMsUUFBbEIsQ0FDQSxHQUFJLENBQUEsWUFBWSxDQUFDLElBQWpCLENBQ0EsR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixHQUE5QixDQUFrQyxTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsUUFBVCxDQUFvQixDQUFwRSxFQUFzRSxPQUF0RSxDQUE4RSxVQUE5RSxDQUFWLENBRUEsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsTUFBN0MsQ0FBb0QsQ0FBQyxFQUFyRCxDQUNFLENBRUUsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixDQUE5QixFQUFpQyxRQUFqQyxFQUE2QyxVQUFqRCxDQUE2RCxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixDQUE5QixFQUFpQyxTQUFqQyxDQUE2QyxJQUE3QyxDQUM3RCxHQUFJLENBQUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsQ0FBOUIsRUFBaUMsU0FBdEMsQ0FBaUQsWUFBWSxDQUFHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQThCLENBQTlCLEVBQWlDLFNBQWhELENBQ2xELENBRUQsR0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsRUFBd0IsWUFBeEIsRUFBd0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsbUJBQTVELENBQWlGLENBQzNFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixDQUFrQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTVDLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsRUFBc0IsSUFBdEIsRUFBOEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLEVBQXNCLFNBQXhELENBQ0EsQ0FDRSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixnQkFBckIsRUFBdUMsT0FBM0MsQ0FBb0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQW9DLElBQXBDLEVBQXBELElBQ0ssSUFBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsZ0JBQXJCLEVBQXVDLFVBQTNDLENBQXVELE1BQU0sQ0FBQyxTQUFQLENBQWlCLGtCQUFqQixDQUFvQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsZ0JBQXpELENBQTBFLEtBQTFFLEVBQXZELElBQ0EsQ0FBQSxNQUFNLENBQUMsU0FBUCxDQUFpQix3QkFBakIsQ0FBMEMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBM0QsQ0FBb0UsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBckYsQ0FBa0csQ0FBbEcsQ0FBb0csTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBckgsRUFFTixDQUNKLENBQ1YsQ0F4QkQsQ0EwQkEsR0FBSSxNQUFNLENBQUMsU0FBUCxFQUFrQixTQUF0QixDQUFpQyxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUFnQyxFQUFoQyxDQUFqQyxJQUNLLENBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBbUIsQ0FBQyxZQUFZLENBQUcsRUFBaEIsQ0FBbkIsQ0FDTCxHQUFJLENBQUEsVUFBVSxDQUFDLENBQWYsQ0FFQSxHQUFJLENBQUEsaUJBQWlCLENBQUcsUUFBcEIsQ0FBQSxpQkFBb0IsQ0FBUyxJQUFULENBQ3RCLENBQ0ksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBakIsQ0FBZ0MsSUFBaEMsRUFDSCxDQUhILENBS0UsR0FBSSxDQUFBLHdCQUF3QixDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixjQUFyQixDQUFvQyxrQkFBa0IsTUFBTSxDQUFDLGFBQXpCLENBQXVDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixjQUFyRyxDQUFvSCxpQkFBcEgsQ0FBL0IsQ0FJTDtBQUNGO0FBQ0E7QUFDTyxNQUFNLENBQUMsU0FBUCxDQUFpQix3QkFBakIsQ0FBNEMsU0FBVSxnQkFBVixDQUEyQixRQUEzQixDQUFvQyxPQUFwQyxDQUE2QyxDQUd4RixHQUFJLENBQUEsSUFBSSxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDLENBRUEsb0JBQW9CLENBQUMsc0JBQXJCLENBQTRDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEQsQ0FBOEQsUUFBOUQsQ0FBdUUsZ0JBQXZFLENBQXdGLENBQXhGLENBQTBGLE9BQTFGLENBQWtHLElBQWxHLEVBQXdHLElBQXhHLENBQ08sU0FBUyxJQUFULENBQWUsQ0FDTSxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBb0MsSUFBcEMsQ0FBMkMsSUFBSSxDQUFDLElBQWhELENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQW9DLFVBQXBDLENBQWlELElBQUksQ0FBQyxVQUF0RCxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTBCLElBQTFCLENBQ2xCLENBTFYsQ0FLVyxTQUFTLEtBQVQsQ0FBZSxDQUNDLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNOLENBUHJCLEVBUUEsQ0FiRCxDQWdCSjtBQUNIO0FBQ0E7QUFDSyxNQUFNLENBQUMsU0FBUCxDQUFpQixzQkFBakIsQ0FBMEMsU0FBVSxnQkFBVixDQUEyQixRQUEzQixDQUFxQyxDQUc1RSxHQUFJLENBQUEsSUFBSSxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDLENBRUEsb0JBQW9CLENBQUMsMkJBQXJCLENBQWlELGdCQUFqRCxDQUFrRSxDQUFsRSxDQUFvRSxJQUFwRSxDQUF5RSxDQUFDLEVBQUUsQ0FBRSxRQUFMLENBQXpFLEVBQXlGLElBQXpGLENBRVcsU0FBUyxJQUFULENBQWUsQ0FDRSxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBb0MsSUFBcEMsQ0FBMkMsSUFBSSxDQUFDLElBQWhELENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQW9DLFVBQXBDLENBQWlELElBQUksQ0FBQyxVQUF0RCxDQUVoQixDQU5aLENBTWEsU0FBUyxLQUFULENBQWUsQ0FDRCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDTixDQVJyQixFQVNBLENBZEgsQ0FnQkUsTUFBTSxDQUFDLEdBQVAsQ0FBVyxrQkFBa0IsTUFBTSxDQUFDLGFBQXpCLENBQXVDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBNUQsQ0FBMkUsU0FBUyxLQUFULENBQWdCLEtBQWhCLENBQXNCLENBRWpFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWdDLEtBQWhDLEVBRS9CLENBSkQsRUFNSixNQUFNLENBQUMsU0FBUCxDQUFpQixlQUFqQixDQUFtQyxVQUFVLENBQ25DLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixJQUE5QixDQUFvQyxDQUNsQyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBMkIsQ0FBM0IsQ0FDRCxDQUdELG9CQUFvQixDQUFDLCtCQUFyQixDQUFxRCxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQS9ELENBQXVFLE1BQU0sQ0FBQyxjQUE5RSxDQUE2RixNQUFNLENBQUMsYUFBcEcsQ0FBa0gsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUE1SCxDQUF5SSxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQW5KLENBQW1LLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBN0ssQ0FBNEwsTUFBTSxDQUFDLGFBQW5NLENBQWlOLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWxPLENBQTJPLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQTVQLENBQXVRLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUF4UixDQUF5UyxHQUF6UyxDQUE2UyxJQUE3UyxFQUFtVCxJQUFuVCxDQUF3VCxTQUFTLElBQVQsQ0FBZSxDQUVqVCxNQUFNLENBQUMsU0FBUCxDQUFpQix3QkFBakIsQ0FBMkMsSUFBSSxDQUFDLElBQUwsQ0FBVSxrQkFBckQsQ0FFQSxNQUFNLENBQUMsU0FBUCxDQUFpQixzQkFBakIsQ0FBMEMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHdCQUFqQixDQUEwQyxJQUFsRCxDQUF1RCxLQUFLLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEUsQ0FBOEUsWUFBWSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXBHLENBQTRHLGlCQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXZJLENBQXNKLGNBQWMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUE5SyxDQUEyTCxnQkFBZ0IsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsYUFBakIsQ0FBK0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUF6QyxDQUEzTSxDQUFrUSxrQkFBa0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUE5UixDQUExQyxDQUVBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixJQUFJLENBQUMsSUFBTCxDQUFVLE9BQS9CLENBRUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXdDLElBQXhDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFwQyxDQUErQyxVQUEvQyxDQUEwRCxLQUExRCxFQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLElBQTVCLENBQ0Q7QUFDQyxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBbUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUE3QyxFQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLG1CQUFqQixDQUF1QyxJQUF2QyxDQUNBLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsTUFBOUIsQ0FBcUMsQ0FBekMsQ0FDQSxDQUNFLHlCQUF5QixDQUFDLGNBQTFCLENBQXlDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBcEIsQ0FBbUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxhQUF4RCxDQUFzRSxhQUFhLENBQUMsTUFBTSxDQUFDLGFBQTNGLENBQXlHLFlBQVksQ0FBQyxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUF2SSxDQUF6QyxFQUNELENBSEQsSUFLQSxDQUNHLE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBWCxDQUF5QixjQUF6QixDQUF3QyxrQkFBa0IsTUFBTSxDQUFDLGFBQXpCLENBQXVDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixjQUF6RyxDQUF5SCxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXBCLENBQXpILEVBQ0YsQ0FDRCxNQUFNLENBQUMsU0FBUCxDQUFpQixTQUFqQixDQUEyQixPQUEzQixDQUFtQyxNQUFuQyxDQUE2QyxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQXZELENBQ0EsR0FBSSxNQUFNLENBQUMsUUFBUCxFQUFtQixTQUF2QixDQUFrQyxNQUFNLENBQUMsUUFBUCxDQUFnQixFQUFoQixDQUNsQyxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTFCLEVBQTZDLElBQUksQ0FBQyxJQUFMLENBQVUsU0FBdkQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBbUIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUExQixDQUFuQixDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLEVBQWtCLFNBQXRCLENBQWlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixFQUFqQixDQUVwQyxDQTVCbkIsQ0E0Qm9CLFNBQVMsS0FBVCxDQUFlLENBQ2QsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0E5QmhCLEVBZ0NQLENBdkNILENBdUNJO0FBRUosTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQXNDLFVBQVUsQ0FDeEMsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLElBQTlCLENBQW9DLENBQ2hDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUEyQixDQUEzQixDQUNILENBQ0QsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsRUFBbUMsU0FBdkMsQ0FBa0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLENBQW9DLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBOUMsQ0FDbEQsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixFQUEyQixTQUEvQixDQUEwQyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixpQkFBaUIsQ0FBQyxRQUE5QyxDQUUxQyxlQUFlLENBQUMsaUJBQWhCLENBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBNUMsQ0FBb0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUE5RCxDQUE2RSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUE5RixDQUFxRyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUF0SCxDQUErSCxJQUEvSCxFQUFxSSxJQUFySSxDQUVJLFNBQVMsSUFBVCxDQUFlLENBRUssTUFBTSxDQUFDLFNBQVAsQ0FBaUIsd0JBQWpCLENBQTJDLElBQUksQ0FBQyxJQUFMLENBQVUsa0JBQXJELENBRUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQXlDLFVBQXpDLENBQXNELElBQUksQ0FBQyxJQUFMLENBQVUsT0FBaEUsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUEvQixDQUNBLEdBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxXQUFWLEVBQXVCLElBQTNCLENBQ0EsQ0FDSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUEvQixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGFBQWpCLENBQStCLE9BQS9CLENBQXVDLE1BQXZDLENBQWlELElBQUksQ0FBQyxJQUFMLENBQVUsV0FBM0QsQ0FDSCxDQUNELE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUF3QyxJQUF4QyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTBCLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBcEMsQ0FBK0MsVUFBL0MsQ0FBMEQsS0FBMUQsRUFDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixJQUE1QixDQUVBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFNBQWpCLENBQTJCLE9BQTNCLENBQW1DLE1BQW5DLENBQTZDLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBdkQsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxRQUFQLEVBQW1CLFNBQXZCLENBQWtDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEVBQWhCLENBQ2xDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBMUIsRUFBNkMsSUFBSSxDQUFDLElBQUwsQ0FBVSxRQUF2RCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFtQixNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTFCLENBQW5CLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsRUFBa0IsU0FBdEIsQ0FBaUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLEVBQWpCLENBRWpDO0FBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQXlDLElBQXpDLENBQWdELElBQUksQ0FBQyxJQUFMLENBQVUsSUFBMUQsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixnQkFBckIsRUFBdUMsTUFBM0MsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBeUMsSUFBekMsQ0FBZ0QsTUFBTSxDQUFDLG9CQUFQLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsSUFBdEMsQ0FBaEQsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsR0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsQ0FBd0IsS0FBeEIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixzQkFBakIsQ0FBMEMsSUFBMUMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBMkMsS0FBM0MsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLElBQVYsQ0FBZSxJQUEzQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQWdDLElBQUksQ0FBQyxJQUFMLENBQVUsSUFBVixDQUFlLFFBQS9DLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUFWLENBQWUsS0FBM0MsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixDQUE2QixDQUE3QixDQUNBLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsQ0FBNUIsRUFBaUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsRUFBOEIsQ0FBbkUsQ0FBc0UsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsQ0FBN0IsQ0FDdEUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixNQUFNLENBQUMsU0FBUCxDQUFpQixRQUF2RCxDQUE1QixDQUVBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUF5QyxVQUF6QyxDQUFvRCxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFyRSxDQUVsQixDQXhDTixDQXdDTyxTQUFTLEtBQVQsQ0FBZSxDQUNDLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNMLENBMUNsQixFQTRDTCxDQXBESCxDQW9ESTtBQUlOLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUEyQyxVQUFVLENBQ3pDLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixJQUE5QixDQUNBLENBQ0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQTJCLENBQTNCLENBRUQsQ0FDRCxvQkFBb0IsQ0FBQyxlQUFyQixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQS9DLENBQXVELEdBQXZELENBQTJELElBQTNELEVBQWlFLElBQWpFLENBRUUsU0FBUyxJQUFULENBQWUsQ0FFQyxNQUFNLENBQUMsU0FBUCxDQUFpQix3QkFBakIsQ0FBMkMsSUFBSSxDQUFDLElBQUwsQ0FBVSxrQkFBckQsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixTQUFqQixDQUEyQixPQUEzQixDQUFtQyxNQUFuQyxDQUEwQyxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQXBELENBQ0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsc0JBQWpCLENBQTBDLENBQUMsT0FBTyxNQUFNLENBQUMsU0FBUCxDQUFpQix3QkFBakIsQ0FBMEMsSUFBbEQsQ0FBdUQsS0FBSyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRFLENBQThFLFlBQVksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFwRyxDQUE2RyxpQkFBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF4SSxDQUF5SixjQUFjLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBakwsQ0FBOEwsZ0JBQWdCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGFBQWpCLENBQStCLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBekMsQ0FBOU0sQ0FBcVEsa0JBQWtCLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBalMsQ0FBMUMsQ0FHRCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUEvQixDQUVBO0FBQ0EseUJBQXlCLENBQUMsT0FBMUIsQ0FBa0MsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFwQixDQUFvQyxHQUFHLENBQUUsQ0FBQyxDQUFDLE9BQU8sY0FBUixDQUF1QixRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBTixDQUFtQixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFuQyxDQUFELENBQTZDLENBQUMsSUFBSSxDQUFDLGtCQUFOLENBQXlCLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBaEQsQ0FBN0MsQ0FBL0IsQ0FBRCxDQUF6QyxDQUFsQyxFQUVDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUF3QyxJQUF4QyxDQUNBLFFBQVEsQ0FBQyxVQUFXLENBQ1QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsSUFBNUIsQ0FDVixDQUZPLENBQVIsQ0FJQSxHQUFJLE1BQU0sQ0FBQyxRQUFQLEVBQW1CLFNBQXZCLENBQWtDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEVBQWhCLENBQ2xDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBMUIsRUFBNEMsQ0FBQyxFQUFELENBQTVDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQW1CLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBMUIsQ0FBbkIsQ0FDSixDQXRCZixDQXVCRyxTQUFTLEtBQVQsQ0FBZSxDQUNHLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUVMLENBMUJoQixFQTRCUCxDQW5DTCxDQXFDRyxNQUFNLENBQUMsU0FBUCxDQUFpQiw0QkFBakIsQ0FBZ0QsVUFBVSxDQUNqRCxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsSUFBOUIsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUEyQixDQUEzQixDQUVELENBQ0Qsb0JBQW9CLENBQUMsZUFBckIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUEvQyxDQUF1RCxHQUF2RCxDQUEyRCxJQUEzRCxFQUFpRSxJQUFqRSxDQUFzRSxTQUFTLElBQVQsQ0FBZSxDQUU5RSxNQUFNLENBQUMsU0FBUCxDQUFpQixzQkFBakIsQ0FBeUMsSUFBSSxDQUFDLElBQUwsQ0FBVSxrQkFBbkQsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixhQUFqQixDQUErQixPQUEvQixDQUF1QyxNQUF2QyxDQUE4QyxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQXhELENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBL0IsQ0FFQyxRQUFRLENBQUMsVUFBVyxDQUNWLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixDQUFvQyxJQUFwQyxDQUVULENBSE8sQ0FBUixDQUtBLEdBQUksTUFBTSxDQUFDLFlBQVAsRUFBdUIsU0FBM0IsQ0FBc0MsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsRUFBcEIsQ0FFNUMsQ0FkRixDQWNJLFNBQVMsS0FBVCxDQUFlLENBQ1QsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0wsQ0FoQkwsRUFrQlAsQ0F6QkYsQ0E0QkEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsYUFBakIsQ0FBaUMsVUFBVSxDQUNsQyxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsSUFBOUIsQ0FBb0MsQ0FDbEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQTJCLENBQTNCLENBQ0QsQ0FFRCxvQkFBb0IsQ0FBQywrQkFBckIsQ0FBcUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUEvRCxDQUF1RSxNQUFNLENBQUMsY0FBOUUsQ0FBNkYsTUFBTSxDQUFDLGFBQXBHLENBQWtILE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBNUgsQ0FBeUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFuSixDQUFtSyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTdLLENBQTRMLE1BQU0sQ0FBQyxhQUFuTSxDQUFpTixNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFsTyxDQUEyTyxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUE1UCxDQUF1USxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBeFIsQ0FBeVMsR0FBelMsQ0FBNlMsSUFBN1MsRUFBbVQsSUFBblQsQ0FBd1QsU0FBUyxJQUFULENBQWUsQ0FFalQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsc0JBQWpCLENBQXlDLElBQUksQ0FBQyxJQUFMLENBQVUsa0JBQW5ELENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBL0IsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixhQUFqQixDQUErQixPQUEvQixDQUF1QyxNQUF2QyxDQUFpRCxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQTNELENBRUEsTUFBTSxDQUFDLFlBQVAsQ0FBdUIsSUFBSSxDQUFDLElBQUwsQ0FBVSxTQUFqQyxDQUNBLEdBQUksTUFBTSxDQUFDLFlBQVAsRUFBdUIsU0FBM0IsQ0FBc0MsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsRUFBcEIsQ0FFdEMsUUFBUSxDQUFDLFVBQVcsQ0FDYixNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsQ0FBb0MsSUFBcEMsQ0FFTixDQUhPLENBQVIsQ0FLSCxDQWZuQixDQWVvQixTQUFTLEtBQVQsQ0FBZSxDQUNkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNMLENBakJoQixFQW1CUCxDQXpCRixDQXlCRztBQUVILE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWtDLFNBQVMsS0FBVCxDQUFlLENBQzlDLEdBQUksQ0FBQSxLQUFKLENBQ0EsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsRUFBb0MsS0FBeEMsQ0FDQSxDQUNJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGlCQUFqQixDQUFtQyxLQUFuQyxDQUNBLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBeUMsSUFBekMsQ0FBOEMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQS9ELEVBQWtGLENBQWxGLENBQU4sQ0FDSCxDQUpELElBTUEsQ0FDSSxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBbUMsSUFBbkMsQ0FDQSxLQUFLLENBQUcsSUFBUixDQUNILENBQ0Q7QUFDQyx5QkFBeUIsQ0FBQyxPQUExQixDQUFrQyxDQUN6QixHQUFHLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBTixDQUFnQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5DLENBQUQsQ0FBNkMsQ0FBQyxJQUFJLENBQUMsa0JBQU4sQ0FBeUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFoRCxDQUE3QyxDQUNyQyxDQUFDLElBQUksQ0FBQyxtQkFBTixDQUEwQixLQUFLLENBQUMsS0FBaEMsQ0FEcUMsQ0FDRSxDQUFDLElBQUksQ0FBQyxvQkFBTixDQUEyQixLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQXlDLElBQTFFLENBREYsQ0FBdEMsQ0FBRCxDQURvQixDQUV3RyxRQUFRLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUY1SCxDQUUySSxlQUFlLENBQUMsTUFBTSxDQUFDLGFBRmxLLENBQWxDLEVBSUgsQ0FqQkQsQ0FtQkYsTUFBTSxDQUFDLFNBQVAsQ0FBaUIscUJBQWpCLENBQXlDLEtBQXpDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQTJDLENBQTNDLENBRUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLENBQW1DLFVBQVcsQ0FDMUMsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsRUFBcUIsSUFBekIsQ0FDQSxDQUNHLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsT0FBakIsRUFBMEIsU0FBOUIsQ0FDQSxDQUNDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLENBQXlCLFNBQXpCLENBQW1DLE9BQW5DLENBQTJDLE1BQTNDLENBQWtELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBNUQsRUFDQSxDQUhELElBS0EsQ0FDQyxNQUFNLENBQUMsZ0JBQVAsQ0FBd0IsSUFBeEIsQ0FDQSxDQUNILENBQ0osQ0FaRCxDQWFFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGVBQWpCLENBQW1DLFVBQVksQ0FFN0MsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUEyQyxJQUEzQyxDQUNBLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsRUFBMkIsU0FBL0IsQ0FBMEMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsaUJBQWlCLENBQUMsUUFBOUMsQ0FDMUMsb0JBQW9CLENBQUMsZUFBckIsQ0FBcUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQXRELENBQXVFLE1BQU0sQ0FBQyxNQUE5RSxDQUFxRixNQUFNLENBQUMsU0FBUCxDQUFpQixRQUF0RyxDQUErRyxJQUEvRyxFQUFxSCxJQUFySCxDQUEwSCxTQUFTLElBQVQsQ0FBZSxDQUU1RyxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBeUMsSUFBekMsQ0FBZ0QsSUFBSSxDQUFDLElBQXJELENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQXlDLFVBQXpDLENBQXNELElBQUksQ0FBQyxVQUEzRCxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixHQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUF3QixLQUF4QixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHNCQUFqQixDQUEwQyxJQUExQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUEyQyxLQUEzQyxDQUVILENBVDFCLENBUzJCLFNBQVMsS0FBVCxDQUFlLENBQ2YsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQTJDLEtBQTNDLENBQ0wsQ0FadEIsRUFhQyxDQWxCSCxDQW9CRjtBQUNBO0FBQ0E7QUFFTSxNQUFNLENBQUMsU0FBUCxDQUFpQixhQUFqQixDQUFpQyxVQUFVLENBRXZDLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FFQSxvQkFBb0IsQ0FBQyxhQUFyQixDQUFtQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTdDLENBQXFELElBQXJELEVBQTJELElBQTNELENBQWdFLFNBQVMsSUFBVCxDQUFlLENBRTNELE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUF1QyxJQUFJLENBQUMsSUFBNUMsQ0FFRCxDQUpuQixDQUlvQixTQUFTLEtBQVQsQ0FBZSxDQUNkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUVMLENBUGhCLEVBU0gsQ0FiRCxDQWdCQSxNQUFNLENBQUMsTUFBUCxDQUFjLGVBQWQsQ0FBOEIsU0FBUyxRQUFULENBQWtCLFFBQWxCLENBQTJCLENBQ2pELEdBQUksUUFBUSxFQUFFLFFBQWQsQ0FDQSxDQUNDO0FBQ0EsR0FBSSxDQUFBLGNBQUosQ0FBbUIsZ0JBQW5CLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQWQsQ0FDQSxDQUNDLGdCQUFnQixDQUFHLFFBQW5CLENBQ0EsY0FBYyxDQUFDLEVBQWYsQ0FDQSxDQUpELElBTUEsQ0FDQyxnQkFBZ0IsQ0FBRyxFQUFuQixDQUNBLGNBQWMsQ0FBQyxRQUFmLENBQ0EsQ0FFRCxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIsY0FBekIsQ0FBd0MsY0FBeEMsQ0FBd0QsUUFBeEQsRUFFQyx5QkFBeUIsQ0FBQyxPQUExQixDQUFrQyxDQUNsQyxHQUFHLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBTixDQUFnQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5DLENBQUQsQ0FBNkMsQ0FBQyxJQUFJLENBQUMsa0JBQU4sQ0FBeUIsS0FBSyxDQUFDLGNBQS9CLENBQTdDLENBQ3ZDLENBQUMsSUFBSSxDQUFDLG1CQUFOLENBQTBCLEtBQUssQ0FBQyxnQkFBaEMsQ0FEdUMsQ0FDVyxDQUFDLElBQUksQ0FBQyxvQkFBTixDQUEyQixLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBbEQsQ0FEWCxDQUF0QyxDQUFELENBRDZCLENBRXdGLFFBQVEsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBRjVHLENBRTJILGVBQWUsQ0FBQyxNQUFNLENBQUMsYUFGbEosQ0FBbEMsRUFJRCxDQUNaLENBdkJHLEVBMEJIO0FBQ0Q7QUFDQTtBQUNBLEdBQUksQ0FBQSwwQkFBMEIsQ0FBQyxRQUEzQixDQUFBLDBCQUEyQixDQUFTLElBQVQsQ0FDekIsQ0FDSSxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBb0MsSUFBcEMsRUFDSCxDQUhQLENBSUUsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsU0FBUyxLQUFULENBQ3hCLENBQ0ksR0FBSSxDQUFBLElBQUksQ0FBQyxFQUFULENBQ0EsR0FBSSxDQUFBLE1BQUosQ0FDQSxHQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUF4QixHQUFtQyxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsTUFBakIsQ0FBd0IsQ0FBL0QsQ0FBa0UsTUFBTSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixDQUFqQixDQUFULENBQWxFLElBQ0ssQ0FBQSxNQUFNLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFuQixDQUNMLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFyQixDQUE0QixDQUFDLEVBQTdCLENBQ0EsQ0FDSSxJQUFLLEdBQUksQ0FBQSxHQUFULEdBQWdCLENBQUEsTUFBaEIsQ0FBd0IsQ0FFcEIsR0FBSSxNQUFNLENBQUMsR0FBRCxDQUFOLEVBQWEsU0FBakIsQ0FDQSxDQUNJLEdBQUksR0FBRyxHQUFJLENBQUEsS0FBSyxDQUFDLENBQUQsQ0FBaEIsQ0FDQSxDQUNJLEdBQUksS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTLEdBQVQsR0FBZSxNQUFNLENBQUMsR0FBRCxDQUFOLENBQVksRUFBM0IsRUFBaUMsTUFBTSxDQUFDLEdBQUQsQ0FBTixFQUFhLElBQTlDLEVBQXNELE1BQU0sQ0FBQyxHQUFELENBQU4sRUFBYSxTQUFuRSxFQUFnRixLQUFLLENBQUMsQ0FBRCxDQUFMLENBQVMsR0FBVCxHQUFlLFNBQW5HLENBQStHLElBQUksQ0FBQyxJQUFMLENBQVUsS0FBSyxDQUFDLENBQUQsQ0FBZixFQUNsSCxDQUhELElBR00sSUFBSSxHQUFHLEdBQUksQ0FBQSxLQUFLLENBQUMsQ0FBRCxDQUFoQixDQUNOLENBQ0ksR0FBSSxLQUFLLENBQUMsQ0FBRCxDQUFMLENBQVMsR0FBVCxHQUFlLE1BQU0sQ0FBQyxHQUFELENBQXJCLEVBQThCLE1BQU0sQ0FBQyxHQUFELENBQU4sRUFBYSxJQUEzQyxFQUFtRCxNQUFNLENBQUMsR0FBRCxDQUFOLEVBQWEsU0FBaEUsRUFBNkUsS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTLEdBQVQsR0FBZSxTQUFoRyxDQUE0RyxJQUFJLENBQUMsSUFBTCxDQUFVLEtBQUssQ0FBQyxDQUFELENBQWYsRUFDL0csQ0FISyxJQUdBLENBQUEsSUFBSSxDQUFDLElBQUwsQ0FBVSxLQUFLLENBQUMsQ0FBRCxDQUFmLEVBQ1QsQ0FURCxJQVNNLENBQUEsSUFBSSxDQUFDLElBQUwsQ0FBVSxLQUFLLENBQUMsQ0FBRCxDQUFmLEVBQ1QsQ0FHSixDQUNELE1BQU8sQ0FBQSxJQUFQLENBRUgsQ0ExQkQsQ0EyQkEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQXNDLFNBQVMsU0FBVCxDQUFtQixnQkFBbkIsQ0FDdEMsQ0FDWSxHQUFJLFNBQVMsRUFBRSxTQUFmLENBQTBCLFNBQVMsQ0FBQyxJQUFWLENBQzFCLEdBQUksZ0JBQWdCLEVBQUUsU0FBdEIsQ0FBaUMsZ0JBQWdCLENBQUMsS0FBakIsQ0FDakMsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQWdDLElBQWhDLENBQ0Esb0JBQW9CLENBQUMsc0JBQXJCLENBQTRDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEQsQ0FBOEQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF4RSxDQUF1RixJQUF2RixDQUE0RixTQUE1RixDQUFzRywwQkFBdEcsRUFBa0ksSUFBbEksQ0FBdUksU0FBUyxJQUFULENBQWUsQ0FFbEosR0FBSSxnQkFBSixDQUFzQixNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUFnQyxNQUFNLENBQUMsY0FBUCxDQUFzQixJQUFJLENBQUMsSUFBM0IsQ0FBaEMsQ0FBdEIsSUFDSyxDQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQWdDLElBQUksQ0FBQyxJQUFyQyxDQUNMLFFBQVEsQ0FBQyxVQUFVLENBRWYsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixHQUFqQixFQUFzQixTQUExQixDQUNBLENBQ0EsR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixHQUE5QixDQUFrQyxTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsRUFBVCxDQUFjLENBQTlELEVBQWdFLE9BQWhFLENBQXdFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLEdBQWpCLENBQXFCLEVBQTdGLENBQVYsQ0FFSSxHQUFJLEdBQUcsQ0FBQyxDQUFSLENBQVUsQ0FDTixNQUFNLENBQUMsU0FBUCxDQUFpQixHQUFqQixDQUF1QixJQUF2QixDQUNILENBQ0osQ0FQRCxJQVNBLENBQ0ksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsR0FBakIsQ0FBdUIsSUFBdkIsQ0FDSCxDQUNKLENBZE8sQ0FBUixDQWdCSCxDQXBCRCxDQW9CRSxTQUFTLEtBQVQsQ0FBZSxDQUNiLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNILENBdEJELEVBeUJYLENBL0JELENBaUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLG1CQUFqQixDQUF1QyxVQUN2QyxDQUNJLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGdCQUFyQixFQUF1QyxVQUEzQyxDQUNBLENBQ0csTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLEdBQ0YsQ0FIRCxJQUlBLENBQ0ksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLENBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBNUMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBb0MsSUFBcEMsRUFDSCxDQUNKLENBVkQsQ0FZUCxNQUFNLENBQUMsb0JBQVAsQ0FBOEIsU0FBUyxJQUFULENBQzNCLENBQ0ksR0FBSSxDQUFBLE9BQU8sQ0FBRyxFQUFkLENBQ0EsR0FBSSxDQUFBLFVBQVUsQ0FBRyxFQUFqQixDQUNBLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFwQixDQUEyQixDQUFDLEVBQTVCLENBQ0EsQ0FFQSxVQUFVLENBQUMsSUFBWCxDQUFnQixJQUFJLENBQUMsQ0FBRCxDQUFwQixFQUNBLE9BQU8sQ0FBQyxJQUFSLENBQWEsVUFBYixFQUVBLFVBQVUsQ0FBRyxFQUFiLENBQ0MsQ0FDRCxNQUFPLENBQUEsT0FBUCxDQUNILENBYkosQ0FjSztBQUNBO0FBQ0E7QUFDRixNQUFNLENBQUMsU0FBUCxDQUFpQix3QkFBakIsQ0FBNEMsU0FBVSxPQUFWLENBQWtCLE9BQWxCLENBQTBCLE9BQTFCLENBQWtDLFFBQWxDLENBQTRDLENBR3BGLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHNCQUFqQixDQUEwQyxLQUExQyxDQUNBLEdBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixRQUF0QyxFQUFnRCxPQUFwRCxDQUNBLENBQ0UsT0FBTyxDQUFHLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsUUFBdEMsQ0FBVixDQUNELENBRUEsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUVBLEdBQUksUUFBUSxFQUFFLFNBQWQsQ0FFQSxDQUNDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTRCLGlCQUFpQixDQUFDLFFBQTlDLENBQ0EsUUFBUSxDQUFFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQTNCLENBQ0EsQ0FDRCxNQUFNLENBQUMsU0FBUCxDQUFpQixhQUFqQixDQUErQixNQUEvQixDQUFzQyxDQUF0QyxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLEdBQTlCLENBQ0EsQ0FDRSxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBMkMsSUFBM0MsQ0FFRCxvQkFBb0IsQ0FBQyw4QkFBckIsQ0FBb0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQXJFLENBQXNGLE9BQXRGLENBQThGLE9BQTlGLENBQXNHLE9BQXRHLENBQThHLFFBQTlHLENBQXVILElBQXZILENBQTRILE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBdEksQ0FBOEksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsU0FBakIsQ0FBMkIsT0FBM0IsQ0FBbUMsTUFBakwsRUFBeUwsSUFBekwsQ0FBOEwsU0FBUyxJQUFULENBQWUsQ0FHbkwsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQXlDLElBQXpDLENBQWdELElBQUksQ0FBQyxJQUFyRCxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGdCQUFyQixFQUF1QyxNQUEzQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUF5QyxJQUF6QyxDQUFnRCxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsSUFBSSxDQUFDLElBQWpDLENBQWhELENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLEdBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLENBQXdCLEtBQXhCLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsc0JBQWpCLENBQTBDLElBQTFDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQTJDLEtBQTNDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUF0QyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQWdDLElBQUksQ0FBQyxJQUFMLENBQVUsUUFBMUMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLEtBQXRDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsT0FBN0IsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLENBQTVCLEVBQWlDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLEVBQThCLENBQW5FLENBQXNFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLENBQTZCLENBQTdCLENBQ3RFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsUUFBdEMsQ0FBNUIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixRQUE1QixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUF5QyxVQUF6QyxDQUFvRCxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFyRSxDQUVBLHlCQUF5QixDQUFDLE9BQTFCLENBQWtDLENBQ2xDLEdBQUcsQ0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUFOLENBQWdDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQU4sQ0FBbUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBbkMsQ0FBRCxDQUE2QyxDQUFDLElBQUksQ0FBQyxrQkFBTixDQUF5QixLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWhELENBQTdDLENBQzNDLENBQUMsSUFBSSxDQUFDLG1CQUFOLENBQTBCLEtBQUssQ0FBRSxJQUFqQyxDQUQyQyxDQUNKLENBQUMsSUFBSSxDQUFDLG9CQUFOLENBQTJCLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBeUMsSUFBMUUsQ0FESSxDQUF0QyxDQUFELENBRDZCLENBRXlGLFFBQVEsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBRjdHLENBRTRILGVBQWUsQ0FBQyxNQUFNLENBQUMsYUFGbkosQ0FBbEMsRUFJQSxVQUFVLENBQUMsVUFBWCxDQUFzQixZQUFZLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBdEIsQ0FBcUMsV0FBM0QsQ0FBdUUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQXlDLElBQWhILEVBR0QsQ0ExQnpCLENBMEIwQixTQUFTLEtBQVQsQ0FBZSxDQUNmLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUEyQyxLQUEzQyxDQUNOLENBN0JwQixFQThCQSxDQWxDRCxJQW1DSyxJQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixHQUE5QixDQUNMLENBQ0MsR0FBSSxDQUFBLGFBQWEsQ0FBQyxDQUFsQixDQUNBLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsRUFBMkIsR0FBL0IsQ0FBb0MsYUFBYSxDQUFHLE1BQU0sQ0FBQyxjQUF2QixDQUFwQyxJQUNLLENBQUEsYUFBYSxDQUFHLE1BQU0sQ0FBQyxhQUF2QixDQUNKLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUEyQyxJQUEzQyxDQUNELG9CQUFvQixDQUFDLDRCQUFyQixDQUFrRCxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBbkUsQ0FBb0YsT0FBcEYsQ0FBNEYsT0FBNUYsQ0FBb0csT0FBcEcsQ0FBNEcsUUFBNUcsQ0FBcUgsSUFBckgsQ0FBMEgsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFwSSxDQUFtSixhQUFuSixDQUFpSyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFsTCxFQUE0TCxJQUE1TCxDQUFpTSxTQUFTLElBQVQsQ0FBZSxDQUV0TCxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBeUMsSUFBekMsQ0FBZ0QsSUFBSSxDQUFDLElBQXJELENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLEdBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLENBQXdCLEtBQXhCLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsc0JBQWpCLENBQTBDLElBQTFDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQTJDLEtBQTNDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUF0QyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQWdDLElBQUksQ0FBQyxJQUFMLENBQVUsUUFBMUMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLEtBQXRDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsT0FBN0IsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLFFBQXRDLENBQTVCLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsUUFBNUIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBeUMsVUFBekMsQ0FBb0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBckUsQ0FFQSx5QkFBeUIsQ0FBQyxPQUExQixDQUFrQyxDQUNsQyxHQUFHLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFOLENBQXFCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQU4sQ0FBbUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBbkMsQ0FBRCxDQUE2QyxDQUFDLElBQUksQ0FBQyxrQkFBTixDQUF5QixLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWhELENBQTdDLENBQ2hDLENBQUMsSUFBSSxDQUFDLG1CQUFOLENBQTBCLEtBQUssQ0FBRSxJQUFqQyxDQURnQyxDQUNPLENBQUMsSUFBSSxDQUFDLG9CQUFOLENBQTJCLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBeUMsSUFBMUUsQ0FEUCxDQUEzQixDQUFELENBRDZCLENBRXlGLFFBQVEsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBRjdHLENBRTRILGVBQWUsQ0FBQyxNQUFNLENBQUMsYUFGbkosQ0FBbEMsRUFJQSxVQUFVLENBQUMsVUFBWCxDQUFzQixZQUFZLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBdEIsQ0FBcUMsV0FBM0QsQ0FBdUUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQXlDLElBQWhILEVBR0QsQ0F0QnpCLENBc0IwQixTQUFTLEtBQVQsQ0FBZSxDQUNmLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUEyQyxLQUEzQyxDQUNOLENBekJwQixFQTJCQSxDQUNELENBdkZMLENBMEZBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLENBQStCLFVBQVUsQ0FDckMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsd0JBQWpCLENBQTBDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQTNELENBQW9FLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQXJGLENBQWtHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQW5ILENBQStILE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWhKLEVBQ0UsQ0FGTixDQUlEO0FBQ0Y7QUFDQTtBQUNDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGtCQUFqQixDQUFzQyxTQUFVLE9BQVYsQ0FBbUIsQ0FDdEQsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUNBLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLEVBQW1DLFNBQXZDLENBQWtELE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixDQUFvQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTlDLENBRWxELEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLEVBQW1DLFNBQW5DLEVBQWdELE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixFQUFtQyxJQUF2RixDQUNBLENBQ00sTUFBTSxDQUFHLE1BQU0sQ0FBQyxNQUFoQixDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLFNBQTFCLEVBQXVDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixJQUFqRSxFQUF5RSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsQ0FBdkcsQ0FDQSxDQUNHLEdBQUksQ0FBQSxNQUFNLENBQUcsQ0FBYixDQUNGLENBQ04sTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQTJDLElBQTNDLENBRUQsb0JBQW9CLENBQUMsa0JBQXJCLENBQXdDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUF6RCxDQUEwRSxNQUExRSxDQUFpRixNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFsRyxDQUEyRyxJQUEzRyxFQUFpSCxJQUFqSCxDQUFzSCxTQUFTLElBQVQsQ0FBZSxDQUUxSCxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBeUMsVUFBekMsQ0FBc0QsSUFBSSxDQUFDLElBQTNELENBQ0EsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixFQUE4QixTQUFsQyxDQUE2QyxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixDQUE2QixDQUE3QixDQUM3QyxHQUFJLE9BQU8sRUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUF2QixDQUF1QyxNQUFNLENBQUMsU0FBUCxDQUFpQix3QkFBakIsQ0FBMEMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBM0QsQ0FBb0UsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBckYsQ0FBa0csQ0FBbEcsQ0FBb0csTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBckgsRUFBdkMsSUFFQSxDQUNNLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixHQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUF3QixLQUF4QixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHNCQUFqQixDQUEwQyxJQUExQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUEyQyxLQUEzQyxDQUNMLENBQ0MsQ0FaYixDQVljLFNBQVMsS0FBVCxDQUFlLENBQ0UsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQTJDLEtBQTNDLENBQ04sQ0FmekIsRUFpQkMsQ0FDSCxDQS9CRCxDQWlDRyxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBMkMsVUFBWSxDQUVoRCxNQUFNLENBQUMsTUFBUCxDQUFnQixFQUFoQixDQUNBLEdBQUksQ0FBQSxJQUFJLENBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUMsQ0FHRixHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixFQUFtQyxJQUF2QyxDQUE2QyxDQUMzQyxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsQ0FBb0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUE5QyxDQUNELENBQ0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQTJDLElBQTNDLENBRUQsb0JBQW9CLENBQUMsdUJBQXJCLENBQTZDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUE5RCxDQUErRSxNQUFNLENBQUMsTUFBdEYsQ0FBNkYsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBOUcsQ0FBdUgsSUFBdkgsQ0FBNEgsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsU0FBakIsQ0FBMkIsSUFBdkosRUFBNkosSUFBN0osQ0FBa0ssU0FBUyxJQUFULENBQWUsQ0FBQztBQUVsSyxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBeUMsSUFBekMsQ0FBZ0QsSUFBSSxDQUFDLElBQXJELENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQXlDLFVBQXpDLENBQXNELElBQUksQ0FBQyxVQUEzRCxDQUVFLFFBQVEsQ0FBQyxVQUFVLENBQ2pCLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUF3QixLQUF4QixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHNCQUFqQixDQUEwQyxJQUExQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUEyQyxLQUEzQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixHQUNELENBTE8sQ0FBUixDQVFELENBYmpCLENBYWtCLFNBQVMsS0FBVCxDQUFlLENBQ25CLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUEyQyxLQUEzQyxDQUNGLENBaEJaLEVBaUJBLENBNUJKLENBOEJFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTRCLFNBQVMsSUFBVCxDQUFjLElBQWQsQ0FBbUIsS0FBbkIsQ0FBeUIsR0FBekIsQ0FDM0IsQ0FDQyxlQUFlLENBQUMsUUFBaEIsQ0FBeUIsSUFBekIsQ0FBOEIsSUFBOUIsQ0FBbUMsS0FBbkMsRUFDRyxHQUFJLEdBQUosQ0FBUyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixHQUE1QixDQUFnQyxNQUFoQyxFQUNaLENBSkYsQ0FNRyxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBc0MsVUFDeEMsQ0FDQyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBZCxDQUE4QixNQUFNLENBQUMsU0FBUCxDQUFpQixlQUFqQixHQUM5QixDQUhDLENBT04sTUFBTSxDQUFDLFNBQVAsQ0FBaUIscUJBQWpCLENBQTBDLFNBQVMsUUFBVCxDQUMxQyxDQUNFLEdBQUksQ0FBQSxTQUFTLENBQUcseUJBQXlCLENBQUMsZUFBMUIsQ0FBMEMsTUFBTSxDQUFDLGFBQWpELENBQWhCLENBQ00sR0FBSSxDQUFBLFNBQVMsQ0FBQyxDQUFkLENBQWdCLGVBQWUsQ0FBQyxDQUFoQyxDQUNBLEdBQUksQ0FBQSxNQUFKLENBQ0EsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQXpCLENBQWdDLENBQUMsRUFBakMsQ0FDQSxDQUNJLEdBQUksU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLEdBQWIsRUFBa0IsU0FBbEIsRUFBK0IsU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLEdBQWIsRUFBa0IsSUFBckQsQ0FDQSxDQUNBLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFELENBQVQsQ0FBYSxHQUFiLENBQWlCLE1BQWhDLENBQXVDLENBQUMsRUFBeEMsQ0FDQSxDQUNFLEdBQUksU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLEdBQWIsQ0FBaUIsQ0FBakIsRUFBb0IsSUFBcEIsRUFBMEIsUUFBOUIsQ0FDQSxDQUNFLEdBQUksU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLEdBQWIsQ0FBaUIsQ0FBakIsRUFBb0IsS0FBcEIsRUFBMkIsU0FBM0IsRUFBd0MsU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLEdBQWIsQ0FBaUIsQ0FBakIsRUFBb0IsS0FBcEIsRUFBMkIsSUFBdkUsQ0FDQSxDQUNFO0FBRUEsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLEdBQWIsQ0FBaUIsQ0FBakIsRUFBb0IsS0FBcEIsQ0FBMEIsTUFBekMsQ0FBZ0QsQ0FBQyxFQUFqRCxDQUNBLENBQ0MsR0FBSSxTQUFTLENBQUMsQ0FBRCxDQUFULENBQWEsR0FBYixDQUFpQixDQUFqQixFQUFvQixLQUFwQixDQUEwQixDQUExQixFQUE2QixJQUE3QixFQUFtQyxZQUFuQyxFQUFtRCxTQUFTLENBQUMsQ0FBRCxDQUFULENBQWEsR0FBYixDQUFpQixDQUFqQixFQUFvQixLQUFwQixDQUEwQixDQUExQixFQUE2QixLQUE3QixFQUFvQyxTQUEzRixDQUFzRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLEdBQWIsQ0FBaUIsQ0FBakIsRUFBb0IsS0FBcEIsQ0FBMEIsQ0FBMUIsRUFBNkIsS0FBdkMsQ0FDdEcsR0FBSSxTQUFTLENBQUMsQ0FBRCxDQUFULENBQWEsR0FBYixDQUFpQixDQUFqQixFQUFvQixLQUFwQixDQUEwQixDQUExQixFQUE2QixJQUE3QixFQUFtQyxrQkFBbkMsRUFBeUQsU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLEdBQWIsQ0FBaUIsQ0FBakIsRUFBb0IsS0FBcEIsQ0FBMEIsQ0FBMUIsRUFBNkIsS0FBN0IsRUFBb0MsU0FBakcsQ0FDQSxDQUNLLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBRCxDQUFULENBQWEsR0FBYixDQUFpQixDQUFqQixFQUFvQixLQUFwQixDQUEwQixDQUExQixFQUE2QixLQUE3QyxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGdCQUFyQixFQUF5QyxVQUF6QyxFQUF1RCxTQUFTLEVBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUE1RSxFQUF1RixDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBdEcsQ0FDQSxDQUVJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLEdBQWpCLENBQXVCLFNBQVMsQ0FBQyxDQUFELENBQVQsQ0FBYSxHQUFiLENBQWlCLENBQWpCLEVBQW9CLEtBQXBCLENBQTBCLENBQTFCLEVBQTZCLEtBQXBELENBQ0EsTUFBTSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBWCxDQUF5QixjQUF6QixDQUF3QyxjQUF4QyxDQUF3RCxNQUFNLENBQUMsU0FBUCxDQUFpQixHQUF6RSxDQUFULENBQ0gsQ0FDTCxDQUNELEdBQUksU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLEdBQWIsQ0FBaUIsQ0FBakIsRUFBb0IsS0FBcEIsQ0FBMEIsQ0FBMUIsRUFBNkIsSUFBN0IsRUFBbUMsbUJBQW5DLEVBQTBELFNBQVMsQ0FBQyxDQUFELENBQVQsQ0FBYSxHQUFiLENBQWlCLENBQWpCLEVBQW9CLEtBQXBCLENBQTBCLENBQTFCLEVBQTZCLEtBQTdCLEVBQW9DLFNBQWxHLENBQ0EsQ0FDSyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLEdBQWIsQ0FBaUIsQ0FBakIsRUFBb0IsS0FBcEIsQ0FBMEIsQ0FBMUIsRUFBNkIsS0FBN0MsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixnQkFBckIsRUFBeUMsVUFBekMsRUFBdUQsU0FBUyxFQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBNUUsRUFBdUYsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFyRyxDQUNBLENBRUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsR0FBakIsQ0FBdUIsU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLEdBQWIsQ0FBaUIsQ0FBakIsRUFBb0IsS0FBcEIsQ0FBMEIsQ0FBMUIsRUFBNkIsS0FBcEQsQ0FDQSxNQUFNLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLGNBQXpCLENBQXdDLGNBQXhDLENBQXdELE1BQU0sQ0FBQyxTQUFQLENBQWlCLEdBQXpFLENBQVQsQ0FDSCxDQUNMLENBRUQsQ0FHRixDQUVGLENBRUEsQ0FDRixDQUNKLENBQ1QsTUFBTyxDQUFDLFlBQVksU0FBYixDQUF1QixrQkFBa0IsZUFBekMsQ0FBUCxDQUNDLENBcERELENBd0RGLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixDQUFrQyxNQUFNLENBQUMsU0FBUCxDQUFpQixxQkFBakIsQ0FBdUMseUJBQXZDLENBQWxDLENBR0ssTUFBTSxDQUFDLFNBQVAsQ0FBaUIsYUFBakIsQ0FBZ0MsVUFBVyxDQUMzQyxHQUFJLENBQUEsS0FBSyxDQUFHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLENBQXlCLFNBQXpCLENBQW1DLElBQW5DLEVBQVosQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBc0IsS0FBdEIsQ0FDQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0Qix3Q0FBNUIsQ0FBcUUsTUFBckUsRUFFRixDQUxFLENBT1MsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsRUFBbUIsSUFBbkIsRUFBNEIsQ0FBQyxNQUFNLENBQUMsY0FBcEMsRUFBc0QsQ0FBQyxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBeEUsRUFBZ0csQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsa0JBQTFILENBQ0EsQ0FFRSxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsR0FFRCxDQUxELElBS00sSUFBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsRUFBbUIsSUFBbkIsRUFBNEIsQ0FBQyxNQUFNLENBQUMsY0FBcEMsRUFBc0QsQ0FBQyxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBeEUsRUFBZ0csTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGtCQUF6SCxDQUNOLENBQ0UsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsZ0JBQXJCLEVBQXVDLE9BQTNDLENBQW9ELE1BQU0sQ0FBQyxTQUFQLENBQWlCLGtCQUFqQixDQUFvQyxJQUFwQyxFQUNwRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixnQkFBckIsRUFBdUMsVUFBM0MsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGtCQUFqQixDQUFvQyxJQUFwQyxDQUF5QyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsZ0JBQTlELEVBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBakIsR0FDRCxDQUNELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGdCQUFyQixFQUF1QyxNQUEzQyxDQUFtRCxNQUFNLENBQUMsU0FBUCxDQUFpQixhQUFqQixHQUVwRCxDQVZLLElBV0QsSUFBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsRUFBbUIsSUFBbkIsR0FBNEIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLEVBQW9DLENBQXBDLEVBQXlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBL0UsQ0FBSixDQUNMLENBQ0csTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBakIsR0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixHQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGdCQUFyQixFQUF1QyxPQUEzQyxDQUFvRCxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBb0MsS0FBcEMsRUFBcEQsSUFDSyxJQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixnQkFBckIsRUFBdUMsTUFBM0MsQ0FBbUQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsYUFBakIsR0FFMUQsQ0FQSSxJQU9DLElBQUcsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLEVBQW9DLENBQXZDLENBQ04sQ0FDRyxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsR0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBb0MsS0FBcEMsRUFDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixHQUVGLENBRUMsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsRUFBc0IsSUFBdEIsRUFBOEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLEVBQXNCLFNBQXhELENBQ0MsQ0FDRSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixnQkFBckIsRUFBdUMsVUFBM0MsQ0FBdUQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsYUFBakIsR0FDeEQsQ0FFakIsVUFBVSxDQUFDLFVBQVgsQ0FBc0IsU0FBUyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQW5CLENBQWtDLE9BQXhELENBQWdFLElBQWhFLEVBRUYsQ0FubENvQixDQUFqQixDQW1sQ0E7QUFFRixNQUFPLENBQ0csUUFBUSxDQUFFLEdBRGIsQ0FFRyxXQUFXLENBQUUseUNBRmhCLENBR0csVUFBVSxDQUFFLFVBSGYsQ0FJRyxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBQ2xDLENBTEwsQ0FBUCxDQVVELEVBQ0QsYUFFTyxRQUFTLENBQUEsa0JBQVQsRUFBK0IsQ0FFbkMsR0FBSSxDQUFBLFVBQVUsQ0FBRyxDQUFDLFFBQUQsQ0FBVyxXQUFYLENBQXdCLGNBQXhCLENBQXVDLFFBQXZDLENBQWdELFVBQWhELENBQTJELGNBQTNELENBQTBFLHNCQUExRSxDQUFpRyxZQUFqRyxDQUE4RyxhQUE5RyxDQUE0SCxtQkFBNUgsQ0FBZ0osa0JBQWhKLENBQW1LLGlCQUFuSyxDQUFxTCxpQkFBckwsQ0FBdU0sMkJBQXZNLENBQW1PLHFCQUFuTyxDQUF5UCxnQkFBelAsQ0FBMFEsZ0JBQTFRLENBQTJSLFVBQTNSLENBQXNTLFVBQXRTLENBQ0MsU0FBVSxNQUFWLENBQWlCLFNBQWpCLENBQTJCLFlBQTNCLENBQXdDLE1BQXhDLENBQStDLFFBQS9DLENBQXdELFlBQXhELENBQXFFLG9CQUFyRSxDQUEwRixVQUExRixDQUFxRyxXQUFyRyxDQUFpSCxpQkFBakgsQ0FBbUksZ0JBQW5JLENBQW9KLGVBQXBKLENBQW9LLGVBQXBLLENBQW9MLHlCQUFwTCxDQUE4TSxtQkFBOU0sQ0FBa08sY0FBbE8sQ0FBaVAsY0FBalAsQ0FBZ1EsUUFBaFEsQ0FBeVEsUUFBelEsQ0FBbVIscURBR3BTLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxNQUFNLENBQUMsSUFBUCxDQUFZLG9CQUFaLENBR0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQXNCLENBQ2hCLFFBQVEsQ0FBRSxLQURNLENBRWhCLG9CQUFvQixDQUFFLEtBRk4sQ0FHaEIsVUFBVSxDQUFFLElBSEksQ0FJaEIsYUFBYSxDQUFFLFdBQVcsQ0FBQyxlQUpYLENBS2hCLGlCQUFpQixDQUFFLElBTEgsQ0FNaEIsVUFBVSxDQUFFLENBQUMsWUFBWSxDQUFDLENBQWQsQ0FBaUIsa0JBQWtCLENBQUMsS0FBcEMsQ0FOSSxDQU9oQixVQUFVLENBQUUsQ0FQSSxDQVFoQixZQUFZLENBQUUsU0FSRSxDQVNoQixZQUFZLENBQUMsU0FURyxDQVVoQixpQkFBaUIsQ0FBQyxDQVZGLENBV2hCLFlBQVksQ0FBQyxDQUFDLEVBQUQsQ0FYRyxDQVloQixpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQU4sQ0FBZ0IsSUFBSSxDQUFDLFNBQXJCLENBQUQsQ0FBaUMsQ0FBQyxJQUFJLENBQUMsTUFBTixDQUFhLElBQUksQ0FBQyxNQUFsQixDQUFqQyxDQVpGLENBQXRCLENBZUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWtDLFdBQVcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF2RCxDQUNHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFxQyxVQUFVLENBQzNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUFnQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBK0IsS0FBL0IsQ0FBc0MsSUFBdEUsQ0FDTixDQUZFLENBR0gsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQWlDLE1BQWpDLENBR0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQWlDLEVBQWpDLENBRUEsTUFBTSxDQUFDLEtBQVAsQ0FBZSxlQUFmLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsRUFBc0IsU0FBMUIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLEVBQXJCLENBRXJDLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRDLEVBQWlELE1BQU0sQ0FBQyxFQUF4RCxDQUVBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixzQkFBckIsQ0FBOEMsSUFBOUMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isc0JBQXBCLENBQTZDLElBQTdDLENBQ0EsR0FBSSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixzQkFBMUIsQ0FBbUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLHNCQUFyQixDQUE4QyxFQUE5QyxDQUNuRCxHQUFJLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLFNBQXRCLENBQ0EsQ0FFSSxNQUFNLENBQUMsUUFBUCxDQUFnQixFQUFoQixDQUVBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBMUIsRUFBbUMsQ0FBQyxFQUFELENBQW5DLENBQ0EsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLFNBQWxDLEVBQTZDLENBQUMsRUFBRCxDQUE3QyxDQUVILENBUkQsSUFTQSxDQUNJLEdBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUExQixJQUFxQyxTQUFyQyxFQUFrRCxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTFCLElBQXFDLElBQTNGLENBQ0ksQ0FDSSxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTFCLEVBQW1DLENBQUMsRUFBRCxDQUFuQyxDQUNBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixTQUFsQyxFQUE2QyxDQUFDLEVBQUQsQ0FBN0MsQ0FFSCxDQUNSLENBRUMsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsRUFBd0IsU0FBNUIsQ0FBdUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXVCLEVBQXZCLENBR3ZDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUFnQyxDQUNoQyxFQUFFLENBQUUsR0FENEIsQ0FFaEMsSUFBSSxDQUFFLE1BRjBCLENBR2hDLE9BQU8sQ0FBRSxFQUh1QixDQUl0QixVQUFVLENBQUMsRUFKVyxDQUFoQyxDQU1BLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEdBQTJCLFNBQTNCLEVBQXdDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixHQUEyQixJQUF2RSxDQUE2RSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBeUIsRUFBekIsQ0FFN0UsR0FBSSwwQkFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsMEVBQTBCLGlCQUExQixJQUE4QyxTQUFsRCxDQUE4RCxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBeUIsaUJBQXpCLENBQTJDLDZDQUEzQyxDQUM5RCxHQUFJLDBCQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBViwwRUFBMEIsaUJBQTFCLElBQThDLFNBQWxELENBQThELE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixpQkFBekIsQ0FBMkMsa0RBQTNDLENBRTlELE1BQU0sQ0FBQyxNQUFQLENBQWMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGNBQXhDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGtCQUFwQixDQUF5QyxNQUFNLENBQUMsa0JBQWhELENBRUEsR0FBSSxNQUFNLENBQUMsTUFBUCxFQUFlLFNBQW5CLENBQThCLE1BQU0sQ0FBQyxNQUFQLENBQWMsQ0FBZCxDQUM5QixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsTUFBcEIsQ0FBMkIsTUFBTSxDQUFDLE1BQWxDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQStCLE1BQU0sQ0FBQyxNQUF0QyxDQUVBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLEVBQWdDLENBQXBDLENBQXVDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUErQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsRUFBekQsQ0FDdkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxtQkFBVixDQUE4QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXhDLENBQ0EsTUFBTSxDQUFDLGFBQVAsQ0FBd0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFlBQWxELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQTZCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixTQUF2RCxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLEVBQThCLFNBQWxDLENBQTZDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUE2QixHQUE3QixDQUM3QyxNQUFNLENBQUMsV0FBUCxDQUFtQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsV0FBN0MsQ0FDQSxNQUFNLENBQUMsY0FBUCxDQUF3QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZ0JBQWxELENBQ0EsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQWpELENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQWxELENBQ0EsR0FBSyxNQUFNLENBQUMsY0FBUCxFQUF1QixTQUE1QixDQUF1QyxNQUFNLENBQUMsY0FBUCxDQUFzQixLQUF0QixDQUN2QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBOEIsT0FBOUIsQ0FBc0MsTUFBdEMsQ0FBK0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF6RCxDQUVILE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUExQixDQUE0QyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRELENBR0csTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQStCLFNBQVMsSUFBVCxDQUFjLElBQWQsQ0FBbUIsS0FBbkIsQ0FBeUIsR0FBekIsQ0FDL0IsQ0FDRyxlQUFlLENBQUMsUUFBaEIsQ0FBeUIsSUFBekIsQ0FBOEIsSUFBOUIsQ0FBbUMsS0FBbkMsRUFDQSxHQUFJLEdBQUosQ0FBUyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixHQUE1QixDQUFnQyxNQUFoQyxFQUNYLENBSkQsQ0FNQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsU0FBcEIsQ0FBZ0MsU0FBUyxJQUFULENBQWMsY0FBZCxDQUE2QixHQUE3QixDQUNoQyxDQUNHLEdBQUksQ0FBQSxnQkFBZ0IsQ0FBSSxlQUFlLENBQUMsU0FBaEIsQ0FBMEIsSUFBMUIsQ0FBZ0MsY0FBaEMsQ0FBeEIsQ0FDQSxHQUFJLEdBQUosQ0FBUyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixHQUE1QixDQUFnQyxNQUFoQyxFQUNULE1BQU8sQ0FBQSxnQkFBUCxDQUNGLENBTEQsQ0FRQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixHQUE5QixDQUNBLENBRUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLFVBQTlCLENBQTJDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBbEIsQ0FBM0MsQ0FDQTtBQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBcUMsSUFBckMsQ0FDRCxDQUNELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBcUMsQ0FBckMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxjQUFQLEVBQXVCLFNBQTNCLENBQ00sTUFBTSxDQUFDLGNBQVAsQ0FBdUIsQ0FBdkIsQ0FDTixHQUFJLE1BQU0sQ0FBQyxhQUFQLEVBQXNCLFNBQTFCLENBQ00sTUFBTSxDQUFDLGFBQVAsQ0FBc0IsQ0FBdEIsQ0FDTixHQUFJLE1BQU0sQ0FBQyxhQUFQLEVBQXNCLFNBQTFCLENBQ00sTUFBTSxDQUFDLGFBQVAsQ0FBc0IsQ0FBdEIsQ0FFTjtBQUNBLEdBQUksQ0FBQSxVQUFVLENBQUcsQ0FBQyxZQUFELENBQWpCLENBQ0EsR0FBSSxDQUFBLGdCQUFnQixDQUFHLENBQUMsR0FBRyxDQUFFLENBQUMsQ0FBQyxPQUFPLGNBQVIsQ0FBdUIsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQU4sQ0FBbUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBbkMsQ0FBRCxDQUE2QyxDQUFDLElBQUksQ0FBQyxrQkFBTixDQUF5QixLQUFLLENBQUMsRUFBL0IsQ0FBN0MsQ0FBL0IsQ0FBRCxDQUFOLENBQXlILE9BQU8sQ0FBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsZUFBWCxDQUFELENBQTZCLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxJQUFJLENBQUMsY0FBWCxDQUE3QixDQUFsSSxDQUEyTCxVQUFVLENBQUUsb0JBQXZNLENBQTROLFdBQVcsQ0FBQyxzQkFBeE8sQ0FBK1AsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUF6USxDQUE0USxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsR0FBdlQsQ0FBMlQsUUFBUSxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBL1UsQ0FBdVYsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLGNBQS9XLENBQThYLGVBQWUsQ0FBQyxNQUFNLENBQUMsYUFBclosQ0FBbWEsTUFBTSxDQUFHLE1BQU0sQ0FBQyxPQUFuYixDQUEyYixXQUFXLENBQUMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBQWplLENBQStlLGFBQWEsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXpnQixDQUFraEIsTUFBTSxDQUFDLFVBQXpoQixDQUF2QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFvQyx5QkFBeUIsQ0FBQyxjQUExQixDQUF5QyxnQkFBekMsQ0FBcEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsT0FBcEIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQWhELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUF0QyxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLFNBQXZCLENBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixjQUFjLENBQUMsTUFBZixFQUFsQixDQUNsQyxNQUFNLENBQUMsR0FBUCxDQUFhLG1CQUFiLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWtDLElBQWxDLENBRUEsR0FBSSxDQUFBLFVBQVUsQ0FBRSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBQTFCLENBQXdDLEdBQXhDLENBQTRDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBNUUsQ0FBb0YsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXhHLENBQWhCLENBQ0EsR0FBSSxDQUFBLGNBQWMsQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixJQUF4QyxDQUVBO0FBRUEsR0FBSSxVQUFVLENBQUMsT0FBWCxDQUFtQixpQkFBbkIsRUFBc0MsQ0FBMUMsQ0FBOEMsQ0FDMUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWtDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFFBQXJELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUF1QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsZ0JBQXZFLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQXBCLENBQWtDLElBQWxDLENBQ0gsQ0FKRCxJQUlPLENBQ0wsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLENBQUMsYUFBYSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXhCLENBQWdDLG1CQUFtQixDQUFuRCxDQUFoQyxDQUNELENBRUQsR0FBSSxDQUFBLGFBQWEsQ0FBRyxRQUFoQixDQUFBLGFBQWdCLENBQVMsSUFBVCxDQUFjLENBQzlCLFVBQVUsQ0FBQyxPQUFYLENBQW1CLGVBQW5CLENBQXFDLElBQXJDLENBQ0EsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsZUFBbkIsQ0FBbUMsY0FBbkMsRUFDSCxDQUhELENBS0EsR0FBSSxDQUFBLG9CQUFvQixDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixjQUFyQixDQUFvQyxjQUFwQyxDQUFtRCxhQUFuRCxDQUEzQixDQUdDLEdBQUksQ0FBQSxXQUFXLENBQUcsUUFBZCxDQUFBLFdBQWMsQ0FBUyxJQUFULENBQ2pCLENBQ0ksR0FBSSxDQUFBLFVBQVUsQ0FBQyxLQUFmLENBQ0EsR0FBSSxDQUFBLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBZixDQUNBLEdBQUksS0FBSyxFQUFFLFNBQVgsQ0FDQSxDQUVNLEdBQUksTUFBTyxDQUFBLEtBQVAsR0FBZ0IsUUFBcEIsQ0FBOEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFzQyxLQUF0QyxDQUE5QixJQUNLLElBQUksS0FBSyxDQUFDLE9BQU4sQ0FBYyxLQUFkLENBQUosQ0FDTCxDQUNFLEdBQUksS0FBSyxDQUFDLE1BQU4sQ0FBYSxDQUFqQixDQUNBLENBQ0ksR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsS0FBaEMsRUFBeUMsQ0FBQSxLQUE3QyxDQUNBLENBQ0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFzQyxLQUFLLENBQUMsQ0FBRCxDQUFMLENBQVMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLEtBQXpDLENBQXRDLENBQ0gsQ0FIRCxJQUdNLENBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFzQyxLQUFLLENBQUMsQ0FBRCxDQUFMLENBQVMsRUFBL0MsQ0FFUixDQUNMLENBVk0sSUFXSCxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLEtBQWhDLEVBQXlDLENBQUEsS0FBN0MsQ0FDQSxDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBc0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxLQUFqQyxDQUEzQyxDQUNILENBSEQsSUFHTSxDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBc0MsS0FBSyxDQUFDLEVBQTVDLENBRVAsQ0FDRCxVQUFVLENBQUcsSUFBYixDQUVMLENBQ0Q7QUFDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsRUFBd0MsSUFBNUMsQ0FBa0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFxQyxDQUFyQyxDQUVsRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBcUMsQ0FBckMsRUFBMEMsVUFBOUMsQ0FBMEQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUEvQyxDQUFrRSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXRGLEVBRzdELENBbkNGLENBd0NELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGlCQUF6QixDQUNBLENBRUc7QUFDQTtBQUVBLEdBQUksQ0FBQSxlQUFlLENBQUcsUUFBUSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXhDLENBQ0EsR0FBSSxDQUFBLGlCQUFpQixDQUFHLDJCQUEyQixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsZ0JBQWhELENBQWlFLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixjQUFuSCxDQUNBLEdBQUksQ0FBQSxPQUFPLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXNCLGlCQUF0QixDQUF3QyxJQUF4QyxDQUFkLENBQ0EsR0FBSSxDQUFBLFFBQVEsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsaUJBQXJCLENBQXVDLGVBQXZDLENBQXVELGNBQXZELENBQXNFLFdBQXRFLENBQWYsQ0FDQSxHQUFJLENBQUEsR0FBRyxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsUUFBWCxDQUFvQixpQkFBcEIsQ0FBVixDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLEtBQWhDLEVBQXlDLENBQUEsR0FBN0MsQ0FDRCxDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBc0MsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxLQUFqQyxDQUF6QyxDQUNILENBSEEsSUFHSyxDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBc0MsR0FBRyxDQUFDLEVBQTFDLENBRUY7QUFDSCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsRUFBd0MsSUFBNUMsQ0FBa0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFxQyxDQUFyQyxDQUVsRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBcUMsQ0FBekMsQ0FBNEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUEvQyxDQUFrRSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXRGLEVBQzlDLENBRUQ7QUFDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF1QixRQUF2QixHQUFrQyxNQUFsQyxDQUF5QyxDQUF6QyxDQUEyQyxDQUEzQyxHQUErQyxHQUFuRCxDQUNBLENBQ0s7QUFDWDtBQUNBLGlGQUVRLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLEVBQXVCLFNBQXZCLEVBQW9DLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixFQUF1QixJQUEvRCxDQUVBLENBRVEsR0FBSSxDQUFBLGtCQUFlLENBQUcsUUFBUSxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQXhDLENBQ0Q7QUFDQyxHQUFJLENBQUEsb0JBQWlCLENBQUcsc0JBQXNCLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBaEMsQ0FBNEMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGNBQTlGLENBQ0EsR0FBSSxDQUFBLFdBQVEsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsb0JBQXJCLENBQXVDLGtCQUF2QyxDQUF1RCxjQUF2RCxDQUFzRSxXQUF0RSxDQUFmLENBRVAsQ0FFRixDQUVELEdBQUksQ0FBQSxtQkFBbUIsQ0FBRyxRQUF0QixDQUFBLG1CQUFzQixFQUUxQixDQUNHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBL0MsQ0FBa0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUF0RixFQUVGLENBTEQsQ0FNQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixTQUFyQixFQUFnQyxTQUFwQyxDQUNBLENBQ0csR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsU0FBckIsRUFBZ0MsRUFBcEMsQ0FDQSxDQUNHLEdBQUksQ0FBQSxnQkFBZ0IsQ0FBRyxRQUFRLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBekMsQ0FDQSxHQUFJLENBQUEsa0JBQWtCLENBQUcsT0FBTyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsY0FBMUQsQ0FDQSxHQUFJLENBQUEsU0FBUyxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixrQkFBckIsQ0FBd0MsZ0JBQXhDLENBQXlELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixTQUE5RSxDQUF3RixtQkFBeEYsQ0FBaEIsQ0FDRixDQUNILENBR0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLFNBQVMsaUJBQVQsQ0FBMkIsbUJBQTNCLENBQ25DLENBRU0sR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLEVBQXVDLFNBQTNDLENBQ0EsQ0FDRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXdDLGlCQUF4QyxDQUNGLENBSEQsSUFJQSxDQUNHLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixFQUF1QyxDQUF2QyxFQUE0QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLEVBQXVDLGlCQUF2RixDQUNLLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBd0MsaUJBQXhDLENBREwsSUFHSSxDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBc0MsQ0FBdEMsQ0FDTixDQUNELEdBQUksbUJBQUosQ0FBeUIsTUFBTSxDQUFDLEtBQVAsQ0FBYSxrQkFBYixDQUFnQyxNQUFNLENBQUMsRUFBdkMsRUFFOUIsQ0FmRCxDQWlCQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBc0IsU0FBUyxPQUFULENBQ3RCLENBQ0UsQ0FBQyxDQUFDLE9BQUQsQ0FBRCxDQUFXLEtBQVgsR0FDRCxDQUhELENBS0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQW1DLFVBQ25DLENBRUUsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXhCLENBQTBDLENBRXRDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixzQkFBckIsQ0FBNEMsSUFBNUMsQ0FBaUQsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUE1QixDQUE4QyxTQUFTLENBQUMsS0FBeEQsQ0FBakQsRUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXNDLEVBQXRDLENBQ0gsQ0FDRixDQVJELENBVUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGVBQXBCLENBQXNDLFNBQVMsR0FBVCxDQUN0QyxDQUVNLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixzQkFBckIsQ0FBNEMsTUFBNUMsQ0FBbUQsR0FBbkQsQ0FBdUQsQ0FBdkQsRUFFTCxDQUxELENBT0Y7QUFFQSxHQUFJLENBQUEseUJBQXlCLENBQUcsUUFBNUIsQ0FBQSx5QkFBNEIsQ0FBUyxJQUFULENBQ2hDLG1CQUNJLEdBQUksQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsc0JBQXJCLENBQTRDLE1BQWpELENBQXlELE9BQ3pELEdBQUksQ0FBQSxNQUFNLENBQUcsSUFBSCxTQUFHLElBQUgsZ0NBQUcsSUFBSSxDQUFFLEtBQVQsd0NBQUcsY0FBYSxNQUExQixDQUNBLEdBQUksTUFBSixDQUFXLG1CQUNQLEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLHNCQUFyQixDQUE0QyxHQUE1QyxDQUFnRCxTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsTUFBVCxDQUFrQixDQUFoRixFQUFrRixPQUFsRixDQUEwRixNQUExRixDQUFWLENBRUEsR0FBSSxHQUFHLEVBQUUsQ0FBTCxFQUFVLElBQVYsU0FBVSxJQUFWLDBCQUFVLElBQUksQ0FBRSxLQUFoQixrQ0FBVSxjQUFhLFNBQTNCLENBQ0EsQ0FDSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsc0JBQXJCLENBQTRDLE1BQTVDLENBQW1ELEdBQW5ELENBQXVELENBQXZELEVBQ0gsQ0FDSixDQUVELEdBQUksQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsc0JBQXJCLENBQTRDLE1BQTdDLEVBQXVELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBakUsRUFBK0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLEdBQXpHLEVBQWdILENBQUMsTUFBTSxDQUFDLGNBQTVILENBQTRJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixHQUUvSSxDQWZELENBaUJBLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixzQkFBckIsQ0FBNEMsTUFBM0QsQ0FBa0UsQ0FBQyxFQUFuRSxDQUFzRSxDQUU5RCxHQUFJLENBQUEsU0FBUyxDQUFHLFFBQVEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFsQyxDQUNBLEdBQUksQ0FBQSxVQUFVLENBQUcsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBQTFCLENBQXdDLEdBQXhDLENBQTRDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEQsQ0FBOEQsR0FBOUQsQ0FBa0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLHNCQUFyQixDQUE0QyxDQUE1QyxFQUErQyxNQUFqSCxDQUF3SCxjQUF6SSxDQUNBLEdBQUksQ0FBQSxJQUFJLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXNCLFVBQXRCLENBQWlDLElBQWpDLENBQVgsQ0FDQSxHQUFJLENBQUEsV0FBUSxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixVQUFyQixDQUFnQyxTQUFoQyxDQUEwQyxhQUExQyxDQUF3RCx5QkFBeEQsQ0FBZixDQUNBLEdBQUksQ0FBQSxJQUFHLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxRQUFYLENBQW9CLFVBQXBCLENBQVYsQ0FDQSxHQUFJLENBQUEsSUFBRyxPQUFILEVBQUEsSUFBRyxTQUFILFFBQUEsSUFBRyxDQUFFLE1BQUwsR0FBYSxJQUFiLEVBQXFCLElBQXJCLFNBQXFCLElBQXJCLFdBQXFCLElBQUcsQ0FBRSxLQUE5QixDQUFxQyx5QkFBeUIsQ0FBQyxJQUFELENBQXpCLENBRTVDLENBR0csTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQW1DLFNBQVMsUUFBVCxDQUFrQixDQUU3QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isa0JBQXBCLENBQXlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBd0MsUUFBakYsQ0FDQSxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTFCLEVBQW1DLENBQW5DLEVBQXdDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFpQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isa0JBQXJELENBQXhDLENBQ1AsQ0FKRCxDQU1DLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUFnQyxVQUFVLENBRXZDLEdBQUksQ0FBQSxlQUFlLENBQUcsQ0FBdEIsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQix3QkFBekIsQ0FBbUQsZUFBZSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQix3QkFBdkMsQ0FFbkQsR0FBSSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixtQkFBMUIsQ0FBK0MsZUFBZSxDQUFDLENBQWhCLENBRWxELG9CQUFvQixDQUFDLGNBQXJCLENBQW9DLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBOUMsQ0FBc0QsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLFNBQWxDLEVBQTZDLENBQTdDLENBQXRELENBQXNHLGVBQXRHLEVBQXVILElBQXZILENBQTRILFNBQVMsSUFBVCxDQUFlLENBQ3ZJO0FBRXFCLEdBQUksQ0FBQSxjQUFKLENBQ0EsR0FBSSxLQUFLLENBQUMsT0FBTixDQUFjLElBQUksQ0FBQyxJQUFuQixDQUFKLENBQ0UsQ0FDRSxHQUFLLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBVixDQUFpQixDQUF0QixDQUNFLENBRUksY0FBYyxDQUFJLElBQUksQ0FBQyxJQUFMLENBQVUsQ0FBVixDQUFsQixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFtQyxJQUFJLENBQUMsSUFBeEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isa0JBQXBCLENBQXlDLENBQXpDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUF3QyxJQUF4QyxDQUVILENBUkgsSUFRUSxJQUFJLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBVixFQUFrQixDQUF0QixDQUF3QixDQUUxQixjQUFjLENBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxDQUFWLENBQWxCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUF3QyxLQUF4QyxDQUNILENBSkssSUFNTixDQUNJLGNBQWMsQ0FBQyxFQUFmLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUF3QyxLQUF4QyxDQUNILENBQ0osQ0FwQkgsSUFzQkUsQ0FDSSxjQUFjLENBQUksSUFBSSxDQUFDLElBQXZCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUF3QyxLQUF4QyxDQUNILENBQ0gsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUExQixFQUFtQyxDQUFuQyxFQUF5QyxjQUF6QyxDQUNGLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFxQyxJQUFyQyxDQUNDLENBaEN4QixDQWdDeUIsU0FBUyxLQUFULENBQWUsQ0FDZCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDSCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXdDLEtBQXhDLENBQ0YsQ0FuQ3JCLEVBb0NGLENBM0NFLENBOENMLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBdUMsU0FBUyxNQUFULENBQ3ZDLENBRUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixpQkFBekIsQ0FBMkMsT0FBM0MsQ0FBbUQsVUFBbkQsQ0FBOEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxpQkFBakMsQ0FBcEUsQ0FBckMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLE9BQW5DLENBQTJDLFVBQTNDLENBQXNELEdBQUksQ0FBQSxJQUFKLENBQVMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxrQkFBakMsQ0FBZixFQUFxRSxrQkFBckUsRUFBdEQsQ0FBckMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQW1DLE9BQW5DLENBQTJDLFVBQTNDLENBQXNELEdBQUksQ0FBQSxJQUFKLENBQVMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxrQkFBakMsQ0FBZixFQUFxRSxrQkFBckUsRUFBdEQsQ0FBckMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsaUJBQWpDLENBQU4sR0FBNEQsSUFBaEUsQ0FDQSxDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBeUIsaUJBQXpCLENBQTJDLE9BQTNDLENBQW1ELFVBQW5ELENBQThELE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0MsaUJBQWpDLENBQXBFLENBQXJDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFtQyxPQUFuQyxDQUEyQyxVQUEzQyxDQUFzRCxHQUFJLENBQUEsSUFBSixDQUFTLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0Msa0JBQWpDLENBQWYsRUFBcUUsa0JBQXJFLEVBQXRELENBQXJDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFtQyxPQUFuQyxDQUEyQyxVQUEzQyxDQUFzRCxHQUFJLENBQUEsSUFBSixDQUFTLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsV0FBcEIsQ0FBZ0Msa0JBQWpDLENBQWYsRUFBcUUsa0JBQXJFLEVBQXRELENBQXJDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQWlDLElBQWpDLENBQ0gsQ0FDSixDQWJELENBZUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG1CQUFwQixDQUF3QyxTQUFTLE1BQVQsQ0FBZ0IsQ0FFcEQsR0FBSSxDQUFBLFNBQUosQ0FFQSxHQUFJLE1BQU0sR0FBRyxTQUFiLENBQ0EsQ0FDSSxHQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsTUFBZCxHQUF5QixNQUFNLENBQUMsTUFBUCxDQUFjLENBQTNDLENBQ0EsQ0FDSSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxLQUFoQyxFQUF5QyxDQUFBLE1BQU0sQ0FBQyxDQUFELENBQW5ELENBQ0EsQ0FDSSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUQsQ0FBTixDQUFVLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFnQyxLQUExQyxDQUFWLENBRUgsQ0FKRCxJQUlNLENBQUEsU0FBUyxDQUFHLE1BQU0sQ0FBQyxDQUFELENBQU4sQ0FBVSxFQUF0QixDQUVULENBUkQsSUFRSyxDQUNELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLEtBQWhDLEVBQXlDLENBQUEsTUFBN0MsQ0FDQSxDQUNJLFNBQVMsQ0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFdBQXBCLENBQWdDLEtBQWpDLENBQWxCLENBRUgsQ0FKRCxJQUlNLENBQUEsU0FBUyxDQUFHLE1BQU0sQ0FBQyxFQUFuQixDQUVULENBQ0osQ0FsQkQsSUFrQk0sQ0FBQSxTQUFTLENBQUcsSUFBWixDQUVOLE1BQU8sQ0FBQSxTQUFQLENBQ0gsQ0F6QkQsQ0E0QkUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUF1QyxTQUFTLFlBQVQsQ0FBc0IsZUFBdEIsQ0FBc0MsQ0FFMUUsR0FBSSxlQUFlLEdBQUcsU0FBdEIsQ0FBaUMsZUFBZSxDQUFDLENBQWhCLENBQ2pDLEdBQUksWUFBWSxHQUFHLFNBQW5CLENBQThCLFlBQVksQ0FBQyxDQUFiLENBQzlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBdUMsZUFBdkMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQStCLFlBQS9CLENBQ0EsR0FBSSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsTUFBMUIsRUFBa0MsU0FBdEMsQ0FBaUQsTUFBTSxDQUFDLGtCQUFQLENBQTBCLE1BQTFCLENBQWlDLENBQWpDLENBRTlDLEdBQUksQ0FBQSxNQUFNLENBQUcsTUFBTSxDQUFDLGtCQUFQLENBQTBCLE1BQXZDLENBQ0EsR0FBSSxDQUFBLFNBQVMsQ0FBRyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZ0JBQTFDLENBQ0EsR0FBSSxDQUFBLGdCQUFnQixDQUFHLE1BQU0sQ0FBQyxhQUE5QixDQUNILEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXVCLFFBQXZCLEdBQWtDLE1BQWxDLENBQXlDLENBQXpDLENBQTJDLENBQTNDLEdBQStDLEdBQW5ELENBQ0EsQ0FDRztBQUNBLGdCQUFnQixDQUFHLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixxQkFBN0MsQ0FFRixDQUNELEdBQUksZ0JBQWdCLEVBQUUsU0FBdEIsQ0FBaUMsZ0JBQWdCLENBQUMsQ0FBakIsQ0FFaEMsZUFBZSxDQUFDLG1CQUFoQixDQUFvQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTlDLENBQXNELE1BQXRELENBQTZELE1BQU0sQ0FBQyxNQUFwRSxDQUEyRSxnQkFBM0UsQ0FBNEYsU0FBNUYsQ0FBc0csTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQTFILENBQW1JLFlBQW5JLENBQWdKLGVBQWhKLENBQWdLLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQix3QkFBckwsRUFBK00sSUFBL00sQ0FBb04sU0FBUyxJQUFULENBQWUsQ0FFM00sR0FBSSxDQUFBLGNBQUosQ0FDQSxHQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUF4QixDQUFKLENBQ0UsQ0FDRSxHQUFLLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBVixDQUFpQixDQUF0QixDQUF5QixjQUFjLENBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUFWLENBQWUsQ0FBZixDQUFsQixDQUF6QixJQUNLLENBQUEsY0FBYyxDQUFDLEVBQWYsQ0FDTixDQUpILElBS0ssQ0FBQSxjQUFjLENBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUE1QixDQUNMLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBMUIsRUFBbUMsQ0FBbkMsRUFBeUMsY0FBekMsQ0FDRSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLENBQXVDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixtQkFBcEIsQ0FBd0MsY0FBeEMsQ0FBdkMsQ0FDRCx5QkFBeUIsQ0FBQyxPQUExQixDQUFrQyxDQUFDLEdBQUcsQ0FBRSxDQUFDLENBQUMsT0FBTyxjQUFSLENBQXVCLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxZQUF6QixDQUFELENBQXdDLENBQUMsSUFBSSxDQUFDLGtCQUFOLENBQXlCLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQW5ELENBQXhDLENBQS9CLENBQUQsQ0FBTixDQUNqQyxPQUFPLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFOLENBQW9CLE1BQU0sQ0FBQyxLQUEzQixDQUFELENBRHdCLENBR2pDLElBQUksQ0FBRSxvQkFIMkIsQ0FHTixRQUFRLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUhkLENBR3NCLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxjQUg5QyxDQUc2RCxlQUFlLENBQUMsTUFBTSxDQUFDLGFBSHBGLENBS2pDLE1BQU0sQ0FBRyxNQUFNLENBQUMsT0FMaUIsQ0FLVCxXQUFXLENBQUMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBTDdCLENBSzRDLGFBQWEsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BTHRFLENBSytFLE1BQU0sQ0FBQyxVQUx0RixDQUFsQyxFQU9DLE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBWCxDQUF5QixjQUF6QixDQUF3QyxjQUF4QyxDQUF3RCxDQUFDLFlBQVksQ0FBQyxZQUFkLENBQTJCLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXhELENBQXlFLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTFCLEVBQW1DLENBQW5DLENBQWhGLENBQXhELEVBRUEsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsYUFBekIsQ0FBd0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFxQyxjQUFyQyxFQUUxQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBcUMsSUFBckMsQ0FDRCxDQXZCdkIsQ0F1QndCLFNBQVMsS0FBVCxDQUFlLENBQ2QsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBRUwsQ0ExQnBCLEVBMkJILENBOUNELENBZ0ROLEdBQUksQ0FBQSxtQkFBbUIsQ0FBRyxRQUF0QixDQUFBLG1CQUFzQixDQUFTLElBQVQsQ0FDMUIsZ0VBQ0ksR0FBSSxDQUFBLEdBQUcsZ0JBQUcsSUFBSSxDQUFDLEtBQVIsK0RBQUcsY0FBWSxTQUFmLHdFQUFHLHNCQUF1QixHQUExQixpREFBRyx1QkFBNEIsRUFBdEMsQ0FFQSxHQUFJLENBQUMsR0FBTCxDQUFVLEdBQUcsQ0FBRyxJQUFJLENBQUMsS0FBWCxDQUVWLEdBQUksR0FBSixDQUFTLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUEvQyxDQUF1RCxHQUF2RCxFQUNaLENBUEQsQ0FTQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTZDLFVBQzdDLENBRUk7QUFDQSxHQUFJLENBQUEsZUFBZSxDQUFHLFFBQVEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF4QyxDQUNBLEdBQUksQ0FBQSxpQkFBaUIsQ0FBRSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBMUIsQ0FBd0MsR0FBeEMsQ0FBNEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUE3RSxDQUNBLEdBQUksQ0FBQSxPQUFPLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXNCLGlCQUF0QixDQUF3QyxJQUF4QyxDQUFkLENBQ0EsR0FBSSxDQUFBLFFBQVEsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsaUJBQXJCLENBQXVDLGVBQXZDLENBQXVELGNBQXZELENBQXNFLG1CQUF0RSxDQUFmLENBQ0EsR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFFBQVgsQ0FBb0IsaUJBQXBCLENBQVYsQ0FDQSxHQUFJLEdBQUcsQ0FBQyxNQUFKLEVBQVksSUFBWixFQUFvQixHQUFHLENBQUMsS0FBNUIsQ0FBbUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEtBQUwsQ0FBbkIsQ0FDdEMsQ0FWRCxDQVdBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBNkMsU0FBUyxRQUFULENBQ3pDLDRCQUNJLEdBQUksQ0FBQSxTQUFKLENBRUEsR0FBSSxDQUFBLFNBQVMsQ0FBSSxNQUFNLENBQUMsR0FBUCxDQUFXLFFBQVgsQ0FBb0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBQTlDLENBQWpCLENBQ0EsR0FBSSxDQUFBLG9CQUFvQix5QkFBRyxTQUFTLENBQUMsS0FBVixDQUFnQixZQUFuQixpREFBRyx1QkFBOEIsZUFBekQsQ0FDQSxHQUFJLENBQUEsWUFBWSxDQUFHLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixZQUE3QyxDQUNBLEdBQUksQ0FBQSxZQUFKLENBQ0E7QUFDQSxZQUFZLENBQUcseUJBQXlCLENBQUMsbUJBQTFCLENBQThDLG9CQUE5QyxDQUFtRSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsa0JBQTdGLENBQWdILFlBQWhILENBQWYsQ0FFQSxHQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsWUFBZCxHQUErQixZQUFZLENBQUMsTUFBYixDQUFvQixDQUF2RCxDQUNBLENBQ1EsR0FBSSxDQUFBLFNBQVMsQ0FBQyxDQUFkLENBQWdCLGVBQWUsQ0FBQyxDQUFoQyxDQUNBLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUE1QixDQUFtQyxDQUFDLEVBQXBDLENBQ0EsQ0FDRyxTQUFTLENBQUcsWUFBWSxDQUFDLENBQUQsQ0FBeEIsQ0FDQSxHQUFJLFNBQVMsRUFBRSxTQUFmLENBQ0EsQ0FDRyxHQUFJLFNBQVMsQ0FBQyxHQUFWLEVBQWUsU0FBZixFQUE0QixTQUFTLENBQUMsR0FBVixFQUFlLElBQS9DLENBQ0EsQ0FDQSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBVixDQUFjLE1BQTdCLENBQW9DLENBQUMsRUFBckMsQ0FDQSxDQUNFLEdBQUssU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLElBQWpCLEVBQXVCLFFBQXhCLEVBQXFDLFFBQVEsRUFBRSxTQUFuRCxDQUNBLENBQ0UsR0FBSSxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsRUFBd0IsU0FBeEIsRUFBcUMsU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLEVBQXdCLElBQWpFLENBQ0EsQ0FFRSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsTUFBdEMsQ0FBNkMsQ0FBQyxFQUE5QyxDQUNBLENBRUMsR0FBSSxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsQ0FBdkIsRUFBMEIsSUFBMUIsRUFBZ0MsWUFBaEMsRUFBZ0QsU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLENBQXZCLEVBQTBCLEtBQTFCLEVBQWlDLFNBQWpGLEVBQThGLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixDQUF2QixFQUEwQixLQUExQixHQUFrQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTlJLENBRUQsQ0FDSSxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLENBQXZCLEVBQTBCLEtBQXBDLENBQ0EsSUFBSyxHQUFJLENBQUEsR0FBQyxDQUFDLENBQVgsQ0FBYSxHQUFDLENBQUMsU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLE1BQXRDLENBQTZDLEdBQUMsRUFBOUMsQ0FDQSxDQUNJLEdBQUksU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLEdBQXZCLEVBQTBCLElBQTFCLEVBQWdDLGtCQUFoQyxFQUFzRCxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsR0FBdkIsRUFBMEIsS0FBMUIsRUFBaUMsU0FBdkYsRUFBb0csU0FBUyxFQUFFLEdBQS9HLEVBQXNILFNBQVMsRUFBRSxFQUFqSSxFQUF1SSxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsR0FBdkIsRUFBMEIsS0FBMUIsQ0FBZ0MsQ0FBM0ssQ0FBOEssZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixHQUF2QixFQUEwQixLQUExQyxDQUNqTCxDQUNKLENBR0EsQ0FHRixDQUVGLENBRUEsQ0FDRixDQUNILENBQ0gsQ0FDUixDQUNELE1BQU8sQ0FBQyxZQUFZLFNBQWIsQ0FBdUIsa0JBQWtCLGVBQXpDLENBQVAsQ0FFSCxDQXhETCxDQTREQyxHQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQTNCLEVBQThDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixHQUF4RSxFQUErRSxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBdUIsUUFBdkIsR0FBa0MsTUFBbEMsQ0FBeUMsQ0FBekMsQ0FBMkMsQ0FBM0MsR0FBK0MsR0FBbEksQ0FFRyxDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixFQUFyQyxDQUVBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixHQUF1QyxTQUEzQyxDQUNBLENBQ0csTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUF1QyxDQUFDLGVBQWUsQ0FBQyxDQUFqQixDQUFtQixTQUFTLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF2QyxDQUF2QyxDQUNGLENBRUosQ0FWSixJQVVTLElBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXVCLFFBQXZCLEdBQWtDLE1BQWxDLENBQXlDLENBQXpDLENBQTJDLENBQTNDLEdBQStDLEdBQW5ELENBQ04sQ0FDTSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLEdBQ0wsQ0FFRDtBQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFtQyxVQUFZLENBRXZDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLEVBQWtDLFNBQXRDLENBQWlELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFpQyxFQUFqQyxDQUVqRCxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0Esb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLElBQTlDLENBQW1ELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixvQkFBeEUsRUFBOEYsSUFBOUYsQ0FDWSxTQUFTLElBQVQsQ0FBZSxDQUVmLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixDQUFtQyxJQUFJLENBQUMsSUFBeEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixFQUFtQixFQUFuQixFQUF5QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsRUFBbUIsU0FBNUMsRUFBeUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLElBQWhGLENBQXNGLENBQ2xGLEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQWlDLEdBQWpDLENBQXFDLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBakUsRUFBbUUsT0FBbkUsQ0FBMkUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFyRixDQUFWLENBQ0EsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFZLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBMkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFlBQXBCLENBQWlDLEdBQWpDLENBQTNDLENBQ2YsQ0FDRDtBQUVOLENBVk4sQ0FVTyxTQUFTLEtBQVQsQ0FBZSxDQUNkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNQLENBWkQsRUFhUCxDQWxCRCxDQW9CSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsbUJBQXBCLENBQTBDLFNBQVMsRUFBVCxDQUFZLEtBQVosQ0FBb0IsQ0FFMUQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isb0JBQXBCLEVBQTBDLFNBQTlDLENBQXlELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixvQkFBcEIsQ0FBeUMsRUFBekMsQ0FDekQsR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBaUMsR0FBakMsQ0FBcUMsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUFqRSxFQUFtRSxPQUFuRSxDQUEyRSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXJGLENBQVYsQ0FDQSxHQUFJLEdBQUcsRUFBRSxDQUFMLEVBQVUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUF5QyxFQUF6QyxHQUE4QyxTQUE1RCxDQUNBLENBQ0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUEyQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBaUMsR0FBakMsQ0FBM0MsQ0FFSCxDQUNELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix3QkFBcEIsQ0FBNkMsRUFBN0MsQ0FBZ0QsS0FBaEQsRUFFQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixFQUF3QixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsR0FBbEQsRUFBeUQsQ0FBQyxNQUFNLENBQUMsY0FBakUsRUFBbUYsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsc0JBQXJCLENBQTRDLE1BQXBJLENBQTRJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixHQUcvSSxDQWRELENBa0JBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix3QkFBcEIsQ0FBK0MsU0FBUyxFQUFULENBQVksS0FBWixDQUFrQixDQUM3RCxHQUFJLENBQUEsR0FBSixDQUNBLEdBQUksQ0FBQSxjQUFjLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG1CQUExQyxDQUdBLEdBQUksS0FBSyxFQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdkIsQ0FDRSxDQUNNLEdBQUcsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLEdBQTFDLENBQThDLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBMUUsRUFBNEUsT0FBNUUsQ0FBb0YsRUFBcEYsQ0FBTixDQUVBLEdBQUksR0FBRyxFQUFFLENBQVQsQ0FBVyxDQUNQLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix5QkFBcEIsQ0FBZ0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHFCQUFwQixDQUEwQyxHQUExQyxDQUFoRCxDQUNILENBRUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLE9BQTlCLENBQXNDLE1BQXRDLENBQStDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBekQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsVUFBcEIsQ0FBK0IsSUFBL0IsQ0FFQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixHQUE5QixDQUNBLENBRUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFNBQXBCLENBQThCLFVBQTlCLENBQXlDLE1BQXpDLENBQWtELE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBNUQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLENBQXFDLElBQXJDLENBR0gsQ0FFTixDQXBCSCxJQW9CTyxDQUNELEdBQUcsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLEdBQTFDLENBQThDLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBMUUsRUFBNEUsT0FBNUUsQ0FBb0YsRUFBcEYsQ0FBTixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixFQUFsQixDQUNBLEdBQUksR0FBRyxFQUFFLENBQVQsQ0FBVyxDQUNULG9CQUFvQixDQUFDLHdCQUFyQixDQUE4QyxFQUE5QyxFQUFrRCxJQUFsRCxDQUF1RCxTQUFVLElBQVYsQ0FBZ0IsQ0FHL0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFwQixDQUF5QyxJQUF6QyxDQUFnRCxJQUFJLENBQUMsSUFBTCxDQUFVLElBQTFELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHlCQUFwQixDQUFnRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLEdBQTFDLENBQWhELENBR0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0Isc0JBQXBCLEdBQTZDLFNBQWpELENBQ0EsQ0FDSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsbUJBQXJCLENBQXlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixzQkFBcEIsQ0FBMkMsRUFBcEYsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsd0JBQXJCLENBQThDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixzQkFBcEIsQ0FBMkMsT0FBekYsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHNCQUFwQixDQUEyQyxjQUE3RCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUE4QixPQUFPLENBQUMsSUFBUixDQUFhLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixzQkFBcEIsQ0FBMkMsSUFBeEQsQ0FBOUIsQ0FDSCxDQUNELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUE4QixPQUE5QixDQUFzQyxNQUF0QyxDQUErQyxJQUFJLENBQUMsSUFBTCxDQUFVLElBQXpELENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQW9CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUE4QixPQUE5QixDQUFzQyxNQUExRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixVQUFwQixDQUErQixJQUEvQixDQUdBLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUEwQixPQUFPLENBQUMsSUFBUixDQUFhLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUE4QixPQUE5QixDQUFzQyxNQUFuRCxDQUExQixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUE4QixVQUE5QixDQUF5QyxNQUF6QyxDQUFrRCxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQTVELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFxQyxJQUFyQyxDQUVILENBeEJMLENBd0JNLFNBQVMsS0FBVCxDQUFlLENBQ2IsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFVBQXBCLENBQStCLElBQS9CLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFxQyxJQUFyQyxDQUNQLENBNUJELEVBOEJILENBQ0osQ0FHUixDQS9ERyxDQWlFUixHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixZQUFwQixFQUFrQyxTQUF0QyxDQUFpRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsWUFBcEIsQ0FBaUMsRUFBakMsQ0FDakQsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLEVBQTJDLFNBQS9DLENBQTBELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBMEMsRUFBMUMsQ0FDMUQsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUdFLG9CQUFvQixDQUFDLDJCQUFyQixDQUFpRCxTQUFqRCxDQUEyRCxNQUEzRCxFQUFtRSxJQUFuRSxDQUNNLFNBQVUsSUFBVixDQUFnQixDQUNiLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixxQkFBcEIsQ0FBNEMsSUFBSSxDQUFDLElBQWpELENBQ0E7QUFDQTtBQUVBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLG1CQUFyQixFQUEwQyxJQUE5QyxDQUM2QixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsbUJBQXBCLENBQXdDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixtQkFBN0QsQ0FBaUYsSUFBakYsRUFFNUIsQ0FUVixDQVNXLFNBQVMsS0FBVCxDQUFlLENBQ0YsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ3JCLENBWEgsRUFhRTtBQUVGLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLElBQW5CLEVBQTRCLENBQUMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQXZELEVBQTBFLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG9CQUFuRyxDQUNBLDZCQUNHLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLEdBQTFCLEVBQWlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF1QixRQUF2QixHQUFrQyxNQUFsQyxDQUF5QyxDQUF6QyxDQUEyQyxDQUEzQyxHQUErQyxHQUFwRixDQUF5RixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQXBCLENBQXFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBL0MsMEJBQXVELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBM0Usa0RBQXVELHdCQUFzQyxlQUE3RixFQUUzRixDQUdLLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQix5QkFBcEIsQ0FBZ0QsVUFBVyxDQUFFO0FBQzFELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLEVBQXNCLFNBQTFCLENBQ0MsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLE1BQXJDLENBQTRDLENBQUMsRUFBN0MsQ0FBaUQsQ0FDN0MsR0FBSSxDQUFBLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsQ0FBckIsRUFBd0IsUUFBM0MsQ0FBc0Q7QUFDdEQsR0FBSSxDQUFBLFVBQVUsQ0FBRyxjQUFqQixDQUFxRDtBQUVyRCxHQUFJLGNBQWMsRUFBRSxTQUFoQixFQUE2QixjQUFjLEVBQUUsSUFBakQsQ0FBd0QsQ0FDcEQsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLENBQXJCLEVBQXdCLEdBQXhCLENBQTRCLE1BQTNDLENBQWtELENBQUMsRUFBbkQsQ0FBdUQsQ0FDbkQsR0FBSyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsQ0FBckIsRUFBd0IsR0FBeEIsQ0FBNEIsQ0FBNUIsRUFBK0IsSUFBL0IsRUFBcUMsVUFBdEMsRUFBc0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLENBQXJCLEVBQXdCLEdBQXhCLENBQTRCLENBQTVCLEVBQStCLEtBQS9CLEVBQXNDLElBQWhHLENBQXVHLENBQUU7QUFDcEcsR0FBSSxDQUFBLFVBQVUsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsQ0FBckIsRUFBd0IsR0FBeEIsQ0FBNEIsQ0FBNUIsRUFBK0IsSUFBaEQsQ0FDQTtBQUVBLE1BQU0sQ0FBQyxHQUFQLENBQVcsUUFBUSxjQUFSLENBQXVCLFVBQWxDLENBQTZDLFNBQVMsS0FBVCxDQUFnQixJQUFoQixDQUFxQixDQUFHO0FBRXBFO0FBQ0UsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQXBCLENBQTJCLENBQUMsRUFBNUIsQ0FBZ0MsQ0FDOUIsR0FBSSxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsSUFBUixFQUFjLGtCQUFsQixDQUNBLENBQ0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUF1QyxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsS0FBL0MsQ0FBc0Q7QUFDdEQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUF1QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsZ0JBQTNELENBQ0QsQ0FDRCxHQUFJLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxJQUFSLEVBQWMsWUFBbEIsQ0FBZ0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLG1CQUFwQixDQUEwQyxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsS0FBbEQsQ0FBMEQ7QUFDM0YsQ0FFSDtBQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBL0MsQ0FBa0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUF0RixFQUVNO0FBRUwsQ0FqQkYsRUFpQkk7QUFDUjtBQUNKO0FBQ0o7QUFFSjtBQUNBLENBQUM7QUFDUCxDQXBDQyxDQW9DRDtBQUVHLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLFNBQTFCLEVBQXVDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixJQUFyRSxDQUE4RSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBeUIsQ0FBekIsQ0FLOUU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUVZLE1BQU0sQ0FBQyxFQUFQLENBQVUsc0JBQVYsQ0FBbUMsVUFBWSxDQUc1QyxvQkFBb0IsQ0FBQywyQkFBckIsQ0FBaUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUEzRCxDQUFtRSxTQUFuRSxDQUE2RSxjQUE3RSxDQUE0RixDQUE1RixDQUE4RixNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTFCLEVBQW1DLENBQW5DLEVBQXNDLFdBQXBJLENBQWdKLElBQWhKLEVBQXNKLElBQXRKLENBQTJKLFNBQVMsSUFBVCxDQUFlLENBRXpKLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBMUIsRUFBbUMsQ0FBbkMsRUFBc0Msa0JBQXRDLENBQTBELElBQUksQ0FBQyxLQUFMLENBQVcsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUFWLENBQWUsSUFBZixDQUFvQixDQUFwQixFQUF1QixXQUFsQyxDQUExRCxDQUVDLENBSmxCLENBSW1CLFNBQVMsS0FBVCxDQUFlLENBQ2QsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBRUYsQ0FQbEIsRUFTRixDQVpELENBYUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFWLENBQTRCLFVBQVksQ0FHckMsb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBMUIsRUFBbUMsQ0FBbkMsRUFBc0MsS0FBcEYsQ0FBMEYsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUExQixFQUFtQyxDQUFuQyxFQUFzQyxPQUFoSSxFQUF5SSxJQUF6SSxDQUE4SSxTQUFTLElBQVQsQ0FBZSxDQUU3STtBQUNBO0FBQ0MsR0FBSSxDQUFBLE9BQU8sQ0FBRyxJQUFJLENBQUMsSUFBbkIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLHFCQUFWLENBQWtDLElBQUksQ0FBQyxTQUFMLENBQWUsT0FBZixDQUF1QixJQUF2QixDQUE0QixDQUE1QixDQUFsQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBVixDQUE0QixJQUE1QixDQUVDLENBUmxCLENBUW1CLFNBQVMsS0FBVCxDQUFlLENBQ2QsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBRUYsQ0FYbEIsRUFhRixDQWhCRCxDQW9CQSxHQUFJLENBQUEsUUFBSixDQUNBLEdBQUksTUFBTSxDQUFDLGNBQVgsQ0FBMkIsUUFBUSxDQUFHLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDhDQUFuQixDQUFYLENBQTNCLElBQ0ssQ0FBQSxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsaURBQW5CLENBQVgsQ0FFTCxRQUFRLENBQUMsTUFBVCxDQUFnQixRQUFRLENBQUMsUUFBRCxDQUFSLENBQW1CLE1BQW5CLENBQWhCLEVBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQTZCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUE4QixPQUE5QixDQUFzQyxNQUFuRSxDQUEwRSxVQUExRSxDQUFxRixJQUFyRixFQUdMLENBdHhCYSxDQUFqQixDQXd4QkQsTUFBTyxDQUNHLFFBQVEsQ0FBRSxHQURiLENBR0csVUFBVSxDQUFFLFVBSGYsQ0FJRyxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBSXZDLENBUkEsQ0FBUCxDQVdELEVBQ0QsYUFFTyxRQUFTLENBQUEsWUFBVCxDQUF1QixRQUF2QixDQUFpQyxDQUMzQixHQUFJLENBQUEsVUFBVSxDQUFHLENBQUMsUUFBRCxDQUFXLGNBQVgsQ0FBMEIsUUFBMUIsQ0FBbUMsWUFBbkMsQ0FBZ0QsaUJBQWhELENBQWtFLGdCQUFsRSxDQUFtRixVQUFuRixDQUE4RixVQUE5RixDQUNDLFNBQVUsTUFBVixDQUFpQixZQUFqQixDQUE4QixNQUE5QixDQUFxQyxVQUFyQyxDQUFnRCxlQUFoRCxDQUFnRSxjQUFoRSxDQUErRSxRQUEvRSxDQUF3RixRQUF4RixDQUFrRyxDQUdwSCxHQUFJLE1BQU0sQ0FBQyxTQUFQLEVBQWtCLFNBQXRCLENBQWlDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLEVBQWpCLENBQ2pDLEdBQUksTUFBTSxDQUFDLEVBQVAsRUFBVyxTQUFmLENBQTBCLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBVixDQUMxQixHQUFJLE1BQU0sQ0FBQyxjQUFQLEVBQXVCLFNBQTNCLENBQXNDLE1BQU0sQ0FBQyxjQUFQLENBQXNCLEVBQXRCLENBRXRDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE1BQWpCLENBQTBCLE1BQU0sQ0FBQyxNQUFqQyxDQUNBLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsRUFBK0IsU0FBbkMsQ0FBOEMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBZ0MsQ0FBaEMsQ0FDOUMsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixTQUFqQixFQUE0QixTQUFoQyxDQUEyQyxNQUFNLENBQUMsU0FBUCxDQUFpQixTQUFqQixDQUE2QixDQUE3QixDQUMzQyxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFrQyxJQUFsQyxDQUVELE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLEtBQTVCLENBRUMsTUFBTSxDQUFDLEtBQVAsQ0FBYSxlQUFiLENBQ0EsTUFBTSxDQUFDLG1CQUFQLENBQTJCLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGFBQWhDLENBQVgsQ0FBMEQsY0FBYyxDQUFDLElBQXpFLENBQTNCLENBRUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxlQUFiLENBQTZCLFNBQTdCLEVBRUEsTUFBTSxDQUFDLGlCQUFQLENBQXlCLFVBQVUsQ0FFdEIsTUFBTSxDQUFDLG1CQUFQLENBQTZCLE1BQU0sQ0FBQyxLQUFQLENBQWEsb0JBQWIsRUFBN0IsQ0FHWixDQUxELENBT0EsR0FBSSxDQUFBLFFBQUosQ0FDQSxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsd0NBQW5CLENBQVgsQ0FHQSxRQUFRLENBQUMsTUFBVCxDQUFnQixRQUFRLENBQUMsUUFBRCxDQUFSLENBQW1CLE1BQW5CLENBQWhCLEVBRUYsQ0FqQ21CLENBQWpCLENBb0NMLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVILFVBQVUsQ0FBQyxVQUZSLENBR0gsS0FBSyxDQUFDLENBQ0wsTUFBTSxDQUFFLEdBREgsQ0FFTCxFQUFFLENBQUUsR0FGQyxDQUdMLFNBQVMsQ0FBRSxJQUhOLENBSEgsQ0FRRixJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBRWpDLEtBQUssQ0FBQyxHQUFOLENBQVUsY0FBYyxLQUFLLENBQUMsU0FBTixDQUFnQixNQUF4QyxDQUErQyxTQUFTLEtBQVQsQ0FBZSxJQUFmLENBQW9CLENBRTdELEtBQUssQ0FBQyxTQUFOLENBQWdCLFVBQWhCLENBQTJCLElBQTNCLENBQ0EsUUFBUSxDQUFDLFVBQVUsQ0FBRSxLQUFLLENBQUMsU0FBTixDQUFnQixVQUFoQixDQUEyQixLQUEzQixDQUFrQyxDQUEvQyxDQUFSLENBQ0wsQ0FKRCxFQU1ELENBaEJBLENBQVAsQ0FrQlAsRUFDRCxhQUVPLFFBQVMsQ0FBQSxTQUFULEVBQXNCLENBQ3JCLE1BQU8sQ0FDSCxRQUFRLENBQUUsR0FEUCxDQUVILFVBQVUsQ0FBRSxvQkFBVSxNQUFWLENBQWlCLFVBQWpCLENBQTRCLGVBQTVCLENBQTRDLG1CQUE1QyxDQUFnRSxZQUFoRSxDQUE2RSxjQUE3RSxDQUE0RixRQUE1RixDQUFxRyxRQUFyRyxDQUErRywyRUFFdkgsR0FBSSxNQUFNLENBQUMsU0FBUCxFQUFrQixTQUF0QixDQUFpQyxNQUFNLENBQUMsU0FBUCxDQUFpQixFQUFqQixDQUNqQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsRUFBcEIsQ0FDQSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUFYLENBQU4sQ0FBd0IsQ0FBQyxLQUFNLE1BQU0sQ0FBQyxFQUFkLENBQWtCLFlBQVksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUF4QyxDQUF4QixDQUVBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFNBQWpCLENBQTZCLElBQTdCLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsSUFBNUIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixTQUFqQixDQUE2QixJQUE3QixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLENBQStCLElBQS9CLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBZ0MsSUFBaEMsQ0FDQSxNQUFNLENBQUMsT0FBUCxDQUFpQixNQUFqQixDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWUsZUFBZixDQUNBLE1BQU0sQ0FBQyxRQUFQLENBQWtCLElBQWxCLENBQ0EsTUFBTSxDQUFDLEdBQVAsQ0FBYSxtQkFBYixDQUNBLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FJQSxZQUFZLENBQUMsY0FBYixDQUE0QixVQUE1QixDQUF1QyxJQUF2QyxFQUE2QyxJQUE3QyxDQUFrRCxTQUFVLElBQVYsQ0FBZ0IsQ0FDM0Q7QUFDQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBb0IsSUFBSSxDQUFDLElBQXpCLENBRUMsR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsR0FBbEIsQ0FBc0IsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUFsRCxFQUFvRCxPQUFwRCxDQUE0RCxNQUFNLENBQUMsRUFBUCxDQUFVLFFBQXRFLENBQVYsQ0FFRSxHQUFJLEdBQUcsRUFBRSxDQUFULENBQVcsQ0FDUCxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsQ0FBc0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLEdBQWxCLENBQXRCLENBRUgsQ0FDTixDQVZOLEVBWUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsRUFBcEIsQ0FDQSxNQUFNLENBQUMsWUFBUCxDQUFvQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTlCLEVBQWdELEVBQWhELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE1BQXBCLENBQTJCLENBQ3ZCLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxNQUFNLENBQUMsUUFBYixDQUFzQixTQUFTLENBQUMsUUFBaEMsQ0FBeUMsSUFBSSxDQUFDLGFBQTlDLENBQTRELElBQUksQ0FBQyxxQkFBakUsQ0FEdUIsQ0FFdkIsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLE1BQU0sQ0FBQyxVQUFiLENBQXdCLFNBQVMsQ0FBQyxVQUFsQyxDQUE2QyxJQUFJLENBQUMsVUFBbEQsQ0FBNkQsSUFBSSxDQUFDLGNBQWxFLENBRnVCLENBR3ZCLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxNQUFNLENBQUMsTUFBYixDQUFvQixTQUFTLENBQUMsTUFBOUIsQ0FBcUMsSUFBSSxDQUFDLFdBQTFDLENBQXNELElBQUksQ0FBQyxvQkFBM0QsQ0FIdUIsQ0FJdkIsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLE1BQU0sQ0FBQyxJQUFiLENBQWtCLFNBQVMsQ0FBQyxJQUE1QixDQUFpQyxJQUFJLENBQUMsUUFBdEMsQ0FBK0MsSUFBSSxDQUFDLFlBQXBELENBSnVCLENBQTNCLENBTUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLFNBQVMsVUFBVCxDQUNyQyxDQUNJLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLEVBQVgsQ0FBTixDQUFxQixJQUFyQixFQUEyQixTQUEzQixDQUFxQyxNQUFyQyxDQUE0QyxNQUE1RCxDQUFtRSxDQUFDLEVBQXBFLENBQ0EsQ0FDSSxHQUFJLENBQUEsR0FBRyxDQUFHLFVBQVUsQ0FBQyxHQUFYLENBQWUsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUEzQyxFQUE2QyxPQUE3QyxDQUFzRCxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUFYLENBQU4sQ0FBcUIsSUFBckIsRUFBMkIsU0FBM0IsQ0FBcUMsTUFBckMsQ0FBNEMsQ0FBNUMsRUFBK0MsU0FBckcsQ0FBVixDQUNBLEdBQUksR0FBRyxFQUFFLENBQVQsQ0FBYSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUFYLENBQU4sQ0FBcUIsSUFBckIsRUFBMkIsU0FBM0IsQ0FBcUMsTUFBckMsQ0FBNEMsQ0FBNUMsRUFBK0MsSUFBL0MsQ0FBc0QsVUFBVSxDQUFDLEdBQUQsQ0FBVixDQUFnQixJQUF0RSxDQUNoQixDQUdELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLEdBQW1CLFNBQW5CLEVBQWdDLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixHQUFtQixJQUF2RCxDQUErRCxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBa0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsRUFBWCxDQUFOLENBQXFCLElBQXJCLEVBQTJCLFNBQTNCLENBQXFDLE1BQXJDLENBQTRDLENBQTVDLENBQWxCLENBQWlFO0FBQ2hJLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFkLENBQXVCLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixLQUFqQixDQUF1QixNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLENBQXZCLENBRXZCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLEVBQVgsQ0FBTixDQUFxQixJQUFyQixFQUEyQixTQUEzQixDQUFxQyxXQUFyQyxDQUFpRCxJQUFqRCxDQUNILENBYkQsQ0FlQSxHQUFJLE1BQU0sQ0FBQyxpQkFBUCxFQUE0QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBMUQsQ0FDQSxDQUNJLFlBQVksQ0FBQyxjQUFiLENBQTRCLGdCQUE1QixDQUE2QyxJQUE3QyxFQUFtRCxJQUFuRCxDQUF3RCxTQUFVLElBQVYsQ0FBZ0IsQ0FDNUQ7QUFDQSxHQUFJLENBQ0E7QUFDQSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUFYLENBQU4sQ0FBcUIsSUFBckIsRUFBMkIsU0FBM0IsQ0FBcUMsY0FBckMsQ0FBb0QsSUFBSSxDQUFDLElBQXpELEVBQ0E7QUFDSCxDQUFDLE1BQU8sR0FBUCxDQUFZLENBQ1YsT0FBTyxDQUFDLEdBQVIsQ0FBWSxHQUFaLEVBQ0EsU0FDSCxDQUNaLENBVkQsRUFXSCxDQUNELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLEVBQXNCLFNBQTFCLENBQXFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixFQUFyQixDQUNyQyxHQUFJLENBQUEsU0FBUyxDQUFHLElBQWhCLENBQ0EsR0FBSSxNQUFNLENBQUMsUUFBUCxFQUFpQixTQUFyQixDQUNBLENBQ1EsR0FBSSxDQUFDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQXJCLENBQTZCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQUMsRUFBRCxDQUFoQixDQUM3QixTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUFWLENBRVAsQ0FMRCxJQUtNLENBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBQyxFQUFELENBQWhCLENBRU4sR0FBSSxDQUFBLGVBQWUsQ0FBRyxFQUF0QixDQUVBLEdBQUksTUFBTSxDQUFDLFlBQVAsRUFBcUIsU0FBekIsQ0FBb0MsZUFBZSxDQUFHLE1BQU0sQ0FBQyxZQUFQLENBQW9CLEdBQXRDLENBRXBDLEdBQUksQ0FBQSxjQUFjLENBQUUsTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXNCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUExQixDQUF3QyxHQUF4QyxDQUE0QyxlQUE1QyxDQUE0RCxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTVGLENBQW9HLFNBQXBHLENBQXBCLENBQ0EsR0FBSSxDQUFBLGtCQUFrQixDQUFHLGNBQWMsQ0FBQyxPQUFmLENBQXVCLElBQWhELENBR0EsR0FBSSxDQUFBLGFBQWEsQ0FBRyxRQUFoQixDQUFBLGFBQWdCLENBQVMsSUFBVCxDQUNwQixDQUNJLGNBQWMsQ0FBQyxPQUFmLENBQXVCLGVBQXZCLENBQXlDLElBQXpDLENBQ0EsY0FBYyxDQUFDLE9BQWYsQ0FBdUIsZUFBdkIsQ0FBdUMsY0FBdkMsRUFDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsR0FDSCxDQUxELENBT0EsR0FBSSxDQUFBLG9CQUFvQixDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixrQkFBckIsQ0FBd0MsY0FBeEMsQ0FBdUQsYUFBdkQsQ0FBM0IsQ0FFQSxNQUFNLENBQUMsY0FBUCxDQUFzQixVQUN0QixDQUVRLE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBWCxDQUF5QixrQkFBekIsQ0FBNEMsY0FBNUMsQ0FBNEQsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUE1RCxFQUNBO0FBQ1AsQ0FMRCxDQVNBLEdBQUksQ0FBQSxXQUFXLENBQUcsUUFBZCxDQUFBLFdBQWMsQ0FBUyxJQUFULENBQWUsQ0FDekIsR0FBSSxJQUFJLEVBQUUsU0FBVixDQUFxQixNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQTBDLElBQTFDLENBQzVCLENBRkQsQ0FJQSxHQUFJLGVBQUEsTUFBTSxDQUFDLEVBQVAsMkVBQVcsVUFBWCxzRUFBdUIsZ0JBQXZCLEdBQXlDLFNBQXpDLEVBQXNELGVBQUEsTUFBTSxDQUFDLEVBQVAsMkVBQVcsVUFBWCxzRUFBdUIsZ0JBQXZCLEdBQXlDLElBQW5HLENBQ0EsQ0FDSSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixnQkFBckIsRUFBdUMsRUFBM0MsQ0FDQSxDQUNJLEdBQUksQ0FBQSxlQUFlLENBQUcsUUFBUSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXhDLENBQ0EsR0FBSSxDQUFBLGlCQUFpQixDQUFHLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUExQixDQUF3QyxHQUF4QyxDQUE0QyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsa0JBQWpFLENBQW9GLGdCQUFwRixDQUFxRyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsZ0JBQWxKLENBQ0EsR0FBSSxDQUFBLFFBQVEsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsaUJBQXJCLENBQXVDLGVBQXZDLENBQXVELGNBQXZELENBQXNFLFdBQXRFLENBQWYsQ0FDQSxHQUFJLENBQUEsS0FBSyxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsUUFBWCxDQUFvQixpQkFBcEIsQ0FBWixDQUNBLEdBQUksS0FBSyxDQUFDLE1BQU4sRUFBYyxJQUFsQixDQUF3QixNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQTBDLEtBQUssQ0FBQyxLQUFoRCxDQUMzQixDQUNKLENBRUQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQXNDLFVBQVcsQ0FDN0MsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQWQsQ0FBc0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLEtBQWpCLENBQXVCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsQ0FBdkIsQ0FDekIsQ0FGRCxDQUlBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUF1QixVQUN2QixDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF5QixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLENBQVAsQ0FBekIsQ0FDSCxDQUhELENBS0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQTJCLFNBQVMsSUFBVCxDQUFjLEtBQWQsQ0FDM0IsQ0FDSSxNQUFNLENBQUMsRUFBUCxDQUFVLFFBQVYsQ0FBbUIsSUFBSSxDQUFDLEVBQXhCLENBQ0gsQ0FIRCxDQUtBLEdBQUksQ0FBQSxRQUFKLENBQ0EsR0FBSSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBOUIsQ0FBZ0QsUUFBUSxDQUFHLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHFDQUFuQixDQUFYLENBQWhELElBQ0ssQ0FBQSxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsd0NBQW5CLENBQVgsQ0FFTCxRQUFRLENBQUMsTUFBVCxDQUFnQixRQUFRLENBQUMsUUFBRCxDQUFSLENBQW1CLE1BQW5CLENBQWhCLEVBRUEsR0FBSSxjQUFjLENBQUMsT0FBZixDQUF1QixpQkFBdkIsRUFBMEMsQ0FBMUMsRUFBK0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGFBQXhFLENBQ0EsQ0FFUSxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQTBDLGNBQWMsQ0FBQyxPQUFmLENBQXVCLFFBQWpFLENBRVAsQ0FFRCxHQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsR0FBeUMsU0FBN0MsQ0FBd0QsTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLGtCQUF6QixDQUE0QyxjQUE1QyxDQUE0RCxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLENBQTVELEVBRTNELENBdEpFLENBd0pILElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsNEJBR2hDLEtBQUssQ0FBQyxnQkFBTixDQUF5QixTQUFTLEtBQVQsQ0FBZ0IsQ0FDckMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFULENBQWdCLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixNQUFuQixDQUEwQixLQUExQixDQUFoQixDQUNBLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFULEVBQW1CLEtBQUssQ0FBQyxRQUFOLEVBQWdCLFNBQW5DLEVBQWdELEtBQUssQ0FBQyxRQUFOLENBQWUsTUFBZixDQUFzQixDQUExRSxDQUE2RSxDQUNyRSxLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsQ0FBZ0IsS0FBaEIsQ0FBc0IsS0FBSyxDQUFDLFFBQU4sQ0FBZSxDQUFmLEVBQWtCLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBM0IsQ0FBdEIsQ0FDUCxDQUNELEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFULENBQWdCLEtBQWhCLEVBQXVCLFNBQTNCLENBQXNDLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBVCxDQUFnQixLQUFoQixDQUF3QixFQUF4QixDQUN6QyxDQU5ELENBVUEsS0FBSyxDQUFDLGNBQU4sQ0FBdUIsU0FBUyxLQUFULENBQWdCLENBQ2xELEtBQUssQ0FBQyxLQUFOLENBQVksa0JBQVosQ0FBK0IsS0FBSyxDQUFDLEVBQXJDLENBQXlDLEtBQUssQ0FBQyxVQUEvQyxFQUE0RDtBQUNoRCxDQUZELENBSUQsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLGlCQUFULEVBQThCLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxRQUE1QyxDQUFzRCxLQUFLLENBQUMsUUFBTixDQUFlLENBQWYsRUFBa0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUEzQiwwQkFBd0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxZQUFqRCxpREFBd0MsdUJBQXVCLEtBQS9ELENBS3hELENBOUtFLENBQVAsQ0FnTFAsRUFDRCxhQUVPLFFBQVMsQ0FBQSxNQUFULEVBQW1CLENBQ2xCLE1BQU8sQ0FDQyxRQUFRLENBQUUsR0FEWCxDQUVDLFVBQVUsQ0FBRSxvQkFBVSxNQUFWLENBQWlCLGVBQWpCLENBQWlDLG1CQUFqQyxDQUFxRCxjQUFyRCxDQUFvRSxRQUFwRSxDQUE2RSxRQUE3RSxDQUF1RixDQUUzRixNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FDQyxNQUFNLENBQUMsY0FBUCxDQUF3QixVQUN2QixDQUNHO0FBQ3JCLE1BQU0sQ0FBQyxLQUFQLENBQWEsa0JBQWIsQ0FBZ0MsTUFBTSxDQUFDLEVBQXZDLENBQTJDLE1BQU0sQ0FBQyxVQUFsRCxFQUVtQixDQUxGLENBT0QsR0FBSSxDQUFBLFFBQUosQ0FDQSxHQUFJLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUE5QixDQUFnRCxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsa0NBQW5CLENBQVgsQ0FBaEQsSUFDSyxDQUFBLFFBQVEsQ0FBRyxjQUFjLENBQUMsR0FBZixDQUFtQixxQ0FBbkIsQ0FBWCxDQUVKLFFBQVEsQ0FBQyxNQUFULENBQWdCLFFBQVEsQ0FBQyxRQUFELENBQVIsQ0FBbUIsTUFBbkIsQ0FBaEIsRUFFQSxDQWxCVixDQW1CUCxJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQTZCLGlCQUE3QixDQUFnRCxDQUU1QyxHQUFJLEtBQUssQ0FBQyxRQUFOLEdBQWlCLFNBQXJCLENBQWdDLEtBQUssQ0FBQyxRQUFOLENBQWlCLENBQUMsQ0FBQyxRQUFRLENBQVQsQ0FBRCxDQUFqQixDQUNoQyxHQUFJLEtBQUssQ0FBQyxVQUFOLEdBQW1CLFNBQXZCLENBQWtDLEtBQUssQ0FBQyxVQUFOLENBQW1CLENBQUMsWUFBWSxDQUFDLENBQWQsQ0FBbkIsQ0FDbEMsR0FBSSxLQUFLLENBQUMsZ0JBQU4sR0FBeUIsU0FBN0IsQ0FBd0MsS0FBSyxDQUFDLGdCQUFOLENBQXlCLENBQUMsWUFBWSxDQUFDLENBQWQsQ0FBekIsQ0FDeEMsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFdBQVQsR0FBeUIsU0FBN0IsQ0FBd0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxXQUFULENBQXNCLEVBQXRCLENBQ3hDLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULEdBQXFCLFNBQXpCLENBQW9DLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixFQUFuQixDQUNwQyxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBVCxHQUEwQixTQUE5QixDQUF5QyxLQUFLLENBQUMsRUFBTixDQUFTLGNBQVQsQ0FBd0IsQ0FBQyxPQUFPLENBQUMsT0FBVCxDQUF4QixDQUd6QyxLQUFLLENBQUMsRUFBTixDQUFTLGNBQVQsQ0FBMEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLE9BQVgsQ0FBbUIsSUFBSSxDQUFDLE9BQXhCLENBQUQsQ0FBa0MsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxVQUFYLENBQXNCLElBQUksQ0FBQyxVQUEzQixDQUFsQyxDQUF5RSxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sSUFBSSxDQUFDLE9BQVgsQ0FBekUsQ0FBNkYsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLElBQUksQ0FBQyxjQUFYLENBQTdGLENBQTFCLENBRUEsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLGNBQVQsRUFBeUIsU0FBekIsRUFBc0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUFULEVBQXlCLElBQW5FLENBQ0EsQ0FFSSxHQUFJLENBQUEsYUFBYSxDQUFHLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBVCxDQUF3QixHQUF4QixDQUE0QixTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsSUFBRixDQUFPLFFBQVAsRUFBUCxDQUEyQixDQUFyRSxFQUF1RSxPQUF2RSxDQUErRSxLQUFLLENBQUMsRUFBTixDQUFTLGNBQVQsQ0FBd0IsT0FBdkcsQ0FBcEIsQ0FFQSxHQUFJLGFBQWEsRUFBRSxDQUFuQixDQUFxQixDQUVuQixLQUFLLENBQUMsRUFBTixDQUFTLGNBQVQsQ0FBd0IsT0FBeEIsQ0FBZ0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUFULENBQXdCLGFBQXhCLENBQWhDLENBRUQsQ0FFRCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsTUFBbkIsQ0FBNEIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUFULENBQXdCLE9BQXBELENBRUgsQ0FiRCxJQWFRLENBQUEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLE1BQW5CLENBQTRCLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBVCxDQUF3QixDQUF4QixDQUE1QixDQUlWLEtBQUssQ0FBQyxNQUFOLENBQWEsQ0FDYixDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sTUFBTSxDQUFDLElBQWIsQ0FBa0IsSUFBSSxDQUFDLGFBQXZCLENBQXFDLElBQUksQ0FBQyxxQkFBMUMsQ0FEYSxDQUViLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxNQUFNLENBQUMsSUFBYixDQUFrQixJQUFJLENBQUMsV0FBdkIsQ0FBbUMsSUFBSSxDQUFDLG9CQUF4QyxDQUZhLENBR2IsQ0FBQyxFQUFFLENBQUMsQ0FBSixDQUFNLE1BQU0sQ0FBQyxJQUFiLENBQWtCLElBQUksQ0FBQyxXQUF2QixDQUFtQyxJQUFJLENBQUMsWUFBeEMsQ0FIYSxDQUliLENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxNQUFNLENBQUMsU0FBYixDQUF1QixJQUFJLENBQUMsNkJBQTVCLENBQTBELElBQUksQ0FBQyxjQUEvRCxDQUphLENBQWIsQ0FRQSxHQUFJLEtBQUssQ0FBQyxpQkFBVixDQUE4QixDQUN0QixHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBVCxHQUFrQixTQUFsQixFQUErQixLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsR0FBa0IsSUFBckQsQ0FBNkQsS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFULENBQWdCLEtBQUssQ0FBQyxNQUFOLENBQWEsQ0FBYixDQUFoQixDQUFnQztBQUM3RixHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBYixDQUFzQixLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsQ0FBZ0IsS0FBaEIsQ0FBc0IsS0FBSyxDQUFDLFFBQU4sQ0FBZSxDQUFmLEVBQWtCLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBM0IsQ0FBdEIsQ0FDN0IsQ0FDRCxLQUFLLENBQUMsSUFBTixDQUFXLFFBQVgsQ0FHQSxLQUFLLENBQUMsa0JBQU4sQ0FBMkIsVUFBVyxDQUU1QixHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBVCxFQUFtQixLQUFLLENBQUMsUUFBTixFQUFnQixTQUFuQyxFQUFnRCxLQUFLLENBQUMsUUFBTixDQUFlLE1BQWYsQ0FBc0IsQ0FBMUUsQ0FBNkUsQ0FDbkUsS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFULENBQWdCLEtBQWhCLENBQXNCLEtBQUssQ0FBQyxRQUFOLENBQWUsQ0FBZixFQUFrQixLQUFLLENBQUMsRUFBTixDQUFTLFNBQTNCLENBQXRCLENBQ1AsQ0FDWixDQUxELENBT0EsS0FBSyxDQUFDLGdCQUFOLENBQXlCLFNBQVMsS0FBVCxDQUFnQixDQUV2QyxLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsQ0FBa0IsS0FBSyxDQUFDLE1BQU4sQ0FBYSxLQUFiLENBQWxCLENBQ0EsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsRUFBbUIsS0FBSyxDQUFDLFFBQU4sRUFBZ0IsU0FBbkMsRUFBZ0QsS0FBSyxDQUFDLFFBQU4sQ0FBZSxNQUFmLENBQXNCLENBQTFFLENBQTZFLENBQ25FLEtBQUssQ0FBQyxFQUFOLENBQVMsTUFBVCxDQUFnQixLQUFoQixDQUFzQixLQUFLLENBQUMsUUFBTixDQUFlLENBQWYsRUFBa0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUEzQixDQUF0QixDQUNULENBQ0QsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLE1BQVQsQ0FBZ0IsS0FBaEIsRUFBdUIsU0FBM0IsQ0FBc0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxNQUFULENBQWdCLEtBQWhCLENBQXdCLEVBQXhCLENBRXRDLEdBQUksQ0FBQSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU4sQ0FBYSxLQUFiLEVBQW9CLEVBQTFCLENBRUEsR0FBSSxLQUFLLENBQUMsTUFBTixDQUFhLEtBQWIsRUFBb0IsRUFBcEIsRUFBd0IsQ0FBNUIsQ0FBK0IsS0FBSyxDQUFDLE1BQU4sQ0FBYSxjQUFiLENBQTRCLElBQTVCLENBQS9CLElBQ00sQ0FBQSxLQUFLLENBQUMsTUFBTixDQUFhLGNBQWIsQ0FBNEIsS0FBNUIsQ0FFUCxDQWJELENBZ0JQLENBdEZNLENBQVAsQ0EwRlAsQ0FFTSxRQUFTLENBQUEsWUFBVCxFQUF5QixDQUN4QixNQUFPLENBQ0MsUUFBUSxDQUFFLEdBRFgsQ0FFQyxPQUFPLENBQUMsU0FGVCxDQUlQLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBNkIsaUJBQTdCLENBQWdELENBRTlDLFFBQVMsQ0FBQSxlQUFULENBQXlCLEtBQXpCLENBQStCLENBRXZCLEdBQUksQ0FBQSxXQUFKLENBRUEsR0FBSSxNQUFPLENBQUEsS0FBUCxHQUFnQixRQUFwQixDQUE4QixXQUFXLENBQUcsR0FBSSxDQUFBLElBQUosQ0FBUyxLQUFULENBQWQsQ0FBOUIsSUFDSyxDQUFBLFdBQVcsQ0FBRyxLQUFkLENBR0wsTUFBTyxDQUFBLFdBQVAsQ0FFUCxDQUdELGlCQUFpQixDQUFDLFdBQWxCLENBQThCLElBQTlCLENBQW1DLGVBQW5DLEVBR1AsQ0F0Qk0sQ0FBUCxDQTJCUCxDQUVELGFBRU8sUUFBUyxDQUFBLFNBQVQsRUFBc0IsQ0FFckIsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUYsV0FBVyxDQUFFLHFDQUZYLENBR0Y7QUFDYjtBQUNBLGdCQUNhLFVBQVUsQ0FBRSxDQUFDLFFBQUQsQ0FBVSxnQkFBVixDQUEyQixZQUEzQixDQUF3QyxpQkFBeEMsQ0FBMEQscUJBQTFELENBRWIsU0FBUyxNQUFULENBQWdCLGNBQWhCLENBQStCLFVBQS9CLENBQTBDLGVBQTFDLENBQTBELG1CQUExRCxDQUE4RSxDQUUxRSxNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FDQSxHQUFJLENBQUEsWUFBWSxDQUFHLHFCQUFuQixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLEVBQWpCLENBQ0EsR0FBSSxDQUFBLFlBQVksQ0FBRyxNQUFNLENBQUMsS0FBUCxDQUFhLFlBQWIsQ0FBMEIsT0FBTyxNQUFNLENBQUMsWUFBeEMsQ0FBcUQsa0JBQXJELENBQXdFLFlBQXhFLENBQW5CLENBQ0EsTUFBTSxDQUFDLFlBQVAsQ0FBcUIsTUFBTSxDQUFDLEtBQVAsQ0FBYSxxQkFBYixDQUFtQyxNQUFNLENBQUMsWUFBMUMsQ0FBckIsQ0FDQztBQUNPLE1BQU0sQ0FBQyxHQUFQLENBQWEsbUJBQWIsQ0FFQSxHQUFJLENBQUEsY0FBYyxDQUFHLFFBQWpCLENBQUEsY0FBaUIsQ0FBUyxJQUFULENBQ3JCLENBQ0ksTUFBTSxDQUFDLHFCQUFQLENBQTZCLElBQUksQ0FBQyxLQUFsQyxFQUNILENBSEQsQ0FLQyxHQUFJLENBQUEsY0FBYyxDQUFHLFFBQWpCLENBQUEsY0FBaUIsQ0FBUyxJQUFULENBQ3RCLENBQ0UsTUFBTSxDQUFDLHFCQUFQLENBQTZCLElBQTdCLEVBQ0QsQ0FIQSxDQUtELEdBQUksQ0FBQSxZQUFZLENBQUUsTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXNCLE1BQU0sQ0FBQyxZQUFQLENBQW9CLFNBQTFDLENBQW9ELElBQXBELENBQWxCLENBQ0EsR0FBSSxDQUFBLGdCQUFnQixDQUFHLFlBQVksQ0FBQyxPQUFiLENBQXFCLElBQTVDLENBRUEsR0FBSSxDQUFBLHFCQUFxQixDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixnQkFBckIsQ0FBc0MsZUFBdEMsQ0FBc0QsY0FBdEQsQ0FBNUIsQ0FFQSxHQUFJLENBQUEscUJBQXFCLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLGdCQUFyQixDQUFzQyxlQUF0QyxDQUFzRCxjQUF0RCxDQUE1QixDQUVBLE1BQU0sQ0FBQyxXQUFQLENBQW1CLFNBQVMsS0FBVCxDQUFlLFlBQWYsQ0FBNEIsQ0FDM0MsR0FBSSxZQUFZLEVBQUUsY0FBbEIsQ0FDQSxDQUNJLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsS0FBakIsSUFBMEIsU0FBOUIsQ0FBeUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsS0FBakIsRUFBMEIsSUFBMUIsQ0FBekMsSUFFQSxDQUNJLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsS0FBakIsQ0FBSixDQUE2QixNQUFNLENBQUMsU0FBUCxDQUFpQixLQUFqQixFQUEwQixLQUExQixDQUE3QixJQUNLLENBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsS0FBakIsRUFBMEIsSUFBMUIsQ0FDUixDQUNKLENBQ0osQ0FWRCxDQVlBLE1BQU0sQ0FBQyxxQkFBUCxDQUE2QixTQUFTLEtBQVQsQ0FBZSxDQUdwQyxHQUFJLENBQUMsS0FBTCxDQUNBLENBQ0ksTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE9BQU8sTUFBTSxDQUFDLFlBQTFDLEVBRUgsQ0FKRCxJQU1BLENBQ0ksTUFBTSxDQUFDLFlBQVAsQ0FBcUIsTUFBTSxDQUFDLEtBQVAsQ0FBYSxxQkFBYixDQUFtQyxNQUFNLENBQUMsWUFBMUMsQ0FBckIsQ0FFSCxDQUNKLENBYkwsQ0FpQlgsQ0ExRFksQ0FOVixDQWtFRixJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLENBSXhDLENBdEVNLENBQVAsQ0F3RVAsRUFDRCxhQUVPLFFBQVMsQ0FBQSxVQUFULEVBQXVCLENBRTFCLEdBQUksQ0FBQSxVQUFVLENBQUcsQ0FBQyxRQUFELENBQVcsV0FBWCxDQUF3QixjQUF4QixDQUF1QyxRQUF2QyxDQUFnRCxVQUFoRCxDQUEyRCxjQUEzRCxDQUEwRSxzQkFBMUUsQ0FBaUcsWUFBakcsQ0FBOEcsYUFBOUcsQ0FBNEgsbUJBQTVILENBQWdKLGtCQUFoSixDQUFtSyxpQkFBbkssQ0FBcUwsaUJBQXJMLENBQXVNLDJCQUF2TSxDQUNBLFNBQVUsTUFBVixDQUFpQixTQUFqQixDQUEyQixZQUEzQixDQUF3QyxNQUF4QyxDQUErQyxRQUEvQyxDQUF3RCxZQUF4RCxDQUFxRSxvQkFBckUsQ0FBMEYsVUFBMUYsQ0FBcUcsV0FBckcsQ0FBaUgsaUJBQWpILENBQW1JLGdCQUFuSSxDQUFvSixlQUFwSixDQUFvSyxlQUFwSyxDQUFvTCx5QkFBcEwsQ0FBK00sQ0FHaE8sTUFBTSxDQUFDLFNBQVAsQ0FBaUIsRUFBakIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBbUMsQ0FBbkMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixhQUFqQixDQUErQixXQUFXLENBQUMsZUFBM0MsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBakIsQ0FBd0MsS0FBeEMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBbUMsSUFBbkMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixzQkFBakIsQ0FBMEMsSUFBMUMsQ0FDQSxNQUFNLENBQUMsTUFBUCxDQUFjLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUF4QyxDQUNBLEdBQUksTUFBTSxDQUFDLE1BQVAsRUFBZSxTQUFuQixDQUErQixNQUFNLENBQUMsTUFBUCxDQUFjLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixnQkFBeEMsQ0FDL0IsR0FBSSxNQUFNLENBQUMsTUFBUCxFQUFlLFNBQW5CLENBQThCLE1BQU0sQ0FBQyxNQUFQLENBQWMsQ0FBZCxDQUM5QixNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFqQixDQUF3QixNQUFNLENBQUMsTUFBL0IsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE4QixDQUE5QixDQUVBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGtCQUFqQixDQUFvQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTlDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLENBQXFDLElBQXJDLENBRUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsVUFBOUIsQ0FHQSxNQUFNLENBQUMsU0FBUCxDQUFpQixTQUFqQixDQUE2QixDQUMzQixFQUFFLENBQUUsR0FEdUIsQ0FFM0IsSUFBSSxDQUFFLE1BRnFCLENBRzNCLE9BQU8sQ0FBRSxlQUFlLENBQUMsbUJBQWhCLEVBSGtCLENBQTdCLENBT0csTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQTJDLENBQzFDLGNBQWMsQ0FBRSxJQUQwQixDQUUxQyxjQUFjLENBQUUsSUFGMEIsQ0FHMUMsZ0JBQWdCLENBQUUsSUFId0IsQ0FJMUMsa0JBQWtCLENBQUUsSUFKc0IsQ0FLMUMsV0FBVyxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FMbUIsQ0FNMUMsZUFBZSxDQUFFLElBTnlCLENBTzFDLHdCQUF3QixDQUFFLElBUGdCLENBUTFDLG9CQUFvQixDQUFFLElBUm9CLENBUzFDLHNCQUFzQixDQUFFLElBVGtCLENBVTFDLHFCQUFxQixDQUFFLElBVm1CLENBVzFDLG1CQUFtQixDQUFFLENBQUMsRUFBRCxDQUFLLEVBQUwsQ0FBUyxFQUFULENBQVksR0FBWixDQUFnQixHQUFoQixDQUFvQixHQUFwQixDQUF3QixJQUF4QixDQVhxQixDQVkxQyx3QkFBd0IsQ0FBRSxLQVpnQixDQUEzQyxDQWVMLEdBQUksQ0FBQSxpQkFBaUIsQ0FBRyxDQUN0QixVQUFVLENBQUUsQ0FEVSxDQUV0QixRQUFRLENBQUUsRUFGWSxDQUd0QixJQUFJLENBQUUsSUFIZ0IsQ0FBeEIsQ0FPSyxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBc0MsQ0FDdkM7QUFDQyxjQUFjLENBQUUsSUFGc0IsQ0FHdEMsY0FBYyxDQUFFLElBSHNCLENBSXRDLGdCQUFnQixDQUFFLElBSm9CLENBS3RDLGtCQUFrQixDQUFFLEtBTGtCLENBTXRDLFdBQVcsQ0FBRSxLQU55QixDQU90Qyx5QkFBeUIsQ0FBRyxDQVBVLENBUXRDLHNCQUFzQixDQUFHLENBUmEsQ0FTdEMsZUFBZSxDQUFFLElBVHFCLENBVXRDLHdCQUF3QixDQUFFLElBVlksQ0FXdEMsb0JBQW9CLENBQUUsSUFYZ0IsQ0FZdEMsYUFBYSxDQUFFLENBWnVCLENBQXRDLENBZ0JDLE1BQU0sQ0FBQyxNQUFQLENBQWMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGFBQXhDLENBQ0EsR0FBSSxNQUFNLENBQUMsTUFBUCxFQUFlLFNBQW5CLENBQStCLE1BQU0sQ0FBQyxNQUFQLENBQWMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGdCQUF4QyxDQUMvQixHQUFJLE1BQU0sQ0FBQyxNQUFQLEVBQWUsU0FBbkIsQ0FBOEIsTUFBTSxDQUFDLE1BQVAsQ0FBYyxDQUFkLENBRTlCO0FBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUE2QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXZDLENBQ0EsTUFBTSxDQUFDLGFBQVAsQ0FBd0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFlBQWxELENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFNBQXBELENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFdBQXZELENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGdCQUFsRCxDQUNBLE1BQU0sQ0FBQyxhQUFQLENBQXVCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUFqRCxDQUNBLE1BQU0sQ0FBQyxjQUFQLENBQXdCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUFsRCxDQUNBLEdBQUssTUFBTSxDQUFDLGNBQVAsRUFBdUIsU0FBNUIsQ0FDQSxDQUVFLE1BQU0sQ0FBQyxjQUFQLENBQXdCLEtBQXhCLENBQ0QsQ0FLQyxHQUFJLE1BQU0sQ0FBQyxjQUFQLEVBQXVCLFNBQTNCLENBQ0gsQ0FDQyxNQUFNLENBQUMsY0FBUCxDQUF1QixDQUF2QixDQUVBLENBQ0QsR0FBSSxNQUFNLENBQUMsYUFBUCxFQUFzQixTQUExQixDQUNBLENBQ0MsTUFBTSxDQUFDLGFBQVAsQ0FBc0IsQ0FBdEIsQ0FFQSxDQUNBLEdBQUksTUFBTSxDQUFDLGFBQVAsRUFBc0IsU0FBMUIsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxhQUFQLENBQXNCLENBQXRCLENBQ0QsQ0FFRCxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsQ0FBb0MsQ0FBcEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsQ0FBNEIsQ0FBNUIsQ0FJRixHQUFJLENBQUEsVUFBVSxDQUFHLENBQUMsa0JBQUQsQ0FBakIsQ0FDQTtBQUNBLEdBQUksQ0FBQSxnQkFBZ0IsQ0FBRyxDQUFDLEdBQUcsQ0FBRSxDQUFDLENBQUMsT0FBTyx5QkFBUixDQUFrQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBTixDQUFtQixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFuQyxDQUFELENBQTZDLENBQUMsSUFBSSxDQUFDLGtCQUFOLENBQXlCLEtBQUssQ0FBQyxFQUEvQixDQUE3QyxDQUExQyxDQUFELENBQU4sQ0FBb0ksT0FBTyxDQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBTixDQUFvQixNQUFNLENBQUMsS0FBM0IsQ0FBRCxDQUE3SSxDQUFpTCxJQUFJLENBQUUsbUJBQXZMLENBQTJNLFFBQVEsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQS9OLENBQThPLE1BQU0sQ0FBRyxNQUFNLENBQUMsT0FBOVAsQ0FDdkIsYUFBYSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FESCxDQUNZO0FBQ25DLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUZYLENBRTRCLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxjQUZwRCxDQUVtRSxlQUFlLENBQUMsTUFBTSxDQUFDLGFBRjFGLENBRXlHLE1BQU0sQ0FBQyxVQUZoSCxDQUF2QixDQUdBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGFBQWpCLENBQWlDLHlCQUF5QixDQUFDLGNBQTFCLENBQXlDLGdCQUF6QyxDQUFqQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLENBQXlCLE1BQU0sQ0FBQyxhQUFoQyxDQUdBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUF5QyxhQUF6QyxDQUF5RCxTQUFVLE9BQVYsQ0FBbUIsQ0FDMUU7QUFDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixPQUFqQixDQUEyQixPQUEzQixDQUVFLE9BQU8sQ0FBQyxTQUFSLENBQWtCLEVBQWxCLENBQXFCLG1CQUFyQixDQUF5QyxNQUF6QyxDQUFnRCxTQUFTLEdBQVQsQ0FBYSxDQUUzRCxNQUFNLENBQUMsU0FBUCxDQUFpQixxQkFBakIsQ0FBdUMsR0FBRyxDQUFDLFVBQTNDLENBQ0EsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixxQkFBckIsQ0FDRSxDQUNFLEdBQUksR0FBRyxDQUFDLE1BQUosQ0FBVyxFQUFYLEVBQWUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQXBDLENBQ0EsQ0FDRSxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBMkMsR0FBRyxDQUFDLE1BQUosQ0FBVyxFQUF0RCxDQUNELENBQ0YsQ0FOSCxJQU9FLENBQ0UsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQTJDLENBQTNDLENBRUQsQ0FDRCxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBb0MsVUFBcEMsQ0FBK0MsRUFBL0MsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBb0MsSUFBcEMsQ0FBeUMsRUFBekMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUEwQixLQUExQixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGVBQWpCLENBQWtDLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBekIsQ0FBaUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFSLENBQWtCLGVBQWxCLEVBQXpDLENBQWxDLENBRUMsR0FBSSxPQUFPLENBQUMsU0FBUixDQUFrQixlQUFsQixHQUFvQyxNQUFwQyxDQUEyQyxDQUEvQyxDQUNELENBQ0U7QUFDQSx5QkFBeUIsQ0FBQyxPQUExQixDQUFrQyxDQUNoQyxHQUFHLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBTixDQUFnQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5DLENBQUQsQ0FBNkMsQ0FBQyxJQUFJLENBQUMsa0JBQU4sQ0FBeUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFoRCxDQUE3QyxDQUNyQyxDQUFDLElBQUksQ0FBQyxtQkFBTixDQUEwQixLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVIsQ0FBa0IsZUFBbEIsRUFBaEMsQ0FEcUMsQ0FDZ0MsQ0FBQyxJQUFJLENBQUMsb0JBQU4sQ0FBMkIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUF5QyxJQUExRSxDQURoQyxDQUF0QyxDQUFELENBRDJCLENBRStILFFBQVEsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBRm5KLENBRWtLLGVBQWUsQ0FBQyxNQUFNLENBQUMsYUFGekwsQ0FBbEMsRUFJRCxDQUVKLENBNUJELEVBOEJFO0FBQ0YsT0FBTyxDQUFDLFVBQVIsQ0FBbUIsRUFBbkIsQ0FBc0IsaUJBQXRCLENBQXdDLE1BQXhDLENBQWdELFNBQVUsT0FBVixDQUFtQixRQUFuQixDQUE2QixDQUMzRSxpQkFBaUIsQ0FBQyxVQUFsQixDQUErQixPQUEvQixDQUNBLGlCQUFpQixDQUFDLFFBQWxCLENBQTZCLFFBQTdCLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsd0JBQWpCLENBQTBDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQTNELENBQW9FLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQXJGLENBQWtHLE9BQWxHLENBQTBHLFFBQTFHLEVBQ0QsQ0FKRCxFQU1DLE9BQU8sQ0FBQyxTQUFSLENBQWtCLEVBQWxCLENBQXFCLHdCQUFyQixDQUE4QyxNQUE5QyxDQUFxRCxTQUFTLEdBQVQsQ0FBYSxDQUUvRCxNQUFNLENBQUMsU0FBUCxDQUFpQixlQUFqQixDQUFrQyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXpCLENBQWlDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUixDQUFrQixlQUFsQixFQUF6QyxDQUFsQyxDQUVILENBSkEsRUFLTCxDQTlDQSxDQWlERixNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsQ0FBa0MsU0FBUyxVQUFULENBQ2hDLENBQ0k7QUFDRSxHQUFJLFVBQUosQ0FDSSxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBcUMsVUFBckMsQ0FESixJQUVTLENBQ0wsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLEVBQW9DLENBQXBDLENBQTJDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGlCQUFqQixDQUFtQyxDQUE5RSxDQUFtRixNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBbUMsQ0FBdEgsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBcUMsQ0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBMUQsQ0FDSCxDQUNOLENBVEgsQ0FjQyxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsQ0FBbUMsU0FBVSxJQUFWLENBQWUsQ0FFM0MsR0FBSSxJQUFJLEVBQUUsU0FBVixDQUFvQixDQUN0QixJQUFJLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBVixDQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBbkIsQ0FBMEIsQ0FBQyxFQUEzQixDQUErQixDQUVyQixHQUFJLFFBQVUsQ0FBQSxJQUFJLENBQUMsQ0FBRCxDQUFsQixDQUNBLENBQ0UsR0FBSSxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsSUFBUixFQUFnQixVQUFoQixFQUE4QixJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsVUFBMUMsQ0FDQSxDQUNFLEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsR0FBOUIsQ0FBa0MsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLFFBQVQsQ0FBb0IsQ0FBcEUsRUFBc0UsT0FBdEUsQ0FBOEUsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLGNBQXRGLENBQVYsQ0FDQSxHQUFJLEdBQUcsQ0FBQyxDQUFSLENBQVcsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsSUFBOUIsQ0FBbUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLGNBQWxCLENBQWlDLFNBQVMsQ0FBQyxLQUEzQyxDQUFuQyxFQUVaLENBQ0QsQ0FDQSxHQUFJLFVBQVksQ0FBQSxJQUFJLENBQUMsQ0FBRCxDQUFwQixDQUNBLENBRUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLENBQW1DLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxNQUEzQyxFQUNBLENBQ1IsQ0FDSixDQUVKLENBdEJGLENBd0JDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLG1CQUFqQixDQUFxQyxLQUFyQyxDQUVBO0FBQ047QUFDQTtBQUNBO0FBQ0EsUUFDTyxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBc0MsU0FBUyxFQUFULENBQWMsQ0FFN0MsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBakIsRUFBdUMsU0FBM0MsQ0FBc0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLEVBQXRDLENBQ3RELEdBQUksQ0FBQSxHQUFHLENBQUcsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsR0FBN0IsQ0FBaUMsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUE3RCxFQUErRCxPQUEvRCxDQUF1RSxFQUF2RSxDQUFWLENBRUEsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFXLENBQ1QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLEVBQXRDLENBQTJDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLENBQTZCLEdBQTdCLEVBQWtDLEVBQTdFLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLElBQXRDLENBQTZDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLENBQTZCLEdBQTdCLEVBQWtDLElBQS9FLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBakIsQ0FBbUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsR0FBN0IsQ0FBbkMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBakIsQ0FBc0MsY0FBdEMsQ0FBdUQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLENBQXNDLElBQXRDLENBQTRDLElBQTVDLENBQWlELE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUFzQyxFQUF2RixDQUEyRixHQUFsSixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHNCQUFqQixDQUF3QyxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBekQsQ0FDQyxDQUNYLENBWkMsQ0FjQTtBQUNGLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLENBQStCLFVBQVksQ0FFcEMsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixFQUE4QixTQUFsQyxDQUE2QyxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixDQUE2QixFQUE3QixDQUU3QyxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0Esb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLElBQTlDLENBQW1ELFNBQW5ELEVBQThELElBQTlELENBQ04sU0FBUyxJQUFULENBQWUsQ0FFUixNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixDQUErQixJQUFJLENBQUMsSUFBcEMsQ0FDVSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixFQUFtQixJQUF2QixDQUNBLENBQ0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQW9DLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBOUMsRUFFQyxDQUVaLENBVkQsQ0FVRSxTQUFTLEtBQVQsQ0FBZSxDQUNHLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNwQixDQVpBLEVBYU4sQ0FsQkQsQ0FvQkMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBakIsQ0FBZ0MsU0FBUyxJQUFULENBRWhDLENBRU0sVUFBVSxDQUFHLElBQUksQ0FBQyxRQUFsQixDQUNBLEdBQUksQ0FBQSxZQUFZLENBQUMsSUFBakIsQ0FDQSxHQUFJLENBQUEsR0FBRyxDQUFHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQThCLEdBQTlCLENBQWtDLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxRQUFULENBQW9CLENBQXBFLEVBQXNFLE9BQXRFLENBQThFLFVBQTlFLENBQVYsQ0FDQTtBQUNBLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQThCLE1BQTdDLENBQW9ELENBQUMsRUFBckQsQ0FDRSxDQUVFLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsQ0FBOUIsRUFBaUMsUUFBakMsRUFBNkMsVUFBakQsQ0FBNkQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBOEIsQ0FBOUIsRUFBaUMsU0FBakMsQ0FBNkMsSUFBN0MsQ0FDN0QsR0FBSSxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQThCLENBQTlCLEVBQWlDLFNBQXRDLENBQWlELFlBQVksQ0FBRyxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixDQUE5QixFQUFpQyxTQUFoRCxDQUNsRCxDQUNGO0FBQ0MsR0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsRUFBd0IsWUFBeEIsRUFBd0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsbUJBQTVELENBQWlGLENBQzdFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixDQUFrQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTVDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQW9DLElBQXBDLEVBRUQsQ0FDVixDQXBCRCxDQXNCQSxHQUFJLE1BQU0sQ0FBQyxTQUFQLEVBQWtCLFNBQXRCLENBQWlDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQWdDLEVBQWhDLENBQWpDLElBQ0ssQ0FBQSxNQUFNLENBQUMsU0FBUCxDQUFtQixDQUFDLFlBQVksQ0FBRyxFQUFoQixDQUFuQixDQUNOO0FBQ0MsR0FBSSxDQUFBLFVBQVUsQ0FBQyxDQUFmLENBR0EsTUFBTSxDQUFDLEdBQVAsQ0FBVyxrQkFBa0IsTUFBTSxDQUFDLGFBQXBDLENBQWtELFNBQVMsS0FBVCxDQUFnQixJQUFoQixDQUFxQixDQUVsRSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFnQyxJQUFoQyxFQUVKLENBSkQsRUFPSDtBQUNGO0FBQ0E7QUFDTyxNQUFNLENBQUMsU0FBUCxDQUFpQix3QkFBakIsQ0FBNEMsU0FBVSxnQkFBVixDQUEyQixRQUEzQixDQUFvQyxPQUFwQyxDQUE2QyxDQUd4RixHQUFJLENBQUEsSUFBSSxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDLENBRUEsb0JBQW9CLENBQUMsc0JBQXJCLENBQTRDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEQsQ0FBOEQsUUFBOUQsQ0FBdUUsZ0JBQXZFLENBQXdGLENBQXhGLENBQTBGLE9BQTFGLENBQWtHLElBQWxHLEVBQXdHLElBQXhHLENBQTZHLFNBQVMsSUFBVCxDQUFlLENBRWhHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGtCQUFqQixDQUFvQyxJQUFwQyxDQUEyQyxJQUFJLENBQUMsSUFBaEQsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBb0MsVUFBcEMsQ0FBaUQsSUFBSSxDQUFDLFVBQXRELENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIsSUFBMUIsQ0FDNUI7QUFDMEIsQ0FOMUIsQ0FNMkIsU0FBUyxLQUFULENBQWUsQ0FDZixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDTixDQVJyQixFQVNBLENBZEQsQ0FpQlA7QUFDQTtBQUNBO0FBQ0ssTUFBTSxDQUFDLFNBQVAsQ0FBaUIsc0JBQWpCLENBQTBDLFNBQVUsZ0JBQVYsQ0FBMkIsUUFBM0IsQ0FBcUMsQ0FHNUUsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUVBLG9CQUFvQixDQUFDLDJCQUFyQixDQUFpRCxnQkFBakQsQ0FBa0UsQ0FBbEUsQ0FBb0UsSUFBcEUsQ0FBeUUsQ0FBQyxFQUFFLENBQUUsUUFBTCxDQUF6RSxFQUF5RixJQUF6RixDQUE4RixTQUFTLElBQVQsQ0FBZSxDQUVqRixNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBb0MsSUFBcEMsQ0FBMkMsSUFBSSxDQUFDLElBQWhELENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQW9DLFVBQXBDLENBQWlELElBQUksQ0FBQyxVQUF0RCxDQUU1QjtBQUMwQixDQU4xQixDQU0yQixTQUFTLEtBQVQsQ0FBZSxDQUNmLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNOLENBUnJCLEVBU0EsQ0FkSCxDQWdCRSxNQUFNLENBQUMsR0FBUCxDQUFXLGtCQUFrQixNQUFNLENBQUMsYUFBekIsQ0FBdUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUE1RCxDQUEyRSxTQUFTLEtBQVQsQ0FBZ0IsS0FBaEIsQ0FBc0IsQ0FFakUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBakIsQ0FBZ0MsS0FBaEMsRUFFL0IsQ0FKRCxFQU1KLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGVBQWpCLENBQW1DLFVBQVUsQ0FDbkMsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLElBQTlCLENBQW9DLENBQ2xDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUEyQixDQUEzQixDQUNELENBR0Qsb0JBQW9CLENBQUMsK0JBQXJCLENBQXFELE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBL0QsQ0FBdUUsTUFBTSxDQUFDLGNBQTlFLENBQTZGLE1BQU0sQ0FBQyxhQUFwRyxDQUFrSCxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQTVILENBQXlJLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBbkosQ0FBbUssTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUE3SyxDQUE0TCxNQUFNLENBQUMsYUFBbk0sQ0FBaU4sTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBbE8sQ0FBMk8sTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBNVAsQ0FBdVEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQXhSLENBQXlTLEdBQXpTLENBQTZTLElBQTdTLEVBQW1ULElBQW5ULENBQXdULFNBQVMsSUFBVCxDQUFlLENBRWpULE1BQU0sQ0FBQyxTQUFQLENBQWlCLHdCQUFqQixDQUEyQyxJQUFJLENBQUMsSUFBTCxDQUFVLGtCQUFyRCxDQUdBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHNCQUFqQixDQUEwQyxDQUFDLE9BQU8sTUFBTSxDQUFDLFNBQVAsQ0FBaUIsd0JBQWpCLENBQTBDLElBQWxELENBQXVELEtBQUssTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUF0RSxDQUE4RSxZQUFZLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBcEcsQ0FBNEcsaUJBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBdkksQ0FBc0osY0FBYyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQTlLLENBQTJMLGdCQUFnQixNQUFNLENBQUMsU0FBUCxDQUFpQixhQUFqQixDQUErQixNQUFNLENBQUMsRUFBUCxDQUFVLFlBQXpDLENBQTNNLENBQWtRLGtCQUFrQixNQUFNLENBQUMsRUFBUCxDQUFVLGVBQTlSLENBQTFDLENBR0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBL0IsQ0FFQSxNQUFNLENBQUMsU0FBUCxDQUFpQixvQkFBakIsQ0FBd0MsSUFBeEMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUEwQixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQXBDLENBQStDLFVBQS9DLENBQTBELEtBQTFELEVBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsSUFBNUIsQ0FDRDtBQUNDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGlCQUFqQixDQUFtQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQTdDLEVBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsbUJBQWpCLENBQXVDLElBQXZDLENBQ0EsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixNQUE5QixDQUFxQyxDQUF6QyxDQUNBLENBQ0UseUJBQXlCLENBQUMsY0FBMUIsQ0FBeUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFwQixDQUFtQyxhQUFhLENBQUMsTUFBTSxDQUFDLGFBQXhELENBQXNFLGFBQWEsQ0FBQyxNQUFNLENBQUMsYUFBM0YsQ0FBeUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQXZJLENBQXpDLEVBQ0QsQ0FIRCxJQUtBLENBQ0csVUFBVSxDQUFDLFVBQVgsQ0FBc0Isa0JBQWtCLE1BQU0sQ0FBQyxhQUEvQyxDQUE2RCxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXBCLENBQTdELEVBQ0YsQ0FDRCxNQUFNLENBQUMsU0FBUCxDQUFpQixTQUFqQixDQUEyQixPQUEzQixDQUFtQyxNQUFuQyxDQUE2QyxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQXZELENBQ0EsR0FBSSxNQUFNLENBQUMsUUFBUCxFQUFtQixTQUF2QixDQUFrQyxNQUFNLENBQUMsUUFBUCxDQUFnQixFQUFoQixDQUNsQyxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTFCLEVBQTZDLElBQUksQ0FBQyxJQUFMLENBQVUsU0FBdkQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBbUIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUExQixDQUFuQixDQUVILENBN0JuQixDQTZCb0IsU0FBUyxLQUFULENBQWUsQ0FDZCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDTCxDQS9CaEIsRUFpQ1AsQ0F4Q0gsQ0F3Q0k7QUFFTixNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBMkMsVUFBVSxDQUN6QyxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsSUFBOUIsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUEyQixDQUEzQixDQUVELENBQ0Qsb0JBQW9CLENBQUMsZUFBckIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUEvQyxDQUF1RCxHQUF2RCxDQUEyRCxJQUEzRCxFQUFpRSxJQUFqRSxDQUFzRSxTQUFTLElBQVQsQ0FBZSxDQUVuRSxNQUFNLENBQUMsU0FBUCxDQUFpQix3QkFBakIsQ0FBMkMsSUFBSSxDQUFDLElBQUwsQ0FBVSxrQkFBckQsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixTQUFqQixDQUEyQixPQUEzQixDQUFtQyxNQUFuQyxDQUEwQyxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQXBELENBQ0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsc0JBQWpCLENBQTBDLENBQUMsT0FBTyxNQUFNLENBQUMsU0FBUCxDQUFpQix3QkFBakIsQ0FBMEMsSUFBbEQsQ0FBdUQsS0FBSyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRFLENBQThFLFlBQVksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFwRyxDQUE2RyxpQkFBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF4SSxDQUF5SixjQUFjLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBakwsQ0FBOEwsZ0JBQWdCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGFBQWpCLENBQStCLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBekMsQ0FBOU0sQ0FBcVEsa0JBQWtCLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBalMsQ0FBMUMsQ0FHRCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUEvQixDQUVBO0FBQ0EseUJBQXlCLENBQUMsT0FBMUIsQ0FBa0MsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFwQixDQUFvQyxHQUFHLENBQUUsQ0FBQyxDQUFDLE9BQU8sY0FBUixDQUF1QixRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBTixDQUFtQixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFuQyxDQUFELENBQTZDLENBQUMsSUFBSSxDQUFDLGtCQUFOLENBQXlCLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBaEQsQ0FBN0MsQ0FBL0IsQ0FBRCxDQUF6QyxDQUFsQyxFQUVFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLG9CQUFqQixDQUF3QyxJQUF4QyxDQUNDLFFBQVEsQ0FBQyxVQUFXLENBQ25CLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLElBQTVCLENBRUMsQ0FITSxDQUFSLENBSUYsQ0FqQm5CLENBaUJvQixTQUFTLEtBQVQsQ0FBZSxDQUNkLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUVMLENBcEJoQixFQXNCUCxDQTdCTCxDQStCQyxNQUFNLENBQUMsU0FBUCxDQUFpQixxQkFBakIsQ0FBeUMsS0FBekMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBMkMsQ0FBM0MsQ0FHRyxNQUFNLENBQUMsU0FBUCxDQUFpQixlQUFqQixDQUFtQyxVQUFZLENBRTdDO0FBQ0EsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUEyQyxJQUEzQyxDQUNBLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsRUFBMkIsU0FBL0IsQ0FBMEMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsaUJBQWlCLENBQUMsUUFBOUMsQ0FDMUMsb0JBQW9CLENBQUMsZUFBckIsQ0FBcUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQXRELENBQXVFLE1BQU0sQ0FBQyxNQUE5RSxDQUFxRixJQUFyRixFQUEyRixJQUEzRixDQUFnRyxTQUFTLElBQVQsQ0FBZSxDQUVsRixNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBeUMsSUFBekMsQ0FBZ0QsSUFBSSxDQUFDLElBQXJELENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQXlDLFVBQXpDLENBQXNELElBQUksQ0FBQyxVQUEzRCxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixHQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHNCQUFqQixDQUEwQyxJQUExQyxDQUVILENBUDFCLENBTzJCLFNBQVMsS0FBVCxDQUFlLENBQ2YsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBRUwsQ0FWdEIsRUFXQyxDQWpCSCxDQW9CQTtBQUNBO0FBQ0E7QUFDRixNQUFNLENBQUMsU0FBUCxDQUFpQix3QkFBakIsQ0FBNEMsU0FBVSxPQUFWLENBQWtCLE9BQWxCLENBQTBCLE9BQTFCLENBQWtDLFFBQWxDLENBQTRDLENBR3BGLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHNCQUFqQixDQUEwQyxLQUExQyxDQUNBLEdBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixRQUF0QyxFQUFnRCxPQUFwRCxDQUNBLENBQ0UsT0FBTyxDQUFHLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsUUFBdEMsQ0FBVixDQUNELENBRUEsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUVBLEdBQUksUUFBUSxFQUFFLFNBQWQsQ0FFQSxDQUNDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTRCLGlCQUFpQixDQUFDLFFBQTlDLENBQ0EsUUFBUSxDQUFFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQTNCLENBQ0EsQ0FFRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixHQUE5QixDQUNBLENBQ0Msb0JBQW9CLENBQUMsOEJBQXJCLENBQW9ELE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFyRSxDQUFzRixPQUF0RixDQUE4RixPQUE5RixDQUFzRyxPQUF0RyxDQUE4RyxRQUE5RyxDQUF1SCxJQUF2SCxDQUE0SCxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQXRJLENBQThJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFNBQWpCLENBQTJCLE9BQTNCLENBQW1DLE1BQWpMLEVBQXlMLElBQXpMLENBQThMLFNBQVMsSUFBVCxDQUFlLENBSW5MLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUF5QyxJQUF6QyxDQUFnRCxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQTFELENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLEdBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsc0JBQWpCLENBQTBDLElBQTFDLENBRUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUF0QyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQWdDLElBQUksQ0FBQyxJQUFMLENBQVUsUUFBMUMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLEtBQXRDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsT0FBN0IsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLFFBQXRDLENBQTVCLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsUUFBNUIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBeUMsVUFBekMsQ0FBb0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBckUsQ0FFQSx5QkFBeUIsQ0FBQyxPQUExQixDQUFrQyxDQUNsQyxHQUFHLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBTixDQUFnQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5DLENBQUQsQ0FBNkMsQ0FBQyxJQUFJLENBQUMsa0JBQU4sQ0FBeUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFoRCxDQUE3QyxDQUMzQyxDQUFDLElBQUksQ0FBQyxtQkFBTixDQUEwQixLQUFLLENBQUUsSUFBakMsQ0FEMkMsQ0FDSixDQUFDLElBQUksQ0FBQyxvQkFBTixDQUEyQixLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQXlDLElBQTFFLENBREksQ0FBdEMsQ0FBRCxDQUQ2QixDQUV5RixRQUFRLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUY3RyxDQUU0SCxlQUFlLENBQUMsTUFBTSxDQUFDLGFBRm5KLENBQWxDLEVBSUEsVUFBVSxDQUFDLFVBQVgsQ0FBc0IsWUFBWSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXRCLENBQXFDLFdBQTNELENBQXVFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUF5QyxJQUFoSCxFQUdELENBdkJ6QixDQXVCMEIsU0FBUyxLQUFULENBQWUsQ0FDZixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDTixDQXpCcEIsRUEwQkEsQ0E1QkQsSUE2QkssSUFBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsR0FBOUIsQ0FDTCxDQUNDLEdBQUksQ0FBQSxhQUFhLENBQUMsQ0FBbEIsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLEVBQTJCLEdBQS9CLENBQW9DLGFBQWEsQ0FBRyxNQUFNLENBQUMsY0FBdkIsQ0FBcEMsSUFDSyxDQUFBLGFBQWEsQ0FBRyxNQUFNLENBQUMsYUFBdkIsQ0FFTCxvQkFBb0IsQ0FBQyw0QkFBckIsQ0FBa0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQW5FLENBQW9GLE9BQXBGLENBQTRGLE9BQTVGLENBQW9HLE9BQXBHLENBQTRHLFFBQTVHLENBQXFILElBQXJILENBQTBILE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBcEksQ0FBbUosYUFBbkosQ0FBaUssTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBbEwsRUFBNEwsSUFBNUwsQ0FBaU0sU0FBUyxJQUFULENBQWUsQ0FJdEwsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsdUJBQWpCLENBQXlDLElBQXpDLENBQWdELElBQUksQ0FBQyxJQUFMLENBQVUsT0FBMUQsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsR0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixzQkFBakIsQ0FBMEMsSUFBMUMsQ0FFQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLElBQXRDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsQ0FBZ0MsSUFBSSxDQUFDLElBQUwsQ0FBVSxRQUExQyxDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsS0FBdEMsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixDQUE2QixPQUE3QixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsUUFBdEMsQ0FBNUIsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixRQUE1QixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUF5QyxVQUF6QyxDQUFvRCxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFyRSxDQUVBLHlCQUF5QixDQUFDLE9BQTFCLENBQWtDLENBQ2xDLEdBQUcsQ0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQU4sQ0FBcUIsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBTixDQUFtQixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFuQyxDQUFELENBQTZDLENBQUMsSUFBSSxDQUFDLGtCQUFOLENBQXlCLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBaEQsQ0FBN0MsQ0FDaEMsQ0FBQyxJQUFJLENBQUMsbUJBQU4sQ0FBMEIsS0FBSyxDQUFFLElBQWpDLENBRGdDLENBQ08sQ0FBQyxJQUFJLENBQUMsb0JBQU4sQ0FBMkIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUF5QyxJQUExRSxDQURQLENBQTNCLENBQUQsQ0FENkIsQ0FFeUYsUUFBUSxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FGN0csQ0FFNEgsZUFBZSxDQUFDLE1BQU0sQ0FBQyxhQUZuSixDQUFsQyxFQUlBLFVBQVUsQ0FBQyxVQUFYLENBQXNCLFlBQVksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF0QixDQUFxQyxXQUEzRCxDQUF1RSxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBeUMsSUFBaEgsRUFHRCxDQXZCekIsQ0F1QjBCLFNBQVMsS0FBVCxDQUFlLENBQ2YsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ04sQ0F6QnBCLEVBMkJBLENBQ0QsQ0FqRkwsQ0FvRkgsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBK0IsVUFBVSxDQUNsQyxNQUFNLENBQUMsU0FBUCxDQUFpQix3QkFBakIsQ0FBMEMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBM0QsQ0FBb0UsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBckYsQ0FBa0csTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBbkgsQ0FBK0gsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBaEosRUFDRSxDQUZULENBR0U7QUFDRjtBQUNBO0FBQ0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQXNDLFNBQVUsT0FBVixDQUFtQixDQUN0RCxHQUFJLENBQUEsSUFBSSxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDLENBQ0EsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsRUFBbUMsU0FBdkMsQ0FBa0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLENBQW9DLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBOUMsQ0FFbEQsR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsRUFBbUMsU0FBbkMsRUFBZ0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLEVBQW1DLElBQXZGLENBQ0EsQ0FDQSxvQkFBb0IsQ0FBQyxrQkFBckIsQ0FBd0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQXpELENBQTBFLE1BQU0sQ0FBQyxNQUFqRixDQUF3RixJQUF4RixFQUE4RixJQUE5RixDQUFtRyxTQUFTLElBQVQsQ0FBZSxDQUV2RyxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBeUMsVUFBekMsQ0FBc0QsSUFBSSxDQUFDLElBQTNELENBRUEsR0FBSSxPQUFKLENBQWEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsd0JBQWpCLENBQTBDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQTNELENBQW9FLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQXJGLENBQWtHLENBQWxHLENBQW9HLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQXJILEVBRXBCO0FBRTBCLENBUjlCLENBUStCLFNBQVMsS0FBVCxDQUFlLENBQ2YsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ04sQ0FWekIsRUFZQyxDQUNILENBbkJELENBcUJHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUEyQyxVQUFZLENBRWhELE1BQU0sQ0FBQyxNQUFQLENBQWdCLEVBQWhCLENBQ0EsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUVEO0FBQ0Q7QUFFQSxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixFQUFtQyxJQUF2QyxDQUE2QyxDQUMzQyxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsQ0FBb0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUE5QyxDQUNELENBQ1Y7QUFDUSxvQkFBb0IsQ0FBQyx1QkFBckIsQ0FBNkMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQTlELENBQStFLE1BQU0sQ0FBQyxNQUF0RixDQUE2RixJQUE3RixDQUFrRyxNQUFNLENBQUMsU0FBUCxDQUFpQixTQUFqQixDQUEyQixJQUE3SCxFQUFtSSxJQUFuSSxDQUF3SSxTQUFTLElBQVQsQ0FBZSxDQUFDO0FBRS9ILE1BQU0sQ0FBQyxTQUFQLENBQWlCLHVCQUFqQixDQUF5QyxJQUF6QyxDQUFnRCxJQUFJLENBQUMsSUFBckQsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQix1QkFBakIsQ0FBeUMsVUFBekMsQ0FBc0QsSUFBSSxDQUFDLFVBQTNELENBRUUsUUFBUSxDQUFDLFVBQVUsQ0FDakIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsc0JBQWpCLENBQTBDLElBQTFDLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLEdBQ0QsQ0FITyxDQUFSLENBTUQsQ0FYMUIsQ0FXMkIsU0FBUyxLQUFULENBQWUsQ0FDbkIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0YsQ0FickIsRUFjQSxDQTFCSixDQTRCRSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixTQUFTLElBQVQsQ0FBYyxJQUFkLENBQW1CLEtBQW5CLENBQXlCLEdBQXpCLENBQzNCLENBQ0MsZUFBZSxDQUFDLFFBQWhCLENBQXlCLElBQXpCLENBQThCLElBQTlCLENBQW1DLEtBQW5DLEVBQ0csR0FBSSxHQUFKLENBQVMsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsR0FBNUIsQ0FBZ0MsTUFBaEMsRUFDWixDQUpGLENBTUcsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQXNDLFVBQ3hDLENBQ0MsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQWQsQ0FBOEIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBakIsR0FDOUIsQ0FIQyxDQU9SLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLElBQW5CLEVBQTRCLENBQUMsTUFBTSxDQUFDLGNBQXBDLEVBQXNELENBQUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQTVFLENBQ0EsQ0FDRSxNQUFNLENBQUMsU0FBUCxDQUFpQixlQUFqQixHQUVELENBSkQsSUFJTSxJQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixFQUFtQixJQUFuQixHQUE0QixNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixFQUE2QixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQW5FLENBQUosQ0FDTixDQUNHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGVBQWpCLEdBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsR0FDQyxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBb0MsS0FBcEMsRUFFSCxDQU5LLElBTUEsSUFBRyxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQXJCLENBQ04sQ0FDRyxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsR0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBb0MsS0FBcEMsRUFDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixHQUVGLENBSUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsYUFBakIsQ0FBZ0MsVUFBVyxDQUN2QyxHQUFJLENBQUEsS0FBSyxDQUFHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLENBQXlCLFNBQXpCLENBQW1DLElBQW5DLEVBQVosQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBc0IsS0FBdEIsQ0FDQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0Qix3Q0FBNUIsQ0FBcUUsTUFBckUsRUFFRixDQUxGLENBT0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLENBQW1DLFVBQVcsQ0FDN0MsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsRUFBcUIsSUFBekIsQ0FDQSxDQUNHLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsT0FBakIsRUFBMEIsU0FBOUIsQ0FDQSxDQUVDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLENBQXlCLFNBQXpCLENBQW1DLE9BQW5DLENBQTJDLE1BQTNDLENBQWtELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBNUQsRUFFQSxDQUxELElBTUEsQ0FDQyxRQUFRLENBQUMsVUFBVSxDQUNmLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixHQUNILENBRk8sQ0FBUixDQUdBLENBQ0gsQ0FDRixDQWZBLENBaUJZLFVBQVUsQ0FBQyxVQUFYLENBQXNCLFNBQVMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFuQixDQUFrQyxPQUF4RCxDQUFnRSxJQUFoRSxFQUVkLENBaG5Cb0IsQ0FBakIsQ0FnbkJBO0FBRUYsTUFBTyxDQUNHLFFBQVEsQ0FBRSxHQURiLENBRUcsV0FBVyxDQUFFLHNDQUZoQixDQUdHLFVBQVUsQ0FBRSxVQUhmLENBSUcsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUtsQyxDQVRMLENBQVAsQ0FjRCxFQUNELGFBRU8sUUFBUyxDQUFBLFVBQVQsQ0FBcUIsUUFBckIsQ0FBOEIsVUFBOUIsQ0FBeUMseUJBQXpDLENBQW1FLG9CQUFuRSxDQUF3RixlQUF4RixDQUF3RyxRQUF4RyxDQUFpSCxVQUFqSCxDQUE2SCxDQUM1SCxNQUFPLENBQ1AsUUFBUSxDQUFFLEdBREgsQ0FFRixXQUFXLENBQUUsc0NBRlgsQ0FHRixVQUFVLENBQUUsb0JBQVUsTUFBVixDQUFrQixRQUFsQixDQUEyQixVQUEzQixDQUFzQyxTQUF0QyxDQUFnRCxnQkFBaEQsQ0FBaUUsaUJBQWpFLENBQW1GLElBQW5GLENBQXdGLGVBQXhGLENBQXdHLFFBQXhHLENBQWlILFlBQWpILENBQStILENBRXhJO0FBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBZSxlQUFmLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLENBQW1CLEtBQW5CLENBQ0EsTUFBTSxDQUFDLGlCQUFQLENBQTJCLElBQTNCLENBQ0EsTUFBTSxDQUFDLGdCQUFQLENBQXdCLEtBQXhCLENBQ0EsTUFBTSxDQUFDLE1BQVAsQ0FBYyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBeEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxNQUFQLEVBQWUsU0FBbkIsQ0FBK0IsTUFBTSxDQUFDLE1BQVAsQ0FBYyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZ0JBQXhDLENBQy9CLEdBQUksTUFBTSxDQUFDLE1BQVAsRUFBZSxTQUFuQixDQUE4QixNQUFNLENBQUMsTUFBUCxDQUFjLENBQWQsQ0FDOUIsR0FBSSxNQUFNLENBQUMsU0FBUCxFQUFrQixTQUF0QixDQUFrQyxNQUFNLENBQUMsU0FBUCxDQUFtQixDQUFDLGlCQUFpQixDQUFDLENBQW5CLENBQW5CLENBQ2xDLE1BQU0sQ0FBQyxLQUFQLENBQWUsRUFBZixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWdDLFNBQVMsaUJBQVQsQ0FDaEMsQ0FFQyxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGlCQUFqQixFQUFvQyxTQUF4QyxDQUNBLENBQ0csTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLENBQXFDLGlCQUFyQyxDQUNGLENBSEQsSUFJQSxDQUNHLEdBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLEVBQW9DLENBQXBDLEVBQXlDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGlCQUFqQixFQUFvQyxpQkFBakYsQ0FBb0csTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLENBQXFDLGlCQUFyQyxDQUFwRyxJQUNLLENBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsaUJBQWpCLENBQW1DLENBQW5DLENBQ1AsQ0FFRCxDQVpELENBZUgsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBakIsQ0FBbUMsVUFBWSxDQUM1QyxRQUFRLENBQUMsVUFBVyxDQUNwQixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBL0IsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFnQyxDQUFoQyxFQUVDLENBSk8sQ0FBUixDQUtILENBTkEsQ0FRQSxNQUFNLENBQUMsU0FBUCxDQUFpQixtQkFBakIsQ0FBdUMsVUFBWSxDQUNoRCxRQUFRLENBQUMsVUFBVyxDQUNwQixNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTJCLE9BQU8sQ0FBQyxJQUFSLENBQWEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUF2QixDQUEzQixDQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWdDLENBQWhDLEVBRUMsQ0FKTyxDQUFSLENBS0gsQ0FOQSxDQVNULE1BQU0sQ0FBQyxPQUFQLENBQWlCLFNBQVUsTUFBVixDQUFpQixLQUFqQixDQUF3QixDQUMxQyxRQUFRLENBQUMsVUFBVyxDQUFDLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixLQUF4QixDQUFnQyxDQUE3QyxDQUFSLENBQ0UsQ0FGRCxDQUlBLE1BQU0sQ0FBQyxXQUFQLENBQXFCLFVBQVksQ0FDbEMsUUFBUSxDQUFDLFVBQVcsQ0FBQyxNQUFNLENBQUMsZ0JBQVAsQ0FBd0IsS0FBeEIsQ0FBZ0MsQ0FBN0MsQ0FBUixDQUNFLENBRkQsQ0FNRCxNQUFNLENBQUMsWUFBUCxDQUFzQixTQUFTLFNBQVQsQ0FBbUIsTUFBbkIsQ0FBMEIsQ0FFNUMsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNBLEdBQUksQ0FBQSxrQkFBa0IsQ0FBRyxNQUF6QixDQUNDLE1BQU0sQ0FBQyxNQUFQLENBQWMsWUFBWSxDQUFDLEVBQTNCLENBRUE7QUFFRCxvQkFBb0IsQ0FBQyxlQUFyQixDQUFxQyxNQUFyQyxDQUE0QyxHQUE1QyxDQUFnRCxJQUFoRCxFQUFzRCxJQUF0RCxDQUEyRCxTQUFTLElBQVQsQ0FBZSxDQUVoRCxHQUFJLENBQUEsRUFBRSxDQUFDLE1BQVAsQ0FDQztBQUN4QjtBQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWEsU0FBYixFQUF3QixTQUF4QixDQUFrQyxJQUFJLENBQUMsSUFBdkMsQ0FDQTtBQUV1QixDQVIxQixDQVEyQixTQUFTLEtBQVQsQ0FBZSxDQUNqQixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDekIsQ0FWQSxFQWNELENBdEJILENBeUJBO0FBQ0MsTUFBTSxDQUFDLFNBQVAsQ0FBbUIsU0FBVSxJQUFWLENBQWUsU0FBZixDQUEwQixDQUMvQixHQUFJLENBQUEsYUFBYSxDQUFHLFNBQVMsQ0FBQyxJQUFWLENBQWUsQ0FDbkMsU0FBUyxDQUFFLE1BQU0sQ0FBQyxpQkFEaUIsQ0FFbkMsV0FBVyxDQUFFLGlCQUZzQixDQUduQyxVQUFVLENBQUUsdUJBSHVCLENBSW5DLElBQUksQ0FBRSxJQUo2QixDQUtuQyxPQUFPLENBQUUsQ0FDUCxRQUFRLENBQUUsbUJBQVksQ0FDcEIsTUFBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBbkIsQ0FBOEIsU0FBUyxDQUFDLFNBQXhDLENBQWtELEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBL0QsQ0FBcUUsUUFBUSxDQUFDLHFCQUE5RSxDQUFQLENBQ0QsQ0FITSxDQUwwQixDQUFmLENBQXBCLENBYU4sYUFBYSxDQUFDLE1BQWQsQ0FBcUIsSUFBckIsQ0FBMEIsU0FBVSxRQUFWLENBQW1CLE1BQW5CLENBQTBCLEtBQTFCLENBQWlDLENBQzFEO0FBR0YsQ0FKQyxDQUlDLFVBQVksQ0FDZjtBQUNDLENBTkMsRUFRVCxDQXRCQyxDQXlCRTtBQUNBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGlCQUFqQixDQUFzQyxVQUFVLENBQ3pDO0FBQ0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBakIsQ0FBZ0MsQ0FBaEMsRUFDQyxHQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGlCQUFqQixFQUFvQyxDQUF4QyxDQUEyQyxDQUV2QztBQUNDLG9CQUFvQixDQUFDLHdCQUFyQixDQUE4QyxJQUE5QyxDQUFtRCxTQUFuRCxFQUE4RCxJQUE5RCxDQUNjLFNBQVMsSUFBVCxDQUFlLENBQ0csTUFBTSxDQUFDLFdBQVAsQ0FBcUIsSUFBSSxDQUFDLElBQTFCLENBQ0E7QUFDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsRUFBNEIsU0FBaEMsQ0FDVyxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTJCLE1BQTNDLENBQWtELENBQUMsRUFBbkQsQ0FBdUQsQ0FDakQ7QUFDQSxHQUFJLENBQUEsQ0FBQyxDQUFHLE1BQU0sQ0FBQyxXQUFQLENBQW1CLEdBQW5CLENBQXVCLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBbkQsRUFBcUQsT0FBckQsQ0FBNkQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUEyQixDQUEzQixFQUE4QixrQkFBM0YsQ0FBUixDQUNBLEdBQUksQ0FBQyxFQUFFLENBQVAsQ0FBVSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTJCLENBQTNCLEVBQThCLGlCQUE5QixDQUFrRCxNQUFNLENBQUMsV0FBUCxDQUFtQixDQUFuQixFQUFzQixJQUF4RSxDQUNmLENBRVgsQ0FYakMsQ0FXa0MsU0FBUyxLQUFULENBQWUsQ0FDM0IsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ1UsQ0FiaEMsRUFnQlYsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsRUFBc0IsU0FBdEIsRUFBbUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLENBQXJCLEdBQXlCLElBQWhFLENBQXVFLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUF1QixFQUF2QixDQUN4RTtBQUNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBNEIseUJBQXlCLENBQUMsb0JBQTFCLEVBQTVCLENBQTZFO0FBRTdFO0FBQ0MsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLEVBQTRCLFNBQWhDLENBQ0EsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLE1BQXJDLENBQTZDLENBQUMsRUFBOUMsQ0FBa0QsQ0FDakQsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUEyQixNQUEzQyxDQUFrRCxDQUFDLEVBQW5ELENBQXVELENBQ3BCLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLENBQXJCLEdBQXlCLElBQTdCLENBQW1DLENBQ2hDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUEyQixDQUEzQixFQUE4QixRQUE5QixFQUF3QyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsQ0FBckIsRUFBd0IsUUFBcEUsQ0FBK0UsQ0FDM0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUEyQixNQUEzQixDQUFrQyxDQUFsQyxDQUFvQyxDQUFwQyxFQUF1QztBQUMxQyxDQUNILENBQ0wsQ0FDOUIsQ0FDb0I7QUFDQSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsTUFBckMsQ0FBNkMsQ0FBQyxFQUE5QyxFQUNjLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLENBQXJCLEdBQXlCLElBQTdCLENBQ0ksTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUEyQixJQUEzQixDQUFnQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsQ0FBckIsQ0FBaEMsRUFGbEIsQ0FLdkI7QUFDQSxHQUFJLENBQUEsT0FBTyxDQUFDLEVBQVosQ0FFRSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsRUFBNEIsU0FBaEMsQ0FBMEMsQ0FFcEIsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUEyQixNQUEzQyxDQUFrRCxDQUFDLEVBQW5ELENBQXVELENBQ25DLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUEyQixDQUEzQixFQUE4QixHQUE5QixFQUFtQyxTQUF2QyxDQUNJLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBMkIsQ0FBM0IsRUFBOEIsR0FBOUIsQ0FBa0MsTUFBbEQsQ0FBeUQsQ0FBQyxFQUExRCxDQUE4RCxDQUMxRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBMkIsQ0FBM0IsRUFBOEIsR0FBOUIsQ0FBa0MsQ0FBbEMsRUFBcUMsSUFBckMsRUFBMkMsY0FBL0MsQ0FBK0QsQ0FDM0Q7QUFDQSxHQUFNLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBMkIsQ0FBM0IsRUFBOEIsR0FBOUIsQ0FBa0MsQ0FBbEMsRUFBcUMsS0FBckMsRUFBNEMsS0FBN0MsRUFBd0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUEyQixDQUEzQixFQUE4QixHQUE5QixDQUFrQyxDQUFsQyxFQUFxQyxLQUFyQyxFQUE0QyxJQUF6RyxDQUFpSCxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTJCLENBQTNCLEVBQThCLEdBQTlCLENBQWtDLENBQWxDLEVBQXFDLEtBQXJDLENBQTJDLEtBQTNDLENBQ2pIO0FBQ0EsT0FBTyxDQUFDLElBQVIsQ0FBYSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTJCLENBQTNCLENBQWIsRUFDSCxFQUNULENBQ0wsQ0FDZjtBQUN4QixNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTJCLE9BQTNCLENBQW9DO0FBRXBDO0FBR0w7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUVhLENBQUM7QUFDWCxDQXBGRyxDQW9GRDtBQUlDO0FBQ0QsTUFBTSxDQUFDLGlCQUFQLENBQTJCLFNBQVUsSUFBVixDQUFnQixLQUFoQixDQUFzQixTQUF0QixDQUFnQyxDQUMxRCxHQUFJLENBQUEsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUF2QixDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLElBQUksQ0FBQyxJQUE1QixDQUVDO0FBRUMsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsYUFBbEIsQ0FDQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsSUFBMUIsQ0FFQSxNQUFNLENBQUMsRUFBUCxDQUFVLFFBQVYsQ0FBbUIsTUFBTSxDQUFDLFVBQTFCLENBQ0YsQ0FWRCxDQVVDO0FBS0Q7QUFDQTtBQUVBLE1BQU0sQ0FBQyxnQkFBUCxDQUEwQixTQUFVLElBQVYsQ0FBZSxTQUFmLENBQXlCLENBQ2xELEdBQUksQ0FBQSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBNUIsQ0FDQSxNQUFNLENBQUMsVUFBUCxDQUFrQixrQkFBbEIsQ0FDQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsSUFBMUIsQ0FDUyxHQUFJLE1BQU0sQ0FBQyxLQUFQLENBQWEsU0FBYixFQUF3QixjQUF4QixFQUF3QyxrQkFBNUMsQ0FBZ0UsQ0FDL0QsTUFBTSxDQUFDLEtBQVAsQ0FBYSxTQUFiLEVBQXdCLGNBQXhCLENBQXlDLGtCQUF6QyxDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWEsU0FBYixFQUF3QixVQUF4QixDQUFxQyxLQUFyQyxDQUNBLENBSVgsT0FBTyxDQUFDLEdBQVIsQ0FBWSxxQkFBdUIsa0JBQW5DLEVBRUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsU0FBakIsQ0FFRTtBQUNBO0FBQ0E7QUFFQTtBQUNDO0FBQ0Q7QUFFRjtBQUVBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLFNBQXBCLENBQThCLE1BQU0sQ0FBQyxLQUFQLENBQWEsU0FBYixFQUF3QixjQUF0RCxFQUVBLEdBQUksQ0FBQSxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVAsRUFBUixDQUVBLENBN0JELENBNkJDO0FBSUYsR0FBSSxDQUFBLElBQUksQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQyxDQUNBLEdBQUksQ0FBQSxJQUFJLENBQUMsTUFBVCxDQUFpQjtBQUdoQjtBQUNBLE1BQU0sQ0FBQyxNQUFQLENBQWdCLFNBQVUsS0FBVixDQUFpQixDQUVoQyxNQUFNLENBQUMsRUFBUCxDQUFVLFFBQVYsQ0FBbUIsTUFBbkIsQ0FBMEIsS0FBMUIsQ0FBZ0MsQ0FBaEMsRUFDQSxNQUFNLENBQUMsTUFBUCxDQUFjLElBQWQsQ0FDQSxHQUFJLENBQUEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFQLEVBQVIsQ0FDQSxDQUxELENBUUY7QUFDUyxvQkFBb0IsQ0FBQyxvQkFBckIsQ0FBMEMsSUFBMUMsQ0FBK0MsSUFBL0MsRUFBcUQsSUFBckQsQ0FDTixTQUFTLElBQVQsQ0FBZSxDQUNSLE1BQU0sQ0FBQyxlQUFQLENBQXlCLElBQUksQ0FBQyxJQUE5QixDQUVMLENBSkksQ0FJSCxTQUFTLEtBQVQsQ0FBZSxDQUNaLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUVMLENBUEssRUFhUCxDQXBSVSxDQW9SVDtBQUdIO0FBQ0EsT0FBTyxDQUFFLE9BeFJHLENBd1JNO0FBQ2xCLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBNkIsUUFBN0IsQ0FBdUMsQ0FBRTtBQUdqQixLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBc0IsVUFBdEIsQ0FDQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBVCxFQUF5QixTQUE3QixDQUF3QyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsY0FBcEIsQ0FBbUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUE1QyxFQUd6QztBQUNBLEdBQUksQ0FBQSxVQUFVLENBQUcsQ0FBQyxZQUFELENBQWpCLENBQ0EsR0FBSSxDQUFBLGdCQUFnQixDQUFHLENBQUMsR0FBRyxDQUFFLENBQUMsQ0FBQyxPQUFPLGVBQVIsQ0FBd0IsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQU4sQ0FBbUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsT0FBbEMsQ0FBRCxDQUE0QyxDQUFDLElBQUksQ0FBQyxrQkFBTixDQUF5QixLQUFLLENBQUMsRUFBL0IsQ0FBNUMsQ0FBaEMsQ0FBRCxDQUFOLENBQXlILE9BQU8sQ0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQU4sQ0FBb0IsTUFBTSxDQUFDLEtBQTNCLENBQUQsQ0FBbEksQ0FBc0ssSUFBSSxDQUFFLFlBQTVLLENBQXlMLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLE9BQWhOLENBQXdOLFFBQVEsQ0FBRSxLQUFLLENBQUMsRUFBTixDQUFTLGNBQTNPLENBQTBQLE1BQU0sQ0FBRyxLQUFLLENBQUMsT0FBelEsQ0FBaVIsYUFBYSxDQUFHLEtBQUssQ0FBQyxnQkFBdlMsQ0FBeVQsTUFBTSxDQUFDLFVBQWhVLENBQXZCLENBQ0E7QUFFQSxLQUFLLENBQUMsYUFBTixDQUFzQix5QkFBeUIsQ0FBQyxjQUExQixDQUF5QyxnQkFBekMsQ0FBdEIsQ0FBa0Y7QUFDbEYsS0FBSyxDQUFDLEVBQU4sQ0FBUyxPQUFULENBQWlCLEtBQUssQ0FBQyxhQUF2QixDQUVBLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixTQUFwQixDQUE4QixLQUFLLENBQUMsRUFBTixDQUFTLGNBQXZDLEVBQXdEO0FBQ3hEO0FBR0EsR0FBSSxDQUFBLE9BQU8sQ0FBRyxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsc0JBQVIsQ0FBK0IsYUFBL0IsQ0FBZCxDQUVBLE9BQU8sQ0FBQyxDQUFELENBQVAsQ0FBVyxnQkFBWCxDQUE0QixRQUE1QixDQUFzQyxTQUFTLENBQVQsQ0FBWSxDQUUxQyxRQUFRLENBQUMsVUFBVyxDQUNaLEdBQUksQ0FBQSxLQUFLLENBQUcsQ0FBQyxDQUFDLE1BQUYsQ0FBUyxLQUFyQixDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixRQUFwQixDQUE2QixLQUE3QixDQUFtQyxLQUFLLENBQUMsRUFBTixDQUFTLGNBQTVDLEVBQ0EsS0FBSyxDQUFDLEtBQU4sQ0FBYSxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsUUFBcEIsQ0FBNkIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUF0QyxDQUFiLENBRUEsR0FBSSxDQUFBLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBTixFQUFSLENBQ1AsQ0FOTyxDQUFSLENBT1AsQ0FURCxFQVl4QixHQUFJLENBQUEsV0FBVyxDQUFHLENBQWxCLENBQ0w7QUFDQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsUUFBVCxFQUFtQixTQUF2QixDQUFtQyxLQUFLLENBQUMsRUFBTixDQUFTLFFBQVQsQ0FBa0IsRUFBbEIsQ0FDbkMsS0FBSyxDQUFDLEtBQU4sQ0FBZSxLQUFLLENBQUMsRUFBTixDQUFTLFFBQXhCLENBRUM7QUFDQSxLQUFLLENBQUMsaUJBQU4sQ0FBd0IsU0FBUyxJQUFULENBQWMsR0FBZCxDQUFrQixHQUFsQixDQUFzQixRQUF0QixDQUErQixDQUV0RCxHQUFJLEdBQUcsRUFBRSxTQUFULENBQW9CLEdBQUcsQ0FBQyxDQUFKLENBRXBCLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFOLENBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFOLENBQVksTUFBNUIsQ0FBb0MsQ0FBQyxDQUFDLENBQXRDLENBQXlDLENBQUMsRUFBMUMsRUFDRyxHQUFJLEtBQUssQ0FBQyxLQUFOLENBQVksQ0FBWixFQUFlLElBQWYsRUFBcUIsSUFBekIsQ0FBK0IsSUFBSSxDQUFDLEVBQUwsQ0FEbEMsQ0FHQSxHQUFJLElBQUksRUFBRSxTQUFOLEVBQW1CLElBQUksRUFBSSxFQUEvQixDQUFtQyxDQUNsQyxLQUFLLENBQUMsS0FBTixDQUFZLElBQVosQ0FBaUIsQ0FBQyxPQUFPLElBQVIsQ0FBYSxNQUFNLEdBQW5CLENBQXVCLE1BQU0sR0FBN0IsQ0FBakIsRUFDQTtBQUNBLENBQ0QsQ0FYRCxDQWFZLEtBQUssQ0FBQyxVQUFOLENBQW1CLFNBQVMsS0FBVCxDQUFlLElBQWYsQ0FBcUIsQ0FFaEM7QUFDQTtBQUNBO0FBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLFVBQXBCLENBQStCLElBQS9CLENBQW9DLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBN0MsRUFDQSxHQUFJLENBQUEsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFOLEVBQVIsQ0FFUCxDQVJELENBV0EsS0FBSyxDQUFDLFNBQU4sQ0FBa0IsVUFBVyxDQUMxQixLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsU0FBcEIsQ0FBOEIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUF2QyxFQUNGLENBRkQsQ0FLUixLQUFLLENBQUMsU0FBTixDQUFrQixVQUFVLENBRXBCLEdBQUksQ0FBQSxNQUFNLENBQUMsSUFBWCxDQUNBLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWMsQ0FBQyxDQUFHLEtBQUssQ0FBQyxLQUFOLENBQVksTUFBOUIsQ0FBc0MsQ0FBQyxFQUF2QyxDQUEyQyxDQUFFO0FBQ3JDLEdBQUksQ0FBQSxVQUFVLENBQUMsQ0FBZixDQUNBLElBQUksR0FBSSxDQUFBLENBQUMsQ0FBRyxDQUFaLENBQWUsQ0FBQyxDQUFHLEtBQUssQ0FBQyxLQUFOLENBQVksTUFBL0IsQ0FBdUMsQ0FBQyxFQUF4QyxDQUE2QyxDQUFDO0FBQ3RDLEdBQUksS0FBSyxDQUFDLEtBQU4sQ0FBWSxDQUFaLEVBQWUsY0FBZixFQUFpQyxLQUFLLENBQUMsS0FBTixDQUFZLENBQVosRUFBZSxJQUFwRCxDQUEwRCxVQUFVLENBQUMsVUFBVSxDQUFDLENBQXRCLENBQ2pFLENBRUQsR0FBSSxVQUFVLENBQUcsS0FBSyxDQUFDLEtBQU4sQ0FBWSxDQUFaLEVBQWUsR0FBaEMsQ0FBcUMsQ0FBQyxRQUFRLENBQUMsWUFBVCxDQUFzQixZQUF0QixDQUFtQyx1QkFBbkMsQ0FBNEQsS0FBNUQsRUFDckMsQ0FERCxJQUNRLENBQUEsUUFBUSxDQUFDLFlBQVQsQ0FBc0IsWUFBdEIsQ0FBbUMsdUJBQW5DLENBQTRELElBQTVELEVBRVIsR0FBSSxVQUFVLENBQUcsS0FBSyxDQUFDLEtBQU4sQ0FBWSxDQUFaLEVBQWUsR0FBaEMsQ0FBcUMsQ0FBQyxRQUFRLENBQUMsWUFBVCxDQUFzQixZQUF0QixDQUFtQyxxQkFBbkMsQ0FBMEQsS0FBMUQsRUFDN0IsQ0FEVCxJQUNnQixDQUFBLFFBQVEsQ0FBQyxZQUFULENBQXNCLFlBQXRCLENBQW1DLHFCQUFuQyxDQUEwRCxJQUExRCxFQUV2QixDQUVmLEdBQUksS0FBSyxDQUFDLEtBQU4sQ0FBWSxNQUFaLENBQW1CLENBQXZCLENBQTBCLENBQ0osR0FBSSxLQUFLLENBQUMsS0FBTixDQUFZLE1BQVosQ0FBcUIsS0FBSyxDQUFDLEtBQU4sQ0FBWSxDQUFaLEVBQWUsR0FBeEMsQ0FBNkMsUUFBUSxDQUFDLFlBQVQsQ0FBc0IsWUFBdEIsQ0FBbUMsc0JBQW5DLENBQTJELEtBQTNELEVBQTdDLElBQ0ssQ0FBQSxRQUFRLENBQUMsWUFBVCxDQUFzQixZQUF0QixDQUFtQyxzQkFBbkMsQ0FBMkQsSUFBM0QsRUFBbUUsQ0FFM0Y7QUFDVyxNQUFPLENBQUEsTUFBUCxDQUVOLENBeEJGLENBd0JFO0FBR0o7QUFDSjtBQUNBO0FBQ00sS0FBSyxDQUFDLFVBQU4sQ0FBbUIsVUFBVyxDQUVuQztBQUNBLEdBQUksQ0FBQSxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQU4sRUFBWCxDQUNBLE1BQU0sQ0FBQyxJQUFQLENBQWE7QUFFYixHQUFJLE1BQU0sRUFBRSxJQUFaLENBQWtCLENBQ1gsR0FBSSxDQUFBLFVBQVUsQ0FBRyxRQUFRLENBQUMsR0FBVCxDQUFhLFdBQWIsQ0FBakIsQ0FBNEM7QUFFNUM7QUFDQSxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsV0FBcEIsQ0FBZ0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUF6QyxDQUF3RCxDQUM5RCxHQUFHLENBQUUscUJBRHlELENBRTlELE9BQU8sQ0FBRSxDQUFDLGNBQWdCLFVBQWpCLENBRnFELENBRzdELFdBQVcsQ0FBRSxDQUhnRCxDQUk3RDtBQUNBLElBQUksQ0FBRSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLG1CQUExQixDQUE4QyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxnQkFBbkUsQ0FMdUQsQ0FNN0QsVUFBVSxDQUFFLG9CQUFTLElBQVQsQ0FBZSxDQUN2QixRQUFRLENBQUMsVUFBVyxDQUFFLElBQUksQ0FBQyxNQUFMLENBQVksY0FBWixDQUE2QixDQUEzQyxDQUFSLENBQzBCLENBUitCLENBUzdELFdBQVcsQ0FBRSxxQkFBUyxJQUFULENBQWUsUUFBZixDQUF3QixNQUF4QixDQUFnQyxDQUNqQixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUwsQ0FBVyxRQUFYLENBQVQsQ0FBK0I7QUFFMUQsR0FBSSxNQUFNLEVBQUUsR0FBWixDQUFpQixDQUNmO0FBRW9DO0FBQ0M7QUFDRTtBQUVOLFFBQVEsQ0FBQyxVQUFXLENBQUUsSUFBSSxDQUFDLGFBQUwsQ0FBbUIsSUFBbkIsQ0FBMkIsQ0FBekMsQ0FBUixDQUViO0FBRWUsSUFBSSxDQUFDLFlBQUwsQ0FBa0IsRUFBbEIsQ0FFYTtBQUNBLEdBQUksSUFBSSxDQUFDLFNBQUwsRUFBZ0IsU0FBcEIsQ0FDQSxDQUNRLEdBQUksQ0FBQSxPQUFPLENBQUMsRUFBWixDQUNBLEdBQUksQ0FBQSxFQUFFLENBQUMsS0FBUCxDQUVBLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFMLENBQWUsT0FBZixDQUF1QixNQUF0QyxDQUE2QyxDQUFDLEVBQTlDLENBQWtELENBQUM7QUFDM0MsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQUwsQ0FBZSxPQUFmLENBQXVCLENBQXZCLEVBQTBCLE1BQTFCLENBQWlDLE1BQWhELENBQXVELENBQUMsRUFBeEQsRUFDUSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBTCxDQUFlLE9BQWYsQ0FBdUIsQ0FBdkIsRUFBMEIsTUFBMUIsQ0FBaUMsQ0FBakMsRUFBb0MsTUFBcEMsQ0FBMkMsTUFBMUQsQ0FBaUUsQ0FBQyxFQUFsRSxDQUNBLENBQ1EsT0FBTyxDQUFDLFFBQVEsSUFBSSxDQUFDLFNBQUwsQ0FBZSxPQUFmLENBQXVCLENBQXZCLEVBQTBCLE1BQTFCLENBQWlDLENBQWpDLEVBQW9DLE1BQXBDLENBQTJDLENBQTNDLEVBQThDLE1BQTlELENBQ0EsR0FBSSxJQUFJLENBQUMsU0FBTCxDQUFlLE9BQWYsQ0FBdUIsQ0FBdkIsRUFBMEIsTUFBMUIsQ0FBaUMsQ0FBakMsRUFBb0MsTUFBcEMsQ0FBMkMsQ0FBM0MsRUFBOEMsTUFBOUMsRUFBc0QsSUFBMUQsQ0FBZ0UsQ0FDeEQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFoQixDQUFxQjtBQUNyQixPQUFPLENBQUMsSUFBUixDQUFZO0FBQ25CLENBQ0QsSUFBSSxDQUFDLFlBQUwsQ0FBa0IsT0FBbEIsRUFBNkIsSUFBSSxDQUFDLFNBQUwsQ0FBZSxPQUFmLENBQXVCLENBQXZCLEVBQTBCLE1BQTFCLENBQWlDLENBQWpDLEVBQW9DLE1BQXBDLENBQTJDLENBQTNDLEVBQThDLFVBQTNFLENBQ1AsQ0FUVCxDQVVQO0FBR0Q7QUFDQSxHQUFJLElBQUksQ0FBQyxZQUFULENBQ0EsQ0FDUTtBQUNBLElBQUksQ0FBQyxVQUFMLENBQWdCLG9CQUFoQixDQUNBLG9CQUFvQixDQUFDLGNBQXJCLENBQW9DLFFBQXBDLENBQTZDLElBQUksQ0FBQyxjQUFsRCxDQUFpRSxLQUFLLENBQUMsRUFBTixDQUFTLGdCQUExRSxDQUEyRixLQUFLLENBQUMsRUFBTixDQUFTLG1CQUFwRyxDQUF5SCxJQUFJLENBQUMsU0FBTCxDQUFlLE9BQXhJLEVBQ3JELElBRHFELENBRVEsU0FBUyxJQUFULENBQWUsQ0FDQyxJQUFJLENBQUMsV0FBTCxDQUFpQixJQUFqQixDQUNBLEtBQUssQ0FBQyxnQkFBTixDQUF1QixLQUF2QixDQUNmLENBTFQsQ0FLVSxTQUFTLEtBQVQsQ0FBZSxDQUNULElBQUksQ0FBQyxTQUFMLENBQWUsSUFBZixDQUNBLElBQUksQ0FBQyxVQUFMLENBQWtCLEtBQUssQ0FBQyxHQUF4QixDQUVQLENBVFQsRUFVUCxDQUFDO0FBQ1QsQ0FuQ0QsSUFxQ0EsQ0FDUSxRQUFRLENBQUMsVUFBVyxDQUNaLElBQUksQ0FBQyxNQUFMLENBQWMsSUFBZCxDQUNQLENBRk8sQ0FBUixDQUdQLENBRUQsV0FBVyxHQUNYLEdBQUksS0FBSyxDQUFDLEtBQU4sQ0FBWSxNQUFaLEVBQXNCLFdBQTFCLENBQXNDLENBQUU7QUFDckMsVUFBVSxDQUFDLFVBQVgsQ0FBc0IsMkJBQXRCLENBQWtELENBQUMsY0FBYyxLQUFLLENBQUMsRUFBTixDQUFTLGdCQUF4QixDQUF5QyxrQkFBbUIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxtQkFBckUsQ0FBbEQsRUFDRixDQUVwQixDQTlEL0IsSUE4RHdDLENBQ0M7QUFDQyxRQUFRLENBQUMsVUFBVyxDQUNKLElBQUksQ0FBQyxXQUFMLENBQWlCLElBQWpCLENBQ0EsSUFBSSxDQUFDLE1BQUwsQ0FBWSxRQUFaLENBQ2QsQ0FITSxDQUFSLENBS1IsQ0FHSDtBQXBGNkIsQ0FBeEQsRUFxRm9CO0FBQzNCLENBMUZBLElBMEZNLENBQ0s7QUFDWCxDQUNNLENBbkdELENBbUdHO0FBSUwsS0FBSyxDQUFDLFlBQU4sQ0FBbUIsU0FBUyxJQUFULENBQ25CLENBQ0csSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQXBCLENBQTJCLENBQUMsRUFBNUIsQ0FBZ0MsQ0FDUCxHQUFJLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxJQUFSLEVBQWMsa0JBQWxCLENBQXNDLEtBQUssQ0FBQyxFQUFOLENBQVMsZ0JBQVQsQ0FBNEIsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLEtBQXBDLENBQTJDO0FBQ2pGLEdBQUksSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLElBQVIsRUFBYyxZQUFsQixDQUFnQyxLQUFLLENBQUMsRUFBTixDQUFTLG1CQUFULENBQStCLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxLQUF2QyxDQUErQztBQUMvRSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsbUJBQVQsQ0FBNkIsQ0FBN0IsRUFBa0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxnQkFBVCxDQUEwQixDQUFoRSxDQUFtRSxLQUFLLENBQUMsRUFBTixDQUFTLFdBQVQsQ0FBdUIsSUFBdkIsQ0FDcEUsQ0FHeEIsR0FBSSxLQUFLLENBQUMsS0FBTixDQUFZLE1BQVosQ0FBbUIsQ0FBbkIsRUFBd0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxXQUFyQyxDQUFrRCxLQUFLLENBQUMsVUFBTixHQUFxQjtBQUd6RSxDQVpELENBa0JFO0FBR0UsS0FBSyxDQUFDLFFBQU4sQ0FBZSxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsU0FBeEMsQ0FDQTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQTlPZ0QsQ0ErT3RDO0FBQ04sS0FBSyxDQUFDLEdBQU4sQ0FBVSxvQkFBVixDQUErQixTQUFTLEtBQVQsQ0FBZ0IsSUFBaEIsQ0FBcUIsQ0FDN0M7QUFDQSxHQUFJLEtBQUssQ0FBQyxLQUFOLENBQVksTUFBWixDQUFtQixDQUFuQixFQUF3QixLQUFLLENBQUMsRUFBTixDQUFTLFdBQXJDLENBQWtELEtBQUssQ0FBQyxVQUFOLEdBQ2xELENBSFAsRUFPQTtBQUNBLEtBQUssQ0FBQyxnQkFBTixDQUF3QixTQUFVLEtBQVYsQ0FBZ0IsSUFBaEIsQ0FBc0IsQ0FDM0MsS0FBSyxDQUFDLElBQU4sQ0FBVyxDQUFYLENBRUg7QUFDRTtBQUVBO0FBQ0QsQ0FQRCxDQWFFLENBQUM7QUE5aEJRLENBQVAsQ0FnaUJQLEVBQ0QsYUFFTyxRQUFTLENBQUEsWUFBVCxDQUF1QixRQUF2QixDQUFnQyxVQUFoQyxDQUEyQyxnQkFBM0MsQ0FBNEQseUJBQTVELENBQXNGLG9CQUF0RixDQUEyRyxlQUEzRyxDQUEySCxjQUEzSCxDQUEwSSxRQUExSSxDQUFtSixVQUFuSixDQUE4SixtQkFBOUosQ0FBa0wsSUFBbEwsQ0FBd0wsU0FBeEwsQ0FBbU0sQ0FDbE0sTUFBTyxDQUNQLFFBQVEsQ0FBRSxHQURILENBRUYsV0FBVyxDQUFFLHdDQUZYLENBR0YsVUFBVSxDQUFFLG9CQUFVLE1BQVYsQ0FBa0IsUUFBbEIsQ0FBMkIsVUFBM0IsQ0FBc0MsU0FBdEMsQ0FBZ0QsZ0JBQWhELENBQWlFLGlCQUFqRSxDQUFtRixJQUFuRixDQUF3RixlQUF4RixDQUF3Ryx5QkFBeEcsQ0FBa0ksY0FBbEksQ0FBaUosbUJBQWpKLENBQXFLLFFBQXJLLENBQThLLFlBQTlLLENBQTRMLENBRXJNO0FBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBZSxlQUFmLENBQ0EsTUFBTSxDQUFDLGlCQUFQLENBQTJCLElBQTNCLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsRUFBcUIsU0FBekIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQXNCLENBQUMsaUJBQWlCLENBQUMsQ0FBbkIsQ0FBdEIsQ0FDckMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLEtBQXBCLENBQTRCLEVBQTVCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE9BQXBCLENBQTRCLElBQTVCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLENBQXdCLElBQXhCLENBQ1osTUFBTSxDQUFDLElBQVAsQ0FBWSxjQUFaLENBRVksTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdEMsRUFBaUQsTUFBTSxDQUFDLEVBQXhELENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLFFBQXBCLENBQStCLEtBQS9CLENBRUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLElBQXJDLENBRUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLE9BQXBCLENBQTZCLFNBQVMsQ0FBVCxDQUFZLENBQ3JDO0FBQ0E7QUFGcUMsMkNBR25CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixLQUhELGNBR25DLHFEQUEyQyxJQUFoQyxDQUFBLENBQWdDLGVBQ25DLENBQUMsQ0FBQyxRQUFGLENBQWEsQ0FBYixDQUNILENBTDhCLHlEQU14QyxDQU5ELENBUUosTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHdCQUFwQixDQUErQyxTQUFTLEVBQVQsQ0FBWSxLQUFaLENBRS9DLENBRUksR0FBSSxDQUFBLEdBQUosQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixLQUFyQixDQUEyQixLQUEzQixFQUFrQyxPQUFsQyxHQUE0QyxTQUE1QyxFQUF5RCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsS0FBckIsQ0FBMkIsS0FBM0IsRUFBa0MsT0FBbEMsR0FBNEMsSUFBekcsQ0FDQSxDQUVFLEdBQUcsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsQ0FBMEIsR0FBMUIsQ0FBOEIsU0FBUyxDQUFULENBQVksQ0FBRSxNQUFPLENBQUEsQ0FBQyxDQUFDLEVBQVQsQ0FBYyxDQUExRCxFQUE0RCxPQUE1RCxDQUFvRSxFQUFwRSxDQUFOLENBRUUsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFXLENBQ1Asb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLEVBQTlDLEVBQWtELElBQWxELENBQXVELFNBQVUsSUFBVixDQUFnQixDQUUvRCxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsS0FBckIsQ0FBMkIsS0FBM0IsRUFBa0MsT0FBbEMsQ0FBNEMsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUF0RCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFvQixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsS0FBckIsQ0FBMkIsS0FBM0IsRUFBa0MsY0FBdEQsQ0FDQTtBQUdQLENBUEQsQ0FPRSxTQUFTLEtBQVQsQ0FBZSxDQUNmLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNELENBVEQsRUFXSCxDQUdKLENBQ0osQ0ExQkQsQ0E2QkksTUFBTSxDQUFDLE1BQVAsQ0FBYyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsY0FBeEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxNQUFQLEVBQWUsU0FBbkIsQ0FBOEIsTUFBTSxDQUFDLE1BQVAsQ0FBYyxDQUFkLENBQzlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixNQUFwQixDQUEyQixNQUFNLENBQUMsTUFBbEMsQ0FDQTtBQUNBLE1BQU0sQ0FBQyxhQUFQLENBQXdCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixZQUFsRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUE2QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsU0FBdkQsQ0FDQSxNQUFNLENBQUMsV0FBUCxDQUFtQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsV0FBN0MsQ0FDQSxNQUFNLENBQUMsY0FBUCxDQUF3QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZ0JBQWxELENBQ0EsTUFBTSxDQUFDLGFBQVAsQ0FBdUIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQWpELENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQWxELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGdCQUFwQixDQUFxQyxDQUFyQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixrQkFBcEIsQ0FBeUMsTUFBTSxDQUFDLGtCQUFoRCxDQUNBLE1BQU0sQ0FBQyxjQUFQLENBQXdCLE1BQU0sQ0FBQyxjQUFQLEVBQXlCLEtBQWpELENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsTUFBTSxDQUFDLGNBQVAsRUFBeUIsQ0FBakQsQ0FDQSxNQUFNLENBQUMsYUFBUCxDQUF1QixNQUFNLENBQUMsYUFBUCxFQUF3QixDQUEvQyxDQUNBLE1BQU0sQ0FBQyxhQUFQLENBQXVCLE1BQU0sQ0FBQyxhQUFQLEVBQXdCLENBQS9DLENBQ1osR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsRUFBcUIsU0FBekIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLEVBQXBCLENBRXpCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFxQyxVQUFVLENBQ3BDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixRQUFwQixDQUFnQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsUUFBcEIsQ0FBK0IsS0FBL0IsQ0FBc0MsSUFBdEUsQ0FDVixDQUZELENBSUEsR0FBSSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsU0FBMUIsRUFBcUMsR0FBekMsQ0FBK0MsQ0FDdEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQTJCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixnQkFBckQsQ0FDTCxDQUZKLElBRVMsQ0FDRCxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBMkIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQXJELENBQ0osQ0FFUixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsY0FBcEIsQ0FBbUMsU0FBUyxpQkFBVCxDQUEyQixtQkFBM0IsQ0FDbkMsQ0FDSSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsRUFBdUMsU0FBM0MsQ0FDQSxDQUNHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBd0MsaUJBQXhDLENBQ0YsQ0FIRCxJQUlBLENBQ0csR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLEVBQXVDLENBQXZDLEVBQTRDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsRUFBdUMsaUJBQXZGLENBQ0ssTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUF3QyxpQkFBeEMsQ0FETCxJQUdJLENBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUFzQyxDQUF0QyxDQUNOLENBQ0QsR0FBSSxtQkFBSixDQUF5QixNQUFNLENBQUMsS0FBUCxDQUFhLGtCQUFiLENBQWdDLE1BQU0sQ0FBQyxFQUF2QyxFQUU1QixDQWRELENBa0JBLEdBQUksQ0FBQSxVQUFVLENBQUcsQ0FBQyxZQUFELENBQWpCLENBQ0EsR0FBSSxDQUFBLGdCQUFnQixDQUFHLENBQUMsSUFBSSxDQUFFLG9CQUFQLENBQ3ZCLFFBQVEsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBREcsQ0FDWSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsY0FEcEMsQ0FDbUQsZUFBZSxDQUFDLE1BQU0sQ0FBQyxhQUQxRSxDQUN3RixNQUFNLENBQUcsTUFBTSxDQUFDLE9BRHhHLENBQ2dILGFBQWEsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BRDFJLENBQ21KLE1BQU0sQ0FBQyxVQUQxSixDQUF2QixDQUVBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUFwQixDQUFvQyx5QkFBeUIsQ0FBQyxjQUExQixDQUF5QyxnQkFBekMsQ0FBcEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsT0FBcEIsQ0FBNEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGFBQWhELENBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixhQUF0QyxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLFNBQXZCLENBQWtDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixjQUFjLENBQUMsTUFBZixFQUFsQixDQUVsQyxNQUFNLENBQUMsR0FBUCxDQUFhLG1CQUFiLENBQ0EsR0FBSSxDQUFBLG1CQUFtQixDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBcEMsQ0FDQSxHQUFJLENBQUEsb0JBQW9CLENBQUcsc0JBQXNCLE1BQU0sQ0FBQyxNQUE3QixDQUFvQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsU0FBekYsQ0FDQSxHQUFJLENBQUEsb0JBQUosQ0FLSixHQUFJLENBQUEsVUFBVSxDQUFFLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBMUIsQ0FBd0MsR0FBeEMsQ0FBNEMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUE1RSxDQUFvRixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTlGLENBQWhCLENBQ0EsR0FBSSxDQUFBLGNBQWMsQ0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixJQUF4QyxDQUdDLEdBQUksQ0FBQSxhQUFhLENBQUcsUUFBaEIsQ0FBQSxhQUFnQixDQUFTLElBQVQsQ0FBYyxDQUVqQyxHQUFJLENBQUEsS0FBSyxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLGVBQS9CLENBQ0EsR0FBSSxLQUFLLEVBQUUsU0FBWCxDQUFzQixLQUFLLENBQUMsRUFBTixDQUN0QixHQUFJLENBQUEsSUFBSSxPQUFKLEVBQUEsSUFBSSxTQUFKLFFBQUEsSUFBSSxDQUFFLFlBQU4sR0FBb0IsU0FBeEIsQ0FBbUMsS0FBSyxDQUFDLGNBQUQsQ0FBTCxDQUF3QixJQUFJLENBQUMsWUFBN0IsQ0FDbkMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsZUFBbkIsQ0FBcUMsS0FBckMsQ0FDQSxNQUFNLENBQUMsVUFBUCxDQUFrQixVQUFsQixDQUE2QixJQUE3QixTQUE2QixJQUE3QixpQkFBNkIsSUFBSSxDQUFFLFlBQW5DLEVBRUgsQ0FSRSxDQVVILEdBQUksQ0FBQSxhQUFhLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLGNBQXJCLENBQW9DLFlBQXBDLENBQWlELGFBQWpELENBQXBCLENBRUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXlCLFNBQVMsU0FBVCxDQUFtQixNQUFuQixDQUEwQixlQUExQixDQUEwQyxDQUVuQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsS0FBcEIsQ0FBMEIsU0FBMUIsRUFBcUMsVUFBckMsQ0FBa0QsQ0FBQyxZQUFZLENBQUMsQ0FBZCxDQUFsRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixLQUFwQixDQUEwQixTQUExQixFQUFxQyxZQUFyQyxDQUFvRCxNQUFwRCxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLEtBQXBCLENBQTBCLFNBQTFCLEVBQXFDLFNBQXJDLEdBQWlELFNBQXJELENBQWdFLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixLQUFwQixDQUEwQixTQUExQixFQUFxQyxTQUFyQyxDQUErQyxFQUEvQyxDQUNoRSxHQUFJLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLEtBQXBCLENBQTBCLFNBQTFCLEVBQXFDLGFBQXRDLEVBQXVELENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLEtBQXBCLENBQTBCLFNBQTFCLEVBQXFDLFdBQWpHLENBQ0EsQ0FDSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsS0FBcEIsQ0FBMEIsU0FBMUIsRUFBcUMsU0FBckMsQ0FBK0MsUUFBL0MsQ0FBd0QsQ0FBQyxFQUFELENBQXhELENBRUgsQ0FKRCxJQUlLLENBRUQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLEtBQXBCLENBQTBCLFNBQTFCLEVBQXFDLFFBQXJDLENBQWdELElBQWhELENBRUgsQ0FDRCxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsS0FBcEIsQ0FBMEIsU0FBMUIsRUFBcUMsU0FBckMsQ0FBK0MsT0FBL0MsQ0FBdUQsQ0FBQyxNQUFNLENBQUMsZUFBUixDQUF2RCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixLQUFwQixDQUEwQixTQUExQixFQUFxQyxVQUFyQyxDQUFrRCxJQUFsRCxDQUdsQyxDQWxCRSxDQXFCZ0I7QUFDUixNQUFNLENBQUMsRUFBUCxDQUFVLGlCQUFWLENBQThCLFNBQVUsSUFBVixDQUFnQixLQUFoQixDQUFzQixDQUM1QyxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTJCLElBQUksQ0FBQyxJQUFoQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBMkIsSUFBM0IsQ0FFUCxDQUpELENBSUM7QUFHWixNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBMEIsVUFFZCxDQUVHLFFBQVEsQ0FBQyxjQUFULENBQXdCLGFBQWEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUEvQyxFQUErRCxLQUEvRCxHQUNGLENBTGIsQ0FPVztBQUNBO0FBRUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUE2QixTQUFVLElBQVYsQ0FBZSxTQUFmLENBQXlCLENBQzlDLEdBQUksQ0FBQSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBNUIsQ0FDQSxHQUFJLENBQUEsUUFBSixDQUVDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixJQUExQixDQUNELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLEtBQXBCLENBQTBCLFNBQTFCLEVBQXFDLGNBQXJDLEVBQXFELGtCQUF6RCxDQUE2RSxDQUM1RSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsS0FBcEIsQ0FBMEIsU0FBMUIsRUFBcUMsY0FBckMsQ0FBc0Qsa0JBQXRELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLEtBQXBCLENBQTBCLFNBQTFCLEVBQXFDLGFBQXJDLENBQXFELElBQUksQ0FBQyxFQUExRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixLQUFwQixDQUEwQixTQUExQixFQUFxQyxRQUFyQyxDQUFnRCxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTFELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLEtBQXBCLENBQTBCLFNBQTFCLEVBQXFDLFVBQXJDLENBQWtELEtBQWxELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLEtBQXBCLENBQTBCLFNBQTFCLEVBQXFDLGdCQUFyQyxDQUF3RCxJQUF4RCxDQUNBO0FBQ0EsQ0FFRCxNQUFNLENBQUMsU0FBUCxDQUFpQixTQUFqQixDQUlBLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF1QixTQUF2QixDQUFpQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsS0FBcEIsQ0FBMEIsU0FBMUIsRUFBcUMsY0FBdEUsQ0FBcUYsUUFBckYsRUFFQSxHQUFJLENBQUEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixFQUFSLENBRVAsQ0F0QkQsQ0FzQkM7QUFJYixHQUFJLENBQUEsSUFBSSxDQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDLENBQ0EsR0FBSSxDQUFBLElBQUksQ0FBQyxNQUFULENBQWlCO0FBR0Q7QUFDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFFBQVYsQ0FBcUIsU0FBVSxLQUFWLENBQWlCLENBRWxDLE1BQU0sQ0FBQyxFQUFQLENBQVUsaUJBQVYsQ0FBOEIsSUFBOUIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsS0FBckIsQ0FBMkIsS0FBM0IsRUFBa0MsUUFBbEMsQ0FBMkMsQ0FBQyxFQUFELENBQTNDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXVCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixLQUFyQixDQUEyQixLQUEzQixFQUFrQyxPQUExQyxDQUF2QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixLQUFyQixDQUEyQixLQUEzQixFQUFrQyxZQUFsQyxDQUFpRCxNQUFqRCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixLQUFyQixDQUEyQixLQUEzQixFQUFrQyxVQUFsQyxDQUErQyxDQUFDLFlBQVksQ0FBQyxDQUFkLENBQWdCLGtCQUFrQixDQUFDLElBQW5DLENBQS9DLENBRUQsUUFBUSxDQUFDLFVBQVUsQ0FDZCxNQUFNLENBQUMsRUFBUCxDQUFVLGlCQUFWLENBQThCLEtBQTlCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLEtBQXJCLENBQTJCLEtBQTNCLEVBQWtDLFVBQWxDLENBQStDLElBQS9DLENBQ0osQ0FITyxDQUFSLENBSUYsQ0FaRCxDQWNmO0FBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQW1CLFNBQVUsS0FBVixDQUFpQixDQUVuQyxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsS0FBckIsQ0FBMkIsTUFBM0IsQ0FBa0MsS0FBbEMsQ0FBd0MsQ0FBeEMsRUFDQSxNQUFNLENBQUMsTUFBUCxDQUFjLElBQWQsQ0FDQSxHQUFJLENBQUEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixFQUFSLENBQ0EsQ0FMRCxDQVFlO0FBQ0Esb0JBQW9CLENBQUMsMkJBQXJCLENBQWlELElBQWpELENBQXNELE1BQXRELEVBQThELElBQTlELENBQ0ksU0FBVSxJQUFWLENBQWdCLENBQ1osTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFWLENBQTRCLElBQUksQ0FBQyxJQUFqQyxDQUVBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLEtBQXJCLENBQTJCLE1BQTNCLENBQWtDLENBQXRDLENBQXlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUEyQixJQUEzQixDQUF6QyxJQUNTLElBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLEtBQXJCLENBQTJCLE1BQTNCLEVBQW1DLENBQXZDLENBQXlDLENBQzlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUEyQixLQUEzQixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFvQixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsS0FBckIsQ0FBMkIsQ0FBM0IsRUFBOEIsYUFBbEQsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBc0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLEtBQXJCLENBQTJCLENBQTNCLEVBQThCLEVBQXBELENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLHdCQUFwQixDQUE2QyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQXZELENBQWlFLENBQWpFLEVBQ0gsQ0FFSixDQVpMLENBWU0sU0FBUyxLQUFULENBQWUsQ0FDYixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDSCxDQWRMLEVBZ0JmLE1BQU0sQ0FBQyxFQUFQLENBQVUscUJBQVYsQ0FBbUMsU0FBUyxPQUFULENBQ3BDLENBQ0UsR0FBSSxDQUFBLFFBQVEsQ0FBRyx5QkFBeUIsQ0FBQyxlQUExQixDQUEwQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsWUFBcEUsQ0FBZixDQUNPLEdBQUksQ0FBQSxTQUFTLENBQUMsQ0FBZCxDQUFnQixlQUFlLENBQUMsQ0FBaEMsQ0FBa0MsU0FBbEMsQ0FBNEMsY0FBNUMsQ0FDQSxHQUFJLENBQUMsS0FBSyxDQUFDLE9BQU4sQ0FBYyxRQUFkLENBQUwsQ0FDQSxDQUNhLGNBQWMsQ0FBRyxDQUFDLFFBQUQsQ0FBakIsQ0FDWixDQUhELElBSUEsQ0FDYSxjQUFjLENBQUcsUUFBakIsQ0FDWixDQUNELElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUE5QixDQUFxQyxDQUFDLEVBQXRDLENBQ0EsQ0FDYSxTQUFTLENBQUcsY0FBYyxDQUFDLENBQUQsQ0FBMUIsQ0FDQSxHQUFJLFNBQVMsQ0FBQyxHQUFWLEVBQWUsU0FBZixFQUE0QixTQUFTLENBQUMsR0FBVixFQUFlLElBQS9DLENBQ0EsQ0FDQSxJQUFLLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBWCxDQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBVixDQUFjLE1BQTdCLENBQW9DLENBQUMsRUFBckMsQ0FDQSxDQUNFLEdBQUksU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLElBQWpCLEVBQXVCLE9BQTNCLENBQ0EsQ0FDRSxHQUFJLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixFQUF3QixTQUF4QixFQUFxQyxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsRUFBd0IsSUFBakUsQ0FDQSxDQUNFLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixNQUF0QyxDQUE2QyxDQUFDLEVBQTlDLENBQ0EsQ0FDQyxHQUFJLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixDQUF2QixFQUEwQixJQUExQixFQUFnQyxZQUFoQyxFQUFnRCxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsQ0FBdkIsRUFBMEIsS0FBMUIsRUFBaUMsU0FBckYsQ0FBZ0csU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixDQUF2QixFQUEwQixLQUFwQyxDQUNoRyxHQUFJLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixDQUF2QixFQUEwQixJQUExQixFQUFnQyxrQkFBaEMsRUFBc0QsU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLENBQXZCLEVBQTBCLEtBQTFCLEVBQWlDLFNBQTNGLENBQXNHLGVBQWUsQ0FBQyxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsQ0FBdkIsRUFBMEIsS0FBMUMsQ0FHdEcsQ0FHRixDQUVGLENBRUEsQ0FDRixDQUNiLENBRVYsTUFBTyxDQUFDLFlBQVksU0FBYixDQUF1QixrQkFBa0IsZUFBekMsQ0FBUCxDQUNDLENBeENBLENBMENELE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixXQUFwQixDQUFrQyxVQUVsQyxDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixLQUFwQixDQUEwQixFQUExQixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixjQUFwQixDQUFxQyxJQUFyQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixnQkFBcEIsR0FDSCxDQU5ELENBUUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGlCQUFwQixDQUF3QyxTQUFTLElBQVQsQ0FDeEMsQ0FFUyxHQUFJLElBQUksRUFBRSxTQUFWLENBQW9CLENBQ2pCLEdBQUksQ0FBQSxFQUFKLENBQ0EsR0FBSSxLQUFLLENBQUMsT0FBTixDQUFjLElBQWQsQ0FBSixDQUNBLENBQ0MsRUFBRSxDQUFJLElBQU4sQ0FDQSxDQUhELElBR00sQ0FBQSxFQUFFLENBQUUsQ0FBQyxJQUFELENBQUosQ0FFSixJQUFJLEdBQUksQ0FBQSxDQUFDLENBQUMsQ0FBVixDQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBakIsQ0FBd0IsQ0FBQyxFQUF6QixDQUE2QixDQUUzQixHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixFQUFFLENBQUMsQ0FBRCxDQUFGLENBQU0sUUFBcEMsQ0FDQSxDQUNFLHlCQUF5QixDQUFDLE9BQTFCLENBQWtDLEVBQUUsQ0FBQyxDQUFELENBQXBDLEVBQ0Q7QUFDQSxDQUNGLENBQ04sQ0FFSixDQXBCTCxDQXVCSyxNQUFNLENBQUMsR0FBUCxDQUFXLDBCQUEwQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsY0FBL0QsQ0FBOEUsU0FBUyxLQUFULENBQWdCLElBQWhCLENBQXFCLENBQ2hHLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBc0MsSUFBdEMsRUFFRixDQUhELEVBS0QsTUFBTSxDQUFDLEdBQVAsQ0FBVyx5QkFBeUIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQTlELENBQThFLFNBQVMsS0FBVCxDQUFnQixJQUFoQixDQUFxQixDQUUvRixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsaUJBQXBCLENBQXNDLElBQXRDLEVBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLGNBQXBCLENBQXFDLEtBQXJDLENBRUQsQ0FMSCxFQU9ILENBM1VVLENBMlVUO0FBR0g7QUFDQSxPQUFPLENBQUUsT0EvVUcsQ0FnVlosSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE2QixRQUE3QixDQUF1QyxDQUc1QixHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxFQUFvQixTQUF4QixDQUFvQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFuQixDQUFyQixDQUVwQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsY0FBbkIsQ0FBb0MsSUFBcEMsQ0FHWSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxFQUFxQixTQUFyQixFQUFrQyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsRUFBcUIsSUFBM0QsQ0FBaUUsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLEVBQXBCLENBQ2pFLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLEtBQXBCLEVBQTJCLFNBQTNCLEVBQXdDLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixLQUFwQixFQUEyQixJQUF2RSxDQUE2RSxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsS0FBcEIsQ0FBMEIsRUFBMUIsQ0FFN0UsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQXNCLFVBQXRCLENBQ0EsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLGNBQVQsRUFBeUIsU0FBN0IsQ0FBd0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLGNBQXBCLENBQW1DLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBNUMsRUFHeEM7QUFDQSxHQUFJLENBQUEsVUFBVSxDQUFHLENBQUMsWUFBRCxDQUFqQixDQUNBLEdBQUksQ0FBQSxnQkFBZ0IsQ0FBRyxDQUFDLEdBQUcsQ0FBRSxDQUFDLENBQUMsT0FBTyxlQUFSLENBQXdCLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLE9BQWxDLENBQUQsQ0FBNEMsQ0FBQyxJQUFJLENBQUMsa0JBQU4sQ0FBeUIsS0FBSyxDQUFDLEVBQS9CLENBQTVDLENBQWhDLENBQUQsQ0FBTixDQUF5SCxPQUFPLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFOLENBQW9CLE1BQU0sQ0FBQyxLQUEzQixDQUFELENBQWxJLENBQXNLLElBQUksQ0FBRSxZQUE1SyxDQUF5TCxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxPQUFoTixDQUF3TixRQUFRLENBQUUsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUEzTyxDQUEwUCxNQUFNLENBQUcsS0FBSyxDQUFDLE9BQXpRLENBQWlSLGFBQWEsQ0FBRyxLQUFLLENBQUMsZ0JBQXZTLENBQXlULE1BQU0sQ0FBQyxVQUFoVSxDQUF2QixDQUNBO0FBRUEsS0FBSyxDQUFDLGFBQU4sQ0FBc0IseUJBQXlCLENBQUMsY0FBMUIsQ0FBeUMsZ0JBQXpDLENBQXRCLENBQWtGO0FBQ2xGLEtBQUssQ0FBQyxFQUFOLENBQVMsT0FBVCxDQUFpQixLQUFLLENBQUMsYUFBdkIsQ0FFQSxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsU0FBcEIsQ0FBOEIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUF2QyxFQUF3RDtBQUN4RDtBQUVBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixnQkFBbkIsQ0FBc0MsVUFDdEMsQ0FDSSxHQUFJLENBQUEsT0FBSixDQUVBLFFBQVEsQ0FBQyxVQUFVLENBQ2YsT0FBTyxDQUFHLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxzQkFBUixDQUErQixhQUEvQixDQUFWLENBRUEsT0FBTyxDQUFDLENBQUQsQ0FBUCxDQUFXLGdCQUFYLENBQTRCLFFBQTVCLENBQXNDLFNBQVMsQ0FBVCxDQUFZLENBQzlDLFFBQVEsQ0FBQyxVQUFVLENBQ1gsR0FBSSxDQUFBLEtBQUssQ0FBRyxDQUFDLENBQUMsTUFBRixDQUFTLEtBQXJCLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLFFBQXBCLENBQTZCLEtBQTdCLENBQW1DLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBNUMsRUFDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsS0FBbkIsQ0FBMEIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLFFBQXBCLENBQTZCLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBdEMsQ0FBMUIsQ0FDQTtBQUNBLEdBQUksQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLGNBQWQsQ0FDQSxDQUNJLEdBQUksQ0FBQSxRQUFRLENBQUcsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLEtBQXBCLENBQTBCLENBQTFCLEVBQTZCLE9BQTVDLENBQ0EsSUFBSSxHQUFJLENBQUEsU0FBUyxDQUFDLENBQWxCLENBQXFCLFNBQVMsQ0FBRyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsS0FBbkIsQ0FBeUIsTUFBMUQsQ0FBa0UsU0FBUyxFQUEzRSxDQUErRSxDQUMzRSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsS0FBbkIsQ0FBeUIsU0FBekIsRUFBb0MsY0FBcEMsQ0FBcUQsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLEtBQXBCLENBQTBCLENBQTFCLEVBQTZCLFFBQTdCLENBQXNDLGNBQTNGLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLEtBQW5CLENBQXlCLFNBQXpCLEVBQW9DLGFBQXBDLENBQW9ELEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixLQUFwQixDQUEwQixDQUExQixFQUE2QixRQUFqRixDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixLQUFuQixDQUF5QixTQUF6QixFQUFvQyxRQUFwQyxDQUErQyxLQUFLLENBQUMsRUFBTixDQUFTLGNBQXhELENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLEtBQW5CLENBQXlCLFNBQXpCLEVBQW9DLFVBQXBDLENBQWlELEtBQWpELENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLEtBQW5CLENBQXlCLFNBQXpCLEVBQW9DLGdCQUFwQyxDQUF1RCxJQUF2RCxDQUVBLEtBQUssQ0FBQyxFQUFOLENBQVMsWUFBVCxDQUFzQixTQUF0QixDQUFnQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsS0FBbkIsQ0FBeUIsU0FBekIsRUFBb0MsY0FBcEUsQ0FBbUYsUUFBbkYsRUFDSCxDQUNKLENBQ0QsR0FBSSxDQUFBLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsRUFBUixDQUNQLENBbkJPLENBQVIsQ0FvQkgsQ0FyQkQsRUF1QkgsQ0ExQk8sQ0FBUixDQTJCSCxDQS9CRCxDQWlDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsZ0JBQW5CLEdBQ1IsR0FBSSxDQUFBLFdBQVcsQ0FBRyxDQUFsQixDQUNyQjtBQUNBLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxRQUFULEVBQW1CLFNBQXZCLENBQW1DLEtBQUssQ0FBQyxFQUFOLENBQVMsUUFBVCxDQUFrQixFQUFsQixDQUdsQztBQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsaUJBQVQsQ0FBMkIsU0FBUyxJQUFULENBQWMsR0FBZCxDQUFrQixHQUFsQixDQUFzQixRQUF0QixDQUErQixDQUV6RCxHQUFJLEdBQUcsRUFBRSxTQUFULENBQW9CLEdBQUcsQ0FBQyxDQUFKLENBRXBCLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFOLENBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixLQUFwQixDQUEwQixNQUExQyxDQUFrRCxDQUFDLENBQUMsQ0FBcEQsQ0FBdUQsQ0FBQyxFQUF4RCxFQUNHLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLEtBQXBCLENBQTBCLENBQTFCLEVBQTZCLElBQTdCLEVBQW1DLElBQXZDLENBQTZDLElBQUksQ0FBQyxFQUFMLENBRGhELENBR0EsR0FBSSxJQUFJLEVBQUUsU0FBTixFQUFtQixJQUFJLEVBQUksRUFBL0IsQ0FBbUMsQ0FHbEMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLEtBQXBCLENBQTBCLElBQTFCLENBQStCLENBQUMsV0FBVyxLQUFLLENBQUMsRUFBTixDQUFTLGdCQUFyQixDQUFzQyxNQUFNLEdBQTVDLENBQWdELE1BQU0sR0FBdEQsQ0FBL0IsRUFFa0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLHdCQUFuQixDQUE0QyxLQUFLLENBQUMsRUFBTixDQUFTLGdCQUFULENBQTBCLEVBQXRFLENBQXlFLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixLQUFwQixDQUEwQixNQUExQixDQUFpQyxDQUExRyxFQUNsQjtBQUNBLENBQ0QsQ0FmRCxDQWlCWSxLQUFLLENBQUMsVUFBTixDQUFtQixTQUFTLEtBQVQsQ0FBZSxJQUFmLENBQXFCLENBRWhDLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixVQUFwQixDQUErQixJQUEvQixDQUFvQyxLQUFLLENBQUMsRUFBTixDQUFTLGNBQTdDLEVBQ0EsR0FBSSxDQUFBLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsRUFBUixDQUVQLENBTEQsQ0FRQSxLQUFLLENBQUMsU0FBTixDQUFrQixVQUFXLENBQzFCLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixTQUFwQixDQUE4QixLQUFLLENBQUMsRUFBTixDQUFTLGNBQXZDLEVBQ0YsQ0FGRCxDQUlGLEtBQUssQ0FBQyxhQUFOLENBQXNCLFNBQVMsR0FBVCxDQUFhLENBQ2xDLE1BQU8sQ0FBQSxJQUFJLENBQUMsV0FBTCxDQUFpQixHQUFqQixDQUFQLENBQ0YsQ0FGQyxDQUdOLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFxQixVQUFVLENBQ25DO0FBQ1ksR0FBSSxDQUFBLE1BQU0sQ0FBQyxJQUFYLENBQ0EsSUFBSyxHQUFJLENBQUEsQ0FBQyxDQUFDLENBQVgsQ0FBYyxDQUFDLENBQUcsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLEtBQXBCLENBQTBCLE1BQTVDLENBQW9ELENBQUMsRUFBckQsQ0FBeUQsQ0FBRTtBQUVyRDtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUVBQ3dCLEdBQUksQ0FBQSxVQUFVLENBQUcsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLEtBQW5CLENBQXlCLE1BQTFDLENBRUEsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsS0FBcEIsQ0FBMEIsQ0FBMUIsRUFBNkIsR0FBN0IsRUFBa0MsU0FBdEMsQ0FDSSxHQUFJLFVBQVUsQ0FBRyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsS0FBcEIsQ0FBMEIsQ0FBMUIsRUFBNkIsR0FBOUMsQ0FBbUQsMkJBQy9DLFFBQVEsQ0FBQyxpQkFBaUIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUEzQixDQUFSLENBQW1ELFlBQW5ELENBQWdFLGdCQUFoRSxDQUFrRixLQUFsRixFQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsUUFBVCxDQUFvQix3QkFBQSxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsc0VBQXFCLG1CQUFyQixHQUE2QywrQkFBa0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLEtBQXBCLENBQTBCLENBQTFCLEVBQTZCLEdBQS9ELENBQXFFLFFBQXRJLENBQ0gsQ0FIRCxJQUdTLENBQ0wsUUFBUSxDQUFDLGlCQUFpQixLQUFLLENBQUMsRUFBTixDQUFTLGNBQTNCLENBQVIsQ0FBbUQsWUFBbkQsQ0FBZ0UsZ0JBQWhFLENBQWtGLElBQWxGLEVBQ0gsQ0FHTCxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixLQUFwQixDQUEwQixDQUExQixFQUE2QixHQUE3QixFQUFrQyxTQUF0QyxDQUNJLEdBQUksVUFBVSxDQUFHLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixLQUFwQixDQUEwQixDQUExQixFQUE2QixHQUE5QyxDQUFtRCwyQkFDL0MsUUFBUSxDQUFDLGlCQUFpQixLQUFLLENBQUMsRUFBTixDQUFTLGNBQTNCLENBQVIsQ0FBbUQsWUFBbkQsQ0FBZ0UsY0FBaEUsQ0FBZ0YsS0FBaEYsRUFDQyxLQUFLLENBQUMsRUFBTixDQUFTLFFBQVQsQ0FBb0Isd0JBQUEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULHNFQUFxQixpQkFBckIsR0FBMkMsYUFBZ0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLEtBQXBCLENBQTBCLENBQTFCLEVBQTZCLEdBQTdDLENBQW1ELG9CQUFsSCxDQUNKLENBSEQsSUFHVSxDQUFHLFFBQVEsQ0FBQyxpQkFBaUIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUEzQixDQUFSLENBQW1ELFlBQW5ELENBQWdFLGNBQWhFLENBQWdGLElBQWhGLEVBQ1osQ0FFWixDQUVmO0FBQ3FCO0FBQ0M7QUFHUixNQUFPLENBQUEsTUFBUCxDQUVOLENBdkNGLENBdUNFO0FBRVQsS0FBSyxDQUFDLFlBQU4sQ0FBcUIsVUFBVSxDQUdoQixHQUFJLENBQUEsVUFBVSxDQUFHLFFBQVEsQ0FBQyxHQUFULENBQWEsV0FBYixDQUFqQixDQUVBO0FBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLFdBQXBCLENBQWdDLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBekMsQ0FBd0QsQ0FDaEQsR0FBRyxDQUFFLGtCQUQyQyxDQUVoRCxPQUFPLENBQUUsQ0FBQyxjQUFnQixVQUFqQixDQUZ1QyxDQUd4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsQ0FBRSxvQkFBUyxJQUFULENBQWUsQ0FDbkI7QUFDQSxRQUFRLENBQUMsVUFBVyxDQUFFLElBQUksQ0FBQyxNQUFMLENBQVksY0FBWixDQUE2QixDQUEzQyxDQUFSLENBQ1AsQ0FWdUMsQ0FXeEMsV0FBVyxDQUFFLHFCQUFTLElBQVQsQ0FBZSxRQUFmLENBQXdCLE1BQXhCLENBQWdDLENBR3RDLEdBQUksTUFBTSxFQUFFLEdBQVosQ0FBaUIsQ0FDUixRQUFRLENBQUcsSUFBSSxDQUFDLEtBQUwsQ0FBVyxRQUFYLENBQVgsQ0FDQSxJQUFJLENBQUMsYUFBTCxDQUFtQixJQUFuQixDQUNBLEdBQUksUUFBUSxDQUFDLGVBQVQsQ0FBeUIsSUFBekIsQ0FBOEIsTUFBOUIsQ0FBcUMsQ0FBekMsQ0FDQSxDQUNRLElBQUksQ0FBQyxjQUFMLENBQXNCLFFBQVEsQ0FBQyxlQUFULENBQXlCLElBQXpCLENBQThCLENBQTlCLEVBQWlDLElBQXZELENBQ0EsSUFBSSxDQUFDLFNBQUwsQ0FBZSxJQUFmLENBQ1AsQ0FKRCxJQU9BLENBQ1EsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsaUJBQTVCLENBQThDLFNBQTlDLEVBQ0EsSUFBSSxDQUFDLGNBQUwsQ0FBb0IsRUFBcEIsQ0FDUCxDQUNELElBQUksQ0FBQyxZQUFMLENBQW9CLElBQUksQ0FBQyxTQUFMLENBQWUsUUFBUSxDQUFDLGVBQXhCLENBQXdDLElBQXhDLENBQTZDLENBQTdDLENBQXBCLENBQ0EsSUFBSSxDQUFDLFFBQUwsQ0FBZ0IsUUFBUSxDQUFDLFFBQXpCLENBSVAsQ0FuQkYsSUFvQk0sQ0FBQSxJQUFJLENBQUMsYUFBTCxDQUFtQixLQUFuQixDQUNaO0FBbkN1QyxDQUF4RCxFQW9DWTtBQUVuQixDQTVDUixDQTZDSztBQUNMO0FBQ0E7QUFDTyxLQUFLLENBQUMsVUFBTixDQUFtQixVQUFXLENBRTlCO0FBRU4sR0FBSSxDQUFBLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsRUFBWCxDQUNNLEdBQUksQ0FBQSxXQUFXLENBQUcsUUFBUSxDQUFDLGlCQUFpQixLQUFLLENBQUMsRUFBTixDQUFTLGNBQTNCLENBQTFCLENBQ0EsV0FBVyxDQUFDLGFBQVosR0FFTixHQUFJLE1BQU0sRUFBRSxJQUFSLEVBQWdCLFdBQVcsQ0FBQyxNQUFoQyxDQUF3QyxDQUVoQyxHQUFJLENBQUEsVUFBVSxDQUFHLFFBQVEsQ0FBQyxHQUFULENBQWEsV0FBYixDQUFqQixDQUE0QztBQUMvQyxHQUFJLENBQUEsT0FBTyxDQUFHLG1CQUFtQixLQUFLLENBQUMsRUFBTixDQUFTLGNBQTVCLENBQTJDLEdBQXpELENBQ1MsT0FBTyxFQUFHLE9BQU8sQ0FBQyxPQUFSLENBQWdCLEdBQWhCLEdBQXdCLENBQXhCLENBQTZCLEdBQTdCLENBQW1DLEdBQTdDLENBQ1QsR0FBSSxDQUFBLFlBQVksQ0FBRyxTQUFTLENBQUMsTUFBVixHQUFtQixHQUF0QyxDQUNTO0FBQ04sT0FBTyxFQUFHLE9BQVMsWUFBbkIsQ0FDTjtBQUNNLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixXQUFwQixDQUFnQyxLQUFLLENBQUMsRUFBTixDQUFTLGNBQXpDLENBQXdELENBQzlELEdBQUcsQ0FBRSxPQUR5RCxDQUU5RCxPQUFPLENBQUUsQ0FBQyxjQUFnQixVQUFqQixDQUE0QixnQkFBZ0IsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsUUFBM0UsQ0FGcUQsQ0FHN0Q7QUFDQTtBQUNBO0FBQ21DO0FBQ25DLFVBQVUsQ0FBRSxvQkFBUyxJQUFULENBQWUsQ0FDMUI7QUFDMEMsUUFBUSxDQUFDLFVBQVcsQ0FBRSxJQUFJLENBQUMsTUFBTCxDQUFZLGNBQVosQ0FBNkIsQ0FBM0MsQ0FBUixDQUNQLENBVnlCLENBVzdELFdBQVcsQ0FBRSxxQkFBUyxJQUFULENBQWUsUUFBZixDQUF3QixNQUF4QixDQUFnQyxDQUdILEdBQUksTUFBTSxFQUFFLEdBQVosQ0FBaUIsQ0FFUixRQUFRLENBQUcsSUFBSSxDQUFDLEtBQUwsQ0FBVyxRQUFYLENBQVgsQ0FDQSxHQUFJLENBQUEsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFyQixDQUVBLFFBQVEsQ0FBQyxVQUFXLENBQUUsSUFBSSxDQUFDLGFBQUwsQ0FBbUIsSUFBbkIsQ0FBMkIsQ0FBekMsQ0FBUixDQUNBLElBQUksQ0FBQyxXQUFMLENBQW1CLElBQUksQ0FBQyxTQUFMLENBQWUsUUFBUSxDQUFDLGVBQXhCLENBQXdDLElBQXhDLENBQTZDLENBQTdDLENBQW5CLENBQ0EsSUFBSSxDQUFDLFlBQUwsQ0FBb0IsSUFBSSxDQUFDLFNBQUwsQ0FBZSxRQUFRLENBQUMsZ0JBQXhCLENBQXlDLElBQXpDLENBQThDLENBQTlDLENBQXBCLENBRUEsR0FBSSxJQUFJLENBQUMsU0FBTCxDQUFlLFFBQWYsR0FBNEIsQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsTUFBckIsRUFBK0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxnQkFBcEUsQ0FBSixDQUNBLENBQ1EsR0FBSSxDQUFBLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBTixDQUFTLHFCQUFULENBQStCLHlCQUEvQixDQUFsQixDQUVBLEdBQUksYUFBYSxDQUFDLFdBQUQsQ0FBYixFQUE0QixTQUE1QixFQUF5QyxhQUFhLENBQUMsV0FBRCxDQUFiLEVBQTRCLEVBQXpFLENBQTZFLGFBQWEsQ0FBQyxXQUFELENBQWIsQ0FBNkIsQ0FBN0IsQ0FDN0UsR0FBSSxhQUFhLENBQUMsaUJBQUQsQ0FBYixFQUFrQyxTQUFsQyxFQUErQyxhQUFhLENBQUMsaUJBQUQsQ0FBYixFQUFrQyxFQUFyRixDQUF5RixhQUFhLENBQUMsaUJBQUQsQ0FBYixDQUFtQyxDQUFuQyxDQUN6RixJQUFJLENBQUMsVUFBTCxDQUFnQixvQkFBaEIsQ0FDQSxHQUFJLENBQUEsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBekIsQ0FDQSxHQUFJLFdBQVcsRUFBRSxDQUFiLEVBQWtCLFdBQVcsRUFBRSxTQUFuQyxDQUE4QyxXQUFXLENBQUcsS0FBSyxDQUFDLGtCQUFOLENBQXlCLGdCQUF2QyxDQUM5QyxHQUFJLENBQUEsZ0JBQWdCLENBQUcsS0FBSyxDQUFDLGtCQUFOLENBQXlCLFlBQWhELENBQ0EsR0FBSSxnQkFBZ0IsRUFBRSxDQUFsQixFQUF1QixnQkFBZ0IsRUFBRSxTQUE3QyxDQUF3RCxnQkFBZ0IsQ0FBRyxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsWUFBNUMsQ0FDeEQ7QUFDQSxvQkFBb0IsQ0FBQyxjQUFyQixDQUFvQyxPQUFwQyxDQUE0QyxJQUFJLENBQUMsY0FBakQsQ0FBZ0UsSUFBSSxDQUFDLGFBQXJFLENBQW1GLFdBQW5GLENBQStGLGdCQUEvRixDQUFnSCxhQUFhLENBQUMsV0FBRCxDQUE3SCxDQUEySSxhQUFhLENBQUMsaUJBQUQsQ0FBeEosQ0FBNEssSUFBSSxDQUFDLFNBQUwsQ0FBZSxRQUEzTCxDQUFvTSxLQUFLLENBQUMsRUFBMU0sQ0FBNk0sS0FBSyxDQUFDLGtCQUFOLENBQXlCLEdBQXRPLEVBQTJPLElBQTNPLENBRVEsU0FBUyxJQUFULENBQWUsQ0FFUCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLEdBQXRDLENBQTBDLFNBQTFDLEVBQ0EsSUFBSSxDQUFDLFdBQUwsQ0FBaUIsSUFBakIsQ0FDUCxDQU5ULENBTVUsU0FBUyxLQUFULENBQWUsQ0FDVCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDQSxJQUFJLENBQUMsU0FBTCxDQUFlLElBQWYsQ0FDQSxJQUFJLENBQUMsVUFBTCxDQUFrQixLQUFLLENBQUMsR0FBeEIsQ0FHUCxDQVpULEVBYVAsQ0FBQztBQUVULENBcENGLElBc0NDLENBQ1MsUUFBUSxDQUFDLFVBQVcsQ0FDYixJQUFJLENBQUMsYUFBTCxDQUFtQixLQUFuQixDQUVQLENBSFEsQ0FBUixDQUlSLENBQ1I7QUExRHlCLENBQXhELEVBMkQwQjtBQUNqQyxDQXJFRCxJQXFFTyxDQUNHLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxFQUFOLENBQVMsUUFBckMsQ0FBOEMsU0FBOUMsRUFDVCxDQUNNLENBaEZELENBZ0ZHO0FBRUgsR0FBSSxDQUFBLGNBQWMsQ0FBRyxRQUFqQixDQUFBLGNBQWlCLENBQVMsSUFBVCxDQUNyQixDQUNHLEdBQUksS0FBSyxDQUFDLGtCQUFOLENBQXlCLFNBQXpCLEVBQW9DLEdBQXhDLENBQ0EsQ0FDSyxLQUFLLENBQUMsRUFBTixDQUFTLGNBQVQsQ0FBMEIsSUFBSSxDQUFDLGdCQUEvQixDQUNKLENBSEQsSUFJQSxDQUNLLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBVCxDQUEwQixJQUFJLENBQUMsZUFBL0IsQ0FDSixDQUNELEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLEtBQW5CLENBQXlCLE1BQXpCLENBQWdDLENBQWhDLEVBQXFDLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixVQUE3RCxDQUF5RSxLQUFLLENBQUMsWUFBTixHQUF6RSxJQUNLLENBQUEsS0FBSyxDQUFDLFVBQU4sR0FFUCxDQVpELENBY0EsS0FBSyxDQUFDLEdBQU4sQ0FBWSxtQkFBWixDQUNBLEdBQUksQ0FBQSxlQUFlLENBQUcsUUFBUSxLQUFLLENBQUMsRUFBTixDQUFTLGNBQXZDLENBQ0EsR0FBSSxDQUFBLGlCQUFpQixDQUFHLEtBQUssQ0FBQyxrQkFBTixDQUF5QixhQUF6QixDQUF1QyxHQUF2QyxDQUEyQyxpQkFBbkUsQ0FDQSxHQUFJLENBQUEsUUFBUSxDQUFHLEtBQUssQ0FBQyxHQUFOLENBQVUsU0FBVixDQUFvQixpQkFBcEIsQ0FBc0MsZUFBdEMsQ0FBc0QsaUJBQXRELENBQXdFLGNBQXhFLENBQWYsQ0FDQSxHQUFJLENBQUEsS0FBSyxDQUFHLEtBQUssQ0FBQyxHQUFOLENBQVUsUUFBVixDQUFtQixpQkFBbkIsQ0FBWixDQUdBLEdBQUksQ0FBQSxxQkFBcUIsQ0FBRywwQkFBMEIsS0FBSyxDQUFDLGtCQUFOLENBQXlCLGFBQS9FLENBQ0EsR0FBSSxDQUFBLGFBQWEsQ0FBRyxLQUFLLENBQUMsR0FBTixDQUFVLFNBQVYsQ0FBb0IscUJBQXBCLENBQTBDLGVBQTFDLENBQTBELG1CQUExRCxDQUE4RSxjQUE5RSxDQUFwQixDQUVBO0FBQ0EsS0FBSyxDQUFDLEdBQU4sQ0FBVSxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsYUFBekIsQ0FBdUMsR0FBdkMsQ0FBMkMsaUJBQTNDLENBQTZELEtBQUssQ0FBQyxrQkFBTixDQUF5QixjQUFoRyxDQUErRyxTQUFTLEtBQVQsQ0FBZ0IsSUFBaEIsQ0FBcUIsQ0FFakksR0FBSSxLQUFLLENBQUMsa0JBQU4sQ0FBeUIsU0FBekIsRUFBb0MsR0FBeEMsQ0FDQSxDQUNLLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBVCxDQUEwQixJQUFJLENBQUMsZ0JBQS9CLENBQ0EsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLGNBQVQsR0FBNEIsU0FBaEMsQ0FBMkMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUFULENBQTBCLEtBQUssQ0FBQyxrQkFBTixDQUF5QixnQkFBbkQsQ0FDL0MsQ0FKRCxJQUtBLENBQ0ssS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUFULENBQTBCLElBQUksQ0FBQyxlQUEvQixDQUNBLEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxjQUFULEdBQTRCLFNBQWhDLENBQTJDLEtBQUssQ0FBQyxFQUFOLENBQVMsY0FBVCxDQUEwQixLQUFLLENBQUMsa0JBQU4sQ0FBeUIsZUFBbkQsQ0FDL0MsQ0FDRCxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixLQUFuQixDQUF5QixNQUF6QixDQUFnQyxDQUFoQyxFQUFxQyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsVUFBN0QsQ0FBeUUsS0FBSyxDQUFDLFlBQU4sR0FBekUsSUFDSyxDQUFBLEtBQUssQ0FBQyxVQUFOLEdBQ0wsQ0FiSCxFQWtCRixDQUFDO0FBeG9CUSxDQUFQLENBNG9CUCxFQUVNLFFBQVMsQ0FBQSxjQUFULEVBQXlCLENBQzlCLE1BQU8sQ0FDTCxRQUFRLENBQUUsR0FETCxDQUVMLElBQUksQ0FBRSxjQUFTLEtBQVQsQ0FBZ0IsT0FBaEIsQ0FBeUIsS0FBekIsQ0FBZ0MsQ0FDcEMsR0FBSSxDQUFBLFNBQUosQ0FBZSxXQUFmLENBQTRCLHNCQUE1QixDQUFvRCxjQUFwRCxDQUVBLHNCQUFzQixDQUFHLGdDQUFTLEtBQVQsQ0FBZ0IsQ0FDdkMsR0FBSSxLQUFLLEVBQUksSUFBYixDQUFtQixDQUNqQixLQUFLLENBQUMsY0FBTixHQUNELENBQ0QsS0FBSyxDQUFDLFlBQU4sQ0FBbUIsYUFBbkIsQ0FBbUMsTUFBbkMsQ0FDQSxNQUFPLE1BQVAsQ0FDRCxDQU5ELENBT0EsY0FBYyxDQUFHLEtBQUssQ0FBQyxZQUF2QixDQUVBLFNBQVMsQ0FBRyxtQkFBUyxJQUFULENBQWUsQ0FDekIsR0FBSSxDQUFBLElBQUosQ0FFQSxHQUFLLENBQUMsSUFBSSxDQUFHLEtBQUssQ0FBQyxXQUFkLElBQWdDLElBQUssRUFBckMsRUFBMkMsSUFBSSxHQUFLLEVBQXJELEVBQTZELElBQUksQ0FBRyxJQUFSLENBQWdCLElBQWhCLENBQXVCLEtBQUssQ0FBQyxXQUE3RixDQUEwRyxDQUN4RyxNQUFPLEtBQVAsQ0FDRCxDQUZELElBRU8sQ0FDTCxNQUFPLE1BQVAsQ0FDRCxDQUNGLENBUkQsQ0FVQSxXQUFXLENBQUcscUJBQVMsSUFBVCxDQUFlLENBQzNCLEdBQUssY0FBYyxHQUFNLElBQUssRUFBekIsRUFBK0IsY0FBYyxHQUFLLEVBQW5ELEVBQTBELGNBQWMsQ0FBQyxPQUFmLENBQXVCLElBQXZCLEVBQStCLENBQUMsQ0FBOUYsQ0FBaUcsQ0FDL0YsTUFBTyxLQUFQLENBQ0QsQ0FGRCxJQUVPLENBQ0wsS0FBSyxDQUFDLDJEQUE2RCxjQUE5RCxDQUFMLENBQ0EsTUFBTyxNQUFQLENBQ0QsQ0FDRixDQVBELENBU0EsT0FBTyxDQUFDLElBQVIsQ0FBYSxVQUFiLENBQXlCLHNCQUF6QixFQUNBLE9BQU8sQ0FBQyxJQUFSLENBQWEsV0FBYixDQUEwQixzQkFBMUIsRUFFQSxNQUFPLENBQUEsT0FBTyxDQUFDLElBQVIsQ0FBYSxNQUFiLENBQXFCLFNBQVMsS0FBVCxDQUFnQixDQUMxQyxHQUFJLENBQUEsSUFBSixDQUFVLElBQVYsQ0FBZ0IsTUFBaEIsQ0FBd0IsSUFBeEIsQ0FBOEIsSUFBOUIsQ0FDQSxHQUFJLEtBQUssRUFBSSxJQUFiLENBQW1CLENBQ2pCLEtBQUssQ0FBQyxjQUFOLEdBQ0QsQ0FDRCxNQUFNLENBQUcsR0FBSSxDQUFBLFVBQUosRUFBVCxDQUNBLE1BQU0sQ0FBQyxNQUFQLENBQWdCLFNBQVMsR0FBVCxDQUFjLENBQzVCLEdBQUksU0FBUyxDQUFDLElBQUQsQ0FBVCxFQUFtQixXQUFXLENBQUMsSUFBRCxDQUFsQyxDQUEwQyxDQUN4QyxNQUFPLENBQUEsS0FBSyxDQUFDLE1BQU4sQ0FBYSxVQUFXLENBQzdCLEtBQUssQ0FBQyxJQUFOLENBQWEsR0FBRyxDQUFDLE1BQUosQ0FBVyxNQUF4QixDQUNBLEdBQUksT0FBTyxDQUFDLFFBQVIsQ0FBaUIsS0FBSyxDQUFDLFFBQXZCLENBQUosQ0FBc0MsQ0FDcEMsTUFBTyxDQUFBLEtBQUssQ0FBQyxRQUFOLENBQWlCLElBQXhCLENBQ0QsQ0FDRixDQUxNLENBQVAsQ0FNRCxDQUNGLENBVEQsQ0FVQSxJQUFJLENBQUcsS0FBSyxDQUFDLFlBQU4sQ0FBbUIsS0FBbkIsQ0FBeUIsQ0FBekIsQ0FBUCxDQUNBLElBQUksQ0FBRyxJQUFJLENBQUMsSUFBWixDQUNBLElBQUksQ0FBRyxJQUFJLENBQUMsSUFBWixDQUNBLElBQUksQ0FBRyxJQUFJLENBQUMsSUFBWixDQUNBLE1BQU0sQ0FBQyxhQUFQLENBQXFCLElBQXJCLEVBQ0EsTUFBTyxNQUFQLENBQ0QsQ0F0Qk0sQ0FBUCxDQXVCRCxDQTNESSxDQUFQLENBNkRELENBRUQsYUFFTyxRQUFTLENBQUEsTUFBVCxFQUFtQixDQUVsQixNQUFPLENBQ0gsUUFBUSxDQUFFLEdBRFAsQ0FFSCxVQUFVLENBQUUsb0JBQVUsTUFBVixDQUFrQixRQUFsQixDQUEyQixRQUEzQixDQUFvQyxXQUFwQyxDQUFnRCxvQkFBaEQsQ0FBcUUsVUFBckUsQ0FBZ0YsaUJBQWhGLENBQWtHLGVBQWxHLENBQWtILFlBQWxILENBQStILGNBQS9ILENBQThJLFFBQTlJLENBQXVKLGtCQUMvSixNQUFNLENBQUMsS0FBUCxDQUFlLGVBQWYsQ0FDQSxNQUFNLENBQUMsU0FBUCxDQUFpQixFQUFqQixDQUNBLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxFQUFYLENBQU4sQ0FBd0IsQ0FBQyxLQUFNLE1BQU0sQ0FBQyxFQUFkLENBQXhCLENBRUEsR0FBSyxNQUFNLENBQUMsUUFBUCxFQUFpQixTQUFqQixFQUErQixDQUFDLEtBQUssQ0FBQyxPQUFOLENBQWMsTUFBTSxDQUFDLFFBQXJCLENBQXJDLENBQXFFLENBQ2pFLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQUMsRUFBRCxDQUFoQixDQUNILENBRUQsR0FBSSxDQUFDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsQ0FBTCxDQUE4QyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBb0IsSUFBcEIsQ0FDOUMsR0FBSSxDQUFBLGVBQWUsQ0FBRyxFQUF0QixDQUVBLEdBQUksTUFBTSxDQUFDLFlBQVAsRUFBcUIsU0FBekIsQ0FBb0MsZUFBZSxDQUFHLE1BQU0sQ0FBQyxZQUFQLENBQW9CLEdBQXRDLENBRXBDLEdBQUksQ0FBQSxjQUFjLENBQUUsTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXNCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixhQUExQixDQUF3QyxHQUF4QyxDQUE0QyxlQUE1QyxDQUE0RCxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXRFLENBQThFLGNBQXBHLENBQW1ILENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBbEIsQ0FBMEIsU0FBUyxDQUFDLEtBQXBDLENBQW5ILENBQXBCLENBQ0EsR0FBSSxDQUFBLGtCQUFrQixDQUFHLGNBQWMsQ0FBQyxPQUFmLENBQXVCLElBQWhELENBR0EsR0FBSSxDQUFBLFlBQVksQ0FBRyxRQUFmLENBQUEsWUFBZSxDQUFTLElBQVQsQ0FDbkIsQ0FDSSxjQUFjLENBQUMsT0FBZixDQUF1QixlQUF2QixDQUF5QyxJQUF6QyxDQUNBLGNBQWMsQ0FBQyxPQUFmLENBQXVCLGVBQXZCLENBQXVDLGFBQXZDLEVBRUgsQ0FMRCxDQU9BLEdBQUksQ0FBQSxtQkFBbUIsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsa0JBQXJCLENBQXdDLGFBQXhDLENBQXNELFlBQXRELENBQTFCLENBRUEsWUFBWSxDQUFDLGNBQWIsQ0FBNEIsVUFBNUIsQ0FBdUMsSUFBdkMsRUFBNkMsSUFBN0MsQ0FBa0QsU0FBVSxJQUFWLENBQWdCLENBQzFELE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFvQixJQUFJLENBQUMsSUFBekIsQ0FDQSxHQUFJLENBQUEsR0FBRyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixHQUFsQixDQUFzQixTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsRUFBVCxDQUFjLENBQWxELEVBQW9ELE9BQXBELENBQTRELE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBdEUsQ0FBVixDQUNBLEdBQUksR0FBRyxFQUFFLENBQVQsQ0FBWSxDQUNMLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUFzQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsR0FBbEIsQ0FBdEIsQ0FDTCxDQUNKLENBTk4sRUFRQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsQ0FDVCxDQUFDLEVBQUUsQ0FBQyxDQUFKLENBQU0sTUFBTSxDQUFDLFFBQWIsQ0FBc0IsU0FBUyxDQUFDLFFBQWhDLENBQXlDLElBQUksQ0FBQyxTQUE5QyxDQUF3RCxJQUFJLENBQUMsYUFBN0QsQ0FEUyxDQUVULENBQUMsRUFBRSxDQUFDLENBQUosQ0FBTSxNQUFNLENBQUMsV0FBYixDQUF5QixTQUFTLENBQUMsV0FBbkMsQ0FBK0MsSUFBSSxDQUFDLGFBQXBELENBQWtFLElBQUksQ0FBQyxhQUF2RSxDQUZTLENBQXJCLENBTUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQTJCLFNBQVMsVUFBVCxDQUFzQjtBQUNqRCxDQUNJLElBQUssR0FBSSxDQUFBLENBQUMsQ0FBQyxDQUFYLENBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixNQUFwQyxDQUEyQyxDQUFDLEVBQTVDLENBQWlELENBQzVDLEdBQUksQ0FBQSxHQUFHLENBQUcsVUFBVSxDQUFDLEdBQVgsQ0FBZSxTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsRUFBVCxDQUFjLENBQTNDLEVBQTZDLE9BQTdDLENBQXFELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixDQUFyQixFQUF3QixTQUE3RSxDQUFWLENBQ0EsR0FBSSxHQUFHLEVBQUUsQ0FBVCxDQUFZLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixDQUFyQixFQUF3QixJQUF4QixDQUErQixVQUFVLENBQUMsR0FBRCxDQUFWLENBQWdCLElBQS9DLENBQ2hCLENBQ0QsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsR0FBbUIsU0FBbkIsRUFBZ0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLEdBQW1CLElBQXZELENBQThELENBQ3JELE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsQ0FBckIsQ0FBakIsQ0FBMkM7QUFDbkQsQ0FDRCxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBZCxDQUF1QixNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsS0FBakIsQ0FBeUIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUF6QixDQUN2QixNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsQ0FBc0IsSUFBdEIsQ0FDSCxDQVhELENBY0EsR0FBSSxNQUFNLENBQUMsaUJBQVAsRUFBNEIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQTFELENBQTRFLENBQ25FLFlBQVksQ0FBQyxjQUFiLENBQTRCLGdCQUE1QixDQUE2QyxJQUE3QyxFQUFtRCxJQUFuRCxDQUF3RCxTQUFVLElBQVYsQ0FBZ0IsQ0FDbkUsR0FBSSxDQUNFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLEVBQVgsQ0FBTixDQUFxQixJQUFyQixFQUEyQixjQUEzQixDQUEwQyxJQUFJLENBQUMsSUFBL0MsRUFDSixDQUFDLE1BQU8sR0FBUCxDQUFZLENBQ04sT0FBTyxDQUFDLEdBQVIsQ0FBWSxHQUFaLEVBQ1AsQ0FDSCxDQU5KLEVBT1IsQ0FHRCxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTZCLFNBQVMsS0FBVCxDQUFnQixDQUN2QyxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLEtBQXJCLENBQW5CLENBQ0EsR0FBSSxNQUFPLENBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUFQLEdBQW1ELFFBQXZELENBQWtFLENBQ3hELE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFpQixLQUFqQixDQUF5QixDQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLENBQU4sQ0FBRixDQUF6QixDQUNULENBQ04sQ0FMRCxDQU9BLE1BQU0sQ0FBQyxjQUFQLENBQXdCLFNBQVMsS0FBVCxDQUFnQixDQUNsQyxNQUFNLENBQUMsS0FBUCxDQUFhLGtCQUFiLENBQWdDLE1BQU0sQ0FBQyxFQUF2QyxDQUEwQyxLQUExQyxFQUNMLENBRkQsQ0FJWixHQUFLLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixFQUFxQixTQUExQixDQUFxQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsRUFBcEIsQ0FFekIsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsRUFBd0IsSUFBNUIsQ0FDSSxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBdUIsQ0FBdkIsQ0FFSixNQUFNLENBQUMsV0FBUCxDQUFtQixFQUFuQixDQUNBLE1BQU0sQ0FBQyxRQUFQLENBQWtCLENBQUUsWUFBWSxDQUFHLElBQWpCLENBQWxCLENBRUEsTUFBTSxDQUFDLE9BQVAsQ0FBaUIsU0FBVSxPQUFWLENBQ2pCLENBQ0csR0FBSyxNQUFNLENBQUMsUUFBUCxFQUFpQixTQUFqQixFQUErQixDQUFDLEtBQUssQ0FBQyxPQUFOLENBQWMsTUFBTSxDQUFDLFFBQXJCLENBQXJDLENBQXFFLENBQ3BFLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQUMsRUFBRCxDQUFoQixDQUNBLENBQ0QsR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsUUFBUCxDQUFnQixHQUFoQixDQUFvQixTQUFTLENBQVQsQ0FBWSxDQUFFLE1BQU8sQ0FBQSxDQUFDLENBQUMsRUFBVCxDQUFjLENBQWhELEVBQWtELE9BQWxELENBQTBELE9BQTFELENBQVYsQ0FDQSxHQUFJLEdBQUcsRUFBRSxDQUFULENBQVcsQ0FDQSxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEVBQXdDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEdBQWhCLENBQXhDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQWlCLEtBQWpCLENBQXlCLENBQUUsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixDQUFGLENBQXpCLENBRVYsQ0FDSCxDQVhELENBZUEsTUFBTSxDQUFDLFFBQVAsQ0FBa0IsVUFDbEIsQ0FDRSxXQUFXLENBQUMsY0FBWixDQUEyQixPQUEzQixFQUFvQyxJQUFwQyxDQUNNLFNBQVMsSUFBVCxDQUFjLENBQ1osTUFBTSxDQUFDLFFBQVAsQ0FBa0IsSUFBSSxDQUFDLElBQXZCLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQWpDLENBR0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBdUIsUUFBdkIsSUFBbUMsR0FBdkMsQ0FBNEMsQ0FDbEMsTUFBTSxDQUFDLE9BQVAsQ0FBZSxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixNQUE5QyxFQUNULENBRkQsSUFFTyxJQUFJLE1BQU0sQ0FBQyxRQUFQLEVBQWlCLFNBQWpCLEVBQThCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQWxELENBQTBELENBQzNELEdBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixHQUF5QyxJQUF6QyxFQUFpRCxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLEdBQXlDLFNBQTFGLEVBQXVHLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUCxDQUFnQixDQUFoQixFQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQTdCLENBQUQsQ0FBTixFQUFpRCxHQUE1SixDQUFpSyxDQUMzSixNQUFNLENBQUMsT0FBUCxDQUFlLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsQ0FBZixFQUNMLENBRkQsSUFHSyxJQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsR0FBeUMsSUFBekMsRUFBaUQsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUE3QixHQUF5QyxTQUExRixFQUF1RyxLQUFLLENBQUMsT0FBTixDQUFjLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsQ0FBZCxDQUEzRyxDQUFtSyxDQUNwSyxHQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsRUFBd0MsTUFBeEMsQ0FBK0MsQ0FBbkQsQ0FDSSxNQUFNLENBQUMsT0FBUCxDQUFlLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsRUFBd0MsQ0FBeEMsQ0FBZixFQUNQLENBQ04sQ0FDSCxNQUFNLENBQUMsV0FBUCxDQUFtQixJQUFuQixDQUVBLE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBWCxDQUF5QixrQkFBekIsQ0FBNEMsYUFBNUMsQ0FBMkQsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFsQixDQUEwQixTQUFTLENBQUMsSUFBcEMsQ0FBM0QsRUFDSCxDQXBCSCxFQXFCRCxDQXZCRCxDQXlCQSxNQUFNLENBQUMsS0FBUCxDQUFlLFNBQVMsS0FBVCxDQUFlLE1BQWYsQ0FDZixDQUNFLE1BQU0sQ0FBQyxRQUFQLENBQWdCLENBQWhCLEVBQW1CLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBN0IsRUFBMEMsSUFBMUMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQVYsQ0FBaUIsS0FBakIsQ0FBeUIsSUFBekIsQ0FDQSxNQUFNLENBQUMsUUFBUCxDQUFnQixZQUFoQixDQUErQixJQUEvQixDQUNELENBTEQsQ0FNQTtBQUNoQjtBQUNBO0FBQ0E7QUFDQSxxQkFDZ0IsR0FBSSxDQUFBLFFBQUosQ0FDQSxHQUFJLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUE5QixDQUNJLFFBQVEsQ0FBRyxjQUFjLENBQUMsR0FBZixDQUFtQixrQ0FBbkIsQ0FBWCxDQURKLElBR0ksQ0FBQSxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIscUNBQW5CLENBQVgsQ0FDSixRQUFRLENBQUMsTUFBVCxDQUFnQixRQUFRLENBQUMsUUFBRCxDQUFSLENBQW1CLE1BQW5CLENBQWhCLEVBR0MsR0FBSSxDQUFBLE1BQU0sT0FBTixFQUFBLE1BQU0sU0FBTixzQkFBQSxNQUFNLENBQUUsRUFBUixvREFBWSxNQUFaLEdBQW9CLFNBQXhCLENBQW1DLHFEQUMvQixHQUFJLE1BQUosU0FBSSxNQUFKLHlCQUFJLE1BQU0sQ0FBRSxFQUFaLHdEQUFJLGFBQVksVUFBaEIsMENBQUksc0JBQXdCLE1BQTVCLENBQXNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFtQixNQUFuQixTQUFtQixNQUFuQiwrQkFBbUIsTUFBTSxDQUFFLEVBQTNCLHVDQUFtQixhQUFZLFVBQVosQ0FBdUIsQ0FBdkIsQ0FBbkIsQ0FBK0M7QUFDdkYsQ0FFYixNQUFNLENBQUMsUUFBUCxHQUdPLENBMUpFLENBMkpSLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FDL0IsQ0E1SkcsQ0FBUCxDQStKUCxFQUNELGFBRU8sUUFBUyxDQUFBLG1CQUFULENBQThCLFFBQTlCLENBQXdDLENBRTdDLE1BQU8sQ0FDRyxRQUFRLENBQUUsR0FEYixDQUVHLEtBQUssQ0FBQyxDQUNBLGFBQWEsQ0FBQyxHQURkLENBRUEsY0FBYyxDQUFDLEdBRmYsQ0FHQSxXQUFXLENBQUMsSUFIWixDQUlBLFVBQVUsQ0FBQyxJQUpYLENBS0EsV0FBVyxDQUFDLElBTFosQ0FNQSxjQUFjLENBQUMsSUFOZixDQUZULENBVUUsV0FBVyxDQUFFLCtDQVZmLENBV0UsVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBaUIsVUFBakIsQ0FBNEIsQ0FDcEMsTUFBTSxDQUFDLElBQVAsQ0FBWSxvQkFBWixDQUVILENBZEgsQ0FnQkUsSUFBSSxDQUFFLGNBQVUsS0FBVixDQUFpQixJQUFqQixDQUF1QixLQUF2QixDQUE4QixDQUM5QjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFHTyxDQTFDRSxDQUFQLENBNkNELEVBQ0QsYUFFTyxRQUFTLENBQUEsT0FBVCxDQUFrQixVQUFsQixDQUE2QixJQUE3QixDQUFrQyxlQUFsQyxDQUFrRCxvQkFBbEQsQ0FBdUUsbUJBQXZFLENBQTJGLHlCQUEzRixDQUFzSCxDQUM1SCxNQUFPLENBQ0YsUUFBUSxDQUFFLEdBRFIsQ0FFTCxVQUFVLENBQUUsb0JBQVUsTUFBVixDQUNaLENBS0MsQ0FSSSxDQVVILFdBQVcsQ0FBRSxtQ0FWVixDQVdILElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FFL0IsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsRUFBb0IsU0FBeEIsQ0FBbUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLEVBQW5CLENBRXJDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixRQUFuQixDQUE4QixLQUE5QixDQUdBLEtBQUssQ0FBQyxNQUFOLENBQWUsS0FBSyxDQUFDLGtCQUFOLENBQXlCLGFBQXhDLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGFBQW5CLENBQW9DLEtBQUssQ0FBQyxrQkFBTixDQUF5QixZQUE3RCxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixRQUFuQixDQUE0QixLQUFLLENBQUMsa0JBQU4sQ0FBeUIsU0FBckQsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsV0FBbkIsQ0FBK0IsS0FBSyxDQUFDLGtCQUFOLENBQXlCLFdBQXhELENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGNBQW5CLENBQW9DLEtBQUssQ0FBQyxrQkFBTixDQUF5QixnQkFBN0QsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsYUFBbkIsQ0FBbUMsS0FBSyxDQUFDLGtCQUFOLENBQXlCLGVBQTVELENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGNBQW5CLENBQW9DLEtBQUssQ0FBQyxrQkFBTixDQUF5QixlQUE3RCxDQUNBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixnQkFBbkIsQ0FBc0MsQ0FBdEMsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLGVBQVQsQ0FBMkIsQ0FBM0IsQ0FDQSxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixjQUFuQixFQUFtQyxTQUF2QyxDQUFrRCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsY0FBbkIsQ0FBb0MsS0FBcEMsQ0FDbEQsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsY0FBbkIsRUFBbUMsU0FBdkMsQ0FBa0QsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGNBQW5CLENBQW1DLENBQW5DLENBQ2xELEdBQUksS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGFBQW5CLEVBQWtDLFNBQXRDLENBQWlELEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixhQUFuQixDQUFrQyxDQUFsQyxDQUNqRCxHQUFJLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixhQUFuQixFQUFrQyxTQUF0QyxDQUFpRCxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsYUFBbkIsQ0FBa0MsQ0FBbEMsQ0FDakQsR0FBSSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsRUFBb0IsU0FBeEIsQ0FBb0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLEVBQW5CLENBRXBDLEdBQUksQ0FBQSxnQkFBZ0IsQ0FBRyxDQUFDLElBQUksQ0FBRSxTQUFQLENBQWlCLFFBQVEsQ0FBRSxLQUFLLENBQUMsRUFBTixDQUFTLGNBQXBDLENBQW1ELE1BQU0sQ0FBRyxLQUFLLENBQUMsTUFBbEUsQ0FDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGNBRGIsQ0FDNEIsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixhQUQvRCxDQUF2QixDQUVBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixhQUFuQixDQUFtQyx5QkFBeUIsQ0FBQyxjQUExQixDQUF5QyxnQkFBekMsQ0FBbkMsQ0FDQSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsT0FBbkIsQ0FBMkIsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLGFBQTlDLENBQ0EsS0FBSyxDQUFDLEVBQU4sQ0FBUyxPQUFULENBQWlCLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixhQUFwQyxDQUdBLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixRQUFuQixDQUE4QixLQUE5QixDQUVDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixjQUFuQixDQUFvQyxVQUFVLENBQzFDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixRQUFuQixDQUErQixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsUUFBbkIsQ0FBOEIsS0FBOUIsQ0FBcUMsSUFBcEUsQ0FDSCxDQUZELENBS0QsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFFBQW5CLENBQThCLFNBQVMsSUFBVCxDQUFjLElBQWQsQ0FBbUIsS0FBbkIsQ0FBeUIsR0FBekIsQ0FDOUIsQ0FDSSxlQUFlLENBQUMsUUFBaEIsQ0FBeUIsSUFBekIsQ0FBOEIsSUFBOUIsQ0FBbUMsS0FBbkMsRUFDQyxHQUFJLEdBQUosQ0FBUyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixHQUE1QixDQUFnQyxNQUFoQyxFQUNiLENBSkQsQ0FNQSxLQUFLLENBQUMsR0FBTixDQUFVLG1CQUFWLENBTUEsS0FBSyxDQUFDLEtBQU4sQ0FBYSxlQUFiLENBRUEsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFULENBQW1CLFdBQW5CLENBQWlDLFVBQVUsQ0FDdEMsR0FBSSxDQUFBLFFBQVEsQ0FBRyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsUUFBcEIsQ0FBK0IsQ0FBL0IsQ0FBbUMsQ0FBbEQsQ0FFRCxLQUFLLENBQUMsUUFBTixDQUFlLElBQUksQ0FBQyxrQkFBTCxDQUF3QixLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBb0IsR0FBcEIsQ0FBd0IsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLE9BQTVDLENBQW9ELFlBQXBELENBQWlFLFFBQWpFLENBQTBFLFFBQTFFLENBQW1GLFFBQW5GLENBQTRGLFVBQTVGLENBQXVHLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixNQUFuSixDQUFmLENBQ0gsQ0FKRCxDQUtDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixXQUFuQixHQUNEO0FBRUYsQ0FyRUUsQ0FBUCxDQXVFQSxFQUNELGFBRU8sUUFBUyxDQUFBLFlBQVQsRUFBeUIsQ0FFN0IsR0FBSSxDQUFBLFVBQVUsQ0FBRyxDQUFDLFFBQUQsQ0FBVyxXQUFYLENBQXdCLGNBQXhCLENBQXVDLFFBQXZDLENBQWdELFVBQWhELENBQTJELGNBQTNELENBQTBFLHNCQUExRSxDQUFpRyxZQUFqRyxDQUE4RyxhQUE5RyxDQUE0SCxtQkFBNUgsQ0FBZ0osa0JBQWhKLENBQW1LLGlCQUFuSyxDQUFxTCxpQkFBckwsQ0FBdU0sMkJBQXZNLENBQW1PLHFCQUFuTyxDQUF5UCxnQkFBelAsQ0FBMFEsZ0JBQTFRLENBQTJSLFVBQTNSLENBQXNTLFVBQXRTLENBQ0MsU0FBVSxNQUFWLENBQWlCLFNBQWpCLENBQTJCLFlBQTNCLENBQXdDLE1BQXhDLENBQStDLFFBQS9DLENBQXdELFlBQXhELENBQXFFLG9CQUFyRSxDQUEwRixVQUExRixDQUFxRyxXQUFyRyxDQUFpSCxpQkFBakgsQ0FBbUksZ0JBQW5JLENBQW9KLGVBQXBKLENBQW9LLGVBQXBLLENBQW9MLHlCQUFwTCxDQUE4TSxtQkFBOU0sQ0FBa08sY0FBbE8sQ0FBaVAsY0FBalAsQ0FBZ1EsUUFBaFEsQ0FBeVEsUUFBelEsQ0FBbVIsNkNBRWhTLEdBQUksTUFBTSxDQUFDLFNBQVAsRUFBb0IsU0FBeEIsQ0FBbUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsRUFBakIsQ0FFbkMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsS0FBNUIsQ0FFQSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFrQyxVQUFVLENBQ2IsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNkIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsS0FBNUIsQ0FBbUMsSUFBaEUsQ0FDN0IsQ0FGRixDQUlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBVixDQUE0QixTQUFTLElBQVQsQ0FBYyxDQUN2QyxHQUFJLENBQUEsS0FBSyxDQUFHLFFBQVEsQ0FBQyxjQUFULENBQXdCLE9BQU8sTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF6QyxDQUFaLENBQ0EsS0FBSyxDQUFDLEtBQU4sQ0FBYyxJQUFkLENBQ0EsS0FBSyxDQUFDLEtBQU4sR0FDQSxLQUFLLENBQUMsTUFBTixHQUNBLFFBQVEsQ0FBQyxXQUFULENBQXFCLE1BQXJCLEVBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLENBQXdCLElBQXhCLENBQ0EsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsQ0FBd0IsS0FBeEIsQ0FBK0IsQ0FBM0MsQ0FBNEMsSUFBNUMsQ0FBUixDQUNELENBUkYsQ0FXQSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBMkIsVUFDM0IsQ0FDTyxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQStCLElBQS9CLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQTBCLEtBQTFCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLENBQXNCLElBQXRCLENBQ0EsR0FBSSxNQUFNLENBQUMsUUFBWCxDQUFxQixDQUNuQixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBdUIsSUFBdkIsQ0FDQSxHQUFJLENBQUEsSUFBSSxDQUFHLEdBQUksQ0FBQSxJQUFKLENBQVMsTUFBTSxDQUFDLFFBQWhCLENBQVgsQ0FFQSxRQUFRLENBQUMsSUFBVCxDQUFjLHFCQUFkLEVBQXFDLElBQXJDLENBQTBDLFNBQVUsTUFBVixDQUFrQixDQUN4RCxRQUFRLENBQUMsVUFBVSxDQUNkLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUF3QixNQUFNLENBQUMsTUFBUCxDQUFjLENBQWQsQ0FBeEIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQStCLEtBQS9CLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsRUFBdUIsSUFBM0IsQ0FDQSxDQUNHLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUEwQixJQUExQixDQUNBLElBQUksQ0FBQyxHQUFMLENBQVMsR0FBVCxDQUFhLGNBQWIsR0FBOEIsSUFBOUIsQ0FBbUMsU0FBUyxNQUFULENBQWdCLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxpQkFBVixDQUE0QixNQUE1QixDQUFtQyxDQUF2RixFQUNIO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUU0QixDQWhCRCxJQWdCTyxDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUEwQixLQUExQixDQUNYLENBcEJPLENBQVIsQ0FxQkgsQ0F0QkQsQ0FzQkUsU0FBUyxLQUFULENBQWUsQ0FDWCxRQUFRLENBQUMsVUFBVSxDQUNoQixNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQStCLEtBQS9CLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQTBCLEtBQTFCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQXNCLEtBQUssQ0FBQyxPQUE1QixDQUVGLENBTE8sQ0FBUixDQU1MLENBN0JELEVBZ0NELENBcENELElBb0NxQixDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUF1QixLQUF2QixDQUMzQixDQTFDRCxDQTRDRDtBQUdGO0FBQ0EsR0FBTSxDQUFBLFNBQVMsb0JBQUcsTUFBTSxDQUFDLFNBQVYsNENBQUcsNEJBQWxCLENBQ0EsR0FBTSxDQUFBLHFCQUFxQix3QkFBRyxNQUFNLENBQUMscUJBQVYsZ0RBQUcsZ0NBQTlCLENBQ0EsR0FBTSxDQUFBLFNBQVMsQ0FBRyxNQUFNLENBQUMsU0FBekIsQ0FDQSxHQUFNLENBQUEsU0FBUyxDQUFHLE1BQU0sQ0FBQyxTQUF6QixDQUVBO0FBQ0EsR0FBSSxDQUFBLFNBQUosQ0FFQTtBQUNBLEdBQUksQ0FBQSxRQUFKLENBRUE7QUFDTjtBQUNBLFNBQ00sTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLENBQWlCLFVBQVksQ0FHM0IsT0FBTyxDQUFDLEdBQVIsQ0FBWSwwQkFBWixDQUF3QyxxQkFBeEMsRUFDQSxPQUFPLENBQUMsR0FBUixDQUFZLGNBQVosQ0FBNEIsU0FBNUIsRUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFNLENBQUEsZUFBZSxDQUFHLENBQ3RCLGFBQWEsQ0FBRSxDQUNiLFVBQVMscUJBREksQ0FFYixPQUFPLENBQUUsQ0FDUDtBQUNBLFFBQVEsQ0FBRSxrQ0FGSCxDQUZJLENBUWY7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBakJnQyxDQUF4QixDQW1CQSxHQUFJLFNBQVMsR0FBRyxTQUFoQixDQUNBLENBQ0UsU0FBUyxDQUFHLEdBQUksQ0FBQSxTQUFKLENBQWMsQ0FDeEIsYUFBYSxDQUFFLEtBRFMsQ0FDRjtBQUN0QixlQUFlLENBQWYsZUFBaUI7QUFGTyxDQUFkLENBQVosQ0FJRCxDQU5ELElBTU0sQ0FBQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBb0IsbUNBQXBCLENBQ1AsQ0FuQ0QsQ0FzQ0E7QUFDTjtBQUNBLFNBQ00sTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUE0QixVQUFZLENBRXJDLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBK0IsSUFBL0IsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBMEIsS0FBMUIsQ0FDQSxVQUFVLENBQUMsT0FBWCxDQUFtQixhQUFuQixDQUFpQyxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQTNDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLENBQXNCLElBQXRCLENBQ0Q7QUFDQSxHQUFNLENBQUEsSUFBSSxDQUFHLEdBQUksQ0FBQSxJQUFKLENBQVMsUUFBVCxDQUFiLENBRUEsT0FBTyxDQUFDLEdBQVIsQ0FBWSxrQkFBWixDQUFnQyxJQUFoQyxFQUNDLE1BQU0sQ0FBQyxJQUFQLENBQWMsSUFBZCxDQUNEO0FBQ0EsSUFBSSxDQUFDLEdBQUwsQ0FBUyxVQUFULEdBQXNCLElBQXRCLENBQTJCLFNBQVMsSUFBVCxDQUFjLENBQ3ZDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFvQixJQUFwQixDQUNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFTLENBQUMsUUFBVixDQUFtQixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQTdCLENBQXBCLENBQTBEO0FBQzFELE1BQU0sQ0FBQyxFQUFQLENBQVUsaUJBQVYsQ0FBOEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQW9CLElBQWxELENBQ0E7QUFDQTtBQUNELENBTkYsQ0FNRyxTQUFTLEtBQVQsQ0FBZSxDQUNSLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBNkIsS0FBN0IsQ0FFTCxDQVRMLEVBVUE7QUFHQTtBQUNBO0FBRUE7QUFDQSxJQUFJLENBQUMsR0FBTCxDQUFTLFdBQVQsR0FBdUIsSUFBdkIsQ0FBNEIsU0FBUyxJQUFULENBQWMsQ0FDdEMsR0FBSSxDQUFBLFFBQVEsQ0FBRyxJQUFmLENBQ0E7QUFDQSxPQUFPLENBQUMsR0FBUixDQUFZLGNBQVosQ0FBNEIsUUFBNUIsRUFDQTtBQUNBLFFBQVEsQ0FBQyxVQUFVLENBQ2hCLEdBQUksUUFBUSxDQUFDLE1BQVQsQ0FBZ0IsQ0FBcEIsQ0FDQSxDQUNHLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUF3QixRQUFRLENBQUMsQ0FBRCxDQUFoQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUF3QixJQUF4QixDQUNBLFVBQVUsQ0FBQyxPQUFYLENBQW1CLGFBQW5CLENBQWlDLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBM0MsQ0FDRixDQUNELE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBNkIsS0FBN0IsQ0FFQyxDQVRJLENBU0gsU0FBUyxLQUFULENBQWUsQ0FDZCxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUFWLENBQTZCLEtBQTdCLENBRUwsQ0FaTyxDQUFSLENBYUYsQ0FsQkYsRUF3QkE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVELENBNURELENBZ0VBO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUNNLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBK0IsVUFBWSxDQUV6QyxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTJCLFFBQTNCLEVBRUQsQ0FKRCxDQU9BO0FBQ047QUFDQSxTQTNNd1MsQ0E0TWxTO0FBRUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxpQkFBVixDQUE4QixVQUFVLENBRXZDLE9BQU8sQ0FBQyxHQUFSLENBQVksa0JBQVosQ0FBZ0MsU0FBaEMsRUFDQSxHQUFJLENBQ0YsU0FBUyxDQUFDLE9BQVYsR0FBb0IsSUFBcEIsQ0FBeUIsU0FBUyxJQUFULENBQWMsQ0FDckMsUUFBUSxDQUFHLElBQVgsQ0FDQSxVQUFVLENBQUMsT0FBWCxDQUFtQixZQUFuQixDQUFnQyxRQUFoQyxDQUNDO0FBQ0QsUUFBUSxDQUFDLEVBQVQsQ0FBWSxpQkFBWixDQUErQixTQUFDLFFBQUQsQ0FBYyxDQUMzQyxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLEdBQ0QsQ0FGRCxFQUlBO0FBQ0EsUUFBUSxDQUFDLEVBQVQsQ0FBWSxjQUFaLENBQTRCLFNBQUMsT0FBRCxDQUFhLENBQ3RDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFvQixPQUFwQixDQUNELE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsR0FDRCxDQUhELEVBS0g7QUFDQSxRQUFRLENBQUMsRUFBVCxDQUFZLGdCQUFaLENBQThCLFNBQUMsU0FBRCxDQUFlLENBQzFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixDQUFvQixTQUFwQixDQUNELE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsR0FDRCxDQUhELEVBS0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixHQUVJLENBdEJILEVBdUJELENBQUMsTUFBTSxDQUFOLENBQVMsQ0FDVCxPQUFPLENBQUMsR0FBUixDQUFZLG1DQUFaLENBQWlELENBQWpELEVBQ0EsT0FDRCxDQUVELENBaENELENBa0NEO0FBQ047QUFDQSxTQUNNLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBNkIsVUFBWSxDQUV2QyxPQUFPLENBQUMsR0FBUixDQUFZLCtCQUFaLENBQTZDLFFBQTdDLEVBRVU7QUFDQSxHQUFHLFFBQVEsQ0FBQyxLQUFaLENBQW1CLENBQ2pCLFFBQVEsQ0FBQyxLQUFULEdBQWlCLElBQWpCLENBQXNCLFNBQVMsSUFBVCxDQUFjLENBR2xDLENBSEYsRUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUVELENBQ0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQTBCLEtBQTFCLENBQ0EsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsYUFBbkIsQ0FBaUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUEzQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUFzQixJQUF0QixDQUNBLFNBQVMsQ0FBQyxtQkFBVixHQUNBLFFBQVEsQ0FBRyxJQUFYLENBRUQsQ0F2QlgsQ0F5QkcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLEdBQ0E7QUFDQSxHQUFJLENBQUEsUUFBSixDQUNBLFFBQVEsQ0FBRyxjQUFjLENBQUMsR0FBZixDQUFtQix3Q0FBbkIsQ0FBWCxDQUNBLFFBQVEsQ0FBQyxNQUFULENBQWdCLFFBQVEsQ0FBQyxRQUFELENBQVIsQ0FBbUIsTUFBbkIsQ0FBaEIsRUFLRixDQXRSYSxDQUFqQixDQXdSRCxNQUFPLENBQ0csUUFBUSxDQUFFLEdBRGIsQ0FHRyxVQUFVLENBQUUsVUFIZixDQUlHLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FFbkMsQ0FOSixDQUFQLENBU0QsRUFDRCxhQUVPLFFBQVMsQ0FBQSxxQkFBVCxDQUFnQyx5QkFBaEMsQ0FBMkQsQ0FFMUQsTUFBTyxDQUNILFFBQVEsQ0FBRSxHQURQLENBRUYsV0FBVyxDQUFFLGlEQUZYLENBR0YsVUFBVSxDQUFFLG9CQUFTLE1BQVQsQ0FBZ0IseUJBQWhCLENBQTBDLENBRWxELENBTEYsQ0FNRixJQUFJLENBQUUsY0FBVSxLQUFWLENBQWlCLElBQWpCLENBQXVCLEtBQXZCLENBQThCLDJCQUVqQyxHQUFJLENBQUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxTQUFkLENBQXlCLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixFQUFuQixDQUN6QixLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsSUFBbkIsQ0FBMEIseUJBQTFCLENBQ0EsR0FBSSxDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixrQkFBcEIsRUFBMEMsS0FBSyxDQUFDLGtCQUFwRCxDQUF3RSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsa0JBQW5CLENBQXNDLEtBQUssQ0FBQyxrQkFBNUMsQ0FFeEUsR0FBSSxDQUFDLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBZCxDQUEwQixLQUFLLENBQUMsRUFBTixDQUFTLFVBQVQsQ0FBc0IsRUFBdEIsQ0FDMUIsR0FBRyx5QkFBQyxLQUFLLENBQUMsRUFBTixDQUFTLFVBQVYsMENBQUMsc0JBQXFCLFdBQXRCLENBQUgsQ0FBc0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLFdBQXBCLENBQWtDLEVBQWxDLENBQ3RDLEtBQUssQ0FBQyxFQUFOLENBQVMsU0FBVCxDQUFtQixhQUFuQixDQUFpQyxTQUFTLE1BQVQsQ0FBZ0IsQ0FDN0MsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLFdBQXBCLENBQWdDLElBQWhDLENBQXFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFqQixDQUFvQixVQUFVLENBQUMsTUFBTSxDQUFDLElBQXRDLENBQTJDLE9BQU8sQ0FBQyxVQUFVLEtBQUssQ0FBQyxFQUFOLENBQVMsVUFBVCxDQUFvQixXQUFwQixDQUFnQyxNQUFoQyxDQUF1QyxDQUFqRCxDQUFuRCxDQUFyQyxFQUNILENBRkQsQ0FJRSxLQUFLLENBQUMsRUFBTixDQUFTLFNBQVQsQ0FBbUIsYUFBbkIsQ0FBaUMsU0FBUyxHQUFULENBQWEsQ0FDNUMsS0FBSyxDQUFDLEVBQU4sQ0FBUyxVQUFULENBQW9CLFdBQXBCLENBQWdDLE1BQWhDLENBQXVDLEdBQXZDLENBQTJDLENBQTNDLEVBQ0gsQ0FGQyxDQUlILENBdEJBLENBQVAsQ0F5QlAsRUFDRCxhQUVPLFFBQVMsQ0FBQSxlQUFULEVBQTRCLENBRTNCLE1BQU8sQ0FDQyxRQUFRLENBQUUsR0FEWCxDQUVDLFdBQVcsQ0FBRSwyQ0FGZCxDQUlDLFVBQVUsQ0FBRSxDQUFDLFFBQUQsQ0FBVSxZQUFWLENBQXVCLGlCQUF2QixDQUF5Qyx1QkFBekMsQ0FBaUUscUJBQWpFLENBQXVGLFVBQXZGLENBQW1HLFNBQVMsTUFBVCxDQUFnQixVQUFoQixDQUEyQixlQUEzQixDQUEyQyxxQkFBM0MsQ0FBaUUsbUJBQWpFLENBQXFGLFFBQXJGLENBQThGLENBRXJNO0FBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBZSxlQUFmLENBQ0EsTUFBTSxDQUFDLFlBQVAsQ0FBc0IsRUFBdEIsQ0FDQSxNQUFNLENBQUMsR0FBUCxDQUFhLHFCQUFiLENBQ0EsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsRUFBakIsQ0FDQSxNQUFNLENBQUMsZ0JBQVAsQ0FBMEIsSUFBMUIsQ0FDQSxNQUFNLENBQUMsV0FBUCxDQUFtQixPQUFPLE1BQU0sQ0FBQyxZQUFqQyxDQUNBLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsV0FBbkMsRUFFQSxHQUFJLENBQUEsWUFBWSxDQUFHLE1BQU0sQ0FBQyxZQUFQLENBQW9CLHNCQUF2QyxDQUVBLEdBQUksQ0FBQSxrQkFBSixDQUVFLFFBQVEsQ0FBQyxVQUFVLENBQ2IsQ0FBQyxDQUFDLFNBQUQsQ0FBRCxDQUFhLElBQWIsQ0FBa0IsR0FBbEIsRUFDSCxDQUZLLENBRUosSUFGSSxDQUFSLENBSUYsTUFBTSxDQUFDLEtBQVAsQ0FBYSxZQUFiLENBQTBCLE1BQU0sQ0FBQyxXQUFqQyxDQUE2QyxNQUFNLENBQUMsWUFBUCxDQUFvQixVQUFqRSxDQUE0RSxZQUE1RSxFQUNBLE1BQU0sQ0FBQyxrQkFBUCxDQUEyQixNQUFNLENBQUMsS0FBUCxDQUFhLHFCQUFiLENBQW1DLE1BQU0sQ0FBQyxZQUExQyxDQUEzQixDQUNBLE1BQU0sQ0FBQyx1QkFBUCxDQUErQixRQUFRLE1BQU0sQ0FBQyxZQUFmLENBQTRCLHNCQUEzRCxDQUNBO0FBQ0EsTUFBTSxDQUFDLEdBQVAsQ0FBYSxtQkFBYixDQUVBLEdBQUksQ0FBQSxjQUFjLENBQUcsUUFBakIsQ0FBQSxjQUFpQixDQUFTLElBQVQsQ0FDckIsQ0FDSSxNQUFNLENBQUMsbUJBQVAsQ0FBMkIsSUFBSSxDQUFDLEtBQWhDLEVBQ0gsQ0FIRCxDQUtDLEdBQUksQ0FBQSxjQUFjLENBQUcsUUFBakIsQ0FBQSxjQUFpQixDQUFTLElBQVQsQ0FDdEIsQ0FDRSxNQUFNLENBQUMsbUJBQVAsQ0FBMkIsSUFBM0IsRUFDRCxDQUhBLENBS0QsR0FBSSxDQUFBLFlBQVksQ0FBRSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsU0FBMUMsQ0FBb0QsSUFBcEQsQ0FBbEIsQ0FDQSxHQUFJLENBQUEsZ0JBQWdCLENBQUcsWUFBWSxDQUFDLE9BQWIsQ0FBcUIsSUFBNUMsQ0FFQSxHQUFJLENBQUEscUJBQXFCLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLGdCQUFyQixDQUFzQyxlQUF0QyxDQUFzRCxjQUF0RCxDQUE1QixDQUVBLEdBQUksQ0FBQSxxQkFBcUIsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsZ0JBQXJCLENBQXNDLGVBQXRDLENBQXNELGNBQXRELENBQTVCLENBRUMsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsU0FBUyxLQUFULENBQWUsWUFBZixDQUE0QixDQUM1QyxHQUFJLFlBQVksRUFBRSxjQUFsQixDQUNBLENBQ0ksR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixLQUFqQixJQUEwQixTQUE5QixDQUF5QyxNQUFNLENBQUMsU0FBUCxDQUFpQixLQUFqQixFQUEwQixJQUExQixDQUF6QyxJQUVBLENBQ0ksR0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixLQUFqQixDQUFKLENBQTZCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLEtBQWpCLEVBQTBCLEtBQTFCLENBQTdCLElBQ0ssQ0FBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixLQUFqQixFQUEwQixJQUExQixDQUNSLENBQ0osQ0FDSixDQVZBLENBWUQsTUFBTSxDQUFDLG1CQUFQLENBQTJCLFNBQVMsS0FBVCxDQUFlLENBR2xDLEdBQUksQ0FBQyxLQUFMLENBQ0EsQ0FDSSxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsT0FBTyxNQUFNLENBQUMsWUFBMUMsRUFFSCxDQUpELElBTUEsQ0FDSSxNQUFNLENBQUMsa0JBQVAsQ0FBMkIsTUFBTSxDQUFDLEtBQVAsQ0FBYSxxQkFBYixDQUFtQyxNQUFNLENBQUMsWUFBMUMsQ0FBM0IsQ0FDSCxDQUVSLENBYkQsQ0FlQSxNQUFNLENBQUMsYUFBUCxDQUFxQixTQUFTLEtBQVQsQ0FBZSxDQUVuQyxNQUFNLENBQUMsS0FBUCxDQUFhLHNCQUFiLENBQW9DLEtBQXBDLENBQTBDLE1BQU0sQ0FBQyxZQUFqRCxFQUNBLENBSEQsQ0FLVixDQTFFYyxDQUpiLENBK0VGLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FHbEMsQ0FsRkEsQ0FBUCxDQW9GUCxFQUNELGFBRU8sUUFBUyxDQUFBLG9CQUFULEVBQWlDLENBRXJDLEdBQUksQ0FBQSxVQUFVLENBQUcsQ0FBQyxRQUFELENBQVcsV0FBWCxDQUF1QixjQUF2QixDQUFzQyxRQUF0QyxDQUErQyxVQUEvQyxDQUEwRCxjQUExRCxDQUF5RSxzQkFBekUsQ0FBZ0csWUFBaEcsQ0FBNkcsYUFBN0csQ0FBMkgsbUJBQTNILENBQStJLGtCQUEvSSxDQUFrSyxpQkFBbEssQ0FBb0wsaUJBQXBMLENBQXNNLDJCQUF0TSxDQUFrTyxxQkFBbE8sQ0FBd1AsZ0JBQXhQLENBQXlRLGdCQUF6USxDQUEwUixVQUExUixDQUFxUyxVQUFyUyxDQUNDLFNBQVUsTUFBVixDQUFpQixTQUFqQixDQUEyQixZQUEzQixDQUF3QyxNQUF4QyxDQUErQyxRQUEvQyxDQUF3RCxZQUF4RCxDQUFxRSxvQkFBckUsQ0FBMEYsVUFBMUYsQ0FBcUcsV0FBckcsQ0FBaUgsaUJBQWpILENBQW1JLGdCQUFuSSxDQUFvSixlQUFwSixDQUFvSyxlQUFwSyxDQUFvTCx5QkFBcEwsQ0FBOE0sbUJBQTlNLENBQWtPLGNBQWxPLENBQWlQLGNBQWpQLENBQWdRLFFBQWhRLENBQXlRLFFBQXpRLENBQW1SLENBRWxTLE1BQU0sQ0FBQyxlQUFQLENBQXlCLEVBQXpCLENBQ0E7QUFDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBOEMsS0FBOUMsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixVQUF2QixDQUFrQyxLQUFsQyxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGFBQXZCLENBQXFDLFdBQVcsQ0FBQyxlQUFqRCxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGlCQUF2QixDQUEyQyxJQUEzQyxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFVBQXZCLENBQW9DLENBQXBDLENBQ0EsTUFBTSxDQUFDLEtBQVAsQ0FBZSxlQUFmLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsVUFBdkIsQ0FBa0MsQ0FBQyxZQUFZLENBQUMsQ0FBZCxDQUFnQixrQkFBa0IsQ0FBQyxJQUFuQyxDQUFsQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBNkIsSUFBN0IsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxRQUFQLEVBQWlCLFNBQXJCLENBQWdDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEVBQWhCLENBQ2hDLEdBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUExQixHQUEyQyxTQUEvQyxDQUEwRCxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTFCLEVBQTBDLEVBQTFDLENBQzFELE1BQU0sQ0FBQyxFQUFQLENBQVUsSUFBVixDQUFlLEVBQWYsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixpQkFBdkIsQ0FBeUMsQ0FBekMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsQ0FBbEIsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixFQUF3QixTQUE1QixDQUF1QyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBdUIsRUFBdkIsQ0FDdkMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLDRDQUF6QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsaUJBQVYsQ0FBNEIsQ0FBQyxDQUFDLFNBQVMsRUFBVixDQUFhLGtCQUFrQixZQUEvQixDQUE0QyxPQUFPLGFBQW5ELENBQUQsQ0FBbUUsQ0FBQyxZQUFZLEtBQWIsQ0FBbUIsU0FBUyxDQUFDLENBQUMsVUFBVSxJQUFYLENBQWdCLGVBQWUsU0FBL0IsQ0FBeUMsT0FBTyxPQUFoRCxDQUF3RCxPQUFPLFNBQS9ELENBQUQsQ0FBMkUsQ0FBQyxVQUFVLElBQVgsQ0FBZ0IsZUFBZSxTQUEvQixDQUF5QyxPQUFPLFNBQWhELENBQTBELE9BQU8sU0FBakUsQ0FBM0UsQ0FBdUosQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLE9BQWpELENBQXlELE9BQU8sU0FBaEUsQ0FBdkosQ0FBNUIsQ0FBK1AsT0FBTyxVQUF0USxDQUFpUixPQUFPLE9BQXhSLENBQW5FLENBQW9XLENBQUMsWUFBWSxLQUFiLENBQW1CLFNBQVMsQ0FBQyxDQUFDLFVBQVUsSUFBWCxDQUFnQixlQUFlLFNBQS9CLENBQXlDLE9BQU8sZUFBaEQsQ0FBZ0UsT0FBTyxTQUF2RSxDQUFELENBQW1GLENBQUMsVUFBVSxJQUFYLENBQWdCLGVBQWUsU0FBL0IsQ0FBeUMsT0FBTyxVQUFoRCxDQUEyRCxPQUFPLFNBQWxFLENBQW5GLENBQTVCLENBQTZMLE9BQU8sc0JBQXBNLENBQTJOLE9BQU8sT0FBbE8sQ0FBcFcsQ0FBK2tCLENBQUMsWUFBWSxLQUFiLENBQW1CLFNBQVMsQ0FBQyxDQUFDLFVBQVUsSUFBWCxDQUFnQixlQUFlLFNBQS9CLENBQXlDLE9BQU8sTUFBaEQsQ0FBdUQsT0FBTyxTQUE5RCxDQUFELENBQTBFLENBQUMsVUFBVSxJQUFYLENBQWdCLGVBQWUsU0FBL0IsQ0FBeUMsT0FBTyxJQUFoRCxDQUFxRCxPQUFPLFNBQTVELENBQTFFLENBQWlKLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxPQUFqRCxDQUF5RCxPQUFPLFNBQWhFLENBQWpKLENBQTVCLENBQXlQLE9BQU8sVUFBaFEsQ0FBMlEsT0FBTyxPQUFsUixDQUEva0IsQ0FBMDJCLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLE9BQWpDLENBQXlDLE9BQU8sU0FBaEQsQ0FBRCxDQUE0RCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxTQUFqQyxDQUEyQyxPQUFPLFNBQWxELENBQTVELENBQVYsQ0FBb0ksT0FBTyxXQUEzSSxDQUF1SixVQUFVLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUFELENBQWpLLENBQXlOLGtCQUFrQixNQUEzTyxDQUFrUCxPQUFPLFVBQXpQLENBQTEyQixDQUErbUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sU0FBakMsQ0FBMkMsT0FBTyxTQUFsRCxDQUFELENBQThELENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFFBQWpDLENBQTBDLE9BQU8sU0FBakQsQ0FBOUQsQ0FBVixDQUFxSSxPQUFPLFNBQTVJLENBQXNKLFVBQVUsQ0FBQyxDQUFDLGVBQWUsTUFBaEIsQ0FBdUIsT0FBTyxFQUE5QixDQUFpQyxPQUFPLE1BQXhDLENBQUQsQ0FBaEssQ0FBa04sa0JBQWtCLFlBQXBPLENBQWlQLE9BQU8sVUFBeFAsQ0FBL21DLENBQW0zQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxTQUFqQyxDQUEyQyxPQUFPLFNBQWxELENBQUQsQ0FBVixDQUF5RSxPQUFPLFdBQWhGLENBQTRGLFVBQVUsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQUQsQ0FBdEcsQ0FBOEosa0JBQWtCLE1BQWhMLENBQXVMLE9BQU8sVUFBOUwsQ0FBbjNDLENBQTZqRCxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sVUFBcEIsQ0FBK0IsVUFBVSxDQUFDLENBQUMsZUFBZSxPQUFoQixDQUF3QixPQUFPLEVBQS9CLENBQWtDLE9BQU8sT0FBekMsQ0FBRCxDQUF6QyxDQUE2RixrQkFBa0IsTUFBL0csQ0FBc0gsT0FBTyxVQUE3SCxDQUE3akQsQ0FBc3NELENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFNBQWpDLENBQTJDLE9BQU8sU0FBbEQsQ0FBRCxDQUE4RCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxpQkFBakMsQ0FBbUQsT0FBTyxTQUExRCxDQUE5RCxDQUFWLENBQThJLE9BQU8sbUJBQXJKLENBQXlLLFVBQVUsQ0FBQyxDQUFDLGVBQWUsTUFBaEIsQ0FBdUIsT0FBTyxFQUE5QixDQUFpQyxPQUFPLE1BQXhDLENBQUQsQ0FBbkwsQ0FBcU8sa0JBQWtCLFlBQXZQLENBQW9RLE9BQU8sVUFBM1EsQ0FBdHNELENBQTY5RCxDQUFDLFNBQVMsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxTQUFqQyxDQUEyQyxPQUFPLFNBQWxELENBQUQsQ0FBOEQsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sWUFBakMsQ0FBOEMsT0FBTyxTQUFyRCxDQUE5RCxDQUFWLENBQXlJLE9BQU8sbUJBQWhKLENBQW9LLFVBQVUsQ0FBQyxDQUFDLGVBQWUsTUFBaEIsQ0FBdUIsT0FBTyxFQUE5QixDQUFpQyxPQUFPLE1BQXhDLENBQUQsQ0FBOUssQ0FBZ08sa0JBQWtCLFlBQWxQLENBQStQLE9BQU8sVUFBdFEsQ0FBNzlELENBQSt1RSxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sTUFBcEIsQ0FBMkIsVUFBVSxDQUFDLENBQUMsZUFBZSxRQUFoQixDQUF5QixPQUFPLEVBQWhDLENBQW1DLE9BQU8sUUFBMUMsQ0FBRCxDQUFyQyxDQUEyRixrQkFBa0IsTUFBN0csQ0FBb0gsT0FBTyxVQUEzSCxDQUEvdUUsQ0FBczNFLENBQUMsU0FBUyxFQUFWLENBQWEsT0FBTyxPQUFwQixDQUE0QixVQUFVLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUFELENBQXRDLENBQThGLGtCQUFrQixNQUFoSCxDQUF1SCxPQUFPLFVBQTlILENBQXQzRSxDQUFnZ0YsQ0FBQyxTQUFTLEVBQVYsQ0FBYSxPQUFPLG1CQUFwQixDQUF3QyxVQUFVLEVBQWxELENBQXFELGtCQUFrQixZQUF2RSxDQUFvRixPQUFPLFVBQTNGLENBQWhnRixDQUF1bUYsQ0FBQyxTQUFTLEVBQVYsQ0FBYSxPQUFPLFFBQXBCLENBQTZCLFVBQVUsQ0FBQyxDQUFDLGVBQWUsUUFBaEIsQ0FBeUIsT0FBTyxFQUFoQyxDQUFtQyxPQUFPLFFBQTFDLENBQUQsQ0FBdkMsQ0FBNkYsa0JBQWtCLE1BQS9HLENBQXNILE9BQU8sVUFBN0gsQ0FBdm1GLENBQWd2RixDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sYUFBcEIsQ0FBa0MsVUFBVSxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBRCxDQUE1QyxDQUFvRyxrQkFBa0IsTUFBdEgsQ0FBNkgsT0FBTyxVQUFwSSxDQUFodkYsQ0FBZzRGLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFdBQWpDLENBQTZDLE9BQU8sU0FBcEQsQ0FBRCxDQUFnRSxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxRQUFqQyxDQUEwQyxPQUFPLFNBQWpELENBQWhFLENBQVYsQ0FBdUksT0FBTyxVQUE5SSxDQUF5SixVQUFVLENBQUMsQ0FBQyxlQUFlLE1BQWhCLENBQXVCLE9BQU8sRUFBOUIsQ0FBaUMsT0FBTyxNQUF4QyxDQUFELENBQW5LLENBQXFOLGtCQUFrQixZQUF2TyxDQUFvUCxPQUFPLFVBQTNQLENBQWg0RixDQUF1b0csQ0FBQyxTQUFTLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sUUFBakMsQ0FBMEMsT0FBTyxTQUFqRCxDQUFELENBQTZELENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFdBQWpDLENBQTZDLE9BQU8sU0FBcEQsQ0FBN0QsQ0FBNEgsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sUUFBakMsQ0FBMEMsT0FBTyxTQUFqRCxDQUE1SCxDQUFWLENBQW1NLE9BQU8sY0FBMU0sQ0FBeU4sVUFBVSxDQUFDLENBQUMsZUFBZSxNQUFoQixDQUF1QixPQUFPLEVBQTlCLENBQWlDLE9BQU8sTUFBeEMsQ0FBRCxDQUFuTyxDQUFxUixrQkFBa0IsWUFBdlMsQ0FBb1QsT0FBTyxVQUEzVCxDQUF2b0csQ0FBODhHLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFVBQWpDLENBQTRDLE9BQU8sU0FBbkQsQ0FBRCxDQUFWLENBQTBFLE9BQU8sbUJBQWpGLENBQXFHLFVBQVUsRUFBL0csQ0FBa0gsa0JBQWtCLFlBQXBJLENBQWlKLE9BQU8sVUFBeEosQ0FBOThHLENBQTVCLENBQStvSCxDQUMvb0gsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQXlCLDRDQUF6QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsaUJBQVYsQ0FBNEIsQ0FBQyxDQUFDLFNBQVMsRUFBVixDQUFhLGtCQUFrQixZQUEvQixDQUE0QyxPQUFPLGFBQW5ELENBQUQsQ0FBbUUsQ0FBQyxZQUFZLEtBQWIsQ0FBbUIsU0FBUyxDQUFDLENBQUMsVUFBVSxJQUFYLENBQWdCLGVBQWUsU0FBL0IsQ0FBeUMsT0FBTyxPQUFoRCxDQUF3RCxPQUFPLFNBQS9ELENBQUQsQ0FBMkUsQ0FBQyxVQUFVLElBQVgsQ0FBZ0IsZUFBZSxTQUEvQixDQUF5QyxPQUFPLFNBQWhELENBQTBELE9BQU8sU0FBakUsQ0FBM0UsQ0FBdUosQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLE9BQWpELENBQXlELE9BQU8sU0FBaEUsQ0FBdkosQ0FBNUIsQ0FBK1AsT0FBTyxVQUF0USxDQUFpUixPQUFPLE9BQXhSLENBQW5FLENBQW9XLENBQUMsWUFBWSxLQUFiLENBQW1CLFNBQVMsQ0FBQyxDQUFDLFVBQVUsSUFBWCxDQUFnQixlQUFlLFNBQS9CLENBQXlDLE9BQU8sZUFBaEQsQ0FBZ0UsT0FBTyxTQUF2RSxDQUFELENBQW1GLENBQUMsVUFBVSxJQUFYLENBQWdCLGVBQWUsU0FBL0IsQ0FBeUMsT0FBTyxVQUFoRCxDQUEyRCxPQUFPLFNBQWxFLENBQW5GLENBQTVCLENBQTZMLE9BQU8sc0JBQXBNLENBQTJOLE9BQU8sT0FBbE8sQ0FBcFcsQ0FBK2tCLENBQUMsWUFBWSxLQUFiLENBQW1CLFNBQVMsQ0FBQyxDQUFDLFVBQVUsSUFBWCxDQUFnQixlQUFlLFNBQS9CLENBQXlDLE9BQU8sTUFBaEQsQ0FBdUQsT0FBTyxTQUE5RCxDQUFELENBQTBFLENBQUMsVUFBVSxJQUFYLENBQWdCLGVBQWUsU0FBL0IsQ0FBeUMsT0FBTyxJQUFoRCxDQUFxRCxPQUFPLFNBQTVELENBQTFFLENBQWlKLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxPQUFqRCxDQUF5RCxPQUFPLFNBQWhFLENBQWpKLENBQTVCLENBQXlQLE9BQU8sVUFBaFEsQ0FBMlEsT0FBTyxPQUFsUixDQUEva0IsQ0FBMDJCLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLE9BQWpDLENBQXlDLE9BQU8sU0FBaEQsQ0FBRCxDQUE0RCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxTQUFqQyxDQUEyQyxPQUFPLFNBQWxELENBQTVELENBQVYsQ0FBb0ksT0FBTyxXQUEzSSxDQUF1SixVQUFVLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUFELENBQWpLLENBQXlOLGtCQUFrQixNQUEzTyxDQUFrUCxPQUFPLFVBQXpQLENBQTEyQixDQUErbUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sU0FBakMsQ0FBMkMsT0FBTyxTQUFsRCxDQUFELENBQThELENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFFBQWpDLENBQTBDLE9BQU8sU0FBakQsQ0FBOUQsQ0FBVixDQUFxSSxPQUFPLFNBQTVJLENBQXNKLFVBQVUsQ0FBQyxDQUFDLGVBQWUsTUFBaEIsQ0FBdUIsT0FBTyxFQUE5QixDQUFpQyxPQUFPLE1BQXhDLENBQUQsQ0FBaEssQ0FBa04sa0JBQWtCLFlBQXBPLENBQWlQLE9BQU8sVUFBeFAsQ0FBL21DLENBQW0zQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxTQUFqQyxDQUEyQyxPQUFPLFNBQWxELENBQUQsQ0FBVixDQUF5RSxPQUFPLFdBQWhGLENBQTRGLFVBQVUsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQUQsQ0FBdEcsQ0FBOEosa0JBQWtCLE1BQWhMLENBQXVMLE9BQU8sVUFBOUwsQ0FBbjNDLENBQTZqRCxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sVUFBcEIsQ0FBK0IsVUFBVSxDQUFDLENBQUMsZUFBZSxPQUFoQixDQUF3QixPQUFPLEVBQS9CLENBQWtDLE9BQU8sT0FBekMsQ0FBRCxDQUF6QyxDQUE2RixrQkFBa0IsTUFBL0csQ0FBc0gsT0FBTyxVQUE3SCxDQUE3akQsQ0FBc3NELENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFNBQWpDLENBQTJDLE9BQU8sU0FBbEQsQ0FBRCxDQUE4RCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxpQkFBakMsQ0FBbUQsT0FBTyxTQUExRCxDQUE5RCxDQUFWLENBQThJLE9BQU8sbUJBQXJKLENBQXlLLFVBQVUsQ0FBQyxDQUFDLGVBQWUsTUFBaEIsQ0FBdUIsT0FBTyxFQUE5QixDQUFpQyxPQUFPLE1BQXhDLENBQUQsQ0FBbkwsQ0FBcU8sa0JBQWtCLFlBQXZQLENBQW9RLE9BQU8sVUFBM1EsQ0FBdHNELENBQTY5RCxDQUFDLFNBQVMsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxTQUFqQyxDQUEyQyxPQUFPLFNBQWxELENBQUQsQ0FBOEQsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sWUFBakMsQ0FBOEMsT0FBTyxTQUFyRCxDQUE5RCxDQUFWLENBQXlJLE9BQU8sbUJBQWhKLENBQW9LLFVBQVUsQ0FBQyxDQUFDLGVBQWUsTUFBaEIsQ0FBdUIsT0FBTyxFQUE5QixDQUFpQyxPQUFPLE1BQXhDLENBQUQsQ0FBOUssQ0FBZ08sa0JBQWtCLFlBQWxQLENBQStQLE9BQU8sVUFBdFEsQ0FBNzlELENBQSt1RSxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sTUFBcEIsQ0FBMkIsVUFBVSxDQUFDLENBQUMsZUFBZSxRQUFoQixDQUF5QixPQUFPLEVBQWhDLENBQW1DLE9BQU8sUUFBMUMsQ0FBRCxDQUFyQyxDQUEyRixrQkFBa0IsTUFBN0csQ0FBb0gsT0FBTyxVQUEzSCxDQUEvdUUsQ0FBczNFLENBQUMsU0FBUyxFQUFWLENBQWEsT0FBTyxPQUFwQixDQUE0QixVQUFVLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUFELENBQXRDLENBQThGLGtCQUFrQixNQUFoSCxDQUF1SCxPQUFPLFVBQTlILENBQXQzRSxDQUFnZ0YsQ0FBQyxTQUFTLEVBQVYsQ0FBYSxPQUFPLG1CQUFwQixDQUF3QyxVQUFVLEVBQWxELENBQXFELGtCQUFrQixZQUF2RSxDQUFvRixPQUFPLFVBQTNGLENBQWhnRixDQUF1bUYsQ0FBQyxTQUFTLEVBQVYsQ0FBYSxPQUFPLFFBQXBCLENBQTZCLFVBQVUsQ0FBQyxDQUFDLGVBQWUsUUFBaEIsQ0FBeUIsT0FBTyxFQUFoQyxDQUFtQyxPQUFPLFFBQTFDLENBQUQsQ0FBdkMsQ0FBNkYsa0JBQWtCLE1BQS9HLENBQXNILE9BQU8sVUFBN0gsQ0FBdm1GLENBQWd2RixDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sYUFBcEIsQ0FBa0MsVUFBVSxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBRCxDQUE1QyxDQUFvRyxrQkFBa0IsTUFBdEgsQ0FBNkgsT0FBTyxVQUFwSSxDQUFodkYsQ0FBZzRGLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFdBQWpDLENBQTZDLE9BQU8sU0FBcEQsQ0FBRCxDQUFnRSxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxRQUFqQyxDQUEwQyxPQUFPLFNBQWpELENBQWhFLENBQVYsQ0FBdUksT0FBTyxVQUE5SSxDQUF5SixVQUFVLENBQUMsQ0FBQyxlQUFlLE1BQWhCLENBQXVCLE9BQU8sRUFBOUIsQ0FBaUMsT0FBTyxNQUF4QyxDQUFELENBQW5LLENBQXFOLGtCQUFrQixZQUF2TyxDQUFvUCxPQUFPLFVBQTNQLENBQWg0RixDQUF1b0csQ0FBQyxTQUFTLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sUUFBakMsQ0FBMEMsT0FBTyxTQUFqRCxDQUFELENBQTZELENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFdBQWpDLENBQTZDLE9BQU8sU0FBcEQsQ0FBN0QsQ0FBNEgsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sUUFBakMsQ0FBMEMsT0FBTyxTQUFqRCxDQUE1SCxDQUFWLENBQW1NLE9BQU8sY0FBMU0sQ0FBeU4sVUFBVSxDQUFDLENBQUMsZUFBZSxNQUFoQixDQUF1QixPQUFPLEVBQTlCLENBQWlDLE9BQU8sTUFBeEMsQ0FBRCxDQUFuTyxDQUFxUixrQkFBa0IsWUFBdlMsQ0FBb1QsT0FBTyxVQUEzVCxDQUF2b0csQ0FBODhHLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFVBQWpDLENBQTRDLE9BQU8sU0FBbkQsQ0FBRCxDQUFWLENBQTBFLE9BQU8sbUJBQWpGLENBQXFHLFVBQVUsRUFBL0csQ0FBa0gsa0JBQWtCLFlBQXBJLENBQWlKLE9BQU8sVUFBeEosQ0FBOThHLENBQTVCLENBQStvSCxDQUMvb0gsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFWLENBQTBCLDRDQUExQixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBNkIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxTQUFqQyxDQUEyQyxPQUFPLFNBQWxELENBQUQsQ0FBOEQsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sU0FBakMsQ0FBMkMsT0FBTyxTQUFsRCxDQUE5RCxDQUEySCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxNQUFqQyxDQUF3QyxPQUFPLFNBQS9DLENBQTNILENBQXFMLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFdBQWpDLENBQTZDLE9BQU8sU0FBcEQsQ0FBckwsQ0FBb1AsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sYUFBakMsQ0FBK0MsT0FBTyxTQUF0RCxDQUFwUCxDQUFxVCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxlQUFqQyxDQUFpRCxPQUFPLFNBQXhELENBQXJULENBQXdYLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLGFBQWpDLENBQStDLE9BQU8sU0FBdEQsQ0FBeFgsQ0FBeWIsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sUUFBakMsQ0FBMEMsT0FBTyxTQUFqRCxDQUF6YixDQUFWLENBQWdnQixrQkFBa0IsWUFBbGhCLENBQStoQixPQUFPLGFBQXRpQixDQUFELENBQXNqQixDQUFDLFlBQVksS0FBYixDQUFtQixTQUFTLENBQUMsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLE1BQWpELENBQXdELE9BQU8sU0FBL0QsQ0FBRCxDQUEyRSxDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sVUFBakQsQ0FBNEQsT0FBTyxTQUFuRSxDQUEzRSxDQUE1QixDQUFzTCxPQUFPLGtCQUE3TCxDQUFnTixPQUFPLE9BQXZOLENBQXRqQixDQUFzeEIsQ0FBQyxZQUFZLEtBQWIsQ0FBbUIsU0FBUyxDQUFDLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxRQUFqRCxDQUEwRCxPQUFPLFNBQWpFLENBQUQsQ0FBNkUsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLFFBQWpELENBQTBELE9BQU8sU0FBakUsQ0FBN0UsQ0FBeUosQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLEtBQWpELENBQXVELE9BQU8sU0FBOUQsQ0FBekosQ0FBa08sQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLFVBQWpELENBQTRELE9BQU8sU0FBbkUsQ0FBbE8sQ0FBZ1QsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLGNBQWpELENBQWdFLE9BQU8sU0FBdkUsQ0FBaFQsQ0FBa1ksQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLGNBQWpELENBQWdFLE9BQU8sU0FBdkUsQ0FBbFksQ0FBb2QsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLFlBQWpELENBQThELE9BQU8sU0FBckUsQ0FBcGQsQ0FBb2lCLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxZQUFqRCxDQUE4RCxPQUFPLFNBQXJFLENBQXBpQixDQUFvbkIsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLE9BQWpELENBQXlELE9BQU8sU0FBaEUsQ0FBcG5CLENBQStyQixDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sV0FBakQsQ0FBNkQsT0FBTyxTQUFwRSxDQUEvckIsQ0FBOHdCLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxjQUFqRCxDQUFnRSxPQUFPLFNBQXZFLENBQTl3QixDQUFnMkIsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLFlBQWpELENBQThELE9BQU8sU0FBckUsQ0FBaDJCLENBQTVCLENBQTY4QixPQUFPLGlCQUFwOUIsQ0FBcytCLE9BQU8sT0FBNytCLENBQXR4QixDQUE0d0QsQ0FBQyxZQUFZLEtBQWIsQ0FBbUIsU0FBUyxDQUFDLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxJQUFqRCxDQUFzRCxPQUFPLFNBQTdELENBQUQsQ0FBeUUsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLGNBQWpELENBQWdFLE9BQU8sU0FBdkUsQ0FBekUsQ0FBMkosQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLFFBQWpELENBQTBELE9BQU8sU0FBakUsQ0FBM0osQ0FBNUIsQ0FBb1EsT0FBTyxlQUEzUSxDQUEyUixPQUFPLE9BQWxTLENBQTV3RCxDQUF1akUsQ0FBQyxZQUFZLEtBQWIsQ0FBbUIsU0FBUyxDQUFDLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxJQUFqRCxDQUFzRCxPQUFPLFNBQTdELENBQUQsQ0FBeUUsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLGNBQWpELENBQWdFLE9BQU8sU0FBdkUsQ0FBekUsQ0FBMkosQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLFNBQWpELENBQTJELE9BQU8sU0FBbEUsQ0FBM0osQ0FBd08sQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLFNBQWpELENBQTJELE9BQU8sU0FBbEUsQ0FBeE8sQ0FBNUIsQ0FBa1YsT0FBTyxrQkFBelYsQ0FBNFcsT0FBTyxPQUFuWCxDQUF2akUsQ0FBbTdFLENBQUMsWUFBWSxLQUFiLENBQW1CLFNBQVMsQ0FBQyxDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sTUFBakQsQ0FBd0QsT0FBTyxTQUEvRCxDQUFELENBQTJFLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxRQUFqRCxDQUEwRCxPQUFPLFNBQWpFLENBQTNFLENBQTVCLENBQW9MLE9BQU8sVUFBM0wsQ0FBc00sT0FBTyxPQUE3TSxDQUFuN0UsQ0FBeW9GLENBQUMsWUFBWSxLQUFiLENBQW1CLFNBQVMsQ0FBQyxDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sSUFBakQsQ0FBc0QsT0FBTyxTQUE3RCxDQUFELENBQXlFLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxjQUFqRCxDQUFnRSxPQUFPLFNBQXZFLENBQXpFLENBQTJKLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxTQUFqRCxDQUEyRCxPQUFPLFNBQWxFLENBQTNKLENBQXdPLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxTQUFqRCxDQUEyRCxPQUFPLFNBQWxFLENBQXhPLENBQTVCLENBQWtWLE9BQU8sVUFBelYsQ0FBb1csT0FBTyxPQUEzVyxDQUF6b0YsQ0FBNi9GLENBQUMsWUFBWSxLQUFiLENBQW1CLFNBQVMsQ0FBQyxDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sSUFBakQsQ0FBc0QsT0FBTyxTQUE3RCxDQUFELENBQXlFLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxjQUFqRCxDQUFnRSxPQUFPLFNBQXZFLENBQXpFLENBQTJKLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxTQUFqRCxDQUEyRCxPQUFPLFNBQWxFLENBQTNKLENBQXdPLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxTQUFqRCxDQUEyRCxPQUFPLFNBQWxFLENBQXhPLENBQTVCLENBQWtWLE9BQU8sYUFBelYsQ0FBdVcsT0FBTyxPQUE5VyxDQUE3L0YsQ0FBbzNHLENBQUMsWUFBWSxLQUFiLENBQW1CLFNBQVMsQ0FBQyxDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sTUFBakQsQ0FBd0QsT0FBTyxTQUEvRCxDQUFELENBQTJFLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxVQUFqRCxDQUE0RCxPQUFPLFNBQW5FLENBQTNFLENBQTVCLENBQXNMLE9BQU8sc0JBQTdMLENBQW9OLE9BQU8sT0FBM04sQ0FBcDNHLENBQXdsSCxDQUFDLFlBQVksS0FBYixDQUFtQixTQUFTLENBQUMsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLE1BQWpELENBQXdELE9BQU8sU0FBL0QsQ0FBRCxDQUEyRSxDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sUUFBakQsQ0FBMEQsT0FBTyxTQUFqRSxDQUEzRSxDQUE1QixDQUFvTCxPQUFPLFVBQTNMLENBQXNNLE9BQU8sT0FBN00sQ0FBeGxILENBQTh5SCxDQUFDLFlBQVksS0FBYixDQUFtQixTQUFTLENBQUMsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLE1BQWpELENBQXdELE9BQU8sU0FBL0QsQ0FBRCxDQUEyRSxDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sVUFBakQsQ0FBNEQsT0FBTyxTQUFuRSxDQUEzRSxDQUF5SixDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sUUFBakQsQ0FBMEQsT0FBTyxTQUFqRSxDQUF6SixDQUE1QixDQUFrUSxPQUFPLFFBQXpRLENBQWtSLE9BQU8sT0FBelIsQ0FBOXlILENBQWdsSSxDQUFDLFlBQVksS0FBYixDQUFtQixTQUFTLENBQUMsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLE1BQWpELENBQXdELE9BQU8sU0FBL0QsQ0FBRCxDQUEyRSxDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sV0FBakQsQ0FBNkQsT0FBTyxTQUFwRSxDQUEzRSxDQUE1QixDQUF1TCxPQUFPLGNBQTlMLENBQTZNLE9BQU8sT0FBcE4sQ0FBaGxJLENBQTZ5SSxDQUFDLFlBQVksS0FBYixDQUFtQixTQUFTLENBQUMsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLE1BQWpELENBQXdELE9BQU8sU0FBL0QsQ0FBRCxDQUEyRSxDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sVUFBakQsQ0FBNEQsT0FBTyxTQUFuRSxDQUEzRSxDQUE1QixDQUFzTCxPQUFPLGFBQTdMLENBQTJNLE9BQU8sT0FBbE4sQ0FBN3lJLENBQXdnSixDQUFDLFlBQVksS0FBYixDQUFtQixTQUFTLENBQUMsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLElBQWpELENBQXNELE9BQU8sU0FBN0QsQ0FBRCxDQUF5RSxDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sVUFBakQsQ0FBNEQsT0FBTyxTQUFuRSxDQUF6RSxDQUF1SixDQUFDLFVBQVUsS0FBWCxDQUFpQixlQUFlLFNBQWhDLENBQTBDLE9BQU8sUUFBakQsQ0FBMEQsT0FBTyxTQUFqRSxDQUF2SixDQUE1QixDQUFnUSxPQUFPLG9CQUF2USxDQUE0UixPQUFPLE9BQW5TLENBQXhnSixDQUFvekosQ0FBQyxZQUFZLEtBQWIsQ0FBbUIsU0FBUyxDQUFDLENBQUMsVUFBVSxLQUFYLENBQWlCLGVBQWUsU0FBaEMsQ0FBMEMsT0FBTyxNQUFqRCxDQUF3RCxPQUFPLFNBQS9ELENBQUQsQ0FBMkUsQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLFVBQWpELENBQTRELE9BQU8sU0FBbkUsQ0FBM0UsQ0FBeUosQ0FBQyxVQUFVLEtBQVgsQ0FBaUIsZUFBZSxTQUFoQyxDQUEwQyxPQUFPLFFBQWpELENBQTBELE9BQU8sU0FBakUsQ0FBekosQ0FBNUIsQ0FBa1EsT0FBTyxnQkFBelEsQ0FBMFIsT0FBTyxPQUFqUyxDQUFwekosQ0FBOGxLLENBQUMsa0JBQWtCLFNBQW5CLENBQTZCLE9BQU8sVUFBcEMsQ0FBOWxLLENBQThvSyxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sVUFBcEIsQ0FBK0IsVUFBVSxFQUF6QyxDQUE0QyxrQkFBa0IsWUFBOUQsQ0FBMkUsT0FBTyxVQUFsRixDQUE5b0ssQ0FBNHVLLENBQUMsU0FBUyxFQUFWLENBQWEsT0FBTyxLQUFwQixDQUEwQixVQUFVLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUFELENBQXBDLENBQTRGLGtCQUFrQixNQUE5RyxDQUFxSCxPQUFPLFVBQTVILENBQTV1SyxDQUFvM0ssQ0FBQyxTQUFTLENBQUMsQ0FBQyxlQUFlLFdBQWhCLENBQTRCLE9BQU8sYUFBbkMsQ0FBaUQsT0FBTyxXQUF4RCxDQUFELENBQXNFLENBQUMsZUFBZSxNQUFoQixDQUF1QixPQUFPLFVBQTlCLENBQXlDLE9BQU8sTUFBaEQsQ0FBdEUsQ0FBVixDQUF5SSxPQUFPLFdBQWhKLENBQTRKLFVBQVUsRUFBdEssQ0FBeUssa0JBQWtCLFlBQTNMLENBQXdNLE9BQU8sVUFBL00sQ0FBcDNLLENBQStrTCxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sV0FBcEIsQ0FBZ0MsVUFBVSxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBRCxDQUExQyxDQUFrRyxrQkFBa0IsTUFBcEgsQ0FBMkgsT0FBTyxVQUFsSSxDQUEva0wsQ0FBNnRMLENBQUMsU0FBUyxFQUFWLENBQWEsT0FBTyxZQUFwQixDQUFpQyxVQUFVLEVBQTNDLENBQThDLGtCQUFrQixZQUFoRSxDQUE2RSxPQUFPLFVBQXBGLENBQTd0TCxDQUE2ekwsQ0FBQyxTQUFTLEVBQVYsQ0FBYSxPQUFPLFVBQXBCLENBQStCLFVBQVUsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQUQsQ0FBekMsQ0FBaUcsa0JBQWtCLE1BQW5ILENBQTBILE9BQU8sVUFBakksQ0FBN3pMLENBQTA4TCxDQUFDLFNBQVMsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxRQUFqQyxDQUEwQyxPQUFPLFNBQWpELENBQUQsQ0FBVixDQUF3RSxPQUFPLHNCQUEvRSxDQUFzRyxVQUFVLENBQUMsQ0FBQyxlQUFlLE1BQWhCLENBQXVCLE9BQU8sRUFBOUIsQ0FBaUMsT0FBTyxNQUF4QyxDQUFELENBQWhILENBQWtLLGtCQUFrQixNQUFwTCxDQUEyTCxPQUFPLFVBQWxNLENBQTE4TCxDQUF3cE0sQ0FBQyxTQUFTLEVBQVYsQ0FBYSxPQUFPLFdBQXBCLENBQWdDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxRQUFqQyxDQUEwQyxPQUFPLFNBQWpELENBQUQsQ0FBNkQsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sT0FBakMsQ0FBeUMsT0FBTyxTQUFoRCxDQUE3RCxDQUF3SCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxRQUFqQyxDQUEwQyxPQUFPLFNBQWpELENBQXhILENBQW9MLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFdBQWpDLENBQTZDLE9BQU8sU0FBcEQsQ0FBcEwsQ0FBbVAsQ0FBQyxlQUFlLE1BQWhCLENBQXVCLE9BQU8sVUFBOUIsQ0FBeUMsT0FBTyxNQUFoRCxDQUFuUCxDQUEyUyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxZQUFqQyxDQUE4QyxPQUFPLFNBQXJELENBQTNTLENBQTJXLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFlBQWpDLENBQThDLE9BQU8sU0FBckQsQ0FBM1csQ0FBMmEsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sWUFBakMsQ0FBOEMsT0FBTyxTQUFyRCxDQUEzYSxDQUEyZSxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxVQUFqQyxDQUE0QyxPQUFPLFNBQW5ELENBQTNlLENBQWQsQ0FBd2pCLGVBQWUsbUNBQXZrQixDQUEybUIsT0FBTyxFQUFsbkIsQ0FBcW5CLE9BQU8sU0FBNW5CLENBQUQsQ0FBd29CLENBQUMsYUFBYSxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFFBQWpDLENBQTBDLE9BQU8sU0FBakQsQ0FBRCxDQUE2RCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxRQUFqQyxDQUEwQyxPQUFPLFNBQWpELENBQTdELENBQWQsQ0FBd0ksZUFBZSw4QkFBdkosQ0FBc0wsT0FBTyxFQUE3TCxDQUFnTSxPQUFPLE9BQXZNLENBQXhvQixDQUExQyxDQUFtNEIsa0JBQWtCLE1BQXI1QixDQUE0NUIsT0FBTyxVQUFuNkIsQ0FBeHBNLENBQXVrTyxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sYUFBcEIsQ0FBa0MsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFFBQWpDLENBQTBDLE9BQU8sU0FBakQsQ0FBRCxDQUE2RCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxRQUFqQyxDQUEwQyxPQUFPLFNBQWpELENBQTdELENBQWQsQ0FBd0ksZUFBZSw4QkFBdkosQ0FBc0wsT0FBTyxFQUE3TCxDQUFnTSxPQUFPLE9BQXZNLENBQUQsQ0FBNUMsQ0FBOFAsa0JBQWtCLE1BQWhSLENBQXVSLE9BQU8sVUFBOVIsQ0FBdmtPLENBQWkzTyxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sZUFBcEIsQ0FBb0MsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFFBQWpDLENBQTBDLE9BQU8sU0FBakQsQ0FBRCxDQUE2RCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxPQUFqQyxDQUF5QyxPQUFPLFNBQWhELENBQTdELENBQXdILENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFFBQWpDLENBQTBDLE9BQU8sU0FBakQsQ0FBeEgsQ0FBb0wsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sV0FBakMsQ0FBNkMsT0FBTyxTQUFwRCxDQUFwTCxDQUFtUCxDQUFDLGVBQWUsTUFBaEIsQ0FBdUIsT0FBTyxVQUE5QixDQUF5QyxPQUFPLE1BQWhELENBQW5QLENBQTJTLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFlBQWpDLENBQThDLE9BQU8sU0FBckQsQ0FBM1MsQ0FBMlcsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sWUFBakMsQ0FBOEMsT0FBTyxTQUFyRCxDQUEzVyxDQUEyYSxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxZQUFqQyxDQUE4QyxPQUFPLFNBQXJELENBQTNhLENBQTJlLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFVBQWpDLENBQTRDLE9BQU8sU0FBbkQsQ0FBM2UsQ0FBZCxDQUF3akIsZUFBZSxtQ0FBdmtCLENBQTJtQixPQUFPLEVBQWxuQixDQUFxbkIsT0FBTyxTQUE1bkIsQ0FBRCxDQUE5QyxDQUF1ckIsa0JBQWtCLE1BQXpzQixDQUFndEIsT0FBTyxVQUF2dEIsQ0FBajNPLENBQW9sUSxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sZ0JBQXBCLENBQXFDLFVBQVUsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQUQsQ0FBdUQsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUF2RCxDQUE2RyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQTdHLENBQW1LLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBbkssQ0FBeU4sQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUF6TixDQUErUSxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQS9RLENBQS9DLENBQXFYLGtCQUFrQixNQUF2WSxDQUE4WSxPQUFPLFVBQXJaLENBQXBsUSxDQUFxL1EsQ0FBQyxTQUFTLEVBQVYsQ0FBYSxPQUFPLHVCQUFwQixDQUE0QyxVQUFVLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUFELENBQXVELENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBdkQsQ0FBNkcsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUE3RyxDQUFtSyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQW5LLENBQXlOLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBek4sQ0FBK1EsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUEvUSxDQUF0RCxDQUE0WCxrQkFBa0IsTUFBOVksQ0FBcVosT0FBTyxVQUE1WixDQUFyL1EsQ0FBNjVSLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFFBQWpDLENBQTBDLE9BQU8sU0FBakQsQ0FBRCxDQUFWLENBQXdFLE9BQU8sYUFBL0UsQ0FBNkYsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFFBQWpDLENBQTBDLE9BQU8sU0FBakQsQ0FBRCxDQUE2RCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxPQUFqQyxDQUF5QyxPQUFPLFNBQWhELENBQTdELENBQXdILENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFFBQWpDLENBQTBDLE9BQU8sU0FBakQsQ0FBeEgsQ0FBb0wsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sV0FBakMsQ0FBNkMsT0FBTyxTQUFwRCxDQUFwTCxDQUFtUCxDQUFDLGVBQWUsTUFBaEIsQ0FBdUIsT0FBTyxVQUE5QixDQUF5QyxPQUFPLE1BQWhELENBQW5QLENBQTJTLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFlBQWpDLENBQThDLE9BQU8sU0FBckQsQ0FBM1MsQ0FBMlcsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sWUFBakMsQ0FBOEMsT0FBTyxTQUFyRCxDQUEzVyxDQUEyYSxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxZQUFqQyxDQUE4QyxPQUFPLFNBQXJELENBQTNhLENBQTJlLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFVBQWpDLENBQTRDLE9BQU8sU0FBbkQsQ0FBM2UsQ0FBZCxDQUF3akIsZUFBZSxtQ0FBdmtCLENBQTJtQixPQUFPLEVBQWxuQixDQUFxbkIsT0FBTyxTQUE1bkIsQ0FBRCxDQUF2RyxDQUFndkIsa0JBQWtCLE1BQWx3QixDQUF5d0IsT0FBTyxVQUFoeEIsQ0FBNzVSLENBQXlyVCxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sTUFBcEIsQ0FBMkIsVUFBVSxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBRCxDQUF1RCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQXZELENBQTZHLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBN0csQ0FBbUssQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUFuSyxDQUF5TixDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQXpOLENBQStRLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBL1EsQ0FBcVUsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUFyVSxDQUFyQyxDQUFpYSxrQkFBa0IsTUFBbmIsQ0FBMGIsT0FBTyxVQUFqYyxDQUF6clQsQ0FBc29VLENBQUMsU0FBUyxFQUFWLENBQWEsT0FBTyxjQUFwQixDQUFtQyxVQUFVLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sRUFBakMsQ0FBb0MsT0FBTyxTQUEzQyxDQUFELENBQTdDLENBQXFHLGtCQUFrQixNQUF2SCxDQUE4SCxPQUFPLFVBQXJJLENBQXRvVSxDQUF1eFUsQ0FBQyxTQUFTLEVBQVYsQ0FBYSxPQUFPLGNBQXBCLENBQW1DLFVBQVUsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQUQsQ0FBN0MsQ0FBcUcsa0JBQWtCLE1BQXZILENBQThILE9BQU8sVUFBckksQ0FBdnhVLENBQXc2VSxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sT0FBcEIsQ0FBNEIsVUFBVSxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBRCxDQUF0QyxDQUE4RixrQkFBa0IsTUFBaEgsQ0FBdUgsT0FBTyxVQUE5SCxDQUF4NlUsQ0FBa2pWLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLFNBQWpDLENBQTJDLE9BQU8sU0FBbEQsQ0FBRCxDQUFWLENBQXlFLE9BQU8sUUFBaEYsQ0FBeUYsVUFBVSxFQUFuRyxDQUFzRyxrQkFBa0IsWUFBeEgsQ0FBcUksT0FBTyxVQUE1SSxDQUFsalYsQ0FBMHNWLENBQUMsU0FBUyxFQUFWLENBQWEsT0FBTyxXQUFwQixDQUFnQyxVQUFVLEVBQTFDLENBQTZDLGtCQUFrQixZQUEvRCxDQUE0RSxPQUFPLFVBQW5GLENBQTFzVixDQUF5eVYsQ0FBQyxTQUFTLENBQUMsQ0FBQyxlQUFlLFNBQWhCLENBQTBCLE9BQU8sU0FBakMsQ0FBMkMsT0FBTyxTQUFsRCxDQUFELENBQVYsQ0FBeUUsT0FBTyxhQUFoRixDQUE4RixVQUFVLEVBQXhHLENBQTJHLGtCQUFrQixZQUE3SCxDQUEwSSxPQUFPLFVBQWpKLENBQXp5VixDQUFzOFYsQ0FBQyxTQUFTLEVBQVYsQ0FBYSxPQUFPLGdCQUFwQixDQUFxQyxVQUFVLEVBQS9DLENBQWtELGtCQUFrQixZQUFwRSxDQUFpRixPQUFPLFVBQXhGLENBQXQ4VixDQUEwaVcsQ0FBQyxTQUFTLEVBQVYsQ0FBYSxPQUFPLFlBQXBCLENBQWlDLFVBQVUsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQUQsQ0FBM0MsQ0FBbUcsa0JBQWtCLE1BQXJILENBQTRILE9BQU8sVUFBbkksQ0FBMWlXLENBQXlyVyxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sWUFBcEIsQ0FBaUMsVUFBVSxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBRCxDQUEzQyxDQUFtRyxrQkFBa0IsTUFBckgsQ0FBNEgsT0FBTyxVQUFuSSxDQUF6clcsQ0FBdzBXLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLGVBQWpDLENBQWlELE9BQU8sU0FBeEQsQ0FBRCxDQUFvRSxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxLQUFqQyxDQUF1QyxPQUFPLFNBQTlDLENBQXBFLENBQVYsQ0FBd0ksT0FBTyxPQUEvSSxDQUF1SixVQUFVLEVBQWpLLENBQW9LLGtCQUFrQixZQUF0TCxDQUFtTSxPQUFPLFVBQTFNLENBQXgwVyxDQUE4aFgsQ0FBQyxTQUFTLEVBQVYsQ0FBYSxPQUFPLFFBQXBCLENBQTZCLFVBQVUsQ0FBQyxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxFQUFqQyxDQUFvQyxPQUFPLFNBQTNDLENBQUQsQ0FBdkMsQ0FBK0Ysa0JBQWtCLE1BQWpILENBQXdILE9BQU8sVUFBL0gsQ0FBOWhYLENBQXlxWCxDQUFDLFNBQVMsRUFBVixDQUFhLE9BQU8sUUFBcEIsQ0FBNkIsVUFBVSxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLEVBQWpDLENBQW9DLE9BQU8sU0FBM0MsQ0FBRCxDQUF2QyxDQUErRixrQkFBa0IsTUFBakgsQ0FBd0gsT0FBTyxVQUEvSCxDQUF6cVgsQ0FBb3pYLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLE9BQWpDLENBQXlDLE9BQU8sU0FBaEQsQ0FBRCxDQUE0RCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxlQUFqQyxDQUFpRCxPQUFPLFNBQXhELENBQTVELENBQVYsQ0FBMEksT0FBTyxvQkFBakosQ0FBc0ssVUFBVSxFQUFoTCxDQUFtTCxrQkFBa0IsWUFBck0sQ0FBa04sT0FBTyxVQUF6TixDQUFwelgsQ0FBeWhZLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxTQUFoQixDQUEwQixPQUFPLE9BQWpDLENBQXlDLE9BQU8sU0FBaEQsQ0FBRCxDQUE0RCxDQUFDLGVBQWUsU0FBaEIsQ0FBMEIsT0FBTyxlQUFqQyxDQUFpRCxPQUFPLFNBQXhELENBQTVELENBQVYsQ0FBMEksT0FBTyxnQkFBakosQ0FBa0ssVUFBVSxFQUE1SyxDQUErSyxrQkFBa0IsWUFBak0sQ0FBOE0sT0FBTyxVQUFyTixDQUF6aFksQ0FBMHZZLENBQUMsa0JBQWtCLFNBQW5CLENBQTZCLE9BQU8sU0FBcEMsQ0FBMXZZLENBQTdCLENBRUQsR0FBSSxNQUFNLENBQUMsU0FBUCxFQUFvQixTQUF4QixDQUFvQyxNQUFNLENBQUMsU0FBUCxDQUFrQixFQUFsQixDQUNuQyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUE0QixLQUE1QixDQUVDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWtDLFVBQVUsQ0FDeEIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNkIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBNEIsS0FBNUIsQ0FBbUMsSUFBaEUsQ0FDbkIsQ0FGRCxDQUtELE1BQU0sQ0FBQyxlQUFQLENBQXVCLFlBQXZCLENBQW9DLFVBQXBDLENBQ0k7QUFJSixNQUFNLENBQUMsZUFBUCxDQUF1QixTQUF2QixDQUFtQyxDQUNuQyxFQUFFLENBQUUsR0FEK0IsQ0FFbkMsSUFBSSxDQUFFLE1BRjZCLENBR25DLE9BQU8sQ0FBRSxFQUgwQixDQUFuQyxDQVFBO0FBQ0EsTUFBTSxDQUFDLE1BQVAsQ0FBYyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBeEMsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxNQUFQLEVBQWUsU0FBbkIsQ0FBK0IsTUFBTSxDQUFDLE1BQVAsQ0FBYyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZ0JBQXhDLENBQy9CLEdBQUksTUFBTSxDQUFDLE1BQVAsRUFBZSxTQUFuQixDQUE4QixNQUFNLENBQUMsTUFBUCxDQUFjLENBQWQsQ0FDOUIsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsTUFBdkIsQ0FBOEIsTUFBTSxDQUFDLE1BQXJDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBVixDQUE2QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXZDLENBQ0EsTUFBTSxDQUFDLGFBQVAsQ0FBd0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFlBQWxELENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsUUFBdkIsQ0FBZ0MsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFNBQTFELENBQ0EsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFdBQTdDLENBQ0EsTUFBTSxDQUFDLGNBQVAsQ0FBd0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGdCQUFsRCxDQUNBLE1BQU0sQ0FBQyxhQUFQLENBQXVCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUFqRCxDQUNBLE1BQU0sQ0FBQyxjQUFQLENBQXdCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixlQUFsRCxDQUVBLEdBQUssTUFBTSxDQUFDLGNBQVAsRUFBdUIsU0FBNUIsQ0FBdUMsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsS0FBdEIsQ0FFdkMsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLENBQXdDLENBQXhDLENBQ0EsR0FBSSxNQUFNLENBQUMsY0FBUCxFQUF1QixTQUEzQixDQUNBLENBQ0UsTUFBTSxDQUFDLGNBQVAsQ0FBdUIsQ0FBdkIsQ0FFRCxDQUNELEdBQUksTUFBTSxDQUFDLGFBQVAsRUFBc0IsU0FBMUIsQ0FDQSxDQUNHLE1BQU0sQ0FBQyxhQUFQLENBQXNCLENBQXRCLENBQ0YsQ0FDQyxHQUFJLE1BQU0sQ0FBQyxhQUFQLEVBQXNCLFNBQTFCLENBQ0EsQ0FDSSxNQUFNLENBQUMsYUFBUCxDQUFzQixDQUF0QixDQUNILENBRUg7QUFDQSxHQUFJLENBQUEsVUFBVSxDQUFHLENBQUMsWUFBRCxDQUFqQixDQUNBO0FBQ0E7QUFDRyxHQUFJLENBQUEsZ0JBQWdCLENBQUcsQ0FBQyxHQUFHLENBQUUsQ0FBQyxDQUFDLE9BQU8sY0FBUixDQUF1QixRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBTixDQUFtQixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFuQyxDQUFELENBQTZDLENBQUMsSUFBSSxDQUFDLGtCQUFOLENBQXlCLEtBQUssQ0FBQyxFQUEvQixDQUE3QyxDQUEvQixDQUFELENBQU4sQ0FBeUgsT0FBTyxDQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBTixDQUFvQixNQUFNLENBQUMsS0FBM0IsQ0FBRCxDQUFsSSxDQUFzSyxJQUFJLENBQUUsb0JBQTVLLENBQWlNLFFBQVEsQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXJOLENBQW9PLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxjQUE1UCxDQUEyUSxlQUFlLENBQUMsTUFBTSxDQUFDLGFBQWxTLENBQWdULE1BQU0sQ0FBRyxNQUFNLENBQUMsT0FBaFUsQ0FBd1UsYUFBYSxDQUFHLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUEvVyxDQUFpWSxNQUFNLENBQUMsVUFBeFksQ0FBdkIsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixhQUF2QixDQUF1Qyx5QkFBeUIsQ0FBQyxjQUExQixDQUF5QyxnQkFBekMsQ0FBdkMsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixPQUF2QixDQUErQixNQUFNLENBQUMsZUFBUCxDQUF1QixhQUF0RCxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixNQUFNLENBQUMsZUFBUCxDQUF1QixhQUF6QyxDQUNBO0FBRUg7QUFDQSxNQUFNLENBQUMsR0FBUCxDQUFhLG1CQUFiLENBRUMsR0FBSSxDQUFBLG1CQUFtQixDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBcEMsQ0FDQyxHQUFJLENBQUEsb0JBQW9CLENBQUcsc0JBQXNCLE1BQU0sQ0FBQyxNQUE3QixDQUFvQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsU0FBekYsQ0FDQSxHQUFJLENBQUEsb0JBQUosQ0FDQSxHQUFJLENBQUEsdUJBQXVCLENBQUcsUUFBMUIsQ0FBQSx1QkFBMEIsQ0FBUyxJQUFULENBQWUsQ0FDekMsR0FBSSxDQUFBLGVBQWUsQ0FBRyxPQUFPLENBQUMsSUFBUixDQUFhLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBdkIsQ0FBdEIsQ0FDQSxHQUFJLElBQUksQ0FBQyxlQUFELENBQUosR0FBd0IsU0FBNUIsQ0FDQSxDQUNJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUEyQixJQUFJLENBQUMsZUFBRCxDQUEvQixDQUNKO0FBQ0Esb0JBQW9CLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFqQyxDQUNBLEdBQUksQ0FBQSxZQUFZLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLG9CQUFyQixDQUEwQyxvQkFBMUMsQ0FBK0QsV0FBL0QsQ0FBMkUsdUJBQTNFLENBQW5CLENBQ0MsQ0FDSixDQVRELENBVUEsR0FBSSxDQUFBLHNCQUFzQixDQUFHLFFBQXpCLENBQUEsc0JBQXlCLENBQVMsSUFBVCxDQUFlLENBQ3hDLEdBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBWCxDQUFKLENBQXdCLENBQXhCLEVBQTZCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixFQUEwQixDQUF2RCxFQUE0RCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFYLENBQUosR0FBMEIsU0FBMUYsQ0FBcUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLENBQTJCLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVgsQ0FBL0IsQ0FFckcsR0FBSSxDQUFBLFlBQVksQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsb0JBQXJCLENBQTBDLG9CQUExQyxDQUErRCxXQUEvRCxDQUEyRSx1QkFBM0UsQ0FBbkIsQ0FDQTtBQUNILENBTEQsQ0FRQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixHQUEyQixJQUEzQixFQUFtQyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsR0FBMkIsQ0FBbEUsQ0FDQSxDQUNJLEdBQUksQ0FBQSxXQUFXLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLG9CQUFyQixDQUEwQyxtQkFBMUMsQ0FBOEQsV0FBOUQsQ0FBMEUsc0JBQTFFLENBQWxCLENBQ0gsQ0FIRCxJQUdNLENBQ0Ysb0JBQW9CLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFqQyxDQUNBLEdBQUksQ0FBQSxZQUFZLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLG9CQUFyQixDQUEwQyxvQkFBMUMsQ0FBK0QsV0FBL0QsQ0FBMkUsdUJBQTNFLENBQW5CLENBQ0gsQ0FFRixHQUFJLENBQUEsV0FBVyxDQUFHLFFBQWQsQ0FBQSxXQUFjLENBQVMsSUFBVCxDQUNqQixDQUNJLEdBQUksQ0FBQSxVQUFVLENBQUMsS0FBZixDQUNBLEdBQUksSUFBSSxFQUFFLFNBQVYsQ0FDQSxDQUNHLEdBQUksSUFBSSxFQUFJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUFuQyxDQUNBLENBQ0csR0FBSSxNQUFPLENBQUEsSUFBUCxHQUFlLFFBQW5CLENBQTZCLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF5QyxJQUF6QyxDQUE3QixJQUNLLElBQUksS0FBSyxDQUFDLE9BQU4sQ0FBYyxJQUFkLENBQUosQ0FDTCxDQUNHLEdBQUksSUFBSSxDQUFDLE1BQUwsQ0FBWSxDQUFoQixDQUNBLENBQ0MsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLENBQXlDLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxFQUFqRCxDQUNBLENBQ0gsQ0FOSSxJQU9MLENBQ0csTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLENBQTBDLElBQUksQ0FBQyxFQUEvQyxDQUNGLENBQ0QsVUFBVSxDQUFHLElBQWIsQ0FDRixDQUNILENBQ0Q7QUFDQSxHQUFJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixFQUEyQyxJQUEvQyxDQUFxRCxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBd0MsQ0FBeEMsQ0FFckQsR0FBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBd0MsQ0FBeEMsRUFBNkMsVUFBakQsQ0FBNkQsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsdUJBQXZCLEdBR2hFLENBM0JGLENBOEJELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLEVBQXNCLFNBQTFCLENBQXFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixFQUFyQixDQUVyQyxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixpQkFBekIsQ0FDQSxDQUVHO0FBQ0E7QUFFQSxHQUFJLENBQUEsZUFBZSxDQUFHLFFBQVEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF4QyxDQUNBLEdBQUksQ0FBQSxpQkFBaUIsQ0FBRywyQkFBMkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLGdCQUFoRCxDQUFpRSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsY0FBbkgsQ0FDQSxHQUFJLENBQUEsT0FBTyxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQixpQkFBdEIsQ0FBd0MsSUFBeEMsQ0FBZCxDQUNBLEdBQUksQ0FBQSxRQUFRLENBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLGlCQUFyQixDQUF1QyxlQUF2QyxDQUF1RCxjQUF2RCxDQUFzRSxXQUF0RSxDQUFmLENBQ0EsR0FBSSxDQUFBLEdBQUcsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFFBQVgsQ0FBb0IsaUJBQXBCLENBQVYsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBeUMsR0FBRyxDQUFDLEVBQTdDLENBRUc7QUFDSCxHQUFJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixFQUEyQyxJQUEvQyxDQUFxRCxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBd0MsQ0FBeEMsQ0FFckQsR0FBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBd0MsQ0FBNUMsQ0FBK0MsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsdUJBQXZCLEdBQ2pELENBRUQ7QUFDQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF1QixRQUF2QixHQUFrQyxNQUFsQyxDQUF5QyxDQUF6QyxDQUEyQyxDQUEzQyxHQUErQyxHQUFuRCxDQUNBLENBQ0s7QUFDWDtBQUNBLGlGQUdRLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLEVBQXVCLFNBQXZCLEVBQW9DLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixFQUF1QixJQUEvRCxDQUVBLENBRVEsR0FBSSxDQUFBLGtCQUFlLENBQUcsUUFBUSxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQXhDLENBQ0Q7QUFDQyxHQUFJLENBQUEsb0JBQWlCLENBQUcsc0JBQXNCLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBaEMsQ0FBNEMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGNBQTlGLENBQ0EsR0FBSSxDQUFBLFdBQVEsQ0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsb0JBQXJCLENBQXVDLGtCQUF2QyxDQUF1RCxjQUF2RCxDQUFzRSxXQUF0RSxDQUFmLENBRVAsQ0FFRixDQUVELEdBQUksQ0FBQSxtQkFBbUIsQ0FBRyxRQUF0QixDQUFBLG1CQUFzQixFQUUxQixDQUNHLE1BQU0sQ0FBQyxlQUFQLENBQXVCLHVCQUF2QixHQUVGLENBTEQsQ0FNQSxHQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixTQUFyQixFQUFnQyxTQUFwQyxDQUNBLENBQ0csR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsU0FBckIsRUFBZ0MsRUFBcEMsQ0FDQSxDQUNHLEdBQUksQ0FBQSxnQkFBZ0IsQ0FBRyxRQUFRLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBekMsQ0FDQSxHQUFJLENBQUEsa0JBQWtCLENBQUcsT0FBTyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsY0FBMUQsQ0FDQSxHQUFJLENBQUEsU0FBUyxDQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixrQkFBckIsQ0FBd0MsZ0JBQXhDLENBQXlELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixTQUE5RSxDQUF3RixtQkFBeEYsQ0FBaEIsQ0FDRixDQUNILENBRUQsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsY0FBdkIsQ0FBc0MsU0FBUyxpQkFBVCxDQUN0QyxDQUVNLEdBQUksTUFBTSxDQUFDLGVBQVAsQ0FBdUIsaUJBQXZCLEVBQTBDLFNBQTlDLENBQ0EsQ0FDRyxNQUFNLENBQUMsZUFBUCxDQUF1QixpQkFBdkIsQ0FBMkMsaUJBQTNDLENBQ0YsQ0FIRCxJQUlBLENBQ0csR0FBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixpQkFBdkIsRUFBMEMsQ0FBMUMsRUFBK0MsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsaUJBQXZCLEVBQTBDLGlCQUE3RixDQUFnSCxNQUFNLENBQUMsZUFBUCxDQUF1QixpQkFBdkIsQ0FBMkMsaUJBQTNDLENBQWhILElBQ0ssQ0FBQSxNQUFNLENBQUMsZUFBUCxDQUF1QixpQkFBdkIsQ0FBeUMsQ0FBekMsQ0FDUCxDQUVOLENBWkQsQ0FjQSxNQUFNLENBQUMsZUFBUCxDQUF1QixRQUF2QixDQUFrQyxTQUFTLElBQVQsQ0FBYyxJQUFkLENBQW1CLEtBQW5CLENBQXlCLEdBQXpCLENBQ2xDLENBQ0csZUFBZSxDQUFDLFFBQWhCLENBQXlCLElBQXpCLENBQThCLElBQTlCLENBQW1DLEtBQW5DLEVBQ0EsR0FBSSxHQUFKLENBQVMsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsR0FBNUIsQ0FBZ0MsTUFBaEMsRUFDWCxDQUpELENBTUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsY0FBdkIsQ0FBd0MsVUFBWSxDQUU5QyxvQkFBb0IsQ0FBQyxpQkFBckIsQ0FBdUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFqRCxFQUEwRCxJQUExRCxDQUErRCxTQUFTLElBQVQsQ0FBZSxDQUU3RDtBQUNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBVixDQUFxQixJQUFJLENBQUMsSUFBMUIsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixjQUF2QixDQUF3QyxJQUF4QyxDQUVHLENBTnJCLENBTXNCLFNBQVMsS0FBVCxDQUFlLENBRW5CLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxDQUFzQyxPQUF0QyxFQUNELENBVGpCLEVBVUgsQ0FaSCxDQWFBO0FBR0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsdUJBQXZCLENBQWlELFNBQVMsU0FBVCxDQUFtQixDQUM1RCxHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsSUFBOUIsQ0FDQSxDQUNFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUEyQixDQUEzQixDQUVELENBQ0QsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsVUFBdkIsQ0FBa0MsS0FBbEMsQ0FDQSxvQkFBb0IsQ0FBQyxlQUFyQixDQUFxQyxTQUFyQyxDQUErQyxHQUEvQyxDQUFtRCxJQUFuRCxFQUF5RCxJQUF6RCxDQUE4RCxTQUFTLElBQVQsQ0FBZSxDQUUzRCxNQUFNLENBQUMsZUFBUCxDQUF1Qix3QkFBdkIsQ0FBaUQsSUFBSSxDQUFDLElBQUwsQ0FBVSxrQkFBM0QsQ0FDQSxHQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUF4QixDQUFKLENBQXNDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFNBQXZCLENBQWlDLE9BQWpDLENBQXlDLE1BQXpDLENBQW1ELElBQUksQ0FBQyxJQUFMLENBQVUsT0FBN0QsQ0FFdEMsR0FBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsRUFBNkMsU0FBakQsQ0FDQyxDQUNDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxJQUE1QyxDQUFpRCxNQUFNLENBQUMsZUFBUCxDQUF1Qix3QkFBdkIsQ0FBZ0QsSUFBakcsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsU0FBNUMsQ0FBc0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFoRSxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxjQUE1QyxDQUEyRCxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXJFLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLFdBQTVDLENBQXdELE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBbEUsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsYUFBNUMsQ0FBMEQsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsYUFBdkIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUEvQyxDQUExRCxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxlQUE1QyxDQUE0RCxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQXRFLENBQ0EsQ0FSRixJQVNJLENBQ0YsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLENBQUMsT0FBTyxNQUFNLENBQUMsZUFBUCxDQUF1Qix3QkFBdkIsQ0FBZ0QsSUFBeEQsQ0FBNkQsWUFBWSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5GLENBQTRGLGlCQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXZILENBQXdJLGNBQWMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFoSyxDQUE2SyxnQkFBZ0IsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsYUFBdkIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUEvQyxDQUE3TCxDQUEwUCxrQkFBa0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUF0UixDQUE1QyxDQUVELENBQ0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBL0IsQ0FFTDtBQUMzQjtBQUNBO0FBQ0EsK0JBdkIyRixDQXlCM0Q7QUFDQSx5QkFBeUIsQ0FBQyxPQUExQixDQUFrQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXBCLENBQW9DLEdBQUcsQ0FBRSxDQUFDLENBQUMsT0FBTyxjQUFSLENBQXVCLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5DLENBQUQsQ0FBNkMsQ0FBQyxJQUFJLENBQUMsa0JBQU4sQ0FBeUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQXpDLENBQTdDLENBQS9CLENBQUQsQ0FBekMsQ0FBbEMsRUFFRSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBOEMsSUFBOUMsQ0FDQTtBQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFVBQXZCLENBQWtDLElBQWxDLENBRUg7QUFDQyxNQUFNLENBQUMsZUFBUCxDQUF1QixRQUF2QixDQUFnQyxNQUFNLENBQUMsZUFBUCxDQUF1QixTQUF2QixDQUFpQyxPQUFqQyxDQUF5QyxNQUF6RSxDQUFnRixVQUFoRixDQUEyRixLQUEzRixFQUVDLENBbkNuQixDQW1Db0IsU0FBUyxLQUFULENBQWUsQ0FDZCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFFTCxDQXRDaEIsRUF3Q1AsQ0FoREQsQ0FrREEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFWLENBQTBCLFNBQVMsS0FBVCxDQUFlLENBRXRDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixDQUFsQixDQUNBLEdBQUksS0FBSyxFQUFFLEtBQVgsQ0FBa0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLENBQWxCLENBQ2xCLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBNkIsS0FBN0IsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBMEIsSUFBMUIsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTZCLElBQTdCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQTBCLElBQTFCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQTBCLElBQTFCLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUE2QixJQUE3QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUEwQixJQUExQixDQUVBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLEVBQXVCLFNBQTNCLENBQ0EsQ0FDRyxJQUFJLENBQUMsR0FBTCxDQUFTLFdBQVQsR0FBdUIsSUFBdkIsQ0FBNEIsU0FBVSxNQUFWLENBQWtCLENBQ3BDLFFBQVEsQ0FBQyxVQUFVLENBQ2QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLENBQXdCLE1BQU0sQ0FBQyxDQUFELENBQTlCLENBQ0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXVCLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBakMsQ0FBNkMsS0FBN0MsRUFDRCxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsQ0FBc0IsS0FBdEIsRUFDSixDQUpPLENBQVIsQ0FLVCxDQU5ELEVBUUYsQ0FWRCxJQVdBLENBQ0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFWLENBQXVCLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBakMsQ0FBNkMsS0FBN0MsRUFDRixNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsQ0FBc0IsS0FBdEIsRUFFQyxDQUdILENBOUJELENBZ0NBLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF5QixTQUFTLE1BQVQsQ0FBZ0IsS0FBaEIsQ0FBc0IsQ0FFbEMsR0FBSSxDQUFBLFlBQUosQ0FDQSxHQUFJLENBQUEsUUFBSixDQUNBLEdBQUksQ0FBQSxlQUFlLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFoQyxDQUNBLEdBQUksS0FBSyxFQUFFLE9BQVgsQ0FDQSxDQUNFLFlBQVksQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXhCLENBQ0EsUUFBUSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsaUJBQXJCLENBQ0QsQ0FKRCxJQUtBLENBQ0UsWUFBWSxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBeEIsQ0FDQSxRQUFRLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxpQkFBckIsQ0FHRCxDQUVSLEdBQUksQ0FBQSxJQUFKLENBQ0EsR0FBSSxNQUFNLENBQUMsUUFBWCxDQUNBLENBQ0MsSUFBSSxDQUFFLEdBQUksQ0FBQSxJQUFKLENBQVMsTUFBTSxDQUFDLFFBQWhCLENBQU4sQ0FDQSxDQUhELElBR00sSUFBSSxNQUFNLENBQUMsSUFBWCxDQUNOLENBQ0csSUFBSSxDQUFFLEdBQUksQ0FBQSxJQUFKLENBQVMsTUFBTSxDQUFDLElBQWhCLENBQU4sQ0FDRixDQUhLLElBSU4sQ0FDRyxJQUFJLENBQUcsSUFBUCxDQUNBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLGtDQUE1QixDQUErRCxPQUEvRCxFQUNGLENBRUUsR0FBSSxJQUFJLEVBQUUsSUFBVixDQUNBLENBQ2lCLEdBQUksQ0FBQSxTQUFTLENBQUcsR0FBSSxDQUFBLElBQUksQ0FBQyxHQUFMLENBQVMsUUFBYixDQUFzQixRQUF0QixDQUErQixZQUEvQixDQUFoQixDQUdBLFNBQVMsQ0FBQyxPQUFWLENBQWtCLFNBQWxCLENBQTRCLE1BQTVCLENBQW1DLGVBQW5DLEVBQW9ELElBQXBELEdBQTJELElBQTNELENBQWdFLFNBQVUsYUFBVixDQUF5QixDQUN6RixHQUFJLENBQUEsR0FBRyxDQUFHLElBQUksQ0FBQyxLQUFMLENBQVcsT0FBWCxDQUFtQixhQUFuQixDQUFrQyxPQUFsQyxDQUFWLENBRUEsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBc0IsR0FBdEIsQ0FBMkIsQ0FBdkMsQ0FBUixDQUNDLENBSkQsRUFLYixDQUVaLENBMUNELENBNENHLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF5QixVQUFVLENBRTFCLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUEwQixJQUExQixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBNkIsSUFBN0IsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBMEIsSUFBMUIsQ0FDQyxHQUFJLENBQUEsSUFBSixDQUNBLEdBQUksQ0FBQSxZQUFKLENBQWlCLFFBQWpCLENBQ0EsR0FBSSxDQUFBLE9BQU8sQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQXhCLENBQ0EsR0FBSSxDQUFBLEtBQUssQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQXRCLENBQ0EsR0FBSSxDQUFBLEtBQUssQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUF0QixDQUNBLEdBQUksS0FBSyxFQUFFLE9BQVgsQ0FDQSxDQUNFLFlBQVksQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXhCLENBQ0EsUUFBUSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsaUJBQXJCLENBQ0QsQ0FKRCxJQUtBLENBQ0UsWUFBWSxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBeEIsQ0FDQSxRQUFRLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxpQkFBckIsQ0FHRCxDQUNELEdBQUksTUFBTSxDQUFDLFFBQVgsQ0FDRSxDQUNDLElBQUksQ0FBRSxHQUFJLENBQUEsSUFBSixDQUFTLE1BQU0sQ0FBQyxRQUFoQixDQUFOLENBQ0EsQ0FISCxJQUdRLElBQUksTUFBTSxDQUFDLElBQVgsQ0FDTixDQUNHLElBQUksQ0FBRSxHQUFJLENBQUEsSUFBSixDQUFTLE1BQU0sQ0FBQyxJQUFoQixDQUFOLENBQ0YsQ0FISyxJQUlOLENBQ0csSUFBSSxDQUFHLElBQVAsQ0FDQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0Qiw2QkFBNUIsQ0FBMEQsT0FBMUQsRUFDRixDQUVFLEdBQUksSUFBSSxFQUFFLElBQVYsQ0FDQSxDQUNRLEdBQUksQ0FBQSxTQUFTLENBQUcsR0FBSSxDQUFBLElBQUksQ0FBQyxHQUFMLENBQVMsUUFBYixDQUFzQixRQUF0QixDQUErQixZQUEvQixDQUFoQixDQUVBLFNBQVMsQ0FBQyxPQUFWLENBQWtCLElBQWxCLENBQXlCLEtBQXpCLENBQ0EsR0FBSSxDQUFBLFVBQVUsQ0FBRyxJQUFJLENBQUMsS0FBTCxDQUFXLEtBQVgsQ0FBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLFFBQXhCLEVBQWpCLENBQXFELE9BQXJELENBQWpCLENBRUEsU0FBUyxDQUFDLE9BQVYsQ0FBa0IsT0FBbEIsQ0FBMEIsT0FBMUIsQ0FBa0MsVUFBbEMsRUFBOEMsSUFBOUMsR0FDQyxFQURELENBQ0ksaUJBREosQ0FDdUIsU0FBUyxJQUFULENBQWMsQ0FFakMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTJCLElBQTNCLENBQ1YsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLENBQW1CLElBQW5CLENBQXlCLENBRDNCLENBQVIsQ0FHRixDQU5GLEVBT0UsRUFQRixDQU9LLGNBUEwsQ0FPcUIsU0FBUyxrQkFBVCxDQUE2QixPQUE3QixDQUFxQyxDQUN0RCxHQUFJLGtCQUFrQixDQUFDLENBQXZCLENBQ0EsQ0FDQSxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUF3QixrQkFBeEIsQ0FDVixNQUFNLENBQUMsRUFBUCxDQUFVLFFBQVYsQ0FBbUIsS0FBbkIsQ0FFQyxDQUhILENBQVIsQ0FJQyxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBdUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFqQyxDQUE2QyxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUF2RCxFQUNBLENBQ0gsQ0FoQkYsRUFpQkUsRUFqQkYsQ0FpQkssU0FqQkwsQ0FpQmdCLFNBQVMsT0FBVCxDQUFpQixDQUNqQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUFzQixPQUF0QixDQUNYLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixPQUFPLENBQUMsTUFBMUIsQ0FDQyxDQUZGLENBQVIsQ0FJRTtBQUVBLENBeEJGLEVBeUJELEVBekJDLENBeUJFLE9BekJGLENBeUJXLFNBQVMsS0FBVCxDQUFnQixPQUFoQixDQUF5QixDQUFFO0FBQ3BDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLEtBQUssQ0FBQyxPQUE5QixDQUNyQixHQUFJLE9BQU8sRUFBRSxTQUFiLENBQXlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBVixDQUFrQixPQUFPLENBQUMsTUFBMUIsQ0FDdkIsQ0FGTyxDQUFSLENBR0gsQ0E3QkMsRUFnQ2IsQ0F2Q0ssSUF1Q0MsQ0FBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0Qiw2QkFBNUIsQ0FBMEQsT0FBMUQsRUFFbEIsQ0ExRUUsQ0E0RUYsTUFBTSxDQUFDLEVBQVAsQ0FBVSxLQUFWLENBQWtCLFVBQVUsQ0FFaEIsR0FBSSxDQUFBLFlBQUosQ0FBaUIsUUFBakIsQ0FDQSxHQUFJLENBQUEsZUFBZSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBaEMsQ0FDQSxHQUFJLENBQUEsV0FBVyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQTVCLENBQ0EsR0FBSSxDQUFBLEtBQUssQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQXRCLENBQ0EsR0FBSSxDQUFBLEtBQUssQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUF0QixDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUEwQixJQUExQixDQUNELE1BQU0sQ0FBQyxFQUFQLENBQVUsZ0JBQVYsQ0FBNkIsSUFBN0IsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBMEIsSUFBMUIsQ0FDQSxHQUFJLENBQUEsSUFBSixDQUNDLEdBQUksS0FBSyxFQUFFLE9BQVgsQ0FDQSxDQUNFLFlBQVksQ0FBRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXhCLENBQ0EsUUFBUSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsaUJBQXJCLENBQ0QsQ0FKRCxJQUtBLENBQ0UsWUFBWSxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBeEIsQ0FDQSxRQUFRLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxpQkFBckIsQ0FHRCxDQUNGLEdBQUksTUFBTSxDQUFDLFFBQVgsQ0FDQSxDQUNDLElBQUksQ0FBRSxHQUFJLENBQUEsSUFBSixDQUFTLE1BQU0sQ0FBQyxRQUFoQixDQUFOLENBQ0EsQ0FIRCxJQUdNLElBQUksTUFBTSxDQUFDLElBQVgsQ0FDTixDQUNHLElBQUksQ0FBRSxHQUFJLENBQUEsSUFBSixDQUFTLE1BQU0sQ0FBQyxJQUFoQixDQUFOLENBQ0YsQ0FISyxJQUlOLENBQ0csSUFBSSxDQUFHLElBQVAsQ0FDQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixrQ0FBNUIsQ0FBK0QsT0FBL0QsRUFDRixDQUVKLEdBQUksSUFBSSxFQUFFLElBQVYsQ0FDQSxDQUdpQixHQUFJLENBQUEsWUFBWSxDQUFHLEdBQUksQ0FBQSxJQUFJLENBQUMsR0FBTCxDQUFTLFFBQWIsQ0FBc0IsV0FBdEIsQ0FBa0MsZUFBbEMsQ0FBbkIsQ0FFQSxZQUFZLENBQUMsT0FBYixDQUFxQixJQUFyQixDQUE0QixLQUE1QixDQUNBLEdBQUksQ0FBQSxVQUFVLENBQUcsSUFBSSxDQUFDLEtBQUwsQ0FBVyxLQUFYLENBQWlCLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUFzQixRQUF0QixFQUFqQixDQUFtRCxPQUFuRCxDQUFqQixDQUNBLFlBQVksQ0FBQyxPQUFiLENBQXFCLEtBQXJCLENBQTJCLFlBQTNCLENBQXdDLFVBQXhDLEVBQW9ELElBQXBELEdBQ0MsRUFERCxDQUNJLGlCQURKLENBQ3VCLFNBQVMsSUFBVCxDQUFjLENBRWpDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBVixDQUEyQixJQUEzQixDQUNWLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBVixDQUFtQixJQUFuQixDQUF5QixDQUQzQixDQUFSLENBR0YsQ0FORixFQU9FLEVBUEYsQ0FPSyxjQVBMLENBT3FCLFNBQVMsa0JBQVQsQ0FBNkIsT0FBN0IsQ0FBcUMsQ0FDdEQsR0FBSSxrQkFBa0IsQ0FBQyxDQUF2QixDQUNBLENBQ0MsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBd0Isa0JBQXhCLENBQ1YsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLENBQW1CLEtBQW5CLENBQ0MsQ0FGSCxDQUFSLENBR0EsQ0FDSCxDQWRGLEVBZUUsRUFmRixDQWVLLFNBZkwsQ0FlZ0IsU0FBUyxPQUFULENBQWlCLENBQ2hDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLENBQXNCLE9BQXRCLENBQ1gsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLENBQWtCLE9BQU8sQ0FBQyxNQUExQixDQUNDLENBRkYsQ0FBUixDQUdDLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF1QixNQUFNLENBQUMsRUFBUCxDQUFVLFdBQWpDLENBQTZDLEtBQTdDLEVBQ0E7QUFFQSxDQXRCRixFQXVCRCxFQXZCQyxDQXVCRSxPQXZCRixDQXVCVyxTQUFTLEtBQVQsQ0FBZ0IsT0FBaEIsQ0FBeUIsQ0FBRTtBQUNyQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUF3QixLQUFLLENBQUMsT0FBOUIsQ0FDbkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLENBQW1CLEtBQW5CLENBQ0EsR0FBSSxPQUFPLEVBQUUsU0FBYixDQUF3QixNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsQ0FBa0IsT0FBTyxDQUFDLE1BQTFCLENBQ3ZCLENBSE0sQ0FBUixDQUlGLENBNUJDLEVBOEJGO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQ21CLENBL0NKLElBK0NVLENBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsNkJBQTVCLENBQTBELE9BQTFELEVBRWxCLENBbkZBLENBcUZELE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBVixDQUFtQixTQUFTLEtBQVQsQ0FBZSxLQUFmLENBQXFCLENBRWxDLEdBQUksQ0FBQSxJQUFKLENBRUEsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsQ0FBZSxLQUFmLEdBQXVCLFNBQTNCLENBQXNDLE1BQU0sQ0FBQyxFQUFQLENBQVUsSUFBVixDQUFlLEtBQWYsRUFBd0IsQ0FBQyxZQUFZLENBQUcsSUFBaEIsQ0FBcUIsZUFBZSxDQUFHLElBQXZDLENBQTRDLFlBQVksQ0FBRyxJQUEzRCxDQUFnRSxPQUFPLENBQUMsSUFBeEUsQ0FBNkUsVUFBVSxDQUFDLElBQXhGLENBQTZGLE1BQU0sQ0FBRyxJQUF0RyxDQUF4QixDQUF0QyxJQUVBLENBQ0csTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLENBQWUsS0FBZixFQUFzQixZQUF0QixDQUFtQyxJQUFuQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsSUFBVixDQUFlLEtBQWYsRUFBc0IsZUFBdEIsQ0FBd0MsSUFBeEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsQ0FBZSxLQUFmLEVBQXNCLFlBQXRCLENBQXFDLElBQXJDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLENBQWUsS0FBZixFQUFzQixVQUF0QixDQUFtQyxJQUFuQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsSUFBVixDQUFlLEtBQWYsRUFBc0IsT0FBdEIsQ0FBZ0MsSUFBaEMsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsQ0FBZSxLQUFmLEVBQXNCLE1BQXRCLENBQStCLElBQS9CLENBRUYsQ0FFRCxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQVYsQ0FBdUIsS0FBdkIsQ0FFQSxHQUFJLE1BQU0sQ0FBQyxRQUFYLENBQ0EsQ0FDQyxJQUFJLENBQUUsR0FBSSxDQUFBLElBQUosQ0FBUyxNQUFNLENBQUMsUUFBaEIsQ0FBTixDQUNBLENBSEQsSUFHTSxJQUFJLE1BQU0sQ0FBQyxJQUFYLENBQ04sQ0FDRyxJQUFJLENBQUUsR0FBSSxDQUFBLElBQUosQ0FBUyxNQUFNLENBQUMsSUFBaEIsQ0FBTixDQUNGLENBSEssSUFJTixDQUNHLElBQUksQ0FBRyxJQUFQLENBQ0EsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsa0NBQTVCLENBQStELE9BQS9ELEVBQ0YsQ0FFRSxHQUFJLElBQUksRUFBRSxJQUFWLENBQ0EsQ0FDUyxHQUFJLENBQUEsZUFBZSxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBaEMsQ0FDQSxHQUFJLENBQUEsV0FBVyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQTVCLENBRUEsR0FBSSxDQUFBLFlBQVksQ0FBRyxHQUFJLENBQUEsSUFBSSxDQUFDLEdBQUwsQ0FBUyxRQUFiLENBQXNCLFdBQXRCLENBQWtDLGVBQWxDLENBQW5CLENBRUEsSUFBSSxDQUFDLEdBQUwsQ0FBUyxXQUFULEdBQXVCLElBQXZCLENBQTRCLFNBQVUsTUFBVixDQUFrQixDQUN4QyxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsQ0FBd0IsTUFBTSxDQUFDLENBQUQsQ0FBOUIsQ0FFQSxZQUFZLENBQUMsT0FBYixDQUFxQixJQUFyQixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLFdBQXRDLENBRUgsR0FBSSxLQUFKLENBQ0EsQ0FDRyxZQUFZLENBQUMsT0FBYixDQUFxQixXQUFyQixDQUFpQyxLQUFqQyxFQUF3QyxJQUF4QyxHQUNFLEVBREYsQ0FDSyxpQkFETCxDQUN3QixTQUFTLElBQVQsQ0FBYyxDQUVoQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsSUFBVixDQUFlLEtBQWYsRUFBc0IsZUFBdEIsQ0FBc0MsSUFBdEMsQ0FDakIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLENBQWUsS0FBZixFQUFzQixPQUF0QixDQUE4QixJQUE5QixDQUNDLENBRkksQ0FBUixDQUlMLENBUEQsRUFRQyxFQVJELENBUUksY0FSSixDQVFvQixTQUFTLGtCQUFULENBQTZCLE9BQTdCLENBQXFDLENBQ3RELEdBQUksa0JBQWtCLENBQUMsQ0FBdkIsQ0FDRyxDQUNHLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLENBQWUsS0FBZixFQUFzQixZQUF0QixDQUFtQyxrQkFBbkMsQ0FDakIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLENBQWUsS0FBZixFQUFzQixPQUF0QixDQUE4QixLQUE5QixDQUVDLENBSEksQ0FBUixDQUlGLENBQ04sQ0FoQkQsRUFpQkMsRUFqQkQsQ0FpQkksU0FqQkosQ0FpQmUsU0FBUyxPQUFULENBQWlCLENBQzdCLFFBQVEsQ0FBQyxVQUFVLENBQ2IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLENBQWUsS0FBZixFQUFzQixVQUF0QixDQUFpQyxPQUFqQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsSUFBVixDQUFlLEtBQWYsRUFBc0IsTUFBdEIsQ0FBNkIsT0FBTyxDQUFDLE1BQXJDLENBR0wsQ0FMTyxDQUFSLENBT0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLEdBR0YsQ0E1QkQsRUE2QkMsRUE3QkQsQ0E2QkksT0E3QkosQ0E2QmEsU0FBUyxLQUFULENBQWdCLE9BQWhCLENBQXlCLENBQUU7QUFDcEMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsQ0FBZSxLQUFmLEVBQXNCLFlBQXRCLENBQW1DLEtBQUssQ0FBQyxPQUF6QyxDQUNaLEdBQUksT0FBTyxFQUFFLFNBQWIsQ0FBd0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLENBQWUsS0FBZixFQUFzQixNQUF0QixDQUE2QixPQUFPLENBQUMsTUFBckMsQ0FDdkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLENBQWUsS0FBZixFQUFzQixPQUF0QixDQUE4QixLQUE5QixDQUFxQyxDQUZ0QyxDQUFSLENBR0gsQ0FqQ0QsRUFtQ0YsQ0FyQ0QsSUFzQ0ksQ0FDRSxZQUFZLENBQUMsT0FBYixDQUFxQixNQUFyQixDQUE0QixLQUE1QixFQUFtQyxJQUFuQyxHQUNDLEVBREQsQ0FDSSxpQkFESixDQUN1QixTQUFTLElBQVQsQ0FBYyxDQUVsQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsSUFBVixDQUFlLEtBQWYsRUFBc0IsZUFBdEIsQ0FBc0MsSUFBdEMsQ0FDWCxNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsQ0FBZSxLQUFmLEVBQXNCLE9BQXRCLENBQThCLElBQTlCLENBQW9DLENBRHJDLENBQVIsQ0FHRixDQU5ELEVBT0MsRUFQRCxDQU9JLGNBUEosQ0FPb0IsU0FBUyxrQkFBVCxDQUE2QixPQUE3QixDQUFxQyxDQUN0RCxHQUFJLGtCQUFrQixDQUFDLENBQXZCLENBQ0EsQ0FDQSxRQUFRLENBQUMsVUFBVSxDQUNoQixNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsQ0FBZSxLQUFmLEVBQXNCLFlBQXRCLENBQW1DLGtCQUFuQyxDQUNNLE1BQU0sQ0FBQyxFQUFQLENBQVUsSUFBVixDQUFlLEtBQWYsRUFBc0IsT0FBdEIsQ0FBOEIsS0FBOUIsQ0FBcUMsQ0FGdEMsQ0FBUixDQUdDLENBQ0gsQ0FkRCxFQWVDLEVBZkQsQ0FlSSxTQWZKLENBZWUsU0FBUyxPQUFULENBQWlCLENBRWpDLFFBQVEsQ0FBQyxVQUFVLENBRVYsTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLENBQWUsS0FBZixFQUFzQixVQUF0QixDQUFpQyxPQUFqQyxDQUNBLE1BQU0sQ0FBQyxFQUFQLENBQVUsSUFBVixDQUFlLEtBQWYsRUFBc0IsTUFBdEIsQ0FBNkIsT0FBTyxDQUFDLE1BQXJDLENBR0MsQ0FORixDQUFSLENBT0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLEdBR0EsQ0EzQkQsRUE0QkYsRUE1QkUsQ0E0QkMsT0E1QkQsQ0E0QlUsU0FBUyxLQUFULENBQWdCLE9BQWhCLENBQXlCLENBQUU7QUFDcEMsUUFBUSxDQUFDLFVBQVUsQ0FDWCxNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsQ0FBZSxLQUFmLEVBQXNCLFlBQXRCLENBQW1DLEtBQUssQ0FBQyxPQUF6QyxDQUVBLEdBQUksT0FBTyxFQUFFLFNBQWIsQ0FBeUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLENBQWUsS0FBZixFQUFzQixNQUF0QixDQUE2QixPQUFPLENBQUMsTUFBckMsQ0FDeEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLENBQWUsS0FBZixFQUFzQixPQUF0QixDQUE4QixLQUE5QixDQUFxQyxDQUp0QyxDQUFSLENBTUgsQ0FuQ0UsRUFxQ0wsQ0FDWixDQWxGUSxFQW9GWCxDQUVOLENBM0hELENBNkhBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUF1QixTQUFTLEtBQVQsQ0FBZSxDQUUxQixHQUFJLENBQUEsSUFBSixDQUNDLEdBQUksQ0FBQSxZQUFKLENBQWlCLFFBQWpCLENBRUEsR0FBSSxLQUFLLEVBQUUsT0FBWCxDQUNBLENBQ0UsWUFBWSxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBeEIsQ0FDQSxRQUFRLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxpQkFBckIsQ0FDRCxDQUpELElBS0EsQ0FDRSxZQUFZLENBQUUsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF4QixDQUNBLFFBQVEsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLGlCQUFyQixDQUdELENBQ1QsR0FBSSxNQUFNLENBQUMsUUFBWCxDQUNDLENBQ0MsSUFBSSxDQUFFLEdBQUksQ0FBQSxJQUFKLENBQVMsTUFBTSxDQUFDLFFBQWhCLENBQU4sQ0FDQSxDQUhGLElBR08sSUFBSSxNQUFNLENBQUMsSUFBWCxDQUNOLENBQ0csSUFBSSxDQUFFLEdBQUksQ0FBQSxJQUFKLENBQVMsTUFBTSxDQUFDLElBQWhCLENBQU4sQ0FDRixDQUhLLElBSU4sQ0FDRyxJQUFJLENBQUcsSUFBUCxDQUNBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLGtDQUE1QixDQUErRCxPQUEvRCxFQUNGLENBRUUsR0FBSSxJQUFJLEVBQUUsSUFBVixDQUNBLENBQ2lCLEdBQUksQ0FBQSxTQUFTLENBQUcsR0FBSSxDQUFBLElBQUksQ0FBQyxHQUFMLENBQVMsUUFBYixDQUFzQixRQUF0QixDQUErQixZQUEvQixDQUFoQixDQUdBLFNBQVMsQ0FBQyxPQUFWLENBQWtCLFNBQWxCLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBdEMsRUFBbUQsSUFBbkQsR0FBMEQsSUFBMUQsQ0FBK0QsU0FBVSxPQUFWLENBQW1CLENBQ2xGLEdBQUksQ0FBQSxHQUFHLENBQUcsSUFBSSxDQUFDLEtBQUwsQ0FBVyxPQUFYLENBQW1CLE9BQW5CLENBQTRCLE9BQTVCLENBQVYsQ0FDQSxHQUFJLEdBQUcsRUFBRSxHQUFULENBQ0EsQ0FDUSxNQUFNLENBQUMsZ0JBQVAsQ0FBMEIsS0FBMUIsQ0FDQSxNQUFNLENBQUMsaUJBQVAsQ0FBMkIsc0JBQTNCLENBQ1AsQ0FKRCxJQUlNLENBQUEsTUFBTSxDQUFDLGdCQUFQLENBQTBCLElBQTFCLENBQ04sUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsYUFBUCxDQUF1QixHQUFHLENBQUUsUUFBNUIsQ0FBc0MsQ0FBbEQsQ0FBUixDQUNDLENBUkQsRUFTWCxDQUNMLENBM0NWLENBK0NJLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBVixDQUF5QixTQUFTLFlBQVQsQ0FBc0IsQ0FDN0MsR0FBSSxDQUFBLE1BQUosQ0FFRCxHQUFJLE1BQU0sQ0FBQyxRQUFYLENBQ0MsQ0FDQyxJQUFJLENBQUUsR0FBSSxDQUFBLElBQUosQ0FBUyxNQUFNLENBQUMsUUFBaEIsQ0FBTixDQUNBLENBSEYsSUFHTyxJQUFJLE1BQU0sQ0FBQyxJQUFYLENBQ04sQ0FDRyxJQUFJLENBQUUsR0FBSSxDQUFBLElBQUosQ0FBUyxNQUFNLENBQUMsSUFBaEIsQ0FBTixDQUNGLENBSEssSUFJTixDQUNHLElBQUksQ0FBRyxJQUFQLENBQ0EsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsa0NBQTVCLENBQStELE9BQS9ELEVBQ0YsQ0FFRSxHQUFJLElBQUksRUFBRSxJQUFWLENBQ0EsQ0FHQSxNQUFNLENBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFMLENBQVcsT0FBWCxDQUFtQixZQUFuQixDQUFpQyxPQUFqQyxDQUFELENBQU4sQ0FBa0QsY0FBbEQsQ0FBaUUsU0FBakUsQ0FBNEUsQ0FBRSxxQkFBcUIsQ0FBRSxFQUF6QixDQUE1RSxDQUFULENBRUMsQ0FFSjtBQUNaO0FBQ0E7QUFDQTtBQUNBLGFBQ1csTUFBTyxDQUFBLE1BQVAsQ0FDQSxDQTdCRCxDQWdDQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBc0IsU0FBUyxLQUFULENBQWUsUUFBZixDQUF3QixNQUF4QixDQUErQixZQUEvQixDQUE0QyxDQUNoRSxHQUFJLENBQUEsTUFBSixDQUFXLFlBQVgsQ0FFQSxHQUFJLENBQUEsV0FBVyxDQUFHLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixLQUF6QixDQUFsQixDQUNBLEdBQUksTUFBTSxDQUFDLFFBQVgsQ0FDQSxDQUNDLElBQUksQ0FBRSxHQUFJLENBQUEsSUFBSixDQUFTLE1BQU0sQ0FBQyxRQUFoQixDQUFOLENBQ0EsQ0FIRCxJQUdNLElBQUksTUFBTSxDQUFDLElBQVgsQ0FDTixDQUNHLElBQUksQ0FBRSxHQUFJLENBQUEsSUFBSixDQUFTLE1BQU0sQ0FBQyxJQUFoQixDQUFOLENBQ0YsQ0FISyxJQUlOLENBQ0csSUFBSSxDQUFHLElBQVAsQ0FDQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0Qiw2QkFBNUIsQ0FBMEQsT0FBMUQsRUFDRixDQUVFLEdBQUksSUFBSSxFQUFFLElBQVYsQ0FDQSxDQUVBLE1BQU0sQ0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUwsQ0FBVyxPQUFYLENBQW1CLE1BQW5CLENBQTJCLE9BQTNCLENBQUQsQ0FBZixDQUNBLFlBQVksQ0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUwsQ0FBVyxPQUFYLENBQW1CLFlBQW5CLENBQWlDLE9BQWpDLENBQUQsQ0FBckIsQ0FDQSxHQUFJLFdBQVcsRUFBRSxRQUFqQixDQUEyQixNQUFNLENBQUcsTUFBTSxDQUFDLFlBQWhCLENBQTNCLElBQ0ssQ0FBQSxNQUFNLENBQUcsWUFBVCxDQUNMLE1BQU0sQ0FBRyxNQUFNLENBQUMsY0FBUCxDQUFzQixTQUF0QixDQUFpQyxDQUFFLHFCQUFxQixDQUFFLENBQXpCLENBQWpDLENBQVQsQ0FFRixDQUVGLE1BQU8sQ0FBQSxNQUFQLENBQ0EsQ0E1QkQsQ0E4QkEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXVCLFNBQVMsS0FBVCxDQUFlLENBRWxDLEdBQUksS0FBSyxDQUFDLFFBQU4sRUFBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUE5QixDQUEyQyxNQUFPLE1BQVAsQ0FBM0MsSUFDSyxPQUFPLEtBQVAsQ0FDUCxDQUpGLENBU0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXVCLFNBQVMsZUFBVCxDQUF5QixDQUM5QyxHQUFJLENBQUEsUUFBSixDQUNBLEdBQUksQ0FBQSxPQUFPLENBQUcsQ0FBRSxPQUFPLENBQUUsT0FBWCxDQUFvQixJQUFJLENBQUUsU0FBMUIsQ0FBcUMsS0FBSyxDQUFFLE9BQTVDLENBQXFELEdBQUcsQ0FBRSxTQUExRCxDQUFvRSxJQUFJLENBQUUsU0FBMUUsQ0FBcUYsTUFBTSxDQUFDLFNBQTVGLENBQXNHLE1BQU0sQ0FBQyxTQUE3RyxDQUF1SCxNQUFNLENBQUMsS0FBOUgsQ0FBZCxDQUNBLFFBQVEsQ0FBRyxHQUFJLENBQUEsSUFBSixDQUFTLGVBQWUsQ0FBQyxJQUF6QixFQUErQixrQkFBL0IsQ0FBa0QsU0FBbEQsQ0FBNEQsT0FBNUQsQ0FBWCxDQUVELE1BQU8sQ0FBQSxRQUFQLENBQ0EsQ0FORCxDQVFGLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUEyQixTQUFTLFlBQVQsQ0FBc0IsQ0FFaEQsR0FBSSxDQUFBLFdBQUosQ0FDQSxHQUFJLFlBQVksQ0FBQyxXQUFiLElBQTZCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBVixDQUF5QixXQUF6QixFQUFqQyxDQUNBLENBQ0csV0FBVyxDQUFDLE9BQVosQ0FDRixDQUhELElBSUEsQ0FDRyxXQUFXLENBQUMsS0FBWixDQUVGLENBQ0QsTUFBTyxDQUFBLFdBQVAsQ0FDQSxDQVpELENBY0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFWLENBQW1CLFVBQVUsQ0FFNUIsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTZCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBM0MsQ0FBc0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLENBQXdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBbEMsQ0FBdEQsSUFDSyxDQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUF3QixNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFsQyxDQUdMLENBTkQsQ0FPQSxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsQ0FBNEIsVUFBVSxDQUVyQyxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBMEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBcEMsQ0FFQSxDQUpELENBS0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLENBQXdCLFNBQVMsS0FBVCxDQUFlLENBQ2pDLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FFRCxHQUFJLE1BQU0sQ0FBQyxRQUFYLENBQ0QsQ0FDQyxJQUFJLENBQUUsR0FBSSxDQUFBLElBQUosQ0FBUyxNQUFNLENBQUMsUUFBaEIsQ0FBTixDQUNBLENBSEEsSUFHSyxJQUFJLE1BQU0sQ0FBQyxJQUFYLENBQ04sQ0FDRyxJQUFJLENBQUUsR0FBSSxDQUFBLElBQUosQ0FBUyxNQUFNLENBQUMsSUFBaEIsQ0FBTixDQUNGLENBSEssSUFJTixDQUNHLElBQUksQ0FBRyxJQUFQLENBQ0EsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsNkJBQTVCLENBQTBELE9BQTFELEVBQ0YsQ0FFRSxHQUFJLElBQUksRUFBRSxJQUFWLENBQ0EsQ0FDRyxJQUFJLENBQUMsR0FBTCxDQUFTLFdBQVQsR0FBdUIsSUFBdkIsQ0FBNEIsU0FBVSxNQUFWLENBQWtCLENBQzFDLFFBQVEsQ0FBQyxVQUFVLENBQ2QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLENBQXdCLE1BQU0sQ0FBQyxDQUFELENBQTlCLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsRUFBdUIsSUFBM0IsQ0FDQSxDQUVHO0FBQ0EsR0FBSSxDQUFBLGVBQWUsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQWhDLENBQ0EsR0FBSSxDQUFBLFdBQVcsQ0FBRyxNQUFNLENBQUMsRUFBUCxDQUFVLGtCQUE1QixDQUVBLEdBQUksQ0FBQSxZQUFZLENBQUcsR0FBSSxDQUFBLElBQUksQ0FBQyxHQUFMLENBQVMsUUFBYixDQUFzQixXQUF0QixDQUFrQyxlQUFsQyxDQUFuQixDQUVFLFlBQVksQ0FBQyxPQUFiLENBQXFCLElBQXJCLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBdEMsQ0FFQSxZQUFZLENBQUMsT0FBYixDQUFxQixXQUFyQixHQUFtQyxJQUFuQyxHQUEwQyxJQUExQyxDQUErQyxTQUFVLElBQVYsQ0FBZ0IsQ0FFM0QsR0FBSSxLQUFLLEVBQUUsT0FBWCxDQUFvQixNQUFNLENBQUMsRUFBUCxDQUFVLGVBQVYsQ0FBMEIsSUFBSSxDQUFDLEtBQUwsQ0FBVyxPQUFYLENBQW1CLElBQUksQ0FBQyxNQUF4QixDQUErQixPQUEvQixDQUExQixDQUFwQixJQUNLLENBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFWLENBQTBCLElBQUksQ0FBQyxLQUFMLENBQVcsT0FBWCxDQUFtQixJQUFJLENBQUMsTUFBeEIsQ0FBK0IsT0FBL0IsQ0FBMUIsQ0FHSixZQUFZLENBQUMsT0FBYixDQUFxQixxQkFBckIsR0FBNkMsSUFBN0MsR0FBb0QsSUFBcEQsQ0FBeUQsU0FBVSxJQUFWLENBQWdCLENBRTFFLFFBQVEsQ0FBQyxVQUFVLENBQ2hCLEdBQUksS0FBSyxFQUFFLE9BQVgsQ0FBb0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLElBQUksQ0FBQyxLQUFMLENBQVcsT0FBWCxDQUFtQixJQUFJLENBQUMsQ0FBRCxDQUF2QixDQUEyQixPQUEzQixDQUF4QixDQUFwQixJQUNLLENBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLElBQUksQ0FBQyxLQUFMLENBQVcsT0FBWCxDQUFtQixJQUFJLENBQUMsQ0FBRCxDQUF2QixDQUEyQixPQUEzQixDQUF4QixDQUNMLE1BQU0sQ0FBQyxFQUFQLENBQVUsa0JBQVYsQ0FBK0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBWCxDQUFOLENBQWdDLGNBQWhDLENBQStDLFNBQS9DLENBQTBELENBQUUscUJBQXFCLENBQUUsRUFBekIsQ0FBMUQsQ0FBL0IsQ0FDQSxNQUFNLENBQUMsRUFBUCxDQUFVLGdCQUFWLENBQTZCLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixDQUEwQixNQUFNLENBQUMsRUFBUCxDQUFVLGVBQWpFLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxxQkFBVixDQUFrQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxnQkFBWCxDQUFOLENBQW1DLGNBQW5DLENBQWtELFNBQWxELENBQTZELENBQUUscUJBQXFCLENBQUUsRUFBekIsQ0FBN0QsQ0FBbEMsQ0FDRixDQU5PLENBQVIsQ0FPRixDQVRHLENBVUwsU0FBUyxLQUFULENBQWUsQ0FDWCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsT0FBbEMsQ0FBMEMsT0FBMUMsRUFDRixDQVpHLEVBY0osQ0FwQkQsQ0FxQkEsU0FBUyxLQUFULENBQWUsQ0FDWCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsT0FBbEMsQ0FBMEMsT0FBMUMsRUFDRixDQXZCRixFQXlCQSxZQUFZLENBQUMsT0FBYixDQUFxQixxQkFBckIsR0FBNkMsSUFBN0MsR0FBb0QsSUFBcEQsQ0FBeUQsU0FBVSxJQUFWLENBQWdCLENBRXJFLEdBQUksS0FBSyxFQUFFLE9BQVgsQ0FBb0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLElBQUksQ0FBQyxZQUE3QixDQUFwQixJQUNLLENBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxhQUFWLENBQXdCLElBQUksQ0FBQyxZQUE3QixDQUVSLENBTEQsQ0FNQSxTQUFTLEtBQVQsQ0FBZSxDQUNYLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxPQUFsQyxDQUEwQyxPQUExQyxFQUNGLENBUkYsRUFZSixDQWhERCxJQWdETSxDQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLDZCQUE1QixDQUEwRCxPQUExRCxFQUNWLENBbkRPLENBQVIsQ0FvREgsQ0FyREQsQ0FxREUsU0FBUyxLQUFULENBQWUsQ0FDWCxRQUFRLENBQUMsVUFBVSxDQUVoQixNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsQ0FBc0IsS0FBSyxDQUFDLE9BQTVCLENBRUYsQ0FKTyxDQUFSLENBS0wsQ0EzREQsRUE4REQsQ0FFUixDQWpGRCxDQXNGQSxNQUFNLENBQUMsRUFBUCxDQUFVLGFBQVYsQ0FBMEIsVUFBVSxDQUM5QixHQUFJLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBQ0EsTUFBTSxDQUFDLEVBQVAsQ0FBVSxVQUFWLENBQXFCLEtBQXJCLENBQ0E7QUFFRixHQUFJLE1BQU0sQ0FBQyxRQUFYLENBQ0EsQ0FDQyxJQUFJLENBQUUsR0FBSSxDQUFBLElBQUosQ0FBUyxNQUFNLENBQUMsUUFBaEIsQ0FBTixDQUNBLENBSEQsSUFHTSxJQUFJLE1BQU0sQ0FBQyxJQUFYLENBQ04sQ0FDRyxJQUFJLENBQUUsR0FBSSxDQUFBLElBQUosQ0FBUyxNQUFNLENBQUMsSUFBaEIsQ0FBTixDQUNGLENBSEssSUFJTixDQUNHLElBQUksQ0FBRyxJQUFQLENBQ0EsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsNkJBQTVCLENBQTBELE9BQTFELEVBQ0YsQ0FFRSxHQUFJLElBQUksRUFBRSxJQUFWLENBQ0EsQ0FJRyxJQUFJLENBQUMsR0FBTCxDQUFTLFdBQVQsR0FBdUIsSUFBdkIsQ0FBNEIsU0FBVSxNQUFWLENBQWtCLENBRXJDLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUF3QixNQUFNLENBQUMsQ0FBRCxDQUE5QixDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLEVBQXVCLElBQTNCLENBQ0EsQ0FFRztBQUNBLEdBQUksQ0FBQSxlQUFlLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFoQyxDQUNBLEdBQUksQ0FBQSxXQUFXLENBQUcsTUFBTSxDQUFDLEVBQVAsQ0FBVSxrQkFBNUIsQ0FFQSxHQUFJLENBQUEsWUFBWSxDQUFHLEdBQUksQ0FBQSxJQUFJLENBQUMsR0FBTCxDQUFTLFFBQWIsQ0FBc0IsV0FBdEIsQ0FBa0MsZUFBbEMsQ0FBbkIsQ0FFRSxZQUFZLENBQUMsT0FBYixDQUFxQixJQUFyQixDQUE0QixNQUFNLENBQUMsRUFBUCxDQUFVLFdBQXRDLENBRUEsWUFBWSxDQUFDLE9BQWIsQ0FBcUIsYUFBckIsR0FBcUMsSUFBckMsR0FBNEMsSUFBNUMsQ0FBaUQsU0FBVSxJQUFWLENBQWdCLENBRTdELE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixDQUF3QixJQUFJLENBQUMsS0FBTCxDQUFXLElBQUksQ0FBQyxHQUFMLEdBQWEsSUFBeEIsQ0FBeEIsQ0FFQSxRQUFRLENBQUMsVUFBVSxDQUFFLE1BQU0sQ0FBQyxFQUFQLENBQVUsUUFBVixDQUFxQixJQUFyQixDQUEwQixNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVYsQ0FBcUIsSUFBckIsQ0FBMkIsQ0FBbEUsQ0FBUixDQUVILENBTkQsQ0FPQSxTQUFTLEtBQVQsQ0FBZSxDQUNYLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxPQUFsQyxDQUEwQyxPQUExQyxFQUNGLENBVEYsRUFhSixDQXhCRCxJQXdCTSxDQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLDZCQUE1QixDQUEwRCxPQUExRCxFQUVkLENBN0JELENBNkJFLFNBQVMsS0FBVCxDQUFlLENBQ1gsUUFBUSxDQUFDLFVBQVUsQ0FFaEIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLENBQXNCLEtBQUssQ0FBQyxPQUE1QixDQUVGLENBSk8sQ0FBUixDQUtMLENBbkNELEVBc0NELENBRVIsQ0E5REQsQ0FrRUE7QUFFQSxNQUFNLENBQUMsZUFBUCxDQUF1QixlQUF2QixDQUF5QyxVQUFVLENBQzdDLEdBQUksQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0FDQyxNQUFNLENBQUMsZUFBUCxDQUF1QixVQUF2QixDQUFrQyxLQUFsQyxDQUNBLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLElBQTlCLENBQ0EsQ0FDSyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBeUIsQ0FBekIsQ0FFSixDQUNELE1BQU0sQ0FBQyxlQUFQLENBQXVCLFdBQXZCLENBQW1DLElBQW5DLENBRUQsb0JBQW9CLENBQUMsdUJBQXJCLENBQTZDLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBdkQsQ0FBK0QsTUFBTSxDQUFDLE1BQXRFLENBQTZFLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFFBQXBHLENBQTZHLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBdkgsQ0FBc0ksR0FBdEksQ0FBMEksSUFBMUksRUFBZ0osSUFBaEosQ0FBcUosU0FBUyxJQUFULENBQWUsQ0FFaEosTUFBTSxDQUFDLGVBQVAsQ0FBdUIsd0JBQXZCLENBQWlELElBQUksQ0FBQyxJQUFMLENBQVUsa0JBQTNELENBQ0EsR0FBSSxLQUFLLENBQUMsT0FBTixDQUFjLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBeEIsQ0FBSixDQUFzQyxNQUFNLENBQUMsZUFBUCxDQUF1QixTQUF2QixDQUFpQyxPQUFqQyxDQUF5QyxNQUF6QyxDQUFtRCxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQTdELENBRXZDLEdBQUksTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLEVBQTZDLFNBQWpELENBQ0EsQ0FDQyxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsSUFBNUMsQ0FBaUQsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsd0JBQXZCLENBQWdELElBQWpHLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLFNBQTVDLENBQXNELE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBaEUsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsY0FBNUMsQ0FBMkQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFyRSxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxXQUE1QyxDQUF3RCxNQUFNLENBQUMsRUFBUCxDQUFVLFlBQWxFLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLGFBQTVDLENBQTBELE1BQU0sQ0FBQyxlQUFQLENBQXVCLGFBQXZCLENBQXFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBL0MsQ0FBMUQsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsZUFBNUMsQ0FBNEQsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUF0RSxDQUNBLENBUkQsSUFTRyxDQUNGLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxDQUFDLE9BQU8sTUFBTSxDQUFDLGVBQVAsQ0FBdUIsd0JBQXZCLENBQWdELElBQXhELENBQTZELFlBQVksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFuRixDQUE0RixpQkFBaUIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUF2SCxDQUF3SSxjQUFjLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBaEssQ0FBNkssZ0JBQWdCLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGFBQXZCLENBQXFDLE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBL0MsQ0FBN0wsQ0FBMFAsa0JBQWtCLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBdFIsQ0FBNUMsQ0FFRCxDQUVELE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVixDQUFxQixJQUFJLENBQUMsSUFBTCxDQUFVLE9BQS9CLENBSUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQThDLElBQTlDLENBRUEsUUFBUSxDQUFDLFVBQVUsQ0FDaEIsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsVUFBdkIsQ0FBa0MsSUFBbEMsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixXQUF2QixDQUFtQyxLQUFuQyxDQUNGLENBSE8sQ0FBUixDQU1GO0FBQ0UsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsUUFBdkIsQ0FBZ0MsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsU0FBdkIsQ0FBaUMsT0FBakMsQ0FBeUMsTUFBekUsQ0FBZ0YsVUFBaEYsQ0FBMkYsS0FBM0YsRUFFQyxDQWxDbkIsQ0FrQ29CLFNBQVMsS0FBVCxDQUFlLENBQ2QsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLENBQXNDLE9BQXRDLEVBQ0YsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsV0FBdkIsQ0FBbUMsS0FBbkMsQ0FHSCxDQXZDaEIsRUF5Q1AsQ0FuREMsQ0FzREEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsdUJBQXZCLENBQWlELFVBQVUsQ0FDckQsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFVBQXZCLENBQWtDLEtBQWxDLENBQ0EsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEIsSUFBMUIsRUFBa0MsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLFNBQWhFLENBQ0EsQ0FDRSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsQ0FBMkIsQ0FBM0IsQ0FFRCxDQUVELEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFWLEVBQTJCLElBQTNCLEVBQW1DLE1BQU0sQ0FBQyxFQUFQLENBQVUsZUFBVixFQUEyQixTQUFsRSxDQUNBLENBQ0UsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFWLENBQTRCLENBQTVCLENBRUQsQ0FLQSxHQUFJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixFQUF5QyxTQUF6QyxFQUFzRCxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsRUFBeUMsQ0FBbkcsQ0FDQSxDQUVHLEdBQUksTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLENBQXdDLGlCQUF4QyxHQUE0RCxTQUE1RCxFQUF5RSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBd0MsaUJBQXhDLEdBQTRELEVBQXJJLEVBQTJJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF3QyxXQUF4QyxHQUFzRCxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQS9NLENBQXdOLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUEwQyxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBd0MsaUJBQXhDLENBQTFDLENBRTFOLENBQ0QsR0FBSSxNQUFPLENBQUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQTlCLEdBQWtELFFBQWxELEVBQThELE1BQU8sQ0FBQSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBOUIsR0FBa0QsUUFBcEgsQ0FDQSxDQUVHLEdBQUksS0FBSyxDQUFDLE9BQU4sQ0FBYyxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBckMsQ0FBSixDQUNBLENBQ0csR0FBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBd0MsTUFBeEMsQ0FBK0MsQ0FBbkQsQ0FDQSxDQUNHLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUF5QyxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBd0MsQ0FBeEMsRUFBMkMsRUFBcEYsQ0FFRixDQUNILENBUEQsSUFRSyxDQUFBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF2QixDQUEwQyxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBd0MsRUFBbEYsQ0FDUCxDQUVGLG9CQUFvQixDQUFDLCtCQUFyQixDQUFxRCxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQS9ELENBQXVFLE1BQU0sQ0FBQyxjQUE5RSxDQUE2RixNQUFNLENBQUMsYUFBcEcsQ0FBa0gsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUE1SCxDQUF5SSxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQW5KLENBQW1LLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBN0ssQ0FBNEwsTUFBTSxDQUFDLGFBQW5NLENBQWlOLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFFBQXhPLENBQWlQLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFVBQXhRLENBQW1SLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUExUyxDQUEyVCxHQUEzVCxDQUErVCxJQUEvVCxFQUFxVSxJQUFyVSxDQUEwVSxTQUFTLElBQVQsQ0FBZSxDQUVyVSxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTFCLEVBQTZDLElBQUksQ0FBQyxJQUFMLENBQVUsU0FBdkQsQ0FDQSxHQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsY0FBMUIsR0FBMkMsU0FBL0MsQ0FBMEQsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUExQixFQUEwQyxFQUExQyxDQUMxRCxNQUFNLENBQUMsZUFBUCxDQUF1Qix3QkFBdkIsQ0FBaUQsSUFBSSxDQUFDLElBQUwsQ0FBVSxrQkFBM0QsQ0FDQSxHQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUF4QixDQUFKLENBQXNDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFNBQXZCLENBQWlDLE9BQWpDLENBQXlDLE1BQXpDLENBQW1ELElBQUksQ0FBQyxJQUFMLENBQVUsT0FBN0QsQ0FFdEMsR0FBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQTFCLEVBQTBDLE1BQTFDLENBQWlELENBQXJELENBQ0EsQ0FDRSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsQ0FBMEMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxjQUExQixFQUEwQyxDQUExQyxFQUE2QyxJQUE3QyxDQUExQyxDQUNELENBQ0QsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZUFBdkIsQ0FBdUMsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQTlELENBQ0EsR0FBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsRUFBNkMsU0FBakQsQ0FDRCxDQUNDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxJQUE1QyxDQUFpRCxNQUFNLENBQUMsZUFBUCxDQUF1Qix3QkFBdkIsQ0FBZ0QsSUFBakcsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsU0FBNUMsQ0FBc0QsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFoRSxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxjQUE1QyxDQUEyRCxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXJFLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLFdBQTVDLENBQXdELE1BQU0sQ0FBQyxFQUFQLENBQVUsWUFBbEUsQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsYUFBNUMsQ0FBMEQsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsYUFBdkIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUEvQyxDQUExRCxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxlQUE1QyxDQUE0RCxNQUFNLENBQUMsRUFBUCxDQUFVLGVBQXRFLENBQ0EsQ0FSQSxJQVNFLENBQ0YsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLENBQUMsT0FBTyxNQUFNLENBQUMsZUFBUCxDQUF1Qix3QkFBdkIsQ0FBZ0QsSUFBeEQsQ0FBNkQsWUFBWSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5GLENBQTRGLGlCQUFpQixNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXZILENBQXdJLGNBQWMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUFoSyxDQUE2SyxnQkFBZ0IsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsYUFBdkIsQ0FBcUMsTUFBTSxDQUFDLEVBQVAsQ0FBVSxZQUEvQyxDQUE3TCxDQUEwUCxrQkFBa0IsTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUF0UixDQUE1QyxDQUVELENBQ0c7QUFFRjtBQUNHLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFVBQXZCLENBQWtDLElBQWxDLENBQ0Q7QUFDQyxNQUFNLENBQUMsZUFBUCxDQUF1QixXQUF2QixDQUFtQyxLQUFuQyxDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE4QyxJQUE5QyxDQUVIO0FBR0Y7QUFDQSx5QkFBeUIsQ0FBQyxPQUExQixDQUFrQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQXBCLENBQW9DLEdBQUcsQ0FBRSxDQUFDLENBQUMsT0FBTyxjQUFSLENBQXVCLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFOLENBQW1CLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQW5DLENBQUQsQ0FBNkMsQ0FBQyxJQUFJLENBQUMsa0JBQU4sQ0FBeUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGdCQUF0RCxDQUE3QyxDQUEvQixDQUFELENBQXpDLENBQWxDLEVBRUQ7QUFDQyxNQUFNLENBQUMsZUFBUCxDQUF1QixRQUF2QixDQUFnQyxNQUFNLENBQUMsZUFBUCxDQUF1QixTQUF2QixDQUFpQyxPQUFqQyxDQUF5QyxNQUF6RSxDQUFnRixVQUFoRixDQUEyRixLQUEzRixFQUNDLENBekNuQixDQXlDb0IsU0FBUyxLQUFULENBQWUsQ0FDZCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFFTCxDQTVDaEIsRUE4Q1AsQ0FwRkMsQ0F1RkcsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsa0JBQXZCLENBQTRDLFNBQVMsRUFBVCxDQUFjLENBRXZELEdBQUksTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLEVBQTZDLFNBQWpELENBQTRELE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxFQUE1QyxDQUM1RCxHQUFJLENBQUEsR0FBRyxDQUFHLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFlBQXZCLENBQW9DLEdBQXBDLENBQXdDLFNBQVMsQ0FBVCxDQUFZLENBQUUsTUFBTyxDQUFBLENBQUMsQ0FBQyxFQUFULENBQWMsQ0FBcEUsRUFBc0UsT0FBdEUsQ0FBOEUsRUFBOUUsQ0FBVixDQUVBLEdBQUksR0FBRyxFQUFFLENBQVQsQ0FBVyxDQUNULE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxFQUE1QyxDQUFpRCxNQUFNLENBQUMsZUFBUCxDQUF1QixZQUF2QixDQUFvQyxHQUFwQyxFQUF5QyxFQUExRixDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxJQUE1QyxDQUFtRCxNQUFNLENBQUMsZUFBUCxDQUF1QixZQUF2QixDQUFvQyxHQUFwQyxFQUF5QyxJQUE1RixDQUNBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGVBQXZCLENBQXlDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFlBQXZCLENBQW9DLEdBQXBDLENBQXpDLENBQ0EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLGNBQTVDLENBQTZELE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxJQUE1QyxDQUFrRCxJQUFsRCxDQUF1RCxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsRUFBbkcsQ0FBdUcsR0FBcEssQ0FDQSxNQUFNLENBQUMsZUFBUCxDQUF1QixzQkFBdkIsQ0FBOEMsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXJFLENBQ0MsQ0FDWCxDQVpLLENBZUQ7QUFDVCxNQUFNLENBQUMsZUFBUCxDQUF1QixZQUF2QixDQUFzQyxVQUFZLENBRXZDLEdBQUksTUFBTSxDQUFDLGVBQVAsQ0FBdUIsWUFBdkIsRUFBcUMsU0FBekMsQ0FBb0QsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsWUFBdkIsQ0FBb0MsRUFBcEMsQ0FFcEQsR0FBSSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUNBLG9CQUFvQixDQUFDLHdCQUFyQixDQUE4QyxJQUE5QyxDQUFtRCxlQUFuRCxFQUFvRSxJQUFwRSxDQUNOLFNBQVMsSUFBVCxDQUFlLENBRVIsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsWUFBdkIsQ0FBc0MsSUFBSSxDQUFDLElBQTNDLENBQ1UsR0FBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsRUFBbUIsSUFBdkIsQ0FDQSxDQUNDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLGtCQUF2QixDQUEwQyxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQXBELEVBRUMsQ0FFWixDQVZELENBVUUsU0FBUyxLQUFULENBQWUsQ0FDRyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsQ0FBc0MsT0FBdEMsRUFDcEIsQ0FaQSxFQWFOLENBbEJMLENBcUJDLEdBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFWLEVBQW1CLElBQW5CLEVBQTRCLENBQUMsTUFBTSxDQUFDLGNBQXBDLEVBQXNELENBQUMsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQWxGLENBQ0EsQ0FFRTtBQUNBO0FBQ0E7QUFFRCxDQVBELElBT00sSUFBSSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQVYsRUFBbUIsSUFBdkIsQ0FDTixDQUNHO0FBQ0E7QUFDQTtBQUVGLENBU1MsR0FBSSxDQUFBLFFBQUosQ0FDQSxRQUFRLENBQUcsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsZ0RBQW5CLENBQVgsQ0FDQSxRQUFRLENBQUMsTUFBVCxDQUFnQixRQUFRLENBQUMsUUFBRCxDQUFSLENBQW1CLE1BQW5CLENBQWhCLEVBR0wsQ0E5b0NhLENBQWpCLENBZ3BDRCxNQUFPLENBQ0csUUFBUSxDQUFFLEdBRGIsQ0FHRyxVQUFVLENBQUUsVUFIZixDQUlHLElBQUksQ0FBRSxjQUFVLEtBQVYsQ0FBaUIsSUFBakIsQ0FBdUIsS0FBdkIsQ0FBOEIsQ0FFbkMsQ0FOSixDQUFQLENBU0Q7Ozs2R0N2OWlDYyxPQUFPLENBQUMsTUFBUixDQUFlLFNBQWYsRUFBMEIsR0FBMUIsQ0FBOEIsQ0FBQyxnQkFBRCxDQUFtQixTQUFTLGNBQVQsQ0FBeUIsQ0FBQyxjQUFjLENBQUMsR0FBZixDQUFtQixrQ0FBbkIsQ0FBc0QsMG1KQUF0RCxFQUMxRixjQUFjLENBQUMsR0FBZixDQUFtQiwyQ0FBbkIsQ0FBK0Qsb2tKQUEvRCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDhDQUFuQixDQUFrRSwyeUZBQWxFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIscURBQW5CLENBQXlFLHl6a0JBQXpFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsZ0RBQW5CLENBQW9FLHkzREFBcEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixvREFBbkIsQ0FBd0UsKzRDQUF4RSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHVDQUFuQixDQUEyRCxnL1pBQTNELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsd0NBQW5CLENBQTRELDB3Q0FBNUQsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixxQ0FBbkIsQ0FBeUQsMHpFQUF6RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLCtDQUFuQixDQUFtRSwybERBQW5FLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsNkNBQW5CLENBQWlFLCsvQ0FBakUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQix1REFBbkIsQ0FBMkUsOGdDQUEzRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHNDQUFuQixDQUEwRCx5a0lBQTFELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsZ0RBQW5CLENBQW9FLDB2SUFBcEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiwwQ0FBbkIsQ0FBOEQsaWRBQTlELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsNkNBQW5CLENBQWlFLCs5Q0FBakUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiw2Q0FBbkIsQ0FBaUUsbW5GQUFqRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDZDQUFuQixDQUFpRSw2dVBBQWpFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsMkNBQW5CLENBQStELGsvQkFBL0QsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiwyQ0FBbkIsQ0FBK0QsKzBLQUEvRCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLGlEQUFuQixDQUFxRSw2c0lBQXJFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsb0RBQW5CLENBQXdFLDZqRkFBeEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixrQ0FBbkIsQ0FBc0QsMGlNQUF0RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHFDQUFuQixDQUF5RCxtaEtBQXpELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIseUNBQW5CLENBQTZELDB1TEFBN0QsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixvREFBbkIsQ0FBd0Usb3lIQUF4RSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDRDQUFuQixDQUFnRSxxMkVBQWhFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsMkNBQW5CLENBQStELGdnQ0FBL0QsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixzQ0FBbkIsQ0FBMEQsK2dEQUExRCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLGdEQUFuQixDQUFvRSwrNklBQXBFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsc0NBQW5CLENBQTBELDR1RkFBMUQsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiw4Q0FBbkIsQ0FBa0Usd3BCQUFsRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDhDQUFuQixDQUFrRSwrbUNBQWxFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsNkNBQW5CLENBQWlFLHEzVkFBakUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQix1REFBbkIsQ0FBMkUsZ2tCQUEzRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHVDQUFuQixDQUEyRCwwMktBQTNELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsb0RBQW5CLENBQXdFLDhGQUF4RSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLGtEQUFuQixDQUFzRSxxMUtBQXRFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsNERBQW5CLENBQWdGLG9wREFBaEYsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiwrQ0FBbkIsQ0FBbUUsNFlBQW5FLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsa0RBQW5CLENBQXNFLHdaQUF0RSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHFEQUFuQixDQUF5RSxrMkhBQXpFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsa0RBQW5CLENBQXNFLG0xQ0FBdEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixpREFBbkIsQ0FBcUUsaXRIQUFyRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHVEQUFuQixDQUEyRSwwMUhBQTNFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIscURBQW5CLENBQXlFLDBkQUF6RSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLGtEQUFuQixDQUFzRSwwNkJBQXRFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsK0NBQW5CLENBQW1FLG91RUFBbkUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixnREFBbkIsQ0FBb0UsaytKQUFwRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLGtDQUFuQixDQUFzRCxrNk5BQXRELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIscUNBQW5CLENBQXlELHUrTEFBekQsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiw0Q0FBbkIsQ0FBZ0Usb2pNQUFoRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHdDQUFuQixDQUE0RCwwL0xBQTVELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsa0RBQW5CLENBQXNFLGdnSUFBdEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQix3Q0FBbkIsQ0FBNEQsdW9GQUE1RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDJDQUFuQixDQUErRCx3L0NBQS9ELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsd0NBQW5CLENBQTRELHFuRUFBNUQsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixrQ0FBbkIsQ0FBc0QsdzFHQUF0RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHdDQUFuQixDQUE0RCxxbkhBQTVELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsMkNBQW5CLENBQStELDhzREFBL0QsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixrREFBbkIsQ0FBc0UsaTl6QkFBdEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixxQ0FBbkIsQ0FBeUQsK3dCQUF6RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHFDQUFuQixDQUF5RCw0bVJBQXpELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsd0NBQW5CLENBQTRELHkySEFBNUQsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiwrQ0FBbkIsQ0FBbUUsbWxMQUFuRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDRDQUFuQixDQUFnRSx3N0RBQWhFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsb0RBQW5CLENBQXdFLDQvREFBeEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixtQ0FBbkIsQ0FBdUQsMnZLQUF2RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDZDQUFuQixDQUFpRSxnMERBQWpFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsb0NBQW5CLENBQXdELGdyRkFBeEQsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiw4Q0FBbkIsQ0FBa0UsK2lIQUFsRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHdDQUFuQixDQUE0RCxpaUZBQTVELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsd0NBQW5CLENBQTRELGt0RkFBNUQsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixtQ0FBbkIsQ0FBdUQsaTZDQUF2RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDZDQUFuQixDQUFpRSx5NElBQWpFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsZ0RBQW5CLENBQW9FLGtuUEFBcEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiwwREFBbkIsQ0FBOEUsKzFCQUE5RSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDBDQUFuQixDQUE4RCxxMmJBQTlELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsb0RBQW5CLENBQXdFLDR4REFBeEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixtQ0FBbkIsQ0FBdUQsdWlEQUF2RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDZDQUFuQixDQUFpRSwwdUlBQWpFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsa0NBQW5CLENBQXNELHMySkFBdEQsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixxQ0FBbkIsQ0FBeUQsaXNLQUF6RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDRDQUFuQixDQUFnRSwwcFJBQWhFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsc0RBQW5CLENBQTBFLGcxQkFBMUUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQix1REFBbkIsQ0FBMkUsNjBCQUEzRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLGtEQUFuQixDQUFzRSxxZ0RBQXRFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsdUNBQW5CLENBQTJELDhGQUEzRCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDRDQUFuQixDQUFnRSwwbkhBQWhFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsOENBQW5CLENBQWtFLGdnSUFBbEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQix5Q0FBbkIsQ0FBNkQsd21EQUE3RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLG9EQUFuQixDQUF3RSxnN0ZBQXhFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsOERBQW5CLENBQWtGLHEvRkFBbEYsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixvQ0FBbkIsQ0FBd0QsK3dOQUF4RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHVDQUFuQixDQUEyRCxxakxBQTNELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsOENBQW5CLENBQWtFLHFoTEFBbEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiw0Q0FBbkIsQ0FBZ0UsK2NBQWhFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsNENBQW5CLENBQWdFLGc0SUFBaEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixzQ0FBbkIsQ0FBMEQsa3ZOQUExRCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDRDQUFuQixDQUFnRSwwMkRBQWhFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsK0NBQW5CLENBQW1FLDB2Q0FBbkUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixzQ0FBbkIsQ0FBMEQsKzhJQUExRCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHlDQUFuQixDQUE2RCw2bkdBQTdELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIseUNBQW5CLENBQTZELDJ1QkFBN0QsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixpREFBbkIsQ0FBcUUseVZBQXJFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIseURBQW5CLENBQTZFLHlxSEFBN0UsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiw0Q0FBbkIsQ0FBZ0UsOGlEQUFoRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDRDQUFuQixDQUFnRSx5MkNBQWhFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsdURBQW5CLENBQTJFLG11SEFBM0UsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiwrQ0FBbkIsQ0FBbUUsd2hHQUFuRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHlEQUFuQixDQUE2RSxpMkNBQTdFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsa0RBQW5CLENBQXNFLDh6SEFBdEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixzQ0FBbkIsQ0FBMEQsZ2hYQUExRCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLGdEQUFuQixDQUFvRSwwc0xBQXBFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIseUNBQW5CLENBQTZELDI4TUFBN0QsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQix3Q0FBbkIsQ0FBNEQsczZOQUE1RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDJDQUFuQixDQUErRCxzcEtBQS9ELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsa0RBQW5CLENBQXNFLDYxQ0FBdEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiw0Q0FBbkIsQ0FBZ0UsODhKQUFoRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLGdEQUFuQixDQUFvRSx1ekxBQXBFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIseUNBQW5CLENBQTZELGk2REFBN0QsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixtREFBbkIsQ0FBdUUsdXNFQUF2RSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDhDQUFuQixDQUFrRSxzckZBQWxFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIseUNBQW5CLENBQTZELDZyRkFBN0QsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiw0Q0FBbkIsQ0FBZ0UsdzdGQUFoRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLG1EQUFuQixDQUF1RSxxbURBQXZFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsd0NBQW5CLENBQTRELDRvRkFBNUQsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQix1Q0FBbkIsQ0FBMkQsODlPQUEzRCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDBDQUFuQixDQUE4RCxrbUxBQTlELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsaURBQW5CLENBQXFFLDBtREFBckUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiwyQ0FBbkIsQ0FBK0QsdWtEQUEvRCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDBDQUFuQixDQUE4RCxrdUJBQTlELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsbURBQW5CLENBQXVFLHdXQUF2RSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHlDQUFuQixDQUE2RCxtdEJBQTdELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsa0RBQW5CLENBQXNFLGdVQUF0RSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHVDQUFuQixDQUEyRCxpK0JBQTNELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsaURBQW5CLENBQXFFLHMyQ0FBckUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQix3Q0FBbkIsQ0FBNEQsOHNCQUE1RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHdDQUFuQixDQUE0RCx5a1hBQTVELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsd0NBQW5CLENBQTRELGdxbUJBQTVELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsNkNBQW5CLENBQWlFLDRxSUFBakUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixrQ0FBbkIsQ0FBc0Qsb3RFQUF0RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHFDQUFuQixDQUF5RCxvdURBQXpELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsNENBQW5CLENBQWdFLCtzSUFBaEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixzREFBbkIsQ0FBMEUsMi9GQUExRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDZDQUFuQixDQUFpRSwyM0pBQWpFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsZ0RBQW5CLENBQW9FLGl5RUFBcEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQix1REFBbkIsQ0FBMkUsbzdHQUEzRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHVDQUFuQixDQUEyRCx1a0lBQTNELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsaURBQW5CLENBQXFFLCt2SUFBckUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiwyQ0FBbkIsQ0FBK0Qsby9DQUEvRCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHFEQUFuQixDQUF5RSwyL0NBQXpFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsNkNBQW5CLENBQWlFLHdwdkJBQWpFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsZ0RBQW5CLENBQW9FLHVpVkFBcEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQix1REFBbkIsQ0FBMkUsMDBxQkFBM0UsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiw0Q0FBbkIsQ0FBZ0UsZ2tCQUFoRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHlDQUFuQixDQUE2RCxrNUJBQTdELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsMENBQW5CLENBQThELGdxQ0FBOUQsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiwyQ0FBbkIsQ0FBK0Qsa2xDQUEvRCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLGlEQUFuQixDQUFxRSxvZ0JBQXJFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsdUNBQW5CLENBQTJELGlpUEFBM0QsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixpREFBbkIsQ0FBcUUsMGlJQUFyRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHNDQUFuQixDQUEwRCxpeVdBQTFELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsNENBQW5CLENBQWdFLGdoR0FBaEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiwrQ0FBbkIsQ0FBbUUsd3VDQUFuRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDRDQUFuQixDQUFnRSw2Mk1BQWhFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIseUNBQW5CLENBQTZELHVvQ0FBN0QsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixtREFBbkIsQ0FBdUUsdTNCQUF2RSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLG1EQUFuQixDQUF1RSwwekdBQXZFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsNkRBQW5CLENBQWlGLHN0RUFBakYsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiw0Q0FBbkIsQ0FBZ0UsOGtGQUFoRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLCtDQUFuQixDQUFtRSwrbkNBQW5FLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsc0RBQW5CLENBQTBFLHU0SkFBMUUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQix5Q0FBbkIsQ0FBNkQsaXdEQUE3RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLG1EQUFuQixDQUF1RSx5ckJBQXZFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsK0NBQW5CLENBQW1FLHUxQ0FBbkUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiw2Q0FBbkIsQ0FBaUUsa3BLQUFqRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDhDQUFuQixDQUFrRSxrcktBQWxFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsMENBQW5CLENBQThELDI5SkFBOUQsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQix3Q0FBbkIsQ0FBNEQsdy9GQUE1RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHlDQUFuQixDQUE2RCxnbERBQTdELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIseURBQW5CLENBQTZFLCsxTEFBN0UsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixnREFBbkIsQ0FBb0UsNnNLQUFwRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLG1EQUFuQixDQUF1RSxxK0NBQXZFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsMERBQW5CLENBQThFLGdpTEFBOUUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQix5Q0FBbkIsQ0FBNkQsc3BUQUE3RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLG1EQUFuQixDQUF1RSx5aU5BQXZFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsOENBQW5CLENBQWtFLHVxTUFBbEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixpREFBbkIsQ0FBcUUsaXJHQUFyRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHdEQUFuQixDQUE0RSxtNEpBQTVFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsd0NBQW5CLENBQTRELGdlQUE1RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHFDQUFuQixDQUF5RCxvNk5BQXpELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsd0NBQW5CLENBQTRELHd6S0FBNUQsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiwrQ0FBbkIsQ0FBbUUsbUlBQW5FLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsa0NBQW5CLENBQXNELDhzRkFBdEQsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixxQ0FBbkIsQ0FBeUQsaTFHQUF6RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDRDQUFuQixDQUFnRSx3NENBQWhFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIscUNBQW5CLENBQXlELGc4Q0FBekQsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixzQ0FBbkIsQ0FBMEQsNDJRQUExRCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLGdEQUFuQixDQUFvRSx3a0VBQXBFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsc0NBQW5CLENBQTBELGtvTUFBMUQsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixnREFBbkIsQ0FBb0UsbWhJQUFwRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHdDQUFuQixDQUE0RCwwMFpBQTVELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsa0RBQW5CLENBQXNFLDY0S0FBdEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixrQ0FBbkIsQ0FBc0Qsd29OQUF0RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHFDQUFuQixDQUF5RCxtOU1BQXpELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsNENBQW5CLENBQWdFLHloRkFBaEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiwrQ0FBbkIsQ0FBbUUsNDFDQUFuRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLG1DQUFuQixDQUF1RCw4Z0ZBQXZELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsNkNBQW5CLENBQWlFLDgxSUFBakUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQix3Q0FBbkIsQ0FBNEQsNnVHQUE1RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLGtEQUFuQixDQUFzRSxpMkNBQXRFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsaURBQW5CLENBQXFFLGs3REFBckUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixxREFBbkIsQ0FBeUUsK2NBQXpFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsMkNBQW5CLENBQStELDRpREFBL0QsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixnREFBbkIsQ0FBb0UseTZaQUFwRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDBEQUFuQixDQUE4RSw0eERBQTlFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsc0NBQW5CLENBQTBELG1TQUExRCxFQUFnVyxDQXpOblQsQ0FBOUIsQzs7O0FDQWY7QUFDQTs7QUNEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUM7QUFHUztBQUNWO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVjLGM7QUFFRiwwQkFBWSxPQUFaLEVBQXFCO0FBQUE7O0FBQ2pCLFNBQUssTUFBTCxHQUFjLE1BQU0sQ0FBQyxJQUFQLENBQVksTUFBMUI7O0FBRUEsUUFBSSxPQUFKLEVBQWM7QUFDVixVQUFJLE9BQU8sSUFBRSxRQUFiLEVBQXdCLEtBQUssTUFBTCxHQUFjLE1BQU0sQ0FBQyxJQUFQLENBQVksTUFBMUI7QUFDeEIsVUFBSSxPQUFPLElBQUUsTUFBYixFQUFzQixLQUFLLE1BQUwsR0FBYyxNQUFNLENBQUMsSUFBUCxDQUFZLFVBQTFCO0FBQ3pCOztBQUNELFNBQUssZUFBTCxHQUF1QixJQUFJLG1CQUFKLEVBQXZCO0FBQ0EsU0FBSyxlQUFMLENBQXFCLFNBQXJCLENBQStCLEtBQUssTUFBcEM7QUFFSDs7OztXQUdELHdCQUFlLFVBQWYsRUFBMEIsU0FBMUIsRUFDQTtBQUNDLFdBQUssZUFBTCxHQUF1QixJQUFJLG1CQUFKLENBQXdCLFVBQXhCLEVBQW1DLFNBQW5DLENBQXZCO0FBQ0EsV0FBSyxlQUFMLENBQXFCLFNBQXJCLENBQStCLEtBQUssTUFBcEM7QUFDQTs7O1dBRUQsc0JBQWEsVUFBYixFQUNBO0FBQ0MsV0FBSyxlQUFMLEdBQXVCLElBQUksYUFBSixDQUFrQixVQUFsQixDQUF2QjtBQUNBLFdBQUssZUFBTCxDQUFxQixTQUFyQixDQUErQixLQUFLLE1BQXBDO0FBQ0E7Ozs7OztBQUVKO0FBRUQ7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztJQUVjLGE7QUFFRix5QkFBWSxVQUFaLEVBQXdCO0FBQUE7O0FBQ3BCLFNBQUssR0FBTCxHQUFXLEVBQVg7QUFDQSxTQUFLLE1BQUwsR0FBYyxLQUFkO0FBQ0EsU0FBSyxNQUFMLEdBQVksRUFBWjtBQUNBLFNBQUssT0FBTCxHQUFhLEVBQWI7QUFDQSxTQUFLLElBQUwsR0FBWSxVQUFaO0FBQ0EsU0FBSyxPQUFMLENBQWEsYUFBYixJQUE4QixVQUE5QjtBQUNBLFNBQUssT0FBTCxDQUFhLGNBQWIsSUFBOEIsa0JBQTlCO0FBQ0g7Ozs7V0FHRCxvQkFBVyxNQUFYLEVBQ0E7QUFDQyxXQUFLLE9BQUwsQ0FBYSxJQUFiLENBQWtCLE1BQWxCO0FBQ0E7OztXQUNELG9CQUFXLE1BQVgsRUFBa0IsWUFBbEIsRUFDQTtBQUNJLFdBQUssT0FBTCxDQUFhLE1BQWIsSUFBc0IsWUFBdEI7QUFDSDs7O1dBR0QsbUJBQVUsTUFBVixFQUFrQjtBQUNmLFdBQUssTUFBTCxHQUFZLE1BQVo7QUFDRjs7O1dBQ0QsbUJBQVU7QUFDUCxhQUFPLEtBQUssSUFBWjtBQUNGOzs7V0FDRCxpQkFBUSxVQUFSLEVBQW9CO0FBQ2pCLFdBQUssSUFBTCxHQUFVLFVBQVY7QUFDQSxXQUFLLE9BQUwsQ0FBYSxhQUFiLElBQThCLFVBQTlCO0FBQ0Y7Ozs7MEVBMEZELGlCQUFXLEdBQVgsRUFBZSxNQUFmLEVBQXNCLFNBQXRCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFRSxnQkFBQSxHQUFHLEdBQUMsS0FBSyxNQUFMLEdBQWMsR0FBbEI7QUFGRixpREFHUyxLQUFLLENBQUMsR0FBRCxFQUFLO0FBQ0gsa0JBQUEsT0FBTyxFQUFFLEtBQUssT0FEWDtBQUVILGtCQUFBLE1BQU0sRUFBRSxNQUZMO0FBR0gsa0JBQUEsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFMLENBQWUsU0FBZjtBQUhILGlCQUFMLENBQUwsQ0FLWSxJQUxaLENBS2lCLFVBQUEsUUFBUSxFQUFJO0FBQ2Q7QUFFSSx5QkFBTyxRQUFQO0FBRVAsaUJBVlosV0FXa0IsVUFBQSxLQUFLLEVBQUk7QUFFYix5QkFBTztBQUNFLG9CQUFBLE1BQU0sRUFBQyxHQURUO0FBRUUsb0JBQUEsR0FBRyxFQUFDLEtBQUssQ0FBQyxPQUZaO0FBR0Usb0JBQUEsSUFBSSxFQUFFLEtBQUssQ0FBQztBQUhkLG1CQUFQO0FBTUYsaUJBbkJaLENBSFQ7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTzs7Ozs7Ozs7Ozs7eUVBckZBLGtCQUFVLEdBQVY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVFLGdCQUFBLEdBQUcsR0FBQyxLQUFLLE1BQUwsR0FBYyxHQUFsQjtBQUZGLGtEQUdTLEtBQUssQ0FBQyxHQUFELEVBQUs7QUFDQyxrQkFBQSxPQUFPLEVBQUUsS0FBSyxPQURmO0FBRUMsa0JBQUEsTUFBTSxFQUFFO0FBRlQsaUJBQUwsQ0FBTCxDQUlZLElBSlosQ0FJaUIsVUFBQSxRQUFRLEVBQUk7QUFDZDtBQUNDLHlCQUFPLFFBQVA7QUFDSixpQkFQWixXQVFrQixVQUFBLEtBQUssRUFBSTtBQUNaLHlCQUFPO0FBQ0Msb0JBQUEsTUFBTSxFQUFDLEdBRFI7QUFFQyxvQkFBQSxHQUFHLEVBQUMsS0FBSyxDQUFDLE9BRlg7QUFHQyxvQkFBQSxJQUFJLEVBQUUsS0FBSyxDQUFDO0FBSGIsbUJBQVA7QUFLSCxpQkFkWixDQUhUOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE87Ozs7Ozs7Ozs7OzBFQW9CQSxrQkFBVyxHQUFYLEVBQWUsU0FBZjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUksZ0JBQUEsR0FBRyxHQUFDLEtBQUssTUFBTCxHQUFjLEdBQWxCLENBRkosQ0FHSTs7QUFISixrREFJVyxLQUFLLENBQUMsR0FBRCxFQUFLO0FBQ0Qsa0JBQUEsT0FBTyxFQUFFLEtBQUssT0FEYjtBQUVELGtCQUFBLE1BQU0sRUFBRSxNQUZQO0FBR0Qsa0JBQUEsV0FBVyxFQUFFLFNBSFo7QUFJRCxrQkFBQSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQUwsQ0FBZSxTQUFmO0FBSkwsaUJBQUwsQ0FBTCxDQU1GLElBTkUsQ0FNRyxVQUFBLFFBQVEsRUFBSTtBQUNGO0FBQ0EseUJBQU8sUUFBUDtBQUNILGlCQVRWLFdBVUksVUFBQSxLQUFLLEVBQUk7QUFFSSx5QkFBTztBQUNILG9CQUFBLE1BQU0sRUFBQyxHQURKO0FBRUgsb0JBQUEsR0FBRyxFQUFDLEtBQUssQ0FBQyxPQUZQO0FBR0gsb0JBQUEsSUFBSSxFQUFFLEtBQUssQ0FBQztBQUhULG1CQUFQO0FBTVAsaUJBbEJWLENBSlg7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTzs7Ozs7Ozs7Ozs7K0VBNEJGLGtCQUFnQixRQUFoQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRU0sZ0JBQUEsR0FBRyxHQUFHLHlCQUF3QixRQUE5QjtBQUZOLGtEQUdhLEtBQUssQ0FBQyxHQUFELEVBQUs7QUFBRyxrQkFBQSxPQUFPLEVBQUUsS0FBSyxPQUFqQjtBQUEyQixrQkFBQSxNQUFNLEVBQUU7QUFBbkMsaUJBQUwsQ0FBTCxDQUNOLElBRE0sQ0FDRCxVQUFBLFFBQVEsRUFBSTtBQUFTLHlCQUFPLFFBQVA7QUFBMEIsaUJBRDlDLFdBRUksVUFBQSxLQUFLLEVBQUk7QUFDSSx5QkFBTztBQUNILG9CQUFBLE1BQU0sRUFBQyxHQURKO0FBRUgsb0JBQUEsR0FBRyxFQUFDLEtBQUssQ0FBQyxPQUZQO0FBR0gsb0JBQUEsSUFBSSxFQUFFLEtBQUssQ0FBQztBQUhULG1CQUFQO0FBS1AsaUJBUlYsQ0FIYjs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPOzs7Ozs7Ozs7Ozt5RUFjRSxrQkFBVSxHQUFWLEVBQWMsUUFBZDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUksZ0JBQUEsR0FBRyxHQUFDLEtBQUssTUFBTCxHQUFjLEdBQWxCO0FBRkosa0RBR1csS0FBSyxDQUFDLEdBQUQsRUFBSztBQUNELGtCQUFBLE9BQU8sRUFBRSxLQUFLLE9BRGI7QUFFRCxrQkFBQSxNQUFNLEVBQUUsS0FGUDtBQUdELGtCQUFBLElBQUksRUFBRSxJQUFJLENBQUMsU0FBTCxDQUFlLFFBQWY7QUFITCxpQkFBTCxDQUFMLENBS0YsSUFMRSxDQUtHLFVBQUEsUUFBUSxFQUFJO0FBQ0Y7QUFDQSx5QkFBTyxRQUFQO0FBQ0gsaUJBUlYsV0FTSSxVQUFBLEtBQUssRUFBSTtBQUVHLHlCQUFPO0FBQ0Ysb0JBQUEsTUFBTSxFQUFDLEdBREw7QUFFRixvQkFBQSxHQUFHLEVBQUMsS0FBSyxDQUFDLE9BRlI7QUFHRixvQkFBQSxJQUFJLEVBQUUsS0FBSyxDQUFDO0FBSFYsbUJBQVA7QUFNTixpQkFqQlYsQ0FIWDs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPOzs7Ozs7Ozs7Ozs7O0FBZ0RIO0FBRUQ7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztJQUVjLG1CO0FBRUYsK0JBQVksVUFBWixFQUF1QixTQUF2QixFQUFrQyxPQUFsQyxFQUEyQztBQUFBOztBQUN2QyxTQUFLLEdBQUwsR0FBVyxFQUFYO0FBQ0EsU0FBSyxNQUFMLEdBQWMsS0FBZDtBQUNBLFNBQUssT0FBTCxHQUFhLEVBQWI7QUFDQSxTQUFLLE1BQUwsR0FBWSxFQUFaO0FBQ0EsU0FBSyxJQUFMLEdBQVksVUFBWjtBQUNBLFNBQUssT0FBTCxDQUFhLGFBQWIsSUFBOEIsVUFBOUI7QUFDQSxTQUFLLE9BQUwsQ0FBYSxlQUFiLElBQWdDLFNBQWhDO0FBQ0EsU0FBSyxPQUFMLENBQWEsY0FBYixJQUE4QixrQkFBOUI7QUFDSDs7OztXQUlGLG1CQUFVLE1BQVYsRUFBa0I7QUFDZCxXQUFLLE1BQUwsR0FBWSxNQUFaO0FBQ0g7OztXQW1EQSxvQkFBVyxNQUFYLEVBQ0E7QUFDSSxNQUFBLE1BQU0sQ0FBQyxNQUFQLENBQWMsS0FBSyxPQUFuQixFQUEyQixNQUEzQjtBQUNIOzs7V0FFRCxvQkFBVyxNQUFYLEVBQWtCLFlBQWxCLEVBQ0E7QUFDSSxXQUFLLE9BQUwsQ0FBYSxNQUFiLElBQXNCLFlBQXRCO0FBQ0g7OztXQUNELG1CQUFVO0FBQ1AsYUFBTyxLQUFLLElBQVo7QUFDRjs7O1dBQ0QsaUJBQVEsVUFBUixFQUFvQjtBQUNqQixXQUFLLElBQUwsR0FBVSxVQUFWO0FBQ0EsV0FBSyxPQUFMLENBQWEsYUFBYixJQUE4QixVQUE5QjtBQUNGOzs7OzBFQUNELGtCQUFVLEdBQVY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdFLGdCQUFBLEdBQUcsR0FBQyxLQUFLLE1BQUwsR0FBYSxHQUFqQjtBQUhGLGtEQUtTLEtBQUssQ0FBQyxHQUFELEVBQUs7QUFDQyxrQkFBQSxPQUFPLEVBQUUsS0FBSyxPQURmO0FBRUMsa0JBQUEsTUFBTSxFQUFFO0FBRlQsaUJBQUwsQ0FBTCxDQUlZLElBSlosQ0FJaUIsVUFBQSxRQUFRLEVBQUk7QUFDZDtBQUNDLHlCQUFPLFFBQVA7QUFDSixpQkFQWixXQVFrQixVQUFBLEtBQUssRUFBSTtBQUNaLHlCQUFPO0FBQ0Msb0JBQUEsTUFBTSxFQUFDLEdBRFI7QUFFQyxvQkFBQSxHQUFHLEVBQUMsS0FBSyxDQUFDLE9BRlg7QUFHQyxvQkFBQSxJQUFJLEVBQUUsS0FBSyxDQUFDO0FBSGIsbUJBQVA7QUFLSCxpQkFkWixDQUxUOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE87Ozs7Ozs7Ozs7OzJFQXVCRCxrQkFBVyxHQUFYLEVBQWUsU0FBZjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFSTtBQUNDLGdCQUFBLEdBQUcsR0FBQyxLQUFLLE1BQUwsR0FBYSxHQUFqQjtBQUVJLGdCQUFBLGFBTFQsR0FLdUIsbUJBQW1CLENBQUMsZUFBcEIsQ0FBb0MsU0FBcEMsQ0FMdkIsRUFNSztBQUNBOztBQVBMLGtEQVFZLEtBQUssQ0FBQyxHQUFELEVBQUs7QUFDRCxrQkFBQSxPQUFPLEVBQUUsS0FBSyxPQURiO0FBRUQsa0JBQUEsTUFBTSxFQUFFLE1BRlA7QUFHRCxrQkFBQSxXQUFXLEVBQUUsU0FIWjtBQUlELGtCQUFBLElBQUksRUFBRSxJQUFJLENBQUMsU0FBTCxDQUFlLGFBQWY7QUFKTCxpQkFBTCxDQUFMLENBTUYsSUFORSxDQU1HLFVBQUEsUUFBUSxFQUFJO0FBQ0Y7QUFDQSx5QkFBTyxRQUFQO0FBQ0gsaUJBVFYsV0FVSSxVQUFBLEtBQUssRUFBSTtBQUVJLHlCQUFPO0FBQ0gsb0JBQUEsTUFBTSxFQUFDLEdBREo7QUFFSCxvQkFBQSxHQUFHLEVBQUMsS0FBSyxDQUFDLE9BRlA7QUFHSCxvQkFBQSxJQUFJLEVBQUUsS0FBSyxDQUFDO0FBSFQsbUJBQVA7QUFLUCxpQkFqQlYsQ0FSWjs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPOzs7Ozs7Ozs7OztnRkE2QkUsa0JBQWdCLFFBQWhCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVPLGdCQUFBLEdBRlAsR0FFYSx5QkFBd0IsUUFGckM7QUFBQSxrREFHVSxLQUFLLENBQUMsR0FBRCxFQUFLO0FBQUcsa0JBQUEsT0FBTyxFQUFFLEtBQUssT0FBakI7QUFBNkIsa0JBQUEsTUFBTSxFQUFFO0FBQXJDLGlCQUFMLENBQUwsQ0FDTixJQURNLENBQ0QsVUFBQSxRQUFRLEVBQUk7QUFBUyx5QkFBTyxRQUFQO0FBQTBCLGlCQUQ5QyxXQUVJLFVBQUEsS0FBSyxFQUFJO0FBQ0kseUJBQU87QUFDSCxvQkFBQSxNQUFNLEVBQUMsR0FESjtBQUVILG9CQUFBLEdBQUcsRUFBQyxLQUFLLENBQUMsT0FGUDtBQUdILG9CQUFBLElBQUksRUFBRSxLQUFLLENBQUM7QUFIVCxtQkFBUDtBQUtQLGlCQVJWLENBSFY7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTzs7Ozs7Ozs7Ozs7MEVBY0Qsa0JBQVUsR0FBVixFQUFjLFFBQWQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVJLGdCQUFBLEdBQUcsR0FBQyxLQUFLLE1BQUwsR0FBYyxHQUFsQjtBQUZKLGtEQUdXLEtBQUssQ0FBQyxHQUFELEVBQUs7QUFDRCxrQkFBQSxPQUFPLEVBQUUsS0FBSyxPQURiO0FBRUQsa0JBQUEsTUFBTSxFQUFFLEtBRlA7QUFHRCxrQkFBQSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQUwsQ0FBZSxRQUFmO0FBSEwsaUJBQUwsQ0FBTCxDQUtGLElBTEUsQ0FLRyxVQUFBLFFBQVEsRUFBSTtBQUNGO0FBQ0EseUJBQU8sUUFBUDtBQUNILGlCQVJWLFdBU0ksVUFBQSxLQUFLLEVBQUk7QUFFSSx5QkFBTztBQUNILG9CQUFBLE1BQU0sRUFBQyxHQURKO0FBRUgsb0JBQUEsR0FBRyxFQUFDLEtBQUssQ0FBQyxPQUZQO0FBR0gsb0JBQUEsSUFBSSxFQUFFLEtBQUssQ0FBQztBQUhULG1CQUFQO0FBTVAsaUJBakJWLENBSFg7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTzs7Ozs7Ozs7Ozs7MkVBd0JBLG1CQUFXLEdBQVgsRUFBZSxNQUFmLEVBQXNCLFNBQXRCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFRSxnQkFBQSxHQUFHLEdBQUMsS0FBSyxNQUFMLEdBQWMsR0FBbEI7QUFGRixtREFHUyxLQUFLLENBQUMsR0FBRCxFQUFLO0FBQ0gsa0JBQUEsT0FBTyxFQUFFLEtBQUssT0FEWDtBQUVILGtCQUFBLE1BQU0sRUFBRSxNQUZMO0FBR0gsa0JBQUEsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFMLENBQWUsU0FBZjtBQUhILGlCQUFMLENBQUwsQ0FLWSxJQUxaLENBS2lCLFVBQUEsUUFBUSxFQUFJO0FBQ2Q7QUFFSSx5QkFBTyxRQUFQO0FBRVAsaUJBVlosV0FXa0IsVUFBQSxLQUFLLEVBQUk7QUFDYix5QkFBTztBQUNFLG9CQUFBLE1BQU0sRUFBQyxHQURUO0FBRUUsb0JBQUEsR0FBRyxFQUFDLEtBQUssQ0FBQyxPQUZaO0FBR0Usb0JBQUEsSUFBSSxFQUFFLEtBQUssQ0FBQztBQUhkLG1CQUFQO0FBTUYsaUJBbEJaLENBSFQ7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTzs7Ozs7Ozs7OztXQXpKQyxnQ0FBK0IsR0FBL0IsRUFBcUMsU0FBckMsRUFBcUQ7QUFBRTtBQUNwRCxVQUFJLENBQUMsR0FBRyxFQUFSO0FBQ0EsVUFBSSxHQUFKLEVBQVUsTUFBTSxDQUFDLElBQVAsQ0FBWSxHQUFaLEVBQWlCLE9BQWpCLENBQ04sVUFBUyxHQUFULEVBQWM7QUFDVixZQUFNLFFBQU8sR0FBRyxDQUFDLEdBQUQsQ0FBVixNQUFxQixRQUF0QixJQUFtQyxHQUFHLENBQUMsR0FBRCxDQUEzQyxFQUFxRDtBQUNqRDtBQUNBLGNBQU8sR0FBRyxLQUFLLHFCQUFULElBQW9DLEdBQUcsS0FBSSx1QkFBM0MsSUFBd0UsR0FBRyxLQUFHLGNBQTlFLElBQWtHLEdBQUcsS0FBRyxtQkFBeEcsSUFBaUksR0FBRyxJQUFFLFdBQXRJLElBQXVKLEdBQUcsSUFBRSxTQUFsSyxFQUFnTDtBQUM1SyxtQkFBTyxHQUFHLENBQUMsR0FBRCxDQUFWO0FBQ0gsV0FGRCxNQUdRLG1CQUFtQixDQUFDLHNCQUFwQixDQUEyQyxHQUFHLENBQUMsR0FBRCxDQUE5QyxFQUFzRCxTQUF0RDtBQUNYLFNBTkQsTUFPSztBQUFHO0FBQ0EsY0FBSSxHQUFHLElBQUksT0FBWCxFQUFxQixDQUNsQjtBQUNGO0FBQ0o7QUFDSixPQWRDLEVBRndDLENBaUJsRDtBQUNIOzs7V0FHSCx5QkFBdUIsR0FBdkIsRUFBNEI7QUFDdEIsVUFBSSxHQUFHLEtBQUssSUFBUixJQUFnQixRQUFRLEdBQVIsTUFBaUIsUUFBakMsSUFBNkMsbUJBQW1CLEdBQWhFLElBQXdFLEdBQUcsWUFBWSxJQUEzRixFQUFrRyxPQUFPLEdBQVA7QUFDbEcsVUFBSSxHQUFHLFlBQVksSUFBbkIsRUFDRztBQUNDLFlBQUksSUFBSSxHQUFHLElBQUksSUFBSixDQUFTLEdBQUcsQ0FBQyxPQUFKLEVBQVQsQ0FBWCxDQUZKLEtBSUksSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLFdBQUosRUFBWDs7QUFFSixXQUFLLElBQUksR0FBVCxJQUFnQixHQUFoQixFQUFxQjtBQUNqQixZQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLENBQWdDLElBQWhDLENBQXFDLEdBQXJDLEVBQTBDLEdBQTFDLENBQUosRUFBb0Q7QUFDaEQsY0FBTSxHQUFHLENBQUMsR0FBRCxDQUFILFlBQW9CLFFBQXJCLElBQW1DLEdBQUcsS0FBSyxxQkFBM0MsSUFBc0UsR0FBRyxLQUFJLHVCQUE3RSxJQUEwRyxHQUFHLEtBQUcsY0FBaEgsSUFBb0ksR0FBRyxLQUFHLG1CQUExSSxJQUFtSyxHQUFHLElBQUUsV0FBeEssSUFBeUwsR0FBRyxJQUFFLFNBQTlMLElBQThNLEdBQUcsSUFBRSxPQUFuTixJQUFnTyxHQUFHLElBQUUsT0FBMU8sRUFBd1AsQ0FDcFA7QUFDSCxXQUZELE1BR0s7QUFDRCxZQUFBLEdBQUcsQ0FBQyxlQUFELENBQUgsR0FBdUIsSUFBdkI7QUFDQSxZQUFBLElBQUksQ0FBQyxHQUFELENBQUosR0FBWSxtQkFBbUIsQ0FBQyxlQUFwQixDQUFvQyxHQUFHLENBQUMsR0FBRCxDQUF2QyxDQUFaO0FBQ0EsbUJBQU8sR0FBRyxDQUFDLGVBQUQsQ0FBVjtBQUNIO0FBQ0o7QUFDSjs7QUFDRCxhQUFPLElBQVA7QUFDSDs7Ozs7O0FBMElKO0FBRUQ7QUFDUjtBQUNBO0FBQ0E7O0FBQ1EsSUFBSSxVQUFVLEdBQUksU0FBZCxVQUFjLEdBQ2xCO0FBQ0UsTUFBSSxHQUFHLEdBQUcsSUFBSSxjQUFKLEVBQVY7QUFFQSxTQUFPLEdBQVA7QUFDRCxDQUxEOztlQU1lLFU7Ozs7QUN0YXZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQztBQUdPO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztJQUVjLGlCO0FBRUYsK0JBQWM7QUFBQTs7QUFDVixTQUFLLFFBQUwsR0FBZ0IsRUFBaEI7QUFDQSxTQUFLLG9CQUFMLEdBQTRCLEVBQTVCLENBRlUsQ0FFc0I7QUFDbkM7Ozs7V0FFRCxvQkFBVyxPQUFYLEVBQ0E7QUFDRSxVQUFJLEdBQUcsR0FBRSxFQUFUO0FBQUEsVUFBWSxNQUFNLEdBQUMsSUFBbkI7O0FBQ0EsVUFBSSxPQUFPLENBQUMsSUFBUixJQUFnQixLQUFLLFFBQXpCLEVBQ0E7QUFDRSxZQUFJLEtBQUssUUFBTCxDQUFjLE9BQU8sQ0FBQyxJQUF0QixNQUE4QixTQUFsQyxFQUNBO0FBQ0ksVUFBQSxHQUFHLEdBQUcsYUFBVyxPQUFPLENBQUMsSUFBbkIsR0FBd0IsbUJBQTlCO0FBQ0EsVUFBQSxNQUFNLEdBQUcsS0FBVDtBQUNBLGlCQUFPO0FBQUMsbUJBQU0sR0FBUDtBQUFXLHNCQUFTLE1BQXBCO0FBQTJCLHVCQUFVLEtBQUssUUFBTCxDQUFlLE9BQU8sQ0FBQyxJQUF2QjtBQUFyQyxXQUFQO0FBQ0g7QUFDRjs7QUFDRCxXQUFLLFFBQUwsQ0FBZSxPQUFPLENBQUMsSUFBdkIsSUFBK0IsT0FBL0I7QUFDQSxVQUFJLEtBQUssb0JBQUwsQ0FBMEIsT0FBTyxDQUFDLElBQWxDLEtBQXlDLFNBQTdDLEVBQXdELEtBQUssMkJBQUwsQ0FBaUMsT0FBTyxDQUFDLElBQXpDO0FBQ3hELGFBQU87QUFBQyxlQUFNLEdBQVA7QUFBVyxrQkFBUyxNQUFwQjtBQUEyQixtQkFBVSxLQUFLLFFBQUwsQ0FBZSxPQUFPLENBQUMsSUFBdkI7QUFBckMsT0FBUDtBQUNEOzs7V0FFRCxxQ0FBNEIsV0FBNUIsRUFDQTtBQUNJLFVBQUksR0FBSjs7QUFDQSxXQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsS0FBSyxvQkFBTCxDQUEwQixXQUExQixFQUF1QyxNQUF0RCxFQUE2RCxDQUFDLEVBQTlELEVBQ0E7QUFDSSxRQUFBLEdBQUcsR0FBRyxLQUFLLG9CQUFMLENBQTBCLFdBQTFCLEVBQXVDLENBQXZDLENBQU4sQ0FESixDQUVJOztBQUNBLGFBQUssUUFBTCxDQUFjLFdBQWQsRUFBMkIsU0FBM0IsQ0FBcUMsR0FBRyxDQUFDLFFBQXpDLEVBQWtELEdBQUcsQ0FBQyxNQUF0RCxFQUE2RCxHQUFHLENBQUMsSUFBakUsRUFBc0UsR0FBRyxDQUFDLFFBQTFFO0FBQ0g7QUFFSjs7O1dBQ0Qsd0NBQStCLFlBQS9CLEVBQ0E7QUFDRSxVQUFJLEdBQUcsR0FBRSxFQUFUO0FBQUEsVUFBWSxNQUFNLEdBQUMsSUFBbkI7O0FBQ0EsVUFBSSxZQUFZLENBQUMsT0FBYixJQUF3QixLQUFLLG9CQUFqQyxFQUNBO0FBQ0UsWUFBSSxLQUFLLG9CQUFMLENBQTBCLFlBQVksQ0FBQyxPQUF2QyxLQUFpRCxTQUFyRCxFQUNBO0FBQ0k7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFb0IsZUFBSyxvQkFBTCxDQUEwQixZQUFZLENBQUMsT0FBdkMsSUFBa0QsRUFBbEQ7QUFDSDtBQUNGLE9BZkQsTUFnQkE7QUFDRSxhQUFLLG9CQUFMLENBQTBCLFlBQVksQ0FBQyxPQUF2QyxJQUFrRCxFQUFsRDtBQUVEOztBQUNELFdBQUssb0JBQUwsQ0FBMEIsWUFBWSxDQUFDLE9BQXZDLEVBQWdELElBQWhELENBQXFELFlBQXJEO0FBRUEsYUFBTztBQUFDLGVBQU0sR0FBUDtBQUFXLGtCQUFTLE1BQXBCO0FBQTJCLG1CQUFVLEtBQUssb0JBQUwsQ0FBMkIsWUFBWSxDQUFDLE9BQXhDO0FBQXJDLE9BQVA7QUFDRDtBQUNBO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7Ozs7V0FDWSx1QkFBZSxJQUFmLEVBQW9CLFlBQXBCLEVBQ0E7QUFDSSxVQUFJLFVBQVUsR0FBRyxJQUFJLE9BQUosQ0FBWSxJQUFaLEVBQWlCLFlBQWpCLENBQWpCO0FBQ0EsVUFBSSxLQUFLLEdBQUcsS0FBSyxVQUFMLENBQWdCLFVBQWhCLENBQVo7QUFDQSxhQUFPLEtBQVA7QUFDSDs7OztBQUNBO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDWSx3QkFBWSxJQUFaLEVBQ0E7QUFDSSxVQUFJLE9BQU8sR0FBRyxLQUFLLFFBQUwsQ0FBYyxJQUFkLENBQWQ7QUFDQSxhQUFPLE9BQVA7QUFDSDs7OztBQUNBO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDWSx1QkFBVyxXQUFYLEVBQXVCLFVBQXZCLEVBQWtDLFFBQWxDLEVBQ0E7QUFDSSxVQUFJLEtBQUssUUFBTCxDQUFjLFdBQWQsTUFBNkIsU0FBakMsRUFBNEMsT0FBTyxJQUFQO0FBQzVDLFVBQUksU0FBUyxHQUFHLElBQUksTUFBSixDQUFXLFVBQVgsRUFBc0IsUUFBdEIsQ0FBaEI7QUFDQSxXQUFLLFFBQUwsQ0FBYyxXQUFkLEVBQTJCLE9BQTNCLENBQW1DLFVBQW5DLElBQStDLFNBQVMsQ0FBQyxTQUF6RDtBQUNBLGFBQU8sU0FBUDtBQUNIOzs7O0FBRUE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNZLHNCQUFVLElBQVYsRUFDQTtBQUNJLFVBQUksR0FBRyxHQUFDLEVBQVI7QUFBQSxVQUFXLE1BQU0sR0FBQyxFQUFsQjtBQUNBLFVBQUksT0FBTyxHQUFHLEtBQUssUUFBTCxDQUFjLElBQWQsQ0FBZDs7QUFDQSxVQUFJLE9BQU8sS0FBRyxTQUFkLEVBRUE7QUFDSSxRQUFBLEdBQUcsR0FBQyxjQUFZLElBQVosR0FBaUIsaUJBQXJCO0FBQ0EsUUFBQSxNQUFNLEdBQUMsS0FBUDtBQUNBLGVBQU87QUFBQyxpQkFBTSxHQUFQO0FBQVcsb0JBQVM7QUFBcEIsU0FBUDtBQUNILE9BTkQsTUFPQTtBQUNJLFlBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxRQUFwQjtBQUNBLFFBQUEsR0FBRyxHQUFDLEVBQUo7QUFDQSxRQUFBLE1BQU0sR0FBQyxJQUFQO0FBQ0EsZUFBTztBQUFDLGlCQUFNLEdBQVA7QUFBVyxvQkFBUyxNQUFwQjtBQUEyQixtQkFBUTtBQUFuQyxTQUFQO0FBQ0g7QUFFSjs7Ozs7O0FBR0o7QUFFRDtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0lBRWMsTztBQUVGLG1CQUFZLElBQVosRUFBaUIsS0FBakIsRUFBdUIsT0FBdkIsRUFBZ0M7QUFBQTs7QUFDNUIsU0FBSyxJQUFMLEdBQVksSUFBWjtBQUNBLFNBQUssU0FBTCxHQUFpQixFQUFqQjtBQUNBLFNBQUssWUFBTCxHQUFvQixFQUFwQjtBQUNBLFNBQUssaUJBQUwsR0FBeUIsQ0FBQyxDQUExQjtBQUNBLFNBQUssZ0JBQUwsR0FBd0IsS0FBeEI7QUFDQSxRQUFJLE9BQU8sS0FBRyxTQUFkLEVBQXlCLEtBQUssT0FBTCxHQUFhLEVBQWIsQ0FBekIsS0FDSyxLQUFLLE9BQUwsR0FBZSxPQUFmO0FBRVI7Ozs7V0F1Q0QsbUJBQVUsSUFBVixFQUFlLE1BQWYsRUFBc0IsUUFBdEIsRUFBK0IsUUFBL0IsRUFBd0MsY0FBeEMsRUFDQTtBQUNFLFVBQUksR0FBRyxHQUFFLHlCQUFUO0FBQUEsVUFBbUMsTUFBTSxHQUFDLElBQTFDO0FBQ0EsVUFBSSxRQUFRLEdBQUcsRUFBZjtBQUNBLFVBQUksUUFBUSxJQUFJLFNBQWhCLEVBQTJCLFFBQVEsR0FBQyxLQUFUOztBQUMzQixVQUFJLElBQUksSUFBSSxLQUFLLFNBQWpCLEVBQ0E7QUFDRSxZQUFJLEtBQUssU0FBTCxDQUFlLElBQWYsTUFBdUIsU0FBM0IsRUFDQTtBQUNRLGNBQUssS0FBSyxTQUFMLENBQWUsSUFBZixFQUFxQixPQUFyQixDQUE2QixNQUE3QixNQUF5QyxTQUF6QyxJQUFzRCxDQUFDLFFBQTVELEVBQ0E7QUFDRyxZQUFBLEdBQUcsR0FBRyx3QkFBc0IsSUFBdEIsR0FBMkIsb0NBQTNCLEdBQWdFLE1BQWhFLEdBQXVFLEdBQTdFO0FBQ0EsWUFBQSxNQUFNLEdBQUcsS0FBVDtBQUNBLG1CQUFPO0FBQUMscUJBQU0sR0FBUDtBQUFXLHdCQUFTO0FBQXBCLGFBQVA7QUFDRixXQUxELE1BS00sSUFBSyxLQUFLLFNBQUwsQ0FBZSxJQUFmLEVBQXFCLE9BQXJCLENBQTZCLE1BQTdCLE1BQXlDLFNBQXpDLElBQXNELFFBQTNELEVBQ047QUFDRyxZQUFBLEdBQUcsR0FBRyx3QkFBc0IsSUFBdEIsR0FBMkIsb0NBQTNCLEdBQWdFLE1BQWhFLEdBQXVFLHNCQUE3RTtBQUNBLFlBQUEsTUFBTSxHQUFHLElBQVQ7QUFDQSxpQkFBSyxTQUFMLENBQWUsSUFBZixFQUFxQixPQUFyQixDQUE2QixNQUE3QixJQUFzQztBQUFDLDBCQUFXLFFBQVo7QUFBcUIsZ0NBQWlCO0FBQXRDLGFBQXRDO0FBQ0EsbUJBQU87QUFBQyxxQkFBTSxHQUFQO0FBQVcsd0JBQVM7QUFBcEIsYUFBUDtBQUdGLFdBUkssTUFVTjtBQUNJLGlCQUFLLFNBQUwsQ0FBZSxJQUFmLEVBQXFCLE9BQXJCLENBQTZCLE1BQTdCLElBQXNDO0FBQUMsMEJBQVcsUUFBWjtBQUFxQixnQ0FBaUI7QUFBdEMsYUFBdEM7QUFDSDtBQUNSO0FBQ0YsT0F2QkQsTUF3QkE7QUFDRSxRQUFBLFFBQVEsQ0FBQyxJQUFULEdBQWdCLElBQWhCO0FBQ0EsUUFBQSxRQUFRLENBQUMsT0FBVCxHQUFtQixFQUFuQjtBQUNBLFFBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUIsTUFBakIsSUFBMkI7QUFBQyxzQkFBVyxRQUFaO0FBQXFCLDRCQUFpQjtBQUF0QyxTQUEzQjtBQUNBLGFBQUssU0FBTCxDQUFlLElBQWYsSUFBdUIsUUFBdkI7QUFDRDs7QUFDRCxhQUFPO0FBQUMsZUFBTSxHQUFQO0FBQVcsa0JBQVM7QUFBcEIsT0FBUDtBQUNEOzs7U0FFRCxhQUFvQixRQUFwQixFQUNBO0FBQ0ksV0FBSyxpQkFBTDtBQUNBLFVBQUksS0FBSyxpQkFBTCxHQUF1QixDQUEzQixFQUE4QixLQUFLLGlCQUFMLEdBQXVCLENBQXZCO0FBQzlCLFdBQUssWUFBTCxDQUFrQixNQUFsQixDQUF5QixLQUFLLGlCQUE5QixFQUFnRCxDQUFoRCxFQUFrRCxRQUFsRDtBQUNBLFdBQUssZ0JBQUwsR0FBc0IsUUFBdEI7QUFDSDs7O1NBRUQsZUFDQTtBQUNJLGFBQU8sS0FBSyxZQUFMLENBQWtCLEtBQUssaUJBQXZCLENBQVA7QUFDSDs7O1NBQ0QsYUFBYSxRQUFiLEVBQ0E7QUFDRyxXQUFLLGdCQUFMLEdBQXNCLFFBQXRCO0FBQ0Y7OztTQUNELGVBQ0E7QUFDSSxhQUFPLEtBQUssZ0JBQVo7QUFDSDs7O1NBQ0QsZUFDQTtBQUNJLGFBQU8sS0FBSyxpQkFBWjtBQUNIOzs7U0FDRCxhQUF5QixLQUF6QixFQUNBO0FBQ0ksV0FBSyxpQkFBTCxHQUF1QixLQUF2QjtBQUNIOzs7V0FDRCxtQkFBVSxNQUFWLEVBQ0E7QUFDSSxXQUFLLE9BQUwsQ0FBYSxNQUFNLENBQUMsSUFBcEIsSUFBNEIsTUFBNUI7QUFFSDs7O1dBQ0QsdUJBQWMsVUFBZCxFQUF5QixJQUF6QixFQUNBO0FBQ0ksVUFBSSxVQUFVLElBQUksS0FBSyxPQUF2QixFQUFnQyxLQUFLLE9BQUwsQ0FBYSxVQUFiLEVBQXlCLGFBQXpCLENBQXVDLElBQXZDO0FBRW5DOzs7V0FDRCxnQkFDQTtBQUNJLFVBQUksS0FBSyxpQkFBTCxHQUF1QixDQUEzQixFQUNBO0FBQ0ksYUFBSyxpQkFBTDtBQUNBLGFBQUssZUFBTDtBQUNBLGVBQU8sS0FBSyxpQkFBWjtBQUNILE9BTEQsTUFLTyxPQUFPLENBQUMsQ0FBUjtBQUVWOzs7V0FDRCxnQkFDQTtBQUNJLFVBQUksS0FBSyxpQkFBTCxHQUF5QixLQUFLLFlBQUwsQ0FBa0IsTUFBbEIsR0FBeUIsQ0FBdEQsRUFDQTtBQUNJLGFBQUssaUJBQUw7QUFDQSxhQUFLLGVBQUw7QUFDQSxlQUFPLEtBQUssaUJBQVo7QUFDSCxPQUxELE1BS08sT0FBTyxDQUFDLENBQVI7QUFFVjs7O1dBb0JELHlCQUFnQixNQUFoQixFQUNBO0FBRUksV0FBSSxJQUFJLFFBQVIsSUFBb0IsS0FBSyxTQUF6QixFQUFvQztBQUNoQyxZQUFJLEtBQUssU0FBTCxDQUFlLFFBQWYsTUFBMkIsU0FBL0IsRUFDQTtBQUNJLGNBQUksS0FBSyxZQUFMLENBQWtCLEtBQUssaUJBQXZCLE1BQThDLFNBQWxELEVBQ1EsTUFBTSxJQUFJLEtBQUosQ0FBVSx3REFBVixDQUFOOztBQUNSLGNBQUksTUFBTSxJQUFJLEtBQUssU0FBTCxDQUFlLFFBQWYsRUFBeUIsT0FBdkMsRUFBaUQ7QUFDakQsZ0JBQUksS0FBSyxTQUFMLENBQWUsUUFBZixFQUF5QixPQUF6QixDQUFpQyxNQUFqQyxFQUF5QyxRQUF6QyxLQUFvRCxTQUF4RCxFQUNRLEtBQUssU0FBTCxDQUFlLFFBQWYsRUFBeUIsT0FBekIsQ0FBaUMsTUFBakMsRUFBeUMsUUFBekMsQ0FBbUQ7QUFBQyxjQUFBLE1BQU0sRUFBQyxLQUFLLElBQWI7QUFBa0IsY0FBQSxLQUFLLEVBQUMsS0FBSyxZQUFMLENBQWtCLEtBQUssaUJBQXZCLENBQXhCO0FBQW1FLGNBQUEsTUFBTSxFQUFDLE1BQTFFO0FBQWlGLGNBQUEsV0FBVyxFQUFDLEtBQUssU0FBTCxDQUFlLFFBQWYsRUFBeUIsT0FBekIsQ0FBaUMsTUFBakMsRUFBeUM7QUFBdEksYUFBbkQ7QUFDUDtBQUVKO0FBQ0o7QUFDSjs7Ozs7O0FBQ0o7QUFFRDtBQUNSO0FBQ0E7QUFDQTs7SUFFYyxNO0FBQ0Ysa0JBQVksSUFBWixFQUFpQixRQUFqQixFQUEwQixjQUExQixFQUNBO0FBQUE7O0FBQ0ksU0FBSyxJQUFMLEdBQVksSUFBWjtBQUNBLFNBQUssYUFBTCxHQUFxQixRQUFyQjtBQUNBLFNBQUssWUFBTCxHQUFvQixjQUFwQjtBQUNIOzs7O1NBQ0QsZUFDQTtBQUNJLGFBQU87QUFBQyxrQkFBUyxLQUFLLElBQWY7QUFBb0IseUJBQWdCLEtBQUssYUFBekM7QUFBdUQsd0JBQWUsS0FBSztBQUEzRSxPQUFQO0FBRUg7Ozs7OztBQUNKO0FBQ0E7QUFDVDtBQUNBO0FBQ0E7O0FBQ1EsSUFBSSxtQkFBbUIsR0FBSSxTQUF2QixtQkFBdUIsR0FDM0I7QUFDRSxNQUFJLGlCQUFpQixHQUFHLElBQUksaUJBQUosRUFBeEI7QUFFQSxTQUFPLGlCQUFQO0FBQ0QsQ0FMRDs7ZUFNZSxtQjs7OztBQ2xYdkI7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7SUFFTSxjO0FBRUYsMEJBQVksRUFBWixFQUFlLFFBQWYsRUFBeUIsU0FBekIsRUFBb0MsVUFBcEMsRUFBK0M7QUFBQTs7QUFDeEMsU0FBSyxHQUFMLEdBQVcsd0JBQVg7QUFDQSxTQUFLLEtBQUwsR0FBYSxFQUFiO0FBQ0EsU0FBSyxRQUFMLEdBQWdCLFFBQWhCO0FBQ0EsU0FBSyxFQUFMLEdBQVUsRUFBVjtBQUNOLFNBQUssU0FBTCxHQUFpQixTQUFqQjtBQUNBLFNBQUssVUFBTCxHQUFnQixVQUFoQjtBQUNBLEcsQ0FHRDs7Ozs7V0FFQSx5QkFBZ0IsU0FBaEIsRUFBMEIsVUFBMUIsRUFBcUMsU0FBckMsRUFBZ0Q7QUFDM0MsVUFBSSxTQUFTLEtBQUcsT0FBaEIsRUFBMEIsS0FBSyxHQUFMLENBQVMsY0FBVCxDQUF3QixVQUF4QixFQUFtQyxTQUFuQyxFQUExQixLQUNNLEtBQUssR0FBTCxDQUFTLFlBQVQsQ0FBc0IsVUFBdEI7QUFDVjs7OzswRUFHRCxpQkFBVyxHQUFYLEVBQWUsU0FBZjtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFRSxnQkFBQSxZQUZGLEdBRWlCLEtBQUssU0FBTCxDQUFlLE1BQWYsR0FBd0IsR0FGekM7QUFJSSxnQkFBQSxHQUFHLElBQUcsR0FBRyxDQUFDLE9BQUosQ0FBWSxHQUFaLEtBQW9CLENBQXBCLEdBQXlCLEdBQXpCLEdBQStCLEdBQXJDLENBSkosQ0FLSTs7QUFDQSxnQkFBQSxHQUFHLElBQUcsU0FBUyxZQUFmO0FBRUksZ0JBQUEsR0FSUixHQVFZLEtBQUssUUFBTCxDQUFjLFNBQWQsQ0FBd0IsYUFBeEIsQ0FSWjtBQVVRLGdCQUFBLFVBVlIsR0FVbUIsS0FBSyxRQUFMLENBQWMsR0FBZCxDQUFrQixXQUFsQixDQVZuQjtBQVlJLG9CQUFJLEtBQUssR0FBTCxDQUFTLGVBQVQsQ0FBeUIsT0FBekIsT0FBcUMsU0FBekMsRUFBb0QsS0FBSyxHQUFMLENBQVMsZUFBVCxDQUF5QixPQUF6QixDQUFpQyxVQUFqQztBQVp4RDtBQUFBLHVCQWF5QixLQUFLLEdBQUwsQ0FBUyxlQUFULENBQXlCLElBQXpCLENBQThCLEdBQTlCLEVBQW9DLFNBQXBDLENBYnpCOztBQUFBO0FBYVEsZ0JBQUEsUUFiUjtBQWVJO0FBQ0ksZ0JBQUEsS0FoQlIsR0FnQmdCLElBaEJoQjtBQWlCUSxnQkFBQSxXQWpCUixHQWlCc0IsUUFqQnRCLGFBaUJzQixRQWpCdEIsNENBaUJzQixRQUFRLENBQUUsT0FqQmhDLHNEQWlCc0Isa0JBQW1CLEdBQW5CLENBQXVCLGNBQXZCLENBakJ0QjtBQUFBOztBQUFBLHNCQW1CWSxXQUFXLEtBQUcsV0FBZCxJQUE2QixXQUFXLEtBQUcsWUFuQnZEO0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUEsdUJBb0IwQixRQUFRLENBQUMsSUFBVCxFQXBCMUI7O0FBQUE7QUFvQlksZ0JBQUEsS0FwQlo7QUFBQTtBQUFBOztBQUFBO0FBQUEsc0JBcUJrQixXQUFXLEtBQUcsa0JBckJoQztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBLHVCQXNCOEIsUUFBUSxDQUFDLElBQVQsRUF0QjlCOztBQUFBO0FBc0JnQixnQkFBQSxLQXRCaEI7QUFBQTtBQUFBOztBQUFBO0FBQUEsaURBdUJvQixRQXZCcEI7O0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBLGlEQTJCVztBQUFJLGtCQUFBLElBQUksRUFBRSxLQUFWO0FBQ1Esa0JBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUR4QixpQkEzQlg7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTzs7Ozs7Ozs7Ozs7eUVBaUNBLGtCQUFVLEdBQVYsRUFBYyxRQUFkO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxrREFDWSxLQUFLLEdBQUwsQ0FBUyxlQUFULENBQXlCLEdBQXpCLENBQTZCLEdBQTdCLEVBQWlDLFFBQWpDLEVBQTJDLElBQTNDLENBQWdELFVBQUEsUUFBUSxFQUFFO0FBRTdELHlCQUFPLFFBQVA7QUFDSCxpQkFITSxDQURaOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE87Ozs7Ozs7Ozs7O3lFQU9BLGtCQUFXLEdBQVg7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFnQixnQkFBQSxRQUFoQiw4REFBeUIsS0FBekI7QUFBZ0MsZ0JBQUEsZUFBaEMsOERBQWdELEtBQWhEO0FBRVMsZ0JBQUEsUUFGVCxHQUVvQixLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBRnBCO0FBR1MsZ0JBQUEsVUFIVCxHQUdzQixLQUh0QjtBQUtHLGdCQUFBLElBTEgsc0RBS1UsS0FBSyxTQUFMLENBQWUsTUFBZixFQUxWLDJEQUtVLHVCQUF5QixHQUxuQyxrR0FLNEMsS0FBSyxVQUFMLENBQWdCLE9BTDVELDBEQUs0QyxzQkFBeUIsVUFMckUsRUFLZ0Y7O0FBRXZFLGdCQUFBLEdBUFQsR0FPYSxLQUFLLFFBQUwsQ0FBYyxTQUFkLENBQXdCLGFBQXhCLENBUGI7QUFRSyxnQkFBQSxHQUFHLElBQUcsR0FBRyxDQUFDLE9BQUosQ0FBWSxHQUFaLEtBQW9CLENBQXBCLEdBQXlCLEdBQXpCLEdBQStCLEdBQXJDLENBUkwsQ0FTSzs7QUFDTixnQkFBQSxHQUFHLElBQUcsU0FBUyxJQUFmO0FBRVUsZ0JBQUEsVUFaVCxHQVlvQixLQUFLLFFBQUwsQ0FBYyxHQUFkLENBQWtCLFdBQWxCLENBWnBCO0FBY0ssb0JBQUksS0FBSyxHQUFMLENBQVMsZUFBVCxDQUF5QixPQUF6QixPQUFxQyxTQUF6QyxFQUFvRCxLQUFLLEdBQUwsQ0FBUyxlQUFULENBQXlCLE9BQXpCLENBQWlDLFVBQWpDLEVBZHpELENBZ0JJO0FBQ0E7QUFDRDtBQUVDOztBQXBCSixzQkFxQlMsR0FBRyxJQUFFLFNBQUwsSUFBa0IsR0FBRyxJQUFFLElBckJoQztBQUFBO0FBQUE7QUFBQTs7QUFzQlMsZ0JBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxrQkFBQSxHQUFHLEVBQUUsb0JBQU47QUFBMkIsa0JBQUEsTUFBTSxFQUFDO0FBQWxDLGlCQUFoQjtBQXRCVDtBQUFBOztBQUFBO0FBQUEscUJBeUJZLFFBekJaO0FBQUE7QUFBQTtBQUFBOztBQUFBLHNCQTRCZSxLQUFLLEtBQUwsQ0FBVyxHQUFYLE1BQW1CLFNBNUJsQztBQUFBO0FBQUE7QUFBQTs7QUFBQSxxQkE4QnFCLEtBQUssS0FBTCxDQUFXLEdBQVgsRUFBZ0IsVUE5QnJDO0FBQUE7QUFBQTtBQUFBOztBQStCb0IsZ0JBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxrQkFBQSxJQUFJLEVBQUcsT0FBTyxDQUFDLElBQVIsQ0FBYSxLQUFLLEtBQUwsQ0FBVyxHQUFYLEVBQWdCLElBQTdCLENBQVI7QUFBMkMsa0JBQUEsTUFBTSxFQUFDO0FBQWxELGlCQUFqQjtBQS9CcEI7QUFBQTs7QUFBQTtBQUFBLHFCQWlDMEIsS0FBSyxLQUFMLENBQVcsR0FBWCxFQUFnQixrQkFqQzFDO0FBQUE7QUFBQTtBQUFBOztBQUFBLGtEQW1DMkIsS0FBSyxLQUFMLENBQVcsR0FBWCxFQUFnQixRQUFoQixDQUEyQixLQUFLLEtBQUwsQ0FBVyxHQUFYLEVBQWdCLFFBQWhCLENBQXlCLE1BQXpCLEdBQWdDLENBQTNELENBbkMzQjs7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUF1Q2dCLHFCQUFLLEtBQUwsQ0FBVyxHQUFYLElBQWtCO0FBQUMsa0JBQUEsSUFBSSxFQUFDLEVBQU47QUFBUyxrQkFBQSxVQUFVLEVBQUMsS0FBcEI7QUFBMEIsa0JBQUEsa0JBQWtCLEVBQUM7QUFBN0MsaUJBQWxCO0FBQ0EsZ0JBQUEsVUFBVSxHQUFDLElBQVg7O0FBeENoQjtBQUFBO0FBQUE7O0FBQUE7QUE0Q1kscUJBQUssS0FBTCxDQUFXLEdBQVgsSUFBa0I7QUFBQyxrQkFBQSxJQUFJLEVBQUMsRUFBTjtBQUFTLGtCQUFBLFVBQVUsRUFBQyxLQUFwQjtBQUEwQixrQkFBQSxrQkFBa0IsRUFBQztBQUE3QyxpQkFBbEI7QUFDQSxnQkFBQSxVQUFVLEdBQUMsSUFBWDs7QUE3Q1o7QUFpRE0sb0JBQUksVUFBSixFQUNBO0FBQ00sa0JBQUEsUUFETixHQUNpQixJQURqQjtBQUVFLHNCQUFJLEtBQUssS0FBTCxDQUFXLEdBQVgsRUFBZ0IsUUFBaEIsSUFBMEIsU0FBOUIsRUFBNkMsS0FBSyxLQUFMLENBQVcsR0FBWCxFQUFnQixRQUFoQixHQUEyQixFQUEzQjtBQUU3Qyx1QkFBSyxLQUFMLENBQVcsR0FBWCxFQUFnQixRQUFoQixDQUF5QixJQUF6QixDQUE4QixRQUFRLENBQUMsT0FBdkM7QUFHQSx1QkFBSyxHQUFMLENBQVMsZUFBVCxDQUF5QixHQUF6QixDQUE2QixHQUE3QixFQUFrQyxJQUFsQztBQUFBLHVGQUF3QyxrQkFBTSxRQUFOO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUMzQiw4QkFBQSxJQUQyQixHQUNwQixJQURvQjtBQUU1Qiw4QkFBQSxXQUY0QixHQUVkLFFBRmMsYUFFZCxRQUZjLDZDQUVkLFFBQVEsQ0FBRSxPQUZJLHVEQUVkLG1CQUFtQixHQUFuQixDQUF1QixjQUF2QixDQUZjOztBQUFBLG9DQUd4QixXQUFXLEtBQUcsV0FBZCxJQUE2QixXQUFXLEtBQUcsWUFIbkI7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQSxxQ0FJVixRQUFRLENBQUMsSUFBVCxFQUpVOztBQUFBO0FBSXZCLDhCQUFBLElBSnVCO0FBQUE7QUFBQTs7QUFBQTtBQUFBLG9DQUtsQixXQUFXLEtBQUcsa0JBTEk7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQSxxQ0FNVCxRQUFRLENBQUMsSUFBVCxFQU5TOztBQUFBO0FBTXRCLDhCQUFBLElBTnNCOztBQUFBO0FBT2hDLGtDQUFJLFFBQVEsQ0FBQyxFQUFiLEVBQWlCO0FBQ0csZ0NBQUEsUUFBUSxDQUFDLEtBQVQsQ0FBZSxHQUFmLEVBQW9CLElBQXBCLEdBQTJCLElBQTNCO0FBQ0EsZ0NBQUEsUUFBUSxDQUFDLEtBQVQsQ0FBZSxHQUFmLEVBQW9CLFVBQXBCLEdBQWlDLElBQWpDO0FBQ0EsZ0NBQUEsUUFBUSxDQUFDLEtBQVQsQ0FBZSxHQUFmLEVBQW9CLGtCQUFwQixHQUF1QyxLQUF2QztBQUNBLGdDQUFBLFFBQVEsQ0FBQyxLQUFULENBQWUsR0FBZixFQUFvQixnQkFBcEIsR0FBdUMsSUFBSSxDQUFDLEdBQUwsRUFBdkM7QUFDQSxnQ0FBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLGtDQUFBLElBQUksRUFBRSxJQUFQO0FBQVksa0NBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUE1QixpQ0FBakI7QUFDbkIsK0JBTkQsTUFNTztBQUFFO0FBQ1EsZ0NBQUEsUUFBUSxDQUFDLEtBQVQsQ0FBZSxHQUFmLEVBQW9CLGtCQUFwQixHQUF1QyxLQUF2QztBQUNELGdDQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsa0NBQUEsR0FBRyxFQUFDLElBQUw7QUFBVyxrQ0FBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTNCLGlDQUFqQjtBQUNmOztBQWhCK0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEscUJBQXhDOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbUJEOztBQTVFUCxrREE2RVksUUFBUSxDQUFDLE9BN0VyQjs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPOzs7Ozs7Ozs7Ozs4RUFrRkEsa0JBQWdCLEdBQWhCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVRLGdCQUFBLFdBRlIsR0FFb0IsS0FGcEI7QUFHUSxnQkFBQSxRQUhSLEdBR21CLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFIbkI7QUFJUSxnQkFBQSxRQUpSLEdBSW1CLElBSm5CO0FBS0ksZ0JBQUEsR0FBRyxJQUFHLEdBQUcsQ0FBQyxPQUFKLENBQVksR0FBWixLQUFvQixDQUFwQixHQUF5QixHQUF6QixHQUErQixHQUFyQztBQUNBLGdCQUFBLEdBQUcsSUFBRyxTQUFTLGNBQWMsQ0FBQyxPQUFmLENBQXVCLGFBQXZCLENBQWY7QUFFSSxnQkFBQSxVQVJSLEdBUW1CLEtBQUssUUFBTCxDQUFjLEdBQWQsQ0FBa0IsV0FBbEIsQ0FSbkI7QUFVSSxvQkFBSSxLQUFLLEdBQUwsQ0FBUyxlQUFULENBQXlCLE9BQXpCLE9BQXFDLFNBQXpDLEVBQW9ELEtBQUssR0FBTCxDQUFTLGVBQVQsQ0FBeUIsT0FBekIsQ0FBaUMsVUFBakM7QUFFcEQscUJBQUssR0FBTCxDQUFTLGVBQVQsQ0FBeUIsR0FBekIsQ0FBNkIsR0FBN0IsRUFBa0MsSUFBbEMsQ0FBdUMsVUFBQSxRQUFRLEVBQUc7QUFDdEMsc0JBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDckIsb0JBQUEsUUFBUSxDQUFDLElBQVQsR0FBZ0IsSUFBaEIsQ0FBc0IsVUFBQSxJQUFJLEVBQUk7QUFHbEIsc0JBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyx3QkFBQSxJQUFJLEVBQUUsSUFBUDtBQUFZLHdCQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBNUIsdUJBQWpCO0FBQ1gscUJBSkQ7QUFPUCxtQkFSRCxNQVFPO0FBQ0gsb0JBQUEsUUFBUSxDQUFDLElBQVQsR0FBZ0IsSUFBaEIsQ0FBc0IsVUFBQSxJQUFJLEVBQUk7QUFFbEIsc0JBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyx3QkFBQSxHQUFHLEVBQUMsSUFBTDtBQUFVLHdCQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBMUIsdUJBQWhCO0FBQ1AscUJBSEw7QUFLSDtBQUNKLGlCQWhCVDtBQVpKLGtEQThCWSxRQUFRLENBQUMsT0E5QnJCOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE87Ozs7Ozs7Ozs7V0E4REEsY0FBSyxHQUFMLEVBQVMsTUFBVCxFQUFnQixTQUFoQixFQUEwQjtBQUFBOztBQUd0QixVQUFJLElBQUksdURBQUcsS0FBSyxTQUFMLENBQWUsTUFBZixFQUFILDJEQUFHLHVCQUF5QixHQUE1QixxR0FBcUMsS0FBSyxVQUFMLENBQWdCLE9BQXJELDJEQUFxQyx1QkFBeUIsVUFBdEUsQ0FIc0IsQ0FHMkQ7O0FBRWpGLFVBQUksR0FBRyxHQUFDLEtBQUssUUFBTCxDQUFjLFNBQWQsQ0FBd0IsYUFBeEIsQ0FBUjtBQUNBLE1BQUEsR0FBRyxJQUFHLEdBQUcsQ0FBQyxPQUFKLENBQVksR0FBWixLQUFvQixDQUFwQixHQUF5QixHQUF6QixHQUErQixHQUFyQyxDQU5zQixDQU90Qjs7QUFDQSxNQUFBLEdBQUcsSUFBRyxTQUFTLElBQWY7QUFFQSxVQUFJLFVBQVUsR0FBQyxLQUFLLFFBQUwsQ0FBYyxHQUFkLENBQWtCLFdBQWxCLENBQWY7QUFFQSxVQUFJLEtBQUssR0FBTCxDQUFTLGVBQVQsQ0FBeUIsT0FBekIsT0FBcUMsU0FBekMsRUFBb0QsS0FBSyxHQUFMLENBQVMsZUFBVCxDQUF5QixPQUF6QixDQUFpQyxVQUFqQztBQUdwRCxhQUFPLEtBQUssR0FBTCxDQUFTLGVBQVQsQ0FBeUIsSUFBekIsQ0FBOEIsR0FBOUIsRUFBa0MsTUFBbEMsRUFBeUMsU0FBekMsQ0FBUDtBQUNIOzs7V0FwQkQsb0JBQVcsTUFBWCxFQUFrQixZQUFsQixFQUFnQztBQUMzQixXQUFLLEdBQUwsQ0FBUyxlQUFULENBQXlCLFVBQXpCLENBQW9DLE1BQXBDLEVBQTJDLFlBQTNDO0FBQ0o7Ozs7OztlQXFCVyxjOzs7O0FDeE9oQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRU0scUI7QUFFRSxpQ0FBWSxRQUFaLEVBQXNCLFVBQXRCLEVBQWtDLFFBQWxDLEVBQTJDLEVBQTNDLEVBQThDLE1BQTlDLEVBQXFELFdBQXJELEVBQWlFLFlBQWpFLEVBQThFLGdCQUE5RSxFQUErRixjQUEvRixFQUE4RyxvQkFBOUcsRUFBb0k7QUFBQTs7QUFBQSxzQ0FvZi9ILFVBQVUsU0FBVixFQUFvQixHQUFwQixFQUF5QjtBQUN0QixXQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLElBQUMsR0FBRCxhQUFDLEdBQUQsZ0RBQUMsR0FBRyxDQUFFLGdCQUFOLDBEQUFDLHNCQUF1QixNQUF4QixDQUFkLEVBQTZDLENBQUMsRUFBOUMsRUFDQTtBQUFBOztBQUNRLFlBQUksR0FBRyxDQUFDLGdCQUFKLENBQXFCLENBQXJCLEVBQXdCLFFBQXhCLElBQWtDLFNBQXRDLEVBQWlELE9BQU8sR0FBRyxDQUFDLGdCQUFKLENBQXFCLENBQXJCLEVBQXdCLFNBQS9CO0FBQ3hEOztBQUNELGFBQU8sSUFBUDtBQUNiLEtBMWZ5STs7QUFBQSwwQ0EyZjNILFVBQVUsU0FBVixFQUFvQixHQUFwQixFQUF5QjtBQUMxQixXQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLElBQUMsR0FBRCxhQUFDLEdBQUQsaURBQUMsR0FBRyxDQUFFLGdCQUFOLDJEQUFDLHVCQUF1QixNQUF4QixDQUFkLEVBQTZDLENBQUMsRUFBOUMsRUFDQTtBQUFBOztBQUNRLFlBQUksR0FBRyxDQUFDLGdCQUFKLENBQXFCLENBQXJCLEVBQXdCLFFBQXhCLElBQWtDLFNBQXRDLEVBQWlELE9BQU8sR0FBRyxDQUFDLGdCQUFKLENBQXFCLENBQXJCLENBQVA7QUFDeEQ7O0FBQ0QsYUFBTyxJQUFQO0FBQ2IsS0FqZ0J5STs7QUFBQSwyQ0FzZ0J4SCxVQUFVLFNBQVYsRUFBb0IsTUFBcEIsRUFBMkIsR0FBM0IsRUFBK0IsV0FBL0IsRUFBNEM7QUFFeEQsVUFBSSxRQUFRLEdBQUMsSUFBYjtBQUdFLE1BQUEsUUFBUSxDQUFDLFdBQVQsQ0FBcUIsY0FBckIsQ0FBb0MsR0FBcEMsRUFBd0MsU0FBeEMsRUFBa0QsTUFBbEQ7O0FBQ0EsVUFBSSxTQUFTLEtBQUcsU0FBWixJQUF5QixTQUFTLEtBQUcsSUFBckMsSUFBNkMsU0FBUyxDQUFDLElBQVYsT0FBbUIsRUFBcEUsRUFDQTtBQUNBLFlBQUksV0FBSixFQUFpQjtBQUNYLFVBQUEsUUFBUSxDQUFDLGdCQUFULENBQTBCLFVBQTFCLENBQXFDLE1BQUksR0FBRyxDQUFDLElBQVIsR0FBYSx3QkFBbEQsRUFBMkUsTUFBM0U7QUFFTCxTQUhELE1BSVUsUUFBUSxDQUFDLGdCQUFULENBQTBCLFVBQTFCLENBQXFDLE1BQUksR0FBRyxDQUFDLElBQVIsR0FBYSxxQ0FBbEQsRUFBd0YsU0FBeEY7QUFDTjtBQUNkO0FBQ0E7QUFDQTtBQUNBOzs7QUFDYyxZQUFJLE1BQU0sQ0FBQyxTQUFELENBQU4sSUFBbUIsU0FBdkIsRUFBa0MsTUFBTSxDQUFDLFNBQUQsQ0FBTixHQUFvQixHQUFHLENBQUMsR0FBeEIsQ0FYdEMsQ0FZTDs7QUFFUyxRQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCLEVBQWhCLENBQW1CLFNBQW5CLEVBQTZCLE1BQTdCLEVBQW9DO0FBQUUsVUFBQSxRQUFRLEVBQUU7QUFBWixTQUFwQztBQUNBLFFBQUEsUUFBUSxDQUFDLFdBQVQsQ0FBcUIsNEJBQXJCLENBQWtELFNBQWxELEVBQTRELE1BQTVEO0FBQ0gsT0FqQkQsQ0FrQkE7QUFsQkEsV0FtQkk7QUFDRixZQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsUUFBVCxDQUFrQixjQUFsQixFQUFpQyxHQUFqQyxDQUFiOztBQUVBLFlBQUksTUFBTSxJQUFFLElBQVIsSUFBZ0IsTUFBTSxJQUFFLFNBQXhCLElBQXFDLEdBQUcsQ0FBQyxRQUFKLElBQWMsVUFBdkQsRUFDQTtBQUNJLFVBQUEsUUFBUSxDQUFDLG9CQUFULENBQThCLGlCQUE5QixDQUFnRCxNQUFoRCxFQUF3RCxJQUF4RCxDQUE2RCxVQUFTLEtBQVQsRUFBZ0I7QUFBQTs7QUFDdEUsZ0JBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFqQjtBQUNBLGdCQUFJLFdBQUosRUFBaUIsUUFBUSxDQUFDLGdCQUFULENBQTBCLFVBQTFCLENBQXFDLE1BQUksR0FBRyxDQUFDLElBQVIsR0FBYSx3QkFBbEQsRUFBMkUsTUFBM0UsRUFBakIsS0FDTSxRQUFRLENBQUMsZ0JBQVQsQ0FBMEIsVUFBMUIsQ0FBcUMsTUFBSSxHQUFHLENBQUMsSUFBUixHQUFhLHFDQUFsRCxFQUF3RixTQUF4RjtBQUNOLGdCQUFJLDBCQUFBLElBQUksQ0FBQyxnQkFBTCxnRkFBdUIsTUFBdkIsS0FBK0IsU0FBbkMsRUFBOEMsUUFBUSxDQUFDLE1BQVQsQ0FBZ0IsRUFBaEIsQ0FBbUIsSUFBSSxDQUFDLGdCQUFMLENBQXNCLE1BQXpDLEVBQWtEO0FBQUUsY0FBQSxVQUFVLEVBQUUsTUFBZDtBQUFzQixjQUFBLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBbkM7QUFBd0MsY0FBQSxPQUFPLEVBQUMsR0FBRyxDQUFDO0FBQXBELGFBQWxELEVBQTlDLEtBQ0ssUUFBUSxDQUFDLE1BQVQsQ0FBZ0IsRUFBaEIsQ0FBbUIsaUJBQW5CLEVBQXVDO0FBQUUsY0FBQSxVQUFVLEVBQUUsTUFBZDtBQUFzQixjQUFBLE1BQU0sRUFBRSxNQUE5QjtBQUFzQyxjQUFBLE9BQU8sRUFBQyxHQUFHLENBQUM7QUFBbEQsYUFBdkM7QUFFWCxXQVBELEVBT0UsVUFBUyxNQUFULEVBQWdCO0FBRWQsWUFBQSxRQUFRLENBQUMsZ0JBQVQsQ0FBMEIsVUFBMUIsQ0FBcUMsTUFBTSxDQUFDLEdBQTVDLEVBQWdELE9BQWhEO0FBQ0gsV0FWRDtBQVdILFNBYkQsTUFhTyxJQUFJLE1BQU0sSUFBRSxJQUFSLElBQWdCLE1BQU0sSUFBRSxTQUF4QixJQUFxQyxHQUFHLENBQUMsUUFBSixJQUFjLFVBQXZELEVBQ1A7QUFFSSxVQUFBLFFBQVEsQ0FBQyxvQkFBVCxDQUE4QiwwQkFBOUIsQ0FBeUQsTUFBekQsRUFBaUUsSUFBakUsQ0FBc0UsVUFBUyxLQUFULEVBQWdCO0FBQUE7O0FBQy9FLGdCQUFJLElBQUksR0FBRyxLQUFLLENBQUMsSUFBakI7QUFDQSxnQkFBSSxXQUFKLEVBQWlCLFFBQVEsQ0FBQyxnQkFBVCxDQUEwQixVQUExQixDQUFxQyxNQUFJLEdBQUcsQ0FBQyxJQUFSLEdBQWEsd0JBQWxELEVBQTJFLE1BQTNFLEVBQWpCLEtBQ00sUUFBUSxDQUFDLGdCQUFULENBQTBCLFVBQTFCLENBQXFDLE1BQUksR0FBRyxDQUFDLElBQVIsR0FBYSxxQ0FBbEQsRUFBd0YsU0FBeEY7QUFDTixnQkFBSSwyQkFBQSxJQUFJLENBQUMsZ0JBQUwsa0ZBQXVCLE1BQXZCLEtBQStCLFNBQW5DLEVBQThDLFFBQVEsQ0FBQyxNQUFULENBQWdCLEVBQWhCLENBQW1CLElBQUksQ0FBQyxnQkFBTCxDQUFzQixNQUF6QyxFQUFrRDtBQUFFLGNBQUEsVUFBVSxFQUFFLE1BQWQ7QUFBc0IsY0FBQSxNQUFNLEVBQUUsTUFBOUI7QUFBc0MsY0FBQSxPQUFPLEVBQUMsR0FBRyxDQUFDO0FBQWxELGFBQWxELEVBQTlDLEtBQ0ssUUFBUSxDQUFDLE1BQVQsQ0FBZ0IsRUFBaEIsQ0FBbUIsaUJBQW5CLEVBQXVDO0FBQUUsY0FBQSxVQUFVLEVBQUUsTUFBZDtBQUFzQixjQUFBLE1BQU0sRUFBRSxNQUE5QjtBQUFzQyxjQUFBLE9BQU8sRUFBQyxHQUFHLENBQUM7QUFBbEQsYUFBdkM7QUFFWCxXQVBELEVBT0UsVUFBUyxNQUFULEVBQWdCO0FBRWQsWUFBQSxRQUFRLENBQUMsZ0JBQVQsQ0FBMEIsVUFBMUIsQ0FBcUMsTUFBTSxDQUFDLEdBQTVDLEVBQWdELE9BQWhEO0FBQ0gsV0FWRDtBQVlILFNBZk0sTUFrQlA7QUFDSSxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCLEVBQWhCLENBQW1CLGlCQUFuQixFQUF1QztBQUFDLFlBQUEsT0FBTyxFQUFDLEdBQUcsQ0FBQztBQUFiLFdBQXZDO0FBQ0EsVUFBQSxRQUFRLENBQUMsZ0JBQVQsQ0FBMEIsVUFBMUIsQ0FBcUMsTUFBSSxHQUFHLENBQUMsSUFBUixHQUFhLGlFQUFsRCxFQUFvSCxTQUFwSDtBQUNIO0FBQ0Y7QUFJUCxLQXprQndJOztBQUM1SCxTQUFLLFFBQUwsR0FBYyxRQUFkO0FBQ0EsU0FBSyxVQUFMLEdBQWdCLFVBQWhCO0FBQ0EsU0FBSyxRQUFMLEdBQWdCLFFBQWhCO0FBQ0EsU0FBSyxZQUFMLEdBQWtCLFlBQWxCO0FBQ0EsU0FBSyxFQUFMLEdBQVEsRUFBUjtBQUNBLFNBQUssTUFBTCxHQUFZLE1BQVo7QUFDQSxTQUFLLFdBQUwsR0FBaUIsV0FBakI7QUFDQSxTQUFLLGdCQUFMLEdBQXdCLGdCQUF4QjtBQUNBLFNBQUssY0FBTCxHQUFzQixjQUF0QjtBQUNBLFNBQUssb0JBQUwsR0FBNEIsb0JBQTVCO0FBR1A7Ozs7V0FJRDtBQUNBO0FBQ0EsNkJBQWlCLEtBQWpCLEVBQXdCLFFBQXhCLEVBQWtDO0FBRTFCLFVBQUksR0FBRyxHQUFHLGlDQUFWO0FBQ0EsVUFBSSxVQUFVLEdBQUcsS0FBSyxRQUFMLENBQWMsR0FBZCxDQUFrQixXQUFsQixDQUFqQjtBQUNBLFVBQUksU0FBUyxHQUFHO0FBQUUsaUJBQVM7QUFBWCxPQUFoQjtBQUNBLFdBQUssY0FBTCxDQUFvQixlQUFwQixDQUFvQyxPQUFwQyxFQUE0QyxVQUE1QztBQUVBLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixTQUE3QixFQUF3QyxJQUF4QyxDQUE2QyxVQUFBLFFBQVEsRUFBRztBQUVoRDtBQUNRLFlBQUksT0FBTyxHQUFHLEtBQWQ7QUFDQSxZQUFJLE9BQU8sR0FBQyxFQUFaO0FBQ0EsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFrQixHQUF0QixFQUEyQixPQUFPLEdBQUcsSUFBVixDQUEzQixLQUNLLE9BQU8sR0FBRyx5QkFBVjtBQUNMLFlBQUksSUFBSSxHQUFHO0FBQUMsa0JBQU8sUUFBUSxDQUFDLElBQWpCO0FBQXNCLHFCQUFVLE9BQWhDO0FBQXdDLG9CQUFTLFFBQVEsQ0FBQyxNQUExRDtBQUFpRSxxQkFBVTtBQUEzRSxTQUFYO0FBQ0EsUUFBQSxRQUFRLENBQUMsSUFBRCxDQUFSO0FBQ1AsT0FUVCxFQVAwQixDQWtCM0I7QUFFTjs7O1dBRUE7QUFDRjtBQUNDO0FBQ0EsMkJBQWUsS0FBZixFQUFxQztBQUFBLFVBQWYsT0FBZSx1RUFBUCxLQUFPO0FBQzdCLFVBQUksR0FBRyxHQUFDLDRCQUEwQixLQUExQixHQUFnQyxHQUF4QztBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNBLFVBQUksUUFBUSxHQUFHLElBQWY7QUFDQSxXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsT0FBN0IsRUFBc0MsSUFBdEMsQ0FBMkMsVUFBQSxRQUFRLEVBQUc7QUFDN0MsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUF4QixFQUE2QjtBQUNkLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBc0IsWUFBQSxNQUFNLEVBQUUsUUFBUSxDQUFDLElBQVQsQ0FBYztBQUE1QyxXQUFqQjtBQUNQLFNBRlIsTUFFYztBQUNDLFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLElBQUksRUFBQyxRQUFRLENBQUMsSUFBZjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBaEI7QUFDRDtBQUV0QixPQVBEO0FBU0EsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDUDs7O1dBR1A7QUFDSztBQUNIO0FBQ0ksd0JBQVksS0FBWixFQUFrQztBQUFBLFVBQWYsT0FBZSx1RUFBUCxLQUFPO0FBQzFCLFVBQUksR0FBRyxHQUFDLHlCQUF1QixLQUF2QixHQUE2QixHQUFyQztBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNBLFVBQUksUUFBUSxHQUFHLElBQWY7QUFDQSxXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsT0FBN0IsRUFBc0MsSUFBdEMsQ0FBMkMsVUFBQSxRQUFRLEVBQUc7QUFDN0MsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUF4QixFQUE2QjtBQUNkLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBc0IsWUFBQSxNQUFNLEVBQUUsUUFBUSxDQUFDLElBQVQsQ0FBYztBQUE1QyxXQUFqQjtBQUNQLFNBRlIsTUFFYztBQUNDLFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLElBQUksRUFBQyxRQUFRLENBQUMsSUFBZjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBaEI7QUFDRDtBQUV0QixPQVBEO0FBU0EsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDUDs7O1dBRVA7QUFDSztBQUNIO0FBQ0kseUJBQWEsS0FBYixFQUFtQztBQUFBLFVBQWYsT0FBZSx1RUFBUCxLQUFPO0FBQzNCLFVBQUksR0FBRyxHQUFDLDBCQUF3QixLQUF4QixHQUE4QixHQUF0QyxDQUQyQixDQUV2Qzs7QUFDWSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQSxVQUFJLFFBQVEsR0FBRyxJQUFmO0FBQ0EsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLE9BQTdCLEVBQXNDLElBQXRDLENBQTJDLFVBQUEsUUFBUSxFQUFHO0FBQzdDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDZCxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXNCLFlBQUEsTUFBTSxFQUFFLFFBQVEsQ0FBQyxJQUFULENBQWM7QUFBNUMsV0FBakI7QUFDUCxTQUZSLE1BRWM7QUFDQyxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxJQUFJLEVBQUMsUUFBUSxDQUFDLEdBQVQsQ0FBYSxNQUFuQjtBQUEyQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBM0MsV0FBaEI7QUFDRDtBQUV0QixPQVBEO0FBU0EsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDUDs7O1dBRUQ7QUFDQTtBQUNBLHNCQUFVLFFBQVYsRUFBbUIsTUFBbkIsRUFBMkIsU0FBM0IsRUFBc0MsU0FBdEMsRUFBZ0QsTUFBaEQsRUFBd0QsUUFBeEQsRUFBa0U7QUFHMUQsVUFBSSxHQUFHLEdBQUcseUJBQVY7QUFDQSxVQUFJLFVBQVUsR0FBRyxLQUFLLFFBQUwsQ0FBYyxHQUFkLENBQWtCLFdBQWxCLENBQWpCO0FBQ0EsVUFBSSxTQUFTLEdBQUc7QUFBQyxvQkFBVyxRQUFaO0FBQXFCLG1CQUFVLE1BQS9CO0FBQXNDLHFCQUFZLFNBQWxEO0FBQTRELHFCQUFZLFNBQXhFO0FBQWtGLGtCQUFVLE1BQTVGO0FBQW9HLGdCQUFPO0FBQTNHLE9BQWhCO0FBQ0EsV0FBSyxjQUFMLENBQW9CLGVBQXBCLENBQW9DLE9BQXBDLEVBQTRDLFVBQTVDLEVBTjBELENBTzFEOztBQUNBLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixTQUE3QixFQUF3QyxJQUF4QyxDQUE2QyxVQUFBLFFBQVEsRUFBRztBQUdoRCxZQUFJLE9BQU8sR0FBRyxLQUFkO0FBQ0EsWUFBSSxPQUFPLEdBQUMsRUFBWjs7QUFDQSxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQWtCLEdBQXRCLEVBQ0E7QUFDUTtBQUNBLFVBQUEsT0FBTyxHQUFHLElBQVY7QUFDQSxVQUFBLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBVCxDQUFjLEdBQXhCO0FBRVAsU0FORCxNQU9LLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBVCxDQUFjLEdBQXhCOztBQUVMLFlBQUksSUFBSSxHQUFHO0FBQUMsa0JBQU8sUUFBUSxDQUFDLElBQWpCO0FBQXNCLHFCQUFVLE9BQWhDO0FBQXdDLG9CQUFTLFFBQVEsQ0FBQyxNQUExRDtBQUFpRSxxQkFBVTtBQUEzRSxTQUFYO0FBQ0EsUUFBQSxRQUFRLENBQUMsSUFBRCxDQUFSO0FBRVAsT0FqQkQ7QUFvQlA7OztXQUNJO0FBQ1Q7QUFDQTtBQUNJLG9DQUF1QixLQUF2QixFQUE2QixLQUE3QixFQUFtQztBQUUzQixVQUFJLEdBQUcsR0FBRyxtQ0FBVjtBQUNBLFVBQUksVUFBVSxHQUFHLEtBQUssUUFBTCxDQUFjLEdBQWQsQ0FBa0IsV0FBbEIsQ0FBakI7QUFDQSxVQUFJLFNBQVMsR0FBRztBQUFFLFFBQUEsU0FBUyxFQUFFLEtBQWI7QUFBb0IsUUFBQSxTQUFTLEVBQUM7QUFBOUIsT0FBaEI7QUFDQSxXQUFLLGNBQUwsQ0FBb0IsZUFBcEIsQ0FBb0MsT0FBcEMsRUFBNEMsVUFBNUMsRUFBdUQsS0FBSyxVQUFMLENBQWdCLE9BQWhCLENBQXdCLFdBQXhCLENBQW9DLFFBQTNGO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUEsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLFNBQTdCLEVBQXdDLElBQXhDLENBQTZDLFVBQUEsUUFBUSxFQUFHO0FBRWhELFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBa0IsR0FBdEIsRUFDQTtBQUNHO0FBRUssY0FBSSxPQUFPLEdBQUMsRUFBWjtBQUNBLGNBQUksT0FBTyxHQUFHLElBQWQ7QUFDQSxjQUFJLElBQUksR0FBRztBQUFDLG9CQUFPLFFBQVEsQ0FBQyxJQUFqQjtBQUFzQix1QkFBVSxPQUFoQztBQUF3QyxzQkFBUyxRQUFRLENBQUMsTUFBMUQ7QUFBaUUsdUJBQVU7QUFBM0UsV0FBWDtBQUNBLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUIsSUFBakIsRUFOUixDQU9JO0FBQ0gsU0FURCxNQVNRO0FBQ0osY0FBSSxRQUFRLEdBQUcsS0FBZjtBQUNBLGNBQUksUUFBUSxHQUFHLHdCQUFmO0FBQ0EsY0FBSSxLQUFLLEdBQUc7QUFBQyxvQkFBTyxFQUFSO0FBQVcsdUJBQVUsUUFBckI7QUFBOEIsc0JBQVMsUUFBUSxDQUFDLE1BQWhEO0FBQXVELHVCQUFVO0FBQWpFLFdBQVo7QUFDQSxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCLEtBQWhCO0FBRUg7QUFFUixPQW5CRDtBQXFCQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUdQLEssQ0FDQTtBQUNSO0FBQ0E7Ozs7V0FDTyx3QkFBZSxLQUFmLEVBQXFCLEtBQXJCLEVBQTJCLFFBQTNCLEVBQW9DO0FBRTVCLFVBQUksR0FBRyxHQUFHLHlCQUFWO0FBQ0EsVUFBSSxVQUFVLEdBQUcsS0FBSyxRQUFMLENBQWMsR0FBZCxDQUFrQixXQUFsQixDQUFqQjtBQUNBLFVBQUksU0FBUyxHQUFHO0FBQUUsUUFBQSxTQUFTLEVBQUUsS0FBYjtBQUFvQixRQUFBLFNBQVMsRUFBQyxLQUE5QjtBQUFvQyxRQUFBLE1BQU0sRUFBQyxFQUEzQztBQUE4QyxRQUFBLE9BQU8sRUFBQyxDQUF0RDtBQUF3RCxRQUFBLElBQUksRUFBQztBQUE3RCxPQUFoQjtBQUNBLFdBQUssY0FBTCxDQUFvQixlQUFwQixDQUFvQyxPQUFwQyxFQUE0QyxVQUE1QztBQUVBLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixTQUE3QixFQUF3QyxJQUF4QyxDQUE2QyxVQUFBLFFBQVEsRUFBRztBQUVoRCxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQWtCLEdBQXRCLEVBQ0E7QUFDSTtBQUVJLGNBQUksT0FBTyxHQUFDLEVBQVo7QUFDQSxjQUFJLE9BQU8sR0FBRyxJQUFkO0FBQ0EsY0FBSSxJQUFJLEdBQUc7QUFBQyxvQkFBTyxRQUFRLENBQUMsSUFBakI7QUFBc0IsdUJBQVUsT0FBaEM7QUFBd0Msc0JBQVMsUUFBUSxDQUFDLE1BQTFEO0FBQWlFLHVCQUFVO0FBQTNFLFdBQVg7QUFDQSxVQUFBLFFBQVEsQ0FBQyxJQUFELENBQVIsQ0FOUixDQU9HO0FBQ0YsU0FURCxNQVVBO0FBQ0ksY0FBSSxRQUFRLEdBQUcsS0FBZjtBQUNBLGNBQUksUUFBUSxHQUFHLHdCQUFmO0FBQ0EsY0FBSSxLQUFLLEdBQUc7QUFBQyxvQkFBTyxFQUFSO0FBQVcsdUJBQVUsUUFBckI7QUFBOEIsc0JBQVMsUUFBUSxDQUFDLE1BQWhEO0FBQXVELHVCQUFVO0FBQWpFLFdBQVo7QUFDQSxVQUFBLFFBQVEsQ0FBQyxLQUFELENBQVI7QUFFSDtBQUVSLE9BcEJEO0FBdUJQOzs7V0FDRCxnQ0FBd0IsTUFBeEIsRUFBZ0MsUUFBaEMsRUFBMEM7QUFHckMsVUFBSSxRQUFRLEdBQUcsRUFBZjtBQUNEO0FBQ1o7O0FBRWdCLFVBQUksR0FBRyxHQUFHLCtCQUFWO0FBQ0EsVUFBSSxTQUFTLEdBQUc7QUFBRSxrQkFBVTtBQUFaLE9BQWhCO0FBQ0EsVUFBSSxVQUFVLEdBQUcsS0FBSyxRQUFMLENBQWMsR0FBZCxDQUFrQixXQUFsQixDQUFqQjtBQUNBLFdBQUssY0FBTCxDQUFvQixlQUFwQixDQUFvQyxPQUFwQyxFQUE0QyxVQUE1QztBQUNBLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixTQUE3QixFQUF3QyxJQUF4QyxDQUE2QyxVQUFBLFFBQVEsRUFBRztBQUVoRCxZQUFJLE9BQU8sR0FBRyxLQUFkO0FBQ0EsWUFBSSxPQUFPLEdBQUMsRUFBWjtBQUNBLFlBQUksSUFBSSxHQUFHLEVBQVg7O0FBQ0EsWUFBSSxRQUFRLENBQUMsTUFBVCxJQUFpQixHQUFyQixFQUNBO0FBQ1E7QUFFQSxjQUFJLFFBQVEsQ0FBQyxNQUFULEtBQWtCLEdBQXRCLEVBQTJCLE9BQU8sR0FBRyxJQUFWLENBQTNCLEtBQ1MsT0FBTyxHQUFHLGNBQVY7QUFDVCxjQUFJLEtBQUksR0FBRztBQUFDLG9CQUFPLFFBQVEsQ0FBQyxJQUFqQjtBQUFzQix1QkFBVSxPQUFoQztBQUF3QyxzQkFBUyxRQUFRLENBQUMsTUFBMUQ7QUFBaUUsdUJBQVU7QUFBM0UsV0FBWDtBQUNBLFVBQUEsUUFBUSxDQUFDLEtBQUQsQ0FBUixDQU5SLENBT1E7QUFDUCxTQVRELE1BU007QUFDRSxjQUFJLFFBQVEsQ0FBQyxNQUFULEtBQWtCLEdBQXRCLEVBQTJCLE9BQU8sR0FBRyxJQUFWLENBQTNCLEtBQ1MsT0FBTyxHQUFHLGNBQVY7QUFDVCxVQUFBLElBQUksR0FBRztBQUFDLHVCQUFVLE9BQVg7QUFBbUIsc0JBQVMsUUFBUSxDQUFDLE1BQXJDO0FBQTRDLHVCQUFVO0FBQXRELFdBQVA7QUFDQSxVQUFBLFFBQVEsQ0FBQyxJQUFELENBQVI7QUFDUDtBQUVSLE9BckJEO0FBdUJQOzs7V0FDRCxlQUFPLFFBQVAsRUFBaUIsUUFBakIsRUFBMkIsUUFBM0IsRUFBcUM7QUFHaEMsVUFBSSxRQUFRLEdBQUcsRUFBZjtBQUNEO0FBQ1o7O0FBRWdCLFVBQUksR0FBRyxHQUFHLGVBQVY7QUFDQSxVQUFJLFVBQVUsR0FBRyxLQUFLLFFBQUwsQ0FBYyxHQUFkLENBQWtCLFdBQWxCLENBQWpCO0FBQ0EsV0FBSyxjQUFMLENBQW9CLGVBQXBCLENBQW9DLE9BQXBDLEVBQTRDLFVBQTVDO0FBQ0EsVUFBSSxTQUFTLEdBQUc7QUFBRSxRQUFBLFFBQVEsRUFBRSxRQUFaO0FBQXNCLFFBQUEsUUFBUSxFQUFFO0FBQWhDLE9BQWhCO0FBQ0EsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLFNBQTdCLEVBQXdDLElBQXhDLENBQTZDLFVBQUEsUUFBUSxFQUFHO0FBRWhELFlBQUksT0FBTyxHQUFHLEtBQWQ7QUFDQSxZQUFJLE9BQU8sR0FBQyxFQUFaO0FBQ0EsWUFBSSxJQUFJLEdBQUcsRUFBWDs7QUFDQSxZQUFJLFFBQVEsQ0FBQyxNQUFULElBQWlCLEdBQXJCLEVBQ0E7QUFDUTtBQUVBLGNBQUksUUFBUSxDQUFDLE1BQVQsS0FBa0IsR0FBdEIsRUFBMkIsT0FBTyxHQUFHLElBQVYsQ0FBM0IsS0FDUyxPQUFPLEdBQUcsY0FBVjtBQUNULGNBQUksTUFBSSxHQUFHO0FBQUMsb0JBQU8sUUFBUSxDQUFDLElBQWpCO0FBQXNCLHVCQUFVLE9BQWhDO0FBQXdDLHNCQUFTLFFBQVEsQ0FBQyxNQUExRDtBQUFpRSx1QkFBVTtBQUEzRSxXQUFYO0FBQ0EsVUFBQSxRQUFRLENBQUMsTUFBRCxDQUFSLENBTlIsQ0FPUTtBQUNQLFNBVEQsTUFTTTtBQUNFLGNBQUksUUFBUSxDQUFDLE1BQVQsS0FBa0IsR0FBdEIsRUFBMkIsT0FBTyxHQUFHLElBQVYsQ0FBM0IsS0FDSyxPQUFPLEdBQUcsY0FBVjtBQUNMLFVBQUEsSUFBSSxHQUFHO0FBQUMsdUJBQVUsT0FBWDtBQUFtQixzQkFBUyxRQUFRLENBQUMsTUFBckM7QUFBNEMsdUJBQVU7QUFBdEQsV0FBUDtBQUNBLFVBQUEsUUFBUSxDQUFDLElBQUQsQ0FBUjtBQUNQO0FBRVIsT0FyQkQ7QUF1QlA7OztXQUVELHVCQUFlLFFBQWYsRUFBeUI7QUFFakIsVUFBSSxHQUFHLEdBQUcsbUJBQVY7QUFDQSxVQUFJLFVBQVUsR0FBRyxLQUFLLFFBQUwsQ0FBYyxHQUFkLENBQWtCLFdBQWxCLENBQWpCO0FBQ0EsV0FBSyxjQUFMLENBQW9CLGVBQXBCLENBQW9DLEtBQXBDLEVBQTBDLFVBQTFDO0FBRUEsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQThCLElBQTlCLENBQW1DLFVBQUEsUUFBUSxFQUFHO0FBRXZDO0FBQ1MsWUFBSSxPQUFPLEdBQUcsS0FBZDtBQUNBLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBa0IsR0FBdEIsRUFBMkIsT0FBTyxHQUFHLElBQVY7QUFDM0IsWUFBSSxJQUFJLEdBQUc7QUFBQyxrQkFBTyxRQUFRLENBQUMsSUFBakI7QUFBc0Isb0JBQVMsUUFBUSxDQUFDLE1BQXhDO0FBQStDLHFCQUFVO0FBQXpELFNBQVg7QUFDQSxRQUFBLFFBQVEsQ0FBQyxJQUFELENBQVIsQ0FOOEIsQ0FPdEM7QUFFUCxPQVREO0FBWVA7OztXQUVDLGdCQUFRLFFBQVIsRUFBa0I7QUFHWixVQUFJLEdBQUcsR0FBRyxhQUFWO0FBRUEsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQThCLElBQTlCLENBQW1DLFVBQUEsUUFBUSxFQUFHO0FBRTlCLFlBQUksT0FBTyxHQUFHLEtBQWQ7QUFDQSxZQUFJLE9BQU8sR0FBQyxFQUFaO0FBQ0EsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFrQixHQUF0QixFQUEyQixPQUFPLEdBQUcsSUFBVixDQUEzQixLQUNLLE9BQU8sR0FBRyxlQUFWO0FBQ0wsWUFBSSxJQUFJLEdBQUc7QUFBQyxxQkFBVSxPQUFYO0FBQW1CLG9CQUFTLFFBQVEsQ0FBQyxNQUFyQztBQUE0QyxxQkFBVTtBQUF0RCxTQUFYO0FBQ0EsUUFBQSxRQUFRLENBQUMsSUFBRCxDQUFSO0FBR2YsT0FWRDtBQWNQOzs7V0FHRCx3QkFBZ0IsSUFBaEIsRUFBc0IsUUFBdEIsRUFBZ0MsUUFBaEMsRUFBeUMsU0FBekMsRUFBb0Q7QUFBQTs7QUFBUTtBQUN4RCxVQUFJLFFBQVEsR0FBRyxXQUFVLElBQUksQ0FBQyxLQUE5QixDQURnRCxDQUVoRDs7QUFFVCxVQUFJLENBQUMsS0FBSyxVQUFMLENBQWdCLE9BQXJCLEVBQThCLEtBQUssVUFBTCxDQUFnQixPQUFoQixHQUEwQixFQUExQixDQUoyQixDQUt6RDs7QUFFQSxXQUFLLFVBQUwsQ0FBZ0IsT0FBaEIsQ0FBd0IsV0FBeEIsR0FBcUM7QUFDeEIsUUFBQSxNQUFNLEVBQUcsSUFBSSxDQUFDLE1BRFU7QUFFeEIsUUFBQSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBRk87QUFHeEIsUUFBQSxTQUFTLEVBQUcsSUFBSSxDQUFDLFNBSE87QUFJeEIsUUFBQSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBSlk7QUFLeEIsUUFBQSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBTFM7QUFNeEIsUUFBQSxZQUFZLEVBQUMsSUFBSSxDQUFDLFlBTk07QUFPeEIsUUFBQSxVQUFVLEVBQUMsSUFBSSxDQUFDLFVBUFE7QUFReEIsUUFBQSxRQUFRLEVBQUUsUUFSYztBQVN4QixRQUFBLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FUUTtBQVV4QixRQUFBLElBQUksRUFBRSxJQUFGLGFBQUUsSUFBRixxQ0FBRSxJQUFJLENBQUUsSUFBUiwrQ0FBRSxXQUFZLEVBVk07QUFXeEIsUUFBQSxPQUFPLEVBQUcsSUFBSSxDQUFDLElBWFM7QUFZeEIsUUFBQSxLQUFLLEVBQUMsRUFaa0I7QUFheEIsUUFBQSxXQUFXLEVBQUMsS0FiWTtBQWN4QixRQUFBLE9BQU8sRUFBQyxFQWRnQjtBQWV4QixRQUFBLFlBQVksRUFBQyxLQWZXO0FBZ0J4QixRQUFBLE1BQU0sRUFBQyxFQWhCaUI7QUFpQnhCLFFBQUEsWUFBWSxFQUFDLElBQUksQ0FBQyxZQWpCTTtBQWtCeEIsUUFBQSxNQUFNLEVBQUMsSUFBSSxDQUFDLE1BbEJZO0FBbUJ4QixRQUFBLEdBQUcsRUFBQyxJQUFJLENBQUM7QUFuQmUsT0FBckMsQ0FQeUQsQ0E2QmpEO0FBQ0E7O0FBRUMsV0FBSyxjQUFMLENBQW9CLFVBQXBCLENBQStCLGVBQS9CLEVBQStDLFFBQS9DLEVBaENnRCxDQWlDekQ7QUFDQTtBQUNBOztBQUVBLFdBQUssUUFBTCxDQUFjLFNBQWQsQ0FBd0IsYUFBeEIsRUFBd0M7QUFDdkIsUUFBQSxNQUFNLEVBQUcsSUFBSSxDQUFDLE1BRFM7QUFFdkIsUUFBQSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBRlE7QUFHdkIsUUFBQSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBSE07QUFJdkIsUUFBQSxTQUFTLEVBQUcsSUFBSSxDQUFDLFNBSk07QUFLdkIsUUFBQSxVQUFVLEVBQUMsSUFBSSxDQUFDLFVBTE87QUFNdkIsUUFBQSxZQUFZLEVBQUMsSUFBSSxDQUFDLFlBTks7QUFPdkIsUUFBQSxRQUFRLEVBQUUsUUFQYTtBQVF2QixRQUFBLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FSTztBQVN2QixRQUFBLElBQUksRUFBRSxJQUFGLGFBQUUsSUFBRixzQ0FBRSxJQUFJLENBQUUsSUFBUixnREFBRSxZQUFZLEVBVEs7QUFVdEMsUUFBQSxPQUFPLEVBQUU7QUFBRSxVQUFBLEVBQUUsRUFBRSxJQUFGLGFBQUUsSUFBRixzQ0FBRSxJQUFJLENBQUUsSUFBUixnREFBRSxZQUFZLEVBQWxCO0FBQXNCLFVBQUEsSUFBSSxFQUFFLElBQUYsYUFBRSxJQUFGLHNDQUFFLElBQUksQ0FBRSxJQUFSLGdEQUFFLFlBQVksSUFBeEM7QUFBOEMsVUFBQSxJQUFJLEVBQUMsSUFBRCxhQUFDLElBQUQsc0NBQUMsSUFBSSxDQUFFLElBQVAsZ0RBQUMsWUFBWTtBQUEvRCxTQVY2QjtBQVd2QixRQUFBLEdBQUcsRUFBQztBQUFDLFVBQUEsTUFBTSxFQUFDO0FBQUMsWUFBQSxVQUFVLGVBQUMsSUFBSSxDQUFDLEdBQU4sa0VBQUMsVUFBVSxNQUFYLHFEQUFDLGlCQUFrQjtBQUE5QjtBQUFSLFNBWG1CO0FBWXhCLFFBQUEsWUFBWSxFQUFFO0FBQUUsVUFBQSxFQUFFLEVBQUUsSUFBSSxDQUFDLFlBQUwsQ0FBa0I7QUFBeEIsU0FaVSxDQWFwQzs7QUFib0MsT0FBeEM7QUFlTTs7O1dBR0YsZ0JBQVEsR0FBUixFQUFhO0FBQ1IsV0FBSyxVQUFMLENBQWdCLE9BQWhCLENBQXdCLFdBQXhCLENBQW9DLEdBQXBDLEdBQXlDLEdBQXpDO0FBRUg7OztXQUdELDJCQUFtQixJQUFuQixFQUF5QjtBQUFBOztBQUV0QixVQUFJLFFBQVEsR0FBRyxFQUFmO0FBQ0MsVUFBSSxDQUFDLEtBQUssVUFBTCxDQUFnQixPQUFyQixFQUE4QixLQUFLLFVBQUwsQ0FBZ0IsT0FBaEIsR0FBMEIsRUFBMUI7QUFDdkMsV0FBSyxVQUFMLENBQWdCLE9BQWhCLENBQXdCLFdBQXhCLEdBQXFDO0FBQ3BCLFFBQUEsTUFBTSxFQUFHLElBQUksQ0FBQyxNQURNO0FBRXBCLFFBQUEsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUZHO0FBR3BCLFFBQUEsU0FBUyxFQUFHLElBQUksQ0FBQyxTQUhHO0FBSXBCLFFBQUEsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUpRO0FBS3BCLFFBQUEsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUxLO0FBTXBCLFFBQUEsWUFBWSxFQUFDLElBQUksQ0FBQyxZQU5FO0FBT3BCLFFBQUEsVUFBVSxFQUFDLElBQUksQ0FBQyxVQVBJO0FBUXBCLFFBQUEsUUFBUSxFQUFFLFFBUlU7QUFTcEIsUUFBQSxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBVEk7QUFVcEIsUUFBQSxJQUFJLEVBQUUsSUFBRixhQUFFLElBQUYsc0NBQUUsSUFBSSxDQUFFLElBQVIsZ0RBQUUsWUFBWSxFQVZFO0FBV3BCLFFBQUEsT0FBTyxFQUFHLElBQUksQ0FBQyxJQVhLO0FBWXBCLFFBQUEsS0FBSyxFQUFDLEVBWmM7QUFhcEIsUUFBQSxXQUFXLEVBQUMsS0FiUTtBQWNwQixRQUFBLE9BQU8sRUFBQyxFQWRZO0FBZXBCLFFBQUEsWUFBWSxFQUFDLEtBZk87QUFnQnBCLFFBQUEsTUFBTSxFQUFDLEVBaEJhO0FBaUJwQixRQUFBLFlBQVksRUFBQyxJQUFJLENBQUMsWUFqQkU7QUFrQnBCLFFBQUEsTUFBTSxFQUFDLElBQUksQ0FBQyxNQWxCUTtBQW1CcEIsUUFBQSxHQUFHLEVBQUMsSUFBSSxDQUFDO0FBbkJXLE9BQXJDLENBSjhCLENBMEJqQjs7QUFDQSxVQUFJLFVBQVUsR0FBRyxLQUFLLFFBQUwsQ0FBYyxHQUFkLENBQWtCLFdBQWxCLENBQWpCO0FBQ0EsV0FBSyxjQUFMLENBQW9CLGVBQXBCLENBQW9DLE9BQXBDLEVBQTRDLFVBQTVDO0FBQ0EsV0FBSyxRQUFMLENBQWMsU0FBZCxDQUF3QixhQUF4QixFQUF3QztBQUNwQyxRQUFBLE1BQU0sRUFBRyxJQUFJLENBQUMsTUFEc0I7QUFFcEMsUUFBQSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBRnFCO0FBR3BDLFFBQUEsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUhtQjtBQUlwQyxRQUFBLFNBQVMsRUFBRyxJQUFJLENBQUMsU0FKbUI7QUFLcEMsUUFBQSxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBTGlCO0FBTXBDLFFBQUEsVUFBVSxFQUFDLElBQUksQ0FBQyxVQU5vQjtBQU9wQyxRQUFBLFlBQVksRUFBQyxJQUFJLENBQUMsWUFQa0I7QUFRcEMsUUFBQSxRQUFRLEVBQUUsUUFSMEI7QUFTcEMsUUFBQSxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBVG9CO0FBVXBDLFFBQUEsSUFBSSxFQUFFLElBQUYsYUFBRSxJQUFGLHNDQUFFLElBQUksQ0FBRSxJQUFSLGdEQUFFLFlBQVksRUFWa0I7QUFXcEMsUUFBQSxPQUFPLEVBQUU7QUFBRSxVQUFBLEVBQUUsRUFBRSxJQUFGLGFBQUUsSUFBRixzQ0FBRSxJQUFJLENBQUUsSUFBUixnREFBRSxZQUFZLEVBQWxCO0FBQXNCLFVBQUEsSUFBSSxFQUFFLElBQUYsYUFBRSxJQUFGLHNDQUFFLElBQUksQ0FBRSxJQUFSLGdEQUFFLFlBQVksSUFBeEM7QUFBOEMsVUFBQSxJQUFJLEVBQUMsSUFBRCxhQUFDLElBQUQsdUNBQUMsSUFBSSxDQUFFLElBQVAsaURBQUMsYUFBWTtBQUEvRCxTQVgyQjtBQVlwQyxRQUFBLEdBQUcsRUFBQztBQUFDLFVBQUEsTUFBTSxFQUFDO0FBQUMsWUFBQSxVQUFVLGdCQUFDLElBQUksQ0FBQyxHQUFOLG9FQUFDLFdBQVUsTUFBWCxzREFBQyxrQkFBa0I7QUFBOUI7QUFBUixTQVpnQztBQWFyQyxRQUFBLFlBQVksRUFBRTtBQUFFLFVBQUEsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFMLENBQWtCO0FBQXhCO0FBYnVCLE9BQXhDO0FBZVA7OztXQUNELHlCQUFnQixLQUFoQixFQUNBO0FBQ1EsVUFBSSxRQUFRLEdBQUcsV0FBVSxLQUF6QjtBQUNBLFdBQUssVUFBTCxDQUFnQixPQUFoQixDQUF3QixXQUF4QixDQUFvQyxRQUFwQyxHQUE2QyxRQUE3QyxDQUZSLENBR1E7O0FBQ0EsV0FBSyxjQUFMLENBQW9CLFVBQXBCLENBQStCLGVBQS9CLEVBQStDLFFBQS9DO0FBQ0EsV0FBSyxRQUFMLENBQWMsU0FBZCxDQUF3QixTQUF4QixFQUFtQyxLQUFLLFVBQUwsQ0FBZ0IsT0FBbkQ7QUFDUDs7O1dBR0Qsd0JBQWUsR0FBZixFQUNOO0FBQ1UsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsV0FBSyxVQUFMLENBQWdCLE9BQWhCLENBQXdCLFdBQXhCLENBQW9DLE9BQXBDLEdBQThDLEVBQTlDO0FBRUEsV0FBSyxXQUFMLENBQWlCLGNBQWpCLENBQWdDLEdBQWhDO0FBQ0EsVUFBSSxRQUFRLEdBQUcsSUFBZjtBQUNBLFVBQUksSUFBSSxHQUFDLEdBQVQ7QUFDQSxVQUFJLE9BQU8sR0FBRyxHQUFHLENBQUMsR0FBbEI7QUFDQSxVQUFJLEtBQUssR0FBQyxDQUFWO0FBQ0EsVUFBSSxJQUFJLEdBQUcsS0FBSyxZQUFMLENBQWtCLFVBQWxCLEVBQTZCLEdBQTdCLENBQVg7QUFDQSxNQUFBLE9BQU8sR0FBRyxJQUFILGFBQUcsSUFBSCx1QkFBRyxJQUFJLENBQUUsU0FBaEI7QUFDQSxVQUFJLENBQUEsSUFBSSxTQUFKLElBQUEsSUFBSSxXQUFKLFlBQUEsSUFBSSxDQUFFLE9BQU4sS0FBZSxTQUFuQixFQUE4QixLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQWI7QUFFOUIsVUFBSSxHQUFHLENBQUMsUUFBSixJQUFjLFVBQWxCLEVBQThCLElBQUksR0FBQyxHQUFMO0FBQzlCLFdBQUssV0FBTCxDQUFpQix5QkFBakI7O0FBQ0EsVUFBSSxPQUFPLElBQUUsU0FBYixFQUEwQjtBQUV0QixhQUFLLFdBQUwsQ0FBaUIsV0FBakIsQ0FBNkIsT0FBN0IsRUFBcUMsSUFBckMsRUFBMEMsS0FBMUMsRUFBaUQsSUFBakQsQ0FDWCxVQUFVLElBQVYsRUFBZ0I7QUFBQTs7QUFFVyxjQUFJLGVBQWUsR0FBRyxRQUFRLENBQUMsV0FBVCxDQUFxQixtQkFBckIsQ0FBeUMsUUFBUSxDQUFDLFVBQVQsQ0FBb0IsT0FBcEIsQ0FBNEIsV0FBNUIsQ0FBd0MsSUFBakYsRUFBc0YsSUFBdEYsRUFBMkYsS0FBM0YsRUFBaUcsT0FBakcsRUFBeUcsS0FBekcsQ0FBdEI7QUFDQSxjQUFJLFdBQVcsR0FBRyxLQUFsQjs7QUFDQSxjQUFJLHFCQUFBLGVBQWUsVUFBZiw0REFBaUIsTUFBakIsSUFBd0IsQ0FBNUIsRUFBK0I7QUFBQTs7QUFDM0I7QUFDM0IsWUFBQSxRQUFRLENBQUMsV0FBVCxDQUFxQixXQUFyQixDQUFpQyxNQUFqQyxDQUF3QyxDQUF4QyxFQUEyQyxRQUFRLENBQUMsV0FBVCxDQUFxQixXQUFyQixDQUFpQyxNQUE1RTs7QUFDQSxxQ0FBQSxRQUFRLENBQUMsV0FBVCxDQUFxQixXQUFyQixFQUFpQyxJQUFqQyxpREFBeUMsZUFBekMsR0FIc0QsQ0FJM0I7OztBQUNBLFlBQUEsUUFBUSxDQUFDLFdBQVQsQ0FBcUIsVUFBckIsR0FBa0MsUUFBUSxDQUFDLFVBQVQsQ0FBb0IsT0FBcEIsQ0FBNEIsVUFBNUIsR0FBMEM7QUFBRyxjQUFBLEdBQUcsRUFBQyxHQUFHLENBQUMsR0FBWDtBQUFnQixjQUFBLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBOUI7QUFBd0MsY0FBQSxFQUFFLEVBQUMsR0FBRyxDQUFDLEVBQS9DO0FBQW9ELGNBQUEsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUE5RDtBQUFxRSxjQUFBLE1BQU0sRUFBRSxlQUFlLENBQUMsQ0FBRCxDQUFmLENBQW1CO0FBQWhHLGFBQTVFO0FBQ0EsZ0JBQUksSUFBSSxJQUFFLEdBQVYsRUFBZSxRQUFRLENBQUMsV0FBVCxDQUFxQix1QkFBckIsQ0FBNkMsSUFBN0MsRUFBa0QsT0FBbEQsRUFBMEQsS0FBMUQ7QUFDZixZQUFBLFdBQVcsR0FBRyxJQUFkO0FBRUgsV0FURCxNQVdBO0FBQ0ksWUFBQSxlQUFlLEdBQUMsRUFBaEI7QUFDQSxZQUFBLFFBQVEsQ0FBQyxXQUFULENBQXFCLFdBQXJCLEdBQW9DLGVBQXBDO0FBQ0EsWUFBQSxRQUFRLENBQUMsZ0JBQVQsQ0FBMEIsVUFBMUIsQ0FBcUMsbUNBQWlDLEdBQUcsQ0FBQyxJQUExRSxFQUErRSxNQUEvRTtBQUNIOztBQUNELFVBQUEsUUFBUSxDQUFDLFVBQVQsQ0FBb0IsT0FBcEIsQ0FBNEIsV0FBNUIsQ0FBd0MsWUFBeEMsR0FBcUQsSUFBckQ7QUFFQSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCLFdBQWpCO0FBQ2YsU0F4QkQ7QUF5QkgsT0EzQkQsTUEyQk07QUFDTjtBQUNJO0FBQ0EsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQixLQUFqQjtBQUNIOztBQUVELGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUVELHNCQUFhO0FBQ1YsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsVUFBSSxRQUFRLEdBQUcsSUFBZjtBQUNBLFdBQUssV0FBTCxDQUFpQixTQUFqQixDQUEyQixLQUFLLFVBQUwsQ0FBZ0IsT0FBaEIsQ0FBd0IsV0FBeEIsQ0FBb0MsSUFBL0QsRUFBcUUsSUFBckUsQ0FBMEUsVUFBVSxJQUFWLEVBQWdCO0FBQ3RFLFFBQUEsUUFBUSxDQUFDLFVBQVQsQ0FBb0IsT0FBcEIsQ0FBNEIsV0FBNUIsQ0FBd0MsT0FBeEMsR0FBa0QsSUFBbEQsQ0FEc0UsQ0FFckU7O0FBQ0QsUUFBQSxRQUFRLENBQUMsV0FBVCxDQUFxQiwyQkFBckI7QUFDQSxRQUFBLFFBQVEsQ0FBQyxVQUFULENBQW9CLE9BQXBCLENBQTRCLFdBQTVCLENBQXdDLFlBQXhDLEdBQXFELElBQXJELENBSnNFLENBS3RFOztBQUNBLGVBQU8sUUFBUSxDQUFDLE9BQVQsQ0FBaUIsSUFBakIsQ0FBUCxDQU5zRSxDQU90RTtBQUNsQixPQVJGO0FBU0EsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDRjtBQUVSO0FBQ0Q7QUFDQTs7Ozs7QUF3Rkc7QUFDSDtBQUNBO0FBQ0cscUJBQVMsU0FBVCxFQUFtQixNQUFuQixFQUEwQixLQUExQixFQUFnQztBQUU3QixVQUFJLFFBQVEsR0FBRSxJQUFkO0FBQ0EsVUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLEVBQVQsQ0FBWSxLQUFaLEVBQVQ7QUFDQSxXQUFLLG9CQUFMLENBQTBCLE9BQTFCLENBQWtDLEtBQWxDLEVBQXlDLElBQXpDLENBQThDLFVBQVMsSUFBVCxFQUFlO0FBRXZELFlBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFmO0FBQ1QsUUFBQSxRQUFRLENBQUMsVUFBVCxDQUFvQixPQUFwQixDQUE0QixHQUE1QixHQUFrQyxHQUFHLENBQUMsYUFBdEM7QUFFVSxRQUFBLEVBQUUsQ0FBQyxPQUFILENBQVcsR0FBWDtBQUVKLE9BUEgsRUFPSSxVQUFTLEtBQVQsRUFBZTtBQUNiLFFBQUEsRUFBRSxDQUFDLE1BQUgsQ0FBVSxLQUFWLEVBRGEsQ0FFYjtBQUNKLE9BVkY7QUFZRSxhQUFPLEVBQUUsQ0FBQyxPQUFWO0FBQ0g7OztXQUVHLDRCQUFvQjtBQUNqQjtBQUNBO0FBQ0MsV0FBSyxRQUFMLENBQWMsTUFBZCxDQUFxQixTQUFyQixFQUhnQixDQUloQjs7QUFDQSxXQUFLLFlBQUwsQ0FBa0IsS0FBbEI7QUFDQSxXQUFLLGdCQUFMLENBQXNCLGdCQUF0QjtBQUNIOzs7Ozs7Z0JBMW1CSCxxQixhQWlCbUIsQ0FBQyxVQUFELEVBQWEsWUFBYixFQUEyQixVQUEzQixFQUFzQyxJQUF0QyxFQUEyQyxRQUEzQyxFQUFvRCxhQUFwRCxFQUFtRSxjQUFuRSxFQUFrRixrQkFBbEYsRUFBcUcsZ0JBQXJHLEVBQXNILHNCQUF0SCxDOztlQTZsQlYscUI7OztJQUVULFc7QUFFRSx1QkFBWSxFQUFaLEVBQWUsY0FBZixFQUE4QixVQUE5QixFQUNBO0FBQUE7O0FBQUEsK0NBaVVtQixZQUFVO0FBRXJCLFVBQUksR0FBRyxHQUFHLCtCQUFWO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCO0FBQUMscUJBQVksTUFBTSxDQUFDO0FBQXBCLE9BQTdCLEVBQTZELElBQTdELENBQWtFLFVBQUEsUUFBUSxFQUFHO0FBRXJFLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFFekIsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFzQixZQUFBLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBVCxDQUFjO0FBQTVDLFdBQWpCO0FBRUgsU0FKRCxNQUlPO0FBQ0gsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsSUFBSSxFQUFDLFFBQVEsQ0FBQyxJQUFmO0FBQW9CLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFwQyxXQUFoQjtBQUNIO0FBR1IsT0FYRDtBQWFaLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBRUssS0FwVkQ7O0FBQUEsMkNBc1ZVLFVBQVMsU0FBVCxFQUFtQjtBQUVyQixVQUFJLEdBQUcsR0FBRyx5QkFBVjtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNBLFVBQUksU0FBUyxJQUFFLFNBQWYsRUFBMEIsU0FBUyxHQUFDLEVBQVY7QUFDMUIsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLFNBQTdCLEVBQXdDLElBQXhDLENBQTZDLFVBQUEsUUFBUSxFQUFHO0FBRWhELFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFFekIsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFmO0FBQXFCLFlBQUEsTUFBTSxFQUFFLFFBQVEsQ0FBQztBQUF0QyxXQUFqQjtBQUVILFNBSkQsTUFJTztBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBQyxRQUFRLENBQUMsSUFBZDtBQUFtQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBbkMsV0FBaEI7QUFDSDtBQUdSLE9BWEQ7QUFhQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNQLEtBeldEOztBQUNRLFNBQUssS0FBTCxHQUFXLEVBQVg7QUFDQSxTQUFLLE1BQUwsR0FBYSxFQUFiO0FBQ0EsU0FBSyxVQUFMLEdBQWdCLENBQWhCO0FBQ0EsU0FBSyxFQUFMLEdBQVMsRUFBVDtBQUNBLFNBQUssY0FBTCxHQUFvQixjQUFwQjtBQUNBLFNBQUssVUFBTCxHQUFnQixVQUFoQjtBQUVQOzs7O1dBSUQsd0JBQWdCLFNBQWhCLEVBQTJCO0FBRW5CLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNBLFVBQUksU0FBUyxHQUFDLEtBQWQ7O0FBQ0EsVUFBSSxTQUFTLElBQUUsT0FBZixFQUF3QjtBQUFBOztBQUNoQixZQUFJLCtCQUFLLEtBQUwsMEJBQVcsS0FBSyxVQUFMLENBQWdCLE9BQWhCLENBQXdCLFdBQXhCLENBQW9DLFlBQS9DLDBEQUFXLHNCQUFrRCxFQUE3RCxpRkFBa0UsTUFBbEUsSUFBeUUsQ0FBN0UsRUFBZ0Y7QUFBQTs7QUFDeEUsVUFBQSxTQUFTLEdBQUMsSUFBVjtBQUNBLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxPQUFPLENBQUMsSUFBUixDQUFhLEtBQUssS0FBTCwyQkFBVyxLQUFLLFVBQUwsQ0FBZ0IsT0FBaEIsQ0FBd0IsV0FBeEIsQ0FBb0MsWUFBL0MsMkRBQVcsdUJBQWtELEVBQTdELENBQWIsQ0FBUDtBQUF1RixZQUFBLE1BQU0sRUFBRTtBQUEvRixXQUFqQjtBQUNQO0FBQ1I7O0FBRUQsVUFBSSxTQUFTLElBQUUsUUFBZixFQUF5QjtBQUFBOztBQUVqQixZQUFJLCtCQUFLLE1BQUwsMkJBQVksS0FBSyxVQUFMLENBQWdCLE9BQWhCLENBQXdCLFdBQXhCLENBQW9DLFlBQWhELDJEQUFZLHVCQUFrRCxFQUE5RCxpRkFBbUUsTUFBbkUsSUFBMEUsQ0FBOUUsRUFBaUY7QUFBQTs7QUFDekUsVUFBQSxTQUFTLEdBQUMsSUFBVjtBQUNBLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxPQUFPLENBQUMsSUFBUixDQUFhLEtBQUssTUFBTCwyQkFBWSxLQUFLLFVBQUwsQ0FBZ0IsT0FBaEIsQ0FBd0IsV0FBeEIsQ0FBb0MsWUFBaEQsMkRBQVksdUJBQWtELEVBQTlELENBQWIsQ0FBUDtBQUF3RixZQUFBLE1BQU0sRUFBRTtBQUFoRyxXQUFqQjtBQUNQO0FBQ1I7O0FBQ0QsVUFBSSxDQUFDLFNBQUwsRUFDQTtBQUNRLFlBQUksUUFBUSxHQUFHLElBQWY7QUFDQSxZQUFJLEdBQUcsR0FBRyxZQUFVLFNBQVYsR0FBb0IsR0FBOUI7QUFFQSxhQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsRUFBbUMsSUFBbkMsQ0FBd0MsVUFBQSxRQUFRLEVBQUc7QUFDMUMsY0FBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUF4QixFQUE2QjtBQUFBOztBQUNkLGdCQUFJLFNBQVMsSUFBRSxPQUFmLEVBQTJCLFFBQVEsQ0FBQyxLQUFULDBCQUFlLFFBQVEsQ0FBQyxVQUFULENBQW9CLE9BQXBCLENBQTRCLFdBQTVCLENBQXdDLFlBQXZELDBEQUFlLHNCQUFzRCxFQUFyRSxJQUEyRSxRQUFRLENBQUMsSUFBcEY7QUFDM0IsZ0JBQUksU0FBUyxJQUFFLFFBQWYsRUFBNEIsUUFBUSxDQUFDLE1BQVQsMkJBQWdCLFFBQVEsQ0FBQyxVQUFULENBQW9CLE9BQXBCLENBQTRCLFdBQTVCLENBQXdDLFlBQXhELDJEQUFnQix1QkFBc0QsRUFBdEUsSUFBNEUsUUFBUSxDQUFDLElBQXJGO0FBQzVCLFlBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBa0I7QUFBQyxzQkFBTyxPQUFPLENBQUMsSUFBUixDQUFhLFFBQVEsQ0FBQyxJQUF0QixDQUFSO0FBQW9DLHdCQUFTLFFBQVEsQ0FBQztBQUF0RCxhQUFsQjtBQUNkLFdBSkQsTUFJUTtBQUNELFlBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBaUI7QUFBQyxzQkFBTyxRQUFSO0FBQWlCLHdCQUFTLFFBQVEsQ0FBQztBQUFuQyxhQUFqQjtBQUNQO0FBQ1IsU0FSRDtBQVVQOztBQUVELGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ1A7OztXQUVELDZCQUFxQjtBQUViLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVBLFVBQUksR0FBRyxHQUFHLHdCQUFWO0FBQ0EsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBQ3JDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDakIsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFDLFFBQVEsQ0FBQyxJQUFmO0FBQW9CLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFwQyxXQUFqQjtBQUNILFNBRlQsTUFFZTtBQUNSLFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFQO0FBQWlCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFqQyxXQUFoQjtBQUNUO0FBQ0csT0FOVDtBQVNBLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ1A7OztXQUlELDZCQUFvQjtBQUVsQixVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDTyxVQUFJLEdBQUcsR0FBRyx3QkFBVjtBQUNELFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUNwQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXhCLEVBQTZCO0FBQ2QsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFDLFFBQVEsQ0FBQyxJQUFmO0FBQW9CLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFwQyxXQUFqQjtBQUNmLFNBRkEsTUFFTTtBQUNDLFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBc0IsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXRDLFdBQWhCO0FBQ1A7QUFDUixPQU5EO0FBUUEsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDUDs7O1dBRVAsNEJBQW1CO0FBRVgsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ08sVUFBSSxHQUFHLEdBQUcsdUJBQVY7QUFDRCxXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsQ0FBa0MsVUFBQSxRQUFRLEVBQUc7QUFDcEMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUF4QixFQUE2QjtBQUNkLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBQyxRQUFRLENBQUMsSUFBZjtBQUFvQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBcEMsV0FBakI7QUFDZixTQUZBLE1BRU07QUFDQyxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXNCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUF0QyxXQUFoQjtBQUNQO0FBQ1IsT0FORDtBQVFBLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ1A7OztXQUVELDRCQUFtQixNQUFuQixFQUEyQjtBQUV6QixVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDTSxVQUFJLEdBQUcsR0FBRyx3QkFBVjtBQUNaLFVBQUksU0FBUyxHQUFHO0FBQUMsa0JBQVU7QUFBWCxPQUFoQjtBQUNZLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE4QixTQUE5QixFQUF5QyxJQUF6QyxDQUE4QyxVQUFBLFFBQVEsRUFBRztBQUNoRCxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXhCLEVBQTZCO0FBQ2QsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFDLFFBQVEsQ0FBQyxJQUFmO0FBQW9CLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFwQyxXQUFqQjtBQUNmLFNBRkEsTUFFTTtBQUNDLFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBc0IsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXRDLFdBQWhCO0FBQ1A7QUFDUixPQU5EO0FBUUEsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDUDs7O1dBR0QsNEJBQW9CO0FBRWxCLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNPLFVBQUksR0FBRyxHQUFHLHVCQUFWO0FBQ0QsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBQ3BDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFFZCxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUMsUUFBUSxDQUFDLElBQWY7QUFBb0IsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXBDLFdBQWpCO0FBRWYsU0FKQSxNQUlNO0FBQ0MsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFzQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBdEMsV0FBaEI7QUFDUDtBQUVSLE9BVEQ7QUFXQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUVQOzs7V0FFRCwwQkFBa0IsZ0JBQWxCLEVBQW9DO0FBRWhDLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNBLFVBQUksR0FBRyxHQUFHLHVCQUFWO0FBQ0EsVUFBSSxTQUFTLEdBQUc7QUFBQyxzQkFBYTtBQUFkLE9BQWhCO0FBQ0EsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLFNBQTdCLEVBQXdDLElBQXhDLENBQTZDLFVBQUEsUUFBUSxFQUFHO0FBQ3BELFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFFekIsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFDLFFBQVEsQ0FBQyxJQUFmO0FBQW9CLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFwQyxXQUFqQjtBQUVILFNBSkQsTUFJTztBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBc0IsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXRDLFdBQWhCO0FBQ0g7QUFFSixPQVREO0FBV0EsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFFSDs7O1dBR0YsMkJBQW1CLE1BQW5CLEVBQTBCO0FBRTFCLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjs7QUFFQyxVQUFJLE1BQU0sSUFBRSxJQUFaLEVBQ0E7QUFDRSxRQUFBLE1BQU0sR0FBQyxFQUFQO0FBRUQ7O0FBQ0QsVUFBSSxLQUFLLEtBQUwsQ0FBVyxNQUFYLElBQW1CLENBQXZCLEVBQ0E7QUFDRSxhQUFLLFVBQUw7O0FBQ0EsWUFBSSxLQUFLLFVBQUwsR0FBZ0IsQ0FBcEIsRUFDQTtBQUNJLFVBQUEsY0FBYyxDQUFDLE9BQUQsQ0FBZCxDQUF3QixJQUF4QixDQUE2QixZQUFVO0FBRXhDLGdCQUFJLEdBQUcsR0FBRyxLQUFLLEtBQUwsQ0FBVyxHQUFYLENBQWUsVUFBUyxDQUFULEVBQVk7QUFBRSxxQkFBTyxDQUFDLENBQUMsRUFBRixDQUFLLFFBQUwsRUFBUDtBQUF5QixhQUF0RCxFQUF3RCxPQUF4RCxDQUFnRSxNQUFNLENBQUMsUUFBUCxFQUFoRSxDQUFWOztBQUNDLGdCQUFJLEdBQUcsSUFBRSxDQUFULEVBQ0E7QUFDRSxjQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCLEtBQUssS0FBTCxDQUFXLEdBQVgsQ0FBakI7QUFFRCxhQUpELE1BSVEsUUFBUSxDQUFDLE9BQVQsQ0FBaUIsSUFBakI7QUFFVCxXQVRDO0FBVUg7QUFFRjs7QUFDRyxVQUFJLEdBQUcsR0FBRyxLQUFLLEtBQUwsQ0FBVyxHQUFYLENBQWUsVUFBUyxDQUFULEVBQVk7QUFBRSxlQUFPLENBQUMsQ0FBQyxFQUFGLENBQUssUUFBTCxFQUFQO0FBQXlCLE9BQXRELEVBQXdELE9BQXhELENBQWdFLE1BQU0sQ0FBQyxRQUFQLEVBQWhFLENBQVY7O0FBQ0EsVUFBSSxHQUFHLElBQUUsQ0FBVCxFQUNBO0FBQ0UsUUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQixLQUFLLEtBQUwsQ0FBVyxHQUFYLENBQWpCO0FBQ0QsT0FIRCxNQUdPLFFBQVEsQ0FBQyxPQUFULENBQWlCLElBQWpCOztBQUdKLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBRVY7OztXQUVFLDRCQUFvQixPQUFwQixFQUE0QjtBQUU1QixVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7O0FBRUMsVUFBSSxPQUFPLElBQUUsSUFBYixFQUNBO0FBQ0UsUUFBQSxPQUFPLEdBQUMsRUFBUjtBQUVEOztBQUNELFVBQUksS0FBSyxNQUFMLENBQVksTUFBWixJQUFvQixDQUF4QixFQUNBO0FBQ0UsYUFBSyxVQUFMOztBQUNBLFlBQUksS0FBSyxVQUFMLEdBQWdCLENBQXBCLEVBQ0E7QUFDSSxVQUFBLE9BQU8sQ0FBQyxjQUFSLENBQXVCLFFBQXZCLEVBQWlDLElBQWpDLENBQXNDLFlBQVU7QUFFakQsZ0JBQUksR0FBRyxHQUFHLEtBQUssTUFBTCxDQUFZLEdBQVosQ0FBZ0IsVUFBUyxDQUFULEVBQVk7QUFBRSxxQkFBTyxDQUFDLENBQUMsRUFBRixDQUFLLFFBQUwsRUFBUDtBQUF5QixhQUF2RCxFQUF5RCxPQUF6RCxDQUFpRSxPQUFPLENBQUMsUUFBUixFQUFqRSxDQUFWOztBQUNDLGdCQUFJLEdBQUcsSUFBRSxDQUFULEVBQ0E7QUFDRSxjQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCLEtBQUssTUFBTCxDQUFZLEdBQVosQ0FBakI7QUFFRCxhQUpELE1BSVEsUUFBUSxDQUFDLE9BQVQsQ0FBaUIsSUFBakI7QUFFVCxXQVRDO0FBVUg7QUFFRjs7QUFDRyxVQUFJLEdBQUcsR0FBRyxLQUFLLE1BQUwsQ0FBWSxHQUFaLENBQWdCLFVBQVMsQ0FBVCxFQUFZO0FBQUUsZUFBTyxDQUFDLENBQUMsRUFBRixDQUFLLFFBQUwsRUFBUDtBQUF5QixPQUF2RCxFQUF5RCxPQUF6RCxDQUFpRSxPQUFPLENBQUMsUUFBUixFQUFqRSxDQUFWOztBQUNBLFVBQUksR0FBRyxJQUFFLENBQVQsRUFDQTtBQUNFLFFBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUIsS0FBSyxNQUFMLENBQVksR0FBWixDQUFqQjtBQUNELE9BSEQsTUFHTyxRQUFRLENBQUMsT0FBVCxDQUFpQixJQUFqQjs7QUFHSixhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUVWOzs7V0FFRDtBQUNIO0FBQ0M7QUFDTSx1QkFBVyxLQUFYLEVBQWtCO0FBRWhCLFVBQUksV0FBVyxHQUFDLE1BQWhCO0FBQ0EsVUFBSSxHQUFHLEdBQUMsb0JBQVI7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQSxVQUFJLFFBQVEsR0FBQyxJQUFiO0FBQ0EsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLEtBQTdCLEVBQW9DLElBQXBDLENBQXlDLFVBQUEsUUFBUSxFQUFHO0FBRXBDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDZixVQUFBLFFBQVEsQ0FBQyxNQUFULEdBQWlCLFFBQVEsQ0FBQyxJQUFULENBQWMsTUFBL0I7QUFDQSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQyxJQUFULENBQWM7QUFBMUMsV0FBakI7QUFDZixTQUhDLE1BR0s7QUFDUyxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxJQUFJLEVBQUMsUUFBUSxDQUFDLElBQWY7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWhCO0FBQ2Y7QUFFUixPQVRQO0FBV1MsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDVjs7O1dBRUQ7QUFDTDtBQUNLO0FBQ0EsNEJBQWdCLElBQWhCLEVBQXNCO0FBQ2QsVUFBSSxHQUFHLEdBQUMseUJBQVI7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQSxVQUFJLFFBQVEsR0FBRyxJQUFmO0FBQ0EsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLElBQTdCLEVBQW1DLElBQW5DLENBQXdDLFVBQUEsUUFBUSxFQUFHO0FBQzFDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDZCxVQUFBLFFBQVEsQ0FBQyxLQUFULEdBQWUsUUFBUSxDQUFDLElBQVQsQ0FBYyxLQUE3QjtBQUNBLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBc0IsWUFBQSxHQUFHLEVBQUMsUUFBUSxDQUFDLElBQVQsQ0FBYyxHQUF4QztBQUE2QyxZQUFBLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBVCxDQUFjO0FBQW5FLFdBQWpCO0FBRVAsU0FKUixNQUljO0FBQ0MsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsSUFBSSxFQUFDLFFBQVEsQ0FBQyxJQUFmO0FBQW9CLFlBQUEsR0FBRyxFQUFDLFFBQVEsQ0FBQyxJQUFULENBQWMsR0FBdEM7QUFBMEMsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTFELFdBQWhCO0FBQ0Q7QUFDdEIsT0FSRDtBQVVBLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ1A7OztXQUVEO0FBQ1A7QUFDTztBQUNBLHNCQUFVLElBQVYsRUFBZ0I7QUFFUixVQUFJLEdBQUcsR0FBQyxtQkFBUjtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNBLFVBQUksUUFBUSxHQUFHLElBQWY7QUFDQSxXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBNkIsSUFBN0IsRUFBbUMsSUFBbkMsQ0FBd0MsVUFBQSxRQUFRLEVBQUc7QUFFMUMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUF4QixFQUE2QjtBQUVkLFVBQUEsUUFBUSxDQUFDLEtBQVQsR0FBZSxRQUFRLENBQUMsSUFBVCxDQUFjLEtBQTdCO0FBQ0EsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFzQixZQUFBLEdBQUcsRUFBQyxRQUFRLENBQUMsSUFBVCxDQUFjLEdBQXhDO0FBQTZDLFlBQUEsTUFBTSxFQUFFLFFBQVEsQ0FBQyxJQUFULENBQWM7QUFBbkUsV0FBakI7QUFFUCxTQUxSLE1BS2M7QUFDQyxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxJQUFJLEVBQUMsUUFBUSxDQUFDLElBQWY7QUFBb0IsWUFBQSxHQUFHLEVBQUMsUUFBUSxDQUFDLElBQVQsQ0FBYyxHQUF0QztBQUEwQyxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBMUQsV0FBaEI7QUFDRDtBQUV0QixPQVhEO0FBYUcsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDVjs7O1dBQ0w7QUFDQTtBQUNJO0FBQ0EsMkJBQWUsT0FBZixFQUF3QjtBQUVoQixVQUFJLEdBQUcsR0FBQyxtQ0FBaUMsT0FBakMsR0FBeUMsR0FBakQ7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQSxVQUFJLFFBQVEsR0FBRyxJQUFmO0FBQ0EsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBRXBDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFFZCxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXNCLFlBQUEsTUFBTSxFQUFFLFFBQVEsQ0FBQyxJQUFULENBQWM7QUFBNUMsV0FBakI7QUFFUCxTQUpSLE1BSWM7QUFDQyxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxJQUFJLEVBQUMsUUFBUSxDQUFDLElBQWY7QUFBb0IsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXBDLFdBQWhCO0FBQ0Q7QUFFdEIsT0FWRDtBQVlHLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ1Y7Ozs7Ozs7O2dCQWxVSCxXLGFBYW1CLENBQUMsSUFBRCxFQUFNLGdCQUFOLEVBQXVCLFlBQXZCLEM7O0lBeVduQixNO0FBQ0Y7QUFDSSxvQkFDQTtBQUFBOztBQUNRLFNBQUssTUFBTCxHQUFjLG1FQUFkO0FBQ1A7Ozs7V0FJRCxnQkFBUSxLQUFSLEVBQWU7QUFDWCxVQUFJLE1BQU0sR0FBRyxFQUFiO0FBQ0EsVUFBSSxJQUFKO0FBQUEsVUFBVSxJQUFWO0FBQUEsVUFBZ0IsSUFBSSxHQUFHLEVBQXZCO0FBQ0EsVUFBSSxJQUFKO0FBQUEsVUFBVSxJQUFWO0FBQUEsVUFBZ0IsSUFBaEI7QUFBQSxVQUFzQixJQUFJLEdBQUcsRUFBN0I7QUFDQSxVQUFJLENBQUMsR0FBRyxDQUFSOztBQUVBLFNBQUc7QUFDQyxRQUFBLElBQUksR0FBRyxLQUFLLENBQUMsVUFBTixDQUFpQixDQUFDLEVBQWxCLENBQVA7QUFDQSxRQUFBLElBQUksR0FBRyxLQUFLLENBQUMsVUFBTixDQUFpQixDQUFDLEVBQWxCLENBQVA7QUFDQSxRQUFBLElBQUksR0FBRyxLQUFLLENBQUMsVUFBTixDQUFpQixDQUFDLEVBQWxCLENBQVA7QUFFQSxRQUFBLElBQUksR0FBRyxJQUFJLElBQUksQ0FBZjtBQUNBLFFBQUEsSUFBSSxHQUFJLENBQUMsSUFBSSxHQUFHLENBQVIsS0FBYyxDQUFmLEdBQXFCLElBQUksSUFBSSxDQUFwQztBQUNBLFFBQUEsSUFBSSxHQUFJLENBQUMsSUFBSSxHQUFHLEVBQVIsS0FBZSxDQUFoQixHQUFzQixJQUFJLElBQUksQ0FBckM7QUFDQSxRQUFBLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBZDs7QUFFQSxZQUFJLEtBQUssQ0FBQyxJQUFELENBQVQsRUFBaUI7QUFDYixVQUFBLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBZDtBQUNILFNBRkQsTUFFTyxJQUFJLEtBQUssQ0FBQyxJQUFELENBQVQsRUFBaUI7QUFDcEIsVUFBQSxJQUFJLEdBQUcsRUFBUDtBQUNIOztBQUVELFFBQUEsTUFBTSxHQUFHLE1BQU0sR0FDWCxLQUFLLE1BQUwsQ0FBWSxNQUFaLENBQW1CLElBQW5CLENBREssR0FFTCxLQUFLLE1BQUwsQ0FBWSxNQUFaLENBQW1CLElBQW5CLENBRkssR0FHTCxLQUFLLE1BQUwsQ0FBWSxNQUFaLENBQW1CLElBQW5CLENBSEssR0FJTCxLQUFLLE1BQUwsQ0FBWSxNQUFaLENBQW1CLElBQW5CLENBSko7QUFLQSxRQUFBLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQXJCO0FBQ0EsUUFBQSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBNUI7QUFDSCxPQXZCRCxRQXVCUyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BdkJuQjs7QUF5QkEsYUFBTyxNQUFQO0FBQ0g7OztXQUVELGdCQUFRLEtBQVIsRUFBZTtBQUNYLFVBQUksTUFBTSxHQUFHLEVBQWI7QUFDQSxVQUFJLElBQUo7QUFBQSxVQUFVLElBQVY7QUFBQSxVQUFnQixJQUFJLEdBQUcsRUFBdkI7QUFDQSxVQUFJLElBQUo7QUFBQSxVQUFVLElBQVY7QUFBQSxVQUFnQixJQUFoQjtBQUFBLFVBQXNCLElBQUksR0FBRyxFQUE3QjtBQUNBLFVBQUksQ0FBQyxHQUFHLENBQVIsQ0FKVyxDQU1YOztBQUNBLFVBQUksVUFBVSxHQUFHLHFCQUFqQjs7QUFDQSxVQUFJLFVBQVUsQ0FBQyxJQUFYLENBQWdCLEtBQWhCLENBQUosRUFBNEI7QUFDeEIsUUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLDhEQUNULCtEQURTLEdBRVQsNEJBRko7QUFHSDs7QUFDRCxNQUFBLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTixDQUFjLHFCQUFkLEVBQXFDLEVBQXJDLENBQVI7O0FBRUEsU0FBRztBQUNDLFFBQUEsSUFBSSxHQUFHLEtBQUssTUFBTCxDQUFZLE9BQVosQ0FBb0IsS0FBSyxDQUFDLE1BQU4sQ0FBYSxDQUFDLEVBQWQsQ0FBcEIsQ0FBUDtBQUNBLFFBQUEsSUFBSSxHQUFHLEtBQUssTUFBTCxDQUFZLE9BQVosQ0FBb0IsS0FBSyxDQUFDLE1BQU4sQ0FBYSxDQUFDLEVBQWQsQ0FBcEIsQ0FBUDtBQUNBLFFBQUEsSUFBSSxHQUFHLEtBQUssTUFBTCxDQUFZLE9BQVosQ0FBb0IsS0FBSyxDQUFDLE1BQU4sQ0FBYSxDQUFDLEVBQWQsQ0FBcEIsQ0FBUDtBQUNBLFFBQUEsSUFBSSxHQUFHLEtBQUssTUFBTCxDQUFZLE9BQVosQ0FBb0IsS0FBSyxDQUFDLE1BQU4sQ0FBYSxDQUFDLEVBQWQsQ0FBcEIsQ0FBUDtBQUVBLFFBQUEsSUFBSSxHQUFJLElBQUksSUFBSSxDQUFULEdBQWUsSUFBSSxJQUFJLENBQTlCO0FBQ0EsUUFBQSxJQUFJLEdBQUksQ0FBQyxJQUFJLEdBQUcsRUFBUixLQUFlLENBQWhCLEdBQXNCLElBQUksSUFBSSxDQUFyQztBQUNBLFFBQUEsSUFBSSxHQUFJLENBQUMsSUFBSSxHQUFHLENBQVIsS0FBYyxDQUFmLEdBQW9CLElBQTNCO0FBRUEsUUFBQSxNQUFNLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxZQUFQLENBQW9CLElBQXBCLENBQWxCOztBQUVBLFlBQUksSUFBSSxJQUFJLEVBQVosRUFBZ0I7QUFDWixVQUFBLE1BQU0sR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsSUFBcEIsQ0FBbEI7QUFDSDs7QUFDRCxZQUFJLElBQUksSUFBSSxFQUFaLEVBQWdCO0FBQ1osVUFBQSxNQUFNLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxZQUFQLENBQW9CLElBQXBCLENBQWxCO0FBQ0g7O0FBRUQsUUFBQSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFyQjtBQUNBLFFBQUEsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQTVCO0FBRUgsT0F0QkQsUUFzQlMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQXRCbkI7O0FBd0JBLGFBQU8sTUFBUDtBQUNIOzs7O0tBR1Q7O0FBRUE7OztBQ2hrQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7Ozs7Ozs7OztJQUVNLFk7QUFHSCx3QkFBYSxFQUFiLEVBQWdCLFVBQWhCLEVBQTJCLGNBQTNCLEVBQTJDO0FBQUE7O0FBRXhDLFNBQUssZUFBTCxHQUFxQixFQUFyQjtBQUNBLFNBQUssaUJBQUwsR0FBdUIsRUFBdkI7QUFDQSxTQUFLLGNBQUwsR0FBb0IsRUFBcEI7QUFDQSxTQUFLLFNBQUwsR0FBaUIsRUFBakI7QUFDQSxTQUFLLGVBQUwsR0FBdUIsS0FBdkI7QUFDQSxTQUFLLEVBQUwsR0FBUSxFQUFSO0FBQ0EsU0FBSyxVQUFMLEdBQWlCLFVBQWpCO0FBQ0MsU0FBSyxjQUFMLEdBQXNCLGNBQXRCO0FBQ0Y7Ozs7V0FJRjtBQUNGO0FBQ0E7QUFFQyx3Q0FBNEIsY0FBNUIsRUFBMkMsWUFBM0MsRUFBd0QsSUFBeEQsRUFBNkQsT0FBN0QsRUFBc0U7QUFFcEUsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsVUFBSSxPQUFPLElBQUUsU0FBYixFQUF3QixPQUFPLEdBQUMsS0FBUjs7QUFFeEIsVUFBSSxLQUFLLGlCQUFMLENBQXVCLGNBQWMsR0FBQyxJQUF0QyxLQUE4QyxTQUFsRCxFQUNFO0FBQ0UsYUFBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLEtBQUssaUJBQUwsQ0FBdUIsY0FBYyxHQUFDLElBQXRDLEVBQTRDLFNBQTVDLENBQXNELE1BQXJFLEVBQTRFLENBQUMsRUFBN0UsRUFDQTtBQUNFLGNBQUksT0FBSixFQUNBO0FBQ0EsZ0JBQUksS0FBSyxpQkFBTCxDQUF1QixjQUFjLEdBQUMsSUFBdEMsRUFBNEMsU0FBNUMsQ0FBc0QsQ0FBdEQsRUFBeUQsS0FBekQsSUFBZ0UsWUFBcEUsRUFBa0YsUUFBUSxDQUFDLE9BQVQsQ0FBaUIsS0FBSyxpQkFBTCxDQUF1QixjQUFjLEdBQUMsSUFBdEMsRUFBNEMsU0FBNUMsQ0FBc0QsQ0FBdEQsQ0FBakI7QUFDakYsV0FIRCxNQUdLO0FBQ0osZ0JBQUksS0FBSyxpQkFBTCxDQUF1QixjQUFjLEdBQUMsSUFBdEMsRUFBNEMsU0FBNUMsQ0FBc0QsQ0FBdEQsRUFBeUQsRUFBekQsSUFBNkQsWUFBakUsRUFBK0UsUUFBUSxDQUFDLE9BQVQsQ0FBaUIsS0FBSyxpQkFBTCxDQUF1QixjQUFjLEdBQUMsSUFBdEMsRUFBNEMsU0FBNUMsQ0FBc0QsQ0FBdEQsQ0FBakI7QUFDN0U7QUFDSjtBQUNGLE9BWEgsTUFhQTtBQUVHLGFBQUssY0FBTCxDQUFvQixjQUFwQixFQUFtQyxJQUFuQyxFQUF5QyxJQUF6QyxDQUE4QyxVQUFTLElBQVQsRUFBZTtBQUUxRCxlQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsS0FBSyxpQkFBTCxDQUF1QixjQUFjLEdBQUMsSUFBdEMsRUFBNEMsU0FBNUMsQ0FBc0QsTUFBckUsRUFBNEUsQ0FBQyxFQUE3RSxFQUNBO0FBQ0ssZ0JBQUksT0FBSixFQUNEO0FBQ0Usa0JBQUksS0FBSyxpQkFBTCxDQUF1QixjQUFjLEdBQUMsSUFBdEMsRUFBNEMsU0FBNUMsQ0FBc0QsQ0FBdEQsRUFBeUQsS0FBekQsSUFBZ0UsWUFBcEUsRUFBbUYsUUFBUSxDQUFDLE9BQVQsQ0FBaUIsS0FBSyxpQkFBTCxDQUF1QixjQUFjLEdBQUMsSUFBdEMsRUFBNEMsU0FBNUMsQ0FBc0QsQ0FBdEQsQ0FBakI7QUFDcEYsYUFIQSxNQUdJO0FBQ0Ysa0JBQUksS0FBSyxpQkFBTCxDQUF1QixjQUFjLEdBQUMsSUFBdEMsRUFBNEMsU0FBNUMsQ0FBc0QsQ0FBdEQsRUFBeUQsRUFBekQsSUFBNkQsWUFBakUsRUFBZ0YsUUFBUSxDQUFDLE9BQVQsQ0FBaUIsS0FBSyxpQkFBTCxDQUF1QixjQUFjLEdBQUMsSUFBdEMsRUFBNEMsU0FBNUMsQ0FBc0QsQ0FBdEQsQ0FBakI7QUFFbEY7QUFDSjs7QUFDRCxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCLEVBQWpCO0FBQ29CLFNBYnZCLEVBYXdCLFVBQVMsS0FBVCxFQUFlO0FBRWI7QUFDQSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCLEVBQWpCO0FBR3pCLFNBbkJEO0FBc0JGOztBQUVILGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0M7OztXQUlGLGtCQUFVLE9BQVYsRUFBa0IsUUFBbEIsRUFBMkI7QUFBQTs7QUFDcEIsVUFBSSxTQUFTLEdBQUMsQ0FBQyxDQUFmOztBQUNBLFVBQUksT0FBTyxJQUFJLFNBQWYsRUFBMEI7QUFDdEIsWUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmLENBRHNCLENBRXRCOztBQUNULFlBQUksSUFBSixFQUFVO0FBQ0csY0FBSSxHQUFHLEdBQUcsc0NBQXFDLE9BQXJDLEdBQTZDLEdBQTdDLEdBQWlELFFBQWpELEdBQTBELEdBQXBFO0FBRUEsZUFBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBQ3JDLGdCQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXhCLEVBQTZCO0FBQ3ZCLGtCQUFJLFlBQVksR0FBRztBQUFDLGdCQUFBLFNBQVMsRUFBRSxPQUFPLENBQUMsUUFBUixLQUFtQixRQUEvQjtBQUF5QyxnQkFBQSxFQUFFLEVBQUUsT0FBN0M7QUFBcUQsZ0JBQUEsSUFBSSxFQUFFLFFBQTNEO0FBQXFFLGdCQUFBLFNBQVMsRUFBRSxRQUFRLENBQUM7QUFBekYsZUFBbkI7QUFDQSxjQUFBLEtBQUksQ0FBQyxlQUFMLENBQXFCLE9BQU8sQ0FBQyxRQUFSLEtBQW1CLFFBQXhDLElBQW9ELFlBQXBEO0FBQ0EsY0FBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLGdCQUFBLElBQUksRUFBRSxPQUFPLENBQUMsSUFBUixDQUFhLEtBQUksQ0FBQyxlQUFMLENBQXFCLE9BQU8sQ0FBQyxRQUFSLEtBQW1CLFFBQXhDLEVBQWtELFNBQS9ELENBQVA7QUFBa0YsZ0JBQUEsTUFBTSxFQUFFLFFBQVEsQ0FBQztBQUFuRyxlQUFqQjtBQUNMLGFBSkQsTUFJTztBQUNILGNBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxnQkFBQSxJQUFJLEVBQUMsUUFBUSxDQUFDLElBQWY7QUFBcUIsZ0JBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxlQUFoQixFQURHLENBQzREO0FBQ2xFO0FBQ1IsV0FSRDtBQVVILFNBYlYsTUFhZ0I7QUFDQyxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQVIsQ0FBYSxLQUFLLGVBQUwsQ0FBcUIsT0FBTyxDQUFDLFFBQVIsS0FBbUIsUUFBeEMsRUFBa0QsU0FBL0QsQ0FBUDtBQUFpRixZQUFBLE1BQU0sRUFBQztBQUF4RixXQUFqQjtBQUNEO0FBQ1Y7O0FBQUE7QUFFQyxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNQOzs7V0FHRTtBQUNDLDRCQUFnQixTQUFoQixFQUEwQixRQUExQixFQUFtQztBQUFBOztBQUNoQyxVQUFJLFNBQVMsSUFBSSxTQUFqQixFQUE0QjtBQUV6QixZQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7O0FBQ0EsWUFBSSxDQUFDLEtBQUssaUJBQUwsQ0FBdUIsY0FBdkIsQ0FBc0MsU0FBUyxHQUFDLFFBQWhELENBQUwsRUFDQTtBQUNJLGNBQUssR0FBRyxHQUFHLDhCQUE2QixTQUE3QixHQUF1QyxHQUF2QyxHQUEyQyxRQUEzQyxHQUFvRCxHQUEvRDtBQUNBLGVBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixFQUFtQyxJQUFuQyxDQUF3QyxVQUFBLFFBQVEsRUFBRztBQUMzQyxnQkFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUF4QixFQUE2QjtBQUN2QixrQkFBSSxZQUFZLEdBQUc7QUFBQyxnQkFBQSxTQUFTLEVBQUUsU0FBUyxHQUFDLFFBQXRCO0FBQWdDLGdCQUFBLElBQUksRUFBRSxTQUF0QztBQUFnRCxnQkFBQSxJQUFJLEVBQUUsUUFBdEQ7QUFBZ0UsZ0JBQUEsU0FBUyxFQUFFLFFBQVEsQ0FBQztBQUFwRixlQUFuQjtBQUNBLGNBQUEsTUFBSSxDQUFDLGlCQUFMLENBQXVCLFNBQVMsR0FBQyxRQUFqQyxJQUE2QyxZQUE3QztBQUNBLGNBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxnQkFBQSxJQUFJLEVBQUUsTUFBSSxDQUFDLGlCQUFMLENBQXVCLFNBQVMsR0FBQyxRQUFqQyxFQUEyQyxTQUFsRDtBQUE4RCxnQkFBQSxNQUFNLEVBQUUsUUFBUSxDQUFDO0FBQS9FLGVBQWpCO0FBRUwsYUFMRCxNQUtPO0FBQ0gsY0FBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLGdCQUFBLElBQUksRUFBQyxRQUFRLENBQUMsSUFBZjtBQUFxQixnQkFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLGVBQWhCLEVBREcsQ0FDMkQ7QUFDakU7QUFFUixXQVZEO0FBWUgsU0FmRCxNQWVPO0FBQ0MsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLEtBQUssaUJBQUwsQ0FBdUIsU0FBUyxHQUFDLFFBQWpDLEVBQTJDLFNBQWxEO0FBQTRELFlBQUEsTUFBTSxFQUFDO0FBQW5FLFdBQWpCO0FBQ0Q7QUFDVDs7QUFBQTtBQUNELGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0o7OztXQUlKLHVCQUFlLE9BQWYsRUFBdUIsUUFBdkIsRUFBZ0MsUUFBaEMsRUFBeUMsSUFBekMsRUFBOEM7QUFDMUMsVUFBSSxXQUFXLEdBQUcsRUFBbEI7QUFDQSxVQUFJLE1BQU0sR0FBQyxRQUFYO0FBQ0QsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0MsTUFBQSxRQUFRLENBQUMsT0FBRCxFQUFTLFFBQVQsQ0FBUixDQUEyQixJQUEzQixDQUFnQyxVQUFVLElBQVYsRUFBZ0I7QUFDdkIsWUFBSSxJQUFJLENBQUMsTUFBTCxJQUFhLEdBQWpCLEVBQ0E7QUFDSSxVQUFBLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBbkI7O0FBRUEsZUFBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWMsQ0FBQyxHQUFDLFdBQVcsQ0FBQyxNQUE1QixFQUFtQyxDQUFDLEVBQXBDLEVBQ0E7QUFDRSxnQkFBSSxJQUFJLElBQUUsQ0FBVixFQUNBO0FBQ0Usa0JBQUksV0FBVyxDQUFDLENBQUQsQ0FBWCxDQUFlLEVBQWYsSUFBcUIsUUFBekIsRUFDQTtBQUVJLGdCQUFBLE1BQU0sR0FBRyxXQUFXLENBQUMsQ0FBRCxDQUFYLENBQWUsSUFBeEI7QUFDQTtBQUNIO0FBQ0YsYUFSRCxNQVVFO0FBQ0csa0JBQUksV0FBVyxDQUFDLENBQUQsQ0FBWCxDQUFlLEtBQWYsSUFBd0IsUUFBNUIsRUFDQTtBQUNHLGdCQUFBLE1BQU0sR0FBRyxXQUFXLENBQUMsQ0FBRCxDQUFYLENBQWUsSUFBeEI7QUFDQTtBQUNEO0FBRUo7QUFFSjs7QUFDRixVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCLE1BQWpCO0FBQ0E7QUFJdEIsT0FoQ04sRUFKMEMsQ0FxQzFDOztBQUNBLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBR0Y7OztXQUNGLDZCQUFxQixTQUFyQixFQUErQixRQUEvQixFQUF3QyxRQUF4QyxFQUFpRCxJQUFqRCxFQUFzRDtBQUNsRCxVQUFJLFdBQVcsR0FBRyxFQUFsQjtBQUNBLFVBQUksTUFBTSxHQUFDLFFBQVg7QUFDRCxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQyxXQUFLLGNBQUwsQ0FBb0IsU0FBcEIsRUFBOEIsUUFBOUIsRUFBd0MsSUFBeEMsQ0FBNkMsVUFBVSxJQUFWLEVBQWdCO0FBQ3BDLFlBQUksSUFBSSxDQUFDLE1BQUwsSUFBYSxHQUFqQixFQUNBO0FBQ0ksVUFBQSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQW5COztBQUVBLGVBQUssSUFBSSxDQUFDLEdBQUMsQ0FBWCxFQUFjLENBQUMsR0FBQyxXQUFXLENBQUMsTUFBNUIsRUFBbUMsQ0FBQyxFQUFwQyxFQUNBO0FBQ0UsZ0JBQUksSUFBSSxJQUFFLENBQVYsRUFDQTtBQUNFLGtCQUFJLFdBQVcsQ0FBQyxDQUFELENBQVgsQ0FBZSxFQUFmLElBQXFCLFFBQXpCLEVBQ0E7QUFFSSxnQkFBQSxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUQsQ0FBWCxDQUFlLElBQXhCO0FBQ0E7QUFDSDtBQUNGLGFBUkQsTUFVRTtBQUNHLGtCQUFJLFdBQVcsQ0FBQyxDQUFELENBQVgsQ0FBZSxLQUFmLElBQXdCLFFBQTVCLEVBQ0E7QUFDRyxnQkFBQSxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUQsQ0FBWCxDQUFlLElBQXhCO0FBQ0E7QUFDRDtBQUVKO0FBRUo7O0FBQ0YsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQixNQUFqQjtBQUNBO0FBSXRCLE9BaENOLEVBSmtELENBcUNsRDs7QUFDQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUdGOzs7V0FFRiwwQkFBa0IsRUFBbEIsRUFBc0IsSUFBdEIsRUFBMkI7QUFFMUIsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUUsVUFBSSxHQUFHLEdBQUcsOEJBQTRCLEVBQTVCLEdBQStCLEdBQS9CLEdBQXFDLElBQXJDLEdBQTRDLEdBQXREO0FBRUEsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBQzNDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFFNUIsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFDLElBQU47QUFBWSxZQUFBLE1BQU0sRUFBRSxRQUFRLENBQUM7QUFBN0IsV0FBakI7QUFFQSxTQUpELE1BSU87QUFDTixVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxJQUFJLEVBQUM7QUFBQyxjQUFBLEdBQUcsRUFBQyx1QkFBcUIsUUFBUSxDQUFDO0FBQW5DLGFBQU47QUFBa0QsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQWxFLFdBQWhCO0FBQ0E7QUFFQSxPQVRIO0FBV0EsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDRDs7O1dBRUQsbUJBQVcsUUFBWCxFQUFvQjtBQUVsQixVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQSxVQUFJLElBQUksR0FBQyxLQUFLLFVBQUwsQ0FBZ0IsT0FBaEIsQ0FBd0IsV0FBeEIsQ0FBb0MsSUFBN0M7QUFDQSxVQUFJLEdBQUcsR0FBRyxrQkFBZ0IsSUFBaEIsR0FBcUIsR0FBL0I7QUFFQSxXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBNkIsUUFBN0IsRUFBdUMsSUFBdkMsQ0FBNEMsVUFBQSxRQUFRLEVBQUc7QUFDL0MsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF3RDtBQUMvQyxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXNCLFlBQUEsTUFBTSxFQUFFLFFBQVEsQ0FBQztBQUF2QyxXQUFqQjtBQUNULFNBRkEsTUFFTTtBQUNHLFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBQyxLQUFMO0FBQVksWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTVCLFdBQWhCO0FBQ047QUFFTCxPQVBOO0FBU0EsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDRDs7O1dBQ0Qsa0JBQVUsUUFBVixFQUFtQjtBQUVqQixVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQyxVQUFJLElBQUksR0FBQyxLQUFLLFVBQUwsQ0FBZ0IsT0FBaEIsQ0FBd0IsV0FBeEIsQ0FBb0MsSUFBN0M7QUFDRCxVQUFJLEdBQUcsR0FBRyxrQkFBZ0IsSUFBaEIsR0FBcUIsR0FBL0I7QUFFQSxXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNEIsUUFBNUIsRUFBc0MsSUFBdEMsQ0FBMkMsVUFBQSxRQUFRLEVBQUc7QUFDOUMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF3RDtBQUNuRCxVQUFBLFFBQVEsQ0FBQyxJQUFULEdBQWdCLElBQWhCLENBQXFCLFVBQUEsSUFBSSxFQUFFO0FBQ3ZCLFlBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxjQUFBLElBQUksRUFBQyxJQUFOO0FBQVksY0FBQSxNQUFNLEVBQUUsUUFBUSxDQUFDO0FBQTdCLGFBQWpCO0FBQ0gsV0FGRDtBQUtGLFNBTkgsTUFNUztBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBQyxJQUFMO0FBQVcsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTNCLFdBQWhCO0FBQ0g7QUFFUixPQVhIO0FBYUEsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDRDs7O1dBSUEsa0JBQVUsSUFBVixFQUFlO0FBRWQsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsVUFBSSxHQUFHLEdBQUcsa0JBQWdCLElBQWhCLEdBQXFCLEdBQS9CO0FBRUUsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBQ3JDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDdEIsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFDLFFBQVEsQ0FBQyxJQUFmO0FBQXFCLFlBQUEsTUFBTSxFQUFFLFFBQVEsQ0FBQztBQUF0QyxXQUFqQjtBQUVOLFNBSEQsTUFHTztBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLElBQUksRUFBQztBQUFDLGNBQUEsR0FBRyxFQUFDLHFDQUFtQyxRQUFRLENBQUM7QUFBakQsYUFBTjtBQUFnRSxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBaEYsV0FBaEI7QUFDSDtBQUdSLE9BVEQ7QUFXRixhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNEOzs7V0FFQSxzQkFBYyxFQUFkLEVBQWlCLElBQWpCLEVBQXNCO0FBRW5CLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNBLFVBQUksR0FBRyxHQUFHLHVCQUFxQixFQUFyQixHQUF3QixHQUF4QixHQUE0QixJQUE1QixHQUFpQyxHQUEzQztBQUVBLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUNyQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXhCLEVBQTZCO0FBRXRCLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBQyxRQUFRLENBQUMsSUFBZjtBQUFxQixZQUFBLE1BQU0sRUFBRSxRQUFRLENBQUM7QUFBdEMsV0FBakI7QUFFTixTQUpELE1BSU87QUFDSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxJQUFJLEVBQUM7QUFBQyxjQUFBLEdBQUcsRUFBQyx5Q0FBdUMsUUFBUSxDQUFDO0FBQXJELGFBQU47QUFBb0UsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXBGLFdBQWhCO0FBQ0g7QUFHUixPQVZEO0FBWUEsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDRjs7O1dBRUYscUJBQVk7QUFBQTs7QUFFUixVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQSxVQUFJLElBQUksR0FBQyxLQUFLLFVBQUwsQ0FBZ0IsT0FBaEIsQ0FBd0IsV0FBeEIsQ0FBb0MsSUFBN0M7O0FBRUEsVUFBSSxLQUFLLFNBQUwsQ0FBZSxNQUFmLElBQXVCLENBQTNCLEVBQ0E7QUFDRSxhQUFLLGVBQUwsR0FBdUIsSUFBdkI7QUFDQSxZQUFJLEdBQUcsR0FBRyx1QkFBcUIsSUFBckIsR0FBMEIsR0FBcEM7QUFFQSxhQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsQ0FBa0MsVUFBQSxRQUFRLEVBQUc7QUFDdkMsY0FBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUF4QixFQUE2QjtBQUN2QixZQUFBLE1BQUksQ0FBQyxTQUFMLEdBQWlCLFFBQVEsQ0FBQyxJQUExQjtBQUNBLFlBQUEsTUFBSSxDQUFDLGVBQUwsR0FBdUIsS0FBdkI7QUFDQSxZQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsY0FBQSxJQUFJLEVBQUUsTUFBSSxDQUFDLFNBQVo7QUFBdUIsY0FBQSxNQUFNLEVBQUUsUUFBUSxDQUFDO0FBQXhDLGFBQWpCO0FBQ0wsV0FKRCxNQUtNLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxJQUFJLEVBQUM7QUFBQyxjQUFBLEdBQUcsRUFBQyxzQ0FBb0MsUUFBUSxDQUFDO0FBQWxELGFBQU47QUFBaUUsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQWpGLFdBQWhCO0FBRVYsU0FSRjtBQVVELE9BZkQsTUFlUSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFFBQUEsSUFBSSxFQUFFLEtBQUssU0FBWjtBQUF1QixRQUFBLE1BQU0sRUFBRTtBQUEvQixPQUFqQjs7QUFFUixhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FJQSwwQkFBa0IsRUFBbEIsRUFBcUI7QUFFbEIsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUEsVUFBSSxJQUFJLEdBQUMsS0FBSyxVQUFMLENBQWdCLE9BQWhCLENBQXdCLFdBQXhCLENBQW9DLElBQTdDO0FBQ0EsVUFBSSxHQUFHLEdBQUcsOEJBQTRCLEVBQTVCLEdBQStCLEdBQS9CLEdBQW1DLElBQW5DLEdBQXdDLEdBQWxEO0FBRUcsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBQ3hDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFFdkIsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFzQixZQUFBLE1BQU0sRUFBRSxRQUFRLENBQUM7QUFBdkMsV0FBakI7QUFHTCxTQUxELE1BS087QUFDSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxJQUFJLEVBQUM7QUFBQyxjQUFBLEdBQUcsRUFBQyw2Q0FBMkMsUUFBUSxDQUFDO0FBQXpELGFBQU47QUFBd0UsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXhGLFdBQWhCO0FBQ0g7QUFHTCxPQVhEO0FBYUwsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDRDs7O1dBR0EsK0JBQXVCLElBQXZCLEVBQTRCLGVBQTVCLEVBQTRDO0FBRTNDO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsVUFBSSxHQUFHLEdBQUcsMkJBQVY7QUFDQSxVQUFJLFdBQVcsR0FBQyxFQUFoQjs7QUFDQSxVQUFJLElBQUksSUFBRSxLQUFWLEVBQWlCO0FBQ1Q7QUFDQSxRQUFBLFdBQVcsR0FBQyxNQUFaO0FBQ1AsT0FIRCxNQUdPO0FBQ0wsWUFBSSxFQUFFLEdBQUUsZUFBZSxDQUFDLEVBQXhCO0FBQ0EsUUFBQSxXQUFXLEdBQUMsS0FBWjtBQUNBLFFBQUEsR0FBRyxHQUFDLEdBQUcsR0FBQyxFQUFKLEdBQU8sR0FBWDtBQUNEOztBQUVDLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixXQUE3QixFQUF5QyxlQUF6QyxFQUEwRCxJQUExRCxDQUErRCxVQUFBLFFBQVEsRUFBRztBQUNqRSxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLElBQUksSUFBRSxLQUFyQyxFQUE0QztBQUN4QztBQUVVLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLEdBQUcsRUFBQyxxQ0FBTDtBQUEyQyxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBM0QsV0FBakI7QUFFYixTQUxELE1BS00sSUFBSSxRQUFRLENBQUMsTUFBVCxJQUFpQixHQUFqQixJQUF3QixJQUFJLElBQUUsTUFBbEMsRUFBMEM7QUFFdkM7QUFDQyxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxHQUFHLEVBQUMsZ0NBQUw7QUFBc0MsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXRELFdBQWpCO0FBR1QsU0FOSyxNQU1DO0FBRUg7QUFFRyxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUMsbUJBQWlCLFFBQVEsQ0FBQyxNQUEvQjtBQUFzQyxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBdEQsV0FBaEI7QUFDTjtBQUVULE9BbkJEO0FBcUJGLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0Q7OztXQUVBLDBCQUFrQixVQUFsQixFQUE2QixZQUE3QixFQUEwQyxJQUExQyxFQUErQztBQUUxQyxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQSxVQUFJLEdBQUcsR0FBRywyQkFBVjtBQUVBLFVBQUksV0FBVyxHQUFDLE1BQWhCO0FBQ0EsTUFBQSxHQUFHLEdBQUMsR0FBRyxHQUFDLFVBQUosR0FBZSxHQUFmLEdBQW1CLElBQW5CLEdBQXdCLEdBQTVCO0FBRUEsVUFBSSxRQUFRLEdBQUcsSUFBZixDQVIwQyxDQVMxQzs7QUFFQSxXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBNkIsV0FBN0IsRUFBeUMsWUFBekMsRUFBdUQsSUFBdkQsQ0FBNEQsVUFBQSxRQUFRLEVBQUc7QUFDeEQsUUFBQSxRQUFRLENBQUMsSUFBVCxHQUFnQixJQUFoQixDQUFxQixVQUFBLElBQUksRUFBRTtBQUNyQixjQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXhCLEVBQTZCO0FBQzFCO0FBQ0E7QUFDQSxnQkFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUwsQ0FBVSxjQUExQjtBQUNBLGdCQUFJLFNBQVMsSUFBRSxTQUFYLElBQXdCLFNBQVMsSUFBRSxJQUF2QyxFQUE2QyxTQUFTLEdBQUMsRUFBVjtBQUU3QyxZQUFBLFFBQVEsQ0FBQyxlQUFULENBQXlCLFVBQVUsQ0FBQyxRQUFYLEtBQXNCLElBQS9DLElBQXVEO0FBQUMsY0FBQSxFQUFFLEVBQUMsVUFBSjtBQUFlLGNBQUEsU0FBUyxFQUFDLFVBQVUsR0FBQyxJQUFwQztBQUF5QyxjQUFBLElBQUksRUFBQyxJQUE5QztBQUFtRCxjQUFBLFNBQVMsRUFBQyxJQUFJLENBQUMsSUFBTCxDQUFVO0FBQXZFLGFBQXZEO0FBQ0EsWUFBQSxRQUFRLENBQUMsaUJBQVQsQ0FBMkIsU0FBUyxDQUFDLFFBQVYsS0FBcUIsSUFBaEQsSUFBd0Q7QUFBQyxjQUFBLElBQUksRUFBQyxTQUFOO0FBQWdCLGNBQUEsU0FBUyxFQUFDLFNBQVMsQ0FBQyxRQUFWLEtBQXFCLElBQS9DO0FBQW9ELGNBQUEsSUFBSSxFQUFDLElBQXpEO0FBQThELGNBQUEsU0FBUyxFQUFDLElBQUksQ0FBQyxJQUFMLENBQVU7QUFBbEYsYUFBeEQsQ0FQMEIsQ0FRMUI7O0FBRUEsWUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLGNBQUEsSUFBSSxFQUFDLE9BQU8sQ0FBQyxJQUFSLENBQWEsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUF2QixDQUFOO0FBQW1DLGNBQUEsR0FBRyxFQUFDLElBQUksQ0FBQyxHQUE1QztBQUFnRCxjQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBaEUsYUFBakI7QUFHSCxXQWJBLE1BYU07QUFFSDtBQUVHLFlBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxjQUFBLEdBQUcsRUFBQyxJQUFJLENBQUMsR0FBVjtBQUFjLGNBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUE5QixhQUFoQjtBQUNOO0FBQ0gsU0FwQkg7QUF3QlIsT0F6QlA7QUEyQkksYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDVDs7O1dBR0EsaUNBQXdCO0FBQUk7QUFFeEIsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0MsVUFBSSxHQUFHLEdBQUcsMEJBQVY7QUFFQyxXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsQ0FBa0MsVUFBQSxRQUFRLEVBQUc7QUFDeEMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFrQixHQUFqRCxFQUFzRDtBQUM5QyxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUMsUUFBUSxDQUFDLElBQWY7QUFBcUIsWUFBQSxNQUFNLEVBQUUsUUFBUSxDQUFDO0FBQXRDLFdBQWpCO0FBRVAsU0FIRCxNQUdPO0FBQ0gsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsSUFBSSxFQUFDO0FBQUMsY0FBQSxHQUFHLEVBQUMsa0RBQWdELFFBQVEsQ0FBQztBQUE5RCxhQUFOO0FBQTZFLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUE3RixXQUFoQjtBQUNIO0FBR0wsT0FURDtBQVdGLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUdELHlCQUFpQixFQUFqQixFQUFnRTtBQUFBLFVBQTVDLElBQTRDLHVFQUFyQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUFNO0FBQzNELFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVBLFVBQUksR0FBRyxHQUFHLDBDQUF3QyxFQUF4QyxHQUEyQyxHQUEzQyxHQUErQyxJQUEvQyxHQUFvRCxHQUE5RDtBQUVDLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUN4QyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQWtCLEdBQWpELEVBQXNEO0FBR3hDLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBQyxRQUFRLENBQUMsSUFBZjtBQUFxQixZQUFBLE1BQU0sRUFBRSxRQUFRLENBQUM7QUFBdEMsV0FBakI7QUFHYixTQU5ELE1BTU87QUFDSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxJQUFJLEVBQUM7QUFBQyxjQUFBLEdBQUcsRUFBQyw0Q0FBMEMsUUFBUSxDQUFDO0FBQXhELGFBQU47QUFBdUUsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXZGLFdBQWhCO0FBQ0g7QUFHTCxPQVpEO0FBZUQsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBR0Qsc0JBQWMsTUFBZCxFQUFxQjtBQUN0QixVQUFJLEdBQUcsR0FBRyxLQUFLLGVBQUwsQ0FBcUIsR0FBckIsQ0FBeUIsVUFBUyxDQUFULEVBQVk7QUFBRSxlQUFPLENBQUMsQ0FBQyxFQUFUO0FBQWMsT0FBckQsRUFBdUQsT0FBdkQsQ0FBK0QsTUFBL0QsQ0FBVjtBQUNBLGFBQU8sS0FBSyxlQUFMLENBQXFCLEdBQXJCLEVBQTBCLFNBQWpDO0FBQ0U7Ozs7OztnQkExZUMsWSxhQWVjLENBQUMsSUFBRCxFQUFNLFlBQU4sRUFBbUIsZ0JBQW5CLEM7O2VBK2RMLFk7Ozs7QUNwZmY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFDZSxTQUFTLGdCQUFULENBQTBCLFNBQTFCLEVBQW9DLGdCQUFwQyxFQUFxRDtBQUVoRSxTQUFPLFVBQVUsU0FBVixFQUFvQixLQUFwQixFQUNQO0FBRUksUUFBSSxPQUFPLEdBQUcsRUFBZDtBQUNBLFFBQUksS0FBSyxHQUFDLEVBQVY7O0FBQ0EsUUFBSSxPQUFPLFNBQVAsSUFBbUIsUUFBdkIsRUFDSTtBQUNJLFVBQUksYUFBYSxTQUFqQixFQUEyQjtBQUMzQixRQUFBLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBVixHQUFvQixjQUFwQixHQUFxQyxLQUFyQyxHQUE2QyxHQUF2RDtBQUNDLE9BRkQsTUFJQTtBQUNFLFFBQUEsT0FBTyxHQUFDLGVBQWUsS0FBdkI7QUFDRDs7QUFFRCxVQUFJLFdBQVcsU0FBZixFQUF5QjtBQUN6QixRQUFBLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBVixHQUFrQixjQUFsQixHQUFtQyxLQUFuQyxHQUEyQyxHQUFuRDtBQUNDO0FBRUosS0FkTCxNQWdCSTtBQUNJLE1BQUEsT0FBTyxHQUFDLFNBQVMsR0FBQyxhQUFWLEdBQTBCLEtBQWxDO0FBRUg7O0FBRUQsSUFBQSxTQUFTLENBQUMsU0FBRCxFQUFZLEtBQVosQ0FBVDtBQUVBLElBQUEsZ0JBQWdCLENBQUMsb0JBQWpCLENBQXNDLE9BQXRDLEVBQThDLEtBQTlDLEVBQW9ELE9BQXBELEVBQTRELFVBQTVEO0FBRVAsR0E5QkQ7QUErQkg7O0FBQUEsQyxDQUNEOztBQUVBLGdCQUFnQixDQUFDLE9BQWpCLEdBQTJCLENBQUMsV0FBRCxFQUFhLGtCQUFiLENBQTNCOzs7QUN4RkE7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7Ozs7Ozs7OztJQUVNLGU7QUFJSiwyQkFBWSxFQUFaLEVBQWUsVUFBZixFQUEwQixnQkFBMUIsRUFBMkMsbUJBQTNDLEVBQStELGNBQS9ELEVBQThFLFFBQTlFLEVBQ0E7QUFBQTs7QUFBQSx3Q0FtRWEsVUFBQyxXQUFELEVBQWtCO0FBQzVCLFVBQUksY0FBYyxHQUFHLE1BQU0sQ0FBQyxJQUFQLENBQVksV0FBVyxDQUFDLFFBQVosQ0FBcUIsQ0FBckIsQ0FBWixFQUFxQyxNQUExRDtBQUNBLFVBQUksUUFBUSxHQUFFLFdBQVcsQ0FBQyxRQUExQixDQUY0QixDQUVPOztBQUNuQyxVQUFJLEVBQUUsR0FBRyxXQUFXLENBQUMsWUFBckIsQ0FINEIsQ0FHTTs7QUFDbEMsYUFBUSxXQUFXLENBQUMsaUJBQVosSUFBaUMsV0FBVyxDQUFDLFVBQVosQ0FBdUIsWUFBdkIsSUFBcUMsQ0FBOUU7QUFDSCxLQXhFQTs7QUFDRSxRQUFJLEVBQUUsR0FBQyxJQUFQO0FBQ0EsU0FBSyxhQUFMLEdBQXFCLEtBQUssYUFBTCxDQUFtQixJQUFuQixDQUF3QixJQUF4QixDQUFyQjtBQUNDLFNBQUssdUJBQUwsR0FBK0IsS0FBSyx1QkFBTCxDQUE2QixJQUE3QixDQUFrQyxJQUFsQyxDQUEvQjtBQUNDLFNBQUssdUJBQUwsR0FBK0IsS0FBSyx1QkFBTCxDQUE2QixJQUE3QixDQUFrQyxJQUFsQyxDQUEvQjtBQUNDLFNBQUssMEJBQUwsR0FBa0MsS0FBSywwQkFBTCxDQUFnQyxJQUFoQyxDQUFxQyxJQUFyQyxDQUFsQztBQUdILFNBQUssRUFBTCxHQUFVLEVBQVY7QUFDQSxTQUFLLFVBQUwsR0FBa0IsVUFBbEI7QUFDQSxTQUFLLGdCQUFMLEdBQXdCLGdCQUF4QjtBQUNBLFNBQUssY0FBTCxHQUFzQixjQUF0QjtBQUNBLFNBQUssR0FBTCxHQUFXLG1CQUFYO0FBQ0EsU0FBSyxRQUFMLEdBQWdCLFFBQWhCO0FBQ0EsU0FBSyxVQUFMLEdBQWdCLEtBQWhCO0FBQ0EsU0FBSyxVQUFMLEdBQWdCLEtBQWhCO0FBQ0EsU0FBSyxZQUFMLEdBQWtCLENBQWxCO0FBQ0EsU0FBSyxhQUFMLEdBQW1CLEVBQW5CO0FBQ0EsU0FBSyxtQkFBTCxHQUF5QjtBQUNyQixNQUFBLFdBQVcsRUFBRTtBQURRLEtBQXpCO0FBR0EsU0FBSyxnQkFBTCxHQUFzQixLQUF0QjtBQUNBLFNBQUssZ0JBQUwsR0FBc0IsSUFBdEI7QUFDQSxTQUFLLG9CQUFMLEdBQTBCLEtBQTFCO0FBQ0EsU0FBSyxZQUFMLEdBQWtCLENBQWxCO0FBQ0EsU0FBSyxrQkFBTCxHQUF3QixFQUF4QjtBQUNBLFNBQUssbUJBQUwsR0FBeUIsRUFBekI7QUFDQSxTQUFLLGNBQUwsR0FBb0IsRUFBcEI7QUFDQSxTQUFLLFlBQUwsR0FBa0IsRUFBbEI7QUFDQSxTQUFLLGdCQUFMLEdBQXNCLEVBQXRCO0FBQ0EsU0FBSyxpQkFBTCxHQUF1QixFQUF2QjtBQUNBLFNBQUssaUJBQUwsR0FBdUIsS0FBdkI7QUFDQSxTQUFLLFdBQUwsR0FBbUIsS0FBbkI7QUFDQSxTQUFLLHFCQUFMLEdBQTJCLEVBQTNCO0FBQ0EsU0FBSyx1QkFBTCxHQUErQixDQUEvQjtBQUNBLFNBQUsscUJBQUwsR0FBNkIsQ0FBN0I7QUFDQSxTQUFLLG1CQUFMLEdBQXlCLEtBQXpCO0FBQ0EsU0FBSyxZQUFMLEdBQWtCLFNBQWxCO0FBQ0EsU0FBSyxXQUFMLEdBQWlCLEVBQWpCO0FBQ0EsU0FBSyxtQkFBTCxHQUF5QixFQUF6QjtBQUNBLFNBQUssUUFBTCxHQUFjLEtBQWQ7QUFDQSxTQUFLLGlCQUFMLEdBQXlCO0FBQUMsbUJBQVksSUFBYjtBQUFrQix3QkFBaUI7QUFBbkMsS0FBekI7QUFDQSxTQUFLLGdCQUFMLEdBQXNCLENBQ087QUFBQyxNQUFBLEVBQUUsRUFBQyxDQUFKO0FBQU0sTUFBQSxLQUFLLEVBQUMsbUJBQVo7QUFBZ0MsTUFBQSxJQUFJLEVBQUMsTUFBckM7QUFBNEMsTUFBQSxXQUFXLEVBQUMsTUFBeEQ7QUFBK0QsTUFBQSxLQUFLLEVBQUMsY0FBckU7QUFBb0YsTUFBQSxjQUFjLEVBQUMsSUFBbkc7QUFBd0csTUFBQSxNQUFNLEVBQUMsS0FBL0c7QUFBcUgsTUFBQSxrQkFBa0IsRUFBQyxJQUF4STtBQUE2SSxNQUFBLE1BQU0sRUFBRSxJQUFySjtBQUEwSixNQUFBLFVBQVUsRUFBRSxJQUF0SztBQUEySyxNQUFBLFFBQVEsRUFBQyxHQUFwTDtBQUF3TCxNQUFBLEdBQUcsRUFBRSxDQUE3TDtBQUErTCxNQUFBLEdBQUcsRUFBRSxDQUFwTTtBQUFzTSxNQUFBLEtBQUssRUFBRSxDQUE3TTtBQUErTSxNQUFBLEtBQUssRUFBRSxFQUF0TjtBQUEwTixNQUFBLFNBQVMsRUFBRSxJQUFyTztBQUEwTyxNQUFBLEtBQUssRUFBRSxLQUFqUDtBQUF1UCxNQUFBLFFBQVEsRUFBRSxJQUFqUTtBQUFzUSxNQUFBLE9BQU8sRUFBRSxJQUEvUTtBQUFvUixNQUFBLFVBQVUsRUFBQyxJQUEvUjtBQUFxUyxNQUFBLElBQUksRUFBRSxZQUEzUztBQUF3VCxNQUFBLE1BQU0sRUFBRSxDQUFoVTtBQUFrVSxNQUFBLFlBQVksRUFBRSxJQUFoVjtBQUFxVixNQUFBLE1BQU0sRUFBQyxRQUE1VjtBQUFxVyxNQUFBLGVBQWUsRUFBRSxJQUF0WDtBQUEyWCxNQUFBLFFBQVEsRUFBQyxRQUFwWTtBQUE2WSxNQUFBLE1BQU0sRUFBQztBQUFwWixLQURQLEVBR087QUFBQyxNQUFBLEVBQUUsRUFBQyxDQUFKO0FBQU0sTUFBQSxLQUFLLEVBQUMscUJBQVo7QUFBa0MsTUFBQSxJQUFJLEVBQUMsT0FBdkM7QUFBK0MsTUFBQSxXQUFXLEVBQUMsT0FBM0Q7QUFBbUUsTUFBQSxLQUFLLEVBQUMsV0FBekU7QUFBcUYsTUFBQSxjQUFjLEVBQUMsSUFBcEc7QUFBeUcsTUFBQSxrQkFBa0IsRUFBQyxJQUE1SDtBQUFpSSxNQUFBLE1BQU0sRUFBQyxLQUF4STtBQUE4SSxNQUFBLE1BQU0sRUFBRSxJQUF0SjtBQUE0SixNQUFBLFNBQVMsRUFBRSxJQUF2SztBQUE0SyxNQUFBLEtBQUssRUFBRSxLQUFuTDtBQUF5TCxNQUFBLFFBQVEsRUFBRSxJQUFuTTtBQUF3TSxNQUFBLE9BQU8sRUFBRSxJQUFqTjtBQUFzTixNQUFBLEtBQUssRUFBRSxDQUE3TjtBQUErTixNQUFBLFVBQVUsRUFBRSxJQUEzTztBQUFpUCxNQUFBLElBQUksRUFBRSxRQUF2UDtBQUFnUSxNQUFBLE1BQU0sRUFBRSxDQUF4UTtBQUEwUSxNQUFBLFlBQVksRUFBRSxJQUF4UjtBQUE2UixNQUFBLGVBQWUsRUFBRSxJQUE5UztBQUFtVCxNQUFBLFFBQVEsRUFBQyxxQkFBNVQ7QUFBa1YsTUFBQSxNQUFNLEVBQUMsUUFBelY7QUFBa1csTUFBQSxNQUFNLEVBQUMsTUFBelc7QUFBZ1gsTUFBQSxRQUFRLEVBQUM7QUFBelgsS0FIUCxFQUlPO0FBQUMsTUFBQSxFQUFFLEVBQUMsQ0FBSjtBQUFNLE1BQUEsS0FBSyxFQUFDLFFBQVo7QUFBcUIsTUFBQSxJQUFJLEVBQUMsUUFBMUI7QUFBbUMsTUFBQSxXQUFXLEVBQUMsUUFBL0M7QUFBd0QsTUFBQSxLQUFLLEVBQUMsY0FBOUQ7QUFBNkUsTUFBQSxjQUFjLEVBQUMsSUFBNUY7QUFBa0csTUFBQSxrQkFBa0IsRUFBQyxJQUFySDtBQUEwSCxNQUFBLFFBQVEsRUFBQyxFQUFuSTtBQUFzSSxNQUFBLFNBQVMsRUFBQyxJQUFoSjtBQUF1SixNQUFBLFVBQVUsRUFBQyxLQUFsSztBQUF5SyxNQUFBLE1BQU0sRUFBRSxJQUFqTDtBQUF1TCxNQUFBLFVBQVUsRUFBRSxJQUFuTTtBQUF3TSxNQUFBLFNBQVMsRUFBRSxJQUFuTjtBQUF3TixNQUFBLEtBQUssRUFBRSxLQUEvTjtBQUFxTyxNQUFBLFFBQVEsRUFBRSxJQUEvTztBQUFvUCxNQUFBLE9BQU8sRUFBRSxJQUE3UDtBQUFrUSxNQUFBLFVBQVUsRUFBRSxJQUE5UTtBQUFvUixNQUFBLE1BQU0sRUFBQyxNQUEzUjtBQUFrUyxNQUFBLElBQUksRUFBRSxTQUF4UztBQUFrVCxNQUFBLE1BQU0sRUFBRSxDQUExVDtBQUE0VCxNQUFBLE1BQU0sRUFBQyxRQUFuVTtBQUE0VSxNQUFBLFFBQVEsRUFBQztBQUFyVixLQUpQLENBQXRCO0FBT0EsU0FBSyxNQUFMLEdBQWM7QUFBQyxNQUFBLEVBQUUsRUFBQyxJQUFKO0FBQVMsTUFBQSxLQUFLLEVBQUMsQ0FBZjtBQUFpQixNQUFBLGFBQWEsRUFBQyxjQUEvQjtBQUE4QyxNQUFBLG9CQUFvQixFQUFDLGdCQUFuRTtBQUFvRixNQUFBLGVBQWUsRUFBQyxJQUFwRztBQUF5RyxNQUFBLEtBQUssRUFBQyxRQUEvRztBQUF3SCxNQUFBLElBQUksRUFBQyxNQUE3SDtBQUFvSSxNQUFBLFdBQVcsRUFBQyxNQUFoSjtBQUF1SixNQUFBLEtBQUssRUFBQyxlQUE3SjtBQUE2SyxNQUFBLGNBQWMsRUFBQyxJQUE1TDtBQUFpTSxNQUFBLGtCQUFrQixFQUFDLElBQXBOO0FBQXlOLE1BQUEsTUFBTSxFQUFDLEtBQWhPO0FBQXNPLE1BQUEsTUFBTSxFQUFFLElBQTlPO0FBQW9QLE1BQUEsU0FBUyxFQUFFLElBQS9QO0FBQW9RLE1BQUEsS0FBSyxFQUFFLEtBQTNRO0FBQWlSLE1BQUEsUUFBUSxFQUFFLElBQTNSO0FBQWdTLE1BQUEsT0FBTyxFQUFFLElBQXpTO0FBQThTLE1BQUEsS0FBSyxFQUFFLEVBQXJUO0FBQXdULE1BQUEsVUFBVSxFQUFFLElBQXBVO0FBQTBVLE1BQUEsSUFBSSxFQUFFLGVBQWhWO0FBQWdXLE1BQUEsTUFBTSxFQUFFLENBQXhXO0FBQTBXLE1BQUEsWUFBWSxFQUFFLElBQXhYO0FBQTZYLE1BQUEsZUFBZSxFQUFFLElBQTlZO0FBQW1aLE1BQUEsUUFBUSxFQUFDLHFCQUE1WjtBQUFrYixNQUFBLE1BQU0sRUFBQyxNQUF6YjtBQUFnYyxNQUFBLFFBQVEsRUFBQyxHQUF6YztBQUE2YyxNQUFBLFNBQVMsRUFBQyxJQUF2ZDtBQUE0ZCxNQUFBLE1BQU0sRUFBQyxRQUFuZTtBQUE0ZSxNQUFBLE1BQU0sRUFBQztBQUFuZixLQUFkO0FBRUEsU0FBSyxHQUFMLEdBQVk7QUFBQyxNQUFBLEVBQUUsRUFBQyxJQUFKO0FBQVMsTUFBQSxLQUFLLEVBQUMsQ0FBZjtBQUFpQixNQUFBLGFBQWEsRUFBQyxXQUEvQjtBQUEyQyxNQUFBLG9CQUFvQixFQUFDLGFBQWhFO0FBQThFLE1BQUEsS0FBSyxFQUFDLGtCQUFwRjtBQUF1RyxNQUFBLElBQUksRUFBQyxLQUE1RztBQUFrSCxNQUFBLFdBQVcsRUFBQyxLQUE5SDtBQUFvSSxNQUFBLEtBQUssRUFBQyxnQkFBMUk7QUFBMkosTUFBQSxjQUFjLEVBQUMsSUFBMUs7QUFBK0ssTUFBQSxNQUFNLEVBQUMsS0FBdEw7QUFBNEwsTUFBQSxrQkFBa0IsRUFBQyxJQUEvTTtBQUFvTixNQUFBLE1BQU0sRUFBRSxJQUE1TjtBQUFpTyxNQUFBLFVBQVUsRUFBRSxJQUE3TztBQUFrUCxNQUFBLFFBQVEsRUFBQyxHQUEzUDtBQUErUCxNQUFBLEdBQUcsRUFBRSxDQUFwUTtBQUFzUSxNQUFBLEdBQUcsRUFBRSxDQUEzUTtBQUE2USxNQUFBLEtBQUssRUFBRSxFQUFwUjtBQUF1UixNQUFBLEtBQUssRUFBRSxFQUE5UjtBQUFrUyxNQUFBLFNBQVMsRUFBRSxJQUE3UztBQUFrVCxNQUFBLEtBQUssRUFBRSxLQUF6VDtBQUErVCxNQUFBLFFBQVEsRUFBRSxJQUF6VTtBQUE4VSxNQUFBLE9BQU8sRUFBRSxJQUF2VjtBQUE0VixNQUFBLFVBQVUsRUFBRSxJQUF4VztBQUE4VyxNQUFBLElBQUksRUFBRSxrQkFBcFg7QUFBdVksTUFBQSxNQUFNLEVBQUUsQ0FBL1k7QUFBaVosTUFBQSxZQUFZLEVBQUUsSUFBL1o7QUFBb2EsTUFBQSxlQUFlLEVBQUUsSUFBcmI7QUFBMGIsTUFBQSxTQUFTLEVBQUMsSUFBcGM7QUFBeWMsTUFBQSxRQUFRLEVBQUMscUJBQWxkO0FBQXdlLE1BQUEsTUFBTSxFQUFDLFFBQS9lO0FBQXdmLE1BQUEsTUFBTSxFQUFDLE1BQS9mO0FBQXNnQixNQUFBLE1BQU0sRUFBQyxLQUFLLGNBQUw7QUFBN2dCLEtBQVo7QUFJQSxTQUFLLGlCQUFMLEdBQXlCO0FBQUMsTUFBQSxFQUFFLEVBQUMsSUFBSjtBQUFTLE1BQUEsS0FBSyxFQUFDLENBQWY7QUFBaUIsTUFBQSxhQUFhLEVBQUMsb0JBQS9CO0FBQW9ELE1BQUEsb0JBQW9CLEVBQUMsdUJBQXpFO0FBQWlHLE1BQUEsZUFBZSxFQUFDLElBQWpIO0FBQXNILE1BQUEsS0FBSyxFQUFDLGlCQUE1SDtBQUE4SSxNQUFBLElBQUksRUFBQyxVQUFuSjtBQUE4SixNQUFBLFdBQVcsRUFBQyxVQUExSztBQUFxTCxNQUFBLEtBQUssRUFBQyxlQUEzTDtBQUEyTSxNQUFBLGNBQWMsRUFBQyxJQUExTjtBQUErTixNQUFBLGtCQUFrQixFQUFDLElBQWxQO0FBQXVQLE1BQUEsTUFBTSxFQUFDLEtBQTlQO0FBQW9RLE1BQUEsTUFBTSxFQUFFLElBQTVRO0FBQWtSLE1BQUEsU0FBUyxFQUFFLElBQTdSO0FBQWtTLE1BQUEsS0FBSyxFQUFFLEtBQXpTO0FBQStTLE1BQUEsUUFBUSxFQUFFLElBQXpUO0FBQThULE1BQUEsT0FBTyxFQUFFLElBQXZVO0FBQTRVLE1BQUEsS0FBSyxFQUFFLEVBQW5WO0FBQXNWLE1BQUEsVUFBVSxFQUFFLElBQWxXO0FBQXdXLE1BQUEsSUFBSSxFQUFFLGlCQUE5VztBQUFnWSxNQUFBLE1BQU0sRUFBRSxDQUF4WTtBQUEwWSxNQUFBLFlBQVksRUFBRSxhQUF4WjtBQUFzYSxNQUFBLGVBQWUsRUFBRSxJQUF2YjtBQUE0YixNQUFBLFFBQVEsRUFBQyxxQkFBcmM7QUFBMmQsTUFBQSxNQUFNLEVBQUMsTUFBbGU7QUFBeWUsTUFBQSxNQUFNLEVBQUM7QUFBQyxRQUFBLElBQUksRUFBQztBQUFOLE9BQWhmO0FBQW1nQixNQUFBLFFBQVEsRUFBQyxHQUE1Z0I7QUFBZ2hCLE1BQUEsU0FBUyxFQUFDLElBQTFoQjtBQUEraEIsTUFBQSxNQUFNLEVBQUMsUUFBdGlCO0FBQStpQixNQUFBLE1BQU0sRUFBQztBQUF0akIsS0FBekI7QUFRRDs7OztXQVlDLHlCQUFnQixJQUFoQixFQUFxQjtBQUVuQixXQUFLLFFBQUwsR0FBZ0IsSUFBaEI7QUFDQSxVQUFJLFFBQVEsR0FBRyxJQUFmO0FBQ0EsTUFBQSxTQUFTLENBQUMsU0FBVixDQUFvQixTQUFwQixDQUE4QixJQUE5QixFQUFvQyxJQUFwQyxDQUNJLFlBQU07QUFDRixRQUFBLFFBQVEsQ0FBQyxRQUFULENBQWtCLFlBQVU7QUFBQyxVQUFBLFFBQVEsQ0FBQyxRQUFULEdBQW9CLEtBQXBCO0FBQTJCLFNBQXhELEVBQXlELElBQXpEO0FBQ0gsT0FITCxFQUlJLFlBQU07QUFBSztBQUNQLFFBQUEsUUFBUSxDQUFDLGdCQUFULENBQTBCLFVBQTFCLENBQXFDLDBCQUFyQyxFQUFnRSxPQUFoRTtBQUNBLFFBQUEsUUFBUSxDQUFDLFFBQVQsQ0FBa0IsWUFBVTtBQUFDLFVBQUEsUUFBUSxDQUFDLFFBQVQsR0FBb0IsS0FBcEI7QUFBMkIsU0FBeEQsRUFBeUQsSUFBekQ7QUFDUCxPQVBEO0FBU0Q7OztXQUNELHdCQUFlLEtBQWYsRUFDRDtBQUNHLFdBQUssV0FBTCxHQUFtQixzQkFBb0IsS0FBcEIsR0FBMEIsY0FBN0M7QUFDRjs7O1dBQ0EsNEJBQ0Q7QUFDRyxXQUFLLFdBQUwsR0FBbUIsRUFBbkI7QUFDRjs7O1dBS0Qsd0JBQWdCLEdBQWhCLEVBQ0E7QUFDRyxXQUFLLFVBQUwsR0FBa0IsR0FBbEI7QUFDRjs7O1dBRUQsb0JBQVksR0FBWixFQUNBO0FBQ0csV0FBSyxXQUFMLEdBQW1CLEdBQW5CO0FBQ0Y7OztXQUVDLHNCQUNGO0FBQ0MsYUFBTyxLQUFLLFdBQVo7QUFDQTs7O1dBQ0QseUJBQWlCLEdBQWpCLEVBQ0E7QUFDQyxXQUFLLFlBQUwsR0FBa0IsR0FBbEI7QUFDQTs7O1dBQ0QsNkJBQ0E7QUFDQyxhQUFPO0FBQUMsdUJBQWUsS0FBSyxZQUFMLEdBQWtCLENBQW5CLEdBQXNCO0FBQXJDLE9BQVA7QUFDQTs7O1dBQ0EseUJBQWlCLE1BQWpCLEVBQXdCLFNBQXhCLEVBRUQ7QUFDQyxVQUFJLEtBQUssR0FBSSxLQUFLLFlBQUwsR0FBa0IsTUFBbkIsR0FBMkIsSUFBdkM7QUFDQSxVQUFJLFNBQUosRUFBZSxLQUFLLEdBQUcsS0FBSyxHQUFHLGFBQWhCO0FBQ2YsYUFBTztBQUFDLGVBQU07QUFBUCxPQUFQO0FBRUE7OztXQUNBLHNDQUE2QixPQUE3QixFQUNBO0FBRUUsVUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQXhCO0FBRUEsYUFBTztBQUFDLGVBQU8sU0FBRCxHQUFZO0FBQW5CLE9BQVA7QUFFRDs7O1dBSUgsMEJBQWlCO0FBRWQsVUFBSSxXQUFXLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBUixDQUFhLEtBQUssTUFBbEIsQ0FBRCxDQUFsQjtBQUNBLE1BQUEsV0FBVyxDQUFDLENBQUQsQ0FBWCxDQUFlLEVBQWYsR0FBa0IsQ0FBbEI7QUFDQSxhQUFPLFdBQVA7QUFDRjs7O1dBR0MsZ0NBQ0Q7QUFDRSxhQUFPLEtBQUssbUJBQVo7QUFDRDs7O1dBQ0EsOEJBQXNCLFVBQXRCLEVBQ0Q7QUFDQyxXQUFLLG1CQUFMLEdBQXlCLFVBQXpCO0FBQ0EsVUFBSSxDQUFDLFVBQUwsRUFBaUIsS0FBSyxZQUFMLEdBQWtCLEVBQWxCO0FBQ2pCOzs7V0FFQSwyQkFDRDtBQUNFLGFBQU8sS0FBSyxZQUFaO0FBQ0Q7OztXQUNBLHlCQUFpQixZQUFqQixFQUNEO0FBQ0MsV0FBSyxZQUFMLEdBQWtCLFlBQWxCO0FBQ0E7OztXQUNELGdDQUF1QjtBQUV0QixhQUFPLEtBQUssaUJBQVo7QUFDQTs7O1dBQ0QsOEJBQXNCLGNBQXRCLEVBQXFDO0FBRXBDLFdBQUssaUJBQUwsR0FBdUIsY0FBdkI7QUFDQTs7O1dBQ0QsMkJBQ0E7QUFDQyxhQUFPLEtBQUssWUFBWjtBQUNBOzs7V0FFQSx5QkFBaUIsT0FBakIsRUFBeUIsV0FBekIsRUFFRDtBQUNDLFVBQUksQ0FBQyxXQUFMLEVBQWtCLFdBQVcsR0FBQyxnQkFBWjtBQUNsQixXQUFLLFlBQUwsR0FBb0IsT0FBcEI7QUFDQSxVQUFJLE1BQU0sR0FBRztBQUFDLFFBQUEsRUFBRSxFQUFDO0FBQUosT0FBYjtBQUNBLFVBQUksT0FBTyxDQUFDLE1BQVIsR0FBZSxDQUFuQixFQUFzQixNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUQsQ0FBaEIsQ0FKdkIsQ0FLQzs7QUFDQSxXQUFLLEdBQUwsQ0FBUyxhQUFULENBQXVCLFdBQXZCLEVBQW1DLGVBQW5DLEVBQW1EO0FBQUMsUUFBQSxTQUFTLEVBQUMsTUFBTSxDQUFDLEVBQWxCO0FBQXFCLFFBQUEsS0FBSyxFQUFDO0FBQTNCLE9BQW5EO0FBQ0E7OztXQUNBLCtCQUNEO0FBQ0MsYUFBTyxLQUFLLGdCQUFaO0FBQ0E7OztXQUNDLCtCQUF1QixhQUF2QixFQUNGO0FBRUMsVUFBSSxLQUFLLGtCQUFMLENBQXdCLGFBQXhCLE1BQXlDLFNBQTdDLEVBQXdELEtBQUssa0JBQUwsQ0FBd0IsYUFBeEIsSUFBdUMsRUFBdkM7QUFFeEQsYUFBTyxLQUFLLGtCQUFMLENBQXdCLGFBQXhCLENBQVA7QUFDQTs7O1dBQ0QsK0JBQXVCLE9BQXZCLEVBQStCLGFBQS9CLEVBQ0E7QUFFQyxVQUFJLE1BQU0sR0FBRztBQUFDLFFBQUEsRUFBRSxFQUFDO0FBQUosT0FBYjtBQUNBLFVBQUksT0FBTyxDQUFDLE1BQVIsR0FBZSxDQUFuQixFQUFzQixNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUQsQ0FBaEI7QUFDdEIsV0FBSyxrQkFBTCxDQUF3QixhQUF4QixJQUF5QyxPQUF6QztBQUNBLFdBQUssR0FBTCxDQUFTLGFBQVQsQ0FBdUIsYUFBYSxHQUFDLFNBQXJDLEVBQStDLGVBQS9DLEVBQStEO0FBQUMsUUFBQSxTQUFTLEVBQUMsTUFBTSxDQUFDLEVBQWxCO0FBQXFCLFFBQUEsS0FBSyxFQUFDO0FBQTNCLE9BQS9EO0FBQ0E7OztXQUVELDZCQUFxQixPQUFyQixFQUNBO0FBQ0MsV0FBSyxnQkFBTCxHQUF3QixPQUF4QjtBQUNBLFVBQUksTUFBTSxHQUFHO0FBQUMsUUFBQSxFQUFFLEVBQUM7QUFBSixPQUFiO0FBQ0EsVUFBSSxPQUFPLENBQUMsTUFBUixHQUFlLENBQW5CLEVBQXNCLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBRCxDQUFoQjtBQUN0QixXQUFLLEdBQUwsQ0FBUyxhQUFULENBQXVCLGFBQXZCLEVBQXFDLGVBQXJDLEVBQXFEO0FBQUMsUUFBQSxTQUFTLEVBQUMsTUFBTSxDQUFDLEVBQWxCO0FBQXFCLFFBQUEsS0FBSyxFQUFDO0FBQTNCLE9BQXJEO0FBQ0E7OztXQUNELDhCQUNBO0FBQ0M7QUFDQSxhQUFPLEtBQUssZUFBWjtBQUNBOzs7V0FDQSxrQ0FDRDtBQUNDLGFBQU8sS0FBSyxtQkFBWjtBQUNBOzs7O0FBRUY7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0ksMENBQStCLFdBQS9CLEVBQ0Y7QUFDRyxVQUFJLEdBQUcsR0FBRyxLQUFLLFlBQUwsQ0FBa0IsR0FBbEIsQ0FBc0IsVUFBUyxDQUFULEVBQVk7QUFBRSxlQUFPLENBQUMsQ0FBQyxXQUFUO0FBQXVCLE9BQTNELEVBQTZELE9BQTdELENBQXFFLFdBQXJFLENBQVY7O0FBQ0EsVUFBSSxHQUFHLEdBQUMsQ0FBUixFQUNEO0FBQ0csYUFBSyxnQkFBTCxDQUFzQixVQUF0QixDQUFpQyxnQ0FBOEIsV0FBOUIsR0FBMEMsYUFBM0UsRUFBeUYsT0FBekY7QUFDQSxlQUFPLEVBQVA7QUFDRixPQUpBLE1BSUk7QUFFSCxlQUFPLEtBQUssWUFBTCxDQUFrQixHQUFsQixFQUF1QixhQUE5QjtBQUNEO0FBQ0Y7OztXQUdELDZCQUFvQjtBQUNoQixhQUFPLEtBQUssVUFBWjtBQUNIOzs7V0FDQSwyQkFBbUIsZUFBbkIsRUFBbUM7QUFDaEMsV0FBSyxVQUFMLEdBQWdCLGVBQWhCO0FBQ0g7OztXQUVELHVCQUFjO0FBRVgsVUFBSSxRQUFRLEdBQUksQ0FDaEIsS0FBSyxtQkFBTCxDQUF5QixDQUF6QixDQURnQixDQUFoQjtBQUVBLGFBQU8sUUFBUDtBQUNGOzs7V0FFSCwyQkFBbUIsVUFBbkIsRUFBOEI7QUFFekIsVUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQVIsQ0FBYSxLQUFLLEdBQWxCLENBQWY7QUFDSSxNQUFBLFFBQVEsQ0FBQyxFQUFULEdBQWMsS0FBSyxlQUFMLENBQXFCLFVBQXJCLElBQWlDLENBQS9DO0FBQ0EsTUFBQSxRQUFRLENBQUMsTUFBVCxHQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFSLENBQWEsS0FBSyxvQkFBTCxDQUEwQixVQUExQixDQUFiLENBQUQsQ0FBbkI7QUFDSixhQUFPLFFBQVA7QUFDRjs7O1dBR0QsOEJBQXNCLFVBQXRCLEVBQWlDO0FBRTlCLFVBQUksV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFSLENBQWEsS0FBSyxNQUFsQixDQUFsQjtBQUNJLE1BQUEsV0FBVyxDQUFDLEVBQVosR0FBaUIsS0FBSyxlQUFMLENBQXFCLFVBQXJCLElBQWlDLENBQWxEO0FBQ0osYUFBTyxXQUFQO0FBQ0Y7OztXQUdELCtCQUFzQjtBQUVuQixVQUFJLEdBQUcsR0FBSSxPQUFPLENBQUMsSUFBUixDQUFhLEtBQUssR0FBbEIsQ0FBWDtBQUNBLE1BQUEsR0FBRyxDQUFDLEVBQUosR0FBTyxDQUFQO0FBQ0EsVUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUQsQ0FBdkI7QUFDSSxNQUFBLGdCQUFnQixDQUFDLENBQUQsQ0FBaEIsQ0FBb0IsTUFBcEIsR0FBOEIsT0FBTyxDQUFDLElBQVIsQ0FBYSxLQUFLLHNCQUFMLEVBQWIsQ0FBOUI7QUFDSixhQUFPLGdCQUFQO0FBQ0Y7OztXQUVELDRCQUFtQjtBQUVoQixVQUFJLGdCQUFnQixHQUFHLENBQUMsT0FBTyxDQUFDLElBQVIsQ0FBYSxLQUFLLEdBQWxCLENBQUQsQ0FBdkI7QUFDQSxNQUFBLGdCQUFnQixDQUFDLENBQUQsQ0FBaEIsQ0FBb0IsRUFBcEIsR0FBdUIsQ0FBdkI7QUFDQSxNQUFBLGdCQUFnQixDQUFDLENBQUQsQ0FBaEIsQ0FBb0IsTUFBcEIsR0FBOEIsT0FBTyxDQUFDLElBQVIsQ0FBYSxLQUFLLGNBQUwsRUFBYixDQUE5QjtBQUNBLGFBQU8sZ0JBQVA7QUFDRjs7O1dBRUEsbUNBQTBCO0FBRXhCLFVBQUksR0FBRyxHQUFJLE9BQU8sQ0FBQyxJQUFSLENBQWEsS0FBSyxHQUFsQixDQUFYO0FBQ0EsTUFBQSxHQUFHLENBQUMsRUFBSixHQUFPLENBQVA7QUFDQSxVQUFJLG9CQUFvQixHQUFHLENBQUMsR0FBRCxDQUEzQjtBQUNJLE1BQUEsb0JBQW9CLENBQUMsQ0FBRCxDQUFwQixDQUF3QixNQUF4QixHQUFrQyxDQUFDLE9BQU8sQ0FBQyxJQUFSLENBQWEsS0FBSyxjQUFMLEVBQWIsQ0FBRCxDQUFsQztBQUNKLGFBQU8sb0JBQVA7QUFDRjs7O1dBRUQsa0NBQXlCO0FBRXRCLFVBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFSLENBQWEsS0FBSyxjQUFMLEVBQWIsQ0FBYixDQUZzQixDQUd0QjtBQUNBO0FBQ0E7O0FBQ0EsYUFBTyxNQUFQO0FBQ0Y7OztXQUVDLG9DQUEyQjtBQUUxQjtBQUNBLFVBQUksU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFSLENBQWEsS0FBSyxpQkFBbEIsQ0FBaEIsQ0FIMEIsQ0FJMUI7O0FBQ0EsTUFBQSxTQUFTLENBQUMsRUFBVixHQUFhLENBQWIsQ0FMMEIsQ0FNMUI7O0FBQ0EsYUFBTyxTQUFQO0FBQ0Y7OztXQUVELDBCQUFpQjtBQUVkO0FBQ0EsVUFBSSxTQUFTLEdBQUc7QUFBQyxRQUFBLGdCQUFnQixFQUFDLENBQWxCO0FBQW9CLFFBQUEsWUFBWSxFQUFDLFVBQWpDO0FBQTRDLFFBQUEsSUFBSSxFQUFDLFVBQWpEO0FBQTRELFFBQUEsY0FBYyxFQUFDLElBQTNFO0FBQWdGLFFBQUEsTUFBTSxFQUFDO0FBQUMsVUFBQSxVQUFVLEVBQUM7QUFBWixTQUF2RjtBQUF5RyxRQUFBLFlBQVksRUFBQztBQUF0SCxPQUFoQixDQUhjLENBSWQ7QUFDQTtBQUNBOztBQUNBLGFBQU8sU0FBUDtBQUNGOzs7V0FFQSx5QkFBaUIsVUFBakIsRUFBNEI7QUFFekIsVUFBSSxPQUFPLEdBQUMsQ0FBWjtBQUFBLFVBQWMsR0FBRyxHQUFDLENBQWxCOztBQUNBLFdBQUssSUFBSSxDQUFDLEdBQUMsQ0FBWCxFQUFhLENBQUMsR0FBRSxVQUFVLENBQUMsTUFBM0IsRUFBa0MsQ0FBQyxFQUFuQyxFQUNBO0FBQ0UsWUFBSSxZQUFZLFVBQVUsQ0FBQyxDQUFELENBQTFCLEVBQ0E7QUFDRSxjQUFJLFVBQVUsQ0FBQyxDQUFELENBQVYsQ0FBYyxNQUFkLENBQXFCLE1BQXJCLEdBQTRCLENBQWhDLEVBQWtDO0FBRWhDLFlBQUEsT0FBTyxHQUFHLEtBQUssZUFBTCxDQUFxQixVQUFVLENBQUMsQ0FBRCxDQUFWLENBQWMsTUFBbkMsQ0FBVjtBQUNEO0FBQ0Y7O0FBQ0QsWUFBSSxRQUFRLFVBQVUsQ0FBQyxDQUFELENBQXRCLEVBQ0E7QUFDSSxjQUFHLFVBQVUsQ0FBQyxDQUFELENBQVYsQ0FBYyxFQUFkLEdBQWlCLE9BQXBCLEVBQ0E7QUFDRSxZQUFBLE9BQU8sR0FBRyxVQUFVLENBQUMsQ0FBRCxDQUFWLENBQWMsRUFBeEI7QUFDRDtBQUNKOztBQUNELFlBQUksT0FBTyxHQUFDLEdBQVosRUFDQTtBQUNFLFVBQUEsR0FBRyxHQUFDLE9BQUo7QUFFRDtBQUVGLE9BekJ3QixDQTJCekI7OztBQUVBLGFBQU8sR0FBUDtBQUNIOzs7V0FDRix3QkFBZ0IsT0FBaEIsRUFBd0I7QUFFcEIsVUFBSSxRQUFRLEdBQUcsRUFBZjs7QUFDQSxXQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsT0FBTyxDQUFDLE1BQXZCLEVBQThCLENBQUMsRUFBL0IsRUFBa0M7QUFDakMsWUFBSSxPQUFPLENBQUMsQ0FBRCxDQUFQLENBQVcsU0FBZixFQUEwQjtBQUN4QixVQUFBLFFBQVEsQ0FBQyxJQUFULENBQWMsT0FBTyxDQUFDLENBQUQsQ0FBckI7QUFDRDtBQUNEOztBQUNELGFBQU8sUUFBUDtBQUNGOzs7V0FHRCwyQkFBa0I7QUFHaEIsYUFBTyxLQUFLLFlBQVo7QUFDRDs7O1dBeUJELCtCQUFzQjtBQUdwQixhQUFPLEtBQUssZ0JBQVo7QUFDRDs7O1dBdEJDLCtCQUFzQjtBQUd0QixhQUFPLEtBQUssZ0JBQVo7QUFDRDs7O1dBRUQsaUNBQXlCLEVBQXpCLEVBQTRCO0FBRzFCLGFBQU8sS0FBSyxnQkFBTCxDQUFzQixFQUF0QixDQUFQO0FBQ0Q7OztXQUVELDZCQUFxQixFQUFyQixFQUF3QjtBQUd0QixhQUFPLEtBQUssWUFBTCxDQUFrQixFQUFsQixDQUFQO0FBQ0Q7OztXQVNILG9DQUEyQjtBQUd2QixhQUFPLEtBQUssZ0JBQVo7QUFDRDs7O1dBQ0gsa0NBQTBCLEtBQTFCLEVBQWdDO0FBRzdCLFdBQUssZ0JBQUwsR0FBc0IsS0FBdEI7QUFFQTs7O1dBQ0YsOEJBQXNCO0FBR25CLGFBQU8sS0FBSyxhQUFaO0FBQ0Q7OztXQUVBLDBCQUFrQjtBQUdqQixhQUFPLEtBQUssbUJBQVo7QUFDRDs7O1dBRUEsNkJBQXFCO0FBR3BCLGFBQU8sS0FBSyxhQUFMLENBQW1CLE1BQTFCO0FBQ0Q7OztXQUVBLHlCQUFpQjtBQUdoQixhQUFPLEtBQUssYUFBWjtBQUNEOzs7V0FFRiw2QkFBcUIsS0FBckIsRUFBMkIsTUFBM0IsRUFBa0M7QUFFaEM7QUFHQyxXQUFLLGdCQUFMLEdBQXNCLElBQXRCO0FBQ0EsV0FBSyxhQUFMLEdBQW1CLEtBQW5CO0FBRUEsV0FBSyxtQkFBTCxHQUEyQixNQUEzQjtBQUNBLFVBQUksTUFBTSxJQUFJLFNBQWQsRUFDSSxPQUFPLElBQVAsQ0FWMkIsQ0FVZDs7QUFDakIsVUFBSSxZQUFZLEtBQUssbUJBQXJCLEVBQ0ksS0FBSyxtQkFBTCxDQUF5QixXQUF6QixHQUF5QyxLQUFLLG1CQUFMLENBQXlCLE1BQXpCLENBQWdDLE1BQWhDLENBQXVDLFVBQVUsTUFBVixFQUFrQixJQUFsQixFQUF3QjtBQUNsRyxlQUFPLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTCxJQUFhLFFBQWpCLENBQWI7QUFDRCxPQUZvQyxFQUVsQyxDQUZrQyxDQUF6QztBQUdMOzs7V0FFRiw0QkFBb0IsS0FBcEIsRUFBMEIsTUFBMUIsRUFBaUM7QUFHL0IsVUFBSSxLQUFLLGFBQUwsSUFBc0IsS0FBdEIsSUFBK0IsS0FBSyxnQkFBcEMsSUFBd0QsS0FBSyxtQkFBTCxJQUE0QixNQUF4RixFQUNLLE9BSjBCLENBSW5COztBQUVaLFdBQUssbUJBQUwsR0FBMkIsTUFBM0I7QUFDQSxVQUFJLFFBQVEsR0FBRyxJQUFmO0FBQ0EsV0FBSyxnQkFBTCxHQUFzQixLQUF0QjtBQUNBLFdBQUssUUFBTCxDQUFjLFlBQVk7QUFDeEIsUUFBQSxRQUFRLENBQUMsZ0JBQVQsR0FBMEIsSUFBMUI7QUFDRCxRQUFBLFFBQVEsQ0FBQyxhQUFULEdBQXVCLEtBQXZCLENBRnlCLENBR3pCOztBQUNBLFFBQUEsUUFBUSxDQUFDLG1CQUFULEdBQStCLE1BQS9CO0FBQ0EsWUFBSSxNQUFNLElBQUksU0FBZCxFQUNJLE9BQU8sSUFBUCxDQU5xQixDQU1SOztBQUNqQixZQUFJLFlBQVksUUFBUSxDQUFDLG1CQUF6QixFQUNJLFFBQVEsQ0FBQyxtQkFBVCxDQUE2QixXQUE3QixHQUE2QyxRQUFRLENBQUMsbUJBQVQsQ0FBNkIsTUFBN0IsQ0FBb0MsTUFBcEMsQ0FBMkMsVUFBVSxNQUFWLEVBQWtCLElBQWxCLEVBQXdCO0FBQzFHLGlCQUFPLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTCxJQUFhLFFBQWpCLENBQWI7QUFDRCxTQUZ3QyxFQUV0QyxDQUZzQyxDQUE3QztBQUlKLE9BWkQ7QUFhQTs7O1dBRUYsMkJBQW1CO0FBR2hCLGFBQU8sS0FBSyxZQUFaO0FBQ0Q7OztXQUVBLHlCQUFrQixZQUFsQixFQUErQjtBQUc5QixXQUFLLFlBQUwsR0FBa0IsWUFBbEI7O0FBQ0EsVUFBSSxZQUFZLElBQUksQ0FBcEIsRUFDQTtBQUNFLGFBQUssdUJBQUwsR0FBNkIsQ0FBN0I7QUFDQSxhQUFLLHFCQUFMLEdBQTJCLENBQTNCO0FBQ0Q7QUFDRjs7O1dBSUQsZ0NBQXlCLEVBQXpCLEVBQTRCLE9BQTVCLEVBQW9DO0FBRWxDLFVBQUksS0FBSyxtQkFBTCxDQUF5QixFQUF6QixNQUErQixTQUFuQyxFQUE4QyxLQUFLLG1CQUFMLENBQXlCLEVBQXpCLElBQTZCLEVBQTdCO0FBQzlDLFVBQUksT0FBTyxDQUFDLE9BQVIsSUFBaUIsU0FBckIsRUFBZ0MsS0FBSyxtQkFBTCxDQUF5QixFQUF6QixFQUE2QixPQUE3QixHQUFxQyxPQUFPLENBQUMsT0FBN0M7QUFDaEMsVUFBSSxPQUFPLENBQUMsVUFBUixJQUFvQixTQUF4QixFQUFtQyxLQUFLLG1CQUFMLENBQXlCLEVBQXpCLEVBQTZCLFVBQTdCLEdBQXdDLE9BQU8sQ0FBQyxVQUFoRDtBQUNuQyxVQUFJLE9BQU8sQ0FBQyxTQUFSLElBQW1CLFNBQXZCLEVBQWtDLEtBQUssbUJBQUwsQ0FBeUIsRUFBekIsRUFBNkIsU0FBN0IsR0FBdUMsT0FBTyxDQUFDLFNBQS9DO0FBR25DOzs7V0FFRCw0QkFBcUIsRUFBckIsRUFBd0IsT0FBeEIsRUFBZ0M7QUFFOUIsV0FBSyxzQkFBTCxDQUE0QixFQUE1QixFQUErQixPQUEvQjtBQUdEOzs7V0FFRCxnQ0FBeUIsRUFBekIsRUFBNEI7QUFHMUIsYUFBTyxLQUFLLG1CQUFMLENBQXlCLEVBQXpCLENBQVA7QUFFRDs7O1dBRUQsb0NBQTZCLEdBQTdCLEVBQWlDO0FBQzdCLFdBQUssdUJBQUwsSUFBOEIsR0FBOUI7QUFDSDs7O1dBR0Qsa0NBQTJCLEdBQTNCLEVBQStCO0FBQzNCLFdBQUsscUJBQUwsSUFBNEIsR0FBNUI7QUFDSDs7O1dBRUYsc0NBQTZCO0FBRzFCLFdBQUssb0JBQUwsR0FBMEIsQ0FBQyxLQUFLLG9CQUFoQztBQUNGOzs7V0FFRCxtQ0FBMEI7QUFHdkIsYUFBTyxLQUFLLG9CQUFaO0FBQ0Y7OztXQUVELGlDQUF5QixLQUF6QixFQUErQjtBQUc1QixXQUFLLG9CQUFMLEdBQTBCLEtBQTFCO0FBQ0Y7OztXQUdELHVCQUFnQixJQUFoQixFQUFxQjtBQUFHO0FBRUQsVUFBSSxTQUFVLFlBQVksSUFBMUIsRUFBaUM7QUFBRTtBQUNqQyxhQUFLLGFBQUwsQ0FBbUIsTUFBbkIsR0FBMEIsU0FBMUI7QUFDQSxhQUFLLGFBQUwsR0FBbUIsRUFBbkI7QUFDQSxhQUFLLGdCQUFMLEdBQXdCLEtBQXhCO0FBQ0EsYUFBSyxvQkFBTCxHQUEwQixLQUExQjtBQUNBLGFBQUssbUJBQUwsQ0FBeUIsV0FBekI7QUFDRCxPQU5ELE1BT007QUFBRTtBQUNMLFlBQUssQ0FBQyxLQUFLLGFBQUwsQ0FBbUIsV0FBbkIsSUFBZ0MsTUFBaEMsSUFBMEMsS0FBSyxhQUFMLENBQW1CLFdBQW5CLElBQWdDLEtBQTNFLEtBQXVGLEtBQUssbUJBQUwsQ0FBeUIsV0FBekIsSUFBc0MsQ0FBbEksRUFBcUk7QUFDNUgsZUFBSyxhQUFMLENBQW1CLE1BQW5CLEdBQTBCLFNBQTFCO0FBQ0EsZUFBSyxhQUFMLEdBQW1CLEVBQW5CO0FBQ0EsZUFBSyxnQkFBTCxHQUF3QixLQUF4QjtBQUNBLGVBQUssb0JBQUwsR0FBMEIsS0FBMUI7QUFDQSxlQUFLLG1CQUFMLENBQXlCLFdBQXpCO0FBQ1IsU0FORCxNQU1PLElBQUksS0FBSyxhQUFMLENBQW1CLFdBQW5CLElBQWdDLE1BQWhDLElBQTBDLEtBQUssbUJBQUwsQ0FBeUIsV0FBekIsSUFBc0MsQ0FBcEYsRUFBdUY7QUFDMUYsZUFBSyxnQkFBTCxDQUFzQixVQUF0QixDQUFpQyx3REFBakMsRUFBMEYsT0FBMUY7QUFDSCxTQUZNLE1BRUMsSUFBSSxLQUFLLG1CQUFMLENBQXlCLFdBQXpCLEdBQXVDLENBQTNDLEVBQThDO0FBQzdDLGVBQUssYUFBTCxDQUFtQixNQUFuQixHQUEwQixTQUExQjtBQUNBLGVBQUssYUFBTCxHQUFtQixFQUFuQjtBQUNBLGVBQUssZ0JBQUwsR0FBd0IsS0FBeEI7QUFDQSxlQUFLLG9CQUFMLEdBQTBCLEtBQTFCO0FBQ0EsZUFBSyxtQkFBTCxDQUF5QixXQUF6QjtBQUNWLFNBTlMsTUFPSCxLQUFLLGdCQUFMLENBQXNCLFVBQXRCLENBQWlDLHNDQUFqQyxFQUF3RSxPQUF4RTtBQUNQO0FBRXRCOzs7V0FFRCw4QkFBc0IsR0FBdEIsRUFDQztBQUNDLFdBQUssaUJBQUwsR0FBdUIsR0FBdkI7QUFFQTs7O1dBRUQsZ0NBQXdCLEdBQXhCLEVBQTRCLGFBQTVCLEVBQ0E7QUFDQyxXQUFLLG1CQUFMLENBQXlCLGFBQXpCLElBQXdDLEdBQXhDO0FBRUE7OztXQUVDLGdDQUNGO0FBQ0MsYUFBTyxLQUFLLGlCQUFaO0FBRUE7OztXQUVIO0FBQ0E7QUFDQTs7QUFDQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVDO0FBQ0E7QUFDQTtBQUNBLDRCQUFnQixXQUFoQixFQUNEO0FBQ0ksVUFBSSxHQUFHLEdBQUcsS0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEtBQUssVUFBOUIsRUFBMEMsV0FBMUMsQ0FBVjs7QUFDQyxVQUFJLEdBQUosRUFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGFBQUssY0FBTCxDQUFvQixPQUFwQixDQUE0QixLQUFLLFVBQWpDLEVBQTZDLFdBQTdDO0FBQ0U7QUFDTjs7O1dBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQWMsV0FBZCxFQUEwQixnQkFBMUIsRUFBMkMsV0FBM0MsRUFDRDtBQUNDO0FBQ0E7QUFDRztBQUVFLFVBQUksR0FBRyxHQUFHLEtBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixLQUFLLFVBQTlCLEVBQTBDLFdBQTFDLENBQVY7O0FBQ0EsVUFBSSxDQUFDLEdBQUwsRUFBVTtBQUNQO0FBR0EsYUFBSyxjQUFMLENBQW9CLE9BQXBCLENBQTRCLEtBQUssVUFBakMsRUFBNkMsV0FBN0MsRUFBMEQ7QUFDeEMsVUFBQSxhQUFhLEVBQUUsSUFEeUI7QUFFeEMsVUFBQSxhQUFhLEVBQUUsS0FGeUI7QUFHeEMsVUFBQSxJQUFJLEVBQUMsY0FBVSxFQUFWLEVBQWEsTUFBYixFQUFvQjtBQUV2QixtQkFBTyxNQUFNLENBQUMsRUFBUCxJQUFXLGdCQUFsQjtBQUNBLFdBTnNDO0FBT3hDLFVBQUEsT0FBTyxFQUFDLGlCQUFVLEVBQVYsRUFBYSxNQUFiLEVBQXFCLE1BQXJCLEVBQTZCO0FBQ2pDLG1CQUFPLE1BQU0sQ0FBQyxFQUFQLElBQVcsZ0JBQWxCO0FBQ0gsV0FUdUM7QUFVeEMsVUFBQSxLQUFLLEVBQUUsZUFBVSxFQUFWLEVBQWMsU0FBZCxFQUF5QixNQUF6QixFQUFpQztBQUM5QixtQkFBTyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUEwQixXQUExQixDQUFQO0FBQ1Q7QUFadUMsU0FBMUQ7QUFlRixPQXpCUCxDQTBCRzs7QUFDRjs7O1dBRUE7QUFDQTtBQUNBO0FBQ0Esc0NBQTBCLE1BQTFCLEVBQWlDLFFBQWpDLEVBQTBDLEdBQTFDLEVBQThDLFNBQTlDLEVBQ0Q7QUFDRSxVQUFJLEdBQUcsR0FBRyxLQUFLLGlCQUFMLENBQXVCLEdBQXZCLENBQVY7O0FBQ0EsVUFBSSxHQUFHLElBQUUsU0FBVCxFQUNBLENBR0M7O0FBQ0QsVUFBSSxVQUFVLEdBQUcsS0FBSyxpQkFBTCxDQUF1QixHQUF2QixFQUE0QixNQUFNLEdBQUMsUUFBbkMsQ0FBakIsQ0FQRixDQVFFO0FBQ0Q7Ozs7OztnQkE1dkJLLGUsYUFxRWEsQ0FBQyxJQUFELEVBQU0sWUFBTixFQUFtQixrQkFBbkIsRUFBc0MscUJBQXRDLEVBQTRELGdCQUE1RCxFQUE2RSxVQUE3RSxDOztlQTByQkosZTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3J3QmY7QUFDQTtBQUNBO0lBRU0scUI7QUFHSixpQ0FBWSxVQUFaLEVBQXVCLEVBQXZCLEVBQTBCLGdCQUExQixFQUNBO0FBQUE7O0FBQUE7O0FBQ0ksUUFBSSxRQUFRLEdBQUcsSUFBZjtBQUNBLFNBQUssVUFBTCxHQUFpQixVQUFqQjtBQUNBLFNBQUssRUFBTCxHQUFVLEVBQVY7QUFDQSxTQUFLLGdCQUFMLEdBQXdCLGdCQUF4Qjs7QUFFRSxTQUFLLE9BQUwsR0FBZSxVQUFDLE1BQUQsRUFBWTtBQUMzQjtBQUNFLFVBQUksS0FBSSxDQUFDLFVBQUwsQ0FBZ0IsT0FBaEIsQ0FBd0IsbUJBQTVCLEVBQ0E7QUFDRSxRQUFBLEtBQUksQ0FBQyxVQUFMLENBQWdCLFVBQWhCLENBQTJCLEtBQUksQ0FBQyxnQkFBTCxDQUFzQixlQUFqRCxFQUFpRSxNQUFNLENBQUMsR0FBeEU7QUFDRDs7QUFDRCxhQUFPLE1BQVA7QUFDRCxLQVBEOztBQVNBLFNBQUssWUFBTCxHQUFvQixVQUFDLE1BQUQsRUFBWTtBQUNoQztBQUVFLFVBQUksTUFBTSxJQUFFLFNBQVosRUFDRDtBQUNFLFlBQUksS0FBSSxDQUFDLFVBQUwsQ0FBZ0IsT0FBaEIsQ0FBd0IsbUJBQTVCLEVBQ0E7QUFDRSxVQUFBLEtBQUksQ0FBQyxVQUFMLENBQWdCLFVBQWhCLENBQTJCLEtBQUksQ0FBQyxnQkFBTCxDQUFzQixhQUFqRCxFQUErRCxNQUFNLENBQUMsR0FBdEU7QUFDRDtBQUNGOztBQUNELGFBQU8sS0FBSSxDQUFDLEVBQUwsQ0FBUSxNQUFSLENBQWUsTUFBZixDQUFQO0FBQ0EsS0FYRCxDQWZOLENBNEJNOzs7QUFDQSxTQUFLLFFBQUwsR0FBZ0IsVUFBQyxRQUFELEVBQWM7QUFDOUI7QUFDQSxVQUFJLEtBQUksQ0FBQyxVQUFMLENBQWdCLE9BQWhCLENBQXdCLG1CQUE1QixFQUNBO0FBQ0UsUUFBQSxLQUFJLENBQUMsVUFBTCxDQUFnQixVQUFoQixDQUEyQixLQUFJLENBQUMsZ0JBQUwsQ0FBc0IsYUFBakQsRUFBK0QsUUFBUSxDQUFDLE1BQVQsQ0FBZ0IsR0FBL0U7QUFDRDs7QUFDRCxhQUFPLFFBQVA7QUFDQyxLQVBELENBN0JOLENBc0NNOzs7QUFDQSxTQUFLLGFBQUwsR0FBcUIsVUFBQyxTQUFELEVBQWU7QUFDcEM7QUFDRSxVQUFJLFNBQVMsSUFBRSxTQUFmLEVBQ0E7QUFDRSxZQUFJLFNBQVMsQ0FBQyxNQUFWLElBQWtCLFNBQXRCLEVBQ0E7QUFDRSxjQUFJLEtBQUksQ0FBQyxVQUFMLENBQWdCLE9BQWhCLENBQXdCLG1CQUE1QixFQUNBO0FBQ0UsWUFBQSxLQUFJLENBQUMsVUFBTCxDQUFnQixVQUFoQixDQUEyQixLQUFJLENBQUMsZ0JBQUwsQ0FBc0IsYUFBakQsRUFBK0QsU0FBUyxDQUFDLE1BQVYsQ0FBaUIsR0FBaEY7QUFDRDtBQUNGO0FBRUY7O0FBQ0QsYUFBTyxLQUFJLENBQUMsRUFBTCxDQUFRLE1BQVIsQ0FBZSxTQUFmLENBQVA7QUFDRCxLQWREO0FBZ0JMOzs7O1dBSUcsc0NBQW9DLFVBQXBDLEVBQStDLEVBQS9DLEVBQWtELGdCQUFsRCxFQUFtRTtBQUFFO0FBQ25FLGFBQU8sSUFBSSxxQkFBSixDQUEwQixVQUExQixFQUFxQyxFQUFyQyxFQUF3QyxnQkFBeEMsQ0FBUCxDQURpRSxDQUNDO0FBQ25FOzs7Ozs7Z0JBakVELHFCLGFBNkRjLENBQUMsWUFBRCxFQUFjLElBQWQsRUFBbUIsa0JBQW5CLEM7O2VBUUwscUIsRUFHZjtBQUNBO0FBQ0E7Ozs7SUFFTSxlO0FBRUosMkJBQVksRUFBWixFQUFlLFNBQWYsRUFBeUIsUUFBekIsRUFBa0MsVUFBbEMsRUFDQTtBQUFBOztBQUFBOztBQUdJLFNBQUssRUFBTCxHQUFTLEVBQVQ7QUFDQSxTQUFLLFNBQUwsR0FBZ0IsU0FBaEI7QUFDQSxTQUFLLFFBQUwsR0FBZ0IsUUFBaEI7QUFDQSxTQUFLLFVBQUwsR0FBa0IsVUFBbEIsQ0FOSixDQU9JO0FBQ0U7O0FBQ0Q7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFDUSxTQUFLLGFBQUwsR0FBcUIsVUFBQyxTQUFELEVBQWU7QUFDcEM7QUFDRSxVQUFJLFNBQVMsSUFBRSxTQUFmLEVBQ0E7QUFDRSxZQUFJLFNBQVMsQ0FBQyxNQUFWLElBQWtCLFNBQXRCLEVBQ0E7QUFDRSxjQUFJLFNBQVMsQ0FBQyxNQUFWLElBQW1CLEdBQXZCLEVBQ0E7QUFDRSxZQUFBLE1BQUksQ0FBQyxVQUFMLENBQWdCLE9BQWhCLENBQXdCLFdBQXhCLEdBQXNDO0FBQUMsY0FBQSxJQUFJLEVBQUMsT0FBTjtBQUFjLGNBQUEsbUJBQW1CLEVBQUc7QUFBcEMsYUFBdEM7O0FBQ0EsWUFBQSxNQUFJLENBQUMsUUFBTCxDQUFjLE1BQWQsQ0FBcUIsU0FBckIsRUFGRixDQUdFO0FBQ0E7OztBQUNBLFlBQUEsTUFBSSxDQUFDLFNBQUwsQ0FBZSxJQUFmLENBQW9CLFFBQXBCO0FBQ0QsV0FQRCxNQU9PLE9BQU8sTUFBSSxDQUFDLEVBQUwsQ0FBUSxNQUFSLENBQWUsU0FBZixDQUFQO0FBRVI7QUFFRjtBQUVGLEtBbkJEO0FBc0JMOzs7O1dBSUcsZ0NBQThCLEVBQTlCLEVBQWlDLFNBQWpDLEVBQTJDLFFBQTNDLEVBQW9ELFVBQXBELEVBQStEO0FBQzdELGFBQU8sSUFBSSxlQUFKLENBQW9CLEVBQXBCLEVBQXVCLFNBQXZCLEVBQWlDLFFBQWpDLEVBQTBDLFVBQTFDLENBQVA7QUFDRDs7Ozs7Ozs7Z0JBN0NELGUsYUF5Q2MsQ0FBQyxJQUFELEVBQU0sV0FBTixFQUFrQixVQUFsQixFQUE2QixZQUE3QixDOzs7QUN6SHBCO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7SUFFTSxXO0FBR0gsdUJBQWEsUUFBYixFQUFzQixFQUF0QixFQUF5QixVQUF6QixFQUFvQyxRQUFwQyxFQUE2QyxNQUE3QyxFQUFvRCxZQUFwRCxFQUFpRSxvQkFBakUsRUFBc0YsZ0JBQXRGLEVBQXVHLFdBQXZHLEVBQW1ILGNBQW5ILEVBQW1JO0FBQUE7O0FBQUEsMkNBd1pwSCxVQUFTLEVBQVQsRUFDaEI7QUFDSyxhQUFRLEVBQUUsQ0FBQyxjQUFILENBQWtCLFNBQWxCLElBQTZCLEtBQUssYUFBbEMsS0FBb0QsRUFBRSxDQUFDLGNBQUgsSUFBbUIsS0FBSyxhQUF4QixJQUF5QyxFQUFFLENBQUMsY0FBSCxDQUFrQixTQUFsQixJQUE2QixrQkFBMUgsQ0FBUjtBQUNKLEtBM1ptSTs7QUFHckk7QUFDQTtBQUNBO0FBQ0UsUUFBTSxPQUFPLEdBQUc7QUFDakIsTUFBQSxHQURpQixlQUNiLE1BRGEsRUFDTCxJQURLLEVBQ0MsS0FERCxFQUNTO0FBQ3RCLFFBQUEsT0FBTyxDQUFDLEdBQVIsK0JBQW1DLElBQW5DLG1CQUFnRCxNQUFNLENBQUMsSUFBRCxDQUF0RCxpQkFBbUUsS0FBbkU7QUFDRixRQUFBLE1BQU0sQ0FBQyxJQUFELENBQU4sR0FBZSxLQUFmO0FBQ0EsZUFBTyxJQUFQO0FBQ0MsT0FMYztBQU1kLE1BQUEsR0FOYyxlQU1WLE1BTlUsRUFNRixHQU5FLEVBTUc7QUFDbEIsZUFBTyxNQUFNLENBQUMsR0FBRCxDQUFiO0FBQ0U7QUFSYSxLQUFoQjtBQVlHLFNBQUssUUFBTCxHQUFnQixFQUFoQjtBQUNBLFNBQUssU0FBTCxHQUFpQixFQUFqQjtBQUNBLFNBQUssUUFBTCxHQUFnQixFQUFoQjtBQUNBLFNBQUssTUFBTCxHQUFjLEVBQWQ7QUFDQSxTQUFLLFdBQUwsR0FBbUIsRUFBbkIsQ0F0QmdJLENBdUJoSTs7QUFDQSxTQUFLLFNBQUwsR0FBaUIsRUFBakI7QUFDQSxTQUFLLFdBQUwsR0FBbUIsRUFBbkI7QUFDQSxTQUFLLGVBQUwsR0FBcUIsSUFBckI7QUFDQSxTQUFLLGFBQUwsR0FBbUIsSUFBbkI7QUFDQSxTQUFLLGFBQUwsR0FBbUIsSUFBbkI7QUFDQSxTQUFLLGtCQUFMLEdBQXdCLElBQXhCO0FBQ0EsU0FBSyxXQUFMLEdBQWlCLElBQWpCO0FBQ0EsU0FBSyxVQUFMLEdBQWdCLElBQWhCO0FBQ0EsU0FBSyxVQUFMLEdBQWdCLElBQWhCO0FBQ0EsU0FBSyxXQUFMLEdBQW1CLEtBQW5CO0FBQ0EsU0FBSyxRQUFMLEdBQWdCLEtBQWhCO0FBQ0EsU0FBSyxXQUFMLEdBQW1CLEtBQW5CO0FBQ0EsU0FBSyxhQUFMLEdBQW1CLElBQW5CO0FBQ0EsU0FBSyxjQUFMLEdBQXNCLElBQXRCO0FBQ0EsU0FBSyxnQkFBTCxHQUF3QixJQUF4QjtBQUNBLFNBQUssY0FBTCxHQUFzQixLQUF0QjtBQUNBLFNBQUssZ0JBQUwsR0FBd0IsS0FBeEI7QUFDQSxTQUFLLFFBQUwsR0FBYyxRQUFkO0FBQ0EsU0FBSyxFQUFMLEdBQVEsRUFBUjtBQUNBLFNBQUssVUFBTCxHQUFpQixVQUFqQjtBQUNBLFNBQUssWUFBTCxHQUFvQixZQUFwQjtBQUNBLFNBQUssV0FBTCxHQUFtQixXQUFuQjtBQUNBLFNBQUssb0JBQUwsR0FBNEIsb0JBQTVCO0FBQ0EsU0FBSyxnQkFBTCxHQUF3QixnQkFBeEI7QUFDQSxTQUFLLFFBQUwsR0FBZ0IsUUFBaEI7QUFDQSxTQUFLLE1BQUwsR0FBYyxNQUFkO0FBQ0EsU0FBSyxjQUFMLEdBQXNCLGNBQXRCO0FBQ0EsU0FBSyxlQUFMLEdBQXFCLEtBQXJCO0FBQ0EsU0FBSyxRQUFMLEdBQWMsRUFBZDtBQUNBLFNBQUssVUFBTCxHQUFnQixLQUFoQjtBQUNBLFNBQUssV0FBTCxHQUFpQixFQUFqQjtBQUNEOzs7O1dBS0YsMEJBQ0E7QUFDQyxXQUFLLFdBQUwsR0FBbUIsQ0FDZjtBQUNJLHNCQUFjLEdBRGxCO0FBRUksd0JBQWdCLGFBRnBCO0FBR0ksNEJBQW9CLENBSHhCO0FBSUksMEJBQWtCO0FBQ2Qsb0JBQVUsTUFESTtBQUVkLHVCQUFhO0FBRkMsU0FKdEI7QUFRSSw4QkFBc0IsR0FSMUI7QUFTSSx3QkFBZ0IsYUFUcEI7QUFVSSwwQkFBa0IsR0FWdEI7QUFXSSx5QkFBaUIsQ0FYckI7QUFZSSwwQkFBa0IsSUFadEI7QUFhSSxpQ0FBeUIsRUFiN0I7QUFjSSxnQ0FBd0IsVUFkNUI7QUFlSSxvQ0FBNEIsR0FmaEM7QUFnQkksMEJBQWtCLE1BaEJ0QjtBQWlCSSx1QkFBZSxJQWpCbkI7QUFrQkksd0JBQWdCLElBbEJwQjtBQW1CSSxzQkFBYyxFQW5CbEI7QUFvQkksMEJBQWtCLHdCQXBCdEI7QUFxQkksMEJBQWtCLElBckJ0QjtBQXNCSSxvQ0FBNEIsRUF0QmhDO0FBdUJJLCtCQUF1QixHQXZCM0I7QUF3QkksNEJBQW9CLEdBeEJ4QjtBQXlCSSx5Q0FBaUMsQ0F6QnJDO0FBMEJJLHlDQUFpQyxDQTFCckM7QUEyQkksb0NBQTRCLEVBM0JoQztBQTRCSSx5Q0FBaUMsVUE1QnJDO0FBNkJJLGdDQUF3QixJQTdCNUI7QUE4QkksNkJBQXFCO0FBOUJ6QixPQURlLEVBa0NmO0FBQ0ksc0JBQWMsR0FEbEI7QUFFSSx3QkFBZ0IsT0FGcEI7QUFHSSw0QkFBb0IsQ0FIeEI7QUFJSSwwQkFBa0I7QUFDZCxvQkFBVSxNQURJO0FBRWQsdUJBQWE7QUFGQyxTQUp0QjtBQVFJLDhCQUFzQixHQVIxQjtBQVNJLHdCQUFnQixhQVRwQjtBQVVJLDBCQUFrQixHQVZ0QjtBQVdJLHlCQUFpQixDQVhyQjtBQVlJLDBCQUFrQixJQVp0QjtBQWFJLGlDQUF5QixFQWI3QjtBQWNJLGdDQUF3QixVQWQ1QjtBQWVJLG9DQUE0QixHQWZoQztBQWdCSSwwQkFBa0IsTUFoQnRCO0FBaUJJLHVCQUFlLElBakJuQjtBQWtCSSx3QkFBZ0IsSUFsQnBCO0FBbUJJLHNCQUFjLEVBbkJsQjtBQW9CSSwwQkFBa0Isa0JBcEJ0QjtBQXFCSSwwQkFBa0IsSUFyQnRCO0FBc0JJLG9DQUE0QixFQXRCaEM7QUF1QkksK0JBQXVCLEdBdkIzQjtBQXdCSSw0QkFBb0IsR0F4QnhCO0FBeUJJLHlDQUFpQyxDQXpCckM7QUEwQkkseUNBQWlDLENBMUJyQztBQTJCSSxvQ0FBNEIsRUEzQmhDO0FBNEJJLHlDQUFpQyxVQTVCckM7QUE2QkksZ0NBQXdCLElBN0I1QjtBQThCSSw2QkFBcUI7QUE5QnpCLE9BbENlLEVBa0VmO0FBQ0ksc0JBQWMsR0FEbEI7QUFFSSx3QkFBZ0Isa0JBRnBCO0FBR0ksNEJBQW9CLENBSHhCO0FBSUksMEJBQWtCO0FBQ2Qsb0JBQVU7QUFESSxTQUp0QjtBQU9JLDhCQUFzQixHQVAxQjtBQVFJLG1DQUEyQiw2QkFSL0I7QUFTSSxtQ0FBMkIsNkJBVC9CO0FBVUksZ0NBQXdCLENBVjVCO0FBV0ksZ0NBQXdCLENBWDVCO0FBWUksd0JBQWdCLGFBWnBCO0FBYUksMEJBQWtCLEdBYnRCO0FBY0kseUJBQWlCLENBZHJCO0FBZUksMEJBQWtCLElBZnRCO0FBZ0JJLGlDQUF5QixFQWhCN0I7QUFpQkksZ0NBQXdCLFVBakI1QjtBQWtCSSw2QkFBcUIsSUFsQnpCO0FBbUJJLG9DQUE0QixHQW5CaEM7QUFvQkksMEJBQWtCLE9BcEJ0QjtBQXFCSSwrQkFBdUIsQ0FyQjNCO0FBc0JJLDZCQUFxQixDQXRCekI7QUF1QkksK0JBQXVCLENBdkIzQjtBQXdCSSx1QkFBZSxJQXhCbkI7QUF5Qkksd0JBQWdCLElBekJwQjtBQTBCSSxzQkFBYyxFQTFCbEI7QUEyQkksMEJBQWtCLHVCQTNCdEI7QUE0QkksMEJBQWtCLElBNUJ0QjtBQTZCSSxvQ0FBNEIsR0E3QmhDO0FBOEJJLGdDQUF3QixJQTlCNUI7QUErQkksbUNBQTJCLElBL0IvQjtBQWdDSSxnQ0FBd0IsSUFoQzVCO0FBaUNJLG1DQUEyQixJQWpDL0I7QUFrQ0ksK0JBQXVCLEdBbEMzQjtBQW1DSSw0QkFBb0IsR0FuQ3hCO0FBb0NJLG1DQUEyQixFQXBDL0I7QUFxQ0ksaUNBQXlCLEtBckM3QjtBQXNDSSx5Q0FBaUMsQ0F0Q3JDO0FBdUNJLHlDQUFpQyxDQXZDckM7QUF3Q0ksbUNBQTJCLElBeEMvQjtBQXlDSSxxQ0FBNkIsS0F6Q2pDO0FBMENJLHNDQUE4QixJQTFDbEM7QUEyQ0kseUNBQWlDLElBM0NyQztBQTRDSSxzQ0FBOEIsQ0E1Q2xDO0FBNkNJLHlDQUFpQyw2QkE3Q3JDO0FBOENJLHNDQUE4QixJQTlDbEM7QUErQ0ksb0NBQTRCLENBL0NoQztBQWdESSxvQ0FBNEIsRUFoRGhDO0FBaURJLGlDQUF5QixDQWpEN0I7QUFrREkseUNBQWlDLFVBbERyQztBQW1ESSxnQ0FBd0IsSUFuRDVCO0FBb0RJLDZCQUFxQjtBQXBEekIsT0FsRWUsRUF3SGY7QUFDSSxzQkFBYyxHQURsQjtBQUVJLHdCQUFnQixXQUZwQjtBQUdJLDRCQUFvQixDQUh4QjtBQUlJLDBCQUFrQjtBQUNkLG9CQUFVLE1BREk7QUFFZCx1QkFBYTtBQUZDLFNBSnRCO0FBUUksOEJBQXNCLEdBUjFCO0FBU0ksd0JBQWdCLFlBVHBCO0FBVUksMEJBQWtCLEdBVnRCO0FBV0kseUJBQWlCLENBWHJCO0FBWUksMEJBQWtCLElBWnRCO0FBYUksaUNBQXlCLENBYjdCO0FBY0ksZ0NBQXdCLFFBZDVCO0FBZUksNkJBQXFCLElBZnpCO0FBZ0JJLG9DQUE0QixHQWhCaEM7QUFpQkksMEJBQWtCLE1BakJ0QjtBQWtCSSx1QkFBZSxJQWxCbkI7QUFtQkksd0JBQWdCLElBbkJwQjtBQW9CSSxzQkFBYyxDQXBCbEI7QUFxQkksMEJBQWtCLGlCQXJCdEI7QUFzQkksMEJBQWtCLElBdEJ0QjtBQXVCSSxvQ0FBNEIsRUF2QmhDO0FBd0JJLCtCQUF1QixHQXhCM0I7QUF5QkksNEJBQW9CLEdBekJ4QjtBQTBCSSx5Q0FBaUMsQ0ExQnJDO0FBMkJJLHlDQUFpQyxDQTNCckM7QUE0Qkksb0NBQTRCLEVBNUJoQztBQTZCSSxpQ0FBeUIsQ0E3QjdCO0FBOEJJLHlDQUFpQyxVQTlCckM7QUErQkksZ0NBQXdCLElBL0I1QjtBQWdDSSw2QkFBcUI7QUFoQ3pCLE9BeEhlLEVBMkpmO0FBQ0ksc0JBQWMsR0FEbEI7QUFFSSx3QkFBZ0IsUUFGcEI7QUFHSSw0QkFBb0IsQ0FIeEI7QUFJSSwwQkFBa0I7QUFDZCxvQkFBVSxNQURJO0FBRWQsdUJBQWE7QUFGQyxTQUp0QjtBQVFJLDhCQUFzQixHQVIxQjtBQVNJLHdCQUFnQixjQVRwQjtBQVVJLDBCQUFrQixHQVZ0QjtBQVdJLHlCQUFpQixDQVhyQjtBQVlJLDBCQUFrQixJQVp0QjtBQWFJLGlDQUF5QixFQWI3QjtBQWNJLGdDQUF3QixVQWQ1QjtBQWVJLDZCQUFxQixJQWZ6QjtBQWdCSSxvQ0FBNEIsR0FoQmhDO0FBaUJJLDBCQUFrQixNQWpCdEI7QUFrQkksK0JBQXVCLENBbEIzQjtBQW1CSSw2QkFBcUIsQ0FuQnpCO0FBb0JJLCtCQUF1QixDQXBCM0I7QUFxQkksdUJBQWUsSUFyQm5CO0FBc0JJLHdCQUFnQixJQXRCcEI7QUF1Qkksc0JBQWMsRUF2QmxCO0FBd0JJLDBCQUFrQixtQkF4QnRCO0FBeUJJLDBCQUFrQixJQXpCdEI7QUEwQkksb0NBQTRCLEVBMUJoQztBQTJCSSwrQkFBdUIsR0EzQjNCO0FBNEJJLDRCQUFvQixHQTVCeEI7QUE2QkkseUNBQWlDLENBN0JyQztBQThCSSx5Q0FBaUMsQ0E5QnJDO0FBK0JJLG9DQUE0QixFQS9CaEM7QUFnQ0kseUNBQWlDLFVBaENyQztBQWlDSSxnQ0FBd0IsSUFqQzVCO0FBa0NJLDZCQUFxQjtBQWxDekIsT0EzSmUsRUFnTWY7QUFDSSxzQkFBYyxHQURsQjtBQUVJLHdCQUFnQixPQUZwQjtBQUdJLDRCQUFvQixDQUh4QjtBQUlJLDBCQUFrQjtBQUNkLG9CQUFVLE9BREk7QUFFZCx1QkFBYTtBQUZDLFNBSnRCO0FBUUksOEJBQXNCLEdBUjFCO0FBU0ksd0JBQWdCLGdCQVRwQjtBQVVJLDBCQUFrQixHQVZ0QjtBQVdJLHlCQUFpQixDQVhyQjtBQVlJLDBCQUFrQixJQVp0QjtBQWFJLGlDQUF5QixFQWI3QjtBQWNJLGdDQUF3QixVQWQ1QjtBQWVJLDZCQUFxQixJQWZ6QjtBQWdCSSxvQ0FBNEIsR0FoQmhDO0FBaUJJLDBCQUFrQixPQWpCdEI7QUFrQkksdUJBQWUsSUFsQm5CO0FBbUJJLHdCQUFnQixJQW5CcEI7QUFvQkksc0JBQWMsRUFwQmxCO0FBcUJJLDBCQUFrQix1QkFyQnRCO0FBc0JJLDBCQUFrQixJQXRCdEI7QUF1Qkksb0NBQTRCLEdBdkJoQztBQXdCSSxnQ0FBd0IsSUF4QjVCO0FBeUJJLG1DQUEyQixJQXpCL0I7QUEwQkksZ0NBQXdCLElBMUI1QjtBQTJCSSxtQ0FBMkIsSUEzQi9CO0FBNEJJLCtCQUF1QixHQTVCM0I7QUE2QkksNEJBQW9CLEdBN0J4QjtBQThCSSxtQ0FBMkIsRUE5Qi9CO0FBK0JJLGlDQUF5QixLQS9CN0I7QUFnQ0kseUNBQWlDLENBaENyQztBQWlDSSx5Q0FBaUMsQ0FqQ3JDO0FBa0NJLG9DQUE0QixDQWxDaEM7QUFtQ0ksb0NBQTRCLEVBbkNoQztBQW9DSSx5Q0FBaUMsVUFwQ3JDO0FBcUNJLGdDQUF3QixJQXJDNUI7QUFzQ0ksNkJBQXFCO0FBdEN6QixPQWhNZSxFQXdPZjtBQUNJLHNCQUFjLEdBRGxCO0FBRUksd0JBQWdCLFVBRnBCO0FBR0ksNEJBQW9CLENBSHhCO0FBSUksMEJBQWtCO0FBQ2Qsb0JBQVU7QUFESSxTQUp0QjtBQU9JLDhCQUFzQixHQVAxQjtBQVFJLHdCQUFnQixZQVJwQjtBQVNJLDBCQUFrQixHQVR0QjtBQVVJLHlCQUFpQixDQVZyQjtBQVdJLDBCQUFrQixJQVh0QjtBQVlJLGlDQUF5QixFQVo3QjtBQWFJLGdDQUF3QixhQWI1QjtBQWNJLG9DQUE0QixHQWRoQztBQWVJLDBCQUFrQixJQWZ0QjtBQWdCSSx1QkFBZSxJQWhCbkI7QUFpQkksd0JBQWdCLElBakJwQjtBQWtCSSxzQkFBYyxFQWxCbEI7QUFtQkksMEJBQWtCLFdBbkJ0QjtBQW9CSSwwQkFBa0IsSUFwQnRCO0FBcUJJLG9DQUE0QixFQXJCaEM7QUFzQkksK0JBQXVCLElBdEIzQjtBQXVCSSw0QkFBb0IsR0F2QnhCO0FBd0JJLG1DQUEyQixFQXhCL0I7QUF5QkksaUNBQXlCLEtBekI3QjtBQTBCSSx5Q0FBaUMsQ0ExQnJDO0FBMkJJLHlDQUFpQyxDQTNCckM7QUE0Qkksb0NBQTRCLEVBNUJoQztBQTZCSSxpQ0FBeUIsQ0E3QjdCO0FBOEJJLHlDQUFpQyxVQTlCckM7QUErQkksZ0NBQXdCLElBL0I1QjtBQWdDSSw2QkFBcUI7QUFoQ3pCLE9BeE9lLENBQW5CO0FBMlFBOzs7V0FFRCw0QkFDQTtBQUNLLFdBQUssV0FBTCxHQUFpQixFQUFqQjtBQUNKOzs7V0FFRCx5QkFBZ0IsSUFBaEIsRUFDQTtBQUNLLFVBQUksS0FBSyxXQUFMLENBQWlCLE1BQWpCLElBQXlCLENBQXpCLElBQThCLElBQWxDLEVBQXdDO0FBQUE7O0FBQ3BDLGFBQUssY0FBTDtBQUNBLFlBQUkseUJBQUMsS0FBSyxRQUFMLENBQWMsT0FBZCxDQUFELGdEQUFDLG9CQUF3QixLQUF6QixDQUFKLEVBQW9DLEtBQUssUUFBTCxDQUFjLE9BQWQsSUFBeUI7QUFBQyxVQUFBLEtBQUssRUFBQyxLQUFLO0FBQVosU0FBekI7QUFDcEMsYUFBSyxXQUFMLEdBQW1CLEtBQUssUUFBTCxDQUFjLE9BQWQsQ0FBbkIsQ0FIb0MsQ0FJckM7O0FBQ1IsYUFBSyxrQkFBTCxDQUF3QixLQUFLLG1CQUFMLENBQXlCLENBQXpCLEVBQTJCLENBQTNCLEVBQTZCLElBQTdCLEVBQWtDLENBQWxDLEVBQW9DLENBQXBDLENBQXhCO0FBQ007QUFDTDs7O1dBRUQsNEJBQW1CLFFBQW5CLEVBQ0E7QUFDRSxXQUFLLFdBQUwsR0FBbUIsUUFBbkI7QUFDRDs7O1dBRUQscUJBQVksT0FBWixFQUFvQixZQUFwQixFQUFpQyxLQUFqQyxFQUF1QyxNQUF2QyxFQUNBO0FBQ0csVUFBSSxLQUFLLFFBQUwsQ0FBYyxFQUFkLElBQW9CLE9BQXBCLElBQStCLEtBQUssUUFBTCxDQUFjLE9BQWQsSUFBeUIsWUFBNUQsRUFBeUU7QUFDdkUsYUFBSyxRQUFMLENBQWMsRUFBZCxHQUFpQixPQUFqQjtBQUNBLGFBQUssUUFBTCxDQUFjLE9BQWQsR0FBc0IsWUFBdEI7QUFDQSxhQUFLLFFBQUwsQ0FBYyxLQUFkLEdBQXNCLEtBQXRCO0FBQ0EsYUFBSyxRQUFMLENBQWMsTUFBZCxHQUF1QixNQUF2QjtBQUNEO0FBQ0g7OztXQUVBLHlCQUFnQjtBQUNiLFdBQUssUUFBTCxHQUFjLEVBQWQ7QUFDSDs7O1dBRUEsdUJBQWMsR0FBZCxFQUFtQjtBQUNoQixXQUFLLFVBQUwsR0FBZ0IsR0FBaEI7QUFDSDs7O1dBQ0EsMkJBQWtCO0FBQ2YsV0FBSyxVQUFMLEdBQWdCLEtBQWhCO0FBQ0g7OztXQUVBLCtCQUFzQixPQUF0QixFQUE4QjtBQUM3QixXQUFLLGVBQUwsR0FBcUIsT0FBckI7QUFDRDs7O1dBRUQsaUNBQXVCO0FBQ3JCLGFBQU8sS0FBSyxlQUFaO0FBQ0Q7OztXQUVILG9DQUEyQjtBQUN2QixXQUFLLGVBQUwsR0FBcUIsQ0FBQyxLQUFLLGVBQTNCO0FBQ0Q7OztXQUdELDJCQUFrQjtBQUNsQixhQUFPLEtBQUssUUFBWjtBQUNDOzs7V0FFRCwyQkFBa0I7QUFDbEIsYUFBTyxLQUFLLGFBQVo7QUFDQzs7O1dBRUQsOEJBQXFCO0FBQ2xCLFdBQUssYUFBTCxHQUFtQixDQUFDLEtBQUssYUFBekI7QUFDRjs7O1dBRUQseUJBQWlCLFNBQWpCLEVBQTJCO0FBQ3hCLFdBQUssUUFBTCxHQUFjLFNBQWQ7QUFDQSxXQUFLLGNBQUwsR0FBc0IsS0FBdEI7QUFDQSxXQUFLLGdCQUFMLEdBQXdCLEtBQXhCO0FBQ0Y7OztXQUVGLDZCQUFtQjtBQUNsQixhQUFPLEtBQUssY0FBWjtBQUNEOzs7V0FPRSw4QkFBcUI7QUFDaEIsYUFBTyxLQUFLLGVBQVo7QUFDTjs7O1dBSUQsNEJBQW9CLFFBQXBCLEVBQTZCLFFBQTdCLEVBQXNDO0FBRS9CLFVBQUksQ0FBQyxLQUFLLGNBQU4sSUFBd0IsS0FBSyxnQkFBakMsRUFBbUQsS0FBSyxXQUFMLEdBQWlCLElBQWpCO0FBQ25ELFdBQUssZUFBTCxHQUFxQixRQUFyQjtBQUVBLFdBQUssZ0JBQUwsR0FBd0IsS0FBeEI7QUFDQSxXQUFLLGtCQUFMLEdBQTBCLElBQTFCO0FBQ0EsVUFBSSxLQUFLLGVBQUwsSUFBc0IsSUFBMUIsRUFBZ0MsS0FBSyxjQUFMLEdBQXNCLElBQXRCO0FBR2hDLFVBQUksSUFBSSxHQUFDLENBQVQ7QUFDQSxVQUFJLEtBQUssUUFBVCxFQUFtQixJQUFJLEdBQUMsQ0FBTDtBQUNuQixXQUFLLDBCQUFMLENBQWdDLFFBQWhDLEVBQXlDLElBQXpDO0FBQ0EsVUFBSSxJQUFJLEdBQUcsSUFBWDtBQUNBLFdBQUssUUFBTCxDQUFjLFlBQVU7QUFDckIsUUFBQSxJQUFJLENBQUMsV0FBTCxHQUFpQixLQUFqQjtBQUNGLE9BRkQ7QUFHUDs7O1dBRUUsd0NBQ0g7QUFDUSxVQUFJLENBQUosRUFBTSxDQUFOOztBQUNBLFdBQUssQ0FBQyxHQUFDLENBQVAsRUFBUyxDQUFDLEdBQUMsS0FBSyxXQUFMLENBQWlCLE1BQTVCLEVBQW1DLENBQUMsRUFBcEMsRUFDQTtBQUNNLFlBQUksS0FBSyxXQUFMLENBQWlCLENBQWpCLEVBQW9CLFVBQXBCLElBQWtDLEtBQUssZ0JBQUwsQ0FBc0IsY0FBNUQsRUFDQTtBQUNHLGVBQUssQ0FBQyxHQUFDLENBQVAsRUFBUyxDQUFDLEdBQUMsS0FBSyxXQUFMLENBQWlCLENBQWpCLEVBQW9CLFNBQXBCLENBQThCLE1BQXpDLEVBQWdELENBQUMsRUFBakQsRUFDQTtBQUNHLGdCQUFJLEtBQUssV0FBTCxDQUFpQixDQUFqQixFQUFvQixTQUFwQixDQUE4QixDQUE5QixFQUFpQyxVQUFqQyxJQUErQyxLQUFLLGtCQUF4RCxFQUNBO0FBRUcsbUJBQUssV0FBTCxDQUFpQixDQUFqQixFQUFvQixTQUFwQixDQUE4QixDQUE5QixJQUFtQyxLQUFLLGdCQUF4QztBQUNBO0FBQ0Y7QUFDSDtBQUNIO0FBQ047QUFFUDs7O1dBR0csMkJBQW1CLE1BQW5CLEVBQTBCO0FBRXhCLFdBQUssY0FBTCxHQUFvQixNQUFwQjtBQUNBLFdBQUssZUFBTCxHQUFxQixNQUFyQixhQUFxQixNQUFyQix1QkFBcUIsTUFBTSxDQUFFLFVBQTdCO0FBQ0EsV0FBSyxhQUFMLEdBQW1CLE1BQW5CLGFBQW1CLE1BQW5CLHVCQUFtQixNQUFNLENBQUUsY0FBM0I7QUFDQSxXQUFLLGFBQUwsR0FBbUIsTUFBbkIsYUFBbUIsTUFBbkIsdUJBQW1CLE1BQU0sQ0FBRSxpQkFBM0I7QUFDQSxXQUFLLG1CQUFMLENBQXlCLElBQXpCO0FBRUw7OztXQUVDLDRCQUFvQixNQUFwQixFQUEyQixPQUEzQixFQUFtQztBQUUvQixXQUFLLGFBQUwsR0FBbUIsTUFBbkI7QUFDQSxXQUFLLGFBQUwsR0FBbUIsT0FBbkI7QUFFSDs7O1dBRUEsc0NBQThCLE1BQTlCLEVBQXFDLE1BQXJDLEVBQTRDO0FBRXpDLFdBQUssYUFBTCxHQUFtQixNQUFuQjtBQUNBLFVBQUksQ0FBQSxNQUFNLFNBQU4sSUFBQSxNQUFNLFdBQU4sWUFBQSxNQUFNLENBQUUsTUFBUixLQUFnQixTQUFwQixFQUErQixLQUFLLGFBQUwsR0FBbUIsTUFBbkIsYUFBbUIsTUFBbkIsdUJBQW1CLE1BQU0sQ0FBRSxNQUEzQjtBQUVsQzs7O1dBRUMsZ0NBQXVCO0FBRXBCLFVBQUksQ0FBSjs7QUFDQSxXQUFLLENBQUMsR0FBQyxDQUFQLEVBQVMsQ0FBQyxHQUFDLEtBQUssV0FBTCxDQUFpQixNQUE1QixFQUFtQyxDQUFDLEVBQXBDLEVBQXdDO0FBQ2xDLFlBQUksS0FBSyxXQUFMLENBQWlCLENBQWpCLEVBQW9CLFVBQXBCLElBQWtDLEtBQUssY0FBTCxDQUFvQixVQUExRCxFQUNBO0FBQ0ssZUFBSyxXQUFMLENBQWlCLENBQWpCLElBQXFCLEtBQUssY0FBMUI7QUFDQTtBQUNKO0FBQ047QUFDUjs7O1dBRUcsbUJBQVcsUUFBWCxFQUFvQixLQUFwQixFQUEwQjtBQUV0QixXQUFLLFdBQUwsQ0FBaUIsS0FBakIsY0FBZ0MsSUFBaEM7QUFDQSxVQUFJLEtBQUssV0FBTCxDQUFpQixDQUFqQixFQUFvQixVQUFwQixLQUFtQyxJQUF2QyxFQUE2QyxLQUFLLFdBQUwsQ0FBaUIsQ0FBakIsRUFBb0IsTUFBcEIsQ0FBMkIsS0FBM0IsRUFBaUMsQ0FBakMsRUFBN0MsS0FDSztBQUNGLGFBQUssQ0FBQyxHQUFDLENBQVAsRUFBUyxDQUFDLEdBQUMsS0FBSyxXQUFMLENBQWlCLE1BQTVCLEVBQW1DLENBQUMsRUFBcEMsRUFBd0M7QUFDbEMsY0FBSSxLQUFLLFdBQUwsQ0FBaUIsQ0FBakIsRUFBb0IsVUFBcEIsSUFBa0MsUUFBdEMsRUFDQTtBQUNHLGlCQUFLLFdBQUwsQ0FBaUIsQ0FBakIsY0FBNEIsSUFBNUI7QUFDQztBQUNIO0FBQ047QUFDSDtBQUNSOzs7V0FFSSxnQ0FBdUIsUUFBdkIsRUFBZ0M7QUFFN0IsVUFBSSxDQUFKOztBQUNBLFdBQUssQ0FBQyxHQUFDLENBQVAsRUFBUyxDQUFDLEdBQUMsS0FBSyxXQUFMLENBQWlCLE1BQTVCLEVBQW1DLENBQUMsRUFBcEMsRUFDQTtBQUNNLFlBQUksS0FBSyxXQUFMLENBQWlCLENBQWpCLEVBQW9CLFVBQXBCLElBQWtDLEtBQUssZUFBM0MsRUFDQTtBQUVTLGVBQUssV0FBTCxDQUFpQixDQUFqQixFQUFvQixTQUFwQixDQUE4QixJQUE5QixDQUFvQyxRQUFwQztBQUNBO0FBR1I7QUFDTjtBQUVQOzs7V0FFQSw2QkFBcUIsTUFBckIsRUFBNEI7QUFFekIsVUFBSSxLQUFLLGNBQUwsSUFBdUIsQ0FBQyxLQUFLLGdCQUFqQyxFQUFtRCxLQUFLLFdBQUwsR0FBaUIsSUFBakI7QUFDbkQsV0FBSyxrQkFBTCxHQUF3QixNQUF4QjtBQUNBLFdBQUssY0FBTCxHQUFzQixLQUF0QjtBQUNBLFVBQUksTUFBTSxJQUFFLElBQVosRUFDSSxLQUFLLGdCQUFMLEdBQXdCLElBQXhCLENBREosS0FHSSxLQUFLLGdCQUFMLEdBQXdCLEtBQXhCO0FBQ0osV0FBSyw0QkFBTDtBQUNBLFVBQUksSUFBSSxHQUFHLElBQVg7QUFDQSxXQUFLLFFBQUwsQ0FBYyxZQUFVO0FBQ3RCLFFBQUEsSUFBSSxDQUFDLFdBQUwsR0FBaUIsS0FBakI7QUFDRCxPQUZEO0FBR0o7OztXQUVFLHdCQUFnQixHQUFoQixFQUFvQixTQUFwQixFQUE4QixNQUE5QixFQUFxQztBQUdwQyxXQUFLLFdBQUwsR0FBaUIsR0FBakI7QUFDQSxXQUFLLFdBQUwsR0FBbUIsSUFBbkI7QUFDQSxVQUFJLFNBQVMsS0FBRyxTQUFoQixFQUEyQixLQUFLLGFBQUwsR0FBbUIsU0FBbkI7QUFDM0IsVUFBSSxDQUFBLE1BQU0sU0FBTixJQUFBLE1BQU0sV0FBTixZQUFBLE1BQU0sQ0FBRSxNQUFSLE1BQWlCLFNBQXJCLEVBQWdDLEtBQUssYUFBTCxHQUFtQixNQUFuQixhQUFtQixNQUFuQix1QkFBbUIsTUFBTSxDQUFFLE1BQTNCO0FBRWhDOzs7V0FHQSx5QkFBZ0I7QUFDbkIsYUFBTyxLQUFLLFdBQVo7QUFDRzs7O1dBR0osdUJBQWUsS0FBZixFQUFzQjtBQUNkLFVBQUksR0FBRyxHQUFDLDRCQUEwQixLQUExQixHQUFnQyxHQUF4QztBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNBLFVBQUksUUFBUSxHQUFHLElBQWY7QUFDQSxXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsRUFBbUMsSUFBbkMsQ0FBd0MsVUFBQSxRQUFRLEVBQUc7QUFDMUMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUF4QixFQUE2QjtBQUNkLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBc0IsWUFBQSxNQUFNLEVBQUUsUUFBUSxDQUFDLElBQVQsQ0FBYztBQUE1QyxXQUFqQjtBQUNQLFNBRlIsTUFFYztBQUNDLFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLElBQUksRUFBQyxRQUFRLENBQUMsSUFBZjtBQUFvQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBcEMsV0FBaEI7QUFDRDtBQUN0QixPQU5EO0FBUUEsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBSUwseUJBQ0E7QUFBQTs7QUFDQyxVQUFJLDJCQUFDLEtBQUssVUFBTCxDQUFnQixPQUFqQixrREFBQyxzQkFBeUIsWUFBMUIsQ0FBSixFQUNDO0FBQ0QsdUNBQU8sS0FBSyxVQUFMLENBQWdCLE9BQXZCLHFGQUFPLHVCQUF5QixZQUFoQywyREFBTywyQ0FBd0MsS0FBSyxVQUE3QywrRUFBd0MsaUJBQWlCLE9BQXpELDJEQUF3Qyx1QkFBMEIsVUFBbEUsQ0FBUDtBQUVBOzs7V0FHQywrQkFBc0I7QUFDbkIsYUFBTyxLQUFLLGdCQUFaO0FBRUo7OztXQUNBLDBCQUFpQjtBQUNiLGFBQU8sS0FBSyxXQUFaO0FBRUo7OztXQUlFLCtCQUF1QixNQUF2QixFQUE4QixRQUE5QixFQUF1QztBQUVwQyxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDRCxVQUFJLEdBQUcsR0FBRyxtQ0FBaUMsTUFBakMsR0FBd0MsR0FBeEMsR0FBNEMsUUFBNUMsR0FBcUQsR0FBL0Q7QUFDQyxXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsQ0FBa0MsVUFBQSxRQUFRLEVBQUc7QUFDcEIsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFrQixHQUF0QixFQUEyQixRQUFRLENBQUMsT0FBVCxDQUFpQixRQUFRLENBQUMsSUFBMUIsRUFBM0IsS0FDRyxRQUFRLENBQUMsTUFBVCxDQUFnQixRQUFRLENBQUMsSUFBekI7QUFFekIsT0FKSDtBQU1HLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ1I7OztXQUlFLDBCQUFrQixNQUFsQixFQUF5QjtBQUN6QjtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNFLFVBQUksR0FBRyxHQUFHLCtCQUE2QixNQUE3QixHQUFvQyxHQUE5QztBQUNDLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUN6QixZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQWtCLEdBQXRCLEVBQTJCLFFBQVEsQ0FBQyxPQUFULENBQWlCLFFBQVEsQ0FBQyxJQUExQixFQUEzQixLQUNLLFFBQVEsQ0FBQyxNQUFULENBQWdCLFFBQVEsQ0FBQyxJQUF6QjtBQUVmLE9BSlY7QUFNRyxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNMOzs7V0FNRCx1QkFBZSxRQUFmLEVBQXdCLElBQXhCLEVBQTZCLEtBQTdCLEVBQW1DO0FBR2hDLFVBQUksSUFBSjtBQUNBLFVBQUksS0FBSyxJQUFFLFNBQVgsRUFBc0IsS0FBSyxHQUFDLEdBQU47QUFFdEIsVUFBSSxJQUFJLElBQUUsQ0FBVixFQUFhLElBQUksR0FBRyxLQUFLLFdBQVosQ0FBYixLQUNLLElBQUksR0FBRyxLQUFLLGNBQUwsQ0FBb0IsU0FBM0I7QUFFTCxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFRSxVQUFJLEdBQUcsR0FBRyw0QkFBMEIsUUFBMUIsR0FBbUMsR0FBN0M7QUFDQSxXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBNkIsSUFBN0IsRUFBbUMsSUFBbkMsQ0FBd0MsVUFBQSxRQUFRLEVBQUc7QUFFM0MsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFrQixHQUFsQixJQUF5QixRQUFRLENBQUMsTUFBVCxLQUFrQixHQUEvQyxFQUFvRCxRQUFRLENBQUMsT0FBVCxDQUFpQixRQUFRLENBQUMsSUFBMUIsRUFBcEQsS0FDUyxRQUFRLENBQUMsTUFBVCxDQUFnQixRQUFRLENBQUMsSUFBekI7QUFFaEIsT0FMRDtBQU9DLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0w7OztXQUlGLHlCQUFpQixVQUFqQixFQUE0QixlQUE1QixFQUE0QyxnQkFBNUMsRUFBOEQsYUFBOUQsRUFBNEUsV0FBNUUsRUFBd0YsR0FBeEYsRUFBNEY7QUFFekYsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsVUFBSSxVQUFVLElBQUksU0FBZCxJQUEyQixVQUFVLElBQUUsQ0FBdkMsSUFBNEMsVUFBVSxJQUFFLElBQTVELEVBQWtFLFFBQVEsQ0FBQyxNQUFULENBQWdCLGdCQUFjLFVBQWQsR0FBeUIsR0FBekM7QUFDbEUsVUFBSSxHQUFHLElBQUUsU0FBVCxFQUFvQixHQUFHLEdBQUMsQ0FBSjtBQUNwQixVQUFJLFdBQVcsSUFBRSxTQUFqQixFQUE0QixXQUFXLEdBQUMsSUFBWjtBQUN6QixVQUFJLEdBQUcsR0FBSSx3QkFBWDtBQUNBLFVBQUksU0FBUyxHQUFDO0FBQUMsb0JBQVcsVUFBWjtBQUF1QiwyQkFBa0IsZUFBekM7QUFBeUQsNEJBQW1CLGdCQUE1RTtBQUE2Rix5QkFBZ0IsYUFBN0c7QUFBNEgsZ0JBQU8sV0FBbkk7QUFBK0ksbUJBQVU7QUFBekosT0FBZDtBQUVBLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixTQUE3QixFQUF3QyxJQUF4QyxDQUE2QyxVQUFBLFFBQVEsRUFBRztBQUN0QyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQWtCLEdBQWxCLElBQXdCLFFBQVEsQ0FBQyxNQUFULEtBQWtCLEdBQTlDLEVBQW9ELFFBQVEsQ0FBQyxPQUFULENBQWlCLFFBQVEsQ0FBQyxJQUExQixFQUFwRCxLQUNVLFFBQVEsQ0FBQyxNQUFULENBQWdCLFFBQVEsQ0FBQyxJQUF6QjtBQUNaLE9BSGhCO0FBS0QsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDTjs7O1dBSUUsc0JBQWMsYUFBZCxFQUE0QjtBQUUxQixVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDRyxVQUFJLEdBQUcsR0FBSSx3QkFBWCxDQUh1QixDQUl2Qjs7QUFDQSxXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBNkIsYUFBN0IsRUFBNEMsSUFBNUMsQ0FBaUQsVUFBQSxRQUFRLEVBQUc7QUFDMUMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFrQixHQUFsQixJQUF5QixRQUFRLENBQUMsTUFBVCxLQUFrQixHQUEvQyxFQUFvRCxRQUFRLENBQUMsT0FBVCxDQUFpQixJQUFqQixFQUFwRCxLQUNVLFFBQVEsQ0FBQyxNQUFULENBQWdCLElBQWhCO0FBQzNCLE9BSEQ7QUFNQyxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNMOzs7V0FJRCxpQkFBUTtBQUVKLFdBQUssa0JBQUwsQ0FBd0IsRUFBeEI7QUFFQSxXQUFLLFFBQUwsR0FBZ0IsRUFBaEI7QUFDQSxXQUFLLFNBQUwsR0FBaUIsRUFBakI7QUFDQSxXQUFLLFFBQUwsR0FBZ0IsRUFBaEI7QUFDQSxXQUFLLE1BQUwsR0FBYyxFQUFkO0FBQ0EsV0FBSyxXQUFMLEdBQW1CLEVBQW5CO0FBQ0EsV0FBSyxTQUFMLEdBQWlCLEVBQWpCO0FBQ0EsV0FBSyxXQUFMLEdBQW1CLEVBQW5CO0FBQ0EsV0FBSyxlQUFMLEdBQXFCLElBQXJCO0FBQ0EsV0FBSyxhQUFMLEdBQW1CLElBQW5CO0FBQ0EsV0FBSyxhQUFMLEdBQW1CLElBQW5CO0FBQ0EsV0FBSyxVQUFMLEdBQWdCLElBQWhCO0FBQ0EsV0FBSyxrQkFBTCxHQUF3QixJQUF4QjtBQUNBLFdBQUssV0FBTCxHQUFpQixJQUFqQjtBQUNBLFdBQUssVUFBTCxHQUFnQixJQUFoQjtBQUNBLFdBQUssV0FBTCxHQUFtQixLQUFuQjtBQUNBLFdBQUssUUFBTCxHQUFnQixLQUFoQjtBQUNBLFdBQUssV0FBTCxHQUFtQixLQUFuQjtBQUNBLFdBQUssYUFBTCxHQUFtQixJQUFuQjtBQUNBLFdBQUssY0FBTCxHQUFzQixJQUF0QjtBQUNBLFdBQUssZ0JBQUwsR0FBd0IsSUFBeEI7QUFDQSxXQUFLLGNBQUwsR0FBc0IsS0FBdEI7QUFDQSxXQUFLLGdCQUFMLEdBQXdCLEtBQXhCO0FBQ0EsV0FBSyxlQUFMLEdBQXFCLEtBQXJCO0FBQ0EsV0FBSyxRQUFMLEdBQWMsRUFBZDtBQUNBLFdBQUssVUFBTCxHQUFnQixLQUFoQjtBQUNBLFdBQUssV0FBTCxHQUFpQixFQUFqQjtBQUVMOzs7V0FHQyxrQkFBVSxRQUFWLEVBQW1CLElBQW5CLEVBQXdCLE9BQXhCLEVBQWdDLEtBQWhDLEVBQXNDLE9BQXRDLEVBQThDO0FBQzVDO0FBRUMsVUFBSSxRQUFRLEdBQUcsSUFBZjtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNBLFVBQUksU0FBUyxHQUFHLE9BQWhCO0FBQ0EsVUFBSSxTQUFTLElBQUUsU0FBZixFQUEwQixTQUFTLEdBQUcsS0FBWjtBQUMxQixVQUFJLEtBQUssSUFBRSxTQUFYLEVBQXNCLEtBQUssR0FBRyxHQUFSO0FBQ3JCLFVBQUksT0FBTyxJQUFFLFNBQWIsRUFBd0IsT0FBTyxHQUFHLEdBQVY7QUFDekIsVUFBSSxHQUFHLEdBQUksc0JBQW9CLFFBQXBCLEdBQTZCLEdBQTdCLEdBQWlDLElBQWpDLEdBQXNDLEdBQXRDLEdBQTBDLEtBQTFDLEdBQWdELEdBQWhELEdBQW9ELE9BQXBELEdBQTRELEdBQXZFOztBQUdELFVBQUksS0FBSyxRQUFMLENBQWMsS0FBSyxRQUFMLEdBQWdCLElBQWhCLEdBQXVCLEtBQXJDLEtBQStDLFNBQS9DLElBQTRELFNBQWhFLEVBQTBFO0FBRXZFLGFBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUUzQixjQUFJLFFBQVEsQ0FBQyxNQUFULEtBQWtCLEdBQXRCLEVBQ0E7QUFDSSxnQkFBSSxRQUFRLENBQUMsUUFBVCxDQUFrQixLQUFHLFFBQUgsR0FBWSxJQUFaLEdBQWlCLEtBQW5DLEtBQTJDLFNBQS9DLEVBQTBEO0FBQ3hELGNBQUEsUUFBUSxDQUFDLFFBQVQsQ0FBa0IsS0FBSyxRQUFMLEdBQWdCLElBQWhCLEdBQXVCLEtBQXpDLEVBQWdELE1BQWhELEdBQXlELENBQXpEO0FBQ0E7O0FBQ0QsWUFBQSxRQUFRLENBQUMsUUFBVCxDQUFrQixLQUFLLFFBQUwsR0FBZ0IsSUFBaEIsR0FBdUIsS0FBekMsSUFBa0QsUUFBUSxDQUFDLElBQVQsQ0FBYyxLQUFoRTtBQUNBLFlBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUIsUUFBUSxDQUFDLElBQTFCO0FBQ0osV0FQRCxNQVFLLFFBQVEsQ0FBQyxNQUFULENBQWdCLFFBQVEsQ0FBQyxJQUF6QjtBQUd0QixTQWJEO0FBZUYsT0FqQkQsTUFpQk07QUFDSSxRQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCLEtBQUssUUFBTCxDQUFjLEtBQUssUUFBTCxHQUFnQixJQUFoQixHQUF1QixLQUFyQyxDQUFqQixFQUE4RCxHQUE5RDtBQUNUOztBQUVHLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ1I7OztXQUdFLHFCQUFhLE1BQWIsRUFBb0IsSUFBcEIsRUFBeUIsT0FBekIsRUFBaUMsT0FBakMsRUFBeUM7QUFDdkM7QUFFQyxVQUFJLFFBQVEsR0FBRyxJQUFmO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsVUFBSSxTQUFTLEdBQUcsT0FBaEI7QUFDQSxVQUFJLFNBQVMsSUFBRSxTQUFmLEVBQTBCLFNBQVMsR0FBRyxLQUFaO0FBQzFCLFVBQUksT0FBTyxJQUFFLFNBQWIsRUFBd0IsT0FBTyxHQUFHLEdBQVY7QUFDeEIsVUFBSSxHQUFHLEdBQUksMEJBQXdCLE1BQXhCLEdBQStCLEdBQS9CLEdBQW1DLElBQW5DLEdBQXdDLEdBQXhDLEdBQTRDLE9BQTVDLEdBQW9ELEdBQS9EOztBQUdELFVBQUksS0FBSyxRQUFMLENBQWMsSUFBSSxHQUFDLEdBQUwsR0FBUyxNQUFULEdBQWdCLEdBQWhCLEdBQW9CLE9BQWxDLEtBQThDLFNBQTlDLElBQTJELFNBQS9ELEVBQXlFO0FBRXRFLGFBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUUzQixjQUFJLFFBQVEsQ0FBQyxNQUFULEtBQWtCLEdBQXRCLEVBQ0E7QUFDSSxnQkFBSSxRQUFRLENBQUMsUUFBVCxDQUFrQixJQUFJLEdBQUMsR0FBTCxHQUFTLE1BQVQsR0FBZ0IsR0FBaEIsR0FBb0IsT0FBdEMsS0FBZ0QsU0FBcEQsRUFBK0Q7QUFDN0QsY0FBQSxRQUFRLENBQUMsUUFBVCxDQUFrQixJQUFJLEdBQUMsR0FBTCxHQUFTLE1BQVQsR0FBZ0IsR0FBaEIsR0FBb0IsT0FBdEMsRUFBK0MsTUFBL0MsR0FBd0QsQ0FBeEQ7QUFDQTs7QUFDRCxZQUFBLFFBQVEsQ0FBQyxRQUFULENBQWtCLElBQUksR0FBQyxHQUFMLEdBQVMsTUFBVCxHQUFnQixHQUFoQixHQUFvQixPQUF0QyxJQUFpRCxRQUFRLENBQUMsSUFBMUQ7QUFDQSxZQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCLFFBQVEsQ0FBQyxJQUExQjtBQUNKLFdBUEQsTUFRSyxRQUFRLENBQUMsTUFBVCxDQUFnQixRQUFRLENBQUMsSUFBekI7QUFHdEIsU0FiRDtBQWVGLE9BakJELE1BaUJNO0FBQ0ksUUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQixLQUFLLFFBQUwsQ0FBYyxJQUFJLEdBQUMsR0FBTCxHQUFTLE1BQVQsR0FBZ0IsR0FBaEIsR0FBb0IsT0FBbEMsQ0FBakIsRUFBNkQsR0FBN0Q7QUFDVDs7QUFFRyxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNMOzs7V0FHSiwwQkFDQTtBQUNFLFVBQUksUUFBUSxHQUFHLElBQWY7QUFDRyxXQUFLLG9CQUFMLENBQTBCLGlCQUExQixDQUE0QyxRQUFRLENBQUMsVUFBVCxDQUFvQixNQUFoRSxFQUF3RSxJQUF4RSxDQUNILFVBQVMsSUFBVCxFQUFlO0FBQ0ksUUFBQSxRQUFRLENBQUMsV0FBVCxHQUF1QixJQUFJLENBQUMsSUFBNUI7QUFDZixPQUhELEVBR0UsVUFBUyxLQUFULEVBQWU7QUFDSCxRQUFBLFFBQVEsQ0FBQyxnQkFBVCxDQUEwQixVQUExQixDQUFxQyxLQUFLLENBQUMsR0FBM0MsRUFBK0MsT0FBL0M7QUFDVCxPQUxMO0FBTUY7OztXQUdBLHFDQUNEO0FBQ0ssV0FBSyxXQUFMLEdBQW1CO0FBQUMsUUFBQSxVQUFVLEVBQUM7QUFBWixPQUFuQjtBQUNKOzs7V0FFRCxpQ0FBeUIsSUFBekIsRUFBOEIsTUFBOUIsRUFBcUMsT0FBckMsRUFDQTtBQUNLLFdBQUssV0FBTCxHQUFtQjtBQUFDLFFBQUEsVUFBVSxFQUFDLEtBQUssUUFBTCxDQUFjLElBQUksR0FBQyxHQUFMLEdBQVMsTUFBVCxHQUFnQixHQUFoQixHQUFvQixPQUFsQyxFQUEyQztBQUF2RCxPQUFuQjtBQUNKOzs7V0FHQSw2QkFBcUIsUUFBckIsRUFBOEIsSUFBOUIsRUFBbUMsT0FBbkMsRUFBMkMsVUFBM0MsRUFBc0QsT0FBdEQsRUFDSDtBQUVPLFVBQUksVUFBVSxJQUFFLFNBQWhCLEVBQTJCLFVBQVUsR0FBQyxHQUFYO0FBQzNCLFVBQUksT0FBTyxJQUFFLFNBQWIsRUFBd0IsT0FBTyxHQUFDLEdBQVI7O0FBRTFCLFVBQUksS0FBSyxNQUFMLENBQVksSUFBSSxHQUFDLEdBQUwsR0FBUyxVQUFULEdBQW9CLEdBQXBCLEdBQXdCLE9BQXBDLEtBQThDLFNBQTlDLElBQTJELE9BQS9ELEVBQXVFO0FBRXZFLFlBQUksR0FBRyxHQUFDLENBQUMsQ0FBVDs7QUFJQSxZQUFJLEtBQUssUUFBTCxDQUFjLElBQUksR0FBQyxHQUFMLEdBQVMsVUFBVCxHQUFvQixHQUFwQixHQUF3QixPQUF0QyxLQUFnRCxTQUFwRCxFQUNBO0FBRUUsaUJBQU8sSUFBUDtBQUVEOztBQUVBLGFBQUssTUFBTCxDQUFZLElBQUksR0FBQyxHQUFMLEdBQVMsVUFBVCxHQUFvQixHQUFwQixHQUF3QixPQUFwQyxJQUErQyxFQUEvQztBQUNBLGFBQUssU0FBTCxDQUFlLElBQUksR0FBQyxHQUFMLEdBQVMsVUFBVCxHQUFvQixHQUFwQixHQUF3QixPQUF2QyxJQUFrRCxFQUFsRDs7QUFHQSxhQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsS0FBSyxRQUFMLENBQWMsSUFBSSxHQUFDLEdBQUwsR0FBUyxVQUFULEdBQW9CLEdBQXBCLEdBQXdCLE9BQXRDLEVBQStDLEtBQS9DLENBQXFELE1BQXBFLEVBQTJFLENBQUMsRUFBNUUsRUFDQTtBQUNHLGNBQUksS0FBSyxRQUFMLENBQWMsSUFBSSxHQUFDLEdBQUwsR0FBUyxVQUFULEdBQW9CLEdBQXBCLEdBQXdCLE9BQXRDLEVBQStDLEtBQS9DLENBQXFELENBQXJELEVBQXdELG9CQUF4RCxJQUE4RSxTQUFsRixFQUE0RjtBQUN2RixnQkFBSSxLQUFLLFFBQUwsQ0FBYyxJQUFJLEdBQUMsR0FBTCxHQUFTLFVBQVQsR0FBb0IsR0FBcEIsR0FBd0IsT0FBdEMsRUFBK0MsS0FBL0MsQ0FBcUQsQ0FBckQsRUFBd0Qsb0JBQXhELENBQTZFLEVBQTdFLElBQWlGLFNBQXJGLEVBQ0ksS0FBSyxRQUFMLENBQWMsSUFBSSxHQUFDLEdBQUwsR0FBUyxVQUFULEdBQW9CLEdBQXBCLEdBQXdCLE9BQXRDLEVBQStDLEtBQS9DLENBQXFELENBQXJELEVBQXdELG9CQUF4RCxHQUErRSxLQUFLLFFBQUwsQ0FBYyxJQUFJLEdBQUMsR0FBTCxHQUFTLFVBQVQsR0FBb0IsR0FBcEIsR0FBd0IsT0FBdEMsRUFBK0MsS0FBL0MsQ0FBcUQsQ0FBckQsRUFBd0Qsb0JBQXhELENBQTZFLEVBQTVKLENBRm1GLENBRTRFOztBQUVuSyxnQkFBSSxLQUFLLFFBQUwsQ0FBYyxJQUFJLEdBQUMsR0FBTCxHQUFTLFVBQVQsR0FBb0IsR0FBcEIsR0FBd0IsT0FBdEMsRUFBK0MsS0FBL0MsQ0FBcUQsQ0FBckQsRUFBd0Qsb0JBQXhELENBQTZFLE1BQTdFLENBQW9GLENBQXBGLEVBQXNGLENBQXRGLEtBQTBGLFFBQTlGLEVBQ0E7QUFFRSxjQUFBLEdBQUcsR0FBRSxLQUFLLE1BQUwsQ0FBWSxJQUFJLEdBQUMsR0FBTCxHQUFTLFVBQVQsR0FBb0IsR0FBcEIsR0FBd0IsT0FBcEMsRUFBNkMsR0FBN0MsQ0FBaUQsVUFBUyxDQUFULEVBQVk7QUFBRSx1QkFBTyxDQUFDLENBQUMsVUFBVDtBQUFzQixlQUFyRixFQUF1RixPQUF2RixDQUErRixLQUFLLFFBQUwsQ0FBYyxJQUFJLEdBQUMsR0FBTCxHQUFTLFVBQVQsR0FBb0IsR0FBcEIsR0FBd0IsT0FBdEMsRUFBK0MsS0FBL0MsQ0FBcUQsQ0FBckQsRUFBd0QsVUFBdkosQ0FBTDtBQUNBLGtCQUFJLEdBQUcsR0FBQyxDQUFSLEVBQVcsS0FBSyxNQUFMLENBQVksSUFBSSxHQUFDLEdBQUwsR0FBUyxVQUFULEdBQW9CLEdBQXBCLEdBQXdCLE9BQXBDLEVBQTZDLElBQTdDLENBQWtELEtBQUssUUFBTCxDQUFjLElBQUksR0FBQyxHQUFMLEdBQVMsVUFBVCxHQUFvQixHQUFwQixHQUF3QixPQUF0QyxFQUErQyxLQUEvQyxDQUFxRCxDQUFyRCxDQUFsRDtBQUdaLGFBUEQsTUFPTSxJQUFJLEtBQUssUUFBTCxDQUFjLElBQUksR0FBQyxHQUFMLEdBQVMsVUFBVCxHQUFvQixHQUFwQixHQUF3QixPQUF0QyxFQUErQyxLQUEvQyxDQUFxRCxDQUFyRCxFQUF3RCxvQkFBeEQsSUFBOEUsVUFBbEYsRUFDTjtBQUVHLGNBQUEsR0FBRyxHQUFFLEtBQUssU0FBTCxDQUFlLElBQUksR0FBQyxHQUFMLEdBQVMsVUFBVCxHQUFvQixHQUFwQixHQUF3QixPQUF2QyxFQUFnRCxHQUFoRCxDQUFvRCxVQUFTLENBQVQsRUFBWTtBQUFFLHVCQUFPLENBQUMsQ0FBQyxVQUFUO0FBQXNCLGVBQXhGLEVBQTBGLE9BQTFGLENBQWtHLEtBQUssUUFBTCxDQUFjLElBQUksR0FBQyxHQUFMLEdBQVMsVUFBVCxHQUFvQixHQUFwQixHQUF3QixPQUF0QyxFQUErQyxLQUEvQyxDQUFxRCxDQUFyRCxFQUF3RCxVQUExSixDQUFMO0FBQ0Esa0JBQUksR0FBRyxHQUFDLENBQVIsRUFBVyxLQUFLLFNBQUwsQ0FBZSxJQUFJLEdBQUMsR0FBTCxHQUFTLFVBQVQsR0FBb0IsR0FBcEIsR0FBd0IsT0FBdkMsRUFBZ0QsSUFBaEQsQ0FBcUQsS0FBSyxRQUFMLENBQWMsSUFBSSxHQUFDLEdBQUwsR0FBUyxVQUFULEdBQW9CLEdBQXBCLEdBQXdCLE9BQXRDLEVBQStDLEtBQS9DLENBQXFELENBQXJELENBQXJEO0FBR2I7QUFFTDtBQUNGLFNBeENvRSxDQTBDdkU7OztBQUdGLGFBQUssSUFBSSxDQUFDLEdBQUMsQ0FBWCxFQUFhLENBQUMsR0FBQyxLQUFLLE1BQUwsQ0FBWSxJQUFJLEdBQUMsR0FBTCxHQUFTLFVBQVQsR0FBb0IsR0FBcEIsR0FBd0IsT0FBcEMsRUFBNkMsTUFBNUQsRUFBbUUsQ0FBQyxFQUFwRSxFQUNBO0FBQ0ssZUFBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLEtBQUssU0FBTCxDQUFlLElBQUksR0FBQyxHQUFMLEdBQVMsVUFBVCxHQUFvQixHQUFwQixHQUF3QixPQUF2QyxFQUFnRCxNQUEvRCxFQUFzRSxDQUFDLEVBQXZFLEVBQ0Y7QUFDQyxnQkFBSSxLQUFLLE1BQUwsQ0FBWSxJQUFJLEdBQUMsR0FBTCxHQUFTLFVBQVQsR0FBb0IsR0FBcEIsR0FBd0IsT0FBcEMsRUFBNkMsQ0FBN0MsRUFBZ0QsVUFBaEQsSUFBNEQsS0FBSyxTQUFMLENBQWUsSUFBSSxHQUFDLEdBQUwsR0FBUyxVQUFULEdBQW9CLEdBQXBCLEdBQXdCLE9BQXZDLEVBQWdELENBQWhELEVBQW1ELGNBQW5ILEVBQ0E7QUFDRSxrQkFBSSxLQUFLLE1BQUwsQ0FBWSxJQUFJLEdBQUMsR0FBTCxHQUFTLFVBQVQsR0FBb0IsR0FBcEIsR0FBd0IsT0FBcEMsRUFBNkMsQ0FBN0MsRUFBZ0QsU0FBaEQsSUFBNEQsU0FBaEUsRUFBMkUsS0FBSyxNQUFMLENBQVksSUFBSSxHQUFDLEdBQUwsR0FBUyxVQUFULEdBQW9CLEdBQXBCLEdBQXdCLE9BQXBDLEVBQTZDLENBQTdDLEVBQWdELFNBQWhELEdBQTRELEVBQTVEO0FBRTNFLGNBQUEsR0FBRyxHQUFFLEtBQUssTUFBTCxDQUFZLElBQUksR0FBQyxHQUFMLEdBQVMsVUFBVCxHQUFvQixHQUFwQixHQUF3QixPQUFwQyxFQUE2QyxDQUE3QyxFQUFnRCxTQUFoRCxDQUEwRCxHQUExRCxDQUE4RCxVQUFTLENBQVQsRUFBWTtBQUFFLHVCQUFPLENBQUMsQ0FBQyxVQUFUO0FBQXNCLGVBQWxHLEVBQW9HLE9BQXBHLENBQTRHLEtBQUssU0FBTCxDQUFlLElBQUksR0FBQyxHQUFMLEdBQVMsVUFBVCxHQUFvQixHQUFwQixHQUF3QixPQUF2QyxFQUFnRCxDQUFoRCxFQUFtRCxVQUEvSixDQUFMO0FBQ0Esa0JBQUksR0FBRyxHQUFDLENBQVIsRUFBVyxLQUFLLE1BQUwsQ0FBWSxJQUFJLEdBQUMsR0FBTCxHQUFTLFVBQVQsR0FBb0IsR0FBcEIsR0FBd0IsT0FBcEMsRUFBNkMsQ0FBN0MsRUFBZ0QsU0FBaEQsQ0FBMEQsSUFBMUQsQ0FBK0QsS0FBSyxTQUFMLENBQWUsSUFBSSxHQUFDLEdBQUwsR0FBUyxVQUFULEdBQW9CLEdBQXBCLEdBQXdCLE9BQXZDLEVBQWdELENBQWhELENBQS9EO0FBRVo7QUFDRDtBQUNIO0FBRUg7O0FBQ0ksVUFBSSxLQUFLLE1BQUwsQ0FBWSxJQUFJLEdBQUMsR0FBTCxHQUFTLFVBQVQsR0FBb0IsR0FBcEIsR0FBd0IsT0FBcEMsRUFBNkMsTUFBN0MsSUFBcUQsQ0FBekQsRUFBNEQsS0FBSyxNQUFMLENBQVksSUFBSSxHQUFDLEdBQUwsR0FBUyxVQUFULEdBQW9CLEdBQXBCLEdBQXdCLE9BQXBDLElBQStDLElBQS9DO0FBQzVELGFBQU8sS0FBSyxNQUFMLENBQVksSUFBSSxHQUFDLEdBQUwsR0FBUyxVQUFULEdBQW9CLEdBQXBCLEdBQXdCLE9BQXBDLENBQVA7QUFDTDs7OztBQUVEO0FBQ0E7QUFFRywwQkFBYyxRQUFkLEVBQXVCLElBQXZCLEVBQTRCLEtBQTVCLEVBQWtDO0FBRWpDLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNBLFVBQUksUUFBUSxHQUFHLElBQWY7QUFFQSxXQUFLLFFBQUwsQ0FBYyxRQUFkLEVBQXVCLElBQXZCLEVBQTRCLElBQTVCLEVBQWlDLEtBQWpDLEVBQXdDLElBQXhDLENBQTZDLFVBQVUsSUFBVixFQUFnQjtBQUkvQyxZQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsbUJBQVQsQ0FBNkIsUUFBN0IsRUFBc0MsSUFBdEMsRUFBMkMsSUFBM0MsRUFBZ0QsS0FBaEQsQ0FBZjtBQUNBLFFBQUEsUUFBUSxDQUFDLFdBQVQsR0FBdUIsUUFBdkI7QUFDQSxRQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCLFFBQWpCO0FBSVQsT0FWTDtBQVdDLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBRUE7Ozs7QUFFQztBQUNOO0FBQ0E7QUFDSSx3QkFBWSxRQUFaLEVBQXFCO0FBQ25CLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNBLFVBQUksUUFBSjtBQUNBLFVBQUksSUFBSSxHQUFDLENBQVQ7QUFDQSxVQUFJLEtBQUssR0FBQyxHQUFWOztBQUNBLFVBQUksS0FBSyxXQUFMLElBQWtCLFNBQXRCLEVBQ0E7QUFDRSxRQUFBLEtBQUssR0FBRyxLQUFLLFdBQUwsQ0FBaUIsRUFBekI7QUFDQSxZQUFJLEtBQUssSUFBRSxHQUFQLElBQWMsS0FBSyxJQUFFLFNBQXpCLEVBQW9DLElBQUksR0FBQyxDQUFMO0FBQ3JDOztBQUNELFVBQUksUUFBUSxHQUFHLElBQWY7O0FBQ0EsVUFBSSxDQUFDLEtBQUssUUFBVixFQUNBO0FBRUUsWUFBSSxLQUFLLE1BQUwsQ0FBWSxLQUFHLFFBQUgsR0FBWSxJQUFaLEdBQWlCLEtBQTdCLEtBQXFDLFNBQXJDLElBQWtELEtBQUssTUFBTCxDQUFZLEtBQUcsUUFBSCxHQUFZLElBQVosR0FBaUIsS0FBN0IsS0FBcUMsSUFBM0YsRUFDQTtBQUNHLGVBQUssUUFBTCxDQUFjLFFBQWQsRUFBdUIsSUFBdkIsRUFBNEIsS0FBNUIsRUFBa0MsS0FBbEMsRUFBeUMsSUFBekMsQ0FBOEMsVUFBVSxJQUFWLEVBQWdCO0FBQ3ZELFlBQUEsUUFBUSxHQUFHLFFBQVEsQ0FBQyxtQkFBVCxDQUE2QixRQUE3QixFQUFzQyxJQUF0QyxFQUEyQyxLQUEzQyxFQUFpRCxLQUFqRCxDQUFYLENBRHVELENBRXZEOztBQUNaLFlBQUEsUUFBUSxDQUFDLGtCQUFULENBQTRCLFFBQTVCO0FBQ1ksWUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQixRQUFqQjtBQUNkLFdBTE87QUFNRixTQVJELE1BU0s7QUFDRCxVQUFBLFFBQVEsR0FBRyxLQUFLLG1CQUFMLENBQXlCLFFBQXpCLEVBQWtDLElBQWxDLEVBQXVDLEtBQXZDLEVBQTZDLEtBQTdDLENBQVgsQ0FEQyxDQUVEOztBQUNULGVBQUssa0JBQUwsQ0FBd0IsUUFBeEI7QUFDUyxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCLFFBQWpCO0FBQ0g7QUFDRixPQWxCRCxNQW1CSztBQUNSLFFBQUEsSUFBSSxHQUFDLENBQUw7O0FBQ0EsWUFBSSxLQUFLLE1BQUwsQ0FBWSxLQUFHLFFBQUgsR0FBWSxJQUFaLEdBQWlCLEtBQTdCLEtBQXFDLFNBQXJDLElBQWtELEtBQUssTUFBTCxDQUFZLEtBQUcsUUFBSCxHQUFZLElBQVosR0FBaUIsS0FBN0IsS0FBcUMsSUFBM0YsRUFBaUc7QUFDOUYsZUFBSyxRQUFMLENBQWMsUUFBZCxFQUF1QixJQUF2QixFQUE0QixLQUE1QixFQUFrQyxLQUFsQyxFQUF5QyxJQUF6QyxDQUE4QyxVQUFVLElBQVYsRUFBZ0I7QUFDN0QsWUFBQSxRQUFRLEdBQUcsUUFBUSxDQUFDLG1CQUFULENBQTZCLFFBQTdCLEVBQXNDLElBQXRDLEVBQTJDLEtBQTNDLEVBQWlELEtBQWpELENBQVg7QUFDQSxZQUFBLFFBQVEsQ0FBQyxXQUFULEdBQXVCLFFBQXZCO0FBQ0EsWUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQixRQUFqQjtBQUNGLFdBSkM7QUFNRixTQVBELE1BUUE7QUFDRyxVQUFBLFFBQVEsR0FBRyxLQUFLLG1CQUFMLENBQXlCLFFBQXpCLEVBQWtDLElBQWxDLEVBQXVDLEtBQXZDLEVBQTZDLEtBQTdDLENBQVgsQ0FESCxDQUVHOztBQUNBLGVBQUssa0JBQUwsQ0FBd0IsUUFBeEI7QUFDQSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCLFFBQWpCO0FBRUY7QUFDRzs7QUFDQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNGOzs7V0FFSjtBQUNFLHdCQUFXO0FBQ0YsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsVUFBSSxRQUFRLEdBQUcsSUFBZjtBQUNBLFdBQUssZUFBTCxDQUFxQixLQUFLLFVBQUwsQ0FBZ0IsT0FBaEIsQ0FBd0IsV0FBeEIsQ0FBb0MsSUFBekQsRUFBK0QsSUFBL0QsQ0FBb0UsVUFBVSxJQUFWLEVBQWdCO0FBRWhFLFFBQUEsUUFBUSxDQUFDLFVBQVQsQ0FBb0IsT0FBcEIsQ0FBNEIsV0FBNUIsQ0FBd0MsS0FBeEMsR0FBOEMsSUFBOUM7QUFDQSxRQUFBLFFBQVEsQ0FBQyxVQUFULENBQW9CLE9BQXBCLENBQTRCLFdBQTVCLENBQXdDLFdBQXhDLEdBQW9ELElBQXBEO0FBRUEsZUFBTyxRQUFRLENBQUMsT0FBVCxDQUFpQixJQUFqQixDQUFQO0FBQ25CLE9BTkQ7QUFPQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIO0FBQ1I7QUFDRDtBQUNBOzs7O1dBQ0csb0JBQVc7QUFDRixVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQSxVQUFJLFFBQVEsR0FBRyxJQUFmO0FBQ0EsV0FBSyxRQUFMLENBQWMsS0FBSyxVQUFMLENBQWdCLE9BQWhCLENBQXdCLFdBQXhCLENBQW9DLElBQWxELEVBQXVELENBQXZELEVBQTBELElBQTFELENBQStELFVBQVUsSUFBVixFQUFnQjtBQUUzRCxRQUFBLFFBQVEsQ0FBQyxVQUFULENBQW9CLE9BQXBCLENBQTRCLFdBQTVCLENBQXdDLE9BQXhDLEdBQWtELFFBQVEsQ0FBQyxtQkFBVCxDQUE2QixRQUFRLENBQUMsVUFBVCxDQUFvQixPQUFwQixDQUE0QixXQUE1QixDQUF3QyxJQUFyRSxFQUEwRSxDQUExRSxDQUFsRCxDQUYyRCxDQUczRDtBQUNBOztBQUNBLFFBQUEsUUFBUSxDQUFDLFVBQVQsQ0FBb0IsT0FBcEIsQ0FBNEIsV0FBNUIsQ0FBd0MsWUFBeEMsR0FBcUQsSUFBckQ7QUFFQSxlQUFPLFFBQVEsQ0FBQyxPQUFULENBQWlCLElBQWpCLENBQVA7QUFDbkIsT0FSRDtBQVNILGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0E7QUFFUDtBQUNGO0FBQ0E7Ozs7V0FDRSxtQkFBVyxLQUFYLEVBQWtCO0FBQ2YsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsVUFBSSxRQUFRLEdBQUcsSUFBZjtBQUNBLFdBQUssUUFBTCxHQUFnQixJQUFoQixDQUFxQixVQUFTLElBQVQsRUFBYztBQUNsQixZQUFJLElBQUosRUFDQTtBQUVNLFVBQUEsUUFBUSxDQUFDLFFBQVQsR0FBb0IsSUFBcEIsQ0FBeUIsVUFBUyxJQUFULEVBQWM7QUFDckMsZ0JBQUksSUFBSixFQUNBO0FBQUE7O0FBQ0ksY0FBQSxRQUFRLENBQUMsUUFBVCxDQUFrQixZQUFVO0FBRXRCLGdCQUFBLFFBQVEsQ0FBQyxVQUFULENBQW9CLE9BQXBCLENBQTRCLG1CQUE1QixHQUFrRCxJQUFsRDtBQUNMLGVBSEQsRUFESixDQU1HOztBQUNDLGtCQUFJLElBQUksR0FBRyxRQUFRLENBQUMsVUFBVCxDQUFvQixPQUFwQixDQUE0QixXQUE1QixDQUF3QyxJQUFuRDtBQUNBLGtCQUFJLFNBQVMsR0FBRyxpQkFBaEI7QUFDQSxrQkFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLFFBQVQsQ0FBa0IsU0FBbEIsQ0FBNEIsYUFBNUIsQ0FBaEI7QUFDQSxrQkFBSSxVQUFVLEdBQUcsUUFBUSxDQUFDLFFBQVQsQ0FBa0IsU0FBbEIsQ0FBNEIsY0FBNUIsQ0FBakI7QUFDQSxrQkFBSSxNQUFNLEdBQUMsUUFBUSxDQUFDLHFCQUFULENBQStCLFNBQS9CLEVBQXlDLElBQXpDLENBQVg7QUFDQSxrQkFBSSxNQUFNLEdBQUc7QUFBQyw2QkFBWTtBQUFiLGVBQWI7QUFFQSxrQkFBSSxZQUFZLDRCQUFHLFFBQVEsQ0FBQyxVQUFULENBQW9CLE9BQXBCLENBQTRCLFdBQTVCLENBQXdDLEdBQTNDLG9GQUFHLHNCQUE2QyxNQUFoRCwyREFBRyx1QkFBcUQsY0FBeEU7QUFDQSxrQkFBSSxjQUFjLDZCQUFHLFFBQVEsQ0FBQyxVQUFULENBQW9CLE9BQXBCLENBQTRCLFdBQTVCLENBQXdDLEdBQTNDLHFGQUFHLHVCQUE2QyxNQUFoRCwyREFBRyx1QkFBcUQsaUJBQTFFO0FBR0Esa0JBQUksWUFBWSxJQUFFLFNBQWxCLEVBQTZCLFNBQVMsR0FBQyxZQUFWO0FBQzdCLGtCQUFJLGNBQWMsSUFBRSxTQUFwQixFQUErQixNQUFNLEdBQUMsY0FBUDs7QUFFL0Isa0JBQUksU0FBUyxJQUFFLFNBQWYsRUFDQTtBQUNFLG9CQUFJLFNBQVMsQ0FBQyxJQUFWLElBQWdCLFdBQWhCLElBQStCLFNBQVMsQ0FBQyxJQUFWLElBQWdCLFNBQS9DLElBQTRELFNBQVMsQ0FBQyxJQUFWLElBQWdCLFlBQTVFLElBQTRGLFNBQVMsQ0FBQyxJQUFWLElBQWdCLGVBQTVHLElBQStILFNBQVMsQ0FBQyxJQUFWLElBQWdCLFNBQW5KLEVBQ0E7QUFDRSxrQkFBQSxTQUFTLEdBQUMsU0FBUyxDQUFDLElBQXBCO0FBQ0Esa0JBQUEsTUFBTSxHQUFHLFVBQVQ7QUFDRDtBQUNGOztBQUdELGNBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0IsRUFBaEIsQ0FBbUIsU0FBbkIsRUFBNkIsTUFBN0I7QUFDQSxjQUFBLFFBQVEsQ0FBQyxPQUFUO0FBRUgsYUFuQ0QsTUFtQ0s7QUFBRSxjQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCLHVDQUFoQjtBQUEwRDtBQUNsRSxXQXJDRDtBQXdDTCxTQTNDRCxNQTJDSztBQUFFLFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0IsdUNBQWhCO0FBQTBEO0FBRWxGLE9BOUNBO0FBK0NELGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0Q7QUFDQTtBQUNIO0FBQ0E7Ozs7V0FFRSx1Q0FBK0I7QUFFekIsVUFBSSxNQUFKO0FBQ0EsV0FBSyxVQUFMLENBQWdCLE9BQWhCLENBQXdCLFdBQXhCLENBQW9DLE1BQXBDLEdBQTZDLEVBQTdDOztBQUNBLFVBQUksS0FBSyxVQUFMLENBQWdCLE9BQWhCLENBQXdCLFdBQXhCLENBQW9DLE9BQXBDLElBQTZDLFNBQTdDLElBQTBELEtBQUssVUFBTCxDQUFnQixPQUFoQixDQUF3QixXQUF4QixDQUFvQyxPQUFwQyxJQUE2QyxJQUEzRyxFQUNBO0FBQ0ksYUFBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLEtBQUssVUFBTCxDQUFnQixPQUFoQixDQUF3QixXQUF4QixDQUFvQyxPQUFwQyxDQUE0QyxNQUEzRCxFQUFrRSxDQUFDLEVBQW5FLEVBQ0E7QUFDRSxVQUFBLE1BQU0sR0FBRyxLQUFLLFVBQUwsQ0FBZ0IsT0FBaEIsQ0FBd0IsV0FBeEIsQ0FBb0MsT0FBcEMsQ0FBNEMsQ0FBNUMsRUFBK0Msa0JBQXhEOztBQUNBLGNBQUksTUFBTSxJQUFJLFNBQVYsSUFBdUIsTUFBTSxJQUFJLElBQXJDLEVBQ0E7QUFFRSxnQkFBSSxLQUFLLFVBQUwsQ0FBZ0IsT0FBaEIsQ0FBd0IsV0FBeEIsQ0FBb0MsTUFBcEMsQ0FBMkMsTUFBM0MsS0FBb0QsU0FBeEQsRUFBa0U7QUFDaEUsbUJBQUssVUFBTCxDQUFnQixPQUFoQixDQUF3QixXQUF4QixDQUFvQyxNQUFwQyxDQUEyQyxNQUEzQyxJQUFtRCxFQUFuRDtBQUNEOztBQUVDLGlCQUFLLFVBQUwsQ0FBZ0IsT0FBaEIsQ0FBd0IsV0FBeEIsQ0FBb0MsTUFBcEMsQ0FBMkMsTUFBM0MsRUFBbUQsSUFBbkQsQ0FBd0QsT0FBTyxDQUFDLElBQVIsQ0FBYSxLQUFLLFVBQUwsQ0FBZ0IsT0FBaEIsQ0FBd0IsV0FBeEIsQ0FBb0MsT0FBcEMsQ0FBNEMsQ0FBNUMsQ0FBYixDQUF4RDtBQUVIO0FBQ0Y7QUFDSixPQXBCd0IsQ0FxQjNCOztBQUNGOzs7O0FBRUg7QUFDRDtBQUNBO0FBRUMsK0JBQW1CLFFBQW5CLEVBQTRCLFFBQTVCLEVBQXFDLElBQXJDLEVBQTBDLEtBQTFDLEVBQWdEO0FBRXZDLFVBQUksS0FBSyxHQUFHLEVBQVo7QUFDQSxVQUFJLElBQUksSUFBRSxTQUFWLEVBQXFCLElBQUksR0FBQyxDQUFMO0FBQ3JCLFVBQUksS0FBSyxJQUFFLFNBQVgsRUFBc0IsS0FBSyxHQUFDLEdBQU47O0FBQ3RCLFVBQUksUUFBUSxJQUFJLFNBQWhCLEVBQTJCO0FBR3ZCLFlBQUksS0FBSyxNQUFMLENBQVksS0FBRyxRQUFILEdBQVksSUFBWixHQUFpQixLQUE3QixLQUFxQyxTQUF6QyxFQUFtRDtBQUMvQyxlQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsS0FBSyxNQUFMLENBQVksS0FBRyxRQUFILEdBQVksSUFBWixHQUFpQixLQUE3QixFQUFvQyxNQUFuRCxFQUEwRCxDQUFDLEVBQTNELEVBQ0E7QUFDSSxnQkFBSSxLQUFLLE1BQUwsQ0FBWSxLQUFHLFFBQUgsR0FBWSxJQUFaLEdBQWlCLEtBQTdCLEVBQW9DLENBQXBDLEVBQXVDLFVBQXZDLElBQXFELFFBQXpELEVBQ0E7QUFDRSxjQUFBLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBUixDQUFhLEtBQUssTUFBTCxDQUFZLEtBQUcsUUFBSCxHQUFZLElBQVosR0FBaUIsS0FBN0IsRUFBb0MsQ0FBcEMsRUFBdUMsU0FBcEQsQ0FBUjtBQUNBO0FBQ0Q7QUFDSjtBQUNKO0FBQ0o7O0FBRUwsYUFBTyxLQUFQO0FBRUQ7Ozs7QUFFSDtBQUNGO0FBQ0E7QUFDTSx5QkFBYSxJQUFiLEVBQW1CO0FBR2hCLFVBQUksS0FBSyxHQUFHLENBQVo7QUFDQSxVQUFJLEtBQUssY0FBTCxDQUFvQixTQUFwQixJQUErQixTQUFuQyxFQUE4QyxLQUFLLEdBQUcsS0FBSyxjQUFMLENBQW9CLFNBQXBCLENBQThCLE1BQXRDO0FBRTlDLFVBQUksUUFBUSxHQUFHLElBQWY7QUFFRyxVQUFLLGFBQWEsR0FBRyxVQUFyQjtBQUdBLE1BQUEsUUFBUSxDQUFDLGdCQUFULEdBQTRCO0FBQUMsUUFBQSxVQUFVLEVBQUMsSUFBWjtBQUFpQixRQUFBLFlBQVksRUFBQyxlQUE5QjtBQUE4QyxRQUFBLEtBQUssRUFBQyxFQUFwRDtBQUF1RCxRQUFBLE1BQU0sRUFBQyxFQUE5RDtBQUFpRSxRQUFBLGtCQUFrQixFQUFDLElBQXBGO0FBQXlGLFFBQUEsaUJBQWlCLEVBQUMsS0FBM0c7QUFBaUgsUUFBQSxjQUFjLEVBQUMsSUFBaEk7QUFBcUksUUFBQSxrQkFBa0IsRUFBQyxJQUF4SjtBQUE2SixRQUFBLGdCQUFnQixFQUFDLENBQTlLO0FBQWdMLFFBQUEsY0FBYyxFQUFFLEVBQWhNO0FBQW1NLFFBQUEsYUFBYSxFQUFDLEtBQWpOO0FBQXVOLFFBQUEsb0JBQW9CLEVBQUMsYUFBNU87QUFBMFAsUUFBQSxjQUFjLEVBQUMsUUFBUSxDQUFDO0FBQWxSLE9BQTVCLENBWGEsQ0FZYjs7QUFDQSxNQUFBLFFBQVEsQ0FBQyxnQkFBVCxDQUEwQixXQUExQixHQUFzQyw2REFBdEM7QUFDQSxNQUFBLFFBQVEsQ0FBQyxnQkFBVCxDQUEwQixVQUExQixHQUFxQyxPQUFyQztBQUNBLE1BQUEsUUFBUSxDQUFDLGdCQUFULENBQTBCLFdBQTFCLEdBQXNDLFFBQXRDO0FBQ0EsTUFBQSxRQUFRLENBQUMsZ0JBQVQsQ0FBMEIsa0JBQTFCLEdBQStDO0FBQUMsUUFBQSxXQUFXLEVBQUUsZ0JBQWQ7QUFBZ0MsUUFBQSxLQUFLLEVBQUMsTUFBdEM7QUFBNkMsUUFBQSxJQUFJLEVBQUMsT0FBbEQ7QUFBMkQsUUFBQSxZQUFZLEVBQUMsUUFBUSxDQUFDLGdCQUFULENBQTBCLFVBQWxHO0FBQ3pDLFFBQUEsV0FBVyxFQUFDLElBRDZCO0FBQ3hCLFFBQUEsU0FBUyxFQUFDLEtBRGM7QUFDUixRQUFBLE1BQU0sRUFBQyxLQURDO0FBQ0ssUUFBQSxZQUFZLEVBQUMsV0FEbEI7QUFDOEIsUUFBQSxlQUFlLEVBQUM7QUFEOUMsT0FBL0M7QUFHQSxNQUFBLFFBQVEsQ0FBQyxnQkFBVCxDQUEwQixrQkFBMUIsR0FBK0M7QUFBQyxRQUFBLFdBQVcsRUFBRSxnQkFBZDtBQUFnQyxRQUFBLEtBQUssRUFBQyxNQUF0QztBQUE2QyxRQUFBLElBQUksRUFBQyxPQUFsRDtBQUEyRCxRQUFBLFlBQVksRUFBRSxRQUFRLENBQUMsZ0JBQVQsQ0FBMEIsVUFBbkc7QUFDekMsUUFBQSxXQUFXLEVBQUMsSUFENkI7QUFDeEIsUUFBQSxTQUFTLEVBQUMsS0FEYztBQUNSLFFBQUEsTUFBTSxFQUFDLEtBREM7QUFDSyxRQUFBLFlBQVksRUFBQyxXQURsQjtBQUM4QixRQUFBLGVBQWUsRUFBQztBQUQ5QyxPQUEvQztBQUdBLE1BQUEsUUFBUSxDQUFDLGdCQUFULEdBQTRCLElBQTVCO0FBQ0EsTUFBQSxRQUFRLENBQUMsY0FBVCxHQUEwQixLQUExQjtBQUdSO0FBQ0Y7QUFDRjtBQUNBOzs7O1dBQ0ksbUJBQVcsSUFBWCxFQUFnQixRQUFoQixFQUEwQjtBQUV2QixVQUFJLEtBQUssR0FBRyxDQUFaO0FBQ0EsVUFBSSxLQUFLLE1BQUwsQ0FBWSxJQUFJLEdBQUMsSUFBakIsS0FBd0IsU0FBNUIsRUFBdUMsS0FBSyxHQUFDLEtBQUssTUFBTCxDQUFZLElBQUksR0FBQyxJQUFqQixFQUF1QixNQUF2QixHQUE4QixDQUFwQztBQUN2QyxVQUFJLFFBQVEsSUFBRSxTQUFkLEVBQXlCLFFBQVEsR0FBQyxRQUFUO0FBQ3pCLFVBQUksUUFBUSxHQUFHLElBQWY7QUFDQSxXQUFLLGVBQUwsR0FBdUIsQ0FBdkI7QUFDQSxXQUFLLFlBQUwsQ0FBa0IsMEJBQWxCLENBQTZDLFdBQTdDLEVBQXlELFFBQXpELEVBQWtFLElBQWxFLEVBQXdFLElBQXhFLENBQTZFLFVBQVMsSUFBVCxFQUU1RTtBQUNBLFlBQUssYUFBYSxHQUFHLElBQXJCO0FBRUEsUUFBQSxRQUFRLENBQUMsY0FBVCxHQUEwQjtBQUFDLFVBQUEsWUFBWSxFQUFDLGlCQUFkO0FBQWdDLFVBQUEsS0FBSyxFQUFDLEVBQXRDO0FBQXlDLFVBQUEsTUFBTSxFQUFDLEVBQWhEO0FBQW1ELFVBQUEsa0JBQWtCLEVBQUMsSUFBdEU7QUFBMkUsVUFBQSxpQkFBaUIsRUFBQyxLQUE3RjtBQUFtRyxVQUFBLGNBQWMsRUFBQyxJQUFsSDtBQUF1SCxVQUFBLGdCQUFnQixFQUFDLENBQXhJO0FBQTBJLFVBQUEsb0JBQW9CLEVBQUMsYUFBL0o7QUFBNkssVUFBQSxrQkFBa0IsRUFBQyxJQUFoTTtBQUFxTSxVQUFBLGNBQWMsRUFBRTtBQUFDLFlBQUEsTUFBTSxFQUFHO0FBQVYsV0FBck47QUFBcU8sVUFBQSxhQUFhLEVBQUMsS0FBblA7QUFBeVAsVUFBQSxjQUFjLEVBQUM7QUFBeFEsU0FBMUI7QUFDQSxRQUFBLFFBQVEsQ0FBQyxjQUFULENBQXdCLFdBQXhCLEdBQW9DLHNFQUFwQztBQUNBLFFBQUEsUUFBUSxDQUFDLGNBQVQsQ0FBd0IsVUFBeEIsR0FBbUMsT0FBbkM7QUFDQSxRQUFBLFFBQVEsQ0FBQyxjQUFULENBQXdCLFdBQXhCLEdBQW9DLFFBQXBDO0FBQ0EsUUFBQSxRQUFRLENBQUMsY0FBVCxDQUF3QixrQkFBeEIsR0FBNkM7QUFBQyxVQUFBLFdBQVcsRUFBRSxnQkFBZDtBQUFnQyxVQUFBLEtBQUssRUFBQyxNQUF0QztBQUE2QyxVQUFBLElBQUksRUFBQyxPQUFsRDtBQUEyRCxVQUFBLFlBQVksRUFBQyxRQUFRLENBQUMsY0FBVCxDQUF3QixVQUFoRztBQUNuQyxVQUFBLFdBQVcsRUFBQyxJQUR1QjtBQUNsQixVQUFBLFNBQVMsRUFBQyxLQURRO0FBQ0YsVUFBQSxZQUFZLEVBQUMsV0FEWDtBQUN1QixVQUFBLGVBQWUsRUFBQztBQUR2QyxTQUE3QztBQUdBLFFBQUEsUUFBUSxDQUFDLGNBQVQsQ0FBd0Isa0JBQXhCLEdBQTZDO0FBQUMsVUFBQSxXQUFXLEVBQUUsZ0JBQWQ7QUFBZ0MsVUFBQSxLQUFLLEVBQUMsTUFBdEM7QUFBNkMsVUFBQSxJQUFJLEVBQUMsT0FBbEQ7QUFBMkQsVUFBQSxZQUFZLEVBQUUsUUFBUSxDQUFDLGNBQVQsQ0FBd0IsVUFBakc7QUFDbkMsVUFBQSxXQUFXLEVBQUMsSUFEdUI7QUFDbEIsVUFBQSxTQUFTLEVBQUMsS0FEUTtBQUNGLFVBQUEsWUFBWSxFQUFDLFdBRFg7QUFDdUIsVUFBQSxlQUFlLEVBQUM7QUFEdkMsU0FBN0M7QUFHQSxRQUFBLFFBQVEsQ0FBQyxjQUFULENBQXdCLHNCQUF4QixHQUFpRDtBQUFDLFVBQUEsV0FBVyxFQUFDLHlCQUFiO0FBQXVDLFVBQUEsS0FBSyxFQUFDLGVBQTdDO0FBQTZELFVBQUEsSUFBSSxFQUFDLGNBQWxFO0FBQWlGLFVBQUEsWUFBWSxFQUFDLFFBQVEsQ0FBQyxjQUFULENBQXdCLFFBQXRIO0FBQ25DLFVBQUEsV0FBVyxFQUFDLElBRHVCO0FBQ2xCLFVBQUEsU0FBUyxFQUFDLEtBRFE7QUFDRixVQUFBLFdBQVcsRUFBQyxXQURWO0FBQ3NCLFVBQUEsZUFBZSxFQUFDO0FBRHRDLFNBQWpEO0FBR0EsUUFBQSxRQUFRLENBQUMsY0FBVCxHQUEwQixJQUExQjtBQUNBLFFBQUEsUUFBUSxDQUFDLGdCQUFULEdBQTRCLEtBQTVCO0FBR0UsT0F0QkgsRUFzQkksVUFBUyxLQUFULEVBQWU7QUFFTyxRQUFBLFFBQVEsQ0FBQyxnQkFBVCxDQUEwQixVQUExQixDQUFxQyxnQ0FBckMsRUFBc0UsT0FBdEU7QUFFRixPQTFCeEI7QUE0Qkg7QUFHQTtBQUNKO0FBQ0E7Ozs7V0FDSSwwQkFBa0IsUUFBbEIsRUFBMkI7QUFFckIsV0FBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLEtBQUssTUFBTCxDQUFZLFFBQVEsR0FBQyxJQUFyQixFQUEyQixNQUExQyxFQUFpRCxDQUFDLEVBQWxELEVBQ0E7QUFDSSxZQUFJLEtBQUssTUFBTCxDQUFZLFFBQVEsR0FBQyxJQUFyQixFQUEyQixDQUEzQixFQUE4QixFQUE5QixJQUFvQyxLQUFLLGVBQTdDLEVBQ0E7QUFFRSxlQUFLLE1BQUwsQ0FBWSxRQUFRLEdBQUMsSUFBckIsRUFBMkIsQ0FBM0IsRUFBOEIsU0FBOUIsR0FBMEMsS0FBSyxjQUFMLENBQW9CLFNBQTlEO0FBQ0EsZUFBSyxXQUFMLENBQWlCLENBQWpCLEVBQW9CLFNBQXBCLEdBQWdDLEtBQUssY0FBTCxDQUFvQixTQUFwRDtBQUVEO0FBQ0o7QUFHTjs7OztBQUdEO0FBQ0o7QUFDQTtBQUNJLHlCQUFhLFFBQWIsRUFBc0I7QUFFaEIsV0FBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLEtBQUssTUFBTCxDQUFZLFFBQVEsR0FBQyxJQUFyQixFQUEyQixNQUExQyxFQUFpRCxDQUFDLEVBQWxELEVBQ0E7QUFDSSxZQUFJLEtBQUssTUFBTCxDQUFZLFFBQVEsR0FBQyxJQUFyQixFQUEyQixDQUEzQixFQUE4QixVQUE5QixJQUE0QyxLQUFLLGVBQXJELEVBQ0E7QUFFRSxlQUFLLE1BQUwsQ0FBWSxRQUFRLEdBQUMsSUFBckIsRUFBMkIsQ0FBM0IsRUFBOEIsU0FBOUIsR0FBMEMsS0FBSyxjQUFMLENBQW9CLFNBQTlEOztBQUNBLGVBQUssSUFBSSxDQUFDLEdBQUMsQ0FBWCxFQUFhLENBQUMsR0FBQyxLQUFLLGNBQUwsQ0FBb0IsU0FBcEIsQ0FBOEIsTUFBN0MsRUFBb0QsQ0FBQyxFQUFyRCxFQUNBO0FBQ0UsZ0JBQUksS0FBSyxjQUFMLENBQW9CLFNBQXBCLENBQThCLENBQTlCLEVBQWlDLFVBQWpDLElBQTZDLEtBQUssZ0JBQUwsQ0FBc0IsVUFBdkUsRUFDQTtBQUNFLG1CQUFLLGNBQUwsQ0FBb0IsU0FBcEIsQ0FBOEIsQ0FBOUIsSUFBbUMsS0FBSyxnQkFBeEM7QUFHRDtBQUNGO0FBRUY7QUFDSjtBQUdOOzs7O0FBQ0E7QUFDTDtBQUNBO0FBQ0ksNEJBQWdCLFNBQWhCLEVBQTBCLElBQTFCLEVBQStCO0FBRXpCLFdBQUssTUFBTCxDQUFZLFFBQVEsR0FBQyxJQUFyQixJQUE2QixTQUE3QixDQUZ5QixDQUl6Qjs7QUFDQSxXQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsS0FBSyxNQUFMLENBQVksUUFBUSxHQUFDLElBQXJCLEVBQTJCLE1BQTFDLEVBQWlELENBQUMsRUFBbEQsRUFDQTtBQUVFLGFBQUssSUFBSSxDQUFDLEdBQUMsQ0FBWCxFQUFhLENBQUMsR0FBQyxLQUFLLE1BQUwsQ0FBWSxRQUFRLEdBQUMsSUFBckIsRUFBMkIsTUFBMUMsRUFBaUQsQ0FBQyxFQUFsRCxFQUNBO0FBQ0UsY0FBSSxLQUFLLE1BQUwsQ0FBWSxRQUFRLEdBQUMsSUFBckIsRUFBMkIsQ0FBM0IsRUFBOEIsVUFBOUIsSUFBNEMsS0FBSyxNQUFMLENBQVksUUFBUSxHQUFDLElBQXJCLEVBQTJCLENBQTNCLEVBQThCLFVBQTlFLEVBQ0E7QUFFRSxpQkFBSyxNQUFMLENBQVksUUFBUSxHQUFDLElBQXJCLEVBQTJCLENBQTNCLEVBQThCLGFBQTlCLEdBQThDLEtBQUssTUFBTCxDQUFZLFFBQVEsR0FBQyxJQUFyQixFQUEyQixDQUEzQixFQUE4QixhQUE1RTtBQUVEO0FBQ0Y7QUFFRjtBQU1OOzs7O0FBSUQ7QUFDSjtBQUNBO0FBQ0ksMkJBQWM7QUFDVjtBQUNOLFdBQUssa0JBQUwsQ0FBd0IsRUFBeEI7QUFDRztBQUVKO0FBQ0Q7QUFDQTs7OztXQUVDLGtDQUEwQixNQUExQixFQUFpQyxRQUFqQyxFQUEwQztBQUVqQyxVQUFJLE1BQU0sSUFBSSxTQUFkLEVBQXlCO0FBR3JCLFlBQUksS0FBSyxRQUFMLENBQWMsTUFBTSxHQUFDLFFBQXJCLEtBQWdDLFNBQXBDLEVBQThDO0FBRzVDLGlCQUFPLEtBQUssUUFBTCxDQUFjLE1BQU0sR0FBQyxRQUFyQixFQUErQixhQUF0QztBQUVILFNBTEMsTUFLRztBQUNILGlCQUFPLElBQVA7QUFDRDtBQUNGO0FBR047Ozs7QUFHSjtBQUNEO0FBQ0E7QUFFQywyQkFBYztBQUNSLFVBQUksS0FBSyxHQUFDLEVBQVY7O0FBQ0EsV0FBSyxJQUFJLEdBQVQsSUFBZ0IsS0FBSyxRQUFyQixFQUErQjtBQUM3QixRQUFBLEtBQUssQ0FBQyxJQUFOLENBQVcsS0FBSyxRQUFMLENBQWMsR0FBZCxDQUFYO0FBQ0Q7O0FBRUQsYUFBTyxLQUFQO0FBQ0Y7OztXQUdBLCtCQUFzQjtBQUVuQixhQUFRLEtBQUssY0FBYjtBQUdEOzs7V0FHTCxpQ0FBd0I7QUFDbkI7QUFDQyxhQUFRLEtBQUssZ0JBQWI7QUFFTDs7OztBQUNGO0FBQ0Q7QUFDQTtBQUNJLG1DQUF1QixRQUF2QixFQUFnQyxRQUFoQyxFQUF5QztBQUV2QyxVQUFJLEtBQUssR0FBQyxFQUFWOztBQUNELFdBQUssSUFBSSxHQUFULElBQWdCLEtBQUssUUFBckIsRUFBK0I7QUFFOUIsWUFBSSxLQUFLLFFBQUwsQ0FBYyxHQUFkLEVBQW1CLE1BQW5CLElBQTJCLFFBQS9CLEVBQTBDLEtBQUssR0FBSSxLQUFLLFFBQUwsQ0FBYyxHQUFkLEVBQW1CLEtBQTVCO0FBRzNDOztBQUNDLGFBQU8sS0FBUDtBQUNEOzs7O0FBRUg7QUFDRjtBQUNBO0FBRUMsaUNBQXFCLE1BQXJCLEVBQTRCLFFBQTVCLEVBQXFDO0FBR2hDLFdBQUssSUFBSSxHQUFULElBQWdCLEtBQUssUUFBckIsRUFBK0I7QUFDOUIsWUFBSSxHQUFHLENBQUMsT0FBSixDQUFZLFFBQVosTUFBMEIsQ0FBQyxDQUEvQixFQUNBO0FBQ0csY0FBSSxLQUFLLFFBQUwsQ0FBYyxHQUFkLEVBQW1CLGFBQW5CLENBQWlDLEVBQWpDLElBQXFDLE1BQXpDLEVBQWtELE9BQU8sT0FBTyxDQUFDLElBQVIsQ0FBYSxLQUFLLFFBQUwsQ0FBYyxHQUFkLENBQWIsQ0FBUDtBQUNwRDtBQUVIOztBQUNDLGFBQU8sSUFBUDtBQUVKO0FBRUU7QUFDSjtBQUNBOzs7O1dBQ0ksb0NBQTRCLFFBQTVCLEVBQXFDLElBQXJDLEVBQTBDO0FBRXpDLFVBQUksSUFBSSxJQUFFLFNBQVYsRUFBcUIsSUFBSSxHQUFDLENBQUw7QUFDckIsVUFBSSxLQUFLLEdBQUMsR0FBVjtBQUNBLFVBQUksS0FBSyxXQUFMLElBQW1CLFNBQXZCLEVBQWtDLEtBQUssR0FBQyxLQUFLLFdBQUwsQ0FBaUIsRUFBdkI7O0FBQ2xDLFVBQUksS0FBSyxJQUFFLEdBQVAsSUFBYyxLQUFLLElBQUUsU0FBekIsRUFDQTtBQUNDLFFBQUEsSUFBSSxHQUFDLENBQUw7QUFDQSxPQUhELE1BR00sSUFBSSxLQUFLLElBQUUsU0FBWCxFQUNOO0FBQ0MsUUFBQSxLQUFLLEdBQUMsR0FBTjtBQUNBOztBQUNELFVBQUksS0FBSyxNQUFMLENBQVksS0FBRyxRQUFILEdBQVksSUFBWixHQUFpQixLQUE3QixLQUFxQyxTQUF6QyxFQUNDO0FBQ0ksYUFBSyxtQkFBTCxDQUF5QixRQUF6QixFQUFrQyxJQUFsQyxFQUF1QyxLQUF2QyxFQUE2QyxLQUE3QztBQUNIOztBQUdELFdBQUssY0FBTCxHQUFvQixJQUFwQjs7QUFDQSxVQUFJLEtBQUssTUFBTCxDQUFZLEtBQUcsUUFBSCxHQUFZLElBQVosR0FBaUIsS0FBN0IsS0FBcUMsU0FBekMsRUFDQTtBQUNJLGFBQUssSUFBSSxDQUFDLEdBQUMsQ0FBWCxFQUFhLENBQUMsR0FBQyxLQUFLLE1BQUwsQ0FBWSxLQUFHLFFBQUgsR0FBWSxJQUFaLEdBQWlCLEtBQTdCLEVBQW9DLE1BQW5ELEVBQTBELENBQUMsRUFBM0QsRUFDQTtBQUNJLGNBQUksS0FBSyxNQUFMLENBQVksS0FBRyxRQUFILEdBQVksSUFBWixHQUFpQixLQUE3QixFQUFvQyxDQUFwQyxFQUF1QyxVQUF2QyxJQUFxRCxLQUFLLGVBQTlELEVBQ0E7QUFHRSxpQkFBSyxjQUFMLEdBQXFCLE9BQU8sQ0FBQyxJQUFSLENBQWEsS0FBSyxNQUFMLENBQVksS0FBRyxRQUFILEdBQVksSUFBWixHQUFpQixLQUE3QixFQUFvQyxDQUFwQyxDQUFiLENBQXJCO0FBQ0EsaUJBQUssY0FBTCxDQUFvQixXQUFwQixHQUFnQyxrRUFBaEM7QUFDQSxpQkFBSyxjQUFMLENBQW9CLFVBQXBCLEdBQStCLE9BQS9CO0FBQ0EsaUJBQUssY0FBTCxDQUFvQixXQUFwQixHQUFnQyxRQUFoQztBQUNBLGlCQUFLLGNBQUwsQ0FBb0Isa0JBQXBCLEdBQXlDO0FBQUMsY0FBQSxXQUFXLEVBQUUsZ0JBQWQ7QUFBZ0MsY0FBQSxLQUFLLEVBQUMsTUFBdEM7QUFBNkMsY0FBQSxJQUFJLEVBQUMsT0FBbEQ7QUFBMkQsY0FBQSxZQUFZLEVBQUMsS0FBSyxjQUFMLENBQW9CLFVBQTVGO0FBQ3ZDLGNBQUEsV0FBVyxFQUFDLElBRDJCO0FBQ3RCLGNBQUEsU0FBUyxFQUFDLEtBRFk7QUFDTixjQUFBLFlBQVksRUFBQyxXQURQO0FBQ21CLGNBQUEsZUFBZSxFQUFDO0FBRG5DLGFBQXpDO0FBR0EsaUJBQUssY0FBTCxDQUFvQixrQkFBcEIsR0FBeUM7QUFBQyxjQUFBLFdBQVcsRUFBRSxnQkFBZDtBQUFnQyxjQUFBLEtBQUssRUFBQyxNQUF0QztBQUE2QyxjQUFBLElBQUksRUFBQyxPQUFsRDtBQUEyRCxjQUFBLFlBQVksRUFBRSxLQUFLLGNBQUwsQ0FBb0IsVUFBN0Y7QUFDdkMsY0FBQSxXQUFXLEVBQUMsSUFEMkI7QUFDdEIsY0FBQSxTQUFTLEVBQUMsS0FEWTtBQUNOLGNBQUEsWUFBWSxFQUFDLFdBRFA7QUFDbUIsY0FBQSxlQUFlLEVBQUM7QUFEbkMsYUFBekM7QUFHQSxpQkFBSyxjQUFMLENBQW9CLHNCQUFwQixHQUE2QztBQUFDLGNBQUEsV0FBVyxFQUFDLHlCQUFiO0FBQXVDLGNBQUEsS0FBSyxFQUFDLFdBQTdDO0FBQXlELGNBQUEsSUFBSSxFQUFDLGVBQTlEO0FBQThFLGNBQUEsWUFBWSxFQUFDLEtBQUssY0FBTCxDQUFvQixRQUEvRztBQUN2QyxjQUFBLFdBQVcsRUFBQyxJQUQyQjtBQUN0QixjQUFBLFNBQVMsRUFBQyxLQURZO0FBQ04sY0FBQSxZQUFZLEVBQUMsV0FEUDtBQUNtQixjQUFBLGVBQWUsRUFBQztBQURuQyxhQUE3QztBQUVBO0FBQ0Q7QUFDSjtBQUNKO0FBRUY7Ozs7QUFDQTtBQUNMO0FBQ0E7QUFDSSw0Q0FBK0I7QUFHNUIsVUFBSSxLQUFLLGNBQUwsSUFBcUIsU0FBekIsRUFDQTtBQUNHLFlBQUksS0FBSyxjQUFMLENBQW9CLFNBQXBCLElBQStCLFNBQW5DLEVBQ0E7QUFDRSxlQUFNLElBQUksQ0FBQyxHQUFDLENBQVosRUFBYyxDQUFDLEdBQUMsS0FBSyxjQUFMLENBQW9CLFNBQXBCLENBQThCLE1BQTlDLEVBQXFELENBQUMsRUFBdEQsRUFDQTtBQUVJLGdCQUFLLEtBQUssY0FBTCxDQUFvQixTQUFwQixDQUE4QixDQUE5QixFQUFpQyxVQUFqQyxJQUE2QyxLQUFLLGtCQUF2RCxFQUNBO0FBQ0csbUJBQUssZ0JBQUwsR0FBc0IsT0FBTyxDQUFDLElBQVIsQ0FBYSxLQUFLLGNBQUwsQ0FBb0IsU0FBcEIsQ0FBOEIsQ0FBOUIsQ0FBYixDQUF0QjtBQUNBLG1CQUFLLGdCQUFMLENBQXNCLFdBQXRCLEdBQWtDLDZEQUFsQztBQUNBLG1CQUFLLGdCQUFMLENBQXNCLFVBQXRCLEdBQWlDLE9BQWpDO0FBQ0EsbUJBQUssZ0JBQUwsQ0FBc0IsV0FBdEIsR0FBa0MsUUFBbEM7QUFDQSxtQkFBSyxnQkFBTCxDQUFzQixrQkFBdEIsR0FBMkM7QUFBQyxnQkFBQSxXQUFXLEVBQUUsZ0JBQWQ7QUFBZ0MsZ0JBQUEsS0FBSyxFQUFDLE1BQXRDO0FBQTZDLGdCQUFBLElBQUksRUFBQyxPQUFsRDtBQUEyRCxnQkFBQSxZQUFZLEVBQUMsS0FBSyxnQkFBTCxDQUFzQixVQUE5RjtBQUMzQyxnQkFBQSxXQUFXLEVBQUMsSUFEK0I7QUFDMUIsZ0JBQUEsU0FBUyxFQUFDLEtBRGdCO0FBQ1YsZ0JBQUEsTUFBTSxFQUFDLEtBREc7QUFDRyxnQkFBQSxZQUFZLEVBQUMsV0FEaEI7QUFDNEIsZ0JBQUEsZUFBZSxFQUFDO0FBRDVDLGVBQTNDO0FBR0EsbUJBQUssZ0JBQUwsQ0FBc0Isa0JBQXRCLEdBQTJDO0FBQUMsZ0JBQUEsV0FBVyxFQUFFLGdCQUFkO0FBQWdDLGdCQUFBLEtBQUssRUFBQyxNQUF0QztBQUE2QyxnQkFBQSxJQUFJLEVBQUMsT0FBbEQ7QUFBMkQsZ0JBQUEsWUFBWSxFQUFFLEtBQUssZ0JBQUwsQ0FBc0IsVUFBL0Y7QUFDM0MsZ0JBQUEsV0FBVyxFQUFDLElBRCtCO0FBQzFCLGdCQUFBLFNBQVMsRUFBQyxLQURnQjtBQUNWLGdCQUFBLE1BQU0sRUFBQyxLQURHO0FBQ0csZ0JBQUEsWUFBWSxFQUFDLFdBRGhCO0FBQzRCLGdCQUFBLGVBQWUsRUFBQztBQUQ1QyxlQUEzQztBQUdBO0FBQ0Y7QUFDSDtBQUNIO0FBQ0o7QUFFRjs7OztBQUVIO0FBQ0Y7QUFDQTtBQUNJLDJCQUFlLFFBQWYsRUFBd0IsSUFBeEIsRUFBNkIsS0FBN0IsRUFBbUM7QUFFbEMsVUFBSSxJQUFJLElBQUUsU0FBVixFQUFxQixJQUFJLEdBQUMsQ0FBTDtBQUNyQixVQUFJLEtBQUssSUFBRSxTQUFYLEVBQXNCLEtBQUssR0FBQyxDQUFOOztBQUN0QixVQUFJLEtBQUssTUFBTCxDQUFZLEtBQUcsUUFBSCxHQUFZLElBQVosR0FBaUIsS0FBN0IsS0FBcUMsU0FBekMsRUFDQztBQUNJLGFBQUssbUJBQUwsQ0FBeUIsUUFBekIsRUFBa0MsSUFBbEMsRUFBdUMsS0FBdkMsRUFBNkMsS0FBN0M7QUFDSDs7QUFFRCxXQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsS0FBSyxNQUFMLENBQVksS0FBRyxRQUFILEdBQVksSUFBWixHQUFpQixLQUE3QixFQUFvQyxNQUFuRCxFQUEwRCxDQUFDLEVBQTNELEVBQ0E7QUFDSSxZQUFJLEtBQUssTUFBTCxDQUFZLEtBQUcsUUFBSCxHQUFZLElBQVosR0FBaUIsS0FBN0IsRUFBb0MsQ0FBcEMsRUFBdUMsVUFBdkMsSUFBcUQsS0FBSyxlQUE5RCxFQUNBO0FBRUcsZUFBSyxjQUFMLEdBQW9CLElBQXBCO0FBQ0EsZUFBSyxjQUFMLEdBQXFCLEtBQUssTUFBTCxDQUFZLFFBQVEsR0FBQyxJQUFyQixFQUEyQixDQUEzQixDQUFyQjtBQUNBLGVBQUssY0FBTCxDQUFvQixXQUFwQixHQUFnQyxrRUFBaEM7QUFDQSxlQUFLLGNBQUwsQ0FBb0IsVUFBcEIsR0FBK0IsT0FBL0I7QUFDQSxlQUFLLGNBQUwsQ0FBb0IsV0FBcEIsR0FBZ0MsUUFBaEM7QUFDQSxlQUFLLGNBQUwsQ0FBb0Isa0JBQXBCLEdBQXlDO0FBQUMsWUFBQSxXQUFXLEVBQUMsZ0JBQWI7QUFBOEIsWUFBQSxLQUFLLEVBQUMsTUFBcEM7QUFBMkMsWUFBQSxJQUFJLEVBQUMsT0FBaEQ7QUFBd0QsWUFBQSxZQUFZLEVBQUUsS0FBSyxjQUFMLENBQW9CLFVBQTFGO0FBQ3BDLFlBQUEsV0FBVyxFQUFDLElBRHdCO0FBQ25CLFlBQUEsU0FBUyxFQUFDLEtBRFM7QUFDSCxZQUFBLFlBQVksRUFBQyxXQURWO0FBQ3NCLFlBQUEsZUFBZSxFQUFDO0FBRHRDLFdBQXpDO0FBR0EsZUFBSyxjQUFMLENBQW9CLHNCQUFwQixHQUE2QztBQUFDLFlBQUEsV0FBVyxFQUFDLHlCQUFiO0FBQXVDLFlBQUEsS0FBSyxFQUFDLGVBQTdDO0FBQTZELFlBQUEsSUFBSSxFQUFDLFdBQWxFO0FBQThFLFlBQUEsWUFBWSxFQUFDLEtBQUssY0FBTCxDQUFvQixRQUEvRztBQUN4QyxZQUFBLFdBQVcsRUFBQyxJQUQ0QjtBQUN2QixZQUFBLFNBQVMsRUFBQyxLQURhO0FBQ1AsWUFBQSxZQUFZLEVBQUMsV0FETjtBQUNrQixZQUFBLGVBQWUsRUFBQztBQURsQyxXQUE3QztBQUdBLGlCQUFRLEtBQUssY0FBYjtBQUVGO0FBQ0o7O0FBQ0YsYUFBTyxJQUFQO0FBQ0E7Ozs7QUFJSDtBQUNGO0FBQ0E7QUFDSSw2QkFBaUIsTUFBakIsRUFBd0IsUUFBeEIsRUFBaUMsSUFBakMsRUFBc0M7QUFFcEMsVUFBSSxJQUFJLElBQUUsU0FBVixFQUFxQixJQUFJLEdBQUMsQ0FBTDs7QUFDckIsV0FBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLEtBQUssU0FBTCxDQUFlLFFBQVEsR0FBQyxJQUF4QixFQUE4QixNQUE3QyxFQUFvRCxDQUFDLEVBQXJELEVBQ0E7QUFDSSxZQUFJLEtBQUssU0FBTCxDQUFlLFFBQVEsR0FBQyxJQUF4QixFQUE4QixDQUE5QixFQUFpQyxVQUFqQyxJQUErQyxNQUFuRCxFQUNBO0FBQUMsVUFBQSxRQUFRO0FBQ1IsaUJBQU8sS0FBSyxTQUFMLENBQWUsUUFBUSxHQUFDLElBQXhCLEVBQThCLENBQTlCLENBQVA7QUFFQTtBQUNKOztBQUNGLGFBQU8sSUFBUDtBQUNBOzs7O0FBQ0o7QUFDRDtBQUNBO0FBRUMsdUJBQVcsUUFBWCxFQUFvQjtBQUFBOztBQUdULFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjs7QUFFQSxVQUFJLEtBQUssTUFBTCxDQUFZLFFBQVosS0FBdUIsU0FBM0IsRUFBcUM7QUFDM0M7QUFDUyxZQUFJLEdBQUcsR0FBRyx1QkFBcUIsUUFBckIsR0FBOEIsR0FBeEM7QUFDQSxhQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsQ0FBa0MsVUFBQSxRQUFRLEVBQUc7QUFDakMsY0FBSSxRQUFRLENBQUMsTUFBVCxLQUFrQixHQUF0QixFQUNBO0FBQ0ksWUFBQSxLQUFJLENBQUMsTUFBTCxDQUFZLFFBQVosSUFBd0IsUUFBUSxDQUFDLElBQWpDO0FBQ0EsWUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQixLQUFJLENBQUMsTUFBTCxDQUFZLFFBQVosQ0FBakI7QUFFSCxXQUxELE1BTUssUUFBUSxDQUFDLE1BQVQsQ0FBZ0IsUUFBUSxDQUFDLElBQXpCO0FBR2hCLFNBVkQ7QUFZQSxPQWZILE1BZVM7QUFFTCxRQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCLEtBQUssTUFBTCxDQUFZLFFBQVosQ0FBakI7QUFDRDs7QUFJTCxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNMOzs7O0FBQ0E7QUFDTDtBQUNBO0FBRUMsbUNBQXVCLFFBQXZCLEVBQWdDLFFBQWhDLEVBQXlDLElBQXpDLEVBQThDLEtBQTlDLEVBQW9EO0FBRTlDLFVBQUksU0FBUyxHQUFDLENBQWQ7QUFDQSxVQUFJLE1BQU0sR0FBQyxJQUFYO0FBRUEsVUFBSSxJQUFJLElBQUUsU0FBVixFQUFxQixJQUFJLEdBQUMsQ0FBTDtBQUNyQixVQUFJLEtBQUssSUFBRSxTQUFYLEVBQXNCLEtBQUssR0FBQyxDQUFOO0FBQ3RCLFVBQUksS0FBSyxRQUFULEVBQW1CLElBQUksR0FBQyxDQUFMO0FBQ25CLFVBQUksS0FBSyxRQUFMLENBQWMsS0FBRyxRQUFILEdBQVksSUFBWixHQUFpQixLQUEvQixLQUF1QyxTQUEzQyxFQUFzRCxPQUFPLENBQVA7O0FBQ3RELFdBQUssSUFBSSxDQUFDLEdBQUMsQ0FBWCxFQUFhLENBQUMsR0FBQyxLQUFLLFFBQUwsQ0FBYyxLQUFHLFFBQUgsR0FBWSxJQUFaLEdBQWlCLEtBQS9CLEVBQXNDLE1BQXJELEVBQTRELENBQUMsRUFBN0QsRUFDQTtBQUNDLFlBQUksS0FBSyxRQUFMLENBQWMsS0FBRyxRQUFILEdBQVksSUFBWixHQUFpQixLQUEvQixFQUFzQyxDQUF0QyxFQUF5QyxnQkFBekMsSUFBMkQsQ0FBL0QsRUFDQTtBQUNFLGNBQUksS0FBSyxRQUFMLENBQWMsS0FBRyxRQUFILEdBQVksSUFBWixHQUFpQixLQUEvQixFQUFzQyxDQUF0QyxFQUF5QyxjQUF6QyxJQUF5RCxTQUF6RCxJQUFzRSxLQUFLLFFBQUwsQ0FBYyxLQUFHLFFBQUgsR0FBWSxJQUFaLEdBQWlCLEtBQS9CLEVBQXNDLENBQXRDLEVBQXlDLGNBQXpDLElBQXlELElBQW5JLEVBQ0E7QUFDRSxZQUFBLE1BQU0sR0FBQyxLQUFLLFFBQUwsQ0FBYyxLQUFHLFFBQUgsR0FBWSxJQUFaLEdBQWlCLEtBQS9CLEVBQXNDLENBQXRDLEVBQXlDLGNBQWhEO0FBQ0Q7QUFDRixTQU5ELE1BUUE7QUFDRyxjQUFJLEtBQUssUUFBTCxDQUFjLEtBQUcsUUFBSCxHQUFZLElBQVosR0FBaUIsS0FBL0IsRUFBc0MsQ0FBdEMsRUFBeUMsVUFBekMsSUFBcUQsU0FBckQsSUFBa0UsS0FBSyxRQUFMLENBQWMsS0FBRyxRQUFILEdBQVksSUFBWixHQUFpQixLQUEvQixFQUFzQyxDQUF0QyxFQUF5QyxVQUF6QyxJQUFxRCxJQUEzSCxFQUNEO0FBQ0UsWUFBQSxNQUFNLEdBQUMsS0FBSyxRQUFMLENBQWMsS0FBRyxRQUFILEdBQVksSUFBWixHQUFpQixLQUEvQixFQUFzQyxDQUF0QyxFQUF5QyxVQUF6QyxDQUFvRCxNQUEzRDtBQUNEO0FBQ0Y7O0FBQ0MsWUFBSSxNQUFNLElBQUUsSUFBWixFQUNBO0FBQ0csY0FBSSxNQUFNLElBQUUsUUFBWixFQUNBO0FBQ0EsWUFBQSxTQUFTLEdBQUksS0FBSyxRQUFMLENBQWMsS0FBRyxRQUFILEdBQVksSUFBWixHQUFpQixLQUEvQixFQUFzQyxDQUF0QyxFQUF5QyxjQUF0RDtBQUNBO0FBQ0M7QUFDSDtBQUNGOztBQUNILGFBQU8sU0FBUDtBQUNEOzs7O0FBQ0Y7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUU7QUFDRjtBQUNBO0FBRUMsNkJBQWlCLE1BQWpCLEVBQXdCLFFBQXhCLEVBQWlDO0FBQUE7O0FBRXpCLFVBQUksUUFBUSxHQUFHLElBQWY7O0FBRUEsVUFBSSxJQUFJLElBQUksU0FBWixFQUF1QjtBQUNsQixZQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7O0FBRUEsWUFBSSxLQUFLLFFBQUwsQ0FBYyxJQUFJLEdBQUMsUUFBbkIsS0FBOEIsU0FBbEMsRUFBNEM7QUFDcEQ7QUFFUyxjQUFJLEdBQUcsR0FBRywrQkFBOEIsSUFBOUIsR0FBbUMsR0FBbkMsR0FBdUMsUUFBdkMsR0FBZ0QsR0FBMUQ7QUFDQSxlQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsQ0FBa0MsVUFBQSxRQUFRLEVBQUc7QUFHakMsZ0JBQUksUUFBUSxDQUFDLE1BQVQsS0FBa0IsR0FBdEIsRUFDQTtBQUNJLG1CQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsUUFBUSxDQUFDLElBQVQsQ0FBYyxNQUE3QixFQUFvQyxDQUFDLEVBQXJDLEVBQ0U7QUFDQyxnQkFBQSxRQUFRLENBQUMsUUFBVCxDQUFrQixRQUFRLENBQUMsSUFBVCxDQUFjLENBQWQsRUFBaUIsTUFBakIsR0FBd0IsUUFBMUMsSUFBb0QsUUFBUSxDQUFDLElBQVQsQ0FBYyxDQUFkLENBQXBEO0FBRUE7O0FBQ0Qsa0JBQUksUUFBUSxDQUFDLFFBQVQsQ0FBa0IsSUFBSSxHQUFDLFFBQXZCLEtBQWtDLFNBQXRDLEVBQWlELFFBQVEsQ0FBQyxPQUFULENBQWlCLE1BQUksQ0FBQyxRQUFMLENBQWMsSUFBSSxHQUFDLFFBQW5CLEVBQTZCLEtBQTlDLEVBQWpELEtBQ0ssUUFBUSxDQUFDLE9BQVQsQ0FBaUIsRUFBakI7QUFDSixhQVRQLE1BVVc7QUFDSCxjQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCLFFBQVEsQ0FBQyxJQUF6QjtBQUNELGFBZjBCLENBa0J0Qzs7QUFFTixXQXBCRDtBQXNCRixTQTFCQyxNQTBCSztBQUNILFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUIsS0FBSyxRQUFMLENBQWMsSUFBSSxHQUFDLFFBQW5CLEVBQTZCLEtBQTlDLEVBQXFELEdBQXJEO0FBQ0Q7QUFDTDs7QUFBQTtBQUVELGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ1A7Ozs7QUFFRDtBQUNEO0FBQ0E7QUFFQyw2QkFBaUIsSUFBakIsRUFBc0IsUUFBdEIsRUFBK0I7QUFBQTs7QUFFdEIsVUFBSSxTQUFTLEdBQUMsQ0FBQyxDQUFmOztBQUNBLFVBQUksSUFBSSxJQUFJLFNBQVosRUFBdUI7QUFFbkIsWUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsWUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQVQsQ0FBYSxVQUFTLENBQVQsRUFBWTtBQUFFLGlCQUFPLENBQUMsQ0FBQyxJQUFUO0FBQWdCLFNBQTNDLEVBQTZDLE9BQTdDLENBQXFELFFBQXJELENBQWQ7O0FBQ0EsWUFBSSxPQUFPLEdBQUMsQ0FBWixFQUFjO0FBQ3RCO0FBRVMsY0FBSSxHQUFHLEdBQUcsK0JBQThCLElBQTlCLEdBQW1DLEdBQW5DLEdBQXVDLFFBQXZDLEdBQWdELEdBQTFEO0FBQ0EsY0FBSSxRQUFRLEdBQUcsSUFBZjtBQUVBLGVBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUdqQyxnQkFBSSxRQUFRLENBQUMsTUFBVCxLQUFrQixHQUF0QixFQUNBO0FBQ0ssa0JBQUksWUFBWSxHQUFHO0FBQUMsZ0JBQUEsSUFBSSxFQUFFLFFBQVA7QUFBaUIsZ0JBQUEsUUFBUSxFQUFFLFFBQVEsQ0FBQztBQUFwQyxlQUFuQjs7QUFHQyxrQkFBSSxPQUFPLElBQUUsQ0FBYixFQUNBO0FBQ0UsZ0JBQUEsUUFBUSxDQUFDLFFBQVQsQ0FBa0IsT0FBbEIsRUFBMkIsUUFBM0IsR0FBcUMsUUFBUSxDQUFDLElBQTlDO0FBQ0EsZ0JBQUEsU0FBUyxHQUFDLE9BQVY7QUFDRCxlQUpELE1BS0E7QUFFRSxnQkFBQSxRQUFRLENBQUMsSUFBVCxDQUFjLFlBQWQ7QUFDQSxnQkFBQSxTQUFTLEdBQUMsUUFBUSxDQUFDLE1BQVQsR0FBZ0IsQ0FBMUI7QUFDRDs7QUFFRCxjQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCLE1BQUksQ0FBQyxRQUFMLENBQWMsU0FBZCxFQUF5QixRQUExQztBQUVMLGFBbEJELE1BbUJLLFFBQVEsQ0FBQyxNQUFULENBQWdCLFFBQVEsQ0FBQyxJQUF6QixFQXRCNEIsQ0F3QnJDOztBQUVQLFdBMUJEO0FBNkJGLFNBbkNDLE1BbUNLO0FBQ0gsVUFBQSxTQUFTLEdBQUMsT0FBVjtBQUNBLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUIsS0FBSyxRQUFMLENBQWMsU0FBZCxFQUF5QixRQUExQztBQUNIO0FBQ0g7O0FBQUE7QUFFRCxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNOOzs7O0FBRUY7QUFDRDtBQUNBO0FBRUMsNkJBQWlCLFFBQWpCLEVBQTBCO0FBR2IsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsVUFBSSxRQUFRLEdBQUcsSUFBZjs7QUFDQSxVQUFJLE9BQU8sQ0FBQyxNQUFSLENBQWUsS0FBSyxRQUFwQixFQUE2QixFQUE3QixDQUFKLEVBQXFDO0FBQzdDO0FBQ1ksWUFBSSxHQUFHLEdBQUcsK0JBQTZCLFFBQTdCLEdBQXNDLEdBQWhEOztBQUNBLFlBQUksU0FBUSxHQUFHLElBQWY7O0FBRUEsYUFBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBRXBDLGNBQUksUUFBUSxDQUFDLE1BQVQsS0FBa0IsR0FBdEIsRUFDQTtBQUNLLGlCQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsUUFBUSxDQUFDLElBQVQsQ0FBYyxNQUE3QixFQUFvQyxDQUFDLEVBQXJDLEVBQ0Y7QUFDRyxjQUFBLFNBQVEsQ0FBQyxRQUFULENBQWtCLFFBQVEsQ0FBQyxJQUFULENBQWMsQ0FBZCxFQUFpQixFQUFqQixHQUFvQixRQUF0QyxJQUFnRCxRQUFRLENBQUMsSUFBVCxDQUFjLENBQWQsQ0FBaEQ7QUFFRjs7QUFFRCxZQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCLFNBQVEsQ0FBQyxRQUExQjtBQUVGLFdBVkQsTUFXSyxRQUFRLENBQUMsTUFBVCxDQUFnQixRQUFRLENBQUMsSUFBekI7QUFHYixTQWhCRDtBQWtCTCxPQXZCQyxNQXVCSztBQUNILFFBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUIsUUFBUSxDQUFDLFFBQTFCO0FBQ0g7O0FBR0gsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDUDs7O1dBTUMsZ0NBQXdCLFFBQXhCLEVBQ0g7QUFFSyxVQUFJLEtBQUssTUFBTCxDQUFZLFFBQVosQ0FBSixFQUE2QixPQUFPLEtBQUssTUFBTCxDQUFZLFFBQVosQ0FBUDtBQUU3QixXQUFLLE1BQUwsQ0FBWSxRQUFaLElBQXdCLEVBQXhCO0FBQ0EsV0FBSyxTQUFMLENBQWUsUUFBZixJQUEyQixFQUEzQjtBQUNBLFVBQUksR0FBRyxHQUFDLENBQUMsQ0FBVDs7QUFFSCxXQUFLLElBQUksR0FBVCxJQUFnQixLQUFLLFFBQXJCLEVBQStCO0FBRS9CLGFBQUssSUFBSSxDQUFDLEdBQUMsQ0FBWCxFQUFhLENBQUMsR0FBQyxLQUFLLFFBQUwsQ0FBYyxHQUFkLEVBQW1CLEtBQW5CLENBQXlCLE1BQXhDLEVBQStDLENBQUMsRUFBaEQsRUFBbUQ7QUFDakQsY0FBSSxLQUFLLFFBQUwsQ0FBYyxHQUFkLEVBQW1CLEtBQW5CLENBQXlCLENBQXpCLEVBQTRCLG9CQUE1QixDQUFpRCxNQUFqRCxDQUF3RCxDQUF4RCxFQUEwRCxDQUExRCxLQUE4RCxRQUFsRSxFQUNBO0FBRUQsWUFBQSxHQUFHLEdBQUUsS0FBSyxNQUFMLENBQVksUUFBWixFQUFzQixHQUF0QixDQUEwQixVQUFTLENBQVQsRUFBWTtBQUFFLHFCQUFPLENBQUMsQ0FBQyxVQUFUO0FBQXNCLGFBQTlELEVBQWdFLE9BQWhFLENBQXdFLEtBQUssUUFBTCxDQUFjLEdBQWQsRUFBbUIsS0FBbkIsQ0FBeUIsQ0FBekIsRUFBNEIsVUFBcEcsQ0FBTDtBQUNBLGdCQUFJLEdBQUcsR0FBQyxDQUFSLEVBQVcsS0FBSyxNQUFMLENBQVksUUFBWixFQUFzQixJQUF0QixDQUEyQixLQUFLLFFBQUwsQ0FBYyxHQUFkLEVBQW1CLEtBQW5CLENBQXlCLENBQXpCLENBQTNCO0FBRVYsV0FOQSxNQU1NLElBQUksS0FBSyxRQUFMLENBQWMsR0FBZCxFQUFtQixLQUFuQixDQUF5QixDQUF6QixFQUE0QixvQkFBNUIsSUFBa0QsVUFBdEQsRUFBa0U7QUFDeEUsWUFBQSxHQUFHLEdBQUUsS0FBSyxTQUFMLENBQWUsUUFBZixFQUF5QixHQUF6QixDQUE2QixVQUFTLENBQVQsRUFBWTtBQUFFLHFCQUFPLENBQUMsQ0FBQyxVQUFUO0FBQXNCLGFBQWpFLEVBQW1FLE9BQW5FLENBQTJFLEtBQUssUUFBTCxDQUFjLEdBQWQsRUFBbUIsS0FBbkIsQ0FBeUIsQ0FBekIsRUFBNEIsVUFBdkcsQ0FBTDtBQUNBLGdCQUFJLEdBQUcsR0FBQyxDQUFSLEVBQVcsS0FBSyxTQUFMLENBQWUsUUFBZixFQUF5QixJQUF6QixDQUE4QixLQUFLLFFBQUwsQ0FBYyxHQUFkLEVBQW1CLEtBQW5CLENBQXlCLENBQXpCLENBQTlCO0FBQ1Y7QUFFRjtBQUVGLE9BeEJELENBd0JDO0FBRUQ7OztBQUNBLFdBQUssSUFBSSxDQUFDLEdBQUMsQ0FBWCxFQUFhLENBQUMsR0FBQyxLQUFLLE1BQUwsQ0FBWSxRQUFaLEVBQXNCLE1BQXJDLEVBQTRDLENBQUMsRUFBN0MsRUFBZ0Q7QUFDL0MsYUFBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLEtBQUssU0FBTCxDQUFlLFFBQWYsRUFBeUIsTUFBeEMsRUFBK0MsQ0FBQyxFQUFoRCxFQUFtRDtBQUNsRCxjQUFJLEtBQUssTUFBTCxDQUFZLFFBQVosRUFBc0IsQ0FBdEIsRUFBeUIsVUFBekIsSUFBcUMsS0FBSyxTQUFMLENBQWUsUUFBZixFQUF5QixDQUF6QixFQUE0QixjQUFyRSxFQUFvRjtBQUNsRixnQkFBSSxLQUFLLE1BQUwsQ0FBWSxRQUFaLEVBQXNCLENBQXRCLEVBQXlCLFNBQXpCLElBQXFDLFNBQXpDLEVBQW9ELEtBQUssTUFBTCxDQUFZLFFBQVosRUFBc0IsQ0FBdEIsRUFBeUIsU0FBekIsR0FBcUMsRUFBckM7QUFDcEQsWUFBQSxHQUFHLEdBQUUsS0FBSyxNQUFMLENBQVksUUFBWixFQUFzQixDQUF0QixFQUF5QixTQUF6QixDQUFtQyxHQUFuQyxDQUF1QyxVQUFTLENBQVQsRUFBWTtBQUFFLHFCQUFPLENBQUMsQ0FBQyxVQUFUO0FBQXNCLGFBQTNFLEVBQTZFLE9BQTdFLENBQXFGLEtBQUssU0FBTCxDQUFlLFFBQWYsRUFBeUIsQ0FBekIsRUFBNEIsVUFBakgsQ0FBTDtBQUNBLGdCQUFJLEdBQUcsR0FBQyxDQUFSLEVBQVcsS0FBSyxNQUFMLENBQVksUUFBWixFQUFzQixDQUF0QixFQUF5QixTQUF6QixDQUFtQyxJQUFuQyxDQUF3QyxLQUFLLFNBQUwsQ0FBZSxRQUFmLEVBQXlCLENBQXpCLENBQXhDO0FBQ1o7QUFDRDtBQUNEOztBQUdJLGFBQU8sS0FBSyxNQUFMLENBQVksUUFBWixDQUFQO0FBQ0o7QUFHRDtBQUNEO0FBQ0E7Ozs7V0FFQyw2QkFBcUIsTUFBckIsRUFBNEIsUUFBNUIsRUFBcUM7QUFFNUIsVUFBSSxNQUFNLElBQUksU0FBZCxFQUF5QjtBQUdyQixZQUFJLEtBQUssUUFBTCxDQUFjLE1BQU0sR0FBQyxRQUFyQixLQUFnQyxTQUFwQyxFQUE4QztBQUc1QyxpQkFBTyxLQUFLLFFBQUwsQ0FBYyxNQUFNLEdBQUMsUUFBckIsRUFBK0IsS0FBdEM7QUFFSCxTQUxDLE1BS0c7QUFDSCxpQkFBTyxJQUFQO0FBQ0Q7QUFDRjtBQUdOOzs7O0FBRUg7QUFDRjtBQUNBO0FBRUMsMkJBQWUsTUFBZixFQUFzQixRQUF0QixFQUErQjtBQUUxQixVQUFJLEtBQUssUUFBTCxDQUFjLE1BQU0sR0FBQyxRQUFyQixLQUFnQyxTQUFwQyxFQUFnRCxPQUFPLEtBQUssUUFBTCxDQUFjLE1BQU0sR0FBQyxRQUFyQixFQUErQixNQUF0QyxDQUFoRCxLQUNLO0FBRUYsZUFBTyxJQUFQO0FBQ0Y7QUFFTjs7OztBQUdDO0FBQ0Y7QUFDQTtBQUVHLGlDQUFxQixRQUFyQixFQUE4QixRQUE5QixFQUF1QztBQUVwQyxVQUFJLE1BQU0sR0FBQyxDQUFYOztBQUNBLFdBQUssSUFBSSxHQUFULElBQWdCLEtBQUssUUFBckIsRUFBK0I7QUFFL0IsWUFBSSxLQUFLLFFBQUwsQ0FBYyxHQUFkLEVBQW1CLE1BQW5CLElBQTJCLFFBQS9CLEVBQTBDLE1BQU0sR0FBSSxLQUFLLFFBQUwsQ0FBYyxHQUFkLEVBQW1CLE1BQTdCO0FBRzdDOztBQUNHLGFBQU8sTUFBUDtBQUNEOzs7Ozs7OztnQkEzd0RDLFcsYUE0RGMsQ0FBQyxVQUFELEVBQVksSUFBWixFQUFpQixZQUFqQixFQUE4QixVQUE5QixFQUF5QyxRQUF6QyxFQUFrRCxjQUFsRCxFQUFpRSxzQkFBakUsRUFBd0Ysa0JBQXhGLEVBQTJHLGFBQTNHLEVBQXlILGdCQUF6SCxDOztJQXF0RGQsWTtBQUNILHdCQUFZLFdBQVosRUFBd0IsUUFBeEIsRUFBaUMsVUFBakMsRUFDQTtBQUFBOztBQUNHLFNBQUssV0FBTCxHQUFpQixXQUFqQjtBQUNBLFNBQUssUUFBTCxHQUFjLFFBQWQ7QUFDQSxTQUFLLFVBQUwsR0FBa0IsVUFBbEI7QUFDRjs7OztXQUtBLGlCQUNBO0FBQ0UsV0FBSyxXQUFMLENBQWlCLEtBQWpCO0FBQ0EsV0FBSyxRQUFMLENBQWMsTUFBZCxDQUFxQixhQUFyQjtBQUNBLFdBQUssUUFBTCxDQUFjLE1BQWQsQ0FBcUIsY0FBckI7QUFDQSxXQUFLLFFBQUwsQ0FBYyxNQUFkLENBQXFCLGFBQXJCO0FBQ0EsV0FBSyxRQUFMLENBQWMsTUFBZCxDQUFxQixhQUFyQjtBQUNBLFdBQUssVUFBTCxDQUFnQixPQUFoQixHQUF3QixFQUF4QjtBQUNEOzs7Ozs7OztnQkFuQkMsWSxhQU9jLENBQUMsYUFBRCxFQUFlLFVBQWYsRUFBMEIsWUFBMUIsQzs7QUFjbEI7OztBQzV5REY7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRU0sZ0I7QUFFQyw0QkFBYSxTQUFiLEVBQXVCO0FBQUE7O0FBQUEseUNBd0dSLFlBQVk7QUFDdkIsYUFBTyxLQUFLLFFBQVo7QUFDRixLQTFHcUI7O0FBQUEsMENBNEdMLFlBQVk7QUFDMUIsV0FBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLEtBQUssUUFBTCxDQUFjLE1BQTdCLEVBQW9DLENBQUMsRUFBckMsRUFBd0M7QUFDdkMsYUFBSyxRQUFMLENBQWMsQ0FBZCxFQUFpQixJQUFqQixHQUF3QixLQUF4QjtBQUNBOztBQUdELFdBQUssYUFBTCxHQUFxQixLQUFyQjtBQUVGLEtBcEhxQjs7QUFBQSwrQ0FzSEQsWUFDcEI7QUFFSyxVQUFJLFFBQVEsR0FBRyxJQUFmO0FBQ0EsVUFBSSxRQUFRLEdBQUcsUUFBUSxJQUFJLEtBQUssU0FBTCxDQUFlLEdBQWYsQ0FBbUIsVUFBbkIsQ0FBM0I7QUFDQSxNQUFBLFFBQVEsQ0FBQyxZQUFVO0FBQ1osYUFBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLFFBQVEsQ0FBQyxRQUFULENBQWtCLE1BQWpDLEVBQXdDLENBQUMsRUFBekMsRUFBOEM7QUFDM0MsVUFBQSxRQUFRLENBQUMsY0FBVCxDQUF3QixJQUF4QixDQUE2QixPQUFPLENBQUMsSUFBUixDQUFhLFFBQVEsQ0FBQyxRQUFULENBQWtCLENBQWxCLENBQWIsQ0FBN0I7QUFDRjs7QUFFRCxRQUFBLFFBQVEsQ0FBQyxRQUFULENBQWtCLE1BQWxCLEdBQXlCLENBQXpCO0FBQ0EsUUFBQSxRQUFRLENBQUMsYUFBVCxHQUF5QixLQUF6QjtBQUNWLE9BUFcsQ0FBUjtBQVNMLEtBcElxQjs7QUFBQSwyQ0FzSU4sVUFBVSxFQUFWLEVBQ2hCO0FBRUUsVUFBSSxRQUFRLEdBQUcsSUFBZjtBQUNBLE1BQUEsUUFBUSxDQUFDLFlBQVU7QUFDZixhQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsT0FBTyxDQUFDLElBQVIsQ0FBYSxRQUFRLENBQUMsUUFBVCxDQUFrQixFQUFsQixDQUFiLENBQXpCO0FBQ0EsUUFBQSxRQUFRLENBQUMsUUFBVCxDQUFrQixNQUFsQixDQUF5QixFQUF6QixFQUE0QixDQUE1QjtBQUNILE9BSE8sQ0FBUjtBQUtELEtBL0lxQjs7QUFBQSxrREFpSkQsWUFDdkI7QUFDSyxhQUFPLEtBQUssYUFBWjtBQUVGLEtBckpxQjs7QUFBQSw4Q0F3SkwsVUFBVSxHQUFWLEVBQWMsSUFBZCxFQUNuQjtBQUVNLFdBQUssUUFBTCxDQUFjLE1BQWQsR0FBdUIsQ0FBdkI7QUFFSCxLQTdKcUI7O0FBQUU7QUFDbEIsU0FBSyxRQUFMLEdBQWdCLEVBQWhCO0FBQ0EsU0FBSyxPQUFMLEdBQWUsRUFBZjtBQUNBLFNBQUssY0FBTCxHQUFvQixFQUFwQjtBQUNBLFNBQUssYUFBTCxHQUFxQixLQUFyQjtBQUNBLFNBQUssU0FBTCxHQUFpQixTQUFqQjtBQUNOOzs7O1dBSUgsb0JBQWEsR0FBYixFQUFpQixJQUFqQixFQUNBO0FBQ087QUFDQSxVQUFJLEtBQUssR0FBQyxDQUFWO0FBQ0EsV0FBSyxPQUFMLEdBQWUsRUFBZjs7QUFDQSxVQUFJLEtBQUssUUFBTCxDQUFjLE1BQWQsR0FBdUIsR0FBM0IsRUFBZ0M7QUFFNUIsYUFBSyxPQUFMLENBQWEsT0FBYixHQUF1QixHQUF2QjtBQUNBLFlBQUksT0FBTyxHQUFQLElBQVksUUFBaEIsRUFBNEIsS0FBSyxPQUFMLENBQWEsT0FBYixHQUF1QjtBQUFDLHFCQUFVO0FBQVgsU0FBdkI7QUFDNUIsWUFBSSxRQUFPLEdBQVAsS0FBWSxRQUFoQixFQUE0QixLQUFLLE9BQUwsQ0FBYSxPQUFiLEdBQXVCO0FBQUMscUJBQVUsSUFBSSxDQUFDLFNBQUwsQ0FBZSxHQUFmO0FBQVgsU0FBdkI7QUFFNUIsYUFBSyxPQUFMLENBQWEsSUFBYixHQUFrQixJQUFsQjtBQUNBLGFBQUssT0FBTCxDQUFhLElBQWIsR0FBa0IsSUFBbEI7QUFDQSxhQUFLLE9BQUwsQ0FBYSxHQUFiLEdBQWlCLFNBQWpCO0FBQ0EsYUFBSyxPQUFMLENBQWEsRUFBYixHQUFnQixJQUFJLElBQUosR0FBVyxjQUFYLEVBQWhCO0FBQ0EsYUFBSyxRQUFMLENBQWMsT0FBZCxDQUFzQixLQUFLLE9BQTNCO0FBQ0EsYUFBSyxhQUFMLEdBQXFCLElBQXJCO0FBQ0EsYUFBSyxRQUFMLENBQWMsQ0FBZCxFQUFpQixLQUFqQixHQUF5QixLQUFLLFFBQUwsQ0FBYyxNQUF2QztBQUNBLFFBQUEsS0FBSyxHQUFJLEtBQUssUUFBTCxDQUFjLE1BQXZCOztBQUVaLFlBQUksS0FBSyxPQUFMLENBQWEsSUFBYixJQUFtQixTQUFuQixJQUFnQyxLQUFLLE9BQUwsQ0FBYSxJQUFiLElBQW1CLE1BQXZELEVBQStEO0FBQzlELFVBQUEsT0FBTyxDQUFDLEdBQVIsQ0FBWSxHQUFaLEVBRDhELENBRTlEO0FBQ0E7O0FBRVcsWUFBSSxRQUFRLEdBQUcsUUFBUSxJQUFJLEtBQUssU0FBTCxDQUFlLEdBQWYsQ0FBbUIsVUFBbkIsQ0FBM0I7QUFDQSxZQUFJLFFBQVEsR0FBRyxJQUFmO0FBQ0EsWUFBSSxLQUFLLE9BQUwsQ0FBYSxJQUFiLElBQW1CLE9BQXZCLEVBQ0ksUUFBUSxDQUFDLFlBQVU7QUFDYixlQUFLLElBQUksQ0FBQyxHQUFFLENBQVosRUFBYyxDQUFDLEdBQUMsUUFBUSxDQUFDLFFBQVQsQ0FBa0IsTUFBbEMsRUFBeUMsQ0FBQyxFQUExQyxFQUE4QztBQUM1QyxnQkFBSSxRQUFRLENBQUMsUUFBVCxDQUFrQixDQUFsQixFQUFxQixLQUFyQixJQUE4QixLQUFsQyxFQUE2QztBQUMzQyxjQUFBLFFBQVEsQ0FBQyxjQUFULENBQXdCLElBQXhCLENBQTZCLE9BQU8sQ0FBQyxJQUFSLENBQWEsUUFBUSxDQUFDLFFBQVQsQ0FBa0IsQ0FBbEIsQ0FBYixDQUE3QjtBQUNBLGNBQUEsUUFBUSxDQUFDLFFBQVQsQ0FBa0IsTUFBbEIsQ0FBeUIsQ0FBekIsRUFBMkIsQ0FBM0I7QUFDQTtBQUNEO0FBQ0Y7QUFFTixTQVRPLEVBU04sSUFUTSxDQUFSO0FBV1A7QUFDSjs7O1dBRUosOEJBQXNCLEdBQXRCLEVBQTBCLEtBQTFCLEVBQWdDLElBQWhDLEVBQXFDLEdBQXJDLEVBQTBDO0FBQ25DO0FBQ0EsVUFBSSxLQUFLLEdBQUMsQ0FBVjtBQUNBLFdBQUssT0FBTCxHQUFlLEVBQWY7QUFDQSxVQUFJLFFBQVEsR0FBRyxJQUFmOztBQUNBLFVBQUksS0FBSyxRQUFMLENBQWMsTUFBZCxHQUFxQixHQUF6QixFQUE4QjtBQUVyQixhQUFLLE9BQUwsQ0FBYSxPQUFiLEdBQXVCLEdBQXZCO0FBQ0EsWUFBSSxPQUFPLEdBQVAsSUFBWSxRQUFoQixFQUEyQixLQUFLLE9BQUwsQ0FBYSxPQUFiLEdBQXVCO0FBQUMscUJBQVU7QUFBWCxTQUF2QjtBQUMzQixZQUFJLFFBQU8sR0FBUCxLQUFZLFFBQWhCLEVBQTBCLEtBQUssT0FBTCxDQUFhLE9BQWIsR0FBdUI7QUFBQyxxQkFBVSxJQUFJLENBQUMsU0FBTCxDQUFlLEdBQWY7QUFBWCxTQUF2QjtBQUUxQixhQUFLLE9BQUwsQ0FBYSxLQUFiLEdBQXFCLEtBQXJCO0FBQ0EsWUFBSSxPQUFPLEtBQVAsSUFBYyxRQUFsQixFQUE0QixLQUFLLE9BQUwsQ0FBYSxPQUFiLEdBQXVCO0FBQUMsbUJBQVE7QUFBVCxTQUF2QjtBQUM1QixZQUFJLFFBQU8sS0FBUCxLQUFjLFFBQWxCLEVBQTRCLEtBQUssT0FBTCxDQUFhLE9BQWIsR0FBdUI7QUFBQyxtQkFBUSxJQUFJLENBQUMsU0FBTCxDQUFlLEtBQWY7QUFBVCxTQUF2QjtBQUU1QixhQUFLLE9BQUwsQ0FBYSxJQUFiLEdBQWtCLElBQWxCO0FBQ0EsYUFBSyxPQUFMLENBQWEsSUFBYixHQUFrQixJQUFsQjtBQUNBLGFBQUssT0FBTCxDQUFhLEdBQWIsR0FBaUIsR0FBakI7QUFDQSxhQUFLLE9BQUwsQ0FBYSxFQUFiLEdBQWdCLElBQUksSUFBSixHQUFXLGNBQVgsRUFBaEI7QUFDQSxhQUFLLFFBQUwsQ0FBYyxPQUFkLENBQXNCLEtBQUssT0FBM0I7QUFDQSxhQUFLLGFBQUwsR0FBcUIsSUFBckI7QUFDQSxhQUFLLFFBQUwsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLEdBQXlCLEtBQUssUUFBTCxDQUFjLE1BQXZDO0FBQ0EsUUFBQSxLQUFLLEdBQUcsS0FBSyxRQUFMLENBQWMsTUFBdEI7QUFFQSxZQUFJLFFBQVEsR0FBRyxRQUFRLElBQUksS0FBSyxTQUFMLENBQWUsR0FBZixDQUFtQixVQUFuQixDQUEzQjtBQUNBLFlBQUksS0FBSyxPQUFMLENBQWEsSUFBYixJQUFtQixPQUF2QixFQUVJLFFBQVEsQ0FBQyxZQUFVO0FBQ2YsZUFBSyxJQUFJLENBQUMsR0FBRSxDQUFaLEVBQWMsQ0FBQyxHQUFDLFFBQVEsQ0FBQyxRQUFULENBQWtCLE1BQWxDLEVBQXlDLENBQUMsRUFBMUMsRUFBOEM7QUFDNUMsZ0JBQUksUUFBUSxDQUFDLFFBQVQsQ0FBa0IsQ0FBbEIsRUFBcUIsS0FBckIsSUFBOEIsS0FBbEMsRUFBNEM7QUFDMUMsY0FBQSxRQUFRLENBQUMsY0FBVCxDQUF3QixJQUF4QixDQUE2QixPQUFPLENBQUMsSUFBUixDQUFhLFFBQVEsQ0FBQyxRQUFULENBQWtCLENBQWxCLENBQWIsQ0FBN0I7QUFDQSxjQUFBLFFBQVEsQ0FBQyxRQUFULENBQWtCLE1BQWxCLENBQXlCLENBQXpCLEVBQTJCLENBQTNCO0FBQ0E7QUFDRDtBQUVGO0FBRUwsU0FWUSxFQVVQLElBVk8sQ0FBUjtBQVdaO0FBQ1A7OztXQUVELG1DQUNBO0FBQ00sVUFBSSxVQUFVLEdBQUMsQ0FBZjs7QUFDQSxXQUFJLElBQUksQ0FBQyxHQUFDLENBQVYsRUFBWSxDQUFDLEdBQUMsS0FBSyxRQUFMLENBQWMsTUFBNUIsRUFBbUMsQ0FBQyxFQUFwQyxFQUF5QztBQUN4QyxZQUFJLEtBQUssUUFBTCxDQUFjLENBQWQsRUFBaUIsSUFBckIsRUFBMkIsVUFBVTtBQUNyQzs7QUFFSixhQUFPLFVBQVA7QUFFSDs7Ozs7O2dCQXhHQyxnQixhQVVpQixDQUFDLFdBQUQsQzs7ZUF3SlAsZ0I7Ozs7QUN4S2hCO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7Ozs7Ozs7O0lBRU0saUI7QUFFSiwrQkFDQTtBQUFBOztBQUNFLFNBQUssY0FBTCxHQUFxQixLQUFyQjtBQUNBLFNBQUssZUFBTCxHQUF1QixFQUF2QjtBQUVEOzs7O1dBQ0Usc0JBQWdCLEdBQWhCLEVBQXFCO0FBQ2hCLGFBQVEsVUFBVSxDQUFDLFlBQVk7QUFFN0IsYUFBSyxlQUFMLEdBQXVCLEdBQXZCO0FBQ0EsYUFBSyxjQUFMLEdBQW9CLElBQXBCO0FBQ0EsZUFBTyxLQUFLLGNBQVo7QUFFRSxPQU5jLENBQWxCO0FBUUQ7OztXQUVELDZCQUFzQjtBQUNwQixhQUFRLFVBQVUsQ0FBQyxZQUFZO0FBRTdCLGFBQUssY0FBTCxHQUFvQixJQUFwQjtBQUNBLGVBQU8sS0FBSyxjQUFaO0FBRUUsT0FMYyxDQUFsQjtBQU9EOzs7V0FFRCx3QkFBaUIsR0FBakIsRUFBc0I7QUFFbEIsV0FBSyxlQUFMLEdBQXVCLEdBQXZCO0FBRUEsYUFBTyxLQUFLLGVBQVosQ0FKa0IsQ0FLbEI7QUFFRTs7O1dBR04sd0JBQWdCO0FBQ2IsYUFBTyxVQUFVLENBQUMsWUFBWTtBQUN6QixhQUFLLGVBQUwsR0FBdUIsRUFBdkI7QUFDQSxhQUFLLGNBQUwsR0FBb0IsS0FBcEI7QUFDQSxlQUFPLEtBQUssY0FBWjtBQUVILE9BTGUsRUFLYixJQUxhLENBQWpCLENBRGEsQ0FNRjtBQUNiOzs7Ozs7ZUFFTyxpQjs7OztBQ3REaEI7QUFDQTtBQUNBO0FBRUEsYSxDQUVBOzs7Ozs7Ozs7Ozs7Ozs7SUFFTSxvQjtBQUVKLGdDQUFZLEtBQVosRUFBa0IsRUFBbEIsRUFBcUIsVUFBckIsRUFBZ0MsZ0JBQWhDLEVBQWlELGNBQWpELEVBQ0E7QUFBQTs7QUFDQyxTQUFLLEtBQUwsR0FBYSxFQUFiLENBREQsQ0FDa0I7O0FBQ2hCLFNBQUssS0FBTCxHQUFZLEtBQVo7QUFDQSxTQUFLLEVBQUwsR0FBVSxFQUFWO0FBQ0EsU0FBSyxVQUFMLEdBQWtCLFVBQWxCO0FBQ0EsU0FBSyxnQkFBTCxHQUF3QixnQkFBeEI7QUFDQSxTQUFLLGNBQUwsR0FBcUIsY0FBckI7QUFDRDs7OztXQUtGLHlCQUFrQixRQUFsQixFQUE0QjtBQUVuQixVQUFJLFdBQVcsR0FBQyxFQUFoQjtBQUNBLFVBQUksR0FBRyxHQUFDLDJCQUFSOztBQUNBLFVBQUksUUFBUSxDQUFDLGFBQVQsS0FBeUIsU0FBN0IsRUFDQTtBQUNJLFFBQUEsUUFBUSxDQUFDLGFBQVQsQ0FBdUIsWUFBdkIsR0FBcUMsQ0FBckM7QUFDQSxRQUFBLFFBQVEsQ0FBQyxhQUFULENBQXVCLE9BQXZCLEdBQWdDLEtBQWhDO0FBQ0EsUUFBQSxRQUFRLENBQUMsSUFBVCxHQUFnQixLQUFLLFVBQUwsQ0FBZ0IsT0FBaEIsQ0FBd0IsV0FBeEIsQ0FBb0MsT0FBcEQ7QUFDQSxRQUFBLFFBQVEsQ0FBQyxPQUFULEdBQWtCLENBQWxCO0FBQ0EsUUFBQSxRQUFRLENBQUMsYUFBVCxDQUF1QixZQUF2QixHQUFzQyxLQUF0QztBQUNBLFFBQUEsUUFBUSxDQUFDLGFBQVQsQ0FBdUIsV0FBdkIsR0FBcUMsS0FBckM7QUFDRDs7QUFFSCxNQUFBLFdBQVcsR0FBQyxNQUFaO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUEsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLFFBQTdCLEVBQXVDLElBQXZDLENBQTRDLFVBQUEsUUFBUSxFQUFHO0FBRTdDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBd0Q7QUFBRztBQUM5QyxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXNCLFlBQUEsR0FBRyxFQUFDLHlDQUExQjtBQUFvRSxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBcEYsV0FBakI7QUFDWixTQUZELE1BRU87QUFDQyxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUMsc0VBQW9FLFFBQVEsQ0FBQyxNQUE3RSxHQUFvRixnQkFBcEYsR0FBcUcsUUFBUSxDQUFDLFVBQTlHLEdBQXlILEdBQXpILEdBQTZILFFBQVEsQ0FBQyxJQUEzSTtBQUFnSixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBaEssV0FBaEI7QUFDSDtBQUNaLE9BUEg7QUFVQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNEOzs7V0FHTCwwQkFBbUIsUUFBbkIsRUFBNkI7QUFBRTtBQUV6QixVQUFJLFdBQVcsR0FBQyxFQUFoQjtBQUNBLFVBQUksR0FBRyxHQUFDLDRCQUFSO0FBRUEsTUFBQSxXQUFXLEdBQUMsTUFBWjtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVBLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixRQUE3QixFQUF1QyxJQUF2QyxDQUE0QyxVQUFBLFFBQVEsRUFBRztBQUM3QyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXdEO0FBQzlDLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxHQUFHLEVBQUMseUNBQXpCO0FBQW1FLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFuRixXQUFqQjtBQUNULFNBRkQsTUFFTztBQUFHO0FBQ04sY0FBSSxRQUFRLENBQUMsTUFBVCxJQUFpQixHQUFyQixFQUEwQixRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFULEdBQWMsMkRBQXBCO0FBQWdGLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFoRyxXQUFoQixFQUExQixLQUNLLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUMsaURBQUw7QUFBdUQsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXZFLFdBQWhCO0FBQ1I7QUFDUixPQVBIO0FBU0EsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDRDs7O1dBR1I7QUFDSSx5QkFBYSxJQUFiLEVBQWtCLGFBQWxCLEVBQWdDLFlBQWhDLEVBQTZDLFVBQTdDLEVBQXlEO0FBRXBELFVBQUksV0FBVyxHQUFDLE1BQWhCO0FBQ0EsVUFBSSxHQUFHLEdBQUMsNkJBQTJCLGFBQTNCLEdBQXlDLEdBQWpEO0FBQ0UsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUMsVUFBSSxTQUFTLEdBQUU7QUFBQyx5QkFBZ0IsYUFBakI7QUFBK0Isd0JBQWUsWUFBOUM7QUFBMkQsZ0JBQU8sSUFBbEU7QUFBdUUsc0JBQWE7QUFBcEYsT0FBZjtBQUNELFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixTQUE3QixFQUF3QyxJQUF4QyxDQUE2QyxVQUFBLFFBQVEsRUFBRztBQUVoRCxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXhCLEVBQTZCO0FBQ3pCO0FBRVUsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFFYixTQUxELE1BS087QUFFQyxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUMsdUNBQUw7QUFBNkMsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTdELFdBQWhCO0FBRVA7QUFFUixPQWJEO0FBaUJBLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUVIO0FBQ0QsK0JBQW1CLElBQW5CLEVBQXdCLGFBQXhCLEVBQXNDLEVBQXRDLEVBQXlDLFlBQXpDLEVBQXNELFVBQXRELEVBQWtFO0FBRTdELFVBQUksV0FBVyxHQUFDLE1BQWhCO0FBQ0EsVUFBSSxHQUFHLEdBQUMseUJBQXVCLGFBQXZCLEdBQXFDLEdBQXJDLEdBQXlDLEVBQXpDLEdBQTRDLEdBQXBEO0FBQ0UsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUMsVUFBSSxTQUFTLEdBQUU7QUFBQyxzQkFBYSxFQUFkO0FBQWlCLHlCQUFnQixhQUFqQztBQUErQyx3QkFBZSxZQUE5RDtBQUEyRSxnQkFBTyxJQUFsRjtBQUF1RixzQkFBYTtBQUFwRyxPQUFmO0FBQ0QsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLFNBQTdCLEVBQXdDLElBQXhDLENBQTZDLFVBQUEsUUFBUSxFQUFHO0FBRWhELFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFBRTtBQUNqQixVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUNiLFNBRkQsTUFFTztBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBQyw2Q0FBTDtBQUFtRCxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBbkUsV0FBaEI7QUFDSDtBQUNSLE9BUEQ7QUFXRCxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNOOzs7V0FHQTtBQUNBLDZCQUFpQixhQUFqQixFQUFnQztBQUUzQixVQUFJLFdBQVcsR0FBQyxLQUFoQjtBQUNBLFVBQUksR0FBRyxHQUFDLDhCQUE0QixhQUE1QixHQUEwQyxHQUFsRDtBQUNFLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVHLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUV4QyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXdEO0FBQ3BEO0FBRVUsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDYixTQUpELE1BSU87QUFFSDtBQUNBLFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBQywwQ0FBTDtBQUFnRCxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBaEUsV0FBaEI7QUFDSCxTQVZ1QyxDQVc3Qzs7QUFDRixPQVpFO0FBZ0JILGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ1A7OztXQUdJO0FBQ0oseUJBQWEsRUFBYixFQUFpQjtBQUVaLFVBQUksV0FBVyxHQUFDLEtBQWhCO0FBQ0EsVUFBSSxHQUFHLEdBQUMseUJBQXVCLEVBQXZCLEdBQTBCLEdBQWxDO0FBQ0UsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUksV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBR3pDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBd0Q7QUFDcEQ7QUFFVSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsR0FBRyxFQUFDLElBQXpCO0FBQThCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUE5QyxXQUFqQjtBQUNiLFNBSkQsTUFJTztBQUVIO0FBRUEsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFDLHNDQUFMO0FBQTRDLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUE1RCxXQUFoQjtBQUNILFNBWndDLENBYTdDOztBQUNILE9BZEc7QUFrQkosYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDUDs7O1dBQ0w7QUFDQztBQUNBO0FBRUE7QUFDQyw0QkFBaUI7QUFFVCxVQUFJLFdBQVcsR0FBQyxLQUFoQjtBQUNBLFVBQUksR0FBRyxHQUFDLDBCQUFSO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0wsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBRzlCLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFDckQ7QUFFVSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXVCLFlBQUEsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFyQztBQUEyQyxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBM0QsV0FBakI7QUFDYixTQUpELE1BSU87QUFFSDtBQUVBLFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBQyw0Q0FBTDtBQUFrRCxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBbEUsV0FBaEI7QUFDSCxTQVo2QixDQWFsQzs7QUFDSCxPQWRSO0FBaUJNLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ047OztXQUVEO0FBQ0E7QUFFQTtBQUNGLDhDQUFtQyxVQUFuQyxFQUErQyxVQUEvQyxFQUEyRDtBQUVuRCxVQUFJLFdBQVcsR0FBQyxLQUFoQjtBQUVBLFVBQUksR0FBRyxHQUFDLGdEQUE4QyxVQUE5QyxHQUF5RCxHQUFqRTtBQUNOLFVBQUksVUFBSixFQUFnQixHQUFHLEdBQUMsZ0RBQThDLFVBQTlDLEdBQXlELEdBQXpELEdBQStELFVBQS9ELEdBQTRFLEdBQWhGO0FBRVYsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0MsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBR3BDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFDckQ7QUFFVSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXVCLFlBQUEsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFyQztBQUEyQyxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBM0QsV0FBakI7QUFDYixTQUpELE1BSU87QUFFSDtBQUVBLFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBQywrRUFBTDtBQUFxRixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckcsV0FBaEI7QUFDSCxTQVptQyxDQWF4Qzs7QUFDSCxPQWRGO0FBaUJBLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ047OztXQUVKO0FBQ0E7QUFFQTtBQUNDLHlCQUFjLElBQWQsRUFBbUIsSUFBbkIsRUFBd0IsS0FBeEIsRUFBK0I7QUFFdkIsVUFBSSxXQUFXLEdBQUMsTUFBaEI7QUFDQSxVQUFJLEdBQUcsR0FBQywwQkFBd0IsSUFBeEIsR0FBNkIsR0FBckM7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFQyxVQUFJLFNBQVMsR0FBRTtBQUFDLFFBQUEsUUFBUSxFQUFDLElBQVY7QUFBZSxRQUFBLFNBQVMsRUFBQztBQUF6QixPQUFmO0FBQ0MsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLFNBQTdCLEVBQXdDLElBQXhDLENBQTZDLFVBQUEsUUFBUSxFQUFHO0FBQ2hELFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBd0Q7QUFDcEQ7QUFDVSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUNiLFNBSEQsTUFHTztBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBQyx5Q0FBTDtBQUErQyxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBL0QsV0FBaEI7QUFDSDtBQUNSLE9BUEQ7QUFVRCxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNGOzs7V0FFUDtBQUNEO0FBRUE7QUFDQyxnQ0FBcUIsUUFBckIsRUFBK0I7QUFFdkIsVUFBSSxXQUFXLEdBQUMsS0FBaEI7QUFDQSxVQUFJLEdBQUcsR0FBQyw2QkFBMkIsUUFBUSxDQUFDLEVBQXBDLEdBQXVDLEdBQS9DO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUMsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTRCLFFBQTVCLEVBQXNDLElBQXRDLENBQTJDLFVBQUEsUUFBUSxFQUFHO0FBQ2pELFFBQUEsUUFBUSxDQUFDLElBQVQsR0FBZ0IsSUFBaEIsQ0FBcUIsVUFBQSxJQUFJLEVBQUU7QUFFdkIsY0FBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUEvQyxJQUF3RCxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFoRixFQUFxRjtBQUNqRjtBQUVVLFlBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxjQUFBLElBQUksRUFBRSxJQUFQO0FBQVksY0FBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTVCLGFBQWpCO0FBQ2IsV0FKRCxNQUlPO0FBRUg7QUFFQSxZQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsY0FBQSxHQUFHLEVBQUMsbURBQUw7QUFBeUQsY0FBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXpFLGFBQWhCO0FBQ0g7QUFDSixTQVpEO0FBYUgsT0FkRjtBQWlCQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNGOzs7V0FFTDtBQUNIO0FBRUE7QUFDUyxtQ0FBd0IsUUFBeEIsRUFBa0M7QUFFbEMsVUFBSSxXQUFXLEdBQUMsS0FBaEI7QUFDQSxVQUFJLEdBQUcsR0FBQyxpQ0FBK0IsUUFBUSxDQUFDLEVBQXhDLEdBQTJDLEdBQW5EO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmLENBSmtDLENBS2xDOztBQUVBLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE0QixRQUE1QixFQUFzQyxJQUF0QyxDQUEyQyxVQUFBLFFBQVEsRUFBRztBQUNoRCxRQUFBLFFBQVEsQ0FBQyxJQUFULEdBQWdCLElBQWhCLENBQXFCLFVBQUEsSUFBSSxFQUFFO0FBRXZCLGNBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBd0Q7QUFDcEQ7QUFFVSxZQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsY0FBQSxJQUFJLEVBQUUsSUFBUDtBQUFZLGNBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUE1QixhQUFqQjtBQUNiLFdBSkQsTUFJTztBQUVIO0FBRUEsWUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLGNBQUEsR0FBRyxFQUFDLDBEQUFMO0FBQWdFLGNBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFoRixhQUFoQjtBQUNIO0FBQ0osU0FaRDtBQWFILE9BZEg7QUFpQkUsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDUDs7O1dBQ0Q7QUFDSDtBQUVBO0FBQ0MsdUNBQTRCLFdBQTVCLEVBQXdDLFVBQXhDLEVBQW9EO0FBRTVDLFVBQUksV0FBVyxHQUFDLE1BQWhCO0FBQ0EsVUFBSSxHQUFHLEdBQUMseUNBQXVDLFdBQXZDLEdBQW1ELEdBQTNEO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUEsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLFVBQTdCLEVBQXlDLElBQXpDLENBQThDLFVBQUEsUUFBUSxFQUFHO0FBRS9DLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBL0MsSUFBc0QsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBOUUsRUFBb0Y7QUFDaEY7QUFDUSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxHQUFHLEVBQUUsUUFBUSxDQUFDLElBQWY7QUFBb0IsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXBDLFdBQWpCLEVBRndFLENBRy9FO0FBQ0osU0FKRCxNQUlPO0FBQ0ssVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFDLDREQUEwRCxRQUFRLENBQUMsTUFBbkUsR0FBMEUsZ0JBQTFFLEdBQTJGLFFBQVEsQ0FBQyxVQUFwRyxHQUErRyxHQUEvRyxHQUFtSCxJQUF4SDtBQUE2SCxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBN0ksV0FBaEI7QUFFWDtBQUdSLE9BWkg7QUFlRSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNQOzs7V0FFRDtBQUNIO0FBQ0E7QUFDRyw4QkFBbUIsWUFBbkIsRUFBaUM7QUFFM0IsVUFBSSxXQUFXLEdBQUMsTUFBaEI7QUFDQSxVQUFJLEdBQUcsR0FBQyw4QkFBNEIsWUFBWSxDQUFDLEVBQXpDLEdBQTRDLEdBQXBEO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUEsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLFlBQTdCLEVBQTJDLElBQTNDLENBQWdELFVBQUEsUUFBUSxFQUFHO0FBQ2pELFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBd0Q7QUFDcEQ7QUFDVSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsSUFBUDtBQUFZLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUE1QixXQUFqQjtBQUNiLFNBSEQsTUFHTztBQUVIO0FBQ0EsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFDLGdEQUFMO0FBQXNELFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUF0RSxXQUFoQjtBQUNIO0FBQ1IsT0FUSDtBQVlDLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ047OztXQUVKO0FBQ0E7QUFFQTtBQUNDLCtCQUFvQixVQUFwQixFQUFnQztBQUV4QixVQUFJLFdBQVcsR0FBQyxLQUFoQjtBQUNBLFVBQUksR0FBRyxHQUFDLDZCQUEyQixVQUEzQixHQUFzQyxHQUE5QztBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVBLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUNuQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXdEO0FBQ3BELFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ0gsU0FGRCxNQUVPO0FBQ0g7QUFDQSxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUMsaURBQUw7QUFBdUQsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXZFLFdBQWhCO0FBQ0g7QUFDUixPQVBIO0FBVUUsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDUDs7O1dBSUEseUJBQWtCLFVBQWxCLEVBQTZCLFFBQTdCLEVBQXNDLElBQXRDLEVBQTJDLE9BQTNDLEVBQW9EO0FBRWhELFVBQUksV0FBVyxHQUFDLEtBQWhCO0FBQ0EsVUFBSSxPQUFPLEtBQUcsU0FBZCxFQUF5QixPQUFPLEdBQUMsQ0FBUjtBQUN6QixVQUFJLEdBQUcsR0FBQyw4QkFBNkIsVUFBN0IsR0FBeUMsR0FBekMsR0FBNkMsUUFBN0MsR0FBc0QsR0FBdEQsR0FBMEQsSUFBMUQsR0FBK0QsR0FBL0QsR0FBbUUsT0FBbkUsR0FBMkUsR0FBbkY7QUFDQSxVQUFJLEtBQUssR0FBRyxVQUFVLEdBQUcsR0FBYixHQUFtQixRQUFuQixHQUE4QixHQUE5QixHQUFvQyxJQUFoRDtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVBLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUVsQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQS9DLElBQXdELFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQWhGLEVBQXFGO0FBQ2pGO0FBQ0csVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDTixTQUhELE1BR087QUFDSDtBQUNBLFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBQyxtREFBaUQsUUFBUSxDQUFDLEdBQS9EO0FBQW1FLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFuRixXQUFoQjtBQUNIO0FBRVIsT0FWSjtBQWFHLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBRU4sSyxDQUlKO0FBQ0Q7QUFDQTs7OztXQUNDLHVDQUFnQyxVQUFoQyxFQUEyQyxPQUEzQyxFQUFtRCxJQUFuRCxFQUF5RDtBQUVqRCxVQUFJLFdBQVcsR0FBQyxLQUFoQjtBQUNBLFVBQUksR0FBRyxHQUFDLDhDQUE2QyxVQUE3QyxHQUF5RCxHQUF6RCxHQUE2RCxPQUE3RCxHQUFzRSxHQUF0RSxHQUEwRSxJQUExRSxHQUErRSxHQUF2RjtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNDLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUNJLFVBQUEsUUFBUSxFQUFHO0FBQ0gsWUFBSSxRQUFRLENBQUMsSUFBVCxDQUFjLE1BQWQsSUFBc0IsQ0FBMUIsRUFBNkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEI7O0FBQzVCLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBMEQ7QUFBRTtBQUN4RCxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUNILFNBRkQsTUFFTztBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBQyx3RUFBTDtBQUE4RSxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBOUYsV0FBaEI7QUFDSDtBQUNSLE9BUk4sRUFTSyxVQUFBLEdBQUcsRUFBSTtBQUNGLFFBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxVQUFBLEdBQUcsRUFBQyx3RUFBTDtBQUE4RSxVQUFBLE1BQU0sRUFBQyxHQUFHLENBQUM7QUFBekYsU0FBaEI7QUFDSixPQVhOO0FBY0MsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDUDs7O1dBQ0g7QUFDRDtBQUNBO0FBQ0MsMkJBQWdCLFVBQWhCLEVBQTJCLElBQTNCLEVBQWdDLE9BQWhDLEVBQXlDO0FBRXJDLFVBQUksV0FBVyxHQUFDLEtBQWhCO0FBQ0MsVUFBSSxPQUFPLEtBQUssU0FBaEIsRUFBMkIsT0FBTyxHQUFHLENBQVY7QUFDNUIsVUFBSSxHQUFHLEdBQUMsNEJBQTJCLFVBQTNCLEdBQXVDLEdBQXZDLEdBQTJDLElBQTNDLEdBQWdELEdBQWhELEdBQW9ELE9BQXBELEdBQTRELEdBQXBFO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsVUFBSSxVQUFVLEdBQUMsS0FBZjtBQUNFLE1BQUEsVUFBVSxHQUFHLFVBQVUsQ0FBQyxRQUFYLEVBQWI7O0FBQ0YsVUFBSSxLQUFLLEtBQUwsQ0FBVyxlQUFYLE1BQStCLFNBQW5DLEVBQ0E7QUFDRyxZQUFHLEtBQUssS0FBTCxDQUFXLGFBQVgsQ0FBeUIsVUFBVSxHQUFDLElBQXBDLE1BQTZDLFNBQWhELEVBQ0E7QUFDRyxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUcsS0FBSyxLQUFMLENBQVcsYUFBWCxDQUF5QixVQUFVLEdBQUMsSUFBcEMsQ0FBUjtBQUFrRCxZQUFBLE1BQU0sRUFBQztBQUF6RCxXQUFqQjtBQUNGLFNBSEQsTUFLQTtBQUNFLGVBQUssS0FBTCxDQUFXLGVBQVgsRUFBNEIsVUFBVSxHQUFDLElBQXZDLElBQStDLEVBQS9DO0FBQ0EsVUFBQSxVQUFVLEdBQUMsSUFBWDtBQUNEO0FBQ0gsT0FYRCxNQVlBO0FBQ0csYUFBSyxLQUFMLENBQVcsZUFBWCxJQUE4QixFQUE5QjtBQUNBLGFBQUssS0FBTCxDQUFXLGVBQVgsRUFBNEIsVUFBVSxHQUFDLElBQXZDLElBQStDLEVBQS9DO0FBQ0EsUUFBQSxVQUFVLEdBQUMsSUFBWDtBQUNGOztBQUNBLFVBQUksVUFBSixFQUNBO0FBQ0csWUFBSSxRQUFRLEdBQUcsSUFBZjtBQUNBLGFBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUVuQyxjQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQS9DLElBQXdELFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQWhGLEVBQXFGO0FBQ2pGO0FBQ0ksWUFBQSxRQUFRLENBQUMsS0FBVCxDQUFlLGVBQWYsRUFBZ0MsVUFBVSxHQUFDLElBQTNDLElBQW1ELFFBQVEsQ0FBQyxJQUE1RDtBQUNBLFlBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxjQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsY0FBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLGFBQWpCO0FBQ1AsV0FKRCxNQUlPO0FBQ0gsWUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLGNBQUEsR0FBRyxFQUFDLDRDQUFMO0FBQWtELGNBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFsRSxhQUFoQjtBQUNILFdBUmtDLENBU3ZDOztBQUNILFNBVkg7QUFZRjs7QUFDQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FDRztBQUNQO0FBQ0E7QUFDQyxpQ0FBc0IsVUFBdEIsRUFBaUMsU0FBakMsRUFBMkMsV0FBM0MsRUFBdUQsSUFBdkQsRUFBNkQ7QUFFckQsVUFBSSxXQUFXLEdBQUMsS0FBaEI7QUFFQSxVQUFJLEdBQUcsR0FBQyxvQ0FBbUMsVUFBbkMsR0FBK0MsR0FBL0MsR0FBb0QsU0FBcEQsR0FBK0QsR0FBL0QsR0FBbUUsV0FBbkUsR0FBK0UsR0FBL0UsR0FBbUYsSUFBbkYsR0FBd0YsR0FBaEc7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQSxXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsQ0FBa0MsVUFBQSxRQUFRLEVBQUc7QUFHbkMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUEvQyxJQUF3RCxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFoRixFQUFxRjtBQUNqRjtBQUVJLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBc0IsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXRDLFdBQWpCO0FBQ1AsU0FKRCxNQUlPO0FBRUg7QUFFQSxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUMsa0RBQUw7QUFBd0QsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXhFLFdBQWhCO0FBQ0gsU0Faa0MsQ0FheEM7O0FBQ0YsT0FkSDtBQWdCRSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNQOzs7V0FDSDtBQUNEO0FBQ0E7QUFDQyxpQ0FBc0IsVUFBdEIsRUFBaUMsY0FBakMsRUFBZ0QsSUFBaEQsRUFBcUQsTUFBckQsRUFBNEQsSUFBNUQsRUFBaUUsU0FBakUsRUFBNEU7QUFFcEUsVUFBSSxTQUFTLElBQUUsU0FBZixFQUEyQixTQUFTLEdBQUMsS0FBVjtBQUMzQixVQUFJLFdBQVcsR0FBQyxNQUFoQjtBQUNBLFVBQUksSUFBSSxJQUFFLFNBQVYsRUFBcUIsSUFBSSxHQUFDLEVBQUw7QUFDckIsVUFBSSxHQUFHLEdBQUMsbUNBQWtDLFVBQWxDLEdBQThDLEdBQTlDLEdBQW1ELGNBQW5ELEdBQW1FLEdBQW5FLEdBQXVFLElBQXZFLEdBQTRFLEdBQXBGO0FBQ0EsTUFBQSxHQUFHLEdBQUcsR0FBRyxHQUFDLHlCQUFWO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsVUFBSSxVQUFVLEdBQUMsS0FBZjs7QUFDQSxVQUFJLFVBQVUsSUFBRSxTQUFaLElBQXlCLFVBQVUsSUFBRSxJQUF6QyxFQUNBO0FBRUUsUUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFVBQUEsR0FBRyxFQUFFLDhDQUE0QyxjQUFsRDtBQUFpRSxVQUFBLE1BQU0sRUFBQztBQUF4RSxTQUFoQjtBQUVELE9BTEQsTUFNSTtBQUdDLFlBQUksS0FBSyxLQUFMLENBQVcscUJBQVgsTUFBcUMsU0FBekMsRUFDQTtBQUNHLGNBQUcsS0FBSyxLQUFMLENBQVcsbUJBQVgsQ0FBK0IsVUFBVSxHQUFDLEdBQVgsR0FBZSxjQUFmLEdBQThCLElBQTdELE1BQXNFLFNBQXpFLEVBQ0E7QUFDRyxnQkFBSSxLQUFLLEtBQUwsQ0FBVyxtQkFBWCxDQUErQixVQUFVLEdBQUMsR0FBWCxHQUFlLGNBQWYsR0FBOEIsSUFBN0QsRUFBbUUsVUFBbkUsS0FBa0YsTUFBTSxLQUFHLEVBQVQsSUFBZSxNQUFNLElBQUUsRUFBdkIsSUFBNkIsTUFBTSxJQUFFLENBQUMsRUFBRCxDQUFyQyxJQUE2QyxTQUEvSCxDQUFKLEVBQ0EsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxjQUFBLElBQUksRUFBRyxLQUFLLEtBQUwsQ0FBVyxtQkFBWCxDQUErQixVQUFVLEdBQUMsR0FBWCxHQUFlLGNBQWYsR0FBOEIsSUFBN0QsRUFBbUUsSUFBM0U7QUFBZ0YsY0FBQSxNQUFNLEVBQUM7QUFBdkYsYUFBakI7QUFDRixXQUpELE1BTUE7QUFDRSxpQkFBSyxLQUFMLENBQVcscUJBQVgsRUFBa0MsVUFBVSxHQUFDLEdBQVgsR0FBZSxjQUFmLEdBQThCLElBQWhFLElBQXdFO0FBQUMsY0FBQSxJQUFJLEVBQUMsRUFBTjtBQUFTLGNBQUEsVUFBVSxFQUFDO0FBQXBCLGFBQXhFO0FBQ0EsWUFBQSxVQUFVLEdBQUMsSUFBWDtBQUNEO0FBQ0gsU0FaRCxNQWFBO0FBQ0csZUFBSyxLQUFMLENBQVcscUJBQVgsSUFBb0MsRUFBcEM7QUFDQSxlQUFLLEtBQUwsQ0FBVyxxQkFBWCxFQUFrQyxVQUFVLEdBQUMsR0FBWCxHQUFlLGNBQWYsR0FBOEIsSUFBaEUsSUFBd0U7QUFBQyxZQUFBLElBQUksRUFBQyxFQUFOO0FBQVMsWUFBQSxVQUFVLEVBQUM7QUFBcEIsV0FBeEU7QUFDQSxVQUFBLFVBQVUsR0FBQyxJQUFYO0FBQ0Y7O0FBR0QsWUFBSSxNQUFNLEtBQUcsRUFBYixFQUNBO0FBQ0csVUFBQSxVQUFVLEdBQUMsSUFBWDtBQUNGO0FBQ0w7O0FBQ0QsVUFBSSxVQUFKLEVBQWdCO0FBQ2QsWUFBSSxRQUFRLEdBQUcsSUFBZjtBQUNBLFlBQUksU0FBUyxHQUFHO0FBQUMsb0JBQVMsTUFBVjtBQUFpQixrQkFBTztBQUF4QixTQUFoQjtBQUVBLGFBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixTQUE3QixFQUF3QyxJQUF4QyxDQUE2QyxVQUFBLFFBQVEsRUFBRztBQUNoRCxjQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQS9DLElBQXdELFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQWhGLEVBQXFGO0FBQ2pGO0FBQ0EsZ0JBQUksTUFBTSxLQUFJLEVBQVYsSUFBZ0IsTUFBTSxJQUFFLEVBQXhCLElBQThCLE1BQU0sSUFBRSxDQUFDLEVBQUQsQ0FBdEMsSUFBOEMsU0FBbEQsRUFBNkQ7QUFDekQsY0FBQSxRQUFRLENBQUMsS0FBVCxDQUFlLHFCQUFmLEVBQXNDLFVBQVUsR0FBQyxHQUFYLEdBQWUsY0FBZixHQUE4QixJQUFwRSxFQUEwRSxJQUExRSxHQUFpRixRQUFRLENBQUMsSUFBMUY7QUFDQSxjQUFBLFFBQVEsQ0FBQyxLQUFULENBQWUscUJBQWYsRUFBc0MsVUFBVSxHQUFDLEdBQVgsR0FBZSxjQUFmLEdBQThCLElBQXBFLEVBQTBFLFVBQTFFLEdBQXVGLElBQXZGO0FBQ0g7O0FBQ0QsWUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLGNBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixjQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsYUFBakI7QUFDSCxXQVBELE1BT087QUFDSCxZQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsY0FBQSxHQUFHLEVBQUMsUUFBUSxDQUFDLElBQWQ7QUFBbUIsY0FBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQW5DLGFBQWhCO0FBQ0g7QUFDUixTQVhEO0FBY0Q7O0FBRUssYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDUDs7O1dBRUE7QUFDUjtBQUNBO0FBQ0Msb0NBQXlCLFVBQXpCLEVBQW9DLGNBQXBDLEVBQW1ELElBQW5ELEVBQXdELFNBQXhELEVBQWtFLFFBQWxFLEVBQTJFLFNBQTNFLEVBQXNGO0FBRTlFLFVBQUksU0FBUyxJQUFFLFNBQWYsRUFBMkIsU0FBUyxHQUFDLEtBQVY7QUFDM0IsVUFBSSxXQUFXLEdBQUMsS0FBaEI7QUFDQSxVQUFJLEdBQUcsR0FBQyx1Q0FBc0MsVUFBdEMsR0FBa0QsR0FBbEQsR0FBdUQsY0FBdkQsR0FBdUUsR0FBdkUsR0FBMkUsSUFBM0UsR0FBZ0YsR0FBeEY7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQSxVQUFJLFVBQVUsR0FBQyxLQUFmOztBQUNBLFVBQUksVUFBVSxJQUFFLFNBQVosSUFBeUIsVUFBVSxJQUFFLElBQXpDLEVBQ0E7QUFFRSxRQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsVUFBQSxHQUFHLEVBQUUsOENBQTRDLGNBQWxEO0FBQWlFLFVBQUEsTUFBTSxFQUFDO0FBQXhFLFNBQWhCO0FBRUQsT0FMRCxNQU1JO0FBR0MsWUFBSSxLQUFLLEtBQUwsQ0FBVyx3QkFBWCxNQUF3QyxTQUE1QyxFQUNBO0FBQ0csY0FBRyxLQUFLLEtBQUwsQ0FBVyxzQkFBWCxDQUFrQyxVQUFVLEdBQUMsR0FBWCxHQUFlLElBQWYsR0FBb0IsR0FBcEIsR0FBd0IsY0FBMUQsTUFBNkUsU0FBaEYsRUFDQTtBQUNHLGdCQUFJLEtBQUssS0FBTCxDQUFXLHNCQUFYLENBQWtDLFVBQVUsR0FBQyxHQUFYLEdBQWUsSUFBZixHQUFvQixHQUFwQixHQUF3QixjQUExRCxFQUEwRSxVQUExRSxJQUF3RixTQUE1RixFQUNBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsY0FBQSxJQUFJLEVBQUcsS0FBSyxLQUFMLENBQVcsc0JBQVgsQ0FBa0MsVUFBVSxHQUFDLEdBQVgsR0FBZSxJQUFmLEdBQW9CLEdBQXBCLEdBQXdCLGNBQTFELEVBQTBFLElBQWxGO0FBQXVGLGNBQUEsTUFBTSxFQUFDO0FBQTlGLGFBQWpCLEVBREEsS0FFSyxJQUFJLEtBQUssS0FBTCxDQUFXLHNCQUFYLENBQWtDLFVBQVUsR0FBQyxHQUFYLEdBQWUsSUFBZixHQUFvQixHQUFwQixHQUF3QixjQUExRCxFQUEwRSxrQkFBOUUsRUFDTDtBQUNHLGtCQUFJLEtBQUssS0FBTCxDQUFXLHNCQUFYLENBQWtDLFVBQVUsR0FBQyxHQUFYLEdBQWUsSUFBZixHQUFvQixHQUFwQixHQUF3QixjQUExRCxFQUEwRSxTQUExRSxJQUF1RixTQUEzRixFQUFzRyxLQUFLLEtBQUwsQ0FBVyxzQkFBWCxDQUFrQyxVQUFVLEdBQUMsR0FBWCxHQUFlLElBQWYsR0FBb0IsR0FBcEIsR0FBd0IsY0FBMUQsRUFBMEUsU0FBMUUsR0FBc0YsRUFBdEY7QUFFdEcsbUJBQUssS0FBTCxDQUFXLHNCQUFYLENBQWtDLFVBQVUsR0FBQyxHQUFYLEdBQWUsSUFBZixHQUFvQixHQUFwQixHQUF3QixjQUExRCxFQUEwRSxTQUExRSxDQUFvRixJQUFwRixDQUF5RixRQUF6RjtBQUNGO0FBQ0gsV0FWRCxNQVlBO0FBQ0UsaUJBQUssS0FBTCxDQUFXLHdCQUFYLEVBQXFDLFVBQVUsR0FBQyxHQUFYLEdBQWUsSUFBZixHQUFvQixHQUFwQixHQUF3QixjQUE3RCxJQUErRTtBQUFDLGNBQUEsSUFBSSxFQUFDLEVBQU47QUFBUyxjQUFBLFVBQVUsRUFBQyxLQUFwQjtBQUEwQixjQUFBLGtCQUFrQixFQUFDO0FBQTdDLGFBQS9FO0FBQ0EsWUFBQSxVQUFVLEdBQUMsSUFBWDtBQUNEO0FBQ0gsU0FsQkQsTUFtQkE7QUFDRyxlQUFLLEtBQUwsQ0FBVyx3QkFBWCxJQUF1QyxFQUF2QztBQUNBLGVBQUssS0FBTCxDQUFXLHdCQUFYLEVBQXFDLFVBQVUsR0FBQyxHQUFYLEdBQWUsSUFBZixHQUFvQixHQUFwQixHQUF3QixjQUE3RCxJQUErRTtBQUFDLFlBQUEsSUFBSSxFQUFDLEVBQU47QUFBUyxZQUFBLFVBQVUsRUFBQyxLQUFwQjtBQUEwQixZQUFBLGtCQUFrQixFQUFDO0FBQTdDLFdBQS9FO0FBQ0EsVUFBQSxVQUFVLEdBQUMsSUFBWDtBQUNGO0FBR0w7O0FBQ0QsVUFBSSxVQUFKLEVBQ0E7QUFFRSxZQUFJLFFBQVEsR0FBRyxJQUFmO0FBQ0EsWUFBSSxLQUFLLEtBQUwsQ0FBVyxzQkFBWCxDQUFrQyxVQUFVLEdBQUMsR0FBWCxHQUFlLElBQWYsR0FBb0IsR0FBcEIsR0FBd0IsY0FBMUQsRUFBMEUsU0FBMUUsSUFBcUYsU0FBekYsRUFBb0csS0FBSyxLQUFMLENBQVcsc0JBQVgsQ0FBa0MsVUFBVSxHQUFDLEdBQVgsR0FBZSxJQUFmLEdBQW9CLEdBQXBCLEdBQXdCLGNBQTFELEVBQTBFLFNBQTFFLEdBQXNGLEVBQXRGO0FBRXBHLGFBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixTQUE3QixFQUF3QyxJQUF4QyxDQUE2QyxVQUFBLFFBQVEsRUFBRztBQUdoRCxjQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQS9DLElBQXdELFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQWhGLEVBQXFGO0FBQ2pGO0FBQ0ksWUFBQSxRQUFRLENBQUMsS0FBVCxDQUFlLHdCQUFmLEVBQXlDLFVBQVUsR0FBQyxHQUFYLEdBQWUsSUFBZixHQUFvQixHQUFwQixHQUF3QixjQUFqRSxFQUFpRixJQUFqRixHQUF3RixRQUFRLENBQUMsSUFBakc7QUFDQSxZQUFBLFFBQVEsQ0FBQyxLQUFULENBQWUsd0JBQWYsRUFBeUMsVUFBVSxHQUFDLEdBQVgsR0FBZSxJQUFmLEdBQW9CLEdBQXBCLEdBQXdCLGNBQWpFLEVBQWlGLFVBQWpGLEdBQThGLElBQTlGLENBSDZFLENBSTVFOztBQUNELGlCQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUUsUUFBUSxDQUFDLEtBQVQsQ0FBZSxzQkFBZixDQUFzQyxVQUFVLEdBQUMsR0FBWCxHQUFlLElBQWYsR0FBb0IsR0FBcEIsR0FBd0IsY0FBOUQsRUFBOEUsU0FBOUUsQ0FBd0YsTUFBeEcsRUFBK0csQ0FBQyxFQUFoSCxFQUNBO0FBQ0ksY0FBQSxRQUFRLENBQUMsS0FBVCxDQUFlLHNCQUFmLENBQXNDLFVBQVUsR0FBQyxHQUFYLEdBQWUsSUFBZixHQUFvQixHQUFwQixHQUF3QixjQUE5RCxFQUE4RSxTQUE5RSxDQUF3RixDQUF4RjtBQUVIOztBQUVELFlBQUEsUUFBUSxDQUFDLEtBQVQsQ0FBZSxzQkFBZixDQUFzQyxVQUFVLEdBQUMsR0FBWCxHQUFlLElBQWYsR0FBb0IsR0FBcEIsR0FBd0IsY0FBOUQsRUFBOEUsU0FBOUUsR0FBd0YsRUFBeEY7QUFDQSxZQUFBLFFBQVEsQ0FBQyxLQUFULENBQWUsc0JBQWYsQ0FBc0MsVUFBVSxHQUFDLEdBQVgsR0FBZSxJQUFmLEdBQW9CLEdBQXBCLEdBQXdCLGNBQTlELEVBQThFLGtCQUE5RSxHQUFpRyxLQUFqRztBQUNBLFlBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxjQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsY0FBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLGFBQWpCO0FBRVAsV0FmRCxNQWVPO0FBRUgsWUFBQSxRQUFRLENBQUMsS0FBVCxDQUFlLHNCQUFmLENBQXNDLFVBQVUsR0FBQyxHQUFYLEdBQWUsSUFBZixHQUFvQixHQUFwQixHQUF3QixjQUE5RCxFQUE4RSxrQkFBOUUsR0FBaUcsS0FBakc7QUFDQSxZQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsY0FBQSxHQUFHLEVBQUMsUUFBUSxDQUFDLElBQWQ7QUFBbUIsY0FBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQW5DLGFBQWhCO0FBQ0gsV0F0QitDLENBdUJwRDs7QUFDSCxTQXhCRDtBQTJCRDs7QUFDRixhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNKOzs7V0FHQTtBQUNKO0FBQ0E7QUFDQyxtQ0FBd0IsVUFBeEIsRUFBbUMsY0FBbkMsRUFBa0QsSUFBbEQsRUFBdUQsU0FBdkQsRUFBaUUsUUFBakUsRUFBMkU7QUFFbkUsVUFBSSxTQUFTLElBQUUsU0FBZixFQUEyQixTQUFTLEdBQUMsS0FBVjtBQUMzQixVQUFJLFdBQVcsR0FBQyxLQUFoQjtBQUNBLFVBQUksR0FBRyxHQUFDLHFDQUFvQyxVQUFwQyxHQUFnRCxHQUFoRCxHQUFxRCxjQUFyRCxHQUFxRSxHQUFyRSxHQUF5RSxJQUF6RSxHQUE4RSxHQUF0RjtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNBLFVBQUksVUFBVSxHQUFDLEtBQWYsQ0FObUUsQ0FPbkU7O0FBQ0EsVUFBSSxVQUFVLElBQUUsU0FBWixJQUF5QixVQUFVLElBQUUsSUFBekMsRUFBK0M7QUFDN0MsUUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFVBQUEsR0FBRyxFQUFFLDhDQUE0QyxjQUFsRDtBQUFpRSxVQUFBLE1BQU0sRUFBQztBQUF4RSxTQUFoQjtBQUNELE9BRkQsTUFHSztBQUNBLFlBQUksS0FBSyxLQUFMLENBQVcsdUJBQVgsTUFBdUMsU0FBM0MsRUFDQTtBQUNHLGNBQUcsS0FBSyxLQUFMLENBQVcscUJBQVgsQ0FBaUMsVUFBVSxHQUFDLEdBQVgsR0FBZSxJQUFoRCxNQUF5RCxTQUE1RCxFQUNBO0FBQ0csZ0JBQUksS0FBSyxLQUFMLENBQVcscUJBQVgsQ0FBaUMsVUFBVSxHQUFDLEdBQVgsR0FBZSxJQUFoRCxFQUFzRCxVQUF0RCxJQUFvRSxTQUF4RSxFQUFzRixRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLGNBQUEsSUFBSSxFQUFHLEtBQUssS0FBTCxDQUFXLHFCQUFYLENBQWlDLFVBQVUsR0FBQyxHQUFYLEdBQWUsSUFBaEQsRUFBc0QsSUFBOUQ7QUFBbUUsY0FBQSxNQUFNLEVBQUM7QUFBMUUsYUFBakIsRUFBdEYsS0FDSyxJQUFJLEtBQUssS0FBTCxDQUFXLHFCQUFYLENBQWlDLFVBQVUsR0FBQyxHQUFYLEdBQWUsSUFBaEQsRUFBc0Qsa0JBQTFELEVBQ0w7QUFDRyxrQkFBSSxLQUFLLEtBQUwsQ0FBVyxxQkFBWCxDQUFpQyxVQUFVLEdBQUMsR0FBWCxHQUFlLElBQWhELEVBQXNELFNBQXRELElBQW1FLFNBQXZFLEVBQWtGLEtBQUssS0FBTCxDQUFXLHFCQUFYLENBQWlDLFVBQVUsR0FBQyxHQUFYLEdBQWUsSUFBaEQsRUFBc0QsU0FBdEQsR0FBa0UsRUFBbEU7QUFDbEYsbUJBQUssS0FBTCxDQUFXLHFCQUFYLENBQWlDLFVBQVUsR0FBQyxHQUFYLEdBQWUsSUFBaEQsRUFBc0QsU0FBdEQsQ0FBZ0UsSUFBaEUsQ0FBcUUsUUFBckU7QUFDRjtBQUNILFdBUkQsTUFVQTtBQUNFLGlCQUFLLEtBQUwsQ0FBVyx1QkFBWCxFQUFvQyxVQUFVLEdBQUMsR0FBWCxHQUFlLElBQW5ELElBQTJEO0FBQUMsY0FBQSxJQUFJLEVBQUMsRUFBTjtBQUFTLGNBQUEsVUFBVSxFQUFDLEtBQXBCO0FBQTBCLGNBQUEsa0JBQWtCLEVBQUM7QUFBN0MsYUFBM0Q7QUFDQSxZQUFBLFVBQVUsR0FBQyxJQUFYO0FBQ0Q7QUFDSCxTQWhCRCxNQWdCTztBQUNKLGVBQUssS0FBTCxDQUFXLHVCQUFYLElBQXNDLEVBQXRDO0FBQ0EsZUFBSyxLQUFMLENBQVcsdUJBQVgsRUFBb0MsVUFBVSxHQUFDLEdBQVgsR0FBZSxJQUFuRCxJQUEyRDtBQUFDLFlBQUEsSUFBSSxFQUFDLEVBQU47QUFBUyxZQUFBLFVBQVUsRUFBQyxLQUFwQjtBQUEwQixZQUFBLGtCQUFrQixFQUFDO0FBQTdDLFdBQTNEO0FBQ0EsVUFBQSxVQUFVLEdBQUMsSUFBWDtBQUNGO0FBQ0g7O0FBQ0gsVUFBSSxVQUFKLEVBQWdCO0FBRWQsWUFBSSxRQUFRLEdBQUcsSUFBZjtBQUNBLFlBQUksS0FBSyxLQUFMLENBQVcscUJBQVgsQ0FBaUMsVUFBVSxHQUFDLEdBQVgsR0FBZSxJQUFoRCxFQUFzRCxTQUF0RCxJQUFpRSxTQUFyRSxFQUFnRixLQUFLLEtBQUwsQ0FBVyxxQkFBWCxDQUFpQyxVQUFVLEdBQUMsR0FBWCxHQUFlLElBQWhELEVBQXNELFNBQXRELEdBQWtFLEVBQWxFO0FBRTVFLGFBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUdyQyxjQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ3pEO0FBQ0csWUFBQSxRQUFRLENBQUMsS0FBVCxDQUFlLHVCQUFmLEVBQXdDLFVBQVUsR0FBQyxHQUFYLEdBQWUsSUFBdkQsRUFBNkQsSUFBN0QsR0FBb0UsUUFBUSxDQUFDLElBQTdFO0FBQ0MsWUFBQSxRQUFRLENBQUMsS0FBVCxDQUFlLHVCQUFmLEVBQXdDLFVBQVUsR0FBQyxHQUFYLEdBQWUsSUFBdkQsRUFBNkQsVUFBN0QsR0FBMEUsSUFBMUUsQ0FIcUQsQ0FJcEQ7O0FBQ0QsaUJBQUssSUFBSSxDQUFDLEdBQUMsQ0FBWCxFQUFhLENBQUMsR0FBRSxRQUFRLENBQUMsS0FBVCxDQUFlLHFCQUFmLENBQXFDLFVBQVUsR0FBQyxHQUFYLEdBQWUsSUFBcEQsRUFBMEQsU0FBMUQsQ0FBb0UsTUFBcEYsRUFBMkYsQ0FBQyxFQUE1RixFQUFnRztBQUM1RixjQUFBLFFBQVEsQ0FBQyxLQUFULENBQWUscUJBQWYsQ0FBcUMsVUFBVSxHQUFDLEdBQVgsR0FBZSxJQUFwRCxFQUEwRCxTQUExRCxDQUFvRSxDQUFwRTtBQUNIOztBQUVELFlBQUEsUUFBUSxDQUFDLEtBQVQsQ0FBZSxxQkFBZixDQUFxQyxVQUFVLEdBQUMsR0FBWCxHQUFlLElBQXBELEVBQTBELFNBQTFELEdBQW9FLEVBQXBFO0FBQ0EsWUFBQSxRQUFRLENBQUMsS0FBVCxDQUFlLHFCQUFmLENBQXFDLFVBQVUsR0FBQyxHQUFYLEdBQWUsSUFBcEQsRUFBMEQsa0JBQTFELEdBQTZFLEtBQTdFO0FBQ0EsWUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLGNBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFzQixjQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBdEMsYUFBakI7QUFFTixXQWJFLE1BYUk7QUFDSixZQUFBLFFBQVEsQ0FBQyxLQUFULENBQWUscUJBQWYsQ0FBcUMsVUFBVSxHQUFDLEdBQVgsR0FBZSxJQUFwRCxFQUEwRCxrQkFBMUQsR0FBNkUsS0FBN0U7QUFDQSxZQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsY0FBQSxHQUFHLEVBQUMsUUFBUSxDQUFDLElBQWQ7QUFBbUIsY0FBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQW5DLGFBQWhCO0FBQ0gsV0FuQndDLENBb0I3Qzs7QUFDSCxTQXJCRztBQTBCTDs7QUFFSCxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FHSDtBQUNEO0FBQ0E7QUFDQyxxQ0FBMEIsYUFBMUIsRUFBd0MsVUFBeEMsRUFBbUQsUUFBbkQsRUFBNEQsSUFBNUQsRUFBa0U7QUFFMUQsVUFBSSxXQUFXLEdBQUMsS0FBaEI7QUFFQSxVQUFJLEdBQUcsR0FBQyx3Q0FBdUMsYUFBdkMsR0FBc0QsR0FBdEQsR0FBMkQsVUFBM0QsR0FBdUUsR0FBdkUsR0FBMkUsUUFBM0UsR0FBb0YsR0FBcEYsR0FBd0YsSUFBeEYsR0FBNkYsR0FBckc7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQSxXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsQ0FBa0MsVUFBQSxRQUFRLEVBQUc7QUFHbkMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUNyRDtBQUVJLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ1AsU0FKRCxNQUlPO0FBRUg7QUFFQSxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUMsd0RBQUw7QUFBOEQsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTlFLFdBQWhCO0FBQ0gsU0Faa0MsQ0FhekM7O0FBQ0QsT0FkSDtBQWlCRixhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FDSDtBQUNEO0FBQ0E7QUFDQyxxQ0FBMEIsVUFBMUIsRUFBcUMsU0FBckMsRUFBK0MsUUFBL0MsRUFBd0QsUUFBeEQsRUFBaUUsWUFBakUsRUFBOEUsSUFBOUUsRUFBb0Y7QUFFaEYsVUFBSSxXQUFXLEdBQUMsS0FBaEI7QUFFQSxVQUFJLEdBQUcsR0FBQyx1Q0FBc0MsVUFBdEMsR0FBa0QsR0FBbEQsR0FBc0QsU0FBdEQsR0FBZ0UsR0FBaEUsR0FBb0UsUUFBcEUsR0FBNkUsR0FBN0UsR0FBaUYsUUFBakYsR0FBMEYsR0FBMUYsR0FBOEYsWUFBOUYsR0FBMkcsR0FBM0csR0FBK0csSUFBL0csR0FBb0gsR0FBNUg7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFRSxXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsQ0FBa0MsVUFBQSxRQUFRLEVBQUc7QUFFeEMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUNsRDtBQUNBLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ0YsU0FITCxNQUdXO0FBQ0g7QUFDQSxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUMsaUVBQUw7QUFBdUUsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXZGLFdBQWhCO0FBQ0gsU0FSbUMsQ0FTeEM7O0FBQ0EsT0FWTDtBQWNJLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ1I7OztXQUNBO0FBQ0g7QUFDQTtBQUNDLDZDQUFrQyxVQUFsQyxFQUE2QyxjQUE3QyxFQUE0RCxhQUE1RCxFQUEwRSxZQUExRSxFQUF1RixRQUF2RixFQUFnRyxnQkFBaEcsRUFBaUgsYUFBakgsRUFBK0gsUUFBL0gsRUFBd0ksVUFBeEksRUFBbUosZ0JBQW5KLEVBQW9LLFlBQXBLLEVBQWlMLElBQWpMLEVBQXVMO0FBSS9LLFVBQUksV0FBVyxHQUFDLEtBQWhCLENBSitLLENBSy9LOztBQUNBLFVBQUksR0FBRyxHQUFDLGlEQUFnRCxVQUFoRCxHQUE0RCxHQUE1RCxHQUFnRSxjQUFoRSxHQUErRSxHQUEvRSxHQUFtRixhQUFuRixHQUFpRyxHQUFqRyxHQUFxRyxZQUFyRyxHQUFrSCxHQUFsSCxHQUFzSCxRQUF0SCxHQUErSCxHQUEvSCxHQUFtSSxnQkFBbkksR0FBb0osR0FBcEosR0FBd0osYUFBeEosR0FBc0ssR0FBdEssR0FBMEssUUFBMUssR0FBbUwsR0FBbkwsR0FBdUwsVUFBdkwsR0FBa00sR0FBbE0sR0FBc00sZ0JBQXRNLEdBQXVOLEdBQXZOLEdBQTJOLFlBQTNOLEdBQXdPLEdBQXhPLEdBQTRPLElBQTVPLEdBQWlQLEdBQXpQO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmOztBQUVBLFVBQUksVUFBVSxJQUFHLElBQWIsSUFBcUIsVUFBVSxJQUFHLFNBQXRDLEVBQ0E7QUFDRSxRQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsVUFBQSxHQUFHLEVBQUMsd0hBQUw7QUFBOEgsVUFBQSxNQUFNLEVBQUM7QUFBckksU0FBaEI7QUFDQSxZQUFJLFVBQVUsR0FBQyxLQUFmO0FBQ0Q7O0FBRUUsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBRXRDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFDckQ7QUFDSSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUNQLFNBSEQsTUFHTztBQUNIO0FBQ0EsY0FBSSxHQUFHLEdBQUMsRUFBUjs7QUFFQSxjQUFJLFFBQVEsQ0FBQyxJQUFULENBQWMsR0FBZCxJQUFtQixTQUF2QixFQUFrQztBQUM5QixZQUFBLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBVCxDQUFjLEdBQXBCO0FBQ0gsV0FGRCxNQUdJLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBZjs7QUFFSixVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUMsMkZBQXlGLEdBQTlGO0FBQW1HLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFuSCxXQUFoQjtBQUNILFNBZnFDLENBZ0IzQzs7QUFDRixPQWpCQTtBQXFCSCxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNMOzs7V0FDRjtBQUNGO0FBQ0E7QUFDQyw2Q0FBa0MsVUFBbEMsRUFBNkMsU0FBN0MsRUFBdUQsUUFBdkQsRUFBZ0UsUUFBaEUsRUFBeUUsYUFBekUsRUFBdUYsSUFBdkYsRUFBNkY7QUFFckYsVUFBSSxXQUFXLEdBQUMsTUFBaEI7QUFFQSxVQUFJLEdBQUcsR0FBQyxnREFBK0MsVUFBL0MsR0FBMkQsR0FBM0QsR0FBK0QsU0FBL0QsR0FBeUUsR0FBekUsR0FBNkUsUUFBN0UsR0FBc0YsR0FBdEYsR0FBMEYsUUFBMUYsR0FBbUcsR0FBbkcsR0FBdUcsSUFBdkcsR0FBNEcsR0FBcEg7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFQyxXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBNkIsYUFBN0IsRUFBNEMsSUFBNUMsQ0FBaUQsVUFBQSxRQUFRLEVBQUc7QUFFbkQsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUNyRDtBQUVJLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ1AsU0FKRCxNQUlPO0FBRUgsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFDLGtGQUFMO0FBQXdGLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUF4RyxXQUFoQjtBQUNILFNBVGtELENBVXhEOztBQUNGLE9BWEY7QUFhQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNOOzs7V0FDRjtBQUNGO0FBQ0E7QUFDQyxxREFBeUMsVUFBekMsRUFBb0QsY0FBcEQsRUFBbUUsYUFBbkUsRUFBaUYsWUFBakYsRUFBOEYsUUFBOUYsRUFBdUcsZ0JBQXZHLEVBQXdILGFBQXhILEVBQXNJLFFBQXRJLEVBQStJLFVBQS9JLEVBQTBKLGlCQUExSixFQUE0SyxZQUE1SyxFQUF5TCxNQUF6TCxFQUFnTSxrQkFBaE0sRUFBbU4sS0FBbk4sRUFBeU4sSUFBek4sRUFBK047QUFFdk4sVUFBSSxXQUFXLEdBQUMsTUFBaEIsQ0FGdU4sQ0FHdk47O0FBQ0EsVUFBSSxHQUFHLEdBQUMsMERBQXlELFVBQXpELEdBQXFFLEdBQXJFLEdBQXlFLGNBQXpFLEdBQXdGLEdBQXhGLEdBQTRGLGFBQTVGLEdBQTBHLEdBQTFHLEdBQThHLFlBQTlHLEdBQTJILEdBQTNILEdBQStILFFBQS9ILEdBQXdJLEdBQXhJLEdBQTRJLGdCQUE1SSxHQUE2SixHQUE3SixHQUFpSyxhQUFqSyxHQUErSyxHQUEvSyxHQUFtTCxRQUFuTCxHQUE0TCxHQUE1TCxHQUFnTSxVQUFoTSxHQUEyTSxHQUEzTSxHQUErTSxpQkFBL00sR0FBaU8sR0FBak8sR0FBcU8sWUFBck8sR0FBa1AsR0FBbFAsR0FBc1Asa0JBQXRQLEdBQXlRLEdBQXpRLEdBQTZRLEtBQTdRLEdBQW1SLEdBQW5SLEdBQXVSLElBQXZSLEdBQTRSLEdBQXBTO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLE1BQTdCLEVBQXFDLElBQXJDLENBQTBDLFVBQUEsUUFBUSxFQUFHO0FBQ2hEO0FBRUssWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUNyRDtBQUVJLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ1AsU0FKRCxNQUlPO0FBRUgsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFDLG9HQUFMO0FBQTBHLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUExSCxXQUFoQjtBQUNILFNBVjBDLENBV2hEOztBQUNGLE9BWkg7QUFlQyxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNGOzs7V0FFTjtBQUNGO0FBQ0E7QUFDQSx3Q0FBNEIsVUFBNUIsRUFBdUMsY0FBdkMsRUFBc0QsYUFBdEQsRUFBb0UsUUFBcEUsRUFBNkUsZ0JBQTdFLEVBQThGLGFBQTlGLEVBQTRHLFFBQTVHLEVBQXFILFVBQXJILEVBQWdJLFlBQWhJLEVBQTZJLE1BQTdJLEVBQW9KLElBQXBKLEVBQTBKO0FBRWpKLFVBQUksV0FBVyxHQUFDLE1BQWhCO0FBRUEsVUFBSSxHQUFHLEdBQUMsMkNBQTBDLFVBQTFDLEdBQXNELEdBQXRELEdBQTBELGNBQTFELEdBQXlFLEdBQXpFLEdBQTZFLGFBQTdFLEdBQTJGLEdBQTNGLEdBQStGLFFBQS9GLEdBQXdHLEdBQXhHLEdBQTRHLGdCQUE1RyxHQUE2SCxHQUE3SCxHQUFpSSxhQUFqSSxHQUErSSxHQUEvSSxHQUFtSixRQUFuSixHQUE0SixHQUE1SixHQUFnSyxVQUFoSyxHQUEySyxHQUEzSyxHQUErSyxZQUEvSyxHQUE0TCxHQUE1TCxHQUFnTSxJQUFoTSxHQUFxTSxHQUE3TTtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVHLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixNQUE3QixFQUFxQyxJQUFyQyxDQUEwQyxVQUFBLFFBQVEsRUFBRztBQUNuRDtBQUVLLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFDckQ7QUFFSSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUNQLFNBSkQsTUFJTztBQUVILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBQyx3RUFBTDtBQUE4RSxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBOUYsV0FBaEI7QUFDSCxTQVY2QyxDQVdwRDs7QUFDRCxPQVpBO0FBZ0JGLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ047OztXQUNIO0FBQ0Q7QUFDQTtBQUNDLHdDQUE2QixVQUE3QixFQUF3QyxJQUF4QyxFQUE4QztBQUV0QyxVQUFJLFdBQVcsR0FBQyxNQUFoQjtBQUVBLFVBQUksR0FBRyxHQUFDLDBDQUF5QyxVQUF6QyxHQUFxRCxHQUE3RDtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVDLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixJQUE3QixFQUFtQyxJQUFuQyxDQUF3QyxVQUFBLFFBQVEsRUFBRztBQUMvQztBQUVLLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFDckQ7QUFFSSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxHQUFHLEVBQUUsUUFBUSxDQUFDLElBQWY7QUFBb0IsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXBDLFdBQWpCO0FBQ1AsU0FKRCxNQUlPO0FBRUgsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFDLHlFQUF3RSxRQUFRLENBQUMsSUFBdEY7QUFBMkYsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTNHLFdBQWhCO0FBQ0gsU0FWeUMsQ0FXakQ7O0FBQ0EsT0FaRjtBQWVELGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0w7OztXQUVIO0FBQ0Q7QUFDRztBQUNBO0FBQ0g7QUFDQSw0QkFBZ0IsSUFBaEIsRUFBcUI7QUFHZixVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFQSxVQUFJLEdBQUcsR0FBRyxvQ0FBa0MsSUFBbEMsR0FBdUMsR0FBakQ7QUFDQSxXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsQ0FBa0MsVUFBQSxRQUFRLEVBQUc7QUFFaEMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUNyRDtBQUNJO0FBQ0EsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDUCxTQUpELE1BSU87QUFFSDtBQUNBLFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBQyw4Q0FBTDtBQUFvRCxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBcEUsV0FBaEI7QUFDSCxTQVYrQixDQVdwQzs7QUFDSCxPQVpOLEVBTmUsQ0FvQmQ7O0FBQ0EsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSCxLLENBRUg7QUFDRDtBQUNBOzs7O1dBQ0EsZ0NBQXdCLFFBQXhCLEVBQWlDLFNBQWpDLEVBQTJDLE1BQTNDLEVBQWtELElBQWxELEVBQXVEO0FBRWxELFVBQUksV0FBVyxHQUFDLE1BQWhCO0FBRUksVUFBSSxHQUFHLEdBQUMsNkNBQTJDLElBQTNDLEdBQWdELEdBQXhEOztBQUVBLFVBQUksUUFBUSxJQUFFLEVBQVYsSUFBZ0IsUUFBUSxJQUFFLFNBQTlCLEVBQ0E7QUFDRSxRQUFBLEdBQUcsR0FBRyxHQUFHLEdBQUMsUUFBSixHQUFhLFFBQW5COztBQUNBLFlBQUksU0FBUyxJQUFFLEVBQVgsSUFBaUIsU0FBUyxJQUFFLFNBQWhDLEVBQ0E7QUFDQSxVQUFBLEdBQUcsR0FBRyxHQUFHLEdBQUMsYUFBSixHQUFrQixTQUF4QjtBQUVDO0FBQ0Y7O0FBRUosVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUEsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLE1BQTdCLEVBQXFDLElBQXJDLENBQTBDLFVBQUEsUUFBUSxFQUFHO0FBQ3hDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFDakQsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDUCxTQUZELE1BRU87QUFDSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUMsc0RBQUw7QUFBNEQsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTVFLFdBQWhCO0FBQ0g7QUFDUixPQU5OO0FBVUMsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSCxLLENBRUg7QUFDRDtBQUNBOzs7O1dBQ0EsOEJBQXNCLElBQXRCLEVBQTJCLElBQTNCLEVBQWdDO0FBRzNCLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNBLFVBQUksVUFBVSxHQUFDLEtBQWY7O0FBQ0EsVUFBSSxLQUFLLEtBQUwsQ0FBVyxzQkFBWCxNQUFzQyxTQUExQyxFQUNBO0FBQ0csWUFBRyxLQUFLLEtBQUwsQ0FBVyxvQkFBWCxDQUFnQyxJQUFJLEdBQUMsSUFBckMsTUFBOEMsU0FBakQsRUFDQTtBQUNHLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRyxLQUFLLEtBQUwsQ0FBVyxvQkFBWCxDQUFnQyxJQUFJLEdBQUMsSUFBckMsQ0FBUjtBQUFtRCxZQUFBLE1BQU0sRUFBQztBQUExRCxXQUFqQjtBQUNGLFNBSEQsTUFLQTtBQUNFLGVBQUssS0FBTCxDQUFXLHNCQUFYLEVBQW1DLElBQUksR0FBQyxJQUF4QyxJQUFnRCxFQUFoRDtBQUNBLFVBQUEsVUFBVSxHQUFDLElBQVg7QUFDRDtBQUNILE9BWEQsTUFZQTtBQUNHLGFBQUssS0FBTCxDQUFXLHNCQUFYLElBQXFDLEVBQXJDO0FBQ0EsYUFBSyxLQUFMLENBQVcsc0JBQVgsRUFBbUMsSUFBSSxHQUFDLElBQXhDLElBQWdELEVBQWhEO0FBQ0EsUUFBQSxVQUFVLEdBQUMsSUFBWDtBQUNGOztBQUNELFVBQUksVUFBSixFQUNBO0FBQ0csWUFBSSxRQUFRLEdBQUcsSUFBZjtBQUNBLFlBQUksR0FBRyxHQUFFLDJDQUF5QyxJQUF6QyxHQUE4QyxHQUE5QyxHQUFrRCxJQUFsRCxHQUF1RCxHQUFoRTtBQUNBLGFBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUVsQyxjQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ2pELFlBQUEsUUFBUSxDQUFDLEtBQVQsQ0FBZSxzQkFBZixFQUF1QyxJQUFJLEdBQUMsSUFBNUMsSUFBb0QsUUFBUSxDQUFDLElBQTdEO0FBQ0EsWUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLGNBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixjQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsYUFBakI7QUFDUCxXQUhELE1BR087QUFFSCxZQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsY0FBQSxHQUFHLEVBQUMsb0RBQUw7QUFBMEQsY0FBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTFFLGFBQWhCO0FBQ0g7QUFDUixTQVRKO0FBWUY7O0FBQ0MsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBQ0E7QUFDSjtBQUNBO0FBQ0EsaURBQXFDLElBQXJDLEVBQTBDLElBQTFDLEVBQStDLFFBQS9DLEVBQXdELFFBQXhELEVBQWlFLFFBQWpFLEVBQTBFLFNBQTFFLEVBQW9GO0FBRTNFLFVBQUksR0FBRyxHQUFHLHFEQUFtRCxJQUFuRCxHQUF3RCxHQUF4RCxHQUE0RCxJQUE1RCxHQUFpRSxHQUEzRTs7QUFDQSxVQUFJLFFBQVEsSUFBRSxFQUFWLElBQWdCLFFBQVEsSUFBRSxTQUE5QixFQUNBO0FBQ0UsUUFBQSxHQUFHLEdBQUcsR0FBRyxHQUFDLFFBQUosR0FBYSxRQUFuQjs7QUFDQSxZQUFJLFNBQVMsSUFBRSxFQUFYLElBQWlCLFNBQVMsSUFBRSxTQUFoQyxFQUNBO0FBQ0EsVUFBQSxHQUFHLEdBQUcsR0FBRyxHQUFDLGFBQUosR0FBa0IsU0FBeEI7QUFFQztBQUNGOztBQUVKLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVBLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUdoQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ3JEO0FBRUksVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDUCxTQUpELE1BSU87QUFFSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUMsMkVBQUw7QUFBaUYsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQWpHLFdBQWhCO0FBQ0gsU0FWK0IsQ0FXcEM7O0FBQ0gsT0FaTjtBQWdCQyxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNILEssQ0FFSjtBQUNBO0FBQ0E7Ozs7V0FDQyxvQ0FBMkIsU0FBM0IsRUFBcUMsSUFBckMsRUFBMEM7QUFFMUMsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ00sVUFBSSxHQUFHLEdBQUcsMENBQXdDLFNBQXhDLEdBQWtELEdBQWxELEdBQXNELElBQXRELEdBQTJELEdBQXJFO0FBQ0EsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBR2pDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFDckQ7QUFFSSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUNQLFNBSkQsTUFJTztBQUVILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBQywwRUFBTDtBQUFnRixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBaEcsV0FBaEI7QUFDSCxTQVZnQyxDQVd0Qzs7QUFDRixPQVpMO0FBZ0JGLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBRUosSyxDQUVBO0FBQ0Q7QUFDQTs7OztXQUNBLHVDQUErQixJQUEvQixFQUFvQyxJQUFwQyxFQUF5QztBQUduQyxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQyxVQUFJLEdBQUcsR0FBRyw4Q0FBNEMsSUFBNUMsR0FBaUQsR0FBakQsR0FBcUQsSUFBckQsR0FBMEQsR0FBcEU7QUFDRSxXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsQ0FBa0MsVUFBQSxRQUFRLEVBQUc7QUFHbkMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUNyRDtBQUVJLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ1AsU0FKRCxNQUlPO0FBRUgsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFDLGtFQUFMO0FBQXdFLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUF4RixXQUFoQjtBQUNILFNBVmtDLENBV3ZDOztBQUNILE9BWkg7QUFnQkYsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSCxLLENBQ0Y7QUFDRjtBQUNBOzs7O1dBQ0Esa0NBQTBCLElBQTFCLEVBQStCLElBQS9CLEVBQ0E7QUFDSyxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQSxVQUFJLEdBQUcsR0FBRyxnREFBOEMsSUFBOUMsR0FBbUQsR0FBbkQsR0FBdUQsSUFBdkQsR0FBNEQsR0FBdEU7QUFDQSxXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsS0FBN0IsRUFBb0MsSUFBcEMsQ0FBeUMsVUFBQSxRQUFRLEVBQUc7QUFDMUMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUNqRDtBQUNJLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ1gsU0FIRCxNQUdPO0FBQ0MsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFDLGtFQUFMO0FBQXdFLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUF4RixXQUFoQjtBQUNQO0FBQ0osT0FQUDtBQVVFLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0gsSyxDQUVMO0FBQ0M7QUFDQTs7OztXQUNBLHdDQUFnQyxJQUFoQyxFQUFxQyxJQUFyQyxFQUEwQyxNQUExQyxFQUFpRCxnQkFBakQsRUFBa0U7QUFHNUQsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0MsVUFBSSxVQUFVLEdBQUMsS0FBZjs7QUFDRSxVQUFJLGdCQUFnQixJQUFFLFNBQWxCLElBQStCLGdCQUFnQixJQUFFLElBQXJELEVBQ0E7QUFFRSxRQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsVUFBQSxHQUFHLEVBQUUsMEJBQU47QUFBaUMsVUFBQSxNQUFNLEVBQUM7QUFBeEMsU0FBaEI7QUFFRCxPQUxELE1BTUk7QUFFRjtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDYSxZQUFJLFFBQVEsR0FBRyxJQUFmO0FBRUQsWUFBSSxHQUFHLEdBQUcsdURBQXFELElBQXJELEdBQTBELEdBQTFELEdBQThELElBQTlELEdBQW1FLEdBQW5FLEdBQXVFLGdCQUF2RSxHQUF3RixHQUFsRztBQUNBLFlBQUksU0FBUyxHQUFHO0FBQUMsb0JBQVM7QUFBVixTQUFoQjtBQUNBLGFBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixTQUE3QixFQUF3QyxJQUF4QyxDQUE2QyxVQUFBLFFBQVEsRUFBRztBQUNwRDtBQUVJLGNBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFDckQ7QUFDRztBQUNDLFlBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxjQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsY0FBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLGFBQWpCO0FBQ1AsV0FKRCxNQUlPO0FBRUgsWUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLGNBQUEsR0FBRyxFQUFDLHdFQUFMO0FBQThFLGNBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUE5RixhQUFoQjtBQUNILFdBVitDLENBV3JEOztBQUNGLFNBWkQ7QUFjSDs7QUFDRCxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNILEssQ0FJRDtBQUNBO0FBQ0E7Ozs7V0FDSCx5Q0FBaUMsVUFBakMsRUFBNEM7QUFHdEMsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmOztBQUVHLFVBQUksVUFBVSxJQUFFLFNBQVosSUFBeUIsVUFBVSxJQUFFLElBQXpDLEVBQ0E7QUFFRSxRQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsVUFBQSxHQUFHLEVBQUUsc0JBQU47QUFBNkIsVUFBQSxNQUFNLEVBQUM7QUFBcEMsU0FBaEI7QUFFRCxPQUxELE1BTUk7QUFFRCxZQUFJLFFBQVEsR0FBRyxJQUFmO0FBRUQsWUFBSSxHQUFHLEdBQUcsZ0RBQThDLFVBQTlDLEdBQXlELEdBQW5FO0FBQ0EsYUFBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBRXJDLGNBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFFckIsWUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLGNBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixjQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsYUFBakI7QUFDUCxXQUhELE1BR087QUFFSCxZQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsY0FBQSxHQUFHLEVBQUMsOEVBQUw7QUFBb0YsY0FBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXBHLGFBQWhCO0FBQ0g7QUFFUixTQVZEO0FBWUg7O0FBQ0QsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSCxLLENBR0g7QUFDRDtBQUNBOzs7O1dBQ0EsNENBQW9DLElBQXBDLEVBQXlDLElBQXpDLEVBQThDLElBQTlDLEVBQW1EO0FBRzdDLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNBLFVBQUksR0FBRyxHQUFHLHFEQUFtRCxJQUFuRCxHQUF3RCxHQUF4RCxHQUE0RCxJQUE1RCxHQUFpRSxHQUFqRSxHQUFxRSxJQUFyRSxHQUEwRSxHQUFwRjtBQUVBLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUdoQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ3JEO0FBRUksVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDUCxTQUpELE1BSU87QUFFSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUMsb0ZBQUw7QUFBMEYsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTFHLFdBQWhCO0FBQ0gsU0FWK0IsQ0FXckM7O0FBQ0YsT0FaTjtBQWVDLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0gsSyxDQUVEO0FBQ0E7QUFDSDtBQUNBO0FBQ0c7QUFDQTtBQUNIO0FBQ0E7Ozs7V0FDQSxxQ0FBNkIsVUFBN0IsRUFBd0MsWUFBeEMsRUFBcUQsUUFBckQsRUFBOEQsS0FBOUQsRUFBb0UsS0FBcEUsRUFBMEUsSUFBMUUsRUFBK0U7QUFFeEUsVUFBSSxHQUFHLEdBQUMsd0NBQVI7QUFFQSxVQUFJLFNBQVMsR0FBRztBQUFDLHVCQUFjLFVBQWY7QUFBMEIsbUJBQVUsWUFBcEM7QUFBaUQsb0JBQVcsUUFBNUQ7QUFBcUUsaUJBQVEsS0FBN0U7QUFBbUYsaUJBQVEsS0FBM0Y7QUFBaUcsb0JBQVc7QUFBNUcsT0FBaEI7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFQSxXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBNkIsU0FBN0IsRUFBd0MsSUFBeEMsQ0FBNkMsVUFBQSxRQUFRLEVBQUc7QUFFNUMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUFHO0FBQ3BELFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ1AsU0FGRCxNQUVPO0FBRUgsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFDLHVDQUFMO0FBQTZDLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUE3RCxXQUFoQjtBQUNIO0FBQ1IsT0FSTDtBQVVTLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ1osSyxDQUVEO0FBQ0g7QUFDQTs7OztXQUNBLG1DQUEyQixRQUEzQixFQUFvQyxhQUFwQyxFQUFrRCxNQUFsRCxFQUF5RDtBQUVsRCxVQUFJLEdBQUcsR0FBQyxxQ0FBUjtBQUVBLFVBQUksU0FBUyxHQUFHO0FBQUMsb0JBQVcsUUFBWjtBQUFxQixvQkFBVyxhQUFoQztBQUE4QyxrQkFBUztBQUF2RCxPQUFoQjtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVBLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixTQUE3QixFQUF3QyxJQUF4QyxDQUE2QyxVQUFBLFFBQVEsRUFBRztBQUNoRDtBQUVJLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFDckQ7QUFDSSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUNQLFNBSEQsTUFHTztBQUVILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBQyxxQ0FBTDtBQUEyQyxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBM0QsV0FBaEI7QUFDSCxTQVQyQyxDQVVsRDs7QUFDRCxPQVhMO0FBYUksYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDUCxLLENBR0M7QUFDTDtBQUNBOzs7O1dBQ0Esa0NBQTBCLGNBQTFCLEVBQXlDLGNBQXpDLEVBQXdEO0FBRWpELFVBQUksR0FBRyxHQUFDLG9DQUFSO0FBRUEsVUFBSSxTQUFTLEdBQUc7QUFBQywwQkFBaUIsY0FBbEI7QUFBaUMsMEJBQWlCO0FBQWxELE9BQWhCO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUEsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLFNBQTdCLEVBQXdDLElBQXhDLENBQTZDLFVBQUEsUUFBUSxFQUFHO0FBQ2hEO0FBRUksWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUNyRDtBQUVJLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ1AsU0FKRCxNQUlPO0FBRUgsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFDLG9DQUFMO0FBQTBDLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUExRCxXQUFoQjtBQUNILFNBVjJDLENBV2hEOztBQUNILE9BWkw7QUFlSSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNQLEssQ0FDQztBQUNMO0FBQ0E7Ozs7V0FDQSw0QkFBb0IsUUFBcEIsRUFBNkIsR0FBN0IsRUFBaUM7QUFFMUIsVUFBSSxHQUFHLEdBQUMsa0NBQVI7QUFFQSxVQUFJLFNBQVMsR0FBRztBQUFDLG9CQUFXLFFBQVo7QUFBcUIsZUFBTTtBQUEzQixPQUFoQjtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNBLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixTQUE3QixFQUF3QyxJQUF4QyxDQUE2QyxVQUFBLFFBQVEsRUFBRztBQUNqRDtBQUNLLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFDckQ7QUFDSSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUNQLFNBSEQsTUFHTztBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBQyw4QkFBTDtBQUFvQyxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBcEQsV0FBaEI7QUFDSCxTQVAyQyxDQVFsRDs7QUFDRCxPQVRMO0FBV0ksYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDUCxLLENBQ0Y7QUFDRjtBQUNBOzs7O1dBQ0EsaURBQXlDLElBQXpDLEVBQThDLElBQTlDLEVBQW1ELFFBQW5ELEVBQTRELFFBQTVELEVBQXFFLFFBQXJFLEVBQThFLFNBQTlFLEVBQXdGO0FBRW5GLFVBQUksR0FBRyxHQUFDLGdEQUE4QyxJQUE5QyxHQUFtRCxHQUFuRCxHQUF1RCxJQUF2RCxHQUE0RCxHQUFwRTs7QUFDQyxVQUFJLFFBQVEsSUFBRSxFQUFWLElBQWdCLFFBQVEsSUFBRSxTQUE5QixFQUNHO0FBQ0UsUUFBQSxHQUFHLEdBQUcsR0FBRyxHQUFDLFFBQUosR0FBYSxRQUFuQjs7QUFDQSxZQUFJLFNBQVMsSUFBRSxFQUFYLElBQWlCLFNBQVMsSUFBRSxTQUFoQyxFQUNBO0FBQ0EsVUFBQSxHQUFHLEdBQUcsR0FBRyxHQUFDLGFBQUosR0FBa0IsU0FBeEI7QUFFQztBQUNGOztBQUVKLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNBLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUVoQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ3JEO0FBRUksVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDUCxTQUpELE1BSU87QUFFSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUMscUVBQUw7QUFBMkUsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTNGLFdBQWhCO0FBQ0gsU0FUK0IsQ0FVdEM7O0FBQ0QsT0FYTjtBQWVDLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0gsSyxDQUVIO0FBQ0Q7QUFDQTs7OztXQUNDLGdCQUFTLFVBQVQsRUFBb0IsT0FBcEIsRUFBNkI7QUFFckIsVUFBSSxXQUFXLEdBQUMsTUFBaEI7QUFFQSxVQUFJLEdBQUcsR0FBQyxpQ0FBK0IsVUFBL0IsR0FBMEMsR0FBMUMsR0FBOEMsT0FBOUMsR0FBc0QsR0FBOUQ7QUFDRyxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFQSxXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBOEIsSUFBOUIsQ0FBbUMsVUFBQSxRQUFRLEVBQUc7QUFHdkMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUNyRDtBQUVJLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLEdBQUcsRUFBRSx1Q0FBTjtBQUE4QyxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBOUQsV0FBakI7QUFDUCxTQUpELE1BSU8sSUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUF4QixFQUE2QjtBQUNoQztBQUVJLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLEdBQUcsRUFBRSx1Q0FBTjtBQUE4QyxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBOUQsV0FBakI7QUFDUCxTQUpNLE1BTUY7QUFFRCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsbUNBQU47QUFBMEMsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTFELFdBQWhCO0FBQ0g7QUFFUixPQWxCQTtBQW9CTSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNWOzs7V0FDQTtBQUNSO0FBQ0E7QUFDTyw4QkFBbUIsT0FBbkIsRUFBMkIsVUFBM0IsRUFBc0MsUUFBdEMsRUFBK0MsSUFBL0MsRUFBcUQ7QUFFakQsVUFBSSxXQUFXLEdBQUMsTUFBaEI7QUFDQSxVQUFJLElBQUksR0FBQyxLQUFLLFVBQUwsQ0FBZ0IsT0FBaEIsQ0FBd0IsV0FBeEIsQ0FBb0MsSUFBN0M7QUFDQSxVQUFJLEdBQUcsR0FBQywrQkFBNkIsUUFBN0IsR0FBc0MsR0FBdEMsR0FBMEMsVUFBMUMsR0FBcUQsR0FBckQsR0FBeUQsSUFBekQsR0FBOEQsR0FBdEU7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQSxVQUFJLElBQUksSUFBRSxTQUFWLEVBQXFCLElBQUksR0FBQyxFQUFMLENBTjRCLENBT2pEOztBQUNBLFVBQUksU0FBUyxHQUFHO0FBQUMsUUFBQSxJQUFJLEVBQUMsT0FBTjtBQUFjLFFBQUEsV0FBVyxFQUFDO0FBQTFCLE9BQWhCO0FBRUEsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLFNBQTdCLEVBQXdDLElBQXhDLENBQTZDLFVBQUEsUUFBUSxFQUFHO0FBQ3BEO0FBRUksWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUNyRDtBQUVEO0FBQ0MsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLEdBQUcsRUFBQyxRQUFRLENBQUMsSUFBVCxDQUFjLEdBQXZDO0FBQTJDLFlBQUEsT0FBTyxFQUFDLFFBQVEsQ0FBQyxJQUFULENBQWMsT0FBakU7QUFBeUUsWUFBQSxVQUFVLEVBQUMsUUFBUSxDQUFDLElBQVQsQ0FBYyxVQUFsRztBQUE2RyxZQUFBLE9BQU8sRUFBQyxRQUFRLENBQUMsSUFBVCxDQUFjLE9BQW5JO0FBQTJJLFlBQUEsU0FBUyxFQUFDLFFBQVEsQ0FBQyxJQUFULENBQWMsU0FBbks7QUFBNkssWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTdMLFdBQWpCO0FBRUgsU0FORCxNQU1PO0FBRUgsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLDhEQUE2RCxRQUFRLENBQUMsSUFBNUU7QUFBaUYsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQWpHLFdBQWhCO0FBQ0gsU0FaK0MsQ0FhckQ7O0FBQ0YsT0FkRDtBQWtCQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0MsMEJBQWUsUUFBZixFQUF3QixTQUF4QixFQUFrQyxZQUFsQyxFQUErQyxlQUEvQyxFQUFnRTtBQUV2RCxVQUFJLFdBQVcsR0FBQyxLQUFoQjtBQUVOLFVBQUksR0FBRyxHQUFDLGtCQUFnQixRQUFoQixHQUF5QixHQUF6QixHQUE2QixTQUE3QixHQUF1QyxHQUF2QyxHQUEyQyxZQUEzQyxHQUF3RCxHQUF4RCxHQUE0RCxlQUE1RCxHQUE0RSxHQUFwRjtBQUVRLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVGLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUVuQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ3JEO0FBRUksVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFFUCxTQUxELE1BS087QUFFSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsMENBQU47QUFBaUQsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQWpFLFdBQWhCO0FBQ0gsU0FWa0MsQ0FXekM7O0FBQ0QsT0FaSDtBQWNTLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ1Y7OztXQUVQO0FBQ0Q7QUFDQTtBQUNDLDBCQUFlLFVBQWYsRUFBMEIsTUFBMUIsRUFBa0M7QUFFMUIsVUFBSSxXQUFXLEdBQUMsS0FBaEIsQ0FGMEIsQ0FHMUI7O0FBQ0EsVUFBSSxHQUFHLEdBQUMsMEJBQXdCLFVBQXhCLEdBQW1DLEdBQW5DLEdBQXVDLE1BQXZDLEdBQThDLEdBQXREO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUMsV0FBSyxjQUFMLENBQW9CLFFBQXBCLENBQTZCLEdBQTdCLEVBQWtDLElBQWxDLENBQXVDLFVBQUEsUUFBUSxFQUFHO0FBR3pDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFDckQ7QUFHQSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUVILFNBTkQsTUFNTztBQUVILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBRSx5Q0FBTjtBQUFnRCxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBaEUsV0FBaEI7QUFDSDtBQUNSLE9BYkY7QUFnQkEsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDTjs7O1dBRUw7QUFDQTtBQUNBO0FBQ0UsNEJBQWlCLE1BQWpCLEVBQXlCLFVBQXpCLEVBQXFDLFVBQXJDLEVBQWlEO0FBRXpDLFVBQUksV0FBVyxHQUFDLEtBQWhCO0FBQ0EsVUFBSSxHQUFHLEdBQUMsNEJBQTBCLE1BQTFCLEdBQWlDLEdBQWpDLEdBQXFDLFVBQXJDLEdBQWdELEdBQWhELEdBQW9ELFVBQXBELEdBQStELEdBQXZFO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUUsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBR3JDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFDckQ7QUFHQSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUVILFNBTkQsTUFNTztBQUVILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBRSw2Q0FBTjtBQUFvRCxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBcEUsV0FBaEI7QUFDSCxTQVpvQyxDQWExQzs7QUFDRixPQWREO0FBa0JBLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ1A7OztXQUdKO0FBQ0E7QUFDQTtBQUNDLDZCQUFrQixVQUFsQixFQUE2QixNQUE3QixFQUFvQyxRQUFwQyxFQUE2QyxJQUE3QyxFQUFtRDtBQUUzQyxVQUFJLFdBQVcsR0FBQyxLQUFoQjtBQUVBLFVBQUksR0FBRyxHQUFDLDhCQUE0QixVQUE1QixHQUF1QyxHQUF2QyxHQUEyQyxNQUEzQyxHQUFrRCxHQUFsRCxHQUFzRCxRQUF0RCxHQUErRCxHQUEvRCxHQUFtRSxJQUFuRSxHQUF3RSxHQUFoRjtBQUNHLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVGLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUdwQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ3JEO0FBR0EsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFULENBQWMsSUFBckI7QUFBMEIsWUFBQSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQTNDO0FBQXNELFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUF0RSxXQUFqQjtBQUVILFNBTkQsTUFNTztBQUVILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBRSxnREFBTjtBQUF1RCxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBdkUsV0FBaEI7QUFDSCxTQVptQyxDQWF6Qzs7QUFDRixPQWRGO0FBZ0JRLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ1Y7OztXQUNMO0FBQ0E7QUFDQTtBQUNGLDRCQUFpQixVQUFqQixFQUE0QixNQUE1QixFQUFtQyxlQUFuQyxFQUFvRDtBQUU5QyxVQUFJLENBQUMsZUFBTCxFQUFzQixlQUFlLEdBQUcsQ0FBbEI7QUFFcEIsVUFBSSxHQUFHLEdBQUMsNkJBQTJCLFVBQTNCLEdBQXNDLEdBQXRDLEdBQTBDLGVBQTFDLEdBQTBELEdBQWxFO0FBQ0csVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUYsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLE1BQTdCLEVBQXFDLElBQXJDLENBQTBDLFVBQUEsUUFBUSxFQUFHO0FBQ2hELFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFBRztBQUNoRCxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUNQLFNBRkwsTUFFVztBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBRSw4REFBNEQsUUFBUSxDQUFDLE1BQXJFLEdBQTRFLGdCQUE1RSxHQUE2RixRQUFRLENBQUMsVUFBNUc7QUFBdUgsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXZJLFdBQWhCO0FBQ0g7QUFFUixPQVBGO0FBU0MsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBR0g7QUFDRjtBQUNBO0FBQ0Ysa0NBQXVCLFVBQXZCLEVBQWtDLE1BQWxDLEVBQTBDO0FBRWxDLFVBQUksR0FBRyxHQUFDLG9DQUFrQyxVQUFsQyxHQUE2QyxHQUFyRDtBQUNHLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVGLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixNQUE3QixFQUFxQyxJQUFyQyxDQUEwQyxVQUFBLFFBQVEsRUFBRztBQUNoRCxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQUc7QUFDaEQsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDUCxTQUZMLE1BRVc7QUFDSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsOERBQTRELFFBQVEsQ0FBQyxNQUFyRSxHQUE0RSxnQkFBNUUsR0FBNkYsUUFBUSxDQUFDLFVBQTVHO0FBQXVILFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUF2SSxXQUFoQjtBQUNIO0FBRVIsT0FQRjtBQVNDLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUNQO0FBQ0Q7QUFDQztBQUNBLHNDQUEyQixVQUEzQixFQUFzQyxRQUF0QyxFQUErQyxRQUEvQyxFQUF3RCxRQUF4RCxFQUFpRSxTQUFqRSxFQUE0RTtBQUVwRSxVQUFJLFdBQVcsR0FBQyxLQUFoQjtBQUNFLFVBQUksSUFBSSxHQUFDLEtBQUssVUFBTCxDQUFnQixPQUFoQixDQUF3QixXQUF4QixDQUFvQyxJQUE3QztBQUNGLFVBQUksR0FBRyxHQUFDLHdDQUFzQyxVQUF0QyxHQUFpRCxHQUFqRCxHQUFxRCxJQUFyRCxHQUEwRCxHQUFsRTs7QUFFQSxVQUFJLFFBQVEsSUFBRSxFQUFWLElBQWdCLFFBQVEsSUFBRSxTQUE5QixFQUNBO0FBQ0UsUUFBQSxHQUFHLEdBQUcsR0FBRyxHQUFDLFFBQUosR0FBYSxRQUFuQjs7QUFDQSxZQUFJLFNBQVMsSUFBRSxFQUFYLElBQWlCLFNBQVMsSUFBRSxTQUFoQyxFQUNBO0FBQ0EsVUFBQSxHQUFHLEdBQUcsR0FBRyxHQUFDLGFBQUosR0FBa0IsU0FBeEI7QUFFQztBQUNGOztBQUVELFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNDLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUVwQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ3JEO0FBRUEsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFFSCxTQUxELE1BS087QUFFSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUseURBQU47QUFBZ0UsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQWhGLFdBQWhCO0FBQ0g7QUFDUixPQVhGO0FBZUMsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBQ1A7QUFDRDtBQUNDO0FBQ0EsNENBQWlDLFVBQWpDLEVBQTRDLFFBQTVDLEVBQXFELFFBQXJELEVBQThELFFBQTlELEVBQXVFLFNBQXZFLEVBQWlGLElBQWpGLEVBQXNGLE1BQXRGLEVBQTZGLFdBQTdGLEVBQXlHLGlCQUF6RyxFQUE0SDtBQUVwSCxVQUFJLFdBQVcsR0FBQyxNQUFoQjtBQUdBLFVBQUksR0FBRyxHQUFDLCtDQUE2QyxVQUE3QyxHQUF3RCxHQUF4RCxHQUE0RCxJQUE1RCxHQUFpRSxHQUF6RTs7QUFFQSxVQUFJLFFBQVEsSUFBRSxFQUFWLElBQWdCLFFBQVEsSUFBRSxTQUE5QixFQUNBO0FBQ0UsUUFBQSxHQUFHLEdBQUcsR0FBRyxHQUFDLFFBQUosR0FBYSxRQUFuQjs7QUFDQSxZQUFJLFNBQVMsSUFBRSxFQUFYLElBQWlCLFNBQVMsSUFBRSxTQUFoQyxFQUNBO0FBQ0EsVUFBQSxHQUFHLEdBQUcsR0FBRyxHQUFDLGFBQUosR0FBa0IsU0FBeEI7QUFFQztBQUNGOztBQUVELFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNBLFVBQUksU0FBUyxHQUFHO0FBQUMsa0JBQVMsTUFBVjtBQUFpQixnQkFBTyxXQUF4QjtBQUFvQyxtQkFBVTtBQUE5QyxPQUFoQjtBQUNDLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixTQUE3QixFQUF3QyxJQUF4QyxDQUE2QyxVQUFBLFFBQVEsRUFBRztBQUMvQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQUU7QUFDbkQsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFFUCxTQUhELE1BR087QUFFSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsc0VBQU47QUFBNkUsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTdGLFdBQWhCO0FBQ0g7QUFDUixPQVJGO0FBV0MsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBQ1A7QUFDRDtBQUNDO0FBQ0EsMENBQStCLFVBQS9CLEVBQTBDLFFBQTFDLEVBQW1ELFFBQW5ELEVBQTRELFFBQTVELEVBQXFFLFNBQXJFLEVBQStFLElBQS9FLEVBQW9GLGNBQXBGLEVBQW1HLGNBQW5HLEVBQWtILFFBQWxILEVBQTRIO0FBRXBILFVBQUksV0FBVyxHQUFDLEtBQWhCO0FBR0EsVUFBSSxHQUFHLEdBQUMsNkNBQTJDLFVBQTNDLEdBQXNELEdBQXRELEdBQTBELGNBQTFELEdBQXlFLEdBQXpFLEdBQTZFLGNBQTdFLEdBQTRGLEdBQTVGLEdBQWdHLFFBQWhHLEdBQXlHLEdBQXpHLEdBQTZHLElBQTdHLEdBQWtILEdBQTFIOztBQUVBLFVBQUksUUFBUSxJQUFFLEVBQVYsSUFBZ0IsUUFBUSxJQUFFLFNBQTlCLEVBQ0E7QUFDRSxRQUFBLEdBQUcsR0FBRyxHQUFHLEdBQUMsUUFBSixHQUFhLFFBQW5COztBQUNBLFlBQUksU0FBUyxJQUFFLEVBQVgsSUFBaUIsU0FBUyxJQUFFLFNBQWhDLEVBQ0E7QUFDQSxVQUFBLEdBQUcsR0FBRyxHQUFHLEdBQUMsYUFBSixHQUFrQixTQUF4QjtBQUVDO0FBQ0Y7O0FBRUQsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBR25DLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBd0Q7QUFDcEQ7QUFHQSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUVILFNBTkQsTUFNTztBQUVILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBRSxrRUFBTjtBQUF5RSxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBekYsV0FBaEI7QUFDSCxTQVprQyxDQWF2Qzs7QUFDSCxPQWRIO0FBZ0JFLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUNUO0FBQ0M7QUFDQztBQUNBLGdDQUFxQixVQUFyQixFQUFnQyxZQUFoQyxFQUE2QyxJQUE3QyxFQUFrRCxPQUFsRCxFQUEyRDtBQUVuRCxVQUFJLFdBQVcsR0FBQyxLQUFoQjtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVBLFVBQUksR0FBRyxHQUFDLGlDQUErQixVQUEvQixHQUEwQyxHQUExQyxHQUE4QyxZQUE5QyxHQUEyRCxHQUEzRCxHQUErRCxJQUEvRCxHQUFvRSxHQUFwRSxHQUF3RSxPQUF4RSxHQUFnRixHQUF4RjtBQUlBLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUduQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBRXJELFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ0gsU0FIRCxNQUdPO0FBQ0gsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLHNEQUFzRCxRQUFRLENBQUMsR0FBckU7QUFBMkUsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTNGLFdBQWhCO0FBQ0gsU0FSa0MsQ0FTekM7O0FBQ0QsT0FWSDtBQWVGLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBRUg7OztXQUNIO0FBQ0Q7QUFDQTtBQUNDLGtDQUF1QixVQUF2QixFQUFrQyxNQUFsQyxFQUF5QyxPQUF6QyxFQUFpRCxRQUFqRCxFQUEwRCxJQUExRCxFQUFnRTtBQUV4RCxVQUFJLFdBQVcsR0FBQyxLQUFoQjtBQUVBLFVBQUksR0FBRyxHQUFDLG9DQUFrQyxVQUFsQyxHQUE2QyxHQUE3QyxHQUFpRCxNQUFqRCxHQUF3RCxHQUF4RCxHQUE0RCxPQUE1RCxHQUFvRSxHQUFwRSxHQUF3RSxRQUF4RSxHQUFpRixHQUFqRixHQUFxRixJQUFyRixHQUEwRixHQUFsRztBQUNHLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNBLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUd0QyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ3JEO0FBRUEsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFULENBQWMsSUFBckI7QUFBMEIsWUFBQSxVQUFVLEVBQUUsUUFBUSxDQUFDLElBQVQsQ0FBYyxVQUFwRDtBQUFpRSxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBakYsV0FBakI7QUFFSCxTQUxELE1BS087QUFFSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsMkRBQU47QUFBa0UsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQWxGLFdBQWhCO0FBQ0gsU0FYcUMsQ0FZM0M7O0FBQ0YsT0FiQTtBQWlCRCxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FDUDtBQUNEO0FBQ0E7QUFDQyxxQ0FBMEIsVUFBMUIsRUFBcUMsTUFBckMsRUFBNEMsUUFBNUMsRUFBcUQsSUFBckQsRUFBMEQsTUFBMUQsRUFBa0U7QUFFMUQsVUFBSSxXQUFXLEdBQUMsTUFBaEI7QUFFQSxVQUFJLEdBQUcsR0FBQyx1Q0FBcUMsVUFBckMsR0FBZ0QsR0FBaEQsR0FBb0QsTUFBcEQsR0FBMkQsR0FBM0QsR0FBK0QsUUFBL0QsR0FBd0UsR0FBeEUsR0FBNEUsSUFBNUUsR0FBaUYsR0FBekY7QUFDRyxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFRCxVQUFJLFNBQVMsR0FBRyxNQUFoQjtBQUNELFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixTQUE3QixFQUF3QyxJQUF4QyxDQUE2QyxVQUFBLFFBQVEsRUFBRztBQUUvQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ3JEO0FBRUEsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFULENBQWMsSUFBckI7QUFBMEIsWUFBQSxVQUFVLEVBQUUsUUFBUSxDQUFDLElBQVQsQ0FBYyxVQUFwRDtBQUErRCxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBL0UsV0FBakI7QUFFSCxTQUxELE1BS087QUFFSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsK0RBQU47QUFBc0UsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXRGLFdBQWhCO0FBQ0g7QUFDUixPQVhGO0FBYUMsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBRVI7QUFDQTtBQUNHO0FBQ0g7QUFDQyx5Q0FBOEIsVUFBOUIsRUFBeUMsTUFBekMsRUFBZ0Qsa0JBQWhELEVBQW9FO0FBRTVELFVBQUksV0FBVyxHQUFDLE1BQWhCO0FBRUEsVUFBSSxHQUFHLEdBQUMsNENBQTBDLFVBQTFDLEdBQXFELEdBQTdEO0FBQ0csVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUQsVUFBSSxTQUFTLEdBQUc7QUFBQyx5QkFBZ0IsTUFBakI7QUFBd0IsbUJBQVU7QUFBbEMsT0FBaEI7QUFDRCxXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBNkIsU0FBN0IsRUFBd0MsSUFBeEMsQ0FBNkMsVUFBQSxRQUFRLEVBQUc7QUFDL0MsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUFFO0FBQ3ZELFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBVCxDQUFjLElBQXJCO0FBQTJCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUEzQyxXQUFqQjtBQUNILFNBRkQsTUFFTztBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBRSwwRUFBTjtBQUFpRixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBakcsV0FBaEI7QUFDSDtBQUNSLE9BTkY7QUFVQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNOOzs7V0FHSDtBQUNEO0FBQ0E7QUFDQyxvQ0FBeUIsU0FBekIsRUFBbUMsUUFBbkMsRUFBNEMsU0FBNUMsRUFBc0QsTUFBdEQsRUFBNkQsT0FBN0QsRUFBcUUsUUFBckUsRUFBOEUsSUFBOUUsRUFBb0Y7QUFFNUUsVUFBSSxXQUFXLEdBQUMsTUFBaEI7QUFFQSxVQUFJLEdBQUcsR0FBQyxzQ0FBb0MsU0FBcEMsR0FBOEMsR0FBOUMsR0FBa0QsUUFBbEQsR0FBMkQsR0FBM0QsR0FBK0QsU0FBL0QsR0FBeUUsR0FBekUsR0FBNkUsTUFBN0UsR0FBb0YsR0FBcEYsR0FBd0YsT0FBeEYsR0FBZ0csR0FBaEcsR0FBb0csUUFBcEcsR0FBNkcsR0FBN0csR0FBaUgsSUFBakgsR0FBc0gsR0FBOUg7QUFDRyxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFHRixXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBOEIsSUFBOUIsQ0FBbUMsVUFBQSxRQUFRLEVBQUc7QUFFckMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUFDO0FBRXRELFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBVCxDQUFjLElBQXJCO0FBQTBCLFlBQUEsVUFBVSxFQUFFLFFBQVEsQ0FBQyxJQUFULENBQWMsVUFBcEQ7QUFBK0QsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQS9FLFdBQWpCO0FBRUgsU0FKRCxNQUlPO0FBRUgsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLCtEQUFOO0FBQXNFLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUF0RixXQUFoQjtBQUNIO0FBQ1IsT0FWRjtBQWNDLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUVQO0FBQ0Q7QUFDQTtBQUNDLGdDQUFvQixRQUFwQixFQUE2QixTQUE3QixFQUF1QyxTQUF2QyxFQUFpRCxRQUFqRCxFQUEyRDtBQUVqRCxVQUFJLFdBQVcsR0FBQyxNQUFoQjtBQUVBLFVBQUksR0FBRyxHQUFDLGtDQUFnQyxRQUFoQyxHQUF5QyxHQUF6QyxHQUE2QyxTQUE3QyxHQUF1RCxHQUF2RCxHQUEyRCxTQUEzRCxHQUFxRSxHQUFyRSxHQUF5RSxRQUF6RSxHQUFrRixHQUExRjtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVELFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE4QixJQUE5QixDQUFtQyxVQUFBLFFBQVEsRUFBRztBQUVyQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ3JEO0FBQ0EsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFULENBQWMsSUFBckI7QUFBMEIsWUFBQSxVQUFVLEVBQUUsUUFBUSxDQUFDLElBQVQsQ0FBYyxVQUFwRDtBQUErRCxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBL0UsV0FBakI7QUFDSCxTQUhELE1BR087QUFDSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsdURBQU47QUFBOEQsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTlFLFdBQWhCO0FBQ0g7QUFDUixPQVJGO0FBV0MsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBRUg7QUFDRjtBQUNBO0FBQ0Ysc0NBQTBCLFFBQTFCLEVBQW1DLFNBQW5DLEVBQTZDLFNBQTdDLEVBQXVELFFBQXZELEVBQWdFLE1BQWhFLEVBQXVFLElBQXZFLEVBQTZFO0FBRW5FLFVBQUksV0FBVyxHQUFDLE1BQWhCO0FBRUEsVUFBSSxHQUFHLEdBQUMsa0NBQWdDLFFBQWhDLEdBQXlDLEdBQXpDLEdBQTZDLFNBQTdDLEdBQXVELEdBQXZELEdBQTJELFNBQTNELEdBQXFFLEdBQXJFLEdBQXlFLFFBQXpFLEdBQWtGLEdBQTFGO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUEsVUFBSSxNQUFNLEtBQUssU0FBZixFQUEwQixNQUFNLEdBQUcsRUFBVDtBQUMxQixVQUFJLElBQUksS0FBSyxTQUFiLEVBQXdCLElBQUksR0FBRyxFQUFQO0FBRXhCLFVBQUksU0FBUyxHQUFHO0FBQUMsdUJBQWMsTUFBZjtBQUFzQixxQkFBWTtBQUFsQyxPQUFoQjtBQUNELFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixTQUE3QixFQUF3QyxJQUF4QyxDQUE2QyxVQUFBLFFBQVEsRUFBRztBQUUvQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ3JEO0FBQ0EsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsU0FBUyxFQUFFLFFBQVEsQ0FBQyxJQUFULENBQWMsU0FBMUI7QUFBcUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQVQsQ0FBYyxJQUF6RDtBQUE4RCxZQUFBLFVBQVUsRUFBRSxRQUFRLENBQUMsSUFBVCxDQUFjLFVBQXhGO0FBQW1HLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFuSCxXQUFqQjtBQUNILFNBSEQsTUFHTztBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBRSx1REFBTjtBQUE4RCxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBOUUsV0FBaEI7QUFDSDtBQUNSLE9BUkY7QUFXQyxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FHUDtBQUNEO0FBQ0M7QUFDQSxnQ0FBcUIsTUFBckIsRUFBNEIsSUFBNUIsRUFBaUMsSUFBakMsRUFBdUM7QUFFaEMsVUFBSSxNQUFNLElBQUUsU0FBWixFQUF1QixNQUFNLEdBQUMsQ0FBUDtBQUN2QixVQUFJLElBQUksSUFBRSxTQUFWLEVBQXFCLElBQUksR0FBQyxDQUFMO0FBRXBCLFVBQUksV0FBVyxHQUFDLEtBQWhCO0FBRUEsVUFBSSxHQUFHLEdBQUMscUNBQW1DLE1BQW5DLEdBQTBDLEdBQTFDLEdBQThDLElBQTlDLEdBQW1ELEdBQW5ELEdBQXVELElBQXZELEdBQTRELEdBQXBFO0FBQ0csVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUEsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBRXRDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFDckQ7QUFDQSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUNILFNBSEQsTUFHTztBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBRSxzREFBTjtBQUE2RCxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBN0UsV0FBaEI7QUFDSCxTQVBxQyxDQVEzQzs7QUFDRixPQVRBO0FBWUYsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDRjs7O1dBQ047QUFDRjtBQUNDO0FBQ0Esa0NBQXVCLElBQXZCLEVBQTZCO0FBRXJCLFVBQUksV0FBVyxHQUFDLEtBQWhCO0FBRUEsVUFBSSxHQUFHLEdBQUMsdUNBQXFDLElBQXJDLEdBQTBDLEdBQWxEO0FBQ0csVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUEsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBRXRDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFDckQ7QUFDQSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXVCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUF2QyxXQUFqQjtBQUNILFNBSEQsTUFHTztBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBRSw2REFBNEQsUUFBUSxDQUFDLElBQTNFO0FBQWdGLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFoRyxXQUFoQjtBQUNILFNBUHFDLENBUTNDOztBQUNGLE9BVEE7QUFZRCxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FFUDtBQUNEO0FBQ0M7QUFDQSwrQkFBb0IsVUFBcEIsRUFBNEU7QUFBQSxVQUE3QyxJQUE2Qyx1RUFBdEMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBTztBQUVwRSxVQUFJLFdBQVcsR0FBQyxLQUFoQjtBQUNBLFVBQUksR0FBRyxHQUFDLGdDQUE4QixVQUE5QixHQUF5QyxHQUF6QyxHQUE2QyxJQUE3QyxHQUFrRCxHQUExRDtBQUNHLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVELFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUVyQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ3JEO0FBQ0EsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUF1QixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBdkMsV0FBakI7QUFDSCxTQUhELE1BR087QUFDSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsdURBQXNELFFBQVEsQ0FBQyxJQUFyRTtBQUEwRSxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBMUYsV0FBaEI7QUFDSCxTQVBvQyxDQVExQzs7QUFDRixPQVREO0FBWUEsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBQ047QUFDRjtBQUNDO0FBQ0EsZ0NBQXFCLFNBQXJCLEVBQStCLElBQS9CLEVBQXFDO0FBRTdCLFVBQUksV0FBVyxHQUFDLEtBQWhCO0FBRUEsVUFBSSxHQUFHLEdBQUMsdUNBQXFDLFNBQXJDLEdBQStDLEdBQS9DLEdBQW1ELElBQW5ELEdBQXdELEdBQWhFO0FBQ0csVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUQsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBR3JDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFDckQ7QUFHQSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUVILFNBTkQsTUFNTztBQUVILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBRSx5REFBd0QsUUFBUSxDQUFDLElBQXZFO0FBQTRFLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUE1RixXQUFoQjtBQUNILFNBWm9DLENBYTNDOztBQUNELE9BZEQ7QUFtQkEsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBQ0Q7QUFDUDtBQUNDO0FBQ0EsdUNBQTRCLFFBQTVCLEVBQXFDLFNBQXJDLEVBQWdEO0FBRXhDLFVBQUksV0FBVyxHQUFDLE1BQWhCO0FBRUEsVUFBSSxHQUFHLEdBQUMseUNBQXVDLFNBQXZDLEdBQWlELEdBQXpEO0FBQ0csVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0QsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLFFBQTdCLEVBQXVDLElBQXZDLENBQTRDLFVBQUEsUUFBUSxFQUFHO0FBRS9DLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFBRTtBQUV2RCxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUVILFNBSkQsTUFJTztBQUVILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBRSxpRUFBZ0UsUUFBUSxDQUFDLElBQS9FO0FBQW9GLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFwRyxXQUFoQjtBQUNIO0FBQ1IsT0FWRDtBQWNELGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0Y7OztXQUNUO0FBQ0E7QUFDQTtBQUNFLG9DQUF5QixRQUF6QixFQUFrQyxTQUFsQyxFQUE0QyxJQUE1QyxFQUFrRDtBQUUxQyxVQUFJLFdBQVcsR0FBQyxNQUFoQjtBQUVBLFVBQUksR0FBRyxHQUFDLHNDQUFvQyxTQUFwQyxHQUE4QyxHQUE5QyxHQUFrRCxJQUFsRCxHQUF1RCxHQUEvRDtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVBLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixRQUE3QixFQUF1QyxJQUF2QyxDQUE0QyxVQUFBLFFBQVEsRUFBRztBQUM3QyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQUU7QUFFdkQsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFFSCxTQUpELE1BSU87QUFFSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsbUVBQWtFLFFBQVEsQ0FBQyxJQUFqRjtBQUFzRixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBdEcsV0FBaEI7QUFDSDtBQUNSLE9BVEg7QUFXRSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FFVDtBQUNBO0FBQ0E7QUFDRSxzQ0FBMkIsVUFBM0IsRUFBc0MsV0FBdEMsRUFBa0QsSUFBbEQsRUFBd0Q7QUFFaEQsVUFBSSxXQUFXLEdBQUMsTUFBaEI7QUFFQSxVQUFJLEdBQUcsR0FBQyx3Q0FBc0MsV0FBdEMsR0FBa0QsR0FBbEQsR0FBc0QsSUFBdEQsR0FBMkQsR0FBbkU7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFQSxXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBNkIsVUFBN0IsRUFBeUMsSUFBekMsQ0FBOEMsVUFBQSxRQUFRLEVBQUc7QUFDbEQsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUFFO0FBRXBELFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBRUgsU0FKSixNQUlVO0FBRUgsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLHNFQUFxRSxRQUFRLENBQUMsSUFBcEY7QUFBeUYsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXpHLFdBQWhCO0FBQ0g7QUFDUixPQVRIO0FBWUUsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBQ047QUFDRjtBQUNDO0FBQ0EsZ0NBQXFCLFdBQXJCLEVBQWtDO0FBRTFCLFVBQUksV0FBVyxHQUFDLEtBQWhCO0FBRUEsVUFBSSxHQUFHLEdBQUMsMENBQXdDLFdBQXhDLEdBQW9ELEdBQTVEO0FBQ0csVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUYsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBR3BDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFFckQsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUF1QixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBdkMsV0FBakI7QUFFSCxTQUpELE1BSU87QUFFSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUseURBQXdELFFBQVEsQ0FBQyxJQUF2RTtBQUE0RSxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBNUYsV0FBaEI7QUFDSCxTQVZtQyxDQVcxQzs7QUFDRCxPQVpGO0FBZ0JDLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUNKO0FBQ0o7QUFDQztBQUNBLGlDQUFzQixlQUF0QixFQUFzQyxXQUF0QyxFQUFtRDtBQUUzQyxVQUFJLFdBQVcsR0FBQyxNQUFoQjtBQUVBLFVBQUksR0FBRyxHQUFDLDJDQUF5QyxXQUF6QyxHQUFxRCxHQUE3RDtBQUNHLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVBLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixlQUE3QixFQUE4QyxJQUE5QyxDQUFtRCxVQUFBLFFBQVEsRUFBRztBQUV2RCxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ3JEO0FBQ0EsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFFSCxTQUpELE1BSU87QUFDSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsMkRBQTBELFFBQVEsQ0FBQyxJQUF6RTtBQUE4RSxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBOUYsV0FBaEI7QUFDSDtBQUNSLE9BVEE7QUFZRCxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FDUDtBQUNEO0FBQ0E7QUFDQyw0QkFBaUIsV0FBakIsRUFBNkIsT0FBN0IsRUFBcUMsZUFBckMsRUFBcUQsSUFBckQsRUFBMEQsSUFBMUQsRUFBK0QsT0FBL0QsRUFBd0U7QUFFaEUsVUFBSSxXQUFXLEdBQUMsS0FBaEI7QUFFQSxVQUFJLGVBQWUsSUFBRSxTQUFqQixJQUE4QixlQUFlLElBQUUsSUFBbkQsRUFBeUQsZUFBZSxHQUFDLENBQWhCO0FBRXpELFVBQUksR0FBRyxHQUFDLDZCQUEyQixXQUEzQixHQUF1QyxHQUF2QyxHQUEyQyxPQUEzQyxHQUFtRCxHQUFuRCxHQUF1RCxlQUF2RCxHQUF1RSxHQUF2RSxHQUEyRSxJQUEzRSxHQUFnRixHQUFoRixHQUFvRixJQUFwRixHQUF5RixHQUF6RixHQUE2RixPQUE3RixHQUFxRyxHQUE3RztBQUVBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVDLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUVwQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ3JEO0FBQ0EsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDSCxTQUhELE1BR087QUFDSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsaURBQWdELFFBQVEsQ0FBQyxJQUEvRDtBQUFxRSxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckYsV0FBaEI7QUFDSCxTQVBtQyxDQVF6Qzs7QUFDRixPQVRGO0FBYUMsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBQ1A7QUFDRDtBQUNBO0FBQ0MsOEJBQW1CLFVBQW5CLEVBQThCLFlBQTlCLEVBQTRDO0FBRXBDLFVBQUksV0FBVyxHQUFDLE1BQWhCO0FBRUEsVUFBSSxHQUFHLEdBQUMsK0JBQTZCLFVBQTdCLEdBQXdDLEdBQWhEO0FBQ0csVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUYsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLFlBQTdCLEVBQTJDLElBQTNDLENBQWdELFVBQUEsUUFBUSxFQUFHO0FBRWxELFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFDckQ7QUFDQSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxHQUFHLEVBQUUsaUNBQU47QUFBd0MsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXhELFdBQWpCO0FBRUgsU0FKRCxNQUlPO0FBRUgsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLDJDQUFOO0FBQWtELFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFsRSxXQUFoQjtBQUNIO0FBQ1IsT0FWRjtBQWNDLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUVMO0FBQ0g7QUFDQTtBQUNDLGlDQUFzQixhQUF0QixFQUFvQyxVQUFwQyxFQUFnRDtBQUV4QyxVQUFJLFdBQVcsR0FBQyxNQUFoQjtBQUVBLFVBQUksR0FBRyxHQUFDLGtDQUFnQyxhQUFoQyxHQUE4QyxHQUE5QyxHQUFrRCxVQUFsRCxHQUE2RCxHQUFyRTtBQUNHLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVELFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE4QixJQUE5QixDQUFtQyxVQUFBLFFBQVEsRUFBRztBQUV0QyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQUc7QUFDeEQsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFzQixZQUFBLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBVCxDQUFjLEdBQXpDO0FBQThDLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUE5RCxXQUFqQjtBQUVILFNBSEQsTUFHTztBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBRSxtREFBa0QsUUFBUSxDQUFDLElBQVQsQ0FBYyxHQUF0RTtBQUEyRSxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBM0YsV0FBaEI7QUFDSDtBQUNSLE9BUkQ7QUFVQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FFRjtBQUNOO0FBQ0E7QUFDRyxpQ0FBc0I7QUFFaEIsVUFBSSxXQUFXLEdBQUMsS0FBaEI7QUFDQSxVQUFJLEdBQUcsR0FBQyw2QkFBUjtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVFLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUNyQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ3JELFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ0gsU0FGRCxNQUVPO0FBQ0gsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLHVEQUF1RCxRQUFRLENBQUMsSUFBdEU7QUFBMkUsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTNGLFdBQWhCO0FBQ0g7QUFDUixPQU5EO0FBUUEsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBR0Q7QUFFQSxtQ0FBd0IsVUFBeEIsRUFBd0Q7QUFBQSxVQUFwQixZQUFvQix1RUFBUCxLQUFPO0FBR3RELFVBQUksR0FBRyxHQUFDLGdDQUE4QixVQUE5QixHQUF5QyxHQUF6QyxHQUErQyxZQUEvQyxHQUE4RCxHQUF0RTtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVFLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUNyQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ3JELFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ0gsU0FGRCxNQUVPO0FBQ0gsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLHNDQUFzQyxRQUFRLENBQUMsR0FBckQ7QUFBMEQsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTFFLFdBQWhCO0FBQ0g7QUFDUixPQU5EO0FBUUEsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBTUQsMkJBQW9CLEdBQXBCLEVBQXlCO0FBQzlCO0FBQ08sVUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUosR0FBVSxHQUFHLENBQUMsR0FBZCxHQUFvQixDQUE3QjtBQUNOLFVBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFKLEdBQWMsR0FBRyxDQUFDLE9BQWxCLEdBQTJCLENBQXJDO0FBR00sVUFBSSxHQUFHLEdBQUMsZ0NBQStCLEVBQS9CLEdBQW1DLEdBQW5DLEdBQXlDLEdBQXpDLEdBQStDLEdBQXZEO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUUsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBQ3JDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFDckQsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDSCxTQUZELE1BRU87QUFDSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUscUNBQXFDLFFBQVEsQ0FBQyxHQUFwRDtBQUF3RCxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBeEUsV0FBaEI7QUFDSDtBQUNSLE9BTkQ7QUFRQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FHTCw0QkFBcUIsUUFBckIsRUFBK0IsU0FBL0IsRUFDQTtBQUNDLFVBQUksS0FBSyxHQUFJLFFBQVEsQ0FBQyxHQUFULEdBQWdCLFFBQVEsQ0FBQyxHQUF6QixHQUErQixDQUE1QztBQUNBLFVBQUksR0FBRyxHQUFDLGlDQUFnQyxLQUFoQyxHQUF1QyxHQUF2QyxHQUE2QyxRQUFRLENBQUMsT0FBdEQsR0FBZ0UsR0FBeEU7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFRCxXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBOEIsU0FBOUIsRUFBeUMsSUFBekMsQ0FBOEMsVUFBQSxRQUFRLEVBQUc7QUFDdkQsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUN4RCxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUNBLFNBRkQsTUFFTztBQUNOLFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBRSxtQ0FBbUMsUUFBUSxDQUFDLElBQWxEO0FBQXdELFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUF4RSxXQUFoQjtBQUNBO0FBQ0YsT0FORDtBQVFRLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUdOLHdCQUFpQixRQUFqQixFQUEyQixTQUEzQixFQUNDO0FBQ0MsVUFBSSxLQUFLLEdBQUksUUFBUSxDQUFDLEdBQVQsR0FBZ0IsUUFBUSxDQUFDLEdBQXpCLEdBQStCLENBQTVDO0FBQ0EsVUFBSSxHQUFHLEdBQUMsNkJBQTRCLEtBQTVCLEdBQW1DLEdBQW5DLEdBQXlDLFFBQVEsQ0FBQyxPQUFsRCxHQUE0RCxHQUFwRTtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVELFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE4QixTQUE5QixFQUF5QyxJQUF6QyxDQUE4QyxVQUFBLFFBQVEsRUFBRztBQUN2RCxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ3hELFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ0EsU0FGRCxNQUVPO0FBQ04sVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLG1DQUFtQyxRQUFRLENBQUMsSUFBbEQ7QUFBd0QsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXhFLFdBQWhCO0FBQ0E7QUFDRixPQU5EO0FBUVEsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSCxLLENBSUQ7Ozs7V0FDQSxxQ0FBOEIsWUFBOUIsRUFBMkMsV0FBM0MsRUFBdUU7QUFBQSxVQUFmLFFBQWUsdUVBQU4sSUFBTTtBQUdyRSxVQUFJLEdBQUcsR0FBQyxvQ0FBa0MsWUFBbEMsR0FBK0MsR0FBL0MsR0FBcUQsV0FBckQsR0FBbUUsR0FBM0U7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFRSxXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsUUFBN0IsRUFBdUMsSUFBdkMsQ0FBNEMsVUFBQSxRQUFRLEVBQUc7QUFDL0MsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUNyRCxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUNILFNBRkQsTUFFTztBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBRSxtRUFBbUUsUUFBUSxDQUFDLElBQWxGO0FBQXVGLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUF2RyxXQUFoQjtBQUNIO0FBQ1IsT0FORDtBQVFBLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUVMO0FBRUk7QUFFQSwyQ0FBZ0MsV0FBaEMsRUFBNEMsYUFBNUMsRUFBMkQ7QUFHekQsVUFBSSxHQUFHLEdBQUMsK0NBQTZDLFdBQTdDLEdBQXlELEdBQXpELEdBQStELGFBQS9ELEdBQStFLEdBQXZGO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUUsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBQ3JDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFDckQsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDSCxTQUZELE1BRU87QUFDSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUscUVBQXFFLFFBQVEsQ0FBQyxJQUFwRjtBQUF5RixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBekcsV0FBaEI7QUFDSDtBQUNSLE9BTkQ7QUFRQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FFRCxrQ0FBMkIsVUFBM0IsRUFBdUM7QUFHckMsVUFBSSxHQUFHLEdBQUMseUNBQXVDLFVBQXZDLEdBQWtELEdBQTFEO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUUsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBQ3JDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFDckQsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDSCxTQUZELE1BRU87QUFDSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsc0VBQXNFLFFBQVEsQ0FBQyxJQUFyRjtBQUEwRixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBMUcsV0FBaEI7QUFDSDtBQUNSLE9BTkQ7QUFRQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FFQSxxQ0FBOEIsV0FBOUIsRUFBMEMsWUFBMUMsRUFBdUQsR0FBdkQsRUFBMkQsT0FBM0QsRUFBb0U7QUFFbkUsVUFBSSxHQUFHLElBQUUsU0FBVCxFQUFvQixHQUFHLEdBQUMsQ0FBSjtBQUNwQixVQUFJLENBQUMsT0FBTCxFQUFjLE9BQU8sR0FBQyxLQUFSO0FBQ2QsVUFBSSxHQUFHLEdBQUMsMkNBQXlDLFdBQXpDLEdBQXFELEdBQXJELEdBQXlELFlBQXpELEdBQXNFLEdBQXRFLEdBQTBFLE9BQTFFLEdBQWtGLEdBQWxGLEdBQXNGLEdBQXRGLEdBQTBGLEdBQWxHO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBR0UsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBQ3JDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFDckQsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDSCxTQUZELE1BRU87QUFDSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsMEVBQTBFLFFBQVEsQ0FBQyxJQUF6RjtBQUE4RixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBOUcsV0FBaEI7QUFDSDtBQUNSLE9BTkQ7QUFRQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FFRCxvQ0FBNkIsV0FBN0IsRUFBeUMsR0FBekMsRUFBOEM7QUFFNUMsVUFBSSxHQUFHLElBQUUsU0FBVCxFQUFvQixHQUFHLEdBQUMsQ0FBSjtBQUNwQixVQUFJLEdBQUcsR0FBQywwQ0FBd0MsV0FBeEMsR0FBb0QsR0FBcEQsR0FBd0QsR0FBeEQsR0FBNEQsR0FBcEU7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFHRSxXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsQ0FBa0MsVUFBQSxRQUFRLEVBQUc7QUFDckMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUNyRCxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUNILFNBRkQsTUFFTztBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBRSx3RUFBd0UsUUFBUSxDQUFDLElBQXZGO0FBQTRGLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUE1RyxXQUFoQjtBQUNIO0FBQ1IsT0FORDtBQVFBLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUVFLDJDQUFvQyxZQUFwQyxFQUFrRDtBQUduRCxVQUFJLEdBQUcsR0FBQyxrREFBZ0QsWUFBaEQsR0FBNkQsR0FBckU7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFHRSxXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsQ0FBa0MsVUFBQSxRQUFRLEVBQUc7QUFDckMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUNyRCxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUNILFNBRkQsTUFFTztBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBRSwyRkFBMkYsUUFBUSxDQUFDLElBQTFHO0FBQStHLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUEvSCxXQUFoQjtBQUNIO0FBQ1IsT0FORDtBQVFBLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUdELGlCQUFVLE1BQVYsRUFBaUIsT0FBakIsRUFBMEI7QUFFdEIsVUFBSSxPQUFPLElBQUUsU0FBYixFQUF3QixPQUFPLEdBQUcsQ0FBVjtBQUMxQixVQUFJLEdBQUcsR0FBQyxxQkFBbUIsTUFBbkIsR0FBMEIsR0FBMUIsR0FBOEIsT0FBOUIsR0FBc0MsR0FBOUM7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFHRSxXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsQ0FBa0MsVUFBQSxRQUFRLEVBQUc7QUFDckMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUNyRCxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUNILFNBRkQsTUFFTztBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBRSw2Q0FBNkMsUUFBUSxDQUFDLEdBQTVEO0FBQWdFLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFoRixXQUFoQjtBQUNIO0FBQ1IsT0FORDtBQVFBLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUVELHlCQUFrQixVQUFsQixFQUE2QixlQUE3QixFQUE2QyxXQUE3QyxFQUF5RCxXQUF6RCxFQUFzRTtBQUVsRSxVQUFJLFdBQVcsSUFBSSxTQUFuQixFQUE4QixXQUFXLEdBQUMsRUFBWjtBQUM5QixVQUFJLEdBQUcsR0FBQyxnQ0FBOEIsVUFBOUIsR0FBeUMsR0FBekMsR0FBNkMsV0FBN0MsR0FBeUQsR0FBakU7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQSxVQUFJLE9BQU8sR0FBRztBQUFDLHNCQUFhLFVBQWQ7QUFBeUIsbUJBQVUsZUFBbkM7QUFBbUQsdUJBQWMsS0FBSTtBQUFyRSxPQUFkO0FBR0EsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLE9BQTdCLEVBQXNDLElBQXRDLENBQTJDLFVBQUEsUUFBUSxFQUFHO0FBQzlDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFDckQsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFULENBQWMsR0FBcEI7QUFBd0IsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXhDLFdBQWpCO0FBQ0gsU0FGRCxNQUVPO0FBQ0gsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLGdEQUFnRCxRQUFRLENBQUMsSUFBL0Q7QUFBb0UsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXBGLFdBQWhCO0FBQ0g7QUFDUixPQU5EO0FBUUEsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBRUQsaUNBQTBCLFdBQTFCLEVBQXVDO0FBRXJDLFVBQUksR0FBRyxHQUFDLHVDQUFxQyxXQUFyQyxHQUFpRCxHQUF6RDtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVFLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUNyQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ3JELFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ0gsU0FGRCxNQUVPO0FBQ0gsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLHVFQUF1RSxRQUFRLENBQUMsSUFBdEY7QUFBMkYsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTNHLFdBQWhCO0FBQ0g7QUFDUixPQU5EO0FBUUEsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBRUg7QUFDTDtBQUNBO0FBQ0Msc0NBQTJCLGdCQUEzQixFQUE2QztBQUVyQyxVQUFJLFdBQVcsR0FBQyxLQUFoQjtBQUVBLFVBQUksR0FBRyxHQUFDLG1DQUFpQyxnQkFBakMsR0FBa0QsR0FBMUQ7QUFDRyxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFRixXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsQ0FBa0MsVUFBQSxRQUFRLEVBQUc7QUFFcEMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUNyRDtBQUdBLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBRUgsU0FORCxNQU1PO0FBRUgsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLGtFQUFOO0FBQXlFLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUF6RixXQUFoQjtBQUNIO0FBQ1IsT0FaRjtBQWNBLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0Y7OztXQUNBO0FBQ0w7QUFDQTtBQUNGLDhCQUFtQixZQUFuQixFQUFpQztBQUV6QixVQUFJLFdBQVcsR0FBQyxLQUFoQjtBQUVBLFVBQUksR0FBRyxHQUFDLCtCQUE2QixZQUE3QixHQUEwQyxHQUFsRDtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVBLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUduQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ3JEO0FBR0EsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFFSCxTQU5ELE1BTU87QUFFSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUscURBQW1ELElBQXpEO0FBQThELFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUE5RSxXQUFoQjtBQUNIO0FBRVIsT0FkSDtBQWdCRSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FFRTtBQUNQO0FBQ0E7QUFDRixxQ0FBMEIsY0FBMUIsRUFBeUMsV0FBekMsRUFBcUQsY0FBckQsRUFBb0UsYUFBcEUsRUFBbUY7QUFFM0UsVUFBSSxXQUFXLEdBQUMsS0FBaEI7QUFFQSxVQUFJLEdBQUcsR0FBQyxzQ0FBb0MsY0FBcEMsR0FBbUQsR0FBbkQsR0FBdUQsV0FBdkQsR0FBbUUsR0FBbkUsR0FBdUUsY0FBdkUsR0FBc0YsR0FBdEYsR0FBMEYsYUFBMUYsR0FBd0csR0FBaEg7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFQSxXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsQ0FBa0MsVUFBQSxRQUFRLEVBQUc7QUFHbkMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUNyRDtBQUdBLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBRUgsU0FORCxNQU1PO0FBRUgsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLG1FQUFpRSxJQUF2RTtBQUE0RSxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBNUYsV0FBaEI7QUFDSDtBQUVSLE9BZEg7QUFnQkUsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBRUw7QUFDQTtBQUNBO0FBQ0EsbUNBQXdCLFVBQXhCLEVBQW9DO0FBRzlCLFVBQUksR0FBRyxHQUFDLHFDQUFtQyxVQUFuQyxHQUE4QyxHQUF0RDtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVBLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUduQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ3JEO0FBR0EsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFFSCxTQU5ELE1BTU87QUFFSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsdURBQXFELFFBQVEsQ0FBQyxJQUFwRTtBQUF5RSxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBekYsV0FBaEI7QUFDSDtBQUVSLE9BZEg7QUFnQkUsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDUDs7OztBQUNEO0FBQ0o7QUFDQTtBQUNFLDRCQUFpQixVQUFqQixFQUE0QixZQUE1QixFQUF5QyxnQkFBekMsRUFBMEQsV0FBMUQsRUFBdUU7QUFFL0QsVUFBSSxXQUFXLEdBQUMsTUFBaEI7O0FBRUEsVUFBSSxVQUFVLElBQUUsU0FBWixJQUF5QixnQkFBZ0IsSUFBRSxTQUEvQyxFQUNBO0FBQ0EsWUFBSSxHQUFHLEdBQUMsNEJBQTBCLFVBQTFCLEdBQXFDLEdBQXJDLEdBQXlDLGdCQUF6QyxHQUEwRCxHQUExRCxHQUE4RCxXQUE5RCxHQUEwRSxHQUFsRjtBQUVBLFlBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVFLFlBQUksU0FBUyxHQUFFO0FBQUMsMEJBQWU7QUFBaEIsU0FBZjtBQUNBLGFBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixTQUE3QixFQUF3QyxJQUF4QyxDQUE2QyxVQUFBLFFBQVEsRUFBRztBQUduRCxjQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXdEO0FBQ3ZDLFlBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxjQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsY0FBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLGFBQWpCO0FBQ2IsV0FGSixNQUVVO0FBQ0U7QUFDdkIsWUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLGNBQUEsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFmO0FBQXFCLGNBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxhQUFoQjtBQUNlO0FBRVIsU0FWRDtBQVlBLGVBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0Q7QUFDRjs7O1dBQ0w7QUFDSDtBQUNBO0FBQ0MseUNBQThCLFFBQTlCLEVBQXVDLGdCQUF2QyxFQUF3RCxVQUF4RCxFQUFvRTtBQUU1RCxVQUFJLFdBQVcsR0FBQyxNQUFoQjtBQUVBLFVBQUksR0FBRyxHQUFDLG1DQUFpQyxnQkFBakMsR0FBa0QsR0FBMUQ7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQSxVQUFJLFNBQVMsR0FBRztBQUFFLG9CQUFZLFFBQWQ7QUFBdUIsa0JBQVM7QUFBaEMsT0FBaEI7QUFFQSxXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBNkIsU0FBN0IsRUFBd0MsSUFBeEMsQ0FBNkMsVUFBQSxRQUFRLEVBQUc7QUFFOUMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUFFO0FBQ3ZELFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ0gsU0FGRCxNQUVPO0FBQ0gsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLDJFQUEwRSxRQUFRLENBQUMsSUFBekY7QUFBOEYsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTlHLFdBQWhCO0FBQ0g7QUFDUixPQVBIO0FBU0UsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBRUw7QUFDSDtBQUNBO0FBQ0MsK0JBQW1CLEtBQW5CLEVBQTBCO0FBRWxCLFVBQUksV0FBVyxHQUFDLE1BQWhCO0FBRUEsVUFBSSxHQUFHLEdBQUMsNkJBQVI7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQSxVQUFJLFNBQVMsR0FBRyxLQUFoQjtBQUVBLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixTQUE3QixFQUF3QyxJQUF4QyxDQUE2QyxVQUFBLFFBQVEsRUFBRztBQUM5QyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQUU7QUFDdkQsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDSCxTQUZELE1BRU87QUFDSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsdURBQXFELFFBQVEsQ0FBQyxJQUFwRTtBQUF5RSxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBekYsV0FBaEI7QUFDSDtBQUNSLE9BTkg7QUFTRSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FFUCx5QkFBaUIsR0FBakIsRUFBc0I7QUFFZCxVQUFJLFdBQVcsR0FBQyxNQUFoQjtBQUVBLFVBQUksR0FBRyxHQUFDLDBCQUFSO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsVUFBSSxTQUFTLEdBQUcsR0FBaEI7QUFFQSxXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBNkIsU0FBN0IsRUFBd0MsSUFBeEMsQ0FBNkMsVUFBQSxRQUFRLEVBQUc7QUFDOUMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUFFO0FBQ3ZELFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ0gsU0FGRCxNQUVPO0FBQ0gsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLGtEQUFnRCxRQUFRLENBQUMsSUFBL0Q7QUFBb0UsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXBGLFdBQWhCO0FBQ0g7QUFDUixPQU5IO0FBU0UsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBRUo7QUFDRDtBQUNBO0FBQ0YsZ0NBQW9CLEtBQXBCLEVBQTBCLE9BQTFCLEVBQW1DO0FBRTNCLFVBQUksV0FBVyxHQUFDLEtBQWhCO0FBQ0EsVUFBSSxDQUFDLE9BQUwsRUFBYyxPQUFPLEdBQUMsQ0FBUjtBQUNkLFVBQUksR0FBRyxHQUFDLGdDQUE4QixLQUE5QixHQUFvQyxHQUFwQyxHQUF3QyxPQUF4QyxHQUFnRCxHQUF4RDtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVELFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUdsQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ3JEO0FBR0EsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFFSCxTQU5ELE1BTU87QUFFSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsd0RBQXNELFFBQVEsQ0FBQyxJQUFyRTtBQUEwRSxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBMUYsV0FBaEI7QUFDSDtBQUVSLE9BZEo7QUFnQkcsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBRUw7QUFDQTtBQUNBO0FBQ0YsMEJBQWMsU0FBZCxFQUF5QjtBQUVsQixVQUFJLFdBQVcsR0FBQyxNQUFoQjtBQUVDLFVBQUksR0FBRyxHQUFDLHdCQUFSO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsVUFBSSxTQUFTLEdBQUcsU0FBaEI7QUFFQSxXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBNkIsU0FBN0IsRUFBd0MsSUFBeEMsQ0FBNkMsVUFBQSxRQUFRLEVBQUc7QUFDOUMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUFFO0FBQ3ZELFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ0gsU0FGRCxNQUVPO0FBQ0gsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLDZDQUEyQyxRQUFRLENBQUMsSUFBMUQ7QUFBK0QsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQS9FLFdBQWhCO0FBQ0g7QUFDUixPQU5IO0FBU0UsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBR0w7QUFDQTtBQUNBO0FBQ0YsbUNBQXVCLFVBQXZCLEVBQWtDLFlBQWxDLEVBQStDLE9BQS9DLEVBQXVELE9BQXZELEVBQWdFO0FBRXpELFVBQUksV0FBVyxHQUFDLE1BQWhCO0FBRUMsVUFBSSxHQUFHLEdBQUMsb0NBQWtDLFVBQWxDLEdBQTZDLEdBQTdDLEdBQWlELFlBQWpELEdBQThELEdBQTlELEdBQWtFLE9BQWxFLEdBQTBFLEdBQWxGO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsVUFBSSxTQUFTLEdBQUcsT0FBaEI7QUFFQSxXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBNkIsU0FBN0IsRUFBd0MsSUFBeEMsQ0FBNkMsVUFBQSxRQUFRLEVBQUc7QUFDOUMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUFFO0FBQ3ZELFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ0gsU0FGRCxNQUVPO0FBQ0gsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLHVFQUFxRSxRQUFRLENBQUMsSUFBcEY7QUFBeUYsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXpHLFdBQWhCO0FBQ0g7QUFDUixPQU5IO0FBU0UsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBQ0w7QUFDQTtBQUNBO0FBQ0EsK0JBQW1CLFVBQW5CLEVBQThCLGNBQTlCLEVBQTZDLFFBQTdDLEVBQXNELE9BQXRELEVBQThELFNBQTlELEVBQXdFLFVBQXhFLEVBQW9GO0FBR2hGLFVBQUksT0FBTyxJQUFFLFNBQWIsRUFBd0IsT0FBTyxHQUFDLENBQVI7QUFDeEIsVUFBSSxTQUFTLElBQUUsU0FBZixFQUEwQixTQUFTLEdBQUMsQ0FBVjtBQUMxQixVQUFJLFVBQVUsSUFBRSxTQUFoQixFQUEyQixVQUFVLEdBQUMsQ0FBWDtBQUUzQixVQUFJLEdBQUcsR0FBQyxpQ0FBK0IsVUFBL0IsR0FBMEMsR0FBMUMsR0FBOEMsY0FBOUMsR0FBNkQsR0FBN0QsR0FBaUUsT0FBakUsR0FBeUUsR0FBekUsR0FBNkUsU0FBN0UsR0FBdUYsR0FBdkYsR0FBMkYsVUFBM0YsR0FBc0csR0FBOUc7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQSxVQUFJLFNBQVMsR0FBRyxRQUFoQjtBQUVBLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixTQUE3QixFQUF3QyxJQUF4QyxDQUE2QyxVQUFBLFFBQVEsRUFBRztBQUM1QyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQUU7QUFDdkQsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDSCxTQUZELE1BRU87QUFDSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUseUJBQXVCLFFBQVEsQ0FBQyxJQUF0QztBQUEyQyxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBM0QsV0FBaEI7QUFDSDtBQUNaLE9BTkQ7QUFRQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FDRDtBQUNBO0FBQ0E7QUFDQSxrQ0FBc0IsVUFBdEIsRUFBaUMsY0FBakMsRUFBZ0QsUUFBaEQsRUFBeUQsT0FBekQsRUFBa0U7QUFFOUQsVUFBSSxHQUFHLEdBQUMsb0NBQWtDLFVBQWxDLEdBQTZDLEdBQTdDLEdBQWlELGNBQWpELEdBQWdFLEdBQXhFO0FBQ0EsVUFBSSxPQUFPLElBQUUsU0FBYixFQUF3QixHQUFHLElBQUUsT0FBTyxHQUFDLEdBQWI7QUFDeEIsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsVUFBSSxTQUFTLEdBQUcsUUFBaEI7QUFFQSxXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBNkIsU0FBN0IsRUFBd0MsSUFBeEMsQ0FBNkMsVUFBQSxRQUFRLEVBQUc7QUFDNUMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUFFO0FBQ3ZELFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ0gsU0FGRCxNQUVPO0FBQ0gsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLDZEQUEyRCxRQUFRLENBQUMsSUFBMUU7QUFBK0UsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQS9GLFdBQWhCO0FBQ0g7QUFDWixPQU5EO0FBU0EsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBR0E7QUFDRDtBQUNBO0FBQ0EsK0JBQW1CLFFBQW5CLEVBQTRCLFVBQTVCLEVBQXVDLGVBQXZDLEVBQXVELFFBQXZELEVBQWdFLFdBQWhFLEVBQTRFLGtCQUE1RSxFQUErRixjQUEvRixFQUErRztBQUUzRyxVQUFJLEdBQUcsR0FBQyxnQ0FBOEIsUUFBOUIsR0FBdUMsR0FBdkMsR0FBMkMsVUFBM0MsR0FBc0QsR0FBdEQsR0FBMEQsZUFBMUQsR0FBMEUsR0FBbEY7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQSxVQUFJLGtCQUFrQixJQUFFLFNBQXhCLEVBQW1DLGtCQUFrQixHQUFDLENBQW5CO0FBQ25DLFVBQUksY0FBYyxJQUFFLFNBQXBCLEVBQStCLGNBQWMsR0FBQyxDQUFmO0FBQy9CLE1BQUEsR0FBRyxHQUFHLEdBQUcsR0FBQyxrQkFBSixHQUF1QixHQUF2QixHQUEyQixjQUEzQixHQUEwQyxHQUFoRDtBQUNBLFVBQUksU0FBUyxHQUFHO0FBQUMsb0JBQVcsUUFBWjtBQUFxQixrQkFBUztBQUE5QixPQUFoQjtBQUVBLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixTQUE3QixFQUF3QyxJQUF4QyxDQUE2QyxVQUFBLFFBQVEsRUFBRztBQUM1QyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQUU7QUFDdkQsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDSCxTQUZELE1BRU87QUFDSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsdUVBQXFFLFFBQVEsQ0FBQyxJQUFwRjtBQUF5RixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBekcsV0FBaEI7QUFDSDtBQUNaLE9BTkQ7QUFTQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FDRDtBQUNBO0FBQ0E7QUFDRiw2QkFBaUIsTUFBakIsRUFBeUIsV0FBekIsRUFBdUMsYUFBdkMsRUFBcUQsZ0JBQXJELEVBQXVFO0FBRWpFLFVBQUksYUFBYSxJQUFFLFNBQW5CLEVBQThCLGFBQWEsR0FBQyxDQUFkO0FBQzlCLFVBQUksZ0JBQWdCLElBQUUsU0FBdEIsRUFBaUMsZ0JBQWdCLEdBQUMsQ0FBakI7QUFDakMsVUFBSSxHQUFHLEdBQUMsOEJBQTRCLE1BQTVCLEdBQXFDLEdBQXJDLEdBQTJDLFdBQTNDLEdBQXdELEdBQXhELEdBQTRELGFBQTVELEdBQTBFLEdBQTFFLEdBQThFLGdCQUE5RSxHQUErRixHQUF2RztBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVBLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUdqQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBRXJELFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBRUgsU0FKRCxNQUlPO0FBRUgsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLFFBQVEsQ0FBQyxHQUFmO0FBQW1CLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFuQyxXQUFoQjtBQUNIO0FBRVIsT0FaTDtBQWNJLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUVEO0FBQ0o7QUFDQTtBQUNGLDRCQUFnQixLQUFoQixFQUFzQixNQUF0QixFQUE2QixXQUE3QixFQUF5QyxhQUF6QyxFQUF1RCxnQkFBdkQsRUFBeUU7QUFJbkUsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsVUFBSSxXQUFXLElBQUUsU0FBakIsRUFBNEIsV0FBVyxHQUFDLENBQVo7QUFDNUIsVUFBSSxhQUFhLElBQUUsU0FBbkIsRUFBOEIsYUFBYSxHQUFDLENBQWQ7QUFDOUIsVUFBSSxnQkFBZ0IsSUFBRSxTQUF0QixFQUFpQyxnQkFBZ0IsR0FBQyxDQUFqQjtBQUVqQyxVQUFJLEdBQUcsR0FBQyw2QkFBMkIsS0FBM0IsR0FBaUMsR0FBakMsR0FBcUMsTUFBckMsR0FBNEMsR0FBNUMsR0FBaUQsV0FBakQsR0FBOEQsR0FBOUQsR0FBa0UsYUFBbEUsR0FBZ0YsR0FBaEYsR0FBb0YsZ0JBQXBGLEdBQXFHLEdBQTdHO0FBRUEsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBR2pDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFFckQsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFFSCxTQUpELE1BSU87QUFFSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQWY7QUFBbUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQW5DLFdBQWhCO0FBQ0g7QUFFUixPQVpMO0FBY0ksYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBQ0Q7QUFDSjtBQUNBO0FBQ0YsMEJBQWMsS0FBZCxFQUFvQixTQUFwQixFQUE4QixNQUE5QixFQUFxQyxXQUFyQyxFQUFpRCxhQUFqRCxFQUErRCxnQkFBL0QsRUFBaUY7QUFJM0UsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsVUFBSSxXQUFXLElBQUUsU0FBakIsRUFBNEIsV0FBVyxHQUFDLENBQVo7QUFDNUIsVUFBSSxhQUFhLElBQUUsU0FBbkIsRUFBOEIsYUFBYSxHQUFDLENBQWQ7QUFDOUIsVUFBSSxnQkFBZ0IsSUFBRSxTQUF0QixFQUFpQyxnQkFBZ0IsR0FBQyxDQUFqQjtBQUVqQyxVQUFJLEdBQUcsR0FBQywyQkFBeUIsS0FBekIsR0FBK0IsR0FBL0IsR0FBbUMsU0FBbkMsR0FBNkMsR0FBN0MsR0FBaUQsTUFBakQsR0FBd0QsR0FBeEQsR0FBNkQsV0FBN0QsR0FBMEUsR0FBMUUsR0FBOEUsYUFBOUUsR0FBNEYsR0FBNUYsR0FBZ0csZ0JBQWhHLEdBQWlILEdBQXpIO0FBRUEsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBR2pDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFFckQsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFFSCxTQUpELE1BSU87QUFFSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQWY7QUFBbUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQW5DLFdBQWhCO0FBQ0g7QUFFUixPQVpMO0FBY0ksYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBQ0w7QUFDQTtBQUNBO0FBQ0YsaUNBQXFCLFVBQXJCLEVBQWdDLFlBQWhDLEVBQTZDLE9BQTdDLEVBQXNEO0FBRzlDLFVBQUksR0FBRyxHQUFDLG1DQUFpQyxVQUFqQyxHQUE0QyxHQUE1QyxHQUFnRCxZQUFoRCxHQUE2RCxHQUE3RCxHQUFpRSxPQUFqRSxHQUF5RSxHQUFqRjtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVELFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUdsQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBRXJELFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBRUgsU0FKRCxNQUlPO0FBRUgsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLFFBQVEsQ0FBQyxHQUFmO0FBQW1CLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFuQyxXQUFoQjtBQUNIO0FBRVIsT0FaSjtBQWNHLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUVSO0FBQ0c7QUFDQTtBQUNGLDZCQUFpQixTQUFqQixFQUEyQixVQUEzQixFQUFzQyxZQUF0QyxFQUFvRDtBQUc1QyxVQUFJLEdBQUcsR0FBQyw2QkFBMkIsU0FBM0IsR0FBcUMsR0FBckMsR0FBeUMsVUFBekMsR0FBb0QsR0FBcEQsR0FBd0QsWUFBeEQsR0FBcUUsR0FBN0U7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFRCxXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsQ0FBa0MsVUFBQSxRQUFRLEVBQUc7QUFHbEMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUVyRCxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUVILFNBSkQsTUFJTztBQUVILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBRSxRQUFRLENBQUMsR0FBZjtBQUFtQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBbkMsV0FBaEI7QUFDSDtBQUVSLE9BWko7QUFjRyxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FHRjtBQUNOO0FBQ0E7QUFDQyw0QkFBaUIsU0FBakIsRUFBMkIsV0FBM0IsRUFBdUMsTUFBdkMsRUFBK0M7QUFHcEMsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUYsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLFNBQXpCLEVBQW1DLFdBQW5DLEVBQStDLE1BQS9DLEVBQXVELElBQXZELENBQTRELFVBQUEsUUFBUSxFQUFHO0FBQ2xFLFFBQUEsUUFBUSxDQUFDLElBQVQsR0FBZ0IsSUFBaEIsQ0FBcUIsVUFBQSxJQUFJLEVBQUU7QUFDdkIsY0FBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF5RDtBQUN0RCxZQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsY0FBQSxJQUFJLEVBQUUsSUFBUDtBQUFZLGNBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUE1QixhQUFqQjtBQUNGLFdBRkQsTUFFTztBQUNILFlBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxjQUFBLElBQUksRUFBRSxJQUFQO0FBQVksY0FBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTVCLGFBQWhCO0FBQ0g7QUFDSixTQU5EO0FBT0gsT0FSRjtBQVdDLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUVOLG1DQUE0QixJQUE1QixFQUFpQyxnQkFBakMsRUFDQztBQUVFLFVBQUksWUFBWSxHQUFHLEVBQW5CO0FBQ0EsVUFBSSxLQUFLLEdBQUMsRUFBVjtBQUFBLFVBQWEsT0FBTyxHQUFDLEVBQXJCOztBQUNBLFVBQUksZ0JBQWdCLEdBQUMsQ0FBckIsRUFDQTtBQUNFLFFBQUEsWUFBWSxDQUFDLElBQUQsQ0FBWixHQUFxQjtBQUFDLFVBQUEsSUFBSSxFQUFDLFlBQU47QUFBb0IsVUFBQSxLQUFLLEVBQUU7QUFBM0IsU0FBckI7QUFDRDs7QUFDRixXQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsSUFBSSxDQUFDLE1BQXBCLEVBQTJCLENBQUMsRUFBNUIsRUFBZ0M7QUFDdkIsWUFBSSxZQUFZLElBQUksQ0FBQyxDQUFELENBQXBCLEVBQ0M7QUFDSSxlQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLE1BQVIsQ0FBZSxNQUE5QixFQUFxQyxDQUFDLEVBQXRDLEVBQTBDO0FBQ3pDLGdCQUFJLFlBQVksSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLE1BQVIsQ0FBZSxDQUFmLENBQWhCLEVBQ0E7QUFDQyxtQkFBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxNQUFSLENBQWUsQ0FBZixFQUFrQixNQUFsQixDQUF5QixNQUF4QyxFQUErQyxDQUFDLEVBQWhELEVBQW9EO0FBR25ELG9CQUFHLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxNQUFSLENBQWUsQ0FBZixFQUFrQixNQUFsQixDQUF5QixDQUF6QixFQUE0QixJQUE1QixJQUFrQyxZQUFsQyxJQUFrRCxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsTUFBUixDQUFlLENBQWYsRUFBa0IsTUFBbEIsQ0FBeUIsQ0FBekIsRUFBNEIsVUFBNUIsSUFBd0MsSUFBMUYsSUFBa0csZ0JBQWdCLElBQUUsQ0FBQyxDQUF4SCxFQUNDO0FBRUcsa0JBQUEsWUFBWSxDQUFDLElBQUQsQ0FBWixHQUFxQjtBQUFDLG9CQUFBLElBQUksRUFBQyxZQUFOO0FBQW9CLG9CQUFBLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsTUFBUixDQUFlLENBQWYsRUFBa0IsTUFBbEIsQ0FBeUIsQ0FBekIsRUFBNEI7QUFBdkQsbUJBQXJCO0FBQ0Y7O0FBQ0Ysb0JBQUssSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLE1BQVIsQ0FBZSxDQUFmLEVBQWtCLE1BQWxCLENBQXlCLENBQXpCLEVBQTRCLE1BQTVCLElBQW9DLElBQXBDLElBQTRDLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxNQUFSLENBQWUsQ0FBZixFQUFrQixNQUFsQixDQUF5QixDQUF6QixFQUE0QixVQUE1QixJQUF3QyxTQUFwRixJQUFpRyxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsTUFBUixDQUFlLENBQWYsRUFBa0IsTUFBbEIsQ0FBeUIsQ0FBekIsRUFBNEIsVUFBNUIsSUFBd0MsSUFBekksSUFBaUosQ0FBQyxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsTUFBUixDQUFlLENBQWYsRUFBa0IsTUFBbEIsQ0FBeUIsQ0FBekIsRUFBNEIsUUFBL0ssSUFBNkwsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLE1BQVIsQ0FBZSxDQUFmLEVBQWtCLE1BQWxCLENBQXlCLENBQXpCLEVBQTRCLE1BQTVCLElBQW9DLElBQXBDLElBQTRDLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxNQUFSLENBQWUsQ0FBZixFQUFrQixNQUFsQixDQUF5QixDQUF6QixFQUE0QixJQUE1QixJQUFrQyxVQUEvUSxFQUNBO0FBRUMsa0JBQUEsT0FBTyxHQUFDLFVBQVEsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLE1BQVIsQ0FBZSxDQUFmLEVBQWtCLE1BQWxCLENBQXlCLENBQXpCLEVBQTRCLE1BQTVDO0FBQ0Esa0JBQUEsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxNQUFSLENBQWUsQ0FBZixFQUFrQixNQUFsQixDQUF5QixDQUF6QixFQUE0QixVQUFwQzs7QUFDQSxzQkFBSSxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsTUFBUixDQUFlLENBQWYsRUFBa0IsTUFBbEIsQ0FBeUIsQ0FBekIsRUFBNEIsTUFBNUIsSUFBb0Msc0JBQXhDLEVBQWdFO0FBQzdELG9CQUFBLE9BQU8sR0FBQyxPQUFPLEdBQUMsS0FBaEIsQ0FENkQsQ0FDdkM7O0FBQ3RCLHdCQUFJLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxNQUFSLENBQWUsQ0FBZixFQUFrQixNQUFsQixDQUF5QixDQUF6QixFQUE0QixJQUE1QixJQUFrQyxNQUF0QyxFQUNBO0FBQ0Usc0JBQUEsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxNQUFSLENBQWUsQ0FBZixFQUFrQixNQUFsQixDQUF5QixDQUF6QixFQUE0QixVQUFwQztBQUNDLHFCQUhILE1BS0U7QUFFQywwQkFBSSxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsTUFBUixDQUFlLENBQWYsRUFBa0IsTUFBbEIsQ0FBeUIsQ0FBekIsRUFBNEIsVUFBNUIsSUFBd0MsU0FBNUMsRUFDQTtBQUNDLHdCQUFBLEtBQUssR0FBRSxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsTUFBUixDQUFlLENBQWYsRUFBa0IsTUFBbEIsQ0FBeUIsQ0FBekIsRUFBNEIsVUFBNUIsQ0FBdUMsRUFBOUM7QUFDQTtBQUVEOztBQUNILHdCQUFJLEtBQUssSUFBRSxFQUFQLElBQWMsS0FBSyxJQUFFLFNBQXpCLEVBQ0E7QUFDRSxzQkFBQSxZQUFZLENBQUMsT0FBRCxDQUFaLEdBQXdCO0FBQUMsd0JBQUEsSUFBSSxFQUFDLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxNQUFSLENBQWUsQ0FBZixFQUFrQixNQUFsQixDQUF5QixDQUF6QixFQUE0QixJQUFsQztBQUF3Qyx3QkFBQSxLQUFLLEVBQUU7QUFBL0MsdUJBQXhCO0FBQ0Q7QUFDSCxtQkFuQkQsTUFvQkssSUFBRyxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsTUFBUixDQUFlLENBQWYsRUFBa0IsTUFBbEIsQ0FBeUIsQ0FBekIsRUFBNEIsSUFBNUIsSUFBa0MsVUFBckMsRUFDTDtBQUNHLG9CQUFBLFlBQVksQ0FBQyxPQUFELENBQVosR0FBc0I7QUFBQyxzQkFBQSxJQUFJLEVBQUMsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLE1BQVIsQ0FBZSxDQUFmLEVBQWtCLE1BQWxCLENBQXlCLENBQXpCLEVBQTRCLElBQWxDO0FBQXVDLHNCQUFBLEtBQUssRUFBQztBQUFDLHdCQUFBLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsTUFBUixDQUFlLENBQWYsRUFBa0IsTUFBbEIsQ0FBeUIsQ0FBekIsRUFBNEIsT0FBNUM7QUFBb0Qsd0JBQUEsVUFBVSxFQUFDLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxNQUFSLENBQWUsQ0FBZixFQUFrQixNQUFsQixDQUF5QixDQUF6QixFQUE0QjtBQUEzRjtBQUE3QyxxQkFBdEI7QUFDRixtQkFISSxNQUlBLElBQUcsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLE1BQVIsQ0FBZSxDQUFmLEVBQWtCLE1BQWxCLENBQXlCLENBQXpCLEVBQTRCLElBQTVCLElBQWtDLE1BQXJDLEVBQ0w7QUFDQyx3QkFBSSxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsTUFBUixDQUFlLENBQWYsRUFBa0IsTUFBbEIsQ0FBeUIsQ0FBekIsRUFBNEIsYUFBaEMsRUFDQTtBQUNFLHNCQUFBLFlBQVksQ0FBQyxPQUFELENBQVosR0FBc0I7QUFBQyx3QkFBQSxJQUFJLEVBQUMsWUFBTjtBQUFtQix3QkFBQSxLQUFLLEVBQUMsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLE1BQVIsQ0FBZSxDQUFmLEVBQWtCLE1BQWxCLENBQXlCLENBQXpCLEVBQTRCO0FBQXJELHVCQUF0QjtBQUNELHFCQUhELE1BS0E7QUFDRSxzQkFBQSxZQUFZLENBQUMsT0FBRCxDQUFaLEdBQXNCO0FBQUMsd0JBQUEsSUFBSSxFQUFDLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxNQUFSLENBQWUsQ0FBZixFQUFrQixNQUFsQixDQUF5QixDQUF6QixFQUE0QixJQUFsQztBQUF1Qyx3QkFBQSxLQUFLLEVBQUMsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRLE1BQVIsQ0FBZSxDQUFmLEVBQWtCLE1BQWxCLENBQXlCLENBQXpCLEVBQTRCO0FBQXpFLHVCQUF0QjtBQUNEO0FBQ0QsbUJBVkksTUFZTDtBQUNFLHdCQUFJLEtBQUssSUFBRSxFQUFQLElBQWEsS0FBSyxJQUFFLFNBQXhCLEVBQ0M7QUFDRSxzQkFBQSxZQUFZLENBQUMsT0FBRCxDQUFaLEdBQXdCO0FBQUMsd0JBQUEsSUFBSSxFQUFDLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxNQUFSLENBQWUsQ0FBZixFQUFrQixNQUFsQixDQUF5QixDQUF6QixFQUE0QixJQUFsQztBQUF3Qyx3QkFBQSxLQUFLLEVBQUU7QUFBL0MsdUJBQXhCO0FBQ0Q7QUFDSDtBQUVEO0FBRUY7QUFDRjtBQUNGO0FBQ0Q7QUFDRDs7QUFFQSxhQUFPLFlBQVA7QUFFVjs7OztBQUVIO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNDLDJCQUFnQixVQUFoQixFQUEyQixJQUEzQixFQUFpQztBQUV4QixVQUFJLFdBQVcsR0FBQyxLQUFoQjtBQUVOLFVBQUksR0FBRyxHQUFDLGtCQUFnQixVQUFoQixHQUEyQixHQUFuQztBQUVRLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVELFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUdwQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ3JEO0FBQ0EsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFFSCxTQUpELE1BSU87QUFFSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsMkNBQU47QUFBa0QsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQWxFLFdBQWhCO0FBQ0gsU0FWbUMsQ0FXeEM7O0FBQ0gsT0FaRjtBQWVDLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUVQO0FBRUU7QUFDSDtBQUNBO0FBRUksNEJBQWdCLE1BQWhCLEVBQXVCLGFBQXZCLEVBQXFDLFNBQXJDLEVBQStDLGNBQS9DLEVBQThELFVBQTlELEVBQXlFLGtCQUF6RSxFQUE0RixlQUE1RixFQUE0RyxnQkFBNUcsRUFBNkgsRUFBN0gsRUFBZ0ksT0FBaEksRUFBeUk7QUFFcEksVUFBSSxXQUFXLEdBQUMsTUFBaEI7QUFFQSxVQUFJLEdBQUcsR0FBQywrQkFBUjtBQUNFLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNBLFVBQUksVUFBVSxJQUFFLFNBQWhCLEVBQTJCLFVBQVUsR0FBQyxDQUFYO0FBQzNCLFVBQUksU0FBUyxHQUFHO0FBQUMsa0JBQVMsTUFBVjtBQUFpQix5QkFBZ0IsYUFBakM7QUFBK0MscUJBQVksU0FBM0Q7QUFBcUUsMEJBQWlCLGNBQXRGO0FBQXFHLHNCQUFhLFVBQWxIO0FBQTZILDhCQUFxQixrQkFBbEo7QUFBcUssMkJBQWtCLGVBQXZMO0FBQXVNLDRCQUFtQixnQkFBMU47QUFBMk8sY0FBSyxFQUFoUDtBQUFtUCxrQkFBUztBQUE1UCxPQUFoQjtBQUVBLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixTQUE3QixFQUF3QyxJQUF4QyxDQUE2QyxVQUFBLFFBQVEsRUFBRztBQUVoRCxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXlEO0FBQ3JEO0FBRVEsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFFWCxTQUxELE1BS087QUFDSyxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUMsaUVBQStELFFBQVEsQ0FBQyxNQUF4RSxHQUErRSxnQkFBL0UsR0FBZ0csUUFBUSxDQUFDLFVBQXpHLEdBQW9ILEdBQXBILEdBQXlILFFBQVEsQ0FBQyxJQUF2STtBQUE0SSxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBNUosV0FBaEI7QUFDUDtBQUVaLE9BWEQ7QUFjRCxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNGOzs7V0FFVDtBQUVDLHNCQUFVLE9BQVYsRUFBa0IsUUFBbEIsRUFBMkI7QUFDZixVQUFJLFNBQVMsR0FBQyxDQUFDLENBQWY7O0FBQ0EsVUFBSSxPQUFPLElBQUksU0FBZixFQUEwQjtBQUN6QixZQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQSxZQUFJLEdBQUcsR0FBRyxlQUFlLENBQUMsR0FBaEIsQ0FBb0IsVUFBUyxDQUFULEVBQVk7QUFBRSxpQkFBTyxDQUFDLENBQUMsU0FBVDtBQUFxQixTQUF2RCxFQUF5RCxPQUF6RCxDQUFpRSxPQUFPLEdBQUMsUUFBekUsQ0FBVjtBQUNBLFlBQUksR0FBRyxHQUFHLHNDQUFxQyxPQUFyQyxHQUE2QyxHQUE3QyxHQUFpRCxRQUFqRCxHQUEwRCxHQUFwRTs7QUFDQSxZQUFJLEdBQUcsR0FBQyxDQUFSLEVBQVU7QUFDbEI7QUFDVSxlQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsRUFBbUMsSUFBbkMsQ0FBd0MsVUFBQSxRQUFRLEVBQUc7QUFHM0MsZ0JBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFDckQ7QUFFQSxrQkFBSSxZQUFZLEdBQUc7QUFBQyxnQkFBQSxTQUFTLEVBQUUsT0FBTyxHQUFDLFFBQXBCO0FBQThCLGdCQUFBLEVBQUUsRUFBRSxPQUFsQztBQUEwQyxnQkFBQSxJQUFJLEVBQUUsUUFBaEQ7QUFBMEQsZ0JBQUEsUUFBUSxFQUFFLFFBQVEsQ0FBQztBQUE3RSxlQUFuQjtBQUVYLGNBQUEsZUFBZSxDQUFDLElBQWhCLENBQXFCLFlBQXJCO0FBQ1csY0FBQSxTQUFTLEdBQUMsZUFBZSxDQUFDLE1BQWhCLEdBQXVCLENBQWpDO0FBQ0EsY0FBQSxRQUFRLENBQUMsT0FBVCxDQUFpQixlQUFlLENBQUMsU0FBRCxDQUFmLENBQTJCLFFBQTVDO0FBQ0EsY0FBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLGdCQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsZ0JBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxlQUFqQjtBQUVILGFBVkQsTUFVTztBQUVILGNBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0IsUUFBUSxDQUFDLElBQXpCO0FBQ0gsYUFoQjBDLENBaUJoRDs7QUFDRixXQWxCRDtBQXFCRCxTQXZCRCxNQXVCTztBQUNMLFVBQUEsU0FBUyxHQUFDLEdBQVY7QUFDQSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCLGVBQWUsQ0FBQyxTQUFELENBQWYsQ0FBMkIsUUFBNUM7QUFDRDtBQUNGOztBQUFBO0FBRUgsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDUDs7Ozs7O2dCQXZxR0csb0IsYUFZYyxDQUFDLE9BQUQsRUFBUyxJQUFULEVBQWMsWUFBZCxFQUEyQixrQkFBM0IsRUFBOEMsZ0JBQTlDLEM7O2VBK3BHSixvQjs7OztBQ25yR2hCO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7SUFFTSxlO0FBR0gsMkJBQWEsRUFBYixFQUFnQixVQUFoQixFQUEyQixjQUEzQixFQUEyQztBQUFBOztBQUd4QyxTQUFLLGNBQUwsR0FBc0IsY0FBdEI7QUFDQSxTQUFLLEVBQUwsR0FBUSxFQUFSO0FBQ0EsU0FBSyxVQUFMLEdBQWlCLFVBQWpCO0FBQ0EsU0FBSyxTQUFMLEdBQWUsRUFBZjtBQUVEOzs7O1dBSUYsNkJBQXFCLGNBQXJCLEVBQW9DO0FBRWpDLFVBQUksY0FBYyxJQUFJLFNBQXRCLEVBQWlDO0FBQzlCLFlBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVBLFlBQUksUUFBUSxHQUFDLElBQWI7QUFFQSxZQUFJLEdBQUcsR0FBRywwQkFBd0IsY0FBeEIsR0FBdUMsR0FBakQ7QUFDQSxhQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsQ0FBa0MsVUFBQSxRQUFRLEVBQUc7QUFFM0IsY0FBSSxRQUFRLENBQUMsTUFBVCxLQUFrQixHQUF0QixFQUEyQixRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUF1QixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBdkMsV0FBakIsRUFBM0IsS0FDSyxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsSUFBSSxFQUFFLElBQVA7QUFBYyxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBOUIsV0FBaEI7QUFDZixTQUpSO0FBS0YsT0FYRCxNQVlLO0FBRUUsUUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFVBQUEsSUFBSSxFQUFFLEtBQUssaUJBQUwsQ0FBdUIsU0FBUyxHQUFDLFFBQWpDLEVBQTJDLFNBQWxEO0FBQTRELFVBQUEsTUFBTSxFQUFDO0FBQW5FLFNBQWpCO0FBQ047O0FBQ0QsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDRjs7O1dBR0QsOEJBQXNCLFlBQXRCLEVBQ0E7QUFBQSxVQURvQyxRQUNwQyx1RUFENkMsRUFDN0M7QUFFQyxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7O0FBQ0UsVUFBSSxZQUFZLENBQUMsRUFBYixJQUFtQixTQUF2QixFQUFrQztBQUN0QyxZQUFJLEdBQUcsR0FBRywwQkFBd0IsWUFBWSxDQUFDLEVBQXJDLEdBQXdDLEdBQWxEO0FBQ0EsYUFBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLFlBQTdCLEVBQTJDLElBQTNDLENBQWdELFVBQUEsUUFBUSxFQUFHO0FBQUE7O0FBQ3pELGNBQUksUUFBUSxDQUFDLE1BQVQsS0FBa0IsR0FBdEIsRUFBMkIsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLEdBQUcsRUFBRSxRQUFGLGFBQUUsUUFBRix5Q0FBRSxRQUFRLENBQUUsSUFBWixtREFBRSxlQUFnQixHQUF0QjtBQUE0QixZQUFBLE1BQU0sRUFBQyxRQUFELGFBQUMsUUFBRCx1QkFBQyxRQUFRLENBQUU7QUFBN0MsV0FBakIsRUFBM0IsS0FDTSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQUYsYUFBRSxRQUFGLHVCQUFFLFFBQVEsQ0FBRSxJQUFqQjtBQUF3QixZQUFBLE1BQU0sRUFBQyxRQUFELGFBQUMsUUFBRCx1QkFBQyxRQUFRLENBQUU7QUFBekMsV0FBaEI7QUFDUCxTQUhEO0FBS0ssT0FQRCxNQU9PO0FBQ0QsUUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFVBQUEsR0FBRyxFQUFFLG1DQUFOO0FBQTJDLFVBQUEsTUFBTSxFQUFDO0FBQWxELFNBQWhCO0FBQ0w7O0FBQ0QsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDRixLLENBRUQ7QUFDQztBQUNBOzs7O1dBQ0Esb0JBQVksV0FBWixFQUF3QjtBQUVwQixVQUFJLFdBQVcsSUFBSSxTQUFuQixFQUErQixXQUFXLEdBQUMsTUFBWjtBQUMvQixVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFQSxVQUFJLFFBQVEsR0FBQyxJQUFiO0FBRUEsVUFBSSxHQUFHLEdBQUcsd0JBQXNCLFdBQXRCLEdBQWtDLEdBQTVDO0FBQ0EsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBRzFCLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBa0IsR0FBdEIsRUFBMkIsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxVQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBdUIsVUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXZDLFNBQWpCLEVBQTNCLEtBQ0ssUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxVQUFBLElBQUksRUFBRSxJQUFQO0FBQWMsVUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTlCLFNBQWhCO0FBR3ZCLE9BUEQ7QUFXRixhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNEOzs7V0FDQSxxQkFBYSxNQUFiLEVBQW9CO0FBQUE7O0FBRWpCLFVBQUksQ0FBQyxNQUFMLEVBQWMsTUFBTSxHQUFDLE1BQVA7QUFDZCxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFQSxVQUFJLFFBQVEsR0FBQyxJQUFiO0FBRUEsVUFBSSxHQUFHLEdBQUcsMEJBQXdCLE1BQXhCLEdBQStCLEdBQXpDOztBQUNBLFVBQUksQ0FBQyxLQUFLLFNBQUwsQ0FBZSxNQUFmLENBQUwsRUFBNkI7QUFDN0IsYUFBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBRzFCLGNBQUksUUFBUSxDQUFDLE1BQVQsS0FBa0IsR0FBdEIsRUFBMEI7QUFDekIsWUFBQSxLQUFJLENBQUMsU0FBTCxDQUFlLE1BQWYsSUFBeUIsUUFBUSxDQUFDLElBQWxDO0FBQ0EsWUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLGNBQUEsSUFBSSxFQUFFLEtBQUksQ0FBQyxTQUFMLENBQWUsTUFBZixDQUFQO0FBQWdDLGNBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFoRCxhQUFqQjtBQUNDLFdBSEYsTUFJSyxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUF1QixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBdkMsV0FBaEI7QUFHdkIsU0FWRDtBQVlDLE9BYkQsTUFhTyxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFFBQUEsSUFBSSxFQUFFLEtBQUssU0FBTCxDQUFlLE1BQWYsQ0FBUDtBQUFnQyxRQUFBLE1BQU0sRUFBQztBQUF2QyxPQUFqQjs7QUFFVCxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNEOzs7V0FFQSx5QkFBaUIsUUFBakIsRUFBMkI7QUFFWCxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQSxVQUFJLFFBQVEsR0FBRyxJQUFmO0FBQ0EsVUFBSSxHQUFHLEdBQUcsMkJBQVY7QUFDQSxVQUFJLFNBQVMsR0FBRztBQUFDLGtCQUFTO0FBQVYsT0FBaEI7QUFDQSxXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBNkIsU0FBN0IsRUFBd0MsSUFBeEMsQ0FBNkMsVUFBQSxRQUFRLEVBQUc7QUFDOUMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFrQixHQUF0QixFQUEyQixRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFVBQUEsSUFBSSxFQUFDLFFBQVEsQ0FBQyxJQUFmO0FBQW9CLFVBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFwQyxTQUFqQixFQUEzQixLQUNTLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsVUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFVBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxTQUFoQjtBQUVsQixPQUpEO0FBT0wsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFFUDs7O1dBRUQseUJBQWlCLE9BQWpCLEVBQTBCO0FBRWIsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUEsVUFBSSxHQUFHLEdBQUcsMkJBQVY7QUFDQSxVQUFJLFNBQVMsR0FBRztBQUFDLFFBQUEsT0FBTyxFQUFQO0FBQUQsT0FBaEI7QUFDQSxXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBNkIsU0FBN0IsRUFBd0MsSUFBeEMsQ0FBNkMsVUFBQSxRQUFRLEVBQUc7QUFFcEQsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFrQixHQUF0QixFQUEyQixRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFVBQUEsSUFBSSxFQUFDLFFBQVEsQ0FBQyxJQUFmO0FBQW9CLFVBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFwQyxTQUFqQixFQUEzQixLQUNZLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsVUFBQSxJQUFJLEVBQUMsUUFBUSxDQUFDLElBQWY7QUFBb0IsVUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXBDLFNBQWhCO0FBRWYsT0FMRDtBQVFMLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBRVA7OztXQUVELCtCQUF1QixPQUF2QixFQUFnQztBQUVuQixVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQSxVQUFJLEdBQUcsR0FBRywwQkFBVjtBQUNBLFVBQUksU0FBUyxHQUFHO0FBQUMsUUFBQSxPQUFPLEVBQVA7QUFBRCxPQUFoQjtBQUNBLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixTQUE3QixFQUF3QyxJQUF4QyxDQUE2QyxVQUFBLFFBQVEsRUFBRztBQUU5QyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQWtCLEdBQXRCLEVBQTJCLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsVUFBQSxJQUFJLEVBQUMsUUFBUSxDQUFDLElBQWY7QUFBb0IsVUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXBDLFNBQWpCLEVBQTNCLEtBQ1UsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxVQUFBLElBQUksRUFBQyxRQUFRLENBQUMsSUFBZjtBQUFvQixVQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBcEMsU0FBaEI7QUFFbkIsT0FMRDtBQVFMLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBRVA7Ozs7OztnQkExSkgsZSxhQWFjLENBQUMsSUFBRCxFQUFNLFlBQU4sRUFBbUIsZ0JBQW5CLEM7O2VBZ0pMLGU7Ozs7QUNuS2Y7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7QUFFQTs7Ozs7Ozs7OztJQUVNLDBCO0FBRUosd0NBQ0E7QUFBQTs7QUFFSyxTQUFLLFlBQUwsR0FBb0IsaUNBQXBCO0FBQ0o7Ozs7V0FFRCxvQkFBWSxJQUFaLEVBQWlCLFlBQWpCLEVBQ0E7QUFDRSxVQUFJLE9BQU8sR0FBRyxLQUFLLFlBQUwsQ0FBa0IsYUFBbEIsQ0FBZ0MsSUFBaEMsRUFBcUMsWUFBckMsQ0FBZCxDQURGLENBRUU7O0FBQ0EsYUFBTyxPQUFQO0FBQ0Q7OztXQUVBLGtCQUFVLElBQVYsRUFDRDtBQUNFLFVBQUksS0FBSyxHQUFHLEtBQUssWUFBTCxDQUFrQixRQUFsQixDQUEyQixJQUEzQixDQUFaLENBREYsQ0FFRTs7QUFDQSxhQUFPLEtBQVA7QUFDRDs7O1dBRUQsbUJBQVcsV0FBWCxFQUF1QixVQUF2QixFQUFrQyxRQUFsQyxFQUNBO0FBQ0UsVUFBSSxNQUFNLEdBQUcsS0FBSyxZQUFMLENBQWtCLFNBQWxCLENBQTRCLFdBQTVCLEVBQXdDLFVBQXhDLEVBQW1ELFFBQW5ELENBQWIsQ0FERixDQUVFOztBQUNBLGFBQU8sTUFBUDtBQUNEOzs7V0FFRCxvQkFBWSxXQUFaLEVBQ0E7QUFHRSxVQUFJLE9BQU8sR0FBRyxLQUFLLFlBQUwsQ0FBa0IsVUFBbEIsQ0FBNkIsV0FBN0IsQ0FBZDtBQUVBLGFBQU8sT0FBUDtBQUNEOzs7V0FFRCx1QkFBZSxXQUFmLEVBQTJCLFVBQTNCLEVBQXNDLElBQXRDLEVBQ0E7QUFFRSxVQUFJLE1BQUo7QUFDQSxVQUFJLE9BQU8sR0FBRyxLQUFLLFlBQUwsQ0FBa0IsVUFBbEIsQ0FBNkIsV0FBN0IsQ0FBZDs7QUFFQSxVQUFJLE9BQU8sS0FBRyxTQUFkLEVBQ0E7QUFDRyxRQUFBLE1BQU0sR0FBRyxPQUFPLENBQUMsYUFBUixDQUFzQixVQUF0QixFQUFpQyxJQUFqQyxDQUFUO0FBQ0YsT0FSSCxDQVVFOzs7QUFDQSxhQUFPLE1BQVA7QUFDRDs7O1dBQ0QsbUJBQVcsV0FBWCxFQUF1QixZQUF2QixFQUFvQyxVQUFwQyxFQUErQyxJQUEvQyxFQUFvRCxRQUFwRCxFQUNBO0FBRUUsVUFBSSxNQUFKLEVBQVcsUUFBWDtBQUNBLFVBQUksT0FBTyxHQUFHLEtBQUssWUFBTCxDQUFrQixVQUFsQixDQUE2QixXQUE3QixDQUFkOztBQUVBLFVBQUksT0FBTyxLQUFHLFNBQWQsRUFDQTtBQUNHLFFBQUEsUUFBUSxHQUFHLE9BQU8sQ0FBQyxTQUFSLENBQWtCLFlBQWxCLEVBQStCLFVBQS9CLEVBQTBDLElBQTFDLEVBQStDLFFBQS9DLENBQVg7QUFDRixPQUhELE1BSUE7QUFDQyxZQUFJLFlBQVksR0FBRztBQUFDLHFCQUFVLFdBQVg7QUFBdUIsc0JBQVcsWUFBbEM7QUFBK0Msb0JBQVMsVUFBeEQ7QUFBbUUsa0JBQU8sSUFBMUU7QUFBK0Usc0JBQVc7QUFBMUYsU0FBbkI7QUFDQSxZQUFJLE9BQU8sR0FBRyxLQUFLLFlBQUwsQ0FBa0IsOEJBQWxCLENBQWlELFlBQWpELENBQWQ7QUFDQSxlQUFPLE9BQVA7QUFDQSxPQWJILENBZUU7OztBQUNBLGFBQU8sUUFBUDtBQUNEOzs7V0FFRCw2QkFBcUIsV0FBckIsRUFBaUMsWUFBakMsRUFBOEMsVUFBOUMsRUFBeUQsSUFBekQsRUFBOEQsUUFBOUQsRUFBdUUsV0FBdkUsRUFDQTtBQUVFLFVBQUksTUFBSixFQUFXLFFBQVg7QUFDQSxVQUFJLE9BQU8sR0FBRyxLQUFLLFlBQUwsQ0FBa0IsVUFBbEIsQ0FBNkIsV0FBN0IsQ0FBZDs7QUFFQSxVQUFJLE9BQU8sS0FBRyxTQUFkLEVBQ0E7QUFDRyxRQUFBLFFBQVEsR0FBRyxPQUFPLENBQUMsU0FBUixDQUFrQixZQUFsQixFQUErQixVQUEvQixFQUEwQyxJQUExQyxFQUErQyxRQUEvQyxFQUF3RCxXQUF4RCxDQUFYO0FBQ0YsT0FIRCxNQUlBO0FBQ0MsWUFBSSxZQUFZLEdBQUc7QUFBQyxxQkFBVSxXQUFYO0FBQXVCLHNCQUFXLFlBQWxDO0FBQStDLG9CQUFTLFVBQXhEO0FBQW1FLGtCQUFPLElBQTFFO0FBQStFLHlCQUFjLFdBQTdGO0FBQXlHLHNCQUFXO0FBQXBILFNBQW5CO0FBQ0EsWUFBSSxPQUFPLEdBQUcsS0FBSyxZQUFMLENBQWtCLDhCQUFsQixDQUFpRCxZQUFqRCxDQUFkO0FBQ0EsZUFBTyxPQUFQO0FBQ0EsT0FiSCxDQWVFOzs7QUFDQSxhQUFPLFFBQVA7QUFDRDs7O1dBQ0QsbUJBQVcsV0FBWCxFQUF1QixVQUF2QixFQUNBO0FBQ0UsVUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFwQjtBQUNBLFVBQUksT0FBTyxHQUFHLEtBQUssWUFBTCxDQUFrQixVQUFsQixDQUE2QixXQUE3QixDQUFkOztBQUNBLFVBQUksT0FBTyxLQUFHLFNBQWQsRUFDQTtBQUNFLFlBQUksVUFBVSxLQUFLLE1BQW5CLEVBQTJCLFlBQVksR0FBRSxPQUFPLENBQUMsSUFBUixFQUFkO0FBQzNCLFlBQUksVUFBVSxLQUFLLE1BQW5CLEVBQTJCLFlBQVksR0FBRSxPQUFPLENBQUMsSUFBUixFQUFkO0FBQzVCOztBQUNELGFBQU8sWUFBUDtBQUNEOzs7Ozs7ZUFFYSwwQjs7OztBQy9HaEI7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7Ozs7Ozs7OztJQUVNLGU7QUFFSiwyQkFBWSxFQUFaLEVBQWUsVUFBZixFQUEwQixnQkFBMUIsRUFBMkMsY0FBM0MsRUFDQTtBQUFBOztBQUNJLFNBQUssS0FBTCxHQUFhLEVBQWI7QUFDQSxTQUFLLGNBQUwsR0FBc0IsY0FBdEI7QUFDQSxTQUFLLEVBQUwsR0FBUSxFQUFSO0FBQ0EsU0FBSyxVQUFMLEdBQWlCLFVBQWpCO0FBQ0EsU0FBSyxnQkFBTCxHQUF1QixnQkFBdkI7QUFJSDs7OztXQUlBLDJCQUFtQixNQUFuQixFQUEyQjtBQUVwQixVQUFJLFdBQVcsR0FBQyxFQUFoQjtBQUNBLFVBQUksR0FBRyxHQUFDLHNDQUFSO0FBR0EsTUFBQSxXQUFXLEdBQUMsS0FBWjs7QUFDQSxVQUFJLE1BQU0sSUFBRSxTQUFaLEVBQXVCO0FBQ3JCLFFBQUEsR0FBRyxHQUFDLEdBQUcsR0FBQyxNQUFKLEdBQVcsR0FBZjtBQUNEOztBQUNDLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVBLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUNyQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXhCLEVBQTZCO0FBQ2YsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQixRQUFRLENBQUMsSUFBMUI7QUFDYixTQUZELE1BRU87QUFDQSxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUMsZ0RBQThDLFFBQVEsQ0FBQyxNQUE1RDtBQUFtRSxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBbkYsV0FBaEI7QUFDTjtBQUNSLE9BTkQsRUFPQSxVQUFBLEtBQUssRUFBRTtBQUNDLFFBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxVQUFBLEdBQUcsRUFBQyx1QkFBcUIsS0FBSyxDQUFDLEdBQWhDO0FBQW9DLFVBQUEsTUFBTSxFQUFDLEtBQUssQ0FBQztBQUFqRCxTQUFoQjtBQUVQLE9BVkQ7QUFhQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FHUDtBQUNEO0FBQ0M7QUFDQSxnQ0FBcUIsTUFBckIsRUFBNEIsY0FBNUIsRUFBNEM7QUFFcEMsVUFBSSxXQUFXLEdBQUMsTUFBaEI7QUFDQSxVQUFJLFdBQVcsR0FBQyxFQUFoQjs7QUFFQSxVQUFJLE1BQU0sSUFBRSxTQUFaLEVBQXVCO0FBQ3JCO0FBQ0EsUUFBQSxXQUFXLEdBQUMsTUFBTSxHQUFDLEdBQW5CO0FBQ0EsUUFBQSxXQUFXLEdBQUMsS0FBWjtBQUNEOztBQUdELFVBQUksR0FBRyxHQUFDLDRCQUEwQixXQUFsQztBQUNDLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVDLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixXQUE3QixFQUF5QyxjQUF6QyxFQUF5RCxJQUF6RCxDQUE4RCxVQUFBLFFBQVEsRUFBRztBQUVyRSxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXdEO0FBQ3BELFVBQUEsUUFBUSxDQUFDLElBQVQsR0FBZ0IsSUFBaEIsQ0FBcUIsVUFBQSxJQUFJLEVBQUU7QUFDYixZQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCLElBQWpCO0FBQ2IsV0FGRDtBQUlILFNBTEQsTUFLTztBQUFHO0FBQ0YsY0FBSSxPQUFPLEdBQUcsRUFBZDtBQUNBLGNBQUksUUFBUSxDQUFDLEdBQVQsSUFBYyxTQUFsQixFQUE2QixPQUFPLEdBQUMsbURBQVIsQ0FBN0IsS0FDSyxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQW5CO0FBQ0wsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFDLE9BQUw7QUFBYSxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBN0IsV0FBaEI7QUFDSDtBQUNSLE9BYkQ7QUFlQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FHUDtBQUNEO0FBQ0M7QUFDQSxrQ0FBdUIsbUJBQXZCLEVBQTJDLElBQTNDLEVBQWlEO0FBRTNDLFVBQUksV0FBVyxHQUFDLEtBQWhCO0FBRUEsVUFBSSxHQUFHLEdBQUMsb0NBQWtDLG1CQUFsQyxHQUFzRCxHQUF0RCxHQUEwRCxJQUExRCxHQUErRCxHQUF2RTtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVBLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixXQUE3QixFQUF5QyxlQUF6QyxFQUEwRCxJQUExRCxDQUErRCxVQUFBLFFBQVEsRUFBRztBQUNsRSxRQUFBLFFBQVEsQ0FBQyxJQUFULEdBQWdCLElBQWhCLENBQXFCLFVBQUEsSUFBSSxFQUFFO0FBRXZCLGNBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDeEIsWUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQixJQUFqQjtBQUNKLFdBRkQsTUFFTztBQUFFO0FBQ0wsWUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLGNBQUEsR0FBRyxFQUFDLG1EQUFpRCxRQUFRLENBQUMsTUFBL0Q7QUFBc0UsY0FBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXRGLGFBQWhCO0FBQ0g7QUFDSixTQVBEO0FBUVAsT0FURDtBQVdBLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUVIO0FBQ0Q7QUFDQztBQUNBLG1DQUF3QixZQUF4QixFQUFzQztBQUVoQyxVQUFJLEVBQUUsR0FBQyxDQUFQO0FBRUEsVUFBSSxZQUFZLENBQUMsRUFBYixJQUFpQixJQUFqQixJQUF5QixZQUFZLENBQUMsRUFBYixJQUFpQixTQUE5QyxFQUF5RCxFQUFFLEdBQUcsWUFBWSxDQUFDLEVBQWxCO0FBQ3pELFVBQUksR0FBRyxHQUFDLG9DQUFrQyxFQUFsQyxHQUFxQyxHQUFyQyxHQUF5QyxZQUFZLENBQUMsSUFBdEQsR0FBMkQsR0FBbkU7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFQSxXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBNkIsWUFBN0IsRUFBMkMsSUFBM0MsQ0FBZ0QsVUFBQSxRQUFRLEVBQUc7QUFDOUMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF3RDtBQUNyRCxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXNCLFlBQUEsTUFBTSxFQUFFLFFBQVEsQ0FBQztBQUF2QyxXQUFqQjtBQUNILFNBRkEsTUFHSTtBQUNELFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBQyxrQ0FBTDtBQUF5QyxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBekQsV0FBaEI7QUFDSDtBQUVYLE9BUkY7QUFVQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FHSjtBQUNBO0FBQ0M7QUFDRSxnQ0FBcUIsSUFBckIsRUFBMkI7QUFFdkIsVUFBSSxHQUFHLEdBQUMsa0NBQWdDLElBQWhDLEdBQXFDLEdBQTdDO0FBRUEsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUEsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBRXJDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBd0Q7QUFFcEQsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFDLFFBQVEsQ0FBQyxJQUFmO0FBQW9CLFlBQUEsR0FBRyxFQUFDLHdDQUFzQyxRQUFRLENBQUMsTUFBL0MsR0FBc0QsR0FBOUU7QUFBa0YsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQWxHLFdBQWpCO0FBRUgsU0FKRCxNQUlPO0FBQ0gsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFDLHVEQUFMO0FBQTZELFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUE3RSxXQUFoQjtBQUNIO0FBR1IsT0FYRDtBQWFBLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUVKO0FBQ0E7QUFDQztBQUNBLDZCQUFrQixNQUFsQixFQUF5QixNQUF6QixFQUFnQyxJQUFoQyxFQUFzQztBQUU5QixVQUFJLFdBQVcsR0FBQyxLQUFoQjtBQUVBLFVBQUksR0FBRyxHQUFDLG1DQUFSO0FBQ0EsVUFBSSxXQUFXLEdBQUMsRUFBaEI7O0FBQ0MsVUFBSSxNQUFNLElBQUUsU0FBWixFQUF1QjtBQUN0QjtBQUNBLFFBQUEsV0FBVyxHQUFDLE1BQU0sR0FBQyxHQUFQLEdBQVcsTUFBWCxHQUFrQixHQUFsQixHQUFzQixJQUF0QixHQUEyQixHQUF2QztBQUNBLFFBQUEsR0FBRyxHQUFHLEdBQUcsR0FBQyxXQUFWO0FBQ0Q7O0FBRUQsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBR0YsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBRXJDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBd0Q7QUFFcEQsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFDLFFBQVEsQ0FBQyxJQUFmO0FBQW9CLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFwQyxXQUFqQjtBQUVILFNBSkQsTUFJTztBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBQyxnREFBTDtBQUFzRCxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBdEUsV0FBaEI7QUFDSDtBQUNSLE9BVEQ7QUFZSSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNQOzs7V0FDSjtBQUNBO0FBQ0M7QUFDQSw4QkFBbUIsTUFBbkIsRUFBMEIsV0FBMUIsRUFBc0MsUUFBdEMsRUFBK0MsSUFBL0MsRUFBcUQ7QUFFN0MsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsVUFBSSxXQUFXLEdBQUMsTUFBaEI7QUFFQSxVQUFJLE1BQU0sSUFBRSxTQUFaLEVBQ0ksUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxRQUFBLEdBQUcsRUFBQyw2Q0FBTDtBQUFvRCxRQUFBLE1BQU0sRUFBQztBQUEzRCxPQUFoQixFQURKLEtBRUs7QUFHSCxZQUFJLEdBQUcsR0FBQywrQkFBNkIsTUFBN0IsR0FBb0MsR0FBcEMsR0FBd0MsSUFBeEMsR0FBNkMsR0FBckQ7QUFFQSxZQUFJLFNBQVMsR0FBRztBQUFDLHNCQUFXLFFBQVo7QUFBcUIseUJBQWM7QUFBbkMsU0FBaEI7QUFDQSxhQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBNkIsU0FBN0IsRUFBd0MsSUFBeEMsQ0FBNkMsVUFBQSxRQUFRLEVBQUc7QUFFNUMsY0FBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF3RDtBQUNwRCxZQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsY0FBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLGNBQUEsR0FBRyxFQUFDLHFDQUF6QjtBQUFnRSxjQUFBLE1BQU0sRUFBRSxRQUFRLENBQUM7QUFBakYsYUFBakI7QUFDSCxXQUZELE1BR0s7QUFDRCxZQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsY0FBQSxHQUFHLEVBQUMsMERBQUw7QUFBaUUsY0FBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQWpGLGFBQWhCO0FBQ0g7QUFFWixTQVREO0FBV0E7QUFDRSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNMOzs7V0FFTjtBQUNGO0FBQ0M7QUFDQSw4QkFBbUIsTUFBbkIsRUFBMEIsWUFBMUIsRUFBdUMsUUFBdkMsRUFBaUQ7QUFFekMsVUFBSSxXQUFXLEdBQUMsTUFBaEI7QUFDQSxVQUFJLFVBQVUsR0FBQyxFQUFmOztBQUVBLFVBQUksTUFBTSxJQUFFLFNBQVosRUFBdUI7QUFDckI7QUFDQSxRQUFBLFVBQVUsR0FBQyxNQUFNLEdBQUMsR0FBUCxHQUFXLFFBQVgsR0FBb0IsR0FBL0IsQ0FGcUIsQ0FHdEI7QUFDQTs7QUFHRCxVQUFJLEdBQUcsR0FBQyxvQ0FBa0MsVUFBMUM7QUFDRyxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFRCxVQUFJLFNBQVMsR0FBRyxZQUFoQjtBQUNBLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE2QixTQUE3QixFQUF3QyxJQUF4QyxDQUE2QyxVQUFBLFFBQVEsRUFBRztBQUMvQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXdEO0FBQ3JELFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBQyxRQUFRLENBQUMsSUFBZjtBQUFxQixZQUFBLEdBQUcsRUFBQyxxQ0FBekI7QUFBZ0UsWUFBQSxNQUFNLEVBQUUsUUFBUSxDQUFDO0FBQWpGLFdBQWpCO0FBQ0gsU0FGQSxNQUdJO0FBQ0QsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFDLGlEQUFMO0FBQXdELFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUF4RSxXQUFoQjtBQUNIO0FBRVIsT0FSRDtBQVdBLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUVQO0FBQ0Q7QUFDQztBQUNBLGlDQUFzQixlQUF0QixFQUFzQyxNQUF0QyxFQUE2QyxZQUE3QyxFQUEwRCxVQUExRCxFQUFxRSxVQUFyRSxFQUFnRixVQUFoRixFQUEyRixRQUEzRixFQUFxRztBQUUvRixVQUFJLFdBQVcsR0FBQyxNQUFoQjtBQUVBLFVBQUksR0FBRyxHQUFDLGtDQUFnQyxNQUFoQyxHQUF1QyxHQUF2QyxHQUEyQyxVQUEzQyxHQUFzRCxHQUE5RDtBQUVBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVBLFVBQUksU0FBUyxHQUFHO0FBQUMsY0FBSyxlQUFOO0FBQXNCLHdCQUFlLFlBQXJDO0FBQWtELHNCQUFhLFVBQS9EO0FBQTBFLHNCQUFhLFVBQXZGO0FBQWtHLG9CQUFXO0FBQTdHLE9BQWhCO0FBQ0EsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLFNBQTdCLEVBQXdDLElBQXhDLENBQTZDLFVBQUEsUUFBUSxFQUFHO0FBQzNDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBd0Q7QUFDckQsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsR0FBRyxFQUFDLFFBQVEsQ0FBQyxJQUFULENBQWMsR0FBbkI7QUFBd0IsWUFBQSxNQUFNLEVBQUUsUUFBUSxDQUFDO0FBQXpDLFdBQWpCO0FBQ0gsU0FGQSxNQUdJO0FBQ0QsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFDLFFBQVEsQ0FBQyxJQUFULENBQWMsR0FBbkI7QUFBd0IsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXhDLFdBQWhCO0FBQ0g7QUFDSixPQVBUO0FBUUUsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDRDs7O1dBQ047QUFDRjtBQUNDO0FBQ0EsZ0NBQXFCLGNBQXJCLEVBQW9DLElBQXBDLEVBQTBDO0FBRWxDLFVBQUksR0FBRyxHQUFDLCtCQUFSO0FBQ0EsVUFBSSxXQUFXLEdBQUMsRUFBaEI7O0FBQ0EsVUFBSSxjQUFjLElBQUUsU0FBcEIsRUFBK0I7QUFDN0I7QUFDQSxRQUFBLFdBQVcsR0FBQyxjQUFjLEdBQUMsR0FBZixHQUFtQixJQUFuQixHQUF3QixHQUFwQztBQUNBLFFBQUEsR0FBRyxHQUFHLEdBQUcsR0FBQyxXQUFWO0FBQ0Q7O0FBRUQsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBR0YsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBRWhDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBd0Q7QUFFckQsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDSCxTQUhBLE1BSUk7QUFDRCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUMsc0RBQUw7QUFBNkQsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTdFLFdBQWhCO0FBQ0gsU0FSZ0MsQ0FTckM7O0FBQ1AsT0FWRDtBQVdBLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUVIO0FBQ0Q7QUFDQztBQUNBLGdDQUFxQixNQUFyQixFQUE2QjtBQUVyQixVQUFJLFdBQVcsR0FBQyxLQUFoQjtBQUVBLFVBQUksR0FBRyxHQUFDLHNDQUFSO0FBQ0EsVUFBSSxXQUFXLEdBQUMsRUFBaEI7O0FBQ0MsVUFBSSxNQUFNLElBQUUsU0FBWixFQUF1QjtBQUN0QjtBQUNBLFFBQUEsV0FBVyxHQUFDLE1BQU0sR0FBQyxHQUFuQjtBQUNBLFFBQUEsR0FBRyxHQUFHLEdBQUcsR0FBQyxXQUFWO0FBQ0Q7O0FBRUQsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0MsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBRW5DLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBd0Q7QUFFckQsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDSCxTQUhBLE1BSUk7QUFDRCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUMscURBQUw7QUFBNEQsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTVFLFdBQWhCO0FBQ0gsU0FSbUMsQ0FTdkM7O0FBQ04sT0FWQTtBQVdILGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUVKO0FBQ0E7QUFDQztBQUNBLHFDQUEwQixNQUExQixFQUFpQyxJQUFqQyxFQUFzQyxNQUF0QyxFQUE4QztBQUV0QyxVQUFJLFdBQVcsR0FBQyxLQUFoQjtBQUVBLFVBQUksR0FBRyxHQUFDLHFDQUFSO0FBQ0EsVUFBSSxXQUFXLEdBQUMsRUFBaEI7O0FBQ0MsVUFBSSxNQUFNLElBQUUsU0FBWixFQUF1QjtBQUN0QjtBQUNBLFFBQUEsV0FBVyxHQUFDLE1BQU0sR0FBQyxHQUFQLEdBQVcsSUFBWCxHQUFnQixHQUFoQixHQUFvQixNQUFwQixHQUEyQixHQUF2QztBQUNBLFFBQUEsR0FBRyxHQUFHLEdBQUcsR0FBQyxXQUFWO0FBQ0Q7O0FBRUQsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0MsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBRW5DLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBd0Q7QUFFckQsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDSCxTQUhBLE1BSUk7QUFDRCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUMsNERBQUw7QUFBbUUsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQW5GLFdBQWhCO0FBQ0gsU0FSbUMsQ0FTeEM7O0FBQ0wsT0FWQTtBQVdILGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUNMO0FBQ0M7QUFDQztBQUNBLHVDQUE0QixNQUE1QixFQUFtQyxJQUFuQyxFQUF3QyxRQUF4QyxFQUFrRDtBQUUxQyxVQUFJLFdBQVcsR0FBQyxLQUFoQjtBQUVBLFVBQUksR0FBRyxHQUFDLHVDQUFSO0FBQ0EsVUFBSSxXQUFXLEdBQUMsRUFBaEI7O0FBQ0MsVUFBSSxNQUFNLElBQUUsU0FBWixFQUF1QjtBQUN0QjtBQUNBLFFBQUEsV0FBVyxHQUFDLE1BQU0sR0FBQyxHQUFQLEdBQVcsSUFBWCxHQUFnQixHQUFoQixHQUFvQixRQUFwQixHQUE2QixHQUF6QztBQUNBLFFBQUEsR0FBRyxHQUFHLEdBQUcsR0FBRyxXQUFaO0FBQ0Q7O0FBRUQsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUEsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQ0EsVUFBQSxRQUFRLEVBQUc7QUFDSCxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXhCLEVBQTZCO0FBQ3pCLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ0gsU0FGRCxNQUVPO0FBQ0gsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLCtEQUFOO0FBQXNFLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUF0RixXQUFoQjtBQUNIO0FBQ04sT0FQSCxFQVFBLFVBQUEsS0FBSyxFQUFFO0FBQ0gsUUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFVBQUEsR0FBRyxFQUFFLCtEQUFOO0FBQXNFLFVBQUEsTUFBTSxFQUFDLEtBQUssQ0FBQztBQUFuRixTQUFoQjtBQUNILE9BVkQ7QUFlRSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNQOzs7V0FFSDtBQUNEO0FBQ0M7QUFDQSwrQkFBb0IsSUFBcEIsRUFBeUIsTUFBekIsRUFBaUM7QUFFekIsVUFBSSxXQUFXLEdBQUMsS0FBaEI7QUFFQSxVQUFJLElBQUksR0FBQyxLQUFLLFVBQUwsQ0FBZ0IsT0FBaEIsQ0FBd0IsV0FBeEIsQ0FBb0MsSUFBN0M7QUFFQSxVQUFJLEdBQUcsR0FBQyxnQ0FBOEIsSUFBOUIsR0FBbUMsR0FBbkMsR0FBdUMsTUFBdkMsR0FBOEMsR0FBOUMsR0FBa0QsSUFBbEQsR0FBdUQsR0FBL0QsQ0FOeUIsQ0FRekI7O0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUEsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBRzNCLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDekI7QUFFQSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUVILFNBTEQsTUFLTztBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBRSxvREFBTjtBQUEyRCxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBM0UsV0FBaEI7QUFDSCxTQVYwQixDQVcvQjs7QUFDWCxPQVpIO0FBZUUsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDUDs7O1dBRUg7QUFDRDtBQUNDO0FBQ0Esd0NBQTZCLElBQTdCLEVBQWtDLE1BQWxDLEVBQXlDLFFBQXpDLEVBQWtELFFBQWxELEVBQTJELFFBQTNELEVBQW9FLFNBQXBFLEVBQStFO0FBRXZFLFVBQUksV0FBVyxHQUFDLEtBQWhCO0FBRUEsVUFBSSxJQUFJLEdBQUMsS0FBSyxVQUFMLENBQWdCLE9BQWhCLENBQXdCLFdBQXhCLENBQW9DLElBQTdDO0FBRUEsVUFBSSxHQUFHLEdBQUMsZ0NBQThCLElBQTlCLEdBQW1DLEdBQW5DLEdBQXVDLE1BQXZDLEdBQThDLEdBQTlDLEdBQWtELElBQWxELEdBQXVELEdBQS9EOztBQUNBLFVBQUksUUFBUSxJQUFFLEVBQVYsSUFBZ0IsUUFBUSxJQUFFLFNBQTlCLEVBQ0E7QUFDRSxRQUFBLEdBQUcsR0FBRyxHQUFHLEdBQUMsUUFBSixHQUFhLFFBQW5COztBQUNBLFlBQUksU0FBUyxJQUFFLEVBQVgsSUFBaUIsU0FBUyxJQUFFLFNBQWhDLEVBQ0E7QUFDQSxVQUFBLEdBQUcsR0FBRyxHQUFHLEdBQUMsYUFBSixHQUFrQixTQUF4QjtBQUVDO0FBQ0Y7O0FBRUQsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBRzNCLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDekI7QUFFQSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUVILFNBTEQsTUFLTztBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBRSw2REFBTjtBQUFvRSxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBcEYsV0FBaEI7QUFDSCxTQVYwQixDQVcvQjs7QUFDWCxPQVpIO0FBZUYsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBQ0k7QUFDUjtBQUNDO0FBQ0EsZ0RBQXFDLElBQXJDLEVBQTBDLE1BQTFDLEVBQWlELFFBQWpELEVBQTBELFFBQTFELEVBQW1FLFFBQW5FLEVBQTRFLFNBQTVFLEVBQXNGLFFBQXRGLEVBQWdHO0FBRXhGLFVBQUksV0FBVyxHQUFDLE1BQWhCO0FBRUEsVUFBSSxJQUFJLEdBQUMsS0FBSyxVQUFMLENBQWdCLE9BQWhCLENBQXdCLFdBQXhCLENBQW9DLElBQTdDO0FBRUEsVUFBSSxHQUFHLEdBQUMseUNBQXVDLElBQXZDLEdBQTRDLEdBQTVDLEdBQWdELE1BQWhELEdBQXVELEdBQXZELEdBQTJELElBQTNELEdBQWdFLEdBQXhFOztBQUNBLFVBQUksUUFBUSxJQUFFLEVBQVYsSUFBZ0IsUUFBUSxJQUFFLFNBQTlCLEVBQ0E7QUFDRSxRQUFBLEdBQUcsR0FBRyxHQUFHLEdBQUMsUUFBSixHQUFhLFFBQW5COztBQUNBLFlBQUksU0FBUyxJQUFFLEVBQVgsSUFBaUIsU0FBUyxJQUFFLFNBQWhDLEVBQ0E7QUFDQSxVQUFBLEdBQUcsR0FBRyxHQUFHLEdBQUMsYUFBSixHQUFrQixTQUF4QjtBQUVDO0FBQ0Y7O0FBRUYsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0UsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLFFBQTdCLEVBQXVDLElBQXZDLENBQTRDLFVBQUEsUUFBUSxFQUFHO0FBQzNDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDbEQ7QUFDMkIsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFFRixTQUpKLE1BSVU7QUFFSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsUUFBUSxDQUFDLElBQWY7QUFBb0IsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXBDLFdBQWhCO0FBQ0g7QUFDaEIsT0FUQTtBQWFELGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0w7Ozs7QUFFRjtBQUNIO0FBQ0E7QUFDRSw2QkFBa0IsTUFBbEIsRUFBeUIsUUFBekIsRUFBa0MsSUFBbEMsRUFBdUMsZUFBdkMsRUFBd0Q7QUFFaEQsVUFBSSxXQUFXLEdBQUMsTUFBaEI7QUFFQSxVQUFJLEdBQUcsR0FBQyw4QkFBNEIsTUFBNUIsR0FBbUMsR0FBbkMsR0FBdUMsUUFBdkMsR0FBZ0QsR0FBaEQsR0FBb0QsSUFBcEQsR0FBeUQsR0FBakU7QUFFQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFQSxVQUFJLFNBQVMsR0FBRTtBQUFDLGVBQU07QUFBUCxPQUFmO0FBQ0UsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLFNBQTdCLEVBQXdDLElBQXhDLENBQTZDLFVBQUEsUUFBUSxFQUFHO0FBQ25ELFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDdEI7QUFDVSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUNiLFNBSEosTUFHVTtBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBQyxnREFBTDtBQUFzRCxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBdEUsV0FBaEI7QUFDSDtBQUNSLE9BUEQ7QUFVSixhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7O0FBQ0o7QUFDRDtBQUNBO0FBQ0UsMEJBQWUsTUFBZixFQUFzQixhQUF0QixFQUFvQyxRQUFwQyxFQUE2QyxlQUE3QyxFQUE2RCxTQUE3RCxFQUF1RSxlQUF2RSxFQUF1RixJQUF2RixFQUE2RjtBQUVyRixVQUFJLFdBQVcsR0FBQyxNQUFoQjtBQUVBLFVBQUksR0FBRyxHQUFDLDBCQUF3QixNQUF4QixHQUErQixHQUEvQixHQUFtQyxhQUFuQyxHQUFpRCxHQUFqRCxHQUFxRCxTQUFyRCxHQUErRCxHQUEvRCxHQUFtRSxlQUFuRSxHQUFtRixHQUEzRjtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVBLFVBQUksU0FBUyxHQUFJO0FBQUMsb0JBQVcsUUFBWjtBQUFxQiwyQkFBa0I7QUFBdkMsT0FBakI7QUFDQSxXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBNkIsU0FBN0IsRUFBd0MsSUFBeEMsQ0FBNkMsVUFBQSxRQUFRLEVBQUc7QUFFOUMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUF4QixFQUE2QjtBQUNmLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ2IsU0FGRCxNQUVPO0FBRUgsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFDLHdEQUFzRCxRQUFRLENBQUMsTUFBL0QsR0FBc0UsZ0JBQXRFLEdBQXVGLFFBQVEsQ0FBQyxVQUFoRyxHQUEyRyxHQUEzRyxHQUFnSCxRQUFRLENBQUMsSUFBOUg7QUFBbUksWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQW5KLFdBQWhCO0FBQ0M7QUFFWixPQVRIO0FBV0YsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7OztBQUNIO0FBQ0Y7QUFDQTtBQUNFLDRCQUFpQixjQUFqQixFQUFnQyxhQUFoQyxFQUE4QyxJQUE5QyxFQUFvRDtBQUU1QyxVQUFJLFdBQVcsR0FBQyxLQUFoQjtBQUVBLFVBQUksR0FBRyxHQUFDLDZCQUEyQixjQUEzQixHQUEwQyxHQUExQyxHQUE4QyxhQUE5QyxHQUE0RCxHQUE1RCxHQUFnRSxJQUFoRSxHQUFxRSxHQUE3RTtBQUVBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUdFLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUdyQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXhCLEVBQTZCO0FBQ3pCO0FBQ1UsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDYixTQUhELE1BR087QUFFSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUMsOENBQUw7QUFBb0QsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXBFLFdBQWhCO0FBQ0gsU0FUb0MsQ0FVMUM7O0FBQ0YsT0FYRDtBQWFBLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUNEO0FBQ0o7QUFDQTtBQUNBLGlDQUFzQixRQUF0QixFQUErQixNQUEvQixFQUFzQyxTQUF0QyxFQUFnRCxjQUFoRCxFQUErRCxrQkFBL0QsRUFBa0YsUUFBbEYsRUFBMkYsWUFBM0YsRUFBd0csZUFBeEcsRUFBd0gsZUFBeEgsRUFBeUk7QUFFbkksVUFBSSxXQUFXLEdBQUMsS0FBaEI7QUFDQSxVQUFJLEdBQUcsR0FBQyxtQ0FBaUMsUUFBakMsR0FBMEMsR0FBMUMsR0FBOEMsTUFBOUMsR0FBcUQsR0FBckQsR0FBeUQsU0FBekQsR0FBbUUsR0FBbkUsR0FBdUUsY0FBdkUsR0FBc0YsR0FBdEYsR0FBMEYsa0JBQTFGLEdBQTZHLEdBQTdHLEdBQWlILFFBQWpILEdBQTBILEdBQTFILEdBQThILFlBQTlILEdBQTJJLEdBQTNJLEdBQStJLGVBQS9JLEdBQStKLEdBQS9KLEdBQW1LLGVBQW5LLEdBQW1MLEdBQTNMO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUUsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBQ3JDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDekIsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDSCxTQUZELE1BRU87QUFDSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUscURBQXFELFFBQVEsQ0FBQyxJQUFwRTtBQUF5RSxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBekYsV0FBaEI7QUFDSDtBQUNSLE9BTkQ7QUFRQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FFRDtBQUNKO0FBQ0E7QUFDQSxtQ0FBd0IsUUFBeEIsRUFBaUMsTUFBakMsRUFBd0MsU0FBeEMsRUFBa0QsY0FBbEQsRUFBaUUsa0JBQWpFLEVBQW9GLFFBQXBGLEVBQTZGLFlBQTdGLEVBQTBHLGVBQTFHLEVBQTBILGVBQTFILEVBQTJJO0FBRXJJLFVBQUksV0FBVyxHQUFDLEtBQWhCO0FBQ0EsVUFBSSxHQUFHLEdBQUMscUNBQW1DLFFBQW5DLEdBQTRDLEdBQTVDLEdBQWdELE1BQWhELEdBQXVELEdBQXZELEdBQTJELFNBQTNELEdBQXFFLEdBQXJFLEdBQXlFLGNBQXpFLEdBQXdGLEdBQXhGLEdBQTRGLGtCQUE1RixHQUErRyxHQUEvRyxHQUFtSCxRQUFuSCxHQUE0SCxHQUE1SCxHQUFnSSxZQUFoSSxHQUE2SSxHQUE3SSxHQUFpSixlQUFqSixHQUFpSyxHQUFqSyxHQUFxSyxlQUFySyxHQUFxTCxHQUE3TDtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVFLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUNyQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXhCLEVBQTZCO0FBQ3pCLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ0gsU0FGRCxNQUVPO0FBQ0gsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLHlEQUF5RCxRQUFRLENBQUMsSUFBeEU7QUFBNkUsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTdGLFdBQWhCO0FBQ0g7QUFDUixPQU5EO0FBUUEsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7OztBQUVQO0FBQ0Y7QUFDQTtBQUNFLCtCQUFvQixjQUFwQixFQUFtQyxhQUFuQyxFQUFpRCxNQUFqRCxFQUF3RCxJQUF4RCxFQUE2RCxRQUE3RCxFQUF1RTtBQUUvRCxVQUFJLFdBQVcsR0FBQyxNQUFoQjtBQUVBLFVBQUksUUFBUSxJQUFFLElBQVYsSUFBa0IsUUFBUSxJQUFFLFNBQTVCLElBQXlDLFFBQVEsSUFBRSxFQUF2RCxFQUEyRCxRQUFRLEdBQUMsQ0FBVDtBQUUzRCxVQUFJLEdBQUcsR0FBQywrQkFBNkIsY0FBN0IsR0FBNEMsR0FBNUMsR0FBZ0QsYUFBaEQsR0FBOEQsR0FBOUQsR0FBa0UsTUFBbEUsR0FBeUUsR0FBekUsR0FBNkUsSUFBN0UsR0FBa0YsR0FBbEYsR0FBc0YsUUFBdEYsR0FBK0YsR0FBdkc7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFHQSxXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBOEIsSUFBOUIsQ0FBbUMsVUFBQSxRQUFRLEVBQUc7QUFDekMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFwQixJQUEyQixRQUFRLENBQUMsTUFBVCxLQUFvQixHQUFuRCxFQUF3RDtBQUNoRCxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUNGLFNBRk4sTUFFWTtBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBQyxRQUFRLENBQUMsSUFBVCxDQUFjLEdBQW5CO0FBQXVCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUF2QyxXQUFoQjtBQUNIO0FBQ1IsT0FOSDtBQVFGLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0M7Ozs7QUFDUDtBQUNGO0FBQ0E7QUFDRSx5QkFBYyxNQUFkLEVBQXFCLFFBQXJCLEVBQThCLFNBQTlCLEVBQXdDLElBQXhDLEVBQThDO0FBRXRDLFVBQUksV0FBVyxHQUFDLE1BQWhCOztBQUVBLFVBQUksTUFBTSxJQUFFLFNBQVosRUFDQTtBQUNBLFlBQUksR0FBRyxHQUFDLHlCQUF1QixNQUF2QixHQUE4QixHQUE5QixHQUFrQyxJQUFsQyxHQUF1QyxHQUEvQztBQUVBLFlBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVFLFlBQUksU0FBUyxHQUFFO0FBQUMsc0JBQVcsUUFBWjtBQUFxQixxQkFBVTtBQUEvQixTQUFmO0FBQ0EsYUFBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLFNBQTdCLEVBQXdDLElBQXhDLENBQTZDLFVBQUEsUUFBUSxFQUFHO0FBR25ELGNBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBd0Q7QUFDdkMsWUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLGNBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixjQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsYUFBakI7QUFDYixXQUZKLE1BRVU7QUFDRSxZQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsY0FBQSxHQUFHLEVBQUMsc0RBQW9ELFFBQVEsQ0FBQyxNQUE3RCxHQUFvRSxnQkFBcEUsR0FBcUYsUUFBUSxDQUFDLFVBQTlGLEdBQXlHLEdBQXpHLEdBQThHLFFBQVEsQ0FBQyxJQUE1SDtBQUFpSSxjQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBakosYUFBaEI7QUFDUjtBQUVSLFNBVEQ7QUFXQSxlQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNEO0FBQ0Y7Ozs7QUFFUDtBQUNGO0FBQ0E7QUFDRSx5QkFBYyxNQUFkLEVBQXFCLFNBQXJCLEVBQStCLElBQS9CLEVBQW9DLE1BQXBDLEVBQTJDLGNBQTNDLEVBQTJEO0FBRW5ELFVBQUksV0FBVyxHQUFDLE1BQWhCO0FBRUEsVUFBSSxNQUFNLElBQUUsU0FBUixJQUFxQixNQUFNLElBQUUsSUFBN0IsSUFBcUMsTUFBTSxJQUFFLEVBQWpELEVBQXFELE1BQU0sR0FBQyxHQUFQO0FBQ3JELFVBQUksY0FBYyxJQUFFLFNBQWhCLElBQTZCLGNBQWMsSUFBRSxJQUE3QyxJQUFxRCxjQUFjLElBQUUsRUFBekUsRUFBNkUsY0FBYyxHQUFDLENBQWY7QUFFN0UsVUFBSSxHQUFHLEdBQUMseUJBQXVCLE1BQXZCLEdBQThCLEdBQTlCLEdBQWtDLFNBQWxDLEdBQTRDLEdBQTVDLEdBQWdELE1BQWhELEdBQXVELEdBQXZELEdBQTJELGNBQTNELEdBQTBFLEdBQTFFLEdBQThFLElBQTlFLEdBQW1GLEdBQTNGO0FBR0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQThCLElBQTlCLENBQW1DLFVBQUEsUUFBUSxFQUFHO0FBQ2xDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDdEIsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDTCxTQUZGLE1BRVE7QUFDRixVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsUUFBUSxDQUFDLElBQVQsQ0FBYyxHQUFwQjtBQUF3QixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBeEMsV0FBaEI7QUFDRDtBQUNoQixPQU5EO0FBU0QsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSjs7OztBQUNIO0FBQ0Y7QUFDQTtBQUNFLHVCQUFZLE1BQVosRUFBbUIsU0FBbkIsRUFBNkIsY0FBN0IsRUFBNkM7QUFFckMsVUFBSSxXQUFXLEdBQUMsS0FBaEI7QUFFQSxVQUFJLEdBQUcsR0FBQyx1QkFBcUIsTUFBckIsR0FBNEIsR0FBNUIsR0FBZ0MsU0FBaEMsR0FBMEMsR0FBMUMsR0FBOEMsY0FBOUMsR0FBNkQsR0FBckU7QUFHQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFRixXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNEIsS0FBNUIsRUFBbUMsSUFBbkMsQ0FBd0MsVUFBQSxRQUFRLEVBQUc7QUFHM0IsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUF4QixFQUE2QjtBQUN6QjtBQUNBLGNBQUksUUFBUSxDQUFDLElBQVQsSUFBZSxJQUFuQixFQUNBO0FBQ0ksWUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLGNBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixjQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsYUFBakI7QUFDSCxXQUhELE1BSUssUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBRSxRQUFRLENBQUMsR0FBZjtBQUFtQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBbkMsV0FBaEI7QUFHUixTQVRELE1BU087QUFDSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQWY7QUFBbUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQW5DLFdBQWhCO0FBQ0gsU0FkMEIsQ0FlaEM7O0FBQ2xCLE9BaEJELEVBaUJBLFVBQUEsS0FBSyxFQUFHO0FBQ0osUUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQixLQUFLLENBQUMsR0FBdEI7QUFDSCxPQW5CRDtBQXNCVyxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNWOzs7O0FBQ047QUFDSDtBQUNBO0FBQ0ksOEJBQW1CLE1BQW5CLEVBQTBCLFFBQTFCLEVBQW9DO0FBRWhDLFVBQUksV0FBVyxHQUFDLE1BQWhCO0FBRUEsVUFBSSxHQUFHLEdBQUMsZ0NBQThCLE1BQTlCLEdBQXFDLEdBQTdDO0FBRUEsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLFFBQTdCLEVBQXVDLElBQXZDLENBQTRDLFVBQUEsUUFBUSxFQUFHO0FBQ3pDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDdkIsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDRCxTQUZMLE1BRVc7QUFDRCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsUUFBUSxDQUFDLElBQWY7QUFBb0IsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXBDLFdBQWhCO0FBQ0w7QUFDaEIsT0FOSDtBQVNFLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0w7OztXQUNEO0FBQ0g7QUFDQztBQUNBLDBCQUFlLFFBQWYsRUFBd0IsTUFBeEIsRUFBK0IsSUFBL0IsRUFBcUM7QUFFN0IsVUFBSyxXQUFXLEdBQUMsTUFBakI7QUFJQSxVQUFJLEdBQUcsR0FBQywyQkFBeUIsTUFBekIsR0FBZ0MsR0FBaEMsR0FBb0MsSUFBcEMsR0FBeUMsR0FBakQ7QUFDRyxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFQSxXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBNkIsUUFBN0IsRUFBdUMsSUFBdkMsQ0FBNEMsVUFBQSxRQUFRLEVBQUc7QUFDNUMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUF4QixFQUE2QjtBQUN0QixVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxHQUFHLEVBQUUsUUFBUSxDQUFDLElBQWY7QUFBb0IsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXBDLFdBQWpCO0FBQ0YsU0FGTCxNQUVXO0FBQ1AsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFmO0FBQW9CLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFwQyxXQUFoQjtBQUNDO0FBQ2hCLE9BTkE7QUFTTCxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7O0FBRUY7QUFDSDtBQUNBO0FBQ0UsZ0NBQXFCLGFBQXJCLEVBQW1DLFlBQW5DLEVBQWdELGVBQWhELEVBQWdFLGNBQWhFLEVBQWdGO0FBRXhFLFVBQUksV0FBVyxHQUFDLE1BQWhCO0FBRUEsVUFBSSxHQUFHLEdBQUMsa0NBQWdDLGFBQWhDLEdBQThDLEdBQTlDLEdBQWtELFlBQWxELEdBQStELEdBQS9ELEdBQW1FLGVBQW5FLEdBQW1GLEdBQW5GLEdBQXVGLGNBQXZGLEdBQXNHLEdBQTlHO0FBRUEsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0UsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQThCLElBQTlCLENBQW1DLFVBQUEsUUFBUSxFQUFHO0FBQ2xDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDdEIsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFFRixTQUhMLE1BR1c7QUFFTCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsUUFBUSxDQUFDLElBQWY7QUFBb0IsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXBDLFdBQWhCO0FBQ0Q7QUFDaEIsT0FSRDtBQVVKLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7OztXQUNIO0FBQ0Q7QUFDQztBQUNBLG1DQUF3QixTQUF4QixFQUFrQyxjQUFsQyxFQUFpRCxRQUFqRCxFQUEyRDtBQUVwRCxVQUFJLFdBQVcsR0FBQyxLQUFoQjtBQUVBLFVBQUksR0FBRyxHQUFDLG9DQUFrQyxTQUFsQyxHQUE0QyxHQUE1QyxHQUFnRCxjQUFoRCxHQUErRCxHQUEvRCxHQUFtRSxRQUFuRSxHQUE0RSxHQUFwRjtBQUVBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNBLFVBQUksVUFBVSxHQUFHLEtBQWpCOztBQUNBLFVBQUksS0FBSyxLQUFMLENBQVcsdUJBQVgsTUFBdUMsU0FBM0MsRUFDQTtBQUNBLFlBQUcsS0FBSyxLQUFMLENBQVcscUJBQVgsQ0FBaUMsU0FBUyxHQUFDLEdBQVYsR0FBYyxjQUFkLEdBQTZCLEdBQTdCLEdBQWlDLFFBQWxFLE1BQStFLFNBQWxGLEVBQ0E7QUFDRyxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUcsS0FBSyxLQUFMLENBQVcscUJBQVgsQ0FBaUMsU0FBUyxHQUFDLEdBQVYsR0FBYyxjQUFkLEdBQTZCLEdBQTdCLEdBQWlDLFFBQWxFLENBQVI7QUFBb0YsWUFBQSxNQUFNLEVBQUM7QUFBM0YsV0FBakI7QUFDRixTQUhELE1BS0E7QUFDRSxlQUFLLEtBQUwsQ0FBVyx1QkFBWCxFQUFvQyxTQUFTLEdBQUMsR0FBVixHQUFjLGNBQWQsR0FBNkIsR0FBN0IsR0FBaUMsUUFBckUsSUFBaUYsRUFBakY7QUFDQSxVQUFBLFVBQVUsR0FBQyxJQUFYO0FBQ0Q7QUFDSCxPQVhFLE1BWUg7QUFDRyxhQUFLLEtBQUwsQ0FBVyx1QkFBWCxJQUFzQyxFQUF0QztBQUNBLGFBQUssS0FBTCxDQUFXLHVCQUFYLEVBQW9DLFNBQVMsR0FBQyxHQUFWLEdBQWMsY0FBZCxHQUE2QixHQUE3QixHQUFpQyxRQUFyRSxJQUFpRixFQUFqRjtBQUNBLFFBQUEsVUFBVSxHQUFDLElBQVg7QUFDRjs7QUFDRCxVQUFJLFVBQUosRUFDQTtBQUNNLFlBQUksUUFBUSxHQUFHLElBQWY7QUFFQSxhQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsQ0FBa0MsVUFBQSxRQUFRLEVBQUc7QUFFekIsY0FBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUF4QixFQUE2QjtBQUN6QjtBQUNBLFlBQUEsUUFBUSxDQUFDLEtBQVQsQ0FBZSxxQkFBZixDQUFxQyxTQUFTLEdBQUMsR0FBVixHQUFjLGNBQWQsR0FBNkIsR0FBN0IsR0FBaUMsUUFBdEUsSUFBa0YsUUFBUSxDQUFDLElBQTNGO0FBQ0EsWUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLGNBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixjQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsYUFBakI7QUFDSCxXQUpELE1BSU87QUFDSDtBQUNBLFlBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxjQUFBLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBZjtBQUFvQixjQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBcEMsYUFBaEI7QUFDSCxXQVR3QixDQVU5Qjs7QUFDZCxTQVhEO0FBY0w7O0FBQ0QsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDRDs7O1dBRUQ7QUFDSDtBQUNBO0FBQ0UsK0JBQW1CLFVBQW5CLEVBQThCLGNBQTlCLEVBQTZDLFdBQTdDLEVBQXlELEdBQXpELEVBQTZELE9BQTdELEVBQXFFLGVBQXJFLEVBQXNGO0FBRS9FLFVBQUksV0FBVyxHQUFDLEtBQWhCO0FBQ0EsVUFBSSxHQUFHLEdBQUMsaUNBQWdDLFVBQWhDLEdBQTRDLEdBQTVDLEdBQWdELGNBQWhELEdBQStELEdBQS9ELEdBQW1FLFdBQW5FLEdBQStFLEdBQS9FLEdBQW1GLEdBQW5GLEdBQXVGLEdBQXZGLEdBQTJGLE9BQTNGLEdBQW1HLEdBQW5HLEdBQXVHLGVBQXZHLEdBQXVILEdBQS9IO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUMsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBQ3hDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDckIsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDRCxTQUZQLE1BRWE7QUFDRyxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsb0RBQU47QUFBMkQsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQTNFLFdBQWhCO0FBQ1g7QUFDUixPQU5GO0FBUUMsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBRUE7QUFDTDtBQUNBO0FBQ0QscUNBQXlCLFVBQXpCLEVBQW9DLGNBQXBDLEVBQW1ELFdBQW5ELEVBQStELE1BQS9ELEVBQXNFLFdBQXRFLEVBQWtGLGlCQUFsRixFQUFvRyxHQUFwRyxFQUF3RyxHQUF4RyxFQUE0RyxlQUE1RyxFQUE0SCxLQUE1SCxFQUFtSTtBQUU1SCxVQUFJLFdBQVcsR0FBQyxLQUFoQjtBQUNBLFVBQUksR0FBRyxHQUFDLGlDQUFnQyxVQUFoQyxHQUE0QyxHQUE1QyxHQUFnRCxjQUFoRCxHQUErRCxHQUEvRCxHQUFtRSxXQUFuRSxHQUErRSxHQUEvRSxHQUFtRixHQUFuRixHQUF1RixHQUF2RixHQUEyRixHQUEzRixHQUErRixHQUEvRixHQUFtRyxlQUFuRyxHQUFtSCxHQUEzSDtBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNDLFVBQUksU0FBUyxHQUFHO0FBQUMsa0JBQVMsTUFBVjtBQUFpQixnQkFBTyxXQUF4QjtBQUFvQyxtQkFBVTtBQUE5QyxPQUFoQjtBQUNBLFVBQUksS0FBSyxJQUFFLFNBQVgsRUFBc0IsU0FBUyxDQUFDLEtBQVYsR0FBa0IsS0FBbEI7QUFDdEIsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLFNBQTdCLEVBQXdDLElBQXhDLENBQTZDLFVBQUEsUUFBUSxFQUFHO0FBQ25ELFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDckIsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDRCxTQUZQLE1BRWE7QUFDRyxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsaUVBQU47QUFBd0UsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXhGLFdBQWhCO0FBQ1g7QUFDUixPQU5GO0FBUUMsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBRUQ7QUFDQTtBQUNBO0FBQ0QsNkJBQWlCLFVBQWpCLEVBQTRCLGNBQTVCLEVBQTJDLE1BQTNDLEVBQWtELFFBQWxELEVBQTJELElBQTNELEVBQWlFO0FBRTFELFVBQUksV0FBVyxHQUFDLEtBQWhCO0FBQ0EsVUFBSSxHQUFHLEdBQUMsK0JBQThCLFVBQTlCLEdBQTBDLEdBQTFDLEdBQThDLGNBQTlDLEdBQTZELEdBQTdELEdBQWlFLE1BQWpFLEdBQXdFLEdBQXhFLEdBQTRFLFFBQTVFLEdBQXFGLEdBQXJGLEdBQXlGLElBQXpGLEdBQThGLEdBQXRHO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUMsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBQ3hDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDckIsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDRCxTQUZQLE1BRWE7QUFDRyxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsNEJBQU47QUFBbUMsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQW5ELFdBQWhCO0FBQ1g7QUFDUixPQU5GO0FBUUMsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7O1dBR1A7QUFDTDtBQUNBO0FBQ0UscUNBQXlCLFVBQXpCLEVBQW9DLGNBQXBDLEVBQW1ELE1BQW5ELEVBQTBELFFBQTFELEVBQW1FLElBQW5FLEVBQXlFO0FBRWxFLFVBQUksV0FBVyxHQUFDLEtBQWhCO0FBRUEsVUFBSSxHQUFHLEdBQUMscUNBQW9DLFVBQXBDLEdBQWdELEdBQWhELEdBQW9ELGNBQXBELEdBQW1FLEdBQW5FLEdBQXVFLE1BQXZFLEdBQThFLEdBQTlFLEdBQWtGLFFBQWxGLEdBQTJGLEdBQTNGLEdBQStGLElBQS9GLEdBQW9HLEdBQTVHO0FBQ0EsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0MsV0FBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTZCLElBQTdCLENBQWtDLFVBQUEsUUFBUSxFQUFHO0FBQzVCLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDekIsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDSCxTQUZELE1BRU87QUFDSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQVQsSUFBaUIsa0NBQXZCO0FBQTRELFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUE1RSxXQUFoQjtBQUNIO0FBQ1osT0FOTjtBQVNILGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7Ozs7QUFHRjtBQUNIO0FBQ0E7QUFDSSxzQkFBVSxJQUFWLEVBQWUsSUFBZixFQUFvQixLQUFwQixFQUNDO0FBQ0UsVUFBSSxJQUFJLElBQUUsU0FBVixFQUFvQjtBQUNkLGFBQUksSUFBSSxDQUFDLEdBQUMsQ0FBVixFQUFZLENBQUMsR0FBQyxJQUFJLENBQUMsTUFBbkIsRUFBMEIsQ0FBQyxFQUEzQixFQUErQjtBQUN4QixjQUFJLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBRCxDQUFoQixFQUFxQjtBQUNuQixZQUFBLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUSxJQUFSLElBQWdCLEtBQWhCO0FBQ0E7O0FBQ0EsY0FBSSxZQUFZLElBQUksQ0FBQyxDQUFELENBQXBCLEVBQTBCO0FBQ3ZCLGlCQUFLLFFBQUwsQ0FBYyxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsTUFBdEIsRUFBNkIsSUFBN0IsRUFBa0MsS0FBbEM7QUFDRixXQUZELE1BRVUsSUFBSSxhQUFhLElBQUksQ0FBQyxDQUFELENBQXJCLEVBQTJCO0FBQ2xDLGlCQUFLLFFBQUwsQ0FBYyxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsT0FBdEIsRUFBOEIsSUFBOUIsRUFBbUMsS0FBbkM7QUFDRjtBQUNSO0FBQ0w7QUFDSCxLLENBRUM7Ozs7V0FFQSxtQkFBVyxJQUFYLEVBQWlCLFVBQWpCLEVBQ0U7QUFDRSxVQUFJLE1BQU0sR0FBRyxFQUFiOztBQUNBLFdBQUssSUFBSSxDQUFDLEdBQUMsQ0FBWCxFQUFjLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBN0IsRUFBb0MsQ0FBQyxFQUFyQyxFQUF5QztBQUNyQyxRQUFBLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBRCxDQUFYLENBQU4sR0FBd0IsRUFBeEIsQ0FEcUMsQ0FDUjtBQUNoQyxPQUpILENBTUU7OztBQUNBLFVBQUksWUFBWSxHQUFJLFNBQWhCLFlBQWdCLENBQVMsSUFBVCxFQUFlO0FBQzdCLGFBQUksSUFBSSxDQUFDLEdBQUMsQ0FBVixFQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBckIsRUFBNEIsQ0FBQyxFQUE3QixFQUNBO0FBQ0ksZUFBSSxJQUFJLENBQUMsR0FBQyxDQUFWLEVBQWEsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUE1QixFQUFtQyxDQUFDLEVBQXBDLEVBQXlDO0FBQ3JDLGdCQUFJLFVBQVUsQ0FBQyxDQUFELENBQVYsSUFBaUIsSUFBSSxDQUFDLENBQUQsQ0FBekIsRUFDSSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUQsQ0FBWCxDQUFOLENBQXNCLElBQXRCLENBQTRCLElBQUksQ0FBQyxDQUFELENBQWhDO0FBQ1A7O0FBQ0QsY0FBSSxZQUFZLElBQUksQ0FBQyxDQUFELENBQXBCLEVBQTJCLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVEsTUFBVCxDQUFaO0FBQzlCO0FBQ04sT0FURDs7QUFVQSxVQUFJLElBQUksSUFBRSxTQUFWLEVBQXFCLFlBQVksQ0FBQyxJQUFELENBQVo7QUFDckIsYUFBTyxNQUFQO0FBQ0g7QUFFTjtBQUNIO0FBQ0E7Ozs7V0FDRSx1QkFBZ0IsU0FBaEIsRUFBMEIsY0FBMUIsRUFBeUMsS0FBekMsRUFBK0MsSUFBL0MsRUFBcUQ7QUFFN0MsVUFBSSxXQUFXLEdBQUMsTUFBaEI7QUFFQSxVQUFJLEdBQUcsR0FBQyw0QkFBMEIsU0FBMUIsR0FBb0MsR0FBcEMsR0FBd0MsY0FBeEMsR0FBdUQsR0FBdkQsR0FBMkQsSUFBM0QsR0FBZ0UsR0FBeEU7QUFFQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFHTSxXQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBNkIsS0FBN0IsRUFBb0MsSUFBcEMsQ0FBeUMsVUFBQSxRQUFRLEVBQUc7QUFDNUMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUF4QixFQUE2QjtBQUN0QixVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUVGLFNBSEwsTUFHVztBQUNQLFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBZjtBQUFvQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBcEMsV0FBaEI7QUFDQztBQUNaLE9BUEQ7QUFVUixhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7V0FDSixrQkFBVSxPQUFWLEVBQWtCLFFBQWxCLEVBQTJCO0FBQ2YsVUFBSSxTQUFTLEdBQUMsQ0FBQyxDQUFmOztBQUNBLFVBQUksT0FBTyxJQUFJLFNBQWYsRUFBMEI7QUFDekIsWUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsWUFBSSxHQUFHLEdBQUcsZUFBZSxDQUFDLEdBQWhCLENBQW9CLFVBQVMsQ0FBVCxFQUFZO0FBQUUsaUJBQU8sQ0FBQyxDQUFDLFNBQVQ7QUFBcUIsU0FBdkQsRUFBeUQsT0FBekQsQ0FBaUUsT0FBTyxHQUFDLFFBQXpFLENBQVY7O0FBQ0EsWUFBSSxHQUFHLEdBQUMsQ0FBUixFQUFVO0FBQ2xCO0FBQ1ksY0FBSSxHQUFHLEdBQUcsc0NBQXFDLE9BQXJDLEdBQTZDLEdBQTdDLEdBQWlELFFBQWpELEdBQTBELEdBQXBFO0FBQ0MsZUFBSyxjQUFMLENBQW9CLEdBQXBCLENBQXdCLEdBQXhCLEVBQTRCLElBQTVCLEVBQWtDLElBQWxDLENBQXVDLFVBQUEsUUFBUSxFQUFHO0FBRXpDLGdCQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXhCLEVBQTZCO0FBQ2pCLGtCQUFJLFlBQVksR0FBRztBQUFDLGdCQUFBLFNBQVMsRUFBRSxPQUFPLEdBQUMsUUFBcEI7QUFBOEIsZ0JBQUEsRUFBRSxFQUFFLE9BQWxDO0FBQTBDLGdCQUFBLElBQUksRUFBRSxRQUFoRDtBQUEwRCxnQkFBQSxRQUFRLEVBQUUsUUFBUSxDQUFDO0FBQTdFLGVBQW5CO0FBRUEsY0FBQSxlQUFlLENBQUMsSUFBaEIsQ0FBcUIsWUFBckI7QUFDQSxjQUFBLFNBQVMsR0FBQyxlQUFlLENBQUMsTUFBaEIsR0FBdUIsQ0FBakM7QUFDQSxjQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCLGVBQWUsQ0FBQyxTQUFELENBQWYsQ0FBMkIsUUFBNUMsRUFBc0QsUUFBUSxDQUFDLE1BQS9EO0FBRVgsYUFQRCxNQU9PO0FBRUgsY0FBQSxRQUFRLENBQUMsTUFBVCxDQUFnQixRQUFRLENBQUMsSUFBekI7QUFDSDtBQUNSLFdBYkY7QUFlSixTQWxCRCxNQWtCTztBQUNMLFVBQUEsU0FBUyxHQUFDLEdBQVY7QUFDQSxVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCLGVBQWUsQ0FBQyxTQUFELENBQWYsQ0FBMkIsUUFBNUMsRUFBc0QsR0FBdEQ7QUFDRDtBQUNGOztBQUFBO0FBRUgsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDTDs7Ozs7O2dCQXZnQ0MsZSxhQWFlLENBQUMsSUFBRCxFQUFNLFlBQU4sRUFBbUIsa0JBQW5CLEVBQXNDLGdCQUF0QyxDOztlQTgvQk4sZTs7O0lBRUYscUI7QUFFWixpQ0FBWSxjQUFaLEVBQTJCLEVBQTNCLEVBQThCLFVBQTlCLEVBQXlDLGdCQUF6QyxFQUNDO0FBQUE7O0FBQ0ksU0FBSyxLQUFMLEdBQWEsRUFBYjtBQUNBLFNBQUssY0FBTCxHQUFzQixjQUF0QjtBQUNBLFNBQUssRUFBTCxHQUFRLEVBQVI7QUFDQSxTQUFLLFVBQUwsR0FBaUIsVUFBakI7QUFDQSxTQUFLLGdCQUFMLEdBQXVCLGdCQUF2QjtBQUVIOzs7OztBQUlDO0FBQ0o7QUFDQTtBQUNHLHVCQUFZLGNBQVosRUFBMkIsUUFBM0IsRUFBb0MsTUFBcEMsRUFBMkMsU0FBM0MsRUFBcUQsY0FBckQsRUFBcUU7QUFFbEUsVUFBSSxXQUFXLEdBQUMsS0FBaEI7QUFFQSxVQUFJLEdBQUcsR0FBQyw4QkFBNEIsY0FBNUIsR0FBMkMsR0FBM0MsR0FBK0MsUUFBL0MsR0FBd0QsR0FBeEQsR0FBNEQsTUFBNUQsR0FBbUUsR0FBbkUsR0FBdUUsU0FBdkUsR0FBaUYsR0FBakYsR0FBcUYsY0FBckYsR0FBb0csR0FBNUc7QUFHQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFSSxXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNEIsS0FBNUIsRUFBbUMsSUFBbkMsQ0FBd0MsVUFBQSxRQUFRLEVBQUc7QUFHekMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUF4QixFQUE2QjtBQUN6QjtBQUVVLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ2IsU0FKRCxNQUlPO0FBRUg7QUFFQSxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUMsUUFBUSxDQUFDLEdBQWQ7QUFBa0IsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQWxDLFdBQWhCO0FBQ0g7QUFFUixPQWRIO0FBZ0JKLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0Y7OztXQUVELDJCQUFvQixNQUFwQixFQUE0QjtBQUVyQixVQUFJLFdBQVcsR0FBQyxFQUFoQjtBQUNBLFVBQUksR0FBRyxHQUFDLHNDQUFSO0FBR0EsTUFBQSxXQUFXLEdBQUMsS0FBWjs7QUFDQSxVQUFJLE1BQU0sSUFBRSxTQUFaLEVBQXVCO0FBQ3JCLFFBQUEsR0FBRyxHQUFDLEdBQUcsR0FBQyxNQUFKLEdBQVcsR0FBZjtBQUNEOztBQUNDLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUVGLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNFLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUNJLFVBQUEsUUFBUSxFQUFHO0FBQ0gsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUF4QixFQUE2QjtBQUN4QixVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUNKLFNBRkQsTUFFTztBQUNILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBQyxvREFBTDtBQUEwRCxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBMUUsV0FBaEI7QUFDSDtBQUNSLE9BUEwsRUFRSSxVQUFBLEtBQUssRUFBSTtBQUNELFFBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxVQUFBLEdBQUcsRUFBQyxnREFBOEMsS0FBSyxDQUFDLE1BQXpEO0FBQWdFLFVBQUEsTUFBTSxFQUFDLEtBQUssQ0FBQztBQUE3RSxTQUFoQjtBQUNSLE9BVko7QUFjQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNQOzs7V0FFSjtBQUNBO0FBQ0M7QUFDQSw2QkFBa0IsTUFBbEIsRUFBeUIsTUFBekIsRUFBZ0MsSUFBaEMsRUFBc0M7QUFFOUIsVUFBSSxXQUFXLEdBQUMsS0FBaEI7QUFFQSxVQUFJLEdBQUcsR0FBQyxtQ0FBUjtBQUNBLFVBQUksV0FBVyxHQUFDLEVBQWhCOztBQUNDLFVBQUksTUFBTSxJQUFFLFNBQVosRUFBdUI7QUFDdEI7QUFDQSxRQUFBLFdBQVcsR0FBQyxNQUFNLEdBQUMsR0FBUCxHQUFXLE1BQVgsR0FBa0IsR0FBbEIsR0FBc0IsSUFBdEIsR0FBMkIsR0FBdkM7QUFDQyxRQUFBLEdBQUcsR0FBRyxHQUFHLEdBQUcsV0FBWjtBQUNGOztBQUVELFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNFLFdBQUssY0FBTCxDQUFvQixHQUFwQixDQUF3QixHQUF4QixFQUE2QixJQUE3QixDQUFrQyxVQUFBLFFBQVEsRUFBRztBQUVyQyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXhCLEVBQTZCO0FBQ2YsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDYixTQUZELE1BRU87QUFFSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUMsZ0RBQUw7QUFBdUQsWUFBQSxNQUFNLEVBQUUsUUFBUSxDQUFDO0FBQXhFLFdBQWhCO0FBQ0g7QUFDUixPQVJEO0FBV0EsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDUDs7O1dBR0Y7QUFDRjtBQUNDO0FBQ0EsZ0NBQXFCLGNBQXJCLEVBQW9DLElBQXBDLEVBQTBDO0FBRWxDLFVBQUksV0FBVyxHQUFDLEtBQWhCO0FBRUEsVUFBSSxHQUFHLEdBQUMsK0JBQVI7QUFDQSxVQUFJLFdBQVcsR0FBQyxFQUFoQjs7QUFDQyxVQUFJLGNBQWMsSUFBRSxTQUFwQixFQUErQjtBQUM5QjtBQUNBLFFBQUEsV0FBVyxHQUFDLGNBQWMsR0FBQyxHQUFmLEdBQW1CLElBQW5CLEdBQXdCLEdBQXBDO0FBQ0EsUUFBQSxHQUFHLEdBQUcsR0FBRyxHQUFHLFdBQVo7QUFDRDs7QUFFRCxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQyxXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsQ0FBa0MsVUFBQSxRQUFRLEVBQUc7QUFFcEMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUF4QixFQUE2QjtBQUNmLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ2IsU0FGRCxNQUVPO0FBRUgsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFDLHVEQUFMO0FBQTZELFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUE3RSxXQUFoQjtBQUNIO0FBQ0osT0FSTjtBQVVDLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7Ozs7QUFHUDtBQUNGO0FBQ0E7QUFDRSw2QkFBa0IsTUFBbEIsRUFBeUIsUUFBekIsRUFBa0MsSUFBbEMsRUFBdUMsZUFBdkMsRUFBd0Q7QUFFaEQsVUFBSSxXQUFXLEdBQUMsTUFBaEI7QUFFQSxVQUFJLEdBQUcsR0FBQyw4QkFBNEIsTUFBNUIsR0FBbUMsR0FBbkMsR0FBdUMsUUFBdkMsR0FBZ0QsR0FBaEQsR0FBb0QsSUFBcEQsR0FBeUQsR0FBakU7QUFFQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFQSxVQUFJLFNBQVMsR0FBRTtBQUFDLGVBQU07QUFBUCxPQUFmO0FBQ0UsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLFNBQTdCLEVBQXdDLElBQXhDLENBQTZDLFVBQUEsUUFBUSxFQUFHO0FBQ25ELFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDdEIsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDSCxTQUZKLE1BRVU7QUFDSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUMsZ0RBQUw7QUFBc0QsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXRFLFdBQWhCO0FBQ0g7QUFDUixPQU5EO0FBU0osYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDSDs7OztBQUNKO0FBQ0Q7QUFDQTtBQUNFLDBCQUFlLE1BQWYsRUFBc0IsYUFBdEIsRUFBb0MsUUFBcEMsRUFBNkMsZUFBN0MsRUFBNkQsU0FBN0QsRUFBdUUsZUFBdkUsRUFBdUYsSUFBdkYsRUFBNkY7QUFFckYsVUFBSSxXQUFXLEdBQUMsTUFBaEI7QUFFQSxVQUFJLEdBQUcsR0FBQywwQkFBd0IsTUFBeEIsR0FBK0IsR0FBL0IsR0FBbUMsYUFBbkMsR0FBaUQsR0FBakQsR0FBcUQsU0FBckQsR0FBK0QsR0FBL0QsR0FBbUUsZUFBbkUsR0FBbUYsR0FBM0Y7QUFDQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFFQSxVQUFJLFNBQVMsR0FBSTtBQUFDLG9CQUFXLFFBQVo7QUFBcUIsMkJBQWtCO0FBQXZDLE9BQWpCO0FBQ0EsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQTZCLFNBQTdCLEVBQXdDLElBQXhDLENBQTZDLFVBQUEsUUFBUSxFQUFHO0FBQ2xELFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDcEIsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDSixTQUZMLE1BRVc7QUFBRTtBQUNMLGNBQUksR0FBRyxHQUFDLEVBQVI7QUFDQSxjQUFJLElBQUksQ0FBQyxHQUFMLElBQVcsU0FBZixFQUEwQixHQUFHLEdBQUcsUUFBUSxDQUFDLElBQVQsQ0FBYyxJQUFwQixDQUExQixLQUNLLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBVCxDQUFjLElBQWQsQ0FBbUIsR0FBekI7QUFDTCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsR0FBTjtBQUFVLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUExQixXQUFoQjtBQUNIO0FBQ1IsT0FUSDtBQVdGLGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0g7Ozs7QUFDSDtBQUNGO0FBQ0E7QUFDRSw0QkFBaUIsY0FBakIsRUFBZ0MsYUFBaEMsRUFBOEMsSUFBOUMsRUFBb0Q7QUFFNUMsVUFBSSxXQUFXLEdBQUMsS0FBaEI7QUFFQSxVQUFJLEdBQUcsR0FBQyw2QkFBMkIsY0FBM0IsR0FBMEMsR0FBMUMsR0FBOEMsYUFBOUMsR0FBNEQsR0FBNUQsR0FBZ0UsSUFBaEUsR0FBcUUsR0FBN0U7QUFFQSxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFHRSxXQUFLLGNBQUwsQ0FBb0IsR0FBcEIsQ0FBd0IsR0FBeEIsRUFBNkIsSUFBN0IsQ0FBa0MsVUFBQSxRQUFRLEVBQUc7QUFFckMsWUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUF4QixFQUE2QjtBQUN6QixVQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsWUFBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLFlBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxXQUFqQjtBQUNILFNBRkQsTUFFTztBQUVILFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxZQUFBLEdBQUcsRUFBQyw4Q0FBTDtBQUFvRCxZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBcEUsV0FBaEI7QUFDSDtBQUNSLE9BUkQ7QUFVQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNIOzs7O0FBQ1A7QUFDRjtBQUNBO0FBQ0UsK0JBQW9CLGNBQXBCLEVBQW1DLGFBQW5DLEVBQWlELE1BQWpELEVBQXdELElBQXhELEVBQTZELFFBQTdELEVBQXVFO0FBRS9ELFVBQUksV0FBVyxHQUFDLE1BQWhCO0FBRUEsVUFBSSxRQUFRLElBQUUsSUFBVixJQUFrQixRQUFRLElBQUUsU0FBNUIsSUFBeUMsUUFBUSxJQUFFLEVBQXZELEVBQTJELFFBQVEsR0FBQyxDQUFUO0FBRTNELFVBQUksR0FBRyxHQUFDLCtCQUE2QixjQUE3QixHQUE0QyxHQUE1QyxHQUFnRCxhQUFoRCxHQUE4RCxHQUE5RCxHQUFrRSxNQUFsRSxHQUF5RSxHQUF6RSxHQUE2RSxJQUE3RSxHQUFrRixHQUFsRixHQUFzRixRQUF0RixHQUErRixHQUF2RztBQUNBLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUdFLFdBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixHQUF6QixFQUE4QixJQUE5QixDQUFtQyxVQUFBLFFBQVEsRUFBRztBQUV0QyxZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXBCLElBQTJCLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQW5ELEVBQXdEO0FBQ25ELFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxZQUFBLElBQUksRUFBRSxRQUFRLENBQUMsSUFBaEI7QUFBcUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXJDLFdBQWpCO0FBQ0osU0FGRCxNQUVPO0FBQ0MsVUFBQSxRQUFRLENBQUMsTUFBVCxDQUFnQjtBQUFDLFlBQUEsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFULENBQWMsR0FBcEI7QUFBeUIsWUFBQSxNQUFNLEVBQUMsUUFBUSxDQUFDO0FBQXpDLFdBQWhCO0FBQ1A7QUFDUixPQVBEO0FBU0osYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDQzs7OztBQUNQO0FBQ0Y7QUFDQTtBQUNFLHlCQUFjLE1BQWQsRUFBcUIsUUFBckIsRUFBOEIsU0FBOUIsRUFBd0MsSUFBeEMsRUFBOEM7QUFFdEMsVUFBSSxXQUFXLEdBQUMsTUFBaEI7O0FBRUEsVUFBSSxNQUFNLElBQUUsU0FBWixFQUNBO0FBQ0EsWUFBSSxHQUFHLEdBQUMseUJBQXVCLE1BQXZCLEdBQThCLEdBQTlCLEdBQWtDLElBQWxDLEdBQXVDLEdBQS9DO0FBRUEsWUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUUsWUFBSSxTQUFTLEdBQUU7QUFBQyxzQkFBVyxRQUFaO0FBQXFCLHFCQUFVO0FBQS9CLFNBQWY7QUFDQSxhQUFLLGNBQUwsQ0FBb0IsSUFBcEIsQ0FBeUIsR0FBekIsRUFBNkIsU0FBN0IsRUFBd0MsSUFBeEMsQ0FBNkMsVUFBQSxRQUFRLEVBQUc7QUFDcEQsY0FBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUF4QixFQUE2QjtBQUNwQixZQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsY0FBQSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQWhCO0FBQXFCLGNBQUEsTUFBTSxFQUFDLFFBQVEsQ0FBQztBQUFyQyxhQUFqQjtBQUNKLFdBRkwsTUFFVztBQUNILFlBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0I7QUFBQyxjQUFBLEdBQUcsRUFBQyx1Q0FBTDtBQUE2QyxjQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBN0QsYUFBaEI7QUFDSDtBQUNSLFNBTkQ7QUFRQSxlQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNEO0FBQ0Y7Ozs7QUFDUDtBQUNGO0FBQ0E7QUFDRSx5QkFBYyxNQUFkLEVBQXFCLFNBQXJCLEVBQStCLElBQS9CLEVBQW9DLE1BQXBDLEVBQTJDLGNBQTNDLEVBQTJEO0FBRW5ELFVBQUksV0FBVyxHQUFDLE1BQWhCO0FBRUEsVUFBSSxNQUFNLElBQUUsU0FBUixJQUFxQixNQUFNLElBQUUsSUFBN0IsSUFBcUMsTUFBTSxJQUFFLEVBQWpELEVBQXFELE1BQU0sR0FBQyxHQUFQO0FBQ3JELFVBQUksY0FBYyxJQUFFLFNBQWhCLElBQTZCLGNBQWMsSUFBRSxJQUE3QyxJQUFxRCxjQUFjLElBQUUsRUFBekUsRUFBNkUsY0FBYyxHQUFDLENBQWY7QUFFN0UsVUFBSSxHQUFHLEdBQUMseUJBQXVCLE1BQXZCLEdBQThCLEdBQTlCLEdBQWtDLFNBQWxDLEdBQTRDLEdBQTVDLEdBQWdELE1BQWhELEdBQXVELEdBQXZELEdBQTJELGNBQTNELEdBQTBFLEdBQTFFLEdBQThFLElBQTlFLEdBQW1GLEdBQTNGO0FBR0csVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBRUQsV0FBSyxjQUFMLENBQW9CLElBQXBCLENBQXlCLEdBQXpCLEVBQThCLElBQTlCLENBQW1DLFVBQUEsUUFBUSxFQUFHO0FBQzFDLFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDcEIsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQjtBQUFDLFlBQUEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFoQjtBQUFxQixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBckMsV0FBakI7QUFDSixTQUZMLE1BRVc7QUFDSCxVQUFBLFFBQVEsQ0FBQyxNQUFULENBQWdCO0FBQUMsWUFBQSxHQUFHLEVBQUUsUUFBUSxDQUFDLElBQVQsQ0FBYyxHQUFwQjtBQUF5QixZQUFBLE1BQU0sRUFBQyxRQUFRLENBQUM7QUFBekMsV0FBaEI7QUFDSDtBQUNSLE9BTkQ7QUFPSixhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNMOzs7Ozs7OztnQkF2UlUscUIsYUFXUSxDQUFDLGdCQUFELEVBQWtCLElBQWxCLEVBQXVCLFlBQXZCLEVBQW9DLGtCQUFwQyxDOztJQWlSUixxQjtBQUVaLGlDQUFZLEVBQVosRUFBZ0IsVUFBaEIsRUFBMkIsZ0JBQTNCLEVBQTRDLG1CQUE1QyxFQUFpRSxvQkFBakUsRUFDQztBQUFBOztBQUNJLFNBQUssRUFBTCxHQUFRLEVBQVI7QUFDQSxTQUFLLFVBQUwsR0FBaUIsVUFBakI7QUFDQSxTQUFLLGdCQUFMLEdBQXVCLGdCQUF2QjtBQUNBLFNBQUssR0FBTCxHQUFVLG1CQUFWO0FBQ0EsU0FBSyxHQUFMLEdBQVcsb0JBQVg7QUFDQSxTQUFLLFlBQUwsR0FBa0IsRUFBbEI7QUFDQSxTQUFLLGVBQUwsR0FBcUIsSUFBckI7QUFDQSxTQUFLLEtBQUwsR0FBVyxJQUFYO0FBQ0EsU0FBSyxJQUFMLEdBQVUsSUFBVjtBQUNBLFNBQUssa0JBQUwsR0FBMEIsS0FBMUI7QUFDQSxTQUFLLGNBQUwsR0FBc0IsS0FBdEI7QUFDQSxTQUFLLGNBQUwsR0FBc0IsS0FBdEI7QUFDQSxTQUFLLFlBQUwsR0FBb0IsR0FBcEI7QUFDQSxTQUFLLHdCQUFMLEdBQWdDLEtBQWhDO0FBQ0EsU0FBSyxXQUFMLEdBQWlCLENBQUMsS0FBRCxFQUFPLEtBQVAsRUFBYSxLQUFiLENBQWpCLENBZkosQ0FnQkk7O0FBQ0EsU0FBSyxJQUFMLEdBQVksQ0FBWjtBQUNBLFNBQUssUUFBTCxHQUFnQjtBQUNaLDRCQUFzQjtBQURWLEtBQWhCO0FBR0EsU0FBSyxrQkFBTCxHQUEwQixFQUExQjtBQUVDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdHOzs7O1dBS0UsaUNBQXlCO0FBRXJCLFVBQUksUUFBUSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZjtBQUNBLFVBQUksRUFBRSxHQUFHLElBQVQ7QUFDQSxVQUFJLEtBQUssUUFBTCxDQUFjLG9CQUFkLENBQUosRUFDTSxPQUFPLEtBQUssa0JBQVo7QUFFUCxXQUFLLEdBQUwsQ0FBUyx3QkFBVCxDQUFrQyxLQUFLLElBQXZDLEVBQTRDLE1BQTVDLEVBQW9ELElBQXBELENBQ0UsVUFBUyxRQUFULEVBQW1CO0FBQ2I7QUFDUixRQUFBLEVBQUUsQ0FBQyxrQkFBSCxHQUF3QixRQUFRLENBQUMsSUFBakM7QUFDc0IsUUFBQSxFQUFFLENBQUMsUUFBSCxDQUFZLG9CQUFaLElBQWtDLElBQWxDO0FBQ0EsUUFBQSxRQUFRLENBQUMsT0FBVCxDQUFrQixFQUFFLENBQUMsa0JBQXJCO0FBQ2hCLE9BTk4sRUFNTyxVQUFTLEtBQVQsRUFBZTtBQUNWLFFBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUIsRUFBakI7QUFDQSxRQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNQLE9BVEw7QUFZSSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUVQOzs7V0FLRCx5QkFBaUIsSUFBakIsRUFBdUI7QUFFbkIsV0FBSyxZQUFMLEdBQW9CLElBQXBCO0FBQ0EsVUFBSSxLQUFLLEtBQUwsSUFBWSxTQUFoQixFQUEyQixLQUFLLEtBQUwsQ0FBVyxLQUFYLENBQWlCLHNCQUFqQixFQUF3QyxJQUF4QztBQUM5Qjs7O1dBRUQsaUNBQTBCLEtBQTFCLEVBQWlDO0FBRTdCLFdBQUssS0FBTCxHQUFhLEtBQWI7QUFDSDs7O1dBRUEsK0JBQXdCLEtBQXhCLEVBQStCO0FBRTVCLFdBQUssZUFBTCxHQUF1QixLQUF2QjtBQUNIOzs7V0FFQSx5QkFBa0IsSUFBbEIsRUFBd0I7QUFFckIsYUFBTyxLQUFLLFlBQVo7QUFDSDs7O1dBRUEsMEJBQWtCLElBQWxCLEVBQXVCO0FBQ3ZCLGFBQU8sS0FBSyxjQUFaO0FBQ0M7OztXQUNELDhCQUFzQixJQUF0QixFQUEyQjtBQUMzQixhQUFPLEtBQUssa0JBQVo7QUFDQzs7O1dBQ0QsMEJBQWtCLElBQWxCLEVBQXVCO0FBQ3ZCLGFBQU8sS0FBSyxjQUFaO0FBQ0M7OztXQUNMLDJCQUFrQixJQUFsQixFQUF1QjtBQUVoQixVQUFJLElBQUksSUFBRSxDQUFWLEVBQVk7QUFDVixhQUFLLGtCQUFMLEdBQTBCLElBQTFCO0FBQ0EsYUFBSyxjQUFMLEdBQXNCLEtBQXRCO0FBQ0EsYUFBSyxjQUFMLEdBQXNCLEtBQXRCO0FBQ0Q7O0FBQ0QsVUFBSSxJQUFJLElBQUUsQ0FBVixFQUNBO0FBQ0UsYUFBSyxrQkFBTCxHQUEwQixLQUExQjtBQUNBLGFBQUssY0FBTCxHQUFzQixJQUF0QjtBQUNBLGFBQUssY0FBTCxHQUFzQixLQUF0QjtBQUVEOztBQUNBLFVBQUksSUFBSSxJQUFFLENBQVYsRUFDRDtBQUNFLGFBQUssa0JBQUwsR0FBMEIsS0FBMUI7QUFDQSxhQUFLLGNBQUwsR0FBc0IsS0FBdEIsQ0FGRixDQUdFOztBQUNBLGFBQUssZUFBTCxDQUFxQixvQkFBckI7QUFDQSxhQUFLLGVBQUwsQ0FBcUIsa0JBQXJCO0FBRUQ7O0FBQ0UsVUFBSSxJQUFJLElBQUUsQ0FBVixFQUNIO0FBQ0UsYUFBSyxjQUFMLEdBQXNCLEtBQXRCO0FBQ0EsYUFBSyxjQUFMLEdBQXNCLEtBQXRCO0FBRUEsYUFBSyxlQUFMLENBQXFCLG9CQUFyQjtBQUVBLGFBQUssZUFBTCxDQUFxQixzQkFBckIsQ0FBNEMsT0FBTyxDQUFDLElBQVIsQ0FBYSxLQUFLLGVBQUwsQ0FBcUIsdUJBQWxDLENBQTVDO0FBQ0EsYUFBSyxJQUFMLEdBQVUsT0FBTyxDQUFDLElBQVIsQ0FBYSxLQUFLLGVBQUwsQ0FBcUIsWUFBbEMsQ0FBVjtBQUVEOztBQUNELFdBQUssWUFBTCxHQUFrQixFQUFsQjtBQUNBLFdBQUssd0JBQUwsR0FBZ0MsS0FBaEM7QUFDQSxXQUFLLFdBQUwsQ0FBaUIsSUFBakIsQ0FBc0IsS0FBdEI7QUFDQSxXQUFLLGVBQUwsQ0FBcUIsc0JBQXJCLEdBQThDLENBQUMsQ0FBL0M7QUFDTDs7O1dBRUMsOEJBQXFCLEtBQXJCLEVBQTJCLEtBQTNCLEVBQWlDO0FBRWhDLFdBQUssY0FBTCxHQUFvQixLQUFwQjtBQUNBLFdBQUssZUFBTCxDQUFxQixzQkFBckIsR0FBNEMsS0FBNUM7QUFDQSxXQUFLLFdBQUwsQ0FBaUIsSUFBakIsQ0FBc0IsS0FBdEI7QUFDQSxXQUFLLFdBQUwsQ0FBaUIsS0FBakIsSUFBd0IsS0FBeEI7QUFDQSxXQUFLLGNBQUwsR0FBb0IsS0FBcEI7QUFDQSxXQUFLLGtCQUFMLEdBQTBCLEtBQTFCO0FBQ0EsV0FBSyxjQUFMLEdBQXNCLEtBQXRCO0FBQ0EsV0FBSyxlQUFMLENBQXFCLHdCQUFyQixHQUFnRCxLQUFoRDtBQUNBLFdBQUssWUFBTCxHQUFrQixFQUFsQjs7QUFJQSxVQUFJLEtBQUssSUFBRSxDQUFYLEVBQ0E7QUFDQyxhQUFLLG9CQUFMLENBQTBCLFNBQTFCLEVBQW9DLFNBQXBDLEVBQThDLEtBQTlDLEVBQW9ELEtBQXBEO0FBRUEsT0FKRCxNQUlLO0FBQ0YsWUFBSSxLQUFLLGVBQUwsQ0FBcUIsY0FBckIsQ0FBb0MsT0FBcEMsSUFBNkMsU0FBakQsRUFBNEQsS0FBSyxlQUFMLENBQXFCLGNBQXJCLEdBQW9DO0FBQUMsVUFBQSxPQUFPLEVBQUM7QUFBVCxTQUFwQyxDQUE1RCxLQUNLLEtBQUssZUFBTCxDQUFxQixjQUFyQixDQUFvQyxPQUFwQyxHQUE0QyxLQUE1QztBQUVQO0FBRUg7OztXQUVELDBCQUFpQixRQUFqQixFQUEwQjtBQUFFO0FBRXpCLFdBQUssWUFBTCxHQUFrQixRQUFsQjtBQUNBLFdBQUssa0JBQUwsR0FBMEIsS0FBMUI7QUFDQSxXQUFLLGNBQUwsR0FBc0IsS0FBdEI7QUFDQSxXQUFLLGNBQUwsR0FBb0IsS0FBcEI7QUFDQSxXQUFLLFdBQUwsQ0FBaUIsSUFBakIsQ0FBc0IsS0FBdEI7QUFDQSxXQUFLLGVBQUwsQ0FBcUIsc0JBQXJCLEdBQThDLENBQUMsQ0FBL0MsQ0FQdUIsQ0FRdkI7QUFDRjs7O1dBQ0QsMEJBQWlCO0FBQ2QsYUFBTyxLQUFLLFlBQVo7QUFDRjs7O1dBRUQsK0JBQXNCO0FBQ25CLGFBQU8sS0FBSyxlQUFMLENBQXFCLHNCQUE1QjtBQUNGOzs7V0FFRCxpQ0FBd0I7QUFDckIsYUFBTyxLQUFLLGVBQUwsQ0FBcUIsWUFBckIsQ0FBa0Msa0JBQXpDO0FBQ0Y7OztXQUVELG1DQUEwQixVQUExQixFQUFxQztBQUVuQyxVQUFJLEtBQUssZUFBTCxDQUFxQixZQUFyQixDQUFrQyxjQUFsQyxLQUFtRCxTQUFuRCxJQUFnRSxLQUFLLGVBQUwsQ0FBcUIsWUFBckIsQ0FBa0MsY0FBbEMsQ0FBaUQsVUFBakQsTUFBK0QsU0FBbkksRUFBK0ksT0FBTyxFQUFQLENBQS9JLEtBQ0s7QUFDRCxlQUFPLEtBQUssZUFBTCxDQUFxQixZQUFyQixDQUFrQyxjQUFsQyxDQUFpRCxVQUFqRCxDQUFQO0FBQ0E7QUFFSDs7O1dBRUgsOEJBQXFCLGNBQXJCLEVBQW9DLFlBQXBDLEVBQWlELFVBQWpELEVBQTRELEtBQTVELEVBQWtFO0FBRWhFO0FBQ0E7QUFDQSxXQUFLLGVBQUwsQ0FBcUIsY0FBckIsR0FBc0M7QUFBQyxRQUFBLElBQUksRUFBQyxJQUFOO0FBQVcsUUFBQSxFQUFFLEVBQUMsSUFBZDtBQUFtQixRQUFBLEtBQUssRUFBQztBQUF6QixPQUF0QztBQUNBLFdBQUssZUFBTCxDQUFxQixZQUFyQixHQUFvQztBQUFDLFFBQUEsSUFBSSxFQUFDLElBQU47QUFBVyxRQUFBLEVBQUUsRUFBQyxJQUFkO0FBQW1CLFFBQUEsS0FBSyxFQUFDO0FBQXpCLE9BQXBDO0FBQ0EsV0FBSyxlQUFMLENBQXFCLGNBQXJCLENBQW9DLElBQXBDLEdBQXlDLGNBQXpDO0FBQ0EsV0FBSyxlQUFMLENBQXFCLFlBQXJCLENBQWtDLElBQWxDLEdBQXVDLFlBQXZDO0FBQ0EsV0FBSyxlQUFMLENBQXFCLHdCQUFyQixHQUFnRCxJQUFoRDtBQUNBLFdBQUssZUFBTCxDQUFxQixZQUFyQixDQUFrQyxrQkFBbEMsR0FBdUQsVUFBdkQsQ0FUZ0UsQ0FXaEU7O0FBRUksVUFBSSxHQUFHLEdBQUcsS0FBSyxlQUFMLENBQXFCLFlBQXJCLENBQWtDLEdBQWxDLENBQXNDLFVBQVMsQ0FBVCxFQUFZO0FBQUUsZUFBTyxDQUFDLENBQUMsS0FBVDtBQUFpQixPQUFyRSxFQUF1RSxPQUF2RSxDQUErRSxLQUFLLGVBQUwsQ0FBcUIsY0FBckIsQ0FBb0MsSUFBbkgsQ0FBVjs7QUFDQSxVQUFJLEdBQUcsR0FBQyxDQUFDLENBQVQsRUFBWTtBQUNWLGFBQUssZUFBTCxDQUFxQixjQUFyQixDQUFvQyxFQUFwQyxHQUF5QyxLQUFLLGVBQUwsQ0FBcUIsWUFBckIsQ0FBa0MsR0FBbEMsRUFBdUMsRUFBaEY7QUFDQSxhQUFLLGVBQUwsQ0FBcUIsY0FBckIsQ0FBb0MsS0FBcEMsR0FBNEMsS0FBSyxlQUFMLENBQXFCLFlBQXJCLENBQWtDLEdBQWxDLEVBQXVDLElBQW5GO0FBQ0Q7O0FBRUQsTUFBQSxHQUFHLEdBQUcsS0FBSyxlQUFMLENBQXFCLFlBQXJCLENBQWtDLEdBQWxDLENBQXNDLFVBQVMsQ0FBVCxFQUFZO0FBQUUsZUFBTyxDQUFDLENBQUMsS0FBVDtBQUFpQixPQUFyRSxFQUF1RSxPQUF2RSxDQUErRSxLQUFLLGVBQUwsQ0FBcUIsWUFBckIsQ0FBa0MsSUFBakgsQ0FBTjs7QUFDQSxVQUFJLEdBQUcsR0FBQyxDQUFDLENBQVQsRUFBWTtBQUNWLGFBQUssZUFBTCxDQUFxQixZQUFyQixDQUFrQyxFQUFsQyxHQUF1QyxLQUFLLGVBQUwsQ0FBcUIsWUFBckIsQ0FBa0MsR0FBbEMsRUFBdUMsRUFBOUU7QUFDQSxhQUFLLGVBQUwsQ0FBcUIsWUFBckIsQ0FBa0MsS0FBbEMsR0FBMEMsS0FBSyxlQUFMLENBQXFCLFlBQXJCLENBQWtDLEdBQWxDLEVBQXVDLElBQWpGO0FBQ0Q7O0FBRUQsV0FBSyxrQkFBTCxHQUEwQixLQUExQjtBQUNBLFdBQUssY0FBTCxHQUFzQixLQUF0QjtBQUNBLFdBQUssY0FBTCxHQUFvQixLQUFwQjtBQUVBLFVBQUksQ0FBQyxLQUFMLEVBQWEsS0FBSyxJQUFMLEdBQVUsT0FBTyxDQUFDLElBQVIsQ0FBYSxLQUFLLFlBQWxCLENBQVY7QUFFakI7Ozs7Ozs7O2dCQWxPUyxxQixhQXVDSyxDQUFDLElBQUQsRUFBTSxZQUFOLEVBQW1CLGtCQUFuQixFQUFzQyxxQkFBdEMsRUFBNEQsc0JBQTVELEM7O0lBaU1MLGU7QUFFWiwyQkFBYyxFQUFkLEVBQWlCLFVBQWpCLEVBQTRCLGdCQUE1QixFQUE2QyxlQUE3QyxFQUE4RDtBQUFBOztBQUMzRCxTQUFLLEVBQUwsR0FBUSxFQUFSO0FBQ0EsU0FBSyxVQUFMLEdBQWlCLFVBQWpCO0FBQ0EsU0FBSyxnQkFBTCxHQUF1QixnQkFBdkI7QUFDQSxTQUFLLGVBQUwsR0FBc0IsZUFBdEI7QUFFQSxTQUFLLGdCQUFMLEdBQXNCLEVBQXRCO0FBQ0EsU0FBSyxnQkFBTCxHQUFzQixFQUF0QjtBQUNGOzs7O1dBSUUscUJBQWMsTUFBZCxFQUFxQixTQUFyQixFQUErQixJQUEvQixFQUFvQyxRQUFwQyxFQUE2QyxjQUE3QyxFQUE2RDtBQUV4RCxVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFDQSxVQUFJLFFBQVEsSUFBRSxTQUFWLElBQXVCLFFBQVEsSUFBRSxJQUFqQyxJQUF5QyxRQUFRLElBQUUsRUFBdkQsRUFBMkQsUUFBUSxHQUFDLEdBQVQ7QUFDM0QsVUFBSSxjQUFjLElBQUUsU0FBaEIsSUFBNkIsY0FBYyxJQUFFLElBQTdDLElBQXFELGNBQWMsSUFBRSxFQUF6RSxFQUE2RSxjQUFjLEdBQUMsQ0FBZjs7QUFFN0UsVUFBSSxLQUFLLGdCQUFMLENBQXNCLE1BQU0sR0FBQyxJQUFQLEdBQVksUUFBWixHQUFxQixjQUEzQyxLQUE0RCxTQUFoRSxFQUNBO0FBQ0csUUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQixPQUFPLENBQUMsSUFBUixDQUFhLEtBQUssZ0JBQUwsQ0FBc0IsTUFBTSxHQUFDLElBQVAsR0FBWSxRQUFaLEdBQXFCLGNBQTNDLENBQWIsQ0FBakI7QUFDRixPQUhELE1BS0E7QUFDQyxZQUFJLFFBQVEsR0FBRyxJQUFmO0FBQ0UsUUFBQSxlQUFlLENBQUMsV0FBaEIsQ0FBNEIsTUFBNUIsRUFBbUMsU0FBbkMsRUFBNkMsSUFBN0MsRUFBa0QsUUFBbEQsRUFBMkQsY0FBM0QsRUFBMkUsSUFBM0UsQ0FBZ0YsVUFBUyxJQUFULEVBQWU7QUFHekUsVUFBQSxRQUFRLENBQUMsZ0JBQVQsQ0FBMEIsTUFBTSxHQUFDLElBQVAsR0FBWSxRQUFaLEdBQXFCLGNBQS9DLElBQWlFLElBQWpFO0FBQ0EsVUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQixPQUFPLENBQUMsSUFBUixDQUFhLFFBQVEsQ0FBQyxnQkFBVCxDQUEwQixNQUFNLEdBQUMsSUFBUCxHQUFZLFFBQVosR0FBcUIsY0FBL0MsQ0FBYixDQUFqQixFQUp5RSxDQUt6RTtBQUdILFNBUm5CLEVBUW9CLFVBQVMsS0FBVCxFQUFlO0FBRWpCLFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0IsS0FBaEI7QUFFRCxTQVpqQjtBQWNIOztBQUNILGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0Q7OztXQUVBLG1CQUFZLE1BQVosRUFBbUIsU0FBbkIsRUFBNkIsY0FBN0IsRUFBNkM7QUFFekMsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBQ0EsVUFBSSxTQUFTLElBQUUsU0FBWCxJQUF3QixTQUFTLElBQUUsSUFBbkMsSUFBMkMsU0FBUyxJQUFFLEVBQTFELEVBQThELFNBQVMsR0FBQyxDQUFWO0FBQzlELFVBQUksY0FBYyxJQUFFLFNBQWhCLElBQTZCLGNBQWMsSUFBRSxJQUE3QyxJQUFxRCxjQUFjLElBQUUsRUFBekUsRUFBNkUsY0FBYyxHQUFDLENBQWY7O0FBRTdFLFVBQUksS0FBSyxnQkFBTCxDQUFzQixNQUFNLEdBQUMsU0FBUCxHQUFpQixjQUF2QyxLQUF3RCxTQUE1RCxFQUNBO0FBQ0csUUFBQSxRQUFRLENBQUMsT0FBVCxDQUFpQixPQUFPLENBQUMsSUFBUixDQUFhLEtBQUssZ0JBQUwsQ0FBc0IsTUFBTSxHQUFDLFNBQVAsR0FBaUIsY0FBdkMsQ0FBYixDQUFqQjtBQUNGLE9BSEQsTUFLQTtBQUNDLFlBQUksUUFBUSxHQUFHLElBQWY7QUFDRSxRQUFBLGVBQWUsQ0FBQyxTQUFoQixDQUEwQixNQUExQixFQUFpQyxTQUFqQyxFQUEyQyxjQUEzQyxFQUEyRCxJQUEzRCxDQUFnRSxVQUFTLElBQVQsRUFBZTtBQUd6RCxVQUFBLFFBQVEsQ0FBQyxnQkFBVCxDQUEwQixNQUFNLEdBQUMsU0FBUCxHQUFpQixjQUEzQyxJQUE2RCxJQUE3RDtBQUNBLFVBQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUIsT0FBTyxDQUFDLElBQVIsQ0FBYSxRQUFRLENBQUMsZ0JBQVQsQ0FBMEIsTUFBTSxHQUFDLFNBQVAsR0FBaUIsY0FBM0MsQ0FBYixDQUFqQixFQUp5RCxDQUt6RDtBQUdILFNBUm5CLEVBUW9CLFVBQVMsS0FBVCxFQUFlO0FBRWpCLFVBQUEsUUFBUSxDQUFDLE1BQVQsQ0FBZ0IsS0FBaEI7QUFFRCxTQVpqQjtBQWNIOztBQUNILGFBQU8sUUFBUSxDQUFDLE9BQWhCO0FBQ0Q7OztXQUlELDJCQUFvQixNQUFwQixFQUEyQixpQkFBM0IsRUFBOEM7QUFFMUMsVUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFMLENBQVEsS0FBUixFQUFmO0FBSUYsYUFBTyxRQUFRLENBQUMsT0FBaEI7QUFDRDs7O1dBQ0Qsc0JBQWUsYUFBZixFQUE4QjtBQUU1QixVQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUwsQ0FBUSxLQUFSLEVBQWY7QUFJQSxhQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNEOzs7Ozs7OztnQkE3RlEsZSxhQVlNLENBQUMsSUFBRCxFQUFNLFlBQU4sRUFBbUIsa0JBQW5CLEVBQXNDLGlCQUF0QyxDOzs7QUNuaURuQjtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFTSxjO0FBSUgsMEJBQWEsT0FBYixFQUFzQjtBQUFBOztBQUFBLDhDQStERixVQUFTLE1BQVQsRUFDbkI7QUFDRyxXQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsTUFBTSxDQUFDLE1BQXRCLEVBQTZCLENBQUMsRUFBOUIsRUFBa0M7QUFDOUIsYUFBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLE1BQU0sQ0FBQyxDQUFELENBQU4sQ0FBVSxPQUFWLENBQWtCLE1BQWpDLEVBQXdDLENBQUMsRUFBekMsRUFBNkM7QUFDMUMsVUFBQSxNQUFNLENBQUMsQ0FBRCxDQUFOLENBQVUsT0FBVixDQUFrQixDQUFsQixFQUFxQixTQUFyQixHQUFpQyxLQUFqQztBQUNEO0FBQ0o7QUFFSixLQXZFb0I7O0FBQUEsZ0RBeUVBLFVBQVMsTUFBVCxFQUNyQjtBQUNHLFVBQUksU0FBUyxHQUFHLEtBQWhCOztBQUNBLFdBQUssSUFBSSxDQUFDLEdBQUMsQ0FBWCxFQUFhLENBQUMsR0FBQyxNQUFNLENBQUMsTUFBdEIsRUFBNkIsQ0FBQyxFQUE5QixFQUFrQztBQUM5QixhQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsTUFBTSxDQUFDLENBQUQsQ0FBTixDQUFVLE9BQVYsQ0FBa0IsTUFBakMsRUFBd0MsQ0FBQyxFQUF6QyxFQUE2QztBQUMxQyxVQUFBLFNBQVMsR0FBRyxNQUFNLENBQUMsQ0FBRCxDQUFOLENBQVUsT0FBVixDQUFrQixDQUFsQixFQUFxQixTQUFqQztBQUNEO0FBQ0o7O0FBQ0gsYUFBTyxTQUFQO0FBQ0QsS0FsRm9COztBQUFBLDRDQW9GSCxVQUFTLGFBQVQsRUFBdUIsVUFBdkIsRUFBa0MsSUFBbEMsRUFBdUMsTUFBdkMsRUFBOEMsR0FBOUMsRUFBa0QsUUFBbEQsRUFDakI7QUFBQTs7QUFDRyxVQUFJLFFBQVEsS0FBRyxTQUFmLEVBQTBCLFFBQVEsR0FBQyxJQUFUOztBQUMxQixXQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsTUFBTSxDQUFDLE1BQXRCLEVBQTZCLENBQUMsRUFBOUIsRUFBa0M7QUFDL0IsYUFBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLE1BQU0sQ0FBQyxDQUFELENBQU4sQ0FBVSxPQUFWLENBQWtCLE1BQWpDLEVBQXdDLENBQUMsRUFBekMsRUFBNkM7QUFBSTtBQUM1QyxjQUFJLFFBQVEsSUFBSSxDQUFDLElBQUUsQ0FBZixJQUFvQixDQUFDLElBQUUsQ0FBM0IsRUFBOEIsTUFBTSxDQUFDLENBQUQsQ0FBTixDQUFVLE9BQVYsQ0FBa0IsQ0FBbEIsRUFBcUIsU0FBckIsR0FBaUMsS0FBakM7O0FBQzFCLGNBQUksQ0FBQyxNQUFNLENBQUMsQ0FBRCxDQUFOLENBQVUsT0FBVixDQUFrQixDQUFsQixFQUFxQixTQUExQixFQUFxQztBQUNuRCxnQkFBSSxNQUFNLENBQUMsQ0FBRCxDQUFOLENBQVUsT0FBVixDQUFrQixDQUFsQixFQUFxQixTQUFyQixHQUErQixDQUFuQyxFQUFxQztBQUNwQztBQUNBLGtCQUFJLE1BQU0sQ0FBQyxDQUFELENBQU4sQ0FBVSxPQUFWLENBQWtCLE1BQU0sQ0FBQyxDQUFELENBQU4sQ0FBVSxPQUFWLENBQWtCLENBQWxCLEVBQXFCLFNBQXJCLEdBQStCLENBQWpELEVBQW9ELFNBQXhELEVBQWtFO0FBRWpFLG9CQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBTCxDQUFXLE1BQU0sQ0FBQyxDQUFELENBQU4sQ0FBVSxPQUFWLENBQWtCLENBQWxCLEVBQXFCLFNBQWhDLENBQWhCO0FBRUEsb0JBQUksR0FBRyxTQUFQO0FBQUEsb0JBQVEsY0FBYyxTQUF0Qjs7QUFDQSxxQkFBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLFNBQVMsQ0FBQyxNQUF6QixFQUFnQyxDQUFDLEVBQWpDLEVBQW9DO0FBQ25DLGtCQUFBLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBRCxDQUFOLENBQVUsT0FBVixDQUFrQixTQUFTLENBQUMsQ0FBRCxDQUFULENBQWEsTUFBYixHQUFvQixDQUF0QyxFQUF5QyxNQUEvQztBQUNBLGtCQUFBLGNBQWMsR0FBRyxLQUFLLGVBQUwsQ0FBcUIsU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhLFFBQWxDLEVBQTJDLFNBQVMsQ0FBQyxDQUFELENBQVQsQ0FBYSxNQUF4RCxFQUErRCxHQUEvRCxDQUFqQjtBQUNBOztBQUVELG9CQUFJLGNBQUosRUFDNEI7QUFDSSxrQkFBQSxHQUFHLENBQUMsYUFBSixDQUFrQixhQUFhLEdBQUMsR0FBZCxHQUFrQixNQUFNLENBQUMsQ0FBRCxDQUFOLENBQVUsT0FBVixDQUFrQixDQUFsQixFQUFxQixRQUF6RCxFQUFrRSxNQUFNLENBQUMsQ0FBRCxDQUFOLENBQVUsT0FBVixDQUFrQixDQUFsQixFQUFxQixVQUF2RixFQUFrRztBQUFDLG9CQUFBLFdBQVcsRUFBQyxDQUFiO0FBQWUsb0JBQUEsWUFBWSxFQUFDLENBQTVCO0FBQThCLG9CQUFBLE9BQU8sRUFBQztBQUFDLHNCQUFBLFNBQVMsRUFBQyxNQUFNLENBQUMsQ0FBRCxDQUFOLENBQVUsT0FBVixDQUFrQixDQUFsQixFQUFxQixXQUFoQztBQUE0QyxzQkFBQSxVQUFVLEVBQUM7QUFBdkQ7QUFBdEMsbUJBQWxHO0FBQ0Esa0JBQUEsTUFBTSxDQUFDLENBQUQsQ0FBTixDQUFVLE9BQVYsQ0FBa0IsQ0FBbEIsRUFBcUIsU0FBckIsR0FBaUMsSUFBakM7QUFDSDtBQUM3QjtBQUVELGFBbkJELE1BbUJPO0FBQ0wsY0FBQSxHQUFHLENBQUMsYUFBSixDQUFrQixhQUFhLEdBQUMsR0FBZCxHQUFrQixNQUFNLENBQUMsQ0FBRCxDQUFOLENBQVUsT0FBVixDQUFrQixDQUFsQixFQUFxQixRQUF6RCxFQUFrRSxNQUFNLENBQUMsQ0FBRCxDQUFOLENBQVUsT0FBVixDQUFrQixDQUFsQixFQUFxQixVQUF2RixFQUFrRztBQUFDLGdCQUFBLFdBQVcsRUFBQyxDQUFiO0FBQWUsZ0JBQUEsWUFBWSxFQUFDLENBQTVCO0FBQThCLGdCQUFBLE9BQU8sRUFBQztBQUFDLGtCQUFBLFNBQVMsRUFBQyxNQUFNLENBQUMsQ0FBRCxDQUFOLENBQVUsT0FBVixDQUFrQixDQUFsQixFQUFxQixXQUFoQztBQUE0QyxrQkFBQSxVQUFVLEVBQUM7QUFBdkQ7QUFBdEMsZUFBbEc7QUFDRyxjQUFBLE1BQU0sQ0FBQyxDQUFELENBQU4sQ0FBVSxPQUFWLENBQWtCLENBQWxCLEVBQXFCLFNBQXJCLEdBQWlDLElBQWpDO0FBQ2M7QUFDUjtBQUNKO0FBQ0o7O0FBRUMsTUFBQSxVQUFVLFNBQVYsSUFBQSxVQUFVLFdBQVYsbUNBQUEsVUFBVSxDQUFFLE9BQVosNEVBQXFCLGVBQXJCLENBQXFDLGVBQXJDLEVBakNMLENBaUMyRDs7QUFFdEQsVUFBSSxLQUFLLGtCQUFMLENBQXdCLE1BQXhCLENBQUosRUFBcUMsS0FBSyxnQkFBTCxDQUFzQixNQUF0QjtBQUMxQyxLQXpIb0I7O0FBQUEsMkNBNEhKLFlBQVc7QUFDOUI7QUFDWSxVQUFJLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBRCxDQUFyQjs7QUFDVCxVQUFJLFNBQVMsR0FBRyxDQUFBLFNBQVMsU0FBVCxJQUFBLFNBQVMsV0FBVCxZQUFBLFNBQVMsQ0FBRyxDQUFILENBQVQsS0FBa0IsT0FBbEM7O0FBRUEsYUFBTyxVQUFTLENBQVQsRUFBWSxDQUFaLEVBQWM7QUFBQSxtREFDSyxLQURMO0FBQUE7O0FBQUE7QUFDUiw4REFBbUI7QUFBQSxnQkFBWCxDQUFXOztBQUNkLGdCQUFJO0FBQ0Qsa0JBQUksRUFBSixFQUFPLEVBQVAsRUFBVyxFQUFYO0FBQ0EsY0FBQSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFGLENBQVksQ0FBWixDQUFELENBQU47QUFDQSxjQUFBLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQUYsQ0FBWSxDQUFaLENBQUQsQ0FBTjtBQUNBLGtCQUFJLEVBQUUsSUFBRSxJQUFKLElBQVksRUFBRSxJQUFJLFNBQXRCLEVBQW9DLE9BQU8sQ0FBUDtBQUNwQyxrQkFBSSxFQUFFLElBQUUsSUFBSixJQUFZLEVBQUUsSUFBSSxTQUF0QixFQUFvQyxPQUFPLENBQUMsQ0FBUjtBQUNwQyxrQkFBSSxFQUFFLElBQUksRUFBVixFQUFjO0FBQ2xDLGFBUGlCLENBT2QsT0FBTyxLQUFQLEVBQWM7QUFDakIsY0FBQSxPQUFPLENBQUMsS0FBUixDQUFjLEtBQWQ7QUFDRDs7QUFFZSxnQkFBSSxDQUFDLENBQUMsU0FBRixDQUFZLENBQVosRUFBYyxDQUFkLEtBQW9CLEdBQXhCLEVBQTZCO0FBQUMsY0FBQSxFQUFFLEdBQUcsRUFBTDtBQUFTLGNBQUEsRUFBRSxHQUFHLEVBQUw7QUFBUyxjQUFBLEVBQUUsR0FBRyxFQUFMO0FBQVMsYUFaeEMsQ0FZeUM7OztBQUUxRCxnQkFBSSxPQUFPLEVBQVAsSUFBYSxRQUFqQixFQUEyQjtBQUN0QixrQkFBSSxHQUFHLEdBQUUsRUFBRSxDQUFDLGFBQUgsQ0FBaUIsRUFBakIsRUFBcUIsU0FBckIsRUFBZ0M7QUFBQyxnQkFBQSxXQUFXLEVBQUU7QUFBZCxlQUFoQyxDQUFULENBRHNCLENBRXhDOztBQUNrQixxQkFBTyxHQUFQO0FBQ0gsYUFKRixNQUtNLE9BQVEsRUFBRSxHQUFHLEVBQUwsR0FBVSxDQUFDLENBQVgsR0FBZSxDQUF2QjtBQUNQO0FBckJPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzQlgsT0F0QlY7QUF1QkssS0F4SmU7O0FBQ3JCLFNBQUssQ0FBTCxHQUFTLE9BQVQ7QUFDQzs7OztXQUVGLGtCQUFTO0FBQ04sYUFBTyx1Q0FBdUMsT0FBdkMsQ0FBK0MsT0FBL0MsRUFBd0QsVUFBUyxDQUFULEVBQVk7QUFDekUsWUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQUwsS0FBZ0IsRUFBaEIsR0FBcUIsQ0FBN0I7QUFBQSxZQUFnQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUwsR0FBVyxDQUFYLEdBQWdCLENBQUMsR0FBRyxHQUFKLEdBQVUsR0FBOUQ7QUFDQSxlQUFPLENBQUMsQ0FBQyxRQUFGLENBQVcsRUFBWCxDQUFQO0FBQ0QsT0FITSxDQUFQO0FBSUY7OztXQUVELG1CQUFVO0FBQ1AsYUFBTyx1Q0FBdUMsT0FBdkMsQ0FBK0MsT0FBL0MsRUFBd0QsVUFBUyxDQUFULEVBQVk7QUFDekUsWUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQUwsS0FBZ0IsRUFBaEIsR0FBcUIsQ0FBN0I7QUFBQSxZQUFnQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUwsR0FBVyxDQUFYLEdBQWdCLENBQUMsR0FBRyxHQUFKLEdBQVUsR0FBOUQ7QUFDQSxlQUFPLENBQUMsQ0FBQyxRQUFGLENBQVcsRUFBWCxJQUFlLEdBQWYsR0FBbUIsSUFBSSxDQUFDLEdBQUwsRUFBMUI7QUFDRCxPQUhNLENBQVA7QUFJRjs7O1dBR0YsZUFBTSxHQUFOLEVBQVc7QUFBRztBQUNaLFVBQUksUUFBUSxHQUFHLElBQWY7QUFDQSxVQUFJLEdBQUcsS0FBSyxJQUFSLElBQWdCLFFBQVEsR0FBUixNQUFpQixRQUFqQyxJQUE2QyxtQkFBbUIsR0FBcEUsRUFDSSxPQUFPLEdBQVA7QUFFSixVQUFJLEdBQUcsWUFBWSxJQUFuQixFQUNJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLFdBQVIsRUFBWCxDQURKLENBQ3NDO0FBRHRDLFdBR0ksSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLFdBQUosRUFBWDs7QUFFSixXQUFLLElBQUksR0FBVCxJQUFnQixHQUFoQixFQUFxQjtBQUNqQixZQUFJLEdBQUcsSUFBRSxPQUFULEVBQWtCLFNBREQsQ0FDVTs7QUFDM0IsWUFBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFnQyxJQUFoQyxDQUFxQyxHQUFyQyxFQUEwQyxHQUExQyxDQUFKLEVBQW9EO0FBQ2hELFVBQUEsR0FBRyxDQUFDLGVBQUQsQ0FBSCxHQUF1QixJQUF2QjtBQUNBLFVBQUEsSUFBSSxDQUFDLEdBQUQsQ0FBSixHQUFZLFFBQVEsQ0FBQyxLQUFULENBQWUsR0FBRyxDQUFDLEdBQUQsQ0FBbEIsQ0FBWjtBQUNBLGlCQUFPLEdBQUcsQ0FBQyxlQUFELENBQVY7QUFDSDtBQUNKOztBQUNELGFBQU8sSUFBUDtBQUNBOzs7V0FFQSw0QkFBbUIsV0FBbkIsRUFBK0IsRUFBL0IsRUFBa0MsTUFBbEMsRUFBeUMsSUFBekMsRUFBOEMsR0FBOUMsRUFBbUQ7QUFBRztBQUVsRCxXQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsTUFBTSxDQUFDLE1BQXRCLEVBQTZCLENBQUMsRUFBOUIsRUFDQTtBQUNJO0FBQ0EsUUFBQSxHQUFHLENBQUMsbUJBQUosQ0FBd0IsV0FBVyxHQUFDLEdBQVosR0FBZ0IsTUFBTSxDQUFDLENBQUQsQ0FBTixDQUFVLGFBQWxELEVBQWdFLEVBQWhFLEVBQW1FLE1BQU0sQ0FBQyxDQUFELENBQU4sQ0FBVSxTQUE3RSxFQUF1RixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUQsQ0FBTixDQUFVLE9BQVgsQ0FBM0YsRUFBK0csTUFBTSxDQUFDLENBQUQsQ0FBTixDQUFVLE9BQXpILEVBQWlJLE1BQU0sQ0FBQyxDQUFELENBQU4sQ0FBVSxXQUEzSTtBQUNIO0FBQ0o7OztXQUdELHlCQUFnQixRQUFoQixFQUF5QixHQUF6QixFQUE2QixHQUE3QixFQUFpQztBQUU3QixVQUFJLFNBQVMsR0FBRyxLQUFoQjtBQUVBLFVBQUksUUFBUSxJQUFFLEdBQVYsSUFBaUIsR0FBRyxJQUFFLEdBQTFCLEVBQStCLFNBQVMsR0FBQyxJQUFWLENBQS9CLEtBQ0ssSUFBSSxRQUFRLElBQUUsSUFBVixJQUFrQixHQUFHLElBQUUsR0FBM0IsRUFBZ0MsU0FBUyxHQUFDLElBQVYsQ0FBaEMsS0FDQSxJQUFJLFFBQVEsSUFBRSxJQUFWLElBQWtCLEdBQUcsSUFBRSxHQUEzQixFQUFnQyxTQUFTLEdBQUMsSUFBVixDQUFoQyxLQUNBLElBQUksUUFBUSxJQUFFLEdBQVYsSUFBaUIsR0FBRyxHQUFDLEdBQXpCLEVBQThCLFNBQVMsR0FBQyxJQUFWLENBQTlCLEtBQ0EsSUFBSSxRQUFRLElBQUUsR0FBVixJQUFpQixHQUFHLEdBQUMsR0FBekIsRUFBOEIsU0FBUyxHQUFDLElBQVY7QUFFbkMsYUFBTyxTQUFQO0FBQ0g7Ozs7S0E4Rko7OztlQUVjLGM7Ozs7QUN2S2Y7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7Ozs7Ozs7OztJQUVNLHlCO0FBRUwscUNBQVksVUFBWixFQUF3QixnQkFBeEIsRUFBMEM7QUFBQTs7QUFFM0IsU0FBSyxVQUFMLEdBQWdCLFVBQWhCO0FBQ1osU0FBSyxhQUFMLEdBQXFCLENBQXJCO0FBQ0EsU0FBSyxXQUFMLEdBQWlCLENBQWpCO0FBQ0EsU0FBSyxrQkFBTCxHQUF3QixFQUF4QjtBQUNJLFNBQUssa0JBQUwsR0FBd0IsRUFBeEI7QUFDSixTQUFLLGNBQUwsR0FBb0IsRUFBcEI7QUFDQSxTQUFLLE1BQUwsR0FBWSxFQUFaO0FBQ1ksU0FBSyxnQkFBTCxHQUFzQixnQkFBdEI7QUFFUDs7OztXQU1OO0FBQ0YsNkJBQWlCLE1BQWpCLEVBQXdCLFFBQXhCLEVBQWlDLE1BQWpDLEVBQXdDLE1BQXhDLEVBQWdEO0FBQUc7QUFFakQ7QUFDRSxXQUFLLGtCQUFMLENBQXdCLFFBQVEsR0FBQyxDQUFqQyxFQUFvQyxPQUFwQyxDQUE0QyxNQUE1QyxJQUFvRCxNQUFwRDtBQUVILFVBQUksZUFBZSxHQUFDLENBQXBCOztBQUNBLFdBQUssSUFBSSxDQUFDLEdBQUMsQ0FBWCxFQUFhLENBQUMsR0FBQyxLQUFLLGFBQXBCLEVBQWtDLENBQUMsRUFBbkMsRUFBdUM7QUFDdEMsWUFBSSxLQUFLLGtCQUFMLENBQXdCLENBQXhCLEVBQTJCLE9BQTNCLENBQW1DLGFBQW5DLEtBQW1ELElBQXZELEVBQTZELGVBQWU7QUFDNUUsT0FSOEMsQ0FVN0M7OztBQUNGLFVBQUksZUFBZSxJQUFFLEtBQUssYUFBMUIsRUFBMEMsS0FBSyxVQUFMLENBQWdCLFVBQWhCLENBQTJCLCtCQUEzQjtBQUUxQyxXQUFLLFVBQUwsQ0FBZ0IsVUFBaEIsQ0FBMkIsK0JBQTNCO0FBRUk7OztXQUdGLHNCQUFjLFNBQWQsRUFBeUI7QUFDekIsVUFBSSxNQUFNLEdBQUcsS0FBSyxVQUFMLENBQWdCLE9BQWhCLENBQXdCLFdBQXhCLENBQW9DLE1BQXBDLEdBQTZDLFNBQTdDLEdBQXlELElBQUksQ0FBQyxHQUFMLEVBQXRFO0FBQ0YsV0FBSyxNQUFMLENBQVksSUFBWixDQUFpQixNQUFqQixFQUYyQixDQUczQjs7QUFDQSxXQUFLLFVBQUwsQ0FBZ0IsVUFBaEIsQ0FBMkIsY0FBM0IsRUFBMEMsTUFBMUMsRUFKMkIsQ0FJd0I7O0FBQ25ELGFBQU8sTUFBUDtBQUNEOzs7V0FDQyx3QkFBZ0IsZ0JBQWhCLEVBQ0E7QUFDSSxVQUFJLE1BQU0sR0FBQyxLQUFYO0FBQ0EsVUFBSSxPQUFPLEdBQUMsR0FBWjtBQUNBLFVBQUksTUFBTSxHQUFHLGdCQUFnQixDQUFDLGdCQUE5QjtBQUVBLFVBQUksS0FBSyxrQkFBTCxDQUF3QixNQUF4QixLQUFpQyxTQUFyQyxFQUFnRCxLQUFLLGtCQUFMLENBQXdCLE1BQXhCLElBQWdDLEVBQWhDO0FBQ2hELFVBQUksS0FBSyxrQkFBTCxDQUF3QixNQUF4QixLQUFpQyxTQUFyQyxFQUFnRCxLQUFLLGtCQUFMLENBQXdCLE1BQXhCLElBQWdDLEVBQWhDLENBTnBELENBT0M7O0FBQ0EsVUFBSSxnQkFBZ0IsQ0FBQyxRQUFqQixJQUEyQixJQUEzQixJQUFtQyxnQkFBZ0IsQ0FBQyxRQUFqQixJQUEyQixTQUE5RCxJQUEyRSxNQUFNLElBQUUsU0FBdkYsRUFDQTtBQUNDLFFBQUEsT0FBTyxHQUFHLGdCQUFnQixDQUFDLFFBQTNCOztBQUVBLFlBQUksT0FBTyxJQUFFLEdBQWIsRUFDQTtBQUNDLGVBQUssSUFBSSxDQUFDLEdBQUMsQ0FBWCxFQUFhLENBQUMsR0FBQyxLQUFLLGtCQUFMLENBQXdCLE1BQXhCLEVBQWdDLE1BQS9DLEVBQXNELENBQUMsRUFBdkQsRUFBMkQ7QUFDekQsZ0JBQUksS0FBSyxrQkFBTCxDQUF3QixNQUF4QixFQUFnQyxDQUFoQyxFQUFtQyxRQUFuQyxJQUE2QyxnQkFBZ0IsQ0FBQyxRQUFsRSxFQUE0RTtBQUN4RSxjQUFBLE1BQU0sR0FBQyxJQUFQO0FBQ0EsbUJBQUssa0JBQUwsQ0FBd0IsTUFBeEIsRUFBZ0MsQ0FBaEMsSUFBbUMsZ0JBQW5DLENBRndFLENBRXBCO0FBQ3BEO0FBRUE7QUFDQTtBQUNIO0FBQ0YsV0FWRixDQVVFOztBQUVEOztBQUVFLFlBQUksQ0FBQyxNQUFMLEVBQWE7QUFDVixlQUFLLGFBQUwsR0FBbUIsS0FBSyxrQkFBTCxDQUF3QixNQUF4QixFQUFnQyxNQUFoQyxHQUF1QyxDQUExRDtBQUNDLFVBQUEsZ0JBQWdCLENBQUMsYUFBakIsR0FBaUMsT0FBakM7QUFDQSxVQUFBLGdCQUFnQixDQUFDLEVBQWpCLEdBQW9CLGdCQUFnQixDQUFDLFFBQXJDO0FBQ0EsVUFBQSxnQkFBZ0IsQ0FBQyxJQUFqQixHQUF3QixnQkFBZ0IsQ0FBQyxXQUFqQixHQUE2QixJQUE3QixHQUFrQyxnQkFBZ0IsQ0FBQyxRQUFuRCxHQUE0RCxHQUFwRixDQUpTLENBS1g7O0FBQ0MsZUFBSyxrQkFBTCxDQUF3QixNQUF4QixFQUFnQyxJQUFoQyxDQUFxQyxnQkFBckM7QUFDQSxlQUFLLGtCQUFMLENBQXdCLE1BQXhCLEVBQWdDLElBQWhDLENBQXFDO0FBQUMsWUFBQSxFQUFFLEVBQUMsZ0JBQWdCLENBQUMsRUFBckI7QUFBd0IsWUFBQSxJQUFJLEVBQUMsZ0JBQWdCLENBQUMsSUFBOUM7QUFBbUQsWUFBQSxPQUFPLEVBQUMsZ0JBQWdCLENBQUM7QUFBNUUsV0FBckM7QUFDRjtBQUdIOztBQUNBLGFBQU8sT0FBUDtBQUNGOzs7V0FFRCwwQkFBa0IsT0FBbEIsRUFBMEIsTUFBMUIsRUFDQTtBQUNFLFVBQUksS0FBSyxHQUFDLEtBQVY7O0FBQ0EsVUFBSSxNQUFNLElBQUUsU0FBWixFQUNBO0FBQ0UsYUFBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLEtBQUssa0JBQUwsQ0FBd0IsTUFBeEIsRUFBZ0MsTUFBL0MsRUFBc0QsQ0FBQyxFQUF2RCxFQUNBO0FBQ0MsY0FBSSxLQUFLLGtCQUFMLENBQXdCLE1BQXhCLEVBQWdDLENBQWhDLEVBQW1DLGFBQW5DLElBQWtELE9BQXRELEVBQ0E7QUFDTyxZQUFBLEtBQUssR0FBQyxJQUFOO0FBQ0osaUJBQUssa0JBQUwsQ0FBd0IsTUFBeEIsRUFBZ0MsTUFBaEMsQ0FBdUMsQ0FBdkMsRUFBeUMsQ0FBekM7QUFFRjtBQUNEOztBQUNELFlBQUksQ0FBQyxLQUFMLEVBQWEsS0FBSyxnQkFBTCxDQUFzQixVQUF0QixDQUFpQyx5QkFBeUIsT0FBekIsR0FBbUMsYUFBcEUsRUFBa0YsT0FBbEY7QUFDZDtBQUNGOzs7V0FHRiw4QkFBc0IsTUFBdEIsRUFDRTtBQUNHLFVBQUksTUFBTSxJQUFFLFNBQVosRUFDQTtBQUNBLGFBQUssa0JBQUwsQ0FBd0IsTUFBeEIsRUFBZ0MsTUFBaEMsQ0FBdUMsQ0FBdkMsRUFBeUMsS0FBSyxrQkFBTCxDQUF3QixNQUFqRTtBQUNBLGFBQUssYUFBTCxHQUFtQixDQUFuQjtBQUNDO0FBQ0o7OztXQUlILGdDQUF5QjtBQUN2QjtBQUNDLFVBQUksR0FBRyxHQUFDLE9BQU8sQ0FBQyxJQUFSLENBQWEsS0FBSyxrQkFBbEIsQ0FBUjtBQUNBLGFBQU8sR0FBUDtBQUNBOzs7V0FDRiwwQkFBa0IsY0FBbEIsRUFBaUMsTUFBakMsRUFBMEM7QUFDeEM7QUFDRCxVQUFJLGNBQWMsSUFBRSxTQUFoQixJQUE2QixjQUFjLElBQUUsRUFBakQsRUFBcUQ7QUFDbkQsYUFBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLEtBQUssa0JBQUwsQ0FBd0IsTUFBeEIsRUFBZ0MsTUFBL0MsRUFBc0QsQ0FBQyxFQUF2RCxFQUEyRDtBQUN2RCxjQUFJLGNBQWMsSUFBRSxLQUFLLGtCQUFMLENBQXdCLE1BQXhCLEVBQWdDLENBQWhDLEVBQW1DLFFBQXZELEVBQWtFLE9BQU8sQ0FBUDtBQUNuRTtBQUNILE9BSkYsTUFLTTtBQUNGLGVBQU8sQ0FBUDtBQUNEO0FBRUg7OztXQUVELGlDQUF3QixRQUF4QixFQUFtQztBQUNsQztBQUNDO0FBQ0QsVUFBSSxRQUFRLElBQUUsU0FBZCxFQUF5QjtBQUN4QixhQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsS0FBSyxhQUFwQixFQUFrQyxDQUFDLEVBQW5DLEVBQXVDO0FBQ3hDLGNBQUksUUFBUSxJQUFFLEtBQUssa0JBQUwsQ0FBd0IsQ0FBeEIsRUFBMkIsUUFBekMsRUFBcUQsT0FBTyxLQUFLLGtCQUFMLENBQXdCLENBQXhCLEVBQTJCLEdBQWxDO0FBQ3JEO0FBQ0M7QUFDQTs7O1dBRUQsaUJBQVMsSUFBVCxFQUNBO0FBR0c7QUFFRSxVQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBcEIsQ0FMTCxDQUttQzs7QUFDOUIsVUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFsQjtBQUNBLFVBQUksV0FBVyxHQUFFLEtBQUssZ0JBQUwsQ0FBc0IsUUFBdEIsRUFBK0IsTUFBL0IsQ0FBakI7O0FBR0QsVUFBSSxRQUFRLElBQUUsRUFBZCxFQUNDO0FBQ0csYUFBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLElBQUksQ0FBQyxHQUFMLENBQVMsTUFBeEIsRUFBK0IsQ0FBQyxFQUFoQyxFQUNBO0FBQ0MsY0FBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUwsQ0FBUyxDQUFULEVBQVksSUFBdkI7QUFDQSxjQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBTCxDQUFTLENBQVQsRUFBWSxLQUF4Qjs7QUFFQSxjQUFLLEtBQUssa0JBQUwsQ0FBd0IsTUFBeEIsRUFBZ0MsV0FBaEMsS0FBOEMsU0FBbkQsRUFDQTtBQUNHLGdCQUFLLEtBQUssa0JBQUwsQ0FBd0IsTUFBeEIsRUFBZ0MsV0FBaEMsRUFBNkMsR0FBN0MsSUFBa0QsU0FBdkQsRUFDQTtBQUNHLG1CQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsS0FBSyxrQkFBTCxDQUF3QixNQUF4QixFQUFnQyxXQUFoQyxFQUE2QyxHQUE3QyxDQUFpRCxNQUFoRSxFQUF1RSxDQUFDLEVBQXhFLEVBQ0E7QUFDSSxvQkFBSSxLQUFLLGtCQUFMLENBQXdCLE1BQXhCLEVBQWdDLFdBQWhDLEVBQTZDLEdBQTdDLENBQWlELENBQWpELEVBQW9ELElBQXBELElBQTRELElBQWhFLEVBQ0E7QUFDQyx1QkFBSyxrQkFBTCxDQUF3QixNQUF4QixFQUFnQyxXQUFoQyxFQUE2QyxHQUE3QyxDQUFpRCxDQUFqRCxFQUFvRCxLQUFwRCxHQUE0RCxLQUE1RDtBQUNBO0FBRUo7QUFDSDtBQUNGLFdBakJILENBa0JFO0FBQ0Q7OztBQUVBLGVBQUssVUFBTCxDQUFnQixVQUFoQixDQUEyQixVQUFRLFFBQVIsR0FBaUIsSUFBNUMsRUFBaUQsS0FBakQ7QUFDQTtBQUNILE9BcENOLENBcUNJO0FBQ0o7QUFHRzs7QUFJQTs7O1dBQ0QsaUJBQVMsUUFBVCxFQUFrQixPQUFsQixFQUEwQixLQUExQixFQUNGO0FBRUM7QUFDQSxhQUFPLEtBQUssa0JBQUwsQ0FBd0IsS0FBSyxhQUFMLEdBQW1CLENBQTNDLEVBQThDLE9BQTlDLENBQVA7QUFFQTs7O1dBR0gsMkJBQW1CLFdBQW5CLEVBQStCLGdCQUEvQixFQUFnRCxZQUFoRCxFQUE2RCxRQUE3RCxFQUFzRSxPQUF0RSxFQUNFO0FBQ0UsVUFBSSxTQUFTLEdBQUcsRUFBaEI7QUFBQSxVQUFtQixVQUFVLEdBQUMsRUFBOUI7QUFBQSxVQUFpQyxVQUFVLEdBQUMsRUFBNUM7QUFBQSxVQUErQyxVQUFVLEdBQUMsRUFBMUQ7QUFBQSxVQUE2RCxJQUFJLEdBQUMsRUFBbEU7QUFDRCxVQUFJLFdBQVcsSUFBRSxTQUFqQixFQUE0QixXQUFXLEdBQUMsRUFBWjtBQUMzQixVQUFJLFlBQVksSUFBRSxTQUFsQixFQUE2QixZQUFZLEdBQUMsRUFBYjtBQUM5QixVQUFJLGdCQUFnQixJQUFFLFNBQXRCLEVBQWlDLGdCQUFnQixHQUFDLEVBQWpCO0FBQ2pDLFVBQUksUUFBUSxJQUFFLFNBQWQsRUFBeUIsUUFBUSxHQUFDLEVBQVQ7QUFDekIsVUFBSSxPQUFPLElBQUUsU0FBYixFQUF3QixPQUFPLEdBQUMsRUFBUjtBQUN4QixVQUFJLFdBQVcsR0FBQyxLQUFoQjs7QUFDQSxXQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsS0FBSyxrQkFBTCxDQUF3QixNQUF2QyxFQUE4QyxDQUFDLEVBQS9DLEVBQ0E7QUFDRSxRQUFBLFNBQVMsR0FBRyxLQUFLLGtCQUFMLENBQXdCLENBQXhCLEVBQTJCLGVBQXZDO0FBQ0EsUUFBQSxVQUFVLEdBQUcsS0FBSyxrQkFBTCxDQUF3QixDQUF4QixFQUEyQixnQkFBeEM7QUFDQSxRQUFBLFVBQVUsR0FBRyxLQUFLLGtCQUFMLENBQXdCLENBQXhCLEVBQTJCLFlBQXhDOztBQUNBLFlBQUksU0FBUyxJQUFFLFNBQWYsRUFBMEI7QUFBQyxVQUFBLFNBQVMsR0FBQyxFQUFWO0FBQWM7O0FBQ3pDLFlBQUksVUFBVSxJQUFFLFNBQWhCLEVBQTJCO0FBQUMsVUFBQSxVQUFVLEdBQUMsRUFBWDtBQUFlOztBQUMzQyxZQUFJLFVBQVUsSUFBRSxTQUFoQixFQUEyQjtBQUFDLFVBQUEsVUFBVSxHQUFDLEVBQVg7QUFBZTs7QUFDM0MsUUFBQSxVQUFVLEdBQUcsS0FBSyxrQkFBTCxDQUF3QixDQUF4QixFQUEyQixRQUF4QyxDQVBGLENBUUU7O0FBQ0EsWUFBSSxVQUFVLElBQUUsU0FBaEIsRUFBMkI7QUFBQyxVQUFBLFVBQVUsR0FBQyxFQUFYO0FBQWU7O0FBQzFDLFFBQUEsV0FBVyxHQUFDLEtBQVo7O0FBQ0YsWUFBSyxXQUFXLElBQUUsRUFBbEIsRUFDQTtBQUVFLGNBQUksU0FBUyxDQUFDLFFBQVYsTUFBd0IsV0FBVyxDQUFDLFFBQVosRUFBNUIsRUFDQTtBQUNFLFlBQUEsV0FBVyxHQUFDLElBQVo7QUFDRDtBQUNGOztBQUNELFlBQUssZ0JBQWdCLElBQUUsRUFBdkIsRUFDQTtBQUVFLGNBQUksVUFBVSxDQUFDLFFBQVgsTUFBeUIsZ0JBQWdCLENBQUMsUUFBakIsRUFBN0IsRUFDQTtBQUNFLFlBQUEsV0FBVyxHQUFDLElBQVo7QUFDRDtBQUNGOztBQUVBLFlBQUssWUFBWSxJQUFFLEVBQW5CLEVBQ0Q7QUFFRSxjQUFJLFVBQVUsQ0FBQyxRQUFYLE1BQXlCLFlBQVksQ0FBQyxRQUFiLEVBQTdCLEVBQ0E7QUFDRSxZQUFBLFdBQVcsR0FBQyxJQUFaO0FBQ0Q7QUFDRjs7QUFFRCxZQUFHLFdBQVcsSUFBSSxVQUFVLENBQUMsUUFBWCxNQUF1QixRQUFRLENBQUMsUUFBVCxFQUF6QyxFQUNBO0FBQ0UsZUFBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLEtBQUssa0JBQUwsQ0FBd0IsQ0FBeEIsRUFBMkIsR0FBM0IsQ0FBK0IsTUFBOUMsRUFBcUQsQ0FBQyxFQUF0RCxFQUNBO0FBQ0UsZ0JBQUksS0FBSyxrQkFBTCxDQUF3QixDQUF4QixFQUEyQixHQUEzQixDQUErQixDQUEvQixFQUFrQyxJQUFsQyxJQUF3QyxPQUE1QyxFQUNBO0FBQ0UscUJBQU8sS0FBSyxrQkFBTCxDQUF3QixDQUF4QixFQUEyQixHQUEzQixDQUErQixDQUEvQixFQUFrQyxLQUF6QztBQUNEO0FBRUY7QUFFRjtBQUVELE9BM0RGLENBNERDOzs7QUFDQSxhQUFPLENBQVA7QUFFQTs7O1dBRUEsK0JBQXVCLFFBQXZCLEVBQWdDLE9BQWhDLEVBQ0Q7QUFDRSxVQUFLLFVBQVUsR0FBQyxFQUFoQjtBQUFBLFVBQW1CLElBQUksR0FBQyxFQUF4QjtBQUNELFVBQUksUUFBUSxJQUFFLFNBQWQsRUFBeUIsUUFBUSxHQUFDLEVBQVQ7QUFDekIsVUFBSSxPQUFPLElBQUUsU0FBYixFQUF3QixPQUFPLEdBQUMsRUFBUjtBQUN4QixVQUFJLFdBQVcsR0FBQyxLQUFoQjs7QUFDQSxXQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsS0FBSyxrQkFBTCxDQUF3QixNQUF2QyxFQUE4QyxDQUFDLEVBQS9DLEVBQ0E7QUFFRSxRQUFBLFVBQVUsR0FBRyxLQUFLLGtCQUFMLENBQXdCLENBQXhCLEVBQTJCLFFBQXhDLENBRkYsQ0FHRTs7QUFDRCxZQUFJLFVBQVUsSUFBRSxTQUFoQixFQUEyQjtBQUFDLFVBQUEsVUFBVSxHQUFDLEVBQVg7QUFBZTs7QUFDM0MsWUFBSSxVQUFVLENBQUMsUUFBWCxNQUF1QixRQUFRLENBQUMsUUFBVCxFQUEzQixFQUNBO0FBQ0UsZUFBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLEtBQUssa0JBQUwsQ0FBd0IsQ0FBeEIsRUFBMkIsR0FBM0IsQ0FBK0IsTUFBOUMsRUFBcUQsQ0FBQyxFQUF0RCxFQUNBO0FBQ0UsZ0JBQUksS0FBSyxrQkFBTCxDQUF3QixDQUF4QixFQUEyQixHQUEzQixDQUErQixDQUEvQixFQUFrQyxJQUFsQyxJQUF3QyxPQUE1QyxFQUNBO0FBQ0UscUJBQU8sS0FBSyxrQkFBTCxDQUF3QixDQUF4QixFQUEyQixHQUEzQixDQUErQixDQUEvQixFQUFrQyxLQUF6QztBQUNEO0FBRUY7QUFFRjtBQUVELE9BeEJGLENBeUJDOzs7QUFDQSxhQUFPLENBQVA7QUFFQTs7O1dBRUEsd0JBQWdCLGdCQUFoQixFQUNEO0FBQ00sVUFBSSxNQUFNLEdBQUMsS0FBWDs7QUFFQSxXQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsS0FBSyxjQUFMLENBQW9CLE1BQW5DLEVBQTBDLENBQUMsRUFBM0MsRUFBK0M7QUFDN0M7QUFDRCxZQUFJLGdCQUFnQixDQUFDLFFBQWpCLElBQTJCLElBQTNCLElBQW1DLGdCQUFnQixDQUFDLFFBQWpCLElBQTJCLFNBQWxFLEVBQ0ssSUFBSSxLQUFLLGNBQUwsQ0FBb0IsQ0FBcEIsRUFBdUIsUUFBdkIsSUFBaUMsZ0JBQWdCLENBQUMsUUFBdEQsRUFBZ0U7QUFDdEQsVUFBQSxNQUFNLEdBQUMsSUFBUDtBQUNBLGVBQUssY0FBTCxDQUFvQixDQUFwQixJQUF1QixnQkFBdkIsQ0FGc0QsQ0FFZDtBQUV0RDtBQUVGLE9BWk4sQ0FZTTs7O0FBRUQsVUFBSSxDQUFDLE1BQUwsRUFBYTtBQUVULGFBQUssY0FBTCxDQUFvQixJQUFwQixDQUF5QixnQkFBekI7QUFDSDs7QUFFRCxhQUFPLE1BQVA7QUFDSjs7O1dBQ0MsbUJBQVcsUUFBWCxFQUFvQixhQUFwQixFQUNGO0FBR00sV0FBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLEtBQUssY0FBTCxDQUFvQixNQUFuQyxFQUEwQyxDQUFDLEVBQTNDLEVBQStDO0FBQzdDO0FBQ0QsWUFBSSxRQUFRLElBQUUsSUFBVixJQUFrQixRQUFRLElBQUUsU0FBNUIsSUFBeUMsYUFBYSxJQUFFLElBQXhELElBQWdFLGFBQWEsSUFBRSxTQUFuRixFQUNLLElBQUksS0FBSyxjQUFMLENBQW9CLENBQXBCLEVBQXVCLGFBQXZCLElBQXNDLGFBQTFDLEVBQXlEO0FBRS9DLGVBQUksSUFBSSxDQUFDLEdBQUMsQ0FBVixFQUFZLENBQUMsR0FBQyxLQUFLLGNBQUwsQ0FBb0IsQ0FBcEIsRUFBdUIsWUFBdkIsQ0FBb0MsTUFBbEQsRUFBeUQsQ0FBQyxFQUExRCxFQUNBO0FBQ0UsZ0JBQUksS0FBSyxjQUFMLENBQW9CLENBQXBCLEVBQXVCLFlBQXZCLENBQW9DLENBQXBDLEVBQXVDLFFBQXZDLElBQWlELFFBQXJELEVBQ0E7QUFDRSxtQkFBSyxjQUFMLENBQW9CLENBQXBCLEVBQXVCLFlBQXZCLENBQW9DLENBQXBDLEVBQXVDLFNBQXZDLEdBQWlELElBQWpEO0FBQ0EsbUJBQUssVUFBTCxDQUFnQixVQUFoQixDQUEyQixvQkFBa0IsYUFBbEIsR0FBZ0MsS0FBSyxjQUFMLENBQW9CLENBQXBCLEVBQXVCLFFBQWxGLEVBQTJGLEtBQUssY0FBTCxDQUFvQixDQUFwQixFQUF1QixZQUF2QixDQUFvQyxDQUFwQyxDQUEzRjtBQUNEO0FBQ0Y7QUFHZjtBQUVGLE9BcEJOLENBb0JNOztBQUVMOzs7V0FFRCxtQkFBVyxhQUFYLEVBQXlCLFFBQXpCLEVBQ0E7QUFFTSxXQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsS0FBSyxjQUFMLENBQW9CLE1BQW5DLEVBQTBDLENBQUMsRUFBM0MsRUFBK0M7QUFDN0M7QUFDRCxZQUFJLFFBQVEsSUFBRSxJQUFWLElBQWtCLFFBQVEsSUFBRSxTQUE1QixJQUF5QyxhQUFhLElBQUUsSUFBeEQsSUFBZ0UsYUFBYSxJQUFFLFNBQW5GLEVBQ0ssSUFBSSxLQUFLLGNBQUwsQ0FBb0IsQ0FBcEIsRUFBdUIsUUFBdkIsSUFBaUMsUUFBakMsSUFBNkMsS0FBSyxjQUFMLENBQW9CLENBQXBCLEVBQXVCLGFBQXZCLElBQXNDLGFBQXZGLEVBQXNHO0FBQ2hHLGlCQUFPLEtBQUssY0FBTCxDQUFvQixDQUFwQixDQUFQO0FBQ1Y7QUFFRixPQVROLENBU007OztBQUVGLGFBQU8sSUFBUDtBQUNIOzs7V0FDQyx5QkFBaUIsV0FBakIsRUFDRjtBQUNELFVBQUksU0FBUyxHQUFDLEVBQWQ7QUFDRyxVQUFJLFdBQVcsSUFBRSxTQUFqQixFQUE0QixPQUFPLENBQVA7O0FBRTdCLFdBQUssSUFBSSxDQUFDLEdBQUMsQ0FBWCxFQUFhLENBQUMsR0FBQyxLQUFLLGtCQUFMLENBQXdCLE1BQXZDLEVBQThDLENBQUMsRUFBL0MsRUFDQTtBQUNFLFlBQUksU0FBUyxHQUFHLEtBQUssa0JBQUwsQ0FBd0IsQ0FBeEIsRUFBMkIsZUFBM0M7O0FBQ0EsWUFBSSxTQUFTLElBQUUsU0FBZixFQUEwQjtBQUFDLFVBQUEsU0FBUyxHQUFDLEVBQVY7QUFBYzs7QUFFMUMsWUFBSSxTQUFTLENBQUMsUUFBVixNQUF3QixXQUFXLENBQUMsUUFBWixFQUE1QixFQUNBO0FBRUUsVUFBQSxTQUFTLENBQUMsSUFBVixDQUFlLEtBQUssa0JBQUwsQ0FBd0IsQ0FBeEIsQ0FBZjtBQUNEO0FBRUQsT0FmRixDQWdCQzs7O0FBQ0EsYUFBTyxTQUFQO0FBRUE7OztXQUNELDZCQUFxQixXQUFyQixFQUFpQyxXQUFqQyxFQUE2QyxnQkFBN0MsRUFDQTtBQUNBLFVBQUksU0FBUyxHQUFDLEVBQWQ7QUFDQSxVQUFJLEdBQUosRUFBUyxVQUFULEVBQW9CLE1BQXBCOztBQUNBLFVBQUksV0FBVyxJQUFFLFNBQWIsSUFBMEIsV0FBVyxJQUFFLENBQTNDLEVBQ0U7QUFDRSxRQUFBLEdBQUcsR0FBQyxXQUFKO0FBQ0EsUUFBQSxNQUFNLEdBQUMsTUFBUDtBQUNELE9BSkgsTUFLSyxJQUFJLFdBQVcsSUFBRSxTQUFiLElBQTBCLFdBQVcsSUFBRSxDQUEzQyxFQUNMO0FBQ0UsUUFBQSxHQUFHLEdBQUMsV0FBSjtBQUNBLFFBQUEsTUFBTSxHQUFDLE1BQVA7QUFDRCxPQUpJLE1BS0EsT0FBTyxDQUFQOztBQUVKLFdBQUssSUFBSSxDQUFDLEdBQUMsQ0FBWCxFQUFhLENBQUMsR0FBQyxLQUFLLGtCQUFMLENBQXdCLGdCQUF4QixFQUEwQyxNQUF6RCxFQUFnRSxDQUFDLEVBQWpFLEVBQ0E7QUFDQyxZQUFJLE1BQU0sSUFBRSxNQUFaLEVBQW9CLFVBQVUsR0FBRyxLQUFLLGtCQUFMLENBQXdCLGdCQUF4QixFQUEwQyxDQUExQyxFQUE2QyxlQUExRCxDQUFwQixLQUNLLFVBQVUsR0FBRyxLQUFLLGtCQUFMLENBQXdCLGdCQUF4QixFQUEwQyxDQUExQyxFQUE2QyxXQUExRDtBQUVMLFlBQUksVUFBVSxJQUFFLFNBQWhCLEVBQTJCLFVBQVUsR0FBQyxFQUFYOztBQUUzQixZQUFJLFVBQVUsQ0FBQyxRQUFYLE1BQXlCLEdBQUcsQ0FBQyxRQUFKLEVBQTdCLEVBQ0E7QUFFRSxVQUFBLFNBQVMsQ0FBQyxJQUFWLENBQWUsS0FBSyxrQkFBTCxDQUF3QixnQkFBeEIsRUFBMEMsQ0FBMUMsQ0FBZjtBQUNEO0FBRUQsT0E1QkYsQ0E2QkM7OztBQUNBLGFBQU8sU0FBUDtBQUVBOzs7V0FDRCwrQkFBd0IsWUFBeEIsRUFDRTtBQUNFLFVBQUksU0FBUyxHQUFHLEtBQUssZUFBTCxDQUFxQixZQUFyQixDQUFoQjtBQUNNLFVBQUksU0FBUyxHQUFDLENBQWQ7QUFBQSxVQUFnQixlQUFlLEdBQUMsQ0FBaEM7O0FBQ0EsVUFBSSxTQUFTLENBQUMsR0FBVixJQUFlLFNBQWYsSUFBNEIsU0FBUyxDQUFDLEdBQVYsSUFBZSxJQUEvQyxFQUNBO0FBQ0EsYUFBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLFNBQVMsQ0FBQyxHQUFWLENBQWMsTUFBN0IsRUFBb0MsQ0FBQyxFQUFyQyxFQUNBO0FBQ0UsY0FBSSxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsSUFBakIsSUFBdUIscUJBQTNCLEVBQ0E7QUFDRSxnQkFBSSxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsSUFBd0IsU0FBeEIsSUFBcUMsU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLElBQXdCLElBQWpFLEVBQ0E7QUFDRSxtQkFBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixNQUF0QyxFQUE2QyxDQUFDLEVBQTlDLEVBQ0E7QUFDQyxvQkFBSSxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsQ0FBdkIsRUFBMEIsSUFBMUIsSUFBZ0MsWUFBaEMsSUFBZ0QsU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLENBQXZCLEVBQTBCLEtBQTFCLElBQWlDLFNBQXJGLEVBQWdHLFNBQVMsR0FBQyxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsQ0FBdkIsRUFBMEIsS0FBcEM7QUFDaEcsb0JBQUksU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLENBQXZCLEVBQTBCLElBQTFCLElBQWdDLGtCQUFoQyxJQUFzRCxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsQ0FBdkIsRUFBMEIsS0FBMUIsSUFBaUMsU0FBM0YsRUFBc0csZUFBZSxHQUFDLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixDQUF2QixFQUEwQixLQUExQztBQUd0RztBQUdGO0FBRUY7QUFFQTtBQUNGOztBQUNULGFBQU87QUFBQyxxQkFBWSxTQUFiO0FBQXVCLDJCQUFrQjtBQUF6QyxPQUFQO0FBQ0M7OztXQUNGLHFCQUNEO0FBRUUsYUFBTyxLQUFLLE1BQVo7QUFFRDs7Ozs7O2dCQWpjRyx5QixhQWVtQixDQUFDLFlBQUQsRUFBYyxrQkFBZCxDOztBQW1ieEI7ZUFFYyx5Qjs7OztBQzFjZjtBQUNBO0FBQ0E7QUFFQSxhLENBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQ00sWTtBQUNKLDBCQUFjO0FBQUE7O0FBQ1osU0FBSyxNQUFMLEdBQWMsRUFBZDtBQUNEOzs7O1dBQ0QsWUFBRyxLQUFILEVBQVUsUUFBVixFQUFvQjtBQUFBOztBQUNoQixVQUFJLFFBQU8sS0FBSyxNQUFMLENBQVksS0FBWixDQUFQLE1BQThCLFFBQWxDLEVBQTRDO0FBQ3hDLGFBQUssTUFBTCxDQUFZLEtBQVosSUFBcUIsRUFBckI7QUFDSDs7QUFDRCxXQUFLLE1BQUwsQ0FBWSxLQUFaLEVBQW1CLElBQW5CLENBQXdCLFFBQXhCO0FBQ0EsYUFBTztBQUFBLGVBQU0sS0FBSSxDQUFDLGNBQUwsQ0FBb0IsS0FBcEIsRUFBMkIsUUFBM0IsQ0FBTjtBQUFBLE9BQVA7QUFDSDs7O1dBQ0Qsd0JBQWUsS0FBZixFQUFzQixRQUF0QixFQUFnQztBQUM5QixVQUFJLFFBQU8sS0FBSyxNQUFMLENBQVksS0FBWixDQUFQLE1BQThCLFFBQWxDLEVBQTRDO0FBQ3hDLFlBQU0sR0FBRyxHQUFHLEtBQUssTUFBTCxDQUFZLEtBQVosRUFBbUIsT0FBbkIsQ0FBMkIsUUFBM0IsQ0FBWjs7QUFDQSxZQUFJLEdBQUcsR0FBRyxDQUFDLENBQVgsRUFBYztBQUNaLGVBQUssTUFBTCxDQUFZLEtBQVosRUFBbUIsTUFBbkIsQ0FBMEIsR0FBMUIsRUFBK0IsQ0FBL0I7QUFDRDtBQUNKO0FBQ0Y7OztXQUNELGNBQUssS0FBTCxFQUFxQjtBQUFBOztBQUFBLHdDQUFOLElBQU07QUFBTixRQUFBLElBQU07QUFBQTs7QUFDbkIsVUFBSSxRQUFPLEtBQUssTUFBTCxDQUFZLEtBQVosQ0FBUCxNQUE4QixRQUFsQyxFQUE0QztBQUMxQyxhQUFLLE1BQUwsQ0FBWSxLQUFaLEVBQW1CLE9BQW5CLENBQTJCLFVBQUEsUUFBUTtBQUFBLGlCQUFJLFFBQVEsQ0FBQyxLQUFULENBQWUsTUFBZixFQUFxQixJQUFyQixDQUFKO0FBQUEsU0FBbkM7QUFDRDtBQUNGOzs7V0FDRCxjQUFLLEtBQUwsRUFBWSxRQUFaLEVBQXNCO0FBQUE7O0FBQ3BCLFVBQU0sTUFBTSxHQUFHLEtBQUssRUFBTCxDQUFRLEtBQVIsRUFBZSxZQUFhO0FBQ3ZDLFFBQUEsTUFBTTs7QUFEaUMsMkNBQVQsSUFBUztBQUFULFVBQUEsSUFBUztBQUFBOztBQUV2QyxRQUFBLFFBQVEsQ0FBQyxLQUFULENBQWUsTUFBZixFQUFxQixJQUFyQjtBQUNILE9BSGMsQ0FBZjtBQUlEOzs7Ozs7QUFDRjs7SUFFSyxxQjtBQUVILGlDQUFZLFVBQVosRUFBdUIsZUFBdkIsRUFBdUMsU0FBdkMsRUFBa0Q7QUFBQTs7QUFHekMsU0FBSyxVQUFMLEdBQWdCLFVBQWhCO0FBQ0EsU0FBSyxlQUFMLEdBQXVCLGVBQXZCO0FBQ0EsU0FBSyxTQUFMLEdBQWlCLFNBQWpCO0FBQ0EsU0FBSyxhQUFMLEdBQXFCLEtBQXJCO0FBQ0EsU0FBSyxpQkFBTCxHQUF1QixLQUF2QjtBQUNBLElBQUEsZUFBZSxDQUFDLG9CQUFoQixDQUFxQyxLQUFyQztBQUdQOzs7O1dBRTZEO0FBTWhFLDhCQUNBO0FBQ0QsVUFBSSxRQUFRLEdBQUcsSUFBZjtBQUNBLFdBQUssVUFBTCxDQUFnQixHQUFoQixDQUFvQix3QkFBcEIsRUFBNkMsVUFBUyxLQUFULEVBQWdCLElBQWhCLEVBQXFCO0FBRWxELFlBQUksQ0FBQyxRQUFRLENBQUMsYUFBZCxFQUE2QixRQUFRLENBQUMsc0JBQVQ7QUFFN0IsUUFBQSxRQUFRLENBQUMsYUFBVCxHQUF1QixJQUF2QjtBQUNaLE9BTEo7QUFPRyxXQUFLLFVBQUwsQ0FBZ0IsR0FBaEIsQ0FBb0IscUJBQXBCLEVBQTBDLFVBQVMsS0FBVCxFQUFnQixJQUFoQixFQUFxQjtBQUUvQyxZQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFkLEVBQW9DLFFBQVEsQ0FBQyxtQkFBVDtBQUNwQyxRQUFBLFFBQVEsQ0FBQyxpQkFBVCxHQUE2QixJQUE3QjtBQUNBLFFBQUEsUUFBUSxDQUFDLGVBQVQsQ0FBeUIsb0JBQXpCLENBQThDLElBQTlDO0FBRWYsT0FORDtBQU9EOzs7V0FDRCxtQ0FDQTtBQUNFLFVBQUksQ0FBSjtBQUNBLFVBQUksUUFBUSxHQUFHLElBQWY7O0FBQ0EsVUFBSSxDQUFDLEtBQUssYUFBTixJQUF1QixDQUFDLEtBQUssaUJBQWpDLEVBQ0E7QUFDRSxRQUFBLE9BQU8sQ0FBQyxNQUFSLENBQWUsMEJBQWYsRUFBMkMsY0FBM0MsRUFBMkQsT0FBM0QsQ0FBbUUsVUFBUyxLQUFULEVBQWU7QUFDaEYsVUFBQSxDQUFDLEdBQUksUUFBUSxDQUFDLFNBQVQsQ0FBbUIsR0FBbkIsQ0FBdUIsS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTLENBQVQsQ0FBdkIsQ0FBTDtBQUNELFNBRkQ7QUFHRDs7QUFFSCxXQUFLLFVBQUwsQ0FBZ0IsS0FBaEIsQ0FBc0Isd0JBQXRCLEVBQStDLElBQS9DO0FBQ0M7OztXQUVELHVDQUNBO0FBQ0UsVUFBSSxDQUFKO0FBQ0EsVUFBSSxRQUFRLEdBQUcsSUFBZjs7QUFDQyxVQUFJLENBQUMsS0FBSyxhQUFOLElBQXVCLENBQUMsS0FBSyxpQkFBakMsRUFDRDtBQUNFLFFBQUEsT0FBTyxDQUFDLE1BQVIsQ0FBZSwwQkFBZixFQUEyQyxjQUEzQyxFQUEyRCxPQUEzRCxDQUFtRSxVQUFTLEtBQVQsRUFBZTtBQUNsRixVQUFBLENBQUMsR0FBSSxRQUFRLENBQUMsU0FBVCxDQUFtQixHQUFuQixDQUF1QixLQUFLLENBQUMsQ0FBRCxDQUFMLENBQVMsQ0FBVCxDQUF2QixDQUFMO0FBQ0MsU0FGRDtBQUdEOztBQUNELFdBQUssVUFBTCxDQUFnQixLQUFoQixDQUFzQixxQkFBdEIsRUFBNEMsSUFBNUM7QUFDRDs7O1dBRUQsa0NBRUE7QUFDRSxVQUFJLFdBQUo7QUFFQSxVQUFJLGVBQWUsR0FBRSxLQUFLLGVBQUwsQ0FBcUIsa0JBQXJCLEVBQXJCOztBQUVBLFdBQUssSUFBSSxDQUFDLEdBQUMsQ0FBWCxFQUFhLENBQUMsR0FBQyxlQUFlLENBQUMsTUFBL0IsRUFBc0MsQ0FBQyxFQUF2QyxFQUNBO0FBQ0UsUUFBQSxXQUFXLEdBQUcsZUFBZSxDQUFDLENBQUQsQ0FBN0I7QUFDQSxhQUFLLGVBQUwsQ0FBcUIscUJBQXJCLENBQTJDLFdBQTNDO0FBQ0Q7QUFDRjs7O1dBR0QsK0JBRUE7QUFDRSxVQUFJLGVBQUo7QUFDQSxVQUFJLG1CQUFtQixHQUFDLEtBQUssZUFBTCxDQUFxQixzQkFBckIsRUFBeEI7O0FBRUEsV0FBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLG1CQUFtQixDQUFDLE1BQW5DLEVBQTBDLENBQUMsRUFBM0MsRUFDQTtBQUNFLFFBQUEsZUFBZSxHQUFHLG1CQUFtQixDQUFDLENBQUQsQ0FBckM7QUFDQSxhQUFLLGVBQUwsQ0FBcUIsa0JBQXJCLENBQXdDLGVBQXhDO0FBQ0Q7QUFHRjs7Ozs7O2dCQTlGRyxxQixhQWVlLENBQUMsWUFBRCxFQUFjLGlCQUFkLEVBQWdDLFdBQWhDLEM7O0FBZ0ZwQjtlQUVjLHFCOzs7O0FDeElmOztBQUVBOztBQUVBOztBQUNBOzs7O0FBRkE7QUFJQSxPQUFPLENBQUMsU0FBUixDQUFrQixRQUFsQixFQUE0QixDQUFDLGlCQUFELENBQTVCOzs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdKQTs7Ozs7Ozs7O0FBTUE7O0FBQ0E7O0FBR0E7O0FBRUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7Ozs7O0FBNUJBLE9BQU8sQ0FBQyxNQUFSLENBQWUsbUJBQWYsRUFBbUMsRUFBbkMsRSxDQUVBOztBQTRCQSxJQUFJLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBUixDQUFlLDBCQUFmLEVBQTBDLEVBQTFDLENBQVY7QUFFQSxPQUFPLENBQUMsT0FBUixDQUFnQixjQUFoQixFQUFnQyxVQUFTLEtBQVQsRUFBZ0IsR0FBaEIsRUFBcUI7QUFDbkQsRUFBQSxHQUFHLENBQUMsT0FBSixDQUFZLEdBQVosRUFBZ0IsS0FBaEI7QUFDQSxDQUZGO0FBSUEsSUFBSSxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQVIsQ0FBZSxvQkFBZixFQUFvQyxFQUFwQyxDQUFWO0FBQ0EsR0FBRyxDQUFDLFNBQUosQ0FBYyxtQkFBZCxFQUFrQyx1QkFBbEM7QUFHQSxJQUFJLGFBQWEsR0FBRyxTQUFwQjtBQUVBLElBQUksR0FBRyxHQUFHLE9BQU8sQ0FBQyxNQUFSLENBQWUsYUFBZixFQUE4QixDQUNwQyx3QkFEb0MsRUFFcEMsYUFGb0MsRUFHcEMsMEJBSG9DLEVBSXBDLG9CQUpvQyxFQUtwQyxXQUxvQyxFQU1wQyxTQU5vQyxFQU9wQyxjQVBvQyxFQVFwQyxXQVJvQyxFQVNwQyxvQkFUb0MsRUFVcEMsbUJBVm9DLEVBV3BDLHVCQVhvQyxFQVlwQyxvQkFab0MsRUFhcEMsa0JBYm9DLEVBY3BDLHFCQWRvQyxFQWVwQyxtQkFmb0MsRUFnQnBDLGtCQWhCb0MsRUFpQnBDLGNBakJvQyxFQWtCcEMsV0FsQm9DLEVBbUJwQyxXQW5Cb0MsRUFvQnBDLFlBcEJvQyxFQXFCcEMsYUFyQm9DLEVBc0JwQyxjQXRCb0MsRUF1QnBDLGdCQXZCb0MsRUF3QnBDLGNBQWMsQ0FBQyxPQUFELENBeEJzQixFQXlCcEMsYUF6Qm9DLEVBMEJwQyxjQTFCb0MsRUEyQnBDLFVBM0JvQyxFQTRCcEMsYUE1Qm9DLEVBNkJwQyxhQTdCb0MsQ0FBOUIsRUErQlQsT0EvQlMsQ0ErQkQsdUJBL0JDLEVBK0J1QixzQkEvQnZCLEVBZ0NULE9BaENTLENBZ0NELGFBaENDLEVBZ0NhLHVCQWhDYixFQWlDVCxPQWpDUyxDQWlDRCxjQWpDQyxFQWlDYyx3QkFqQ2QsRUFrQ1QsT0FsQ1MsQ0FrQ0QsY0FsQ0MsRUFrQ2MsdUJBbENkLEVBbUNULE9BbkNTLENBbUNELGlCQW5DQyxFQW1DaUIsMEJBbkNqQixFQW9DVCxPQXBDUyxDQW9DRCxrQkFwQ0MsRUFvQ2tCLDJCQXBDbEIsRUFxQ1QsT0FyQ1MsQ0FxQ0QscUJBckNDLEVBcUNxQiw4QkFyQ3JCLEVBc0NULE9BdENTLENBc0NELG1CQXRDQyxFQXNDbUIsNEJBdENuQixFQXVDVCxPQXZDUyxDQXVDRCxzQkF2Q0MsRUF1Q3NCLCtCQXZDdEIsRUF3Q1QsT0F4Q1MsQ0F3Q0QsaUJBeENDLEVBd0NpQiwyQkF4Q2pCLEVBeUNULE9BekNTLENBeUNELHVCQXpDQyxFQXlDdUIsc0NBekN2QixFQTBDVCxPQTFDUyxDQTBDRCx1QkExQ0MsRUEwQ3VCLHNDQTFDdkIsRUEyQ1QsT0EzQ1MsQ0EyQ0QsaUJBM0NDLEVBMkNpQixnQ0EzQ2pCLEVBNENULE9BNUNTLENBNENELGlCQTVDQyxFQTRDaUIsMEJBNUNqQixFQTZDVCxPQTdDUyxDQTZDRCxnQkE3Q0MsRUE2Q2dCLHFCQTdDaEIsRUE4Q1QsT0E5Q1MsQ0E4Q0QsYUE5Q0MsRUE4Q2EsdUJBOUNiLEVBK0NULE9BL0NTLENBK0NELDJCQS9DQyxFQStDMkIsb0NBL0MzQixFQWdEVCxPQWhEUyxDQWdERCx1QkFoREMsRUFnRHVCLGdDQWhEdkIsRUFpRFQsT0FqRFMsQ0FpREQsZ0JBakRDLEVBaURnQix5QkFqRGhCLEVBa0RULE1BbERTLENBa0RGLENBQUMsVUFBRCxFQUFZLGVBQVosRUFBNEIsbUJBQTVCLEVBQWdELFVBQVUsUUFBVixFQUFvQixhQUFwQixFQUFrQyxpQkFBbEMsRUFBcUQ7QUFDM0csRUFBQSxhQUFhLENBQUMsWUFBZCxDQUEyQixJQUEzQixDQUFnQyw4QkFBc0IsNEJBQXREO0FBQ0EsRUFBQSxhQUFhLENBQUMsWUFBZCxDQUEyQixJQUEzQixDQUFnQyxtQ0FBZ0Isc0JBQWhEO0FBQ0EsRUFBQSxpQkFBaUIsQ0FBQyxTQUFsQixDQUE0QixJQUE1QjtBQUNELENBSk8sQ0FsREUsQ0FBVjtBQXdEQSxPQUFPLENBQUMsT0FBUixDQUFnQixpQkFBaEIsRUFBbUMsVUFBUyxLQUFULEVBQWdCLEdBQWhCLEVBQXFCO0FBQ3RELEVBQUEsR0FBRyxDQUFDLFNBQUosQ0FBYyxHQUFkLEVBQWtCLEtBQWxCO0FBQ0QsQ0FGRCxFLENBSUE7QUFDQTs7ZUFHZSxhOztBQUVmLEdBQUcsQ0FBQyxRQUFKLENBQWEsa0JBQWIsRUFBaUM7QUFBQyxxQkFBa0IsaUJBQW5CO0FBQXFDLG1CQUFpQjtBQUF0RCxDQUFqQztBQUVBLEdBQUcsQ0FBQyxRQUFKLENBQWEsYUFBYixFQUE0QjtBQUFDLHFCQUFrQjtBQUFDLFFBQUcsNEJBQUo7QUFBaUMsUUFBRywyQkFBcEM7QUFBZ0UsUUFBRyw2QkFBbkU7QUFBaUcsUUFBRyw0QkFBcEc7QUFBaUksT0FBRTtBQUFuSSxHQUFuQjtBQUNkLHlCQUFzQjtBQUFDLE9BQUUsZUFBSDtBQUFtQixPQUFFLCtCQUFyQjtBQUFxRCxPQUFFO0FBQXZEO0FBRFIsQ0FBNUI7QUFHQSxHQUFHLENBQUMsTUFBSixDQUFXLFNBQVgsRUFBc0IsWUFBWTtBQUNoQyxTQUFPLFVBQVUsS0FBVixFQUFpQjtBQUVwQixRQUFJLEtBQUssSUFBRSxJQUFYLEVBQWlCO0FBRWIsVUFBSSxLQUFLLENBQUMsSUFBTixNQUFjLEVBQWxCLEVBQXNCO0FBRXRCLFlBQUksVUFBVSxHQUFDLEtBQUssQ0FBQyxLQUFOLENBQVksSUFBWixFQUFrQixJQUFsQixDQUF1QixHQUF2QixDQUFmO0FBQ0EsWUFBSSxRQUFRLEdBQUMsRUFBYjtBQUVBLFFBQUEsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFSLENBQWlCLFVBQWpCLENBQVg7QUFDQSxlQUFPLFFBQVEsQ0FBQyxJQUFoQjtBQUNDLE9BUEQsTUFRQTtBQUNFLGVBQU8sS0FBUDtBQUVEO0FBQ0osS0FkRCxNQWVBO0FBRUUsYUFBTyxLQUFQO0FBRUQ7QUFDRixHQXRCSDtBQXVCRCxDQXhCRDtBQTBCQSxHQUFHLENBQUMsTUFBSixDQUFXLFNBQVgsRUFBcUIsQ0FBQyxhQUFELEVBQWdCLFVBQVUsV0FBVixFQUF1QjtBQUMxRCxNQUFJLEtBQUssR0FBRyxFQUFaOztBQUVBLFdBQVMsT0FBVCxDQUFpQixLQUFqQixFQUF3QjtBQUVyQjtBQUNFO0FBQ0Y7QUFDQTtBQUNHLFFBQUksS0FBSyxJQUFFLFNBQVgsRUFBc0I7QUFFcEIsVUFBSSxRQUFRLEdBQUMsSUFBYjtBQUNBLE1BQUEsV0FBVyxDQUFDLGlCQUFaLENBQThCLEtBQTlCLEVBQXFDLElBQXJDLENBQTBDLFVBQVUsSUFBVixFQUFlO0FBQ3ZELFFBQUEsUUFBUSxHQUFHLElBQVg7O0FBQ0EsWUFBSSxRQUFRLElBQUUsSUFBZCxFQUFvQjtBQUNuQixpQkFBUSxRQUFRLENBQUMsSUFBakI7QUFDQTtBQUNGLE9BTEQsRUFIb0IsQ0FVckI7QUFDQztBQUNBO0FBQ0Q7QUFFQSxLQXJCaUIsQ0FzQnBCOztBQUVEOztBQUFBO0FBQ0QsRUFBQSxPQUFPLENBQUMsU0FBUixHQUFvQixJQUFwQjtBQUNBLFNBQU8sT0FBUDtBQUVILENBL0JvQixDQUFyQjtBQWlDQSxHQUFHLENBQUMsTUFBSixDQUFXLGFBQVgsRUFBeUIsQ0FBQyxZQUFELEVBQWMsY0FBZCxFQUE4QixVQUFVLFVBQVYsRUFBcUIsWUFBckIsRUFBbUM7QUFDeEYsTUFBSSxLQUFLLEdBQUcsRUFBWjs7QUFFQSxXQUFTLFdBQVQsQ0FBc0IsS0FBdEIsRUFBNEIsTUFBNUIsRUFDQTtBQUNHLFFBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDOztBQUNDLFFBQUksS0FBSyxDQUFDLElBQUksR0FBQyxNQUFMLEdBQVksS0FBYixDQUFULEVBQThCO0FBQzVCO0FBQ0EsYUFBTyxLQUFLLENBQUMsSUFBSSxHQUFDLE1BQUwsR0FBWSxLQUFiLENBQVo7QUFDRDs7QUFDRCxJQUFBLEtBQUssQ0FBQyxJQUFJLEdBQUMsTUFBTCxHQUFZLEtBQWIsQ0FBTCxHQUEwQixtQkFBMUI7O0FBQ0UsUUFBSSxNQUFNLElBQUUsU0FBUixJQUFxQixLQUFLLElBQUUsU0FBaEMsRUFBMkM7QUFFekMsTUFBQSxZQUFZLENBQUMsYUFBYixDQUEyQixNQUEzQixFQUFrQyxJQUFsQyxFQUF1QyxLQUF2QyxFQUE2QyxDQUE3QyxFQUFnRCxJQUFoRCxDQUFxRCxVQUFVLElBQVYsRUFBZTtBQUVsRSxRQUFBLEtBQUssQ0FBQyxJQUFJLEdBQUMsTUFBTCxHQUFZLEtBQWIsQ0FBTCxHQUEyQixJQUEzQjtBQUNELE9BSEQ7QUFLRCxLQVBELE1BT007QUFFSCxNQUFBLEtBQUssQ0FBQyxJQUFJLEdBQUMsTUFBTCxHQUFZLEtBQWIsQ0FBTCxHQUEwQixFQUExQjtBQUNGO0FBR0o7O0FBQUE7QUFDRCxFQUFBLFdBQVcsQ0FBQyxTQUFaLEdBQXdCLElBQXhCO0FBQ0EsU0FBTyxXQUFQO0FBRUgsQ0E1QndCLENBQXpCO0FBOEJBLEdBQUcsQ0FBQyxNQUFKLENBQVcsZUFBWCxFQUEyQixDQUFDLFlBQUQsRUFBYyxjQUFkLEVBQThCLFVBQVUsVUFBVixFQUFxQixZQUFyQixFQUFtQztBQUN6RixNQUFJLEtBQUssR0FBRyxFQUFaOztBQUNELFdBQVMsYUFBVCxDQUF3QixLQUF4QixFQUE4QixNQUE5QixFQUFzQztBQUVuQyxRQUFJLElBQUksR0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQzs7QUFDQyxRQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUMsTUFBTCxHQUFZLEtBQWIsQ0FBVCxFQUE4QjtBQUM1QjtBQUNBLGFBQU8sS0FBSyxDQUFDLElBQUksR0FBQyxNQUFMLEdBQVksS0FBYixDQUFaO0FBQ0Q7O0FBQ0QsSUFBQSxLQUFLLENBQUMsSUFBSSxHQUFDLE1BQUwsR0FBWSxLQUFiLENBQUwsR0FBMEIsbUJBQTFCOztBQUNBLFFBQUksTUFBTSxJQUFFLFNBQVIsSUFBcUIsS0FBSyxJQUFFLFNBQWhDLEVBQTJDO0FBR3hDLE1BQUEsWUFBWSxDQUFDLG1CQUFiLENBQWlDLE1BQWpDLEVBQXdDLElBQXhDLEVBQTZDLEtBQTdDLEVBQW1ELENBQW5ELEVBQXNELElBQXRELENBQTJELFVBQVUsSUFBVixFQUFlO0FBRXZFLFFBQUEsS0FBSyxDQUFDLElBQUksR0FBQyxNQUFMLEdBQVksS0FBYixDQUFMLEdBQTJCLElBQTNCO0FBQ0YsT0FIRDtBQUlGLEtBUEQsTUFPSztBQUVBLE1BQUEsS0FBSyxDQUFDLElBQUksR0FBQyxNQUFMLEdBQVksS0FBYixDQUFMLEdBQTBCLEVBQTFCO0FBQ0Y7QUFJSjs7QUFBQTtBQUNELEVBQUEsYUFBYSxDQUFDLFNBQWQsR0FBMEIsSUFBMUI7QUFDQSxTQUFPLGFBQVA7QUFDSCxDQTNCMEIsQ0FBM0I7QUE4QkEsR0FBRyxDQUFDLE1BQUosQ0FBVyxDQUFDLFVBQUQsRUFBWSxnQkFBWixFQUE4QixvQkFBOUIsRUFBbUQsbUJBQW5ELEVBQXVFLGVBQXZFLEVBQXVGLHFCQUF2RixFQUE2RyxrQkFBN0csRUFBZ0ksaUJBQWhJLEVBQ0MsVUFBUyxRQUFULEVBQWtCLGNBQWxCLEVBQWtDLGtCQUFsQyxFQUFxRCxpQkFBckQsRUFBdUUsYUFBdkUsRUFBcUYsbUJBQXJGLEVBQXlHLGdCQUF6RyxFQUEwSCxlQUExSCxFQUEySTtBQUVqSixFQUFBLEdBQUcsQ0FBQyxRQUFKLEdBQWU7QUFDZixJQUFBLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQyxRQURqQjtBQUVmLElBQUEsU0FBUyxFQUFFLGdCQUFnQixDQUFDLFNBRmI7QUFHZixJQUFBLE1BQU0sRUFBRSxlQUFlLENBQUMsUUFIVDtBQUlmLElBQUEsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUpIO0FBS2YsSUFBQSxPQUFPLEVBQUUsUUFBUSxDQUFDO0FBTEgsR0FBZjtBQVFGLEVBQUEsYUFBYSxDQUFDLFFBQWQsQ0FBdUIsY0FBdkIsR0FBd0MsV0FBeEM7QUFDQSxFQUFBLGFBQWEsQ0FBQyxRQUFkLENBQXVCLGNBQXZCLEdBQXdDLGFBQXhDLENBWG1KLENBY3BKO0FBQ0E7QUFDQTs7QUFFRCxFQUFBLGNBQWMsQ0FDWCxLQURILENBQ1MsS0FEVCxFQUNnQjtBQUNQLGdCQUFVLElBREg7QUFFUDtBQUNBLElBQUEsR0FBRyxFQUFFLGtCQUFVLE1BQVYsQ0FBaUIsT0FIZjtBQUlSLElBQUEsUUFBUSxFQUFFLHFCQUpGO0FBS04sSUFBQSxJQUFJLEVBQUU7QUFDTixNQUFBLFlBQVksRUFBRSxJQURSLENBQ2E7O0FBRGI7QUFMQSxHQURoQixFQVVELEtBVkMsQ0FVSyxVQVZMLEVBVWlCO0FBQ1AsSUFBQSxHQUFHLEVBQUMsSUFERztBQUVSLGdCQUFVLElBRkY7QUFHUCxJQUFBLEtBQUssRUFBRTtBQUNILGlCQUFXO0FBQ1AsUUFBQSxXQUFXLEVBQUUsMENBRE4sQ0FFUjs7QUFGUSxPQURSO0FBS0gsa0JBQVk7QUFDUixRQUFBLFdBQVcsRUFBRSwwQ0FETCxDQUVSOztBQUZRLE9BTFQ7QUFVTCxpQkFBVztBQUNULFFBQUEsV0FBVyxFQUFFLDBDQURKLENBRVY7O0FBRlU7QUFWTjtBQUhBLEdBVmpCLEVBNkJELEtBN0JDLENBNkJLLFlBN0JMLEVBNkJtQjtBQUNULElBQUEsR0FBRyxFQUFDLEtBREs7QUFFVixnQkFBVSxJQUZBO0FBR1QsSUFBQSxLQUFLLEVBQ0w7QUFDSSxrQkFBWTtBQUNSLFFBQUEsV0FBVyxFQUFFO0FBREwsT0FEaEI7QUFLRyxpQkFBVztBQUNWLFFBQUEsV0FBVyxFQUFFO0FBREg7QUFMZDtBQUpTLEdBN0JuQixFQTRDRCxLQTVDQyxDQTRDSyxZQTVDTCxFQTRDbUI7QUFDVCxJQUFBLEdBQUcsRUFBQyxJQURLO0FBRVYsZ0JBQVUsSUFGQTtBQUdULElBQUEsS0FBSyxFQUFFO0FBQ0gsaUJBQVc7QUFDUCxRQUFBLFdBQVcsRUFBRSwwQ0FETixDQUVSOztBQUZRLE9BRFI7QUFLSCxrQkFBWTtBQUNSLFFBQUEsV0FBVyxFQUFFLDBDQURMLENBRVI7O0FBRlEsT0FMVDtBQVVMLGlCQUFXO0FBQ1QsUUFBQSxXQUFXLEVBQUUsMENBREosQ0FFVjs7QUFGVTtBQVZOO0FBSEUsR0E1Q25CLEVBZ0VELEtBaEVDLENBZ0VLLHVCQWhFTCxFQWdFOEI7QUFDcEIsSUFBQSxHQUFHLEVBQUMsYUFEZ0I7QUFFbEIsSUFBQSxLQUFLLEVBQUU7QUFFTixrQkFBWTtBQUNQLFFBQUEsV0FBVyxFQUFFLDhDQUROO0FBRVAsUUFBQSxVQUFVLEVBQUU7QUFGTDtBQUliO0FBQ2Q7QUFDQTtBQUNBOztBQVRxQjtBQUZXLEdBaEU5QixFQWlGRCxLQWpGQyxDQWlGSyxpQkFqRkwsRUFpRndCO0FBQ2QsSUFBQSxHQUFHLEVBQUMsR0FEVTtBQUVaLElBQUEsS0FBSyxFQUFFO0FBRU4sa0JBQVk7QUFDUCxRQUFBLFdBQVcsRUFBRSx3Q0FETjtBQUVQLFFBQUEsVUFBVSxFQUFFO0FBRkw7QUFJYjtBQUNkO0FBQ0E7QUFDQTs7QUFUcUI7QUFGSyxHQWpGeEIsRUFrR0QsS0FsR0MsQ0FrR0ssd0JBbEdMLEVBa0crQjtBQUNyQixJQUFBLEdBQUcsRUFBQyxXQURpQjtBQUVuQixJQUFBLEtBQUssRUFBRTtBQUNOLGtCQUFZO0FBQ1AsUUFBQSxXQUFXLEVBQUUsK0NBRE47QUFFUCxRQUFBLFVBQVUsRUFBRTtBQUZMO0FBSWI7QUFDZDtBQUNBO0FBQ0E7O0FBUnFCO0FBRlksR0FsRy9CLEVBaUhELEtBakhDLENBaUhLLG1CQWpITCxFQWlIMEI7QUFDaEIsSUFBQSxHQUFHLEVBQUMsU0FEWTtBQUVkLElBQUEsS0FBSyxFQUFFO0FBRU4sa0JBQVk7QUFDUCxRQUFBLFdBQVcsRUFBRSwwQ0FETjtBQUVQLFFBQUEsVUFBVSxFQUFFO0FBRkw7QUFJYjtBQUNkO0FBQ0E7QUFDQTs7QUFUcUI7QUFGTyxHQWpIMUIsRUFrSUQsS0FsSUMsQ0FrSUssMkJBbElMLEVBa0lrQztBQUN4QixJQUFBLEdBQUcsRUFBQyxZQURvQjtBQUV4QixJQUFBLEtBQUssRUFBRTtBQUNMLGtCQUFZO0FBQ04sUUFBQSxXQUFXLEVBQUUscURBRFA7QUFFTixRQUFBLFVBQVUsRUFBRTtBQUZOO0FBRFA7QUFGaUIsR0FsSWxDLEVBNElELEtBNUlDLENBNElLLG9CQTVJTCxFQTRJMkI7QUFDZixnQkFBVSxJQURLO0FBRWYsSUFBQSxHQUFHLEVBQUMsWUFGVztBQUdmLElBQUEsS0FBSyxFQUFFO0FBQ0wsa0JBQVk7QUFDUixRQUFBLFdBQVcsRUFBRTtBQURMO0FBRFA7QUFIUSxHQTVJM0IsRUFxSkQsS0FySkMsQ0FxSkssc0JBckpMLEVBcUo2QjtBQUNqQixnQkFBVSxJQURPO0FBRWpCLElBQUEsR0FBRyxFQUFDLFlBRmE7QUFHakIsSUFBQSxLQUFLLEVBQUU7QUFDUDtBQUNkO0FBQ0E7QUFDQTtBQUNnQixrQkFBWTtBQUNSLFFBQUEsV0FBVyxFQUFFLDBDQURMLENBRVI7O0FBRlE7QUFJZDtBQUNkO0FBQ0E7QUFDQTtBQUNBOztBQWJxQjtBQUhVLEdBcko3QixFQXlLRCxLQXpLQyxDQXlLSyw2QkF6S0wsRUF5S29DO0FBQ3pCLElBQUEsR0FBRyxFQUFDLDBCQURxQjtBQUV4QixJQUFBLEtBQUssRUFBRTtBQUNKLGtCQUFZO0FBQ1QsUUFBQSxXQUFXLEVBQUUsa0RBREo7QUFFVCxRQUFBLFVBQVUsRUFBRTtBQUZIO0FBRFIsS0FGaUI7QUFTdEIsSUFBQSxNQUFNLEVBQUU7QUFDUixNQUFBLFdBQVcsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE0sT0FETDtBQUlSLE1BQUEsRUFBRSxFQUFFO0FBQ0osUUFBQSxLQUFLLEVBQUU7QUFESCxPQUpJO0FBU1IsTUFBQSxPQUFPLEVBQUU7QUFDVCxRQUFBLEtBQUssRUFBRTtBQURFLE9BVEQ7QUFhTixNQUFBLFNBQVMsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE0sT0FiTDtBQWlCUixNQUFBLFdBQVcsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE07QUFqQkw7QUFUYyxHQXpLcEMsRUF5TUEsS0F6TUEsQ0F5TU0sMkJBek1OLEVBeU1tQztBQUMxQixJQUFBLEdBQUcsRUFBQyxFQURzQjtBQUV2QixJQUFBLEtBQUssRUFBRTtBQUNKLGtCQUFZO0FBQ1QsUUFBQSxXQUFXLEVBQUUsb0RBREo7QUFFVCxRQUFBLFVBQVUsRUFBRTtBQUZIO0FBSVo7QUFDakI7QUFDQTtBQUNBOztBQVJxQixLQUZnQjtBQWN0QixJQUFBLE1BQU0sRUFBRTtBQUNQLE1BQUEsT0FBTyxFQUFFO0FBQ1QsUUFBQSxLQUFLLEVBQUU7QUFERSxPQURGO0FBS0wsTUFBQSxTQUFTLEVBQUU7QUFDYixRQUFBLEtBQUssRUFBRTtBQURNLE9BTE47QUFTUCxNQUFBLFdBQVcsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE0sT0FUTjtBQWFQLE1BQUEsYUFBYSxFQUFFO0FBQ2YsUUFBQSxLQUFLLEVBQUU7QUFEUSxPQWJSO0FBaUJQLE1BQUEsYUFBYSxFQUFFO0FBQ2YsUUFBQSxLQUFLLEVBQUU7QUFEUSxPQWpCUjtBQXFCUCxNQUFBLE1BQU0sRUFBRTtBQUNSLFFBQUEsS0FBSyxFQUFFO0FBREM7QUFyQkQ7QUFkYyxHQXpNbkMsRUFrUEEsS0FsUEEsQ0FrUE0sMEJBbFBOLEVBa1BrQztBQUN6QixJQUFBLEdBQUcsRUFBQyxNQURxQjtBQUV0QixJQUFBLEtBQUssRUFBRTtBQUNKLGtCQUFZO0FBQ1QsUUFBQSxXQUFXLEVBQUUsbURBREo7QUFFVixRQUFBLFVBQVUsRUFBRTtBQUZGO0FBRFIsS0FGZTtBQVFsQixJQUFBLE1BQU0sRUFBRTtBQUNWLE1BQUEsYUFBYSxFQUFFO0FBQ2YsUUFBQSxLQUFLLEVBQUU7QUFEUSxPQURMO0FBS1IsTUFBQSxTQUFTLEVBQUU7QUFDYixRQUFBLEtBQUssRUFBRTtBQURNLE9BTEg7QUFTVixNQUFBLFdBQVcsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE0sT0FUSDtBQWFWLE1BQUEsYUFBYSxFQUFFO0FBQ2YsUUFBQSxLQUFLLEVBQUU7QUFEUSxPQWJMO0FBaUJWLE1BQUEsTUFBTSxFQUFFO0FBQ1IsUUFBQSxLQUFLLEVBQUU7QUFEQztBQWpCRTtBQVJVLEdBbFBsQyxFQWtSQSxLQWxSQSxDQWtSTSwyQkFsUk4sRUFrUm1DO0FBQzFCLElBQUEsR0FBRyxFQUFDLFdBRHNCO0FBRXZCLElBQUEsS0FBSyxFQUFFO0FBQ0osa0JBQVk7QUFDVCxRQUFBLFdBQVcsRUFBRSxvREFESjtBQUVWLFFBQUEsVUFBVSxFQUFFO0FBRkY7QUFJWjtBQUNqQjtBQUNBO0FBQ0E7O0FBUnFCLEtBRmdCO0FBWXZCLElBQUEsTUFBTSxFQUFFO0FBQ04sTUFBQSxFQUFFLEVBQUU7QUFDSixRQUFBLEtBQUssRUFBRTtBQURILE9BREU7QUFLTixNQUFBLFVBQVUsRUFBRTtBQUNaLFFBQUEsS0FBSyxFQUFFO0FBREssT0FMTjtBQVNKLE1BQUEsU0FBUyxFQUFFO0FBQ2IsUUFBQSxLQUFLLEVBQUU7QUFETSxPQVRQO0FBYU4sTUFBQSxXQUFXLEVBQUU7QUFDYixRQUFBLEtBQUssRUFBRTtBQURNO0FBYlA7QUFaZSxHQWxSbkMsRUFpVEEsS0FqVEEsQ0FpVE0sMkJBalROLEVBaVRtQztBQUMxQixJQUFBLEdBQUcsRUFBQyxXQURzQjtBQUV2QixJQUFBLEtBQUssRUFBRTtBQUNKLGtCQUFZO0FBQ1QsUUFBQSxXQUFXLEVBQUUsb0RBREo7QUFFVixRQUFBLFVBQVUsRUFBRTtBQUZGO0FBRFIsS0FGZ0I7QUFTdkIsSUFBQSxNQUFNLEVBQUU7QUFDTixNQUFBLEVBQUUsRUFBRTtBQUNKLFFBQUEsS0FBSyxFQUFFO0FBREgsT0FERTtBQUtOLE1BQUEsVUFBVSxFQUFDO0FBQ1YsUUFBQSxLQUFLLEVBQUM7QUFESSxPQUxMO0FBUU4sTUFBQSxhQUFhLEVBQUM7QUFDYixRQUFBLEtBQUssRUFBQztBQURPO0FBUlI7QUFUZSxHQWpUbkMsRUF1VUQsS0F2VUMsQ0F1VUssMkJBdlVMLEVBdVVrQztBQUN6QixJQUFBLEdBQUcsRUFBQyxXQURxQjtBQUV0QixJQUFBLEtBQUssRUFBRTtBQUVKLGtCQUFZO0FBQ1gsUUFBQSxXQUFXLEVBQUUsb0RBREY7QUFFWCxRQUFBLFVBQVUsRUFBRTtBQUZEO0FBSVo7QUFDakI7QUFDQTtBQUNBOztBQVRxQixLQUZlO0FBYXRCLElBQUEsTUFBTSxFQUFFO0FBQ04sTUFBQSxFQUFFLEVBQUU7QUFDSixRQUFBLEtBQUssRUFBRTtBQURILE9BREU7QUFLTixNQUFBLE9BQU8sRUFBRTtBQUNULFFBQUEsS0FBSyxFQUFFO0FBREUsT0FMSDtBQVNKLE1BQUEsU0FBUyxFQUFFO0FBQ2IsUUFBQSxLQUFLLEVBQUU7QUFETSxPQVRQO0FBYU4sTUFBQSxXQUFXLEVBQUU7QUFDYixRQUFBLEtBQUssRUFBRTtBQURNLE9BYlA7QUFpQk4sTUFBQSxlQUFlLEVBQUU7QUFDakIsUUFBQSxLQUFLLEVBQUU7QUFEVSxPQWpCWDtBQW9CTixNQUFBLFdBQVcsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE07QUFwQlA7QUFiYyxHQXZVbEMsRUE4V0QsS0E5V0MsQ0E4V0ssK0JBOVdMLEVBOFdzQztBQUM3QixJQUFBLEdBQUcsRUFBQyxlQUR5QjtBQUcxQixJQUFBLEtBQUssRUFBRTtBQUVKLGtCQUFZO0FBQ1gsUUFBQSxXQUFXLEVBQUUsdURBREY7QUFFWCxRQUFBLFVBQVUsRUFBRTtBQUZEO0FBSWI7QUFDaEI7QUFDQTtBQUNBOztBQVRxQixLQUhtQjtBQWMxQixJQUFBLE1BQU0sRUFBRTtBQUNOLE1BQUEsRUFBRSxFQUFFO0FBQ0osUUFBQSxLQUFLLEVBQUU7QUFESCxPQURFO0FBS04sTUFBQSxPQUFPLEVBQUU7QUFDVCxRQUFBLEtBQUssRUFBRTtBQURFLE9BTEg7QUFTSixNQUFBLFNBQVMsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE0sT0FUUDtBQWFOLE1BQUEsV0FBVyxFQUFFO0FBQ2IsUUFBQSxLQUFLLEVBQUU7QUFETTtBQWJQO0FBZGtCLEdBOVd0QyxFQWdaRCxLQWhaQyxDQWdaSywrQkFoWkwsRUFnWnNDO0FBQzdCLElBQUEsR0FBRyxFQUFDLGVBRHlCO0FBRTFCLElBQUEsS0FBSyxFQUFFO0FBQ0osa0JBQVk7QUFDWCxRQUFBLFdBQVcsRUFBRSxvREFERjtBQUVYLFFBQUEsVUFBVSxFQUFFO0FBRkQ7QUFJWjtBQUNqQjtBQUNBO0FBQ0E7O0FBUnFCLEtBRm1CO0FBWTFCLElBQUEsTUFBTSxFQUFFO0FBQ04sTUFBQSxFQUFFLEVBQUU7QUFDSixRQUFBLEtBQUssRUFBRTtBQURILE9BREU7QUFJTCxNQUFBLE9BQU8sRUFBRTtBQUNWLFFBQUEsS0FBSyxFQUFFO0FBREcsT0FKSjtBQVFKLE1BQUEsU0FBUyxFQUFFO0FBQ2IsUUFBQSxLQUFLLEVBQUU7QUFETSxPQVJQO0FBWU4sTUFBQSxXQUFXLEVBQUU7QUFDYixRQUFBLEtBQUssRUFBRTtBQURNO0FBWlA7QUFaa0IsR0FoWnRDLEVBOGFBLEtBOWFBLENBOGFNLDJCQTlhTixFQThhbUM7QUFDMUIsSUFBQSxHQUFHLEVBQUMsWUFEc0I7QUFHdkIsSUFBQSxLQUFLLEVBQUU7QUFDSixrQkFBWTtBQUNULFFBQUEsV0FBVyxFQUFFLG9EQURKO0FBRVQsUUFBQSxVQUFVLEVBQUU7QUFGSDtBQUlaO0FBQ2pCO0FBQ0E7QUFDQTs7QUFScUIsS0FIZ0I7QUFlckIsSUFBQSxNQUFNLEVBQUU7QUFDUixNQUFBLEVBQUUsRUFBRTtBQUNKLFFBQUEsS0FBSyxFQUFFO0FBREgsT0FESTtBQUtSLE1BQUEsT0FBTyxFQUFFO0FBQ1QsUUFBQSxLQUFLLEVBQUU7QUFERSxPQUxEO0FBU04sTUFBQSxTQUFTLEVBQUU7QUFDYixRQUFBLEtBQUssRUFBRTtBQURNLE9BVEw7QUFhUixNQUFBLFdBQVcsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE07QUFiTDtBQWZhLEdBOWFuQyxFQWdkQSxLQWhkQSxDQWdkTSxrQ0FoZE4sRUFnZDBDO0FBQ2pDLElBQUEsR0FBRyxFQUFDLCtCQUQ2QjtBQUc5QixJQUFBLEtBQUssRUFBRTtBQUNKLGtCQUFZO0FBQ1QsUUFBQSxXQUFXLEVBQUUsMERBREo7QUFFVCxRQUFBLFVBQVUsRUFBRTtBQUZIO0FBSVo7QUFDakI7QUFDQTtBQUNBOztBQVJxQixLQUh1QjtBQWU1QixJQUFBLE1BQU0sRUFBRTtBQUNSLE1BQUEsV0FBVyxFQUFFO0FBQ2IsUUFBQSxLQUFLLEVBQUU7QUFETSxPQURMO0FBS1IsTUFBQSxFQUFFLEVBQUU7QUFDSixRQUFBLEtBQUssRUFBRTtBQURILE9BTEk7QUFTUixNQUFBLE9BQU8sRUFBRTtBQUNULFFBQUEsS0FBSyxFQUFFO0FBREU7QUFURDtBQWZvQixHQWhkMUMsRUE4ZUMsS0E5ZUQsQ0E4ZU8sd0NBOWVQLEVBOGVpRDtBQUN4QyxJQUFBLEdBQUcsRUFBQyxvQkFEb0M7QUFHckMsSUFBQSxLQUFLLEVBQUU7QUFDSixrQkFBWTtBQUNULFFBQUEsV0FBVyxFQUFFLHdEQURKO0FBRVQsUUFBQSxVQUFVLEVBQUU7QUFGSDtBQUlaO0FBQ2pCO0FBQ0E7QUFDQTs7QUFScUIsS0FIOEI7QUFlcEMsSUFBQSxNQUFNLEVBQUU7QUFFUCxNQUFBLE9BQU8sRUFBRTtBQUNULFFBQUEsS0FBSyxFQUFFO0FBREUsT0FGRjtBQU1MLE1BQUEsU0FBUyxFQUFFO0FBQ2IsUUFBQSxLQUFLLEVBQUU7QUFETSxPQU5OO0FBVVAsTUFBQSxXQUFXLEVBQUU7QUFDYixRQUFBLEtBQUssRUFBRTtBQURNO0FBVk47QUFmNEIsR0E5ZWpELEVBOGdCQyxLQTlnQkQsQ0E4Z0JPLGtDQTlnQlAsRUE4Z0IyQztBQUNsQyxJQUFBLEdBQUcsRUFBQyxrQkFEOEI7QUFHL0IsSUFBQSxLQUFLLEVBQUU7QUFDSixrQkFBWTtBQUNULFFBQUEsV0FBVyxFQUFFLHlEQURKO0FBRVQsUUFBQSxVQUFVLEVBQUU7QUFGSDtBQUlaO0FBQ2pCO0FBQ0E7QUFDQTs7QUFScUIsS0FId0I7QUFlOUIsSUFBQSxNQUFNLEVBQUU7QUFFUCxNQUFBLEVBQUUsRUFBRTtBQUNKLFFBQUEsS0FBSyxFQUFFO0FBREg7QUFGRztBQWZzQixHQTlnQjNDLEVBc2lCRCxLQXRpQkMsQ0FzaUJLLDZDQXRpQkwsRUFzaUJvRDtBQUN6QyxJQUFBLEdBQUcsRUFBQyw2QkFEcUM7QUFFeEMsSUFBQSxLQUFLLEVBQUU7QUFDSixrQkFBWTtBQUNULFFBQUEsV0FBVyxFQUFFLDZEQURKO0FBRVQsUUFBQSxVQUFVLEVBQUU7QUFGSDtBQURSLEtBRmlDO0FBU3hDLElBQUEsTUFBTSxFQUFFO0FBQ04sTUFBQSxTQUFTLEVBQUU7QUFDWCxRQUFBLEtBQUssRUFBRTtBQURJLE9BREw7QUFLTixNQUFBLFdBQVcsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE0sT0FMUDtBQVNOLE1BQUEsRUFBRSxFQUFFO0FBQ0osUUFBQSxLQUFLLEVBQUU7QUFESDtBQVRFO0FBVGdDLEdBdGlCcEQsRUFna0JELEtBaGtCQyxDQWdrQkssMENBaGtCTCxFQWdrQmlEO0FBQ3RDLElBQUEsR0FBRyxFQUFDLDBCQURrQztBQUVyQyxJQUFBLEtBQUssRUFBRTtBQUNKLGtCQUFZO0FBQ1QsUUFBQSxXQUFXLEVBQUUseURBREo7QUFFVCxRQUFBLFVBQVUsRUFBRTtBQUZIO0FBRFIsS0FGOEI7QUFTckMsSUFBQSxNQUFNLEVBQUU7QUFDTixNQUFBLEVBQUUsRUFBRTtBQUNKLFFBQUEsS0FBSyxFQUFFO0FBREgsT0FERTtBQUtOLE1BQUEsZUFBZSxFQUFFO0FBQ2pCLFFBQUEsS0FBSyxFQUFFO0FBRFU7QUFMWDtBQVQ2QixHQWhrQmpELEVBc2xCRCxLQXRsQkMsQ0FzbEJLLDZDQXRsQkwsRUFzbEJvRDtBQUN6QyxJQUFBLEdBQUcsRUFBQyw2QkFEcUM7QUFFeEMsSUFBQSxLQUFLLEVBQUU7QUFDSixrQkFBWTtBQUNULFFBQUEsV0FBVyxFQUFFLDZEQURKO0FBRVQsUUFBQSxVQUFVLEVBQUU7QUFGSDtBQURSLEtBRmlDO0FBU3hDLElBQUEsTUFBTSxFQUFFO0FBQ04sTUFBQSxTQUFTLEVBQUU7QUFDWCxRQUFBLEtBQUssRUFBRTtBQURJLE9BREw7QUFLTixNQUFBLFdBQVcsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE0sT0FMUDtBQVNOLE1BQUEsRUFBRSxFQUFFO0FBQ0osUUFBQSxLQUFLLEVBQUU7QUFESDtBQVRFO0FBVGdDLEdBdGxCcEQsRUFnbkJELEtBaG5CQyxDQWduQkssOENBaG5CTCxFQWduQnFEO0FBQzFDLElBQUEsR0FBRyxFQUFDLDhCQURzQztBQUV6QyxJQUFBLEtBQUssRUFBRTtBQUNKLGtCQUFZO0FBQ1QsUUFBQSxXQUFXLEVBQUUsOERBREo7QUFFVCxRQUFBLFVBQVUsRUFBRTtBQUZIO0FBRFIsS0FGa0M7QUFTekMsSUFBQSxNQUFNLEVBQUU7QUFDTixNQUFBLFNBQVMsRUFBRTtBQUNYLFFBQUEsS0FBSyxFQUFFO0FBREksT0FETDtBQUtOLE1BQUEsV0FBVyxFQUFFO0FBQ2IsUUFBQSxLQUFLLEVBQUU7QUFETSxPQUxQO0FBU04sTUFBQSxFQUFFLEVBQUU7QUFDSixRQUFBLEtBQUssRUFBRTtBQURIO0FBVEU7QUFUaUMsR0FobkJyRCxFQTBvQkQsS0Exb0JDLENBMG9CSyx1Q0Exb0JMLEVBMG9COEM7QUFDbkMsSUFBQSxHQUFHLEVBQUMsdUJBRCtCO0FBRWxDLElBQUEsS0FBSyxFQUFFO0FBQ0osa0JBQVk7QUFDVCxRQUFBLFdBQVcsRUFBRSwwREFESjtBQUVULFFBQUEsVUFBVSxFQUFFO0FBRkg7QUFEUixLQUYyQjtBQVNsQyxJQUFBLE1BQU0sRUFBRTtBQUVOLE1BQUEsRUFBRSxFQUFFO0FBQ0osUUFBQSxLQUFLLEVBQUU7QUFESDtBQUZFO0FBVDBCLEdBMW9COUMsRUE2cEJELEtBN3BCQyxDQTZwQkssZ0RBN3BCTCxFQTZwQnVEO0FBQzVDLElBQUEsR0FBRyxFQUFDLGdDQUR3QztBQUUzQyxJQUFBLEtBQUssRUFBRTtBQUNKLGtCQUFZO0FBQ1QsUUFBQSxXQUFXLEVBQUUsK0RBREo7QUFFVCxRQUFBLFVBQVUsRUFBRTtBQUZIO0FBRFIsS0FGb0M7QUFTM0MsSUFBQSxNQUFNLEVBQUU7QUFDTixNQUFBLEVBQUUsRUFBRTtBQUNKLFFBQUEsS0FBSyxFQUFFO0FBREg7QUFERTtBQVRtQyxHQTdwQnZELEVBK3FCQyxLQS9xQkQsQ0ErcUJPLDRCQS9xQlAsRUErcUJxQztBQUMxQixJQUFBLEdBQUcsRUFBQyxRQURzQjtBQUV6QixJQUFBLEtBQUssRUFBRTtBQUNKLGtCQUFZO0FBQ1QsUUFBQSxXQUFXLEVBQUUsNkNBREo7QUFFVCxRQUFBLFVBQVUsRUFBRTtBQUZIO0FBSVo7QUFDakI7QUFDQTtBQUNBOztBQVJxQixLQUZrQjtBQWN6QixJQUFBLE1BQU0sRUFBRTtBQUNOLE1BQUEsU0FBUyxFQUFFO0FBQ1gsUUFBQSxLQUFLLEVBQUU7QUFESSxPQURMO0FBS04sTUFBQSxXQUFXLEVBQUU7QUFDYixRQUFBLEtBQUssRUFBRTtBQURNO0FBTFA7QUFkaUIsR0EvcUJyQyxFQTBzQkQsS0Exc0JDLENBMHNCSyxpQ0Exc0JMLEVBMHNCd0M7QUFDN0IsSUFBQSxHQUFHLEVBQUMsaUJBRHlCO0FBRTVCLElBQUEsS0FBSyxFQUFFO0FBQ0osa0JBQVk7QUFDVCxRQUFBLFdBQVcsRUFBRSxpREFESjtBQUVULFFBQUEsVUFBVSxFQUFFO0FBRkg7QUFJWjtBQUNqQjtBQUNBO0FBQ0E7O0FBUnFCLEtBRnFCO0FBYzVCLElBQUEsTUFBTSxFQUFFO0FBQ1IsTUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEtBQUssRUFBRTtBQURMLE9BREk7QUFLUixNQUFBLFVBQVUsRUFBRTtBQUNWLFFBQUEsS0FBSyxFQUFFO0FBREcsT0FMSjtBQVNSLE1BQUEsU0FBUyxFQUFFO0FBQ1QsUUFBQSxLQUFLLEVBQUU7QUFERSxPQVRIO0FBYVIsTUFBQSxXQUFXLEVBQUU7QUFDWCxRQUFBLEtBQUssRUFBRTtBQURJO0FBYkw7QUFkb0IsR0Exc0J4QyxFQTR1QkQsS0E1dUJDLENBNHVCSyx1Q0E1dUJMLEVBNHVCOEM7QUFDbkMsSUFBQSxHQUFHLEVBQUMsdUJBRCtCO0FBRWxDLElBQUEsS0FBSyxFQUFFO0FBQ0osa0JBQVk7QUFDVCxRQUFBLFdBQVcsRUFBRSx1REFESjtBQUVULFFBQUEsVUFBVSxFQUFFO0FBRkg7QUFEUixLQUYyQjtBQVVsQyxJQUFBLE1BQU0sRUFBRTtBQUNSLE1BQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxLQUFLLEVBQUU7QUFETCxPQURJO0FBTVAsTUFBQSxTQUFTLEVBQUU7QUFDVixRQUFBLEtBQUssRUFBRTtBQURHLE9BTko7QUFVUCxNQUFBLFVBQVUsRUFBRTtBQUNYLFFBQUEsS0FBSyxFQUFFO0FBREk7QUFWTDtBQVYwQixHQTV1QjlDLEVBc3dCRCxLQXR3QkMsQ0Fzd0JLLHVDQXR3QkwsRUFzd0I4QztBQUNuQyxJQUFBLEdBQUcsRUFBQyxtQkFEK0I7QUFFbEMsSUFBQSxLQUFLLEVBQUU7QUFDSixrQkFBWTtBQUNULFFBQUEsV0FBVyxFQUFFLHVEQURKO0FBRVQsUUFBQSxVQUFVLEVBQUU7QUFGSDtBQUlaO0FBQ2pCO0FBQ0E7QUFDQTs7QUFScUIsS0FGMkI7QUFjbEMsSUFBQSxNQUFNLEVBQUU7QUFDUixNQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsS0FBSyxFQUFFO0FBREwsT0FESTtBQUtMLE1BQUEsT0FBTyxFQUFFO0FBQ1YsUUFBQSxLQUFLLEVBQUU7QUFERyxPQUxKO0FBU0osTUFBQSxTQUFTLEVBQUU7QUFDYixRQUFBLEtBQUssRUFBRTtBQURNLE9BVFA7QUFhTixNQUFBLFdBQVcsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE07QUFiUDtBQWQwQixHQXR3QjlDLEVBd3lCQSxLQXh5QkEsQ0F3eUJNLGtCQXh5Qk4sRUF3eUIwQjtBQUN4QixJQUFBLEdBQUcsRUFBRSxRQURtQjtBQUd4QixnQkFBVTtBQUVWO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBWjRCLEdBeHlCMUIsRUF3ekJELEtBeHpCQyxDQXd6QkssdUJBeHpCTCxFQXd6QjhCO0FBQzVCLElBQUEsR0FBRyxFQUFFLEVBRHVCO0FBRzFCLElBQUEsS0FBSyxFQUFFO0FBQ0csNkJBQXVCO0FBQ25CLFFBQUEsV0FBVyxFQUFFLGdEQURNO0FBRW5CLFFBQUEsVUFBVSxFQUFFO0FBRk87QUFEMUIsS0FIbUI7O0FBVXhCO0FBQ1I7QUFDQTtBQUNBO0FBRVUsSUFBQSxNQUFNLEVBQUU7QUFDSixNQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsS0FBSyxFQUFFO0FBREwsT0FEQTtBQUtELE1BQUEsT0FBTyxFQUFFO0FBQ1YsUUFBQSxLQUFLLEVBQUU7QUFERyxPQUxSO0FBU0EsTUFBQSxTQUFTLEVBQUU7QUFDYixRQUFBLEtBQUssRUFBRTtBQURNLE9BVFg7QUFhRixNQUFBLFdBQVcsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE07QUFiWDtBQWZjLEdBeHpCOUIsRUEyMUJHLEtBMzFCSCxDQTIxQlMsMEJBMzFCVCxFQTIxQnFDO0FBQ25DLElBQUEsR0FBRyxFQUFFLFVBRDhCO0FBRy9CLElBQUEsS0FBSyxFQUFFO0FBQ0UsNkJBQXVCO0FBQ3BCLFFBQUEsV0FBVyxFQUFFLG1EQURPO0FBRXRCLFFBQUEsVUFBVSxFQUFFO0FBRlU7QUFJekI7QUFDZjtBQUNBO0FBQ0E7O0FBUmUsS0FId0I7QUFhakMsSUFBQSxNQUFNLEVBQUU7QUFDQSxNQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsS0FBSyxFQUFFO0FBREwsT0FESjtBQUtHLE1BQUEsT0FBTyxFQUFFO0FBQ1YsUUFBQSxLQUFLLEVBQUU7QUFERyxPQUxaO0FBU0ksTUFBQSxTQUFTLEVBQUU7QUFDYixRQUFBLEtBQUssRUFBRTtBQURNLE9BVGY7QUFhRSxNQUFBLFdBQVcsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE07QUFiZjtBQWJ5QixHQTMxQnJDLEVBODNCRCxLQTkzQkMsQ0E4M0JLLHNCQTkzQkwsRUE4M0I2QjtBQUMzQixJQUFBLEdBQUcsRUFBRSxNQURzQjtBQUd2QixJQUFBLEtBQUssRUFBRTtBQUNFLDZCQUF1QjtBQUN0QixRQUFBLFdBQVcsRUFBRSwrQ0FEUztBQUV0QixRQUFBLFVBQVUsRUFBRTtBQUZVO0FBSXpCO0FBQ2Y7QUFDQTtBQUNBOztBQVJlLEtBSGdCO0FBYXpCLElBQUEsTUFBTSxFQUFFO0FBQ0EsTUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEtBQUssRUFBRTtBQURMLE9BREo7QUFLRyxNQUFBLE9BQU8sRUFBRTtBQUNWLFFBQUEsS0FBSyxFQUFFO0FBREcsT0FMWjtBQVNJLE1BQUEsU0FBUyxFQUFFO0FBQ2IsUUFBQSxLQUFLLEVBQUU7QUFETSxPQVRmO0FBYUUsTUFBQSxXQUFXLEVBQUU7QUFDYixRQUFBLEtBQUssRUFBRTtBQURNO0FBYmY7QUFiaUIsR0E5M0I3QjtBQWk2QkQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFsOEJFLEdBcThCRCxLQXI4QkMsQ0FxOEJLLGlCQXI4QkwsRUFxOEJ3QjtBQUN0QixJQUFBLEdBQUcsRUFBRSxPQURpQjtBQUd0QixnQkFBVSxJQUhZOztBQUt0QjtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0ssSUFBQSxNQUFNLEVBQUU7QUFDQyxNQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsS0FBSyxFQUFFO0FBREwsT0FETDtBQUtJLE1BQUEsT0FBTyxFQUFFO0FBQ1YsUUFBQSxLQUFLLEVBQUU7QUFERyxPQUxiO0FBU0ssTUFBQSxTQUFTLEVBQUU7QUFDYixRQUFBLEtBQUssRUFBRTtBQURNLE9BVGhCO0FBYUcsTUFBQSxXQUFXLEVBQUU7QUFDYixRQUFBLEtBQUssRUFBRTtBQURNO0FBYmhCO0FBYmEsR0FyOEJ4QixFQXUrQkEsS0F2K0JBLENBdStCTSx5QkF2K0JOLEVBdStCaUM7QUFDL0IsSUFBQSxHQUFHLEVBQUUsVUFEMEI7QUFHM0IsSUFBQSxLQUFLLEVBQUU7QUFDRSw2QkFBdUI7QUFDcEIsUUFBQSxXQUFXLEVBQUUsa0RBRE87QUFFdEIsUUFBQSxVQUFVLEVBQUU7QUFGVTtBQUl6QjtBQUNmO0FBQ0E7QUFDQTs7QUFSZSxLQUhvQjtBQWE3QixJQUFBLE1BQU0sRUFBRTtBQUNBLE1BQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxLQUFLLEVBQUU7QUFETCxPQURKO0FBS0csTUFBQSxPQUFPLEVBQUU7QUFDVixRQUFBLEtBQUssRUFBRTtBQURHLE9BTFo7QUFTSSxNQUFBLFNBQVMsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE0sT0FUZjtBQWFFLE1BQUEsV0FBVyxFQUFFO0FBQ2IsUUFBQSxLQUFLLEVBQUU7QUFETTtBQWJmO0FBYnFCLEdBditCakMsRUF5Z0NELEtBemdDQyxDQXlnQ0ssbUJBemdDTCxFQXlnQzBCO0FBQ2pCLElBQUEsR0FBRyxFQUFDLFNBRGE7QUFHZCxJQUFBLEtBQUssRUFBRTtBQUNKLGtCQUFZO0FBQ1QsUUFBQSxXQUFXLEVBQUUsdURBREo7QUFFVCxRQUFBLFVBQVUsRUFBRTtBQUZIO0FBSVo7QUFDakI7QUFDQTtBQUNBOztBQVJxQixLQUhPO0FBZWQsSUFBQSxNQUFNLEVBQUU7QUFDUixNQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsS0FBSyxFQUFFO0FBREwsT0FESTtBQUtMLE1BQUEsT0FBTyxFQUFFO0FBQ1YsUUFBQSxLQUFLLEVBQUU7QUFERyxPQUxKO0FBU0osTUFBQSxTQUFTLEVBQUU7QUFDYixRQUFBLEtBQUssRUFBRTtBQURNLE9BVFA7QUFhTixNQUFBLFdBQVcsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE07QUFiUDtBQWZNLEdBemdDMUIsRUEyaUNELEtBM2lDQyxDQTJpQ0ssa0JBM2lDTCxFQTJpQ3lCO0FBQ2hCLElBQUEsR0FBRyxFQUFDLFFBRFk7QUFFYixJQUFBLEtBQUssRUFBRTtBQUNKLGtCQUFZO0FBQ1QsUUFBQSxXQUFXLEVBQUUsc0RBREo7QUFFVCxRQUFBLFVBQVUsRUFBRTtBQUZIO0FBRFIsS0FGTTtBQVFiLElBQUEsTUFBTSxFQUFFO0FBQ1IsTUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEtBQUssRUFBRTtBQURMLE9BREk7QUFJTCxNQUFBLE9BQU8sRUFBRTtBQUNWLFFBQUEsS0FBSyxFQUFFO0FBREcsT0FKSjtBQVFKLE1BQUEsU0FBUyxFQUFFO0FBQ2IsUUFBQSxLQUFLLEVBQUU7QUFETSxPQVJQO0FBWU4sTUFBQSxXQUFXLEVBQUU7QUFDYixRQUFBLEtBQUssRUFBRTtBQURNO0FBWlA7QUFSSyxHQTNpQ3pCLEVBcWtDRCxLQXJrQ0MsQ0Fxa0NLLDBCQXJrQ0wsRUFxa0NpQztBQUN4QixJQUFBLEdBQUcsRUFBQyxXQURvQjtBQUVyQixJQUFBLEtBQUssRUFBRTtBQUNKLGtCQUFZO0FBQ1QsUUFBQSxXQUFXLEVBQUUsb0RBREo7QUFFVCxRQUFBLFVBQVUsRUFBRTtBQUZIO0FBRFIsS0FGYztBQVFyQixJQUFBLE1BQU0sRUFBRTtBQUNSLE1BQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxLQUFLLEVBQUU7QUFETCxPQURJO0FBSUwsTUFBQSxPQUFPLEVBQUU7QUFDVixRQUFBLEtBQUssRUFBRTtBQURHLE9BSko7QUFPSixNQUFBLFNBQVMsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE0sT0FQUDtBQVVOLE1BQUEsV0FBVyxFQUFFO0FBQ2IsUUFBQSxLQUFLLEVBQUU7QUFETTtBQVZQO0FBUmEsR0Fya0NqQyxFQTRsQ0QsS0E1bENDLENBNGxDSyxnQkE1bENMLEVBNGxDdUI7QUFDckIsSUFBQSxHQUFHLEVBQUUsUUFEZ0I7QUFFckIsZ0JBQVMsSUFGWTtBQUdqQixJQUFBLEtBQUssRUFBRTtBQUNFLGtCQUFZO0FBQ1gsUUFBQSxXQUFXLEVBQUUsMENBREYsQ0FFWDs7QUFGVztBQUlmO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7O0FBVGU7QUFIVSxHQTVsQ3ZCLEVBNm1DRCxLQTdtQ0MsQ0E2bUNLLGtCQTdtQ0wsRUE2bUN5QjtBQUN2QixJQUFBLEdBQUcsRUFBRSxRQURrQjtBQUV2QixnQkFBUyxJQUZjO0FBR25CLElBQUEsS0FBSyxFQUFFO0FBQ0Usa0JBQVk7QUFDWCxRQUFBLFdBQVcsRUFBRSwwQ0FERixDQUVYOztBQUZXO0FBSWY7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFUZTtBQUhZLEdBN21DekIsRUE4bkNELEtBOW5DQyxDQThuQ0ssdUJBOW5DTCxFQThuQzhCO0FBQ3JCLElBQUEsR0FBRyxFQUFDLEdBRGlCO0FBR2xCLElBQUEsS0FBSyxFQUFFO0FBQ0osa0JBQVk7QUFDVCxRQUFBLFdBQVcsRUFBRSw2Q0FESjtBQUVULFFBQUEsVUFBVSxFQUFFO0FBRkg7QUFJYjtBQUNoQjtBQUNBO0FBQ0E7O0FBUnFCLEtBSFc7QUFjaEIsSUFBQSxNQUFNLEVBQUU7QUFFVixNQUFBLE9BQU8sRUFBRTtBQUNQLFFBQUEsS0FBSyxFQUFFO0FBREEsT0FGQztBQU1OLE1BQUEsU0FBUyxFQUFFO0FBQ2IsUUFBQSxLQUFLLEVBQUU7QUFETSxPQU5MO0FBVVIsTUFBQSxXQUFXLEVBQUU7QUFDYixRQUFBLEtBQUssRUFBRTtBQURNO0FBVkw7QUFkUSxHQTluQzlCLEVBNnBDRCxLQTdwQ0MsQ0E2cENLLHVCQTdwQ0wsRUE2cEM4QjtBQUNyQixJQUFBLEdBQUcsRUFBQyxxQkFEaUI7QUFHbEIsSUFBQSxLQUFLLEVBQUU7QUFFSixrQkFBWTtBQUNYLFFBQUEsV0FBVyxFQUFFLDZDQURGO0FBRVgsUUFBQSxVQUFVLEVBQUU7QUFGRCxPQUZSO0FBTUosY0FBUTtBQUNMLFFBQUEsV0FBVyxFQUFFLCtDQURSO0FBRU4sUUFBQSxVQUFVLEVBQUU7QUFGTjtBQU5KLEtBSFc7QUFjbEIsSUFBQSxNQUFNLEVBQUU7QUFDTixNQUFBLEVBQUUsRUFBRTtBQUNKLFFBQUEsS0FBSyxFQUFFO0FBREgsT0FERTtBQUtOLE1BQUEsUUFBUSxFQUFFO0FBQ1YsUUFBQSxLQUFLLEVBQUU7QUFERyxPQUxKO0FBVUwsTUFBQSxPQUFPLEVBQUU7QUFDVixRQUFBLEtBQUssRUFBRTtBQURHLE9BVko7QUFjSixNQUFBLFNBQVMsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE0sT0FkUDtBQWtCTixNQUFBLFdBQVcsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE0sT0FsQlA7QUFzQk4sTUFBQSxRQUFRLEVBQUM7QUFBQyxRQUFBLEtBQUssRUFBRTtBQUFSO0FBdEJIO0FBZFUsR0E3cEM5QixFQW9zQ0QsS0Fwc0NDLENBb3NDSyxzQkFwc0NMLEVBb3NDNkI7QUFDcEIsSUFBQSxHQUFHLEVBQUMsTUFEZ0I7QUFHakIsSUFBQSxLQUFLLEVBQUU7QUFDSixrQkFBWTtBQUNULFFBQUEsV0FBVyxFQUFFLDRDQURKO0FBRVQsUUFBQSxVQUFVLEVBQUU7QUFGSDtBQUliO0FBQ2hCO0FBQ0E7QUFDQTs7QUFScUIsS0FIVTtBQWVqQixJQUFBLE1BQU0sRUFBRTtBQUNSLE1BQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxLQUFLLEVBQUU7QUFETCxPQURJO0FBS0wsTUFBQSxPQUFPLEVBQUU7QUFDVixRQUFBLEtBQUssRUFBRTtBQURHLE9BTEo7QUFTSixNQUFBLFNBQVMsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE0sT0FUUDtBQWFOLE1BQUEsV0FBVyxFQUFFO0FBQ2IsUUFBQSxLQUFLLEVBQUU7QUFETTtBQWJQO0FBZlMsR0Fwc0M3QixFQXN1Q0QsS0F0dUNDLENBc3VDSyw2QkF0dUNMLEVBc3VDb0M7QUFDM0IsSUFBQSxHQUFHLEVBQUMsaUJBRHVCO0FBR3hCLElBQUEsS0FBSyxFQUFFO0FBQ0osa0JBQVk7QUFDVCxRQUFBLFdBQVcsRUFBRSxtREFESjtBQUVULFFBQUEsVUFBVSxFQUFFO0FBRkg7QUFJakI7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFUcUIsS0FIaUI7QUFldEIsSUFBQSxNQUFNLEVBQUU7QUFDUixNQUFBLEVBQUUsRUFBRTtBQUNKLFFBQUEsS0FBSyxFQUFFO0FBREgsT0FESTtBQUtOLE1BQUEsTUFBTSxFQUFFO0FBQ1YsUUFBQSxLQUFLLEVBQUU7QUFERyxPQUxGO0FBVVAsTUFBQSxPQUFPLEVBQUU7QUFDVixRQUFBLEtBQUssRUFBRTtBQURHLE9BVkY7QUFjTixNQUFBLFNBQVMsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE0sT0FkTDtBQWtCUixNQUFBLFdBQVcsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE07QUFsQkw7QUFmYyxHQXR1Q3BDLEVBNndDRCxLQTd3Q0MsQ0E2d0NLLDhCQTd3Q0wsRUE2d0NxQztBQUM1QixJQUFBLEdBQUcsRUFBQyxrQkFEd0I7QUFHekIsSUFBQSxLQUFLLEVBQUU7QUFDSixrQkFBWTtBQUNULFFBQUEsV0FBVyxFQUFFLDJEQURKO0FBRVQsUUFBQSxVQUFVLEVBQUU7QUFGSDtBQUlaO0FBQ2pCO0FBQ0E7QUFDQTs7QUFScUIsS0FIa0I7QUFldkIsSUFBQSxNQUFNLEVBQUU7QUFDUixNQUFBLEVBQUUsRUFBRTtBQUNKLFFBQUEsS0FBSyxFQUFFO0FBREgsT0FESTtBQUtOLE1BQUEsTUFBTSxFQUFFO0FBQ1YsUUFBQSxLQUFLLEVBQUU7QUFERyxPQUxGO0FBVVAsTUFBQSxPQUFPLEVBQUU7QUFDVixRQUFBLEtBQUssRUFBRTtBQURHLE9BVkY7QUFjTixNQUFBLFNBQVMsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE0sT0FkTDtBQWtCUixNQUFBLFdBQVcsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE07QUFsQkw7QUFmZSxHQTd3Q3JDLEVBb3pDRCxLQXB6Q0MsQ0FvekNLLGdDQXB6Q0wsRUFvekN1QztBQUM5QixJQUFBLEdBQUcsRUFBQyxnQkFEMEI7QUFHM0IsSUFBQSxLQUFLLEVBQUU7QUFDSixrQkFBWTtBQUNULFFBQUEsV0FBVyxFQUFFLHFEQURKO0FBRVQsUUFBQSxVQUFVLEVBQUU7QUFGSDtBQUlaO0FBQ2pCO0FBQ0E7QUFDQTs7QUFScUIsS0FIb0I7QUFhN0IsSUFBQSxNQUFNLEVBQUU7QUFFSixNQUFBLFNBQVMsRUFBRTtBQUNYLFFBQUEsS0FBSyxFQUFFO0FBREksT0FGUDtBQU1KLE1BQUEsV0FBVyxFQUFFO0FBQ2IsUUFBQSxLQUFLLEVBQUU7QUFETTtBQU5UO0FBYnFCLEdBcHpDdkMsRUFnMUNELEtBaDFDQyxDQWcxQ0ssK0JBaDFDTCxFQWcxQ3NDO0FBQzdCLElBQUEsR0FBRyxFQUFDLGVBRHlCO0FBRzFCLElBQUEsS0FBSyxFQUFFO0FBQ0osa0JBQVk7QUFDVCxRQUFBLFdBQVcsRUFBRSxvREFESjtBQUVULFFBQUEsVUFBVSxFQUFFO0FBRkgsT0FEUjtBQUtKLGNBQVE7QUFDTCxRQUFBLFdBQVcsRUFBRSx3Q0FEUjtBQUVOLFFBQUEsVUFBVSxFQUFFO0FBRk47QUFMSixLQUhtQjtBQWEzQixJQUFBLE1BQU0sRUFBRTtBQUNMLE1BQUEsUUFBUSxFQUFFO0FBQ1YsUUFBQSxLQUFLLEVBQUU7QUFERyxPQURMO0FBS1AsTUFBQSxPQUFPLEVBQUU7QUFDUCxRQUFBLEtBQUssRUFBRTtBQURBLE9BTEY7QUFVTCxNQUFBLFNBQVMsRUFBRTtBQUNYLFFBQUEsS0FBSyxFQUFFO0FBREksT0FWTjtBQWNMLE1BQUEsV0FBVyxFQUFFO0FBQ2IsUUFBQSxLQUFLLEVBQUU7QUFETTtBQWRSO0FBYm1CLEdBaDFDdEMsRUFrM0NELEtBbDNDQyxDQWszQ0ssdUJBbDNDTCxFQWszQzhCO0FBQ3JCLElBQUEsR0FBRyxFQUFDLFdBRGlCO0FBR2xCLElBQUEsS0FBSyxFQUFFO0FBQ0osa0JBQVk7QUFDVCxRQUFBLFdBQVcsRUFBRSw2Q0FESjtBQUVULFFBQUEsVUFBVSxFQUFFO0FBRkgsT0FEUjtBQUtKLGNBQVE7QUFDTCxRQUFBLFdBQVcsRUFBRSx3Q0FEUjtBQUVMLFFBQUEsVUFBVSxFQUFFO0FBRlA7QUFMSixLQUhXO0FBYWhCLElBQUEsTUFBTSxFQUFFO0FBQ1IsTUFBQSxFQUFFLEVBQUU7QUFDSixRQUFBLEtBQUssRUFBRTtBQURILE9BREk7QUFLUixNQUFBLGFBQWEsRUFBRTtBQUNmLFFBQUEsS0FBSyxFQUFFO0FBRFEsT0FMUDtBQVNSLE1BQUEsZUFBZSxFQUFFO0FBQ2pCLFFBQUEsS0FBSyxFQUFFO0FBRFUsT0FUVDtBQWFSLE1BQUEsb0JBQW9CLEVBQUU7QUFDdEIsUUFBQSxLQUFLLEVBQUU7QUFEZSxPQWJkO0FBaUJSLE1BQUEsaUJBQWlCLEVBQUU7QUFDbkIsUUFBQSxLQUFLLEVBQUU7QUFEWSxPQWpCWDtBQXFCUixNQUFBLFVBQVUsRUFBRTtBQUNaLFFBQUEsS0FBSyxFQUFFO0FBREssT0FyQko7QUF5QlIsTUFBQSxlQUFlLEVBQUU7QUFDakIsUUFBQSxLQUFLLEVBQUU7QUFEVSxPQXpCVDtBQTZCUCxNQUFBLFNBQVMsRUFBRTtBQUNaLFFBQUEsS0FBSyxFQUFFO0FBREssT0E3Qko7QUFpQ1IsTUFBQSxPQUFPLEVBQUU7QUFDVCxRQUFBLEtBQUssRUFBRTtBQURFLE9BakNEO0FBcUNQLE1BQUEsU0FBUyxFQUFFO0FBQ1osUUFBQSxLQUFLLEVBQUU7QUFESyxPQXJDSjtBQXlDUixNQUFBLFdBQVcsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE07QUF6Q0w7QUFiUSxHQWwzQzlCLEVBKzZDRCxLQS82Q0MsQ0ErNkNLLDJCQS82Q0wsRUErNkNrQztBQUN6QixJQUFBLEdBQUcsRUFBQyxrRUFEcUI7QUFHdEIsSUFBQSxLQUFLLEVBQUU7QUFDSixrQkFBWTtBQUNULFFBQUEsV0FBVyxFQUFFLGlEQURKO0FBRVQsUUFBQSxVQUFVLEVBQUU7QUFGSCxPQURSO0FBS0osY0FBUTtBQUNMLFFBQUEsV0FBVyxFQUFFLHdDQURSO0FBRUwsUUFBQSxVQUFVLEVBQUU7QUFGUDtBQUxKLEtBSGU7QUFhcEIsSUFBQSxNQUFNLEVBQUU7QUFDUixNQUFBLEVBQUUsRUFBRTtBQUNKLFFBQUEsS0FBSyxFQUFFO0FBREgsT0FESTtBQUtSLE1BQUEsYUFBYSxFQUFFO0FBQ2YsUUFBQSxLQUFLLEVBQUU7QUFEUSxPQUxQO0FBU1IsTUFBQSxlQUFlLEVBQUU7QUFDakIsUUFBQSxLQUFLLEVBQUU7QUFEVSxPQVRUO0FBYVIsTUFBQSxvQkFBb0IsRUFBRTtBQUN0QixRQUFBLEtBQUssRUFBRTtBQURlLE9BYmQ7QUFpQlIsTUFBQSxpQkFBaUIsRUFBRTtBQUNuQixRQUFBLEtBQUssRUFBRTtBQURZLE9BakJYO0FBcUJSLE1BQUEsVUFBVSxFQUFFO0FBQ1osUUFBQSxLQUFLLEVBQUU7QUFESyxPQXJCSjtBQXlCUixNQUFBLGVBQWUsRUFBRTtBQUNqQixRQUFBLEtBQUssRUFBRTtBQURVLE9BekJUO0FBOEJSLE1BQUEsT0FBTyxFQUFFO0FBQ1QsUUFBQSxLQUFLLEVBQUU7QUFERTtBQTlCRDtBQWJZLEdBLzZDbEMsRUFpK0NELEtBaitDQyxDQWkrQ0ssMEJBaitDTCxFQWkrQ2lDO0FBQ3hCLElBQUEsR0FBRyxFQUFDLGlEQURvQjtBQUdyQixJQUFBLEtBQUssRUFBRTtBQUNKLGtCQUFZO0FBQ1QsUUFBQSxXQUFXLEVBQUUsZ0RBREo7QUFFVCxRQUFBLFVBQVUsRUFBRTtBQUZILE9BRFI7QUFLSixjQUFRO0FBQ0wsUUFBQSxXQUFXLEVBQUUsd0NBRFI7QUFFTCxRQUFBLFVBQVUsRUFBRTtBQUZQO0FBTEosS0FIYztBQWVuQixJQUFBLE1BQU0sRUFBRTtBQUNSLE1BQUEsRUFBRSxFQUFFO0FBQ0osUUFBQSxLQUFLLEVBQUU7QUFESCxPQURJO0FBS1IsTUFBQSxhQUFhLEVBQUU7QUFDZixRQUFBLEtBQUssRUFBRTtBQURRLE9BTFA7QUFTUixNQUFBLGVBQWUsRUFBRTtBQUNqQixRQUFBLEtBQUssRUFBRTtBQURVLE9BVFQ7QUFhTixNQUFBLGdCQUFnQixFQUFFO0FBQ3BCLFFBQUEsS0FBSyxFQUFFO0FBRGEsT0FiWjtBQWlCUCxNQUFBLGVBQWUsRUFBRTtBQUNsQixRQUFBLEtBQUssRUFBRTtBQURXLE9BakJWO0FBcUJSLE1BQUEsaUJBQWlCLEVBQUU7QUFDbkIsUUFBQSxLQUFLLEVBQUU7QUFEWSxPQXJCWDtBQXlCUixNQUFBLFNBQVMsRUFBRTtBQUNYLFFBQUEsS0FBSyxFQUFFO0FBREksT0F6Qkg7QUE4QlAsTUFBQSxPQUFPLEVBQUU7QUFDVixRQUFBLEtBQUssRUFBRTtBQURHLE9BOUJGO0FBa0NOLE1BQUEsU0FBUyxFQUFFO0FBQ2IsUUFBQSxLQUFLLEVBQUU7QUFETSxPQWxDTDtBQXNDUixNQUFBLFdBQVcsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE07QUF0Q0w7QUFmVyxHQWorQ2pDLEVBNmhERCxLQTdoREMsQ0E2aERLLHdCQTdoREwsRUE2aEQrQjtBQUN0QixJQUFBLEdBQUcsRUFBQyxRQURrQjtBQUduQixJQUFBLEtBQUssRUFBRTtBQUNKLGtCQUFZO0FBQ1QsUUFBQSxXQUFXLEVBQUUsb0RBREo7QUFFVCxRQUFBLFVBQVUsRUFBRTtBQUZILE9BRFI7QUFLSixjQUFRO0FBQ0wsUUFBQSxXQUFXLEVBQUUsd0NBRFI7QUFFTCxRQUFBLFVBQVUsRUFBRTtBQUZQO0FBTEosS0FIWTtBQWVuQixJQUFBLE1BQU0sRUFBRTtBQUVQLE1BQUEsU0FBUyxFQUFFO0FBQ1YsUUFBQSxLQUFLLEVBQUU7QUFERyxPQUZKO0FBTU4sTUFBQSxXQUFXLEVBQUU7QUFDYixRQUFBLEtBQUssRUFBRTtBQURNO0FBTlA7QUFmVyxHQTdoRC9CLEVBeWpERCxLQXpqREMsQ0F5akRLLHFDQXpqREwsRUF5akQ0QztBQUNuQyxJQUFBLEdBQUcsRUFBQyx5QkFEK0I7QUFHaEMsSUFBQSxLQUFLLEVBQUU7QUFDSixrQkFBWTtBQUNULFFBQUEsV0FBVyxFQUFFLDBEQURKO0FBRVQsUUFBQSxVQUFVLEVBQUU7QUFGSCxPQURSO0FBS0osY0FBUTtBQUNMLFFBQUEsV0FBVyxFQUFFLHdDQURSO0FBRUwsUUFBQSxVQUFVLEVBQUU7QUFGUDtBQUxKLEtBSHlCO0FBZTlCLElBQUEsTUFBTSxFQUFFO0FBQ1IsTUFBQSxFQUFFLEVBQUU7QUFDSixRQUFBLEtBQUssRUFBRTtBQURILE9BREk7QUFLUixNQUFBLGFBQWEsRUFBRTtBQUNmLFFBQUEsS0FBSyxFQUFFO0FBRFEsT0FMUDtBQVNSLE1BQUEsZUFBZSxFQUFFO0FBQ2pCLFFBQUEsS0FBSyxFQUFFO0FBRFUsT0FUVDtBQWNQLE1BQUEsT0FBTyxFQUFFO0FBQ1YsUUFBQSxLQUFLLEVBQUU7QUFERyxPQWRGO0FBa0JOLE1BQUEsU0FBUyxFQUFFO0FBQ2IsUUFBQSxLQUFLLEVBQUU7QUFETSxPQWxCTDtBQXNCUixNQUFBLFdBQVcsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE07QUF0Qkw7QUFmc0IsR0F6akQ1QyxFQXFtREQsS0FybURDLENBcW1ESyx5QkFybURMLEVBcW1EZ0M7QUFDdkIsSUFBQSxHQUFHLEVBQUMsZUFEbUI7QUFHcEIsSUFBQSxLQUFLLEVBQUU7QUFDSixrQkFBWTtBQUNULFFBQUEsV0FBVyxFQUFFLG1EQURKO0FBRVQsUUFBQSxVQUFVLEVBQUU7QUFGSDtBQUlaO0FBQ2pCO0FBQ0E7QUFDQTs7QUFScUIsS0FIYTtBQWVwQixJQUFBLE1BQU0sRUFBRTtBQUNSLE1BQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxLQUFLLEVBQUU7QUFETCxPQURJO0FBS0gsTUFBQSxTQUFTLEVBQUU7QUFDZCxRQUFBLEtBQUssRUFBRTtBQURPLE9BTFI7QUFTTixNQUFBLFdBQVcsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE07QUFUUDtBQWZZLEdBcm1EaEMsRUFtb0RELEtBbm9EQyxDQW1vREssc0JBbm9ETCxFQW1vRDZCO0FBQ3BCLElBQUEsR0FBRyxFQUFDLFlBRGdCO0FBR2pCLElBQUEsS0FBSyxFQUFFO0FBQ0osa0JBQVk7QUFDVCxRQUFBLFdBQVcsRUFBRSxnREFESjtBQUVULFFBQUEsVUFBVSxFQUFFO0FBRkg7QUFJWjtBQUNqQjtBQUNBO0FBQ0E7O0FBUnFCLEtBSFU7QUFlakIsSUFBQSxNQUFNLEVBQUU7QUFDUixNQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsS0FBSyxFQUFFO0FBREwsT0FESTtBQUtILE1BQUEsU0FBUyxFQUFFO0FBQ2QsUUFBQSxLQUFLLEVBQUU7QUFETyxPQUxSO0FBU04sTUFBQSxXQUFXLEVBQUU7QUFDYixRQUFBLEtBQUssRUFBRTtBQURNO0FBVFA7QUFmUyxHQW5vRDdCLEVBa3FERCxLQWxxREMsQ0FrcURLLHdCQWxxREwsRUFrcUQrQjtBQUN0QixJQUFBLEdBQUcsRUFBQyxjQURrQjtBQUV0QixnQkFBUyxJQUZhO0FBSW5CLElBQUEsS0FBSyxFQUFFO0FBQ0osa0JBQVk7QUFDWCxRQUFBLFdBQVcsRUFBRSwwQ0FERixDQUVYOztBQUZXO0FBRFI7QUFKWSxHQWxxRC9CLEVBOHFERCxLQTlxREMsQ0E4cURLLCtCQTlxREwsRUE4cURzQztBQUM3QixJQUFBLEdBQUcsRUFBQyxxQkFEeUI7QUFJM0IsSUFBQSxLQUFLLEVBQUU7QUFDSCxrQkFBWTtBQUNULFFBQUEsV0FBVyxFQUFFLG1EQURKO0FBRVQsUUFBQSxVQUFVLEVBQUU7QUFGSDtBQUlaO0FBQ2pCO0FBQ0E7QUFDQTs7QUFSb0IsS0FKb0I7QUFlMUIsSUFBQSxNQUFNLEVBQUU7QUFDUixNQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsS0FBSyxFQUFFO0FBREwsT0FESTtBQUtMLE1BQUEsT0FBTyxFQUFFO0FBQ1YsUUFBQSxLQUFLLEVBQUU7QUFERyxPQUxKO0FBU0osTUFBQSxTQUFTLEVBQUU7QUFDYixRQUFBLEtBQUssRUFBRTtBQURNLE9BVFA7QUFhTixNQUFBLFdBQVcsRUFBRTtBQUNiLFFBQUEsS0FBSyxFQUFFO0FBRE07QUFiUDtBQWZrQixHQTlxRHRDLEVBZ3RERCxLQWh0REMsQ0FndERLLGtCQWh0REwsRUFndER5QjtBQUNoQixJQUFBLEdBQUcsRUFBQyxtQ0FEWTtBQUlkLElBQUEsS0FBSyxFQUFFO0FBQ0gsa0JBQVk7QUFDVCxRQUFBLFdBQVcsRUFBRSx5Q0FESjtBQUVULFFBQUEsVUFBVSxFQUFFO0FBRkg7QUFJYjtBQUNoQjtBQUNBO0FBQ0E7O0FBUm9CLEtBSk87QUFlYixJQUFBLE1BQU0sRUFBRTtBQUNOLE1BQUEsTUFBTSxFQUFFO0FBQ0osUUFBQSxLQUFLLEVBQUU7QUFESCxPQURGO0FBSU4sTUFBQSxVQUFVLEVBQUU7QUFDUixRQUFBLEtBQUssRUFBRTtBQURDLE9BSk47QUFPTixNQUFBLE9BQU8sRUFBRTtBQUNMLFFBQUEsS0FBSyxFQUFFO0FBREY7QUFQSDtBQWZLLEdBaHREekIsRUEydURELEtBM3VEQyxDQTJ1REsseUJBM3VETCxFQTJ1RGdDO0FBQ3ZCLElBQUEsR0FBRyxFQUFDLDJDQURtQjtBQUlyQixJQUFBLEtBQUssRUFBRTtBQUNILGtCQUFZO0FBQ1QsUUFBQSxXQUFXLEVBQUUseUNBREo7QUFFVCxRQUFBLFVBQVUsRUFBRTtBQUZIO0FBSWI7QUFDaEI7QUFDQTtBQUNBOztBQVJvQixLQUpjO0FBZXBCLElBQUEsTUFBTSxFQUFFO0FBQ04sTUFBQSxNQUFNLEVBQUU7QUFDSixRQUFBLEtBQUssRUFBRTtBQURILE9BREY7QUFJTixNQUFBLE9BQU8sRUFBRTtBQUNMLFFBQUEsS0FBSyxFQUFFO0FBREYsT0FKSDtBQU9OLE1BQUEsS0FBSyxFQUFFO0FBQ0gsUUFBQSxLQUFLLEVBQUU7QUFESixPQVBEO0FBVU4sTUFBQSxVQUFVLEVBQUU7QUFDUixRQUFBLEtBQUssRUFBRTtBQURDO0FBVk4sS0FmWTtBQThCcEIsSUFBQSxJQUFJLEVBQUU7QUFFSixNQUFBLFlBQVksRUFBRSxLQUZWLENBRWdCOztBQUZoQjtBQTlCYyxHQTN1RGhDLEVBK3dERCxLQS93REMsQ0Erd0RLLDhCQS93REwsRUErd0RxQztBQUMzQixJQUFBLEdBQUcsRUFBQyxrQkFEdUI7QUFFbEMsSUFBQSxLQUFLLEVBQUU7QUFDSyxrQkFBWTtBQUNWLFFBQUEsV0FBVyxFQUFFLG9EQURIO0FBRVQsUUFBQSxVQUFVLEVBQUU7QUFGSDtBQURqQixLQUYyQjtBQVUzQixJQUFBLE1BQU0sRUFBRTtBQUNGLE1BQUEsSUFBSSxFQUFFO0FBQ0YsUUFBQSxLQUFLLEVBQUU7QUFETDtBQURKO0FBVm1CLEdBL3dEckMsRUFpeURELEtBanlEQyxDQWl5REssWUFqeURMLEVBaXlEbUI7QUFDVCxJQUFBLEdBQUcsRUFBQyxTQURLO0FBR1QsSUFBQSxLQUFLLEVBQUU7QUFDVDtBQUNWO0FBQ0E7QUFDQTtBQUNZLGtCQUFZO0FBQ1IsUUFBQSxXQUFXLEVBQUUsMENBREw7QUFFUixRQUFBLFVBQVUsRUFBRTtBQUZKO0FBSWI7QUFDWDtBQUNBO0FBQ0E7QUFDQTs7QUFibUIsS0FIRTtBQWtCWixJQUFBLElBQUksRUFBRTtBQUNILE1BQUEsWUFBWSxFQUFFLEtBRFgsQ0FDaUI7O0FBRGpCO0FBbEJNLEdBanlEbkIsRUF3ekRELEtBeHpEQyxDQXd6REssY0F4ekRMLEVBd3pEcUI7QUFDWCxJQUFBLEdBQUcsRUFBQyxxQkFETztBQUdYLElBQUEsS0FBSyxFQUFFO0FBQ1I7QUFDWDtBQUNBO0FBQ0E7QUFDWSxrQkFBWTtBQUNSLFFBQUEsV0FBVyxFQUFFLDRDQURMO0FBRVIsUUFBQSxVQUFVLEVBQUU7QUFGSixPQUxMO0FBU1AsaUJBQVc7QUFDUCxRQUFBLFdBQVcsRUFBRSwwQ0FETixDQUVSOztBQUZRLE9BVEo7QUFhUixNQUFBLE1BQU0sRUFBRTtBQUNILFFBQUEsUUFBUSxFQUFFO0FBQ1YsVUFBQSxLQUFLLEVBQUU7QUFERztBQURQO0FBYkEsS0FISTtBQXdCZCxJQUFBLElBQUksRUFBRTtBQUNILE1BQUEsWUFBWSxFQUFFLEtBRFgsQ0FDaUI7O0FBRGpCO0FBeEJRLEdBeHpEckIsRUFxMURELEtBcjFEQyxDQXExREssZ0JBcjFETCxFQXExRHVCO0FBQ2IsSUFBQSxHQUFHLEVBQUMsdUJBRFM7QUFHYixJQUFBLEtBQUssRUFBRTtBQUNSO0FBQ1g7QUFDQTtBQUNBO0FBQ1ksa0JBQVk7QUFDUixRQUFBLFdBQVcsRUFBRSw4Q0FETDtBQUVSLFFBQUEsVUFBVSxFQUFFO0FBRkosT0FMTDtBQVNQLGlCQUFXO0FBQ1AsUUFBQSxXQUFXLEVBQUUsMENBRE4sQ0FFUjs7QUFGUSxPQVRKO0FBYVIsTUFBQSxNQUFNLEVBQUU7QUFDSCxRQUFBLFFBQVEsRUFBRTtBQUNWLFVBQUEsS0FBSyxFQUFFO0FBREc7QUFEUDtBQWJBLEtBSE07QUF3QmhCLElBQUEsSUFBSSxFQUFFO0FBQ0gsTUFBQSxZQUFZLEVBQUUsS0FEWCxDQUNpQjs7QUFEakI7QUF4QlUsR0FyMUR2QixFQWszREQsS0FsM0RDLENBazNESyx3QkFsM0RMLEVBazNEK0I7QUFDdEIsSUFBQSxHQUFHLEVBQUMsNEJBRGtCO0FBRXRCLElBQUEsS0FBSyxFQUFFO0FBQ0gsa0JBQVk7QUFDUCxRQUFBLFdBQVcsRUFBRSxzREFETjtBQUVQLFFBQUEsVUFBVSxFQUFFO0FBRkw7QUFEVCxLQUZlO0FBUXRCLElBQUEsTUFBTSxFQUFFO0FBRU4sTUFBQSxNQUFNLEVBQUU7QUFDUCxRQUFBLEtBQUssRUFBRTtBQURBLE9BRkY7QUFNUCxNQUFBLFNBQVMsRUFBRTtBQUNULFFBQUEsS0FBSyxFQUFFO0FBREUsT0FOSjtBQVVQLE1BQUEsT0FBTyxFQUFFO0FBQ1AsUUFBQSxLQUFLLEVBQUU7QUFEQTtBQVZGLEtBUmM7QUF1QnRCLElBQUEsSUFBSSxFQUFFO0FBRUgsTUFBQSxZQUFZLEVBQUUsS0FGWCxDQUVpQjs7QUFGakI7QUF2QmdCLEdBbDNEL0IsRUFrNURELEtBbDVEQyxDQWs1REssV0FsNURMLEVBazVEa0I7QUFFbkI7QUFDQTtBQUVBO0FBRUM7QUFDQyxJQUFBLEdBQUcsRUFBQyxHQVJhO0FBU1IsSUFBQSxLQUFLLEVBQUU7QUFDUDtBQUNaO0FBQ0E7QUFDWSxrQkFBWTtBQUNSLFFBQUEsV0FBVyxFQUFFLHVCQUFXO0FBQ2pCLGlCQUFPLGtCQUFVLE1BQVYsQ0FBaUIsZ0JBQXhCO0FBQ0YsU0FIRztBQU1SLFFBQUEsVUFBVSxFQUFFO0FBTkosT0FKTDtBQVlQLGlCQUFXO0FBQ1AsUUFBQSxXQUFXLEVBQUU7QUFETjtBQVpKLEtBVEM7QUEwQmIsSUFBQSxJQUFJLEVBQUU7QUFDQyxNQUFBLFlBQVksRUFBRSxLQURmLENBQ3FCOztBQURyQjtBQTFCTyxHQWw1RGxCLEVBZzdERCxLQWg3REMsQ0FnN0RLLHVCQWg3REwsRUFnN0Q4QjtBQUNwQixJQUFBLEdBQUcsRUFBQyxvQkFEZ0I7QUFFcEIsSUFBQSxLQUFLLEVBQUU7QUFDUCxpQkFBVztBQUNQLFFBQUEsV0FBVyxFQUFFO0FBRE4sT0FESjtBQUlQLGtCQUFZO0FBQ1IsUUFBQSxXQUFXLEVBQUUsd0RBREw7QUFFUixRQUFBLFVBQVUsRUFBRTtBQUZKLE9BSkw7QUFRUCxpQkFBVztBQUNQLFFBQUEsV0FBVyxFQUFFO0FBRE47QUFSSixLQUZhO0FBZXpCLElBQUEsSUFBSSxFQUFFO0FBQ0MsTUFBQSxZQUFZLEVBQUUsS0FEZixDQUNxQjs7QUFEckI7QUFmbUIsR0FoN0Q5QixFQW04REQsS0FuOERDLENBbThESyxnQkFuOERMLEVBbThEdUI7QUFDYixJQUFBLEdBQUcsRUFBQyxxQkFEUztBQUViLElBQUEsS0FBSyxFQUFFO0FBQ0gsaUJBQVc7QUFDUCxRQUFBLFdBQVcsRUFBRTtBQUROLE9BRFI7QUFJSCxrQkFBWTtBQUNSLFFBQUEsV0FBVyxFQUFFLGlEQURMO0FBRVIsUUFBQSxVQUFVLEVBQUU7QUFGSixPQUpUO0FBUUgsaUJBQVc7QUFDUCxRQUFBLFdBQVcsRUFBRTtBQUROLE9BUlI7QUFXSCxNQUFBLE1BQU0sRUFBRTtBQUNKLFFBQUEsTUFBTSxFQUFFO0FBQ1IsVUFBQSxLQUFLLEVBQUU7QUFEQztBQURKO0FBWEwsS0FGTTtBQW1CVixJQUFBLElBQUksRUFBRTtBQUNDLE1BQUEsWUFBWSxFQUFFLEtBRGYsQ0FDcUI7O0FBRHJCO0FBbkJJLEdBbjhEdkIsRUEwOURELEtBMTlEQyxDQTA5REssV0ExOURMLEVBMDlEa0I7QUFDUixJQUFBLEdBQUcsRUFBQyxRQURJO0FBRVIsSUFBQSxLQUFLLEVBQUU7QUFDUCxpQkFBVztBQUNQLFFBQUEsV0FBVyxFQUFFO0FBRE4sT0FESjtBQUlQLGtCQUFZO0FBQ1IsUUFBQSxXQUFXLEVBQUUsd0NBREw7QUFFUixRQUFBLFVBQVUsRUFBRTtBQUZKLE9BSkw7QUFRUCxpQkFBVztBQUNQLFFBQUEsV0FBVyxFQUFFO0FBRE47QUFSSixLQUZDO0FBY1osSUFBQSxNQUFNLEVBQUU7QUFDSSxNQUFBLFVBQVUsRUFBRTtBQUNaLFFBQUEsS0FBSyxFQUFFO0FBREs7QUFEaEIsS0FkSTtBQW1CYixJQUFBLElBQUksRUFBRTtBQUNDLE1BQUEsWUFBWSxFQUFFLEtBRGYsQ0FDcUI7O0FBRHJCO0FBbkJPLEdBMTlEbEIsRUFpL0RELEtBai9EQyxDQWkvREssdUJBai9ETCxFQWkvRDhCO0FBQ3BCLElBQUEsR0FBRyxFQUFDLFlBRGdCO0FBRXBCLElBQUEsS0FBSyxFQUFFO0FBQ1AsaUJBQVc7QUFDUCxRQUFBLFdBQVcsRUFBRTtBQUROLE9BREo7QUFJUCxrQkFBWTtBQUNSLFFBQUEsV0FBVyxFQUFFLG9EQURMO0FBRVIsUUFBQSxVQUFVLEVBQUU7QUFGSixPQUpMO0FBUVAsaUJBQVc7QUFDUCxRQUFBLFdBQVcsRUFBRTtBQUROO0FBUkosS0FGYTtBQWN6QixJQUFBLElBQUksRUFBRTtBQUNDLE1BQUEsWUFBWSxFQUFFLElBRGYsQ0FDb0I7O0FBRHBCO0FBZG1CLEdBai9EOUIsRUFtZ0VELEtBbmdFQyxDQW1nRUssWUFuZ0VMLEVBbWdFbUI7QUFDakIsSUFBQSxHQUFHLEVBQUUsU0FEWTtBQUdmLElBQUEsS0FBSyxFQUFFO0FBQ0csaUJBQVc7QUFDUCxRQUFBLFdBQVcsRUFBRSwrQ0FETixDQUVSOztBQUZRLE9BRGQ7QUFLRyxrQkFBWTtBQUNSLFFBQUEsV0FBVyxFQUFFLDZDQURMO0FBRVIsUUFBQSxVQUFVLEVBQUU7QUFGSjtBQUxmLEtBSFE7QUFlakIsSUFBQSxJQUFJLEVBQUU7QUFDSixNQUFBLFlBQVksRUFBRTtBQURWO0FBZlcsR0FuZ0VuQixFQXNoRUQsS0F0aEVDLENBc2hFSyxTQXRoRUwsRUFzaEVnQjtBQUNOLElBQUEsR0FBRyxFQUFDLE1BREU7QUFHTixJQUFBLEtBQUssRUFBRTtBQUNQLGlCQUFXO0FBQ1AsUUFBQSxXQUFXLEVBQUUsK0NBRE4sQ0FFUjs7QUFGUSxPQURKO0FBS1Asa0JBQVk7QUFDUixRQUFBLFdBQVcsRUFBRSxzQ0FETDtBQUVSLFFBQUEsVUFBVSxFQUFFO0FBRkosT0FMTDtBQVNQLGlCQUFXO0FBQ1AsUUFBQSxXQUFXLEVBQUUsMENBRE4sQ0FFUjs7QUFGUSxPQVRKO0FBYVAsTUFBQSxNQUFNLEVBQUU7QUFDQSxRQUFBLE9BQU8sRUFBRTtBQUNULFVBQUEsS0FBSyxFQUFFO0FBREU7QUFEVDtBQWJELEtBSEQ7QUFzQlgsSUFBQSxJQUFJLEVBQUU7QUFFQyxNQUFBLFlBQVksRUFBRSxLQUZmLENBRXFCOztBQUZyQjtBQXRCSyxHQXRoRWhCLEVBa2pFRCxLQWxqRUMsQ0FrakVLLGVBbGpFTCxFQWtqRXNCO0FBQ3BCLElBQUEsR0FBRyxFQUFFLE9BRGU7QUFFcEIsSUFBQSxLQUFLLEVBQUU7QUFDSyxpQkFBVztBQUNQLFFBQUEsV0FBVyxFQUFFO0FBRE4sT0FEaEI7QUFLSyxrQkFBWTtBQUNSLFFBQUEsV0FBVyxFQUFFLG1EQURMO0FBRVIsUUFBQSxVQUFVLEVBQUU7QUFGSjtBQUxqQixLQUZhO0FBY3BCLElBQUEsSUFBSSxFQUFFO0FBQ0UsTUFBQSxZQUFZLEVBQUU7QUFEaEI7QUFkYyxHQWxqRXRCLEVBbWtFQyxLQW5rRUQsQ0Fta0VPLFdBbmtFUCxFQW1rRW9CO0FBQ2xCLElBQUEsR0FBRyxFQUFFLE9BRGE7QUFFbEIsSUFBQSxLQUFLLEVBQUU7QUFDSyxpQkFBVztBQUNQLFFBQUEsV0FBVyxFQUFFO0FBRE4sT0FEaEI7QUFLSyxrQkFBWTtBQUNSLFFBQUEsV0FBVyxFQUFFLHlDQURMO0FBRVIsUUFBQSxVQUFVLEVBQUU7QUFGSjtBQUxqQixLQUZXO0FBYWpCLElBQUEsTUFBTSxFQUFFO0FBQ00sTUFBQSxHQUFHLEVBQUU7QUFDSixRQUFBLEtBQUssRUFBRTtBQURIO0FBRFgsS0FiUztBQW1CbEIsSUFBQSxJQUFJLEVBQUU7QUFDRSxNQUFBLFlBQVksRUFBRTtBQURoQjtBQW5CWSxHQW5rRXBCO0FBMmxFRCxDQTltRVUsQ0FBWDtBQWduRUEsR0FBRyxDQUFDLEdBQUosQ0FBUSxDQUFDLFlBQUQsRUFBYyxRQUFkLEVBQXdCLFVBQXhCLEVBQW1DLFdBQW5DLEVBQStDLFVBQS9DLEVBQTBELGdCQUExRCxFQUEyRSx1QkFBM0UsRUFBbUcsYUFBbkcsRUFBaUgsa0JBQWpILEVBQ0osVUFBVSxVQUFWLEVBQXFCLE1BQXJCLEVBQTRCLFFBQTVCLEVBQXNDLFNBQXRDLEVBQWdELFFBQWhELEVBQXlELGNBQXpELEVBQXdFLHFCQUF4RSxFQUE4RixXQUE5RixFQUEwRyxnQkFBMUcsRUFDQTtBQUNJLE1BQUksVUFBVSxDQUFDLE9BQVgsS0FBcUIsU0FBekIsRUFBb0MsVUFBVSxDQUFDLE9BQVgsR0FBbUIsRUFBbkI7QUFDcEMsTUFBSSxhQUFKLEVBQW1CLFdBQW5CLEVBQWdDLFlBQWhDLEVBQThDLEdBQTlDLEVBQW1ELFVBQW5ELEVBQWdFLE9BQWhFO0FBRUEsTUFBSSxNQUFNLEdBQUcsY0FBYyxDQUFDLE9BQWYsQ0FBdUIsTUFBdkIsQ0FBYjtBQUNBLE1BQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxTQUFULENBQW1CLGFBQW5CLEtBQXFDLElBQWpEO0FBQ0EsTUFBSSxLQUFKLEVBQVcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsR0FBaUMsS0FBakMsQ0FBWCxLQUNLLElBQUksTUFBSixFQUFZLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLEdBQWlDLElBQUksQ0FBQyxLQUFMLENBQVcsWUFBWSxDQUFDLE9BQWIsQ0FBcUIsTUFBckIsQ0FBWCxDQUFqQzs7QUFHakIsTUFBSSxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUF2QixFQUFvQztBQUM5QixRQUFJLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLFFBQS9CLENBQXdDLFNBQXhDLENBQWtELENBQWxELEVBQW9ELENBQXBELE1BQXlELE9BQTdELEVBQXNFO0FBQ3BFLE1BQUEsY0FBYyxDQUFDLGVBQWYsQ0FBK0IsT0FBL0IsRUFBdUMsUUFBUSxDQUFDLEdBQVQsQ0FBYSxXQUFiLENBQXZDLEVBQWlFLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLFFBQWhHO0FBQ0QsS0FGRCxNQUdJLGNBQWMsQ0FBQyxlQUFmLENBQStCLEtBQS9CLEVBQXFDLFFBQVEsQ0FBQyxHQUFULENBQWEsV0FBYixDQUFyQztBQUNULEdBTEQsTUFNSztBQUNDLElBQUEsVUFBVSxDQUFDLE9BQVgsR0FBcUI7QUFBQyxNQUFBLFdBQVcsRUFBQztBQUFDLFFBQUEsSUFBSSxFQUFDO0FBQU47QUFBYixLQUFyQjtBQUNBLElBQUEsY0FBYyxDQUFDLGVBQWYsQ0FBK0IsS0FBL0IsRUFBcUMsUUFBUSxDQUFDLEdBQVQsQ0FBYSxXQUFiLENBQXJDO0FBQ0w7O0FBTUQsRUFBQSxVQUFVLENBQUMsR0FBWCxDQUFlLG1CQUFmLEVBQW9DLFVBQVUsRUFBVixFQUFhLE9BQWIsRUFBcUIsUUFBckIsRUFBOEIsU0FBOUIsRUFBd0MsVUFBeEMsRUFBb0Q7QUFDOUY7QUFBQTs7QUFDSSxRQUFJLENBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBeEIsRUFDQTtBQUNFLFVBQUksT0FBTSxHQUFHLGNBQWMsQ0FBQyxPQUFmLENBQXVCLE1BQXZCLENBQWI7O0FBQ0EsVUFBSSxNQUFLLEdBQUcsUUFBUSxDQUFDLFNBQVQsQ0FBbUIsYUFBbkIsS0FBcUMsSUFBakQ7O0FBQ0EsVUFBSSxNQUFKLEVBQVcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsR0FBaUMsTUFBakMsQ0FBWCxLQUNLLElBQUksT0FBSixFQUFZLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLEdBQWlDLElBQUksQ0FBQyxLQUFMLENBQVcsWUFBWSxDQUFDLE9BQWIsQ0FBcUIsT0FBckIsQ0FBWCxDQUFqQztBQUNsQjs7QUFDSixJQUFBLFVBQVUsQ0FBQyxPQUFYLENBQW1CLE9BQW5CLEdBQTZCLE9BQTdCO0FBQ0EsSUFBQSxZQUFZLDZDQUFHLE9BQU8sQ0FBQyxJQUFYLGtEQUFHLGNBQWMsWUFBakIseUVBQWlDLElBQTdDLENBVEQsQ0FVQztBQUVBOztBQUNBLFFBQUksU0FBUyxDQUFDLE1BQVYsR0FBbUIsR0FBdkIsRUFDQyxVQUFVLENBQUMsT0FBWCxDQUFtQixVQUFuQixHQUFnQyxTQUFTLENBQUMsTUFBVixHQUFtQixHQUFuRCxDQWRGLENBY3lEOztBQUN4RCxRQUFJLFFBQVEsQ0FBQyxLQUFELENBQVosRUFBc0I7QUFDckIsTUFBQSxVQUFVLENBQUMsT0FBWCxDQUFtQixVQUFuQixHQUFnQyxRQUFRLENBQUMsS0FBRCxDQUF4QyxDQURELEtBRUs7QUFDSixNQUFBLFFBQVEsQ0FBQyxLQUFELENBQVIsR0FBa0IsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsVUFBckM7QUFDQTs7QUFFRCxRQUFJLHVCQUFBLFVBQVUsQ0FBQyxPQUFYLG9FQUFvQixVQUFwQiw0QkFBa0MsVUFBVSxDQUFDLE9BQTdDLDBFQUFrQyxxQkFBb0IsV0FBdEQsNEVBQWtDLHNCQUFpQyxHQUFuRSxtREFBa0MsdUJBQXNDLFVBQXhFLDRCQUFzRixVQUFVLENBQUMsT0FBakcsaURBQXNGLHFCQUFvQixZQUE5RyxFQUE0SDtBQUFBOztBQUMzSDtBQUNBO0FBQ0EsVUFBSSx5QkFBQSxVQUFVLENBQUMsT0FBWCx1R0FBb0IsWUFBcEIsZ0ZBQW1DLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFVBQXRELE1BQXFFLFNBQXpFLEVBQXFGO0FBQUE7O0FBQUU7QUFDdEYsUUFBQSxRQUFRLENBQUMsS0FBRCxDQUFSLDJCQUFrQixVQUFVLENBQUMsT0FBN0Isa0ZBQWtCLHFCQUFvQixXQUF0QyxvRkFBa0Isc0JBQWlDLEdBQW5ELDJEQUFrQix1QkFBc0MsVUFBeEQ7QUFDQSxRQUFBLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFVBQW5CLDJCQUFnQyxVQUFVLENBQUMsT0FBM0Msa0ZBQWdDLHFCQUFvQixXQUFwRCxvRkFBZ0Msc0JBQWlDLEdBQWpFLDJEQUFnQyx1QkFBc0MsVUFBdEU7QUFDQSxRQUFBLFNBQVMsQ0FBQyxNQUFWLENBQWlCO0FBQUMsaUJBQU8sVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsR0FBL0IsQ0FBbUM7QUFBM0MsU0FBakI7QUFDQTtBQUNELEtBN0JGLENBK0JDOzs7QUFDQSxRQUFNLGNBQWMsR0FBRyxDQUFDLHVCQUFELEVBQTBCLFdBQTFCLEVBQXVDLFlBQXZDLEVBQXFELGNBQXJELEVBQXFFLFdBQXJFLEVBQWtGLFdBQWxGLEVBQStGLFNBQS9GLEVBQTBHLFlBQTFHLEVBQXdILGVBQXhILEVBQXlJLHdCQUF6SSxFQUFtSyxnQkFBbkssRUFBcUwsdUJBQXJMLENBQXZCOztBQUNBLFFBQUksY0FBYyxDQUFDLFFBQWYsQ0FBd0IsT0FBTyxDQUFDLElBQWhDLENBQUosRUFDSztBQUNFLE1BQUEsT0FBTyxHQUFHLElBQVY7QUFDQTtBQUNEOztBQUVILFFBQUksT0FBTyxDQUFDLElBQVIsSUFBYyxXQUFkLElBQTZCLE9BQU8sQ0FBQyxJQUFSLElBQWMsWUFBL0MsRUFBNkQsT0FBTyxHQUFDLElBQVI7QUFFaEUsUUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFKLEVBQWQ7QUFDQSxRQUFNLFlBQVksR0FBRyxJQUFJLElBQUosQ0FBUyxLQUFULENBQXJCO0FBQ0EsSUFBQSxZQUFZLENBQUMsVUFBYixDQUF3QixLQUFLLENBQUMsVUFBTixLQUFxQixFQUE3QztBQUVBLElBQUEsUUFBUSxDQUFDLFNBQVQsQ0FBbUIsYUFBbkIsRUFBa0MsT0FBbEMsRUFBMkM7QUFBQyxpQkFBVztBQUFaLEtBQTNDO0FBQ0EsSUFBQSxRQUFRLENBQUMsU0FBVCxDQUFtQixjQUFuQixFQUFtQyxRQUFuQyxFQUE2QztBQUFDLGlCQUFXO0FBQVosS0FBN0M7QUFFRyxJQUFBLGNBQWMsQ0FBQyxPQUFmLENBQXVCLGFBQXZCLEVBQXFDLElBQUksQ0FBQyxTQUFMLENBQWUsT0FBZixDQUFyQztBQUNBLElBQUEsY0FBYyxDQUFDLE9BQWYsQ0FBdUIsY0FBdkIsRUFBc0MsSUFBSSxDQUFDLFNBQUwsQ0FBZSxRQUFmLENBQXRDOztBQUVBLGlDQUFJLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQXZCLGtEQUFJLHNCQUFnQyxRQUFwQyxFQUE4QztBQUFBOztBQUFFO0FBQ2xELE1BQUEsYUFBYSxHQUFHLFNBQWhCO0FBQ0EsTUFBQSxXQUFXLEdBQUcsT0FBZCxDQUZnRCxDQUdoRDs7QUFFQSxVQUFJLFNBQVMsQ0FBQyxNQUFWLEdBQW1CLE9BQXZCLEVBQ0UsT0FBTyxHQUFHLFNBQVMsQ0FBQyxNQUFWLEdBQW1CLE9BQTdCO0FBRUMsVUFBSyxXQUFXLENBQUMsV0FBWixDQUF3QixNQUF4QixJQUFnQyxDQUFyQyxFQUEwQyxXQUFXLENBQUMsZUFBWixDQUE2QixDQUFDLENBQUMsT0FBL0I7QUFFN0MsTUFBQSxVQUFVLENBQUMsT0FBWCxDQUFtQixtQkFBbkIsR0FBeUMsSUFBekM7O0FBRUMsVUFBSyx5QkFBQSxVQUFVLENBQUMsT0FBWCx1R0FBb0IsV0FBcEIsMEdBQWlDLEdBQWpDLGtGQUFzQyxFQUF0QyxLQUE0QyxTQUFqRCxFQUE0RDtBQUFBOztBQUFFO0FBQzdELFFBQUEsRUFBRSxDQUFDLGNBQUg7QUFDa0IsUUFBQSxxQkFBcUIsQ0FBQyxXQUF0QiwyQkFBa0MsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBckQsMkRBQWtDLHVCQUFnQyxZQUFoQyxDQUE2QyxFQUEvRSxFQUNkLElBRGMsQ0FDUixVQUFDLFFBQUQsRUFBYztBQUNwQixVQUFBLHFCQUFxQixDQUFDLGNBQXRCLENBQXFDLFFBQVEsQ0FBQyxJQUFULENBQWMsSUFBbkQ7QUFDQSxjQUFJLFFBQVEsQ0FBQyxJQUFULENBQWMsWUFBbEIsRUFDQyxVQUFVLENBQUMsT0FBWCxDQUFtQixZQUFuQixHQUFrQyxRQUFRLENBQUMsSUFBVCxDQUFjLFlBQWQsQ0FBMkIsTUFBM0IsQ0FBa0MsVUFBQyxHQUFELEVBQU0sR0FBTixFQUFlO0FBQ3BELFlBQUEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFKLENBQU8sUUFBUCxFQUFELENBQUgsR0FBeUIsR0FBekI7QUFDQSxtQkFBTyxHQUFQO0FBQ0wsV0FIUSxFQUdOLEVBSE0sQ0FBbEM7QUFJRCxVQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBTyxDQUFDLElBQWxCLEVBQXdCLFFBQXhCO0FBQ2tCLFNBVEosV0FTWSxVQUFBLEtBQUssRUFBRztBQUNwQyxVQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixFQUF1QjtBQUFDLFlBQUEsR0FBRyxFQUFFLG1CQUFtQixLQUFLLENBQUM7QUFBL0IsV0FBdkI7QUFDRSxTQVhjLGFBV0osWUFBTSxDQUNqQjtBQUNDLFNBYmMsRUFGeUMsQ0FnQjNEOztBQUNBO0FBQ0Q7O0FBRWEsVUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLE9BQXhCLEVBQWlDO0FBQUE7O0FBQUU7QUFDN0IsUUFBQSxFQUFFLENBQUMsY0FBSDtBQUNsQixRQUFBLHFCQUFxQixDQUFDLFVBQXRCLDJCQUFpQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFwRCwyREFBaUMsdUJBQWdDLFlBQWhDLENBQTZDLEVBQTlFLEVBQ0ksSUFESixDQUNVLFVBQUMsUUFBRCxFQUFjO0FBQ3JCLFVBQUEsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsT0FBbkIsR0FBNkIsUUFBUSxDQUFDLElBQXRDO0FBRUMsU0FKSixXQUlZLFVBQUEsS0FBSyxFQUFHO0FBQ2xCLFVBQUEsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFQLENBQUw7QUFDRSxTQU5KLGFBTWMsWUFBTTtBQUNqQixVQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsT0FBTyxDQUFDLElBQWxCLEVBQXdCLFFBQXhCO0FBQ0MsU0FSSixFQUY2QyxDQVc3Qzs7QUFDQTtBQUNhOztBQUVELFVBQUksMEJBQUUsVUFBVSxDQUFDLE9BQWIsaURBQUUscUJBQW9CLFlBQXRCLENBQUosRUFBd0M7QUFBQTs7QUFBRTtBQUNwQyxRQUFBLEVBQUUsQ0FBQyxjQUFIO0FBQ2xCLFFBQUEscUJBQXFCLENBQUMsYUFBdEIsMkJBQW9DLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQXZELDJEQUFvQyx1QkFBZ0MsWUFBaEMsQ0FBNkMsRUFBakYsRUFDRSxJQURGLENBQ08sVUFBQyxRQUFELEVBQWM7QUFDRyxjQUFJLFFBQVEsQ0FBQyxJQUFiLEVBQW9CLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFlBQW5CLEdBQWtDLFFBQVEsQ0FBQyxJQUFULENBQWMsTUFBZCxDQUFxQixVQUFDLEdBQUQsRUFBTSxHQUFOLEVBQWU7QUFDOUUsWUFBQSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUosQ0FBTyxRQUFQLEVBQUQsQ0FBSCxHQUF5QixHQUF6QjtBQUNBLG1CQUFPLEdBQVA7QUFDTCxXQUgrQyxFQUc3QyxFQUg2QyxDQUFsQztBQUkxQyxTQU5GLFdBTVUsVUFBQSxLQUFLLEVBQUc7QUFDaEIsVUFBQSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQVAsQ0FBTDtBQUNBLFNBUkYsYUFRWSxZQUFNO0FBQ2YsVUFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQU8sQ0FBQyxJQUFsQixFQUF3QixRQUF4QjtBQUNELFNBVkYsRUFGb0QsQ0FhcEQ7O0FBQ0E7QUFDQSxPQTlEOEMsQ0FnRWhEO0FBQ0E7QUFDQTs7O0FBRUEsVUFBSSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBWixFQUFoQixFQUE4QztBQUFBOztBQUFFO0FBQy9DLFFBQUEsUUFBUSxnQkFBRyxRQUFILGlEQUFlLEVBQXZCO0FBQ0EsUUFBQSxRQUFRLENBQUMsU0FBRCxDQUFSLEdBQXNCLE9BQXRCO0FBRUEsUUFBQSxxQkFBcUIsQ0FBQyxPQUF0QixDQUE4QixPQUFPLENBQUMsSUFBdEMsRUFBNEMsUUFBNUMsRUFBc0QsT0FBdEQsRUFDRSxJQURGLENBQ08sVUFBQyxJQUFELEVBQVU7QUFBQTs7QUFDZixjQUFJLElBQUksR0FBRyxJQUFILGFBQUcsSUFBSCx1QkFBRyxJQUFJLENBQUUsYUFBakIsQ0FEZSxDQUVmOztBQUNBLFVBQUEscUJBQXFCLENBQUMsTUFBdEIsQ0FBNkIsSUFBN0IsYUFBNkIsSUFBN0IscUNBQTZCLElBQUksQ0FBRSxJQUFuQywrQ0FBNkIsV0FBWSxHQUF6QztBQUNBLGNBQUksQ0FBQyxJQUFMLEVBQVksTUFBTSxJQUFJLEtBQUosQ0FBVSxtQ0FBbUMsT0FBN0MsQ0FBTjtBQUVaLGlCQUFPLHFCQUFxQixDQUFDLGNBQXRCLENBQXFDLElBQXJDLEVBQ0wsSUFESyxDQUNBLFVBQUMsVUFBRCxFQUFnQjtBQUNyQixtQkFBTyxxQkFBcUIsQ0FBQyxhQUF0QixDQUFvQyxPQUFPLENBQUMsSUFBNUMsRUFBa0QsUUFBbEQsRUFBNEQsSUFBNUQsRUFBa0UsVUFBbEUsQ0FBUDtBQUNBLFdBSEssQ0FBUDtBQUlBLFNBWEY7QUFZQztBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDSyxPQXRCRCxNQXNCTztBQUNOLFFBQUEsV0FBVyxDQUFDLDRCQUFaLENBQXlDLE9BQU8sQ0FBQyxJQUFqRCxFQUF1RCxRQUF2RCxFQURNLENBRU47QUFDQTtBQUVELEtBL0ZFLE1BK0ZJO0FBQUU7QUFDUixVQUFJLENBQUMsWUFBTCxFQUFtQjtBQUNsQjtBQUNBLFFBQUEsYUFBYSxHQUFHLFNBQWhCO0FBQ0EsUUFBQSxXQUFXLEdBQUcsT0FBZDtBQUNBLFFBQUEsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsbUJBQW5CLEdBQXlDLElBQXpDO0FBQ0EsUUFBQSxXQUFXLENBQUMsNEJBQVosQ0FBeUMsT0FBTyxDQUFDLElBQWpELEVBQXVELFFBQXZEO0FBQ0EsUUFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQU8sQ0FBQyxJQUFsQixFQUF3QixRQUF4QixFQU5rQixDQU1pQjtBQUNuQyxPQVBELE1BT087QUFBQTs7QUFDTjtBQUNBLFFBQUEsRUFBRSxDQUFDLGNBQUg7QUFDQSxRQUFBLFFBQVEsaUJBQUcsUUFBSCxtREFBZSxFQUF2QjtBQUNBLFlBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFSLENBQWEsUUFBYixDQUFiO0FBQ0EsUUFBQSxNQUFNLENBQUMsaUJBQUQsQ0FBTixHQUE0QixPQUFPLENBQUMsSUFBcEM7QUFDQSxRQUFBLFFBQVEsQ0FBQyxZQUFELENBQVIsR0FBeUIsTUFBekI7QUFDQSxRQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixFQUF1QixRQUF2QjtBQUNBO0FBQ0Q7QUFFTSxHQXRLRixFQXpCSixDQStMUTtBQUVQLENBbk1HLENBQVI7OztBQzExRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBb0M7QUFFckIsU0FBUyxhQUFULENBQXdCLE1BQXhCLEVBQStCLFVBQS9CLEVBQTBDLFFBQTFDLEVBQW9ELE9BQXBELEVBQTRELFNBQTVELEVBQXNFLE1BQXRFLEVBQTZFLGVBQTdFLEVBQTZGLFdBQTdGLEVBQXlHLG9CQUF6RyxFQUE4SCxnQkFBOUgsRUFBK0kscUJBQS9JLEVBQXFLLG1CQUFySyxFQUEwTDtBQUFBOztBQUNqTSxFQUFBLE1BQU0sQ0FBQyxJQUFQLEdBQVksZUFBWixDQURpTSxDQUNwSzs7QUFDN0IsRUFBQSxNQUFNLENBQUMsS0FBUCxHQUFlLGVBQWY7QUFDQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLFdBQXRCO0FBQ04sRUFBQSxNQUFNLENBQUMsR0FBUCxHQUFhLG1CQUFiO0FBQ0EsTUFBSSx5QkFBQyxVQUFVLENBQUMsT0FBWix5RUFBQyxvQkFBb0IsV0FBckIsa0RBQUMsc0JBQWlDLElBQWxDLENBQUosRUFDRSxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixHQUFpQyxRQUFRLENBQUMsU0FBVCxDQUFtQixhQUFuQixLQUFxQyxJQUF0RTtBQUVJLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0I7QUFBRSxJQUFBLGVBQWUsRUFBRztBQUFwQixHQUFsQjtBQUNBLEVBQUEsTUFBTSxDQUFDLEVBQVAsR0FBWTtBQUFPLElBQUEsTUFBTSxFQUFHO0FBQWhCLEdBQVo7QUFFQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLE1BQU0sQ0FBQyxPQUFQLENBQWUsSUFBckM7QUFFQSxFQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQW9CLElBQXBCO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixLQUF0QjtBQUVBLE1BQUksY0FBYyxHQUFFLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUF1QixnQkFBdkIsRUFBeUMsSUFBekMsQ0FBcEI7QUFDQSxNQUFJLGtCQUFrQixHQUFHLGNBQWMsQ0FBQyxPQUFmLENBQXVCLElBQWhEO0FBRUEsTUFBSSxlQUFlLEdBQUcsU0FBdEI7QUFDQSxNQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsa0JBQXJCLEVBQXdDLGVBQXhDLEVBQXdELHVCQUF4RCxFQUFnRix1QkFBaEYsQ0FBZjtBQUNBLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsUUFBWCxDQUFvQixrQkFBcEIsQ0FBWjtBQUNBLE1BQUksS0FBSyxDQUFDLE1BQU4sSUFBYyxJQUFkLElBQXNCLEtBQUssQ0FBQyxLQUFOLEtBQWMsSUFBeEMsRUFBOEMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLEtBQVAsQ0FBdkI7QUFFcEQsTUFBSSxRQUFRLHVEQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQXRCLHFGQUFHLHVCQUFnQyxPQUFuQywyREFBRyx1QkFBeUMsSUFBNUMsMkVBQW9ELE9BQWhFO0FBRUEsRUFBQSxNQUFNLENBQUMsVUFBUCxHQUFvQixrQkFBVSxRQUFWLENBQXBCO0FBQ0EsRUFBQSxNQUFNLENBQUMsTUFBUCxHQUFnQixrQkFBVSxRQUFWLENBQWhCOztBQUdBLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0I7QUFBQSxzQ0FBSSxPQUFKO0FBQUksTUFBQSxPQUFKO0FBQUE7O0FBQUEsV0FDckIsT0FBTyxDQUFDLE1BQVIsQ0FBZSxVQUFDLEdBQUQsRUFBTSxHQUFOO0FBQUEsNkNBQW9CLEdBQXBCLEdBQTRCLEdBQTVCO0FBQUEsS0FBZixDQURxQjtBQUFBLEdBQXRCOztBQUdNLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsVUFBVSxHQUFWLEVBQWU7QUFDakMsSUFBQSxVQUFVLENBQUMsWUFBWTtBQUNyQixNQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGVBQWhCLEdBQWtDLEdBQWxDO0FBQ0EsS0FGUSxDQUFWO0FBR0gsR0FKRDs7QUFPQSxXQUFTLHVCQUFULENBQWtDLElBQWxDLEVBQ0E7QUFBQTs7QUFDUSxJQUFBLE1BQU0sQ0FBQyxVQUFQLHlCQUFvQixJQUFwQixhQUFvQixJQUFwQixzQ0FBb0IsSUFBSSxDQUFFLEtBQTFCLGdEQUFvQixZQUFhLE1BQWpDLG1FQUEyQyxNQUFNLENBQUMsVUFBbEQ7QUFDQSxRQUFJLENBQUEsSUFBSSxTQUFKLElBQUEsSUFBSSxXQUFKLDRCQUFBLElBQUksQ0FBRSxLQUFOLDhEQUFhLFFBQWIsTUFBd0IsU0FBNUIsRUFBd0MsTUFBTSxDQUFDLFlBQVAsR0FBc0IsSUFBSSxDQUFDLEtBQUwsQ0FBVyxRQUFqQyxDQUF4QyxLQUNLLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLEtBQXRCO0FBQ1o7O0FBR0QsRUFBQSxNQUFNLENBQUMsYUFBUCxHQUF1QixVQUFTLEVBQVQsRUFDdkI7QUFDRyxXQUFRLEVBQUUsQ0FBQyxjQUFILENBQWtCLFNBQWxCLElBQTZCLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGFBQWpELEtBQW1FLEVBQUUsQ0FBQyxjQUFILElBQW1CLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGFBQXZDLElBQXdELEVBQUUsQ0FBQyxjQUFILENBQWtCLFNBQWxCLElBQTZCLGtCQUF4SixDQUFSO0FBQ0YsR0FIRDs7QUFNQSxFQUFBLE1BQU0sQ0FBQyxvQkFBUCxHQUE4QixVQUFVLEVBQVYsRUFBYSxFQUFiLEVBQ3BDO0FBQ1EsUUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLE9BQUgsSUFBYyxFQUFFLENBQUMsS0FBNUI7QUFDQSxRQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBYjtBQUNBLFFBQUksSUFBSSxHQUFDLE9BQU8sQ0FBQyxRQUFSLENBQWlCLGNBQWpCLENBQWdDLEVBQWhDLENBQVQ7O0FBQ0EsUUFBSSxDQUFDLEdBQUcsS0FBRyxHQUFOLElBQWEsR0FBRyxLQUFHLEdBQW5CLElBQTBCLEdBQUcsS0FBRyxHQUFoQyxJQUF1QyxHQUFHLEtBQUcsR0FBOUMsS0FBc0QsRUFBRSxDQUFDLE9BQTdELEVBQXNFO0FBQ2hFLE1BQUEsRUFBRSxDQUFDLGNBQUg7QUFDQSxNQUFBLE1BQU0sQ0FBQyxVQUFQLENBQWtCLGVBQWxCLEVBQWtDLEdBQWxDO0FBQ0w7QUFFQTtBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDUyxHQXZCRDtBQXlCUDs7QUFBQTtBQUdELGFBQWEsQ0FBQyxPQUFkLEdBQXdCLENBQUMsUUFBRCxFQUFVLFlBQVYsRUFBdUIsVUFBdkIsRUFBbUMsU0FBbkMsRUFBNkMsV0FBN0MsRUFBeUQsUUFBekQsRUFBa0UsaUJBQWxFLEVBQW9GLGFBQXBGLEVBQWtHLHNCQUFsRyxFQUF5SCxrQkFBekgsRUFBNEksdUJBQTVJLEVBQW9LLHFCQUFwSyxDQUF4Qjs7QUFFTyxTQUFTLGNBQVQsQ0FBd0IsTUFBeEIsRUFBK0IsVUFBL0IsRUFBMEMsTUFBMUMsRUFBa0Q7QUFDakQ7QUFDRCxFQUFBLE1BQU0sQ0FBQyxJQUFQLEdBQVksZ0JBQVo7QUFDRjs7QUFBQTtBQUVMLGNBQWMsQ0FBQyxPQUFmLEdBQXlCLENBQUMsUUFBRCxFQUFVLFlBQVYsRUFBdUIsUUFBdkIsQ0FBekI7O0FBRU8sU0FBUyxpQkFBVCxDQUE0QixNQUE1QixFQUFtQyxVQUFuQyxFQUE4QyxNQUE5QyxFQUFxRCxZQUFyRCxFQUFtRTtBQUNsRTtBQUNBO0FBQ0EsRUFBQSxNQUFNLENBQUMsTUFBUCxHQUFnQixNQUFNLENBQUMsTUFBdkI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxJQUFQLEdBQVksbUJBQVo7QUFDUDs7QUFBQTtBQUVELGlCQUFpQixDQUFDLE9BQWxCLEdBQTRCLENBQUMsUUFBRCxFQUFVLFlBQVYsRUFBdUIsUUFBdkIsRUFBZ0MsY0FBaEMsQ0FBNUI7O0FBR08sU0FBUyxTQUFULENBQW9CLE1BQXBCLEVBQTJCLFVBQTNCLEVBQXNDLE1BQXRDLEVBQTZDLFlBQTdDLEVBQTJEO0FBQUE7O0FBRTFELEVBQUEsTUFBTSxDQUFDLE1BQVAsR0FBZ0IsTUFBTSxDQUFDLE1BQXZCLENBRjBELENBR2hFOztBQUNBLHdCQUFJLE1BQU0sQ0FBQyxNQUFYLDJDQUFJLGVBQWUsR0FBbkIsRUFBd0I7QUFDdkIsUUFBSSxPQUFPLE1BQU0sQ0FBQyxNQUFQLENBQWMsR0FBckIsS0FBNkIsUUFBakMsRUFDRSxNQUFNLENBQUMsR0FBUCxHQUFhLE1BQU0sQ0FBQyxNQUFQLENBQWMsR0FBM0I7QUFDRixRQUFJLFFBQU8sTUFBTSxDQUFDLE1BQVAsQ0FBYyxHQUFyQixNQUE2QixRQUFqQyxFQUNFLE1BQU0sQ0FBQyxHQUFQLEdBQWEsSUFBSSxDQUFDLFNBQUwsQ0FBZSxNQUFNLENBQUMsTUFBUCxDQUFjLEdBQTdCLENBQWI7QUFDRjs7QUFDSyxFQUFBLE1BQU0sQ0FBQyxJQUFQLEdBQVksV0FBWjtBQUNQOztBQUFBO0FBRUQsU0FBUyxDQUFDLE9BQVYsR0FBb0IsQ0FBQyxRQUFELEVBQVUsWUFBVixFQUF1QixRQUF2QixFQUFnQyxjQUFoQyxDQUFwQjs7QUFLTyxTQUFTLFFBQVQsQ0FBa0IsTUFBbEIsRUFBMEIsVUFBMUIsRUFBcUMsTUFBckMsRUFBNEMsUUFBNUMsRUFBcUQsU0FBckQsRUFBK0QsbUJBQS9ELEVBQW1GLGlCQUFuRixFQUFxRyxnQkFBckcsRUFBc0gsWUFBdEgsRUFBbUkscUJBQW5JLEVBQXlKLFdBQXpKLEVBQXFLLG9CQUFySyxFQUEwTCxlQUExTCxFQUEwTSxlQUExTSxFQUEwTixlQUExTixFQUEwTyxRQUExTyxFQUFtUCxZQUFuUCxFQUFnUTtBQUFBOztBQUcvUCxFQUFBLE1BQU0sQ0FBQyxJQUFQLEdBQVksVUFBWjtBQUNBLEVBQUEsVUFBVSxDQUFDLFNBQVgsR0FBc0IsZ0JBQXRCO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFvQixNQUFNLENBQUMsT0FBUCxDQUFlLElBQW5DO0FBQ0EsRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQjtBQUFDLFlBQU87QUFBUixHQUFyQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBbUIsRUFBbkI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxFQUFQLEdBQVUsRUFBVjtBQUNBLEVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBc0IsRUFBdEI7QUFDQSxNQUFJLElBQUksR0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQztBQUNBLEVBQUEsTUFBTSxDQUFDLG9CQUFQLDZCQUE0QixVQUFVLENBQUMsT0FBWCxDQUFtQixXQUEvQywyREFBNEIsdUJBQWdDLFVBQTVEO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixPQUFPLENBQUMsSUFBUixDQUFhLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLEdBQTVDLENBQXRCO0FBQ0EsRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFnQixFQUFoQjtBQUNBLEVBQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTBCLEVBQTFCO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUF1QixVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixZQUF0RDtBQUNBLEVBQUEsTUFBTSxDQUFDLGlCQUFQLEdBQXlCO0FBQUMsSUFBQSxPQUFPLEVBQUM7QUFBVCxHQUF6QjtBQUNBLE1BQUksTUFBTSxDQUFDLFlBQVAsSUFBcUIsU0FBekIsRUFBb0MsTUFBTSxDQUFDLFlBQVAsR0FBc0IsRUFBdEI7QUFHcEMsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixXQUF0QjtBQUNQLEVBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsYUFBcEI7QUFDTyxNQUFJLE9BQU8sR0FBRyxTQUFTLENBQUMsTUFBVixHQUFtQixPQUFqQyxDQXRCK1AsQ0F5Qi9QOztBQUVOLEVBQUEsTUFBTSxDQUFDLGlCQUFQLEdBQTJCLFlBQVU7QUFBQTs7QUFDcEMsV0FBTyxVQUFQLGFBQU8sVUFBUCwrQ0FBTyxVQUFVLENBQUUsT0FBbkIseURBQU8scUJBQXFCLFlBQXJCLENBQWtDLFVBQWxDLGFBQWtDLFVBQWxDLCtDQUFrQyxVQUFVLENBQUUsT0FBOUMseURBQWtDLHFCQUFxQixVQUF2RCxDQUFQO0FBQ0EsR0FGRDs7QUFLQSxNQUFJLFlBQVksQ0FBQyxHQUFqQixFQUFzQjtBQUNyQjtBQUNBLElBQUEsY0FBYyxDQUFDLE9BQWYsQ0FBdUIsYUFBdkIsRUFBc0MsWUFBWSxDQUFDLEdBQW5EO0FBQ0EsSUFBQSxVQUFVLENBQUMsT0FBWCxDQUFtQixVQUFuQixHQUFpQyxZQUFZLENBQUMsR0FBOUM7QUFDQTs7QUFFSyxFQUFBLE1BQU0sQ0FBQyxLQUFQLEdBQWEsZUFBYjtBQUNBLEVBQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxnQkFBYjtBQUNBLEVBQUEsTUFBTSxDQUFDLE1BQVAsR0FBYztBQUFDLElBQUEsV0FBVyxFQUFDLENBQWI7QUFBZSxJQUFBLFdBQVcsRUFBQztBQUEzQixHQUFkO0FBQ0EsTUFBSSxHQUFHLEdBQUUsU0FBUyxDQUFDLE1BQVYsR0FBbUIsR0FBNUI7QUFDQSxNQUFJLEdBQUcsSUFBRSxTQUFULEVBQXFCLE1BQU0sQ0FBQyxNQUFQLENBQWMsV0FBZCxHQUE0QixHQUE1QixDQTFDME8sQ0EyQy9QOztBQUVBLEVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsWUFDeEI7QUFDUSxJQUFBLE1BQU0sQ0FBQyxPQUFQLEdBQWUsRUFBZjtBQUNBLElBQUEsTUFBTSxDQUFDLGFBQVAsR0FBcUIsRUFBckI7QUFDQSxJQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQixLQUExQjtBQUNBLElBQUEsTUFBTSxDQUFDLGlCQUFQLEdBQTJCLEVBQTNCO0FBQ0EsSUFBQSxNQUFNLENBQUMsV0FBUCxHQUFtQixJQUFuQjs7QUFFUSxRQUFJLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixJQUF1QixJQUEzQixFQUNBO0FBQ1EsTUFBQSxNQUFNLENBQUMscUJBQVAsR0FBNkIsSUFBN0I7QUFDQSxVQUFJLEdBQUo7QUFDQSxNQUFBLElBQUksQ0FBQyxHQUFMLENBQVMsVUFBVCxDQUFvQixNQUFNLENBQUMsRUFBUCxDQUFVLFdBQTlCLEVBQTJDLFVBQVUsS0FBVixFQUFpQixHQUFqQixFQUFzQjtBQUN6RCxZQUFJLENBQUMsS0FBTCxFQUFZO0FBQ1osY0FBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUwsQ0FBVyxPQUFYLENBQW1CLEdBQW5CLEVBQXdCLE9BQXhCLENBQWQ7QUFDQSxVQUFBLE1BQU0sQ0FBQyxPQUFQLEdBQWlCLE9BQU8sR0FBRyxNQUEzQjtBQUNDO0FBQ1IsT0FMRDtBQU9BLFVBQUksWUFBWSxHQUFHLDRDQUFuQjtBQUNBLFVBQUksUUFBUSxHQUFHLENBQUM7QUFBQyxrQkFBUyxFQUFWO0FBQWEsMkJBQWtCLFlBQS9CO0FBQTRDLGdCQUFPO0FBQW5ELE9BQUQsRUFBbUU7QUFBQyxxQkFBWSxLQUFiO0FBQW1CLGtCQUFTLENBQUM7QUFBQyxxQkFBVSxJQUFYO0FBQWdCLDBCQUFlLFNBQS9CO0FBQXlDLGtCQUFPLE9BQWhEO0FBQXdELGtCQUFPO0FBQS9ELFNBQUQsRUFBMkU7QUFBQyxxQkFBVSxJQUFYO0FBQWdCLDBCQUFlLFNBQS9CO0FBQXlDLGtCQUFPLFNBQWhEO0FBQTBELGtCQUFPO0FBQWpFLFNBQTNFLEVBQXVKO0FBQUMscUJBQVUsS0FBWDtBQUFpQiwwQkFBZSxTQUFoQztBQUEwQyxrQkFBTyxPQUFqRDtBQUF5RCxrQkFBTztBQUFoRSxTQUF2SixDQUE1QjtBQUErUCxnQkFBTyxVQUF0UTtBQUFpUixnQkFBTztBQUF4UixPQUFuRSxFQUFvVztBQUFDLHFCQUFZLEtBQWI7QUFBbUIsa0JBQVMsQ0FBQztBQUFDLHFCQUFVLElBQVg7QUFBZ0IsMEJBQWUsU0FBL0I7QUFBeUMsa0JBQU8sZUFBaEQ7QUFBZ0Usa0JBQU87QUFBdkUsU0FBRCxFQUFtRjtBQUFDLHFCQUFVLElBQVg7QUFBZ0IsMEJBQWUsU0FBL0I7QUFBeUMsa0JBQU8sVUFBaEQ7QUFBMkQsa0JBQU87QUFBbEUsU0FBbkYsQ0FBNUI7QUFBNkwsZ0JBQU8sc0JBQXBNO0FBQTJOLGdCQUFPO0FBQWxPLE9BQXBXLEVBQStrQjtBQUFDLHFCQUFZLEtBQWI7QUFBbUIsa0JBQVMsQ0FBQztBQUFDLHFCQUFVLElBQVg7QUFBZ0IsMEJBQWUsU0FBL0I7QUFBeUMsa0JBQU8sTUFBaEQ7QUFBdUQsa0JBQU87QUFBOUQsU0FBRCxFQUEwRTtBQUFDLHFCQUFVLElBQVg7QUFBZ0IsMEJBQWUsU0FBL0I7QUFBeUMsa0JBQU8sSUFBaEQ7QUFBcUQsa0JBQU87QUFBNUQsU0FBMUUsRUFBaUo7QUFBQyxxQkFBVSxLQUFYO0FBQWlCLDBCQUFlLFNBQWhDO0FBQTBDLGtCQUFPLE9BQWpEO0FBQXlELGtCQUFPO0FBQWhFLFNBQWpKLENBQTVCO0FBQXlQLGdCQUFPLFVBQWhRO0FBQTJRLGdCQUFPO0FBQWxSLE9BQS9rQixFQUEwMkI7QUFBQyxrQkFBUyxDQUFDO0FBQUMsMEJBQWUsU0FBaEI7QUFBMEIsa0JBQU8sT0FBakM7QUFBeUMsa0JBQU87QUFBaEQsU0FBRCxFQUE0RDtBQUFDLDBCQUFlLFNBQWhCO0FBQTBCLGtCQUFPLFNBQWpDO0FBQTJDLGtCQUFPO0FBQWxELFNBQTVELENBQVY7QUFBb0ksZ0JBQU8sV0FBM0k7QUFBdUosbUJBQVUsQ0FBQztBQUFDLDBCQUFlLFNBQWhCO0FBQTBCLGtCQUFPLEVBQWpDO0FBQW9DLGtCQUFPO0FBQTNDLFNBQUQsQ0FBaks7QUFBeU4sMkJBQWtCLE1BQTNPO0FBQWtQLGdCQUFPO0FBQXpQLE9BQTEyQixFQUErbUM7QUFBQyxrQkFBUyxDQUFDO0FBQUMsMEJBQWUsU0FBaEI7QUFBMEIsa0JBQU8sU0FBakM7QUFBMkMsa0JBQU87QUFBbEQsU0FBRCxFQUE4RDtBQUFDLDBCQUFlLFNBQWhCO0FBQTBCLGtCQUFPLFFBQWpDO0FBQTBDLGtCQUFPO0FBQWpELFNBQTlELENBQVY7QUFBcUksZ0JBQU8sU0FBNUk7QUFBc0osbUJBQVUsQ0FBQztBQUFDLDBCQUFlLE1BQWhCO0FBQXVCLGtCQUFPLEVBQTlCO0FBQWlDLGtCQUFPO0FBQXhDLFNBQUQsQ0FBaEs7QUFBa04sMkJBQWtCLFlBQXBPO0FBQWlQLGdCQUFPO0FBQXhQLE9BQS9tQyxFQUFtM0M7QUFBQyxrQkFBUyxDQUFDO0FBQUMsMEJBQWUsU0FBaEI7QUFBMEIsa0JBQU8sU0FBakM7QUFBMkMsa0JBQU87QUFBbEQsU0FBRCxDQUFWO0FBQXlFLGdCQUFPLFdBQWhGO0FBQTRGLG1CQUFVLENBQUM7QUFBQywwQkFBZSxTQUFoQjtBQUEwQixrQkFBTyxFQUFqQztBQUFvQyxrQkFBTztBQUEzQyxTQUFELENBQXRHO0FBQThKLDJCQUFrQixNQUFoTDtBQUF1TCxnQkFBTztBQUE5TCxPQUFuM0MsRUFBNmpEO0FBQUMsa0JBQVMsRUFBVjtBQUFhLGdCQUFPLFVBQXBCO0FBQStCLG1CQUFVLENBQUM7QUFBQywwQkFBZSxPQUFoQjtBQUF3QixrQkFBTyxFQUEvQjtBQUFrQyxrQkFBTztBQUF6QyxTQUFELENBQXpDO0FBQTZGLDJCQUFrQixNQUEvRztBQUFzSCxnQkFBTztBQUE3SCxPQUE3akQsRUFBc3NEO0FBQUMsa0JBQVMsQ0FBQztBQUFDLDBCQUFlLFNBQWhCO0FBQTBCLGtCQUFPLFNBQWpDO0FBQTJDLGtCQUFPO0FBQWxELFNBQUQsRUFBOEQ7QUFBQywwQkFBZSxTQUFoQjtBQUEwQixrQkFBTyxpQkFBakM7QUFBbUQsa0JBQU87QUFBMUQsU0FBOUQsQ0FBVjtBQUE4SSxnQkFBTyxtQkFBcko7QUFBeUssbUJBQVUsQ0FBQztBQUFDLDBCQUFlLE1BQWhCO0FBQXVCLGtCQUFPLEVBQTlCO0FBQWlDLGtCQUFPO0FBQXhDLFNBQUQsQ0FBbkw7QUFBcU8sMkJBQWtCLFlBQXZQO0FBQW9RLGdCQUFPO0FBQTNRLE9BQXRzRCxFQUE2OUQ7QUFBQyxrQkFBUyxDQUFDO0FBQUMsMEJBQWUsU0FBaEI7QUFBMEIsa0JBQU8sU0FBakM7QUFBMkMsa0JBQU87QUFBbEQsU0FBRCxFQUE4RDtBQUFDLDBCQUFlLFNBQWhCO0FBQTBCLGtCQUFPLFlBQWpDO0FBQThDLGtCQUFPO0FBQXJELFNBQTlELENBQVY7QUFBeUksZ0JBQU8sbUJBQWhKO0FBQW9LLG1CQUFVLENBQUM7QUFBQywwQkFBZSxNQUFoQjtBQUF1QixrQkFBTyxFQUE5QjtBQUFpQyxrQkFBTztBQUF4QyxTQUFELENBQTlLO0FBQWdPLDJCQUFrQixZQUFsUDtBQUErUCxnQkFBTztBQUF0USxPQUE3OUQsRUFBK3VFO0FBQUMsa0JBQVMsRUFBVjtBQUFhLGdCQUFPLE1BQXBCO0FBQTJCLG1CQUFVLENBQUM7QUFBQywwQkFBZSxRQUFoQjtBQUF5QixrQkFBTyxFQUFoQztBQUFtQyxrQkFBTztBQUExQyxTQUFELENBQXJDO0FBQTJGLDJCQUFrQixNQUE3RztBQUFvSCxnQkFBTztBQUEzSCxPQUEvdUUsRUFBczNFO0FBQUMsa0JBQVMsRUFBVjtBQUFhLGdCQUFPLE9BQXBCO0FBQTRCLG1CQUFVLENBQUM7QUFBQywwQkFBZSxTQUFoQjtBQUEwQixrQkFBTyxFQUFqQztBQUFvQyxrQkFBTztBQUEzQyxTQUFELENBQXRDO0FBQThGLDJCQUFrQixNQUFoSDtBQUF1SCxnQkFBTztBQUE5SCxPQUF0M0UsRUFBZ2dGO0FBQUMsa0JBQVMsRUFBVjtBQUFhLGdCQUFPLG1CQUFwQjtBQUF3QyxtQkFBVSxFQUFsRDtBQUFxRCwyQkFBa0IsWUFBdkU7QUFBb0YsZ0JBQU87QUFBM0YsT0FBaGdGLEVBQXVtRjtBQUFDLGtCQUFTLEVBQVY7QUFBYSxnQkFBTyxRQUFwQjtBQUE2QixtQkFBVSxDQUFDO0FBQUMsMEJBQWUsUUFBaEI7QUFBeUIsa0JBQU8sRUFBaEM7QUFBbUMsa0JBQU87QUFBMUMsU0FBRCxDQUF2QztBQUE2RiwyQkFBa0IsTUFBL0c7QUFBc0gsZ0JBQU87QUFBN0gsT0FBdm1GLEVBQWd2RjtBQUFDLGtCQUFTLEVBQVY7QUFBYSxnQkFBTyxhQUFwQjtBQUFrQyxtQkFBVSxDQUFDO0FBQUMsMEJBQWUsU0FBaEI7QUFBMEIsa0JBQU8sRUFBakM7QUFBb0Msa0JBQU87QUFBM0MsU0FBRCxDQUE1QztBQUFvRywyQkFBa0IsTUFBdEg7QUFBNkgsZ0JBQU87QUFBcEksT0FBaHZGLEVBQWc0RjtBQUFDLGtCQUFTLENBQUM7QUFBQywwQkFBZSxTQUFoQjtBQUEwQixrQkFBTyxXQUFqQztBQUE2QyxrQkFBTztBQUFwRCxTQUFELEVBQWdFO0FBQUMsMEJBQWUsU0FBaEI7QUFBMEIsa0JBQU8sUUFBakM7QUFBMEMsa0JBQU87QUFBakQsU0FBaEUsQ0FBVjtBQUF1SSxnQkFBTyxVQUE5STtBQUF5SixtQkFBVSxDQUFDO0FBQUMsMEJBQWUsTUFBaEI7QUFBdUIsa0JBQU8sRUFBOUI7QUFBaUMsa0JBQU87QUFBeEMsU0FBRCxDQUFuSztBQUFxTiwyQkFBa0IsWUFBdk87QUFBb1AsZ0JBQU87QUFBM1AsT0FBaDRGLEVBQXVvRztBQUFDLGtCQUFTLENBQUM7QUFBQywwQkFBZSxTQUFoQjtBQUEwQixrQkFBTyxRQUFqQztBQUEwQyxrQkFBTztBQUFqRCxTQUFELEVBQTZEO0FBQUMsMEJBQWUsU0FBaEI7QUFBMEIsa0JBQU8sV0FBakM7QUFBNkMsa0JBQU87QUFBcEQsU0FBN0QsRUFBNEg7QUFBQywwQkFBZSxTQUFoQjtBQUEwQixrQkFBTyxRQUFqQztBQUEwQyxrQkFBTztBQUFqRCxTQUE1SCxDQUFWO0FBQW1NLGdCQUFPLGNBQTFNO0FBQXlOLG1CQUFVLENBQUM7QUFBQywwQkFBZSxNQUFoQjtBQUF1QixrQkFBTyxFQUE5QjtBQUFpQyxrQkFBTztBQUF4QyxTQUFELENBQW5PO0FBQXFSLDJCQUFrQixZQUF2UztBQUFvVCxnQkFBTztBQUEzVCxPQUF2b0csRUFBODhHO0FBQUMsa0JBQVMsQ0FBQztBQUFDLDBCQUFlLFNBQWhCO0FBQTBCLGtCQUFPLFVBQWpDO0FBQTRDLGtCQUFPO0FBQW5ELFNBQUQsQ0FBVjtBQUEwRSxnQkFBTyxtQkFBakY7QUFBcUcsbUJBQVUsRUFBL0c7QUFBa0gsMkJBQWtCLFlBQXBJO0FBQWlKLGdCQUFPO0FBQXhKLE9BQTk4RyxDQUFmO0FBRUEsVUFBSSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBTCxDQUFTLFFBQWIsQ0FBc0IsUUFBdEIsRUFBK0IsWUFBL0IsQ0FBaEI7QUFHQSxNQUFBLFNBQVMsQ0FBQyxPQUFWLENBQWtCLFNBQWxCLENBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBdEMsRUFBbUQsSUFBbkQsR0FBMEQsSUFBMUQsQ0FBK0QsVUFBVSxPQUFWLEVBQW1CO0FBQzFFLFlBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFMLENBQVcsT0FBWCxDQUFtQixPQUFuQixFQUE0QixPQUE1QixDQUFWOztBQUNBLFlBQUksR0FBRyxHQUFDLEdBQVIsRUFDQTtBQUNRLFVBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQTBCLEtBQTFCO0FBQ0EsVUFBQSxNQUFNLENBQUMsaUJBQVAsR0FBMkIsc0JBQTNCO0FBQ1AsU0FKRCxNQUlNLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQixJQUExQjs7QUFDTixRQUFBLFFBQVEsQ0FBQyxZQUFVO0FBQ1gsVUFBQSxHQUFHLEdBQUcsVUFBVSxDQUFDLEdBQUQsQ0FBVixDQUFnQixjQUFoQixDQUErQixTQUFTLENBQUMsUUFBekMsRUFBa0Q7QUFBQyxZQUFBLHFCQUFxQixFQUFDLENBQXZCO0FBQXlCLFlBQUEscUJBQXFCLEVBQUM7QUFBL0MsV0FBbEQsQ0FBTjtBQUNBLFVBQUEsTUFBTSxDQUFDLGFBQVAsR0FBdUIsR0FBRyxHQUFFLFFBQTVCO0FBQ0MsU0FIRCxDQUFSO0FBSUMsT0FYVDtBQWFQLGFBQU8sSUFBUDtBQUNSOztBQUVELFdBQU8sS0FBUDtBQUNQLEdBMUNEOztBQTRDQSxFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLFlBQ3JCO0FBQ1E7QUFDQSxRQUFJLFdBQVcsR0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixZQUEvQixDQUE0QyxVQUE5RCxDQUZSLENBSVE7O0FBQ0EsUUFBSSxXQUFXLElBQUUsSUFBYixJQUFxQixXQUFXLENBQUMsSUFBWixNQUFvQixFQUE3QyxFQUNBO0FBQ0ksTUFBQSxNQUFNLENBQUMsY0FBUCxHQUFzQixJQUF0QjtBQUNILEtBSEQsTUFJQTtBQUVRLE1BQUEsTUFBTSxDQUFDLHVCQUFQLEdBQStCLElBQS9CO0FBQ0EsTUFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsR0FBd0IsV0FBeEI7QUFDQSxNQUFBLGVBQWUsQ0FBQyxlQUFoQixDQUFnQyxXQUFoQyxFQUE2QyxJQUE3QyxDQUFrRCxVQUFVLElBQVYsRUFBZ0I7QUFDMUQsWUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUFwQjtBQUVBLFFBQUEsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsR0FBL0IsQ0FBbUMsV0FBbkMsR0FBaUQsSUFBSSxDQUFDLElBQUwsQ0FBVSxLQUEzRDtBQUNBLFFBQUEsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsR0FBL0IsQ0FBbUMsYUFBbkMsR0FBbUQsR0FBbkQ7QUFFQSxRQUFBLEdBQUcsR0FBRyxHQUFHLENBQUMsY0FBSixDQUFtQixTQUFTLENBQUMsUUFBN0IsRUFBc0M7QUFBQyxVQUFBLHFCQUFxQixFQUFDLENBQXZCO0FBQXlCLFVBQUEscUJBQXFCLEVBQUM7QUFBL0MsU0FBdEMsQ0FBTjtBQUNBLFFBQUEsTUFBTSxDQUFDLGFBQVAsR0FBc0IsR0FBRyxHQUFDLFFBQTFCO0FBQ0EsUUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQixlQUFhLElBQUksQ0FBQyxJQUFMLENBQVUsS0FBdkIsR0FBOEIsR0FBbkQ7QUFDQSxRQUFBLE1BQU0sQ0FBQyxPQUFQLEdBQWlCLElBQUksQ0FBQyxJQUFMLENBQVUsV0FBVixHQUF3QixpQkFBeEIsR0FBMEMsSUFBSSxDQUFDLElBQUwsQ0FBVSxTQUFwRCxHQUErRCxHQUFoRjtBQUNBLFFBQUEsTUFBTSxDQUFDLGNBQVAsR0FBc0IsSUFBdEI7QUFHQSxRQUFBLFFBQVEsQ0FBQyxTQUFULENBQW1CLGFBQW5CLEVBQWlDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQXBEO0FBQ1AsT0FkRCxFQWNFLFVBQVMsS0FBVCxFQUFlO0FBRUQsUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDZixPQWpCRDtBQWtCUDtBQUNSLEdBakNEOztBQW1DQSxFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLFlBQ3JCO0FBQ1E7QUFDQSxRQUFJLFdBQVcsR0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixZQUEvQixDQUE0QyxVQUE5RCxDQUZSLENBSVE7O0FBQ0EsUUFBSSxXQUFXLElBQUUsSUFBYixJQUFxQixXQUFXLENBQUMsSUFBWixNQUFvQixFQUE3QyxFQUNBO0FBQ0ksTUFBQSxNQUFNLENBQUMsY0FBUCxHQUFzQixJQUF0QjtBQUNILEtBSEQsTUFJQTtBQUFBOztBQUVPO0FBQ1MsTUFBQSxNQUFNLENBQUMsdUJBQVAsR0FBK0IsSUFBL0I7QUFDQSxNQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBVixHQUF3QixXQUF4QjtBQUNBLE1BQUEsTUFBTSxDQUFDLGFBQVAsR0FBdUIsMkJBQUEsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsR0FBL0IsQ0FBbUMsYUFBbkMsa0ZBQWtELGNBQWxELENBQWlFLFNBQVMsQ0FBQyxRQUEzRSxFQUFvRjtBQUFDLFFBQUEscUJBQXFCLEVBQUMsQ0FBdkI7QUFBeUIsUUFBQSxxQkFBcUIsRUFBQztBQUEvQyxPQUFwRixLQUF1SSxRQUE5SjtBQUNBLE1BQUEsTUFBTSxDQUFDLGlCQUFQLEdBQTJCLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLEdBQS9CLENBQW1DLGFBQTlEO0FBQ0EsTUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQiwwQ0FBYSxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixHQUEvQixDQUFtQyxXQUFoRCwyREFBYSx1QkFBZ0QsY0FBaEQsQ0FBK0QsU0FBUyxDQUFDLFFBQXpFLEVBQWtGO0FBQUMsUUFBQSxxQkFBcUIsRUFBQyxDQUF2QjtBQUF5QixRQUFBLHFCQUFxQixFQUFDO0FBQS9DLE9BQWxGLENBQWIsSUFBbUosR0FBeEs7QUFDQSxNQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXNCLElBQXRCO0FBQ0EsVUFBSSxNQUFNLENBQUMsaUJBQVAsSUFBMEIsR0FBOUIsRUFBbUMsTUFBTSxDQUFDLGdCQUFQLEdBQTBCLElBQTFCLENBQW5DLEtBRUE7QUFDUSxRQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQixLQUExQjtBQUNBLFFBQUEsTUFBTSxDQUFDLGlCQUFQLEdBQTJCLHVCQUEzQjtBQUNQLE9BZGpCLENBZ0JTOztBQUNEO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDaUI7QUFDUixHQXhDRCxDQTVIK1AsQ0FzSy9QOzs7QUFFQSxNQUFJLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGNBQXhCLEVBQXdDLE1BQU0sQ0FBQyxXQUFQO0FBRXhDLEVBQUEsTUFBTSxDQUFDLE1BQVAsQ0FBYyxrQkFBZCxFQUFpQyxVQUFTLFFBQVQsRUFBa0IsUUFBbEIsRUFBMkI7QUFDcEQsUUFBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQVYsSUFBdUIsSUFBdkIsSUFBK0IsQ0FBQyxNQUFNLENBQUMsdUJBQTNDLEVBQW9FLE1BQU0sQ0FBQyxjQUFQO0FBQzNFLEdBRkQ7O0FBS0MsRUFBQSxNQUFNLENBQUMsMEJBQVAsR0FBb0MsVUFBUyxNQUFULEVBQ3JDO0FBQ0UsSUFBQSxNQUFNLENBQUMsdUJBQVAsR0FBK0IsTUFBL0I7QUFDQSxJQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsYUFBVixHQUF3QixNQUF4QjtBQUNBLElBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxXQUFWLEdBQXNCLElBQXRCO0FBQ0QsR0FMQTs7QUFPRCxFQUFBLE1BQU0sQ0FBQyxtQkFBUCxHQUEyQjtBQUFDLElBQUEsU0FBUyxFQUFDLElBQVg7QUFBZ0IsSUFBQSxjQUFjLEVBQUM7QUFBL0IsR0FBM0I7O0FBRUEsRUFBQSxNQUFNLENBQUMsaUJBQVAsR0FBeUIsWUFBVTtBQUUzQixJQUFBLE1BQU0sQ0FBQyxtQkFBUCxHQUE2QixNQUFNLENBQUMsS0FBUCxDQUFhLG9CQUFiLEVBQTdCO0FBQ1AsR0FIRDs7QUFNQSxFQUFBLE1BQU0sQ0FBQyxxQkFBUCxHQUE2QixZQUFVO0FBRS9CLElBQUEsZUFBZSxDQUFDLHFCQUFoQixDQUFzQyxNQUFNLENBQUMsRUFBUCxDQUFVLFdBQWhELEVBQTZELElBQTdELENBQWtFLFVBQVUsSUFBVixFQUFnQjtBQUNsRSxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFqQyxFQUFzQyxTQUF0QyxFQURrRSxDQUVsRTs7QUFDQSxNQUFBLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLFlBQS9CLENBQTRDLFVBQTVDLEdBQXlELE1BQU0sQ0FBQyxFQUFQLENBQVUsV0FBbkU7QUFFQSxNQUFBLE1BQU0sQ0FBQyxXQUFQO0FBQ0EsTUFBQSxNQUFNLENBQUMscUJBQVAsR0FBNkIsS0FBN0I7QUFDUCxLQVBULEVBT1UsVUFBUyxLQUFULEVBQWU7QUFFRCxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxJQUFsQyxFQUF1QyxPQUF2QztBQUN2QixLQVZEO0FBVVksR0FacEI7O0FBY0EsRUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixHQUE2QixFQUE3QjtBQUVBLEVBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsZUFBcEIsR0FBc0MsRUFBdEM7O0FBR0YsRUFBQSxNQUFNLENBQUMsU0FBUCxHQUFtQixZQUNuQjtBQUNFLFFBQUksTUFBTSxDQUFDLFlBQVAsQ0FBb0IsWUFBcEIsSUFBa0MsU0FBdEMsRUFDQTtBQUNRLE1BQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsTUFBN0IsR0FBc0MsQ0FBdEM7O0FBRUEsV0FBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLE1BQU0sQ0FBQyxZQUFQLENBQW9CLFlBQXBCLENBQWlDLE1BQWhELEVBQXVELENBQUMsRUFBeEQsRUFDQTtBQUNJLFlBQUksU0FBUyxHQUFHO0FBQUMsMEJBQWUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakM7QUFBOEMsdUJBQVksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsQ0FBNkIsTUFBdkY7QUFBOEYsNEJBQW1CLElBQWpIO0FBQXNILG9CQUFTLE1BQU0sQ0FBQyxZQUFQLENBQW9CLFlBQXBCLENBQWlDLENBQWpDLEVBQW9DLEVBQW5LO0FBQXNLLHVCQUFZLENBQWxMO0FBQW9MLDBCQUFlO0FBQW5NLFNBQWhCO0FBQ0EsUUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixDQUE2QixJQUE3QixDQUFrQztBQUFDLG9CQUFTLE1BQU0sQ0FBQyxZQUFQLENBQW9CLFlBQXBCLENBQWlDLENBQWpDLEVBQW9DLEVBQTlDO0FBQWlELHVCQUFZLENBQTdEO0FBQStELDBCQUFlLENBQTlFO0FBQWdGLHVCQUFZO0FBQTVGLFNBQWxDO0FBRUg7QUFDUjtBQUNGLEdBYkQsQ0FqTmlRLENBK05qUTtBQUNFOzs7QUFDQSxFQUFBLE1BQU0sQ0FBQyxPQUFQLEdBQWlCLFlBQ2pCO0FBQ1EsSUFBQSxNQUFNLENBQUMsY0FBUCxHQUFzQixJQUF0QjtBQUNBLElBQUEsb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLGFBQTlDLEVBQTZELElBQTdELENBQWtFLFVBQVUsSUFBVixFQUFnQjtBQUUxRSxNQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXNCLEtBQXRCO0FBQ0EsTUFBQSxNQUFNLENBQUMsT0FBUCxHQUFnQixJQUFJLENBQUMsSUFBckI7QUFFUCxLQUxELEVBS0UsVUFBUyxLQUFULEVBQWU7QUFDVCxNQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXNCLEtBQXRCO0FBQ0EsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDUCxLQVJEO0FBVVAsR0FiRDs7QUFlQSxFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQW1CLFlBQ25CO0FBQ0ksSUFBQSxvQkFBb0IsQ0FBQyx3QkFBckIsQ0FBOEMsYUFBOUMsRUFBNkQsSUFBN0QsQ0FBa0UsVUFBVSxJQUFWLEVBQWdCO0FBRXBFLE1BQUEsTUFBTSxDQUFDLE9BQVAsR0FBZ0IsSUFBSSxDQUFDLElBQXJCO0FBQ08sS0FIckIsRUFHc0IsVUFBUyxLQUFULEVBQWU7QUFFbkIsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDRCxLQU5qQjtBQVFILEdBVkQ7O0FBWUEsRUFBQSxNQUFNLENBQUMsMkJBQVAsR0FBcUMsVUFBUyxLQUFULEVBQWUsR0FBZixFQUNyQztBQUNJLElBQUEsb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLGFBQTlDLEVBQTZELElBQTdELENBQWtFLFVBQVUsSUFBVixFQUFnQjtBQUVwRSxNQUFBLE1BQU0sQ0FBQyxPQUFQLEdBQWdCLElBQUksQ0FBQyxJQUFyQjtBQUNPLEtBSHJCLEVBR3NCLFVBQVMsS0FBVCxFQUFlO0FBRW5CLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0QsS0FOakI7QUFRSCxHQVZEO0FBWUE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFUSxFQUFBLE1BQU0sQ0FBQyxPQUFQOztBQUVDLEVBQUEsTUFBTSxDQUFDLE9BQVAsR0FBaUIsVUFBUyxHQUFULEVBQ2xCO0FBQ08sSUFBQSxHQUFHLENBQUMsVUFBSixHQUFlLElBQWYsQ0FEUCxDQUVPOztBQUNYLElBQUEsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsR0FBbkIsR0FBeUIsR0FBekI7QUFDVyxJQUFBLHFCQUFxQixDQUFDLGNBQXRCLENBQXFDLEdBQXJDLEVBQTBDLElBQTFDLENBQStDLFVBQVMsSUFBVCxFQUFlO0FBRTFEO0FBQ0EsTUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixHQUF0QixFQUEwQixJQUExQjtBQUVELEtBTEgsRUFLSSxVQUFTLEtBQVQsRUFBZTtBQUNoQixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNBLE1BQUEsR0FBRyxDQUFDLFVBQUosR0FBZSxLQUFmO0FBQ0EsS0FSSDtBQVdOLEdBaEJBOztBQWtCRCxFQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLFVBQVUsU0FBVixFQUFvQixHQUFwQixFQUF5QjtBQUNuQyxTQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsR0FBRyxDQUFDLGdCQUFKLENBQXFCLE1BQXBDLEVBQTJDLENBQUMsRUFBNUMsRUFBaUQ7QUFDekMsVUFBSSxHQUFHLENBQUMsZ0JBQUosQ0FBcUIsQ0FBckIsRUFBd0IsUUFBeEIsSUFBa0MsU0FBdEMsRUFBaUQsT0FBTyxHQUFHLENBQUMsZ0JBQUosQ0FBcUIsQ0FBckIsRUFBd0IsU0FBL0I7QUFDeEQ7O0FBQ0QsV0FBTyxJQUFQO0FBQ1AsR0FMRDs7QUFPQSxFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLFVBQVUsU0FBVixFQUFvQixHQUFwQixFQUF5QjtBQUN0QyxTQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsR0FBRyxDQUFDLGdCQUFKLENBQXFCLE1BQXBDLEVBQTJDLENBQUMsRUFBNUMsRUFBaUQ7QUFDekMsVUFBSSxHQUFHLENBQUMsZ0JBQUosQ0FBcUIsQ0FBckIsRUFBd0IsUUFBeEIsSUFBa0MsU0FBdEMsRUFBaUQsT0FBTyxHQUFHLENBQUMsZ0JBQUosQ0FBcUIsQ0FBckIsQ0FBUDtBQUN4RDs7QUFDRCxXQUFPLElBQVA7QUFDUCxHQUxEOztBQU9BLEVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsVUFBVSxJQUFWLEVBQWUsV0FBZixFQUM5QjtBQUNjLFFBQUksTUFBSixFQUFXLElBQVgsRUFBZ0Isb0JBQWhCOztBQUVBLFFBQUksSUFBSSxDQUFDLFFBQUwsSUFBaUIsZUFBckIsRUFBc0M7QUFBQztBQUN2QztBQUNRLFVBQUksSUFBSSxDQUFDLGdCQUFMLElBQXVCLFNBQTNCLEVBQXNDO0FBQzlCLFFBQUEsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGNBQWhCLEVBQStCLElBQS9CLENBQVQ7O0FBQ0EsWUFBSSxRQUFPLEdBQUcsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsY0FBbkIsRUFBa0MsSUFBbEMsQ0FBZDs7QUFDQSxRQUFBLG9CQUFvQixHQUFHLFFBQUgsYUFBRyxRQUFILHVCQUFHLFFBQU8sQ0FBRSxPQUFoQztBQUNBLFlBQUksQ0FBQyxvQkFBRCxJQUF5QixFQUFDLFFBQUQsYUFBQyxRQUFELGVBQUMsUUFBTyxDQUFFLG1CQUFWLENBQTdCLEVBQTRELG9CQUFvQixHQUFHLENBQXZCO0FBQ25FOztBQUNELFVBQUksTUFBTSxLQUFHLFNBQVQsSUFBc0IsTUFBTSxLQUFHLElBQW5DLEVBQXdDO0FBQ2hDLFFBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsMEJBQTVCLEVBQXVELE1BQXZEO0FBQ0EsUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixNQUFJLElBQUksQ0FBQyxJQUFULEdBQWMscUNBQTFDLEVBQWdGLFNBQWhGO0FBQ0EsUUFBQSxJQUFJLENBQUMsVUFBTCxHQUFnQixLQUFoQjtBQUNQLE9BSkQsTUFJUztBQUNELFFBQUEsb0JBQW9CLENBQUMsMEJBQXJCLENBQWdELE1BQWhELEVBQXdELElBQXhELENBQ3ZCLFVBQVMsSUFBVCxFQUFlO0FBQUE7O0FBQ2dCLGNBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFoQjtBQUNBLGNBQUksQ0FBQyxXQUFELElBQWdCLHFCQUFBLElBQUksQ0FBQyxVQUFMLHNFQUFpQixNQUFqQixLQUF5QixTQUE3QyxFQUM1QixnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixNQUFJLElBQUksQ0FBQyxJQUFULEdBQWMscUNBQTFDLEVBQWdGLFNBQWhGLEVBRDRCLEtBRUssZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsTUFBSSxJQUFJLENBQUMsSUFBVCxHQUFjLG9DQUExQyxFQUErRSxNQUEvRTs7QUFFTCxjQUFJLHNCQUFBLElBQUksQ0FBQyxVQUFMLHdFQUFpQixNQUFqQixNQUEwQixTQUE5QixFQUNBO0FBQUE7O0FBRUMsZ0JBQUksQ0FBQyxvQkFBRCxJQUF5QixlQUFDLE9BQUQsc0NBQUMsVUFBUyxtQkFBVixDQUE3QixFQUE0RCxvQkFBb0IsR0FBRyxDQUF2QjtBQUMvRixZQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsSUFBSSxDQUFDLFVBQUwsQ0FBZ0IsTUFBMUIsRUFBbUM7QUFBRSxjQUFBLE9BQU8sRUFBQyxvQkFBVjtBQUErQixjQUFBLE1BQU0sRUFBRSxNQUF2QztBQUErQyxjQUFBLE9BQU8sRUFBQyxJQUFJLENBQUM7QUFBNUQsYUFBbkM7QUFDbUMsV0FMRCxNQU1LLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLHlEQUE1QixFQUFzRixPQUF0Rjs7QUFDTCxVQUFBLElBQUksQ0FBQyxVQUFMLEdBQWdCLEtBQWhCO0FBQ1AsU0FmRCxFQWVFLFVBQVMsS0FBVCxFQUFlO0FBQ1IsVUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDQSxVQUFBLElBQUksQ0FBQyxVQUFMLEdBQWdCLEtBQWhCO0FBQ1IsU0FsQkQ7QUFtQlA7QUFDUixLQWpDRCxNQWtDSztBQUFHO0FBQ0EsVUFBSSxJQUFJLENBQUMsZ0JBQUwsSUFBdUIsU0FBM0IsRUFBc0MsSUFBSSxHQUFHLE1BQU0sQ0FBQyxXQUFQLENBQW1CLGNBQW5CLEVBQWtDLElBQWxDLENBQVA7O0FBQ3RDLFVBQUksSUFBSSxLQUFHLFNBQVAsSUFBb0IsSUFBSSxLQUFHLElBQS9CLEVBQW9DO0FBQzVCLFFBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsMEJBQTVCLEVBQXVELE1BQXZEO0FBQ0EsUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixNQUFJLElBQUksQ0FBQyxJQUFULEdBQWMscUNBQTFDLEVBQWdGLFNBQWhGO0FBQ0EsUUFBQSxJQUFJLENBQUMsVUFBTCxHQUFnQixLQUFoQjtBQUNQLE9BSkQsTUFJUTtBQUNELFFBQUEsb0JBQW9CLENBQUMsMkJBQXJCLENBQWlELElBQUksQ0FBQyxTQUF0RCxFQUFnRSxNQUFoRSxFQUF1RSxJQUFJLENBQUMsT0FBNUUsRUFBcUYsSUFBckYsQ0FDdEIsVUFBUyxJQUFULEVBQWU7QUFDZ0IsY0FBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQW5COztBQUNBLGNBQUksT0FBTyxJQUFHLElBQVYsSUFBa0IsT0FBTyxJQUFFLFNBQTNCLElBQXdDLE1BQU0sQ0FBQyxJQUFQLENBQVksT0FBWixFQUFxQixNQUFyQixJQUE2QixDQUFyRSxJQUEwRSxPQUFPLENBQUMsVUFBUixJQUFvQixTQUFsRyxFQUE2RztBQUNyRyxZQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLGdDQUE4QixJQUFJLENBQUMsSUFBbkMsR0FBeUMsNENBQXpDLEdBQXNGLElBQUksQ0FBQyxTQUEzRixHQUFxRyxZQUFyRyxHQUFrSCxJQUFJLENBQUMsT0FBbkosRUFBMkosT0FBM0o7QUFDUCxXQUZELE1BRU87QUFBQTs7QUFDQyxnQkFBSSxDQUFDLFdBQUwsRUFBbUIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsTUFBSSxJQUFJLENBQUMsSUFBVCxHQUFjLHFDQUExQyxFQUFnRixTQUFoRixFQUFuQixLQUNLLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLE1BQUksSUFBSSxDQUFDLElBQVQsR0FBYyxvQ0FBMUMsRUFBK0UsTUFBL0U7QUFDTCxZQUFBLG9CQUFvQixHQUFHLElBQUksQ0FBQyxPQUE1QjtBQUNBLGdCQUFJLENBQUMsb0JBQUQsSUFBeUIsV0FBQyxJQUFELGtDQUFDLE1BQU0sbUJBQVAsQ0FBN0IsRUFBeUQsb0JBQW9CLEdBQUcsQ0FBdkI7QUFDekQsWUFBQSxNQUFNLENBQUMsRUFBUCx3QkFBVSxPQUFPLENBQUMsVUFBbEIsaUZBQVUsb0JBQW9CLGdCQUE5QiwwREFBVSxzQkFBc0MsTUFBaEQsRUFBeUQ7QUFBRSxjQUFBLE1BQU0sMEJBQUUsT0FBTyxDQUFDLFVBQVYseURBQUUscUJBQW9CLEdBQTlCO0FBQWtDLGNBQUEsT0FBTyxFQUFDLG9CQUExQztBQUFnRSxjQUFBLE9BQU8sRUFBQyxJQUFJLENBQUMsR0FBN0U7QUFBaUYsY0FBQSxHQUFHLEVBQUMsTUFBTSxDQUFDLE1BQVAsQ0FBYztBQUFuRyxhQUF6RDtBQUNQOztBQUNELFVBQUEsSUFBSSxDQUFDLFVBQUwsR0FBZ0IsS0FBaEI7QUFDOUIsU0FicUIsRUFhcEIsVUFBUyxLQUFULEVBQWU7QUFDZSxVQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNBLFVBQUEsSUFBSSxDQUFDLFVBQUwsR0FBZ0IsS0FBaEI7QUFDUixTQWhCRjtBQWlCTjtBQUVwQjtBQUNJLEdBakVEO0FBbUVHO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNTLEVBQUEsTUFBTSxDQUFDLHFCQUFQLEdBQStCLFVBQVMsR0FBVCxFQUFhLEtBQWIsRUFBbUIsUUFBbkIsRUFDaEM7QUFDUSxJQUFBLEdBQUcsQ0FBQyxXQUFKLEdBQWdCLElBQWhCO0FBQ0EsSUFBQSxvQkFBb0IsQ0FBQywyQkFBckIsQ0FBaUQsR0FBakQsRUFBcUQsaUJBQWUsR0FBRyxDQUFDLFFBQXhFLEVBQWlGLFFBQWpGLEVBQTJGLElBQTNGLENBQWdHLFVBQVUsSUFBVixFQUFnQjtBQUV0RyxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsR0FBdEMsRUFBMEMsU0FBMUM7QUFDQSxNQUFBLEdBQUcsQ0FBQyxXQUFKLEdBQWdCLEtBQWhCO0FBQ0EsTUFBQSxNQUFNLENBQUMsT0FBUCxDQUFlLEtBQWYsRUFBc0IsS0FBdEIsR0FBNEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUFWLENBQWUsS0FBM0M7QUFDQSxNQUFBLE1BQU0sQ0FBQyxPQUFQLENBQWUsS0FBZixFQUFzQixTQUF0QixHQUFnQyxJQUFJLENBQUMsSUFBTCxDQUFVLElBQVYsQ0FBZSxTQUEvQztBQUdULEtBUkQsRUFRRSxVQUFTLEtBQVQsRUFBZTtBQUVILFVBQUksS0FBSyxDQUFDLElBQU4sQ0FBVyxLQUFYLEtBQW1CLFNBQXZCLEVBQWtDLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxJQUFOLENBQVcsR0FBdkMsRUFBMkMsT0FBM0MsRUFBbEMsS0FDSyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsSUFBbEMsRUFBdUMsT0FBdkM7QUFDTCxNQUFBLEdBQUcsQ0FBQyxXQUFKLEdBQWdCLEtBQWhCO0FBQ2IsS0FiRDtBQWVQLEdBbEJBOztBQXFCRCxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLFVBQVMsVUFBVCxFQUFvQixRQUFwQixFQUE2QjtBQUc5QyxJQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUE0QixRQUE1QjtBQUNBLElBQUEsTUFBTSxDQUFDLGVBQVAsR0FBdUIsSUFBdkI7QUFFQSxRQUFJLE1BQU0sR0FBQyxNQUFNLENBQUMsUUFBbEI7O0FBRUEsUUFBSSxNQUFNLENBQUMsVUFBUCxHQUFrQixDQUF0QixFQUF3QjtBQUNwQixVQUFJLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBTSxDQUFDLFVBQVAsR0FBa0IsUUFBNUIsSUFBc0MsT0FBMUMsRUFDQTtBQUNFLFFBQUEsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBTSxDQUFDLFVBQVAsR0FBa0IsUUFBNUIsQ0FBVjtBQUNEO0FBQ0g7O0FBR0YsSUFBQSxvQkFBb0IsQ0FBQywwQkFBckIsQ0FBZ0QsVUFBaEQsRUFBMkQsUUFBM0QsRUFBb0UsTUFBcEUsRUFBMkUsVUFBM0UsRUFBc0YsSUFBdEYsRUFBNEYsSUFBNUYsQ0FBaUcsVUFBUyxJQUFULEVBQWU7QUFFaEcsTUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixJQUFsQjtBQUNBLE1BQUEsTUFBTSxDQUFDLG1CQUFQLEdBQTZCLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBdkM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLElBQUksQ0FBQyxJQUFMLENBQVUsSUFBNUI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLElBQUksQ0FBQyxJQUFMLENBQVUsUUFBaEM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXNCLElBQUksQ0FBQyxJQUFMLENBQVUsS0FBaEM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQW1CLFVBQW5CO0FBQ0EsTUFBQSxNQUFNLENBQUMsYUFBUCxHQUF1QixJQUFJLENBQUMsSUFBTCxDQUFVLE1BQU0sQ0FBQyxjQUFQLEdBQXNCLFFBQWhDLENBQXZCO0FBRUEsVUFBSyxNQUFNLENBQUMsY0FBUCxJQUF1QixRQUF2QixJQUFtQyxNQUFNLENBQUMsWUFBUCxDQUFvQixNQUFwQixHQUEyQixDQUEvRCxJQUFxRSxNQUFNLENBQUMsY0FBUCxJQUF1QixDQUFoRyxFQUFtRyxNQUFNLENBQUMsV0FBUCxHQUFxQixJQUFyQixDQUFuRyxLQUNLLE1BQU0sQ0FBQyxXQUFQLEdBQW1CLEtBQW5CO0FBRUwsTUFBQSxNQUFNLENBQUMsZUFBUCxHQUF1QixLQUF2QjtBQUVDLEtBZmpCLEVBZWtCLFVBQVMsS0FBVCxFQUFlO0FBRWhCLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0EsTUFBQSxNQUFNLENBQUMsZUFBUCxHQUF1QixLQUF2QjtBQUNILEtBbkJkO0FBb0JQLEdBcENEOztBQXFDQSxFQUFBLE1BQU0sQ0FBQyxvQkFBUCxHQUE4QixZQUFVO0FBQ2hDLElBQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTRCLE1BQU0sQ0FBQyxrQkFBUCxHQUEwQixFQUF0RDtBQUNBLElBQUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsQ0FBdkIsRUFBeUIsTUFBTSxDQUFDLGtCQUFoQztBQUVQLEdBSkQ7O0FBT0EsRUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixVQUFTLFVBQVQsRUFBb0IsUUFBcEIsRUFBNkI7QUFHN0MsSUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsUUFBNUI7QUFDQSxJQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXVCLElBQXZCO0FBRUEsUUFBSSxNQUFNLEdBQUMsTUFBTSxDQUFDLFFBQWxCOztBQUVBLFFBQUksTUFBTSxDQUFDLFVBQVAsR0FBa0IsQ0FBdEIsRUFBd0I7QUFDcEIsVUFBSSxJQUFJLENBQUMsSUFBTCxDQUFVLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLFFBQTVCLElBQXNDLE9BQTFDLEVBQ0E7QUFDRSxRQUFBLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBTCxDQUFVLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLFFBQTVCLENBQVY7QUFDRDtBQUNIOztBQUdGLElBQUEsb0JBQW9CLENBQUMsc0JBQXJCLENBQTRDLFVBQTVDLEVBQXVELFFBQXZELEVBQWdFLE1BQWhFLEVBQXVFLElBQXZFLEVBQTZFLElBQTdFLENBQWtGLFVBQVMsSUFBVCxFQUFlO0FBRWpGLE1BQUEsTUFBTSxDQUFDLFVBQVAsR0FBa0IsSUFBbEI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBaEM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLElBQUksQ0FBQyxJQUFMLENBQVUsSUFBNUI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLElBQUksQ0FBQyxJQUFMLENBQVUsUUFBaEM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXNCLElBQUksQ0FBQyxJQUFMLENBQVUsS0FBaEM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQW1CLFVBQW5CO0FBQ0EsTUFBQSxNQUFNLENBQUMsYUFBUCxHQUF1QixJQUFJLENBQUMsSUFBTCxDQUFVLE1BQU0sQ0FBQyxjQUFQLEdBQXNCLFFBQWhDLENBQXZCO0FBRUEsVUFBSyxNQUFNLENBQUMsY0FBUCxJQUF1QixRQUF2QixJQUFtQyxNQUFNLENBQUMsWUFBUCxDQUFvQixNQUFwQixHQUEyQixDQUEvRCxJQUFxRSxNQUFNLENBQUMsY0FBUCxJQUF1QixDQUFoRyxFQUFtRyxNQUFNLENBQUMsV0FBUCxHQUFxQixJQUFyQixDQUFuRyxLQUNLLE1BQU0sQ0FBQyxXQUFQLEdBQW1CLEtBQW5CO0FBRUwsTUFBQSxNQUFNLENBQUMsZUFBUCxHQUF1QixLQUF2QjtBQUVDLEtBZmpCLEVBZWtCLFVBQVMsS0FBVCxFQUFlO0FBRWhCLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0EsTUFBQSxNQUFNLENBQUMsZUFBUCxHQUF1QixLQUF2QjtBQUNILEtBbkJkO0FBb0JQLEdBcENEOztBQXFDQSxFQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQixZQUFVO0FBQzVCLElBQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTRCLE1BQU0sQ0FBQyxrQkFBUCxHQUEwQixFQUF0RDtBQUNBLElBQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsQ0FBdEIsRUFBd0IsTUFBTSxDQUFDLGtCQUEvQjtBQUVQLEdBSkQ7O0FBS0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixZQUN0QjtBQUVHLElBQUEsV0FBVyxDQUFDLFlBQVosQ0FBeUIsTUFBTSxDQUFDLFlBQWhDLEVBQThDLElBQTlDLENBQW1ELFVBQVMsSUFBVCxFQUFlO0FBQ3BELE1BQUEsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsR0FBL0IsR0FBcUMsSUFBSSxDQUFDLElBQTFDO0FBQ0EsTUFBQSxRQUFRLENBQUMsR0FBVCxDQUFhLFNBQWIsRUFBd0IsVUFBVSxDQUFDLE9BQW5DO0FBQ0EsTUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixHQUFyRDtBQUNBLE1BQUEsTUFBTSxDQUFDLFNBQVA7QUFDQyxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxHQUFqQyxFQUFxQyxTQUFyQztBQUNPLEtBTnRCLEVBTXVCLFVBQVMsS0FBVCxFQUFlO0FBRW5CLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0QsS0FUbEI7QUFVRixHQWJEOztBQWlCQSxNQUFJLDJCQUFBLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLEdBQS9CLDRHQUFvQyxNQUFwQyxrRkFBNEMsVUFBNUMsS0FBd0QsV0FBeEQsSUFBdUUsNEJBQUEsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsR0FBL0IsK0dBQW9DLE1BQXBDLG9GQUE0QyxVQUE1QyxLQUF3RCxpQkFBbkksRUFBc0osTUFBTSxDQUFDLEVBQVAsQ0FBVSx1QkFBVixFQUFrQztBQUFDLElBQUEsT0FBTyxFQUFDO0FBQVQsR0FBbEM7QUFDdEo7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVLOztBQUVMLFFBQVEsQ0FBQyxPQUFULEdBQW1CLENBQUMsUUFBRCxFQUFXLFlBQVgsRUFBd0IsUUFBeEIsRUFBaUMsVUFBakMsRUFBNEMsV0FBNUMsRUFBd0QscUJBQXhELEVBQThFLG1CQUE5RSxFQUFrRyxrQkFBbEcsRUFBcUgsY0FBckgsRUFBb0ksdUJBQXBJLEVBQTRKLGFBQTVKLEVBQTBLLHNCQUExSyxFQUFpTSxpQkFBak0sRUFBbU4saUJBQW5OLEVBQXFPLGlCQUFyTyxFQUF1UCxVQUF2UCxFQUFrUSxjQUFsUSxDQUFuQjs7QUFHTyxTQUFTLFVBQVQsQ0FBb0IsTUFBcEIsRUFBNEIsVUFBNUIsRUFBdUMsTUFBdkMsRUFBOEMsUUFBOUMsRUFBdUQsU0FBdkQsRUFBaUUsbUJBQWpFLEVBQXFGLGlCQUFyRixFQUF1RyxnQkFBdkcsRUFBd0gsWUFBeEgsRUFBcUkscUJBQXJJLEVBQTJKLFdBQTNKLEVBQXVLLG9CQUF2SyxFQUE0TCxlQUE1TCxFQUE0TSxlQUE1TSxFQUE0TixlQUE1TixFQUE0TyxRQUE1TyxFQUFxUCxZQUFyUCxFQUFrUTtBQUFBOztBQUdqUSxFQUFBLE1BQU0sQ0FBQyxJQUFQLEdBQVksWUFBWjtBQUNBLEVBQUEsVUFBVSxDQUFDLFNBQVgsR0FBc0IsdUJBQXRCO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFvQixNQUFNLENBQUMsT0FBUCxDQUFlLElBQW5DO0FBQ0EsRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQjtBQUFDLFlBQU87QUFBUixHQUFyQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBbUIsRUFBbkI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxFQUFQLEdBQVUsRUFBVjtBQUNBLEVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBc0IsRUFBdEI7QUFDQSxNQUFJLElBQUksR0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQztBQUNBLEVBQUEsTUFBTSxDQUFDLG9CQUFQLDhCQUE0QixVQUFVLENBQUMsT0FBWCxDQUFtQixXQUEvQyw0REFBNEIsd0JBQWdDLFVBQTVEO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixPQUFPLENBQUMsSUFBUixDQUFhLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLEdBQTVDLENBQXRCO0FBQ0EsRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFnQixFQUFoQjtBQUNBLEVBQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTBCLEVBQTFCO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUF1QixVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixZQUF0RDtBQUNBLEVBQUEsTUFBTSxDQUFDLGlCQUFQLEdBQXlCO0FBQUMsSUFBQSxPQUFPLEVBQUM7QUFBVCxHQUF6QjtBQUNBLE1BQUksTUFBTSxDQUFDLFlBQVAsSUFBcUIsU0FBekIsRUFBb0MsTUFBTSxDQUFDLFlBQVAsR0FBc0IsRUFBdEI7QUFFcEMsTUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFaLEVBQW9CLE1BQU0sQ0FBQyxNQUFQLEdBQWMsRUFBZDtBQUVwQixFQUFBLE1BQU0sQ0FBQyxNQUFQLENBQWMsV0FBZCxHQUEwQixDQUExQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsV0FBdEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGFBQXBCOztBQUVOLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsVUFBVSxNQUFWLEVBQWtCO0FBQ3RDLElBQUEsQ0FBQyxDQUFDLFdBQUQsQ0FBRCxDQUFlLEtBQWYsQ0FBcUIsTUFBckI7QUFDQSxJQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQW1CLFVBQW5CLENBRnNDLENBR3RDO0FBQ0QsR0FKRDs7QUFPTSxFQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUEyQixZQUFVO0FBQUE7O0FBQ3JCLFdBQU8sVUFBUCxhQUFPLFVBQVAsK0NBQU8sVUFBVSxDQUFFLE9BQW5CLHlEQUFPLHFCQUFxQixZQUFyQixDQUFrQyxVQUFsQyxhQUFrQyxVQUFsQywrQ0FBa0MsVUFBVSxDQUFFLE9BQTlDLHlEQUFrQyxxQkFBcUIsVUFBdkQsQ0FBUDtBQUNmLEdBRkQ7O0FBS0EsTUFBSSxZQUFZLENBQUMsR0FBakIsRUFBc0I7QUFDTjtBQUNBLElBQUEsY0FBYyxDQUFDLE9BQWYsQ0FBdUIsYUFBdkIsRUFBc0MsWUFBWSxDQUFDLEdBQW5EO0FBQ0EsSUFBQSxVQUFVLENBQUMsT0FBWCxDQUFtQixVQUFuQixHQUFpQyxZQUFZLENBQUMsR0FBOUM7QUFDZjs7QUFFRCxFQUFBLE1BQU0sQ0FBQyxLQUFQLEdBQWEsZUFBYjtBQUNBLEVBQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxnQkFBYixHQTVDaVEsQ0E4Q2pROztBQUNBLEVBQUEsTUFBTSxDQUFDLE9BQVAsR0FBaUIsWUFDakI7QUFDUSxJQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXNCLElBQXRCO0FBQ0EsSUFBQSxvQkFBb0IsQ0FBQyxpQ0FBckIsQ0FBdUQsY0FBdkQsRUFBdUUsSUFBdkUsQ0FBNEUsVUFBVSxJQUFWLEVBQWdCO0FBRXBGLE1BQUEsTUFBTSxDQUFDLGNBQVAsR0FBc0IsS0FBdEI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxPQUFQLEdBQWdCLElBQUksQ0FBQyxJQUFyQjtBQUVQLEtBTEQsRUFLRSxVQUFTLEtBQVQsRUFBZTtBQUNULE1BQUEsTUFBTSxDQUFDLGNBQVAsR0FBc0IsS0FBdEI7QUFDQSxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNQLEtBUkQ7QUFVUCxHQWJELENBL0NpUSxDQStEeFE7QUFDQzs7O0FBR00sRUFBQSxNQUFNLENBQUMsT0FBUDtBQUVBLEVBQUEsTUFBTSxDQUFDLFdBQVAsR0FBbUIsRUFBbkI7O0FBQ0EsRUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixVQUFVLFdBQVYsRUFBdUI7QUFDdkMsSUFBQSxNQUFNLENBQUMsZUFBUCxHQUF5QixJQUF6QjtBQUNBLElBQUEsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsTUFBbkIsR0FBMEIsQ0FBMUI7QUFDQSxJQUFBLG9CQUFvQixDQUFDLDJCQUFyQixDQUFpRCxXQUFqRCxFQUE2RCxjQUE3RCxFQUE0RSxDQUE1RSxFQUE4RSxRQUE5RSxFQUF3RixJQUF4RixDQUE2RixVQUFTLElBQVQsRUFBZTtBQUFBOztBQUM3RjtBQUNDLE1BQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsS0FBekI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQW1CLElBQUksQ0FBQyxJQUF4QjtBQUNBLE1BQUEsTUFBTSxDQUFDLFdBQVAsaUJBQW1CLElBQUksQ0FBQyxJQUF4QiwrQ0FBbUIsV0FBVyxVQUE5QjtBQUNBLE1BQUEsTUFBTSxDQUFDLE1BQVAsQ0FBYyxXQUFkLEdBQTBCLENBQTFCO0FBQ0MsS0FOakIsRUFNa0IsVUFBUyxLQUFULEVBQWU7QUFFYixNQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLEtBQXpCO0FBQ0EsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFFbkIsS0FYRDtBQWFQLEdBaEJEOztBQWtCQyxFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLFVBQVMsR0FBVCxFQUN0QjtBQUNNO0FBQ1IsSUFBQSxNQUFNLENBQUMsTUFBUCxDQUFjLFdBQWQsR0FBMEIsR0FBMUI7QUFDUyxJQUFBLE1BQU0sQ0FBQyxNQUFQLENBQWMsV0FBZCxHQUEwQixDQUExQjtBQUNBLElBQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsR0FBRyxDQUFDLEdBQTFCO0FBRU4sR0FQQTs7QUFTRCxFQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUEyQixFQUEzQjs7QUFFQSxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLFlBQ3pCO0FBQ08sSUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsSUFBNUI7QUFDQyxJQUFBLG9CQUFvQixDQUFDLGVBQXJCLENBQXFDLE1BQU0sQ0FBQyxXQUFQLENBQW1CLEVBQXhELEVBQTJELE1BQU0sQ0FBQyxXQUFQLENBQW1CLEdBQTlFLEVBQWtGLGFBQWxGLEVBQWlHLElBQWpHLENBQ1gsVUFBUyxJQUFULEVBQWU7QUFDWSxNQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUE0QixLQUE1QjtBQUN4QixNQUFBLENBQUMsQ0FBQyxXQUFELENBQUQsQ0FBZSxLQUFmLENBQXFCLE1BQXJCO0FBQ3dCLE1BQUEsTUFBTSxDQUFDLGlCQUFQLENBQXlCLE1BQU0sQ0FBQyxXQUFQLENBQW1CLEdBQTVDLElBQWlELElBQWpEO0FBQ0EsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsSUFBakMsRUFBc0MsU0FBdEM7QUFDeEIsTUFBQSxNQUFNLENBQUMsT0FBUDtBQUNjLEtBUE4sRUFPTyxVQUFTLEtBQVQsRUFBZTtBQUNWLE1BQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTRCLEtBQTVCO0FBQ0EsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDWCxLQVZEO0FBWVAsR0FmRDtBQW9CSDs7QUFFRSxTQUFTLGNBQVQsQ0FBeUIsTUFBekIsRUFBaUMsVUFBakMsRUFBNEMsTUFBNUMsRUFBbUQsUUFBbkQsRUFBNEQsZ0JBQTVELEVBQTZFLFdBQTdFLEVBQXlGLFdBQXpGLEVBQXFHLFFBQXJHLEVBQThHLFlBQTlHLEVBQTJIO0FBQUE7O0FBRTFILEVBQUEsTUFBTSxDQUFDLElBQVAsR0FBWSxnQkFBWjtBQUNBLEVBQUEsVUFBVSxDQUFDLFNBQVgsR0FBc0Isc0JBQXRCO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFvQixNQUFNLENBQUMsT0FBUCxDQUFlLElBQW5DO0FBQ0EsRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQjtBQUFDLFlBQU87QUFBUixHQUFyQjtBQUNBLEVBQUEsTUFBTSxDQUFDLG9CQUFQLDhCQUE0QixVQUFVLENBQUMsT0FBWCxDQUFtQixXQUEvQyw0REFBNEIsd0JBQWdDLFVBQTVELENBTjBILENBTzFIOztBQUVBLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsV0FBdEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGFBQXBCOztBQUdBLEVBQUEsTUFBTSxDQUFDLFdBQVAsR0FBb0IsVUFBVSxHQUFWLEVBQWMsV0FBZCxFQUEyQjtBQUMzQztBQUNBLElBQUEsUUFBUSxDQUFDLGdCQUFULENBQTBCLGVBQTFCLEVBQTJDLE9BQTNDLENBQW1ELFVBQUMsT0FBRCxFQUFhO0FBQzVELE1BQUEsT0FBTyxDQUFDLEtBQVIsQ0FBYyxPQUFkLEdBQXdCLE1BQXhCO0FBQ0gsS0FGRCxFQUYyQyxDQU0zQzs7QUFDQSxJQUFBLFFBQVEsQ0FBQyxnQkFBVCxDQUEwQixNQUExQixFQUFrQyxPQUFsQyxDQUEwQyxVQUFDLE9BQUQsRUFBYTtBQUNuRCxNQUFBLE9BQU8sQ0FBQyxTQUFSLENBQWtCLE1BQWxCLENBQXlCLFlBQXpCO0FBQ0gsS0FGRCxFQVAyQyxDQVczQzs7QUFDQSxJQUFBLFFBQVEsQ0FBQyxjQUFULENBQXdCLFdBQXhCLEVBQXFDLEtBQXJDLENBQTJDLE9BQTNDLEdBQXFELE1BQXJEO0FBQ0EsSUFBQSxRQUFRLENBQUMsY0FBVCxDQUF3QixRQUFRLFdBQWhDLEVBQTZDLFNBQTdDLENBQXVELEdBQXZELENBQTJELFlBQTNEO0FBQ0gsR0FkRDs7QUFpQkEsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFvQixVQUFVLE1BQVYsRUFBaUIsVUFBakIsRUFBNkI7QUFBQTs7QUFBQztBQUV2RCxRQUFJLDBCQUFFLFVBQVUsQ0FBQyxPQUFiLDBFQUFFLHFCQUFvQixXQUF0QixrREFBRSxzQkFBaUMsTUFBbkMsQ0FBSixFQUFnRCxNQUFNLENBQUMsRUFBUCxDQUFVLGlCQUFWLEVBRk0sQ0FJN0M7O0FBQ0EsUUFBSyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixHQUEvQixJQUFvQyxTQUF6QyxFQUFxRCxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixHQUEvQixHQUFtQyxFQUFuQztBQUNyRCxRQUFLLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLEdBQS9CLENBQW1DLE1BQW5DLElBQTJDLFNBQWhELEVBQTRELFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLEdBQS9CLENBQW1DLE1BQW5DLEdBQTBDLEVBQTFDO0FBQzVELElBQUEsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsR0FBL0IsQ0FBbUMsTUFBbkMsQ0FBMEMsVUFBMUMsR0FBcUQsTUFBckQsQ0FQNkMsQ0FTN0M7O0FBQ0EsUUFBSSxVQUFKLEVBQ0E7QUFDQSxNQUFBLFdBQVcsQ0FBQyxnQkFBWixDQUE2QixNQUE3QixFQUFxQyxJQUFyQyxDQUEwQyxVQUFTLElBQVQsRUFBZTtBQUNyRCxRQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsR0FBdEMsRUFBMEMsU0FBMUMsRUFEcUQsQ0FFcEQ7O0FBRUQsUUFBQSxRQUFRLENBQUMsU0FBVCxDQUFtQixhQUFuQixFQUFtQztBQUMvQixVQUFBLE1BQU0sRUFBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixNQURUO0FBRS9CLFVBQUEsUUFBUSxFQUFFLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLFFBRlY7QUFHL0IsVUFBQSxVQUFVLEVBQUUsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsVUFIWjtBQUkvQixVQUFBLFNBQVMsRUFBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixTQUpaO0FBS2hDO0FBQ0MsVUFBQSxVQUFVLEVBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsVUFOWDtBQU8vQixVQUFBLFlBQVksRUFBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixZQVBiO0FBUS9CLFVBQUEsUUFBUSxFQUFFLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLFFBUlY7QUFTL0IsVUFBQSxTQUFTLEVBQUUsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsU0FUWDtBQVUvQixVQUFBLElBQUksRUFBRSxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQVZOO0FBVy9CLFVBQUEsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLE9BWFQ7QUFZL0IsVUFBQSxHQUFHLEVBQUM7QUFBQyxZQUFBLE1BQU0sRUFBQztBQUFDLGNBQUEsVUFBVSxFQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLEdBQS9CLENBQW1DLE1BQW5DLENBQTBDO0FBQXREO0FBQVIsV0FaMkI7QUFhaEMsVUFBQSxZQUFZLEVBQUU7QUFBQyxZQUFBLEVBQUUsRUFBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixZQUEvQixDQUE0QztBQUFoRDtBQWJrQixTQUFuQztBQWdCQSxRQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsaUJBQVY7QUFDQyxPQXJCTCxFQXFCTSxVQUFTLEtBQVQsRUFBZTtBQUVqQixRQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNILE9BeEJEO0FBMEJDLEtBNUJELE1BNEJRLE1BQU0sQ0FBQyxFQUFQLENBQVUsaUJBQVYsRUF0Q3FDLENBdUM3Qzs7QUFHSCxHQTFDRDs7QUE4Q0EsRUFBQSxNQUFNLENBQUMsY0FBUCxHQUFzQixVQUFVLE9BQVYsRUFBbUI7QUFDdkMsSUFBQSxRQUFRLENBQUMsZ0JBQVQsQ0FBMEIsdUJBQTFCLEVBQW1ELE9BQW5ELENBQTJELFVBQUMsT0FBRCxFQUFhO0FBQ2xFLE1BQUEsT0FBTyxDQUFDLEtBQVIsQ0FBYyxPQUFkLEdBQXdCLE9BQXhCO0FBQ0gsS0FGSDtBQUdELEdBSkQsQ0E1RTBILENBaUYxSDs7O0FBQ0EsRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFnQixZQUFZO0FBQ3hCLElBQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsTUFBdEI7QUFDQSxJQUFBLFFBQVEsQ0FBQyxjQUFULENBQXdCLFFBQXhCLEVBQWtDLEtBQWxDLENBQXdDLE9BQXhDLEdBQWtELE1BQWxEO0FBQ0gsR0FIRCxDQWxGMEgsQ0F1RjFIOzs7QUFDQSxFQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXVCLFlBQVk7QUFDL0IsSUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixPQUF0QjtBQUNBLElBQUEsUUFBUSxDQUFDLGNBQVQsQ0FBd0IsUUFBeEIsRUFBa0MsS0FBbEMsQ0FBd0MsT0FBeEMsR0FBa0QsTUFBbEQ7QUFDSCxHQUhELENBeEYwSCxDQTZGMUg7OztBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsWUFBWTtBQUMvQixJQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLFdBQXBCLEVBQWdDLElBQWhDO0FBQ0YsR0FGRDtBQUlQOztBQUdBLGNBQWMsQ0FBQyxPQUFmLEdBQXlCLENBQUMsUUFBRCxFQUFXLFlBQVgsRUFBd0IsUUFBeEIsRUFBaUMsVUFBakMsRUFBNEMsa0JBQTVDLEVBQStELGFBQS9ELEVBQTZFLGFBQTdFLEVBQTJGLFVBQTNGLEVBQXNHLGNBQXRHLENBQXpCOztBQUdPLFNBQVMsUUFBVCxDQUFtQixNQUFuQixFQUEyQixVQUEzQixFQUFzQyxNQUF0QyxFQUE2QyxRQUE3QyxFQUFzRCxtQkFBdEQsRUFBMEUsaUJBQTFFLEVBQTRGLGdCQUE1RixFQUE2RyxZQUE3RyxFQUEwSCxxQkFBMUgsRUFBZ0osV0FBaEosRUFBNEosb0JBQTVKLEVBQWlMLGVBQWpMLEVBQWlNLGVBQWpNLEVBQWlOLFFBQWpOLEVBQTBOLFlBQTFOLEVBQXVPO0FBRXZPLEVBQUEsTUFBTSxDQUFDLElBQVAsR0FBWSxVQUFaO0FBQ0EsRUFBQSxVQUFVLENBQUMsU0FBWCxHQUFzQixnQkFBdEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQW9CLE1BQU0sQ0FBQyxPQUFQLENBQWUsSUFBbkMsQ0FKdU8sQ0FLdk87QUFDUDs7QUFHQSxRQUFRLENBQUMsT0FBVCxHQUFtQixDQUFDLFFBQUQsRUFBVyxZQUFYLEVBQXdCLFFBQXhCLEVBQWlDLFVBQWpDLEVBQTRDLHFCQUE1QyxFQUFrRSxtQkFBbEUsRUFBc0Ysa0JBQXRGLEVBQXlHLGNBQXpHLEVBQXdILHVCQUF4SCxFQUFnSixhQUFoSixFQUE4SixzQkFBOUosRUFBcUwsaUJBQXJMLEVBQXVNLGlCQUF2TSxFQUF5TixVQUF6TixFQUFvTyxjQUFwTyxDQUFuQjs7QUFHTSxTQUFTLFVBQVQsQ0FBb0IsTUFBcEIsRUFBMkIsVUFBM0IsRUFBc0MsTUFBdEMsRUFBNkMsb0JBQTdDLEVBQWtFLFlBQWxFLEVBQStFLFdBQS9FLEVBQTJGLFlBQTNGLEVBQXdHLFFBQXhHLEVBQWlILFFBQWpILEVBQTBILGdCQUExSCxFQUEySTtBQUcxSSxFQUFBLE1BQU0sQ0FBQyxJQUFQLEdBQVksWUFBWjtBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsV0FBdEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxLQUFQLEdBQWM7QUFBQyxJQUFBLFFBQVEsRUFBRSxNQUFNLENBQUMsWUFBUCxDQUFvQixlQUFwQjtBQUFYLEdBQWQ7QUFDQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQW9CLEtBQXBCO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFvQixJQUFwQjtBQUVBLEVBQUEsTUFBTSxDQUFDLE1BQVAsR0FBYyxFQUFkO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUF1QixVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixZQUF0RDtBQUNBLEVBQUEsTUFBTSxDQUFDLFdBQVAsR0FBcUIsTUFBTSxDQUFDLE9BQVAsQ0FBZSxJQUFwQztBQUNBLEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsWUFBWSxDQUFDLFNBQXRDO0FBQ0EsRUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLGlCQUFiLEdBQWlDLFlBQVksQ0FBQyxXQUE5QztBQUNBLE1BQUksSUFBSSxHQUFJLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTNDO0FBQ0EsRUFBQSxNQUFNLENBQUMsU0FBUCxHQUFtQixrQkFBVSxRQUFWLEVBQW9CLFdBQXBCLENBQW5COztBQUVBLEVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsVUFBUyxJQUFULEVBQ3hCO0FBRUcsSUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixVQUFwQixDQUErQixJQUEvQixFQUFxQyxJQUFyQyxDQUEwQyxVQUFVLElBQVYsRUFBZ0I7QUFFekQsVUFBSSxNQUFNLENBQUMsZUFBUCxJQUF3QixTQUF4QixJQUFxQyxLQUFLLENBQUMsTUFBTSxDQUFDLGVBQVIsQ0FBMUMsSUFBc0UsTUFBTSxDQUFDLGVBQVAsS0FBeUIsQ0FBL0YsSUFBb0csTUFBTSxDQUFDLGVBQVAsS0FBeUIsRUFBakksRUFDQTtBQUNJLFFBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsTUFBTSxDQUFDLG1CQUFQLENBQTJCLE1BQU0sQ0FBQyxXQUFsQyxDQUF6QjtBQUNIOztBQUlELFVBQUksTUFBTSxDQUFDLFlBQVAsQ0FBb0IsZUFBcEIsRUFBSixFQUNBO0FBQ0UsUUFBQSxNQUFNLENBQUMsYUFBUCxDQUFxQixNQUFNLENBQUMsbUJBQTVCO0FBRUQsT0FKRCxNQU1BO0FBQ0UsUUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixNQUFNLENBQUMsZUFBeEI7QUFDRDtBQUdGLEtBcEJBO0FBc0JGLEdBekJELENBakIwSSxDQStDM0k7OztBQUNBLEVBQUEsTUFBTSxDQUFDLGFBQVAsR0FBdUIsVUFBUyxNQUFULEVBQWlCO0FBRXJDLFdBQVEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsYUFBcEIsQ0FBa0MsTUFBbEMsRUFBeUMsSUFBekMsQ0FBUjtBQUVELEdBSkY7O0FBTUQsRUFBQSxNQUFNLENBQUMsVUFBUCxHQUFvQixZQUFXO0FBQzdCO0FBQ1EsSUFBQSxNQUFNLENBQUMsWUFBUCxHQUFvQixJQUFwQixDQUZxQixDQUc5QjtBQUNFLEdBSkgsQ0F0RDRJLENBMkQ1STs7O0FBQ0EsRUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBNkIsVUFBUyxnQkFBVCxFQUEyQjtBQUVwRCxXQUFRLE1BQU0sQ0FBQyxZQUFQLENBQW9CLHFCQUFwQixDQUEwQyxnQkFBMUMsRUFBMkQsSUFBM0QsQ0FBUjtBQUVILEdBSkQ7O0FBT0YsRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQixVQUFTLE1BQVQsRUFBaUI7QUFDcEMsSUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixtQkFBcEIsQ0FBd0MsTUFBeEMsRUFEb0MsQ0FFcEM7QUFDRCxHQUhELENBbkU4SSxDQXdFNUk7OztBQUNBLEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBbUIsVUFBUyxRQUFULEVBQW1CO0FBQ3BDLElBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsUUFBekI7QUFDQSxJQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGtCQUFwQixDQUF1QyxNQUFNLENBQUMsZUFBOUMsRUFBOEQsSUFBOUQsRUFGb0MsQ0FJcEM7O0FBQ0EsSUFBQSxNQUFNLENBQUMsTUFBUCxHQUFnQixVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixNQUEvQztBQUVBLFFBQUksTUFBTSxDQUFDLEtBQVAsQ0FBYSxpQkFBYixHQUErQixDQUFuQyxFQUFzQyxNQUFNLENBQUMsV0FBUCxDQUFtQixNQUFNLENBQUMsS0FBUCxDQUFhLGlCQUFoQyxFQVBGLENBUXRDO0FBQ0MsR0FURCxDQXpFNEksQ0FvRjlJOzs7QUFDQSxFQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQixVQUFTLFFBQVQsRUFBa0IsS0FBbEIsRUFBeUI7QUFHaEQsSUFBQSxNQUFNLENBQUMsc0JBQVAsR0FBOEIsS0FBOUI7QUFDRCxJQUFBLE1BQU0sQ0FBQyxhQUFQLENBQXFCLFFBQXJCLEVBSmlELENBTTVDO0FBRU4sR0FSRCxDQXJGOEksQ0ErRjVJOzs7QUFDRixFQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXVCLFVBQVMsUUFBVCxFQUFtQjtBQUN4QyxJQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGNBQXBCLEdBQXFDLEtBQXJDO0FBQ0EsSUFBQSxRQUFRLENBQUMsWUFBVTtBQUNqQixNQUFBLE1BQU0sQ0FBQyxtQkFBUCxHQUE2QixRQUE3QjtBQUNBLE1BQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0Isa0JBQXBCLENBQXVDLFFBQXZDLEVBQWdELElBQWhEO0FBRUQsS0FKTyxDQUFSO0FBS0QsR0FQRCxDQWhHOEksQ0F5RzdJOzs7QUFFQSxFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLFlBQVc7QUFFL0IsUUFBSSxJQUFJLEdBQUMsSUFBVCxDQUYrQixDQUdoQzs7QUFDSyxTQUFLLElBQUksQ0FBQyxHQUFDLE1BQU0sQ0FBQyxzQkFBUCxHQUE4QixDQUF6QyxFQUE0QyxDQUFDLDRCQUFDLE1BQU0sQ0FBQyxZQUFSLGtGQUFDLHFCQUFxQixXQUF0QiwwREFBQyxzQkFBa0MsTUFBbkMsQ0FBN0MsRUFBd0YsQ0FBQyxFQUF6RixFQUNBO0FBQUE7O0FBQ0MsVUFBSSxNQUFNLENBQUMsWUFBUCxDQUFvQixXQUFwQixDQUFnQyxNQUFNLENBQUMsc0JBQXZDLEVBQStELG9CQUEvRCxDQUFvRixFQUFwRixJQUF3RixNQUFNLENBQUMsWUFBUCxDQUFvQixXQUFwQixDQUFnQyxDQUFoQyxFQUFtQyxvQkFBbkMsQ0FBd0QsRUFBcEosRUFDQztBQUNFLFFBQUEsSUFBSSxHQUFFLEtBQU47QUFDRDtBQUNGOztBQUNKLFdBQU8sSUFBUDtBQUVGLEdBYkE7O0FBZUEsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixZQUFXO0FBRWhDLFFBQUksSUFBSSxHQUFDLElBQVQ7QUFDQSxRQUFJLE1BQU0sQ0FBQyxzQkFBUCxJQUErQixDQUFuQyxFQUFzQyxPQUFPLElBQVA7O0FBQ3RDLFNBQUssSUFBSSxDQUFDLEdBQUMsTUFBTSxDQUFDLHNCQUFQLEdBQThCLENBQXpDLEVBQTJDLENBQUMsSUFBRSxDQUE5QyxFQUFnRCxDQUFDLEVBQWpELEVBQ0E7QUFDQyxVQUFJLE1BQU0sQ0FBQyxZQUFQLENBQW9CLFdBQXBCLENBQWdDLE1BQU0sQ0FBQyxzQkFBdkMsRUFBK0Qsb0JBQS9ELENBQW9GLEVBQXBGLElBQXdGLE1BQU0sQ0FBQyxZQUFQLENBQW9CLFdBQXBCLENBQWdDLENBQWhDLEVBQW1DLG9CQUFuQyxDQUF3RCxFQUFwSixFQUNDO0FBQ0UsUUFBQSxJQUFJLEdBQUUsS0FBTjtBQUNEO0FBQ0Y7O0FBQ0EsV0FBTyxJQUFQO0FBRUYsR0FiQTs7QUFlRCxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLFlBQVc7QUFFakMsUUFBSSxRQUFRLEdBQUksTUFBTSxDQUFDLFlBQVAsQ0FBb0IsV0FBcEIsQ0FBZ0MsTUFBTSxDQUFDLHNCQUF2QyxDQUFoQjtBQUNBLFFBQUksUUFBUSxHQUFDLE1BQU0sQ0FBQyxzQkFBUCxHQUE4QixDQUEzQzs7QUFDQSxXQUFPLE1BQU0sQ0FBQyxZQUFQLENBQW9CLFdBQXBCLENBQWdDLE1BQU0sQ0FBQyxzQkFBdkMsRUFBK0Qsb0JBQS9ELENBQW9GLEVBQXBGLElBQXdGLE1BQU0sQ0FBQyxZQUFQLENBQW9CLFdBQXBCLENBQWdDLFFBQWhDLEVBQTBDLG9CQUExQyxDQUErRCxFQUF2SixJQUE2SixRQUFRLEdBQUMsQ0FBN0ssRUFDQTtBQUNFLE1BQUEsUUFBUSxHQUFDLFFBQVEsR0FBQyxDQUFsQjtBQUNEOztBQUVELElBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsV0FBcEIsQ0FBZ0MsTUFBaEMsQ0FBdUMsTUFBTSxDQUFDLHNCQUE5QyxFQUFzRSxDQUF0RTtBQUNBLElBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsV0FBcEIsQ0FBZ0MsTUFBaEMsQ0FBdUMsUUFBdkMsRUFBaUQsQ0FBakQsRUFBb0QsUUFBcEQ7QUFDQSxJQUFBLE1BQU0sQ0FBQyxzQkFBUCxHQUFnQyxRQUFoQztBQUVELEdBYkQ7O0FBY0EsRUFBQSxNQUFNLENBQUMsZUFBUCxHQUF5QixZQUFXO0FBRWxDLFFBQUksUUFBUSxHQUFJLE1BQU0sQ0FBQyxZQUFQLENBQW9CLFdBQXBCLENBQWdDLE1BQU0sQ0FBQyxzQkFBdkMsQ0FBaEI7QUFDQSxRQUFJLFFBQVEsR0FBQyxNQUFNLENBQUMsc0JBQVAsR0FBOEIsQ0FBM0M7O0FBQ0EsV0FBTyxNQUFNLENBQUMsWUFBUCxDQUFvQixXQUFwQixDQUFnQyxNQUFNLENBQUMsc0JBQXZDLEVBQStELG9CQUEvRCxDQUFvRixFQUFwRixJQUF3RixNQUFNLENBQUMsWUFBUCxDQUFvQixXQUFwQixDQUFnQyxRQUFoQyxFQUEwQyxvQkFBMUMsQ0FBK0QsRUFBdkosSUFBNkosUUFBUSxHQUFDLE1BQU0sQ0FBQyxZQUFQLENBQW9CLFdBQXBCLENBQWdDLE1BQWhDLEdBQXVDLENBQXBOLEVBQ0E7QUFDRSxNQUFBLFFBQVEsR0FBQyxRQUFRLEdBQUMsQ0FBbEI7QUFDRDs7QUFFRCxJQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLFdBQXBCLENBQWdDLE1BQWhDLENBQXVDLE1BQU0sQ0FBQyxzQkFBOUMsRUFBc0UsQ0FBdEU7QUFDQSxJQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLFdBQXBCLENBQWdDLE1BQWhDLENBQXVDLFFBQXZDLEVBQWlELENBQWpELEVBQW9ELFFBQXBEO0FBQ0EsSUFBQSxNQUFNLENBQUMsc0JBQVAsR0FBZ0MsUUFBaEM7QUFDRCxHQVpEOztBQWNFLEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsVUFBUyxRQUFULEVBQW1CO0FBQzVDLFFBQUksTUFBTSxDQUFDLFlBQVgsRUFDQTtBQUVBLGFBQU8sUUFBUSxJQUFFLE1BQU0sQ0FBQyxlQUFqQixHQUFtQyxRQUFuQyxHQUE4QyxFQUFyRDtBQUNDLEtBSkQsTUFJTSxNQUFNLENBQUMsZUFBUCxDQUF1QixRQUF2QjtBQUNQLEdBTkM7O0FBUUMsRUFBQSxNQUFNLENBQUMsU0FBUCxHQUFtQixZQUFVO0FBQ3pCLElBQUEsTUFBTSxDQUFDLG1CQUFQLEdBQTZCLENBQTdCO0FBQ0EsSUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixTQUFwQixDQUE4QixJQUE5QixFQUFtQyxRQUFuQztBQUNILEdBSEQ7O0FBS0MsRUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixZQUFVO0FBQy9CLElBQUEsTUFBTSxDQUFDLG1CQUFQLEdBQTZCLENBQTdCO0FBQ0EsSUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixTQUFwQixDQUE4QixJQUE5QixFQUFtQyxjQUFuQztBQUNILEdBSEE7O0FBS0osRUFBQSxNQUFNLENBQUMsb0JBQVAsR0FBOEIsVUFBUyxNQUFULEVBQWlCO0FBQzdDLElBQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0IsSUFBcEI7O0FBQ0EsUUFBSSxNQUFNLENBQUMsWUFBWCxFQUNBO0FBQ0EsVUFBSSxNQUFNLENBQUMsbUJBQVAsSUFBNEIsU0FBNUIsSUFBeUMsTUFBTSxDQUFDLG1CQUFQLElBQTRCLElBQXpFLEVBQ0E7QUFDRSxRQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQW9CLE1BQU0sQ0FBQyxtQkFBM0I7QUFDRDs7QUFDRCxhQUFPLE1BQU0sSUFBRSxNQUFNLENBQUMsVUFBZixHQUE0QixRQUE1QixHQUF1QyxFQUE5QztBQUNDLEtBUEQsTUFPTSxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsTUFBNUI7QUFDUCxHQVZEOztBQVlJLEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsWUFFakI7QUFFSSxJQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGFBQXBCLENBQWtDLElBQWxDLEVBQXVDLENBQXZDLEVBQTBDLElBQTFDLENBQStDLFVBQVMsSUFBVCxFQUFlO0FBRTNDLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLEdBQWpDLEVBQXFDLFNBQXJDO0FBQ0YsS0FIakIsRUFHa0IsVUFBUyxLQUFULEVBQWU7QUFDakIsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFFRixLQU5kO0FBUUgsR0FaVDs7QUFjSixFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQWlCLFVBQVMsSUFBVCxFQUFjLE1BQWQsRUFDakI7QUFDRSxJQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsSUFBVixFQUFlO0FBQUMsTUFBQSxRQUFRLEVBQUU7QUFBWCxLQUFmO0FBRUQsR0FKRDtBQU1IOztBQUVELFVBQVUsQ0FBQyxPQUFYLEdBQXFCLENBQUMsUUFBRCxFQUFXLFlBQVgsRUFBd0IsUUFBeEIsRUFBaUMsc0JBQWpDLEVBQXdELGNBQXhELEVBQXVFLGFBQXZFLEVBQXFGLGNBQXJGLEVBQW9HLFVBQXBHLEVBQStHLFVBQS9HLEVBQTBILGtCQUExSCxDQUFyQjs7QUFFTyxTQUFTLFFBQVQsQ0FBa0IsTUFBbEIsRUFBeUIsVUFBekIsRUFBb0MsTUFBcEMsRUFBMkMsWUFBM0MsRUFBd0QsV0FBeEQsRUFBb0UsWUFBcEUsRUFBaUYsUUFBakYsRUFBMEYsZ0JBQTFGLEVBQ1A7QUFFUSxFQUFBLE1BQU0sQ0FBQyxJQUFQLEdBQVksVUFBWjtBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsV0FBdEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxLQUFQLEdBQWE7QUFBQyxJQUFBLGlCQUFpQixFQUFHLFlBQVksQ0FBQztBQUFsQyxHQUFiO0FBQ0EsTUFBSSxJQUFJLEdBQUksVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBM0M7O0FBQ0EsRUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsVUFBUyxDQUFULEVBQVk7QUFFdEMsV0FBUSxNQUFNLENBQUMsT0FBUCxDQUFlLElBQWYsQ0FBb0IsT0FBcEIsQ0FBNEIsQ0FBNUIsS0FBZ0MsQ0FBaEMsR0FBb0MsUUFBcEMsR0FBK0MsRUFBdkQ7QUFDSCxHQUhDOztBQUtGLEVBQUEsTUFBTSxDQUFDLFdBQVAsR0FBcUIsVUFBUyxNQUFULEVBQWlCO0FBRXBDLElBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsbUJBQXBCLENBQXdDLE1BQXhDO0FBQ0EsSUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLGlCQUFiLEdBQStCLE1BQS9CO0FBQ0QsR0FKRCxDQVhOLENBa0JNOzs7QUFDQSxFQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUE0QixVQUFTLFVBQVQsRUFBb0IsS0FBcEIsRUFBMkI7QUFDdEQsSUFBQSxNQUFNLENBQUMsd0JBQVAsR0FBZ0MsS0FBaEM7QUFDQSxJQUFBLE1BQU0sQ0FBQyxxQkFBUCxHQUErQixVQUEvQjtBQUNBLElBQUEsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsVUFBbkI7QUFDQSxHQUpEOztBQU1BLEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0IsWUFBVztBQUU3QixRQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsWUFBUCxDQUFvQixjQUFwQixDQUFtQyxTQUFuQyxDQUE4QyxNQUFNLENBQUMsd0JBQXJELENBQWQ7QUFDQSxJQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGNBQXBCLENBQW1DLFNBQW5DLENBQTZDLE1BQTdDLENBQXFELE1BQU0sQ0FBQyx3QkFBNUQsRUFBc0YsQ0FBdEY7QUFDQSxJQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGNBQXBCLENBQW1DLFNBQW5DLENBQTZDLE1BQTdDLENBQXFELE1BQU0sQ0FBQyx3QkFBUCxHQUFnQyxDQUFyRixFQUF3RixDQUF4RixFQUEyRixPQUEzRjtBQUNELElBQUEsTUFBTSxDQUFDLHdCQUFQO0FBQ0EsR0FORDs7QUFPQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLFlBQVc7QUFFL0IsUUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsY0FBcEIsQ0FBbUMsU0FBbkMsQ0FBOEMsTUFBTSxDQUFDLHdCQUFyRCxDQUFkO0FBQ0EsSUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixjQUFwQixDQUFtQyxTQUFuQyxDQUE2QyxNQUE3QyxDQUFxRCxNQUFNLENBQUMsd0JBQTVELEVBQXNGLENBQXRGO0FBQ0EsSUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixjQUFwQixDQUFtQyxTQUFuQyxDQUE2QyxNQUE3QyxDQUFxRCxNQUFNLENBQUMsd0JBQVAsR0FBZ0MsQ0FBckYsRUFBd0YsQ0FBeEYsRUFBMkYsT0FBM0Y7QUFDRCxJQUFBLE1BQU0sQ0FBQyx3QkFBUDtBQUNBLEdBTkQ7O0FBUUcsRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQixZQUFVO0FBQzNCLElBQUEsTUFBTSxDQUFDLHFCQUFQLEdBQStCLENBQS9CO0FBQ0EsSUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixXQUFwQixDQUFnQyxJQUFoQztBQUNILEdBSEQ7O0FBS0YsRUFBQSxNQUFNLENBQUMsYUFBUCxHQUF1QixZQUVaO0FBRUksSUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixhQUFwQixDQUFrQyxJQUFsQyxFQUF1QyxDQUF2QyxFQUEwQyxJQUExQyxDQUErQyxVQUFTLElBQVQsRUFBZTtBQUUzQyxNQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGdCQUFwQixDQUFxQyxJQUFyQztBQUNBLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLEdBQWpDLEVBQXFDLFNBQXJDO0FBRUYsS0FMakIsRUFLa0IsVUFBUyxLQUFULEVBQWU7QUFDakIsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFFRixLQVJkO0FBVUgsR0FkWjs7QUFnQkEsRUFBQSxNQUFNLENBQUMsc0JBQVAsR0FBZ0MsVUFBUyxRQUFULEVBQW1CO0FBRWpELFdBQVEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxpQkFBYixJQUFnQyxRQUFRLENBQUMsVUFBekMsR0FBc0QsSUFBdEQsR0FBNkQsS0FBckU7QUFFRixHQUpBOztBQU9BLEVBQUEsTUFBTSxDQUFDLDBCQUFQLEdBQW9DLFVBQVMsTUFBVCxFQUFnQixRQUFoQixFQUEwQjtBQUc1RCxXQUFRLE1BQU0sQ0FBQyxxQkFBUCxJQUE4QixRQUFRLENBQUMsVUFBdkMsR0FBb0QsSUFBcEQsR0FBMkQsS0FBbkU7QUFHRixHQU5BOztBQVNELE1BQUksTUFBTSxDQUFDLFVBQVAsSUFBbUIsU0FBbkIsSUFBZ0MsTUFBTSxDQUFDLFVBQVAsSUFBbUIsRUFBbkQsSUFBeUQsTUFBTSxDQUFDLFVBQVAsSUFBbUIsSUFBaEYsRUFDQTtBQUNFLElBQUEsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsTUFBTSxDQUFDLFVBQTFCO0FBQ0Q7QUFHTDs7QUFFRCxRQUFRLENBQUMsT0FBVCxHQUFtQixDQUFDLFFBQUQsRUFBVyxZQUFYLEVBQXdCLFFBQXhCLEVBQWlDLGNBQWpDLEVBQWdELGFBQWhELEVBQThELGNBQTlELEVBQTZFLFVBQTdFLEVBQXdGLGtCQUF4RixDQUFuQjs7QUFFTSxTQUFTLFdBQVQsQ0FBc0IsTUFBdEIsRUFBNkIsZUFBN0IsRUFBOEM7QUFDNUMsRUFBQSxNQUFNLENBQUMsSUFBUCxHQUFZLGFBQVo7QUFDRixFQUFBLE1BQU0sQ0FBQyxLQUFQLEdBQWUsZUFBZjtBQUNOOztBQUNELFdBQVcsQ0FBQyxPQUFaLEdBQXFCLENBQUMsUUFBRCxFQUFVLGlCQUFWLENBQXJCOztBQUNPLFNBQVMsZUFBVCxDQUEwQixNQUExQixFQUFpQyxlQUFqQyxFQUFrRDtBQUVqRCxFQUFBLE1BQU0sQ0FBQyxJQUFQLEdBQVksaUJBQVo7QUFDQSxFQUFBLE1BQU0sQ0FBQyxLQUFQLEdBQWUsZUFBZjtBQUVQOztBQUNELGVBQWUsQ0FBQyxPQUFoQixHQUEwQixDQUFDLFFBQUQsRUFBVSxpQkFBVixDQUExQjs7QUFFTyxTQUFTLFVBQVQsQ0FBb0IsTUFBcEIsRUFBMkIsS0FBM0IsRUFBaUMsVUFBakMsRUFBNEMsTUFBNUMsRUFBbUQsUUFBbkQsRUFBNEQsa0JBQTVELEVBQStFLGNBQS9FLEVBQStGO0FBRS9GLEVBQUEsTUFBTSxDQUFDLElBQVAsR0FBWSxZQUFaO0FBQ0EsRUFBQSxVQUFVLENBQUMsU0FBWCxHQUFzQixtQkFBdEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXVCLEtBQXZCO0FBQ0EsRUFBQSxNQUFNLENBQUMsU0FBUCxHQUFpQixFQUFqQjtBQUNBLE1BQUksUUFBSjs7QUFDRSxFQUFBLE1BQU0sQ0FBQyxNQUFQLEdBQWdCLFlBQVU7QUFFekI7QUFDQztBQUNBLFFBQUksUUFBUSxHQUFHLE9BQWY7QUFDQSxJQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQW1CLElBQW5CO0FBRUEsUUFBSSxHQUFHLEdBQUcsZ0JBQVY7QUFDSyxJQUFBLGNBQWMsQ0FBQyxJQUFmLENBQW9CLEdBQXBCLEVBQXdCO0FBQUMsZUFBUSxNQUFNLENBQUMsS0FBaEI7QUFBc0IseUJBQWtCLE1BQU0sQ0FBQztBQUEvQyxLQUF4QixFQUF5RixJQUF6RixDQUNJLFVBQUEsUUFBUSxFQUFHO0FBQ0wsTUFBQSxRQUFRLENBQUMsWUFBVTtBQUNULFlBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDdkIsVUFBQSxNQUFNLENBQUMsYUFBUCxHQUF1QixJQUF2QjtBQUNKLFNBRkYsTUFFUTtBQUNILFVBQUEsTUFBTSxDQUFDLGFBQVAsR0FBdUIsS0FBdkI7QUFDQSxVQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWlCLFFBQVEsQ0FBQyxJQUExQjtBQUNBLFVBQUEsa0JBQWtCLENBQUMsTUFBbkIsQ0FBMEIsUUFBMUI7QUFDSjs7QUFDRixRQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXNCLEtBQXRCO0FBQ0EsUUFBQSxNQUFNLENBQUMsZUFBUCxHQUF5QixJQUF6QjtBQUNBLFFBQUEsTUFBTSxDQUFDLFdBQVAsR0FBbUIsS0FBbkI7QUFDUixPQVhPLENBQVI7QUFZTCxLQWRMLEVBY00sVUFBQSxLQUFLLEVBQUU7QUFDRyxNQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQW1CLEtBQW5CO0FBQ0EsTUFBQSxNQUFNLENBQUMsYUFBUCxHQUF1QixLQUF2QjtBQUNBLE1BQUEsTUFBTSxDQUFDLFFBQVAsR0FBZ0IsS0FBaEI7QUFDQSxNQUFBLGtCQUFrQixDQUFDLE1BQW5CLENBQTBCLFFBQTFCO0FBRWYsS0FwQkQ7QUFzQk4sR0E5QkQ7O0FBaUNDLEVBQUEsTUFBTSxDQUFFLGNBQVIsR0FBeUIsVUFBUyxTQUFULEVBQW1CO0FBQ3RDLElBQUEsUUFBUSxHQUFHLFNBQVg7QUFDSCxHQUZIOztBQUlBLEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBbUIsWUFBVTtBQUMzQixJQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWdCLEVBQWhCO0FBQ0QsR0FGRDtBQUlMOztBQUVKLFVBQVUsQ0FBQyxPQUFYLEdBQXVCLENBQUMsUUFBRCxFQUFVLE9BQVYsRUFBbUIsWUFBbkIsRUFBZ0MsUUFBaEMsRUFBeUMsVUFBekMsRUFBb0Qsb0JBQXBELEVBQXlFLGdCQUF6RSxDQUF2Qjs7QUFJTSxTQUFTLFlBQVQsQ0FBc0IsTUFBdEIsRUFBNkIsUUFBN0IsRUFBdUMsU0FBdkMsRUFBa0QsS0FBbEQsRUFBd0QsVUFBeEQsRUFBbUUsUUFBbkUsRUFBNEUsTUFBNUUsRUFBbUYsWUFBbkYsRUFBZ0cscUJBQWhHLEVBQXNILGNBQXRILEVBQXFJLFdBQXJJLEVBQWlKLGdCQUFqSixFQUFtSztBQUVsSyxFQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWdCLGNBQWhCO0FBQ0EsRUFBQSxVQUFVLENBQUMsU0FBWCxHQUFzQixpQ0FBdEIsQ0FIa0ssQ0FLbEs7O0FBQ0EsRUFBQSxNQUFNLENBQUMsU0FBUCxHQUFpQixZQUFZLENBQUMsUUFBOUI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXNCLEtBQXRCO0FBQ0EsRUFBQSxNQUFNLENBQUMsY0FBUCxHQUFzQixJQUF0QjtBQUNBLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBZ0IsS0FBaEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXVCLEtBQXZCO0FBQ0EsRUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsS0FBNUI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWdCLEVBQWhCO0FBRUEsTUFBSSxNQUFNLEdBQUcsWUFBYjtBQUNBLEVBQUEsTUFBTSxDQUFDLEdBQVAsR0FBVyxTQUFYO0FBRUEsRUFBQSxxQkFBcUIsQ0FBQyxnQkFBdEI7QUFFQSxFQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGlCQUFoQixHQUFrQyxVQUFsQztBQUNBLEVBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsR0FBMkIsTUFBTSxDQUFDLFNBQWxDO0FBRUEsTUFBSSxjQUFjLEdBQUcsSUFBSSxNQUFKLENBQVcsZ0dBQVgsQ0FBckI7QUFDQSxNQUFJLGFBQWEsR0FBRyxJQUFJLE1BQUosQ0FBVyw2R0FBWCxDQUFwQjtBQUNBLE1BQUksZ0JBQWdCLEdBQUcsSUFBSSxNQUFKLENBQVcsNkZBQVgsQ0FBdkI7O0FBRUEsRUFBQSxNQUFNLENBQUMsYUFBUCxHQUF1QixVQUFTLE9BQVQsRUFDdkI7QUFDRSxRQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBakIsQ0FBc0IsT0FBTyxDQUFDLFdBQTlCLENBQUwsRUFBaUQsT0FBTyxDQUFDLFlBQVIsQ0FBcUIsVUFBckIsRUFBZ0MsS0FBaEM7QUFDbEQsR0FIRDs7QUFNQSxFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLFlBQVU7QUFDM0IsUUFBSSxHQUFHLEdBQUcsc0JBQVY7QUFDQSxJQUFBLGNBQWMsQ0FBQyxJQUFmLENBQW9CLEdBQXBCLEVBQXdCO0FBQUMsbUJBQVksTUFBTSxDQUFDO0FBQXBCLEtBQXhCLEVBQ1IsSUFEUSxDQUNILFVBQUEsUUFBUSxFQUFHO0FBQ0QsVUFBSSxRQUFRLENBQUMsTUFBVCxLQUFvQixHQUF4QixFQUE2QjtBQUM1QixRQUFBLFFBQVEsQ0FBQyxZQUFVO0FBQ2YsVUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixJQUFsQjtBQUNBLFVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBc0IsS0FBdEI7QUFDQSxVQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLElBQXpCO0FBQ0EsU0FKSSxDQUFSO0FBS0EsT0FORCxNQU1PO0FBQ0YsUUFBQSxRQUFRLENBQUMsWUFBVTtBQUNiLFVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsS0FBbEI7QUFDQSxVQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXNCLEtBQXRCO0FBQ0EsVUFBQSxNQUFNLENBQUMsZUFBUCxHQUF5QixJQUF6QjtBQUNBLFVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsSUFBeEI7QUFDZCxjQUFJLFFBQVEsQ0FBQyxJQUFiLEVBQW9CLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLFFBQVEsQ0FBQyxJQUEzQjtBQUNYLFNBTk8sQ0FBUjtBQU9KO0FBRUosS0FsQkosRUFrQkssVUFBQyxLQUFELEVBQVc7QUFDekIsTUFBQSxRQUFRLENBQUMsWUFBVTtBQUNVLFFBQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsS0FBbEI7QUFDQSxRQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXNCLEtBQXRCO0FBQ0EsUUFBQSxNQUFNLENBQUMsZUFBUCxHQUF5QixJQUF6QjtBQUM1QixPQUpPLENBQVI7QUFLTSxLQXhCRztBQTJCSCxHQTdCRDs7QUFnQ0EsRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQixVQUFTLEtBQVQsRUFBZTtBQUU1QixRQUFJLENBQUMsS0FBTCxFQUFZO0FBRVosSUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQixJQUFyQjtBQUNBLFFBQUksR0FBRyxHQUFHLGtCQUFWO0FBQ0EsSUFBQSxjQUFjLENBQUMsSUFBZixDQUFvQixHQUFwQixFQUF3QixNQUFNLENBQUMsUUFBL0IsRUFBeUMsSUFBekMsQ0FBOEMsVUFBQSxRQUFRLEVBQUc7QUFFakQ7QUFDUSxVQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXhCLEVBQTZCO0FBQUE7O0FBQUU7QUFDckQ7QUFDRCxRQUFBLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLEdBQWlDLFFBQVEsQ0FBQyxJQUFULENBQWMsSUFBL0M7QUFDQSxRQUFBLGNBQWMsQ0FBQyxPQUFmLENBQXVCLGFBQXZCLEVBQXNDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLEdBQS9CLENBQW1DLFVBQXpFLEVBSG9ELENBSXBEOztBQUNBLFFBQUEsTUFBTSxDQUFDLE1BQVAsQ0FBYyxHQUFkLEdBQW9CLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLEdBQS9CLENBQW1DLFVBQXZEO0FBQytELFFBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsTUFBTSxDQUFDLE9BQVAsQ0FBZSxJQUFuQyxFQUF5QyxNQUFNLENBQUMsTUFBaEQsRUFBd0Q7QUFBRSxVQUFBLE1BQU0sRUFBRSxLQUFWO0FBQW1CLFVBQUEsUUFBUSxFQUFDLFNBQTVCO0FBQXVDLFVBQUEsT0FBTyxFQUFDO0FBQS9DLFNBQXhEO0FBRS9ELFFBQUEscUJBQXFCLENBQUMsY0FBdEIsQ0FBcUMsUUFBUSxDQUFDLElBQVQsQ0FBYyxJQUFuRCxFQUF5RCxNQUFNLENBQUMsUUFBUCxDQUFnQixRQUF6RSxFQUFrRixNQUFNLENBQUMsUUFBUCxDQUFnQixRQUFsRztBQUVBLFFBQUEscUJBQXFCLENBQUMsYUFBdEIsNEJBQW9DLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQXZELDREQUFvQyx3QkFBZ0MsWUFBaEMsQ0FBNkMsRUFBakYsRUFDQyxJQURELENBQ00sVUFBQSxTQUFTLEVBQUk7QUFDakIsY0FBSSxTQUFTLENBQUMsSUFBZCxFQUNDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFlBQW5CLEdBQWtDLFNBQVMsQ0FBQyxJQUFWLENBQWUsTUFBZixDQUFzQixVQUFDLEdBQUQsRUFBTSxHQUFOLEVBQWM7QUFDbkUsWUFBQSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUosQ0FBTyxRQUFQLEVBQUQsQ0FBSCxHQUF5QixHQUF6QjtBQUNBLG1CQUFPLEdBQVA7QUFDRixXQUhpQyxFQUcvQixFQUgrQixDQUFsQztBQUt5RSxVQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLFFBQVEsQ0FBQyxJQUFULENBQWMsR0FBMUMsRUFBOEMsU0FBOUM7QUFDQSxVQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLEtBQXJCO0FBRUEsVUFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLGlCQUFWLEVBQTZCO0FBQUMsWUFBQSxHQUFHLEVBQUUsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsR0FBL0IsQ0FBbUM7QUFBekMsV0FBN0IsRUFWekQsQ0FVOEk7QUFDaEssU0FaRCxFQWFDLFVBQUMsS0FBRCxFQUFXO0FBQ21FLFVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsS0FBSyxDQUFDLElBQXhCO0FBQ0EsVUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsSUFBbEMsRUFBdUMsT0FBdkM7QUFDQSxVQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLEtBQXJCO0FBQ2YsU0FqQmhFO0FBbUJ3QixPQTdCRCxNQTZCTztBQUFHO0FBRTVCLFFBQUEsUUFBUSxDQUFDLFlBQVU7QUFDdEIsVUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixRQUFRLENBQUMsSUFBM0IsQ0FEc0IsQ0FFdEI7O0FBQ0EsVUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQixLQUFyQjtBQUVELFNBTFksQ0FBUjtBQVFnQixPQTFDMkMsQ0EyQ2pFOztBQUNMLEtBNUNhO0FBOENQLEdBcEREOztBQXVEQSxNQUFJLE1BQU0sQ0FBQyxTQUFQLElBQWtCLFNBQWxCLElBQStCLE1BQU0sQ0FBQyxTQUFQLElBQWtCLEVBQXJELEVBQXlEO0FBQ3ZELElBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsSUFBekI7QUFDQSxJQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXNCLEtBQXRCO0FBRUQsR0FKRCxNQUlNLE1BQU0sQ0FBQyxXQUFQOztBQUtQLEVBQUEsTUFBTSxDQUFDLGFBQVAsR0FBdUIsVUFBUyxXQUFULEVBQXFCO0FBRXZDLFFBQUksZUFBZSxHQUFDO0FBQUMsTUFBQSxJQUFJLEVBQUMsQ0FBTjtBQUFRLE1BQUEsSUFBSSxFQUFDO0FBQWIsS0FBcEI7O0FBQ0MsUUFBSSxXQUFXLElBQUUsQ0FBakIsRUFDRDtBQUNFLE1BQUEsZUFBZSxDQUFDLElBQWhCLEdBQXFCLFdBQXJCO0FBQ0EsTUFBQSxlQUFlLENBQUMsSUFBaEIsR0FBdUIsRUFBdkI7QUFDRCxLQUpBLE1BS0ksSUFBSyxXQUFXLEdBQUMsSUFBYixHQUFtQixHQUF2QixFQUNMO0FBQ0UsTUFBQSxlQUFlLENBQUMsSUFBaEIsR0FBcUIsV0FBckI7QUFDQSxNQUFBLGVBQWUsQ0FBQyxJQUFoQixHQUF1QixPQUF2QjtBQUNELEtBSkksTUFLRSxJQUFLLFdBQVcsR0FBQyxJQUFiLEdBQW1CLElBQXZCLEVBQ0w7QUFDRSxNQUFBLGVBQWUsQ0FBQyxJQUFoQixHQUFxQixDQUFDLFdBQVcsR0FBQyxJQUFiLEVBQW1CLE9BQW5CLENBQTJCLENBQTNCLENBQXJCO0FBRUEsTUFBQSxlQUFlLENBQUMsSUFBaEIsR0FBc0IsSUFBdEI7QUFFRCxLQU5JLE1BT0EsSUFBSSxXQUFXLEdBQUMsSUFBWixHQUFpQixPQUFLLElBQTFCLEVBQ0w7QUFDRSxNQUFBLGVBQWUsQ0FBQyxJQUFoQixHQUFxQixDQUFDLFdBQVcsR0FBQyxJQUFaLEdBQWlCLElBQWxCLEVBQXdCLE9BQXhCLENBQWdDLENBQWhDLENBQXJCO0FBRUEsTUFBQSxlQUFlLENBQUMsSUFBaEIsR0FBc0IsSUFBdEI7QUFDRCxLQUxJLE1BT0w7QUFDRSxNQUFBLGVBQWUsQ0FBQyxJQUFoQixHQUFxQixDQUFDLFdBQVcsR0FBQyxJQUFaLEdBQWlCLElBQWpCLEdBQXNCLElBQXZCLEVBQTZCLE9BQTdCLENBQXFDLENBQXJDLENBQXJCO0FBRUEsTUFBQSxlQUFlLENBQUMsSUFBaEIsR0FBc0IsSUFBdEI7QUFDRDs7QUFFSCxXQUFPLGVBQVA7QUFDSCxHQWxDRjs7QUFxQ04sRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQixVQUFVLGNBQVYsRUFBMEI7QUFFOUMsUUFBSSxhQUFhLEdBQUc7QUFBRSxNQUFBLElBQUksRUFBRSxDQUFSO0FBQVcsTUFBQSxJQUFJLEVBQUU7QUFBakIsS0FBcEI7O0FBQ0EsUUFBSSxjQUFjLElBQUksQ0FBdEIsRUFBeUI7QUFDeEIsTUFBQSxhQUFhLENBQUMsSUFBZCxHQUFxQixjQUFyQjtBQUNBLE1BQUEsYUFBYSxDQUFDLElBQWQsR0FBcUIsRUFBckI7QUFDQSxLQUhELE1BSUssSUFBSyxjQUFjLEdBQUcsSUFBbEIsR0FBMEIsSUFBOUIsRUFBb0M7QUFDeEMsTUFBQSxhQUFhLENBQUMsSUFBZCxHQUFxQixjQUFyQjtBQUNBLE1BQUEsYUFBYSxDQUFDLElBQWQsR0FBcUIsVUFBckI7QUFDQSxLQUhJLE1BSUEsSUFBSyxjQUFjLEdBQUcsSUFBbEIsR0FBMEIsSUFBOUIsRUFBb0M7QUFDeEMsTUFBQSxhQUFhLENBQUMsSUFBZCxHQUFxQixDQUFDLGNBQWMsR0FBRyxJQUFsQixFQUF3QixPQUF4QixDQUFnQyxDQUFoQyxDQUFyQjtBQUNBLE1BQUEsYUFBYSxDQUFDLElBQWQsR0FBcUIsSUFBckI7QUFDQSxLQUhJLE1BSUEsSUFBSSxjQUFjLEdBQUcsSUFBakIsR0FBd0IsSUFBeEIsR0FBK0IsSUFBbkMsRUFBeUM7QUFDN0MsTUFBQSxhQUFhLENBQUMsSUFBZCxHQUFxQixDQUFDLGNBQWMsR0FBRyxJQUFqQixHQUF3QixJQUF6QixFQUErQixPQUEvQixDQUF1QyxDQUF2QyxDQUFyQjtBQUNBLE1BQUEsYUFBYSxDQUFDLElBQWQsR0FBcUIsR0FBckI7QUFDQSxLQUhJLE1BSUEsSUFBSSxjQUFjLEdBQUcsSUFBakIsR0FBd0IsSUFBeEIsR0FBK0IsRUFBL0IsR0FBb0MsRUFBeEMsRUFBNEM7QUFDaEQsTUFBQSxhQUFhLENBQUMsSUFBZCxHQUFxQixDQUFDLGNBQWMsR0FBRyxJQUFqQixHQUF3QixJQUF4QixHQUErQixFQUFoQyxFQUFvQyxPQUFwQyxDQUE0QyxDQUE1QyxDQUFyQjtBQUNBLE1BQUEsYUFBYSxDQUFDLElBQWQsR0FBcUIsS0FBckI7QUFDQSxLQUhJLE1BSUE7QUFDSixNQUFBLGFBQWEsQ0FBQyxJQUFkLEdBQXFCLENBQUMsY0FBYyxHQUFHLElBQWpCLEdBQXdCLElBQXhCLEdBQStCLEVBQS9CLEdBQW9DLEVBQXJDLEVBQXlDLE9BQXpDLENBQWlELENBQWpELENBQXJCO0FBQ0EsTUFBQSxhQUFhLENBQUMsSUFBZCxHQUFxQixHQUFyQjtBQUNBOztBQUVELFdBQU8sYUFBUDtBQUNBLEdBN0JEO0FBK0JBOztBQUVELFlBQVksQ0FBQyxPQUFiLEdBQXVCLENBQUMsUUFBRCxFQUFVLFVBQVYsRUFBc0IsV0FBdEIsRUFBbUMsT0FBbkMsRUFBNEMsWUFBNUMsRUFBeUQsVUFBekQsRUFBb0UsUUFBcEUsRUFBNkUsY0FBN0UsRUFBNEYsdUJBQTVGLEVBQW9ILGdCQUFwSCxFQUFxSSxhQUFySSxFQUFtSixrQkFBbkosQ0FBdkI7O0FBRU8sU0FBUyxjQUFULENBQXdCLE1BQXhCLEVBQStCLFFBQS9CLEVBQXlDLFNBQXpDLEVBQW1ELEtBQW5ELEVBQXlELFVBQXpELEVBQW9FLFFBQXBFLEVBQTZFLE1BQTdFLEVBQW9GLFlBQXBGLEVBQWlHLHFCQUFqRyxFQUF1SCxjQUF2SCxFQUFzSSxXQUF0SSxFQUFrSixnQkFBbEosRUFBb0s7QUFFbkssRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFnQixnQkFBaEI7QUFDQSxFQUFBLFVBQVUsQ0FBQyxTQUFYLEdBQXNCLG1DQUF0QixDQUhtSyxDQUtuSzs7QUFDQSxFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQWlCLFlBQVksQ0FBQyxRQUE5QjtBQUNBLEVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBc0IsS0FBdEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXNCLElBQXRCO0FBQ0EsRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFnQixLQUFoQjtBQUNBLEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBdUIsS0FBdkI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUE0QixLQUE1QjtBQUNBLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBZ0IsRUFBaEI7QUFFQSxNQUFJLE1BQU0sR0FBRyxZQUFiO0FBQ0EsRUFBQSxNQUFNLENBQUMsR0FBUCxHQUFXLFNBQVg7QUFFQSxFQUFBLHFCQUFxQixDQUFDLGdCQUF0QjtBQUVBLEVBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsaUJBQWhCLEdBQWtDLFVBQWxDO0FBQ0EsRUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixHQUEyQixNQUFNLENBQUMsU0FBbEM7O0FBR0EsRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQixZQUFVO0FBQzNCLFFBQUksR0FBRyxHQUFHLHNCQUFWO0FBQ0EsSUFBQSxjQUFjLENBQUMsSUFBZixDQUFvQixHQUFwQixFQUF3QjtBQUFDLG1CQUFZLE1BQU0sQ0FBQyxTQUFwQjtBQUE4QixjQUFPO0FBQXJDLEtBQXhCLEVBQ2EsSUFEYixDQUNrQixVQUFBLFFBQVEsRUFBRztBQUN0QixVQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXhCLEVBQTZCO0FBQzVCLFFBQUEsUUFBUSxDQUFDLFlBQVU7QUFDZixVQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLElBQWxCO0FBQ0EsVUFBQSxNQUFNLENBQUMsY0FBUCxHQUFzQixLQUF0QjtBQUNBLFVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsSUFBekI7QUFDQSxTQUpJLENBQVI7QUFLQSxPQU5ELE1BTU87QUFDRixRQUFBLFFBQVEsQ0FBQyxZQUFVO0FBQ2IsVUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixLQUFsQjtBQUNBLFVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBc0IsS0FBdEI7QUFDQSxVQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLElBQXpCO0FBQ0EsVUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixJQUF4QjtBQUNBLGNBQUksUUFBUSxDQUFDLElBQWIsRUFBb0IsTUFBTSxDQUFDLFFBQVAsR0FBa0IsUUFBUSxDQUFDLElBQTNCO0FBQ3pCLFNBTk8sQ0FBUjtBQU9KO0FBRUosS0FsQkosRUFrQkssVUFBQyxLQUFELEVBQVc7QUFDSixNQUFBLFFBQVEsQ0FBQyxZQUFVO0FBQ1gsUUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixLQUFsQjtBQUNBLFFBQUEsTUFBTSxDQUFDLGNBQVAsR0FBc0IsS0FBdEI7QUFDQSxRQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLElBQXpCO0FBQ1AsT0FKTyxDQUFSO0FBS1IsS0F4Qko7QUEyQkgsR0E3QkQ7O0FBK0JBLEVBQUEsTUFBTSxDQUFDLGlCQUFQLEdBQTBCLFlBQzFCO0FBQ1MsSUFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLGNBQVYsRUFBMEI7QUFBQyxNQUFBLFFBQVEsRUFBRSxNQUFNLENBQUM7QUFBbEIsS0FBMUI7QUFDUixHQUhEOztBQUtBLEVBQUEsTUFBTSxDQUFDLGFBQVAsR0FBdUIsWUFBVTtBQUd6QixJQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLElBQXJCO0FBQ0EsUUFBSSxHQUFHLEdBQUcsb0JBQVY7QUFDQSxJQUFBLGNBQWMsQ0FBQyxJQUFmLENBQW9CLEdBQXBCLEVBQXdCLE1BQU0sQ0FBQyxTQUEvQixFQUEwQyxJQUExQyxDQUErQyxVQUFBLFFBQVEsRUFBRztBQUcxQyxVQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXhCLEVBQTZCO0FBQUU7QUFDOUIsUUFBQSxRQUFRLENBQUMsWUFBVTtBQUNaLFVBQUEsTUFBTSxDQUFDLFdBQVAsR0FBcUIsS0FBckI7QUFDQSxVQUFBLE1BQU0sQ0FBQyxNQUFQLEdBQWdCLFFBQVEsQ0FBQyxJQUF6QjtBQUNBLFVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsSUFBdEI7QUFDUCxTQUpRLENBQVIsQ0FENEIsQ0FLekI7QUFDSCxPQU5ELE1BTU87QUFBRztBQUNOLFFBQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsUUFBUSxDQUFDLElBQTNCO0FBQ0EsUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixRQUFRLENBQUMsSUFBckMsRUFBMEMsT0FBMUM7QUFDQSxRQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLEtBQXJCO0FBQ0g7QUFFaEIsS0FmRDtBQWlCUCxHQXRCRDs7QUF5QkEsTUFBSSxNQUFNLENBQUMsU0FBUCxJQUFrQixTQUFsQixJQUErQixNQUFNLENBQUMsU0FBUCxJQUFrQixFQUFyRCxFQUF5RDtBQUN2RCxJQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLElBQXpCO0FBQ0EsSUFBQSxNQUFNLENBQUMsY0FBUCxHQUFzQixLQUF0QjtBQUVELEdBSkQsTUFJTSxNQUFNLENBQUMsV0FBUDtBQU1iOztBQUVELGNBQWMsQ0FBQyxPQUFmLEdBQXlCLENBQUMsUUFBRCxFQUFVLFVBQVYsRUFBc0IsV0FBdEIsRUFBbUMsT0FBbkMsRUFBMkMsWUFBM0MsRUFBd0QsVUFBeEQsRUFBbUUsUUFBbkUsRUFBNEUsY0FBNUUsRUFBMkYsdUJBQTNGLEVBQW1ILGdCQUFuSCxFQUFvSSxhQUFwSSxFQUFrSixrQkFBbEosQ0FBekI7O0FBRU8sU0FBUyxlQUFULENBQXlCLE1BQXpCLEVBQWlDLFVBQWpDLEVBQTRDLE1BQTVDLEVBQW1ELFFBQW5ELEVBQTRELFNBQTVELEVBQXNFLG1CQUF0RSxFQUEwRixpQkFBMUYsRUFBNEcsZ0JBQTVHLEVBQTZILFlBQTdILEVBQTBJLHFCQUExSSxFQUFnSyxXQUFoSyxFQUE0SyxvQkFBNUssRUFBaU0sZUFBak0sRUFBaU4sZUFBak4sRUFBaU8sZUFBak8sRUFBaVAsUUFBalAsRUFBMFAsWUFBMVAsRUFBdVE7QUFFelE7QUFDSCxFQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWdCLEVBQWhCO0FBQ00sRUFBQSxNQUFNLENBQUMsSUFBUCxHQUFZLGlCQUFaO0FBQ0EsRUFBQSxVQUFVLENBQUMsU0FBWCxHQUFzQixvQkFBdEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQW9CLE1BQU0sQ0FBQyxPQUFQLENBQWUsSUFBbkM7QUFDQSxFQUFBLE1BQU0sQ0FBQyxHQUFQLEdBQWE7QUFBQyxZQUFPO0FBQVIsR0FBYjtBQUNBLEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBbUIsRUFBbkI7QUFFQSxNQUFJLElBQUksR0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQztBQUVBLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBZ0IsRUFBaEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUEwQixFQUExQjtBQUNOLEVBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsR0FBMEIsQ0FBMUI7QUFFQSxFQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLEVBQWxCLENBaEI0USxDQWdCdlA7O0FBQ3JCLEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBdUIsRUFBdkI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXVCLEVBQXZCLENBbEI0USxDQWtCbFA7O0FBQzFCLEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBa0IsRUFBbEIsQ0FuQjRRLENBbUJ2UDs7QUFDckIsRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFpQixFQUFqQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBaUIsRUFBakI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXFCLEVBQXJCLENBdEI0USxDQXdCNVE7O0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFvQixNQUFNLENBQUMsUUFBM0I7QUFDQSxFQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQXFCLE1BQU0sQ0FBQyxlQUE1QjtBQUVNLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsV0FBdEI7QUFDTixFQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGFBQXBCO0FBQ00sTUFBSSxPQUFPLEdBQUcsU0FBUyxDQUFDLE1BQVYsR0FBbUIsT0FBakM7QUFDQSxNQUFJLElBQUksR0FBRyxLQUFYO0FBQ0EsTUFBSSxDQUFDLE9BQUwsRUFBYyxJQUFJLEdBQUMsSUFBTDtBQUNkLEVBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsZUFBcEIsQ0FBb0MsSUFBcEM7O0FBR04sRUFBQSxNQUFNLENBQUMsSUFBUCxHQUFjLFVBQVMsSUFBVCxFQUFjO0FBQzVCO0FBQ0MsUUFBSSxJQUFJLElBQUUsTUFBVixFQUFrQjtBQUNoQixNQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLEdBQTBCLENBQTFCO0FBQ0EsTUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixNQUFNLENBQUMsUUFBN0I7QUFDQSxNQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQXFCLE1BQU0sQ0FBQyxlQUE1QjtBQUNEOztBQUVELFFBQUksSUFBSSxJQUFFLE9BQVYsRUFBbUI7QUFDakIsTUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixHQUEwQixDQUExQjtBQUNEOztBQUVELFFBQUksSUFBSSxJQUFFLE1BQVYsRUFBa0I7QUFDaEIsTUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixHQUEwQixDQUExQjtBQUNBLE1BQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsTUFBTSxDQUFDLFFBQTdCO0FBQ0EsTUFBQSxNQUFNLENBQUMsVUFBUCxHQUFxQixNQUFNLENBQUMsZUFBNUI7QUFDRDtBQUNELEdBakJEOztBQW9CSSxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLFVBQVUsV0FBVixFQUM1QjtBQUNLLFFBQUksUUFBUSxHQUFHO0FBQUMsTUFBQSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQVAsQ0FBVyxHQUFuQjtBQUF3QixNQUFBLElBQUksRUFBRSxRQUE5QjtBQUF3QyxNQUFBLE1BQU0sRUFBRTtBQUFDLFFBQUEsS0FBSyxFQUFFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQXpCO0FBQXFDLFFBQUEsTUFBTSxFQUFFLE1BQU0sQ0FBQyxTQUFQLENBQWlCO0FBQTlELE9BQWhEO0FBQTRILE1BQUEsT0FBTyxFQUFFLE1BQU0sQ0FBQyxHQUFQLENBQVc7QUFBaEosS0FBZjs7QUFDTixRQUFJLFdBQUosRUFDTTtBQUNRLE1BQUEsTUFBTSxDQUFDLFNBQVAsR0FBbUIsSUFBbkI7QUFDQSxNQUFBLG9CQUFvQixDQUFDLGVBQXJCLENBQXFDLFFBQXJDLEVBQStDLElBQS9DLENBQ1gsVUFBUyxJQUFULEVBQWU7QUFDZCxRQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQW1CLEtBQW5CO0FBQ0EsUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLEdBQXRDLEVBQTBDLFNBQTFDO0FBQ0EsT0FKVSxFQUtYLFVBQVMsS0FBVCxFQUFlO0FBQ2QsUUFBQSxNQUFNLENBQUMsU0FBUCxHQUFtQixLQUFuQjtBQUNBLFFBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0EsT0FSVTtBQVVQLEtBYlAsTUFhYSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QiwrQkFBNUIsRUFBNEQsT0FBNUQ7QUFFUixHQWxCRDs7QUFzQkosRUFBQSxNQUFNLENBQUMsaUJBQVAsR0FBMkIsWUFBVTtBQUFBOztBQUNwQyxXQUFPLFVBQVAsYUFBTyxVQUFQLCtDQUFPLFVBQVUsQ0FBRSxPQUFuQix5REFBTyxxQkFBcUIsWUFBckIsQ0FBa0MsVUFBbEMsYUFBa0MsVUFBbEMsK0NBQWtDLFVBQVUsQ0FBRSxPQUE5Qyx5REFBa0MscUJBQXFCLFVBQXZELENBQVA7QUFDQSxHQUZEOztBQUlBLE1BQUksWUFBWSxDQUFDLEdBQWpCLEVBQXNCO0FBQ3JCLElBQUEsY0FBYyxDQUFDLE9BQWYsQ0FBdUIsYUFBdkIsRUFBc0MsWUFBWSxDQUFDLEdBQW5EO0FBQ0EsSUFBQSxVQUFVLENBQUMsT0FBWCxDQUFtQixVQUFuQixHQUFpQyxZQUFZLENBQUMsR0FBOUM7QUFDQTs7QUFFSyxFQUFBLE1BQU0sQ0FBQyxLQUFQLEdBQWEsZUFBYjtBQUNBLEVBQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxnQkFBYjtBQUNBLEVBQUEsTUFBTSxDQUFDLE1BQVAsR0FBYztBQUFDLElBQUEsV0FBVyxFQUFDLENBQWI7QUFBZSxJQUFBLFdBQVcsRUFBQztBQUEzQixHQUFkO0FBQ0EsTUFBSSxHQUFHLEdBQUUsU0FBUyxDQUFDLE1BQVYsR0FBbUIsR0FBNUI7QUFDQSxNQUFJLEdBQUcsSUFBRSxTQUFULEVBQXFCLE1BQU0sQ0FBQyxNQUFQLENBQWMsV0FBZCxHQUE0QixHQUE1Qjs7QUFLM0IsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixVQUFTLElBQVQsRUFBZSxDQUFmLEVBQ3RCO0FBQ0MsSUFBQSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUgsQ0FBSixDQUFZLEdBQVosR0FBZ0IsQ0FBQyxDQUFDLEdBQWxCO0FBQ0EsSUFBQSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUgsQ0FBSixDQUFZLEtBQVosR0FBa0IsQ0FBQyxDQUFDLEtBQXBCO0FBRUEsR0FMRDs7QUFPQSxFQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLFVBQVMsUUFBVCxFQUNsQjtBQUNDO0FBQ0EsSUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBd0IsS0FBeEI7QUFFQSxJQUFBLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFFBQVEsQ0FBQyxHQUEzQixJQUFrQztBQUFDLE1BQUEsR0FBRyxFQUFFLFFBQVEsQ0FBQyxHQUFmO0FBQW9CLE1BQUEsS0FBSyxFQUFFLFFBQVEsQ0FBQztBQUFwQyxLQUFsQzs7QUFFQSx1Q0FBOEIsTUFBTSxDQUFDLE9BQVAsQ0FBZSxNQUFNLENBQUMsWUFBdEIsQ0FBOUIscUNBQW1FO0FBQTlEO0FBQUEsVUFBTyxHQUFQO0FBQUEsVUFBWSxRQUFaOztBQUNILFVBQUksUUFBTyxRQUFQLE1BQW9CLFFBQXBCLElBQWdDLFFBQVEsS0FBSyxJQUFqRCxFQUF1RDtBQUN0RCxRQUFBLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBVixDQUFSLEdBQXdCO0FBQUUsc0JBQVksSUFBZDtBQUFvQixpQkFBTyxRQUFRLENBQUMsR0FBcEM7QUFBeUMsbUJBQVMsUUFBUSxDQUFDO0FBQTNELFNBQXhCO0FBQ0E7QUFDRjs7QUFDQSxJQUFBLFFBQVEsQ0FBQyxZQUFVO0FBQUMsTUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBd0IsSUFBeEI7QUFBOEIsS0FBMUMsQ0FBUjtBQUNELEdBYkQ7O0FBZ0JNLEVBQUEsTUFBTSxDQUFDLE9BQVAsR0FBaUIsWUFBVTtBQUMzQjtBQUNMO0FBQ08sSUFBQSxNQUFNLENBQUMsY0FBUCxHQUFzQixJQUF0QjtBQUNBLElBQUEsb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLGFBQTlDLEVBQTZELElBQTdELENBQWtFLFVBQVUsSUFBVixFQUFnQjtBQUMxRSxNQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXNCLEtBQXRCO0FBQ0EsTUFBQSxNQUFNLENBQUMsT0FBUCxHQUFnQixJQUFJLENBQUMsSUFBckI7QUFDUCxLQUhELEVBR0UsVUFBUyxLQUFULEVBQWU7QUFDVCxNQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXNCLEtBQXRCO0FBQ0EsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDUCxLQU5EO0FBUUQsR0FaRDs7QUFjQSxFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQW1CLFlBQ25CO0FBQ0ksSUFBQSxvQkFBb0IsQ0FBQyx3QkFBckIsQ0FBOEMsYUFBOUMsRUFBNkQsSUFBN0QsQ0FBa0UsVUFBVSxJQUFWLEVBQWdCO0FBQ3BFLE1BQUEsTUFBTSxDQUFDLE9BQVAsR0FBZ0IsSUFBSSxDQUFDLElBQXJCO0FBQ08sS0FGckIsRUFFc0IsVUFBUyxLQUFULEVBQWU7QUFDbkIsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDRCxLQUpqQjtBQUtILEdBUEQ7O0FBU0EsRUFBQSxNQUFNLENBQUMsMkJBQVAsR0FBcUMsVUFBUyxLQUFULEVBQWUsR0FBZixFQUNyQztBQUNJLElBQUEsb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLGFBQTlDLEVBQTZELElBQTdELENBQWtFLFVBQVUsSUFBVixFQUFnQjtBQUNwRSxNQUFBLE1BQU0sQ0FBQyxPQUFQLEdBQWdCLElBQUksQ0FBQyxJQUFyQjtBQUNPLEtBRnJCLEVBRXNCLFVBQVMsS0FBVCxFQUFlO0FBQ25CLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0QsS0FKakI7QUFLSCxHQVBEOztBQVdBLEVBQUEsTUFBTSxDQUFDLE9BQVA7QUFDTixFQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQixLQUExQjs7QUFHTSxFQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLFVBQVUsU0FBVixFQUFvQixHQUFwQixFQUF5QjtBQUNuQyxTQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsR0FBRyxDQUFDLGdCQUFKLENBQXFCLE1BQXBDLEVBQTJDLENBQUMsRUFBNUMsRUFBaUQ7QUFDekMsVUFBSSxHQUFHLENBQUMsZ0JBQUosQ0FBcUIsQ0FBckIsRUFBd0IsUUFBeEIsSUFBa0MsU0FBdEMsRUFBaUQsT0FBTyxHQUFHLENBQUMsZ0JBQUosQ0FBcUIsQ0FBckIsRUFBd0IsU0FBL0I7QUFDeEQ7O0FBQ0QsV0FBTyxJQUFQO0FBQ1AsR0FMRDs7QUFPQSxFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLFVBQVUsU0FBVixFQUFvQixHQUFwQixFQUF5QjtBQUN0QyxTQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsR0FBRyxDQUFDLGdCQUFKLENBQXFCLE1BQXBDLEVBQTJDLENBQUMsRUFBNUMsRUFBaUQ7QUFDekMsVUFBSSxHQUFHLENBQUMsZ0JBQUosQ0FBcUIsQ0FBckIsRUFBd0IsUUFBeEIsSUFBa0MsU0FBdEMsRUFBaUQsT0FBTyxHQUFHLENBQUMsZ0JBQUosQ0FBcUIsQ0FBckIsQ0FBUDtBQUN4RDs7QUFDRCxXQUFPLElBQVA7QUFDUCxHQUxEOztBQVNBLEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsVUFBUyxVQUFULEVBQW9CLFFBQXBCLEVBQTZCO0FBRTlDLElBQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTRCLFFBQTVCO0FBQ0EsSUFBQSxNQUFNLENBQUMsZUFBUCxHQUF1QixJQUF2QjtBQUVBLFFBQUksTUFBTSxHQUFDLE1BQU0sQ0FBQyxRQUFsQjs7QUFFQSxRQUFJLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLENBQXRCLEVBQXdCO0FBQ3BCLFVBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFNLENBQUMsVUFBUCxHQUFrQixRQUE1QixJQUFzQyxPQUExQyxFQUFtRDtBQUNqRCxRQUFBLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBTCxDQUFVLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLFFBQTVCLENBQVY7QUFDRDtBQUNIOztBQUVGLElBQUEsb0JBQW9CLENBQUMsMEJBQXJCLENBQWdELFVBQWhELEVBQTJELFFBQTNELEVBQW9FLE1BQXBFLEVBQTJFLFVBQTNFLEVBQXNGLElBQXRGLEVBQTRGLElBQTVGLENBQ1gsVUFBUyxJQUFULEVBQWU7QUFDWSxNQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLElBQWxCO0FBQ0EsTUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBNkIsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUF2QztBQUNBLE1BQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUE1QjtBQUNBLE1BQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxRQUFoQztBQUNBLE1BQUEsTUFBTSxDQUFDLGNBQVAsR0FBc0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxLQUFoQztBQUNBLE1BQUEsTUFBTSxDQUFDLFdBQVAsR0FBbUIsVUFBbkI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXVCLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBTSxDQUFDLGNBQVAsR0FBc0IsUUFBaEMsQ0FBdkI7QUFFQSxVQUFLLE1BQU0sQ0FBQyxjQUFQLElBQXVCLFFBQXZCLElBQW1DLE1BQU0sQ0FBQyxZQUFQLENBQW9CLE1BQXBCLEdBQTJCLENBQS9ELElBQXFFLE1BQU0sQ0FBQyxjQUFQLElBQXVCLENBQWhHLEVBQW1HLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLElBQXJCLENBQW5HLEtBQ0ssTUFBTSxDQUFDLFdBQVAsR0FBbUIsS0FBbkI7QUFFTCxNQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXVCLEtBQXZCO0FBRVgsS0FmTCxFQWVNLFVBQVMsS0FBVCxFQUFlO0FBRUosTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXVCLEtBQXZCO0FBQ0gsS0FuQmQ7QUFvQlAsR0FqQ0Q7O0FBb0NBLEVBQUEsTUFBTSxDQUFDLG9CQUFQLEdBQThCLFlBQVU7QUFDaEMsSUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsTUFBTSxDQUFDLGtCQUFQLEdBQTBCLEVBQXREO0FBQ0EsSUFBQSxNQUFNLENBQUMsZUFBUCxDQUF1QixDQUF2QixFQUF5QixNQUFNLENBQUMsa0JBQWhDO0FBQ1AsR0FIRDs7QUFNQSxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLFVBQVMsVUFBVCxFQUFvQixRQUFwQixFQUE2QjtBQUU3QyxJQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUE0QixRQUE1QjtBQUNBLElBQUEsTUFBTSxDQUFDLGVBQVAsR0FBdUIsSUFBdkI7QUFFQSxRQUFJLE1BQU0sR0FBQyxNQUFNLENBQUMsUUFBbEI7O0FBRUEsUUFBSSxNQUFNLENBQUMsVUFBUCxHQUFrQixDQUF0QixFQUF3QjtBQUNwQixVQUFJLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBTSxDQUFDLFVBQVAsR0FBa0IsUUFBNUIsSUFBc0MsT0FBMUMsRUFBbUQ7QUFDakQsUUFBQSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFNLENBQUMsVUFBUCxHQUFrQixRQUE1QixDQUFWO0FBQ0Q7QUFDSDs7QUFHRixJQUFBLG9CQUFvQixDQUFDLHNCQUFyQixDQUE0QyxVQUE1QyxFQUF1RCxRQUF2RCxFQUFnRSxNQUFoRSxFQUF1RSxJQUF2RSxFQUE2RSxJQUE3RSxDQUNYLFVBQVMsSUFBVCxFQUFlO0FBQ1ksTUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixJQUFsQjtBQUNBLE1BQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUFoQztBQUNBLE1BQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUE1QjtBQUNBLE1BQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxRQUFoQztBQUNBLE1BQUEsTUFBTSxDQUFDLGNBQVAsR0FBc0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxLQUFoQztBQUNBLE1BQUEsTUFBTSxDQUFDLFdBQVAsR0FBbUIsVUFBbkI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXVCLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBTSxDQUFDLGNBQVAsR0FBc0IsUUFBaEMsQ0FBdkI7QUFFQSxVQUFLLE1BQU0sQ0FBQyxjQUFQLElBQXVCLFFBQXZCLElBQW1DLE1BQU0sQ0FBQyxZQUFQLENBQW9CLE1BQXBCLEdBQTJCLENBQS9ELElBQXFFLE1BQU0sQ0FBQyxjQUFQLElBQXVCLENBQWhHLEVBQW1HLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLElBQXJCLENBQW5HLEtBQ0ssTUFBTSxDQUFDLFdBQVAsR0FBbUIsS0FBbkI7QUFFTCxNQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXVCLEtBQXZCO0FBRVosS0FmSixFQWVLLFVBQVMsS0FBVCxFQUFlO0FBRUgsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXVCLEtBQXZCO0FBQ0gsS0FuQmQ7QUFvQlAsR0FsQ0Q7O0FBcUNBLEVBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQTBCLFlBQVU7QUFDNUIsSUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsTUFBTSxDQUFDLGtCQUFQLEdBQTBCLEVBQXREO0FBQ0EsSUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixDQUF0QixFQUF3QixNQUFNLENBQUMsa0JBQS9CO0FBRVAsR0FKRDs7QUFPQSxFQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUE0QixZQUM1QjtBQUNMO0FBQ0EsU0FBSyxJQUFJLEdBQVQsSUFBZ0IsTUFBTSxDQUFDLFlBQXZCLEVBQXFDO0FBQ3BDLFVBQUksTUFBTSxDQUFDLFlBQVAsQ0FBb0IsY0FBcEIsQ0FBbUMsR0FBbkMsQ0FBSixFQUE2QztBQUM1QyxZQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsWUFBUCxDQUFvQixHQUFwQixDQUFaOztBQUNBLGFBQUssSUFBSSxNQUFULElBQW1CLEtBQW5CLEVBQTBCO0FBQ3pCLGNBQUksS0FBSyxDQUFDLE1BQUQsQ0FBTCxDQUFjLFVBQWQsS0FBNkIsSUFBN0IsSUFBcUMsS0FBSyxDQUFDLE1BQUQsQ0FBTCxDQUFjLGFBQWQsQ0FBekMsRUFBdUU7QUFDdEUsbUJBQU8sS0FBSyxDQUFDLE1BQUQsQ0FBWjtBQUNBO0FBQ0Q7O0FBQ0QsWUFBSSxLQUFLLENBQUMsY0FBRCxDQUFMLElBQXVCLEtBQTNCLEVBQWtDO0FBQ2pDO0FBQ0EsaUJBQU8sTUFBTSxDQUFDLFlBQVAsQ0FBb0IsR0FBcEIsQ0FBUDtBQUNDO0FBQ0Y7QUFDRDs7QUFHRixRQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLElBQTJCLENBQS9CLEVBQWtDO0FBQ3hCLE1BQUEsb0JBQW9CLENBQUMsa0JBQXJCLENBQXdDLE1BQU0sQ0FBQyxHQUEvQyxFQUFvRCxNQUFNLENBQUMsWUFBM0QsRUFBeUUsSUFBekUsQ0FDUixVQUFTLFFBQVQsRUFBbUI7QUFDRyxRQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLGNBQWUsUUFBUSxDQUFDLElBQVQsQ0FBYyxRQUFkLENBQXVCLE1BQXRDLEdBQStDLFlBQS9DLEdBQThELFFBQVEsQ0FBQyxJQUFULENBQWMsT0FBZCxDQUFzQixNQUFwRixHQUE2RixRQUF6SCxFQUFrSSxTQUFsSTtBQUNULE9BSEwsRUFHTSxVQUFTLEtBQVQsRUFBZTtBQUNILFFBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ2hCLE9BTEY7QUFPVixRQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLElBQTJCLENBQS9CLEVBQWtDO0FBQ3hCLE1BQUEsb0JBQW9CLENBQUMsY0FBckIsQ0FBb0MsTUFBTSxDQUFDLEdBQTNDLEVBQWdELE1BQU0sQ0FBQyxZQUF2RCxFQUFxRSxJQUFyRSxDQUNSLFVBQVMsUUFBVCxFQUFtQjtBQUNHLFFBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsY0FBZSxRQUFRLENBQUMsSUFBVCxDQUFjLFFBQWQsQ0FBdUIsTUFBdEMsR0FBK0MsWUFBL0MsR0FBOEQsUUFBUSxDQUFDLElBQVQsQ0FBYyxPQUFkLENBQXNCLE1BQXBGLEdBQTZGLFFBQXpILEVBQWtJLFNBQWxJO0FBQ1QsT0FITCxFQUdNLFVBQVMsS0FBVCxFQUFlO0FBQ0gsUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDaEIsT0FMRjtBQVFILEdBcENEOztBQXVDTixFQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQW9CLFlBQ3BCO0FBQ0MsSUFBQSxNQUFNLENBQUMsV0FBUCxHQUFtQixJQUFuQjtBQUNBLElBQUEsTUFBTSxDQUFDLE1BQVA7QUFDQSxHQUpEOztBQU1BLEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0IsVUFBUyxDQUFULEVBQ3BCO0FBQ0MseUNBQThCLE1BQU0sQ0FBQyxPQUFQLENBQWUsTUFBTSxDQUFDLFlBQXRCLENBQTlCLHdDQUFtRTtBQUE5RDtBQUFBLFVBQU8sR0FBUDtBQUFBLFVBQVksUUFBWjs7QUFDSCxVQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBSCxDQUFSLElBQW9CLE1BQU0sQ0FBQyxVQUFQLENBQWtCLENBQUMsQ0FBQyxHQUFwQixLQUEwQixTQUFsRCxFQUE4RCxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUgsQ0FBUixDQUFnQixRQUFoQixHQUEyQixNQUFNLENBQUMsVUFBUCxDQUFrQixDQUFDLENBQUMsR0FBcEIsQ0FBM0I7QUFDL0Q7QUFDRCxHQUxEOztBQVNBLEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBMEIsVUFBUyxHQUFULEVBQzFCO0FBQ0UsSUFBQSxvQkFBb0IsQ0FBQyxpQkFBckIsQ0FBdUMsR0FBdkMsRUFBNEMsSUFBNUMsQ0FFQSxVQUFBLFFBQVEsRUFBSTtBQUNJLFVBQUksUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBcEIsSUFBMkIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsR0FBbkQsRUFBeUQ7QUFDdkUsUUFBQSxNQUFNLENBQUMsR0FBUCxHQUFhLEdBQWI7QUFDa0IsUUFBQSxNQUFNLENBQUMsWUFBUCxHQUFxQixRQUFRLENBQUMsSUFBVCxDQUFjLGNBQW5DO0FBQ2xCLFFBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsR0FBNkIsUUFBUSxDQUFDLElBQVQsQ0FBYyxXQUEzQztBQUNBLFFBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsR0FBOEIsUUFBUSxDQUFDLElBQVQsQ0FBYyxZQUE1QztBQUNBLFFBQUEsTUFBTSxDQUFDLFNBQVAsR0FBbUIsUUFBUSxDQUFDLElBQVQsQ0FBYyxTQUFqQztBQUNBLFFBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQTBCLElBQTFCLENBTnVFLENBUXZFOztBQVJ1RSxtREFTbkQsR0FBRyxDQUFDLGdCQVQrQztBQUFBOztBQUFBO0FBU3ZFLDhEQUEyQztBQUFBLGdCQUFoQyxNQUFnQztBQUMxQyxnQkFBSSxNQUFJLENBQUMsUUFBTCxJQUFlLFVBQW5CLEVBQWdDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLEdBQTJCO0FBQUMsY0FBQSxFQUFFLEVBQUUsTUFBSSxDQUFDLFNBQVY7QUFBcUIsY0FBQSxPQUFPLEVBQUUsTUFBSSxDQUFDO0FBQW5DLGFBQTNCO0FBQ2hDO0FBWHNFO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBZXZFLDZDQUE4QixNQUFNLENBQUMsT0FBUCxDQUFlLE1BQU0sQ0FBQyxZQUF0QixDQUE5Qix3Q0FBbUU7QUFBOUQ7QUFBQSxjQUFPLEdBQVA7QUFBQSxjQUFZLFFBQVo7O0FBQ0osY0FBSSxRQUFRLENBQUMsV0FBVCxJQUFzQixNQUExQixFQUFrQyxNQUFNLENBQUMsU0FBUCxDQUFpQixPQUFqQixHQUEyQjtBQUFFLGtCQUFLLEdBQVA7QUFBVyx1QkFBVSxRQUFRLENBQUM7QUFBOUIsV0FBM0I7QUFDbEMsY0FBSSxRQUFRLENBQUMsV0FBVCxJQUFzQixNQUExQixFQUFrQyxPQUFPLE1BQU0sQ0FBQyxZQUFQLENBQW9CLEdBQXBCLENBQVAsQ0FGZ0MsQ0FFQTs7QUFDbEUsY0FBSSxRQUFRLENBQUMsT0FBVCxJQUFrQixJQUF0QixFQUE0QixPQUFPLE1BQU0sQ0FBQyxZQUFQLENBQW9CLEdBQXBCLENBQVAsQ0FIc0MsQ0FHTjs7QUFFNUQsK0NBQTRCLE1BQU0sQ0FBQyxPQUFQLENBQWUsUUFBUSxDQUFDLE9BQXhCLENBQTVCLHdDQUE4RDtBQUF6RDtBQUFBLGdCQUFPLEdBQVA7QUFBQSxnQkFBWSxNQUFaOztBQUNILFlBQUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsR0FBdkIsSUFBNkI7QUFBRSxxQkFBTSxHQUFSO0FBQWEsdUJBQVMsTUFBTSxDQUFDO0FBQTdCLGFBQTdCO0FBQ0Q7QUFDRCxTQXZCc0UsQ0F5QnZFOzs7QUFDQSw2Q0FBMEIsTUFBTSxDQUFDLE9BQVAsQ0FBZSxNQUFNLENBQUMsWUFBdEIsQ0FBMUIsd0NBQStEO0FBQUE7O0FBQTFEO0FBQUEsY0FBTyxLQUFQO0FBQUEsY0FBWSxJQUFaOztBQUNKO0FBQ0EsY0FBSSx5QkFBQSxNQUFNLENBQUMsWUFBUCw4RUFBc0IsSUFBSSxDQUFDLEVBQTNCLE1BQWdDLFNBQXBDLEVBQStDO0FBQzlDLFlBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsSUFBSSxDQUFDLEVBQXpCLElBQTZCLEVBQTdCOztBQUNBLGlEQUFtQyxNQUFNLENBQUMsT0FBUCxDQUFlLE1BQU0sQ0FBQyxlQUF0QixDQUFuQyx3Q0FBMkU7QUFBQTs7QUFBdEU7QUFBQSxrQkFBTyxRQUFQO0FBQUEsa0JBQWlCLFNBQWpCOztBQUF1RTtBQUMxRSxjQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLElBQUksQ0FBQyxFQUF6QixFQUE2QixRQUE3QixJQUF5QztBQUN4Qyw2Q0FBWSxJQUFJLENBQUMsT0FBakIsMkVBQVksY0FBZSxRQUFmLENBQVosMERBQVksc0JBQTBCLENBREU7QUFDRSwrQkFBZSxJQUFJLENBQUMsRUFEdEI7QUFDMEIsdUJBQU8sU0FBUSxDQUFDLEdBRDFDO0FBQ2dELHlCQUFTLFNBQVEsQ0FBQztBQURsRSxlQUF6QztBQUdEO0FBQ0Q7O0FBRUQsVUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixJQUFJLENBQUMsRUFBekIsRUFBNkIsTUFBN0IsSUFBc0MsSUFBSSxDQUFDLFFBQTNDO0FBQ0EsVUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixJQUFJLENBQUMsRUFBekIsRUFBNkIsTUFBN0IsSUFBc0MsSUFBSSxDQUFDLFdBQTNDO0FBQ0EsVUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixJQUFJLENBQUMsRUFBekIsRUFBNkIsY0FBN0IsMkJBQThDLElBQUksQ0FBQyxhQUFuRCxxRUFBb0UsSUFBcEU7QUFDQSxVQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLElBQUksQ0FBQyxFQUF6QixFQUE2QixtQkFBN0IsSUFBbUQsSUFBSSxDQUFDLE9BQXhEO0FBRUEsU0ExQ3NFLENBNEN0RTs7O0FBQ0EsUUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixXQUFwQixDQUFpQyxNQUFNLENBQUMsU0FBUCxDQUFpQixPQUFqQixDQUF5QixFQUExRCxFQUE2RCxHQUE3RCxFQUFrRSxNQUFNLENBQUMsU0FBUCxDQUFpQixPQUFqQixDQUF5QixPQUEzRixFQUFtRyxLQUFuRyxFQUEwRyxJQUExRyxDQUNDLFVBQUMsSUFBRCxFQUFVO0FBRVQsVUFBQSxNQUFNLENBQUMsUUFBUCxHQUFpQixJQUFJLENBQUMsS0FBdEI7O0FBRlMsc0RBR1csTUFBTSxDQUFDLFFBSGxCO0FBQUE7O0FBQUE7QUFHVCxtRUFBcUM7QUFBQSxrQkFBekIsS0FBeUI7QUFDbkMsY0FBQSxNQUFNLENBQUMsZUFBUCxDQUF1QixLQUFJLENBQUMsY0FBNUIsSUFBNkM7QUFBRSx1QkFBTSxLQUFJLENBQUMsY0FBYjtBQUE2Qix5QkFBUyxLQUFJLENBQUM7QUFBM0MsZUFBN0M7QUFDRCxhQUxRLENBTVQ7O0FBTlM7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQSxzREFPVSxNQUFNLENBQUMsUUFQakI7QUFBQTs7QUFBQTtBQU9ULG1FQUFvQztBQUFBOztBQUFBLGtCQUF6QixNQUF5QjtBQUNuQyxrQkFBSSxxQkFBQSxNQUFNLENBQUMsUUFBUCxzRUFBa0IsTUFBSSxDQUFDLFVBQXZCLE1BQW9DLFNBQXhDLEVBQW9ELE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQUksQ0FBQyxVQUFyQixJQUFpQyxFQUFqQzs7QUFDcEQsbURBQW9DLE1BQU0sQ0FBQyxPQUFQLENBQWUsTUFBTSxDQUFDLGVBQXRCLENBQXBDLHdDQUE0RTtBQUF2RTtBQUFBLG9CQUFPLFNBQVA7QUFBQSxvQkFBa0IsVUFBbEI7O0FBQ0o7QUFDQSxvQkFBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFJLENBQUMsVUFBckIsRUFBaUMsU0FBakMsS0FBNkMsU0FBakQsRUFBNkQsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBSSxDQUFDLFVBQXJCLEVBQWlDLFNBQWpDLElBQThDO0FBQUUsOEJBQVksSUFBZDtBQUFxQixpQ0FBZSxNQUFJLENBQUMsVUFBekM7QUFBcUQseUJBQU8sVUFBUSxDQUFDLEdBQXJFO0FBQTJFLDJCQUFTLFVBQVEsQ0FBQztBQUE3RixpQkFBOUM7QUFDN0Qsb0JBQUksTUFBSSxDQUFDLGNBQUwsSUFBcUIsU0FBekIsRUFDRSxNQUFNLENBQUMsUUFBUCxDQUFnQixNQUFJLENBQUMsVUFBckIsRUFBaUMsU0FBakMsRUFBNEMsVUFBNUMsSUFBMEQsSUFBMUQ7QUFDRjs7QUFFRCxjQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQUksQ0FBQyxVQUFyQixFQUFpQyxNQUFqQyxJQUEwQyxNQUFJLENBQUMsWUFBL0M7QUFDQSxjQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE1BQUksQ0FBQyxVQUFyQixFQUFpQyxNQUFqQyxJQUEwQyxNQUFJLENBQUMsZ0JBQS9DLENBVm1DLENBV25DOztBQUNBLGNBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBSSxDQUFDLFVBQXJCLEVBQWlDLGNBQWpDLElBQWtELElBQWxELENBWm1DLENBYW5DO0FBQ0E7QUFyQlE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXVCVixTQXhCRDtBQTJCYyxPQXhFRCxNQXdFTztBQUNKLFFBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsNEJBQTVCLEVBQTBELE1BQTFEO0FBQ0Y7QUFFSixLQS9FYixFQWdGQSxVQUFBLEtBQUssRUFBSTtBQUNELE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ1AsS0FsRkQ7QUFvRkYsR0F0RkE7QUE0RkQ7O0FBRUQsZUFBZSxDQUFDLE9BQWhCLEdBQTBCLENBQUMsUUFBRCxFQUFXLFlBQVgsRUFBd0IsUUFBeEIsRUFBaUMsVUFBakMsRUFBNEMsV0FBNUMsRUFBd0QscUJBQXhELEVBQThFLG1CQUE5RSxFQUFrRyxrQkFBbEcsRUFBcUgsY0FBckgsRUFBb0ksdUJBQXBJLEVBQTRKLGFBQTVKLEVBQTBLLHNCQUExSyxFQUFpTSxpQkFBak0sRUFBbU4saUJBQW5OLEVBQXFPLGlCQUFyTyxFQUF1UCxVQUF2UCxFQUFrUSxjQUFsUSxDQUExQjs7O0FDcDdEQTs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBLElBQUksV0FBVyxHQUFDLGNBQWhCOztBQUVBLElBQUksT0FBTSxHQUFHLE9BQU8sQ0FBQyxNQUFSLENBQWUsV0FBZixFQUE0QixFQUE1QixDQUFiOztBQUVBLE9BQU0sQ0FDTCxVQURELENBQ1ksdUJBRFosRUFDb0MsZ0NBRHBDLEVBRUMsVUFGRCxDQUVZLGVBRlosRUFFNEIsc0JBRjVCLEVBR0MsVUFIRCxDQUdZLGdCQUhaLEVBRzZCLDBCQUg3QixFQUlDLFVBSkQsQ0FJWSxtQkFKWixFQUlnQyw2QkFKaEMsRUFLQyxVQUxELENBS1ksV0FMWixFQUt3QixxQkFMeEIsRUFNQyxVQU5ELENBTVksVUFOWixFQU11QixvQkFOdkIsRUFPQyxVQVBELENBT1ksZ0JBUFosRUFPNkIsMEJBUDdCLEVBUUMsVUFSRCxDQVFZLFlBUlosRUFReUIsc0JBUnpCLEVBU0MsVUFURCxDQVNZLGNBVFosRUFTMkIsd0JBVDNCLEVBVUMsVUFWRCxDQVVZLGdCQVZaLEVBVTZCLDBCQVY3QixFQVdDLFVBWEQsQ0FXWSxpQkFYWixFQVc4QiwyQkFYOUIsRUFZQyxVQVpELENBWVksWUFaWixFQVl5QixzQkFaekIsRUFhQyxVQWJELENBYVksVUFiWixFQWF1QixvQkFidkIsRUFjQyxVQWRELENBY1kscUJBZFosRUFja0MsbUNBZGxDLEVBZUMsVUFmRCxDQWVZLGFBZlosRUFlMEIsdUJBZjFCLEVBZ0JDLFVBaEJELENBZ0JZLGtCQWhCWixFQWdCK0IsZ0NBaEIvQixFQWlCQyxVQWpCRCxDQWlCWSxpQkFqQlosRUFpQjhCLDJCQWpCOUIsRUFrQkMsVUFsQkQsQ0FrQlksV0FsQlosRUFrQndCLHFCQWxCeEIsRUFtQkMsVUFuQkQsQ0FtQlksU0FuQlosRUFtQnNCLGtCQW5CdEIsRUFvQkMsVUFwQkQsQ0FvQlksMkJBcEJaLEVBb0J3QyxvQ0FwQnhDLEVBcUJDLFVBckJELENBcUJZLG9CQXJCWixFQXFCaUMsNkJBckJqQyxFQXNCQyxVQXRCRCxDQXNCWSxrQkF0QlosRUFzQmdDLGdDQXRCaEMsRUF1QkMsVUF2QkQsQ0F1QlksWUF2QlosRUF1QnlCLHFCQXZCekIsRUF3QkMsVUF4QkQsQ0F3QlksZ0JBeEJaLEVBd0I2QiwwQkF4QjdCLEVBeUJDLFVBekJELENBeUJZLHNCQXpCWixFQXlCbUMsb0NBekJuQyxFQTBCQyxVQTFCRCxDQTBCWSxrQkExQlosRUEwQitCLGdDQTFCL0IsRUEyQkMsVUEzQkQsQ0EyQlksa0JBM0JaLEVBMkIrQixnQ0EzQi9CLEVBNEJDLFVBNUJELENBNEJZLHdCQTVCWixFQTRCcUMsc0NBNUJyQyxFQTZCQyxVQTdCRCxDQTZCWSx1QkE3QlosRUE2Qm9DLHFDQTdCcEMsRUE4QkMsVUE5QkQsQ0E4Qlksa0JBOUJaLEVBOEIrQixnQ0E5Qi9CLEVBK0JDLFVBL0JELENBK0JZLGlCQS9CWixFQStCOEIsK0JBL0I5QixFQWdDQyxVQWhDRCxDQWdDWSxrQkFoQ1osRUFnQytCLGdDQWhDL0IsRUFpQ0MsVUFqQ0QsQ0FpQ1ksa0JBakNaLEVBaUMrQixnQ0FqQy9CLEVBa0NDLFVBbENELENBa0NZLFdBbENaLEVBa0N3Qix5QkFsQ3hCLEVBbUNDLFVBbkNELENBbUNZLHFCQW5DWixFQW1Da0MsbUNBbkNsQyxFQW9DQyxVQXBDRCxDQW9DWSwyQkFwQ1osRUFvQ3dDLHlDQXBDeEMsRUFxQ0MsVUFyQ0QsQ0FxQ1ksNEJBckNaLEVBcUN5QywwQ0FyQ3pDLEVBc0NDLFVBdENELENBc0NZLHFCQXRDWixFQXNDa0MsbUNBdENsQyxFQXVDQyxVQXZDRCxDQXVDWSw2QkF2Q1osRUF1QzBDLDJDQXZDMUMsRUF3Q0MsVUF4Q0QsQ0F3Q1ksZUF4Q1osRUF3QzRCLHlCQXhDNUIsRUF5Q0MsVUF6Q0QsQ0F5Q1ksa0JBekNaLEVBeUMrQiwrQkF6Qy9CLEVBMENDLFVBMUNELENBMENZLGNBMUNaLEVBMEMyQiwyQkExQzNCLEVBMkNDLFVBM0NELENBMkNZLFlBM0NaLEVBMkN5QixzQkEzQ3pCLEVBNENDLFVBNUNELENBNENZLGlCQTVDWixFQTRDOEIsOEJBNUM5QixFQTZDQyxVQTdDRCxDQTZDWSxtQkE3Q1osRUE2Q2dDLGdDQTdDaEMsRUE4Q0MsVUE5Q0QsQ0E4Q1kscUJBOUNaLEVBOENrQyxrQ0E5Q2xDLEVBK0NDLFVBL0NELENBK0NZLFlBL0NaLEVBK0N5Qix5QkEvQ3pCLEVBZ0RDLFVBaERELENBZ0RZLGtCQWhEWixFQWdEK0IsK0JBaEQvQixFQWlEQyxVQWpERCxDQWlEWSxjQWpEWixFQWlEMkIsc0JBakQzQixFQWtEQyxVQWxERCxDQWtEWSxjQWxEWixFQWtEMkIsd0JBbEQzQixFQW1EQyxVQW5ERCxDQW1EWSxvQkFuRFosRUFtRGlDLDhCQW5EakMsRUFvREMsVUFwREQsQ0FvRFksd0JBcERaLEVBb0RxQyxrQ0FwRHJDLEVBcURDLFVBckRELENBcURZLHNCQXJEWixFQXFEbUMsZ0NBckRuQyxFQXNEQyxVQXRERCxDQXNEWSxjQXREWixFQXNEMkIsd0JBdEQzQixFQXVEQyxVQXZERCxDQXVEWSxnQkF2RFosRUF1RDZCLDBCQXZEN0IsRUF3REMsVUF4REQsQ0F3RFksa0JBeERaLEVBd0QrQiw0QkF4RC9CLEVBeURDLFVBekRELENBeURZLGlCQXpEWixFQXlEOEIsMkJBekQ5QixFQTBEQyxVQTFERCxDQTBEWSxxQkExRFosRUEwRGtDLCtCQTFEbEMsRUEyREMsVUEzREQsQ0EyRFksMkJBM0RaLEVBMkR3Qyx5Q0EzRHhDLEVBNERDLFVBNURELENBNERZLHVCQTVEWixFQTREb0MscUNBNURwQyxFQTZEQyxVQTdERCxDQTZEWSx1QkE3RFosRUE2RG9DLHFDQTdEcEMsRUE4REMsVUE5REQsQ0E4RFksb0JBOURaLEVBOERpQyxrQ0E5RGpDLEVBK0RDLFVBL0RELENBK0RZLFdBL0RaLEVBK0R3QixxQkEvRHhCOztlQW1FZSxXOzs7Ozs7QUNoRmY7QUFDQTs7Ozs7Ozs7Ozs7O0FBQ0E7Ozs7QUFBZ0U7QUFFekQsU0FBUyxrQkFBVCxDQUE2QixNQUE3QixFQUFxQyxVQUFyQyxFQUFpRCxNQUFqRCxFQUF3RCxRQUF4RCxFQUFpRSxRQUFqRSxFQUEwRSxxQkFBMUUsRUFBZ0csV0FBaEcsRUFBNEcsWUFBNUcsRUFBeUgsU0FBekgsRUFBb0k7QUFFdkksRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFnQixvQkFBaEI7QUFDQSxNQUFJLE9BQU8sR0FBQyxDQUFDLEtBQUQsRUFBTyxLQUFQLENBQVo7QUFDQSxFQUFBLHFCQUFxQixDQUFDLGdCQUF0QjtBQUNBLEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBbUIsWUFBWSxDQUFDLE1BQWhDO0FBRUEsRUFBQSxNQUFNLENBQUMsRUFBUCxHQUFVO0FBQUMsSUFBQSxRQUFRLEVBQUcsRUFBWjtBQUFnQixJQUFBLFNBQVMsRUFBRyxFQUE1QjtBQUErQixJQUFBLFNBQVMsRUFBRztBQUEzQyxHQUFWO0FBRUEsTUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDLE1BQVYsR0FBbUIsSUFBOUI7QUFDQSxNQUFJLElBQUksS0FBRyxTQUFYLEVBQXNCLElBQUksR0FBRSxPQUFOO0FBRXRCLEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0Isa0JBQVUsSUFBVixDQUFwQjs7QUFFQSxFQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUE0QixZQUFVO0FBRTFCLElBQUEscUJBQXFCLENBQUMsc0JBQXRCLENBQTZDLE1BQU0sQ0FBQyxTQUFwRCxFQUE4RCxVQUFTLFFBQVQsRUFBbUI7QUFDM0UsTUFBQSxRQUFRLENBQUMsWUFBVTtBQUNsQixZQUFJLFFBQVEsQ0FBQyxNQUFULEtBQW9CLEdBQXhCLEVBQTZCO0FBRTFCLFVBQUEsTUFBTSxDQUFDLGFBQVAsR0FBdUIsSUFBdkI7QUFDQSxVQUFBLE1BQU0sQ0FBQyxNQUFQLEdBQWdCLFFBQVEsQ0FBQyxJQUFULENBQWMsT0FBOUI7QUFDRCxTQUpGLE1BS0M7QUFDRSxVQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXVCLEtBQXZCO0FBRUQ7O0FBQ0QsUUFBQSxNQUFNLENBQUMsU0FBUCxHQUFtQixJQUFuQjtBQUNELE9BWE8sQ0FBUjtBQVlMLEtBYkQ7QUFnQlAsR0FsQkw7O0FBb0JBLEVBQUEsTUFBTSxDQUFDLGtCQUFQOztBQUVDLEVBQUEsTUFBTSxDQUFDLHFCQUFQLEdBQTZCLFlBQVc7QUFFakMsUUFBSSxNQUFNLENBQUMsRUFBUCxDQUFVLFFBQVYsS0FBcUIsRUFBckIsSUFBMkIsTUFBTSxDQUFDLEVBQVAsQ0FBVSxRQUFWLEtBQXFCLFNBQXBELEVBQStELE1BQU0sQ0FBQyxlQUFQLEdBQXVCLElBQXZCLENBQS9ELEtBQ0ssTUFBTSxDQUFDLGVBQVAsR0FBdUIsS0FBdkI7QUFDUixHQUpKOztBQU1BLEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBaUIsWUFBVztBQUVyQixJQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWdCLEVBQWhCO0FBQ0gsR0FISjs7QUFLRCxFQUFBLE1BQU0sQ0FBQyxzQkFBUCxHQUE4QixZQUFXO0FBRWpDLFFBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLEtBQXNCLEVBQXRCLElBQTRCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixLQUFzQixTQUF0RCxFQUFpRSxNQUFNLENBQUMsZ0JBQVAsR0FBd0IsSUFBeEIsQ0FBakUsS0FDSyxNQUFNLENBQUMsZ0JBQVAsR0FBd0IsS0FBeEI7QUFDUixHQUpMOztBQUtFLEVBQUEsTUFBTSxDQUFDLHNCQUFQLEdBQThCLFlBQVc7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQUksTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLEtBQXNCLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBcEMsRUFBK0MsTUFBTSxDQUFDLGdCQUFQLEdBQXdCLElBQXhCLENBQS9DLEtBQ00sTUFBTSxDQUFDLGdCQUFQLEdBQXdCLEtBQXhCO0FBQ1YsR0FSSDs7QUFXRSxFQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXFCLFVBQVMsUUFBVCxFQUFrQixNQUFsQixFQUF5QixTQUF6QixFQUFtQyxTQUFuQyxFQUE2QyxNQUE3QyxFQUFxRDtBQUV4RSxJQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLElBQXJCO0FBRUEsSUFBQSxxQkFBcUIsQ0FBQyxRQUF0QixDQUErQixRQUEvQixFQUF3QyxNQUF4QyxFQUErQyxTQUEvQyxFQUF5RCxTQUF6RCxFQUFtRSxNQUFuRSxFQUEyRSxVQUFTLFFBQVQsRUFBbUI7QUFFNUYsTUFBQSxRQUFRLENBQUMsWUFBVTtBQUVmLFlBQUcsUUFBUSxDQUFDLE9BQVosRUFBcUI7QUFFakIsVUFBQSxNQUFNLENBQUMscUJBQVAsR0FBNkIsSUFBN0I7QUFDQSxVQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQW9CLFFBQVEsQ0FBQyxPQUE3QjtBQUVDLFNBTEwsTUFNUztBQUVILFVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsUUFBUSxDQUFDLE9BQTNCO0FBQ0EsVUFBQSxNQUFNLENBQUMscUJBQVAsR0FBNkIsS0FBN0I7QUFFRDs7QUFFSCxRQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLEtBQXJCO0FBR0wsT0FsQk8sQ0FBUjtBQW1CRCxLQXJCRDtBQXVCRCxHQTNCRDtBQThCTDs7QUFFSCxrQkFBa0IsQ0FBQyxPQUFuQixHQUEyQixDQUFDLFFBQUQsRUFBVyxZQUFYLEVBQXlCLFFBQXpCLEVBQWtDLFVBQWxDLEVBQTZDLFVBQTdDLEVBQXdELHVCQUF4RCxFQUFnRixhQUFoRixFQUE4RixjQUE5RixFQUE2RyxXQUE3RyxDQUEzQjs7QUFHTyxTQUFTLHlCQUFULENBQW9DLE1BQXBDLEVBQTRDLFVBQTVDLEVBQXdELE1BQXhELEVBQStELFFBQS9ELEVBQXdFLFFBQXhFLEVBQWlGLHFCQUFqRixFQUF1RyxXQUF2RyxFQUFvSDtBQUV2SCxFQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWdCLDJCQUFoQjtBQUNBLEVBQUEscUJBQXFCLENBQUMsZ0JBQXRCO0FBRUEsRUFBQSxNQUFNLENBQUMsR0FBUCxHQUFZLDBKQUFaO0FBQ0EsRUFBQSxNQUFNLENBQUMsYUFBUCxHQUFzQixLQUF0QjtBQUNBLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBaUIsRUFBakI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQW9CLEtBQXBCO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFvQixLQUFwQjtBQUNBLEVBQUEsTUFBTSxDQUFDLEtBQVAsR0FBYSxFQUFiOztBQUdLLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsWUFBYTtBQUM5QixXQUFRLE1BQU0sQ0FBQyxLQUFQLElBQWdCLEVBQWpCLEdBQXNCLEVBQXRCLEdBQTRCLE1BQU0sQ0FBQyxHQUFQLENBQVcsSUFBWCxDQUFnQixNQUFNLENBQUMsS0FBdkIsQ0FBRCxHQUFrQyxVQUFsQyxHQUErQyxZQUFqRjtBQUNKLEdBRkQ7O0FBSUEsRUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsWUFBWTtBQUN0QyxJQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWdCLEVBQWhCO0FBQ0EsUUFBSSxNQUFNLENBQUMsS0FBUCxJQUFjLEVBQWQsSUFBb0IsTUFBTSxDQUFDLEtBQVAsSUFBYyxTQUFsQyxJQUErQyxNQUFNLENBQUMsS0FBUCxJQUFjLElBQWpFLEVBQXVFLE1BQU0sQ0FBQyxZQUFQLEdBQXFCLElBQXJCLENBQXZFLEtBQ0ssTUFBTSxDQUFDLFlBQVAsR0FBb0IsS0FBcEI7QUFDTCxHQUpGOztBQU9DLEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0IsVUFBUyxFQUFULEVBQ3BCO0FBQ0UsSUFBQSxFQUFFLENBQUMsY0FBSDtBQUNBLElBQUEscUJBQXFCLENBQUMsZUFBdEIsQ0FBc0MsTUFBTSxDQUFDLEtBQTdDLEVBQW9ELFVBQVMsUUFBVCxFQUFtQjtBQUNyRSxVQUFHLFFBQVEsQ0FBQyxPQUFaLEVBQXFCO0FBQ2YsUUFBQSxNQUFNLENBQUMsYUFBUCxHQUFxQixJQUFyQjtBQUNMLE9BRkQsTUFFTztBQUNELFFBQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsUUFBUSxDQUFDLE9BQTNCO0FBQ0EsUUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQixLQUFyQjtBQUNMO0FBQ0YsS0FQRDtBQVFELEdBWEQsQ0F4QmlILENBbUMvRzs7O0FBR1IsRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixZQUFZO0FBQzVCLFdBQU8sTUFBTSxDQUFDLEdBQVAsQ0FBVyxJQUFYLENBQWdCLE1BQU0sQ0FBQyxLQUF2QixDQUFQO0FBRUQsR0FIRDtBQU9IOztBQUVDLHlCQUF5QixDQUFDLE9BQTFCLEdBQWtDLENBQUMsUUFBRCxFQUFXLFlBQVgsRUFBeUIsUUFBekIsRUFBa0MsVUFBbEMsRUFBNkMsVUFBN0MsRUFBd0QsdUJBQXhELEVBQWdGLGFBQWhGLENBQWxDOztBQUdhLFNBQVMsU0FBVCxDQUFvQixNQUFwQixFQUE0QixVQUE1QixFQUF3QyxNQUF4QyxFQUErQyxRQUEvQyxFQUF3RCxnQkFBeEQsRUFBeUUscUJBQXpFLEVBQStGLFdBQS9GLEVBQTJHLFNBQTNHLEVBQXFILFFBQXJILEVBQStIO0FBQUE7O0FBRTFJLEVBQUEscUJBQXFCLENBQUMsZ0JBQXRCO0FBQ0EsTUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDLE1BQVYsR0FBbUIsSUFBOUI7QUFDQSxNQUFJLElBQUksS0FBRyxTQUFYLEVBQXNCLElBQUksR0FBRSxPQUFOO0FBQ3RCLEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0Isa0JBQVUsSUFBVixDQUFwQjtBQUNBLEVBQUEsTUFBTSxDQUFDLElBQVAsR0FBWSxXQUFaO0FBQ0EsRUFBQSxNQUFNLENBQUMsTUFBUCxHQUFnQixrQkFBVSxRQUFWLENBQWhCO0FBRUEsRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFpQixFQUFqQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFdBQVAsR0FBb0IsS0FBcEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXVCLEtBQXZCO0FBQ0EsRUFBQSxNQUFNLENBQUMsZUFBUCxHQUF1QixLQUF2QjtBQUNBLEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBaUIsSUFBakI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWdCLEVBQWhCO0FBQ0EsRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFnQixFQUFoQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBa0IsRUFBbEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXVCLHNFQUErQyxNQUFNLENBQUMsVUFBdEQsdURBQStDLG1CQUFtQixlQUFsRSxLQUFxRixxREFBNUc7O0FBSUEsV0FBVSxxQkFBVixHQUFrQztBQUM3QixRQUFJLE1BQU0sQ0FBQyxRQUFQLElBQWlCLEVBQWpCLElBQXVCLE1BQU0sQ0FBQyxRQUFQLElBQWlCLFNBQXhDLElBQXFELE1BQU0sQ0FBQyxRQUFQLElBQWlCLElBQTFFLEVBQWlGLE1BQU0sQ0FBQyxlQUFQLEdBQXdCLElBQXhCLENBQWpGLEtBQ0ssTUFBTSxDQUFDLGVBQVAsR0FBdUIsS0FBdkI7QUFDTDs7QUFFTCxXQUFTLHFCQUFULEdBQWlDO0FBQzVCLFFBQUksQ0FBQyxNQUFNLENBQUMsU0FBUixJQUFxQixNQUFNLENBQUMsUUFBUCxJQUFpQixFQUF0QyxJQUE0QyxNQUFNLENBQUMsUUFBUCxJQUFpQixTQUE3RCxJQUEwRSxNQUFNLENBQUMsUUFBUCxJQUFpQixJQUEvRixFQUFzRyxNQUFNLENBQUMsZUFBUCxHQUF3QixJQUF4QixDQUF0RyxLQUNLLE1BQU0sQ0FBQyxlQUFQLEdBQXVCLEtBQXZCO0FBQ0wsSUFBQSxNQUFNLENBQUMsU0FBUCxHQUFpQixLQUFqQjtBQUNBOztBQUVMLEVBQUEsTUFBTSxDQUFDLEtBQVAsR0FBZSxVQUFTLEVBQVQsRUFBYTtBQUVwQixJQUFBLEVBQUUsQ0FBQyxjQUFIO0FBRUEsSUFBQSxNQUFNLENBQUMsU0FBUCxHQUFpQixLQUFqQjtBQUNBLElBQUEscUJBQXFCO0FBQ3JCLElBQUEscUJBQXFCO0FBQ3JCLFFBQUksTUFBTSxDQUFDLGVBQVAsSUFBMEIsTUFBTSxDQUFDLGVBQXJDLEVBQXNEO0FBRXRELElBQUEsTUFBTSxDQUFDLFdBQVAsR0FBbUIsSUFBbkI7QUFDQSxJQUFBLHFCQUFxQixDQUFDLEtBQXRCLENBQTRCLE1BQU0sQ0FBQyxRQUFuQyxFQUE2QyxNQUFNLENBQUMsUUFBcEQsRUFBOEQsVUFBUyxRQUFULEVBQW1CO0FBRS9FLFVBQUksUUFBUSxDQUFDLE9BQWIsRUFBc0I7QUFBQTs7QUFDcEIsWUFBSSxRQUFRLENBQUMsSUFBVCxDQUFjLFlBQWxCLEVBQ0UsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsWUFBbkIsR0FBa0MsUUFBUSxDQUFDLElBQVQsQ0FBYyxZQUFkLENBQTJCLE1BQTNCLENBQWtDLFVBQUMsR0FBRCxFQUFNLEdBQU4sRUFBYztBQUM5RSxVQUFBLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBSixDQUFPLFFBQVAsRUFBRCxDQUFILEdBQXlCLEdBQXpCO0FBQ0EsaUJBQU8sR0FBUDtBQUFZLFNBRmtCLEVBRWhCLEVBRmdCLENBQWxDO0FBS0EsUUFBQSxxQkFBcUIsQ0FBQyxjQUF0QixDQUFxQyxRQUFRLENBQUMsSUFBOUMsRUFBb0QsTUFBTSxDQUFDLFFBQTNELEVBQW9FLE1BQU0sQ0FBQyxRQUEzRTtBQUdBLFlBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDO0FBQ0EsWUFBSSxZQUFZLDRCQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLEdBQWxDLG9GQUFHLHNCQUFvQyxNQUF2QywyREFBRyx1QkFBNEMsY0FBL0Q7QUFDQSxZQUFJLE1BQU0sNkJBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsR0FBbEMscUZBQUcsdUJBQW9DLE1BQXZDLDJEQUFHLHVCQUE0QyxpQkFBekQ7QUFDQSxZQUFJLFdBQVcsNkJBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsWUFBbEMsMkRBQUcsdUJBQTZDLFVBQS9EO0FBR0EsWUFBSSxNQUFNLElBQUUsU0FBWixFQUF1QixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCLE1BQU0sQ0FBQyxNQUF6QixDQUFUO0FBRXZCLFlBQUksU0FBUyxHQUFHLGlCQUFoQjtBQUNBLFlBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFQLENBQWMsWUFBZCxDQUFqQjtBQUVBLFlBQUksWUFBWSxJQUFFLFNBQWxCLEVBQTZCLFNBQVMsR0FBQyxZQUFWOztBQUU3QixZQUFJLENBQUEsVUFBVSxTQUFWLElBQUEsVUFBVSxXQUFWLFlBQUEsVUFBVSxDQUFFLGVBQVosS0FBNkIsU0FBakMsRUFBOEM7QUFDNUMsVUFBQSxTQUFTLEdBQUcsVUFBVSxDQUFDLGVBQXZCO0FBQ0EsVUFBQSxNQUFNLEdBQUcsVUFBVDtBQUNEOztBQUdELDhCQUFLLFFBQVEsQ0FBQyxJQUFkLGlFQUFLLGVBQWUsR0FBcEIsK0NBQUssbUJBQW9CLFVBQXpCLEVBQXNDO0FBQUE7O0FBQ2xDLGNBQUksVUFBVSxzQkFBSSxRQUFRLENBQUMsSUFBYiwyRUFBSSxnQkFBZSxHQUFuQix3REFBSSxvQkFBb0IsVUFBcEIsQ0FBK0IsUUFBL0IsRUFBbEI7O0FBQ0EsY0FBSSx5QkFBQyxVQUFVLENBQUMsT0FBWixnREFBQyxvQkFBb0IsVUFBckIsQ0FBSixFQUFxQztBQUNuQyxZQUFBLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFVBQW5CLEdBQWdDLFVBQWhDLENBRG1DLENBQ1E7QUFDNUM7O0FBQ0QsY0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFWLEdBQW1CLEdBQXpCLEVBQStCO0FBQzNCO0FBQ0EsWUFBQSxNQUFNLENBQUMsTUFBUCxDQUFjLEdBQWQsR0FBa0IsVUFBbEI7QUFFQSxZQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLE1BQU0sQ0FBQyxPQUFQLENBQWUsSUFBbkMsRUFBd0MsTUFBTSxDQUFDLE1BQS9DLEVBQXVEO0FBQUUsY0FBQSxNQUFNLEVBQUUsS0FBVjtBQUFtQixjQUFBLFFBQVEsRUFBQyxTQUE1QjtBQUF1QyxjQUFBLE9BQU8sRUFBQztBQUEvQyxhQUF2RDtBQUNIO0FBQ0EsU0FYTCxNQVdXO0FBQUc7QUFDUixVQUFBLFNBQVMsR0FBRyx1QkFBWjtBQUNBLFVBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxTQUFWLEVBQXFCLE1BQXJCO0FBQ0E7QUFDRDs7QUFHTCxZQUFJLFdBQUosRUFBaUI7QUFBQTs7QUFBRTtBQUNqQixjQUFJLE9BQU8sNEJBQUcsU0FBUyxDQUFDLE1BQVYsR0FBbUIsT0FBdEIsbUdBQW9DLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQXZELHFGQUFvQyx1QkFBZ0MsWUFBcEUsMkRBQW9DLHVCQUE4QyxVQUE3RjtBQUVBLFVBQUEscUJBQXFCLENBQUMsT0FBdEIsQ0FBOEIsRUFBOUIsRUFBa0M7QUFBQywyQkFBZTtBQUFoQixXQUFsQyxFQUErRCxPQUEvRCxFQUF3RSxJQUF4RSxDQUE2RSxVQUFTLElBQVQsRUFBYztBQUN6RixnQkFBSSxJQUFJLEdBQUcsSUFBSCxhQUFHLElBQUgsdUJBQUcsSUFBSSxDQUFFLGFBQWpCLENBRHlGLENBRXpGOztBQUNBLFlBQUEscUJBQXFCLENBQUMsY0FBdEIsQ0FBcUMsSUFBckMsYUFBcUMsSUFBckMsdUJBQXFDLElBQUksQ0FBRSxJQUEzQzs7QUFFQSxnQkFBSSxJQUFJLElBQUUsSUFBVixFQUFlO0FBQ1gsY0FBQSxxQkFBcUIsQ0FBQyxjQUF0QixDQUFxQyxJQUFyQyxFQUEyQyxJQUEzQyxDQUNBLFVBQVMsSUFBVCxFQUFlO0FBQ1gsZ0JBQUEscUJBQXFCLENBQUMsYUFBdEIsQ0FBb0MsU0FBcEMsRUFBOEMsTUFBOUMsRUFBcUQsSUFBckQsRUFBMEQsSUFBMUQsRUFEVyxDQUNxRDtBQUNuRSxlQUhELEVBR0UsVUFBUyxNQUFULEVBQWdCO0FBQ2QsZ0JBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsTUFBNUIsRUFBbUMsT0FBbkM7QUFDQSxnQkFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLE9BQU8sQ0FBQyxJQUFsQixFQUF1QixRQUF2QjtBQUNILGVBTkQ7QUFPRCxhQVJILE1BUVU7QUFDUixjQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLG1DQUFpQyxPQUE3RCxFQUFxRSxPQUFyRTtBQUNBLGNBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxPQUFPLENBQUMsSUFBbEIsRUFBdUIsUUFBdkI7QUFDQztBQUNKLFdBakJELEVBaUJFLFVBQVMsS0FBVCxFQUFlO0FBQ2IsWUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDQSxnQkFBSSxLQUFLLENBQUMsTUFBTixJQUFjLEdBQWxCLEVBQXdCLE1BQU0sQ0FBQyxFQUFQLENBQVUsaUJBQVYsRUFBNEIsRUFBNUI7QUFDM0IsV0FwQkQ7QUFzQkgsU0F6QkMsTUEwQkE7QUFDRSxjQUFJLE1BQU0sR0FBQyxXQUFXLENBQUMscUJBQVosQ0FBa0MsU0FBbEMsRUFBNEMsSUFBNUMsQ0FBWDtBQUNBLGNBQUksTUFBTSxJQUFFLFNBQVosRUFBdUIsTUFBTSxHQUFDO0FBQUMsMkJBQWU7QUFBaEIsV0FBUDtBQUVuQixVQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixFQUFvQixNQUFwQjtBQUNMO0FBQ1IsT0EvRUcsTUFnRkM7QUFBUTtBQUNULFFBQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsTUFBTSxDQUFDLGFBQXpCO0FBQ0EsUUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQixLQUFyQjtBQUVBLFFBQUEsUUFBUSxDQUFFLFlBQUs7QUFDVCxVQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLFFBQVEsQ0FBQyxPQUFyQyxFQUE2QyxPQUE3QztBQUNMLFNBRk8sQ0FBUjtBQUlIO0FBQ0YsS0EzRkc7QUE0RkwsR0F0R0gsQ0FoQzBJLENBc0l0STs7O0FBRU4sRUFBQSxNQUFNLENBQUMsYUFBUCxHQUF1QixVQUFTLEtBQVQsRUFBZ0I7QUFDckMsUUFBSSxLQUFLLENBQUMsR0FBTixLQUFjLE9BQWQsSUFBeUIsS0FBSyxDQUFDLE9BQU4sS0FBa0IsRUFBL0MsRUFBbUQ7QUFDcEQsTUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLEtBQWIsRUFEb0QsQ0FDL0I7QUFDbkI7QUFDSCxHQUpBO0FBTUcsQyxDQUFBO0FBTUw7OztBQUNPLFNBQVMsT0FBVCxDQUFrQixNQUFsQixFQUEwQixVQUExQixFQUFzQyxNQUF0QyxFQUE2QyxRQUE3QyxFQUFzRCxxQkFBdEQsRUFBNEUsV0FBNUUsRUFBd0YsU0FBeEYsRUFBbUc7QUFFdEcsRUFBQSxxQkFBcUIsQ0FBQyxnQkFBdEI7QUFNTSxFQUFBLE9BQU8sQ0FBQyxRQUFSLEdBQWtCLEVBQWxCLEVBQ0EsTUFBTSxDQUFDLFdBQVAsR0FBb0IsS0FEcEIsRUFHSCxNQUFNLENBQUUsUUFBUixHQUFtQixZQUFXO0FBRzNCLElBQUEsTUFBTSxDQUFDLFdBQVAsR0FBbUIsSUFBbkI7QUFDQSxJQUFBLHFCQUFxQixDQUFDLGFBQXRCLENBQW9DLFVBQVMsUUFBVCxFQUFtQjtBQUVyRCxVQUFHLFFBQVEsQ0FBQyxPQUFaLEVBQXFCO0FBQUE7O0FBRWpCLFFBQUEscUJBQXFCLENBQUMsaUJBQXRCLENBQXdDLFFBQVEsQ0FBQyxJQUFqRCxFQUF1RCxJQUF2RCxFQUE0RCxJQUE1RDtBQUNFLFFBQUEsTUFBTSxDQUFDLFdBQVAsR0FBbUIsSUFBbkIsQ0FIZSxDQUloQjs7QUFDRCxZQUFJLElBQUksR0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQztBQUNBLFlBQUksWUFBWSw2QkFBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixHQUFsQyxxRkFBRyx1QkFBb0MsTUFBdkMsMkRBQUcsdUJBQTRDLGNBQS9EO0FBQ0EsWUFBSSxNQUFNLDhCQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLEdBQWxDLHVGQUFHLHdCQUFvQyxNQUF2Qyw0REFBRyx3QkFBNEMsaUJBQXpEO0FBRUEsWUFBSSxTQUFTLEdBQUcsaUJBQWhCO0FBQ0EsWUFBSSxZQUFZLElBQUUsU0FBbEIsRUFBNkIsU0FBUyxHQUFDLFlBQVY7QUFFOUIsWUFBSSxNQUFNLElBQUUsU0FBWixFQUF1QixNQUFNLEdBQUMsRUFBUDtBQUN0QixRQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsU0FBVixFQUFvQixNQUFwQjtBQUVILE9BZkQsTUFnQks7QUFFRCxRQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLFFBQVEsQ0FBQyxPQUEzQjtBQUNBLFFBQUEsTUFBTSxDQUFDLFdBQVAsR0FBcUIsS0FBckI7QUFDQztBQUNOLEtBdkJEO0FBeUJELEdBaENDO0FBa0NQOztBQVFELE9BQU8sQ0FBQyxPQUFSLEdBQWdCLENBQUMsUUFBRCxFQUFXLFlBQVgsRUFBeUIsUUFBekIsRUFBa0MsVUFBbEMsRUFBNkMsdUJBQTdDLEVBQXFFLGFBQXJFLEVBQW1GLFdBQW5GLENBQWhCOztBQUdLLFNBQVMsVUFBVCxDQUFxQixNQUFyQixFQUE0QixVQUE1QixFQUF3QyxTQUF4QyxFQUFvRCxNQUFwRCxFQUE0RCxlQUE1RCxFQUE0RSxxQkFBNUUsRUFBbUcsV0FBbkcsRUFBK0csZ0JBQS9HLEVBQWdJLGlCQUFoSSxFQUFtSjtBQUFBOztBQUVwSixFQUFBLE1BQU0sQ0FBQyxJQUFQLEdBQVksWUFBWjtBQUNBLEVBQUEsTUFBTSxDQUFDLEVBQVAsR0FBVTtBQUNQLElBQUEsTUFBTSxFQUFHO0FBREYsR0FBVjtBQUdBLE1BQUksSUFBSSxzREFBQyxVQUFVLENBQUMsT0FBWixrRkFBQyxxQkFBb0IsV0FBckIsMERBQUMsc0JBQWlDLElBQWxDLDZFQUEwQyxPQUFsRDtBQUNBLEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0Isa0JBQVUsSUFBVixDQUFwQjtBQUVBLEVBQUEsTUFBTSxDQUFDLEtBQVAsR0FBZSxlQUFmO0FBQ0EsRUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLGdCQUFiO0FBRUEsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixXQUF0QjtBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsYUFBcEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxNQUFQLEdBQWdCLGtCQUFVLFFBQVYsQ0FBaEI7QUFFQSxFQUFBLHFCQUFxQixDQUFDLE1BQXRCLENBQTZCLFVBQVMsUUFBVCxFQUFtQjtBQUM3QyxJQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGVBQWhCLEdBQWtDLGlCQUFpQixDQUFDLGNBQWxCLENBQWlDLGdCQUFqQyxDQUFsQzs7QUFDQSxRQUFJLFFBQVEsQ0FBQyxPQUFiLEVBQXNCO0FBQ2pCLE1BQUEscUJBQXFCLENBQUMsZ0JBQXRCO0FBQ0EsTUFBQSxnQkFBZ0IsQ0FBQyxnQkFBakI7QUFFQSxNQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGVBQWhCLEdBQWtDLGlCQUFpQixDQUFDLGNBQWxCLENBQWlDLEVBQWpDLENBQWxDO0FBQ0osS0FMRCxNQU1JLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLFFBQVEsQ0FBQyxPQUEzQjtBQUVOLEdBVkQ7O0FBWUEsRUFBQSxNQUFNLENBQUMsVUFBUCxHQUFvQixZQUNsQjtBQUFBOztBQUNJLFFBQUksU0FBUywyQkFBRyxVQUFVLENBQUMsT0FBZCxrRkFBRyxxQkFBb0IsV0FBdkIsMERBQUcsc0JBQWlDLFNBQWpEO0FBQ0EsUUFBSSxTQUFTLEtBQUcsS0FBaEIsRUFDSSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsRUFESixLQUdBO0FBQ0gsTUFBQSxTQUFTLENBQUMsTUFBVixDQUFpQixTQUFqQixFQUE0QixJQUE1QjtBQUNELE1BQUEsU0FBUyxDQUFDLE1BQVYsQ0FBaUIsS0FBakIsRUFBd0IsSUFBeEI7QUFDQSxNQUFBLFNBQVMsQ0FBQyxNQUFWLENBQWlCLEtBQWpCLEVBQXdCLElBQXhCO0FBQ0ssTUFBQSxTQUFTLENBQUMsR0FBVixDQUFjLFFBQWQsRUFKRCxDQUtKO0FBRUQ7QUFFSixHQWZHO0FBZ0JMOztBQUFBO0FBRUQsVUFBVSxDQUFDLE9BQVgsR0FBbUIsQ0FBQyxRQUFELEVBQVcsWUFBWCxFQUF3QixXQUF4QixFQUFxQyxRQUFyQyxFQUE4QyxpQkFBOUMsRUFBZ0UsdUJBQWhFLEVBQXdGLGFBQXhGLEVBQXNHLGtCQUF0RyxFQUF5SCxtQkFBekgsQ0FBbkI7O0FBR08sU0FBUyxxQkFBVCxDQUFnQyxNQUFoQyxFQUF1QyxVQUF2QyxFQUFtRCxNQUFuRCxFQUEyRCxRQUEzRCxFQUFxRSxxQkFBckUsRUFBMkYsV0FBM0YsRUFBdUcsU0FBdkcsRUFBaUgsUUFBakgsRUFBMkgsV0FBM0gsRUFBd0ksZ0JBQXhJLEVBQXlKLGlCQUF6SixFQUE0SztBQUU3SyxFQUFBLE1BQU0sQ0FBQyxJQUFQLEdBQVksdUJBQVo7QUFDQSxFQUFBLE1BQU0sQ0FBQyxFQUFQLEdBQVk7QUFBRyxJQUFBLE1BQU0sRUFBRztBQUFaLEdBQVo7QUFDQSxFQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQW9CLE1BQU0sQ0FBQyxNQUFQLENBQWMsSUFBbEM7QUFDQSxNQUFJLElBQUksR0FBRSxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF6QztBQUNBLEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0Isa0JBQVUsSUFBVixDQUFwQjtBQUVBLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsV0FBdEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGFBQXBCOztBQUdMLEVBQUEsTUFBTSxDQUFDLG1CQUFQLEdBQTZCLFlBQVc7QUFDeEM7QUFBQTs7QUFDRyxRQUFJLDBCQUFFLFVBQVUsQ0FBQyxPQUFiLGlEQUFFLHFCQUFvQixZQUF0QixDQUFKLEVBQXdDO0FBQUE7O0FBQUU7QUFDdEIsTUFBQSxxQkFBcUIsQ0FBQyxhQUF0Qiw0QkFBb0MsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBdkQsNERBQW9DLHdCQUFnQyxZQUFoQyxDQUE2QyxFQUFqRixFQUNPLElBRFAsQ0FDWSxVQUFDLFFBQUQsRUFBYztBQUFBOztBQUNoQixZQUFJLFFBQVEsQ0FBQyxJQUFiLEVBQW9CLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFlBQW5CLEdBQWtDLFFBQVEsQ0FBQyxJQUFULENBQWMsTUFBZCxDQUFxQixVQUFDLEdBQUQsRUFBTSxHQUFOLEVBQWU7QUFDbEYsVUFBQSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUosQ0FBTyxRQUFQLEVBQUQsQ0FBSCxHQUF5QixHQUF6QjtBQUNBLGlCQUFPLEdBQVA7QUFDTCxTQUhtRCxFQUdqRCxFQUhpRCxDQUFsQztBQUlsQix1Q0FBTyxVQUFVLENBQUMsT0FBbEIseURBQU8scUJBQW9CLFlBQTNCO0FBQ0wsT0FQUDtBQVFkLEtBVE4sTUFTWSwrQkFBTyxVQUFVLENBQUMsT0FBbEIseURBQU8scUJBQW9CLFlBQTNCO0FBQ2QsR0FaRDs7QUFpQkEsRUFBQSxNQUFNLENBQUMsT0FBUCxHQUFpQixVQUFTLE9BQVQsRUFDWjtBQUNFLFFBQUksT0FBTyxHQUFHO0FBQUksaUJBQVc7QUFDL0IsZUFBVztBQUFHLHdCQUFjO0FBQWpCO0FBRG9CO0FBQWYsS0FBZDs7QUFJQSxRQUFJLE1BQU0sQ0FBQyxVQUFQLElBQXFCLFFBQXpCLEVBQW1DO0FBQ3hDO0FBQ1MsTUFBQSxjQUFjLENBQUMsT0FBZixDQUF1QixhQUF2QixFQUFzQyxPQUFPLENBQUMsRUFBOUM7QUFDVCxNQUFBLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFVBQW5CLEdBQWlDLE9BQU8sQ0FBQyxFQUF6QztBQUNTLE1BQUEsV0FBVyxDQUFDLFdBQVo7QUFDQSxNQUFBLFNBQVMsQ0FBQyxNQUFWLENBQWlCLFNBQWpCLEVBQTRCLElBQTVCO0FBQ1IsTUFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLGlCQUFWLEVBQTRCO0FBQUMsbUJBQVcsSUFBWjtBQUFrQixlQUFNLE9BQU8sQ0FBQztBQUFoQyxPQUE1QjtBQUNLLEtBUEQsTUFPTztBQUFBOztBQUNaLE1BQUEsV0FBVyxDQUFDLGNBQVosQ0FBMkIsT0FBM0IsRUFBb0MsSUFBcEMsQ0FDQyxVQUFTLElBQVQsRUFBZTtBQUNkLFFBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxHQUF0QyxFQUEwQyxTQUExQztBQUNBLE9BSEYsRUFHRyxVQUFTLEtBQVQsRUFBZTtBQUNoQixRQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxJQUFOLENBQVcsR0FBdkMsRUFBMkMsT0FBM0M7QUFDRCxPQUxEO0FBT0EsVUFBSSxZQUFZLDhCQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLEdBQWxDLHVGQUFHLHdCQUFvQyxNQUF2Qyw0REFBRyx3QkFBNEMsY0FBL0Q7QUFDQSxVQUFJLE1BQU0sOEJBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsR0FBbEMsdUZBQUcsd0JBQW9DLE1BQXZDLDREQUFHLHdCQUE0QyxpQkFBekQ7QUFDQSxVQUFJLE1BQU0sSUFBSSxTQUFkLEVBQTBCLE1BQU0sR0FBQyxFQUFQO0FBRTFCLE1BQUEsTUFBTSxDQUFDLFFBQUQsQ0FBTixHQUFtQixPQUFPLENBQUMsRUFBM0I7QUFFQSxVQUFJLFdBQVcsOEJBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsWUFBbEMsNERBQUcsd0JBQTZDLFVBQS9EO0FBRUEsVUFBSSxTQUFTLEdBQUcsaUJBQWhCO0FBQ0EsVUFBSSxZQUFZLElBQUUsU0FBbEIsRUFBNkIsU0FBUyxHQUFDLFlBQVY7QUFFN0IsTUFBQSxjQUFjLENBQUMsT0FBZixDQUF1QixhQUF2QixFQUFzQyxPQUFPLENBQUMsRUFBOUM7QUFDQSxNQUFBLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFVBQW5CLEdBQWlDLE9BQU8sQ0FBQyxFQUF6Qzs7QUFFQSxVQUFJLFdBQUosRUFBaUI7QUFBQTs7QUFDSixZQUFJLE9BQU8sR0FBRyxTQUFTLENBQUMsTUFBVixHQUFtQixPQUFqQztBQUNBLFlBQUksT0FBTyxLQUFHLFNBQWQsRUFBMkIsT0FBTyw4QkFBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUF0Qix1RkFBRyx3QkFBZ0MsWUFBbkMsNERBQUcsd0JBQThDLFVBQXhEO0FBQzNCLFFBQUEscUJBQXFCLENBQUMsT0FBdEIsQ0FBOEIsRUFBOUIsRUFBa0M7QUFBQyx5QkFBZSxPQUFPLENBQUM7QUFBeEIsU0FBbEMsRUFBK0QsT0FBL0Q7QUFDWixPQUpELE1BS1M7QUFDSSxZQUFJLE1BQU0sR0FBQyxXQUFXLENBQUMscUJBQVosQ0FBa0MsU0FBbEMsRUFBNEMsSUFBNUMsQ0FBWDtBQUNBLFlBQUksTUFBTSxJQUFFLFNBQVosRUFBdUIsTUFBTSxHQUFDLEVBQVA7QUFDdkIsUUFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLFNBQVYsRUFBb0IsTUFBcEI7QUFDSDtBQUNKO0FBQ0YsR0E5Q04sQ0E3QmtMLENBMkU1Szs7QUFLTjs7QUFBQTs7O0FDbmVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7QUFzM0dBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXQzRytEO0FBRWhELFNBQVMsY0FBVCxDQUF5QixRQUF6QixFQUFrQyxVQUFsQyxFQUE2QyxRQUE3QyxFQUFzRCxNQUF0RCxFQUE4RCxVQUE5RCxFQUEwRSxTQUExRSxFQUFxRixRQUFyRixFQUE4RixxQkFBOUYsRUFBb0gsaUJBQXBILEVBQXNJLGdCQUF0SSxFQUF1SixlQUF2SixFQUF1SyxvQkFBdkssRUFBNEwsWUFBNUwsRUFBeU0sWUFBek0sRUFBdU47QUFFcE8sRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFnQixnQkFBaEI7QUFDTSxFQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLFlBQVksQ0FBQyxXQUEvQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBZ0IsSUFBaEI7QUFFQSxFQUFBLFVBQVUsQ0FBQyxjQUFYLENBQTBCLENBQTFCLEVBTjhOLENBTWpNOztBQUM3QixFQUFBLE1BQU0sQ0FBQyxLQUFQLEdBQWUsZUFBZjtBQUNBLEVBQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxnQkFBYjtBQUVBLEVBQUEsTUFBTSxDQUFDLFdBQVAsR0FBcUI7QUFDakIsSUFBQSxjQUFjLEVBQUUsSUFEQztBQUVqQixJQUFBLGNBQWMsRUFBRSxJQUZDO0FBR2pCO0FBQ0EsSUFBQSxrQkFBa0IsRUFBRSxJQUpIO0FBS2IsSUFBQSxXQUFXLEVBQUUsS0FMQTtBQU1iLElBQUEseUJBQXlCLEVBQUcsQ0FOZjtBQU9iLElBQUEsdUJBQXVCLEVBQUcsQ0FQYjtBQVFiO0FBQ0EsSUFBQSx3QkFBd0IsRUFBRSxJQVRiO0FBVWIsSUFBQSxvQkFBb0IsRUFBRSxJQVZUO0FBV2pCLElBQUEscUJBQXFCLEVBQUUsSUFYTjtBQVlqQixJQUFBLG1CQUFtQixFQUFFLENBQUMsQ0FBRCxFQUFJLEVBQUosRUFBUSxFQUFSLEVBQVcsR0FBWCxFQUFlLEdBQWYsRUFBbUIsR0FBbkIsRUFBdUIsSUFBdkIsQ0FaSjtBQWFqQixJQUFBLHdCQUF3QixFQUFFO0FBYlQsR0FBckI7QUFlTjs7QUFFRyxFQUFBLE1BQU0sQ0FBQyxXQUFQLENBQW1CLGFBQW5CLEdBQW1DLFVBQVUsT0FBVixFQUFtQjtBQUNuRDtBQUNBLElBQUEsTUFBTSxDQUFDLE9BQVAsR0FBaUIsT0FBakI7QUFDRSxJQUFBLE9BQU8sQ0FBQyxTQUFSLENBQWtCLEVBQWxCLENBQXFCLG1CQUFyQixDQUF5QyxNQUF6QyxFQUFnRCxVQUFTLEdBQVQsRUFBYTtBQUUzRCxNQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLEdBQUcsQ0FBQyxVQUF0QixDQUYyRCxDQUczRDs7QUFDQSxNQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQW9CLEdBQUcsQ0FBQyxNQUFKLENBQVcsRUFBL0IsQ0FKMkQsQ0FLM0Q7QUFDRCxLQU5EO0FBT0osR0FWRDs7QUFhSCxFQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUEyQixJQUEzQjtBQUNBLE1BQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDO0FBQ0EsTUFBSSxJQUFJLEdBQUMsTUFBVDtBQUNDLE1BQUksVUFBVSxHQUFHLENBQUMsWUFBRCxDQUFqQjtBQUNNLE1BQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFELENBQVIsQ0FBWSxzQkFBWixDQUFtQyxhQUFuQyxDQUFkO0FBQ04sRUFBQSxNQUFNLENBQUMsS0FBUCxHQUFlLEVBQWY7QUFFQSxFQUFBLFVBQVUsQ0FBQyxTQUFYLENBQXFCLENBQXJCLEVBL0NtTyxDQStDMU07QUFFeEI7O0FBQ00sRUFBQSxvQkFBb0IsQ0FBQyxlQUFyQixDQUFxQyxNQUFNLENBQUMsVUFBNUMsRUFBd0QsSUFBeEQsQ0FBNkQsVUFBUyxJQUFULEVBQWU7QUFDbkU7QUFDQyxJQUFBLE1BQU0sQ0FBQyxXQUFQLENBQW1CLElBQW5CLEdBQTBCLElBQUksQ0FBQyxJQUEvQjtBQUNtQixHQUg3QixFQUc4QixVQUFTLEtBQVQsRUFBZTtBQUNqQixJQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUMzQixHQUxEO0FBUUEsRUFBQSxPQUFPLENBQUMsQ0FBRCxDQUFQLENBQVcsZ0JBQVgsQ0FBNEIsUUFBNUIsRUFBc0MsVUFBUyxDQUFULEVBQVk7QUFDekQsSUFBQSxRQUFRLENBQUMsWUFBVztBQUNqQixVQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsTUFBRixDQUFTLEtBQXJCO0FBQ1ksTUFBQSxVQUFVLENBQUMsUUFBWCxDQUFvQixLQUFwQixFQUEwQixDQUExQjtBQUNBLE1BQUEsTUFBTSxDQUFDLEtBQVAsR0FBZSxVQUFVLENBQUMsUUFBWCxDQUFvQixDQUFwQixDQUFmO0FBQ1gsS0FKSSxDQUFSO0FBS1UsR0FOSDtBQVFFLE1BQUksV0FBVyxHQUFHLENBQWxCOztBQUVULEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0IsVUFBUyxLQUFULEVBQWUsSUFBZixFQUFxQjtBQUN4QixJQUFBLElBQUksQ0FBQyxJQUFMLENBQVUsY0FBYyxJQUF4QjtBQUNmLFFBQUksQ0FBQyxHQUFDLE1BQU47QUFDQSxRQUFJLENBQUMsR0FBQyxRQUFOO0FBQ2dCLElBQUEsVUFBVSxDQUFDLFVBQVgsQ0FBc0IsSUFBdEIsRUFBMkIsQ0FBM0I7QUFDZixRQUFJLEdBQUcsR0FBQyxNQUFNLENBQUMsU0FBUCxFQUFSO0FBRVEsR0FQWDs7QUFTVSxFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQW1CLFlBQVc7QUFDdkIsSUFBQSxVQUFVLENBQUMsU0FBWCxDQUFxQixDQUFyQjtBQUNOLEdBRkQsQ0E3RXlOLENBa0ZuTztBQUNBOzs7QUFFQSxFQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQixVQUFVLElBQVYsRUFBZSxTQUFmLEVBQXlCO0FBQ2hELFFBQUksa0JBQWtCLEdBQUMsSUFBSSxDQUFDLEVBQTVCO0FBQ0EsSUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixrQkFBbEI7QUFDQyxJQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUEwQixJQUExQjs7QUFDUyxRQUFJLE1BQU0sQ0FBQyxLQUFQLENBQWEsU0FBYixFQUF3QixjQUF4QixJQUF3QyxrQkFBNUMsRUFBZ0U7QUFDL0QsTUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLFNBQWIsRUFBd0IsY0FBeEIsR0FBeUMsa0JBQXpDO0FBQ0EsTUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLFNBQWIsRUFBd0IsVUFBeEIsR0FBcUMsS0FBckM7QUFDQTs7QUFFWCxJQUFBLE9BQU8sQ0FBQyxHQUFSLENBQVksdUJBQXVCLGtCQUFuQztBQUVBLElBQUEsTUFBTSxDQUFDLFNBQVAsR0FBaUIsU0FBakI7QUFHRixHQWRELENBckZtTyxDQW1HbE87OztBQUdELEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBbUIsVUFBVSxZQUFWLEVBQXdCO0FBRTFDLFFBQUksQ0FBQyxHQUFDLFlBQU47QUFFQSxHQUpELENBdEdtTyxDQTZHMU47OztBQUNBLEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0IsWUFBVztBQUMzQjtBQUNBLElBQUEsb0JBQW9CLENBQUMsY0FBckIsQ0FBb0MsR0FBcEMsRUFBNkMsR0FBN0MsRUFBcUQsRUFBckQsRUFBeUQsSUFBekQsRUFBK0Q7QUFDL0IsY0FBUyxJQUFULEVBQWU7QUFDRSxNQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLElBQUksQ0FBQyxJQUE5QjtBQUNBLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsOEJBQTZCLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBdkMsR0FBZ0QsaUJBQWhELEdBQW9FLE1BQU0sQ0FBQyxVQUF2RyxFQUFrSCxTQUFsSDtBQUVaLEtBTHJDLEVBS3NDLFVBQVMsS0FBVCxFQUFlO0FBQ0wsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFFZixLQVJqQztBQVVILEdBWkQsQ0E5RzBOLENBNEhuTztBQUNBOzs7QUFDRCxFQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQW9CLFlBQVc7QUFFOUIsUUFBSSxVQUFVLEdBQUcsUUFBUSxDQUFDLEdBQVQsQ0FBYSxXQUFiLENBQWpCLENBRjhCLENBSTlCOztBQUNBLElBQUEsVUFBVSxDQUFDLFdBQVgsQ0FBdUIsQ0FBdkIsRUFBeUI7QUFDdEIsTUFBQSxHQUFHLEVBQUMsa0JBRGtCO0FBRXRCLE1BQUEsT0FBTyxFQUFFO0FBQ04sdUJBQWdCLFVBRFY7QUFFcUIseUJBQWlCLEtBQUssS0FBTCxDQUFXLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0I7QUFGckUsT0FGYTtBQU10QixNQUFBLFdBQVcsRUFBRSxDQU5TO0FBT2I7QUFDVCxNQUFBLElBQUksRUFBRTtBQUFDLFFBQUEsZUFBZSxFQUFDLE1BQU0sQ0FBQyxVQUF4QjtBQUFtQyxRQUFBLFdBQVcsRUFBQztBQUEvQyxPQVJnQjtBQVFtQztBQUN6RCxNQUFBLFVBQVUsRUFBRSxvQkFBUyxJQUFULEVBQWU7QUFDeEI7QUFDQyxRQUFBLFFBQVEsQ0FBQyxZQUFXO0FBQUUsVUFBQSxJQUFJLENBQUMsTUFBTCxHQUFZLGNBQVo7QUFBNkIsU0FBM0MsQ0FBUjtBQUNELE9BWm1CO0FBY3RCLE1BQUEsV0FBVyxFQUFFLHFCQUFTLElBQVQsRUFBZSxRQUFmLEVBQXdCLE1BQXhCLEVBQWdDO0FBQzNDO0FBQ3dCO0FBQ3hCLFFBQUEsUUFBUSxHQUFDLElBQUksQ0FBQyxLQUFMLENBQVcsUUFBWCxDQUFULENBSDJDLENBR1o7O0FBR1AsWUFBSSxNQUFNLElBQUUsR0FBWixFQUFpQjtBQUNMO0FBQ2pDLFVBQUEsSUFBSSxDQUFDLFFBQUwsR0FBYyxRQUFkO0FBQ2lDLFVBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsbUJBQWlCLElBQUksQ0FBQyxRQUFsRCxFQUEyRCxTQUEzRDtBQUNqQyxVQUFBLFFBQVEsQ0FBQyxZQUFXO0FBQUUsWUFBQSxJQUFJLENBQUMsYUFBTCxHQUFtQixJQUFuQjtBQUEyQixXQUF6QyxDQUFSO0FBQ0EsVUFBQSxJQUFJLENBQUMsWUFBTCxHQUFrQixFQUFsQixDQUxzQyxDQU9MOztBQUNBLFVBQUEsb0JBQW9CLENBQUMsY0FBckIsQ0FBb0MsSUFBSSxDQUFDLFFBQXpDLEVBQWtELFlBQVksQ0FBQyxXQUEvRCxFQUEyRSxNQUFNLENBQUMsVUFBbEYsRUFBOEYsSUFBOUYsQ0FDSSxVQUFTLElBQVQsRUFBZTtBQUNFLFlBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsSUFBSSxDQUFDLElBQTlCO0FBQ0EsWUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0Qiw4QkFBNEIsSUFBSSxDQUFDLFFBQWpDLEdBQTRDLGlCQUE1QyxHQUFnRSxNQUFNLENBQUMsVUFBbkcsRUFBOEcsU0FBOUc7QUFFWixXQUxULEVBS1UsVUFBUyxLQUFULEVBQWU7QUFDTCxZQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUVmLFdBUkwsRUFSSyxDQWtCdEM7O0FBQ0EsY0FBSSxJQUFJLENBQUMsU0FBTCxJQUFnQixTQUFwQixFQUErQjtBQUM1QixnQkFBSSxPQUFPLEdBQUMsRUFBWjtBQUNBLGdCQUFJLEVBQUUsR0FBQyxNQUFQO0FBQ0QsWUFBQSxXQUFXLEdBSGtCLENBSTlCO0FBQ0M7QUFDQTtBQUNEO0FBR0gsU0E3QnVCLENBNkJ2QjtBQTdCdUIsYUE4Qm5CO0FBQ0g7QUFDQSxVQUFBLFFBQVEsQ0FBQyxZQUFXO0FBQ2hCLFlBQUEsSUFBSSxDQUFDLFdBQUwsR0FBaUIsSUFBakI7QUFDQSxZQUFBLElBQUksQ0FBQyxNQUFMLEdBQVksUUFBWjtBQUNBLFdBSEksQ0FBUjtBQUlFO0FBRUosT0ExRG9CLENBMERuQjs7QUExRG1CLEtBQXpCLEVBTDhCLENBZ0V4QjtBQUVOLEdBbEVELENBOUhvTyxDQWdNak87OztBQUVILEVBQUEsb0JBQW9CLENBQUMsb0JBQXJCLENBQTBDLElBQTFDLEVBQStDLElBQS9DLEVBQXFELElBQXJELENBQ0ssVUFBUyxJQUFULEVBQWU7QUFDVixJQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLElBQUksQ0FBQyxJQUE5QjtBQUVILEdBSlAsRUFJUSxVQUFTLEtBQVQsRUFBZTtBQUNkLElBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBRUgsR0FQTjtBQVNBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHRyxNQUFJLElBQUksR0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQztBQUNLLEVBQUEsWUFBWSxDQUFDLGNBQWIsQ0FBNEIsY0FBNUIsRUFBMkMsSUFBM0MsRUFBaUQsSUFBakQsQ0FBc0QsVUFBVSxJQUFWLEVBQWdCO0FBQzlDO0FBQ0EsSUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBMEIsSUFBSSxDQUFDLElBQS9CO0FBQ0YsR0FIdEI7QUFJQSxFQUFBLFlBQVksQ0FBQyxjQUFiLENBQTRCLFlBQTVCLEVBQXlDLElBQXpDLEVBQStDLElBQS9DLENBQW9ELFVBQVUsSUFBVixFQUFnQjtBQUM1QyxJQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUE0QixJQUFJLENBQUMsSUFBakM7QUFDRixHQUZ0QjtBQUdBLEVBQUEsWUFBWSxDQUFDLGNBQWIsQ0FBNEIsa0JBQTVCLEVBQStDLElBQS9DLEVBQXFELElBQXJELENBQTBELFVBQVUsSUFBVixFQUFnQjtBQUNsRCxJQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUEyQixJQUFJLENBQUMsSUFBaEM7QUFDRixHQUZ0Qjs7QUFJRixFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLFVBQVUsT0FBVixFQUFtQjtBQUNuQyxRQUFJLE9BQUosRUFBYTtBQUNSLE1BQUEsTUFBTSxDQUFDLGVBQVA7QUFDSCxLQUZGLE1BRVE7QUFDSixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLCtDQUE1QixFQUE0RSxPQUE1RTtBQUVGO0FBQ0osR0FQSDtBQVdMLEMsQ0FBQTs7O0FBRU0sU0FBUyxvQkFBVCxDQUErQixNQUEvQixFQUF1QyxVQUF2QyxFQUFtRCxTQUFuRCxFQUE4RCxRQUE5RCxFQUF1RSxxQkFBdkUsRUFBNkYsaUJBQTdGLEVBQStHLGdCQUEvRyxFQUFnSSxlQUFoSSxFQUFnSixvQkFBaEosRUFBcUssWUFBckssRUFBa0wsV0FBbEwsRUFBOEwsZUFBOUwsRUFBK007QUFFbE4sRUFBQSxNQUFNLENBQUMsSUFBUCxHQUFZLHNCQUFaO0FBQ0EsRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFtQixFQUFuQjtBQUNILEVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBc0IsRUFBdEI7QUFFRyxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCO0FBQ2xCLElBQUEsVUFBVSxFQUFFLENBQ1g7QUFBRSxNQUFBLElBQUksRUFBRSxJQUFSO0FBQWMsTUFBQSxXQUFXLEVBQUUsSUFBM0I7QUFBaUMsTUFBQSxJQUFJLEVBQUUsUUFBdkM7QUFBaUQsTUFBQSxLQUFLLEVBQUMsSUFBdkQ7QUFBNEQsTUFBQSxZQUFZLEVBQUUsS0FBMUU7QUFBaUYsTUFBQSxPQUFPLEVBQUU7QUFBMUYsS0FEVyxFQUVYO0FBQUUsTUFBQSxJQUFJLEVBQUUsTUFBUjtBQUFnQixNQUFBLFdBQVcsRUFBRTtBQUE3QixLQUZXLEVBR1g7QUFBRSxNQUFBLElBQUksRUFBRSxjQUFSO0FBQXdCLE1BQUEsV0FBVyxFQUFFO0FBQXJDLEtBSFcsRUFJWDtBQUFFLE1BQUEsSUFBSSxFQUFFLGNBQVI7QUFBd0IsTUFBQSxXQUFXLEVBQUU7QUFBckMsS0FKVyxFQUtYO0FBQUUsTUFBQSxJQUFJLEVBQUUsYUFBUjtBQUF1QixNQUFBLFdBQVcsRUFBRTtBQUFwQyxLQUxXLENBRE07QUFRaEIsSUFBQSxjQUFjLEVBQUUsSUFSQTtBQVNkLElBQUEsY0FBYyxFQUFFLEtBVEY7QUFVZCxJQUFBLGdCQUFnQixFQUFFLElBVko7QUFXZCxJQUFBLGtCQUFrQixFQUFFLElBWE47QUFZZixJQUFBLFdBQVcsRUFBRSxLQVpFO0FBYWYsSUFBQSx5QkFBeUIsRUFBRyxDQWJiO0FBY2hCLElBQUEsdUJBQXVCLEVBQUcsQ0FkVjtBQWVmLElBQUEsZUFBZSxFQUFFLElBZkY7QUFnQmYsSUFBQSx3QkFBd0IsRUFBRSxJQWhCWDtBQWlCZixJQUFBLG9CQUFvQixFQUFFO0FBQ3hCOztBQWxCaUIsR0FBdEI7QUFxQkEsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQjtBQUNsQixJQUFBLFVBQVUsRUFBRSxDQUNYO0FBQUUsTUFBQSxJQUFJLEVBQUUsSUFBUjtBQUFjLE1BQUEsV0FBVyxFQUFFLElBQTNCO0FBQWlDLE1BQUEsSUFBSSxFQUFFLFFBQXZDO0FBQWlELE1BQUEsS0FBSyxFQUFDLElBQXZEO0FBQTRELE1BQUEsWUFBWSxFQUFFLEtBQTFFO0FBQWlGLE1BQUEsT0FBTyxFQUFFO0FBQTFGLEtBRFcsRUFFWDtBQUFFLE1BQUEsSUFBSSxFQUFFLGdCQUFSO0FBQTBCLE1BQUEsV0FBVyxFQUFFO0FBQXZDLEtBRlcsRUFHWDtBQUFFLE1BQUEsSUFBSSxFQUFFLE1BQVI7QUFBZ0IsTUFBQSxXQUFXLEVBQUU7QUFBN0IsS0FIVyxFQUlYO0FBQUUsTUFBQSxJQUFJLEVBQUUsa0JBQVI7QUFBNEIsTUFBQSxXQUFXLEVBQUU7QUFBekMsS0FKVyxFQUtYO0FBQUUsTUFBQSxJQUFJLEVBQUUsa0JBQVI7QUFBNEIsTUFBQSxXQUFXLEVBQUU7QUFBekMsS0FMVyxDQURNO0FBUWxCLElBQUEsY0FBYyxFQUFFLElBUkU7QUFTbEIsSUFBQSxjQUFjLEVBQUUsS0FURTtBQVVsQixJQUFBLGdCQUFnQixFQUFFLElBVkE7QUFXbEIsSUFBQSxrQkFBa0IsRUFBRSxJQVhGO0FBWW5CLElBQUEsV0FBVyxFQUFFLEtBWk07QUFhbkIsSUFBQSx5QkFBeUIsRUFBRyxDQWJUO0FBY3BCLElBQUEsdUJBQXVCLEVBQUcsQ0FkTjtBQWVuQixJQUFBLGVBQWUsRUFBRSxJQWZFO0FBZ0JuQixJQUFBLHdCQUF3QixFQUFFLElBaEJQO0FBaUJuQixJQUFBLG9CQUFvQixFQUFFO0FBQ3hCOztBQWxCcUIsR0FBdEI7QUFxQkQsRUFBQSxNQUFNLENBQUMsS0FBUCxHQUFlLGVBQWY7QUFDQSxFQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsZ0JBQWI7O0FBRUEsRUFBQSxNQUFNLENBQUMsVUFBUCxHQUFvQixVQUFDLE1BQUQsRUFBUSxLQUFSO0FBQUEsV0FBa0IsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsTUFBdEIsRUFBOEIsTUFBOUIsQ0FBcUMsTUFBckMsQ0FBNEMsS0FBNUMsRUFBa0QsQ0FBbEQsQ0FBbEI7QUFBQSxHQUFwQjs7QUFDQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLFVBQUMsTUFBRCxFQUFRLEtBQVI7QUFBQSxXQUFrQixNQUFNLENBQUMsY0FBUCxDQUFzQixNQUF0QixFQUE4QixPQUE5QixDQUFzQyxNQUF0QyxDQUE2QyxLQUE3QyxFQUFtRCxDQUFuRCxDQUFsQjtBQUFBLEdBQXRCOztBQUVBLE1BQUksS0FBSjs7QUFFRSxFQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXVCLFVBQVMsdUJBQVQsRUFBaUMsd0JBQWpDLEVBQTBELElBQTFELEVBQStELFVBQS9ELEVBQTBFO0FBQ2hFLElBQUEsUUFBUSxDQUFDLFlBQVU7QUFDZixVQUFJLFVBQVUsR0FBQyxFQUFmOztBQUVELFdBQUssSUFBSSxDQUFDLEdBQUUsQ0FBWixFQUFjLENBQUMsR0FBQyx3QkFBd0IsQ0FBQyxNQUF6QyxFQUFnRCxDQUFDLEVBQWpELEVBQW9EO0FBQ2pELFlBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxzQkFBVCxDQUFnQyx3QkFBd0IsQ0FBQyxDQUFELENBQXhELENBQWhCO0FBQ0EsUUFBQSxVQUFVLENBQUMsSUFBWCxDQUFnQixTQUFTLENBQUMsQ0FBRCxDQUF6QjtBQUNGOztBQUVELE1BQUEsS0FBSyxHQUFHLGVBQWUsQ0FBQyxVQUFELEVBQ3JCO0FBRUksUUFBQSxTQUFTLEVBQUMsVUFGZDtBQUdJLFFBQUEsYUFBYSxFQUFFLEtBSG5CO0FBSUksUUFBQSxJQUFJLEVBQUUsSUFKVjtBQUtJLFFBQUEsZUFBZSxFQUFFLHVCQUxyQjtBQU1JLFFBQUEsS0FBSyxFQUFFLGVBQVUsRUFBVixFQUFjLFNBQWQsRUFBeUIsTUFBekIsRUFBaUM7QUFDcEMsaUJBQU8sTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIscUJBQTFCLENBQVA7QUFDRDtBQVJQLE9BRHFCLENBQXZCO0FBV0UsS0FuQkcsQ0FBUjtBQW9CVCxHQXJCeEI7O0FBdUJELEVBQUEsTUFBTSxDQUFDLHNCQUFQLEdBQWdDLFVBQVUsVUFBVixFQUFxQixJQUFyQixFQUEyQjtBQUM3RDtBQUNBLElBQUEsb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLFVBQTlDLEVBQTBELElBQTFELENBQ0UsVUFBVSxJQUFWLEVBQWdCO0FBQ2Y7QUFDQyxVQUFJLElBQUksSUFBRSxDQUFWLEVBQVk7QUFBRTtBQUNjLFFBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxVQUFsQztBQUNBLFFBQUEsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsQ0FBQyxNQUFNLENBQUMsY0FBUixDQUFyQixFQUE2QyxDQUFDLG1CQUFELENBQTdDLEVBQW1FLElBQW5FLEVBQXdFLFVBQXhFO0FBQ1osT0FIaEIsTUFHdUI7QUFBRztBQUNFLFFBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxVQUFsQztBQUNBLFlBQUksd0JBQXdCLEdBQUMsRUFBN0I7QUFDQSxZQUFJLHVCQUF1QixHQUFHLEVBQTlCOztBQUNBLGFBQUksSUFBSSxDQUFDLEdBQUMsQ0FBVixFQUFZLENBQUMsR0FBQyxNQUFNLENBQUMsY0FBUCxDQUFzQixNQUFwQyxFQUEyQyxDQUFDLEVBQTVDLEVBQWdEO0FBQzVDLGNBQUksTUFBTSxDQUFDLGNBQVAsQ0FBc0IsQ0FBdEIsRUFBeUIsTUFBekIsSUFBaUMsU0FBckMsRUFBZ0QsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsQ0FBdEIsRUFBeUIsUUFBekIsSUFBcUMsRUFBckM7QUFDakQsVUFBQSx1QkFBdUIsQ0FBQyxJQUF4QixDQUE2QixNQUFNLENBQUMsY0FBUCxDQUFzQixDQUF0QixFQUF5QixNQUF0RDtBQUNBLFVBQUEsd0JBQXdCLENBQUMsSUFBekIsQ0FBOEIsZUFBYSxDQUEzQztBQUNGOztBQUNDLFFBQUEsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsdUJBQXJCLEVBQTZDLHdCQUE3QyxFQUFzRSxLQUF0RSxFQUE0RSxVQUE1RTtBQUVYO0FBRVIsS0FuQmYsRUFtQmdCLFVBQVMsS0FBVCxFQUFlO0FBQ0wsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDbEIsS0FyQlI7QUF1Qk8sR0F6Qkw7O0FBNEJGLEVBQUEsTUFBTSxDQUFDLHdCQUFQLEdBQWtDLFVBQVMsaUJBQVQsRUFBNEIsR0FBNUIsRUFDbEM7QUFBQTs7QUFDQyxRQUFJLEdBQUo7QUFDQSxRQUFJLGlCQUFpQixJQUFJLGdCQUF6QixFQUE0QyxHQUFHLDRCQUFHLE1BQU0sQ0FBQyxhQUFQLENBQXFCLFVBQXJCLENBQUgsMERBQUcsc0JBQWtDLE9BQXhDO0FBQzVDLFFBQUksaUJBQWlCLElBQUksZ0JBQXpCLEVBQTRDLEdBQUcsNkJBQUcsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsVUFBckIsQ0FBSCwyREFBRyx1QkFBa0MsT0FBeEM7QUFFdEMsUUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLE1BQUosR0FBVyxDQUF0QixFQUNMLG9CQUFvQixDQUFDLHdCQUFyQixDQUE4QyxHQUFHLENBQUMsRUFBbEQsRUFBc0QsSUFBdEQsQ0FDQSxVQUFVLElBQVYsRUFBZ0I7QUFDZixVQUFJLGlCQUFpQixJQUFFLGdCQUF2QixFQUF5QztBQUN2QyxRQUFBLE1BQU0sQ0FBQyxnQkFBRCxDQUFOLEdBQTJCLElBQUksQ0FBQyxJQUFMLENBQVUsVUFBckM7QUFDQSxRQUFBLE1BQU0sQ0FBQyxhQUFQLENBQXFCLENBQUMsTUFBTSxDQUFDLGdCQUFELENBQVAsQ0FBckIsRUFBZ0QsQ0FBQyxtQkFBRCxDQUFoRCxFQUFzRSxJQUF0RSxFQUEyRSxVQUEzRTtBQUNEOztBQUNELFVBQUksaUJBQWlCLElBQUUsZ0JBQXZCLEVBQXlDO0FBQ3RDLFFBQUEsTUFBTSxDQUFDLGdCQUFELENBQU4sR0FBMkIsSUFBSSxDQUFDLElBQUwsQ0FBVSxVQUFyQztBQUNrQixZQUFJLHdCQUF3QixHQUFHLEVBQS9CO0FBQ0EsWUFBSSx1QkFBdUIsR0FBRyxFQUE5Qjs7QUFDQyxhQUFJLElBQUksQ0FBQyxHQUFDLENBQVYsRUFBWSxDQUFDLEdBQUMsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsTUFBcEMsRUFBMkMsQ0FBQyxFQUE1QyxFQUFnRDtBQUNyQyxjQUFJLE1BQU0sQ0FBQyxjQUFQLENBQXNCLENBQXRCLEVBQXlCLE1BQXpCLElBQWlDLFNBQXJDLEVBQWdELE1BQU0sQ0FBQyxjQUFQLENBQXNCLENBQXRCLEVBQXlCLFFBQXpCLElBQXFDLEVBQXJDO0FBQ2pELFVBQUEsdUJBQXVCLENBQUMsSUFBeEIsQ0FBNkIsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsQ0FBdEIsRUFBeUIsTUFBdEQ7QUFDQSxVQUFBLHdCQUF3QixDQUFDLElBQXpCLENBQThCLGVBQWEsQ0FBM0M7QUFDVDs7QUFDRixRQUFBLE1BQU0sQ0FBQyxhQUFQLENBQXFCLHVCQUFyQixFQUE2Qyx3QkFBN0MsRUFBc0UsS0FBdEUsRUFBNEUsVUFBNUUsRUFUb0IsQ0FVdEM7QUFDRDtBQUNVLEtBbEJiLEVBa0JjLFVBQVMsS0FBVCxFQUFlO0FBQ0wsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDUCxLQXBCakI7QUFxQkQsR0E1QkQ7O0FBNkJFLEVBQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTRCLFVBQVUsV0FBVixFQUFzQixNQUF0QixFQUE2QixNQUE3QixFQUFxQztBQUNuRTtBQUNPLElBQUEsb0JBQW9CLENBQUMsa0JBQXJCLENBQXdDLFdBQXhDLEVBQW9ELE1BQXBELEVBQTJELE1BQTNELEVBQW1FLElBQW5FLENBQXdFLFVBQVMsSUFBVCxFQUFlO0FBQzVGO0FBQzJCLFVBQUksSUFBSSxJQUFFLENBQVYsRUFBWTtBQUNULFFBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsSUFBSSxDQUFDLElBQTdCO0FBQ0EsUUFBQSxNQUFNLENBQUMsYUFBUCxDQUFxQixDQUFDLE1BQU0sQ0FBQyxjQUFSLENBQXJCLEVBQTZDLENBQUMsbUJBQUQsQ0FBN0M7QUFDSCxPQUhBLE1BR0s7QUFDRixRQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLElBQUksQ0FBQyxJQUE3QjtBQUNBLFlBQUksd0JBQXdCLEdBQUMsRUFBN0I7QUFDQSxZQUFJLHVCQUF1QixHQUFHLEVBQTlCOztBQUNBLGFBQUksSUFBSSxDQUFDLEdBQUMsQ0FBVixFQUFZLENBQUMsR0FBQyxNQUFNLENBQUMsY0FBUCxDQUFzQixNQUFwQyxFQUEyQyxDQUFDLEVBQTVDLEVBQWdEO0FBQzdDLFVBQUEsdUJBQXVCLENBQUMsSUFBeEIsQ0FBNkIsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsQ0FBdEIsRUFBeUIsTUFBdEQ7QUFDQSxVQUFBLHdCQUF3QixDQUFDLElBQXpCLENBQThCLGVBQWEsQ0FBM0M7QUFDRjs7QUFDRCxRQUFBLE1BQU0sQ0FBQyxhQUFQLENBQXFCLHVCQUFyQixFQUE2Qyx3QkFBN0M7QUFDRDtBQUNBLEtBZnhCLEVBZXlCLFVBQVMsS0FBVCxFQUFlO0FBRW5CLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0QsS0FsQnBCO0FBbUJBLEdBckJMOztBQXVCQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGFBQXBCLEdBQW9DLFVBQVUsT0FBVixFQUFtQjtBQUNuRCxJQUFBLE1BQU0sQ0FBQyxPQUFQLEdBQWlCLE9BQWpCO0FBRUEsSUFBQSxPQUFPLENBQUMsU0FBUixDQUFrQixFQUFsQixDQUFxQixtQkFBckIsQ0FBeUMsTUFBekMsRUFBZ0QsVUFBUyxHQUFULEVBQ3REO0FBQ1UsTUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBd0IsR0FBRyxDQUFDLFVBQTVCO0FBQ0EsTUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBMEIsR0FBRyxDQUFDLE1BQUosQ0FBVyxFQUFyQztBQUNBLFVBQUksS0FBSyxJQUFFLFNBQVgsRUFBdUIsS0FBSyxDQUFDLE9BQU47QUFDdkIsVUFBSSxNQUFNLENBQUMsY0FBUCxJQUF1QixTQUEzQixFQUFzQyxNQUFNLENBQUMsY0FBUCxDQUFzQixNQUF0QixHQUE2QixDQUE3QjtBQUN0QyxVQUFJLE1BQU0sQ0FBQyxjQUFQLElBQXVCLFNBQTNCLEVBQXNDLE1BQU0sQ0FBQyxjQUFQLENBQXNCLE1BQXRCLEdBQTZCLENBQTdCOztBQUV0QyxVQUFJLE1BQU0sQ0FBQyxnQkFBWCxFQUE4QjtBQUVuQyxRQUFBLG9CQUFvQixDQUFDLDZCQUFyQixDQUFtRCxHQUFHLENBQUMsTUFBSixDQUFXLFdBQTlELEVBQTJFLE1BQTNFLEVBQ0MsSUFERCxDQUNNLFVBQVUsSUFBVixFQUFnQjtBQUN2QixVQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFVBQXRCLElBQW9DLElBQUksQ0FBQyxJQUF6QztBQUNBLGlCQUFPLG9CQUFvQixDQUFDLDZCQUFyQixDQUFtRCxHQUFHLENBQUMsTUFBSixDQUFXLFdBQTlELEVBQTJFLE1BQTNFLENBQVA7QUFDQSxTQUpDLEVBS0MsSUFMRCxDQUtNLFVBQVUsSUFBVixFQUFnQjtBQUFFO0FBR3ZCLFVBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQXdCLEVBQXhCO0FBQ0EsVUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixVQUF0QixJQUFvQyxJQUFJLENBQUMsSUFBekM7QUFFQSxVQUFBLE1BQU0sQ0FBQyxzQkFBUCxDQUE4QixHQUFHLENBQUMsTUFBSixDQUFXLFFBQXpDLEVBQWtELENBQWxEO0FBQ0EsVUFBQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsR0FBRyxDQUFDLE1BQUosQ0FBVyxFQUFyQztBQUVBLFVBQUEsTUFBTSxDQUFDLGdCQUFQLENBQXdCLFdBQXhCLEdBQXFDLEdBQUcsQ0FBQyxNQUFKLENBQVcsSUFBaEQ7QUFDQSxVQUFBLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixrQkFBeEIsR0FBNkMsR0FBRyxDQUFDLE1BQUosQ0FBVyxXQUF4RDtBQUNBLFVBQUEsTUFBTSxDQUFDLGdCQUFQLENBQXdCLFFBQXhCLEdBQWtDO0FBQUMsWUFBQSxFQUFFLEVBQUMsR0FBRyxDQUFDLE1BQUosQ0FBVyxXQUFmO0FBQTZCLFlBQUEsSUFBSSxFQUFFLEdBQUcsQ0FBQyxNQUFKLENBQVc7QUFBOUMsV0FBbEM7QUFDQSxVQUFBLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixRQUF4QixDQUFpQyxPQUFqQyxHQUEyQztBQUFFLFlBQUEsRUFBRSxFQUFFLEdBQUcsQ0FBQyxNQUFKLENBQVcsUUFBakI7QUFBNEIsWUFBQSxjQUFjLEVBQUUsR0FBRyxDQUFDLE1BQUosQ0FBVztBQUF2RCxXQUEzQztBQUVBLFVBQUEsTUFBTSxDQUFDLGdCQUFQLENBQXdCLFFBQXhCLEdBQWtDO0FBQUMsWUFBQSxFQUFFLEVBQUMsR0FBRyxDQUFDLE1BQUosQ0FBVyxXQUFmO0FBQTRCLFlBQUEsSUFBSSxFQUFFLEdBQUcsQ0FBQyxNQUFKLENBQVc7QUFBN0MsV0FBbEM7QUFDQSxVQUFBLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixRQUF4QixDQUFpQyxPQUFqQyxHQUEyQztBQUFFLFlBQUEsRUFBRSxFQUFDLEdBQUcsQ0FBQyxNQUFKLENBQVcsUUFBaEI7QUFBMkIsWUFBQSxjQUFjLEVBQUUsR0FBRyxDQUFDLE1BQUosQ0FBVztBQUF0RCxXQUEzQztBQUVBLFVBQUEsTUFBTSxDQUFDLGdCQUFQLENBQXdCLFdBQXhCLEdBQXNDO0FBQUUsWUFBQSxFQUFFLEVBQUUsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsR0FBRyxDQUFDLE1BQUosQ0FBVyxXQUEvQjtBQUFOLFdBQXRDO0FBQ0EsVUFBQSxNQUFNLENBQUMsYUFBUCxHQUF3QixNQUFNLENBQUMsZ0JBQS9CO0FBRUEsU0F6QkQsV0F5QlUsVUFBUyxLQUFULEVBQWdCO0FBQ3hCLFVBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0QsU0EzQkQ7QUE0Qk0sT0E5QkQsTUErQk07QUFDSixRQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQixFQUExQjtBQUNBLFFBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQTBCLEVBQTFCO0FBQ0Q7QUFFRixLQTVDSDtBQTZDRixHQWhERjs7QUFrREQsRUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixhQUFwQixHQUFvQyxVQUFVLE9BQVYsRUFBbUI7QUFFbEQsSUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixPQUFsQjtBQUVFLElBQUEsT0FBTyxDQUFDLFNBQVIsQ0FBa0IsRUFBbEIsQ0FBcUIsbUJBQXJCLENBRVAsTUFGTyxFQUVBLFVBQVMsR0FBVCxFQUFjO0FBSW5CLE1BQUEsTUFBTSxDQUFDLGlCQUFQLEdBQXlCLEdBQUcsQ0FBQyxVQUE3QjtBQUNELE1BQUEsTUFBTSxDQUFDLGlCQUFQLEdBQTJCLEdBQUcsQ0FBQyxNQUFKLENBQVcsRUFBdEM7QUFFQSxVQUFJLE1BQU0sQ0FBQyxnQkFBUCxJQUF5QixTQUE3QixFQUF3QyxNQUFNLENBQUMsZ0JBQVAsQ0FBd0IsTUFBeEIsR0FBK0IsQ0FBL0I7O0FBRXhDLFVBQUksTUFBTSxDQUFDLGlCQUFYLEVBQThCO0FBQzVCLFFBQUEsTUFBTSxDQUFDLGtCQUFQLENBQTBCLEdBQUcsQ0FBQyxNQUFKLENBQVcsRUFBckMsRUFENEIsQ0FFN0I7QUFDQTs7QUFDQyxRQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQjtBQUFDLFVBQUEsRUFBRSxFQUFDLEdBQUcsQ0FBQyxNQUFKLENBQVcsV0FBZjtBQUEyQixVQUFBLElBQUksRUFBRSxHQUFHLENBQUMsTUFBSixDQUFXO0FBQTVDLFNBQTFCO0FBQ0EsUUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBMEI7QUFBQyxVQUFBLEVBQUUsRUFBQyxHQUFHLENBQUMsTUFBSixDQUFXLFdBQWY7QUFBMkIsVUFBQSxJQUFJLEVBQUUsR0FBRyxDQUFDLE1BQUosQ0FBVztBQUE1QyxTQUExQjtBQUVBLFFBQUEsTUFBTSxDQUFDLG1CQUFQLEdBQTJCLEVBQTNCO0FBQ0EsUUFBQSxNQUFNLENBQUMsbUJBQVAsQ0FBMkIsVUFBM0IsR0FBc0MsTUFBTSxDQUFDLGdCQUE3QztBQUNBLFFBQUEsTUFBTSxDQUFDLG1CQUFQLENBQTJCLFVBQTNCLEdBQXNDLE1BQU0sQ0FBQyxnQkFBN0M7QUFDQSxRQUFBLE1BQU0sQ0FBQyxtQkFBUCxDQUEyQixvQkFBM0IsR0FBZ0QsR0FBRyxDQUFDLE1BQUosQ0FBVyxJQUEzRDtBQUNBLFFBQUEsTUFBTSxDQUFDLG1CQUFQLENBQTJCLGFBQTNCLEdBQXlDLEdBQUcsQ0FBQyxNQUFKLENBQVcsY0FBcEQ7QUFDRCxRQUFBLE9BQU8sQ0FBQyxHQUFSLENBQVksTUFBTSxDQUFDLG1CQUFuQjtBQUlDO0FBQ0ssS0E1QkQ7QUE2QkosR0FqQ0g7O0FBbUNBLEVBQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTRCLFlBQVk7QUFFbEMsUUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUM7QUFDQSxJQUFBLG9CQUFvQixDQUFDLGtCQUFyQixDQUF3QyxDQUF4QyxFQUEwQyxDQUExQyxFQUE0QyxJQUE1QyxFQUFrRCxJQUFsRCxDQUF1RCxVQUFTLElBQVQsRUFBZTtBQUFBLGlEQUUzQyxJQUFJLENBQUMsSUFGc0M7QUFBQTs7QUFBQTtBQUUvRCw0REFBK0I7QUFBQSxjQUF0QixPQUFzQjtBQUFJO0FBQzVCLGNBQUksTUFBTSxDQUFDLFdBQVAsQ0FBbUIsT0FBTyxDQUFDLFFBQTNCLENBQUosRUFBNEMsT0FBTyxDQUFDLFlBQVIsR0FBdUIsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsT0FBTyxDQUFDLFFBQTNCLENBQXZCO0FBQzVDLGNBQUksTUFBTSxDQUFDLFdBQVAsQ0FBbUIsT0FBTyxDQUFDLFFBQTNCLENBQUosRUFBMkMsT0FBTyxDQUFDLFlBQVIsR0FBdUIsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsT0FBTyxDQUFDLFFBQTNCLENBQXZCO0FBQ2hEO0FBTDZEO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBTzVELE1BQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsSUFBcEIsR0FBMkIsSUFBSSxDQUFDLElBQWhDO0FBRWMsS0FUeEIsRUFTeUIsVUFBUyxLQUFULEVBQWU7QUFFbkIsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDRCxLQVpwQjtBQWFBLEdBaEJOOztBQWtCQyxFQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUE0QixVQUFVLFNBQVYsRUFBcUI7QUFFNUMsUUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUM7QUFFQSxJQUFBLG9CQUFvQixDQUFDLGtCQUFyQixDQUF3QyxTQUF4QyxFQUFrRCxJQUFsRCxFQUF3RCxJQUF4RCxDQUNKLFVBQVMsSUFBVCxFQUFlO0FBQ1MsTUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixJQUFJLENBQUMsSUFBN0IsQ0FEVCxDQUVTOztBQUNDLFVBQUksd0JBQXdCLEdBQUMsRUFBN0I7QUFDQSxVQUFJLHVCQUF1QixHQUFHLEVBQTlCOztBQUNBLFdBQUksSUFBSSxDQUFDLEdBQUMsQ0FBVixFQUFZLENBQUMsR0FBQyxNQUFNLENBQUMsY0FBUCxDQUFzQixNQUFwQyxFQUEyQyxDQUFDLEVBQTVDLEVBQWdEO0FBQ3pDLFFBQUEsdUJBQXVCLENBQUMsSUFBeEIsQ0FBNkIsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsQ0FBdEIsRUFBeUIsTUFBdEQ7QUFDQSxRQUFBLHdCQUF3QixDQUFDLElBQXpCLENBQThCLGVBQWEsQ0FBM0M7QUFDQSxRQUFBLHVCQUF1QixDQUFDLElBQXhCLENBQTZCLE1BQU0sQ0FBQyxjQUFQLENBQXNCLENBQXRCLEVBQXlCLE9BQXREO0FBQ0EsUUFBQSx3QkFBd0IsQ0FBQyxJQUF6QixDQUE4QixzQkFBb0IsQ0FBbEQ7QUFDTDs7QUFFRixNQUFBLE1BQU0sQ0FBQyxhQUFQLENBQXFCLHVCQUFyQixFQUE2Qyx3QkFBN0M7QUFFVixLQWZYLEVBZVksVUFBUyxLQUFULEVBQWU7QUFDTixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNELEtBakJwQjtBQWtCQSxHQXRCTDs7QUF3QkEsRUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsVUFBVSxXQUFWLEVBQXVCO0FBRTlDLFFBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDO0FBQ0EsSUFBQSxvQkFBb0IsQ0FBQyxrQkFBckIsQ0FBd0MsV0FBeEMsRUFBcUQsSUFBckQsQ0FDTCxVQUFTLElBQVQsRUFBZTtBQUNVLE1BQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsSUFBSSxDQUFDLElBQTlCO0FBQ1osS0FIUixFQUdTLFVBQVMsS0FBVCxFQUFlO0FBQ0gsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDRCxLQUxwQjtBQU1BLEdBVEwsQ0E5UmtOLENBMFNsTjs7O0FBQ0gsRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQixZQUFZO0FBQy9CLFFBQUksSUFBSSxHQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDO0FBQ1MsSUFBQSxvQkFBb0IsQ0FBQyx3QkFBckIsQ0FBOEMsSUFBOUMsRUFBbUQsU0FBbkQsRUFBOEQsSUFBOUQsQ0FDUCxVQUFTLElBQVQsRUFBZTtBQUNiLE1BQUEsTUFBTSxDQUFDLFdBQVAsR0FBcUIsSUFBSSxDQUFDLElBQTFCOztBQURhLGtEQUV5QixNQUFNLENBQUMsV0FGaEM7QUFBQTs7QUFBQTtBQUVRO0FBQUEsY0FBUyxJQUFUO0FBQ1ksVUFBQSxNQUFNLENBQUMsV0FBUCxDQUFtQixJQUFJLENBQUMsRUFBeEIsSUFBOEIsSUFBSSxDQUFDLElBQW5DO0FBRFosU0FGUixDQUc0RDs7QUFINUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlkLEtBTE0sRUFLTCxVQUFTLEtBQVQsRUFBZTtBQUNVLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ3BCLEtBUEE7QUFRVixHQVZEOztBQVlJLEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsVUFBVSxnQkFBVixFQUE0QjtBQUNqRCxRQUFJLGdCQUFnQixJQUFFLEtBQWxCLElBQTJCLGdCQUFnQixJQUFFLFNBQWpELEVBQ0M7QUFDRyxNQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXFCLEVBQXJCO0FBQ0EsTUFBQSxNQUFNLENBQUMsNEJBQVAsR0FBb0MsZUFBcEM7QUFDRixLQUpGLE1BSVU7QUFDTCxNQUFBLE1BQU0sQ0FBQyw0QkFBUCxHQUFvQyxlQUFwQztBQUNBLE1BQUEsTUFBTSxDQUFDLGFBQVAsR0FBc0IsTUFBTSxDQUFDLGdCQUE3QjtBQUNIO0FBRUwsR0FWRDs7QUFZQSxFQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUEyQixVQUFVLGdCQUFWLEVBQTRCO0FBRW5ELFFBQUksZ0JBQUosRUFBdUI7QUFDbEIsTUFBQSxNQUFNLENBQUMsOEJBQVAsR0FBc0MsaUJBQXRDO0FBQ0EsTUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBeUIsTUFBTSxDQUFDLG1CQUFoQztBQUNILEtBSEYsTUFJQztBQUFHO0FBQ0EsTUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBd0IsRUFBeEI7QUFDQSxNQUFBLE1BQU0sQ0FBQyw4QkFBUCxHQUFzQyxpQkFBdEM7QUFDRixLQVRpRCxDQVlwRDs7O0FBQ0MsSUFBQSxZQUFZLENBQUMsY0FBYixDQUE0QixNQUE1QixFQUFtQyxJQUFuQyxFQUF5QyxJQUF6QyxDQUE4QyxVQUFVLElBQVYsRUFBZ0I7QUFDdkMsTUFBQSxNQUFNLENBQUMsYUFBUCxHQUF1QixJQUFJLENBQUMsSUFBNUI7QUFDRixLQUZyQjtBQUdILEdBaEJEOztBQW1CQSxFQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUEyQixZQUFZO0FBRXJDLElBQUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsSUFBdkIsQ0FBNEI7QUFBQyxNQUFBLEVBQUUsRUFBQyxJQUFKO0FBQVMsTUFBQSxvQkFBb0IsRUFBQztBQUFDLFFBQUEsVUFBVSxFQUFDO0FBQUMsVUFBQSxJQUFJLEVBQUM7QUFBTixTQUFaO0FBQTBCLFFBQUEsVUFBVSxFQUFDO0FBQUMsVUFBQSxJQUFJLEVBQUM7QUFBTjtBQUFyQztBQUE5QixLQUE1QjtBQUNELEdBSEQ7O0FBTUUsRUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBNkIsWUFBWTtBQUM3QyxJQUFBLG9CQUFvQixDQUFDLG1CQUFyQixDQUF5QyxNQUFNLENBQUMsZUFBaEQsRUFBZ0UsTUFBTSxDQUFDLGlCQUF2RSxFQUEwRixJQUExRixDQUNDLFVBQVMsSUFBVCxFQUFlO0FBQ00sTUFBQSxNQUFNLENBQUMsZUFBUCxHQUF5QixJQUFJLENBQUMsSUFBTCxDQUFVLElBQW5DO0FBQ0EsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLEdBQXRDLEVBQTBDLFNBQTFDO0FBQ04sS0FKaEIsRUFJaUIsVUFBUyxLQUFULEVBQWU7QUFDTCxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxJQUFOLENBQVcsR0FBdkMsRUFBMkMsT0FBM0M7QUFDakIsS0FOVjtBQU9NLEdBUkY7O0FBVUQsRUFBQSxNQUFNLENBQUMseUJBQVAsR0FBbUMsWUFBWTtBQUU1QyxJQUFBLG9CQUFvQixDQUFDLHlCQUFyQixDQUErQyxNQUFNLENBQUMsY0FBdEQsRUFBcUUsTUFBTSxDQUFDLGdCQUE1RSxFQUE4RixJQUE5RixDQUNMLFVBQVMsSUFBVCxFQUFlO0FBQ00sTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLEdBQXRDLEVBQTBDLFNBQTFDO0FBQ1IsS0FIUixFQUdTLFVBQVMsS0FBVCxFQUFlO0FBQ0gsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsSUFBTixDQUFXLEdBQXZDLEVBQTJDLE9BQTNDO0FBQ0QsS0FMcEI7QUFNQSxHQVJIOztBQVdDLEVBQUEsTUFBTSxDQUFDLHNCQUFQLEdBQWdDLFVBQVUsZ0JBQVYsRUFBNEI7QUFBQztBQUUzRCxJQUFBLG9CQUFvQixDQUFDLHNCQUFyQixDQUE0QyxNQUFNLENBQUMsYUFBbkQsRUFBaUUsZ0JBQWpFLEVBQWtGLElBQWxGLEVBQXdGLElBQXhGLENBQ0wsVUFBUyxJQUFULEVBQWU7QUFDWCxNQUFBLE1BQU0sQ0FBQyxrQkFBUDtBQUNpQixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsR0FBdEMsRUFBMEMsU0FBMUMsRUFGTixDQUdaOztBQUNBLE1BQUEsTUFBTSxDQUFDLGdCQUFQLEdBQXdCLElBQUksQ0FBQyxJQUFMLENBQVUsSUFBbEMsQ0FKWSxDQUtaOztBQUNBLE1BQUEsTUFBTSxDQUFDLGdCQUFQLEdBQXdCLEtBQXhCO0FBQ2tCLE1BQUEsTUFBTSxDQUFDLDRCQUFQLEdBQW9DLGNBQXBDO0FBQ1AsS0FUVCxFQVNVLFVBQVMsS0FBVCxFQUFlO0FBQ0osTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDQSxNQUFBLE1BQU0sQ0FBQyw0QkFBUCxHQUFvQyxjQUFwQztBQUNELEtBWnBCO0FBY0MsSUFBQSxNQUFNLENBQUMsa0JBQVA7QUFDRCxHQWpCRjs7QUFtQkMsRUFBQSxNQUFNLENBQUMsYUFBUCxHQUF1QixZQUFZO0FBQy9CLElBQUEsTUFBTSxDQUFDLDRCQUFQLEdBQW9DLGNBQXBDO0FBQ0EsSUFBQSxPQUFPLENBQUMsR0FBUixDQUFZLE1BQU0sQ0FBQyw0QkFBbkI7QUFDRixHQUhGOztBQUtBLEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBMEIsWUFBWTtBQUNsQyxJQUFBLE1BQU0sQ0FBQyw4QkFBUCxHQUFzQyxjQUF0QztBQUNBLElBQUEsT0FBTyxDQUFDLEdBQVIsQ0FBWSxNQUFNLENBQUMsOEJBQW5CO0FBQ0YsR0FIRjs7QUFNQSxFQUFBLE1BQU0sQ0FBQyx3QkFBUCxHQUFrQyxVQUFVLGdCQUFWLEVBQTRCO0FBRW5FLElBQUEsb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLE1BQU0sQ0FBQyxnQkFBckQsRUFBc0UsZ0JBQXRFLEVBQXVGLElBQXZGLEVBQTZGLElBQTdGLENBQ0UsVUFBUyxJQUFULEVBQWU7QUFDSyxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsR0FBdEMsRUFBMEMsU0FBMUM7QUFDQSxNQUFBLE1BQU0sQ0FBQyw4QkFBUCxHQUFzQyxjQUF0QztBQUNMLEtBSmpCLEVBSWtCLFVBQVMsS0FBVCxFQUFlO0FBQ04sTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDQSxNQUFBLE1BQU0sQ0FBQyw4QkFBUCxHQUFzQyxjQUF0QztBQUNELEtBUDFCO0FBU08sSUFBQSxNQUFNLENBQUMsb0JBQVA7QUFDRCxHQVpEOztBQWlCQSxFQUFBLE1BQU0sQ0FBQyxvQkFBUCxHQUE4QixZQUFZO0FBRXpDLFFBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDO0FBRUEsSUFBQSxvQkFBb0IsQ0FBQyxvQkFBckIsQ0FBMEMsSUFBMUMsRUFBZ0QsSUFBaEQsQ0FDTCxVQUFTLElBQVQsRUFBZTtBQUNXLE1BQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsSUFBcEIsR0FBMkIsSUFBSSxDQUFDLElBQWhDO0FBQ1gsS0FIVixFQUdXLFVBQVMsS0FBVCxFQUFlO0FBQ0wsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDRCxLQUxwQjtBQU1BLEdBVkQ7O0FBYUQsRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixZQUFZO0FBQ3ZCLElBQUEsV0FBVyxDQUFDLGNBQVosQ0FBMkIsT0FBM0IsRUFBb0MsSUFBcEMsQ0FBeUMsVUFBUyxJQUFULEVBQWM7QUFDbkQsTUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixJQUFJLENBQUMsSUFBdkI7QUFDQSxLQUZKO0FBR0wsR0FKRjs7QUFPRSxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLFVBQVMsTUFBVCxFQUFnQjtBQUMvQztBQUNXLElBQUEsTUFBTSxDQUFDLFlBQVAsR0FBb0IsRUFBcEI7QUFDQyxJQUFBLFlBQVksQ0FBQyxlQUFiLENBQTZCLE1BQTdCLEVBQW9DLElBQXBDLEVBQTBDLElBQTFDLENBQStDLFVBQVMsSUFBVCxFQUFlO0FBQzFDLE1BQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsSUFBSSxDQUFDLElBQTNCO0FBQ0osS0FGaEIsRUFFaUIsVUFBUyxLQUFULEVBQWU7QUFDYixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNMLEtBSmQ7QUFLSixHQVJGLENBcGI2TSxDQThibE47OztBQUNDLEVBQUEsTUFBTSxDQUFDLDBCQUFQLEdBQWtDLFVBQVMsSUFBVCxFQUFlLGVBQWYsRUFDL0I7QUFDSCxJQUFBLG9CQUFvQixDQUFDLDZCQUFyQixDQUFtRCxJQUFJLENBQUMsRUFBeEQsRUFBMkQsTUFBM0QsRUFBbUUsSUFBbkUsQ0FDQSxVQUFVLElBQVYsRUFBZ0I7QUFDZixNQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGVBQXRCLElBQXlDLElBQUksQ0FBQyxJQUE5QztBQUNVLEtBSFgsRUFHWSxVQUFTLEtBQVQsRUFBZTtBQUNaLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0gsS0FMWjtBQU1GLEdBUkUsQ0EvYmlOLENBMGM1TTs7O0FBQ0EsRUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixVQUFVLElBQVYsRUFBZTtBQUU3QixJQUFBLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixRQUF4QixHQUFpQyxJQUFqQztBQUNBLElBQUEsTUFBTSxDQUFDLGdCQUFQLENBQXdCLGFBQXhCLEdBQXNDLElBQXRDO0FBQ0QsSUFBQSxNQUFNLENBQUMsY0FBUCxHQUFzQixJQUF0QjtBQUNKLEdBTEw7O0FBT0EsRUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixVQUFVLElBQVYsRUFBZTtBQUU3QixJQUFBLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixRQUF4QixHQUFpQyxJQUFqQztBQUNBLElBQUEsTUFBTSxDQUFDLGdCQUFQLENBQXdCLGFBQXhCLEdBQXNDLElBQXRDO0FBQ0QsSUFBQSxNQUFNLENBQUMsY0FBUCxHQUFzQixJQUF0QjtBQUVKLEdBTkwsQ0FsZDRNLENBMGQ1TTs7O0FBQ0EsRUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBeUIsVUFBVSxJQUFWLEVBQWU7QUFDOUIsSUFBQSxvQkFBb0IsQ0FBQyxpQkFBckIsQ0FBdUMsSUFBSSxDQUFDLEVBQTVDLEVBQStDLElBQS9DLEVBQXFELElBQXJELENBQTBELFVBQVMsSUFBVCxFQUFlO0FBQzlELE1BQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsSUFBSSxDQUFDLElBQTlCO0FBQ0UsS0FGYixFQUVjLFVBQVMsS0FBVCxFQUFlO0FBQ25CLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ1QsS0FKRDtBQUtULEdBTkQ7O0FBUUEsRUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBMEIsVUFBVSxJQUFWLEVBQWU7QUFDbkMsSUFBQSxvQkFBb0IsQ0FBQyxpQkFBckIsQ0FBdUMsSUFBSSxDQUFDLEVBQTVDLEVBQStDLElBQS9DLEVBQXFELElBQXJELENBQTBELFVBQVMsSUFBVCxFQUFlO0FBQzVELE1BQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsSUFBSSxDQUFDLElBQTlCO0FBQ0ksS0FGakIsRUFFa0IsVUFBUyxLQUFULEVBQWU7QUFDbkIsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDRCxLQUpiO0FBS0osR0FORixDQW5lNE0sQ0EyZWhOOzs7QUFJQSxNQUFJLElBQUksR0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QztBQUNBLE1BQUksTUFBTSxDQUFDLGFBQVAsS0FBdUIsU0FBM0IsRUFDRixNQUFNLENBQUMsYUFBUCxHQUFxQjtBQUFFLElBQUEsUUFBUSxFQUFFLEVBQVo7QUFBZ0IsSUFBQSxRQUFRLEVBQUU7QUFBMUIsR0FBckI7QUFDRSxNQUFJLE1BQU0sQ0FBQyxnQkFBUCxLQUEwQixTQUE5QixFQUNILE1BQU0sQ0FBQyxnQkFBUCxHQUF3QjtBQUFFLElBQUEsTUFBTSxFQUFDO0FBQVQsR0FBeEI7QUFFRyxFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBcmZnTixDQXFmM0w7O0FBRXJCLEVBQUEsTUFBTSxDQUFDLFFBQVA7QUFFSCxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXFCLEVBQXJCO0FBQ0csRUFBQSxZQUFZLENBQUMsY0FBYixDQUE0QixLQUE1QixFQUFrQyxJQUFsQyxFQUF3QyxJQUF4QyxDQUE2QyxVQUFVLElBQVYsRUFBZ0I7QUFDdEQsSUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixJQUFJLENBQUMsSUFBdkI7QUFDVCxJQUFBLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBVixDQUFtQixVQUFDLElBQUQsRUFBTSxLQUFOO0FBQUEsYUFDbEIsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsSUFBSSxDQUFDLEtBQXpCLElBQWtDLElBQUksQ0FBQyxFQURyQjtBQUFBLEtBQW5CO0FBSUcsR0FORDtBQU9BLEVBQUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsRUFBdkIsRUFqZ0JnTixDQWlnQnJMOztBQUUzQixFQUFBLE1BQU0sQ0FBQyw0QkFBUCxHQUFvQyxjQUFwQztBQUNBLEVBQUEsTUFBTSxDQUFDLDhCQUFQLEdBQXNDLGNBQXRDO0FBQ0EsRUFBQSxNQUFNLENBQUMsa0JBQVA7QUFDQSxFQUFBLE1BQU0sQ0FBQyxvQkFBUDtBQUVELEMsQ0FHSjs7O0FBR08sU0FBUyxxQkFBVCxDQUFnQyxNQUFoQyxFQUF3QyxVQUF4QyxFQUFvRCxTQUFwRCxFQUErRCxNQUEvRCxFQUFzRSxRQUF0RSxFQUErRSxxQkFBL0UsRUFBcUcsaUJBQXJHLEVBQXVILGdCQUF2SCxFQUF3SSxlQUF4SSxFQUF3SixvQkFBeEosRUFBNkssWUFBN0ssRUFBMEwsV0FBMUwsRUFBc00sZUFBdE0sRUFBdU47QUFBQTs7QUFFM04sRUFBQSxNQUFNLENBQUMsSUFBUCxHQUFZLHVCQUFaO0FBQ0EsRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFtQixFQUFuQjtBQUNBLEVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBc0IsRUFBdEI7QUFFRCxFQUFBLE1BQU0sQ0FBQyxLQUFQLEdBQWUsZUFBZjtBQUNBLEVBQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxnQkFBYjs7QUFFQSxFQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQW9CLFVBQUMsTUFBRCxFQUFRLEtBQVI7QUFBQSxXQUFrQixNQUFNLENBQUMsY0FBUCxDQUFzQixNQUF0QixFQUE4QixNQUE5QixDQUFxQyxNQUFyQyxDQUE0QyxLQUE1QyxFQUFrRCxDQUFsRCxDQUFsQjtBQUFBLEdBQXBCOztBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsVUFBQyxNQUFELEVBQVEsS0FBUjtBQUFBLFdBQWtCLE1BQU0sQ0FBQyxjQUFQLENBQXNCLE1BQXRCLEVBQThCLE9BQTlCLENBQXNDLE1BQXRDLENBQTZDLEtBQTdDLEVBQW1ELENBQW5ELENBQWxCO0FBQUEsR0FBdEI7O0FBRUEsTUFBSSxLQUFKO0FBQ0EsRUFBQSxNQUFNLENBQUMsVUFBUCxxQkFBb0IsTUFBTSxDQUFDLE1BQTNCLG1EQUFvQixlQUFlLEVBQW5DOztBQUNDLEVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsWUFBWTtBQUU1QixJQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXVCLElBQXZCO0FBQ0EsSUFBQSxvQkFBb0IsQ0FBQyxpQkFBckIsQ0FBdUMsTUFBTSxDQUFDLFVBQTlDLEVBQTBELElBQTFELENBQStELFVBQVMsSUFBVCxFQUFlO0FBQUE7O0FBQzdELE1BQUEsTUFBTSxDQUFDLGVBQVAsR0FBdUIsS0FBdkIsQ0FENkQsQ0FFN0Q7O0FBQ0EsTUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixJQUFJLENBQUMsSUFBdkI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLHFCQUFoQixHQUF3QyxJQUF4QztBQUNBLE1BQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxzQkFBYixDQUFvQyxNQUFNLENBQUMsUUFBUCxDQUFnQixHQUFwRCxFQUF3RCxNQUFNLENBQUMsUUFBL0Q7QUFDQSxNQUFBLE1BQU0sQ0FBQyxRQUFQLDRCQUFrQixNQUFNLENBQUMsUUFBUCxDQUFnQixnQkFBbEMsMERBQWtCLHNCQUFrQyxXQUFwRDtBQUNBLFVBQUksMkJBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsZ0JBQWhCLGtGQUFrQyxTQUFsQyxLQUE4QyxTQUFsRCxFQUE2RCxNQUFNLENBQUMsaUJBQVA7QUFFekQsS0FUckIsRUFTc0IsVUFBUyxLQUFULEVBQWU7QUFDbEIsTUFBQSxNQUFNLENBQUMsZUFBUCxHQUF1QixLQUF2QjtBQUNELE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ2pCLEtBWkQ7QUFhUCxHQWhCRDs7QUFpQkMsRUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsVUFBUyxJQUFULEVBQWM7QUFDdkMsUUFBSSxJQUFJLElBQUUsQ0FBVixFQUNBO0FBQUE7O0FBQ0ksVUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsUUFBdEIsQ0FBK0IsR0FBL0IsQ0FBbUMsVUFBUyxDQUFULEVBQVk7QUFBRSxlQUFPLENBQUMsQ0FBQyxFQUFGLENBQUssUUFBTCxFQUFQO0FBQXlCLE9BQTFFLEVBQTRFLE9BQTVFLHFCQUFvRixNQUFNLENBQUMsUUFBM0YscURBQW9GLGlCQUFpQixRQUFqQixDQUEwQixRQUExQixFQUFwRixDQUFWOztBQUNBLFVBQUksR0FBRyxJQUFFLENBQVQsRUFBWTtBQUNKLFFBQUEsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsUUFBckIsQ0FBOEIsT0FBOUIsR0FBd0MsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsUUFBdEIsQ0FBK0IsR0FBL0IsQ0FBeEM7QUFDUDtBQUdKLEtBUkQsTUFRSztBQUFBOztBQUVELFVBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFFBQXRCLENBQStCLEdBQS9CLENBQW1DLFVBQVMsQ0FBVCxFQUFZO0FBQUUsZUFBTyxDQUFDLENBQUMsRUFBRixDQUFLLFFBQUwsRUFBUDtBQUF5QixPQUExRSxFQUE0RSxPQUE1RSxzQkFBb0YsTUFBTSxDQUFDLFFBQTNGLHNEQUFvRixrQkFBaUIsUUFBakIsQ0FBMEIsUUFBMUIsRUFBcEYsQ0FBWDs7QUFDQSxVQUFJLElBQUksSUFBRSxDQUFWLEVBQWE7QUFDTCxRQUFBLE1BQU0sQ0FBQyxhQUFQLENBQXFCLFFBQXJCLENBQThCLE9BQTlCLEdBQXdDLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFFBQXRCLENBQStCLElBQS9CLENBQXhDO0FBQ1A7QUFDSjtBQUNKLEdBaEJBOztBQWlCRCxFQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUF5QixZQUFVO0FBRS9CLElBQUEsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsUUFBckIsQ0FBOEIsT0FBOUIsR0FBc0MsRUFBdEM7QUFDQSxJQUFBLE1BQU0sQ0FBQyxhQUFQLENBQXFCLFFBQXJCLENBQThCLE9BQTlCLEdBQXNDLEVBQXRDO0FBRUosSUFBQSxvQkFBb0IsQ0FBQyw2QkFBckIsQ0FBbUQsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsV0FBbkUsRUFBZ0YsTUFBaEYsRUFDZ0IsSUFEaEIsQ0FDcUIsVUFBVSxJQUFWLEVBQWdCO0FBQ2pCLE1BQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsVUFBdEIsSUFBb0MsSUFBSSxDQUFDLElBQXpDO0FBQ0EsYUFBTyxvQkFBb0IsQ0FBQyw2QkFBckIsQ0FBbUQsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsV0FBbkUsRUFBZ0YsTUFBaEYsQ0FBUDtBQUNILEtBSmpCLEVBS2dCLElBTGhCLENBS3FCLFVBQVUsSUFBVixFQUFnQjtBQUFFO0FBR3BCLE1BQUEsTUFBTSxDQUFDLGdCQUFQLEdBQXdCLEVBQXhCO0FBQ0EsTUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixVQUF0QixJQUFvQyxJQUFJLENBQUMsSUFBekM7QUFFQSxNQUFBLE1BQU0sQ0FBQyxzQkFBUCxDQUE4QixNQUFNLENBQUMsUUFBUCxDQUFnQixRQUE5QyxFQUF1RCxDQUF2RDtBQUNBLE1BQUEsTUFBTSxDQUFDLGtCQUFQLENBQTBCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEVBQTFDO0FBRUEsTUFBQSxNQUFNLENBQUMsZ0JBQVAsQ0FBd0IsUUFBeEIsR0FBa0M7QUFBQyxRQUFBLEVBQUUsRUFBQyxNQUFNLENBQUMsUUFBUCxDQUFnQixXQUFwQjtBQUFrQyxRQUFBLElBQUksRUFBRSxNQUFNLENBQUMsUUFBUCxDQUFnQjtBQUF4RCxPQUFsQztBQUNBLE1BQUEsTUFBTSxDQUFDLGdCQUFQLENBQXdCLFFBQXhCLEdBQWtDO0FBQUMsUUFBQSxFQUFFLEVBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsV0FBcEI7QUFBaUMsUUFBQSxJQUFJLEVBQUUsTUFBTSxDQUFDLFFBQVAsQ0FBZ0I7QUFBdkQsT0FBbEM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXdCLE1BQU0sQ0FBQyxnQkFBL0I7QUFDQSxNQUFBLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixDQUExQjtBQUNBLE1BQUEsTUFBTSxDQUFDLGtCQUFQLENBQTBCLENBQTFCO0FBR0gsS0FyQmhCLFdBcUJ5QixVQUFTLEtBQVQsRUFBZ0I7QUFDckIsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDSixLQXZCaEI7QUF5QkMsR0E5QkQ7O0FBK0JBLEVBQUEsTUFBTSxDQUFDLGFBQVAsR0FBdUIsVUFBUyx1QkFBVCxFQUFpQyx3QkFBakMsRUFBMEQsSUFBMUQsRUFBK0QsVUFBL0QsRUFBMEU7QUFDL0QsSUFBQSxRQUFRLENBQUMsWUFBVTtBQUNmLFVBQUksVUFBVSxHQUFDLEVBQWY7O0FBRUQsV0FBSyxJQUFJLENBQUMsR0FBRSxDQUFaLEVBQWMsQ0FBQyxHQUFDLHdCQUF3QixDQUFDLE1BQXpDLEVBQWdELENBQUMsRUFBakQsRUFBb0Q7QUFDakQsWUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLHNCQUFULENBQWdDLHdCQUF3QixDQUFDLENBQUQsQ0FBeEQsQ0FBaEI7QUFDQSxRQUFBLFVBQVUsQ0FBQyxJQUFYLENBQWdCLFNBQVMsQ0FBQyxDQUFELENBQXpCO0FBQ0Y7O0FBRUQsTUFBQSxLQUFLLEdBQUcsZUFBZSxDQUFDLFVBQUQsRUFDckI7QUFFSSxRQUFBLFNBQVMsRUFBQyxVQUZkO0FBR0ksUUFBQSxhQUFhLEVBQUUsS0FIbkI7QUFJSSxRQUFBLElBQUksRUFBRSxJQUpWO0FBS0ksUUFBQSxlQUFlLEVBQUUsdUJBTHJCO0FBTUksUUFBQSxLQUFLLEVBQUUsZUFBVSxFQUFWLEVBQWMsU0FBZCxFQUF5QixNQUF6QixFQUFpQztBQUNwQyxpQkFBTyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUEwQixxQkFBMUIsQ0FBUDtBQUNEO0FBUlAsT0FEcUIsQ0FBdkI7QUFXRSxLQW5CRyxDQUFSO0FBb0JULEdBckJ6Qjs7QUF3QkEsRUFBQSxNQUFNLENBQUMsc0JBQVAsR0FBZ0MsVUFBVSxVQUFWLEVBQXFCLElBQXJCLEVBQTJCO0FBQ3ZEO0FBQ0EsSUFBQSxvQkFBb0IsQ0FBQyx3QkFBckIsQ0FBOEMsVUFBOUMsRUFBMEQsSUFBMUQsQ0FDUSxVQUFVLElBQVYsRUFBZ0I7QUFDWjtBQUNDLFVBQUksSUFBSSxJQUFFLENBQVYsRUFBWTtBQUFFO0FBQ0QsUUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixJQUFJLENBQUMsSUFBTCxDQUFVLFVBQWxDO0FBRUEsUUFBQSxNQUFNLENBQUMsYUFBUCxDQUFxQixDQUFDLE1BQU0sQ0FBQyxjQUFSLENBQXJCLEVBQTZDLENBQUMsbUJBQUQsQ0FBN0MsRUFBbUUsSUFBbkUsRUFBd0UsVUFBeEU7QUFDWixPQUpELE1BSVE7QUFBRztBQUNFLFFBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxVQUFsQztBQUNBLFlBQUksd0JBQXdCLEdBQUMsRUFBN0I7QUFDQSxZQUFJLHVCQUF1QixHQUFHLEVBQTlCOztBQUNBLGFBQUksSUFBSSxDQUFDLEdBQUMsQ0FBVixFQUFZLENBQUMsR0FBQyxNQUFNLENBQUMsY0FBUCxDQUFzQixNQUFwQyxFQUEyQyxDQUFDLEVBQTVDLEVBQWdEO0FBQzVDLGNBQUksTUFBTSxDQUFDLGNBQVAsQ0FBc0IsQ0FBdEIsRUFBeUIsTUFBekIsSUFBaUMsU0FBckMsRUFBZ0QsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsQ0FBdEIsRUFBeUIsUUFBekIsSUFBcUMsRUFBckM7QUFDakQsVUFBQSx1QkFBdUIsQ0FBQyxJQUF4QixDQUE2QixNQUFNLENBQUMsY0FBUCxDQUFzQixDQUF0QixFQUF5QixNQUF0RDtBQUNBLFVBQUEsd0JBQXdCLENBQUMsSUFBekIsQ0FBOEIsZUFBYSxDQUEzQztBQUNGOztBQUdELFFBQUEsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsdUJBQXJCLEVBQTZDLHdCQUE3QyxFQUFzRSxLQUF0RSxFQUE0RSxVQUE1RTtBQUVUO0FBRVIsS0F0QlQsRUFzQlUsVUFBUyxLQUFULEVBQWU7QUFDTCxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNsQixLQXhCRjtBQTBCQyxHQTVCTDs7QUErQkksRUFBQSxNQUFNLENBQUMsd0JBQVAsR0FBa0MsVUFBUyxpQkFBVCxFQUE0QixHQUE1QixFQUNsQztBQUFBOztBQUNJLFFBQUksR0FBSjtBQUNBLFFBQUksaUJBQWlCLElBQUksZ0JBQXpCLEVBQTRDLEdBQUcsNkJBQUcsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsVUFBckIsQ0FBSCwyREFBRyx1QkFBa0MsT0FBeEM7QUFDNUMsUUFBSSxpQkFBaUIsSUFBSSxnQkFBekIsRUFBNEMsR0FBRyw2QkFBRyxNQUFNLENBQUMsYUFBUCxDQUFxQixVQUFyQixDQUFILDJEQUFHLHVCQUFrQyxPQUF4QztBQUUvQyxRQUFJLEdBQUcsQ0FBQyxFQUFKLElBQVUsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsRUFBOUIsRUFDSSxvQkFBb0IsQ0FBQyx3QkFBckIsQ0FBOEMsR0FBRyxDQUFDLEVBQWxELEVBQXNELElBQXRELENBQ0csVUFBVSxJQUFWLEVBQWdCO0FBQ1osVUFBSSxpQkFBaUIsSUFBRSxnQkFBdkIsRUFBeUM7QUFDcEMsUUFBQSxNQUFNLENBQUMsZ0JBQUQsQ0FBTixHQUEyQixJQUFJLENBQUMsSUFBTCxDQUFVLFVBQXJDO0FBQ0EsUUFBQSxNQUFNLENBQUMsYUFBUCxDQUFxQixDQUFDLE1BQU0sQ0FBQyxnQkFBRCxDQUFQLENBQXJCLEVBQWdELENBQUMsbUJBQUQsQ0FBaEQsRUFBc0UsSUFBdEUsRUFBMkUsVUFBM0U7QUFDSjs7QUFDRCxVQUFJLGlCQUFpQixJQUFFLGdCQUF2QixFQUF5QztBQUNuQyxRQUFBLE1BQU0sQ0FBQyxnQkFBRCxDQUFOLEdBQTJCLElBQUksQ0FBQyxJQUFMLENBQVUsVUFBckM7QUFDQSxZQUFJLHdCQUF3QixHQUFHLEVBQS9CO0FBQ0EsWUFBSSx1QkFBdUIsR0FBRyxFQUE5Qjs7QUFDQyxhQUFJLElBQUksQ0FBQyxHQUFDLENBQVYsRUFBWSxDQUFDLEdBQUMsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsTUFBcEMsRUFBMkMsQ0FBQyxFQUE1QyxFQUFnRDtBQUNyQyxjQUFJLE1BQU0sQ0FBQyxjQUFQLENBQXNCLENBQXRCLEVBQXlCLE1BQXpCLElBQWlDLFNBQXJDLEVBQWdELE1BQU0sQ0FBQyxjQUFQLENBQXNCLENBQXRCLEVBQXlCLFFBQXpCLElBQXFDLEVBQXJDO0FBQ2pELFVBQUEsdUJBQXVCLENBQUMsSUFBeEIsQ0FBNkIsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsQ0FBdEIsRUFBeUIsTUFBdEQ7QUFDQSxVQUFBLHdCQUF3QixDQUFDLElBQXpCLENBQThCLGVBQWEsQ0FBM0M7QUFDVDs7QUFDRixRQUFBLE1BQU0sQ0FBQyxhQUFQLENBQXFCLHVCQUFyQixFQUE2Qyx3QkFBN0MsRUFBc0UsS0FBdEUsRUFBNEUsVUFBNUUsRUFUbUMsQ0FVbkM7QUFDSjtBQUNMLEtBbEJKLEVBa0JLLFVBQVMsS0FBVCxFQUFlO0FBQ0wsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDUCxLQXBCUjtBQXFCSixHQTVCRDs7QUE2QkosRUFBQSxNQUFNLENBQUMsdUJBQVAsR0FBaUMsVUFBUyxXQUFULEVBQ2pDO0FBQ0ksUUFBSSxNQUFNLENBQUMsV0FBRCxDQUFWLEVBQXlCLE1BQU0sQ0FBQyxXQUFELENBQU4sQ0FBb0IsTUFBcEIsR0FBMkIsQ0FBM0I7QUFDNUIsR0FIRDs7QUFJQSxFQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUE0QixVQUFVLFNBQVYsRUFBcUI7QUFFNUMsUUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUM7QUFFQSxJQUFBLG9CQUFvQixDQUFDLGtCQUFyQixDQUF3QyxTQUF4QyxFQUFrRCxJQUFsRCxFQUF3RCxJQUF4RCxDQUNXLFVBQVMsSUFBVCxFQUFlO0FBQ04sTUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixJQUFJLENBQUMsSUFBN0IsQ0FETSxDQUVOOztBQUNDLFVBQUksd0JBQXdCLEdBQUMsRUFBN0I7QUFDQSxVQUFJLHVCQUF1QixHQUFHLEVBQTlCOztBQUNBLFdBQUksSUFBSSxDQUFDLEdBQUMsQ0FBVixFQUFZLENBQUMsR0FBQyxNQUFNLENBQUMsY0FBUCxDQUFzQixNQUFwQyxFQUEyQyxDQUFDLEVBQTVDLEVBQWdEO0FBQ3pDLFFBQUEsdUJBQXVCLENBQUMsSUFBeEIsQ0FBNkIsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsQ0FBdEIsRUFBeUIsTUFBdEQ7QUFDQSxRQUFBLHdCQUF3QixDQUFDLElBQXpCLENBQThCLGVBQWEsQ0FBM0M7QUFDQSxRQUFBLHVCQUF1QixDQUFDLElBQXhCLENBQTZCLE1BQU0sQ0FBQyxjQUFQLENBQXNCLENBQXRCLEVBQXlCLE9BQXREO0FBQ0EsUUFBQSx3QkFBd0IsQ0FBQyxJQUF6QixDQUE4QixzQkFBb0IsQ0FBbEQ7QUFDTDs7QUFFRixNQUFBLE1BQU0sQ0FBQyxhQUFQLENBQXFCLHVCQUFyQixFQUE2Qyx3QkFBN0M7QUFFVixLQWZYLEVBZVksVUFBUyxLQUFULEVBQWU7QUFDTixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNELEtBakJwQjtBQWtCQSxHQXRCTCxDQXZLMk4sQ0ErTDNOOzs7QUFDQSxFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLFlBQVk7QUFDekIsUUFBSSxJQUFJLEdBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEM7QUFDQSxJQUFBLG9CQUFvQixDQUFDLHdCQUFyQixDQUE4QyxJQUE5QyxFQUFtRCxTQUFuRCxFQUE4RCxJQUE5RCxDQUNRLFVBQVMsSUFBVCxFQUFlO0FBQ1AsTUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQixJQUFJLENBQUMsSUFBMUI7O0FBRE8sa0RBRVUsTUFBTSxDQUFDLFdBRmpCO0FBQUE7O0FBQUE7QUFFUDtBQUFBLGNBQVMsSUFBVDtBQUNZLFVBQUEsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsSUFBSSxDQUFDLEVBQXhCLElBQThCLElBQUksQ0FBQyxJQUFuQztBQURaLFNBRk8sQ0FHNkM7O0FBSDdDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJZCxLQUxULEVBS1UsVUFBUyxLQUFULEVBQWU7QUFDTCxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNVLEtBUDlCO0FBUVAsR0FWRDs7QUFZQSxFQUFBLE1BQU0sQ0FBQyxzQkFBUCxHQUFnQyxZQUFZO0FBQUE7O0FBQUM7QUFDekMsUUFBSSxNQUFKO0FBQ0EsUUFBSSxzQkFBQSxNQUFNLENBQUMsUUFBUCx3RUFBaUIsRUFBakIsS0FBcUIsU0FBekIsRUFBb0MsTUFBTSxHQUFHLENBQVQsQ0FBcEMsS0FDSyxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsRUFBekI7QUFDRCxJQUFBLE1BQU0sQ0FBQyxhQUFQLENBQXFCLEVBQXJCLEdBQXdCLE1BQU0sQ0FBQyxVQUEvQjtBQUNKLElBQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0IsSUFBcEI7QUFDQSxJQUFBLG9CQUFvQixDQUFDLHNCQUFyQixDQUE0QyxNQUFNLENBQUMsYUFBbkQsRUFBaUUsTUFBakUsRUFBd0UsSUFBeEUsRUFBOEUsSUFBOUUsQ0FDUSxVQUFTLElBQVQsRUFBZTtBQUFBOztBQUNQLE1BQUEsTUFBTSxDQUFDLFVBQVAsR0FBa0IsS0FBbEI7QUFDQSxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsR0FBdEMsRUFBMEMsU0FBMUM7QUFFQSxNQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGdCQUFoQixHQUFtQyxJQUFJLENBQUMsSUFBTCxDQUFVLElBQTdDOztBQUNBLFVBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsZ0JBQWhCLENBQWlDLE9BQWpDLElBQTBDLFNBQTlDLEVBQ0E7QUFDSSxRQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE9BQWhCLEdBQTBCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGdCQUFoQixDQUFpQyxPQUEzRDtBQUNBLFlBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsZ0JBQWhCLENBQWlDLFNBQWpDLElBQTRDLFNBQWhELEVBQTJELE1BQU0sQ0FBQyxRQUFQLENBQWdCLFNBQWhCLEdBQTRCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGdCQUFoQixDQUFpQyxTQUE3RDtBQUMzRCxRQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsc0JBQWIsQ0FBb0MsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsR0FBcEQsRUFBd0QsTUFBTSxDQUFDLFFBQS9EO0FBQ0g7O0FBQ0QsTUFBQSxNQUFNLENBQUMsUUFBUCw2QkFBa0IsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsZ0JBQWxDLDJEQUFrQix1QkFBa0MsV0FBcEQ7QUFDQSxNQUFBLE1BQU0sQ0FBQyxpQkFBUDtBQUdOLEtBaEJWLEVBZ0JXLFVBQVMsS0FBVCxFQUFlO0FBQ04sTUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixLQUFsQjtBQUNBLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBRUMsS0FwQnJCO0FBc0JILEdBNUJEOztBQThCQSxFQUFBLE1BQU0sQ0FBQyx5QkFBUCxHQUFtQyxZQUFZO0FBQUE7O0FBRTFDLElBQUEsb0JBQW9CLENBQUMseUJBQXJCLENBQStDLE1BQU0sQ0FBQyxjQUF0RCx1QkFBcUUsTUFBTSxDQUFDLFFBQTVFLHNEQUFxRSxrQkFBaUIsRUFBdEYsRUFBMEYsSUFBMUYsQ0FDTyxVQUFTLElBQVQsRUFBZTtBQUNOLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxHQUF0QyxFQUEwQyxTQUExQztBQUNSLEtBSFIsRUFHUyxVQUFTLEtBQVQsRUFBZTtBQUNILE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLElBQU4sQ0FBVyxHQUF2QyxFQUEyQyxPQUEzQztBQUNELEtBTHBCO0FBTUEsR0FSTDs7QUFZSSxFQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXVCLFlBQVk7QUFDL0IsSUFBQSxNQUFNLENBQUMsNEJBQVAsR0FBb0MsY0FBcEM7QUFDQSxJQUFBLE9BQU8sQ0FBQyxHQUFSLENBQVksTUFBTSxDQUFDLDRCQUFuQjtBQUNGLEdBSEYsQ0F0UHVOLENBNFByTjs7O0FBQ0YsRUFBQSxNQUFNLENBQUMsMEJBQVAsR0FBa0MsVUFBUyxJQUFULEVBQWUsZUFBZixFQUNsQztBQUNJLElBQUEsTUFBTSxDQUFDLHFCQUFQLENBQTZCLElBQUksQ0FBQyxFQUFsQyxFQUFxQyxlQUFyQztBQUNBLFFBQUksTUFBTSxDQUFDLGNBQVAsSUFBdUIsU0FBM0IsRUFBc0MsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsTUFBdEIsR0FBNkIsQ0FBN0I7QUFDdEMsUUFBSSxNQUFNLENBQUMsY0FBUCxJQUF1QixTQUEzQixFQUFzQyxNQUFNLENBQUMsY0FBUCxDQUFzQixNQUF0QixHQUE2QixDQUE3QjtBQUN6QyxHQUxEOztBQU9BLEVBQUEsTUFBTSxDQUFDLHFCQUFQLEdBQTZCLFVBQVMsTUFBVCxFQUFnQixlQUFoQixFQUFnQztBQUV4RCxJQUFBLG9CQUFvQixDQUFDLDZCQUFyQixDQUFtRCxNQUFuRCxFQUEwRCxNQUExRCxFQUFrRSxJQUFsRSxDQUNPLFVBQVUsSUFBVixFQUFnQjtBQUNaLE1BQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsZUFBdEIsSUFBeUMsSUFBSSxDQUFDLElBQTlDO0FBQ0EsVUFBSSxlQUFlLElBQUUsVUFBckIsRUFBaUMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLENBQTFCLEVBQWpDLEtBQ0ssTUFBTSxDQUFDLGtCQUFQLENBQTBCLENBQTFCO0FBRWIsS0FOSCxFQU1JLFVBQVMsS0FBVCxFQUFlO0FBQ1osTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDSCxLQVJKO0FBU0osR0FYRCxDQXBRdU4sQ0FnUnJOOzs7QUFDQSxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLFVBQVUsSUFBVixFQUFlO0FBRTdCLElBQUEsTUFBTSxDQUFDLGdCQUFQLENBQXdCLFFBQXhCLEdBQWlDLElBQWpDO0FBQ0EsSUFBQSxNQUFNLENBQUMsZ0JBQVAsQ0FBd0IsYUFBeEIsR0FBc0MsSUFBdEM7QUFDQSxJQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXNCLElBQXRCO0FBQ0wsR0FMTDs7QUFPQSxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLFVBQVUsSUFBVixFQUFlO0FBRTdCLElBQUEsTUFBTSxDQUFDLGdCQUFQLENBQXdCLFFBQXhCLEdBQWlDLElBQWpDO0FBQ0EsSUFBQSxNQUFNLENBQUMsZ0JBQVAsQ0FBd0IsYUFBeEIsR0FBc0MsSUFBdEM7QUFDQSxJQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXNCLElBQXRCO0FBRUwsR0FOTCxDQXhScU4sQ0FnU3JOOzs7QUFDQSxFQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUF5QixVQUFVLElBQVYsRUFBZTtBQUM5QixJQUFBLG9CQUFvQixDQUFDLGlCQUFyQixDQUF1QyxJQUFJLENBQUMsRUFBNUMsRUFBK0MsSUFBL0MsRUFBcUQsSUFBckQsQ0FBMEQsVUFBUyxJQUFULEVBQWU7QUFDOUQsTUFBQSxNQUFNLENBQUMsZUFBUCxHQUF5QixJQUFJLENBQUMsSUFBOUI7QUFDRSxLQUZiLEVBRWMsVUFBUyxLQUFULEVBQWU7QUFDbkIsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDVCxLQUpEO0FBS1QsR0FORDs7QUFRQSxFQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQixVQUFVLElBQVYsRUFBZTtBQUNuQyxJQUFBLG9CQUFvQixDQUFDLGlCQUFyQixDQUF1QyxJQUFJLENBQUMsRUFBNUMsRUFBK0MsSUFBL0MsRUFBcUQsSUFBckQsQ0FBMEQsVUFBUyxJQUFULEVBQWU7QUFDNUQsTUFBQSxNQUFNLENBQUMsZUFBUCxHQUF5QixJQUFJLENBQUMsSUFBOUI7QUFDSSxLQUZqQixFQUVrQixVQUFTLEtBQVQsRUFBZTtBQUNuQixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNELEtBSmI7QUFLSixHQU5GLENBelNxTixDQWlUek47OztBQUlBLE1BQUksSUFBSSxHQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDO0FBQ0EsTUFBSSxNQUFNLENBQUMsYUFBUCxLQUF1QixTQUEzQixFQUNVLE1BQU0sQ0FBQyxhQUFQLEdBQXFCO0FBQUUsSUFBQSxRQUFRLEVBQUUsRUFBWjtBQUFnQixJQUFBLFFBQVEsRUFBRTtBQUExQixHQUFyQjtBQUNWLE1BQUksTUFBTSxDQUFDLGdCQUFQLEtBQTBCLFNBQTlCLEVBQ00sTUFBTSxDQUFDLGdCQUFQLEdBQXdCO0FBQUUsSUFBQSxNQUFNLEVBQUM7QUFBVCxHQUF4QjtBQUVOLEVBQUEsTUFBTSxDQUFDLFdBQVAsR0EzVHlOLENBMlRwTTs7QUFHckIsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFxQixFQUFyQjtBQUNBLEVBQUEsWUFBWSxDQUFDLGNBQWIsQ0FBNEIsS0FBNUIsRUFBa0MsSUFBbEMsRUFBd0MsSUFBeEMsQ0FBNkMsVUFBVSxJQUFWLEVBQWdCO0FBQ3RELElBQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsSUFBSSxDQUFDLElBQXZCO0FBQ0EsSUFBQSxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQVYsQ0FBbUIsVUFBQyxJQUFELEVBQU0sS0FBTjtBQUFBLGFBQ2YsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsSUFBSSxDQUFDLEtBQXpCLElBQWtDLElBQUksQ0FBQyxFQUR4QjtBQUFBLEtBQW5CO0FBSU4sR0FORDs7QUFPQSxFQUFBLE1BQU0sQ0FBQyxvQkFBUCxHQUE4QixZQUM5QjtBQUNVLFFBQUksVUFBVSxHQUFDLEVBQWY7QUFDQSxRQUFJLE1BQU0sQ0FBQyxNQUFQLENBQWMsVUFBZCxJQUEwQixFQUExQixJQUFnQyxNQUFNLENBQUMsTUFBUCxDQUFjLFVBQWQsSUFBMEIsU0FBOUQsRUFBeUUsVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFQLENBQWMsVUFBM0IsQ0FBekUsS0FDSyxVQUFVLEdBQUcsaUJBQWI7QUFFTCxJQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsVUFBVjtBQUNULEdBUEQsQ0F0VXlOLENBOFV6Tjs7O0FBRUEsRUFBQSxNQUFNLENBQUMsNEJBQVAsR0FBb0MsY0FBcEM7QUFDQSxFQUFBLE1BQU0sQ0FBQyw4QkFBUCxHQUFzQyxjQUF0QyxDQWpWeU4sQ0FrVjFOOztBQUNBLEVBQUEsTUFBTSxDQUFDLGNBQVA7QUFFQSxDLENBR0o7OztBQUVNLFNBQVMsZUFBVCxDQUEwQixNQUExQixFQUFrQyxVQUFsQyxFQUE4QyxTQUE5QyxFQUF5RCxRQUF6RCxFQUFrRSxxQkFBbEUsRUFBd0YsaUJBQXhGLEVBQTBHLGdCQUExRyxFQUEySCxlQUEzSCxFQUEySSxvQkFBM0ksRUFBZ0ssWUFBaEssRUFBNkssV0FBN0ssRUFBeUwsWUFBekwsRUFBdU07QUFFeE0sRUFBQSxNQUFNLENBQUMsSUFBUCxHQUFZLGlCQUFaO0FBQ0EsRUFBQSxNQUFNLENBQUMsYUFBUCxHQUFxQixFQUFyQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBZ0IsRUFBaEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxvQkFBUCxHQUE0QixZQUFZLENBQUMsYUFBekM7QUFDQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLEtBQXRCO0FBQ0gsRUFBQSxNQUFNLENBQUMsU0FBUCxHQUFtQixVQUFuQjs7QUFFQSxFQUFBLE1BQU0sQ0FBQyxNQUFQLEdBQWdCLFVBQVUsWUFBVixFQUF3QjtBQUN2QyxZQUFPLFlBQVA7QUFDQyxXQUFLLE1BQUw7QUFDRCxlQUFPLElBQVAsQ0FEQyxDQUNXOztBQUNaOztBQUNDLFdBQUssYUFBTDtBQUFvQjtBQUNyQixZQUFLLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLENBQXlCLE9BQXpCLENBQWlDLElBQWpDLEdBQXNDLENBQTNDLEVBQThDLE9BQU8sSUFBUDtBQUM5Qzs7QUFDQyxXQUFLLFNBQUw7QUFDRCxZQUFNLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLENBQXlCLE9BQXpCLENBQWlDLElBQWpDLEdBQXNDLENBQXRDLElBQ0gsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsT0FBakIsQ0FBeUIsT0FBekIsQ0FBaUMsV0FBakMsR0FBNkMsQ0FEaEQsRUFDb0QsT0FBTyxJQUFQO0FBQ3BEOztBQUNDO0FBQ0QsWUFBTSxNQUFNLENBQUMsU0FBUCxDQUFpQixPQUFqQixDQUF5QixPQUF6QixDQUFpQyxPQUFqQyxHQUF5QyxDQUF6QyxJQUNKLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLENBQXlCLE9BQXpCLENBQWlDLElBQWpDLEdBQXNDLENBRGxDLElBRUosTUFBTSxDQUFDLFNBQVAsQ0FBaUIsT0FBakIsQ0FBeUIsT0FBekIsQ0FBaUMsV0FBakMsR0FBNkMsQ0FGL0MsRUFHRSxPQUFPLElBQVA7QUFmRjs7QUFrQkEsV0FBTyxLQUFQO0FBQ0EsR0FwQkQ7O0FBc0JLLE1BQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDO0FBQ0EsRUFBQSxNQUFNLENBQUMsb0JBQVAsR0FBNEI7QUFBQyxJQUFBLEtBQUssRUFBQyxLQUFQO0FBQWMsSUFBQSxRQUFRLEVBQUM7QUFBdkIsR0FBNUI7QUFFQSxFQUFBLE1BQU0sQ0FBQyxLQUFQLEdBQWUsZUFBZjtBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsV0FBdEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGFBQXBCO0FBQ0EsRUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLGdCQUFiOztBQUVBLEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsVUFBVSxPQUFWLEVBQ3pCO0FBQ0UsUUFBSSxPQUFKLEVBQWE7QUFDVixNQUFBLG9CQUFvQixDQUFDLGdCQUFyQixDQUFzQyxNQUFNLENBQUMsUUFBN0MsRUFDQSxJQURBLENBRUcsVUFBUyxJQUFULEVBQWU7QUFDWCxZQUFJLElBQUksQ0FBQyxNQUFMLEtBQWMsR0FBZCxJQUFzQixJQUFJLENBQUMsTUFBTCxLQUFjLEdBQXhDLEVBQThDO0FBQzFDLFVBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsNEJBQTVCLEVBQXlELFNBQXpEO0FBQ0EsVUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixJQUF0QjtBQUNIO0FBQ0osT0FQSixFQVFHLFVBQVMsS0FBVCxFQUFlO0FBQ1gsUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDQSxRQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXdCLEtBQXhCO0FBQ1IsT0FYQztBQVlGLEtBYkQsTUFhTztBQUNMLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsNEJBQTVCLEVBQXlELFNBQXpEO0FBQ0Q7QUFDRixHQWxCRDs7QUFzQkEsRUFBQSxvQkFBb0IsQ0FBQyxpQkFBckIsR0FBeUMsSUFBekMsQ0FBOEMsVUFBVSxJQUFWLEVBQWdCO0FBQ3RDLElBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQTBCLElBQUksQ0FBQyxJQUEvQjtBQUNBLFFBQUksTUFBTSxDQUFDLGtCQUFQLElBQTJCLFNBQS9CLEVBQTBDLE1BQU0sQ0FBQyxlQUFQO0FBQ2pFLEdBSEQ7QUFNQSxFQUFBLFlBQVksQ0FBQyxjQUFiLENBQTRCLFlBQTVCLEVBQXlDLElBQXpDLEVBQ0ssSUFETCxDQUNVLFVBQVUsSUFBVixFQUFnQjtBQUNiLElBQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTRCLElBQUksQ0FBQyxJQUFqQyxDQURhLENBRWI7O0FBQ0EsUUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLGtCQUFQLENBQTBCLEdBQTFCLENBQThCLFVBQVMsQ0FBVCxFQUFZO0FBQUUsYUFBTyxDQUFDLENBQUMsS0FBVDtBQUFpQixLQUE3RCxFQUErRCxPQUEvRCxDQUF1RSxHQUF2RSxDQUFWOztBQUNBLFFBQUksR0FBRyxJQUFFLENBQVQsRUFBWTtBQUVQLE1BQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBaEIsR0FBeUIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLEdBQTFCLENBQXpCO0FBQ0Y7O0FBQ0gsUUFBSSxNQUFNLENBQUMsZ0JBQVAsSUFBeUIsU0FBN0IsRUFBd0MsTUFBTSxDQUFDLGVBQVA7QUFDakQsR0FWSjtBQVlDLEVBQUEsWUFBWSxDQUFDLGNBQWIsQ0FBNEIsa0JBQTVCLEVBQStDLElBQS9DLEVBQXFELElBQXJELENBQTBELFVBQVUsSUFBVixFQUFnQjtBQUNuRCxJQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUEyQixJQUFJLENBQUMsSUFBaEM7QUFDbkIsR0FGSjs7QUFNRCxFQUFBLE1BQU0sQ0FBQyxvQkFBUCxHQUE4QixVQUFVLFlBQVYsRUFBd0I7QUFFbEQsUUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLGdCQUFQLENBQXdCLEdBQXhCLENBQTRCLFVBQVMsQ0FBVCxFQUFZO0FBQUUsYUFBTyxDQUFDLENBQUMsWUFBVDtBQUF3QixLQUFsRSxFQUFvRSxPQUFwRSxDQUE0RSxZQUE1RSxDQUFWOztBQUNBLFFBQUksR0FBRyxJQUFFLENBQVQsRUFBWTtBQUNWO0FBQ0EsTUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixZQUFoQixHQUE4QixNQUFNLENBQUMsZ0JBQVAsQ0FBd0IsR0FBeEIsQ0FBOUI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLEdBQTJCLEVBQTNCO0FBQ0EsTUFBQSxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsS0FBNUIsR0FBa0MsSUFBbEM7QUFHQSxVQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFlBQWhCLENBQTZCLFlBQTdCLElBQTZDLE1BQWpELEVBQ00sTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsTUFBM0IsR0FBbUMsSUFBbkMsQ0FSSSxDQVFvQzs7QUFFOUMsVUFBSSxZQUFZLElBQUksU0FBcEIsRUFDSSxNQUFNLENBQUMsZUFBUCxHQUF5QixJQUF6QixDQURKLENBQ2tDO0FBRGxDLFdBRU87QUFDaEI7QUFDRSxRQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLElBQXpCLENBRmMsQ0FFZ0I7O0FBQzlCLFFBQUEsTUFBTSxDQUFDLHVCQUFQLENBQStCLFVBQS9CLEVBSGMsQ0FHNkI7QUFDNUM7QUFDTztBQUVKLEdBdEJEOztBQTBCQyxFQUFBLE1BQU0sQ0FBQyx1QkFBUCxHQUFpQyxVQUFVLGVBQVYsRUFBMkI7QUFFMUQsSUFBQSxNQUFNLENBQUMsZUFBUCxHQUF5QixlQUF6QjtBQUNBLElBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsZUFBaEIsR0FBa0MsZUFBbEM7O0FBQ0EsUUFBSSxlQUFlLElBQUUsVUFBckIsRUFBaUM7QUFDNUIsTUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixDQUEyQixpQkFBM0IsR0FBK0M7QUFBQyxRQUFBLEVBQUUsRUFBQyxDQUFKO0FBQU0sUUFBQSxJQUFJLEVBQUU7QUFBWixPQUEvQztBQUNKO0FBRUgsR0FSQTs7QUFZRCxNQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLElBQTZCLFNBQTdCLElBQTJDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLElBQTRCLElBQTNFLEVBQ1E7QUFDQyxJQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLEdBQTZCO0FBQUMsTUFBQSxtQkFBbUIsRUFBQztBQUFDLFFBQUEsY0FBYyxFQUFDO0FBQWhCO0FBQXJCLEtBQTdCO0FBQ0EsR0FIVCxNQUlRO0FBQ0csUUFBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixDQUEyQixtQkFBM0IsSUFBa0QsU0FBbEQsSUFBK0QsS0FBSyxJQUFJLEtBQTVFLEVBQW9GO0FBQy9FLE1BQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsbUJBQTNCLEdBQStDO0FBQUUsUUFBQSxjQUFjLEVBQUM7QUFBakIsT0FBL0M7QUFDTCxLQUZBLE1BRU8sTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsbUJBQTNCLENBQStDLGNBQS9DLENBQThELE1BQTlELEdBQXFFLENBQXJFO0FBQ1Q7O0FBR1gsRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQixVQUFVLE9BQVYsRUFBbUI7QUFFbkMsUUFBSSxPQUFKLEVBQWE7QUFDUixNQUFBLE1BQU0sQ0FBQyxlQUFQO0FBQ0gsS0FGRixNQUVRO0FBQ0osTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QiwrQ0FBNUIsRUFBNEUsT0FBNUU7QUFDRjtBQUNKLEdBUEg7O0FBU0csRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixZQUFZO0FBRTlCLFFBQUksQ0FBQyxNQUFNLENBQUMsV0FBWixFQUF5QixNQUFNLENBQUMsUUFBUCxDQUFnQixZQUFoQixHQUErQixDQUFDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFlBQWhEO0FBQzdCLEdBSEE7O0FBT0QsRUFBQSxNQUFNLENBQUMsZUFBUCxHQUF5QixZQUFZO0FBQ3JDO0FBQ0E7QUFDSSxJQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXNCLElBQXRCO0FBQ0EsSUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixlQUFoQixHQUFrQyxpQkFBaUIsQ0FBQyxjQUFsQixDQUFpQyxxQkFBbUIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsSUFBcEUsQ0FBbEM7QUFFQSxJQUFBLG9CQUFvQixDQUFDLGdCQUFyQixDQUFzQyxNQUFNLENBQUMsUUFBN0MsRUFBdUQsSUFBdkQsQ0FBNEQsVUFBUyxJQUFULEVBQWU7QUFFekQsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsR0FBakMsRUFBcUMsU0FBckM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQW1CLElBQW5CO0FBQ0EsTUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixJQUFJLENBQUMsSUFBdkI7QUFFckIsTUFBQSxVQUFVLENBQUMsT0FBWCxDQUFtQixPQUFuQixDQUEyQixNQUFNLENBQUMsUUFBUCxDQUFnQixZQUEzQyxJQUF5RCxVQUFVLENBQUMsT0FBWCxDQUFtQixPQUFuQixDQUE0QixNQUFNLENBQUMsUUFBUCxDQUFnQixZQUE1QyxJQUEwRCxDQUFuSDtBQUNzQixNQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXNCLEtBQXRCO0FBQ0UsS0FSckIsRUFRc0IsVUFBUyxLQUFULEVBQWU7QUFFbkIsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQW1CLEtBQW5CO0FBQ0MsTUFBQSxNQUFNLENBQUMsY0FBUCxHQUFzQixLQUF0QjtBQUNGLEtBYmpCO0FBY0gsR0FwQkQ7O0FBc0JBLEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsWUFDekI7QUFDUSxRQUFJLE1BQU0sQ0FBQyxvQkFBUCxJQUE2QixFQUFqQyxFQUNBO0FBQ1EsTUFBQSxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsS0FBNUIsR0FBa0MsSUFBbEM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixRQUE1QixHQUFxQyxJQUFyQztBQUNBLE1BQUEsTUFBTSxDQUFDLG9CQUFQLENBQTRCLE1BQU0sQ0FBQyxvQkFBbkM7QUFDUDtBQUNSLEdBUkQ7QUFVSDs7QUFJRSxTQUFTLGdCQUFULENBQTJCLE1BQTNCLEVBQW1DLFVBQW5DLEVBQStDLE1BQS9DLEVBQXVELFFBQXZELEVBQWdFLGdCQUFoRSxFQUFpRixlQUFqRixFQUFpRyxvQkFBakcsRUFBc0gsWUFBdEgsRUFBbUksV0FBbkksRUFBZ0o7QUFHL0ksRUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixNQUFNLENBQUMsTUFBUCxDQUFjLEVBQWhDO0FBQ0EsRUFBQSxNQUFNLENBQUMsYUFBUCxHQUFxQixNQUFNLENBQUMsTUFBUCxDQUFjLGFBQW5DO0FBQ0EsRUFBQSxNQUFNLENBQUMsSUFBUCxHQUFZLGtCQUFaO0FBQ0EsRUFBQSxNQUFNLENBQUMsYUFBUCxHQUFxQixFQUFyQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsV0FBdEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGFBQXBCO0FBQ0EsRUFBQSxNQUFNLENBQUMsS0FBUCxHQUFlLGVBQWY7QUFDQSxFQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsZ0JBQWIsR0FWK0ksQ0FZL0k7O0FBQ0EsTUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUM7QUFFQSxFQUFBLFlBQVksQ0FBQyxjQUFiLENBQTRCLFlBQTVCLEVBQXlDLElBQXpDLEVBQStDLElBQS9DLENBQW9ELFVBQVUsSUFBVixFQUFnQjtBQUM1QyxJQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUE0QixJQUFJLENBQUMsSUFBakM7QUFDRixHQUZ0Qjs7QUFJQSxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLFlBQVk7QUFHaEMsSUFBQSxvQkFBb0IsQ0FBQyxpQkFBckIsQ0FBdUMsTUFBTSxDQUFDLFVBQTlDLEVBQTBELElBQTFELENBQStELFVBQVMsSUFBVCxFQUFlO0FBRTdEO0FBQ0MsTUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixJQUFJLENBQUMsSUFBdkI7QUFFRyxLQUxyQixFQUtzQixVQUFTLEtBQVQsRUFBZTtBQUVuQixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNqQixLQVJEO0FBU0gsR0FaRDs7QUFjQSxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLFlBQVk7QUFHakMsSUFBQSxvQkFBb0IsQ0FBQyx1QkFBckIsQ0FBNkMsTUFBTSxDQUFDLFVBQXBELEVBQWdFLElBQWhFLENBQXFFLFVBQVMsSUFBVCxFQUFlO0FBR2xFLE1BQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsSUFBSSxDQUFDLElBQXZCO0FBRUcsS0FMckIsRUFLc0IsVUFBUyxLQUFULEVBQWU7QUFFbkIsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDakIsS0FSRDtBQVNILEdBWkQ7O0FBZUEsRUFBQSxNQUFNLENBQUMsZUFBUCxDQUF1QixNQUFNLENBQUMsVUFBOUI7O0FBR0EsRUFBQSxNQUFNLENBQUMsb0JBQVAsR0FBOEIsWUFDOUI7QUFDUSxRQUFJLFVBQVUsR0FBQyxFQUFmO0FBQ0EsUUFBSSxNQUFNLENBQUMsTUFBUCxDQUFjLFVBQWQsSUFBMEIsRUFBMUIsSUFBZ0MsTUFBTSxDQUFDLE1BQVAsQ0FBYyxVQUFkLElBQTBCLFNBQTlELEVBQXlFLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBUCxDQUFjLFVBQTNCLENBQXpFLEtBQ0ssVUFBVSxHQUFHLGlCQUFiO0FBRUwsSUFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLFVBQVY7QUFDUCxHQVBEO0FBU1A7O0FBR00sU0FBUyxnQkFBVCxDQUEyQixNQUEzQixFQUFtQyxVQUFuQyxFQUErQyxNQUEvQyxFQUF1RCxRQUF2RCxFQUFnRSxnQkFBaEUsRUFBaUYsZUFBakYsRUFBaUcsb0JBQWpHLEVBQXNILFlBQXRILEVBQW1JLFdBQW5JLEVBQWdKO0FBQUE7O0FBRy9JLEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBa0IsTUFBTSxDQUFDLE1BQVAsQ0FBYyxFQUFoQztBQUNBLEVBQUEsTUFBTSxDQUFDLElBQVAsR0FBWSxrQkFBWjtBQUNBLEVBQUEsTUFBTSxDQUFDLGFBQVAsR0FBcUIsRUFBckIsQ0FMK0ksQ0FNako7O0FBQ0UsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixXQUF0QjtBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsYUFBcEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxLQUFQLEdBQWUsZUFBZjtBQUNBLEVBQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxnQkFBYjtBQUVBLEVBQUEsTUFBTSxDQUFDLGNBQVAsNEJBQXdCLE1BQU0sQ0FBQyxNQUFQLENBQWMsVUFBZCxDQUF5QixNQUFqRCwwREFBd0Isc0JBQWlDLGNBQXpEO0FBQ0EsTUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUM7QUFHQSxFQUFBLFlBQVksQ0FBQyxjQUFiLENBQTRCLGNBQTVCLEVBQTJDLElBQTNDLEVBQWlELElBQWpELENBQXNELFVBQVUsSUFBVixFQUFnQjtBQUU5QyxJQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQixJQUFJLENBQUMsSUFBL0I7QUFDRixHQUh0QjtBQUtBLEVBQUEsWUFBWSxDQUFDLGNBQWIsQ0FBNEIsWUFBNUIsRUFBeUMsSUFBekMsRUFBK0MsSUFBL0MsQ0FBb0QsVUFBVSxJQUFWLEVBQWdCO0FBQzVDLElBQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTRCLElBQUksQ0FBQyxJQUFqQztBQUNGLEdBRnRCO0FBR0MsRUFBQSxZQUFZLENBQUMsY0FBYixDQUE0QixRQUE1QixFQUFxQyxJQUFyQyxFQUEyQyxJQUEzQyxDQUFnRCxVQUFVLElBQVYsRUFBZ0I7QUFFekMsSUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBMEIsSUFBSSxDQUFDLElBQS9CO0FBQ0YsR0FIckI7O0FBS0EsRUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixZQUFZO0FBRWpDLElBQUEsb0JBQW9CLENBQUMsaUJBQXJCLENBQXVDLE1BQU0sQ0FBQyxVQUE5QyxFQUEwRCxJQUExRCxDQUErRCxVQUFTLElBQVQsRUFBZTtBQUU3RDtBQUNDLE1BQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsSUFBSSxDQUFDLElBQXZCO0FBRUcsS0FMckIsRUFLc0IsVUFBUyxLQUFULEVBQWU7QUFFbkIsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDRCxLQVJqQjtBQVNILEdBWEE7O0FBYUYsRUFBQSxNQUFNLENBQUMsY0FBUDs7QUFFRSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLFlBQVk7QUFHL0IsUUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFaLEVBQTBCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFlBQWhCLEdBQStCLENBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsWUFBaEQ7QUFDN0IsR0FKQTs7QUFNRCxFQUFBLE1BQU0sQ0FBQyxvQkFBUCxHQUE4QixZQUM5QjtBQUNRLElBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFNLENBQUMsTUFBUCxDQUFjLFVBQWQsQ0FBeUIsS0FBbkMsRUFBeUMsTUFBTSxDQUFDLE1BQVAsQ0FBYyxVQUFkLENBQXlCLE1BQWxFO0FBQ1AsR0FIRDs7QUFNQyxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLFVBQVUsT0FBVixFQUFtQjtBQUUzQyxRQUFJLE9BQUosRUFDQTtBQUNFLE1BQUEsb0JBQW9CLENBQUMsa0JBQXJCLENBQXdDLE1BQU0sQ0FBQyxRQUEvQyxFQUF5RCxJQUF6RCxDQUE4RCxVQUFTLElBQVQsRUFBZTtBQUUxRCxZQUFJLElBQUksQ0FBQyxNQUFMLEtBQWMsR0FBZCxJQUFxQixJQUFJLENBQUMsTUFBTCxLQUFjLEdBQXZDLEVBQ0M7QUFDQSxVQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLDRCQUE1QixFQUF5RCxTQUF6RDtBQUNDO0FBQ0EsT0FOckIsRUFNc0IsVUFBUyxLQUFULEVBQWU7QUFFbkIsUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFFRCxPQVZqQjtBQVlELEtBZEQsTUFlQTtBQUVFLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsNEJBQTVCLEVBQXlELFNBQXpEO0FBQ0Q7QUFDRixHQXJCQTtBQXlCSjs7QUFJRSxTQUFTLHlCQUFULENBQW9DLE1BQXBDLEVBQTRDLFVBQTVDLEVBQXdELFNBQXhELEVBQW1FLFFBQW5FLEVBQTRFLHFCQUE1RSxFQUFrRyxpQkFBbEcsRUFBb0gsZ0JBQXBILEVBQXFJLG9CQUFySSxFQUEwSixjQUExSixFQUF5SyxlQUF6SyxFQUF5TCxtQkFBekwsRUFBNk0sV0FBN00sRUFBeU4sWUFBek4sRUFBc08sTUFBdE8sRUFBOE87QUFBQTs7QUFFalAsRUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixZQUFZLENBQUMsRUFBL0I7QUFDQSxFQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWdCLDJCQUFoQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBaUI7QUFBRSxJQUFBLFlBQVksRUFBRSxFQUFoQjtBQUFvQixJQUFBLFlBQVksRUFBRTtBQUFsQyxHQUFqQjtBQUNBLEVBQUEsTUFBTSxDQUFDLEtBQVAsR0FBZSxlQUFmO0FBQ0EsRUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLGdCQUFiO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixXQUF0QjtBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsYUFBcEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQW1CLENBQW5CO0FBQ0EsRUFBQSxNQUFNLENBQUMsR0FBUCxHQUFhLG1CQUFiO0FBQ0EsRUFBQSxNQUFNLENBQUMsU0FBUCxHQUFpQixFQUFqQjtBQUNILEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0IsVUFBcEIsYUFBb0IsVUFBcEIsOENBQW9CLFVBQVUsQ0FBRSxPQUFoQyx3REFBb0Isb0JBQXFCLFVBQXpDO0FBQ0EsTUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUM7O0FBR0EsRUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixVQUFTLENBQVQsRUFBWTtBQUNuQyxJQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLEdBQThCLElBQTlCO0FBQ0EsR0FGRDs7QUFLQSxFQUFBLE1BQU0sQ0FBQyxPQUFQLEdBQWlCLFlBQVc7QUFDNUI7QUFDQyxRQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQThCLG1CQUE5QixJQUFtRCxLQUF2RCxFQUNFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQThCLHlCQUE5QixHQUF3RCxJQUF4RDtBQUNGLEdBSkQ7O0FBT0csTUFBSSxTQUFTLENBQUMsTUFBVixHQUFtQixVQUFuQixJQUErQixTQUFuQyxFQUE4QztBQUMxQyxRQUFJLFVBQVUsR0FBRyxTQUFTLENBQUMsTUFBVixHQUFtQixVQUFwQztBQUNILEdBRkQsTUFFTztBQUNILFFBQUksSUFBSSxHQUFHLGNBQWMsQ0FBQyxNQUFmLEVBQVgsQ0FERyxDQUNpQztBQUN2Qzs7QUFHRCxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLFlBQ3pCO0FBQ08sSUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsR0FBc0MsVUFBdEM7QUFDSCxHQUhELENBbkNpUCxDQXlDalA7OztBQUNBLEVBQUEsb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLElBQTlDLEVBQW1ELE1BQW5ELEVBQTJELElBQTNELENBQ0YsVUFBUyxJQUFULEVBQWU7QUFDTCxJQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLElBQUksQ0FBQyxJQUF2QjtBQUNBLElBQUEsTUFBTSxDQUFDLGNBQVA7QUFDVCxJQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGVBQWpCLEdBQWlDLElBQWpDO0FBQ00sR0FMTCxFQUtNLFVBQVMsS0FBVCxFQUFlO0FBQ2IsSUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDUCxHQVBELEVBMUNpUCxDQW9EcFA7O0FBQ0csRUFBQSxvQkFBb0IsQ0FBQyx3QkFBckIsQ0FBOEMsSUFBOUMsRUFBbUQsTUFBbkQsRUFBMkQsSUFBM0QsQ0FDSCxVQUFTLElBQVQsRUFBZTtBQUNBLElBQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsSUFBSSxDQUFDLElBQXZCO0FBQ1osSUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixlQUFqQixHQUFpQyxJQUFqQztBQUNLLEdBSkwsRUFJTSxVQUFTLEtBQVQsRUFBZTtBQUNULElBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ2QsR0FORTs7QUFTQSxFQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUE0QixZQUMvQjtBQUVPLElBQUEsb0JBQW9CLENBQUMscUJBQXJCLENBQTJDLE1BQU0sQ0FBQyxVQUFsRCxFQUE4RCxhQUE5RCxFQUE2RSxJQUE3RSxDQUNMLFVBQVUsSUFBVixFQUFnQjtBQUNiLE1BQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTRCLElBQUksQ0FBQyxJQUFqQztBQUNBLE1BQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsMEJBQWpCLEdBQTRDLElBQTVDO0FBQ0YsS0FKSTtBQU1OO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDSyxHQWpCRDs7QUFtQkEsRUFBQSxNQUFNLENBQUMsa0JBQVA7O0FBRUEsRUFBQSxNQUFNLENBQUMsVUFBUCxHQUFvQixVQUFVLElBQVYsRUFBZ0I7QUFBQTs7QUFDaEMsSUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixHQUFnQyxJQUFoQztBQUNBLElBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLEdBQXNDLFNBQXRDO0FBQ0EsSUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixHQUErQixJQUEvQjtBQUNBLElBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsR0FBNkIsS0FBN0I7O0FBQ0EsaUNBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBckIsa0RBQUksc0JBQStCLG1CQUFuQyxFQUF1RDtBQUNuRCxNQUFBLE1BQU0sQ0FBQyxxQkFBUCxDQUE2QixNQUFNLENBQUMsU0FBUCxDQUFpQixZQUE5QyxFQUEyRCxVQUEzRDtBQUNIO0FBQ0osR0FSRDs7QUFXQSxFQUFBLE1BQU0sQ0FBQyxtQkFBUCxHQUE2QixZQUFXO0FBQ3hDO0FBQ1EsSUFBQSxvQkFBb0IsQ0FBQyxtQkFBckIsQ0FBeUMsTUFBTSxDQUFDLFVBQWhELEVBQTJELE1BQU0sQ0FBQyxRQUFQLENBQWdCLFlBQTNFLEVBQXdGLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE9BQXhHLEVBQWlILElBQWpILENBQ1IsVUFBUyxJQUFULEVBQWU7QUFDZCxNQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUEyQixJQUFJLENBQUMsSUFBaEM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLG1CQUFqQixHQUF1QyxJQUF2QztBQUNBLEtBSk8sRUFJTixVQUFTLEtBQVQsRUFBZTtBQUNoQixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNRLEtBTkQ7QUFPUCxHQVREOztBQVlBLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsWUFBVztBQUNqQztBQUFBOztBQUNRLElBQUEsTUFBTSxDQUFDLGFBQVAsR0FBcUIsSUFBckI7QUFDQSxRQUFJLFNBQVMsR0FBRyxDQUFDO0FBQUMsTUFBQSxHQUFHLEVBQUMsTUFBTSxDQUFDLFVBQVo7QUFBdUIsTUFBQSxXQUFXLEVBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsWUFBbkQ7QUFBZ0UsTUFBQSxPQUFPLDJCQUFHLE1BQU0sQ0FBQyxLQUFQLENBQWEsbUJBQWIsQ0FBaUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsR0FBakQsQ0FBSCwwREFBRyxzQkFBdUQ7QUFBakksS0FBRCxDQUFoQjtBQUNBLElBQUEsb0JBQW9CLENBQUMsWUFBckIsQ0FBa0MsU0FBbEMsRUFBNkMsSUFBN0MsQ0FBa0QsVUFBUyxJQUFULEVBQWU7QUFBQTs7QUFFN0QsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLEdBQXRDLEVBQTBDLElBQUksQ0FBQyxJQUFMLENBQVUsUUFBcEQ7QUFDQSxNQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXFCLEtBQXJCO0FBQ0EsVUFBSSxNQUFNLENBQUMsaUJBQVAsSUFBMEIsU0FBOUIsRUFBeUMsTUFBTSxDQUFDLGlCQUFQLEdBQXlCLEVBQXpCO0FBQ3pDLE1BQUEsTUFBTSxDQUFDLGlCQUFQLENBQXlCLFNBQXpCLEdBQXFDLElBQXJDLGFBQXFDLElBQXJDLHFDQUFxQyxJQUFJLENBQUUsSUFBM0MsK0NBQXFDLFdBQVksU0FBakQ7QUFDQSxNQUFBLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixXQUF6QixHQUF1QyxJQUF2QyxhQUF1QyxJQUF2QyxzQ0FBdUMsSUFBSSxDQUFFLElBQTdDLGdEQUF1QyxZQUFZLFdBQW5EO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsT0FBekIsR0FBb0MsSUFBcEMsYUFBb0MsSUFBcEMsc0NBQW9DLElBQUksQ0FBRSxJQUExQyxnREFBb0MsWUFBWSxPQUFoRDtBQUNBLE1BQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxtQkFBYixDQUFpQyxNQUFNLENBQUMsUUFBUCxDQUFnQixHQUFqRCxFQUFzRCxPQUF0RCxHQUFnRSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsT0FBekY7QUFDQSxNQUFBLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixnQkFBekIsR0FBNkMsSUFBN0MsYUFBNkMsSUFBN0Msc0NBQTZDLElBQUksQ0FBRSxJQUFuRCxnREFBNkMsWUFBWSxnQkFBekQ7QUFDQSxNQUFBLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixRQUF6QixHQUFxQyxJQUFyQyxhQUFxQyxJQUFyQyxzQ0FBcUMsSUFBSSxDQUFFLElBQTNDLGdEQUFxQyxZQUFZLFFBQWpEO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsZUFBekIsR0FBMkMsSUFBM0MsYUFBMkMsSUFBM0Msc0NBQTJDLElBQUksQ0FBRSxJQUFqRCxnREFBMkMsWUFBWSxlQUF2RDtBQUNBLE1BQUEsTUFBTSxDQUFDLGlCQUFQLENBQXlCLFNBQXpCLEdBQXFDLElBQXJDLGFBQXFDLElBQXJDLHNDQUFxQyxJQUFJLENBQUUsSUFBM0MsZ0RBQXFDLFlBQVksU0FBakQ7QUFDWixNQUFBLENBQUMsQ0FBQyxXQUFELENBQUQsQ0FBZSxLQUFmLENBQXFCLE1BQXJCO0FBQ0EsTUFBQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsTUFBTSxDQUFDLFFBQWpDO0FBRVMsS0FoQkQsRUFnQkUsVUFBUyxLQUFULEVBQWU7QUFDYixNQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXFCLEtBQXJCO0FBQ0EsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDSCxLQW5CRDtBQW9CUCxHQXhCRDs7QUEwQkEsRUFBQSxNQUFNLENBQUMsaUJBQVAsR0FBMkIsRUFBM0I7QUFDQSxFQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGtCQUFqQixHQUFzQyxLQUF0Qzs7QUFHQSxFQUFBLE1BQU0sQ0FBQyxzQkFBUCxHQUFnQyxVQUFVLFFBQVYsRUFBbUIsS0FBbkIsRUFBMEI7QUFFbEQsUUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFQLENBQXlCLEdBQXpCLENBQTZCLFVBQVMsQ0FBVCxFQUFZO0FBQUUsYUFBTyxDQUFDLENBQUMsRUFBVDtBQUFjLEtBQXpELEVBQTJELE9BQTNELENBQW1FLFFBQVEsQ0FBQyxFQUE1RSxDQUFWOztBQUNBLFFBQUksQ0FBQyxLQUFMLEVBQWE7QUFDVCxVQUFJLEdBQUcsSUFBRSxDQUFULEVBQVk7QUFDUixRQUFBLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixNQUF6QixDQUFnQyxHQUFoQyxFQUFvQyxDQUFwQztBQUNBLFFBQUEsUUFBUSxDQUFDLFFBQVQsR0FBb0IsS0FBcEI7QUFDSCxPQUhELE1BR1E7QUFDQSxRQUFBLFFBQVEsQ0FBQyxRQUFULEdBQW9CLElBQXBCO0FBQ0EsUUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsSUFBekIsQ0FBOEIsUUFBOUI7QUFDUDtBQUNKLEtBUkQsTUFRTztBQUNILE1BQUEsUUFBUSxDQUFDLFFBQVQsR0FBb0IsQ0FBQyxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBdEM7O0FBQ0EsVUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGtCQUF0QixFQUEwQztBQUN4QyxZQUFJLEdBQUcsR0FBQyxDQUFSLEVBQVcsTUFBTSxDQUFDLGlCQUFQLENBQXlCLElBQXpCLENBQThCLFFBQTlCO0FBQ1osT0FGRCxNQUlYLElBQUksR0FBRyxJQUFFLENBQVQsRUFBWSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsTUFBekIsQ0FBZ0MsR0FBaEMsRUFBb0MsQ0FBcEM7QUFDSjtBQUVKLEdBcEJMOztBQXNCSyxFQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUEyQixVQUFVLFFBQVYsRUFDakM7QUFFUSxTQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsTUFBbEMsRUFBeUMsQ0FBQyxFQUExQyxFQUE2QztBQUNwRCxVQUFJLE1BQU0sQ0FBQyxXQUFQLENBQW1CLENBQW5CLEVBQXNCLFFBQXRCLElBQWdDLFFBQXBDLEVBQ0MsTUFBTSxDQUFDLHNCQUFQLENBQThCLE1BQU0sQ0FBQyxXQUFQLENBQW1CLENBQW5CLENBQTlCLEVBQW9ELElBQXBEO0FBRU87QUFFSCxHQVRBOztBQVlELEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0IsVUFBVSxJQUFWLEVBQWdCO0FBQUE7O0FBRWhDLElBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsR0FBZ0MsSUFBaEM7QUFDQSxJQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGlCQUFqQixHQUFxQyxLQUFyQzs7QUFDQSxrQ0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFyQixtREFBSSx1QkFBK0IsbUJBQW5DLEVBQ0E7QUFDSSxNQUFBLE1BQU0sQ0FBQyxxQkFBUCxDQUE2QixNQUFNLENBQUMsU0FBUCxDQUFpQixZQUE5QyxFQUEyRCxNQUEzRDtBQUNIO0FBR0osR0FWRDs7QUFZTyxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLFVBQVUsSUFBVixFQUFnQjtBQUFBOztBQUUzQyxJQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLEdBQTRCLElBQTVCO0FBQ0EsSUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixHQUFrQyxLQUFsQzs7QUFDQSxpQ0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFyQixrREFBSSxzQkFBMkIsbUJBQS9CLEVBQ0E7QUFDSSxNQUFBLE1BQU0sQ0FBQyxxQkFBUCxDQUE2QixNQUFNLENBQUMsU0FBUCxDQUFpQixRQUE5QyxFQUF1RCxNQUF2RDtBQUNIO0FBR0osR0FWTTs7QUFXTixFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLFlBQVk7QUFFakMsSUFBQSxvQkFBb0IsQ0FBQyxpQkFBckIsQ0FBdUMsTUFBTSxDQUFDLFVBQTlDLEVBQTBELElBQTFELENBQStELFVBQVMsSUFBVCxFQUFlO0FBRTdEO0FBQ0MsTUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixJQUFJLENBQUMsSUFBdkI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLHFCQUFoQixHQUF3QyxJQUF4QztBQUNyQixNQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHFCQUFqQixHQUF1QyxJQUF2QztBQUVxQixNQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGdCQUFoQixHQUFtQyxpQkFBbkM7QUFDQSxVQUFJLElBQUksR0FBRyxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixFQUEyQixNQUFNLENBQUMsUUFBbEMsQ0FBWDtBQUNBLE1BQUEsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsSUFBbEI7QUFDQSxVQUFJLFdBQVcsR0FBRyxNQUFNLENBQUMsUUFBUCxDQUFnQixjQUFoQixFQUErQixNQUFNLENBQUMsUUFBdEMsQ0FBbEI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxVQUFQLENBQWtCLFdBQWxCO0FBQ0EsVUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsV0FBaEIsRUFBNEIsTUFBTSxDQUFDLFFBQW5DLENBQWY7QUFDQSxNQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFFBQXRCO0FBQ0EsTUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLHNCQUFiLENBQW9DLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEdBQXBELEVBQXdELE1BQU0sQ0FBQyxRQUEvRDtBQUNBLE1BQUEsTUFBTSxDQUFDLG1CQUFQO0FBQ0csS0FoQnJCLEVBZ0JzQixVQUFTLEtBQVQsRUFBZTtBQUVuQixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNELEtBbkJqQjtBQW9CSCxHQXRCQTs7QUF5QkQsRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixVQUFTLFNBQVQsRUFBbUIsWUFBbkIsRUFDbEI7QUFDUSxRQUFJLFNBQUosRUFBYyxNQUFkOztBQUNBLFNBQUssSUFBSSxDQUFDLEdBQUMsQ0FBWCxFQUFhLENBQUMsOEJBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsZ0JBQWpCLDJEQUFDLHVCQUFrQyxNQUFuQyxDQUFkLEVBQXdELENBQUMsRUFBekQsRUFDQTtBQUFBOztBQUNRLFVBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsZ0JBQWhCLENBQWlDLENBQWpDLEVBQW9DLFFBQXBDLElBQThDLFNBQWxELEVBQ0k7QUFDSSxRQUFBLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUCxDQUFnQixnQkFBaEIsQ0FBaUMsQ0FBakMsQ0FBVDtBQUNBLFFBQUEsU0FBUyxHQUFDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGdCQUFoQixDQUFpQyxDQUFqQyxFQUFvQyxTQUE5QztBQUVIO0FBQ1o7O0FBQ0QsUUFBSSxHQUFHLEdBQUcsWUFBWSxDQUFDLEdBQWIsQ0FBaUIsVUFBUyxDQUFULEVBQVk7QUFBRSxhQUFPLENBQUMsQ0FBQyxFQUFUO0FBQWMsS0FBN0MsRUFBK0MsT0FBL0MsQ0FBdUQsU0FBdkQsQ0FBVjtBQUVBLFFBQUksR0FBRyxJQUFFLENBQVQsRUFBWSx1Q0FBWSxNQUFaLEdBQXVCLFlBQVksQ0FBQyxHQUFELENBQW5DLEVBQVosS0FDSyxPQUFPLElBQVA7QUFFWixHQWpCRDs7QUFtQk4sRUFBQSxNQUFNLENBQUMsT0FBUCxHQUFpQixZQUNqQjtBQUNDLElBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSwwQkFBVixFQUFxQztBQUFDLE1BQUEsYUFBYSxFQUFDLE1BQWY7QUFBc0IsTUFBQSxXQUFXLEVBQUM7QUFBQyxjQUFLLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEdBQXRCO0FBQTBCLGdCQUFPO0FBQWpDO0FBQWxDLEtBQXJDO0FBQ0EsR0FIRDs7QUFNTSxFQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXVCLFVBQVMsU0FBVCxFQUN2QjtBQUNJLFNBQUssSUFBSSxDQUFDLEdBQUMsQ0FBWCxFQUFhLENBQUMsR0FBQyxNQUFNLENBQUMsUUFBUCxDQUFnQixnQkFBaEIsQ0FBaUMsTUFBaEQsRUFBdUQsQ0FBQyxFQUF4RCxFQUE2RDtBQUNqRCxVQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGdCQUFoQixDQUFpQyxDQUFqQyxFQUFvQyxRQUFwQyxJQUE4QyxTQUFsRCxFQUE2RCxPQUFPLENBQVA7QUFDeEU7O0FBQ0QsV0FBTyxDQUFDLENBQVI7QUFDSCxHQU5EOztBQVFOLEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0IsVUFBVSxTQUFWLEVBQXFCLFdBQXJCLEVBQ2Q7QUFDSSxTQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsV0FBVyxDQUFDLE1BQTNCLEVBQWtDLENBQUMsRUFBbkMsRUFBdUM7QUFBQTs7QUFDM0IsVUFBSSxXQUFXLENBQUMsQ0FBRCxDQUFYLENBQWUsUUFBZixJQUF5QixTQUE3QixFQUF3Qyx5QkFBTyxXQUFXLENBQUMsQ0FBRCxDQUFsQixtREFBTyxlQUFnQixFQUF2QjtBQUNuRDs7QUFDRCxXQUFPLElBQVA7QUFDSCxHQU5QOztBQVNJLEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsVUFBVSxXQUFWLEVBQzVCO0FBQUE7O0FBQ0QsUUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsVUFBbEIsRUFBOEIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsZ0JBQTlDLENBQWY7QUFDQSxRQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsVUFBUCxDQUFrQixjQUFsQixFQUFrQyxNQUFNLENBQUMsUUFBUCxDQUFnQixnQkFBbEQsQ0FBZjtBQUVBLElBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsNkJBQWdDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpELDJFQUFpRTtBQUFFLE1BQUEsRUFBRSxFQUFFO0FBQU4sS0FBakU7QUFDQSxJQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLDZCQUFnQyxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqRCwyRUFBaUU7QUFBRSxNQUFBLEVBQUUsRUFBRTtBQUFOLEtBQWpFO0FBRU0sSUFBQSxNQUFNLENBQUMsTUFBUCxHQUFnQixFQUFoQjtBQUNBLFFBQUksNEJBQUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBbEIsbURBQUMsdUJBQStCLG1CQUFoQyxDQUFKLEVBQXlELE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQThCLG1CQUE5QixHQUFvRCxLQUFwRDtBQUN6RCxRQUFJLDRCQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWxCLG1EQUFDLHVCQUErQixtQkFBaEMsQ0FBSixFQUF5RCxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixtQkFBOUIsR0FBb0QsS0FBcEQ7QUFDekQsUUFBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixFQUFsQyxFQUNRLE1BQU0sQ0FBQyxNQUFQLENBQWMsSUFBZCxDQUFtQjtBQUFDLFlBQUssUUFBTjtBQUFlLG1CQUFZLE1BQU0sQ0FBQyxVQUFsQztBQUE2QyxtQkFBWSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixFQUF2RjtBQUEwRixrQkFBVyxVQUFyRztBQUFnSCx1REFBc0IsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBdkMsMkRBQXNCLHVCQUErQixtQkFBcks7QUFBeUwscURBQW9CLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQXJDLDJEQUFvQix1QkFBK0IseUJBQTVPO0FBQXNRLDJDQUFVLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQTNCLHNGQUFVLHVCQUErQix5QkFBekMsNERBQVUsd0JBQTBEO0FBQTFVLEtBQW5CO0FBRWQsbUNBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBckIsb0RBQUksd0JBQStCLEVBQW5DLEVBQ1UsTUFBTSxDQUFDLE1BQVAsQ0FBYyxJQUFkLENBQW1CO0FBQUMsWUFBSyxRQUFOO0FBQWUsbUJBQVksTUFBTSxDQUFDLFVBQWxDO0FBQTZDLG1CQUFZLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQThCLEVBQXZGO0FBQTBGLGtCQUFXLGNBQXJHO0FBQW9ILHdEQUFzQixNQUFNLENBQUMsU0FBUCxDQUFpQixZQUF2Qyw0REFBc0Isd0JBQStCLG1CQUF6SztBQUE2TCxzREFBb0IsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBckMsNERBQW9CLHdCQUErQix5QkFBaFA7QUFBMFEsNENBQVUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBM0IsdUZBQVUsd0JBQStCLHlCQUF6Qyw0REFBVSx3QkFBMEQ7QUFBOVUsS0FBbkI7QUFFSixrQ0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFyQixtREFBSSx1QkFBMkIsRUFBL0IsRUFDSSxNQUFNLENBQUMsTUFBUCxDQUFjLElBQWQsQ0FBbUI7QUFBQyxZQUFLLFFBQU47QUFBZSxtQkFBWSxNQUFNLENBQUMsVUFBbEM7QUFBNkMsbUJBQVksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIsRUFBbkY7QUFBc0Ysa0JBQVcsV0FBakc7QUFBNkcsdURBQXNCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQXZDLDJEQUFzQix1QkFBMkIsbUJBQTlKO0FBQWtMLHFEQUFvQixNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFyQywyREFBb0IsdUJBQTJCLHlCQUFqTztBQUEyUCwyQ0FBVSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUEzQixxRkFBVSx1QkFBMkIseUJBQXJDLDJEQUFVLHVCQUFzRDtBQUEzVCxLQUFuQjtBQUdKLFFBQUksUUFBUSxHQUFHO0FBQUMsTUFBQSxLQUFLLEVBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsR0FBdkI7QUFBMkIsTUFBQSxPQUFPLEVBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBbkQ7QUFBOEQsTUFBQSxJQUFJLEVBQUMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBcEY7QUFBbUcsTUFBQSxNQUFNLEVBQUMsTUFBTSxDQUFDO0FBQWpILEtBQWY7O0FBQ0EsUUFBSSxXQUFKLEVBQ0E7QUFDSSxVQUFJLE1BQU0sQ0FBQyxNQUFQLENBQWMsTUFBbEIsRUFBeUI7QUFDckIsUUFBQSxNQUFNLENBQUMsU0FBUCxHQUFtQixJQUFuQjtBQUNBLFFBQUEsb0JBQW9CLENBQUMsZUFBckIsQ0FBcUMsUUFBckMsRUFBK0MsSUFBL0MsQ0FDWCxVQUFTLElBQVQsRUFBZTtBQUNkLFVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBbUIsS0FBbkI7QUFDQSxVQUFBLENBQUMsQ0FBQyxlQUFELENBQUQsQ0FBbUIsS0FBbkIsQ0FBeUIsTUFBekI7QUFDQSxVQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsR0FBdEMsRUFBMEMsU0FBMUM7QUFFQSxVQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsbUJBQWIsQ0FBaUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsR0FBakQsSUFBd0QsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUFsRTtBQUNBLFVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBZ0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUExQjtBQUNBLFNBUlUsRUFTWCxVQUFTLEtBQVQsRUFBZTtBQUNkLFVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBbUIsS0FBbkI7QUFDQSxVQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNBLFNBWlU7QUFhSCxPQWZELE1BZU87QUFDSCxRQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLHlEQUE1QixFQUFzRixPQUF0RjtBQUNBLFFBQUEsTUFBTSxDQUFDLFNBQVAsR0FBbUIsS0FBbkI7QUFDSDtBQUNKLEtBckJELE1BcUJPLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLCtCQUE1QixFQUE0RCxPQUE1RDtBQUVSLEdBN0NEOztBQWdESCxFQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQW9CLFlBQ2hCO0FBQ0ksSUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBMEIsSUFBMUI7QUFFQyxJQUFBLG9CQUFvQixDQUFDLHFCQUFyQixDQUEyQyxNQUFNLENBQUMsUUFBUCxDQUFnQixHQUEzRCxFQUNLLElBREwsQ0FDVSxVQUFTLElBQVQsRUFBZTtBQUNqQixVQUFJLElBQUksQ0FBQyxNQUFMLElBQWEsR0FBakIsRUFBc0I7QUFDbEIsUUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixHQUE2QixJQUFJLENBQUMsSUFBbEM7QUFDQSxRQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFNBQWhCLEdBQTBCLEtBQTFCO0FBQ0EsUUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLHNCQUFiLENBQW9DLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEdBQXBELEVBQXdELE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQXhFO0FBQ0gsT0FKRCxNQUlPLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFqQyxFQUFzQyxPQUF0Qzs7QUFFdEIsTUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBMEIsS0FBMUI7QUFDZSxNQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLEtBQWxCO0FBRUEsS0FYUixFQVdTLFVBQVMsS0FBVCxFQUFlO0FBQ0YsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUEwQixLQUExQjtBQUVKLEtBZmxCO0FBaUJKLEdBckJMOztBQXVCQyxFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQW1CLFVBQVUsTUFBVixFQUFrQjtBQUM3QixJQUFBLENBQUMsQ0FBQyxlQUFELENBQUQsQ0FBbUIsS0FBbkIsQ0FBeUIsTUFBekI7QUFDQSxJQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQW1CLE1BQW5CO0FBQ0EsSUFBQSxNQUFNLENBQUMsaUJBQVAsR0FBMkIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBM0M7QUFFUCxHQUxEOztBQVFILEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsVUFBVSxNQUFWLEVBQStCO0FBQUEsUUFBYixPQUFhLHVFQUFKLEVBQUk7QUFDcEQ7QUFDVSxJQUFBLENBQUMsQ0FBQyxXQUFELENBQUQsQ0FBZSxLQUFmLENBQXFCLE1BQXJCO0FBQ1QsUUFBSSxPQUFKLEVBQWEsTUFBTSxDQUFDLEtBQVAsR0FBZTtBQUFDLE1BQUEsUUFBUSxFQUFFO0FBQVgsS0FBZjtBQUNKLElBQUEsTUFBTSxDQUFDLFdBQVAsR0FBbUIsTUFBbkI7QUFDVCxJQUFBLE1BQU0sQ0FBQyxnQkFBUDtBQUNFLEdBTko7O0FBU0EsRUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsVUFBVSxPQUFWLEVBQW1CO0FBQ3BDLElBQUEsQ0FBQyxDQUFDLGlCQUFELENBQUQsQ0FBcUIsS0FBckIsQ0FBMkIsTUFBM0I7QUFDQSxJQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQW1CLGdCQUFuQjtBQUNULElBQUEsTUFBTSxDQUFDLEtBQVAsR0FBZTtBQUFDLE1BQUEsUUFBUSxFQUFHO0FBQVosS0FBZjtBQUNBLElBQUEsTUFBTSxDQUFDLGdCQUFQO0FBQ0UsR0FMSjs7QUFPQyxFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQW1CLFVBQVUsS0FBVixFQUFpQjtBQUMxQixJQUFBLENBQUMsQ0FBQyxLQUFELENBQUQsQ0FBUyxLQUFULENBQWUsTUFBZjtBQUNQLEdBRkg7O0FBSUUsRUFBQSxNQUFNLENBQUMscUJBQVAsR0FBK0IsVUFBUyxRQUFULEVBQW1CLFdBQW5CLEVBQStCO0FBRWpFLFFBQUksRUFBRSxRQUFGLGFBQUUsUUFBRixlQUFFLFFBQVEsQ0FBRSxFQUFaLENBQUosRUFBb0I7QUFFcEIsSUFBQSxvQkFBb0IsQ0FBQyw2QkFBckIsQ0FBbUQsUUFBUSxDQUFDLEVBQTVELEVBQStELFdBQS9ELEVBQTRFLElBQTVFLENBQ21CLFVBQVUsSUFBVixFQUFnQjtBQUNaLFVBQUksTUFBTSxDQUFDLDhCQUFQLElBQXVDLFNBQTNDLEVBQXNELE1BQU0sQ0FBQyw4QkFBUCxHQUFzQyxFQUF0QztBQUN0RCxNQUFBLE1BQU0sQ0FBQyw4QkFBUCxDQUFzQyxRQUFRLENBQUMsRUFBL0MsSUFBcUQsSUFBSSxDQUFDLElBQTFEO0FBQ0EsTUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQiw0QkFBakIsR0FBOEMsSUFBOUMsQ0FIWSxDQUlaOztBQUNBLFVBQUksUUFBUSxDQUFDLG1CQUFiLEVBQWlDO0FBQzNCLFlBQUksYUFBYSxHQUFHLE1BQU0sQ0FBQyw4QkFBUCxDQUFzQyxRQUFRLENBQUMsRUFBL0MsQ0FBcEI7QUFDQSxRQUFBLGFBQWEsQ0FBQyxPQUFkLENBQXVCLFVBQUMsSUFBRCxFQUFTO0FBQzVCLGNBQUksSUFBSSxDQUFDLE9BQUwsS0FBZ0IsUUFBaEIsYUFBZ0IsUUFBaEIsdUJBQWdCLFFBQVEsQ0FBRSxPQUExQixDQUFKLEVBQ0ksUUFBUSxDQUFDLHlCQUFULEdBQXFDLElBQXJDO0FBQ1AsU0FIRDtBQUlMO0FBQ0osS0FicEIsRUFhcUIsVUFBUyxLQUFULEVBQWU7QUFDYixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNmLEtBZlI7QUFpQkksR0FyQkQ7O0FBdUJBLEVBQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTRCLFlBQVk7QUFFaEMsSUFBQSxNQUFNLENBQUMsYUFBUCxHQUF1QixJQUF2QixDQUZnQyxDQUdoQzs7QUFDQSxJQUFBLG9CQUFvQixDQUFDLGVBQXJCLENBQXFDLE1BQU0sQ0FBQyxVQUE1QyxFQUF1RCxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUF2RSxFQUFrRixpQkFBbEYsRUFBb0csYUFBcEcsRUFDUyxJQURULENBQ2MsVUFBUyxJQUFULEVBQWU7QUFDTCxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxHQUFqQyxFQUFxQyxTQUFyQyxFQURLLENBRUw7O0FBQ0EsTUFBQSxNQUFNLENBQUMsYUFBUCxHQUF1QixLQUF2QjtBQUNmLEtBTFQsRUFLVyxVQUFTLEtBQVQsRUFBZTtBQUNkLE1BQUEsTUFBTSxDQUFDLGFBQVAsR0FBdUIsS0FBdkI7QUFDQSxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNYLEtBUkQ7QUFTTixHQWJGOztBQWVBLEVBQUEsTUFBTSxDQUFDLFdBQVAsR0FBbUIsRUFBbkI7O0FBRUEsRUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBMEIsWUFDN0I7QUFDQztBQUNNLElBQUEsTUFBTSxDQUFDLFdBQVAsR0FBcUIsSUFBckI7QUFDQSxJQUFBLE1BQU0sQ0FBQyxXQUFQLENBQW1CLE1BQW5CLEdBQTBCLENBQTFCO0FBQ0EsSUFBQSxvQkFBb0IsQ0FBQyxrQkFBckIsQ0FBd0MsTUFBTSxDQUFDLFVBQS9DLEVBQTBELE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQTFFLEVBQXNGLElBQXRGLENBQ0osVUFBUyxJQUFULEVBQWU7QUFBQTs7QUFDYSxNQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLEtBQXJCO0FBQ0EsTUFBQSxNQUFNLENBQUMsV0FBUCxrQkFBbUIsSUFBSSxDQUFDLElBQXhCLGdEQUFtQixZQUFXLFFBQTlCO0FBQ0EsTUFBQSxNQUFNLENBQUMsY0FBUCxrQkFBd0IsSUFBSSxDQUFDLElBQTdCLGdEQUF3QixZQUFXLGdCQUFuQztBQUVoQixLQU5SLEVBTVMsVUFBUyxLQUFULEVBQWU7QUFDQSxNQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLEtBQXJCO0FBQ0EsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDdkIsS0FURDtBQVdILEdBaEJEOztBQW1CQyxFQUFBLE1BQU0sQ0FBQyxxQkFBUCxHQUErQixVQUFVLGFBQVYsRUFDbEM7QUFDTSxJQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLElBQXhCO0FBQ04sUUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBOUI7QUFDQSxRQUFJLGFBQUosYUFBSSxhQUFKLGVBQUksYUFBYSxDQUFFLE9BQW5CLEVBQTZCLE9BQU8sR0FBRyxhQUFhLENBQUMsT0FBeEI7QUFDdkIsUUFBSSxPQUFPLEdBQUc7QUFBQyxNQUFBLFdBQVcsRUFBQyxjQUFiO0FBQTRCLE1BQUEsT0FBTyxFQUFDLEtBQXBDO0FBQTBDLE1BQUEsT0FBTyxFQUFDLElBQWxEO0FBQXVELE1BQUEsVUFBVSxFQUFDLE1BQU0sQ0FBQztBQUF6RSxLQUFkO0FBRUEsSUFBQSxvQkFBb0IsQ0FBQyxxQkFBckIsQ0FBMkMsTUFBTSxDQUFDLFVBQWxELEVBQTZELE1BQU0sQ0FBQyxRQUFQLENBQWdCLFlBQTdFLEVBQTJGLE9BQTNGLEVBQW9HLE9BQXBHLEVBQTZHLElBQTdHLENBQ0osVUFBUyxJQUFULEVBQWU7QUFDWSxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsR0FBdEMsRUFBMEMsU0FBMUM7QUFDQyxNQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLEtBQXhCO0FBQ2QsS0FKVixFQUlXLFVBQVMsS0FBVCxFQUFlO0FBQ0UsTUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixLQUF4QjtBQUNBLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ2xCLEtBUFYsYUFPcUIsWUFBTTtBQUM3QixNQUFBLENBQUMsQ0FBQyxpQkFBRCxDQUFELENBQXFCLEtBQXJCLENBQTJCLE1BQTNCO0FBQ0MsTUFBQSxDQUFDLENBQUMsV0FBRCxDQUFELENBQWUsS0FBZixDQUFxQixNQUFyQjtBQUNELEtBVkU7QUFZSCxHQW5CQTs7QUFxQkcsRUFBQSxNQUFNLENBQUMsb0JBQVAsR0FBOEIsWUFDOUI7QUFDUSxRQUFJLElBQUksR0FBRywyQkFBWCxDQURSLENBRVE7O0FBQ0EsSUFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsRUFBZSxFQUFmO0FBRVAsR0FORDtBQVFIOztBQUVFLFNBQVMscUJBQVQsQ0FBZ0MsTUFBaEMsRUFBd0MsVUFBeEMsRUFBb0QsU0FBcEQsRUFBK0QsUUFBL0QsRUFBd0UscUJBQXhFLEVBQThGLGlCQUE5RixFQUFnSCxnQkFBaEgsRUFBaUksb0JBQWpJLEVBQXNKLFlBQXRKLEVBQW1LLGVBQW5LLEVBQW1MLFdBQW5MLEVBQStMLFlBQS9MLEVBQTRNLE1BQTVNLEVBQW9OO0FBR3ZOLEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBa0IsWUFBWSxDQUFDLEVBQS9CO0FBQ0EsRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFnQix1QkFBaEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXFCLEVBQXJCO0FBQ0EsRUFBQSxNQUFNLENBQUMsVUFBUCxHQUFvQixLQUFwQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsV0FBdEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGFBQXBCO0FBRUEsRUFBQSxNQUFNLENBQUMsU0FBUCxHQUFtQjtBQUFDLElBQUEsUUFBUSxFQUFDO0FBQVYsR0FBbkI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLEdBQTBCLElBQTFCO0FBQ0EsRUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixHQUE0QixJQUE1QjtBQUNBLE1BQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDO0FBQ0EsRUFBQSxNQUFNLENBQUMsS0FBUCxHQUFlLGVBQWY7QUFDQyxFQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsZ0JBQWI7QUFDQztBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFUyxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLFlBQVk7QUFFakMsSUFBQSxvQkFBb0IsQ0FBQyxpQkFBckIsQ0FBdUMsTUFBTSxDQUFDLFVBQTlDLEVBQTBELElBQTFELENBQStELFVBQVMsSUFBVCxFQUFlO0FBRTlELE1BQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsSUFBSSxDQUFDLElBQXZCO0FBQ0EsTUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixxQkFBaEIsR0FBd0MsSUFBeEM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGdCQUFoQixHQUFtQyxzQkFBbkM7QUFDckIsTUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLHNCQUFiLENBQW9DLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEdBQXBELEVBQXdEO0FBQUMsUUFBQSxPQUFPLEVBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsT0FBekI7QUFBaUMsUUFBQSxTQUFTLEVBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsU0FBM0Q7QUFBcUUsUUFBQSxVQUFVLEVBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0I7QUFBaEcsT0FBeEQ7QUFHcUIsTUFBQSxNQUFNLENBQUMsbUJBQVA7QUFFQSxNQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQW9CLElBQXBCO0FBQ0ssS0FYckIsRUFXc0IsVUFBUyxLQUFULEVBQWU7QUFFbkIsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDRCxLQWRqQjtBQWVILEdBakJBOztBQXFCRCxFQUFBLE1BQU0sQ0FBQyxvQkFBUCxHQUE4QixZQUM5QjtBQUNRLFFBQUksSUFBSSxHQUFHLDJCQUFYO0FBQ0EsSUFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsRUFBZSxFQUFmO0FBRVAsR0FMRDs7QUFPQSxFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQW1CLFVBQVUsTUFBVixFQUFrQjtBQUV6QixJQUFBLENBQUMsQ0FBQyxjQUFELENBQUQsQ0FBa0IsS0FBbEIsQ0FBd0IsTUFBeEIsRUFGeUIsQ0FHekI7QUFDQTtBQUNYLEdBTEQ7O0FBT0EsRUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBNkIsWUFDN0I7QUFDSSxJQUFBLG9CQUFvQixDQUFDLG1CQUFyQixDQUF5QyxNQUFNLENBQUMsVUFBaEQsRUFBMkQsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsWUFBM0UsRUFBd0YsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsT0FBeEcsRUFBaUgsSUFBakgsQ0FBc0gsVUFBUyxJQUFULEVBQWU7QUFFakksTUFBQSxNQUFNLENBQUMsaUJBQVAsR0FBMkIsSUFBSSxDQUFDLElBQWhDO0FBRUgsS0FKRCxFQUlFLFVBQVMsS0FBVCxFQUFlO0FBRWIsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDSCxLQVBEO0FBUUgsR0FWRDs7QUFZQyxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLFlBQ3ZCO0FBQ0ksSUFBQSxNQUFNLENBQUMsaUJBQVAsR0FBeUIsSUFBekIsQ0FESixDQUVJOztBQUNBLFFBQUksU0FBUyxHQUFHLENBQUM7QUFBQyxNQUFBLEdBQUcsRUFBQyxNQUFNLENBQUMsVUFBWjtBQUF1QixNQUFBLFdBQVcsRUFBQyxNQUFNLENBQUMsUUFBUCxDQUFnQixZQUFuRDtBQUFnRSxNQUFBLE9BQU8sRUFBRSxNQUFNLENBQUMsS0FBUCxDQUFhLG1CQUFiLENBQWlDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEdBQWpELEVBQXNEO0FBQS9ILEtBQUQsQ0FBaEIsQ0FISixDQUdnSzs7QUFDNUosSUFBQSxvQkFBb0IsQ0FBQyxZQUFyQixDQUFrQyxTQUFsQyxFQUE2QyxJQUE3QyxDQUFrRCxVQUFTLElBQVQsRUFBZTtBQUFBOztBQUU3RCxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsR0FBdEMsRUFBMEMsU0FBMUM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixTQUF6QixHQUFxQyxJQUFJLENBQUMsSUFBTCxDQUFVLFNBQS9DO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsUUFBekIsR0FBb0MsSUFBSSxDQUFDLElBQUwsQ0FBVSxRQUE5QztBQUNBLE1BQUEsTUFBTSxDQUFDLGlCQUFQLENBQXlCLE9BQXpCLEdBQW1DLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBN0M7QUFDQSxNQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsbUJBQWIsQ0FBaUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsR0FBakQsRUFBc0QsT0FBdEQsR0FBZ0UsTUFBTSxDQUFDLGlCQUFQLENBQXlCLE9BQXpGO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsZ0JBQXpCLEdBQTZDLElBQTdDLGFBQTZDLElBQTdDLHVDQUE2QyxJQUFJLENBQUUsSUFBbkQsaURBQTZDLGFBQVksZ0JBQXpEO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsUUFBekIsR0FBb0MsSUFBSSxDQUFDLElBQUwsQ0FBVSxRQUE5QztBQUNBLE1BQUEsTUFBTSxDQUFDLGlCQUFQLENBQXlCLFdBQXpCLEdBQXVDLElBQUksQ0FBQyxJQUFMLENBQVUsV0FBakQ7QUFDQSxNQUFBLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixlQUF6QixHQUEyQyxJQUFJLENBQUMsSUFBTCxDQUFVLGVBQXJEO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsU0FBekIsR0FBcUMsSUFBSSxDQUFDLElBQUwsQ0FBVSxTQUEvQztBQUNBLE1BQUEsTUFBTSxDQUFDLGlCQUFQLENBQXlCLEtBQXpCLEdBQWlDLENBQWpDLENBWjZELENBYTlEOztBQUNDLE1BQUEsTUFBTSxDQUFDLGlCQUFQLEdBQXlCLEtBQXpCO0FBRUgsS0FoQkQsRUFnQkUsVUFBUyxLQUFULEVBQWU7QUFDYixNQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUF5QixLQUF6QjtBQUNBLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0gsS0FuQkQ7QUFvQkgsR0F6QkE7O0FBMkJGLEVBQUEsTUFBTSxDQUFDLGNBQVA7O0FBRUMsRUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixHQUFrQyxVQUFTLFFBQVQsRUFDbEM7QUFDSSxJQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWdCLFFBQWhCO0FBQ0gsR0FIRDs7QUFJQSxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLFVBQVUsS0FBVixFQUFpQjtBQUVoQyxRQUFJLEtBQUssQ0FBQyxNQUFWLEVBQ0E7QUFDRSxNQUFBLG9CQUFvQixDQUFDLGdCQUFyQixDQUFzQyxNQUFNLENBQUMsUUFBN0MsRUFBdUQsSUFBdkQsQ0FBNEQsVUFBUyxJQUFULEVBQWU7QUFFeEQsWUFBSSxJQUFJLENBQUMsTUFBTCxLQUFjLEdBQWQsSUFBcUIsSUFBSSxDQUFDLE1BQUwsSUFBYSxHQUF0QyxFQUNDO0FBQ0EsVUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsR0FBakMsRUFBcUMsU0FBckM7QUFDQztBQUNBLE9BTnJCLEVBTXNCLFVBQVMsS0FBVCxFQUFlO0FBRW5CLFFBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBRUQsT0FWakI7QUFZRCxLQWRELE1BZUE7QUFFRSxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLDRCQUE1QixFQUF5RCxTQUF6RDtBQUNEO0FBQ1YsR0FyQkQ7QUE0Qkg7O0FBQ0UsU0FBUyx5QkFBVCxDQUFvQyxNQUFwQyxFQUE0QyxVQUE1QyxFQUF3RCxTQUF4RCxFQUFtRSxNQUFuRSxFQUEyRSxRQUEzRSxFQUFvRixxQkFBcEYsRUFBMEcsaUJBQTFHLEVBQTRILGdCQUE1SCxFQUE2SSxvQkFBN0ksRUFBa0ssWUFBbEssRUFBK0ssZUFBL0ssRUFBK0wsV0FBL0wsRUFBMk0sWUFBM00sRUFBeU47QUFHNU4sRUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixZQUFZLENBQUMsRUFBL0I7QUFDQSxFQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWdCLDJCQUFoQjtBQUNBLEVBQUEsTUFBTSxDQUFDLGFBQVAsR0FBcUIsRUFBckI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQW1CLEVBQW5CO0FBQ0EsRUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixHQUE4QixFQUE5QjtBQUNBLEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBbUI7QUFBQyxJQUFBLFFBQVEsRUFBQztBQUFWLEdBQW5CO0FBQ0EsRUFBQSxNQUFNLENBQUMsS0FBUCxHQUFhLGVBQWI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsZ0JBQWI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLFdBQXRCO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixhQUFwQjtBQUVBLE1BQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDO0FBRUksRUFBQSxZQUFZLENBQUMsY0FBYixDQUE0QixjQUE1QixFQUEyQyxJQUEzQyxFQUFpRCxJQUFqRCxDQUFzRCxVQUFVLElBQVYsRUFBZ0I7QUFDbEU7QUFDb0IsSUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBMEIsSUFBSSxDQUFDLElBQS9CO0FBQ0YsR0FIdEI7QUFLQSxFQUFBLFlBQVksQ0FBQyxjQUFiLENBQTRCLFlBQTVCLEVBQXlDLElBQXpDLEVBQStDLElBQS9DLENBQW9ELFVBQVUsSUFBVixFQUFnQjtBQUM1QyxJQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUE0QixJQUFJLENBQUMsSUFBakM7QUFDRixHQUZ0Qjs7QUFLQyxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLFlBQVk7QUFFakMsSUFBQSxvQkFBb0IsQ0FBQyxpQkFBckIsQ0FBdUMsTUFBTSxDQUFDLFVBQTlDLEVBQTBELElBQTFELENBQStELFVBQVMsSUFBVCxFQUFlO0FBRTdEO0FBQ0MsTUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixJQUFJLENBQUMsSUFBdkI7QUFFRyxLQUxyQixFQUtzQixVQUFTLEtBQVQsRUFBZTtBQUVuQixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNELEtBUmpCO0FBU0gsR0FYQTs7QUFhRixFQUFBLE1BQU0sQ0FBQyxjQUFQOztBQUdFLEVBQUEsTUFBTSxDQUFDLHFCQUFQLEdBQStCLFlBQVk7QUFFcEMsSUFBQSxvQkFBb0IsQ0FBQyxpQkFBckIsQ0FBdUMsTUFBTSxDQUFDLFVBQTlDLEVBQTBELElBQTFELENBQStELFVBQVMsSUFBVCxFQUFlO0FBRWpFO0FBQ0wsTUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixJQUFJLENBQUMsSUFBdkI7O0FBRUEsVUFBSyxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixJQUE2QixJQUE3QixJQUFzQyxPQUFPLENBQUMsTUFBUixDQUFnQixFQUFoQixFQUFvQixNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFwQyxDQUEzQyxFQUNBO0FBQ1EsUUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixHQUE2QjtBQUFDLFVBQUEsTUFBTSxFQUFDLElBQVI7QUFBYSxVQUFBLFFBQVEsRUFBQyxJQUF0QjtBQUEyQixVQUFBLGFBQWEsRUFBQyxDQUFDO0FBQUMsWUFBQSxFQUFFLEVBQUM7QUFBSixXQUFELENBQXpDO0FBQWtELFVBQUEsSUFBSSxFQUFDO0FBQUMsWUFBQSxRQUFRLEVBQUMsSUFBVjtBQUFlLFlBQUEsV0FBVyxFQUFDLElBQTNCO0FBQWdDLFlBQUEsTUFBTSxFQUFDLElBQXZDO0FBQTRDLFlBQUEsU0FBUyxFQUFDO0FBQXREO0FBQXZELFNBQTdCO0FBQ1A7O0FBQ0QsTUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixJQUF4QjtBQUNBLE1BQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsSUFBakI7QUFFUCxLQVpELEVBWUUsVUFBUyxLQUFULEVBQWU7QUFFSCxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNiLEtBZkQ7QUFnQlAsR0FsQkE7O0FBcUJELEVBQUEsb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLElBQTlDLEVBQW1ELFNBQW5ELEVBQThELElBQTlELENBQW1FLFVBQVMsSUFBVCxFQUFlO0FBRWxFLElBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsSUFBSSxDQUFDLElBQTNCO0FBQ0EsSUFBQSxNQUFNLENBQUMsZUFBUCxHQUF5QixJQUF6QjtBQUNQLEdBSlQsRUFJVSxVQUFTLEtBQVQsRUFBZTtBQUVULElBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ2YsR0FQRDs7QUFVQyxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLFVBQVUsT0FBVixFQUFtQjtBQUUzQyxRQUFJLE9BQUosRUFDQTtBQUNFLE1BQUEsb0JBQW9CLENBQUMscUJBQXJCLENBQTJDLE1BQU0sQ0FBQyxRQUFsRCxFQUE0RCxJQUE1RCxDQUFpRSxVQUFTLElBQVQsRUFBZTtBQUc3RCxZQUFJLElBQUksQ0FBQyxNQUFMLEtBQWMsR0FBZCxJQUFzQixJQUFJLENBQUMsTUFBTCxLQUFjLEdBQXhDLEVBQ0M7QUFDQSxVQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLCtCQUE1QixFQUE0RCxTQUE1RDtBQUNDO0FBQ0EsT0FQckIsRUFPc0IsVUFBUyxLQUFULEVBQWU7QUFFbkIsUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFFRCxPQVhqQjtBQWFELEtBZkQsTUFnQkE7QUFFRSxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLDRCQUE1QixFQUF5RCxTQUF6RDtBQUNEO0FBQ0YsR0F0QkE7O0FBMEJELEVBQUEsTUFBTSxDQUFDLG9CQUFQLEdBQThCLFlBQzlCO0FBQ1EsUUFBSSxJQUFJLEdBQUcsMkJBQVgsQ0FEUixDQUVROztBQUNBLElBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLEVBQWUsRUFBZjtBQUVQLEdBTkQ7O0FBU0QsRUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixZQUFZO0FBQ25DLElBQUEsTUFBTSxDQUFDLGlCQUFQLEdBQXlCLEtBQXpCLENBRG1DLENBRW5DOztBQUNGLElBQUEsb0JBQW9CLENBQUMsZUFBckIsQ0FBcUMsTUFBTSxDQUFDLFVBQTVDLEVBQXVELEdBQXZELEVBQTJELElBQTNELEVBQWlFLElBQWpFLENBQXNFLFVBQVMsSUFBVCxFQUFlO0FBQzNELFVBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUFWLENBQWtCLE1BQWxCLEdBQXlCLENBQTdCLEVBQ0E7QUFDSyxRQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLEdBQThCO0FBQUMsVUFBQSxNQUFNLEVBQUMsSUFBSSxDQUFDLElBQUwsQ0FBVTtBQUFsQixTQUE5QjtBQUNKLE9BSEQsTUFHTSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixNQUE5QixHQUF1QyxlQUFlLENBQUMsdUJBQWhCLEVBQXZDLENBSnFELENBTTNEOzs7QUFFQSxNQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUEyQixJQUFJLENBQUMsSUFBTCxDQUFVLGtCQUFyQztBQUVHLE1BQUEsUUFBUSxDQUFDLFlBQVc7QUFDbkIsUUFBQSxNQUFNLENBQUMsaUJBQVAsR0FBeUIsSUFBekI7QUFDQyxPQUZNLENBQVI7QUFJRixLQWQzQixFQWM0QixVQUFTLEtBQVQsRUFBZTtBQUNmLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0osS0FoQnhCO0FBa0JDLEdBckJBOztBQXVCSCxFQUFBLE1BQU0sQ0FBQyxjQUFQO0FBRUg7O0FBQ00sU0FBUywyQkFBVCxDQUFzQyxNQUF0QyxFQUE4QyxVQUE5QyxFQUEwRCxTQUExRCxFQUFxRSxRQUFyRSxFQUE4RSxnQkFBOUUsRUFBK0Ysb0JBQS9GLEVBQW9ILFlBQXBILEVBQWlJLGVBQWpJLEVBQWlKLFdBQWpKLEVBQTZKLFlBQTdKLEVBQTBLLE1BQTFLLEVBQWtMO0FBR3JMLEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBa0IsWUFBWSxDQUFDLEVBQS9CO0FBQ0EsRUFBQSxNQUFNLENBQUMsSUFBUCxHQUFZLDZCQUFaO0FBQ0EsRUFBQSxNQUFNLENBQUMsYUFBUCxHQUFxQixFQUFyQjtBQUVBLEVBQUEsTUFBTSxDQUFDLEtBQVAsR0FBZSxlQUFmO0FBQ0EsRUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLGdCQUFiO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixXQUF0QjtBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsYUFBcEI7QUFDQSxNQUFJLElBQUksR0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQztBQUdJLEVBQUEsb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTdFLEVBQWtGLFNBQWxGLEVBQTZGLElBQTdGLENBQ2dCLFVBQVMsSUFBVCxFQUFlO0FBQ2hDLElBQUEsTUFBTSxDQUFDLFdBQVAsR0FBcUIsSUFBSSxDQUFDLElBQTFCLENBRGdDLENBRVg7QUFDRixHQUpsQixFQUtpQixVQUFTLEtBQVQsRUFBZTtBQUFJLElBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQWdELEdBTHBGO0FBUUE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ1MsRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQixZQUFVO0FBRTVCLFFBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsU0FBM0IsSUFBc0MsU0FBMUMsRUFBcUQsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsU0FBM0IsR0FBdUMsRUFBdkM7QUFDckQsSUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixDQUEyQixTQUEzQixDQUFxQyxJQUFyQyxDQUEwQyxFQUExQztBQUVILEdBTEE7O0FBT0EsRUFBQSxNQUFNLENBQUMsb0JBQVAsR0FBOEIsWUFBVTtBQUVyQyxRQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLENBQTJCLFFBQTNCLElBQXFDLFNBQXpDLEVBQW9ELE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLENBQTJCLFFBQTNCLEdBQXNDLEVBQXRDO0FBQ3BELElBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsUUFBM0IsQ0FBb0MsSUFBcEMsQ0FBeUMsRUFBekM7QUFFSCxHQUxBOztBQU9ELEVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsWUFBWTtBQUVoQyxJQUFBLG9CQUFvQixDQUFDLGlCQUFyQixDQUF1QyxNQUFNLENBQUMsVUFBOUMsRUFBMEQsSUFBMUQsQ0FBK0QsVUFBUyxJQUFULEVBQWU7QUFFN0Q7QUFDQyxNQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLElBQUksQ0FBQyxJQUF2QjtBQUNBLE1BQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsSUFBeEI7QUFFRyxLQU5yQixFQU1zQixVQUFTLEtBQVQsRUFBZTtBQUVuQixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNELEtBVGpCO0FBVUgsR0FaRDs7QUFjRCxFQUFBLE1BQU0sQ0FBQyxjQUFQOztBQUVFLEVBQUEsTUFBTSxDQUFDLHNCQUFQLEdBQWdDLFlBQVk7QUFFMUMsSUFBQSxvQkFBb0IsQ0FBQyx5QkFBckIsQ0FBK0MsTUFBTSxDQUFDLFVBQXRELEVBQWlFLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWpGLEVBQTZGLElBQTdGLENBQWtHLFVBQVMsSUFBVCxFQUFlO0FBRTdGLFVBQUksSUFBSSxDQUFDLE1BQUwsS0FBYyxHQUFkLElBQXNCLElBQUksQ0FBQyxNQUFMLEtBQWMsR0FBeEMsRUFDQztBQUNBLFFBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQWpDLEVBQXNDLFNBQXRDO0FBQ0M7QUFDQSxLQU50QixFQU11QixVQUFTLEtBQVQsRUFBZTtBQUVuQixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxJQUFsQyxFQUF1QyxPQUF2QztBQUVELEtBVmxCO0FBYUYsR0FmQTtBQWtCUjs7QUFHTSxTQUFTLG1CQUFULENBQThCLE1BQTlCLEVBQXNDLFVBQXRDLEVBQWtELFNBQWxELEVBQTZELFFBQTdELEVBQXNFLGdCQUF0RSxFQUF1RixvQkFBdkYsRUFBNEcsWUFBNUcsRUFBeUgsZUFBekgsRUFBeUksV0FBekksRUFBcUosWUFBckosRUFBa0ssTUFBbEssRUFBMEs7QUFHN0ssRUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixZQUFZLENBQUMsRUFBL0I7QUFDQSxFQUFBLE1BQU0sQ0FBQyxJQUFQLEdBQVkscUJBQVo7QUFDQSxFQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXFCLEVBQXJCO0FBQ0EsTUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUM7QUFFQSxNQUFJLFFBQVEsR0FBRyxHQUFHLENBQUMsU0FBSixDQUFjLGVBQWQsQ0FBZjtBQUNBLEVBQUEsTUFBTSxDQUFDLEtBQVAsR0FBZSxlQUFmO0FBQ0EsRUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLGdCQUFiO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixXQUF0QjtBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsYUFBcEI7QUFFQSxFQUFBLFFBQVEsQ0FBQyxLQUFULENBQWUsMkJBQWY7QUFFSDs7QUFDTSxTQUFTLDBCQUFULENBQXFDLE1BQXJDLEVBQTZDLFVBQTdDLEVBQXlELFNBQXpELEVBQW9FLFFBQXBFLEVBQTZFLGdCQUE3RSxFQUE4RixvQkFBOUYsRUFBbUgsWUFBbkgsRUFBZ0ksZUFBaEksRUFBZ0osV0FBaEosRUFBNEosWUFBNUosRUFBeUssTUFBekssRUFBaUw7QUFHcEwsRUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixZQUFZLENBQUMsRUFBL0I7QUFDQSxFQUFBLE1BQU0sQ0FBQyxJQUFQLEdBQVksNEJBQVo7QUFDQSxFQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXFCLEVBQXJCO0FBRUEsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixXQUF0QjtBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsYUFBcEI7O0FBQ0EsRUFBQSxNQUFNLENBQUMsb0JBQVAsR0FBOEIsWUFBVztBQUNsQyxJQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsMkJBQVYsRUFBc0MsRUFBdEM7QUFDTCxHQUZGLENBVG9MLENBZWpMOzs7QUFJSCxNQUFJLElBQUksR0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQztBQUVJLEVBQUEsWUFBWSxDQUFDLGNBQWIsQ0FBNEIsVUFBNUIsRUFBdUMsSUFBdkMsRUFBNkMsSUFBN0MsQ0FBa0QsVUFBVSxJQUFWLEVBQWdCO0FBQzFDLElBQUEsTUFBTSxDQUFDLE9BQVAsR0FBaUIsSUFBSSxDQUFDLElBQXRCO0FBQ0EsSUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixPQUFPLENBQUMsSUFBUixDQUFhLE1BQU0sQ0FBQyxPQUFwQixDQUF0QjtBQUNBLElBQUEsTUFBTSxDQUFDLGFBQVAsR0FBdUIsT0FBTyxDQUFDLElBQVIsQ0FBYSxNQUFNLENBQUMsT0FBcEIsQ0FBdkI7QUFDQSxJQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLE9BQU8sQ0FBQyxJQUFSLENBQWEsTUFBTSxDQUFDLE9BQXBCLENBQWxCO0FBQ0EsSUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixPQUFPLENBQUMsSUFBUixDQUFhLE1BQU0sQ0FBQyxPQUFwQixDQUFsQjtBQUVGLEdBUHRCO0FBU0EsRUFBQSxZQUFZLENBQUMsY0FBYixDQUE0QixZQUE1QixFQUF5QyxJQUF6QyxFQUErQyxJQUEvQyxDQUFvRCxVQUFVLElBQVYsRUFBZ0I7QUFDNUMsSUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsSUFBSSxDQUFDLElBQWpDO0FBQ0YsR0FGdEI7O0FBS0EsRUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixZQUN4QjtBQUNPLFFBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEdBQWhCLENBQW9CLFVBQVMsQ0FBVCxFQUFZO0FBQUUsYUFBTyxDQUFDLENBQUMsRUFBVDtBQUFjLEtBQWhELEVBQWtELE9BQWxELENBQTBELE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLENBQTJCLGlCQUEzQixDQUE2QyxFQUF2RyxDQUFWOztBQUVDLFFBQUksR0FBRyxJQUFFLENBQVQsRUFBVztBQUVYLE1BQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsaUJBQTNCLEdBQTZDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEdBQWhCLENBQTdDO0FBRUM7O0FBQ0QsSUFBQSxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsR0FBaEIsQ0FBb0IsVUFBUyxDQUFULEVBQVk7QUFBRSxhQUFPLENBQUMsQ0FBQyxFQUFUO0FBQWMsS0FBaEQsRUFBa0QsT0FBbEQsQ0FBMEQsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsaUJBQTNCLENBQTZDLEVBQXZHLENBQU47O0FBRUEsUUFBSSxHQUFHLElBQUUsQ0FBVCxFQUFXO0FBRVgsTUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixDQUEyQixpQkFBM0IsR0FBNkMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsR0FBaEIsQ0FBN0M7QUFFQztBQUNSLEdBaEJEOztBQWlCQSxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLFlBQVk7QUFFaEMsSUFBQSxvQkFBb0IsQ0FBQyxpQkFBckIsQ0FBdUMsTUFBTSxDQUFDLFVBQTlDLEVBQTBELElBQTFELENBQStELFVBQVMsSUFBVCxFQUFlO0FBRTdEO0FBQ0MsTUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixJQUFJLENBQUMsSUFBdkI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLElBQXhCO0FBQ0EsVUFBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixLQUE2QixJQUE3QixJQUFxQyxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixLQUE2QixTQUF0RSxFQUFpRixNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixHQUEyQixFQUEzQjtBQUNqRixVQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLENBQTJCLFNBQS9CLEVBQTBDLE1BQU0sQ0FBQyxjQUFQO0FBRXZDLEtBUnJCLEVBUXNCLFVBQVMsS0FBVCxFQUFlO0FBRW5CLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0QsS0FYakI7QUFZSCxHQWREOztBQWdCRCxFQUFBLE1BQU0sQ0FBQyxjQUFQOztBQUVDLEVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsWUFDeEI7QUFDRyxJQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsMkJBQVYsRUFBc0M7QUFBQyxNQUFBLEVBQUUsRUFBQyxNQUFNLENBQUMsVUFBWDtBQUFzQixNQUFBLFdBQVcsRUFBQztBQUFDLFFBQUEsS0FBSyxFQUFDLG1DQUFQO0FBQTJDLFFBQUEsS0FBSyxFQUFDLE1BQU0sQ0FBQyxPQUF4RDtBQUFnRSxRQUFBLE1BQU0sRUFBQztBQUFDLFVBQUEsRUFBRSxFQUFDLE1BQU0sQ0FBQztBQUFYO0FBQXZFO0FBQWxDLEtBQXRDO0FBQ0YsR0FIRDs7QUFLQyxFQUFBLE1BQU0sQ0FBQyxzQkFBUCxHQUFnQyxZQUFZO0FBRTFDLElBQUEsb0JBQW9CLENBQUMseUJBQXJCLENBQStDLE1BQU0sQ0FBQyxVQUF0RCxFQUFpRSxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFqRixFQUE2RixJQUE3RixDQUFrRyxVQUFTLElBQVQsRUFBZTtBQUU3RixVQUFJLElBQUksQ0FBQyxNQUFMLEtBQWMsR0FBZCxJQUFzQixJQUFJLENBQUMsTUFBTCxLQUFjLEdBQXhDLEVBQ0M7QUFDQSxRQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxHQUFqQyxFQUFxQyxTQUFyQztBQUNDO0FBQ0EsS0FOdEIsRUFNdUIsVUFBUyxLQUFULEVBQWU7QUFFbkIsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFFRCxLQVZsQjtBQWFGLEdBZkE7QUFrQkQ7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFJSyxDLENBRUw7OztBQUVPLFNBQVMsK0JBQVQsQ0FBMEMsb0JBQTFDLEVBQStELGdCQUEvRCxFQUFnRixZQUFoRixFQUE4RjtBQUc3RixNQUFJLFFBQUo7QUFDQSxNQUFJLFVBQVUsR0FBQyxZQUFZLENBQUMsRUFBNUIsQ0FKNkYsQ0FLN0Y7O0FBRUEsRUFBQSxvQkFBb0IsQ0FBQyxpQkFBckIsQ0FBdUMsVUFBdkMsRUFBbUQsSUFBbkQsQ0FBd0QsVUFBUyxJQUFULEVBQWU7QUFFL0QsSUFBQSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQWhCO0FBQ0MsUUFBSSxrQkFBa0IsR0FBSSxJQUFJLEdBQUosQ0FBUTtBQUNILE1BQUEsRUFBRSxFQUFFLGtDQUREO0FBRUgsTUFBQSxJQUFJLEVBQUU7QUFDSixRQUFBLFFBQVEsRUFBRTtBQUROLE9BRkg7QUFNSCxNQUFBLE9BQU8sRUFBRTtBQUVQLFFBQUEsZ0JBQWdCLEVBQUMsNEJBQVcsQ0FFM0I7QUFKTSxPQU5OO0FBYUgsTUFBQSxPQWJHLHFCQWFNLENBRVIsQ0FmRTtBQWdCSCxNQUFBLFVBQVUsRUFBRSxDQUMxRDtBQUQwRDtBQWhCVCxLQUFSLENBQTFCO0FBdUJSLEdBMUJELEVBMEJFLFVBQVMsS0FBVCxFQUFlO0FBRVQsSUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDUCxHQTdCRDtBQStCSDs7QUFHRSxTQUFTLGdCQUFULENBQTJCLE1BQTNCLEVBQW1DLFVBQW5DLEVBQStDLHFCQUEvQyxFQUFxRSxZQUFyRSxFQUFrRixvQkFBbEYsRUFBdUcsV0FBdkcsRUFBbUgsbUJBQW5ILEVBQXVJLGVBQXZJLEVBQXVKLGdCQUF2SixFQUF3SyxXQUF4SyxFQUFvTCxRQUFwTCxFQUE2TCxNQUE3TCxFQUFvTSxZQUFwTSxFQUFpTixFQUFqTixFQUFxTjtBQUFBOztBQUV4TixFQUFBLE1BQU0sQ0FBQyxJQUFQLEdBQVksa0JBQVo7QUFFQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLFdBQXRCO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixhQUFwQjtBQUVBLEVBQUEsTUFBTSxDQUFDLGlCQUFQLEdBQTJCO0FBQ3ZCLElBQUEsVUFBVSxFQUFFLENBRFc7QUFFdkIsSUFBQSxRQUFRLEVBQUUsRUFGYTtBQUd2QixJQUFBLElBQUksRUFBRTtBQUhpQixHQUEzQjtBQU1ILEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0IsQ0FBRTtBQUFDLElBQUEsRUFBRSxFQUFDLENBQUo7QUFBTyxJQUFBLElBQUksRUFBRTtBQUFiLEdBQUYsRUFBMEI7QUFBQyxJQUFBLEVBQUUsRUFBQyxDQUFKO0FBQU8sSUFBQSxJQUFJLEVBQUU7QUFBYixHQUExQixDQUFwQjs7QUFFQSxFQUFBLE1BQU0sQ0FBQyxNQUFQLEdBQWdCLFVBQVMsQ0FBVCxFQUFXLENBQVgsRUFBYTtBQUM1QixJQUFBLE9BQU8sQ0FBQyxHQUFSLENBQVksQ0FBWixFQUQ0QixDQUU1QjtBQUVBLEdBSkQ7O0FBTUEsRUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBMEIsWUFBVztBQUNwQyxRQUFJLEVBQUUsR0FBQyxDQUFQOztBQUNBLFFBQUksVUFBVSxDQUFDLE9BQVgsQ0FBbUIsT0FBdkIsRUFBZ0M7QUFDOUIseUNBQTJCLE1BQU0sQ0FBQyxPQUFQLENBQWUsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsT0FBbEMsQ0FBM0IscUNBQXlFO0FBQXBFO0FBQUEsWUFBTyxHQUFQO0FBQUEsWUFBWSxNQUFaOztBQUNELFFBQUEsT0FBTyxDQUFDLEdBQVIsV0FBZSxHQUFmLGVBQXVCLE1BQXZCO0FBQ0EsUUFBQSxFQUFFLEdBQUMsRUFBRSxHQUFDLE1BQU47QUFDSDtBQUVGLEtBTkQsTUFNTyxPQUFPLENBQVA7O0FBQ1AsV0FBTyxFQUFQO0FBQ0EsR0FWRDs7QUFZRyxFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQW1CO0FBQ3JCLElBQUEsY0FBYyxFQUFFLElBREs7QUFFckIsSUFBQSxRQUFRLEVBQUU7QUFDVCxNQUFBLE1BQU0sRUFBRSxDQUFDO0FBQUMsUUFBQSxFQUFFLEVBQUMsQ0FBSjtBQUFPLFFBQUEsSUFBSSxFQUFFO0FBQWIsT0FBRDtBQURDO0FBRlcsR0FBbkI7QUFPQSxFQUFBLE1BQU0sQ0FBQyxPQUFQLEdBQWlCLEVBQWpCO0FBQ0EsRUFBQSxNQUFNLENBQUMsTUFBUCxHQUFnQjtBQUFDLHFCQUFnQixZQUFZLENBQUMsYUFBOUI7QUFBNEMsWUFBTyxZQUFZLENBQUM7QUFBaEUsR0FBaEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQWtCLENBQUM7QUFBQyxJQUFBLEVBQUUsRUFBQyxDQUFKO0FBQU0sSUFBQSxRQUFRLEVBQUMsZUFBZjtBQUErQixJQUFBLFFBQVEsRUFBQyxxQkFBeEM7QUFBOEQsSUFBQSxJQUFJLEVBQUM7QUFBbkUsR0FBRCxDQUFsQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0I7QUFBQyxJQUFBLE9BQU8sRUFBQztBQUFULEdBQWxCO0FBQ0EsRUFBQSxNQUFNLENBQUMsb0JBQVAsR0FBZ0MsQ0FDNUI7QUFBRSxJQUFBLElBQUksRUFBRSxLQUFSO0FBQWUsSUFBQSxXQUFXLEVBQUUsSUFBNUI7QUFBa0MsSUFBQSxJQUFJLEVBQUUsUUFBeEM7QUFBa0QsSUFBQSxLQUFLLEVBQUMsSUFBeEQ7QUFBNkQsSUFBQSxZQUFZLEVBQUUsS0FBM0U7QUFBa0YsSUFBQSxPQUFPLEVBQUU7QUFBM0YsR0FENEIsRUFFNUI7QUFBRSxJQUFBLElBQUksRUFBRSxJQUFSO0FBQWMsSUFBQSxXQUFXLEVBQUU7QUFBM0IsR0FGNEIsRUFHNUI7QUFBRSxJQUFBLElBQUksRUFBRSwyQkFBUjtBQUFxQyxJQUFBLEtBQUssRUFBQyxJQUEzQztBQUFnRCxJQUFBLFdBQVcsRUFBRSxNQUE3RDtBQUFxRSxJQUFBLElBQUksRUFBQztBQUExRSxHQUg0QixFQUk1QjtBQUFFLElBQUEsSUFBSSxFQUFFLDZCQUFSO0FBQXVDLElBQUEsV0FBVyxFQUFFO0FBQXBELEdBSjRCLEVBSzVCO0FBQUUsSUFBQSxJQUFJLEVBQUUsZ0NBQVI7QUFBMEMsSUFBQSxXQUFXLEVBQUU7QUFBdkQsR0FMNEIsRUFNNUI7QUFBRSxJQUFBLElBQUksRUFBRSxvQ0FBUjtBQUE4QyxJQUFBLFdBQVcsRUFBRTtBQUEzRCxHQU40QixFQU83QjtBQUNDO0FBQUUsSUFBQSxJQUFJLEVBQUUsUUFBUjtBQUFrQixJQUFBLFdBQVcsRUFBRSxRQUEvQjtBQUF3QyxJQUFBLEtBQUssRUFBQyxJQUE5QztBQUFtRCxJQUFBLElBQUksRUFBQztBQUF4RDtBQUNBO0FBVDRCLEdBQWhDO0FBWUksRUFBQSxNQUFNLENBQUMsR0FBUCxHQUFhLG1CQUFiO0FBRUEsTUFBSSxpQkFBaUIsR0FBRSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsTUFBTSxDQUFDLElBQTdCLEVBQWtDLE1BQU0sQ0FBQyxRQUF6QyxDQUF2QjtBQUNBLE1BQUkscUJBQXFCLEdBQUcsaUJBQWlCLENBQUMsT0FBbEIsQ0FBMEIsSUFBdEQ7QUFFQSxNQUFJLGlCQUFpQixDQUFDLE9BQWxCLENBQTBCLFFBQTFCLElBQW9DLFNBQXhDLEVBQW1ELE1BQU0sQ0FBQyxTQUFQLEdBQWtCLGlCQUFpQixDQUFDLE9BQWxCLENBQTBCLFFBQTVDOztBQUNuRCwyQkFBSSxNQUFNLENBQUMsU0FBWCw4Q0FBSSxrQkFBa0IsY0FBdEIsRUFDQTtBQUNRLElBQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBbkM7QUFDQSxJQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQW1CLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQXBDO0FBQ0EsSUFBQSxNQUFNLENBQUMsT0FBUCxDQUFlLFFBQWYsR0FBMEIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBM0M7QUFFUDs7QUFDRCxNQUFJLE1BQU0sQ0FBQyxRQUFQLElBQWlCLFNBQXJCLEVBQWdDLE1BQU0sQ0FBQyxRQUFQLEdBQWdCLEVBQWhCOztBQUVoQyxNQUFJLFlBQVksR0FBRyxTQUFmLFlBQWUsQ0FBUyxJQUFULEVBQ25CO0FBQ0csSUFBQSxpQkFBaUIsQ0FBQyxPQUFsQixDQUEwQixlQUExQixHQUE0QyxJQUE1QztBQUNBLElBQUEsaUJBQWlCLENBQUMsT0FBbEIsQ0FBMEIsZUFBMUI7QUFFRixHQUxEOztBQU9DLE1BQUksbUJBQW1CLEdBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLHFCQUFyQixFQUEyQyxvQkFBM0MsRUFBZ0UsWUFBaEUsQ0FBMUI7QUFFTCxFQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQixLQUExQjs7QUFFQSxFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLFlBQ3JCO0FBQ0c7QUFDQyxJQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLEdBQTRCLE1BQU0sQ0FBQyxRQUFuQztBQUNBLElBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsR0FBK0IsTUFBTSxDQUFDLFdBQXRDO0FBQ0EsSUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixHQUE0QixNQUFNLENBQUMsT0FBUCxDQUFlLFFBQTNDO0FBQ0EsSUFBQSxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIscUJBQXpCLEVBQStDLG9CQUEvQyxFQUFvRSxNQUFNLENBQUMsU0FBM0U7QUFHSCxHQVREOztBQVdBLEVBQUEsTUFBTSxDQUFDLG1CQUFQLEdBQTZCLFVBQVMsSUFBVCxFQUFjO0FBQ3ZDO0FBRUEsSUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBd0IsSUFBSSxDQUFDLFVBQTdCO0FBQ0EsSUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBMEIsSUFBSSxDQUFDLEVBQS9CO0FBQ0EsSUFBQSxNQUFNLENBQUMsb0JBQVAsR0FBOEIsSUFBSSxDQUFDLFlBQUwsQ0FBa0IsWUFBaEQ7QUFDQSxJQUFBLE1BQU0sQ0FBQyxvQkFBUCxHQUE0QixJQUFJLENBQUMsWUFBTCxDQUFrQixVQUFsQixDQUE2QixJQUF6RDtBQUNBLElBQUEsTUFBTSxDQUFDLG9CQUFQLEdBQTRCLElBQUksQ0FBQyxZQUFMLENBQWtCLFVBQWxCLENBQTZCLGNBQXpEO0FBQ0EsSUFBQSxNQUFNLENBQUMscUJBQVAsR0FBNkI7QUFBQyxNQUFBLEVBQUUsRUFBQyxNQUFNLENBQUM7QUFBWCxLQUE3QjtBQUNILEdBVEQ7O0FBV0MsRUFBQSxNQUFNLENBQUMsb0JBQVAsR0FBOEIsT0FBOUI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxvQkFBUCxHQUE0QixVQUE1QjtBQUNBLEVBQUEsTUFBTSxDQUFDLG1CQUFQLEdBQTJCLDJCQUEzQjtBQUNBLEVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBc0IsS0FBdEI7QUFFQSxNQUFJLElBQUksR0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QztBQUVBLEVBQUEsb0JBQW9CLENBQUMsaUJBQXJCLEdBQXlDLElBQXpDLENBQThDLFVBQVUsSUFBVixFQUFnQjtBQUNoRCxJQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQixJQUFJLENBQUMsSUFBL0I7QUFDQSxRQUFJLE1BQU0sQ0FBQyxrQkFBUCxJQUEyQixTQUEvQixFQUEwQyxNQUFNLENBQUMsZUFBUDtBQUMxQyxJQUFBLE1BQU0sQ0FBQyxjQUFQO0FBQ2IsR0FKRDtBQU9ELEVBQUEsWUFBWSxDQUFDLGNBQWIsQ0FBNEIsUUFBNUIsRUFBcUMsSUFBckMsRUFBMkMsSUFBM0MsQ0FBZ0QsVUFBVSxJQUFWLEVBQWdCO0FBQ3BDLElBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQTBCLElBQUksQ0FBQyxJQUEvQjtBQUNGLEdBRjFCOztBQUtDLEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBbUIsWUFBVTtBQUMxQixJQUFBLE1BQU0sQ0FBQyxFQUFQLENBQVUsTUFBTSxDQUFDLG9CQUFqQixFQUFzQyxNQUFNLENBQUMscUJBQTdDO0FBQ0YsR0FGRDs7QUFLRyxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXVCLEtBQXZCO0FBQ0EsRUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBd0IsSUFBeEI7O0FBRUEsRUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsVUFBUyxJQUFULEVBQWMsUUFBZCxFQUF1QjtBQUMzQyxJQUFBLE1BQU0sQ0FBQyxvQkFBUCxHQUE0QixJQUFJLENBQUMsWUFBTCxDQUFrQixVQUFsQixDQUE2QixjQUF6RDtBQUNBLElBQUEsTUFBTSxDQUFDLHFCQUFQLEdBQTZCO0FBQUMsTUFBQSxFQUFFLEVBQUMsSUFBSSxDQUFDO0FBQVQsS0FBN0I7QUFDQSxJQUFBLE1BQU0sQ0FBQyxTQUFQO0FBQ1AsR0FKRDs7QUFRSixFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLFVBQVMsVUFBVCxFQUFvQixRQUFwQixFQUE2QjtBQUFDO0FBRWxELFFBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQyxLQUFILEVBQWY7QUFDQSxJQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXVCLElBQXZCLENBSGlELENBSWpEOztBQUVBLFFBQUksTUFBTSxHQUFDLE1BQU0sQ0FBQyxRQUFsQjtBQUVBLFFBQUksVUFBVSxJQUFFLFNBQWhCLEVBQTJCLFVBQVUsR0FBRyxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsVUFBdEM7QUFFM0IsUUFBSSxRQUFRLElBQUUsU0FBZCxFQUF5QixRQUFRLEdBQUcsTUFBTSxDQUFDLGlCQUFQLENBQXlCLFFBQXBDOztBQUV6QixRQUFJLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLENBQXRCLEVBQXdCO0FBQ3BCLFVBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFNLENBQUMsVUFBUCxHQUFrQixRQUE1QixJQUFzQyxPQUExQyxFQUNBO0FBQ0UsUUFBQSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFNLENBQUMsVUFBUCxHQUFrQixRQUE1QixDQUFWO0FBQ0Q7QUFDSDs7QUFDRCxJQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLEdBQTRCLE1BQU0sQ0FBQyxRQUFuQzs7QUFFQSxRQUFJLE1BQU0sQ0FBQyxVQUFYLEVBQ0E7QUFDQyxNQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQWpCLEdBQStCLFVBQS9CO0FBQ0EsTUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixHQUE0QixRQUE1QjtBQUNBLEtBSkQsTUFLQTtBQUNPLFVBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBckIsRUFDQTtBQUFBOztBQUNRLFlBQUksQ0FBQSxNQUFNLFNBQU4sSUFBQSxNQUFNLFdBQU4sWUFBQSxNQUFNLENBQUUsV0FBUixLQUF1QixDQUEzQixFQUFnQyxNQUFNLENBQUMsU0FBUCxDQUFpQixXQUFqQixHQUErQixNQUFNLENBQUMsV0FBdEM7QUFDaEMsWUFBSSxNQUFKLGFBQUksTUFBSixxQ0FBSSxNQUFNLENBQUUsU0FBWiwrQ0FBSSxtQkFBbUIsV0FBdkIsRUFBcUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFdBQTlCO0FBQ3JDLFlBQUksTUFBSixhQUFJLE1BQUoscUNBQUksTUFBTSxDQUFFLFNBQVosK0NBQUksbUJBQW1CLFFBQXZCLEVBQWtDLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUE1QjtBQUN6QztBQUNQOztBQUVGLElBQUEsTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLHFCQUF6QixFQUErQyxvQkFBL0MsRUFBb0UsTUFBTSxDQUFDLFNBQTNFO0FBRUosSUFBQSxvQkFBb0IsQ0FBQyxzQkFBckIsQ0FBNEMsVUFBNUMsRUFBdUQsUUFBdkQsRUFBZ0UsTUFBaEUsRUFBdUUsSUFBdkUsRUFBNkUsSUFBN0UsQ0FBa0YsVUFBUyxJQUFULEVBQWU7QUFDckUsTUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixJQUFsQjtBQUNBLE1BQUEsTUFBTSxDQUFDLGlCQUFQLEdBQTJCLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBckMsQ0FGcUUsQ0FHckU7O0FBQ0EsTUFBQSxNQUFNLENBQUMsT0FBUCxHQUFpQixJQUFJLENBQUMsSUFBdEI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxPQUFQLENBQWUsT0FBZixHQUF1QixNQUFNLENBQUMsb0JBQTlCO0FBQ0EsTUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixJQUFJLENBQUMsSUFBTCxDQUFVLElBQTVCO0FBQ0EsTUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixJQUFJLENBQUMsSUFBTCxDQUFVLFFBQWhDO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsY0FBekIsR0FBd0MsSUFBSSxDQUFDLElBQUwsQ0FBVSxLQUFsRDtBQUNBLE1BQUEsTUFBTSxDQUFDLFdBQVAsR0FBbUIsVUFBbkI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixhQUF6QixHQUF5QyxJQUFJLENBQUMsSUFBTCxDQUFVLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixjQUF6QixHQUF3QyxRQUFsRCxDQUF6QztBQUNBLE1BQUEsTUFBTSxDQUFDLE9BQVAsQ0FBZSxRQUFmLEdBQTBCLFFBQTFCO0FBQ0EsTUFBQSxNQUFNLENBQUMsT0FBUCxDQUFlLGFBQWYsR0FBK0IsTUFBTSxDQUFDLGlCQUFQLENBQXlCLGFBQXhELENBWnFFLENBYXRFOztBQUVBLE1BQUEsUUFBUSxDQUFDLE9BQVQsQ0FBaUI7QUFBQyxRQUFBLElBQUksRUFBRSxNQUFNLENBQUM7QUFBZCxPQUFqQjtBQUVDLE1BQUEsTUFBTSxDQUFDLGVBQVAsR0FBdUIsS0FBdkI7QUFFQyxLQW5CN0IsRUFtQjhCLFVBQVMsS0FBVCxFQUFlO0FBRWhCLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0EsTUFBQSxNQUFNLENBQUMsZUFBUCxHQUF1QixLQUF2QjtBQUNILEtBdkIxQjtBQXdCRSxXQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNDLEdBN0RILENBM0l3TixDQTJNeE47OztBQUNBLEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsVUFBUyxPQUFULEVBQWlCLFFBQWpCLEVBQTBCO0FBQy9DLElBQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsT0FBdEIsRUFBOEIsUUFBOUI7QUFDSCxHQUZEOztBQUlDLEVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsVUFBUyxJQUFULEVBQWM7QUFDbEM7QUFDRCxJQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXVCLEtBQXZCO0FBQ0EsSUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsY0FBekIsR0FBd0MsQ0FBeEM7QUFDQSxRQUFJLElBQUksSUFBRSxTQUFWLEVBQXFCLE1BQU0sQ0FBQyxXQUFQLEdBQW1CLElBQW5CO0FBQ3JCLElBQUEsUUFBUSxDQUFDLFlBQVU7QUFDZixNQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXVCLElBQXZCO0FBQ0gsS0FGTyxDQUFSO0FBR0YsR0FSRDs7QUFVQSxFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLFlBQVU7QUFDeEIsSUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixNQUFNLENBQUMsUUFBN0IsRUFBc0MsTUFBTSxDQUFDLFlBQTdDLEVBQTBELE1BQU0sQ0FBQyxXQUFqRSxFQUE2RSxNQUFNLENBQUMsUUFBUCxDQUFnQixRQUE3RjtBQUNQLEdBRkE7QUFNQSxDLENBRUw7QUFDQTtBQUNBOzs7QUFFTyxTQUFTLGdCQUFULENBQTJCLE1BQTNCLEVBQW1DLFVBQW5DLEVBQStDLGVBQS9DLEVBQStELFlBQS9ELEVBQTRFLHFCQUE1RSxFQUFrRyxvQkFBbEcsRUFBdUgsaUJBQXZILEVBQXlJLGdCQUF6SSxFQUEwSixXQUExSixFQUFzSyxZQUF0SyxFQUFtTCxRQUFuTCxFQUE2TDtBQUU3TCxFQUFBLE1BQU0sQ0FBQyxJQUFQLEdBQVksa0JBQVo7QUFDQSxNQUFJLElBQUksR0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQztBQUVILEVBQUEsTUFBTSxDQUFDLFdBQVAsR0FBcUI7QUFDbkI7QUFDQyxJQUFBLGNBQWMsRUFBRSxJQUZFO0FBR2xCLElBQUEsY0FBYyxFQUFFLElBSEU7QUFJbEIsSUFBQSxnQkFBZ0IsRUFBRSxJQUpBO0FBS2xCLElBQUEsa0JBQWtCLEVBQUUsSUFMRjtBQU1sQixJQUFBLFdBQVcsRUFBRSxLQU5LO0FBT2xCLElBQUEseUJBQXlCLEVBQUcsQ0FQVjtBQVFsQixJQUFBLHNCQUFzQixFQUFHLENBUlA7QUFTbEIsSUFBQSxlQUFlLEVBQUUsSUFUQztBQVVsQixJQUFBLHdCQUF3QixFQUFFLElBVlI7QUFXbEIsSUFBQSxvQkFBb0IsRUFBRSxJQVhKO0FBWWxCLElBQUEscUJBQXFCLEVBQUUsSUFaTDtBQWFsQixJQUFBLG1CQUFtQixFQUFFLENBQUMsRUFBRCxFQUFLLEVBQUwsRUFBUyxFQUFULEVBQVksR0FBWixFQUFnQixHQUFoQixFQUFvQixHQUFwQixFQUF3QixJQUF4QixDQWJIO0FBY25CLElBQUEsd0JBQXdCLEVBQUUsS0FkUCxDQWVuQjtBQUNBO0FBQ0E7QUFDQTs7QUFsQm1CLEdBQXJCO0FBcUJGLE1BQUksaUJBQWlCLEdBQUc7QUFDdEIsSUFBQSxVQUFVLEVBQUUsQ0FEVTtBQUV0QixJQUFBLFFBQVEsRUFBRSxFQUZZO0FBR3RCLElBQUEsSUFBSSxFQUFFO0FBSGdCLEdBQXhCO0FBT0UsRUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEI7QUFDMUI7QUFDQyxJQUFBLGNBQWMsRUFBRSxJQUZTO0FBR3pCLElBQUEsY0FBYyxFQUFFLElBSFM7QUFJekIsSUFBQSxnQkFBZ0IsRUFBRSxJQUpPO0FBS3pCLElBQUEsa0JBQWtCLEVBQUUsSUFMSztBQU16QixJQUFBLFdBQVcsRUFBRSxLQU5ZO0FBT3pCLElBQUEseUJBQXlCLEVBQUcsQ0FQSDtBQVF6QixJQUFBLHNCQUFzQixFQUFHLENBUkE7QUFTekIsSUFBQSxlQUFlLEVBQUUsSUFUUTtBQVV6QixJQUFBLHdCQUF3QixFQUFFLElBVkQ7QUFXekIsSUFBQSxvQkFBb0IsRUFBRSxJQVhHLENBWTFCOztBQUNEO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBakJnQyxHQUE1QjtBQXNCRCxFQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLFlBQVksQ0FBQyxFQUEvQjtBQUNBLEVBQUEsTUFBTSxDQUFDLElBQVAsR0FBWSxFQUFaO0FBQ0EsRUFBQSxNQUFNLENBQUMsV0FBUCxDQUFtQixJQUFuQixHQUEwQixNQUFNLENBQUMsSUFBakM7O0FBRUEsRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFvQixVQUFVLEtBQVYsRUFBZ0IsTUFBaEIsRUFBd0I7QUFFM0MsSUFBQSxZQUFZLENBQUMsYUFBYixDQUEyQixNQUEzQixFQUFrQyxJQUFsQyxFQUF1QyxLQUF2QyxFQUE2QyxDQUE3QyxFQUFnRCxJQUFoRCxDQUFxRCxVQUFVLElBQVYsRUFBZTtBQUU1RCxhQUFPLElBQVA7QUFDRCxLQUhQO0FBSUEsR0FORCxDQTNEaU0sQ0FrRWxNO0FBQ0Q7QUFDQTs7O0FBQ0MsRUFBQSxNQUFNLENBQUMsZUFBUCxHQUF5QixVQUFVLE9BQVYsRUFBa0IsT0FBbEIsRUFBMEIsT0FBMUIsRUFBa0MsUUFBbEMsRUFBNEM7QUFFOUQsSUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixlQUFoQixHQUFrQyxpQkFBaUIsQ0FBQyxjQUFsQixDQUFpQyxtQ0FBaUMsTUFBTSxDQUFDLFVBQXpFLENBQWxDOztBQUlELFFBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFNLENBQUMsVUFBUCxHQUFrQixRQUE1QixJQUFzQyxPQUExQyxFQUNBO0FBQ0UsTUFBQSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFNLENBQUMsVUFBUCxHQUFrQixRQUE1QixDQUFWO0FBQ0QsS0FUOEQsQ0FXL0Q7OztBQUNBLElBQUEsb0JBQW9CLENBQUMsOEJBQXJCLENBQW9ELE1BQU0sQ0FBQyxVQUEzRCxFQUFzRSxPQUF0RSxFQUE4RSxPQUE5RSxFQUFzRixPQUF0RixFQUE4RixRQUE5RixFQUF1RyxJQUF2RyxFQUE0RyxFQUE1RyxFQUFnSCxFQUFoSCxFQUFvSCxJQUFwSCxDQUF5SCxVQUFTLElBQVQsRUFBZTtBQUU1RyxNQUFBLE1BQU0sQ0FBQyxJQUFQLEdBQWUsSUFBSSxDQUFDLElBQXBCO0FBQ0EsTUFBQSxNQUFNLENBQUMsV0FBUCxDQUFtQixJQUFuQixHQUEwQixNQUFNLENBQUMsSUFBakM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLElBQUksQ0FBQyxJQUFMLENBQVUsSUFBNUI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLElBQUksQ0FBQyxJQUFMLENBQVUsUUFBaEM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLElBQUksQ0FBQyxJQUFMLENBQVUsS0FBNUI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQW1CLE9BQW5CO0FBQ0EsTUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixJQUFJLENBQUMsSUFBTCxDQUFVLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLFFBQTVCLENBQWxCO0FBQ0EsTUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixRQUFsQjtBQUVBLFVBQUksTUFBTSxDQUFDLFVBQVAsR0FBa0IsQ0FBbEIsSUFBdUIsTUFBTSxDQUFDLFdBQVAsSUFBb0IsQ0FBL0MsRUFBa0QsTUFBTSxDQUFDLFdBQVAsR0FBbUIsQ0FBbkI7QUFDbEQsTUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixJQUFJLENBQUMsSUFBTCxDQUFVLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLFFBQTVCLENBQWxCO0FBQ0EsTUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixRQUFsQjtBQUNBLE1BQUEsTUFBTSxDQUFDLFVBQVAsR0FBa0IsTUFBTSxDQUFDLFVBQXpCLENBZDRHLENBZ0J2STtBQUMwQixLQWpCM0IsRUFpQjRCLFVBQVMsS0FBVCxFQUFlO0FBQ2YsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDTixLQW5CdEI7QUFvQkMsR0FoQ1A7O0FBbUNELEVBQUEsTUFBTSxDQUFDLFdBQVAsR0FBcUIsWUFBVTtBQUN4QixJQUFBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLE1BQU0sQ0FBQyxRQUE5QixFQUF1QyxNQUFNLENBQUMsWUFBOUMsRUFBMkQsTUFBTSxDQUFDLFdBQWxFLEVBQThFLE1BQU0sQ0FBQyxRQUFyRjtBQUNFLEdBRlQ7O0FBSUcsRUFBQSxNQUFNLENBQUMsV0FBUCxDQUFtQixhQUFuQixHQUFtQyxVQUFVLE9BQVYsRUFBbUI7QUFDbEQ7QUFDQSxJQUFBLE1BQU0sQ0FBQyxPQUFQLEdBQWlCLE9BQWpCO0FBQ0MsSUFBQSxPQUFPLENBQUMsU0FBUixDQUFrQixFQUFsQixDQUFxQixtQkFBckIsQ0FBeUMsTUFBekMsRUFBZ0QsVUFBUyxHQUFULEVBQWE7QUFFNUQsTUFBQSxNQUFNLENBQUMsc0JBQVAsR0FBOEIsR0FBRyxDQUFDLFVBQWxDOztBQUVDLFVBQUcsR0FBRyxDQUFDLFVBQVAsRUFBa0I7QUFDZixRQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUF3QixHQUFHLENBQUMsTUFBSixDQUFXLEVBQW5DO0FBQ0Q7QUFHSixLQVRBLEVBSGlELENBYWxEOztBQUNBLElBQUEsT0FBTyxDQUFDLFVBQVIsQ0FBbUIsRUFBbkIsQ0FBc0IsaUJBQXRCLENBQXdDLE1BQXhDLEVBQWdELFVBQVUsT0FBVixFQUFtQixRQUFuQixFQUE2QjtBQUN6RSxNQUFBLGlCQUFpQixDQUFDLFVBQWxCLEdBQStCLE9BQS9CO0FBQ0EsTUFBQSxpQkFBaUIsQ0FBQyxRQUFsQixHQUE2QixRQUE3QjtBQUNBLE1BQUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsTUFBTSxDQUFDLFFBQTlCLEVBQXVDLE1BQU0sQ0FBQyxZQUE5QyxFQUEyRCxPQUEzRCxFQUFtRSxRQUFuRTtBQUNILEtBSkQ7QUFLRixHQW5CRixDQTVHZ00sQ0FtSWxNO0FBQ0Q7QUFDQTs7O0FBQ0MsRUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsWUFBWTtBQUN0QyxRQUFJLElBQUksR0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQztBQUNDLElBQUEsb0JBQW9CLENBQUMsa0JBQXJCLENBQXdDLE1BQU0sQ0FBQyxVQUEvQyxFQUEwRCxDQUExRCxFQUE0RCxHQUE1RCxFQUFnRSxJQUFoRSxFQUFzRSxJQUF0RSxDQUEyRSxVQUFTLElBQVQsRUFBZTtBQUUvRSxNQUFBLE1BQU0sQ0FBQyxXQUFQLENBQW1CLFVBQW5CLEdBQWdDLElBQUksQ0FBQyxJQUFyQyxDQUYrRSxDQUcvRTs7QUFDQSxNQUFBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLE1BQU0sQ0FBQyxRQUE5QixFQUF1QyxNQUFNLENBQUMsWUFBOUMsRUFBMkQsaUJBQWlCLENBQUMsVUFBN0UsRUFBd0YsaUJBQWlCLENBQUMsUUFBMUcsRUFKK0UsQ0FLdEY7QUFDMEIsS0FOOUIsRUFNK0IsVUFBUyxLQUFULEVBQWU7QUFDZixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNOLEtBUnpCO0FBU0YsR0FYRCxDQXRJa00sQ0FrSm5NO0FBQ0E7QUFDQTs7O0FBQ0MsRUFBQSxNQUFNLENBQUMsd0JBQVAsR0FBa0MsVUFBVSxnQkFBVixFQUEyQixRQUEzQixFQUFxQztBQUdoRSxRQUFJLElBQUksR0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUExQztBQUVBLElBQUEsb0JBQW9CLENBQUMsc0JBQXJCLENBQTRDLE1BQU0sQ0FBQyxVQUFuRCxFQUE4RCxRQUE5RCxFQUF1RSxnQkFBdkUsRUFBd0YsQ0FBeEYsRUFBMEYsSUFBMUYsRUFBZ0csSUFBaEcsQ0FBcUcsVUFBUyxJQUFULEVBQWU7QUFFeEYsTUFBQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsSUFBMUIsR0FBaUMsSUFBSSxDQUFDLElBQXRDLENBRndGLENBR3hGOztBQUNBLE1BQUEsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFVBQTFCLEdBQXVDLElBQUksQ0FBQyxVQUE1QyxDQUp3RixDQU1wSDtBQUMwQixLQVAxQixFQU8yQixVQUFTLEtBQVQsRUFBZTtBQUNmLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ04sS0FUckI7QUFVQSxHQWZQLENBckprTSxDQXVLbk07QUFDQTtBQUNBOzs7QUFDQyxFQUFBLE1BQU0sQ0FBQyxzQkFBUCxHQUFnQyxVQUFVLGdCQUFWLEVBQTJCLFFBQTNCLEVBQXFDO0FBRzlELFFBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDO0FBRUEsSUFBQSxvQkFBb0IsQ0FBQywyQkFBckIsQ0FBaUQsZ0JBQWpELEVBQWtFLENBQWxFLEVBQW9FLElBQXBFLEVBQXlFO0FBQUMsTUFBQSxFQUFFLEVBQUU7QUFBTCxLQUF6RSxFQUF5RixJQUF6RixDQUE4RixVQUFTLElBQVQsRUFBZTtBQUVqRixNQUFBLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixJQUExQixHQUFpQyxJQUFJLENBQUMsSUFBdEM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixVQUExQixHQUF1QyxJQUFJLENBQUMsVUFBNUMsQ0FIaUYsQ0FJbkY7QUFDMUI7QUFDMEIsS0FOMUIsRUFNMkIsVUFBUyxLQUFULEVBQWU7QUFDZixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNOLEtBUnJCO0FBU0EsR0FkUDs7QUFpQlEsTUFBSSxNQUFNLENBQUMsVUFBUCxJQUFxQixTQUF6QixFQUNBO0FBQ0ksSUFBQSxXQUFXLENBQUMsY0FBWixDQUEyQixPQUEzQixFQUFvQyxJQUFwQyxDQUF5QyxVQUFVLElBQVYsRUFBZTtBQUNyRCxNQUFBLE1BQU0sQ0FBQyxrQkFBUDtBQUVGLEtBSEQsRUFHRSxVQUFTLEtBQVQsRUFBZTtBQUNkLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0YsS0FMRDtBQU1ILEdBbk15TCxDQW9NcE07OztBQUNJLEVBQUEsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsYUFBbkIsR0FBbUMsVUFBVSxPQUFWLEVBQW1CO0FBQ2xEO0FBQ0EsSUFBQSxNQUFNLENBQUMsT0FBUCxHQUFpQixPQUFqQjtBQUNDLElBQUEsT0FBTyxDQUFDLFNBQVIsQ0FBa0IsRUFBbEIsQ0FBcUIsbUJBQXJCLENBQXlDLE1BQXpDLEVBQWdELFVBQVMsR0FBVCxFQUFhO0FBRTVELE1BQUEsTUFBTSxDQUFDLHNCQUFQLEdBQThCLEdBQUcsQ0FBQyxVQUFsQzs7QUFFQyxVQUFHLEdBQUcsQ0FBQyxVQUFQLEVBQWtCO0FBQ2YsUUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBd0IsR0FBRyxDQUFDLE1BQUosQ0FBVyxFQUFuQztBQUNEO0FBR0osS0FUQTtBQVlFLEdBZlA7O0FBaUJDLEVBQUEsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsSUFBbkIsR0FBMEIsTUFBTSxDQUFDLElBQWpDOztBQUlILEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsVUFBUyxNQUFULEVBQWlCO0FBQ3RDLElBQUEsT0FBTyxDQUFDLEdBQVIsQ0FBWSxlQUFaO0FBRUEsR0FIRDtBQUtHLEMsQ0FFTDtBQUNBO0FBQ0E7OztBQUNPLFNBQVMsZ0JBQVQsQ0FBMkIsTUFBM0IsRUFBbUMsVUFBbkMsRUFBK0MscUJBQS9DLEVBQXFFLG9CQUFyRSxFQUEwRixpQkFBMUYsRUFBNEcsZ0JBQTVHLEVBQTZILFlBQTdILEVBQTBJLFFBQTFJLEVBQW1KLGVBQW5KLEVBQW1LLFFBQW5LLEVBQTRLLGVBQTVLLEVBQTZMO0FBQzlMLEVBQUEsTUFBTSxDQUFDLElBQVAsR0FBWSxrQkFBWjtBQUNBLEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBa0IsWUFBWSxDQUFDLEVBQS9CO0FBQ0EsRUFBQSxNQUFNLENBQUMsVUFBUCxHQUFvQixLQUFwQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBcUIsU0FBckI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQWtCO0FBQUMsSUFBQSxPQUFPLEVBQUM7QUFBQyxNQUFBLE1BQU0sRUFBQztBQUFSO0FBQVQsR0FBbEI7QUFDRixFQUFBLE1BQU0sQ0FBQyxLQUFQLEdBQWUsZUFBZjtBQUNBLEVBQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxnQkFBYjtBQUNFLE1BQUksSUFBSSxHQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDO0FBQ0EsRUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixPQUFqQixHQUEyQixlQUFlLENBQUMsbUJBQWhCLEVBQTNCLENBVDhMLENBVzlMOztBQUNFLEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBd0IsVUFBVSxJQUFWLEVBQWU7QUFFM0IsSUFBQSxvQkFBb0IsQ0FBQyxpQkFBckIsQ0FBdUMsSUFBSSxDQUFDLEVBQTVDLEVBQStDLElBQS9DLEVBQXFELElBQXJELENBQTBELFVBQVMsSUFBVCxFQUFlO0FBQzlELE1BQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsRUFBeEIsQ0FEOEQsQ0FFOUQ7O0FBRUEsTUFBQSxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQVYsQ0FBbUIsVUFBQSxNQUFNLEVBQUk7QUFDMUIsUUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixJQUF0QixDQUE2QjtBQUFFLGdCQUFNLE1BQU0sQ0FBQyxFQUFmO0FBQW1CLG9CQUFTLE1BQU0sQ0FBQyxNQUFuQztBQUEyQyx1QkFBYSxNQUFNLENBQUMsU0FBL0Q7QUFBMEUsdUJBQWEsTUFBTSxDQUFDLFNBQTlGO0FBQXdHLDJCQUFnQixNQUFNLENBQUM7QUFBL0gsU0FBN0I7QUFDRixPQUZEO0FBSUUsS0FSYixFQVFjLFVBQVMsS0FBVCxFQUFlO0FBQ25CLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ1QsS0FWRDtBQVdYLEdBYkQsQ0FaNEwsQ0EyQi9MOzs7QUFDSCxFQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUE0QixVQUFVLFdBQVYsRUFBdUI7QUFFNUMsUUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBMUM7QUFFQSxJQUFBLG9CQUFvQixDQUFDLGtCQUFyQixDQUF3QyxXQUF4QyxFQUFxRCxJQUFyRCxDQUEwRCxVQUFTLElBQVQsRUFBZTtBQUVyRCxNQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLElBQUksQ0FBQyxJQUE5QjtBQUVJLEtBSnhCLEVBSXlCLFVBQVMsS0FBVCxFQUFlO0FBRW5CLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0QsS0FQcEI7QUFRQSxHQVpQOztBQWNHLE1BQUksTUFBTSxHQUFFLFFBQVEsQ0FBQyxjQUFULENBQXdCLFFBQXhCLENBQVosQ0ExQytMLENBMkMvTDs7QUFDQyxFQUFBLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixRQUF4QixFQUFrQyxVQUFTLENBQVQsRUFBWTtBQUUxQztBQUNBLFFBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFGLENBQVMsS0FBckI7O0FBQ0EsUUFBSSxLQUFLLENBQUMsTUFBVixFQUFrQjtBQUNWLFVBQUksQ0FBQyxHQUFHLElBQUksVUFBSixFQUFSOztBQUNBLE1BQUEsQ0FBQyxDQUFDLE1BQUYsR0FBVyxVQUFTLENBQVQsRUFBWTtBQUNuQjtBQUNBLFlBQUksUUFBUSxHQUFHLENBQUMsQ0FBQyxNQUFGLENBQVMsTUFBeEI7QUFDQSxRQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLFFBQXJCO0FBRUEsUUFBQSxRQUFRLENBQUMsWUFBVztBQUFFLFVBQUEsTUFBTSxDQUFDLHFCQUFQO0FBQWlDLFNBQS9DLENBQVI7QUFDSCxPQU5EOztBQVFBLE1BQUEsQ0FBQyxDQUFDLFVBQUYsQ0FBYSxLQUFLLENBQUMsQ0FBRCxDQUFsQjtBQUNELEtBZm1DLENBZ0J4Qzs7O0FBQ1QsSUFBQSxRQUFRLENBQUMsWUFBVyxDQUFHLENBQWYsQ0FBUjtBQUNJLEdBbEJEO0FBdUJFLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBZ0IsS0FBaEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCO0FBQ2pCLElBQUEsY0FBYyxFQUFFLElBREM7QUFFakIsSUFBQSxjQUFjLEVBQUUsSUFGQztBQUdqQjtBQUNBLElBQUEsa0JBQWtCLEVBQUUsSUFKSDtBQUtiLElBQUEsV0FBVyxFQUFFLEtBTEE7QUFNYixJQUFBLHlCQUF5QixFQUFHLENBTmY7QUFPYixJQUFBLHVCQUF1QixFQUFHLENBUGI7QUFRYjtBQUNBLElBQUEsd0JBQXdCLEVBQUUsSUFUYjtBQVViLElBQUEsb0JBQW9CLEVBQUUsSUFWVDtBQVdsQjtBQUNDLElBQUEsbUJBQW1CLEVBQUUsQ0FBQyxDQUFELEVBQUcsRUFBSCxFQUFPLEVBQVAsRUFBVyxFQUFYLEVBQWMsR0FBZCxFQUFrQixHQUFsQixFQUFzQixHQUF0QixDQVpKO0FBYWpCLElBQUEsd0JBQXdCLEVBQUU7QUFiVCxHQUFyQjtBQWdCSCxFQUFBLE1BQU0sQ0FBQyxXQUFQLENBQW1CLFVBQW5CLEdBQWdDLENBQ2pDO0FBQUUsSUFBQSxJQUFJLEVBQUMsSUFBUDtBQUFhLElBQUEsS0FBSyxFQUFDO0FBQW5CLEdBRGlDLEVBRWpDO0FBQUUsSUFBQSxJQUFJLEVBQUM7QUFBUCxHQUZpQyxDQUFoQztBQUtKO0FBQ0s7O0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQjtBQUNoQixJQUFBLFVBQVUsRUFBRSxDQUNYO0FBQUUsTUFBQSxJQUFJLEVBQUUsSUFBUjtBQUFjLE1BQUEsV0FBVyxFQUFFLGNBQTNCO0FBQTJDLE1BQUEsSUFBSSxFQUFFLFFBQWpEO0FBQTJELE1BQUEsS0FBSyxFQUFDLEtBQWpFO0FBQXVFLE1BQUEsWUFBWSxFQUFFLEtBQXJGO0FBQTRGLE1BQUEsT0FBTyxFQUFFO0FBQXJHLEtBRFcsRUFFWDtBQUFFLE1BQUEsSUFBSSxFQUFFLGdCQUFSO0FBQTBCLE1BQUEsV0FBVyxFQUFFO0FBQXZDLEtBRlcsRUFHWDtBQUFFLE1BQUEsSUFBSSxFQUFFLE1BQVI7QUFBZ0IsTUFBQSxXQUFXLEVBQUU7QUFBN0IsS0FIVyxFQUlYO0FBQUUsTUFBQSxJQUFJLEVBQUUsa0JBQVI7QUFBNEIsTUFBQSxXQUFXLEVBQUU7QUFBekMsS0FKVyxFQUtYO0FBQUUsTUFBQSxJQUFJLEVBQUUsa0JBQVI7QUFBNEIsTUFBQSxXQUFXLEVBQUU7QUFBekMsS0FMVyxDQURJO0FBUWxCLElBQUEsY0FBYyxFQUFFLElBUkU7QUFTaEIsSUFBQSxjQUFjLEVBQUUsSUFUQTtBQVVwQixJQUFBLGdCQUFnQixFQUFFLElBVkU7QUFXaEIsSUFBQSxrQkFBa0IsRUFBRSxJQVhKO0FBWWpCLElBQUEsV0FBVyxFQUFFLEtBWkk7QUFhakIsSUFBQSx5QkFBeUIsRUFBRyxDQWJYO0FBY2xCLElBQUEsdUJBQXVCLEVBQUcsQ0FkUjtBQWVqQixJQUFBLGVBQWUsRUFBRSxJQWZBO0FBZ0JqQixJQUFBLHdCQUF3QixFQUFFLElBaEJUO0FBaUJqQixJQUFBLG9CQUFvQixFQUFFO0FBakJMLEdBQXRCOztBQW9CQyxFQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGFBQXBCLEdBQW9DLFVBQVUsT0FBVixFQUFtQjtBQUN0RCxJQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLE9BQWxCO0FBQ0UsSUFBQSxPQUFPLENBQUMsU0FBUixDQUFrQixFQUFsQixDQUFxQixtQkFBckIsQ0FBeUMsTUFBekMsRUFBZ0QsVUFBUyxHQUFULEVBQWE7QUFFM0QsTUFBQSxNQUFNLENBQUMsaUJBQVAsR0FBeUIsR0FBRyxDQUFDLFVBQTdCO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsR0FBMkIsR0FBRyxDQUFDLE1BQUosQ0FBVyxFQUF0QztBQUVBLFVBQUksTUFBTSxDQUFDLGVBQVAsSUFBd0IsU0FBNUIsRUFBdUMsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsTUFBdkIsR0FBOEIsQ0FBOUI7O0FBRXZDLFVBQUksTUFBTSxDQUFDLGlCQUFYLEVBQ0E7QUFDQyxRQUFBLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixHQUFHLENBQUMsTUFBSixDQUFXLEVBQXJDO0FBQ0E7QUFDRixLQVhEO0FBWUosR0FkQyxDQS9HNkwsQ0ErSC9MOzs7QUFDQSxFQUFBLE1BQU0sQ0FBQyxXQUFQLENBQW1CLGFBQW5CLEdBQW1DLFVBQVUsT0FBVixFQUFtQjtBQUNsRCxJQUFBLE1BQU0sQ0FBQyxPQUFQLEdBQWlCLE9BQWpCO0FBRUEsSUFBQSxPQUFPLENBQUMsU0FBUixDQUFrQixFQUFsQixDQUFxQixtQkFBckIsQ0FFTixNQUZNLEVBRUMsVUFBUyxHQUFULEVBQWE7QUFDVixNQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLEdBQUcsQ0FBQyxVQUF0QjtBQUNBLE1BQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0IsR0FBRyxDQUFDLE1BQUosQ0FBVyxFQUEvQjtBQUNBLE1BQUEsTUFBTSxDQUFDLFdBQVAsR0FBcUIsR0FBRyxDQUFDLE1BQUosQ0FBVyxJQUFoQztBQUNBLE1BQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxNQUFiLEdBQW9CLENBQXBCLENBSlUsQ0FJYTs7QUFDdkIsTUFBQSxNQUFNLENBQUMsS0FBUCxHQUFhLElBQUksQ0FBQyxLQUFMLENBQVcsR0FBRyxDQUFDLE1BQUosQ0FBVyxVQUFYLENBQXNCLE9BQXRCLENBQThCLElBQTlCLEVBQW1DLElBQW5DLENBQVgsQ0FBYjtBQUNBLE1BQUEsTUFBTSxDQUFDLE1BQVAsQ0FBYyxNQUFkLEdBQXFCLENBQXJCLENBTlUsQ0FNYTs7QUFDdkIsTUFBQSxNQUFNLENBQUMsTUFBUCxHQUFjLElBQUksQ0FBQyxLQUFMLENBQVcsR0FBRyxDQUFDLE1BQUosQ0FBVyxlQUFYLENBQTJCLE9BQTNCLENBQW1DLElBQW5DLEVBQXdDLElBQXhDLENBQVgsQ0FBZCxDQVBVLENBVVI7O0FBQ0csVUFBSSx3QkFBd0IsR0FBQyxFQUE3QjtBQUNBLFVBQUksdUJBQXVCLEdBQUcsRUFBOUI7O0FBQ0EsV0FBSSxJQUFJLENBQUMsR0FBQyxDQUFWLEVBQVksQ0FBQyxHQUFDLE1BQU0sQ0FBQyxNQUFQLENBQWMsTUFBNUIsRUFBbUMsQ0FBQyxFQUFwQyxFQUF3QztBQUM1QixRQUFBLHVCQUF1QixDQUFDLElBQXhCLENBQTZCLE1BQU0sQ0FBQyxNQUFQLENBQWMsQ0FBZCxFQUFpQixLQUE5QztBQUNBLFFBQUEsd0JBQXdCLENBQUMsSUFBekIsQ0FBOEIsZ0JBQWMsQ0FBNUM7QUFDWjs7QUFDRCxNQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLHVCQUF0QixFQUE4Qyx3QkFBOUMsRUFBd0UsS0FBeEUsRUFqQk0sQ0FtQlI7O0FBQ0EsVUFBSSx3QkFBd0IsR0FBQyxFQUE3QjtBQUNBLFVBQUksdUJBQXVCLEdBQUcsRUFBOUI7O0FBQ0EsV0FBSSxJQUFJLENBQUMsR0FBQyxDQUFWLEVBQVksQ0FBQyxHQUFDLE1BQU0sQ0FBQyxLQUFQLENBQWEsTUFBM0IsRUFBa0MsQ0FBQyxFQUFuQyxFQUF1QztBQUMxQixRQUFBLHVCQUF1QixDQUFDLElBQXhCLENBQTZCLE1BQU0sQ0FBQyxLQUFQLENBQWEsQ0FBYixFQUFnQixLQUE3QztBQUNBLFFBQUEsd0JBQXdCLENBQUMsSUFBekIsQ0FBOEIsZUFBYSxDQUEzQztBQUNaOztBQUNBLE1BQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsdUJBQXRCLEVBQThDLHdCQUE5QyxFQUF3RSxLQUF4RTtBQUdMLEtBL0JGLEVBSGtELENBa0M5QztBQUNQLEdBbkNEOztBQXVDSSxFQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUE0QixVQUFVLEdBQVYsRUFBZ0IsU0FBaEIsRUFBZ0M7QUFBRTtBQUV2RCxRQUFJLENBQUMsR0FBRyxFQUFSO0FBRUEsUUFBSyxHQUFHLElBQUksR0FBRyxDQUFDLGNBQUosQ0FBbUIsV0FBbkIsQ0FBWixFQUNtQixTQUFTLENBQUMsSUFBVixDQUFlO0FBQUMsTUFBQSxLQUFLLEVBQUMsRUFBUDtBQUFVLE1BQUEsSUFBSSxFQUFDLEdBQUcsQ0FBQyxJQUFuQjtBQUF3QixNQUFBLE1BQU0sRUFBQyxHQUFHLENBQUMsTUFBbkM7QUFBMEMsTUFBQSxjQUFjLEVBQUMsR0FBRyxDQUFDLGNBQTdEO0FBQTRFLE1BQUEsV0FBVyxFQUFDLEdBQUcsQ0FBQztBQUE1RixLQUFmO0FBRW5CLFFBQUksR0FBSixFQUFVLE1BQU0sQ0FBQyxJQUFQLENBQVksR0FBWixFQUFpQixPQUFqQixDQUNOLFVBQVMsR0FBVCxFQUFjO0FBRVYsVUFBTSxRQUFPLEdBQUcsQ0FBQyxHQUFELENBQVYsTUFBcUIsUUFBdEIsSUFBbUMsR0FBRyxDQUFDLEdBQUQsQ0FBM0MsRUFBcUQ7QUFBRztBQUNwRDtBQUVILFFBQUEsTUFBTSxDQUFDLGlCQUFQLENBQXlCLEdBQUcsQ0FBQyxHQUFELENBQTVCLEVBQW9DLFNBQXBDO0FBQ0EsT0FKRCxNQUtLO0FBQUk7QUFDRCxZQUFJLEdBQUcsSUFBSSxPQUFYLEVBQXFCLENBQ2xCO0FBQ0Y7QUFFSjtBQUNKLEtBZEMsRUFQMkMsQ0F1QnJEO0FBQ0gsR0F4Qko7O0FBMkJELEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0IsVUFBVSxlQUFWLEVBQTJCO0FBQzVDO0FBRUEsUUFBSSxHQUFHLEdBQUMsRUFBUjtBQUVDLElBQUEsTUFBTSxDQUFDLGlCQUFQLENBQXlCLGVBQXpCLEVBQTJDLEdBQTNDO0FBRUEsSUFBQSxNQUFNLENBQUMsTUFBUCxHQUFnQixHQUFoQjtBQUVGO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdlOztBQUNBLFFBQUksd0JBQXdCLEdBQUMsRUFBN0I7QUFDQSxRQUFJLHVCQUF1QixHQUFHLEVBQTlCOztBQUNELFNBQUksSUFBSSxDQUFDLEdBQUMsQ0FBVixFQUFZLENBQUMsR0FBQyxNQUFNLENBQUMsTUFBUCxDQUFjLE1BQTVCLEVBQW1DLENBQUMsRUFBcEMsRUFBd0M7QUFDNUIsTUFBQSx1QkFBdUIsQ0FBQyxJQUF4QixDQUE2QixNQUFNLENBQUMsTUFBUCxDQUFjLENBQWQsRUFBaUIsS0FBOUM7QUFDQSxNQUFBLHdCQUF3QixDQUFDLElBQXpCLENBQThCLGdCQUFjLENBQTVDO0FBQ1o7O0FBQ0QsSUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQix1QkFBdEIsRUFBOEMsd0JBQTlDLEVBQXdFLEtBQXhFO0FBRUosR0FoQ0QsQ0FsTTRMLENBa08xTDs7O0FBRUYsRUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixVQUFTLHVCQUFULEVBQWlDLHdCQUFqQyxFQUEyRCxRQUEzRCxFQUFvRTtBQUM5RCxJQUFBLFFBQVEsQ0FBQyxZQUFVO0FBQ2YsVUFBSSxVQUFVLEdBQUMsRUFBZjs7QUFFRCxXQUFLLElBQUksQ0FBQyxHQUFFLENBQVosRUFBYyxDQUFDLEdBQUMsd0JBQXdCLENBQUMsTUFBekMsRUFBZ0QsQ0FBQyxFQUFqRCxFQUFvRDtBQUNqRCxZQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsc0JBQVQsQ0FBZ0Msd0JBQXdCLENBQUMsQ0FBRCxDQUF4RCxDQUFoQjtBQUNBLFFBQUEsVUFBVSxDQUFDLElBQVgsQ0FBZ0IsU0FBUyxDQUFDLENBQUQsQ0FBekI7QUFDRjs7QUFFRCxNQUFBLGVBQWUsQ0FBQyxVQUFELEVBQ2I7QUFDSSxRQUFBLE9BQU8sRUFBRSxFQURiO0FBRUksUUFBQSxTQUFTLEVBQUMsUUFGZDtBQUdJLFFBQUEsYUFBYSxFQUFFLEtBSG5CO0FBSUksUUFBQSxJQUFJLEVBQUUsUUFKVjtBQUtJLFFBQUEsZUFBZSxFQUFFLHVCQUxyQjtBQU1JLFFBQUEsS0FBSyxFQUFFLGVBQVUsRUFBVixFQUFjLFNBQWQsRUFBeUIsTUFBekIsRUFBaUM7QUFDcEMsaUJBQU8sTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIscUJBQTFCLENBQVA7QUFDRDtBQVJQLE9BRGEsQ0FBZjtBQVdFLEtBbkJHLENBQVI7QUFvQlQsR0FyQnJCOztBQTBCSSxFQUFBLG9CQUFvQixDQUFDLHdCQUFyQixDQUE4QyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUE3RSxFQUFrRixTQUFsRixFQUE2RixJQUE3RixDQUNZLFVBQVMsSUFBVCxFQUFlO0FBQ2hDLElBQUEsTUFBTSxDQUFDLFdBQVAsR0FBcUIsSUFBSSxDQUFDLElBQTFCLENBRGdDLENBRVg7QUFDRixHQUpkLEVBS2EsVUFBUyxLQUFULEVBQWU7QUFBSSxJQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUFnRCxHQUxoRjtBQVVDLEVBQUEsb0JBQW9CLENBQUMsZUFBckIsQ0FBcUMsTUFBTSxDQUFDLFVBQTVDLEVBQXdELElBQXhELENBQTZELFVBQVMsSUFBVCxFQUFlO0FBQ3JFO0FBQ0EsSUFBQSxNQUFNLENBQUMsV0FBUCxDQUFtQixJQUFuQixHQUEwQixJQUFJLENBQUMsSUFBL0I7QUFDbUIsR0FIMUIsRUFHMkIsVUFBUyxLQUFULEVBQWU7QUFDakIsSUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDekIsR0FMQTtBQVFMLEVBQUEsTUFBTSxDQUFDLEtBQVAsR0FBZSxDQUNYO0FBQUUsSUFBQSxLQUFLLEVBQUUsRUFBVDtBQUNFLElBQUEsSUFBSSxFQUFDO0FBRFAsR0FEVyxDQUFmO0FBUUEsRUFBQSxNQUFNLENBQUMsTUFBUCxHQUFnQixFQUFoQjtBQUdBLEVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsQ0FDcEI7QUFBRSxJQUFBLEtBQUssRUFBRSxFQUFUO0FBQ0UsSUFBQSxJQUFJLEVBQUM7QUFEUCxHQURvQixDQUF4QjtBQU1GLEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBa0IsRUFBbEIsQ0FqUzhMLENBbVM5TDs7QUFDQSxPQUFJLElBQUksQ0FBQyxHQUFDLENBQVYsRUFBWSxDQUFDLEdBQUMsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsTUFBaEMsRUFBdUMsQ0FBQyxFQUF4QyxFQUE0QztBQUNsQyxJQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsQ0FBYixFQUFnQixLQUFoQixDQUFzQixJQUF0QixDQUEyQjtBQUFDLE1BQUEsSUFBSSxFQUFDLE1BQU0sQ0FBQyxVQUFQLENBQWtCLENBQWxCO0FBQU4sS0FBM0I7QUFDVCxHQXRTNkwsQ0F3UzdMOzs7QUFDQSxNQUFJLHdCQUF3QixHQUFDLEVBQTdCO0FBQ0EsTUFBSSx1QkFBdUIsR0FBRyxFQUE5Qjs7QUFDQSxPQUFJLElBQUksQ0FBQyxHQUFDLENBQVYsRUFBWSxDQUFDLEdBQUMsTUFBTSxDQUFDLEtBQVAsQ0FBYSxNQUEzQixFQUFrQyxDQUFDLEVBQW5DLEVBQXVDO0FBQzFCLElBQUEsdUJBQXVCLENBQUMsSUFBeEIsQ0FBNkIsTUFBTSxDQUFDLEtBQVAsQ0FBYSxDQUFiLEVBQWdCLEtBQTdDO0FBQ0EsSUFBQSx3QkFBd0IsQ0FBQyxJQUF6QixDQUE4QixlQUFhLENBQTNDO0FBQ1o7O0FBQ0EsRUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQix1QkFBdEIsRUFBOEMsd0JBQTlDLEVBQXdFLEtBQXhFOztBQUlGLEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsWUFBWTtBQUFDO0FBQ2xDO0FBQ0YsSUFBQSxvQkFBb0IsQ0FBQyxlQUFyQixDQUFxQyxNQUFNLENBQUMsVUFBNUMsRUFBdUQsR0FBdkQsRUFBMkQsSUFBM0QsRUFBaUUsSUFBakUsQ0FBc0UsVUFBUyxJQUFULEVBQWU7QUFDN0Q7QUFDQSxVQUFJLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBVixDQUFrQixNQUFsQixHQUF5QixDQUE3QixFQUNBO0FBQ0ssUUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixPQUFqQixHQUF5QixJQUFJLENBQUMsSUFBTCxDQUFVLE9BQW5DO0FBQ0o7O0FBQ0QsTUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBMkIsSUFBSSxDQUFDLElBQUwsQ0FBVSxrQkFBckM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxVQUFQLENBQWtCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQW5DLEVBUDZELENBUzdEO0FBQ0E7QUFDQTs7QUFDRSxNQUFBLFFBQVEsQ0FBQyxZQUFVO0FBQ2pCLFlBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxRQUFULEdBQW9CLEVBQXBCLENBQXVCLENBQXZCLEVBQTBCLFFBQTFCLEdBQXFDLEVBQXJDLENBQXdDLENBQXhDLEVBQTJDLFFBQTNDLEVBQWhCO0FBQUEsWUFBdUUsT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWxHLENBRGlCLENBRWpCOztBQUNBLFFBQUEsZUFBZSxDQUFDLFNBQUQsRUFDYjtBQUNBLFVBQUEsU0FBUyxFQUFFLFlBRFg7QUFFQTtBQUNBLFVBQUEsT0FBTyxFQUFFLENBQ1Q7QUFEUyxXQUhUO0FBTUEsVUFBQSxhQUFhLEVBQUUsSUFOZjtBQU9BLFVBQUEsZUFBZSxFQUFFLE9BUGpCO0FBUUE7QUFDRSxVQUFBLEtBQUssRUFBRSxlQUFVLEVBQVYsRUFBYyxTQUFkLEVBQXlCLE1BQXpCLEVBQWlDO0FBQ3RDLG1CQUFPLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTBCLFNBQU8sTUFBTSxDQUFDLFlBQWQsR0FBMkIsU0FBckQsQ0FBUDtBQUNEO0FBWEgsU0FEYSxDQUFmO0FBZ0JFLE9BbkJJLENBQVI7QUF1QkMsTUFBQSxRQUFRLENBQUMsWUFBVztBQUFDLFFBQUEsTUFBTSxDQUFDLFVBQVAsR0FBa0IsSUFBbEI7QUFBd0IsT0FBckMsRUFBc0MsSUFBdEMsQ0FBUjtBQUNGLEtBcEN6QixFQW9DMEIsVUFBUyxLQUFULEVBQWU7QUFDZixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNKLEtBdEN0QjtBQXVDRCxHQXpDRDs7QUEyQ0EsTUFBSSxNQUFNLENBQUMsVUFBUCxJQUFxQixTQUF6QixFQUNBO0FBQ0UsSUFBQSxNQUFNLENBQUMsZUFBUCxHQURGLENBRUU7QUFDRDs7QUFHQyxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLFVBQVUsS0FBVixFQUFpQjtBQUNwQyxRQUFJLEtBQUssSUFBRSxTQUFYLEVBQXNCLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLHVCQUE1QixFQUFvRCxPQUFwRCxFQUF0QixLQUVBLElBQUksS0FBSyxJQUFFLEtBQVgsRUFBa0I7QUFDaEIsTUFBQSxvQkFBb0IsQ0FBQyxXQUFyQixDQUFpQyxNQUFNLENBQUMsV0FBeEMsRUFBb0QsTUFBTSxDQUFDLFVBQTNELEVBQXNFLE1BQU0sQ0FBQyxNQUE3RSxFQUFvRixNQUFNLENBQUMsS0FBM0YsRUFBa0csSUFBbEcsQ0FBdUcsVUFBUyxJQUFULEVBQWU7QUFDdkcsUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsR0FBakMsRUFBcUMsU0FBckM7QUFDQSxRQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQW1CLEtBQW5CO0FBQ0EsUUFBQSxNQUFNLENBQUMsbUJBQVA7QUFDWixPQUpILEVBSUksVUFBUyxLQUFULEVBQWU7QUFDTSxRQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNDLE9BTjFCO0FBT0gsS0FSQyxDQVFEO0FBUkMsU0FTSSxvQkFBb0IsQ0FBQyxpQkFBckIsQ0FBdUMsTUFBTSxDQUFDLFdBQTlDLEVBQTBELE1BQU0sQ0FBQyxVQUFqRSxFQUE2RSxLQUE3RSxFQUFvRixNQUFNLENBQUMsTUFBM0YsRUFBa0csTUFBTSxDQUFDLEtBQXpHLEVBQWdILElBQWhILENBQXFILFVBQVMsSUFBVCxFQUFlO0FBQ2hJLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLEdBQWpDLEVBQXFDLFNBQXJDO0FBQ0EsTUFBQSxNQUFNLENBQUMsV0FBUCxHQUFtQixLQUFuQjtBQUNBLE1BQUEsTUFBTSxDQUFDLG1CQUFQO0FBQ29CLEtBSnhCLEVBSXlCLFVBQVMsS0FBVCxFQUFlO0FBQ2pCLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ3pCLEtBTkUsRUFaZ0MsQ0FvQnhDO0FBRUUsR0F0QkQsQ0FyVzRMLENBMlgxTDs7O0FBR04sRUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBNkIsWUFBVztBQUNsQztBQUNBLElBQUEsb0JBQW9CLENBQUMsZUFBckIsQ0FBcUMsTUFBTSxDQUFDLFVBQTVDLEVBQXdELElBQXhELENBQTZELFVBQVMsSUFBVCxFQUFlO0FBQ2xFLE1BQUEsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsSUFBbkIsR0FBMEIsSUFBSSxDQUFDLElBQS9CO0FBQ21CLEtBRjdCLEVBRThCLFVBQVMsS0FBVCxFQUFlO0FBQ2pCLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQzNCLEtBSkQ7QUFLTCxHQVBEOztBQVNBLEVBQUEsTUFBTSxDQUFDLHFCQUFQLEdBQStCLFlBQVk7QUFFcEMsSUFBQSxPQUFPLENBQUMsR0FBUixDQUFZLE1BQU0sQ0FBQyxXQUFuQjtBQUNDLElBQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxDQUFiLEVBQWdCLEtBQWhCLENBQXNCLE1BQXRCLEdBQTZCLENBQTdCO0FBRUEsUUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsS0FBbkIsQ0FBeUIsSUFBekIsQ0FBWjtBQUNBLElBQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0IsS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTLEtBQVQsQ0FBZSxPQUFmLENBQXBCLENBTm1DLENBTVM7O0FBRTNDLFNBQUksSUFBSSxDQUFDLEdBQUMsQ0FBVixFQUFZLENBQUMsR0FBRSxNQUFNLENBQUMsVUFBUCxDQUFrQixNQUFqQyxFQUF3QyxDQUFDLEVBQXpDLEVBQTZDO0FBQ3ZDLFVBQUksR0FBRyxHQUFDLE1BQU0sQ0FBQyxVQUFQLENBQWtCLENBQWxCLENBQVI7QUFDQSxVQUFJLEdBQUcsQ0FBQyxVQUFKLENBQWUsR0FBRyxDQUFDLE1BQUosR0FBVyxDQUExQixLQUE4QixFQUFsQyxFQUF1QyxHQUFHLEdBQUMsR0FBRyxDQUFDLFNBQUosQ0FBYyxDQUFkLEVBQWdCLEdBQUcsQ0FBQyxNQUFKLEdBQVcsQ0FBM0IsQ0FBSixDQUZBLENBRWtDOztBQUN6RSxVQUFJLEdBQUcsQ0FBQyxVQUFKLENBQWUsR0FBRyxDQUFDLE1BQUosR0FBVyxDQUExQixLQUE4QixFQUFsQyxFQUF1QyxHQUFHLEdBQUMsR0FBRyxDQUFDLFNBQUosQ0FBYyxDQUFkLEVBQWdCLEdBQUcsQ0FBQyxNQUFKLEdBQVcsQ0FBM0IsQ0FBSixDQUhBLENBR2tDOztBQUN6RSxVQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBSixHQUFXLENBQVosQ0FBSCxJQUFtQixHQUFwQixJQUE2QixHQUFHLENBQUMsQ0FBRCxDQUFILElBQVEsR0FBMUMsRUFBZ0QsR0FBRyxHQUFDLEdBQUcsQ0FBQyxTQUFKLENBQWMsQ0FBZCxFQUFnQixHQUFHLENBQUMsTUFBSixHQUFXLENBQTNCLENBQUosQ0FKVCxDQUkyQzs7QUFDbEYsTUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLENBQWIsRUFBZ0IsS0FBaEIsQ0FBc0IsSUFBdEIsQ0FBMkI7QUFBQyxRQUFBLElBQUksRUFBRTtBQUFQLE9BQTNCO0FBQ047O0FBR0QsSUFBQSxPQUFPLENBQUMsR0FBUixDQUFZLE1BQU0sQ0FBQyxVQUFuQjtBQUVILEdBbkJMOztBQXNCQSxFQUFBLE1BQU0sQ0FBQyxPQUFQLEdBQWlCLFVBQVUsY0FBVixFQUEwQjtBQUVwQztBQUNGLElBQUEsT0FBTyxDQUFDLEdBQVIsQ0FBWSxjQUFaLEVBSHNDLENBS3RDO0FBQ0E7O0FBQ0EsSUFBQSxvQkFBb0IsQ0FBQyxlQUFyQixDQUFxQyxjQUFyQyxFQUFvRCxHQUFwRCxFQUF3RCxJQUF4RCxFQUE4RCxJQUE5RCxDQUFtRSxVQUFTLElBQVQsRUFBZTtBQUMzRCxNQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLEVBQWxCLENBRDJELENBRTNEOztBQUNBLFVBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUFWLENBQWtCLE1BQWxCLEdBQXlCLENBQTdCLEVBQStCO0FBQzFCLFFBQUEsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsT0FBbEIsR0FBMEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUFwQztBQUNnQixZQUFJLEdBQUcsR0FBQyxFQUFSOztBQUNBLGFBQUssSUFBSSxDQUFDLEdBQUcsQ0FBYixFQUFnQixDQUFDLEdBQUksTUFBTSxDQUFDLFVBQVAsQ0FBa0IsT0FBbEIsQ0FBMEIsTUFBL0MsRUFBd0QsQ0FBQyxFQUF6RDtBQUNHLGVBQUssSUFBSSxDQUFDLEdBQUcsQ0FBYixFQUFpQixDQUFDLEdBQUUsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsT0FBbEIsQ0FBMEIsQ0FBMUIsRUFBNkIsTUFBN0IsQ0FBb0MsTUFBeEQsRUFBZ0UsQ0FBQyxFQUFqRTtBQUNBLGlCQUFLLElBQUksRUFBRSxHQUFHLENBQWQsRUFBa0IsRUFBRSxHQUFFLE1BQU0sQ0FBQyxVQUFQLENBQWtCLE9BQWxCLENBQTBCLENBQTFCLEVBQTZCLE1BQTdCLENBQW9DLENBQXBDLEVBQXVDLE1BQXZDLENBQThDLE1BQXBFLEVBQTRFLEVBQUUsRUFBOUUsRUFBa0Y7QUFDOUU7QUFDQSxjQUFBLEdBQUcsQ0FBQyxJQUFKLENBQVMsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsT0FBbEIsQ0FBMEIsQ0FBMUIsRUFBNkIsTUFBN0IsQ0FBb0MsQ0FBcEMsRUFBdUMsTUFBdkMsQ0FBOEMsRUFBOUMsQ0FBVDtBQUNIO0FBSkQ7QUFESCxTQUhVLENBVVA7OztBQUNBLGFBQUksSUFBSSxDQUFDLEdBQUMsQ0FBVixFQUFZLENBQUMsR0FBQyxHQUFHLENBQUMsTUFBbEIsRUFBeUIsQ0FBQyxFQUExQixFQUE4QjtBQUMzQixVQUFBLE1BQU0sQ0FBQyxNQUFQLENBQWMsSUFBZCxDQUFtQjtBQUFDLFlBQUEsS0FBSyxFQUFDLEVBQVA7QUFBVSxZQUFBLElBQUksRUFBQyxHQUFHLENBQUMsQ0FBRCxDQUFILENBQU8sSUFBdEI7QUFBMkIsWUFBQSxNQUFNLEVBQUMsR0FBRyxDQUFDLENBQUQsQ0FBSCxDQUFPLE1BQXpDO0FBQWdELFlBQUEsY0FBYyxFQUFDLEdBQUcsQ0FBQyxDQUFELENBQUgsQ0FBTztBQUF0RSxXQUFuQjtBQUNELFNBYkssQ0FjTjs7O0FBQ0ksWUFBSSx3QkFBd0IsR0FBQyxFQUE3QjtBQUNELFlBQUksdUJBQXVCLEdBQUcsRUFBOUI7O0FBRUosYUFBSSxJQUFJLENBQUMsR0FBQyxDQUFWLEVBQVksQ0FBQyxHQUFDLE1BQU0sQ0FBQyxNQUFQLENBQWMsTUFBNUIsRUFBbUMsQ0FBQyxFQUFwQyxFQUF3QztBQUM1QixVQUFBLHVCQUF1QixDQUFDLElBQXhCLENBQTZCLE1BQU0sQ0FBQyxNQUFQLENBQWMsQ0FBZCxFQUFpQixLQUE5QztBQUNBLFVBQUEsd0JBQXdCLENBQUMsSUFBekIsQ0FBOEIsZ0JBQWMsQ0FBNUM7QUFDWjs7QUFFRCxRQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLHVCQUF0QixFQUE4Qyx3QkFBOUMsRUFBd0UsS0FBeEU7QUFHdEIsT0E3QjBELENBK0IxRDs7O0FBQ0QsTUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBNEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxrQkFBdEM7QUFFRSxNQUFBLFFBQVEsQ0FBQyxZQUFVO0FBQ2pCLFlBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxRQUFULEdBQW9CLEVBQXBCLENBQXVCLENBQXZCLEVBQTBCLFFBQTFCLEdBQXFDLEVBQXJDLENBQXdDLENBQXhDLEVBQTJDLFFBQTNDLEVBQWhCO0FBQUEsWUFBdUUsT0FBTyxHQUFHLE1BQU0sQ0FBQyxVQUFQLENBQWtCLE9BQW5HLENBRGlCLENBRWpCOztBQUNBLFFBQUEsZUFBZSxDQUFDLFNBQUQsRUFDYjtBQUNBLFVBQUEsU0FBUyxFQUFFLFlBRFg7QUFFQTtBQUNBLFVBQUEsT0FBTyxFQUFFLENBQ1Q7QUFEUyxXQUhUO0FBTUEsVUFBQSxhQUFhLEVBQUUsSUFOZjtBQU9BLFVBQUEsZUFBZSxFQUFFLE9BUGpCO0FBUUE7QUFFRSxVQUFBLEtBQUssRUFBRSxlQUFVLEVBQVYsRUFBYyxTQUFkLEVBQXlCLE1BQXpCLEVBQWlDO0FBQ3RDLG1CQUFPLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLENBQTBCLFNBQU8sTUFBTSxDQUFDLFlBQWQsR0FBMkIsU0FBckQsQ0FBUDtBQUNEO0FBWkgsU0FEYSxDQUFmO0FBaUJFLE9BcEJJLENBQVI7QUF1QkMsTUFBQSxRQUFRLENBQUMsWUFBVztBQUFDLFFBQUEsTUFBTSxDQUFDLFVBQVAsR0FBa0IsSUFBbEI7QUFBd0IsT0FBckMsRUFBc0MsSUFBdEMsQ0FBUjtBQUNGLEtBMUR4QixFQTBEeUIsVUFBUyxLQUFULEVBQWU7QUFDZixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNKLEtBNURyQjtBQStERCxJQUFBLG9CQUFvQixDQUFDLFdBQXJCLENBQWlDLE1BQU0sQ0FBQyxXQUF4QyxFQUFxRCxNQUFNLENBQUMsVUFBNUQsRUFBdUUsTUFBTSxDQUFDLE1BQTlFLEVBQXFGLE1BQU0sQ0FBQyxLQUE1RixFQUFtRyxJQUFuRyxDQUF3RyxVQUFTLElBQVQsRUFBZTtBQUNoSCxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxHQUFqQyxFQUFxQyxTQUFyQztBQUNvQixLQUYzQixFQUU0QixVQUFTLEtBQVQsRUFBZTtBQUNqQixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUN6QixLQUpEO0FBTUEsR0E1RUosQ0E3WmdNLENBeWUxTDtBQUdOOzs7QUFDQyxFQUFBLE1BQU0sQ0FBQyxvQkFBUCxHQUE4QixZQUFZO0FBQ2xDLFFBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDO0FBRUEsSUFBQSxvQkFBb0IsQ0FBQyxvQkFBckIsQ0FBMEMsSUFBMUMsRUFBZ0QsSUFBaEQsQ0FBcUQsVUFBUyxJQUFULEVBQWU7QUFFL0MsTUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixJQUFwQixHQUEyQixJQUFJLENBQUMsSUFBaEM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLENBQXRCLEVBQXlCLEtBQXpCLENBQStCLE1BQS9CLEdBQXNDLENBQXRDLENBSCtDLENBSy9DOztBQUNBLFdBQUksSUFBSSxDQUFDLEdBQUMsQ0FBVixFQUFZLENBQUMsR0FBRSxJQUFJLENBQUMsSUFBTCxDQUFVLE1BQXpCLEVBQWdDLENBQUMsRUFBakMsRUFBcUM7QUFDM0IsWUFBSSxXQUFXLEdBQUMsRUFBaEI7O0FBQ0EsWUFBSSxJQUFJLENBQUMsSUFBTCxDQUFVLENBQVYsRUFBYSxNQUFqQixFQUF5QjtBQUNyQixVQUFBLFdBQVcsR0FBQyxJQUFJLENBQUMsS0FBTCxDQUFXLElBQUksQ0FBQyxJQUFMLENBQVUsQ0FBVixFQUFhLE1BQWIsQ0FBb0IsT0FBcEIsQ0FBNEIsSUFBNUIsRUFBaUMsSUFBakMsQ0FBWCxDQUFaO0FBQ0g7O0FBRUQsUUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixDQUF0QixFQUF5QixLQUF6QixDQUErQixJQUEvQixDQUFvQztBQUFDLFVBQUEsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFMLENBQVUsQ0FBVixFQUFhLGFBQXBCO0FBQWtDLFVBQUEsSUFBSSxFQUFDLFdBQXZDO0FBQW9ELFVBQUEsTUFBTSxFQUFFO0FBQTVELFNBQXBDO0FBQ0g7O0FBRVAsVUFBSSx3QkFBd0IsR0FBQyxFQUE3QjtBQUNBLFVBQUksdUJBQXVCLEdBQUcsRUFBOUI7O0FBQ0EsV0FBSSxJQUFJLENBQUMsR0FBQyxDQUFWLEVBQVksQ0FBQyxHQUFDLE1BQU0sQ0FBQyxjQUFQLENBQXNCLE1BQXBDLEVBQTJDLENBQUMsRUFBNUMsRUFBZ0Q7QUFDN0MsUUFBQSx1QkFBdUIsQ0FBQyxJQUF4QixDQUE2QixNQUFNLENBQUMsY0FBUCxDQUFzQixDQUF0QixFQUF5QixLQUF0RDtBQUNBLFFBQUEsd0JBQXdCLENBQUMsSUFBekIsQ0FBOEIsZ0JBQWMsQ0FBNUM7QUFDRjs7QUFDQyxNQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLHVCQUF0QixFQUE4Qyx3QkFBOUMsRUFBdUUsSUFBdkU7QUFFQyxLQXZCeEIsRUF1QnlCLFVBQVMsS0FBVCxFQUFlO0FBQ25CLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0QsS0F6QnBCO0FBMEJKLEdBN0JKOztBQWlDQyxFQUFBLE1BQU0sQ0FBQyxvQkFBUCxHQTlnQjhMLENBOGdCL0o7QUFHcEMsQyxDQUFBO0FBSUQ7OztBQUVPLFNBQVMsZ0JBQVQsR0FBNkI7QUFFaEMsTUFBSSxVQUFVLEdBQUksSUFBSSxHQUFKLENBQVE7QUFDdEIsSUFBQSxFQUFFLEVBQUUsVUFEa0I7QUFHdEIsSUFBQSxVQUFVLEVBQUUsQ0FDTDtBQURLLEtBSFU7QUFPdEIsSUFBQSxPQUFPLEVBQUUsbUJBQVUsQ0FJbEI7QUFYcUIsR0FBUixDQUFsQjtBQWNILEMsQ0FFQztBQUNEO0FBQ0E7OztBQUtNLFNBQVMscUJBQVQsQ0FBZ0MsVUFBaEMsRUFBNEMsbUJBQTVDLEVBQWdFLG9CQUFoRSxFQUFxRixnQkFBckYsRUFBc0csWUFBdEcsRUFDUDtBQUNRLE1BQUksVUFBVSxHQUFDLFlBQVksQ0FBQyxFQUE1QjtBQUNBLE1BQUksSUFBSSxHQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDO0FBRUEsTUFBSSxlQUFlLEdBQUksSUFBSSxHQUFKLENBQVE7QUFDL0IsSUFBQSxFQUFFLEVBQUUsZUFEMkI7QUFFL0IsSUFBQSxJQUFJLEVBQUU7QUFDSixNQUFBLFVBQVUsRUFBRSxVQURSO0FBRUosTUFBQSxRQUFRLEVBQUUsRUFGTjtBQUdKLE1BQUEsY0FBYyxFQUFFLEtBSFo7QUFJSixNQUFBLElBQUksRUFBRSxJQUpGO0FBS0osTUFBQSxVQUFVLEVBQUUsS0FMUjtBQU1KLE1BQUEsU0FBUyxFQUFFO0FBQUMsUUFBQSxPQUFPLEVBQUM7QUFBQyxVQUFBLE1BQU0sRUFBQztBQUFSO0FBQVQsT0FOUDtBQU9KLE1BQUEsa0JBQWtCLEVBQUU7QUFBQyxRQUFBLFVBQVUsRUFBQztBQUFDLFVBQUEsWUFBWSxFQUFDO0FBQWQ7QUFBWixPQVBoQjtBQVFKLE1BQUEsaUJBQWlCLEVBQUMsQ0FSZDtBQVNKLE1BQUEsYUFBYSxFQUFDO0FBVFYsS0FGeUI7QUFhakMsSUFBQSxPQUFPLEVBQUU7QUFDQyxNQUFBLGVBQWUsRUFBRywyQkFBWTtBQUN0QixZQUFJLEVBQUUsR0FBRyxJQUFUO0FBQ0EsYUFBSyxVQUFMLEdBQWdCLEtBQWhCLENBRnNCLENBR3RCOztBQUNBLFFBQUEsb0JBQW9CLENBQUMsZUFBckIsQ0FBcUMsS0FBSyxVQUExQyxFQUFxRCxHQUFyRCxFQUF5RCxLQUFLLElBQTlELEVBQW9FLElBQXBFLENBQXlFLFVBQVMsSUFBVCxFQUFlO0FBQ2xGO0FBQ0U7QUFDQSxjQUFJLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBVixDQUFrQixNQUFsQixHQUF5QixDQUE3QixFQUNBO0FBQ0c7QUFDQSxZQUFBLEVBQUUsQ0FBQyxTQUFILENBQWEsT0FBYixHQUFxQjtBQUFDLGNBQUEsTUFBTSxFQUFDLElBQUksQ0FBQyxJQUFMLENBQVU7QUFBbEIsYUFBckI7QUFFRixXQUxELE1BS00sRUFBRSxDQUFDLFNBQUgsQ0FBYSxPQUFiLEdBQXFCO0FBQUMsWUFBQSxNQUFNLEVBQUcsMkJBQWdCLG1CQUFoQjtBQUFWLFdBQXJCLENBUjBFLENBV2hGO0FBRUE7OztBQUVBLFVBQUEsRUFBRSxDQUFDLGtCQUFILEdBQXVCLElBQUksQ0FBQyxJQUFMLENBQVUsa0JBQWpDO0FBRUMsVUFBQSxFQUFFLENBQUMsa0JBQUgsQ0FBc0IsVUFBdEIsR0FBbUM7QUFBQyxZQUFBLFlBQVksRUFBQyxDQUFkO0FBQWdCLFlBQUEsVUFBVSxFQUFDO0FBQTNCLFdBQW5DLENBakIrRSxDQW1CaEY7O0FBQ0csVUFBQSxFQUFFLENBQUMsVUFBSCxHQUFjLElBQWQ7QUFFRixTQXRCVCxFQXNCVSxVQUFTLEtBQVQsRUFBZTtBQUNmLFVBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0osU0F4Qk47QUEwQlAsT0EvQkY7QUFpQ0MsTUFBQSxJQUFJLEVBQUMsZ0JBQVc7QUFDaEIsWUFBSSxFQUFFLEdBQUcsSUFBVDtBQUVDLE9BcENGO0FBc0NDLE1BQUEsSUFBSSxFQUFDLGdCQUFXO0FBQ2hCLFlBQUksRUFBRSxHQUFHLElBQVQ7QUFFQyxPQXpDRjtBQTBDQyxNQUFBLGlCQUFpQixFQUFDLDZCQUFXO0FBQzdCLFlBQUksRUFBRSxHQUFHLElBQVQ7QUFFQyxPQTdDRjtBQThDQyxNQUFBLFVBQVUsRUFBQyxzQkFBVztBQUN0QixZQUFJLEVBQUUsR0FBRyxJQUFUO0FBRUMsT0FqREY7QUFrREMsTUFBQSxZQUFZLEVBQUMsd0JBQVc7QUFDeEIsWUFBSSxFQUFFLEdBQUcsSUFBVDtBQUVDLE9BckRGO0FBc0RDLE1BQUEsZ0JBQWdCLEVBQUMsNEJBQVc7QUFDNUIsWUFBSSxFQUFFLEdBQUcsSUFBVDtBQUVDO0FBekRGLEtBYndCO0FBeUVuQyxJQUFBLFFBQVEsRUFBRTtBQUVOLE1BQUEsZUFBZSxFQUFDLDJCQUFVO0FBRXpCLGVBQU8sMkJBQWdCLGVBQWhCLENBQWdDLENBQWhDLENBQVA7QUFHQTtBQVBLLEtBekV5QjtBQWtGbkMsSUFBQSxVQUFVLEVBQUUsQ0FDRDtBQURDLEtBbEZ1QjtBQXFGbkMsSUFBQSxPQUFPLEVBQUUsbUJBQVU7QUFHZixVQUFJLEVBQUUsR0FBRyxJQUFUOztBQUNBLFVBQUksS0FBSyxVQUFMLElBQW1CLFNBQXZCLEVBQ0E7QUFFQSxRQUFBLG9CQUFvQixDQUFDLGlCQUFyQixDQUF1QyxLQUFLLFVBQTVDLEVBQXdELElBQXhELENBQTZELFVBQVMsSUFBVCxFQUFlO0FBRXBFLFVBQUEsRUFBRSxDQUFDLFFBQUgsR0FBYyxJQUFJLENBQUMsSUFBbkI7QUFDQSxVQUFBLEVBQUUsQ0FBQyxjQUFILEdBQW9CLElBQXBCO0FBRVAsU0FMRCxFQUtFLFVBQVMsS0FBVCxFQUFlO0FBRVQsVUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDUCxTQVJEO0FBU0EsYUFBSyxlQUFMO0FBRUQsT0FsQmdCLENBb0JqQjs7QUFFRDtBQTNHa0MsR0FBUixDQUF2QjtBQStHUCxDLENBR0M7QUFFRTtBQUVIOzs7QUFFUyxTQUFTLFVBQVQsQ0FBcUIsR0FBckIsRUFBMEIsVUFBMUIsRUFBdUM7QUFDOUM7QUFDSyxNQUFJLENBQUMsR0FBRyxFQUFSO0FBQ0EsTUFBSSxZQUFZLEdBQUcsRUFBbkI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxJQUFQLENBQVksR0FBWixFQUFpQixPQUFqQixDQUF5QixVQUFTLEdBQVQsRUFBYztBQUNuQyxRQUFNLFFBQU8sR0FBRyxDQUFDLEdBQUQsQ0FBVixNQUFxQixRQUF0QixJQUFtQyxHQUFHLENBQUMsR0FBRCxDQUF0QyxJQUFnRCxHQUFHLElBQUksV0FBdkQsSUFBc0UsR0FBRyxJQUFJLFlBQTdFLElBQTZGLEdBQUcsSUFBSSxZQUF6RyxFQUF3SDtBQUFFO0FBQ2xILE1BQUEsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFELENBQUosRUFBVyxVQUFYLENBQVY7QUFDUCxLQUZELE1BRVM7QUFDRixVQUFLLENBQUMsWUFBRCxFQUFlLGVBQWYsRUFBZ0MsT0FBaEMsRUFBeUMsV0FBekMsRUFBdUQsMkJBQXZELEVBQW9GLGFBQXBGLEVBQWtHLFFBQWxHLEVBQTRHLGVBQTVHLEVBQThILGdCQUE5SCxFQUFnSixRQUFoSixDQUF5SixHQUF6SixDQUFMLEVBQXNLO0FBQ2pLLFFBQUEsQ0FBQyxDQUFDLEdBQUQsQ0FBRCxHQUFRLEdBQUcsQ0FBQyxHQUFELENBQVg7QUFDQSxRQUFBLFlBQVksR0FBQyxHQUFiO0FBQ0M7QUFDUjtBQUNKLEdBVEw7O0FBV0EsTUFBSSxNQUFNLENBQUMsSUFBUCxDQUFZLENBQVosRUFBZSxNQUFmLEdBQXdCLENBQXhCLElBQ0csQ0FBQyxDQUFDLGFBQUQsQ0FBRCxJQUFrQixVQUR6QixFQUNzQztBQUM5QixJQUFBLENBQUMsQ0FBQyxRQUFELENBQUQsR0FBWSxZQUFaO0FBQ0EsSUFBQSxVQUFVLENBQUMsSUFBWCxDQUFnQixZQUFoQjtBQUNQO0FBQ0o7O0FBQUEsQyxDQUVIO0FBQ0Q7QUFDRztBQUNBO0FBQ0M7QUFDSjs7QUFFUyxTQUFTLHVCQUFULENBQWtDLEdBQWxDLEVBQXVDLFVBQXZDLEVBQXFEO0FBQzVEO0FBQ0ssTUFBSSxDQUFDLEdBQUcsRUFBUjtBQUNBLE1BQUksWUFBWSxHQUFHLEVBQW5CO0FBQ0EsRUFBQSxNQUFNLENBQUMsSUFBUCxDQUFZLEdBQVosRUFBaUIsT0FBakIsQ0FBeUIsVUFBUyxHQUFULEVBQWM7QUFDbkMsUUFBTSxRQUFPLEdBQUcsQ0FBQyxHQUFELENBQVYsTUFBcUIsUUFBdEIsSUFBbUMsR0FBRyxDQUFDLEdBQUQsQ0FBdEMsSUFDTSxHQUFHLElBQUksV0FEbEIsRUFDaUM7QUFDakM7QUFDRyxRQUFBLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxHQUFELENBQUosRUFBVyxVQUFYLENBQXZCO0FBQ0YsT0FKRCxNQUtLO0FBQ0csVUFBSyxDQUFDLGVBQUQsRUFBa0IsT0FBbEIsRUFBMkIsV0FBM0IsRUFBeUMsMkJBQXpDLEVBQXNFLGFBQXRFLEVBQW9GLFFBQXBGLEVBQThGLGVBQTlGLEVBQWdILGdCQUFoSCxFQUFrSSxRQUFsSSxDQUEySSxHQUEzSSxDQUFMLEVBQXdKO0FBQ3BKLFFBQUEsQ0FBQyxDQUFDLEdBQUQsQ0FBRCxHQUFRLEdBQUcsQ0FBQyxHQUFELENBQVg7QUFDQSxRQUFBLFlBQVksR0FBQyxHQUFiO0FBQ0M7O0FBQ0wsVUFBSyxHQUFHLElBQUksV0FBWixFQUEwQjtBQUN2QjtBQUNDLFlBQUksS0FBSyxDQUFDLE9BQU4sQ0FBYyxHQUFHLENBQUMsR0FBRCxDQUFqQixDQUFKLEVBQThCLENBQUMsQ0FBQyxHQUFELENBQUQsR0FBUSxHQUFHLENBQUMsR0FBRCxDQUFILENBQVMsQ0FBVCxDQUFSLENBQTlCLEtBQ0ssQ0FBQyxDQUFDLEdBQUQsQ0FBRCxHQUFRLEdBQUcsQ0FBQyxHQUFELENBQVg7QUFDUjtBQUVKO0FBQ0osR0FsQkw7O0FBb0JBLE1BQUksTUFBTSxDQUFDLElBQVAsQ0FBWSxDQUFaLEVBQWUsTUFBZixHQUF3QixDQUF4QixJQUE2QixDQUFFLENBQUMsV0FBRCxFQUFhLGNBQWIsRUFBNkIsUUFBN0IsQ0FBc0MsQ0FBQyxDQUFDLGVBQUQsQ0FBdkMsQ0FBbkMsRUFDQTtBQUNRLElBQUEsQ0FBQyxDQUFDLFFBQUQsQ0FBRCxHQUFZLFlBQVo7QUFDQSxJQUFBLFVBQVUsQ0FBQyxJQUFYLENBQWdCLENBQWhCO0FBQ1A7QUFDSjs7QUFBQSxDLENBR0g7QUFDRDtBQUNBOztBQUVNLFNBQVMsZ0JBQVQsQ0FBMkIsTUFBM0IsRUFBbUMsVUFBbkMsRUFBK0MscUJBQS9DLEVBQXFFLG1CQUFyRSxFQUF5RixvQkFBekYsRUFBOEcsWUFBOUcsRUFBMkgsaUJBQTNILEVBQTZJLGdCQUE3SSxFQUE4SixxQkFBOUosRUFBb0wsWUFBcEwsRUFBaU0sUUFBak0sRUFBME0sZUFBMU0sRUFBME4sV0FBMU4sRUFBc08sUUFBdE8sRUFBK08sY0FBL08sRUFBOFAsTUFBOVAsRUFDUDtBQUVJLEVBQUEsTUFBTSxDQUFDLEtBQVAsR0FBZSxlQUFmO0FBQ0EsRUFBQSxNQUFNLENBQUMsR0FBUCxHQUFhLG1CQUFiO0FBQ0EsRUFBQSxNQUFNLENBQUMsU0FBUCxHQUFtQjtBQUFJLElBQUEsS0FBSyxFQUFDLE1BQU0sQ0FBQyxLQUFqQjtBQUF3QixJQUFBLGNBQWMsRUFBQztBQUF2QyxHQUFuQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsRUFBbEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLEVBQWxCO0FBQ0EsRUFBQSxNQUFNLENBQUMsZUFBUCxHQUF1QixFQUF2QjtBQUNBLEVBQUEsTUFBTSxDQUFDLElBQVAsR0FBWSxrQkFBWjtBQUNBLEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0IsS0FBcEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXFCLFNBQXJCO0FBQ0EsTUFBSSxJQUFJLEdBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEM7QUFDQSxFQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLFlBQVksQ0FBQyxFQUEvQjtBQUNBLEVBQUEsTUFBTSxDQUFDLG1CQUFQLEdBQTZCLEtBQTdCO0FBQ0EsRUFBQSxNQUFNLENBQUMscUJBQVAsR0FBK0IsSUFBL0I7QUFDQSxFQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGtCQUFqQixHQUFzQyxFQUF0QztBQUNBLEVBQUEsTUFBTSxDQUFDLFdBQVAsR0FBbUIsWUFBWSxDQUFDLFdBQWhDO0FBQ0EsRUFBQSxNQUFNLENBQUMsYUFBUCxHQUFxQixFQUFyQjtBQUNBLEVBQUEsTUFBTSxDQUFDLGlCQUFQLEdBQXlCLENBQzNCO0FBQUMsSUFBQSxLQUFLLEVBQUMsSUFBUDtBQUFZLElBQUEsSUFBSSxFQUFDLElBQWpCO0FBQXNCLElBQUEsR0FBRyxFQUFDLENBQTFCO0FBQTRCLElBQUEsSUFBSSxFQUFDO0FBQWpDLEdBRDJCLEVBRTNCO0FBQUMsSUFBQSxLQUFLLEVBQUMsWUFBUDtBQUFvQixJQUFBLElBQUksRUFBQyxPQUF6QjtBQUFpQyxJQUFBLEdBQUcsRUFBQztBQUFyQyxHQUYyQixFQUczQjtBQUFDLElBQUEsS0FBSyxFQUFDLFlBQVA7QUFBb0IsSUFBQSxJQUFJLEVBQUMsUUFBekI7QUFBa0MsSUFBQSxHQUFHLEVBQUM7QUFBdEMsR0FIMkIsRUFJM0I7QUFBQyxJQUFBLEtBQUssRUFBQyxjQUFQO0FBQXNCLElBQUEsSUFBSSxFQUFDLE9BQTNCO0FBQW1DLElBQUEsR0FBRyxFQUFDO0FBQXZDLEdBSjJCLEVBSzNCO0FBQUMsSUFBQSxLQUFLLEVBQUMsU0FBUDtBQUFpQixJQUFBLElBQUksRUFBQyxXQUF0QjtBQUFrQyxJQUFBLEdBQUcsRUFBQztBQUF0QyxHQUwyQixFQU0zQjtBQUFDLElBQUEsS0FBSyxFQUFDLFVBQVA7QUFBa0IsSUFBQSxJQUFJLEVBQUMsVUFBdkI7QUFBa0MsSUFBQSxJQUFJLEVBQUMsTUFBdkM7QUFBOEMsSUFBQSxHQUFHLEVBQUM7QUFBbEQsR0FOMkIsRUFPM0I7QUFBQyxJQUFBLEtBQUssRUFBQyxVQUFQO0FBQWtCLElBQUEsSUFBSSxFQUFDLFVBQXZCO0FBQWtDLElBQUEsSUFBSSxFQUFDLE1BQXZDO0FBQThDLElBQUEsR0FBRyxFQUFDO0FBQWxELEdBUDJCLEVBUTNCO0FBQUMsSUFBQSxLQUFLLEVBQUMsUUFBUDtBQUFnQixJQUFBLElBQUksRUFBQyxRQUFyQjtBQUE4QixJQUFBLEdBQUcsRUFBQztBQUFsQyxHQVIyQixFQVMzQjtBQUFDLElBQUEsS0FBSyxFQUFDLFFBQVA7QUFBZ0IsSUFBQSxJQUFJLEVBQUMsY0FBckI7QUFBb0MsSUFBQSxHQUFHLEVBQUMsQ0FBeEM7QUFBMEMsSUFBQSxJQUFJLEVBQUM7QUFBL0MsR0FUMkIsRUFVM0I7QUFBQyxJQUFBLEtBQUssRUFBQyxTQUFQO0FBQWlCLElBQUEsSUFBSSxFQUFDLFNBQXRCO0FBQWdDLElBQUEsR0FBRyxFQUFDO0FBQXBDLEdBVjJCLEVBVzNCO0FBQUMsSUFBQSxLQUFLLEVBQUMsa0JBQVA7QUFBMEIsSUFBQSxJQUFJLEVBQUMsaUJBQS9CO0FBQWlELElBQUEsR0FBRyxFQUFDO0FBQXJELEdBWDJCLENBQXpCO0FBY0EsRUFBQSxNQUFNLENBQUMsb0JBQVAsR0FBNEI7QUFBQyxTQUFJLEtBQUw7QUFBVyxTQUFJLFFBQWY7QUFBd0IsU0FBSSxRQUE1QjtBQUFxQyxTQUFJO0FBQXpDLEdBQTVCO0FBRUEsRUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLGdCQUFiO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixXQUF0QjtBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsYUFBcEI7O0FBRUEsTUFBSSxNQUFNLENBQUMsV0FBUCxLQUFxQixTQUFyQixJQUFrQyxNQUFNLENBQUMsV0FBUCxLQUFxQixFQUEzRCxFQUNBO0FBRUcsSUFBQSxNQUFNLENBQUMsV0FBUCxHQUFtQjtBQUFDLE1BQUEsS0FBSyxFQUFDO0FBQUMsUUFBQSxJQUFJLEVBQUM7QUFBTixPQUFQO0FBQTBDLE1BQUEsS0FBSyxFQUFDLHlCQUFoRDtBQUEwRSxNQUFBLE1BQU0sRUFBQztBQUFqRixLQUFuQjtBQUNGOztBQUNELEVBQUEsTUFBTSxDQUFDLFdBQVAsR0FBcUI7QUFBQyxJQUFBLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxVQUExQjtBQUFxQyxJQUFBLGVBQWUsRUFBRztBQUF2RCxHQUFyQjtBQUVBLE1BQUksZUFBZSxHQUFFLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQixpQkFBdEIsRUFBd0MsSUFBeEMsQ0FBckI7QUFDQSxNQUFJLG1CQUFtQixHQUFHLGVBQWUsQ0FBQyxPQUFoQixDQUF3QixJQUFsRDtBQUNBLEVBQUEsTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLG1CQUF6QixFQUE2QyxtQkFBN0MsRUFBa0U7QUFBQyxJQUFBLE1BQU0sRUFBQyxLQUFSO0FBQWMsSUFBQSxJQUFJLEVBQUM7QUFBbkIsR0FBbEU7O0FBRUEsRUFBQSxNQUFNLENBQUMsNEJBQVAsR0FBb0MsWUFBVTtBQUMxQyxJQUFBLG9CQUFvQixDQUFDLHFCQUFyQixDQUEyQyxNQUFNLENBQUMsVUFBbEQsRUFBOEQsSUFBOUQsQ0FBbUUsVUFBVSxJQUFWLEVBQWdCO0FBQ2hGLE1BQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLEdBQXNDLElBQUksQ0FBQyxJQUEzQztBQUNGLEtBRkQ7QUFHSCxHQUpEOztBQUtBLEVBQUEsTUFBTSxDQUFDLDRCQUFQO0FBQ0EsRUFBQSxRQUFRLENBQUMsWUFBVztBQUFJLElBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsTUFBeEI7QUFBeUMsR0FBekQsQ0FBUjtBQUVBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVJLEVBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLEdBQXdDLFlBQ3hDO0FBQ0csUUFBSSxXQUFXLEdBQUcsUUFBUSxDQUFDLHNCQUFULENBQWdDLHFCQUFoQyxDQUFsQjtBQUVBLElBQUEsTUFBTSxDQUFDLGFBQVAsR0FBdUIsRUFBdkI7O0FBRUQsUUFBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixJQUFpQyxVQUFyQyxFQUNBO0FBQ0UsTUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixHQUFrQyxPQUFsQztBQUNELE1BQUEsTUFBTSxDQUFDLGFBQVAsR0FBdUIsTUFBTSxDQUFDLEtBQVAsQ0FBYSw0QkFBYixDQUEwQyxXQUFXLENBQUMsQ0FBRCxDQUFyRCxDQUF2QjtBQUVBLEtBTEQsTUFNSyxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixHQUFnQyxVQUFoQztBQUNOLEdBYkQ7O0FBaUJBLEVBQUEsTUFBTSxDQUFDLG1CQUFQLEdBQTZCLFlBQzdCO0FBQ0ksSUFBQSxvQkFBb0IsQ0FBQyxtQkFBckIsQ0FBeUMsTUFBTSxDQUFDLFVBQWhELEVBQTJELE1BQU0sQ0FBQyxRQUFQLENBQWdCLFlBQTNFLEVBQXdGLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE9BQXhHLEVBQWlILElBQWpILENBQ0wsVUFBUyxJQUFULEVBQWU7QUFDZCxNQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUEyQixJQUFJLENBQUMsSUFBaEM7QUFDQTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0ksS0FSSSxFQVFILFVBQVMsS0FBVCxFQUFlO0FBQ2hCLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0EsS0FWSTtBQVdILEdBYkQ7O0FBZUEsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixZQUN0QjtBQUNJLElBQUEsTUFBTSxDQUFDLGlCQUFQLEdBQXlCLElBQXpCO0FBQ0EsUUFBSSxTQUFTLEdBQUcsQ0FBQztBQUFDLE1BQUEsR0FBRyxFQUFDLE1BQU0sQ0FBQyxVQUFaO0FBQXVCLE1BQUEsV0FBVyxFQUFDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFlBQW5EO0FBQWdFLE1BQUEsT0FBTyxFQUFDLE1BQU0sQ0FBQyxRQUFQLENBQWdCO0FBQXhGLEtBQUQsQ0FBaEI7QUFDQSxJQUFBLG9CQUFvQixDQUFDLFlBQXJCLENBQWtDLFNBQWxDLEVBQTZDLElBQTdDLENBQWtELFVBQVMsSUFBVCxFQUFlO0FBQUE7O0FBRTdELE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxHQUF0QyxFQUEwQyxTQUExQztBQUNBLE1BQUEsTUFBTSxDQUFDLGlCQUFQLENBQXlCLFNBQXpCLEdBQXFDLElBQUksQ0FBQyxJQUFMLENBQVUsU0FBL0M7QUFDQSxNQUFBLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixRQUF6QixHQUFvQyxJQUFJLENBQUMsSUFBTCxDQUFVLFFBQTlDO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsT0FBekIsR0FBbUMsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUE3QztBQUNBLE1BQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsT0FBaEIsR0FBd0IsTUFBTSxDQUFDLGlCQUFQLENBQXlCLE9BQWpEO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsZ0JBQXpCLEdBQTZDLElBQTdDLGFBQTZDLElBQTdDLHVDQUE2QyxJQUFJLENBQUUsSUFBbkQsaURBQTZDLGFBQVksZ0JBQXpEO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsUUFBekIsR0FBb0MsSUFBSSxDQUFDLElBQUwsQ0FBVSxRQUE5QztBQUNBLE1BQUEsTUFBTSxDQUFDLGlCQUFQLENBQXlCLFdBQXpCLEdBQXVDLElBQUksQ0FBQyxJQUFMLENBQVUsV0FBakQ7QUFDQSxNQUFBLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixlQUF6QixHQUEyQyxJQUFJLENBQUMsSUFBTCxDQUFVLGVBQXJEO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsU0FBekIsR0FBcUMsSUFBSSxDQUFDLElBQUwsQ0FBVSxTQUEvQztBQUNBLE1BQUEsTUFBTSxDQUFDLGlCQUFQLENBQXlCLEtBQXpCLEdBQWlDLENBQWpDO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsR0FBekIsR0FBK0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxHQUF6QztBQUNBLE1BQUEsTUFBTSxDQUFDLGlCQUFQLEdBQXlCLEtBQXpCO0FBRUgsS0FoQkQsRUFnQkUsVUFBUyxLQUFULEVBQWU7QUFDYixNQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUF5QixLQUF6QjtBQUNBLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0gsS0FuQkQ7QUFvQkgsR0F4QkQ7O0FBMkJBLE1BQUksbUJBQW1CLEdBQUcsU0FBdEIsbUJBQXNCLENBQVMsSUFBVCxFQUMxQjtBQUNJLElBQUEsZ0JBQWdCLENBQUMsT0FBakIsQ0FBeUIsZUFBekIsR0FBMkMsSUFBM0M7QUFFQSxJQUFBLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxPQUFqQixDQUF5QixvQkFBeEM7QUFFQSxRQUFJLFlBQVksR0FBQyxDQUFqQixFQUFvQixJQUFJLEdBQUMsS0FBTCxDQUFwQixLQUNLLElBQUksR0FBRyxJQUFQO0FBRUwsUUFBSSxZQUFZLElBQUUsZ0JBQWdCLENBQUMsT0FBakIsQ0FBeUIsWUFBekIsQ0FBc0MsTUFBdEMsR0FBNkMsQ0FBL0QsRUFBa0UsSUFBSSxHQUFDLEtBQUwsQ0FBbEUsS0FDSyxJQUFJLEdBQUMsSUFBTDtBQUVMLElBQUEsTUFBTSxDQUFDLGlCQUFQLEdBQTBCO0FBQUMsY0FBTyxJQUFSO0FBQWMsY0FBTztBQUFyQixLQUExQjtBQUVBLElBQUEsZ0JBQWdCLENBQUMsT0FBakIsQ0FBeUIsZUFBekI7QUFFSCxHQWhCRDs7QUFrQkEsTUFBSSxnQkFBZ0IsR0FBRyxTQUFuQixnQkFBbUIsQ0FBUyxJQUFULEVBQ3ZCO0FBQ1ksSUFBQSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsT0FBakIsQ0FBeUIsb0JBQXJDO0FBRUEsSUFBQSxTQUFTO0FBQ1QsUUFBSSxTQUFTLEdBQUMsQ0FBZCxFQUFpQixJQUFJLEdBQUMsS0FBTCxDQUFqQixLQUNLLElBQUksR0FBRyxJQUFQO0FBRUwsUUFBSSxTQUFTLElBQUUsZ0JBQWdCLENBQUMsT0FBakIsQ0FBeUIsWUFBekIsQ0FBc0MsTUFBdEMsR0FBNkMsQ0FBNUQsRUFBK0QsSUFBSSxHQUFDLEtBQUwsQ0FBL0QsS0FDSyxJQUFJLEdBQUMsSUFBTDtBQUNMLElBQUEsTUFBTSxDQUFDLGlCQUFQLEdBQTBCO0FBQUMsY0FBTyxJQUFSO0FBQWMsY0FBTztBQUFyQixLQUExQjtBQUVBLElBQUEsZ0JBQWdCLENBQUMsT0FBakIsQ0FBeUIsZUFBekIsQ0FBeUMsdUJBQXpDO0FBRVgsR0FkRDs7QUFnQkUsTUFBSSxxQkFBcUIsR0FBRyxTQUF4QixxQkFBd0IsQ0FBUyxJQUFULEVBQzlCO0FBRVksSUFBQSxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsT0FBakIsQ0FBeUIsb0JBQXhDO0FBQ0EsSUFBQSxZQUFZO0FBQ1osSUFBQSxnQkFBZ0IsQ0FBQyxPQUFqQixDQUF5QixvQkFBekIsR0FBZ0QsWUFBaEQ7QUFFWCxHQVBDOztBQVNGLE1BQUksZ0JBQWdCLEdBQUcsU0FBbkIsZ0JBQW1CLENBQVMsSUFBVCxFQUN2QjtBQUVZLElBQUEsWUFBWSxHQUFHLGdCQUFnQixDQUFDLE9BQWpCLENBQXlCLG9CQUF4QztBQUNBLElBQUEsWUFBWTtBQUNaLElBQUEsZ0JBQWdCLENBQUMsT0FBakIsQ0FBeUIsb0JBQXpCLEdBQWdELFlBQWhEO0FBRUEsUUFBSSxZQUFZLEdBQUMsQ0FBakIsRUFBb0IsSUFBSSxHQUFDLEtBQUwsQ0FBcEIsS0FDSyxJQUFJLEdBQUcsSUFBUDtBQUVMLFFBQUksWUFBWSxJQUFFLGdCQUFnQixDQUFDLE9BQWpCLENBQXlCLFlBQXpCLENBQXNDLE1BQXRDLEdBQTZDLENBQS9ELEVBQWtFLElBQUksR0FBQyxLQUFMLENBQWxFLEtBQ0ssSUFBSSxHQUFDLElBQUw7QUFFTCxJQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUEwQjtBQUFDLGNBQU8sSUFBUjtBQUFjLGNBQU87QUFBckIsS0FBMUI7QUFDQSxJQUFBLGdCQUFnQixDQUFDLE9BQWpCLENBQXlCLGVBQXpCLENBQXlDLHVCQUF6QztBQUNYLEdBZkQ7O0FBbUJBLEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsVUFBUyxVQUFULEVBQ3pCO0FBRUksSUFBQSxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIsb0JBQXpCLEVBQThDLFVBQVUsR0FBQyxtQkFBekQ7QUFDQSxJQUFBLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixLQUExQjtBQUVILEdBTkQ7O0FBU0EsRUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsVUFBUyxLQUFULEVBQ2hCO0FBR0UsSUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLHdCQUFiLENBQXNDLEtBQXRDO0FBQ0EsSUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBMkIsTUFBTSxDQUFDLEtBQVAsQ0FBYSx3QkFBYixFQUEzQixDQUpGLENBS0M7QUFDQSxHQVBiOztBQVdHLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsVUFBUyxNQUFULEVBQWdCLE1BQWhCLEVBQ3ZCO0FBRUUsSUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixDQUEyQixZQUEzQixHQUF3QyxNQUF4QztBQUNBLElBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsVUFBM0IsR0FBd0MsTUFBeEM7QUFDQSxJQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsZUFBYixDQUE2QixNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixDQUEyQixZQUF4RDtBQUVELEdBUEE7O0FBU0EsRUFBQSxZQUFZLENBQUMsY0FBYixDQUE0QixjQUE1QixFQUEyQyxJQUEzQyxFQUFpRCxJQUFqRCxDQUFzRCxVQUFVLElBQVYsRUFBZ0I7QUFDbkU7QUFDc0IsSUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBMEIsSUFBSSxDQUFDLElBQS9CO0FBQ0YsR0FIdkI7QUFLQyxFQUFBLFlBQVksQ0FBQyxjQUFiLENBQTRCLFlBQTVCLEVBQXlDLElBQXpDLEVBQStDLElBQS9DLENBQW9ELFVBQVUsSUFBVixFQUFnQjtBQUM1QyxJQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUE0QixJQUFJLENBQUMsSUFBakM7QUFDQSxJQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUEyQixJQUEzQjtBQUNGLEdBSHRCOztBQU9KLEVBQUEsTUFBTSxDQUFDLHFCQUFQLEdBQStCLFlBQVk7QUFFbkMsSUFBQSxvQkFBb0IsQ0FBQyxpQkFBckIsQ0FBdUMsTUFBTSxDQUFDLFVBQTlDLEVBQTBELElBQTFELENBQStELFVBQVMsSUFBVCxFQUFlO0FBRTlEO0FBQ0EsTUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixJQUFJLENBQUMsSUFBdkI7QUFFQSxNQUFBLE1BQU0sQ0FBQyxxQkFBUCxHQUE2QixJQUE3QixDQUw4RCxDQU85RDs7QUFDQSxNQUFBLE1BQU0sQ0FBQyxtQkFBUDtBQUVBLE1BQUEsb0JBQW9CLENBQUMsZ0JBQXJCLENBQXNDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFlBQXRELEVBQW9FLElBQXBFLENBQXlFLFVBQVUsSUFBVixFQUFnQjtBQUNqRixRQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEscUJBQWIsQ0FBbUMsSUFBSSxDQUFDLElBQXhDLEVBQTZDLE1BQU0sQ0FBQyxZQUFwRDtBQUNBLFFBQUEsTUFBTSxDQUFDLGVBQVA7QUFDUCxPQUhELEVBR0UsVUFBUyxLQUFULEVBQWU7QUFFUixRQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNSLE9BTkQ7QUFRZixLQWxCRCxFQWtCRSxVQUFTLEtBQVQsRUFBZTtBQUVDLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ3JCLEtBckJHO0FBc0JQLEdBeEJELENBbk9KLENBOFBROzs7QUFFQSxFQUFBLE1BQU0sQ0FBQyxHQUFQLENBQVcsZUFBWCxFQUEyQixVQUFTLEtBQVQsRUFBZSxJQUFmLEVBQW9CO0FBRXZDLFFBQUksR0FBRyxHQUFDLElBQVI7O0FBQ0EsUUFBSSxHQUFHLElBQUUsR0FBTCxJQUFZLEdBQUcsSUFBRSxHQUFyQixFQUNBO0FBQ0ksVUFBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixDQUEyQixZQUEzQixJQUF5QyxDQUE3QyxFQUFnRCxNQUFNLENBQUMsWUFBUCxDQUFvQixDQUFwQjtBQUVuRDs7QUFDRCxRQUFJLEdBQUcsSUFBRSxHQUFMLElBQVksR0FBRyxJQUFFLEdBQXJCLEVBQ0E7QUFDSSxVQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLENBQTJCLFlBQTNCLElBQXlDLENBQTdDLEVBQWdELE1BQU0sQ0FBQyxZQUFQLENBQW9CLENBQXBCO0FBQ25EO0FBRVIsR0FiRDs7QUFlQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLFlBRXRCO0FBQ1E7QUFDQSxJQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE9BQWhCLEdBQTBCLFFBQVEsQ0FBQyxhQUFULENBQXVCLGNBQXZCLEVBQXVDLFNBQWpFLENBRlIsQ0FHUTtBQUNBO0FBRVAsR0FSRDs7QUFVQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLFlBQVk7QUFFL0IsUUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFaLEVBQXlCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFlBQWhCLEdBQStCLENBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsWUFBaEQ7QUFDM0IsR0FIRDs7QUFLQSxFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLFlBQVk7QUFFekIsUUFBSSxNQUFNLEdBQUM7QUFBQyxNQUFBLEVBQUUsRUFBQyxNQUFNLENBQUM7QUFBWCxLQUFYO0FBQ0EsSUFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLDJCQUFWLEVBQXNDLE1BQXRDO0FBQ1AsR0FKRDs7QUFNQyxFQUFBLE1BQU0sQ0FBQyxxQkFBUCxHQUErQixFQUEvQjtBQUNBLEVBQUEsTUFBTSxDQUFDLHlCQUFQLEdBQWlDLEVBQWpDO0FBSUQ7O0FBQ0E7O0FBRUEsRUFBQSxNQUFNLENBQUMsb0JBQVAsR0FBOEIsWUFBMkI7QUFBQSxRQUFsQixTQUFrQix1RUFBUixLQUFRO0FBRXJELElBQUEsTUFBTSxDQUFDLHFCQUFQLENBQTZCLE1BQTdCLEdBQW9DLENBQXBDO0FBQ0EsSUFBQSxNQUFNLENBQUMsYUFBUCxHQUFxQixLQUFyQixDQUhxRCxDQUlyRDs7QUFDQSxJQUFBLG9CQUFvQixDQUFDLGdDQUFyQixDQUFzRCxNQUFNLENBQUMsVUFBN0QsRUFBeUUsU0FBekUsRUFBb0YsSUFBcEYsQ0FBeUYsVUFBUyxJQUFULEVBQWU7QUFFeEYsTUFBQSxNQUFNLENBQUMscUJBQVAsR0FBK0IsSUFBSSxDQUFDLElBQXBDO0FBQ0EsTUFBQSxNQUFNLENBQUMseUJBQVAsR0FBbUMsT0FBTyxDQUFDLElBQVIsQ0FBYSxNQUFNLENBQUMscUJBQXBCLENBQW5DO0FBQ0EsTUFBQSxNQUFNLENBQUMsYUFBUCxHQUFxQixJQUFyQjtBQUVOLEtBTlYsRUFNVyxVQUFTLEtBQVQsRUFBZTtBQUNOLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0gsS0FSakI7QUFVSixHQWZBOztBQWlCQSxFQUFBLE1BQU0sQ0FBQyxvQkFBUDs7QUFFQSxFQUFBLE1BQU0sQ0FBQyxvQkFBUCxHQUE4QixVQUFTLEtBQVQsRUFDOUI7QUFFSSxRQUFJLElBQUksR0FBRyxNQUFNLENBQUMscUJBQVAsQ0FBNkIsSUFBN0IsQ0FBa0MsVUFBQSxPQUFPO0FBQUEsYUFBSSxPQUFPLENBQUMsRUFBUixJQUFjLEtBQUssQ0FBQyxFQUF4QjtBQUFBLEtBQXpDLENBQVg7QUFFQSxRQUFJLElBQUksSUFBSSxTQUFaLEVBQXVCLE9BQU8sSUFBUCxDQUF2QixLQUNLLE9BQU8sS0FBUDtBQUNSLEdBUEQ7O0FBV0EsRUFBQSxNQUFNLENBQUMsZUFBUCxHQUF5QixVQUFVLE9BQVYsRUFDekI7QUFDTSxRQUFJLE9BQUosRUFBYztBQUNSLE1BQUEsb0JBQW9CLENBQUMsZ0JBQXJCLENBQXVDLE1BQU0sQ0FBQyxRQUE5QyxFQUF3RCxJQUF4RCxDQUNJLFVBQVMsSUFBVCxFQUFlO0FBQ0osWUFBSSxJQUFJLENBQUMsTUFBTCxLQUFjLEdBQWQsSUFBcUIsSUFBSSxDQUFDLE1BQUwsS0FBYyxHQUF2QyxFQUFpRCxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0Qiw0QkFBNUIsRUFBeUQsU0FBekQ7QUFDMUQsT0FITixFQUdPLFVBQVMsS0FBVCxFQUFlO0FBQ1IsUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDRCxPQUxiO0FBT0wsS0FSRCxNQVFPO0FBQ0wsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0Qiw0QkFBNUIsRUFBeUQsU0FBekQ7QUFDRDtBQUNOLEdBYkQ7O0FBZ0JELEVBQUEsTUFBTSxDQUFDLGlCQUFQLEdBQTJCLFVBQVMsS0FBVCxFQUFnQjtBQUMxQztBQUNJLElBQUEsTUFBTSxDQUFDLGNBQVAsR0FBc0IsS0FBdEI7QUFDQSxRQUFJLEtBQUssSUFBRSxZQUFYLEVBQXlCLE1BQU0sQ0FBQyxXQUFQO0FBQzVCLEdBSkY7O0FBT0MsRUFBQSxNQUFNLENBQUMsdUJBQVAsR0FBaUMsWUFBVztBQUV4QyxRQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLElBQTZCLFNBQTdCLElBQTJDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLElBQTRCLElBQTNFLEVBQ0k7QUFDQyxNQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLEdBQTZCO0FBQUMsUUFBQSxtQkFBbUIsRUFBQztBQUFDLFVBQUEsY0FBYyxFQUFDO0FBQWhCO0FBQXJCLE9BQTdCO0FBQ0EsS0FITCxNQUlJO0FBQ0csVUFBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixDQUEyQixtQkFBM0IsSUFBa0QsU0FBbEQsSUFBK0QsS0FBSyxJQUFJLEtBQTVFLEVBQW9GO0FBQy9FLFFBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsbUJBQTNCLEdBQStDO0FBQUUsVUFBQSxjQUFjLEVBQUM7QUFBakIsU0FBL0M7QUFDTCxPQUZBLE1BRU8sTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsbUJBQTNCLENBQStDLGNBQS9DLENBQThELE1BQTlELEdBQXFFLENBQXJFO0FBQ1Q7QUFDUixHQVhEOztBQWVGLEVBQUEsTUFBTSxDQUFDLFdBQVAsR0FBcUIsVUFBUyxLQUFULEVBQWdCO0FBQ25DO0FBQUE7O0FBQ1EsUUFBSSxlQUFlLEdBQUMsRUFBcEI7QUFDQyxpQ0FBSyxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFyQiw0RUFBSyxzQkFBNEIsbUJBQWpDLG1EQUFLLHVCQUFpRCxjQUF0RCxFQUNPLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxTQUFSLEVBQXFCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLENBQTJCLG1CQUEzQixDQUErQyxjQUFwRSxDQUF2QjtBQUNoQixHQUxGOztBQVNBLEVBQUEsTUFBTSxDQUFDLE1BQVAsQ0FBYyxrQ0FBZCxFQUFpRCxVQUFTLFFBQVQsRUFBa0IsUUFBbEIsRUFBMkI7QUFFcEUsUUFBSSxRQUFRLElBQUUsUUFBZCxFQUNBO0FBQ0MsTUFBQSxNQUFNLENBQUMsYUFBUCxHQUFxQixNQUFNLENBQUMsS0FBUCxDQUFhLGtCQUFiLEVBQXJCO0FBRUEsTUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBNkIsTUFBTSxDQUFDLEtBQVAsQ0FBYSx3QkFBYixFQUE3QjtBQUNBOztBQUNELFFBQUksTUFBTSxDQUFDLGlCQUFQLElBQTRCLE1BQU0sQ0FBQyxtQkFBdkMsRUFDQTtBQUNFLE1BQUEsTUFBTSxDQUFDLGFBQVAsR0FBcUIsTUFBTSxDQUFDLEtBQVAsQ0FBYSxrQkFBYixFQUFyQjtBQUNBLE1BQUEsTUFBTSxDQUFDLGlCQUFQLEdBQXlCLEtBQXpCO0FBQ0E7QUFDSCxHQWJQO0FBZUMsRUFBQSxNQUFNLENBQUMsTUFBUCxDQUFjLDRCQUFkLEVBQTJDLFVBQVMsUUFBVCxFQUFrQixRQUFsQixFQUEyQjtBQUUvRCxRQUFJLFFBQVEsSUFBRSxRQUFkLEVBQ0E7QUFDQyxNQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXFCLE1BQU0sQ0FBQyxLQUFQLENBQWEsa0JBQWIsRUFBckI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLEdBQWlDLFVBQWpDO0FBQ0EsTUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBNkIsTUFBTSxDQUFDLEtBQVAsQ0FBYSx3QkFBYixFQUE3QjtBQUNBOztBQUNBLFFBQUksTUFBTSxDQUFDLGlCQUFQLElBQTRCLE1BQU0sQ0FBQyxtQkFBdkMsRUFDQTtBQUNDLE1BQUEsTUFBTSxDQUFDLGFBQVAsR0FBcUIsTUFBTSxDQUFDLEtBQVAsQ0FBYSxrQkFBYixFQUFyQjtBQUNBLE1BQUEsTUFBTSxDQUFDLGlCQUFQLEdBQXlCLEtBQXpCO0FBQ0E7QUFDSCxHQWJOOztBQWlCRCxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLFlBQVk7QUFDckM7QUFDSSxJQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLEtBQWxCO0FBRUEsSUFBQSxvQkFBb0IsQ0FBQyxlQUFyQixDQUFxQyxNQUFNLENBQUMsVUFBNUMsRUFBdUQsR0FBdkQsRUFBMkQsSUFBM0QsRUFBaUUsSUFBakUsQ0FDTSxVQUFTLElBQVQsRUFBa0I7QUFBQTs7QUFHYixNQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWlCLElBQUksQ0FBQyxJQUFMLENBQVUsa0JBQTNCOztBQUNBLFVBQUksSUFBSSxTQUFKLElBQUEsSUFBSSxXQUFKLG9CQUFBLElBQUksQ0FBRSxJQUFOLHNEQUFZLE9BQVosSUFBdUIsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUFWLENBQWtCLE1BQWxCLEdBQXlCLENBQXBELEVBQXVEO0FBQ25ELFFBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsT0FBakIsR0FBeUI7QUFBQyxVQUFBLE1BQU0sRUFBQyxJQUFJLENBQUMsSUFBTCxDQUFVO0FBQWxCLFNBQXpCO0FBQ0gsT0FGRCxNQUdJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLEdBQXlCO0FBQUMsUUFBQSxNQUFNLEVBQUcsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsZ0JBQWhCLENBQWlDO0FBQTNDLE9BQXpCLENBUFMsQ0FVZDs7O0FBQ1EsTUFBQSxNQUFNLENBQUMsbUJBQVAsR0FYTSxDQVlOOztBQUNBLE1BQUEsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsS0FBbkI7QUFFQSxNQUFBLG9CQUFvQixDQUFDLGdCQUFyQixDQUFzQyxNQUFNLENBQUMsUUFBUCxDQUFnQixZQUF0RCxFQUFvRSxJQUFwRSxDQUF5RSxVQUFVLElBQVYsRUFBZ0I7QUFDakYsUUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLHFCQUFiLENBQW1DLElBQUksQ0FBQyxJQUF4QyxFQUE2QyxNQUFNLENBQUMsWUFBcEQ7QUFDSCxPQUZMLEVBRU0sVUFBUyxLQUFULEVBQWU7QUFFWixRQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNSLE9BTEQ7QUFPUixNQUFBLFVBQVUsQ0FBRyxNQUFNLENBQUMsU0FBUCxDQUFpQixPQUFwQixFQUErQixNQUFNLENBQUMsZUFBdEMsQ0FBVjtBQUVBLE1BQUEsZ0JBQWdCLENBQUMsT0FBakIsQ0FBeUIsUUFBekIsR0FBa0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsT0FBbkQ7QUFDQSxNQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLEdBQTZCO0FBQUMsUUFBQSxZQUFZLEVBQUMsQ0FBZDtBQUFnQixRQUFBLFVBQVUsRUFBQztBQUEzQixPQUE3QjtBQUNBLE1BQUEsTUFBTSxDQUFDLGdCQUFQLEdBQXdCLFlBQVUsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsWUFBMUIsR0FBdUMsaUJBQS9EO0FBQ0EsTUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLGVBQWIsQ0FBNkIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsWUFBeEQ7QUFFQSxNQUFBLFFBQVEsQ0FBRSxZQUFXO0FBQ2hCLFFBQUEsTUFBTSxDQUFDLFVBQVAsR0FBa0IsSUFBbEIsQ0FEZ0IsQ0FFakI7QUFDSCxPQUhPLENBQVI7QUFJTCxLQWxDTCxFQWtDTSxVQUFTLEtBQVQsRUFBZTtBQUNSLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0osS0FwQ1Q7QUFzQ0gsR0ExQ0Q7O0FBNENGLEVBQUEsTUFBTSxDQUFDLGVBQVA7O0FBRUYsRUFBQSxNQUFNLENBQUMsZUFBUCxHQUF5QixVQUFTLE1BQVQsRUFFdkI7QUFDQSxRQUFJLG9CQUFvQixHQUFDO0FBQUMsV0FBSSxLQUFMO0FBQVcsV0FBSSxRQUFmO0FBQXdCLFdBQUksUUFBNUI7QUFBcUMsV0FBSTtBQUF6QyxLQUF6QjtBQUNBLFdBQU8sb0JBQW9CLENBQUMsTUFBRCxDQUEzQjtBQUNDLEdBTEg7O0FBT0UsRUFBQSxNQUFNLENBQUMsVUFBUCxHQUFvQixZQUVwQjtBQUNJLElBQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTBCLElBQTFCO0FBRUEsSUFBQSxvQkFBb0IsQ0FBQyxxQkFBckIsQ0FBMkMsTUFBTSxDQUFDLFVBQWxELEVBQ1MsSUFEVCxDQUNjLFVBQVMsSUFBVCxFQUFlO0FBQ2pCLFVBQUksSUFBSSxDQUFDLE1BQUwsSUFBYSxHQUFqQixFQUNBO0FBQ0EsUUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixHQUE2QixJQUFJLENBQUMsSUFBbEM7QUFDQSxRQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFNBQWhCLEdBQTBCLEtBQTFCO0FBQ0MsT0FKRCxNQUlNLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFqQyxFQUFzQyxPQUF0Qzs7QUFDTixNQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUEwQixLQUExQjtBQUNBLE1BQUEsTUFBTSxDQUFDLFVBQVAsR0FBa0IsS0FBbEI7QUFFQSxLQVZaLEVBVWEsVUFBUyxLQUFULEVBQWU7QUFDRixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNBLE1BQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTBCLEtBQTFCO0FBRUosS0FkdEI7QUFnQkgsR0FyQkQsQ0E5Y0osQ0FzZUs7QUFDSjtBQUNBOzs7QUFDQyxFQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQixVQUFVLEdBQVYsRUFBZTtBQUN0QyxJQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQW9CLElBQXBCLENBRHNDLENBQ1o7O0FBQzFCLElBQUEsTUFBTSxDQUFDLFVBQVAsR0FBa0IsS0FBbEI7QUFDQSxJQUFBLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixLQUExQixFQUhzQyxDQUl0Qzs7QUFFQyxJQUFBLG9CQUFvQixDQUFDLGdCQUFyQixDQUFzQyxNQUFNLENBQUMsU0FBUCxDQUFpQixPQUFqQixDQUF5QixNQUEvRCxFQUFzRSxNQUFNLENBQUMsVUFBN0UsRUFBd0YsR0FBeEYsRUFBNEYsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBN0csRUFDVyxJQURYLENBQ2dCLFVBQVMsSUFBVCxFQUFlO0FBQ1QsVUFBSSxJQUFJLENBQUMsSUFBTCxDQUFVLFFBQVYsQ0FBbUIsTUFBbkIsR0FBMEIsQ0FBOUIsRUFBa0M7QUFDOUIsUUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixPQUFqQixHQUF5QjtBQUFDLFVBQUEsTUFBTSxFQUFDLElBQUksQ0FBQyxJQUFMLENBQVU7QUFBbEIsU0FBekI7QUFDQSxRQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFdBQWhCLEdBQThCLElBQUksQ0FBQyxJQUFMLENBQVUsWUFBeEM7QUFDQSxRQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE9BQWhCLEdBQTBCLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBcEM7QUFDQSxRQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLElBQUksQ0FBQyxJQUFMLENBQVUsV0FBNUI7QUFDSDs7QUFDRCxNQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLEdBQXhCO0FBQ0EsVUFBSSxJQUFJLEdBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEM7QUFDQSxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxHQUFqQyxFQUFxQyxJQUFJLENBQUMsT0FBMUM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQW9CLEtBQXBCO0FBRUEsTUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixJQUFsQjtBQUNBLE1BQUEsTUFBTSxDQUFDLFdBQVA7QUFDUixLQWZkLEVBZWUsVUFBUyxLQUFULEVBQWU7QUFDRixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNBLE1BQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0IsS0FBcEI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLElBQWxCO0FBQ0osS0FuQnhCO0FBcUJILEdBM0JEOztBQTZCRyxFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQW1CLFVBQVUsTUFBVixFQUFrQjtBQUNuQztBQUNDO0FBQ0EsSUFBQSxDQUFDLENBQUMsaUJBQUQsQ0FBRCxDQUFxQixLQUFyQixDQUEyQixNQUEzQjtBQUNBLElBQUEsTUFBTSxDQUFDLFdBQVAsR0FBbUIsTUFBbkI7QUFDQSxJQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUEyQixNQUFNLENBQUMsUUFBUCxDQUFnQixPQUEzQztBQUNILEdBTkE7O0FBVUYsRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQixVQUFVLEdBQVYsRUFBZTtBQUNoQztBQUNBLElBQUEsTUFBTSxDQUFDLFdBQVAsR0FBbUIsU0FBbkI7QUFDQSxJQUFBLE1BQU0sQ0FBQyxhQUFQLENBQXFCLE1BQXJCLEdBQTRCLENBQTVCO0FBQ0EsUUFBSSxHQUFHLElBQUUsU0FBVCxFQUFvQixHQUFHLEdBQUcsSUFBTjtBQUNsQixJQUFBLG9CQUFvQixDQUFDLDZCQUFyQixDQUFtRCxNQUFNLENBQUMsVUFBMUQsRUFBcUUsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsT0FBckYsRUFBNkYsSUFBN0YsRUFDZ0MsSUFEaEMsQ0FDcUMsVUFBUyxJQUFULEVBQWU7QUFDYixNQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXVCLElBQUksQ0FBQyxJQUE1QjtBQUNwQyxNQUFBLE1BQU0sQ0FBQyxhQUFQLENBQXFCLE9BQXJCLENBQThCLFVBQUMsQ0FBRDtBQUFBLGVBQU8sQ0FBQyxDQUFDLE1BQUYsR0FBVyxDQUFDLENBQUMsTUFBRixDQUFTLE9BQVQsQ0FBaUIsWUFBakIsRUFBOEIsRUFBOUIsQ0FBbEI7QUFBQSxPQUE5QixFQUZpRCxDQUliOztBQUNBLFVBQUksTUFBTSxDQUFDLGFBQVAsQ0FBcUIsTUFBckIsSUFBNkIsQ0FBN0IsSUFBa0MsTUFBTSxDQUFDLFVBQTdDLEVBQ25DLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFNBQWhCLEdBQTRCLElBQTVCLENBRG1DLEtBRUssSUFBSSxNQUFNLENBQUMsYUFBUCxDQUFxQixNQUFyQixHQUE0QixDQUFoQyxFQUN4QyxNQUFNLENBQUMsUUFBUCxDQUFnQixTQUFoQixHQUE0QixLQUE1QjtBQUNtQyxNQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUEyQixNQUFNLENBQUMsUUFBUCxDQUFnQixVQUEzQztBQUNBLFVBQUksR0FBRyxJQUFJLE1BQU0sQ0FBQyxhQUFQLENBQXFCLE1BQWhDLEVBQXdDLENBQUMsQ0FBQyxpQkFBRCxDQUFELENBQXFCLEtBQXJCLENBQTJCLE1BQTNCO0FBRzdDLEtBZGxDLEVBY21DLFVBQVMsS0FBVCxFQUFlO0FBQ2IsVUFBSSxLQUFLLENBQUMsTUFBTixHQUFhLEdBQWpCLEVBQXNCLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLG1CQUE1QixFQUFnRCxNQUFoRCxFQUF0QixLQUNLLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUN0QyxLQWpCSjtBQW1CTCxHQXhCRCxDQWhoQkgsQ0EyaUJHO0FBQ0M7QUFDQTs7O0FBQ0YsRUFBQSxNQUFNLENBQUMsYUFBUCxHQUF1QixVQUFVLFNBQVYsRUFBcUI7QUFFdEMsUUFBSSxZQUFZLEdBQUMsTUFBakI7O0FBQ0EsUUFBSSxTQUFKLEVBQWU7QUFDWCxVQUFJLE1BQU0sQ0FBQyxXQUFQLElBQW9CLE1BQXhCLEVBQ0E7QUFDSSxRQUFBLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixZQUF4QjtBQUNILE9BSEQsTUFHSztBQUNMLFFBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsSUFBeEIsQ0FESyxDQUVMOztBQUNBLFFBQUEsb0JBQW9CLENBQUMsZUFBckIsQ0FBcUMsTUFBTSxDQUFDLFVBQTVDLEVBQXVELE1BQU0sQ0FBQyxRQUFQLENBQWdCLE9BQXZFLEVBQStFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWhHLEVBQStHLFlBQS9HLEVBQ1MsSUFEVCxDQUNjLFVBQVMsSUFBVCxFQUFlO0FBQ0wsVUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsR0FBakMsRUFBcUMsU0FBckMsRUFESyxDQUVMOztBQUNBLFVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsS0FBeEI7QUFDQSxVQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFNBQWhCLEdBQTRCLElBQTVCO0FBQ0EsVUFBQSxNQUFNLENBQUMsNEJBQVA7QUFDQSxVQUFBLE1BQU0sQ0FBQyxtQkFBUDtBQUNBLFVBQUEsTUFBTSxDQUFDLGFBQVAsR0FBdUIsRUFBdkI7QUFDQSxVQUFBLENBQUMsQ0FBQyxpQkFBRCxDQUFELENBQXFCLEtBQXJCLENBQTJCLE1BQTNCLEVBUkssQ0FTSjtBQUNoQixTQVhULEVBV1csVUFBUyxLQUFULEVBQWU7QUFDQSxVQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNBLFVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsS0FBeEI7QUFFSixTQWZ0QjtBQWdCQTs7QUFDQSxNQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGVBQWhCLEdBQWtDLGlCQUFpQixDQUFDLGNBQWxCLENBQWlDLEVBQWpDLENBQWxDO0FBQ0g7QUFDTixHQTdCRCxDQTlpQkYsQ0E2a0JNO0FBQ0w7QUFDQTs7QUFDRztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVNLEVBQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTRCLFVBQVUsT0FBVixFQUFtQjtBQUM1QyxJQUFBLE1BQU0sQ0FBQyxtQkFBUCxHQUE2QixJQUE3QjtBQUNBLElBQUEsQ0FBQyxDQUFDLGdCQUFELENBQUQsQ0FBb0IsS0FBcEIsQ0FBMEIsTUFBMUIsRUFGNEMsQ0FHN0M7QUFHSixHQU5FOztBQVFDLEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBaUIsWUFBVTtBQUNyQixJQUFBLENBQUMsQ0FBQyxnQkFBRCxDQUFELENBQW9CLEtBQXBCLENBQTBCLE1BQTFCO0FBRUwsR0FIRCxDQXBuQlAsQ0F3bkJJO0FBQ0g7QUFDQTs7O0FBQ0MsRUFBQSxNQUFNLENBQUMsTUFBUCxHQUFnQixZQUFZO0FBQ3RCO0FBQ0EsSUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixlQUFoQixHQUFrQyxpQkFBaUIsQ0FBQyxjQUFsQixDQUFpQywwQkFBd0IsTUFBTSxDQUFDLFVBQWhFLENBQWxDO0FBQ0EsUUFBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixXQUFoQixLQUE4QixTQUE5QixJQUEyQyxNQUFNLENBQUMsUUFBUCxDQUFnQixXQUFoQixLQUE4QixJQUE3RSxFQUFtRixNQUFNLENBQUMsUUFBUCxDQUFnQixXQUFoQixHQUE0QixDQUE1QjtBQUNuRixJQUFBLG9CQUFvQixDQUFDLE1BQXJCLENBQTRCLE1BQU0sQ0FBQyxVQUFuQyxFQUE4QyxNQUFNLENBQUMsUUFBUCxDQUFnQixXQUE5RCxFQUNTLElBRFQsQ0FDYyxVQUFTLElBQVQsRUFBZTtBQUNKLE1BQUEsTUFBTSxDQUFDLG1CQUFQLEdBQTZCLEtBQTdCO0FBQ0EsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsR0FBakMsRUFBcUMsU0FBckM7QUFDQSxNQUFBLENBQUMsQ0FBQyxnQkFBRCxDQUFELENBQW9CLEtBQXBCLENBQTBCLE1BQTFCO0FBQ2hCLEtBTFQsRUFLVyxVQUFTLEtBQVQsRUFBZTtBQUNBLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBRUosS0FSdEI7QUFTQSxJQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGVBQWhCLEdBQWtDLGlCQUFpQixDQUFDLGNBQWxCLENBQWlDLEVBQWpDLENBQWxDO0FBQ0wsR0FkRDs7QUFpQkMsRUFBQSxNQUFNLENBQUMsb0JBQVAsR0FBOEIsWUFDekI7QUFDUSxRQUFJLElBQUksR0FBRyxNQUFNLENBQUMsV0FBUCxDQUFtQixLQUFuQixDQUF5QixJQUFwQyxDQURSLENBRVE7O0FBQ0EsSUFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsRUFBZSxNQUFNLENBQUMsV0FBUCxDQUFtQixNQUFsQztBQUVQLEdBTk4sQ0E1b0JILENBb3BCRzs7O0FBR0csRUFBQSxNQUFNLENBQUMscUJBQVAsR0FBK0IsQ0FBQztBQUFDLElBQUEsRUFBRSxFQUFDLENBQUo7QUFBTSxJQUFBLElBQUksRUFBRTtBQUFaLEdBQUQsRUFBK0I7QUFBQyxJQUFBLEVBQUUsRUFBQyxDQUFKO0FBQU8sSUFBQSxJQUFJLEVBQUU7QUFBYixHQUEvQixFQUFvRDtBQUFDLElBQUEsRUFBRSxFQUFDLENBQUo7QUFBTyxJQUFBLElBQUksRUFBRTtBQUFiLEdBQXBELENBQS9CO0FBQ0EsRUFBQSxNQUFNLENBQUMsdUJBQVA7O0FBRUEsTUFBSSxZQUFZLENBQUMsZUFBYixJQUFnQyxVQUFwQyxFQUFnRCxDQUM1QztBQUNIOztBQUVELEVBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQTBCLEtBQTFCO0FBQ0EsRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFtQixLQUFuQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBaUIsRUFBakI7QUFFQSxFQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixhQUE1QjtBQUNBLEVBQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLGFBQTVCO0FBQ0EsRUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsY0FBWSxNQUFNLENBQUMsWUFBL0MsRUFwcUJOLENBcXFCSzs7QUFFQyxFQUFBLE1BQU0sQ0FBQyxtQkFBUCxHQUEyQixLQUEzQixDQXZxQk4sQ0F5cUJNOztBQUdGLE1BQUksZ0JBQWdCLEdBQUUsTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXNCLHFCQUFtQixNQUFNLENBQUMsVUFBaEQsRUFBMkQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsT0FBNUUsQ0FBdEI7QUFDQSxNQUFJLG9CQUFvQixHQUFHLGdCQUFnQixDQUFDLE9BQWpCLENBQXlCLElBQXBELENBN3FCSixDQThxQkk7O0FBQ0EsTUFBSSxJQUFKLEVBQVMsSUFBVCxFQUFjLFlBQWQsRUFBMkIsU0FBM0I7QUFFQSxFQUFBLFlBQVksR0FBRSxnQkFBZ0IsQ0FBQyxPQUFqQixDQUF5QixvQkFBdkM7QUFFQSxNQUFJLFlBQVksR0FBQyxDQUFqQixFQUFvQixJQUFJLEdBQUMsS0FBTCxDQUFwQixLQUNLLElBQUksR0FBRyxJQUFQO0FBQ0wsTUFBSSxZQUFZLElBQUUsZ0JBQWdCLENBQUMsT0FBakIsQ0FBeUIsWUFBekIsQ0FBc0MsTUFBdEMsR0FBNkMsQ0FBL0QsRUFBa0UsSUFBSSxHQUFDLEtBQUwsQ0FBbEUsS0FDSyxJQUFJLEdBQUMsSUFBTDtBQUdMLE1BQUkseUJBQXlCLEdBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLG9CQUFyQixFQUEwQyxvQkFBMUMsRUFBK0QsbUJBQS9ELENBQWhDO0FBQ0EsTUFBSSxXQUFXLEdBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLG9CQUFyQixFQUEwQyx1QkFBMUMsRUFBa0UsZ0JBQWxFLENBQWxCO0FBQ0EsTUFBSSxXQUFXLEdBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLG9CQUFyQixFQUEwQyx1QkFBMUMsRUFBa0UsZ0JBQWxFLENBQWxCO0FBQ0EsTUFBSSxlQUFlLEdBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBVyxTQUFYLENBQXFCLG9CQUFyQixFQUEwQywyQkFBMUMsRUFBc0UscUJBQXRFLENBQXRCLENBNXJCSixDQTZyQkk7O0FBS0ksRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFnQixLQUFoQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFdBQVAsR0FBcUI7QUFDakIsSUFBQSxjQUFjLEVBQUUsSUFEQztBQUVqQixJQUFBLGNBQWMsRUFBRSxJQUZDO0FBR2pCO0FBQ0EsSUFBQSxrQkFBa0IsRUFBRSxJQUpIO0FBS2IsSUFBQSxXQUFXLEVBQUUsS0FMQTtBQU1iLElBQUEseUJBQXlCLEVBQUcsQ0FOZjtBQU9iLElBQUEsdUJBQXVCLEVBQUcsQ0FQYjtBQVFiO0FBQ0EsSUFBQSx3QkFBd0IsRUFBRSxJQVRiO0FBVWIsSUFBQSxvQkFBb0IsRUFBRSxJQVZUO0FBV2xCO0FBQ0MsSUFBQSxtQkFBbUIsRUFBRSxDQUFDLENBQUQsRUFBRyxFQUFILEVBQU8sRUFBUCxFQUFXLEVBQVgsRUFBYyxHQUFkLEVBQWtCLEdBQWxCLEVBQXNCLEdBQXRCLENBWko7QUFhakIsSUFBQSx3QkFBd0IsRUFBRTtBQWJULEdBQXJCO0FBZ0JILEVBQUEsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsVUFBbkIsR0FBZ0MsQ0FDekI7QUFBRSxJQUFBLElBQUksRUFBQyxJQUFQO0FBQWEsSUFBQSxLQUFLLEVBQUM7QUFBbkIsR0FEeUIsRUFFekI7QUFBRSxJQUFBLElBQUksRUFBQztBQUFQLEdBRnlCLENBQWhDO0FBS0EsRUFBQSxNQUFNLENBQUMsaUJBQVAsR0FBMEI7QUFBQyxZQUFPLElBQVI7QUFBYyxZQUFPO0FBQXJCLEdBQTFCO0FBRUo7O0FBRU0sU0FBUyxrQkFBVCxDQUE2QixNQUE3QixFQUFxQyxVQUFyQyxFQUFpRCxxQkFBakQsRUFBdUUsbUJBQXZFLEVBQTJGLG9CQUEzRixFQUFnSCxZQUFoSCxFQUE2SCxpQkFBN0gsRUFBK0ksZ0JBQS9JLEVBQWdLLHFCQUFoSyxFQUFzTCxZQUF0TCxFQUFtTSxRQUFuTSxFQUE0TSxlQUE1TSxFQUE0TixXQUE1TixFQUF3TyxRQUF4TyxFQUFpUCxjQUFqUCxFQUFnUSxNQUFoUSxFQUNQO0FBRUksRUFBQSxNQUFNLENBQUMsS0FBUCxHQUFlLGVBQWY7QUFDQSxFQUFBLE1BQU0sQ0FBQyxHQUFQLEdBQWEsbUJBQWI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQW1CO0FBQUksSUFBQSxLQUFLLEVBQUMsTUFBTSxDQUFDLEtBQWpCO0FBQXdCLElBQUEsY0FBYyxFQUFDO0FBQXZDLEdBQW5CO0FBQ0EsRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixFQUFsQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsRUFBbEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXVCLEVBQXZCO0FBQ0EsRUFBQSxNQUFNLENBQUMsSUFBUCxHQUFZLG9CQUFaO0FBQ0EsRUFBQSxNQUFNLENBQUMsVUFBUCxHQUFvQixLQUFwQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBcUIsTUFBckIsQ0FWSixDQVVpQzs7QUFDN0IsTUFBSSxJQUFJLEdBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEM7QUFDQSxFQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLFlBQVksQ0FBQyxFQUEvQjtBQUNBLEVBQUEsTUFBTSxDQUFDLG1CQUFQLEdBQTZCLEtBQTdCO0FBQ0EsRUFBQSxNQUFNLENBQUMscUJBQVAsR0FBK0IsSUFBL0I7QUFDQSxFQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGtCQUFqQixHQUFzQyxFQUF0QztBQUNBLEVBQUEsTUFBTSxDQUFDLFdBQVAsR0FBbUIsWUFBWSxDQUFDLFdBQWhDO0FBRUEsRUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLGdCQUFiO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixXQUF0QjtBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsYUFBcEI7O0FBRUEsTUFBSSxNQUFNLENBQUMsV0FBUCxLQUFxQixTQUFyQixJQUFrQyxNQUFNLENBQUMsV0FBUCxLQUFxQixFQUEzRCxFQUNBO0FBRUcsSUFBQSxNQUFNLENBQUMsV0FBUCxHQUFtQjtBQUFDLE1BQUEsS0FBSyxFQUFDO0FBQUMsUUFBQSxJQUFJLEVBQUM7QUFBTixPQUFQO0FBQTBDLE1BQUEsS0FBSyxFQUFDLHlCQUFoRDtBQUEwRSxNQUFBLE1BQU0sRUFBQztBQUFqRixLQUFuQjtBQUNGOztBQUNELEVBQUEsTUFBTSxDQUFDLFdBQVAsR0FBcUI7QUFBQyxJQUFBLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxVQUExQjtBQUFxQyxJQUFBLGVBQWUsRUFBRztBQUF2RCxHQUFyQjtBQUVBLE1BQUksZUFBZSxHQUFFLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQixpQkFBdEIsRUFBd0MsSUFBeEMsQ0FBckI7QUFDQSxNQUFJLG1CQUFtQixHQUFHLGVBQWUsQ0FBQyxPQUFoQixDQUF3QixJQUFsRDtBQUNBLEVBQUEsTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLG1CQUF6QixFQUE2QyxtQkFBN0MsRUFBa0U7QUFBQyxJQUFBLE1BQU0sRUFBQyxLQUFSO0FBQWMsSUFBQSxJQUFJLEVBQUM7QUFBbkIsR0FBbEU7O0FBRUEsRUFBQSxNQUFNLENBQUMsNEJBQVAsR0FBb0MsWUFBVTtBQUMxQyxJQUFBLG9CQUFvQixDQUFDLHFCQUFyQixDQUEyQyxNQUFNLENBQUMsVUFBbEQsRUFBOEQsSUFBOUQsQ0FBbUUsVUFBVSxJQUFWLEVBQWdCO0FBQ2hGLE1BQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLEdBQXNDLElBQUksQ0FBQyxJQUEzQztBQUNGLEtBRkQ7QUFHSCxHQUpEOztBQUtBLEVBQUEsTUFBTSxDQUFDLDRCQUFQO0FBQ0EsRUFBQSxRQUFRLENBQUMsWUFBVztBQUFJLElBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsTUFBeEI7QUFBeUMsR0FBekQsQ0FBUjtBQUdBLEVBQUEsTUFBTSxDQUFDLHFCQUFQLEdBQTZCO0FBQUMsSUFBQSxPQUFPLEVBQUMsSUFBVDtBQUFjLElBQUEsY0FBYyxFQUFDO0FBQTdCLEdBQTdCOztBQUVBLEVBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsb0JBQWpCLEdBQXdDLFlBQ3hDO0FBQ0csUUFBSSxXQUFXLEdBQUcsUUFBUSxDQUFDLHNCQUFULENBQWdDLHFCQUFoQyxDQUFsQjtBQUVBLElBQUEsTUFBTSxDQUFDLGFBQVAsR0FBdUIsRUFBdkI7O0FBRUQsUUFBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixJQUFpQyxVQUFyQyxFQUNBO0FBQ0UsTUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixHQUFrQyxPQUFsQztBQUNELE1BQUEsTUFBTSxDQUFDLGFBQVAsR0FBdUIsTUFBTSxDQUFDLEtBQVAsQ0FBYSw0QkFBYixDQUEwQyxXQUFXLENBQUMsQ0FBRCxDQUFyRCxDQUF2QjtBQUVBLEtBTEQsTUFNSyxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixHQUFnQyxVQUFoQztBQUNOLEdBYkQ7O0FBaUJBLEVBQUEsTUFBTSxDQUFDLG1CQUFQLEdBQTZCLFlBQzdCO0FBQ0ksSUFBQSxvQkFBb0IsQ0FBQyxtQkFBckIsQ0FBeUMsTUFBTSxDQUFDLFVBQWhELEVBQTJELE1BQU0sQ0FBQyxRQUFQLENBQWdCLFlBQTNFLEVBQXdGLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE9BQXhHLEVBQWlILElBQWpILENBQ0ksVUFBUyxJQUFULEVBQWU7QUFDWCxNQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUEyQixJQUFJLENBQUMsSUFBaEM7QUFDQTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNhLEtBUkwsRUFRTSxVQUFTLEtBQVQsRUFBZTtBQUNiLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0gsS0FWTDtBQVdILEdBYkQ7O0FBZUEsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixZQUN0QjtBQUNJLElBQUEsTUFBTSxDQUFDLGlCQUFQLEdBQXlCLElBQXpCO0FBQ0EsUUFBSSxTQUFTLEdBQUcsQ0FBQztBQUFDLE1BQUEsR0FBRyxFQUFDLE1BQU0sQ0FBQyxVQUFaO0FBQXVCLE1BQUEsV0FBVyxFQUFDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFlBQW5EO0FBQWdFLE1BQUEsT0FBTyxFQUFDLE1BQU0sQ0FBQyxRQUFQLENBQWdCO0FBQXhGLEtBQUQsQ0FBaEI7QUFDQSxJQUFBLG9CQUFvQixDQUFDLFlBQXJCLENBQWtDLFNBQWxDLEVBQTZDLElBQTdDLENBQWtELFVBQVMsSUFBVCxFQUFlO0FBQUE7O0FBRTdELE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxHQUF0QyxFQUEwQyxTQUExQztBQUNBLE1BQUEsTUFBTSxDQUFDLGlCQUFQLENBQXlCLFNBQXpCLEdBQXFDLElBQUksQ0FBQyxJQUFMLENBQVUsU0FBL0M7QUFDQSxNQUFBLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixRQUF6QixHQUFvQyxJQUFJLENBQUMsSUFBTCxDQUFVLFFBQTlDO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsT0FBekIsR0FBbUMsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUE3QztBQUNBLE1BQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsT0FBaEIsR0FBd0IsTUFBTSxDQUFDLGlCQUFQLENBQXlCLE9BQWpEO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsZ0JBQXpCLEdBQTZDLElBQTdDLGFBQTZDLElBQTdDLHVDQUE2QyxJQUFJLENBQUUsSUFBbkQsaURBQTZDLGFBQVksZ0JBQXpEO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsUUFBekIsR0FBb0MsSUFBSSxDQUFDLElBQUwsQ0FBVSxRQUE5QztBQUNBLE1BQUEsTUFBTSxDQUFDLGlCQUFQLENBQXlCLFdBQXpCLEdBQXVDLElBQUksQ0FBQyxJQUFMLENBQVUsV0FBakQ7QUFDQSxNQUFBLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixlQUF6QixHQUEyQyxJQUFJLENBQUMsSUFBTCxDQUFVLGVBQXJEO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsU0FBekIsR0FBcUMsSUFBSSxDQUFDLElBQUwsQ0FBVSxTQUEvQztBQUNBLE1BQUEsTUFBTSxDQUFDLGlCQUFQLENBQXlCLEtBQXpCLEdBQWlDLENBQWpDO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsR0FBekIsR0FBK0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxHQUF6QztBQUNBLE1BQUEsTUFBTSxDQUFDLGlCQUFQLEdBQXlCLEtBQXpCO0FBRUgsS0FoQkQsRUFnQkUsVUFBUyxLQUFULEVBQWU7QUFDYixNQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUF5QixLQUF6QjtBQUNBLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0gsS0FuQkQ7QUFvQkgsR0F4QkQ7O0FBNEJBLEVBQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTRCLFVBQVMsS0FBVCxFQUNoQjtBQUdFLElBQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSx3QkFBYixDQUFzQyxLQUF0QztBQUNBLElBQUEsTUFBTSxDQUFDLG1CQUFQLEdBQTJCLE1BQU0sQ0FBQyxLQUFQLENBQWEsd0JBQWIsRUFBM0IsQ0FKRixDQUtDO0FBQ0EsR0FQYjs7QUFXRyxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLFVBQVMsTUFBVCxFQUFnQixNQUFoQixFQUN2QjtBQUVFLElBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsWUFBM0IsR0FBd0MsTUFBeEM7QUFDQSxJQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLENBQTJCLFVBQTNCLEdBQXdDLE1BQXhDO0FBQ0EsSUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLGVBQWIsQ0FBNkIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsWUFBeEQ7QUFFRCxHQVBBOztBQVNBLEVBQUEsWUFBWSxDQUFDLGNBQWIsQ0FBNEIsY0FBNUIsRUFBMkMsSUFBM0MsRUFBaUQsSUFBakQsQ0FBc0QsVUFBVSxJQUFWLEVBQWdCO0FBQ25FO0FBQ3NCLElBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQTBCLElBQUksQ0FBQyxJQUEvQjtBQUNGLEdBSHZCO0FBS0MsRUFBQSxZQUFZLENBQUMsY0FBYixDQUE0QixZQUE1QixFQUF5QyxJQUF6QyxFQUErQyxJQUEvQyxDQUFvRCxVQUFVLElBQVYsRUFBZ0I7QUFDNUMsSUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsSUFBSSxDQUFDLElBQWpDO0FBQ0EsSUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBMkIsSUFBM0I7QUFDRixHQUh0Qjs7QUFPSixFQUFBLE1BQU0sQ0FBQyxxQkFBUCxHQUErQixZQUFZO0FBRW5DLElBQUEsb0JBQW9CLENBQUMsaUJBQXJCLENBQXVDLE1BQU0sQ0FBQyxVQUE5QyxFQUEwRCxJQUExRCxDQUErRCxVQUFTLElBQVQsRUFBZTtBQUU5RDtBQUNBLE1BQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsSUFBSSxDQUFDLElBQXZCO0FBQ0EsTUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixxQkFBaEIsR0FBd0MsTUFBTSxDQUFDLHFCQUEvQztBQUNBLE1BQUEsTUFBTSxDQUFDLHFCQUFQLEdBQTZCLElBQTdCLENBTDhELENBTzlEOztBQUNBLE1BQUEsTUFBTSxDQUFDLG1CQUFQO0FBRUEsTUFBQSxvQkFBb0IsQ0FBQyxnQkFBckIsQ0FBc0MsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsWUFBdEQsRUFBb0UsSUFBcEUsQ0FBeUUsVUFBVSxJQUFWLEVBQWdCO0FBQ2pGLFFBQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxxQkFBYixDQUFtQyxJQUFJLENBQUMsSUFBeEMsRUFBNkMsTUFBTSxDQUFDLFlBQXBEO0FBQ0EsUUFBQSxNQUFNLENBQUMsZUFBUDtBQUNQLE9BSEQsRUFHRSxVQUFTLEtBQVQsRUFBZTtBQUVSLFFBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ1IsT0FORDtBQVFmLEtBbEJELEVBa0JFLFVBQVMsS0FBVCxFQUFlO0FBRUMsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDckIsS0FyQkc7QUFzQlAsR0F4QkQsQ0F4SUosQ0FtS1E7OztBQUVBLEVBQUEsTUFBTSxDQUFDLEdBQVAsQ0FBVyxlQUFYLEVBQTJCLFVBQVMsS0FBVCxFQUFlLElBQWYsRUFBb0I7QUFFdkMsUUFBSSxHQUFHLEdBQUMsSUFBUjs7QUFDQSxRQUFJLEdBQUcsSUFBRSxHQUFMLElBQVksR0FBRyxJQUFFLEdBQXJCLEVBQ0E7QUFDSSxVQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLENBQTJCLFlBQTNCLElBQXlDLENBQTdDLEVBQWdELE1BQU0sQ0FBQyxZQUFQLENBQW9CLENBQXBCO0FBRW5EOztBQUNELFFBQUksR0FBRyxJQUFFLEdBQUwsSUFBWSxHQUFHLElBQUUsR0FBckIsRUFDQTtBQUNJLFVBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsWUFBM0IsSUFBeUMsQ0FBN0MsRUFBZ0QsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsQ0FBcEI7QUFDbkQ7QUFFUixHQWJEOztBQWVBLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsWUFFdEI7QUFDUTtBQUNBLElBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsT0FBaEIsR0FBMEIsUUFBUSxDQUFDLGFBQVQsQ0FBdUIsY0FBdkIsRUFBdUMsU0FBakUsQ0FGUixDQUdRO0FBQ0E7QUFFUCxHQVJEOztBQWNDLEVBQUEsTUFBTSxDQUFDLHFCQUFQLEdBQStCLEVBQS9CO0FBQ0EsRUFBQSxNQUFNLENBQUMseUJBQVAsR0FBaUMsRUFBakM7QUFDRDs7QUFDQTs7QUFDQTs7QUFDRCxFQUFBLE1BQU0sQ0FBQyxvQkFBUCxHQUE4QixZQUFZO0FBR3JDLElBQUEsTUFBTSxDQUFDLHFCQUFQLENBQTZCLE1BQTdCLEdBQW9DLENBQXBDO0FBQ0EsSUFBQSxNQUFNLENBQUMsYUFBUCxHQUFxQixLQUFyQjtBQUlBLElBQUEsb0JBQW9CLENBQUMsZ0NBQXJCLENBQXNELE1BQU0sQ0FBQyxVQUE3RCxFQUF5RSxJQUF6RSxDQUE4RSxVQUFTLElBQVQsRUFBZTtBQUU3RSxNQUFBLE1BQU0sQ0FBQyxxQkFBUCxHQUErQixJQUFJLENBQUMsSUFBcEM7QUFDQSxNQUFBLE1BQU0sQ0FBQyx5QkFBUCxHQUFtQyxPQUFPLENBQUMsSUFBUixDQUFhLE1BQU0sQ0FBQyxxQkFBcEIsQ0FBbkM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXFCLElBQXJCO0FBRU4sS0FOVixFQU1XLFVBQVMsS0FBVCxFQUFlO0FBQ04sTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDSCxLQVJqQjtBQVVKLEdBbEJEOztBQXNCQyxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLFVBQVUsT0FBVixFQUN6QjtBQUNNLFFBQUksT0FBSixFQUFjO0FBQ1IsTUFBQSxvQkFBb0IsQ0FBQyxnQkFBckIsQ0FBdUMsTUFBTSxDQUFDLFFBQTlDLEVBQXdELElBQXhELENBQ0ksVUFBUyxJQUFULEVBQWU7QUFDSixZQUFJLElBQUksQ0FBQyxNQUFMLEtBQWMsR0FBZCxJQUFxQixJQUFJLENBQUMsTUFBTCxLQUFjLEdBQXZDLEVBQWlELGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLDRCQUE1QixFQUF5RCxTQUF6RDtBQUMxRCxPQUhOLEVBR08sVUFBUyxLQUFULEVBQWU7QUFDUixRQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNELE9BTGI7QUFPTCxLQVJELE1BUU87QUFDTCxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLDRCQUE1QixFQUF5RCxTQUF6RDtBQUNEO0FBQ04sR0FiRDs7QUFpQkEsRUFBQSxNQUFNLENBQUMsdUJBQVAsR0FBaUMsWUFBVztBQUV4QyxRQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLElBQTZCLFNBQTdCLElBQTJDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLElBQTRCLElBQTNFLEVBQ0k7QUFDQyxNQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLEdBQTZCO0FBQUMsUUFBQSxtQkFBbUIsRUFBQztBQUFDLFVBQUEsY0FBYyxFQUFDO0FBQWhCO0FBQXJCLE9BQTdCO0FBQ0EsS0FITCxNQUlJO0FBQ0csVUFBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixDQUEyQixtQkFBM0IsSUFBa0QsU0FBbEQsSUFBK0QsS0FBSyxJQUFJLEtBQTVFLEVBQW9GO0FBQy9FLFFBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsbUJBQTNCLEdBQStDO0FBQUUsVUFBQSxjQUFjLEVBQUM7QUFBakIsU0FBL0M7QUFDTCxPQUZBLE1BRU8sTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsbUJBQTNCLENBQStDLGNBQS9DLENBQThELE1BQTlELEdBQXFFLENBQXJFO0FBQ1Q7QUFDUixHQVhEOztBQWVGLEVBQUEsTUFBTSxDQUFDLFdBQVAsR0FBcUIsVUFBUyxLQUFULEVBQWdCO0FBQ25DO0FBQUE7O0FBQ1EsUUFBSSxlQUFlLEdBQUMsRUFBcEI7QUFDQyxrQ0FBSyxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFyQiw2RUFBSyx1QkFBNEIsbUJBQWpDLG1EQUFLLHVCQUFpRCxjQUF0RCxFQUNPLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxTQUFSLEVBQXFCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLENBQTJCLG1CQUEzQixDQUErQyxjQUFwRSxDQUF2QjtBQUNoQixHQUxGOztBQVNBLEVBQUEsTUFBTSxDQUFDLE1BQVAsQ0FBYyxrQ0FBZCxFQUFpRCxVQUFTLFFBQVQsRUFBa0IsUUFBbEIsRUFBMkI7QUFFcEUsUUFBSSxRQUFRLElBQUUsUUFBZCxFQUNBO0FBQ0MsTUFBQSxNQUFNLENBQUMsYUFBUCxHQUFxQixNQUFNLENBQUMsS0FBUCxDQUFhLGtCQUFiLEVBQXJCO0FBRUEsTUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBNkIsTUFBTSxDQUFDLEtBQVAsQ0FBYSx3QkFBYixFQUE3QjtBQUNBOztBQUNELFFBQUksTUFBTSxDQUFDLGlCQUFQLElBQTRCLE1BQU0sQ0FBQyxtQkFBdkMsRUFDQTtBQUNFLE1BQUEsTUFBTSxDQUFDLGFBQVAsR0FBcUIsTUFBTSxDQUFDLEtBQVAsQ0FBYSxrQkFBYixFQUFyQjtBQUNBLE1BQUEsTUFBTSxDQUFDLGlCQUFQLEdBQXlCLEtBQXpCO0FBQ0E7QUFDSCxHQWJQO0FBZUMsRUFBQSxNQUFNLENBQUMsTUFBUCxDQUFjLDRCQUFkLEVBQTJDLFVBQVMsUUFBVCxFQUFrQixRQUFsQixFQUEyQjtBQUUvRCxRQUFJLFFBQVEsSUFBRSxRQUFkLEVBQ0E7QUFDQyxNQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXFCLE1BQU0sQ0FBQyxLQUFQLENBQWEsa0JBQWIsRUFBckI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLEdBQWlDLFVBQWpDO0FBQ0EsTUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBNkIsTUFBTSxDQUFDLEtBQVAsQ0FBYSx3QkFBYixFQUE3QjtBQUNBOztBQUNBLFFBQUksTUFBTSxDQUFDLGlCQUFQLElBQTRCLE1BQU0sQ0FBQyxtQkFBdkMsRUFDQTtBQUNDLE1BQUEsTUFBTSxDQUFDLGFBQVAsR0FBcUIsTUFBTSxDQUFDLEtBQVAsQ0FBYSxrQkFBYixFQUFyQjtBQUNBLE1BQUEsTUFBTSxDQUFDLGlCQUFQLEdBQXlCLEtBQXpCO0FBQ0E7QUFDSCxHQWJOOztBQWlCRCxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLFlBQVk7QUFDckM7QUFDSSxJQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLEtBQWxCO0FBRUEsSUFBQSxvQkFBb0IsQ0FBQyxlQUFyQixDQUFxQyxNQUFNLENBQUMsVUFBNUMsRUFBdUQsR0FBdkQsRUFBMkQsSUFBM0QsRUFBaUUsSUFBakUsQ0FDTSxVQUFTLElBQVQsRUFBa0I7QUFBQTs7QUFHZCxNQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWlCLElBQUksQ0FBQyxJQUFMLENBQVUsa0JBQTNCO0FBQ0EsTUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixxQkFBaEIsR0FBd0MsTUFBTSxDQUFDLHFCQUEvQzs7QUFDQSxVQUFJLElBQUksU0FBSixJQUFBLElBQUksV0FBSixvQkFBQSxJQUFJLENBQUUsSUFBTixzREFBWSxPQUFaLElBQXVCLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBVixDQUFrQixNQUFsQixHQUF5QixDQUFwRCxFQUF1RDtBQUNsRCxRQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLEdBQXlCO0FBQUMsVUFBQSxNQUFNLEVBQUMsSUFBSSxDQUFDLElBQUwsQ0FBVTtBQUFsQixTQUF6QjtBQUNILE9BRkYsTUFHSyxNQUFNLENBQUMsU0FBUCxDQUFpQixPQUFqQixHQUF5QjtBQUFDLFFBQUEsTUFBTSxFQUFHLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGdCQUFoQixDQUFpQztBQUEzQyxPQUF6QixDQVJTLENBV2Q7OztBQUNRLE1BQUEsTUFBTSxDQUFDLG1CQUFQO0FBRUEsTUFBQSxvQkFBb0IsQ0FBQyxnQkFBckIsQ0FBc0MsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsWUFBdEQsRUFBb0UsSUFBcEUsQ0FBeUUsVUFBVSxJQUFWLEVBQWdCO0FBQ2pGLFFBQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxxQkFBYixDQUFtQyxJQUFJLENBQUMsSUFBeEMsRUFBNkMsTUFBTSxDQUFDLFlBQXBEO0FBQ0gsT0FGTCxFQUVNLFVBQVMsS0FBVCxFQUFlO0FBRVosUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDUixPQUxEO0FBU1IsTUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixHQUE2QjtBQUFDLFFBQUEsWUFBWSxFQUFDLENBQWQ7QUFBZ0IsUUFBQSxVQUFVLEVBQUM7QUFBM0IsT0FBN0I7QUFDQSxNQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUF3QixZQUFVLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFlBQTFCLEdBQXVDLGlCQUEvRDtBQUNBLE1BQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxlQUFiLENBQTZCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLENBQTJCLFlBQXhEO0FBRUEsTUFBQSxRQUFRLENBQUUsWUFBVztBQUNoQixRQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLElBQWxCLENBRGdCLENBRWpCO0FBQ0gsT0FITyxDQUFSO0FBSUwsS0FoQ0wsRUFnQ00sVUFBUyxLQUFULEVBQWU7QUFDUixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNKLEtBbENUO0FBb0NILEdBeENEOztBQTBDRixFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBaFZKLENBb1ZLO0FBQ0Q7QUFDQTs7QUFDRixFQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQixVQUFVLEdBQVYsRUFBZTtBQUN0QyxJQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQW9CLElBQXBCLENBRHNDLENBQ1o7O0FBQzFCLElBQUEsTUFBTSxDQUFDLFVBQVAsR0FBa0IsS0FBbEI7QUFDQSxJQUFBLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixLQUExQixFQUhzQyxDQUl0Qzs7QUFFQyxJQUFBLG9CQUFvQixDQUFDLGdCQUFyQixDQUFzQyxNQUFNLENBQUMsU0FBUCxDQUFpQixPQUFqQixDQUF5QixNQUEvRCxFQUFzRSxNQUFNLENBQUMsVUFBN0UsRUFBd0YsR0FBeEYsRUFBNEYsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsY0FBN0csRUFDVyxJQURYLENBQ2dCLFVBQVMsSUFBVCxFQUFlO0FBQ1QsVUFBSSxJQUFJLENBQUMsSUFBTCxDQUFVLFFBQVYsQ0FBbUIsTUFBbkIsR0FBMEIsQ0FBOUIsRUFBa0M7QUFDOUIsUUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixPQUFqQixHQUF5QjtBQUFDLFVBQUEsTUFBTSxFQUFDLElBQUksQ0FBQyxJQUFMLENBQVU7QUFBbEIsU0FBekI7QUFDQSxRQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFdBQWhCLEdBQThCLElBQUksQ0FBQyxJQUFMLENBQVUsWUFBeEM7QUFDQSxRQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE9BQWhCLEdBQTBCLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBcEM7QUFDQSxRQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLElBQUksQ0FBQyxJQUFMLENBQVUsV0FBNUI7QUFDSDs7QUFDRCxNQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLEdBQXhCO0FBQ0EsVUFBSSxJQUFJLEdBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEM7QUFDQSxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxHQUFqQyxFQUFxQyxJQUFJLENBQUMsT0FBMUM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQW9CLEtBQXBCO0FBRUEsTUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixJQUFsQjtBQUNBLE1BQUEsQ0FBQyxDQUFDLGlCQUFELENBQUQsQ0FBcUIsS0FBckIsQ0FBMkIsTUFBM0I7QUFFUixLQWhCZCxFQWdCZSxVQUFTLEtBQVQsRUFBZTtBQUNGLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0EsTUFBQSxNQUFNLENBQUMsVUFBUCxHQUFvQixLQUFwQjtBQUNBLE1BQUEsTUFBTSxDQUFDLFVBQVAsR0FBa0IsSUFBbEI7QUFDSixLQXBCeEI7QUFzQkgsR0E1QkQ7O0FBOEJHLEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBbUIsVUFBVSxNQUFWLEVBQWtCO0FBQ25DO0FBQ0M7QUFDQSxJQUFBLENBQUMsQ0FBQyxpQkFBRCxDQUFELENBQXFCLEtBQXJCLENBQTJCLE1BQTNCO0FBQ0EsSUFBQSxNQUFNLENBQUMsV0FBUCxHQUFtQixNQUFuQjtBQUNBLElBQUEsTUFBTSxDQUFDLGlCQUFQLEdBQTJCLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE9BQTNDO0FBQ0gsR0FOQSxDQXJYTCxDQWdZRztBQUNDO0FBQ0E7OztBQUNGLEVBQUEsTUFBTSxDQUFDLGFBQVAsR0FBdUIsVUFBVSxTQUFWLEVBQXFCO0FBRXRDLFFBQUksWUFBWSxHQUFDLE1BQWpCOztBQUNBLFFBQUksU0FBSixFQUFlO0FBQ1gsVUFBSSxNQUFNLENBQUMsV0FBUCxJQUFvQixNQUF4QixFQUNBO0FBQ0ksUUFBQSxNQUFNLENBQUMsZ0JBQVAsQ0FBd0IsWUFBeEI7QUFDSCxPQUhELE1BR0s7QUFDTCxRQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLElBQXhCLENBREssQ0FFTDs7QUFDQSxRQUFBLG9CQUFvQixDQUFDLGVBQXJCLENBQXFDLE1BQU0sQ0FBQyxVQUE1QyxFQUF1RCxNQUFNLENBQUMsUUFBUCxDQUFnQixPQUF2RSxFQUErRSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFoRyxFQUErRyxZQUEvRyxFQUNTLElBRFQsQ0FDYyxVQUFTLElBQVQsRUFBZTtBQUNMLFVBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLEdBQWpDLEVBQXFDLFNBQXJDLEVBREssQ0FFTDs7QUFDQSxVQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLEtBQXhCO0FBQ0EsVUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixTQUFoQixHQUE0QixJQUE1QjtBQUNBLFVBQUEsTUFBTSxDQUFDLDRCQUFQO0FBQ0EsVUFBQSxNQUFNLENBQUMsbUJBQVA7QUFDQSxVQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXVCLEVBQXZCO0FBQ0EsVUFBQSxDQUFDLENBQUMsaUJBQUQsQ0FBRCxDQUFxQixLQUFyQixDQUEyQixNQUEzQixFQVJLLENBU0o7QUFDaEIsU0FYVCxFQVdXLFVBQVMsS0FBVCxFQUFlO0FBQ0EsVUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDQSxVQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLEtBQXhCO0FBRUosU0FmdEI7QUFnQkE7O0FBQ0EsTUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixlQUFoQixHQUFrQyxpQkFBaUIsQ0FBQyxjQUFsQixDQUFpQyxFQUFqQyxDQUFsQztBQUNIO0FBQ04sR0E3QkQ7O0FBaUNDLEVBQUEsTUFBTSxDQUFDLG9CQUFQLEdBQThCLFlBQ3pCO0FBQ1EsUUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsS0FBbkIsQ0FBeUIsSUFBcEMsQ0FEUixDQUVROztBQUNBLElBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxJQUFWLEVBQWUsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsTUFBbEM7QUFFUCxHQU5OLENBcGFILENBNGFHOzs7QUFJRyxFQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQixLQUExQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFdBQVAsR0FBbUIsS0FBbkI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQWlCLEVBQWpCO0FBRUEsRUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLGNBQWIsQ0FBNEIsVUFBNUI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixhQUE1QjtBQUNBLEVBQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxjQUFiLENBQTRCLGNBQVksTUFBTSxDQUFDLFlBQS9DO0FBR0EsRUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBMkIsS0FBM0I7QUFHTDs7QUFJTSxTQUFTLHNCQUFULENBQWlDLE1BQWpDLEVBQXdDLFFBQXhDLEVBQWtELFVBQWxELEVBQThELHFCQUE5RCxFQUFvRixvQkFBcEYsRUFBeUcsaUJBQXpHLEVBQTJILGdCQUEzSCxFQUE0SSxZQUE1SSxFQUF5SixlQUF6SixFQUEwSztBQUUzSyxFQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLFlBQVksQ0FBQyxXQUEvQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBaUIsWUFBWSxDQUFDLEVBQTlCO0FBQ0EsRUFBQSxNQUFNLENBQUMsSUFBUCxHQUFZLHdCQUFaO0FBQ0EsRUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEI7QUFBQyx3QkFBbUIsTUFBTSxDQUFDO0FBQTNCLEdBQTVCO0FBQ0EsRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFnQixDQUFDLEVBQUQsQ0FBaEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQW9CLFVBQXBCO0FBRUEsRUFBQSxNQUFNLENBQUMsU0FBUCxHQUFtQjtBQUNyQixJQUFBLEVBQUUsRUFBRSxHQURpQjtBQUVyQixJQUFBLElBQUksRUFBRSxNQUZlO0FBR3JCLElBQUEsT0FBTyxFQUFFLGVBQWUsQ0FBQyxtQkFBaEI7QUFIWSxHQUFuQjtBQU1BLE1BQUksSUFBSSxHQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDOztBQUVBLEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsWUFBWTtBQUFDO0FBQ3RDO0FBQ0EsSUFBQSxvQkFBb0IsQ0FBQyxlQUFyQixDQUFxQyxNQUFNLENBQUMsVUFBNUMsRUFBdUQsR0FBdkQsRUFBMkQsSUFBM0QsRUFBZ0UsTUFBTSxDQUFDLGlCQUFQLENBQXlCLFlBQXpGLEVBQXVHLElBQXZHLENBQTRHLFVBQVMsSUFBVCxFQUFlO0FBRWpHLE1BQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsT0FBakIsQ0FBeUIsTUFBekIsR0FBZ0MsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUExQztBQUNBLE1BQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTJCLElBQUksQ0FBQyxJQUFMLENBQVUsa0JBQXJDLENBSGlHLENBSWpHOztBQUNBLE1BQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsR0FBNkI7QUFBQyxRQUFBLFlBQVksRUFBQztBQUFkLE9BQTdCO0FBQ0EsTUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixJQUFsQjtBQUN2QixLQVBILEVBT0ksVUFBUyxLQUFULEVBQWU7QUFFUyxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUdKLEtBWnhCO0FBYUMsR0FmRDs7QUFpQkosRUFBQSxNQUFNLENBQUMsdUJBQVAsR0FBaUMsWUFBWTtBQUN6QyxJQUFBLG9CQUFvQixDQUFDLHVCQUFyQixDQUE2QyxNQUFNLENBQUMsVUFBcEQsRUFBK0QsTUFBTSxDQUFDLFNBQXRFLEVBQWdGLEdBQWhGLEVBQW9GLElBQXBGLEVBQTBGLElBQTFGLENBQStGLFVBQVMsSUFBVCxFQUFlO0FBRXBGLE1BQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsT0FBakIsQ0FBeUIsTUFBekIsR0FBZ0MsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUExQztBQUNBLE1BQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxTQUE1QjtBQUNBLE1BQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTJCLElBQUksQ0FBQyxJQUFMLENBQVUsa0JBQXJDLENBSm9GLENBS3BGOztBQUNBLE1BQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsR0FBNkI7QUFBQyxRQUFBLFlBQVksRUFBQztBQUFkLE9BQTdCO0FBQ0EsTUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixJQUFsQjtBQUNDLEtBUjNCLEVBUTRCLFVBQVMsS0FBVCxFQUFlO0FBRWYsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFHSixLQWJ4QjtBQWNDLEdBZkw7O0FBaUJBLE1BQUksTUFBTSxDQUFDLFNBQVAsSUFBa0IsRUFBdEIsRUFDRTtBQUNFLElBQUEsTUFBTSxDQUFDLE1BQVAsR0FBZ0IsUUFBaEI7QUFFRCxHQUpILE1BTUU7QUFFRSxJQUFBLE1BQU0sQ0FBQyxNQUFQLEdBQWdCLFFBQWhCO0FBRUQ7O0FBQ0MsTUFBSSxNQUFNLENBQUMsVUFBUCxJQUFxQixTQUFyQixJQUFrQyxNQUFNLENBQUMsTUFBUCxJQUFpQixRQUF2RCxFQUNBO0FBQ0UsSUFBQSxNQUFNLENBQUMsZUFBUDtBQUNELEdBSEQsTUFJSyxJQUFJLE1BQU0sQ0FBQyxTQUFQLElBQW9CLFNBQXhCLEVBQ0w7QUFDQSxJQUFBLE1BQU0sQ0FBQyx1QkFBUDtBQUdDOztBQUVELEVBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQTBCLFlBQVk7QUFJakMsSUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixlQUFoQixHQUFrQyxpQkFBaUIsQ0FBQyxjQUFsQixDQUFpQyx1QkFBcUIsTUFBTSxDQUFDLFVBQTdELENBQWxDLENBSmlDLENBTWpDOztBQUdELElBQUEsb0JBQW9CLENBQUMsZ0JBQXJCLENBQXNDLE1BQU0sQ0FBQyxVQUE3QyxFQUF3RCxNQUFNLENBQUMsUUFBL0QsRUFBeUUsSUFBekUsQ0FBOEUsVUFBUyxJQUFULEVBQWU7QUFDbkUsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsR0FBakMsRUFBcUMsU0FBckM7QUFDRSxNQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGVBQWhCLEdBQWtDLGlCQUFpQixDQUFDLGNBQWxCLENBQWlDLEVBQWpDLENBQWxDO0FBQ0osS0FIeEIsRUFHeUIsVUFBUyxLQUFULEVBQWU7QUFDaEIsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFFSixLQU5wQjtBQU9ELEdBaEJIOztBQW1CQSxFQUFBLE1BQU0sQ0FBQyxvQkFBUCxHQUE4QixZQUFZO0FBRXRDLElBQUEsb0JBQW9CLENBQUMsbUJBQXJCLENBQXlDLE1BQU0sQ0FBQyxVQUFoRCxFQUEyRCxNQUFNLENBQUMsU0FBbEUsRUFBNkUsSUFBN0UsQ0FBa0YsVUFBUyxJQUFULEVBQWU7QUFDdkUsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsR0FBakMsRUFBcUMsU0FBckM7QUFDRixLQUZ4QixFQUV5QixVQUFTLEtBQVQsRUFBZTtBQUNoQixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUVKLEtBTHBCO0FBTUQsR0FSSDtBQVNEOztBQUdFLFNBQVMsU0FBVCxDQUFvQixNQUFwQixFQUE0QixVQUE1QixFQUF1QyxNQUF2QyxFQUE4QyxvQkFBOUMsRUFBbUUsV0FBbkUsRUFBK0UsZUFBL0UsRUFBK0YsZ0JBQS9GLEVBQWdILFFBQWhILEVBQTBIO0FBRWhJLEVBQUEsTUFBTSxDQUFDLElBQVAsR0FBWSxXQUFaO0FBQ0EsRUFBQSxNQUFNLENBQUMsU0FBUCxHQUFpQixNQUFNLENBQUMsTUFBUCxDQUFjLFNBQS9CO0FBQ08sRUFBQSxNQUFNLENBQUMsYUFBUCxHQUF1QjtBQUFDLElBQUEsS0FBSyxFQUFDLE1BQU0sQ0FBQyxPQUFQLENBQWUsSUFBdEI7QUFBMkIsSUFBQSxNQUFNLEVBQUM7QUFBQyxNQUFBLFNBQVMsRUFBQyxNQUFNLENBQUMsU0FBbEI7QUFBNEIsTUFBQSxXQUFXLEVBQUMsTUFBTSxDQUFDLE1BQVAsQ0FBYztBQUF0RDtBQUFsQyxHQUF2QixDQUp5SCxDQUt6SDs7QUFDSixFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCO0FBQ2pCLElBQUEsVUFBVSxFQUFFLENBQ1g7QUFBRSxNQUFBLElBQUksRUFBRSxJQUFSO0FBQWMsTUFBQSxXQUFXLEVBQUUsSUFBM0I7QUFBaUMsTUFBQSxlQUFlLEVBQUUsZUFBZSxDQUFDLGdCQUFoQixDQUFpQyxHQUFuRjtBQUF1RixNQUFBLElBQUksRUFBRSxRQUE3RjtBQUF1RyxNQUFBLEtBQUssRUFBQyxJQUE3RztBQUFrSCxNQUFBLFlBQVksRUFBRSxLQUFoSTtBQUF1SSxNQUFBLE9BQU8sRUFBRTtBQUFoSixLQURXLEVBRVg7QUFBRSxNQUFBLElBQUksRUFBRSw2QkFBUjtBQUF1QyxNQUFBLFdBQVcsRUFBRTtBQUFwRCxLQUZXLEVBR1g7QUFBRSxNQUFBLElBQUksRUFBRSxnQ0FBUjtBQUEwQyxNQUFBLFdBQVcsRUFBRTtBQUF2RCxLQUhXLEVBSVg7QUFBRSxNQUFBLElBQUksRUFBRSxvQ0FBUjtBQUE4QyxNQUFBLFdBQVcsRUFBRTtBQUEzRCxLQUpXLEVBS2I7QUFDQztBQUNDO0FBQUUsTUFBQSxJQUFJLEVBQUUsaUJBQVI7QUFBMkIsTUFBQSxXQUFXLEVBQUUsY0FBeEM7QUFBdUQsTUFBQSxZQUFZLEVBQUUsS0FBckU7QUFBMkUsTUFBQSxJQUFJLEVBQUUsTUFBakY7QUFBeUYsTUFBQSxVQUFVLEVBQUU7QUFBckcsS0FQVyxFQVFYO0FBQUUsTUFBQSxJQUFJLEVBQUUsZ0JBQVI7QUFBMEIsTUFBQSxXQUFXLEVBQUU7QUFBdkMsS0FSVyxFQVNYO0FBQUUsTUFBQSxJQUFJLEVBQUUsaUNBQVI7QUFBMkMsTUFBQSxXQUFXLEVBQUU7QUFBeEQsS0FUVyxDQURLO0FBWW5CLElBQUEsY0FBYyxFQUFFLElBWkc7QUFhakIsSUFBQSxjQUFjLEVBQUUsSUFiQztBQWNyQixJQUFBLGdCQUFnQixFQUFFLElBZEc7QUFlakIsSUFBQSxrQkFBa0IsRUFBRSxJQWZIO0FBZ0JsQixJQUFBLFdBQVcsRUFBRSxLQWhCSztBQWlCbEIsSUFBQSx5QkFBeUIsRUFBRyxDQWpCVjtBQWtCbkIsSUFBQSx1QkFBdUIsRUFBRyxDQWxCUDtBQW1CbEIsSUFBQSxlQUFlLEVBQUUsSUFuQkM7QUFvQmxCLElBQUEsd0JBQXdCLEVBQUUsSUFwQlI7QUFxQmxCLElBQUEsb0JBQW9CLEVBQUU7QUFDeEI7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBNUJ5QixHQUFyQjs7QUFrQ0EsRUFBQSxNQUFNLENBQUMsV0FBUCxDQUFtQixhQUFuQixHQUFtQyxVQUFVLE9BQVYsRUFBbUI7QUFDbEQ7QUFDQSxJQUFBLE1BQU0sQ0FBQyxPQUFQLEdBQWlCLE9BQWpCO0FBRUUsSUFBQSxPQUFPLENBQUMsU0FBUixDQUFrQixFQUFsQixDQUFxQixtQkFBckIsQ0FBeUMsTUFBekMsRUFBZ0QsVUFBUyxHQUFULEVBQWE7QUFFM0QsTUFBQSxNQUFNLENBQUMsWUFBUCxHQUFvQixHQUFHLENBQUMsVUFBeEI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLEdBQUcsQ0FBQyxNQUFKLENBQVcsRUFBakM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUE0QixHQUFHLENBQUMsTUFBaEM7QUFDRCxLQUxEO0FBTUosR0FWRjs7QUFjSCxFQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQW9CLFlBQVU7QUFHM0IsUUFBSSxJQUFJLEdBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEM7QUFDQSxJQUFBLG9CQUFvQixDQUFDLG9CQUFyQixDQUEwQyxJQUExQyxFQUErQyxNQUEvQyxFQUF1RCxJQUF2RCxDQUE0RCxVQUFTLElBQVQsRUFBZTtBQUU3QyxNQUFBLE1BQU0sQ0FBQyxXQUFQLENBQW1CLElBQW5CLEdBQTBCLElBQUksQ0FBQyxJQUEvQjtBQUVBLEtBSjlCLEVBSStCLFVBQVMsS0FBVCxFQUFlO0FBRWpCLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBRUgsS0FSMUI7QUFTRyxHQWJOLENBdERnSSxDQXNFN0g7OztBQUNBLEVBQUEsTUFBTSxDQUFDLFVBQVA7QUFJQzs7QUFFRSxTQUFTLG1CQUFULENBQThCLE1BQTlCLEVBQXNDLFVBQXRDLEVBQWlELE1BQWpELEVBQXdELFNBQXhELEVBQWtFLFlBQWxFLEVBQStFLG9CQUEvRSxFQUFvRyxXQUFwRyxFQUFnSCxnQkFBaEgsRUFBaUksV0FBakksRUFBNkksZUFBN0ksRUFBNkosUUFBN0osRUFBdUs7QUFBQTs7QUFFdEssRUFBQSxNQUFNLENBQUMsSUFBUCxHQUFZLHFCQUFaO0FBQ0EsRUFBQSxNQUFNLENBQUMsS0FBUCxHQUFlLGVBQWY7QUFDQSxFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQW1CO0FBQUMsSUFBQSxPQUFPLEVBQUMsTUFBTSxDQUFDLEtBQVAsQ0FBYSxnQkFBYjtBQUFULEdBQW5CO0FBQ0EsRUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixNQUFNLENBQUMsTUFBUCxDQUFjLEVBQWhDO0FBQ0EsRUFBQSxNQUFNLENBQUMsSUFBUCxHQUFZLEVBQVo7QUFDQSxFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQWlCLE1BQU0sQ0FBQyxNQUFQLENBQWMsU0FBL0I7QUFDQSxNQUFJLElBQUksR0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QztBQUNBLEVBQUEsTUFBTSxDQUFDLGFBQVAsR0FBdUIsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsWUFBdEQ7QUFDQSxFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQW1CLENBQW5CO0FBQ0EsRUFBQSxNQUFNLENBQUMsYUFBUCxHQUF1QjtBQUFDLElBQUEsS0FBSyxFQUFDLE1BQU0sQ0FBQyxPQUFQLENBQWUsSUFBdEI7QUFBMkIsSUFBQSxNQUFNLEVBQUM7QUFBQyxNQUFBLEVBQUUsRUFBQyxNQUFNLENBQUMsTUFBWDtBQUFrQixNQUFBLFNBQVMsRUFBQyxNQUFNLENBQUMsU0FBbkM7QUFBNkMsTUFBQSxjQUFjLEVBQUM7QUFBNUQ7QUFBbEMsR0FBdkI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUEwQjtBQUFDLElBQUEsZUFBZSxFQUFDO0FBQWpCLEdBQTFCO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFvQixNQUFwQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBaUIsRUFBakIsQ0Fkc0ssQ0FldEs7O0FBQ04sRUFBQSxNQUFNLENBQUMsZUFBUCw0QkFBMEIsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBN0Msb0ZBQTBCLHNCQUFnQyxZQUExRCwyREFBMEIsdUJBQThDLEVBQXhFO0FBQ00sRUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLGdCQUFiO0FBQ0EsRUFBQSxNQUFNLENBQUMsZUFBUCxHQUF5QixrQkFBVSxRQUFWLEVBQW9CLG1CQUFwQixDQUF6QjtBQUVBLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsV0FBdEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGFBQXBCO0FBQ0EsRUFBQSxNQUFNLENBQUMsTUFBUCxHQUFnQixVQUFVLENBQUMsT0FBWCxDQUFtQixVQUFuQztBQUNBO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFRSxNQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFyQixFQUF1QyxDQUN0Qzs7QUFHSyxFQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXVCLFVBQVUsU0FBVixFQUFxQixXQUFyQixFQUN2QjtBQUNJLFNBQUssSUFBSSxDQUFDLEdBQUMsQ0FBWCxFQUFhLENBQUMsR0FBQyxXQUFXLENBQUMsTUFBM0IsRUFBa0MsQ0FBQyxFQUFuQyxFQUF1QztBQUMzQixVQUFJLFdBQVcsQ0FBQyxDQUFELENBQVgsQ0FBZSxRQUFmLElBQXlCLFNBQTdCLEVBQXdDLE9BQU8sQ0FBUDtBQUNuRDs7QUFDRCxXQUFPLENBQUMsQ0FBUjtBQUNILEdBTkQ7O0FBUU4sRUFBQSxNQUFNLENBQUMsVUFBUCxHQUFvQixVQUFVLFNBQVYsRUFBcUIsV0FBckIsRUFDZDtBQUNJLFNBQUssSUFBSSxDQUFDLEdBQUMsQ0FBWCxFQUFhLENBQUMsR0FBQyxXQUFXLENBQUMsTUFBM0IsRUFBa0MsQ0FBQyxFQUFuQyxFQUF1QztBQUFBOztBQUMzQixVQUFJLFdBQVcsQ0FBQyxDQUFELENBQVgsQ0FBZSxRQUFmLElBQXlCLFNBQTdCLEVBQXdDLDBCQUFPLFdBQVcsQ0FBQyxDQUFELENBQWxCLG9EQUFPLGdCQUFnQixFQUF2QjtBQUNuRDs7QUFDRCxXQUFPLElBQVA7QUFDSCxHQU5QOztBQVFPLEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsWUFDMUI7QUFDSSxRQUFJLE9BQUo7QUFDQSxRQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLENBQTJCLFVBQS9CLEVBQTJDLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUCxDQUFnQixnQkFBaEIsQ0FBaUMsU0FBM0MsQ0FBM0MsS0FDSyxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsR0FBMUI7QUFFTixRQUFJLFlBQVksR0FBRyxTQUFTLENBQUMsTUFBVixHQUFtQixHQUF0QztBQUVBLFFBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxlQUFQLEdBQXVCLE9BQXZCLEdBQStCLEdBQS9CLEdBQW1DLE1BQU0sQ0FBQyxLQUFQLENBQWEsbUJBQWIsQ0FBaUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsR0FBakQsRUFBc0QsVUFBekYsR0FBb0csbUJBQXBHLEdBQXdILFlBQWxJO0FBRUEsSUFBQSxNQUFNLENBQUMsSUFBUCxDQUFZLEdBQVosRUFBZ0IsUUFBaEI7QUFFRixHQVpBOztBQWNKLEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsWUFDdEI7QUFDSSxRQUFJLE9BQUo7QUFDQSxRQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLENBQTJCLFVBQS9CLEVBQTJDLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUCxDQUFnQixnQkFBaEIsQ0FBaUMsU0FBM0MsQ0FBM0MsS0FDSyxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsR0FBMUI7QUFFTixRQUFJLFlBQVksR0FBRyxTQUFTLENBQUMsTUFBVixHQUFtQixHQUF0QztBQUVBLFdBQU8sWUFBVSxPQUFWLEdBQWtCLEdBQWxCLEdBQXNCLE1BQU0sQ0FBQyxLQUFQLENBQWEsbUJBQWIsQ0FBaUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsR0FBakQsRUFBc0QsVUFBNUUsR0FBdUYsbUJBQXZGLEdBQTJHLFlBQWxIO0FBQ0YsR0FUSjs7QUFXRyxFQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUEyQixZQUMzQjtBQUNJLFFBQUksT0FBSjtBQUNBLFFBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsVUFBL0IsRUFBMkMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGdCQUFoQixDQUFpQyxTQUEzQyxDQUEzQyxLQUNLLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUCxDQUFnQixHQUExQixDQUhULENBS0c7O0FBQ0MsV0FBTztBQUFDLE1BQUEsTUFBTSxFQUFFLE9BQVQ7QUFBaUIsTUFBQSxPQUFPLEVBQUMsU0FBekI7QUFBbUMsTUFBQSxLQUFLLEVBQUMsTUFBTSxDQUFDLGVBQWhEO0FBQWdFLE1BQUEsT0FBTyxFQUFDLE1BQU0sQ0FBQyxLQUFQLENBQWEsbUJBQWIsQ0FBaUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsR0FBakQsRUFBc0QsVUFBOUg7QUFBeUksTUFBQSxTQUFTLEVBQUM7QUFBbkosS0FBUDtBQUNILEdBUkQ7O0FBV0osRUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBMEIsVUFBVSxXQUFWLEVBQzFCO0FBQUE7O0FBRUYsUUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLFVBQVAsQ0FBa0IsV0FBbEIsRUFBK0IsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsZ0JBQWhCLENBQWlDLE1BQWhFLENBQWY7QUFDQSxRQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsVUFBUCxDQUFrQixjQUFsQixFQUFrQyxNQUFNLENBQUMsUUFBUCxDQUFnQixnQkFBaEIsQ0FBaUMsTUFBbkUsQ0FBZjtBQUVBLElBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLDRCQUFvQyxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBckQseUVBQXlFO0FBQUUsTUFBQSxFQUFFLEVBQUU7QUFBTixLQUF6RTtBQUNBLElBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsNkJBQWdDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpELDJFQUFpRTtBQUFFLE1BQUEsRUFBRSxFQUFFO0FBQU4sS0FBakU7QUFDTSxJQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLDRCQUE0QixNQUFNLENBQUMsU0FBUCxDQUFpQixRQUE3Qyx5RUFBeUQ7QUFBRSxNQUFBLEVBQUUsRUFBRTtBQUFOLEtBQXpEO0FBRU4sSUFBQSxNQUFNLENBQUMsTUFBUCxHQUFnQixFQUFoQjtBQUNNLFFBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLENBQWtDLEVBQXRDLEVBQ0ksTUFBTSxDQUFDLE1BQVAsQ0FBYyxJQUFkLENBQW1CO0FBQUMsWUFBSyxRQUFOO0FBQ3ZCLG1CQUFZLE1BQU0sQ0FBQyxVQURJO0FBRXZCLG1CQUFZLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixDQUFrQyxFQUZ2QjtBQUd2QixrQkFBVyxXQUhZO0FBSXZCLHVEQUFzQixNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBdkMsMkRBQXNCLHVCQUFtQyxtQkFKbEM7QUFLdkIscURBQW9CLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFyQywyREFBb0IsdUJBQW1DLHlCQUxoQztBQU12QiwyQ0FBVSxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBM0IscUZBQVUsdUJBQW1DLHlCQUE3QywyREFBVSx1QkFBOEQ7QUFOakQsS0FBbkI7QUFRSixRQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQThCLEVBQWxDLEVBQ0ksTUFBTSxDQUFDLE1BQVAsQ0FBYyxJQUFkLENBQW1CO0FBQUMsWUFBSyxRQUFOO0FBQ3ZCLG1CQUFZLE1BQU0sQ0FBQyxVQURJO0FBRXZCLG1CQUFZLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLENBQThCLEVBRm5CO0FBR3ZCLGtCQUFXLGNBSFk7QUFJdkIsdURBQXNCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQXZDLDJEQUFzQix1QkFBK0IsbUJBSjlCO0FBS3ZCLHFEQUFvQixNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFyQywyREFBb0IsdUJBQStCLHlCQUw1QjtBQU12QiwyQ0FBVSxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUEzQixzRkFBVSx1QkFBK0IseUJBQXpDLDREQUFVLHdCQUEwRDtBQU43QyxLQUFuQjtBQVFKLFFBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIsRUFBOUIsRUFDSSxNQUFNLENBQUMsTUFBUCxDQUFjLElBQWQsQ0FBbUI7QUFBQyxZQUFLLFFBQU47QUFDQyxtQkFBWSxNQUFNLENBQUMsVUFEcEI7QUFFQyxtQkFBWSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUFqQixDQUEwQixFQUZ2QztBQUdDLGtCQUFXLFdBSFo7QUFJQyx1REFBc0IsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBdkMsMkRBQXNCLHVCQUEyQixtQkFKbEQ7QUFLQyxxREFBb0IsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBckMsMkRBQW9CLHVCQUEyQix5QkFMaEQ7QUFNQywyQ0FBVSxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUEzQixxRkFBVSx1QkFBMkIseUJBQXJDLDJEQUFVLHVCQUFzRDtBQU5qRSxLQUFuQixFQTdCUixDQW9DSTs7QUFDQSxRQUFJLFFBQVEsR0FBRztBQUFDLE1BQUEsS0FBSyxFQUFDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEdBQXZCO0FBQTRCLE1BQUEsT0FBTyxFQUFDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQXBEO0FBQWdFLE1BQUEsSUFBSSxFQUFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQXRGO0FBQXNHLE1BQUEsTUFBTSxFQUFDLE1BQU0sQ0FBQztBQUFwSCxLQUFmOztBQUNBLFFBQUksV0FBSixFQUFnQjtBQUNaLFVBQUksTUFBTSxDQUFDLE1BQVAsQ0FBYyxNQUFsQixFQUF5QjtBQUNyQixRQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQW1CLElBQW5CO0FBQ0EsUUFBQSxvQkFBb0IsQ0FBQyxnQkFBckIsQ0FBc0MsUUFBdEMsRUFBZ0QsSUFBaEQsQ0FDWCxVQUFTLElBQVQsRUFBZTtBQUNkLFVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBbUIsS0FBbkI7QUFDQSxVQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsR0FBdEMsRUFBMEMsU0FBMUM7QUFDQSxVQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsbUJBQWIsQ0FBaUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsR0FBakQsSUFBd0QsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUFsRTtBQUNBLFVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBZ0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUExQjtBQUNBLFNBTlUsRUFNVCxVQUFTLEtBQVQsRUFBZTtBQUNoQixVQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQW1CLEtBQW5CO0FBQ0EsVUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDVyxTQVREO0FBVUgsT0FaRCxNQVlRO0FBQ0osUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0Qix5REFBNUIsRUFBc0YsT0FBdEY7QUFDQSxRQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQW1CLEtBQW5CO0FBQ0g7QUFDSixLQWpCRCxNQWlCTyxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QiwrQkFBNUIsRUFBNEQsT0FBNUQ7QUFFUixHQTFESDs7QUE0REEsRUFBQSxNQUFNLENBQUMscUJBQVAsR0FBK0IsVUFBUyxRQUFULEVBQWtCLFdBQWxCLEVBQThCO0FBRXpELElBQUEsb0JBQW9CLENBQUMsNkJBQXJCLENBQW1ELFFBQVEsQ0FBQyxFQUE1RCxFQUErRCxXQUEvRCxFQUE0RSxJQUE1RSxDQUNZLFVBQVUsSUFBVixFQUFnQjtBQUNaLFVBQUksTUFBTSxDQUFDLDhCQUFQLElBQXVDLFNBQTNDLEVBQXNELE1BQU0sQ0FBQyw4QkFBUCxHQUFzQyxFQUF0QztBQUN0RCxVQUFJLE1BQU0sQ0FBQyw4QkFBUCxJQUF1QyxTQUEzQyxFQUFzRCxNQUFNLENBQUMsOEJBQVAsR0FBc0MsRUFBdEM7QUFDdEQsTUFBQSxNQUFNLENBQUMsOEJBQVAsQ0FBc0MsUUFBUSxDQUFDLEVBQS9DLElBQXFELElBQUksQ0FBQyxJQUExRCxDQUhZLENBS1o7O0FBQ0EsVUFBSSxRQUFRLENBQUMsbUJBQWIsRUFBaUM7QUFDM0IsWUFBSSxhQUFhLEdBQUcsTUFBTSxDQUFDLDhCQUFQLENBQXNDLFFBQVEsQ0FBQyxFQUEvQyxDQUFwQjtBQUNBLFFBQUEsYUFBYSxDQUFDLE9BQWQsQ0FBdUIsVUFBQyxJQUFELEVBQVM7QUFDNUIsY0FBSSxJQUFJLENBQUMsT0FBTCxLQUFnQixRQUFoQixhQUFnQixRQUFoQix1QkFBZ0IsUUFBUSxDQUFFLE9BQTFCLENBQUosRUFDeEIsUUFBUSxDQUFDLHlCQUFULEdBQXFDLElBQXJDO0FBQ0EsVUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBakIsQ0FBa0MseUJBQWxDLEdBQThELElBQTlELENBSG9ELENBR2U7QUFDOUMsU0FKRDtBQUtMO0FBQ0osS0FmYixFQWVjLFVBQVMsS0FBVCxFQUFlO0FBQ2IsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDWCxLQWpCTDtBQWtCTixHQXBCRTs7QUFzQkksRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixDQUFDO0FBQUMsSUFBQSxFQUFFLEVBQUMsQ0FBSjtBQUFNLElBQUEsSUFBSSxFQUFDLGFBQVg7QUFBeUIsSUFBQSxLQUFLLEVBQUM7QUFBL0IsR0FBRCxFQUEwQztBQUFDLElBQUEsRUFBRSxFQUFDLENBQUo7QUFBTSxJQUFBLElBQUksRUFBQyxXQUFYO0FBQXVCLElBQUEsS0FBSyxFQUFDO0FBQTdCLEdBQTFDLENBQXRCO0FBSUE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUdTLEVBQUEsb0JBQW9CLENBQUMsd0JBQXJCLENBQThDLElBQTlDLEVBQW1ELFVBQW5ELEVBQStELElBQS9ELENBQ0gsVUFBUyxJQUFULEVBQWU7QUFDTyxJQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFlBQWpCLEdBQWdDLENBQUM7QUFBQyxNQUFBLEVBQUUsRUFBQyxDQUFKO0FBQU8sTUFBQSxJQUFJLEVBQUU7QUFBYixLQUFELEVBQW1DLE1BQW5DLENBQTBDLElBQUksQ0FBQyxJQUEvQyxDQUFoQztBQUVwQixHQUpDLEVBSUEsVUFBUyxLQUFULEVBQWU7QUFDUSxJQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUM1QixHQU5LO0FBUUEsRUFBQSxvQkFBb0IsQ0FBQyxpQkFBckIsR0FBeUMsSUFBekMsQ0FBOEMsVUFBVSxJQUFWLEVBQWdCO0FBQzFEO0FBQ21CLElBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQTBCLElBQUksQ0FBQyxJQUEvQjtBQUNBLElBQUEsTUFBTSxDQUFDLG1CQUFQLEdBQTZCLElBQTdCO0FBQ3ZCLEdBSkE7O0FBTUQsTUFBSSxVQUFVLEdBQUcsU0FBYixVQUFhLENBQVMsSUFBVCxFQUFlO0FBQ2IsSUFBQSxtQkFBbUIsQ0FBQyxPQUFwQixDQUE0QixlQUE1QixHQUE4QyxJQUE5QztBQUNBLElBQUEsbUJBQW1CLENBQUMsT0FBcEIsQ0FBNEIsZUFBNUIsQ0FBNEMsV0FBNUM7QUFFbkIsR0FKQTs7QUFPQSxNQUFJLG1CQUFKLEVBQXdCLHVCQUF4QjtBQUNBLEVBQUEsbUJBQW1CLEdBQUUsTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXNCLHdCQUFzQixNQUFNLENBQUMsVUFBN0IsR0FBd0MsR0FBOUQsRUFBa0UsSUFBbEUsQ0FBckI7QUFDQSxFQUFBLHVCQUF1QixHQUFHLG1CQUFtQixDQUFDLE9BQXBCLENBQTRCLElBQXREO0FBRUMsTUFBSSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsdUJBQXJCLEVBQTZDLFdBQTdDLEVBQXlELFVBQXpELENBQTNCOztBQUlELEVBQUEsTUFBTSxDQUFDLG1CQUFQLEdBQTZCLFlBQzdCO0FBQ0ksSUFBQSxvQkFBb0IsQ0FBQyxtQkFBckIsQ0FBeUMsTUFBTSxDQUFDLFVBQWhELEVBQTJELE1BQU0sQ0FBQyxRQUFQLENBQWdCLFlBQTNFLEVBQXdGLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE9BQXhHLEVBQWlILElBQWpILENBQXNILFVBQVMsSUFBVCxFQUFlO0FBRWpJLE1BQUEsTUFBTSxDQUFDLGlCQUFQLEdBQTJCLElBQUksQ0FBQyxJQUFoQztBQUVILEtBSkQsRUFJRSxVQUFTLEtBQVQsRUFBZTtBQUViLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0gsS0FQRDtBQVFILEdBVkQ7O0FBWUEsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixZQUN0QjtBQUFBOztBQUNJLElBQUEsTUFBTSxDQUFDLGlCQUFQLEdBQXlCLElBQXpCO0FBQ0EsUUFBSSxTQUFTLEdBQUcsQ0FBQztBQUFDLE1BQUEsR0FBRyxFQUFDLE1BQU0sQ0FBQyxVQUFaO0FBQXVCLE1BQUEsV0FBVyxFQUFDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFlBQW5EO0FBQWdFLE1BQUEsT0FBTyw0QkFBRSxNQUFNLENBQUMsS0FBUCxDQUFhLG1CQUFiLENBQWlDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEdBQWpELENBQUYsMkRBQUUsdUJBQXVEO0FBQWhJLEtBQUQsQ0FBaEI7QUFDQSxRQUFJLE1BQU0sQ0FBQyxpQkFBUCxJQUEwQixTQUE5QixFQUF5QyxNQUFNLENBQUMsaUJBQVAsR0FBeUIsRUFBekI7QUFDekMsSUFBQSxvQkFBb0IsQ0FBQyxZQUFyQixDQUFrQyxTQUFsQyxFQUE2QyxJQUE3QyxDQUFrRCxVQUFTLElBQVQsRUFBZTtBQUFBOztBQUU3RCxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsR0FBdEMsRUFBMEMsU0FBMUM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixTQUF6QixHQUFxQyxJQUFJLENBQUMsSUFBTCxDQUFVLFNBQS9DO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsUUFBekIsR0FBb0MsSUFBSSxDQUFDLElBQUwsQ0FBVSxRQUE5QztBQUNBLE1BQUEsTUFBTSxDQUFDLGlCQUFQLENBQXlCLE9BQXpCLEdBQW1DLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBN0M7QUFDQSxNQUFBLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixnQkFBekIsR0FBNkMsSUFBN0MsYUFBNkMsSUFBN0MsdUNBQTZDLElBQUksQ0FBRSxJQUFuRCxpREFBNkMsYUFBWSxnQkFBekQ7QUFDQSxNQUFBLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixRQUF6QixHQUFvQyxJQUFJLENBQUMsSUFBTCxDQUFVLFFBQTlDO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsV0FBekIsR0FBdUMsSUFBSSxDQUFDLElBQUwsQ0FBVSxXQUFqRDtBQUNBLE1BQUEsTUFBTSxDQUFDLGlCQUFQLENBQXlCLGVBQXpCLEdBQTJDLElBQUksQ0FBQyxJQUFMLENBQVUsZUFBckQ7QUFDQSxNQUFBLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixTQUF6QixHQUFxQyxJQUFJLENBQUMsSUFBTCxDQUFVLFNBQS9DO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsS0FBekIsR0FBaUMsQ0FBakM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixHQUF6QixHQUErQixJQUFJLENBQUMsSUFBTCxDQUFVLEdBQXpDO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsR0FBeUIsS0FBekI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsbUJBQWIsQ0FBaUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsR0FBakQsSUFBd0QsSUFBSSxDQUFDLElBQTdEO0FBRUgsS0FoQkQsRUFnQkUsVUFBUyxLQUFULEVBQWU7QUFDYixNQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUF5QixLQUF6QjtBQUNBLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0gsS0FuQkQ7QUFvQkgsR0F6QkQ7O0FBNEJELEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsWUFBWTtBQUFDO0FBR3JDLElBQUEsTUFBTSxDQUFDLGNBQVAsR0FBc0IsSUFBdEIsQ0FIb0MsQ0FJbEM7O0FBQ0E7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSU8sR0FoQ0E7O0FBa0NBLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsWUFBWTtBQUUxQixJQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQW9CLElBQXBCO0FBQ0EsSUFBQSxvQkFBb0IsQ0FBQyxnQkFBckIsQ0FBc0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsT0FBakIsQ0FBeUIsTUFBL0QsRUFBc0UsTUFBTSxDQUFDLFVBQTdFLEVBQXdGLEdBQXhGLEVBQTZGLElBQTdGLENBQWtHLFVBQVMsSUFBVCxFQUFlO0FBRXhGLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLEdBQWpDLEVBQXFDLElBQUksQ0FBQyxPQUExQztBQUNBLE1BQUEsTUFBTSxDQUFDLFdBQVAsR0FBcUIsSUFBSSxDQUFDLE9BQTFCOztBQUVBLFVBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxRQUFWLENBQW1CLE1BQW5CLEdBQTBCLENBQTlCLEVBQWlDO0FBQzdCLFFBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsT0FBakIsR0FBeUI7QUFBQyxVQUFBLE1BQU0sRUFBQyxJQUFJLENBQUMsSUFBTCxDQUFVO0FBQWxCLFNBQXpCO0FBQ0g7O0FBRUQsTUFBQSxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIsdUJBQXpCLEVBQWlELFdBQWpELEVBQTZELElBQUksQ0FBQyxTQUFsRTtBQUNBLE1BQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0IsS0FBcEI7QUFFSixLQVpyQixFQVlzQixVQUFTLEtBQVQsRUFBZTtBQUViLE1BQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0IsS0FBcEI7QUFDQSxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUVGLEtBakJ0QjtBQW9CQSxHQXZCUjs7QUF3QkMsRUFBQSxNQUFNLENBQUMsVUFBUCxHQUFvQixZQUFVO0FBR3RCLElBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsV0FBaEIsR0FBNEIsa0JBQTVCO0FBQ0EsSUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixHQUEyQixPQUEzQjtBQUNBLElBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsV0FBaEIsR0FBNEIsUUFBNUI7O0FBRUEsUUFBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixnQkFBaEIsQ0FBaUMsUUFBakMsSUFBNEMsU0FBaEQsRUFDQTtBQUNRLFVBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsZ0JBQWhCLENBQWlDLFFBQWpDLENBQTBDLEtBQTFDLElBQWlELE1BQXJELEVBQ0E7QUFDUSxRQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGdCQUFoQixDQUFpQyxNQUFqQyxHQUEwQyxrQkFBMUM7QUFDQSxZQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLENBQTJCLFVBQS9CLEVBQTJDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGdCQUFoQixDQUFpQyxNQUFqQyxHQUEwQyx5QkFBMUM7QUFDM0MsUUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixjQUFoQixHQUFpQyxJQUFqQztBQUNQLE9BTEQsTUFNQTtBQUNRO0FBQ0EsUUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixjQUFoQixHQUFpQyxLQUFqQztBQUVQO0FBQ1IsS0FiRCxNQWNBO0FBQ1EsVUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsR0FBcEIsQ0FBd0IsVUFBUyxDQUFULEVBQVk7QUFBRSxlQUFPLENBQUMsQ0FBQyxLQUFUO0FBQWlCLE9BQXZELEVBQXlELE9BQXpELENBQWlFLE1BQWpFLENBQVY7O0FBQ0EsVUFBSSxHQUFHLElBQUUsQ0FBVCxFQUFZO0FBQ0osUUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixnQkFBaEIsQ0FBaUMsUUFBakMsR0FBNEMsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsR0FBcEIsQ0FBNUM7QUFDQSxRQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGdCQUFoQixDQUFpQyxNQUFqQyxHQUEwQyxrQkFBMUM7QUFDQSxZQUFJLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLENBQTJCLFVBQS9CLEVBQTJDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGdCQUFoQixDQUFpQyxNQUFqQyxHQUEwQyx5QkFBMUM7QUFDM0MsUUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixjQUFoQixHQUFpQyxJQUFqQztBQUNQOztBQUNELE1BQUEsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsTUFBTSxDQUFDLFFBQTFCLEVBQW1DLE1BQW5DO0FBQ1A7QUFJUixHQWxDRDs7QUFvQ0MsRUFBQSxNQUFNLENBQUMscUJBQVAsR0FBK0IsWUFBWTtBQUVwQyxJQUFBLG9CQUFvQixDQUFDLGlCQUFyQixDQUF1QyxNQUFNLENBQUMsVUFBOUMsRUFBMEQsSUFBMUQsQ0FBK0QsVUFBUyxJQUFULEVBQWU7QUFBQTs7QUFFdEUsTUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixJQUFJLENBQUMsSUFBdkI7QUFFQSxNQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLHFCQUFoQixHQUF3QyxJQUF4QztBQUNBLE1BQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsZ0JBQWhCLEdBQW1DLGtCQUFuQztBQUNBLFVBQUksMkJBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsa0ZBQTRCLFdBQTVCLEtBQXlDLFNBQTdDLEVBQXdELE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLENBQTJCLFdBQTNCLEdBQXVDLEVBQXZDO0FBRXhELFVBQUksMkJBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsa0ZBQTRCLFlBQTVCLEtBQTBDLFNBQTlDLEVBQXlELE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLENBQTJCLFlBQTNCLEdBQXdDLEVBQXhDO0FBRXpELE1BQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxzQkFBYixDQUFvQyxNQUFNLENBQUMsUUFBUCxDQUFnQixHQUFwRCxFQUF3RDtBQUFDLFFBQUEsT0FBTyxFQUFDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLE9BQXpCO0FBQWlDLFFBQUEsU0FBUyxFQUFDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFNBQTNEO0FBQXFFLFFBQUEsVUFBVSxFQUFDLE1BQU0sQ0FBQyxRQUFQLENBQWdCO0FBQWhHLE9BQXhEO0FBQ0EsTUFBQSxNQUFNLENBQUMsbUJBQVA7QUFDQSxNQUFBLG9CQUFvQixDQUFDLGdCQUFyQixDQUFzQyxNQUFNLENBQUMsUUFBUCxDQUFnQixZQUF0RCxFQUFvRSxJQUFwRSxDQUF5RSxVQUFVLElBQVYsRUFBZ0I7QUFDN0UsUUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLHFCQUFiLENBQW1DLElBQUksQ0FBQyxJQUF4QyxFQUE2QyxNQUFNLENBQUMsWUFBcEQ7QUFDQSxRQUFBLE1BQU0sQ0FBQyxlQUFQO0FBQ1AsT0FITCxFQUdNLFVBQVMsS0FBVCxFQUFlO0FBRVIsUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDUixPQU5MO0FBT0EsTUFBQSxNQUFNLENBQUMsVUFBUDtBQUdQLEtBdEJELEVBc0JFLFVBQVMsS0FBVCxFQUFlO0FBRUgsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDYixLQXpCRDtBQTBCUCxHQTVCQTtBQStCRDtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDUSxFQUFBLE1BQU0sQ0FBQyxxQkFBUDs7QUFFQyxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLFVBQVUsT0FBVixFQUFtQjtBQUUzQyxRQUFJLE9BQUosRUFDQTtBQUNFLE1BQUEsb0JBQW9CLENBQUMscUJBQXJCLENBQTJDLE1BQU0sQ0FBQyxRQUFsRCxFQUE0RCxJQUE1RCxDQUFpRSxVQUFTLElBQVQsRUFBZTtBQUU3RCxZQUFJLElBQUksQ0FBQyxNQUFMLEtBQWMsR0FBZCxJQUFzQixJQUFJLENBQUMsTUFBTCxLQUFjLEdBQXhDLEVBQ0M7QUFDQSxVQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLHdCQUE1QixFQUFxRCxTQUFyRDtBQUNDO0FBQ0EsT0FOckIsRUFNc0IsVUFBUyxLQUFULEVBQWU7QUFFbkIsUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFFRCxPQVZqQjtBQVlELEtBZEQsTUFlQTtBQUVFLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsNEJBQTVCLEVBQXlELFNBQXpEO0FBQ0Q7QUFDRixHQXJCQTs7QUF1QkQsRUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsVUFBUyxLQUFULEVBQzVCO0FBQ1UsSUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLHdCQUFiLENBQXNDLEtBQXRDO0FBQ0EsSUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBMkIsTUFBTSxDQUFDLEtBQVAsQ0FBYSx3QkFBYixFQUEzQjtBQUVULEdBTEQ7O0FBT0EsRUFBQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsS0FBMUI7QUFFQSxFQUFBLE1BQU0sQ0FBQyxNQUFQLENBQWMsNEJBQWQsRUFBMkMsVUFBUyxRQUFULEVBQWtCLFFBQWxCLEVBQTJCO0FBRTFELFFBQUksUUFBUSxJQUFFLFFBQWQsRUFDQTtBQUNDLE1BQUEsTUFBTSxDQUFDLGFBQVAsR0FBcUIsTUFBTSxDQUFDLEtBQVAsQ0FBYSxrQkFBYixFQUFyQjtBQUNBLE1BQUEsTUFBTSxDQUFDLG1CQUFQLEdBQTZCLE1BQU0sQ0FBQyxLQUFQLENBQWEsd0JBQWIsRUFBN0I7QUFDQTtBQUNaLEdBUEQ7O0FBUUEsRUFBQSxNQUFNLENBQUMsb0JBQVAsR0FBOEIsWUFDOUI7QUFDUSxRQUFJLElBQUksR0FBRywyQkFBWCxDQURSLENBRVE7O0FBQ0EsSUFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsRUFBZSxFQUFmO0FBRVAsR0FORDs7QUFTQSxFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLFVBQVMsS0FBVCxFQUFlLFNBQWYsRUFBeUI7QUFDdEM7QUFDQSxRQUFJLEtBQUosRUFDQTtBQUNRLE1BQUEsb0JBQW9CLENBQUMsV0FBckIsQ0FBaUMsTUFBTSxDQUFDLFFBQXhDLEVBQWlELElBQWpELEVBQXNELFNBQXRELEVBQWlFLElBQWpFLENBQXNFLFVBQVMsSUFBVCxFQUFlO0FBRTdFLFFBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQWpDLEVBQXNDLFNBQXRDO0FBRVAsT0FKRCxFQUlFLFVBQVMsS0FBVCxFQUFlO0FBRVQsUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFFUCxPQVJEO0FBU1A7QUFDUixHQWREOztBQWlCQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLFlBQVk7QUFBQTs7QUFFOUIsUUFBSSxRQUFRLEdBQUMsSUFBYjtBQUNBLFFBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsZ0JBQWhCLENBQWlDLE1BQWpDLENBQXdDLENBQXhDLEtBQThDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGdCQUFoQixDQUFpQyxNQUFqQyxDQUF3QyxDQUF4QyxFQUEyQyxFQUE3RixFQUFtRyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsZ0JBQWhCLENBQWlDLE1BQWpDLENBQXdDLENBQXhDLEVBQTJDLEVBQXREO0FBRW5HLElBQUEsTUFBTSxDQUFDLE1BQVAsR0FBYyxDQUFDO0FBQUMsWUFBSyxRQUFOO0FBQ3JCLG1CQUFZLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEdBRFA7QUFFckIsbUJBQVksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZ0JBQWpCLENBQWtDLEVBRnpCO0FBR3JCLGtCQUFXLFdBSFU7QUFJckIsd0RBQXNCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUF2Qyw0REFBc0Isd0JBQW1DO0FBSnBDLEtBQUQsQ0FBZDs7QUFPVCxtQ0FBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBckIsb0RBQUksd0JBQW1DLG1CQUF2QyxFQUE0RDtBQUFBOztBQUMxRCxNQUFBLE1BQU0sQ0FBQyxNQUFQLENBQWMsQ0FBZCxFQUFpQixpQkFBakIsOEJBQXFDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUF0RCw0REFBcUMsd0JBQW1DLHlCQUF4RTtBQUNBLE1BQUEsTUFBTSxDQUFDLE1BQVAsQ0FBYyxDQUFkLEVBQWlCLE9BQWpCLDhCQUEyQixNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBNUMsdUZBQTJCLHdCQUFtQyx5QkFBOUQsNERBQTJCLHdCQUE4RCxPQUF6RjtBQUNEOztBQUlPLElBQUEsb0JBQW9CLENBQUMsaUJBQXJCLENBQXVDLE1BQU0sQ0FBQyxNQUE5QyxFQUFzRCxJQUF0RCxDQUEyRCxVQUFTLElBQVQsRUFBZTtBQUNsRCxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsR0FBdEMsRUFBMEMsU0FBMUM7QUFDRSxLQUYxQixFQUUyQixVQUFTLEtBQVQsRUFBZTtBQUNmLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLElBQU4sQ0FBVyxHQUF2QyxFQUEyQyxPQUEzQztBQUNKLEtBSnZCO0FBTUosR0F6QkM7O0FBNkJKLEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0IsWUFDcEI7QUFDSSxJQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUEwQixJQUExQjtBQUVBLElBQUEsb0JBQW9CLENBQUMscUJBQXJCLENBQTJDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEVBQTNELEVBQ1MsSUFEVCxDQUNjLFVBQVMsSUFBVCxFQUFlO0FBQ2pCLFVBQUksSUFBSSxDQUFDLE1BQUwsSUFBYSxHQUFqQixFQUNBO0FBQ0EsUUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixHQUE2QixJQUFJLENBQUMsSUFBbEM7QUFDQSxRQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFNBQWhCLEdBQTBCLEtBQTFCO0FBQ0MsT0FKRCxNQUlNLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFqQyxFQUFzQyxPQUF0Qzs7QUFDTixNQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUEwQixLQUExQjtBQUNBLE1BQUEsTUFBTSxDQUFDLFVBQVAsR0FBa0IsS0FBbEI7QUFFQSxLQVZaLEVBVWEsVUFBUyxLQUFULEVBQWU7QUFDRixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNBLE1BQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTBCLEtBQTFCO0FBRUosS0FkdEI7QUFnQkgsR0FwQkQ7O0FBc0JJLEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBbUIsVUFBVSxNQUFWLEVBQWtCO0FBQ2pDLElBQUEsQ0FBQyxDQUFDLGNBQUQsQ0FBRCxDQUFrQixLQUFsQixDQUF3QixNQUF4QjtBQUNBLElBQUEsTUFBTSxDQUFDLFdBQVAsR0FBbUIsTUFBbkI7QUFDQSxJQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUEyQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBckQ7QUFFSCxHQUxEOztBQU9GLEVBQUEsTUFBTSxDQUFDLG9CQUFQLEdBQThCLEVBQTlCOztBQUVBLEVBQUEsTUFBTSxDQUFDLFdBQVAsR0FBcUIsVUFBUyxXQUFULEVBQ3JCO0FBQ0UsSUFBQSxNQUFNLENBQUMsUUFBUCxHQUFnQixFQUFoQjs7QUFDQSxTQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsSUFBM0IsQ0FBZ0MsUUFBL0MsRUFBd0QsQ0FBQyxFQUF6RCxFQUE2RDtBQUM1RDtBQUNDLE1BQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsTUFBTSxDQUFDLFFBQVAsR0FBaUIsZUFBbkMsQ0FGMkQsQ0FFUDtBQUNyRDs7QUFFRCxRQUFJLFdBQUosRUFBaUIsTUFBTSxDQUFDLFdBQVA7QUFDbEIsR0FURDs7QUFhQSxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLFVBQVMsV0FBVCxFQUN4QjtBQUNFLElBQUEsTUFBTSxDQUFDLFdBQVAsR0FBbUIsRUFBbkI7O0FBQ0EsU0FBSyxJQUFJLENBQUMsR0FBQyxDQUFYLEVBQWEsQ0FBQyxHQUFDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLENBQTJCLElBQTNCLENBQWdDLFdBQS9DLEVBQTJELENBQUMsRUFBNUQsRUFDQTtBQUNFO0FBQ0EsTUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQixNQUFNLENBQUMsV0FBUCxHQUFtQixlQUF4QyxDQUZGLENBRTBEO0FBQ3pELEtBTkgsQ0FPRTs7O0FBQ0MsUUFBSSxXQUFKLEVBQWlCLE1BQU0sQ0FBQyxXQUFQO0FBQ25CLEdBVkQ7O0FBYUMsRUFBQSxNQUFNLENBQUMsU0FBUCxHQUFtQixVQUFTLFVBQVQsRUFDbkI7QUFDRTs7QUFDRDtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNTLFFBQUksVUFBVSxJQUFJLEtBQWxCLEVBQ08sTUFBTSxDQUFDLFVBQVA7QUFDUixHQVpEOztBQWVDLEVBQUEsTUFBTSxDQUFDLFdBQVAsR0FBcUIsWUFDckI7QUFDSTtBQUNBLFFBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsYUFBM0IsSUFBMEMsU0FBOUMsRUFBeUQsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsYUFBM0IsR0FBeUMsRUFBekM7QUFDekQsSUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixDQUEyQixhQUEzQixDQUF5QyxNQUF6QyxHQUFnRCxDQUFoRDtBQUNBLFFBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLENBQTJCLElBQTNCLENBQWdDLFFBQWhDLEdBQXlDLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLENBQTJCLElBQTNCLENBQWdDLFdBQTFGOztBQUNBLFFBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsYUFBM0IsQ0FBeUMsTUFBekMsR0FBaUQsVUFBckQsRUFBaUU7QUFDOUQsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixrQkFBNUIsRUFBK0MsT0FBL0M7QUFDRixLQUZELE1BR007QUFDRixXQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsVUFBZixFQUEwQixDQUFDLEVBQTNCLEVBQStCO0FBQzVCO0FBQ0U7QUFDSDtBQUNLLFFBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsYUFBM0IsQ0FBeUMsSUFBekMsQ0FBOEM7QUFBQyxVQUFBLEVBQUUsRUFBQyxDQUFDLEdBQUMsQ0FBTjtBQUFRLFVBQUEsTUFBTSxFQUFDO0FBQWYsU0FBOUMsRUFKd0IsQ0FLM0I7QUFFSDtBQUNKO0FBQ0osR0FuQkQ7O0FBcUJBLEVBQUEsTUFBTSxDQUFDLHFCQUFQLEdBQStCLFVBQVMsTUFBVCxFQUFnQixLQUFoQixFQUMvQjtBQUNBLElBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsQ0FBMkIsYUFBM0IsQ0FBeUMsS0FBekMsRUFBZ0QsTUFBaEQsR0FBdUQsTUFBdkQ7QUFDQyxHQUhEOztBQU1ELEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsVUFBUyxJQUFULEVBQWMsS0FBZCxFQUFvQjtBQUV4QyxRQUFJLElBQUksQ0FBQyxLQUFMLElBQVksTUFBaEIsRUFBeUI7QUFDdkIsTUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixnQkFBaEIsQ0FBaUMsTUFBakMsR0FBMEMsa0JBQTFDO0FBQ0EsTUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixjQUFoQixHQUFpQyxJQUFqQztBQUNELEtBSEQsTUFHTTtBQUNKO0FBQ0EsTUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixjQUFoQixHQUFpQyxLQUFqQztBQUNEO0FBQ04sR0FUQTs7QUFZRixFQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQixZQUFVO0FBQ2hDO0FBRUEsSUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsR0FBc0MsSUFBdEMsQ0FIZ0MsQ0FNcEM7QUFFSDs7QUFDTyxJQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixHQUFvQyxNQUFNLENBQUMsU0FBUCxDQUFpQixZQUFqQixDQUE4QixNQUE5QixDQUFzQyxVQUFBLElBQUk7QUFBQSxhQUFJLElBQUksQ0FBQyxFQUFMLElBQVcsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsZ0JBQWhCLENBQWlDLE1BQWpDLENBQXdDLENBQXhDLEVBQTJDLFNBQTFEO0FBQUEsS0FBMUMsRUFBZ0gsQ0FBaEgsQ0FBcEM7QUFDTixJQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixDQUFrQyxtQkFBbEMsR0FBd0QsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsZ0JBQWhCLENBQWlDLE1BQWpDLENBQXdDLENBQXhDLEVBQTJDLGlCQUEzQyxHQUErRCxJQUEvRCxHQUFzRSxLQUE5SDs7QUFFQSxRQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGdCQUFqQixDQUFrQyxFQUF0QyxFQUEwQztBQUN6QyxNQUFBLE1BQU0sQ0FBQyxxQkFBUCxDQUE2QixNQUFNLENBQUMsU0FBUCxDQUFpQixnQkFBOUMsRUFBK0QsS0FBL0Q7QUFDQSxLQWRxQyxDQWV0Qzs7QUFDRyxHQWhCRDtBQXFCQTs7QUFLRSxTQUFTLGFBQVQsQ0FBd0IsTUFBeEIsRUFBZ0MsVUFBaEMsRUFBNEMsZUFBNUMsRUFBNEQsb0JBQTVELEVBQWlGLFdBQWpGLEVBQTZGLGVBQTdGLEVBQTZHLGlCQUE3RyxFQUErSCxnQkFBL0gsRUFBZ0osUUFBaEosRUFBeUosWUFBekosRUFBc0ssUUFBdEssRUFBZ0w7QUFFL0ssRUFBQSxNQUFNLENBQUMsSUFBUCxHQUFZLGVBQVo7QUFDQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXFCLE1BQXJCO0FBRUEsRUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixZQUFZLENBQUMsRUFBL0I7QUFDQSxNQUFJLElBQUksR0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QztBQUNBLEVBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsT0FBakIsR0FBMkIsZUFBZSxDQUFDLGdCQUFoQixFQUEzQjtBQUNBLEVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBc0IsSUFBdEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxLQUFQLEdBQWEsZUFBYjtBQUNBLEVBQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxnQkFBYjs7QUFJQSxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLFlBQVk7QUFBQztBQUNoQztBQUNBLElBQUEsb0JBQW9CLENBQUMsZUFBckIsQ0FBcUMsTUFBTSxDQUFDLFVBQTVDLEVBQXVELEdBQXZELEVBQTJELElBQTNELEVBQWlFLElBQWpFLENBQXNFLFVBQVMsSUFBVCxFQUFlO0FBQzVFLFVBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUFWLENBQWtCLE1BQWxCLEdBQXlCLENBQTdCLEVBQWdDO0FBQzNCLFFBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsT0FBakIsR0FBeUIsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUFuQztBQUNKOztBQUNELE1BQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTJCLElBQUksQ0FBQyxJQUFMLENBQVUsa0JBQXJDLENBSjRFLENBTzVFO0FBQ0E7QUFDQTs7QUFFRSxNQUFBLFFBQVEsQ0FBQyxZQUFVO0FBQ2IsWUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLFFBQVQsR0FBb0IsRUFBcEIsQ0FBdUIsQ0FBdkIsRUFBMEIsUUFBMUIsR0FBcUMsRUFBckMsQ0FBd0MsQ0FBeEMsRUFBMkMsUUFBM0MsR0FBc0QsRUFBdEQsQ0FBeUQsQ0FBekQsQ0FBaEI7QUFBQSxZQUE2RSxPQUFPLEdBQUcsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsT0FBeEc7QUFDQSxRQUFBLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBRCxDQUFWLEVBQ2I7QUFDQSxVQUFBLFNBQVMsRUFBRSxZQURYO0FBRUEsVUFBQSxPQUFPLEVBQUUsRUFGVDtBQUdBLFVBQUEsYUFBYSxFQUFFLElBSGY7QUFJQSxVQUFBLGVBQWUsRUFBRSxPQUpqQjtBQUtFLFVBQUEsS0FBSyxFQUFFLGVBQVUsRUFBVixFQUFjLFNBQWQsRUFBeUIsTUFBekIsRUFBaUM7QUFDdEMsbUJBQU8sTUFBTSxDQUFDLFNBQVAsQ0FBaUIsUUFBakIsQ0FBMEIsU0FBTyxNQUFNLENBQUMsWUFBZCxHQUEyQixTQUFyRCxDQUFQO0FBQ0Q7QUFQSCxTQURhLENBQWY7QUFXRixPQWJJLENBQVI7QUFlQyxNQUFBLFFBQVEsQ0FBQyxZQUFXO0FBQUMsUUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixJQUFsQjtBQUF3QixPQUFyQyxFQUFzQyxJQUF0QyxDQUFSO0FBRUYsS0E1QlYsRUE0QlcsVUFBUyxLQUFULEVBQWU7QUFDZixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNKLEtBOUJQO0FBK0JQLEdBakNDOztBQW1DRixNQUFJLE1BQU0sQ0FBQyxVQUFQLElBQXFCLFNBQXpCLEVBQW9DO0FBQ2xDLElBQUEsTUFBTSxDQUFDLGVBQVA7QUFDRCxHQW5EZ0wsQ0FzRGpMO0FBQ0E7QUFDQTs7O0FBQ0YsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixVQUFVLE9BQVYsRUFBbUI7QUFDeEM7QUFDQztBQUVHLElBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsZUFBaEIsR0FBa0MsaUJBQWlCLENBQUMsY0FBbEIsQ0FBaUMseUJBQXVCLE1BQU0sQ0FBQyxVQUEvRCxDQUFsQztBQUVBLElBQUEsb0JBQW9CLENBQUMsZ0JBQXJCLENBQXNDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQXZELEVBQStELE1BQU0sQ0FBQyxVQUF0RSxFQUFpRixHQUFqRixFQUFzRixJQUF0RixDQUEyRixVQUFTLElBQVQsRUFBZTtBQUloRixNQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLEdBQTJCLElBQUksQ0FBQyxJQUFoQztBQUNBLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLEdBQWpDLEVBQXFDLFNBQXJDO0FBRUQsS0FQekIsRUFPMEIsVUFBUyxLQUFULEVBQWU7QUFDaEIsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFFSixLQVZyQjtBQVdBLElBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsZUFBaEIsR0FBa0MsaUJBQWlCLENBQUMsY0FBbEIsQ0FBaUMsRUFBakMsQ0FBbEMsQ0FqQm9DLENBa0J2QztBQUNHLEdBbkJMO0FBc0JDOztBQUVFLFNBQVMsbUJBQVQsQ0FBOEIsTUFBOUIsRUFBc0MsVUFBdEMsRUFBaUQsTUFBakQsRUFBeUQsZUFBekQsRUFBeUUsb0JBQXpFLEVBQThGLFdBQTlGLEVBQTBHLFlBQTFHLEVBQXVILGVBQXZILEVBQXVJLGlCQUF2SSxFQUF5SixnQkFBekosRUFBMEssUUFBMUssRUFBbUwsWUFBbkwsRUFBZ00sUUFBaE0sRUFBME07QUFJM00sRUFBQSxNQUFNLENBQUMsSUFBUCxHQUFZLHFCQUFaO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFvQixXQUFwQjtBQUNBLEVBQUEsTUFBTSxDQUFDLEtBQVAsR0FBYztBQUFDLElBQUEsUUFBUSxFQUFFLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGVBQXBCLEVBQVg7QUFBaUQsSUFBQSxVQUFVLEVBQUMsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsY0FBaEY7QUFBK0YsSUFBQSxZQUFZLEVBQUMsTUFBTSxDQUFDLFlBQVAsQ0FBb0I7QUFBaEksR0FBZDtBQUNBLE1BQUksSUFBSSxHQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDO0FBRUEsRUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixhQUFwQjtBQUVBLEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBaUI7QUFBQyxJQUFBLGdCQUFnQixFQUFDO0FBQWxCLEdBQWpCOztBQUNBLEVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsWUFBVTtBQUcvQixJQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsUUFBYixHQUF3QixDQUFDLE1BQU0sQ0FBQyxLQUFQLENBQWEsUUFBdEM7QUFDQSxJQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGVBQXBCLENBQW9DLE1BQU0sQ0FBQyxLQUFQLENBQWEsUUFBakQ7QUFDQSxRQUFJLE1BQU0sQ0FBQyxLQUFQLENBQWEsUUFBakIsRUFBMkIsTUFBTSxDQUFDLFlBQVAsQ0FBb0Isa0JBQXBCLENBQXVDLElBQXZDLEVBQTRDLElBQTVDLEVBQTNCLEtBQ0ssTUFBTSxDQUFDLFlBQVAsQ0FBb0IsWUFBcEIsQ0FBaUMsSUFBakMsRUFBc0MsQ0FBdEMsRUFBeUMsSUFBekMsQ0FBOEMsVUFBUyxJQUFULEVBQWMsQ0FFL0QsQ0FGRyxFQU4wQixDQVNoQztBQUNELEdBVkQ7O0FBV0EsRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixZQUFVO0FBQzFCLElBQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxRQUFiLEdBQXdCLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGVBQXBCLEVBQXhCO0FBRUQsR0FIRCxDQXZCMk0sQ0E2QjNNOzs7QUFFQSxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXNCLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGNBQTFDLENBL0IyTSxDQWdDM007O0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixRQUFwQixDQUE2QixJQUE3QixFQUFrQyxDQUFsQyxFQUFxQyxJQUFyQyxDQUEwQyxVQUFVLElBQVYsRUFBZ0IsQ0FFdkQsQ0FGSDtBQUlFLEVBQUEsTUFBTSxDQUFDLE1BQVAsQ0FBYywwQkFBZCxFQUF5QyxVQUFTLFFBQVQsRUFBa0IsUUFBbEIsRUFBMkI7QUFDMUQsUUFBSSxRQUFRLElBQUUsUUFBZCxFQUNBO0FBQ00sTUFBQSxNQUFNLENBQUMsV0FBUCxHQUFtQixNQUFNLENBQUMsWUFBUCxDQUFvQixjQUFwQixFQUFuQjtBQUNMO0FBQ0gsR0FMUjs7QUFRSixFQUFBLE1BQU0sQ0FBQyxtQkFBUCxHQUE2QixZQUM3QjtBQUNJLElBQUEsb0JBQW9CLENBQUMsbUJBQXJCLENBQXlDLE1BQU0sQ0FBQyxVQUFoRCxFQUEyRCxNQUFNLENBQUMsUUFBUCxDQUFnQixPQUEzRSxFQUFvRixJQUFwRixDQUNMLFVBQVMsSUFBVCxFQUFlO0FBQ2QsTUFBQSxNQUFNLENBQUMsaUJBQVAsR0FBMkIsSUFBSSxDQUFDLElBQWhDO0FBQ0EsS0FISSxFQUdILFVBQVMsS0FBVCxFQUFlO0FBQ2hCLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0ssS0FMRDtBQU1ILEdBUkQ7O0FBVUEsRUFBQSxNQUFNLENBQUMsbUJBQVA7O0FBRUEsRUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixZQUFXO0FBQ2pDLFFBQUksTUFBTSxDQUFDLE1BQVAsSUFBZSxTQUFuQixFQUE4QixNQUFNLENBQUMsTUFBUCxHQUFjLEVBQWQ7QUFDOUIsSUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QjtBQUFDLE1BQUEsS0FBSyxFQUFDLEVBQVA7QUFBVSxNQUFBLE1BQU0sRUFBQyxFQUFqQjtBQUFvQixNQUFBLE1BQU0sRUFBQyxJQUEzQjtBQUFnQyxNQUFBLFVBQVUsRUFBQyxJQUEzQztBQUFnRCxNQUFBLE1BQU0sRUFBRTtBQUFDLFFBQUEsTUFBTSxFQUFHLE1BQU0sQ0FBQztBQUFqQixPQUF4RDtBQUF5RixNQUFBLEtBQUssRUFBQyxNQUFNLENBQUMsTUFBUCxDQUFjLE1BQU0sQ0FBQyxlQUFyQixFQUFzQyxNQUF0QyxHQUE2QyxDQUE1STtBQUE4SSxNQUFBLFFBQVEsRUFBQyxZQUFZLENBQUMsMEJBQWIsQ0FBd0MsV0FBeEMsRUFBb0QsY0FBcEQsRUFBbUUsSUFBbkUsQ0FBdko7QUFBZ08sTUFBQSxNQUFNLEVBQUMsTUFBTSxDQUFDO0FBQTlPLEtBQXhCO0FBQ0MsSUFBQSxNQUFNLENBQUMsTUFBUCxDQUFjLE1BQU0sQ0FBQyxlQUFyQixFQUFzQyxJQUF0QyxDQUEyQyxNQUFNLENBQUMsY0FBbEQ7QUFFSCxHQUxBO0FBT0g7OztBQzFvTEQsYSxDQUlBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUErRDtBQUdoRCxTQUFTLGFBQVQsQ0FBd0IsTUFBeEIsRUFBZ0MsWUFBaEMsRUFBNkMsTUFBN0MsRUFBb0QsVUFBcEQsRUFBK0QsZUFBL0QsRUFBK0UsaUJBQS9FLEVBQWlHLGdCQUFqRyxFQUFrSCxZQUFsSCxFQUErSCxlQUEvSCxFQUErSSxXQUEvSSxFQUEySixvQkFBM0osRUFBaUwsRUFBakwsRUFBcUwsUUFBckwsRUFBOEwsbUJBQTlMLEVBQW1OO0FBRTlOLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBZ0IsZUFBaEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXNCLEtBQXRCO0FBQ0EsRUFBQSxNQUFNLENBQUMsU0FBUCxHQUFpQixFQUFqQixDQUo4TixDQUkxTTs7QUFDcEIsRUFBQSxNQUFNLENBQUMsaUJBQVAsR0FBeUIsRUFBekIsQ0FMOE4sQ0FLbk07O0FBQzNCLEVBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQXdCLElBQXhCLENBTjhOLENBTWpNOztBQUM3QixFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQWtCLENBQUM7QUFBQyxJQUFBLEVBQUUsRUFBQyxDQUFKO0FBQU0sSUFBQSxRQUFRLEVBQUMsV0FBZjtBQUEyQixJQUFBLFFBQVEsRUFBQyxxQkFBcEM7QUFBMEQsSUFBQSxJQUFJLEVBQUM7QUFBL0QsR0FBRCxDQUFsQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0I7QUFBQyxJQUFBLE9BQU8sRUFBQztBQUFULEdBQWxCO0FBQ0EsRUFBQSxNQUFNLENBQUMsTUFBUCxHQUFjLENBQWQ7QUFDQSxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLElBQXpCO0FBQ0EsTUFBSSxJQUFJLEdBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEM7QUFDQSxFQUFBLE1BQU0sQ0FBQyxLQUFQLEdBQWUsZUFBZjtBQUNBLEVBQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxnQkFBYjtBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsV0FBdEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGFBQXBCO0FBQ0EsTUFBSSxjQUFjLEdBQUUsTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXNCLGdCQUF0QixFQUF1QyxJQUF2QyxDQUFwQjtBQUNBLE1BQUksa0JBQWtCLEdBQUcsY0FBYyxDQUFDLE9BQWYsQ0FBdUIsSUFBaEQ7QUFDQSxFQUFBLE1BQU0sQ0FBQyxHQUFQLEdBQWEsbUJBQWI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBWCxDQUF5QixrQkFBekIsRUFBNEMsa0JBQWtCLEdBQUMsU0FBL0QsRUFBMEU7QUFBQyxJQUFBLEtBQUssRUFBQztBQUFDLE1BQUEsUUFBUSxFQUFDO0FBQVY7QUFBUCxHQUExRTtBQUVELEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsQ0FBQztBQUFDLElBQUEsRUFBRSxFQUFDLENBQUo7QUFBTSxJQUFBLElBQUksRUFBQztBQUFYLEdBQUQsRUFBc0I7QUFBQyxJQUFBLEVBQUUsRUFBQyxDQUFKO0FBQU0sSUFBQSxJQUFJLEVBQUM7QUFBWCxHQUF0QixDQUF0QjtBQUVDLEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0IsQ0FBQztBQUNoQjtBQUFDLElBQUEsSUFBSSxFQUFFLElBQVA7QUFBYSxJQUFBLFdBQVcsRUFBRSxJQUExQjtBQUFnQyxJQUFBLElBQUksRUFBRTtBQUF0QyxHQURlLEVBRWY7QUFBQyxJQUFBLElBQUksRUFBRSxVQUFQO0FBQW1CLElBQUEsV0FBVyxFQUFFLFdBQWhDO0FBQTZDLElBQUEsSUFBSSxFQUFFO0FBQW5ELEdBRmUsRUFHZjtBQUFDLElBQUEsSUFBSSxFQUFFLGNBQVA7QUFBdUIsSUFBQSxXQUFXLEVBQUUsd0JBQXBDO0FBQStELElBQUEsSUFBSSxFQUFFO0FBQXJFLEdBSGUsRUFJZjtBQUFDLElBQUEsSUFBSSxFQUFFLGFBQVA7QUFBc0IsSUFBQSxXQUFXLEVBQUUsa0JBQW5DO0FBQXdELElBQUEsSUFBSSxFQUFFO0FBQTlELEdBSmUsRUFLZjtBQUFDLElBQUEsSUFBSSxFQUFFLFFBQVA7QUFBaUIsSUFBQSxXQUFXLEVBQUUsUUFBOUI7QUFBd0MsSUFBQSxJQUFJLEVBQUU7QUFBOUMsR0FMZSxFQU1mO0FBQUMsSUFBQSxJQUFJLEVBQUUsZUFBUDtBQUF3QixJQUFBLFdBQVcsRUFBRSxXQUFyQztBQUFtRCxJQUFBLElBQUksRUFBRTtBQUF6RCxHQU5lLENBT2pCO0FBQ0M7QUFSZ0IsR0FBcEI7O0FBV0EsRUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixVQUFTLElBQVQsRUFBYztBQUM5QixJQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXVCLEtBQXZCO0FBQ0EsSUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsY0FBekIsR0FBd0MsQ0FBeEM7QUFDQSxRQUFJLElBQUksSUFBRSxTQUFWLEVBQXFCLE1BQU0sQ0FBQyxXQUFQLEdBQW1CLElBQW5CO0FBQ3JCLElBQUEsUUFBUSxDQUFDLFlBQVU7QUFDZixNQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXVCLElBQXZCO0FBQ0gsS0FGTyxDQUFSO0FBR04sR0FQRjs7QUFTRyxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLFlBQVU7QUFDMUIsSUFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLHNCQUFWLEVBQWlDO0FBQUMsTUFBQSxFQUFFLEVBQUMsTUFBTSxDQUFDLFVBQVg7QUFBc0IsTUFBQSxXQUFXLEVBQUM7QUFBQyxRQUFBLEtBQUssRUFBQyxtQ0FBUDtBQUEyQyxRQUFBLEtBQUssRUFBQyxNQUFNLENBQUMsT0FBeEQ7QUFBZ0UsUUFBQSxNQUFNLEVBQUM7QUFBQyxVQUFBLEVBQUUsRUFBQyxNQUFNLENBQUM7QUFBWDtBQUF2RTtBQUFsQyxLQUFqQztBQUNOLEdBRkY7O0FBS0YsRUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsVUFBUyxHQUFULEVBQWEsUUFBYixFQUN4QjtBQUFJO0FBQ0Y7QUFDQyxJQUFBLE1BQU0sQ0FBQyxNQUFQLEdBQWdCLEdBQUcsQ0FBQyxFQUFwQjtBQUNBLElBQUEsTUFBTSxDQUFDLFlBQVAsR0FBb0IsSUFBcEI7QUFDQSxJQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXFCLEdBQUcsQ0FBQyxFQUF6QjtBQUNBLElBQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsRUFBbEI7QUFDQSxJQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQW1CLEVBQW5CO0FBQ0EsSUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixFQUF0QjtBQUVBLElBQUEsTUFBTSxDQUFDLFlBQVAsR0FBb0IsR0FBRyxDQUFDLFVBQXhCO0FBQ0EsSUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixHQUFHLENBQUMsRUFBMUI7QUFFQSxJQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQixHQUFHLENBQUMsSUFBOUI7QUFDQSxJQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWtCO0FBQUMsTUFBQSxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQWY7QUFBd0IsTUFBQSxXQUFXLEVBQUUsR0FBRyxDQUFDLEVBQXpDO0FBQTRDLE1BQUEsV0FBVyxFQUFDLEdBQUcsQ0FBQyxXQUE1RDtBQUF3RSxNQUFBLElBQUksRUFBQyxHQUFHLENBQUM7QUFBakYsS0FBbEI7QUFFQSxJQUFBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLE1BQU0sQ0FBQyxZQUE5QixFQUE0QyxNQUFNLENBQUMsUUFBUCxDQUFnQixRQUE1RDtBQUVBLElBQUEsWUFBWSxDQUFDLFlBQWIsQ0FBMEIsTUFBTSxDQUFDLFlBQWpDLEVBQThDLElBQTlDLEVBQ2EsSUFEYixDQUNrQixVQUFTLElBQVQsRUFBZTtBQUNULE1BQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsSUFBSSxDQUFDLElBQXZCO0FBQ1YsS0FIZCxFQUdlLFVBQVMsS0FBVCxFQUFlO0FBQ04sTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDZixLQUxUO0FBTUgsR0F4Qko7O0FBNEJBLEVBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQTBCLFVBQVMsVUFBVCxFQUFvQixRQUFwQixFQUE2QixNQUE3QixFQUFxQyxJQUFyQyxFQUEyQztBQUFDO0FBQ2pFLFFBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQyxLQUFILEVBQWYsQ0FEZ0UsQ0FHakU7QUFDRDs7QUFDUSxJQUFBLFlBQVksQ0FBQyxRQUFiLENBQXNCLElBQXRCLEVBQTRCLElBQTVCLENBQWlDLFVBQVMsSUFBVCxFQUFlO0FBQUE7O0FBRTdCLFVBQUksQ0FBQSxNQUFNLFNBQU4sSUFBQSxNQUFNLFdBQU4sNEJBQUEsTUFBTSxDQUFFLElBQVIsOERBQWMsSUFBZCxHQUFxQixNQUFyQixJQUE0QixDQUFoQyxFQUFvQztBQUNoQyxRQUFBLE1BQU0sQ0FBQyxLQUFQLEdBQWdCLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBVixDQUFpQixVQUFBLElBQUk7QUFBQTs7QUFBQSxpQkFBSyxJQUFMLGFBQUssSUFBTCx5Q0FBSyxJQUFJLENBQUUsUUFBWCxtREFBSyxlQUFnQixXQUFoQixHQUE4QixRQUE5QixrQkFBdUMsTUFBTSxDQUFDLElBQTlDLGtEQUF1QyxjQUFhLFdBQWIsRUFBdkMsQ0FBTDtBQUFBLFNBQXJCLENBQWhCLENBREosS0FHSSxNQUFNLENBQUMsS0FBUCxHQUFlLElBQUksQ0FBQyxJQUFwQjtBQUVKLE1BQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0IsTUFBTSxDQUFDLEtBQVAsQ0FBYSxNQUFqQztBQUNBLE1BQUEsTUFBTSxDQUFDLGlCQUFQLENBQXlCLGNBQXpCLEdBQTBDLE1BQU0sQ0FBQyxLQUFQLENBQWEsTUFBdkQ7QUFDQSxVQUFJLE9BQU8sR0FBRyxDQUFDLFVBQVUsR0FBRyxDQUFkLElBQW9CLFFBQWxDO0FBQ0EsVUFBSSxPQUFPLEdBQUksTUFBTSxDQUFDLEtBQVAsQ0FBYSxLQUFiLENBQW1CLE9BQW5CLEVBQTZCLElBQUksQ0FBQyxHQUFMLENBQVUsVUFBVSxHQUFHLFFBQXZCLEVBQWtDLE1BQU0sQ0FBQyxVQUF6QyxDQUE3QixDQUFmLENBVjZCLENBVzlCOztBQUNDLE1BQUEsUUFBUSxDQUFDLE9BQVQsQ0FBa0I7QUFBQyxRQUFBLE1BQU0sRUFBRSxHQUFUO0FBQWMsUUFBQSxJQUFJLEVBQUMsT0FBbkI7QUFBNEIsUUFBQSxVQUFVLEVBQUUsTUFBTSxDQUFDO0FBQS9DLE9BQWxCO0FBQ0osS0FiZixFQWFnQixVQUFTLEtBQVQsRUFBZTtBQUNiLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0wsS0FmYixFQUwwRCxDQXFCakU7O0FBRUQsV0FBTyxRQUFRLENBQUMsT0FBaEI7QUFFRixHQXpCRDs7QUE0QkQsRUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixVQUFVLFVBQVYsRUFBcUIsUUFBckIsRUFBK0I7QUFBQztBQUVwRCxRQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMsS0FBSCxFQUFmO0FBQ0EsSUFBQSxNQUFNLENBQUMsZUFBUCxHQUF1QixJQUF2QjtBQUNBLFFBQUksTUFBTSxHQUFDLE1BQU0sQ0FBQyxRQUFsQixDQUptRCxDQUtuRDs7QUFFQSxRQUFJLFVBQVUsSUFBRSxTQUFoQixFQUEyQixVQUFVLEdBQUcsTUFBTSxDQUFDLGlCQUFQLENBQXlCLFVBQXRDO0FBQzNCLFFBQUksUUFBUSxJQUFFLFNBQWQsRUFBeUIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixRQUFwQzs7QUFDekIsUUFBSSxNQUFNLENBQUMsVUFBUCxHQUFrQixDQUF0QixFQUF3QjtBQUNwQixVQUFJLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBTSxDQUFDLFVBQVAsR0FBa0IsUUFBNUIsSUFBd0MsUUFBNUMsRUFBc0Q7QUFDcEQsWUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFNLENBQUMsVUFBUCxHQUFrQixRQUE1QixDQUFkO0FBQ0Q7QUFDSDs7QUFDRCxJQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLEdBQTRCLE1BQU0sQ0FBQyxRQUFuQzs7QUFFQSxRQUFJLE1BQU0sQ0FBQyxVQUFYLEVBQXVCO0FBQ3RCLE1BQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsR0FBK0IsVUFBL0I7QUFDQSxNQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFFBQWpCLEdBQTRCLFFBQTVCO0FBQ0EsS0FIRCxNQUdRO0FBQ0QsVUFBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFyQixFQUFxQztBQUM3QixZQUFJLE1BQU0sQ0FBQyxXQUFQLElBQXNCLENBQTFCLEVBQThCO0FBQ3RCLFVBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBakIsR0FBK0IsTUFBTSxDQUFDLFdBQXRDO0FBQ1A7O0FBQ0QsUUFBQSxVQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsV0FBOUI7QUFDQSxRQUFBLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUCxDQUFpQixRQUE1QjtBQUNQO0FBQ1AsS0EzQmlELENBNkJsRDs7O0FBRUcsSUFBQSxNQUFNLENBQUMsZ0JBQVAsQ0FBeUIsVUFBekIsRUFBb0MsUUFBcEMsRUFBNkMsTUFBN0MsRUFBb0QsSUFBcEQsRUFBMEQsSUFBMUQsQ0FDSSxVQUFTLFFBQVQsRUFBbUI7QUFFaEI7QUFFQyxNQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLElBQWxCO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsR0FBMkIsUUFBUSxDQUFDLElBQXBDO0FBQ0EsVUFBSSxPQUFPLEdBQUcsRUFBZDtBQUNBLE1BQUEsT0FBTyxDQUFDLE9BQVIsR0FBa0IsUUFBUSxDQUFDLElBQTNCO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsY0FBekIsR0FBMEMsUUFBUSxDQUFDLFVBQW5ELENBUmUsQ0FXZjtBQUNBOztBQUVBLE1BQUEsTUFBTSxDQUFDLFdBQVAsR0FBbUIsVUFBbkI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixhQUF6QixHQUF5QyxJQUFJLENBQUMsSUFBTCxDQUFVLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixjQUF6QixHQUF3QyxRQUFsRCxDQUF6QztBQUVBLE1BQUEsT0FBTyxDQUFDLFFBQVIsR0FBbUIsUUFBbkI7QUFDQSxNQUFBLE9BQU8sQ0FBQyxhQUFSLEdBQXdCLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixhQUFqRDtBQUNBLE1BQUEsT0FBTyxDQUFDLE9BQVIsR0FBa0IsTUFBTSxDQUFDLFVBQXpCO0FBQ0EsTUFBQSxPQUFPLENBQUMsS0FBUixHQUFnQixRQUFRLENBQUMsVUFBekI7QUFDQSxNQUFBLFFBQVEsQ0FBQyxPQUFULENBQWlCO0FBQUMsUUFBQSxJQUFJLEVBQUU7QUFBUCxPQUFqQjtBQUVBLE1BQUEsTUFBTSxDQUFDLGVBQVAsR0FBdUIsS0FBdkI7QUFDSCxLQXpCTCxFQTBCTSxVQUFVLEtBQVYsRUFBaUI7QUFDbEIsTUFBQSxRQUFRLENBQUMsT0FBVCxDQUFrQjtBQUFDLFFBQUEsSUFBSSxFQUFFO0FBQVAsT0FBbEI7QUFDQSxLQTVCTDtBQWdDUCxXQUFPLFFBQVEsQ0FBQyxPQUFoQjtBQUNBLEdBaEVELENBeEc4TixDQXdLM047OztBQUdILEVBQUEsWUFBWSxDQUFDLGNBQWIsQ0FBNEIsV0FBNUIsRUFBd0MsSUFBeEMsRUFDRCxJQURDLENBQ0ssVUFBQyxJQUFELEVBQVc7QUFDUjtBQUNBLElBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQTBCLElBQUksQ0FBQyxJQUEvQjtBQUFzQyxHQUg5QztBQUtKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFJSSxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLFVBQVMsV0FBVCxFQUFzQjtBQUFFO0FBQzVDO0FBQ0EsSUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQixXQUFyQjtBQUNILEdBSEQ7O0FBS0MsRUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBNkIsS0FBN0I7O0FBR0QsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixZQUFVO0FBRTVCO0FBQ0EsSUFBQSxNQUFNLENBQUMsY0FBUCxHQUFzQjtBQUFDLE1BQUEsSUFBSSxFQUFFLGdCQUFQO0FBQXdCLE1BQUEsSUFBSSxFQUFDO0FBQTdCLEtBQXRCOztBQUNDLFFBQUksTUFBTSxDQUFDLGVBQVAsQ0FBdUIsSUFBdkIsSUFBNkIsU0FBakMsRUFBNEM7QUFDM0M7QUFDQyxNQUFBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLElBQXZCLEdBQTRCLE1BQU0sQ0FBQyxZQUFQLENBQW9CLElBQWhEO0FBQ0Y7O0FBQ0EsSUFBQSxNQUFNLENBQUMsZUFBUCxDQUF1QixTQUF2QixHQUFpQyxJQUFqQztBQUNBLElBQUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsU0FBdkIsR0FBaUMsSUFBakM7QUFFRCxJQUFBLE1BQU0sQ0FBQyxtQkFBUCxHQUE2QixDQUFDLE1BQU0sQ0FBQyxtQkFBckM7QUFFSCxHQWJEOztBQWVGLEVBQUEsTUFBTSxDQUFDLFdBQVAsR0FBcUI7QUFBQyxJQUFBLG1CQUFtQixFQUFFO0FBQXRCLEdBQXJCO0FBQ0EsRUFBQSxNQUFNLENBQUMsZUFBUCxHQUF3QjtBQUFDLElBQUEsYUFBYSxFQUFDO0FBQWYsR0FBeEI7O0FBR0ksRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQixZQUFVO0FBRXpCLElBQUEsTUFBTSxDQUFDLGNBQVAsR0FBc0I7QUFBQyxNQUFBLElBQUksRUFBRSxlQUFQO0FBQXVCLE1BQUEsSUFBSSxFQUFDO0FBQTVCLEtBQXRCLENBRnlCLENBR3pCOztBQUNBLElBQUEsTUFBTSxDQUFDLG1CQUFQLEdBQTZCLENBQUMsTUFBTSxDQUFDLG1CQUFyQztBQUNBLElBQUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsRUFBdkIsR0FBMEIsU0FBMUI7QUFDQSxJQUFBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLElBQXZCLEdBQTRCLE1BQU0sQ0FBQyxZQUFQLENBQW9CLElBQWhEO0FBQ0EsSUFBQSxNQUFNLENBQUMsZUFBUCxDQUF1QixhQUF2QixDQUFxQyxXQUFyQyxHQUFpRCxNQUFNLENBQUMsWUFBUCxDQUFvQixXQUFyRTtBQUNILEdBUkg7O0FBVUYsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixZQUFVO0FBQzVCO0FBQ0EsSUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBNkIsQ0FBQyxNQUFNLENBQUMsbUJBQXJDO0FBQ0gsR0FIRDs7QUFLQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLFVBQVMsRUFBVCxFQUFhO0FBQy9CO0FBQ0ksSUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBNkIsQ0FBQyxNQUFNLENBQUMsbUJBQXJDO0FBRUEsSUFBQSxZQUFZLENBQUMsU0FBYixDQUF1QixNQUFNLENBQUMsUUFBOUIsRUFBd0MsSUFBeEMsQ0FBNkMsVUFBUyxJQUFULEVBQWU7QUFDL0MsTUFBQSxNQUFNLENBQUMsS0FBUCxHQUFlLElBQUksQ0FBQyxJQUFwQixDQUQrQyxDQUU5QztBQUVMLEtBSlQsRUFJVSxVQUFTLEtBQVQsRUFBZTtBQUViLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0wsS0FQUDtBQVNQLEdBYkQ7O0FBZUEsRUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixZQUFVO0FBRS9CLFFBQUksSUFBSSxHQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDO0FBQ0EsSUFBQSxZQUFZLENBQUMsUUFBYixDQUFzQixJQUF0QixFQUE0QixJQUE1QixDQUFpQyxVQUFTLElBQVQsRUFBZTtBQUVwQixNQUFBLE1BQU0sQ0FBQyxLQUFQLEdBQWUsSUFBSSxDQUFDLElBQXBCLENBRm9CLENBR3JCO0FBRUgsS0FMeEIsRUFLeUIsVUFBUyxLQUFULEVBQWU7QUFFYixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNMLEtBUnRCO0FBU0YsR0FaRDs7QUFlQSxFQUFBLE1BQU0sQ0FBQyxjQUFQOztBQUlFLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsVUFBVSxPQUFWLEVBQW1CO0FBQ3BDO0FBQ0EsUUFBSSxPQUFKLEVBQWE7QUFDVjtBQUNGLE1BQUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsYUFBdkIsQ0FBcUMsTUFBckMsR0FBOEMsUUFBOUM7QUFFSSxNQUFBLFlBQVksQ0FBQyxxQkFBYixDQUFtQyxNQUFNLENBQUMsY0FBUCxDQUFzQixJQUF6RCxFQUE4RCxNQUFNLENBQUMsZUFBckUsRUFBc0YsSUFBdEYsQ0FBMkYsVUFBUyxJQUFULEVBQWU7QUFFeEYsUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsR0FBakMsRUFBcUMsU0FBckM7QUFFSCxPQUpmLEVBSWdCLFVBQVMsS0FBVCxFQUFlO0FBRWIsUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDTCxPQVBiO0FBUUw7QUFDRixHQWZIO0FBaUJEOztBQUlFLFNBQVMsZ0JBQVQsQ0FBMkIsTUFBM0IsRUFBbUMsVUFBbkMsRUFBOEMsZUFBOUMsRUFBOEQsZUFBOUQsRUFBOEUsV0FBOUUsRUFBMEYsWUFBMUYsRUFBdUcsbUJBQXZHLEVBQTRIO0FBRTVILEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBZ0Isa0JBQWhCLENBRjRILENBRzNIOztBQUNBLE1BQUksT0FBTyxHQUFHLENBQ2I7QUFBRSxJQUFBLElBQUksRUFBRSxJQUFSO0FBQWMsSUFBQSxXQUFXLEVBQUUsSUFBM0I7QUFBaUMsSUFBQSxlQUFlLEVBQUUsZUFBZSxDQUFDLGdCQUFoQixDQUFpQyxHQUFuRjtBQUF1RixJQUFBLElBQUksRUFBRSxRQUE3RjtBQUF1RyxJQUFBLEtBQUssRUFBQyxJQUE3RztBQUFrSCxJQUFBLFlBQVksRUFBRSxLQUFoSTtBQUF1SSxJQUFBLE9BQU8sRUFBRTtBQUFoSixHQURhLEVBRWI7QUFBRSxJQUFBLElBQUksRUFBRSxVQUFSO0FBQW9CLElBQUEsV0FBVyxFQUFFO0FBQWpDLEdBRmEsRUFHYjtBQUFFLElBQUEsSUFBSSxFQUFFLGFBQVI7QUFBdUIsSUFBQSxXQUFXLEVBQUU7QUFBcEMsR0FIYSxFQUliO0FBQUUsSUFBQSxJQUFJLEVBQUUsUUFBUjtBQUFrQixJQUFBLFdBQVcsRUFBRTtBQUEvQixHQUphLEVBS2I7QUFBRSxJQUFBLElBQUksRUFBRSxNQUFSO0FBQWdCLElBQUEsV0FBVyxFQUFFLFVBQTdCO0FBQXdDLElBQUEsVUFBVSxFQUFDO0FBQW5ELEdBTGEsQ0FBZDtBQVFILEVBQUEsTUFBTSxDQUFDLGlCQUFQLEdBQTJCO0FBQ3hCLElBQUEsVUFBVSxFQUFFLENBRFk7QUFFeEIsSUFBQSxRQUFRLEVBQUUsRUFGYztBQUd4QixJQUFBLElBQUksRUFBRTtBQUhrQixHQUEzQjtBQUtELEVBQUEsTUFBTSxDQUFDLEtBQVAsR0FBZSxlQUFmO0FBQ0EsRUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLGdCQUFiO0FBR0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixXQUF0QjtBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsYUFBcEI7QUFFQSxNQUFJLGNBQWMsR0FBRSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsZ0JBQXRCLEVBQXVDLElBQXZDLENBQXBCO0FBQ0EsTUFBSSxrQkFBa0IsR0FBRyxjQUFjLENBQUMsT0FBZixDQUF1QixJQUFoRDtBQUNBLEVBQUEsTUFBTSxDQUFDLEdBQVAsR0FBYSxtQkFBYjtBQUNBLEVBQUEsTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLGtCQUF6QixFQUE0QyxrQkFBa0IsR0FBQyxTQUEvRCxFQUEwRTtBQUFDLElBQUEsS0FBSyxFQUFDO0FBQUMsTUFBQSxRQUFRLEVBQUM7QUFBVjtBQUFQLEdBQTFFO0FBR0EsRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQjtBQUNqQixJQUFBLFVBQVUsRUFBRSxPQURLO0FBRW5CLElBQUEsY0FBYyxFQUFFLElBRkc7QUFHakIsSUFBQSxjQUFjLEVBQUUsSUFIQztBQUlyQixJQUFBLGdCQUFnQixFQUFFLElBSkc7QUFLakIsSUFBQSxrQkFBa0IsRUFBRSxJQUxIO0FBTWxCLElBQUEsV0FBVyxFQUFFLEtBTks7QUFPbEIsSUFBQSx5QkFBeUIsRUFBRyxDQVBWO0FBUW5CLElBQUEsdUJBQXVCLEVBQUcsQ0FSUDtBQVNsQixJQUFBLGVBQWUsRUFBRSxJQVRDO0FBVWxCLElBQUEsd0JBQXdCLEVBQUUsSUFWUjtBQVdsQixJQUFBLG9CQUFvQixFQUFFO0FBQ3hCO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBbkJ5QixHQUFyQjs7QUF3QkEsRUFBQSxNQUFNLENBQUMsV0FBUCxDQUFtQixhQUFuQixHQUFtQyxVQUFVLE9BQVYsRUFBbUI7QUFDbEQ7QUFDQSxJQUFBLE1BQU0sQ0FBQyxPQUFQLEdBQWlCLE9BQWpCO0FBQ0EsSUFBQSxPQUFPLENBQUMsU0FBUixDQUFrQixFQUFsQixDQUFxQixtQkFBckIsQ0FBeUMsTUFBekMsRUFBZ0QsVUFBUyxHQUFULEVBQWE7QUFDekQ7QUFDQSxNQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQW9CLEdBQUcsQ0FBQyxVQUF4QjtBQUNDLEtBSEw7QUFLRixHQVJGOztBQVVBLEVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsWUFBVTtBQUVoQyxRQUFJLElBQUksR0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QztBQUNBLElBQUEsWUFBWSxDQUFDLFFBQWIsQ0FBc0IsSUFBdEIsRUFDTyxJQURQLENBQ1ksVUFBUyxJQUFULEVBQWU7QUFDWixNQUFBLE1BQU0sQ0FBQyxJQUFQLEdBQWMsSUFBSSxDQUFDLElBQW5CO0FBQ0EsTUFBQSxNQUFNLENBQUMsV0FBUCxDQUFtQixJQUFuQixHQUEwQixNQUFNLENBQUMsSUFBakM7QUFDVixLQUpMLEVBSU0sVUFBUyxLQUFULEVBQWU7QUFDUCxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNMLEtBTlQ7QUFRRCxHQVhEOztBQWFBLEVBQUEsY0FBYztBQUliOztBQUdFLFNBQVMsWUFBVCxDQUF1QixNQUF2QixFQUErQixVQUEvQixFQUEwQyxlQUExQyxFQUEwRCxpQkFBMUQsRUFBNEUsZ0JBQTVFLEVBQTZGLGVBQTdGLEVBQTZHLFdBQTdHLEVBQXlILFlBQXpILEVBQXNJLG1CQUF0SSxFQUEySjtBQUVqSyxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLENBQUM7QUFBQyxJQUFBLEVBQUUsRUFBQyxDQUFKO0FBQU0sSUFBQSxJQUFJLEVBQUM7QUFBWCxHQUFELEVBQXNCO0FBQUMsSUFBQSxFQUFFLEVBQUMsQ0FBSjtBQUFNLElBQUEsSUFBSSxFQUFDO0FBQVgsR0FBdEIsQ0FBdEI7QUFDRyxFQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWtCO0FBQUUsSUFBQSxNQUFNLEVBQUUsSUFBVjtBQUFnQixJQUFBLGFBQWEsRUFBQyxFQUE5QjtBQUFrQyxJQUFBLFFBQVEsRUFBRSxNQUFNLENBQUMsWUFBUCxDQUFvQixDQUFwQjtBQUE1QyxHQUFsQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBZ0IsY0FBaEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGVBQWhCLEdBQWtDLGlCQUFpQixDQUFDLGNBQWxCLENBQWlDLG9CQUFqQyxDQUFsQztBQUdBLE1BQUksSUFBSSxHQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDO0FBQ0EsRUFBQSxNQUFNLENBQUMsS0FBUCxHQUFlLGVBQWY7QUFDQSxFQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsZ0JBQWI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQWlCLEVBQWpCO0FBRUEsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixXQUF0QjtBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsYUFBcEI7QUFFQSxNQUFJLGNBQWMsR0FBRSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsZ0JBQXRCLEVBQXVDLElBQXZDLENBQXBCO0FBQ0EsTUFBSSxrQkFBa0IsR0FBRyxjQUFjLENBQUMsT0FBZixDQUF1QixJQUFoRDtBQUNBLEVBQUEsTUFBTSxDQUFDLEdBQVAsR0FBYSxtQkFBYjtBQUNBLEVBQUEsTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLGtCQUF6QixFQUE0QyxrQkFBa0IsR0FBQyxTQUEvRCxFQUEwRTtBQUFDLElBQUEsS0FBSyxFQUFDO0FBQUMsTUFBQSxRQUFRLEVBQUM7QUFBVjtBQUFQLEdBQTFFO0FBR0EsRUFBQSxNQUFNLENBQUMsc0JBQVAsR0FBOEIsSUFBOUI7O0FBRUEsRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQixVQUFVLE9BQVYsRUFBbUI7QUFFbkM7QUFDQyxRQUFJLE9BQUosRUFBYTtBQUVYLE1BQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsT0FBaEIsR0FBd0IsQ0FBeEI7QUFFRyxNQUFBLFlBQVksQ0FBQyxTQUFiLENBQXVCLE1BQU0sQ0FBQyxRQUE5QixFQUF3QyxJQUF4QyxDQUE2QyxVQUFTLElBQVQsRUFBZTtBQUN4QyxRQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsR0FBdEMsRUFBMEMsU0FBMUM7QUFDQSxRQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEVBQWhCLEdBQW1CLElBQUksQ0FBQyxJQUFMLENBQVUsSUFBN0I7QUFDSixPQUhoQixFQUdpQixVQUFTLEtBQVQsRUFBZTtBQUViLFFBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0wsT0FOZDtBQVFKO0FBQ0YsR0FoQkw7QUFtQkY7O0FBR0ssU0FBUyxhQUFULENBQXdCLE1BQXhCLEVBQWdDLFVBQWhDLEVBQTJDLGVBQTNDLEVBQTJELGlCQUEzRCxFQUE2RSxnQkFBN0UsRUFBOEYsZUFBOUYsRUFBOEcsV0FBOUcsRUFBMEgsWUFBMUgsRUFBdUksWUFBdkksRUFBb0osbUJBQXBKLEVBQXlLO0FBRTNLLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBZ0IsZUFBaEI7QUFFRCxNQUFJLElBQUksR0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QztBQUVBLEVBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsZUFBaEIsR0FBa0MsaUJBQWlCLENBQUMsY0FBbEIsQ0FBaUMsb0JBQWpDLENBQWxDO0FBQ0EsRUFBQSxNQUFNLENBQUMsS0FBUCxHQUFlLGVBQWY7QUFDQSxFQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsZ0JBQWI7QUFFQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLFdBQXRCO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixhQUFwQjtBQUVBLE1BQUksY0FBYyxHQUFFLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQixnQkFBdEIsRUFBdUMsSUFBdkMsQ0FBcEI7QUFDQSxNQUFJLGtCQUFrQixHQUFHLGNBQWMsQ0FBQyxPQUFmLENBQXVCLElBQWhEO0FBQ0EsRUFBQSxNQUFNLENBQUMsR0FBUCxHQUFhLG1CQUFiO0FBQ0EsRUFBQSxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIsa0JBQXpCLEVBQTRDLGtCQUFrQixHQUFDLFNBQS9ELEVBQTBFO0FBQUMsSUFBQSxLQUFLLEVBQUM7QUFBQyxNQUFBLFFBQVEsRUFBQztBQUFWO0FBQVAsR0FBMUU7QUFFQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLENBQUM7QUFBQyxJQUFBLEVBQUUsRUFBQyxDQUFKO0FBQU0sSUFBQSxJQUFJLEVBQUM7QUFBWCxHQUFELEVBQXNCO0FBQUMsSUFBQSxFQUFFLEVBQUMsQ0FBSjtBQUFNLElBQUEsSUFBSSxFQUFDO0FBQVgsR0FBdEIsQ0FBdEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxzQkFBUCxHQUE4QixJQUE5QjtBQUVBLEVBQUEsWUFBWSxDQUFDLGNBQWIsQ0FBNEIsV0FBNUIsRUFBd0MsSUFBeEMsRUFBOEMsSUFBOUMsQ0FBbUQsVUFBVSxJQUFWLEVBQWdCO0FBQ3ZDLElBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQTBCLElBQUksQ0FBQyxJQUEvQjtBQUNGLEdBRjFCO0FBR0E7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNJLEVBQUEsTUFBTSxDQUFDLE1BQVAsR0FBZ0IsWUFBWSxDQUFDLEVBQTdCOztBQUVDLEVBQUEsTUFBTSxDQUFDLE9BQVAsR0FBaUIsVUFBVSxNQUFWLEVBQWtCO0FBR2pDLElBQUEsWUFBWSxDQUFDLFlBQWIsQ0FBMEIsTUFBTSxDQUFDLE1BQWpDLEVBQXdDLElBQXhDLEVBQThDLElBQTlDLENBQW1ELFVBQVMsSUFBVCxFQUFlO0FBRXJELE1BQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxDQUFWLENBQWxCO0FBQ1YsS0FISCxFQUdJLFVBQVMsS0FBVCxFQUFlO0FBRVEsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDTCxLQU50QjtBQVFELEdBWEQ7O0FBYUEsRUFBQSxNQUFNLENBQUMsT0FBUCxDQUFlLE1BQU0sQ0FBQyxNQUF0Qjs7QUFFQyxFQUFBLE1BQU0sQ0FBQyxLQUFQLEdBQWUsVUFBUyxLQUFULEVBQWdCLE1BQWhCLEVBRWY7QUFDRSxJQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLElBQWxCO0FBRUQsR0FMRDs7QUFNRixFQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLFVBQVUsT0FBVixFQUFtQjtBQUVoQztBQUVDLFFBQUksT0FBSixFQUFhO0FBQ1gsTUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixlQUFoQixHQUFrQyxpQkFBaUIsQ0FBQyxjQUFsQixDQUFpQyxpQkFBZSxNQUFNLENBQUMsUUFBUCxDQUFnQixhQUFoQixDQUE4QixDQUE5QixFQUFpQyxRQUFqRixDQUFsQztBQUVHLE1BQUEsWUFBWSxDQUFDLFNBQWIsQ0FBdUIsTUFBTSxDQUFDLFFBQTlCLEVBQXdDLElBQXhDLENBQTZDLFVBQVMsSUFBVCxFQUFlO0FBRXhDLFFBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQWpDLEVBQXNDLFNBQXRDO0FBRWxCLE9BSkYsRUFJRyxVQUFTLEtBQVQsRUFBZTtBQUVDLFFBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0wsT0FQZDtBQVVKO0FBQ0YsR0FsQkw7QUFxQkM7O0FBSUUsU0FBUyxlQUFULENBQTBCLE1BQTFCLEVBQWtDLFVBQWxDLEVBQThDLFNBQTlDLEVBQXlELFFBQXpELEVBQWtFLHFCQUFsRSxFQUF3RixpQkFBeEYsRUFBMEcsZ0JBQTFHLEVBQTJILGVBQTNILEVBQTJJLFdBQTNJLEVBQXVKLFlBQXZKLEVBQW9LLG1CQUFwSyxFQUF5TDtBQUFBOztBQUU1TCxFQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWdCLGlCQUFoQjtBQUNBLE1BQUksSUFBSSxHQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDO0FBQ0gsTUFBSSxRQUFRLG1EQUFHLFVBQVUsQ0FBQyxPQUFkLGtGQUFHLG9CQUFvQixXQUF2QixxRkFBRyx1QkFBaUMsT0FBcEMsMkRBQUcsdUJBQTBDLElBQTdDLHlFQUFxRCxPQUFqRTtBQUNHLEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBd0Isd0ZBQXhCO0FBRUEsRUFBQSxNQUFNLENBQUMsS0FBUCxHQUFlLGVBQWY7QUFDQSxFQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsZ0JBQWI7QUFHQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLFdBQXRCO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixhQUFwQjtBQUVBLE1BQUksY0FBYyxHQUFFLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQixnQkFBdEIsRUFBdUMsSUFBdkMsQ0FBcEI7QUFDQSxNQUFJLGtCQUFrQixHQUFHLGNBQWMsQ0FBQyxPQUFmLENBQXVCLElBQWhEO0FBQ0EsRUFBQSxNQUFNLENBQUMsR0FBUCxHQUFhLG1CQUFiO0FBQ0EsRUFBQSxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIsa0JBQXpCLEVBQTRDLGtCQUFrQixHQUFDLFNBQS9ELEVBQTBFO0FBQUMsSUFBQSxLQUFLLEVBQUM7QUFBQyxNQUFBLFFBQVEsRUFBQztBQUFWO0FBQVAsR0FBMUU7QUFHQSxFQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQW9CLGtCQUFVLFFBQVYsQ0FBcEIsQ0FwQjRMLENBc0IvTDs7QUFFRyxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLFVBQVUsSUFBVixFQUFnQjtBQUVwQyxRQUFJLElBQUksQ0FBQyxLQUFMLENBQVcsTUFBWCxJQUFxQixNQUFNLENBQUMsS0FBUCxJQUFjLE1BQU0sQ0FBQyxLQUE5QyxFQUFxRCxJQUFJLENBQUMsS0FBTCxDQUFXLFlBQVgsQ0FBd0IsT0FBeEIsRUFBZ0MsS0FBaEMsRUFBckQsS0FDSyxJQUFJLElBQUksQ0FBQyxLQUFMLENBQVcsTUFBWCxJQUFxQixNQUFNLENBQUMsS0FBUCxJQUFjLE1BQU0sQ0FBQyxLQUE5QyxFQUFxRCxJQUFJLENBQUMsS0FBTCxDQUFXLFlBQVgsQ0FBd0IsT0FBeEIsRUFBZ0MsSUFBaEMsRUFBckQsS0FDQSxJQUFJLENBQUMsS0FBTCxDQUFXLFlBQVgsQ0FBd0IsT0FBeEIsRUFBZ0MsS0FBaEM7QUFDUixHQUxEOztBQU9BLEVBQUEsTUFBTSxDQUFDLElBQVAsR0FBYyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFqQzs7QUFFQSxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLFlBQVc7QUFFaEMsSUFBQSxxQkFBcUIsQ0FBQyxzQkFBdEIsQ0FBNkMsTUFBTSxDQUFDLFdBQXBELEVBQWdFLE1BQU0sQ0FBQyxLQUF2RSxFQUE4RSxJQUE5RSxDQUFtRixVQUFTLFFBQVQsRUFBbUI7QUFHOUYsVUFBSSxRQUFRLENBQUMsT0FBYixFQUNBO0FBQ0ksUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixRQUFRLENBQUMsSUFBVCxDQUFjLEdBQTFDLEVBQThDLFNBQTlDO0FBQ0EsUUFBQSxxQkFBcUIsQ0FBQyxlQUF0QixDQUFzQyxRQUFRLENBQUMsSUFBVCxDQUFjLEtBQXBEO0FBQ0gsT0FKRCxNQUtBO0FBQ0ssUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixRQUFRLENBQUMsT0FBckMsRUFBNkMsT0FBN0M7QUFDSjtBQUNKLEtBWEwsRUFXTSxVQUFTLEtBQVQsRUFBZTtBQUNiLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLE9BQWxDLEVBQTBDLE9BQTFDO0FBRUgsS0FkTDtBQWdCSCxHQWxCRDtBQXFCSDs7QUFFTSxTQUFTLG1CQUFULENBQThCLE1BQTlCLEVBQXNDLFVBQXRDLEVBQWtELFFBQWxELEVBQTJELGVBQTNELEVBQTRFLFdBQTVFLEVBQXlGLHFCQUF6RixFQUFnSCxvQkFBaEgsRUFBc0ksZ0JBQXRJLEVBQXVKLGVBQXZKLEVBQXVLLFdBQXZLLEVBQW1MLFlBQW5MLEVBQWdNLG1CQUFoTSxFQUFxTjtBQUFBOztBQUV4TixFQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWdCLHFCQUFoQjtBQUNILEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBbUIsRUFBbkI7QUFDRyxNQUFJLElBQUksR0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QztBQUNILE1BQUksUUFBUSxxREFBRyxVQUFVLENBQUMsT0FBZCxrRkFBRyxxQkFBb0IsV0FBdkIsb0ZBQUcsc0JBQWlDLE9BQXBDLDJEQUFHLHVCQUEwQyxJQUE3QywyRUFBcUQsT0FBakU7QUFDQSw4QkFBSSxVQUFVLENBQUMsT0FBZixpREFBSSxxQkFBb0IsWUFBeEIsRUFDRSxVQUFVLENBQUMsT0FBWCxDQUFtQixZQUFuQixDQUFnQyxNQUFoQyxHQUF1QyxDQUF2QyxDQVB5TixDQU9oTDs7QUFFeEMsRUFBQSxNQUFNLENBQUMsYUFBUCxHQUFxQixFQUFyQjtBQUVILEVBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQXdCLEVBQXhCO0FBRUEsRUFBQSxNQUFNLENBQUMsVUFBUCxHQUFvQixrQkFBVSxRQUFWLENBQXBCO0FBRUcsRUFBQSxNQUFNLENBQUMsS0FBUCxHQUFlLGVBQWY7QUFDQSxFQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsZ0JBQWIsR0FoQndOLENBbUI1Tjs7QUFHSSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLFdBQXRCO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixhQUFwQjtBQUVBLE1BQUksY0FBYyxHQUFFLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQixnQkFBdEIsRUFBdUMsSUFBdkMsQ0FBcEI7QUFDQSxNQUFJLGtCQUFrQixHQUFHLGNBQWMsQ0FBQyxPQUFmLENBQXVCLElBQWhEO0FBRUEsRUFBQSxNQUFNLENBQUMsR0FBUCxHQUFhLG1CQUFiO0FBQ0EsRUFBQSxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIsa0JBQXpCLEVBQTRDLGtCQUFrQixHQUFDLFNBQS9ELEVBQTBFO0FBQUMsSUFBQSxLQUFLLEVBQUM7QUFBQyxNQUFBLFFBQVEsRUFBQztBQUFWO0FBQVAsR0FBMUU7QUFDSCxFQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUF5QixFQUF6Qjs7QUFHQSxFQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXVCLFlBQ3ZCO0FBQUE7O0FBQ0MsUUFBSSxPQUFPLEdBQUMsSUFBWjtBQUNBLFFBQUksVUFBSixhQUFJLFVBQUosdUNBQUksVUFBVSxDQUFFLE9BQWhCLGlEQUFJLHFCQUFxQixZQUF6QixFQUNHLE9BQU8sVUFBVSxDQUFDLE9BQVgsQ0FBbUIsWUFBMUI7QUFJSCxRQUFJLENBQUEsTUFBTSxTQUFOLElBQUEsTUFBTSxXQUFOLFlBQUEsTUFBTSxDQUFFLFlBQVIsS0FBd0IsU0FBNUIsRUFFTyxxQkFBcUIsQ0FBQyxhQUF0QiwyQkFBb0MsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBdkQsMkRBQW9DLHVCQUFnQyxZQUFoQyxDQUE2QyxFQUFqRixFQUFxRixPQUFyRixFQUE4RixJQUE5RixDQUFtRyxVQUFDLFFBQUQsRUFBYztBQUNySDtBQUNBLFVBQUksUUFBUSxDQUFDLElBQWIsRUFDRSxVQUFVLENBQUMsT0FBWCxDQUFtQixZQUFuQixHQUFrQyxRQUFRLENBQUMsSUFBVCxDQUFjLE1BQWQsQ0FBcUIsVUFBQyxHQUFELEVBQU0sR0FBTixFQUFjO0FBQ2hFLFFBQUEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFKLENBQU8sUUFBUCxFQUFELENBQUgsR0FBeUIsR0FBekI7QUFDQSxlQUFPLEdBQVA7QUFDSixPQUhpQyxFQUcvQixFQUgrQixDQUFsQztBQUlELEtBUEc7QUFRUCxHQWxCRDs7QUFvQkEsRUFBQSxNQUFNLENBQUMsd0JBQVAsR0FBa0MsVUFBUyxPQUFULEVBQWtCLEtBQWxCLEVBQXdCO0FBQ3pEO0FBQ0EsUUFBSSxJQUFJLEdBQUMsT0FBTyxDQUFDLFlBQWpCO0FBQ0EsSUFBQSxJQUFJLENBQUMsZUFBRCxDQUFKLEdBQXNCLEVBQXRCO0FBQ0EsSUFBQSxJQUFJLENBQUMsWUFBRCxDQUFKLEdBQW1CLElBQUksQ0FBQyxJQUFELENBQXZCLENBSnlELENBS3pEOztBQUNBLElBQUEsSUFBSSxDQUFDLGFBQUQsQ0FBSixHQUFvQixFQUFwQjtBQUNBLFFBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxZQUFQLENBQW9CLEdBQXBCLENBQXdCLFVBQVMsQ0FBVCxFQUFZO0FBQUUsYUFBTyxDQUFDLENBQUMsRUFBVDtBQUFhLEtBQW5ELEVBQXFELE9BQXJELENBQTZELElBQUksQ0FBQyxVQUFsRSxDQUFWO0FBQ0EsSUFBQSxPQUFPLENBQUMsWUFBUixHQUFzQixNQUFNLENBQUMsWUFBUCxDQUFvQixHQUFwQixDQUF0QjtBQUNBLElBQUEsT0FBTyxDQUFDLGFBQVIsR0FBd0IsRUFBeEI7QUFFQSxJQUFBLG9CQUFvQixDQUFDLGlCQUFyQixDQUF3QyxJQUFJLENBQUMsVUFBN0MsRUFBeUQsSUFBekQsRUFBaUUsSUFBakUsQ0FBdUUsVUFBQyxJQUFELEVBQVM7QUFDN0UsTUFBQSxJQUFJLENBQUMsSUFBTCxHQUFZLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBVixDQUFvQixVQUFDLElBQUQ7QUFBQSxlQUFVLElBQUksQ0FBQyxXQUFMLElBQWtCLE1BQTVCO0FBQUEsT0FBcEIsQ0FBWjtBQUNDLE1BQUEsTUFBTSxDQUFDLGlCQUFQLENBQXlCLElBQUksQ0FBQyxVQUE5QixJQUE0QyxJQUFJLENBQUMsSUFBakQ7QUFDSCxLQUhEO0FBSUEsR0FmRDs7QUFtQkcsRUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBNkIsWUFBWTtBQUNyQyxJQUFBLGVBQWUsQ0FBQyxtQkFBaEIsQ0FBb0MsTUFBTSxDQUFDLGNBQTNDLEVBQTJELElBQTNELENBQWdFLFVBQVMsSUFBVCxFQUFlO0FBQzNFLE1BQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsSUFBSSxDQUFDLElBQTNCO0FBQ0gsS0FGRCxFQUVFLFVBQVMsS0FBVCxFQUFlO0FBQ2IsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsSUFBTixDQUFXLEdBQXZDLEVBQTJDLE9BQTNDO0FBQ0gsS0FKRDtBQU1ILEdBUEQ7O0FBVUYsRUFBQSxNQUFNLENBQUMsc0JBQVAsd0VBQWdDO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsbUJBR2IsZUFBZSxDQUFDLG1CQUFoQiwyQkFBb0MsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBdkQsMkRBQW9DLHVCQUFnQyxZQUFoQyxDQUE2QyxFQUFqRixDQUhhOztBQUFBO0FBRzNCLFlBQUEsSUFIMkI7QUFJeEIsWUFBQSxHQUp3QixHQUlsQixJQUFJLENBQUMsSUFKYTtBQUsvQixnQkFBSSxHQUFHLENBQUMsVUFBSixJQUFnQixTQUFwQixFQUErQixHQUFHLENBQUMsVUFBSixHQUFlLEVBQWYsQ0FMQSxDQU0vQjs7QUFDSSxZQUFBLFNBUDJCLEdBT2YsRUFQZTtBQVEvQixZQUFBLE1BQU0sQ0FBQyxvQkFBUCxDQUE0QixPQUE1QixDQUFxQyxVQUFDLElBQUQsRUFBVTtBQUFBOztBQUM5QyxrQkFBSSxJQUFJLFNBQUosSUFBQSxJQUFJLFdBQUosMkJBQUEsSUFBSSxDQUFFLGFBQU4sb0VBQXFCLEVBQXJCLElBQTZCLElBQTdCLGFBQTZCLElBQTdCLHFDQUE2QixJQUFJLENBQUUsWUFBbkMsK0NBQTZCLG1CQUFvQixFQUFqRCxJQUF1RCxFQUFDLElBQUQsYUFBQyxJQUFELGVBQUMsSUFBSSxDQUFFLFNBQVAsQ0FBM0QsRUFBNkU7QUFDNUUsb0JBQUksV0FBVyxHQUFHLFVBQVUsSUFBSSxDQUFDLGFBQUwsQ0FBbUIsRUFBN0IsR0FBbUMsR0FBbkMsR0FBeUMsR0FBRyxDQUFDLEVBQS9EO0FBQ0EsZ0JBQUEsU0FBUyxDQUFDLElBQVYsQ0FDQTtBQUFDLGlDQUFlLFdBQWhCO0FBQ0EsZ0NBQWEsSUFBSSxDQUFDLFlBQUwsQ0FBa0IsRUFEL0I7QUFFQSw4QkFBWSxJQUFJLENBQUMsUUFGakI7QUFHQSxrREFBZ0MsSUFBSSxDQUFDLDRCQUhyQztBQUlBLCtDQUE4QixJQUFJLENBQUM7QUFKbkMsaUJBREE7QUFPQTtBQUNELGFBWEQ7O0FBUitCLGtCQXFCM0IsU0FBUyxDQUFDLE1BQVYsSUFBa0IsQ0FyQlM7QUFBQTtBQUFBO0FBQUE7O0FBc0I5QixZQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLGtCQUE1QixFQUErQyxNQUEvQztBQXRCOEI7O0FBQUE7QUEyQi9CLFlBQUEsR0FBRyxDQUFDLFVBQUosQ0FBZSx5QkFBZixHQUEyQyxTQUEzQyxDQTNCK0IsQ0EyQnNCOztBQUVsRCxZQUFBLGVBQWUsQ0FBQyxvQkFBaEIsQ0FBc0MsR0FBdEMsRUFBMkMsSUFBM0MsQ0FDRixVQUFTLElBQVQsRUFBZTtBQUNYLGNBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsUUFBNUIsRUFBcUMsU0FBckM7QUFDSCxhQUhDLEVBR0EsVUFBUyxLQUFULEVBQWU7QUFDYixjQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxPQUFsQyxFQUEwQyxPQUExQztBQUNGLGFBTEE7O0FBN0I0QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUFoQzs7QUFzQ0QsRUFBQSxNQUFNLENBQUMsYUFBUCxHQUF1QixVQUFTLElBQVQsRUFBZSxLQUFmLEVBQXNCO0FBQzVDLElBQUEsSUFBSSxDQUFDLFNBQUwsR0FBZSxJQUFmO0FBRUEsR0FIRDs7QUFLQSxFQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQW9CLFlBQVU7QUFFN0IsUUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBWixFQUFrQyxNQUFNLENBQUMsb0JBQVAsR0FBNEIsRUFBNUI7QUFDbEMsSUFBQSxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsSUFBNUIsQ0FBa0M7QUFDakMsTUFBQSxhQUFhLEVBQUUsRUFEa0I7QUFFakMsTUFBQSxZQUFZLEVBQUU7QUFGbUIsS0FBbEM7QUFJQSxHQVBEOztBQVNBLEVBQUEsTUFBTSxDQUFDLGFBQVA7QUFFQSxFQUFBLE1BQU0sQ0FBQyxNQUFQLENBQWMsWUFBVztBQUFFO0FBQ3hCLFdBQU8sVUFBVSxDQUFDLE9BQVgsQ0FBbUIsWUFBMUI7QUFBdUMsR0FEMUM7QUFBQSx3RUFFRyxrQkFBZ0IsUUFBaEIsRUFBMEIsUUFBMUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG9CQUtJLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFMeEI7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQSxxQkFPOEIsTUFBTSxDQUFDLGdCQUFQLEVBUDlCOztBQUFBO0FBT0UsY0FBQSxNQUFNLENBQUMsWUFQVDtBQVNFO0FBRUE7QUFDQSxjQUFBLE1BQU0sQ0FBQyxvQkFBUCxHQUE4QixVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixZQUEvQixDQUE0QyxVQUE1QyxDQUF1RCx5QkFBckY7QUFFQSxrQkFBSSxNQUFNLENBQUMsb0JBQVgsRUFDRSxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsT0FBNUIsQ0FBc0MsVUFBQyxJQUFELEVBQ3RDO0FBQ0Msb0JBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxZQUFQLENBQW9CLEdBQXBCLENBQXdCLFVBQVMsQ0FBVCxFQUFZO0FBQUUseUJBQU8sQ0FBQyxDQUFDLEVBQVQ7QUFBYSxpQkFBbkQsRUFBcUQsT0FBckQsQ0FBNkQsSUFBSSxDQUFDLFVBQWxFLENBQVY7QUFDQSxnQkFBQSxJQUFJLENBQUMsWUFBTCxHQUFvQixNQUFNLENBQUMsWUFBUCxDQUFvQixHQUFwQixDQUFwQjtBQUVBLGdCQUFBLG9CQUFvQixDQUFDLGlCQUFyQixDQUF3QyxJQUFJLENBQUMsVUFBN0MsRUFBeUQsSUFBekQsRUFDQyxJQURELENBQ08sVUFBQyxJQUFELEVBQVM7QUFDWDtBQUNBLGtCQUFBLElBQUksQ0FBQyxJQUFMLEdBQVksSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFWLENBQW9CLFVBQUMsSUFBRDtBQUFBLDJCQUFVLElBQUksQ0FBQyxXQUFMLElBQWtCLE1BQTVCO0FBQUEsbUJBQXBCLENBQVo7QUFDQSxrQkFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsSUFBSSxDQUFDLFVBQTlCLElBQTRDLElBQUksQ0FBQyxJQUFqRDtBQUNBLHNCQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQUwsQ0FBaUIsU0FBakIsQ0FBMkIsQ0FBM0IsRUFBOEIsS0FBOUIsQ0FBb0MsR0FBcEMsRUFBeUMsQ0FBekMsQ0FBRCxDQUFmO0FBQ0Esc0JBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFMLENBQVUsR0FBVixDQUFjLFVBQVMsQ0FBVCxFQUFZO0FBQUUsMkJBQU8sQ0FBQyxDQUFDLEVBQVQ7QUFBYSxtQkFBekMsRUFBMkMsT0FBM0MsQ0FBbUQsRUFBbkQsQ0FBVjtBQUNBLHNCQUFJLEdBQUcsSUFBRSxDQUFULEVBQVksSUFBSSxDQUFDLGFBQUwsR0FBcUIsSUFBSSxDQUFDLElBQUwsQ0FBVSxHQUFWLENBQXJCO0FBQ2YsaUJBUkY7QUFVQSxlQWZEOztBQWZKO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEtBRkg7O0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBcUNBLEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsWUFBVyxDQUNoQztBQUNILEdBRkQ7O0FBSUcsRUFBQSxZQUFZLENBQUMsY0FBYixDQUE0QixXQUE1QixFQUF3QyxJQUF4QyxFQUE4QyxJQUE5QyxDQUFtRCxVQUFVLElBQVYsRUFBZ0I7QUFDdkMsSUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBMEIsSUFBSSxDQUFDLElBQS9CO0FBRTNCLEdBSEQsRUFqTHdOLENBdUwzTjs7QUFDRyxFQUFBLE1BQU0sQ0FBQyxnQkFBUCx3RUFBMEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUV2QixnQkFBSSxNQUFNLENBQUMsWUFBUCxJQUFxQixTQUF6QixFQUFvQyxNQUFNLENBQUMsWUFBUCxHQUFvQixFQUFwQjtBQUZiLDhDQUdoQixvQkFBb0IsQ0FBQyx3QkFBckIsQ0FBOEMsSUFBOUMsRUFBbUQsU0FBbkQsRUFBOEQsSUFBOUQsQ0FDRixVQUFTLElBQVQsRUFBZTtBQUNSLHFCQUFRLElBQUksQ0FBQyxJQUFiO0FBQ04sYUFIQyxFQUdBLFVBQVMsS0FBVCxFQUFlO0FBQ2QsY0FBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDUCxhQUxNLENBSGdCOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdBQTFCOztBQWFBLEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBbUIsWUFDdEI7QUFDUyxJQUFBLFdBQVcsQ0FBQyxjQUFaLENBQTJCLFFBQTNCLEVBQXFDLElBQXJDLENBQTBDLFVBQVMsSUFBVCxFQUFjO0FBQ3hELE1BQUEsTUFBTSxDQUFDLFNBQVAsR0FBbUIsSUFBSSxDQUFDLElBQXhCO0FBQ0EsTUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBMEIsSUFBMUI7QUFDTCxLQUhLO0FBS0wsR0FQRDs7QUFTSSxFQUFBLE1BQU0sQ0FBQyxTQUFQOztBQUVBLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsVUFBVSxJQUFWLEVBQWUsS0FBZixFQUFzQjtBQUNwQyxJQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLElBQXRCO0FBQ1QsSUFBQSxNQUFNLENBQUMsZ0JBQVAsQ0FBd0IsS0FBeEIsSUFBaUMsT0FBTyxDQUFDLElBQVIsQ0FBYSxJQUFiLENBQWpDO0FBQ1MsSUFBQSxNQUFNLENBQUMsT0FBUCxHQUFlLEtBQWY7QUFDQSxJQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXVCLElBQXZCO0FBQ0EsSUFBQSxNQUFNLENBQUMsYUFBUCxHQUFxQixLQUFyQjtBQUNILEdBTkQ7O0FBVUEsRUFBQSxNQUFNLENBQUMsaUJBQVAsR0FBMkIsVUFBVSxJQUFWLEVBQWdCO0FBQ3hDO0FBQ1IsUUFBSSxJQUFJLElBQUUsS0FBTixJQUFlLE1BQU0sQ0FBQyxhQUFQLElBQXdCLENBQTNDLEVBQThDO0FBQzdDLE1BQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxNQUFNLENBQUMsYUFBcEIsSUFBcUMsTUFBTSxDQUFDLGdCQUFQLENBQXdCLE1BQU0sQ0FBQyxhQUEvQixDQUFyQztBQUNBOztBQUVELElBQUEsTUFBTSxDQUFDLGVBQVAsR0FBdUIsSUFBdkI7QUFDUyxJQUFBLE1BQU0sQ0FBQyxPQUFQLEdBQWlCLElBQWpCO0FBQ0EsSUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixJQUF0QjtBQUNBLElBQUEsTUFBTSxDQUFDLFVBQVAsR0FBa0IsSUFBbEI7QUFDVCxJQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXVCLElBQXZCO0FBQ00sR0FYRDs7QUFjRCxFQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQixZQUFZO0FBQ25DLElBQUEsV0FBVyxDQUFDLGdCQUFaLEdBQStCLElBQS9CLENBQW9DLFVBQVMsSUFBVCxFQUFjO0FBQ2xELE1BQUEsTUFBTSxDQUFDLEtBQVAsR0FBZSxJQUFJLENBQUMsSUFBcEI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQW1CLElBQW5CO0FBQ0wsS0FISztBQUtELEdBTkYsQ0F4T3FOLENBK094Tjs7O0FBQ0ksRUFBQSxNQUFNLENBQUMsZ0JBQVA7O0FBRUQsRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQixVQUFVLElBQVYsRUFBZ0I7QUFDbEMsSUFBQSxNQUFNLENBQUMsT0FBUCxHQUFlLElBQWY7QUFDQSxJQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLENBQWxCO0FBQ0EsSUFBQSxNQUFNLENBQUMsZUFBUCxHQUF1QixJQUF2QjtBQUNBLElBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0I7QUFBQyxnQkFBUyxJQUFWO0FBQWUsY0FBTztBQUF0QixLQUF0Qjs7QUFDQSxRQUFJLElBQUksSUFBRSxTQUFWLEVBQ0E7QUFDRSxNQUFBLElBQUksQ0FBQyxZQUFMO0FBQ0EsVUFBSSxJQUFJLENBQUMsUUFBTCxJQUFlLFNBQW5CLEVBQThCLElBQUksQ0FBQyxRQUFMLENBQWMsYUFBZCxHQUZoQyxDQUdFOztBQUNBLFVBQUksSUFBSSxDQUFDLFVBQUwsSUFBaUIsU0FBckIsRUFBZ0MsSUFBSSxDQUFDLFVBQUwsQ0FBZ0IsYUFBaEI7QUFDaEMsVUFBSSxJQUFJLENBQUMsU0FBTCxJQUFnQixTQUFwQixFQUErQixJQUFJLENBQUMsU0FBTCxDQUFlLGFBQWY7QUFDL0IsVUFBSSxJQUFJLENBQUMsS0FBTCxJQUFZLFNBQWhCLEVBQTJCLElBQUksQ0FBQyxLQUFMLENBQVcsYUFBWDtBQUMzQixVQUFJLElBQUksQ0FBQyxJQUFMLElBQVcsU0FBZixFQUEwQixJQUFJLENBQUMsSUFBTCxDQUFVLGFBQVY7QUFDM0I7QUFDSCxHQWZEOztBQWlCSCxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLFVBQVUsSUFBVixFQUFnQjtBQUNsQyxJQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLElBQWxCO0FBQ0EsSUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixDQUFsQjs7QUFHQSxRQUFJLElBQUksSUFBRSxTQUFWLEVBQ0E7QUFDRSxNQUFBLElBQUksQ0FBQyxZQUFMO0FBQ0EsVUFBSSxJQUFJLENBQUMsS0FBTCxJQUFZLFNBQWhCLEVBQTJCLElBQUksQ0FBQyxLQUFMLENBQVcsYUFBWDtBQUM1QjtBQUNILEdBVko7O0FBV0ksRUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixVQUFVLElBQVYsRUFBZ0I7QUFDdEMsSUFBQSxJQUFJLENBQUMsYUFBTDs7QUFDQSxRQUFJLElBQUksQ0FBQyxLQUFMLENBQVcsTUFBWCxJQUFxQixJQUFJLENBQUMsTUFBTCxDQUFZLE1BQXJDLEVBQ0E7QUFDRSxNQUFBLFdBQVcsQ0FBQyxhQUFaLENBQTBCLE1BQU0sQ0FBQyxhQUFqQyxFQUFnRCxJQUFoRCxDQUFxRCxVQUFTLElBQVQsRUFBYztBQUMvRCxRQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxHQUFqQyxFQUFxQyxTQUFyQztBQUNILE9BRkQsRUFHQSxVQUFTLEtBQVQsRUFBZTtBQUNQLFFBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBRVAsT0FORDtBQU9ILEtBVEMsTUFTSSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0Qiw0QkFBNUIsRUFBeUQsU0FBekQ7QUFDTixHQVpBOztBQWNBLEVBQUEsTUFBTSxDQUFDLGFBQVAsR0FBdUIsVUFBVSxPQUFWLEVBQW1CO0FBQ3hDLElBQUEsV0FBVyxDQUFDLGFBQVosQ0FBMEIsT0FBMUIsRUFBbUMsSUFBbkMsQ0FBd0MsVUFBUyxJQUFULEVBQWM7QUFDaEQsTUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixnQkFBcEIsR0FBdUMsSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFqRDtBQUNBLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxHQUF0QyxFQUEwQyxTQUExQztBQUNILEtBSEgsRUFJRSxVQUFTLEtBQVQsRUFBZTtBQUNQLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLElBQU4sQ0FBVyxHQUF2QyxFQUEyQyxPQUEzQztBQUVQLEtBUEg7QUFTRCxHQVZEOztBQVlFLEVBQUEsTUFBTSxDQUFDLHFCQUFQLEdBQStCLFlBQVk7QUFHekMsUUFBSSxlQUFlLEdBQUcsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsTUFBaEIsR0FBdUIsY0FBdkIsR0FBc0MsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsZ0JBQWhGO0FBRUMsSUFBQSxNQUFNLENBQUMsaUJBQVAsR0FBMkIsSUFBM0I7QUFFTyxJQUFBLFNBQVMsQ0FBQyxTQUFWLENBQW9CLFNBQXBCLENBQThCLGVBQTlCLEVBQStDLElBQS9DLENBQ0ksWUFBTTtBQUNGLE1BQUEsUUFBUSxDQUFDLFlBQVU7QUFBQyxRQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUEyQixLQUEzQjtBQUFrQyxPQUE5QyxFQUErQyxJQUEvQyxDQUFSO0FBQ0gsS0FITCxFQUlJLFlBQU07QUFBSztBQUNQLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsMEJBQTVCLEVBQXVELE9BQXZEO0FBQ0EsTUFBQSxRQUFRLENBQUMsWUFBVTtBQUFDLFFBQUEsTUFBTSxDQUFDLGlCQUFQLEdBQTJCLEtBQTNCO0FBQWtDLE9BQTlDLEVBQStDLElBQS9DLENBQVI7QUFDUCxLQVBEO0FBVVgsR0FqQkM7O0FBbUJKLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsVUFBVSxPQUFWLEVBQW1CO0FBQ2hDLFFBQUksT0FBSixFQUNLLFdBQVcsQ0FBQyxRQUFaLENBQXFCLE1BQU0sQ0FBQyxZQUE1QixFQUEwQyxJQUExQyxDQUNJLFVBQVMsSUFBVCxFQUFlO0FBQ1IsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLEdBQXRDLEVBQTBDLFNBQTFDO0FBQ0EsTUFBQSxNQUFNLENBQUMsWUFBUCxHQUFvQixJQUFJLENBQUMsSUFBTCxDQUFVLElBQTlCOztBQUVBLFVBQUksTUFBTSxDQUFDLE9BQVgsRUFBb0I7QUFDZixRQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsSUFBYixDQUFrQixNQUFNLENBQUMsWUFBekI7QUFDQSxRQUFBLE1BQU0sQ0FBQyxPQUFQLEdBQWUsS0FBZjtBQUNKLE9BSEQsTUFJSyxNQUFNLENBQUMsS0FBUCxDQUFhLE1BQU0sQ0FBQyxhQUFwQixJQUFxQyxNQUFNLENBQUMsWUFBNUM7QUFFVCxLQVhQLEVBV1EsVUFBUyxLQUFULEVBQWU7QUFDYixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxJQUFOLENBQVcsR0FBdkMsRUFBMkMsT0FBM0M7QUFDTCxLQWJMO0FBZVQsR0FqQkQ7QUFvQkQ7O0FBRUUsU0FBUyxVQUFULENBQXFCLE1BQXJCLEVBQTZCLFVBQTdCLEVBQXlDLFFBQXpDLEVBQWtELFdBQWxELEVBQThELGdCQUE5RCxFQUErRSxlQUEvRSxFQUErRixXQUEvRixFQUEyRyxZQUEzRyxFQUF3SCxtQkFBeEgsRUFBNkk7QUFFL0ksTUFBSSxJQUFJLEdBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEM7QUFDQSxFQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWdCLFlBQWhCLENBSCtJLENBTW5KOztBQUNHLEVBQUEsTUFBTSxDQUFDLEtBQVAsR0FBZSxlQUFmO0FBQ0EsRUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLGdCQUFiO0FBR0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixXQUF0QjtBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsYUFBcEI7QUFFQSxNQUFJLGNBQWMsR0FBRSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsZ0JBQXRCLEVBQXVDLElBQXZDLENBQXBCO0FBQ0EsTUFBSSxrQkFBa0IsR0FBRyxjQUFjLENBQUMsT0FBZixDQUF1QixJQUFoRDtBQUNBLEVBQUEsTUFBTSxDQUFDLEdBQVAsR0FBYSxtQkFBYjtBQUNBLEVBQUEsTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLGtCQUF6QixFQUE0QyxrQkFBa0IsR0FBQyxTQUEvRCxFQUEwRTtBQUFDLElBQUEsS0FBSyxFQUFDO0FBQUMsTUFBQSxRQUFRLEVBQUM7QUFBVjtBQUFQLEdBQTFFO0FBR0E7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNPLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0I7QUFBQyxJQUFBLE9BQU8sRUFBQztBQUFULEdBQWxCOztBQUNDLEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBbUIsVUFBVSxLQUFWLEVBQWdCLEtBQWhCLEVBQXVCO0FBQ3hDO0FBQ04sSUFBQSxNQUFNLENBQUMsYUFBUCxHQUF1QixLQUF2QjtBQUNNLElBQUEsTUFBTSxDQUFDLGNBQVAsR0FBc0IsS0FBdEI7QUFDUixJQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXFCLEtBQXJCO0FBQ1MsR0FMSDs7QUFPQyxFQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXVCLFlBQVk7QUFDaEMsSUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQjtBQUFDLE1BQUEsT0FBTyxFQUFDO0FBQVQsS0FBbEI7QUFDQSxJQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXVCLElBQXZCO0FBQ0EsSUFBQSxNQUFNLENBQUMsY0FBUCxHQUFzQixLQUF0QjtBQUVULEdBTE07O0FBT0QsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixVQUFVLElBQVYsRUFBZ0I7QUFFbEMsUUFBSSxJQUFJLElBQUUsU0FBVixFQUNBO0FBQ0ksTUFBQSxJQUFJLENBQUMsWUFBTDtBQUNBLFVBQUksSUFBSSxDQUFDLFNBQUwsSUFBZ0IsU0FBcEIsRUFBK0IsSUFBSSxDQUFDLFNBQUwsQ0FBZSxhQUFmO0FBQ2xDOztBQUNGLElBQUEsTUFBTSxDQUFDLGNBQVAsR0FBc0IsSUFBdEI7QUFDSCxHQVJBOztBQVVELEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsWUFBWTtBQUMzQixJQUFBLFdBQVcsQ0FBQyxjQUFaLENBQTJCLE9BQTNCLEVBQW9DLElBQXBDLENBQXlDLFVBQVMsSUFBVCxFQUFjO0FBQ3ZELE1BQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsSUFBSSxDQUFDLElBQXZCO0FBQ0wsS0FGSztBQUdELEdBSkY7O0FBS0UsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFvQixLQUFwQjs7QUFDRixFQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUEyQixZQUFZO0FBRXBDLElBQUEsV0FBVyxDQUFDLGlCQUFaLEdBQWdDLElBQWhDLENBQXFDLFVBQVMsSUFBVCxFQUFjO0FBQ25ELE1BQUEsTUFBTSxDQUFDLE1BQVAsR0FBZ0IsSUFBSSxDQUFDLElBQXJCO0FBQ0MsTUFBQSxNQUFNLENBQUMsWUFBUCxHQUFvQixJQUFwQjtBQUdOLEtBTEssRUFNTSxVQUFTLEtBQVQsRUFBZTtBQUFBOztBQUNYLFVBQUksR0FBSjs7QUFDQSxVQUFJLEtBQUssQ0FBQyxHQUFOLG1CQUFhLEtBQUssQ0FBQyxJQUFuQix3Q0FBYSxZQUFZLEdBQTdCLEVBQWlDO0FBQUE7O0FBRWpDLFlBQUksS0FBSyxDQUFDLEdBQVYsRUFBZSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQVo7QUFDZiw0QkFBSSxLQUFLLENBQUMsSUFBVix5Q0FBSSxhQUFZLEdBQWhCLEVBQXFCLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBTixDQUFXLEdBQWpCO0FBQ3BCLE9BSkQsTUFJTSxHQUFHLEdBQUcsS0FBTjs7QUFFTixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxJQUFOLENBQVcsR0FBdkMsRUFBMkMsT0FBM0M7QUFDSCxLQWZQO0FBaUJELEdBbkJGLENBekQ2SSxDQWlGNUk7OztBQUNBLEVBQUEsTUFBTSxDQUFDLFFBQVA7QUFDQSxFQUFBLE1BQU0sQ0FBQyxpQkFBUDs7QUFJRixFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQW1CLFVBQVUsYUFBVixFQUF3QixPQUF4QixFQUFpQztBQUUvQyxRQUFJLE9BQUosRUFBYTtBQUVYLE1BQUEsV0FBVyxDQUFDLFNBQVosQ0FBc0IsYUFBdEIsRUFBcUMsSUFBckMsQ0FBMEMsVUFBUyxJQUFULEVBQWU7QUFHbkMsUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsSUFBTCxDQUFVLEdBQXRDLEVBQTBDLFNBQTFDO0FBQ0EsUUFBQSxNQUFNLENBQUMsYUFBUCxHQUFxQixJQUFJLENBQUMsSUFBTCxDQUFVLEtBQS9COztBQUNBLFlBQUksYUFBYSxDQUFDLEVBQWQsSUFBb0IsSUFBeEIsRUFDQTtBQUFBOztBQUNDLFVBQUEsYUFBYSxDQUFDLE9BQWQsQ0FBc0IsRUFBdEIsR0FBeUIsTUFBTSxDQUFDLGFBQVAsQ0FBcUIsRUFBOUM7QUFDQSxVQUFBLGFBQWEsQ0FBQyxFQUFkLDRCQUFpQixNQUFNLENBQUMsYUFBeEIsMERBQWlCLHNCQUFzQixHQUF2QztBQUNBLFVBQUEsTUFBTSxDQUFDLE1BQVAsQ0FBYyxJQUFkLENBQW1CLGFBQW5CO0FBQ0EsU0FMRCxNQUtLO0FBQ0gsVUFBQSxNQUFNLENBQUMsTUFBUCxDQUFjLE1BQU0sQ0FBQyxhQUFyQixJQUFzQyxhQUF0QztBQUNEOztBQUVELFFBQUEsTUFBTSxDQUFDLGFBQVA7QUFFSixPQWhCbEIsRUFnQm1CLFVBQVMsS0FBVCxFQUFlO0FBRWIsUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsSUFBTixDQUFXLEdBQXZDLEVBQTJDLE9BQTNDO0FBQ0wsT0FuQmhCO0FBcUJBO0FBR04sR0E1QkQ7QUErQkQ7O0FBSUUsU0FBUyxpQkFBVCxDQUE0QixNQUE1QixFQUFvQyxVQUFwQyxFQUFnRCxRQUFoRCxFQUF5RCxXQUF6RCxFQUFxRSxnQkFBckUsRUFBc0YsZUFBdEYsRUFBc0csWUFBdEcsRUFBbUgsbUJBQW5ILEVBQXVJLG9CQUF2SSxFQUNQO0FBQUE7O0FBRUksRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFnQixtQkFBaEI7QUFDQSxNQUFJLElBQUksR0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QztBQUNILE1BQUksUUFBUSxxREFBRyxVQUFVLENBQUMsT0FBZCxrRkFBRyxxQkFBb0IsV0FBdkIsb0ZBQUcsc0JBQWlDLE9BQXBDLDJEQUFHLHVCQUEwQyxJQUE3QywyRUFBcUQsT0FBakUsQ0FKRCxDQU1JOztBQUNILEVBQUEsTUFBTSxDQUFDLEtBQVAsR0FBZSxrQkFBVSxRQUFWLENBQWY7QUFDQSxFQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLEVBQWxCO0FBQ0EsRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFtQixFQUFuQjtBQUNBLEVBQUEsTUFBTSxDQUFDLGlCQUFQLEdBQXlCLEVBQXpCO0FBQ0EsRUFBQSxNQUFNLENBQUMsaUJBQVAsR0FBeUIsRUFBekI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUF3QixFQUF4QjtBQUNBLEVBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQXdCLEVBQXhCO0FBRUcsRUFBQSxNQUFNLENBQUMsS0FBUCxHQUFlLGVBQWY7QUFDQSxFQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsZ0JBQWI7QUFHQSxNQUFJLGNBQWMsR0FBRSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsZ0JBQXRCLEVBQXVDLElBQXZDLENBQXBCO0FBQ0EsTUFBSSxrQkFBa0IsR0FBRyxjQUFjLENBQUMsT0FBZixDQUF1QixJQUFoRDtBQUVBLEVBQUEsTUFBTSxDQUFDLEdBQVAsR0FBYSxtQkFBYjtBQUNBLEVBQUEsTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLGtCQUF6QixFQUE0QyxrQkFBa0IsR0FBQyxTQUEvRCxFQUEwRTtBQUFDLElBQUEsS0FBSyxFQUFDO0FBQUMsTUFBQSxRQUFRLEVBQUM7QUFBVjtBQUFQLEdBQTFFO0FBR0EsRUFBQSxNQUFNLENBQUMsU0FBUCx3RUFBb0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRXJCLFlBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQTBCLEtBQTFCO0FBRnFCO0FBQUEsbUJBR0UsV0FBVyxDQUFDLGNBQVosQ0FBMkIsUUFBM0IsQ0FIRjs7QUFBQTtBQUdYLFlBQUEsSUFIVztBQUl0QixZQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQW1CLElBQUksQ0FBQyxJQUF4QjtBQUNBLFlBQUEsTUFBTSxDQUFDLFNBQVAsR0FBbUIsRUFBbkI7QUFDQyxZQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLENBQTBCLFVBQUEsSUFBSSxFQUFJO0FBQy9CLGNBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsSUFBSSxDQUFDLEVBQXRCLElBQTRCLElBQUksQ0FBQyxJQUFqQztBQUNILGFBRkEsRUFOcUIsQ0FVdEI7O0FBVnNCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdBQXBCO0FBYUYsRUFBQSxNQUFNLENBQUMsUUFBUCx3RUFBa0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWpCLFlBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsS0FBekI7QUFGaUI7QUFBQSxtQkFHTSxXQUFXLENBQUMsY0FBWixDQUEyQixPQUEzQixDQUhOOztBQUFBO0FBR1AsWUFBQSxJQUhPO0FBSWxCLFlBQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsSUFBSSxDQUFDLElBQXZCO0FBQ0EsWUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixFQUFsQjtBQUNDLFlBQUEsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUFWLENBQW1CLFVBQUEsSUFBSSxFQUFJO0FBQ3hCLGNBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsSUFBSSxDQUFDLEVBQXJCLElBQTJCLElBQUksQ0FBQyxJQUFoQztBQUNBLGFBRkgsRUFOaUIsQ0FVbEI7O0FBVmtCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdBQWxCOztBQWdCQSxFQUFBLE1BQU0sQ0FBQyx1QkFBUCxHQUFnQyxVQUFVLE1BQVYsRUFBaUIsS0FBakIsRUFBd0I7QUFFdEQsSUFBQSxXQUFXLENBQUMsa0JBQVosQ0FBK0IsTUFBL0IsRUFBdUMsSUFBdkMsQ0FBNEMsVUFBUyxJQUFULEVBQWMsQ0FFekQsQ0FGRDtBQUdFLEdBTEo7O0FBU0EsRUFBQSxNQUFNLENBQUMsYUFBUCxHQUF1QixZQUFXO0FBRWhDLElBQUEsTUFBTSxDQUFDLFNBQVAsR0FBaUIsS0FBakI7QUFDQSxJQUFBLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixNQUF6QixHQUFnQyxDQUFoQzs7QUFDQSx1Q0FBMEIsTUFBTSxDQUFDLE9BQVAsQ0FBZSxNQUFNLENBQUMsaUJBQXRCLENBQTFCLHFDQUFvRTtBQUEvRDtBQUFBLFVBQU8sR0FBUDtBQUFBLFVBQVksSUFBWjs7QUFDRixVQUFJLElBQUksSUFBSSxJQUFJLENBQUMsZ0JBQUwsQ0FBc0IsUUFBdEIsQ0FBK0IsTUFBTSxDQUFDLFVBQXRDLENBQVosRUFBK0QsTUFBTSxDQUFDLGlCQUFQLENBQXlCLElBQXpCLENBQThCLElBQTlCO0FBQy9EOztBQUVILElBQUEsUUFBUSxDQUFFLFlBQVU7QUFBQyxNQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQWlCLElBQWpCO0FBQXNCLEtBQW5DLENBQVI7QUFFRCxHQVZEOztBQWFELEVBQUEsTUFBTSxDQUFDLHFCQUFQLHdFQUErQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1CQUNMLFdBQVcsQ0FBQyxpQkFBWixFQURLOztBQUFBO0FBQ2xCLFlBQUEsSUFEa0I7QUFHNUI7QUFDQSxZQUFBLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBVixDQUFtQixVQUFBLElBQUksRUFBSTtBQUFBOztBQUMxQix1Q0FBSyxNQUFNLENBQUMsU0FBWiw4Q0FBSyxrQkFBbUIsSUFBSSxDQUFDLFFBQXhCLENBQUwsRUFDQSxJQUFJLENBQUMsWUFBRCxDQUFKLHlCQUFxQixNQUFNLENBQUMsU0FBNUIsdURBQXFCLG1CQUFtQixJQUFJLENBQUMsUUFBeEIsQ0FBckI7QUFDQSxrQkFBTSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsSUFBSSxDQUFDLGNBQTlCLEtBQWlELFNBQXZELEVBQWtFO0FBQ2xFLGdCQUFBLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixJQUFJLENBQUMsY0FBOUIsSUFBZ0Q7QUFDOUMsa0JBQUEsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUR5QjtBQUU5QyxrQkFBQSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BRmdDO0FBRzlDLGtCQUFBLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFIdUI7QUFJOUMsa0JBQUEsTUFBTSxFQUFFLENBQUM7QUFBQyxvQkFBQSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVY7QUFBb0Isb0JBQUEsSUFBSSxFQUFFLElBQUksQ0FBQztBQUEvQixtQkFBRCxDQUpzQztBQUs5QyxrQkFBQSxLQUFLLEVBQUU7QUFMdUMsaUJBQWhELENBREEsS0FTQyxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsSUFBSSxDQUFDLGNBQTlCLEVBQThDLE1BQTlDLENBQXFELElBQXJELENBQTBEO0FBQUMsZ0JBQUEsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFWO0FBQW9CLGdCQUFBLElBQUksRUFBRSxJQUFJLENBQUM7QUFBL0IsZUFBMUQ7QUFDRCxhQWJELEVBSjRCLENBb0I1QjtBQUNBOztBQXJCNEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0FBL0I7QUEwQkMsRUFBQSxNQUFNLENBQUMsb0JBQVAsd0VBQThCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsbUJBQ0wsV0FBVyxDQUFDLGdCQUFaLEVBREs7O0FBQUE7QUFDbEIsWUFBQSxJQURrQjtBQUc1QjtBQUNBLFlBQUEsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUFWLENBQW1CLFVBQUEsSUFBSSxFQUFJO0FBQUE7O0FBQzFCLHNDQUFLLE1BQU0sQ0FBQyxRQUFaLDZDQUFLLGlCQUFrQixJQUFJLENBQUMsT0FBdkIsQ0FBTCxFQUNBLElBQUksQ0FBQyxXQUFELENBQUosd0JBQW9CLE1BQU0sQ0FBQyxRQUEzQixzREFBb0Isa0JBQWtCLElBQUksQ0FBQyxPQUF2QixDQUFwQjtBQUNBLGtCQUFNLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixJQUFJLENBQUMsY0FBOUIsS0FBaUQsU0FBdkQsRUFBbUU7QUFFbkUsZ0JBQUEsTUFBTSxDQUFDLGlCQUFQLENBQXlCLElBQUksQ0FBQyxjQUE5QixJQUFnRDtBQUM5QyxrQkFBQSxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBRHlCO0FBRTlDLGtCQUFBLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FGZ0M7QUFHOUMsa0JBQUEsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUh1QjtBQUk5QyxrQkFBQSxLQUFLLEVBQUUsQ0FBQztBQUFDLG9CQUFBLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBVjtBQUFtQixvQkFBQSxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQTlCLG1CQUFELENBSnVDO0FBSzlDLGtCQUFBLE1BQU0sRUFBRTtBQUxzQyxpQkFBaEQsQ0FGQSxLQVVDLE1BQU0sQ0FBQyxpQkFBUCxDQUF5QixJQUFJLENBQUMsY0FBOUIsRUFBOEMsS0FBOUMsQ0FBb0QsSUFBcEQsQ0FBeUQ7QUFBQyxnQkFBQSxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQVY7QUFBbUIsZ0JBQUEsSUFBSSxFQUFFLElBQUksQ0FBQztBQUE5QixlQUF6RDtBQUNELGFBZEQsRUFKNEIsQ0FvQjVCO0FBQ0Q7O0FBckI2QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUE5QixHQXZHRixDQStIQzs7QUFDQSxFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQW1CLElBQW5CLENBQXlCLFVBQUMsSUFBRDtBQUFBLFdBQ3pCLE1BQU0sQ0FBQyxRQUFQLEVBRHlCO0FBQUEsR0FBekIsRUFDbUIsSUFEbkIsQ0FDeUIsVUFBQyxJQUFEO0FBQUEsV0FDekIsTUFBTSxDQUFDLG9CQUFQLEVBRHlCO0FBQUEsR0FEekIsRUFFK0IsSUFGL0IsQ0FFcUMsVUFBQyxJQUFEO0FBQUEsV0FDckMsTUFBTSxDQUFDLHFCQUFQLEVBRHFDO0FBQUEsR0FGckMsRUFHZ0MsSUFIaEMsQ0FHc0MsVUFBQyxJQUFELEVBQVU7QUFDL0M7QUFDQztBQUNDLFNBQUssSUFBTSxJQUFYLElBQW1CLE1BQU0sQ0FBQyxpQkFBMUIsRUFBNkM7QUFDNUMsTUFBQSxNQUFNLENBQUMsaUJBQVAsQ0FBeUIsSUFBekIsQ0FBOEIsTUFBTSxDQUFDLGlCQUFQLENBQXlCLElBQXpCLENBQTlCO0FBQ0E7O0FBQ0QsSUFBQSxNQUFNLENBQUMsYUFBUDtBQUNBLElBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQTBCLElBQTFCO0FBRUYsR0FaRDtBQWVBOztBQUVNLFNBQVMsZ0JBQVQsQ0FBMkIsTUFBM0IsRUFBbUMsVUFBbkMsRUFBK0MsU0FBL0MsRUFBMEQsUUFBMUQsRUFBbUUsZUFBbkUsRUFBbUYsWUFBbkYsRUFBZ0csZUFBaEcsRUFBZ0gsZ0JBQWhILEVBQWlJLG1CQUFqSSxFQUFzSjtBQUd6SixFQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWdCLGtCQUFoQjtBQUNBLEVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsWUFBL0IsQ0FBNEMsRUFBcEU7QUFDQSxNQUFJLElBQUksR0FBRyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixPQUEvQixDQUF1QyxFQUFsRCxDQUx5SixDQU16SjtBQUVBOztBQUNEO0FBQ0g7QUFDQTtBQUNBOztBQUNJLEVBQUEsTUFBTSxDQUFDLEtBQVAsR0FBZSxlQUFmO0FBQ0EsRUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLGdCQUFiO0FBQ0EsRUFBQSxNQUFNLENBQUMsT0FBUCxHQUFpQixDQUFqQjtBQUVBLE1BQUksY0FBYyxHQUFFLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQixnQkFBdEIsRUFBdUMsSUFBdkMsQ0FBcEI7QUFDQSxNQUFJLGtCQUFrQixHQUFHLGNBQWMsQ0FBQyxPQUFmLENBQXVCLElBQWhEO0FBQ0EsRUFBQSxNQUFNLENBQUMsR0FBUCxHQUFhLG1CQUFiO0FBQ0EsRUFBQSxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIsa0JBQXpCLEVBQTRDLGtCQUFrQixHQUFDLFNBQS9ELEVBQTBFO0FBQUMsSUFBQSxLQUFLLEVBQUM7QUFBQyxNQUFBLFFBQVEsRUFBQztBQUFWO0FBQVAsR0FBMUU7O0FBRUEsRUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBNkIsWUFBWTtBQUVyQyxJQUFBLGVBQWUsQ0FBQyxtQkFBaEIsQ0FBb0MsTUFBTSxDQUFDLGNBQTNDLEVBQTJELElBQTNELENBQWdFLFVBQVMsSUFBVCxFQUFlO0FBRTNFLE1BQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsSUFBSSxDQUFDLElBQTNCO0FBRUEsTUFBQSxNQUFNLENBQUMsVUFBUCxDQUFrQixLQUFsQixFQUoyRSxDQUsxRTs7QUFDRjtBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVTLEtBakJELEVBaUJFLFVBQVMsS0FBVCxFQUFlO0FBRWIsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsSUFBTixDQUFXLEdBQXZDLEVBQTJDLE9BQTNDO0FBQ0gsS0FwQkQ7QUFzQkgsR0F4QkQ7O0FBMEJBLEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0IsVUFBVSxXQUFWLEVBQXVCO0FBRXZDLElBQUEsZUFBZSxDQUFDLFVBQWhCLENBQTJCLFdBQTNCLEVBQXdDLElBQXhDLENBQTZDLFVBQVMsSUFBVCxFQUFlO0FBQUE7O0FBRXhELE1BQUEsTUFBTSxDQUFDLFFBQVAsaUJBQWtCLElBQUksQ0FBQyxJQUF2QiwrQ0FBa0IsV0FBVyxRQUE3QjtBQUVBLE1BQUEsTUFBTSxDQUFDLEtBQVAsa0JBQWUsSUFBSSxDQUFDLElBQXBCLGdEQUFlLFlBQVcsS0FBMUI7QUFFSCxLQU5ELEVBTUUsVUFBUyxLQUFULEVBQWU7QUFFYixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxJQUFOLENBQVcsR0FBdkMsRUFBMkMsT0FBM0M7QUFDSCxLQVREO0FBV0gsR0FiRDs7QUFjQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLFVBQVMsTUFBVCxFQUN0QjtBQUNJLFdBQU8sSUFBSSxJQUFJLENBQUMsWUFBVCxHQUF3QixNQUF4QixDQUErQixNQUEvQixDQUFQO0FBQ0gsR0FIRDs7QUFJQSxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLFlBQVk7QUFDakMsUUFBSSxNQUFKO0FBQ0EsUUFBSSxNQUFNLENBQUMsWUFBUCxDQUFvQixPQUFwQixJQUErQixJQUFuQyxFQUF5QyxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsT0FBN0IsQ0FBekMsS0FDSyxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsT0FBcEIsQ0FBNEIsUUFBckM7QUFDTCxJQUFBLGVBQWUsQ0FBQyxlQUFoQixDQUFnQyxNQUFoQyxFQUF3QyxJQUF4QyxDQUE2QyxVQUFTLElBQVQsRUFBZTtBQUV4RCxNQUFBLE1BQU0sQ0FBQyxNQUFQLEdBQWdCLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBMUI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxPQUFQLEdBQWlCLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBM0I7QUFFQSxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsR0FBdEMsRUFBMEMsU0FBMUM7QUFHSCxLQVJELEVBUUUsVUFBUyxLQUFULEVBQWU7QUFFYixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNILEtBWEQ7QUFhSCxHQWpCRDs7QUFtQkMsRUFBQSxNQUFNLENBQUMsbUJBQVA7O0FBRUQsRUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBMEIsVUFBVSxPQUFWLEVBQW1CO0FBRXpDLFFBQUksT0FBSixFQUFhO0FBR1QsTUFBQSxlQUFlLENBQUMsb0JBQWhCLENBQXFDLE1BQU0sQ0FBQyxZQUE1QyxFQUEwRCxJQUExRCxDQUErRCxVQUFTLElBQVQsRUFBZTtBQUUxRSxRQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQTVCLGFBQTRCLElBQTVCLHVCQUE0QixJQUFJLENBQUUsR0FBbEMsRUFBc0MsU0FBdEM7QUFFSCxPQUpELEVBSUUsVUFBUyxLQUFULEVBQWU7QUFFYixRQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQTVCLGFBQTRCLEtBQTVCLHVCQUE0QixLQUFLLENBQUUsR0FBbkMsRUFBdUMsT0FBdkM7QUFDSCxPQVBEO0FBUUg7QUFFSixHQWZEO0FBaUJIOztBQUFBOzs7QUNudkNEO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWUsU0FBUyxZQUFULENBQXVCLE1BQXZCLEVBQStCLFVBQS9CLEVBQTJDLHFCQUEzQyxFQUFpRSxvQkFBakUsRUFBc0YsZUFBdEYsRUFBc0csZ0JBQXRHLEVBQXVILFFBQXZILEVBQWlJO0FBRXhJLEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBaUIsY0FBakIsQ0FGd0ksQ0FJeEk7O0FBQ0osRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQjtBQUNsQixJQUFBLFVBQVUsRUFBRSxDQUNaO0FBQUUsTUFBQSxJQUFJLEVBQUUsSUFBUjtBQUFjLE1BQUEsV0FBVyxFQUFFLElBQTNCO0FBQWlDLE1BQUEsSUFBSSxFQUFFLFFBQXZDO0FBQWlELE1BQUEsS0FBSyxFQUFDLElBQXZEO0FBQTRELE1BQUEsWUFBWSxFQUFFLEtBQTFFO0FBQWlGLE1BQUEsT0FBTyxFQUFFO0FBQTFGLEtBRFksRUFFWjtBQUFFLE1BQUEsSUFBSSxFQUFFLDZCQUFSO0FBQXVDLE1BQUEsV0FBVyxFQUFFO0FBQXBELEtBRlksRUFHWjtBQUFFLE1BQUEsSUFBSSxFQUFFLGdDQUFSO0FBQTBDLE1BQUEsV0FBVyxFQUFFO0FBQXZELEtBSFksRUFJWjtBQUFFLE1BQUEsSUFBSSxFQUFFLG9DQUFSO0FBQThDLE1BQUEsV0FBVyxFQUFFO0FBQTNELEtBSlksRUFLWjtBQUNDO0FBQ0E7QUFDQTtBQUNEO0FBQUUsTUFBQSxJQUFJLEVBQUUsaUNBQVI7QUFBMkMsTUFBQSxXQUFXLEVBQUU7QUFBeEQsS0FUWSxDQURNO0FBWWxCLElBQUEsY0FBYyxFQUFFLElBWkU7QUFhbEIsSUFBQSxjQUFjLEVBQUUsSUFiRTtBQWNsQixJQUFBLGdCQUFnQixFQUFFLElBZEE7QUFlbEIsSUFBQSxXQUFXLEVBQUUsS0FmSztBQWdCbEIsSUFBQSx5QkFBeUIsRUFBRyxDQWhCVjtBQWlCbEIsSUFBQSx1QkFBdUIsRUFBRyxDQWpCUjtBQWtCbEIsSUFBQSxlQUFlLEVBQUUsSUFsQkM7QUFtQmxCLElBQUEsd0JBQXdCLEVBQUUsS0FuQlI7QUFvQmxCLElBQUEsb0JBQW9CLEVBQUUsSUFwQko7QUFxQmxCLElBQUEscUJBQXFCLEVBQUUsSUFyQkw7QUFzQmxCLElBQUEsbUJBQW1CLEVBQUUsQ0FBQyxDQUFELEVBQUksRUFBSixFQUFRLEVBQVIsRUFBWSxFQUFaLEVBQWdCLEdBQWhCLEVBQW9CLEdBQXBCLEVBQXdCLEdBQXhCLEVBQTRCLElBQTVCLENBdEJIO0FBdUJsQixJQUFBLHdCQUF3QixFQUFFO0FBdkJSLEdBQXJCO0FBMkJFLE1BQUksaUJBQWlCLEdBQUc7QUFDdEIsSUFBQSxVQUFVLEVBQUUsQ0FEVTtBQUV0QixJQUFBLFFBQVEsRUFBRSxFQUZZO0FBR3RCLElBQUEsSUFBSSxFQUFFO0FBSGdCLEdBQXhCOztBQU9GLEVBQUEsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsYUFBbkIsR0FBbUMsVUFBVSxPQUFWLEVBQW1CO0FBQ2xEO0FBQ0EsSUFBQSxNQUFNLENBQUMsT0FBUCxHQUFpQixPQUFqQjtBQUVFLElBQUEsT0FBTyxDQUFDLFNBQVIsQ0FBa0IsRUFBbEIsQ0FBcUIsbUJBQXJCLENBQXlDLE1BQXpDLEVBQWdELFVBQVMsR0FBVCxFQUFhO0FBRTNELE1BQUEsTUFBTSxDQUFDLFlBQVAsR0FBb0IsR0FBRyxDQUFDLFVBQXhCO0FBQ0EsTUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixHQUFHLENBQUMsTUFBSixDQUFXLEVBQWpDO0FBQ0EsTUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsR0FBRyxDQUFDLE1BQWhDO0FBQ0QsS0FMRDtBQU1KLEdBVkY7O0FBY0gsRUFBQSxNQUFNLENBQUMsVUFBUCxHQUFvQixVQUFTLFFBQVQsRUFBa0IsUUFBbEIsRUFBMkIsUUFBM0IsRUFBb0MsU0FBcEMsRUFBOEM7QUFHL0QsUUFBSSxJQUFJLEdBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEM7QUFFQSxRQUFJLFFBQVEsSUFBRSxTQUFkLEVBQXlCLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxVQUE3QjtBQUV6QixRQUFJLFNBQVMsSUFBRSxTQUFmLEVBQTBCLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxRQUE5Qjs7QUFFMUIsUUFBSSxJQUFJLENBQUMsSUFBTCxDQUFVLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLFNBQTVCLElBQXVDLFFBQTNDLEVBQ0E7QUFDRSxNQUFBLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBTCxDQUFVLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLFNBQTVCLENBQVg7QUFDRDs7QUFHRCxJQUFBLG9CQUFvQixDQUFDLG1DQUFyQixDQUF5RCxJQUF6RCxFQUE4RCxNQUE5RCxFQUFxRSxRQUFyRSxFQUE4RSxRQUE5RSxFQUF1RixRQUF2RixFQUFnRyxTQUFoRyxFQUEyRyxJQUEzRyxDQUFnSCxVQUFTLElBQVQsRUFBYztBQUVoRyxNQUFBLE1BQU0sQ0FBQyxXQUFQLENBQW1CLElBQW5CLEdBQTBCLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBcEM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLElBQUksQ0FBQyxJQUFMLENBQVUsSUFBNUI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLElBQUksQ0FBQyxJQUFMLENBQVUsUUFBaEM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLElBQUksQ0FBQyxJQUFMLENBQVUsS0FBNUI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQW1CLFFBQW5CO0FBQ0EsTUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixJQUFJLENBQUMsSUFBTCxDQUFVLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLFNBQTVCLENBQWxCO0FBQ0EsTUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixTQUFsQjtBQUNBLE1BQUEsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsVUFBbkIsR0FBOEIsTUFBTSxDQUFDLFVBQXJDO0FBQ0EsTUFBQSxNQUFNLENBQUMsV0FBUCxHQUFtQixJQUFuQjtBQUNBLEtBWDlCLEVBVytCLFVBQVMsS0FBVCxFQUFlO0FBRWpCLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0EsTUFBQSxNQUFNLENBQUMsV0FBUCxHQUFtQixLQUFuQjtBQUNILEtBZjFCO0FBZ0JHLEdBL0JOOztBQWlDRyxFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLFlBQVU7QUFDM0IsSUFBQSxNQUFNLENBQUMsVUFBUCxDQUFrQixNQUFNLENBQUMsUUFBekIsRUFBa0MsTUFBTSxDQUFDLFlBQXpDLEVBQXNELE1BQU0sQ0FBQyxXQUE3RCxFQUF5RSxNQUFNLENBQUMsUUFBaEY7QUFDRCxHQUZILENBdEY0SSxDQTBGNUk7OztBQUNBLEVBQUEsTUFBTSxDQUFDLFdBQVA7QUFJQzs7QUFDRSxTQUFTLFlBQVQsQ0FBdUIsUUFBdkIsRUFBZ0MsTUFBaEMsRUFBd0MsVUFBeEMsRUFBb0QscUJBQXBELEVBQTBFLG9CQUExRSxFQUErRixlQUEvRixFQUErRyxpQkFBL0csRUFBaUksZ0JBQWpJLEVBQWtKLHFCQUFsSixFQUF3SyxZQUF4SyxFQUFxTCxlQUFyTCxFQUFxTSxjQUFyTSxFQUFvTixRQUFwTixFQUE2Tix5QkFBN04sRUFBd1A7QUFFelA7QUFDQSxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLFlBQVksQ0FBQyxRQUFyQztBQUNBLEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBb0IsS0FBcEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLFlBQVksQ0FBQyxFQUEvQjtBQUNBLEVBQUEsTUFBTSxDQUFDLEtBQVAsR0FBZSxlQUFmO0FBQ0EsRUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBNkIsS0FBN0I7QUFDQSxFQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWdCLGNBQWhCO0FBRUEsRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFpQixZQUFZLENBQUMsUUFBOUI7QUFFQSxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCO0FBQUMsSUFBQSxnQkFBZ0IsRUFBQyxNQUFNLENBQUM7QUFBekIsR0FBeEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFNBQXRCLEdBQWdDLE1BQU0sQ0FBQyxRQUF2QztBQUNBLEVBQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsZUFBdEIsR0FBc0MsSUFBdEM7QUFDQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQW9CLE1BQXBCLENBZnlQLENBaUJ6UDs7QUFFQSxFQUFBLHFCQUFxQixDQUFDLDJCQUF0QjtBQUVBLEVBQUEseUJBQXlCLENBQUMsb0JBQTFCO0FBRUEsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixJQUF0QjtBQUNBLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0I7QUFBQyxJQUFBLG1CQUFtQixFQUFDO0FBQXJCLEdBQWxCO0FBQ0EsRUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixvQkFBaEIsR0FBcUMsQ0FBQyxDQUF0QztBQUNBLEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBa0I7QUFBQyxJQUFBLE9BQU8sRUFBQztBQUFDLE1BQUEsTUFBTSxFQUFFLGVBQWUsQ0FBQyxnQkFBaEIsRUFBVDtBQUE0QyxNQUFBLElBQUksRUFBQztBQUFqRDtBQUFULEdBQWxCO0FBQ0MsTUFBSSxJQUFJLEdBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEMsQ0EzQndQLENBNEJ6UDs7QUFHQSxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLFlBQ3hCO0FBQ0UsSUFBQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsQ0FBcUMsVUFBckMsR0FBZ0QsQ0FBQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsQ0FBcUMsVUFBdEY7QUFFRCxHQUpEOztBQU1DLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsVUFBUyxNQUFULEVBQWdCLE1BQWhCLEVBQ3ZCO0FBRU0sUUFBSSxHQUFHLEdBQUcsY0FBYyxDQUFDLElBQWYsQ0FBb0IsVUFBcEIsRUFBZ0MsVUFBaEMsQ0FBVjs7QUFDQSxRQUFJLEdBQUosRUFBUztBQUNULE1BQUEsY0FBYyxDQUFDLE9BQWYsQ0FBdUIsVUFBdkIsRUFBbUMsVUFBbkM7QUFFQzs7QUFDRCxRQUFJLEdBQUcsR0FBRyxjQUFjLENBQUMsSUFBZixDQUFvQixVQUFwQixFQUFnQyxhQUFoQyxDQUFWOztBQUNBLFFBQUksR0FBSixFQUFTO0FBQ1QsTUFBQSxjQUFjLENBQUMsT0FBZixDQUF1QixVQUF2QixFQUFtQyxhQUFuQztBQUVDOztBQUNELElBQUEsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFVBQTFCLENBQXFDLFlBQXJDLEdBQWtELE1BQWxEO0FBQ0EsSUFBQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsQ0FBcUMsVUFBckMsR0FBa0QsTUFBbEQ7QUFDQSxJQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsZUFBYixDQUE2QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsQ0FBcUMsWUFBbEU7QUFFTCxHQWpCQSxDQXJDd1AsQ0F5RDFQO0FBQ0M7QUFDQTs7O0FBRUUsRUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsVUFBUyxLQUFULEVBQ3BCO0FBQ0UsSUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLHdCQUFiLENBQXNDLEtBQXRDO0FBQ0EsSUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBMkIsTUFBTSxDQUFDLEtBQVAsQ0FBYSx3QkFBYixFQUEzQjtBQUVELEdBTFQ7O0FBT0YsRUFBQSxNQUFNLENBQUMsTUFBUCxDQUFjLGtDQUFkLEVBQWlELFVBQVMsUUFBVCxFQUFrQixRQUFsQixFQUEyQjtBQUVwRSxRQUFJLFFBQVEsSUFBRSxRQUFkLEVBQ0E7QUFDQyxNQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXFCLE1BQU0sQ0FBQyxLQUFQLENBQWEsa0JBQWIsRUFBckI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxtQkFBUCxHQUE2QixNQUFNLENBQUMsS0FBUCxDQUFhLHdCQUFiLEVBQTdCO0FBQ0E7QUFDRixHQVBQO0FBVUMsRUFBQSxNQUFNLENBQUMsTUFBUCxDQUFjLDRCQUFkLEVBQTJDLFVBQVMsUUFBVCxFQUFrQixRQUFsQixFQUEyQjtBQUUvRCxRQUFJLFFBQVEsSUFBRSxRQUFkLEVBQ0E7QUFDQyxNQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXFCLE1BQU0sQ0FBQyxLQUFQLENBQWEsa0JBQWIsRUFBckI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxtQkFBUCxHQUE2QixNQUFNLENBQUMsS0FBUCxDQUFhLHdCQUFiLEVBQTdCO0FBQ0E7QUFDRixHQVBOOztBQVVBLEVBQUEsTUFBTSxDQUFDLGlCQUFQLEdBQTJCLFlBQVU7QUFDbEMsSUFBQSxlQUFlLENBQUMsaUJBQWhCLENBQWtDLE1BQU0sQ0FBQyxVQUF6QyxFQUFxRCxJQUFyRCxDQUEwRCxVQUFTLElBQVQsRUFBZTtBQUNoRDtBQUVILFVBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFWLEdBQWlCLENBQXJCLEVBQXdCO0FBRXBCLFFBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxDQUFWLENBQXhCO0FBQ0EsUUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixTQUF0QixHQUFnQyxNQUFNLENBQUMsUUFBdkM7QUFDQSxRQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGVBQXRCLEdBQXNDLElBQXRDOztBQUNBLFlBQUksQ0FBQyxNQUFNLENBQUMsY0FBUCxDQUFzQixZQUEzQixFQUNBO0FBQ087QUFDakMsY0FBSSxNQUFNLENBQUMsY0FBUCxDQUFzQixpQkFBdEIsSUFBMkMsSUFBM0MsSUFBbUQsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsaUJBQXRCLElBQXlDLFNBQWhHLEVBQ0M7QUFDQyxZQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGlCQUF0QixHQUF3QyxDQUF4QyxDQURELENBQzRDO0FBQzNDLFdBTHdCLENBUTFCOzs7QUFDQSxVQUFBLGVBQWUsQ0FBQyxlQUFoQixDQUFnQyxNQUFNLENBQUMsVUFBdkMsRUFBa0QsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsaUJBQXhFLEVBQTBGLElBQTFGLEVBQWdHLElBQWhHLENBQXFHLFVBQVMsSUFBVCxFQUFlO0FBQzVHLFlBQUEsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsbUJBQWhCLEdBQXNDLElBQUksQ0FBQyxJQUEzQyxDQUQ0RyxDQUU1Rzs7QUFDQSxnQkFBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixtQkFBaEIsQ0FBb0MsTUFBcEMsR0FBMkMsQ0FBL0MsRUFBb0QsTUFBTSxDQUFDLGNBQVAsR0FBd0IsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsbUJBQWhCLENBQW9DLENBQXBDLENBQXhCO0FBRXRELFdBTE4sRUFLTyxVQUFTLEtBQVQsRUFBZTtBQUNkLFlBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0EsV0FQUjtBQVEyQjtBQUVKO0FBQ0gsS0E3QnBCLEVBNkJxQixVQUFTLEtBQVQsRUFBZTtBQUVoQixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNDLEtBaENyQjtBQW1DRixHQXBDRDs7QUF1Q0QsRUFBQSxNQUFNLENBQUMsZUFBUCxHQUF5QixVQUFVLFNBQVYsRUFBb0IsWUFBcEIsRUFBaUMsT0FBakMsRUFBMEM7QUFDN0QsSUFBQSxvQkFBb0IsQ0FBQyxlQUFyQixDQUFxQyxNQUFNLENBQUMsVUFBNUMsRUFBdUQsTUFBTSxDQUFDLFFBQTlELEVBQXVFLElBQXZFLEVBQTRFLE9BQTVFLEVBQXFGLElBQXJGLENBQTBGLFVBQVMsSUFBVCxFQUFlO0FBRWpGLFVBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUFWLENBQWtCLE1BQWxCLEdBQXlCLENBQTdCLEVBQ0Q7QUFDQyxRQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLENBQXlCLE1BQXpCLEdBQWdDLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBMUM7QUFDQTs7QUFDRCxNQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUEyQixJQUFJLENBQUMsSUFBTCxDQUFVLGtCQUFyQztBQUNBLE1BQUEsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFVBQTFCLEdBQXFDO0FBQUMsUUFBQSxZQUFZLEVBQUMsQ0FBZDtBQUFnQixRQUFBLFVBQVUsRUFBQztBQUEzQixPQUFyQztBQUNBLE1BQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxpQkFBYixDQUErQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBekQ7QUFDQSxNQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsZUFBYixDQUE2QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsQ0FBcUMsWUFBbEU7QUFHQSxNQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQTBCLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFNBQXZCLENBQWlDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLFNBQXZCLENBQWlDLE9BQWpDLENBQXlDLE1BQTFFLEVBQWtGLENBQUMsVUFBRCxFQUFhLFVBQWIsQ0FBbEYsQ0FBMUIsQ0Faa0YsQ0FjbEY7O0FBQ0EsTUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixJQUFsQjs7QUFDQSxVQUFJLFNBQUosRUFDQTtBQUNFLFFBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsWUFBNUIsRUFBeUMsU0FBekM7QUFFRDtBQUNILEtBckJyQixFQXFCc0IsVUFBUyxLQUFULEVBQWU7QUFHaEIsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFHSCxLQTNCbEI7QUE0QkwsR0E3QkQsQ0EvSHlQLENBK0o3UDtBQUNEO0FBQ0E7OztBQUVDLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsWUFBWTtBQUNoQztBQUNFO0FBRUcsSUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixlQUFoQixHQUFrQyxpQkFBaUIsQ0FBQyxjQUFsQixDQUFpQywwQkFBd0IsTUFBTSxDQUFDLFVBQWhFLENBQWxDO0FBQ0EsSUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixLQUFsQjtBQUNBLElBQUEsb0JBQW9CLENBQUMsZ0JBQXJCLENBQXNDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLENBQXlCLE1BQS9ELEVBQXNFLE1BQU0sQ0FBQyxVQUE3RSxFQUF3RixNQUFNLENBQUMsUUFBL0YsRUFBeUcsSUFBekcsQ0FBOEcsVUFBUyxJQUFULEVBQWU7QUFHckcsTUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixJQUFsQixDQUhxRyxDQUl0Rzs7QUFDQyxNQUFBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLElBQXZCLEVBQTRCLElBQUksQ0FBQyxHQUFqQyxFQUFxQyxJQUFyQztBQUVILEtBUHJCLEVBT3NCLFVBQVMsS0FBVCxFQUFlO0FBRWIsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFFRixLQVh0QixFQU4yQixDQW9COUI7QUFDRyxHQXJCUCxDQW5LNlAsQ0EwTDVQO0FBQ0Y7QUFDQTs7O0FBQ0MsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixZQUFZO0FBRzNCO0FBRUEsSUFBQSxlQUFlLENBQUMsWUFBaEIsQ0FBNkIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGNBQXZELEVBQXNFLE1BQU0sQ0FBQyxVQUE3RSxFQUF3RixJQUF4RixFQUE4RixJQUE5RixDQUFtRyxVQUFTLElBQVQsRUFBZTtBQUcxRixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxHQUFqQyxFQUFxQyxTQUFyQztBQUVILEtBTHJCLEVBS3NCLFVBQVMsS0FBVCxFQUFlO0FBRWIsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFFRixLQVR0QjtBQWFBLEdBbEJQLENBN0w2UCxDQWlOL1A7QUFDQztBQUNBOzs7QUFDSyxFQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQixZQUFVO0FBRXhDO0FBQ0EsUUFBSSxzQkFBc0IsR0FBQyxFQUEzQjs7QUFDRSxRQUFJLENBQUMsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsWUFBM0IsRUFDRjtBQUNJLFdBQUksSUFBSSxDQUFDLEdBQUMsQ0FBVixFQUFZLENBQUMsR0FBQyxNQUFNLENBQUMsUUFBUCxDQUFnQixtQkFBaEIsQ0FBb0MsTUFBbEQsRUFBeUQsQ0FBQyxFQUExRCxFQUE2RDtBQUMzRCxZQUFLLE1BQU0sQ0FBQyxRQUFQLENBQWdCLG1CQUFoQixDQUFvQyxDQUFwQyxFQUF1QyxXQUF2QyxJQUFvRCxJQUF6RCxFQUErRCxzQkFBc0IsQ0FBQyxJQUF2QixDQUE0QiwrQkFBNUIsRUFESixDQUUzRDtBQUNEOztBQUNELFVBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsbUJBQWhCLENBQW9DLE1BQXBDLElBQTRDLENBQWhELEVBQW1EO0FBQUUsUUFBQSxzQkFBc0IsQ0FBQyxJQUF2QixDQUE0QiwwQkFBNUI7QUFBeUQ7O0FBQUE7QUFDL0c7O0FBQ0QsUUFBSSxzQkFBc0IsQ0FBQyxNQUF2QixHQUE4QixDQUFsQyxFQUNELGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLHNCQUE1QixFQUFtRCxPQUFuRCxFQURDLENBQzJEO0FBRDNELFNBR0Y7QUFFQyxVQUFJLElBQUksR0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUZELENBSUM7O0FBQ0EsVUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGlCQUF0QixJQUEyQyxJQUEzQyxJQUFtRCxNQUFNLENBQUMsY0FBUCxDQUFzQixpQkFBdEIsSUFBeUMsU0FBNUYsSUFBeUcsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsaUJBQXRCLElBQXlDLENBQW5KLEtBQXlKLENBQUMsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsWUFBcEwsRUFDQTtBQUNHLFlBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsbUJBQWhCLENBQW9DLE1BQXBDLEdBQTJDLENBQS9DLEVBQWtEO0FBRWxELFVBQUEsTUFBTSxDQUFDLFdBQVAsR0FBcUI7QUFBQyxZQUFBLE1BQU0sRUFBQyxJQUFSO0FBQWEsWUFBQSxFQUFFLEVBQUM7QUFBaEIsV0FBckI7QUFDQSxVQUFBLE1BQU0sQ0FBQyxXQUFQLENBQW1CLElBQW5CLEdBQTBCLElBQTFCO0FBQ0EsVUFBQSxNQUFNLENBQUMsV0FBUCxDQUFtQixXQUFuQixHQUErQixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsSUFBekQ7QUFDQSxVQUFBLE1BQU0sQ0FBQyxXQUFQLENBQW1CLElBQW5CLEdBQXdCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixJQUFsRDtBQUVBLFVBQUEsZUFBZSxDQUFDLHFCQUFoQixDQUFzQyxNQUFNLENBQUMsV0FBN0MsRUFBMEQsSUFBMUQsQ0FBK0QsVUFBUyxJQUFULEVBQWU7QUFFNUUsWUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixpQkFBdEIsR0FBd0MsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUFWLENBQWUsRUFBdkQ7QUFDQSxZQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsR0FBdEMsRUFBMEMsU0FBMUM7QUFDQSxZQUFBLE1BQU0sQ0FBQyx3QkFBUDtBQUVELFdBTkQsRUFNRSxVQUFTLEtBQVQsRUFBZTtBQUNqQixZQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNBLFdBUkE7QUFTSTtBQUVMLE9BcEJGLENBb0JJO0FBcEJKLFdBcUJPLE1BQU0sQ0FBQyx3QkFBUDtBQUNGO0FBQ0gsR0EzQ0M7O0FBOENGLEVBQUEsTUFBTSxDQUFDLHdCQUFQLEdBQWtDLFlBQVU7QUFFMUMsUUFBSSxRQUFRLEdBQUc7QUFBQyxNQUFBLFNBQVMsRUFBQyxNQUFNLENBQUMsY0FBUCxDQUFzQixpQkFBakM7QUFBbUQsTUFBQSxnQkFBZ0IsRUFBQyxNQUFNLENBQUMsY0FBUCxDQUFzQixnQkFBMUY7QUFBMkcsTUFBQSxRQUFRLEVBQUMsTUFBTSxDQUFDLFFBQVAsQ0FBZ0I7QUFBcEksS0FBZjtBQUVILElBQUEsZUFBZSxDQUFDLGdCQUFoQixDQUFpQyxNQUFNLENBQUMsVUFBeEMsRUFBbUQsQ0FBQyxNQUFNLENBQUMsY0FBUCxDQUFzQixZQUExRSxFQUF1RixRQUF2RixFQUFnRyxJQUFoRyxFQUFzRyxJQUF0RyxDQUEyRyxVQUFTLElBQVQsRUFBZTtBQUUzRixNQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLG1CQUFoQixHQUFzQyxJQUFJLENBQUMsSUFBM0M7QUFDQSxNQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLG9CQUFoQixHQUFxQyxDQUFDLENBQXRDO0FBQ0EsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixJQUFJLENBQUMsR0FBakMsRUFBcUMsU0FBckM7QUFHTCxLQVAxQixFQU8yQixVQUFTLEtBQVQsRUFBZTtBQUVYLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0gsS0FWNUI7QUFZRSxHQWhCRCxDQWxRMlAsQ0FzUjFQO0FBQ0o7QUFDQTs7O0FBQ0ksTUFBSSxNQUFNLENBQUMsVUFBUCxJQUFxQixTQUF6QixFQUNDO0FBQ0UsSUFBQSxNQUFNLENBQUMsZUFBUDtBQUNEOztBQUVBLEVBQUEsTUFBTSxDQUFDLGlCQUFQO0FBSU47O0FBQ00sU0FBUyxrQkFBVCxDQUE2QixNQUE3QixFQUFxQyxVQUFyQyxFQUFnRCxRQUFoRCxFQUF5RCxlQUF6RCxFQUF5RSxpQkFBekUsRUFBMkYsZ0JBQTNGLEVBQTRHLGVBQTVHLEVBQTRILFlBQTVILEVBQXlJLFlBQXpJLEVBQXNKLGVBQXRKLEVBQXNLLHFCQUF0SyxFQUE0TCxvQkFBNUwsRUFBaU4sTUFBak4sRUFBd04sY0FBeE4sRUFBdU8sbUJBQXZPLEVBQTRQO0FBQUE7O0FBRTdQLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBdUIsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsWUFBdEQsQ0FGNlAsQ0FHN1A7O0FBQ0gsRUFBQSxNQUFNLENBQUMsZUFBUCw0QkFBMEIsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBN0Msb0ZBQTBCLHNCQUFnQyxZQUExRCwyREFBMEIsdUJBQThDLEVBQXhFO0FBRUcsRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFnQixvQkFBaEIsQ0FONlAsQ0FPN1A7O0FBRUEsRUFBQSxNQUFNLENBQUMsTUFBUCxHQUFjLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBYixDQUFnQixLQUFoQixDQUFzQixHQUF0QixFQUEyQixDQUEzQixDQUFELENBQXRCO0FBQ0EsRUFBQSxNQUFNLENBQUMsT0FBUCxHQUFlLFlBQVksQ0FBQyxFQUE1QjtBQUdBLEVBQUEsTUFBTSxDQUFDLEdBQVAsR0FBVyxxQkFBWDtBQUNBLEVBQUEsTUFBTSxDQUFDLEtBQVAsR0FBZSxlQUFmO0FBQ0EsRUFBQSxNQUFNLENBQUMsd0JBQVAsR0FBa0MsS0FBbEM7QUFDQSxFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQW1CLEVBQW5CO0FBQ0EsRUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixLQUFqQixHQUF5QixlQUF6QjtBQUNBLEVBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsYUFBakIsR0FBaUMsS0FBakMsQ0FsQjZQLENBbUI3UDtBQUNBOztBQUNBLEVBQUEsTUFBTSxDQUFDLEdBQVAsR0FBYSxtQkFBYjtBQUNBLEVBQUEsTUFBTSxDQUFDLEdBQVAsQ0FBVyxxQkFBWCxDQUFpQyxNQUFqQztBQUNBLEVBQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxnQkFBYjtBQUVBLEVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBc0I7QUFBQyxJQUFBLE9BQU8sRUFBQztBQUFULEdBQXRCO0FBQ0EsRUFBQSxNQUFNLENBQUMsU0FBUCxHQUFtQjtBQUFDLElBQUEsSUFBSSxFQUFDLElBQU47QUFBVyxJQUFBLE1BQU0sRUFBQyxLQUFsQjtBQUF3QixJQUFBLFFBQVEsRUFBQyxLQUFqQztBQUF1QyxJQUFBLE1BQU0sRUFBQyxJQUE5QztBQUFtRCxJQUFBLE1BQU0sRUFBQztBQUExRCxHQUFuQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0I7QUFBQyxJQUFBLG1CQUFtQixFQUFDO0FBQXJCLEdBQWxCO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQjtBQUFDLElBQUEsZ0JBQWdCLEVBQUMsRUFBbEI7QUFBcUIsSUFBQSx3QkFBd0IsRUFBQztBQUE5QyxHQUF0QjtBQUNBLEVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBc0IsRUFBdEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxJQUFQLEdBQVksRUFBWjtBQUNBLE1BQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQTFDO0FBRUEsRUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixjQUF0QixHQUFxQyxFQUFyQztBQUNBLEVBQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsT0FBdEIsR0FBZ0MsS0FBaEM7QUFDQSxFQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGVBQXRCLEdBQXdDLENBQXhDO0FBQ0EsRUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixTQUF0QixHQUFrQyxLQUFsQztBQUNBLEVBQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsU0FBdEIsR0FBa0MsSUFBbEM7QUFDQSxFQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFVBQXRCLEdBQW1DLElBQW5DO0FBQ0EsRUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixZQUF0QixHQUFxQyxJQUFyQztBQUNBLEVBQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsV0FBdEIsR0FBb0MsS0FBcEM7QUFDQSxFQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFlBQXRCLEdBQXFDLElBQXJDO0FBQ0EsRUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixXQUF0QixHQUFvQyxLQUFwQztBQUNBLEVBQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsT0FBdEIsR0FBZ0MsS0FBaEM7QUFDQSxFQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFVBQXRCLEdBQW1DLEtBQW5DO0FBQ0EsRUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixZQUF0QixHQUFxQyxLQUFyQztBQUNBLEVBQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsVUFBdEIsR0FBbUMsS0FBbkM7QUFDQSxFQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGVBQXRCLEdBQXdDLEdBQXhDO0FBQ0EsRUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixtQkFBdEIsR0FBMEMsR0FBMUM7QUFDQSxFQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGdCQUF0QixHQUF1QyxJQUF2QztBQUNBLEVBQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsYUFBdEIsR0FBc0MsTUFBTSxDQUFDLE1BQTdDO0FBQ0EsRUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixjQUF0QixHQUF1QyxNQUFNLENBQUMsT0FBOUM7QUFDQSxFQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFVBQXRCLEdBQW1DLE1BQU0sQ0FBQyxNQUExQztBQUNBLEVBQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsY0FBdEIsR0FBdUMsQ0FBdkMsQ0FyRDZQLENBc0Q3UDtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxFQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGlCQUF0QixHQUEwQyxJQUExQztBQUNBLEVBQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsZ0JBQXRCLEdBQXlDLElBQXpDO0FBQ0EsRUFBQSxNQUFNLENBQUMsY0FBUCxHQUFzQjtBQUFDLFVBQUssSUFBTjtBQUFXLFlBQU87QUFBbEIsR0FBdEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQW9CO0FBQUMsVUFBSyxJQUFOO0FBQVcsWUFBTztBQUFsQixHQUFwQixDQTdENlAsQ0E4RDlQOztBQUNBLEVBQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsVUFBdEIsR0FBbUMsRUFBbkM7QUFDQSxFQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGVBQXRCLEdBQXNDLElBQXRDO0FBQ0EsRUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixVQUF0QixHQUFpQztBQUFDLElBQUEsWUFBWSxFQUFDLENBQWQ7QUFBZ0IsSUFBQSxrQkFBa0IsRUFBQztBQUFuQyxHQUFqQztBQUdDLEVBQUEsVUFBVSxDQUFDLE9BQVgsR0FBcUI7QUFDakIsSUFBQSxRQUFRLEVBQUUsS0FETztBQUVqQixJQUFBLFFBQVEsRUFBRTtBQUZPLEdBQXJCLENBcEU2UCxDQTBFN1A7QUFDSTs7QUFFSixFQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLHFCQUFqQixHQUF5QyxZQUN6QztBQUNHLFFBQUksQ0FBQyxHQUFFLE1BQU0sQ0FBQyxZQUFQLENBQW9CLElBQXBCLENBQTBCLFVBQUEsQ0FBQztBQUFBLGFBQUksQ0FBQyxDQUFDLEVBQUYsSUFBUyxNQUFNLENBQUMsY0FBUCxDQUFzQixRQUFuQztBQUFBLEtBQTNCLENBQVA7QUFDQyxJQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGNBQXRCLEdBQXVDLENBQXZDO0FBQ0gsR0FKRDs7QUFLQSxFQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLEdBQTJCLFVBQVMsSUFBVCxFQUFjO0FBQ3JDLElBQUEsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsSUFBbkIsSUFBMkIsSUFBM0I7QUFDSCxHQUZEOztBQUtBLEVBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsU0FBakIsR0FBNkIsVUFBUyxJQUFULEVBQWMsY0FBZCxFQUE2QixHQUE3QixFQUM3QjtBQUNHLFFBQUksZ0JBQWdCLEdBQUksZUFBZSxDQUFDLFNBQWhCLENBQTBCLElBQTFCLEVBQWdDLGNBQWhDLENBQXhCO0FBQ0EsUUFBSSxHQUFKLEVBQVMsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsR0FBNUIsRUFBZ0MsTUFBaEM7QUFDVCxXQUFPLGdCQUFQO0FBQ0YsR0FMRDs7QUFRRCxFQUFBLE1BQU0sQ0FBQyxvQkFBUCxHQUE4QixZQUM5QjtBQUNHO0FBQ0MsSUFBQSxNQUFNLENBQUMsZUFBUCxHQUF5QjtBQUN0QixNQUFBLG9CQUFvQixFQUFDO0FBQ2YsUUFBQSxZQUFZLEVBQUMsRUFERTtBQUVmLFFBQUEsVUFBVSxFQUFDO0FBRkksT0FEQztBQUt0QixNQUFBLHFCQUFxQixFQUFFO0FBQ3BCLFFBQUEsWUFBWSxFQUFDLEVBRE87QUFFcEIsUUFBQSxVQUFVLEVBQUM7QUFGUyxPQUxEO0FBU3hCLE1BQUEsbUJBQW1CLEVBQUM7QUFDaEIsUUFBQSxZQUFZLEVBQUMsRUFERztBQUVkLFFBQUEsVUFBVSxFQUFDO0FBRkcsT0FUSTtBQWF4QixNQUFBLG9CQUFvQixFQUFDO0FBQ2hCLFFBQUEsWUFBWSxFQUFDLEVBREc7QUFFaEIsUUFBQSxVQUFVLEVBQUM7QUFGSztBQWJHLEtBQXpCO0FBb0JILEdBdkJEOztBQXlCQyxFQUFBLE1BQU0sQ0FBQyxvQkFBUDtBQUdBLEVBQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsZUFBdEIsR0FBc0MsRUFBdEM7O0FBR0UsTUFBSSxZQUFZLEdBQUcsU0FBZixZQUFlLENBQVMsSUFBVCxFQUNuQjtBQUNJLElBQUEsTUFBTSxDQUFDLEdBQVAsQ0FBVyxnQkFBWCxDQUE0QixFQUE1QjtBQUNBLElBQUEsUUFBUSxDQUFDLFlBQVU7QUFBQyxNQUFBLE1BQU0sQ0FBQyxHQUFQLENBQVcsZ0JBQVgsQ0FBNEIsSUFBNUI7QUFBbUMsS0FBL0MsRUFBZ0QsR0FBaEQsQ0FBUjtBQUNILEdBSkQ7O0FBTUEsTUFBSSxtQkFBbUIsR0FBRSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0Isd0JBQXNCLE1BQU0sQ0FBQyxNQUFuRCxFQUEwRCxJQUExRCxDQUF6QjtBQUNBLE1BQUksdUJBQXVCLEdBQUcsbUJBQW1CLENBQUMsT0FBcEIsQ0FBNEIsSUFBMUQ7QUFHQSxNQUFJLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQix1QkFBckIsRUFBNkMsaUJBQTdDLEVBQStELFlBQS9ELENBQTFCLENBeEkyUCxDQTBJM1A7O0FBQ0EsRUFBQSxZQUFZLENBQUMsY0FBYixDQUE0QixhQUE1QixFQUEwQyxJQUExQyxFQUFnRCxJQUFoRCxDQUFxRCxVQUFVLElBQVYsRUFBZ0I7QUFDN0MsUUFBSSxJQUFJLENBQUMsSUFBTCxDQUFVLE1BQVYsR0FBaUIsQ0FBckIsRUFDQTtBQUNBLE1BQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsSUFBSSxDQUFDLElBQTNCO0FBQ0MsS0FIRCxNQUlBO0FBQ0UsTUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixDQUFDO0FBQUMsUUFBQSxFQUFFLEVBQUMsQ0FBSjtBQUFNLFFBQUEsSUFBSSxFQUFDO0FBQVgsT0FBRCxFQUErQjtBQUFDLFFBQUEsRUFBRSxFQUFDLENBQUo7QUFBTSxRQUFBLElBQUksRUFBQztBQUFYLE9BQS9CLENBQXRCO0FBRUQ7QUFDeEIsR0FURDtBQVlDLEVBQUEsWUFBWSxDQUFDLGNBQWIsQ0FBNEIsWUFBNUIsRUFBeUMsSUFBekMsRUFBK0MsSUFBL0MsQ0FBb0QsVUFBVSxJQUFWLEVBQWdCO0FBQzdDLElBQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTRCLElBQUksQ0FBQyxJQUFqQztBQUNGLEdBRnJCO0FBR0EsRUFBQSxZQUFZLENBQUMsY0FBYixDQUE0QixRQUE1QixFQUFxQyxJQUFyQyxFQUEyQyxJQUEzQyxDQUFnRCxVQUFVLElBQVYsRUFBZ0I7QUFDekMsSUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBMEIsSUFBSSxDQUFDLElBQS9CO0FBQ0YsR0FGckI7O0FBSVAsRUFBQSxNQUFNLENBQUMsY0FBUCxHQUF1QixZQUFVO0FBRS9CLElBQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsV0FBdEIsR0FBa0MsQ0FBQyxNQUFNLENBQUMsY0FBUCxDQUFzQixXQUF6RDs7QUFDQSxRQUFLLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFdBQTNCLEVBQ0E7QUFDRSxNQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFlBQXRCLEdBQW1DLElBQW5DO0FBQ0EsTUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixZQUF0QixHQUFtQyxLQUFuQztBQUNELEtBUDhCLENBTzlCO0FBQ0Y7QUFDQztBQUNEOztBQUNBLEdBWEQ7O0FBYUUsRUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixlQUFqQixHQUFrQyxZQUFVO0FBRzFDLFFBQUksTUFBTSxDQUFDLGNBQVAsQ0FBc0IsWUFBdEIsS0FBcUMsU0FBekMsRUFBb0QsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsWUFBdEIsR0FBbUMsSUFBbkMsQ0FBcEQsS0FDSyxNQUFNLENBQUMsY0FBUCxDQUFzQixZQUF0QixHQUFxQyxDQUFDLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFlBQTVEO0FBQ0wsSUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakI7QUFFRCxHQVBEOztBQVVGLEVBQUEsTUFBTSxDQUFDLFVBQVAsR0FBbUIsWUFBVTtBQUUzQixJQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLElBQXpCO0FBRUQsR0FKRDs7QUFNQSxFQUFBLE1BQU0sQ0FBQyxzQkFBUCxHQUErQixVQUFTLG9CQUFULEVBQThCO0FBRXpELElBQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsVUFBdEIsR0FBaUMsS0FBakM7O0FBRUEsUUFBSSxvQkFBb0IsSUFBRSxHQUF0QixJQUE2QixvQkFBb0IsSUFBRSxHQUF2RCxFQUNBLENBRUM7O0FBQ0QsSUFBQSxNQUFNLENBQUMsZUFBUCxDQUF1QixtQkFBdkIsQ0FBMkMsVUFBM0MsR0FBdUQsb0JBQXZEO0FBQ0EsSUFBQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsVUFBNUMsR0FBeUQsb0JBQXpEO0FBRUgsR0FYRDs7QUFhRSxFQUFBLE1BQU0sQ0FBQyw4QkFBUCxHQUF1QyxVQUFTLG9CQUFULEVBQThCO0FBRW5FLElBQUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLFVBQTVDLEdBQXVELG9CQUF2RDtBQUNDLElBQUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIscUJBQXZCLENBQTZDLFVBQTdDLEdBQXdELG9CQUF4RDs7QUFDQSxRQUFJLG9CQUFvQixJQUFFLEdBQTFCLEVBQ0Q7QUFDRSxNQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFlBQXRCLEdBQW1DLElBQW5DO0FBQ0QsS0FIQSxNQUlEO0FBQ0csTUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixZQUF0QixHQUFtQyxLQUFuQztBQUNGOztBQUVELFFBQUksb0JBQW9CLElBQUUsR0FBdEIsSUFBNkIsb0JBQW9CLElBQUUsR0FBdkQsRUFDQTtBQUNFLE1BQUEsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsYUFBbkI7QUFDRDtBQUVKLEdBakJDOztBQW1CRixFQUFBLE1BQU0sQ0FBQyxvQkFBUCxHQUE4QixZQUM5QjtBQUNJLFFBQUksQ0FBQyxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBNUIsRUFBK0MsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQXZCLEdBQXdDLENBQUMsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsZ0JBQWhFLENBQS9DLEtBQ0ssSUFBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixtQkFBdkIsQ0FBMkMsVUFBM0MsSUFBdUQsR0FBdkQsSUFBOEQsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsbUJBQXZCLENBQTJDLFVBQTNDLElBQXVELEdBQXJILElBQTRILE1BQU0sQ0FBQyxlQUFQLENBQXVCLG1CQUF2QixDQUEyQyxVQUEzQyxJQUF1RCxTQUF2TCxFQUNMO0FBQ0EsTUFBQSxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBdkIsR0FBd0MsQ0FBQyxNQUFNLENBQUMsZUFBUCxDQUF1QixnQkFBaEU7QUFDQztBQUNKLEdBUEQ7O0FBU0EsRUFBQSxNQUFNLENBQUMsNEJBQVAsR0FBc0MsWUFDdEM7QUFDSSxRQUFJLENBQUMsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsd0JBQTVCLEVBQXVELE1BQU0sQ0FBQyxlQUFQLENBQXVCLHdCQUF2QixHQUFnRCxDQUFDLE1BQU0sQ0FBQyxlQUFQLENBQXVCLHdCQUF4RSxDQUF2RCxLQUNLLElBQUksTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLFVBQTVDLElBQXdELEdBQXhELElBQStELE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxVQUE1QyxJQUF3RCxHQUF2SCxJQUE4SCxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsVUFBNUMsSUFBd0QsU0FBMUwsRUFDTDtBQUNBLE1BQUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsd0JBQXZCLEdBQWdELENBQUMsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsd0JBQXhFO0FBQ0M7QUFDSixHQVBEOztBQVNBLEVBQUEsTUFBTSxDQUFDLHdCQUFQLEdBQWtDLFVBQVMsU0FBVCxFQUNsQztBQUNJLFFBQUksU0FBSixFQUFlO0FBQUMsTUFBQSxNQUFNLENBQUMsZUFBUCxDQUF1QixtQkFBdkIsQ0FBMkMsVUFBM0MsR0FBc0QsU0FBdEQ7QUFBZ0UsS0FBaEYsTUFDUztBQUNQLFVBQUksTUFBTSxDQUFDLGVBQVAsQ0FBdUIsbUJBQXZCLENBQTJDLFVBQTNDLElBQXVELEdBQTNELEVBQ0E7QUFDRSxRQUFBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG1CQUF2QixDQUEyQyxVQUEzQyxHQUFzRCxHQUF0RDtBQUNELE9BSEQsTUFHTSxNQUFNLENBQUMsZUFBUCxDQUF1QixtQkFBdkIsQ0FBMkMsVUFBM0MsR0FBc0QsR0FBdEQ7QUFDUDtBQUNKLEdBVEQ7O0FBWUUsRUFBQSxNQUFNLENBQUMseUJBQVAsR0FBbUMsVUFBUyxTQUFULEVBQ3JDO0FBQ0ksUUFBSSxTQUFKLEVBQWU7QUFBQyxNQUFBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxVQUE1QyxHQUF1RCxTQUF2RDtBQUFrRSxLQUFsRixNQUNLO0FBQ0gsVUFBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsVUFBNUMsSUFBd0QsR0FBNUQsRUFDQTtBQUNFLFFBQUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLFVBQTVDLEdBQXVELEdBQXZEO0FBQ0QsT0FIRCxNQUdNLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxVQUE1QyxHQUF1RCxHQUF2RDtBQUNQO0FBQ0osR0FUQzs7QUFZQSxFQUFBLE1BQU0sQ0FBQyx5QkFBUCxHQUFtQyxVQUFTLFNBQVQsRUFDckM7QUFDSSxRQUFJLFNBQUosRUFBZTtBQUFDLE1BQUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLFVBQTVDLEdBQXVELFNBQXZEO0FBQWtFLEtBQWxGLE1BQXdGO0FBQ3RGLFVBQUksTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLFVBQTVDLElBQXdELEdBQTVELEVBQ0E7QUFDRSxRQUFBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxVQUE1QyxHQUF1RCxHQUF2RDtBQUNELE9BSEQsTUFHTSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsVUFBNUMsR0FBdUQsR0FBdkQ7QUFDUDtBQUNKLEdBUkM7O0FBV0EsRUFBQSxNQUFNLENBQUMsMEJBQVAsR0FBb0MsVUFBUyxTQUFULEVBQ3RDO0FBQ0ksUUFBSSxTQUFKLEVBQWU7QUFBQyxNQUFBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLHFCQUF2QixDQUE2QyxVQUE3QyxHQUF3RCxTQUF4RDtBQUFrRSxLQUFsRixNQUNLO0FBQ0gsVUFBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixxQkFBdkIsQ0FBNkMsVUFBN0MsSUFBeUQsR0FBN0QsRUFDQTtBQUNFLFFBQUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIscUJBQXZCLENBQTZDLFVBQTdDLEdBQXdELEdBQXhEO0FBQ0QsT0FIRCxNQUdNLE1BQU0sQ0FBQyxlQUFQLENBQXVCLHFCQUF2QixDQUE2QyxVQUE3QyxHQUF3RCxHQUF4RDtBQUNQO0FBQ0osR0FUQyxDQWhSK1AsQ0EyUmpROzs7QUFDQyxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLFlBQ3ZCO0FBQ2lCLFFBQUksSUFBSSxHQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDO0FBRUEsSUFBQSxZQUFZLENBQUMsY0FBYixDQUE0QixjQUE1QixFQUEyQyxJQUEzQyxFQUFpRCxJQUFqRCxDQUFzRCxVQUFTLElBQVQsRUFBZTtBQUM3RCxNQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLElBQUksQ0FBQyxJQUEzQjtBQUdFLEtBSlYsRUFJVyxVQUFTLEtBQVQsRUFBZTtBQUViLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0wsS0FQUjtBQVNoQixHQWJGOztBQWNELEVBQUEsTUFBTSxDQUFDLGNBQVAsR0ExU2lRLENBNFNqUTs7QUFDRSxFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLFVBQVMsWUFBVCxFQUNyQjtBQUNJLElBQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsY0FBdEIsQ0FBcUMsSUFBckMsR0FBMEMsWUFBMUM7QUFFQSxRQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsWUFBUCxDQUFvQixHQUFwQixDQUF3QixVQUFTLENBQVQsRUFBWTtBQUFFLGFBQU8sQ0FBQyxDQUFDLEtBQVQ7QUFBaUIsS0FBdkQsRUFBeUQsT0FBekQsQ0FBaUUsWUFBakUsQ0FBVjs7QUFFTSxRQUFJLEdBQUcsSUFBRSxDQUFULEVBQVc7QUFDVCxNQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFFBQXRCLEdBQWlDLE1BQU0sQ0FBQyxZQUFQLENBQW9CLEdBQXBCLEVBQXlCLEVBQTFEO0FBQ0MsTUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixjQUF0QixDQUFxQyxFQUFyQyxHQUF3QyxNQUFNLENBQUMsWUFBUCxDQUFvQixHQUFwQixFQUF5QixFQUFqRTtBQUNGO0FBR1YsR0FaRDs7QUFnQkEsRUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixpQkFBakIsR0FBcUMsWUFDckM7QUFDSSxJQUFBLGVBQWUsQ0FBQyxpQkFBaEIsQ0FBa0MsTUFBTSxDQUFDLE9BQXpDLEVBQWtELElBQWxELENBQ0ksVUFBUyxJQUFULEVBQWlCO0FBQ1gsVUFBSSxJQUFJLENBQUMsTUFBTCxHQUFZLENBQWhCLEVBQW1CO0FBQ1gsUUFBQSxNQUFNLENBQUMscUJBQVAsQ0FBNkIsSUFBSSxDQUFDLENBQUQsQ0FBakM7QUFDUCxPQUZELE1BRVE7QUFDRCxRQUFBLFlBQVksQ0FBQywwQkFBYixDQUF3QyxhQUF4QyxFQUFzRCxhQUF0RCxFQUFvRSxJQUFwRSxFQUF5RSxJQUF6RSxFQUErRSxJQUEvRSxDQUNPLFVBQVMsU0FBVCxFQUFtQjtBQUNiLFVBQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsUUFBdEIsR0FBaUMsU0FBUyxDQUFDLEVBQTNDO0FBQ0EsVUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixrQkFBakIsQ0FBb0MsSUFBcEM7QUFDSixTQUpUO0FBS0E7QUFDWixLQVhMLEVBWUksVUFBUyxLQUFULEVBQWtCO0FBQ2QsVUFBSSxLQUFLLENBQUMsTUFBTixLQUFlLEdBQW5CLEVBQXlCO0FBQ2hCLFFBQUEsWUFBWSxDQUFDLDBCQUFiLENBQXdDLGFBQXhDLEVBQXNELGFBQXRELEVBQW9FLElBQXBFLEVBQXlFLElBQXpFLEVBQStFLElBQS9FLENBQW9GLFVBQVMsU0FBVCxFQUFtQjtBQUN0RyxVQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFFBQXRCLEdBQWlDLFNBQVMsQ0FBQyxFQUEzQztBQUNBLFVBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLENBQW9DLElBQXBDO0FBQ0EsVUFBQSxNQUFNLENBQUMscUJBQVAsQ0FBNkIsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsY0FBbkQ7QUFDQyxTQUpGO0FBTVIsT0FQRCxNQVFPLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNWLEtBdEJMO0FBeUJILEdBM0JEOztBQThCQSxFQUFBLE1BQU0sQ0FBQyxxQkFBUCxHQUE2QixVQUFVLGNBQVYsRUFDN0I7QUFDSSxJQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLGNBQXhCO0FBQ0EsSUFBQSxNQUFNLENBQUMsVUFBUCxHQUFvQixJQUFJLENBQUMsU0FBTCxDQUFlLE1BQU0sQ0FBQyxjQUF0QixFQUFxQyxJQUFyQyxFQUEwQyxDQUExQyxDQUFwQjtBQUNBLElBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQTBCLE1BQU0sQ0FBQyxNQUFqQztBQUNBLFFBQUksTUFBTSxDQUFDLGNBQVAsQ0FBc0IsVUFBdEIsSUFBa0MsSUFBdEMsRUFDSSxNQUFNLENBQUMsY0FBUCxDQUFzQixVQUF0QixHQUFpQztBQUFDLE1BQUEsZUFBZSxFQUFDLEtBQWpCO0FBQXVCLE1BQUEsV0FBVyxFQUFDO0FBQW5DLEtBQWpDO0FBRUosSUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixlQUF0QixHQUFzQyxJQUF0QztBQUdBLElBQUEsTUFBTSxDQUFDLG9CQUFQO0FBRUEsUUFBSSxNQUFNLENBQUMsY0FBUCxDQUFzQixlQUExQixFQUNJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxVQUE1QyxHQUF5RCxNQUFNLENBQUMsY0FBUCxDQUFzQixlQUEvRTtBQUNKLFFBQUksTUFBTSxDQUFDLGNBQVAsQ0FBc0IsbUJBQTFCLEVBQ0ksTUFBTSxDQUFDLGVBQVAsQ0FBdUIsbUJBQXZCLENBQTJDLFVBQTNDLEdBQXdELE1BQU0sQ0FBQyxjQUFQLENBQXNCLG1CQUE5RTtBQUNKLFFBQUksTUFBTSxDQUFDLGNBQVAsQ0FBc0Isb0JBQTFCLEVBQ0ksTUFBTSxDQUFDLGVBQVAsQ0FBdUIscUJBQXZCLENBQTZDLFVBQTdDLEdBQTBELE1BQU0sQ0FBQyxjQUFQLENBQXNCLG9CQUFoRjtBQUNKLFFBQUksTUFBTSxDQUFDLGNBQVAsQ0FBc0Isd0JBQTFCLEVBQ1EsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLFVBQTVDLEdBQXlELE1BQU0sQ0FBQyxjQUFQLENBQXNCLHdCQUEvRTtBQUVSLElBQUEsTUFBTSxDQUFDLHFCQUFQLENBQTZCLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGNBQW5EO0FBQ0EsSUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixVQUF0QixHQUFpQztBQUFDLE1BQUEsVUFBVSxFQUFDLElBQVo7QUFBaUIsTUFBQSxZQUFZLEVBQUMsQ0FBOUI7QUFBZ0MsTUFBQSxrQkFBa0IsRUFBQztBQUFuRCxLQUFqQztBQUNBLElBQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsU0FBdEIsR0FBZ0MsTUFBTSxDQUFDLEdBQVAsQ0FBVyxjQUFYLEVBQWhDO0FBQ0EsSUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixPQUFPLENBQUMsSUFBUixDQUFhLE1BQU0sQ0FBQyxjQUFwQixDQUF0QjtBQUNBLElBQUEsTUFBTSxDQUFDLEdBQVAsQ0FBVyxlQUFYLENBQTJCLE1BQU0sQ0FBQyxjQUFsQztBQUNBLElBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsZUFBakI7QUFDSCxHQTVCRDs7QUFnQ0EsRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQixVQUFVLE9BQVYsRUFBbUI7QUFFbEMsUUFBSSxPQUFKLEVBQWE7QUFDWjtBQUNDLE1BQUEsb0JBQW9CLENBQUMsZ0JBQXJCLENBQXVDLE1BQU0sQ0FBQyxrQkFBOUMsRUFBa0UsSUFBbEUsQ0FDSSxVQUFTLElBQVQsRUFBZTtBQUNKLFlBQUksSUFBSSxDQUFDLE1BQUwsS0FBYyxHQUFkLElBQXFCLElBQUksQ0FBQyxNQUFMLEtBQWMsR0FBdkMsRUFBNEM7QUFDdkMsVUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixtQ0FBNUIsRUFBZ0UsU0FBaEU7QUFDSjtBQUNWLE9BTE4sRUFNSSxVQUFTLEtBQVQsRUFBZTtBQUNELFFBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ2IsT0FSTDtBQVVELEtBWkQsTUFZTztBQUNMLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsNEJBQTVCLEVBQXlELFNBQXpEO0FBQ0Q7QUFDTixHQWpCRDs7QUFrQkEsRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixVQUFTLEtBQVQsRUFDbEI7QUFDVSxJQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWdCLEtBQWhCO0FBQ0EsUUFBSSxLQUFKLEVBQVksTUFBTSxDQUFDLHFCQUFQLENBQTZCLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGNBQW5EO0FBQ3JCLEdBSkQsQ0E3WStQLENBbVo3UDs7O0FBQ0EsRUFBQSxNQUFNLENBQUMscUJBQVAsR0FBK0IsVUFBUyxhQUFULEVBQXVCO0FBRWhELElBQUEsb0JBQW9CLENBQUMsaUJBQXJCLENBQXVDLGFBQXZDLEVBQXNELElBQXRELENBQTJELFVBQVMsSUFBVCxFQUFlO0FBRXpEO0FBQ0MsTUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsSUFBSSxDQUFDLElBQWpDO0FBQ0EsTUFBQSxNQUFNLENBQUMscUJBQVAsR0FBK0IsSUFBL0I7QUFDQSxNQUFBLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixVQUExQixHQUFxQztBQUFDLFFBQUEsVUFBVSxFQUFDLElBQVo7QUFBaUIsUUFBQSxZQUFZLEVBQUMsQ0FBOUI7QUFBZ0MsUUFBQSxrQkFBa0IsRUFBQztBQUFuRCxPQUFyQztBQUNBLE1BQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxrQkFBYixDQUFnQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsRUFBMUIsR0FBNkIsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsU0FBbkYsRUFBNkY7QUFBQyxRQUFBLE9BQU8sRUFBQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsT0FBbkM7QUFBMkMsUUFBQSxTQUFTLEVBQUMsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFNBQS9FO0FBQXlGLFFBQUEsVUFBVSxFQUFDLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQjtBQUE5SCxPQUE3RjtBQUNHLEtBUHJCLEVBT3NCLFVBQVMsS0FBVCxFQUFlO0FBRW5CLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0QsS0FWakI7QUFXSCxHQWJILENBcFo2UCxDQW1hN1A7OztBQUNGLEVBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLEdBQXNDLFVBQVMsU0FBVCxFQUFtQjtBQUVyRCxJQUFBLGVBQWUsQ0FBQyxrQkFBaEIsQ0FBbUMsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsRUFBekQsRUFBNEQsTUFBTSxDQUFDLGNBQW5FLEVBQW1GLElBQW5GLENBQXdGLFVBQVMsSUFBVCxFQUFlO0FBRS9FLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLEdBQWpDLEVBQXFDLFNBQXJDO0FBRUEsVUFBSSxTQUFKLEVBQWUsTUFBTSxDQUFDLHFCQUFQLENBQTZCLElBQUksQ0FBQyxJQUFsQyxFQUFmLEtBQ0ssTUFBTSxDQUFDLGNBQVAsR0FBc0IsSUFBSSxDQUFDLElBQTNCO0FBRVIsS0FQckIsRUFPc0IsVUFBUyxLQUFULEVBQWU7QUFDWCxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNKLEtBVHRCO0FBVUgsR0FaRCxDQXBhK1AsQ0FvYi9QOzs7QUFDQSxFQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUE0QixZQUFVO0FBQ2xDLFFBQUksTUFBTSxDQUFDLE1BQVAsS0FBZ0IsU0FBcEIsRUFDQTtBQUNJLFVBQUksQ0FBQyxNQUFNLENBQUMseUJBQVosRUFDQTtBQUNJLFFBQUEsZUFBZSxDQUFDLGtCQUFoQixDQUFtQyxNQUFNLENBQUMsTUFBMUMsRUFBa0QsSUFBbEQsQ0FBdUQsVUFBUyxJQUFULEVBQWU7QUFFbEUsVUFBQSxNQUFNLENBQUMsdUJBQVAsR0FBaUMsT0FBTyxDQUFDLElBQVIsQ0FBYSxJQUFJLENBQUMsSUFBbEIsQ0FBakM7QUFDQSxVQUFBLE1BQU0sQ0FBQyxzQkFBUCxDQUE4QixJQUFJLENBQUMsSUFBbkM7QUFDQSxVQUFBLE1BQU0sQ0FBQyx5QkFBUCxHQUFtQyxJQUFuQztBQUNBLFVBQUEsTUFBTSxDQUFDLHdCQUFQLEdBQWtDLElBQWxDO0FBQ0gsU0FORCxFQU1FLFVBQVMsS0FBVCxFQUFlO0FBRWIsVUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDSCxTQVREO0FBVUosT0FaQSxNQWFEO0FBQ0MsUUFBQSxNQUFNLENBQUMsc0JBQVAsQ0FBOEIsTUFBTSxDQUFDLHVCQUFyQyxFQURELENBQ2dFO0FBQy9EO0FBQ0gsS0FsQkQsTUFrQk8sZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsK0JBQTVCLEVBQTRELE9BQTVEO0FBQ1YsR0FwQkQsQ0FyYitQLENBMmMvUDs7O0FBQ0EsRUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBMEIsWUFBVTtBQUNsQyxRQUFJLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGdCQUFwQixDQUFxQyxNQUFNLENBQUMsWUFBUCxDQUFvQixtQkFBekQsS0FBaUYsSUFBckYsRUFBMkYsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsZ0JBQXBCLENBQXFDLE1BQU0sQ0FBQyxZQUFQLENBQW9CLG1CQUF6RCxJQUFnRixFQUFoRjtBQUV6RixJQUFBLGVBQWUsQ0FBQyxnQkFBaEIsQ0FBaUMsTUFBTSxDQUFDLE1BQXhDLEVBQStDLENBQUMsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsZ0JBQXBCLENBQXFDLE1BQU0sQ0FBQyxZQUFQLENBQW9CLG1CQUF6RCxDQUFELENBQS9DLEVBQStILGNBQS9ILEVBQStJLElBQS9JLENBQW9KLFVBQVMsSUFBVCxFQUFlO0FBRS9KLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLEdBQWpDLEVBQXFDLFNBQXJDO0FBRUgsS0FKRCxFQUtBLFVBQVMsS0FBVCxFQUFlO0FBRVgsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDSCxLQVJEO0FBU0gsR0FaRCxDQTVjK1AsQ0EwZC9QOzs7QUFDQSxFQUFBLE1BQU0sQ0FBQyxtQkFBUCxHQUE2QixVQUFTLFVBQVQsRUFBb0I7QUFFN0MsSUFBQSxlQUFlLENBQUMsbUJBQWhCLENBQW9DLE1BQU0sQ0FBQyxzQkFBUCxDQUE4QixNQUFNLENBQUMsZUFBckMsRUFBcUQsVUFBckQsQ0FBcEMsRUFBcUcsTUFBTSxDQUFDLE1BQTVHLEVBQW1ILE1BQU0sQ0FBQyxjQUFQLENBQXNCLFlBQXpJLEVBQXNKLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFVBQTVLLEVBQXVMLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFVBQTdNLEVBQXdOLFVBQXhOLEVBQW1PLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFFBQXpQLEVBQW1RLElBQW5RLENBQXdRLFVBQVMsSUFBVCxFQUFlO0FBRW5SLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLEdBQWpDLEVBQXFDLFNBQXJDO0FBQ0EsTUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsS0FBNUI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLEtBQXhCO0FBQ0EsVUFBSSxVQUFVLEtBQUcsQ0FBakIsRUFBb0IsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsbUJBQXRCLEdBQTRDLElBQTVDO0FBQ3BCLFVBQUksVUFBVSxLQUFHLENBQWpCLEVBQW9CLE1BQU0sQ0FBQyxjQUFQLENBQXNCLG9CQUF0QixHQUE2QyxJQUE3QztBQUNwQixNQUFBLE1BQU0sQ0FBQyx5QkFBUCxHQUFtQyxLQUFuQztBQUVDLEtBVEwsRUFVSSxVQUFTLEtBQVQsRUFBZTtBQUNYLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ1AsS0FaRDtBQWNILEdBaEJEOztBQWtCQSxFQUFBLE1BQU0sQ0FBQyxzQkFBUCxHQUFnQyxVQUFTLGVBQVQsRUFBeUI7QUFBRTtBQUd2RDtBQUNBLFFBQUksZUFBZSxDQUFDLG9CQUFoQixLQUF3QyxTQUE1QyxFQUNJLGVBQWUsQ0FBQyxvQkFBaEIsR0FBdUM7QUFBQyxNQUFBLFlBQVksRUFBRztBQUFoQixLQUF2QztBQUVKLFFBQUksZUFBZSxDQUFDLHFCQUFoQixLQUF5QyxTQUE3QyxFQUNJLGVBQWUsQ0FBQyxxQkFBaEIsR0FBd0M7QUFBQyxNQUFBLFlBQVksRUFBRztBQUFoQixLQUF4QztBQUVKLFFBQUksZUFBZSxDQUFDLG1CQUFoQixLQUF1QyxTQUEzQyxFQUNJLGVBQWUsQ0FBQyxtQkFBaEIsR0FBc0M7QUFBQyxNQUFBLFlBQVksRUFBRztBQUFoQixLQUF0QztBQUVKLFFBQUksZUFBZSxDQUFDLG9CQUFoQixLQUF3QyxTQUE1QyxFQUNJLGVBQWUsQ0FBQyxvQkFBaEIsR0FBdUM7QUFBQyxNQUFBLFlBQVksRUFBRztBQUFoQixLQUF2QyxDQWRpRCxDQXNCdEQ7O0FBRUMsUUFBSSxLQUFLLEdBQUcsZUFBZSxDQUFDLEtBQTVCO0FBQ0EsUUFBSSxNQUFNLEdBQUcsZUFBZSxDQUFDLE1BQTdCOztBQUVBLFFBQUksZUFBZSxDQUFDLGNBQWhCLEtBQWlDLElBQWpDLElBQXlDLGVBQWUsQ0FBQyxjQUFoQixLQUFpQyxTQUE5RSxFQUNBO0FBQ0UsVUFBSSxlQUFlLENBQUMsY0FBaEIsQ0FBK0IsZUFBbkMsRUFBdUQsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLFVBQTVDLEdBQXlELGVBQWUsQ0FBQyxjQUFoQixDQUErQixlQUF4RjtBQUN2RCxVQUFJLGVBQWUsQ0FBQyxjQUFoQixDQUErQixRQUFuQyxFQUErQyxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsUUFBNUMsR0FBdUQsZUFBZSxDQUFDLGNBQWhCLENBQStCLFFBQXRGO0FBQy9DLFVBQUksZUFBZSxDQUFDLGNBQWhCLENBQStCLG1CQUFuQyxFQUEyRCxNQUFNLENBQUMsZUFBUCxDQUF1QixtQkFBdkIsQ0FBMkMsVUFBM0MsR0FBd0QsZUFBZSxDQUFDLGNBQWhCLENBQStCLG1CQUF2RjtBQUMzRCxVQUFLLGVBQWUsQ0FBQyxjQUFoQixDQUErQixvQkFBcEMsRUFBNkQsTUFBTSxDQUFDLGVBQVAsQ0FBdUIscUJBQXZCLENBQTZDLFVBQTdDLEdBQTBELGVBQWUsQ0FBQyxjQUFoQixDQUErQixvQkFBekY7QUFDN0QsVUFBSyxlQUFlLENBQUMsY0FBaEIsQ0FBK0IsYUFBcEMsRUFBc0QsTUFBTSxDQUFDLGVBQVAsQ0FBdUIscUJBQXZCLENBQTZDLFFBQTdDLEdBQXdELGVBQWUsQ0FBQyxjQUFoQixDQUErQixhQUF2RjtBQUN0RCxVQUFJLGVBQWUsQ0FBQyxjQUFoQixDQUErQix3QkFBbkMsRUFBZ0UsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLFVBQTVDLEdBQXlELGVBQWUsQ0FBQyxjQUFoQixDQUErQix3QkFBeEY7QUFDakU7O0FBR0QsUUFBSSxHQUFKOztBQUNBLFNBQUssSUFBSSxDQUFDLEdBQUMsQ0FBWCxFQUFhLENBQUMsR0FBQyxLQUFLLENBQUMsTUFBckIsRUFBNEIsQ0FBQyxFQUE3QixFQUFrQztBQUNoQyxVQUFJLEtBQUssQ0FBQyxDQUFELENBQUwsQ0FBUyxXQUFULElBQXNCLGlCQUExQixFQUE2QztBQUV4QyxZQUFJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxZQUE1QyxLQUEyRCxTQUEvRCxFQUNJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxZQUE1QyxHQUEyRCxFQUEzRDtBQUVKLFFBQUEsR0FBRyxHQUFHLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxZQUE1QyxDQUF5RCxHQUF6RCxDQUE2RCxVQUFTLENBQVQsRUFBWTtBQUFFLGlCQUFPLENBQUMsQ0FBQyxFQUFUO0FBQWMsU0FBekYsRUFBMkYsT0FBM0YsQ0FBbUcsS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTLFVBQVQsQ0FBb0IsRUFBdkgsQ0FBTjtBQUVBLFlBQUksR0FBRyxHQUFDLENBQVIsRUFDTyxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsWUFBNUMsQ0FBeUQsSUFBekQsQ0FBOEQsS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTLFVBQXZFO0FBRVAsUUFBQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsYUFBNUMsR0FBNEQsS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTLFVBQXJFO0FBRUosT0FaRCxNQWFNO0FBQUU7QUFFRCxZQUFJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG1CQUF2QixDQUEyQyxZQUEzQyxLQUEwRCxTQUE5RCxFQUNPLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG1CQUF2QixDQUEyQyxZQUEzQyxHQUEwRCxFQUExRDtBQUVQLFFBQUEsR0FBRyxHQUFHLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG1CQUF2QixDQUEyQyxZQUEzQyxDQUF3RCxHQUF4RCxDQUE0RCxVQUFTLENBQVQsRUFBWTtBQUFFLGlCQUFPLENBQUMsQ0FBQyxFQUFUO0FBQWMsU0FBeEYsRUFBMEYsT0FBMUYsQ0FBa0csS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTLFVBQVQsQ0FBb0IsRUFBdEgsQ0FBTjtBQUVBLFlBQUksR0FBRyxHQUFDLENBQVIsRUFDSyxNQUFNLENBQUMsZUFBUCxDQUF1QixtQkFBdkIsQ0FBMkMsWUFBM0MsQ0FBd0QsSUFBeEQsQ0FBNkQsS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTLFVBQXRFO0FBRUwsUUFBQSxNQUFNLENBQUMsZUFBUCxDQUF1QixtQkFBdkIsQ0FBMkMsVUFBM0MsR0FBd0QsS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTLFVBQWpFO0FBRUE7QUFFUixLQW5Fb0QsQ0FtRXBEOzs7QUFHRCxTQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsTUFBTSxDQUFDLE1BQXRCLEVBQTZCLENBQUMsRUFBOUIsRUFBb0M7QUFDbEMsVUFBSSxNQUFNLENBQUMsQ0FBRCxDQUFOLENBQVUsV0FBVixJQUF1QixpQkFBM0IsRUFBOEM7QUFFekMsWUFBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixxQkFBdkIsQ0FBNkMsWUFBN0MsS0FBNEQsU0FBaEUsRUFDSSxNQUFNLENBQUMsZUFBUCxDQUF1QixxQkFBdkIsQ0FBNkMsWUFBN0MsR0FBNEQsRUFBNUQ7QUFFSixRQUFBLEdBQUcsR0FBRyxNQUFNLENBQUMsZUFBUCxDQUF1QixxQkFBdkIsQ0FBNkMsWUFBN0MsQ0FBMEQsR0FBMUQsQ0FDTCxVQUFTLENBQVQsRUFBWTtBQUFFLGlCQUFPLENBQUMsQ0FBQyxFQUFUO0FBQWMsU0FEdkIsRUFDeUIsT0FEekIsQ0FDaUMsTUFBTSxDQUFDLENBQUQsQ0FBTixDQUFVLFVBQVYsQ0FBcUIsRUFEdEQsQ0FBTjtBQUdBLFlBQUksR0FBRyxHQUFDLENBQVIsRUFDSyxNQUFNLENBQUMsZUFBUCxDQUF1QixxQkFBdkIsQ0FBNkMsWUFBN0MsQ0FBMEQsSUFBMUQsQ0FBK0QsTUFBTSxDQUFDLENBQUQsQ0FBTixDQUFVLFVBQXpFO0FBRUwsUUFBQSxNQUFNLENBQUMsZUFBUCxDQUF1QixxQkFBdkIsQ0FBNkMsVUFBN0MsR0FBd0QsTUFBTSxDQUFDLENBQUQsQ0FBTixDQUFVLFVBQWxFO0FBR0osT0FkRCxNQWNPO0FBQ0EsWUFBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsWUFBNUMsS0FBMkQsU0FBL0QsRUFDSSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsWUFBNUMsR0FBMkQsRUFBM0Q7QUFFSCxRQUFBLEdBQUcsR0FBRyxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsWUFBNUMsQ0FBeUQsR0FBekQsQ0FBNkQsVUFBUyxDQUFULEVBQVk7QUFBRSxpQkFBTyxDQUFDLENBQUMsRUFBVDtBQUFjLFNBQXpGLEVBQTJGLE9BQTNGLENBQW1HLE1BQU0sQ0FBQyxDQUFELENBQU4sQ0FBVSxVQUFWLENBQXFCLEVBQXhILENBQU47QUFFQSxZQUFJLEdBQUcsR0FBQyxDQUFSLEVBQ0UsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLFlBQTVDLENBQXlELElBQXpELENBQThELE1BQU0sQ0FBQyxDQUFELENBQU4sQ0FBVSxVQUF4RTtBQUVILFFBQUEsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsb0JBQXZCLENBQTRDLFVBQTVDLEdBQXVELE1BQU0sQ0FBQyxDQUFELENBQU4sQ0FBVSxVQUFqRTtBQUVOO0FBRUYsS0FsR29ELENBa0dwRDs7QUFDSixHQW5HRDs7QUFxR0EsRUFBQSxNQUFNLENBQUMsc0JBQVAsR0FBZ0MsVUFBUyxlQUFULEVBQXlCLFVBQXpCLEVBQW9DO0FBRWhFLFFBQUksZ0JBQWdCLEdBQUcsRUFBdkI7QUFDQSxJQUFBLGdCQUFnQixDQUFDLEtBQWpCLEdBQXlCLEVBQXpCO0FBQ0EsSUFBQSxnQkFBZ0IsQ0FBQyxNQUFqQixHQUEwQixFQUExQjtBQUVBLElBQUEsZ0JBQWdCLENBQUMsS0FBakIsQ0FBdUIsSUFBdkIsR0FBOEIsRUFBOUI7QUFDQSxJQUFBLGdCQUFnQixDQUFDLE1BQWpCLENBQXdCLElBQXhCLEdBQStCLEVBQS9CO0FBRUEsSUFBQSxnQkFBZ0IsQ0FBQyxLQUFqQixDQUF1QixZQUF2QixHQUFxQyxlQUFlLENBQUMsb0JBQWhCLENBQXFDLFVBQTFFO0FBQ0EsSUFBQSxnQkFBZ0IsQ0FBQyxLQUFqQixDQUF1QixVQUF2QixHQUFrQyxlQUFlLENBQUMsb0JBQWhCLENBQXFDLFFBQXZFO0FBRUEsSUFBQSxnQkFBZ0IsQ0FBQyxLQUFqQixDQUF1QixZQUF2QixHQUFzQyxlQUFlLENBQUMsbUJBQWhCLENBQW9DLFVBQTFFO0FBQ0EsSUFBQSxnQkFBZ0IsQ0FBQyxNQUFqQixDQUF3QixZQUF4QixHQUF1QyxlQUFlLENBQUMsb0JBQWhCLENBQXFDLFVBQTVFO0FBSUEsUUFBSSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsWUFBdkU7QUFDQSxRQUFJLG1CQUFtQixHQUFJLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG1CQUF2QixDQUEyQyxZQUF0RTtBQUVBLFFBQUkscUJBQXFCLEdBQUcsTUFBTSxDQUFDLGVBQVAsQ0FBdUIscUJBQXZCLENBQTZDLFlBQXpFO0FBQ0EsUUFBSSxvQkFBb0IsR0FBSSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsWUFBeEU7QUFFQSxRQUFJLG9CQUFvQixLQUFHLFNBQTNCLEVBQXNDLG9CQUFvQixHQUFHLEVBQXZCO0FBQ3RDLFFBQUksbUJBQW1CLEtBQUcsU0FBMUIsRUFBcUMsbUJBQW1CLEdBQUcsRUFBdEI7QUFDckMsUUFBSSxxQkFBcUIsS0FBRyxTQUE1QixFQUF1QyxxQkFBcUIsR0FBRyxFQUF4QjtBQUN2QyxRQUFJLG9CQUFvQixLQUFHLFNBQTNCLEVBQXNDLG9CQUFvQixHQUFHLEVBQXZCO0FBQ3RDLFFBQUksUUFBUSxHQUFDLEVBQWI7QUFDQSxRQUFJLENBQUMsR0FBRyxDQUFSO0FBRUEsSUFBQSxRQUFRLENBQUMsU0FBVCxHQUFtQixNQUFNLENBQUMsTUFBMUI7QUFDQSxJQUFBLFFBQVEsQ0FBQyxTQUFULEdBQW1CLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLE1BQWxEO0FBQ0EsSUFBQSxRQUFRLENBQUMsU0FBVCxHQUFtQixVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixNQUFsRDtBQUNBLElBQUEsUUFBUSxDQUFDLGVBQVQsR0FBeUIsSUFBSSxJQUFKLEVBQXpCO0FBRUEsSUFBQSxRQUFRLENBQUMsV0FBVCxHQUF1QixDQUF2QjtBQUNBLElBQUEsUUFBUSxDQUFDLFNBQVQsR0FBcUIsQ0FBckIsQ0FwQ2dFLENBcUNoRTs7QUFFQSxRQUFJLFVBQVUsS0FBRyxDQUFqQixFQUNBO0FBQ0ksV0FBSyxDQUFDLEdBQUMsQ0FBUCxFQUFTLENBQUMsR0FBQyxtQkFBbUIsQ0FBQyxNQUEvQixFQUFzQyxDQUFDLEVBQXZDLEVBRUQ7QUFFSyxRQUFBLFFBQVEsQ0FBQyxVQUFULEdBQXFCLG1CQUFtQixDQUFDLENBQUQsQ0FBbkIsQ0FBdUIsRUFBNUM7QUFDQSxRQUFBLFFBQVEsQ0FBQyxXQUFULEdBQXVCLGdCQUF2QjtBQUNBLFFBQUEsUUFBUSxDQUFDLFVBQVQsR0FBc0IsTUFBTSxDQUFDLGVBQVAsQ0FBdUIsbUJBQXZCLENBQTJDLFVBQWpFO0FBQ0EsUUFBQSxnQkFBZ0IsQ0FBQyxLQUFqQixDQUF1QixJQUF2QixDQUE0QixJQUE1QixDQUFpQyxPQUFPLENBQUMsSUFBUixDQUFhLFFBQWIsQ0FBakM7QUFFSjs7QUFDQyxXQUFLLENBQUMsR0FBQyxDQUFQLEVBQVMsQ0FBQyxHQUFDLG9CQUFvQixDQUFDLE1BQWhDLEVBQXVDLENBQUMsRUFBeEMsRUFDRjtBQUVJLFFBQUEsUUFBUSxDQUFDLFVBQVQsR0FBcUIsb0JBQW9CLENBQUMsQ0FBRCxDQUFwQixDQUF3QixFQUE3QztBQUNBLFFBQUEsUUFBUSxDQUFDLFdBQVQsR0FBdUIsZ0JBQXZCO0FBQ0EsUUFBQSxRQUFRLENBQUMsVUFBVCxHQUFzQixNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsQ0FBNEMsVUFBbEU7QUFDQSxRQUFBLGdCQUFnQixDQUFDLE1BQWpCLENBQXdCLElBQXhCLENBQTZCLElBQTdCLENBQWtDLE9BQU8sQ0FBQyxJQUFSLENBQWEsUUFBYixDQUFsQztBQUVIO0FBQ0g7O0FBQ0QsUUFBSSxVQUFVLEtBQUcsQ0FBakIsRUFDQTtBQUNFLFdBQUssQ0FBQyxHQUFDLENBQVAsRUFBUyxDQUFDLEdBQUMsb0JBQW9CLENBQUMsTUFBaEMsRUFBdUMsQ0FBQyxFQUF4QyxFQUNDO0FBRUssUUFBQSxRQUFRLENBQUMsVUFBVCxHQUFzQixvQkFBb0IsQ0FBQyxDQUFELENBQXBCLENBQXdCLEVBQTlDO0FBQ0EsUUFBQSxRQUFRLENBQUMsV0FBVCxHQUF1QixpQkFBdkI7QUFDQSxRQUFBLFFBQVEsQ0FBQyxVQUFULEdBQXNCLE1BQU0sQ0FBQyxlQUFQLENBQXVCLG9CQUF2QixDQUE0QyxVQUFsRTtBQUVBLFFBQUEsZ0JBQWdCLENBQUMsS0FBakIsQ0FBdUIsSUFBdkIsQ0FBNEIsSUFBNUIsQ0FBaUMsT0FBTyxDQUFDLElBQVIsQ0FBYSxRQUFiLENBQWpDO0FBRUo7O0FBQ0QsV0FBSyxDQUFDLEdBQUMsQ0FBUCxFQUFTLENBQUMsR0FBQyxxQkFBcUIsQ0FBQyxNQUFqQyxFQUF3QyxDQUFDLEVBQXpDLEVBQ0E7QUFFSyxRQUFBLFFBQVEsQ0FBQyxVQUFULEdBQXFCLHFCQUFxQixDQUFDLENBQUQsQ0FBckIsQ0FBeUIsRUFBOUM7QUFDQSxRQUFBLFFBQVEsQ0FBQyxXQUFULEdBQXVCLGlCQUF2QjtBQUNBLFFBQUEsUUFBUSxDQUFDLFVBQVQsR0FBc0IsTUFBTSxDQUFDLGVBQVAsQ0FBdUIscUJBQXZCLENBQTZDLFVBQW5FO0FBRUEsUUFBQSxnQkFBZ0IsQ0FBQyxNQUFqQixDQUF3QixJQUF4QixDQUE2QixJQUE3QixDQUFrQyxPQUFPLENBQUMsSUFBUixDQUFhLFFBQWIsQ0FBbEM7QUFFSjtBQUNIOztBQUdELFdBQU8sZ0JBQVA7QUFDSCxHQXZGRDs7QUF5RkEsRUFBQSxNQUFNLENBQUMsb0JBQVAsR0FBOEIsWUFDOUI7QUFDWSxRQUFJLElBQUksR0FBRywyQkFBWCxDQURaLENBRVk7O0FBQ0EsSUFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLElBQVYsRUFBZSxFQUFmO0FBRVgsR0FORDs7QUFRQSxFQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUE0QixVQUFTLEtBQVQsRUFDNUI7QUFDYyxJQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsd0JBQWIsQ0FBc0MsS0FBdEM7QUFDQSxJQUFBLE1BQU0sQ0FBQyxtQkFBUCxHQUEyQixNQUFNLENBQUMsS0FBUCxDQUFhLHdCQUFiLEVBQTNCO0FBRWIsR0FMRDtBQU9BO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0ksRUFBQSxNQUFNLENBQUMsTUFBUCxDQUFjLDRCQUFkLEVBQTJDLFVBQVMsUUFBVCxFQUFrQixRQUFsQixFQUEyQjtBQUV0RCxRQUFJLFFBQVEsSUFBRSxRQUFkLEVBQ0E7QUFDQyxNQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXFCLE1BQU0sQ0FBQyxLQUFQLENBQWEsa0JBQWIsRUFBckI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxtQkFBUCxHQUE2QixNQUFNLENBQUMsS0FBUCxDQUFhLHdCQUFiLEVBQTdCO0FBQ0E7QUFDaEIsR0FQRDs7QUFTQSxNQUFJLE1BQU0sQ0FBQyxNQUFQLElBQWUsU0FBbkIsRUFBOEI7QUFDMUIsSUFBQSxNQUFNLENBQUMsR0FBUCxDQUFXLGdCQUFYLENBQTRCLEdBQTVCO0FBQ0g7O0FBRUMsRUFBQSxNQUFNLENBQUMsU0FBUCxHQUFpQixNQUFNLENBQUMsT0FBUCxDQUFlLElBQWhDO0FBQ0EsRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQixNQUFNLENBQUMsT0FBUCxDQUFlLE1BQXBDO0FBSUQ7O0FBRUUsU0FBUyxzQkFBVCxDQUFpQyxNQUFqQyxFQUF5QyxVQUF6QyxFQUFvRCxRQUFwRCxFQUE2RCxlQUE3RCxFQUE2RSxpQkFBN0UsRUFBK0YsZ0JBQS9GLEVBQWdILFdBQWhILEVBQTRILFlBQTVILEVBQXlJLGVBQXpJLEVBQXlKLGVBQXpKLEVBQXlLLHFCQUF6SyxFQUErTCx5QkFBL0wsRUFBeU4sTUFBek4sRUFBZ08sUUFBaE8sRUFBME87QUFDOU8sRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFnQix3QkFBaEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxHQUFQLEdBQWEscUJBQWI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxHQUFQLENBQVcsdUJBQVgsQ0FBbUMsTUFBbkM7O0FBRUMsRUFBQSxNQUFNLENBQUMsZUFBUCxHQUF5QixZQUV6QjtBQUNFLElBQUEsTUFBTSxDQUFDLElBQVAsR0FBYyxxQkFBcUIsQ0FBQyxlQUF0QixFQUFkO0FBRUQsR0FMRDs7QUFNQSxFQUFBLE1BQU0sQ0FBQyxHQUFQLENBQVcsc0JBQVgsRUFBa0MsVUFBUyxLQUFULEVBQWUsSUFBZixFQUFvQjtBQUN4QyxJQUFBLE1BQU0sQ0FBQyxlQUFQO0FBQ2IsR0FGRDtBQU1IOztBQUNNLFNBQVMsb0JBQVQsQ0FBK0IsTUFBL0IsRUFBdUMsVUFBdkMsRUFBa0QsZUFBbEQsRUFBa0UsaUJBQWxFLEVBQW9GLGdCQUFwRixFQUFxRyxvQkFBckcsRUFBMEgsZUFBMUgsRUFBMEksTUFBMUksRUFBaUosWUFBakosRUFBK0o7QUFFakssRUFBQSxNQUFNLENBQUMsWUFBUCxHQUF1QixVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixZQUF0RDtBQUNGLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBZ0Isc0JBQWhCO0FBQ0MsRUFBQSxNQUFNLENBQUMscUJBQVAsR0FBNkIsWUFBWSxDQUFDLGlCQUExQzs7QUFFQSxFQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQW9CLFVBQVMsQ0FBVCxFQUFZO0FBQzlCLFdBQVEsTUFBTSxDQUFDLE9BQVAsQ0FBZSxJQUFmLENBQW9CLE9BQXBCLENBQTRCLENBQTVCLEtBQWdDLENBQWhDLEdBQW9DLFFBQXBDLEdBQStDLEVBQXZEO0FBQ0QsR0FGRDs7QUFJQSxFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCO0FBQ2pCLElBQUEsVUFBVSxFQUFFLENBQ1g7QUFBRSxNQUFBLElBQUksRUFBRSxJQUFSO0FBQWMsTUFBQSxXQUFXLEVBQUUsSUFBM0I7QUFBaUMsTUFBQSxlQUFlLEVBQUUsZUFBZSxDQUFDLGdCQUFoQixDQUFpQyxHQUFuRjtBQUF1RixNQUFBLElBQUksRUFBRSxRQUE3RjtBQUF1RyxNQUFBLEtBQUssRUFBQyxJQUE3RztBQUFrSCxNQUFBLFlBQVksRUFBRSxLQUFoSTtBQUF1SSxNQUFBLE9BQU8sRUFBRTtBQUFoSixLQURXLEVBRVg7QUFBRSxNQUFBLElBQUksRUFBRSw2QkFBUjtBQUF1QyxNQUFBLFdBQVcsRUFBRTtBQUFwRCxLQUZXLEVBR1g7QUFBRSxNQUFBLElBQUksRUFBRSxnQ0FBUjtBQUEwQyxNQUFBLFdBQVcsRUFBRTtBQUF2RCxLQUhXLEVBSVg7QUFBRSxNQUFBLElBQUksRUFBRSxvQ0FBUjtBQUE4QyxNQUFBLFdBQVcsRUFBRTtBQUEzRCxLQUpXLEVBS1o7QUFDQztBQUNBO0FBQUUsTUFBQSxJQUFJLEVBQUUsaUNBQVI7QUFBMkMsTUFBQSxXQUFXLEVBQUU7QUFBeEQsS0FQVyxDQURLO0FBV3ZCLElBQUEsY0FBYyxFQUFFLElBWE87QUFZckIsSUFBQSxjQUFjLEVBQUUsSUFaSztBQWF2QixJQUFBLGdCQUFnQixFQUFFLElBYks7QUFjckIsSUFBQSxrQkFBa0IsRUFBRSxJQWRDO0FBZXZCLElBQUEsV0FBVyxFQUFFLEtBZlU7QUFnQnZCLElBQUEseUJBQXlCLEVBQUcsQ0FoQkw7QUFpQnZCLElBQUEsdUJBQXVCLEVBQUcsQ0FqQkg7QUFrQnZCLElBQUEsZUFBZSxFQUFFLElBbEJNO0FBbUJ2QixJQUFBLHdCQUF3QixFQUFFLElBbkJIO0FBb0J2QixJQUFBLG9CQUFvQixFQUFFLElBcEJDLENBcUJ0Qjs7QUFyQnNCLEdBQXJCO0FBd0JELEVBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQXdCLE1BQU0sQ0FBQyxPQUFQLENBQWUsSUFBdkM7QUFDQSxFQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUEwQixNQUFNLENBQUMsTUFBakM7O0FBRUUsRUFBQSxNQUFNLENBQUMsV0FBUCxDQUFtQixhQUFuQixHQUFtQyxVQUFVLE9BQVYsRUFBbUI7QUFDbkQsSUFBQSxNQUFNLENBQUMsT0FBUCxHQUFpQixPQUFqQjtBQUNBLElBQUEsT0FBTyxDQUFDLFNBQVIsQ0FBa0IsRUFBbEIsQ0FBcUIsbUJBQXJCLENBQXlDLE1BQXpDLEVBQWdELFVBQVMsR0FBVCxFQUFhO0FBQzVELE1BQUEsTUFBTSxDQUFDLFlBQVAsR0FBb0IsR0FBRyxDQUFDLFVBQXhCOztBQUVBLFVBQUcsR0FBRyxDQUFDLFVBQVAsRUFBa0I7QUFDYixRQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQW9CLEdBQUcsQ0FBQyxNQUFKLENBQVcsRUFBL0I7QUFDRCxRQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUE0QixHQUFHLENBQUMsTUFBaEM7QUFDQTtBQUNKLEtBUEQ7QUFRRixHQVZEOztBQWNELEVBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQTBCLFlBQVU7QUFFbEMsUUFBSSxJQUFJLEdBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEM7QUFFQSxJQUFBLG9CQUFvQixDQUFDLG9CQUFyQixDQUEwQyxJQUExQyxFQUErQyxNQUEvQyxFQUF1RCxJQUF2RCxDQUE0RCxVQUFTLElBQVQsRUFBZTtBQUUvQyxNQUFBLE1BQU0sQ0FBQyxXQUFQLENBQW1CLElBQW5CLEdBQTBCLElBQUksQ0FBQyxJQUEvQjtBQUdGLEtBTDFCLEVBSzJCLFVBQVMsS0FBVCxFQUFlO0FBRWQsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDTCxLQVJ2QjtBQVNELEdBYkQsQ0FuRGtLLENBbUVsSzs7O0FBQ0EsRUFBQSxNQUFNLENBQUMsZ0JBQVA7O0FBQ0MsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixVQUFVLFNBQVYsRUFBb0I7QUFFcEIsSUFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLHVCQUFWLEVBQWtDO0FBQUMsTUFBQSxFQUFFLEVBQUUsU0FBTDtBQUFlLE1BQUEsYUFBYSxFQUFDLE1BQU0sQ0FBQyxPQUFQLENBQWUsSUFBNUM7QUFBaUQsTUFBQSxlQUFlLEVBQUMsTUFBTSxDQUFDLE1BQXhFO0FBQStFLE1BQUEsVUFBVSxFQUFDLENBQTFGO0FBQTRGLE1BQUEsb0JBQW9CLEVBQUMsTUFBTSxDQUFDLGFBQXhIO0FBQXNJLE1BQUEsU0FBUyxFQUFDO0FBQWhKLEtBQWxDO0FBRVQsR0FKYjs7QUFNQSxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLFlBQVU7QUFFbEMsUUFBSSxJQUFJLEdBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEM7QUFDQSxRQUFJLElBQUksR0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixNQUF4QztBQUlBLElBQUEsb0JBQW9CLENBQUMsa0NBQXJCLENBQXdELElBQXhELEVBQTZELE1BQTdELEVBQW9FLElBQXBFLEVBQTBFLElBQTFFLENBQStFLFVBQVMsSUFBVCxFQUFlO0FBRWxFO0FBQ0EsTUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUF0QztBQUNILEtBSnpCLEVBSTBCLFVBQVMsS0FBVCxFQUFlO0FBRWIsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDTCxLQVB2QjtBQVFELEdBZkE7O0FBaUJELEVBQUEsTUFBTSxDQUFDLGVBQVA7QUFFQzs7QUFDRSxTQUFTLFlBQVQsQ0FBdUIsTUFBdkIsRUFBK0IsVUFBL0IsRUFBMEMsUUFBMUMsRUFBbUQsZUFBbkQsRUFBbUUsaUJBQW5FLEVBQXFGLGdCQUFyRixFQUFzRyxXQUF0RyxFQUFrSCxZQUFsSCxFQUErSCxlQUEvSCxFQUErSSxlQUEvSSxFQUErSixlQUEvSixFQUErSyx5QkFBL0ssRUFBeU0sTUFBek0sRUFBZ04sUUFBaE4sRUFBME47QUFFN04sRUFBQSxNQUFNLENBQUMsS0FBUCxHQUFhLGVBQWI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxFQUFQLEdBQVUsRUFBVjtBQUNBLEVBQUEsTUFBTSxDQUFDLG1CQUFQLEdBQTJCO0FBQUMsSUFBQSxTQUFTLEVBQUMsSUFBWDtBQUFnQixJQUFBLGNBQWMsRUFBQztBQUEvQixHQUEzQixDQUo2TixDQUs3TjtBQUNBOztBQUNBLEVBQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxlQUFiLENBQTZCLFNBQTdCOztBQUVBLEVBQUEsTUFBTSxDQUFDLGlCQUFQLEdBQXlCLFlBQVU7QUFFL0IsSUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBNkIsTUFBTSxDQUFDLEtBQVAsQ0FBYSxvQkFBYixFQUE3QjtBQUdILEdBTEQsQ0FUNk4sQ0FnQjdOO0FBQ0E7O0FBRUg7O0FBQ00sU0FBUyxjQUFULENBQXlCLE1BQXpCLEVBQWlDLFVBQWpDLEVBQTRDLFFBQTVDLEVBQXFELGVBQXJELEVBQXFFLGlCQUFyRSxFQUF1RixnQkFBdkYsRUFBd0csV0FBeEcsRUFBb0gsWUFBcEgsRUFBaUksZUFBakksRUFBaUosZUFBakosRUFBaUssZUFBakssRUFBaUwseUJBQWpMLEVBQTJNLE1BQTNNLEVBQWtOLFFBQWxOLEVBQTROO0FBRS9OLE1BQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFQLENBQWMsTUFBM0I7QUFDQSxNQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBUCxDQUFjLFNBQTlCO0FBQ0EsTUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQVAsQ0FBYyxPQUE1QjtBQUNBLEVBQUEsVUFBVSxDQUFDLFNBQVgsR0FBc0IsZUFBYSxTQUFuQztBQUNBLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBZ0IsZ0JBQWhCO0FBQ0EsRUFBQSxNQUFNLENBQUMsU0FBUCxHQUFpQixFQUFqQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsR0FBNEIsSUFBNUI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXNCLEVBQXRCO0FBQ0EsRUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixHQUFrQyxTQUFsQztBQUVBLEVBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsR0FBZ0MsT0FBaEM7QUFDQSxFQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLGNBQWpCLEdBQWtDLE1BQWxDO0FBRUg7O0FBRU0sU0FBUyxnQkFBVCxDQUEyQixNQUEzQixFQUFtQyxVQUFuQyxFQUE4QyxRQUE5QyxFQUF1RCxlQUF2RCxFQUF1RSxpQkFBdkUsRUFBeUYsZ0JBQXpGLEVBQTBHLFlBQTFHLEVBQXVILGVBQXZILEVBQXVJLGVBQXZJLEVBQXVKLHlCQUF2SixFQUFpTCxNQUFqTCxFQUF3TCxRQUF4TCxFQUFrTTtBQUNuTSxFQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWdCLGtCQUFoQjtBQUNELEVBQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTBCLEtBQTFCO0FBQ0MsRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFnQixLQUFoQjtBQUNBLEVBQUEsTUFBTSxDQUFDLFNBQVAsR0FBaUIsWUFBWSxDQUFDLEVBQTlCO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFvQixZQUFZLENBQUMsb0JBQWpDO0FBQ0EsRUFBQSxNQUFNLENBQUMscUJBQVAsR0FBNkIsWUFBWSxDQUFDLFVBQTFDO0FBQ0EsRUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBMkIsWUFBWSxDQUFDLGlCQUF4QztBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBb0IsTUFBcEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLGVBQWUsQ0FBQyxrQkFBaEIsRUFBdEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUF5QixLQUF6QjtBQUNBLEVBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsT0FBakIsR0FBMkIsRUFBM0I7QUFDQSxFQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLElBQWpCLEdBQXdCLEVBQXhCO0FBRUEsRUFBQSxNQUFNLENBQUMsYUFBUCxHQUF1QixhQUF2QjtBQUNBLEVBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQTBCLFFBQTFCO0FBRUEsRUFBQSxNQUFNLENBQUMsYUFBUCxHQUFxQixZQUFZLENBQUMsYUFBbEM7QUFDQSxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXVCLFlBQVksQ0FBQyxlQUFwQztBQUNBLEVBQUEsTUFBTSxDQUFDLG1CQUFQLEdBQTJCLFFBQVEsQ0FBQyxTQUFULENBQW1CLDJCQUFuQixDQUEzQjtBQUNBLEVBQUEsTUFBTSxDQUFDLHFCQUFQLEdBQTZCLFFBQVEsQ0FBQyxTQUFULENBQW1CLDZCQUFuQixDQUE3QjtBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsS0FBdEI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUF5QixLQUF6Qjs7QUFJQSxNQUFJLE1BQU0sQ0FBQyxhQUFQLElBQXNCLFNBQXRCLElBQW1DLE1BQU0sQ0FBQyxhQUFQLElBQXNCLEVBQTdELEVBQ0E7QUFDSSxRQUFJLE1BQU0sQ0FBQyxtQkFBUCxJQUE0QixTQUE1QixJQUF5QyxNQUFNLENBQUMsbUJBQVAsSUFBNEIsRUFBekUsRUFDQTtBQUNFLE1BQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsSUFBdEI7QUFDRCxLQUhELE1BSUE7QUFDRSxNQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXdCLE1BQU0sQ0FBQyxtQkFBL0I7QUFDQSxNQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUEyQixJQUEzQjtBQUNEO0FBR0osR0FaRCxNQVlLO0FBQ0gsSUFBQSxRQUFRLENBQUMsU0FBVCxDQUFtQiwyQkFBbkIsRUFBK0MsTUFBTSxDQUFDLGFBQXREO0FBRUQ7O0FBRUQsTUFBSSxNQUFNLENBQUMsZUFBUCxJQUF3QixTQUE1QixFQUNBO0FBQ0ksUUFBSSxNQUFNLENBQUMscUJBQVAsSUFBOEIsU0FBbEMsRUFDQTtBQUNJLFVBQUksTUFBTSxDQUFDLGlCQUFYLEVBQ0E7QUFDRSxRQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQTBCLE1BQU0sQ0FBQyxxQkFBakM7QUFDRDtBQUNKO0FBRUosR0FWRCxNQVVNLElBQUksTUFBTSxDQUFDLHFCQUFQLElBQThCLFNBQWxDLEVBQ047QUFDRSxJQUFBLFFBQVEsQ0FBQyxTQUFULENBQW1CLDZCQUFuQixFQUFpRCxNQUFNLENBQUMsZUFBeEQ7QUFFRCxHQUpLLE1BS047QUFDSSxRQUFJLE1BQU0sQ0FBQyxpQkFBWCxFQUNBO0FBRUUsTUFBQSxNQUFNLENBQUMsZUFBUCxHQUEwQixNQUFNLENBQUMscUJBQWpDO0FBRUQsS0FMRCxNQU1BO0FBQ0ksTUFBQSxRQUFRLENBQUMsU0FBVCxDQUFtQiw2QkFBbkIsRUFBaUQsTUFBTSxDQUFDLGVBQXhEO0FBQ0g7QUFDSjs7QUFNQSxNQUFJLE1BQU0sQ0FBQyxZQUFQLElBQXFCLFNBQXJCLElBQWtDLE1BQU0sQ0FBQyxZQUFQLElBQXFCLEVBQTNELEVBQ0c7QUFDQztBQUVDLElBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsQ0FBdEI7QUFFRDs7QUFDTCxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLEVBQXpCLENBakZtTSxDQW1GcE07QUFDQztBQUVGO0FBQ0E7O0FBRUUsRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFtQix5QkFBeUIsQ0FBQyxZQUExQixDQUF1QyxNQUFNLENBQUMsU0FBOUMsQ0FBbkI7QUFFRCxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXVCLEVBQXZCO0FBQ0MsRUFBQSxNQUFNLENBQUMsZUFBUCxDQUF1QixvQkFBdkIsR0FBOEMsRUFBOUM7QUFDQSxFQUFBLE1BQU0sQ0FBQyxlQUFQLENBQXVCLHFCQUF2QixHQUErQyxFQUEvQzs7QUFFRyxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLFlBQzNCO0FBQ0UsSUFBQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsQ0FBcUMsVUFBckMsR0FBZ0QsQ0FBQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsQ0FBcUMsVUFBdEY7QUFFQTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxHQWJFOztBQWVILEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsWUFBVTtBQUM5QixRQUFJLElBQUksR0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QztBQUNELElBQUEsTUFBTSxDQUFDLGNBQVAsR0FBc0IsQ0FBdEI7QUFDQSxJQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXFCLENBQXJCO0FBR0YsSUFBQSxlQUFlLENBQUMsZUFBaEIsQ0FBZ0MsTUFBTSxDQUFDLFNBQXZDLEVBQWlELE1BQU0sQ0FBQyxZQUF4RCxFQUFxRSxJQUFyRSxFQUEyRSxJQUEzRSxDQUFnRixVQUFTLElBQVQsRUFBZTtBQUdwRSxNQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBVixDQUFrQixDQUFsQixDQUF4QjtBQUNBLE1BQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsWUFBdEIsR0FBcUMsTUFBTSxDQUFDLFlBQTVDO0FBQ0EsTUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixTQUF0QixHQUFnQyxHQUFoQztBQUNBLE1BQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsV0FBdEIsR0FBb0MsWUFBWSxDQUFDLFFBQWpEO0FBQ0EsTUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixjQUF0QixHQUF1QyxLQUF2Qzs7QUFDQSxVQUFJLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFlBQTFCLEVBQXdDO0FBRXBDLFFBQUEsTUFBTSxDQUFDLGdCQUFQO0FBRUosT0FKQSxNQUtHO0FBQ0MsUUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixJQUFqQixHQUF1QixJQUFJLENBQUMsSUFBTCxDQUFVLFNBQWpDO0FBQ0EsUUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBMEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxrQkFBcEM7QUFDQSxRQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLE9BQWpCLEdBQTBCLElBQUksQ0FBQyxJQUFMLENBQVUsT0FBcEM7QUFFRCxRQUFBLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixVQUExQixHQUFxQztBQUFDLFVBQUEsVUFBVSxFQUFDLElBQVo7QUFBaUIsVUFBQSxZQUFZLEVBQUM7QUFBOUIsU0FBckM7QUFFQSxRQUFBLFFBQVEsQ0FBQyxZQUFVO0FBQUMsVUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsSUFBNUI7QUFBa0MsU0FBOUMsQ0FBUjtBQUNEO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHdUM7QUFDQTtBQUdSLEtBakN2QixFQWlDd0IsVUFBUyxLQUFULEVBQWU7QUFHYixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNMLEtBckNyQjtBQXNDRCxHQTVDRDs7QUE4Q0EsRUFBQSxNQUFNLENBQUMsYUFBUCxHQUF1QixZQUFVO0FBRS9CLElBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVyxNQUFNLENBQUMsYUFBbEIsRUFBaUMsTUFBTSxDQUFDLGVBQXhDO0FBRUQsR0FKRDs7QUFNQyxFQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQixZQUFVO0FBQ25DLFFBQUksSUFBSSxHQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDLENBRG1DLENBRW5DOztBQUNBLFFBQUksYUFBYSxHQUFDLE1BQU0sQ0FBQyxxQkFBUCxFQUFsQjtBQUVBLElBQUEsZUFBZSxDQUFDLFlBQWhCLENBQTZCLE1BQU0sQ0FBQyxTQUFwQyxFQUE4QyxNQUFNLENBQUMsWUFBckQsRUFBa0UsTUFBTSxDQUFDLHFCQUF6RSxFQUErRixFQUEvRixFQUFrRyxNQUFNLENBQUMsZUFBekcsRUFBeUgsYUFBYSxDQUFDLFdBQUQsQ0FBdEksRUFBb0osYUFBYSxDQUFDLGlCQUFELENBQWpLLEVBQXFMLElBQXJMLEVBQTJMLElBQTNMLENBQWdNLFVBQVMsSUFBVCxFQUFlO0FBR25MLFVBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxtQkFBVixDQUE4QixNQUE5QixHQUFxQyxDQUF6QyxFQUNBO0FBQ0EsUUFBQSxNQUFNLENBQUMsZ0JBQVAsR0FBMEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxtQkFBVixDQUE4QixjQUE5QixDQUE2QyxFQUF2RTtBQUNBLFFBQUEsTUFBTSxDQUFDLGVBQVAsR0FBeUIsSUFBSSxDQUFDLElBQUwsQ0FBVSxtQkFBVixDQUE4QixFQUF2RDtBQUVDLE9BTEQsTUFNSyxJQUFJLElBQUksQ0FBQyxJQUFMLENBQVUsb0JBQVYsQ0FBK0IsTUFBL0IsR0FBc0MsQ0FBMUMsRUFDTDtBQUNHLFFBQUEsTUFBTSxDQUFDLGdCQUFQLEdBQTBCLElBQUksQ0FBQyxJQUFMLENBQVUsb0JBQVYsQ0FBK0IsRUFBekQ7QUFDQSxRQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLENBQXpCO0FBRUY7O0FBQ0QsTUFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLDBCQUFWLEVBQXFDO0FBQUMsUUFBQSxFQUFFLEVBQUUsTUFBTSxDQUFDLFNBQVo7QUFBc0IsUUFBQSxnQkFBZ0IsRUFBQyxNQUFNLENBQUMsZ0JBQTlDO0FBQStELFFBQUEsZUFBZSxFQUFDLE1BQU0sQ0FBQyxlQUF0RjtBQUFzRyxRQUFBLGFBQWEsRUFBQyxNQUFNLENBQUMsYUFBM0g7QUFBeUksUUFBQSxlQUFlLEVBQUMsTUFBTSxDQUFDLGVBQWhLO0FBQWdMLFFBQUEsaUJBQWlCLEVBQUMsTUFBTSxDQUFDLG1CQUF6TTtBQUE2TixRQUFBLElBQUksRUFBQyxNQUFNLENBQUM7QUFBek8sT0FBckM7QUFHTCxLQWxCdkIsRUFrQndCLFVBQVMsS0FBVCxFQUFlO0FBRWIsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDTCxLQXJCckIsRUFMbUMsQ0EyQmxDO0FBQ0YsR0E1QkE7O0FBOEJBLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsVUFBUyxJQUFULEVBQWM7QUFDbkMsUUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQWY7QUFDQSxRQUFJLElBQUksQ0FBQyxVQUFULEVBQXFCLE1BQU0sQ0FBQyxZQUFQLENBQW9CLElBQXBCOztBQUNyQixRQUFJLElBQUksQ0FBQyxNQUFULEVBQWlCO0FBRWI7QUFDQSxNQUFBLFVBQVUsQ0FBQyxVQUFYLENBQXNCLG9CQUF0QixFQUEyQyxFQUEzQyxFQUhhLENBR21DOztBQUNoRCxNQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLElBQWxCO0FBQ0EsVUFBSSxJQUFJLEdBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEM7QUFDQSxVQUFJLGFBQWEsR0FBQyxNQUFNLENBQUMscUJBQVAsRUFBbEI7QUFFQSxNQUFBLGVBQWUsQ0FBQyxZQUFoQixDQUE2QixNQUFNLENBQUMsU0FBcEMsRUFBOEMsTUFBTSxDQUFDLFlBQXJELEVBQWtFLE1BQU0sQ0FBQyxxQkFBekUsRUFBK0YsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsSUFBaEgsRUFBcUgsTUFBTSxDQUFDLGVBQTVILEVBQTRJLGFBQWEsQ0FBQyxXQUFELENBQXpKLEVBQXVLLGFBQWEsQ0FBQyxpQkFBRCxDQUFwTCxFQUF3TSxJQUF4TSxFQUE4TSxJQUE5TSxDQUFtTixVQUFTLElBQVQsRUFBZTtBQUV0TztBQUNBO0FBRzBCLFFBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxHQUF0QyxFQUEwQyxTQUExQztBQUNBLFFBQUEsVUFBVSxDQUFDLFVBQVgsQ0FBc0IseUJBQXRCLEVBQWdELElBQUksQ0FBQyxJQUFMLENBQVUsU0FBMUQsRUFQNE0sQ0FRNU07O0FBQ0EsUUFBQSxNQUFNLENBQUMsYUFBUCxHQUF1Qix5QkFBdkI7QUFDQSxRQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQixTQUExQjtBQUNBLFFBQUEsTUFBTSxDQUFDLGFBQVAsR0FBcUIsSUFBckI7QUFHSCxPQWRuQixFQWNvQixVQUFTLEtBQVQsRUFBZTtBQUNkO0FBQ0MsUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDTCxPQWpCakI7QUFtQmMsTUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixLQUFsQixDQTNCRCxDQTZCaEI7QUFFRSxLQS9CSCxDQStCSTtBQS9CSixTQWlDRTtBQUNFLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsNEJBQTVCLEVBQXlELFNBQXpEO0FBRUQ7QUFDSixHQXhDQSxDQWhNa00sQ0F5T2hNOzs7QUFHTCxFQUFBLE1BQU0sQ0FBQyxxQkFBUCxHQUFnQyxZQUNoQztBQUNFLFFBQUksU0FBUyxHQUFHLHlCQUF5QixDQUFDLGVBQTFCLENBQTBDLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFlBQWhFLENBQWhCO0FBQ00sUUFBSSxTQUFTLEdBQUMsQ0FBZDtBQUFBLFFBQWdCLGVBQWUsR0FBQyxDQUFoQzs7QUFDQSxRQUFJLFNBQVMsQ0FBQyxHQUFWLElBQWUsU0FBZixJQUE0QixTQUFTLENBQUMsR0FBVixJQUFlLElBQS9DLEVBQ0E7QUFDQSxXQUFLLElBQUksQ0FBQyxHQUFDLENBQVgsRUFBYSxDQUFDLEdBQUMsU0FBUyxDQUFDLEdBQVYsQ0FBYyxNQUE3QixFQUFvQyxDQUFDLEVBQXJDLEVBQ0E7QUFDRSxZQUFJLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixJQUFqQixJQUF1QixxQkFBM0IsRUFDQTtBQUNFLGNBQUksU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLElBQXdCLFNBQXhCLElBQXFDLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixJQUF3QixJQUFqRSxFQUNBO0FBQ0UsaUJBQUssSUFBSSxDQUFDLEdBQUMsQ0FBWCxFQUFhLENBQUMsR0FBQyxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsTUFBdEMsRUFBNkMsQ0FBQyxFQUE5QyxFQUNBO0FBQ0Msa0JBQUksU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLENBQXZCLEVBQTBCLElBQTFCLElBQWdDLFlBQWhDLElBQWdELFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixDQUF2QixFQUEwQixLQUExQixJQUFpQyxTQUFyRixFQUFnRyxTQUFTLEdBQUMsU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLENBQXZCLEVBQTBCLEtBQXBDO0FBQ2hHLGtCQUFJLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBZCxFQUFpQixLQUFqQixDQUF1QixDQUF2QixFQUEwQixJQUExQixJQUFnQyxrQkFBaEMsSUFBc0QsU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFkLEVBQWlCLEtBQWpCLENBQXVCLENBQXZCLEVBQTBCLEtBQTFCLElBQWlDLFNBQTNGLEVBQXNHLGVBQWUsR0FBQyxTQUFTLENBQUMsR0FBVixDQUFjLENBQWQsRUFBaUIsS0FBakIsQ0FBdUIsQ0FBdkIsRUFBMEIsS0FBMUM7QUFHdEc7QUFHRjtBQUVGO0FBRUE7QUFDRjs7QUFDVCxXQUFPO0FBQUMsbUJBQVksU0FBYjtBQUF1Qix5QkFBa0I7QUFBekMsS0FBUDtBQUNDLEdBNUJEOztBQThCQyxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLFVBQVUsSUFBVixFQUFnQjtBQUNuQyxJQUFBLElBQUksQ0FBQyxhQUFMO0FBQ0EsSUFBQSxPQUFPLENBQUMsT0FBUixDQUFnQixJQUFoQixFQUFzQixVQUFTLElBQVQsRUFBZTtBQUNyQyxVQUFHLElBQUksSUFBSSxJQUFJLENBQUMsWUFBTCxLQUFzQixJQUE5QixJQUFzQyxJQUFJLENBQUMsYUFBOUMsRUFBNkQ7QUFDekQsUUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixJQUFwQjtBQUNIO0FBQ0osS0FKRztBQUtQLEdBUEksQ0ExUW9NLENBa1JuTTs7O0FBQ0EsRUFBQSxNQUFNLENBQUMsZUFBUDtBQUlEOztBQUNFLFNBQVMsZUFBVCxDQUEwQixNQUExQixFQUFrQyxVQUFsQyxFQUE2QyxpQkFBN0MsRUFBK0QsZ0JBQS9ELEVBQWdGLGVBQWhGLEVBQWdHLFlBQWhHLEVBQTZHLGVBQTdHLEVBQTZILFFBQTdILEVBQXNJLE1BQXRJLEVBQTZJLHlCQUE3SSxFQUF1SyxRQUF2SyxFQUFpTDtBQUNuTCxFQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWdCLGlCQUFoQjtBQUNDLE1BQUksTUFBTSxDQUFDLFNBQVAsSUFBa0IsU0FBdEIsRUFBaUMsTUFBTSxDQUFDLFNBQVAsR0FBaUIsRUFBakI7QUFDakMsRUFBQSxNQUFNLENBQUMscUJBQVAsR0FBNkIsS0FBN0I7QUFDQSxFQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUF3QixZQUFZLENBQUMsZ0JBQXJDO0FBQ0EsRUFBQSxNQUFNLENBQUMsZUFBUCxHQUF1QixZQUFZLENBQUMsZUFBcEM7QUFDQSxFQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLFlBQVksQ0FBQyxTQUEvQjtBQUNBLEVBQUEseUJBQXlCLENBQUMsb0JBQTFCLEdBUGtMLENBT2pJOztBQUVqRCxFQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXFCLFlBQVksQ0FBQyxhQUFsQztBQUNBLEVBQUEsTUFBTSxDQUFDLGVBQVAsR0FBdUIsWUFBWSxDQUFDLGVBQXBDO0FBQ0EsRUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBMkIsUUFBUSxDQUFDLFNBQVQsQ0FBbUIsMEJBQW5CLENBQTNCO0FBQ0EsRUFBQSxNQUFNLENBQUMscUJBQVAsR0FBNkIsUUFBUSxDQUFDLFNBQVQsQ0FBbUIsNEJBQW5CLENBQTdCO0FBQ0EsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixLQUF0QjtBQUNBLEVBQUEsTUFBTSxDQUFDLGlCQUFQLEdBQXlCLEtBQXpCO0FBRUEsRUFBQSxNQUFNLENBQUMsU0FBUCxHQUFtQjtBQUFFLElBQUEsT0FBTyxFQUFHLEVBQVo7QUFBZ0IsSUFBQSxJQUFJLEVBQUc7QUFBdkIsR0FBbkI7O0FBRUEsTUFBSSxNQUFNLENBQUMsYUFBUCxJQUFzQixTQUF0QixJQUFtQyxNQUFNLENBQUMsYUFBUCxJQUFzQixFQUE3RCxFQUNBO0FBQ0ksUUFBSSxNQUFNLENBQUMsbUJBQVAsSUFBNEIsU0FBNUIsSUFBeUMsTUFBTSxDQUFDLG1CQUFQLElBQTRCLEVBQXpFLEVBQ0E7QUFDRSxNQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLElBQXRCO0FBQ0QsS0FIRCxNQUlBO0FBQ0UsTUFBQSxNQUFNLENBQUMsYUFBUCxHQUF3QixNQUFNLENBQUMsbUJBQS9CO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsR0FBMkIsSUFBM0I7QUFDRDtBQUdKLEdBWkQsTUFZSztBQUNILElBQUEsUUFBUSxDQUFDLFNBQVQsQ0FBbUIsMEJBQW5CLEVBQThDLE1BQU0sQ0FBQyxhQUFyRDtBQUVEOztBQUVELE1BQUksTUFBTSxDQUFDLGVBQVAsSUFBd0IsU0FBNUIsRUFDQTtBQUNJLFFBQUksTUFBTSxDQUFDLHFCQUFQLElBQThCLFNBQWxDLEVBQ0E7QUFDSSxVQUFJLE1BQU0sQ0FBQyxpQkFBWCxFQUNBO0FBQ0UsUUFBQSxNQUFNLENBQUMsZUFBUCxHQUEwQixNQUFNLENBQUMscUJBQWpDO0FBQ0Q7QUFDSjtBQUVKLEdBVkQsTUFVTSxJQUFJLE1BQU0sQ0FBQyxxQkFBUCxJQUE4QixTQUFsQyxFQUNOO0FBQ0UsSUFBQSxRQUFRLENBQUMsU0FBVCxDQUFtQiw0QkFBbkIsRUFBZ0QsTUFBTSxDQUFDLGVBQXZEO0FBRUQsR0FKSyxNQUtOO0FBQ0ksUUFBSSxNQUFNLENBQUMsaUJBQVgsRUFDQTtBQUVFLE1BQUEsTUFBTSxDQUFDLGVBQVAsR0FBMEIsTUFBTSxDQUFDLHFCQUFqQztBQUVELEtBTEQsTUFNQTtBQUNJLE1BQUEsUUFBUSxDQUFDLFNBQVQsQ0FBbUIsNEJBQW5CLEVBQWdELE1BQU0sQ0FBQyxlQUF2RDtBQUNIO0FBQ0o7O0FBRUQsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFvQixNQUFwQixDQTlEa0wsQ0ErRGxMOztBQUNBLEVBQUEsTUFBTSxDQUFDLFFBQVAsR0FBZ0IsR0FBaEI7QUFFQSxFQUFBLE1BQU0sQ0FBQyxzQkFBUCxHQUE4QixJQUE5Qjs7QUFFRSxFQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXdCLFlBQzFCO0FBQ0UsSUFBQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsQ0FBcUMsVUFBckMsR0FBZ0QsQ0FBQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsQ0FBcUMsVUFBdEY7QUFDRjtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxHQVpDOztBQWNGLEVBQUEsTUFBTSxDQUFDLE1BQVAsR0FBZ0IsWUFBVTtBQUNOLElBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSxNQUFNLENBQUMsYUFBakIsRUFBK0IsTUFBTSxDQUFDLGVBQXRDO0FBRW5CLEdBSEQ7O0FBSUEsRUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsWUFBVTtBQUNoQyxRQUFJLElBQUksR0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4Qzs7QUFDQSxRQUFJLE1BQU0sQ0FBQyxnQkFBUCxLQUEwQixFQUE5QixFQUFrQztBQUNoQyxNQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQixDQUExQjtBQUNEOztBQUNBLFFBQUksTUFBTSxDQUFDLGVBQVAsS0FBeUIsRUFBN0IsRUFBaUM7QUFDaEMsTUFBQSxNQUFNLENBQUMsZUFBUCxHQUF5QixDQUF6QjtBQUNEOztBQUNELElBQUEsZUFBZSxDQUFDLGNBQWhCLENBQStCLE1BQU0sQ0FBQyxnQkFBdEMsRUFBdUQsTUFBTSxDQUFDLGVBQTlELEVBQThFLElBQTlFLEVBQW9GLElBQXBGLENBQXlGLFVBQVMsSUFBVCxFQUFlO0FBRWpGLE1BQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTJCLElBQUksQ0FBQyxJQUFMLENBQVUsa0JBQXJDO0FBRUEsTUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixJQUFJLENBQUMsSUFBTCxDQUFVLE9BQVYsQ0FBa0IsQ0FBbEIsQ0FBeEI7QUFDQSxVQUFJLE1BQU0sQ0FBQyxjQUFQLElBQXVCLFNBQTNCLEVBQXNDLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFdBQXRCLEdBQWtDLEtBQWxDO0FBQ3RDLE1BQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsT0FBakIsQ0FBeUIsTUFBekIsR0FBa0MsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUE1QztBQUNBLE1BQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsSUFBakIsR0FBd0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxTQUFsQztBQUNBLE1BQUEsTUFBTSxDQUFDLG9CQUFQLEdBQThCLElBQUksQ0FBQyxJQUFMLENBQVUsb0JBQXhDO0FBRUEsTUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBNkIsSUFBSSxDQUFDLElBQUwsQ0FBVSxtQkFBdkM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixVQUExQixHQUFxQztBQUFDLFFBQUEsVUFBVSxFQUFDLElBQVo7QUFBaUIsUUFBQSxZQUFZLEVBQUM7QUFBOUIsT0FBckM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCO0FBQUMsUUFBQSxrQkFBa0IsRUFBRSxNQUFNLENBQUMsa0JBQTVCO0FBQStDLFFBQUEsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLG9CQUE1RTtBQUFpRyxRQUFBLG1CQUFtQixFQUFFLE1BQU0sQ0FBQztBQUE3SCxPQUFsQjs7QUFFQSxVQUFJLE1BQU0sQ0FBQyxjQUFQLElBQXVCLFNBQTNCLEVBQ0E7QUFDQyxRQUFBLE1BQU0sQ0FBQyxjQUFQLEdBQXNCLEVBQXRCO0FBRUE7O0FBQ0QsVUFBSSxNQUFNLENBQUMsbUJBQVAsSUFBNEIsU0FBaEMsRUFDQTtBQUNHLFlBQUksTUFBTSxDQUFDLG1CQUFQLENBQTJCLE1BQTNCLEdBQWtDLENBQXRDLEVBQXlDLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGVBQXRCLEdBQXdDLE1BQU0sQ0FBQyxtQkFBUCxDQUEyQixDQUEzQixFQUE4QixFQUF0RSxDQUF6QyxLQUNLLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGVBQXRCLEdBQXdDLENBQXhDO0FBRVA7O0FBQ0QsVUFBSSxNQUFNLENBQUMsb0JBQVAsSUFBNkIsU0FBakMsRUFDQTtBQUNHLFlBQUksTUFBTSxDQUFDLG9CQUFQLENBQTRCLE1BQTVCLEdBQW1DLENBQXZDLEVBQTBDLE1BQU0sQ0FBQyxjQUFQLENBQXNCLGdCQUF0QixHQUF5QyxNQUFNLENBQUMsb0JBQVAsQ0FBNEIsQ0FBNUIsRUFBK0IsRUFBeEUsQ0FBMUMsS0FDTSxNQUFNLENBQUMsY0FBUCxDQUFzQixnQkFBdEIsR0FBdUMsQ0FBdkM7QUFDUjs7QUFDRCxNQUFBLE1BQU0sQ0FBQyxjQUFQLENBQXNCLFNBQXRCLEdBQWdDLEdBQWhDOztBQUVELFVBQUksTUFBTSxDQUFDLGNBQVAsQ0FBc0Isb0JBQXRCLElBQTRDLFNBQTVDLElBQXlELE1BQU0sQ0FBQyxjQUFQLENBQXNCLG9CQUF0QixJQUE0QyxJQUF6RyxFQUNBO0FBQ0UsUUFBQSxNQUFNLENBQUMsY0FBUCxDQUFzQixvQkFBdEIsR0FBNkMsQ0FBN0M7QUFFRDs7QUFFRCxNQUFBLGVBQWUsQ0FBQyxlQUFoQixDQUFnQyxNQUFNLENBQUMsY0FBUCxDQUFzQixnQkFBdEQsRUFBdUUsTUFBTSxDQUFDLGNBQVAsQ0FBc0Isb0JBQTdGLEVBQWtILElBQWxILEVBQXdILElBQXhILENBQTZILFVBQVMsSUFBVCxFQUFlO0FBRXRJLFFBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsR0FBZ0MsSUFBSSxDQUFDLElBQXJDO0FBQ0EsUUFBQSxRQUFRLENBQUMsWUFBVztBQUNmLFVBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsWUFBakIsR0FBOEIsU0FBOUI7QUFDQSxVQUFBLE1BQU0sQ0FBQyxxQkFBUCxHQUE2QixJQUE3QjtBQUNBLFVBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsa0JBQWpCLEdBQW9DLElBQXBDO0FBRUosU0FMTyxDQUFSO0FBT0gsT0FWSCxFQVVJLFVBQVMsS0FBVCxFQUFlO0FBRWIsUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDSCxPQWJIO0FBcUJILEtBM0RuQixFQTJEb0IsVUFBUyxLQUFULEVBQWU7QUFHYixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNMLEtBL0RqQjtBQWdFRjtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNRLEdBckZGOztBQXNGQSxFQUFBLE1BQU0sQ0FBQyxpQkFBUCxHQUEyQixVQUFTLE1BQVQsRUFBZ0I7QUFHbkMsUUFBSSxJQUFJLEdBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEM7QUFHRCxJQUFBLGVBQWUsQ0FBQyxpQkFBaEIsQ0FBa0MsTUFBTSxDQUFDLGdCQUF6QyxFQUEwRCxNQUFNLENBQUMsZUFBakUsRUFBaUYsTUFBakYsRUFBd0YsSUFBeEYsRUFBNkYsTUFBTSxDQUFDLFFBQXBHLEVBQThHLElBQTlHLENBQW1ILFVBQVMsSUFBVCxFQUFlO0FBRzNHLE1BQUEsTUFBTSxDQUFDLG9CQUFQLEdBQTZCLElBQUksQ0FBQyxJQUFMLENBQVUsSUFBVixDQUFlLG9CQUFmLENBQW9DLENBQXBDLENBQTdCO0FBQ0EsTUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBNEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUFWLENBQWUsbUJBQWYsQ0FBbUMsQ0FBbkMsQ0FBNUI7O0FBRUEsVUFBSSxNQUFNLENBQUMsZUFBUCxJQUF3QixDQUF4QixJQUE4QixNQUFNLENBQUMsbUJBQVAsSUFBNEIsU0FBOUQsRUFDQTtBQUNHLFFBQUEsTUFBTSxDQUFDLEVBQVAsQ0FBVSwwQkFBVixFQUFxQztBQUFDLFVBQUEsRUFBRSxFQUFFLE1BQU0sQ0FBQyxjQUFQLENBQXNCLEVBQTNCO0FBQThCLFVBQUEsZ0JBQWdCLEVBQUMsQ0FBL0M7QUFBaUQsVUFBQSxlQUFlLEVBQUMsTUFBTSxDQUFDLG1CQUFQLENBQTJCLEVBQTVGO0FBQStGLFVBQUEsYUFBYSxFQUFDLE1BQU0sQ0FBQyxPQUFQLENBQWUsSUFBNUg7QUFBaUksVUFBQSxlQUFlLEVBQUMsTUFBTSxDQUFDLE1BQXhKO0FBQStKLFVBQUEsSUFBSSxFQUFDLE1BQU0sQ0FBQztBQUEzSyxTQUFyQztBQUdGOztBQUVELE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxHQUF0QyxFQUEwQyxTQUExQztBQUdMLEtBaEJsQixFQWdCbUIsVUFBUyxLQUFULEVBQWU7QUFHYixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNMLEtBcEJoQjtBQXFCTixHQTNCRDs7QUE0QkMsRUFBQSxNQUFNLENBQUMsa0JBQVA7QUFFQSxFQUFBLE1BQU0sQ0FBQyxHQUFQLENBQVcsZ0JBQWMsTUFBTSxDQUFDLGVBQWhDLEVBQWdELFVBQVMsS0FBVCxFQUFlLElBQWYsRUFBb0I7QUFDN0QsSUFBQSxNQUFNLENBQUMsV0FBUCxDQUFtQixJQUFJLENBQUMsSUFBeEIsRUFBNkIsSUFBSSxDQUFDLFNBQWxDO0FBQ0gsR0FGSjtBQUtBLEVBQUEsTUFBTSxDQUFDLEdBQVAsQ0FBVyx3QkFBWCxFQUFvQyxVQUFTLEtBQVQsRUFBZSxJQUFmLEVBQW9CO0FBQ2pELElBQUEsTUFBTSxDQUFDLGtCQUFQO0FBQ0gsR0FGSjtBQUlFLEVBQUEsTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLEVBQXlCLFVBQVMsS0FBVCxFQUFlLElBQWYsRUFBb0I7QUFDeEMsSUFBQSxNQUFNLENBQUMsa0JBQVA7QUFDSCxHQUZGOztBQUlILEVBQUEsTUFBTSxDQUFDLFdBQVAsR0FBcUIsVUFBUyxJQUFULEVBQWMsU0FBZCxFQUF3QjtBQUdyQyxRQUFJLElBQUksR0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QyxDQUhxQyxDQUtyQzs7QUFDRCxRQUFJLElBQUksQ0FBQyxVQUFULEVBQXFCLE1BQU0sQ0FBQyxZQUFQLENBQW9CLElBQXBCOztBQUNwQixRQUFJLElBQUksQ0FBQyxNQUFULEVBQWlCO0FBRWpCLE1BQUEsZUFBZSxDQUFDLFdBQWhCLENBQTRCLE1BQU0sQ0FBQyxlQUFuQyxFQUFtRCxNQUFNLENBQUMsU0FBUCxDQUFpQixJQUFwRSxFQUF5RSxTQUF6RSxFQUFtRixJQUFuRixFQUF5RixJQUF6RixDQUE4RixVQUFTLElBQVQsRUFBZTtBQUVuRyxRQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLElBQUksQ0FBQyxJQUFMLENBQVUsR0FBdEMsRUFBMEMsU0FBMUM7QUFDQSxRQUFBLFVBQVUsQ0FBQyxVQUFYLENBQXNCLHdCQUF0QixFQUErQyxJQUFJLENBQUMsSUFBTCxDQUFVLFNBQXpEO0FBQ0QsT0FKVCxFQUlVLFVBQVMsS0FBVCxFQUFlO0FBRWYsUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFFVCxPQVJEO0FBVUgsS0FaRyxDQVlGO0FBWkUsU0FjSjtBQUNFLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsNEJBQTVCLEVBQXlELFNBQXpEO0FBRUQ7QUFDSixHQXpCRCxDQXZOa0wsQ0FpUC9LOzs7QUFFSixFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLFVBQVUsSUFBVixFQUFnQjtBQUNuQyxJQUFBLElBQUksQ0FBQyxhQUFMO0FBQ0EsSUFBQSxPQUFPLENBQUMsT0FBUixDQUFnQixJQUFoQixFQUFzQixVQUFTLElBQVQsRUFBZTtBQUNyQyxVQUFHLElBQUksSUFBSSxJQUFJLENBQUMsWUFBTCxLQUFzQixJQUE5QixJQUFzQyxJQUFJLENBQUMsYUFBOUMsRUFBNkQ7QUFDekQsUUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixJQUFwQjtBQUNIO0FBQ0osS0FKRztBQUtQLEdBUEk7QUFVQTs7QUFDRSxTQUFTLG1CQUFULENBQThCLE1BQTlCLEVBQXNDLFVBQXRDLEVBQWlELGlCQUFqRCxFQUFtRSxnQkFBbkUsRUFBb0YsZUFBcEYsRUFBb0csTUFBcEcsRUFBMkcsUUFBM0csRUFBcUg7QUFDNUgsRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFnQixxQkFBaEI7QUFFSSxFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQWlCLE1BQU0sQ0FBQyxPQUFQLENBQWUsSUFBaEM7QUFDQSxFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLE1BQU0sQ0FBQyxPQUFQLENBQWUsTUFBcEM7QUFFQyxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXVCLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLFlBQXREO0FBRUQsRUFBQSxNQUFNLENBQUMsV0FBUCxHQUFxQjtBQUNyQixJQUFBLGNBQWMsRUFBRSxJQURLO0FBRXJCO0FBQ0Y7QUFDRSxJQUFBLGtCQUFrQixFQUFFLElBSkM7QUFLdkIsSUFBQSxXQUFXLEVBQUUsS0FMVTtBQU12QixJQUFBLHlCQUF5QixFQUFHLENBTkw7QUFPdkIsSUFBQSx1QkFBdUIsRUFBRyxDQVBIO0FBUXZCO0FBQ0EsSUFBQSx3QkFBd0IsRUFBRSxJQVRIO0FBVXZCLElBQUEsb0JBQW9CLEVBQUUsSUFWQztBQVdyQixJQUFBLHFCQUFxQixFQUFFLElBWEY7QUFZckIsSUFBQSxtQkFBbUIsRUFBRSxDQUFDLENBQUQsRUFBRyxFQUFILEVBQU8sRUFBUCxFQUFXLEVBQVgsRUFBYyxHQUFkLEVBQWtCLEdBQWxCLEVBQXNCLEdBQXRCLEVBQTBCLElBQTFCLENBWkE7QUFhckIsSUFBQSx3QkFBd0IsRUFBRSxLQWJMLENBY3JCO0FBQ0E7QUFDQTtBQUNEOztBQWpCc0IsR0FBckI7QUFvQkYsTUFBSSxpQkFBaUIsR0FBRztBQUN0QixJQUFBLFVBQVUsRUFBRSxDQURVO0FBRXRCLElBQUEsUUFBUSxFQUFFLEVBRlk7QUFHdEIsSUFBQSxJQUFJLEVBQUU7QUFIZ0IsR0FBeEI7QUFNRSxNQUFJLGtCQUFrQixHQUFHLENBQ3BCO0FBQUUsSUFBQSxJQUFJLEVBQUUscUJBQVI7QUFBK0IsSUFBQSxXQUFXLEVBQUUsSUFBNUM7QUFBa0QsSUFBQSxJQUFJLEVBQUUsUUFBeEQ7QUFBa0UsSUFBQSxLQUFLLEVBQUMsSUFBeEU7QUFBNkUsSUFBQSxZQUFZLEVBQUUsS0FBM0Y7QUFBa0csSUFBQSxPQUFPLEVBQUU7QUFBM0csR0FEb0IsRUFFcEI7QUFBRSxJQUFBLElBQUksRUFBRSxtQ0FBUjtBQUE2QyxJQUFBLFdBQVcsRUFBRTtBQUExRCxHQUZvQixFQUdwQjtBQUFFLElBQUEsSUFBSSxFQUFFLGtEQUFSO0FBQTRELElBQUEsV0FBVyxFQUFFO0FBQXpFLEdBSG9CLEVBSXBCO0FBQUUsSUFBQSxJQUFJLEVBQUUsMERBQVI7QUFBb0UsSUFBQSxXQUFXLEVBQUU7QUFBakYsR0FKb0IsRUFLcEI7QUFBRSxJQUFBLElBQUksRUFBRSxpRUFBUjtBQUEyRSxJQUFBLFdBQVcsRUFBRTtBQUF4RixHQUxvQixFQU1wQjtBQUFFLElBQUEsSUFBSSxFQUFFLGlDQUFSO0FBQTJDLElBQUEsV0FBVyxFQUFFLGFBQXhEO0FBQXNFLElBQUEsWUFBWSxFQUFFLEtBQXBGO0FBQTBGLElBQUEsT0FBTyxFQUFFO0FBQW5HLEdBTm9CLEVBT3BCO0FBQUUsSUFBQSxJQUFJLEVBQUUsa0NBQVI7QUFBNEMsSUFBQSxXQUFXLEVBQUUsY0FBekQ7QUFBd0UsSUFBQSxZQUFZLEVBQUUsS0FBdEY7QUFBNEYsSUFBQSxJQUFJLEVBQUUsTUFBbEc7QUFBMEcsSUFBQSxVQUFVLEVBQUU7QUFBdEgsR0FQb0IsRUFRcEI7QUFBRSxJQUFBLElBQUksRUFBRSxpQ0FBUjtBQUEyQyxJQUFBLFdBQVcsRUFBRTtBQUF4RCxHQVJvQixFQVNwQjtBQUFFLElBQUEsSUFBSSxFQUFFLGVBQVI7QUFBeUIsSUFBQSxXQUFXLEVBQUU7QUFBdEMsR0FUb0IsQ0FBekI7QUFZRCxNQUFJLGlCQUFpQixHQUFHLENBQ2xCO0FBQUUsSUFBQSxJQUFJLEVBQUUsSUFBUjtBQUFjLElBQUEsV0FBVyxFQUFFLGlCQUEzQjtBQUE4QyxJQUFBLElBQUksRUFBRSxRQUFwRDtBQUE4RCxJQUFBLEtBQUssRUFBQyxLQUFwRTtBQUEwRSxJQUFBLFlBQVksRUFBRSxLQUF4RjtBQUErRixJQUFBLE9BQU8sRUFBRTtBQUF4RyxHQURrQixFQUVsQjtBQUFFLElBQUEsSUFBSSxFQUFFLHlDQUFSO0FBQW1ELElBQUEsV0FBVyxFQUFFO0FBQWhFLEdBRmtCLEVBR2xCO0FBQUUsSUFBQSxJQUFJLEVBQUUsZ0RBQVI7QUFBMEQsSUFBQSxXQUFXLEVBQUU7QUFBdkUsR0FIa0IsRUFJbEI7QUFBRSxJQUFBLElBQUksRUFBRSxrQkFBUjtBQUE0QixJQUFBLFdBQVcsRUFBRTtBQUF6QyxHQUprQixFQUtsQjtBQUFFLElBQUEsSUFBSSxFQUFFLGlDQUFSO0FBQTJDLElBQUEsV0FBVyxFQUFFO0FBQXhELEdBTGtCLEVBTWxCO0FBQUUsSUFBQSxJQUFJLEVBQUUsNEJBQVI7QUFBc0MsSUFBQSxXQUFXLEVBQUU7QUFBbkQsR0FOa0IsRUFPbEI7QUFBRSxJQUFBLElBQUksRUFBRSxnQkFBUjtBQUEwQixJQUFBLFdBQVcsRUFBRSxhQUF2QztBQUFxRCxJQUFBLFlBQVksRUFBRSxLQUFuRTtBQUF5RSxJQUFBLE9BQU8sRUFBRTtBQUFsRixHQVBrQixFQVFsQjtBQUFFLElBQUEsSUFBSSxFQUFFLGlCQUFSO0FBQTJCLElBQUEsV0FBVyxFQUFFLGNBQXhDO0FBQXVELElBQUEsWUFBWSxFQUFFLEtBQXJFO0FBQTJFLElBQUEsSUFBSSxFQUFFLE1BQWpGO0FBQXlGLElBQUEsVUFBVSxFQUFFO0FBQXJHLEdBUmtCLEVBU2xCO0FBQUUsSUFBQSxJQUFJLEVBQUUsZ0JBQVI7QUFBMEIsSUFBQSxXQUFXLEVBQUU7QUFBdkMsR0FUa0IsQ0FBeEI7QUFZQSxFQUFBLE1BQU0sQ0FBQyxhQUFQLEdBQXVCLENBQXZCO0FBQ0EsRUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixDQUF4QjtBQUVBLEVBQUEsTUFBTSxDQUFDLElBQVAsR0FBYyxPQUFkOztBQUNDLE1BQUksTUFBTSxDQUFDLE9BQVAsQ0FBZSxJQUFmLElBQXNCLHdCQUExQixFQUNBO0FBQ0UsSUFBQSxNQUFNLENBQUMsV0FBUCxDQUFtQixVQUFuQixHQUFnQyxrQkFBaEM7QUFFRCxHQUpELE1BTUE7QUFFRSxJQUFBLE1BQU0sQ0FBQyxXQUFQLENBQW1CLFVBQW5CLEdBQWdDLGlCQUFoQztBQUNBLElBQUEsTUFBTSxDQUFDLElBQVAsR0FBYyxTQUFkO0FBQ0Q7O0FBRUEsRUFBQSxNQUFNLENBQUMsV0FBUCxDQUFtQixhQUFuQixHQUFtQyxVQUFVLE9BQVYsRUFBbUI7QUFDbkQsSUFBQSxNQUFNLENBQUMsT0FBUCxHQUFpQixPQUFqQjtBQUNBLElBQUEsT0FBTyxDQUFDLFNBQVIsQ0FBa0IsRUFBbEIsQ0FBcUIsbUJBQXJCLENBQXlDLE1BQXpDLEVBQWdELFVBQVMsR0FBVCxFQUFhO0FBQzVELE1BQUEsTUFBTSxDQUFDLFlBQVAsR0FBb0IsR0FBRyxDQUFDLFVBQXhCOztBQUVBLFVBQUcsR0FBRyxDQUFDLFVBQVAsRUFBa0I7QUFFYixZQUFJLE1BQU0sQ0FBQyxJQUFQLElBQWUsT0FBbkIsRUFDQTtBQUNFLFVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBb0IsR0FBRyxDQUFDLE1BQUosQ0FBVyxnQkFBWCxDQUE0QixFQUFoRDtBQUNDLFVBQUEsTUFBTSxDQUFDLGlCQUFQLEdBQXlCLEdBQUcsQ0FBQyxNQUFKLENBQVcsZ0JBQVgsQ0FBNEIsV0FBNUIsQ0FBd0MsRUFBakU7QUFDQSxVQUFBLE1BQU0sQ0FBQyxrQkFBUCxHQUE0QixHQUFHLENBQUMsTUFBSixDQUFXLGdCQUF2QztBQUNBLFVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsTUFBTSxDQUFDLFlBQS9CO0FBQ0YsU0FORCxNQVFBO0FBQ0csVUFBQSxNQUFNLENBQUMsWUFBUCxHQUFvQixHQUFHLENBQUMsTUFBSixDQUFXLEVBQS9CO0FBQ0EsVUFBQSxNQUFNLENBQUMsaUJBQVAsR0FBeUIsR0FBRyxDQUFDLE1BQUosQ0FBVyxXQUFYLENBQXVCLEVBQWhEO0FBQ0EsVUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsR0FBRyxDQUFDLE1BQWhDO0FBQ0EsVUFBQSxNQUFNLENBQUMsYUFBUCxHQUF1QixNQUFNLENBQUMsWUFBOUI7QUFDRjtBQUVKO0FBQ0YsS0FyQkQsRUFGbUQsQ0F5Qm5EOztBQUNGLElBQUEsT0FBTyxDQUFDLFVBQVIsQ0FBbUIsRUFBbkIsQ0FBc0IsaUJBQXRCLENBQXdDLE1BQXhDLEVBQWdELFVBQVUsT0FBVixFQUFtQixRQUFuQixFQUE2QjtBQUN6RSxNQUFBLGlCQUFpQixDQUFDLFVBQWxCLEdBQStCLE9BQS9CO0FBQ0EsTUFBQSxpQkFBaUIsQ0FBQyxRQUFsQixHQUE2QixRQUE3QjtBQUNBLE1BQUEsTUFBTSxDQUFDLHVCQUFQLENBQStCLE1BQU0sQ0FBQyxJQUF0QyxFQUEyQyxDQUEzQyxFQUE2QyxLQUE3QyxFQUFtRCxFQUFuRCxFQUFzRCxNQUFNLENBQUMsUUFBN0QsRUFBc0UsTUFBTSxDQUFDLFlBQTdFLEVBQTBGLE9BQTFGLEVBQWtHLFFBQWxHO0FBQ0gsS0FKRDtBQU1DLElBQUEsT0FBTyxDQUFDLElBQVIsQ0FBYSxFQUFiLENBQWdCLGFBQWhCLENBQThCLE1BQTlCLEVBQXNDLFlBQVcsQ0FDN0M7QUFDRDtBQUNGLEtBSEQ7QUFNRCxHQXRDRDs7QUEwQ0QsRUFBQSxNQUFNLENBQUMsYUFBUCxHQUF1QixZQUFVO0FBR3pCLFFBQUksSUFBSSxHQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDO0FBQ0EsUUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFFBQTFCLENBQW1DLENBQW5DLEVBQXNDLFFBQXJEO0FBQ0MsSUFBQSxlQUFlLENBQUMsaUJBQWhCLENBQWtDLE1BQU0sQ0FBQyxZQUF6QyxFQUFzRCxDQUF0RCxFQUF3RCxPQUF4RCxFQUFnRSxJQUFoRSxFQUFxRSxRQUFyRSxFQUErRSxJQUEvRSxDQUFvRixVQUFTLElBQVQsRUFBZTtBQUk1RTtBQUNBLE1BQUEsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsTUFBTSxDQUFDLElBQTdCLEVBQWtDLENBQWxDLEVBQW9DLElBQXBDLEVBQXlDLElBQUksQ0FBQyxJQUFMLENBQVUsR0FBbkQ7QUFFTCxLQVBsQixFQU9tQixVQUFTLEtBQVQsRUFBZTtBQUdiLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0wsS0FYaEI7QUFZTixHQWpCSDs7QUFtQkEsRUFBQSxNQUFNLENBQUMsY0FBUCxHQUF3QixVQUFTLElBQVQsRUFBYyxNQUFkLEVBQXFCLFVBQXJCLEVBQWdDLFFBQWhDLEVBQXlDO0FBRS9ELFFBQUksSUFBSSxHQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDO0FBRUEsSUFBQSxlQUFlLENBQUMsaUJBQWhCLENBQWtDLElBQWxDLEVBQXVDLE1BQXZDLEVBQStDLElBQS9DLENBQW9ELFVBQVMsSUFBVCxFQUFlO0FBRXZDLE1BQUEsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsSUFBbkIsR0FBMEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUFwQzs7QUFDRCxVQUFJLFVBQUosRUFDQTtBQUNFLFFBQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsUUFBNUIsRUFBcUMsU0FBckM7QUFFRDtBQUNGLEtBUjFCLEVBUTJCLFVBQVMsS0FBVCxFQUFlO0FBRWQsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDTCxLQVh2QjtBQVlELEdBaEJEOztBQWlCSSxFQUFBLE1BQU0sQ0FBQyx1QkFBUCxHQUFpQyxVQUFTLElBQVQsRUFBYyxNQUFkLEVBQXFCLFVBQXJCLEVBQWdDLFFBQWhDLEVBQXlDLE9BQXpDLEVBQWlELE9BQWpELEVBQXlELE9BQXpELEVBQWlFLFFBQWpFLEVBQTBFO0FBRTdHLFFBQUksSUFBSSxHQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDOztBQUVBLFFBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFNLENBQUMsVUFBUCxHQUFrQixRQUE1QixJQUFzQyxPQUExQyxFQUNBO0FBQ0UsTUFBQSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUwsQ0FBVSxNQUFNLENBQUMsVUFBUCxHQUFrQixRQUE1QixDQUFWO0FBQ0Q7O0FBQ0QsSUFBQSxlQUFlLENBQUMsMEJBQWhCLENBQTJDLElBQTNDLEVBQWdELE1BQWhELEVBQXVELE9BQXZELEVBQStELE9BQS9ELEVBQXVFLE9BQXZFLEVBQStFLFFBQS9FLEVBQXlGLElBQXpGLENBQThGLFVBQVMsSUFBVCxFQUFlO0FBRWpGLE1BQUEsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsSUFBbkIsR0FBMEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUFwQztBQUNBLE1BQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUE1QjtBQUNBLE1BQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxRQUFoQztBQUNBLE1BQUEsTUFBTSxDQUFDLFVBQVAsR0FBa0IsSUFBSSxDQUFDLElBQUwsQ0FBVSxLQUE1QjtBQUNBLE1BQUEsTUFBTSxDQUFDLFdBQVAsR0FBbUIsT0FBbkI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBTSxDQUFDLFVBQVAsR0FBa0IsUUFBNUIsQ0FBbEI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLFFBQWxCO0FBQ0EsTUFBQSxNQUFNLENBQUMsV0FBUCxDQUFtQixVQUFuQixHQUE4QixNQUFNLENBQUMsVUFBckM7O0FBQ0QsVUFBSSxVQUFKLEVBQ0E7QUFDRSxRQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLFFBQTVCLEVBQXFDLFNBQXJDO0FBRUQ7QUFDRixLQWYxQixFQWUyQixVQUFTLEtBQVQsRUFBZTtBQUVkLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0wsS0FsQnZCO0FBbUJELEdBM0JHOztBQTZCSCxFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCLFlBQVU7QUFDNUIsSUFBQSxNQUFNLENBQUMsdUJBQVAsQ0FBK0IsTUFBTSxDQUFDLElBQXRDLEVBQTJDLENBQTNDLEVBQTZDLEtBQTdDLEVBQW1ELEVBQW5ELEVBQXNELE1BQU0sQ0FBQyxRQUE3RCxFQUFzRSxNQUFNLENBQUMsWUFBN0UsRUFBMEYsTUFBTSxDQUFDLFdBQWpHLEVBQTZHLE1BQU0sQ0FBQyxRQUFwSDtBQUNFLEdBRkwsQ0FyTHVILENBd0x4SDtBQUNDO0FBQ0E7OztBQUVBLEVBQUEsTUFBTSxDQUFDLHVCQUFQLENBQStCLE1BQU0sQ0FBQyxJQUF0QyxFQUEyQyxDQUEzQyxFQUE2QyxLQUE3QyxFQUFtRCxFQUFuRCxFQUFzRCxFQUF0RCxFQUF5RCxFQUF6RCxFQUE0RCxpQkFBaUIsQ0FBQyxVQUE5RSxFQUF5RixpQkFBaUIsQ0FBQyxRQUEzRzs7QUFFQSxFQUFBLE1BQU0sQ0FBQyx1QkFBUCxHQUFpQyxVQUFTLFVBQVQsRUFBb0I7QUFDOUMsSUFBQSxNQUFNLENBQUMsdUJBQVAsQ0FBK0IsTUFBTSxDQUFDLElBQXRDLEVBQTJDLFVBQTNDLEVBQXNELEtBQXRELEVBQTRELEVBQTVELEVBQStELEVBQS9ELEVBQWtFLEVBQWxFLEVBQXFFLGlCQUFpQixDQUFDLFVBQXZGLEVBQWtHLGlCQUFpQixDQUFDLFFBQXBIO0FBQ0YsR0FGTDtBQUtBOztBQUVFLFNBQVMseUJBQVQsQ0FBb0MsTUFBcEMsRUFBNEMsVUFBNUMsRUFBdUQsZUFBdkQsRUFBdUUsaUJBQXZFLEVBQXlGLGdCQUF6RixFQUEwRyxZQUExRyxFQUF1SCxlQUF2SCxFQUF1SSxRQUF2SSxFQUFnSixNQUFoSixFQUF3SjtBQUV6SixFQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWdCLDJCQUFoQjtBQUVBLEVBQUEsTUFBTSxDQUFDLGFBQVAsR0FBcUIsWUFBWSxDQUFDLGFBQWxDO0FBQ0EsRUFBQSxNQUFNLENBQUMsZUFBUCxHQUF1QixZQUFZLENBQUMsZUFBcEM7QUFDQSxFQUFBLE1BQU0sQ0FBQyxtQkFBUCxHQUEyQixRQUFRLENBQUMsU0FBVCxDQUFtQixnQ0FBbkIsQ0FBM0I7QUFDQSxFQUFBLE1BQU0sQ0FBQyxxQkFBUCxHQUE2QixRQUFRLENBQUMsU0FBVCxDQUFtQixrQ0FBbkIsQ0FBN0I7QUFDQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLEtBQXRCO0FBQ0EsRUFBQSxNQUFNLENBQUMsaUJBQVAsR0FBeUIsS0FBekI7O0FBRUEsTUFBSSxNQUFNLENBQUMsYUFBUCxJQUFzQixTQUF0QixJQUFtQyxNQUFNLENBQUMsYUFBUCxJQUFzQixFQUE3RCxFQUNBO0FBQ0ksUUFBSSxNQUFNLENBQUMsbUJBQVAsSUFBNEIsU0FBNUIsSUFBeUMsTUFBTSxDQUFDLG1CQUFQLElBQTRCLEVBQXpFLEVBQ0E7QUFDRSxNQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLElBQXRCO0FBQ0QsS0FIRCxNQUlBO0FBQ0UsTUFBQSxNQUFNLENBQUMsYUFBUCxHQUF3QixNQUFNLENBQUMsbUJBQS9CO0FBQ0EsTUFBQSxNQUFNLENBQUMsaUJBQVAsR0FBMkIsSUFBM0I7QUFDRDtBQUdKLEdBWkQsTUFZSztBQUNILElBQUEsUUFBUSxDQUFDLFNBQVQsQ0FBbUIsZ0NBQW5CLEVBQW9ELE1BQU0sQ0FBQyxhQUEzRDtBQUVEOztBQUVELE1BQUksTUFBTSxDQUFDLGVBQVAsSUFBd0IsU0FBNUIsRUFDQTtBQUNJLFFBQUksTUFBTSxDQUFDLHFCQUFQLElBQThCLFNBQWxDLEVBQ0E7QUFDSSxVQUFJLE1BQU0sQ0FBQyxpQkFBWCxFQUNBO0FBQ0UsUUFBQSxNQUFNLENBQUMsZUFBUCxHQUEwQixNQUFNLENBQUMscUJBQWpDO0FBQ0Q7QUFDSjtBQUVKLEdBVkQsTUFVTSxJQUFJLE1BQU0sQ0FBQyxxQkFBUCxJQUE4QixTQUFsQyxFQUNOO0FBQ0UsSUFBQSxRQUFRLENBQUMsU0FBVCxDQUFtQixrQ0FBbkIsRUFBc0QsTUFBTSxDQUFDLGVBQTdEO0FBRUQsR0FKSyxNQUtOO0FBQ0ksUUFBSSxNQUFNLENBQUMsaUJBQVgsRUFDQTtBQUVFLE1BQUEsTUFBTSxDQUFDLGVBQVAsR0FBMEIsTUFBTSxDQUFDLHFCQUFqQztBQUVELEtBTEQsTUFNQTtBQUNJLE1BQUEsUUFBUSxDQUFDLFNBQVQsQ0FBbUIsa0NBQW5CLEVBQXNELE1BQU0sQ0FBQyxlQUE3RDtBQUNIO0FBQ0o7O0FBRUQsRUFBQSxNQUFNLENBQUMsTUFBUCxHQUFnQixZQUFVO0FBQ04sSUFBQSxNQUFNLENBQUMsRUFBUCxDQUFVLE1BQU0sQ0FBQyxhQUFqQixFQUErQixNQUFNLENBQUMsZUFBdEM7QUFFbkIsR0FIRDs7QUFLRixFQUFBLE1BQU0sQ0FBQyxXQUFQLEdBQXFCO0FBQUMsSUFBQSxNQUFNLEVBQUMsSUFBUjtBQUFhLElBQUEsRUFBRSxFQUFDO0FBQWhCLEdBQXJCO0FBQ0EsRUFBQSxNQUFNLENBQUMsbUJBQVAsR0FBNkIsWUFBWSxDQUFDLEVBQTFDOztBQUdDLEVBQUEsTUFBTSxDQUFDLG9CQUFQLEdBQThCLFVBQVMsbUJBQVQsRUFBNkIsSUFBN0IsRUFBa0M7QUFDM0QsUUFBSSxJQUFJLEdBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEM7QUFDQSxJQUFBLGVBQWUsQ0FBQyxvQkFBaEIsQ0FBcUMsbUJBQXJDLEVBQXlELElBQXpELEVBQStELElBQS9ELENBQW9FLFVBQVMsSUFBVCxFQUFlO0FBRTlFO0FBQ0EsTUFBQSxNQUFNLENBQUMsV0FBUCxHQUFtQixJQUFJLENBQUMsSUFBeEI7QUFFSixLQUxELEVBS0UsVUFBUyxLQUFULEVBQWU7QUFFZixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNELEtBUkQ7QUFZSixHQWREOztBQWdCRyxFQUFBLE1BQU0sQ0FBQyxxQkFBUCxHQUErQixZQUFVO0FBQ3ZDLFFBQUksSUFBSSxHQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDO0FBQ0EsSUFBQSxNQUFNLENBQUMsV0FBUCxDQUFtQixJQUFuQixHQUEwQixJQUExQixDQUZ1QyxDQUd2Qzs7QUFDQSxJQUFBLGVBQWUsQ0FBQyxxQkFBaEIsQ0FBc0MsTUFBTSxDQUFDLFdBQTdDLEVBQTBELElBQTFELENBQStELFVBQVMsSUFBVCxFQUFlO0FBRXpFLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxHQUF0QyxFQUEwQyxTQUExQyxFQUZ5RSxDQUd6RTtBQUVKLEtBTEQsRUFLRSxVQUFTLEtBQVQsRUFBZTtBQUVoQixNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNBLEtBUkQ7QUFZSixHQWhCRTs7QUFrQkosTUFBSSxNQUFNLENBQUMsbUJBQVAsSUFBNEIsRUFBNUIsSUFBa0MsTUFBTSxDQUFDLG1CQUFQLElBQTRCLFNBQWxFLEVBQ0E7QUFDRSxRQUFJLElBQUksR0FBQyxVQUFVLENBQUMsT0FBWCxDQUFtQixXQUFuQixDQUErQixJQUF4QztBQUNBLElBQUEsTUFBTSxDQUFDLG9CQUFQLENBQTRCLE1BQU0sQ0FBQyxtQkFBbkMsRUFBdUQsSUFBdkQ7QUFFRDtBQUdKOzs7QUMvakVEOzs7Ozs7O0FBRU8sU0FBUyxTQUFULENBQW1CLE1BQW5CLEVBQTJCLFVBQTNCLEVBQXVDLFNBQXZDLEVBQWlELG1CQUFqRCxFQUFxRSxvQkFBckUsRUFBMEYsY0FBMUYsRUFBeUcsZ0JBQXpHLEVBQTBILHFCQUExSCxFQUFnSixRQUFoSixFQUF5SixZQUF6SixFQUFzSyxlQUF0SyxFQUFzTCxRQUF0TCxFQUErTCxlQUEvTCxFQUErTSxXQUEvTSxFQUEyTixNQUEzTixFQUFtTztBQUFBOztBQUV0TyxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXFCLE1BQXJCO0FBQ0EsRUFBQSxNQUFNLENBQUMsUUFBUCxHQUFnQixXQUFoQjtBQUVBLE1BQUksT0FBTyxHQUFDLFlBQVksQ0FBQyxNQUF6QjtBQUNBLE1BQUksTUFBTSxHQUFDLFlBQVksQ0FBQyxLQUF4QjtBQUVBLE1BQUksSUFBSSxHQUFDLFVBQVUsQ0FBQyxPQUFYLENBQW1CLFdBQW5CLENBQStCLElBQXhDO0FBQ0EsRUFBQSxNQUFNLENBQUMsVUFBUCxHQUFvQixPQUFwQjtBQUNBLEVBQUEsTUFBTSxDQUFDLEtBQVAsR0FBZSxNQUFmO0FBQ0gsRUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixZQUFZLENBQUMsT0FBbkM7QUFFRyxFQUFBLE1BQU0sQ0FBQyxTQUFQLEdBQWlCO0FBQUMsSUFBQSxVQUFVLEVBQUM7QUFBWixHQUFqQjtBQUVBLE1BQUksWUFBWSxDQUFDLFVBQWIsSUFBeUIsU0FBekIsSUFBc0MsWUFBWSxDQUFDLFVBQWIsSUFBeUIsRUFBbkUsRUFBMEUsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsR0FBOEIsRUFBOUI7QUFFMUUsRUFBQSxNQUFNLENBQUMsc0JBQVAsR0FBOEIsS0FBOUI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxHQUFQLEdBQWEsbUJBQWI7QUFDQSxFQUFBLE1BQU0sQ0FBQyxLQUFQLEdBQWUsZUFBZjtBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsV0FBdEI7QUFFQSxFQUFBLE1BQU0sQ0FBQyxLQUFQLENBQWEsZUFBYixDQUE2QixDQUE3QjtBQUNBLEVBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsZUFBcEI7QUFFQSxNQUFJLGNBQUo7QUFDQSxNQUFJLGtCQUFKO0FBQ0EsTUFBSSx1QkFBSixFQUE0QixtQkFBNUI7QUFDQSxNQUFJLGNBQWMsR0FBRSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsZ0JBQXRCLDJCQUF1QyxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUF4RCwwREFBdUMsc0JBQTZCLFVBQXBFLENBQXBCO0FBQ0EsTUFBSSxrQkFBa0IsR0FBRyxjQUFjLENBQUMsT0FBZixDQUF1QixJQUFoRDs7QUFFQSxNQUFJLGtCQUFrQixHQUFHLFNBQXJCLGtCQUFxQixDQUFTLElBQVQsRUFDekI7QUFDSSxJQUFBLGNBQWMsQ0FBQyxPQUFmLENBQXVCLGVBQXZCLEdBQXlDLElBQXpDO0FBQ0EsSUFBQSxjQUFjLENBQUMsT0FBZixDQUF1QixlQUF2QixDQUF1QyxrQkFBdkM7QUFDSCxHQUpEOztBQU1BLE1BQUksdUJBQXVCLEdBQUcsU0FBMUIsdUJBQTBCLENBQVMsSUFBVCxFQUM5QjtBQUNLLElBQUEsY0FBYyxDQUFDLE9BQWYsQ0FBdUIsZUFBdkIsR0FBeUMsSUFBekM7QUFDQSxJQUFBLGNBQWMsQ0FBQyxPQUFmLENBQXVCLGVBQXZCLENBQXVDLHVCQUF2QztBQUNKLEdBSkQ7O0FBTUEsTUFBSSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsa0JBQXJCLEVBQXdDLGtCQUFrQixHQUFDLFNBQTNELEVBQXFFLHVCQUFyRSxDQUE3Qjs7QUFHQSxFQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLFlBQ3pCO0FBQUE7O0FBQ1csUUFBSSx5QkFBSjs7QUFFQSxRQUFJLFlBQVksQ0FBQyxVQUFiLENBQXdCLGFBQXhCLElBQXVDLFNBQXZDLElBQW9ELFlBQVksQ0FBQyxVQUFiLENBQXdCLGFBQXhCLENBQXNDLElBQXRDLE1BQThDLEVBQWxHLElBQXdHLFlBQVksQ0FBQyxVQUFiLENBQXdCLFNBQXBJLEVBQStJO0FBQzNJO0FBQ0EsTUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixhQUE1QixHQUE0QyxZQUFZLENBQUMsVUFBYixDQUF3QixhQUFwRTtBQUNBLE1BQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsa0JBQTVCLEdBQWlELFlBQVksQ0FBQyxVQUFiLENBQXdCLGtCQUF6RTtBQUNBLE1BQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsWUFBNUIsR0FBMkMsWUFBWSxDQUFDLFVBQWIsQ0FBd0IsU0FBbkU7QUFDQSxNQUFBLGNBQWMsR0FBSSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsWUFBWSxDQUFDLFVBQWIsQ0FBd0IsYUFBOUMsRUFBNEQsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBN0UsQ0FBbEI7QUFDQSxNQUFBLGtCQUFrQixHQUFHLGNBQWMsQ0FBQyxPQUFmLENBQXVCLElBQTVDO0FBRUEsVUFBSSxjQUFjLENBQUMsTUFBZixLQUF3QixJQUE1QixFQUNYLHlCQUF5QixHQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixrQkFBckIsRUFBd0Msa0JBQXhDLEVBQTJELGtCQUEzRCxDQUE1QjtBQUVRLEtBWEQsTUFXTyxJQUFJLFlBQVksQ0FBQyxVQUFiLENBQXdCLFNBQXhCLElBQXFDLDBCQUFBLFlBQVksQ0FBQyxVQUFiLGdGQUF5QixTQUF6QixNQUFxQyxTQUFyQyxJQUFrRCxZQUFZLENBQUMsVUFBYixDQUF3QixhQUF4QixLQUF3QyxTQUFuSSxFQUNQO0FBQ0ksTUFBQSxjQUFjLEdBQUksTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXNCLFlBQVksQ0FBQyxVQUFiLENBQXdCLGFBQTlDLEVBQTRELElBQTVELENBQWxCO0FBQ0EsTUFBQSxrQkFBa0IsR0FBRyxjQUFjLENBQUMsT0FBZixDQUF1QixJQUE1QztBQUNBLFVBQUksY0FBYyxDQUFDLE1BQWYsS0FBd0IsSUFBNUIsRUFDWCx5QkFBeUIsR0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsa0JBQXJCLEVBQXdDLGtCQUF4QyxFQUEyRCxrQkFBM0QsQ0FBNUI7O0FBRVcsVUFBSSxjQUFjLENBQUMsT0FBZixDQUF1QixpQkFBdkIsSUFBMEMsQ0FBOUMsRUFBZ0Q7QUFBRTtBQUM5QyxRQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLEdBQThCLGNBQWMsQ0FBQyxPQUFmLENBQXVCLFFBQXJEO0FBQ0gsT0FGRCxNQUVPO0FBQ0g7QUFDQTtBQUNBLFlBQUksSUFBSSxHQUFHLGNBQWMsQ0FBQyxNQUFmLEVBQVg7QUFDQSxRQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLGFBQTVCLEdBQTRDLE1BQU0sQ0FBQyxPQUFQLENBQWUsSUFBZixHQUFvQixHQUFwQixHQUF3QixPQUF4QixHQUFnQyxHQUFoQyxHQUFvQyxJQUFoRjtBQUNBLFFBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsa0JBQTVCLEdBQWlELFlBQVksQ0FBQyxVQUFiLENBQXdCLGtCQUF6RTtBQUNBLFFBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsWUFBNUIsR0FBMkMsWUFBWSxDQUFDLFVBQWIsQ0FBd0IsU0FBbkU7QUFDQSxRQUFBLGNBQWMsR0FBSSxNQUFNLENBQUMsR0FBUCxDQUFXLFVBQVgsQ0FBc0IsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsYUFBbEQsRUFBZ0UsSUFBaEUsQ0FBbEI7QUFDQSxRQUFBLGtCQUFrQixHQUFHLGNBQWMsQ0FBQyxPQUFmLENBQXVCLElBQTVDO0FBRUEsWUFBSSxjQUFjLENBQUMsTUFBZixLQUF3QixJQUE1QixFQUNkLHlCQUF5QixHQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQixrQkFBckIsRUFBd0Msa0JBQXhDLEVBQTJELGtCQUEzRCxDQUE1QjtBQUVjLFFBQUEsTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLGtCQUF6QixFQUE0QyxrQkFBNUMsRUFBZ0UsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakY7QUFDSDtBQUNKLEtBeEJNLE1BMEJQO0FBQ0k7QUFDQTtBQUNBLFVBQUksS0FBSSxHQUFHLGNBQWMsQ0FBQyxNQUFmLEVBQVg7O0FBQ0EsTUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixhQUE1QixHQUE0QyxNQUFNLENBQUMsT0FBUCxDQUFlLElBQWYsR0FBb0IsR0FBcEIsR0FBd0IsT0FBeEIsR0FBZ0MsR0FBaEMsR0FBb0MsS0FBaEY7QUFDQSxNQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLGtCQUE1QixHQUFpRCxZQUFZLENBQUMsVUFBYixDQUF3QixrQkFBekU7QUFDQSxNQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLFlBQTVCLEdBQTJDLFlBQVksQ0FBQyxVQUFiLENBQXdCLFNBQW5FO0FBQ0EsTUFBQSxjQUFjLEdBQUksTUFBTSxDQUFDLEdBQVAsQ0FBVyxVQUFYLENBQXNCLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLGFBQWxELEVBQWdFLElBQWhFLENBQWxCO0FBQ0EsTUFBQSxrQkFBa0IsR0FBRyxjQUFjLENBQUMsT0FBZixDQUF1QixJQUE1QztBQUNBLFVBQUksY0FBYyxDQUFDLE1BQWYsS0FBd0IsSUFBNUIsRUFDWCx5QkFBeUIsR0FBRyxNQUFNLENBQUMsR0FBUCxDQUFXLFNBQVgsQ0FBcUIsa0JBQXJCLEVBQXdDLGtCQUF4QyxFQUEyRCxrQkFBM0QsQ0FBNUI7QUFFVyxNQUFBLE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBWCxDQUF5QixrQkFBekIsRUFBNEMsa0JBQTVDLEVBQWdFLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpGO0FBQ0g7O0FBQ0QsSUFBQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsYUFBMUIsR0FBd0MsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsYUFBcEU7QUFDQSxJQUFBLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixrQkFBMUIsR0FBNkMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsa0JBQXpFO0FBQ0EsSUFBQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsTUFBMUIsR0FBa0MsTUFBTSxDQUFDLFVBQXpDO0FBQ0EsSUFBQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZ0JBQTFCLEdBQTRDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLGdCQUF4RTtBQUNBLElBQUEsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFlBQTFCLDZCQUF1QyxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixZQUFuRSwyREFBdUMsdUJBQTBDLE1BQWpGO0FBQ0EsSUFBQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIscUJBQTFCLDZCQUFnRCxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixZQUE1RSwyREFBZ0QsdUJBQTBDLGdCQUExRjtBQUVBLElBQUEsTUFBTSxDQUFDLEdBQVAsQ0FBVyxhQUFYLENBQXlCLGtCQUF6QixFQUE0QyxrQkFBa0IsR0FBQyxTQUEvRCxFQUEwRSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixVQUF0RztBQUNBLElBQUEsTUFBTSxDQUFDLHFCQUFQO0FBQ1AsR0FoRUQsQ0E5Q3NPLENBOEdyTzs7O0FBR0QsTUFBSSxpQkFBaUIsR0FBRyxTQUFwQixpQkFBb0IsQ0FBUyxJQUFULEVBQ3hCO0FBQ1ksSUFBQSxtQkFBbUIsQ0FBQyxPQUFwQixDQUE0QixlQUE1QixHQUE4QyxJQUE5QztBQUNBLElBQUEsbUJBQW1CLENBQUMsT0FBcEIsQ0FBNEIsZUFBNUIsQ0FBNEMsbUJBQTVDO0FBRVgsR0FMRDs7QUFRQSxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLFlBQzVCO0FBQ08sSUFBQSxvQkFBb0IsQ0FBQyxlQUFyQixDQUFxQyxNQUFNLENBQUMsVUFBNUMsRUFBdUQsR0FBdkQsRUFBMkQsSUFBM0QsRUFBaUUsSUFBakUsQ0FDSixVQUFTLElBQVQsRUFBZTtBQUNhLFVBQUksSUFBSSxDQUFDLElBQUwsQ0FBVSxPQUFWLENBQWtCLE1BQWxCLEdBQXlCLENBQTdCLEVBQStCO0FBQzFCLFFBQUEsTUFBTSxDQUFDLFNBQVAsR0FBbUI7QUFBQyxVQUFBLE9BQU8sRUFBQztBQUFDLFlBQUEsTUFBTSxFQUFDLElBQUksQ0FBQyxJQUFMLENBQVU7QUFBbEIsV0FBVDtBQUFvQyxVQUFBLElBQUksRUFBQztBQUF6QyxTQUFuQjtBQUNKLE9BRkQsTUFHdkIsTUFBTSxDQUFDLFNBQVAsR0FBaUI7QUFBQyxRQUFBLE9BQU8sRUFBRztBQUFDLFVBQUEsTUFBTSxFQUFDLGVBQWUsQ0FBQyxnQkFBaEI7QUFBUixTQUFYO0FBQXVELFFBQUEsSUFBSSxFQUFDO0FBQTVELE9BQWpCOztBQUVELE1BQUEsTUFBTSxDQUFDLGtCQUFQLEdBQTJCLElBQUksQ0FBQyxJQUFMLENBQVUsa0JBQXJDO0FBQ3dCLE1BQUEsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFVBQTFCLEdBQXVDO0FBQUMsUUFBQSxZQUFZLEVBQUM7QUFBZCxPQUF2QztBQUVBLE1BQUEsTUFBTSxDQUFDLEtBQVAsQ0FBYSxlQUFiLENBQTZCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixVQUExQixDQUFxQyxZQUFsRTtBQUNBLE1BQUEsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGVBQTFCLEdBQTRDLEtBQTVDO0FBRUEsTUFBQSxNQUFNLENBQUMsWUFBUDtBQUNBLFVBQUksTUFBTSxDQUFDLGtCQUFQLENBQTBCLFVBQTFCLENBQXFDLFVBQXpDLEVBQ3RCLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsQ0FBcUMsT0FBakUsRUFEc0IsS0FFSyxNQUFNLENBQUMsS0FBUCxDQUFhLGdCQUFiO0FBQ0wsTUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixJQUFsQjtBQUVBLFVBQUksTUFBTSxDQUFDLGtCQUFQLENBQTBCLGNBQTFCLEtBQTJDLFNBQS9DLEVBQ3RCLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixjQUExQixHQUF5QztBQUFDLFFBQUEsa0JBQWtCLEVBQUM7QUFBcEIsT0FBekMsQ0FEc0IsS0FFSyxJQUFJLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixjQUExQixDQUF5QyxrQkFBekMsS0FBOEQsU0FBbEUsRUFDM0IsTUFBTSxDQUFDLGtCQUFQLENBQTBCLGNBQTFCLENBQXlDLGtCQUF6QyxHQUE4RCxnQ0FBOUQ7QUFFdUIsS0F4QnpCLEVBd0IwQixVQUFTLEtBQVQsRUFBZTtBQUNmLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0EsTUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixJQUFsQjtBQUVKLEtBNUJ0QjtBQTZCSCxHQS9CRDs7QUFpQ0EsRUFBQSxNQUFNLENBQUMscUJBQVAsR0FBK0IsWUFBWTtBQUUvQixJQUFBLG9CQUFvQixDQUFDLGlCQUFyQixDQUF1QyxNQUFNLENBQUMsVUFBOUMsRUFBMEQsSUFBMUQsQ0FDWCxVQUFTLElBQVQsRUFBZTtBQUFBOztBQUNJLE1BQUEsTUFBTSxDQUFDLFFBQVAsR0FBa0IsSUFBSSxDQUFDLElBQXZCOztBQUNBLFVBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsSUFBNEIsSUFBaEMsRUFBc0M7QUFDOUIsUUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixHQUE2QjtBQUFDLFVBQUEsTUFBTSxFQUFDLElBQVI7QUFBYSxVQUFBLFFBQVEsRUFBQyxJQUF0QjtBQUEyQixVQUFBLGFBQWEsRUFBQyxDQUFDO0FBQUMsWUFBQSxFQUFFLEVBQUM7QUFBSixXQUFELENBQXpDO0FBQWtELFVBQUEsSUFBSSxFQUFDO0FBQUMsWUFBQSxRQUFRLEVBQUMsSUFBVjtBQUFlLFlBQUEsV0FBVyxFQUFDLElBQTNCO0FBQWdDLFlBQUEsTUFBTSxFQUFDLElBQXZDO0FBQTRDLFlBQUEsU0FBUyxFQUFDO0FBQXREO0FBQXZELFNBQTdCO0FBQ1A7O0FBRUQsTUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixHQUE4QixNQUFNLENBQUMsUUFBckM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLGdCQUE1QixHQUErQyxNQUFNLENBQUMsZ0JBQXREO0FBQ0EsTUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixTQUFqQiw0QkFBNkIsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsZ0JBQTdDLDBEQUE2QixzQkFBa0MsU0FBL0Q7QUFFQSxVQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFNBQWpCLEtBQStCLFNBQW5DLEVBQThDLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFNBQWpCLEdBQTZCLEVBQTdCOztBQUM5QyxVQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFNBQWpCLENBQTJCLE1BQTNCLEdBQWtDLENBQXRDLEVBQTRDO0FBQ3BDLFlBQUksTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsVUFBNUIsSUFBd0MsU0FBNUMsRUFBd0QsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsVUFBNUIsR0FBdUMsRUFBdkM7QUFDeEQsUUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixVQUE1QixDQUF1QyxRQUF2QyxHQUFrRCxJQUFsRDtBQUNQOztBQUNELE1BQUEsTUFBTSxDQUFDLGVBQVA7QUFFUCxLQWxCRCxFQWtCRSxVQUFTLEtBQVQsRUFBZTtBQUNILE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ2IsS0FwQkQ7QUFxQlAsR0F2Qkw7O0FBMEJJLEVBQUEsTUFBTSxDQUFDLHFCQUFQLEdBQTZCLFlBQzdCO0FBQ0ksSUFBQSxNQUFNLENBQUMsR0FBUCxDQUFXLG1CQUFpQixNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixhQUF4RCxFQUNSLFVBQVMsS0FBVCxFQUFlLElBQWYsRUFBb0I7QUFDbkIsVUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLFNBQU8sTUFBTSxDQUFDLFVBQWYsQ0FBakI7QUFDQSxNQUFBLElBQUksQ0FBQyxhQUFMO0FBQ0EsTUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFnQyxJQUFoQyxFQUFxQyxJQUFJLENBQUMsWUFBMUM7QUFDUSxLQUxEO0FBT0EsSUFBQSx1QkFBdUIsR0FBRSw0QkFBMEIsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsYUFBL0U7QUFDQSxJQUFBLG1CQUFtQixHQUFFLE1BQU0sQ0FBQyxHQUFQLENBQVcsVUFBWCxDQUFzQix1QkFBdEIsRUFBOEMsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsYUFBMUUsQ0FBckI7QUFDQSxRQUFJLHdCQUF3QixHQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVcsU0FBWCxDQUFxQix1QkFBckIsRUFBNkMsbUJBQTdDLEVBQWlFLGlCQUFqRSxDQUEvQjtBQUNILEdBWkQ7O0FBZUEsRUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixHQUFrQyxVQUFTLElBQVQsRUFBYyxVQUFkLEVBQ3hDO0FBQ1csUUFBSSxJQUFJLEdBQUMsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsV0FBbkIsQ0FBK0IsSUFBeEM7O0FBQ0EsUUFBSSxJQUFJLENBQUMsTUFBVCxFQUFpQjtBQUMxQixNQUFBLG9CQUFvQixDQUFDLGNBQXJCLENBQW9DLE1BQU0sQ0FBQyxVQUEzQyxFQUFzRCxNQUFNLENBQUMsU0FBUCxDQUFpQixJQUF2RSxFQUE0RSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixnQkFBeEcsRUFBeUgsTUFBTSxDQUFDLFlBQWhJLEVBQThJLElBQTlJLENBQ0MsVUFBUyxJQUFULEVBQWU7QUFBQTs7QUFDSyxZQUFJLENBQUEsSUFBSSxTQUFKLElBQUEsSUFBSSxXQUFKLDBCQUFBLElBQUksQ0FBRSxJQUFOLDBEQUFZLEdBQVosTUFBa0IsRUFBdEIsRUFBMEIsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsSUFBSSxDQUFDLElBQUwsQ0FBVSxHQUF0QyxFQUEwQyxTQUExQztBQUMxQixRQUFBLFVBQVUsQ0FBQyxVQUFYLENBQXNCLDZCQUEyQixNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixhQUE3RSxFQUEyRixJQUFJLENBQUMsSUFBTCxDQUFVLFNBQXJHO0FBQ0EsUUFBQSxNQUFNLENBQUMsR0FBUCxDQUFXLGFBQVgsQ0FBeUIsdUJBQXpCLEVBQWlELG1CQUFqRCxFQUFxRTtBQUFDLFVBQUEsT0FBTyxFQUFDLE1BQU0sQ0FBQyxVQUFoQjtBQUEyQixVQUFBLE1BQU0sRUFBQyxhQUFsQztBQUFnRCwwQkFBZTtBQUEvRCxTQUFyRTtBQUNILE9BTGxCLEVBS21CLFVBQVMsS0FBVCxFQUFlO0FBQ1gsUUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixLQUFLLENBQUMsR0FBbEMsRUFBc0MsT0FBdEM7QUFDQSxRQUFBLE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBWCxDQUF5Qix1QkFBekIsRUFBaUQsbUJBQWpELEVBQXFFO0FBQUMsVUFBQSxPQUFPLEVBQUMsTUFBTSxDQUFDLFVBQWhCO0FBQTJCLFVBQUEsTUFBTSxFQUFDLGFBQWxDO0FBQWdELDBCQUFlLFVBQS9EO0FBQTBFLG1CQUFRO0FBQWxGLFNBQXJFO0FBQ1QsT0FSZDtBQVVVLEtBWEQsQ0FXRTtBQVhGLFNBWUs7QUFDRCxNQUFBLE1BQU0sQ0FBQyxHQUFQLENBQVcsYUFBWCxDQUF5Qix1QkFBekIsRUFBaUQsbUJBQWpELEVBQXFFO0FBQUMsUUFBQSxPQUFPLEVBQUMsTUFBTSxDQUFDLFVBQWhCO0FBQTJCLFFBQUEsTUFBTSxFQUFDLGFBQWxDO0FBQWdELHdCQUFlLFVBQS9EO0FBQTBFLGlCQUFRO0FBQWxGLE9BQXJFO0FBQ0EsTUFBQSxnQkFBZ0IsQ0FBQyxVQUFqQixDQUE0QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsY0FBMUIsQ0FBeUMsa0JBQXJFLEVBQXdGLFNBQXhGO0FBQ0g7QUFDQSxHQW5CTjtBQXFCSjtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHSSxFQUFBLE1BQU0sQ0FBQyxlQUFQLEdBQXlCLFVBQVMsTUFBVCxFQUFpQixXQUFqQixFQUM1QjtBQUNPLFFBQUksYUFBYSxHQUFHLFNBQVMsQ0FBQyxNQUFWLEdBQW1CLFNBQXZDO0FBRUEsSUFBQSxvQkFBb0IsQ0FBQyxlQUFyQixDQUFxQyxNQUFyQyxFQUE2QyxXQUE3QyxFQUEwRCxhQUExRCxFQUF5RSxJQUF6RSxDQUVMLFVBQVMsSUFBVCxFQUFlO0FBQUE7O0FBQ2Q7QUFDQSxNQUFBLE1BQU0sQ0FBQyxnQkFBUCxHQUEwQixJQUExQixhQUEwQixJQUExQixzQ0FBMEIsSUFBSSxDQUFFLElBQWhDLHdFQUEwQixZQUFZLFFBQXRDLHlEQUEwQixxQkFBc0IsRUFBaEQ7QUFDQSxNQUFBLE1BQU0sQ0FBQyxNQUFQLENBQWMsU0FBZCxHQUEwQixNQUFNLENBQUMsZ0JBQWpDO0FBQ0EsTUFBQSxNQUFNLENBQUMsUUFBUCxHQUFrQixJQUFsQixhQUFrQixJQUFsQixzQ0FBa0IsSUFBSSxDQUFFLElBQXhCLGdEQUFrQixZQUFZLE1BQTlCO0FBRUEsVUFBSSxDQUFBLGFBQWEsU0FBYixJQUFBLGFBQWEsV0FBYixZQUFBLGFBQWEsQ0FBRSxRQUFmLE9BQTJCLEdBQS9CLEVBQW9DO0FBQ2xDLFFBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsTUFBTSxDQUFDLE9BQVAsQ0FBZSxJQUFuQyxFQUF5QyxNQUFNLENBQUMsTUFBaEQsRUFBd0Q7QUFBRSxVQUFBLE1BQU0sRUFBRSxLQUFWO0FBQW1CLFVBQUEsUUFBUSxFQUFDLFNBQTVCO0FBQXVDLFVBQUEsT0FBTyxFQUFDO0FBQS9DLFNBQXhEOztBQUNGLFVBQUksTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsVUFBaEIsSUFBNEIsSUFBaEMsRUFBc0M7QUFDcEMsUUFBQSxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixHQUE2QjtBQUFDLFVBQUEsTUFBTSxFQUFDLElBQVI7QUFBYSxVQUFBLFFBQVEsRUFBQyxJQUF0QjtBQUEyQixVQUFBLGFBQWEsRUFBQyxDQUFDO0FBQUMsWUFBQSxFQUFFLEVBQUM7QUFBSixXQUFELENBQXpDO0FBQWtELFVBQUEsSUFBSSxFQUFDO0FBQUMsWUFBQSxRQUFRLEVBQUMsSUFBVjtBQUFlLFlBQUEsV0FBVyxFQUFDLElBQTNCO0FBQWdDLFlBQUEsTUFBTSxFQUFDLElBQXZDO0FBQTRDLFlBQUEsU0FBUyxFQUFDO0FBQXREO0FBQXZELFNBQTdCO0FBQ0Q7O0FBRUQsTUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixHQUE4QixNQUFNLENBQUMsUUFBckM7QUFDQSxNQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLGdCQUE1QixHQUErQyxNQUFNLENBQUMsZ0JBQXRELENBYmMsQ0FlZDs7QUFDQSxVQUFJLElBQUksR0FBRyxDQUFYO0FBQ0EsVUFBSSxPQUFPLDZCQUFHLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGdCQUFuQixxRkFBRyx1QkFBa0MsTUFBbEMsQ0FBeUMsQ0FBekMsQ0FBSCwyREFBRyx1QkFBNkMsU0FBM0Q7QUFDQSxVQUFJLEtBQUssdURBQUcsTUFBTSxDQUFDLFFBQVAsQ0FBZ0IsZ0JBQW5CLHFGQUFHLHVCQUFrQyxNQUFsQyxDQUF5QyxDQUF6QyxDQUFILDJEQUFHLHVCQUE2QyxpQkFBaEQsMkVBQXFFLENBQTlFO0FBRUEsTUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBMkIsTUFBTSxDQUFDLFFBQWxDLENBcEJjLENBb0I2Qjs7QUFFM0MsTUFBQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsR0FBdUM7QUFBQyxRQUFBLFlBQVksRUFBQztBQUFkLE9BQXZDO0FBRUEsTUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLGVBQWIsQ0FBNkIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFVBQTFCLENBQXFDLFlBQWxFO0FBQ0EsTUFBQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBMUIsR0FBNEMsS0FBNUM7QUFDWSxNQUFBLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixVQUExQixHQUF1QyxXQUF2QztBQUNaLFVBQUksTUFBTSxDQUFDLGtCQUFQLENBQTBCLFVBQTFCLENBQXFDLFVBQXpDLEVBQXNELE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsQ0FBcUMsT0FBakUsRUFBdEQsS0FDSyxNQUFNLENBQUMsS0FBUCxDQUFhLGdCQUFiOztBQUdPLFVBQUksT0FBTyxJQUFFLFNBQWIsRUFBd0I7QUFDcEIsUUFBQSxXQUFXLENBQUMsV0FBWixDQUF3QixPQUF4QixFQUFnQyxJQUFoQyxFQUFxQyxLQUFyQyxFQUE0QyxJQUE1QyxDQUNJLFVBQVUsS0FBVixFQUFpQjtBQUNiLFVBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsV0FBcEIsQ0FBZ0MsT0FBaEMsRUFBd0MsS0FBeEMsRUFBOEMsS0FBSyxDQUFDLEtBQXBELEVBQTBELEtBQUssQ0FBQyxVQUFoRTs7QUFDQSxjQUFJLE1BQU0sQ0FBQyxZQUFQLENBQW9CLFFBQXBCLENBQTZCLEtBQTdCLENBQW1DLE1BQW5DLEdBQTBDLENBQTlDLEVBQWtEO0FBQzlDLGdCQUFJLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLFVBQTVCLElBQXdDLFNBQTVDLEVBQXVELE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLFVBQTVCLEdBQXVDLEVBQXZDO0FBQ3ZELFlBQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsVUFBNUIsQ0FBdUMsUUFBdkMsR0FBa0QsSUFBbEQ7QUFDSDs7QUFDRCxVQUFBLE1BQU0sQ0FBQyxZQUFQO0FBQ0EsVUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixJQUFsQjtBQUNILFNBVEw7QUFVSCxPQVhELE1BV1E7QUFFSixRQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLGFBQXBCO0FBQ0EsUUFBQSxNQUFNLENBQUMsWUFBUDtBQUNBLFFBQUEsTUFBTSxDQUFDLFVBQVAsR0FBa0IsSUFBbEI7QUFDSDs7QUFJYixVQUFJLElBQUksQ0FBQyxJQUFMLENBQVUsSUFBVixDQUFlLE1BQWYsR0FBc0IsQ0FBMUIsRUFDRSxNQUFNLENBQUMsU0FBUCxHQUFtQjtBQUFDLFFBQUEsT0FBTyxFQUFDO0FBQUMsVUFBQSxNQUFNLEVBQUMsSUFBSSxDQUFDLElBQUwsQ0FBVTtBQUFsQixTQUFUO0FBQWlDLFFBQUEsSUFBSSxFQUFDO0FBQXRDLE9BQW5CLENBREYsS0FHQyxNQUFNLENBQUMsU0FBUCxHQUFpQjtBQUFDLFFBQUEsT0FBTyxFQUFHO0FBQUMsVUFBQSxNQUFNLEVBQUMsZUFBZSxDQUFDLGdCQUFoQjtBQUFSLFNBQVg7QUFBdUQsUUFBQSxJQUFJLEVBQUM7QUFBNUQsT0FBakI7QUFNTyxVQUFJLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixjQUExQixLQUEyQyxTQUEvQyxFQUNQLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixjQUExQixHQUF5QztBQUFDLFFBQUEsa0JBQWtCLEVBQUM7QUFBcEIsT0FBekMsQ0FETyxLQUVLLElBQUksTUFBTSxDQUFDLGtCQUFQLENBQTBCLGNBQTFCLENBQXlDLGtCQUF6QyxLQUE4RCxTQUFsRSxFQUNaLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixjQUExQixDQUF5QyxrQkFBekMsR0FBOEQsZ0NBQTlEO0FBRUksS0FuRUQsRUFtRUUsVUFBUyxLQUFULEVBQWU7QUFDYixNQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLElBQWxCO0FBQ0EsTUFBQSxNQUFNLENBQUMsWUFBUCxHQUFzQixJQUF0QjtBQUNBLE1BQUEsTUFBTSxDQUFDLFVBQVAsR0FBa0IsSUFBbEI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxNQUFQLENBQWMsU0FBZCxHQUEwQixTQUExQjtBQUVBLFVBQUksQ0FBQSxhQUFhLFNBQWIsSUFBQSxhQUFhLFdBQWIsWUFBQSxhQUFhLENBQUUsUUFBZixPQUEyQixHQUEvQixFQUNQLE1BQU0sQ0FBQyxZQUFQLENBQXFCLE1BQU0sQ0FBQyxPQUFQLENBQWUsSUFBcEMsRUFBMEMsTUFBTSxDQUFDLE1BQWpELEVBQTBEO0FBQUUsUUFBQSxNQUFNLEVBQUUsS0FBVjtBQUFtQixRQUFBLFFBQVEsRUFBQyxTQUE1QjtBQUF1QyxRQUFBLE9BQU8sRUFBQztBQUEvQyxPQUExRDtBQUNPLE1BQUEsZ0JBQWdCLENBQUMsVUFBakIsQ0FBNEIsS0FBSyxDQUFDLEdBQWxDLEVBQXNDLE9BQXRDO0FBQ0gsS0E1RUQ7QUE4RUgsR0FsRkQ7O0FBcUZDLEVBQUEsTUFBTSxDQUFDLGNBQVAsR0FBd0IsVUFBUyxLQUFULEVBQWUsTUFBZixFQUF1QixXQUF2QixFQUMzQjtBQUVNLFFBQUksYUFBYSxHQUFHLFNBQVMsQ0FBQyxNQUFWLEdBQW1CLFNBQXZDO0FBRUEsUUFBSSxVQUFVLEdBQUcsU0FBUyxDQUFDLE1BQVYsR0FBbUIsR0FBcEM7O0FBRUEsUUFBSSxVQUFKLEVBQWdCO0FBQ1osTUFBQSxjQUFjLENBQUMsT0FBZixDQUF1QixhQUF2QixFQUFzQyxVQUF0QztBQUNBLE1BQUEsVUFBVSxDQUFDLE9BQVgsQ0FBbUIsVUFBbkIsR0FBaUMsVUFBakM7QUFDSCxLQUhELE1BR08sTUFBTSxDQUFDLEVBQVAsQ0FBVSxlQUFWOztBQUVQLElBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsYUFBcEIsQ0FBa0MsSUFBbEM7QUFDQSxJQUFBLG9CQUFvQixDQUFDLGNBQXJCLENBQW9DLEtBQXBDLEVBQTBDLE1BQTFDLEVBQWtELFdBQWxELEVBQStELGFBQS9ELEVBQThFLElBQTlFLENBQ0wsVUFBUyxJQUFULEVBQWU7QUFBQTs7QUFFZDtBQUNBLE1BQUEsTUFBTSxDQUFDLGdCQUFQLEdBQTBCLElBQTFCLGFBQTBCLElBQTFCLHNDQUEwQixJQUFJLENBQUUsSUFBaEMsd0VBQTBCLFlBQVksUUFBdEMseURBQTBCLHFCQUFzQixFQUFoRDtBQUNBLE1BQUEsTUFBTSxDQUFDLE1BQVAsQ0FBYyxTQUFkLEdBQTBCLE1BQU0sQ0FBQyxnQkFBakM7QUFFQSxVQUFJLENBQUEsYUFBYSxTQUFiLElBQUEsYUFBYSxXQUFiLFlBQUEsYUFBYSxDQUFFLFFBQWYsT0FBMkIsR0FBL0IsRUFBb0M7QUFDbEMsUUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixNQUFNLENBQUMsT0FBUCxDQUFlLElBQW5DLEVBQXlDLE1BQU0sQ0FBQyxNQUFoRCxFQUF3RDtBQUFFLFVBQUEsTUFBTSxFQUFFLEtBQVY7QUFBbUIsVUFBQSxRQUFRLEVBQUMsU0FBNUI7QUFBdUMsVUFBQSxPQUFPLEVBQUM7QUFBL0MsU0FBeEQ7QUFDRixNQUFBLE1BQU0sQ0FBQyxRQUFQLEdBQWtCLElBQWxCLGFBQWtCLElBQWxCLHNDQUFrQixJQUFJLENBQUUsSUFBeEIsZ0RBQWtCLFlBQVksTUFBOUI7O0FBQ0EsVUFBSSxNQUFNLENBQUMsUUFBUCxDQUFnQixVQUFoQixJQUE0QixJQUFoQyxFQUFzQztBQUNwQyxRQUFBLE1BQU0sQ0FBQyxRQUFQLENBQWdCLFVBQWhCLEdBQTZCO0FBQUMsVUFBQSxNQUFNLEVBQUMsSUFBUjtBQUFhLFVBQUEsUUFBUSxFQUFDLElBQXRCO0FBQTJCLFVBQUEsYUFBYSxFQUFDLENBQUM7QUFBQyxZQUFBLEVBQUUsRUFBQztBQUFKLFdBQUQsQ0FBekM7QUFBa0QsVUFBQSxJQUFJLEVBQUM7QUFBQyxZQUFBLFFBQVEsRUFBQyxJQUFWO0FBQWUsWUFBQSxXQUFXLEVBQUMsSUFBM0I7QUFBZ0MsWUFBQSxNQUFNLEVBQUMsSUFBdkM7QUFBNEMsWUFBQSxTQUFTLEVBQUM7QUFBdEQ7QUFBdkQsU0FBN0I7QUFDRDs7QUFFRCxNQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLEdBQThCLE1BQU0sQ0FBQyxRQUFyQztBQUNBLE1BQUEsTUFBTSxDQUFDLFNBQVAsQ0FBaUIsVUFBakIsQ0FBNEIsZ0JBQTVCLEdBQStDLE1BQU0sQ0FBQyxnQkFBdEQ7QUFFQSxNQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQW9CLE1BQU0sQ0FBQyxRQUFQLENBQWdCLEdBQXBDO0FBRUEsVUFBSSxJQUFJLEdBQUcsQ0FBWDtBQUNBLFVBQUksT0FBTyw2QkFBRyxNQUFNLENBQUMsUUFBUCxDQUFnQixnQkFBbkIscUZBQUcsdUJBQWtDLE1BQWxDLENBQXlDLENBQXpDLENBQUgsMkRBQUcsdUJBQTZDLFNBQTNEO0FBQ0EsVUFBSSxLQUFLLHdEQUFHLE1BQU0sQ0FBQyxRQUFQLENBQWdCLGdCQUFuQix1RkFBRyx3QkFBa0MsTUFBbEMsQ0FBeUMsQ0FBekMsQ0FBSCw0REFBRyx3QkFBNkMsaUJBQWhELDJFQUFxRSxDQUE5RTtBQUVBLE1BQUEscUJBQXFCLENBQUMsY0FBdEIsQ0FBcUMsSUFBSSxDQUFDLElBQUwsQ0FBVSxRQUEvQyx5QkFBd0QsSUFBSSxDQUFDLElBQUwsQ0FBVSxRQUFsRSx3REFBd0Qsb0JBQW9CLFFBQTVFLEVBQXNGLEVBQXRGLEVBQXlGLEtBQXpGO0FBR0EsTUFBQSxNQUFNLENBQUMsa0JBQVAsR0FBMkIsTUFBTSxDQUFDLFFBQWxDLENBekJjLENBeUI2Qjs7QUFDM0MsTUFBQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsR0FBdUM7QUFBQyxRQUFBLFlBQVksRUFBQztBQUFkLE9BQXZDO0FBRUEsTUFBQSxNQUFNLENBQUMsS0FBUCxDQUFhLGVBQWIsQ0FBNkIsTUFBTSxDQUFDLGtCQUFQLENBQTBCLFVBQTFCLENBQXFDLFlBQWxFO0FBQ0EsTUFBQSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsZUFBMUIsR0FBNEMsS0FBNUM7QUFFQSxVQUFJLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixVQUExQixDQUFxQyxVQUF6QyxFQUNDLE1BQU0sQ0FBQyxLQUFQLENBQWEsY0FBYixDQUE0QixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsVUFBMUIsQ0FBcUMsT0FBakUsRUFERCxLQUVLLE1BQU0sQ0FBQyxLQUFQLENBQWEsZ0JBQWI7QUFJTCxVQUFJLElBQUksQ0FBQyxJQUFMLENBQVUsSUFBVixDQUFlLE1BQWYsR0FBc0IsQ0FBMUIsRUFDRSxNQUFNLENBQUMsU0FBUCxHQUFtQjtBQUFDLFFBQUEsT0FBTyxFQUFDO0FBQUMsVUFBQSxNQUFNLEVBQUMsSUFBSSxDQUFDLElBQUwsQ0FBVTtBQUFsQixTQUFUO0FBQWlDLFFBQUEsSUFBSSxFQUFDO0FBQXRDLE9BQW5CLENBREYsS0FHQyxNQUFNLENBQUMsU0FBUCxHQUFpQjtBQUFDLFFBQUEsT0FBTyxFQUFHO0FBQUMsVUFBQSxNQUFNLEVBQUMsZUFBZSxDQUFDLGdCQUFoQjtBQUFSLFNBQVg7QUFBdUQsUUFBQSxJQUFJLEVBQUM7QUFBNUQsT0FBakI7QUFFRCxNQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLElBQWxCOztBQUVBLFVBQUksT0FBTyxJQUFFLFNBQWIsRUFBd0I7QUFDdkIsUUFBQSxXQUFXLENBQUMsV0FBWixDQUF3QixPQUF4QixFQUFnQyxJQUFoQyxFQUFxQyxLQUFyQyxFQUE0QyxJQUE1QyxDQUNDLFVBQVUsS0FBVixFQUFpQjtBQUNoQixVQUFBLE1BQU0sQ0FBQyxZQUFQLENBQW9CLFdBQXBCLENBQWdDLE9BQWhDLEVBQXdDLEtBQXhDLEVBQThDLEtBQUssQ0FBQyxLQUFwRCxFQUEwRCxLQUFLLENBQUMsVUFBaEU7O0FBRUEsY0FBSSxNQUFNLENBQUMsWUFBUCxDQUFvQixRQUFwQixDQUE2QixLQUE3QixDQUFtQyxNQUFuQyxHQUEwQyxDQUE5QyxFQUFrRDtBQUNqRCxnQkFBSSxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixVQUE1QixJQUF3QyxTQUE1QyxFQUF1RCxNQUFNLENBQUMsU0FBUCxDQUFpQixVQUFqQixDQUE0QixVQUE1QixHQUF1QyxFQUF2QztBQUN2RCxZQUFBLE1BQU0sQ0FBQyxTQUFQLENBQWlCLFVBQWpCLENBQTRCLFVBQTVCLENBQXVDLFFBQXZDLEdBQWtELElBQWxEO0FBQ0E7O0FBQ29CLFVBQUEsTUFBTSxDQUFDLFlBQVA7QUFFckIsU0FWRjtBQVlBLE9BYkQsTUFjWTtBQUNJLFFBQUEsTUFBTSxDQUFDLFlBQVAsQ0FBb0IsYUFBcEI7QUFDQSxRQUFBLE1BQU0sQ0FBQyxZQUFQO0FBQ0g7O0FBRWIsVUFBSSxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsY0FBMUIsS0FBMkMsU0FBL0MsRUFDQyxNQUFNLENBQUMsa0JBQVAsQ0FBMEIsY0FBMUIsR0FBeUM7QUFBQyxRQUFBLGtCQUFrQixFQUFDO0FBQXBCLE9BQXpDLENBREQsS0FFSyxJQUFJLE1BQU0sQ0FBQyxrQkFBUCxDQUEwQixjQUExQixDQUF5QyxrQkFBekMsS0FBOEQsU0FBbEUsRUFDSixNQUFNLENBQUMsa0JBQVAsQ0FBMEIsY0FBMUIsQ0FBeUMsa0JBQXpDLEdBQThELGdDQUE5RDtBQUVJLEtBckVELEVBcUVFLFVBQVMsS0FBVCxFQUFlO0FBQ2IsTUFBQSxNQUFNLENBQUMsVUFBUCxHQUFrQixJQUFsQjtBQUNBLE1BQUEsTUFBTSxDQUFDLFlBQVAsR0FBc0IsSUFBdEI7QUFDQSxNQUFBLE1BQU0sQ0FBQyxVQUFQLEdBQWtCLElBQWxCO0FBQ0EsTUFBQSxNQUFNLENBQUMsTUFBUCxDQUFjLFNBQWQsR0FBMEIsU0FBMUI7QUFDQSxVQUFJLENBQUEsYUFBYSxTQUFiLElBQUEsYUFBYSxXQUFiLFlBQUEsYUFBYSxDQUFFLFFBQWYsT0FBMkIsR0FBL0IsRUFDUixNQUFNLENBQUMsWUFBUCxDQUFvQixNQUFNLENBQUMsT0FBUCxDQUFlLElBQW5DLEVBQXlDLE1BQU0sQ0FBQyxNQUFoRCxFQUF5RDtBQUFFLFFBQUEsTUFBTSxFQUFFLEtBQVY7QUFBbUIsUUFBQSxRQUFRLEVBQUMsU0FBNUI7QUFBdUMsUUFBQSxPQUFPLEVBQUM7QUFBL0MsT0FBekQ7QUFDUSxNQUFBLGdCQUFnQixDQUFDLFVBQWpCLENBQTRCLEtBQUssQ0FBQyxHQUFsQyxFQUFzQyxPQUF0QztBQUNILEtBN0VEO0FBK0VILEdBNUZBOztBQThGRCxNQUFJLE1BQU0sQ0FBQyxVQUFQLElBQXFCLFNBQXpCLEVBQW1DO0FBQy9CLFFBQUksTUFBTSxDQUFDLE9BQVAsQ0FBZSxJQUFmLElBQXFCLGtCQUF6QixFQUE2QyxNQUFNLENBQUMsZUFBUCxDQUF1QixNQUFNLENBQUMsVUFBOUIsRUFBMEMsTUFBTSxDQUFDLFlBQWpELEVBQTdDLEtBQ0ssSUFBSSxNQUFNLENBQUMsT0FBUCxDQUFlLElBQWYsSUFBcUIseUJBQXpCLEVBQW9ELE1BQU0sQ0FBQyxjQUFQLENBQXNCLE1BQU0sQ0FBQyxLQUE3QixFQUFtQyxNQUFNLENBQUMsVUFBMUMsRUFBc0QsTUFBTSxDQUFDLFlBQTdEO0FBQzFELEdBSEgsTUFHUTtBQUNILElBQUEsTUFBTSxDQUFDLFVBQVAsR0FBa0IsSUFBbEI7QUFDQSxJQUFBLE1BQU0sQ0FBQyxZQUFQLEdBQXNCLElBQXRCO0FBQ0o7QUFHSjs7OzZHQ25hYyxPQUFPLENBQUMsTUFBUixDQUFlLFNBQWYsRUFBMEIsR0FBMUIsQ0FBOEIsQ0FBQyxnQkFBRCxDQUFtQixTQUFTLGNBQVQsQ0FBeUIsQ0FBQyxjQUFjLENBQUMsR0FBZixDQUFtQiwrQ0FBbkIsQ0FBbUUsa3JNQUFuRSxFQUMxRixjQUFjLENBQUMsR0FBZixDQUFtQiw0Q0FBbkIsQ0FBZ0UsZzg1QkFBaEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixrREFBbkIsQ0FBc0UsOHRKQUF0RSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDJDQUFuQixDQUErRCwyaUJBQS9ELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIseUNBQW5CLENBQTZELG1xQkFBN0QsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixtREFBbkIsQ0FBdUUsczZCQUF2RSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDBDQUFuQixDQUE4RCw0SUFBOUQsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQix3Q0FBbkIsQ0FBNEQsbXlTQUE1RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDJDQUFuQixDQUErRCw0a09BQS9ELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsZ0RBQW5CLENBQW9FLDhuTEFBcEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiwyQ0FBbkIsQ0FBK0Qsc29yQkFBL0QsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiwrQ0FBbkIsQ0FBbUUsa3BQQUFuRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLGdEQUFuQixDQUFvRSxtM1VBQXBFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsZ0RBQW5CLENBQW9FLHVpYkFBcEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiwwQ0FBbkIsQ0FBOEQsNG1CQUE5RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDBDQUFuQixDQUE4RCxrOVdBQTlELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsd0NBQW5CLENBQTRELHU2RkFBNUQsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiwwQ0FBbkIsQ0FBOEQsa2xUQUE5RCxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDhDQUFuQixDQUFrRSx3M1hBQWxFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsa0RBQW5CLENBQXNFLHd1SEFBdEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiw0Q0FBbkIsQ0FBZ0UscTVlQUFoRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLGdEQUFuQixDQUFvRSxtNmhCQUFwRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDhDQUFuQixDQUFrRSwwMkhBQWxFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsMENBQW5CLENBQThELDIwUEFBOUQsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixnREFBbkIsQ0FBb0UsK0RBQXBFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsK0NBQW5CLENBQW1FLHFLQUFuRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDJDQUFuQixDQUErRCx3RUFBL0QsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiw4Q0FBbkIsQ0FBa0UsOGhWQUFsRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLGlEQUFuQixDQUFxRSxzdUpBQXJFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsd0RBQW5CLENBQTRFLGtzRUFBNUUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiw2Q0FBbkIsQ0FBaUUsc3NCQUFqRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHdDQUFuQixDQUE0RCxtc0dBQTVELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsMkNBQW5CLENBQStELHNvR0FBL0QsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixvREFBbkIsQ0FBd0UsdW5FQUF4RSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLCtDQUFuQixDQUFtRSxFQUFuRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHNDQUFuQixDQUEwRCw2OEJBQTFELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsNkRBQW5CLENBQWlGLDQ1MEJBQWpGLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIseURBQW5CLENBQTZFLDRzTUFBN0UsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQix3REFBbkIsQ0FBNEUsMjZkQUE1RSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLG9EQUFuQixDQUF3RSxxcE1BQXhFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsc0RBQW5CLENBQTBFLHdyc0JBQTFFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsa0RBQW5CLENBQXNFLHVwRkFBdEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiw2REFBbkIsQ0FBaUYsOGtQQUFqRixFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHlEQUFuQixDQUE2RSxrL1dBQTdFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsb0RBQW5CLENBQXdFLG8rSUFBeEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQix1REFBbkIsQ0FBMkUsZ29DQUEzRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLG1EQUFuQixDQUF1RSx3MFhBQXZFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsa0VBQW5CLENBQXNGLCtuSkFBdEYsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiw4REFBbkIsQ0FBa0Ysd3BKQUFsRixFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDZDQUFuQixDQUFpRSxtdUJBQWpFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsdURBQW5CLENBQTJFLHVzakJBQTNFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsaURBQW5CLENBQXFFLGtvQ0FBckUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixvREFBbkIsQ0FBd0UsZ29FQUF4RSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDBEQUFuQixDQUE4RSx5c0NBQTlFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsb0RBQW5CLENBQXdFLHM5MUJBQXhFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsb0RBQW5CLENBQXdFLHUwU0FBeEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixvREFBbkIsQ0FBd0UseWpCQUF4RSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLGlEQUFuQixDQUFxRSwwTUFBckUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiwrREFBbkIsQ0FBbUYsMDRNQUFuRixFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHVEQUFuQixDQUEyRSxpc0ZBQTNFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsb0RBQW5CLENBQXdFLHMvRUFBeEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixnREFBbkIsQ0FBb0UsZ3lIQUFwRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLG1EQUFuQixDQUF1RSxzcEtBQXZFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsZ0RBQW5CLENBQW9FLDAyS0FBcEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixnREFBbkIsQ0FBb0UsMGRBQXBFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsK0NBQW5CLENBQW1FLGsrSUFBbkUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixnREFBbkIsQ0FBb0Usc2dKQUFwRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLG1EQUFuQixDQUF1RSxnMktBQXZFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsdURBQW5CLENBQTJFLDJwUkFBM0UsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiwyQ0FBbkIsQ0FBK0QsOEpBQS9ELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsbURBQW5CLENBQXVFLGluS0FBdkUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQix1REFBbkIsQ0FBMkUsK1VBQTNFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsa0RBQW5CLENBQXNFLCt1TkFBdEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiwrQ0FBbkIsQ0FBbUUseUxBQW5FLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsc0RBQW5CLENBQTBFLGlobUJBQTFFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsb0RBQW5CLENBQXdFLDIzREFBeEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiw2Q0FBbkIsQ0FBaUUsZzVLQUFqRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLG1EQUFuQixDQUF1RSx3Ly9CQUF2RSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDJEQUFuQixDQUErRSxxejJCQUEvRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHVEQUFuQixDQUEyRSxvaUhBQTNFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsZ0RBQW5CLENBQW9FLHloSkFBcEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixnREFBbkIsQ0FBb0UsbVFBQXBFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsb0RBQW5CLENBQXdFLGs3REFBeEUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQixpREFBbkIsQ0FBcUUseTVFQUFyRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHFEQUFuQixDQUF5RSxrbEJBQXpFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsNkNBQW5CLENBQWlFLHk5REFBakUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiw2Q0FBbkIsQ0FBaUUseW1DQUFqRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLDRDQUFuQixDQUFnRSxpL0hBQWhFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsMERBQW5CLENBQThFLG1yREFBOUUsRUFDQSxjQUFjLENBQUMsR0FBZixDQUFtQiw2Q0FBbkIsQ0FBaUUsa1lBQWpFLEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsc0RBQW5CLENBQTBFLHlHQUExRSxFQUNBLGNBQWMsQ0FBQyxHQUFmLENBQW1CLHlDQUFuQixDQUE2RCw2b0ZBQTdELEVBQ0EsY0FBYyxDQUFDLEdBQWYsQ0FBbUIsNENBQW5CLENBQWdFLDI0RkFBaEUsRUFBODhGLENBNUZqNkYsQ0FBOUIsQyIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLG4sdCl7ZnVuY3Rpb24gbyhpLGYpe2lmKCFuW2ldKXtpZighZVtpXSl7dmFyIGM9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighZiYmYylyZXR1cm4gYyhpLCEwKTtpZih1KXJldHVybiB1KGksITApO3ZhciBhPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIraStcIidcIik7dGhyb3cgYS5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGF9dmFyIHA9bltpXT17ZXhwb3J0czp7fX07ZVtpXVswXS5jYWxsKHAuZXhwb3J0cyxmdW5jdGlvbihyKXt2YXIgbj1lW2ldWzFdW3JdO3JldHVybiBvKG58fHIpfSxwLHAuZXhwb3J0cyxyLGUsbix0KX1yZXR1cm4gbltpXS5leHBvcnRzfWZvcih2YXIgdT1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGk9MDtpPHQubGVuZ3RoO2krKylvKHRbaV0pO3JldHVybiBvfXJldHVybiByfSkoKSIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGFwcE1lc3NhZ2VzICgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnRUEnLFxuICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9hcHBtc2cuaHRtbCcsXG4gICAgICAgICAgICAvL3JlcGxhY2U6IHRydWUsXG4gICAgICAgICAgIC8vIHRyYW5zY2x1ZGU6dHJ1ZSxcbiAgICAgICAgICAgIHNjb3BlOiB7XG4gICAgICAgICAgICAgICBtZXNzYWdlTGlzdCA6ICc9J1xuXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24oJHNjb3BlLCRzY2UsTWVzc2FnaW5nU2VydmljZSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgJHNjb3BlLm1zdmMgPSBNZXNzYWdpbmdTZXJ2aWNlO1xuICAgICAgICAgICAgICAgICAgJHNjb3BlLm1lc3NhZ2VMaXN0ID0gJHNjb3BlLm1zdmMuZ2V0TWVzc2FnZXMoKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgJHNjb3BlLnNob3dNZXNzYWdlTGlzdD0gZmFsc2U7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgXG4gICAgICAgICAgICBcbiAgICAgICAgICAgICRzY29wZS5jbG9zZUFsbENsaWNrZWQgPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICRzY29wZS5jbG9zZUFsbENsaWNrZWRWYXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgICRzY29wZS5tc3ZjLnJlbW92ZUFsbE1lc3NhZ2VzKCk7XG4gICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JHNjb3BlLmNsb3NlQWxsQ2xpY2tlZFZhcj1mYWxzZX0sMjAwMCk7XG4gICAgICAgIFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgICRzY29wZS5jbG9zZUFsZXJ0ID0gZnVuY3Rpb24oaWQpe1xuICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICRzY29wZS5tZXNzYWdlTGlzdFtpZF0uc2hvdyA9IGZhbHNlO1xuICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHZhciB2aXNpYmxlID0gJHNjb3BlLm1zdmMuY2hlY2tGb3JWaXNpYmxlTWVzc2FnZXMoKTtcbiAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiAodmlzaWJsZT09MCkgJHNjb3BlLm1zdmMucmVtb3ZlQWxsTWVzc2FnZXMoKTtcbiAgICAgICAgXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAkc2NvcGUuY291bnRWaXNpYmxlID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgdmFyIGNvdW50VmlzaWJsZU1zZz0wO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPCAkc2NvcGUubWVzc2FnZUxpc3QubGVuZ3RoO2krKylcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLm1lc3NhZ2VMaXN0W2ldLnNob3cpIGNvdW50VmlzaWJsZU1zZysrO1xuICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBjb3VudFZpc2libGVNc2c7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgICRzY29wZS5jb252ZXJ0VG9IdG1sID0gZnVuY3Rpb24obXNnKXtcbiAgICAgICAgICAgICAgIHJldHVybiAkc2NlLnRydXN0QXNIdG1sKG1zZyk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbWVudCwgYXR0cnMpIHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgXG4gICAgICAgICAgXG4gICAgICAgICAgICBcbiAgICAgICAgICAgXG5cblxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xufTtcblxuJ3VzZSBzdHJpY3QnO1xyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdEFjdGlvbkJ1dHRvbnMgKGRyYWd1bGFTZXJ2aWNlLCRyb290U2NvcGUpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uKCRzY29wZSxVc2VyU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSxUYXNrRGF0YVNlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLCRyb290U2NvcGUsR3JpZHN0ZXJTZXJ2aWNlLFV0aWxpdHlTZXJ2aWNlLENPREVTX0NPTlNULCRzdGF0ZVBhcmFtcywkc3RhdGUsS2F0YWx5b1N0YXRlTWFuYWdlciwkdGVtcGxhdGVDYWNoZSwkY29tcGlsZSwkZWxlbWVudCwkdGltZW91dCwkd2luZG93KVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmM9IEdyaWRzdGVyU2VydmljZTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5DVFJMTkFNRT1cImt0QWN0aW9uQnV0dG9uc1wiXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycz09PXVuZGVmaW5lZCkgJHNjb3BlLmZkLmxvY2FsVmFycyA9IHt9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMud2RlcyA9IFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2VcclxuXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmFjdGlvblR5cGVzID0gW1xyXG4gICAgICAgICAgICAgICAgICB7aWQ6MixuYW1lOiBcIlByb2Nlc3Mgd2lkZ2V0c1wiLCB2YWx1ZTogXCJwcm9jd2lkZ2V0c1wifSxcclxuICAgICAgICAgICAgICAgICAge2lkOjUsbmFtZTogXCJXaWRnZXQgYWN0aW9uXCIsICB2YWx1ZTogXCJ3aWRnZXRhY3Rpb25cIn0sXHJcbiAgICAgICAgICAgICAgICAgIHtpZDo4LCBuYW1lOiBcIk9wZW4gUGFnZVwiLCB2YWx1ZTogXCJvcGVucGFnZVwifSxcclxuICAgICAgICAgICAgICAgICAgIHtpZDo5LCBuYW1lOiBcIkdvIHRvIHByZXZpb3VzIHBhZ2VcIiwgdmFsdWU6IFwiYmFja2J1dHRvblwifSxcclxuICAgICAgICAgICAgICAgIC8vIHtpZDowLG5hbWU6IFwiRXhlY3V0ZSB0YXNrXCIsIHZhbHVlOiBcImV4ZWN1dGV0YXNrXCJ9LFxyXG4gICAgICAgICAgICAgICAgLy8gIHtpZDoxLG5hbWU6IFwiU3RhcnQgdGFza1wiLCB2YWx1ZTogXCJydW50YXNrXCJ9LFxyXG4gICAgICAgICAgICAgICAgLy8gIHtpZDozLG5hbWU6IFwiUmVmcmVzaCB0YXNrXCIsICB2YWx1ZTogXCJyZWZyZXNodGFza1wifSxcclxuICAgICAgICAgICAgICAgIC8vICB7aWQ6NCwgbmFtZTogXCJDb21wbGV0ZSB0YXNrXCIsIHZhbHVlOiBcImNvbXBsZXRldGFza1wifSxcclxuICAgICAgICAgICAgICAgIC8vICB7aWQ6NiwgbmFtZTogXCJDbG9zZSBmb3JtXCIsIHZhbHVlOiBcImNsb3NlZm9ybVwifSxcclxuICAgICAgICAgICAgICAgIC8vICB7aWQ6NywgbmFtZTogXCJDbGVhciBmb3JtXCIsIHZhbHVlOiBcImNsZWFyZm9ybVwifSxcclxuICAgICAgICAgICAgICAgIC8vICB7aWQ6MTAsIG5hbWU6IFwiSW5pdGlhdGUgdGFza1wiLCB2YWx1ZTogXCJpbml0aWF0ZXRhc2tcIn1cclxuICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5hY3Rpb25CdXR0b25DbGFzcz1bJ2J0bi14cycsJ2J0bi1zbScsJycsJ2J0bi1sZyddXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmFjdGlvbkJ1dHRvblNpemU9WydFeHRyYSBTbWFsbCcsJ1NtYWxsJywnTm9ybWFsJywnTGFyZ2UnXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5hY3Rpb25zRXhlY3V0ZWQ9e31cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dNZW51ID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICRzY29wZS50YXNrSWQ9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZURlZklkXHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5Gb3JtRGVmPT09dW5kZWZpbmVkIHx8ICRzY29wZS5mZC5Gb3JtRGVmPT09bnVsbCB8fCAkc2NvcGUuZmQuRm9ybURlZj09PVwiXCIpICRzY29wZS5mZC5Gb3JtRGVmPVtdO1xyXG4gICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnRvZ2dsZURyb3Bkb3duID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dNZW51ID0gICRzY29wZS5mZC5sb2NhbFZhcnMuc2hvd01lbnUgPyBmYWxzZTogdHJ1ZSBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbiE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUudGFza0luaXRpYXRlSWQgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRhc2tfaW5pdGlhdGVfaWQ7XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS50YXNrRXhlY3V0ZUlkID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50YXNrX2V4ZWN1dGVfaWQ7XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEZWZpbml0aW9uID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbjtcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5wcmV2aW91c1Rhc2sgPSAkc2NvcGUudGFza0V4ZWN1dGVJZDtcclxuICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMucHJldmlvdXNUYXNrPT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnMucHJldmlvdXNUYXNrID0gJHNjb3BlLnRhc2tJbml0aWF0ZUlkO1xyXG4gICAgICAgICAgICAgICAgfWVsc2UgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbiA9ICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEZWZpbml0aW9uO1xyXG5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlV1aWRSZWY9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLlV1aWRSZWY9VXRpbGl0eVNlcnZpY2UudXVpZHY0KClcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5QYXJhbWV0ZXJzLlV1aWRSZWYgPSAkc2NvcGUuZmQuVXVpZFJlZlxyXG4gICAgICAgICAgICAgICAgbGV0IHdfYWN0aW9ucz1bXHJcbiAgICAgICAgICAgICAgICAgICAge2lkOjAsbmFtZTondG9nZ2xlVmlzaWJpbGl0eSd9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtpZDoxLG5hbWU6J3Nob3dGaWVsZCd9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtpZDoyLG5hbWU6J2hpZGVGaWVsZCd9LFxyXG4gICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgbGV0IHdpZGdldERlZmluaXRpb24gPSB7d2lkZ2V0TGFiZWw6ICdBY3Rpb24gYnV0dG9ucycsd2lkZ2V0TmFtZTogJ2FjdGlvbkJ0bnMnLHdpZGdldElkOiAkc2NvcGUuZmQuVXVpZFJlZixmZDokc2NvcGUuZmQsYWN0aW9uczp3X2FjdGlvbnMsIHRhc2tfaW5pdGlhdGVfaWQ6JHNjb3BlLnRhc2tJbml0aWF0ZUlkLHRhc2tfZXhlY3V0ZV9pZDokc2NvcGUudGFza0V4ZWN1dGVJZCxwYXJlbnRSZXNvdXJjZUlkOiRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEZWZpbml0aW9uLnVpZH07XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLkxvY2FsSWQ9V2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5yZWdpc3RlcldpZGdldCh3aWRnZXREZWZpbml0aW9uKTtcclxuICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgLyoqKioqKioqKioqIFNFVFVQIEtBVEFMWU8gU1RBVEUgTUFOQUdFUiAqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmtzbSA9IEthdGFseW9TdGF0ZU1hbmFnZXI7XHJcbiAgICAgICAgICAgICAgICBsZXQgaW5pdGlhdGVkVGFza0lkPW51bGw7XHJcbiAgICAgICAgICAgICAgICBsZXQgaW5pdGlhdGVUYXNrU3RhdGU9ICRzY29wZS5rc20uYWRkU3ViamVjdChcImluaXRpYXRlVGFza1N0YXRlXCIrJHNjb3BlLmZkLlV1aWRSZWYsaW5pdGlhdGVkVGFza0lkKTtcclxuICAgICAgICAgICAgICAgIGxldCBpbml0aWF0ZVRhc2tTdGF0ZU5hbWUgPSBpbml0aWF0ZVRhc2tTdGF0ZS5zdWJqZWN0Lm5hbWU7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGxldCB0YXNrX2luaXRpYXRlZCA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhdGVUYXNrU3RhdGUuc3ViamVjdC5zZXRTdGF0ZUNoYW5nZXMgPSBkYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgIGluaXRpYXRlVGFza1N0YXRlLnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKFwidGFza19pbml0aWF0ZWRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgYWN0aW9uX3Rhc2tfaW5pdGlhdGVkID0gJHNjb3BlLmtzbS5hZGRBY3Rpb24oaW5pdGlhdGVUYXNrU3RhdGVOYW1lLFwidGFza19pbml0aWF0ZWRcIix0YXNrX2luaXRpYXRlZCk7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3ViamVjdEFjdEJ0bj0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkK1wiLVwiKyRzY29wZS5mZC5VdWlkUmVmXHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlU3RhdGVBY3RCdG49ICRzY29wZS5rc20uYWRkU3ViamVjdChzdWJqZWN0QWN0QnRuLG51bGwpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWVTdGF0ZUFjdEJ0bk5hbWUgPSB2YWx1ZVN0YXRlQWN0QnRuLnN1YmplY3QubmFtZTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIGxldCBzaG93X2ZpZWxkID0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuU2hvd0ZpZWxkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBzdGF0ZSA9IGRhdGFcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZVsndmFsJ10gPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVTdGF0ZUFjdEJ0bi5zdWJqZWN0LnNldFN0YXRlQ2hhbmdlcyA9IHN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVTdGF0ZUFjdEJ0bi5zdWJqZWN0Lm5vdGlmeU9ic2VydmVycyhcInNob3dGaWVsZFwiLHN0YXRlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCBoaWRlX2ZpZWxkID0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuU2hvd0ZpZWxkID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICBsZXQgc3RhdGUgPSBkYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGVbJ3ZhbCddID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0YXRlQWN0QnRuLnN1YmplY3Quc2V0U3RhdGVDaGFuZ2VzID0gc3RhdGVcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0YXRlQWN0QnRuLnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKFwiaGlkZUZpZWxkXCIsc3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxldCB0b2dnbGVfdmlzaWJpbGl0eSA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlNob3dGaWVsZCA9ICEkc2NvcGUuZmQuU2hvd0ZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0YXRlID0gZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlWyd2YWwnXSA9ICRzY29wZS5mZC5TaG93RmllbGRcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0YXRlQWN0QnRuLnN1YmplY3Quc2V0U3RhdGVDaGFuZ2VzID0gc3RhdGVcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0YXRlQWN0QnRuLnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKFwidG9nZ2xlVmlzaWJpbGl0eVwiLHN0YXRlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGxldCBhY3Rpb25fc2hvdyA9ICRzY29wZS5rc20uYWRkQWN0aW9uKHZhbHVlU3RhdGVBY3RCdG5OYW1lLFwic2hvd0ZpZWxkXCIsc2hvd19maWVsZCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgYWN0aW9uX2hpZGUgPSAkc2NvcGUua3NtLmFkZEFjdGlvbih2YWx1ZVN0YXRlQWN0QnRuTmFtZSxcImhpZGVGaWVsZFwiLGhpZGVfZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGFjdGlvbl90b2dnbGUgPSAkc2NvcGUua3NtLmFkZEFjdGlvbih2YWx1ZVN0YXRlQWN0QnRuTmFtZSxcInRvZ2dsZVZpc2liaWxpdHlcIix0b2dnbGVfdmlzaWJpbGl0eSk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5vblNlbGVjdEZuID0gZnVuY3Rpb24oaXRlbSxtb2RlbCxpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vZGVidWdnZXIgIFxyXG4gICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uLmFjdGlvbnNbaW5kZXhdLmFjdGlvbiA9IGl0ZW1cclxuICAgICAgICAgICAgICAgICB9XHJcbiAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLkdldE91dGNvbWVzID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvdXRjb21lSWQgPSAwICAgICAgICAgICAgICAgIC8qTUlHT1IgcHJvdmplcml0aSBqb3MqLyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlRGVmaW5pdGlvbj8uVGFza091dGNvbWVIZWFkSWQgIT11bmRlZmluZWQpIG91dGNvbWVJZCA9ICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEZWZpbml0aW9uLlRhc2tPdXRjb21lSGVhZElkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJHNjb3BlLm91dGNvbWVzRG93bmxvYWRlZCAmJiBvdXRjb21lSWQ+MClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFza0RhdGFTZXJ2aWNlLkdldFRhc2tPdXRjb21lcyggJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZURlZmluaXRpb24/LlJlc291cmNlRGVmSWQsb3V0Y29tZUlkLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkgeyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMub3V0Y29tZXMgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm91dGNvbWVzRG93bmxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9hZGluZ0FjdGlvbnM9ZmFsc2U7ICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9Ly9HZXRPdXRjb21lc1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5vdXRjb21lcz09dW5kZWZpbmVkKSAge1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5HZXRPdXRjb21lcygpOyAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmxvYWRlZFRhc2tzID0gW107XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5hY3Rpb25CdXR0b25Qcm9wcz09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuYWN0aW9uQnV0dG9uUHJvcHM9e307XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuYWN0aW9uQnV0dG9uUHJvcHNbJHNjb3BlLmZkLlV1aWRSZWZdPTA7ICBcclxuXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1UeXBlPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24/LmZvcm1fdHlwZTtcclxuICAgICAgICAgICAgICAgIC8vdmFyIHRhc2tEZWZJZCA9ICRzdGF0ZVBhcmFtcy5pZDtcclxuICAgICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy50YXNrTGlzdFBhcmFtZXRlcnMgPSB7cGxhY2Vob2xkZXI6J1NlbGVjdCBvciBzZWFyY2ggdGFzay4uLicsbGFiZWw6JHNjb3BlLmZkLnBsYWNlaG9sZGVyLG5hbWU6J3Rhc2snLFxyXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdDp0cnVlLHNlbGVjdGVkSXRlbTpudWxsLGhpZGVMYWJlbDp0cnVlLGNvbHVtblNpemVMYWJlbDonY29sLWxnLTI0Jyxkcm9wZG93blNpemU6J2NvbC1sZy0yNCcsb25TZWxlY3RGdW5jdGlvbjonJ307XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkVGFza0luZGV4PS0xO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGxldCBwcm9jZXNzX2V2ZW50X3Rhc2tfYWN0aW9uID0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YT8uc3RhdGU/LmVycm9yPT10cnVlKSAkc2NvcGUuc3RvcEV4ZWN1dGluZ0FjdGlvbnM9dHJ1ZVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5jbGlja2VkQnV0dG9uIT09dW5kZWZpbmVkICYmICRzY29wZS5mZC5Gb3JtRGVmLmxlbmd0aD4kc2NvcGUuZmQubG9jYWxWYXJzLmNsaWNrZWRCdXR0b24gJiYgISRzY29wZS5zdG9wRXhlY3V0aW5nQWN0aW9ucyl7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTA7ajwkc2NvcGUuZmQuRm9ybURlZlskc2NvcGUuZmQubG9jYWxWYXJzLmNsaWNrZWRCdXR0b25dLnZpc2liaWxpdHlBZnRlckFjdGlvbi5sZW5ndGg7aisrKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuRm9ybURlZltqXS5oaWRlQnV0dG9uID0gISRzY29wZS5mZC5Gb3JtRGVmWyRzY29wZS5mZC5sb2NhbFZhcnMuY2xpY2tlZEJ1dHRvbl0udmlzaWJpbGl0eUFmdGVyQWN0aW9uW2pdLnZpc2libGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhPy5zdGF0ZT8uYWN0aW9uX2luZGV4IT11bmRlZmluZWQpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5hY3Rpb25zRXhlY3V0ZWRbJHNjb3BlLmZkLmxvY2FsVmFycy5jbGlja2VkQnV0dG9uKyctJytkYXRhPy5zdGF0ZT8uYWN0aW9uX2luZGV4XSA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnByb2Nlc3NFeGVjdXRpb25RdWV1ZShkYXRhPy5zdGF0ZT8uYWN0aW9uX2luZGV4KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgcHJvY2Vzc19hZnRlcl93aWRnZXRfYWN0aW9uID0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YT8uc3RhdGU/LmVycm9yPT10cnVlKSAkc2NvcGUuc3RvcEV4ZWN1dGluZ0FjdGlvbnM9dHJ1ZVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5jbGlja2VkQnV0dG9uIT09dW5kZWZpbmVkICYmICRzY29wZS5mZC5Gb3JtRGVmLmxlbmd0aD4kc2NvcGUuZmQubG9jYWxWYXJzLmNsaWNrZWRCdXR0b24gJiYgISRzY29wZS5zdG9wRXhlY3V0aW5nQWN0aW9ucyl7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTA7ajwkc2NvcGUuZmQuRm9ybURlZlskc2NvcGUuZmQubG9jYWxWYXJzLmNsaWNrZWRCdXR0b25dLnZpc2liaWxpdHlBZnRlckFjdGlvbi5sZW5ndGg7aisrKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuRm9ybURlZltqXS5oaWRlQnV0dG9uID0gISRzY29wZS5mZC5Gb3JtRGVmWyRzY29wZS5mZC5sb2NhbFZhcnMuY2xpY2tlZEJ1dHRvbl0udmlzaWJpbGl0eUFmdGVyQWN0aW9uW2pdLnZpc2libGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhPy5zdGF0ZT8uYWN0aW9uX2luZGV4IT11bmRlZmluZWQpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5hY3Rpb25zRXhlY3V0ZWRbJHNjb3BlLmZkLmxvY2FsVmFycy5jbGlja2VkQnV0dG9uKyctJytkYXRhPy5zdGF0ZT8uYWN0aW9uX2luZGV4XSA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnByb2Nlc3NFeGVjdXRpb25RdWV1ZShkYXRhPy5zdGF0ZT8uYWN0aW9uX2luZGV4KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgZGVwZW5kZW50X2ZpZWxkMSA9IFwiRmllbGRcIiskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QxID0gXCJ0YXNrXCIrJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbj8udHJhbnNhY3Rpb25faWRcclxuICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlcjEgPSAkc2NvcGUua3NtLnN1YnNjcmliZShpbml0aWF0ZVRhc2tTdGF0ZU5hbWUsZGVwZW5kZW50X2ZpZWxkMSxcInRhc2tfaW5pdGlhdGVkXCIscHJvY2Vzc19ldmVudF90YXNrX2FjdGlvbik7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QyID0gXCJleGVjdXRlVGFza1N0YXRlTmFtZVwiKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24/LnRyYW5zYWN0aW9uX2lkXHJcbiAgICAgICAgICAgICAgICBsZXQgb2JzZXJ2ZXIyID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3QyLGRlcGVuZGVudF9maWVsZDEsXCJ0YXNrX2V4ZWN1dGVkXCIscHJvY2Vzc19ldmVudF90YXNrX2FjdGlvbik7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHN1YnNjcmliZWRTdWJqZWN0MyA9IFwicHJvY2Vzc1dpZGdldHNTdGF0ZU5hbWVcIiskc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uPy5wYWdlX3N0YXRlX2lkXHJcbiAgICAgICAgICAgICAgICBsZXQgb2JzZXJ2ZXIzID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3QzLGRlcGVuZGVudF9maWVsZDEsXCJ3aWRnZXRzX3Byb2Nlc3NlZFwiLHByb2Nlc3NfZXZlbnRfdGFza19hY3Rpb24pO1xyXG5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuJG9uKCdJbmxpbmVUYXNrQ2xvc2VkJyxmdW5jdGlvbihldmVudCxkYXRhKXtcclxuICAgICAgICAgICAgICAgICAgICAvL3ZhciBpbmRleD1kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLmZkLmxvYWRlZFRhc2tzLnNwbGljZShpbmRleCwxKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdGFza0lkPWRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9ICRzY29wZS5mZC5sb2NhbFZhcnMubG9hZGVkVGFza3MubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUudGFza0lkOyB9KS5pbmRleE9mKHRhc2tJZCk7XHJcbiAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwb3M+PTApXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5sb2FkZWRUYXNrcy5zcGxpY2UocG9zLDEpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuTG9hZFRhc2s9ZnVuY3Rpb24odGFza0lkLG91dGNvbWVJZCxwcmV2aW91c1Rhc2ssb3BlblRhc2tUeXBlLGJ1dHRvbilcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbG9jYWxWYXJzID0geydpc0lubGluZVRhc2snOiRzY29wZS5mZC5pc0lubGluZVRhc2ssJ09wZW5UYXNrVHlwZSc6b3BlblRhc2tUeXBlLCd0YXNrSW5kZXgnOiRzY29wZS5mZC5sb2NhbFZhcnMubG9hZGVkVGFza3MubGVuZ3RoLCdsb2FkVGFza0RpcmVjdCcgOiB0cnVlLCd0YXNrSWQnOnRhc2tJZCwnb3V0Y29tZUlkJzpvdXRjb21lSWQsJ3ByZXZpb3VzVGFzayc6cHJldmlvdXNUYXNrLH07XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxWYXJzLlNob3dDbG9zZUJ0biA9IGJ1dHRvbi5TaG93Q2xvc2VUYXNrQnRuO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBwb3MgPSAkc2NvcGUuZmQubG9jYWxWYXJzLmxvYWRlZFRhc2tzLm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLnRhc2tJZDsgfSkuaW5kZXhPZih0YXNrSWQpO1xyXG4gICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAocG9zPDAgJiYgb3BlblRhc2tUeXBlPT1cImN1cnJlbnRcIilcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMubG9hZGVkVGFza3Muc3BsaWNlKDAsMCx7J3Rhc2tJZCc6dGFza0lkLCdvdXRjb21lSWQnOm91dGNvbWVJZCwncHJldmlvdXNUYXNrJzpwcmV2aW91c1Rhc2ssJ2xvY2FsVmFycyc6bG9jYWxWYXJzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbihpbml0aWF0ZVRhc2tTdGF0ZU5hbWUsXCJ0YXNrX2luaXRpYXRlZFwiLCB7J3Rhc2tJZCc6dGFza0lkLCdvdXRjb21lSWQnOm91dGNvbWVJZCwncHJldmlvdXNUYXNrJzpwcmV2aW91c1Rhc2ssJ2xvY2FsVmFycyc6bG9jYWxWYXJzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYgKG9wZW5UYXNrVHlwZT09XCJpbmxpbmVcIilcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMubG9hZGVkVGFza3MubGVuZ3RoPTA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMubG9hZGVkVGFza3MucHVzaCh7J3Rhc2tJZCc6dGFza0lkLCdvdXRjb21lSWQnOm91dGNvbWVJZCwncHJldmlvdXNUYXNrJzpwcmV2aW91c1Rhc2ssJ2xvY2FsVmFycyc6bG9jYWxWYXJzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbihpbml0aWF0ZVRhc2tTdGF0ZU5hbWUsXCJ0YXNrX2luaXRpYXRlZFwiLCB7J3Rhc2tJZCc6dGFza0lkLCdvdXRjb21lSWQnOm91dGNvbWVJZCwncHJldmlvdXNUYXNrJzpwcmV2aW91c1Rhc2ssJ2xvY2FsVmFycyc6bG9jYWxWYXJzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmIChvcGVuVGFza1R5cGU9PVwiY29udGFpbmVyXCIpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFZhcnMgPSB7J2lzSW5saW5lVGFzayc6JHNjb3BlLmZkLmlzSW5saW5lVGFzaywnT3BlblRhc2tUeXBlJzonY3VycmVudCcsJ3Rhc2tJbmRleCc6MCwnbG9hZFRhc2tEaXJlY3QnIDogdHJ1ZSwndGFza0lkJzp0YXNrSWQsJ291dGNvbWVJZCc6b3V0Y29tZUlkLCdwcmV2aW91c1Rhc2snOnByZXZpb3VzVGFzayx9O1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKGluaXRpYXRlVGFza1N0YXRlTmFtZSxcInRhc2tfaW5pdGlhdGVkXCIsIHsndGFza0lkJzp0YXNrSWQsJ291dGNvbWVJZCc6b3V0Y29tZUlkLCdwcmV2aW91c1Rhc2snOnByZXZpb3VzVGFzaywnbG9jYWxWYXJzJzpsb2NhbFZhcnN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnNldE9wZW5UYXNrVHlwZShvcGVuVGFza1R5cGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5jb3B5VG9DbGlwYm9hcmQgPSBmdW5jdGlvbih0ZXh0KXtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmNvcHlVdWlkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dCkudGhlbiggXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7JHNjb3BlLmZkLmxvY2FsVmFycy5jb3B5VXVpZCA9IGZhbHNlO30sMTAwMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHsgICAgLyogY2xpcGJvYXJkIHdyaXRlIGZhaWxlZCAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdDb3B5IHRvIGNsaXBib2FyZCBmYWlsZWQnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXskc2NvcGUuZmQubG9jYWxWYXJzLmNvcHlVdWlkID0gZmFsc2U7fSwxMDAwKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5hZGRCdXR0b25BY3Rpb24gPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uLmFjdGlvbnM9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZEJ1dHRvbi5hY3Rpb25zPVtdXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZEJ1dHRvbi5hY3Rpb25zLnB1c2goe2lkOiRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRCdXR0b24uYWN0aW9ucy5sZW5ndGgrMSx3aWRnZXRSZWY6Jycsd2lkZ2V0QWN0aW9uTmFtZTonJ30pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmRlbEJ1dHRvbkFjdGlvbiA9IGZ1bmN0aW9uKGluZGV4KXtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uLmFjdGlvbnMuc3BsaWNlKGluZGV4LDEpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmluc2VydEJ1dHRvbkFjdGlvbiA9IGZ1bmN0aW9uKGluZGV4KXtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uLmFjdGlvbnMuc3BsaWNlKGluZGV4LDAse2lkOiRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRCdXR0b24uYWN0aW9ucy5sZW5ndGgrMSx3aWRnZXRSZWY6Jycsd2lkZ2V0QWN0aW9uTmFtZTonJ30pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLlByb2Nlc3NPdXRjb21lID0gZnVuY3Rpb24gKG91dGNvbWUsZm9ybSl7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxvdXRjb21lLmFjdGlvbnMubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG91dGNvbWUuYWN0aW9uc1tpXS50eXBlPT0xIHx8IG91dGNvbWUuYWN0aW9uc1tpXS50eXBlPT0yKVxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5Jbml0aWF0ZVRhc2tGcm9tT3V0Y29tZShvdXRjb21lLmFjdGlvbnNbaV0udGFza0lkLG91dGNvbWUuaWQxLG91dGNvbWUuYWN0aW9uc1tpXS50eXBlLG91dGNvbWUuYWN0aW9uc1tpXS5hY3Rpb25QYXJhbXMsJHNjb3BlLmZvcm1EYXRhLG91dGNvbWUuYWN0aW9uc1tpXS5hY3Rpb25QYXJhbXMuT3BlblRhc2tUeXBlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvdXRjb21lLmFjdGlvbnMubGVuZ3RoPT0wKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJGVtaXQoXCJFeGVjdXRlVGFza1wiKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24/LnRhc2tfZXhlY3V0ZV9pZCx7Zm9ybTpmb3JtLG91dGNvbWVJZDpvdXRjb21lLmlkMX0pOyBcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuSW5pdGlhdGVUYXNrRnJvbU91dGNvbWUgPSBmdW5jdGlvbiAodGFza0RlZklkLG91dGNvbWVJZCx0eXBlLGFjdGlvblBhcmFtcyxleGVGb3JtLG9wZW5Jbk5ld1BhZ2Upe1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy9zYXZlIHRhc2sgaW5zdGFuY2UgZm9ybSBmb3IgbGF0ZXIgcHJvY2Vzc2luZ1xyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChvcGVuSW5OZXdQYWdlPT11bmRlZmluZWQpIG9wZW5Jbk5ld1BhZ2U9J2lubGluZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbj8udGFza19leGVjdXRlX2lkIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBUYXNrRGF0YVNlcnZpY2Uuc2F2ZVRhc2tGb3JtRGF0YSgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uPy5pZCxleGVGb3JtKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlPT0yKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhdGUuZ28oJ2FwcC5uYXZiYXIudGFza3MucHJvYycse2lkOiB0YXNrRGVmSWQsZnJvbVN0YXRlTmFtZTokc3RhdGUuY3VycmVudC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21TdGF0ZVBhcmFtczokc3RhdGUucGFyYW1zLHByZXZfdGFza19leGVjdXRlX2lkOiRzY29wZS5yZXNvdXJjZURlZmluaXRpb24/LnRhc2tfZXhlY3V0ZV9pZCxvdXRjb21lX2lkOm91dGNvbWVJZCxwcmVzZW50YXRpb25faWQ6MH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGU9PTEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZnJvbU91dGNvbWU9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXNrRGVmSWQhPXVuZGVmaW5lZCAmJiAgdGFza0RlZklkPjApICRzY29wZS5mZC5sb2NhbFZhcnMuTG9hZFRhc2sodGFza0RlZklkLG91dGNvbWVJZCwkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uPy50YXNrX2V4ZWN1dGVfaWQsb3BlbkluTmV3UGFnZSk7ICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiSW52YWxpZCB0YXNrIGRhdGEgLS0+IFRhc2sgZXhlY3V0aW9uIG9iamVjdCBpcyB1bmRlZmluZWRcIiwnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLlByb2Nlc3NTaW5nbGVBY3Rpb249ZnVuY3Rpb24oYnV0dG9uLGFjdGlvbixldmVudCxwcmV2aW91c1Rhc2ssaW5kZXgsYWN0aW9uX2lkeCxvbGRfY2xpY2tlZF9idG4pe1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuYWN0aW9uc0V4ZWN1dGVkWyRzY29wZS5mZC5sb2NhbFZhcnMuY2xpY2tlZEJ1dHRvbisnLScrYWN0aW9uX2lkeF0gPSBmYWxzZVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGlvbi5hY3Rpb24udmFsdWU9PSdjb21wbGV0ZXRhc2snKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLlByb2Nlc3NPdXRjb21lKGFjdGlvbi5vdXRjb21lLGV2ZW50LnRhcmdldC5mb3JtKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIC8vICRzY29wZS4kZW1pdChcIkV4ZWN1dGVUYXNrXCIrJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50YXNrX2V4ZWN1dGVfaWQse2Zvcm06ZXZlbnQudGFyZ2V0LmZvcm0sb3V0Y29tZUlkOmJ1dHRvbi5vdXRjb21lLmlkMX0pOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uYWN0aW9uLnZhbHVlPT0ncnVudGFzaycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9sZF9jbGlja2VkX2J0biE9PSRzY29wZS5mZC5sb2NhbFZhcnMuY2xpY2tlZEJ1dHRvbikgJHNjb3BlLmZkLmxvY2FsVmFycy5Mb2FkVGFzayhhY3Rpb24udGFzay5pZCwwLHByZXZpb3VzVGFzayxhY3Rpb24uT3BlblRhc2tUeXBlLGFjdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmFjdGlvbi52YWx1ZT09J2Nsb3NlZm9ybScpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbih0YXNrU3RhdGVOYW1lLFwidGFza19jbG9zZWRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS4kZW1pdChcIkNsb3NlVGFza0Zvcm1cIiskc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uPy50cmFuc2FjdGlvbl9pZCwkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uPy5SZXNvdXJjZURlZklkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uYWN0aW9uLnZhbHVlPT0ncmVmcmVzaHRhc2snKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMudGFza0luaXRpYXRlZD1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRlbWl0KFwiUmVmcmVzaFRhc2tcIiskc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uPy5SZXNvdXJjZURlZklkLCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24/LlJlc291cmNlRGVmSWQpOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uYWN0aW9uLnZhbHVlPT0nZXhlY3V0ZXRhc2snKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0YXNrU3RhdGVOYW1lID0gXCJ0YXNrXCIrJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbj8ucHJldl90YXNrX3RyYW5zYWN0aW9uX2lkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMudGFza0luaXRpYXRlZD1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRlbWl0KFwiRXhlY3V0ZVRhc2tcIiskc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uPy50YXNrX2V4ZWN1dGVfaWQse2Zvcm06ZXZlbnQudGFyZ2V0LmZvcm0sb3V0Y29tZUlkOm51bGx9KTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmFjdGlvbi52YWx1ZT09J3Rhc2tzdGF0dXMnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uYWN0aW9uLnZhbHVlPT0ncHJvY3dpZGdldHMnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJGVtaXQoXCJQcm9jZXNzV2lkZ2V0c1wiKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24/LnBhZ2Vfc3RhdGVfaWQse2Zvcm06ZXZlbnQudGFyZ2V0LmZvcm0sYWN0aW9uX2luZGV4OmFjdGlvbl9pZHh9KTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmFjdGlvbi52YWx1ZT09J3dpZGdldGFjdGlvbicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vVG9EbyAtIGNyZWF0ZSB3b3JrZmxvdyB3aXRoIGNvbmRpdGlvbnMgKGV4ZWN1dGUgYWN0aW9uIGJhc2VkIG9uIGNvbmRpdGlvbikgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aW9uLmRlcGVuZHNPbj4wKXtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5hY3Rpb25zRXhlY3V0ZWRbJHNjb3BlLmZkLmxvY2FsVmFycy5jbGlja2VkQnV0dG9uKyctJysoYWN0aW9uLmRlcGVuZHNPbi0xKV09PXRydWUpICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlcl93aWRnZXRfYWN0aW9uID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbj8ucGFnZV9zdGF0ZV9pZCsnLScrYWN0aW9uLndpZGdldFJlZixkZXBlbmRlbnRfZmllbGQxLGFjdGlvbi53aWRnZXRBY3Rpb25OYW1lLHByb2Nlc3NfYWZ0ZXJfd2lkZ2V0X2FjdGlvbilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24/LnBhZ2Vfc3RhdGVfaWQrJy0nK2FjdGlvbi53aWRnZXRSZWYsYWN0aW9uLndpZGdldEFjdGlvbk5hbWUseydhY3Rpb25faW5kZXgnOmFjdGlvbl9pZHh9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAkc2NvcGUuZmQubG9jYWxWYXJzLmV4ZWN1dGlvblF1ZXVlLnB1c2goe2J1dHRvbjpidXR0b24sYWN0aW9uOmFjdGlvbixldmVudDpldmVudCxwcmV2aW91c1Rhc2s6cHJldmlvdXNUYXNrLGluZGV4OmluZGV4LGFjdGlvbl9pZHg6YWN0aW9uX2lkeCxkZXBlbmRzX2lkeDphY3Rpb24uZGVwZW5kc09uLTEsb2xkX2NsaWNrZWRfYnRuOm9sZF9jbGlja2VkX2J0bn0pIC8vcHV0IGluIGV4ZWN1dGlvbiBxdWV1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9ic2VydmVyX3dpZGdldF9hY3Rpb24gPSAkc2NvcGUua3NtLnN1YnNjcmliZSgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uPy5wYWdlX3N0YXRlX2lkKyctJythY3Rpb24ud2lkZ2V0UmVmLGRlcGVuZGVudF9maWVsZDEsYWN0aW9uLndpZGdldEFjdGlvbk5hbWUscHJvY2Vzc19hZnRlcl93aWRnZXRfYWN0aW9uKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24/LnBhZ2Vfc3RhdGVfaWQrJy0nK2FjdGlvbi53aWRnZXRSZWYsYWN0aW9uLndpZGdldEFjdGlvbk5hbWUseydhY3Rpb25faW5kZXgnOmFjdGlvbl9pZHh9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uYWN0aW9uLnZhbHVlPT0nY2xlYXJmb3JtJylcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB3aWRnZXRTdGF0ZU5hbWUgPSBcInRhc2tXaWRnZXRcIithY3Rpb24ud2lkZ2V0SWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbih3aWRnZXRTdGF0ZU5hbWUsYWN0aW9uLmFjdGlvbi52YWx1ZSk7XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmFjdGlvbi52YWx1ZT09J29wZW5wYWdlJylcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBhZ2VfdmVyc2lvbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGlvbi5TZWxlY3RWZXJzaW9uRGlyZWN0KSBwYWdlX3ZlcnNpb24gPSBhY3Rpb24uc2VsZWN0ZWRQdWJsaXNoZWRSZXNvdXJjZT8uVmVyc2lvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBwYWdlX3ZlcnNpb249MFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0ZS5nbyhhY3Rpb24ucGFnZV9kZWYuUmVzb3VyY2VFeHRlbmRlZC5UYXJnZXQse3BhZ2VpZDogYWN0aW9uLnBhZ2UuaWQscmluc3RhbmNlOjAsdmVyc2lvbjpwYWdlX3ZlcnNpb24scGFyYW1ldGVyczp7cHJldl9wYWdlX3N0YXRlX2lkOiRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZV9zdGF0ZV9pZCxwcmV2X3Rhc2s6JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbix1c2Vfc3RhdGU6YWN0aW9uLnVzZV9zdGF0ZX19KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uYWN0aW9uLnZhbHVlPT0nYmFja2J1dHRvbicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aW5kb3cuaGlzdG9yeS5iYWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5wcm9jZXNzRXhlY3V0aW9uUXVldWU9ZnVuY3Rpb24oYWN0aW9uX2lkeClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbD0wO2w8JHNjb3BlLmZkLmxvY2FsVmFycy5leGVjdXRpb25RdWV1ZS5sZW5ndGg7bCsrKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5leGVjdXRpb25RdWV1ZVtsXS5kZXBlbmRzX2lkeD09YWN0aW9uX2lkeCAmJiAhJHNjb3BlLmZkLmxvY2FsVmFycy5leGVjdXRpb25RdWV1ZVtsXS5wcm9jZXNzZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5Qcm9jZXNzU2luZ2xlQWN0aW9uKCRzY29wZS5mZC5sb2NhbFZhcnMuZXhlY3V0aW9uUXVldWVbbF0uYnV0dG9uLCRzY29wZS5mZC5sb2NhbFZhcnMuZXhlY3V0aW9uUXVldWVbbF0uYWN0aW9uLCRzY29wZS5mZC5sb2NhbFZhcnMuZXhlY3V0aW9uUXVldWVbbF0uZXZlbnQsJHNjb3BlLmZkLmxvY2FsVmFycy5leGVjdXRpb25RdWV1ZVtsXS5wcmV2aW91c1Rhc2ssJHNjb3BlLmZkLmxvY2FsVmFycy5leGVjdXRpb25RdWV1ZVtsXS5pbmRleCwkc2NvcGUuZmQubG9jYWxWYXJzLmV4ZWN1dGlvblF1ZXVlW2xdLmFjdGlvbl9pZHgsJHNjb3BlLmZkLmxvY2FsVmFycy5leGVjdXRpb25RdWV1ZVtsXS5vbGRfY2xpY2tlZF9idG4pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5leGVjdXRpb25RdWV1ZVtsXS5wcm9jZXNzZWQgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRQdWJsaXNoZWRSZXNvdXJjZXM9ZnVuY3Rpb24ocGFnZUlkLGlzQ2hlY2tlZClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoaXNDaGVja2VkKXtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3Q9PXVuZGVmaW5lZCkgICRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0PXt9XHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5HZXRQdWJsaXNoZWRSZXNvdXJjZXNCeVR5cGVJZChwYWdlSWQsJ2Zvcm0nKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChkYXRhKSB7ICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnB1Ymxpc2hlZFJlc291cmNlTGlzdFtwYWdlSWRdID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9ICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuUHJvY2Vzc0J1dHRvbkFjdGlvbj1mdW5jdGlvbihidXR0b24sZXZlbnQscHJldmlvdXNUYXNrLGluZGV4KVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBvbGRfY2xpY2tlZF9idG4gPSAkc2NvcGUuZmQubG9jYWxWYXJzLmNsaWNrZWRCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmNsaWNrZWRCdXR0b24gPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZXhlY3V0aW9uUXVldWU9W11cclxuICAgICAgICAgICAgICAgICAgICBpZiAoYnV0dG9uLmFjdGlvbnM9PXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5hY3Rpb25zPVtdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhY3Rpb24gPSBhbmd1bGFyLmNvcHkoYnV0dG9uKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24uYWN0aW9uPWJ1dHRvbi5hY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1dHRvbi5hY3Rpb24hPXVuZGVmaW5lZCkgYnV0dG9uLmFjdGlvbnMucHVzaChhY3Rpb24pXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5zdG9wRXhlY3V0aW5nQWN0aW9ucyA9IGZhbHNlXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGk9MDtpPGJ1dHRvbi5hY3Rpb25zPy5sZW5ndGg7aSsrKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuUHJvY2Vzc1NpbmdsZUFjdGlvbihidXR0b24sYnV0dG9uLmFjdGlvbnNbaV0sZXZlbnQscHJldmlvdXNUYXNrLGluZGV4LGksb2xkX2NsaWNrZWRfYnRuKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvL2lmIChidXR0b24ucHJvY2Vzc0J1dHRvblZpc2liaWxpdHkpIHByb2Nlc3NfZXZlbnRfdGFza19hY3Rpb24oKVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLm9uU2VsZWN0V2lkZ2V0Q2FsbGJhY2sgPSBmdW5jdGlvbihpdGVtLG1vZGVsLGFjdGlvbilcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgIGFjdGlvbi53aWRnZXRSZWZPYmoubG9hZGVkID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24ud2lkZ2V0UmVmID0gaXRlbT8uaWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbi53aWRnZXRSZWZPYmoubG9hZGVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLm9uU2VsZWN0QWN0aW9uQ2FsbGJhY2sgPSBmdW5jdGlvbihpdGVtLG1vZGVsLGFjdGlvbilcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBhY3Rpb24ud2lkZ2V0QWN0aW9uTmFtZSA9IGl0ZW0/Lm5hbWVcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLm9uU2VsZWN0UGFnZUNhbGxiYWNrPWZ1bmN0aW9uKGl0ZW0sbW9kZWwsaWR4KVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtPy5pZCE9dW5kZWZpbmVkICYmICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRCdXR0b24hPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmQWxsKGl0ZW0uaWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZEJ1dHRvbi5hY3Rpb25zW2lkeF0ucGFnZV9kZWYgPSBkYXRhLmRhdGE7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXROZXdBY3Rpb25CdXR0b24gPSBmdW5jdGlvbigpXHJcbiAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXdCdXR0b24gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qYWN0aW9uOiAkc2NvcGUuZmQubG9jYWxWYXJzLmFjdGlvblR5cGVzWzBdLCovXHJcblx0XHRcdFx0XHRcdGFjdGlvbnM6IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBidG5MYWJlbDogXCJOZXcgYnV0dG9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ0bkNsYXNzOiBcImJ0bi1vdXRsaW5lLXByaW1hcnlcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTpcIk5vcm1hbFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246XCJsZWZ0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVJbmRleDoyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QWZ0ZXJBY3Rpb246JHNjb3BlLmZkLmxvY2FsVmFycy5wb3B1bGF0ZUJ1dHRvbnMoKSxcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld0J1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucG9wdWxhdGVCdXR0b25zID0gZnVuY3Rpb24oKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYnRucyA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGk9MDtpPCRzY29wZS5mZC5Gb3JtRGVmLmxlbmd0aDtpKyspXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ0bnMucHVzaCh7J2luZGV4JzppLCd2aXNpYmxlJzp0cnVlfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnRuc1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuYWRkU2hvd0hpZGVWYXJzID0gZnVuY3Rpb24oaW5kZXgpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGk9MDtpPCRzY29wZS5mZC5Gb3JtRGVmLmxlbmd0aDtpKyspXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLkZvcm1EZWZbaV0udmlzaWJpbGl0eUFmdGVyQWN0aW9uLnB1c2goeydpbmRleCc6aW5kZXgsJ3Zpc2libGUnOnRydWV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy50YXNrU2VsZWN0ZWQgPSBmdW5jdGlvbihpdGVtLG1vZGVsKVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy50YXNrTGlzdFBhcmFtZXRlcnMuc2VsZWN0ZWRJdGVtID0gaXRlbTtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkVGFzaz17fTtcclxuICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnRhc2tJc09wZW4gPSBmdW5jdGlvbih0YXNrSWQpXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgaXNPcGVuUG9zID0gJHNjb3BlLmZkLmxvY2FsVmFycy5sb2FkZWRUYXNrcy5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS50YXNrSWQ7IH0pLmluZGV4T2YodGFza0lkKTtcclxuICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzT3BlblBvcz49MCkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93QnV0dG9uRGVmaW5pdGlvbiA9IGZ1bmN0aW9uIChpbmRleCxub1Nob3cpe1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyICAvL3Nob3dCdXR0b25EZWZpbml0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMubG9hZGluZ0FjdGlvbnM9dHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uPXVuZGVmaW5lZFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZEJ1dHRvbkluZGV4PWluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZEJ1dHRvbiA9ICRzY29wZS5mZC5Gb3JtRGVmW2luZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uPy5hY3Rpb24gJiYgISRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRCdXR0b24/LmFjdGlvbnMpXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN1YmFjdGlvbiA9ICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRCdXR0b24uYWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJhY3Rpb25bJ3BhZ2UnXSA9ICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRCdXR0b24ucGFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViYWN0aW9uWydTZWxlY3RWZXJzaW9uRGlyZWN0J10gPSAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uLlNlbGVjdFZlcnNpb25EaXJlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmFjdGlvblsnc2VsZWN0ZWRQdWJsaXNoZWRSZXNvdXJjZSddID0gJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZEJ1dHRvbi5zZWxlY3RlZFB1Ymxpc2hlZFJlc291cmNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhY3Rpb24gPSB7aWQ6MSx3aWRnZXRSZWY6Jycsd2lkZ2V0QWN0aW9uTmFtZTokc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uLmFjdGlvbi5uYW1lLGFjdGlvbjpzdWJhY3Rpb259XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25bJ3BhZ2UnXSA9ICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRCdXR0b24ucGFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uWydTZWxlY3RWZXJzaW9uRGlyZWN0J10gPSAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uLlNlbGVjdFZlcnNpb25EaXJlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblsnc2VsZWN0ZWRQdWJsaXNoZWRSZXNvdXJjZSddID0gJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZEJ1dHRvbi5zZWxlY3RlZFB1Ymxpc2hlZFJlc291cmNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRCdXR0b24uYWN0aW9ucz1bYWN0aW9uXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0wO2k8JHNjb3BlLmZkLmxvY2FsVmFycy5hY3Rpb25CdXR0b25DbGFzcy5sZW5ndGg7aSsrKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkc2NvcGUuZmQubG9jYWxWYXJzLmFjdGlvbkJ1dHRvbkNsYXNzW2ldPT09JHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZEJ1dHRvbj8uc2l6ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZEJ1dHRvblNpemVJbmRleCA9IGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZEJ1dHRvbiE9dW5kZWZpbmVkKSAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uLnNpemVJbmRleD0gaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uU2l6ZUluZGV4PT11bmRlZmluZWQgJiYgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZEJ1dHRvbiE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRCdXR0b25TaXplSW5kZXg9MlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uLnNpemVJbmRleCA9IDJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZEJ1dHRvbi5zaXplPSAkc2NvcGUuZmQubG9jYWxWYXJzLmFjdGlvbkJ1dHRvbkNsYXNzWyRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRCdXR0b25TaXplSW5kZXhdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbm9TaG93KSAkc2NvcGUuZmQubG9jYWxWYXJzLmFjdGlvbkJ1dHRvblByb3BzWyRzY29wZS5mZC5VdWlkUmVmXSA9IDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2V0dXBEcmFndWxhKCRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRCdXR0b25JbmRleClcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmxvYWRpbmdBY3Rpb25zPWZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnRvZ2dsZUJ1dHRvbkRlZmluaXRpb24gPSBmdW5jdGlvbiAoaW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2hvd0J1dHRvbkRlZmluaXRpb24oaW5kZXgsdHJ1ZSlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5hY3Rpb25CdXR0b25Qcm9wc1skc2NvcGUuZmQuVXVpZFJlZl0gIT0xKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuYWN0aW9uQnV0dG9uUHJvcHNbJHNjb3BlLmZkLlV1aWRSZWZdID0gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmFjdGlvbkJ1dHRvblByb3BzWyRzY29wZS5mZC5VdWlkUmVmXSA9IDAgLy90b2dnbGVcclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuYWRkQnV0dG9uVG9MaXN0ID0gZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLkZvcm1EZWYucHVzaCggJHNjb3BlLmZkLmxvY2FsVmFycy5nZXROZXdBY3Rpb25CdXR0b24oKSkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmFkZFNob3dIaWRlVmFycygkc2NvcGUuZmQuRm9ybURlZi5sZW5ndGgtMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2hvd0J1dHRvbkRlZmluaXRpb24oJHNjb3BlLmZkLkZvcm1EZWYubGVuZ3RoLTEpO1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuY2xlYXJWaXNpYmlsaXR5UGFyYW1zPWZ1bmN0aW9uKGluZGV4KVxyXG5cclxuICAgICAgICAgICAgICAgICAge1xyXG5cdFx0XHRcdFx0Ly9yZW1vdmUgaXRlbXMgd2l0aCBzcGVjaWZpYyBpbmRleCBcclxuXHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgJHNjb3BlLmZkLkZvcm1EZWYubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdFx0JHNjb3BlLmZkLkZvcm1EZWZbaV0udmlzaWJpbGl0eUFmdGVyQWN0aW9uID0gJHNjb3BlLmZkLkZvcm1EZWZbaV0udmlzaWJpbGl0eUFmdGVyQWN0aW9uLmZpbHRlcihhY3Rpb24gPT4gYWN0aW9uLmluZGV4ICE9PSBpbmRleCk7XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuUmVtb3ZlQnV0dG9uRnJvbUxpc3QgPSBmdW5jdGlvbiAoaW5kZXgpXHJcbiAgICAgICAgICAgICAgICAgICB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmNsZWFyVmlzaWJpbGl0eVBhcmFtcyhpbmRleClcclxuXHRcdFx0XHRcdCAgXHJcblx0XHRcdFx0XHQgIGlmIChpbmRleD49MCkgICAgICAgXHJcblx0XHRcdFx0XHRcdCAgJHNjb3BlLmZkLkZvcm1EZWYuc3BsaWNlKGluZGV4LDEpO1xyXG5cdFx0XHRcdFx0ICBcclxuICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuRm9ybURlZi5sZW5ndGggPiAwKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2hvd0J1dHRvbkRlZmluaXRpb24oJHNjb3BlLmZkLkZvcm1EZWYubGVuZ3RoIC0gMSlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2F2ZVRhc2tUb1Jlc291cmNlID0gZnVuY3Rpb24odGRpZCx0ZWksZGF0YXNldERlZklkLGRhdGFzZXRSZWNvcmRJZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVGFza0RhdGFTZXJ2aWNlLnNhdmVUYXNrVG9SZXNvdXJjZSh0ZWksZGF0YXNldERlZklkLGRhdGFzZXRSZWNvcmRJZCwkc2NvcGUuZmQucHJlc2VudGF0aW9uSWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0ZS5nbygnYXBwLm5hdmJhci50YXNrcy5pbml0aWF0ZScse2lkOiB0ZGlkLGZyb21TdGF0ZU5hbWU6JHN0YXRlLmN1cnJlbnQubmFtZSxmcm9tU3RhdGVQYXJhbXM6JHN0YXRlLnBhcmFtcyxvdXRjb21lX2lkOjAscHJldl90YXNrX2V4ZWN1dGVfaWQ6dGVpfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgaWYgICAoJHNjb3BlLmdzcnZjLmdldEZvcm1WaWV3VHlwZSgpPT0xIHx8ICRzY29wZS5mZC5FbGVtZW50VHlwZT09J2l0YXNrJylcclxuICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUobGFuZywndGFzaycpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy50YXNrTGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnRhc2tzTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uPy5mb3JtX2RlZmluaXRpb24pIFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUobGFuZywncGFnZScpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnBhZ2VMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnBhZ2VzTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBsZXQgdGVtcGxhdGU7XHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uPy5mb3JtX2RlZmluaXRpb24pIHRlbXBsYXRlID0gJHRlbXBsYXRlQ2FjaGUuZ2V0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEFjdGlvbkJ1dHRvbnMuaHRtbCcpO1xyXG4gICAgICAgICAgICBlbHNlIHRlbXBsYXRlID0gJHRlbXBsYXRlQ2FjaGUuZ2V0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEFjdGlvbkJ1dHRvbnNFeGUuaHRtbCcpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICRlbGVtZW50LmFwcGVuZCgkY29tcGlsZSh0ZW1wbGF0ZSkoJHNjb3BlKSk7ICBcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuc2V0dXBEcmFndWxhPWZ1bmN0aW9uIChpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghaW5kZXgpIGluZGV4ID0gMFxyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFjdGlvbkhhbmRsZSA9ICdhY3Rpb24tZHJhZy1oYW5kbGUnXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGJhZyA9IGRyYWd1bGFTZXJ2aWNlLmZpbmQoJHJvb3RTY29wZSwgJ2JhZy1hY3Rpb24tJytzY29wZS5mZC5VdWlkUmVmKyctJytpbmRleCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLyogXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJhZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkcmFndWxhU2VydmljZS5kZXN0cm95KCRyb290U2NvcGUsICdiYWctYWN0aW9uLScrc2NvcGUuZmQuVXVpZFJlZisnLScraW5kZXgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghYmFnKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBkcmFndWxhU2VydmljZS5vcHRpb25zKCRyb290U2NvcGUsICdiYWctYWN0aW9uLScrc2NvcGUuZmQuVXVpZFJlZisnLScraW5kZXgsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmVydE9uU3BpbGw6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVPblNwaWxsOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjondmVydGljYWwnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vICBjb3B5OmZ1bmN0aW9uKGVsLHRhcmdldCwgc291cmNlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0OmZ1bmN0aW9uIChlbCx0YXJnZXQsIHNvdXJjZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlczogZnVuY3Rpb24gKGVsLCBjb250YWluZXIsIGhhbmRsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGUuY2xhc3NMaXN0LmNvbnRhaW5zKGFjdGlvbkhhbmRsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5hY3Rpb25zRmluaXNoZWQ9IGZ1bmN0aW9uKGFjdGlvbnMpe1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGk9MDtpPGFjdGlvbnMubGVuZ3RoO2krKylcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3Rpb25zW2ldLmlkPT11bmRlZmluZWQpIGFjdGlvbnNbaV0uaWQgPSBpKzFcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy9zY29wZS5mZC5sb2NhbFZhcnMuc2hvd0J1dHRvbkRlZmluaXRpb24oMClcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uIT11bmRlZmluZWQpIHNjb3BlLmZkLmxvY2FsVmFycy5zZXR1cERyYWd1bGEoc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uSW5kZXgpXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAgICBpZiAoYmFnKSBiYWcuZHJha2Uub24oJ2Ryb3AtbW9kZWwnLGZ1bmN0aW9uKGVsLHRhcmdldCxzb3VyY2Upe1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuaWQ9c2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uLmFjdGlvbnMubGVuZ3RoKzFcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgKi9cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAgICAgICAgICAgXHJcbn07XG4ndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBrdEFjdGlvbkluaXRpYXRlVGFzayAoKSB7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXG4gICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEFjdGlvbkluaXRpYXRlVGFzay5odG1sJyxcbiAgICAgICAgICAgICBcbiAgICAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbigkc2NvcGUsJHJvb3RTY29wZSxSZXNvdXJjZXNEYXRhU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlKXtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICRzY29wZS50YXNrTGlzdFBhcmFtZXRlcnMgPSB7cGxhY2Vob2xkZXI6J1NlbGVjdCBvciBzZWFyY2ggdGFzay4uLicsbGFiZWw6J0luaXRpYXRlIHRhc2snLG5hbWU6J3Rhc2snLFxuICAgICAgICAgICAgICBwYWRkaW5nTGVmdDpmYWxzZSxzZWxlY3RlZEl0ZW06bnVsbCxoaWRlTGFiZWw6ZmFsc2UsY29sdW1uU2l6ZUxhYmVsOidjb2wtYXV0bycsZHJvcGRvd25TaXplOidjb2wnLHNlbGVjdGVkSXRlbTpudWxsfTtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICRzY29wZS50YXNrTGlzdFBhcmFtZXRlcnMubGFiZWwgPSAkc2NvcGUuYWN0Lm5hbWUxO1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgJHNjb3BlLnNldEluaXRpYXRlVGFza0FjdGlvbiA9IGZ1bmN0aW9uKGl0ZW0sbW9kZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgLy8gICRzY29wZS50YXNrTGlzdFBhcmFtZXRlcnMubGFiZWwgPSAkc2NvcGUuJHBhcmVudC5hY3QubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLiRwYXJlbnQuYWN0LnRhc2tJZCA9IGl0ZW0uaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5hY3QudGFza0lkID0gaXRlbS5pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50YXNrTGlzdFBhcmFtZXRlcnMuc2VsZWN0ZWRJdGVtID0gaXRlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuIFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xuICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAkc2NvcGUuc2V0VGFzayA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5hY3QhPW51bGwgJiYgJHNjb3BlLmFjdCE9dW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmFjdC50YXNrSWQhPW51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcG9zID0gJHNjb3BlLnRhc2tMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKCRzY29wZS4kcGFyZW50LmFjdC50YXNrSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3M+LTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza0xpc3RQYXJhbWV0ZXJzLnNlbGVjdGVkSXRlbSA9ICRzY29wZS50YXNrTGlzdFtwb3NdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgIFxuICAgICAgICAgICAgICRzY29wZS5nZXRUYXNrTGlzdCA9IGZ1bmN0aW9uKClcbiAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS50YXNrTGlzdD09dW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUobGFuZywndGFzaycpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza0xpc3QgPSBkYXRhLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNldFRhc2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1lbHNlICAkc2NvcGUuc2V0VGFzaygpO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICB9OyBcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgJHNjb3BlLiR3YXRjaCgnYWN0LnRhc2tJZCcsIGZ1bmN0aW9uKG9sZFZhbHVlLG5ld1ZhbHVlKXtcbiAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdldFRhc2tMaXN0KCk7XG4gICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICBcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgIFxuICAgICAgICAgICAgICRzY29wZS5nZXRUYXNrTGlzdCgpOyBcbiAgICAgICAgICAgICBcbiAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcbiAgICAgICAgICAgIFxuICAgICBcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbi8vZXhwb3J0IHtrdEFjdGlvbkluaXRpYXRlVGFza307XG4ndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBrdEFjdGlvblNlbmROb3RpZmljYXRpb24gKCkge1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxuICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RBY3Rpb25TZW5kTm90aWZpY2F0aW9uLmh0bWwnLFxuICAgICAgICAgICAgIFxuICAgICAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uKCRzY29wZSwkcm9vdFNjb3BlLFJlc291cmNlc0RhdGFTZXJ2aWNlLEthdGFseW9TdGF0ZU1hbmFnZXIsTWVzc2FnaW5nU2VydmljZSl7XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAkc2NvcGUubm90aWZpY2F0aW9uU2VsZWN0ZWQgPSBmdW5jdGlvbihpdGVtLG1vZGVsKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5hY3QuYWN0aW9uUGFyYW1zLm5vdGlmaWNhdGlvbklkID0gaXRlbS5pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgJHNjb3BlLmtzbSA9IEthdGFseW9TdGF0ZU1hbmFnZXJcbiAgICAgICAgICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xuICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgbGV0IGRlcGVuZGVudF9maWVsZF9waWQgPSAkc2NvcGUuZmQuTG9jYWxJZDtcbiAgICAgICAgICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3RQaWQgPSBcImZvcm1EZWZpbml0aW9uU3RhdGVcIiskc2NvcGUudGFza0lkKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV90eXBlO1xuICAgICAgICAgICAgICAgIGxldCBkZXBlbmRlbnRfZmllbGRfcGlkMlxuICAgICAgICAgICAgICAgIGxldCB1cGRhdGVfcHJlc2VudGF0aW9uX2lkMiA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByZXNlbnRhdGlvbl9pZCA9IGFuZ3VsYXIuY29weSgkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQpXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhW3ByZXNlbnRhdGlvbl9pZF0hPT11bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCA9IGRhdGFbcHJlc2VudGF0aW9uX2lkXTtcbiAgICAgICAgICAgICAgICAgICAgLy91bnN1YnNjcmliZSBoZXJlIGxhdGVyIGFmdGVyIGltcGxlbWVudGluZyB1bnN1YnNjcmliZSAtIFRvRG9cbiAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW50X2ZpZWxkX3BpZDIgPSAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWRcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9ic2VydmVyUGlkMiA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0UGlkLGRlcGVuZGVudF9maWVsZF9waWQyLFwiZm9ybVNhdmVkXCIsdXBkYXRlX3ByZXNlbnRhdGlvbl9pZDIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCB1cGRhdGVfcHJlc2VudGF0aW9uX2lkID0gZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YVskc2NvcGUuZmQuTG9jYWxJZF0+MCAmJiAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PTAgJiYgZGF0YVskc2NvcGUuZmQuTG9jYWxJZF0hPT11bmRlZmluZWQpICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCA9IGRhdGFbJHNjb3BlLmZkLkxvY2FsSWRdO1xuICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlclBpZDIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdFBpZCxkZXBlbmRlbnRfZmllbGRfcGlkMixcImZvcm1TYXZlZFwiLHVwZGF0ZV9wcmVzZW50YXRpb25faWQyKTtcbiAgICAgICAgICAgICAgICAgICAgLy91bnN1YnNjcmliZSBoZXJlIGxhdGVyIGFmdGVyIGltcGxlbWVudGluZyB1bnN1YnNjcmliZSAtIFRvRG9cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QcmVzZW50YXRpb25JZD09PW51bGwgfHwgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT09MClcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlclBpZCA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0UGlkLGRlcGVuZGVudF9maWVsZF9waWQsXCJmb3JtU2F2ZWRcIix1cGRhdGVfcHJlc2VudGF0aW9uX2lkKTtcbiAgICAgICAgICAgICAgICB9IGVsc2V7XG4gICAgICAgICAgICAgICAgICAgIGRlcGVuZGVudF9maWVsZF9waWQyID0gJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXG4gICAgICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlclBpZDIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdFBpZCxkZXBlbmRlbnRfZmllbGRfcGlkMixcImZvcm1TYXZlZFwiLHVwZGF0ZV9wcmVzZW50YXRpb25faWQyKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICRzY29wZS5zZXROb3RpZmljYXRpb24gPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuYWN0IT1udWxsICYmICRzY29wZS5hY3QhPXVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5hY3QuYWN0aW9uUGFyYW1zLm5vdGlmaWNhdGlvbklkIT1udWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9ICRzY29wZS5ub3RpZmljYXRpb25MaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKCRzY29wZS5hY3QuYWN0aW9uUGFyYW1zLm5vdGlmaWNhdGlvbklkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zPi0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmFjdC5hY3Rpb25QYXJhbXMubm90aWZpY2F0aW9uID0gJHNjb3BlLm5vdGlmaWNhdGlvbkxpc3RbcG9zXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgfTsgXG4gICAgICAgICAgICAgJHNjb3BlLmdldE5vdGlmaWNhdGlvbkxpc3QgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubm90aWZpY2F0aW9uTGlzdD09dW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUobGFuZywnbm90aWZpY2F0aW9uJykudGhlbihmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5ub3RpZmljYXRpb25MaXN0ID0gZGF0YS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5hY3Qubm90aWZpY2F0aW9uc0xvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNldE5vdGlmaWNhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfWVsc2UgJHNjb3BlLnNldE5vdGlmaWNhdGlvbigpO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICB9OyBcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICAkc2NvcGUuJHdhdGNoKCdhY3Qubm90aWZpY2F0aW9uSWQnLCBmdW5jdGlvbihvbGRWYWx1ZSxuZXdWYWx1ZSl7XG4gICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nZXROb3RpZmljYXRpb25MaXN0KCk7XG4gICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAgXG4gICAgICAgICAgICAgJHNjb3BlLmdldE5vdGlmaWNhdGlvbkxpc3QoKTsgXG4gICAgICAgICAgICAgXG4gICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XG4gICAgICAgICAgICBcbiAgICAgXG4gICAgICAgIH1cbiAgICB9XG59O1xuXG4vL2V4cG9ydCB7a3RBY3Rpb25Jbml0aWF0ZVRhc2t9O1xuXHJcbid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdEFjdGl2aXR5KCkge1xyXG4gICAgICAgXHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0OiAnRUEnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uKCl7fSxcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL3Byb2Nlc3NpbmcuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgc2NvcGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJz0nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3Nob3dNc2c6ICc9JyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbigkc2NvcGUsUFJPQ0VTU0lOR19DT05TVCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNob3dNc2c9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNob3dNc2dPYmo9e307ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJG9uKFBST0NFU1NJTkdfQ09OU1QuX1NUQVJUX1JFUVVFU1RfLCBmdW5jdGlvbiAoZXZlbnQsZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvdCB0aGUgcmVxdWVzdCBzdGFydCBub3RpZmljYXRpb24sIHNob3cgdGhlIGVsZW1lbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2hvd01zZ09ialtkYXRhXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNob3dNc2c9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRvbihQUk9DRVNTSU5HX0NPTlNULl9FTkRfUkVRVUVTVF8sIGZ1bmN0aW9uIChldmVudCxkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ290IHRoZSByZXF1ZXN0IGVuZCBub3RpZmljYXRpb24sIGhpZGUgdGhlIGVsZW1lbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgJHNjb3BlLnNob3dNc2dPYmpbZGF0YV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9sID0gT2JqZWN0LmtleXMoJHNjb3BlLnNob3dNc2dPYmopO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvbC5sZW5ndGg9PTApICRzY29wZS5zaG93TXNnPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW1lbnQsIGF0dHJzKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICBcclxufTtcbid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdEFkanVzdENvbnRlbnRUb05hdmJhcigpe1xyXG4gICBcclxuICAgdmFyIGRpcmVjdGl2ZSA9IHtcclxuXHRcdHJlc3RyaWN0IFx0OiAnRUEnLFxyXG4gICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbWVudCwgYXR0cnMpIHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uICgkc2NvcGUsJGVsZW1lbnQsR3JpZHN0ZXJTZXJ2aWNlKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlO1xyXG4gICAgICAgICAgICAkc2NvcGUuJHdhdGNoKGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgIGlmICgkZWxlbWVudFswXS5vZmZzZXRIZWlnaHQ+MCAmJiAkc2NvcGUuZ3NydmMubmF2YmFySGVpZ2h0IT0kZWxlbWVudFswXS5vZmZzZXRIZWlnaHQpXHJcbiAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5zZXROYXZiYXJIZWlnaHQoJGVsZW1lbnRbMF0ub2Zmc2V0SGVpZ2h0KTtcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTsgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuXHR9O1xyXG5cdHJldHVybiBkaXJlY3RpdmU7XHJcblxyXG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0QXBwTmF2YmFyICgkcm9vdFNjb3BlLCBkcmFndWxhU2VydmljZSkge1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxyXG4gICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0QXBwTmF2YmFyLmh0bWwnLFxyXG4gICAgICAgICAgICBzY29wZTp7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFZhcnM6Jz0nLFxyXG4gICAgICAgICAgICAgICAgbmF2YmFySXRlbXNMZWZ0Oic9JyxcclxuICAgICAgICAgICAgICAgIG5hdmJhckl0ZW1zUmlnaHQ6Jz0nLFxyXG4gICAgICAgICAgICAgICAgcmVzb3VyY2U6Jz0nLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjb250cm9sbGVyOiBbJyRzY29wZScsJyR0aW1lb3V0JywnZHJhZ3VsYVNlcnZpY2UnLCckcm9vdFNjb3BlJywnTWVudVNlcnZpY2UnLCdSZXNvdXJjZXNEYXRhU2VydmljZScsJ01lc3NhZ2luZ1NlcnZpY2UnLCdHcmlkc3RlclNlcnZpY2UnLCckc3RhdGUnLFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uKCRzY29wZSwkdGltZW91dCxkcmFndWxhU2VydmljZSwkcm9vdFNjb3BlLE1lbnVTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlLCRzdGF0ZSl7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2U7ICAgXHJcbiAgICAgICAgICAgICAgICRzY29wZS5DVFJMPSdrdEFwcE5hdmJhcidcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAkc2NvcGUuJG9uKFwiJGRlc3Ryb3lcIiwgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZHJhZ3VsYVNlcnZpY2UuZGVzdHJveSgkcm9vdFNjb3BlLCBkcmFndWxhX2JhZylcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIGxldCBjdXJyZW50VXNlcj0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXI7XHJcbiBcclxuICAgICAgICAgICAgICAgaWYgKCRyb290U2NvcGUuZ2xvYmFscy5uYXZiYXJzPT11bmRlZmluZWQpICAvL2ZvciBkZWJ1Z2dpbmcgcHVycG9zZXMgKGlmIG11bHRpcGxlIG5hdmJhcnMgYXJlIHRoZXJlIC0gbm90IGdvb2QpXHJcbiAgICAgICAgICAgICAgICAgICAgJHJvb3RTY29wZS5nbG9iYWxzLm5hdmJhcnM9WyRzY29wZV1cclxuICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRyb290U2NvcGUuZ2xvYmFscy5uYXZiYXJzLnB1c2goJHNjb3BlKVxyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzID09IHVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycz17fTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucGFnZXNMb2FkZWQ9ZmFsc2U7ICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5uYXZiYXJJdGVtc0xlZnQ9PXVuZGVmaW5lZCkgJHNjb3BlLm5hdmJhckl0ZW1zTGVmdCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5uYXZiYXJJdGVtc1JpZ2h0PT11bmRlZmluZWQpICRzY29wZS5uYXZiYXJJdGVtc1JpZ2h0ID0gW107XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGxldCB3aWRnZXRIYW5kbGUgPSAnZWxlbWVudC1kcmFnLWhhbmRsZSc7XHJcbiAgICAgICAgICAgICAgICBsZXQgc2V0dXBEcmFndWxhID0gJHNjb3BlLmdzcnZjLnNldHVwRHJhZ3VsYSgnYXBwLW1lbnUtYmFnJywnYXBwLW1lbnUtdGFzay1saXN0Jyx3aWRnZXRIYW5kbGUpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGRyYWd1bGFfYmFnPVwiYXBwLW1lbnUtYmFnXCI7XHJcbiAgICAgICAgICAgICAgICBsZXQgc291cmNlX2NvbnRhaW5lcl9wYWdlID0gJ2FwcC1tZW51LXBhZ2UtbGlzdCc7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGxldCBiYWcgPSBkcmFndWxhU2VydmljZS5maW5kKCRyb290U2NvcGUsIGRyYWd1bGFfYmFnKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKCFiYWcpICBkcmFndWxhU2VydmljZS5vcHRpb25zKCRyb290U2NvcGUsIGRyYWd1bGFfYmFnLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2ZXJ0T25TcGlsbDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVPblNwaWxsOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246J2hvcml6b250YWwnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHk6ZnVuY3Rpb24gKGVsLHNvdXJjZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc291cmNlLmlkPT1zb3VyY2UuaWQ9PXNvdXJjZV9jb250YWluZXJfcGFnZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHQ6ZnVuY3Rpb24gKGVsLHRhcmdldCwgc291cmNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQuaWQhPSBzb3VyY2VfY29udGFpbmVyX3BhZ2U7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVzOiBmdW5jdGlvbiAoZWwsIGNvbnRhaW5lciwgaGFuZGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGUuY2xhc3NMaXN0LmNvbnRhaW5zKGRyYWdfaGFuZGxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9ICBcclxuICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmIChiYWcpICBiYWcuZHJha2Uub24oJ2Ryb3AnLFxyXG5cdFx0XHRcdFx0ZnVuY3Rpb24oZWwsdGFyZ2V0LHNvdXJjZSxzaWJsaW5nKXtcclxuXHRcdFx0XHRcdFx0bGV0IGluZGV4O1xyXG5cdFx0XHRcdFx0XHRpZiAodGFyZ2V0LmlkPT09XCJuYXZiYXJMZWZ0XCIgfHwgdGFyZ2V0LmlkPT09XCJuYXZiYXJSaWdodFwiKXtcclxuXHRcdFx0XHRcdFx0XHRpZiAoc2libGluZyE9PW51bGwpIGluZGV4ID0gcGFyc2VJbnQoc2libGluZy5pZCk7XHJcblx0XHRcdFx0XHRcdFx0ZWxzZXtcclxuXHRcdFx0XHRcdFx0XHRcdGlmICh0YXJnZXQuaWQ9PT1cIm5hdmJhckxlZnRcIikgaW5kZXggPSAkc2NvcGUubmF2YmFySXRlbXNMZWZ0Lmxlbmd0aDtcclxuXHRcdFx0XHRcdFx0XHRcdGVsc2UgaW5kZXggPSAkc2NvcGUubmF2YmFySXRlbXNSaWdodC5sZW5ndGg7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdE1lbnVTZXJ2aWNlLnNldEN1cnJlbnROYXZiYXJJZChpbmRleCk7XHJcblx0XHRcdFx0XHRcdFx0JHNjb3BlLmxhc3RJbmRleCA9IGluZGV4O1xyXG5cdFx0XHRcdFx0XHRcdGlmICgkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkTmF2YmFyIT09dW5kZWZpbmVkICYmICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWROYXZiYXIhPT1udWxsKXtcclxuXHRcdFx0XHRcdFx0XHRcdGlmICgkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkTmF2YmFyPy5pbmRleDxpbmRleCkgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZE5hdmJhci5pbmRleD1pbmRleC0xO1xyXG5cdFx0XHRcdFx0XHRcdFx0ZWxzZSAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkTmF2YmFyLmluZGV4PWluZGV4O1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKHNpYmxpbmchPT1udWxsKSBpbmRleCA9IHBhcnNlSW50KHNpYmxpbmcuaWQpO1xyXG5cdFx0XHRcdFx0XHRcdGVsc2UgaW5kZXggPSAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkTmF2YmFyLmxheW91dC5sZW5ndGg7XHJcblx0XHRcdFx0XHRcdFx0JHNjb3BlLmxhc3RJbmRleCA9IGluZGV4O1xyXG5cdFx0XHRcdFx0XHRcdGlmICgkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkTWVudSE9PXVuZGVmaW5lZCAmJiAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkTWVudSE9PW51bGwpXHJcblx0XHRcdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRNZW51Py5pbmRleDxpbmRleCkgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZE1lbnUuaW5kZXg9aW5kZXgtMTtcclxuXHRcdFx0XHRcdFx0XHRcdGVsc2UgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZE1lbnUuaW5kZXg9aW5kZXg7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKGJhZykgYmFnLmRyYWtlLm9uKCdkcm9wLW1vZGVsJyxmdW5jdGlvbihlbCx0YXJnZXQsc291cmNlKXtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0LmlkPT09XCJuYXZiYXJMZWZ0XCIpICRzY29wZS5sb2NhbFZhcnMuZ2V0TmF2YmFyRGV0YWlscygkc2NvcGUubmF2YmFySXRlbXNMZWZ0LCRzY29wZS5sYXN0SW5kZXgpOyBcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0LmlkPT09XCJuYXZiYXJSaWdodFwiKSAgJHNjb3BlLmxvY2FsVmFycy5nZXROYXZiYXJEZXRhaWxzKCRzY29wZS5uYXZiYXJJdGVtc1JpZ2h0LCRzY29wZS5sYXN0SW5kZXgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQuaWQ9PT1cInNpZGVNZW51XCIpICRzY29wZS5sb2NhbFZhcnMuZ2V0TWVudURldGFpbHMoJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZE5hdmJhci5sYXlvdXQsJHNjb3BlLmxhc3RJbmRleCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmIChiYWcpIGJhZy5kcmFrZS5vbignJGRlc3Ryb3knLCBmdW5jdGlvbigpIHtcclxuXHRcdFx0XHRcdCAvLyBkZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgICAgIGRyYWd1bGFTZXJ2aWNlLmRlc3Ryb3koJHJvb3RTY29wZSwgZHJhZ3VsYV9iYWcpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuc2hvd01vZGFsID0gZnVuY3Rpb24gKHBfdHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICQoJyNtZW51UHVibGlzaCcpLm1vZGFsKCdzaG93Jyk7IFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5tb2RhbEFjdGlvbj1wX3R5cGVcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubmV3UHVibGlzaFZlcnNpb24gPSAkc2NvcGUucmVzb3VyY2UuTmV3VmVyc2lvblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cdFx0XHRcdCRzY29wZS5nZXRfcHVibGlzaGVkX3Jlc291cmNlX2Zvcm1zPWZ1bmN0aW9uKCl7ICAgICAgICAgICAgICAgXHJcblx0XHRcdFx0XHRSZXNvdXJjZXNEYXRhU2VydmljZS5HZXRQdWJsaXNoZWRSZXNvdXJjZXMoJHNjb3BlLnJlc291cmNlLnVpZCkudGhlbihmdW5jdGlvbiAoZGF0YSkgeyAgICAgICBcclxuXHRcdFx0XHRcdCAgICRzY29wZS5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VzID0gZGF0YS5kYXRhO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcclxuICAgICAgICAgICAgJHNjb3BlLmdldF9wdWJsaXNoZWRfcmVzb3VyY2VfZm9ybXMoKTtcclxuXHJcblxyXG4gICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdldE5hdmJhckRldGFpbHMgPSBmdW5jdGlvbihuYXZiYXIsaW5kZXgpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKG5hdmJhci5sZW5ndGg9PT1pbmRleCAmJiBuYXZiYXIubGVuZ3RoPjApICAgaW5kZXgtLTtcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93TmF2YmFyRGV0YWlscyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dNZW51RGV0YWlscyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkTmF2YmFyICA9IG5hdmJhcltpbmRleF07XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZE5hdmJhciAhPSB1bmRlZmluZWQpICAgIHsgICBcclxuICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWROYXZiYXIuaW5kZXg9aW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkTWVudSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcblx0XHRcdFx0XHQvLyByZWJ1aWxkIFRhcmdldCBvYmplY3RcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZE5hdmJhci5UYXJnZXQ9PXVuZGVmaW5lZClcdCRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWROYXZiYXIuVGFyZ2V0ID0ge2lkOm5hdmJhcltpbmRleF0uaWQsbmFtZTpuYXZiYXJbaW5kZXhdLm5hbWV9XHJcbiAgICAgICAgICAgICAgICAgICAgLy9yZWJ1aWxkIHNfbWVudV9UYXJnZXRcclxuXHRcdFx0XHRcdGlmICgkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkTmF2YmFyLnNfbWVudXNfVGFyZ2V0ID09IHVuZGVmaW5lZCkgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZE5hdmJhci5zX21lbnVzX1RhcmdldCA9IG5hdmJhcltpbmRleF0uaWRcdCAgXHJcblx0XHRcdFx0XHRpZiAoJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZE5hdmJhci5zX21lbnVzX05hbWUgPT0gdW5kZWZpbmVkKSBcdCRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWROYXZiYXIuc19tZW51c19OYW1lID0gbmF2YmFyW2luZGV4XS5uYW1lICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZE5hdmJhci5sYXlvdXQ9PXVuZGVmaW5lZCkgXHQkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkTmF2YmFyLmxheW91dCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkTmF2YmFyLlVzZXJzR3JvdXBzRG93bmxvYWRlZCA9IHRydWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdCRzY29wZS5sb2NhbFZhcnMuc2hvd05hdmJhckRldGFpbHMgPSB0cnVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQkc2NvcGUubG9jYWxWYXJzLnNob3dOYXZiYXJEZXRhaWxzRmlyc3QgPSB0cnVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQkc2NvcGUuc2VsZWN0ZWRVc2VycyA9W11cclxuXHRcdFx0XHRcdFx0XHRcdFx0ICRzY29wZS5zZWxlY3RlZEdyb3VwcyA9W11cclxuICAgICAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5nZXRNZW51RGV0YWlscyA9IGZ1bmN0aW9uKG1lbnUsaW5kZXgpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2hvd01lbnVEZXRhaWxzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChtZW51Lmxlbmd0aD09PWluZGV4KSBpbmRleC0tO1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkTWVudSAgPSBtZW51W2luZGV4XTtcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZE1lbnUuaW5kZXg9aW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2hvd01lbnVEZXRhaWxzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2hvd05hdmJhckRldGFpbHMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRNZW51LlRhcmdldD09dW5kZWZpbmVkKSAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkTWVudS5UYXJnZXQgPSB7aWQ6bWVudVtpbmRleF0uaWQsbmFtZTptZW51W2luZGV4XS5uYW1lfTtcclxuICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRNZW51LnNfbWVudXNfTmFtZT09dW5kZWZpbmVkKSAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkTWVudS5zX21lbnVzX05hbWUgPSBtZW51W2luZGV4XS5uYW1lOyAgIFxyXG5cdFx0XHRcdFx0ICAgJHRpbWVvdXQoZnVuY3Rpb24oKXsgICAgXHJcblx0XHRcdFx0XHRcdFx0JHNjb3BlLmxvY2FsVmFycy5zaG93TWVudURldGFpbHMgPSB0cnVlO1xyXG5cdFx0XHRcdFx0XHR9KSAgIFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5kZWxldGVOYXZiYXIgPSBmdW5jdGlvbihuYXZiYXIsaW5kZXgsdHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICBpZiAodHlwZT09PVwibGVmdFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuYXZiYXIuc19tZW51c19pZCE9PW51bGwgJiYgbmF2YmFyLnNfbWVudXNfaWQhPT11bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuYXZiYXIuZGVsZXRlSXRlbSkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmJhci5kZWxldGVJdGVtID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIG5hdmJhci5kZWxldGVJdGVtID0gdHJ1ZTsgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5uYXZiYXJJdGVtc0xlZnQuc3BsaWNlKGluZGV4LDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZE5hdmJhciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICB9ICAgZWxzZSAvLyBub3QgbGVmdFxyXG4gICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChuYXZiYXIuc19tZW51c19pZCE9PW51bGwpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZiYXIuZGVsZXRlSXRlbSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubmF2YmFySXRlbXNSaWdodC5zcGxpY2UoaW5kZXgsMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWROYXZiYXIgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dOYXZiYXJEZXRhaWxzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5kZWxldGVNZW51ID0gZnVuY3Rpb24obWVudSxpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1lbnUuc19tZW51c19pZCE9PW51bGwgJiYgbWVudS5zX21lbnVzX2lkIT09dW5kZWZpbmVkKSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgIGlmIChtZW51LmRlbGV0ZUl0ZW0pIG1lbnUuZGVsZXRlSXRlbSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIGVsc2UgbWVudS5kZWxldGVJdGVtID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkTmF2YmFyLmxheW91dC5zcGxpY2UoaW5kZXgsMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRNZW51ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93TWVudURldGFpbHMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmFjdGl2ZUxpbmtFZGl0TmF2YmFyTGVmdCA9IGZ1bmN0aW9uKGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGk9MDtpPCRzY29wZS5uYXZiYXJJdGVtc0xlZnQubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGk9PWluZGV4KSAgICByZXR1cm4gXCJhY3RpdmVcIjtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICRzY29wZS5uZXdWZXJzaW9uID0gZnVuY3Rpb24oKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuY3JlYXRpbmdOZXdWZXJzaW9uPXRydWVcclxuXHJcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5TZXROZXdSZXNvdXJjZVZlcnNpb24oJHNjb3BlLnJlc291cmNlLnVpZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzPT0yMDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuTmV3VmVyc2lvbiA9IGRhdGEuZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlLlB1Ymxpc2hlZD1mYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy51cGRhdGVSZXNvdXJjZSgkc2NvcGUucmVzb3VyY2UpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5kYXRhLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmNyZWF0aW5nTmV3VmVyc2lvbj1mYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmhhc0NoYW5nZXM9ZmFsc2VcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jcmVhdGluZ05ld1ZlcnNpb249ZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICRzY29wZS5idWlsZERhdGFzZXQgPSBmdW5jdGlvbihlKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICRzdGF0ZS5nbyhcIidhcHAubmF2YmFyLnJlc291cmNlcy5uZXdcIix7J3Jlc291cmNlX3R5cGUnOidkYXRhc2V0J30pO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICRzY29wZS5idWlsZFBhZ2UgPSBmdW5jdGlvbihlKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICRzdGF0ZS5nbyhcIidhcHAubmF2YmFyLnJlc291cmNlcy5uZXdcIix7J3Jlc291cmNlX3R5cGUnOidwYWdlJ30pO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLiR3YXRjaCgnbmF2YmFySXRlbXNMZWZ0JyxmdW5jdGlvbihuZXdWYWx1ZSxvbGRWYWx1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICBsZXQgYT1uZXdWYWx1ZVxyXG4gICAgICAgICAgICAgICAgfSwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgIFxyXG5cdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnNhdmVNZW51ID0gZnVuY3Rpb24oaXNfdmFsaWQpIFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc192YWxpZClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuYXZiYXJMZWZ0ID0gYW5ndWxhci5jb3B5KCRzY29wZS5uYXZiYXJJdGVtc0xlZnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmF2YmFyUmlnaHQgPSBhbmd1bGFyLmNvcHkoJHNjb3BlLm5hdmJhckl0ZW1zUmlnaHQpOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2hvd05hdmJhckRldGFpbHMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93TWVudURldGFpbHMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZE5hdmJhciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zYXZpbmdNZW51ID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgTWVudVNlcnZpY2Uuc2F2ZUZ1bGxBcHBNZW51KCRzY29wZS5yZXNvdXJjZS51aWQsIG5hdmJhckxlZnQsIG5hdmJhclJpZ2h0LG51bGwsJHNjb3BlLmxvY2FsVmFycy5uZXdEZXNjcmlwdGlvbiwkc2NvcGUuZ3NydmMucmVzb3VyY2VGb3JtVmVyc2lvblskc2NvcGUucmVzb3VyY2UudWlkXS5WZXJzaW9uKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubmF2YmFySXRlbXNMZWZ0Lmxlbmd0aCA9IDAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5uYXZiYXJJdGVtc1JpZ2h0Lmxlbmd0aCA9IDBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGRhdGEubmF2YmFySXRlbXNMZWZ0KSAgICAkc2NvcGUubmF2YmFySXRlbXNMZWZ0LnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBkYXRhLm5hdmJhckl0ZW1zUmlnaHQpICAgJHNjb3BlLm5hdmJhckl0ZW1zUmlnaHQucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI21lbnVQdWJsaXNoJykubW9kYWwoJ2hpZGUnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2F2aW5nTWVudSA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuY291bnRfY2hhbmdlcz4wKSAkc2NvcGUucmVzb3VyY2UuUHVibGlzaGVkPXRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLm1zZywnc3VjY2VzcycpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNhdmluZ01lbnUgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfTtcclxuXHRcdFx0XHRcclxuICAgICAgICAgICAgICAgIC8vZ2V0IHBhZ2VzXHJcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUobGFuZywncGFnZScpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1x0XHRcdFx0XHRcclxuXHRcdFx0XHRcdCRzY29wZS5sb2NhbFZhcnMucGFnZUxpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wO2k8JHNjb3BlLmxvY2FsVmFycy5wYWdlTGlzdC5sZW5ndGg7aSsrKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnBhZ2VMaXN0W2ldLnNfbWVudXNfUG9wdWxhdGVUeXBlPVwibmF2YmFyXCI7IFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnBhZ2VzTG9hZGVkPXRydWU7ICAgIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0IFxyXG4gICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG5cdFx0XHRcdH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgfV0sXHJcbiAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcclxuICAgICAgICAgICAgICBcclxuXHRcdFx0XHQgIGlmIChzY29wZS5uYXZiYXJJdGVtc1JpZ2h0Lmxlbmd0aD09MCkge1xyXG5cdFx0XHRcdFx0bGV0IHNldHRpbmdzID0ge2lkOm51bGwsbmFtZTpcIlNldHRpbmdzXCIsc19tZW51c19pZDpudWxsLHNfbWVudXNfTmFtZTpcIlNldHRpbmdzXCIsc19tZW51c19NZW51UG9zaXRpb246XCJuYXZiYXJyaWdodFwiLHNfbWVudXNfSWNvbjpcImZhIGZhLWNvZ1wiLHNfbWVudXNfTWVudVR5cGU6Mn07XHJcblx0XHRcdFx0XHRzY29wZS5uYXZiYXJJdGVtc1JpZ2h0LnB1c2goc2V0dGluZ3MpO1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0ICB9XHJcblxyXG5cdFx0XHRcdCAgbGV0IGJhZzIgPSBkcmFndWxhU2VydmljZS5maW5kKCRyb290U2NvcGUsIFwiYXBwLW1lbnUtYmFnXCIpO1xyXG5cdFx0XHRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICBcclxufTtcblxyXG4ndXNlIHN0cmljdCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3RCYXNpY1RhYmxlKCkge1xyXG4gICAgICAgXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHJlc3RyaWN0OiAnRUEnLFxyXG4gICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RCYXNpY1RhYmxlLmh0bWwnLFxyXG4gICAgICAgIHNjb3BlOiB7XHJcbiAgICAgICAgICAgIGNvbHVtbnM6ICc9JyxcclxuICAgICAgICAgICAgZGF0YTogJz0nLFxyXG4gICAgICAgICAgICBtYXBwaW5nOic9J1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24oJHNjb3BlKXtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICRzY29wZS5nZXRNYXBwaW5nID0gZnVuY3Rpb24obWFwKVxyXG4gICAgICBcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJHNjb3BlLm1hcHBpbmdbbWFwXVxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgfSxcclxuICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbWVudCwgYXR0cnMpIHtcclxuXHJcbiAgICAgICAgICAgXHJcbiBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgIH1cclxuICAgICAgICBcclxufTtcbid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdEJvb2xlYW4gKCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICByZXN0cmljdDogJ0EnLFxyXG4gICAgICAgICAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24gKCRzY29wZSxHcmlkc3RlclNlcnZpY2UsS2F0YWx5b1N0YXRlTWFuYWdlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRzY29wZS5mZC5sb2NhbFZhcnMpICRzY29wZS5mZC5sb2NhbFZhcnM9e30gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2hvd1Byb3BlcnRpZXMgPSBmdW5jdGlvbihldmVudClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnNldEZpZWxkUHJvcGVydGllcygkc2NvcGUuZmQsIGV2ZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVZhbHVlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YS5sZW5ndGg9PTApICRzY29wZS5mb3JtRGF0YT1be31dO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1WYWx1ZT0kc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgJHNjb3BlLmZvcm1EYXRhPVt7fV07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlYXJjaD1be2lkOjEsZmlsdGVyOidlcScsY29kZV9uYW1lOidlcScsbmFtZTpcIkVxdWFsc1wiLGljb246XCJmYSBmYS1iYXJzXCJ9IF07XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJHNjb3BlLmZkLlNlYXJjaCkgJHNjb3BlLmZkLlNlYXJjaCA9ICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlYXJjaFswXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdID09PXVuZGVmaW5lZCkgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVZhbHVlU3RhdGU9ICRzY29wZS5rc20uYWRkU3ViamVjdCgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQrJy1ib29sVmFsdWVTdGF0ZU5hbWUnKyRzY29wZS5mZC5QcmVzZW50YXRpb25JZCxpdGVtVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVZhbHVlU3RhdGVOYW1lID0gaXRlbVZhbHVlU3RhdGUuc3ViamVjdC5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZV9jaGFuZ2VkID0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVZhbHVlU3RhdGUuc3ViamVjdC5zZXRTdGF0ZUNoYW5nZXMgPSBkYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVZhbHVlU3RhdGUuc3ViamVjdC5ub3RpZnlPYnNlcnZlcnMoXCJ2YWx1ZUNoYW5nZWRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYWN0aW9uX3ZhbHVlX2NoYW5nZWQgPSAkc2NvcGUua3NtLmFkZEFjdGlvbihpdGVtVmFsdWVTdGF0ZSxcInZhbHVlQ2hhbmdlZFwiLHZhbHVlX2NoYW5nZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUub25fYmx1cl9hY3Rpb249ZnVuY3Rpb24oKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKGl0ZW1WYWx1ZVN0YXRlLFwidmFsdWVDaGFuZ2VkXCIsICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuZmQuRGVmYXVsdFZhbHVlID0gJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcHBseV92YWx1ZSA9IGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSE9dW5kZWZpbmVkKSAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0gPSBkYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5TZXREZWZhdWx0ID0gZnVuY3Rpb24oKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLkRlZmF1bHRWYWx1ZSA9IHt2YWx1ZTokc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV19O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkPy5QYXJhbWV0ZXJzPy5EZXBlbmRlbnRGaWVsZElkIT11bmRlZmluZWQgJiYgJHNjb3BlPy5mZC5QYXJhbWV0ZXJzPy5EZXBlbmRlbnRGaWVsZElkIT1udWxsKSAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuRGVwZW5kZW50RmllbGRJZCE9XCJcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGVwZW5kZW50X2ZpZWxkID0gXCJGaWVsZFwiKyRzY29wZS5mZC5QcmVzZW50YXRpb25JZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQrJy0nKyRzY29wZS5mZC5QYXJhbWV0ZXJzLkRlcGVuZGVudEZpZWxkVHlwZStcIlZhbHVlU3RhdGVOYW1lXCIrJHNjb3BlLmZkLlBhcmFtZXRlcnMuRGVwZW5kZW50RmllbGRJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb2JzZXJ2ZXIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdCxkZXBlbmRlbnRfZmllbGQsXCJ2YWx1ZUNoYW5nZWRcIixhcHBseV92YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN0YXRlID0gJHNjb3BlLmtzbS5nZXRTdGF0ZShzdWJzY3JpYmVkU3ViamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLnN0YXR1cz09XCJva1wiKSAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0gPSBzdGF0ZS5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVZhbHVlU3RhdGUuc3ViamVjdC5jdXJyZW50U3RhdGVJbmRleD49MClcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdID0gaXRlbVZhbHVlU3RhdGUuc3ViamVjdC5nZXRTdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSE9dW5kZWZpbmVkKSAkc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24oaXRlbVZhbHVlU3RhdGVOYW1lLFwidmFsdWVDaGFuZ2VkXCIsICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RCb29sZWFuLmh0bWwnLFxyXG4gICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcclxuXHRcdFx0XHRcclxuICAgICAgICAgICBpZiAoc2NvcGUuZm9ybURhdGE9PT11bmRlZmluZWQpIHNjb3BlLmZvcm1EYXRhID0gW3snRmllbGQnOjB9XTtcclxuICAgICAgICAgIGlmIChzY29wZS5mb3JtUGFyYW1zPT09dW5kZWZpbmVkKSBzY29wZS5mb3JtUGFyYW1zID0ge2Zvcm1WaWV3VHlwZToxfTtcclxuICAgICAgICAgIGlmIChzY29wZS5mb3JtUGFyYW1zUGFyZW50PT09dW5kZWZpbmVkKSBzY29wZS5mb3JtUGFyYW1zUGFyZW50ID0ge2Zvcm1WaWV3VHlwZToxfTtcclxuIFxyXG4gICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxufVxyXG5cbid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdEJvb3RzdHJhcFRvb2x0aXAgKCkge1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxyXG4gICAgICAgICBcclxuICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgYXR0cnMuJG9ic2VydmUoJ3RpdGxlJyxmdW5jdGlvbih0aXRsZSl7XHJcblx0XHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICAgICAvLyBEZXN0cm95IGFueSBleGlzdGluZyB0b29sdGlwcyAob3RoZXJ3aXNlIG5ldyBvbmVzIHdvbid0IGdldCBpbml0aWFsaXplZClcclxuICAgICAgICAgICAgICAgICAgICBlbGVtLnRvb2x0aXAoJ2Rpc3Bvc2UnKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGluaXRpYWxpemUgdGhlIHRvb2x0aXAgaWYgdGhlcmUncyB0ZXh0IChwcmV2ZW50cyBlbXB0eSB0b29sdGlwcylcclxuXHJcblx0XHRcdFx0XHRpZiAoalF1ZXJ5LnRyaW0odGl0bGUpKSBlbGVtLnRvb2x0aXAoKTtcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0Ly9lbGVtLnRvb2x0aXAoXCJzaG93XCIpO1xyXG5cdFx0XHRcdFx0Ly9zZXRUaW1lb3V0KCAoKT0+IHtlbGVtLnRvb2x0aXAoXCJoaWRlXCIpOyB9ICwgMzAwMClcclxuXHQgIFxyXG5cdCAgXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBlbGVtLm9uKCckZGVzdHJveScsIGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRcdFx0XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbS50b29sdGlwKCdkaXNwb3NlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGF0dHJzLiQkb2JzZXJ2ZXJzWyd0aXRsZSddO1xyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgXHJcbn07XG4ndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBrdEJyb2FkY2FzdExhc3RSZXBlYXRlckVsZW1lbnQgKCkge1xuICBcbiAgcmV0dXJue1xuICBcbiAgICAgICAgICAgIHByaW9yaXR5OiAtMTAwMCwgLy8gYSBsb3cgbnVtYmVyIHNvIHRoaXMgZGlyZWN0aXZlIGxvYWRzIGFmdGVyIGFsbCBvdGhlciBkaXJlY3RpdmVzIGhhdmUgbG9hZGVkLiBcbiAgICAgICAgICAgIHJlc3RyaWN0OiBcIkFcIiwgLy8gYXR0cmlidXRlIG9ubHlcbiAgICAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uKCRyb290U2NvcGUpXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uKHNjb3BlLCBlbGVtLCBhdHRycykge1xuICAgICAgICAgICAgICBpZiAoc2NvcGUuJGxhc3Qpe1xuICAgIFxuICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgJHJvb3RTY29wZS4kYnJvYWRjYXN0KCdMYXN0UmVwZWF0ZXJFbGVtZW50Jyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgXG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0Q2FsY3VsYXRlZEZpZWxkICgpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxyXG4gICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdENhbGN1bGF0ZWRGaWVsZC5odG1sJyxcclxuICAgICAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uKCRzY29wZSxHcmlkc3RlclNlcnZpY2UpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2U7XHJcbiAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnM9PXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycz17fTtcclxuICAgICAgICBpZiAoJHNjb3BlLmZkPT11bmRlZmluZWQpICRzY29wZS5mZD17fTtcclxuICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhPT11bmRlZmluZWQpICRzY29wZS5mb3JtRGF0YSA9IFt7fV07XHJcblx0XHRcdCAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAkc2NvcGUuc2hvd1Byb3BlcnRpZXMgPSBmdW5jdGlvbihldmVudClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnNldEZpZWxkUHJvcGVydGllcygkc2NvcGUuZmQsZXZlbnQpO1xyXG4gICAgICAgXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgLy8kc2NvcGUuZm9ybURhdGFbMF09e0ZpZWxkMjU2OjIsRmllbGQyNTc6M307XHJcbiAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLkNhbGN1bGF0ZT1mdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgIHZhciBzY29wZVZhciA9ICRzY29wZS5mb3JtRGF0YVswXTtcclxuICAgICAgICAgICAgJHNjb3BlLmZkLnNJdGVtVmFsdWU9bWF0aC5ldmFsKCRzY29wZS5mZC5MYWJlbCxzY29wZVZhcik7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XHJcblx0XHRcdFx0XHJcbiAgICAgICBcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH07XG4ndXNlIHN0cmljdCc7XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0Q2FsZW5kYXIgKCkge1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxyXG4gICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdENhbGVuZGFyLmh0bWwnLFxyXG5cclxuICAgICAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uKCRzY29wZSwkcm9vdFNjb3BlLCR0aW1lb3V0LFVzZXJTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLFRhc2tEYXRhU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSwgVXRpbGl0eVNlcnZpY2UpIHtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICBjb25zdCBudW1Gb3JtYXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoXCJkZS1ERVwiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6ICAkc2NvcGUuZmQuUGFyYW1ldGVycy5jaGFydEZyYWN0aW9uRGlnaXRzIHx8IDIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6ICAkc2NvcGUuZmQuUGFyYW1ldGVycy5jaGFydEZyYWN0aW9uRGlnaXRzIHx8IDJcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcblxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjPSBHcmlkc3RlclNlcnZpY2U7XHJcbiAgICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KCRzY29wZS5mZC5zZWxlY3RlZFRhc2tzKSkgJHNjb3BlLmZkLnNlbGVjdGVkVGFza3M9W107XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbiE9dW5kZWZpbmVkKSAge1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUudGFza0V4ZWN1dGVJZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udGFza19leGVjdXRlX2lkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMgPT0gdW5kZWZpbmVkKSAkc2NvcGUubG9jYWxWYXJzPXt9O1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsT2JqPXtsb2FkZWRUYXNrcyA6IFtdfTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMudGFza0l0ZW0gPSBudWxsOyAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFRhc2sgPSB7fTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2hvd01lbnUgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMgPT0gdW5kZWZpbmVkKSAkc2NvcGUuZmQubG9jYWxWYXJzPXt9O1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZCA9IHtcclxuICAgICAgICAgICAgICAgICAgICBpZDogJzEnLFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdIb21lJyxcclxuICAgICAgICAgICAgICAgICAgICB3aWRnZXRzOiB7fVxyXG5cdFx0XHRcdH0gO1xyXG4gICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMudGFza0l0ZW0gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRUYXNrID0ge307XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vTUlHT1IgLSBQUkVCQUNJTyBJWiBUQVNLIEFERCBSRVNPVVJDRSwgVE9ETyAtIElaQkFDSVRJIFZJU0FLXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUudGFza0lkPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VEZWZJZDtcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUudGFza0lkPT11bmRlZmluZWQpICAkc2NvcGUudGFza0lkPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VEZWZJZF9pZDtcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUudGFza0lkPT11bmRlZmluZWQpICRzY29wZS50YXNrSWQ9MDtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMudGFza0lkPSRzY29wZS50YXNrSWQ7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUGFyZW50RGF0YXNldERlZklkPSRzY29wZS5mZC5SZWxhdGVkO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnByZXZUYXNrRXhlSWQgPSAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wcmV2X3Rhc2tfaWQ7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1UeXBlPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV90eXBlO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnNvdXJjZV90eXBlPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uc291cmNlX3R5cGU7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUudGFza0luaXRpYXRlSWQgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRhc2tfaW5pdGlhdGVfaWQ7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUudGFza0V4ZWN1dGVJZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udGFza19leGVjdXRlX2lkO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1EZWZpbml0aW9uID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb247XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQ9MDtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRpZiAoJHNjb3BlLmZkLlV1aWRSZWY9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLlV1aWRSZWY9VXRpbGl0eVNlcnZpY2UudXVpZHY0KCk7XHJcblx0XHRcdFx0JHNjb3BlLmZkLlBhcmFtZXRlcnMuVXVpZFJlZiA9ICRzY29wZS5mZC5VdWlkUmVmO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybURlZmluaXRpb24gPSAkc2NvcGUuZm9ybURlZmluaXRpb24gfHwgZmFsc2VcclxuICAgICAgICAgICAgICAgICRzY29wZS50YXNrSW5pdGlhdGVJZCA9ICRzY29wZS50YXNrSW5pdGlhdGVJZCB8fCAwXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUudGFza0V4ZWN1dGVJZCA9ICRzY29wZS50YXNrRXhlY3V0ZUlkIHx8IDBcclxuICAgICAgICAgICAgICAgICRzY29wZS5wcmV2VGFza0V4ZUlkID0gJHNjb3BlLnByZXZUYXNrRXhlSWQgfHwgMFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgIGxldCBoc3Z0b3JnYiA9IGZ1bmN0aW9uIChoLHMsdikgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGY9IChuLGs9KG4raC82MCklNikgPT4gdiAtIHYqcypNYXRoLm1heCggTWF0aC5taW4oayw0LWssMSksIDApOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICAgXCIjXCIgKyBNYXRoLnJvdW5kKGYoNSkgKiAyNTUpLnRvU3RyaW5nKDE2KSArICBNYXRoLnJvdW5kKGYoMykgKiAyNTUpLnRvU3RyaW5nKDE2KSArIE1hdGgucm91bmQoZigxKSAqIDI1NSkgLnRvU3RyaW5nKDE2KSBcclxuICAgICAgICAgICAgICAgIH0gIFxyXG5cclxuICAgICAgICAgICAgICAgIGxldCBIU1YyUkdCID0gZnVuY3Rpb24oaCwgcywgdikge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciByLCBnLCBiLCBpLCBmLCBwLCBxLCB0O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBoLnMsIHYgPSBoLnYsIGggPSBoLmg7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGkgPSBNYXRoLmZsb29yKGggKiA2KTtcclxuICAgICAgICAgICAgICAgICAgICBmID0gaCAqIDYgLSBpO1xyXG4gICAgICAgICAgICAgICAgICAgIHAgPSB2ICogKDEgLSBzKTtcclxuICAgICAgICAgICAgICAgICAgICBxID0gdiAqICgxIC0gZiAqIHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHQgPSB2ICogKDEgLSAoMSAtIGYpICogcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpICUgNikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IHIgPSB2LCBnID0gdCwgYiA9IHA7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6IHIgPSBxLCBnID0gdiwgYiA9IHA7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IHIgPSBwLCBnID0gdiwgYiA9IHQ7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IHIgPSBwLCBnID0gcSwgYiA9IHY7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IHIgPSB0LCBnID0gcCwgYiA9IHY7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6IHIgPSB2LCBnID0gcCwgYiA9IHE7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICByZXR1cm4gICAgXCIjXCIgKyBNYXRoLnJvdW5kKHIgKiAyNTUpLnRvU3RyaW5nKDE2KSArICAgIE1hdGgucm91bmQoZyAqIDI1NSkudG9TdHJpbmcoMTYpICsgTWF0aC5yb3VuZChiICogMjU1KSAudG9TdHJpbmcoMTYpIFxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnRvZ2dsZURyb3Bkb3duID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dNZW51ID0gICRzY29wZS5mZC5sb2NhbFZhcnMuc2hvd01lbnUgPyBmYWxzZTogdHJ1ZSBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmNvcHlUb0NsaXBib2FyZCA9IGZ1bmN0aW9uKHRleHQpe1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuY29weVV1aWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpLnRoZW4oIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyRzY29wZS5mZC5sb2NhbFZhcnMuY29weVV1aWQgPSBmYWxzZTt9LDEwMDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoKSA9PiB7ICAgIC8qIGNsaXBib2FyZCB3cml0ZSBmYWlsZWQgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnQ29weSB0byBjbGlwYm9hcmQgZmFpbGVkJywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7JHNjb3BlLmZkLmxvY2FsVmFycy5jb3B5VXVpZCA9IGZhbHNlO30sMTAwMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB2YXIgIHByb2Nlc3Nfb2JzZXJ2ZWRfZGF0YSA9IGZ1bmN0aW9uKGRhdGEpIC8vIGNhbGxlZCBieSBkYXRhc2V0TGlzdCAodmlhIEtTTSlcclxuICAgICAgICAgICAgICAgIHsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZXJyb3Jtc2cgPScnXHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhPT11bmRlZmluZWQgfHwgZGF0YT8uc3RhdGU/LnNoYXJlZERhdGE/LmFuYWx5dGljcz09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLkNhbGN1bGF0ZUZ1bmN0aW9uPy5uYW1lPT11bmRlZmluZWQpICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5lcnJvcm1zZz0nQ2FsY3VsYXRlIEZ1bmN0aW9uIG5vdCBkZWZpbmVkISdcclxuICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLmNoYXJ0VHlwZT09dW5kZWZpbmVkKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5QYXJhbWV0ZXJzLmNoYXJ0VHlwZT0nY291bnRlcidcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLlNlbGVjdGVkQ2hhcnRBbmFseXRpY3MgPSAkc2NvcGUuZmQuUGFyYW1ldGVycy5TZWxlY3RlZENoYXJ0QW5hbHl0aWNzIHx8IDAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuYW5hbHl0aWNzID0gIGRhdGE/LnN0YXRlPy5zaGFyZWREYXRhPy5hbmFseXRpY3NbJHNjb3BlLmZkLmxvY2FsVmFycy5TZWxlY3RlZENoYXJ0QW5hbHl0aWNzXVskc2NvcGUuZmQuUGFyYW1ldGVycy5DYWxjdWxhdGVGdW5jdGlvbi5uYW1lXVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBhbmFseXRpY3MgPSAgJHNjb3BlLmZkLmxvY2FsVmFycy5hbmFseXRpY3MgXHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vZmluZCBtaW52YWx1ZSBhbmQgbWF4dmFsdWUgb2YgY3VycmVudCBBbmF5dGljcyBkYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5tYXh2YWx1ZT0tMVxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMubWludmFsdWU9LTFcclxuICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhhbmFseXRpY3MpLmZvckVhY2goZnVuY3Rpb24oa2V5LGluZGV4KSB7IC8vbXVzdCB1c2UgaW52ZXJzZSBsb2dpYyAodW5kZWZpbmVkID09IG51bWJlciBpcyBhbHdheXMgZmFsc2UpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISggYW5hbHl0aWNzW2tleV0gPCBhbmFseXRpY3NbJHNjb3BlLmZkLmxvY2FsVmFycy5tYXh2YWx1ZV0pKSAgICRzY29wZS5mZC5sb2NhbFZhcnMubWF4dmFsdWUgPSBrZXlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKCBhbmFseXRpY3Nba2V5XSA+IGFuYWx5dGljc1skc2NvcGUuZmQubG9jYWxWYXJzLm1pbnZhbHVlXSkpICAgJHNjb3BlLmZkLmxvY2FsVmFycy5taW52YWx1ZSA9IGtleSAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiBcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YSA9IE9iamVjdC52YWx1ZXMoYW5hbHl0aWNzKVxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMubGFiZWxzID0gT2JqZWN0LmtleXMoYW5hbHl0aWNzKVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycz8uY2hhcnRUeXBlPy5uYW1lID09ICdwaWUnIHx8ICRzY29wZS5mZC5QYXJhbWV0ZXJzPy5jaGFydFR5cGU/Lm5hbWUgPT0gJ2RvdWdobnV0JyB8fCAkc2NvcGUuZmQuUGFyYW1ldGVycz8uY2hhcnRUeXBlPy5uYW1lID09ICdwb2xhckFyZWEnKSB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbG9ycz1bXSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBnb2xkZW5fcmF0aW8gPSAwLjYxODAzMzk4ODc0OTg5NVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGggPSBNYXRoLnJhbmRvbSgpIC8vIHVzZSByYW5kb20gc3RhcnQgdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhKSB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoICs9IGdvbGRlbl9yYXRpb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoICU9IDEgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcnMucHVzaCggSFNWMlJHQiggaCwgMC41LCAwLjk1KSApICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY29udmVydCBjb2xvcnMgdG8gYXJyYXkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmNoYXJ0Q29sb3JzID0gWyAgIHsgYmFja2dyb3VuZENvbG9yOiBjb2xvcnMgfSAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhID0gICAgIFsgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhICAgIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnM/LmNoYXJ0VHlwZT8ubmFtZSE9dW5kZWZpbmVkKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5jaGFydFR5cGUgPSAgJHNjb3BlLmZkLlBhcmFtZXRlcnMuY2hhcnRUeXBlLm5hbWUgXHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5jaGFydFR5cGUgPSAgJHNjb3BlLmZkLlBhcmFtZXRlcnMuY2hhcnRUeXBlIC8vY291bnRlciBkb2VzIG5vdCBoYXZlIC5uYW1lXHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuY2hhcnRMYWJlbCA9ICAkc2NvcGUuZmQuUGFyYW1ldGVycy5jaGFydExhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaGFyZWREYXRhID0gZGF0YT8uc2hhcmVkRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgIC8vc3VtbWluZyBhbGwgdmFsdWVzIGZvciBjb3VudGVyXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5jb3VudEFsbCA9ICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YS5yZWR1Y2UoKHBhcnRpYWxTdW0sIGEpID0+IHBhcnRpYWxTdW0gKyBhLCAwKTsgXHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0Ly8gKioqKiBKU09ORSBTQ1JJUFRJTkcgKioqKiogLy9cclxuXHRcdFx0XHRcdC8vdmFyIHRlbXBsYXRlID0ge2E6IHskZXZhbDogXCJmb28uYmFyXCJ9fTtcclxuICAgICAgICAgICAgICAgICAgICAvL3ZhciB0ZW1wbGF0ZSA9IFwiJHtmb28uYmFyfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgLy92YXIgdGVtcGxhdGUgPSBcIiR7bWludmFsdWV9ICR7YW5hbHl0aWNzW21pbnZhbHVlXX1cIiAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vdmFyIGNvbnRleHQgPSB7Zm9vOiB7YmFyOiBcInpvb1wifX0gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuZmQubG9jYWxWYXJzLnRlc3Rqc29uZSAgPSBqc29uZSh0ZW1wbGF0ZSwgJHNjb3BlLmZkLmxvY2FsVmFycykgIFxyXG5cdFx0XHRcdFx0XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zY3JpcHRWYWx1ZSAgPSBqc29uZSgkc2NvcGUuZmQuUGFyYW1ldGVycy5zY3JpcHQgfHwgJycsICAkc2NvcGUuZmQubG9jYWxWYXJzKVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9OyBcclxuICAgIFxyXG4gICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1hdE51bWJlciA9IGZ1bmN0aW9uKG51bSkgIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IG5ld0Zvcm1hdCAsIHVzZUdyb3VwaW5nO1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgdXNlR3JvdXBpbmcgPSAkc2NvcGUuZmQuUGFyYW1ldGVycy51c2VHcm91cGluZ1NlcGFyYXRvciA7ICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5jaGFydEZyYWN0aW9uRGlnaXRzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgbmV3Rm9ybWF0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KFwiZGUtREVcIiwgeyB1c2VHcm91cGluZzogdXNlR3JvdXBpbmcsICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6ICRzY29wZS5mZC5QYXJhbWV0ZXJzLmNoYXJ0RnJhY3Rpb25EaWdpdHMgLCAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAkc2NvcGUuZmQuUGFyYW1ldGVycy5jaGFydEZyYWN0aW9uRGlnaXRzICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG5ld0Zvcm1hdCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChcImRlLURFXCIsIHsgdXNlR3JvdXBpbmc6IHVzZUdyb3VwaW5nIH0pOyAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuZGlzYWJsZUZvcm1hdHRpbmcpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdGb3JtYXQuZm9ybWF0KG51bSlcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ0Vycm9yISdcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICBcclxuICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZXRTZWxlY3RlZERhdGFzZXQgPSBmdW5jdGlvbihpZCxzYXZlZCkgIHtcclxuICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtPT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW09e31cclxuICAgICAgICAgICAgICAvL3BpY2sgb3JoZXIgcGFyYW1ldGVycyBmcm9tIGRhdGFiYXNlXHJcbiAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRQdWJsaXNoZWRSZXNvdXJjZUJ5SWQoaWQsc2F2ZWQpO1xyXG4gICAgICAgICAgICAgIFxyXG5cdFx0fVxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZ2V0UHVibGlzaGVkUmVzb3VyY2VCeUlkID0gZnVuY3Rpb24oaWQsc2F2ZWQpIFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgbGV0IHBvc1xyXG4gICAgICAgICAgICBpZiAoc2F2ZWQgJiYgJHNjb3BlLmZkLkZvcm1EZWYhPT11bmRlZmluZWQgJiYgJHNjb3BlLmZkLkZvcm1EZWYhPT1udWxsKVxyXG4gICAgICAgICAgICAgIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgcG9zID0gJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoaWQpO1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAocG9zPj0wKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lID0gJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3RbcG9zXS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkRGF0YXNldCA9ICRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0W3Bvc11cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5pZCA9IGlkO1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQgPSAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWUgKycgKCcrJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5pZCArJyknXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jPSRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW07XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQgPSAkc2NvcGUuZmQuRm9ybURlZlxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybUxvYWRlZD10cnVlO1xyXG5cclxuICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgcG9zID0gJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoaWQpO1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgaWYgKHBvcz49MCl7XHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UHVibGlzaGVkUmVzb3VyY2VCeUlkKGlkKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZERhdGFzZXQgPSAkc2NvcGUuZmQubG9jYWxWYXJzLnB1Ymxpc2hlZFJlc291cmNlTGlzdFtwb3NdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQgPSBkYXRhLmRhdGEuRm9ybVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLkZvcm1EZWYgPSAkc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW1fYyE9PXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZUlkPSRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW1fYy5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZVZlcnNpb249JHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jLlZlcnNpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlJlbGF0ZWQ9JHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jLlJlc291cmNlRGVmSWQ7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZnJlc2hGb3JtPWFuZ3VsYXIuY29weSgkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtX2MuRm9ybSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUmVsYXRlZCA9ICRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0W3Bvc10uUmVzb3VyY2VEZWZJZFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnRXJyb3IgLSBwdWJsaXNoZWQgZGF0YXNldCBub3Qgc2VsZWN0ZWQga3RUQXNrQWRkJywnZXJyb3InKVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgXHJcbn1cclxuICAgICAgIFxyXG5cclxuICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuY2FsY3VsYXRlRnVuY3Rpb25zPSBbIHtpZDoxLG5hbWU6J3N1bSd9LHtpZDoyLG5hbWU6J21lYW4nfSx7aWQ6MyxuYW1lOidtaW4nfSx7aWQ6NCxuYW1lOidtYXgnfSx7aWQ6NSxuYW1lOidjb3VudCd9IF0gICAgIFxyXG5cclxuXHJcblxyXG4gICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmNoYXJ0T3B0aW9ucz0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNjYWxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy9wcmVjaXNpb246ICBkZWZpbmVkIGFzIHBhcmFtZXRlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9ICAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5zOiB7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnZW5kOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdib3R0b20nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdyZ2IoMjU1LCA5OSwgMTMyKSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IHsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyOiAnbGFiZWwnLCAgLy8gcmVuZGVyICdsYWJlbCcsICd2YWx1ZScsICdwZXJjZW50YWdlJywgJ2ltYWdlJyBvciBjdXN0b20gZnVuY3Rpb24sIGRlZmF1bHQgaXMgJ3BlcmNlbnRhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMCwvLyBwcmVjaXNpb24gZm9yIHBlcmNlbnRhZ2UsIGRlZmF1bHQgaXMgMFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1plcm86IGZhbHNlLCAvLyAgd2hldGhlciBvciBub3QgbGFiZWxzIG9mIHZhbHVlIDAgYXJlIGRpc3BsYXllZCwgZGVmYXVsdCBpcyBmYWxzZSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogMTQsICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250Q29sb3I6ICcjMDAwJywvLyBmb250IGNvbG9yLCBjYW4gYmUgY29sb3IgYXJyYXkgZm9yIGVhY2ggZGF0YSBvciBmdW5jdGlvbiBmb3IgZHluYW1pYyBjb2xvciwgZGVmYXVsdCBpcyBkZWZhdWx0Rm9udENvbG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U3R5bGU6ICdub3JtYWwnLCAgIC8vIGZvbnQgc3R5bGUsIGRlZmF1bHQgaXMgZGVmYXVsdEZvbnRTdHlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogXCInSGVsdmV0aWNhIE5ldWUnLCAnSGVsdmV0aWNhJywgJ0FyaWFsJywgc2Fucy1zZXJpZlwiLCAgICAgICAgIC8vIGZvbnQgZmFtaWx5LCBkZWZhdWx0IGlzIGRlZmF1bHRGb250RmFtaWx5ICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0U2hhZG93OiBmYWxzZSwgLy8gZHJhdyB0ZXh0IHNoYWRvd3MgdW5kZXIgbGFiZWxzLCBkZWZhdWx0IGlzIGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuY2hhcnRQcmVjaXNpb24hPXVuZGVmaW5lZCAmJiAkc2NvcGUuZmQuUGFyYW1ldGVycy5jaGFydFByZWNpc2lvbiE9bnVsbCApIHsgICAgIFxyXG4gICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmNoYXJ0T3B0aW9ucy5zY2FsZS50aWNrcy5wcmVjaXNpb24gPSAkc2NvcGUuZmQuUGFyYW1ldGVycy5jaGFydFByZWNpc2lvblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzPy5jaGFydFR5cGU/Lm5hbWUgID09PSAnYmFyJyAgfHwgJHNjb3BlLmZkLlBhcmFtZXRlcnM/LmNoYXJ0VHlwZT8ubmFtZSAgID09PSAnbGluZScgfHwgJHNjb3BlLmZkLlBhcmFtZXRlcnM/LmNoYXJ0VHlwZT8ubmFtZSAgID09PSAncmFkYXInIHx8ICRzY29wZS5mZC5QYXJhbWV0ZXJzPy5jaGFydFR5cGU/Lm5hbWUgICA9PT0gJ2J1YmJsZScpICB7XHJcbiAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuY2hhcnRPcHRpb25zLnBsdWdpbnMubGVnZW5kLmRpc3BsYXk9IGZhbHNlXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgXHJcblx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdCRzY29wZS5mZC5sb2NhbFZhcnMuY2hhcnRUeXBlcyA9IFsgLy9yZW1vdmVkIHJhZGFyLCBidWJibGUgYW5kIHNjcmlwdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2lkOjEsbmFtZTonbGluZSd9LHtpZDoyLG5hbWU6J2Jhcid9LCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpZDo0LG5hbWU6J2RvdWdobnV0J30se2lkOjUsbmFtZToncGllJ30se2lkOjYsbmFtZToncG9sYXJBcmVhJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLHtpZDo5OSxuYW1lOidjb3VudGVyJ30gLy97aWQ6MyxuYW1lOidyYWRhcid9LHtpZDo3LG5hbWU6J2J1YmJsZSd9LHtpZDoxMDAsIG5hbWU6J3NjcmlwdCcgfSxcclxuICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgXHJcblx0XHRcdGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5jaGFydFR5cGU9PXVuZGVmaW5lZCkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5jaGFydFR5cGU9JHNjb3BlLmZkLmxvY2FsVmFycy5jaGFydFR5cGVzWzFdIC8vZGVmYXVsdCA9IGJhclxyXG5cdFx0XHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMudG9nZ2xlRHJvcGRvd24gPSBmdW5jdGlvbigpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2hvd01lbnUgPSAgJHNjb3BlLmxvY2FsVmFycy5zaG93TWVudSA/IGZhbHNlOiB0cnVlIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS4kb24oJ0lubGluZVRhc2tDbG9zZWQnLGZ1bmN0aW9uKGV2ZW50LGRhdGEpe1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB0YXNrSWQ9ZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcG9zID0gJHNjb3BlLmxvY2FsT2JqLmxvYWRlZFRhc2tzLm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLnRhc2tJZDsgfSkuaW5kZXhPZih0YXNrSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwb3M+PTApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbE9iai5sb2FkZWRUYXNrcy5zcGxpY2UocG9zLDEpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5zZWxlY3RlZFRhc2tzPT09dW5kZWZpbmVkIHx8ICRzY29wZS5mZC5zZWxlY3RlZFRhc2tzPT09bnVsbCkgJHNjb3BlLmZkLnNlbGVjdGVkVGFza3MgPSBbXTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5Gb3JtRGVmIT1udWxsICYmICRzY29wZS5mZC5Gb3JtRGVmIT09dW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnNlbGVjdGVkVGFza3MgPSAkc2NvcGUuZmQuRm9ybURlZjtcclxuICAgICAgICAgICAgICAgIH1lbHNlICAge1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5Gb3JtRGVmID0gW107ICBcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGxldCBpbml0aWF0ZV90YXNrID0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbG9hZFRhc2s9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy50YXNrTG9hZGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbE9iai5sb2FkZWRUYXNrcy5sZW5ndGg+MCkgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbE9iai5sb2FkZWRUYXNrc1swXS50YXNrSWQuaWQgIT0gZGF0YS50YXNrSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbE9iai5sb2FkZWRUYXNrcy5sZW5ndGg9MDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRUYXNrPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgbG9hZFRhc2s9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxPYmoubG9hZGVkVGFza3Muc3BsaWNlKDAsMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDtqPCRzY29wZS5mZC5zZWxlY3RlZFRhc2tzLmxlbmd0aDtqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuc2VsZWN0ZWRUYXNrc1tqXS50YXNrSWQuaWQ9PWRhdGEudGFza0lkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsT2JqLmxvYWRlZFRhc2tzLnB1c2goZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMudGFza0xvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgLy9zdWJzY3JpYmUgdG8gZXZlbnRzIC0gaW5pdGlhbGx5IG9ubHkgcmVmcmVzaCBkYXRhICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZV9zdGF0ZV9pZCAmJiAkc2NvcGUuZmQuUGFyYW1ldGVycy53aWRnZXRSZWZlcmVuY2UgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB3aG9hbWkgPSdjaGFydCcrICRzY29wZS5mZC5VdWlkUmVmICAvLyB2YWx1ZVN0YXRlTmFtZSAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdWJzY3JpYmVkU3ViamVjdCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZV9zdGF0ZV9pZCArICctJysgJHNjb3BlLmZkLlBhcmFtZXRlcnMud2lkZ2V0UmVmZXJlbmNlIC8vb2RhYnJhbmlVVUlEbmVrb2dFTEVNRU5UQSAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9ic2VydmVyID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3Qsd2hvYW1pLFwidmFsdWVDaGFuZ2VkXCIscHJvY2Vzc19vYnNlcnZlZF9kYXRhKTsgICBcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBsZXQgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZzsgIFxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMudGFza0lzT3BlbiA9IGZ1bmN0aW9uKHRhc2tJZClcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBpc09wZW5Qb3MgPSAkc2NvcGUubG9jYWxPYmoubG9hZGVkVGFza3MubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUudGFza0lkOyB9KS5pbmRleE9mKHRhc2tJZCk7XHJcbiAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09wZW5Qb3M+PTApIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnBhc3RlRnJvbUNsaXBib2FyZCA9IGZ1bmN0aW9uKHRhc2spe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC5yZWFkVGV4dCgpLnRoZW4oIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjbGlwYm9hcmQgc3VjY2Vzc2Z1bGx5IHJlYWQgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7dGFzay53aWRnZXRJZCA9IGRhdGF9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjbGlwYm9hcmQgcmVhZCBmYWlsZWQgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnUGFzdGUgZnJvbSBjbGlwYm9hcmQgZmFpbGVkJywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5BZGRUYXNrVG9MaXN0ID0gZnVuY3Rpb24gKClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuc2VsZWN0ZWRUYXNrcy5wdXNoKHt3aWRnZXRJZDpudWxsLHRhc2tJZDpudWxsfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLkNvbmZpcm1UYXNrTGlzdCA9IGZ1bmN0aW9uICgpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5Gb3JtRGVmID0gJHNjb3BlLmZkLnNlbGVjdGVkVGFza3M7XHJcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5zaG93Q29uZmlybWVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7JHNjb3BlLmZkLnNob3dDb25maXJtZWQ9ZmFsc2V9LDUwMDApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUmVtb3ZlVGFza0Zyb21MaXN0ID0gZnVuY3Rpb24gKGluZGV4KXtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXg+PTApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5zZWxlY3RlZFRhc2tzLnNwbGljZShpbmRleCwxKTsgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIH0gICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2F2ZVRhc2tUb1Jlc291cmNlID0gZnVuY3Rpb24odGRpZCx0ZWksZGF0YXNldERlZklkLGRhdGFzZXRSZWNvcmRJZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVGFza0RhdGFTZXJ2aWNlLnNhdmVUYXNrVG9SZXNvdXJjZSh0ZWksZGF0YXNldERlZklkLGRhdGFzZXRSZWNvcmRJZCwkc2NvcGUuZmQucHJlc2VudGF0aW9uSWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0ZS5nbygnYXBwLm5hdmJhci50YXNrcy5pbml0aWF0ZScse2lkOiB0ZGlkLGZyb21TdGF0ZU5hbWU6JHN0YXRlLmN1cnJlbnQubmFtZSxmcm9tU3RhdGVQYXJhbXM6JHN0YXRlLnBhcmFtcyxvdXRjb21lX2lkOjAscHJldl90YXNrX2V4ZWN1dGVfaWQ6dGVpfSk7XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dQcm9wZXJ0aWVzID0gZnVuY3Rpb24oZGF0YXNldE1hcHBlclR5cGUsc2hvd1Byb3BlcnRpZXNSaWdodClcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGUgPSBkYXRhc2V0TWFwcGVyVHlwZTtcclxuICAgICAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCAkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlIT1kYXRhc2V0TWFwcGVyVHlwZSkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGUgPSBkYXRhc2V0TWFwcGVyVHlwZTtcclxuICAgICAgICAgICAgICAgICAgIGVsc2UgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT0wO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmIChzaG93UHJvcGVydGllc1JpZ2h0KSAkc2NvcGUuZ3NydmMuc2V0RmllbGRQcm9wZXJ0aWVzKCRzY29wZS5mZCk7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQgIT0gdW5kZWZpbmVkKSAge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5maWVsZHNMaXN0ID0gW11cclxuICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRGaWVsZE5hbWVzRnJvbU9iamVjdCgkc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZCwgJHNjb3BlLmZkLmxvY2FsVmFycy5maWVsZHNMaXN0KVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiBcclxuICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZ2V0RmllbGROYW1lc0Zyb21PYmplY3QgPSBmdW5jdGlvbiAob2JqLCBmaWVsZHNMaXN0KSAgIC8vIGZpbmQgRmllbGROYW1lcyBpbiBnaXZlbiBEYXNoYm9hcmQgb2JqZWN0IHJlY3Vyc2l2ZWx5IFxyXG4gICAgIHsvLyBmaWVsZHNMaXN0ICBpcyByZXR1cm4gdmFyaWFibGUgKHVzZWQgZm9yIG11bHRpcGxlIHNlbGVjdClcclxuICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgdmFyIG8gPSB7fTtcclxuICAgICAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKCAodHlwZW9mKG9ialtrZXldKSA9PT0gJ29iamVjdCcpICYmIG9ialtrZXldICAgICYmIGtleSAhPSAnTmFtZUZpZWxkJykgIHsgLy9EbyBOT1QgcGFyc2UgJ05hbWVGaWVsZCcgICh3ZSBuZWVkIGl0IGFzIGl0IGlzKVxyXG4gICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZ2V0RmllbGROYW1lc0Zyb21PYmplY3Qob2JqW2tleV0sIGZpZWxkc0xpc3QpXHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIGVsc2UgeyAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ID09ICdGaWVsZE5hbWUnICApIHsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ba2V5XT0gb2JqW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleSA9PSAnUHJlc2VudGF0aW9uSWQnICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvWydpZCddPSBvYmpba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICB9ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXkgPT0gJ0xhYmVsJyApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb1snbmFtZSddPSBvYmpba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICB9ICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSA7IFxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICggb1snRmllbGROYW1lJ10gJiYgT2JqZWN0LmtleXMobykubGVuZ3RoID4gMCApIGZpZWxkc0xpc3QucHVzaChvKSAgIFxyXG4gICAgfTsgXHJcblxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfSAgICAgICBcclxuICAgICAgICAgICAgICBcclxuICAgIH1cclxuICBcclxufTtcclxuXHJcblxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgXG4ndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBrdENvZGVzQWN0aW9ucyAoKSB7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXG4gICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdENvZGVzQWN0aW9ucy5odG1sJyxcbiAgICAgICAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24oZHJhZ3VsYVNlcnZpY2UpXG4gICAgICAgICAgICAgICAge30sIFxuICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcbiAgICAgICAgICAgICBcbiAgICAgICAgICAgICBzY29wZS5hY3Rpb25zID0gW1xuICAgICAgICAgICAgICAgIHtpZDE6MSx0eXBlOjEsbmFtZTE6J0luaXRpYXRlIHRhc2snLHRhc2tJZDpudWxsLGFjdGlvblBhcmFtczp7fX0sXG4gICAgICAgICAgICAgICAge2lkMToyLHR5cGU6MixuYW1lMTonU2VuZCBub3RpZmljYXRpb24nLG5vdGlmaWNhdGlvbklkOm51bGwsYWN0aW9uUGFyYW1zOnt9fSwgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgIHNjb3BlLmdldFNlcU5vRm9yTmV3QWN0aW9uID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgIHZhciBzZXFObz0wO1xuICAgICAgICAgICAgICAgICAgdmFyIGFjdExlbj0wO1xuICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8c2NvcGUuY29kZXNBY3Rpb25zLmxlbmd0aDtpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuY29kZXNBY3Rpb25zW2ldLmFjdGlvbnMhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgIGFjdExlbiA9IHNjb3BlLmNvZGVzQWN0aW9uc1tpXS5hY3Rpb25zLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgc2VxTm8gPSBzZXFObythY3RMZW47XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICByZXR1cm4gc2VxTm87XG4gICAgICAgIFxuICAgICBcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgXG4gICAgICAgICAgICAgICB9ICAgXG4gICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH1cbiAgICB9XG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0Q29kZXNEZWZBY3Rpb25zICgpIHtcclxuICAgICAgICBcclxuICAgICAgICAgICB2YXIgY29udHJvbGxlciA9IFsnJHNjb3BlJywgJyRzdGF0ZVBhcmFtcycsJyRzdGF0ZScsJ0NvZGVzU2VydmljZScsJ01lc3NhZ2luZ1NlcnZpY2UnLCdUYXNrRGF0YVNlcnZpY2UnLCckcm9vdFNjb3BlJywnJHRpbWVvdXQnLCdkcmFndWxhU2VydmljZScsJ0dyaWRzdGVyU2VydmljZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCRzY29wZSwkc3RhdGVQYXJhbXMsJHN0YXRlLENvZGVzU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlLFRhc2tEYXRhU2VydmljZSwkcm9vdFNjb3BlLCR0aW1lb3V0LGRyYWd1bGFTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSkge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZpcnN0VGltZT10cnVlO1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIENvZGVzU2VydmljZS5Db2Rlc0xpc3QoKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY29kZXNMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAkc2NvcGUuY29kZXNBY3Rpb25zLmNvZGVzRG93bmxvYWRlZD1mYWxzZTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgJHNjb3BlLkdldENvZGVzQnlOYW1lID0gZnVuY3Rpb24oKVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICAgICAgICAvLyAkc2NvcGUubG9hZGluZ0FjdGlvbnM9dHJ1ZTsgXHJcbiAgICAgICAgICAgICAgICAgICAgIENvZGVzU2VydmljZS5nZXRDb2Rlc0J5TmFtZSgkc2NvcGUuZGVmYXVsdENvZGUsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmNvZGVzID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAkc2NvcGUubG9hZGluZ0FjdGlvbnM9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgIFxyXG4gICAgICAgICAgfTtcclxuICAgIFxyXG4gICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yz0gR3JpZHN0ZXJTZXJ2aWNlO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuc2V0dXBEcmFndWxhID0gZnVuY3Rpb24oKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICB2YXIgd2lkZ2V0SGFuZGxlUmVzb3VyY2UgPSAnZWxlbWVudC1kcmFnLWhhbmRsZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICB2YXIgYmFnID0gZHJhZ3VsYVNlcnZpY2UuZmluZCgkcm9vdFNjb3BlLCAnYmFnLWFjdGlvbnMnKTtcclxuICAgICAgICAgICAgICAgICAgICAgaWYgKCFiYWcpXHJcbiAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnNldHVwRHJhZ3VsYSgnYmFnLWFjdGlvbnMnLCdjb2RlQWN0aW9uc0RyYWd1bGEnLHdpZGdldEhhbmRsZVJlc291cmNlKTsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLmRlc3Ryb3lEcmFndWxhKCdiYWctYWN0aW9ucycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5zZXR1cERyYWd1bGEoJ2JhZy1hY3Rpb25zJywnY29kZUFjdGlvbnNEcmFndWxhJyx3aWRnZXRIYW5kbGVSZXNvdXJjZSk7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH07ICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZpbGxUcmFuc2l0aW9uQ291bnRlcnM9ZnVuY3Rpb24oY29kZUFjdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZUFjdGlvbnMudHJhbnNpdGlvbkxpc3Q9e307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cmFuc2l0aW9uPScnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8Y29kZUFjdGlvbnMuY29kZXNBY3Rpb25zTGlzdC5sZW5ndGg7aSsrKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uPWNvZGVBY3Rpb25zLmNvZGVzQWN0aW9uc0xpc3RbaV0udmFsdWUxK2NvZGVBY3Rpb25zLmNvZGVzQWN0aW9uc0xpc3RbaV0udmFsdWUyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGVBY3Rpb25zLnRyYW5zaXRpb25MaXN0W3RyYW5zaXRpb25dID09PSB1bmRlZmluZWQgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlQWN0aW9ucy50cmFuc2l0aW9uTGlzdFt0cmFuc2l0aW9uXT0xOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBjb2RlQWN0aW9ucy50cmFuc2l0aW9uTGlzdFt0cmFuc2l0aW9uXSsrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUucmVtb3ZlQ29kZUl0ZW0gPSBmdW5jdGlvbihwaW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgICAgIC8vc2NvcGUudGFzay5UYXNrT3V0Y29tZUNvZGVJZCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jb2Rlc0FjdGlvbnMuY29kZXNBY3Rpb25zTGlzdC5zcGxpY2UocGluZGV4LDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5yZW1vdmVBY3Rpb24gPSBmdW5jdGlvbihwaW5kZXgsaW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgICAgIC8vc2NvcGUudGFzay5UYXNrT3V0Y29tZUNvZGVJZCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jb2Rlc0FjdGlvbnMuY29kZXNBY3Rpb25zTGlzdFtwaW5kZXhdLmFjdGlvbnMuc3BsaWNlKGluZGV4LDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuR2V0Q29kZXNDbGljayA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9zY29wZS50YXNrLlRhc2tPdXRjb21lQ29kZUlkID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBzY29wZS5HZXRDb2RlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLkdldENvZGVzQnlOYW1lQ2xpY2sgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgIC8vc2NvcGUudGFzay5UYXNrT3V0Y29tZUNvZGVJZCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUuR2V0Q29kZXNCeU5hbWUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuQWRkQWN0aW9uID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIHZhciBmb3VuZD1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgIC8vZG9kYXRpIGtvbnRyb2xlIGRhIHNlIG5lIG1vxb5lIGRvZGF0aSBkdXBsaVxyXG4gICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8JHNjb3BlLmNvZGVzQWN0aW9ucy5jb2Rlc0FjdGlvbnNMaXN0Lmxlbmd0aDtpKyspXHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuY29kZXNBY3Rpb25zLmNvZGVzQWN0aW9uc0xpc3RbaV0uaWQxPT0kc2NvcGUuc3RhdHVzRnJvbS5pZCAmJiAkc2NvcGUuY29kZXNBY3Rpb25zLmNvZGVzQWN0aW9uc0xpc3RbaV0uaWQyPT0kc2NvcGUuc3RhdHVzVG8uaWQpIGZvdW5kPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3VuZClcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jb2Rlc0FjdGlvbnMuY29kZXNBY3Rpb25zTGlzdC5wdXNoKHtpZDE6JHNjb3BlLnN0YXR1c0Zyb20uaWQsbmFtZTE6JHNjb3BlLnN0YXR1c0Zyb20ubmFtZSx2YWx1ZTE6JHNjb3BlLnN0YXR1c0Zyb20ubmFtZSxpZDI6JHNjb3BlLnN0YXR1c1RvLmlkLG5hbWUyOiRzY29wZS5zdGF0dXNUby5uYW1lLHZhbHVlMjokc2NvcGUuc3RhdHVzVG8ubmFtZSxhY3Rpb25zOltdfSk7ICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmNvZGVzQWN0aW9ucy5zZWxlY3RlZEFjdGlvbkluZGV4PSRzY29wZS5jb2Rlc0FjdGlvbnMuY29kZXNBY3Rpb25zTGlzdC5sZW5ndGgtMTtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLkdldENvZGVzID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgIC8vIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUubG9hZGluZ0FjdGlvbnM9dHJ1ZTsgXHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuY29kZXNBY3Rpb25zLmNvZGVzQWN0aW9uc0xpc3QubGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCEkc2NvcGUuY29kZXNBY3Rpb25zLmNvZGVzRG93bmxvYWRlZClcclxuICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBUYXNrRGF0YVNlcnZpY2UuR2V0VGFza0NvZGVzQWN0aW9uc0J5TmFtZSgkc2NvcGUudGFza1VpZCxsYW5nLCRzY29wZS5kZWZhdWx0Q29kZSkudGhlbihmdW5jdGlvbihkYXRhKSB7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jb2Rlc0FjdGlvbnMuY29kZXNBY3Rpb25zTGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY29kZXNBY3Rpb25zLmNvZGVzRG93bmxvYWRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5maXJzdFRpbWU9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZpbGxUcmFuc2l0aW9uQ291bnRlcnMoJHNjb3BlLmNvZGVzQWN0aW9ucyk7ICAvL01JR09SXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZpbmRTZWxlY3RlZFRyYW5zaXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9hZGluZ0FjdGlvbnM9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvYWRpbmdBY3Rpb25zPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5maW5kU2VsZWN0ZWRUcmFuc2l0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvYWRpbmdBY3Rpb25zPWZhbHNlOyAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgLy9maW5kIHNlbGVjdGVkIHRyYW5zaXRpb25cclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmZpbmRTZWxlY3RlZFRyYW5zaXRpb249IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgIHZhciBmb3VuZD1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPCRzY29wZS5jb2Rlc0FjdGlvbnMuY29kZXNBY3Rpb25zTGlzdC5sZW5ndGg7aSsrKVxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5jb2Rlc0FjdGlvbnMuY29kZXNBY3Rpb25zTGlzdFtpXS52YWx1ZTEgPT0gJHNjb3BlLnN0YXR1c0Zyb20ubmFtZSAmJiAkc2NvcGUuY29kZXNBY3Rpb25zLmNvZGVzQWN0aW9uc0xpc3RbaV0udmFsdWUyID09ICRzY29wZS5zdGF0dXNUby5uYW1lICYmICFmb3VuZClcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgJHNjb3BlLmNvZGVzQWN0aW9ucy5jb2Rlc0FjdGlvbnNMaXN0LnB1c2goYW5ndWxhci5jb3B5KCRzY29wZS5jb2Rlc0FjdGlvbnMuY29kZXNBY3Rpb25zTGlzdE9yaWdpbmFsW2ldKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmNvZGVzQWN0aW9ucy5zZWxlY3RlZEFjdGlvbkluZGV4PWk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQ9dHJ1ZTtcclxuICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3VuZCkgJHNjb3BlLkFkZEFjdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNldHVwRHJhZ3VsYSgpO1xyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLiR3YXRjaCgnY29kZXNBY3Rpb25zLnNlbGVjdGVkVHJhbnNpdGlvbicsIGZ1bmN0aW9uKG5ld1ZhbHVlLG9sZFZhbHVlKXtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWUhPW9sZFZhbHVlIHx8ICRzY29wZS5maXJzdFRpbWUpXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIGlmICghISRzY29wZS5kZWZhdWx0Q29kZSlcclxuICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuR2V0Q29kZXNCeU5hbWUoKTtcclxuICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLkdldENvZGVzKCk7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgLy8gJHRpbWVvdXQoZnVuY3Rpb24oKXskc2NvcGUubG9hZGluZ0FjdGlvbnMubG9hZGluZz1mYWxzZTt9KTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAvKmVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvYWRpbmdBY3Rpb25zLmxvYWRpbmc9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIH0qL1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIGlmICghISRzY29wZS5kZWZhdWx0Q29kZSlcclxuICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5HZXRDb2Rlc0J5TmFtZSgpO1xyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIGVsc2V7ICBcclxuICAgICAgICAgICAgICAgICAgICRzY29wZS5HZXRDb2RlcygpO1xyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICB9XTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RDb2Rlc0RlZkFjdGlvbnMuaHRtbCcsXHJcbiAgICAgICAgICAgICAgc2NvcGU6e1xyXG4gICAgICAgICAgICAgICAgY29kZXM6ICc9JyxcclxuICAgICAgICAgICAgICAgIHNlbGVjdENvZGU6ICc9JyxcclxuICAgICAgICAgICAgICAgIGRlZmF1bHRDb2RlOiBcIkBcIixcclxuICAgICAgICAgICAgICAgIHRhc2s6IFwiPVwiLFxyXG4gICAgICAgICAgICAgICAgdGFza0lkOiBcIj0/XCIsXHJcblx0XHRcdFx0dGFza1VpZDogXCI9P1wiLFxyXG4gICAgICAgICAgICAgICAgYWN0aW9uc0xpc3Q6IFwiQFwiLFxyXG4gICAgICAgICAgICAgICAgY29kZXNBY3Rpb25zOiBcIj1cIixcclxuICAgICAgICAgICAgICAgIHN0YXR1c0Zyb206IFwiPVwiLFxyXG4gICAgICAgICAgICAgICAgc3RhdHVzVG86IFwiPVwiLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6Y29udHJvbGxlcixcclxuICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbn07XG4ndXNlIHN0cmljdCc7XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0Q29kZXNEZXRhaWxFZGl0ICgpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RDb2Rlc0RldGFpbEVkaXQuaHRtbCcsXHJcbiAgICAgICAgICAgICAgc2NvcGU6e1xyXG5cdFx0XHRcdGNvZGVJZCA6ICc9JyxcclxuXHRcdFx0XHRjb2Rlc0xpc3Q6ICc9JyxcclxuXHRcdFx0XHRzaG93SWNvbkFjdGl2ZTogJz0nLFxyXG5cdFx0XHRcdGZkOiAnPScsXHJcbiAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyOmZ1bmN0aW9uKCRzdGF0ZVBhcmFtcywkc3RhdGUsICRzY29wZSxUYXNrRGF0YVNlcnZpY2UsJHJvb3RTY29wZSxkcmFndWxhclNlcnZpY2UsdWlHcmlkQ29uc3RhbnRzLFByb2Nlc3NpbmdTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsQ29kZXNTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLCAkcSwgJHRpbWVvdXQpIFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgXHJcblx0XHQkc2NvcGUuQ1RSTE5BTUU9J2NvZGVzRGV0YWlsRWRpdCc7XHJcblx0XHQkc2NvcGUuaXNDb2xsYXBzZWQgID0gZmFsc2U7XHJcblx0XHQkc2NvcGUucGFnZVN0YXRlPXt9IC8vTUlHT1IgLSBzYW1vIGRhIHByb3JhZGkgR0VUUkVTT1VDRURFRlxyXG5cdFx0JHNjb3BlLnBhZ2luYXRpb25PcHRpb25zPXt9Ly9NSUdPUiAtIHNhbW8gZGEgcHJvcmFkaSBHRVRSRVNPVUNFREVGXHJcblx0XHQkc2NvcGUuc2hvd1RhYmxlQWN0aW9ucz10cnVlOy8vIE5lZWRlZCBieSBTbWFydFRhYmxlXHJcblx0XHQkc2NvcGUuc2VhcmNoSW5pdGlhdGVkID0gdHJ1ZVxyXG5cdFx0dmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcblx0XHQkc2NvcGUuY29kZXNEZXRhaWxzPVtdXHJcblx0XHRcclxuXHJcblx0XHQkc2NvcGUucmV0dXJuU3RhdGUgPSAkc3RhdGVQYXJhbXMucmV0dXJuU3RhdGVcclxuXHRcdGlmICgkc2NvcGUucmV0dXJuU3RhdGU9PT11bmRlZmluZWQgfHwgJHNjb3BlLnJldHVyblN0YXRlPT09JycpIHtcclxuXHRcdCAgICRzY29wZS5yZXR1cm5TdGF0ZT17c3RhdGU6e25hbWU6J2FwcC5uYXZiYXIuY29kZXMubGlzdCd9LExhYmVsOidSZXR1cm4gdG8gQ29kZXMgbGlzdCcscGFyYW1zOnt9fSBcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0XHJcblx0XHQkc2NvcGUuY29kZXNEZXRhaWxzID0gW11cclxuICAgICBcclxuXHJcblx0XHQkc2NvcGUuUmVzb3VyY2VTZWFyY2ggPSBmdW5jdGlvbihwYWdlKXtcclxuXHRcdFx0XHQkc2NvcGUuc2VhcmNoSW5pdGlhdGVkPWZhbHNlO1xyXG5cdFx0XHRcdCRzY29wZS5wYWdpbmF0aW9uT3B0aW9ucy50b3RhbEl0ZW1Db3VudD0wO1xyXG5cdFx0XHRcdGlmIChwYWdlIT11bmRlZmluZWQpICRzY29wZS5jdXJyZW50UGFnZT1wYWdlO1xyXG5cdFx0XHRcdCR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcblx0XHRcdFx0XHQkc2NvcGUuc2VhcmNoSW5pdGlhdGVkPXRydWU7XHJcblx0XHRcdFx0fSk7XHJcblx0XHQgfTtcclxuXHRcdCBcclxuXHRcdCBcclxuXHRcdCAkc2NvcGUucmV0dXJuVG9QcmV2aW91c1BhZ2UgPSBmdW5jdGlvbigpXHJcblx0XHRcdHtcclxuXHRcdFx0XHRcdGxldCBwYWdlID0gJHNjb3BlLnJldHVyblN0YXRlLnN0YXRlLm5hbWVcclxuXHRcdFx0XHRcdCRzdGF0ZS5nbyhwYWdlLCRzY29wZS5yZXR1cm5TdGF0ZS5wYXJhbXMpO1xyXG5cdFx0XHRcdCBcclxuXHRcdFx0fVxyXG4gIFxyXG4gICAgICAgICBcclxuICAgICRzY29wZS5jb2RlVHlwZUxpc3QgPSBbe2lkOjEsbmFtZTonU3lzdGVtJ30se2lkOjIsbmFtZTonVXNlcid9XSAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgIFxyXG4gICAgJHNjb3BlLnNhdmVDb2RlID0gZnVuY3Rpb24gKGlzVmFsaWQpIHtcclxuICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmFjdGl2aXR5LmFjdGl2aXR5TWVzc2FnZSA9IFByb2Nlc3NpbmdTZXJ2aWNlLnNldEFjdGl2aXR5TXNnKCdTYXZpbmcgY29kZSAnKyAkc2NvcGUuQ29kZUhlYWQuQ29kZXNIZWFkTGFuZ1swXS5Db2RlTmFtZSk7XHJcbiAgICAgICAgICAgICAgICBDb2Rlc1NlcnZpY2UuQ29kZXNQb3N0KCRzY29wZS5Db2RlSGVhZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEsJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICB9OyBcclxuXHJcbiAgIFxyXG4gICAgJHNjb3BlLnNldERpcmVjdGl2ZUZuID0gZnVuY3Rpb24oZGlyZWN0aXZlRm4pIHsgLy8gZGlyZWN0aXZlRm4gPT0gZ2V0Q29kZXNEZXRhaWxzKClcclxuICAgICAgICAvL2RlYnVnZ2VyIC8vc2V0RGlyZWN0aXZlRm4gXHJcbiAgICAgICAgJHNjb3BlLmRpcmVjdGl2ZUZuID0gZGlyZWN0aXZlRm47XHJcbiAgICB9O1xyXG5cclxuICAgICAkc2NvcGUuaXNDb2xsYXBzZWRFZGl0SXRlbSA9IGZhbHNlO1xyXG4gICAgIFxyXG4gICAgIFxyXG4gICAgJHNjb3BlLmVkaXRDb2RlSXRlbSA9IGZ1bmN0aW9uKClcclxuXHRcdHtcclxuICAgICAgICBcclxuICAgICAgICAvL3BvcHVsYXRlIGZyb20gZ3JpZFxyXG4gICAgICAgICRzY29wZS5jb2RlSXRlbUhlYWRlcj17VGV4dDogJ0VkaXQgY29kZSBpdGVtJyxUeXBlOidFZGl0J307XHJcbiAgICAgICAgIGlmICgkc2NvcGUuQ29kZXNEZXRhaWxMYW5nLkxhbmc9PXVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICRzY29wZS5Db2Rlc0RldGFpbExhbmcuTGFuZz0kc2NvcGUuQ29kZUhlYWRMYW5nLkxhbmc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICAkc2NvcGUuQ29kZXNEZXRhaWxMYW5nLkNyZWF0ZWRCeT1udWxsO1xyXG4gICAgICAgICAkc2NvcGUuQ29kZXNEZXRhaWxMYW5nLkNoYW5nZWRCeT1udWxsO1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5pc0NvbGxhcHNlZEVkaXRJdGVtID0gISRzY29wZS5pc0NvbGxhcHNlZEVkaXRJdGVtO1xyXG4gICAgICAgICAgICBcclxuICAgIH1cclxuICAgIFxyXG5cdCAgJHNjb3BlLkNvZGVzRGV0YWlsID0ge2NvZGVzZGV0YWlsbGFuZ19zZXQ6IFtdfTtcclxuXHQgICRzY29wZS5Db2Rlc0RldGFpbExhbmcgPXtDb2Rlc0RldGFpbElkOnt9fTsgXHJcblx0ICBcclxuICBcclxuICAgICAgJHNjb3BlLm5ld0NvZGVJdGVtID0gZnVuY3Rpb24oKXtcclxuICAgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLmNvZGVJdGVtSGVhZGVyPXtUZXh0OiAnTmV3IGNvZGUgaXRlbScsVHlwZTonTmV3J307XHJcbiAgICAgICAgICAgIC8vcG9wdWxhdGUgZnJvbSBncmlkXHJcbiAgICAgICAgICAgICRzY29wZS5pc0NvbGxhcHNlZEVkaXRJdGVtID0gISRzY29wZS5pc0NvbGxhcHNlZEVkaXRJdGVtO1xyXG4gICAgICAgICAgICAkc2NvcGUuQ29kZXNEZXRhaWxMYW5nLmlkPXVuZGVmaW5lZDtcclxuICAgICAgICAgICAgJHNjb3BlLkNvZGVzRGV0YWlsTGFuZy5MYW5nPSRzY29wZS5Db2RlSGVhZExhbmcuTGFuZztcclxuICAgICAgICAgICAgJHNjb3BlLkNvZGVzRGV0YWlsTGFuZy5Db2Rlc0RldGFpbElkLkNvZGVzSGVhZElkPSRzY29wZS5Db2RlSGVhZExhbmcuQ29kZXNIZWFkSWQ7XHJcbiAgICAgICAgfVxyXG4gICAgIFxyXG4gICAgJHNjb3BlLmVkaXRDb2RlTGFuZyA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgLy9wb3B1bGF0ZSBmcm9tIGdyaWRcclxuICAgICAgICAkc2NvcGUuaXNDb2xsYXBzZWRFZGl0TGFuZyA9ICEkc2NvcGUuaXNDb2xsYXBzZWRFZGl0TGFuZyBcclxuICAgIH1cclxuICAgICBcclxuICAgICRzY29wZS5zYXZlQ29kZUxhbmcgPSBmdW5jdGlvbihpZCkge1xyXG4gICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICAgICAgJHNjb3BlLmlzQ29sbGFwc2VkRWRpdExhbmcgPSAhJHNjb3BlLmlzQ29sbGFwc2VkRWRpdExhbmdcclxuICAgICAgICAgICAgQ29kZXNTZXJ2aWNlLkNvZGVzUG9zdCgkc2NvcGUuQ29kZUhlYWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkgeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5kYXRhMSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgIFxyXG4gICAgfVxyXG4gICAgIFxyXG4gICAgJHNjb3BlLmdldExpc3RPZkNvZGVzID0gZnVuY3Rpb24oKXtcclxuICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgQ29kZXNTZXJ2aWNlLkNvZGVzR2V0KGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkgeyAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGF0YTEgPSBkYXRhLmRhdGE7ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICBcclxuICAgIH1cclxuICAgIFxyXG4gXHJcbiAgICAkc2NvcGUuZ2V0TGlzdE9mQ29kZXMoKTtcclxuICAgIFxyXG4gICAgXHJcbiAgICAgICRzY29wZS5zYXZlQ29kZUl0ZW0gPSBmdW5jdGlvbiAoaXNWYWxpZCkge1xyXG4gICAgICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgICAgICAkc2NvcGUuQ29kZXNEZXRhaWxMYW5nLkNvZGVzRGV0YWlsSWQuU3RhdHVzID0gJ0FjdGl2ZSc7XHJcbiAgICAgICAgICAgICAgICBDb2Rlc1NlcnZpY2UuYWRkVXBkYXRlQ29kZXNEZXRhaWxzKCRzY29wZS5jb2RlSXRlbUhlYWRlci5UeXBlLCRzY29wZS5Db2Rlc0RldGFpbExhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEubXNnLCdzdWNjZXNzJyk7ICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuc2hvd0VkaXRDb2RlcyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5zaG93TGlzdENvZGVzID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5wb2themlNb2RhbCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjZXhhbXBsZU1vZGFsQycpLm1vZGFsKCdzaG93Jyk7ICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAkc2NvcGUuJHdhdGNoKCdjb2RlSWQnLCBmdW5jdGlvbiAobmV3VmFsdWUsIG9sZFZhbHVlLCBzY29wZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWUpICRzY29wZS5wb2themlNb2RhbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUudG9nZ2xlRWRpdENvZGVzID0gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2hvd0VkaXRDb2RlcyA9ICEkc2NvcGUuc2hvd0VkaXRDb2RlcyAgIFxyXG4gICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUudG9nZ2xlTGlzdENvZGVzID0gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2hvd0xpc3RDb2RlcyA9ICEkc2NvcGUuc2hvd0xpc3RDb2RlcyAgIFxyXG4gICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlbW92ZUNvZGUgPSBmdW5jdGlvbihpbmRleCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG5cdFx0XHRcdFx0XHQkc2NvcGUuY29kZXNEZXRhaWxzLnNwbGljZShpbmRleCwxKTtcclxuXHRcdFx0XHRcdCAgIGlmICgkc2NvcGU/LmZkPy5jb2RlTGlzdCkgXHQkc2NvcGUuZmQuY29kZUxpc3Quc3BsaWNlKGluZGV4LDEpO1xyXG5cdFx0XHRcdFx0ICAgaWYgKCRzY29wZT8uY29kZXNMaXN0KSBcdCRzY29wZS5jb2Rlc0xpc3Quc3BsaWNlKGluZGV4LDEpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUudW5zZWxlY3RSb3dzID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY29kZUlkPTA7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmNvZGVTZWxlY3RlZD1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZENvZGU9MCAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAkc2NvcGUuZ2V0Q29kZXNEZXRhaWxzID0gZnVuY3Rpb24oY29kZUlkLGNvZGVOYW1lKXtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jb2RlSWQgPSBjb2RlSWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jb2RlTmFtZSA9IGNvZGVOYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAkKCcjZXhhbXBsZU1vZGFsQycpLm1vZGFsKCdzaG93Jyk7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmNvZGVJZD4wKSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzRGV0YWlscygkc2NvcGUuY29kZUlkLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkgeyAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jb2Rlc0RldGFpbHMgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmNvZGVzTG9hZGVkID0gdHJ1ZTsgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2V4YW1wbGVNb2RhbEMnKS5tb2RhbCgnc2hvdycpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY29kZXNEZXRhaWxzLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY29kZXNMb2FkZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vIEtPUklTVEkgU0VcclxuICAgICAgICAgICAgICAgICAkc2NvcGUuc2F2ZUNvZGVzRGV0YWlscyA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdnZXJcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5jb2RlSWQ+MCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZXNTZXJ2aWNlLnNhdmVDb2Rlc0RldGFpbHMoJHNjb3BlLmNvZGVJZCwgJHNjb3BlLmNvZGVzTGlzdCwgbGFuZykudGhlbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jb2Rlc0RldGFpbHMgPSBkYXRhLmRhdGE7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmNvZGVzRGV0YWlscy5sZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuYWRkRW1wdHlDb2RlSXRlbSA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG5cdFx0XHRcdCAgdmFyIG4gPSAgICB7aWQ6bnVsbCxOYW1lOm51bGwsVmFsdWU6bnVsbCxBY3RpdmU6dHJ1ZSxDb2Rlc0RldGFpbExhbmc6W3tWYWx1ZTpudWxsLExhbmc6bGFuZ31dfVxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuXHRcdFx0XHQgIFxyXG5cdFx0XHRcdCAgICRzY29wZS5jb2Rlc0xpc3QucHVzaChuKVxyXG5cdFx0XHRcdCAgIFxyXG5cdFx0XHRcdCAgIFx0XHQkdGltZW91dChmdW5jdGlvbigpe1xyXG5cdFx0XHRcdFx0XHRcdHZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsY29udGFpbmVyJyk7XHJcblx0XHRcdFx0XHRcdFx0Y29udGFpbmVyLnNjcm9sbFRvcCA9IGNvbnRhaW5lci5zY3JvbGxIZWlnaHQ7IFxyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHQgIFxyXG5cdFx0XHRcdH1cclxuXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgaWYgKCRzY29wZS5jb2RlSWQ+MClcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5nZXRDb2Rlc0RldGFpbHMoKTtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5jb2RlSWQ9PTApICRzY29wZS5jb2Rlc0xvYWRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2UgJHNjb3BlLmNvZGVzTG9hZGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB9LC8vY29udHJvbGxlclxyXG4gICAgICAgICBcclxuICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgIH1cclxuICAgIH07XG4ndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBrdENvZGVzRGV0YWlsTGlzdCAoKSB7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXG4gICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdENvZGVzRGV0YWlsTGlzdC5odG1sJyxcbiAgICAgICAgICAgICAgLypzY29wZTp7XG4gICAgICAgICAgICAgICAgQ29kZUhlYWQgOiAnPScsXG4gICAgICAgICAgICAgICAgfSwqL1xuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ZnVuY3Rpb24oJHNjb3BlLENvZGVzU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlLFRhc2tEYXRhU2VydmljZSwkcm9vdFNjb3BlLCR0aW1lb3V0LGRyYWd1bGFyU2VydmljZSlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAkc2NvcGUuc2hvd0VkaXRDb2RlcyA9IGZhbHNlXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuc2hvd0xpc3RDb2RlcyA9IGZhbHNlXG4gICAgICAgICAgICAgICAgICBcblxuICAgICAgICAgICAgICAgICAgJHNjb3BlLnBva2F6aU1vZGFsID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjZXhhbXBsZU1vZGFsQycpLm1vZGFsKCdzaG93Jyk7ICAgICAgICAgXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAkc2NvcGUuJHdhdGNoKCdjb2RlSWQnLCBmdW5jdGlvbiAobmV3VmFsdWUsIG9sZFZhbHVlLCBzY29wZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlKSAkc2NvcGUucG9rYXppTW9kYWwoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vZGVidWdnZXIgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAkc2NvcGUudG9nZ2xlRWRpdENvZGVzID0gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNob3dFZGl0Q29kZXMgPSAhJHNjb3BlLnNob3dFZGl0Q29kZXMgICBcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgJHNjb3BlLnRvZ2dsZUxpc3RDb2RlcyA9IGZ1bmN0aW9uKCkgeyAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zaG93TGlzdENvZGVzID0gISRzY29wZS5zaG93TGlzdENvZGVzICAgXG4gICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlbW92ZUNvZGUgPSBmdW5jdGlvbihpbmRleCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwidGV4dFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmNvZGVzRGV0YWlscy5zcGxpY2UoaW5kZXgsMSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICRzY29wZS51bnNlbGVjdFJvd3MgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuZ3JpZEFwaTEuc2VsZWN0aW9uLmNsZWFyU2VsZWN0ZWRSb3dzKClcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY29kZUlkPTA7IFxuICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jb2RlU2VsZWN0ZWQ9ZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkQ29kZT0wXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgICAgJHNjb3BlLmdldENvZGVzRGV0YWlscyA9IGZ1bmN0aW9uKGNvZGVJZCxjb2RlTmFtZSl7XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmNvZGVJZCA9IGNvZGVJZDtcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jb2RlTmFtZSA9IGNvZGVOYW1lO1xuICAgICAgICAgICAgICAgICAgICAgJCgnI2V4YW1wbGVNb2RhbEMnKS5tb2RhbCgnc2hvdycpOyAgICBcbiAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5jb2RlSWQ+MCkgIHtcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzRGV0YWlscygkc2NvcGUuY29kZUlkLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkgeyAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY29kZXNEZXRhaWxzID0gZGF0YS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY29kZXNMb2FkZWQgPSB0cnVlOyAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2V4YW1wbGVNb2RhbEMnKS5tb2RhbCgnc2hvdycpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY29kZXNEZXRhaWxzLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmNvZGVzTG9hZGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgJHNjb3BlLnNhdmVDb2Rlc0RldGFpbHMgPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vZGVidWdnZXJcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmNvZGVJZD4wKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZXNTZXJ2aWNlLnNhdmVDb2Rlc0RldGFpbHMoJHNjb3BlLmNvZGVJZCwkc2NvcGUuY29kZXNEZXRhaWxzLGxhbmcpLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY29kZXNEZXRhaWxzID0gZGF0YS5kYXRhOyAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7ICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmNvZGVzRGV0YWlscy5sZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgJHNjb3BlLnNhdmVDb2RlSGVhZCA9IGZ1bmN0aW9uIChpc1ZhbGlkKSB7XG4gICAgICAgIC8vZGVidWdnZXJcbiAgICAgICAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgICAgICAgICAgIC8vJHNjb3BlLmFjdGl2aXR5LmFjdGl2aXR5TWVzc2FnZSA9IFByb2Nlc3NpbmdTZXJ2aWNlLnNldEFjdGl2aXR5TXNnKCdTYXZpbmcgY29kZSAnKyAkc2NvcGUuQ29kZUhlYWQuQ29kZXNIZWFkTGFuZ1swXS5Db2RlTmFtZSk7XG4gICAgICAgICAgICAgICAgQ29kZXNTZXJ2aWNlLkNvZGVzUG9zdCgkc2NvcGUuQ29kZUhlYWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEubXNnLCdzdWNjZXNzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgfVxuICAgICAgICB9OyBcblxuICAgXG5cbiAgICAgICAgICAgICAgICAkc2NvcGUuYWRkRW1wdHlDb2RlSXRlbSA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG4gICAgICAgICAgICAgICAgICAgJHNjb3BlLmNvZGVzRGV0YWlscy5wdXNoKHtpZDpudWxsLE5hbWU6bnVsbCxWYWx1ZTpudWxsLEFjdGl2ZTp0cnVlLENvZGVzRGV0YWlsTGFuZzpbe1ZhbHVlOm51bGwsTGFuZzpsYW5nfV19KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLy8kc2NvcGUuY29kZUNoYW5nZWQoe3RoZURpckZuOiAkc2NvcGUuZ2V0Q29kZXNEZXRhaWxzfSk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICBpZiAoJHNjb3BlLmNvZGVJZD4wKVxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ2V0Q29kZXNEZXRhaWxzKCk7XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5jb2RlSWQ9PTApICRzY29wZS5jb2Rlc0xvYWRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlICRzY29wZS5jb2Rlc0xvYWRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgfSxcbiAgICAgICAgIFxuICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgXG4gICAgICAgICAgICB9ICAgXG4gICAgICAgIH1cbiAgICB9O1xuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24ga3RDb2Rlc0Ryb3Bkb3duICAoKSB7XG4gICAgICAgICAgXG4gICAgICAgICAgdmFyIGNvbnRyb2xsZXIgPSBbJyRzY29wZScsICckc3RhdGVQYXJhbXMnLCckc3RhdGUnLCdDb2Rlc1NlcnZpY2UnLCdNZXNzYWdpbmdTZXJ2aWNlJywnVGFza0RhdGFTZXJ2aWNlJywnJHJvb3RTY29wZScsJyR0aW1lb3V0JywnZHJhZ3VsYXJTZXJ2aWNlJyxmdW5jdGlvbiAoJHNjb3BlLCRzdGF0ZVBhcmFtcywkc3RhdGUsQ29kZXNTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsVGFza0RhdGFTZXJ2aWNlLCRyb290U2NvcGUsJHRpbWVvdXQsZHJhZ3VsYXJTZXJ2aWNlKSB7XG4gICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuR2V0Q29kZXNCeU5hbWUgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcbiAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzQnlOYW1lKCRzY29wZS5jb2RlTmFtZSxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmNvZGVMaXN0ID0gZGF0YS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuc2VsZWN0ZWRDb2RlSWQhPXVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gJHNjb3BlLmNvZGVMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKCRzY29wZS5zZWxlY3RlZENvZGVJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuc2VsZWN0ZWRDb2RlVmFsdWUhPXVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gc2NvcGUuY29kZUxpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUudmFsdWU7IH0pLmluZGV4T2Yoc2NvcGUuc2VsZWN0ZWRDb2RlVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICovIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zPi0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZENvZGUgPSAkc2NvcGUuY29kZUxpc3RbcG9zXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgIFxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICRzY29wZS5HZXRDb2Rlcz0gZnVuY3Rpb24oKVxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgIENvZGVzU2VydmljZS5nZXRDb2Rlc0J5TmFtZSgkc2NvcGUuY29kZU5hbWUsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jb2RlTGlzdCA9IGRhdGEuZGF0YTtcbiAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICBcbiAgICAgICAgICAgICAgICAgICRzY29wZS5HZXRDb2Rlc0NsaWNrID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgLy9zY29wZS50YXNrLlRhc2tPdXRjb21lQ29kZUlkID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUuR2V0Q29kZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgJHNjb3BlLkdldENvZGVzQnlOYW1lQ2xpY2sgPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICAvL3Njb3BlLnRhc2suVGFza091dGNvbWVDb2RlSWQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuR2V0Q29kZXNCeU5hbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICBpZiAoISEkc2NvcGUuY29kZU5hbWUpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuR2V0Q29kZXNCeU5hbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuR2V0Q29kZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgIFxuICAgICAgICAgIFxuICAgICAgICAgIH1dO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcbiAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0Q29kZXNEcm9wZG93bi5odG1sJyxcbiAgICAgICAgICAgICAgc2NvcGU6e1xuICAgICAgICAgICAgICAgIC8vY29kZUxpc3Q6ICc9JyxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENvZGVJZDogJz0nLFxuICAgICAgICAgICAgICAgIGNvZGVJZDogXCI9XCIsXG4gICAgICAgICAgICAgICAgY29kZU5hbWU6IFwiQFwiLFxuICAgICAgICAgICAgICAgIHZhbHVlTGVuZ3RoOlwiQFwiLFxuICAgICAgICAgICAgICAgIGxhYmVsTGVuZ3RoOlwiQFwiLFxuICAgICAgICAgICAgICAgIG5hbWU6XCJAXCIsXG4gICAgICAgICAgICAgICAgbGFiZWw6XCJAXCIsXG4gICAgICAgICAgICAgICAgc2VhcmNoVGV4dDpcIkBcIixcbiAgICAgICAgICAgICAgICByZXF1aXJlZDpcIj1cIixcbiAgICAgICAgICAgICAgICBzaXplWHM6IFwiPVwiLFxuICAgICAgICAgICAgICAgIC8vZXJyb3JUZXh0OlwiQFwiLFxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgY29udHJvbGxlcjpjb250cm9sbGVyLFxuICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuc2VsZWN0ZWRDb2RlID09IHVuZGVmaW5lZCkgc2NvcGUuc2VsZWN0ZWRDb2RlPW51bGw7XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgIHNjb3BlLiR3YXRjaCgnc2VsZWN0ZWRDb2RlSWQnLGZ1bmN0aW9uKG5ld1ZhbHVlLCBvbGRWYWx1ZSl7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmNvZGVMaXN0IT11bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwb3MgPSBzY29wZS5jb2RlTGlzdC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZihzY29wZS5zZWxlY3RlZENvZGVJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3M+LTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuc2VsZWN0ZWRDb2RlID0gc2NvcGUuY29kZUxpc3RbcG9zXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgc2NvcGUuY2xlYXIgPSBmdW5jdGlvbihldmVudCxzZWxlY3RlZCl7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgIHNjb3BlLnNlbGVjdGVkQ29kZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICBzY29wZS5vblNlbGVjdFVuaXF1ZUNhbGxiYWNrID0gZnVuY3Rpb24gKGl0ZW0sIG1vZGVsKXtcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbSE9dW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBzY29wZS5zZWxlY3RlZENvZGUgPSBpdGVtO1xuICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnNlbGVjdGVkQ29kZUlkID0gaXRlbS5pZDtcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnNlbGVjdGVkQ29kZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5zZWxlY3RlZENvZGVJZD1udWxsO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbid1c2Ugc3RyaWN0JztcclxuXHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0RGF0YXNldE1hcHBlciAgKCkge1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3REYXRhc2V0TWFwcGVyLmh0bWwnLFxyXG4gICAgICAgICAgICAgc2NvcGU6e1xyXG4gICAgICAgICAgICAgICAgICAgICAgIGZkIDogXCI9XCIsXHJcbiAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24oJHNjb3BlLENvZGVzU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSxHcmlkc3RlclNlcnZpY2UsJHJvb3RTY29wZSxQcm9jZXNzaW5nU2VydmljZSxkcmFndWxhclNlcnZpY2UsJHRpbWVvdXQsQ09ERVNfQ09OU1QsTWVzc2FnaW5nU2VydmljZSlcclxuICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5mb3JtUHJpb3JpdHk9J2UnO1xyXG4gICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc3JjX3R5cGVfdGV4dD1DT0RFU19DT05TVC5fUE9QVUxBVEVfVFlQRV9ORVdfO1xyXG4gICAgICAgICAgICAgICRzY29wZS5mZC5SZWxhdGVkUG9wdWxhdGVUeXBlPTE7XHJcbiAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzPT11bmRlZmluZWQpICRzY29wZS5mZC5QYXJhbWV0ZXJzID17fTsgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUG9wdWxhdGVUeXBlIT1udWxsICYmICRzY29wZS5mZC5Qb3B1bGF0ZVR5cGUhPVwiXCIpXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdmFyIHBUeXBlID0gJHNjb3BlLmZkLlBvcHVsYXRlVHlwZTtcclxuICAgICAgICAgICAgICAgIHZhciBmb3JtUHJpb3JpdHkgPSBwVHlwZS50b1N0cmluZygpLnN1YnN0cigxLDEpO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLlJlbGF0ZWRQb3B1bGF0ZVR5cGU9cFR5cGUudG9TdHJpbmcoKS5zdWJzdHIoMCwxKTtcclxuICAgICAgICAgICAgICAgIGlmIChmb3JtUHJpb3JpdHk9PVwiaVwiIHx8IGZvcm1Qcmlvcml0eT09XCJlXCIpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZm9ybVByaW9yaXR5ID0gZm9ybVByaW9yaXR5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0hPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLnNyY190eXBlX3RleHQgPSAkc2NvcGUuZmQubG9jYWxWYXJzLnNyY190eXBlX3RleHRbJHNjb3BlLmZkLlJlbGF0ZWRQb3B1bGF0ZVR5cGVdO1xyXG4gICAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbSA9IHtzcmNfdHlwZV90ZXh0OiRzY29wZS5mZC5sb2NhbFZhcnMuc3JjX3R5cGVfdGV4dFskc2NvcGUuZmQuUmVsYXRlZFBvcHVsYXRlVHlwZV19O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2U9W107XHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0gIT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UucHVzaCgkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIC8vIE1JR09SIERPREFPIDIuNi4yMDIxLSBQUk9WSkVSSVRJIC1QT1BVTkkgTElTVFUgREVGSU5JQ0lKQSBPRCBSRVNVUlNBIChSRVNPVVJDRVMgTElTVClcclxuXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRSZXNvdXJjZXMgPSBmdW5jdGlvbihyZXNvdXJjZV90eXBlKSAge1x0XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmIChyZXNvdXJjZV90eXBlPT11bmRlZmluZWQpIHJlc291cmNlX3R5cGUgPSAkc2NvcGUuZmQuUGFyYW1ldGVycy5TZWxlY3RlZFJlc291cmNlVHlwZVxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VMaXN0PT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VMaXN0PVtdO1xyXG4gICAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUobGFuZyxyZXNvdXJjZV90eXBlKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZXRSZXNvdXJjZURkKCkgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblx0XHRcdFx0XHR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cdFx0JHNjb3BlLmZkLmxvY2FsVmFycy5zZXRSZXNvdXJjZURkID0gZnVuY3Rpb24oKXtcdFx0ICBcclxuICAgICAgICAgICAgbGV0IHRtcFJlc291cmNlSXRlbSA9ICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW1cclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUmVsYXRlZCE9dW5kZWZpbmVkICYmICRzY29wZS5mZC5SZWxhdGVkIT1udWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlTGlzdC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZigkc2NvcGUuZmQuUmVsYXRlZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3M+PTApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbSA9ICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VMaXN0W3Bvc11cclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZD10bXBSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWRcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdldFB1Ymxpc2hlZFJlc291cmNlcz1mdW5jdGlvbigpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnB1Ymxpc2hlZExvYWRlZD1mYWxzZVxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLkdldFB1Ymxpc2hlZFJlc291cmNlc0J5VHlwZUlkKCRzY29wZS5mZC5SZWxhdGVkLCdmb3JtJykudGhlbihcclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChkYXRhKSB7ICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnB1Ymxpc2hlZExvYWRlZD10cnVlXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9ICAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5HZXRQdWJsaXNoZWRSZXNvdXJjZXNCeVR5cGUgPSBmdW5jdGlvbihyZXNvdXJjZV90eXBlKSAge1x0XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmIChyZXNvdXJjZV90eXBlPT11bmRlZmluZWQpIHJlc291cmNlX3R5cGUgPSAkc2NvcGUuZmQuUGFyYW1ldGVycy5TZWxlY3RlZFJlc291cmNlVHlwZVxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0PT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0PVtdO1xyXG4gICAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vIHdlIGFyZSBpbiBidWlsZCBtb2RlLCBzbyB3ZSBzaG91bGQgaW52YWxpZGF0ZSBjYWhjZSAodXNlQ2FjaGUgaXMgZmFsc2UpICBUT0RPIC0gcHJvdmplcml0aSBkYSBsaSB0cmViYSBrb3Jpc2l0aSBjYWNoZVxyXG4gICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UHVibGlzaGVkUmVzb3VyY2VzQnlUeXBlKHJlc291cmNlX3R5cGUsJ2Zvcm0nLCBmYWxzZSkudGhlbihmdW5jdGlvbiAoZGF0YSkgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlciAgIC8vR2V0UHVibGlzaGVkUmVzb3VyY2VzQnlUeXBlICBcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0Lmxlbmd0aCA9IDA7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ3VsYXIuZXh0ZW5kKCRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0LCBkYXRhLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuZmQubG9jYWxWYXJzLnB1Ymxpc2hlZFJlc291cmNlTGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuUHVibGlzaGVkUmVzb3VyY2VJZCE9bnVsbCAmJiAkc2NvcGUuZmQuUGFyYW1ldGVycy5TZWxlY3RWZXJzaW9uRGlyZWN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZXRTZWxlY3RlZFJlc291cmNlKCRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgfSBcclxuICAgIFxyXG4gICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VMaXN0PT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VMaXN0PVtdXHJcbiAgICBpZiAoJHNjb3BlLmZkLlJlbGF0ZWQ9PXVuZGVmaW5lZCB8fCAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlTGlzdC5sZW5ndGg9PTApICAkc2NvcGUuZmQubG9jYWxWYXJzLmdldFJlc291cmNlcygkc2NvcGUuZmQuUGFyYW1ldGVycy5TZWxlY3RlZFJlc291cmNlVHlwZSlcclxuICAgIGVsc2UgJHNjb3BlLmZkLmxvY2FsVmFycy5zZXRSZXNvdXJjZURkKClcclxuICAgICAvKlxyXG4gICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLnB1Ymxpc2hlZFJlc291cmNlTGlzdD09dW5kZWZpbmVkIHx8ICRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0Lmxlbmd0aD09MCkge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5HZXRQdWJsaXNoZWRSZXNvdXJjZXNCeVR5cGUoKTtcclxuICAgICAgICB9XHJcbiAgICAqL1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmNoYW5nZVByaW9yaXR5PSBmdW5jdGlvbihmcCl7XHJcbiAgICAgICAgICAgICAkc2NvcGUuZmQuZm9ybVByaW9yaXR5ID1mcDsgXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuY29uZmlybT0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5BbmFseXRpY3MgPSBbXTsgICAvLyBSRU1PVkUgT0xEIFBBUkFNRVRFUlMgIChBbmFseXRpY3MuLi4uKVxyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLnNyY190eXBlX3RleHQgPSAkc2NvcGUuZmQubG9jYWxWYXJzLnNyY190eXBlX3RleHRbJHNjb3BlLmZkLlJlbGF0ZWRQb3B1bGF0ZVR5cGVdO1xyXG4gICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlBvcHVsYXRlVHlwZT0kc2NvcGUuZmQuUmVsYXRlZFBvcHVsYXRlVHlwZSskc2NvcGUuZmQuZm9ybVByaW9yaXR5O1xyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkID0gJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlBhcmFtZXRlcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICduYW1lX2NvbmZpcm1lZCc6ICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0/Lm5hbWVfY29uZmlybWVkXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhID0ge30gLy9kYXRhc2V0IGlzIGNoYW5nZWQgYW5kIGdyaWRPcHRpb25zIHNob3VsZCBiZSByZXNldD8/IFxyXG4gICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT0wO1xyXG4gICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLkdyaWRTdGF0ZSA9IHt9XHJcbiAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtX2M9JHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbVB1Ymxpc2hlZDsgXHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIC8vaWYgKCEkc2NvcGUuZmQuUGFyYW1ldGVycy5TZWxlY3RWZXJzaW9uRGlyZWN0KSBcclxuICAgICAgICAgICAgICAgICAgICAvL3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHB1Ymxpc2hlZCA9ICRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0WyRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0Lmxlbmd0aC0xXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHB1Ymxpc2hlZCE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtX2MgPSBwdWJsaXNoZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlSWQgPSBwdWJsaXNoZWQuaWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlVmVyc2lvbiA9IHB1Ymxpc2hlZC5WZXJzaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNldFNlbGVjdGVkUmVzb3VyY2UoJHNjb3BlLmZkLlBhcmFtZXRlcnMuUHVibGlzaGVkUmVzb3VyY2VJZClcclxuXHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgIC8vICAkc2NvcGUubG9jYWxWYXJzLnRvZ2dsZVByb3BlcnRpZXMoMCk7IC8vTUlHT1IgZG9kYW8gZGEgc2Ugc2FrcmlqZSBwcm9wZXJ0eSBrYWQgc3Rpc25lIHByb3pvciAsIFRPRE8gLSB0cmViYSBwb3R2cmRpdGkgZGEgc2UgbmVzdG8gcyB0aW1lIG5lIGt2YXJpXHJcbiAgICAgICAgICAgIH07XHJcblx0XHRcdFx0ICBcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLm9uU2VsZWN0UmVzb3VyY2VDYWxsYmFjayA9IGZ1bmN0aW9uIChpdGVtLCBtb2RlbCl7XHJcblxyXG4gICAgICAgICAgICAgICAgICBcdGxldCBldmVudFJlc3VsdElkPWl0ZW0uaWQ7XHJcbiAgICAgICAgICAgICAgICAgICBcdGxldCBldmVudFJlc3VsdE5hbWU9aXRlbS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBldmVudFJlc3VsdFBhcmVudEVsZW1lbnRJZCA9aXRlbS5wYXJlbnRFbGVtZW50SWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlJlbGF0ZWRQb3B1bGF0ZVR5cGUhPTEpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdldEZvcm1XaWRnZXRzKGl0ZW0uaWQsJHNjb3BlLmZkLlJlbGF0ZWRQb3B1bGF0ZVR5cGUpOyAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0qL1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5SZWxhdGVkPWl0ZW0uaWRcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZUlkPTBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdldFB1Ymxpc2hlZFJlc291cmNlcygpXHJcbiAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtID0ge2lkOmV2ZW50UmVzdWx0SWQsIG5hbWUgOiBldmVudFJlc3VsdE5hbWUscGFyZW50RWxlbWVudElkOmV2ZW50UmVzdWx0UGFyZW50RWxlbWVudElkLFZlcnNpb246aXRlbS5WZXJzaW9uLFJlc291cmNlRGVmSWQ6aXRlbS5SZXNvdXJjZURlZklkfTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMub25TZWxlY3RWZXJzaW9uQ2FsbGJhY2sgPSBmdW5jdGlvbiAoaXRlbSwgbW9kZWwpe1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtUHVibGlzaGVkID0gaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlSWQgPSBpdGVtLmlkXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlBhcmFtZXRlcnMuUHVibGlzaGVkUmVzb3VyY2VWZXJzaW9uID0gaXRlbS5WZXJzaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAgICAgICAgdmFyIGV2ZW50UmVzdWx0SWQ9aXRlbS5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgdmFyIGV2ZW50UmVzdWx0TmFtZT1pdGVtLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgIHZhciBldmVudFJlc3VsdFBhcmVudEVsZW1lbnRJZCA9aXRlbS5wYXJlbnRFbGVtZW50SWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgIGlmICggaXRlbS5pZCE9JHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5pZCAmJiAkc2NvcGUuZmQubG9jYWxWYXJzLnJlbGF0ZWRQb3B1bGF0ZVR5cGUhPTEgKVxyXG4gICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdldEZvcm1XaWRnZXRzKGl0ZW0uaWQsJHNjb3BlLmZkLlJlbGF0ZWRQb3B1bGF0ZVR5cGUpOyAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbSA9IHtpZDpldmVudFJlc3VsdElkLCBuYW1lIDogZXZlbnRSZXN1bHROYW1lLHBhcmVudEVsZW1lbnRJZDpldmVudFJlc3VsdFBhcmVudEVsZW1lbnRJZCxWZXJzaW9uOml0ZW0uVmVyc2lvbixSZXNvdXJjZURlZklkOml0ZW0uUmVzb3VyY2VEZWZJZH07XHJcbiAgICAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZXRTZWxlY3RlZFNvdXJjZSA9IGZ1bmN0aW9uKHNvdXJjZV9pZCl7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZV9pZD09LTEpXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUmVsYXRlZFBvcHVsYXRlVHlwZSA9ICczJztcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZm9ybVByaW9yaXR5ID0gJ2UnO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUmVsYXRlZFBvcHVsYXRlVHlwZSA9ICcyJztcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZm9ybVByaW9yaXR5ID0gc291cmNlX2lkLmZvcm1fdHlwZTtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuU3JjV2lkZ2V0SWQgPSBzb3VyY2VfaWQucGFyZW50RWxlbWVudElkO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2VfaWQudHlwZT09J3JsaXN0JykgJHNjb3BlLmZkLlJlbGF0ZWRQb3B1bGF0ZVR5cGUgPSAnNCc7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdldEZvcm1XaWRnZXRzID0gZnVuY3Rpb24ocmVzb3VyY2VfaWQpe1xyXG4gICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QcmVzZW50YXRpb25JZCA9PSB1bmRlZmluZWQgfHwgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT1udWxsKSAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9MDtcclxuICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5VdWlkUmVmID09IHVuZGVmaW5lZCB8fCAkc2NvcGUuZmQuVXVpZFJlZj09bnVsbCkgJHNjb3BlLmZkLlV1aWRSZWY9XCIwXCI7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBmb3JtVmVyc2lvbiA9ICRzY29wZS5nc3J2Yy5nZXRSZXNvdXJjZUZvcm1WZXJzaW9uKCRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VJZCskc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1UeXBlKVxyXG4gICAgICAgICAgICAgICAgICBpZiAoZm9ybVZlcnNpb24hPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldEZvcm1XaWRnZXRzKHJlc291cmNlX2lkLCRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VJZCwkc2NvcGUuZmQuVXVpZFJlZiwxLGxhbmcsZm9ybVZlcnNpb24/LlZlcnNpb24pLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmN1cnJlbnRSZXNvdXJjZUluaXRpYXRlID0gZGF0YS5kYXRhLmluaXRpYXRlX3dpZGdldHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmN1cnJlbnRSZXNvdXJjZUV4ZWN1dGUgPSBkYXRhLmRhdGEuZXhlY3V0ZV93aWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuY3VycmVudERvd25sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnByZXZpb3VzUmVzb3VyY2VJbml0aWF0ZSA9IGRhdGEuZGF0YS5pbml0aWF0ZV93aWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnByZXZpb3VzUmVzb3VyY2VFeGVjdXRlID0gZGF0YS5kYXRhLmV4ZWN1dGVfd2lkZ2V0cztcclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucHJldmlvdXNEb3dubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfWVsc2UgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdFcnJvciAtIEZvcm0gdmVyc2lvbiBpcyB1bmRlZmluZWQgaW4gZGF0YXNldCBtYXBwZXIgZGlyZWN0aXZlIChnZXRGb3JtV2lkZ2V0cyBmdW5jdGlvbiknLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgfTtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNldFBvcHVsYXRlTWV0aG9kPSBmdW5jdGlvbihwb3B1bGF0ZU1ldGhvZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5Qb3B1bGF0ZU1ldGhvZD1wb3B1bGF0ZU1ldGhvZDtcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9wdWxhdGVNZXRob2Q9PSdBJylcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtX2MhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpZD0kc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtX2MuaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZD09dW5kZWZpbmVkKSBpZD0kc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtX2MucmVsYXRlZElkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2lmIChpZCE9dW5kZWZpbmVkKSAkc2NvcGUuZmQubG9jYWxWYXJzLmdldEZvcm1XaWRnZXRzKCRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW1fYy5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2V0UG9wdWxhdGVNZXRob2QoJHNjb3BlLmZkLlBvcHVsYXRlTWV0aG9kKTtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNldFBvcHVsYXRlVHlwZT0gZnVuY3Rpb24ocG9wdWxhdGVUeXBlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlJlbGF0ZWRQb3B1bGF0ZVR5cGU9cG9wdWxhdGVUeXBlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRGb3JtV2lkZ2V0cygkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtX2MucmVsYXRlZElkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxufTtcbid1c2Ugc3RyaWN0JztcclxuXHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0RGF0YXNldE1hcHBlclBhcmVudCAoKSB7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXHJcbiAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0RGF0YXNldE1hcHBlclBhcmVudC5odG1sJyxcclxuICAgICAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbigkc2NvcGUsQ29kZXNTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSwkcm9vdFNjb3BlLFByb2Nlc3NpbmdTZXJ2aWNlLGRyYWd1bGFyU2VydmljZSwkdGltZW91dCxDT0RFU19DT05TVCxNZXNzYWdpbmdTZXJ2aWNlKXtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0gPT0gdW5kZWZpbmVkKSAkc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdPXt9XHJcbiAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5mb3JtUHJpb3JpdHlQYXJlbnQ9J2UnO1xyXG4gICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0uUGFyZW50U2VhcmNoUHJpb3JpdHk9J2QnO1xyXG4gICAgICAgICAgICAgICRzY29wZS5zcmNfdHlwZV90ZXh0X3BhcmVudD1DT0RFU19DT05TVC5fUE9QVUxBVEVfVFlQRV9ORVdfO1xyXG4gICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0uUG9wdWxhdGVUeXBlUGFyZW50TG9jYWw9MTtcclxuICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdLnJlc291cmNlTGlzdFBhcmVudERvd25sb2FkZWQ9ZmFsc2VcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGlmICgkc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdLlBvcHVsYXRlVHlwZVBhcmVudCE9bnVsbClcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcnBUeXBlID0gJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5Qb3B1bGF0ZVR5cGVQYXJlbnQ7XHJcbiAgICAgICAgICAgICAgICB2YXIgZm9ybVByaW9yaXR5UGFyZW50ID0gcnBUeXBlLnRvU3RyaW5nKCkuc3Vic3RyKDEsMSk7XHJcbiAgICAgICAgICAgICAgICB2YXIgcGFyZW50U2VhcmNoUHJpb3JpdHkgPSBycFR5cGUudG9TdHJpbmcoKS5zdWJzdHIoMiwxKTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0uUG9wdWxhdGVUeXBlUGFyZW50TG9jYWw9cnBUeXBlLnRvU3RyaW5nKCkuc3Vic3RyKDAsMSk7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoZm9ybVByaW9yaXR5UGFyZW50PT1cImlcIiB8fCBmb3JtUHJpb3JpdHlQYXJlbnQ9PVwiZVwiKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5mb3JtUHJpb3JpdHlQYXJlbnQgPSBmb3JtUHJpb3JpdHlQYXJlbnQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTZWFyY2hQcmlvcml0eT09XCJpXCIgfHwgcGFyZW50U2VhcmNoUHJpb3JpdHk9PVwiZFwiKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5QYXJlbnRTZWFyY2hQcmlvcml0eSA9IHBhcmVudFNlYXJjaFByaW9yaXR5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5zZWxlY3RlZFJlc291cmNlSXRlbVBhcmVudD17fVxyXG4gICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0uc2VsZWN0ZWRSZXNvdXJjZUl0ZW1QYXJlbnQuc3JjX3R5cGVfdGV4dF9wYXJlbnQgPSAkc2NvcGUuc3JjX3R5cGVfdGV4dF9wYXJlbnRbJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5Qb3B1bGF0ZVR5cGVQYXJlbnRdO1xyXG4gICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5yZXNvdXJjZUxpc3RQYXJlbnQ9W107XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAkc2NvcGUuU2V0U2VsZWN0ZWRSZXNvdXJjZVBhcmVudCA9IGZ1bmN0aW9uKGlkKSAge1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIHZhciBwb3MgPSAkc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdLnJlc291cmNlTGlzdFBhcmVudC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZihpZCk7XHJcblxyXG4gICAgICAgICAgICAgIGlmIChwb3M+PTApe1xyXG4gICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5zZWxlY3RlZFJlc291cmNlUGFyZW50ID0gJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5yZXNvdXJjZUxpc3RQYXJlbnRbcG9zXVxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5QYXJlbnRSZXNvdXJjZURlZklkID0gJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5zZWxlY3RlZFJlc291cmNlUGFyZW50LmlkXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdLnNlbGVjdGVkUmVzb3VyY2VJdGVtUGFyZW50LmlkID0gJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5yZXNvdXJjZUxpc3RQYXJlbnRbcG9zXS5pZDtcclxuICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0uc2VsZWN0ZWRSZXNvdXJjZUl0ZW1QYXJlbnQubmFtZSA9ICRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0ucmVzb3VyY2VMaXN0UGFyZW50W3Bvc10ubmFtZTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5zZWxlY3RlZFJlc291cmNlSXRlbVBhcmVudC5uYW1lX2NvbmZpcm1lZCA9ICRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0uc2VsZWN0ZWRSZXNvdXJjZUl0ZW1QYXJlbnQubmFtZSArJyAoJyskc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdLnNlbGVjdGVkUmVzb3VyY2VJdGVtUGFyZW50LmlkICsnKSdcclxuICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0uc2VsZWN0ZWRSZXNvdXJjZUl0ZW1QYXJlbnRfYz0kc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdLnNlbGVjdGVkUmVzb3VyY2VJdGVtUGFyZW50O1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLlNldFBvcHVsYXRlVHlwZVBhcmVudCgkc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdLlBvcHVsYXRlVHlwZVBhcmVudExvY2FsKVxyXG5cclxuICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0ucmVzb3VyY2VMaXN0UGFyZW50RG93bmxvYWRlZD0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcblx0XHRcdCAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgJHNjb3BlLnNldFNlbGVjdGVkU291cmNlUGFyZW50ID0gZnVuY3Rpb24oc291cmNlX2lkKXtcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBpZiAoc291cmNlX2lkPT0tMSlcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0uUG9wdWxhdGVUeXBlUGFyZW50TG9jYWwgPSAnMyc7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5mb3JtUHJpb3JpdHlQYXJlbnQgPSAnZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0uUG9wdWxhdGVUeXBlUGFyZW50TG9jYWwgPSAnMic7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5mb3JtUHJpb3JpdHlQYXJlbnQgPSBzb3VyY2VfaWQuZm9ybV90eXBlO1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0uU3JjUGFyZW50V2lkZ2V0SWQgPSAgc291cmNlX2lkLnBhcmVudEVsZW1lbnRJZDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlX2lkLnR5cGU9PSdybGlzdCcpICRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0uUG9wdWxhdGVUeXBlUGFyZW50TG9jYWwgPSAnNCc7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIH07IFxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgXHJcblxyXG5cdFx0IFxyXG5cdFx0XHQkc2NvcGUuZ2V0UmVzb3VyY2VQYXJlbnQgPSBmdW5jdGlvbigpICB7XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0aWYgKCRzY29wZS5mZC5FbGVtZW50VHlwZT09XCJ1cGxvYWRmaWxlXCIgfHwgJHNjb3BlLmZkLkVsZW1lbnRUeXBlPT1cInZpZXdcIiB8fCAkc2NvcGUuZmQuRWxlbWVudFR5cGU9PVwiYWRkXCIgfHwgJHNjb3BlLmZkLkVsZW1lbnRUeXBlPT1cInVwZGF0ZVwiKSB7XHJcblx0XHRcdFx0XHR2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdLnJlc291cmNlTGlzdFBhcmVudERvd25sb2FkZWQgPSBmYWxzZVxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdC8vIFBPUFVOSSBMSVNUVSBERUZJTklDSUpBIE9EIFJFU1VSU0EgIC0gIHBvdGVudGlhbCBwYXJlbnRzIFxyXG5cdFx0XHRcdFx0aWYgKCRzY29wZS5mZC5FbGVtZW50VHlwZT09XCJ1cGxvYWRmaWxlXCIpICRzY29wZS5mZC5QYXJlbnRSZXNvdXJjZURlZklkID0gICRzY29wZS5mZD8uUGFyYW1ldGVycz8ucnVsZXM/LlswXT8uZmlsZVR5cGU/LlJlc291cmNlRGVmVWlkXHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdGlmICggISAkc2NvcGUuZmQuUGFyZW50UmVzb3VyY2VEZWZJZCkgXHJcblxyXG5cdFx0XHRcdFx0XHRNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoJHNjb3BlLmZkLkVsZW1lbnRUeXBlICsgJywgdXVpZD0nICsgJHNjb3BlLmZkLlV1aWRSZWYgKyAnIC0gcGFyZW50IFJlc291cmNlIG5vdCBmb3VuZCcgLCdlcnJvcicpXHJcblx0XHRcdFx0XHRcdCBcclxuXHRcdFx0XHRcdGVsc2UgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0RXhpc3RpbmdSZXNvdXJjZVJlbGF0aW9uc2hpcHMoJHNjb3BlLmZkLlBhcmVudFJlc291cmNlRGVmSWQsIHRydWUpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHQkc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdLnJlc291cmNlTGlzdFBhcmVudCA9IGRhdGEuZGF0YTtcclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRpZiAoJHNjb3BlPy5mZD8ubG9jYWxWYXJzPy5sb2FkaW5nUGFyYW1zKSBcdCRzY29wZS5mZC5sb2NhbFZhcnMubG9hZGluZ1BhcmFtcz1mYWxzZVxyXG5cclxuXHRcdFx0XHRcdFx0XHRpZiAoJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5QYXJlbnRSZXNvdXJjZURlZklkIT1udWxsICYmICRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0uUGFyZW50UmVzb3VyY2VEZWZJZCE9dW5kZWZpbmVkKVxyXG5cdFx0XHRcdFx0XHQgICAgXHJcblx0XHRcdFx0XHRcdFx0XHQkc2NvcGUuU2V0U2VsZWN0ZWRSZXNvdXJjZVBhcmVudCgkc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdLlBhcmVudFJlc291cmNlRGVmSWQpO1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0JHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5yZXNvdXJjZUxpc3RQYXJlbnREb3dubG9hZGVkID0gdHJ1ZVxyXG5cdFx0XHRcdFx0XHRcdFxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRcdCAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG5cdFx0XHRcdCAgJHNjb3BlLmdldFJlc291cmNlUGFyZW50KCk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAkc2NvcGUuY2hhbmdlUHJpb3JpdHlQYXJlbnQ9IGZ1bmN0aW9uKGlkKXtcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5mb3JtUHJpb3JpdHlQYXJlbnQgPSBpZDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgJHNjb3BlLmNoYW5nZVBhcmVudFNlYXJjaFByaW9yaXR5PSBmdW5jdGlvbihpZCl7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdLlBhcmVudFNlYXJjaFByaW9yaXR5ID0gaWQ7XHJcbiAgICAgICAgICAgIH07ICAgICBcclxuICAgICAgICAgXHJcblx0XHQgJHNjb3BlLmNvbmZpcm1QYXJlbnQ9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIGlmICAoJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5zZWxlY3RlZFJlc291cmNlSXRlbVBhcmVudF9jIT11bmRlZmluZWQpe1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5QYXJlbnRSZXNvdXJjZURlZklkIT0kc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdLnNlbGVjdGVkUmVzb3VyY2VJdGVtUGFyZW50X2MuaWQgJiYgJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5Qb3B1bGF0ZVR5cGVQYXJlbnQhPW51bGwgJiYgJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5Qb3B1bGF0ZVR5cGVQYXJlbnQhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdLlBhcmVudFJlc291cmNlRGVmSWQ9JHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5zZWxlY3RlZFJlc291cmNlSXRlbVBhcmVudF9jLmlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5zZWxlY3RlZFJlc291cmNlSXRlbVBhcmVudC5uYW1lX2NvbmZpcm1lZCA9ICRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0uc2VsZWN0ZWRSZXNvdXJjZUl0ZW1QYXJlbnRfYy5uYW1lICsnICgnKyRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0uc2VsZWN0ZWRSZXNvdXJjZUl0ZW1QYXJlbnRfYy5pZCArJyknXHJcblxyXG4gICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0uc2VsZWN0ZWRSZXNvdXJjZUl0ZW1QYXJlbnQuc3JjX3R5cGVfdGV4dCA9ICRzY29wZS5zcmNfdHlwZV90ZXh0X3BhcmVudFskc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdLlBvcHVsYXRlVHlwZVBhcmVudExvY2FsXTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0uUG9wdWxhdGVUeXBlUGFyZW50PSRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0uUG9wdWxhdGVUeXBlUGFyZW50TG9jYWwrJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5mb3JtUHJpb3JpdHlQYXJlbnQrJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5QYXJlbnRTZWFyY2hQcmlvcml0eTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAvLyBGVU5DVElPTiBPTlNFTEVDVCBEQVRBU0VUIENBTExCQUNLXHJcbiAgICAgICAgICAgICAgJHNjb3BlLm9uU2VsZWN0UmVzb3VyY2VQYXJlbnRDYWxsYmFjayA9IGZ1bmN0aW9uIChpdGVtLCBtb2RlbCl7XHJcblx0XHRcdFx0ICBcclxuXHRcdFx0XHQgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgIFx0dmFyIGV2ZW50UmVzdWx0SWQ9aXRlbS5pZDtcclxuICAgICAgICAgICAgICAgICAgXHR2YXIgZXZlbnRSZXN1bHROYW1lPWl0ZW0ubmFtZTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZXZlbnRSZXN1bHRQYXJlbnRFbGVtZW50SWQgPWl0ZW0ucGFyZW50RWxlbWVudElkO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vaWYgKGl0ZW0uaWQhPSRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0uc2VsZWN0ZWRSZXNvdXJjZUl0ZW1QYXJlbnRfYz8uaWQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAvLyAkc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdLmxvY2FsVmFycy5nZXRGb3JtV2lkZ2V0c1BhcmVudChpdGVtLmlkLCRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0uUG9wdWxhdGVUeXBlUGFyZW50TG9jYWwpOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy99XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcdCAgJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5zZWxlY3RlZFJlc291cmNlSXRlbVBhcmVudF9jID0ge2lkOmV2ZW50UmVzdWx0SWQsIG5hbWUgOiBldmVudFJlc3VsdE5hbWUscGFyZW50RWxlbWVudElkOmV2ZW50UmVzdWx0UGFyZW50RWxlbWVudElkfTtcclxuXHRcdFx0XHQgIH0gZWxzZVxyXG5cdFx0XHRcdFx0XHQkc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdLnNlbGVjdGVkUmVzb3VyY2VJdGVtUGFyZW50X2M9bnVsbFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH0vL09OU0VMRUNUIERBVEFTRVQgQ0FMTEJBQ0tcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAkc2NvcGUuZ2V0Rm9ybVdpZGdldHNQYXJlbnQgPSBmdW5jdGlvbihyZXNvdXJjZV9pZCx0eXBlKXtcclxuICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0ubG9jYWxWYXJzLmZvcm1UeXBlPT11bmRlZmluZWQpICRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0ubG9jYWxWYXJzLmZvcm1UeXBlPVwiXCJcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdLlV1aWRSZWYgPT0gdW5kZWZpbmVkIHx8ICRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0uVXVpZFJlZj09bnVsbCkgJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5VdWlkUmVmPVwiMFwiO1xyXG4gICAgICAgICAgICAgICAgbGV0IGZvcm1WZXJzaW9uID0gJHNjb3BlLmdzcnZjLmdldFJlc291cmNlRm9ybVZlcnNpb24oJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5sb2NhbFZhcnMucmVzb3VyY2VJZCskc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdLmxvY2FsVmFycy5mb3JtVHlwZSlcclxuXHJcbiAgICAgICAgICAgICAgICAgaWYgKGZvcm1WZXJzaW9uIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0Rm9ybVdpZGdldHMocmVzb3VyY2VfaWQsJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5sb2NhbFZhcnMucmVzb3VyY2VJZCwkc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdLlV1aWRSZWYsMSxsYW5nLGZvcm1WZXJzaW9uLlZlcnNpb24pLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdLmxvY2FsVmFycy5jdXJyZW50VGFza0luaXRpYXRlRGF0YXNldHNQYXJlbnQgPSBkYXRhLmRhdGEuaW5pdGlhdGVfd2lkZ2V0cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5sb2NhbFZhcnMuY3VycmVudFRhc2tFeGVjdXRlRGF0YXNldHNQYXJlbnQgPSBkYXRhLmRhdGEuZXhlY3V0ZV93aWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdLmxvY2FsVmFycy5jdXJyZW50RG93bmxvYWRlZFBhcmVudCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgIH1lbHNlIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnRXJyb3IgLSBGb3JtIHZlcnNpb24gaXMgdW5kZWZpbmVkIGluIGRhdGFzZXQgbWFwcGVyIHBhcmVudCBkaXJlY3RpdmUgKGdldEZvcm1XaWRnZXRzUGFyZW50IGZ1bmN0aW9uKScsJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuU2V0UG9wdWxhdGVUeXBlUGFyZW50PSBmdW5jdGlvbihwb3B1bGF0ZVR5cGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5Qb3B1bGF0ZVR5cGVQYXJlbnRMb2NhbD1wb3B1bGF0ZVR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIC8qaWYgKCRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0uc2VsZWN0ZWRSZXNvdXJjZUl0ZW1QYXJlbnRfYyE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdLmxvY2FsVmFycy5nZXRGb3JtV2lkZ2V0c1BhcmVudCgkc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdLnNlbGVjdGVkUmVzb3VyY2VJdGVtUGFyZW50X2MuaWQsJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5Qb3B1bGF0ZVR5cGVQYXJlbnRMb2NhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAqLyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgJHNjb3BlLmdldERhdGFzZXRTb3VyY2VzPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJhZGlvID0gJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXS5Qb3B1bGF0ZVR5cGVQYXJlbnRMb2NhbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgIC8vJHNjb3BlLmdldERhdGFzZXRTb3VyY2VzKCk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbn07XG4ndXNlIHN0cmljdCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3REYXRhc2V0VG9EYXRhc2V0TWFwcGVyICgpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3REYXRhc2V0VG9EYXRhc2V0TWFwcGVyLmh0bWwnLFxyXG4gICAgICAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24gKCRzY29wZSwkc3RhdGUsQ29kZXNTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSwkcm9vdFNjb3BlLFByb2Nlc3NpbmdTZXJ2aWNlLGRyYWd1bGFTZXJ2aWNlLCR0aW1lb3V0LENPREVTX0NPTlNULE1lc3NhZ2luZ1NlcnZpY2UpXHJcblx0XHRcdCB7XHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlOyBcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLkNUUkw9J2t0RGF0YXNldFRvRGF0YXNldE1hcHBlcidcclxuICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5EYXRhc2V0TWFwcGluZyA9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLkRhdGFzZXRNYXBwaW5nID0gW107IFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLiRvbihcIiRkZXN0cm95XCIsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICAgICAgICAgICAgICAvL2RyYWd1bGFTZXJ2aWNlLmRlc3Ryb3koJHJvb3RTY29wZSwgZHJhZ3VsYV9iYWcpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE8gLSBDaGVjayBpcyBkcmFndWxhIGlzIHByb3Blcmx5IGRlc3Ryb3lpbmcgYmFncyAoaWYgbm90IC0gbWFudWFsbHkgZGVzdHJveSlcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgJHNjb3BlLmRhdGFzZXQxRmllbGRzID0gW107XHJcbiAgICAgICAgICAgICAgJHNjb3BlLmRhdGFzZXQyRmllbGRzID0gW107XHJcblx0XHRcdCAgXHJcblx0XHRcdCAgJHNjb3BlLnJlbW92ZSA9IGZ1bmN0aW9uKHNNYXAsIGluZGV4KVxyXG5cdFx0XHQgIHtcclxuXHRcdFx0XHQgIC8vZGVidWdnZXJcclxuXHRcdFx0XHQgICRzY29wZS5tYXBwaW5nTGlzdC5wdXNoKCAkc2NvcGUuZmQuRGF0YXNldE1hcHBpbmcuc3BsaWNlKGluZGV4LDEpWzBdKVxyXG5cdFx0XHQgIH1cclxuXHRcdFx0ICBcclxuXHRcdFx0ICAkc2NvcGUuc29ydExpc3QgPSBmdW5jdGlvbiAobGlzdCkge1xyXG5cdFx0XHRcdCBcclxuXHRcdFx0cmV0dXJuIGxpc3RcclxuXHRcdFx0XHQgaWYgKGxpc3Q/Lmxlbmd0aD09MCkge1xyXG5cdFx0XHRcdFx0IHJldHVybiBbe2lkOjB9XVxyXG5cdFx0XHRcdCB9IGVsc2UgcmV0dXJuIGxpc3RcclxuXHRcdFx0IH1cclxuXHRcdFx0IFxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgLy9pZiAoJHNjb3BlLmZkLnNlbGVjdGVkUGFja2FnZXM9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLnNlbGVjdGVkUGFja2FnZXM9W107XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5jb25maXJtRGF0YXNldDJEYXRhc2V0PSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvLyRzY29wZS5mZC5zZWxlY3RlZFBhY2thZ2VzID0kc2NvcGUuZmQubG9jYWxWYXJzLmdyaWRBcGkuc2VsZWN0aW9uLmdldFNlbGVjdGVkUm93cygpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLnNlbGVjdGVkUGFja2FnZXMhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLkRhdGFzZXRNYXBwaW5nID0gW107XHJcbiAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPCRzY29wZS5mZC5zZWxlY3RlZFBhY2thZ2VzLmxlbmd0aDtpKyspXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuRGF0YXNldE1hcHBpbmcucHVzaCgkc2NvcGUuZmQuc2VsZWN0ZWRQYWNrYWdlc1tpXSlcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICovXHJcbiAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuXHJcbiAgICAkc2NvcGUubWFwcGluZ1R5cGVzID0gW3tpZDoxLHZhbHVlOjEsbmFtZTonRml4ZWQnfSx7aWQ6Mix2YWx1ZToyLG5hbWU6J1RoaXMgcmVzb3VyY2UnfSx7aWQ6Myx2YWx1ZTozLG5hbWU6J1ByZXZpb3VzIHJlc291cmNlJ31dXHJcbiAgICAvKlxyXG4gICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzQnlOYW1lKCdkbXQnLGxhbmcpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICRzY29wZS5tYXBwaW5nVHlwZXMgPSBkYXRhLmRhdGE7XHJcbiAgICB9KTsqLyBcclxuICAgIC8vc2V0dXAgZHJhZ3VsYVxyXG4gICAgJHNjb3BlLnNldHVwRHJhZ3VsYSA9IGZ1bmN0aW9uKClcclxuICAgIHtcclxuICAgICAgICAgdmFyIHdpZGdldEhhbmRsZSA9IFwiZWxlbWVudC1kcmFnLWhhbmRsZVwiO1xyXG4gICAgICAgICB2YXIgYmFnID0gZHJhZ3VsYVNlcnZpY2UuZmluZCgkcm9vdFNjb3BlLCAnYmFnLXJlc291cmNlLW1hcHBpbmcnKTtcclxuICAgICAgICAgaWYgKGJhZykgZHJhZ3VsYVNlcnZpY2UuZGVzdHJveSgkcm9vdFNjb3BlLCAnYmFnLXJlc291cmNlLW1hcHBpbmcnKTtcclxuICAgICAgICAgXHJcbiAgICAgICAgIGRyYWd1bGFTZXJ2aWNlLm9wdGlvbnMoJHJvb3RTY29wZSwgJ2JhZy1yZXNvdXJjZS1tYXBwaW5nJywge1xyXG4gICAgICAgICAgICAgICAgICAgICAgIHJldmVydE9uU3BpbGw6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlT25TcGlsbDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAvKiBjb3B5OmZ1bmN0aW9uIChlbCxzb3VyY2Upe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5pZD09J3Jlc291cmNlMS1tYXBwaW5nJztcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAvL2RpcmVjdGlvbjondmVydGljYWwnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdHM6ZnVuY3Rpb24gKGVsLHRhcmdldCwgc291cmNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5pZCE9J3Jlc291cmNlMS1tYXBwaW5nJztcclxuICAgICAgICAgICAgICAgICAgICAgICB9LCovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgbW92ZXM6IGZ1bmN0aW9uIChlbCwgY29udGFpbmVyLCBoYW5kbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZS5jbGFzc0xpc3QuY29udGFpbnMod2lkZ2V0SGFuZGxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICB9KTsgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgfTtcclxuICAgICAgICBcclxuICAgICAgICAvLyBQT1BVTkkgTElTVFUgREVGSU5JQ0lKQSBPRCBSRVNVUlNBIChSRVNPVVJDRVMgTElTVClcclxuXHRcdCRzY29wZS5mZC5sb2NhbFZhcnMuZ2V0RGF0YXNldHMgPSBmdW5jdGlvbigpICB7XHJcblx0XHRcdFxyXG4gICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUobGFuZywnZGF0YXNldCcpLnRoZW4oXHJcblx0XHRcdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIHtcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHQkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCRzY29wZS5kYXRhc2V0TGlzdCk7XHJcblx0XHRcdFx0IFxyXG5cdFx0XHRcdFx0XHRcdH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCB9KTtcclxuXHRcdFx0XHRcdH07XHJcbiAgICAgJHNjb3BlLmdldERhdGFzZXRNYXBwaW5ncyA9IGZ1bmN0aW9uIChkYXRhc2V0SWQpIHtcclxuICAgIFxyXG4gICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICBcclxuICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0RGF0YXNldE1hcHBpbmdzKGRhdGFzZXRJZCxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5kYXRhc2V0MkZpZWxkcyA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2V0dXBEcmFndWxhKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhdGFzZXQxTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9OyAgIFxyXG5cclxuICAgICAkc2NvcGUuZ2V0UmVzb3VyY2VGaWVsZHMgPSBmdW5jdGlvbiAoaXRlbSx0eXBlKSB7XHJcbiAgICBcclxuICAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgXHJcbiAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRmllbGRzKGl0ZW0uRGF0YXNldDEuaWQsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGU9PTEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhdGFzZXQxRmllbGRzID0gZGF0YS5kYXRhO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhdGFzZXQyRmllbGRzID0gZGF0YS5kYXRhO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ2V0RGF0YXNldE1hcHBpbmdzKGl0ZW0uaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2hvd01hcHBpbmdEZXRhaWxzRm4gPSBmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgIC8qXHJcbiAgICAgICAgJHNjb3BlLmRhdGFzZXQxTG9hZGVkPWZhbHNlO1xyXG4gICAgICAgIGlmICgkc2NvcGUuZGF0YXNldDFGaWVsZHMhPXVuZGVmaW5lZCkgJHNjb3BlLmRhdGFzZXQxRmllbGRzLmxlbmd0aD0wO1xyXG4gICAgICAgIGlmICgkc2NvcGUuZGF0YXNldDJGaWVsZHMhPXVuZGVmaW5lZCkgJHNjb3BlLmRhdGFzZXQyRmllbGRzLmxlbmd0aD0wO1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5zZWxlY3RlZERhdGFzZXQxID0ge2lkOml0ZW0uRGF0YXNldDEuaWQsbmFtZTogaXRlbS5EYXRhc2V0MS5yZXNvdXJjZWRlZmxhbmdfc2V0WzBdLk5hbWV9O1xyXG4gICAgICAgICRzY29wZS5zZWxlY3RlZERhdGFzZXQyID0ge2lkOml0ZW0uRGF0YXNldDIuaWQsbmFtZTogaXRlbS5EYXRhc2V0Mi5yZXNvdXJjZWRlZmxhbmdfc2V0WzBdLk5hbWV9O1xyXG4gICAgICAgICRzY29wZS5nZXRSZXNvdXJjZUZpZWxkcyhpdGVtLDEpO1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS50bXBNYXBwaW5nRmllbGRzPXt9XHJcbiAgICAgICAgJHNjb3BlLnRtcE1hcHBpbmdGaWVsZHMuZGF0YXNldDE9JHNjb3BlLnNlbGVjdGVkRGF0YXNldDE7XHJcbiAgICAgICAgJHNjb3BlLnRtcE1hcHBpbmdGaWVsZHMuZGF0YXNldDI9JHNjb3BlLnNlbGVjdGVkRGF0YXNldDI7XHJcbiAgICAgICAgJHNjb3BlLnRtcE1hcHBpbmdGaWVsZHMubWFwcGluZ1R5cGU9IHtpZDppdGVtLk1hcHBpbmdUeXBlLmlkLG5hbWU6aXRlbS5NYXBwaW5nVHlwZS5WYWx1ZSx2YWx1ZTppdGVtLk1hcHBpbmdUeXBlLk5hbWV9OyAgXHJcbiAgICAgICAgJHNjb3BlLnRtcE1hcHBpbmdGaWVsZHMubWFwcGluZ0Rpc3BsYXlOYW1lPWl0ZW0uRGF0YXNldE1hcHBpbmdIZWFkTGFuZ19kYXRhc2V0bWFwcGluZ2hlYWRpZFswXS5OYW1lXHJcbiAgICAgICAgJHNjb3BlLnRtcE1hcHBpbmdGaWVsZHMubWFwcGluZ05hbWU9aXRlbS5NYXBwaW5nTmFtZTtcclxuICAgICAgIFxyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2hvd01hcHBpbmdEYXRhKGl0ZW0pO1xyXG4gICAgICAgICovXHJcbiAgICBcclxuICAgIH07XHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93TWFwcGluZ0RhdGEgPSBmdW5jdGlvbiAoc2VsZWN0ZWRSZXNvdXJjZSkge1xyXG4gICAgICAgIFxyXG5cclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dNYXBwaW5nRGV0YWlscz10cnVlO1xyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2hvd01hcHBpbmdOYW1lPXRydWU7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgaWYgKHNlbGVjdGVkUmVzb3VyY2U9PWZhbHNlIHx8IHNlbGVjdGVkUmVzb3VyY2U9PXVuZGVmaW5lZCkgXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAkc2NvcGUubWFwcGluZ0ZpZWxkcz17fTtcclxuICAgICAgICAgICAgICRzY29wZS5zYXZlRGF0YXNldE1hcHBpbmdIZWFkU3RhdHVzPSdjcmVhdGVNYXBwaW5nJztcclxuICAgICAgICAgIH0gZWxzZSAgXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgJHNjb3BlLnNhdmVEYXRhc2V0TWFwcGluZ0hlYWRTdGF0dXM9J3VwZGF0ZU1hcHBpbmcnO1xyXG4gICAgICAgICAgICAgICRzY29wZS5tYXBwaW5nRmllbGRzPSAkc2NvcGUudG1wTWFwcGluZ0ZpZWxkcztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdldERhdGFzZXRzKCk7Ly9wdW5pIGRhdGFzZXRMaXN0XHJcbiAgICAgICAgIHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgIENvZGVzU2VydmljZS5nZXRDb2Rlc0J5TmFtZSgnZG10JyxsYW5nKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5jb2RlTGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLm1hcHBpbmdUeXBlTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSk7IFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nb3RvTWFwcGluZyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICRzdGF0ZS5nbygnYXBwLm5hdmJhci5yZXNvdXJjZXMuZGF0YXNldC10cmFuc2Zvcm0nKVxyXG4gICAgICAgIH1cclxuICAgICAgICAkc2NvcGUucmVtb3ZlU2VsZWN0ZWRNYXBwaW5ncz0gIGZ1bmN0aW9uKClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGxldCBwb3M7XHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUuZmQ/LkRhdGFzZXRNYXBwaW5nKVxyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wO2k8JHNjb3BlLmZkLkRhdGFzZXRNYXBwaW5nLmxlbmd0aDtpKyspXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5EYXRhc2V0TWFwcGluZ1tpXSE9PXVuZGVmaW5lZCAmJiAkc2NvcGUuZmQuRGF0YXNldE1hcHBpbmdbaV0hPT1udWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zICA9ICRzY29wZS5tYXBwaW5nTGlzdC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZigkc2NvcGUuZmQuRGF0YXNldE1hcHBpbmdbaV0uaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubWFwcGluZ0xpc3Quc3BsaWNlKHBvcywxKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgICRzY29wZS5yZW1vdmVJdGVtPSAgZnVuY3Rpb24ocGluZGV4LGluZGV4KVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgJHNjb3BlLmRhdGFzZXQyRmllbGRzW3BpbmRleF0uZmllbGRzLnNwbGljZShpbmRleCwxKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgICRzY29wZS5jYW5jZWxNYXBwaW5nID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAkc2NvcGUuc2F2ZURhdGFzZXRNYXBwaW5nSGVhZFN0YXR1cz0nQ2FuY2VsT3JJbml0JztcclxuICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93TWFwcGluZ0RldGFpbHM9ZmFsc2U7XHJcbiAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2hvd01hcHBpbmdOYW1lPWZhbHNlO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRNYXBwaW5nUGFja2FnZXMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICBcclxuICAgICAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgdmFyIGZyb21EcyA9IDA7XHJcbiAgICAgICAgICAgIHZhciB0b0RzID0gJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbT8uaWQ7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldE1hcHBpbmdQYWNrYWdlcyhmcm9tRHMsdG9EcyxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubWFwcGluZ0xpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucmVtb3ZlU2VsZWN0ZWRNYXBwaW5ncygpO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLm1hcHBpbmdzTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuc2V0dXBEcmFndWxhKCk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdldE1hcHBpbmdQYWNrYWdlcygpOyAgIFxyXG4gICAgfSxcclxuXHJcbiAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XHJcbiAgICAgICAgICAgICBcclxuICAgIH1cclxuICB9ICAgICAgXHJcbn07XG4ndXNlIHN0cmljdCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3REYXRlICgpIHtcclxuXHJcblx0dmFyIGRhdGVQaWNrZXJDdHJsID0gWyckc2NvcGUnLCckcm9vdFNjb3BlJywnR3JpZHN0ZXJTZXJ2aWNlJywnQ29kZXNTZXJ2aWNlJywnJGNvbXBpbGUnLCckZWxlbWVudCcsJyR0ZW1wbGF0ZUNhY2hlJywgXHJcblx0XHRmdW5jdGlvbiAoJHNjb3BlLCRyb290U2NvcGUsR3JpZHN0ZXJTZXJ2aWNlLENvZGVzU2VydmljZSwkY29tcGlsZSwkZWxlbWVudCwkdGVtcGxhdGVDYWNoZSkge1xyXG4gICAgICAgIFxyXG5cdFx0Ly9kZWJ1Z2dlclxyXG5cdFx0JHNjb3BlLiRyb290U2NvcGUgPSRyb290U2NvcGVcclxuXHRcdC8vY29udmVydCBzdHJpbmcgZGF0ZXMgdG8ganNcclxuXHRcdGlmICgkc2NvcGUuZmQuU2VhcmNoKSB7XHJcblx0XHRcdGlmICgkc2NvcGUuZmQuU2VhcmNoLmJldHdlZW4xKSAgJHNjb3BlLmZkLlNlYXJjaC5iZXR3ZWVuMT0gbmV3IERhdGUoJHNjb3BlLmZkLlNlYXJjaC5iZXR3ZWVuMSApXHJcblx0XHRcdGlmICgkc2NvcGUuZmQuU2VhcmNoLmJldHdlZW4yKSAgJHNjb3BlLmZkLlNlYXJjaC5iZXR3ZWVuMj0gbmV3IERhdGUoJHNjb3BlLmZkLlNlYXJjaC5iZXR3ZWVuMiApXHJcblx0XHRcdGlmICgkc2NvcGUuZmQuU2VhcmNoLnZhbHVlKSAgXHQkc2NvcGUuZmQuU2VhcmNoLnZhbHVlPSBuZXcgRGF0ZSgkc2NvcGUuZmQuU2VhcmNoLnZhbHVlKVx0XHJcblx0XHR9XHJcblx0XHJcblx0XHRsZXQgaXRlbVZhbHVlID0gbnVsbDtcclxuICAgICAgICBcclxuXHRcdGlmICgkc2NvcGUuZm9ybURhdGEhPXVuZGVmaW5lZCkge1xyXG5cdFx0XHRpZiAoJHNjb3BlLmZvcm1EYXRhLmxlbmd0aD09MClcdFxyXG5cdFx0XHRcdFx0XHQkc2NvcGUuZm9ybURhdGE9W3t9XTtcclxuXHRcdFx0aXRlbVZhbHVlPSRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSAgICAgIFxyXG5cdFx0fSAgZWxzZSAgXHJcblx0XHRcdCRzY29wZS5mb3JtRGF0YT1be31dO1xyXG5cdFx0XHJcblx0XHQvL3NldCBGb3JtRGF0YSAgdmFsdWVzXHJcblx0XHRpZiAoJHNjb3BlLmZkLlNlYXJjaCkge1xyXG5cdFx0XHRpZiAoJHNjb3BlLmZkLlNlYXJjaC52YWx1ZSkgICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXT0gbmV3IERhdGUoJHNjb3BlLmZkLlNlYXJjaC52YWx1ZSlcdFxyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHQkc2NvcGUubXlzY29wZSA9ICRzY29wZVx0XHJcblx0XHQkc2NvcGUuQ1RSTCA9ICRzY29wZS5DVFJMICArICc6a3RkYXRlJ1xyXG5cdFx0JHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlO1xyXG5cdFx0JHNjb3BlLmZkLmxvY2FsVmFycyA9IHt9ICAgICAgICBcclxuXHRcdCRzY29wZVskc2NvcGUuZmQuaWRdICA9IHsnZmQnOiAkc2NvcGUuZmQsICdsb2NhbHZhcnMnOiRzY29wZS5mZC5sb2NhbFZhcnN9XHJcblxyXG5cdFx0aWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzTGFuZz09dW5kZWZpbmVkIHx8ICRzY29wZS5mZC5QYXJhbWV0ZXJzTGFuZz09bnVsbCkgXHJcblx0XHRcdFx0JHNjb3BlLmZkLlBhcmFtZXRlcnNMYW5nPXt9O1xyXG5cdFx0XHJcblx0XHQkc2NvcGUuZmQuaXNPcGVuPWZhbHNlO1xyXG4gICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzPT11bmRlZmluZWQpIFxyXG5cdFx0XHRcdCRzY29wZS5sb2NhbFZhcnM9e307XHJcblx0XHRcdFxyXG5cdFx0JHNjb3BlLmZkLmxvY2FsVmFycy5zZWFyY2ggPSBbXHJcblx0XHRcdHtpZDoxLGZpbHRlcjonZ3QnLGNvZGVfbmFtZTonZ3RlX2RhdGUnLG5hbWU6XCJGcm9tIGRhdGVcIixpY29uOlwiZmEgZmEtY2hldnJvbi1yaWdodFwifSxcclxuXHRcdFx0e2lkOjIsZmlsdGVyOidsdCcsY29kZV9uYW1lOidsdGVfZGF0ZScsbmFtZTpcIlRvIGRhdGVcIixpY29uOlwiZmEgZmEtY2hldnJvbi1sZWZ0XCJ9LFxyXG5cdFx0XHR7aWQ6MyxmaWx0ZXI6J2VxJyxjb2RlX25hbWU6J2VxX2RhdGUnLG5hbWU6XCJFeGFjdCBkYXRlXCIsaWNvbjpcImZhIGZhLWJhcnNcIn0sXHJcblx0XHRcdHtpZDo0LGZpbHRlcjonYmV0d2VlbicsY29kZV9uYW1lOidiZXR3ZWVuX2RhdGUnLG5hbWU6XCJCZXR3ZWVuIDxkYXRlMT4gYW5kIDxkYXRlMj5cIixpY29uOlwiZmEgZmEtZXhwYW5kXCJ9XHJcblx0XHRdO1xyXG5cdFxyXG5cclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnByb2Nlc3NGaWx0ZXJzID0gZnVuY3Rpb24oZmlsdGVyTGlzdClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDtpPCRzY29wZVskc2NvcGUuZmQuaWRdWydmZCddLmxvY2FsVmFycy5zZWFyY2gubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvcyA9IGZpbHRlckxpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoJHNjb3BlWyRzY29wZS5mZC5pZF1bJ2ZkJ10ubG9jYWxWYXJzLnNlYXJjaFtpXS5jb2RlX25hbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHBvcz49MCkgJHNjb3BlWyRzY29wZS5mZC5pZF1bJ2ZkJ10ubG9jYWxWYXJzLnNlYXJjaFtpXS5uYW1lID0gZmlsdGVyTGlzdFtwb3NdLm5hbWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5TZWFyY2g9PT11bmRlZmluZWQgfHwgJHNjb3BlLmZkLlNlYXJjaD09PW51bGwpICAgJHNjb3BlLmZkLlNlYXJjaD0kc2NvcGVbJHNjb3BlLmZkLmlkXVsnZmQnXS5sb2NhbFZhcnMuc2VhcmNoWzJdOy8vaW5pdGlhbGl6ZSB0byBlcXVhbHNcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5TZWFyY2gpICAkc2NvcGUuZmQuU2VhcmNoLnZhbHVlPSAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV07IFxyXG4gICAgICAgICAgICAkc2NvcGVbJHNjb3BlLmZkLmlkXVsnZmQnXS5sb2NhbFZhcnMuZmlsdGVyUmVhZHk9dHJ1ZVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCRzY29wZS5zaG93U2VhcmNoRmlsdGVycyB8fCAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fZGVmaW5pdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICAgICAgICBDb2Rlc1NlcnZpY2UuZ2V0Q29kZXNCeU5hbWUoJ3NlYXJjaF9maWx0ZXJzJyxsYW5nKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuZmQubG9jYWxWYXJzLnByb2Nlc3NGaWx0ZXJzKGRhdGEuZGF0YSkgLy8gQlVHIFRPRE9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlWyRzY29wZS5mZC5pZF1bJ2ZkJ10ubG9jYWxWYXJzLnByb2Nlc3NGaWx0ZXJzKGRhdGEuZGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdnZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblx0XHQgIFxyXG5cclxuICAgICAgICBcclxuICAgIGxldCBpdGVtVmFsdWVTdGF0ZT0gJHNjb3BlLmtzbS5hZGRTdWJqZWN0KCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZV9zdGF0ZV9pZCsnLWJvb2xWYWx1ZVN0YXRlTmFtZScrJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLGl0ZW1WYWx1ZSk7XHJcbiAgICBsZXQgaXRlbVZhbHVlU3RhdGVOYW1lID0gaXRlbVZhbHVlU3RhdGUuc3ViamVjdC5uYW1lO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgbGV0IHZhbHVlX2NoYW5nZWQgPSBmdW5jdGlvbihkYXRhKVxyXG4gICAge1xyXG4gICAgICAgICAgICBpdGVtVmFsdWVTdGF0ZS5zdWJqZWN0LnNldFN0YXRlQ2hhbmdlcyA9IGRhdGE7XHJcbiAgICAgICAgICAgIGl0ZW1WYWx1ZVN0YXRlLnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKFwidmFsdWVDaGFuZ2VkXCIpO1xyXG4gICAgfTtcclxuICAgICAgICBcclxuICAgIGxldCBhY3Rpb25fdmFsdWVfY2hhbmdlZCA9ICRzY29wZS5rc20uYWRkQWN0aW9uKGl0ZW1WYWx1ZVN0YXRlLFwidmFsdWVDaGFuZ2VkXCIsdmFsdWVfY2hhbmdlZCk7XHJcbiAgICAgICBcclxuXHQgICBcclxuXHQgICBcclxuICAgICRzY29wZS5mZC5vbl9jaGFuZ2VfYWN0aW9uPWZ1bmN0aW9uKClcclxuICAgIHsgICAgIFxyXG5cdFx0Ly9kZWJ1Z2dlciAvL29uX2NoYW5nZV9hY3Rpb25cdFx0XHJcblx0XHRcclxuXHRcdGlmICgkc2NvcGUuJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRBcHAudWlkIT1cIjMyM18xXCIpIC8vb25seSBpbiBleGVjdXRlIG1vZGVcclxuXHRcdFx0aWYgKCAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0gPT0gbnVsbCkgXHQkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0gPScnIC8vIGFmdGVyIGNsZWFyaW5nIHRoZSBkYXRlIG9uIHRoZSBmb3JtLCB0aGUgZGF0ZSBtdXN0IGJlICcnIGluc3RlYWQgXCJudWxsXCJcclxuXHRcdCBcclxuICAgICAgICBpZiAoJHNjb3BlLmZkLkRidHlwZT09PVwiZGF0ZWZpZWxkZGVmaW5pdGlvblwiICYmICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSkge1xyXG4gICAgICAgICAgICAgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdLnNldEhvdXJzKDEyLDAsMCwwKTsgICAgICAgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbihpdGVtVmFsdWVTdGF0ZSxcInZhbHVlQ2hhbmdlZFwiLCAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0pO1xyXG4gICAgICAgIGlmICgkc2NvcGUuZmQuU2VhcmNoKVx0e1xyXG5cdFx0XHRcdGlmICggJHNjb3BlPy5mb3JtRGF0YS5sZW5ndGg+MCkgXHJcblx0XHRcdFx0XHRcdFx0XHQkc2NvcGUuZmQuU2VhcmNoLnZhbHVlID0gJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdO1xyXG5cdFx0XHR9XHRcdFxyXG4gICAgfVxyXG4gICAgICAgXHJcblx0ICAgXHJcbiAgICAkc2NvcGUuZmQub25fY2hhbmdlX2JldHdlZW49ZnVuY3Rpb24oYmV0d2VlbilcclxuICAgIHtcclxuICAgICAgICAgIGlmICgkc2NvcGUuZmQuRGJ0eXBlPT09XCJkYXRlZmllbGRkZWZpbml0aW9uXCIgJiYgJHNjb3BlLmZkLlNlYXJjaFtiZXR3ZWVuXSE9PXVuZGVmaW5lZCAmJiAkc2NvcGUuZmQuU2VhcmNoW2JldHdlZW5dIT09bnVsbCkgICAgJHNjb3BlLmZkLlNlYXJjaFtiZXR3ZWVuXS5zZXRIb3VycygxMiwwLDAsMCk7ICAgICAgXHJcbiAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IGFwcGx5X3ZhbHVlID0gZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGRhdGEhPXVuZGVmaW5lZCkgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdID0gZGF0YTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICgkc2NvcGUuZmQ/LlBhcmFtZXRlcnM/LkRlcGVuZGVudEZpZWxkSWQhPXVuZGVmaW5lZCAmJiAkc2NvcGUuZmQ/LlBhcmFtZXRlcnM/LkRlcGVuZGVudEZpZWxkSWQhPW51bGwpICAgXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuRGVwZW5kZW50RmllbGRJZCE9XCJcIikge1xyXG4gICAgICAgICAgICAgICAgbGV0IGRlcGVuZGVudF9maWVsZCA9IFwiRmllbGRcIiskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQrJy0nKyRzY29wZS5mZC5QYXJhbWV0ZXJzLkRlcGVuZGVudEZpZWxkVHlwZStcIlZhbHVlU3RhdGVOYW1lXCIrJHNjb3BlLmZkLlBhcmFtZXRlcnMuRGVwZW5kZW50RmllbGRJZDtcclxuICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlciA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0LGRlcGVuZGVudF9maWVsZCxcInZhbHVlQ2hhbmdlZFwiLGFwcGx5X3ZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGxldCBzdGF0ZSA9ICRzY29wZS5rc20uZ2V0U3RhdGUoc3Vic2NyaWJlZFN1YmplY3QpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHN0YXRlLnN0YXR1cz09XCJva1wiKSAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0gPSBzdGF0ZS5zdGF0ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgXHJcblx0XHRcclxuXHQgICRzY29wZS5hcHBseURhdGVGaWx0ZXJzID0gZnVuY3Rpb24oaW5kZXgpIC8vb3ZvIGplIGFrdGl2bmEgZnVua2NpamEhIVxyXG5cdCAge1xyXG5cdFx0JHNjb3BlLmZkLlNlYXJjaD0kc2NvcGUuZmQubG9jYWxWYXJzLnNlYXJjaFtpbmRleF07XHJcbiAgICAgIFxyXG4gICAgICAgIGlmICgkc2NvcGUuZm9ybURhdGEgIT11bmRlZmluZWQgJiYgJHNjb3BlLmZvcm1EYXRhLmxlbmd0aD4wKSB7XHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0hPXVuZGVmaW5lZClcclxuXHRcdFx0XHRcdFx0XHQkc2NvcGUuZmQuU2VhcmNoLnZhbHVlPSRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXTsvLyBwb25vdm5vIGRvZGFqIHZhbHVlXHJcbiAgICAgICAgfVxyXG5cdFx0XHJcblx0XHRpZiAoJHNjb3BlLmZkLlNlYXJjaC5pZD09NCkgIFxyXG5cdFx0XHRcdCRzY29wZS5mZC5TZWFyY2guU2hvd1NlY29uZERhdGU9dHJ1ZSAvLyBrYWQgamUgIGJldHdlZW5cclxuXHRcdGVsc2UgIFxyXG5cdFx0XHQkc2NvcGUuZmQuU2VhcmNoLlNob3dTZWNvbmREYXRlPWZhbHNlICBcdFx0XHJcblx0ICB9O1xyXG5cclxuXHJcbiAgICAkc2NvcGUuc2hvd0hpZGVQcm9wZXJ0aWVzID0gZnVuY3Rpb24odmFsdWUpXHJcbiAgICB7XHJcbiAgICAgICAgJHNjb3BlLmdzcnZjLnNldEZpZWxkUHJvcGVydGllc09wZW5lZCh2YWx1ZSk7XHJcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93RmllbGRQcm9wZXJ0aWVzPSRzY29wZS5nc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKTtcclxuICAgICAgICBpZiAodmFsdWUpIFx0JHNjb3BlLmdzcnZjLnNldFByb3BlcnRpZXNQb3NpdGlvbigpO1xyXG4gICAgfTtcclxuXHJcbiAgJHNjb3BlLmZkLmZvcm1hdHMgPSBbe2lkOjEsbmFtZTonZGQtTU1NTS15eXl5IEhIOm1tOnNzOnNzcyd9LCB7aWQ6MixuYW1lOid5eXl5L01NL2RkIEhIOm1tOnNzOnNzcyd9LCB7aWQ6MyxuYW1lOidkZC5NTS55eXl5IEhIOm1tOnNzOnNzcyd9XTtcclxuICAkc2NvcGUuZmQuZm9ybWF0c1RpbWUgPSBbe2lkOjEsbmFtZTonSEg6bW06c3MnfSwge2lkOjIsbmFtZTonSEg6bW06c3M6c3NzJ30sIHtpZDoyLG5hbWU6J0hIOm1tJ31dO1xyXG4gICRzY29wZS5mZC5mb3JtYXRzRGF0ZSA9IFt7aWQ6MSxuYW1lOidkZC1NTU1NLXl5eXknfSwge2lkOjIsbmFtZToneXl5eS9NTS9kZCd9LCB7aWQ6MyxuYW1lOidkZC5NTS55eXl5J30sIHtpZDo0LG5hbWU6J3Nob3J0RGF0ZSd9XTtcclxuIFxyXG4gICRzY29wZS5mZC5zZXRGb3JtYXQgPSBmdW5jdGlvbigpXHJcbiAge1xyXG4gICAgICAkc2NvcGUuZmQuZm9ybWF0PVwiXCI7XHJcbiAgICAgIGlmICAoJHNjb3BlLmZkLlBhcmFtZXRlcnNMYW5nLmZvcm1hdDEhPXVuZGVmaW5lZCAmJiAkc2NvcGUuZmQuUGFyYW1ldGVyc0xhbmcuZm9ybWF0MSE9bnVsbCkgIHtcclxuICAgICAgICAkc2NvcGUuZmQuZm9ybWF0ID0gJHNjb3BlLmZkLlBhcmFtZXRlcnNMYW5nLmZvcm1hdDEubmFtZTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgaWYgICgkc2NvcGUuZmQuUGFyYW1ldGVyc0xhbmcuZm9ybWF0MiE9dW5kZWZpbmVkICYmICRzY29wZS5mZC5QYXJhbWV0ZXJzTGFuZy5mb3JtYXQyIT1udWxsKXtcclxuICAgICAgICBpZiAoJHNjb3BlLmZkLmZvcm1hdCE9XCJcIikge1xyXG5cdFx0XHQkc2NvcGUuZmQuZm9ybWF0ID0gJHNjb3BlLmZkLmZvcm1hdCtcIiBcIiskc2NvcGUuZmQuUGFyYW1ldGVyc0xhbmcuZm9ybWF0Mi5uYW1lO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAkc2NvcGUuZmQuZm9ybWF0ID0gJHNjb3BlLmZkLlBhcmFtZXRlcnNMYW5nLmZvcm1hdDIubmFtZTsgXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBpZiAoJHNjb3BlLmZkLmZvcm1hdCA9PVwiXCIpe1xyXG4gICAgICAgICRzY29wZS5mZC5mb3JtYXQgPSAkc2NvcGUuZmQuZm9ybWF0c1syXS5uYW1lO1xyXG4gICAgICB9XHJcbiAgfVxyXG4gIFxyXG4gICAgbGV0IHRlbXBsYXRlO1xyXG4gICAgaWYgKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uKSB0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZUNhY2hlLmdldCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3REYXRlLmh0bWwnKTtcclxuICAgIGVsc2UgdGVtcGxhdGUgPSAkdGVtcGxhdGVDYWNoZS5nZXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0RGF0ZUV4ZS5odG1sJyk7XHJcbiAgICBcclxuICAgICRlbGVtZW50LmFwcGVuZCgkY29tcGlsZSh0ZW1wbGF0ZSkoJHNjb3BlKSk7XHJcbiAgICBcclxuICAgIGlmIChpdGVtVmFsdWVTdGF0ZS5zdWJqZWN0LmN1cnJlbnRTdGF0ZUluZGV4Pj0wKSB7XHJcblx0XHRcdCRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSA9IGl0ZW1WYWx1ZVN0YXRlLnN1YmplY3QuZ2V0U3RhdGU7XHJcbiAgICB9ICAgXHJcbiAgICBcclxuICAgIGlmICgkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0hPXVuZGVmaW5lZCkgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKGl0ZW1WYWx1ZVN0YXRlTmFtZSxcInZhbHVlQ2hhbmdlZFwiLCAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0pO1xyXG5cclxuICAgICAgICAgICAgICAgIFxyXG59XTsvL2RhdGVwaWNrZXJDdHJsXHJcblxyXG4gXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuXHRcdFx0Y29udHJvbGxlcjogZGF0ZVBpY2tlckN0cmwsXHJcbiAgICAgICAgICAgICBsaW5rOiAgZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycyxjdHJsKSBcclxuXHRcdFx0IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgc2NvcGUuZmQuZGF0ZUZvcm1hdExpc3QgPSBbe2lkOjEsbmFtZTonZGQuTU0ueXl5eSd9LHtpZDoyLG5hbWU6J2RkLU1NLXl5eXknfSx7aWQ6MyxuYW1lOidkZC9NTS95eXl5J30se2lkOjQsbmFtZTonZGQuTU0ueXknfV07XHJcbiAgICAgICAgICAgICBzY29wZS5mZC50aW1lRm9ybWF0TGlzdCA9IFsge2lkOjEsbmFtZTonSEg6bW0nLCBtYXNrOic5OTo5OSd9LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCB7aWQ6MixuYW1lOidISDptbTpzcyd9LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIHtpZDozLG5hbWU6J0hIOm1tJ30sXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0IHtpZDo0LG5hbWU6J0hIOm1tOnNzOnNzcyd9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0IF07XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgdmFyIHBvc0Zvcm1hdERhdGUgPSBzY29wZS5mZC5kYXRlRm9ybWF0TGlzdC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5uYW1lLnRvU3RyaW5nKCk7IH0pLmluZGV4T2Yoc2NvcGUuZmQuUGFyYW1ldGVyc0xhbmcuZm9ybWF0MSk7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmIChwb3NGb3JtYXREYXRlPj0wKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5mb3JtYXQxPXNjb3BlLmZkLmRhdGVGb3JtYXRMaXN0W3Bvc0Zvcm1hdERhdGVdOyAgICAgIFxyXG4gICAgICAgICAgICB9XHJcblx0XHRcdFxyXG4gICAgICAgICAgICB2YXIgcG9zRm9ybWF0VGltZSA9IHNjb3BlLmZkLnRpbWVGb3JtYXRMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLm5hbWUudG9TdHJpbmcoKTsgfSkuaW5kZXhPZihzY29wZS5mZC5QYXJhbWV0ZXJzTGFuZy5mb3JtYXQyKTtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKHBvc0Zvcm1hdFRpbWU+PTApe1xyXG4gICAgICAgICAgICAgIHNjb3BlLmZkLlBhcmFtZXRlcnNMYW5nLmZvcm1hdDI9c2NvcGUuZmQudGltZUZvcm1hdExpc3RbcG9zRm9ybWF0VGltZV07ICAgICAgXHJcbiAgICAgICAgICAgICB9XHJcblx0XHRcdCBcclxuICAgICAgICAgICAgc2NvcGUuZmQuZGlyTG9hZGVkID0gdHJ1ZVxyXG5cclxuICAgICAgICAgICAgc2NvcGUuZmQuc2V0Rm9ybWF0KCk7IFxyXG4gICAgICAgICAgICAgICAvL2ZpbmQgb2JqZWN0XHJcblx0XHRcdCAgIFxyXG4gICAgICAgICAgICAgc2NvcGUuZmQuc2hvd1Byb3BlcnRpZXMgPSBmdW5jdGlvbigpXHJcbiAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIHNjb3BlLmxvY2FsVmFycy5zaG93RmllbGRQcm9wZXJ0aWVzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgc2NvcGUuZ3NydmMuc2V0RmllbGRQcm9wZXJ0aWVzKHNjb3BlLmZkLHNjb3BlLmlucHV0QXJyYXkpO1xyXG4gICAgICAgICAgICAgICAgfTsgICBcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgIHNjb3BlLmZkLnNldFN5c3RlbURhdGU9ZnVuY3Rpb24oKVxyXG5cdFx0ICB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuVXNlU3lzdGVtRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZm9ybURhdGEgIT11bmRlZmluZWQgJiYgc2NvcGUuZm9ybURhdGEubGVuZ3RoPjApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZvcm1EYXRhWzBdW3Njb3BlLmZkLkZpZWxkTmFtZV09bmV3IERhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICB9ICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBpZiAoc2NvcGUuZm9ybURhdGEgIT11bmRlZmluZWQgJiYgc2NvcGUuZm9ybURhdGEubGVuZ3RoPjApXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mb3JtRGF0YVswXVtzY29wZS5mZC5GaWVsZE5hbWVdIT0gbnVsbCAmJiBzY29wZS5mb3JtRGF0YVswXVtzY29wZS5mZC5GaWVsZE5hbWVdIT1cIlwiKSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZm9ybURhdGFbMF1bc2NvcGUuZmQuRmllbGROYW1lXSA9IG5ldyBEYXRlIChzY29wZS5mb3JtRGF0YVswXVtzY29wZS5mZC5GaWVsZE5hbWVdKTtcclxuICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIHNjb3BlLmZkLlNldERlZmF1bHQgPSBmdW5jdGlvbigpXHJcbiAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLkRlZmF1bHRWYWx1ZSA9IHt2YWx1ZTpzY29wZS5mb3JtRGF0YVswXVtzY29wZS5mZC5GaWVsZE5hbWVdfTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuVXBkYXRlV2l0aERlZmF1bHQgJiYgIXNjb3BlLmZkLk5vVXBkYXRlKSBzY29wZS5mb3JtRGF0YVswXVtzY29wZS5mZC5GaWVsZE5hbWVdID0gbmV3IERhdGUgKHNjb3BlLmZkLkRlZmF1bHRWYWx1ZT8udmFsdWUpXHJcbiAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLlVzZVN5c3RlbURhdGUpIHNjb3BlLmZkLnNldFN5c3RlbURhdGUoKTtcclxuXHJcbiAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcblx0XHJcblx0XHJcbmZ1bmN0aW9uIERhdGVQaWNrZXJDdHJsMiAoJHNjb3BlKSB7XHJcblxyXG5cdCRzY29wZS5DVFJMTkFNRT0nRGF0ZVBpY2tlckN0cmwyJztcclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VhcmNoPVsgICAgICAgICAgICAgICAgICAgICAvKiAgTUlHT1IgVE9ETyAtIFZJREpFVEkgREEgTEkgT1ZPIFRSRUJBIHphS09NRU5USVJBVEkgSUxJIE5FICovXHJcblx0XHR7aWQ6MSxmaWx0ZXI6J2d0ZScsbmFtZTpcIkZyb20gPGRhdGU+XCIsaWNvbjpcImZhIGZhLWNoZXZyb24tcmlnaHRcIn0sXHJcblx0XHR7aWQ6MixmaWx0ZXI6J2x0ZScsbmFtZTpcIlRvIDxkYXRlPlwiLGljb246XCJmYSBmYS1jaGV2cm9uLWxlZnRcIn0sXHJcblx0XHR7aWQ6MyxmaWx0ZXI6J2VxJyxuYW1lOlwiT24gPGRhdGU+XCIsaWNvbjpcImZhIGZhLWJhcnNcIn0sICAgICAgLy8gTUlHT1IgVE9ETyAtIHZpZGpldGkgemFzdG8gc2UgcG9rYXp1amUgbmEgcG9jZXRrdSBvZCBkYXRlUGlja2VyMiBrb250cm9sZXJhIHVtamVzdG8gcHJ2b2dcclxuXHRcdHtpZDo0LGZpbHRlcjonYmV0d2VlbicsbmFtZTpcIkJldHdlZW4gPGRhdGU+IGFuZCA8ZGF0ZT5cIixpY29uOlwiZmEgZmEtZXhwYW5kXCJ9XHJcblx0XTtcclxuIFxyXG4gICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzTGFuZz09dW5kZWZpbmVkIHx8ICRzY29wZS5mZC5QYXJhbWV0ZXJzTGFuZz09bnVsbCkgJHNjb3BlLmZkLlBhcmFtZXRlcnNMYW5nPXt9O1xyXG4gXHJcbiAgICAgICAgJHNjb3BlLkNUUkw9J2RhdGVwaWNrZXIyJztcclxuICBcclxuICAgICAgICAkc2NvcGUucmVmcmVzaFNlYXJjaFZhbHVlID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5TZWFyY2gpICRzY29wZS5mZC5TZWFyY2gudmFsdWU9JHNjb3BlLmZkLnNJdGVtVmFsdWU7ICAgICAgXHJcbiAgICAgICAgfSBcclxuICAgICAgICBcclxuXHQgICRzY29wZS5hcHBseURhdGVGaWx0ZXJzID0gZnVuY3Rpb24oaW5kZXgpIHtcclxuICAgICAgICAgICBcclxuXHRcdCAgdmFyIGk9JHNjb3BlLmZkLmxvY2FsVmFycy5zZWFyY2guc2VsZWN0ZWQuaWQ7IFxyXG5cclxuXHRcdCAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuc2VhcmNoLnNlbGVjdGVkLmlkPT00KSAgXHQkc2NvcGUuZmQubG9jYWxWYXJzLnNlYXJjaC5zaG93U2Vjb25kRGF0ZT10cnVlIC8vIGlmIChzY29wZS5mZC5zZWFyY2gubmFtZT09XCJFcXVhbHNcIikgc2NvcGUuZmQuc2VhcmNoPW51bGw7XHJcblx0XHQgIGVsc2UgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VhcmNoLnNob3dTZWNvbmREYXRlPWZhbHNlXHJcblx0XHQgIFx0XHRcclxuXHQgIH07XHJcblxyXG4gICRzY29wZS50b2RheSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgJHNjb3BlLmR0ID0gbmV3IERhdGUoKTtcclxuICB9O1xyXG4gICRzY29wZS50b2RheSgpO1xyXG5cclxuICAkc2NvcGUuY2xlYXIgPSBmdW5jdGlvbigpIHtcclxuICAgICRzY29wZS5kdCA9IG51bGw7XHJcbiAgfTtcclxuXHJcbiAgJHNjb3BlLmlubGluZU9wdGlvbnMgPSB7XHJcbiAgICBjdXN0b21DbGFzczogZ2V0RGF5Q2xhc3MsXHJcbiAgICBtaW5EYXRlOiBuZXcgRGF0ZSgpLFxyXG4gICAgc2hvd1dlZWtzOiB0cnVlXHJcbiAgfTtcclxuXHJcbiAgJHNjb3BlLmRhdGVPcHRpb25zID0ge1xyXG4gICAgZGF0ZURpc2FibGVkOiBkaXNhYmxlZCxcclxuICAgIGZvcm1hdFllYXI6ICd5eScsXHJcbiAgICBtaW5EYXRlOiBuZXcgRGF0ZSgpLFxyXG4gICAgc3RhcnRpbmdEYXk6IDFcclxuICB9O1xyXG5cclxuICAvLyBEaXNhYmxlIHdlZWtlbmQgc2VsZWN0aW9uXHJcbiAgZnVuY3Rpb24gZGlzYWJsZWQoZGF0YSkge1xyXG4gICAgdmFyIGRhdGUgPSBkYXRhLmRhdGUsXHJcbiAgICAgIG1vZGUgPSBkYXRhLm1vZGU7XHJcbiAgICByZXR1cm4gbW9kZSA9PT0gJ2RheScgJiYgKGRhdGUuZ2V0RGF5KCkgPT09IDAgfHwgZGF0ZS5nZXREYXkoKSA9PT0gNik7XHJcbiAgfVxyXG5cclxuICAkc2NvcGUudG9nZ2xlTWluID0gZnVuY3Rpb24oKSB7XHJcbiAgICAkc2NvcGUuaW5saW5lT3B0aW9ucy5taW5EYXRlID0gJHNjb3BlLmlubGluZU9wdGlvbnMubWluRGF0ZSA/IG51bGwgOiBuZXcgRGF0ZSgpO1xyXG4gICAgJHNjb3BlLmRhdGVPcHRpb25zLm1pbkRhdGUgPSAkc2NvcGUuaW5saW5lT3B0aW9ucy5taW5EYXRlO1xyXG4gIH07XHJcblxyXG4gICRzY29wZS50b2dnbGVNaW4oKTtcclxuXHJcbiAgJHNjb3BlLm9wZW4xID0gZnVuY3Rpb24oKSB7XHJcbiAgICAkc2NvcGUucG9wdXAxLm9wZW5lZCA9IHRydWU7XHJcbiAgfTtcclxuXHJcbiAgJHNjb3BlLm9wZW4yID0gZnVuY3Rpb24oKSB7XHJcbiAgICAkc2NvcGUucG9wdXAyLm9wZW5lZCA9IHRydWU7IC8vRGF0ZVBpY2tlckN0cmwyXHJcbiAgfTtcclxuICBcclxuICAkc2NvcGUuYXBwbHlEYXRlRmlsdGVycyA9IGZ1bmN0aW9uKCkge1xyXG5cdCAgdmFyIHNjPSRzY29wZTtcclxuXHQgIHZhciB0PXNjLmZkO1xyXG5cdFxyXG4gICAgJHNjb3BlLnBvcHVwMi5vcGVuZWQgPSB0cnVlO1xyXG4gIH07XHJcbiAgIFxyXG5cclxuICAkc2NvcGUuc2V0RGF0ZSA9IGZ1bmN0aW9uKHllYXIsIG1vbnRoLCBkYXkpIHtcclxuICAgICRzY29wZS5kdCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXkpO1xyXG4gIH07XHJcblxyXG4gICRzY29wZS5mZC5mb3JtYXRzID0gW3tpZDoxLG5hbWU6J2RkLU1NTU0teXl5eSBISDptbTpzczpzc3MnfSwge2lkOjIsbmFtZToneXl5eS9NTS9kZCBISDptbTpzczpzc3MnfSwge2lkOjMsbmFtZTonZGQuTU0ueXl5eSBISDptbTpzczpzc3MnfV07XHJcbiAgJHNjb3BlLmZkLmZvcm1hdHNUaW1lID0gW3tpZDoxLG5hbWU6J0hIOm1tOnNzJ30sIHtpZDoyLG5hbWU6J0hIOm1tOnNzOnNzcyd9LCB7aWQ6MixuYW1lOidISDptbSd9XTtcclxuICAkc2NvcGUuZmQuZm9ybWF0c0RhdGUgPSBbe2lkOjEsbmFtZTonZGQtTU1NTS15eXl5J30sIHtpZDoyLG5hbWU6J3l5eXkvTU0vZGQnfSwge2lkOjMsbmFtZTonZGQuTU0ueXl5eSd9LCB7aWQ6NCxuYW1lOidzaG9ydERhdGUnfV07XHJcbiBcclxuICAkc2NvcGUuc2V0Rm9ybWF0ID0gZnVuY3Rpb24oKVxyXG4gIHtcclxuICAgICAgJHNjb3BlLmZvcm1hdD1cIlwiO1xyXG4gICAgICBpZiAgKCRzY29wZS5mZC5QYXJhbWV0ZXJzTGFuZy5mb3JtYXQxIT11bmRlZmluZWQgJiYgJHNjb3BlLmZkLlBhcmFtZXRlcnNMYW5nLmZvcm1hdDEhPW51bGwpe1xyXG4gICAgICAgICRzY29wZS5mb3JtYXQgPSAkc2NvcGUuZmQuUGFyYW1ldGVyc0xhbmcuZm9ybWF0MS5uYW1lO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBpZiAgKCRzY29wZS5mZC5QYXJhbWV0ZXJzTGFuZy5mb3JtYXQyIT11bmRlZmluZWQgJiYgJHNjb3BlLmZkLlBhcmFtZXRlcnNMYW5nLmZvcm1hdDIhPW51bGwpXHJcbiAgICAgIHtcclxuICAgICAgICBpZiAoJHNjb3BlLmZvcm1hdCE9XCJcIikge1xyXG4gICAgICAgICAkc2NvcGUuZm9ybWF0ID0gJHNjb3BlLmZvcm1hdCtcIiBcIiskc2NvcGUuZmQuUGFyYW1ldGVyc0xhbmcuZm9ybWF0Mi5uYW1lO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAkc2NvcGUuZm9ybWF0ID0gJHNjb3BlLmZkLlBhcmFtZXRlcnNMYW5nLmZvcm1hdDIubmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIGlmICgkc2NvcGUuZm9ybWF0ID09XCJcIikge1xyXG4gICAgICAgICRzY29wZS5mb3JtYXQgPSAkc2NvcGUuZm9ybWF0c1syXTtcclxuICAgICAgfVxyXG4gIH1cclxuICAkc2NvcGUuYWx0SW5wdXRGb3JtYXRzID0gWydNIS9kIS95eXl5J107XHJcblxyXG4gICRzY29wZS5wb3B1cDEgPSB7XHJcbiAgICBvcGVuZWQ6IGZhbHNlXHJcbiAgfTtcclxuXHJcbiAgJHNjb3BlLnBvcHVwMiA9IHtcclxuICAgIG9wZW5lZDogZmFsc2VcclxuICB9O1xyXG5cclxuICB2YXIgdG9tb3Jyb3cgPSBuZXcgRGF0ZSgpO1xyXG4gIHRvbW9ycm93LnNldERhdGUodG9tb3Jyb3cuZ2V0RGF0ZSgpICsgMSk7XHJcbiAgdmFyIGFmdGVyVG9tb3Jyb3cgPSBuZXcgRGF0ZSgpO1xyXG4gIGFmdGVyVG9tb3Jyb3cuc2V0RGF0ZSh0b21vcnJvdy5nZXREYXRlKCkgKyAxKTtcclxuICBcclxuICAkc2NvcGUuZXZlbnRzID0gW1xyXG4gICAge1xyXG4gICAgICBkYXRlOiB0b21vcnJvdywgIHN0YXR1czogJ2Z1bGwnIH0sXHJcbiAgICB7XHJcbiAgICAgIGRhdGU6IGFmdGVyVG9tb3Jyb3csIHN0YXR1czogJ3BhcnRpYWxseScgfVxyXG4gIF07XHJcblxyXG4gIGZ1bmN0aW9uIGdldERheUNsYXNzKGRhdGEpIHtcclxuICAgIHZhciBkYXRlID0gZGF0YS5kYXRlLFxyXG4gICAgICBtb2RlID0gZGF0YS5tb2RlO1xyXG4gICAgaWYgKG1vZGUgPT09ICdkYXknKSB7XHJcbiAgICAgIHZhciBkYXlUb0NoZWNrID0gbmV3IERhdGUoZGF0ZSkuc2V0SG91cnMoMCwwLDAsMCk7XHJcblxyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8ICRzY29wZS5ldmVudHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YXIgY3VycmVudERheSA9IG5ldyBEYXRlKCRzY29wZS5ldmVudHNbaV0uZGF0ZSkuc2V0SG91cnMoMCwwLDAsMCk7XHJcblxyXG4gICAgICAgIGlmIChkYXlUb0NoZWNrID09PSBjdXJyZW50RGF5KSB7XHJcbiAgICAgICAgICByZXR1cm4gJHNjb3BlLmV2ZW50c1tpXS5zdGF0dXM7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG59O1xuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24ga3REYXRlRXh0ZW5kZWRQcm9wZXJ0aWVzICgpIHtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcbiAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0RGF0ZUV4dGVuZGVkUHJvcGVydGllcy5odG1sJyxcbiAgICAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbihDb2Rlc1NlcnZpY2UsUmVzb3VyY2VzRGF0YVNlcnZpY2UsJHJvb3RTY29wZSxQcm9jZXNzaW5nU2VydmljZSl7fSxcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XG4gICAgICBcbiAgICAgICAgICAgICAgfVxuICAgICAgICB9XG4gIFxufTtcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGt0RGVsZXRlRWxlbWVudCAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxuICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3REZWxldGVFbGVtZW50Lmh0bWwnLFxuICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcbiAgXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0RG93bmxvYWQgKCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXHJcblx0XHRcclxuICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3REb3dubG9hZC5odG1sJyxcclxuICAgICAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uKCRzY29wZSwkcm9vdFNjb3BlLEdyaWRzdGVyU2VydmljZSxXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLFV0aWxpdHlTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlKXtcclxuXHRcdFx0XHQgXHJcblx0XHRcdFxyXG5cdFx0XHRcdCRzY29wZS5mZC5sb2NhbFZhcnMgPSB7XHJcblx0XHRcdFx0XHRjYWxjdWxhdGVGdW5jdGlvbnMgOlsge2lkOjEsbmFtZTonc3VtJ30se2lkOjIsbmFtZTonbWVhbid9LHtpZDozLG5hbWU6J21pbid9LHtpZDo0LG5hbWU6J21heCd9LHtpZDo1LG5hbWU6J2NvdW50J30gXSAsXHJcblx0XHRcdFx0XHRnc3J2YzogR3JpZHN0ZXJTZXJ2aWNlXHJcblx0XHRcdFx0fSAgICBcclxuXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICBsZXQgd19hY3Rpb25zPVtcclxuICAgICAgICAgICAgICAgICAgICB7aWQ6MSxuYW1lOidkb3dubG9hZCd9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtpZDoyLG5hbWU6J2Rvd25sb2FkV2l0aFBhcmFtcyd9LFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIF1cclxuXHRcdFx0XHRcclxuICAgICAgICAgICAgICAgIFxyXG5cdFx0XHRcdGlmICgkc2NvcGUuZmQubG9jYWxWYXJzPT11bmRlZmluZWQpICAkc2NvcGUuZmQubG9jYWxWYXJzPXt9XHJcblx0XHRcdFx0JHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZURlZmluaXRpb24gPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uXHJcblx0XHRcdFx0XHJcblx0XHRcdFx0JHNjb3BlLmxvY2FsVmFycyA9IHtnc3J2YzpHcmlkc3RlclNlcnZpY2V9IC8vYmVjYXVzZSBrdC1kZWxldGUtZWxlbWVudFxyXG5cdFx0XHRcclxuXHRcdFx0XHRpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5wYXJlbnRSZXNvdXJjZUlkPT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnMucGFyZW50UmVzb3VyY2VJZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZUlkID8/ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udWlkIC8vIGlmIGRpcmVjdGx5IG9uIHBhZ2UgXHJcblxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnNob3dQcm9wZXJ0aWVzID0gZnVuY3Rpb24oZXZlbnQpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZ3NydmMuc2V0RmllbGRQcm9wZXJ0aWVzKCRzY29wZS5mZCxldmVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0ICAvL3JlZ2lzdGVyIHdpZGdldCBcclxuXHRcdFx0XHQgIHZhciBvdXRfZmllbGRzID0gWydyZXNvdXJjZUlkJ11cclxuXHRcdFx0XHQgIGlmICgkc2NvcGUuZmQuVXVpZFJlZj09dW5kZWZpbmVkKSAkc2NvcGUuZmQuVXVpZFJlZj1VdGlsaXR5U2VydmljZS51dWlkdjQoKVxyXG5cdFx0XHRcdFx0XHRcdFxyXG5cclxuXHRcdFx0XHQgIHZhciB3aWRnZXREZWZpbml0aW9uID0ge1xyXG5cdFx0XHRcdFx0ICBERUk6IFtdLFxyXG5cdFx0XHRcdFx0XHRhY3Rpb25zOiB3X2FjdGlvbnMsXHJcblx0XHRcdFx0XHRcdHdpZGdldExhYmVsOiAnRG93bmxvYWQnLFxyXG5cdFx0XHRcdFx0XHR3aWRnZXROYW1lOiAna3REb3dubG9hZCcsXHJcblx0XHRcdFx0XHRcdHdpZGdldElkOiAkc2NvcGUuZmQuVXVpZFJlZixcclxuXHRcdFx0XHRcdFx0dGFza19pbml0aWF0ZV9pZDokc2NvcGUudGFza0luaXRpYXRlSWQsXHJcblx0XHRcdFx0XHRcdHRhc2tfZXhlY3V0ZV9pZDokc2NvcGUudGFza0V4ZWN1dGVJZCxcclxuXHRcdFx0XHRcdFx0dGFza0lkOiAgJHNjb3BlLmxUYXNrSWQsXHJcblx0XHRcdFx0XHRcdHJlc291cmNlX2lkOiRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZV9zdGF0ZV9pZCxcclxuXHRcdFx0XHRcdFx0cmVzb3VyY2VEZWZJZCA6ICRzY29wZS5mZC5SZWxhdGVkLCBcclxuXHRcdFx0XHRcdFx0b3V0cHV0Om91dF9maWVsZHMsXHJcblx0XHRcdFx0XHRcdHBhcmVudFJlc291cmNlSWQ6JHNjb3BlLmZkLmxvY2FsVmFycz8ucGFyZW50UmVzb3VyY2VJZFxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCAgXHJcblx0XHRcdFx0ICAkc2NvcGUuZmQubG9jYWxWYXJzLmxvY2FsV2lkZ2V0SWQgPSBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnJlZ2lzdGVyV2lkZ2V0KHdpZGdldERlZmluaXRpb24pO1xyXG5cdFx0XHRcdCAgXHJcblx0XHRcdFx0ICAkc2NvcGUuZmQubG9jYWxWYXJzLmxvY2FsSWQ9JHNjb3BlLmZkLmxvY2FsVmFycy5sb2NhbFdpZGdldElkO1xyXG5cdFx0XHRcdCAgJHNjb3BlLmZkLkxvY2FsSWQ9JHNjb3BlLmZkLmxvY2FsVmFycy5sb2NhbFdpZGdldElkO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdCBpZiAoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb24gfHwgdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZMaXN0QnlUeXBlKCRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nLCdmaWxlJykudGhlbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZGF0YSkgeyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5saXN0T2ZGaWxlVHlwZXMgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICxmdW5jdGlvbihlcnJvcil7ICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKSAgfVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cdFx0XHJcblx0XHQkc2NvcGUuZmQubG9jYWxWYXJzLmNvbnZlcnRUb0Ryb3Bkb3duTGlzdCA9IGZ1bmN0aW9uIChpbnB1dGxpc3QsIHVpZClcclxuXHRcdHtcclxuXHRcdFx0Zm9yIChsZXQgaT0wOyBpPGlucHV0bGlzdC5sZW5ndGg7aSsrKXtcclxuXHRcdFx0XHRpbnB1dGxpc3RbaV0gPSB7IFxyXG5cdFx0XHRcdFx0aWQ6IGlucHV0bGlzdFtpXVsncmVzb3VyY2UnICsgdWlkICsgJ19pZCddLCBcclxuXHRcdFx0XHRcdG5hbWU6IGlucHV0bGlzdFtpXVsncmVzb3VyY2UnICsgdWlkICsgJ19GaWxlTmFtZSddLFxyXG4gICAgICAgICAgICAgICAgICAgIGd1aWQ6IGlucHV0bGlzdFtpXVsncmVzb3VyY2UnICsgdWlkICsgJ19ndWlkJ11cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuICAgICBcdFx0XHJcblx0XHQkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVTZWxlY3RlZCA9IGFzeW5jIGZ1bmN0aW9uIChzZWxlY3RlZCkgey8vUHJlcGFyZSBsaXN0IGZvciBkcm9wZG93biAoIHtpZCAsIG5hbWV9KVxyXG5cdFx0XHRsZXQgaWQgPSBzZWxlY3RlZC5pZC8vLnNwbGl0KFwiX1wiKVswXVxyXG5cdFx0XHQkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVSZWNvcmRzLmxlbmd0aD0wXHJcblx0XHRcdGxldCBkYXRhID0gYXdhaXQgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0RGF0YXNldERhdGFTaW1wbGUoaWQpXHRcclxuXHRcdFx0JHNjb3BlLmZkLmxvY2FsVmFycy5jb252ZXJ0VG9Ecm9wZG93bkxpc3QgKGRhdGEuZGF0YSwgc2VsZWN0ZWQuaWQpXHJcblx0XHRcdCRzY29wZS5mZC5QYXJhbWV0ZXJzLkZpbGVJZCA9IG51bGxcclxuXHRcdFx0JHNjb3BlLmZkLmxvY2FsVmFycy5yZWNvcmRTZWxlY3RlZCA9IG51bGxcclxuXHRcdFx0aWYgKGRhdGEuZGF0YT8ubGVuZ3RoKSAkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVSZWNvcmRzID0gZGF0YS5kYXRhXHJcblx0XHR9XHJcblx0XHRcdFx0XHJcblx0XHRcclxuXHRcdCRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZVJlY29yZFNlbGVjdGVkID0gIGZ1bmN0aW9uIChzZWxlY3RlZCkge1x0XHRcclxuXHRcdFx0XHRcdFx0JHNjb3BlLmZkLlBhcmFtZXRlcnMuRmlsZUlkID0gc2VsZWN0ZWQuZ3VpZFxyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHRcclxuXHRcdFx0XHRcclxuICAgICAgICAgICAgICAgIH0sLy9lbmQgY29udHJvbGVyXHJcblx0XHRcdFx0XHJcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5QYXJhbWV0ZXJzID09IG51bGwpIHNjb3BlLmZkLlBhcmFtZXRlcnMgPSB7fSAvL251bGwgb3IgdW5kZWZpbmVkICFcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuaXNMYWJlbFN0eWxlID0gdHJ1ZTtcclxuXHRcdFx0XHQgIHNjb3BlLmZkLlBhcmFtZXRlcnMuSGlkZUVsZW1lbnRQcm9wZXJ0aWVzID0gZmFsc2UgXHJcblx0XHRcdFx0ICBcclxuXHRcdFx0XHQgIC8vaWYgKHNjb3BlLmZkLlBhcmFtZXRlcnMud2lkZ2V0UmVmZXJlbmNlKVxyXG5cdFx0XHRcdFx0XHRcdC8vc2NvcGUuZmQuUGFyYW1ldGVycy5IaWRlRWxlbWVudFByb3BlcnRpZXMgPSBmYWxzZSBcclxuXHRcdFx0XHQgIC8vZWxzZSBcclxuXHRcdFx0XHRcdC8vICBzY29wZS5mZC5QYXJhbWV0ZXJzLkhpZGVFbGVtZW50UHJvcGVydGllcyA9IHRydWUgLy9oaWRlIHZhbHVlIHByb3BlcnRpZXNcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0ICBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbn07XG4ndXNlIHN0cmljdCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3REcm9wZG93biAoJHRpbWVvdXQpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdFQScsXHJcbiAgICAgICAgICAgIHJlcXVpcmU6WydeZm9ybScsJ25nTW9kZWwnXSxcclxuICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdERyb3Bkb3duLmh0bWwnLFxyXG4gICAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbigkc2NvcGUpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucHJvY2Vzc0tleWJvYXJkRW50cnkgPSBmdW5jdGlvbihldixpbmRleClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29kZSA9IGV2LmtleUNvZGUgfHwgZXYud2hpY2g7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGtleSA9IGV2LmtleTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy9lbnRlclxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2RlPT0xMyAmJiAoZXYuY3VycmVudFRhcmdldC50eXBlPT1cImJ1dHRvblwiIHx8IGV2LmN1cnJlbnRUYXJnZXQudHlwZT09XCJ0ZXh0XCIpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9tb3ZlIGZvY3VzIHRvIG5leHQgZWxlbWVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV4dD1pbmRleCsxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQ9JHNjb3BlLnBhcmVudEZvcm1JZCtcIi5cIiskc2NvcGUuZHJvcGRvd25JZCtcIi5Ecm9wZG93bkl0ZW1cIituZXh0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW0hPW51bGwpIGVsZW0uZm9jdXMoKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8va2V5ZG93blxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2RlPT00MCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvL21vdmUgZm9jdXMgdG8gbmV4dCBlbGVtZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV4dD1pbmRleCsxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBpZD0kc2NvcGUucGFyZW50Rm9ybUlkK1wiLlwiKyRzY29wZS5kcm9wZG93bklkK1wiLkRyb3Bkb3duSXRlbVwiK25leHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW0hPW51bGwpIGVsZW0uZm9jdXMoKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8va2V5dXBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29kZT09Mzgpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy9tb3ZlIGZvY3VzIHRvIHByZXZpb3VzIGVsZW1lbnRcclxuICAgICAgICAgICAgICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBwcmV2PWluZGV4LTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVsZW1EZWYgPSAkc2NvcGUucGFyZW50Rm9ybUlkK1wiLlwiKyRzY29wZS5kcm9wZG93bklkK1wiLkRyb3Bkb3duSXRlbVwiK3ByZXY7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXY9PS0xKSBlbGVtRGVmID0gJHNjb3BlLnBhcmVudEZvcm1JZCtcIi5cIiskc2NvcGUuZHJvcGRvd25JZCtcInNlYXJjaFwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbURlZik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW0hPW51bGwpIGVsZW0uZm9jdXMoKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLiR3YXRjaCgnc2VsZWN0ZWRJdGVtcycsZnVuY3Rpb24obmV3VmFsdWUsb2xkVmFsdWUpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZSE9b2xkVmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdEl0ZW0obnVsbCxuZXdWYWx1ZSk7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RJdGVtID0gZnVuY3Rpb24oZXYsaXRlbSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkc2NvcGUuaXNNdWx0aXBsZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkSXRlbT0gaXRlbTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubmdNb2RlbC4kc2V0Vmlld1ZhbHVlKCRzY29wZS5zZWxlY3RlZEl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vbmdNb2RlbC4kdmFsaWRhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZWxlbUJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCRzY29wZS5wYXJlbnRGb3JtSWQrXCIuXCIrJHNjb3BlLmRyb3Bkb3duSWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2IT11bmRlZmluZWQpIGVsZW1CdG4uZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUub25TZWxlY3RGbih7aXRlbTokc2NvcGUuc2VsZWN0ZWRJdGVtLG1vZGVsOiRzY29wZS5uZ01vZGVsfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXYhPXVuZGVmaW5lZCkgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5zZWxlY3RlZEl0ZW1zPT1udWxsIHx8ICRzY29wZS5zZWxlY3RlZEl0ZW1zPT11bmRlZmluZWQgfHwgIUFycmF5LmlzQXJyYXkoJHNjb3BlLnNlbGVjdGVkSXRlbXMpKSAkc2NvcGUuc2VsZWN0ZWRJdGVtcz1bXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcG9zID0gJHNjb3BlLnNlbGVjdGVkSXRlbXMubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoaXRlbS5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvczwwKSAkc2NvcGUuc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgJHNjb3BlLnNlbGVjdGVkSXRlbXMuc3BsaWNlKHBvcywxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubmdNb2RlbC4kc2V0Vmlld1ZhbHVlKCRzY29wZS5zZWxlY3RlZEl0ZW1zKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUub25TZWxlY3RGbih7aXRlbTokc2NvcGUuc2VsZWN0ZWRJdGVtcyxtb2RlbDokc2NvcGUubmdNb2RlbH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICRzY29wZS5kcm9wZG93bkJsdXJyZWQgPSBmdW5jdGlvbigpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVsZW1CdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgkc2NvcGUucGFyZW50Rm9ybUlkK1wiLlwiKyRzY29wZS5kcm9wZG93bklkKVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5uZ01vZGVsLiRzZXRUb3VjaGVkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVsZW1TZWFyY2ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgkc2NvcGUucGFyZW50Rm9ybUlkK1wiLlwiKyRzY29wZS5kcm9wZG93bklkK1wic2VhcmNoXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1TZWFyY2ghPW51bGwpIGVsZW1TZWFyY2guZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5yZW1vdmVJdGVtID0gZnVuY3Rpb24oaW5kZXgpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkSXRlbXMuc3BsaWNlKGluZGV4LDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5uZ01vZGVsLiRzZXRWaWV3VmFsdWUoJHNjb3BlLnNlbGVjdGVkSXRlbXMpOyBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuY2xlYXJPbmx5ID0gZnVuY3Rpb24oKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRJdGVtID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9zZXQgbmdNb2RlbCB0byBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5uZ01vZGVsLiRzZXRWaWV3VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9hZEl0ZW1zID0gZnVuY3Rpb24oaXRlbXMpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZHJvcGRvd25JdGVtcyA9IGl0ZW1zO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnNlYXJjaC5zZWFyY2hGaWx0ZXIhPXVuZGVmaW5lZCAmJiAkc2NvcGUuc2VhcmNoLnNlYXJjaEZpbHRlciE9XCJcIikgJHNjb3BlLmRyb3Bkb3duSXRlbXNGaWx0ZXJlZCA9ICRzY29wZS5maWx0ZXJJdGVtcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlICRzY29wZS5kcm9wZG93bkl0ZW1zRmlsdGVyZWQgPSBhbmd1bGFyLmNvcHkoJHNjb3BlLmRyb3Bkb3duSXRlbXMuc2xpY2UoMCw1MCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAkc2NvcGUubG9hZEl0ZW1zT25DaGFuZ2UgPSBmdW5jdGlvbigpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5kcm9wZG93bkl0ZW1zIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnNlYXJjaC5zZWFyY2hGaWx0ZXIhPXVuZGVmaW5lZCAmJiAkc2NvcGUuc2VhcmNoLnNlYXJjaEZpbHRlciE9XCJcIikgJHNjb3BlLmRyb3Bkb3duSXRlbXNGaWx0ZXJlZCA9ICRzY29wZS5maWx0ZXJJdGVtcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlICRzY29wZS5kcm9wZG93bkl0ZW1zRmlsdGVyZWQgPSBhbmd1bGFyLmNvcHkoJHNjb3BlLmRyb3Bkb3duSXRlbXMuc2xpY2UoMCw1MCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gIFxyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmlsdGVySXRlbXMgPSBmdW5jdGlvbigpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5zZWFyY2guc2VhcmNoRmlsdGVyPT1cIlwiKSByZXR1cm4gYW5ndWxhci5jb3B5KCRzY29wZS5kcm9wZG93bkl0ZW1zLnNsaWNlKDAsNTApKTtcclxuICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZHJvcGRvd25JdGVtc0ZpbHRlcmVkPVtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpPTA7aTwkc2NvcGUuZHJvcGRvd25JdGVtcy5sZW5ndGg7aSsrKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmRyb3Bkb3duSXRlbXNbaV0ubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJHNjb3BlLnNlYXJjaC5zZWFyY2hGaWx0ZXIudG9Mb3dlckNhc2UoKSk+LTEpIHRlbXAucHVzaCgkc2NvcGUuZHJvcGRvd25JdGVtc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFuZ3VsYXIuY29weSh0ZW1wKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuY2xlYXIgPSBmdW5jdGlvbihldilcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISRzY29wZS5pc011bHRpcGxlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2IT11bmRlZmluZWQpIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jbGVhck9ubHkoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmNsZWFyTXVsdGlwbGUgPSBmdW5jdGlvbigpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlNlYXJjaC52YWx1ZS5sZW5ndGg9MDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICovIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNjb3BlOntcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGRyb3Bkb3duSXRlbXM6Jz0nLFxyXG4gICAgICAgICAgICBkcm9wZG93bklkOic9JyxcclxuICAgICAgICAgICAgcGFyZW50Rm9ybUlkOic9JyxcclxuICAgICAgICAgICAgc2VhcmNoVGV4dDonPScsXHJcbiAgICAgICAgICAgIGlzTXVsdGlwbGU6Jz0nLFxyXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zOic9PycsXHJcbiAgICAgICAgICAgIG9uU2VsZWN0Rm46JyYnLFxyXG4gICAgICAgICAgICBjbGVhckZuOiAnJicsXHJcbiAgICAgICAgICAgIHNlbGVjdEl0ZW1GbjonJicsXHJcbiAgICAgICAgICAgIGxvYWRJdGVtc0ZuOicmJyxcclxuICAgICAgICAgICAgc2l6ZTonPT8nLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMsY3RybHMpIHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgc2NvcGUuZm9ybSA9IGN0cmxzWzBdO1xyXG4gICAgICAgICAgICAgICAgc2NvcGUubmdNb2RlbD0gY3RybHNbMV07XHJcbiAgICAgICAgICAgICAgICBzY29wZS5zZWxlY3RlZEl0ZW0gPSBudWxsOyAvL3tpZDpudWxsLG5hbWU6c2NvcGUuc2VhcmNoVGV4dH07XHJcbiAgICAgICAgICAgICAgICBzY29wZS5jbGVhckNsb3NlTGluaz1cIkNsZWFyXCI7XHJcbiAgICAgICAgICAgICAgICBzY29wZS5zZWFyY2g9e307XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmIChzY29wZS5kcm9wZG93bkl0ZW1zIT11bmRlZmluZWQpIHNjb3BlLmRyb3Bkb3duSXRlbXNGaWx0ZXJlZCA9IGFuZ3VsYXIuY29weShzY29wZS5kcm9wZG93bkl0ZW1zLnNsaWNlKDAsNTApKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgc2NvcGUuY2xlYXJGbih7dGhlQ2xlYXJGbjogc2NvcGUuY2xlYXJPbmx5fSk7XHJcbiAgICAgICAgICAgICAgICBzY29wZS5zZWxlY3RJdGVtRm4oe3RoZVNlbGVjdEl0ZW1Gbjogc2NvcGUuc2VsZWN0SXRlbX0pO1xyXG4gICAgICAgICAgICAgICAgc2NvcGUubG9hZEl0ZW1zRm4oe3RoZUxvYWRJdGVtc0ZuOiBzY29wZS5sb2FkSXRlbXN9KTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKCFzY29wZS5pc011bHRpcGxlKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5zZWxlY3RlZEl0ZW1zIT1cIlwiICYmIHNjb3BlLnNlbGVjdGVkSXRlbXMhPXVuZGVmaW5lZCAmJiBzY29wZS5zZWxlY3RlZEl0ZW1zIT1udWxsKSBzY29wZS5zZWxlY3RlZEl0ZW09c2NvcGUuc2VsZWN0ZWRJdGVtcztcclxuICAgICAgICAgICAgICAgICAgICBzY29wZS5uZ01vZGVsLiRzZXRWaWV3VmFsdWUoc2NvcGUuc2VsZWN0ZWRJdGVtKTsgXHJcbiAgICAgICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLm5nTW9kZWwuJHNldFZpZXdWYWx1ZShzY29wZS5zZWxlY3RlZEl0ZW1zKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgc2NvcGUuc2hvd1NlYXJjaElucHV0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2NvcGUuaXNNdWx0aXBsZSkgc2NvcGUuY2xlYXJDbG9zZUxpbms9XCJDbG9zZVwiO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgZHJvcGRvd25TaG93ID0gZWxlbVswXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiZHJvcGRvd25cIik7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgYW5ndWxhci5lbGVtZW50KGRyb3Bkb3duU2hvdykub24oXCJzaG93bi5icy5kcm9wZG93blwiLCBmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICBzY29wZS5zaG93U2VhcmNoSW5wdXQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICBsZXQgZWxlbWVudElkID0gc2NvcGUucGFyZW50Rm9ybUlkK1wiLlwiK3Njb3BlLmRyb3Bkb3duSWQrXCJzZWFyY2hcIjtcclxuICAgICAgICAgICAgICAgICAgICAgbGV0IHNlYXJjaElucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTtcclxuICAgICAgICAgICAgICAgICAgICAgaWYgKHNlYXJjaElucHV0IT1udWxsKSBzZWFyY2hJbnB1dC5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGFuZ3VsYXIuZWxlbWVudChkcm9wZG93blNob3cpLm9uKFwiaGlkZGVuLmJzLmRyb3Bkb3duXCIsIGZ1bmN0aW9uKGV2ZW50KXtcclxuICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnNob3dTZWFyY2hJbnB1dCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5zaG93U2VhcmNoSW5wdXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICBzY29wZS5pc1NlbGVjdGVkTXVsdGlwbGUgPSBmdW5jdGlvbihpdGVtKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vbGV0IGl0ZW1zID0gbmdNb2RlbC4kbW9kZWxWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1zID0gc2NvcGUubmdNb2RlbC4kbW9kZWxWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtcyE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGk9MDtpPGl0ZW1zLmxlbmd0aDtpKyspXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbXNbaV0hPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zW2ldLmlkPT1pdGVtLmlkKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgXHJcbn07XG4ndXNlIHN0cmljdCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3REcm9wZG93bk11bHRpcGxlICgkdGltZW91dCkge1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICByZXN0cmljdDogJ0VBJyxcclxuICAgICAgICAgICAgcmVxdWlyZTpbJ15mb3JtJywnbmdNb2RlbCddLFxyXG4gICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0RHJvcGRvd25NdWx0aXBsZS5odG1sJyxcclxuICAgICAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24oJHNjb3BlLCRyb290U2NvcGUsJGVsZW1lbnQsJHRpbWVvdXQsJGNvbXBpbGUpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5DVFJMPSdrdERyb3Bkb3duTXVsdGlwbGUnO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnNlYXJjaD17c2VhcmNoRmlsdGVyOicnfTtcclxuXHRcdFx0XHRpZiAoJHNjb3BlLnNlbGVjdGVkSXRlbXM9PXVuZGVmaW5lZCkgXHQkc2NvcGUuc2VsZWN0ZWRJdGVtcz1bXVxyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdGlmICgkcm9vdFNjb3BlLmdsb2JhbHMuc2NvcGVzPT11bmRlZmluZWQpIFxyXG5cdFx0XHRcdCRyb290U2NvcGUuZ2xvYmFscy5zY29wZXMgPSAkcm9vdFNjb3BlPy5nbG9iYWxzPy5zY29wZXMgPz8ge31cclxuXHRcdFx0XHQkcm9vdFNjb3BlLmdsb2JhbHMuc2NvcGVzIFskc2NvcGUuJGlkXSA9ICRzY29wZVx0XHRcdFx0XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZpZWxkRWxlbWVudD09PXVuZGVmaW5lZCkgJHNjb3BlLmZpZWxkRWxlbWVudCA9IHt9XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmRyb3Bkb3duSXRlbXM9PXVuZGVmaW5lZCkgJHNjb3BlLmRyb3Bkb3duSXRlbXM9W107ICAgICAgICAgIFxyXG5cdFx0XHRcdCRzY29wZS5sb2NhbFZhcnMgPSB7ICBlZGl0TW9kZTogZmFsc2UgICB9XHJcblx0XHRcdFx0XHRcdFx0IFxyXG4gICAgICBcclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0bGV0IGRyb3Bkb3duVGVtcGxhdGU9YFxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgaWQ9XCJwb2themlzZXt7OjokaWR9fVwiICBuZy1pZj1cImxvY2FsVmFycy5lZGl0TW9kZVwiICAgIG5nLWNsYXNzPVwieydzaG93IHNoYWRvdy1zbSBib3JkZXInOiBsb2NhbFZhcnMuZWRpdE1vZGV9XCIgY2xhc3M9XCJzaG93LW1vcmUgICByb3VuZGVkIGJnLXdoaXRlXCIgXHRzdHlsZT1cInotaW5kZXg6MTAwMDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDo5OSU7b3ZlcmZsb3cteTogc2Nyb2xsO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogc3RpY2t5OyAgICB0b3A6IDA7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aW5wdXQgIGlkPVwie3s6OnBhcmVudEZvcm1JZH19Lnt7Ojpkcm9wZG93bklkfX1zZWFyY2hcIiBcclxuXHRcdFx0XHRcdFx0XHRcdG5nLWZvY3VzPVwic2hvd0Ryb3Bkb3duSXRlbXM9dHJ1ZVwiIG5nLWJsdXI9XCJzaG93RHJvcGRvd25JdGVtcz1mYWxzZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRuZy1jbGFzcz1cInsnZm9ybS1jb250cm9sLXhzJzogc2l6ZT09J3NtYWxsJ31cIiBuZy1jaGFuZ2U9XCI6OmxvYWRJdGVtc09uQ2hhbmdlKClcIiBcclxuXHRcdFx0XHRcdFx0XHRcdG5nLW1vZGVsLW9wdGlvbnM9XCJ7IGRlYm91bmNlOiAzMDAgfVwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0bmctbW9kZWw9XCJzZWFyY2guc2VhcmNoRmlsdGVyXCIgXHJcblx0XHRcdFx0XHRcdFx0XHR0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCIgIG5hbWU9XCJ7ezo6cGFyZW50Rm9ybUlkfX0ue3s6OmRyb3Bkb3duSWR9fXNlYXJjaFwiIHN0eWxlPVwid2lkdGg6MTAwJVwiIC8+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IHN0eWxlPVwib3ZlcmZsb3cteTogYXV0bztcIj5cclxuXHRcdFx0XHRcdFx0XHQgXHJcblx0XHRcdFx0XHRcdFx0PGRpdiBuZy1yZXBlYXQ9XCJpdGVtIGluIDo6ZHJvcGRvd25JdGVtcyB0cmFjayBieSBpdGVtLmlkXCIgbmctaWYgPSBcIml0ZW0ubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoLnNlYXJjaEZpbHRlci50b0xvd2VyQ2FzZSgpKSE9LTEgfHwgc2VhcmNoLnNlYXJjaEZpbHRlci50cmltKCk9PScnXCIgID5cclxuXHRcdFx0XHRcdFx0XHRcdDxsYWJlbCBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW47e3s6OmN1c3RvbVN0eWxlSXRlbXN9fVwiIG5nLWNsaWNrPVwiOjpjbGlja0l0ZW0oaXRlbSwkaW5kZXgpXCIgIGNsYXNzPVwiIGJnT25Ib3ZlciB3LTEwMCBhbGlnbi1pdGVtcy1jZW50ZXIga3QtY2hlY2tib3gtbGFiZWxcIiBmb3I9XCJjYmRkLXt7Ojpkcm9wZG93bklkfX0te3s6Oml0ZW0uaWR9fVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXQgIHR5cGU9XCJjaGVja2JveFwiICBuZy1rZXlkb3duID1cIm9uS2V5ZG93bigkZXZlbnQpXCIgIG5nLW1vZGVsPVwiaXNTZWxlY3RlZFtpdGVtLmlkXVwiIG5nLWNoZWNrZWQ9XCJpc1NlbGVjdGVkW2l0ZW0uaWRdXCIgc3R5bGU9XCJvdmVyZmxvdzogaGlkZGVuO1wiIGNsYXNzPVwiIG0tMVwiIG5hbWU9XCJjYmRkLXt7Ojpkcm9wZG93bklkfX0te3s6Oml0ZW0uaWR9fVwiLz4gIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm1sLTEgYm9sZFwiIHN0eWxlPVwie3s6OmN1c3RvbVN0eWxlSXRlbXN9fVwiIG5nLWJpbmQ9XCI6OmdldEl0ZW1OYW1lKGl0ZW0pXCI+IDwvc3Bhbj4gIFx0XHRcdDwvbGFiZWw+XHRcclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cdFxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5gXHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHR2YXIgS2V5Q29kZXMgPSB7XHJcblx0XHRcdFx0QkFDS1NQQUNFIDogOCxcdFRBQktFWSA6IDksXHRSRVRVUk5LRVkgOiAxMyxcdEVTQ0FQRSA6IDI3LCAgU1BBQ0VCQVIgOiAzMixcdExFRlRBUlJPVyA6IDM3LFx0XHRVUEFSUk9XIDogMzgsXHRcdFJJR0hUQVJST1cgOiAzOSxcdERPV05BUlJPVyA6IDQwLFxyXG5cdFx0XHR9O1xyXG5cclxuXHRcdFx0JHNjb3BlLm9uS2V5ZG93biA9IGZ1bmN0aW9uKCAkZXZlbnQpIHtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHQvL2NvbnNvbGUubG9nKCdvbmtleWRvd246ICcrICRldmVudD8ua2V5KVxyXG5cdFx0XHRcdFx0Lypjb25zb2xlLmxvZygkZXZlbnQudGFyZ2V0KVxyXG5cdFx0XHRcclxuXHRcdFx0XHRcdHZhciBlID0gJGV2ZW50O1xyXG5cdFx0XHRcdFx0dmFyICR0YXJnZXQgPSAkKGUudGFyZ2V0KTtcclxuXHRcdFx0XHRcdHZhciBuZXh0VGFiO1xyXG5cdFx0XHRcdFx0c3dpdGNoIChlLmtleUNvZGUpIHtcclxuXHRcdFx0XHRcdFx0Y2FzZSBLZXlDb2Rlcy5FU0NBUEU6XHJcblx0XHRcdFx0XHRcdFx0aWYgKCAkc2NvcGUubG9jYWxWYXJzLmVkaXRNb2RlKSB7XHJcblx0XHRcdFx0XHRcdFx0XHQkc2NvcGUuc3dpdGNoTW9kZSggJGV2ZW50KTtcclxuXHRcdFx0XHRcdFx0XHRcdCAkdGltZW91dChmdW5jdGlvbiAoKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdmb2t1c2lyYW8yIScpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRhcmdldC5mb2N1cygpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRjYXNlIEtleUNvZGVzLlVQQVJST1c6XHJcblx0XHRcdFx0XHRcdFx0bmV4dFRhYiA9IC0gMTtcclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0Y2FzZSBLZXlDb2Rlcy5SRVRVUk5LRVk6IGUucHJldmVudERlZmF1bHQoKTtcclxuXHRcdFx0XHRcdFx0Y2FzZSBLZXlDb2Rlcy5ET1dOQVJST1c6XHJcblx0XHRcdFx0XHRcdFx0bmV4dFRhYiA9IDE7XHJcblx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRpZiAobmV4dFRhYiAhPSB1bmRlZmluZWQpIHtcclxuXHRcdFx0XHRcdFx0Ly8gZG8gdGhpcyBvdXRzaWRlIHRoZSBjdXJyZW50ICRkaWdlc3QgY3ljbGVcclxuXHRcdFx0XHRcdFx0Ly8gZm9jdXMgdGhlIG5leHQgZWxlbWVudCBieSB0YWJpbmRleFxyXG5cdFx0XHRcdFx0ICAgJHRpbWVvdXQoKCkgPT4gJCgnW3RhYmluZGV4PScgKyAocGFyc2VJbnQoJHRhcmdldC5hdHRyKFwidGFiaW5kZXhcIikpICsgbmV4dFRhYikgKyAnXScpLmZvY3VzKCkpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0Ki9cclxuXHRcdFx0fTtcclxuXHJcblxyXG5cdFx0JGVsZW1lbnQub24oIFwia2V5ZG93blwiLCBmdW5jdGlvbihldnQpIHtcclxuXHRcdFx0XHJcblx0XHRcdGNvbnNvbGUubG9nKCAna2V5ZG93biwgZWRpdCBtb2RlPScgKyRzY29wZS5sb2NhbFZhcnMuZWRpdE1vZGUgKTtcclxuXHRcdFx0Y29uc29sZS5sb2coZXZ0KTtcclxuXHRcdFx0aWYgKGV2dC5rZXkgPT1cIkFycm93RG93blwiICkge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdhcnJvd2Rvd24nKVxyXG5cdFx0XHRcdGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgS2V5Ym9hcmRFdmVudChcImtleXByZXNzXCIsIHsgXHRrZXk6IFwiVGFiXCIgfSkpXHJcblx0XHRcdH1cclxuXHRcdFx0XHJcblx0XHRcdGlmIChldnQua2V5ID09XCJFc2NhcGVcIiB8fCBldnQua2V5ID09XCJFbnRlclwiICkge1xyXG5cdFx0XHRcdCRzY29wZS5zd2l0Y2hNb2RlKGV2dClcclxuXHRcdFx0XHRkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHJvcGRvd25tdWx0aXBsZScrJHNjb3BlLiRpZCkuZm9jdXMoeyBmb2N1c1Zpc2libGU6IHRydWUgfSk7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coJ2Zva3VzaXJhbyEgZHJvcGRvd25tdWx0aXBsZScrJHNjb3BlLiRpZClcclxuXHRcdFx0fVxyXG5cdFx0XHQgXHJcblx0XHR9KTtcclxuXHRcdFxyXG5cdFx0JHNjb3BlLm9uRm9jdXMgPSBmdW5jdGlvbiggJGV2ZW50KSB7XHJcblx0XHRcdC8vIGNsZWFyIGFsbCBvdGhlciBpdGVtc1xyXG5cdFx0XHRjb25zb2xlLmxvZygnb25mb2N1cyAnKVxyXG5cdFx0XHRjb25zb2xlLmxvZygkZXZlbnQudGFyZ2V0KVxyXG5cdFx0ICBpZiAoISAkc2NvcGUubG9jYWxWYXJzLmVkaXRNb2RlKSB7XHJcblx0XHRcdCAgY29uc29sZS5sb2coJ2ZvY3VzIHN3aXRjaCB0byAnICsgJHNjb3BlLmxvY2FsVmFycy5lZGl0TW9kZSlcclxuXHRcdCAgfVxyXG5cdFx0fTtcclxuXHJcblxyXG5cdFx0XHRcdCRzY29wZS5nZW5lcmF0ZWJhZGdlcyA9IChzZWxlY3RlZEl0ZW1zKSA9PiB7XHJcblx0XHRcdFx0XHRsZXQgYmFkZ2VzPSc8ZGl2IHN0eWxlPVwid2lkdGg6IDAgIWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6IC01cHggIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDt2aXNpYmlsaXR5OiBoaWRkZW47XCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1zZWNvbmRhcnkgbS0xXCI+PHNwYW4+IEkgPC9zcGFuPjwvZGl2PidcclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdGxldCBiYWRnZVZpc2liaWxpdHkgPSAkc2NvcGUubG9jYWxWYXJzLmVkaXRNb2RlID8gJ3Zpc2libGUnOiAnaGlkZGVuJ1xyXG5cdFx0XHRcdFx0aWYgKHNlbGVjdGVkSXRlbXMpIHNlbGVjdGVkSXRlbXMuZm9yRWFjaCggKGl0ZW0pID0+IHtcdFxyXG5cdFx0XHRcdFx0XHRiYWRnZXMgPSBiYWRnZXMgKyBgXHJcblx0XHRcdFx0XHRcdDxkaXYgIGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc2Vjb25kYXJ5IG0tMVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxzcGFuPiAke2l0ZW0ubmFtZX0gIDwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IHN0eWxlPVwicG9zaXRpb246cmVsYXRpdmVcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxidXR0b24gaXRlbWlkPVwiJHtpdGVtLmlkfVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJvcmRlci0wIHJlbW92ZWJhZGdlXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyByaWdodDogLTEycHg7IHRvcDogLTIycHg7IGNvbG9yOiBibGFjazsgYmFja2dyb3VuZC1jb2xvcjogYXp1cmU7IGJvcmRlci1yYWRpdXM6IDlweDsgcGFkZGluZzogMXB4IDJweDsgdmlzaWJpbGl0eTogJHtiYWRnZVZpc2liaWxpdHl9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9idXR0b24+PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+ICBgXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0cmV0dXJuIGJhZGdlc1xyXG5cdFx0XHRcdH1cclxuXHJcblxyXG5cdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmNsaWNrSXRlbSA9IGZ1bmN0aW9uKGl0ZW0saW5kZXgpXHJcbiAgICAgICAgICAgICAgICB7XHJcblx0XHRcdFx0XHRpZiAoICRzY29wZS5pc1NlbGVjdGVkW2l0ZW0uaWRdKSB7IC8vIFJlbW92ZSBmcm9tIHNlbGVjdGVkXHJcblx0XHRcdFx0XHRcdCRzY29wZS5pc1NlbGVjdGVkW2l0ZW0uaWRdPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcG9zID0gJHNjb3BlLnNlbGVjdGVkSXRlbXMubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoJHNjb3BlLmRyb3Bkb3duSXRlbXNbaW5kZXhdLmlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcz49MCkgJHNjb3BlLnNlbGVjdGVkSXRlbXMuc3BsaWNlKHBvcywxKTsgXHRcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgXHJcblx0XHRcdFx0XHR7IFx0Ly8gYWRkIHRvIHNlbGVjdGVkXHRcclxuXHRcdFx0XHRcdFx0JHNjb3BlLmlzU2VsZWN0ZWRbaXRlbS5pZF09IHRydWVcclxuXHRcdFx0XHRcdFx0JHNjb3BlLnNlbGVjdGVkSXRlbXMucHVzaCh7Li4uaXRlbX0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVx0XHJcblx0XHRcdFx0XHQkc2NvcGUuYmFkZ2Vjb250YWluZXIuaW5uZXJIVE1MID0gJHNjb3BlLmdlbmVyYXRlYmFkZ2VzKCRzY29wZS5zZWxlY3RlZEl0ZW1zKVxyXG5cdFx0XHRcdFx0JHNjb3BlLm9uU2VsZWN0Rm4oIHtpdGVtOiAkc2NvcGUuc2VsZWN0ZWRJdGVtcywgbW9kZWw6IHt9fSApOyAgXHJcbiAgICAgICAgICAgICAgICAgICAvLyAkc2NvcGUubmdNb2RlbC4kc2V0Vmlld1ZhbHVlKCRzY29wZS5zZWxlY3RlZEl0ZW1zKTsgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5zd2l0Y2hNb2RlID0gZnVuY3Rpb24oZXZlbnQpXHJcbiAgICAgICAgICAgICAgICB7ICAgICBcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0Ly8gY2xpY2tlZCBvbiB4IHRvIHJlbW92ZSBiYWRnZSBlbGVtZW50XHJcblx0XHRcdFx0XHRpZiAoZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnZmEtdGltZXMnKSkge1xyXG5cdFx0XHRcdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKVxyXG5cdFx0XHRcdFx0XHR2YXIgcG9zID0gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChldmVudC50YXJnZXQucGFyZW50Tm9kZS5wYXJlbnROb2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5jaGlsZHJlbiwgZXZlbnQudGFyZ2V0LnBhcmVudE5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlKTsvL2dldCBpbmRleCBvZiBjbGlja2VkIGRlbGV0ZSBlbGVtZW50XHJcblx0XHRcdFx0XHRcdGlmIChwb3M+PTApIHtcclxuXHRcdFx0XHRcdFx0XHRwb3MgPSBwb3MtMSAvLyBpZ25vcmUgZmlyc3QgYmFkZ2Ugd2hpY2ggaXMgc3RhdGljXHJcblx0XHRcdFx0XHRcdFx0bGV0IGl0ZW1faWQgPSAkc2NvcGUuc2VsZWN0ZWRJdGVtc1twb3NdLmlkXHJcblx0XHRcdFx0XHRcdFx0JHNjb3BlLmlzU2VsZWN0ZWRbaXRlbV9pZF09IGZhbHNlXHJcblx0XHRcdFx0XHRcdFx0JHNjb3BlLnNlbGVjdGVkSXRlbXMuc3BsaWNlKHBvcywxKVxyXG5cdFx0XHRcdFx0XHRcdCRzY29wZS5iYWRnZWNvbnRhaW5lci5pbm5lckhUTUwgPSAkc2NvcGUuZ2VuZXJhdGViYWRnZXMoJHNjb3BlLnNlbGVjdGVkSXRlbXMpXHJcblx0XHRcdFx0XHRcdFx0JHNjb3BlLm9uU2VsZWN0Rm4oIHtpdGVtOiAkc2NvcGUuc2VsZWN0ZWRJdGVtcywgbW9kZWw6IHt9fSApOyAgXHJcblx0XHRcdFx0XHRcdH1cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0cmV0dXJuXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLmVkaXRNb2RlKSAvL0Nsb3NlIEVkaXQgTU9ERVxyXG5cdFx0XHRcdFx0eyBcclxuXHRcdFx0XHRcdFx0JHNjb3BlLmxvY2FsVmFycy5lZGl0TW9kZSA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0XHQkZWxlbWVudFswXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmYS1hbmdsZS1kb3duJylbMF0uc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcclxuXHRcdFx0XHRcdFx0JGVsZW1lbnRbMF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZmEtYW5nbGUtdXAnKVswXS5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcblx0XHRcdFx0XHRcdGZvciAobGV0IGVsIG9mICRlbGVtZW50WzBdLnF1ZXJ5U2VsZWN0b3JBbGwoJy5yZW1vdmViYWRnZScpKSBlbC5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcblx0XHRcdFx0XHRcdGlmICgkcm9vdFNjb3BlLmdsb2JhbHM/LmRyb3Bkb3duTXVsdGlwbGVPcGVuZWRTY29wZSA9PSAkc2NvcGUuJGlkKSBcdCRyb290U2NvcGUuZ2xvYmFscy5kcm9wZG93bk11bHRpcGxlT3BlbmVkU2NvcGU9bnVsbFxyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlICB7IC8vb3BlbiBFRElUIG1vZGVcclxuXHRcdFx0XHRcdFx0JHJvb3RTY29wZS5nbG9iYWxzLmRyb3Bkb3duTXVsdGlwbGVPcGVuZWRTY29wZSA9JHNjb3BlLiRpZFxyXG5cdFx0XHRcdFx0XHQkc2NvcGUubG9jYWxWYXJzLmVkaXRNb2RlID0gdHJ1ZTtcclxuXHRcdFx0XHRcdFx0Zm9yIChsZXQgZWwgb2YgJGVsZW1lbnRbMF0ucXVlcnlTZWxlY3RvckFsbCgnLnJlbW92ZWJhZGdlJykpIGVsLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XHJcblx0XHRcdFx0XHRcdCRlbGVtZW50WzBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ZhLWFuZ2xlLWRvd24nKVswXS5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcblx0XHRcdFx0XHRcdCRlbGVtZW50WzBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ZhLWFuZ2xlLXVwJylbMF0uc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0fVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZ2V0SXRlbU5hbWUgPSBmdW5jdGlvbihpdGVtKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXHRsZXQgbmFtZVxyXG4gICAgICAgICAgICAgICAgXHRuYW1lPWl0ZW0ubmFtZVxyXG4gICAgICAgICAgICAgICAgXHRpZiAoJHNjb3BlLnNob3dJZCkgbmFtZSA9IG5hbWUgKycgKCcraXRlbS5pZCsnKSdcclxuXHJcbiAgICAgICAgICAgICAgICBcdHJldHVybiBuYW1lXHJcbiAgICAgICAgICAgICAgICB9ICBcclxuXHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RJdGVtc09uTG9hZCA9IGZ1bmN0aW9uKCkvLyBUT0RPIC0gdmlkamV0aSBkYSBsaSBzZSBrb3Jpc3RpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVidWdnZXIgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3M7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5zZWxlY3RlZEl0ZW1zIT11bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBqPTA7ajwkc2NvcGUuc2VsZWN0ZWRJdGVtcy5sZW5ndGg7aisrKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gJHNjb3BlLmRyb3Bkb3duSXRlbXMubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoJHNjb3BlLnNlbGVjdGVkSXRlbXNbal0uaWQpOyAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2lmIGZvdW5kIChhbG1vc3QpIGlkZW50aWNhbCBvYmplY3QgLSByZXBsYWNlIGl0IFdJVEggbmV3ZXIgdmVyc2lvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zPj0wICYmICRzY29wZS5kcm9wZG93bkl0ZW1zW3Bvc10uaWQhPW51bGwpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRyb3Bkb3duSXRlbXNbcG9zXSA9ICRzY29wZS5zZWxlY3RlZEl0ZW1zW2pdICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH07XHJcblx0XHRcdFx0XHJcblxyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHQkZWxlbWVudC5hcHBlbmQoJGNvbXBpbGUoZHJvcGRvd25UZW1wbGF0ZSkoJHNjb3BlKSk7XHJcbiAgICAgICAgICAgICAgICBcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRpZiAoIWRvY3VtZW50LmJvZHkuaGFzQXR0cmlidXRlKCdsaXN0ZW5lcicpKSAgLy9UaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYWN0aXZlIGluIGZpcnN0IGt0RHJvcGRvd25NdWx0aXBsZSBvbiB0aGUgcGFnZSwgYnV0IGltcG9ydGFudCBmb3IgYWxsIGt0ZHJvcGRvd25tdWx0aXBsZXMhXHJcblx0XHRcdFx0e1x0XHRcdFxyXG5cdFx0XHRcdFx0ZG9jdW1lbnQuYm9keS5zZXRBdHRyaWJ1dGUoJ2xpc3RlbmVyJywgJHNjb3BlLiRpZClcdFxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIC8vIENoZWNrIGlmIGNsaWNrZWQgb3V0c2lkZSBkcm9wZG93biAtLT4gY2xvc2UgaXRcclxuXHRcdFx0XHRcdFx0ZnVuY3Rpb24oZSl7XHJcblx0XHRcdFx0XHRcdFx0dmFyIG9wZW5lZFNjb3BlID0gJHJvb3RTY29wZS5nbG9iYWxzPy5kcm9wZG93bk11bHRpcGxlT3BlbmVkU2NvcGVcclxuXHRcdFx0XHRcdFx0XHR2YXIgb3BlbmVkRHJvcGRvd24gPSAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJkcm9wZG93bm11bHRpcGxlXCIgKyBvcGVuZWRTY29wZSApIFxyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdGlmICggb3BlbmVkRHJvcGRvd24gJiYgIW9wZW5lZERyb3Bkb3duPy5wYXJlbnROb2RlLmNvbnRhaW5zKGUudGFyZ2V0KSApIC8vaXMgY2xpY2sgb3V0c2lkZSBkcm9wZG93biA/XHJcblx0XHRcdFx0XHRcdFx0eyBcclxuXHRcdFx0XHRcdFx0XHRcdC8vZGVidWdnZXJcclxuXHRcdFx0XHRcdFx0XHRcdG9wZW5lZERyb3Bkb3duLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ZhLWFuZ2xlLWRvd24nKVswXS5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xyXG5cdFx0XHRcdFx0XHRcdFx0b3BlbmVkRHJvcGRvd24uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZmEtYW5nbGUtdXAnKVswXS5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcblx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdGZvciAobGV0IGVsIG9mIG9wZW5lZERyb3Bkb3duLnF1ZXJ5U2VsZWN0b3JBbGwoJy5yZW1vdmViYWRnZScpKSBlbC5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIG90aGVyc2NvcGUgPSAkcm9vdFNjb3BlLmdsb2JhbHM/LnNjb3Blcz8uW29wZW5lZFNjb3BlXVxyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKG90aGVyc2NvcGUpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0b3RoZXJzY29wZS4kZXZhbEFzeW5jKCAoKT0+IHtvdGhlcnNjb3BlLmxvY2FsVmFycy5lZGl0TW9kZT1mYWxzZSB9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0b3RoZXJzY29wZS4kZGlnZXN0KCk7XHJcblx0XHRcdFx0XHRcdFx0XHQgIH1cdFxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHR9KS8vY2xpY2tcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIFxyXG5cdFx0XHRcclxuICAgICAgICAgICAgc2NvcGU6XHR7XHJcblx0XHRcdFx0ZHJvcGRvd25JdGVtczonPScsXHJcblx0XHRcdFx0ZHJvcGRvd25JZDonPScsXHJcblx0XHRcdFx0cGFyZW50Rm9ybUlkOic9JyxcclxuXHRcdFx0XHRzZWFyY2hUZXh0Oic9JyxcclxuXHRcdFx0XHRzZWxlY3RlZEl0ZW1zOic9PycsXHJcblx0XHRcdFx0cmVxdWlyZWRGaWVsZDonPT8nLFxyXG5cdFx0XHRcdG9uU2VsZWN0Rm46JyYnLFxyXG5cdFx0XHRcdG9wdGlvbnNGbjogJz0/JyxcclxuXHRcdFx0XHRzZWxlY3RJdGVtRm46JyYnLFxyXG5cdFx0XHRcdGxvYWRJdGVtc0ZuOicmJyxcclxuXHRcdFx0XHRzZXRJdGVtRm46JyYnLFxyXG5cdFx0XHRcdHNpemU6Jz0/JyxcclxuXHRcdFx0XHRzaG93SWQ6Jz0/JyxcclxuXHRcdFx0XHRtb2RlbFR5cGU6Jz0/JyxcclxuXHRcdFx0XHRjdXN0b21TdHlsZUl0ZW1zOic9PycsXHJcblx0XHRcdFx0ZmllbGRFbGVtZW50Oic9PydcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzLCBjdHJscykge1xyXG4gICAgICAgICAgICAgICAgc2NvcGUuYmFkZ2Vjb250YWluZXIgPSBlbGVtWzBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJiYWRnZWNvbnRhaW5lclwiKVswXVxyXG4gICAgICAgICAgICAgICAgc2NvcGUuZm9ybSA9IGN0cmxzWzBdO1xyXG4gICAgICAgICAgICAgICAgc2NvcGUubmdNb2RlbD0gY3RybHNbMV07XHJcbiAgICAgICAgICAgICAgICBzY29wZS5zZWxlY3RlZEl0ZW0gPSBudWxsOyAvL3tpZDpudWxsLG5hbWU6c2NvcGUuc2VhcmNoVGV4dH07XHJcbiAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoc2NvcGUuc2VsZWN0ZWRJdGVtcykpIHNjb3BlLnNlbGVjdGVkSXRlbXM9W11cclxuXHRcdFx0XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vRm9yIERPTSAtPiBtb2RlbCB2YWxpZGF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBzY29wZS5uZ01vZGVsLiRwYXJzZXJzLnVuc2hpZnQoZnVuY3Rpb24odmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWxpZCA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5yZXF1aXJlZEZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWU/Lmxlbmd0aD09PTApIHZhbGlkID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5uZ01vZGVsLiRzZXRWYWxpZGl0eSgncmVxdWlyZWQnLCB2YWxpZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsaWQgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIC8vRm9yIG1vZGVsIC0+IERPTSB2YWxpZGF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLm5nTW9kZWwuJGZvcm1hdHRlcnMudW5zaGlmdChmdW5jdGlvbih2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbGlkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLnJlcXVpcmVkRmllbGQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZT8ubGVuZ3RoPT09MCkgdmFsaWQgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5uZ01vZGVsLiRzZXRWYWxpZGl0eSgncmVxdWlyZWQnLCB2YWxpZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICBzY29wZS5jbGVhclNlbGVjdGVkSXRlbXMgPSBmdW5jdGlvbigpIC8vXHRUT0RPIC0gdmlkamV0aSBkYSBsaSBzZSBrb3Jpc3RpXHJcbiAgICAgICAgICAgICAgICB7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5iYWRnZWNvbnRhaW5lci5pbm5lckhUTUwgID0gc2NvcGUuZ2VuZXJhdGViYWRnZXMoc2NvcGUuc2VsZWN0ZWRJdGVtcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9zZXQgbmdNb2RlbCB0byBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLm5nTW9kZWwuJHNldFZpZXdWYWx1ZShudWxsKTsgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgc2NvcGUub3B0aW9uc0ZuID0ge2NsZWFySXRlbXM6IHNjb3BlLmNsZWFyU2VsZWN0ZWRJdGVtc307XHJcbiAgICAgICAgICAgICAgICBzY29wZS5zZWxlY3RJdGVtRm4oe3RoZVNlbGVjdEl0ZW1Gbjogc2NvcGUuc2VsZWN0SXRlbX0pO1xyXG4gICAgICAgICAgICAgICAgc2NvcGUubG9hZEl0ZW1zRm4oe3RoZUxvYWRJdGVtc0ZuOiBzY29wZS5sb2FkSXRlbXN9KTtcclxuICAgICAgICAgICAgICAgIHNjb3BlLnNldEl0ZW1Gbih7dGhlU2V0SXRlbUZuOiBzY29wZS5zZXRJdGVtfSk7XHJcblx0XHRcdFx0XHJcbiBcclxuXHRcdFx0ICAgc2NvcGUuJHdhdGNoKCdzZWxlY3RlZEl0ZW1zJyxmdW5jdGlvbihuZXdWYWx1ZSxvbGRWYWx1ZSl7XHJcbiBcclxuXHRcdFx0XHQvL2RlYnVnZ2VyXHRcclxuXHRcdFx0XHRcdGlmIChzY29wZS5pc1NlbGVjdGVkPT11bmRlZmluZWQpIFxyXG5cdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRzY29wZS5pc1NlbGVjdGVkPXt9XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0c2NvcGUuYmFkZ2Vjb250YWluZXIuaW5uZXJIVE1MICA9IHNjb3BlLmdlbmVyYXRlYmFkZ2VzKG5ld1ZhbHVlKVxyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRpZiAobmV3VmFsdWUpIG5ld1ZhbHVlLmZvckVhY2hcclxuXHRcdFx0XHRcdFx0XHQoaXRlbSA9PiB7XHRcclxuXHRcdFx0XHRcdFx0XHRcdHNjb3BlLmlzU2VsZWN0ZWRbaXRlbS5pZF0gPSB0cnVlIFxyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdCAgIH0pXHJcblx0XHRcdCAgXHJcbiAgICAgICAgICAgICAgLy8gICBGT1IgVEVTVCBPTkxZICEhXHJcblx0XHRcdCAgLypcclxuXHRcdFx0ICBzY29wZS4kd2F0Y2goJ2Ryb3Bkb3duSXRlbXMnLGZ1bmN0aW9uKG5ld1ZhbHVlLG9sZFZhbHVlKXtcclxuXHRcdFx0XHRcdC8vZGVidWdnZXJcclxuXHRcdFx0XHRcdCBpZiAobmV3VmFsdWU9PXVuZGVmaW5lZCkgcmV0dXJuXHJcblx0XHRcdFx0XHQgc2NvcGUuaXNTZWxlY3RlZD17fVxyXG5cdFx0XHRcdFx0IHNjb3BlLnNlbGVjdGVkSXRlbXM9W11cclxuXHRcdFx0XHRcdCBsZXQgc2lkID0gc2NvcGUuJGlkIFxyXG5cdFx0XHRcdFx0IHNjb3BlLmJhZGdlY29udGFpbmVyLmlubmVySFRNTCAgPSBzY29wZS5nZW5lcmF0ZWJhZGdlcyhzY29wZS5zZWxlY3RlZEl0ZW1zKVxyXG4gICAgICAgICAgICAgICAgIH0pICAgIFxyXG4gICAgICAgICAgICAgICAgKi8gICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gIFxyXG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0RHJvcGRvd25TdGFuZGFyZCAoJHRpbWVvdXQsICRyb290U2NvcGUsIFV0aWxpdHlTZXJ2aWNlKSB7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnRUEnLFxyXG4gICAgICAgICAgICByZXF1aXJlOlsnXmZvcm0nLCduZ01vZGVsJ10sXHJcbiAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3REcm9wZG93blN0YW5kYXJkLmh0bWwnLFxyXG4gICAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbigkc2NvcGUsJGVsZW1lbnQsJHRpbWVvdXQsJHJvb3RTY29wZSwgVXRpbGl0eVNlcnZpY2UpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlmICAoJHNjb3BlLmlzTXVsdGlwbGU9PXVuZGVmaW5lZCkgJHNjb3BlLmlzTXVsdGlwbGUgPSBmYWxzZSBcclxuICAgICAgICAgICAgICAgICRzY29wZS5DVFJMPSdrdERyb3Bkb3duU3RhbmRhcmQnO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnNlYXJjaD17c2VhcmNoRmlsdGVyOicnfTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5tb2RlbCA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtczoge30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZWRJdGVtczogW11cclxuICAgICAgICAgICAgICAgIH07XHJcblx0XHRcdFx0XHRcclxuXHRcdFxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5kcm9wZG93bkl0ZW1zPT11bmRlZmluZWQpICRzY29wZS5kcm9wZG93bkl0ZW1zPVtdOyAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZWRpdE1vZGU9ZmFsc2U7XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICRzY29wZS4kd2F0Y2goXCJzZWxlY3RlZEl0ZW1zXCIsZnVuY3Rpb24obmV3VmFsdWUsb2xkVmFsdWUpeyAgLy8geiBwYXJhbWV0cmEgXCJzZWxlY3RlZEl0ZW1zXCIgcHVuaSBzZWxlY3RlZEl0ZW1zIG9iamVrdCBpeiBkcm9wZG93biBlbGVtZW5hdGEgLSBkZWZhdWx0bmEgdnJpamVkbm9zdCAvL1RPRE8gIC0gVklESkVUSSBEQSBMSSBPVk8gVFJFQkEgVU9QQ0VcclxuICAgICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZSE9PXVuZGVmaW5lZCAmJiAob2xkVmFsdWU/LmlkICE9IG5ld1ZhbHVlPy5pZCkgKSB7XHJcblx0XHRcdFx0XHRcdFx0Ly9kZWJ1Z2dlciAvL2t0ZHJvcGRvd25zdGFuZGFyZCBzZWxlY3RlZEl0ZW1zICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RJdGVtc09uTG9hZCgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgIFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0SXRlbSA9IGZ1bmN0aW9uKCkgIHtcclxuXHRcdFx0XHRcdFx0Ly9kZWJ1Z2dlciAvL2t0RHJvcGRvd25TdGFuZGFyZCAgLy9zZWxlY3RJdGVtIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmlzTXVsdGlwbGU9PWZhbHNlKXtcclxuXHJcblx0XHRcdFx0XHRcdFx0aWYgICgkc2NvcGUubW9kZWw/LmlkPT1cIlwiICkgeyAvLyBpZiBtYW51YWxseSBzZWxlY3RlZCAnbm9uZScgaXRlbSAoZmlyc3QgaXRlbSlcclxuXHRcdFx0XHRcdFx0XHRcdCAgJHNjb3BlLm1vZGVsLnNlbGVjdGVkSXRlbXM9bnVsbDtcclxuXHRcdFx0XHRcdFx0XHRcdCAkc2NvcGUubmdNb2RlbC4kc2V0Vmlld1ZhbHVlKCAkc2NvcGUubW9kZWwuaWQgKTtcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2UgIGlmICgkc2NvcGUubW9kZWw/LmlkPT11bmRlZmluZWQgKSB7XHRcclxuXHRcdFx0XHRcdFx0XHQgICBpZiAoJHNjb3BlLm1vZGVsPy5zZWxlY3RlZEl0ZW1zPy5pZCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgJHNjb3BlLm1vZGVsLmlkID0gJHNjb3BlLm1vZGVsLnNlbGVjdGVkSXRlbXMuaWRcclxuXHRcdFx0XHRcdFx0XHQgICB9IFxyXG5cdFx0XHRcdFx0XHRcdCAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9ICRzY29wZS5kcm9wZG93bkl0ZW1zLm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKCRzY29wZS5tb2RlbC5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcz49MCAmJiAkc2NvcGUuZHJvcGRvd25JdGVtc1twb3NdLmlkIT1udWxsKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubW9kZWwuc2VsZWN0ZWRJdGVtcyA9IGFuZ3VsYXIuY29weSgkc2NvcGUuZHJvcGRvd25JdGVtc1twb3NdKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5uZ01vZGVsLiRzZXRWaWV3VmFsdWUoJHNjb3BlLm1vZGVsLnNlbGVjdGVkSXRlbXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgXHJcblx0XHRcdFx0XHRcdFx0Ly9pZiBtdWx0aXBsZVxyXG5cdFx0XHRcdFx0XHRcdCAgaWYgKCRzY29wZS5tb2RlbC5zZWxlY3RlZEl0ZW1zPT1udWxsIHx8ICRzY29wZS5tb2RlbC5zZWxlY3RlZEl0ZW1zPT11bmRlZmluZWQgfHwgIUFycmF5LmlzQXJyYXkoJHNjb3BlLm1vZGVsLnNlbGVjdGVkSXRlbXMpKSAkc2NvcGUubW9kZWwgPSB7c2VsZWN0ZWRJdGVtczpbXX07XHJcblx0XHRcdFx0XHRcdFx0ICAkc2NvcGUubmdNb2RlbC4kc2V0Vmlld1ZhbHVlKCRzY29wZS5tb2RlbC5zZWxlY3RlZEl0ZW1zKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUub25TZWxlY3RGbih7aXRlbTokc2NvcGUubW9kZWwuc2VsZWN0ZWRJdGVtcyAsIG1vZGVsOiRzY29wZS5uZ01vZGVsfSk7ICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuc2V0SXRlbSA9IGZ1bmN0aW9uKGl0ZW0pIC8vIEV4dGVybmFseSBjYWxsZWRcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5pZCE9dW5kZWZpbmVkICYmIGl0ZW0uaWQ9PW51bGwpICRzY29wZS5tb2RlbC5zZWxlY3RlZEl0ZW1zPWl0ZW0uaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAkc2NvcGUubW9kZWwuc2VsZWN0ZWRJdGVtcz1pdGVtOyAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucmVtb3ZlSXRlbSA9IGZ1bmN0aW9uKGluZGV4KVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubW9kZWwuZGVsZXRlZEl0ZW1zLnB1c2goJHNjb3BlLm1vZGVsLnNlbGVjdGVkSXRlbXNbaW5kZXhdKTtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubW9kZWwuc2VsZWN0ZWRJdGVtcy5zcGxpY2UoaW5kZXgsMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm5nTW9kZWwuJHNldFZpZXdWYWx1ZSgkc2NvcGUubW9kZWwuc2VsZWN0ZWRJdGVtcyk7IFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5jbGVhck9ubHkgPSBmdW5jdGlvbigpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlbCA9ICRlbGVtZW50WzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxbMF0uZm9jdXMoKSAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm1vZGVsLmlkID0gbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3NldCBuZ01vZGVsIHRvIG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm5nTW9kZWwuJHNldFZpZXdWYWx1ZShudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubmdNb2RlbC4kdG91Y2hlZCA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9hZEl0ZW1zID0gZnVuY3Rpb24oaXRlbXMpIC8vRXh0ZXJuYWxseSBjYWxsZWRcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbXMhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5kcm9wZG93bkl0ZW1zID0gaXRlbXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuc2VhcmNoLnNlYXJjaEZpbHRlciE9dW5kZWZpbmVkICYmICRzY29wZS5zZWFyY2guc2VhcmNoRmlsdGVyIT1cIlwiKSAkc2NvcGUuZHJvcGRvd25JdGVtc0ZpbHRlcmVkID0gJHNjb3BlLmZpbHRlckl0ZW1zKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgJHNjb3BlLmRyb3Bkb3duSXRlbXNGaWx0ZXJlZCA9IGFuZ3VsYXIuY29weSgkc2NvcGUuZHJvcGRvd25JdGVtcy5zbGljZSgwLDUwKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuXHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICRzY29wZS5zZXRFZGl0TW9kZSA9IGZ1bmN0aW9uKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5lZGl0TW9kZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAgeyAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDtpPCRzY29wZS5tb2RlbC5kZWxldGVkSXRlbXMubGVuZ3RoO2krKylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5tb2RlbC5zZWxlY3RlZEl0ZW1zLnB1c2goJHNjb3BlLm1vZGVsLmRlbGV0ZWRJdGVtc1tpXSk7ICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5tb2RlbC5kZWxldGVkSXRlbXMubGVuZ3RoPTA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5hY2NlcHRDaGFuZ2VzID0gZnVuY3Rpb24oKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5lZGl0TW9kZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5tb2RlbC5kZWxldGVkSXRlbXMubGVuZ3RoPTA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RJdGVtc09uTG9hZCA9IGZ1bmN0aW9uKCkgLy8gZmlsbCBcIm1vZGVsLnNlbGVjdGVkSXRlbXNcIiBmcm9tIHByb3BzXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICBsZXQgcG9zO1xyXG4gICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlciAvL3NlbGVjdEl0ZW1zT25Mb2FkXHJcblx0XHRcdFx0ICAgJHNjb3BlLmRyb3Bkb3duSXRlbXMuc29ydChVdGlsaXR5U2VydmljZS5nZXRTb3J0TWV0aG9kKFsnYW5hbWUnXSwgJHJvb3RTY29wZS5nbG9iYWxzPy5jdXJyZW50VXNlcj8ubGFuZ09iaj8uQ29kZSApKVxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICAgIGlmICggJHNjb3BlLmlzTXVsdGlwbGU9PWZhbHNlICkgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJHNjb3BlLmRyb3Bkb3duSXRlbXMgJiYgJHNjb3BlLmRyb3Bkb3duSXRlbXMubGVuZ3RoPjApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSAkc2NvcGUuZHJvcGRvd25JdGVtcy5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZigkc2NvcGUuc2VsZWN0ZWRJdGVtcz8uaWQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcz49MCAmJiAkc2NvcGUuZHJvcGRvd25JdGVtc1twb3NdLmlkICE9IG51bGwpIHsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubW9kZWwuc2VsZWN0ZWRJdGVtcyA9ICRzY29wZS5kcm9wZG93bkl0ZW1zW3Bvc107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5tb2RlbC5pZCA9ICRzY29wZS5kcm9wZG93bkl0ZW1zW3Bvc10uaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG5cdFx0XHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm1vZGVsLnNlbGVjdGVkSXRlbXMgPSB1bmRlZmluZWRcclxuXHRcdFx0XHRcdFx0XHRcdFx0JHNjb3BlLm1vZGVsLmlkID0gdW5kZWZpbmVkIFx0XHRcdFx0XHRcdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0aWYgKCRzY29wZS5pc011bHRpcGxlKSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubW9kZWwuc2VsZWN0ZWRJdGVtcz1bXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBqPTA7ajwkc2NvcGUuc2VsZWN0ZWRJdGVtcy5sZW5ndGg7aisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5zZWxlY3RlZEl0ZW1zW2pdIT09bnVsbCAmJiAkc2NvcGUuZHJvcGRvd25JdGVtcyE9PXVuZGVmaW5lZCAmJiAkc2NvcGUuZHJvcGRvd25JdGVtcy5sZW5ndGg+MCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQgcG9zID0gJHNjb3BlLmRyb3Bkb3duSXRlbXMubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoJHNjb3BlLnNlbGVjdGVkSXRlbXNbal0uaWQpO1xyXG5cdFx0XHRcdFx0ICBcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHBvcz49MCAmJiAkc2NvcGUuZHJvcGRvd25JdGVtc1twb3NdLmlkIT1udWxsKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCRzY29wZS5tb2RlbC5zZWxlY3RlZEl0ZW1zLnB1c2goJHNjb3BlLmRyb3Bkb3duSXRlbXNbcG9zXSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmICgkc2NvcGUubW9kZWwuc2VsZWN0ZWRJdGVtcy5sZW5ndGg9PTApICRzY29wZS5tb2RlbC5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzY29wZTp7XHJcbiAgICAgICAgICAgICAgICBkcm9wZG93bkl0ZW1zOic9JyxcclxuICAgICAgICAgICAgICAgIGRyb3Bkb3duSWQ6Jz0nLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50Rm9ybUlkOic9JyxcclxuICAgICAgICAgICAgICAgIHNlYXJjaFRleHQ6Jz0nLFxyXG4gICAgICAgICAgICAgICAgaXNNdWx0aXBsZTonPScsXHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zOic9PycsXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZEZpZWxkOic9PycsXHJcbiAgICAgICAgICAgICAgICBvblNlbGVjdEZuOicmJyxcclxuICAgICAgICAgICAgICAgIGNsZWFyRm46ICcmJyxcclxuICAgICAgICAgICAgICAgIHNlbGVjdEl0ZW1GbjonJicsXHJcbiAgICAgICAgICAgICAgICBsb2FkSXRlbXNGbjonJicsXHJcbiAgICAgICAgICAgICAgICBzZXRJdGVtRm46JyYnLFxyXG4gICAgICAgICAgICAgICAgc2l6ZTonPT8nLFxyXG4gICAgICAgICAgICAgICAgc2hvd0lkOic9PycsXHJcbiAgICAgICAgICAgICAgICBtb2RlbFR5cGU6Jz0/JyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzLGN0cmxzKSB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHNjb3BlLmZvcm0gPSBjdHJsc1swXTtcclxuICAgICAgICAgICAgICAgIHNjb3BlLm5nTW9kZWw9IGN0cmxzWzFdO1xyXG4gICAgICAgICAgICAgICAgXHJcblx0XHRcdFx0XHJcbiAgICAgICAgICAgICAgICBzY29wZS5jbGVhckZuKHt0aGVDbGVhckZuOiBzY29wZS5jbGVhck9ubHl9KTtcclxuICAgICAgICAgICAgICAgIHNjb3BlLnNlbGVjdEl0ZW1Gbih7dGhlU2VsZWN0SXRlbUZuOiBzY29wZS5zZWxlY3RJdGVtfSk7XHJcbiAgICAgICAgICAgICAgICBzY29wZS5sb2FkSXRlbXNGbih7dGhlTG9hZEl0ZW1zRm46IHNjb3BlLmxvYWRJdGVtc30pO1xyXG4gICAgICAgICAgICAgICAgc2NvcGUuc2V0SXRlbUZuKHt0aGVTZXRJdGVtRm46IHNjb3BlLnNldEl0ZW19KTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgc2NvcGUuc2VsZWN0SXRlbXNPbkxvYWQoKTsgXHJcblxyXG5cdFx0XHRcdC8qXHJcbiAgICAgICAgICAgICAgICBzY29wZS5pc1NlbGVjdGVkTXVsdGlwbGUgPSBmdW5jdGlvbihpdGVtKVxyXG4gICAgICAgICAgICAgICAgeyAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5pZCE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbXMgPSBzY29wZS5uZ01vZGVsLiRtb2RlbFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wO2k8aXRlbXMubGVuZ3RoO2krKylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtc1tpXSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbXNbaV0uaWQ9PWl0ZW0uaWQpIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0qL1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gIFxyXG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0RHluYW1pY1Jlc291cmNlICgpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgIHJlc3RyaWN0OiAnQScsIFxyXG4gICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uICgkc2NvcGUsICRyb290U2NvcGUsUmVzb3VyY2VzRGF0YVNlcnZpY2UsUHJvY2Vzc2luZ1NlcnZpY2UsJHRpbWVvdXQsTWVzc2FnaW5nU2VydmljZSxHcmlkc3RlclNlcnZpY2UpIHtcclxuXHRcclxuICAgICAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2U7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnM9PXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycz17fTsgICAgICAgIFxyXG4gICAgICAgIGlmICgkc2NvcGUuZm9ybURhdGEgPT0gdW5kZWZpbmVkKSAkc2NvcGUuZm9ybURhdGE9W3t9XTtcclxuICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhLmxlbmd0aCA9PSAwKSAkc2NvcGUuZm9ybURhdGFbMF09e307XHJcbiBcclxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmlzUmVzb3VyY2VTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICBcclxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnBpY2tCdXR0b25DbGlja2VkPWZhbHNlO1xyXG5cdFx0XHRcdCRzY29wZS5sb2NhbFZhcnMucGlja0J1dHRvbkxhYmVsPSdDaG9vc2UgZGF0YXNldC4uJztcclxuXHRcdFx0ICAkc2NvcGUuc2VsZWN0ZWRSZXNvdXJjZT1udWxsO1x0XHJcblx0XHRcdFx0JHNjb3BlLnNlbGVjdGVkRGF0YVJlY29yZD1mYWxzZTtcclxuXHRcdFx0XHQkc2NvcGUudGFza0lkPTA7XHRcclxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zID0ge1xyXG4gICAgICAgICAgICAgIGNvbHVtbkRlZnM6IFtdLFxyXG4gICAgICAgICAgICAgIGRhdGE6IFtdLFxyXG5cdFx0XHRcdFx0XHRcdGVuYWJsZUdyaWRNZW51OiB0cnVlLFxyXG5cdFx0XHRcdFx0XHRcdHNob3dHcmlkRm9vdGVyOiB0cnVlLFxyXG5cdFx0XHRcdFx0XHRcdHNob3dDb2x1bW5Gb290ZXI6IGZhbHNlLFxyXG5cdFx0XHRcdFx0XHRcdGVuYWJsZVJvd1NlbGVjdGlvbjogdHJ1ZSxcclxuXHRcdFx0XHRcdFx0ICAgbXVsdGlTZWxlY3Q6IHRydWUsXHJcblx0XHRcdFx0XHRcdCAgIGVuYWJsZUhvcml6b250YWxTY3JvbGxiYXIgOiAyLCBcclxuXHRcdFx0XHRcdFx0ICAgZW5hYmxlVmVydGljYWxTY3JvbGxiYXIgOiAyLFxyXG5cdFx0XHRcdFx0XHQgICBlbmFibGVGaWx0ZXJpbmc6IHRydWUsXHJcblx0XHRcdFx0XHRcdCAgIGVuYWJsZVJvd0hlYWRlclNlbGVjdGlvbjogdHJ1ZSxcclxuXHRcdFx0XHRcdFx0ICAgZW5hYmxlQ29sdW1uUmVzaXppbmc6IHRydWUsXHJcblx0XHRcdFx0XHRcdCAgIGF1dG9SZXNpemU6dHJ1ZSxcclxuXHRcdFx0XHRcdFx0ICAgbWluUm93c1RvU2hvdzogNCxcclxuXHRcdFx0XHRcdFx0ICAgbWluaW11bUNvbHVtblNpemU6IDQwLFxyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdFx0ICAgfVxyXG5cdFx0XHRcdFx0ICAgXHJcblx0XHRcdFx0XHQgICBcclxuXHRcdFx0XHRcdCAgIFxyXG5cdFx0XHRcdFx0ICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uczIgPSB7XHJcblx0XHRcdFx0XHRcdFx0Ly9lbmFibGVHcmlkTWVudTogdHJ1ZSxcclxuXHRcdFx0XHRcdFx0XHRzaG93R3JpZEZvb3RlcjogZmFsc2UsXHJcblx0XHRcdFx0XHRcdFx0c2hvd0NvbHVtbkZvb3RlcjogdHJ1ZSxcclxuXHRcdFx0XHRcdFx0XHRlbmFibGVSb3dTZWxlY3Rpb246IGZhbHNlLFxyXG5cdFx0XHRcdFx0XHQgICBtdWx0aVNlbGVjdDogZmFsc2UsXHJcblx0XHRcdFx0XHRcdCAgZW5hYmxlSG9yaXpvbnRhbFNjcm9sbGJhciA6IHRydWUsIFxyXG5cdFx0XHRcdFx0XHQgIGVuYWJsZVZlcnRpY2FsU2Nyb2xsYmFyIDogdHJ1ZSxcclxuXHRcdFx0XHRcdFx0ICAvLyBlbmFibGVGaWx0ZXJpbmc6IHRydWUsXHJcblx0XHRcdFx0XHRcdCAgZW5hYmxlUm93SGVhZGVyU2VsZWN0aW9uOiB0cnVlLCAvL2ZhbHNlXHJcbiAgICAgICAgICAgICAgc2hvd0hlYWRlcjp0cnVlLFxyXG5cdFx0XHRcdFx0XHQgIGVuYWJsZUNvbHVtblJlc2l6aW5nOiB0cnVlLFxyXG5cdFx0XHRcdFx0XHQgICBhdXRvUmVzaXplOnRydWUsXHJcblx0XHRcdFx0XHRcdCAgIG1pblJvd3NUb1Nob3c6IDQsXHJcbiAgICAgICAgICAgICAgIGRpc3BsYXlzZWxlY3Rpb25DaGVja2JveDpmYWxzZSxcclxuICAgICAgICAgICAgICAgZW5hYmxlR3JpZE1lbnU6IHRydWUsXHJcblx0XHRcdFx0XHRcdCBcclxuXHRcdFx0XHRcdCAgIH1cclxuXHRcdFx0XHRcdCAgIFxyXG5cdFx0XHRcdFx0XHQkc2NvcGUucmVsYXRpb25zaGlwVHlwZSA9ICRzY29wZS5mZC5tYXhMZW5ndGg7XHJcbiAgICAgICAgICAgIC8vaWYgKCRzY29wZS5yZWxhdGlvbnNoaXBUeXBlPjIpICRzY29wZS5yZWxhdGlvbnNoaXBUeXBlPTI7XHJcblx0XHRcdFx0XHRcdFxyXG4gICAgICAgICAgJHNjb3BlLmNvbExlbmd0aCA9IFsnY29sLWxnLTInLCdjb2wtbGctNCcsJ2NvbC1sZy02JywnY29sLWxnLTgnLCdjb2wtbGctMTAnLCdjb2wtbGctMTInLCdjb2wtbGctMTQnLCdjb2wtbGctMTYnLCdjb2wtbGctMTgnLCdjb2wtbGctMjAnLCdjb2wtbGctMjInLCdjb2wtbGctMjQnXTtcclxuICAgICAgIFxyXG4gICAgICAgICAgLy8kc2NvcGUuZmQudEl0ZW1WYWx1ZSA9ICRzY29wZS5mZC5mb3JtRGVmO1xyXG4gICAgICAgICAgLy9pZiAodHlwZW9mICRzY29wZS5mZC50SXRlbVZhbHVlPT1cInN0cmluZ1wiKSAkc2NvcGUuZmQudEl0ZW1WYWx1ZT1bXTsgXHJcblx0XHQgICRzY29wZS5mZC5yZXNvdXJjZXNMaXN0PVtdO1xyXG4gICAgICAgICAgJHNjb3BlLnJlc291cmNlTGlzdExlbmd0aD0wO1xyXG4gICAgICAgICAgJHNjb3BlLmZkLnNlbGVjdGVkRGF0YXNldCA9IDA7XHJcbiAgICAgICAgICBpZiAoJHNjb3BlLmZkLnJlbGF0ZWQhPW51bGwpICRzY29wZS5mZC5zZWxlY3RlZERhdGFzZXQgPSAkc2NvcGUuZmQucmVsYXRlZDtcclxuXHRcdFx0XHRcdC8vIFBPUFVOSSBMSVNUVSBERUZJTklDSUpBIE9EIFJFU1VSU0EgKFJFU09VUkNFUyBMSVNUKVxyXG5cdFx0XHRcdFx0JHNjb3BlLmZkLmdldFJlc291cmNlcyA9IGZ1bmN0aW9uKHNlYXJjaCkgIHtcclxuXHRcdFx0XHRcdFx0dmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmTGlzdEJ5VHlwZUZpbHRlcihsYW5nLCdkYXRhc2V0JyxzZWFyY2gsJHNjb3BlLmZkLnNlbGVjdGVkRGF0YXNldCkudGhlbihcclxuXHRcdFx0XHRcdFx0ZnVuY3Rpb24oZGF0YSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAkc2NvcGUuZmQucmVzb3VyY2VzTGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQucmVsYXRlZCE9bnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZUlkID0gJHNjb3BlLmZkLnJlbGF0ZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlTGlzdExlbmd0aCA9ICRzY29wZS5mZC5yZXNvdXJjZXNMaXN0Lmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAvL3NlbGVjdCBkYXRhc2V0IGZyb20gZHJvcGRvd25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9ICRzY29wZS5mZC5yZXNvdXJjZXNMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKCRzY29wZS5yZXNvdXJjZUlkKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcz49MCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkUmVzb3VyY2U9JHNjb3BlLmZkLnJlc291cmNlc0xpc3RbcG9zXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmlzUmVzb3VyY2VTZWxlY3RlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucGlja0J1dHRvbkxhYmVsPVwiQ2hvb3NlIFwiKyRzY29wZS5zZWxlY3RlZFJlc291cmNlLm5hbWUrXCIgcmVjb3JkLi4uXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VJZCAhPSB1bmRlZmluZWQpIHtcdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZ2V0UmVzb3VyY2VEYXRhKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgfSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0ICBcclxuXHRcdFx0XHQgIC8vJHNjb3BlLmdldFJlc291cmNlcygpO1xyXG5cdFx0XHRcdCAgJHNjb3BlLmxvY2FsVmFycy5waWNrQnV0dG9uQ2xpY2tlZD1mYWxzZTtcclxuXHRcdFx0XHQgICRzY29wZS5yZXNvdXJjZURhdGFSZWNvcmRTZWxlY3RlZD1mYWxzZTtcclxuXHRcdFx0XHQgIFxyXG5cdFx0XHRcdCAgICAgXHJcbiAgICAgICAgICAgICAgXHJcblx0XHRcdFx0XHRcdC8vICoqKioqKioqKioqKioqKioqKiogICAgICAgICAgICAgWkEgR1JJRCAxIFxyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0JHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9ucy5vblJlZ2lzdGVyQXBpID0gZnVuY3Rpb24gKGdyaWRBcGkpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0JHNjb3BlLmdyaWRBcGkgPSBncmlkQXBpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQkc2NvcGUuZ3JpZEFwaS5ncmlkLnJlZ2lzdGVyUm93c1Byb2Nlc3Nvcigkc2NvcGUuZmQuc2luZ2xlRmlsdGVyLCAyMDApO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQgJHNjb3BlLmdyaWRBcGkudHJlZUJhc2Uub24ucm93RXhwYW5kZWQobnVsbCwgZnVuY3Rpb24ocm93KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dXBkYXRlUGFnaW5hdGlvbihyb3cudHJlZU5vZGUuY2hpbGRyZW4ubGVuZ3RoKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0ICB9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0ICRzY29wZS5ncmlkQXBpLnRyZWVCYXNlLm9uLnJvd0NvbGxhcHNlZChudWxsLCBmdW5jdGlvbihyb3cpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR1cGRhdGVQYWdpbmF0aW9uKC1yb3cudHJlZU5vZGUuY2hpbGRyZW4ubGVuZ3RoKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0ICB9KTtcclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRncmlkQXBpLnNlbGVjdGlvbi5vbi5yb3dTZWxlY3Rpb25DaGFuZ2VkKCRzY29wZSxmdW5jdGlvbihyb3cpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHJcbiAgICAgICAgICAgICAgICAgIC8vIFViYWNpIG9kYWJyYW5lIHUgRkRcclxuICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5WYWx1ZT0kc2NvcGUuZ3JpZEFwaS5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRSb3dzKCkubWFwKCBmdW5jdGlvbiAoYSkgeyByZXR1cm4gYS5pZDsgfSk7XHJcblx0XHRcdFx0XHRcdFx0IFxyXG4gICAgICAgICAgICAgICAgIC8vIFViYWNpIG9kYWJyYW5lIHUgR1JJRDJcclxuICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zMi5kYXRhPSRzY29wZS5ncmlkQXBpLnNlbGVjdGlvbi5nZXRTZWxlY3RlZFJvd3MoKTtcclxuICAgICAgICAgICAgICAgICAvLyBrb2xpa28gaWggamUgb2RhYnJhbmloXHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGF0YVJlY29yZFNlbGVjdGVkPSRzY29wZS5mZC5WYWx1ZS5sZW5ndGg7IFxyXG5cdFx0XHRcdFx0XHRcdH0pOyAgICAgXHJcblx0XHRcdFx0XHRcdCB9XHJcbiBcclxuXHRcdFx0XHRcdFx0Ly8gKioqKioqKioqKioqKioqKioqKiAgICAgICAgICAgICBaQSBHUklEIDJcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdCRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnMyLm9uUmVnaXN0ZXJBcGkgPSBmdW5jdGlvbiAoZ3JpZEFwaSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQkc2NvcGUuZ3JpZEFwaTIgPSBncmlkQXBpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgZnVuY3Rpb24gdXBkYXRlUGFnaW5hdGlvbihyb3dzRGlmZmVyZW5jZSkge1xyXG5cdFx0XHRcdFx0XHQgIC8vdXBkYXRpbmcgcGFnaW5hdGlvbiB3aWxsIHRyaWdnZXIgc2luZ2xlRmlsdGVyIHdoZXJlIHRoZSBoZWlnaHQgaXMgYmVpbmcgcmVzZXRcclxuXHRcdFx0XHRcdFx0ICAkc2NvcGUuZ3JpZE9wdGlvbnMucGFnaW5hdGlvblBhZ2VTaXplcyA9IFskc2NvcGUuZ3JpZE9wdGlvbnMucGFnaW5hdGlvblBhZ2VTaXplICsgcm93c0RpZmZlcmVuY2UsIDI1LCA1MCwgMTAwLCA1MDBdO1xyXG5cdFx0XHRcdFx0XHQgICRzY29wZS5ncmlkT3B0aW9ucy5wYWdpbmF0aW9uUGFnZVNpemUgPSAkc2NvcGUuZ3JpZE9wdGlvbnMucGFnaW5hdGlvblBhZ2VTaXplICsgcm93c0RpZmZlcmVuY2U7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0Ly95b3UgY2FuIG5hbWUgdGhlIGZ1bmN0aW9uIGFueXRoaW5nLCBJIHdhcyBkb2luZyBnbG9iYWwgZXh0ZXJuYWwgZmlsdGVyaW5nIGluc2lkZSB0aGlzLCBzbyBqdXN0IG5hbWVkIHRoaXMuXHJcblx0XHRcdFx0XHRcdCRzY29wZS5mZC5zaW5nbGVGaWx0ZXIgPSBmdW5jdGlvbihyZW5kZXJhYmxlUm93cykge1xyXG5cdFx0XHRcdFx0XHRcdCR0aW1lb3V0KGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRcdFx0XHRcdCAgdmFyIG5ld0hlaWdodCA9ICgkc2NvcGUuZ3JpZEFwaS5ncmlkLmdldFZpc2libGVSb3dDb3VudCgpICogMzApICsgMTQ1O1xyXG5cdFx0XHRcdFx0XHRcdCAgYW5ndWxhci5lbGVtZW50KGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ215R3JpZCcpWzBdKS5jc3MoJ2hlaWdodCcsIG5ld0hlaWdodCArICdweCcpO1xyXG5cdFx0XHRcdFx0XHRcdH0sIDEwKTtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVuZGVyYWJsZVJvd3M7XHJcblx0XHRcdFx0XHRcdCAgfVxyXG4gIFxyXG5cclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdC8vIHdoZW4gUElDSyBCVVRUT04gcHJlc3NlZFxyXG5cdFx0XHRcdFx0XHQkc2NvcGUubG9jYWxWYXJzLnBpY2tSZXNvdXJjZURhdGEgPSBmdW5jdGlvbiAoKVxyXG5cdFx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdFx0Ly9jb25zb2xlLmxvZygkc2NvcGUucmVzb3VyY2VEYXRhUmVjb3JkU2VsZWN0ZWQpO1xyXG5cdFx0XHRcdFx0XHRcdCRzY29wZS5sb2NhbFZhcnMucGlja0J1dHRvbkNsaWNrZWQ9ISRzY29wZS5sb2NhbFZhcnMucGlja0J1dHRvbkNsaWNrZWQ7XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0aWYgKCEkc2NvcGUubG9jYWxWYXJzLnBpY2tCdXR0b25DbGlja2VkKSB7IC8vIFJFU09VUkNFX1NFTEVDVEVEIHN0YW5qZVxyXG5cdFx0XHRcdFx0XHRcdFx0JHNjb3BlLmxvY2FsVmFycy5waWNrQnV0dG9uTGFiZWw9XCJDaG9vc2UgXCIrJHNjb3BlLnNlbGVjdGVkUmVzb3VyY2UubmFtZStcIiByZWNvcmQuLi5cIjtcclxuXHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdGlmICgkc2NvcGUubG9jYWxWYXJzLnBpY2tCdXR0b25DbGlja2VkKSB7IC8vQ0hPT1NFX1JFU09VUkNFICBzdGFuamVcclxuXHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0JHNjb3BlLmxvY2FsVmFycy5waWNrQnV0dG9uTGFiZWw9J0NsaWNrIHRvIGZpbmlzaCc7XHJcblxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHQgfVxyXG4gICAgICAgICBcclxuICAgICAgICAgICAkc2NvcGUuZmQuZ2V0UmVzb3VyY2VEYXRhUmVmcmVzaCA9IGZ1bmN0aW9uIChyZXRWYWx1ZSkgXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgIC8vVG9EbyBvdm8gcHJlYmFjaXRpIHN2ZSB1IGplZGFuIEFQSSBwb3ppdj8/XHJcbiAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEYXRhV2l0aFJlbGF0ZWQoJHNjb3BlLnBhcmVudFJlc291cmNlRGVmSWQsJHNjb3BlLnJlc291cmNlSWQsJHNjb3BlLnJlc291cmNlUmVjb3JkSWQsJHNjb3BlLnRhc2tJZCwkc2NvcGUuZmQuaXRlbUlkLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1EYXRhWzBdWydGaWVsZCcrJHNjb3BlLmZkLml0ZW1JZF0gPSBkYXRhLm0ybTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2V0dXBHcmlkKGRhdGEpOyAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2V0dXBHcmlkPSBmdW5jdGlvbihkYXRhKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9ucy5kYXRhID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9ucy5jb2x1bW5EZWZzID0gZGF0YS5jb2x1bW5zRGVmO1xyXG4gICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnMyLmNvbHVtbkRlZnMgPSBkYXRhLmNvbHVtbnNEZWY7XHJcbiAgXHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YVswXVsnRmllbGQnKyRzY29wZS5mZC5pdGVtSWRdIT11bmRlZmluZWQpe1xyXG4gICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPCRzY29wZS5mb3JtRGF0YVswXVsnRmllbGQnKyRzY29wZS5mZC5pdGVtSWRdLmxlbmd0aDtpKyspXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICB2YXIgcG9zID0gJHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9ucy5kYXRhLm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKCRzY29wZS5mb3JtRGF0YVswXVsnRmllbGQnKyRzY29wZS5mZC5pdGVtSWRdW2ldKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgIGlmIChwb3M+PTApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy9wcmViYWNpIHUgZ3JpZCAyXHJcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zMi5kYXRhLnB1c2goYW5ndWxhci5jb3B5KCRzY29wZS5ncmlkT3B0aW9ucy5kYXRhW3Bvc10pKTtcclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgIC8vc2VsZWt0aXJhaiBvZGFicmFuZVxyXG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmdyaWRBcGkuZ3JpZC5tb2RpZnlSb3dzKCRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnMuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZ3JpZEFwaS5zZWxlY3Rpb24uc2VsZWN0Um93KCRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnMuZGF0YVtwb3NdKTtcclxuICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucmVzdG9yZUdyaWRTdGF0ZSgpO1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICRzY29wZS5mZC5nZXRSZXNvdXJjZURhdGEgPSBmdW5jdGlvbiAoKSBcclxuXHRcdFx0XHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XHRcdC8vICRzY29wZS5hY3Rpdml0eS5hY3Rpdml0eU1lc3NhZ2UgPSBQcm9jZXNzaW5nU2VydmljZS5zZXRBY3Rpdml0eU1zZygnRG93bmxvYWRpbmcgcmVzb3VyY2UgZGF0YSBmb3IgJyskc2NvcGUucmVzb3VyY2VJZCk7XHJcblx0XHRcdFx0XHRcdFx0XHQgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuXHRcdFx0XHRcdFx0XHRcdCBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURhdGEoJHNjb3BlLnJlc291cmNlSWQsJHNjb3BlLnRhc2tJZCxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0IFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHNjb3BlLmxvY2FsVmFycy5zZXR1cEdyaWQoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0fTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcdFx0ICRzY29wZS5mZC5zYXZlR3JpZFN0YXRlPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdGUgPSAkc2NvcGUuZ3JpZEFwaTIuc2F2ZVN0YXRlLnNhdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5ncmlkU3RhdGUgPSBzdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiVG8gbWFrZSBjaGFuZ2VzIHN0aWNrIHBsZWFzZSBzYXZlIGZvcm1cIiwnaW5mbycpO1xyXG4gICAgICBcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUucmVzdG9yZUdyaWRTdGF0ZT0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmdyaWRTdGF0ZSE9bnVsbClcclxuICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZ3JpZEFwaTIhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdyaWRBcGkyLnNhdmVTdGF0ZS5yZXN0b3JlKCRzY29wZSwkc2NvcGUuZmQuZ3JpZFN0YXRlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc3RvcmVHcmlkU3RhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcdFx0XHJcblx0XHRcdFx0XHQvLyBSZXNvdXJjZSBpcyBzZWxlY3RlZFxyXG4gICAgICAgICAgICAgICRzY29wZS5mZC5vblNlbGVjdENhbGxiYWNrID0gZnVuY3Rpb24gKGl0ZW0sIG1vZGVsKXtcclxuICAgICAgICAgICAgICAgIHZhciBldmVudFJlc3VsdElkPWl0ZW0uaWQ7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQuc2VsZWN0ZWREYXRhc2V0TmFtZT1pdGVtLm5hbWU7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5zZWxlY3RlZFJlc291cmNlPXtuYW1lIDppdGVtLm5hbWV9O1xyXG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIm9uU2VsZWN0Q2FsbGJhY2sgOlwiICsgICRzY29wZS5ldmVudFJlc3VsdE5hbWUrICcgJyArIGV2ZW50UmVzdWx0SWQpO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5waWNrQnV0dG9uTGFiZWw9XCJDaG9vc2UgXCIrJHNjb3BlLmV2ZW50UmVzdWx0TmFtZStcIiByZWNvcmQuLi5cIjtcclxuXHRcdFx0XHRcdFx0IFxyXG4gICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZUlkPWV2ZW50UmVzdWx0SWQ7XHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5pc1Jlc291cmNlU2VsZWN0ZWQ9dHJ1ZTtcclxuXHRcdFx0XHRcdFx0IFxyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHQgIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHJcbiAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZUlkICE9IHVuZGVmaW5lZCkge1x0XHJcbiAgICAgICAgICAgICAgICBcdFx0JHNjb3BlLmZkLmdldFJlc291cmNlRGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgXHR9XHJcbiAgICAgICAgICAgICAgICBcdCRzY29wZS5mZC5yZWxhdGVkPSRzY29wZS5yZXNvdXJjZUlkO1x0XHRcdFx0XHRcdFxyXG4gICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcblx0XHRcdFx0fSwvLy4uLmNvbnRyb2xsZXJcclxuXHRcdFx0XHRcclxuICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdER5bmFtaWNSZXNvdXJjZS5odG1sJyxcclxuICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG5cdFx0XHRcdCAgXHJcbiAgICAgICAgICAgIH1cclxuICAgIFxyXG4gICAgfVxyXG59O1xuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24ga3RFZGl0Q29kZXMgKCkge1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxuICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RFZGl0Q29kZXMuaHRtbCcsXG4gICAgICAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24oJHNjb3BlLENvZGVzU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSwkcm9vdFNjb3BlLFByb2Nlc3NpbmdTZXJ2aWNlKXsgICAgXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgXG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0RXhlY3V0ZVNtYXJ0Q29udHJhY3QgKCkge1xyXG4gICBcclxuICAgdmFyIGNvbnRyb2xsZXIgPSBbJyRzY29wZScsICckdWliTW9kYWwnLCAnJHN0YXRlUGFyYW1zJywnJHN0YXRlJywnJHRpbWVvdXQnLCdDb2Rlc1NlcnZpY2UnLCdSZXNvdXJjZXNEYXRhU2VydmljZScsJyRyb290U2NvcGUnLCdDT0RFU19DT05TVCcsJ1Byb2Nlc3NpbmdTZXJ2aWNlJywnTWVzc2FnaW5nU2VydmljZScsJ0dyaWRzdGVyU2VydmljZScsJ1Rhc2tEYXRhU2VydmljZScsJ1dpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UnLCdLYXRhbHlvU3RhdGVNYW5hZ2VyJywnVXRpbGl0eVNlcnZpY2UnLCckdGVtcGxhdGVDYWNoZScsJyRjb21waWxlJywnJGVsZW1lbnQnLFxyXG4gICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoJHNjb3BlLCR1aWJNb2RhbCwkc3RhdGVQYXJhbXMsJHN0YXRlLCR0aW1lb3V0LENvZGVzU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSwkcm9vdFNjb3BlLENPREVTX0NPTlNULFByb2Nlc3NpbmdTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlLFRhc2tEYXRhU2VydmljZSxXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLEthdGFseW9TdGF0ZU1hbmFnZXIsVXRpbGl0eVNlcnZpY2UsJHRlbXBsYXRlQ2FjaGUsJGNvbXBpbGUsJGVsZW1lbnQpIHtcclxuICAgICBcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldCA9IHt9O1xyXG4gICAgICAvLyRzY29wZS5mZCA9IHt9O1xyXG4gICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlYXJjaEZvcm1Eb3dubG9hZGVkID0gZmFsc2U7XHJcbiAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZm9ybUxvYWRlZD1mYWxzZTtcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zcmNfdHlwZV90ZXh0PUNPREVTX0NPTlNULl9QT1BVTEFURV9UWVBFXztcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5hbmltYXRpb25zRW5hYmxlZCA9IHRydWU7XHJcbiAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQud2lkZ2V0VHlwZSA9IDM7XHJcbiAgICAgICRzY29wZS5nc3J2YyA9IEdyaWRzdGVyU2VydmljZTtcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5mb3JtUGFyYW1zPXtmb3JtVmlld1R5cGU6MSxzaG93R3JpZE5hdmlnYXRpb246dHJ1ZX07XHJcbiAgICAgICRzY29wZS5mZC5jb250cmFjdERhdGFzZXRzID0gdHJ1ZTtcclxuICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YT09dW5kZWZpbmVkKSAkc2NvcGUuZm9ybURhdGE9e307XHJcbiAgICAgIGlmICgkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXT09dW5kZWZpbmVkKSAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXT1bXTtcclxuICAgICAgXHJcbiAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZGF0YXNldE1hcHBlclR5cGU9MDtcclxuICAgICAgXHJcbiAgICAgIGlmICgkc2NvcGUuZmQuUG9wdWxhdGVUeXBlPT11bmRlZmluZWQpICRzY29wZS5mZC5Qb3B1bGF0ZVR5cGU9XCJcIjtcclxuICAgICAgXHJcbiAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQub3Blbk1vZGFsID0gZnVuY3Rpb24gKHNpemUsdGVtcGxhdGUsY3RybCxzZWxlY3RlZFR5cGUpIHtcclxuICAgICBcclxuICAgICAgICAgdmFyIG1vZGFsSW5zdGFuY2UgPSAkdWliTW9kYWwub3Blbih7XHJcbiAgICAgICAgICAgIGFuaW1hdGlvbjogJHNjb3BlLmFuaW1hdGlvbnNFbmFibGVkLFxyXG4gICAgICAgICAgICB0ZW1wbGF0ZVVybDogdGVtcGxhdGUsXHJcbiAgICAgICAgICAgIGNvbnRyb2xsZXI6IGN0cmwsXHJcbiAgICAgICAgICAgIHNpemU6IHNpemUsXHJcbiAgICAgICAgICAgIHJlc29sdmU6IHtcclxuICAgICAgICAgICAgICBzZWxlY3RlZFJlc291cmNlSXRlbTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW07XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHR5cGU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdERhdGFzZXRUeXBlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgIH0pO1xyXG4gICAgICAgICBtb2RhbEluc3RhbmNlLnJlc3VsdC50aGVuKGZ1bmN0aW9uIChzZWxlY3RlZEl0ZW0sd2luZGV4LGluZGV4KSB7XHJcbiAgICAgIFxyXG4gICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0RGF0YXNldFR5cGU9PTEpe1xyXG4gICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtID0gc2VsZWN0ZWRJdGVtO1xyXG4gICAgICAgICAgICAkc2NvcGUuZmQuUmVsYXRlZCA9ICAkc2NvcGUuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ucmVsYXRlZElkO1xyXG4gICAgICAgICAgICAkc2NvcGUuZmQuUG9wdWxhdGVUeXBlPXNlbGVjdGVkSXRlbS5zcmNfdHlwZV9pZDtcclxuICAgICAgICAgICAgJHNjb3BlLmZkLlBhcmVudEVsZW1lbnRJZCA9ICRzY29wZS5zZWxlY3RlZFJlc291cmNlSXRlbS5wYXJlbnRFbGVtZW50SWQ7XHJcbiAgICAgICAgICAgICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCA9ICRzY29wZS5zZWxlY3RlZFJlc291cmNlSXRlbS5wcmVzZW50YXRpb25JZDtcclxuICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5nZXRGb3JtUmVzb3VyY2VPcmlnaW5hbCgpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB9ZWxzZSBpZiAoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3REYXRhc2V0VHlwZT09MilcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlbGF0ZWRSZXNvdXJjZUl0ZW0gPSBzZWxlY3RlZEl0ZW07XHJcbiAgICAgICAgICAgICRzY29wZS5mZC5IYXNQYXJlbnREYXRhc2V0ID0gICRzY29wZS5zZWxlY3RlZFJlc291cmNlSXRlbS5yZWxhdGVkSWQ7XHJcbiAgICAgICAgICAgICRzY29wZS5mZC5Qb3B1bGF0ZVR5cGVQYXJlbnQ9c2VsZWN0ZWRJdGVtLnNyY190eXBlX2lkO1xyXG4gICAgICAgICAgICAvLyRzY29wZS5mZC5QYXJlbnRFbGVtZW50SWQgPSAkc2NvcGUuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ucGFyZW50RWxlbWVudElkO1xyXG4gICAgICAgICAgICAvLyRzY29wZS5mZC5QcmVzZW50YXRpb25JZCA9ICRzY29wZS5zZWxlY3RlZFJlc291cmNlSXRlbS5wcmVzZW50YXRpb25JZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgXHJcbiAgICAgICAgIH0sIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAvLyRsb2cuaW5mbygnTW9kYWwgZGlzbWlzc2VkIGF0OiAnICsgbmV3IERhdGUoKSk7XHJcbiAgICAgICAgIH0pO1xyXG4gICAgICAgICBcclxuICAgICAgfTtcclxuICAgICBcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5vcGVuTW9kYWxTZWxlY3RSZXNvdXJjZSA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3REYXRhc2V0VHlwZSAgPSAxO1xyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQub3Blbk1vZGFsKCdsZycsJ3NlbGVjdFJlc291cmNlTW9kYWwuaHRtbCcsJ1NlbGVjdFJlc291cmNlTW9kYWxDdHJsJywkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdERhdGFzZXRUeXBlKTtcclxuICAgICAgICBcclxuICAgICAgfTtcclxuICAgICBcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5vcGVuTW9kYWxTZWxlY3RSZWxhdGVkUmVzb3VyY2UgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0RGF0YXNldFR5cGUgID0gMjtcclxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0Lm9wZW5Nb2RhbCgnbGcnLCdzZWxlY3REYXRhc2V0TW9kYWwuaHRtbCcsJ1NlbGVjdERhdGFzZXRNb2RhbEN0cmwnLCRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0RGF0YXNldFR5cGUpO1xyXG4gICAgICB9O1xyXG4gICAgICBcclxuICAgICBcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5ncmlkc3RlclR5cGU9XCJyZXNvdXJjZVwiO1xyXG4gICAgICAgICAgLy8gJHNjb3BlLmdyaWRzdGVyT3B0cyA9IEdyaWRzdGVyU2VydmljZS5nZXRHcmlkc3Rlck9wdGlvbnMoKTtcclxuICAgIFxyXG4gICAgXHJcbiAgICAgICAgXHJcbiAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZGFzaGJvYXJkID0ge1xyXG4gIFx0XHRcdFx0aWQ6ICcxJyxcclxuICBcdFx0XHRcdG5hbWU6ICdIb21lJyxcclxuICBcdFx0XHRcdHdpZGdldHM6IFtdXHJcbiAgICAgIH0gO1xyXG4gICAgICAgIFxyXG4gICAgXHJcbiAgXHJcbiAgICAgIC8vJHNjb3BlLnRhc2tJZD0kc3RhdGVQYXJhbXMuaWQ7XHJcbiAgICAgICRzY29wZS50YXNrSWQ9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZURlZklkO1xyXG4gICAgICBpZiAoJHNjb3BlLnRhc2tJZD09dW5kZWZpbmVkKSAgJHNjb3BlLnRhc2tJZD0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlJlc291cmNlRGVmSWRfaWQ7XHJcbiAgICAgIGlmICgkc2NvcGUudGFza0lkPT11bmRlZmluZWQpICRzY29wZS50YXNrSWQ9MDtcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC50YXNrSWQ9JHNjb3BlLnRhc2tJZDtcclxuICAgICAgJHNjb3BlLmZkLlBhcmVudERhdGFzZXREZWZJZD0kc2NvcGUuZmQuUmVsYXRlZDtcclxuICAgICAgJHNjb3BlLnByZXZUYXNrRXhlSWQgPSAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wcmV2X3Rhc2tfaWQ7XHJcbiAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZm9ybVR5cGU9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX3R5cGU7XHJcbiAgICAgICRzY29wZS5zb3VyY2VfdHlwZT0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnNvdXJjZV90eXBlO1xyXG4gICAgICAkc2NvcGUudGFza0luaXRpYXRlSWQgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRhc2tfaW5pdGlhdGVfaWQ7XHJcbiAgICAgICRzY29wZS50YXNrRXhlY3V0ZUlkID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50YXNrX2V4ZWN1dGVfaWQ7XHJcbiAgICAgICRzY29wZS5mb3JtRGVmaW5pdGlvbiA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uO1xyXG4gICAgICBcclxuICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMgPT0gdW5kZWZpbmVkKSAgJHNjb3BlLmxvY2FsVmFycz0ge30gXHJcbiAgICAgICRzY29wZS5sb2NhbFZhcnMuc2hvd01lbnUgPSBmYWxzZVxyXG4gICAgICBcclxuICAgICAgICRzY29wZS5sb2NhbFZhcnMudG9nZ2xlRHJvcGRvd24gPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dNZW51ID0gICRzY29wZS5sb2NhbFZhcnMuc2hvd01lbnUgPyBmYWxzZTogdHJ1ZSBcclxuICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgaWYgICgkc2NvcGUuZm9ybURlZmluaXRpb249PXVuZGVmaW5lZCkgJHNjb3BlLmZvcm1EZWZpbml0aW9uPWZhbHNlO1xyXG4gICAgICAgIFxyXG4gICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQ9MDtcclxuICAgICAgaWYgKCRzY29wZS50YXNrSW5pdGlhdGVJZD09dW5kZWZpbmVkKVxyXG4gICAgICB7XHJcbiAgICAgICAgJHNjb3BlLnRhc2tJbml0aWF0ZUlkID0wO1xyXG4gICAgICBcclxuICAgICAgfVxyXG4gICAgICBpZiAoJHNjb3BlLnRhc2tFeGVjdXRlSWQ9PXVuZGVmaW5lZClcclxuICAgICAge1xyXG4gICAgICAgICAkc2NvcGUudGFza0V4ZWN1dGVJZCA9MDsgIFxyXG4gICAgICB9XHJcbiAgICAgICAgaWYgKCRzY29wZS5wcmV2VGFza0V4ZUlkPT11bmRlZmluZWQpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAkc2NvcGUucHJldlRhc2tFeGVJZCA9MDtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgIC8vcmVnaXN0ZXIgd2lkZ2V0IFxyXG4gICAgICB2YXIgb3V0X2ZpZWxkcyA9IFsncmVzb3VyY2VJZCddO1xyXG4gICAgICAvL2lmICgkc2NvcGUuZmQuTG9jYWxJZD09dW5kZWZpbmVkIHx8ICRzY29wZS5mZC5Mb2NhbElkPT1udWxsIHx8ICRzY29wZS5mZC5Mb2NhbElkPT0wKVxyXG4gICAgICAvL3tcclxuICAgICAgICAgdmFyIHdpZGdldERlZmluaXRpb24gPSB7REVJOiBbeyduYW1lJzoncmVzb3VyY2VMaW5rJywndmFsdWUnOlt7bmFtZToncmVzb3VyY2VJZCcsdmFsdWU6JHNjb3BlLmZkLlJlbGF0ZWR9LHtuYW1lOidyZXNvdXJjZVJlY29yZElkJyx2YWx1ZTonJ31dfV0sYWN0aW9uczogW3tuYW1lOidQcmVwYXJlRGF0YScsc3RhdHVzOmZhbHNlfV0sbmFtZTogJ3ZpZXdSZXNvdXJjZVdpZGdldCcsd2lkZ2V0SWQ6ICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCx0YXNrX2luaXRpYXRlX2lkOiRzY29wZS50YXNrSW5pdGlhdGVJZCx0YXNrX2V4ZWN1dGVfaWQ6JHNjb3BlLnRhc2tFeGVjdXRlSWQsdGFza0lkOiAgJHNjb3BlLmxUYXNrSWQscmVzb3VyY2VEZWZJZCA6ICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZSwgb3V0cHV0Om91dF9maWVsZHMsIH07XHJcbiAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQubG9jYWxXaWRnZXRJZCA9IFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UucmVnaXN0ZXJXaWRnZXQod2lkZ2V0RGVmaW5pdGlvbik7XHJcbiAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuTG9jYWxJZD0kc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmxvY2FsV2lkZ2V0SWQ7XHJcbiAgICAgICAgICRzY29wZS5mZC5Mb2NhbElkPSRzY29wZS5sb2NhbFZhcnNXaWRnZXQubG9jYWxXaWRnZXRJZDtcclxuICAgICAgICAgLy8kc2NvcGUuZmQuTG9jYWxJZD1VdGlsaXR5U2VydmljZS51dWlkTm93KCk7XHJcbiAgICAgICAgIFxyXG4gICAgICAvL31cclxuICAgICAgJHNjb3BlLmtzbSA9IEthdGFseW9TdGF0ZU1hbmFnZXI7XHJcbiAgICAgIFxyXG4gICAgICBsZXQgdXBkYXRlX3ByZXNlbnRhdGlvbl9pZCA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgIHtcclxuICAgICAgICAgaWYgKGRhdGFbJHNjb3BlLmZkLkxvY2FsSWRdPjAgJiYgKCRzY29wZS5mZC5QcmVzZW50YXRpb25JZD09bnVsbCB8fCAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PTApKSAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQgPSBkYXRhWyRzY29wZS5mZC5Mb2NhbElkXTtcclxuICAgICAgICAgIC8vdW5zdWJzY3JpYmUgaGVyZSBsYXRlciBhZnRlciBpbXBsZW1lbnRpbmcgdW5zdWJzY3JpYmUgLSBUb0RvXHJcbiAgICAgICAgICBcclxuICAgICAgfVxyXG4gICAgICBpZiAoJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT0wIHx8ICRzY29wZS5mZC5QcmVzZW50YXRpb25JZD09bnVsbClcclxuICAgICAge1xyXG4gICAgICAgICBcclxuICAgICAgICAgbGV0IGRlcGVuZGVudF9maWVsZCA9ICRzY29wZS5mZC5Mb2NhbElkO1xyXG4gICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSBcImZvcm1EZWZpbml0aW9uU3RhdGVcIiskc2NvcGUudGFza0lkKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV90eXBlO1xyXG4gICAgICAgICBsZXQgb2JzZXJ2ZXIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdCxkZXBlbmRlbnRfZmllbGQsXCJmb3JtU2F2ZWRcIix1cGRhdGVfcHJlc2VudGF0aW9uX2lkKTtcclxuICBcclxuICAgICAgfSAgICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgbGV0IGFwcGx5X3ZhbHVlID0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGxldCBkb19yZWZyZXNoPWZhbHNlO1xyXG4gICAgICAgICAgICBpZiAoZGF0YSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIGlmIChkYXRhICE9ICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZClcclxuICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEgPT09J251bWJlcicpICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZD0gZGF0YTtcclxuICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSlcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5sZW5ndGg+MClcclxuICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkPSBkYXRhWzBdLmlkICBcclxuICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZCA9IGRhdGEuaWQ7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgZG9fcmVmcmVzaCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL2dldCBzZWxlY3RlZFJlY29yZFxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkID09IG51bGwpICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZD0wO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZD4wICYmIGRvX3JlZnJlc2gpICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZ2V0Rm9ybVJlc291cmNlV2l0aERhdGEoKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgIFxyXG4gICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnM9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLlBhcmFtZXRlcnM9e307XHJcbiAgICAgIFxyXG4gICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuUmVmcmVzaE9uSWRDaGFuZ2UpXHJcbiAgICAgIHtcclxuICAgICAgICAgXHJcbiAgICAgICAgIC8vZmluZCBcclxuICAgICAgICAgLy9zdWJzY3JpYmUgb2JzZXJ2ZXJcclxuICAgICAgICAgICBcclxuICAgICAgICAgbGV0IGRlcGVuZGVudF9maWVsZCA9IFwiRmllbGRcIiskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ7XHJcbiAgICAgICAgIGxldCBzdWJzY3JpYmVkU3ViamVjdCA9IFwicmVzb3VyY2VpZFZhbHVlU3RhdGVOYW1lXCIrJHNjb3BlLmZkLlBhcmFtZXRlcnMuUmVzb3VyY2VJZEl0ZW1JZCskc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRyYW5zYWN0aW9uX2lkO1xyXG4gICAgICAgICBsZXQgc3ViamVjdCA9ICRzY29wZS5rc20uYWRkU3ViamVjdChzdWJzY3JpYmVkU3ViamVjdCxudWxsKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICBsZXQgb2JzZXJ2ZXIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdCxkZXBlbmRlbnRfZmllbGQsXCJ2YWx1ZUNoYW5nZWRcIixhcHBseV92YWx1ZSk7XHJcbiAgICAgICAgIGxldCB2YWwgPSAkc2NvcGUua3NtLmdldFN0YXRlKHN1YnNjcmliZWRTdWJqZWN0KTtcclxuICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkPSB2YWwuaWQ7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvL2dldCBzZWxlY3RlZFJlY29yZFxyXG4gICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkID09IG51bGwpICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZD0wO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZD4wKSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmdldEZvcm1SZXNvdXJjZVdpdGhEYXRhKCk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIC8vc3Vic2NyaWJlIG9ic2VydmVyXHJcbiAgICAgIGlmICgkc2NvcGUuZmQuUG9wdWxhdGVUeXBlLnRvU3RyaW5nKCkuc3Vic3RyKDAsMSk9PVwiNFwiKVxyXG4gICAgICB7XHJcbiAgICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAgKioqKioqKioqKioqKioqKioqIFN5bmMgZGF0YSB3aXRoIFN0YXRlIG1hbmFnZXIgKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuICAgICAgICAvKlxyXG4gICAgICAgICRzY29wZS5pdGVtVmFsdWUgPSB7dmFsOm51bGx9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCB2YWx1ZVN0YXRlPSAkc2NvcGUua3NtLmFkZFN1YmplY3QoJ2RhdGFzZXRWYWx1ZVN0YXRlTmFtZScrJHNjb3BlLmZkLkl0ZW1JZCwkc2NvcGUuaXRlbVZhbHVlLnZhbCk7XHJcbiAgICAgICAgbGV0IHZhbHVlU3RhdGVOYW1lID0gdmFsdWVTdGF0ZS5zdWJqZWN0Lm5hbWU7XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IHZhbHVlX2NoYW5nZWQgPSBmdW5jdGlvbihkYXRhKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWVTdGF0ZS5zdWJqZWN0LnNldFN0YXRlQ2hhbmdlcyA9IGRhdGE7XHJcbiAgICAgICAgICAgIHZhbHVlU3RhdGUuc3ViamVjdC5ub3RpZnlPYnNlcnZlcnMoXCJ2YWx1ZUNoYW5nZWRcIik7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgYWN0aW9uX3ZhbHVlX2NoYW5nZWQgPSAkc2NvcGUua3NtLmFkZEFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcInZhbHVlQ2hhbmdlZFwiLHZhbHVlX2NoYW5nZWQpO1xyXG4gICAgICAgXHJcbiAgICAgICAgKi9cclxuICAgICAgIFxyXG4gICAgICAgXHJcbiAgICAgICAgaWYgKCRzY29wZS5mZC5TcmNXaWRnZXRJZCE9dW5kZWZpbmVkICYmICRzY29wZS5mZC5TcmNXaWRnZXRJZCE9bnVsbClcclxuICAgICAgICBcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgZGVwZW5kZW50X2ZpZWxkID0gXCJGaWVsZFwiKyRzY29wZS5mZC5TcmNXaWRnZXRJZDtcclxuICAgICAgICAgICAgICAgLy8gbGV0IHN1YnNjcmliZWRTdWJqZWN0ID0gJHNjb3BlLmZkLlBhcmFtZXRlcnMuU3JjV2lkZ2V0VHlwZStcIlZhbHVlU3RhdGVOYW1lXCIrJHNjb3BlLmZkLlNyY1dpZGdldElkO1xyXG4gICAgICAgICAgICAgICAgbGV0IHN1YnNjcmliZWRTdWJqZWN0ID0gXCJybGlzdFZhbHVlU3RhdGVOYW1lXCIrJHNjb3BlLmZkLlNyY1dpZGdldElkKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udHJhbnNhY3Rpb25faWQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgb2JzZXJ2ZXIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdCxkZXBlbmRlbnRfZmllbGQsXCJ2YWx1ZUNoYW5nZWRcIixhcHBseV92YWx1ZSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH0gIFxyXG4gICAgICAgICBcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgbGV0IHJlZnJlc2hfd2lkZ2V0X2RhdGEgPSBmdW5jdGlvbigpXHJcbiAgICAgIFxyXG4gICAgICB7XHJcbiAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZ2V0Rm9ybVJlc291cmNlV2l0aERhdGEoKTsgICAgXHJcbiAgICAgICAgIFxyXG4gICAgICB9XHJcbiAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5FdmVudE5hbWUhPXVuZGVmaW5lZClcclxuICAgICAge1xyXG4gICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuRXZlbnROYW1lIT1cIlwiKVxyXG4gICAgICAgICB7XHJcbiAgICAgICAgICAgIGxldCBkZXBlbmRlbnRfZmllbGQyID0gXCJGaWVsZFwiKyRzY29wZS5mZC5QcmVzZW50YXRpb25JZDtcclxuICAgICAgICAgICAgbGV0IHN1YnNjcmliZWRTdWJqZWN0MiA9IFwidGFza1wiKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udHJhbnNhY3Rpb25faWQ7XHJcbiAgICAgICAgICAgIGxldCBvYnNlcnZlcjIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdDIsZGVwZW5kZW50X2ZpZWxkMiwkc2NvcGUuZmQuUGFyYW1ldGVycy5FdmVudE5hbWUscmVmcmVzaF93aWRnZXRfZGF0YSk7XHJcbiAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zaG93UHJvcGVydGllcz1mdW5jdGlvbihkYXRhc2V0TWFwcGVyVHlwZSlcclxuICAgICAge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmRhdGFzZXRNYXBwZXJUeXBlID0gZGF0YXNldE1hcHBlclR5cGU7XHJcbiAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5kYXRhc2V0TWFwcGVyVHlwZSE9ZGF0YXNldE1hcHBlclR5cGUpICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZGF0YXNldE1hcHBlclR5cGUgPSBkYXRhc2V0TWFwcGVyVHlwZTtcclxuICAgICAgICAgICAgICAgZWxzZSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmRhdGFzZXRNYXBwZXJUeXBlPTA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgIH07XHJcbiAgICAgICAgICAgXHJcbiAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2V0RmllbGQgPSBmdW5jdGlvbihmb3JtLG5hbWUsdmFsdWUsbXNnKVxyXG4gICAgICB7XHJcbiAgICAgICAgIFRhc2tEYXRhU2VydmljZS5zZXRGaWVsZChmb3JtLG5hbWUsdmFsdWUpO1xyXG4gICAgICAgICBpZiAobXNnKSBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UobXNnLCdpbmZvJyk7XHJcbiAgICAgIH07ICBcclxuICAgICAgXHJcbiAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZ2V0UmVzb3VyY2VBbGwgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZBbGwoJHNjb3BlLmZkLlJlbGF0ZWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5yZXNvdXJjZSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZUxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5nZXRSZXNvdXJjZUFsbCgpO1xyXG4gICAgICBcclxuICAgICAgICRzY29wZS5mZC5sb2FkQmxvY2tjaGFpbkRhdGFzZXQgPSBmdW5jdGlvbiAoZGF0YXNldCkge1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgIGlmIChkYXRhc2V0LkRhdGFzZXRJZD09dW5kZWZpbmVkKSBkYXRhc2V0LkRhdGFzZXRJZCA9IHtpZDowfTsgXHJcbiAgICAgICAgICAgJHNjb3BlLmZkLnNlbGVjdGVkRGF0YXNldCA9IGRhdGFzZXQ7XHJcbiAgICAgICAgICAgaWYgKGRhdGFzZXQuRGF0YXNldElkLmlkPjApICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZ2V0Rm9ybVJlc291cmNlT3JpZ2luYWwoZGF0YXNldC5EYXRhc2V0SWQuaWQpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9O1xyXG4gICAgICAgICRzY29wZS5mZC5sb2FkQmxvY2tjaGFpbkZ1bmN0aW9uID0gZnVuY3Rpb24gKGZ1bmMpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgIGlmIChmdW5jLklucHV0RGF0YXNldElkPT11bmRlZmluZWQpIGZ1bmMuRGF0YXNldElkID0ge2lkOjB9OyBcclxuICAgICAgICAgICAkc2NvcGUuZmQuc2VsZWN0ZWRGdW5jdGlvbiA9IGZ1bmM7XHJcbiAgICAgICAgICAgaWYgKGZ1bmMuSW5wdXREYXRhc2V0SWQuaWQ+MCkgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5nZXRGb3JtUmVzb3VyY2VPcmlnaW5hbChmdW5jLklucHV0RGF0YXNldElkLmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgICRzY29wZS5mZC5leGVjdXRlQmxvY2tjaGFpbkZ1bmN0aW9uID0gZnVuY3Rpb24gKGZ1bmMpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgLy8kc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmZvcm1Mb2FkaW5nPXRydWU7XHJcbiAgICAgICAgICAgICAgbGV0IGxpbWl0ID0gIDEwMDtcclxuICAgICAgICAgICAgICAkc2NvcGUuZmQuZGF0YXNldExvYWRlZD1mYWxzZTtcclxuICAgICAgICAgICAgICAkc2NvcGUuZmQuZ3JpZE9wdGlvbnMuY29sdW1uRGVmcz1bXTtcclxuICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLkJsb2NrQ2hhaW5QcmltYXJ5S2V5PT11bmRlZmluZWQpICRzY29wZS5mZC5CbG9ja0NoYWluUHJpbWFyeUtleT1cIlwiO1xyXG4gICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmV4ZWN1dGVCbG9ja2NoYWluRnVuY3Rpb24oJHNjb3BlLmZkLnJlc291cmNlLlBhcmFtZXRlcnMuQ29udHJhY3RJZCwkc2NvcGUuZmQuc2VsZWN0ZWRGdW5jdGlvbi5GdW5jdGlvbk5hbWUsJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5QcmVzZW50YXRpb25JZF1bMF0pLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEuZGF0YSwnc3VjY2VzcycpOyBcclxuXHJcbiAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICAgXHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZ2V0Rm9ybVJlc291cmNlT3JpZ2luYWwgPSBmdW5jdGlvbihkYXRhc2V0SWQpe1xyXG4gICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PW51bGwpXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkID0gMDtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmZvcm1Mb2FkZWQ9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VGb3JtKGRhdGFzZXRJZCxcImlcIixsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VXaWRnZXREZWZpbml0aW9uPSBkYXRhLmRhdGEucmVzb3VyY2VEZWZpbml0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEuZGF0YS53aWRnZXRzKSkgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQgPSAgZGF0YS5kYXRhLndpZGdldHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0hPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZT0kc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbi5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5yZWxhdGVkSWQ9JHNjb3BlLmZkLlJlbGF0ZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLnByZXNlbnRhdGlvbklkPSRzY29wZS5mZC5QcmVzZW50YXRpb25JZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0uc3JjX3R5cGVfaWQ9JHNjb3BlLmZkLlBvcHVsYXRlVHlwZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0uc3JjX3R5cGVfdGV4dD0kc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNyY190eXBlX3RleHRbJHNjb3BlLmZkLlBvcHVsYXRlVHlwZV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLnBhcmVudEVsZW1lbnRJZD0kc2NvcGUuZmQuUGFyZW50RWxlbWVudElkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW09eyduYW1lJzokc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbi5uYW1lLCdyZWxhdGVkSWQnOiRzY29wZS5mZC5SZWxhdGVkLCAncHJlc2VudGF0aW9uSWQnOiRzY29wZS5mZC5QcmVzZW50YXRpb25JZCAgLCdzcmNfdHlwZV9pZCc6JHNjb3BlLmZkLlBvcHVsYXRlVHlwZSwnc3JjX3R5cGVfdGV4dCc6JHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zcmNfdHlwZV90ZXh0WyRzY29wZS5mZC5Qb3B1bGF0ZVR5cGVdLCdwYXJlbnRFbGVtZW50SWQnOiRzY29wZS5mZC5QYXJlbnRFbGVtZW50SWR9O1xyXG4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC53SXRlbVZhbHVlPWRhdGEuZGF0YS53aWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250YWluZXIgPSAkZWxlbWVudC5jaGlsZHJlbigpLmVxKDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyaWRzdGVyU2VydmljZS5zZXR1cERyYWd1bGFyKCRzY29wZS5mZC53SXRlbVZhbHVlLGNvbnRhaW5lciwncm93cy0nKyRzY29wZS5mZC5QcmVzZW50YXRpb25JZCwncm93LScrJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5ncmlkc3RlclR5cGUrJy1oYWRsZScsdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8gICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL01JR09SIC0gYml0bm8gLSBET0JJTyBSRVNPVVJDRVJFQ09SRC1JRCBaQSBCUk9BRENBU1QgIC0gQUREX1JFU09VUkNFIFdJREdFVFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2Uuc2V0RGF0YSh7d2lkZ2V0SWQ6JHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLCBERUk6IFt7J25hbWUnOidyZXNvdXJjZUxpbmsnLCd2YWx1ZSc6W3tuYW1lOidyZXNvdXJjZUlkJyx2YWx1ZTokc2NvcGUuZmQuUmVsYXRlZH0se25hbWU6J3Jlc291cmNlUmVjb3JkSWQnLHZhbHVlOiRzY29wZS5mZC5SZXNvdXJjZVJlY29yZElkfV19XX0pO1xyXG5cdFx0XHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VhcmNoRm9ybURvd25sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kdGltZW91dChmdW5jdGlvbigpeyRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZm9ybUxvYWRlZD10cnVlfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2V0RmllbGQoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQsJ1JlYWRPbmx5Jyx0cnVlKTsgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZXRGaWVsZCgkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmRhc2hib2FyZC53aWRnZXRzLmxheW91dCwnUmVxdWlyZWQnLGZhbHNlKTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICB9O1xyXG4gICAgICAkc2NvcGUuZmQuZ3JpZE9wdGlvbnMgPSB7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICBzaG93R3JpZEZvb3RlcjogdHJ1ZSxcclxuICAgICAgICBzaG93Q29sdW1uRm9vdGVyOiB0cnVlLFxyXG4gICAgICAgIGVuYWJsZVJvd1NlbGVjdGlvbjogdHJ1ZSxcclxuICAgICAgICBtdWx0aVNlbGVjdDogZmFsc2UsXHJcbiAgICAgIC8vICBlbmFibGVIb3Jpem9udGFsU2Nyb2xsYmFyIDogMSxcclxuICAgICAgIC8vIGVuYWJsZVZlcnRpY2FsU2Nyb2xsYmFyIDogMixcclxuICAgICAgICBlbmFibGVGaWx0ZXJpbmc6IHRydWUsXHJcbiAgICAgICAgZW5hYmxlUm93SGVhZGVyU2VsZWN0aW9uOiBmYWxzZSxcclxuICAgICAgICBlbmFibGVDb2x1bW5SZXNpemluZzogdHJ1ZSxcclxuICAgICAgICBlbmFibGVDb2x1bW5SZW9yZGVyaW5nOiB0cnVlLFxyXG4gICAgICAgIC8vdXNlRXh0ZXJuYWxQYWdpbmF0aW9uOiBmYWxzZSxcclxuICAgICAgICBwYWdpbmF0aW9uUGFnZVNpemVzOiBbMTAsIDI1LCA1MCwxMDAsMjAwLDUwMCwxMDAwLDUwMDAsMTAwMDBdLFxyXG4gICAgICB9XHJcbiAgICAgICAgJHNjb3BlLmZkLkdldEJsb2NrY2hhaW5EYXRhc2V0UmVjb3JkcyA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIC8vJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5mb3JtTG9hZGluZz10cnVlO1xyXG4gICAgICAgICAgICAgIGxldCBsaW1pdCA9ICAxMDA7XHJcbiAgICAgICAgICAgICAgJHNjb3BlLmZkLmRhdGFzZXRMb2FkZWQ9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgJHNjb3BlLmZkLmdyaWRPcHRpb25zLmNvbHVtbkRlZnM9W107XHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5CbG9ja0NoYWluUHJpbWFyeUtleT09dW5kZWZpbmVkKSAkc2NvcGUuZmQuQmxvY2tDaGFpblByaW1hcnlLZXk9XCJcIjtcclxuICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRCbG9ja2NoYWluRGF0YXNldFJlY29yZHMoJHNjb3BlLmZkLnNlbGVjdGVkRGF0YXNldC5EYXRhc2V0SWQuaWQsJHNjb3BlLmZkLnNlbGVjdGVkRGF0YXNldC5EYXRhc2V0TmFtZSwkc2NvcGUuZmQucmVzb3VyY2UuUGFyYW1ldGVycy5Db250cmFjdElkLGxpbWl0LCRzY29wZS5mZC5CbG9ja0NoYWluUHJpbWFyeUtleSxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5kYXRhc2V0TG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZ3JpZE9wdGlvbnMuZGF0YSA9IGRhdGEuZGF0YS5kYXRhLnJvd3M7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAvLyRzY29wZS5mZC5ncmlkT3B0aW9ucy5jb2x1bW5EZWZzID0gZGF0YS5kYXRhLmNvbHVtbnM7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAvLyRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZm9ybUxvYWRpbmc9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5nZXRGb3JtUmVzb3VyY2UgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmZvcm1Mb2FkZWQ9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PW51bGwpXHJcbiAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9MDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5mb3JtTG9hZGluZz10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VGb3JtRXh0ZW5kZWQoJHNjb3BlLmZkLlJlbGF0ZWQsJHNjb3BlLnRhc2tJZCwkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmZvcm1UeXBlLCRzY29wZS5mZC5QcmVzZW50YXRpb25JZCxcIndcIixsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVdpZGdldERlZmluaXRpb249IGRhdGEuZGF0YS5yZXNvdXJjZURlZmluaXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhLmRhdGEud2lkZ2V0cykpICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0ID0gIGRhdGEuZGF0YS53aWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWU9JHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVdpZGdldERlZmluaXRpb24ubmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ucmVsYXRlZElkPSRzY29wZS5mZC5SZWxhdGVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5wcmVzZW50YXRpb25JZD0kc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLnNyY190eXBlX2lkPSRzY29wZS5mZC5Qb3B1bGF0ZVR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLnNyY190eXBlX3RleHQ9JHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zcmNfdHlwZV90ZXh0WyRzY29wZS5mZC5Qb3B1bGF0ZVR5cGVdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5wYXJlbnRFbGVtZW50SWQ9JHNjb3BlLmZkLlBhcmVudEVsZW1lbnRJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtPXsnbmFtZSc6JHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVdpZGdldERlZmluaXRpb24ubmFtZSwncmVsYXRlZElkJzokc2NvcGUuZmQuUmVsYXRlZCwgJ3ByZXNlbnRhdGlvbklkJzokc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQgICwnc3JjX3R5cGVfaWQnOiRzY29wZS5mZC5Qb3B1bGF0ZVR5cGUsJ3NyY190eXBlX3RleHQnOiRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc3JjX3R5cGVfdGV4dFskc2NvcGUuZmQuUG9wdWxhdGVUeXBlXSwncGFyZW50RWxlbWVudElkJzokc2NvcGUuZmQuUGFyZW50RWxlbWVudElkfTtcclxuIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLndJdGVtVmFsdWU9ZGF0YS5kYXRhLndpZGdldHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VhcmNoRm9ybURvd25sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZm9ybUxvYWRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZm9ybUxvYWRpbmc9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZXRGaWVsZCgkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmRhc2hib2FyZC53aWRnZXRzLmxheW91dCwnUmVhZE9ubHknLHRydWUpOyAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNldEZpZWxkKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0LCdSZXF1aXJlZCcsZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZm9ybUxvYWRpbmc9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgfTtcclxuICAgICAgXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5nZXRGb3JtUmVzb3VyY2VXaXRoRGF0YSA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5mb3JtTG9hZGVkPWZhbHNlO1xyXG4gICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PW51bGwgfHwgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkID0gMDtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmVudEVsZW1lbnRJZD09bnVsbCB8fCAkc2NvcGUuZmQuUGFyZW50RWxlbWVudElkPT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLlBhcmVudEVsZW1lbnRJZCA9IDA7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQ9PXVuZGVmaW5lZCB8fCAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQ9PTApXHJcbiAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5wcmV2aW91c1Rhc2tEYXRhWydkYXRhc2V0UmVjb3JkSWQnXSE9dW5kZWZpbmVkICYmICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucHJldmlvdXNUYXNrRGF0YVsnZGF0YXNldFJlY29yZElkJ10hPVwiXCIgJiYgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5wcmV2aW91c1Rhc2tEYXRhWydkYXRhc2V0SWQnXT09JHNjb3BlLmZkLlJlbGF0ZWQpICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZCA9ICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucHJldmlvdXNUYXNrRGF0YVsnZGF0YXNldFJlY29yZElkJ107XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICBpZiAodHlwZW9mICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZCAhPT0nbnVtYmVyJyAmJiB0eXBlb2YgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkICE9PSdzdHJpbmcnKVxyXG4gICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSgkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQpKVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQubGVuZ3RoPjApXHJcbiAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkPSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWRbMF0uaWQgIFxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGVsc2UgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkID0gJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkLmlkOyAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VGb3JtRXh0ZW5kZWRXaXRoRGF0YSgkc2NvcGUuZmQuUmVsYXRlZCwkc2NvcGUudGFza0luaXRpYXRlSWQsJHNjb3BlLnRhc2tFeGVjdXRlSWQsJHNjb3BlLmZkLlBvcHVsYXRlVHlwZSwkc2NvcGUuZmQuUGFyZW50RWxlbWVudElkLCRzY29wZS5mZC5QcmVzZW50YXRpb25JZCwkc2NvcGUucHJldlRhc2tFeGVJZCwkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmZvcm1UeXBlLCRzY29wZS5sb2NhbFZhcnNXaWRnZXQud2lkZ2V0VHlwZSwkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQsXCJ3XCIsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5QcmVzZW50YXRpb25JZF0gPSAgZGF0YS5kYXRhLmZvcm1fZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXT09dW5kZWZpbmVkKSAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXT1bXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VXaWRnZXREZWZpbml0aW9uPSBkYXRhLmRhdGEucmVzb3VyY2VEZWZpbml0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YS5kYXRhLndpZGdldHMpKSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmRhc2hib2FyZC53aWRnZXRzLmxheW91dCA9ICBkYXRhLmRhdGEud2lkZ2V0cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5QcmVzZW50YXRpb25JZF0ubGVuZ3RoPjApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZCA9ICRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWRdWzBdWydpZCddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5kYXRhc2V0UmVjb3JkSWQ9JHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0hPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZT0kc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbi5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5yZWxhdGVkSWQ9JHNjb3BlLmZkLlJlbGF0ZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLnByZXNlbnRhdGlvbklkPSRzY29wZS5mZC5QcmVzZW50YXRpb25JZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0uc3JjX3R5cGVfaWQ9JHNjb3BlLmZkLlBvcHVsYXRlVHlwZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0uc3JjX3R5cGVfdGV4dD0kc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNyY190eXBlX3RleHRbJHNjb3BlLmZkLlBvcHVsYXRlVHlwZV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLnBhcmVudEVsZW1lbnRJZD0kc2NvcGUuZmQuUGFyZW50RWxlbWVudElkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW09eyduYW1lJzokc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbi5uYW1lLCdyZWxhdGVkSWQnOiRzY29wZS5mZC5SZWxhdGVkLCAncHJlc2VudGF0aW9uSWQnOiRzY29wZS5mZC5QcmVzZW50YXRpb25JZCAgLCdzcmNfdHlwZV9pZCc6JHNjb3BlLmZkLlBvcHVsYXRlVHlwZSwnc3JjX3R5cGVfdGV4dCc6JHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zcmNfdHlwZV90ZXh0WyRzY29wZS5mZC5Qb3B1bGF0ZVR5cGVdLCdwYXJlbnRFbGVtZW50SWQnOiRzY29wZS5mZC5QYXJlbnRFbGVtZW50SWR9O1xyXG4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRzY29wZS5mZC53SXRlbVZhbHVlPWRhdGEuZGF0YS53aWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAkdGltZW91dChmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZm9ybUxvYWRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmluaXRpYXRlRm9ybUxvYWRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5mb3JtTG9hZGluZz1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VhcmNoRm9ybURvd25sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIH0pOyAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9NSUdPUiAtIGJpdG5vIC0gRE9CSU8gUkVTT1VSQ0VSRUNPUkQtSUQgWkEgQlJPQURDQVNUICAtIFZJRVdfUkVTT1VSQ0UgV0lER0VUXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5zZXREYXRhKHt3aWRnZXRJZDokc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsIERFSTogW3snbmFtZSc6J3Jlc291cmNlTGluaycsJ3ZhbHVlJzpbe25hbWU6J3Jlc291cmNlSWQnLHZhbHVlOiRzY29wZS5mZC5SZWxhdGVkfSx7bmFtZToncmVzb3VyY2VSZWNvcmRJZCcsdmFsdWU6JHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkfV19XX0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZXRGaWVsZCgkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmRhc2hib2FyZC53aWRnZXRzLmxheW91dCwnUmVhZE9ubHknLHRydWUpOyAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNldEZpZWxkKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0LCdSZXF1aXJlZCcsZmFsc2UpOyAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICB9O1xyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZXRTZWxlY3RlZERhdGFzZXQgPSBmdW5jdGlvbihpZCkgIHtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbT09dW5kZWZpbmVkKSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtPXt9O1xyXG4gICAgICAgICAgICAgIHZhciBwb3MgPSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlTGlzdC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZihpZCk7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgaWYgKHBvcz49MCl7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLmlkID0gJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZUxpc3RbcG9zXS5pZDtcclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZSA9ICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VMaXN0W3Bvc10ubmFtZTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWREYXRhc2V0ID0gJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZUxpc3RbcG9zXTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQgPSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWUgKycgKCcrJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5pZCArJyknXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtX2M9JHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIC8vIFBPUFVOSSBMSVNUVSBERUZJTklDSUpBIE9EIFJFU1VSU0EgKFJFU09VUkNFUyBMSVNUKVxyXG5cdCRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZ2V0UmVzb3VyY2VzID0gZnVuY3Rpb24oKSAge1xyXG5cdFx0XHRcdFx0XHRcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VMaXN0PT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VMaXN0PVtdO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUobGFuZywnc21hcnRjb250cmFjdCcpLnRoZW4oXHJcblx0XHRcdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZUxpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5SZWxhdGVkIT1udWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZXRTZWxlY3RlZERhdGFzZXQoJHNjb3BlLmZkLlJlbGF0ZWQpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0IFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0IH0pO1xyXG5cdFx0XHRcdFx0fVxyXG4gICBcclxuICAgXHJcblxyXG4kc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmdldFByZXZpb3VzVGFza1dpZGdldCAgPSBmdW5jdGlvbihsaW5rVHlwZSlcclxuICAgIHtcclxuICAgICAgdmFyIHBUYXNrRGF0YTtcclxuICAgICAgdmFyIHBUYXNrRGF0YVJldCA9IFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UuZ2V0UHJldlRhc2tEYXRhKCRzY29wZS5wcmV2VGFza0V4ZUlkKTtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocFRhc2tEYXRhUmV0KSAmJiBwVGFza0RhdGFSZXQubGVuZ3RoPjApIHBUYXNrRGF0YSA9IHBUYXNrRGF0YVJldFswXTtcclxuICAgICAgICAgICAgdmFyIGRhdGFzZXRJZD0wLGRhdGFzZXRSZWNvcmRJZD0wO1xyXG4gICAgICAgICAgICBpZiAocFRhc2tEYXRhIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgaWYgKHBUYXNrRGF0YS5ERUkhPXVuZGVmaW5lZCAmJiBwVGFza0RhdGEuREVJIT1udWxsKVxyXG4gICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHBUYXNrRGF0YS5ERUkubGVuZ3RoO2krKylcclxuICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgIGlmIChwVGFza0RhdGEuREVJW2ldLm5hbWU9PWxpbmtUeXBlKVxyXG4gICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgIGlmIChwVGFza0RhdGEuREVJW2ldLnZhbHVlIT11bmRlZmluZWQgJiYgcFRhc2tEYXRhLkRFSVtpXS52YWx1ZSE9bnVsbClcclxuICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wO2o8cFRhc2tEYXRhLkRFSVtpXS52YWx1ZS5sZW5ndGg7aisrKVxyXG4gICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocFRhc2tEYXRhLkRFSVtpXS52YWx1ZVtqXS5uYW1lPT1cInJlc291cmNlSWRcIiAmJiBwVGFza0RhdGEuREVJW2ldLnZhbHVlW2pdLnZhbHVlIT11bmRlZmluZWQpIGRhdGFzZXRJZD1wVGFza0RhdGEuREVJW2ldLnZhbHVlW2pdLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHBUYXNrRGF0YS5ERUlbaV0udmFsdWVbal0ubmFtZT09XCJyZXNvdXJjZVJlY29yZElkXCIgJiYgcFRhc2tEYXRhLkRFSVtpXS52YWx1ZVtqXS52YWx1ZSE9dW5kZWZpbmVkKSBkYXRhc2V0UmVjb3JkSWQ9cFRhc2tEYXRhLkRFSVtpXS52YWx1ZVtqXS52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgcmV0dXJuIHsnZGF0YXNldElkJzpkYXRhc2V0SWQsJ2RhdGFzZXRSZWNvcmRJZCc6ZGF0YXNldFJlY29yZElkfTtcclxuICAgIH07XHJcblxyXG5cclxuICAgXHJcbiAgIFxyXG4gICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucHJldmlvdXNUYXNrRGF0YT0kc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmdldFByZXZpb3VzVGFza1dpZGdldChcInJlc291cmNlTGlua0RhdGFzZXRMaXN0XCIpO1xyXG4gXHJcbiAgICAgICAgICBcclxuICBpZiAoJHNjb3BlLmZkLlJlbGF0ZWQhPW51bGwgJiYgICEkc2NvcGUuZm9ybURlZmluaXRpb24gJiYgISRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VhcmNoRm9ybURvd25sb2FkZWQpXHJcbiAge1xyXG4gICAgXHJcbiAgICAvLyAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmdldEZvcm1SZXNvdXJjZVdpdGhEYXRhKCk7XHJcbiAgICAvLyAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmdldERhdGFzZXRzKCk7XHJcbiAgICAvLyAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNldFNlbGVjdGVkRGF0YXNldCgkc2NvcGUuZmQuUmVsYXRlZCk7XHJcbiAgICBcclxuICB9ZWxzZSBpZiAoJHNjb3BlLmZkLlJlbGF0ZWQhPW51bGwpXHJcbiAge1xyXG4gICAgIC8vJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5nZXRGb3JtUmVzb3VyY2UoKTtcclxuICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmdldFJlc291cmNlcygpO1xyXG4gICAgIC8vJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZXRTZWxlY3RlZERhdGFzZXQoJHNjb3BlLmZkLlJlbGF0ZWQpO1xyXG4gICAgXHJcbiAgfSBcclxuXHJcbiAgXHJcbiAgICAgIC8vbm92aSBGSUxFIENPTk5FQ1RPUiAtIHZpZXcgcmVzb3VyY2Ugd2lkZ2V0XHJcbiAgICAgICRzY29wZS5vcGVuV2lkZ2V0Q29ubmVjdG9yICA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNob3dXaWRnZXRDb25uZWN0b3I9ICEkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNob3dXaWRnZXRDb25uZWN0b3I7XHJcbiAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zaG93V2lkZ2V0Q29ubmVjdG9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIC8vUE9QVU5JIExJU1RVIERBVEFTRVRPVkEgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZMaXN0QnlUeXBlKGxhbmcsJ3NtYXJ0Y29udHJhY3QnKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZG9kYWogaW1lIGRhdGFzZXRhIHUga29uZWt0b3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQubGlzdE9mQ29ubmVjdG9ycyE9dW5kZWZpbmVkKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPCAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0Lmxpc3RPZkNvbm5lY3RvcnMubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy92YXIgcCA9ICRzY29wZS5yZXNvdXJjZUxpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5saXN0T2ZDb25uZWN0b3JzW2ldLnBhcmVudERhdGFzZXREZWZJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcCA9ICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQubGlzdE9mQ29ubmVjdG9yc1tpXS5wYXJlbnREYXRhc2V0RGVmSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHA+PTApICRzY29wZS5sb2NhbFZhcnNXaWRnZXQubGlzdE9mQ29ubmVjdG9yc1tpXS5wYXJlbnREYXRhc2V0TmFtZSA9ICRzY29wZS5yZXNvdXJjZUxpc3RbcF0ubmFtZTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiBcdFx0XHRcdFx0XHRcdGlmICgkc2NvcGUuZmQudEl0ZW1WYWx1ZT09dW5kZWZpbmVkIHx8ICRzY29wZS5mZC50SXRlbVZhbHVlWzBdPT1udWxsKSAkc2NvcGUuZmQudEl0ZW1WYWx1ZSA9IFtdOyBcclxuXHRcdFx0XHRcdFx0XHQvLyBvdm8gamUgIEt0LVVQTE9BREVSXHJcblx0XHRcdFx0XHRcdFx0ICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0Lmxpc3RPZkNvbm5lY3RvcnM9IFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UuZ2V0UmVnaXN0ZXJlZFdpZGdldHMoKTsvL01JR09SICAtIHV6bWkgc3ZlIHJlZ2lzdHJpcmFuZSB3aWRnZXRlXHJcblx0XHRcdFx0XHRcdFx0ICBcclxuXHRcdFx0XHRcdFx0XHQgIC8vQnJpc2kgc3ZlIGtvamkgc2UgdmVjIG5hbGF6ZSB1IHRJdGVtVmFsdWVcclxuXHRcdFx0XHRcdFx0XHQgICBpZiAoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5saXN0T2ZDb25uZWN0b3JzIT11bmRlZmluZWQpIFxyXG5cdFx0XHRcdFx0XHRcdFx0ICBmb3IgKHZhciBpPTA7aTwgJHNjb3BlLmZkLnRJdGVtVmFsdWUubGVuZ3RoIDtpKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgZm9yICh2YXIgaj0wO2o8ICRzY29wZS5sb2NhbFZhcnNXaWRnZXQubGlzdE9mQ29ubmVjdG9ycy5sZW5ndGg7aisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLnRJdGVtVmFsdWVbaV0hPW51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzV2lkZ2V0Lmxpc3RPZkNvbm5lY3RvcnNbal0ud2lkZ2V0SWQ9PSRzY29wZS5mZC50SXRlbVZhbHVlW2ldLndpZGdldElkKSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQubGlzdE9mQ29ubmVjdG9ycy5zcGxpY2UoaiwxKTsvL2JyaXNpIGxva2FsbmlcdFx0XHRcdCAgIFx0XHRcdFx0XHQgICAgXHRcdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0XHQgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZG9kYWogc2Egc2VydmVyYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPCAkc2NvcGUuZmQudEl0ZW1WYWx1ZS5sZW5ndGggO2krKykgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLnRJdGVtVmFsdWVbaV0hPW51bGwpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQubGlzdE9mQ29ubmVjdG9ycy5wdXNoKCRzY29wZS5mZC50SXRlbVZhbHVlW2ldKTtcdFx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblxyXG5cdFx0XHRcdFx0XHRcdCAgLy9Pc3RhdmkgdSBsaXN0aSBrb25la3RvcmEgc2FtbyBXSURHRVRFIGtvamkgaW1hanUgXCJSZXNvdXJjZUlEXCIgamVyIHN1IHRvIGRhdGEgd2lkZ2V0aVxyXG5cdFx0XHRcdFx0XHRcdCAgdmFyIG5ld2xpc3Q9W107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cdFx0XHRcdFx0XHRcdCAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5saXN0T2ZDb25uZWN0b3JzIT11bmRlZmluZWQpe1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTwgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5saXN0T2ZDb25uZWN0b3JzLmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5saXN0T2ZDb25uZWN0b3JzW2ldLkRFSSE9dW5kZWZpbmVkKSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGo9MDtqPCAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0Lmxpc3RPZkNvbm5lY3RvcnNbaV0uREVJLmxlbmd0aDtqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2FrbyBERUkgbmlqZSB0cnVlL2ZhbHNlIC0gcmVzZXRpcmFqIG5hIGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5saXN0T2ZDb25uZWN0b3JzW2ldLkRFSVtqXS52YWx1ZSE9ZmFsc2UpICYmICgkc2NvcGUubG9jYWxWYXJzV2lkZ2V0Lmxpc3RPZkNvbm5lY3RvcnNbaV0uREVJW2pdLnZhbHVlIT10cnVlKSApICRzY29wZS5sb2NhbFZhcnNXaWRnZXQubGlzdE9mQ29ubmVjdG9yc1tpXS5ERUlbal0udmFsdWU9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kb2RhaiBrb25la3RvciB1IG5vdnUgbGlzdHUgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3bGlzdC5wdXNoKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQubGlzdE9mQ29ubmVjdG9yc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0vL2lmXHJcblx0XHRcdFx0XHRcdFx0ICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0Lmxpc3RPZkNvbm5lY3RvcnM9bmV3bGlzdDsgLy9rb25hY25hIGxpc3RhIE5PVklIIGRhdGFzZXQga29uZWt0b3JhIFxyXG4gXHJcblx0XHRcdFxyXG5cdFxyXG4gICAgICAgICAgICB9IC8vaWYgc2hvd2ZpbGVjb25uZXRvciAgXHJcblx0XHR9OyAvLyBvcGVuIEZJTEVDT05ORUNUT1IgLSBWSUVXXHJcbiAgICBcclxuXHJcbiAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQub2tXaWRnZXRDb25uZWN0b3IgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC50SXRlbVZhbHVlPSRzY29wZS5sb2NhbFZhcnNXaWRnZXQubGlzdE9mQ29ubmVjdG9ycztcclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2hvd1dpZGdldENvbm5lY3Rvcj1mYWxzZTsgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmNhbmNlbFdpZGdldENvbm5lY3RvciA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNob3dXaWRnZXRDb25uZWN0b3I9ZmFsc2U7ICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5wcm9jZXNzV2lkZ2V0RGVwZW5kZW5jaWVzID0gZnVuY3Rpb24oKSB7IC8vLS0tLS0gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgaWYgKCRzY29wZS5mZC50SXRlbVZhbHVlIT11bmRlZmluZWQpIFxyXG4gICAgICAgICAgICBmb3IgKHZhciBpPTA7aTwgJHNjb3BlLmZkLnRJdGVtVmFsdWUubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGxpbmtlZFdpZGdldElkPSRzY29wZS5mZC50SXRlbVZhbHVlW2ldLndpZGdldElkOyAgLy8gbGlua2VkV2lkZ2V0SWQ9IFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UuZ2V0TG9jYWxXaWRnZXRJZChsaW5rZWRXaWRnZXRJZCk7Ly9NSUdPUiAtIG1vcmFtIGRvYml0aSBsb2NhbHdpZGdldElkIG9kIHZlemFub2cgV2lkZ2V0SWQgXHJcbiAgICAgICAgICAgICAgICB2YXIgbGlua2VkSXRlbSA9ICdyZXNvdXJjZUxpbmsnICAgICAgICAgICAgICAgICAgICAgIC8vdmFyIGxpbmtlZEl0ZW0gPSAkc2NvcGUuZmQudEl0ZW1WYWx1ZVtpXS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmIChsaW5rZWRXaWRnZXRJZCE9dW5kZWZpbmVkICYmIGxpbmtlZFdpZGdldElkIT1udWxsICkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGo9MDtqPCRzY29wZS5mZC50SXRlbVZhbHVlW2ldLkRFSS5sZW5ndGg7aisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoJHNjb3BlLmZkLnRJdGVtVmFsdWVbaV0uREVJW2pdLm5hbWU9PWxpbmtlZEl0ZW0pICYmICgkc2NvcGUuZmQudEl0ZW1WYWx1ZVtpXS5ERUlbal0udmFsdWU9PXRydWUpKSB7IC8vU0NPUEUuT04gc2FtbyBrYWQgamUgREVJIHZhbHVlID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsaW5rZWRJdGVtID0gJHNjb3BlLmZkLnRJdGVtVmFsdWVbaV0uREVJW2pdLm5hbWU7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidmlldyBcIiskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQrXCIgc2UgdmV6ZSBuYSBzZXJ2ZXJza2kgXCIgKyBsaW5rZWRXaWRnZXRJZCk7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS4kb24oJ0V2ZW50JytsaW5rZWRXaWRnZXRJZCtsaW5rZWRJdGVtLGZ1bmN0aW9uKGV2ZW50LCBkYXRhKXsgIC8vaWRlIHBvIHN2aW0gdmV6YW5pbSB3aWRnZXRpbWEgaSBkb2RhaiAkc2NvcGUub24gICAvL01JR09SIFRPRE8gLSBET0RBVEkgU0FNTyBVIFNMVUNBSlUgREEgSkUgREVJIFZBTFVFID0gVFJVRSAhISEhICAgICA8PDw8PDw8PDw8PDw8ICEhISEhISEhIVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgY29uc29sZS5sb2coXCJ2aWV3IFwiKyAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQrXCIgZG9iaW8gZXZlbnQgXCIgKyBldmVudC5uYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrPTA7azxkYXRhLmxlbmd0aDtrKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhW2tdLm5hbWU9PSdyZXNvdXJjZVJlY29yZElkJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5saW5rZWRSZXNvdXJjZUlkID0gZGF0YVtrXS52YWx1ZTsgLy9UT0RPIC0gSUxKIC0gb3ZvIGJpIGlzdG8gdHJlYmFsYSBiaXRpIHZhcmlqYWJsYSAtIHN0YSBha28gcHJvbWplbmltIGludGVyZmFjZSBvZG5vc25vIG5heml2IHBvbGphIVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQgPSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmxpbmtlZFJlc291cmNlSWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YVtrXS5uYW1lPT0ncmVzb3VyY2VJZCcpICRzY29wZS5sb2NhbFZhcnNXaWRnZXQubGlua2VkUmVzb3VyY2VEZWZJZCA9IGRhdGFba10udmFsdWU7ICAvL1RPRE8tIElMSiAtIG92byBiaSBpc3RvIHRyZWJhbGEgYml0aSB2YXJpamFibGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZ2V0IHNlbGVjdGVkUmVjb3JkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZ2V0Rm9ybVJlc291cmNlV2l0aERhdGEoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9cdGRhdGE6IHtyZXNvdXJjZV9kZWZfaWQ6JHNjb3BlLmZkLmxpbmtlZFJlc291cmNlRGVmSWQscmVzb3VyY2VfaWQ6JHNjb3BlLmZkLmxpbmtlZFJlc291cmNlSWR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSAvL29uX0VORFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9Ly9pZlxyXG4gICAgICAgICAgICAgICAgICAgIH0vL2ZvciBqXHJcbiAgICAgICAgICAgICAgICB9Ly9pZlxyXG5cclxuICAgICAgICAgICAgIC8vIGVsc2UgeyAgJHNjb3BlLmZkLnRJdGVtVmFsdWUuc3BsaWNlKGksMSk7ICB9IC8vIG5pamUgbWkgamFzbm8gemFzdG8gc2FtIHJhZGlvIFNQTElDRVxyXG4gICAgICAgICAgICB9IC8vZm9yIGlcclxuICAgICAgfS8vZm4gIHByMGNlc3NXaWRnZXREZXBlbmRlY2llcyAtLS0tLS0tLS0tLS0tICAgIGt0Vmlld1NpbmdsZVJlc291cmNlV2lkZ2V0XHJcblxyXG4gICAgICAgICAgaWYgKCRzY29wZS5mZC5QcmVzZW50YXRpb25JZD09dW5kZWZpbmVkIHx8ICRzY29wZS5mZC5QcmVzZW50YXRpb25JZD09bnVsbCkgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPTA7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZm9ybVR5cGU9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX3R5cGU7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8qVGFza0RhdGFTZXJ2aWNlLmdldFdpZGdldERlcGVuZGVuY2llcygkc2NvcGUudGFza0lkLCRzY29wZS5mZC5QcmVzZW50YXRpb25JZCwkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmZvcm1UeXBlKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC50SXRlbVZhbHVlPWRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnByb2Nlc3NXaWRnZXREZXBlbmRlbmNpZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ki9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICBcclxuICAgICAgICAgICAgbGV0IHRlbXBsYXRlXHJcbiAgICAgICAgICAgIHRlbXBsYXRlID0gJHRlbXBsYXRlQ2FjaGUuZ2V0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEV4ZWN1dGVTbWFydENvbnRyYWN0Lmh0bWwnKTtcclxuICAgICAgICAgICAgJGVsZW1lbnQuYXBwZW5kKCRjb21waWxlKHRlbXBsYXRlKSgkc2NvcGUpKTsgXHJcblxyXG4gIFxyXG4gICAgICB9XTtcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgY29udHJvbGxlcjogY29udHJvbGxlcixcclxuICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG5cclxuICAgICAgICAgICAgfSAgICAgXHJcbiAgfVxyXG4gIFxyXG59O1xuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24ga3RFeGVjdXRlVGFza1dpZGdldCAoKSB7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXG4gICAgICAgICAgY29udHJvbGxlcjpmdW5jdGlvbigkc2NvcGUsVXNlclNlcnZpY2UsUmVzb3VyY2VzRGF0YVNlcnZpY2UsJHJvb3RTY29wZSxQcm9jZXNzaW5nU2VydmljZSwkdGltZW91dCwkc3RhdGVQYXJhbXMsJGNvb2tpZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLCRzdGF0ZSxUYXNrRGF0YVNlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxHcmlkc3RlclNlcnZpY2UsJHRlbXBsYXRlQ2FjaGUsJGNvbXBpbGUsJGVsZW1lbnQpe1xuICAgICAgICAgIFxuICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycz09dW5kZWZpbmVkKSAkc2NvcGUubG9jYWxWYXJzID0ge307XG4gICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2hvd01lbnUgPSBmYWxzZVxuICAgICAgXG5cbiAgXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5leGVjdXRlVGFza0RhdGFMb2FkZWQ9ZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzaz09dW5kZWZpbmVkKSAkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2sgPSB7fTtcbiAgICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcbiAgICAgICAgICAgICAgICAvLyRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzayA9IGFuZ3VsYXIuY29weSgkc2NvcGUubG9jYWxWYXJzKTtcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLnRhc2tEZWZpbml0aW9uPT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay50YXNrRGVmaW5pdGlvbiA9IHt9O1xuICAgICAgXHRcbiAgICAgICAgICAgICAgICAvL1dpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UuZGVSZWdpc3RlckFsbFdpZGdldHMoKTsvL01JR09SIFRPRE8gLSBkb2RhbyBvdm8gYWxpIGdkamUgamUgcmVnaXN0ZXJUQVNLIGkgZGEgbGkgdHJlYmEgb3ZkamU/Pz8/XG4gICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay5mcm9tU3RhdGVOYW1lPSRzdGF0ZVBhcmFtcy5mcm9tU3RhdGVOYW1lO1xuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay5mcm9tU3RhdGVQYXJhbXM9JHN0YXRlUGFyYW1zLmZyb21TdGF0ZVBhcmFtcztcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2suY29va2llRnJvbVN0YXRlTmFtZT0kY29va2llcy5nZXRPYmplY3QoJ2V4ZWN1dGVUYXNrRnJvbVN0YXRlTmFtZScpO1xuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay5jb29raWVGcm9tU3RhdGVQYXJhbXM9JGNvb2tpZXMuZ2V0T2JqZWN0KCdleGVjdXRlVGFza0Zyb21TdGF0ZVBhcmFtcycpO1xuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay5ub0JhY2tidXR0b24gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2suYmFja0J0bkZyb21Db29raWU9ZmFsc2U7XG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLmluaXRpYXRlRm9ybUxvYWRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay50YXNrSW5pdGlhdGVJbnN0YW5jZT1bXTtcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2sudGFza0V4ZWN1dGVJbnN0YW5jZT1bXTtcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2suZGFzaGJvYXJkID0ge3dpZGdldHMgOiBbXSxkYXRhOnt9fTtcblxuICAgICAgXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay5mcm9tU3RhdGVOYW1lPT11bmRlZmluZWQgfHwgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLmZyb21TdGF0ZU5hbWU9PVwiXCIpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLmNvb2tpZUZyb21TdGF0ZU5hbWU9PXVuZGVmaW5lZCB8fCAkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2suY29va2llRnJvbVN0YXRlTmFtZT09XCJcIilcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay5ub0JhY2tCdXR0b24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9ZWxzZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLmZyb21TdGF0ZU5hbWUgPSAgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLmNvb2tpZUZyb21TdGF0ZU5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLmJhY2tCdG5Gcm9tQ29va2llID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgJGNvb2tpZXMucHV0T2JqZWN0KCdleGVjdXRlVGFza0Zyb21TdGF0ZU5hbWUnLCRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay5mcm9tU3RhdGVOYW1lKTtcbiAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIH1cbiAgICAgIFxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2suZnJvbVN0YXRlUGFyYW1zPT11bmRlZmluZWQpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLmNvb2tpZUZyb21TdGF0ZVBhcmFtcyE9dW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLmJhY2tCdG5Gcm9tQ29va2llKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2suZnJvbVN0YXRlUGFyYW1zID0gICRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay5jb29raWVGcm9tU3RhdGVQYXJhbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgfWVsc2UgaWYgKCRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay5jb29raWVGcm9tU3RhdGVQYXJhbXM9PXVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAkY29va2llcy5wdXRPYmplY3QoJ2V4ZWN1dGVUYXNrRnJvbVN0YXRlUGFyYW1zJywkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2suZnJvbVN0YXRlUGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIH1lbHNlXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLmJhY2tCdG5Gcm9tQ29va2llKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2suZnJvbVN0YXRlUGFyYW1zID0gICRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay5jb29raWVGcm9tU3RhdGVQYXJhbXM7XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgfWVsc2VcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGNvb2tpZXMucHV0T2JqZWN0KCdleGVjdXRlVGFza0Zyb21TdGF0ZVBhcmFtcycsJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLmZyb21TdGF0ZVBhcmFtcyk7ICAgIFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLmdyaWRzdGVyVHlwZT1cInRhc2tcIjtcbiAgICAgICAgICAgICAgLy8gICRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay5ncmlkc3RlckV4ZUZvcm1PcHRzID0gR3JpZHN0ZXJTZXJ2aWNlLmdldEdyaWRzdGVyT3B0aW9ucygpO1xuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay5mb3JtVHlwZT1cImVcIjtcbiAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay5pc0NvbGxhcHNlZFRhc2tEZXRhaWxzPXRydWU7XG4gICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2suRm9ybUxvY2tVbmxvY2sgPSBmdW5jdGlvbigpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1Mb2NrZWQ9ISRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay5yZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtTG9ja2VkO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLmdvQmFjayA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhdGUuZ28oJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLmZyb21TdGF0ZU5hbWUsJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLmZyb21TdGF0ZVBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy50b2dnbGVEcm9wZG93biA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dNZW51ID0gICRzY29wZS5sb2NhbFZhcnMuc2hvd01lbnUgPyBmYWxzZTogdHJ1ZSBcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNldFRhc2tFeGVjdXRlRGF0YSA9IGZ1bmN0aW9uKGlucHV0RGF0YSl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2sucmVzb3VyY2VEZWZpbml0aW9uPSBpbnB1dERhdGEuZGF0YS5yZXNvdXJjZURlZmluaXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2suZGFzaGJvYXJkLndpZGdldHMubGF5b3V0ID0gaW5wdXREYXRhLmRhdGEud2lkZ2V0cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay5kYXNoYm9hcmQuZGF0YSA9IGlucHV0RGF0YS5kYXRhLmZvcm1fZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay50YXNrRGVmaW5pdGlvbiA9IGlucHV0RGF0YS5kYXRhLnRhc2tkZWZbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2sudGFza0RlZmluaXRpb24udHJhbnNhY3Rpb25faWQgPSBpbnB1dERhdGEuZGF0YS50cmFuc2FjdGlvbklkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLnRhc2tEZWZpbml0aW9uLmZkID0gJHNjb3BlLmZkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLnRhc2tJZCA9ICRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay50YXNrRGVmaW5pdGlvbi5SZXNvdXJjZURlZklkX2lkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5pbmxpbmVUYXNrRGVmaW5pdGlvbiE9dW5kZWZpbmVkKSAkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2sudGFza0RlZmluaXRpb24ucHJldl90YXNrX2lkID0gJHNjb3BlLmlubGluZVRhc2tEZWZpbml0aW9uLnByZXZfdGFza19pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLnRhc2tJbml0aWF0ZUluc3RhbmNlID0gaW5wdXREYXRhLmRhdGEudGFza0luaXRpYXRlSW5zdGFuY2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2sudGFza0V4ZWN1dGVJbnN0YW5jZSA9IGlucHV0RGF0YS5kYXRhLnRhc2tFeGVjdXRlSW5zdGFuY2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay5PcGVuVGFza0luTmV3UGFnZSkgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLlNob3dDbG9zZUJ0bj10cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay5pbml0aWF0ZUZvcm1Mb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLmlzQ29sbGFwc2VkMyA9ZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2sucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXM9e2Zvcm1Mb2NrZWQ6dHJ1ZSxmb3JtVmlld1R5cGU6Mn07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay50YXNrRXhlY3V0ZUluc3RhbmNlLmxlbmd0aD4wKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLnRhc2tEZWZpbml0aW9uLnRhc2tfZXhlY3V0ZV9pZCA9ICRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay50YXNrRXhlY3V0ZUluc3RhbmNlWzBdLmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLnRhc2tEZWZpbml0aW9uLnRhc2tFeGVjdXRlSW5zdGFuY2U9JHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLnRhc2tFeGVjdXRlSW5zdGFuY2VbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2sudGFza0RlZmluaXRpb24udGFza19leGVjdXRlX2lkID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay50YXNrSW5pdGlhdGVJbnN0YW5jZS5sZW5ndGg+MClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay50YXNrRGVmaW5pdGlvbi50YXNrX2luaXRpYXRlX2lkID0gJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLnRhc2tJbml0aWF0ZUluc3RhbmNlWzBdLmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLnRhc2tEZWZpbml0aW9uLnRhc2tJbml0aWF0ZUluc3RhbmNlPSRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay50YXNrSW5pdGlhdGVJbnN0YW5jZVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay50YXNrRGVmaW5pdGlvbi50YXNrX2luaXRpYXRlX2lkID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay50YXNrRGVmaW5pdGlvbi5mb3JtX3R5cGU9XCJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLnRhc2tEZWZpbml0aW9uLlRhc2tPdXRjb21lSGVhZElkX2lkPT11bmRlZmluZWQgfHwgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLnRhc2tEZWZpbml0aW9uLlRhc2tPdXRjb21lSGVhZElkX2lkPT1udWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLnRhc2tEZWZpbml0aW9uLlRhc2tPdXRjb21lSGVhZElkX2lkID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS4kb24oJ0V4ZWN1dGVUYXNrUG9zdFByb2Nlc3MnKyAkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2sudGFza0RlZmluaXRpb24udGFza19leGVjdXRlX2lkLGZ1bmN0aW9uKGV2ZW50LGRhdGExKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0VGFza0V4ZWN1dGVEYXRhKCRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay50YXNrRGVmaW5pdGlvbi50YXNrX2luaXRpYXRlX2lkLCRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay50YXNrRGVmaW5pdGlvbi50YXNrX2V4ZWN1dGVfaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRvbignSW5saW5lVGFza0Nsb3NlZCcsZnVuY3Rpb24oZXZlbnQsZGF0YSl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YT09JHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLnRhc2tJZCkgJHNjb3BlLmxvY2FsVmFycy5leGVjdXRlVGFza0RhdGFMb2FkZWQ9ZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS4kb24oJ1JlZnJlc2hEYXRhJysgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLnRhc2tEZWZpbml0aW9uLnRhc2tfZXhlY3V0ZV9pZCxmdW5jdGlvbihldmVudCxkYXRhMil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0VGFza0V4ZWN1dGVEYXRhKCRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay50YXNrRGVmaW5pdGlvbi50YXNrX2luaXRpYXRlX2lkLCRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay50YXNrRGVmaW5pdGlvbi50YXNrX2V4ZWN1dGVfaWQsZGF0YTIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS4kb24oJ0V4ZWN1dGVUYXNrJyskc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2sudGFza19leGVjdXRlX2lkLGZ1bmN0aW9uKGV2ZW50LGRhdGEpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5FeGVjdXRlVGFzayhkYXRhLmZvcm0sZGF0YS5vdXRjb21lSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFza0RhdGFTZXJ2aWNlLkdldFRhc2tPdXRjb21lcygkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2sudGFza0RlZmluaXRpb24uUmVzb3VyY2VEZWZJZF9pZCwkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2sudGFza0RlZmluaXRpb24uVGFza091dGNvbWVIZWFkSWRfaWQsbGFuZykudGhlbihmdW5jdGlvbihkYXRhMykgeyAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLnRhc2tPdXRjb21lcyA9IGRhdGEzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZXhlY3V0ZVRhc2tEYXRhTG9hZGVkPXRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICBcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdldFRhc2tFeGVjdXRlRGF0YSA9IGZ1bmN0aW9uKGluaXRpYXRlX2lkLGV4ZWN1dGVfaWQsaW5EYXRhKXtcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcbiAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLnRhc2tfaW5pdGlhdGVfaWQgPSBpbml0aWF0ZV9pZDtcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLnRhc2tfZXhlY3V0ZV9pZCA9IGV4ZWN1dGVfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmV4ZWN1dGVUYXNrRGF0YUxvYWRlZD1mYWxzZTsgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5wcmVFeGVjdXRlVGFzayhpbml0aWF0ZV9pZCxleGVjdXRlX2lkLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZXRUYXNrRXhlY3V0ZURhdGEoZGF0YSk7ICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5FeGVjdXRlVGFza0FjdGlvbiA9IGZ1bmN0aW9uKGFjdGlvbil7XG4gICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5FeGVjdXRlVGFza0FjdGlvbigkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2sudGFza19pbml0aWF0ZV9pZCwkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2sudGFza19leGVjdXRlX2lkLGFjdGlvbixsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2sudGFza0luaXRpYXRlSW5zdGFuY2UgPWRhdGEuZGF0YS5kYXRhLnRhc2tJbml0aWF0ZUluc3RhbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay50YXNrRXhlY3V0ZUluc3RhbmNlID1kYXRhLmRhdGEuZGF0YS50YXNrRXhlY3V0ZUluc3RhbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2sudGFza0V4ZWN1dGVJbnN0YW5jZSE9dW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLnRhc2tEZWZpbml0aW9uLnRhc2tfZXhlY3V0ZV9pZCA9ICRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay50YXNrRXhlY3V0ZUluc3RhbmNlLmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aW9uPT1cImNsYWltXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wYWdlQ2hhbmdlZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc0V4ZWN1dGVUYXNrLmVuYWJsZUFjdGlvbnM9dHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyb290U2NvcGUuJGJyb2FkY2FzdCgnUmVmcmVzaERhdGEwJyxkYXRhLmRhdGEucmV0X3ZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5kYXRhLm1zZywnc3VjY2VzcycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIFxuICAgICAgXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5FeGVjdXRlVGFzayA9IGZ1bmN0aW9uKGZvcm0sb3V0Y29tZUlkKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm0uJHN1Ym1pdHRlZCkgJHNjb3BlLmxvY2FsVmFycy5zZXRTdWJtaXR0ZWQoZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm0uJHZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5leGVjdXRlVGFzaygkc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2sudGFza19leGVjdXRlX2lkLCRzY29wZS5sb2NhbFZhcnNFeGVjdXRlVGFzay5kYXNoYm9hcmQuZGF0YSxvdXRjb21lSWQsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEubXNnLCdzdWNjZXNzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJvb3RTY29wZS4kYnJvYWRjYXN0KCdFeGVjdXRlVGFza1Bvc3RQcm9jZXNzJyskc2NvcGUubG9jYWxWYXJzRXhlY3V0ZVRhc2sudGFza19leGVjdXRlX2lkLGRhdGEuZGF0YS5yZXRfdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIH0gLy8gaWYgKGlzVmFsaWQpXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShcIlBsZWFzZSBlbnRlciByZXF1aXJlZCBkYXRhXCIsJ3dhcm5pbmcnKTtcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07IFxuICAgICBcbiAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2V0U3VibWl0dGVkID0gZnVuY3Rpb24gKGZvcm0pIHtcbiAgICAgICAgICAgICAgIGZvcm0uJHNldFN1Ym1pdHRlZCgpO1xuICAgICAgICAgICAgICAgYW5ndWxhci5mb3JFYWNoKGZvcm0sIGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgICAgICAgICAgIGlmKGl0ZW0gJiYgaXRlbS4kJHBhcmVudEZvcm0gPT09IGZvcm0gJiYgaXRlbS4kc2V0U3VibWl0dGVkKSB7XG4gICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZXRTdWJtaXR0ZWQoaXRlbSk7XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgIH0pO1xuICAgICAgIH07IFxuICAgICAgICAgXG4gICAgICAgICAgbGV0IHRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGVmaW5pdGlvbikgdGVtcGxhdGUgPSAkdGVtcGxhdGVDYWNoZS5nZXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0RXhlY3V0ZVRhc2tXaWRnZXQuaHRtbCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZUNhY2hlLmdldCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RFeGVjdXRlVGFza1dpZGdldEV4ZS5odG1sJyk7XG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAkZWxlbWVudC5hcHBlbmQoJGNvbXBpbGUodGVtcGxhdGUpKCRzY29wZSkpOyAgXG4gICAgICAgICAgXG4gICAgICAgICAgXG4gICAgICAgICAgfSxcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XG4gICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgIFxuIFxuICAgIFxuICAgIFxuICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgfSAgICAgICAgICAgICBcbn07XG4ndXNlIHN0cmljdCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3RGaWVsZEFkdmFuY2VkUHJvcGVydGllcyAoKSB7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXHJcbiAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0RmllbGRBZHZhbmNlZFByb3BlcnRpZXMuaHRtbCcsXHJcbiAgICAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbigkc2NvcGUsQ29kZXNTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLCRyb290U2NvcGUsUHJvY2Vzc2luZ1NlcnZpY2UpeyAgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLkNUUkw9XCJrdEZpZWxkQWR2YW5jZWRQcm9wZXJ0aWVzXCJcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAgKCRzY29wZS5mZD8ubG9jYWxWYXJzPy5bJHNjb3BlLmZkLmlkXT09dW5kZWZpbmVkICkge1xyXG5cdFx0XHRcdFx0XHQvL2RlYnVnZ2VyXHJcblx0XHRcdFx0XHRcdCRzY29wZS5mZC5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXSA9IHt9XHJcblx0XHRcdFx0XHR9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5hZGRFdmVudD1mdW5jdGlvbigpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuZXZlbnRzPT11bmRlZmluZWQpICRzY29wZS5mZC5QYXJhbWV0ZXJzLmV2ZW50cz1bXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5ldmVudHMucHVzaCh7YWN0aW9uczpbXX0pICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uZGVsRXZlbnQgPSBmdW5jdGlvbihpZHgpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5ldmVudHMuc3BsaWNlKGlkeCwxKSAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmFkZEFjdGlvbj1mdW5jdGlvbihldmVudClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5hY3Rpb25zPT11bmRlZmluZWQpIGV2ZW50LmFjdGlvbnM9W11cclxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuYWN0aW9ucy5wdXNoKHt9KSAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmluc2VydEFjdGlvbj1mdW5jdGlvbihldmVudCxpbmRleClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5hY3Rpb25zPT11bmRlZmluZWQpIGV2ZW50LmFjdGlvbnM9W11cclxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuYWN0aW9ucy5zcGxpY2UoaW5kZXgsMCx7fSkgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5kZWxBY3Rpb249ZnVuY3Rpb24oZXZlbnQsaW5kZXgpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuYWN0aW9ucz09dW5kZWZpbmVkKSBldmVudC5hY3Rpb25zPVtdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5hY3Rpb25zLmxlbmd0aD5pbmRleCkgIGV2ZW50LmFjdGlvbnMuc3BsaWNlKGluZGV4LDEpICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgXHJcbn07XG4ndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBrdEZpZWxkQmFzaWNQcm9wZXJ0aWVzICgpIHtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcbiAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0RmllbGRCYXNpY1Byb3BlcnRpZXMuaHRtbCcsXG4gICAgICAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24oJHNjb3BlLENvZGVzU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSwkcm9vdFNjb3BlLFByb2Nlc3NpbmdTZXJ2aWNlKXsgICAgXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgXG59O1xuZXhwb3J0IGZ1bmN0aW9uIGt0RmllbGRCb3JkZXJQcm9wZXJ0eSAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcmVzdHJpY3Q6ICdBJyxcbiAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEZpZWxkQm9yZGVyUHJvcGVydHkuaHRtbCcsXG4gICAgICAgICAgc2NvcGU6IHtcbiAgICAgICAgICAgIGZkOiAnPScsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uKCRzY29wZSwgJHJvb3RTY29wZSl7XG4gICAgICAgICAgICAkc2NvcGUuQ1RSTD1cImt0RmllbGRCb3JkZXJQcm9wZXJ0eVwiXG4gICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzID09IHVuZGVmaW5lZCB8fCAkc2NvcGUuZmQuUGFyYW1ldGVycyA9PSBudWxsKSAkc2NvcGUuZmQuUGFyYW1ldGVycz17fTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuYm9yZGVyID09IHVuZGVmaW5lZCB8fCAkc2NvcGUuZmQuUGFyYW1ldGVycy5ib3JkZXIgPT0gbnVsbCApXG4gICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5ib3JkZXIgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnTGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOidzb2xpZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOjAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOlwiIzAwMDAwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnUmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTonc29saWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDowLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6XCIjMDAwMDAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnVG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6J3NvbGlkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6MCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6XCIjMDAwMDAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTp7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdCb3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTonc29saWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDowLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjpcIiMwMDAwMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLm1hcmdpbiA9PSAgdW5kZWZpbmVkIHx8ICAkc2NvcGUuZmQuUGFyYW1ldGVycy5tYXJnaW4gPT0gIG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlBhcmFtZXRlcnMubWFyZ2luPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogeyAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0xlZnQgTWFyZ2luJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0czpcInB4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bzogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IHsgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdSaWdodCBNYXJnaW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRzOlwicHhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IHsgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdUb3AgTWFyZ2luJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0czpcInB4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bzogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tOiB7ICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQm90dG9tIE1hcmdpbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHM6XCJweFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG86IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5wYWRkaW5nID09ICB1bmRlZmluZWQgfHwgICRzY29wZS5mZC5QYXJhbWV0ZXJzLnBhZGRpbmcgPT0gIG51bGwpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5wYWRkaW5nPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiB7ICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdMZWZ0IFBhZGRpbmcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0czpcInB4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IHsgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ1JpZ2h0IFBhZGRpbmcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHM6XCJweFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bzogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogeyAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnVG9wIFBhZGRpbmcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRzOlwicHhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG86IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0b206IHsgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0JvdHRvbSBQYWRkaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHM6XCJweFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bzogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuXG5cbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnNlbGVjdCA9IGZ1bmN0aW9uKHNlbGVjdGVkKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5zZWxlY3RlZD1zZWxlY3RlZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnNlbGVjdEJvcmRlciA9IGZ1bmN0aW9uKHNlbGVjdGVkKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5zZWxlY3RlZEJvcmRlcj1zZWxlY3RlZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW1lbnQsIGF0dHIpIHtcbiAgICAgICAgICBcbiAgICAgICAgXG4gICAgICAgIH1cbiAgICB9XG59O1xuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24ga3RGaWVsZERhdGFTb3VyY2VQcm9wZXJ0aWVzICgpIHtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcbiAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0RmllbGREYXRhU291cmNlUHJvcGVydGllcy5odG1sJyxcbiAgICAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbigkc2NvcGUsQ29kZXNTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLCRyb290U2NvcGUsUHJvY2Vzc2luZ1NlcnZpY2Upe1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgfVxuICAgICAgICB9XG4gIFxufTtcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGt0RmllbGRFeHRlbmRlZFByb3BlcnRpZXMgKCkge1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxuICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RGaWVsZEV4dGVuZGVkUHJvcGVydGllcy5odG1sJyxcbiAgICAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbigkc2NvcGUsQ29kZXNTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLCRyb290U2NvcGUsUHJvY2Vzc2luZ1NlcnZpY2Upe1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgfVxuICAgICAgICB9XG4gIFxufTtcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGt0RmllbGRHZW5lcmFsUHJvcGVydHkgKCkge1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxuICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RGaWVsZEdlbmVyYWxQcm9wZXJ0eS5odG1sJyxcbiAgICAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbigkc2NvcGUsQ29kZXNTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLCRyb290U2NvcGUsUHJvY2Vzc2luZ1NlcnZpY2UpeyAgICBcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICBcbn07XG4ndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBrdEZpZWxkU2l6ZVByb3BlcnR5ICgpIHtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcbiAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0RmllbGRTaXplUHJvcGVydHkuaHRtbCcsXG4gICAgICAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24oJHNjb3BlLENvZGVzU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSwkcm9vdFNjb3BlLFByb2Nlc3NpbmdTZXJ2aWNlKXsgICAgXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgXG59O1xuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24ga3RGaWVsZFN0eWxlUHJvcGVydHkgKCkge1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxuICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RGaWVsZFN0eWxlUHJvcGVydHkuaHRtbCcsXG4gICAgICAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24oJHNjb3BlLENvZGVzU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSwkcm9vdFNjb3BlLFByb2Nlc3NpbmdTZXJ2aWNlKXsgICAgXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgXG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0RmlsZSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJywgXHJcblx0XHRcdGNvbnRyb2xsZXI6IGZ1bmN0aW9uICgkc2NvcGUsICRyb290U2NvcGUsJGVsZW1lbnQsUmVzb3VyY2VzRGF0YVNlcnZpY2UsUHJvY2Vzc2luZ1NlcnZpY2UsJHRpbWVvdXQsTWVzc2FnaW5nU2VydmljZSxDT0RFU19DT05TVCxHcmlkc3RlclNlcnZpY2UsV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZSxLYXRhbHlvU3RhdGVNYW5hZ2VyLCRxKSB7XHJcblx0XHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlO1xyXG4gICAgICAgICRzY29wZS5vcmdfaWQgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIub3JnYW5pc2F0aW9uLmlkO1xyXG4gICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzPT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnM9e307ICAgICAgICBcclxuICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhID09IHVuZGVmaW5lZCkgJHNjb3BlLmZvcm1EYXRhPVt7fV07XHJcbiAgICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YS5sZW5ndGggPT0gMCkgJHNjb3BlLmZvcm1EYXRhLnB1c2goe30pO1xyXG5cclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzID0ge2Rhc2hib2FyZDp7d2lkZ2V0czpbXX19XHJcbiAgICAgICAgbGV0IG5ld1ZhbHVlU2luZ2xlLG5ld1ZhbHVlTXVsdGlwbGU7XHJcbiAgICAgICAgJHNjb3BlLmN0cmwgPSB0aGlzO1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXggPSAncmVzb3VyY2UnKyRzY29wZS5mZC5SZWxhdGVkKydfJyskcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIub3JnYW5pc2F0aW9uLmlkXHJcblxyXG5cclxuICAgICAgICAkc2NvcGUuQ1RSTE5BTUU9J2t0RmlsZSdcclxuXHJcbiAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzPT09dW5kZWZpbmVkIHx8ICRzY29wZS5mZC5QYXJhbWV0ZXJzPT09bnVsbCkgJHNjb3BlLmZkLlBhcmFtZXRlcnM9e31cclxuICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuUmVzb3VyY2VSZWxhdGlvbnNoaXBUeXBlPT09dW5kZWZpbmVkKSAkc2NvcGUuZmQuUGFyYW1ldGVycy5SZXNvdXJjZVJlbGF0aW9uc2hpcFR5cGU9J25ldydcclxuXHJcbiAgICAgICAgaWYgKCRzY29wZS5mZC5NYXhMZW5ndGg9PT11bmRlZmluZWQgfHwgJHNjb3BlLmZkLk1heExlbmd0aD09PW51bGwpICRzY29wZS5mZC5NYXhMZW5ndGg9MVxyXG5cclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1QYXJhbXMgPSB7Zm9ybVZpZXdUeXBlOjEsc2hvd0dyaWROYXZpZ2F0aW9uOnRydWV9XHJcblxyXG4gICAgICAgIGlmICgkc2NvcGUuZmQuUHJlc2VudGF0aW9uVHlwZT09MSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuc2V0RHJvcGRvd25WYWx1ZT1mdW5jdGlvbih0aGVTZWxlY3RJdGVtRm4pXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZXRJdGVtVmFsdWVEcm9wZG93biA9IHRoZVNlbGVjdEl0ZW1GbjtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICRzY29wZS5zZXRMb2FkRHJvcGRvd24gPSBmdW5jdGlvbihkaXJlY3RpdmVGbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9hZERyb3Bkb3duID0gZGlyZWN0aXZlRm47XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5zZXRDbGVhckRyb3Bkb3duID0gZnVuY3Rpb24oZGlyZWN0aXZlRm4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmNsZWFyRHJvcGRvd24gPSBkaXJlY3RpdmVGbjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnBhZ2luYXRpb25PcHRpb25zID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VOdW1iZXI6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZVNpemU6IDEwLFxyXG4gICAgICAgICAgICAgICAgICAgIHNvcnQ6IG51bGxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICBcclxuICAgICAgICB2YXIgd2lkZ2V0RGVmaW5pdGlvbiA9IHtERUk6IFt7J25hbWUnOidyZXNvdXJjZUxpbmtGaWxlJywndmFsdWUnOlt7bmFtZToncmVzb3VyY2VJZCcsdmFsdWU6JHNjb3BlLmZkLlJlbGF0ZWR9LHtuYW1lOidyZXNvdXJjZVJlY29yZElkJyx2YWx1ZTonJ31dfV0sYWN0aW9uczogW3tuYW1lOidQcmVwYXJlRGF0YScsc3RhdHVzOmZhbHNlfV0sbmFtZTogJ2RhdGFzZXRMaXN0V2lkZ2V0Jyx3aWRnZXRJZDogJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLHRhc2tJZDogICRzY29wZS5sVGFza0lkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlRGVmSWQgOiAkc2NvcGUuZmQuUmVsYXRlZCwgLy9yZXNvdXJjZURlZklkIDogJHNjb3BlLnNlbGVjdGVkUmVzb3VyY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZVJlY29yZElkOiRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZCx0YXNrX2luaXRpYXRlX2lkOiRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udGFza19pbml0aWF0ZV9pZCx0YXNrX2V4ZWN1dGVfaWQ6JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50YXNrX2V4ZWN1dGVfaWQsIG91dHB1dDpudWxsIH07XHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5sb2NhbFdpZGdldElkID0gV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5yZWdpc3RlcldpZGdldCh3aWRnZXREZWZpbml0aW9uKTtcclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUua3NtID0gS2F0YWx5b1N0YXRlTWFuYWdlcjtcclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUucG9wdWxhdGVWYWx1ZSA9IGZ1bmN0aW9uKG5ld1ZhbHVlKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuTWF4TGVuZ3RoIT0xKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgIG5ld1ZhbHVlTXVsdGlwbGUgPSBuZXdWYWx1ZTtcclxuICAgICAgICAgICAgICAgICBuZXdWYWx1ZVNpbmdsZT1cIlwiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgIG5ld1ZhbHVlTXVsdGlwbGUgPSBbXTtcclxuICAgICAgICAgICAgICAgICBuZXdWYWx1ZVNpbmdsZT1uZXdWYWx1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuaXRlbVZhbHVlLnZhbCA9IG5ld1ZhbHVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QcmVzZW50YXRpb25UeXBlPT0xICYmICRzY29wZS5zZXRJdGVtVmFsdWVEcm9wZG93biE9dW5kZWZpbmVkKSAkc2NvcGUuc2V0SXRlbVZhbHVlRHJvcGRvd24obnVsbCwkc2NvcGUuaXRlbVZhbHVlLnZhbCk7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0gPSAkc2NvcGUuaXRlbVZhbHVlLnZhbDtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5TZWFyY2gudmFsdWUgPSAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV07XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24odmFsdWVTdGF0ZU5hbWUsXCJ2YWx1ZUNoYW5nZWRcIiwgbmV3VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlICYmICRzY29wZS5zZXRJdGVtVmFsdWVEcm9wZG93biE9dW5kZWZpbmVkKSAkc2NvcGUuc2V0SXRlbVZhbHVlRHJvcGRvd24obnVsbCxuZXdWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgkc2NvcGUuY2xlYXJEcm9wZG93biE9dW5kZWZpbmVkKSAkc2NvcGUuY2xlYXJEcm9wZG93bigpO1xyXG4gICAgICAgICAgICAgICAgV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5zZXREYXRhKHtcclxuICAgICAgICAgICAgICAgICAgICBERUk6IFt7bmFtZToncmVzb3VyY2VMaW5rRmlsZScsdmFsdWU6W3tuYW1lOidyZXNvdXJjZUlkJyx2YWx1ZTokc2NvcGUuZmQuUmVsYXRlZH0se25hbWU6J3Jlc291cmNlUmVjb3JkSWQnLHZhbHVlOm5ld1ZhbHVlU2luZ2xlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAse25hbWU6J3Jlc291cmNlUmVjb3JkSWRzJyx2YWx1ZTpuZXdWYWx1ZU11bHRpcGxlfSx7bmFtZToncmVzb3VyY2VSZWNvcmRzQWxsJyx2YWx1ZTokc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRJdGVtc31dfV0sd2lkZ2V0SWQ6ICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCx0YXNrX2V4ZWN1dGVfaWQ6JHNjb3BlLnRhc2tFeGVjdXRlSWR9KTsgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5maWxlc0RhdGEgPSBbXVxyXG4gICAgXHJcbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuICAgIC8qKioqKioqKioqKioqKioqKiBHZXQgZmlsZXMgZm9yIHNtYXJ0IHRhYmxlIGt0RmlsZSAqKioqKioqKioqKioqKioqKioqL1xyXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbiAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdldEZpbGVzPSBmdW5jdGlvbih0YWJsZVN0YXRlLCBwYWdlTnVtYmVyLHBhZ2VTaXplKXtcclxuXHJcblxyXG4gICAgICAgIC8vdGFza0V4ZWN1dGVJZDogMCAgIHRhc2tJbml0aWF0ZUlkOiAwXHJcbiAgICAgICAgbGV0IGRlZmVycmVkID0gJHEuZGVmZXIoKTsgICAgXHJcblxyXG4gICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcblxyXG4gICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VMb2FkaW5nPXRydWU7XHJcbiAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICB2YXIgbmV3UGFnZVxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKHBhZ2VOdW1iZXI9PXVuZGVmaW5lZCkgcGFnZU51bWJlciA9ICRzY29wZS5mZC5sb2NhbFZhcnMucGFnaW5hdGlvbk9wdGlvbnMucGFnZU51bWJlcjtcclxuICAgICAgICAgICAgaWYgKHBhZ2VTaXplPT11bmRlZmluZWQpIHBhZ2VTaXplID0gJHNjb3BlLmZkLmxvY2FsVmFycy5wYWdpbmF0aW9uT3B0aW9ucy5wYWdlU2l6ZTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzRGF0YSE9PXVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMudG90YWxDb3VudD0gJHNjb3BlLmZkLmxvY2FsVmFycy5maWxlc0RhdGE/Lmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucGFnaW5hdGlvbk9wdGlvbnMudG90YWxJdGVtQ291bnQ9JHNjb3BlLmZkLmxvY2FsVmFycy5maWxlc0RhdGE/Lmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucGFnaW5hdGlvbk9wdGlvbnMubnVtYmVyT2ZQYWdlcyA9IE1hdGguY2VpbCgkc2NvcGUuZmQubG9jYWxWYXJzLnBhZ2luYXRpb25PcHRpb25zLnRvdGFsSXRlbUNvdW50L3BhZ2VTaXplKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMudG90YWxDb3VudD4wKXtcclxuICAgICAgICAgICAgICAgIGlmIChNYXRoLmNlaWwoJHNjb3BlLmZkLmxvY2FsVmFycy50b3RhbENvdW50L3BhZ2VTaXplKTxwYWdlTnVtYmVyKVxyXG4gICAgICAgICAgICAgICAgICAgIG5ld1BhZ2UgPSBNYXRoLmNlaWwoJHNjb3BlLmZkLmxvY2FsVmFycy50b3RhbENvdW50L3BhZ2VTaXplKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzRGF0YSkgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXN1bHRzID0ge3Jlc3VsdHMgOiAkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzRGF0YS5zbGljZSggKHBhZ2VOdW1iZXIgLTEpICogcGFnZVNpemUsIHBhZ2VOdW1iZXIgKiBwYWdlU2l6ZSkgfVxyXG4gICAgICAgICAgICAgZWxzZSBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc3VsdHMgPSB7fSAgICAgXHJcbiAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc3VsdHMuY29sdW1ucz0kc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzQ29sdW1uc1xyXG5cclxuICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuY3VycmVudFBhZ2U9cGFnZU51bWJlcjtcclxuICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzdWx0cy5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xyXG4gICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXN1bHRzLm51bWJlck9mUGFnZXMgPSAkc2NvcGUuZmQubG9jYWxWYXJzLnBhZ2luYXRpb25PcHRpb25zLm51bWJlck9mUGFnZXM7XHJcbiAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc3VsdHMuY291bnQgPSAgICRzY29wZS5mZC5sb2NhbFZhcnMudG90YWxDb3VudFxyXG4gICAgICBcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogJHNjb3BlLmZkLmxvY2FsVmFycy5yZXN1bHRzfSk7XHJcbiAgICAgICAgIH0pXHJcblxyXG4gICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIFxyXG4gICAgfVxyXG4gICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICAgICAqKioqKioqKioqKioqKioqKiogU3luYyBkYXRhIHdpdGggU3RhdGUgbWFuYWdlciAqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gICAgICAgXHJcbiAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzPT11bmRlZmluZWQpICRzY29wZS5mZC5QYXJhbWV0ZXJzPXt9O1xyXG4gICAgICAgICRzY29wZS5pdGVtVmFsdWUgPSB7dmFsOm51bGx9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCB2YWx1ZVN0YXRlPSAkc2NvcGUua3NtLmFkZFN1YmplY3QoJHNjb3BlLmZkLkVsZW1lbnRUeXBlKydWYWx1ZVN0YXRlTmFtZScrJHNjb3BlLmZkLkl0ZW1JZCskc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRyYW5zYWN0aW9uX2lkLCRzY29wZS5pdGVtVmFsdWUudmFsKTtcclxuICAgICAgICBsZXQgdmFsdWVTdGF0ZU5hbWUgPSB2YWx1ZVN0YXRlLnN1YmplY3QubmFtZTtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgdmFsdWVfY2hhbmdlZCA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB2YWx1ZVN0YXRlLnN1YmplY3Quc2V0U3RhdGVDaGFuZ2VzID0gZGF0YTtcclxuICAgICAgICAgICAgdmFsdWVTdGF0ZS5zdWJqZWN0Lm5vdGlmeU9ic2VydmVycyhcInZhbHVlQ2hhbmdlZFwiKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBhY3Rpb25fdmFsdWVfY2hhbmdlZCA9ICRzY29wZS5rc20uYWRkQWN0aW9uKHZhbHVlU3RhdGVOYW1lLFwidmFsdWVDaGFuZ2VkXCIsdmFsdWVfY2hhbmdlZCk7XHJcbiAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBsZXQgYXBwbHlfdmFsdWUgPSBmdW5jdGlvbihkYXRhKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgbGV0IGxvY2FsX2RhdGE7XHJcbiAgICAgICAgICAgIGxldCBzdGF0ZT1kYXRhLnN0YXRlICAgICAgICBcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5pdGVtVmFsdWUudmFsIT1zdGF0ZSlcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbG9jYWxfZGF0YSA9IHN0YXRlO1xyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLkRlcGVuZGVudEZpZWxkRmlsdGVyIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5EZXBlbmRlbnRGaWVsZEZpbHRlciE9XCJcIiB8fCAkc2NvcGUuZmQuUGFyYW1ldGVycy5EZXBlbmRlbnRGaWVsZEVsZW1lbnQhPVwiXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzdGF0ZSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLmxlbmd0aD4wKSBsb2NhbF9kYXRhID0gc3RhdGVbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGxvY2FsX2RhdGEgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF9kYXRhID0gc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRJdGVtcz09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5yZWZyZXNoRGF0YXNldERhdGFMaXN0KFwiXCIsdHJ1ZSxsb2NhbF9kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX2RhdGE9bnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlbGVtZW50MSxlbGVtZW50MjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5EZXBlbmRlbnRGaWVsZEZpbHRlciE9XCJcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDEgPSAkc2NvcGUuZmQuUGFyYW1ldGVycy5EZXBlbmRlbnRGaWVsZEZpbHRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDIgPSBcImlkXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQxID0gXCJpZFwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50MiA9ICRzY29wZS5mZC5QYXJhbWV0ZXJzLkRlcGVuZGVudEZpZWxkRWxlbWVudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSAkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRJdGVtcy5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZVtlbGVtZW50MV07IH0pLmluZGV4T2YobG9jYWxfZGF0YVtlbGVtZW50Ml0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3M+PTApIGxvY2FsX2RhdGEgPSAkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRJdGVtc1twb3NdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBsb2NhbF9kYXRhID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICRzY29wZS5wb3B1bGF0ZVZhbHVlKGxvY2FsX2RhdGEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTsgXHJcbiAgICAgICBcclxuICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuRGVwZW5kZW50RmllbGRJZCE9dW5kZWZpbmVkICYmICRzY29wZS5mZC5QYXJhbWV0ZXJzLkRlcGVuZGVudEZpZWxkSWQhPW51bGwpXHJcbiAgICAgICAgXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuRGVwZW5kZW50RmllbGRJZCE9XCJcIilcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbGV0IGRlcGVuZGVudF9maWVsZCA9ICRzY29wZS5mZC5GaWVsZE5hbWU7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSAkc2NvcGUuZmQuUGFyYW1ldGVycy5EZXBlbmRlbnRGaWVsZFR5cGUrXCJWYWx1ZVN0YXRlTmFtZVwiKyRzY29wZS5mZC5QYXJhbWV0ZXJzLkRlcGVuZGVudEZpZWxkSWQrJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50cmFuc2FjdGlvbl9pZDtcclxuICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlciA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0LGRlcGVuZGVudF9maWVsZCxcInZhbHVlQ2hhbmdlZFwiLGFwcGx5X3ZhbHVlLHRydWUpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbCA9ICRzY29wZS5rc20uZ2V0U3RhdGUoc3Vic2NyaWJlZFN1YmplY3QpO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnBvcHVsYXRlVmFsdWUodmFsLnN0YXRlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuXHJcbiAgICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAgLy8gICAgICAgICAgIEdFVCBGT1JNIEZJRUxEU1xyXG4gICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAkc2NvcGUuZmQuZ2V0Rm9ybUZpZWxkcyA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRGb3JtRmllbGRzKCRzY29wZS5mZC5SZWxhdGVkLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQucHJlc2VudGF0aW9uRWxlbWVudHM9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIC8qKioqKioqKioqKiogR2V0IHNlbGVjdGVkIHJlY29yZHMgZm9yIGRyb3Bkb3duICoqKioqKioqKioqKioqL1xyXG4gICAgICAgICRzY29wZS5mZC5nZXREYXRhc2V0TGlzdCA9IGZ1bmN0aW9uKClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWUrJ2wnXSE9dW5kZWZpbmVkICYmICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lKydsJ10ubGVuZ3RoPjAgJiYgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkIT1udWxsICYmICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURhdGFMaXN0KCRzY29wZS5mZC5SZWxhdGVkLCRzY29wZS5mZC5QcmVzZW50YXRpb25JZCxsYW5nLHsnaWRfX2luJzogJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWUrJ2wnXX0pLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZm9ybURhdGE9PT11bmRlZmluZWQpICRzY29wZS5mb3JtRGF0YSA9IFt7fV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5NYXhMZW5ndGg9PTEpICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSA9IGRhdGEuZGF0YVswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucG9wdWxhdGVWYWx1ZSgkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2Uuc2V0U2VhcmNoKCRzY29wZS5mZC5QcmVzZW50YXRpb25JZCwkc2NvcGUudGFza0V4ZWN1dGVJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24odmFsdWVTdGF0ZU5hbWUsXCJ2YWx1ZUNoYW5nZWRcIiwgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRzY29wZS5pdGVtVmFsdWUudmFsID0gJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgICAgJHNjb3BlLiR3YXRjaCgnaXRlbVZhbHVlLnZhbCcsZnVuY3Rpb24obmV3VmFsdWUsb2xkVmFsdWUpe1xyXG4gICAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlIT1vbGRWYWx1ZSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnBvcHVsYXRlVmFsdWUobmV3VmFsdWUpOyAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVTZWxlY3Rpb25DaGFuZ2VkID0gZnVuY3Rpb24oZmlsZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdPWZpbGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5maWxlU2VsZWN0ZWQgPWZpbGUuaXNTZWxlY3RlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuU2VsZWN0ZWRGaWxlID0gZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3VudCBzZWxlY3RlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhUmVjb3JkU2VsZWN0ZWQ9JHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdLmxlbmd0aDsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5zZXREYXRhKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUk6IFt7bmFtZToncmVzb3VyY2VMaW5rRmlsZScsdmFsdWU6W3tuYW1lOidyZXNvdXJjZUlkJyx2YWx1ZTokc2NvcGUuZmQuUmVsYXRlZH0se25hbWU6J3Jlc291cmNlUmVjb3JkSWQnLHZhbHVlOiRzY29wZS5mZC5sb2NhbFZhcnMuU2VsZWN0ZWRGaWxlLmlkfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bmFtZToncmVzb3VyY2VSZWNvcmRJZHMnLHZhbHVlOmZpbGV9LHtuYW1lOidyZXNvdXJjZVJlY29yZHNBbGwnLHZhbHVlOiRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZXNEYXRhfV19XSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXRJZDogJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLHRhc2tfZXhlY3V0ZV9pZDokc2NvcGUudGFza0V4ZWN1dGVJZH0pO1xyXG5cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICAkc2NvcGUuc2VhcmNoPVtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpZDoxLGZpbHRlcjonb25saXN0JyxuYW1lOlwiT24gbGlzdDpcIixpY29uOlwiZmEgZmEtY2hldnJvbi1yaWdodFwifSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpZDoyLGZpbHRlcjonbm90b25saXN0JyxuYW1lOlwiTm90IG9uIGxpc3Q6XCIsaWNvbjpcImZhIGZhLWV4cGFuZFwifSxcclxuICAgICAgICAgICAgICAgICAgICAgIF07XHJcblx0XHRcdFx0XHJcbiAgICAgICAgaWYgKCRzY29wZS5mZCE9dW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuU2VhcmNoPT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuU2VhcmNoPSRzY29wZS5zZWFyY2hbMF07IC8vTUlHT1IgVE9ETyAtIGdyZXNrYSBrb2QgaW5jaWphY2lqZSB6YSBtdWx0aXBsZSAsIG1vemRhIHRyZWJhIGtvZCBwcm9tamVuZSBuYSBtdWx0aXBsZSBvdm8gam9zIGplZG5vbSBva2ludXRpXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICB9IFxyXG5cclxuXHRcdFx0ICAkc2NvcGUuYXBwbHlTZWFyY2hGaWx0ZXJzID0gZnVuY3Rpb24oaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgIFxyXG5cdFx0XHRcdCAgJHNjb3BlLmZkLlNlYXJjaD0kc2NvcGUuc2VhcmNoW2luZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5TZWFyY2gudmFsdWUgPSBbICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmlzT3Blbj1mYWxzZTtcdFx0XHJcblx0XHRcdCAgfTtcclxuICAgICAgIFxyXG4gICAgICAgXHJcbiAgICAgICAgJHNjb3BlLnNyY190eXBlX3RleHQ9Q09ERVNfQ09OU1QuX1BPUFVMQVRFX1RZUEVfICBcclxuICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmlzUmVzb3VyY2VTZWxlY3RlZCA9IGZhbHNlO1xyXG4gXHJcblx0XHRcdFx0JHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZERhdGFSZWNvcmQ9ZmFsc2U7XHJcbiBcclxuXHRcdFx0XHQkc2NvcGUudGFza0lkPTA7XHJcbiAgICAgICBcclxuICAgICAgICBcdFx0XHQgICBcclxuXHRcdFx0XHRcdCAgIFxyXG5cdCRzY29wZS5mZC5ncmlkT3B0aW9uc0ZpbGUgPSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhOltdLFxyXG4gICAgICAgICAgICAgICAgc2hvd0dyaWRGb290ZXI6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgc2hvd0NvbHVtbkZvb3RlcjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBlbmFibGVSb3dTZWxlY3Rpb246IHRydWUsXHJcbiAgICAgICAgICAgICAgICBtdWx0aVNlbGVjdDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBlbmFibGVIb3Jpem9udGFsU2Nyb2xsYmFyIDogdHJ1ZSwgXHJcbiAgICAgICAgICAgICAgICBlbmFibGVWZXJ0aWNhbFNjcm9sbGJhciA6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBlbmFibGVSb3dIZWFkZXJTZWxlY3Rpb246IGZhbHNlLCAvL2ZhbHNlXHJcbiAgICAgICAgICAgICAgICBzaG93SGVhZGVyOnRydWUsXHJcbiAgICAgICAgICAgICAgICBlbmFibGVDb2x1bW5SZXNpemluZzogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGF1dG9SZXNpemU6dHJ1ZSxcclxuICAgICAgICAgICAgICAgIG1pblJvd3NUb1Nob3c6IDQsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5c2VsZWN0aW9uQ2hlY2tib3g6ZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBlbmFibGVHcmlkTWVudTogdHJ1ZSxcclxuICAgICAgICB9XHJcblx0XHRcdFx0XHQgICBcclxuICAgICAgICAkc2NvcGUuZmQuUmVsYXRpb25zaGlwVHlwZSA9ICRzY29wZS5mZC5NYXhMZW5ndGg7XHJcbiAgICAgXHJcblx0XHRcdFx0XHRcdFxyXG4gICAgICAgICAgaWYgKCAkc2NvcGUuZmQubG9jYWxWYXJzPT11bmRlZmluZWQgKSAgJHNjb3BlLmZkLmxvY2FsVmFycz17fVxyXG5cclxuICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbiE9dW5kZWZpbmVkKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICRzY29wZS50YXNrSWQ9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZURlZklkO1xyXG4gICAgICAgICAgJHNjb3BlLnByZXZUYXNrRXhlSWQgPSAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wcmV2X3Rhc2tfaWQ7XHJcbiAgICAgICAgICAkc2NvcGUuZm9ybVR5cGU9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX3R5cGU7XHJcbiAgICAgICAgICAkc2NvcGUuc291cmNlX3R5cGU9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5zb3VyY2VfdHlwZTtcclxuICAgICAgICAgICRzY29wZS50YXNrSW5pdGlhdGVJZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udGFza19pbml0aWF0ZV9pZDtcclxuICAgICAgICAgICRzY29wZS50YXNrRXhlY3V0ZUlkID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50YXNrX2V4ZWN1dGVfaWQ7XHJcbiAgICAgICAgICAkc2NvcGUuZm9ybURlZmluaXRpb24gPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fZGVmaW5pdGlvbjtcclxuICAgICAgICAgIFxyXG4gICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgICRzY29wZS5mZC5ncmlkc3RlclR5cGUgPSBcInJlc291cmNlXCI7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXNoYm9hcmQgPSB7XHJcbiAgXHRcdFx0XHRpZDogJzEnLFxyXG4gIFx0XHRcdFx0bmFtZTogJ0hvbWUnLFxyXG4gIFx0XHRcdFx0d2lkZ2V0czogW10sXHJcbiAgICAgICAgICBkYXRhOnt9XHJcblx0XHRcdFx0fSA7XHJcbiAgICAgICAgaWYgICgkc2NvcGUuZm9ybURlZmluaXRpb249PXVuZGVmaW5lZCkgJHNjb3BlLmZvcm1EZWZpbml0aW9uPWZhbHNlO1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5mZC5yZXNvdXJjZVJlY29yZElkPTA7XHJcbiAgICAgICAgaWYgKCRzY29wZS50YXNrSW5pdGlhdGVJZD09dW5kZWZpbmVkKVxyXG4gICAgICAge1xyXG4gICAgICAgICRzY29wZS50YXNrSW5pdGlhdGVJZCA9MDtcclxuICAgICAgICBcclxuICAgICAgIH1cclxuICAgICAgIGlmICgkc2NvcGUudGFza0V4ZWN1dGVJZD09dW5kZWZpbmVkKVxyXG4gICAgICAge1xyXG4gICAgICAgICRzY29wZS50YXNrRXhlY3V0ZUlkID0wO1xyXG4gICAgICAgIFxyXG4gICAgICAgfVxyXG4gICAgICAgIGlmICgkc2NvcGUucHJldlRhc2tFeGVJZD09dW5kZWZpbmVkKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICRzY29wZS5wcmV2VGFza0V4ZUlkID0wO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoJHNjb3BlLmZkLlByZXNlbnRhdGlvblR5cGU9PW51bGwpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgICRzY29wZS5mZC5QcmVzZW50YXRpb25UeXBlID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgLy8kc2NvcGUuZmQudEl0ZW1WYWx1ZSA9ICRzY29wZS5mZC5Gb3JtRGVmO1xyXG4gICAgICAgICAgLy9pZiAodHlwZW9mICRzY29wZS5mZC50SXRlbVZhbHVlPT1cInN0cmluZ1wiKSAkc2NvcGUuZmQudEl0ZW1WYWx1ZT1bXTsgXHJcbiAgICAgICAgICAkc2NvcGUuZmQucmVzb3VyY2VzTGlzdD1bXTtcclxuICAgICAgICAgICRzY29wZS5mZC5yZXNvdXJjZUxpc3RMZW5ndGg9MDtcclxuICAgICAgICAgICRzY29wZS5mZC5zZWxlY3RlZEZpbGUgPSAwO1xyXG4gICAgICAgICAgLy8kc2NvcGUuZmQuc2VsZWN0ZWRGaWxlRHJvcGRvd24gPSAwO1xyXG4gICAgICAgICAgLy9pZiAoJHNjb3BlLmZkLlJlbGF0ZWQhPW51bGwpICRzY29wZS5mZC5zZWxlY3RlZEZpbGUgPSAkc2NvcGUuZmQuUmVsYXRlZDtcclxuXHRcdFx0XHRcdFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAkc2NvcGUuc2V0SXRlbUZuID0gZnVuY3Rpb24oZGlyZWN0aXZlRm4pIHtcclxuICAgICAgICAgICAgJHNjb3BlLlNldEZpbGVJZCA9IGRpcmVjdGl2ZUZuO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5mZC5yZXNvdXJjZURhdGFSZWNvcmRTZWxlY3RlZD1mYWxzZTtcclxuXHRcdFx0XHQgIFxyXG4gICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogR0VUIEZJTEUgTElTVCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAgICAgICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRSZXNvdXJjZXMgPSBmdW5jdGlvbihzZWFyY2gpICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmTGlzdEJ5VHlwZUZpbHRlcihsYW5nLCdmaWxlJyxzZWFyY2gsJHNjb3BlLmZkLnNlbGVjdGVkRmlsZSkudGhlbihcclxuICAgICAgICAgICAgZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQucmVzb3VyY2VzTGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KCRzY29wZS5mZC5yZXNvdXJjZXNMaXN0KSkgICAkc2NvcGUuZmQucmVzb3VyY2VzTGlzdD1bXTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlJlbGF0ZWQhPW51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnJlc291cmNlSWQgPSAkc2NvcGUuZmQuUmVsYXRlZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQucmVzb3VyY2VMaXN0TGVuZ3RoID0gJHNjb3BlLmZkLnJlc291cmNlc0xpc3QubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2VsZWN0IGRhdGFzZXQgZnJvbSBkcm9wZG93blxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcG9zID0gJHNjb3BlLmZkLnJlc291cmNlc0xpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoJHNjb3BlLmZkLnJlc291cmNlSWQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zPj0wKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnNlbGVjdGVkUmVzb3VyY2U9JHNjb3BlLmZkLnJlc291cmNlc0xpc3RbcG9zXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmlzUmVzb3VyY2VTZWxlY3RlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnBpY2tCdXR0b25MYWJlbD1cIkNob29zZSBcIiskc2NvcGUuZmQuc2VsZWN0ZWRSZXNvdXJjZS5uYW1lK1wiIHJlY29yZC4uLlwiO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5SZWxhdGVkTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgIH07ICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmRvd25sb2FkRmlsZSA9IGZ1bmN0aW9uKGZpbGVJZCxmaWxlTmFtZSl7XHJcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5kb3dubG9hZEZpbGUoJHNjb3BlLmZkLlJlbGF0ZWQsZmlsZUlkKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoJ0ZpbGUgJytmaWxlTmFtZSsnIGRvd25sb2FkZWQnLCdpbmZvJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtkYXRhLmRhdGFdKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuZG93bmxvYWQgPSBmaWxlTmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS50YXJnZXQgPSAnX2JsYW5rJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5jbGljaygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgfTsvLyBkb3dsb2FkIGZpbGUgRU5EXHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucHJldmlld0ZpbGUgPSBmdW5jdGlvbihmaWxlSWQsZmlsZU5hbWUsZmlsZVR5cGUpe1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5kb3dubG9hZEZpbGUoJHNjb3BlLmZkLlJlbGF0ZWQsZmlsZUlkKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbZGF0YS5kYXRhXSx7dHlwZTpmaWxlVHlwZX0pKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld19kb2MgPSB3aW5kb3cub3Blbih1cmwsXCJfYmxhbmtcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgIH07Ly8gcHJldmlldyBmaWxlIEVORFxyXG5cclxuICAgICAgICAgICAkc2NvcGUuZmQuZ2V0UmVzb3VyY2VEYXRhUmVmcmVzaCA9IGZ1bmN0aW9uIChyZXRWYWx1ZSkgXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgIC8vVG9EbyBvdm8gcHJlYmFjaXRpIHN2ZSB1IGplZGFuIEFQSSBwb3ppdlxyXG4gICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlUmVjb3JkSWQ+MCAmJiAkc2NvcGUuZmQuTWF4TGVuZ3RoPT0wKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGF0YVdpdGhSZWxhdGVkKCRzY29wZS5wYXJlbnRSZXNvdXJjZURlZklkLCRzY29wZS5yZXNvdXJjZUlkLCRzY29wZS5yZXNvdXJjZVJlY29yZElkLCRzY29wZS50YXNrSWQsJHNjb3BlLmZkLkl0ZW1JZCxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSA9IGRhdGE7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNldHVwR3JpZChkYXRhKTsgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuXHRcdFx0IFx0XHRcdFx0XHR9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG5cclxuXHJcbiAgICAgICAgLyogZGVsZXRlIHNlbGVjdGVkIGNoaWxkIHJlY29yZCovXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kZWxldGVDaGlsZFJlY29yZCA9IGZ1bmN0aW9uKClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlUmVjb3JkSWQ+MCAmJiAkc2NvcGUuZmQuTWF4TGVuZ3RoPT0wICYmICRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZVNlbGVjdGVkKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuRGVsZXRlQ2hpbGRSZWxhdGlvbnNoaXAoJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLCRzY29wZS5wYXJlbnRSZXNvdXJjZURlZklkLCRzY29wZS5yZXNvdXJjZVJlY29yZElkLCRzY29wZS5mZC5sb2NhbFZhcnMuU2VsZWN0ZWRGaWxlWyRzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXgrJ19pZCddKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEsJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzRGF0YS5sZW5ndGggPSAwXHJcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVTZWxlY3RlZCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLkdldFJlc291cmNlRGF0YUZvclBhcmVudCgpXHJcbiAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLmRhdGEsJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9ICAgICAgIFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICRzY29wZS5saW5rZWRXaWRnZXRJZCA9IDA7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlNlYXJjaCE9dW5kZWZpbmVkKSAkc2NvcGUubGlua2VkV2lkZ2V0SWQgPSAkc2NvcGUuZmQuU2VhcmNoLldpZGdldElkO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgdmFyIHJlZnJlc2hfbGlzdF9mcm9tX2NhbGxiYWNrPWZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5yZWZyZXNoRGF0YXNldERhdGFMaXN0KFwiXCIsdHJ1ZSwkc2NvcGUubERhdGEpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLmZkLnJlZnJlc2hEYXRhc2V0RGF0YUxpc3QgPSBmdW5jdGlvbihzZWFyY2gsYXBwbHksdmFsKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICAvL1RvRG8gb3ZvIHByZWJhY2l0aSBzdmUgdSBqZWRhbiBBUEkgcG96aXZcclxuICAgICAgICAgICAgICAkc2NvcGUubERhdGEgPSB2YWw7XHJcbiAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQhPW51bGwgJiYgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjdHJsID0gdGhpcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sX2FwcGx5ID0gYXBwbHk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubF92YWwgPSB2YWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmcm9tQ2FjaGU9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgIC8vUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEYXRhTGlzdCgkc2NvcGUuZmQuUmVsYXRlZCwkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsbGFuZyxzZWFyY2gpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEYXRhTGlzdEFsbCgkc2NvcGUuZmQuUmVsYXRlZCwkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsbGFuZyxmcm9tQ2FjaGUscmVmcmVzaF9saXN0X2Zyb21fY2FsbGJhY2spLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldEl0ZW1zID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWYgKCEkc2NvcGUuZmQuUmVhZE9ubHkpICRzY29wZS5sb2FkRHJvcGRvd24oJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0SXRlbXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdHJsLmxfYXBwbHkpIGFwcGx5X3ZhbHVlKGN0cmwubF92YWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXN0b3JlR3JpZFN0YXRlPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZkWydHcmlkU3RhdGUnXSE9PXVuZGVmaW5lZCAmJiAkc2NvcGUuZmRbJ0dyaWRTdGF0ZSddIT09bnVsbClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZFsnR3JpZFN0YXRlJ11bJ2NvbHVtbnNEZWYnXSE9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLmxvY2FsVmFycy5maWxlc0NvbHVtbnMgPSAgJHNjb3BlLmZkWydHcmlkU3RhdGUnXVsnY29sdW1uc0RlZiddXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkWydHcmlkU3RhdGUnXVsnY29sdW1uc1F1ZXJ5J10hPT11bmRlZmluZWQpICRzY29wZS5mZC5jb2x1bW5zRm9yUXVlcnkgPSAgJHNjb3BlLmZkWydHcmlkU3RhdGUnXVsnY29sdW1uc1F1ZXJ5J11cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9OyAgICAgICAgICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgICAgLy8gUmVzb3VyY2UgaXMgc2VsZWN0ZWRcclxuICAgICAgICAgICAgICAkc2NvcGUuZmQub25TZWxlY3RDYWxsYmFjayA9IGZ1bmN0aW9uIChpdGVtLCBtb2RlbCl7XHJcbiAgICAgICAgICAgICAgICB2YXIgZXZlbnRSZXN1bHRJZD1pdGVtLmlkO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmV2ZW50UmVzdWx0TmFtZT1pdGVtLm5hbWU7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAkc2NvcGUuZmQucmVzb3VyY2VJZD1ldmVudFJlc3VsdElkO1xyXG4gICAgICAgICAgICAgICAgICRzY29wZS5mZC5pc1Jlc291cmNlU2VsZWN0ZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5SZWxhdGVkPSRzY29wZS5mZC5yZXNvdXJjZUlkO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRQdWJsaXNoZWRSZXNvdXJjZXMoKVxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5SZWxhdGVkIT11bmRlZmluZWQgJiYgJHNjb3BlLmZkLlJlbGF0ZWQhPW51bGwpICRzY29wZS5mZC5nZXRGb3JtRmllbGRzKCk7XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIFJlc291cmNlIGlzIHNlbGVjdGVkXHJcbiAgICAgICAgICAgICAgJHNjb3BlLmZkLm9uU2VsZWN0UHVibGlzaGVkID0gZnVuY3Rpb24gKGl0ZW0sIG1vZGVsKXtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MgPSAkc2NvcGUuZmQubG9jYWxWYXJzLnB1Ymxpc2hlZFJlc291cmNlTGlzdC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZihpdGVtLmlkKTtcclxuICAgICAgICAgICAgICAgIGxldCBvbGRfcHVibGlzaF9pZCA9ICRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlSWRcclxuICAgICAgICAgICAgICAgIGlmIChwb3M+PTApe1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlSWQgPSAkc2NvcGUuZmQubG9jYWxWYXJzLnB1Ymxpc2hlZFJlc291cmNlTGlzdFtwb3NdLmlkO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlBhcmFtZXRlcnMuUHVibGlzaGVkUmVzb3VyY2VWZXJzaW9uID0gJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3RbcG9zXS5WZXJzaW9uO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuR3JpZFN0YXRlPy5jb2x1bW5zRGVmPT09dW5kZWZpbmVkIHx8ICRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlSWQgIT1vbGRfcHVibGlzaF9pZCkgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRDb2x1bW5zRGVmKClcclxuICAgICAgICAgICAgICAgICAgICBlbHNlICRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZUxpc3REb3dubG9hZGVkID10cnVlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdldFB1Ymxpc2hlZFJlc291cmNlcz1mdW5jdGlvbigpXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnB1Ymxpc2hlZExvYWRlZD1mYWxzZSAgICAgICAgXHJcbiAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UHVibGlzaGVkUmVzb3VyY2VzQnlUeXBlSWQoJHNjb3BlLmZkLlJlbGF0ZWQsJ2Zvcm0nKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKGRhdGEpIHsgXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycz09PXVuZGVmaW5lZCkgJHNjb3BlLmZkLmxvY2FsVmFycz17fSAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnB1Ymxpc2hlZExvYWRlZD10cnVlXHJcblxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuXHJcblxyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuU2hvd1NlYXJjaEZvcm0gPSBmdW5jdGlvbihpZCkgXHJcbiBcclxuICAgICAgICB7ICAgbGV0IHNob3dfc2VhcmNoX2Zvcm1cclxuICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5TaG93U2VhcmNoRm9ybSkgc2hvd19zZWFyY2hfZm9ybSA9IGZhbHNlXHJcbiAgICAgICAgICAgIGVsc2Ugc2hvd19zZWFyY2hfZm9ybSA9IHRydWVcclxuICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRQdWJsaXNoZWRSZXNvdXJjZUJ5SWQoaWQsc2hvd19zZWFyY2hfZm9ybSlcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbiAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogR0VUIFBVQkxJU0hFRCBEQVRBU0VUIERFVEFJTFMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyBcclxuXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRQdWJsaXNoZWRSZXNvdXJjZUJ5SWQgPSBmdW5jdGlvbihpZCxzaG93X3NlYXJjaF9mb3JtKSBcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGlmIChzaG93X3NlYXJjaF9mb3JtKSAge1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvc1xyXG4gICAgICAgICAgICAgICAgbGV0IG9sZF9wdWJsaXNoX2lkID0gJHNjb3BlLmZkLlBhcmFtZXRlcnMuUHVibGlzaGVkUmVzb3VyY2VJZFxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5Gb3JtRGVmIT09dW5kZWZpbmVkICYmICRzY29wZS5mZC5Gb3JtRGVmIT09bnVsbCAmJiAkc2NvcGUuZmQuRm9ybURlZi5sZW5ndGg+MCkgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCA9ICRzY29wZS5mZC5Gb3JtRGVmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybUxvYWRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2UgXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBvcyA9ICRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKGlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5Gb3JtRGVmPXt9XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zPj0wKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UHVibGlzaGVkUmVzb3VyY2VCeUlkKGlkKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLkZvcm1EZWYgPSBkYXRhLmRhdGEuRm9ybSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQgPSAkc2NvcGUuZmQuRm9ybURlZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybUxvYWRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9ICAgIFxyXG5cclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdldENvbHVtbnNEZWYgPSBmdW5jdGlvbiAoKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuIGdldFJlc291cmNlQ29sdW1ucygkc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZUlkLCdmaWxlJyxsYW5nLCRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlVmVyc2lvbikudGhlbihmdW5jdGlvbihkYXRhKSB7Ly9NSUdPUlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5maWxlc0NvbHVtbnMgPSBkYXRhLmRhdGEuY29sdW1uc0RlZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc3VsdHMuY29sdW1ucyA9ICAkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzQ29sdW1uc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVMaXN0RG93bmxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zYXZlR3JpZFN0YXRlKGZhbHNlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKiogR0VUIFJFU09VUkNFIExJU1QgRk9SIEVYSVNUSU5HIFJFTEFUSU9OU0hJUCAqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbiAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdldEV4aXN0aW5nUmVzb3VyY2VzID0gZnVuY3Rpb24oKSAge1xyXG5cclxuICAgICAgICAgICAgICRzY29wZS5mZC5yZXNvdXJjZXNMaXN0Lmxlbmd0aD0wXHJcbiAgICAgICAgICAgICAkc2NvcGUuZmQuUmVsYXRlZExvYWRlZD1mYWxzZVxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICBsZXQgcmVzb3VyY2VfZGVmX2lkID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZURlZklkX2lkXHJcbiAgICAgICAgICAgICBpZiAocmVzb3VyY2VfZGVmX2lkPT09dW5kZWZpbmVkKSByZXNvdXJjZV9kZWZfaWQgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlJlc291cmNlRGVmSWRcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgaWYgKHJlc291cmNlX2RlZl9pZD09PXVuZGVmaW5lZCkgcmVzb3VyY2VfZGVmX2lkID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5QYXJlbnREYXRhc2V0RGVmSWRcclxuXHJcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZV9kZWZfaWQpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRFeGlzdGluZ1Jlc291cmNlUmVsYXRpb25zaGlwcyhyZXNvdXJjZV9kZWZfaWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQucmVzb3VyY2VzTGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KCRzY29wZS5mZC5yZXNvdXJjZXNMaXN0KSkgICAkc2NvcGUuZmQucmVzb3VyY2VzTGlzdD1bXTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlJlbGF0ZWQhPW51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnJlc291cmNlSWQgPSAkc2NvcGUuZmQuUmVsYXRlZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQucmVzb3VyY2VMaXN0TGVuZ3RoID0gJHNjb3BlLmZkLnJlc291cmNlc0xpc3QubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2VsZWN0IGRhdGFzZXQgZnJvbSBkcm9wZG93blxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcG9zID0gJHNjb3BlLmZkLnJlc291cmNlc0xpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoJHNjb3BlLmZkLnJlc291cmNlSWQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zPj0wKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnNlbGVjdGVkUmVzb3VyY2U9JHNjb3BlLmZkLnJlc291cmNlc0xpc3RbcG9zXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmlzUmVzb3VyY2VTZWxlY3RlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZUlkIT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnMuZ2V0UHVibGlzaGVkUmVzb3VyY2VzKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlJlbGF0ZWRMb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfWVsc2UgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnRGF0YXNldCBpZCBlcnJvciAoZGlyZWN0aXZlIGZuIGdldEV4aXN0aW5nUmVzb3VyY2VzKScsJ2Vycm9yJyk7XHJcbiAgICAgICB9OyAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZvcm1EZWZpbml0aW9uKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5SZXNvdXJjZVJlbGF0aW9uc2hpcFR5cGU9PT0nbmV3JyB8fCAkc2NvcGUuZmQuUGFyYW1ldGVycy5SZXNvdXJjZVJlbGF0aW9uc2hpcFR5cGU9PT0ndmlldycpICRzY29wZS5mZC5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgZWxzZSAkc2NvcGUuZmQubG9jYWxWYXJzLmdldEV4aXN0aW5nUmVzb3VyY2VzKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgJHNjb3BlLmZkLnNldHVwR3JpZD0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5maWxlc0NvbHVtbnMgPSBkYXRhLmNvbHVtbnNEZWY7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzdG9yZUdyaWRTdGF0ZSgpO1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNldHVwR3JpZE5ldz0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzRGF0YSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuR3JpZFN0YXRlPy5jb2x1bW5zRGVmPT09dW5kZWZpbmVkKSAkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzQ29sdW1ucyA9IGRhdGEuY29sdW1uc0RlZjtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZUxpc3REb3dubG9hZGVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBcclxuIFxyXG4gICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc3RvcmVHcmlkU3RhdGUoKTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICBcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vICBQb3B1bmkgbGlzdHUgZ3JpZE9wdGlvbnMuZGF0YSBzYSBsaXN0b20gc3ZpaCByZXN1cnNhIG9kYWJyYW5vZyB0aXBhXHJcblx0XHRcdFx0XHRcdFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAkc2NvcGUuZmQuZ2V0UmVzb3VyY2VEYXRhRmlsdGVyZWQgPSBmdW5jdGlvbiAoKSB7XHJcblxyXG4gICAgICAgICAgICAkc2NvcGUuZmlsdGVyID0ge307XHJcbiAgICAgICAgICAgIHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcblxyXG4gICAgICAgICAgIC8vc2NvcGUuYWN0aXZpdHkuYWN0aXZpdHlNZXNzYWdlID0gUHJvY2Vzc2luZ1NlcnZpY2Uuc2V0QWN0aXZpdHlNc2coJ1JldHJpdmluZyBkYXRhICcrc2NvcGUuc2VsZWN0ZWRSZXNvdXJjZSk7XHJcbiAgICAgICAgICAvLyRzY29wZS5maWx0ZXIgPSBSZXNvdXJjZXNEYXRhU2VydmljZS5wcmVwYXJlUmVzb3VyY2VXaWRnZXREYXRhKCRzY29wZS5kYXNoYm9hcmQud2lkZ2V0cywtMSk7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgaWYgKCRzY29wZS5mZC5zZWxlY3RlZFJlc291cmNlPT1udWxsKSB7XHJcbiAgICAgICAgICAgICRzY29wZS5mZC5zZWxlY3RlZFJlc291cmNlSWQgPSAkc2NvcGUuZmQuUmVsYXRlZDtcclxuICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAkc2NvcGUuZmQuc2VsZWN0ZWRSZXNvdXJjZUlkID0gJHNjb3BlLmZkLnNlbGVjdGVkUmVzb3VyY2UuaWQ7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG5cdC8vXHRcdFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGF0YUZpbHRlcmVkKCRzY29wZS5mZC5SZWxhdGVkLGxhbmcsJHNjb3BlLmZpbHRlcikudGhlbihmdW5jdGlvbihkYXRhKSB7Ly9NSUdPUlxyXG4gICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEYXRhRmlsdGVyZWQoJHNjb3BlLmZkLnNlbGVjdGVkUmVzb3VyY2VJZCwkc2NvcGUudGFza0lkLGxhbmcsJHNjb3BlLmZkLnJlc291cmNlRGFzaGJvYXJkLndpZGdldHMpLnRoZW4oZnVuY3Rpb24oZGF0YSkgey8vTUlHT1JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnNldHVwR3JpZChkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblx0XHRcclxuXHRcclxuXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zYXZlR3JpZFN0YXRlPSBmdW5jdGlvbihzaG93X21lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgLy9kZWJ1Z2dlciAvL2t0VGFza0RhdGFzZXRMaXN0IHNtYXJ0dGFibGVcclxuICAgICAgICAgICAgICAgbGV0IGNvbHVtbnNEZWYgPSAkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzQ29sdW1uc1xyXG5cclxuICAgICAgICAgICAgICAgbGV0IGNvbHVtbnNRdWVyeSA9ICRzY29wZS5mZC5sb2NhbFZhcnMuY29sdW1uc0ZvclF1ZXJ5XHJcbiAgICAgICAgICAgICAgICRzY29wZS5mZFsnR3JpZFN0YXRlJ109eydjb2x1bW5zRGVmJzpjb2x1bW5zRGVmLCdjb2x1bW5zUXVlcnknOiBjb2x1bW5zUXVlcnl9XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGlmIChzaG93X21lc3NhZ2UpXHJcbiAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShcIlRvIG1ha2UgY2hhbmdlcyBzdGljayBwbGVhc2Ugc2F2ZSBmb3JtXCIsJ2luZm8nKTsgICAgICAgICAgICBcclxuICAgIH07XHRcdFxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLmdldFJlc291cmNlRGF0YSA9IGZ1bmN0aW9uICgpIFxyXG5cdHtcclxuICAgICAgICAgICAgICAgIC8vICRzY29wZS5hY3Rpdml0eS5hY3Rpdml0eU1lc3NhZ2UgPSBQcm9jZXNzaW5nU2VydmljZS5zZXRBY3Rpdml0eU1zZygnRG93bmxvYWRpbmcgcmVzb3VyY2UgZGF0YSBmb3IgJyskc2NvcGUucmVzb3VyY2VJZCk7XHJcbiAgICAgICAgICAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURhdGEoJHNjb3BlLnJlc291cmNlSWQsJHNjb3BlLnRhc2tJZCxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnNldHVwR3JpZE5ldyhkYXRhKTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cdH07XHJcbiAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzdWx0cyA9IHt9ICAgICAgICAgXHJcblxyXG5cclxuICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAvLyAgICAgICAgICAgR0VUIEZJTEVTIERJUkVDVCBGSUxURVJcclxuICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRGaWxlc0RpcmVjdCA9IGZ1bmN0aW9uIChyZWxhdGVkRGF0YXNldElkLGl0ZW1zKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5maWxlTGlzdERvd25sb2FkZWQgPWZhbHNlXHJcblxyXG4gICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGF0YURpcmVjdEZpbHRlcihyZWxhdGVkRGF0YXNldElkLCRzY29wZS5mZC5QcmVzZW50YXRpb25JZCxcImlcIixsYW5nLHtpZF9faW46IGl0ZW1zfSkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2V0dXBHcmlkTmV3KGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLm1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZUxpc3REb3dubG9hZGVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIFxyXG4gICAgICAgIC8qIEdldCBjaGlsZHJlbiBmb3IgcGFyZW50Ki9cclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLkdldFJlc291cmNlRGF0YUZvclBhcmVudCA9IGZ1bmN0aW9uICgpIFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VSZWNvcmRJZD4wICYmICRzY29wZS5mZC5NYXhMZW5ndGg9PTApXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5maWxlTGlzdERvd25sb2FkZWQgPWZhbHNlXHJcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURhdGFNMm0oJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLCRzY29wZS5wYXJlbnRSZXNvdXJjZURlZklkLCRzY29wZS5mZC5SZWxhdGVkLCRzY29wZS5yZXNvdXJjZVJlY29yZElkLCRzY29wZS50YXNrSWQsJHNjb3BlLmZkLkl0ZW1JZCxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSA9IGRhdGE7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZXR1cEdyaWROZXcoZGF0YSk7ICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5maWxlTGlzdERvd25sb2FkZWQgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9ICAgICAgICAgICAgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAgLy8gICAgICAgICAgIEdFVCBGSUxFUyBEQVRBIERJUkVDVCBGSUxURVJcclxuICAgICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRGaWxlc0RhdGEgPSBmdW5jdGlvbiAoZmlsZV9kZWZfaWQsZGF0YXNldF9kZWZfaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmlsdGVyID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICAgICAgICAvLyRzY29wZS5mZC5saW5rZWRSZXNvdXJjZUlkID0gcmVzb3VyY2VfaWQ7IC8vTUlHT1IgLSBtb3pkYSBqZSB2aXNhayAoamUpXHJcbiAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuZmQubGlua2VkUmVzb3VyY2VEZWZJZCA9IHJlc291cmNlX2RlZl9pZDsgLy9NSUdPUiAtIG1vemRhIGplIHZpc2FrIChqZSlcclxuICAgICAgICAgICAgICAgaWYgKGZpbGVfZGVmX2lkIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZXNEYXRhLmRhdGEubGVuZ3RoPTA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5maWxlU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGluZyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0RmlsZXNEYXRhKCRzY29wZS5mZC5QcmVzZW50YXRpb25JZCxmaWxlX2RlZl9pZCxkYXRhc2V0X2RlZl9pZCwwKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5maWxlc0RhdGEgPSBkYXRhLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxhc3RSZXNvdXJjZURlZklkID0gZmlsZV9kZWZfaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubGFzdFJlc291cmNlSWQgPSBkYXRhc2V0X2RlZl9pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZUxpc3REb3dubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZUxpc3REb3dubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgfTsvL2dldEZpbHNEYXRhIEVORFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICRzY29wZS5mZC5vblNlbGVjdFNlYXJjaEZvcm09IGZ1bmN0aW9uIChpdGVtLCBtb2RlbCl7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlNlYXJjaD09dW5kZWZpbmVkKSAkc2NvcGUuZmRbJ3NlYXJjaCddPXt0YXNrSWQ6aXRlbX07XHJcbiAgICAgICAgICAgICAgIGVsc2UgJHNjb3BlLmZkLlNlYXJjaC50YXNrSWQgPSBpdGVtO1xyXG4gICAgICAgICAgICAgICAgLy8kc2NvcGUuZmQuU2VhcmNoLndpZGdldElkPTA7IC8vb3ZvIHRyZWJhIG5hIHNlcnZlcnUgZG9odmF0aXRpIHdpZGdldElkXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZUlkIT11bmRlZmluZWQgJiYgJHNjb3BlLmZkLlBhcmFtZXRlcnMuUHVibGlzaGVkUmVzb3VyY2VJZCE9bnVsbClcclxuXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZ2V0UHVibGlzaGVkUmVzb3VyY2VzKClcclxuXHJcbiAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLkdyaWRTdGF0ZT8uY29sdW1uc0RlZj09PXVuZGVmaW5lZCkgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRDb2x1bW5zRGVmKClcclxuICAgICAgICAgICAgIGVsc2UgXHJcblxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzdG9yZUdyaWRTdGF0ZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5maWxlTGlzdERvd25sb2FkZWQgPXRydWVcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL2FrbyBpbWEgb2RhYnJhbmloIGRvaHZhdGkgaWggaSBzZXR1cGlyYWpcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YSE9dW5kZWZpbmVkICYmICRzY29wZS5mb3JtRGF0YS5sZW5ndGg+MCAmJiAhJHNjb3BlLmZkLlBhcmFtZXRlcnMuTm9HZXREYXRhKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdIT11bmRlZmluZWQpe1xyXG4gICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QcmVzZW50YXRpb25UeXBlPT0wKVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRGaWxlc0RpcmVjdCgkc2NvcGUuZmQuUmVsYXRlZCxbJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdXSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICBpZiAgKCRzY29wZS5mZC5PdmVycmlkZVR5cGUhPVwiZlwiKSAkc2NvcGUuZmQuZ2V0RGF0YXNldExpc3QoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghJHNjb3BlLmZvcm1EZWZpbml0aW9uICYmICRzY29wZS5mZC5NYXhMZW5ndGg9PTApICRzY29wZS5mZC5sb2NhbFZhcnMuR2V0UmVzb3VyY2VEYXRhRm9yUGFyZW50KCk7XHJcblxyXG4gICAgICAgICAgICB9ZWxzZSBpZiAoJHNjb3BlLmZkLlByZXNlbnRhdGlvblR5cGU9PTApXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpZiAoISRzY29wZS5mb3JtRGVmaW5pdGlvbiAmJiAkc2NvcGUuZmQuTWF4TGVuZ3RoPT0wICYmICEkc2NvcGUuZmQuUGFyYW1ldGVycy5Ob0dldERhdGEpICAkc2NvcGUuZmQubG9jYWxWYXJzLkdldFJlc291cmNlRGF0YUZvclBhcmVudCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuUHVibGlzaGVkUmVzb3VyY2VJZCE9dW5kZWZpbmVkKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGVmaW5pdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZ2V0UHVibGlzaGVkUmVzb3VyY2VzKCkgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmdldEZvcm1GaWVsZHMoKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSAkc2NvcGUuZmQubG9jYWxWYXJzLmdldFB1Ymxpc2hlZFJlc291cmNlQnlJZCgkc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZUlkLCRzY29wZS5mZC5TaG93U2VhcmNoRm9ybSlcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG5cdFx0XHRcdH0sLy8uLi5jb250cm9sbGVyXHJcblx0XHRcdFx0XHJcbiAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RGaWxlLmh0bWwnLFxyXG4gICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XHJcblx0XHRcdFx0ICBcclxuICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5zbWFydFRhYmxlTGlua2VkPXRydWVcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICBcclxuICAgIH1cclxufTtcbid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdEZpbGVVcGxvYWQoJHRpbWVvdXQsV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSxUYXNrRGF0YVNlcnZpY2UpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgIHJlc3RyaWN0OiAnQScsIFxyXG4gICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEZpbGVVcGxvYWQuaHRtbCcsXHJcbiAgICAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbiAoJHNjb3BlLCAkZWxlbWVudCwkcm9vdFNjb3BlLCR1aWJNb2RhbCxNZXNzYWdpbmdTZXJ2aWNlLFByb2Nlc3NpbmdTZXJ2aWNlLCRsb2csR3JpZHN0ZXJTZXJ2aWNlLCR0aW1lb3V0LCRjb29raWVzLCRzdGF0ZVBhcmFtcykge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJVIGtvbnRyb2xlcnVcIik7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2U7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUmVhZE9ubHk9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuYW5pbWF0aW9uc0VuYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnNob3dGaWxlTWV0YURhdGE9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUudGFza0lkPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VEZWZJZDtcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUudGFza0lkPT11bmRlZmluZWQpICAkc2NvcGUudGFza0lkPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VEZWZJZF9pZDtcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUudGFza0lkPT11bmRlZmluZWQpICRzY29wZS50YXNrSWQ9MDsgIFxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnM9PXVuZGVmaW5lZCkgICRzY29wZS5sb2NhbFZhcnMgPSB7ZGF0YXNldE1hcHBlclR5cGU6MH07XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZmlsZXMgPSBbXTsgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93UHJvcGVydGllcz1mdW5jdGlvbihkYXRhc2V0TWFwcGVyVHlwZSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlID0gZGF0YXNldE1hcHBlclR5cGU7XHJcbiAgICAgICAgICAgICAgICAgfWVsc2VcclxuICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgJHNjb3BlLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSE9ZGF0YXNldE1hcHBlclR5cGUpICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGUgPSBkYXRhc2V0TWFwcGVyVHlwZTtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9MDtcclxuICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLm9rRmlsZUNvbm5lY3RvciA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLnRJdGVtVmFsdWU9JHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnM7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dQcm9wZXJ0aWVzKDApO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmNhbmNlbEZpbGVDb25uZWN0b3IgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5saXN0T2ZDb25uZWN0b3JzPWFuZ3VsYXIuY29weSgkc2NvcGUuZmQudEl0ZW1WYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dQcm9wZXJ0aWVzKDApO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIFxyXG5cdFx0ICAkc2NvcGUub2tNb2RhbCA9IGZ1bmN0aW9uICh3aW5kZXgsaW5kZXgpIHtcclxuXHRcdFx0JHRpbWVvdXQoZnVuY3Rpb24oKSB7JHNjb3BlLnNob3dGaWxlTWV0YURhdGE9ZmFsc2U7IH0pO1xyXG5cdFx0ICB9O1xyXG5cclxuXHRcdCAgJHNjb3BlLmNhbmNlbE1vZGFsID0gZnVuY3Rpb24gKCkge1xyXG5cdFx0XHQkdGltZW91dChmdW5jdGlvbigpIHskc2NvcGUuc2hvd0ZpbGVNZXRhRGF0YT1mYWxzZTsgfSk7XHJcblx0XHQgIH07XHJcblx0XHQgIFxyXG4gICAgICAgXHJcbiAgICAgICAgXHJcblx0XHQgJHNjb3BlLnNob3dNZXRhZGF0YSA9IGZ1bmN0aW9uKGZpbGVJbmRleCxmaWxlSWQpeyBcclxuXHRcdCBcclxuXHRcdFx0XHQgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuXHRcdFx0XHQgICB2YXIgZmlsZV9yZXNvdXJjZV90eXBlID0gXCJmaWxlXCI7XHJcblx0XHRcdFx0ICAgICRzY29wZS50YXNrSWQ9JHN0YXRlUGFyYW1zLmlkO1xyXG5cdFx0XHRcdCAgIFxyXG5cdFx0XHRcdCAgICAvL1Jlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRm9ybWV4dGVuZGVkKGlkIHJlc3Vyc2EgLHRhc2staWQsIGksICRzY29wZS5mZC5wcmVzZW50YXRpb25JZCxsYW5nKVxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0ICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VGb3JtKGZpbGVJZCxcImlcIixsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2M9JHNjb3BlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuZ3JpZE9wdGlvbnMuZGF0YSA9IGRhdGEuZGF0YTtcclxuXHRcdFx0XHRcdFx0XHRcdCAgLy8kc2NvcGUuZmQuZmlsZXNbZmlsZUluZGV4XS5kYXNoYm9hcmQ9W107XHJcblx0XHRcdFx0XHRcdFx0XHQgICRzY29wZS5mZC5maWxlc1tmaWxlSW5kZXhdLmRhc2hib2FyZD1kYXRhLmRhdGE7XHJcblx0XHRcdFx0XHRcdFx0XHQgIC8vZmlsZXNbJGluZGV4XS5kYXNoYm9hcmQud2lkZ2V0c1xyXG5cdFx0XHRcdFx0XHRcdFx0ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuXHRcdFx0XHRcdFx0fSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHRcdFxyXG5cclxuXHRcdFx0ICB9O1xyXG4gICAgIFxyXG4gICAgICAgICAgIFxyXG5cdFx0XHQvLyBPUEVOIE1PREFMIGZpbGVoZWxwZXJcclxuXHRcdFx0ICRzY29wZS5vcGVuTW9kYWwgPSBmdW5jdGlvbiAoc2l6ZSxmaWxlSW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgdmFyIG1vZGFsSW5zdGFuY2UgPSAkdWliTW9kYWwub3Blbih7XHJcbiAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogJHNjb3BlLmFuaW1hdGlvbnNFbmFibGVkLFxyXG4gICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2ZpbGVoZWxwZXIuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdGaWxlTW9kYWxJbnN0YW5jZUN0cmwnLFxyXG4gICAgICAgICAgICAgICAgICBzaXplOiBzaXplLFxyXG4gICAgICAgICAgICAgICAgICByZXNvbHZlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0VmFsdWU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7cmVzb3VyY2VJZDokc2NvcGUucmVzb3VyY2VJZCxmaWxlSW5kZXg6ZmlsZUluZGV4LGZpbGVzOiRzY29wZS5mZC5maWxlcyxoZWFkbGluZTonRW50ZXIgZmlsZSBtZXRhZGF0YSd9O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHRcdFx0XHJcblx0XHRcdFxyXG4gICAgICAgICAgICBtb2RhbEluc3RhbmNlLnJlc3VsdC50aGVuKGZ1bmN0aW9uIChyZXRWYWx1ZSx3aW5kZXgsaW5kZXgpIHtcclxuICAgICAgICAgICAgIC8vICRzY29wZS5nZXRSZXNvdXJjZUZvcm0gKCk7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgXHJcbiAgICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAvLyRsb2cuaW5mbygnTW9kYWwgZGlzbWlzc2VkIGF0OiAnICsgbmV3IERhdGUoKSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgIFxyXG5cdFx0fTtcclxuICAgICAgICBcclxuICAgICAgXHJcbiAgICAgIC8vbm92aSBGSUxFIENPTk5FQ1RPUiAtIFVQTE9BREVSXHJcbiAgICAgICRzY29wZS5sb2NhbFZhcnMub3BlbkZpbGVDb25uZWN0b3IgID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgIC8vJHNjb3BlLmZkLnNob3dGaWxlQ29ubmVjdG9yPSAhJHNjb3BlLmZkLnNob3dGaWxlQ29ubmVjdG9yO1xyXG4gICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dQcm9wZXJ0aWVzKDEpO1xyXG4gICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgLy9QT1BVTkkgTElTVFUgREFUQVNFVE9WQSAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUobGFuZywnZGF0YXNldCcpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5kYXRhc2V0TGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RvZGFqIGltZSBkYXRhc2V0YSB1IGtvbmVrdG9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9ycyE9dW5kZWZpbmVkKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPCAkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9ycy5sZW5ndGg7aSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3ZhciBwID0gJHNjb3BlLmRhdGFzZXRMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKCRzY29wZS5mZC5saXN0T2ZDb25uZWN0b3JzW2ldLnBhcmVudERhdGFzZXREZWZJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcCA9ICRzY29wZS5kYXRhc2V0TGlzdC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZigkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9yc1tpXS5wYXJlbnREYXRhc2V0RGVmSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHA+PTApICRzY29wZS5mZC5saXN0T2ZDb25uZWN0b3JzW2ldLnBhcmVudERhdGFzZXROYW1lID0gJHNjb3BlLmRhdGFzZXRMaXN0W3BdLm5hbWU7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gXHRcdFx0XHRcdFx0XHRpZiAoJHNjb3BlLmZkLnRJdGVtVmFsdWU9PXVuZGVmaW5lZCB8fCAkc2NvcGUuZmQudEl0ZW1WYWx1ZVswXT09bnVsbCkgJHNjb3BlLmZkLnRJdGVtVmFsdWUgPSBbXTsgXHJcblx0XHRcdFx0XHRcdFx0Ly8gb3ZvIGplICBLdC1VUExPQURFUlxyXG5cdFx0XHRcdFx0XHRcdCAgJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnM9IFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UuZ2V0UmVnaXN0ZXJlZFdpZGdldHMoKTsvL01JR09SICAtIHV6bWkgc3ZlIHJlZ2lzdHJpcmFuZSB3aWRnZXRlXHJcblx0XHRcdFx0XHRcdFx0ICBcclxuXHRcdFx0XHRcdFx0XHQgIC8vQnJpc2kgc3ZlIGtvamkgc2UgdmVjIG5hbGF6ZSB1IHRJdGVtVmFsdWVcclxuXHRcdFx0XHRcdFx0XHQgICBpZiAoJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnMhPXVuZGVmaW5lZCkgXHJcblx0XHRcdFx0XHRcdFx0XHQgIGZvciAodmFyIGk9MDtpPCAkc2NvcGUuZmQudEl0ZW1WYWx1ZS5sZW5ndGggO2krKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCBmb3IgKHZhciBqPTA7ajwgJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnMubGVuZ3RoO2orKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC50SXRlbVZhbHVlW2ldIT1udWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnNbal0ud2lkZ2V0SWQ9PSRzY29wZS5mZC50SXRlbVZhbHVlW2ldLndpZGdldElkKSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5saXN0T2ZDb25uZWN0b3JzLnNwbGljZShqLDEpOy8vYnJpc2kgbG9rYWxuaVx0XHRcdFx0ICAgXHRcdFx0XHRcdCAgICBcdFx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHRcdCAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kb2RhaiBzYSBzZXJ2ZXJhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8ICRzY29wZS5mZC50SXRlbVZhbHVlLmxlbmd0aCA7aSsrKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQudEl0ZW1WYWx1ZVtpXSE9bnVsbCkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnMucHVzaCgkc2NvcGUuZmQudEl0ZW1WYWx1ZVtpXSk7XHRcdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuXHRcdFx0XHRcdFx0XHQgIC8vT3N0YXZpIHUgbGlzdGkga29uZWt0b3JhIHNhbW8gV0lER0VURSBrb2ppIGltYWp1IFwiUmVzb3VyY2VJRFwiIGplciBzdSB0byBkYXRhIHdpZGdldGlcclxuXHRcdFx0XHRcdFx0XHQgIHZhciBuZXdsaXN0PVtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHRcdFx0XHRcdFx0XHQgICAgaWYgKCRzY29wZS5mZC5saXN0T2ZDb25uZWN0b3JzIT11bmRlZmluZWQpe1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTwgJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnMubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9yc1tpXS5ERUkhPXVuZGVmaW5lZCkgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7ajwgJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnNbaV0uREVJLmxlbmd0aDtqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9yc1tpXS5ERUlbal0ubmFtZT09J3Jlc291cmNlTGluaycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2FrbyBERUkgbmlqZSB0cnVlL2ZhbHNlIC0gcmVzZXRpcmFqIG5hIGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAoJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnNbaV0uREVJW2pdLnZhbHVlIT1mYWxzZSkgJiYgKCRzY29wZS5mZC5saXN0T2ZDb25uZWN0b3JzW2ldLkRFSVtqXS52YWx1ZSE9dHJ1ZSkgKSAkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9yc1tpXS5ERUlbal0udmFsdWU9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kb2RhaiBrb25la3RvciB1IG5vdnUgbGlzdHUgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3bGlzdC5wdXNoKCRzY29wZS5mZC5saXN0T2ZDb25uZWN0b3JzW2ldKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHRcdFx0XHRcdFx0IFx0XHRcdFx0XHRcdCAgXHRcdFx0XHRcdFx0ICAgXHRcdFx0XHRcdCAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ly9pZlxyXG5cdFx0XHRcdFx0XHRcdCAgJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnM9bmV3bGlzdDsgLy9rb25hY25hIGxpc3RhIE5PVklIIGRhdGFzZXQga29uZWt0b3JhIFxyXG4gXHJcblx0XHRcdFx0XHRcdFx0ICAvL3JldHVybiB7c2VsZWN0ZWRJdGVtRnJvbVNlcnZlcjokc2NvcGUuZmQudEl0ZW1WYWx1ZSxsaXN0T2ZDb25uZWN0b3JzOiAkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9ycyxoZWFkbGluZTonQ2hvb3NlIHJlcXVpcmVkIGludGVyZmFjZXMnLHNlbGVjdGVkRmlsZUNvbm5lY3Rvcjokc2NvcGUuc2VsZWN0ZWRGaWxlQ29ubmVjdG9yfTtcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0ICBcclxuXHRcdFx0XHQvKiBpbnRlcmZhY2VNb2RhbC5yZXN1bHQudGhlbihmdW5jdGlvbiAoc2VsZWN0ZWRJdGVtKSB7IFxyXG5cdFx0XHRcdFx0XHRcdC8vJHNjb3BlLmZkLnRJdGVtVmFsdWU9c2VsZWN0ZWRJdGVtOyAvLyAvL01JR09SIFRPRE8gdmlkamV0IGRhIGxpIHRyZWJhIGFuZ3VsYXIuY29weShzZWxlY3RlZEl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnRJdGVtVmFsdWU9YW5ndWxhci5jb3B5KHNlbGVjdGVkSXRlbSk7IC8vIE1JR09SIFRPRE8gLSBURVNUIFNBIEFOR1VMQVIgQ09QWVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHRcdFx0XHRcdFx0XHQvLyBNSUdPUiAgVE9ETyAtXHJcblx0XHRcdFx0XHRcdFx0Ly9zZWxla3RpcmFuaSB3aWRnZXQgaW1hIFwicmVzb3VyY2VJRFwiIGludGVyZmFjZVwiIC0gIHJlZ2lzdHJpcmFtbyBzZSBuYSBuamVnb3YgXCJldmVudFwiXHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0JHNjb3BlLiRvbigncmVzb3VyY2VJZDonK3NlbGVjdGVkSXRlbSxcclxuXHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uKGV2ZW50LCBkYXRhKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ3Jlc291cmNlSUQgdWh2YWNlbiB1IGt0VXBsb2FkZXIhIGRhdGE6JyArICBkYXRhKTtcclxuXHRcdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdC8vJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnM9IFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UuZ2V0UmVnaXN0ZXJlZEludGVyZmFjZXMoc2VsZWN0ZWRJdGVtKTsgXHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0fSovXHJcblx0XHJcbiAgICAgICAgICAgIH0gLy9pZiBzaG93ZmlsZWNvbm5ldG9yICBcclxuXHRcdH07IC8vIG9wZW4gRklMRUNPTk5FQ1RPUiAtIFVQTE9BREVSXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgIFxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0IFx0Ly8gRlVOQ1RJT04gT05TRUxFQ1QgQ0FMTEJBQ0sgSUlcclxuXHRcdFx0XHRcdCRzY29wZS5vblNlbGVjdENhbGxiYWNrMiA9IGZ1bmN0aW9uIChpdGVtLCBtb2RlbCxmaWxlSW5kZXgpe1xyXG5cdFx0XHRcdFx0XHR2YXIgZXZlbnRSZXN1bHRJZD1pdGVtLmlkO1xyXG5cdFx0XHRcdFx0XHQkc2NvcGUuZXZlbnRSZXN1bHROYW1lPWl0ZW0uTmFtZTtcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdCAvL2NvbnNvbGUubG9nKFwib25TZWxlY3RDYWxsYmFjayBJSTpcIiArICAkc2NvcGUuZXZlbnRSZXN1bHROYW1lKyAnICcgKyBldmVudFJlc3VsdElkKTtcclxuXHJcblx0XHRcdFx0XHRcdCAgJHNjb3BlLnJlc291cmNlSWQ9ZXZlbnRSZXN1bHRJZDtcclxuXHRcdFx0XHRcdFx0ICAkc2NvcGUuaXNSZXNvdXJjZVNlbGVjdGVkPXRydWU7XHJcblx0XHRcdFx0XHRcdCBcdFxyXG5cdFx0XHRcdFx0XHRcdFx0JHNjb3BlLmZkLmZpbGV0eXBlPSRzY29wZS5yZXNvdXJjZUlkOyBcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdH0vL29uU2VsZWN0Q2FsbGJhY2sgSUlcclxuXHRcdFx0XHQgXHJcblx0XHRcdFx0IFxyXG5cdFx0XHRcdCBcclxuXHRcdFx0XHQgXHJcblx0XHRcdFx0XHQvLyBGVU5DVElPTiAtIE9OX1NFTEVDVF9GSUxFVFlQRSBcclxuXHRcdFx0XHRcdC8vIE5BS09OIMKKVE8gU0UgWkEgUE9KRURJTkHDiE5JIEZJTEUgT0RBQkVSRSBGSUxFLVRZUEUgIC0tPiAkc2NvcGUucmVzb3VyY2VJZFxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHQkc2NvcGUub25TZWxlY3RGaWxlVHlwZSA9IGZ1bmN0aW9uIChpdGVtLGZpbGVJbmRleCl7XHJcblx0XHRcdFx0XHRcdHZhciBzZWxlY3RlZEZpbGVUeXBlSWQ9aXRlbS5pZDtcclxuXHRcdFx0XHRcdFx0JHNjb3BlLnJlc291cmNlSWQ9c2VsZWN0ZWRGaWxlVHlwZUlkO1xyXG5cdFx0XHRcdFx0XHQgJHNjb3BlLmlzUmVzb3VyY2VTZWxlY3RlZD10cnVlO1xyXG5cdFx0XHQgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5maWxlc1tmaWxlSW5kZXhdLmZpbGVSZXNvdXJjZUlEIT1zZWxlY3RlZEZpbGVUeXBlSWQpIHtcclxuXHRcdFx0ICAgICAgICAgICAgICAkc2NvcGUuZmQuZmlsZXNbZmlsZUluZGV4XS5maWxlUmVzb3VyY2VJRCA9IHNlbGVjdGVkRmlsZVR5cGVJZDtcclxuXHRcdFx0ICAgICAgICAgICAgICAkc2NvcGUuZmQuZmlsZXNbZmlsZUluZGV4XS5mb3JtTG9hZGVkID0gZmFsc2U7XHJcblx0XHRcdCAgICAgICAgICAgICB9XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHQgXHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKFwib25TZWxlY3RGaWxlVHlwZSA6XCIgKyBzZWxlY3RlZEZpbGVUeXBlSWQpO1xyXG5cdFx0XHJcblx0XHRcdFx0XHRcdCRzY29wZS5maWxlSW5kZXg9ZmlsZUluZGV4O1xyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdC8vaWYgKCRzY29wZS5mZC5maWxlc1tmaWxlSW5kZXhdLmZpbGVSZXNvdXJjZUlEPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdFx0XHRcdFx0XHQvL1x0JHNjb3BlLmdldFJlc291cmNlRm9ybSAoKTtcclxuXHRcdFx0XHRcdFx0XHRcdC8vXHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0Ly9pZiAoJHNjb3BlLnJlc291cmNlSWQgIT0gdW5kZWZpbmVkKSB7XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8kc2NvcGUuZ2V0UmVzb3VyY2VGb3JtICgpO1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly99XHJcblx0XHRcdFx0XHRcdCBcdFx0XHJcblx0XHRcdFx0XHRcdC8vJHNjb3BlLmZkLnJlbGF0ZWQ9JHNjb3BlLnJlc291cmNlSWQ7IC8vIG92byB2aXNrYT8/PyBNSUdPUlxyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0JHNjb3BlLnNob3dNZXRhZGF0YShmaWxlSW5kZXgsJHNjb3BlLmZkLmZpbGVzW2ZpbGVJbmRleF0uZmlsZVJlc291cmNlSUQgKTtcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdHZhciBlcnI9JHNjb3BlLnRlc3RSdWxlcygpO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdFx0fS8vb25TZWxlY3RGaWxlVHlwZVxyXG5cdFx0XHRcdCBcclxuXHRcdFx0XHQgXHJcblx0XHRcdFx0ICAgIFxyXG5cdFx0XHRcdHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcblx0XHRcdFx0dmFyIHR5cGU9XCJmaWxlXCI7IC8vIFBST01KRU5JVEkgLSBaQVNBRCBKRSBIQVJELUNPREVEICEhISEhIE1JR09SXHJcblx0XHRcdFx0XHQgXHJcblx0XHRcdFx0XHQgXHJcblx0XHRcdFx0XHQvLyBwb3ppdmEgc2UgaXoga3RVcGxvYWRlci5odG1sXHJcblx0XHRcdFx0XHQkc2NvcGUucmVtb3ZlID0gZnVuY3Rpb24gKGluZGV4KSB7XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHQkc2NvcGUuZmQuTWV0YURhdGEuc3BsaWNlKGluZGV4LDEpO1xyXG5cdFx0XHRcdFx0XHQkc2NvcGUuaXNPcGVuPXRydWU7XHJcblx0XHRcdFx0XHRcdHZhciBlcnI9JHNjb3BlLnRlc3RSdWxlcygpO1x0XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQgXHJcblx0XHRcdFx0XHQgXHJcblx0XHRcdC8vIFBPUFVOSSBMSVNUVSAgbElTVCBPRiBGSUxFIFRZUEVTXHJcbiAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmQnlUeXBlKGxhbmcsdHlwZSkudGhlbihcclxuXHRcdFx0XHRcdFx0ZnVuY3Rpb24oZGF0YSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAkc2NvcGUubGlzdE9mRmlsZVR5cGVzID0gZGF0YS5kYXRhO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0IFxyXG5cdFx0XHRcdFx0XHRcdH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0IE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdH0pO1xyXG4gICAgICAgICAgICAgICAgXHQgICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcblx0XHJcbiAgICAgIFxyXG4gICAgIFxyXG5cdFx0XHQgfSwvLyBjb250cm9sZXJfa3RVcGxvYWRlcl9FTkRcclxuXHRcdFx0XHJcblxyXG5cdFx0XHQvLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICBLVC0gVVBMT0FERVIgICBMSU5LIEZVTktDSUpBICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0XHRcdHJlcXVpcmU6ICdeZm9ybScsIC8vIE1JR09SICAtIE5PVk8gRE9EQU8gXHJcblx0XHRcdGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMsZm9ybUN0cmwpIHsgLy9NSUdPUiBOT1ZPXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiVSBwb3N0LWxpbmtcIik7XHJcblx0XHQgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdmFyIGVsZW1lbnQgPSBlbGVtWzBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ZpbGVFbGVtZW50Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2NvcGUuZmQudWlVcGxvYWRlciA9IHVpVXBsb2FkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2NvcGUuZmQudWlVcGxvYWRlci5jcmVhdGVVcGxvYWRlcihzY29wZS5mZC5QcmVzZW50YXRpb25JZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL01JR09SIFRPRE8gLSBwcmlsYWdvZGl0aSB3aWRnZXRkZWZpbml0aW9uIHphIHVwbG9hZGVyIGRhIHNhbGplIGkgcG92ZXphbmkgcmVsYXRlZCBkYXRhc2V0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG91dF9maWVsZHMgPSBbJ3Jlc291cmNlSWQnXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgd2lkZ2V0RGVmaW5pdGlvbiA9IHtERUk6IFt7J25hbWUnOidyZXNvdXJjZUxpbmtSJywndmFsdWUnOlt7bmFtZToncmVzb3VyY2VJZCcsdmFsdWU6c2NvcGUuZmQuUmVsYXRlZH0se25hbWU6J3Jlc291cmNlUmVjb3JkSWQnLHZhbHVlOicnfV19XSxhY3Rpb25zOiBbe25hbWU6J1ByZXBhcmVEYXRhJyxzdGF0dXM6ZmFsc2V9XSxuYW1lOiAna3RVcGxvYWRlcicsbG9jYWxXaWRnZXRJZDpzY29wZS5mZC5Mb2NhbElkLHdpZGdldElkOiBzY29wZS5mZC5QcmVzZW50YXRpb25JZCx0YXNrSWQ6ICBzY29wZS5sVGFza0lkLHJlc291cmNlRGVmSWQgOiBzY29wZS5zZWxlY3RlZFJlc291cmNlLCBvdXRwdXQ6b3V0X2ZpZWxkcywgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3ZhciB3aWRnZXREZWZpbml0aW9uID0ge0RFSTogW3snbmFtZSc6J3Jlc291cmNlTGlua1InLCd2YWx1ZSc6ZmFsc2V9XSxhY3Rpb25zOiBbe25hbWU6J1ByZXBhcmVEYXRhJyxzdGF0dXM6ZmFsc2V9XSxuYW1lOiAna3RVcGxvYWRlcicsbG9jYWxXaWRnZXRJZDpzY29wZS5mZC5sb2NhbElkLHdpZGdldElkOiBzY29wZS5mZC5wcmVzZW50YXRpb25JZCx0YXNrSWQ6ICBzY29wZS5sVGFza0lkLHJlc291cmNlRGVmSWQgOiBzY29wZS5zZWxlY3RlZFJlc291cmNlLCBvdXRwdXQ6b3V0X2ZpZWxkcywgfTtcclxuXHRcdCAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUubG9jYWxXaWRnZXRJZCA9IFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UucmVnaXN0ZXJXaWRnZXQod2lkZ2V0RGVmaW5pdGlvbik7IC8vemFtaWplbml0aSBnZGplIHNlIHN2ZSBwb2phdmxqdWp1ZSBpIHN0YXZpdGkgTE9DQUwgVE9ET1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLkxvY2FsSWQ9c2NvcGUubG9jYWxXaWRnZXRJZDsgICAgICAgICBcclxuICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzY29wZS5mZC51aVVwbG9hZGVyLnJlbW92ZUFsbChzY29wZS5mZC5QcmVzZW50YXRpb25JZCk7IC8vTUlHT1IgVEVNUC0gVFJFQkEgbmVrYWtvIG9icmlzYXRpIGluaWNpamFsbmUgZmFqbG92ZSBrb2QgcmVpZ3N0cmFjaWphIGFsaSBvdmRqZSBuZSByYWRpICEhIVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coZWxlbWVudC5maWxlcyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbWVudCA9IGVsZW1bMF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZmlsZUVsZW1lbnQnKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudFswXS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmlsZXMgPSBlLnRhcmdldC5maWxlcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQudWlVcGxvYWRlci5hZGRGaWxlcyhmaWxlcyxzY29wZS5mZC5QcmVzZW50YXRpb25JZCk7XHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuZmlsZXMgPXNjb3BlLmZkLnVpVXBsb2FkZXIuZ2V0RmlsZXMoc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlcnI9c2NvcGUudGVzdFJ1bGVzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgXHJcbiAgICBcdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXHJcbiAgICAgICAgdmFyIGZpbGVDb3VudGVyID0gMDtcclxuXHRcdFx0Ly9zY29wZS5ydWxlcz1bXTtcclxuXHRcdFx0aWYgKHNjb3BlLmZkLk1ldGFEYXRhPT11bmRlZmluZWQpICBzY29wZS5mZC5NZXRhRGF0YT1bXTsgICAgICAgIFxyXG5cdFx0XHRzY29wZS5ydWxlcyA9ICBzY29wZS5mZC5NZXRhRGF0YTtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHQvLyBBREQgUlVMRSBERUZJTklUSU9OIC0gcG96aXZhIHNlIGl6IGt0VXBsb2FkZXIuaHRtbFxyXG5cdFx0XHRcdHNjb3BlLmFkZFJ1bGVEZWZpbml0aW9uPWZ1bmN0aW9uKG5hbWUsbWluLG1heCxtaW5Ub3RhbCl7XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdGlmIChtaW49PXVuZGVmaW5lZCkgbWluPTA7XHRcdFx0XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdGZvciAodmFyIGk9MSwgbD1zY29wZS5ydWxlcy5sZW5ndGg7IGk8bDsgaSsrKSBcclxuXHRcdFx0XHRcdFx0XHRcdGlmIChzY29wZS5ydWxlc1tpXS5uYW1lPT1uYW1lKSBuYW1lPScnO1xyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0aWYgKG5hbWUhPXVuZGVmaW5lZCAmJiBuYW1lICE9ICcnKSB7XHJcblx0XHRcdFx0XHRcdHNjb3BlLnJ1bGVzLnB1c2goeyduYW1lJzpuYW1lLCdtaW4nOm1pbiwnbWF4JzptYXh9KTtcclxuXHRcdFx0XHRcdFx0Ly9zY29wZS5ydWxlcy5taW5Ub3RhbD1taW5Ub3RhbDtcdFxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBzY29wZS5idG5fcmVtb3ZlID0gZnVuY3Rpb24oaW5kZXgsZmlsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyRsb2cuaW5mbygnZGVsZXRpbmc9JyArIGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3ZhciBzPXNjb3BlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3ZhciBmPWZvcm1DdHJsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIC8vIHNjb3BlLmZkLnVpVXBsb2FkZXIucmVtb3ZlRmlsZShmaWxlLHNjb3BlLmZkLlByZXNlbnRhdGlvbklkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuZmlsZXMuc3BsaWNlKGluZGV4LDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXJyPXNjb3BlLnRlc3RSdWxlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfTsgICAgICBcclxuXHRcdFx0XHJcblxyXG4gICAgICAgICAgICAgICAgc2NvcGUuYnRuX2NsZWFuID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAvL3Njb3BlLmZkLnVpVXBsb2FkZXIucmVtb3ZlQWxsKHNjb3BlLmZkLlByZXNlbnRhdGlvbklkKTtcclxuICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmZpbGVzLmxlbmd0aCA9IDA7XHJcblxyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcblxyXG4gICAgICAgIHNjb3BlLnRlc3RSdWxlcyA9IGZ1bmN0aW9uKCl7XHJcblx0XHRcdFx0XHRcclxuICAgICAgICAgICAgICAgIHZhciBlcnJNc2c9bnVsbDtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MTsgaSA8IHNjb3BlLnJ1bGVzLmxlbmd0aDsgaSsrKSB7IC8vc2VhcmNoIHJ1bGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmaWxlc0ZvdW5kPTA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcih2YXIgaiA9IDA7IGogPCBzY29wZS5mZC5maWxlcy5sZW5ndGg7IGorKyApIHsvL3NlYXJjaCBmaWxlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5maWxlc1tqXS5maWxlUmVzb3VyY2VJRCA9PSBzY29wZS5ydWxlc1tpXS5uYW1lKSBmaWxlc0ZvdW5kPWZpbGVzRm91bmQrMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVzRm91bmQgPCBzY29wZS5ydWxlc1tpXS5taW4pIHtmb3JtQ3RybC51cGxvYWRlckZvcm0uJHNldFZhbGlkaXR5KCdOb3QgZW5vdWdoIGZpbGUgdHlwZXMnLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cdCBlbHNlIGZvcm1DdHJsLnVwbG9hZGVyRm9ybS4kc2V0VmFsaWRpdHkoJ05vdCBlbm91Z2ggZmlsZSB0eXBlcycsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVzRm91bmQgPiBzY29wZS5ydWxlc1tpXS5tYXgpIHtmb3JtQ3RybC51cGxvYWRlckZvcm0uJHNldFZhbGlkaXR5KCdUb28gbWFueSBmaWxlIHR5cGVzJywgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cdCBlbHNlIGZvcm1DdHJsLnVwbG9hZGVyRm9ybS4kc2V0VmFsaWRpdHkoJ1RvbyBtYW55IGZpbGUgdHlwZXMnLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdFxyXG5cdFx0aWYgKHNjb3BlLnJ1bGVzLmxlbmd0aD4wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5maWxlcy5sZW5ndGggPCBzY29wZS5ydWxlc1swXS5taW4pIGZvcm1DdHJsLnVwbG9hZGVyRm9ybS4kc2V0VmFsaWRpdHkoJ01pbmltdW0gZmlsZXMgbmVlZGVkJywgZmFsc2UpOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBmb3JtQ3RybC51cGxvYWRlckZvcm0uJHNldFZhbGlkaXR5KCdNaW5pbXVtIGZpbGVzIG5lZWRlZCcsIHRydWUpOyB9XHJcbiAgXHJcblx0XHRcdFx0XHQvL2Vyck1zZz1udWxsOyAvLyBzYW1vIHphIHRlc3QgISEhICAgICBNQUtOVVRJIEtBU05JSkVFRSAhISEhICAgICA8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJyTXNnO1xyXG5cdFx0XHRcdFx0XHJcbiAgICAgICAgIH0vL3Rlc3RfUlVMRVNcclxuICAgICAgICAgICAgICAgXHJcblx0c2NvcGUuY2hlY2tGb3JDaGFuZ2VzID0gZnVuY3Rpb24oZmlsZXMpIHtcclxuICAgICAgICAgICAgICAgIC8vc2NvcGUuZmQuZmlsZXMgPSBmaWxlcztcclxuICAgICAgICAgICAgICAgIHNjb3BlLmZpbGVzID0gZmlsZXM7XHJcbiAgICAgICAgfTtcclxuICAgICBcdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdFx0Ly8gXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCBrdC1VUExPQURFUiBCVE5fVVBMT0FEXHJcblx0XHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICBzY29wZS5idG5fdXBsb2FkID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIFx0XHRcdFx0XHJcbiAgICAgICAgLy8gQ0hFQ0sgVEhFIFJVTEVTIEZJUlNUXHJcblx0XHR2YXIgZXJyTXNnPXNjb3BlLnRlc3RSdWxlcygpO1xyXG4gICAgICAgICAgICAgICAgZXJyTXNnPW51bGw7IC8vIHNhbW8gemEgdGVzdCAhISEgICAgIE1BS05VVEkgS0FTTklKRUVFRSAhISEhICAgICA8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8XHJcblx0XHRcdFx0XHRcclxuXHRcdGlmIChlcnJNc2c9PW51bGwpIHtcclxuXHRcclxuICAgICAgICBcdFx0dmFyIGNzcmZfdG9rZW4gPSAkY29va2llcy5nZXQoJ2NzcmZ0b2tlbicpOyAvLydtaXJvJzsvLyRjb29raWVTdG9yZS5nZXQoJ2NzcmZ0b2tlbicpO1xyXG5cdFx0XHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgVXBsb2FkLnVwbG9hZCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICcuLi9hcGkvZmlsZS11cGxvYWQvJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsnWC1DU1JGVG9rZW4nIDogY3NyZl90b2tlbiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTogc2NvcGUuZmQuZmlsZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7cmVzb3VyY2VfZGVmX2lkOnNjb3BlLmZkLmxpbmtlZFJlc291cmNlRGVmSWQscmVzb3VyY2VfaWQ6c2NvcGUuZmQubGlua2VkUmVzb3VyY2VJZH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU3VjY2VzcyAnICsgcmVzcC5jb25maWcuZGF0YS5maWxlLm5hbWUgKyAndXBsb2FkZWQuIFJlc3BvbnNlOiAnICsgcmVzcC5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLnVwbG9hZFN1Y2Nlc3M9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHJlc3ApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnRXJyb3Igc3RhdHVzOiAnICsgcmVzcC5zdGF0dXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUudXBsb2FkRXJyb3I9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLnN0YXR1cz1yZXNwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAoZXZ0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByb2dyZXNzUGVyY2VudGFnZSA9IHBhcnNlSW50KDEwMC4wICogZXZ0LmxvYWRlZCAvIGV2dC50b3RhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3Byb2dyZXNzOiAnICsgcHJvZ3Jlc3NQZXJjZW50YWdlICsgJyUgJyArIGV2dC5jb25maWcuZGF0YS5maWxlLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUuc3RhdHVzPSdVcGxvYWRpbmcuLi4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qXHJcbiAgICAgICAgXHRcdC8vIFpBIHN2YWtpIEZBSkwgcG9qZWRpbmHDqG5vICFcclxuICAgICAgICBcdFx0c2NvcGUuZmQudWlVcGxvYWRlci5zdGFydFVwbG9hZChzY29wZS5mZC5QcmVzZW50YXRpb25JZCx7ICBcclxuXHRcdFx0XHR1cmw6ICcuLi9hcGkvZmlsZS11cGxvYWQvJywgXHJcblx0XHRcdFx0aGVhZGVyczogeydYLUNTUkZUb2tlbicgOiBjc3JmX3Rva2VuIH0sXHJcblx0XHRcdFx0XHRjb25jdXJyZW5jeTogMyxcclxuXHRcdFx0XHRcdC8vIHUgZGF0YSBuYXB1bml0aSBwb2RhdGtlIHZlemFuZSB6YSBmYWpsIC0gZmlsZVR5cGUgLCBJRCByZXN1cnNhXHJcblx0XHRcdFx0XHRkYXRhOiB7cmVzb3VyY2VfZGVmX2lkOnNjb3BlLmZkLmxpbmtlZFJlc291cmNlRGVmSWQscmVzb3VyY2VfaWQ6c2NvcGUuZmQubGlua2VkUmVzb3VyY2VJZH0sXHJcblx0XHRcdFx0XHRvblByb2dyZXNzOiBmdW5jdGlvbihmaWxlKSB7XHJcblx0XHRcdFx0XHRcdCRsb2cuaW5mbyhmaWxlLm5hbWUgKyAnPScgKyBmaWxlLmh1bWFuU2l6ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCkgeyBmaWxlLnN0YXR1cz0nVXBsb2FkaW5nLi4uJzsgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG5cdFx0XHRcdFx0b25Db21wbGV0ZWQ6IGZ1bmN0aW9uKGZpbGUsIHJlc3BvbnNlLHN0YXR1cykge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kbG9nLmluZm8oZmlsZSArICdyZXNwb25zZScgKyByZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlPUpTT04ucGFyc2UocmVzcG9uc2UpOyAvL2NvbnZlcnRpcmFtIHN0cmluZyB1IEpTT04gb2JqZWt0XHJcblx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0aWYgKHN0YXR1cz09MjAxKSB7Ly8gTkFLT04gU01PIFVTUEpFU05PIFVQTE9BREFMSSBGSUxFICwgUE9UUkVCQU4gTUVUQURBVEEgVVBMT0FEXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc3BvbnNlLi4uLiBJRCBmYWpsYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZpbGUuZmlsZVJlc291cmNlSUQgLi4uIGplIGZpbGVfdHlwZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzY29wZS5yZXNvdXJjZURhdGEgLi4gc3ByZW1samVuaSBtZXRhIHBvZGFjaVxyXG5cdFx0XHRcdFx0XHRcdFx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKSB7IGZpbGUudXBsb2FkU3VjY2Vzcz10cnVlOyAgfSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHRcdFx0XHQvL09VVFBVVDogZGF0YS5zYXZlZFJlc291cmNlSWQgLi4gSUQgbWV0YS1yZXN1cnNhIGtvamkgamUgcHJpZHJ1wp5lbiBmYWpsdSAodW51dGFyIDExLWljZSBpbGkgMTItaWNlKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx0XHQgZmlsZS5yZXNvdXJjZURhdGE9e307XHJcblx0XHRcdFx0XHRcdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiRmlsZSB1cGxvYWQgc3VjY2Vzc2Z1bCEgXCIrcmVzcG9uc2UsJ3N1Y2Nlc3MnKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9QUklQUkVNQSBzY29wZS5yZXNvdXJjZURhdGEgIFpBIFVQTE9BRCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZS5kYXNoYm9hcmQhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvZGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmaWVsZElkPVwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2M9c2NvcGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxmaWxlLmRhc2hib2FyZC53aWRnZXRzLmxlbmd0aDtpKyspIHsvL2lkZW0gcG8gZ3JpZFJPV1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7ajxmaWxlLmRhc2hib2FyZC53aWRnZXRzW2ldLmxheW91dC5sZW5ndGg7aisrKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGs9MDtrPGZpbGUuZGFzaGJvYXJkLndpZGdldHNbaV0ubGF5b3V0W2pdLmxheW91dC5sZW5ndGg7aysrKVx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRJZD0nRmllbGQnK2ZpbGUuZGFzaGJvYXJkLndpZGdldHNbaV0ubGF5b3V0W2pdLmxheW91dFtrXS5pdGVtSWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZS5kYXNoYm9hcmQud2lkZ2V0c1tpXS5sYXlvdXRbal0ubGF5b3V0W2tdLmRidHlwZT09J2lkJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZElkPWZpZWxkSWQrJ19pZCcvL2NvZGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRJZD0naWQnLy9jb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLnJlc291cmNlRGF0YVtmaWVsZElkXSA9IGZpbGUuZGFzaGJvYXJkLndpZGdldHNbaV0ubGF5b3V0W2pdLmxheW91dFtrXS5zSXRlbVZhbHVlXHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ly9mb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBNRVRBVVBMT0FEICoqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZS5yZXNvdXJjZURhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZGplIGplIHN2ZSBpIHVwZGF0ZSBtb2RlbGEgaSBpbnNlcnQgbWV0YSBwZGRhdGFrYSAtIG5hcHJhdmxqZW5hIHBvc2VibmEgRFJGIGZ1bmtjaWphXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUubWV0YVN0YXR1cz0nU2F2aW5nIG1ldGFkYXRhLi4uJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1x0ZGF0YToge3Jlc291cmNlX2RlZl9pZDpzY29wZS5mZC5saW5rZWRSZXNvdXJjZURlZklkLHJlc291cmNlX2lkOnNjb3BlLmZkLmxpbmtlZFJlc291cmNlSWR9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1Jlc291cmNlc0RhdGFTZXJ2aWNlLmZpbGVNZXRhVXBsb2FkKHJlc3BvbnNlLGZpbGUuZmlsZVJlc291cmNlSUQsc2NvcGUuZmQubGlua2VkUmVzb3VyY2VJZCxzY29wZS5mZC5saW5rZWRSZXNvdXJjZURlZklkLCBmaWxlLnJlc291cmNlRGF0YSkudGhlbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZmlsZU1ldGFVcGxvYWQocmVzcG9uc2UsZmlsZS5maWxlUmVzb3VyY2VJRCxzY29wZS5mZC5saW5rZWRSZXNvdXJjZUlkLHNjb3BlLmZkLmxpbmtlZFJlc291cmNlRGVmSWQsIGZpbGUuZGFzaGJvYXJkLndpZGdldHMpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXJ2aWNlLmZpbGVNZXRhVXBsb2FkPSBmdW5jdGlvbiAoZmlsZUlkLGZpbGVNZXRhSWQscmVzb3VyY2VJZCxyZXNvdXJjZURlZklkLGZpbGVSZXNvdXJjZURhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUubWV0YVN1Y2Nlc3M9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuc2hvd0ZpbGVNZXRhRGF0YT1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kbG9nLmluZm8oJ2RhdGEgc2F2ZWRyZXNvdXJjZWlkOicgKyBkYXRhLnNhdmVkUmVzb3VyY2VJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9NZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5tZXRhRXJyb3I9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUubWV0YVN0YXR1cyA9IGVycm9yLm1zZztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAvL0lGXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5ub01ldGEgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2ZpbGUubWV0YVN1Y2Nlc3M9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUNvdW50ZXIrKztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuZmlsZXMubGVuZ3RoID09IGZpbGVDb3VudGVyKXsgLy9NSUdPUiAtT3ZhaiBzZSBva2lkYSBhIG9uYWogZHJ1Z2kgbmEgMTIzIGl6Z2xlZGEgbmFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm9vdFNjb3BlLiRicm9hZGNhc3QoJ0luaXRpYXRlVGFza0ZpbGVzVXBsb2FkZWQnLHsncmVzb3VyY2VfaWQnOnNjb3BlLmZkLmxpbmtlZFJlc291cmNlSWQsJ3Jlc291cmNlX2RlZl9pZCc6IHNjb3BlLmZkLmxpbmtlZFJlc291cmNlRGVmSWR9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pZiBmaWxlIHVwbG9hZCBlcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS51cGxvYWRFcnJvcj10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5zdGF0dXM9cmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfS8vb25fY29tcGxldGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7IC8vc3RhcnRVcGxvYWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xyXG5cdFx0fSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9zY29wZS5hYy5hbGVydHMgPSAnTWluIFRvdGFsISEnO1xyXG5cdFx0XHQvLyRsb2cuaW5mbyhlcnJNc2cpO1xyXG5cdFx0fVxyXG4gICAgICAgIH07IC8vIEZVTkNUSU9OIGIubl91cDFvYWRcclxuXHJcbiAgICAgICBcclxuICAgICAgICBzY29wZS5wcm9jZXNzV2lkZ2V0RGVwZW5kZW5jaWVzID0gZnVuY3Rpb24oKSB7IC8vLS0tLS0gIGt0VXBsb2FkZXIgIC0tLS0tXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgaWYgKHNjb3BlLmZkLnRJdGVtVmFsdWUhPXVuZGVmaW5lZCkgXHJcbiAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPCBzY29wZS5mZC50SXRlbVZhbHVlLmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgICAgICAgIHZhciBsaW5rZWRXaWRnZXRJZD1zY29wZS5mZC50SXRlbVZhbHVlW2ldLndpZGdldElkOyAgLy8gbGlua2VkV2lkZ2V0SWQ9IFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UuZ2V0TG9jYWxXaWRnZXRJZChsaW5rZWRXaWRnZXRJZCk7Ly9NSUdPUiAtIG1vcmFtIGRvYml0aSBsb2NhbHdpZGdldElkIG9kIHZlemFub2cgV2lkZ2V0SWQgXHJcbiAgICAgICAgICAgICAgICB2YXIgbGlua2VkSXRlbSA9ICdyZXNvdXJjZUxpbmsnICAgICAgICAgICAgICAgICAgICAgIC8vdmFyIGxpbmtlZEl0ZW0gPSBzY29wZS5mZC50SXRlbVZhbHVlW2ldLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKGxpbmtlZFdpZGdldElkIT11bmRlZmluZWQgJiYgbGlua2VkV2lkZ2V0SWQhPW51bGwgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wO2o8c2NvcGUuZmQudEl0ZW1WYWx1ZVtpXS5ERUkubGVuZ3RoO2orKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHNjb3BlLmZkLnRJdGVtVmFsdWVbaV0uREVJW2pdLm5hbWU9PSdyZXNvdXJjZUxpbmsnKSAmJiAoc2NvcGUuZmQudEl0ZW1WYWx1ZVtpXS5ERUlbal0udmFsdWU9PXRydWUpKSB7IC8vU0NPUEUuT04gc2FtbyBrYWQgamUgREVJIHZhbHVlID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsaW5rZWRJdGVtID0gc2NvcGUuZmQudEl0ZW1WYWx1ZVtpXS5ERUlbal0ubmFtZTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ1cGxvYWRlciBcIitzY29wZS5mZC5QcmVzZW50YXRpb25JZCtcIiBzZSB2ZXplIG5hIHNlcnZlcnNraSBcIiArIGxpbmtlZFdpZGdldElkKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuJG9uKCdFdmVudCcrbGlua2VkV2lkZ2V0SWQrbGlua2VkSXRlbSxmdW5jdGlvbihldmVudCwgZGF0YSl7ICAvL2lkZSBwbyBzdmltIHZlemFuaW0gd2lkZ2V0aW1hIGkgZG9kYWogc2NvcGUub24gICAvL01JR09SIFRPRE8gLSBET0RBVEkgU0FNTyBVIFNMVUNBSlUgREEgSkUgREVJIFZBTFVFID0gVFJVRSAhISEhICAgICA8PDw8PDw8PDw8PDw8ICEhISEhISEhIVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ1cGxvYWRlciBcIisgc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQrXCIgZG9iaW8gZXZlbnQgXCIgKyBldmVudC5uYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5Qcm9jZXNzRXZlbnQoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9cdGRhdGE6IHtyZXNvdXJjZV9kZWZfaWQ6c2NvcGUuZmQubGlua2VkUmVzb3VyY2VEZWZJZCxyZXNvdXJjZV9pZDpzY29wZS5mZC5saW5rZWRSZXNvdXJjZUlkfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgLy9vbl9FTkRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UuZ2V0RGF0YUJ5V2lkZ2V0SWQoc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRhc2tfZXhlY3V0ZV9pZCxzY29wZS5yZXNvdXJjZURlZmluaXRpb24udGFza19pbml0aWF0ZV9pZCxzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucHJldl90YXNrX2lkLGxpbmtlZFdpZGdldElkLGxpbmtlZEl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLlByb2Nlc3NFdmVudChkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfS8vaWZcclxuICAgICAgICAgICAgICAgICAgICB9Ly9mb3IgalxyXG4gICAgICAgICAgICAgICAgfS8vaWZcclxuXHJcbiAgICAgICAgICAgICAvLyBlbHNlIHsgIHNjb3BlLmZkLnRJdGVtVmFsdWUuc3BsaWNlKGksMSk7ICB9IC8vIG5pamUgbWkgamFzbm8gemFzdG8gc2FtIHJhZGlvIFNQTElDRVxyXG4gICAgICAgICAgICB9IC8vZm9yIGlcclxuICAgICAgfS8vZm4gIHByMGNlc3NXaWRnZXREZXBlbmRlY2llcyAtLS0tLS0tLS0tLS0tICAgIGt0VXBsb2FkZXJcclxuICAgICAgc2NvcGUuUHJvY2Vzc0V2ZW50PWZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgIHtcclxuICAgICAgICAgZm9yICh2YXIgaz0wO2s8ZGF0YS5sZW5ndGg7aysrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YVtrXS5uYW1lPT0ncmVzb3VyY2VSZWNvcmRJZCcpIHNjb3BlLmZkLmxpbmtlZFJlc291cmNlSWQgPSBkYXRhW2tdLnZhbHVlOyAvL1RPRE8gLSBJTEogLSBvdm8gYmkgaXN0byB0cmViYWxhIGJpdGkgdmFyaWphYmxhIC0gc3RhIGFrbyBwcm9tamVuaW0gaW50ZXJmYWNlIG9kbm9zbm8gbmF6aXYgcG9samEhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YVtrXS5uYW1lPT0ncmVzb3VyY2VJZCcpIHNjb3BlLmZkLmxpbmtlZFJlc291cmNlRGVmSWQgPSBkYXRhW2tdLnZhbHVlOyAgLy9UT0RPLSBJTEogLSBvdm8gYmkgaXN0byB0cmViYWxhIGJpdGkgdmFyaWphYmxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQubGlua2VkUmVzb3VyY2VEZWZJZD4wICYmIHNjb3BlLmZkLmxpbmtlZFJlc291cmNlSWQ+MCkgc2NvcGUuZmQudXBsb2FkUmVhZHkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgXHJcbiAgICAgICAgIGlmIChzY29wZS5mZC5maWxlcy5sZW5ndGg+MCAmJiBzY29wZS5mZC51cGxvYWRSZWFkeSkgc2NvcGUuYnRuX3VwbG9hZCgpOyAgLy8gcG96aXZhIFVQTE9BRCAtIE1JR09SIFRPRE8gLSB1cGxvYWQgdHJlYmEgc2FtbyBha28gaW1hIGZhamwgISEhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgIH07XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIFx0XHJcbiAgICAgIFx0XHRcdFxyXG5cdFxyXG4gICAgIFx0ICAvLyBuZSB6bmFtIGRhIGxpIGNlIHUgb3ZvaiBsaW5rIGZ1bmtjaWppIHdpZGdldCB2ZWMgaW1hdGkgcmVzb3VyY2VfaWRcclxuICAgICAgICAgIC8vSUxKVSB0cmViYSBkb2h2YXRpdCBzYSBzZXJ2ZXJhIHRJdGVtVmFsdWVcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgc2NvcGUuZm9ybVR5cGU9c2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fdHlwZTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAvKiBpZiAoc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQhPXVuZGVmaW5lZCAmJiBzY29wZS5mZC5QcmVzZW50YXRpb25JZCE9bnVsbCkge1xyXG4gICAgICAgICAgVGFza0RhdGFTZXJ2aWNlLmdldFdpZGdldERlcGVuZGVuY2llcyhzY29wZS50YXNrSWQsc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsc2NvcGUuZm9ybVR5cGUpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9zY29wZS5mZC50SXRlbVZhbHVlPWRhdGEuZGF0YTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL292byBqZSBkYSB0cmVudXRubyByYWRpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnNldERhdGEoc2NvcGUuZmQudEl0ZW1WYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9zY29wZS5wcm9jZXNzV2lkZ2V0RGVwZW5kZW5jaWVzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICB9ICovXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vTUlHT1IgLSBwb8OoaXN0aSBmYWpsb3ZlIGthZCBkb2JpamXCmiBJbml0YXRlVGFzayBldmVudFxyXG5cdFx0ICBzY29wZS4kb24oJ1Byb2Nlc3NUYXNrV2lkZ2V0cycsZnVuY3Rpb24oZXZlbnQsIGRhdGEpe1xyXG4gICAgICAgICAgIC8vc2NvcGUuYnRuX2NsZWFuKCk7IC8vIE1JR09SIC0gUFJJVlJFTUVOTyBNQUtOVU8gSkVSIENFIEJJVEkgVklTQUsgS0FEIFBST1JBREkgT1ZPIEdPUkVcclxuICAgICAgICAgICBpZiAoc2NvcGUuZmQuZmlsZXMubGVuZ3RoPjAgJiYgc2NvcGUuZmQudXBsb2FkUmVhZHkpIHNjb3BlLmJ0bl91cGxvYWQoKTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuXHRcdCAgXHJcblx0XHQgIFxyXG5cdFx0ICAvL01JR09SIE5PVk8gVE9ET1xyXG5cdFx0ICBzY29wZS5pbnRlcmZhY2VIYW5kbGVyPSBmdW5jdGlvbiAoZXZlbnQsZGF0YSkge1xyXG5cdFx0XHRcdFx0XHRcdHNjb3BlLnRlc3Q9MDtcclxuXHRcdFx0XHRcclxuXHRcdFx0IC8vIHNjb3BlLmZkLmxpbmtlZFJlc291cmNlSWQgPSBkYXRhLnJlc291cmNlX2lkO1xyXG5cdFx0XHQgICAvL3Njb3BlLmZkLmxpbmtlZFJlc291cmNlRGVmSWQgPSBkYXRhLnJlc291cmNlX2RlZl9pZDtcclxuXHRcdFx0ICBcclxuXHRcdFx0ICAgLy9zY29wZS5idG5fdXBsb2FkKCk7ICBcclxuXHRcdCAgfVxyXG5cdFx0ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgIFxyXG4gICAgIH0gLy9saW5rIGRpcmVjdGl2ZSAna3RVcGxvYWRlcidcclxuICAgIH07XHJcbn07XG4ndXNlIHN0cmljdCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3RGb3JtRWxlbWVudFByb3BlcnRpZXMgKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICByZXN0cmljdDogJ0EnLFxyXG4gICAgICAgIHJlcGxhY2U6IHRydWUsXHJcbiAgICAgICAgdGVtcGxhdGU6ICc8ZGl2IG5nLWluY2x1ZGU9XCJnZXRUZW1wbGF0ZVVybCgpXCIgY2xhc3M9XCJtdC0wIG1yLTFcIj48L2Rpdj4nLFxyXG4gICAgICAgIHNjb3BlOiB7XHJcbiAgICAgICAgICAgIGZkOiAnPScsXHJcbiAgICAgICAgICAgIGxvY2FsVmFyczogJz0nLFxyXG4gICAgICAgICAgICByZXNvdXJjZURlZmluaXRpb246Jz0/JyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uKCRzY29wZSwgJHJvb3RTY29wZSwgVGFza0RlZmluaXRpb25TZXJ2aWNlLEdyaWRzdGVyU2VydmljZSl7XHJcbiAgICAgICAgICAgICRzY29wZS5DVFJMPVwia3RGb3JtRWxlbWVudFByb3BlcnRpZXNcIlxyXG4gICAgICAgICAgICAkc2NvcGUudGRzID1UYXNrRGVmaW5pdGlvblNlcnZpY2VcclxuICAgICAgICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlXHJcbiAgICAgICAgICAgICRyb290U2NvcGUubWFzc1VwZGF0ZUZpZWxkTGlzdCA9IFtcclxuICAgICAgICAgICAgICAgICAgICB7aWQ6MSwgbmFtZTogJ1JlcXVpcmVkJywgdmFsdWU6J3JlcXVpcmVkJ30sXHJcbiAgICAgICAgICAgICAgICAgICAge2lkOjIsIG5hbWU6ICdSZWFkIE9ubHknLCB2YWx1ZToncmVhZE9ubHknfVxyXG4gICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbWVudCwgYXR0cikge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBzY29wZS5nZXRUZW1wbGF0ZVVybCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB2YXIgdGVtcGxhdGUgPVwiXCI7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2NvcGUubG9jYWxWYXJzPT11bmRlZmluZWQpIHNjb3BlLmxvY2FsVmFycyA9IHt9O1xyXG4gICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkIT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlID0gJ2t0ZGlyZWN0aXZldGVtcGxhdGVzLycrc2NvcGUuZmQuRGlyZWN0aXZlTmFtZSsnUHJvcGVydGllcy5odG1sJzsvLyBNSUdPUiBUT0RPLSBTZWN1cml0eSBjaGVjayAhISFcclxuICAgICAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUgPSAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMvRXJyb3JFbGVtZW50UHJvcGVydGllcy5odG1sJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB0ZW1wbGF0ZTtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XG5leHBvcnQgZnVuY3Rpb24ga3RGb3JtRmllbGRHZW5lcmF0b3IgKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIFxuICAgICAgICBjb250cm9sbGVyOmZ1bmN0aW9uKCRzY29wZSwkY29tcGlsZSwkZWxlbWVudCl7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICAvLyRzY29wZS5DVFJMPVwia3RGb3JtRmllbGRHZW5lcmF0b3JcIlxuICAgICAgICAgICAgIHZhciBnZW5lcmF0ZWRUZW1wbGF0ZSA9ICc8ZGl2ICcgKyAkc2NvcGUuZmQuQW5ndWxhckRpcmVjdGl2ZU5hbWUgKyAnPjwvZGl2Pic7XG4gICAgICAgICAgICAgJGVsZW1lbnQuYXBwZW5kKCRjb21waWxlKGdlbmVyYXRlZFRlbXBsYXRlKSgkc2NvcGUpKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgfSxcbiAgICAgICAgbGluazogZnVuY3Rpb24oc2NvcGUsIGVsZW1lbnQpIHtcbiAgICAgICAgICAgXG4gICAgICAgIH1cbiAgICB9O1xufTtcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGt0Rm9ybWxheW91dCAoKSB7XG4gICAgXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxuICAgICAgICAgICBcbiAgICAgICAgICBjb250cm9sbGVyOiBbJyRzY29wZScsJ2RyYWd1bGFTZXJ2aWNlJywnJHJvb3RTY29wZScsJ0dyaWRzdGVyU2VydmljZScsJyRlbGVtZW50JywnJGNvbXBpbGUnLCckdGVtcGxhdGVDYWNoZScsXG4gICAgICAgICAgICAgIGZ1bmN0aW9uKCRzY29wZSxkcmFndWxhU2VydmljZSwkcm9vdFNjb3BlLEdyaWRzdGVyU2VydmljZSwkZWxlbWVudCwkY29tcGlsZSwkdGVtcGxhdGVDYWNoZSl7XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2U7ICAgIFxuICAgICAgICAgICAgICAgICRzY29wZS5DVFJMID0gXCJrdEZvcm1sYXlvdXRcIjsgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHZhciB3aWRnZXRIYW5kbGVSZXNvdXJjZSA9ICdlbGVtZW50LWRyYWctaGFuZGxlJztcbiAgICAgICAgICAgICAgICBsZXQgdGVtcGxhdGUgPSAkdGVtcGxhdGVDYWNoZS5nZXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0Rm9ybUxheW91dEV4ZS5odG1sJyk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uKSAgICB0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZUNhY2hlLmdldCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RGb3JtTGF5b3V0Lmh0bWwnKTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAkc2NvcGUubWFzc1VwZGF0ZUZpZWxkTGlzdD1bXG4gICAgICAgICAgICAgICAgICAgIHtpZDoxLCBGaWVsZDonUmVhZE9ubHknLExhYmVsOidSZWFkIG9ubHknLENvbXBvbmVudDonY2hlY2tib3gnfSxcbiAgICAgICAgICAgICAgICAgICAge2lkOjIsIEZpZWxkOidTaG93RmllbGQnLExhYmVsOidTaG93IGZpZWxkJyxDb21wb25lbnQ6J2NoZWNrYm94J30sXG4gICAgICAgICAgICAgICAgICAgIHtpZDozLCBGaWVsZDonUmVxdWlyZWQnLExhYmVsOidSZXF1aXJlZCcsQ29tcG9uZW50OidjaGVja2JveCd9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgdmFyIGJhZyA9IGRyYWd1bGFTZXJ2aWNlLmZpbmQoJHJvb3RTY29wZSwgJ2JhZy1kYXRhc2V0Jyk7XG4gICAgICAgICAgICAgICAgaWYgKCFiYWcpICBcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5zZXR1cERyYWd1bGEoJ2JhZy1kYXRhc2V0JywnZGF0YXNldC10b29sYm94Jyx3aWRnZXRIYW5kbGVSZXNvdXJjZSk7ICAgIFxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmdzcnZjLmZvcm1WaWV3VHlwZSA9PSA0KXtcbiAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5nc3J2Yy5mb3JtVmlld1R5cGVDb3VudGVyRHM9PTApICRzY29wZS5nc3J2Yy5kZXN0cm95RHJhZ3VsYSgnYmFnLWRhdGFzZXQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnNldHVwRHJhZ3VsYSgnYmFnLWRhdGFzZXQnLCdkYXRhc2V0LXRvb2xib3gnLHdpZGdldEhhbmRsZVJlc291cmNlKTsgXG4gICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5hZGRGb3JtVmlld1R5cGVDb3VudGVyRHMoMSk7XG4gICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICRlbGVtZW50LmFwcGVuZCgkY29tcGlsZSh0ZW1wbGF0ZSkoJHNjb3BlKSk7ICBcbiAgICAgICAgICAgIH1dLFxuICAgICAgICAgIFxuICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHNjb3BlLmhpZGVBbmltYXRpb249ZmFsc2U7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHNjb3BlLmlucHV0QXJyYXkuY291bnRBY3RpdmU9c2NvcGUuaW5wdXRBcnJheS5sZW5ndGg7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICBzY29wZS5jb3VudEFjdGl2ZUZuID0gZnVuY3Rpb24gKCl7XG4gICAgICAgICAgICAgICAgc2NvcGUuY291bnRBY3RpdmU9MDtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxzY29wZS5pbnB1dEFycmF5LmxheW91dC5sZW5ndGg7aSsrKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuaW5wdXRBcnJheS5sYXlvdXRbaV0uU3RhdHVzPT0nQWN0aXZlJykgc2NvcGUuY291bnRBY3RpdmUrKztcbiAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuY291bnRBY3RpdmU+MCkgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc2NvcGUuY291bnRBY3RpdmU7XG4gICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICBzY29wZS5yZW1vdmVGaWVsZCA9IGZ1bmN0aW9uIChpbmRleCl7XG5cdFx0XHRcdFx0XHRcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuXHRcdFx0XHRcdFx0XHQvLyBpZiAoc2NvcGUuaW5wdXRBcnJheS5sYXlvdXRbaW5kZXhdLnNhdmVkPT1mYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgc2NvcGUuaW5wdXRBcnJheS5sYXlvdXRbaW5kZXhdLlN0YXR1cz0nRGVsZXRlZCc7IC8vc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmlucHV0QXJyYXkuY291bnRBY3RpdmUtLTtcblx0XHRcdFx0XHRcdFx0Ly8gfVxuXHRcdFx0XHR9XG5cbiAgICAgICAgICAgIH07ICAgICAgIFxuICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICB9O1xuICAgIH07XG5leHBvcnQgZnVuY3Rpb24ga3RHZW5lcmljUHJvcGVydHlHZW5lcmF0b3IgKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHJlc3RyaWN0OiAnQScsXG4gICAgICAgIHJlcGxhY2U6IHRydWUsXG4gICAgICAgIHRlbXBsYXRlOiAnPGRpdiBuZy1pbmNsdWRlPVwiZ2V0VGVtcGxhdGVVcmwoKVwiID48L2Rpdj4nLFxuICAgICAgICAgIHNjb3BlOiB7XG4gICAgICAgICAgICBmZDogJz0nLFxuICAgICAgICAgICAgd1RlbXBsYXRlOic9JyxcbiAgICAgICAgICB9LFxuICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbigkc2NvcGUsICRyb290U2NvcGUpe1xuICAgICAgICAgICAgJHNjb3BlLkNUUkw9XCJrdEdlbmVyaWNQcm9wZXJ0eUdlbmVyYXRvclwiXG4gICAgICAgICAgICBcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtZW50LCBhdHRyKSB7XG4gICAgICAgICAgXG4gICAgICAgICAgc2NvcGUuZ2V0VGVtcGxhdGVVcmwgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB2YXIgdGVtcGxhdGUgPVwiXCI7XG4gICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZSA9ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy8nK3Njb3BlLndUZW1wbGF0ZVxuICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRlbXBsYXRlO1xuICAgICAgICAgICBcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0R3JpZCAoR3JpZHN0ZXJTZXJ2aWNlLCR0aW1lb3V0LCRyb290U2NvcGUsZHJhZ3VsYVNlcnZpY2UpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgIFxyXG5cdFx0XHRzY29wZTp7XHJcbiAgICAgICAgICAgICAgICAgICBhbGxDb2x1bW5zOiBcIj1cIixcclxuICAgICAgICAgICAgICAgICAgIHBhcmVudDonPScsXHJcbiAgICAgICAgICAgICAgICAgICBncmlkVHlwZTogJz0nLFxyXG4gICAgICAgICAgICAgICAgICAgZm9ybVBhcmFtczonPScsXHJcbiAgICAgICAgICAgICAgICAgICBmb3JtUGFyYW1zUGFyZW50Oic9JyxcclxuICAgICAgICAgICAgICAgICAgIHNob3dTZWFyY2hGaWx0ZXJzOic9JyxcclxuICAgICAgICAgICAgICAgICAgIHJlc291cmNlRGVmaW5pdGlvbjogJz0nLFxyXG4gICAgICAgICAgICAgICAgICAgcGFyZW50UmVzb3VyY2VEZWZJZDogJz0nLFxyXG4gICAgICAgICAgICAgICAgICAgcmVzb3VyY2VSZWNvcmRJZDogJz0nLFxyXG4gICAgICAgICAgICAgICAgICAgcmVzb3VyY2VGb3JtTG9hZGVkIDogJz0nLFxyXG4gICAgICAgICAgICAgICAgICAgZm9ybURhdGEgOiAnPScsICBcclxuICAgICAgICAgICAgICAgICAgIGhpZGVQcm9jZXNzaW5nQW5pbWF0aW9uIDogJz0/JyxcclxuICAgICAgICAgICAgICAgICAgIHBhcmFtczonPT8nLFxyXG4gICAgICAgICAgICAgICAgICAgcGFyZW50V2lkZ2V0Oic9PycsICAgICAgICAgICAgXHRcdCAgIFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjb250cm9sbGVyOiBbJyRzY29wZScsJ2RyYWd1bGFTZXJ2aWNlJywnJHJvb3RTY29wZScsJyRlbGVtZW50JywnJGNvbXBpbGUnLCckdGVtcGxhdGVDYWNoZScsXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgZnVuY3Rpb24oJHNjb3BlLGRyYWd1bGFTZXJ2aWNlLCRyb290U2NvcGUsJGVsZW1lbnQsJGNvbXBpbGUsJHRlbXBsYXRlQ2FjaGUpe1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5nc3J2YyA9IEdyaWRzdGVyU2VydmljZTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5DVFJMPVwia3RHcmlkXCJcclxuICAgICAgICAgICAgICAgIHZhciB3aWRnZXRIYW5kbGUgPSAkc2NvcGUuZ3JpZFR5cGUrJy1yb3ctZHJhZy1oYW5kbGUnO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuJG9uKFwiJGRlc3Ryb3lcIiwgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgICAgIC8vZHJhZ3VsYVNlcnZpY2UuZGVzdHJveSgkcm9vdFNjb3BlLCBkcmFndWxhX2JhZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETyAtIENoZWNrIGlzIGRyYWd1bGEgaXMgcHJvcGVybHkgZGVzdHJveWluZyBiYWdzIChpZiBub3QgLSBtYW51YWxseSBkZXN0cm95KVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdmFyIGJhZyA9IGRyYWd1bGFTZXJ2aWNlLmZpbmQoJHNjb3BlLCAnYmFnLXJvd3MtJyskc2NvcGUuZ3JpZFR5cGUrJy0nKyRzY29wZS4kaWQpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChiYWcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgZHJhZ3VsYVNlcnZpY2UuZGVzdHJveSgkc2NvcGUsICdiYWctcm93cy0nKyRzY29wZS5ncmlkVHlwZSsnLScrJHNjb3BlLiRpZCk7ICAgXHJcbiAgICAgICAgICAgICAgICB9ICAgIFxyXG4gICAgICAgICAgICAgICAgZHJhZ3VsYVNlcnZpY2Uub3B0aW9ucygkc2NvcGUsICdiYWctcm93cy0nKyRzY29wZS5ncmlkVHlwZSsnLScrJHNjb3BlLiRpZCwge1xyXG4gICAgICAgICAgICAgICAgICByZXZlcnRPblNwaWxsOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICByZW1vdmVPblNwaWxsOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIGFjY2VwdDpmdW5jdGlvbiAoZWwsdGFyZ2V0LCBzb3VyY2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgbW92ZXM6IGZ1bmN0aW9uIChlbCwgY29udGFpbmVyLCBoYW5kbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGUuY2xhc3NMaXN0LmNvbnRhaW5zKHdpZGdldEhhbmRsZSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGxldCB0ZW1wbGF0ZTtcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uPT09dW5kZWZpbmVkKSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uPXtmb3JtX2RlZmluaXRpb246ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb24pIHRlbXBsYXRlID0gJHRlbXBsYXRlQ2FjaGUuZ2V0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEdyaWQuaHRtbCcpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSB0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZUNhY2hlLmdldCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RHcmlkRXhlLmh0bWwnKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJGVsZW1lbnQuYXBwZW5kKCRjb21waWxlKHRlbXBsYXRlKSgkc2NvcGUpKTtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHQkc2NvcGUubXlwYXJlbnRXaWRnZXRVaWQ9JydcclxuXHRcdFx0XHRpZiAoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbj8ucGFyZW50V2lkZ2V0VWlkKSBcdFxyXG5cdFx0XHRcdFx0XHQkc2NvcGUubXlwYXJlbnRXaWRnZXRVaWQgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uPy5wYXJlbnRXaWRnZXRVaWRcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdGlmICgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnNob3dIaWRkZW49PXVuZGVmaW5lZCkgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5zaG93SGlkZGVuPXt9XHJcblx0XHRcdFx0Ly8kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnNob3dIaWRkZW5bJHNjb3BlLm15cGFyZW50UmVzb3VyY2VEZWZJZCArICctJysgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi51aWRdPWZhbHNlXHJcblx0XHRcdFx0Ly9kZWJ1Z2dlclxyXG5cdFx0XHRcdCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uc2hvd0hpZGRlblskc2NvcGUubXlwYXJlbnRXaWRnZXRVaWQrICctJysgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi51aWRdPWZhbHNlXHJcblx0XHRcdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XSxcclxuICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG5cdFx0XHRcdFxyXG4gXHJcbiAgICAgICAgICAgICAgICBzY29wZS5TaG93Rm9ybVZpZXcgPSBmdW5jdGlvbih2aWV3SWQpXHJcbiAgICAgICAgICAgICAgICB7ICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPXZpZXdJZDtcclxuICAgICAgICAgICAgICAgICAgICBzY29wZS5nc3J2Yy5zZXRGb3JtVmlld1R5cGUoc2NvcGUuZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUpOyAgICAgXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICBcclxuICAgICAgICAgICAgICAgIHNjb3BlLmdldENsYXNzID0gZnVuY3Rpb24oc2l6ZSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJjb2wtbGctXCIrc2l6ZTtcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgc2NvcGUuJHdhdGNoKCdyZXNvdXJjZUZvcm1Mb2FkZWQnLGZ1bmN0aW9uKG5ld1ZhbHVlLG9sZFZhbHVlKXsgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWUhPW9sZFZhbHVlIHx8IG5ld1ZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZvcm1Mb2FkZWQgPSBzY29wZS5yZXNvdXJjZUZvcm1Mb2FkZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHNjb3BlLiR3YXRjaCgnZm9ybVBhcmFtcy5zaG93R3JpZE5hdmlnYXRpb24nLGZ1bmN0aW9uKG5ld1ZhbHVlLG9sZFZhbHVlKXsgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZSE9b2xkVmFsdWUgfHwgbmV3VmFsdWUgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mb3JtUGFyYW1zIT09dW5kZWZpbmVkKSAgc2NvcGUuc2hvd0dyaWROYXZpZ2F0aW9uID0gc2NvcGUuZm9ybVBhcmFtcy5zaG93R3JpZE5hdmlnYXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICB9IFxyXG4gICAgICAgIH1cclxuICAgIH07XG4ndXNlIHN0cmljdCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2xvbmUob2JqKSB7ICAvLyBqYXZhc2NyaXB0IG9iamVjdCBjbG9uaW5nIChyZXBsYWNlbWVudCBmb3IgYW5ndWxhci5jb3B5KVxyXG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2YgKG9iaikgIT09ICdvYmplY3QnIHx8ICdpc0FjdGl2ZUNsb25lJyBpbiBvYmopXHJcbiAgICAgICAgcmV0dXJuIG9iajtcclxuXHJcbiAgICBpZiAob2JqIGluc3RhbmNlb2YgRGF0ZSlcclxuICAgICAgICB2YXIgdGVtcCA9IG5ldyBvYmouY29uc3RydWN0b3IoKTsgLy9vciBuZXcgRGF0ZShvYmopO1xyXG4gICAgZWxzZVxyXG4gICAgICAgIHZhciB0ZW1wID0gb2JqLmNvbnN0cnVjdG9yKCk7XHJcblxyXG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xyXG4gICAgICAgIGlmIChrZXk9PSdnc3J2YycpIGNvbnRpbnVlIC8vIHNraXBwaW5nIGFuZ3VsYXIgb2JqZWN0cyEhXHJcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcclxuICAgICAgICAgICAgb2JqWydpc0FjdGl2ZUNsb25lJ10gPSBudWxsO1xyXG4gICAgICAgICAgICB0ZW1wW2tleV0gPSBjbG9uZShvYmpba2V5XSk7XHJcbiAgICAgICAgICAgIGRlbGV0ZSBvYmpbJ2lzQWN0aXZlQ2xvbmUnXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGVtcDtcclxufVxyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdEdyaWRDb2x1bW4gKCkge1xyXG4gICAgIC8vICBjb25zb2xlLmxvZyhcInUgZGlyZWt0aXZpIGt0LXRleHRib3ggXCIpO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgIHNjb3BlOntcclxuICAgICAgICAgICAgICAgICAgIGlucHV0QXJyYXkgOiAnPScsXHJcbiAgICAgICAgICAgICAgICAgICBhbGxDb2x1bW5zOiBcIj1cIixcclxuICAgICAgICAgICAgICAgICAgIHBhcmVudDogXCI9XCIsXHJcbiAgICAgICAgICAgICAgICAgICBncmlkVHlwZTogJz0nLFxyXG4gICAgICAgICAgICAgICAgICAgZm9ybVR5cGU6ICc9JyxcclxuICAgICAgICAgICAgICAgICAgIHJlc291cmNlRGVmaW5pdGlvbjogJz0nLCBcclxuICAgICAgICAgICAgICAgICAgIGZvcm1QYXJhbXM6Jz0nLFxyXG4gICAgICAgICAgICAgICAgICAgZm9ybVBhcmFtc1BhcmVudDonPScsXHJcbiAgICAgICAgICAgICAgICAgICBzaG93U2VhcmNoRmlsdGVyczonPScsXHJcbiAgICAgICAgICAgICAgICAgICBwYXJlbnRSZXNvdXJjZURlZklkOiAnPScsXHJcbiAgICAgICAgICAgICAgICAgICByZXNvdXJjZVJlY29yZElkOiAnPScsXHJcbiAgICAgICAgICAgICAgICAgICByZXNvdXJjZUZvcm1Mb2FkZWQgOiAnPScsXHJcbiAgICAgICAgICAgICAgICAgICBmb3JtRGF0YSA6ICc9JyxcclxuICAgICAgICAgICAgICAgICAgIGluZGV4IDogJz0nLFxyXG4gICAgICAgICAgICAgICAgICAgcGFyYW1zOiAnPT8nLFxyXG4gICAgICAgICAgICAgICAgICAgcGFyZW50V2lkZ2V0Oic9PycsXHJcbiAgICAgIFx0XHRcdH0sXHJcbiAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogWyckc2NvcGUnLCAnJGVsZW1lbnQnLCckcm9vdFNjb3BlJywnR3JpZHN0ZXJTZXJ2aWNlJywnV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZScsJyR0aW1lb3V0JywnZHJhZ3VsYVNlcnZpY2UnLCdLYXRhbHlvU3RhdGVNYW5hZ2VyJywnJGNvbXBpbGUnLCckdGVtcGxhdGVDYWNoZScsJ1V0aWxpdHlTZXJ2aWNlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCRzY29wZSwgJGVsZW1lbnQsJHJvb3RTY29wZSxHcmlkc3RlclNlcnZpY2UsV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZSwkdGltZW91dCxkcmFndWxhU2VydmljZSxLYXRhbHlvU3RhdGVNYW5hZ2VyLCRjb21waWxlLCR0ZW1wbGF0ZUNhY2hlLFV0aWxpdHlTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2lmICgkc2NvcGUubG9jYWxWYXJzID09IHVuZGVmaW5lZCB8fCAkc2NvcGUubG9jYWxWYXJzID09IG51bGwpICRzY29wZS5sb2NhbFZhcnM9e307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuaW5wdXRBcnJheS5sb2NhbFZhcnMgPT0gdW5kZWZpbmVkIHx8ICRzY29wZS5pbnB1dEFycmF5LmxvY2FsVmFycyA9PSBudWxsKSAkc2NvcGUuaW5wdXRBcnJheS5sb2NhbFZhcnM9e307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5DVFJMPSdrdEdyaWRDb2x1bW4nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5rc20gPSBLYXRhbHlvU3RhdGVNYW5hZ2VyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLmxvY2FsVmFycy5nc3J2YyA9IEdyaWRzdGVyU2VydmljZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuaW5wdXRBcnJheS5sb2NhbFZhcnMuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5pbnB1dEFycmF5LmxvY2FsVmFycy5nc3J2Y19jaGFuZ2VDb25maXJtRGVsZXRlRWxlbWVudCA9ICBHcmlkc3RlclNlcnZpY2UuY2hhbmdlQ29uZmlybURlbGV0ZUVsZW1lbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmlucHV0QXJyYXkubG9jYWxWYXJzLmdzcnZjX3NldENvbmZpcm1EZWxldGVFbGVtZW50ID0gIEdyaWRzdGVyU2VydmljZS5zZXRDb25maXJtRGVsZXRlRWxlbWVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuaW5wdXRBcnJheS5sb2NhbFZhcnMuZ3NydmNfZ2V0Q29uZmlybURlbGV0ZUVsZW1lbnQgPSAgR3JpZHN0ZXJTZXJ2aWNlLmdldENvbmZpcm1EZWxldGVFbGVtZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5pbnB1dEFycmF5LmxvY2FsVmFycy5nc3J2Y19kZWxldGVFbGVtZW50ID0gR3JpZHN0ZXJTZXJ2aWNlLmRlbGV0ZUVsZW1lbnRcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkc2NvcGUuaW5wdXRBcnJheS5QYXJhbWV0ZXJzID09IHVuZGVmaW5lZCB8fCBPYmplY3Qua2V5cygkc2NvcGUuaW5wdXRBcnJheS5QYXJhbWV0ZXJzIHx8IHt9KS5sZW5ndGggPT09IDAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5pbnB1dEFycmF5LlBhcmFtZXRlcnM9eyAvL0RERUZBVUxUIFZBTFVFU1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpemVYTWQ6IDI0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpemVYU206IDI0LCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaXplWFhzOiAyNFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuaW5wdXRBcnJheS5QYXJhbWV0ZXJzLmJvcmRlciA9PSB1bmRlZmluZWQgfHwgJHNjb3BlLmlucHV0QXJyYXkuUGFyYW1ldGVycy5ib3JkZXIgPT0gbnVsbCApXHJcbiAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuaW5wdXRBcnJheS5QYXJhbWV0ZXJzLmJvcmRlciA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnTGVmdCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6J3NvbGlkJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDowLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOlwiIzAwMDAwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnUmlnaHQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOidzb2xpZCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6MCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6XCIjMDAwMDAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnVG9wJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTonc29saWQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOjAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6XCIjMDAwMDAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0b206e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdCb3R0b20nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOidzb2xpZCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6MCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjpcIiMwMDAwMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5pbnB1dEFycmF5LlBhcmFtZXRlcnMubWFyZ2luID09ICB1bmRlZmluZWQgfHwgICRzY29wZS5pbnB1dEFycmF5LlBhcmFtZXRlcnMubWFyZ2luID09ICBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmlucHV0QXJyYXkuUGFyYW1ldGVycy5tYXJnaW49IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IHsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0xlZnQgTWFyZ2luJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHM6XCJweFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bzogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiB7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdSaWdodCBNYXJnaW4nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0czpcInB4XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiB7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdUb3AgTWFyZ2luJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHM6XCJweFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bzogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogeyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQm90dG9tIE1hcmdpbicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRzOlwicHhcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG86IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5pbnB1dEFycmF5LlBhcmFtZXRlcnMucGFkZGluZyA9PSAgdW5kZWZpbmVkIHx8ICAkc2NvcGUuaW5wdXRBcnJheS5QYXJhbWV0ZXJzLnBhZGRpbmcgPT0gIG51bGwpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5pbnB1dEFycmF5LlBhcmFtZXRlcnMucGFkZGluZz0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiB7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0xlZnQgUGFkZGluZycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0czpcInB4XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG86IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IHsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnUmlnaHQgUGFkZGluZycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHM6XCJweFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogeyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdUb3AgUGFkZGluZycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRzOlwicHhcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0bzogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0b206IHsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQm90dG9tIFBhZGRpbmcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHM6XCJweFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmlucHV0QXJyYXkuVXVpZFJlZj09dW5kZWZpbmVkKSAkc2NvcGUuaW5wdXRBcnJheS5VdWlkUmVmPVV0aWxpdHlTZXJ2aWNlLnV1aWR2NCgpXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuaW5wdXRBcnJheS5QYXJhbWV0ZXJzLlV1aWRSZWYgPSAkc2NvcGUuaW5wdXRBcnJheS5VdWlkUmVmXHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHdfYWN0aW9ucz1bXHJcbiAgICAgICAgICAgICAgICAgICAge2lkOjEsbmFtZTondG9nZ2xlVmlzaWJpbGl0eSd9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtpZDoyLG5hbWU6J3Nob3dGaWVsZCd9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtpZDozLG5hbWU6J2hpZGVGaWVsZCd9LFxyXG4gICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgIGxldCBwYXJlbnRXaWRnZXRVaWQgPSAnJ1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucGFyZW50V2lkZ2V0IT11bmRlZmluZWQpIHBhcmVudFdpZGdldFVpZCA9ICRzY29wZS5wYXJlbnRXaWRnZXQrJy0nXHJcbiAgICAgICAgICAgICAgICB2YXIgd2lkZ2V0RGVmaW5pdGlvbiA9IHt3aWRnZXRMYWJlbDogJ0NvbHVtbicsd2lkZ2V0TmFtZTogJ2NvbHVtbicsd2lkZ2V0SWQ6IHBhcmVudFdpZGdldFVpZCskc2NvcGUuaW5wdXRBcnJheS5VdWlkUmVmLGZkOiRzY29wZS5pbnB1dEFycmF5LGFjdGlvbnM6d19hY3Rpb25zLHRhc2tfaW5pdGlhdGVfaWQ6JHNjb3BlLnRhc2tJbml0aWF0ZUlkLHRhc2tfZXhlY3V0ZV9pZDokc2NvcGUudGFza0V4ZWN1dGVJZCx0YXNrSWQ6ICAkc2NvcGUubFRhc2tJZCxwYXJlbnRSZXNvdXJjZUlkOiRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udWlkfTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5pbnB1dEFycmF5LmxvY2FsVmFycy5sb2NhbFdpZGdldElkID0gV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5yZWdpc3RlcldpZGdldCh3aWRnZXREZWZpbml0aW9uKTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5pbnB1dEFycmF5LmxvY2FsVmFycy5Mb2NhbElkPSRzY29wZS5pbnB1dEFycmF5LmxvY2FsVmFycy5sb2NhbFdpZGdldElkO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmlucHV0QXJyYXkuTG9jYWxJZD0kc2NvcGUuaW5wdXRBcnJheS5sb2NhbFZhcnMubG9jYWxXaWRnZXRJZDtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IHVwZGF0ZV9wcmVzZW50YXRpb25faWQgPSBmdW5jdGlvbihkYXRhKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgaWYgKGRhdGFbJHNjb3BlLmlucHV0QXJyYXkuTG9jYWxJZF0+MCAmJiAoJHNjb3BlLmlucHV0QXJyYXkuUHJlc2VudGF0aW9uSWQ9PW51bGwgfHwgJHNjb3BlLmlucHV0QXJyYXkuUHJlc2VudGF0aW9uSWQ9PTApKSAkc2NvcGUuaW5wdXRBcnJheS5QcmVzZW50YXRpb25JZCA9IGRhdGFbJHNjb3BlLmlucHV0QXJyYXkuTG9jYWxJZF07XHJcbiAgICAgICAgICAgICAgICAgIC8vdW5zdWJzY3JpYmUgaGVyZSBsYXRlciBhZnRlciBpbXBsZW1lbnRpbmcgdW5zdWJzY3JpYmUgLSBUb0RvXHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmlucHV0QXJyYXkuUHJlc2VudGF0aW9uSWQ9PTAgfHwgJHNjb3BlLmlucHV0QXJyYXkuUHJlc2VudGF0aW9uSWQ9PW51bGwpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc291cmNlX2lkID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZURlZklkO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNvdXJjZV9pZD09dW5kZWZpbmVkKSByZXNvdXJjZV9pZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VEZWZJZF9pZDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGVwZW5kZW50X2ZpZWxkID0gJHNjb3BlLmlucHV0QXJyYXkuTG9jYWxJZDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSBcImZvcm1EZWZpbml0aW9uU3RhdGVcIityZXNvdXJjZV9pZCskc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fdHlwZTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgb2JzZXJ2ZXIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdCxkZXBlbmRlbnRfZmllbGQsXCJmb3JtU2F2ZWRcIix1cGRhdGVfcHJlc2VudGF0aW9uX2lkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICBcclxuICAgICAgICAgICAgICAgIGxldCBjb2x1bW5JZCA9ICRzY29wZS5ncmlkVHlwZSsnXycrJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZURlZklkX2lkKydfJyskc2NvcGUuaW5wdXRBcnJheS5FbGVtZW50VHlwZSsnXycrJHNjb3BlLnBhcmVudC5pZCsnXycrJHNjb3BlLmlucHV0QXJyYXkuaWQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgZm9ybUNoYW5nZXNTdWJqZWN0ID0gJ2RhdGFzZXRGb3JtU3RhdGUnKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VEZWZJZF9pZDtcclxuICAgICAgICAgICAgICAgIC8vbGV0IG9yaWdpbmFsQ29sdW1uID0gYW5ndWxhci5jb3B5KCRzY29wZS5pbnB1dEFycmF5KTsgICAgXHJcbiAgICAgICAgICAgICAgICAvL0FkZCBTdWJqZWN0IHRvIGthdGFseW8gc3RhdGUgbWFuYWdlciAobmFtZSBtdXN0IGJlIHVuaXF1ZSlcclxuICAgICAgICAgICAgICAgIC8vbGV0IGNvbHVtblN1YmplY3QgPSAkc2NvcGUua3NtLmFkZFN1YmplY3QoY29sdW1uSWQsYW5ndWxhci5jb3B5KCRzY29wZS5pbnB1dEFycmF5KSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vZGVmaW5lIGZuIGZvciBhcHBseUNoYW5nZSBhY3Rpb24gXHJcbiAgICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgbGV0IGNoYW5nZWRfaXRlbT0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vc2NvcGUuaW5wdXRBcnJheSA9IGRhdGE7IFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghJHNjb3BlLnN5bmNGcm9tT2JzZXJ2ZXIpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5TdWJqZWN0LnN1YmplY3Quc2V0U3RhdGUgPSBhbmd1bGFyLmNvcHkoJHNjb3BlLmlucHV0QXJyYXkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5TdWJqZWN0LnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICBcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICBcclxuICAgICAgICAgICAgICAgIC8vYWRkIGFjdGlvbiB0byBzdWJqZWN0IHJvd1N1YmplY3RcclxuICAgICAgICAgICAgICAgIGxldCBhY3Rpb25fY2hhbmdlX2NvbHVtbiA9ICRzY29wZS5rc20uYWRkQWN0aW9uKGNvbHVtblN1YmplY3Quc3ViamVjdC5uYW1lLFwiYXBwbHlDaGFuZ2VUb0NvbHVtblwiLGNoYW5nZWRfaXRlbSk7ICAgIFxyXG4gICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy9kZWZpbmUgZm4gdG8gc3luYyB0byBtYW5hZ2VyIFxyXG4gICAgICAgICAgICAgICAgbGV0IHByb2Nlc3NfdW5kbyA9IGZ1bmN0aW9uKGRhdGEsYWN0aW9uKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhIT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbHVtbkRhdGEgPSBkYXRhLm9sZERhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmlkPT09Y29sdW1uSWQgJiYgYWN0aW9uPT09XCJ1bmRvRGF0YXNldEZvcm1DaGFuZ2VcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5wYXJlbnQubGF5b3V0WyRzY29wZS5pbmRleF0gPSBjb2x1bW5EYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKGZvcm1DaGFuZ2VzU3ViamVjdCxcInVuZG9EYXRhc2V0Rm9ybUNoYW5nZURvbmVcIik7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnN5bmNGcm9tT2JzZXJ2ZXI9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vZGVmaW5lIGZuIHRvIHN5bmMgdG8gbWFuYWdlciBcclxuICAgICAgICAgICAgICAgIGxldCBwcm9jZXNzX3JlZG8gPSBmdW5jdGlvbihkYXRhLGFjdGlvbilcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSE9PXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2x1bW5EYXRhID0gZGF0YS5uZXdEYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5pZD09PWNvbHVtbklkICYmIGFjdGlvbj09PVwicmVkb0RhdGFzZXRGb3JtQ2hhbmdlXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnBhcmVudC5sYXlvdXRbJHNjb3BlLmluZGV4XSA9IGNvbHVtbkRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnN5bmNGcm9tT2JzZXJ2ZXI9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIC8vY3JlYXRlIG9ic2VydmVyIGlmIGNoYW5nZSBjb21lcyBmcm9tIHNvbWVwbGFjZSBlbHNlIChlLmcuIHVuZG8gb3IgZnJvbSBzZXJ2ZXIpXHJcbiAgICAgICAgICAgICAgICBsZXQgb2JzZXJ2ZXJfdW5kbyA9ICRzY29wZS5rc20uc3Vic2NyaWJlKGZvcm1DaGFuZ2VzU3ViamVjdCxjb2x1bW5JZCxcInVuZG9EYXRhc2V0Rm9ybUNoYW5nZVwiLHByb2Nlc3NfdW5kbyk7XHJcbiAgICAgICAgICAgICAgICAgLy9jcmVhdGUgb2JzZXJ2ZXIgaWYgY2hhbmdlIGNvbWVzIGZyb20gc29tZXBsYWNlIGVsc2UgKGUuZy4gdW5kbyBvciBmcm9tIHNlcnZlcilcclxuICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlcl9yZWRvID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoZm9ybUNoYW5nZXNTdWJqZWN0LGNvbHVtbklkLFwicmVkb0RhdGFzZXRGb3JtQ2hhbmdlXCIscHJvY2Vzc19yZWRvKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAvLyAgaWYgKCRzY29wZS5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSE9PTIgJiYgKCRzY29wZS5mb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9PTIgfHwgJHNjb3BlLmZvcm1QYXJhbXNQYXJlbnQ9PT11bmRlZmluZWQpKSAgICAgIFxyXG4gICAgICAgICAgIC8vIHtcclxuICAgICAgICAgICBcclxuICAgICAgICAvKioqKioqKioqKioqKioqKioqIHJlbW92ZSBibG9vZHkgd2F0Y2hlcnMgdGhhdCBraWxsIHRoZSBhcHBsaWNhdGlvbiBTVEFSVCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICAgICAgICAgJHNjb3BlLiR3YXRjaCgnaW5wdXRBcnJheS5sYXlvdXQnLGZ1bmN0aW9uKG5ld1ZhbHVlLG9sZFZhbHVlKXtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvL3Byb2Nlc3Mgb2JqZWN0IGNoYW5nZVxyXG4gICAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlLmxlbmd0aCE9PW9sZFZhbHVlLmxlbmd0aCAmJiAhJHNjb3BlLnN5bmNGcm9tT2JzZXJ2ZXIpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKGNvbHVtblN1YmplY3Quc3ViamVjdC5uYW1lLCdhcHBseUNoYW5nZVRvQ29sdW1uJyxhbmd1bGFyLmNvcHkobmV3VmFsdWUpKTtcclxuICAgICAgICAgICAgICAgICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbihmb3JtQ2hhbmdlc1N1YmplY3QsXCJkYXRhc2V0Rm9ybUNoYW5nZWRcIix7J2lkJzpjb2x1bW5JZCwnc291cmNlJzpjb2x1bW5JZCwnb2xkRGF0YSc6YW5ndWxhci5jb3B5KG9sZFZhbHVlKSwnbmV3RGF0YSc6YW5ndWxhci5jb3B5KG5ld1ZhbHVlKX0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlICRzY29wZS5zeW5jRnJvbU9ic2VydmVyPWZhbHNlOyAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuJHdhdGNoKCdpbnB1dEFycmF5JyxmdW5jdGlvbihuZXdWYWx1ZSxvbGRWYWx1ZSl7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy9wcm9jZXNzIG9iamVjdCBjaGFuZ2VcclxuICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZS5TaXplWCE9PW9sZFZhbHVlLlNpemVYICYmICEkc2NvcGUuc3luY0Zyb21PYnNlcnZlcilcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbihjb2x1bW5TdWJqZWN0LnN1YmplY3QubmFtZSwnYXBwbHlDaGFuZ2VUb0NvbHVtbicsYW5ndWxhci5jb3B5KG5ld1ZhbHVlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKGZvcm1DaGFuZ2VzU3ViamVjdCxcImRhdGFzZXRGb3JtQ2hhbmdlZFwiLHsnaWQnOmNvbHVtbklkLCdzb3VyY2UnOmNvbHVtbklkLCdvbGREYXRhJzphbmd1bGFyLmNvcHkob2xkVmFsdWUpLCduZXdEYXRhJzphbmd1bGFyLmNvcHkobmV3VmFsdWUpfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgJHNjb3BlLnN5bmNGcm9tT2JzZXJ2ZXI9ZmFsc2U7ICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vfVxyXG4gICAgICAgICAgICoqKioqKioqKioqKioqKioqIHJlbW92ZSBibG9vZHkgd2F0Y2hlcnMgdGhhdCBraWxsIHRoZSBhcHBsaWNhdGlvbiBFTkQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuICAgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLmFkZENvbHVtbiA9IGZ1bmN0aW9uIChyb3csdHlwZSlcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIGxldCBsaW5kZXggPSAkc2NvcGUuaW5kZXgrdHlwZTtcclxuICAgICAgICAgICAgICAgICAgbGV0IHNpemUgPSAkc2NvcGUuaW5wdXRBcnJheS5TaXplWDsgXHJcbiAgICAgICAgICAgICAgICAgIGxldCBuZXdDb2x1bW4gPSBHcmlkc3RlclNlcnZpY2UuZ2V0RW1wdHlDb2x1bW5XaXRoSWQoJHNjb3BlLmFsbENvbHVtbnMpO1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgbmV3Q29sdW1uLlNpemVYID0gc2l6ZTtcclxuICAgICAgICAgICAgICAgICAgLy9sZXQgb2xkUm93ID0gYW5ndWxhci5jb3B5KHJvdyk7XHJcbiAgICAgICAgICAgICAgICAgIC8vbGV0IG9sZFJvdyA9IGNsb25lKHJvdyk7XHJcbiAgICAgICAgICAgICAgICAgIHJvdy5sYXlvdXQuc3BsaWNlKGxpbmRleCwwLCBuZXdDb2x1bW4pO1xyXG4gICAgICAgICAgICAgICAgICAvL2xldCBuZXdSb3cgPSBjbG9uZShyb3cpO1xyXG4gICAgICAgICAgICAgICAgICAvL2xldCBzb3VyY2UgPSAkc2NvcGUuZ3JpZFR5cGUrJ18nKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VEZWZJZF9pZCsnXycrcm93LkVsZW1lbnRUeXBlKydfJytyb3cuQ29udGFpbmVySWQrJ18nK3Jvdy5pZDtcclxuICAgICAgICAgICAgICAgICAgLy8kc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24oZm9ybUNoYW5nZXNTdWJqZWN0LFwiZGF0YXNldEZvcm1DaGFuZ2VkXCIseydpZCc6c291cmNlLCdzb3VyY2UnOnNvdXJjZSwnb2xkRGF0YSc6b2xkUm93LCduZXdEYXRhJzpuZXdSb3cgfSk7XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5zZWxlY3RlZEZpZWxkUGFyZW50LmNvdW50QWN0aXZlKys7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5ncmlkVHlwZT09XCJcIiB8fCAkc2NvcGUuZ3JpZFR5cGU9PXVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5ncmlkVHlwZT1cInJlc291cmNlXCI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5nZXRDbGFzcyA9IGZ1bmN0aW9uKHNpemUpXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJjb2wtbGctXCIrc2l6ZTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5zZXRwT3BlbiA9IGZ1bmN0aW9uKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnBPcGVuPXZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLnNldEhhbmRsZSA9IGZ1bmN0aW9uICh0eXBlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiY29sdW1uLVwiK3R5cGUrXCItaGFuZGxlXCI7XHJcbiAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAkc2NvcGUuYWRkUm93ID0gZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5pbnB1dEFycmF5LmxheW91dC5wdXNoKEdyaWRzdGVyU2VydmljZS5nZXRFbXB0eVJvd1dpdGhJZCgkc2NvcGUuaW5wdXRBcnJheSkpO1xyXG4gICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5zaG93SGlkZVByb3BlcnRpZXMgPSBmdW5jdGlvbih2YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnNldEZpZWxkUHJvcGVydGllc09wZW5lZCh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zaG93RmllbGRQcm9wZXJ0aWVzPSRzY29wZS5nc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKTtcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgfTtcclxuIFxyXG4gICAgICAgICAgICAgICAkc2NvcGUuc3BsaXRDb2x1bW4gPSBmdW5jdGlvbiAoY29sdW1uKVxyXG4gICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHZhciBzcGxpdENvbHVtbiA9IEdyaWRzdGVyU2VydmljZS5nZXROZXdSb3dGb3JTcGxpdENvbHVtbigkc2NvcGUuYWxsUm93cyxjb2x1bW4pO1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUucGFyZW50LmxheW91dC5zcGxpY2UoJHNjb3BlLnBhcmVudC5sYXlvdXQuaW5kZXhPZihjb2x1bW4pLDEsc3BsaXRDb2x1bW4pO1xyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgJHNjb3BlLnJlbW92ZSA9IGZ1bmN0aW9uIChpdGVtKXtcclxuICAgICAgICAgICAgICAgICAgIC8vZGVidWdnZXJcclxuXHRcdFx0XHRcdFx0XHJcbiAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5sYXlvdXQubGVuZ3RoPT0wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5wYXJlbnQ9PXVuZGVmaW5lZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuYWxsQ29sdW1ucy5zcGxpY2UoJHNjb3BlLmFsbENvbHVtbnMuaW5kZXhPZihpdGVtKSwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5wYXJlbnQubGF5b3V0LnNwbGljZSgkc2NvcGUucGFyZW50LmxheW91dC5pbmRleE9mKGl0ZW0pLCAxKTsgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3ViamVjdENvbD0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkK1wiLVwiKyRzY29wZS5pbnB1dEFycmF5LlV1aWRSZWZcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWVTdGF0ZT0gJHNjb3BlLmtzbS5hZGRTdWJqZWN0KHN1YmplY3RDb2wsbnVsbCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZVN0YXRlTmFtZSA9IHZhbHVlU3RhdGUuc3ViamVjdC5uYW1lO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IHNob3dfZmllbGQgPSBmdW5jdGlvbihkYXRhKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5pbnB1dEFycmF5LlNob3dGaWVsZCA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICBsZXQgc3RhdGUgPSBkYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGVbJ3ZhbCddID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlU3RhdGUuc3ViamVjdC5zZXRTdGF0ZUNoYW5nZXMgPSBzdGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlU3RhdGUuc3ViamVjdC5ub3RpZnlPYnNlcnZlcnMoXCJzaG93RmllbGRcIixzdGF0ZSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCBoaWRlX2ZpZWxkID0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuaW5wdXRBcnJheS5TaG93RmllbGQgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBzdGF0ZSA9IGRhdGFcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZVsndmFsJ10gPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVTdGF0ZS5zdWJqZWN0LnNldFN0YXRlQ2hhbmdlcyA9IHN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVTdGF0ZS5zdWJqZWN0Lm5vdGlmeU9ic2VydmVycyhcImhpZGVGaWVsZFwiLHN0YXRlKVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxldCB0b2dnbGVfdmlzaWJpbGl0eSA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmlucHV0QXJyYXkuU2hvd0ZpZWxkID0gISRzY29wZS5pbnB1dEFycmF5LlNob3dGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBzdGF0ZSA9IGRhdGFcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZVsndmFsJ10gPSAgJHNjb3BlLmlucHV0QXJyYXkuU2hvd0ZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVTdGF0ZS5zdWJqZWN0LnNldFN0YXRlQ2hhbmdlcyA9IHN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVTdGF0ZS5zdWJqZWN0Lm5vdGlmeU9ic2VydmVycyhcInRvZ2dsZVZpc2liaWxpdHlcIixkYXRhKSAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGFjdGlvbl9zaG93ID0gJHNjb3BlLmtzbS5hZGRBY3Rpb24odmFsdWVTdGF0ZU5hbWUsXCJzaG93RmllbGRcIixzaG93X2ZpZWxkKTtcclxuICAgICAgICAgICAgICAgIGxldCBhY3Rpb25faGlkZSA9ICRzY29wZS5rc20uYWRkQWN0aW9uKHZhbHVlU3RhdGVOYW1lLFwiaGlkZUZpZWxkXCIsaGlkZV9maWVsZCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgYWN0aW9uX3RvZ2dsZSA9ICRzY29wZS5rc20uYWRkQWN0aW9uKHZhbHVlU3RhdGVOYW1lLFwidG9nZ2xlVmlzaWJpbGl0eVwiLHRvZ2dsZV92aXNpYmlsaXR5KTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvLyBuZy1jbGljaz1cImZkLmxvY2FsVmFycy5nc3J2Yy5zZXRDb25maXJtRGVsZXRlRWxlbWVudChmYWxzZSk7ICBsb2NhbFZhcnMuZ3NydmMuZGVsZXRlRWxlbWVudChmZClcIj5cclxuICAgICAgICAgICAgICAgICRzY29wZS5pbnB1dEFycmF5LmxvY2FsVmFycy5jb25maXJtQW5kRGVsZXRlRWxlbWVudCA9IGZ1bmN0aW9uICh5ZXNubyAsIGZkdmFsdWUpIC8vIGRlbGV0ZSBDb2x1bW5cclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmlucHV0QXJyYXkubG9jYWxWYXJzLmdzcnZjX3NldENvbmZpcm1EZWxldGVFbGVtZW50KHllc25vKVxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5pbnB1dEFycmF5LmxvY2FsVmFycy5nc3J2Y19kZWxldGVFbGVtZW50KGZkdmFsdWUpXHJcbiAgICAgICAgICAgICAgICB9ICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiBcclxuICAgICAgICAgICAgICAgICRzY29wZS5kZWxldGVFbGVtZW50ID0gZnVuY3Rpb24gKGluZGV4KSAvLyBkZWxldGUgQ29sdW1uIC0gbm90IHVzZWQgPz9cclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBkZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5pbnB1dEFycmF5LmxvY2FsVmFycy5nc3J2Yy5kZWxldGVFbGVtZW50KCRzY29wZS5pbnB1dEFycmF5KVxyXG4gICAgICAgICAgICAgICAgfSAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAkc2NvcGUuaW5wdXRBcnJheS5zZWxlY3QgPSBmdW5jdGlvbihzZWxlY3RlZClcclxuICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5pbnB1dEFycmF5LnNlbGVjdGVkPXNlbGVjdGVkO1xyXG4gICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmlucHV0QXJyYXkuc2VsZWN0Qm9yZGVyID0gZnVuY3Rpb24oc2VsZWN0ZWQpXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5pbnB1dEFycmF5LnNlbGVjdGVkQm9yZGVyPXNlbGVjdGVkO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgdGVtcGxhdGU7XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb24pIHRlbXBsYXRlID0gJHRlbXBsYXRlQ2FjaGUuZ2V0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEdyaWRDb2x1bW4uaHRtbCcpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSB0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZUNhY2hlLmdldCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RHcmlkQ29sdW1uRXhlLmh0bWwnKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJGVsZW1lbnQuYXBwZW5kKCRjb21waWxlKHRlbXBsYXRlKSgkc2NvcGUpKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1dLFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcbid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdEdyaWRSb3cgKCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXHJcbiAgICAgICAgICAgICAgc2NvcGU6e1xyXG4gICAgICAgICAgICAgICAgICAgcm93IDogJz0nLFxyXG4gICAgICAgICAgICAgICAgICAgYWxsUm93czogXCI9XCIsXHJcbiAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IFwiPVwiLFxyXG4gICAgICAgICAgICAgICAgICAgZ3JpZFR5cGU6ICc9JyxcclxuICAgICAgICAgICAgICAgICAgIGZvcm1UeXBlOiAnPScsXHJcbiAgICAgICAgICAgICAgICAgICByZXNvdXJjZURlZmluaXRpb246ICc9JywgXHJcbiAgICAgICAgICAgICAgICAgICBmb3JtUGFyYW1zOic9JyxcclxuICAgICAgICAgICAgICAgICAgIGZvcm1QYXJhbXNQYXJlbnQ6Jz0nLFxyXG4gICAgICAgICAgICAgICAgICAgc2hvd1NlYXJjaEZpbHRlcnM6Jz0nLFxyXG4gICAgICAgICAgICAgICAgICAgcGFyZW50UmVzb3VyY2VEZWZJZDogJz0nLFxyXG4gICAgICAgICAgICAgICAgICAgcmVzb3VyY2VSZWNvcmRJZDogJz0nLFxyXG4gICAgICAgICAgICAgICAgICAgcmVzb3VyY2VGb3JtTG9hZGVkIDogJz0nLFxyXG4gICAgICAgICAgICAgICAgICAgZm9ybURhdGEgOiAnPScsICBcclxuICAgICAgICAgICAgICAgICAgIHBhcmFtczonPT8nLFxyXG4gICAgICAgICAgICAgICAgICAgcGFyZW50V2lkZ2V0Oic9PycsICAgXHJcbiAgICAgIFx0XHRcdH0sXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgIGNvbnRyb2xsZXI6IFsnJHNjb3BlJywnR3JpZHN0ZXJTZXJ2aWNlJywnV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZScsJyR0aW1lb3V0JywnZHJhZ3VsYVNlcnZpY2UnLCckcm9vdFNjb3BlJywnS2F0YWx5b1N0YXRlTWFuYWdlcicsJyRjb21waWxlJywnJGVsZW1lbnQnLCckdGVtcGxhdGVDYWNoZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oJHNjb3BlLEdyaWRzdGVyU2VydmljZSxXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLCR0aW1lb3V0LGRyYWd1bGFTZXJ2aWNlLCRyb290U2NvcGUsS2F0YWx5b1N0YXRlTWFuYWdlciwkY29tcGlsZSwkZWxlbWVudCwkdGVtcGxhdGVDYWNoZSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5DVFJMID0gJ2t0R3JpZFJvdyc7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2U7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucm93LmxvY2FsVmFycyA9IHt9XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucm93LmxvY2FsVmFycy5nc3J2YyA9ICgpID0+IEdyaWRzdGVyU2VydmljZVxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmtzbSA9IEthdGFseW9TdGF0ZU1hbmFnZXI7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vbGV0IG9yaWdpbmFsUm93ID0gYW5ndWxhci5jb3B5KCRzY29wZS5yb3cpOyAvLyBUT0RPIC0gWmFzdG8gamUgb3ZvIHR1IGFrbyBzZSBuZSBrb3Jpc3RpPz8/IE1JR09SXHJcbiAgICAgICAgICAgICAgICBsZXQgcm93SWQgPSAkc2NvcGUuZ3JpZFR5cGUrJ18nKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VEZWZJZF9pZCsnXycrJHNjb3BlLnJvdy5FbGVtZW50VHlwZSsnXycrJHNjb3BlLnJvdy5Db250YWluZXJJZCsnXycrJHNjb3BlLnJvdy5pZDtcclxuICAgICAgICAgICAgICAgIGxldCBmb3JtQ2hhbmdlc1N1YmplY3QgPSAnZGF0YXNldEZvcm1TdGF0ZScrJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZURlZklkX2lkO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB2YXIgd2lkZ2V0RGVmaW5pdGlvbiA9IHtuYW1lOiAncm93Jyx3aWRnZXRJZDogJHNjb3BlLnJvdy5QcmVzZW50YXRpb25JZCx0YXNrX2luaXRpYXRlX2lkOiRzY29wZS50YXNrSW5pdGlhdGVJZCx0YXNrX2V4ZWN1dGVfaWQ6JHNjb3BlLnRhc2tFeGVjdXRlSWQsdGFza0lkOiAgJHNjb3BlLmxUYXNrSWR9O1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnJvdy5sb2NhbFdpZGdldElkID0gV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5yZWdpc3RlcldpZGdldCh3aWRnZXREZWZpbml0aW9uKTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5yb3cuTG9jYWxJZD0kc2NvcGUucm93LmxvY2FsV2lkZ2V0SWQ7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLiRvbihcIiRkZXN0cm95XCIsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICAgICAgICAgICAgICAvL2RyYWd1bGFTZXJ2aWNlLmRlc3Ryb3koJHJvb3RTY29wZSwgZHJhZ3VsYV9iYWcpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE8gLSBDaGVjayBpcyBkcmFndWxhIGlzIHByb3Blcmx5IGRlc3Ryb3lpbmcgYmFncyAoaWYgbm90IC0gbWFudWFsbHkgZGVzdHJveSlcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKioqKiogU3luYyBkYXRhIHdpdGggU3RhdGUgbWFuYWdlciAqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbiAgICAgICAgICAgICAgICBsZXQgZGVwZW5kZW50X2ZpZWxkX3BpZCA9ICRzY29wZS5yb3cuTG9jYWxJZDtcclxuICAgICAgICAgICAgICAgIGxldCByZXNvdXJjZV9pZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VEZWZJZFxyXG4gICAgICAgICAgICAgICAgbGV0IHN1YnNjcmliZWRTdWJqZWN0UGlkID0gXCJmb3JtRGVmaW5pdGlvblN0YXRlXCIrcmVzb3VyY2VfaWQrJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX3R5cGU7XHJcbiAgICAgICAgICAgICAgICBsZXQgZGVwZW5kZW50X2ZpZWxkX3BpZDJcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgdXBkYXRlX3ByZXNlbnRhdGlvbl9pZDIgPSBmdW5jdGlvbihkYXRhKSBcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHJlc2VudGF0aW9uX2lkID0gYW5ndWxhci5jb3B5KCRzY29wZS5yb3cuUHJlc2VudGF0aW9uSWQpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFbcHJlc2VudGF0aW9uX2lkXSE9PXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yb3cuUHJlc2VudGF0aW9uSWQgPSBkYXRhW3ByZXNlbnRhdGlvbl9pZF07XHJcbiAgICAgICAgICAgICAgICAgICAgLy91bnN1YnNjcmliZSBoZXJlIGxhdGVyIGFmdGVyIGltcGxlbWVudGluZyB1bnN1YnNjcmliZSAtIFRvRG9cclxuICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbnRfZmllbGRfcGlkMiA9ICRzY29wZS5yb3cuUHJlc2VudGF0aW9uSWRcclxuICAgICAgICAgICAgICAgICAgICBsZXQgb2JzZXJ2ZXJQaWQyID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3RQaWQsZGVwZW5kZW50X2ZpZWxkX3BpZDIsXCJmb3JtU2F2ZWRcIix1cGRhdGVfcHJlc2VudGF0aW9uX2lkMik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgdXBkYXRlX3ByZXNlbnRhdGlvbl9pZCA9IGZ1bmN0aW9uKGRhdGEpIFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhWyRzY29wZS5yb3cuTG9jYWxJZF0+MCAmJiAkc2NvcGUucm93LlByZXNlbnRhdGlvbklkPT0wICYmIGRhdGFbJHNjb3BlLnJvdy5Mb2NhbElkXSE9PXVuZGVmaW5lZCkgJHNjb3BlLnJvdy5QcmVzZW50YXRpb25JZCA9IGRhdGFbJHNjb3BlLnJvdy5Mb2NhbElkXTsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9ic2VydmVyUGlkMiA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0UGlkLGRlcGVuZGVudF9maWVsZF9waWQyLFwiZm9ybVNhdmVkXCIsdXBkYXRlX3ByZXNlbnRhdGlvbl9pZDIpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vdW5zdWJzY3JpYmUgaGVyZSBsYXRlciBhZnRlciBpbXBsZW1lbnRpbmcgdW5zdWJzY3JpYmUgLSBUb0RvXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yb3cuUHJlc2VudGF0aW9uSWQ9PT1udWxsIHx8ICRzY29wZS5yb3cuUHJlc2VudGF0aW9uSWQ9PT0wKSAge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlclBpZCA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0UGlkLGRlcGVuZGVudF9maWVsZF9waWQsXCJmb3JtU2F2ZWRcIix1cGRhdGVfcHJlc2VudGF0aW9uX2lkKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbnRfZmllbGRfcGlkMiA9ICRzY29wZS5yb3cuUHJlc2VudGF0aW9uSWRcclxuICAgICAgICAgICAgICAgICAgICBsZXQgb2JzZXJ2ZXJQaWQyID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3RQaWQsZGVwZW5kZW50X2ZpZWxkX3BpZDIsXCJmb3JtU2F2ZWRcIix1cGRhdGVfcHJlc2VudGF0aW9uX2lkMik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmlzRm9ybVZpZXdUeXBlRXF1YWwgPSBmdW5jdGlvbih3aGF0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBnc3J2Y1R5cGU9ICRzY29wZS5nc3J2Yy5nZXRGb3JtVmlld1R5cGUoKSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZ3NydmNUeXBlID09IHdoYXQpIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5vbGRwcmludFJvdyA9IGZ1bmN0aW9uKHBpZCkgey8vIFNUSUxMIFVTRUQgISEhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHg9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JvdycrcGlkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB4LmNsYXNzTGlzdC5hZGQoXCJwcmludG1lXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgnTXkgdGl0bGUnKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2MuaGVhZC5pbm5lckhUTUwrPScgIDxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiB0eXBlPVwidGV4dC9jc3NcIiBocmVmPVwiL3N0YXRpYy9tb2R1bGVzL3N0eWxlcy9idWlsZC9jc3MvbWFzdGVyLmNzc1wiIC8+ICcgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvYy5oZWFkLmlubmVySFRNTCs9JyA8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgdHlwZT1cInRleHQvY3NzXCIgaHJlZj1cIi9zdGF0aWMvbW9kdWxlcy9zdHlsZXMvYnVpbGQvY3NzL21haW4uY3NzXCIgLz4nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvYy5ib2R5LmlubmVySFRNTCs9JzxkaXYgaWQ9XCJjb250ZW50XCI+VEVTVDwvZGl2PidcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdHJXaW5kb3dGZWF0dXJlcyA9IFwibG9jYXRpb249eWVzLGhlaWdodD01NzAsd2lkdGg9NTIwLHNjcm9sbGJhcnM9eWVzLHN0YXR1cz15ZXNcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHdpbiA9IHdpbmRvdy5vcGVuKFwiXCIsIFwiX2JsYW5rXCIsIHN0cldpbmRvd0ZlYXR1cmVzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vd2luLmRvY3VtZW50Lm9wZW4oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy93aW4uZG9jdW1lbnQud3JpdGUoJzwhRE9DVFlQRSBodG1sPiA8aHRtbD48aGVhZD4gPHN0eWxlPiBAcGFnZSB7IHNpemU6IGF1dG8gIWltcG9ydGFudDt9IDwvc3R5bGU+IDxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiB0eXBlPVwidGV4dC9jc3NcIiBocmVmPVwiL3N0YXRpYy9tb2R1bGVzL3N0eWxlcy9idWlsZC9jc3MvbWFzdGVyLmNzc1wiIC8+ICAgPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIHR5cGU9XCJ0ZXh0L2Nzc1wiIGhyZWY9XCIvc3RhdGljL21vZHVsZXMvc3R5bGVzL2J1aWxkL2Nzcy9tYWluLmNzc1wiIC8+ICAgPC9oZWFkPjxib2R5PjxkaXYgaWQ9XCJjb250ZW50XCI+PC9kaXY+PC9ib2R5PiAgPC9odG1sPiAnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy93aW4uZG9jdW1lbnQuY2xvc2UoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxvYWRpbmdzY3JlZW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9hZGluZ3NjcmVlbicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb2FkaW5nc2NyZWVuKSBsb2FkaW5nc2NyZWVuLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobG9hZGluZ3NjcmVlbik7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGdyaWRsb2FkaW5nPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ3JpZGxvYWRpbmcnKSAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ3JpZGxvYWRpbmcpIGdyaWRsb2FkaW5nLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZ3JpZGxvYWRpbmcpOyAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcmludENvbnRlbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JvdycrcGlkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3ZhciBjb20gPSAkY29tcGlsZShwcmludENvbnRlbnRzKSgkc2NvcGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbFRyZWUocHJpbnRDb250ZW50cykgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2luLmRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gcHJpbnRDb250ZW50cy5pbm5lckhUTUw7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpIHsgICAgXHJcbi8vICAgICAgICAgICAgICAgICAgICAgICAgd2luLnByaW50KCk7ICAgICBcclxuICB9KTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucHJpbnRSb3cgPSBmdW5jdGlvbihwaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm93JytwaWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHguY2xhc3NMaXN0LmFkZChcInByaW50bWVcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZG9jID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCdNeSB0aXRsZScpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvYy5oZWFkLmlubmVySFRNTCs9JyAgPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIHR5cGU9XCJ0ZXh0L2Nzc1wiIGhyZWY9XCIvc3RhdGljL21vZHVsZXMvc3R5bGVzL2J1aWxkL2Nzcy9tYXN0ZXIuY3NzXCIgLz4gJyAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jLmhlYWQuaW5uZXJIVE1MKz0nIDxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiB0eXBlPVwidGV4dC9jc3NcIiBocmVmPVwiL3N0YXRpYy9tb2R1bGVzL3N0eWxlcy9idWlsZC9jc3MvbWFpbi5jc3NcIiAvPidcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jLmJvZHkuaW5uZXJIVE1MKz0nPGRpdiBpZD1cImNvbnRlbnRcIj5URVNUPC9kaXY+J1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy92YXIgVVJMID0gXCJodHRwczovL2xvY2FsaG9zdDo4MDgwO3VybD1cIiArIGxvY2F0aW9uLmhyZWY7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdHJXaW5kb3dGZWF0dXJlcyA9IFwibG9jYXRpb249eWVzLGhlaWdodD01NzAsd2lkdGg9NTIwLHNjcm9sbGJhcnM9eWVzLHN0YXR1cz15ZXNcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy92YXIgd2luID0gd2luZG93Lm9wZW4oXCJcIiwgXCJfYmxhbmtcIiwgc3RyV2luZG93RmVhdHVyZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAvLyB3aW4uZG9jdW1lbnQub3BlbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3dpbi5kb2N1bWVudC53cml0ZSgnPCFET0NUWVBFIGh0bWw+IDxodG1sPjxoZWFkPiA8c3R5bGU+IEBwYWdlIHsgc2l6ZTogYXV0byAhaW1wb3J0YW50O30gPC9zdHlsZT4gPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIHR5cGU9XCJ0ZXh0L2Nzc1wiIGhyZWY9XCIvc3RhdGljL21vZHVsZXMvc3R5bGVzL2J1aWxkL2Nzcy9tYXN0ZXIuY3NzXCIgLz4gICA8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgdHlwZT1cInRleHQvY3NzXCIgaHJlZj1cIi9zdGF0aWMvbW9kdWxlcy9zdHlsZXMvYnVpbGQvY3NzL21haW4uY3NzXCIgLz4gICA8L2hlYWQ+PGJvZHk+PGRpdiBpZD1cImNvbnRlbnRcIj48L2Rpdj48L2JvZHk+ICA8L2h0bWw+ICcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3dpbi5kb2N1bWVudC5jbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbG9hZGluZ3NjcmVlbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2FkaW5nc2NyZWVuJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvYWRpbmdzY3JlZW4pIGxvYWRpbmdzY3JlZW4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChsb2FkaW5nc2NyZWVuKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZ3JpZGxvYWRpbmc9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdncmlkbG9hZGluZycpICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChncmlkbG9hZGluZykgZ3JpZGxvYWRpbmcucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChncmlkbG9hZGluZyk7ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy92YXIgcHJpbnRDb250ZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb3cnK3BpZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdmFyIGNvbSA9ICRjb21waWxlKHByaW50Q29udGVudHMpKCRzY29wZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vd2luLmRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gY29tWzBdLmlubmVySFRNTCAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3dpbi5kb2N1bWVudC5ib2R5LmlubmVySFRNTCA9IHByaW50Q29udGVudHMuaW5uZXJIVE1MO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpIHsgICAgICAgIHdpbmRvdy5wcmludCgpOyAgICAgICAgICAgIH0pOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAvLyB3aW4uZG9jdW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm93JytwaWQpLmNsb25lTm9kZSh0cnVlKTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy9kZWZpbmUgZm4gdG8gc3luYyB0byBtYW5hZ2VyIFxyXG4gICAgICAgICAgICAgICAgbGV0IHByb2Nlc3NfdW5kbyA9IGZ1bmN0aW9uKGRhdGEsYWN0aW9uKSAgXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEhPT11bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJvd0RhdGEgPSBkYXRhLm9sZERhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmlkPT09cm93SWQgJiYgYWN0aW9uPT09XCJ1bmRvRGF0YXNldEZvcm1DaGFuZ2VcIikgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJvdyA9IHJvd0RhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24oZm9ybUNoYW5nZXNTdWJqZWN0LFwidW5kb0RhdGFzZXRGb3JtQ2hhbmdlRG9uZVwiKTsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc3luY0Zyb21PYnNlcnZlcj10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy9kZWZpbmUgZm4gdG8gc3luYyB0byBtYW5hZ2VyIFxyXG4gICAgICAgICAgICAgICAgbGV0IHByb2Nlc3NfcmVkbyA9IGZ1bmN0aW9uKGRhdGEsYWN0aW9uKSBcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSE9PXVuZGVmaW5lZCkgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJvd0RhdGEgPSBkYXRhLm5ld0RhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmlkPT09cm93SWQgJiYgYWN0aW9uPT09XCJyZWRvRGF0YXNldEZvcm1DaGFuZ2VcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yb3cgPSByb3dEYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zeW5jRnJvbU9ic2VydmVyPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgLy9jcmVhdGUgb2JzZXJ2ZXIgaWYgY2hhbmdlIGNvbWVzIGZyb20gc29tZXBsYWNlIGVsc2UgKGUuZy4gdW5kbyBvciBmcm9tIHNlcnZlcilcclxuICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlcl91bmRvID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoZm9ybUNoYW5nZXNTdWJqZWN0LHJvd0lkLFwidW5kb0RhdGFzZXRGb3JtQ2hhbmdlXCIscHJvY2Vzc191bmRvKTtcclxuICAgICAgICAgICAgICAgICAvL2NyZWF0ZSBvYnNlcnZlciBpZiBjaGFuZ2UgY29tZXMgZnJvbSBzb21lcGxhY2UgZWxzZSAoZS5nLiB1bmRvIG9yIGZyb20gc2VydmVyKVxyXG4gICAgICAgICAgICAgICAgbGV0IG9ic2VydmVyX3JlZG8gPSAkc2NvcGUua3NtLnN1YnNjcmliZShmb3JtQ2hhbmdlc1N1YmplY3Qscm93SWQsXCJyZWRvRGF0YXNldEZvcm1DaGFuZ2VcIixwcm9jZXNzX3JlZG8pO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuYWRkQ29sdW1uID0gZnVuY3Rpb24gKHJvdyl7XHJcbiAgICAgICAgICAgICAgICAgICAgcm93LmxheW91dC5wdXNoKCRzY29wZS5nc3J2Yy5nZXRFbXB0eUNvbHVtbldpdGhJZCgkc2NvcGUucGFyZW50LmxheW91dCkpOyAgXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmFkZFJvd0Fib3ZlID0gZnVuY3Rpb24gKHJvdyl7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnBhcmVudC5sYXlvdXQuc3BsaWNlKCRzY29wZS5wYXJlbnQubGF5b3V0LmluZGV4T2Yocm93KSwwLCBHcmlkc3RlclNlcnZpY2UuZ2V0RW1wdHlSb3dXaXRoSWQoJHNjb3BlLmFsbFJvd3MpKTtcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuYWRkUm93QmVsb3cgPSBmdW5jdGlvbiAocm93KXtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUucGFyZW50LmxheW91dC5zcGxpY2UoJHNjb3BlLnBhcmVudC5sYXlvdXQuaW5kZXhPZihyb3cpKzEsMCwgR3JpZHN0ZXJTZXJ2aWNlLmdldEVtcHR5Um93V2l0aElkKCRzY29wZS5hbGxSb3dzKSk7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmdldENsYXNzID0gZnVuY3Rpb24oc2l6ZSkgeyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiY29sLWxnLVwiK3NpemU7ICAgICBcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZ2V0SGFuZGxlID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJyb3ctXCIrJHNjb3BlLmdyaWRUeXBlK1wiLWhhbmRsZVwiOyAgICAgXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnNldEhhbmRsZSA9IGZ1bmN0aW9uICh0eXBlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUrXCItaGFuZGxlXCI7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yb3cuUGFyYW1ldGVycz09dW5kZWZpbmVkKSAkc2NvcGUucm93LlBhcmFtZXRlcnM9e307XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJvdy5QYXJhbWV0ZXJzLkJhY2tncm91bmRPcGFjaXR5PT1udWxsIHx8ICRzY29wZS5yb3cuUGFyYW1ldGVycy5CYWNrZ3JvdW5kT3BhY2l0eT09dW5kZWZpbmVkICkgJHNjb3BlLnJvdy5QYXJhbWV0ZXJzLkJhY2tncm91bmRPcGFjaXR5PTE7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnJvdy5CYWNrUmVwZWF0Q2hhbmdlZCA9IGZ1bmN0aW9uICgpeyAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yb3cuUGFyYW1ldGVycy5SZXBlYXRCYWNrSW1nKSAkc2NvcGUucm93LlBhcmFtZXRlcnMuUmVwZWF0QmFja1RleHQgPSAncmVwZWF0JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAkc2NvcGUucm93LlBhcmFtZXRlcnMuUmVwZWF0QmFja1RleHQgPSAnbm8tcmVwZWF0JztcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgXHJcblx0XHRcdFx0IFxyXG5cdFx0XHRcdCAvKlxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLiR3YXRjaCgncm93JyxmdW5jdGlvbihuZXdWYWx1ZSxvbGRWYWx1ZSl7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZSE9PW9sZFZhbHVlICYmICEkc2NvcGUuc3luY0Zyb21PYnNlcnZlcikgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24oZm9ybUNoYW5nZXNTdWJqZWN0LFwiYWRkRGF0YXNldEZvcm1DaGFuZ2VcIix7J2lkJzpyb3dJZCwnZGF0YSc6YW5ndWxhci5jb3B5KG9sZFZhbHVlKX0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSAkc2NvcGUuc3luY0Zyb21PYnNlcnZlcj1mYWxzZTsgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSk7Ki9cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgdmFyIHdpZGdldEhhbmRsZSA9ICRzY29wZS5zZXRIYW5kbGUoJHNjb3BlLmdyaWRUeXBlKyctY29sdW1uLWRyYWcnKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHZhciBiYWcgPSBkcmFndWxhU2VydmljZS5maW5kKCRzY29wZSwgJ2JhZy1jb2x1bW5zLScrJHNjb3BlLmdyaWRUeXBlKTtcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoYmFnKSB7XHJcbiAgICAgICAgICAgICAgICBkcmFndWxhU2VydmljZS5kZXN0cm95KCRzY29wZSwgJ2JhZy1jb2x1bW5zLScrJHNjb3BlLmdyaWRUeXBlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBkcmFndWxhU2VydmljZS5vcHRpb25zKCRzY29wZSwgJ2JhZy1jb2x1bW5zLScrJHNjb3BlLmdyaWRUeXBlLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV2ZXJ0T25TcGlsbDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICByZW1vdmVPblNwaWxsOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246J3ZlcnRpY2FsJyxcclxuICAgICAgICAgICAgICAgICAgICBhY2NlcHQ6ZnVuY3Rpb24gKGVsLHRhcmdldCwgc291cmNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIG1vdmVzOiBmdW5jdGlvbiAoZWwsIGNvbnRhaW5lciwgaGFuZGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGUuY2xhc3NMaXN0LmNvbnRhaW5zKHdpZGdldEhhbmRsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgJHNjb3BlLnJvdy5kb3dubG9hZEltYWdlID0gZnVuY3Rpb24oZmlsZURlZklkLGZpbGVJZCl7XHJcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5kb3dubG9hZEZpbGUoZmlsZURlZklkLGZpbGVJZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW2RhdGEuZGF0YV0pKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJvdy5QYXJhbWV0ZXJzLkJhY2tncm91bmRJbWFnZVVybD11cmxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH07Ly8gZG93bG9hZCBpbWFnZSBFTkRcclxuXHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUucm93LlBhcmFtZXRlcnMuRmlsZURlZklkPy5pZD4wICYmICRzY29wZS5yb3cuUGFyYW1ldGVycy5GaWxlSWQ+MCkgJHNjb3BlLnJvdy5kb3dubG9hZEltYWdlKCRzY29wZS5yb3cuUGFyYW1ldGVycy5GaWxlRGVmSWQ/LmlkLCRzY29wZS5yb3cuUGFyYW1ldGVycy5GaWxlSWQpO1xyXG5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBsZXQgdGVtcGxhdGU7XHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fZGVmaW5pdGlvbikgICAge1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUgPSAkdGVtcGxhdGVDYWNoZS5nZXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0R3JpZFJvdy5odG1sJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgdGVtcGxhdGUgPSAkdGVtcGxhdGVDYWNoZS5nZXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0R3JpZFJvd0V4ZS5odG1sJyk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgJGVsZW1lbnQuYXBwZW5kKCRjb21waWxlKHRlbXBsYXRlKSgkc2NvcGUpKTsgIFxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XSxcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG4gICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgIC8vICBpZiAoc2NvcGUuZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPT0yICYmIChzY29wZS5mb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9PTIgfHwgc2NvcGUuZm9ybVBhcmFtc1BhcmVudD09PXVuZGVmaW5lZCkpICAgICAgICAgICBcclxuICAgICAgICAgIC8vICB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgICBzY29wZS4kd2F0Y2goJ3Jvdy5sYXlvdXQnLGZ1bmN0aW9uKG5ld1ZhbHVlLG9sZFZhbHVlKXtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIC8vcHJvY2VzcyBvYmplY3QgY2hhbmdlXHJcbiAgICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZS5sZW5ndGghPT1vbGRWYWx1ZS5sZW5ndGggJiYgIXNjb3BlLnN5bmNGcm9tT2JzZXJ2ZXIpXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBzY29wZS5rc20uZXhlY3V0ZUFjdGlvbihmb3JtQ2hhbmdlc1N1YmplY3QsXCJhZGREYXRhc2V0Rm9ybUNoYW5nZVwiLHsnaWQnOnJvd0lkLCdkYXRhJzphbmd1bGFyLmNvcHkob2xkVmFsdWUpfSk7XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSBzY29wZS5zeW5jRnJvbU9ic2VydmVyPWZhbHNlOyAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9LHRydWUpO1xyXG4gICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfTtcclxuICAgIFxyXG4gICAgXHJcbiAgICBcclxuZXhwb3J0ICAgZnVuY3Rpb24gICAgaHRtbFRyZWUgKG9iail7XHJcbiAgICAgICAgdmFyIG9iaiA9IG9iaiB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdO1xyXG4gICAgICAgIHZhciBzdHI9XCJcIlxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChvYmoudGFnTmFtZSA9PSAnSU5QVVQnKSAge1xyXG4gICAgICAgICAgICBpZiAob2JqLnZhbHVlKSBvYmouc2V0QXR0cmlidXRlKFwidmFsdWVcIiwgb2JqLnZhbHVlKTsgXHJcbiAgICAgICAgICAgLy8gb3V0cHV0LnB1c2gob2JqKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIGlmIChvYmouaGFzQ2hpbGROb2RlcygpKSB7XHJcbiAgICAgICAgICB2YXIgY2hpbGQgPSBvYmouZmlyc3RDaGlsZDtcclxuICAgICAgICAgIHdoaWxlIChjaGlsZCkge1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQubm9kZVR5cGUgPT09IDEgJiYgY2hpbGQubm9kZU5hbWUgIT0gJ1NDUklQVCcpe1xyXG4gICAgICAgICAgICAgIHN0ciArPSBodG1sVHJlZShjaGlsZCkgKyBcIi5cIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjaGlsZCA9IGNoaWxkLm5leHRTaWJsaW5nO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBpZiAob2JqLmNsYXNzTGlzdC5jb250YWlucygnbm9wcmludCcgKSkgXHJcbiAgICAgICAgeyAgXHJcbiAgICAgICAgb2JqLnJlbW92ZSgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICB9XG4ndXNlIHN0cmljdCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3RHcm91cCAoKSB7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXHJcbiAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0R3JvdXAuaHRtbCcsXHJcbiAgICAgICAgICAgICBjb250cm9sbGVyOmZ1bmN0aW9uKCRzY29wZSxVc2VyU2VydmljZSwkcm9vdFNjb3BlLEdyaWRzdGVyU2VydmljZSl7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlO1xyXG4gICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzPT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnM9e307XHJcbiAgICAgICAgICAgICAgLy9NSUdPUiBTVEFSVFxyXG4gICAgICAgICAgICAgICRzY29wZS5zZWFyY2g9W1xyXG4gICAgICAgICAgICAgICAgICAgICAge2lkOjEsZmlsdGVyOidvbmxpc3QnLG5hbWU6XCJPbiBsaXN0OlwiLGljb246XCJmYSBmYS1jaGV2cm9uLXJpZ2h0XCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgICAge2lkOjIsZmlsdGVyOidub3Rvbmxpc3QnLG5hbWU6XCJOb3Qgb24gbGlzdDpcIixpY29uOlwiZmEgZmEtZXhwYW5kXCJ9LFxyXG4gICAgICAgICAgICAgICAgXTtcclxuXHRcdFx0XHRcclxuICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZCE9dW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuc2VhcmNoPT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuc2VhcmNoPSRzY29wZS5zZWFyY2hbMF07IC8vTUlHT1IgVE9ETyAtIGdyZXNrYSBrb2QgaW5jaWphY2lqZSB6YSBtdWx0aXBsZSAsIG1vemRhIHRyZWJhIGtvZCBwcm9tamVuZSBuYSBtdWx0aXBsZSBvdm8gam9zIGplZG5vbSBva2ludXRpXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgfSBcclxuXHJcblx0XHRcdCAgJHNjb3BlLmFwcGx5TGlzdEZpbHRlcnMgPSBmdW5jdGlvbihpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgXHJcblx0XHRcdFx0ICAgJHNjb3BlLmZkLnNlYXJjaD0kc2NvcGUuc2VhcmNoW2luZGV4XTtcclxuICAgICAgICAgICAgICAgICAgIGlmKCB0eXBlb2YgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdID09PSAnc3RyaW5nJyApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuZmQuc2VhcmNoLnZhbHVlID0gWyAkc2NvcGUuZmQuc0l0ZW1WYWx1ZSBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuc2VhcmNoLnZhbHVlID0gWyB7J2lkJzokc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV19IF07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgLy9pZiAoJHNjb3BlLmZkLnNlYXJjaC5uYW1lPT1cIkVxdWFsc1wiKSAkc2NvcGUuZmQuc2VhcmNoPW51bGw7XHJcblx0XHRcdFx0ICAgJHNjb3BlLmlzT3Blbj1mYWxzZTtcdFx0XHJcblx0XHRcdCAgXHR9O1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvL01JR09SIEVORFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAkc2NvcGUuc2hvd1Byb3BlcnRpZXMgPSBmdW5jdGlvbihldmVudClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0RmllbGRQcm9wZXJ0aWVzKCRzY29wZS5mZCxldmVudCk7XHJcbiAgICAgICAgICAgIH07ICAgIFxyXG5cdFx0XHRcclxuXHRcdFx0aWYgKCRzY29wZS5mZC5sb2NhbFZhcnM9PXVuZGVmaW5lZCkgICRzY29wZS5mZC5sb2NhbFZhcnM9e31cclxuXHJcbiAgICAgICAgICAgICRzY29wZS5ncm91cEl0ZW0gPSB7c2VsZWN0ZWRHcm91cCA6IG51bGx9O1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAkc2NvcGUucG9wdWxhdGVHcm91cCA9IGZ1bmN0aW9uIChpdGVtLG1vZGVsKSB7ICAgICAgICAgICAgICBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkR3JvdXAgPSBpdGVtO1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuY29kZUlkID0gaXRlbS5pZDtcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdPWl0ZW0uaWQ7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgJHNjb3BlLmZkLnNlYXJjaC52YWx1ZSA9IFsgeydpZCc6JHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdfSBdOyAvL01JR09SIFRPRE8gLSB2aWRqZXRpIGRhIGxpIG92amRlIHNpVGVtVmFsdWUgKCBwcm92amVyaXRpIGkgb3N0YWxlIHNsdcOoYWpldmUgdSBvbnNlbGVjdCBmdW5rY2lqaSlcclxuXHJcbiAgICBcdFx0XHRcdH07XHJcblxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAkc2NvcGUuZ2V0R3JvdXBzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgIFVzZXJTZXJ2aWNlLmdldFVzZXJzR3JvdXBzKCdncm91cHMnKS50aGVuKGZ1bmN0aW9uKGRhdGEpe1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICRzY29wZS5ncm91cExpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YSE9dW5kZWZpbmVkICYmICRzY29wZS5mb3JtRGF0YS5sZW5ndGg+MClcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSE9bnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgVXNlclNlcnZpY2UuZ2V0R3JvdXBPYmplY3RCeUlkKCRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSkudGhlbihmdW5jdGlvbihkYXRhKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZEdyb3VwID0gZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5ncm91cEl0ZW0uc2VsZWN0ZWRHcm91cD0kc2NvcGUuc2VsZWN0ZWRHcm91cDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdIT1udWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXS5sZW5ndGg+MClcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXVswXSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyU2VydmljZS5nZXRHcm91cE9iamVjdEJ5SWQoJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdWzBdKS50aGVuKGZ1bmN0aW9uKGRhdGEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkR3JvdXAgPSBkYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdyb3VwSXRlbS5zZWxlY3RlZEdyb3VwPSRzY29wZS5zZWxlY3RlZEdyb3VwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdPSRzY29wZS5zZWxlY3RlZEdyb3VwLmlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICBcdFx0XHRcdH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgJHNjb3BlLiR3YXRjaCgnZ3JvdXBJdGVtLnNlbGVjdGVkR3JvdXAnLCBmdW5jdGlvbihuZXdWYWx1ZSxvbGRWYWx1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZm9ybURhdGEgJiYgbmV3VmFsdWUpICAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV09bmV3VmFsdWUuaWQ7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAkc2NvcGUuY2xlYXIgPSBmdW5jdGlvbihldmVudCxzZWxlY3QpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdID0gbnVsbDtcclxuICAgICAgICAgICRzY29wZS5mZC5zZWFyY2gudmFsdWUgPSBudWxsO1xyXG4gICAgICAgICAgJHNjb3BlLmdyb3VwSXRlbS5zZWxlY3RlZEdyb3VwID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgXHRcdFx0XHQkc2NvcGUuZ2V0R3JvdXBzKCk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgXHJcbn07XG4ndXNlIHN0cmljdCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3RIZWFkZXIgKCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXHJcblx0XHRcdCBjb250cm9sbGVyOiBmdW5jdGlvbiAoJHNjb3BlKSB7fSxcclxuICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RIZWFkZXIuaHRtbCcsXHJcbiAgICAgICAgICAgICBjb250cm9sbGVyOmZ1bmN0aW9uKCRzY29wZSxLYXRhbHlvU3RhdGVNYW5hZ2VyLFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UpXHJcbiAgICAgICAgICAgICB7ICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnM9PT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnM9e31cclxuICAgICAgICAgICAgICAgIHZhciB3aWRnZXREZWZpbml0aW9uID0ge25hbWU6ICdoZWFkZXInLHdpZGdldElkOiAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsdGFza19pbml0aWF0ZV9pZDokc2NvcGUudGFza0luaXRpYXRlSWQsdGFza19leGVjdXRlX2lkOiRzY29wZS50YXNrRXhlY3V0ZUlkLHRhc2tJZDogICRzY29wZS5sVGFza0lkfTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMubG9jYWxXaWRnZXRJZCA9IFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UucmVnaXN0ZXJXaWRnZXQod2lkZ2V0RGVmaW5pdGlvbik7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQuTG9jYWxJZD0kc2NvcGUuZmQubG9jYWxWYXJzLmxvY2FsV2lkZ2V0SWQ7XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycyA9PSB1bmRlZmluZWQgKSBcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMgPSB7c2hvd01lbnU6IGZhbHNlIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5Qcm9wZXJ0eUVsZW1lbnRzPVsna3RGaWVsZEJvcmRlclByb3BlcnR5Lmh0bWwnXVxyXG4gICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy50YXNrSWQ9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZURlZklkO1xyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMudGFza0lkPT11bmRlZmluZWQpICAkc2NvcGUuZmQubG9jYWxWYXJzLnRhc2tJZD0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlJlc291cmNlRGVmSWRfaWQ7XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy50YXNrSWQ9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLmxvY2FsVmFycy50YXNrSWQ9MDtcclxuICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnRvZ2dsZURyb3Bkb3duID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93TWVudSA9ICAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dNZW51ID8gZmFsc2U6IHRydWUgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUua3NtID0gS2F0YWx5b1N0YXRlTWFuYWdlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHVwZGF0ZV9wcmVzZW50YXRpb25faWQgPSBmdW5jdGlvbihkYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhWyRzY29wZS5mZC5Mb2NhbElkXT4wICYmICgkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PW51bGwgfHwgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT0wKSkgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkID0gZGF0YVskc2NvcGUuZmQuTG9jYWxJZF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy91bnN1YnNjcmliZSBoZXJlIGxhdGVyIGFmdGVyIGltcGxlbWVudGluZyB1bnN1YnNjcmliZSAtIFRvRG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT0wIHx8ICRzY29wZS5mZC5QcmVzZW50YXRpb25JZD09bnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGVwZW5kZW50X2ZpZWxkID0gJHNjb3BlLmZkLkxvY2FsSWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSBcImZvcm1EZWZpbml0aW9uU3RhdGVcIiskc2NvcGUuZmQubG9jYWxWYXJzLnRhc2tJZCskc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fdHlwZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlciA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0LGRlcGVuZGVudF9maWVsZCxcImZvcm1TYXZlZFwiLHVwZGF0ZV9wcmVzZW50YXRpb25faWQpO1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkPT11bmRlZmluZWQpIHNjb3BlLmZkPXt9O1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5QYXJhbWV0ZXJzPT11bmRlZmluZWQpIHNjb3BlLmZkLlBhcmFtZXRlcnM9e307XHJcbiAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuUGFyYW1ldGVycy5CYWNrZ3JvdW5kT3BhY2l0eT09bnVsbCB8fCBzY29wZS5mZC5QYXJhbWV0ZXJzLkJhY2tncm91bmRPcGFjaXR5PT11bmRlZmluZWQgKSBzY29wZS5mZC5QYXJhbWV0ZXJzLkJhY2tncm91bmRPcGFjaXR5PTE7XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0SGVscENlbnRlciAoS2F0YWx5b1N0YXRlTWFuYWdlcixTZXR0aW5nc1NlcnZpY2UsTWVzc2FnaW5nU2VydmljZSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXHJcbiAgICAgICAgICAgICBzY29wZTp7XHJcbiAgICAgICAgICAgICAgICAgICBoZWxwSWQgOiAnPScsXHJcbiAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA6ICc9PycsXHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuXHRcdFx0IGNvbnRyb2xsZXI6IGZ1bmN0aW9uICgkc2NvcGUpIHt9LFxyXG4gICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEhlbHBDZW50ZXIuaHRtbCcsXHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcclxuICAgICAgICAgICAgICAgIHNjb3BlLnNob3dIZWxwID0gZmFsc2VcclxuICAgICAgICAgICAgICAgIHNjb3BlLmtzbSA9IEthdGFseW9TdGF0ZU1hbmFnZXI7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXNjb3BlLnBvc2l0aW9uKSBzY29wZS5wb3NpdGlvbj0nZml4ZWQnXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy9nZXQgcGFnZSBieSBoZWxwSWRcclxuICAgICAgICAgICAgICAgIFNldHRpbmdzU2VydmljZS5nZXRIZWxwUGFnZShzY29wZS5oZWxwSWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnBhZ2VJZCA9IGRhdGE/LmRhdGE/LnBhZ2VpZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnBWZXIgPSBkYXRhPy5kYXRhPy5wYWdldlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnBhZ2VFbnZJZCA9IGRhdGE/LmRhdGE/LmVudmlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZXhlVXNlcklkID0gZGF0YT8uZGF0YT8uZXhldXNlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnBhZ2VNYXhXaWR0aCA9IGRhdGE/LmRhdGE/Lm1heHdpZHRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuc3RhdHVzQ29kZT1kYXRhLnN0YXR1c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnN0YXR1c0NvZGUgPSBlcnJvci5zdGF0dXNcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuc3RhdHVzQ29kZSE9NDA0KSBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgc2NvcGUuc2hvd0hpZGVIZWxwID0gZnVuY3Rpb24oc2hvdyl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzY29wZS5maXJzdENsaWNrKSBzY29wZS5maXJzdENsaWNrPXRydWVcclxuICAgICAgICAgICAgICAgICAgICBzY29wZS5zaG93SGVscCA9IHNob3dcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbn07XG4ndXNlIHN0cmljdCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3RJY29uUGlja2VyICgkdGltZW91dCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXHJcbiAgICAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbigkc2NvcGUpeyAgXHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmFsbEJ1dHRvbnM9WydidG4tcHJpbWFyeScsJ2J0bi1saWdodCcsJ2J0bi1kYXJrJywnYnRuLXN1Y2Nlc3MnLCdidG4tZGFuZ2VyJywnYnRuLWluZm8nLCdidG4td2FybmluZycsJ2J0bi1vdXRsaW5lLXByaW1hcnknLCdidG4tb3V0bGluZS1saWdodCcsJ2J0bi1vdXRsaW5lLWRhcmsnLCdidG4tb3V0bGluZS1zdWNjZXNzJywnYnRuLW91dGxpbmUtZGFuZ2VyJywnYnRuLW91dGxpbmUtaW5mbycsJ2J0bi1vdXRsaW5lLXdhcm5pbmcnLCdidG4tbGluayddO1xyXG4gICAgICAgICAgICAgICAgICRzY29wZS5pY29ucyA9ICBbe1wiZnVsbFwiOiBcImZhYiBmYS01MDBweFwiLFwic2hvcnR5XCI6IFwiNTAwcHhcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1hY2Nlc3NpYmxlLWljb25cIixcInNob3J0eVwiOiBcImFjY2Vzc2libGUtaWNvblwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWFjY3Vzb2Z0XCIsXCJzaG9ydHlcIjogXCJhY2N1c29mdFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWFkblwiLFwic2hvcnR5XCI6IFwiYWRuXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtYWR2ZXJzYWxcIixcInNob3J0eVwiOiBcImFkdmVyc2FsXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtYWZmaWxpYXRldGhlbWVcIixcInNob3J0eVwiOiBcImFmZmlsaWF0ZXRoZW1lXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtYWxnb2xpYVwiLFwic2hvcnR5XCI6IFwiYWxnb2xpYVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWFsaXBheVwiLFwic2hvcnR5XCI6IFwiYWxpcGF5XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtYW1hem9uXCIsXCJzaG9ydHlcIjogXCJhbWF6b25cIn0se1wiZnVsbFwiOiBcImZhYiBmYS1hbWF6b24tcGF5XCIsXCJzaG9ydHlcIjogXCJhbWF6b24tcGF5XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtYW1pbGlhXCIsXCJzaG9ydHlcIjogXCJhbWlsaWFcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1hbmRyb2lkXCIsXCJzaG9ydHlcIjogXCJhbmRyb2lkXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtYW5nZWxsaXN0XCIsXCJzaG9ydHlcIjogXCJhbmdlbGxpc3RcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1hbmdyeWNyZWF0aXZlXCIsXCJzaG9ydHlcIjogXCJhbmdyeWNyZWF0aXZlXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtYW5ndWxhclwiLFwic2hvcnR5XCI6IFwiYW5ndWxhclwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWFwcC1zdG9yZVwiLFwic2hvcnR5XCI6IFwiYXBwLXN0b3JlXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtYXBwLXN0b3JlLWlvc1wiLFwic2hvcnR5XCI6IFwiYXBwLXN0b3JlLWlvc1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWFwcGVyXCIsXCJzaG9ydHlcIjogXCJhcHBlclwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWFwcGxlXCIsXCJzaG9ydHlcIjogXCJhcHBsZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWFwcGxlLXBheVwiLFwic2hvcnR5XCI6IFwiYXBwbGUtcGF5XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtYXN5bW1ldHJpa1wiLFwic2hvcnR5XCI6IFwiYXN5bW1ldHJpa1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWF1ZGlibGVcIixcInNob3J0eVwiOiBcImF1ZGlibGVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1hdXRvcHJlZml4ZXJcIixcInNob3J0eVwiOiBcImF1dG9wcmVmaXhlclwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWF2aWFuZXhcIixcInNob3J0eVwiOiBcImF2aWFuZXhcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1hdmlhdG9cIixcInNob3J0eVwiOiBcImF2aWF0b1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWF3c1wiLFwic2hvcnR5XCI6IFwiYXdzXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtYmFuZGNhbXBcIixcInNob3J0eVwiOiBcImJhbmRjYW1wXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtYmVoYW5jZVwiLFwic2hvcnR5XCI6IFwiYmVoYW5jZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWJlaGFuY2Utc3F1YXJlXCIsXCJzaG9ydHlcIjogXCJiZWhhbmNlLXNxdWFyZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWJpbW9iamVjdFwiLFwic2hvcnR5XCI6IFwiYmltb2JqZWN0XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtYml0YnVja2V0XCIsXCJzaG9ydHlcIjogXCJiaXRidWNrZXRcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1iaXRjb2luXCIsXCJzaG9ydHlcIjogXCJiaXRjb2luXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtYml0eVwiLFwic2hvcnR5XCI6IFwiYml0eVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWJsYWNrLXRpZVwiLFwic2hvcnR5XCI6IFwiYmxhY2stdGllXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtYmxhY2tiZXJyeVwiLFwic2hvcnR5XCI6IFwiYmxhY2tiZXJyeVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWJsb2dnZXJcIixcInNob3J0eVwiOiBcImJsb2dnZXJcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1ibG9nZ2VyLWJcIixcInNob3J0eVwiOiBcImJsb2dnZXItYlwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWJsdWV0b290aFwiLFwic2hvcnR5XCI6IFwiYmx1ZXRvb3RoXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtYmx1ZXRvb3RoLWJcIixcInNob3J0eVwiOiBcImJsdWV0b290aC1iXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtYnRjXCIsXCJzaG9ydHlcIjogXCJidGNcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1idXJvbW9iZWxleHBlcnRlXCIsXCJzaG9ydHlcIjogXCJidXJvbW9iZWxleHBlcnRlXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtYnV5c2VsbGFkc1wiLFwic2hvcnR5XCI6IFwiYnV5c2VsbGFkc1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWNjLWFtYXpvbi1wYXlcIixcInNob3J0eVwiOiBcImNjLWFtYXpvbi1wYXlcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1jYy1hbWV4XCIsXCJzaG9ydHlcIjogXCJjYy1hbWV4XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtY2MtYXBwbGUtcGF5XCIsXCJzaG9ydHlcIjogXCJjYy1hcHBsZS1wYXlcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1jYy1kaW5lcnMtY2x1YlwiLFwic2hvcnR5XCI6IFwiY2MtZGluZXJzLWNsdWJcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1jYy1kaXNjb3ZlclwiLFwic2hvcnR5XCI6IFwiY2MtZGlzY292ZXJcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1jYy1qY2JcIixcInNob3J0eVwiOiBcImNjLWpjYlwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWNjLW1hc3RlcmNhcmRcIixcInNob3J0eVwiOiBcImNjLW1hc3RlcmNhcmRcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1jYy1wYXlwYWxcIixcInNob3J0eVwiOiBcImNjLXBheXBhbFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWNjLXN0cmlwZVwiLFwic2hvcnR5XCI6IFwiY2Mtc3RyaXBlXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtY2MtdmlzYVwiLFwic2hvcnR5XCI6IFwiY2MtdmlzYVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWNlbnRlcmNvZGVcIixcInNob3J0eVwiOiBcImNlbnRlcmNvZGVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1jaHJvbWVcIixcInNob3J0eVwiOiBcImNocm9tZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWNsb3Vkc2NhbGVcIixcInNob3J0eVwiOiBcImNsb3Vkc2NhbGVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1jbG91ZHNtaXRoXCIsXCJzaG9ydHlcIjogXCJjbG91ZHNtaXRoXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtY2xvdWR2ZXJzaWZ5XCIsXCJzaG9ydHlcIjogXCJjbG91ZHZlcnNpZnlcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1jb2RlcGVuXCIsXCJzaG9ydHlcIjogXCJjb2RlcGVuXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtY29kaWVwaWVcIixcInNob3J0eVwiOiBcImNvZGllcGllXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtY29ubmVjdGRldmVsb3BcIixcInNob3J0eVwiOiBcImNvbm5lY3RkZXZlbG9wXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtY29udGFvXCIsXCJzaG9ydHlcIjogXCJjb250YW9cIn0se1wiZnVsbFwiOiBcImZhYiBmYS1jcGFuZWxcIixcInNob3J0eVwiOiBcImNwYW5lbFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWNyZWF0aXZlLWNvbW1vbnNcIixcInNob3J0eVwiOiBcImNyZWF0aXZlLWNvbW1vbnNcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1jcmVhdGl2ZS1jb21tb25zLWJ5XCIsXCJzaG9ydHlcIjogXCJjcmVhdGl2ZS1jb21tb25zLWJ5XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtY3JlYXRpdmUtY29tbW9ucy1uY1wiLFwic2hvcnR5XCI6IFwiY3JlYXRpdmUtY29tbW9ucy1uY1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWNyZWF0aXZlLWNvbW1vbnMtbmMtZXVcIixcInNob3J0eVwiOiBcImNyZWF0aXZlLWNvbW1vbnMtbmMtZXVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1jcmVhdGl2ZS1jb21tb25zLW5jLWpwXCIsXCJzaG9ydHlcIjogXCJjcmVhdGl2ZS1jb21tb25zLW5jLWpwXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtY3JlYXRpdmUtY29tbW9ucy1uZFwiLFwic2hvcnR5XCI6IFwiY3JlYXRpdmUtY29tbW9ucy1uZFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWNyZWF0aXZlLWNvbW1vbnMtcGRcIixcInNob3J0eVwiOiBcImNyZWF0aXZlLWNvbW1vbnMtcGRcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1jcmVhdGl2ZS1jb21tb25zLXBkLWFsdFwiLFwic2hvcnR5XCI6IFwiY3JlYXRpdmUtY29tbW9ucy1wZC1hbHRcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1jcmVhdGl2ZS1jb21tb25zLXJlbWl4XCIsXCJzaG9ydHlcIjogXCJjcmVhdGl2ZS1jb21tb25zLXJlbWl4XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtY3JlYXRpdmUtY29tbW9ucy1zYVwiLFwic2hvcnR5XCI6IFwiY3JlYXRpdmUtY29tbW9ucy1zYVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWNyZWF0aXZlLWNvbW1vbnMtc2FtcGxpbmdcIixcInNob3J0eVwiOiBcImNyZWF0aXZlLWNvbW1vbnMtc2FtcGxpbmdcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1jcmVhdGl2ZS1jb21tb25zLXNhbXBsaW5nLXBsdXNcIixcInNob3J0eVwiOiBcImNyZWF0aXZlLWNvbW1vbnMtc2FtcGxpbmctcGx1c1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWNyZWF0aXZlLWNvbW1vbnMtc2hhcmVcIixcInNob3J0eVwiOiBcImNyZWF0aXZlLWNvbW1vbnMtc2hhcmVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1jc3MzXCIsXCJzaG9ydHlcIjogXCJjc3MzXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtY3NzMy1hbHRcIixcInNob3J0eVwiOiBcImNzczMtYWx0XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtY3V0dGxlZmlzaFwiLFwic2hvcnR5XCI6IFwiY3V0dGxlZmlzaFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWQtYW5kLWRcIixcInNob3J0eVwiOiBcImQtYW5kLWRcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1kYXNoY3ViZVwiLFwic2hvcnR5XCI6IFwiZGFzaGN1YmVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1kZWxpY2lvdXNcIixcInNob3J0eVwiOiBcImRlbGljaW91c1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWRlcGxveWRvZ1wiLFwic2hvcnR5XCI6IFwiZGVwbG95ZG9nXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZGVza3Byb1wiLFwic2hvcnR5XCI6IFwiZGVza3Byb1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWRldmlhbnRhcnRcIixcInNob3J0eVwiOiBcImRldmlhbnRhcnRcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1kaWdnXCIsXCJzaG9ydHlcIjogXCJkaWdnXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZGlnaXRhbC1vY2VhblwiLFwic2hvcnR5XCI6IFwiZGlnaXRhbC1vY2VhblwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWRpc2NvcmRcIixcInNob3J0eVwiOiBcImRpc2NvcmRcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1kaXNjb3Vyc2VcIixcInNob3J0eVwiOiBcImRpc2NvdXJzZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWRvY2h1YlwiLFwic2hvcnR5XCI6IFwiZG9jaHViXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZG9ja2VyXCIsXCJzaG9ydHlcIjogXCJkb2NrZXJcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1kcmFmdDJkaWdpdGFsXCIsXCJzaG9ydHlcIjogXCJkcmFmdDJkaWdpdGFsXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZHJpYmJibGVcIixcInNob3J0eVwiOiBcImRyaWJiYmxlXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZHJpYmJibGUtc3F1YXJlXCIsXCJzaG9ydHlcIjogXCJkcmliYmJsZS1zcXVhcmVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1kcm9wYm94XCIsXCJzaG9ydHlcIjogXCJkcm9wYm94XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZHJ1cGFsXCIsXCJzaG9ydHlcIjogXCJkcnVwYWxcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1keWFsb2dcIixcInNob3J0eVwiOiBcImR5YWxvZ1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWVhcmx5YmlyZHNcIixcInNob3J0eVwiOiBcImVhcmx5YmlyZHNcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1lYmF5XCIsXCJzaG9ydHlcIjogXCJlYmF5XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZWRnZVwiLFwic2hvcnR5XCI6IFwiZWRnZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWVsZW1lbnRvclwiLFwic2hvcnR5XCI6IFwiZWxlbWVudG9yXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZWxsb1wiLFwic2hvcnR5XCI6IFwiZWxsb1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWVtYmVyXCIsXCJzaG9ydHlcIjogXCJlbWJlclwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWVtcGlyZVwiLFwic2hvcnR5XCI6IFwiZW1waXJlXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZW52aXJhXCIsXCJzaG9ydHlcIjogXCJlbnZpcmFcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1lcmxhbmdcIixcInNob3J0eVwiOiBcImVybGFuZ1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWV0aGVyZXVtXCIsXCJzaG9ydHlcIjogXCJldGhlcmV1bVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWV0c3lcIixcInNob3J0eVwiOiBcImV0c3lcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1leHBlZGl0ZWRzc2xcIixcInNob3J0eVwiOiBcImV4cGVkaXRlZHNzbFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWZhY2Vib29rXCIsXCJzaG9ydHlcIjogXCJmYWNlYm9va1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWZhY2Vib29rLWZcIixcInNob3J0eVwiOiBcImZhY2Vib29rLWZcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1mYWNlYm9vay1tZXNzZW5nZXJcIixcInNob3J0eVwiOiBcImZhY2Vib29rLW1lc3NlbmdlclwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWZhY2Vib29rLXNxdWFyZVwiLFwic2hvcnR5XCI6IFwiZmFjZWJvb2stc3F1YXJlXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZmlyZWZveFwiLFwic2hvcnR5XCI6IFwiZmlyZWZveFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWZpcnN0LW9yZGVyXCIsXCJzaG9ydHlcIjogXCJmaXJzdC1vcmRlclwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWZpcnN0LW9yZGVyLWFsdFwiLFwic2hvcnR5XCI6IFwiZmlyc3Qtb3JkZXItYWx0XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZmlyc3RkcmFmdFwiLFwic2hvcnR5XCI6IFwiZmlyc3RkcmFmdFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWZsaWNrclwiLFwic2hvcnR5XCI6IFwiZmxpY2tyXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZmxpcGJvYXJkXCIsXCJzaG9ydHlcIjogXCJmbGlwYm9hcmRcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1mbHlcIixcInNob3J0eVwiOiBcImZseVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWZvbnQtYXdlc29tZVwiLFwic2hvcnR5XCI6IFwiZm9udC1hd2Vzb21lXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZm9udC1hd2Vzb21lLWFsdFwiLFwic2hvcnR5XCI6IFwiZm9udC1hd2Vzb21lLWFsdFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWZvbnQtYXdlc29tZS1mbGFnXCIsXCJzaG9ydHlcIjogXCJmb250LWF3ZXNvbWUtZmxhZ1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWZvbnRpY29uc1wiLFwic2hvcnR5XCI6IFwiZm9udGljb25zXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZm9udGljb25zLWZpXCIsXCJzaG9ydHlcIjogXCJmb250aWNvbnMtZmlcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1mb3J0LWF3ZXNvbWVcIixcInNob3J0eVwiOiBcImZvcnQtYXdlc29tZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWZvcnQtYXdlc29tZS1hbHRcIixcInNob3J0eVwiOiBcImZvcnQtYXdlc29tZS1hbHRcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1mb3J1bWJlZVwiLFwic2hvcnR5XCI6IFwiZm9ydW1iZWVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1mb3Vyc3F1YXJlXCIsXCJzaG9ydHlcIjogXCJmb3Vyc3F1YXJlXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZnJlZS1jb2RlLWNhbXBcIixcInNob3J0eVwiOiBcImZyZWUtY29kZS1jYW1wXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZnJlZWJzZFwiLFwic2hvcnR5XCI6IFwiZnJlZWJzZFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWZ1bGNydW1cIixcInNob3J0eVwiOiBcImZ1bGNydW1cIn0se1wiZnVsbFwiOiBcImZhYiBmYS1nYWxhY3RpYy1yZXB1YmxpY1wiLFwic2hvcnR5XCI6IFwiZ2FsYWN0aWMtcmVwdWJsaWNcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1nYWxhY3RpYy1zZW5hdGVcIixcInNob3J0eVwiOiBcImdhbGFjdGljLXNlbmF0ZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWdldC1wb2NrZXRcIixcInNob3J0eVwiOiBcImdldC1wb2NrZXRcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1nZ1wiLFwic2hvcnR5XCI6IFwiZ2dcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1nZy1jaXJjbGVcIixcInNob3J0eVwiOiBcImdnLWNpcmNsZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWdpdFwiLFwic2hvcnR5XCI6IFwiZ2l0XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZ2l0LXNxdWFyZVwiLFwic2hvcnR5XCI6IFwiZ2l0LXNxdWFyZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWdpdGh1YlwiLFwic2hvcnR5XCI6IFwiZ2l0aHViXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZ2l0aHViLWFsdFwiLFwic2hvcnR5XCI6IFwiZ2l0aHViLWFsdFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWdpdGh1Yi1zcXVhcmVcIixcInNob3J0eVwiOiBcImdpdGh1Yi1zcXVhcmVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1naXRrcmFrZW5cIixcInNob3J0eVwiOiBcImdpdGtyYWtlblwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWdpdGxhYlwiLFwic2hvcnR5XCI6IFwiZ2l0bGFiXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZ2l0dGVyXCIsXCJzaG9ydHlcIjogXCJnaXR0ZXJcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1nbGlkZVwiLFwic2hvcnR5XCI6IFwiZ2xpZGVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1nbGlkZS1nXCIsXCJzaG9ydHlcIjogXCJnbGlkZS1nXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZ29mb3JlXCIsXCJzaG9ydHlcIjogXCJnb2ZvcmVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1nb29kcmVhZHNcIixcInNob3J0eVwiOiBcImdvb2RyZWFkc1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWdvb2RyZWFkcy1nXCIsXCJzaG9ydHlcIjogXCJnb29kcmVhZHMtZ1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWdvb2dsZVwiLFwic2hvcnR5XCI6IFwiZ29vZ2xlXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZ29vZ2xlLWRyaXZlXCIsXCJzaG9ydHlcIjogXCJnb29nbGUtZHJpdmVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1nb29nbGUtcGxheVwiLFwic2hvcnR5XCI6IFwiZ29vZ2xlLXBsYXlcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1nb29nbGUtcGx1c1wiLFwic2hvcnR5XCI6IFwiZ29vZ2xlLXBsdXNcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1nb29nbGUtcGx1cy1nXCIsXCJzaG9ydHlcIjogXCJnb29nbGUtcGx1cy1nXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZ29vZ2xlLXBsdXMtc3F1YXJlXCIsXCJzaG9ydHlcIjogXCJnb29nbGUtcGx1cy1zcXVhcmVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1nb29nbGUtd2FsbGV0XCIsXCJzaG9ydHlcIjogXCJnb29nbGUtd2FsbGV0XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZ3JhdGlwYXlcIixcInNob3J0eVwiOiBcImdyYXRpcGF5XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtZ3JhdlwiLFwic2hvcnR5XCI6IFwiZ3JhdlwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWdyaXBmaXJlXCIsXCJzaG9ydHlcIjogXCJncmlwZmlyZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWdydW50XCIsXCJzaG9ydHlcIjogXCJncnVudFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWd1bHBcIixcInNob3J0eVwiOiBcImd1bHBcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1oYWNrZXItbmV3c1wiLFwic2hvcnR5XCI6IFwiaGFja2VyLW5ld3NcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1oYWNrZXItbmV3cy1zcXVhcmVcIixcInNob3J0eVwiOiBcImhhY2tlci1uZXdzLXNxdWFyZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWhhY2tlcnJhbmtcIixcInNob3J0eVwiOiBcImhhY2tlcnJhbmtcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1oaXBzXCIsXCJzaG9ydHlcIjogXCJoaXBzXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtaGlyZS1hLWhlbHBlclwiLFwic2hvcnR5XCI6IFwiaGlyZS1hLWhlbHBlclwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWhvb2xpXCIsXCJzaG9ydHlcIjogXCJob29saVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWhvcm5iaWxsXCIsXCJzaG9ydHlcIjogXCJob3JuYmlsbFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWhvdGphclwiLFwic2hvcnR5XCI6IFwiaG90amFyXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtaG91enpcIixcInNob3J0eVwiOiBcImhvdXp6XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtaHRtbDVcIixcInNob3J0eVwiOiBcImh0bWw1XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtaHVic3BvdFwiLFwic2hvcnR5XCI6IFwiaHVic3BvdFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWltZGJcIixcInNob3J0eVwiOiBcImltZGJcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1pbnN0YWdyYW1cIixcInNob3J0eVwiOiBcImluc3RhZ3JhbVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWludGVybmV0LWV4cGxvcmVyXCIsXCJzaG9ydHlcIjogXCJpbnRlcm5ldC1leHBsb3JlclwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWlveGhvc3RcIixcInNob3J0eVwiOiBcImlveGhvc3RcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1pdHVuZXNcIixcInNob3J0eVwiOiBcIml0dW5lc1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWl0dW5lcy1ub3RlXCIsXCJzaG9ydHlcIjogXCJpdHVuZXMtbm90ZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWphdmFcIixcInNob3J0eVwiOiBcImphdmFcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1qZWRpLW9yZGVyXCIsXCJzaG9ydHlcIjogXCJqZWRpLW9yZGVyXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtamVua2luc1wiLFwic2hvcnR5XCI6IFwiamVua2luc1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWpvZ2V0XCIsXCJzaG9ydHlcIjogXCJqb2dldFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWpvb21sYVwiLFwic2hvcnR5XCI6IFwiam9vbWxhXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtanNcIixcInNob3J0eVwiOiBcImpzXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtanMtc3F1YXJlXCIsXCJzaG9ydHlcIjogXCJqcy1zcXVhcmVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1qc2ZpZGRsZVwiLFwic2hvcnR5XCI6IFwianNmaWRkbGVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1rYWdnbGVcIixcInNob3J0eVwiOiBcImthZ2dsZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWtleWJhc2VcIixcInNob3J0eVwiOiBcImtleWJhc2VcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1rZXljZG5cIixcInNob3J0eVwiOiBcImtleWNkblwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWtpY2tzdGFydGVyXCIsXCJzaG9ydHlcIjogXCJraWNrc3RhcnRlclwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWtpY2tzdGFydGVyLWtcIixcInNob3J0eVwiOiBcImtpY2tzdGFydGVyLWtcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1rb3J2dWVcIixcInNob3J0eVwiOiBcImtvcnZ1ZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWxhcmF2ZWxcIixcInNob3J0eVwiOiBcImxhcmF2ZWxcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1sYXN0Zm1cIixcInNob3J0eVwiOiBcImxhc3RmbVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWxhc3RmbS1zcXVhcmVcIixcInNob3J0eVwiOiBcImxhc3RmbS1zcXVhcmVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1sZWFucHViXCIsXCJzaG9ydHlcIjogXCJsZWFucHViXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtbGVzc1wiLFwic2hvcnR5XCI6IFwibGVzc1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWxpbmVcIixcInNob3J0eVwiOiBcImxpbmVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1saW5rZWRpblwiLFwic2hvcnR5XCI6IFwibGlua2VkaW5cIn0se1wiZnVsbFwiOiBcImZhYiBmYS1saW5rZWRpbi1pblwiLFwic2hvcnR5XCI6IFwibGlua2VkaW4taW5cIn0se1wiZnVsbFwiOiBcImZhYiBmYS1saW5vZGVcIixcInNob3J0eVwiOiBcImxpbm9kZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWxpbnV4XCIsXCJzaG9ydHlcIjogXCJsaW51eFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLWx5ZnRcIixcInNob3J0eVwiOiBcImx5ZnRcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1tYWdlbnRvXCIsXCJzaG9ydHlcIjogXCJtYWdlbnRvXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtbWFpbGNoaW1wXCIsXCJzaG9ydHlcIjogXCJtYWlsY2hpbXBcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1tYW5kYWxvcmlhblwiLFwic2hvcnR5XCI6IFwibWFuZGFsb3JpYW5cIn0se1wiZnVsbFwiOiBcImZhYiBmYS1tYXJrZG93blwiLFwic2hvcnR5XCI6IFwibWFya2Rvd25cIn0se1wiZnVsbFwiOiBcImZhYiBmYS1tYXN0b2RvblwiLFwic2hvcnR5XCI6IFwibWFzdG9kb25cIn0se1wiZnVsbFwiOiBcImZhYiBmYS1tYXhjZG5cIixcInNob3J0eVwiOiBcIm1heGNkblwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLW1lZGFwcHNcIixcInNob3J0eVwiOiBcIm1lZGFwcHNcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1tZWRpdW1cIixcInNob3J0eVwiOiBcIm1lZGl1bVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLW1lZGl1bS1tXCIsXCJzaG9ydHlcIjogXCJtZWRpdW0tbVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLW1lZHJ0XCIsXCJzaG9ydHlcIjogXCJtZWRydFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLW1lZXR1cFwiLFwic2hvcnR5XCI6IFwibWVldHVwXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtbWVnYXBvcnRcIixcInNob3J0eVwiOiBcIm1lZ2Fwb3J0XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtbWljcm9zb2Z0XCIsXCJzaG9ydHlcIjogXCJtaWNyb3NvZnRcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1taXhcIixcInNob3J0eVwiOiBcIm1peFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLW1peGNsb3VkXCIsXCJzaG9ydHlcIjogXCJtaXhjbG91ZFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLW1penVuaVwiLFwic2hvcnR5XCI6IFwibWl6dW5pXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtbW9keFwiLFwic2hvcnR5XCI6IFwibW9keFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLW1vbmVyb1wiLFwic2hvcnR5XCI6IFwibW9uZXJvXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtbmFwc3RlclwiLFwic2hvcnR5XCI6IFwibmFwc3RlclwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLW5lb3NcIixcInNob3J0eVwiOiBcIm5lb3NcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1uaW1ibHJcIixcInNob3J0eVwiOiBcIm5pbWJsclwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLW5pbnRlbmRvLXN3aXRjaFwiLFwic2hvcnR5XCI6IFwibmludGVuZG8tc3dpdGNoXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtbm9kZVwiLFwic2hvcnR5XCI6IFwibm9kZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLW5vZGUtanNcIixcInNob3J0eVwiOiBcIm5vZGUtanNcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1ucG1cIixcInNob3J0eVwiOiBcIm5wbVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLW5zOFwiLFwic2hvcnR5XCI6IFwibnM4XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtbnV0cml0aW9uaXhcIixcInNob3J0eVwiOiBcIm51dHJpdGlvbml4XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtb2Rub2tsYXNzbmlraVwiLFwic2hvcnR5XCI6IFwib2Rub2tsYXNzbmlraVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLW9kbm9rbGFzc25pa2ktc3F1YXJlXCIsXCJzaG9ydHlcIjogXCJvZG5va2xhc3NuaWtpLXNxdWFyZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLW9sZC1yZXB1YmxpY1wiLFwic2hvcnR5XCI6IFwib2xkLXJlcHVibGljXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtb3BlbmNhcnRcIixcInNob3J0eVwiOiBcIm9wZW5jYXJ0XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtb3BlbmlkXCIsXCJzaG9ydHlcIjogXCJvcGVuaWRcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1vcGVyYVwiLFwic2hvcnR5XCI6IFwib3BlcmFcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1vcHRpbi1tb25zdGVyXCIsXCJzaG9ydHlcIjogXCJvcHRpbi1tb25zdGVyXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtb3NpXCIsXCJzaG9ydHlcIjogXCJvc2lcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1wYWdlNFwiLFwic2hvcnR5XCI6IFwicGFnZTRcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1wYWdlbGluZXNcIixcInNob3J0eVwiOiBcInBhZ2VsaW5lc1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXBhbGZlZFwiLFwic2hvcnR5XCI6IFwicGFsZmVkXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtcGF0cmVvblwiLFwic2hvcnR5XCI6IFwicGF0cmVvblwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXBheXBhbFwiLFwic2hvcnR5XCI6IFwicGF5cGFsXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtcGVyaXNjb3BlXCIsXCJzaG9ydHlcIjogXCJwZXJpc2NvcGVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1waGFicmljYXRvclwiLFwic2hvcnR5XCI6IFwicGhhYnJpY2F0b3JcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1waG9lbml4LWZyYW1ld29ya1wiLFwic2hvcnR5XCI6IFwicGhvZW5peC1mcmFtZXdvcmtcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1waG9lbml4LXNxdWFkcm9uXCIsXCJzaG9ydHlcIjogXCJwaG9lbml4LXNxdWFkcm9uXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtcGhwXCIsXCJzaG9ydHlcIjogXCJwaHBcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1waWVkLXBpcGVyXCIsXCJzaG9ydHlcIjogXCJwaWVkLXBpcGVyXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtcGllZC1waXBlci1hbHRcIixcInNob3J0eVwiOiBcInBpZWQtcGlwZXItYWx0XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtcGllZC1waXBlci1oYXRcIixcInNob3J0eVwiOiBcInBpZWQtcGlwZXItaGF0XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtcGllZC1waXBlci1wcFwiLFwic2hvcnR5XCI6IFwicGllZC1waXBlci1wcFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXBpbnRlcmVzdFwiLFwic2hvcnR5XCI6IFwicGludGVyZXN0XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtcGludGVyZXN0LXBcIixcInNob3J0eVwiOiBcInBpbnRlcmVzdC1wXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtcGludGVyZXN0LXNxdWFyZVwiLFwic2hvcnR5XCI6IFwicGludGVyZXN0LXNxdWFyZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXBsYXlzdGF0aW9uXCIsXCJzaG9ydHlcIjogXCJwbGF5c3RhdGlvblwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXByb2R1Y3QtaHVudFwiLFwic2hvcnR5XCI6IFwicHJvZHVjdC1odW50XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtcHVzaGVkXCIsXCJzaG9ydHlcIjogXCJwdXNoZWRcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1weXRob25cIixcInNob3J0eVwiOiBcInB5dGhvblwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXFxXCIsXCJzaG9ydHlcIjogXCJxcVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXF1aW5zY2FwZVwiLFwic2hvcnR5XCI6IFwicXVpbnNjYXBlXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtcXVvcmFcIixcInNob3J0eVwiOiBcInF1b3JhXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtci1wcm9qZWN0XCIsXCJzaG9ydHlcIjogXCJyLXByb2plY3RcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1yYXZlbHJ5XCIsXCJzaG9ydHlcIjogXCJyYXZlbHJ5XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtcmVhY3RcIixcInNob3J0eVwiOiBcInJlYWN0XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtcmVhZG1lXCIsXCJzaG9ydHlcIjogXCJyZWFkbWVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1yZWJlbFwiLFwic2hvcnR5XCI6IFwicmViZWxcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1yZWQtcml2ZXJcIixcInNob3J0eVwiOiBcInJlZC1yaXZlclwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXJlZGRpdFwiLFwic2hvcnR5XCI6IFwicmVkZGl0XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtcmVkZGl0LWFsaWVuXCIsXCJzaG9ydHlcIjogXCJyZWRkaXQtYWxpZW5cIn0se1wiZnVsbFwiOiBcImZhYiBmYS1yZWRkaXQtc3F1YXJlXCIsXCJzaG9ydHlcIjogXCJyZWRkaXQtc3F1YXJlXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtcmVuZGFjdFwiLFwic2hvcnR5XCI6IFwicmVuZGFjdFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXJlbnJlblwiLFwic2hvcnR5XCI6IFwicmVucmVuXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtcmVwbHlkXCIsXCJzaG9ydHlcIjogXCJyZXBseWRcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1yZXNlYXJjaGdhdGVcIixcInNob3J0eVwiOiBcInJlc2VhcmNoZ2F0ZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXJlc29sdmluZ1wiLFwic2hvcnR5XCI6IFwicmVzb2x2aW5nXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtcmV2XCIsXCJzaG9ydHlcIjogXCJyZXZcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1yb2NrZXRjaGF0XCIsXCJzaG9ydHlcIjogXCJyb2NrZXRjaGF0XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtcm9ja3Jtc1wiLFwic2hvcnR5XCI6IFwicm9ja3Jtc1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXNhZmFyaVwiLFwic2hvcnR5XCI6IFwic2FmYXJpXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtc2Fzc1wiLFwic2hvcnR5XCI6IFwic2Fzc1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXNjaGxpeFwiLFwic2hvcnR5XCI6IFwic2NobGl4XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtc2NyaWJkXCIsXCJzaG9ydHlcIjogXCJzY3JpYmRcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1zZWFyY2hlbmdpblwiLFwic2hvcnR5XCI6IFwic2VhcmNoZW5naW5cIn0se1wiZnVsbFwiOiBcImZhYiBmYS1zZWxsY2FzdFwiLFwic2hvcnR5XCI6IFwic2VsbGNhc3RcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1zZWxsc3lcIixcInNob3J0eVwiOiBcInNlbGxzeVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXNlcnZpY2VzdGFja1wiLFwic2hvcnR5XCI6IFwic2VydmljZXN0YWNrXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtc2hpcnRzaW5idWxrXCIsXCJzaG9ydHlcIjogXCJzaGlydHNpbmJ1bGtcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1zaG9wd2FyZVwiLFwic2hvcnR5XCI6IFwic2hvcHdhcmVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1zaW1wbHlidWlsdFwiLFwic2hvcnR5XCI6IFwic2ltcGx5YnVpbHRcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1zaXN0cml4XCIsXCJzaG9ydHlcIjogXCJzaXN0cml4XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtc2l0aFwiLFwic2hvcnR5XCI6IFwic2l0aFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXNreWF0bGFzXCIsXCJzaG9ydHlcIjogXCJza3lhdGxhc1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXNreXBlXCIsXCJzaG9ydHlcIjogXCJza3lwZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXNsYWNrXCIsXCJzaG9ydHlcIjogXCJzbGFja1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXNsYWNrLWhhc2hcIixcInNob3J0eVwiOiBcInNsYWNrLWhhc2hcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1zbGlkZXNoYXJlXCIsXCJzaG9ydHlcIjogXCJzbGlkZXNoYXJlXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtc25hcGNoYXRcIixcInNob3J0eVwiOiBcInNuYXBjaGF0XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtc25hcGNoYXQtZ2hvc3RcIixcInNob3J0eVwiOiBcInNuYXBjaGF0LWdob3N0XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtc25hcGNoYXQtc3F1YXJlXCIsXCJzaG9ydHlcIjogXCJzbmFwY2hhdC1zcXVhcmVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1zb3VuZGNsb3VkXCIsXCJzaG9ydHlcIjogXCJzb3VuZGNsb3VkXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtc3BlYWthcFwiLFwic2hvcnR5XCI6IFwic3BlYWthcFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXNwb3RpZnlcIixcInNob3J0eVwiOiBcInNwb3RpZnlcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1zcXVhcmVzcGFjZVwiLFwic2hvcnR5XCI6IFwic3F1YXJlc3BhY2VcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1zdGFjay1leGNoYW5nZVwiLFwic2hvcnR5XCI6IFwic3RhY2stZXhjaGFuZ2VcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1zdGFjay1vdmVyZmxvd1wiLFwic2hvcnR5XCI6IFwic3RhY2stb3ZlcmZsb3dcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1zdGF5bGlua2VkXCIsXCJzaG9ydHlcIjogXCJzdGF5bGlua2VkXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtc3RlYW1cIixcInNob3J0eVwiOiBcInN0ZWFtXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtc3RlYW0tc3F1YXJlXCIsXCJzaG9ydHlcIjogXCJzdGVhbS1zcXVhcmVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1zdGVhbS1zeW1ib2xcIixcInNob3J0eVwiOiBcInN0ZWFtLXN5bWJvbFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXN0aWNrZXItbXVsZVwiLFwic2hvcnR5XCI6IFwic3RpY2tlci1tdWxlXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtc3RyYXZhXCIsXCJzaG9ydHlcIjogXCJzdHJhdmFcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1zdHJpcGVcIixcInNob3J0eVwiOiBcInN0cmlwZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXN0cmlwZS1zXCIsXCJzaG9ydHlcIjogXCJzdHJpcGUtc1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXN0dWRpb3ZpbmFyaVwiLFwic2hvcnR5XCI6IFwic3R1ZGlvdmluYXJpXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtc3R1bWJsZXVwb25cIixcInNob3J0eVwiOiBcInN0dW1ibGV1cG9uXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtc3R1bWJsZXVwb24tY2lyY2xlXCIsXCJzaG9ydHlcIjogXCJzdHVtYmxldXBvbi1jaXJjbGVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1zdXBlcnBvd2Vyc1wiLFwic2hvcnR5XCI6IFwic3VwZXJwb3dlcnNcIn0se1wiZnVsbFwiOiBcImZhYiBmYS1zdXBwbGVcIixcInNob3J0eVwiOiBcInN1cHBsZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXRlYW1zcGVha1wiLFwic2hvcnR5XCI6IFwidGVhbXNwZWFrXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtdGVsZWdyYW1cIixcInNob3J0eVwiOiBcInRlbGVncmFtXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtdGVsZWdyYW0tcGxhbmVcIixcInNob3J0eVwiOiBcInRlbGVncmFtLXBsYW5lXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtdGVuY2VudC13ZWlib1wiLFwic2hvcnR5XCI6IFwidGVuY2VudC13ZWlib1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXRoZS1yZWQteWV0aVwiLFwic2hvcnR5XCI6IFwidGhlLXJlZC15ZXRpXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtdGhlbWVjb1wiLFwic2hvcnR5XCI6IFwidGhlbWVjb1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXRoZW1laXNsZVwiLFwic2hvcnR5XCI6IFwidGhlbWVpc2xlXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtdHJhZGUtZmVkZXJhdGlvblwiLFwic2hvcnR5XCI6IFwidHJhZGUtZmVkZXJhdGlvblwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXRyZWxsb1wiLFwic2hvcnR5XCI6IFwidHJlbGxvXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtdHJpcGFkdmlzb3JcIixcInNob3J0eVwiOiBcInRyaXBhZHZpc29yXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtdHVtYmxyXCIsXCJzaG9ydHlcIjogXCJ0dW1ibHJcIn0se1wiZnVsbFwiOiBcImZhYiBmYS10dW1ibHItc3F1YXJlXCIsXCJzaG9ydHlcIjogXCJ0dW1ibHItc3F1YXJlXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtdHdpdGNoXCIsXCJzaG9ydHlcIjogXCJ0d2l0Y2hcIn0se1wiZnVsbFwiOiBcImZhYiBmYS10d2l0dGVyXCIsXCJzaG9ydHlcIjogXCJ0d2l0dGVyXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtdHdpdHRlci1zcXVhcmVcIixcInNob3J0eVwiOiBcInR3aXR0ZXItc3F1YXJlXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtdHlwbzNcIixcInNob3J0eVwiOiBcInR5cG8zXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtdWJlclwiLFwic2hvcnR5XCI6IFwidWJlclwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXVpa2l0XCIsXCJzaG9ydHlcIjogXCJ1aWtpdFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXVuaXJlZ2lzdHJ5XCIsXCJzaG9ydHlcIjogXCJ1bmlyZWdpc3RyeVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXVudGFwcGRcIixcInNob3J0eVwiOiBcInVudGFwcGRcIn0se1wiZnVsbFwiOiBcImZhYiBmYS11c2JcIixcInNob3J0eVwiOiBcInVzYlwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXVzc3VubmFoXCIsXCJzaG9ydHlcIjogXCJ1c3N1bm5haFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXZhYWRpblwiLFwic2hvcnR5XCI6IFwidmFhZGluXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtdmlhY29pblwiLFwic2hvcnR5XCI6IFwidmlhY29pblwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXZpYWRlb1wiLFwic2hvcnR5XCI6IFwidmlhZGVvXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtdmlhZGVvLXNxdWFyZVwiLFwic2hvcnR5XCI6IFwidmlhZGVvLXNxdWFyZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXZpYmVyXCIsXCJzaG9ydHlcIjogXCJ2aWJlclwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXZpbWVvXCIsXCJzaG9ydHlcIjogXCJ2aW1lb1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXZpbWVvLXNxdWFyZVwiLFwic2hvcnR5XCI6IFwidmltZW8tc3F1YXJlXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtdmltZW8tdlwiLFwic2hvcnR5XCI6IFwidmltZW8tdlwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXZpbmVcIixcInNob3J0eVwiOiBcInZpbmVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS12a1wiLFwic2hvcnR5XCI6IFwidmtcIn0se1wiZnVsbFwiOiBcImZhYiBmYS12bnZcIixcInNob3J0eVwiOiBcInZudlwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXZ1ZWpzXCIsXCJzaG9ydHlcIjogXCJ2dWVqc1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXdlZWJseVwiLFwic2hvcnR5XCI6IFwid2VlYmx5XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtd2VpYm9cIixcInNob3J0eVwiOiBcIndlaWJvXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtd2VpeGluXCIsXCJzaG9ydHlcIjogXCJ3ZWl4aW5cIn0se1wiZnVsbFwiOiBcImZhYiBmYS13aGF0c2FwcFwiLFwic2hvcnR5XCI6IFwid2hhdHNhcHBcIn0se1wiZnVsbFwiOiBcImZhYiBmYS13aGF0c2FwcC1zcXVhcmVcIixcInNob3J0eVwiOiBcIndoYXRzYXBwLXNxdWFyZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXdobWNzXCIsXCJzaG9ydHlcIjogXCJ3aG1jc1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXdpa2lwZWRpYS13XCIsXCJzaG9ydHlcIjogXCJ3aWtpcGVkaWEtd1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXdpbmRvd3NcIixcInNob3J0eVwiOiBcIndpbmRvd3NcIn0se1wiZnVsbFwiOiBcImZhYiBmYS13aXhcIixcInNob3J0eVwiOiBcIndpeFwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXdvbGYtcGFjay1iYXR0YWxpb25cIixcInNob3J0eVwiOiBcIndvbGYtcGFjay1iYXR0YWxpb25cIn0se1wiZnVsbFwiOiBcImZhYiBmYS13b3JkcHJlc3NcIixcInNob3J0eVwiOiBcIndvcmRwcmVzc1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXdvcmRwcmVzcy1zaW1wbGVcIixcInNob3J0eVwiOiBcIndvcmRwcmVzcy1zaW1wbGVcIn0se1wiZnVsbFwiOiBcImZhYiBmYS13cGJlZ2lubmVyXCIsXCJzaG9ydHlcIjogXCJ3cGJlZ2lubmVyXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEtd3BleHBsb3JlclwiLFwic2hvcnR5XCI6IFwid3BleHBsb3JlclwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXdwZm9ybXNcIixcInNob3J0eVwiOiBcIndwZm9ybXNcIn0se1wiZnVsbFwiOiBcImZhYiBmYS14Ym94XCIsXCJzaG9ydHlcIjogXCJ4Ym94XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEteGluZ1wiLFwic2hvcnR5XCI6IFwieGluZ1wifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXhpbmctc3F1YXJlXCIsXCJzaG9ydHlcIjogXCJ4aW5nLXNxdWFyZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXktY29tYmluYXRvclwiLFwic2hvcnR5XCI6IFwieS1jb21iaW5hdG9yXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEteWFob29cIixcInNob3J0eVwiOiBcInlhaG9vXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEteWFuZGV4XCIsXCJzaG9ydHlcIjogXCJ5YW5kZXhcIn0se1wiZnVsbFwiOiBcImZhYiBmYS15YW5kZXgtaW50ZXJuYXRpb25hbFwiLFwic2hvcnR5XCI6IFwieWFuZGV4LWludGVybmF0aW9uYWxcIn0se1wiZnVsbFwiOiBcImZhYiBmYS15ZWxwXCIsXCJzaG9ydHlcIjogXCJ5ZWxwXCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEteW9hc3RcIixcInNob3J0eVwiOiBcInlvYXN0XCJ9LHtcImZ1bGxcIjogXCJmYWIgZmEteW91dHViZVwiLFwic2hvcnR5XCI6IFwieW91dHViZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXlvdXR1YmUtc3F1YXJlXCIsXCJzaG9ydHlcIjogXCJ5b3V0dWJlLXNxdWFyZVwifSx7XCJmdWxsXCI6IFwiZmFiIGZhLXpoaWh1XCIsXCJzaG9ydHlcIjogXCJ6aGlodVwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWFkZHJlc3MtYm9va1wiLFwic2hvcnR5XCI6IFwiYWRkcmVzcy1ib29rXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtYWRkcmVzcy1jYXJkXCIsXCJzaG9ydHlcIjogXCJhZGRyZXNzLWNhcmRcIn0se1wiZnVsbFwiOiBcImZhciBmYS1hbmdyeVwiLFwic2hvcnR5XCI6IFwiYW5ncnlcIn0se1wiZnVsbFwiOiBcImZhciBmYS1hcnJvdy1hbHQtY2lyY2xlLWRvd25cIixcInNob3J0eVwiOiBcImFycm93LWFsdC1jaXJjbGUtZG93blwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWFycm93LWFsdC1jaXJjbGUtbGVmdFwiLFwic2hvcnR5XCI6IFwiYXJyb3ctYWx0LWNpcmNsZS1sZWZ0XCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtYXJyb3ctYWx0LWNpcmNsZS1yaWdodFwiLFwic2hvcnR5XCI6IFwiYXJyb3ctYWx0LWNpcmNsZS1yaWdodFwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWFycm93LWFsdC1jaXJjbGUtdXBcIixcInNob3J0eVwiOiBcImFycm93LWFsdC1jaXJjbGUtdXBcIn0se1wiZnVsbFwiOiBcImZhciBmYS1iZWxsXCIsXCJzaG9ydHlcIjogXCJiZWxsXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtYmVsbC1zbGFzaFwiLFwic2hvcnR5XCI6IFwiYmVsbC1zbGFzaFwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWJvb2ttYXJrXCIsXCJzaG9ydHlcIjogXCJib29rbWFya1wifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWJ1aWxkaW5nXCIsXCJzaG9ydHlcIjogXCJidWlsZGluZ1wifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWNhbGVuZGFyXCIsXCJzaG9ydHlcIjogXCJjYWxlbmRhclwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWNhbGVuZGFyLWFsdFwiLFwic2hvcnR5XCI6IFwiY2FsZW5kYXItYWx0XCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtY2FsZW5kYXItY2hlY2tcIixcInNob3J0eVwiOiBcImNhbGVuZGFyLWNoZWNrXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtY2FsZW5kYXItbWludXNcIixcInNob3J0eVwiOiBcImNhbGVuZGFyLW1pbnVzXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtY2FsZW5kYXItcGx1c1wiLFwic2hvcnR5XCI6IFwiY2FsZW5kYXItcGx1c1wifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWNhbGVuZGFyLXRpbWVzXCIsXCJzaG9ydHlcIjogXCJjYWxlbmRhci10aW1lc1wifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWNhcmV0LXNxdWFyZS1kb3duXCIsXCJzaG9ydHlcIjogXCJjYXJldC1zcXVhcmUtZG93blwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWNhcmV0LXNxdWFyZS1sZWZ0XCIsXCJzaG9ydHlcIjogXCJjYXJldC1zcXVhcmUtbGVmdFwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWNhcmV0LXNxdWFyZS1yaWdodFwiLFwic2hvcnR5XCI6IFwiY2FyZXQtc3F1YXJlLXJpZ2h0XCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtY2FyZXQtc3F1YXJlLXVwXCIsXCJzaG9ydHlcIjogXCJjYXJldC1zcXVhcmUtdXBcIn0se1wiZnVsbFwiOiBcImZhciBmYS1jaGFydC1iYXJcIixcInNob3J0eVwiOiBcImNoYXJ0LWJhclwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWNoZWNrLWNpcmNsZVwiLFwic2hvcnR5XCI6IFwiY2hlY2stY2lyY2xlXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtY2hlY2stc3F1YXJlXCIsXCJzaG9ydHlcIjogXCJjaGVjay1zcXVhcmVcIn0se1wiZnVsbFwiOiBcImZhciBmYS1jaXJjbGVcIixcInNob3J0eVwiOiBcImNpcmNsZVwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWNsaXBib2FyZFwiLFwic2hvcnR5XCI6IFwiY2xpcGJvYXJkXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtY2xvY2tcIixcInNob3J0eVwiOiBcImNsb2NrXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtY2xvbmVcIixcInNob3J0eVwiOiBcImNsb25lXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtY2xvc2VkLWNhcHRpb25pbmdcIixcInNob3J0eVwiOiBcImNsb3NlZC1jYXB0aW9uaW5nXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtY29tbWVudFwiLFwic2hvcnR5XCI6IFwiY29tbWVudFwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWNvbW1lbnQtYWx0XCIsXCJzaG9ydHlcIjogXCJjb21tZW50LWFsdFwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWNvbW1lbnQtZG90c1wiLFwic2hvcnR5XCI6IFwiY29tbWVudC1kb3RzXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtY29tbWVudHNcIixcInNob3J0eVwiOiBcImNvbW1lbnRzXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtY29tcGFzc1wiLFwic2hvcnR5XCI6IFwiY29tcGFzc1wifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWNvcHlcIixcInNob3J0eVwiOiBcImNvcHlcIn0se1wiZnVsbFwiOiBcImZhciBmYS1jb3B5cmlnaHRcIixcInNob3J0eVwiOiBcImNvcHlyaWdodFwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWNyZWRpdC1jYXJkXCIsXCJzaG9ydHlcIjogXCJjcmVkaXQtY2FyZFwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWRpenp5XCIsXCJzaG9ydHlcIjogXCJkaXp6eVwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWRvdC1jaXJjbGVcIixcInNob3J0eVwiOiBcImRvdC1jaXJjbGVcIn0se1wiZnVsbFwiOiBcImZhciBmYS1lZGl0XCIsXCJzaG9ydHlcIjogXCJlZGl0XCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtZW52ZWxvcGVcIixcInNob3J0eVwiOiBcImVudmVsb3BlXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtZW52ZWxvcGUtb3BlblwiLFwic2hvcnR5XCI6IFwiZW52ZWxvcGUtb3BlblwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWV5ZVwiLFwic2hvcnR5XCI6IFwiZXllXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtZXllLXNsYXNoXCIsXCJzaG9ydHlcIjogXCJleWUtc2xhc2hcIn0se1wiZnVsbFwiOiBcImZhciBmYS1maWxlXCIsXCJzaG9ydHlcIjogXCJmaWxlXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtZmlsZS1hbHRcIixcInNob3J0eVwiOiBcImZpbGUtYWx0XCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtZmlsZS1hcmNoaXZlXCIsXCJzaG9ydHlcIjogXCJmaWxlLWFyY2hpdmVcIn0se1wiZnVsbFwiOiBcImZhciBmYS1maWxlLWF1ZGlvXCIsXCJzaG9ydHlcIjogXCJmaWxlLWF1ZGlvXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtZmlsZS1jb2RlXCIsXCJzaG9ydHlcIjogXCJmaWxlLWNvZGVcIn0se1wiZnVsbFwiOiBcImZhciBmYS1maWxlLWV4Y2VsXCIsXCJzaG9ydHlcIjogXCJmaWxlLWV4Y2VsXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtZmlsZS1pbWFnZVwiLFwic2hvcnR5XCI6IFwiZmlsZS1pbWFnZVwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWZpbGUtcGRmXCIsXCJzaG9ydHlcIjogXCJmaWxlLXBkZlwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWZpbGUtcG93ZXJwb2ludFwiLFwic2hvcnR5XCI6IFwiZmlsZS1wb3dlcnBvaW50XCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtZmlsZS12aWRlb1wiLFwic2hvcnR5XCI6IFwiZmlsZS12aWRlb1wifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWZpbGUtd29yZFwiLFwic2hvcnR5XCI6IFwiZmlsZS13b3JkXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtZmxhZ1wiLFwic2hvcnR5XCI6IFwiZmxhZ1wifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWZsdXNoZWRcIixcInNob3J0eVwiOiBcImZsdXNoZWRcIn0se1wiZnVsbFwiOiBcImZhciBmYS1mb2xkZXJcIixcInNob3J0eVwiOiBcImZvbGRlclwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWZvbGRlci1vcGVuXCIsXCJzaG9ydHlcIjogXCJmb2xkZXItb3BlblwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWZyb3duXCIsXCJzaG9ydHlcIjogXCJmcm93blwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWZyb3duLW9wZW5cIixcInNob3J0eVwiOiBcImZyb3duLW9wZW5cIn0se1wiZnVsbFwiOiBcImZhciBmYS1mdXRib2xcIixcInNob3J0eVwiOiBcImZ1dGJvbFwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWdlbVwiLFwic2hvcnR5XCI6IFwiZ2VtXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtZ3JpbWFjZVwiLFwic2hvcnR5XCI6IFwiZ3JpbWFjZVwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWdyaW5cIixcInNob3J0eVwiOiBcImdyaW5cIn0se1wiZnVsbFwiOiBcImZhciBmYS1ncmluLWFsdFwiLFwic2hvcnR5XCI6IFwiZ3Jpbi1hbHRcIn0se1wiZnVsbFwiOiBcImZhciBmYS1ncmluLWJlYW1cIixcInNob3J0eVwiOiBcImdyaW4tYmVhbVwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWdyaW4tYmVhbS1zd2VhdFwiLFwic2hvcnR5XCI6IFwiZ3Jpbi1iZWFtLXN3ZWF0XCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtZ3Jpbi1oZWFydHNcIixcInNob3J0eVwiOiBcImdyaW4taGVhcnRzXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtZ3Jpbi1zcXVpbnRcIixcInNob3J0eVwiOiBcImdyaW4tc3F1aW50XCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtZ3Jpbi1zcXVpbnQtdGVhcnNcIixcInNob3J0eVwiOiBcImdyaW4tc3F1aW50LXRlYXJzXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtZ3Jpbi1zdGFyc1wiLFwic2hvcnR5XCI6IFwiZ3Jpbi1zdGFyc1wifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWdyaW4tdGVhcnNcIixcInNob3J0eVwiOiBcImdyaW4tdGVhcnNcIn0se1wiZnVsbFwiOiBcImZhciBmYS1ncmluLXRvbmd1ZVwiLFwic2hvcnR5XCI6IFwiZ3Jpbi10b25ndWVcIn0se1wiZnVsbFwiOiBcImZhciBmYS1ncmluLXRvbmd1ZS1zcXVpbnRcIixcInNob3J0eVwiOiBcImdyaW4tdG9uZ3VlLXNxdWludFwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWdyaW4tdG9uZ3VlLXdpbmtcIixcInNob3J0eVwiOiBcImdyaW4tdG9uZ3VlLXdpbmtcIn0se1wiZnVsbFwiOiBcImZhciBmYS1ncmluLXdpbmtcIixcInNob3J0eVwiOiBcImdyaW4td2lua1wifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWhhbmQtbGl6YXJkXCIsXCJzaG9ydHlcIjogXCJoYW5kLWxpemFyZFwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWhhbmQtcGFwZXJcIixcInNob3J0eVwiOiBcImhhbmQtcGFwZXJcIn0se1wiZnVsbFwiOiBcImZhciBmYS1oYW5kLXBlYWNlXCIsXCJzaG9ydHlcIjogXCJoYW5kLXBlYWNlXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtaGFuZC1wb2ludC1kb3duXCIsXCJzaG9ydHlcIjogXCJoYW5kLXBvaW50LWRvd25cIn0se1wiZnVsbFwiOiBcImZhciBmYS1oYW5kLXBvaW50LWxlZnRcIixcInNob3J0eVwiOiBcImhhbmQtcG9pbnQtbGVmdFwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWhhbmQtcG9pbnQtcmlnaHRcIixcInNob3J0eVwiOiBcImhhbmQtcG9pbnQtcmlnaHRcIn0se1wiZnVsbFwiOiBcImZhciBmYS1oYW5kLXBvaW50LXVwXCIsXCJzaG9ydHlcIjogXCJoYW5kLXBvaW50LXVwXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtaGFuZC1wb2ludGVyXCIsXCJzaG9ydHlcIjogXCJoYW5kLXBvaW50ZXJcIn0se1wiZnVsbFwiOiBcImZhciBmYS1oYW5kLXJvY2tcIixcInNob3J0eVwiOiBcImhhbmQtcm9ja1wifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWhhbmQtc2Npc3NvcnNcIixcInNob3J0eVwiOiBcImhhbmQtc2Npc3NvcnNcIn0se1wiZnVsbFwiOiBcImZhciBmYS1oYW5kLXNwb2NrXCIsXCJzaG9ydHlcIjogXCJoYW5kLXNwb2NrXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtaGFuZHNoYWtlXCIsXCJzaG9ydHlcIjogXCJoYW5kc2hha2VcIn0se1wiZnVsbFwiOiBcImZhciBmYS1oZGRcIixcInNob3J0eVwiOiBcImhkZFwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWhlYXJ0XCIsXCJzaG9ydHlcIjogXCJoZWFydFwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWhvc3BpdGFsXCIsXCJzaG9ydHlcIjogXCJob3NwaXRhbFwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWhvdXJnbGFzc1wiLFwic2hvcnR5XCI6IFwiaG91cmdsYXNzXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtaWQtYmFkZ2VcIixcInNob3J0eVwiOiBcImlkLWJhZGdlXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtaWQtY2FyZFwiLFwic2hvcnR5XCI6IFwiaWQtY2FyZFwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWltYWdlXCIsXCJzaG9ydHlcIjogXCJpbWFnZVwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWltYWdlc1wiLFwic2hvcnR5XCI6IFwiaW1hZ2VzXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEta2V5Ym9hcmRcIixcInNob3J0eVwiOiBcImtleWJvYXJkXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEta2lzc1wiLFwic2hvcnR5XCI6IFwia2lzc1wifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWtpc3MtYmVhbVwiLFwic2hvcnR5XCI6IFwia2lzcy1iZWFtXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEta2lzcy13aW5rLWhlYXJ0XCIsXCJzaG9ydHlcIjogXCJraXNzLXdpbmstaGVhcnRcIn0se1wiZnVsbFwiOiBcImZhciBmYS1sYXVnaFwiLFwic2hvcnR5XCI6IFwibGF1Z2hcIn0se1wiZnVsbFwiOiBcImZhciBmYS1sYXVnaC1iZWFtXCIsXCJzaG9ydHlcIjogXCJsYXVnaC1iZWFtXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtbGF1Z2gtc3F1aW50XCIsXCJzaG9ydHlcIjogXCJsYXVnaC1zcXVpbnRcIn0se1wiZnVsbFwiOiBcImZhciBmYS1sYXVnaC13aW5rXCIsXCJzaG9ydHlcIjogXCJsYXVnaC13aW5rXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtbGVtb25cIixcInNob3J0eVwiOiBcImxlbW9uXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtbGlmZS1yaW5nXCIsXCJzaG9ydHlcIjogXCJsaWZlLXJpbmdcIn0se1wiZnVsbFwiOiBcImZhciBmYS1saWdodGJ1bGJcIixcInNob3J0eVwiOiBcImxpZ2h0YnVsYlwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLWxpc3QtYWx0XCIsXCJzaG9ydHlcIjogXCJsaXN0LWFsdFwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLW1hcFwiLFwic2hvcnR5XCI6IFwibWFwXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtbWVoXCIsXCJzaG9ydHlcIjogXCJtZWhcIn0se1wiZnVsbFwiOiBcImZhciBmYS1tZWgtYmxhbmtcIixcInNob3J0eVwiOiBcIm1laC1ibGFua1wifSx7XCJmdWxsXCI6IFwiZmFyIGZhLW1laC1yb2xsaW5nLWV5ZXNcIixcInNob3J0eVwiOiBcIm1laC1yb2xsaW5nLWV5ZXNcIn0se1wiZnVsbFwiOiBcImZhciBmYS1taW51cy1zcXVhcmVcIixcInNob3J0eVwiOiBcIm1pbnVzLXNxdWFyZVwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLW1vbmV5LWJpbGwtYWx0XCIsXCJzaG9ydHlcIjogXCJtb25leS1iaWxsLWFsdFwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLW1vb25cIixcInNob3J0eVwiOiBcIm1vb25cIn0se1wiZnVsbFwiOiBcImZhciBmYS1uZXdzcGFwZXJcIixcInNob3J0eVwiOiBcIm5ld3NwYXBlclwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLW9iamVjdC1ncm91cFwiLFwic2hvcnR5XCI6IFwib2JqZWN0LWdyb3VwXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtb2JqZWN0LXVuZ3JvdXBcIixcInNob3J0eVwiOiBcIm9iamVjdC11bmdyb3VwXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtcGFwZXItcGxhbmVcIixcInNob3J0eVwiOiBcInBhcGVyLXBsYW5lXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtcGF1c2UtY2lyY2xlXCIsXCJzaG9ydHlcIjogXCJwYXVzZS1jaXJjbGVcIn0se1wiZnVsbFwiOiBcImZhciBmYS1wbGF5LWNpcmNsZVwiLFwic2hvcnR5XCI6IFwicGxheS1jaXJjbGVcIn0se1wiZnVsbFwiOiBcImZhciBmYS1wbHVzLXNxdWFyZVwiLFwic2hvcnR5XCI6IFwicGx1cy1zcXVhcmVcIn0se1wiZnVsbFwiOiBcImZhciBmYS1xdWVzdGlvbi1jaXJjbGVcIixcInNob3J0eVwiOiBcInF1ZXN0aW9uLWNpcmNsZVwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLXJlZ2lzdGVyZWRcIixcInNob3J0eVwiOiBcInJlZ2lzdGVyZWRcIn0se1wiZnVsbFwiOiBcImZhciBmYS1zYWQtY3J5XCIsXCJzaG9ydHlcIjogXCJzYWQtY3J5XCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtc2FkLXRlYXJcIixcInNob3J0eVwiOiBcInNhZC10ZWFyXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtc2F2ZVwiLFwic2hvcnR5XCI6IFwic2F2ZVwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLXNoYXJlLXNxdWFyZVwiLFwic2hvcnR5XCI6IFwic2hhcmUtc3F1YXJlXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtc21pbGVcIixcInNob3J0eVwiOiBcInNtaWxlXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtc21pbGUtYmVhbVwiLFwic2hvcnR5XCI6IFwic21pbGUtYmVhbVwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLXNtaWxlLXdpbmtcIixcInNob3J0eVwiOiBcInNtaWxlLXdpbmtcIn0se1wiZnVsbFwiOiBcImZhciBmYS1zbm93Zmxha2VcIixcInNob3J0eVwiOiBcInNub3dmbGFrZVwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLXNxdWFyZVwiLFwic2hvcnR5XCI6IFwic3F1YXJlXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtc3RhclwiLFwic2hvcnR5XCI6IFwic3RhclwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLXN0YXItaGFsZlwiLFwic2hvcnR5XCI6IFwic3Rhci1oYWxmXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtc3RpY2t5LW5vdGVcIixcInNob3J0eVwiOiBcInN0aWNreS1ub3RlXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtc3RvcC1jaXJjbGVcIixcInNob3J0eVwiOiBcInN0b3AtY2lyY2xlXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtc3VuXCIsXCJzaG9ydHlcIjogXCJzdW5cIn0se1wiZnVsbFwiOiBcImZhciBmYS1zdXJwcmlzZVwiLFwic2hvcnR5XCI6IFwic3VycHJpc2VcIn0se1wiZnVsbFwiOiBcImZhciBmYS10aHVtYnMtZG93blwiLFwic2hvcnR5XCI6IFwidGh1bWJzLWRvd25cIn0se1wiZnVsbFwiOiBcImZhciBmYS10aHVtYnMtdXBcIixcInNob3J0eVwiOiBcInRodW1icy11cFwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLXRpbWVzLWNpcmNsZVwiLFwic2hvcnR5XCI6IFwidGltZXMtY2lyY2xlXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtdGlyZWRcIixcInNob3J0eVwiOiBcInRpcmVkXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtdHJhc2gtYWx0XCIsXCJzaG9ydHlcIjogXCJ0cmFzaC1hbHRcIn0se1wiZnVsbFwiOiBcImZhciBmYS11c2VyXCIsXCJzaG9ydHlcIjogXCJ1c2VyXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtdXNlci1jaXJjbGVcIixcInNob3J0eVwiOiBcInVzZXItY2lyY2xlXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtd2luZG93LWNsb3NlXCIsXCJzaG9ydHlcIjogXCJ3aW5kb3ctY2xvc2VcIn0se1wiZnVsbFwiOiBcImZhciBmYS13aW5kb3ctbWF4aW1pemVcIixcInNob3J0eVwiOiBcIndpbmRvdy1tYXhpbWl6ZVwifSx7XCJmdWxsXCI6IFwiZmFyIGZhLXdpbmRvdy1taW5pbWl6ZVwiLFwic2hvcnR5XCI6IFwid2luZG93LW1pbmltaXplXCJ9LHtcImZ1bGxcIjogXCJmYXIgZmEtd2luZG93LXJlc3RvcmVcIixcInNob3J0eVwiOiBcIndpbmRvdy1yZXN0b3JlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYWRcIixcInNob3J0eVwiOiBcImFkXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYWRkcmVzcy1ib29rXCIsXCJzaG9ydHlcIjogXCJhZGRyZXNzLWJvb2tcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1hZGRyZXNzLWNhcmRcIixcInNob3J0eVwiOiBcImFkZHJlc3MtY2FyZFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWFkanVzdFwiLFwic2hvcnR5XCI6IFwiYWRqdXN0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYWlyLWZyZXNoZW5lclwiLFwic2hvcnR5XCI6IFwiYWlyLWZyZXNoZW5lclwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWFsaWduLWNlbnRlclwiLFwic2hvcnR5XCI6IFwiYWxpZ24tY2VudGVyXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYWxpZ24tanVzdGlmeVwiLFwic2hvcnR5XCI6IFwiYWxpZ24tanVzdGlmeVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWFsaWduLWxlZnRcIixcInNob3J0eVwiOiBcImFsaWduLWxlZnRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1hbGlnbi1yaWdodFwiLFwic2hvcnR5XCI6IFwiYWxpZ24tcmlnaHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1hbGxlcmdpZXNcIixcInNob3J0eVwiOiBcImFsbGVyZ2llc1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWFtYnVsYW5jZVwiLFwic2hvcnR5XCI6IFwiYW1idWxhbmNlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYW1lcmljYW4tc2lnbi1sYW5ndWFnZS1pbnRlcnByZXRpbmdcIixcInNob3J0eVwiOiBcImFtZXJpY2FuLXNpZ24tbGFuZ3VhZ2UtaW50ZXJwcmV0aW5nXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYW5jaG9yXCIsXCJzaG9ydHlcIjogXCJhbmNob3JcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1hbmdsZS1kb3VibGUtZG93blwiLFwic2hvcnR5XCI6IFwiYW5nbGUtZG91YmxlLWRvd25cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1hbmdsZS1kb3VibGUtbGVmdFwiLFwic2hvcnR5XCI6IFwiYW5nbGUtZG91YmxlLWxlZnRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1hbmdsZS1kb3VibGUtcmlnaHRcIixcInNob3J0eVwiOiBcImFuZ2xlLWRvdWJsZS1yaWdodFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWFuZ2xlLWRvdWJsZS11cFwiLFwic2hvcnR5XCI6IFwiYW5nbGUtZG91YmxlLXVwXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYW5nbGUtZG93blwiLFwic2hvcnR5XCI6IFwiYW5nbGUtZG93blwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWFuZ2xlLWxlZnRcIixcInNob3J0eVwiOiBcImFuZ2xlLWxlZnRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1hbmdsZS1yaWdodFwiLFwic2hvcnR5XCI6IFwiYW5nbGUtcmlnaHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1hbmdsZS11cFwiLFwic2hvcnR5XCI6IFwiYW5nbGUtdXBcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1hbmdyeVwiLFwic2hvcnR5XCI6IFwiYW5ncnlcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1hbmtoXCIsXCJzaG9ydHlcIjogXCJhbmtoXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYXBwbGUtYWx0XCIsXCJzaG9ydHlcIjogXCJhcHBsZS1hbHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1hcmNoaXZlXCIsXCJzaG9ydHlcIjogXCJhcmNoaXZlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYXJjaHdheVwiLFwic2hvcnR5XCI6IFwiYXJjaHdheVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWFycm93LWFsdC1jaXJjbGUtZG93blwiLFwic2hvcnR5XCI6IFwiYXJyb3ctYWx0LWNpcmNsZS1kb3duXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYXJyb3ctYWx0LWNpcmNsZS1sZWZ0XCIsXCJzaG9ydHlcIjogXCJhcnJvdy1hbHQtY2lyY2xlLWxlZnRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1hcnJvdy1hbHQtY2lyY2xlLXJpZ2h0XCIsXCJzaG9ydHlcIjogXCJhcnJvdy1hbHQtY2lyY2xlLXJpZ2h0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYXJyb3ctYWx0LWNpcmNsZS11cFwiLFwic2hvcnR5XCI6IFwiYXJyb3ctYWx0LWNpcmNsZS11cFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWFycm93LWNpcmNsZS1kb3duXCIsXCJzaG9ydHlcIjogXCJhcnJvdy1jaXJjbGUtZG93blwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWFycm93LWNpcmNsZS1sZWZ0XCIsXCJzaG9ydHlcIjogXCJhcnJvdy1jaXJjbGUtbGVmdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWFycm93LWNpcmNsZS1yaWdodFwiLFwic2hvcnR5XCI6IFwiYXJyb3ctY2lyY2xlLXJpZ2h0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYXJyb3ctY2lyY2xlLXVwXCIsXCJzaG9ydHlcIjogXCJhcnJvdy1jaXJjbGUtdXBcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1hcnJvdy1kb3duXCIsXCJzaG9ydHlcIjogXCJhcnJvdy1kb3duXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYXJyb3ctbGVmdFwiLFwic2hvcnR5XCI6IFwiYXJyb3ctbGVmdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWFycm93LXJpZ2h0XCIsXCJzaG9ydHlcIjogXCJhcnJvdy1yaWdodFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWFycm93LXVwXCIsXCJzaG9ydHlcIjogXCJhcnJvdy11cFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWFycm93cy1hbHRcIixcInNob3J0eVwiOiBcImFycm93cy1hbHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1hcnJvd3MtYWx0LWhcIixcInNob3J0eVwiOiBcImFycm93cy1hbHQtaFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWFycm93cy1hbHQtdlwiLFwic2hvcnR5XCI6IFwiYXJyb3dzLWFsdC12XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYXNzaXN0aXZlLWxpc3RlbmluZy1zeXN0ZW1zXCIsXCJzaG9ydHlcIjogXCJhc3Npc3RpdmUtbGlzdGVuaW5nLXN5c3RlbXNcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1hc3Rlcmlza1wiLFwic2hvcnR5XCI6IFwiYXN0ZXJpc2tcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1hdFwiLFwic2hvcnR5XCI6IFwiYXRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1hdGxhc1wiLFwic2hvcnR5XCI6IFwiYXRsYXNcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1hdG9tXCIsXCJzaG9ydHlcIjogXCJhdG9tXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYXVkaW8tZGVzY3JpcHRpb25cIixcInNob3J0eVwiOiBcImF1ZGlvLWRlc2NyaXB0aW9uXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYXdhcmRcIixcInNob3J0eVwiOiBcImF3YXJkXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYmFja3NwYWNlXCIsXCJzaG9ydHlcIjogXCJiYWNrc3BhY2VcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1iYWNrd2FyZFwiLFwic2hvcnR5XCI6IFwiYmFja3dhcmRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1iYWxhbmNlLXNjYWxlXCIsXCJzaG9ydHlcIjogXCJiYWxhbmNlLXNjYWxlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYmFuXCIsXCJzaG9ydHlcIjogXCJiYW5cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1iYW5kLWFpZFwiLFwic2hvcnR5XCI6IFwiYmFuZC1haWRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1iYXJjb2RlXCIsXCJzaG9ydHlcIjogXCJiYXJjb2RlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYmFyc1wiLFwic2hvcnR5XCI6IFwiYmFyc1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWJhc2ViYWxsLWJhbGxcIixcInNob3J0eVwiOiBcImJhc2ViYWxsLWJhbGxcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1iYXNrZXRiYWxsLWJhbGxcIixcInNob3J0eVwiOiBcImJhc2tldGJhbGwtYmFsbFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWJhdGhcIixcInNob3J0eVwiOiBcImJhdGhcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1iYXR0ZXJ5LWVtcHR5XCIsXCJzaG9ydHlcIjogXCJiYXR0ZXJ5LWVtcHR5XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYmF0dGVyeS1mdWxsXCIsXCJzaG9ydHlcIjogXCJiYXR0ZXJ5LWZ1bGxcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1iYXR0ZXJ5LWhhbGZcIixcInNob3J0eVwiOiBcImJhdHRlcnktaGFsZlwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWJhdHRlcnktcXVhcnRlclwiLFwic2hvcnR5XCI6IFwiYmF0dGVyeS1xdWFydGVyXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYmF0dGVyeS10aHJlZS1xdWFydGVyc1wiLFwic2hvcnR5XCI6IFwiYmF0dGVyeS10aHJlZS1xdWFydGVyc1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWJlZFwiLFwic2hvcnR5XCI6IFwiYmVkXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYmVlclwiLFwic2hvcnR5XCI6IFwiYmVlclwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWJlbGxcIixcInNob3J0eVwiOiBcImJlbGxcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1iZWxsLXNsYXNoXCIsXCJzaG9ydHlcIjogXCJiZWxsLXNsYXNoXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYmV6aWVyLWN1cnZlXCIsXCJzaG9ydHlcIjogXCJiZXppZXItY3VydmVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1iaWJsZVwiLFwic2hvcnR5XCI6IFwiYmlibGVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1iaWN5Y2xlXCIsXCJzaG9ydHlcIjogXCJiaWN5Y2xlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYmlub2N1bGFyc1wiLFwic2hvcnR5XCI6IFwiYmlub2N1bGFyc1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWJpcnRoZGF5LWNha2VcIixcInNob3J0eVwiOiBcImJpcnRoZGF5LWNha2VcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1ibGVuZGVyXCIsXCJzaG9ydHlcIjogXCJibGVuZGVyXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYmxpbmRcIixcInNob3J0eVwiOiBcImJsaW5kXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYm9sZFwiLFwic2hvcnR5XCI6IFwiYm9sZFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWJvbHRcIixcInNob3J0eVwiOiBcImJvbHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1ib21iXCIsXCJzaG9ydHlcIjogXCJib21iXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYm9uZVwiLFwic2hvcnR5XCI6IFwiYm9uZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWJvbmdcIixcInNob3J0eVwiOiBcImJvbmdcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1ib29rXCIsXCJzaG9ydHlcIjogXCJib29rXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYm9vay1vcGVuXCIsXCJzaG9ydHlcIjogXCJib29rLW9wZW5cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1ib29rLXJlYWRlclwiLFwic2hvcnR5XCI6IFwiYm9vay1yZWFkZXJcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1ib29rbWFya1wiLFwic2hvcnR5XCI6IFwiYm9va21hcmtcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1ib3dsaW5nLWJhbGxcIixcInNob3J0eVwiOiBcImJvd2xpbmctYmFsbFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWJveFwiLFwic2hvcnR5XCI6IFwiYm94XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYm94LW9wZW5cIixcInNob3J0eVwiOiBcImJveC1vcGVuXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYm94ZXNcIixcInNob3J0eVwiOiBcImJveGVzXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYnJhaWxsZVwiLFwic2hvcnR5XCI6IFwiYnJhaWxsZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWJyYWluXCIsXCJzaG9ydHlcIjogXCJicmFpblwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWJyaWVmY2FzZVwiLFwic2hvcnR5XCI6IFwiYnJpZWZjYXNlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYnJpZWZjYXNlLW1lZGljYWxcIixcInNob3J0eVwiOiBcImJyaWVmY2FzZS1tZWRpY2FsXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtYnJvYWRjYXN0LXRvd2VyXCIsXCJzaG9ydHlcIjogXCJicm9hZGNhc3QtdG93ZXJcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1icm9vbVwiLFwic2hvcnR5XCI6IFwiYnJvb21cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1icnVzaFwiLFwic2hvcnR5XCI6IFwiYnJ1c2hcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1idWdcIixcInNob3J0eVwiOiBcImJ1Z1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWJ1aWxkaW5nXCIsXCJzaG9ydHlcIjogXCJidWlsZGluZ1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWJ1bGxob3JuXCIsXCJzaG9ydHlcIjogXCJidWxsaG9yblwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWJ1bGxzZXllXCIsXCJzaG9ydHlcIjogXCJidWxsc2V5ZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWJ1cm5cIixcInNob3J0eVwiOiBcImJ1cm5cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1idXNcIixcInNob3J0eVwiOiBcImJ1c1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWJ1cy1hbHRcIixcInNob3J0eVwiOiBcImJ1cy1hbHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1idXNpbmVzcy10aW1lXCIsXCJzaG9ydHlcIjogXCJidXNpbmVzcy10aW1lXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2FsY3VsYXRvclwiLFwic2hvcnR5XCI6IFwiY2FsY3VsYXRvclwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNhbGVuZGFyXCIsXCJzaG9ydHlcIjogXCJjYWxlbmRhclwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNhbGVuZGFyLWFsdFwiLFwic2hvcnR5XCI6IFwiY2FsZW5kYXItYWx0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2FsZW5kYXItY2hlY2tcIixcInNob3J0eVwiOiBcImNhbGVuZGFyLWNoZWNrXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2FsZW5kYXItbWludXNcIixcInNob3J0eVwiOiBcImNhbGVuZGFyLW1pbnVzXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2FsZW5kYXItcGx1c1wiLFwic2hvcnR5XCI6IFwiY2FsZW5kYXItcGx1c1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNhbGVuZGFyLXRpbWVzXCIsXCJzaG9ydHlcIjogXCJjYWxlbmRhci10aW1lc1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNhbWVyYVwiLFwic2hvcnR5XCI6IFwiY2FtZXJhXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2FtZXJhLXJldHJvXCIsXCJzaG9ydHlcIjogXCJjYW1lcmEtcmV0cm9cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jYW5uYWJpc1wiLFwic2hvcnR5XCI6IFwiY2FubmFiaXNcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jYXBzdWxlc1wiLFwic2hvcnR5XCI6IFwiY2Fwc3VsZXNcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jYXJcIixcInNob3J0eVwiOiBcImNhclwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNhci1hbHRcIixcInNob3J0eVwiOiBcImNhci1hbHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jYXItYmF0dGVyeVwiLFwic2hvcnR5XCI6IFwiY2FyLWJhdHRlcnlcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jYXItY3Jhc2hcIixcInNob3J0eVwiOiBcImNhci1jcmFzaFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNhci1zaWRlXCIsXCJzaG9ydHlcIjogXCJjYXItc2lkZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNhcmV0LWRvd25cIixcInNob3J0eVwiOiBcImNhcmV0LWRvd25cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jYXJldC1sZWZ0XCIsXCJzaG9ydHlcIjogXCJjYXJldC1sZWZ0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2FyZXQtcmlnaHRcIixcInNob3J0eVwiOiBcImNhcmV0LXJpZ2h0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2FyZXQtc3F1YXJlLWRvd25cIixcInNob3J0eVwiOiBcImNhcmV0LXNxdWFyZS1kb3duXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2FyZXQtc3F1YXJlLWxlZnRcIixcInNob3J0eVwiOiBcImNhcmV0LXNxdWFyZS1sZWZ0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2FyZXQtc3F1YXJlLXJpZ2h0XCIsXCJzaG9ydHlcIjogXCJjYXJldC1zcXVhcmUtcmlnaHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jYXJldC1zcXVhcmUtdXBcIixcInNob3J0eVwiOiBcImNhcmV0LXNxdWFyZS11cFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNhcmV0LXVwXCIsXCJzaG9ydHlcIjogXCJjYXJldC11cFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNhcnQtYXJyb3ctZG93blwiLFwic2hvcnR5XCI6IFwiY2FydC1hcnJvdy1kb3duXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2FydC1wbHVzXCIsXCJzaG9ydHlcIjogXCJjYXJ0LXBsdXNcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jZXJ0aWZpY2F0ZVwiLFwic2hvcnR5XCI6IFwiY2VydGlmaWNhdGVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jaGFsa2JvYXJkXCIsXCJzaG9ydHlcIjogXCJjaGFsa2JvYXJkXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2hhbGtib2FyZC10ZWFjaGVyXCIsXCJzaG9ydHlcIjogXCJjaGFsa2JvYXJkLXRlYWNoZXJcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jaGFyZ2luZy1zdGF0aW9uXCIsXCJzaG9ydHlcIjogXCJjaGFyZ2luZy1zdGF0aW9uXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2hhcnQtYXJlYVwiLFwic2hvcnR5XCI6IFwiY2hhcnQtYXJlYVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNoYXJ0LWJhclwiLFwic2hvcnR5XCI6IFwiY2hhcnQtYmFyXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2hhcnQtbGluZVwiLFwic2hvcnR5XCI6IFwiY2hhcnQtbGluZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNoYXJ0LXBpZVwiLFwic2hvcnR5XCI6IFwiY2hhcnQtcGllXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2hlY2tcIixcInNob3J0eVwiOiBcImNoZWNrXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2hlY2stY2lyY2xlXCIsXCJzaG9ydHlcIjogXCJjaGVjay1jaXJjbGVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jaGVjay1kb3VibGVcIixcInNob3J0eVwiOiBcImNoZWNrLWRvdWJsZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNoZWNrLXNxdWFyZVwiLFwic2hvcnR5XCI6IFwiY2hlY2stc3F1YXJlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2hlc3NcIixcInNob3J0eVwiOiBcImNoZXNzXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2hlc3MtYmlzaG9wXCIsXCJzaG9ydHlcIjogXCJjaGVzcy1iaXNob3BcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jaGVzcy1ib2FyZFwiLFwic2hvcnR5XCI6IFwiY2hlc3MtYm9hcmRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jaGVzcy1raW5nXCIsXCJzaG9ydHlcIjogXCJjaGVzcy1raW5nXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2hlc3Mta25pZ2h0XCIsXCJzaG9ydHlcIjogXCJjaGVzcy1rbmlnaHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jaGVzcy1wYXduXCIsXCJzaG9ydHlcIjogXCJjaGVzcy1wYXduXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2hlc3MtcXVlZW5cIixcInNob3J0eVwiOiBcImNoZXNzLXF1ZWVuXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2hlc3Mtcm9va1wiLFwic2hvcnR5XCI6IFwiY2hlc3Mtcm9va1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNoZXZyb24tY2lyY2xlLWRvd25cIixcInNob3J0eVwiOiBcImNoZXZyb24tY2lyY2xlLWRvd25cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jaGV2cm9uLWNpcmNsZS1sZWZ0XCIsXCJzaG9ydHlcIjogXCJjaGV2cm9uLWNpcmNsZS1sZWZ0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2hldnJvbi1jaXJjbGUtcmlnaHRcIixcInNob3J0eVwiOiBcImNoZXZyb24tY2lyY2xlLXJpZ2h0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2hldnJvbi1jaXJjbGUtdXBcIixcInNob3J0eVwiOiBcImNoZXZyb24tY2lyY2xlLXVwXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2hldnJvbi1kb3duXCIsXCJzaG9ydHlcIjogXCJjaGV2cm9uLWRvd25cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jaGV2cm9uLWxlZnRcIixcInNob3J0eVwiOiBcImNoZXZyb24tbGVmdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNoZXZyb24tcmlnaHRcIixcInNob3J0eVwiOiBcImNoZXZyb24tcmlnaHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jaGV2cm9uLXVwXCIsXCJzaG9ydHlcIjogXCJjaGV2cm9uLXVwXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2hpbGRcIixcInNob3J0eVwiOiBcImNoaWxkXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2h1cmNoXCIsXCJzaG9ydHlcIjogXCJjaHVyY2hcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jaXJjbGVcIixcInNob3J0eVwiOiBcImNpcmNsZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNpcmNsZS1ub3RjaFwiLFwic2hvcnR5XCI6IFwiY2lyY2xlLW5vdGNoXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2l0eVwiLFwic2hvcnR5XCI6IFwiY2l0eVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNsaXBib2FyZFwiLFwic2hvcnR5XCI6IFwiY2xpcGJvYXJkXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY2xpcGJvYXJkLWNoZWNrXCIsXCJzaG9ydHlcIjogXCJjbGlwYm9hcmQtY2hlY2tcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jbGlwYm9hcmQtbGlzdFwiLFwic2hvcnR5XCI6IFwiY2xpcGJvYXJkLWxpc3RcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jbG9ja1wiLFwic2hvcnR5XCI6IFwiY2xvY2tcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jbG9uZVwiLFwic2hvcnR5XCI6IFwiY2xvbmVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jbG9zZWQtY2FwdGlvbmluZ1wiLFwic2hvcnR5XCI6IFwiY2xvc2VkLWNhcHRpb25pbmdcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jbG91ZFwiLFwic2hvcnR5XCI6IFwiY2xvdWRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jbG91ZC1kb3dubG9hZC1hbHRcIixcInNob3J0eVwiOiBcImNsb3VkLWRvd25sb2FkLWFsdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNsb3VkLXVwbG9hZC1hbHRcIixcInNob3J0eVwiOiBcImNsb3VkLXVwbG9hZC1hbHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jb2NrdGFpbFwiLFwic2hvcnR5XCI6IFwiY29ja3RhaWxcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jb2RlXCIsXCJzaG9ydHlcIjogXCJjb2RlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY29kZS1icmFuY2hcIixcInNob3J0eVwiOiBcImNvZGUtYnJhbmNoXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY29mZmVlXCIsXCJzaG9ydHlcIjogXCJjb2ZmZWVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jb2dcIixcInNob3J0eVwiOiBcImNvZ1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNvZ3NcIixcInNob3J0eVwiOiBcImNvZ3NcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jb2luc1wiLFwic2hvcnR5XCI6IFwiY29pbnNcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jb2x1bW5zXCIsXCJzaG9ydHlcIjogXCJjb2x1bW5zXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY29tbWVudFwiLFwic2hvcnR5XCI6IFwiY29tbWVudFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNvbW1lbnQtYWx0XCIsXCJzaG9ydHlcIjogXCJjb21tZW50LWFsdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNvbW1lbnQtZG9sbGFyXCIsXCJzaG9ydHlcIjogXCJjb21tZW50LWRvbGxhclwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNvbW1lbnQtZG90c1wiLFwic2hvcnR5XCI6IFwiY29tbWVudC1kb3RzXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY29tbWVudC1zbGFzaFwiLFwic2hvcnR5XCI6IFwiY29tbWVudC1zbGFzaFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNvbW1lbnRzXCIsXCJzaG9ydHlcIjogXCJjb21tZW50c1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNvbW1lbnRzLWRvbGxhclwiLFwic2hvcnR5XCI6IFwiY29tbWVudHMtZG9sbGFyXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY29tcGFjdC1kaXNjXCIsXCJzaG9ydHlcIjogXCJjb21wYWN0LWRpc2NcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jb21wYXNzXCIsXCJzaG9ydHlcIjogXCJjb21wYXNzXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY29tcHJlc3NcIixcInNob3J0eVwiOiBcImNvbXByZXNzXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY29uY2llcmdlLWJlbGxcIixcInNob3J0eVwiOiBcImNvbmNpZXJnZS1iZWxsXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY29va2llXCIsXCJzaG9ydHlcIjogXCJjb29raWVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jb29raWUtYml0ZVwiLFwic2hvcnR5XCI6IFwiY29va2llLWJpdGVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jb3B5XCIsXCJzaG9ydHlcIjogXCJjb3B5XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY29weXJpZ2h0XCIsXCJzaG9ydHlcIjogXCJjb3B5cmlnaHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jb3VjaFwiLFwic2hvcnR5XCI6IFwiY291Y2hcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jcmVkaXQtY2FyZFwiLFwic2hvcnR5XCI6IFwiY3JlZGl0LWNhcmRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jcm9wXCIsXCJzaG9ydHlcIjogXCJjcm9wXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY3JvcC1hbHRcIixcInNob3J0eVwiOiBcImNyb3AtYWx0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY3Jvc3NcIixcInNob3J0eVwiOiBcImNyb3NzXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY3Jvc3NoYWlyc1wiLFwic2hvcnR5XCI6IFwiY3Jvc3NoYWlyc1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWNyb3dcIixcInNob3J0eVwiOiBcImNyb3dcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jcm93blwiLFwic2hvcnR5XCI6IFwiY3Jvd25cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1jdWJlXCIsXCJzaG9ydHlcIjogXCJjdWJlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY3ViZXNcIixcInNob3J0eVwiOiBcImN1YmVzXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtY3V0XCIsXCJzaG9ydHlcIjogXCJjdXRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1kYXRhYmFzZVwiLFwic2hvcnR5XCI6IFwiZGF0YWJhc2VcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1kZWFmXCIsXCJzaG9ydHlcIjogXCJkZWFmXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZGVza3RvcFwiLFwic2hvcnR5XCI6IFwiZGVza3RvcFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWRoYXJtYWNoYWtyYVwiLFwic2hvcnR5XCI6IFwiZGhhcm1hY2hha3JhXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZGlhZ25vc2VzXCIsXCJzaG9ydHlcIjogXCJkaWFnbm9zZXNcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1kaWNlXCIsXCJzaG9ydHlcIjogXCJkaWNlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZGljZS1maXZlXCIsXCJzaG9ydHlcIjogXCJkaWNlLWZpdmVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1kaWNlLWZvdXJcIixcInNob3J0eVwiOiBcImRpY2UtZm91clwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWRpY2Utb25lXCIsXCJzaG9ydHlcIjogXCJkaWNlLW9uZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWRpY2Utc2l4XCIsXCJzaG9ydHlcIjogXCJkaWNlLXNpeFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWRpY2UtdGhyZWVcIixcInNob3J0eVwiOiBcImRpY2UtdGhyZWVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1kaWNlLXR3b1wiLFwic2hvcnR5XCI6IFwiZGljZS10d29cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1kaWdpdGFsLXRhY2hvZ3JhcGhcIixcInNob3J0eVwiOiBcImRpZ2l0YWwtdGFjaG9ncmFwaFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWRpcmVjdGlvbnNcIixcInNob3J0eVwiOiBcImRpcmVjdGlvbnNcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1kaXZpZGVcIixcInNob3J0eVwiOiBcImRpdmlkZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWRpenp5XCIsXCJzaG9ydHlcIjogXCJkaXp6eVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWRuYVwiLFwic2hvcnR5XCI6IFwiZG5hXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZG9sbGFyLXNpZ25cIixcInNob3J0eVwiOiBcImRvbGxhci1zaWduXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZG9sbHlcIixcInNob3J0eVwiOiBcImRvbGx5XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZG9sbHktZmxhdGJlZFwiLFwic2hvcnR5XCI6IFwiZG9sbHktZmxhdGJlZFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWRvbmF0ZVwiLFwic2hvcnR5XCI6IFwiZG9uYXRlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZG9vci1jbG9zZWRcIixcInNob3J0eVwiOiBcImRvb3ItY2xvc2VkXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZG9vci1vcGVuXCIsXCJzaG9ydHlcIjogXCJkb29yLW9wZW5cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1kb3QtY2lyY2xlXCIsXCJzaG9ydHlcIjogXCJkb3QtY2lyY2xlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZG92ZVwiLFwic2hvcnR5XCI6IFwiZG92ZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWRvd25sb2FkXCIsXCJzaG9ydHlcIjogXCJkb3dubG9hZFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWRyYWZ0aW5nLWNvbXBhc3NcIixcInNob3J0eVwiOiBcImRyYWZ0aW5nLWNvbXBhc3NcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1kcmF3LXBvbHlnb25cIixcInNob3J0eVwiOiBcImRyYXctcG9seWdvblwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWRydW1cIixcInNob3J0eVwiOiBcImRydW1cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1kcnVtLXN0ZWVscGFuXCIsXCJzaG9ydHlcIjogXCJkcnVtLXN0ZWVscGFuXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZHVtYmJlbGxcIixcInNob3J0eVwiOiBcImR1bWJiZWxsXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZWRpdFwiLFwic2hvcnR5XCI6IFwiZWRpdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWVqZWN0XCIsXCJzaG9ydHlcIjogXCJlamVjdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWVsbGlwc2lzLWhcIixcInNob3J0eVwiOiBcImVsbGlwc2lzLWhcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1lbGxpcHNpcy12XCIsXCJzaG9ydHlcIjogXCJlbGxpcHNpcy12XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZW52ZWxvcGVcIixcInNob3J0eVwiOiBcImVudmVsb3BlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZW52ZWxvcGUtb3BlblwiLFwic2hvcnR5XCI6IFwiZW52ZWxvcGUtb3BlblwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWVudmVsb3BlLW9wZW4tdGV4dFwiLFwic2hvcnR5XCI6IFwiZW52ZWxvcGUtb3Blbi10ZXh0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZW52ZWxvcGUtc3F1YXJlXCIsXCJzaG9ydHlcIjogXCJlbnZlbG9wZS1zcXVhcmVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1lcXVhbHNcIixcInNob3J0eVwiOiBcImVxdWFsc1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWVyYXNlclwiLFwic2hvcnR5XCI6IFwiZXJhc2VyXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZXVyby1zaWduXCIsXCJzaG9ydHlcIjogXCJldXJvLXNpZ25cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1leGNoYW5nZS1hbHRcIixcInNob3J0eVwiOiBcImV4Y2hhbmdlLWFsdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWV4Y2xhbWF0aW9uXCIsXCJzaG9ydHlcIjogXCJleGNsYW1hdGlvblwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZVwiLFwic2hvcnR5XCI6IFwiZXhjbGFtYXRpb24tY2lyY2xlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZXhjbGFtYXRpb24tdHJpYW5nbGVcIixcInNob3J0eVwiOiBcImV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZXhwYW5kXCIsXCJzaG9ydHlcIjogXCJleHBhbmRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1leHBhbmQtYXJyb3dzLWFsdFwiLFwic2hvcnR5XCI6IFwiZXhwYW5kLWFycm93cy1hbHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1leHRlcm5hbC1saW5rLWFsdFwiLFwic2hvcnR5XCI6IFwiZXh0ZXJuYWwtbGluay1hbHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1leHRlcm5hbC1saW5rLXNxdWFyZS1hbHRcIixcInNob3J0eVwiOiBcImV4dGVybmFsLWxpbmstc3F1YXJlLWFsdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWV5ZVwiLFwic2hvcnR5XCI6IFwiZXllXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZXllLWRyb3BwZXJcIixcInNob3J0eVwiOiBcImV5ZS1kcm9wcGVyXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZXllLXNsYXNoXCIsXCJzaG9ydHlcIjogXCJleWUtc2xhc2hcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1mYXN0LWJhY2t3YXJkXCIsXCJzaG9ydHlcIjogXCJmYXN0LWJhY2t3YXJkXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZmFzdC1mb3J3YXJkXCIsXCJzaG9ydHlcIjogXCJmYXN0LWZvcndhcmRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1mYXhcIixcInNob3J0eVwiOiBcImZheFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWZlYXRoZXJcIixcInNob3J0eVwiOiBcImZlYXRoZXJcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1mZWF0aGVyLWFsdFwiLFwic2hvcnR5XCI6IFwiZmVhdGhlci1hbHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1mZW1hbGVcIixcInNob3J0eVwiOiBcImZlbWFsZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWZpZ2h0ZXItamV0XCIsXCJzaG9ydHlcIjogXCJmaWdodGVyLWpldFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWZpbGVcIixcInNob3J0eVwiOiBcImZpbGVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1maWxlLWFsdFwiLFwic2hvcnR5XCI6IFwiZmlsZS1hbHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1maWxlLWFyY2hpdmVcIixcInNob3J0eVwiOiBcImZpbGUtYXJjaGl2ZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWZpbGUtYXVkaW9cIixcInNob3J0eVwiOiBcImZpbGUtYXVkaW9cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1maWxlLWNvZGVcIixcInNob3J0eVwiOiBcImZpbGUtY29kZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWZpbGUtY29udHJhY3RcIixcInNob3J0eVwiOiBcImZpbGUtY29udHJhY3RcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1maWxlLWRvd25sb2FkXCIsXCJzaG9ydHlcIjogXCJmaWxlLWRvd25sb2FkXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZmlsZS1leGNlbFwiLFwic2hvcnR5XCI6IFwiZmlsZS1leGNlbFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWZpbGUtZXhwb3J0XCIsXCJzaG9ydHlcIjogXCJmaWxlLWV4cG9ydFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWZpbGUtaW1hZ2VcIixcInNob3J0eVwiOiBcImZpbGUtaW1hZ2VcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1maWxlLWltcG9ydFwiLFwic2hvcnR5XCI6IFwiZmlsZS1pbXBvcnRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1maWxlLWludm9pY2VcIixcInNob3J0eVwiOiBcImZpbGUtaW52b2ljZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWZpbGUtaW52b2ljZS1kb2xsYXJcIixcInNob3J0eVwiOiBcImZpbGUtaW52b2ljZS1kb2xsYXJcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1maWxlLW1lZGljYWxcIixcInNob3J0eVwiOiBcImZpbGUtbWVkaWNhbFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWZpbGUtbWVkaWNhbC1hbHRcIixcInNob3J0eVwiOiBcImZpbGUtbWVkaWNhbC1hbHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1maWxlLXBkZlwiLFwic2hvcnR5XCI6IFwiZmlsZS1wZGZcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1maWxlLXBvd2VycG9pbnRcIixcInNob3J0eVwiOiBcImZpbGUtcG93ZXJwb2ludFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWZpbGUtcHJlc2NyaXB0aW9uXCIsXCJzaG9ydHlcIjogXCJmaWxlLXByZXNjcmlwdGlvblwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWZpbGUtc2lnbmF0dXJlXCIsXCJzaG9ydHlcIjogXCJmaWxlLXNpZ25hdHVyZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWZpbGUtdXBsb2FkXCIsXCJzaG9ydHlcIjogXCJmaWxlLXVwbG9hZFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWZpbGUtdmlkZW9cIixcInNob3J0eVwiOiBcImZpbGUtdmlkZW9cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1maWxlLXdvcmRcIixcInNob3J0eVwiOiBcImZpbGUtd29yZFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWZpbGxcIixcInNob3J0eVwiOiBcImZpbGxcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1maWxsLWRyaXBcIixcInNob3J0eVwiOiBcImZpbGwtZHJpcFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWZpbG1cIixcInNob3J0eVwiOiBcImZpbG1cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1maWx0ZXJcIixcInNob3J0eVwiOiBcImZpbHRlclwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWZpbmdlcnByaW50XCIsXCJzaG9ydHlcIjogXCJmaW5nZXJwcmludFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWZpcmVcIixcInNob3J0eVwiOiBcImZpcmVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1maXJlLWV4dGluZ3Vpc2hlclwiLFwic2hvcnR5XCI6IFwiZmlyZS1leHRpbmd1aXNoZXJcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1maXJzdC1haWRcIixcInNob3J0eVwiOiBcImZpcnN0LWFpZFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWZpc2hcIixcInNob3J0eVwiOiBcImZpc2hcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1mbGFnXCIsXCJzaG9ydHlcIjogXCJmbGFnXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZmxhZy1jaGVja2VyZWRcIixcInNob3J0eVwiOiBcImZsYWctY2hlY2tlcmVkXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZmxhc2tcIixcInNob3J0eVwiOiBcImZsYXNrXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZmx1c2hlZFwiLFwic2hvcnR5XCI6IFwiZmx1c2hlZFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWZvbGRlclwiLFwic2hvcnR5XCI6IFwiZm9sZGVyXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZm9sZGVyLW1pbnVzXCIsXCJzaG9ydHlcIjogXCJmb2xkZXItbWludXNcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1mb2xkZXItb3BlblwiLFwic2hvcnR5XCI6IFwiZm9sZGVyLW9wZW5cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1mb2xkZXItcGx1c1wiLFwic2hvcnR5XCI6IFwiZm9sZGVyLXBsdXNcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1mb250XCIsXCJzaG9ydHlcIjogXCJmb250XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZm9vdGJhbGwtYmFsbFwiLFwic2hvcnR5XCI6IFwiZm9vdGJhbGwtYmFsbFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWZvcndhcmRcIixcInNob3J0eVwiOiBcImZvcndhcmRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1mcm9nXCIsXCJzaG9ydHlcIjogXCJmcm9nXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZnJvd25cIixcInNob3J0eVwiOiBcImZyb3duXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZnJvd24tb3BlblwiLFwic2hvcnR5XCI6IFwiZnJvd24tb3BlblwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWZ1bm5lbC1kb2xsYXJcIixcInNob3J0eVwiOiBcImZ1bm5lbC1kb2xsYXJcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1mdXRib2xcIixcInNob3J0eVwiOiBcImZ1dGJvbFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWdhbWVwYWRcIixcInNob3J0eVwiOiBcImdhbWVwYWRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1nYXMtcHVtcFwiLFwic2hvcnR5XCI6IFwiZ2FzLXB1bXBcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1nYXZlbFwiLFwic2hvcnR5XCI6IFwiZ2F2ZWxcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1nZW1cIixcInNob3J0eVwiOiBcImdlbVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWdlbmRlcmxlc3NcIixcInNob3J0eVwiOiBcImdlbmRlcmxlc3NcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1naWZ0XCIsXCJzaG9ydHlcIjogXCJnaWZ0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZ2xhc3MtbWFydGluaVwiLFwic2hvcnR5XCI6IFwiZ2xhc3MtbWFydGluaVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWdsYXNzLW1hcnRpbmktYWx0XCIsXCJzaG9ydHlcIjogXCJnbGFzcy1tYXJ0aW5pLWFsdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWdsYXNzZXNcIixcInNob3J0eVwiOiBcImdsYXNzZXNcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1nbG9iZVwiLFwic2hvcnR5XCI6IFwiZ2xvYmVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1nbG9iZS1hZnJpY2FcIixcInNob3J0eVwiOiBcImdsb2JlLWFmcmljYVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWdsb2JlLWFtZXJpY2FzXCIsXCJzaG9ydHlcIjogXCJnbG9iZS1hbWVyaWNhc1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWdsb2JlLWFzaWFcIixcInNob3J0eVwiOiBcImdsb2JlLWFzaWFcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1nb2xmLWJhbGxcIixcInNob3J0eVwiOiBcImdvbGYtYmFsbFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWdvcHVyYW1cIixcInNob3J0eVwiOiBcImdvcHVyYW1cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1ncmFkdWF0aW9uLWNhcFwiLFwic2hvcnR5XCI6IFwiZ3JhZHVhdGlvbi1jYXBcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1ncmVhdGVyLXRoYW5cIixcInNob3J0eVwiOiBcImdyZWF0ZXItdGhhblwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWdyZWF0ZXItdGhhbi1lcXVhbFwiLFwic2hvcnR5XCI6IFwiZ3JlYXRlci10aGFuLWVxdWFsXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZ3JpbWFjZVwiLFwic2hvcnR5XCI6IFwiZ3JpbWFjZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWdyaW5cIixcInNob3J0eVwiOiBcImdyaW5cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1ncmluLWFsdFwiLFwic2hvcnR5XCI6IFwiZ3Jpbi1hbHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1ncmluLWJlYW1cIixcInNob3J0eVwiOiBcImdyaW4tYmVhbVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWdyaW4tYmVhbS1zd2VhdFwiLFwic2hvcnR5XCI6IFwiZ3Jpbi1iZWFtLXN3ZWF0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZ3Jpbi1oZWFydHNcIixcInNob3J0eVwiOiBcImdyaW4taGVhcnRzXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZ3Jpbi1zcXVpbnRcIixcInNob3J0eVwiOiBcImdyaW4tc3F1aW50XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZ3Jpbi1zcXVpbnQtdGVhcnNcIixcInNob3J0eVwiOiBcImdyaW4tc3F1aW50LXRlYXJzXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZ3Jpbi1zdGFyc1wiLFwic2hvcnR5XCI6IFwiZ3Jpbi1zdGFyc1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWdyaW4tdGVhcnNcIixcInNob3J0eVwiOiBcImdyaW4tdGVhcnNcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1ncmluLXRvbmd1ZVwiLFwic2hvcnR5XCI6IFwiZ3Jpbi10b25ndWVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1ncmluLXRvbmd1ZS1zcXVpbnRcIixcInNob3J0eVwiOiBcImdyaW4tdG9uZ3VlLXNxdWludFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWdyaW4tdG9uZ3VlLXdpbmtcIixcInNob3J0eVwiOiBcImdyaW4tdG9uZ3VlLXdpbmtcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1ncmluLXdpbmtcIixcInNob3J0eVwiOiBcImdyaW4td2lua1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWdyaXAtaG9yaXpvbnRhbFwiLFwic2hvcnR5XCI6IFwiZ3JpcC1ob3Jpem9udGFsXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtZ3JpcC12ZXJ0aWNhbFwiLFwic2hvcnR5XCI6IFwiZ3JpcC12ZXJ0aWNhbFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWgtc3F1YXJlXCIsXCJzaG9ydHlcIjogXCJoLXNxdWFyZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWhhbXNhXCIsXCJzaG9ydHlcIjogXCJoYW1zYVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWhhbmQtaG9sZGluZ1wiLFwic2hvcnR5XCI6IFwiaGFuZC1ob2xkaW5nXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtaGFuZC1ob2xkaW5nLWhlYXJ0XCIsXCJzaG9ydHlcIjogXCJoYW5kLWhvbGRpbmctaGVhcnRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1oYW5kLWhvbGRpbmctdXNkXCIsXCJzaG9ydHlcIjogXCJoYW5kLWhvbGRpbmctdXNkXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtaGFuZC1saXphcmRcIixcInNob3J0eVwiOiBcImhhbmQtbGl6YXJkXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtaGFuZC1wYXBlclwiLFwic2hvcnR5XCI6IFwiaGFuZC1wYXBlclwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWhhbmQtcGVhY2VcIixcInNob3J0eVwiOiBcImhhbmQtcGVhY2VcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1oYW5kLXBvaW50LWRvd25cIixcInNob3J0eVwiOiBcImhhbmQtcG9pbnQtZG93blwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWhhbmQtcG9pbnQtbGVmdFwiLFwic2hvcnR5XCI6IFwiaGFuZC1wb2ludC1sZWZ0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtaGFuZC1wb2ludC1yaWdodFwiLFwic2hvcnR5XCI6IFwiaGFuZC1wb2ludC1yaWdodFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWhhbmQtcG9pbnQtdXBcIixcInNob3J0eVwiOiBcImhhbmQtcG9pbnQtdXBcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1oYW5kLXBvaW50ZXJcIixcInNob3J0eVwiOiBcImhhbmQtcG9pbnRlclwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWhhbmQtcm9ja1wiLFwic2hvcnR5XCI6IFwiaGFuZC1yb2NrXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtaGFuZC1zY2lzc29yc1wiLFwic2hvcnR5XCI6IFwiaGFuZC1zY2lzc29yc1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWhhbmQtc3BvY2tcIixcInNob3J0eVwiOiBcImhhbmQtc3BvY2tcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1oYW5kc1wiLFwic2hvcnR5XCI6IFwiaGFuZHNcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1oYW5kcy1oZWxwaW5nXCIsXCJzaG9ydHlcIjogXCJoYW5kcy1oZWxwaW5nXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtaGFuZHNoYWtlXCIsXCJzaG9ydHlcIjogXCJoYW5kc2hha2VcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1oYXNodGFnXCIsXCJzaG9ydHlcIjogXCJoYXNodGFnXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtaGF5a2FsXCIsXCJzaG9ydHlcIjogXCJoYXlrYWxcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1oZGRcIixcInNob3J0eVwiOiBcImhkZFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWhlYWRpbmdcIixcInNob3J0eVwiOiBcImhlYWRpbmdcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1oZWFkcGhvbmVzXCIsXCJzaG9ydHlcIjogXCJoZWFkcGhvbmVzXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtaGVhZHBob25lcy1hbHRcIixcInNob3J0eVwiOiBcImhlYWRwaG9uZXMtYWx0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtaGVhZHNldFwiLFwic2hvcnR5XCI6IFwiaGVhZHNldFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWhlYXJ0XCIsXCJzaG9ydHlcIjogXCJoZWFydFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWhlYXJ0YmVhdFwiLFwic2hvcnR5XCI6IFwiaGVhcnRiZWF0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtaGVsaWNvcHRlclwiLFwic2hvcnR5XCI6IFwiaGVsaWNvcHRlclwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWhpZ2hsaWdodGVyXCIsXCJzaG9ydHlcIjogXCJoaWdobGlnaHRlclwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWhpc3RvcnlcIixcInNob3J0eVwiOiBcImhpc3RvcnlcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1ob2NrZXktcHVja1wiLFwic2hvcnR5XCI6IFwiaG9ja2V5LXB1Y2tcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1ob21lXCIsXCJzaG9ydHlcIjogXCJob21lXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtaG9zcGl0YWxcIixcInNob3J0eVwiOiBcImhvc3BpdGFsXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtaG9zcGl0YWwtYWx0XCIsXCJzaG9ydHlcIjogXCJob3NwaXRhbC1hbHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1ob3NwaXRhbC1zeW1ib2xcIixcInNob3J0eVwiOiBcImhvc3BpdGFsLXN5bWJvbFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWhvdC10dWJcIixcInNob3J0eVwiOiBcImhvdC10dWJcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1ob3RlbFwiLFwic2hvcnR5XCI6IFwiaG90ZWxcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1ob3VyZ2xhc3NcIixcInNob3J0eVwiOiBcImhvdXJnbGFzc1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWhvdXJnbGFzcy1lbmRcIixcInNob3J0eVwiOiBcImhvdXJnbGFzcy1lbmRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1ob3VyZ2xhc3MtaGFsZlwiLFwic2hvcnR5XCI6IFwiaG91cmdsYXNzLWhhbGZcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1ob3VyZ2xhc3Mtc3RhcnRcIixcInNob3J0eVwiOiBcImhvdXJnbGFzcy1zdGFydFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWktY3Vyc29yXCIsXCJzaG9ydHlcIjogXCJpLWN1cnNvclwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWlkLWJhZGdlXCIsXCJzaG9ydHlcIjogXCJpZC1iYWRnZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWlkLWNhcmRcIixcInNob3J0eVwiOiBcImlkLWNhcmRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1pZC1jYXJkLWFsdFwiLFwic2hvcnR5XCI6IFwiaWQtY2FyZC1hbHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1pbWFnZVwiLFwic2hvcnR5XCI6IFwiaW1hZ2VcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1pbWFnZXNcIixcInNob3J0eVwiOiBcImltYWdlc1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWluYm94XCIsXCJzaG9ydHlcIjogXCJpbmJveFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWluZGVudFwiLFwic2hvcnR5XCI6IFwiaW5kZW50XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtaW5kdXN0cnlcIixcInNob3J0eVwiOiBcImluZHVzdHJ5XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtaW5maW5pdHlcIixcInNob3J0eVwiOiBcImluZmluaXR5XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtaW5mb1wiLFwic2hvcnR5XCI6IFwiaW5mb1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWluZm8tY2lyY2xlXCIsXCJzaG9ydHlcIjogXCJpbmZvLWNpcmNsZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWl0YWxpY1wiLFwic2hvcnR5XCI6IFwiaXRhbGljXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtamVkaVwiLFwic2hvcnR5XCI6IFwiamVkaVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWpvaW50XCIsXCJzaG9ydHlcIjogXCJqb2ludFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWpvdXJuYWwtd2hpbGxzXCIsXCJzaG9ydHlcIjogXCJqb3VybmFsLXdoaWxsc1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWthYWJhXCIsXCJzaG9ydHlcIjogXCJrYWFiYVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWtleVwiLFwic2hvcnR5XCI6IFwia2V5XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEta2V5Ym9hcmRcIixcInNob3J0eVwiOiBcImtleWJvYXJkXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEta2hhbmRhXCIsXCJzaG9ydHlcIjogXCJraGFuZGFcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1raXNzXCIsXCJzaG9ydHlcIjogXCJraXNzXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEta2lzcy1iZWFtXCIsXCJzaG9ydHlcIjogXCJraXNzLWJlYW1cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1raXNzLXdpbmstaGVhcnRcIixcInNob3J0eVwiOiBcImtpc3Mtd2luay1oZWFydFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWtpd2ktYmlyZFwiLFwic2hvcnR5XCI6IFwia2l3aS1iaXJkXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbGFuZG1hcmtcIixcInNob3J0eVwiOiBcImxhbmRtYXJrXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbGFuZ3VhZ2VcIixcInNob3J0eVwiOiBcImxhbmd1YWdlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbGFwdG9wXCIsXCJzaG9ydHlcIjogXCJsYXB0b3BcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1sYXB0b3AtY29kZVwiLFwic2hvcnR5XCI6IFwibGFwdG9wLWNvZGVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1sYXVnaFwiLFwic2hvcnR5XCI6IFwibGF1Z2hcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1sYXVnaC1iZWFtXCIsXCJzaG9ydHlcIjogXCJsYXVnaC1iZWFtXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbGF1Z2gtc3F1aW50XCIsXCJzaG9ydHlcIjogXCJsYXVnaC1zcXVpbnRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1sYXVnaC13aW5rXCIsXCJzaG9ydHlcIjogXCJsYXVnaC13aW5rXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbGF5ZXItZ3JvdXBcIixcInNob3J0eVwiOiBcImxheWVyLWdyb3VwXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbGVhZlwiLFwic2hvcnR5XCI6IFwibGVhZlwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWxlbW9uXCIsXCJzaG9ydHlcIjogXCJsZW1vblwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWxlc3MtdGhhblwiLFwic2hvcnR5XCI6IFwibGVzcy10aGFuXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbGVzcy10aGFuLWVxdWFsXCIsXCJzaG9ydHlcIjogXCJsZXNzLXRoYW4tZXF1YWxcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1sZXZlbC1kb3duLWFsdFwiLFwic2hvcnR5XCI6IFwibGV2ZWwtZG93bi1hbHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1sZXZlbC11cC1hbHRcIixcInNob3J0eVwiOiBcImxldmVsLXVwLWFsdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWxpZmUtcmluZ1wiLFwic2hvcnR5XCI6IFwibGlmZS1yaW5nXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbGlnaHRidWxiXCIsXCJzaG9ydHlcIjogXCJsaWdodGJ1bGJcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1saW5rXCIsXCJzaG9ydHlcIjogXCJsaW5rXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbGlyYS1zaWduXCIsXCJzaG9ydHlcIjogXCJsaXJhLXNpZ25cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1saXN0XCIsXCJzaG9ydHlcIjogXCJsaXN0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbGlzdC1hbHRcIixcInNob3J0eVwiOiBcImxpc3QtYWx0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbGlzdC1vbFwiLFwic2hvcnR5XCI6IFwibGlzdC1vbFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWxpc3QtdWxcIixcInNob3J0eVwiOiBcImxpc3QtdWxcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1sb2NhdGlvbi1hcnJvd1wiLFwic2hvcnR5XCI6IFwibG9jYXRpb24tYXJyb3dcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1sb2NrXCIsXCJzaG9ydHlcIjogXCJsb2NrXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbG9jay1vcGVuXCIsXCJzaG9ydHlcIjogXCJsb2NrLW9wZW5cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1sb25nLWFycm93LWFsdC1kb3duXCIsXCJzaG9ydHlcIjogXCJsb25nLWFycm93LWFsdC1kb3duXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbG9uZy1hcnJvdy1hbHQtbGVmdFwiLFwic2hvcnR5XCI6IFwibG9uZy1hcnJvdy1hbHQtbGVmdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWxvbmctYXJyb3ctYWx0LXJpZ2h0XCIsXCJzaG9ydHlcIjogXCJsb25nLWFycm93LWFsdC1yaWdodFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWxvbmctYXJyb3ctYWx0LXVwXCIsXCJzaG9ydHlcIjogXCJsb25nLWFycm93LWFsdC11cFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLWxvdy12aXNpb25cIixcInNob3J0eVwiOiBcImxvdy12aXNpb25cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1sdWdnYWdlLWNhcnRcIixcInNob3J0eVwiOiBcImx1Z2dhZ2UtY2FydFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLW1hZ2ljXCIsXCJzaG9ydHlcIjogXCJtYWdpY1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLW1hZ25ldFwiLFwic2hvcnR5XCI6IFwibWFnbmV0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbWFpbC1idWxrXCIsXCJzaG9ydHlcIjogXCJtYWlsLWJ1bGtcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1tYWxlXCIsXCJzaG9ydHlcIjogXCJtYWxlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbWFwXCIsXCJzaG9ydHlcIjogXCJtYXBcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1tYXAtbWFya2VkXCIsXCJzaG9ydHlcIjogXCJtYXAtbWFya2VkXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbWFwLW1hcmtlZC1hbHRcIixcInNob3J0eVwiOiBcIm1hcC1tYXJrZWQtYWx0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbWFwLW1hcmtlclwiLFwic2hvcnR5XCI6IFwibWFwLW1hcmtlclwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLW1hcC1tYXJrZXItYWx0XCIsXCJzaG9ydHlcIjogXCJtYXAtbWFya2VyLWFsdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLW1hcC1waW5cIixcInNob3J0eVwiOiBcIm1hcC1waW5cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1tYXAtc2lnbnNcIixcInNob3J0eVwiOiBcIm1hcC1zaWduc1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLW1hcmtlclwiLFwic2hvcnR5XCI6IFwibWFya2VyXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbWFyc1wiLFwic2hvcnR5XCI6IFwibWFyc1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLW1hcnMtZG91YmxlXCIsXCJzaG9ydHlcIjogXCJtYXJzLWRvdWJsZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLW1hcnMtc3Ryb2tlXCIsXCJzaG9ydHlcIjogXCJtYXJzLXN0cm9rZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLW1hcnMtc3Ryb2tlLWhcIixcInNob3J0eVwiOiBcIm1hcnMtc3Ryb2tlLWhcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1tYXJzLXN0cm9rZS12XCIsXCJzaG9ydHlcIjogXCJtYXJzLXN0cm9rZS12XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbWVkYWxcIixcInNob3J0eVwiOiBcIm1lZGFsXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbWVka2l0XCIsXCJzaG9ydHlcIjogXCJtZWRraXRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1tZWhcIixcInNob3J0eVwiOiBcIm1laFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLW1laC1ibGFua1wiLFwic2hvcnR5XCI6IFwibWVoLWJsYW5rXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbWVoLXJvbGxpbmctZXllc1wiLFwic2hvcnR5XCI6IFwibWVoLXJvbGxpbmctZXllc1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLW1lbW9yeVwiLFwic2hvcnR5XCI6IFwibWVtb3J5XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbWVub3JhaFwiLFwic2hvcnR5XCI6IFwibWVub3JhaFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLW1lcmN1cnlcIixcInNob3J0eVwiOiBcIm1lcmN1cnlcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1taWNyb2NoaXBcIixcInNob3J0eVwiOiBcIm1pY3JvY2hpcFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLW1pY3JvcGhvbmVcIixcInNob3J0eVwiOiBcIm1pY3JvcGhvbmVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1taWNyb3Bob25lLWFsdFwiLFwic2hvcnR5XCI6IFwibWljcm9waG9uZS1hbHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1taWNyb3Bob25lLWFsdC1zbGFzaFwiLFwic2hvcnR5XCI6IFwibWljcm9waG9uZS1hbHQtc2xhc2hcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1taWNyb3Bob25lLXNsYXNoXCIsXCJzaG9ydHlcIjogXCJtaWNyb3Bob25lLXNsYXNoXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbWljcm9zY29wZVwiLFwic2hvcnR5XCI6IFwibWljcm9zY29wZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLW1pbnVzXCIsXCJzaG9ydHlcIjogXCJtaW51c1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLW1pbnVzLWNpcmNsZVwiLFwic2hvcnR5XCI6IFwibWludXMtY2lyY2xlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbWludXMtc3F1YXJlXCIsXCJzaG9ydHlcIjogXCJtaW51cy1zcXVhcmVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1tb2JpbGVcIixcInNob3J0eVwiOiBcIm1vYmlsZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLW1vYmlsZS1hbHRcIixcInNob3J0eVwiOiBcIm1vYmlsZS1hbHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1tb25leS1iaWxsXCIsXCJzaG9ydHlcIjogXCJtb25leS1iaWxsXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbW9uZXktYmlsbC1hbHRcIixcInNob3J0eVwiOiBcIm1vbmV5LWJpbGwtYWx0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbW9uZXktYmlsbC13YXZlXCIsXCJzaG9ydHlcIjogXCJtb25leS1iaWxsLXdhdmVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1tb25leS1iaWxsLXdhdmUtYWx0XCIsXCJzaG9ydHlcIjogXCJtb25leS1iaWxsLXdhdmUtYWx0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbW9uZXktY2hlY2tcIixcInNob3J0eVwiOiBcIm1vbmV5LWNoZWNrXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbW9uZXktY2hlY2stYWx0XCIsXCJzaG9ydHlcIjogXCJtb25leS1jaGVjay1hbHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1tb251bWVudFwiLFwic2hvcnR5XCI6IFwibW9udW1lbnRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1tb29uXCIsXCJzaG9ydHlcIjogXCJtb29uXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbW9ydGFyLXBlc3RsZVwiLFwic2hvcnR5XCI6IFwibW9ydGFyLXBlc3RsZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLW1vc3F1ZVwiLFwic2hvcnR5XCI6IFwibW9zcXVlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbW90b3JjeWNsZVwiLFwic2hvcnR5XCI6IFwibW90b3JjeWNsZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLW1vdXNlLXBvaW50ZXJcIixcInNob3J0eVwiOiBcIm1vdXNlLXBvaW50ZXJcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1tdXNpY1wiLFwic2hvcnR5XCI6IFwibXVzaWNcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1uZXV0ZXJcIixcInNob3J0eVwiOiBcIm5ldXRlclwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLW5ld3NwYXBlclwiLFwic2hvcnR5XCI6IFwibmV3c3BhcGVyXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtbm90LWVxdWFsXCIsXCJzaG9ydHlcIjogXCJub3QtZXF1YWxcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1ub3Rlcy1tZWRpY2FsXCIsXCJzaG9ydHlcIjogXCJub3Rlcy1tZWRpY2FsXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtb2JqZWN0LWdyb3VwXCIsXCJzaG9ydHlcIjogXCJvYmplY3QtZ3JvdXBcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1vYmplY3QtdW5ncm91cFwiLFwic2hvcnR5XCI6IFwib2JqZWN0LXVuZ3JvdXBcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1vaWwtY2FuXCIsXCJzaG9ydHlcIjogXCJvaWwtY2FuXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtb21cIixcInNob3J0eVwiOiBcIm9tXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtb3V0ZGVudFwiLFwic2hvcnR5XCI6IFwib3V0ZGVudFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXBhaW50LWJydXNoXCIsXCJzaG9ydHlcIjogXCJwYWludC1icnVzaFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXBhaW50LXJvbGxlclwiLFwic2hvcnR5XCI6IFwicGFpbnQtcm9sbGVyXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcGFsZXR0ZVwiLFwic2hvcnR5XCI6IFwicGFsZXR0ZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXBhbGxldFwiLFwic2hvcnR5XCI6IFwicGFsbGV0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcGFwZXItcGxhbmVcIixcInNob3J0eVwiOiBcInBhcGVyLXBsYW5lXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcGFwZXJjbGlwXCIsXCJzaG9ydHlcIjogXCJwYXBlcmNsaXBcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1wYXJhY2h1dGUtYm94XCIsXCJzaG9ydHlcIjogXCJwYXJhY2h1dGUtYm94XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcGFyYWdyYXBoXCIsXCJzaG9ydHlcIjogXCJwYXJhZ3JhcGhcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1wYXJraW5nXCIsXCJzaG9ydHlcIjogXCJwYXJraW5nXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcGFzc3BvcnRcIixcInNob3J0eVwiOiBcInBhc3Nwb3J0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcGFzdGFmYXJpYW5pc21cIixcInNob3J0eVwiOiBcInBhc3RhZmFyaWFuaXNtXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcGFzdGVcIixcInNob3J0eVwiOiBcInBhc3RlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcGF1c2VcIixcInNob3J0eVwiOiBcInBhdXNlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcGF1c2UtY2lyY2xlXCIsXCJzaG9ydHlcIjogXCJwYXVzZS1jaXJjbGVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1wYXdcIixcInNob3J0eVwiOiBcInBhd1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXBlYWNlXCIsXCJzaG9ydHlcIjogXCJwZWFjZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXBlblwiLFwic2hvcnR5XCI6IFwicGVuXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcGVuLWFsdFwiLFwic2hvcnR5XCI6IFwicGVuLWFsdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXBlbi1mYW5jeVwiLFwic2hvcnR5XCI6IFwicGVuLWZhbmN5XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcGVuLW5pYlwiLFwic2hvcnR5XCI6IFwicGVuLW5pYlwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXBlbi1zcXVhcmVcIixcInNob3J0eVwiOiBcInBlbi1zcXVhcmVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1wZW5jaWwtYWx0XCIsXCJzaG9ydHlcIjogXCJwZW5jaWwtYWx0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcGVuY2lsLXJ1bGVyXCIsXCJzaG9ydHlcIjogXCJwZW5jaWwtcnVsZXJcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1wZW9wbGUtY2FycnlcIixcInNob3J0eVwiOiBcInBlb3BsZS1jYXJyeVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXBlcmNlbnRcIixcInNob3J0eVwiOiBcInBlcmNlbnRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1wZXJjZW50YWdlXCIsXCJzaG9ydHlcIjogXCJwZXJjZW50YWdlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcGhvbmVcIixcInNob3J0eVwiOiBcInBob25lXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcGhvbmUtc2xhc2hcIixcInNob3J0eVwiOiBcInBob25lLXNsYXNoXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcGhvbmUtc3F1YXJlXCIsXCJzaG9ydHlcIjogXCJwaG9uZS1zcXVhcmVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1waG9uZS12b2x1bWVcIixcInNob3J0eVwiOiBcInBob25lLXZvbHVtZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXBpZ2d5LWJhbmtcIixcInNob3J0eVwiOiBcInBpZ2d5LWJhbmtcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1waWxsc1wiLFwic2hvcnR5XCI6IFwicGlsbHNcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1wbGFjZS1vZi13b3JzaGlwXCIsXCJzaG9ydHlcIjogXCJwbGFjZS1vZi13b3JzaGlwXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcGxhbmVcIixcInNob3J0eVwiOiBcInBsYW5lXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcGxhbmUtYXJyaXZhbFwiLFwic2hvcnR5XCI6IFwicGxhbmUtYXJyaXZhbFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXBsYW5lLWRlcGFydHVyZVwiLFwic2hvcnR5XCI6IFwicGxhbmUtZGVwYXJ0dXJlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcGxheVwiLFwic2hvcnR5XCI6IFwicGxheVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXBsYXktY2lyY2xlXCIsXCJzaG9ydHlcIjogXCJwbGF5LWNpcmNsZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXBsdWdcIixcInNob3J0eVwiOiBcInBsdWdcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1wbHVzXCIsXCJzaG9ydHlcIjogXCJwbHVzXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcGx1cy1jaXJjbGVcIixcInNob3J0eVwiOiBcInBsdXMtY2lyY2xlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcGx1cy1zcXVhcmVcIixcInNob3J0eVwiOiBcInBsdXMtc3F1YXJlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcG9kY2FzdFwiLFwic2hvcnR5XCI6IFwicG9kY2FzdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXBvbGxcIixcInNob3J0eVwiOiBcInBvbGxcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1wb2xsLWhcIixcInNob3J0eVwiOiBcInBvbGwtaFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXBvb1wiLFwic2hvcnR5XCI6IFwicG9vXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcG9vcFwiLFwic2hvcnR5XCI6IFwicG9vcFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXBvcnRyYWl0XCIsXCJzaG9ydHlcIjogXCJwb3J0cmFpdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXBvdW5kLXNpZ25cIixcInNob3J0eVwiOiBcInBvdW5kLXNpZ25cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1wb3dlci1vZmZcIixcInNob3J0eVwiOiBcInBvd2VyLW9mZlwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXByYXlcIixcInNob3J0eVwiOiBcInByYXlcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1wcmF5aW5nLWhhbmRzXCIsXCJzaG9ydHlcIjogXCJwcmF5aW5nLWhhbmRzXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcHJlc2NyaXB0aW9uXCIsXCJzaG9ydHlcIjogXCJwcmVzY3JpcHRpb25cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1wcmVzY3JpcHRpb24tYm90dGxlXCIsXCJzaG9ydHlcIjogXCJwcmVzY3JpcHRpb24tYm90dGxlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcHJlc2NyaXB0aW9uLWJvdHRsZS1hbHRcIixcInNob3J0eVwiOiBcInByZXNjcmlwdGlvbi1ib3R0bGUtYWx0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcHJpbnRcIixcInNob3J0eVwiOiBcInByaW50XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcHJvY2VkdXJlc1wiLFwic2hvcnR5XCI6IFwicHJvY2VkdXJlc1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXByb2plY3QtZGlhZ3JhbVwiLFwic2hvcnR5XCI6IFwicHJvamVjdC1kaWFncmFtXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcHV6emxlLXBpZWNlXCIsXCJzaG9ydHlcIjogXCJwdXp6bGUtcGllY2VcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1xcmNvZGVcIixcInNob3J0eVwiOiBcInFyY29kZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXF1ZXN0aW9uXCIsXCJzaG9ydHlcIjogXCJxdWVzdGlvblwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXF1ZXN0aW9uLWNpcmNsZVwiLFwic2hvcnR5XCI6IFwicXVlc3Rpb24tY2lyY2xlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcXVpZGRpdGNoXCIsXCJzaG9ydHlcIjogXCJxdWlkZGl0Y2hcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1xdW90ZS1sZWZ0XCIsXCJzaG9ydHlcIjogXCJxdW90ZS1sZWZ0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcXVvdGUtcmlnaHRcIixcInNob3J0eVwiOiBcInF1b3RlLXJpZ2h0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcXVyYW5cIixcInNob3J0eVwiOiBcInF1cmFuXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcmFuZG9tXCIsXCJzaG9ydHlcIjogXCJyYW5kb21cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1yZWNlaXB0XCIsXCJzaG9ydHlcIjogXCJyZWNlaXB0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcmVjeWNsZVwiLFwic2hvcnR5XCI6IFwicmVjeWNsZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXJlZG9cIixcInNob3J0eVwiOiBcInJlZG9cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1yZWRvLWFsdFwiLFwic2hvcnR5XCI6IFwicmVkby1hbHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1yZWdpc3RlcmVkXCIsXCJzaG9ydHlcIjogXCJyZWdpc3RlcmVkXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcmVwbHlcIixcInNob3J0eVwiOiBcInJlcGx5XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcmVwbHktYWxsXCIsXCJzaG9ydHlcIjogXCJyZXBseS1hbGxcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1yZXR3ZWV0XCIsXCJzaG9ydHlcIjogXCJyZXR3ZWV0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcmliYm9uXCIsXCJzaG9ydHlcIjogXCJyaWJib25cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1yb2FkXCIsXCJzaG9ydHlcIjogXCJyb2FkXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcm9ib3RcIixcInNob3J0eVwiOiBcInJvYm90XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcm9ja2V0XCIsXCJzaG9ydHlcIjogXCJyb2NrZXRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1yb3V0ZVwiLFwic2hvcnR5XCI6IFwicm91dGVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1yc3NcIixcInNob3J0eVwiOiBcInJzc1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXJzcy1zcXVhcmVcIixcInNob3J0eVwiOiBcInJzcy1zcXVhcmVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1ydWJsZS1zaWduXCIsXCJzaG9ydHlcIjogXCJydWJsZS1zaWduXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcnVsZXJcIixcInNob3J0eVwiOiBcInJ1bGVyXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcnVsZXItY29tYmluZWRcIixcInNob3J0eVwiOiBcInJ1bGVyLWNvbWJpbmVkXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtcnVsZXItaG9yaXpvbnRhbFwiLFwic2hvcnR5XCI6IFwicnVsZXItaG9yaXpvbnRhbFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXJ1bGVyLXZlcnRpY2FsXCIsXCJzaG9ydHlcIjogXCJydWxlci12ZXJ0aWNhbFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXJ1cGVlLXNpZ25cIixcInNob3J0eVwiOiBcInJ1cGVlLXNpZ25cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zYWQtY3J5XCIsXCJzaG9ydHlcIjogXCJzYWQtY3J5XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc2FkLXRlYXJcIixcInNob3J0eVwiOiBcInNhZC10ZWFyXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc2F2ZVwiLFwic2hvcnR5XCI6IFwic2F2ZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXNjaG9vbFwiLFwic2hvcnR5XCI6IFwic2Nob29sXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc2NyZXdkcml2ZXJcIixcInNob3J0eVwiOiBcInNjcmV3ZHJpdmVyXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc2VhcmNoXCIsXCJzaG9ydHlcIjogXCJzZWFyY2hcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zZWFyY2gtZG9sbGFyXCIsXCJzaG9ydHlcIjogXCJzZWFyY2gtZG9sbGFyXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc2VhcmNoLWxvY2F0aW9uXCIsXCJzaG9ydHlcIjogXCJzZWFyY2gtbG9jYXRpb25cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zZWFyY2gtbWludXNcIixcInNob3J0eVwiOiBcInNlYXJjaC1taW51c1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXNlYXJjaC1wbHVzXCIsXCJzaG9ydHlcIjogXCJzZWFyY2gtcGx1c1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXNlZWRsaW5nXCIsXCJzaG9ydHlcIjogXCJzZWVkbGluZ1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXNlcnZlclwiLFwic2hvcnR5XCI6IFwic2VydmVyXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc2hhcGVzXCIsXCJzaG9ydHlcIjogXCJzaGFwZXNcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zaGFyZVwiLFwic2hvcnR5XCI6IFwic2hhcmVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zaGFyZS1hbHRcIixcInNob3J0eVwiOiBcInNoYXJlLWFsdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXNoYXJlLWFsdC1zcXVhcmVcIixcInNob3J0eVwiOiBcInNoYXJlLWFsdC1zcXVhcmVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zaGFyZS1zcXVhcmVcIixcInNob3J0eVwiOiBcInNoYXJlLXNxdWFyZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXNoZWtlbC1zaWduXCIsXCJzaG9ydHlcIjogXCJzaGVrZWwtc2lnblwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXNoaWVsZC1hbHRcIixcInNob3J0eVwiOiBcInNoaWVsZC1hbHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zaGlwXCIsXCJzaG9ydHlcIjogXCJzaGlwXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc2hpcHBpbmctZmFzdFwiLFwic2hvcnR5XCI6IFwic2hpcHBpbmctZmFzdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXNob2UtcHJpbnRzXCIsXCJzaG9ydHlcIjogXCJzaG9lLXByaW50c1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXNob3BwaW5nLWJhZ1wiLFwic2hvcnR5XCI6IFwic2hvcHBpbmctYmFnXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc2hvcHBpbmctYmFza2V0XCIsXCJzaG9ydHlcIjogXCJzaG9wcGluZy1iYXNrZXRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zaG9wcGluZy1jYXJ0XCIsXCJzaG9ydHlcIjogXCJzaG9wcGluZy1jYXJ0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc2hvd2VyXCIsXCJzaG9ydHlcIjogXCJzaG93ZXJcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zaHV0dGxlLXZhblwiLFwic2hvcnR5XCI6IFwic2h1dHRsZS12YW5cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zaWduXCIsXCJzaG9ydHlcIjogXCJzaWduXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc2lnbi1pbi1hbHRcIixcInNob3J0eVwiOiBcInNpZ24taW4tYWx0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc2lnbi1sYW5ndWFnZVwiLFwic2hvcnR5XCI6IFwic2lnbi1sYW5ndWFnZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXNpZ24tb3V0LWFsdFwiLFwic2hvcnR5XCI6IFwic2lnbi1vdXQtYWx0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc2lnbmFsXCIsXCJzaG9ydHlcIjogXCJzaWduYWxcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zaWduYXR1cmVcIixcInNob3J0eVwiOiBcInNpZ25hdHVyZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXNpdGVtYXBcIixcInNob3J0eVwiOiBcInNpdGVtYXBcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1za3VsbFwiLFwic2hvcnR5XCI6IFwic2t1bGxcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zbGlkZXJzLWhcIixcInNob3J0eVwiOiBcInNsaWRlcnMtaFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXNtaWxlXCIsXCJzaG9ydHlcIjogXCJzbWlsZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXNtaWxlLWJlYW1cIixcInNob3J0eVwiOiBcInNtaWxlLWJlYW1cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zbWlsZS13aW5rXCIsXCJzaG9ydHlcIjogXCJzbWlsZS13aW5rXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc21va2luZ1wiLFwic2hvcnR5XCI6IFwic21va2luZ1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXNtb2tpbmctYmFuXCIsXCJzaG9ydHlcIjogXCJzbW9raW5nLWJhblwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXNub3dmbGFrZVwiLFwic2hvcnR5XCI6IFwic25vd2ZsYWtlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc29ja3NcIixcInNob3J0eVwiOiBcInNvY2tzXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc29sYXItcGFuZWxcIixcInNob3J0eVwiOiBcInNvbGFyLXBhbmVsXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc29ydFwiLFwic2hvcnR5XCI6IFwic29ydFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXNvcnQtYWxwaGEtZG93blwiLFwic2hvcnR5XCI6IFwic29ydC1hbHBoYS1kb3duXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc29ydC1hbHBoYS11cFwiLFwic2hvcnR5XCI6IFwic29ydC1hbHBoYS11cFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXNvcnQtYW1vdW50LWRvd25cIixcInNob3J0eVwiOiBcInNvcnQtYW1vdW50LWRvd25cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zb3J0LWFtb3VudC11cFwiLFwic2hvcnR5XCI6IFwic29ydC1hbW91bnQtdXBcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zb3J0LWRvd25cIixcInNob3J0eVwiOiBcInNvcnQtZG93blwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXNvcnQtbnVtZXJpYy1kb3duXCIsXCJzaG9ydHlcIjogXCJzb3J0LW51bWVyaWMtZG93blwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXNvcnQtbnVtZXJpYy11cFwiLFwic2hvcnR5XCI6IFwic29ydC1udW1lcmljLXVwXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc29ydC11cFwiLFwic2hvcnR5XCI6IFwic29ydC11cFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXNwYVwiLFwic2hvcnR5XCI6IFwic3BhXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc3BhY2Utc2h1dHRsZVwiLFwic2hvcnR5XCI6IFwic3BhY2Utc2h1dHRsZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXNwaW5uZXJcIixcInNob3J0eVwiOiBcInNwaW5uZXJcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zcGxvdGNoXCIsXCJzaG9ydHlcIjogXCJzcGxvdGNoXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc3ByYXktY2FuXCIsXCJzaG9ydHlcIjogXCJzcHJheS1jYW5cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zcXVhcmVcIixcInNob3J0eVwiOiBcInNxdWFyZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXNxdWFyZS1mdWxsXCIsXCJzaG9ydHlcIjogXCJzcXVhcmUtZnVsbFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXNxdWFyZS1yb290LWFsdFwiLFwic2hvcnR5XCI6IFwic3F1YXJlLXJvb3QtYWx0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc3RhbXBcIixcInNob3J0eVwiOiBcInN0YW1wXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc3RhclwiLFwic2hvcnR5XCI6IFwic3RhclwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXN0YXItYW5kLWNyZXNjZW50XCIsXCJzaG9ydHlcIjogXCJzdGFyLWFuZC1jcmVzY2VudFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXN0YXItaGFsZlwiLFwic2hvcnR5XCI6IFwic3Rhci1oYWxmXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc3Rhci1oYWxmLWFsdFwiLFwic2hvcnR5XCI6IFwic3Rhci1oYWxmLWFsdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXN0YXItb2YtZGF2aWRcIixcInNob3J0eVwiOiBcInN0YXItb2YtZGF2aWRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zdGFyLW9mLWxpZmVcIixcInNob3J0eVwiOiBcInN0YXItb2YtbGlmZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXN0ZXAtYmFja3dhcmRcIixcInNob3J0eVwiOiBcInN0ZXAtYmFja3dhcmRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zdGVwLWZvcndhcmRcIixcInNob3J0eVwiOiBcInN0ZXAtZm9yd2FyZFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXN0ZXRob3Njb3BlXCIsXCJzaG9ydHlcIjogXCJzdGV0aG9zY29wZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXN0aWNreS1ub3RlXCIsXCJzaG9ydHlcIjogXCJzdGlja3ktbm90ZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXN0b3BcIixcInNob3J0eVwiOiBcInN0b3BcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zdG9wLWNpcmNsZVwiLFwic2hvcnR5XCI6IFwic3RvcC1jaXJjbGVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zdG9wd2F0Y2hcIixcInNob3J0eVwiOiBcInN0b3B3YXRjaFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXN0b3JlXCIsXCJzaG9ydHlcIjogXCJzdG9yZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXN0b3JlLWFsdFwiLFwic2hvcnR5XCI6IFwic3RvcmUtYWx0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc3RyZWFtXCIsXCJzaG9ydHlcIjogXCJzdHJlYW1cIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zdHJlZXQtdmlld1wiLFwic2hvcnR5XCI6IFwic3RyZWV0LXZpZXdcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zdHJpa2V0aHJvdWdoXCIsXCJzaG9ydHlcIjogXCJzdHJpa2V0aHJvdWdoXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc3Ryb29wd2FmZWxcIixcInNob3J0eVwiOiBcInN0cm9vcHdhZmVsXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc3Vic2NyaXB0XCIsXCJzaG9ydHlcIjogXCJzdWJzY3JpcHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zdWJ3YXlcIixcInNob3J0eVwiOiBcInN1YndheVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXN1aXRjYXNlXCIsXCJzaG9ydHlcIjogXCJzdWl0Y2FzZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXN1aXRjYXNlLXJvbGxpbmdcIixcInNob3J0eVwiOiBcInN1aXRjYXNlLXJvbGxpbmdcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zdW5cIixcInNob3J0eVwiOiBcInN1blwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXN1cGVyc2NyaXB0XCIsXCJzaG9ydHlcIjogXCJzdXBlcnNjcmlwdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXN1cnByaXNlXCIsXCJzaG9ydHlcIjogXCJzdXJwcmlzZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXN3YXRjaGJvb2tcIixcInNob3J0eVwiOiBcInN3YXRjaGJvb2tcIn0se1wiZnVsbFwiOiBcImZhcyBmYS1zd2ltbWVyXCIsXCJzaG9ydHlcIjogXCJzd2ltbWVyXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc3dpbW1pbmctcG9vbFwiLFwic2hvcnR5XCI6IFwic3dpbW1pbmctcG9vbFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXN5bmFnb2d1ZVwiLFwic2hvcnR5XCI6IFwic3luYWdvZ3VlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtc3luY1wiLFwic2hvcnR5XCI6IFwic3luY1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXN5bmMtYWx0XCIsXCJzaG9ydHlcIjogXCJzeW5jLWFsdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXN5cmluZ2VcIixcInNob3J0eVwiOiBcInN5cmluZ2VcIn0se1wiZnVsbFwiOiBcImZhcyBmYS10YWJsZVwiLFwic2hvcnR5XCI6IFwidGFibGVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS10YWJsZS10ZW5uaXNcIixcInNob3J0eVwiOiBcInRhYmxlLXRlbm5pc1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXRhYmxldFwiLFwic2hvcnR5XCI6IFwidGFibGV0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdGFibGV0LWFsdFwiLFwic2hvcnR5XCI6IFwidGFibGV0LWFsdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXRhYmxldHNcIixcInNob3J0eVwiOiBcInRhYmxldHNcIn0se1wiZnVsbFwiOiBcImZhcyBmYS10YWNob21ldGVyLWFsdFwiLFwic2hvcnR5XCI6IFwidGFjaG9tZXRlci1hbHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS10YWdcIixcInNob3J0eVwiOiBcInRhZ1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXRhZ3NcIixcInNob3J0eVwiOiBcInRhZ3NcIn0se1wiZnVsbFwiOiBcImZhcyBmYS10YXBlXCIsXCJzaG9ydHlcIjogXCJ0YXBlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdGFza3NcIixcInNob3J0eVwiOiBcInRhc2tzXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdGF4aVwiLFwic2hvcnR5XCI6IFwidGF4aVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXRlZXRoXCIsXCJzaG9ydHlcIjogXCJ0ZWV0aFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXRlZXRoLW9wZW5cIixcInNob3J0eVwiOiBcInRlZXRoLW9wZW5cIn0se1wiZnVsbFwiOiBcImZhcyBmYS10ZXJtaW5hbFwiLFwic2hvcnR5XCI6IFwidGVybWluYWxcIn0se1wiZnVsbFwiOiBcImZhcyBmYS10ZXh0LWhlaWdodFwiLFwic2hvcnR5XCI6IFwidGV4dC1oZWlnaHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS10ZXh0LXdpZHRoXCIsXCJzaG9ydHlcIjogXCJ0ZXh0LXdpZHRoXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdGhcIixcInNob3J0eVwiOiBcInRoXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdGgtbGFyZ2VcIixcInNob3J0eVwiOiBcInRoLWxhcmdlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdGgtbGlzdFwiLFwic2hvcnR5XCI6IFwidGgtbGlzdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXRoZWF0ZXItbWFza3NcIixcInNob3J0eVwiOiBcInRoZWF0ZXItbWFza3NcIn0se1wiZnVsbFwiOiBcImZhcyBmYS10aGVybW9tZXRlclwiLFwic2hvcnR5XCI6IFwidGhlcm1vbWV0ZXJcIn0se1wiZnVsbFwiOiBcImZhcyBmYS10aGVybW9tZXRlci1lbXB0eVwiLFwic2hvcnR5XCI6IFwidGhlcm1vbWV0ZXItZW1wdHlcIn0se1wiZnVsbFwiOiBcImZhcyBmYS10aGVybW9tZXRlci1mdWxsXCIsXCJzaG9ydHlcIjogXCJ0aGVybW9tZXRlci1mdWxsXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdGhlcm1vbWV0ZXItaGFsZlwiLFwic2hvcnR5XCI6IFwidGhlcm1vbWV0ZXItaGFsZlwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXRoZXJtb21ldGVyLXF1YXJ0ZXJcIixcInNob3J0eVwiOiBcInRoZXJtb21ldGVyLXF1YXJ0ZXJcIn0se1wiZnVsbFwiOiBcImZhcyBmYS10aGVybW9tZXRlci10aHJlZS1xdWFydGVyc1wiLFwic2hvcnR5XCI6IFwidGhlcm1vbWV0ZXItdGhyZWUtcXVhcnRlcnNcIn0se1wiZnVsbFwiOiBcImZhcyBmYS10aHVtYnMtZG93blwiLFwic2hvcnR5XCI6IFwidGh1bWJzLWRvd25cIn0se1wiZnVsbFwiOiBcImZhcyBmYS10aHVtYnMtdXBcIixcInNob3J0eVwiOiBcInRodW1icy11cFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXRodW1idGFja1wiLFwic2hvcnR5XCI6IFwidGh1bWJ0YWNrXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdGlja2V0LWFsdFwiLFwic2hvcnR5XCI6IFwidGlja2V0LWFsdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXRpbWVzXCIsXCJzaG9ydHlcIjogXCJ0aW1lc1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXRpbWVzLWNpcmNsZVwiLFwic2hvcnR5XCI6IFwidGltZXMtY2lyY2xlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdGludFwiLFwic2hvcnR5XCI6IFwidGludFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXRpbnQtc2xhc2hcIixcInNob3J0eVwiOiBcInRpbnQtc2xhc2hcIn0se1wiZnVsbFwiOiBcImZhcyBmYS10aXJlZFwiLFwic2hvcnR5XCI6IFwidGlyZWRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS10b2dnbGUtb2ZmXCIsXCJzaG9ydHlcIjogXCJ0b2dnbGUtb2ZmXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdG9nZ2xlLW9uXCIsXCJzaG9ydHlcIjogXCJ0b2dnbGUtb25cIn0se1wiZnVsbFwiOiBcImZhcyBmYS10b29sYm94XCIsXCJzaG9ydHlcIjogXCJ0b29sYm94XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdG9vdGhcIixcInNob3J0eVwiOiBcInRvb3RoXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdG9yYWhcIixcInNob3J0eVwiOiBcInRvcmFoXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdG9yaWktZ2F0ZVwiLFwic2hvcnR5XCI6IFwidG9yaWktZ2F0ZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXRyYWRlbWFya1wiLFwic2hvcnR5XCI6IFwidHJhZGVtYXJrXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdHJhZmZpYy1saWdodFwiLFwic2hvcnR5XCI6IFwidHJhZmZpYy1saWdodFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXRyYWluXCIsXCJzaG9ydHlcIjogXCJ0cmFpblwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXRyYW5zZ2VuZGVyXCIsXCJzaG9ydHlcIjogXCJ0cmFuc2dlbmRlclwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXRyYW5zZ2VuZGVyLWFsdFwiLFwic2hvcnR5XCI6IFwidHJhbnNnZW5kZXItYWx0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdHJhc2hcIixcInNob3J0eVwiOiBcInRyYXNoXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdHJhc2gtYWx0XCIsXCJzaG9ydHlcIjogXCJ0cmFzaC1hbHRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS10cmVlXCIsXCJzaG9ydHlcIjogXCJ0cmVlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdHJvcGh5XCIsXCJzaG9ydHlcIjogXCJ0cm9waHlcIn0se1wiZnVsbFwiOiBcImZhcyBmYS10cnVja1wiLFwic2hvcnR5XCI6IFwidHJ1Y2tcIn0se1wiZnVsbFwiOiBcImZhcyBmYS10cnVjay1sb2FkaW5nXCIsXCJzaG9ydHlcIjogXCJ0cnVjay1sb2FkaW5nXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdHJ1Y2stbW9uc3RlclwiLFwic2hvcnR5XCI6IFwidHJ1Y2stbW9uc3RlclwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXRydWNrLW1vdmluZ1wiLFwic2hvcnR5XCI6IFwidHJ1Y2stbW92aW5nXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdHJ1Y2stcGlja3VwXCIsXCJzaG9ydHlcIjogXCJ0cnVjay1waWNrdXBcIn0se1wiZnVsbFwiOiBcImZhcyBmYS10c2hpcnRcIixcInNob3J0eVwiOiBcInRzaGlydFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXR0eVwiLFwic2hvcnR5XCI6IFwidHR5XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdHZcIixcInNob3J0eVwiOiBcInR2XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdW1icmVsbGFcIixcInNob3J0eVwiOiBcInVtYnJlbGxhXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdW1icmVsbGEtYmVhY2hcIixcInNob3J0eVwiOiBcInVtYnJlbGxhLWJlYWNoXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdW5kZXJsaW5lXCIsXCJzaG9ydHlcIjogXCJ1bmRlcmxpbmVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS11bmRvXCIsXCJzaG9ydHlcIjogXCJ1bmRvXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdW5kby1hbHRcIixcInNob3J0eVwiOiBcInVuZG8tYWx0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdW5pdmVyc2FsLWFjY2Vzc1wiLFwic2hvcnR5XCI6IFwidW5pdmVyc2FsLWFjY2Vzc1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXVuaXZlcnNpdHlcIixcInNob3J0eVwiOiBcInVuaXZlcnNpdHlcIn0se1wiZnVsbFwiOiBcImZhcyBmYS11bmxpbmtcIixcInNob3J0eVwiOiBcInVubGlua1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXVubG9ja1wiLFwic2hvcnR5XCI6IFwidW5sb2NrXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdW5sb2NrLWFsdFwiLFwic2hvcnR5XCI6IFwidW5sb2NrLWFsdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXVwbG9hZFwiLFwic2hvcnR5XCI6IFwidXBsb2FkXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdXNlclwiLFwic2hvcnR5XCI6IFwidXNlclwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXVzZXItYWx0XCIsXCJzaG9ydHlcIjogXCJ1c2VyLWFsdFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXVzZXItYWx0LXNsYXNoXCIsXCJzaG9ydHlcIjogXCJ1c2VyLWFsdC1zbGFzaFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXVzZXItYXN0cm9uYXV0XCIsXCJzaG9ydHlcIjogXCJ1c2VyLWFzdHJvbmF1dFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXVzZXItY2hlY2tcIixcInNob3J0eVwiOiBcInVzZXItY2hlY2tcIn0se1wiZnVsbFwiOiBcImZhcyBmYS11c2VyLWNpcmNsZVwiLFwic2hvcnR5XCI6IFwidXNlci1jaXJjbGVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS11c2VyLWNsb2NrXCIsXCJzaG9ydHlcIjogXCJ1c2VyLWNsb2NrXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdXNlci1jb2dcIixcInNob3J0eVwiOiBcInVzZXItY29nXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdXNlci1lZGl0XCIsXCJzaG9ydHlcIjogXCJ1c2VyLWVkaXRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS11c2VyLWZyaWVuZHNcIixcInNob3J0eVwiOiBcInVzZXItZnJpZW5kc1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXVzZXItZ3JhZHVhdGVcIixcInNob3J0eVwiOiBcInVzZXItZ3JhZHVhdGVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS11c2VyLWxvY2tcIixcInNob3J0eVwiOiBcInVzZXItbG9ja1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXVzZXItbWRcIixcInNob3J0eVwiOiBcInVzZXItbWRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS11c2VyLW1pbnVzXCIsXCJzaG9ydHlcIjogXCJ1c2VyLW1pbnVzXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdXNlci1uaW5qYVwiLFwic2hvcnR5XCI6IFwidXNlci1uaW5qYVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXVzZXItcGx1c1wiLFwic2hvcnR5XCI6IFwidXNlci1wbHVzXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdXNlci1zZWNyZXRcIixcInNob3J0eVwiOiBcInVzZXItc2VjcmV0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdXNlci1zaGllbGRcIixcInNob3J0eVwiOiBcInVzZXItc2hpZWxkXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdXNlci1zbGFzaFwiLFwic2hvcnR5XCI6IFwidXNlci1zbGFzaFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXVzZXItdGFnXCIsXCJzaG9ydHlcIjogXCJ1c2VyLXRhZ1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXVzZXItdGllXCIsXCJzaG9ydHlcIjogXCJ1c2VyLXRpZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXVzZXItdGltZXNcIixcInNob3J0eVwiOiBcInVzZXItdGltZXNcIn0se1wiZnVsbFwiOiBcImZhcyBmYS11c2Vyc1wiLFwic2hvcnR5XCI6IFwidXNlcnNcIn0se1wiZnVsbFwiOiBcImZhcyBmYS11c2Vycy1jb2dcIixcInNob3J0eVwiOiBcInVzZXJzLWNvZ1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXV0ZW5zaWwtc3Bvb25cIixcInNob3J0eVwiOiBcInV0ZW5zaWwtc3Bvb25cIn0se1wiZnVsbFwiOiBcImZhcyBmYS11dGVuc2lsc1wiLFwic2hvcnR5XCI6IFwidXRlbnNpbHNcIn0se1wiZnVsbFwiOiBcImZhcyBmYS12ZWN0b3Itc3F1YXJlXCIsXCJzaG9ydHlcIjogXCJ2ZWN0b3Itc3F1YXJlXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdmVudXNcIixcInNob3J0eVwiOiBcInZlbnVzXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdmVudXMtZG91YmxlXCIsXCJzaG9ydHlcIjogXCJ2ZW51cy1kb3VibGVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS12ZW51cy1tYXJzXCIsXCJzaG9ydHlcIjogXCJ2ZW51cy1tYXJzXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdmlhbFwiLFwic2hvcnR5XCI6IFwidmlhbFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXZpYWxzXCIsXCJzaG9ydHlcIjogXCJ2aWFsc1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXZpZGVvXCIsXCJzaG9ydHlcIjogXCJ2aWRlb1wifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXZpZGVvLXNsYXNoXCIsXCJzaG9ydHlcIjogXCJ2aWRlby1zbGFzaFwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXZpaGFyYVwiLFwic2hvcnR5XCI6IFwidmloYXJhXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdm9sbGV5YmFsbC1iYWxsXCIsXCJzaG9ydHlcIjogXCJ2b2xsZXliYWxsLWJhbGxcIn0se1wiZnVsbFwiOiBcImZhcyBmYS12b2x1bWUtZG93blwiLFwic2hvcnR5XCI6IFwidm9sdW1lLWRvd25cIn0se1wiZnVsbFwiOiBcImZhcyBmYS12b2x1bWUtb2ZmXCIsXCJzaG9ydHlcIjogXCJ2b2x1bWUtb2ZmXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtdm9sdW1lLXVwXCIsXCJzaG9ydHlcIjogXCJ2b2x1bWUtdXBcIn0se1wiZnVsbFwiOiBcImZhcyBmYS13YWxraW5nXCIsXCJzaG9ydHlcIjogXCJ3YWxraW5nXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtd2FsbGV0XCIsXCJzaG9ydHlcIjogXCJ3YWxsZXRcIn0se1wiZnVsbFwiOiBcImZhcyBmYS13YXJlaG91c2VcIixcInNob3J0eVwiOiBcIndhcmVob3VzZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXdlaWdodFwiLFwic2hvcnR5XCI6IFwid2VpZ2h0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtd2VpZ2h0LWhhbmdpbmdcIixcInNob3J0eVwiOiBcIndlaWdodC1oYW5naW5nXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtd2hlZWxjaGFpclwiLFwic2hvcnR5XCI6IFwid2hlZWxjaGFpclwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXdpZmlcIixcInNob3J0eVwiOiBcIndpZmlcIn0se1wiZnVsbFwiOiBcImZhcyBmYS13aW5kb3ctY2xvc2VcIixcInNob3J0eVwiOiBcIndpbmRvdy1jbG9zZVwifSx7XCJmdWxsXCI6IFwiZmFzIGZhLXdpbmRvdy1tYXhpbWl6ZVwiLFwic2hvcnR5XCI6IFwid2luZG93LW1heGltaXplXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtd2luZG93LW1pbmltaXplXCIsXCJzaG9ydHlcIjogXCJ3aW5kb3ctbWluaW1pemVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS13aW5kb3ctcmVzdG9yZVwiLFwic2hvcnR5XCI6IFwid2luZG93LXJlc3RvcmVcIn0se1wiZnVsbFwiOiBcImZhcyBmYS13aW5lLWdsYXNzXCIsXCJzaG9ydHlcIjogXCJ3aW5lLWdsYXNzXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtd2luZS1nbGFzcy1hbHRcIixcInNob3J0eVwiOiBcIndpbmUtZ2xhc3MtYWx0XCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtd29uLXNpZ25cIixcInNob3J0eVwiOiBcIndvbi1zaWduXCJ9LHtcImZ1bGxcIjogXCJmYXMgZmEtd3JlbmNoXCIsXCJzaG9ydHlcIjogXCJ3cmVuY2hcIn0se1wiZnVsbFwiOiBcImZhcyBmYS14LXJheVwiLFwic2hvcnR5XCI6IFwieC1yYXlcIn0se1wiZnVsbFwiOiBcImZhcyBmYS15ZW4tc2lnblwiLFwic2hvcnR5XCI6IFwieWVuLXNpZ25cIn0se1wiZnVsbFwiOiBcImZhcyBmYS15aW4teWFuZ1wiLFwic2hvcnR5XCI6IFwieWluLXlhbmdcIn1dICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEljb25QaWNrZXIuaHRtbCcsXHJcblx0XHRcdCBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgc2NvcGUuQ1RSTD0na3RJY29uUGlja2VyJ1xyXG4gICAgICAgICAgICAgICAgIHNjb3BlLmZpbHRlcmVkSWNvbnM9W107XHJcbiAgICAgICAgICAgICAgICAgc2NvcGUuaWNvbnNGaWx0ZXI9e2ZpbHRlcjpudWxsLGZpbHRlcmluZ0ljb25zOmZhbHNlfTtcclxuICAgICAgICAgICAgICAgICBzY29wZS5zaG93SWNvbnM9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgc2NvcGUuc2hvd0J1dHRvbnM9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgc2NvcGUuaXRlbXNMb2FkZWQ9ZmFsc2U7XHJcbiAgICBcclxuIFxyXG4gXHJcbiAgICAgICAgICAgICAgICAgc2NvcGUucmVzZXRTdHlsZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnNlbGVjdGVkSWNvbj1udWxsO1xyXG5cdFx0XHRcdFx0ICBzY29wZS5zZWxlY3RlZEJ1dHRvbj1udWxsXHJcbiAgICAgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdCBcclxuXHRcdFx0XHQgXHJcbiAgICAgICAgICAgICAgICAgc2NvcGUuc2hvd0ljb25zRnVuYyA9IGZ1bmN0aW9uIChzdGF0ZSkgeyAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUpIHtcclxuXHRcdFx0XHRcdFx0XHRzY29wZS5maWx0ZXJlZEljb25zID0gc2NvcGUuaWNvbnMgICBcclxuXHRcdFx0XHRcdFx0XHRzY29wZS5pdGVtc0xvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnNob3dJY29ucz1zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnNob3dCdXR0b25zPXN0YXRlOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICBzY29wZS5pY29uc0ZpbHRlci5maWx0ZXI9Jyc7ICBcclxuICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgLy93aGVuIGljb24gaXMgc2VsZWN0ZWRcclxuICAgICAgICAgICAgICAgICAgc2NvcGUuaWNvbkNob3NlbiA9IGZ1bmN0aW9uIChpZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgc2NvcGUuc2VsZWN0ZWRJY29uPWlkLmZ1bGw7XHJcbiAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIC8vd2hlbiBidXR0b24gc3R5bGUgaXMgc2VsZWN0ZWRcclxuICAgICAgICAgICAgICAgICAgc2NvcGUuc3R5bGVDaG9zZW4gPSBmdW5jdGlvbiAoaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnNlbGVjdGVkQnV0dG9uPWlkO1xyXG4gICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgc2NvcGUuc2hvd0J1dHRvbnNGdW5jID0gZnVuY3Rpb24gKHN0YXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzY29wZS5zaG93QnV0dG9ucz1zdGF0ZTsgIFxyXG4gICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIHNjb3BlLmdldEJ0bkNsYXNzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICAgICAgICAgICAgICB2YXIgYnRuQ2xzID1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi1zbVwiOyAvL2RlZmF1bHQgY2xhc3NcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuc2VsZWN0ZWRCdXR0b24hPVwiXCIgJiYgc2NvcGUuc2VsZWN0ZWRCdXR0b24hPXVuZGVmaW5lZCkgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnRuQ2xzID0gc2NvcGUuc2VsZWN0ZWRCdXR0b24rXCIgYnRuIGJ0bi1zbVwiO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ0bkNscztcclxuICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIHNjb3BlLnBpY2tJY29uID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICBzY29wZS5zaG93SWNvbnM9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgc2NvcGUuc2hvd0J1dHRvbnM9ZmFsc2U7IFxyXG4gICAgICAgICAgICAgICAgIH0gICBcclxuXHJcbiAgICAgICAgICAgICAgICAgc2NvcGUucGlja0FsbD0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICBzY29wZS5zaG93SWNvbnM9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgc2NvcGUuc2hvd0J1dHRvbnM9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3BpY2sgYnV0dG9uJyk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHQgXHJcbiAgICAgICAgICAgICAgICBzY29wZS5waWNrQnV0dG9uID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICBzY29wZS5zaG93QnV0dG9ucz10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICBzY29wZS5zaG93SWNvbnM9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ3BpY2sgYnV0dG9uPScrICAkc2NvcGUuc2VsZWN0ZWRCdXR0b24pO1xyXG4gICAgICAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICBzY29wZS5maWx0ZXJGbiA9IGZ1bmN0aW9uKGN1cnJJY29uKSAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3Vyckljb24uaW5kZXhPZihzY29wZS5pY29uc0ZpbHRlci5maWx0ZXIpIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIHRoaXMgd2lsbCBiZSBsaXN0ZWQgaW4gdGhlIHJlc3VsdHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gb3RoZXJ3aXNlIGl0IHdvbid0IGJlIHdpdGhpbiB0aGUgcmVzdWx0c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBzY29wZS5oaWRlQnRucz1mdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgICAgICBzY29wZS5zaG93QnV0dG9ucz1mYWxzZTsgXHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgXHJcblxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBzY29wZS5nZXRGaWx0ZXJpbmdTdGF0dXM9ZnVuY3Rpb24oKSAgeyAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIHNjb3BlLmljb25zRmlsdGVyLmZpbHRlcmluZ0ljb25zOyAgICBcclxuICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBzY29wZS5jaGFuZ2VkX2ZpbHRlcj1mdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmlsdGVyZWRJY29ucz1bXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHNjb3BlLmljb25zLmxlbmd0aDtpKyspICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuaWNvbnNbaV0uc2hvcnR5LmluZGV4T2Yoc2NvcGUuaWNvbnNGaWx0ZXIuZmlsdGVyKSE9PSAtMSkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZpbHRlcmVkSWNvbnMucHVzaChzY29wZS5pY29uc1tpXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgc2NvcGU6e1xyXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEljb246Jz0nLFxyXG4gICAgICAgICAgICAgICAgICB0aXRsZTonPT8nLFxyXG5cdFx0XHRcdCAgc2V0RGlzYWJsZWQ6Jz0/JyxcclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRCdXR0b246Jz0nLFxyXG4gICAgICAgICAgICAgICAgICBidG5MYWJlbDonPScsXHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdEljb25zOic9JyxcclxuICAgICAgICAgICAgICAgICAgc2VsZWN0Q29sb3JzOic9JyxcclxuICAgICAgICAgICAgICAgICAgdW5pcXVlSWQ6Jz0nLFxyXG4gICAgICAgICAgICAgICAgICBzaG93SWNvbnM6JzwnLFxyXG4gICAgICAgICAgICAgICAgICBzaG93QnV0dG9uczonPCcsXHJcbiAgICAgICAgICAgICAgICAgIGRlc2lnbk1vZGU6JzwnLFxyXG5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbn07XG4ndXNlIHN0cmljdCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3RJbWFnZSAoKSB7XHJcbiByZXR1cm4ge1xyXG4gICAgICByZXN0cmljdDogJ0EnLFxyXG5cclxuXHQgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uICgkc2NvcGUsJHJvb3RTY29wZSxHcmlkc3RlclNlcnZpY2UsTWVzc2FnaW5nU2VydmljZSwgUmVzb3VyY2VzRGF0YVNlcnZpY2UsS2F0YWx5b1N0YXRlTWFuYWdlcixXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlKVxyXG5cdCAgeyAgICAgIFxyXG5cdFx0JHNjb3BlLmZkLkltYWdlVXJsPScnXHJcblx0ICBcclxuICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycz09dW5kZWZpbmVkKSAkc2NvcGUuZmQubG9jYWxWYXJzPXt9O1xyXG5cdFx0XHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93TWVudSA9IGZhbHNlXHJcbiAgICAgIFxyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMudG9nZ2xlRHJvcGRvd24gPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dNZW51ID0gICRzY29wZS5mZC5sb2NhbFZhcnMuc2hvd01lbnUgPyBmYWxzZTogdHJ1ZSBcclxuICAgICAgICB9XHJcblxyXG5cdFx0JHNjb3BlLmZkLmxvY2FsVmFycy5jb252ZXJ0VG9Ecm9wZG93bkxpc3QgPSBmdW5jdGlvbiAoaW5wdXRsaXN0LCB1aWQpXHJcblx0XHR7XHJcblx0XHRcdGZvciAobGV0IGk9MDsgaTxpbnB1dGxpc3QubGVuZ3RoO2krKyl7XHJcblx0XHRcdFx0aW5wdXRsaXN0W2ldID0geyBcclxuXHRcdFx0XHRcdGlkOiBpbnB1dGxpc3RbaV1bJ3Jlc291cmNlJyArIHVpZCArICdfaWQnXSwgXHJcblx0XHRcdFx0XHRuYW1lOiBpbnB1dGxpc3RbaV1bJ3Jlc291cmNlJyArIHVpZCArICdfRmlsZU5hbWUnXSxcclxuICAgICAgICAgICAgICAgICAgICBndWlkOiBpbnB1dGxpc3RbaV1bJ3Jlc291cmNlJyArIHVpZCArICdfZ3VpZCddXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdCRzY29wZS5mZC5sb2NhbFZhcnMuZ2V0UmVjb3JkTGlzdE9uSW5pdCA9IGFzeW5jIGZ1bmN0aW9uKCkgIHtcclxuXHRcdFxyXG5cdFx0XHRsZXQgZGF0YSA9IGF3YWl0IFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldERhdGFzZXREYXRhU2ltcGxlKCRzY29wZS5mZC5QYXJhbWV0ZXJzLkZpbGVEZWZJZD8uaWQpXHRcclxuXHRcdFx0JHNjb3BlLmZkLmxvY2FsVmFycy5jb252ZXJ0VG9Ecm9wZG93bkxpc3QgKGRhdGEuZGF0YSwgJHNjb3BlLmZkLlBhcmFtZXRlcnMuRmlsZURlZklkPy5pZCApXHJcblx0XHRcdCRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZVJlY29yZHMgPSBkYXRhLmRhdGFcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLkZpbGVJZD8ubGVuZ3RoPjApXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgIGxldCBwb3NcclxuICAgICAgICAgICAgIHBvcyA9ICRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZVJlY29yZHMubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuZ3VpZCB9KS5pbmRleE9mKCRzY29wZS5mZC5QYXJhbWV0ZXJzLkZpbGVJZClcclxuICAgICAgICAgICAgIGlmIChwb3M+PTApICRzY29wZS5mZC5sb2NhbFZhcnMucmVjb3JkU2VsZWN0ZWQgPSAkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVSZWNvcmRzW3Bvc11cclxuICAgICAgICAgICAgfVxyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHRpZiAoICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uICYmICRzY29wZS5mZC5QYXJhbWV0ZXJzPy5GaWxlSWQgICYmICRzY29wZS5mZC5QYXJhbWV0ZXJzLkZpbGVEZWZJZD8uaWQpIHtcclxuXHRcdFx0XHJcblx0XHRcdFx0JHNjb3BlLmZkLmxvY2FsVmFycy5nZXRSZWNvcmRMaXN0T25Jbml0KClcclxuXHRcdFx0XHRcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0XHJcblx0XHQkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVTZWxlY3RlZCA9IGFzeW5jIGZ1bmN0aW9uIChzZWxlY3RlZCkgey8vUHJlcGFyZSBsaXN0IGZvciBkcm9wZG93biAoIHtpZCAsIG5hbWV9KVxyXG5cdFx0XHRsZXQgaWQgPSBzZWxlY3RlZC5pZC8vLnNwbGl0KFwiX1wiKVswXVxyXG5cdFx0XHRsZXQgZGF0YSA9IGF3YWl0IFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldERhdGFzZXREYXRhU2ltcGxlKGlkKVx0XHJcblx0XHRcdCRzY29wZS5mZC5sb2NhbFZhcnMuY29udmVydFRvRHJvcGRvd25MaXN0IChkYXRhLmRhdGEsIHNlbGVjdGVkLmlkKVxyXG5cdFx0XHQkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVSZWNvcmRzID0gZGF0YS5kYXRhXHJcblx0XHR9XHJcblx0XHRcdFx0XHJcblx0XHRcclxuXHRcdCRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZVJlY29yZFNlbGVjdGVkID0gIGZ1bmN0aW9uIChzZWxlY3RlZCkge1x0XHRcclxuXHRcdFx0XHRcdFx0JHNjb3BlLmZkLlBhcmFtZXRlcnMuRmlsZUlkID0gc2VsZWN0ZWQuZ3VpZFxyXG5cdFx0fVxyXG5cdFx0XHRcdFxyXG5cdFx0XHJcblxyXG4gICAgICAgICAkc2NvcGUudGFza0lkID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZURlZklkO1xyXG4gICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnByZXZUYXNrRXhlSWQgPSAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wcmV2X3Rhc2tfaWQ7XHJcbiAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybVR5cGU9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX3R5cGU7XHJcbiAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc291cmNlX3R5cGU9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5zb3VyY2VfdHlwZTtcclxuICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy50YXNrSW5pdGlhdGVJZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udGFza19pbml0aWF0ZV9pZDtcclxuICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy50YXNrRXhlY3V0ZUlkID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50YXNrX2V4ZWN1dGVfaWQ7XHJcbiAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybURlZmluaXRpb24gPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fZGVmaW5pdGlvbjtcclxuICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkID0gMDtcclxuICAgICAgICAgJHNjb3BlLmZkLlBhcmVudEVsZW1lbnRJZCA9IDA7XHJcbiAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1EZWZpbml0aW9uPT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybURlZmluaXRpb24gPSBmYWxzZTtcclxuICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMudGFza0luaXRpYXRlSWQ9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLmxvY2FsVmFycy50YXNrSW5pdGlhdGVJZCA9MDtcclxuICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMudGFza0V4ZWN1dGVJZD09dW5kZWZpbmVkKSAkc2NvcGUuZmQubG9jYWxWYXJzLnRhc2tFeGVjdXRlSWQgPTA7XHJcbiAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLnByZXZUYXNrRXhlSWQ9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLmxvY2FsVmFycy5wcmV2VGFza0V4ZUlkID0wO1xyXG5cdFx0aWYgKCRzY29wZS5mZC5sb2NhbFZhcnM9PXVuZGVmaW5lZCkgICRzY29wZS5mZC5sb2NhbFZhcnM9e31cclxuXHJcbiAgICAgICAgdmFyIHdpZGdldERlZmluaXRpb24gPSB7bmFtZTogJ2t0SW1hZ2UnLHdpZGdldElkOiAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsdGFza0lkOiAgJHNjb3BlLnRhc2tJZCxcclxuICAgICAgICB0YXNrX2luaXRpYXRlX2lkOiRzY29wZS5mZC5sb2NhbFZhcnMudGFza0luaXRpYXRlSWQsdGFza19leGVjdXRlX2lkOiRzY29wZS5mZC5sb2NhbFZhcnMudGFza0V4ZWN1dGVJZH07XHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5sb2NhbFdpZGdldElkID0gV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5yZWdpc3RlcldpZGdldCh3aWRnZXREZWZpbml0aW9uKTtcclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLkxvY2FsSWQ9JHNjb3BlLmZkLmxvY2FsVmFycy5sb2NhbFdpZGdldElkO1xyXG4gICAgICAgICRzY29wZS5mZC5Mb2NhbElkPSRzY29wZS5mZC5sb2NhbFZhcnMubG9jYWxXaWRnZXRJZDtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dNZW51ID0gZmFsc2VcclxuICAgICAgICBcclxuICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy50b2dnbGVEcm9wZG93biA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dNZW51ID0gICRzY29wZS5mZC5sb2NhbFZhcnMuc2hvd01lbnUgPyBmYWxzZTogdHJ1ZSBcclxuICAgICAgICAgfVxyXG4gICAgICAgICBcclxuICAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZXRGaWVsZCA9IGZ1bmN0aW9uKGZvcm0sbmFtZSx2YWx1ZSxtc2cpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBUYXNrRGF0YVNlcnZpY2Uuc2V0RmllbGQoZm9ybSxuYW1lLHZhbHVlKTtcclxuICAgICAgICAgICAgIGlmIChtc2cpIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShtc2csJ2luZm8nKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICRzY29wZS5rc209S2F0YWx5b1N0YXRlTWFuYWdlclxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKioqKiogU3luYyBkYXRhIHdpdGggU3RhdGUgbWFuYWdlciAqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkZXBlbmRlbnRfZmllbGRfcGlkID0gJHNjb3BlLmZkLkxvY2FsSWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN1YnNjcmliZWRTdWJqZWN0UGlkID0gXCJmb3JtRGVmaW5pdGlvblN0YXRlXCIrJHNjb3BlLnRhc2tJZCskc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fdHlwZTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGVwZW5kZW50X2ZpZWxkX3BpZDJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdXBkYXRlX3ByZXNlbnRhdGlvbl9pZDIgPSBmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwcmVzZW50YXRpb25faWQgPSBhbmd1bGFyLmNvcHkoJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YVtwcmVzZW50YXRpb25faWRdIT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQgPSBkYXRhW3ByZXNlbnRhdGlvbl9pZF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdW5zdWJzY3JpYmUgaGVyZSBsYXRlciBhZnRlciBpbXBsZW1lbnRpbmcgdW5zdWJzY3JpYmUgLSBUb0RvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVudF9maWVsZF9waWQyID0gJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlclBpZDIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdFBpZCxkZXBlbmRlbnRfZmllbGRfcGlkMixcImZvcm1TYXZlZFwiLHVwZGF0ZV9wcmVzZW50YXRpb25faWQyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBsZXQgdXBkYXRlX3ByZXNlbnRhdGlvbl9pZCA9IGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFbJHNjb3BlLmZkLkxvY2FsSWRdPjAgJiYgKCRzY29wZS5mZC5QcmVzZW50YXRpb25JZD09MCB8fCAgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT1udWxsKSAgJiYgZGF0YVskc2NvcGUuZmQuTG9jYWxJZF0hPT11bmRlZmluZWQpICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCA9IGRhdGFbJHNjb3BlLmZkLkxvY2FsSWRdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlclBpZDIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdFBpZCxkZXBlbmRlbnRfZmllbGRfcGlkMixcImZvcm1TYXZlZFwiLHVwZGF0ZV9wcmVzZW50YXRpb25faWQyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy91bnN1YnNjcmliZSBoZXJlIGxhdGVyIGFmdGVyIGltcGxlbWVudGluZyB1bnN1YnNjcmliZSAtIFRvRG9cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QcmVzZW50YXRpb25JZD09PW51bGwgfHwgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT09MClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlclBpZCA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0UGlkLGRlcGVuZGVudF9maWVsZF9waWQsXCJmb3JtU2F2ZWRcIix1cGRhdGVfcHJlc2VudGF0aW9uX2lkKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVudF9maWVsZF9waWQyID0gJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlclBpZDIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdFBpZCxkZXBlbmRlbnRfZmllbGRfcGlkMixcImZvcm1TYXZlZFwiLHVwZGF0ZV9wcmVzZW50YXRpb25faWQyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgXHJcblx0XHRcclxuXHRcdFxyXG5cclxuICAgICAkc2NvcGUuZ3NydmM9IEdyaWRzdGVyU2VydmljZTtcclxuXHJcbiAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fZGVmaW5pdGlvbil7XHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZMaXN0QnlUeXBlKCRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nLCdmaWxlJykudGhlbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZGF0YSkgeyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5saXN0T2ZGaWxlVHlwZXMgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICxmdW5jdGlvbihlcnJvcil7ICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKSAgfVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgIFxyXG5cdCAkc2NvcGUuZmQuZG93bmxvYWRJbWFnZSA9IGZ1bmN0aW9uKGZpbGVEZWZJZCxmaWxlSWQpXHJcblx0IHtcclxuICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmRvd25sb2FkRmlsZShmaWxlRGVmSWQsZmlsZUlkKS50aGVuKFxyXG5cdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIHsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtkYXRhLmRhdGFdKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5JbWFnZVVybD11cmxcclxuICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICBcclxuXHRcdFx0XHR9KTtcclxuICAgICAgfTsvLyBkb3dsb2FkIGltYWdlXHJcblx0ICBcclxuXHJcbiAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5GaWxlRGVmSWQ/LmlkICYmICRzY29wZS5mZC5QYXJhbWV0ZXJzLkZpbGVJZD8ubGVuZ3RoPjApIFxyXG5cdFx0XHRcdCRzY29wZS5mZC5kb3dubG9hZEltYWdlKCAkc2NvcGUuZmQuUGFyYW1ldGVycy5GaWxlRGVmSWQ/LmlkLCRzY29wZS5mZC5QYXJhbWV0ZXJzLkZpbGVJZClcclxuICAgfSxcclxuICAgXHJcbiAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEltYWdlLmh0bWwnLFxyXG4gICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHsgICAgICBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0SW5pdGlhdGVUYXNrV2lkZ2V0ICgkdGltZW91dCkge1xyXG5cclxuICByZXR1cm4ge1xyXG4gICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RJbml0aWF0ZVRhc2tXaWRnZXQuaHRtbCcsXHJcbiAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbigkc2NvcGUsJHJvb3RTY29wZSxVc2VyU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSxUYXNrRGF0YVNlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxLYXRhbHlvU3RhdGVNYW5hZ2VyLEdyaWRzdGVyU2VydmljZSwkdGltZW91dCwkc3RhdGUsJHN0YXRlUGFyYW1zKSBcclxuXHRcdCAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjPSBHcmlkc3RlclNlcnZpY2U7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuQ1RSTD0na3RJbml0aWF0ZVRhc2tXaWRnZXQnXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuRm9ybURlZj09dW5kZWZpbmVkKSAkc2NvcGUuZmQuRm9ybURlZj0gW11cclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uIT11bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tFeGVjdXRlSWQgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRhc2tfZXhlY3V0ZV9pZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMgPT0gdW5kZWZpbmVkKSAkc2NvcGUuZmQubG9jYWxWYXJzPXt9O1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5sb2FkZWRUYXNrcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZUl0ZW0gPSB7fVxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlID0ge307XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dNZW51ID0gZmFsc2VcclxuXHRcdFx0XHQkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlTG9hZGVkID0gZmFsc2VcclxuICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnRvZ2dsZURyb3Bkb3duID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93TWVudSA9ICAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dNZW51ID8gZmFsc2U6IHRydWUgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLkVsZW1lbnRUeXBlPT1cIml0YXNrXCIpIFx0JHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT0wOyAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gXHJcbiAgICAgICAgICAgICAgICAvKioqKioqKioqKiogU0VUVVAgS0FUQUxZTyBTVEFURSBNQU5BR0VSICoqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUua3NtID0gS2F0YWx5b1N0YXRlTWFuYWdlcjtcclxuICAgICAgICAgICAgICAgIGxldCBpbml0aWF0ZWRUYXNrSWQ9bnVsbDtcclxuICAgICAgICAgICAgICAgIGxldCBpbml0aWF0ZVRhc2tTdGF0ZT0gJHNjb3BlLmtzbS5hZGRTdWJqZWN0KCdpbml0aWF0ZVRhc2tTdGF0ZU5hbWUnKyRzY29wZS5mZC5QcmVzZW50YXRpb25JZCxpbml0aWF0ZWRUYXNrSWQpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGluaXRpYXRlVGFza1N0YXRlTmFtZSA9IGluaXRpYXRlVGFza1N0YXRlLnN1YmplY3QubmFtZTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IHRhc2tfaW5pdGlhdGVkID0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpbml0aWF0ZVRhc2tTdGF0ZS5zdWJqZWN0LnNldFN0YXRlQ2hhbmdlcyA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhdGVUYXNrU3RhdGUuc3ViamVjdC5ub3RpZnlPYnNlcnZlcnMoXCJ0YXNrSW5pdGlhdGVkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IGFjdGlvbl90YXNrX2luaXRpYXRlZCA9ICRzY29wZS5rc20uYWRkQWN0aW9uKGluaXRpYXRlVGFza1N0YXRlTmFtZSxcInRhc2tJbml0aWF0ZWRcIix0YXNrX2luaXRpYXRlZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuJG9uKCdJbmxpbmVUYXNrQ2xvc2VkJyxmdW5jdGlvbihldmVudCxkYXRhKXtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdGFza0lkPWRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9ICRzY29wZS5mZC5sb2NhbFZhcnMubG9hZGVkVGFza3MubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUudGFza0lkOyB9KS5pbmRleE9mKHRhc2tJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvcz49MCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5sb2FkZWRUYXNrcy5zcGxpY2UocG9zLDEpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnRhc2tMaXN0UGFyYW1ldGVycyA9IHtwbGFjZWhvbGRlcjonU2VsZWN0IG9yIHNlYXJjaCB0YXNrLi4uJyxsYWJlbDokc2NvcGUuZmQucGxhY2Vob2xkZXIsbmFtZTondGFzaycsXHJcbiAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdDp0cnVlLHNlbGVjdGVkSXRlbTpudWxsLGhpZGVMYWJlbDp0cnVlLGNvbHVtblNpemVMYWJlbDonY29sLWxnLTI0Jyxkcm9wZG93blNpemU6J2NvbC1sZy0yNCcsb25TZWxlY3RGdW5jdGlvbjonJ307XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuRm9ybURlZj09dW5kZWZpbmVkKSAkc2NvcGUuZmQuRm9ybURlZiA9IFtdO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSW5kZXg9LTE7XHJcbiAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuTG9hZFRhc2s9ZnVuY3Rpb24odGFza0lkLG91dGNvbWVJZCxwcmV2aW91c1Rhc2ssb3BlblRhc2tUeXBlKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBsb2NhbFZhcnMgPSB7J2lzSW5saW5lVGFzayc6JHNjb3BlLmZkLmxvY2FsVmFycy5pc0lubGluZVRhc2ssJ09wZW5UYXNrVHlwZSc6b3BlblRhc2tUeXBlLCd0YXNrSW5kZXgnOiRzY29wZS5mZC5sb2NhbFZhcnMubG9hZGVkVGFza3MubGVuZ3RoLCdsb2FkVGFza0RpcmVjdCcgOiB0cnVlLCd0YXNrSWQnOnRhc2tJZCwnb3V0Y29tZUlkJzpvdXRjb21lSWQsJ3ByZXZpb3VzVGFzayc6cHJldmlvdXNUYXNrLH07XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wZW5UYXNrVHlwZSE9XCJuZXdQYWdlXCIpIGxvY2FsVmFycy5TaG93Q2xvc2VCdG4gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgbG9jYWxWYXJzLlNob3dSZXR1cm5CdG4gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBwb3MgPSAkc2NvcGUuZmQubG9jYWxWYXJzLmxvYWRlZFRhc2tzLm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLnRhc2tJZDsgfSkuaW5kZXhPZih0YXNrSWQpO1xyXG4gICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAocG9zPDAgJiYgb3BlblRhc2tUeXBlPT1cImN1cnJlbnRcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmxvYWRlZFRhc2tzLnNwbGljZSgwLDAseyd0YXNrSWQnOnRhc2tJZCwnb3V0Y29tZUlkJzpvdXRjb21lSWQsJ3ByZXZpb3VzVGFzayc6cHJldmlvdXNUYXNrLCdsb2NhbFZhcnMnOmxvY2FsVmFyc30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wZW5UYXNrVHlwZT09XCJpbmxpbmVcIikgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMubG9hZGVkVGFza3MubGVuZ3RoPTA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMubG9hZGVkVGFza3MucHVzaCh7J3Rhc2tJZCc6dGFza0lkLCdvdXRjb21lSWQnOm91dGNvbWVJZCwncHJldmlvdXNUYXNrJzpwcmV2aW91c1Rhc2ssJ2xvY2FsVmFycyc6bG9jYWxWYXJzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvcGVuVGFza1R5cGU9PVwiY29udGFpbmVyXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxWYXJzID0geydpc0lubGluZVRhc2snOiRzY29wZS5mZC5sb2NhbFZhcnMuaXNJbmxpbmVUYXNrLCdPcGVuVGFza1R5cGUnOidjdXJyZW50JywndGFza0luZGV4JzowLCdsb2FkVGFza0RpcmVjdCcgOiB0cnVlLCd0YXNrSWQnOnRhc2tJZCwnb3V0Y29tZUlkJzpvdXRjb21lSWQsJ3ByZXZpb3VzVGFzayc6cHJldmlvdXNUYXNrLH07XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24oaW5pdGlhdGVUYXNrU3RhdGVOYW1lLFwidGFza0luaXRpYXRlZFwiLCB7J3Rhc2tJZCc6dGFza0lkLCdvdXRjb21lSWQnOm91dGNvbWVJZCwncHJldmlvdXNUYXNrJzpwcmV2aW91c1Rhc2ssJ2xvY2FsVmFycyc6bG9jYWxWYXJzfSk7ICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BlblRhc2tUeXBlPT1cIm5ld1BhZ2VcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0VGFza0RhdGFJbk5ld1BhZ2Uoeydsb2NhbFZhcnMnOmxvY2FsVmFycywndGFza0RlZmluaXRpb24nOiRzY29wZS5yZXNvdXJjZURlZmluaXRpb259KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0T3BlblRhc2tUeXBlKG9wZW5UYXNrVHlwZSk7ICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0ICBcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLk9wZW5QYWdlID0gZnVuY3Rpb24oYnV0dG9uKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGFnZV92ZXJzaW9uICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnV0dG9uLlNlbGVjdFZlcnNpb25EaXJlY3QpIFxyXG5cdFx0XHRcdFx0XHRcdHBhZ2VfdmVyc2lvbiA9IGJ1dHRvbi5zZWxlY3RlZFB1Ymxpc2hlZFJlc291cmNlPy5WZXJzaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgcGFnZV92ZXJzaW9uPTBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0ZS5nbyhidXR0b24ucGFnZV9kZWYuUmVzb3VyY2VFeHRlbmRlZC5UYXJnZXQse3BhZ2VpZDogYnV0dG9uLmlkLHJpbnN0YW5jZTowLHZlcnNpb246cGFnZV92ZXJzaW9uLHBhcmFtZXRlcnM6e3ByZXZfdGFzazokc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLHBhZ2Vfc3RhdGVfaWQ6JHN0YXRlUGFyYW1zLnBhcmFtZXRlcnM/LnByZXZfcGFnZV9zdGF0ZV9pZCxwcmV2X3BhZ2Vfc3RhdGVfaWQ6JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkLHVzZV9zdGF0ZTpmYWxzZX19KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuXHRcdFx0XHQkc2NvcGUuZmQubG9jYWxWYXJzLnRhc2tJc09wZW4gPSBmdW5jdGlvbih0YXNrSWQpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlzT3BlblBvcyA9ICRzY29wZS5mZC5sb2NhbFZhcnMubG9hZGVkVGFza3MubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUudGFza0lkOyB9KS5pbmRleE9mKHRhc2tJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzT3BlblBvcz49MCkgcmV0dXJuIHRydWUgXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAvKiAgJHNjb3BlLmZkLmxvY2FsVmFycy5TaG93UmVzb3VyY2VEZWZpbml0aW9uID0gZnVuY3Rpb24gKHJlc291cmNlSWQpXHJcblx0XHRcdFx0e1xyXG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93UmVzb3VyY2VEZXRhaWxzPXRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuRm9ybURlZi5sZW5ndGg+MCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTwkc2NvcGUuZmQuRm9ybURlZi5sZW5ndGg7aSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLkZvcm1EZWZbaV0uaWQ9PXJlc291cmNlSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJbmRleD1pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VUeXBlID0gJHNjb3BlLmZkLkZvcm1EZWZbaV0uUmVzb3VyY2VUeXBlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCkgeyBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlSXRlbSA9ICRzY29wZS5mZC5Gb3JtRGVmW2ldIC8vVE9ETyAuLi4uLi4uXHJcblx0XHRcdFx0XHRcdFx0XHR9KTsvLyByZXNvdXJjZSBJdGVtIGlzIHNob3duIG9uIHNjcmVlbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcyBpcyB0aGUgZmlyc3QgcmVzb3VyY2UgdG8gYmUgc2VsZWN0ZWRJdGVtIC0ganVzdCBzaG93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZUl0ZW0pIHsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUluZGV4PTA7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VUeXBlPSRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VJdGVtLlJlc291cmNlVHlwZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpIHsgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICBcclxuICAgICAgICAgICAgICAgICB9Ki9cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLlNob3dSZXNvdXJjZURlZmluaXRpb24gPSBmdW5jdGlvbiAoaSlcclxuXHRcdFx0XHR7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2hvd1Jlc291cmNlRGV0YWlscz10cnVlXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG5cdFx0XHRcdFx0ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuRm9ybURlZi5sZW5ndGg+MCAmJiAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UhPT0kc2NvcGUuZmQuRm9ybURlZltpXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dSZXNvdXJjZURldGFpbHM9dHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJbmRleD1pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZVR5cGUgPSAkc2NvcGUuZmQuRm9ybURlZltpXS5SZXNvdXJjZVR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZSA9ICRzY29wZS5mZC5Gb3JtRGVmW2ldIFxyXG5cdFx0XHRcdFx0XHQvLyRzY29wZS5mZC5sb2NhbFZhcnMuc2V0UmVzb3VyY2VUeXBlICgkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VUeXBlKS8vIGp1c3QgdG8gZ2V0IGxpc3Qgb2YgYWxsIHJlc291cmNlcyAtIHJlc291cmNlTGlzdEZvckRyb3Bkb3duICAgXHJcblx0XHRcdFx0XHRcdCRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VJdGVtLmlkPSAkc2NvcGUuZmQuRm9ybURlZltpXS5pZFxyXG5cdFx0XHRcdFx0XHQkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlSXRlbS5uYW1lPSAkc2NvcGUuZmQuRm9ybURlZltpXS5uYW1lIFxyXG5cdFx0XHRcdFx0XHQkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlTG9hZGVkID0gZmFsc2VcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlTG9hZGVkID0gdHJ1ZX0pXHJcblx0XHRcdFx0XHRcdCAgICAvLyRzY29wZS5mZC5sb2NhbFZhcnMuU2hvd1Jlc291cmNlRGV0YWlscygpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgeyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZUl0ZW0pIHsgICAgLy90aGlzIGlzIHRoZSBmaXJzdCByZXNvdXJjZSB0byBiZSBzZWxlY3RlZEl0ZW0gLSBqdXN0IHNob3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSW5kZXg9MDsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlVHlwZT0kc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlSXRlbS5SZXNvdXJjZVR5cGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHQgICBcclxuXHRcdFx0XHQgICBcclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLk5ld1Jlc291cmNlID0gZnVuY3Rpb24gKClcclxuXHRcdFx0XHQgIHtcclxuXHRcdFx0XHRcdFx0Ly9kZWJ1Z2dlclxyXG5cdFx0XHRcdFx0XHQvL1JFU0VUIFxyXG5cdFx0XHRcdFx0XHQkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UgPSB7IFJlc291cmNlVHlwZTogbnVsbCwgaWQ6IG51bGwsIG5hbWU6ICcnLCBidG5MYWJlbDogJycsIGJ0bkNsYXNzOiAnYnRuLXByaW1hcnknfVxyXG5cdFx0XHRcdFx0XHQvLyRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZVR5cGU9bnVsbFxyXG5cdFx0XHRcdFx0XHQkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlSXRlbSA9IHt9XHJcblx0XHRcdFx0XHRcdGlmICgkc2NvcGUuY2xlYXJEcm9wZG93blZhbHVlKSAkc2NvcGUuY2xlYXJEcm9wZG93blZhbHVlKClcclxuICAgICAgICAgICAgICAgICAgICAgXHJcblx0XHRcdFx0XHRcdGlmICghJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93UmVzb3VyY2VEZXRhaWxzKSAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dSZXNvdXJjZURldGFpbHMgPSB0cnVlXHQgIFx0XHJcblx0XHRcdFx0XHRcdCAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJbmRleD0tMVxyXG5cdFx0XHRcdFx0XHQgLy8kc2NvcGUuZmQubG9jYWxWYXJzLlNob3dSZXNvdXJjZURldGFpbHMoKVxyXG5cdFx0XHRcdCB9XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHJcblx0XHRcdFx0ICRzY29wZS5zZXRDbGVhckZuID0gZnVuY3Rpb24odGhlQ2xlYXJGbilcclxuXHRcdFx0XHQge1xyXG5cdFx0XHRcdFx0ICAkc2NvcGUuY2xlYXJEcm9wZG93blZhbHVlID0gdGhlQ2xlYXJGblx0ICBcclxuXHRcdFx0XHQgfVxyXG5cdFx0XHRcdCAgXHJcblx0XHRcdFx0ICBcclxuICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLkFkZFJlc291cmNlID0gZnVuY3Rpb24gKClcclxuXHRcdFx0XHQge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vZGVidWdnZXJcclxuXHRcdFx0XHRcdGlmICghJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlVHlwZSkgIHsgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdBY3Rpb24gbm90IHNlbGVjdGVkIScsJ3dhcm5pbmcnKTsgcmV0dXJuIH1cclxuXHRcdFx0XHRcdGlmICghJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZUl0ZW0/LmlkICYmICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZVR5cGU9PSdwYWdlJykgIHsgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdSZXNvdXJjZSBub3Qgc2VsZWN0ZWQhJywnd2FybmluZycpOyByZXR1cm4gfVxyXG5cdFx0XHRcdFx0aWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZS5idG5MYWJlbD09JycpIHsgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdMYWJlbCBpcyBtaXNzaW5nIScsJ3dhcm5pbmcnKTsgcmV0dXJuIH1cclxuXHRcdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2hvd1Jlc291cmNlRGV0YWlscz1mYWxzZVxyXG5cclxuXHRcdFx0XHRcdGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2U9PT0kc2NvcGUuZmQuRm9ybURlZlswXSkgIHJldHVyblxyXG5cdFx0XHRcdFx0ICAgIFxyXG5cdFx0XHRcdFx0JHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlLlJlc291cmNlVHlwZSA9ICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZVR5cGU7XHJcblx0XHRcdFx0XHQkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UubmFtZSA9ICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VJdGVtLm5hbWU7XHJcblx0XHRcdFx0XHQkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UuaWQgPSAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlSXRlbS5pZDtcclxuXHRcdFx0XHRcdFx0XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJbmRleCA9PSAtMSkgJHNjb3BlLmZkLkZvcm1EZWYucHVzaChhbmd1bGFyLmNvcHkoJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlKSk7IFxyXG5cclxuICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXHJcblx0XHRcdFx0ICBcclxuICAgICAgICAgICAgICAgICBcclxuXHRcdFx0XHQgJHNjb3BlLmZkLmxvY2FsVmFycy5TaG93UmVzb3VyY2VEZXRhaWxzID0gZnVuY3Rpb24gKClcclxuXHRcdFx0XHQge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlPy5pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmQWxsKCRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZS5pZCkudGhlbiggLy9nZXQgcGFnZVxyXG5cdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24oZGF0YSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZS5wYWdlX2RlZiA9IGRhdGEuZGF0YTsgXHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UuaWQ9ZGF0YS5kYXRhLnVpZCAvL1RPRE8gIC0gd2UgcHJvYmFibHkgZG9udCBuZWVkIGZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlLmlkXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlLm5hbWU9ZGF0YS5kYXRhLk5hbWUvL1RPRE8gIC0gd2UgcHJvYmFibHkgZG9udCBuZWVkIGZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlLmlkXHJcblx0XHRcdFx0XHRcdFx0XHQgfSxmdW5jdGlvbihlcnJvcil7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0TWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG5cdFx0XHRcdFx0XHRcdFx0fSk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwb3MgPSAkc2NvcGUuZmQuRm9ybURlZi5tYXAoZnVuY3Rpb24oZSkgeyBpZiAoZSE9dW5kZWZpbmVkKSByZXR1cm4gZS5pZDsgZWxzZSByZXR1cm4gbnVsbDt9KS5pbmRleE9mKCRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZS5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAocG9zPDApICAgJHNjb3BlLmZkLkZvcm1EZWYucHVzaChhbmd1bGFyLmNvcHkoJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlKSk7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuRWxlbWVudFR5cGU9PSdpdGFzaycpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQud0l0ZW1WYWx1ZSA9ICRzY29wZS5mZC5Gb3JtRGVmO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC50SXRlbVZhbHVlID0gJHNjb3BlLmZkLkZvcm1EZWY7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICovXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2hvd1Jlc291cmNlRGV0YWlscyA9IHRydWVcclxuICAgICAgICAgICAgICAgICB9O1xyXG5cdFx0XHRcdCBcclxuXHRcdFx0XHQgXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5SZW1vdmVSZXNvdXJjZUZyb21MaXN0ID0gZnVuY3Rpb24gKGluZGV4KVxyXG5cdFx0XHRcdHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4Pj0wKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5Gb3JtRGVmLnNwbGljZShpbmRleCwxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUluZGV4PS0xO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VUeXBlPScnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dSZXNvdXJjZURldGFpbHM9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG5cdFx0ICBcclxuICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNhdmVUYXNrVG9SZXNvdXJjZSA9IGZ1bmN0aW9uKHRkaWQsdGVpLGRhdGFzZXREZWZJZCxkYXRhc2V0UmVjb3JkSWQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5zYXZlVGFza1RvUmVzb3VyY2UodGVpLGRhdGFzZXREZWZJZCxkYXRhc2V0UmVjb3JkSWQsJHNjb3BlLmZkLnByZXNlbnRhdGlvbklkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKGRhdGEpIHsgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXRlLmdvKCdhcHAubmF2YmFyLnRhc2tzLmluaXRpYXRlJyx7aWQ6IHRkaWQsZnJvbVN0YXRlTmFtZTokc3RhdGUuY3VycmVudC5uYW1lLGZyb21TdGF0ZVBhcmFtczokc3RhdGUucGFyYW1zLG91dGNvbWVfaWQ6MCxwcmV2X3Rhc2tfZXhlY3V0ZV9pZDp0ZWl9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2V0UmVzb3VyY2VUeXBlID0gZnVuY3Rpb24gKHJlc291cmNlX3R5cGUpLy9wYWdlIG9yIHRhc2sgLSBjYWxsYmFjayBvbiBidXR0b24gY2xpY2tcclxuXHRcdFx0XHQge1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VUeXBlPSByZXNvdXJjZV90eXBlOy8vVE9ETyAtIG1vemRhIHZpc2thXHJcblx0XHRcdFx0ICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UuUmVzb3VyY2VUeXBlPSByZXNvdXJjZV90eXBlO1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlTG9hZGVkID0gZmFsc2U7IFxyXG4gICAgICAgICAgICAgICAgICBpZiAgICgkc2NvcGUuZ3NydmMuZ2V0Rm9ybVZpZXdUeXBlKCk9PTEgfHwgJHNjb3BlLmZkLkVsZW1lbnRUeXBlPT0naXRhc2snKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmTGlzdEJ5VHlwZShsYW5nLHJlc291cmNlX3R5cGUpLnRoZW4oXHJcblx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24oZGF0YSkgeyAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VMaXN0Rm9yRHJvcGRvd24gPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlTG9hZGVkID0gdHJ1ZTsgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cdFx0XHRcdFx0fSAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICB9ICAgIFxyXG5cdFx0XHRcdFxyXG5cclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2V0UmVzb3VyY2VUeXBlKCdwYWdlJylcclxuXHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICRzY29wZS5vblNlbGVjdFJlc291cmNlQ2FsbGJhY2sgPSBmdW5jdGlvbihzZWxlY3RlZCwgbW9kZWwpXHJcblx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0IC8vZGVidWdnZXIgLy9vblNlbGVjdFJlc291cmNlQ2FsbGJhY2tcclxuXHRcdFx0XHRcdCBpZiAoIHNlbGVjdGVkPy5pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZBbGwoc2VsZWN0ZWQuaWQpLnRoZW4oIC8vZ2V0IHBhZ2VcclxuXHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UucGFnZV9kZWYgPSBkYXRhLmRhdGE7IFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZS5pZD1kYXRhLmRhdGEudWlkIC8vVE9ETyAgLSB3ZSBwcm9iYWJseSBkb250IG5lZWQgZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UuaWRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UubmFtZT1kYXRhLmRhdGEuTmFtZS8vVE9ETyAgLSB3ZSBwcm9iYWJseSBkb250IG5lZWQgZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UubmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93UmVzb3VyY2VEZXRhaWxzPXRydWVcdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0IH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuXHRcdFx0XHRcdFx0XHRcdH0pOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHR9XHJcblxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHsgICAgIH0gICAgICAgXHJcbiAgICAgICAgICAgICAgXHJcbiAgICB9XHJcbiAgXHJcbn07XG4ndXNlIHN0cmljdCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3RLdGx5b1N0YWtpbmcgKCkge1xyXG4gICBcclxuICAgdmFyIGNvbnRyb2xsZXIgPSBbJyRzY29wZScsICckdWliTW9kYWwnLCckc3RhdGVQYXJhbXMnLCckc3RhdGUnLCckdGltZW91dCcsJ0NvZGVzU2VydmljZScsJ1Jlc291cmNlc0RhdGFTZXJ2aWNlJywnJHJvb3RTY29wZScsJ0NPREVTX0NPTlNUJywnUHJvY2Vzc2luZ1NlcnZpY2UnLCdNZXNzYWdpbmdTZXJ2aWNlJywnR3JpZHN0ZXJTZXJ2aWNlJywnVGFza0RhdGFTZXJ2aWNlJywnV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZScsJ0thdGFseW9TdGF0ZU1hbmFnZXInLCdVdGlsaXR5U2VydmljZScsJyR0ZW1wbGF0ZUNhY2hlJywnJGNvbXBpbGUnLCckZWxlbWVudCcsXHJcbiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkc2NvcGUsJHVpYk1vZGFsLCRzdGF0ZVBhcmFtcywkc3RhdGUsJHRpbWVvdXQsQ29kZXNTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLCRyb290U2NvcGUsQ09ERVNfQ09OU1QsUHJvY2Vzc2luZ1NlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxHcmlkc3RlclNlcnZpY2UsVGFza0RhdGFTZXJ2aWNlLFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UsS2F0YWx5b1N0YXRlTWFuYWdlcixVdGlsaXR5U2VydmljZSwkdGVtcGxhdGVDYWNoZSwkY29tcGlsZSwkZWxlbWVudCkge1xyXG4gICAgIFxyXG4gICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0ID0ge307XHJcbiAgICAgIC8vJHNjb3BlLmZkID0ge307XHJcbiAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VhcmNoRm9ybURvd25sb2FkZWQgPSBmYWxzZTtcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5mb3JtTG9hZGVkPWZhbHNlO1xyXG4gICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNyY190eXBlX3RleHQ9Q09ERVNfQ09OU1QuX1BPUFVMQVRFX1RZUEVfO1xyXG4gICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmFuaW1hdGlvbnNFbmFibGVkID0gdHJ1ZTtcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC53aWRnZXRUeXBlID0gMztcclxuICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlO1xyXG4gICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmZvcm1QYXJhbXM9e2Zvcm1WaWV3VHlwZToxLHNob3dHcmlkTmF2aWdhdGlvbjp0cnVlfTtcclxuICAgICAgJHNjb3BlLmZkLmNvbnRyYWN0RGF0YXNldHMgPSB0cnVlO1xyXG4gICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhPT11bmRlZmluZWQpICRzY29wZS5mb3JtRGF0YT17fTtcclxuICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWRdPT11bmRlZmluZWQpICRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWRdPVtdO1xyXG4gICAgICAkc2NvcGUuZmQubXNncz17fTtcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5kYXRhc2V0TWFwcGVyVHlwZT0wO1xyXG4gICAgICAkc2NvcGUuZmQuU2hvd1RhYj0xO1xyXG4gICAgICBpZiAoJHNjb3BlLmZkLlBvcHVsYXRlVHlwZT09dW5kZWZpbmVkKSAkc2NvcGUuZmQuUG9wdWxhdGVUeXBlPVwiXCI7XHJcbiAgICAgICRzY29wZS5mZC50b2tlbjFDb250cmFjdD1cIjB4MjRFMzc5NDYwNUM4NEU1ODBFRUE0OTcyNzM4RDYzM0U4YTcxMjdjOFwiO1xyXG4gICAgICAkc2NvcGUuZmQudG9rZW4xQ29udHJhY3RBYmk9W3tcImlucHV0c1wiOltdLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJub25wYXlhYmxlXCIsXCJ0eXBlXCI6XCJjb25zdHJ1Y3RvclwifSx7XCJhbm9ueW1vdXNcIjpmYWxzZSxcImlucHV0c1wiOlt7XCJpbmRleGVkXCI6dHJ1ZSxcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwib3duZXJcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW5kZXhlZFwiOnRydWUsXCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInNwZW5kZXJcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJ2YWx1ZVwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJuYW1lXCI6XCJBcHByb3ZhbFwiLFwidHlwZVwiOlwiZXZlbnRcIn0se1wiYW5vbnltb3VzXCI6ZmFsc2UsXCJpbnB1dHNcIjpbe1wiaW5kZXhlZFwiOnRydWUsXCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInByZXZpb3VzT3duZXJcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW5kZXhlZFwiOnRydWUsXCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcIm5ld093bmVyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9XSxcIm5hbWVcIjpcIk93bmVyc2hpcFRyYW5zZmVycmVkXCIsXCJ0eXBlXCI6XCJldmVudFwifSx7XCJhbm9ueW1vdXNcIjpmYWxzZSxcImlucHV0c1wiOlt7XCJpbmRleGVkXCI6dHJ1ZSxcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwiZnJvbVwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbmRleGVkXCI6dHJ1ZSxcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwidG9cIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJ2YWx1ZVwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJuYW1lXCI6XCJUcmFuc2ZlclwiLFwidHlwZVwiOlwiZXZlbnRcIn0se1wiaW5wdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwib3duZXJcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJzcGVuZGVyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9XSxcIm5hbWVcIjpcImFsbG93YW5jZVwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInNwZW5kZXJcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJhbW91bnRcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwiYXBwcm92ZVwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImJvb2xcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwiYm9vbFwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcIm5vbnBheWFibGVcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcImFjY291bnRcIixcInR5cGVcIjpcImFkZHJlc3NcIn1dLFwibmFtZVwiOlwiYmFsYW5jZU9mXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJkZWNpbWFsc1wiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQ4XCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcInVpbnQ4XCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwic3BlbmRlclwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcInN1YnRyYWN0ZWRWYWx1ZVwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJuYW1lXCI6XCJkZWNyZWFzZUFsbG93YW5jZVwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImJvb2xcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwiYm9vbFwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcIm5vbnBheWFibGVcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInNwZW5kZXJcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJhZGRlZFZhbHVlXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcImluY3JlYXNlQWxsb3dhbmNlXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYm9vbFwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJib29sXCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwibm9ucGF5YWJsZVwiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJuYW1lXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwic3RyaW5nXCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcInN0cmluZ1wifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwib3duZXJcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcImFkZHJlc3NcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJ2aWV3XCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbXSxcIm5hbWVcIjpcInJlbm91bmNlT3duZXJzaGlwXCIsXCJvdXRwdXRzXCI6W10sXCJzdGF0ZU11dGFiaWxpdHlcIjpcIm5vbnBheWFibGVcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwic3ltYm9sXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwic3RyaW5nXCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcInN0cmluZ1wifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwidG90YWxTdXBwbHlcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJ2aWV3XCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJyZWNpcGllbnRcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJhbW91bnRcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwidHJhbnNmZXJcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJib29sXCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcImJvb2xcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJub25wYXlhYmxlXCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJzZW5kZXJcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJyZWNpcGllbnRcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJhbW91bnRcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwidHJhbnNmZXJGcm9tXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYm9vbFwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJib29sXCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwibm9ucGF5YWJsZVwiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwibmV3T3duZXJcIixcInR5cGVcIjpcImFkZHJlc3NcIn1dLFwibmFtZVwiOlwidHJhbnNmZXJPd25lcnNoaXBcIixcIm91dHB1dHNcIjpbXSxcInN0YXRlTXV0YWJpbGl0eVwiOlwibm9ucGF5YWJsZVwiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn1dOztcclxuICAgICAgJHNjb3BlLmZkLnRva2VuMkNvbnRyYWN0PVwiMHgxREU1ZTAwMEM0MUM4ZDM1YjlmMWY0OTg1QzIzOTg4ZjA1ODMxMDU3XCI7XHJcbiAgICAgICRzY29wZS5mZC50b2tlbjJDb250cmFjdEFiaT1be1wiaW5wdXRzXCI6W10sXCJzdGF0ZU11dGFiaWxpdHlcIjpcIm5vbnBheWFibGVcIixcInR5cGVcIjpcImNvbnN0cnVjdG9yXCJ9LHtcImFub255bW91c1wiOmZhbHNlLFwiaW5wdXRzXCI6W3tcImluZGV4ZWRcIjp0cnVlLFwiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJvd25lclwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbmRleGVkXCI6dHJ1ZSxcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwic3BlbmRlclwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcInZhbHVlXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcIkFwcHJvdmFsXCIsXCJ0eXBlXCI6XCJldmVudFwifSx7XCJhbm9ueW1vdXNcIjpmYWxzZSxcImlucHV0c1wiOlt7XCJpbmRleGVkXCI6dHJ1ZSxcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwicHJldmlvdXNPd25lclwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbmRleGVkXCI6dHJ1ZSxcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwibmV3T3duZXJcIixcInR5cGVcIjpcImFkZHJlc3NcIn1dLFwibmFtZVwiOlwiT3duZXJzaGlwVHJhbnNmZXJyZWRcIixcInR5cGVcIjpcImV2ZW50XCJ9LHtcImFub255bW91c1wiOmZhbHNlLFwiaW5wdXRzXCI6W3tcImluZGV4ZWRcIjp0cnVlLFwiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJmcm9tXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImluZGV4ZWRcIjp0cnVlLFwiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJ0b1wiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcInZhbHVlXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcIlRyYW5zZmVyXCIsXCJ0eXBlXCI6XCJldmVudFwifSx7XCJpbnB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJvd25lclwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInNwZW5kZXJcIixcInR5cGVcIjpcImFkZHJlc3NcIn1dLFwibmFtZVwiOlwiYWxsb3dhbmNlXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwic3BlbmRlclwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcImFtb3VudFwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJuYW1lXCI6XCJhcHByb3ZlXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYm9vbFwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJib29sXCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwibm9ucGF5YWJsZVwiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwiYWNjb3VudFwiLFwidHlwZVwiOlwiYWRkcmVzc1wifV0sXCJuYW1lXCI6XCJiYWxhbmNlT2ZcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJ2aWV3XCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbXSxcIm5hbWVcIjpcImRlY2ltYWxzXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwidWludDhcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidWludDhcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJ2aWV3XCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJzcGVuZGVyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwic3VidHJhY3RlZFZhbHVlXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcImRlY3JlYXNlQWxsb3dhbmNlXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYm9vbFwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJib29sXCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwibm9ucGF5YWJsZVwiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwic3BlbmRlclwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcImFkZGVkVmFsdWVcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwiaW5jcmVhc2VBbGxvd2FuY2VcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJib29sXCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcImJvb2xcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJub25wYXlhYmxlXCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbXSxcIm5hbWVcIjpcIm5hbWVcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJzdHJpbmdcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwic3RyaW5nXCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJvd25lclwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwiYWRkcmVzc1wifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwicmVub3VuY2VPd25lcnNoaXBcIixcIm91dHB1dHNcIjpbXSxcInN0YXRlTXV0YWJpbGl0eVwiOlwibm9ucGF5YWJsZVwiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJzeW1ib2xcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJzdHJpbmdcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwic3RyaW5nXCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJ0b3RhbFN1cHBseVwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInJlY2lwaWVudFwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcImFtb3VudFwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJuYW1lXCI6XCJ0cmFuc2ZlclwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImJvb2xcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwiYm9vbFwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcIm5vbnBheWFibGVcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInNlbmRlclwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInJlY2lwaWVudFwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcImFtb3VudFwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJuYW1lXCI6XCJ0cmFuc2ZlckZyb21cIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJib29sXCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcImJvb2xcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJub25wYXlhYmxlXCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJuZXdPd25lclwiLFwidHlwZVwiOlwiYWRkcmVzc1wifV0sXCJuYW1lXCI6XCJ0cmFuc2Zlck93bmVyc2hpcFwiLFwib3V0cHV0c1wiOltdLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJub25wYXlhYmxlXCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifV07O1xyXG4gICAgICAkc2NvcGUuZmQuc3Rha2luZ0NvbnRyYWN0PVwiMHg4QzA1YkEyMTU1NzkzNkUzZTA3MTNkQ0U0RjlDM2JmYzk3NGY0QzhFXCI7XHJcbiAgICAgICRzY29wZS5mZC5zdGFraW5nQ29udHJhY3RBYmk9W3tcImlucHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcIl90b2tlbjFcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJfdG9rZW4yXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiX2FweVwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIl9kdXJhdGlvblwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIl90b2tlblJhdGlvXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiX21heFN0YWtlQW10MVwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIl9yZXdhcmRBbXQxXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwiX293bmVyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwibm9ucGF5YWJsZVwiLFwidHlwZVwiOlwiY29uc3RydWN0b3JcIn0se1wiYW5vbnltb3VzXCI6ZmFsc2UsXCJpbnB1dHNcIjpbe1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJmcm9tXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwic2VudERhdGVcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwiQWRkZWRUb0JsYWNrTGlzdFwiLFwidHlwZVwiOlwiZXZlbnRcIn0se1wiYW5vbnltb3VzXCI6ZmFsc2UsXCJpbnB1dHNcIjpbe1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJ0b2tlbjFcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJ0b2tlbjJcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJhcHlcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJkdXJhdGlvblwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIm1heFN0YWtlQW10MVwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIm1heFN0YWtlQW10MlwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcInJld2FyZEFtdDFcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJyZXdhcmRBbXQyXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwib3duZXJcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJjcmVhdGVkQXRcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJpbnRlcmVzdFJhdGVcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJ0b2tlblJhdGlvXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcIkNyZWF0ZWRDb250cmFjdFwiLFwidHlwZVwiOlwiZXZlbnRcIn0se1wiYW5vbnltb3VzXCI6ZmFsc2UsXCJpbnB1dHNcIjpbe1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJ0b1wiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcInJlZGVlbWVkRGF0ZVwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcImFtb3VudFwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJuYW1lXCI6XCJFYXJseVJlZGVlbWVkXCIsXCJ0eXBlXCI6XCJldmVudFwifSx7XCJhbm9ueW1vdXNcIjpmYWxzZSxcImlucHV0c1wiOlt7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInRvXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwicmVkZWVtZWREYXRlXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiYW1vdW50MVwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcImFtb3VudDJcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwiRWFybHlSZWRlZW1lZEFsbFwiLFwidHlwZVwiOlwiZXZlbnRcIn0se1wiYW5vbnltb3VzXCI6ZmFsc2UsXCJpbnB1dHNcIjpbe1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJmcm9tXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiYW1vdW50XCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcIlJlY2VpdmVkXCIsXCJ0eXBlXCI6XCJldmVudFwifSx7XCJhbm9ueW1vdXNcIjpmYWxzZSxcImlucHV0c1wiOlt7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInRvXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwicmVkZWVtZWREYXRlXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiYW1vdW50MVwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcImFtb3VudDJcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwiUmVkZWVtZWRcIixcInR5cGVcIjpcImV2ZW50XCJ9LHtcImFub255bW91c1wiOmZhbHNlLFwiaW5wdXRzXCI6W3tcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwidG9cIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJyZWRlZW1lZERhdGVcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJhbW91bnQxXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiYW1vdW50MlwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJuYW1lXCI6XCJSZWRlZW1lZEFsbFwiLFwidHlwZVwiOlwiZXZlbnRcIn0se1wiYW5vbnltb3VzXCI6ZmFsc2UsXCJpbnB1dHNcIjpbe1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJmcm9tXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwic2VudERhdGVcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwiUmVtb3ZlZEZyb21CbGFja0xpc3RcIixcInR5cGVcIjpcImV2ZW50XCJ9LHtcImFub255bW91c1wiOmZhbHNlLFwiaW5wdXRzXCI6W3tcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwiZnJvbVwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcImFtb3VudFwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJuYW1lXCI6XCJSZXZlcnRlZFwiLFwidHlwZVwiOlwiZXZlbnRcIn0se1wiYW5vbnltb3VzXCI6ZmFsc2UsXCJpbnB1dHNcIjpbe1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJmcm9tXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwidG9rZW5DdHJcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJhbW91bnRcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwiU3Rha2VkXCIsXCJ0eXBlXCI6XCJldmVudFwifSx7XCJhbm9ueW1vdXNcIjpmYWxzZSxcImlucHV0c1wiOlt7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcImZyb21cIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJzdGFydERhdGVcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwiU3RhcnRTdGFraW5nXCIsXCJ0eXBlXCI6XCJldmVudFwifSx7XCJhbm9ueW1vdXNcIjpmYWxzZSxcImlucHV0c1wiOlt7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcImZyb21cIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJzdG9wRGF0ZVwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJuYW1lXCI6XCJTdG9wU3Rha2luZ1wiLFwidHlwZVwiOlwiZXZlbnRcIn0se1wiYW5vbnltb3VzXCI6ZmFsc2UsXCJpbnB1dHNcIjpbe1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJ0b1wiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcInNlbnREYXRlXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiYW1vdW50XCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcIlRyYW5zZmVyQmFja1Jld2FyZFwiLFwidHlwZVwiOlwiZXZlbnRcIn0se1wiYW5vbnltb3VzXCI6ZmFsc2UsXCJpbnB1dHNcIjpbe1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJmcm9tXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwic2VudERhdGVcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJhbW91bnRcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwiVHJhbnNmZXJSZXdhcmRcIixcInR5cGVcIjpcImV2ZW50XCJ9LHtcInN0YXRlTXV0YWJpbGl0eVwiOlwicGF5YWJsZVwiLFwidHlwZVwiOlwiZmFsbGJhY2tcIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJhY3RpdmF0ZVwiLFwib3V0cHV0c1wiOltdLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJub25wYXlhYmxlXCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbXSxcIm5hbWVcIjpcImFweVwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NbXVwiLFwibmFtZVwiOlwiYWRkcmVzc0xpc3RcIixcInR5cGVcIjpcImFkZHJlc3NbXVwifSx7XCJpbnRlcm5hbFR5cGVcIjpcImJvb2xcIixcIm5hbWVcIjpcImJsU3RhdHVzXCIsXCJ0eXBlXCI6XCJib29sXCJ9XSxcIm5hbWVcIjpcImJsYWNrTGlzdFwiLFwib3V0cHV0c1wiOltdLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJub25wYXlhYmxlXCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbXSxcIm5hbWVcIjpcImNyZWF0ZWRBdFwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwiZGVBY3RpdmF0ZVwiLFwib3V0cHV0c1wiOltdLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJub25wYXlhYmxlXCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbXSxcIm5hbWVcIjpcImR1cmF0aW9uXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwid2FsbGV0XCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9XSxcIm5hbWVcIjpcImdldEJsYWNrTGlzdGVkU3RhdHVzXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYm9vbFwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJib29sXCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJnZXRNeUluZm9cIixcIm91dHB1dHNcIjpbe1wiY29tcG9uZW50c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcIndhbGxldFwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInRva2VuXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiYW1vdW50XCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiY3JlYXRlZEF0XCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwiYm9vbFwiLFwibmFtZVwiOlwicmVkZWVtZWRcIixcInR5cGVcIjpcImJvb2xcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJyZXdhcmRBbXQxXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwicmV3YXJkQW10MlwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcInJlZGVlbWVkQXRcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJzdGFrZUVuZFwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJpbnRlcm5hbFR5cGVcIjpcInN0cnVjdCBLdGx5b1N0YWtpbmcuVHJhbnNhY3Rpb25bXVwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ0dXBsZVtdXCJ9LHtcImNvbXBvbmVudHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJsaW1pdDFcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJsaW1pdDJcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwiaW50ZXJuYWxUeXBlXCI6XCJzdHJ1Y3QgS3RseW9TdGFraW5nLk1heExpbWl0XCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcInR1cGxlXCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJnZXRNeUxpbWl0c1wiLFwib3V0cHV0c1wiOlt7XCJjb21wb25lbnRzXCI6W3tcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwibGltaXQxXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwibGltaXQyXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcImludGVybmFsVHlwZVwiOlwic3RydWN0IEt0bHlvU3Rha2luZy5NYXhMaW1pdFwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ0dXBsZVwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwiZ2V0TXlTdGFraW5nc1wiLFwib3V0cHV0c1wiOlt7XCJjb21wb25lbnRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwid2FsbGV0XCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwidG9rZW5cIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJhbW91bnRcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJjcmVhdGVkQXRcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJib29sXCIsXCJuYW1lXCI6XCJyZWRlZW1lZFwiLFwidHlwZVwiOlwiYm9vbFwifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcInJld2FyZEFtdDFcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJyZXdhcmRBbXQyXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwicmVkZWVtZWRBdFwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcInN0YWtlRW5kXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcImludGVybmFsVHlwZVwiOlwic3RydWN0IEt0bHlvU3Rha2luZy5UcmFuc2FjdGlvbltdXCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcInR1cGxlW11cIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJ2aWV3XCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbXSxcIm5hbWVcIjpcImdldFJld2FyZHNJbmZvXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJnZXRTdGFrZVJld2FyZEFtb3VudHNcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJ2aWV3XCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJ3YWxsZXRcIixcInR5cGVcIjpcImFkZHJlc3NcIn1dLFwibmFtZVwiOlwiZ2V0U3Rha2luZ3NcIixcIm91dHB1dHNcIjpbe1wiY29tcG9uZW50c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcIndhbGxldFwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInRva2VuXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiYW1vdW50XCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiY3JlYXRlZEF0XCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwiYm9vbFwiLFwibmFtZVwiOlwicmVkZWVtZWRcIixcInR5cGVcIjpcImJvb2xcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJyZXdhcmRBbXQxXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwicmV3YXJkQW10MlwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcInJlZGVlbWVkQXRcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJzdGFrZUVuZFwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJpbnRlcm5hbFR5cGVcIjpcInN0cnVjdCBLdGx5b1N0YWtpbmcuVHJhbnNhY3Rpb25bXVwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ0dXBsZVtdXCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJpbmZvXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJtYXhTdGFrZUFtdDFcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJ2aWV3XCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbXSxcIm5hbWVcIjpcIm1heFN0YWtlQW10MlwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwib3duZXJcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcImFkZHJlc3NcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJ2aWV3XCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJpbmRleElkXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcInJlZGVlbVwiLFwib3V0cHV0c1wiOltdLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJub25wYXlhYmxlXCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbXSxcIm5hbWVcIjpcInJlZGVlbUFsbFwiLFwib3V0cHV0c1wiOltdLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJub25wYXlhYmxlXCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJpbmRleElkXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcInJlZGVlbUVhcmx5XCIsXCJvdXRwdXRzXCI6W10sXCJzdGF0ZU11dGFiaWxpdHlcIjpcIm5vbnBheWFibGVcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwicmVkZWVtRWFybHlBbGxcIixcIm91dHB1dHNcIjpbXSxcInN0YXRlTXV0YWJpbGl0eVwiOlwibm9ucGF5YWJsZVwiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJyZXdhcmRBbXQxXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJyZXdhcmRBbXQyXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwidG9rZW5Db250cmFjdFwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcImFtdFwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJuYW1lXCI6XCJzdGFrZVwiLFwib3V0cHV0c1wiOltdLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJub25wYXlhYmxlXCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbXSxcIm5hbWVcIjpcInRva2VuMVwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwiYWRkcmVzc1wifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwidG9rZW4yXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwidG9rZW5cIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJyZXdhcmRfYW1vdW50XCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcInRyYW5zZmVyQmFja1Jld2FyZFwiLFwib3V0cHV0c1wiOltdLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJub25wYXlhYmxlXCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJ0b2tlblwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcInJld2FyZF9hbW91bnRcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwidHJhbnNmZXJSZXdhcmRcIixcIm91dHB1dHNcIjpbXSxcInN0YXRlTXV0YWJpbGl0eVwiOlwibm9ucGF5YWJsZVwiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wic3RhdGVNdXRhYmlsaXR5XCI6XCJwYXlhYmxlXCIsXCJ0eXBlXCI6XCJyZWNlaXZlXCJ9XTtcclxuICAgICBcclxuICAgIFxyXG4gICAgIFxyXG4gICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmdyaWRzdGVyVHlwZT1cInJlc291cmNlXCI7XHJcbiAgICAgICAgICAvLyAkc2NvcGUuZ3JpZHN0ZXJPcHRzID0gR3JpZHN0ZXJTZXJ2aWNlLmdldEdyaWRzdGVyT3B0aW9ucygpO1xyXG4gICAgXHJcbiAgICBcclxuICAgICAgICBcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5kYXNoYm9hcmQgPSB7XHJcbiAgXHRcdFx0XHRpZDogJzEnLFxyXG4gIFx0XHRcdFx0bmFtZTogJ0hvbWUnLFxyXG4gIFx0XHRcdFx0d2lkZ2V0czogW11cclxuICAgICAgfSA7XHJcbiAgICAgICAgXHJcbiAgICBcclxuICBcclxuICAgICAgLy8kc2NvcGUudGFza0lkPSRzdGF0ZVBhcmFtcy5pZDtcclxuICAgICAgJHNjb3BlLnRhc2tJZD0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlJlc291cmNlRGVmSWQ7XHJcbiAgICAgIGlmICgkc2NvcGUudGFza0lkPT11bmRlZmluZWQpICAkc2NvcGUudGFza0lkPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VEZWZJZF9pZDtcclxuICAgICAgaWYgKCRzY29wZS50YXNrSWQ9PXVuZGVmaW5lZCkgJHNjb3BlLnRhc2tJZD0wO1xyXG4gICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnRhc2tJZD0kc2NvcGUudGFza0lkO1xyXG4gICAgICAkc2NvcGUuZmQuUGFyZW50RGF0YXNldERlZklkPSRzY29wZS5mZC5SZWxhdGVkO1xyXG4gICAgICAkc2NvcGUucHJldlRhc2tFeGVJZCA9ICAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnByZXZfdGFza19pZDtcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5mb3JtVHlwZT0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fdHlwZTtcclxuICAgICAgJHNjb3BlLnNvdXJjZV90eXBlPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uc291cmNlX3R5cGU7XHJcbiAgICAgICRzY29wZS50YXNrSW5pdGlhdGVJZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udGFza19pbml0aWF0ZV9pZDtcclxuICAgICAgJHNjb3BlLnRhc2tFeGVjdXRlSWQgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRhc2tfZXhlY3V0ZV9pZDtcclxuICAgICAgJHNjb3BlLmZvcm1EZWZpbml0aW9uID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb247XHJcbiAgICAgICAgXHJcbiAgICAgIGlmICAoJHNjb3BlLmZvcm1EZWZpbml0aW9uPT11bmRlZmluZWQpICRzY29wZS5mb3JtRGVmaW5pdGlvbj1mYWxzZTtcclxuICAgICAgICBcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkPTA7XHJcbiAgICAgIGlmICgkc2NvcGUudGFza0luaXRpYXRlSWQ9PXVuZGVmaW5lZClcclxuICAgICAge1xyXG4gICAgICAgICRzY29wZS50YXNrSW5pdGlhdGVJZCA9MDtcclxuICAgICAgXHJcbiAgICAgIH1cclxuICAgICAgaWYgKCRzY29wZS50YXNrRXhlY3V0ZUlkPT11bmRlZmluZWQpXHJcbiAgICAgIHtcclxuICAgICAgICAgJHNjb3BlLnRhc2tFeGVjdXRlSWQgPTA7ICBcclxuICAgICAgfVxyXG4gICAgICAgIGlmICgkc2NvcGUucHJldlRhc2tFeGVJZD09dW5kZWZpbmVkKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgJHNjb3BlLnByZXZUYXNrRXhlSWQgPTA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAvL3JlZ2lzdGVyIHdpZGdldCBcclxuICAgICAgdmFyIG91dF9maWVsZHMgPSBbJ3Jlc291cmNlSWQnXTtcclxuICAgICAgLy9pZiAoJHNjb3BlLmZkLkxvY2FsSWQ9PXVuZGVmaW5lZCB8fCAkc2NvcGUuZmQuTG9jYWxJZD09bnVsbCB8fCAkc2NvcGUuZmQuTG9jYWxJZD09MClcclxuICAgICAgLy97XHJcbiAgICAgICAgIHZhciB3aWRnZXREZWZpbml0aW9uID0ge0RFSTogW3snbmFtZSc6J3Jlc291cmNlTGluaycsJ3ZhbHVlJzpbe25hbWU6J3Jlc291cmNlSWQnLHZhbHVlOiRzY29wZS5mZC5SZWxhdGVkfSx7bmFtZToncmVzb3VyY2VSZWNvcmRJZCcsdmFsdWU6Jyd9XX1dLGFjdGlvbnM6IFt7bmFtZTonUHJlcGFyZURhdGEnLHN0YXR1czpmYWxzZX1dLG5hbWU6ICd2aWV3UmVzb3VyY2VXaWRnZXQnLHdpZGdldElkOiAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsdGFza19pbml0aWF0ZV9pZDokc2NvcGUudGFza0luaXRpYXRlSWQsdGFza19leGVjdXRlX2lkOiRzY29wZS50YXNrRXhlY3V0ZUlkLHRhc2tJZDogICRzY29wZS5sVGFza0lkLHJlc291cmNlRGVmSWQgOiAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2UsIG91dHB1dDpvdXRfZmllbGRzLCB9O1xyXG4gICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmxvY2FsV2lkZ2V0SWQgPSBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnJlZ2lzdGVyV2lkZ2V0KHdpZGdldERlZmluaXRpb24pO1xyXG4gICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LkxvY2FsSWQ9JHNjb3BlLmxvY2FsVmFyc1dpZGdldC5sb2NhbFdpZGdldElkO1xyXG4gICAgICAgICAkc2NvcGUuZmQuTG9jYWxJZD0kc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmxvY2FsV2lkZ2V0SWQ7XHJcbiAgICAgICAgIC8vJHNjb3BlLmZkLkxvY2FsSWQ9VXRpbGl0eVNlcnZpY2UudXVpZE5vdygpO1xyXG4gICAgICAgICBcclxuICAgICAgLy99XHJcbiAgICAgICRzY29wZS5rc20gPSBLYXRhbHlvU3RhdGVNYW5hZ2VyO1xyXG4gICAgICBcclxuICAgICAgbGV0IHVwZGF0ZV9wcmVzZW50YXRpb25faWQgPSBmdW5jdGlvbihkYXRhKVxyXG4gICAgICB7XHJcbiAgICAgICAgIGlmIChkYXRhWyRzY29wZS5mZC5Mb2NhbElkXT4wICYmICgkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PW51bGwgfHwgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT0wKSkgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkID0gZGF0YVskc2NvcGUuZmQuTG9jYWxJZF07XHJcbiAgICAgICAgICAvL3Vuc3Vic2NyaWJlIGhlcmUgbGF0ZXIgYWZ0ZXIgaW1wbGVtZW50aW5nIHVuc3Vic2NyaWJlIC0gVG9Eb1xyXG4gICAgICAgICAgXHJcbiAgICAgIH1cclxuICAgICAgaWYgKCRzY29wZS5mZC5QcmVzZW50YXRpb25JZD09MCB8fCAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PW51bGwpXHJcbiAgICAgIHtcclxuICAgICAgICAgXHJcbiAgICAgICAgIGxldCBkZXBlbmRlbnRfZmllbGQgPSAkc2NvcGUuZmQuTG9jYWxJZDtcclxuICAgICAgICAgbGV0IHN1YnNjcmliZWRTdWJqZWN0ID0gXCJmb3JtRGVmaW5pdGlvblN0YXRlXCIrJHNjb3BlLnRhc2tJZCskc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fdHlwZTtcclxuICAgICAgICAgbGV0IG9ic2VydmVyID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3QsZGVwZW5kZW50X2ZpZWxkLFwiZm9ybVNhdmVkXCIsdXBkYXRlX3ByZXNlbnRhdGlvbl9pZCk7XHJcbiAgXHJcbiAgICAgIH0gICAgICAgIFxyXG4gICAgICBcclxuICAgICAgIGxldCBhcHBseV92YWx1ZSA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBsZXQgZG9fcmVmcmVzaD1mYWxzZTtcclxuICAgICAgICAgICAgaWYgKGRhdGEhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICBpZiAoZGF0YSAhPSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQpXHJcbiAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSdudW1iZXInKSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQ9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEubGVuZ3RoPjApXHJcbiAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZD0gZGF0YVswXS5pZCAgXHJcbiAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfWVsc2VcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQgPSBkYXRhLmlkO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGRvX3JlZnJlc2ggPSB0cnVlO1xyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy9nZXQgc2VsZWN0ZWRSZWNvcmRcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZCA9PSBudWxsKSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQ9MDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQ+MCAmJiBkb19yZWZyZXNoKSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmdldEZvcm1SZXNvdXJjZVdpdGhEYXRhKCk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICBcclxuICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzPT11bmRlZmluZWQpICRzY29wZS5mZC5QYXJhbWV0ZXJzPXt9O1xyXG4gICAgICBcclxuICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLlJlZnJlc2hPbklkQ2hhbmdlKVxyXG4gICAgICB7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAvL2ZpbmQgXHJcbiAgICAgICAgIC8vc3Vic2NyaWJlIG9ic2VydmVyXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgIGxldCBkZXBlbmRlbnRfZmllbGQgPSBcIkZpZWxkXCIrJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkO1xyXG4gICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSBcInJlc291cmNlaWRWYWx1ZVN0YXRlTmFtZVwiKyRzY29wZS5mZC5QYXJhbWV0ZXJzLlJlc291cmNlSWRJdGVtSWQrJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50cmFuc2FjdGlvbl9pZDtcclxuICAgICAgICAgbGV0IHN1YmplY3QgPSAkc2NvcGUua3NtLmFkZFN1YmplY3Qoc3Vic2NyaWJlZFN1YmplY3QsbnVsbCk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgbGV0IG9ic2VydmVyID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3QsZGVwZW5kZW50X2ZpZWxkLFwidmFsdWVDaGFuZ2VkXCIsYXBwbHlfdmFsdWUpO1xyXG4gICAgICAgICBsZXQgdmFsID0gJHNjb3BlLmtzbS5nZXRTdGF0ZShzdWJzY3JpYmVkU3ViamVjdCk7XHJcbiAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZD0gdmFsLmlkO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy9nZXQgc2VsZWN0ZWRSZWNvcmRcclxuICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZCA9PSBudWxsKSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQ9MDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQ+MCkgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5nZXRGb3JtUmVzb3VyY2VXaXRoRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAvL3N1YnNjcmliZSBvYnNlcnZlclxyXG4gICAgICBpZiAoJHNjb3BlLmZkLlBvcHVsYXRlVHlwZS50b1N0cmluZygpLnN1YnN0cigwLDEpPT1cIjRcIilcclxuICAgICAge1xyXG4gICAgICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICAgICoqKioqKioqKioqKioqKioqKiBTeW5jIGRhdGEgd2l0aCBTdGF0ZSBtYW5hZ2VyICoqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbiAgICAgICAgXHJcbiAgICAgICBcclxuICAgICAgICBpZiAoJHNjb3BlLmZkLlNyY1dpZGdldElkIT11bmRlZmluZWQgJiYgJHNjb3BlLmZkLlNyY1dpZGdldElkIT1udWxsKVxyXG4gICAgICAgIFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGxldCBkZXBlbmRlbnRfZmllbGQgPSBcIkZpZWxkXCIrJHNjb3BlLmZkLlNyY1dpZGdldElkO1xyXG4gICAgICAgICAgICAgICAvLyBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSAkc2NvcGUuZmQuUGFyYW1ldGVycy5TcmNXaWRnZXRUeXBlK1wiVmFsdWVTdGF0ZU5hbWVcIiskc2NvcGUuZmQuU3JjV2lkZ2V0SWQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSBcInJsaXN0VmFsdWVTdGF0ZU5hbWVcIiskc2NvcGUuZmQuU3JjV2lkZ2V0SWQrJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50cmFuc2FjdGlvbl9pZDtcclxuICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlciA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0LGRlcGVuZGVudF9maWVsZCxcInZhbHVlQ2hhbmdlZFwiLGFwcGx5X3ZhbHVlKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfSAgXHJcbiAgICAgICAgIFxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBsZXQgcmVmcmVzaF93aWRnZXRfZGF0YSA9IGZ1bmN0aW9uKClcclxuICAgICAgXHJcbiAgICAgIHtcclxuICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5nZXRGb3JtUmVzb3VyY2VXaXRoRGF0YSgpOyAgICBcclxuICAgICAgICAgXHJcbiAgICAgIH1cclxuICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLkV2ZW50TmFtZSE9dW5kZWZpbmVkKVxyXG4gICAgICB7XHJcbiAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5FdmVudE5hbWUhPVwiXCIpXHJcbiAgICAgICAgIHtcclxuICAgICAgICAgICAgbGV0IGRlcGVuZGVudF9maWVsZDIgPSBcIkZpZWxkXCIrJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkO1xyXG4gICAgICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QyID0gXCJ0YXNrXCIrJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50cmFuc2FjdGlvbl9pZDtcclxuICAgICAgICAgICAgbGV0IG9ic2VydmVyMiA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0MixkZXBlbmRlbnRfZmllbGQyLCRzY29wZS5mZC5QYXJhbWV0ZXJzLkV2ZW50TmFtZSxyZWZyZXNoX3dpZGdldF9kYXRhKTtcclxuICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNob3dQcm9wZXJ0aWVzPWZ1bmN0aW9uKGRhdGFzZXRNYXBwZXJUeXBlKVxyXG4gICAgICB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZGF0YXNldE1hcHBlclR5cGUgPSBkYXRhc2V0TWFwcGVyVHlwZTtcclxuICAgICAgICAgICAgfWVsc2VcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmRhdGFzZXRNYXBwZXJUeXBlIT1kYXRhc2V0TWFwcGVyVHlwZSkgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5kYXRhc2V0TWFwcGVyVHlwZSA9IGRhdGFzZXRNYXBwZXJUeXBlO1xyXG4gICAgICAgICAgICAgICBlbHNlICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZGF0YXNldE1hcHBlclR5cGU9MDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgfTtcclxuICAgICAgICAgICBcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZXRGaWVsZCA9IGZ1bmN0aW9uKGZvcm0sbmFtZSx2YWx1ZSxtc2cpXHJcbiAgICAgIHtcclxuICAgICAgICAgVGFza0RhdGFTZXJ2aWNlLnNldEZpZWxkKGZvcm0sbmFtZSx2YWx1ZSk7XHJcbiAgICAgICAgIGlmIChtc2cpIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShtc2csJ2luZm8nKTtcclxuICAgICAgfTsgIFxyXG4gICAgICBcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5nZXRSZXNvdXJjZUFsbCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkFsbCgkc2NvcGUuZmQuUmVsYXRlZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnJlc291cmNlID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgICAvLyRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZ2V0UmVzb3VyY2VBbGwoKTtcclxuICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZ2V0Rm9ybVJlc291cmNlT3JpZ2luYWwgPSBmdW5jdGlvbihkYXRhc2V0SWQpe1xyXG4gICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PW51bGwpXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkID0gMDtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmZvcm1Mb2FkZWQ9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VGb3JtKGRhdGFzZXRJZCxcImlcIixsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VXaWRnZXREZWZpbml0aW9uPSBkYXRhLmRhdGEucmVzb3VyY2VEZWZpbml0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEuZGF0YS53aWRnZXRzKSkgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQgPSAgZGF0YS5kYXRhLndpZGdldHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0hPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZT0kc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbi5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5yZWxhdGVkSWQ9JHNjb3BlLmZkLlJlbGF0ZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLnByZXNlbnRhdGlvbklkPSRzY29wZS5mZC5QcmVzZW50YXRpb25JZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0uc3JjX3R5cGVfaWQ9JHNjb3BlLmZkLlBvcHVsYXRlVHlwZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0uc3JjX3R5cGVfdGV4dD0kc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNyY190eXBlX3RleHRbJHNjb3BlLmZkLlBvcHVsYXRlVHlwZV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLnBhcmVudEVsZW1lbnRJZD0kc2NvcGUuZmQuUGFyZW50RWxlbWVudElkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW09eyduYW1lJzokc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbi5uYW1lLCdyZWxhdGVkSWQnOiRzY29wZS5mZC5SZWxhdGVkLCAncHJlc2VudGF0aW9uSWQnOiRzY29wZS5mZC5QcmVzZW50YXRpb25JZCAgLCdzcmNfdHlwZV9pZCc6JHNjb3BlLmZkLlBvcHVsYXRlVHlwZSwnc3JjX3R5cGVfdGV4dCc6JHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zcmNfdHlwZV90ZXh0WyRzY29wZS5mZC5Qb3B1bGF0ZVR5cGVdLCdwYXJlbnRFbGVtZW50SWQnOiRzY29wZS5mZC5QYXJlbnRFbGVtZW50SWR9O1xyXG4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC53SXRlbVZhbHVlPWRhdGEuZGF0YS53aWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250YWluZXIgPSAkZWxlbWVudC5jaGlsZHJlbigpLmVxKDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyaWRzdGVyU2VydmljZS5zZXR1cERyYWd1bGFyKCRzY29wZS5mZC53SXRlbVZhbHVlLGNvbnRhaW5lciwncm93cy0nKyRzY29wZS5mZC5QcmVzZW50YXRpb25JZCwncm93LScrJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5ncmlkc3RlclR5cGUrJy1oYWRsZScsdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8gICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL01JR09SIC0gYml0bm8gLSBET0JJTyBSRVNPVVJDRVJFQ09SRC1JRCBaQSBCUk9BRENBU1QgIC0gQUREX1JFU09VUkNFIFdJREdFVFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2Uuc2V0RGF0YSh7d2lkZ2V0SWQ6JHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLCBERUk6IFt7J25hbWUnOidyZXNvdXJjZUxpbmsnLCd2YWx1ZSc6W3tuYW1lOidyZXNvdXJjZUlkJyx2YWx1ZTokc2NvcGUuZmQuUmVsYXRlZH0se25hbWU6J3Jlc291cmNlUmVjb3JkSWQnLHZhbHVlOiRzY29wZS5mZC5SZXNvdXJjZVJlY29yZElkfV19XX0pO1xyXG5cdFx0XHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VhcmNoRm9ybURvd25sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kdGltZW91dChmdW5jdGlvbigpeyRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZm9ybUxvYWRlZD10cnVlfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2V0RmllbGQoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQsJ1JlYWRPbmx5Jyx0cnVlKTsgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZXRGaWVsZCgkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmRhc2hib2FyZC53aWRnZXRzLmxheW91dCwnUmVxdWlyZWQnLGZhbHNlKTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICB9O1xyXG4gICAgICBcclxuICAgICAgJHNjb3BlLmZkLm9wZW5TdGFrZVNjcmVlbj1mdW5jdGlvbih0b2tlbil7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAkc2NvcGUuZmQuU2hvd1RhYj0yO1xyXG4gICAgICAgICBpZiAodG9rZW49PSdCTkYnKSAkc2NvcGUuZmQuU2hvd1RhYj0zO1xyXG4gICAgICAgICAkc2NvcGUuZmQuY3VycmVudFRva2VuVGlja2VyPXRva2VuO1xyXG4gICAgICAgICAkc2NvcGUuZmQuY29uZmlybWF0aW9uMSA9IG51bGw7XHJcbiAgICAgICAgICRzY29wZS5mZC50cmFuc2FjdGlvbkhhc2gxID0gbnVsbDtcclxuICAgICAgICAgJHNjb3BlLmZkLmVycm9yTWVzc2FnZTEgPSBudWxsO1xyXG4gICAgICAgICAkc2NvcGUuZmQuY29uZmlybWF0aW9uMiA9IG51bGw7XHJcbiAgICAgICAgICRzY29wZS5mZC50cmFuc2FjdGlvbkhhc2gyID0gbnVsbDtcclxuICAgICAgICAgJHNjb3BlLmZkLmVycm9yTWVzc2FnZTIgPSBudWxsO1xyXG4gICAgICAgICBcclxuICAgICAgICAgaWYgKCRzY29wZS5mZC5ldGhfYWRkcmVzcz09dW5kZWZpbmVkKVxyXG4gICAgICAgICB7XHJcbiAgICAgICAgICAgIHdlYjMuZXRoLmdldEFjY291bnRzKCkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZXRoX2FkZHJlc3MgPSByZXN1bHRbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZ2V0QWxsb3dhbmNlKCRzY29wZS5mZC5ldGhfYWRkcmVzcyx0b2tlbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5nZXRNeUxpbWl0cyh0b2tlbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICB9IGVsc2VcclxuICAgICAgICAge1xyXG4gICAgICAgICAgICRzY29wZS5mZC5nZXRBbGxvd2FuY2UoJHNjb3BlLmZkLmV0aF9hZGRyZXNzLHRva2VuKTtcclxuICAgICAgICAgJHNjb3BlLmZkLmdldE15TGltaXRzKHRva2VuKTsgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICBcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgJHNjb3BlLmZkLmdldEFsbG93YW5jZSA9IGZ1bmN0aW9uKHdhbGxldCx0b2tlbil7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgdmFyIHRva2VuQWRkcmVzcztcclxuICAgICAgICAgICAgICAgICAgIHZhciB0b2tlbkFCSTtcclxuICAgICAgICAgICAgICAgICAgIHZhciBjb250cmFjdEFkZHJlc3MgPSAkc2NvcGUuZmQuc3Rha2luZ0NvbnRyYWN0O1xyXG4gICAgICAgICAgICAgICAgICAgaWYgKHRva2VuPT1cIktUTFlPXCIpXHJcbiAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgIHRva2VuQWRkcmVzcz0gJHNjb3BlLmZkLnRva2VuMUNvbnRyYWN0O1xyXG4gICAgICAgICAgICAgICAgICAgICB0b2tlbkFCSSA9ICRzY29wZS5mZC50b2tlbjFDb250cmFjdEFiaTtcclxuICAgICAgICAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgIHRva2VuQWRkcmVzcz0gJHNjb3BlLmZkLnRva2VuMkNvbnRyYWN0O1xyXG4gICAgICAgICAgICAgICAgICAgICB0b2tlbkFCSSA9ICRzY29wZS5mZC50b2tlbjJDb250cmFjdEFiaTtcclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgbGV0IHdlYjM7ICAgICAgIFxyXG4gICAgICAgICAgICBpZiAod2luZG93LmV0aGVyZXVtKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICB3ZWIzPSBuZXcgV2ViMyh3aW5kb3cuZXRoZXJldW0pOyAgXHJcbiAgICAgICAgICAgIH1lbHNlIGlmICh3aW5kb3cud2ViMylcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICB3ZWIzPSBuZXcgV2ViMyh3aW5kb3cud2ViMyk7IFxyXG4gICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIHdlYjMgPSBudWxsO1xyXG4gICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoXCJFcnJvciBjb25uZWN0aW5nIHRvIHdlYjMgd2FsbGV0IVwiLCdlcnJvcicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBpZiAod2ViMyE9bnVsbClcclxuICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0b2tlbkluc3QgPSBuZXcgd2ViMy5ldGguQ29udHJhY3QodG9rZW5BQkksdG9rZW5BZGRyZXNzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbkluc3QubWV0aG9kcy5hbGxvd2FuY2Uod2FsbGV0LGNvbnRyYWN0QWRkcmVzcykuY2FsbCgpLnRoZW4oZnVuY3Rpb24gKGFsbG93YW5jZV9yYXcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYmFsID0gd2ViMy51dGlscy5mcm9tV2VpKGFsbG93YW5jZV9yYXcsICdldGhlcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7JHNjb3BlLmZkLmFsbG93YW5jZSA9IGJhbDt9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgfSAgICBcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgICAgJHNjb3BlLmZkLnNldEFsbG93YW5jZSA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuY29uZmlybWF0aW9uMSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5mZC50cmFuc2FjdGlvbkhhc2gxID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmVycm9yTWVzc2FnZTEgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgbGV0IHdlYjM7XHJcbiAgICAgICAgICAgICAgICAgICB2YXIgdG9rZW5BZGRyZXNzLHRva2VuQUJJO1xyXG4gICAgICAgICAgICAgICAgICAgdmFyIHNwZW5kZXIgPSAkc2NvcGUuZmQuc3Rha2luZ0NvbnRyYWN0O1xyXG4gICAgICAgICAgICAgICAgICAgdmFyIG93bmVyID0gJHNjb3BlLmZkLmV0aF9hZGRyZXNzO1xyXG4gICAgICAgICAgICAgICAgICAgdmFyIHRva2VuID0gJHNjb3BlLmZkLmN1cnJlbnRUb2tlblRpY2tlcjtcclxuICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbj09XCJLVExZT1wiKVxyXG4gICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICB0b2tlbkFkZHJlc3M9ICRzY29wZS5mZC50b2tlbjFDb250cmFjdDtcclxuICAgICAgICAgICAgICAgICAgICAgdG9rZW5BQkkgPSAkc2NvcGUuZmQudG9rZW4xQ29udHJhY3RBYmk7XHJcbiAgICAgICAgICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICB0b2tlbkFkZHJlc3M9ICRzY29wZS5mZC50b2tlbjJDb250cmFjdDtcclxuICAgICAgICAgICAgICAgICAgICAgdG9rZW5BQkkgPSAkc2NvcGUuZmQudG9rZW4yQ29udHJhY3RBYmk7XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuZXRoZXJldW0pXHJcbiAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHdlYjM9IG5ldyBXZWIzKHdpbmRvdy5ldGhlcmV1bSk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYgKHdpbmRvdy53ZWIzKVxyXG4gICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdlYjM9IG5ldyBXZWIzKHdpbmRvdy53ZWIzKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2ViMyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShcIkVycm9yIGNvbm5lY3RpbmcgdG8gd2FsbGV0IVwiLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2ViMyE9bnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0b2tlbkluc3QgPSBuZXcgd2ViMy5ldGguQ29udHJhY3QodG9rZW5BQkksdG9rZW5BZGRyZXNzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbkluc3Qub3B0aW9ucy5mcm9tID0gb3duZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFtb3VudF93ZWkgPSB3ZWIzLnV0aWxzLnRvV2VpKCRzY29wZS5mZC5BcHByb3ZlQW1vdW50LnRvU3RyaW5nKCksICdldGhlcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuSW5zdC5tZXRob2RzLmFwcHJvdmUoc3BlbmRlcixhbW91bnRfd2VpKS5zZW5kKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub24oJ3RyYW5zYWN0aW9uSGFzaCcsIGZ1bmN0aW9uKGhhc2gpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXskc2NvcGUuZmQudHJhbnNhY3Rpb25IYXNoMT1oYXNoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnBlbmRpbmcxPXRydWU7fSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub24oJ2NvbmZpcm1hdGlvbicsIGZ1bmN0aW9uKGNvbmZpcm1hdGlvbk51bWJlciwgcmVjZWlwdCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maXJtYXRpb25OdW1iZXI+MClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyRzY29wZS5mZC5jb25maXJtYXRpb24xPWNvbmZpcm1hdGlvbk51bWJlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5wZW5kaW5nMT1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5nZXRBbGxvd2FuY2UoJHNjb3BlLmZkLmV0aF9hZGRyZXNzLCRzY29wZS5mZC5jdXJyZW50VG9rZW5UaWNrZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vbigncmVjZWlwdCcsIGZ1bmN0aW9uKHJlY2VpcHQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7JHNjb3BlLmZkLnRyeFJlY2VpcHQxPXJlY2VpcHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnN0YXR1czE9cmVjZWlwdC5zdGF0dXM7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhyZWNlaXB0KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vbignZXJyb3InLCBmdW5jdGlvbihlcnJvciwgcmVjZWlwdCkgeyAvLyBJZiB0aGUgdHJhbnNhY3Rpb24gd2FzIHJlamVjdGVkIGJ5IHRoZSBuZXR3b3JrIHdpdGggYSByZWNlaXB0LCB0aGUgc2Vjb25kIHBhcmFtZXRlciB3aWxsIGJlIHRoZSByZWNlaXB0LlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXskc2NvcGUuZmQuZXJyb3JNZXNzYWdlMT1lcnJvci5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVjZWlwdCE9dW5kZWZpbmVkKSAgJHNjb3BlLmZkLnN0YXR1czE9cmVjZWlwdC5zdGF0dXM7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB9IGVsc2UgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiRXJyb3IgY29ubmVjdGluZyB0byB3YWxsZXQhXCIsJ2Vycm9yJyk7ICAgICBcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgICRzY29wZS5mZC5zdGFrZSA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgdmFyIHRva2VuQWRkcmVzcyx0b2tlbkFCSTtcclxuICAgICAgICAgICAgICAgICAgIHZhciBjb250cmFjdEFkZHJlc3MgPSAkc2NvcGUuZmQuc3Rha2luZ0NvbnRyYWN0O1xyXG4gICAgICAgICAgICAgICAgICAgdmFyIGNvbnRyYWN0QUJJID0gJHNjb3BlLmZkLnN0YWtpbmdDb250cmFjdEFiaTtcclxuICAgICAgICAgICAgICAgICAgIHZhciBvd25lciA9ICRzY29wZS5mZC5ldGhfYWRkcmVzcztcclxuICAgICAgICAgICAgICAgICAgIHZhciB0b2tlbiA9ICRzY29wZS5mZC5jdXJyZW50VG9rZW5UaWNrZXI7XHJcbiAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuY29uZmlybWF0aW9uMiA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5mZC50cmFuc2FjdGlvbkhhc2gyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmVycm9yTWVzc2FnZTIgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgd2ViMztcclxuICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbj09XCJLVExZT1wiKVxyXG4gICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICB0b2tlbkFkZHJlc3M9ICRzY29wZS5mZC50b2tlbjFDb250cmFjdDtcclxuICAgICAgICAgICAgICAgICAgICAgdG9rZW5BQkkgPSAkc2NvcGUuZmQudG9rZW4xQ29udHJhY3RBYmk7XHJcbiAgICAgICAgICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICB0b2tlbkFkZHJlc3M9ICRzY29wZS5mZC50b2tlbjJDb250cmFjdDtcclxuICAgICAgICAgICAgICAgICAgICAgdG9rZW5BQkkgPSAkc2NvcGUuZmQudG9rZW4yQ29udHJhY3RBYmk7XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5ldGhlcmV1bSlcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgd2ViMz0gbmV3IFdlYjMod2luZG93LmV0aGVyZXVtKTsgIFxyXG4gICAgICAgICAgICAgICAgICB9ZWxzZSBpZiAod2luZG93LndlYjMpXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgd2ViMz0gbmV3IFdlYjMod2luZG93LndlYjMpOyBcclxuICAgICAgICAgICAgICAgICAgfWVsc2VcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICB3ZWIzID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiRXJyb3IgY29ubmVjdGluZyB0byB3ZWIzIHdhbGxldCFcIiwnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgaWYgKHdlYjMhPW51bGwpXHJcbiAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udHJhY3RJbnN0ID0gbmV3IHdlYjMuZXRoLkNvbnRyYWN0KGNvbnRyYWN0QUJJLGNvbnRyYWN0QWRkcmVzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJhY3RJbnN0Lm9wdGlvbnMuZnJvbSA9IG93bmVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhbW91bnRfd2VpID0gd2ViMy51dGlscy50b1dlaSgkc2NvcGUuZmQuU3Rha2VBbW91bnQudG9TdHJpbmcoKSwgJ2V0aGVyJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJhY3RJbnN0Lm1ldGhvZHMuc3Rha2UodG9rZW5BZGRyZXNzLGFtb3VudF93ZWkpLnNlbmQoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vbigndHJhbnNhY3Rpb25IYXNoJywgZnVuY3Rpb24oaGFzaCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyRzY29wZS5mZC50cmFuc2FjdGlvbkhhc2gyPWhhc2g7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQucGVuZGluZzI9dHJ1ZTt9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vbignY29uZmlybWF0aW9uJywgZnVuY3Rpb24oY29uZmlybWF0aW9uTnVtYmVyLCByZWNlaXB0KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpcm1hdGlvbk51bWJlcj4wKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyRzY29wZS5mZC5jb25maXJtYXRpb24yPWNvbmZpcm1hdGlvbk51bWJlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQucGVuZGluZzI9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm9uKCdyZWNlaXB0JywgZnVuY3Rpb24ocmVjZWlwdCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7JHNjb3BlLmZkLnRyeFJlY2VpcHQyPXJlY2VpcHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5zdGF0dXMyPXJlY2VpcHQuc3RhdHVzOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmdldEFsbG93YW5jZSgkc2NvcGUuZmQuZXRoX2FkZHJlc3MsdG9rZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhyZWNlaXB0KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vbignZXJyb3InLCBmdW5jdGlvbihlcnJvciwgcmVjZWlwdCkgeyAvLyBJZiB0aGUgdHJhbnNhY3Rpb24gd2FzIHJlamVjdGVkIGJ5IHRoZSBuZXR3b3JrIHdpdGggYSByZWNlaXB0LCB0aGUgc2Vjb25kIHBhcmFtZXRlciB3aWxsIGJlIHRoZSByZWNlaXB0LlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyRzY29wZS5mZC5lcnJvck1lc3NhZ2UyPWVycm9yLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQucGVuZGluZzI9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVjZWlwdCE9dW5kZWZpbmVkKSAkc2NvcGUuZmQuc3RhdHVzMj1yZWNlaXB0LnN0YXR1cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cmFjdEluc3QubWV0aG9kcy5zdGFrZSh0b2tlbkFkZHJlc3MsYW1vdW50X3dlaSkuc2VuZCgpLnRoZW4oZnVuY3Rpb24gKHRyeCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UodHJ4LCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tZXNzYWdlLCdlcnJvcicpOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2UgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiRXJyb3IgY29ubmVjdGluZyB0byB3YWxsZXQhXCIsJ2Vycm9yJyk7ICAgICBcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgJHNjb3BlLmZkLlJlZGVlbSA9IGZ1bmN0aW9uKGVhcmx5LGluZGV4KXtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHZhciB3ZWIzO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5tc2dzW2luZGV4XT09dW5kZWZpbmVkKSAkc2NvcGUuZmQubXNnc1tpbmRleF0gPSB7Y29uZmlybWF0aW9uIDogbnVsbCx0cmFuc2FjdGlvbkhhc2ggOiBudWxsLGVycm9yTWVzc2FnZSA6IG51bGwscGVuZGluZzpudWxsLHRyeFJlY2VpcHQ6bnVsbCxzdGF0dXMgOiBudWxsfTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICRzY29wZS5mZC5tc2dzW2luZGV4XS5jb25maXJtYXRpb249bnVsbDtcclxuICAgICAgICAgICAgICAgJHNjb3BlLmZkLm1zZ3NbaW5kZXhdLnRyYW5zYWN0aW9uSGFzaCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICRzY29wZS5mZC5tc2dzW2luZGV4XS5lcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAkc2NvcGUuZmQubXNnc1tpbmRleF0udHJ4UmVjZWlwdCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICRzY29wZS5mZC5tc2dzW2luZGV4XS5wZW5kaW5nID0gbnVsbDtcclxuICAgICAgICAgICAgICAgJHNjb3BlLmZkLm1zZ3NbaW5kZXhdLnN0YXR1cyA9IG51bGw7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAkc2NvcGUuZmQuY3VycmVjdEluZGV4PWluZGV4OyAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKHdpbmRvdy5ldGhlcmV1bSlcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgd2ViMz0gbmV3IFdlYjMod2luZG93LmV0aGVyZXVtKTsgIFxyXG4gICAgICAgICAgICB9ZWxzZSBpZiAod2luZG93LndlYjMpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgd2ViMz0gbmV3IFdlYjMod2luZG93LndlYjMpOyBcclxuICAgICAgICAgICAgfWVsc2VcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICB3ZWIzID0gbnVsbDtcclxuICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiRXJyb3IgY29ubmVjdGluZyB0byB3ZWIzIHdhbGxldCFcIiwnZXJyb3InKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgaWYgKHdlYjMhPW51bGwpXHJcbiAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRyYWN0QWRkcmVzcyA9ICRzY29wZS5mZC5zdGFraW5nQ29udHJhY3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250cmFjdEFCSSA9ICRzY29wZS5mZC5zdGFraW5nQ29udHJhY3RBYmk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udHJhY3RJbnN0ID0gbmV3IHdlYjMuZXRoLkNvbnRyYWN0KGNvbnRyYWN0QUJJLGNvbnRyYWN0QWRkcmVzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2ViMy5ldGguZ2V0QWNjb3VudHMoKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5ldGhfYWRkcmVzcyA9IHJlc3VsdFswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyYWN0SW5zdC5vcHRpb25zLmZyb20gPSAkc2NvcGUuZmQuZXRoX2FkZHJlc3M7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVhcmx5KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyYWN0SW5zdC5tZXRob2RzLnJlZGVlbUVhcmx5KGluZGV4KS5zZW5kKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vbigndHJhbnNhY3Rpb25IYXNoJywgZnVuY3Rpb24oaGFzaCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyRzY29wZS5mZC5tc2dzW2luZGV4XS50cmFuc2FjdGlvbkhhc2g9aGFzaDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLm1zZ3NbaW5kZXhdLnBlbmRpbmc9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub24oJ2NvbmZpcm1hdGlvbicsIGZ1bmN0aW9uKGNvbmZpcm1hdGlvbk51bWJlciwgcmVjZWlwdCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maXJtYXRpb25OdW1iZXI+MClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyRzY29wZS5mZC5tc2dzW2luZGV4XS5jb25maXJtYXRpb249Y29uZmlybWF0aW9uTnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubXNnc1tpbmRleF0ucGVuZGluZz1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vbigncmVjZWlwdCcsIGZ1bmN0aW9uKHJlY2VpcHQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubXNnc1tpbmRleF0udHJ4UmVjZWlwdD1yZWNlaXB0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubXNnc1tpbmRleF0uc3RhdHVzPXJlY2VpcHQuc3RhdHVzOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZ2V0TXlTdGFraW5ncygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vbignZXJyb3InLCBmdW5jdGlvbihlcnJvciwgcmVjZWlwdCkgeyAvLyBJZiB0aGUgdHJhbnNhY3Rpb24gd2FzIHJlamVjdGVkIGJ5IHRoZSBuZXR3b3JrIHdpdGggYSByZWNlaXB0LCB0aGUgc2Vjb25kIHBhcmFtZXRlciB3aWxsIGJlIHRoZSByZWNlaXB0LlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXskc2NvcGUuZmQubXNnc1tpbmRleF0uZXJyb3JNZXNzYWdlPWVycm9yLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNlaXB0IT11bmRlZmluZWQpICRzY29wZS5mZC5tc2dzW2luZGV4XS5zdGF0dXM9cmVjZWlwdC5zdGF0dXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubXNnc1tpbmRleF0ucGVuZGluZz1mYWxzZTt9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJhY3RJbnN0Lm1ldGhvZHMucmVkZWVtKGluZGV4KS5zZW5kKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm9uKCd0cmFuc2FjdGlvbkhhc2gnLCBmdW5jdGlvbihoYXNoKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7JHNjb3BlLmZkLm1zZ3NbaW5kZXhdLnRyYW5zYWN0aW9uSGFzaD1oYXNoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubXNnc1tpbmRleF0ucGVuZGluZz10cnVlO30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm9uKCdjb25maXJtYXRpb24nLCBmdW5jdGlvbihjb25maXJtYXRpb25OdW1iZXIsIHJlY2VpcHQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlybWF0aW9uTnVtYmVyPjApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLm1zZ3NbaW5kZXhdLmNvbmZpcm1hdGlvbj1jb25maXJtYXRpb25OdW1iZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5tc2dzW2luZGV4XS5wZW5kaW5nPWZhbHNlO30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vbigncmVjZWlwdCcsIGZ1bmN0aW9uKHJlY2VpcHQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubXNnc1tpbmRleF0udHJ4UmVjZWlwdD1yZWNlaXB0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5tc2dzW2luZGV4XS5zdGF0dXM9cmVjZWlwdC5zdGF0dXM7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmdldE15U3Rha2luZ3MoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub24oJ2Vycm9yJywgZnVuY3Rpb24oZXJyb3IsIHJlY2VpcHQpIHsgLy8gSWYgdGhlIHRyYW5zYWN0aW9uIHdhcyByZWplY3RlZCBieSB0aGUgbmV0d29yayB3aXRoIGEgcmVjZWlwdCwgdGhlIHNlY29uZCBwYXJhbWV0ZXIgd2lsbCBiZSB0aGUgcmVjZWlwdC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5tc2dzW2luZGV4XS5lcnJvck1lc3NhZ2U9ZXJyb3IubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNlaXB0IT11bmRlZmluZWQpICAkc2NvcGUuZmQubXNnc1tpbmRleF0uc3RhdHVzPXJlY2VpcHQuc3RhdHVzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLm1zZ3NbaW5kZXhdLnBlbmRpbmc9ZmFsc2U7fSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgIFxyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICB9O1xyXG4gICAgICBcclxuICAgICAgJHNjb3BlLmZkLmdldEJhbGFuY2UgPSBmdW5jdGlvbih0b2tlbil7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBsZXQgd2ViMztcclxuICAgICAgICAgICAgICAgICAgIHZhciB0b2tlbkFkZHJlc3MsdG9rZW5BQkk7XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbj09XCJLVExZT1wiKVxyXG4gICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICB0b2tlbkFkZHJlc3M9ICRzY29wZS5mZC50b2tlbjFDb250cmFjdDtcclxuICAgICAgICAgICAgICAgICAgICAgdG9rZW5BQkkgPSAkc2NvcGUuZmQudG9rZW4xQ29udHJhY3RBYmk7XHJcbiAgICAgICAgICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICB0b2tlbkFkZHJlc3M9ICRzY29wZS5mZC50b2tlbjJDb250cmFjdDtcclxuICAgICAgICAgICAgICAgICAgICAgdG9rZW5BQkkgPSAkc2NvcGUuZmQudG9rZW4yQ29udHJhY3RBYmk7XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICBpZiAod2luZG93LmV0aGVyZXVtKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICB3ZWIzPSBuZXcgV2ViMyh3aW5kb3cuZXRoZXJldW0pOyAgXHJcbiAgICAgICAgICAgIH1lbHNlIGlmICh3aW5kb3cud2ViMylcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICB3ZWIzPSBuZXcgV2ViMyh3aW5kb3cud2ViMyk7IFxyXG4gICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIHdlYjMgPSBudWxsO1xyXG4gICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoXCJFcnJvciBjb25uZWN0aW5nIHRvIHdlYjMgd2FsbGV0IVwiLCdlcnJvcicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBpZiAod2ViMyE9bnVsbClcclxuICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0b2tlbkluc3QgPSBuZXcgd2ViMy5ldGguQ29udHJhY3QodG9rZW5BQkksdG9rZW5BZGRyZXNzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5JbnN0Lm1ldGhvZHMuYmFsYW5jZU9mKCRzY29wZS5mZC5ldGhfYWRkcmVzcykuY2FsbCgpLnRoZW4oZnVuY3Rpb24gKGJhbF9yYXcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYmFsID0gd2ViMy51dGlscy5mcm9tV2VpKGJhbF9yYXcsICdldGhlcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYWw8PTEwMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUua3RseW9fYmFsYW5jZV9vayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmt0bHlvX2JhbGFuY2VfbXNnID0gXCJJbnN1ZmZpY2llbnQgYmFsYW5jZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlICRzY29wZS5rdGx5b19iYWxhbmNlX29rID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyRzY29wZS5iYWxhbmNlX2t0bHlvID0gYmFsKyBcIiBLVExZT1wiO30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAgXHJcbiAgICAgICAgICAkc2NvcGUuZmQuZm9ybWF0TnVtYmVyID0gZnVuY3Rpb24oaW5wdXRfc3RyaW5nKXtcclxuICAgICAgICAgICAgbGV0IG51bWJlcjtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgaWYgKHdpbmRvdy5ldGhlcmV1bSlcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgd2ViMz0gbmV3IFdlYjMod2luZG93LmV0aGVyZXVtKTsgIFxyXG4gICAgICAgICAgICB9ZWxzZSBpZiAod2luZG93LndlYjMpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgd2ViMz0gbmV3IFdlYjMod2luZG93LndlYjMpOyBcclxuICAgICAgICAgICAgfWVsc2VcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICB3ZWIzID0gbnVsbDtcclxuICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiRXJyb3IgY29ubmVjdGluZyB0byB3ZWIzIHdhbGxldCFcIiwnZXJyb3InKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgaWYgKHdlYjMhPW51bGwpXHJcbiAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIG51bWJlciA9IE51bWJlcih3ZWIzLnV0aWxzLmZyb21XZWkoaW5wdXRfc3RyaW5nLCAnZXRoZXInKSkudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7IG1heGltdW1GcmFjdGlvbkRpZ2l0czogMTggfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLypcclxuICAgICAgICAgICBsZXQgZGVjaW1hbHMgPSAoXCIwMDAwMDAwMDAwMDAwMDAwMDBcIiArIGlucHV0X3N0cmluZy5zdWJzdHIoaW5wdXRfc3RyaW5nLmxlbmd0aCAtIDE4KSkuc2xpY2UoLTE4KTtcclxuICAgICAgICAgICBpZiAoaW5wdXRfc3RyaW5nLmxlbmd0aDwxOSkgbnVtYmVyPSBcIjAuXCIrZGVjaW1hbHM7XHJcbiAgICAgICAgICAgZWxzZSBudW1iZXIgPSBpbnB1dF9zdHJpbmcuc3Vic3RyaW5nKDAsaW5wdXRfc3RyaW5nLmxlbmd0aCAtIDE4KStcIi5cIitkZWNpbWFscztcclxuICAgICAgICAgICAqL1xyXG4gICAgICAgICAgIHJldHVybiBudW1iZXI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgJHNjb3BlLmZkLmdldEFtb3VudCA9IGZ1bmN0aW9uKHRva2VuLGZvclRva2VuLGFtb3VudCxhbW91bnRSZXdhcmQpe1xyXG4gICAgICAgICAgICBsZXQgbnVtYmVyLG51bWJlclJld2FyZDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCB0b2tlblRpY2tlciA9ICRzY29wZS5mZC5nZXRUb2tlblRpY2tlcih0b2tlbik7XHJcbiAgICAgICAgICAgIGlmICh3aW5kb3cuZXRoZXJldW0pXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgIHdlYjM9IG5ldyBXZWIzKHdpbmRvdy5ldGhlcmV1bSk7ICBcclxuICAgICAgICAgICAgfWVsc2UgaWYgKHdpbmRvdy53ZWIzKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIHdlYjM9IG5ldyBXZWIzKHdpbmRvdy53ZWIzKTsgXHJcbiAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgd2ViMyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShcIkVycm9yIGNvbm5lY3RpbmcgdG8gd2FsbGV0IVwiLCdlcnJvcicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBpZiAod2ViMyE9bnVsbClcclxuICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgbnVtYmVyID0gTnVtYmVyKHdlYjMudXRpbHMuZnJvbVdlaShhbW91bnQsICdldGhlcicpKTtcclxuICAgICAgICAgICAgICAgbnVtYmVyUmV3YXJkID0gTnVtYmVyKHdlYjMudXRpbHMuZnJvbVdlaShhbW91bnRSZXdhcmQsICdldGhlcicpKTtcclxuICAgICAgICAgICAgICAgaWYgKHRva2VuVGlja2VyPT1mb3JUb2tlbikgbnVtYmVyID0gbnVtYmVyK251bWJlclJld2FyZDtcclxuICAgICAgICAgICAgICAgZWxzZSBudW1iZXIgPSBudW1iZXJSZXdhcmQ7XHJcbiAgICAgICAgICAgICAgIG51bWJlciA9IG51bWJlci50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHsgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiA0IH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICBcclxuICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAkc2NvcGUuZmQuaXNSZWxlYXNlZCA9IGZ1bmN0aW9uKHN0YWtlKXtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgaWYgKHN0YWtlLnN0YWtlRW5kPj0kc2NvcGUuZmQuY3VycmVudERhdGUpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICBlbHNlIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAkc2NvcGUuZmQuZm9ybWF0RGF0ZSA9IGZ1bmN0aW9uKGlucHV0X3RpbWVzdGFtcCl7XHJcbiAgICAgICAgICAgIGxldCBkYXRlX3ZhcjtcclxuICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSB7IHdlZWtkYXk6ICdzaG9ydCcsIHllYXI6ICdudW1lcmljJywgbW9udGg6ICdzaG9ydCcsIGRheTogJ251bWVyaWMnLGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOicyLWRpZ2l0JyxzZWNvbmQ6JzItZGlnaXQnLGhvdXIxMjpmYWxzZSB9O1xyXG4gICAgICAgICAgICBkYXRlX3ZhciA9IG5ldyBEYXRlKGlucHV0X3RpbWVzdGFtcCoxMDAwKS50b0xvY2FsZURhdGVTdHJpbmcodW5kZWZpbmVkLG9wdGlvbnMpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgcmV0dXJuIGRhdGVfdmFyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5mZC5nZXRUb2tlblRpY2tlciA9IGZ1bmN0aW9uKHRva2VuQWRkcmVzcyl7XHJcbiAgICAgICAgXHJcbiAgICAgICAgIGxldCB0b2tlblRpY2tlcjtcclxuICAgICAgICAgaWYgKHRva2VuQWRkcmVzcy50b0xvd2VyQ2FzZSgpPT0gJHNjb3BlLmZkLnRva2VuMUNvbnRyYWN0LnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICAgIHtcclxuICAgICAgICAgICAgdG9rZW5UaWNrZXI9XCJLVExZT1wiO1xyXG4gICAgICAgICB9ZWxzZVxyXG4gICAgICAgICB7XHJcbiAgICAgICAgICAgIHRva2VuVGlja2VyPVwiQk5GXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICB9XHJcbiAgICAgICAgIHJldHVybiB0b2tlblRpY2tlcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLnNldE1heCA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICBpZiAoJHNjb3BlLmZkLnJlbWFpblN0YWtlTGltaXQgPiAkc2NvcGUuZmQuYWxsb3dhbmNlKSAkc2NvcGUuZmQuU3Rha2VBbW91bnQgPSAkc2NvcGUuZmQuYWxsb3dhbmNlO1xyXG4gICAgICAgICBlbHNlICRzY29wZS5mZC5TdGFrZUFtb3VudCA9ICRzY29wZS5mZC5yZW1haW5TdGFrZUxpbWl0O1xyXG4gICAgICAgICBcclxuICAgICAgICAgXHJcbiAgICAgICAgfTtcclxuICAgICAgICAkc2NvcGUuZmQuc2V0TWF4QWxsb3dhbmNlID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgXHJcbiAgICAgICAgICRzY29wZS5mZC5BcHByb3ZlQW1vdW50ID0gJHNjb3BlLmZkLnJlbWFpblN0YWtlTGltaXQ7XHJcbiAgICAgICAgIFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgJHNjb3BlLmZkLmdldE15TGltaXRzID0gZnVuY3Rpb24odG9rZW4pe1xyXG4gICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICBpZiAod2luZG93LmV0aGVyZXVtKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICB3ZWIzPSBuZXcgV2ViMyh3aW5kb3cuZXRoZXJldW0pOyAgXHJcbiAgICAgICAgICAgIH1lbHNlIGlmICh3aW5kb3cud2ViMylcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICB3ZWIzPSBuZXcgV2ViMyh3aW5kb3cud2ViMyk7IFxyXG4gICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIHdlYjMgPSBudWxsO1xyXG4gICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoXCJFcnJvciBjb25uZWN0aW5nIHRvIHdhbGxldCFcIiwnZXJyb3InKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgaWYgKHdlYjMhPW51bGwpXHJcbiAgICAgICAgICAgICAgIHsgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB3ZWIzLmV0aC5nZXRBY2NvdW50cygpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmV0aF9hZGRyZXNzID0gcmVzdWx0WzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmV0aF9hZGRyZXNzIT1udWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2dldCBhZGRyZXNzIGFuZCBhYmlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRyYWN0QWRkcmVzcyA9ICRzY29wZS5mZC5zdGFraW5nQ29udHJhY3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250cmFjdEFCSSA9ICRzY29wZS5mZC5zdGFraW5nQ29udHJhY3RBYmk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRyYWN0SW5zdCA9IG5ldyB3ZWIzLmV0aC5Db250cmFjdChjb250cmFjdEFCSSxjb250cmFjdEFkZHJlc3MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyYWN0SW5zdC5vcHRpb25zLmZyb20gPSAkc2NvcGUuZmQuZXRoX2FkZHJlc3M7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJhY3RJbnN0Lm1ldGhvZHMuZ2V0TXlMaW1pdHMoKS5jYWxsKCkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuPT1cIktUTFlPXCIpICRzY29wZS5mZC5zcGVudFN0YWtlTGltaXQ9d2ViMy51dGlscy5mcm9tV2VpKGRhdGEubGltaXQxLCdldGhlcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlICRzY29wZS5mZC5zcGVudFN0YWtlTGltaXQ9d2ViMy51dGlscy5mcm9tV2VpKGRhdGEubGltaXQyLCdldGhlcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cmFjdEluc3QubWV0aG9kcy5nZXRTdGFrZVJld2FyZEFtb3VudHMoKS5jYWxsKCkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuPT1cIktUTFlPXCIpICRzY29wZS5mZC5tYXhTdGFrZUxpbWl0PXdlYjMudXRpbHMuZnJvbVdlaShkYXRhWzRdLCdldGhlcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlICRzY29wZS5mZC5tYXhTdGFrZUxpbWl0PXdlYjMudXRpbHMuZnJvbVdlaShkYXRhWzVdLCdldGhlcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubWF4U3Rha2VMaW1pdFByaW50ID0gTnVtYmVyKCRzY29wZS5mZC5tYXhTdGFrZUxpbWl0KS50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHsgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAxOCB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnJlbWFpblN0YWtlTGltaXQgPSAkc2NvcGUuZmQubWF4U3Rha2VMaW1pdCAtICRzY29wZS5mZC5zcGVudFN0YWtlTGltaXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5yZW1haW5TdGFrZUxpbWl0UHJpbnQgPSBOdW1iZXIoJHNjb3BlLmZkLnJlbWFpblN0YWtlTGltaXQpLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwgeyBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDE4IH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1lc3NhZ2UsJ2Vycm9yJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tZXNzYWdlLCdlcnJvcicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyYWN0SW5zdC5tZXRob2RzLmdldFN0YWtlUmV3YXJkQW1vdW50cygpLmNhbGwoKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW49PVwiS1RMWU9cIikgJHNjb3BlLmZkLm1heFN0YWtlTGltaXQ9ZGF0YS5tYXhTdGFrZUFtdDE7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAkc2NvcGUuZmQubWF4U3Rha2VMaW1pdD1kYXRhLm1heFN0YWtlQW10MjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1lc3NhZ2UsJ2Vycm9yJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiRXJyb3IgY29ubmVjdGluZyB0byB3YWxsZXQhXCIsJ2Vycm9yJykgO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZXJyb3JfbXNnID0gZXJyb3IubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgICBcclxuICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICRzY29wZS5mZC5nZXRNeVN0YWtpbmdzID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICAkc2NvcGUuZmQuYWZ0ZXJRdWVyeT1mYWxzZTtcclxuICAgICAgICAgICAgICAvLyRzY29wZS5mZC5teVN0YWtlcz1bXTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICh3aW5kb3cuZXRoZXJldW0pXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgIHdlYjM9IG5ldyBXZWIzKHdpbmRvdy5ldGhlcmV1bSk7ICBcclxuICAgICAgICAgICAgfWVsc2UgaWYgKHdpbmRvdy53ZWIzKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIHdlYjM9IG5ldyBXZWIzKHdpbmRvdy53ZWIzKTsgXHJcbiAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgd2ViMyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShcIkVycm9yIGNvbm5lY3RpbmcgdG8gd2FsbGV0IVwiLCdlcnJvcicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBpZiAod2ViMyE9bnVsbClcclxuICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB3ZWIzLmV0aC5nZXRBY2NvdW50cygpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5ldGhfYWRkcmVzcyA9IHJlc3VsdFswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5ldGhfYWRkcmVzcyE9bnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9nZXQgYWRkcmVzcyBhbmQgYWJpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250cmFjdEFkZHJlc3MgPSAkc2NvcGUuZmQuc3Rha2luZ0NvbnRyYWN0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udHJhY3RBQkkgPSAkc2NvcGUuZmQuc3Rha2luZ0NvbnRyYWN0QWJpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250cmFjdEluc3QgPSBuZXcgd2ViMy5ldGguQ29udHJhY3QoY29udHJhY3RBQkksY29udHJhY3RBZGRyZXNzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cmFjdEluc3Qub3B0aW9ucy5mcm9tID0gJHNjb3BlLmZkLmV0aF9hZGRyZXNzO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyYWN0SW5zdC5tZXRob2RzLmdldE15U3Rha2luZ3MoKS5jYWxsKCkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmN1cnJlbnREYXRlID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7ICRzY29wZS5mZC5teVN0YWtlcyA9IGRhdGE7JHNjb3BlLmZkLmFmdGVyUXVlcnk9dHJ1ZTt9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1lc3NhZ2UsJ2Vycm9yJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiRXJyb3IgY29ubmVjdGluZyB0byB3YWxsZXQhXCIsJ2Vycm9yJykgO1xyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5lcnJvcl9tc2cgPSBlcnJvci5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8kc2NvcGUuZmQuZ2V0TXlTdGFraW5ncygpO1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZ2V0Rm9ybVJlc291cmNlID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5mb3JtTG9hZGVkPWZhbHNlO1xyXG4gICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT1udWxsKVxyXG4gICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPTA7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZm9ybUxvYWRpbmc9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRm9ybUV4dGVuZGVkKCRzY29wZS5mZC5SZWxhdGVkLCRzY29wZS50YXNrSWQsJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5mb3JtVHlwZSwkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsXCJ3XCIsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VXaWRnZXREZWZpbml0aW9uPSBkYXRhLmRhdGEucmVzb3VyY2VEZWZpbml0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YS5kYXRhLndpZGdldHMpKSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmRhc2hib2FyZC53aWRnZXRzLmxheW91dCA9ICBkYXRhLmRhdGEud2lkZ2V0cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lPSRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VXaWRnZXREZWZpbml0aW9uLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLnJlbGF0ZWRJZD0kc2NvcGUuZmQuUmVsYXRlZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ucHJlc2VudGF0aW9uSWQ9JHNjb3BlLmZkLlByZXNlbnRhdGlvbklkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5zcmNfdHlwZV9pZD0kc2NvcGUuZmQuUG9wdWxhdGVUeXBlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5zcmNfdHlwZV90ZXh0PSRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc3JjX3R5cGVfdGV4dFskc2NvcGUuZmQuUG9wdWxhdGVUeXBlXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ucGFyZW50RWxlbWVudElkPSRzY29wZS5mZC5QYXJlbnRFbGVtZW50SWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbT17J25hbWUnOiRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VXaWRnZXREZWZpbml0aW9uLm5hbWUsJ3JlbGF0ZWRJZCc6JHNjb3BlLmZkLlJlbGF0ZWQsICdwcmVzZW50YXRpb25JZCc6JHNjb3BlLmZkLlByZXNlbnRhdGlvbklkICAsJ3NyY190eXBlX2lkJzokc2NvcGUuZmQuUG9wdWxhdGVUeXBlLCdzcmNfdHlwZV90ZXh0Jzokc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNyY190eXBlX3RleHRbJHNjb3BlLmZkLlBvcHVsYXRlVHlwZV0sJ3BhcmVudEVsZW1lbnRJZCc6JHNjb3BlLmZkLlBhcmVudEVsZW1lbnRJZH07XHJcbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC53SXRlbVZhbHVlPWRhdGEuZGF0YS53aWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlYXJjaEZvcm1Eb3dubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmZvcm1Mb2FkaW5nPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2V0RmllbGQoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQsJ1JlYWRPbmx5Jyx0cnVlKTsgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZXRGaWVsZCgkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmRhc2hib2FyZC53aWRnZXRzLmxheW91dCwnUmVxdWlyZWQnLGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmZvcm1Mb2FkaW5nPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZ2V0Rm9ybVJlc291cmNlV2l0aERhdGEgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZm9ybUxvYWRlZD1mYWxzZTtcclxuICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT1udWxsIHx8ICRzY29wZS5mZC5QcmVzZW50YXRpb25JZD09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCA9IDA7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJlbnRFbGVtZW50SWQ9PW51bGwgfHwgJHNjb3BlLmZkLlBhcmVudEVsZW1lbnRJZD09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5QYXJlbnRFbGVtZW50SWQgPSAwO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkPT11bmRlZmluZWQgfHwgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkPT0wKVxyXG4gICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQucHJldmlvdXNUYXNrRGF0YVsnZGF0YXNldFJlY29yZElkJ10hPXVuZGVmaW5lZCAmJiAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnByZXZpb3VzVGFza0RhdGFbJ2RhdGFzZXRSZWNvcmRJZCddIT1cIlwiICYmICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucHJldmlvdXNUYXNrRGF0YVsnZGF0YXNldElkJ109PSRzY29wZS5mZC5SZWxhdGVkKSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQgPSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnByZXZpb3VzVGFza0RhdGFbJ2RhdGFzZXRSZWNvcmRJZCddO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQgIT09J251bWJlcicgJiYgdHlwZW9mICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZCAhPT0nc3RyaW5nJylcclxuICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkKSlcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkLmxlbmd0aD4wKVxyXG4gICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZD0gJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkWzBdLmlkICBcclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZCA9ICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZC5pZDsgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRm9ybUV4dGVuZGVkV2l0aERhdGEoJHNjb3BlLmZkLlJlbGF0ZWQsJHNjb3BlLnRhc2tJbml0aWF0ZUlkLCRzY29wZS50YXNrRXhlY3V0ZUlkLCRzY29wZS5mZC5Qb3B1bGF0ZVR5cGUsJHNjb3BlLmZkLlBhcmVudEVsZW1lbnRJZCwkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsJHNjb3BlLnByZXZUYXNrRXhlSWQsJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5mb3JtVHlwZSwkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LndpZGdldFR5cGUsJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkLFwid1wiLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWRdID0gIGRhdGEuZGF0YS5mb3JtX2RhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5QcmVzZW50YXRpb25JZF09PXVuZGVmaW5lZCkgJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5QcmVzZW50YXRpb25JZF09W107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbj0gZGF0YS5kYXRhLnJlc291cmNlRGVmaW5pdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEuZGF0YS53aWRnZXRzKSkgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQgPSAgZGF0YS5kYXRhLndpZGdldHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWRdLmxlbmd0aD4wKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQgPSAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXVswXVsnaWQnXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZGF0YXNldFJlY29yZElkPSRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWU9JHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVdpZGdldERlZmluaXRpb24ubmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ucmVsYXRlZElkPSRzY29wZS5mZC5SZWxhdGVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5wcmVzZW50YXRpb25JZD0kc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLnNyY190eXBlX2lkPSRzY29wZS5mZC5Qb3B1bGF0ZVR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLnNyY190eXBlX3RleHQ9JHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zcmNfdHlwZV90ZXh0WyRzY29wZS5mZC5Qb3B1bGF0ZVR5cGVdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5wYXJlbnRFbGVtZW50SWQ9JHNjb3BlLmZkLlBhcmVudEVsZW1lbnRJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtPXsnbmFtZSc6JHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVdpZGdldERlZmluaXRpb24ubmFtZSwncmVsYXRlZElkJzokc2NvcGUuZmQuUmVsYXRlZCwgJ3ByZXNlbnRhdGlvbklkJzokc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQgICwnc3JjX3R5cGVfaWQnOiRzY29wZS5mZC5Qb3B1bGF0ZVR5cGUsJ3NyY190eXBlX3RleHQnOiRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc3JjX3R5cGVfdGV4dFskc2NvcGUuZmQuUG9wdWxhdGVUeXBlXSwncGFyZW50RWxlbWVudElkJzokc2NvcGUuZmQuUGFyZW50RWxlbWVudElkfTtcclxuIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuZmQud0l0ZW1WYWx1ZT1kYXRhLmRhdGEud2lkZ2V0cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJHRpbWVvdXQoZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5pbml0aWF0ZUZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZm9ybUxvYWRpbmc9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlYXJjaEZvcm1Eb3dubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICB9KTsgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTUlHT1IgLSBiaXRubyAtIERPQklPIFJFU09VUkNFUkVDT1JELUlEIFpBIEJST0FEQ0FTVCAgLSBWSUVXX1JFU09VUkNFIFdJREdFVFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2Uuc2V0RGF0YSh7d2lkZ2V0SWQ6JHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLCBERUk6IFt7J25hbWUnOidyZXNvdXJjZUxpbmsnLCd2YWx1ZSc6W3tuYW1lOidyZXNvdXJjZUlkJyx2YWx1ZTokc2NvcGUuZmQuUmVsYXRlZH0se25hbWU6J3Jlc291cmNlUmVjb3JkSWQnLHZhbHVlOiRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZH1dfV19KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2V0RmllbGQoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQsJ1JlYWRPbmx5Jyx0cnVlKTsgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZXRGaWVsZCgkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmRhc2hib2FyZC53aWRnZXRzLmxheW91dCwnUmVxdWlyZWQnLGZhbHNlKTsgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgfTtcclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2V0U2VsZWN0ZWREYXRhc2V0ID0gZnVuY3Rpb24oaWQpICB7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW09PXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbT17fTtcclxuICAgICAgICAgICAgICB2YXIgcG9zID0gJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZUxpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoaWQpO1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGlmIChwb3M+PTApe1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5pZCA9ICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VMaXN0W3Bvc10uaWQ7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWUgPSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlTGlzdFtwb3NdLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkRGF0YXNldCA9ICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VMaXN0W3Bvc107XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkID0gJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lICsnICgnKyRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0uaWQgKycpJ1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbV9jPSRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW07XHJcbiAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0XHR9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAvLyBQT1BVTkkgTElTVFUgREVGSU5JQ0lKQSBPRCBSRVNVUlNBIChSRVNPVVJDRVMgTElTVClcclxuXHQkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmdldFJlc291cmNlcyA9IGZ1bmN0aW9uKCkgIHtcclxuXHRcdFx0XHRcdFx0XHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlTGlzdD09dW5kZWZpbmVkKSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlTGlzdD1bXTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZMaXN0QnlUeXBlKGxhbmcsJ3NtYXJ0Y29udHJhY3QnKS50aGVuKFxyXG5cdFx0XHRcdFx0XHRmdW5jdGlvbihkYXRhKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUmVsYXRlZCE9bnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2V0U2VsZWN0ZWREYXRhc2V0KCRzY29wZS5mZC5SZWxhdGVkKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ICAgICBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCB9KTtcclxuXHRcdFx0XHRcdH1cclxuICAgXHJcbiAgICAgICAgIFxyXG4gIGlmICgkc2NvcGUuZmQuUmVsYXRlZCE9bnVsbCAmJiAgISRzY29wZS5mb3JtRGVmaW5pdGlvbiAmJiAhJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWFyY2hGb3JtRG93bmxvYWRlZClcclxuICB7XHJcbiAgICBcclxuICAgIC8vICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZ2V0Rm9ybVJlc291cmNlV2l0aERhdGEoKTtcclxuICAgIC8vICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZ2V0RGF0YXNldHMoKTtcclxuICAgIC8vICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2V0U2VsZWN0ZWREYXRhc2V0KCRzY29wZS5mZC5SZWxhdGVkKTtcclxuICAgIFxyXG4gIH1lbHNlIGlmICgkc2NvcGUuZmQuUmVsYXRlZCE9bnVsbClcclxuICB7XHJcbiAgICAgLy8kc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmdldEZvcm1SZXNvdXJjZSgpO1xyXG4gICAgIC8vJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5nZXRSZXNvdXJjZXMoKTtcclxuICAgICAvLyRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2V0U2VsZWN0ZWREYXRhc2V0KCRzY29wZS5mZC5SZWxhdGVkKTtcclxuICAgIFxyXG4gIH0gXHJcblxyXG4gICAgXHJcblxyXG5cclxuICAgICAgIFxyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgIFxyXG4gICAgICAgICAgICBsZXQgdGVtcGxhdGVcclxuICAgICAgICAgICAgdGVtcGxhdGUgPSAkdGVtcGxhdGVDYWNoZS5nZXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0S3RseW9TdGFraW5nLmh0bWwnKTtcclxuICAgICAgICAgICAgJGVsZW1lbnQuYXBwZW5kKCRjb21waWxlKHRlbXBsYXRlKSgkc2NvcGUpKTsgXHJcblxyXG4gIFxyXG4gICAgICB9XTtcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgY29udHJvbGxlcjogY29udHJvbGxlcixcclxuICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG5cclxuICAgICAgICAgICAgfSAgICAgXHJcbiAgfVxyXG4gIFxyXG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0TGFiZWwgKCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXHJcblx0XHRcclxuICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RMYWJlbC5odG1sJyxcclxuICAgICAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uKCRzY29wZSxHcmlkc3RlclNlcnZpY2UsV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZSxVdGlsaXR5U2VydmljZSl7XHJcblx0XHRcdFx0IFxyXG5cdFx0XHRcclxuXHRcdFx0XHQkc2NvcGUuZmQubG9jYWxWYXJzID0ge1xyXG5cdFx0XHRcdFx0Y2FsY3VsYXRlRnVuY3Rpb25zIDpbIHtpZDoxLG5hbWU6J3N1bSd9LHtpZDoyLG5hbWU6J21lYW4nfSx7aWQ6MyxuYW1lOidtaW4nfSx7aWQ6NCxuYW1lOidtYXgnfSx7aWQ6NSxuYW1lOidjb3VudCd9IF0gLFxyXG5cdFx0XHRcdFx0Z3NydmM6IEdyaWRzdGVyU2VydmljZVxyXG5cdFx0XHRcdH0gICAgXHJcblxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvLyRzY29wZS5nc3J2YyA9IEdyaWRzdGVyU2VydmljZTtcclxuXHRcdFx0XHRcclxuICAgICAgICAgICAgICAgIFxyXG5cdFx0XHRcdGlmICgkc2NvcGUuZmQubG9jYWxWYXJzPT11bmRlZmluZWQpICAkc2NvcGUuZmQubG9jYWxWYXJzPXt9XHJcblx0XHRcdFx0JHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZURlZmluaXRpb24gPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uXHJcblx0XHRcdFx0XHJcblx0XHRcdFx0JHNjb3BlLmxvY2FsVmFycyA9IHtnc3J2YzpHcmlkc3RlclNlcnZpY2V9IC8vYmVjYXVzZSBrdC1kZWxldGUtZWxlbWVudFxyXG5cdFx0XHRcclxuXHRcdFx0XHRpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5wYXJlbnRSZXNvdXJjZUlkPT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnMucGFyZW50UmVzb3VyY2VJZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZUlkID8/ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udWlkIC8vIGlmIGRpcmVjdGx5IG9uIHBhZ2UgXHJcblxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnNob3dQcm9wZXJ0aWVzID0gZnVuY3Rpb24oZXZlbnQpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZ3NydmMuc2V0RmllbGRQcm9wZXJ0aWVzKCRzY29wZS5mZCxldmVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0ICAvL3JlZ2lzdGVyIHdpZGdldCBcclxuXHRcdFx0XHQgIHZhciBvdXRfZmllbGRzID0gWydyZXNvdXJjZUlkJ11cclxuXHRcdFx0XHQgIGlmICgkc2NvcGUuZmQuVXVpZFJlZj09dW5kZWZpbmVkKSAkc2NvcGUuZmQuVXVpZFJlZj1VdGlsaXR5U2VydmljZS51dWlkdjQoKVxyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdCAgbGV0IHdfYWN0aW9ucz1bXVxyXG5cclxuXHRcdFx0XHQgIHZhciB3aWRnZXREZWZpbml0aW9uID0ge1xyXG5cdFx0XHRcdFx0ICBERUk6IFt7J25hbWUnOidyZXNvdXJjZUxpbmsnLCdkaXNwbGF5TmFtZSc6J0RhdGFzZXQgcmVjb3JkIGlkJywndmFsdWUnOlt7bmFtZToncmVzb3VyY2VJZCcsdmFsdWU6JHNjb3BlLmZkLlJlbGF0ZWR9LHtuYW1lOidyZXNvdXJjZVJlY29yZElkJyx2YWx1ZTonJ31dfV0sXHJcblx0XHRcdFx0XHRcdGFjdGlvbnM6IHdfYWN0aW9ucyxcclxuXHRcdFx0XHRcdFx0d2lkZ2V0TGFiZWw6ICdMYWJlbCcsXHJcblx0XHRcdFx0XHRcdHdpZGdldE5hbWU6ICdrdExhYmVsJyxcclxuXHRcdFx0XHRcdFx0d2lkZ2V0SWQ6ICRzY29wZS5mZC5VdWlkUmVmLFxyXG5cdFx0XHRcdFx0XHR0YXNrX2luaXRpYXRlX2lkOiRzY29wZS50YXNrSW5pdGlhdGVJZCxcclxuXHRcdFx0XHRcdFx0dGFza19leGVjdXRlX2lkOiRzY29wZS50YXNrRXhlY3V0ZUlkLFxyXG5cdFx0XHRcdFx0XHR0YXNrSWQ6ICAkc2NvcGUubFRhc2tJZCxcclxuXHRcdFx0XHRcdFx0cmVzb3VyY2VfaWQ6JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkLFxyXG5cdFx0XHRcdFx0XHRyZXNvdXJjZURlZklkIDogJHNjb3BlLmZkLlJlbGF0ZWQsIFxyXG5cdFx0XHRcdFx0XHRvdXRwdXQ6b3V0X2ZpZWxkcyxcclxuXHRcdFx0XHRcdFx0cGFyZW50UmVzb3VyY2VJZDokc2NvcGUuZmQubG9jYWxWYXJzPy5wYXJlbnRSZXNvdXJjZUlkXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0ICBcclxuXHRcdFx0XHQgICRzY29wZS5mZC5sb2NhbFZhcnMubG9jYWxXaWRnZXRJZCA9IFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UucmVnaXN0ZXJXaWRnZXQod2lkZ2V0RGVmaW5pdGlvbik7XHJcblx0XHRcdFx0ICAkc2NvcGUuZmQubG9jYWxWYXJzLmxvY2FsSWQ9JHNjb3BlLmZkLmxvY2FsVmFycy5sb2NhbFdpZGdldElkO1xyXG5cdFx0XHRcdCAgJHNjb3BlLmZkLkxvY2FsSWQ9JHNjb3BlLmZkLmxvY2FsVmFycy5sb2NhbFdpZGdldElkO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgfSwvL2VuZCBjb250cm9sZXJcclxuXHRcdFx0XHRcclxuICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLlBhcmFtZXRlcnMgPT0gbnVsbCkgc2NvcGUuZmQuUGFyYW1ldGVycyA9IHt9IC8vbnVsbCBvciB1bmRlZmluZWQgIVxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBzY29wZS5mZC5pc0xhYmVsU3R5bGUgPSB0cnVlO1xyXG5cdFx0XHRcdCAgc2NvcGUuZmQuUGFyYW1ldGVycy5IaWRlRWxlbWVudFByb3BlcnRpZXMgPSBmYWxzZSBcclxuXHRcdFx0XHQgIFxyXG5cdFx0XHRcdCAgLy9pZiAoc2NvcGUuZmQuUGFyYW1ldGVycy53aWRnZXRSZWZlcmVuY2UpXHJcblx0XHRcdFx0XHRcdFx0Ly9zY29wZS5mZC5QYXJhbWV0ZXJzLkhpZGVFbGVtZW50UHJvcGVydGllcyA9IGZhbHNlIFxyXG5cdFx0XHRcdCAgLy9lbHNlIFxyXG5cdFx0XHRcdFx0Ly8gIHNjb3BlLmZkLlBhcmFtZXRlcnMuSGlkZUVsZW1lbnRQcm9wZXJ0aWVzID0gdHJ1ZSAvL2hpZGUgdmFsdWUgcHJvcGVydGllc1xyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHQgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxufTtcbid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdExpc3QgKCRyb290U2NvcGUsQ29kZXNTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSwgS2F0YWx5b1N0YXRlTWFuYWdlciwkdGltZW91dCkge1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxyXG4gICAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbiAoJHNjb3BlLENvZGVzU2VydmljZSwkcm9vdFNjb3BlLE1lc3NhZ2luZ1NlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlLFV0aWxpdHlTZXJ2aWNlLCBLYXRhbHlvU3RhdGVNYW5hZ2VyLCRjb21waWxlLCRlbGVtZW50LCR0ZW1wbGF0ZUNhY2hlLCR0aW1lb3V0LCRxKXtcclxuICAgICAgICAgICAgICAgICRzY29wZS5DVFJMPSdrdExpc3QnXHJcblx0XHRcdFx0Ly8kc2NvcGUuZmQudGVzdHVpZD1VdGlsaXR5U2VydmljZS51dWlkdjQoKSAvLyBzY29wZSB0ZXN0aW5nXHJcblx0XHRcdFx0Ly9jb25zb2xlLmxvZygnaW5pdCBjb250cm9sZXI6ICcgKyAkc2NvcGUuZmQudGVzdHVpZCkgLy9zY29wZSB0ZXN0aW5nXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzID0ge31cclxuXHRcdFx0XHQkc2NvcGUuZmQubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0gID0gJHNjb3BlLmZkXHJcbiAgICAgICAgICAgICAgICAkc2NvcGVbJHNjb3BlLmZkLmlkXSAgPSB7J2ZkJzogJHNjb3BlLmZkfVxyXG5cdFx0XHRcdCRzY29wZS5teXNjb3BlID0gJHNjb3BlXHJcblx0XHRcdFx0JHNjb3BlLk1lc3NhZ2luZ1NlcnZpY2U9TWVzc2FnaW5nU2VydmljZVxyXG4gICAgICAgICAgICAgICAgIFxyXG5cdFx0XHRcdC8vaWYgKCRzY29wZS5mZC5sb2NhbFZhcnM9PXVuZGVmaW5lZCkgICRzY29wZS5mZC5sb2NhbFZhcnM9eyB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHRlbXBsYXRlO1xyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uKSB0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZUNhY2hlLmdldCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RMaXN0Lmh0bWwnKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgdGVtcGxhdGUgPSAkdGVtcGxhdGVDYWNoZS5nZXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0TGlzdEV4ZS5odG1sJyk7XHJcbiAgICAgICAgICBcclxuXHRcdCAgXHJcblxyXG5cdFx0ICBcdFx0Ly9jb25zb2xlLmxvZygnaW5pdCBsaW5rOiAnICsgJHNjb3BlLmZkLnRlc3R1aWQpIC8vc2NvcGUgdGVzdGluZ1xyXG5cdFx0XHRcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycz09PXVuZGVmaW5lZCkgJHNjb3BlLmZkLlBhcmFtZXRlcnMgPSB7fVxyXG4gICAgICAgICAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZzsgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUub3JnYW5pc2F0aW9uX2lkID0gICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlcj8ub3JnYW5pc2F0aW9uPy5pZFxyXG5cclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5WYWx1ZUZvbnRDb2xvcj09PXVuZGVmaW5lZCkgJHNjb3BlLmZkLlBhcmFtZXRlcnMuVmFsdWVGb250Q29sb3IgPSAnIzAwMCdcclxuICAgICAgICAgICAgICAgICRzY29wZS5nc3J2YyA9IEdyaWRzdGVyU2VydmljZTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5jb2Rlc1NlcnZpY2UgPSBDb2Rlc1NlcnZpY2U7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQuY29kZXNMb2FkZWQgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmNvZGVzTG9hZGVkID0gZmFsc2VcclxuXHRcdFx0XHQkc2NvcGUuZmQuY29kZUxpc3QgPSBbXVxyXG5cdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gJHNjb3BlLmZkLkZpZWxkTmFtZTtcclxuICAgICAgICAgICAgICAgICBsZXQgZWxlbWVudE9iamVjdCA9IHt9O1xyXG4gICAgICAgICAgICAgICAgIGVsZW1lbnRPYmplY3RbZmllbGRfbmFtZV09bnVsbDtcclxuICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhPT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybURhdGE9W107XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1EYXRhLnB1c2goZWxlbWVudE9iamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBpZiAoISRzY29wZS5mb3JtRGF0YS5sZW5ndGgpICRzY29wZS5mb3JtRGF0YSA9IFt7fV1cclxuICAgICAgICAgICAgICAgICAvLyBlbHNlIGlmICgkc2NvcGUuZm9ybURhdGFbMF1bZmllbGRfbmFtZV09PXVuZGVmaW5lZCkgJHNjb3BlLmZvcm1EYXRhWzBdW2ZpZWxkX25hbWVdID1udWxsO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLml0ZW1WYWx1ZSA9IHt2YWw6JHNjb3BlLmZvcm1EYXRhWzBdW2ZpZWxkX25hbWVdfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmtzbSA9IEthdGFseW9TdGF0ZU1hbmFnZXI7XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnM9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLlBhcmFtZXRlcnM9e307XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgbGlzdFZhbHVlU3RhdGU9ICRzY29wZS5rc20uYWRkU3ViamVjdCgnbGlzdFZhbHVlU3RhdGVOYW1lJyskc2NvcGUuZmQuSXRlbUlkLCRzY29wZS5pdGVtVmFsdWUudmFsKTtcclxuICAgICAgICAgICAgICAgIGxldCBsaXN0VmFsdWVTdGF0ZU5hbWUgPSBsaXN0VmFsdWVTdGF0ZS5zdWJqZWN0Lm5hbWU7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGxldCB2YWx1ZV9jaGFuZ2VkID0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBsaXN0VmFsdWVTdGF0ZS5zdWJqZWN0LnNldFN0YXRlQ2hhbmdlcyA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgbGlzdFZhbHVlU3RhdGUuc3ViamVjdC5ub3RpZnlPYnNlcnZlcnMoXCJ2YWx1ZUNoYW5nZWRcIik7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgYWN0aW9uX3ZhbHVlX2NoYW5nZWQgPSAkc2NvcGUua3NtLmFkZEFjdGlvbihsaXN0VmFsdWVTdGF0ZU5hbWUsXCJ2YWx1ZUNoYW5nZWRcIix2YWx1ZV9jaGFuZ2VkKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudFdpZGdldFVpZCA9ICcnXHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5wYXJlbnRXaWRnZXQhPXVuZGVmaW5lZCkgcGFyZW50V2lkZ2V0VWlkID0gJHNjb3BlLnBhcmVudFdpZGdldCsnLSdcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgd3JTdGF0ZT0gJHNjb3BlLmtzbS5hZGRTdWJqZWN0KCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZV9zdGF0ZV9pZCsnLScrcGFyZW50V2lkZ2V0VWlkKyRzY29wZS5mZC5VdWlkUmVmKyctd2lkZ2V0UmVhZHknLHt3aWRnZXQ6JHNjb3BlLmZkLlV1aWRSZWYscHJvY2Vzc2VkOmZhbHNlfSlcclxuICAgICAgICAgICAgICAgIGxldCB3clN0YXRlTmFtZSA9IHdyU3RhdGUuc3ViamVjdC5uYW1lXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IHdpZGdldF9yZWFkeSA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgd3JTdGF0ZS5zdWJqZWN0LnNldFN0YXRlQ2hhbmdlcyA9IGRhdGFcclxuICAgICAgICAgICAgICAgICAgICB3clN0YXRlLnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKFwid2lkZ2V0UmVhZHlcIilcclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IGFjdGlvbl93aWRnZXRfcmVhZHkgPSAkc2NvcGUua3NtLmFkZEFjdGlvbih3clN0YXRlTmFtZSxcIndpZGdldFJlYWR5XCIsd2lkZ2V0X3JlYWR5KVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgYXBwbHlfdmFsdWUgPSBmdW5jdGlvbihkYXRhKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZm9ybURhdGFbMF1bZmllbGRfbmFtZV0hPWRhdGEpICRzY29wZS5mb3JtRGF0YVswXVtmaWVsZF9uYW1lXSA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICB9OyBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuRGVwZW5kZW50RmllbGRJZCE9dW5kZWZpbmVkICYmICRzY29wZS5mZC5QYXJhbWV0ZXJzLkRlcGVuZGVudEZpZWxkSWQhPW51bGwpXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuRGVwZW5kZW50RmllbGRJZCE9XCJcIilcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkZXBlbmRlbnRfZmllbGQgPSAkc2NvcGUuZmQuUGFyYW1ldGVycy5EZXBlbmRlbnRGaWVsZElkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSAkc2NvcGUuZmQuUGFyYW1ldGVycy5EZXBlbmRlbnRGaWVsZFR5cGUrXCJWYWx1ZVN0YXRlTmFtZVwiKyRzY29wZS5mZC5QYXJhbWV0ZXJzLkRlcGVuZGVudEZpZWxkSWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlcl91bmRvID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3QsZGVwZW5kZW50X2ZpZWxkLFwidmFsdWVDaGFuZ2VkXCIsYXBwbHlfdmFsdWUsdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnNlYXJjaExpc3Q9W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2lkOjEsZmlsdGVyOidvbmxpc3QnLGNvZGVfbmFtZTonb25saXN0JyxuYW1lOlwiT24gbGlzdFwiLGljb246XCJmYSBmYS1jaGVja1wifSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpZDoyLGZpbHRlcjonbm90b25saXN0Jyxjb2RlX25hbWU6J25vdG9ubGlzdCcsbmFtZTpcIk5vdCBvbiBsaXN0XCIsaWNvbjpcImZhIGZhLXRpbWVzXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0IHNlYXJjaCBmaWx0ZXIgaW4gY29ycmVjdCBsYW5ndWFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnByb2Nlc3NGaWx0ZXJzID0gZnVuY3Rpb24oZmlsdGVyTGlzdClcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wO2k8JHNjb3BlLmZkLnNlYXJjaExpc3QubGVuZ3RoO2krKykgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcG9zID0gZmlsdGVyTGlzdC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZigkc2NvcGUuZmQuc2VhcmNoTGlzdFtpXS5jb2RlX25hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3M+PTApICRzY29wZS5mZC5zZWFyY2hMaXN0W2ldLm5hbWUgPSBmaWx0ZXJMaXN0W3Bvc10ubmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkc2NvcGUuZmQuU2VhcmNoKSAgXHJcblx0XHRcdFx0XHRcdFx0XHQkc2NvcGUuZmQuU2VhcmNoPSRzY29wZS5mZC5zZWFyY2hMaXN0WzBdOy8vaW5pdGlhbGl6ZSB0byBlcXVhbHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuXHRcdFx0XHRcdFx0XHRcdCRzY29wZS5mZC5TZWFyY2gudmFsdWUgPSAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV07IFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5maWx0ZXJSZWFkeT10cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuc2hvd1NlYXJjaEZpbHRlcnMgfHwgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb24pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVzU2VydmljZS5nZXRDb2Rlc0J5TmFtZSgnc2VhcmNoX2ZpbHRlcnMnLGxhbmcpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZGVidWdnZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHNjb3BlWyRzY29wZS5mZC5pZF1bJ2ZkJ10ubG9jYWxWYXJzLnByb2Nlc3NGaWx0ZXJzKGRhdGEuZGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5zZXREcm9wZG93blZhbHVlPWZ1bmN0aW9uKHRoZVNlbGVjdEl0ZW1GbilcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2V0SXRlbVZhbHVlRHJvcGRvd24gPSB0aGVTZWxlY3RJdGVtRm47XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnNldENsZWFyRHJvcGRvd24gPSBmdW5jdGlvbihkaXJlY3RpdmVGbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY2xlYXJEcm9wZG93biA9IGRpcmVjdGl2ZUZuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgXHJcblx0XHRcdCAgICAkc2NvcGUuZmQuc2F2ZU5ld0NvZGUgPSBmdW5jdGlvbiAoQ29kZUhlYWQpIHtcclxuXHJcblx0XHRcdFxyXG5cdFx0XHRcdFx0XHRDb2RlSGVhZC5WZXJzaW9uPTE7XHJcblx0XHRcdFx0XHRcdENvZGVIZWFkLkFjdGl2ZT10cnVlO1xyXG5cdFx0XHRcdFx0XHRDb2RlSGVhZC5Db2RlVHlwZT17XCJpZFwiOiAyLCBcIm5hbWVcIjogXCJVc2VyXCJ9XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHQgICBDb2Rlc1NlcnZpY2UuQ29kZXNQb3N0KENvZGVIZWFkKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHsgICAgICAgICBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICRzY29wZS5NZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5kYXRhLm1zZywnc3VjY2VzcycpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgQ29kZUhlYWQuaWQ9ZGF0YS5kYXRhLmRhdGE7ICBcclxuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIENvZGVzU2VydmljZS5Db2Rlc0xpc3QoKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vJHNjb3BlLmZkLnNob3dBZGROZXc9ZmFsc2VcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCRzY29wZS5mZC5jb2Rlc0RlZmluaXRpb25MaXN0ID0gZGF0YS5kYXRhXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICB9KVxyXG5cdFx0XHRcdFx0XHQgICBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgJHNjb3BlLk1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHRcdFx0XHRcdFx0XHJcblxyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHJcbiAgICAgICAgICAgICRzY29wZS5mZC5zZWxlY3Rpb25fY2hhbmdlZCA9IGZ1bmN0aW9uIChpdGVtLG1vZGVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkcm9vdFNjb3BlLmdsb2JhbHM/LmFwcD8udW5pcXVlSWQhPVwia3RseW9fYnVpbGRlclwiKVxyXG5cdFx0XHRcdFx0XHRcdCRzY29wZS5mZC5TZWFyY2gudmFsdWUgPSAkc2NvcGUuZm9ybURhdGFbMF1bZmllbGRfbmFtZV07XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLkRlZmF1bHRWYWx1ZSA9IHt2YWx1ZTokc2NvcGUuZm9ybURhdGFbMF1bZmllbGRfbmFtZV19O1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbihsaXN0VmFsdWVTdGF0ZU5hbWUsXCJ2YWx1ZUNoYW5nZWRcIiwgJHNjb3BlLmZvcm1EYXRhWzBdW2ZpZWxkX25hbWVdKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISRzY29wZS5mZC5NdWx0aWxpbmUgJiYgJHNjb3BlLmZvcm1EYXRhWzBdW2ZpZWxkX25hbWVdPy5pZD09bnVsbCkgZGVsZXRlICRzY29wZS5mb3JtRGF0YVswXVtmaWVsZF9uYW1lXVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAkc2NvcGUucmVtb3ZlSXRlbSA9IGZ1bmN0aW9uKGluZGV4KVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtRGF0YVswXVtmaWVsZF9uYW1lXS5zcGxpY2UoaW5kZXgsMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUubmdNb2RlbC4kc2V0Vmlld1ZhbHVlKCRzY29wZS5tb2RlbC5zZWxlY3RlZEl0ZW1zKTsgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkSXRlbUlkID0gICRzY29wZS5nc3J2Yy5nZXRTZWxlY3RlZEl0ZW1JZCgpOyBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICRzY29wZS5zaG93UHJvcGVydGllcyA9IGZ1bmN0aW9uKGV2ZW50KVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9hZGluZ1Byb3BlcnRpZXM9dHJ1ZVxyXG5cdFx0XHRcdCAgJHNjb3BlLmdzcnZjLnNldEZpZWxkUHJvcGVydGllcygkc2NvcGUuZmQsICRzY29wZS5pbnB1dEFycmF5KTsvLyBpbnB1dEFycmF5IGlzIHBhcmVudFxyXG5cclxuICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXskc2NvcGUuZmQubG9hZGluZ1Byb3BlcnRpZXM9ZmFsc2V9KVxyXG4gICAgICAgXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQuY29kZT17c2VsZWN0ZWRDb2RlOm51bGx9O1xyXG5cdFx0XHRcdFxyXG5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uKVxyXG4gICAgICAgICAgICAgICAge1xyXG5cdFx0XHRcdFx0JHNjb3BlLmZkLmNvZGVzRGVmaW5pdGlvbkxpc3Q9W11cclxuXHRcdFx0XHRcdFx0Q29kZXNTZXJ2aWNlLkNvZGVzR2V0KGxhbmcpLnRoZW4oXHJcblx0XHRcdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIFxyXG5cdFx0XHRcdFx0XHR7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHRcdFx0XHRcdFx0XHRpZiAoJHNjb3BlLmZkLmxvY2FsVmFycz09dW5kZWZpbmVkKSB7IC8vY3VkbmEgZ3Jlc2thIGthZCBpemd1YmkgbG9jYWx2YXJzXHJcblx0XHRcdFx0XHRcdFx0XHQvL2RlYnVnZ2VyXHJcblx0XHRcdFx0XHRcdFx0XHQkc2NvcGVbJHNjb3BlLmZkLmlkXS5mZC5sb2NhbFZhcnMuY29kZUhlYWRzID0gZGF0YS5kYXRhO1xyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBcclxuXHRcdFx0XHRcdFx0XHRcdCRzY29wZS5mZC5sb2NhbFZhcnMuY29kZUhlYWRzID0gZGF0YS5kYXRhOyBcclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLnRvdGFsQ291bnQgPSBkYXRhLmRhdGEubGVuZ3RoXHJcblx0XHRcdFx0XHRcdFx0JHNjb3BlWyRzY29wZS5mZC5pZF0uZmQubG9jYWxWYXJzLmNvZGVIZWFkcy5mb3JFYWNoKCAoY2gpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0JHNjb3BlWyRzY29wZS5mZC5pZF0uZmQuY29kZXNEZWZpbml0aW9uTGlzdC5wdXNoICggeydpZCc6IGNoLmlkLCAndWlkJzpjaC51aWQsICduYW1lJzogY2guQ29kZU5hbWUgfSlcclxuXHRcdFx0XHRcdFx0XHR9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cdFx0XHRcdFx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuQ29kZUlkIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcG9zQ29kZXNEZWYgPSAkc2NvcGVbJHNjb3BlLmZkLmlkXS5mZC5jb2Rlc0RlZmluaXRpb25MaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLnVpZC50b1N0cmluZygpOyB9KS5pbmRleE9mKCRzY29wZS5mZC5Db2RlSWQudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvc0NvZGVzRGVmPj0wKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmNvZGUuc2VsZWN0ZWRDb2RlPSRzY29wZVskc2NvcGUuZmQuaWRdLmZkLmNvZGVzRGVmaW5pdGlvbkxpc3RbcG9zQ29kZXNEZWZdOyAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlXHJcblx0XHRcdFx0XHRcdFx0XHR7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKCskc2NvcGUuZmQuQ29kZUlkKSApXHQgJHNjb3BlLmZkLkNvZGVJZCA9ICRzY29wZS5mZC5Db2RlSWQrJy0nKyRzY29wZS5vcmdhbmlzYXRpb25faWQgIC8vaWYgY29kZSBpcyBudW1iZXIgdGhlbiBhZGQgb3JnX2lkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NDb2Rlc0RlZiA9ICRzY29wZVskc2NvcGUuZmQuaWRdLmZkLmNvZGVzRGVmaW5pdGlvbkxpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQudG9TdHJpbmcoKTsgfSkuaW5kZXhPZigkc2NvcGUuZmQuQ29kZUlkLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvc0NvZGVzRGVmPj0wKSBcdCRzY29wZS5mZC5jb2RlLnNlbGVjdGVkQ29kZT0kc2NvcGVbJHNjb3BlLmZkLmlkXS5mZC5jb2Rlc0RlZmluaXRpb25MaXN0W3Bvc0NvZGVzRGVmXVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmNvZGVMaXN0UHJvcHNEb3dubG9hZGVkPXRydWVcclxuXHRcdFx0XHRcdFx0fSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9Ly9pZlxyXG4gICAgICAgICAgICAgICAgXHJcblxyXG5cdFx0XHRcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmFwcGx5TGlzdEZpbHRlcnMgPSBmdW5jdGlvbihpbmRleCkge1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuU2VhcmNoPSRzY29wZS5mZC5zZWFyY2hMaXN0W2luZGV4XTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYoIHR5cGVvZiAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0gPT09ICdzdHJpbmcnICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuU2VhcmNoLnZhbHVlID0gWyB7J2lkJzokc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV19IF07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmlzT3Blbj1mYWxzZTsgICAgIFxyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLk11bHRpbGluZSAmJiAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV09PT11bmRlZmluZWQpICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXT1bXVxyXG5cclxuICAgICAgICBcclxuXHRcdFx0XHRcclxuXHRcdCRzY29wZS5mZC5vcGVuTW9kYWwgPSBmdW5jdGlvbihpc25ldykge1xyXG5cdFx0XHRcclxuXHRcdFx0aWYgKCFpc25ldykge1xyXG5cdFx0XHRcdCRzY29wZS5mZC5nZXRDb2Rlcygkc2NvcGUuZmQuY29kZT8uc2VsZWN0ZWRDb2RlLnVpZClcclxuXHRcdFx0XHJcblx0XHRcdFx0Zm9yIChjb25zdCBjaCBvZiAkc2NvcGUuZmQubG9jYWxWYXJzLmNvZGVIZWFkcykge1xyXG5cdFx0XHRcdFx0aWYgKCRzY29wZS5mZC5jb2RlPy5zZWxlY3RlZENvZGU/LmlkID09IGNoLmlkKSB7XHJcblx0XHRcdFx0XHRcdCRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRDb2RlSGVhZCA9IGNoXHJcblx0XHRcdFx0XHRcdGJyZWFrXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2UgeyAvL05FV1xyXG5cdFx0XHRcdCRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRDb2RlSGVhZCA9IG51bGxcdFx0XHRcdFxyXG5cdFx0XHRcdCRzY29wZS5mZC5jb2RlTGlzdC5sZW5ndGg9MFxyXG5cdFxyXG5cdFx0XHR9XHJcblx0XHRcdFxyXG5cdFx0XHQgJHRpbWVvdXQoZnVuY3Rpb24oKSB7ICRzY29wZS5mZC5zaG93QWRkTmV3PSB0cnVlICAgIH0pO1xyXG5cdFx0XHRcclxuXHJcblx0XHR9XHJcblx0XHRcclxuXHRcdFxyXG4gICAgICAgICAgICAgICAgICRzY29wZS5mZC5zYXZlQ29kZXNEZXRhaWxzID0gZnVuY3Rpb24oc2VsZWN0ZWRDb2RlSGVhZCwgY29kZXNMaXN0KXtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZENvZGVIZWFkLmlkPjApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVzU2VydmljZS5zYXZlQ29kZXNEZXRhaWxzKHNlbGVjdGVkQ29kZUhlYWQuaWQsIGNvZGVzTGlzdCwgbGFuZykudGhlbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihkYXRhKSB7XHJcblx0XHRcdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgICRzY29wZS5NZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmNvZGVzRGV0YWlscyA9IGRhdGEuZGF0YTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGltZW91dChmdW5jdGlvbigpIHsgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCRzY29wZS5mZC5jb2RlTGlzdCA9IGRhdGEuZGF0YTsgIFx0XHQvLyAkc2NvcGUuZmQuY29kZUxpc3RcdD8gIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xyXG4gXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLmNvZGVzRGV0YWlscy5sZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuXHJcblx0XHRcdFxyXG5cdFx0XHRcclxuXHRcdFx0XHJcbiAgICAgICAgJHNjb3BlLmZkLmdldENvZGVzID0gZnVuY3Rpb24gKGNvZGUpIHtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICBpZiAoY29kZSA9PSB1bmRlZmluZWQpIHJldHVybjtcclxuXHRcdCAgIFxyXG4gICAgICAgICAgICBsZXQgc2VhcmNoQ29kZT1cIlwiO1xyXG4gICAgICAgICAgICAvL2lmICh0eXBlb2YgY29kZUlkPT09J251bWJlcicpIGNvZGVJZCA9IGNvZGVJZCsnLScrJHNjb3BlLm9yZ2FuaXNhdGlvbl9pZFxyXG4gICAgICAgICAgICAvLyRzY29wZS5mZC5Db2RlSWQgPSBjb2RlSWQ7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAkc2NvcGUuY29kZXNTZXJ2aWNlLmdldENvZGVzKGNvZGUsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKXtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuY29kZUxpc3RGdWxsID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuY29kZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9maWx0ZXIgZGF0YSBoZXJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5Db25kaXRpb24hPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLkNvbmRpdGlvbiE9XCJcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29uZGl0aW9ucyA9ICAkc2NvcGUuZmQuUGFyYW1ldGVycy5Db25kaXRpb24uc3BsaXQoXCI7XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGk9MDtpPGNvbmRpdGlvbnMubGVuZ3RoO2krKylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkeCA9ICRzY29wZS5mZC5jb2RlTGlzdEZ1bGwubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUudmFsdWU7IH0pLmluZGV4T2YoY29uZGl0aW9uc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeD49MCkgJHNjb3BlLmZkLmNvZGVMaXN0LnB1c2goJHNjb3BlLmZkLmNvZGVMaXN0RnVsbFtpZHhdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgJHNjb3BlLmZkLmNvZGVMaXN0PSAkc2NvcGUuZmQuY29kZUxpc3RGdWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSAkc2NvcGUuZmQuY29kZUxpc3Q9ICRzY29wZS5mZC5jb2RlTGlzdEZ1bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5DVFJMICE9PSdrdExpc3QnKSB7IC8vYW5ndWxhciBzY29wZSBtaXggZGVidWdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygna3RsaXN0IC0gbmlqZSBtb2ogc2NvcGUgISAgQ1RSTD0gJyArICAkc2NvcGUuQ1RSTClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnM9PT11bmRlZmluZWQpIHsvL2FuZ3VsYXIgc2NvcGUgbWl4IGRlYnVnIGZpeCBlcnJyb3JcclxuXHRcdFx0XHRcdFx0XHQvL2RlYnVnZ2VyXHJcblx0XHRcdFx0XHRcdFx0IE9iamVjdC5hc3NpZ24oJHNjb3BlLmZkICwgJHNjb3BlWyRzY29wZS5mZC5pZF0uZmQpOy8vdnJhdGkgbmF6YWQgZmQga29qaSBqZSBkb2JhciEgc2NvcGVvdmkgc2UgbWl4YWp1IHpib2cgbmXEjWVnLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdrdGxpc3QgLSBuZW1hbSBsb2NhbHZhcnMhJykgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5jb2Rlc0xvYWRlZCA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmNvZGVzTG9hZGVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3RoaXMgc2hvdWxkIGNvbWUgZnJvbSBzZXJ2ZXIgaG93ZXZlciBmb3IgYWxzbyBvbiBjbGllbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5VcGRhdGVXaXRoRGVmYXVsdCAmJiAhJHNjb3BlLmZkLk5vVXBkYXRlKSAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0gPSAkc2NvcGUuZmQuRGVmYXVsdFZhbHVlPy52YWx1ZVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLlVzZVVzZXJQcm9wZXJ0eSkgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLnVlcC5BZHZhbmNlZFByb3BlcnRpZXNbJHNjb3BlLmZkLlBhcmFtZXRlcnMuVXNlclByb3BlcnR5SWRdXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YSE9dW5kZWZpbmVkICYmICEkc2NvcGUuZmQuTXVsdGlsaW5lKSAvLyBOT1QgTVVMVElMTElORSAhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0hPW51bGwgJiYgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgXHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoIEFycmF5LmlzQXJyYXkoJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdKSApXHJcblx0XHRcdFx0XHRcdFx0XHRcdHNlYXJjaENvZGUgPSAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV1bMF0/LmlkIC8vIGlmIEFSUkFZXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZigkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0pPT0nc3RyaW5nJyB8fCB0eXBlb2YoJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdKT09J251bWJlcicgKSBcclxuXHRcdFx0XHRcdFx0XHRcdFx0c2VhcmNoQ29kZSA9ICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXS50b1N0cmluZygpIC8vaWYgU1RSSU5HIG9yIE5VTUJFUlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXS5pZCkgc2VhcmNoQ29kZSA9ICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXS5pZC50b1N0cmluZygpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAgc2VhcmNoQ29kZSA9ICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKHNlYXJjaENvZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9ICRzY29wZS5mZC5jb2RlTGlzdC5tYXAoZnVuY3Rpb24oZSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChlLmlkIT1udWxsKSByZXR1cm4gZS5pZC50b1N0cmluZygpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgcmV0dXJuIGUuaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmluZGV4T2Yoc2VhcmNoQ29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zPj0wKSAgICAkdGltZW91dChmdW5jdGlvbigpeyAgICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXT0kc2NvcGUuZmQuY29kZUxpc3RbcG9zXSAgICAgfSlcclxuXHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKHdyU3RhdGVOYW1lLFwid2lkZ2V0UmVhZHlcIiwge3dpZGdldDokc2NvcGUuZmQuVXVpZFJlZixwcm9jZXNzZWQ6dHJ1ZX0pO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICghJHNjb3BlLmZkLlJlYWRPbmx5ICYmICRzY29wZS5mZC5Db2RlSWQhPXVuZGVmaW5lZCAmJiAkc2NvcGUuZmQuQ29kZUlkLnRvU3RyaW5nKCkubGVuZ3RoPjApICRzY29wZS5mZC5nZXRDb2Rlcygkc2NvcGUuZmQuQ29kZUlkKTtcclxuICAgICAgICBlbHNlIGlmICgkc2NvcGUuZmQuQ29kZUlkICYmICRzY29wZS5mZC5Db2RlSWQudG9TdHJpbmcoKS5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuVXBkYXRlV2l0aERlZmF1bHQgJiYgISRzY29wZS5mZC5Ob1VwZGF0ZSkgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdID0gJHNjb3BlLmZkLkRlZmF1bHRWYWx1ZT8udmFsdWVcclxuXHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5Vc2VVc2VyUHJvcGVydHkpICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci51ZXAuQWR2YW5jZWRQcm9wZXJ0aWVzWyRzY29wZS5mZC5QYXJhbWV0ZXJzLlVzZXJQcm9wZXJ0eUlkXVxyXG4gICAgICAgIH1cclxuXHJcblx0XHQgIFxyXG5cdFx0ICBcclxuXHRcdCAgXHJcbiAgICAgICAgICAgICAgICAkZWxlbWVudC5hcHBlbmQoJGNvbXBpbGUodGVtcGxhdGUpKCRzY29wZSkpOyBcclxuICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG5cclxuICAgICAgfS8vbGlua1xyXG5cclxuICAgIH1cclxufTtcclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3RMaXN0UGFyc2VyICgpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICAgICAgIHJlcXVpcmU6J25nTW9kZWwnLFxyXG4gICAgICAgXHJcbiAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycyxuZ01vZGVsQ29udHJvbGxlcikge1xyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAvL0ZvciBtb2RlbCAtPiBET00gdmFsaWRhdGlvbiAobW9kZWwgLT4gdmlldylcclxuICAgICAgICAgICAgICAgIC8vXHJcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBmb3JtYXRGb3JtYXR0ZXIodmFsdWUpe1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgdmFsaWQgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgLy9pZiAodmFsdWU9PT11bmRlZmluZWQpICB2YWx1ZT17aWQ6bnVsbCxuYW1lOiRzY29wZS5mZC5TZWFyY2hUZXh0fVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUmVxdWlyZWQgJiYgISRzY29wZS5mZC5NdWx0aWxpbmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlPy5pZD09bnVsbCkgICAge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgbmdNb2RlbENvbnRyb2xsZXIuJHNldFZhbGlkaXR5KCdyZXF1aXJlZCcsIHZhbGlkKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkPyB2YWx1ZSA6IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgICAgICAvL3JldHVybiB2YWx1ZVxyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vRm9yIERPTSAtPiBtb2RlbCB2YWxpZGF0aW9uICh2aWV3IC0+IG1vZGVsKVxyXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gZm9ybWF0UGFyc2VyKHZhbHVlKXtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWxpZCA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUmVxdWlyZWQgJiYgISRzY29wZS5mZC5NdWx0aWxpbmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZT8uaWQ9PW51bGwpICAgIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZ01vZGVsQ29udHJvbGxlci4kc2V0VmFsaWRpdHkoJ3JlcXVpcmVkJywgdmFsaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXR1cm4gdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWxpZD8gdmFsdWUgOiB1bmRlZmluZWQ7XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIG5nTW9kZWxDb250cm9sbGVyLiRmb3JtYXR0ZXJzLnB1c2goZm9ybWF0Rm9ybWF0dGVyKVxyXG5cclxuICAgICAgICAgICAgICAgIG5nTW9kZWxDb250cm9sbGVyLiRwYXJzZXJzLnB1c2goZm9ybWF0UGFyc2VyKVxyXG5cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgfVxyXG5cclxuXHJcbn1cbid1c2Ugc3RyaWN0JztcblxuXG5cbmV4cG9ydCBmdW5jdGlvbiBrdE1hc3NQcm9wZXJ0eVVwZGF0ZVNlbGVjdCAoS2F0YWx5b1N0YXRlTWFuYWdlciwgVGFza0RhdGFTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UpIHtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcbiAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0TWFzc1Byb3BlcnR5VXBkYXRlU2VsZWN0Lmh0bWwnLFxuICAgICAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbigkc2NvcGUpe1xuICAgICAgICAgIFxuICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xuICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAvL1RvIGRvIC0gZ2V0IHRoaXMgZnJvbSBzZXJ2ZXIgKGRiIHRhYmxlKVxuICAgICAgICAgICAgc2NvcGUuZmQubWFzc1VwZGF0ZUZpZWxkTGlzdD1bXG4gICAgICAgICAgICAgICAge2lkOjEsIEZpZWxkOidSZWFkT25seScsTGFiZWw6J1JlYWQgb25seScsQ29tcG9uZW50OidjaGVja2JveCd9LFxuICAgICAgICAgICAgICAgIHtpZDoyLCBGaWVsZDonU2hvd0ZpZWxkJyxMYWJlbDonU2hvdyBmaWVsZCcsQ29tcG9uZW50OidjaGVja2JveCd9LFxuICAgICAgICAgICAgICAgIHtpZDozLCBGaWVsZDonUmVxdWlyZWQnLExhYmVsOidSZXF1aXJlZCcsQ29tcG9uZW50OidjaGVja2JveCd9LFxuICAgICAgICAgICAgICAgIHtpZDo0LCBGaWVsZDonUGFyYW1ldGVyc1tWYWx1ZUZvbnRCb2xkXScsTGFiZWw6J1ZhbHVlLUZvbnQtQm9sZCcsQ29tcG9uZW50OidjaGVja2JveCd9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgIHNjb3BlLmtzbSA9IEthdGFseW9TdGF0ZU1hbmFnZXI7XG4gICAgICAgICAgICBzY29wZS50YXNrRGF0YVNlcnZpY2UgPSBUYXNrRGF0YVNlcnZpY2U7XG4gICAgICAgICAgICBzY29wZS5tZXNzYWdpbmdTZXJ2aWNlICA9IE1lc3NhZ2luZ1NlcnZpY2VcblxuICAgICAgICAgICAgICBsZXQgbWFzc1VwZGF0ZVN0YXRlPSBzY29wZS5rc20uYWRkU3ViamVjdCgnbWFzc1VwZGF0ZVN0YXRlJyxudWxsKTtcbiAgICAgICAgICAgICAgbGV0IG1hc3NVcGRhdGVTdGF0ZU5hbWUgPSBtYXNzVXBkYXRlU3RhdGUuc3ViamVjdC5uYW1lO1xuXG4gICAgICAgICAgICAgIGxldCBhY3RpdmF0ZV9tYXNzX3VwZGF0ZSA9IGZ1bmN0aW9uKGRhdGEpXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBtYXNzVXBkYXRlU3RhdGUuc3ViamVjdC5zZXRTdGF0ZUNoYW5nZXMgPSBkYXRhO1xuICAgICAgICAgICAgICAgICAgIG1hc3NVcGRhdGVTdGF0ZS5zdWJqZWN0Lm5vdGlmeU9ic2VydmVycyhcIm1hc3NVcGRhdGVDaGFuZ2VkXCIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICBsZXQgYWN0aW9uX21hc3NfdXBkYXRlX2NoYW5nZWQgPSBzY29wZS5rc20uYWRkQWN0aW9uKG1hc3NVcGRhdGVTdGF0ZU5hbWUsXCJtYXNzVXBkYXRlQ2hhbmdlZFwiLGFjdGl2YXRlX21hc3NfdXBkYXRlKTtcbiAgICAgICAgICAgICBcbiAgICAgICAgICAgICBzY29wZS5hY3RpdmF0ZU1hc3NVcGRhdGVGbiA9IGZ1bmN0aW9uKGl0ZW0pXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKG1hc3NVcGRhdGVTdGF0ZU5hbWUsXCJtYXNzVXBkYXRlQ2hhbmdlZFwiLCB7QWN0aXZlOnRydWUsSXRlbTppdGVtfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIHNjb3BlLmRlQWN0aXZhdGVNYXNzVXBkYXRlRm4gPSBmdW5jdGlvbihpbmRleClcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24obWFzc1VwZGF0ZVN0YXRlTmFtZSxcIm1hc3NVcGRhdGVDaGFuZ2VkXCIsIHtBY3RpdmU6ZmFsc2UsSXRlbTpudWxsfSk7XG4gICAgICAgICAgICAgICAgICAkKCcjbWFzc1Byb3BlcnR5VXBkYXRlJysgc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQpLm1vZGFsKCdoaWRlJylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICBzY29wZS5oaWRlTWFzc1VwZGF0ZUZuID0gZnVuY3Rpb24oKVxuICAgICAgICAgICAgICB7IFxuICAgICAgICAgICAgICAgICAkKCcjbWFzc1Byb3BlcnR5VXBkYXRlJysgc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQpLm1vZGFsKCdoaWRlJykgXG5cbiAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmxvY2FsVmFycy50dXJuQWxsUHJvcGVydGllc09uKSB7ICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUudGFza0RhdGFTZXJ2aWNlLnNldEZpZWxkKHNjb3BlLmlucHV0QXJyYXkubGF5b3V0LCBzY29wZS5zZWxlY3RlZC5GaWVsZCAsICB0cnVlICk7ICBcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUubWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdBbGwgZmllbGRzIGFyZSAnICsgc2NvcGUuc2VsZWN0ZWQuTGFiZWwgLCdpbmZvJyk7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgIGlmIChzY29wZS5sb2NhbFZhcnMudHVybkFsbFByb3BlcnRpZXNPZmYpIHtcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUudGFza0RhdGFTZXJ2aWNlLnNldEZpZWxkKHNjb3BlLmlucHV0QXJyYXkubGF5b3V0LCBzY29wZS5zZWxlY3RlZC5GaWVsZCAsICBmYWxzZSApOyAgXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLm1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnQWxsIGZpZWxkcyBhcmUgbm90ICcgKyBzY29wZS5zZWxlY3RlZC5MYWJlbCAsJ2luZm8nKTsgXG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgc2NvcGUubG9jYWxWYXJzLnR1cm5BbGxQcm9wZXJ0aWVzT24gPSBmYWxzZVxuICAgICAgICAgICAgICAgICBzY29wZS5sb2NhbFZhcnMudHVybkFsbFByb3BlcnRpZXNPZmYgPSBmYWxzZSAgICBcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgfVxuICAgICAgICB9XG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3RNYXNzUHJvcGVydHlVcGRhdGVTZWxlY3QyIChLYXRhbHlvU3RhdGVNYW5hZ2VyLCBUYXNrRGF0YVNlcnZpY2UsIE1lc3NhZ2luZ1NlcnZpY2UpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RNYXNzUHJvcGVydHlVcGRhdGVTZWxlY3QyLmh0bWwnLFxyXG4gICAgICAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24oJHNjb3BlKSB7ICAgICB9LFxyXG4gICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykgXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgLy9UbyBkbyAtIGdldCB0aGlzIGZyb20gc2VydmVyIChkYiB0YWJsZSlcclxuICAgICAgICAgICAgc2NvcGUubWFzc1VwZGF0ZUZpZWxkTGlzdD1bXHJcbiAgICAgICAgICAgICAgICB7aWQ6MSwgRmllbGQ6J1JlYWRPbmx5JyxMYWJlbDonUmVhZCBvbmx5JyxDb21wb25lbnQ6J2NoZWNrYm94J30sXHJcbiAgICAgICAgICAgICAgICB7aWQ6MiwgRmllbGQ6J1Nob3dGaWVsZCcsTGFiZWw6J1Nob3cgZmllbGQnLENvbXBvbmVudDonY2hlY2tib3gnfSxcclxuICAgICAgICAgICAgICAgIHtpZDozLCBGaWVsZDonUmVxdWlyZWQnLExhYmVsOidSZXF1aXJlZCcsQ29tcG9uZW50OidjaGVja2JveCd9LFxyXG5cclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgc2NvcGUua3NtID0gS2F0YWx5b1N0YXRlTWFuYWdlcjtcclxuICAgICAgICAgICAgc2NvcGUudGFza0RhdGFTZXJ2aWNlID0gVGFza0RhdGFTZXJ2aWNlO1xyXG4gICAgICAgICAgICBzY29wZS5tZXNzYWdpbmdTZXJ2aWNlID0gTWVzc2FnaW5nU2VydmljZTtcclxuICAgICAgICAgICAgLy9zY29wZS5sb2NhbFZhcnMudHVybkFsbFByb3BlcnRpZXNPbiA9IGZhbHNlXHJcbiAgICAgICAgICAgIHNjb3BlLmlucHV0QXJyYXkubG9jYWxWYXJzLnR1cm5BbGxQcm9wZXJ0aWVzT24gPSBmYWxzZVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy9zY29wZS5sb2NhbFZhcnMudHVybkFsbFByb3BlcnRpZXNPZmYgPSBmYWxzZVxyXG4gICAgICAgICAgICBzY29wZS5pbnB1dEFycmF5LmxvY2FsVmFycy50dXJuQWxsUHJvcGVydGllc09mZiA9IGZhbHNlXHJcbiAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgbGV0IG1hc3NVcGRhdGVTdGF0ZT0gc2NvcGUua3NtLmFkZFN1YmplY3QoJ21hc3NVcGRhdGVTdGF0ZScsbnVsbCk7XHJcbiAgICAgICAgICAgIGxldCBtYXNzVXBkYXRlU3RhdGVOYW1lID0gbWFzc1VwZGF0ZVN0YXRlLnN1YmplY3QubmFtZTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgc2NvcGUuaW5wdXRBcnJheS5sb2NhbFZhcnMuc2V0RmllbGQgPSBmdW5jdGlvbihmb3JtLG5hbWUsdmFsdWUsbXNnKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBzY29wZS50YXNrRGF0YVNlcnZpY2Uuc2V0RmllbGQoZm9ybSxuYW1lLHZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGlmIChtc2cpIHNjb3BlLm1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShtc2csJ2luZm8nKTtcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGxldCBhY3RpdmF0ZV9tYXNzX3VwZGF0ZSA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgIHNjb3BlLmFjdGl2ZSA9IGRhdGEuQWN0aXZlXHJcbiAgICAgICAgICAgICAgICAgICBtYXNzVXBkYXRlU3RhdGUuc3ViamVjdC5zZXRTdGF0ZUNoYW5nZXMgPSBkYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgbWFzc1VwZGF0ZVN0YXRlLnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKFwibWFzc1VwZGF0ZUNoYW5nZWRcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCBhY3Rpb25fbWFzc191cGRhdGVfY2hhbmdlZCA9IHNjb3BlLmtzbS5hZGRBY3Rpb24obWFzc1VwZGF0ZVN0YXRlTmFtZSxcIm1hc3NVcGRhdGVDaGFuZ2VkXCIsYWN0aXZhdGVfbWFzc191cGRhdGUpO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBzY29wZS5hY3RpdmF0ZU1hc3NVcGRhdGVGbiA9IGZ1bmN0aW9uKGl0ZW0pXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBzY29wZS5rc20uZXhlY3V0ZUFjdGlvbihtYXNzVXBkYXRlU3RhdGVOYW1lLFwibWFzc1VwZGF0ZUNoYW5nZWRcIiwge0FjdGl2ZTp0cnVlLEl0ZW06aXRlbX0pOyBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgc2NvcGUuZGVBY3RpdmF0ZU1hc3NVcGRhdGVGbiA9IGZ1bmN0aW9uKGluZGV4KVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgc2NvcGUuc2VsZWN0ZWQgPSBudWxsXHJcbiAgICAgICAgICAgICAgICAgIHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKG1hc3NVcGRhdGVTdGF0ZU5hbWUsXCJtYXNzVXBkYXRlQ2hhbmdlZFwiLCB7QWN0aXZlOmZhbHNlLEl0ZW06bnVsbH0pO1xyXG4gICAgICAgICAgICAgICAgICAkKCcjbWFzc1Byb3BlcnR5VXBkYXRlJykubW9kYWwoJ2hpZGUnKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBzY29wZS5oaWRlTWFzc1VwZGF0ZUZuID0gZnVuY3Rpb24oKVxyXG4gICAgICAgICAgICAgIHsgXHJcbiAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgICQoJyNtYXNzUHJvcGVydHlVcGRhdGUnKS5tb2RhbCgnaGlkZScpXHJcbiAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmxvY2FsVmFycy50dXJuQWxsUHJvcGVydGllc09uKSB7XHJcbiAgICAgICAgICAgICAgICAgICBzY29wZS5sb2NhbFZhcnMuc2V0RmllbGQoc2NvcGUuaW5wdXRBcnJheS5sYXlvdXQsIHNjb3BlLnNlbGVjdGVkLkZpZWxkICwgIHRydWUgICwgJ0FsbCBmaWVsZHMgYXJlICcgKyBzY29wZS5zZWxlY3RlZC5MYWJlbCAgIClcclxuICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmxvY2FsVmFycy50dXJuQWxsUHJvcGVydGllc09mZikge1xyXG4gICAgICAgICAgICAgICAgICAgc2NvcGUubG9jYWxWYXJzLnNldEZpZWxkKHNjb3BlLmlucHV0QXJyYXkubGF5b3V0LCBzY29wZS5zZWxlY3RlZC5GaWVsZCAsICBmYWxzZSAsICdBbGwgZmllbGRzIGFyZSBub3QnICsgc2NvcGUuc2VsZWN0ZWQuTGFiZWwgICApXHJcbiAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgIHNjb3BlLmxvY2FsVmFycy50dXJuQWxsUHJvcGVydGllc09uID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICBzY29wZS5sb2NhbFZhcnMudHVybkFsbFByb3BlcnRpZXNPZmYgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG59O1xuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24ga3RNYXNzVXBkYXRlUHJvcGVydGllcyAoS2F0YWx5b1N0YXRlTWFuYWdlcikge1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxuICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RNYXNzVXBkYXRlUHJvcGVydGllcy5odG1sJyxcbiAgICAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbigkc2NvcGUpeyAgICBcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICBzY29wZS5rc20gPSBLYXRhbHlvU3RhdGVNYW5hZ2VyO1xuXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGxldCBtYXNzVXBkYXRlU3RhdGU9IHNjb3BlLmtzbS5hZGRTdWJqZWN0KCdtYXNzVXBkYXRlU3RhdGUnLG51bGwpO1xuICAgICAgICAgICAgbGV0IG1hc3NVcGRhdGVTdGF0ZU5hbWUgPSBtYXNzVXBkYXRlU3RhdGUuc3ViamVjdC5uYW1lO1xuXG4gICAgICAgICAgICBsZXQgYWN0aXZhdGVfbWFzc191cGRhdGUgPSBmdW5jdGlvbihkYXRhKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5tYXNzVXBkYXRlID0gZGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgbGV0IGRlcGVuZGVudF9maWVsZCA9IFwiRmllbGRcIitzY29wZS5mZC5QcmVzZW50YXRpb25JZDtcbiAgICAgICAgICAgIGxldCBvYnNlcnZlciA9IHNjb3BlLmtzbS5zdWJzY3JpYmUobWFzc1VwZGF0ZVN0YXRlTmFtZSxkZXBlbmRlbnRfZmllbGQsXCJtYXNzVXBkYXRlQ2hhbmdlZFwiLGFjdGl2YXRlX21hc3NfdXBkYXRlKTtcbiAgICAgICAgICAgIGxldCBzdGF0ZSA9IHNjb3BlLmtzbS5nZXRTdGF0ZShtYXNzVXBkYXRlU3RhdGVOYW1lKTtcbiAgICAgICAgICAgIGlmIChzdGF0ZS5zdGF0dXM9PVwib2tcIiAmJiBzdGF0ZS5zdGF0ZSE9PW51bGwpIHNjb3BlLmZkLm1hc3NVcGRhdGUgPSBzdGF0ZS5zdGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgIH1cbiAgXG59O1xuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24ga3RNZW51Q2xpY2sgKCkge1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcbiAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0TWVudUNsaWNrLmh0bWwnLFxuICAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uKCRzY29wZSwkc3RhdGVQYXJhbXMpe1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycz09dW5kZWZpbmVkKSAkc2NvcGUubG9jYWxWYXJzPXt9O1xuICAgICAgICAgICAgaWYgKCRzY29wZS5mZD09dW5kZWZpbmVkKSAkc2NvcGUuZmQ9e307XG4gICAgICAgICAgICBpZiAoJHNjb3BlLnRhc2tEZWZpbml0aW9uPT11bmRlZmluZWQpICRzY29wZS50YXNrRGVmaW5pdGlvbj17fTtcbiAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMubWVudUlkID0gJHN0YXRlUGFyYW1zLmlkO1xuICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wcmV2aW91c1Rhc2s9JHN0YXRlUGFyYW1zLnByZXZfdGFza19leGVjdXRlX2lkO1xuICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5vdXRjb21lSWQ9JHN0YXRlUGFyYW1zLm91dGNvbWVfaWQ7XG4gICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLk9wZW5UYXNrVHlwZSA9IFwibmV3UGFnZVwiO1xuICAgICAgICAgICAgLy8kc2NvcGUubG9jYWxWYXJzLlNob3dSZXR1cm5CdG4gPSB0cnVlO1xuICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMucHJldmlvdXNUYXNrPT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnMucHJldmlvdXNUYXNrID0gMDtcbiAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLm91dGNvbWVJZD09dW5kZWZpbmVkKSAkc2NvcGUubG9jYWxWYXJzLm91dGNvbWVJZCA9IDA7XG4gICAgICAgICAgICAkc2NvcGUuaW5pdFR5cGUgPSAkc3RhdGVQYXJhbXMuaW5pdF90eXBlO1xuICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wcm9jZXNzTWVudUNsaWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKCRzY29wZS5pbml0VHlwZT09XCJ0XCIpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucHJvY2Vzc01lbnVDbGlja2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucHJvY2Vzc1N0YXJ0VGFzayA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgIFxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XG4gICAgICAgXG4gICAgICAgXG4gICAgICAgXG4gICAgICAgIFxuICAgICAgICAgIFxuICAgICAgfVxuICAgICAgXG4gICAgICAgICAgXG4gICAgfVxufTtcbid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdE1lbnVEZWZpbml0aW9uKCkge1xyXG4gIFxyXG4gICByZXR1cm4ge1xyXG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxyXG4gICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0TWVudURlZmluaXRpb24uaHRtbCcsXHJcbiAgICAgICAgICAgIHNjb3BlOiB7XHJcblx0XHRcdFx0XHRtZW51SXRlbTonPScsXHJcblx0XHRcdFx0XHRsb2NhbFZhcnM6Jz0nXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uKCRzY29wZSwkcm9vdFNjb3BlLCR0aW1lb3V0LE1lbnVTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsUmVzb3VyY2VzRGF0YVNlcnZpY2UpXHJcblx0XHRcdHtcclxuICAgICAgICAgICAgICBsZXQgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzPT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnM9e307XHJcbiAgICAgICAgICAgICAgJHNjb3BlLm1lbnVfc2VydmljZSA9IE1lbnVTZXJ2aWNlO1xyXG4gICAgICAgICAgICAgICRzY29wZS5DVFJMPSdrdE1lbnVEZWZpbml0aW9uJ1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGlmICgkc2NvcGUubWVudUl0ZW09PXVuZGVmaW5lZCkgJHNjb3BlLm1lbnVJdGVtID0gJHNjb3BlLm1lbnVfc2VydmljZS5nZXRTZWxlY3RlZFNpZGVtZW51KCk7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgJHNjb3BlLmhlYWRlckxhYmVsPVwiR3JhbnQgYWNjZXNzIHRvIHNpZGUgbWVudVwiO1xyXG4gICAgICAgICAgICAgICRzY29wZS51c2Vyc0xhYmVsPVwiVXNlcnNcIjtcclxuICAgICAgICAgICAgICAkc2NvcGUuZ3JvdXBzTGFiZWw9XCJHcm91cHNcIjsgIFxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZXRQYWdlID0gZnVuY3Rpb24oKSBcclxuXHRcdFx0ICB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcG9zID0gJHNjb3BlLmxvY2FsVmFycy5wYWdlTGlzdC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZigkc2NvcGUubWVudUl0ZW0uc19tZW51c19UYXJnZXRfaWQpOyBcclxuICAgICAgICAgICAgICAgIGlmIChwb3M+PTApe1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUubWVudUl0ZW0uVGFyZ2V0ID0gJHNjb3BlLmxvY2FsVmFycy5wYWdlTGlzdFtwb3NdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHRcdFx0ICBcclxuICAgICAgICAgICAgICAkc2NvcGUuZ2V0VXNlcnNHcm91cHM0bWVudT0gZnVuY3Rpb24obWVudUlkKVxyXG5cdFx0XHQgIHtcclxuXHRcdFx0XHQkc2NvcGUubWVudUl0ZW0uVXNlcnNHcm91cHNEb3dubG9hZGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAvL3ZhciBtZW51SWQgPSAkc2NvcGUubWVudUl0ZW0uc19tZW51c19pZDtcclxuICAgICAgICAgICAgICAgIGlmIChtZW51SWQhPW51bGwpIHtcclxuXHRcdFx0XHRcdCAgTWVudVNlcnZpY2UuZ2V0VXNlcnNHcm91cHNGb3JNZW51KG1lbnVJZCxsYW5nKS50aGVuKFxyXG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIHtcclxuXHRcdFx0XHRcdFx0XHQgICRzY29wZS5tZW51SXRlbS5Vc2VycyA9IGRhdGEuVXNlcnM7XHJcblx0XHRcdFx0XHRcdFx0ICAkc2NvcGUubWVudUl0ZW0uR3JvdXBzID0gZGF0YS5Hcm91cHM7XHJcblx0XHRcdFx0XHRcdFx0ICAkc2NvcGUubWVudUl0ZW0uVXNlcnNHcm91cHNEb3dubG9hZGVkID0gdHJ1ZTtcclxuXHRcdFx0XHRcdFx0XHQgXHJcblx0XHRcdFx0XHRcdFx0fSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG5cdFx0XHRcdFx0XHRcdCAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuXHRcdFx0XHRcdFx0fSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgXHJcblx0XHRcdFx0XHQkc2NvcGUubWVudUl0ZW0uVXNlcnNHcm91cHNEb3dubG9hZGVkID0gdHJ1ZTsgICAgXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFxyXG5cdFx0XHQgIFxyXG5cdFx0XHQgIFxyXG4gICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdldFBhZ2VzID0gZnVuY3Rpb24oKVxyXG4gICAgICAgICAgICB7XHJcblx0XHRcdFx0UmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZMaXN0QnlUeXBlKGxhbmcsJ3BhZ2UnKS50aGVuKFxyXG5cdFx0XHRcdFx0ZnVuY3Rpb24oZGF0YSkge1xyXG5cdFx0XHRcdFx0XHQgICRzY29wZS5sb2NhbFZhcnMucGFnZUxpc3QgPSBkYXRhLmRhdGE7XHJcblx0XHRcdFx0XHRcdCAgJHNjb3BlLmxvY2FsVmFycy5wYWdlc0xvYWRlZD10cnVlO1xyXG5cdFx0XHRcdFx0XHQgICRzY29wZS5sb2NhbFZhcnMuc2V0UGFnZSgpO1xyXG5cdFx0XHRcdFx0XHQgIGlmICghICRzY29wZS5tZW51SXRlbT8uVXNlcnNHcm91cHNEb3dubG9hZGVkKSBcdCRzY29wZS5nZXRVc2Vyc0dyb3VwczRtZW51KCAkc2NvcGUubWVudUl0ZW0uc19tZW51c19pZCApO1xyXG5cdFx0XHRcdFx0fSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG5cdFx0XHRcdFx0XHRNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG5cdFx0XHRcdFx0fSk7XHJcbiAgICAgICAgICAgIH1cclxuXHRcdFx0ICBcclxuICBcclxuXHRcdFx0UmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UHVibGlzaGVkUmVzb3VyY2VzQnlUeXBlSWQoJHNjb3BlLm1lbnVJdGVtLnNfbWVudXNfVGFyZ2V0LCdmb3JtJykudGhlbihcclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChkYXRhKSB7ICAgICAgIFxyXG5cdFx0XHRcdFx0JHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlc1B1Ymxpc2hlZExpc3Q9e31cclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VzUHVibGlzaGVkTGlzdFskc2NvcGUubWVudUl0ZW0uc19tZW51c19UYXJnZXRdID0gZGF0YS5kYXRhO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoISAkc2NvcGUubWVudUl0ZW0uc19tZW51c19TZWxlY3RWZXJzaW9uRGlyZWN0KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHB1Ymxpc2hlZCA9ICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZXNQdWJsaXNoZWRMaXN0WyRzY29wZS5tZW51SXRlbS5zX21lbnVzX1RhcmdldF1bJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlc1B1Ymxpc2hlZExpc3RbJHNjb3BlLm1lbnVJdGVtLnNfbWVudXNfVGFyZ2V0XS5sZW5ndGgtMV0gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0aWYgKCRzY29wZS5tZW51SXRlbS5zX21lbnVzX1NlbGVjdFZlcnNpb25EaXJlY3QpeyAvLyBmaWxsICdzZWxlY3QgdmVyc2lvbicgb3B0aW9ucyB0byBoYXZlIGJvdGggaWQgYW5kIG5hbWUgKHdoZW4gdGhlcmUgaXMgc2F2ZWQgZGF0YSlcclxuXHRcdFx0XHRcdFx0ICBsZXQgcHVibGlzaGVkTGlzdCA9ICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZXNQdWJsaXNoZWRMaXN0WyRzY29wZS5tZW51SXRlbS5zX21lbnVzX1RhcmdldF0gXHJcblx0XHRcdFx0XHRcdCAgcHVibGlzaGVkTGlzdC5mb3JFYWNoKCAoaXRlbSk9PiB7XHJcblx0XHRcdFx0XHRcdFx0ICBpZiAoaXRlbS5WZXJzaW9uID09ICRzY29wZS5tZW51SXRlbS5zX21lbnVzX1RhcmdldFBhZ2VWZXJzaW9uKSBcclxuXHRcdFx0XHRcdFx0XHRcdCAgJHNjb3BlLm1lbnVJdGVtLnNlbGVjdGVkUHVibGlzaGVkUmVzb3VyY2UgPSBpdGVtXHJcblx0XHRcdFx0XHRcdCAgfSApXHJcblx0XHRcdFx0XHQgXHJcblx0XHRcdFx0XHR9XHJcbiAgICAgICAgICAgICAgICAgIFxyXG5cdFx0XHRcdFx0ICAvL2lmICghJHNjb3BlLm1lbnVJdGVtLlNlbGVjdFZlcnNpb25EaXJlY3QgfHwgKGluaXRpYWxfbG9hZCAmJiAkc2NvcGUubWVudUl0ZW0uU2VsZWN0VmVyc2lvbkRpcmVjdCkpe1xyXG5cdFx0XHRcdFx0ICAvLyAgICAgIHNjb3BlLmxvY2FsVmFycy5yZWxhdGVkUmVzb3VyY2VzQ29sdW1uc1skc2NvcGUubWVudUl0ZW0uc19tZW51c19UYXJnZXRdID0gW10gICAgICAgXHJcblx0XHRcdFx0XHQgLy8gICB9XHJcbiAgICAgICAgICAgICAgIH0gXHJcblx0XHRcdCAgICxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuXHRcdFx0fSk7XHJcblx0XHRcdCAgIFxyXG5cdFx0XHQgICBcclxuICAgICAgICAgICAgJHNjb3BlLnNhdmVTaWRlTWVudSA9IGZ1bmN0aW9uKClcclxuICAgICAgICAgICAgeyAgICBcclxuICAgICAgICAgICAgICRzY29wZS5tZW51X3NlcnZpY2Uuc2F2ZU1lbnUoJHNjb3BlLm1lbnVfc2VydmljZS5zZWxlY3RlZFNpZGVNZW51LGxhbmcpLnRoZW4oXHJcblx0XHRcdFx0XHRmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubWVudV9zZXJ2aWNlLnNlbGVjdGVkU2lkZU1lbnUuc19tZW51c19pZCA9PSBudWxsIHx8ICRzY29wZS5tZW51X3NlcnZpY2Uuc2VsZWN0ZWRTaWRlTWVudS5zX21lbnVzX2lkPT11bmRlZmluZWQpICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5tZW51X3NlcnZpY2Uuc2V0U2VsZWN0ZWRTaWRlbWVudShkYXRhLmRhdGEsbGFuZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5tZW51X3NlcnZpY2UuYWRkTmV3U2lkZU1lbnVUb05hdmJhcigkc2NvcGUubWVudV9zZXJ2aWNlLnNlbGVjdGVkU2lkZU1lbnUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHRcdGVsc2UgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm1lbnVfc2VydmljZS5zZWxlY3RlZFNpZGVNZW51ID0gZGF0YS5kYXRhOyAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm1lbnVfc2VydmljZS51cGRhdGVOYXZiYXJTZWxlY3RlZFNpZGVNZW51KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG5cdFx0XHRcdFx0ZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0UGFnZXMoKTsgICAgXHJcbiAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMubWVudUxvYWRlZCA9IHRydWU7XHJcblx0XHRcdFxyXG4gICAgICAgICAgICAkc2NvcGUuJHdhdGNoKCdtZW51X3NlcnZpY2Uuc2VsZWN0ZWRTaWRlTWVudScsZnVuY3Rpb24obmV3VmFsdWUsb2xkVmFsdWUpe1xyXG4gICAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWUhPW9sZFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5tZW51SXRlbT0kc2NvcGUubWVudV9zZXJ2aWNlLmdldFNlbGVjdGVkU2lkZW1lbnUoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHRcdFx0ICAgXHJcbiAgICAgICAgICAgfSxcclxuICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgXHJcbiAgICAgIH1cclxuICAgIH1cclxuICBcclxufTtcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIG11bHRpcGxlTGlzdCAoKXsgXG4gICByZXR1cm4ge1xuICAgICAgcmVxdWlyZTogJ25nTW9kZWwnLFxuICAgICAgbGluazogZnVuY3Rpb24oc2NvcGUsIGVsZW0sIGF0dHIsbmdNb2RlbCkge1xuICAgICAgICBcbiAgICAgIC8vTUlHT1IgU1RBUlRcbiAgICAgICAgICAgICAgc2NvcGUuc2VhcmNoPVtcblx0XHRcdFx0e2lkOjEsZmlsdGVyOidvbmxpc3QnLG5hbWU6XCJPbiBsaXN0OlwiLGljb246XCJmYSBmYS1jaGV2cm9uLXJpZ2h0XCJ9LFxuXHRcdFx0XHR7aWQ6MixmaWx0ZXI6J25vdG9ubGlzdCcsbmFtZTpcIk5vdCBvbiBsaXN0OlwiLGljb246XCJmYSBmYS1leHBhbmRcIn0sXG4gICAgICAgICAgICAgICAgXTtcblx0XHRcdFx0XG4gICAgICAgICAgICAgIC8vIGlmIChzY29wZS5mZCE9dW5kZWZpbmVkKSBzY29wZS5mZC5zZWFyY2g9c2NvcGUuc2VhcmNoWzBdOyAvL01JR09SIFRPRE8gLSBncmVza2Ega29kIGluY2lqYWNpamUgemEgbXVsdGlwbGUgLCBtb3pkYSB0cmViYSBrb2QgcHJvbWplbmUgbmEgbXVsdGlwbGUgb3ZvIGpvcyBqZWRub20gb2tpbnV0aVxuICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgLy9NSUdPUiBFTkRcbiAgICAgICAgICB2YXIgbGVuTGlzdCA9IGF0dHIubXVsdGlwbGVMaXN0O1xuICAgICAgICAgIHNjb3BlLmRvbmVCbHVyID0gZmFsc2U7XG4gICAgICAgICAgaWYgKGxlbkxpc3QgPT0gdW5kZWZpbmVkKVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxlbkxpc3QgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIHNjb3BlLnVwZGF0ZVZhbHVlcz1mdW5jdGlvbigpe1xuICAgICAgICAgaWYgKHNjb3BlLmZkIT11bmRlZmluZWQpXG4gICAgICAgICB7XG4gICAgICAgICAgIGlmIChzY29wZS5mb3JtRGF0YVswXVsnRmllbGQnK3Njb3BlLmZkLml0ZW1JZF09PXVuZGVmaW5lZCB8fCBzY29wZS5mb3JtRGF0YVswXVsnRmllbGQnK3Njb3BlLmZkLml0ZW1JZF09PW51bGwpXG4gICAgICAgICAgIHtcbiAgICAgICAgICBcbiAgICAgICAgICAgICBzY29wZS5mb3JtRGF0YVswXVsnRmllbGQnK3Njb3BlLmZkLml0ZW1JZF09W107XG4gICAgICAgXG4gICAgICAgICAgIH1cbiAgICAgICAgICAgc2NvcGUuJHNlbGVjdC5zZWxlY3RlZEl0ZW1zTXVsdGlwbGVMaXN0PSBzY29wZS5mb3JtRGF0YVswXVsnRmllbGQnK3Njb3BlLmZkLml0ZW1JZF07XG4gICAgICAgICAgIFxuICAgICAgICAgICBpZiAoc2NvcGUuZm9ybURhdGFbMF1bJ0ZpZWxkJytzY29wZS5mZC5pdGVtSWRdLmxlbmd0aD4wKVxuICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHNjb3BlLmZkLnNlYXJjaC52YWx1ZT1zY29wZS5mb3JtRGF0YVswXVsnRmllbGQnK3Njb3BlLmZkLml0ZW1JZF07IC8vTUlHT1JcbiAgICAgICAgICAgfVxuICAgICAgICAgfWVsc2VcbiAgICAgICAgIHtcbiAgICAgICAgICBzY29wZS4kc2VsZWN0LnNlbGVjdGVkSXRlbXNNdWx0aXBsZUxpc3Q9c2NvcGUuc2VsZWN0ZWRJdGVtcztcbiAgICAgICAgICBcbiAgICAgICAgIH1cbiAgICAgICAgIFxuICAgICAgICB9O1xuICAgICAgICBcbiAgICAgICAvLyBzY29wZS51cGRhdGVWYWx1ZXMoKTtcbiAgICAgICAgXG4gICAgICAgIHNjb3BlLiR3YXRjaCgnc2VsZWN0ZWRJdGVtcycsIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgIHNjb3BlLnVwZGF0ZVZhbHVlcygpO1xuXG4gICAgICAgIH0pO1xuICAgIFxuICAgICAgICAgIC8qZnVuY3Rpb24gZm9yIG11bHRpcGxlIGxpc3QgU1RBUlQgSUxKKi9cbiAgICAgICAgICBzY29wZS5yZW1vdmVJdGVtRnJvbUxpc3QgPSAgZnVuY3Rpb24oaW5kZXgpe1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgaWYgKHNjb3BlLmZvcm1EYXRhWzBdWydGaWVsZCcrc2NvcGUuZmQuaXRlbUlkXSE9dW5kZWZpbmVkKVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2NvcGUuZm9ybURhdGFbMF1bJ0ZpZWxkJytzY29wZS5mZC5pdGVtSWRdLnNwbGljZShpbmRleCwxKTtcbiAgICAgICAgICAgICAgfWVsc2VcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHNjb3BlLnNlbGVjdGVkSXRlbXMuc3BsaWNlKGluZGV4LDEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHNjb3BlLmNoZWNrVmFsaWRpdHkoKTsgXG4gICAgICAgICAgaWYgKHNjb3BlLmZkIT11bmRlZmluZWQpIHNjb3BlLmZkLnNlYXJjaC52YWx1ZT1zY29wZS5mb3JtRGF0YVswXVsnRmllbGQnK3Njb3BlLmZkLml0ZW1JZF07IC8vTUlHT1JcbiAgICAgICAgXG5cbiAgICAgICAgICB9O1xuICAgICAgICBcbiAgICAgICAgICAgIFxuICAgICAgIHNjb3BlLmFkZEl0ZW1Ub0xpc3QgPSAgZnVuY3Rpb24oaXRlbSkge1xuICAgICAgICBcbiAgICAgICAgaWYgKGl0ZW0hPW51bGwpXG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgcG9zO1xuICAgICAgICAgIGlmIChzY29wZS5mb3JtRGF0YVswXVsnRmllbGQnK3Njb3BlLmZkLml0ZW1JZF0hPXVuZGVmaW5lZClcbiAgICAgICAgICB7XG4gICAgICAgICAgIHBvcyA9IHNjb3BlLmZvcm1EYXRhWzBdWydGaWVsZCcrc2NvcGUuZmQuaXRlbUlkXS5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZihpdGVtLmlkKTtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIGlmIChwb3M8MCl7XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICBzY29wZS5mb3JtRGF0YVswXVsnRmllbGQnK3Njb3BlLmZkLml0ZW1JZF0ucHVzaChhbmd1bGFyLmNvcHkoaXRlbSkpO1xuICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH1lbHNlXG4gICAgICAgICAge1xuICAgICAgICAgICAgICBpZiAoc2NvcGUuc2VsZWN0ZWRJdGVtcz09dW5kZWZpbmVkKSBzY29wZS5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgICAgICAgICAgIHBvcyA9IHNjb3BlLnNlbGVjdGVkSXRlbXMubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoaXRlbS5pZCk7XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICBpZiAocG9zPDApe1xuICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgIHNjb3BlLnNlbGVjdGVkSXRlbXMucHVzaChhbmd1bGFyLmNvcHkoaXRlbSkpO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgIFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoc2NvcGUuZG9uZUJsdXIpXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgIHNjb3BlLmNoZWNrVmFsaWRpdHkoKTsgXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkIT11bmRlZmluZWQpIHNjb3BlLmZkLnNlYXJjaC52YWx1ZT1zY29wZS5mb3JtRGF0YVswXVsnRmllbGQnK3Njb3BlLmZkLml0ZW1JZF07IC8vTUlHT1JcbiAgICAgICAgfVxuICAgXG5cbiAgICAgIH07XG4gICAgc2NvcGUuY2hlY2tWYWxpZGl0eSA9IGZ1bmN0aW9uKCl7XG4gICAgICAgIHNjb3BlLmRvbmVCbHVyID0gdHJ1ZTtcbiAgICAgICAgdmFyIHZhbGlkO1xuICAgICAgICBpZiAoc2NvcGUuZmQhPXVuZGVmaW5lZClcbiAgICAgICAge1xuICAgICAgICAgIHZhbGlkID0gKCFzY29wZS5mZC5yZXF1aXJlZCkgfHwgKHNjb3BlLmZvcm1EYXRhWzBdWydGaWVsZCcrc2NvcGUuZmQuaXRlbUlkXS5sZW5ndGggPj0gbGVuTGlzdCk7XG4gICAgICAgIH1lbHNlXG4gICAgICAgIHtcbiAgICAgICAgICB2YWxpZCA9ICghc2NvcGUucmVxdWlyZWQpIHx8IChzY29wZS5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+PSBsZW5MaXN0KTtcbiAgICAgICAgfVxuICAgICAgICBuZ01vZGVsLiRzZXRWYWxpZGl0eSgnbXVsdGlwbGVMaXN0JywgdmFsaWQpO1xuICAgICAgXG4gICAgfTtcbiAgICAvKmZ1bmN0aW9uIGZvciBtdWx0aXBsZSBsaXN0IEVORCovICAgXG4gICAgICB9XG4gICB9O1xufTtcbid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdE5hdmJhckRlZmluaXRpb24oKSB7XHJcbiAgXHJcbiAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdE5hdmJhckRlZmluaXRpb24uaHRtbCcsXHJcbiAgICAgICAgICAgIHNjb3BlOiAge1xyXG4gICAgICAgICAgICAgICAgbmF2YmFySXRlbTonPScsXHJcbiAgICAgICAgICAgICAgICBsb2NhbFZhcnM6Jz0nXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uKCRzY29wZSwkcm9vdFNjb3BlLCR0aW1lb3V0LE1lbnVTZXJ2aWNlLENvZGVzU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlKXtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgJHNjb3BlLkNUUkw9XCJrdE5hdmJhckRlZmluaXRpb25cIlxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBsZXQgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgIHZhciBjdXJVc2VyPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlclxyXG5cclxuICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycz09dW5kZWZpbmVkKSAkc2NvcGUubG9jYWxWYXJzPXt9O1xyXG4gICAgICAgICAgICAgICRzY29wZS5tZW51X3NlcnZpY2U9TWVudVNlcnZpY2U7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGlmICgkc2NvcGUubmF2YmFySXRlbT09dW5kZWZpbmVkKSB7ICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm5hdmJhckl0ZW09JHNjb3BlLm1lbnVfc2VydmljZS5nZXRTZWxlY3RlZE5hdmJhcigpOyAgXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGlmICgkc2NvcGUubmF2YmFySXRlbS5Vc2VycyA9PSB1bmRlZmluZWQpICRzY29wZS5uYXZiYXJJdGVtLlVzZXJzPVtdXHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5uYXZiYXJJdGVtLkdyb3VwcyA9PSB1bmRlZmluZWQpICRzY29wZS5uYXZiYXJJdGVtLkdyb3Vwcz1bXVxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZFVzZXJzID0gJHNjb3BlLm5hdmJhckl0ZW0uVXNlcnNcclxuICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRHcm91cHMgPSAkc2NvcGUubmF2YmFySXRlbS5Hcm91cHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICRzY29wZS5oZWFkZXJMYWJlbD1cIkdyYW50IGFjY2VzcyB0byBuYXZpZ2F0aW9uXCI7XHJcbiAgICAgICAgICAgICAgJHNjb3BlLnVzZXJzTGFiZWw9XCJVc2Vyc1wiO1xyXG4gICAgICAgICAgICAgICRzY29wZS5ncm91cHNMYWJlbD1cIkdyb3Vwc1wiO1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICRzY29wZS5nZXRVc2Vyc0dyb3Vwcz0gZnVuY3Rpb24oKVxyXG5cdFx0XHQgIHtcclxuXHRcdFx0XHRcdHZhciBtZW51SWQgPSAkc2NvcGUubmF2YmFySXRlbS5zX21lbnVzX2lkO1xyXG5cdFx0XHRcdFx0aWYgKG1lbnVJZCE9bnVsbCkge1xyXG5cdFx0XHRcdFx0ICBNZW51U2VydmljZS5nZXRVc2Vyc0dyb3Vwc0Zvck1lbnUobWVudUlkLGxhbmcpLnRoZW4oXHJcblx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24oZGF0YSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAkc2NvcGUubmF2YmFySXRlbS5Vc2VycyA9IGRhdGEuVXNlcnM7XHJcblx0XHRcdFx0XHRcdFx0XHQgICRzY29wZS5uYXZiYXJJdGVtLkdyb3VwcyA9IGRhdGEuR3JvdXBzOyBcclxuXHRcdFx0XHRcdFx0XHRcdCAgJHNjb3BlLnNlbGVjdGVkVXNlcnMgPSAkc2NvcGUubmF2YmFySXRlbS5Vc2VycyAgLy9uZWVkZWQgZm9yIHNlbGVjdFVzZXJzIHdpZGdldFxyXG5cdFx0XHRcdFx0XHRcdFx0ICAkc2NvcGUuc2VsZWN0ZWRHcm91cHMgPSAkc2NvcGUubmF2YmFySXRlbS5Hcm91cHMgIC8vbmVlZGVkIGZvciBzZWxlY3RHcm91cHMgd2lkZ2V0XHJcblx0XHRcdFx0XHRcdFx0XHQgICRzY29wZS5uYXZiYXJJdGVtLlVzZXJzR3JvdXBzRG93bmxvYWRlZCA9IHRydWU7IFxyXG5cdFx0XHRcdFx0XHRcdH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuXHRcdFx0XHRcdFx0XHRcdE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcblx0XHRcdFx0XHQgIH0pO1xyXG5cdFx0XHRcdFx0fSBlbHNlICRzY29wZS5uYXZiYXJJdGVtLlVzZXJzR3JvdXBzRG93bmxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFx0XHJcblx0XHRcdFxyXG5cdFx0XHRSZXNvdXJjZXNEYXRhU2VydmljZS5HZXRQdWJsaXNoZWRSZXNvdXJjZXNCeVR5cGVJZCgkc2NvcGUubmF2YmFySXRlbS5zX21lbnVzX1RhcmdldCwnZm9ybScpLnRoZW4oXHJcblx0XHRcdFx0XHRmdW5jdGlvbiAoZGF0YSkgeyAgICAgICBcclxuXHRcdFx0XHRcdFx0JHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlc1B1Ymxpc2hlZExpc3Q9e31cclxuXHRcdFx0XHRcdFx0JHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlc1B1Ymxpc2hlZExpc3RbJHNjb3BlLm5hdmJhckl0ZW0uc19tZW51c19UYXJnZXRdID0gZGF0YS5kYXRhO1xyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0Ly8gZmlsbCAnc2VsZWN0IHZlcnNpb24nIG9wdGlvbnMgdG8gaGF2ZSBib3RoIGlkIGFuZCBuYW1lIChmb3IgYWxyZWFkeSBzYXZlZCBkYXRhKVxyXG5cdFx0XHRcdFx0XHRpZiAoJHNjb3BlLm5hdmJhckl0ZW0uc19tZW51c19TZWxlY3RWZXJzaW9uRGlyZWN0KXsgXHJcblx0XHRcdFx0XHRcdFx0ICBsZXQgcHVibGlzaGVkTGlzdCA9ICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZXNQdWJsaXNoZWRMaXN0WyRzY29wZS5uYXZiYXJJdGVtLnNfbWVudXNfVGFyZ2V0XSBcclxuXHRcdFx0XHRcdFx0XHQgIHB1Ymxpc2hlZExpc3QuZm9yRWFjaCggKGl0ZW0pPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0ICBpZiAoaXRlbS5WZXJzaW9uID09ICRzY29wZS5uYXZiYXJJdGVtLnNfbWVudXNfVGFyZ2V0UGFnZVZlcnNpb24pIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQgICRzY29wZS5uYXZiYXJJdGVtLnNlbGVjdGVkUHVibGlzaGVkUmVzb3VyY2UgPSBpdGVtXHJcblx0XHRcdFx0XHRcdFx0ICB9ICkgXHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuXHRcdFx0XHRcdFx0TWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgICBcclxuXHRcdFx0fSk7XHJcblx0XHRcdFxyXG5cdFx0XHRcclxuICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNldFBhZ2UgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgIHZhciBwb3MgPSAkc2NvcGUubG9jYWxWYXJzLnBhZ2VMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKCRzY29wZS5uYXZiYXJJdGVtLnNfbWVudXNfVGFyZ2V0X2lkKTtcclxuICAgICAgICAgICAgICAgIGlmIChwb3M+PTApe1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUubmF2YmFySXRlbS5UYXJnZXQgPSAkc2NvcGUubG9jYWxWYXJzLnBhZ2VMaXN0W3Bvc107XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5nZXRQYWdlcyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUobGFuZywncGFnZScpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnBhZ2VMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucGFnZXNMb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNldFBhZ2UoKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0UGFnZXMoKVxyXG5cclxuICAgICAgICAgICAgLy9UT0RPIC0gdmlkamV0aSBqZWwgb3ZvIGRvbGUgdHJlYmFcclxuICAgICAgICAgICAgIGlmICgkc2NvcGUuc2VsZWN0ZWRVc2Vycz09dW5kZWZpbmVkIHx8ICRzY29wZS5zZWxlY3RlZEdyb3Vwcz09dW5kZWZpbmVkKSAgICRzY29wZS5nZXRVc2Vyc0dyb3VwcygpOyBcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAkc2NvcGUuJHdhdGNoKCdtZW51X3NlcnZpY2Uuc2VsZWN0ZWROYXZiYXInLGZ1bmN0aW9uKG5ld1ZhbHVlLG9sZFZhbHVlKXtcclxuICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlIT1vbGRWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubmF2YmFySXRlbT0kc2NvcGUubWVudV9zZXJ2aWNlLmdldFNlbGVjdGVkTmF2YmFyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2V0UGFnZSgpXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAkc2NvcGUuJHdhdGNoKCdzZWxlY3RlZFVzZXJzJyxmdW5jdGlvbihuZXdWYWx1ZSxvbGRWYWx1ZSl7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBhPSBuZXdWYWx1ZVxyXG4gICAgICAgICAgICAgICAgIC8vIGRlYnVnZ2VyXHJcbiAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS4kd2F0Y2goJ25hdmJhckl0ZW0nLGZ1bmN0aW9uKG5ld1ZhbHVlLG9sZFZhbHVlKXtcclxuICAgICAgICAgICAgICAgICAgbGV0IGE9IG5ld1ZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2V0UGFnZSgpXHJcblxyXG4gICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICRzY29wZS5DYW5jZWwgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgJHNjb3BlLm1lbnVfc2VydmljZS5uYXZiYXJTZWxlY3RlZCA9IGZhbHNlOyAgIFxyXG4gICAgICAgICAgICB9OyAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAkc2NvcGUuc2F2ZU5hdmJhciA9IGZ1bmN0aW9uKGZvcm0pIHtcclxuICAgICAgICAgICAgICAgIC8vZGVidWdnZXI7IC8vc2F2ZU5hdmJhclxyXG4gICAgICAgICAgICAgICAgaWYgKGZvcm0uJHZhbGlkKSAkc2NvcGUubWVudV9zZXJ2aWNlLnNhdmVNZW51KCRzY29wZS5tZW51X3NlcnZpY2Uuc2VsZWN0ZWROYXZiYXIsbGFuZykudGhlbihcclxuXHRcdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIHsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubWVudV9zZXJ2aWNlLnNlbGVjdGVkTmF2YmFyLnNfbWVudXNfaWQgPT0gMCB8fCAkc2NvcGUubWVudV9zZXJ2aWNlLnNlbGVjdGVkTmF2YmFyLnNfbWVudXNfaWQgPT0gbnVsbCB8fCAkc2NvcGUubWVudV9zZXJ2aWNlLnNlbGVjdGVkTmF2YmFyLnNfbWVudXNfaWQ9PXVuZGVmaW5lZCkgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubWVudV9zZXJ2aWNlLnNlbGVjdGVkTmF2YmFyID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jdXJyZW50TmF2YmFySWQgPSAkc2NvcGUubWVudV9zZXJ2aWNlLnNlbGVjdGVkTmF2YmFyLnNfbWVudXNfaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm1lbnVfc2VydmljZS5zZWxlY3RlZE5hdmJhci5TaWRlTWVudXMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubWVudV9zZXJ2aWNlLm5hdmJhckl0ZW1zLnB1c2goYW5ndWxhci5jb3B5KCRzY29wZS5tZW51X3NlcnZpY2Uuc2VsZWN0ZWROYXZiYXIpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubWVudV9zZXJ2aWNlLnNldEN1cnJlbnROYXZiYXJJZCgkc2NvcGUuY3VycmVudE5hdmJhcklkLGxhbmcpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5tZW51X3NlcnZpY2Uuc2VsZWN0ZWROYXZiYXIgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmN1cnJlbnROYXZiYXJJZCA9ICRzY29wZS5tZW51X3NlcnZpY2Uuc2VsZWN0ZWROYXZiYXIuc19tZW51c19pZDsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cdFx0XHRcdFx0XHRNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuXHRcdFx0XHRcdFx0XHQgXHJcblx0XHRcdFx0XHR9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMubmF2YmFyTG9hZGVkID0gdHJ1ZTtcclxuXHRcdFx0ICBcclxuICAgICAgICAgICAgfSwgLy9jb250cm9sbGVyXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7ICBcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIFxyXG59O1xuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24ga3ROb3RpZmljYXRpb25MaXN0ICgpIHtcbiAgIFxuICAgIHZhciBjb250cm9sbGVyID0gWyckc2NvcGUnLCAnJHVpYk1vZGFsJywnJHN0YXRlUGFyYW1zJywnJHRpbWVvdXQnLCdDb2Rlc1NlcnZpY2UnLCdSZXNvdXJjZXNEYXRhU2VydmljZScsJyRyb290U2NvcGUnLCdQcm9jZXNzaW5nU2VydmljZScsJ1dpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UnLCdHcmlkc3RlclNlcnZpY2UnLCdNZXNzYWdpbmdTZXJ2aWNlJywnQ09ERVNfQ09OU1QnLCdUYXNrRGF0YVNlcnZpY2UnLFxuICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkc2NvcGUsJHVpYk1vZGFsLCRzdGF0ZVBhcmFtcywkdGltZW91dCxDb2Rlc1NlcnZpY2UsUmVzb3VyY2VzRGF0YVNlcnZpY2UsJHJvb3RTY29wZSxQcm9jZXNzaW5nU2VydmljZSxXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlLENPREVTX0NPTlNULFRhc2tEYXRhU2VydmljZSkge1xuICAgICAgXG4gICAgICBcbiAgICBcbiAgICAkc2NvcGUubG9jYWxWYXJzPXt9O1xuICAgICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9MDtcbiAgICAkc2NvcGUubG9jYWxWYXJzLnNyY190eXBlX3RleHQ9Q09ERVNfQ09OU1QuX1BPUFVMQVRFX1RZUEVfOyBcbiAgICAkc2NvcGUubG9jYWxWYXJzLnNlYXJjaEZvcm1Eb3dubG9hZGVkID0gZmFsc2U7XG4gICAgJHNjb3BlLmxvY2FsVmFycy5zaG93U2VhcmNoRmlsdGVycz10cnVlO1xuICAgICRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRlZCA9IHRydWU7XG4gICAgJHNjb3BlLnRhc2tJZD0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlJlc291cmNlRGVmSWQ7XG4gICAgaWYgKCRzY29wZS50YXNrSWQ9PXVuZGVmaW5lZCkgICRzY29wZS50YXNrSWQ9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZURlZklkX2lkO1xuICAgIGlmICgkc2NvcGUudGFza0lkPT11bmRlZmluZWQpICRzY29wZS50YXNrSWQ9MFxuICAgICRzY29wZS5sb2NhbFZhcnMudGFza0lkPSRzY29wZS50YXNrSWQ7XG4gICAgJHNjb3BlLmxvY2FsVmFycy53aWRnZXRUeXBlID0gNDtcbiAgICBcbiAgICAkc2NvcGUubG9jYWxWYXJzLnBhcmVudERhdGFzZXREZWZJZD0kc2NvcGUuZmQucmVsYXRlZDtcbiAgICAkc2NvcGUubG9jYWxWYXJzLmFuaW1hdGlvbnNFbmFibGVkID0gdHJ1ZTtcbiAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRzdGVyVHlwZT1cInJlc291cmNlXCI7XG4gICAgICAgICAgXG5cbiAgICAgJHNjb3BlLmxvY2FsVmFycy5kYXNoYm9hcmQgPSB7XG4gIFx0XHRcdFx0aWQ6ICcxJyxcbiAgXHRcdFx0XHRuYW1lOiAnSG9tZScsXG4gIFx0XHRcdFx0d2lkZ2V0czogR3JpZHN0ZXJTZXJ2aWNlLmdldEVtcHR5RGF0YXNldEZvcm0oKVxuXHRcdFx0XHR9IDtcbiAgICAgICAgXG4gICAgICAgIFxuICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEgPSB7XG4gICAgICAgICAgIC8vICBjb2x1bW5EZWZzOiBjb2xEZWZzLFxuICAgICAgICBlbmFibGVHcmlkTWVudTogdHJ1ZSxcbiAgICAgICAgc2hvd0dyaWRGb290ZXI6IHRydWUsXG4gICAgICAgIHNob3dDb2x1bW5Gb290ZXI6IHRydWUsXG4gICAgICAgIGVuYWJsZVJvd1NlbGVjdGlvbjogdHJ1ZSxcbiAgICAgICAgbXVsdGlTZWxlY3Q6ICRzY29wZS5mZC5tdWx0aWxpbmUsXG4gICAgICAvLyAgZW5hYmxlSG9yaXpvbnRhbFNjcm9sbGJhciA6IDEsXG4gICAgICAgLy8gZW5hYmxlVmVydGljYWxTY3JvbGxiYXIgOiAyLFxuICAgICAgICBlbmFibGVGaWx0ZXJpbmc6IHRydWUsXG4gICAgICAgIGVuYWJsZVJvd0hlYWRlclNlbGVjdGlvbjogdHJ1ZSxcbiAgICAgICAgZW5hYmxlQ29sdW1uUmVzaXppbmc6IHRydWUsXG4gICAgICAgIGVuYWJsZUNvbHVtblJlb3JkZXJpbmc6IHRydWUsXG4gICAgICAgIHVzZUV4dGVybmFsUGFnaW5hdGlvbjogdHJ1ZSxcbiAgICAgICAgcGFnaW5hdGlvblBhZ2VTaXplczogWzEwLCAyNSwgNTAsMTAwLDIwMCw1MDAsMTAwMF0sXG4gICAgICAgIGVuYWJsZVBhZ2luYXRpb25Db250cm9sczogZmFsc2UsXG4gICAgICB9O1xuXG4gIHZhciBwYWdpbmF0aW9uT3B0aW9ucyA9IHtcbiAgICBwYWdlTnVtYmVyOiAxLFxuICAgIHBhZ2VTaXplOiAxMCxcbiAgICBzb3J0OiBudWxsXG4gICAgfTtcbiAgICBcbiAgICBcbiAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVsYXRlZCA9IHtcbiAgICAgIC8vICBjb2x1bW5EZWZzOiBjb2xEZWZzLFxuICAgICAgIGVuYWJsZUdyaWRNZW51OiB0cnVlLFxuICAgICAgIHNob3dHcmlkRm9vdGVyOiB0cnVlLFxuICAgICAgIHNob3dDb2x1bW5Gb290ZXI6IHRydWUsXG4gICAgICAgZW5hYmxlUm93U2VsZWN0aW9uOiBmYWxzZSxcbiAgICAgICBtdWx0aVNlbGVjdDogZmFsc2UsXG4gICAgICAgZW5hYmxlSG9yaXpvbnRhbFNjcm9sbGJhciA6IDIsIFxuICAgICAgIG5hYmxlVmVydGljYWxTY3JvbGxiYXIgOiAyLFxuICAgICAgIGVuYWJsZUZpbHRlcmluZzogdHJ1ZSxcbiAgICAgICBlbmFibGVSb3dIZWFkZXJTZWxlY3Rpb246IHRydWUsXG4gICAgICAgZW5hYmxlQ29sdW1uUmVzaXppbmc6IHRydWUsXG4gICAgICAgbWluUm93c1RvU2hvdzogMixcbiAgICAgIFxuICAgfVxuICAgIFxuICAgICAgICAkc2NvcGUudGFza0lkPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VEZWZJZDtcbiAgICAgICAgaWYgKCRzY29wZS50YXNrSWQ9PXVuZGVmaW5lZCkgICRzY29wZS50YXNrSWQ9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZURlZklkX2lkO1xuICAgICAgICBpZiAoJHNjb3BlLnRhc2tJZD09dW5kZWZpbmVkKSAkc2NvcGUudGFza0lkPTA7XG4gICAgICAgIFxuICAgICAgICAvLyRzY29wZS5mZC5wb3B1bGF0ZVR5cGU9MTtcbiAgICAgICAgJHNjb3BlLmZkLnBhcmVudERhdGFzZXREZWZJZD0kc2NvcGUuZmQucmVsYXRlZDtcbiAgICAgICAgJHNjb3BlLnByZXZUYXNrRXhlSWQgPSAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wcmV2X3Rhc2tfaWQ7XG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMuZm9ybVR5cGU9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX3R5cGU7XG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMuc291cmNlX3R5cGU9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5zb3VyY2VfdHlwZTtcbiAgICAgICAgJHNjb3BlLnRhc2tJbml0aWF0ZUlkID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50YXNrX2luaXRpYXRlX2lkO1xuICAgICAgICAkc2NvcGUudGFza0V4ZWN1dGVJZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udGFza19leGVjdXRlX2lkO1xuICAgICAgICAkc2NvcGUuZm9ybURlZmluaXRpb24gPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fZGVmaW5pdGlvbjtcbiAgICAgICAgaWYgICgkc2NvcGUuZm9ybURlZmluaXRpb249PXVuZGVmaW5lZClcbiAgICAgICAge1xuICAgICAgICAgIFxuICAgICAgICAgICRzY29wZS5mb3JtRGVmaW5pdGlvbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBcbiAgICAgICAgXG4gICAgICAgIFxuICAgICAgICAgIGlmICgkc2NvcGUudGFza0luaXRpYXRlSWQ9PXVuZGVmaW5lZClcbiAgICAgICB7XG4gICAgICAgICRzY29wZS50YXNrSW5pdGlhdGVJZCA9MDtcbiAgICAgICAgXG4gICAgICAgfVxuICAgICAgIGlmICgkc2NvcGUudGFza0V4ZWN1dGVJZD09dW5kZWZpbmVkKVxuICAgICAgIHtcbiAgICAgICAgJHNjb3BlLnRhc2tFeGVjdXRlSWQgPTA7XG4gICAgICAgIFxuICAgICAgIH1cbiAgICAgICAgaWYgKCRzY29wZS5wcmV2VGFza0V4ZUlkPT11bmRlZmluZWQpXG4gICAgICAgIHtcbiAgICAgICAgICAkc2NvcGUucHJldlRhc2tFeGVJZCA9MDtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkID0gMDtcbiAgICAgICAgJHNjb3BlLmZkLnBhcmVudEVsZW1lbnRJZCA9IDA7XG4gICAgICAgIFxuICAgICAgICBcbiAgICAgICAgXG4gICAgICB2YXIgb3V0X2ZpZWxkcyA9IFsncmVzb3VyY2VSZWNvcmRJZCddXG4gICAgICAvL3Jlc291cmNlTGlua1xuICAgICAgdmFyIHdpZGdldERlZmluaXRpb24gPSB7REVJOiBbeyduYW1lJzoncmVzb3VyY2VMaW5rRGF0YXNldExpc3QnLCd2YWx1ZSc6W3tuYW1lOidyZXNvdXJjZUlkJyx2YWx1ZTokc2NvcGUuZmQucmVsYXRlZH0se25hbWU6J3Jlc291cmNlUmVjb3JkSWQnLHZhbHVlOicnfV19XSxhY3Rpb25zOiBbe25hbWU6J1ByZXBhcmVEYXRhJyxzdGF0dXM6ZmFsc2V9XSxuYW1lOiAnZGF0YXNldExpc3RXaWRnZXQnLHdpZGdldElkOiAkc2NvcGUuZmQucHJlc2VudGF0aW9uSWQsdGFza0lkOiAgJHNjb3BlLmxUYXNrSWQsXG4gICAgICByZXNvdXJjZURlZklkIDogJHNjb3BlLmZkLnJlbGF0ZWQsIC8vcmVzb3VyY2VEZWZJZCA6ICRzY29wZS5zZWxlY3RlZFJlc291cmNlXG4gICAgICByZXNvdXJjZVJlY29yZElkOiRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZCx0YXNrX2luaXRpYXRlX2lkOiRzY29wZS50YXNrSW5pdGlhdGVJZCx0YXNrX2V4ZWN1dGVfaWQ6JHNjb3BlLnRhc2tFeGVjdXRlSWQsIG91dHB1dDpvdXRfZmllbGRzIH07XG4gICAgICAkc2NvcGUubG9jYWxWYXJzLmxvY2FsV2lkZ2V0SWQgPSBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnJlZ2lzdGVyV2lkZ2V0KHdpZGdldERlZmluaXRpb24pO1xuICAgICAgJHNjb3BlLmxvY2FsVmFycy5sb2NhbElkPSRzY29wZS5sb2NhbFdpZGdldElkO1xuICAgICAgXG4gICAgICBcbiAgICAgICRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEub25SZWdpc3RlckFwaSA9IGZ1bmN0aW9uIChncmlkQXBpKSB7XG4gICAgICAgIC8vc2V0IGdyaWRBcGkgb24gc2NvcGVcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkQXBpID0gZ3JpZEFwaTtcbiAgICAgICAgICAgXG4gICAgICAgICAgZ3JpZEFwaS5zZWxlY3Rpb24ub24ucm93U2VsZWN0aW9uQ2hhbmdlZCgkc2NvcGUsZnVuY3Rpb24ocm93KXtcblxuICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5kYXRhc2V0UmVjb3JkU2VsZWN0ZWQ9cm93LmlzU2VsZWN0ZWQ7XG4gICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5kYXRhc2V0UmVjb3JkU2VsZWN0ZWQpXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZiAocm93LmVudGl0eS5pZCE9JHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZERhdGFzZXRSZWNvcmRJZClcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkRGF0YXNldFJlY29yZElkID0gcm93LmVudGl0eS5pZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1lbHNlXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkRGF0YXNldFJlY29yZElkID0gMDtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVsYXRlZC5jb2x1bW5EZWZzPVtdO1xuICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVsYXRlZC5kYXRhPVtdO1xuICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dHcmlkPWZhbHNlO1xuICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnByZXZUYXNrUGFja2FnZSA9e3Jlc291cmNlRGVmSWQ6JHNjb3BlLmZkLnJlbGF0ZWQscmVjb3JkczpncmlkQXBpLnNlbGVjdGlvbi5nZXRTZWxlY3RlZFJvd3MoKX1cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICBpZiAoZ3JpZEFwaS5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRSb3dzKCkubGVuZ3RoPjApXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAvLyRyb290U2NvcGUuJGJyb2FkY2FzdCgnRXZlbnRyZXNvdXJjZUxpbmsnKyRzY29wZS5mZC5wcmVzZW50YXRpb25JZCwkc2NvcGUuc2VsZWN0ZWREYXRhc2V0UmVjb3JkSWQpO1xuICAgICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2Uuc2V0RGF0YSh7XG4gICAgICAgICAgICAgICAgICBERUk6IFt7bmFtZToncmVzb3VyY2VMaW5rRGF0YXNldExpc3QnLHZhbHVlOlt7bmFtZToncmVzb3VyY2VJZCcsdmFsdWU6JHNjb3BlLmZkLnJlbGF0ZWR9LHtuYW1lOidyZXNvdXJjZVJlY29yZElkJyx2YWx1ZTokc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkRGF0YXNldFJlY29yZElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgLHtuYW1lOidyZXNvdXJjZVJlY29yZElkcycsdmFsdWU6Z3JpZEFwaS5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRSb3dzKCl9LHtuYW1lOidyZXNvdXJjZVJlY29yZHNBbGwnLHZhbHVlOiRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YX1dfV0sd2lkZ2V0SWQ6ICRzY29wZS5mZC5wcmVzZW50YXRpb25JZCx0YXNrX2V4ZWN1dGVfaWQ6JHNjb3BlLnRhc2tFeGVjdXRlSWR9KTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIFxuICAgICAgICAgICAgLy9leHRlcm5hbCBwYWdpbmF0aW9uXG4gICAgICAgICAgZ3JpZEFwaS5wYWdpbmF0aW9uLm9uLnBhZ2luYXRpb25DaGFuZ2VkKCRzY29wZSwgZnVuY3Rpb24gKG5ld1BhZ2UsIHBhZ2VTaXplKSB7XG4gICAgICAgICAgICBwYWdpbmF0aW9uT3B0aW9ucy5wYWdlTnVtYmVyID0gbmV3UGFnZTtcbiAgICAgICAgICAgIHBhZ2luYXRpb25PcHRpb25zLnBhZ2VTaXplID0gcGFnZVNpemU7XG4gICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdldFJlc291cmNlRGF0YVBhZ2luYXRlZCgkc2NvcGUubG9jYWxWYXJzLm5leHRQYWdlLCRzY29wZS5sb2NhbFZhcnMucHJldmlvdXNQYWdlLG5ld1BhZ2UscGFnZVNpemUpO1xuICAgICAgICAgIH0pO1xuICAgICAgXG4gICAgICAgICAgIGdyaWRBcGkuc2VsZWN0aW9uLm9uLnJvd1NlbGVjdGlvbkNoYW5nZWRCYXRjaCgkc2NvcGUsZnVuY3Rpb24ocm93KXtcblxuICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnByZXZUYXNrUGFja2FnZSA9e3Jlc291cmNlRGVmSWQ6JHNjb3BlLmZkLnJlbGF0ZWQscmVjb3JkczpncmlkQXBpLnNlbGVjdGlvbi5nZXRTZWxlY3RlZFJvd3MoKX1cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgfSk7XG4gICAgIH1cbiAgICAgXG4gICAgIFxuICAgICAkc2NvcGUubG9jYWxWYXJzLlByb2Nlc3NTZWFyY2hGb3JtPWZ1bmN0aW9uIChmb3JtKXtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKGZvcm0hPXVuZGVmaW5lZCl7XG4gICAgIFx0XHRcdFx0XHRmb3IodmFyIGk9MDtpPGZvcm0ubGVuZ3RoO2krKykge1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBpZiAoJ3R5cGUnIGluIGZvcm1baV0pXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybVtpXS50eXBlID09ICdyZXNvdXJjZScgJiYgZm9ybVtpXS5hdXRvU2VhcmNoKVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwb3MgPSAkc2NvcGUubG9jYWxWYXJzLmNoaWxkV2lkZ2V0cy5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS53aWRnZXRJZDsgfSkuaW5kZXhPZihmb3JtW2ldLnByZXNlbnRhdGlvbklkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3M8MCkgJHNjb3BlLmxvY2FsVmFycy5jaGlsZFdpZGdldHMucHVzaCh7d2lkZ2V0SWQ6Zm9ybVtpXS5wcmVzZW50YXRpb25JZCxwcm9jZXNzZWQ6ZmFsc2V9KVxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGlmICgnbGF5b3V0JyBpbiBmb3JtW2ldKVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLlByb2Nlc3NTZWFyY2hGb3JtKGZvcm1baV0ubGF5b3V0KTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9IFxuICAgICAgICAgICBcbiAgICAgIH07XG4gICAgICBcbiAgICAgICRzY29wZS5sb2NhbFZhcnMuU2VhcmNoRm9ybVByb2Nlc3NlZD1mYWxzZTtcblxuICAgICAgLypcbiAgICAgICRzY29wZS5sb2NhbFZhcnMuc2V0RGF0YXNldE1hcHBlclR5cGU9IGZ1bmN0aW9uKHR5cGUpe1xuICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSA9IHR5cGU7XG4gICAgICAgICAgfTsgICAgICBcbiAgICAgICovXG4gICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZXRTZWxlY3RlZERhdGFzZXQgPSBmdW5jdGlvbihpZCkgIHtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtPT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW09e307XG4gICAgICAgICAgICAgIHZhciBwb3MgPSAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKGlkKTtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIGlmIChwb3M+PTApe1xuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0uaWQgPSAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRMaXN0W3Bvc10uaWQ7XG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lID0gJHNjb3BlLmxvY2FsVmFycy5kYXRhc2V0TGlzdFtwb3NdLm5hbWU7XG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZERhdGFzZXQgPSAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRMaXN0W3Bvc107XG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCA9ICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZSArJyAoJyskc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLmlkICsnKSdcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtX2M9JHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbTtcbiAgICAgICAgICAgICAgICB9XG5cdFx0XHRcdFx0fTtcbiAgICAgICAgICBcbiAgICAgICAvLyBQT1BVTkkgTElTVFUgREVGSU5JQ0lKQSBPRCBSRVNVUlNBIChSRVNPVVJDRVMgTElTVClcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5nZXREYXRhc2V0cyA9IGZ1bmN0aW9uKCkgIHtcblx0XHRcdFx0XHRcdFxuICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMuZGF0YXNldExpc3Q9PXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycy5kYXRhc2V0TGlzdD1bXTtcbiAgICAgICAgICBcbiAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZMaXN0QnlUeXBlKGxhbmcsJ25vdGlmaWNhdGlvbicpLnRoZW4oXG5cdFx0XHRcdFx0XHRmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5kYXRhc2V0TGlzdCA9IGRhdGEuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5yZWxhdGVkIT1udWxsKVxuICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNldFNlbGVjdGVkRGF0YXNldCgkc2NvcGUuZmQucmVsYXRlZCk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB9ICAgICBcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgXG5cdFx0IH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcblx0IH0pO1xuXHR9XG4gICAgICAgICAgICBcbiAgICAgICRzY29wZS5sb2NhbFZhcnMuR2V0RGF0YXNldERhdGE9ZnVuY3Rpb24oZGF0YSlcblxuICAgICAge1xuXG4gICAgICAgICAgICBmcm9tV2lkZ2V0ID0gZGF0YS53aWRnZXRJZDtcbiAgICAgICAgICAgIHZhciBhbGxQcm9jZXNzZWQ9dHJ1ZTtcbiAgICAgICAgICAgIHZhciBwb3MgPSAkc2NvcGUubG9jYWxWYXJzLmNoaWxkV2lkZ2V0cy5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS53aWRnZXRJZDsgfSkuaW5kZXhPZihmcm9tV2lkZ2V0KTtcbiAgICAgICAgICAgIC8vaWYgKHBvczwwKSAkc2NvcGUuZmQuY2hpbGRXaWRnZXRzLnB1c2goe3dpZGdldElkOmZyb21XaWRnZXQscHJvY2Vzc2VkOnRydWV9KTtcbiAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPCRzY29wZS5sb2NhbFZhcnMuY2hpbGRXaWRnZXRzLmxlbmd0aDtpKyspXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5jaGlsZFdpZGdldHNbaV0ud2lkZ2V0SWQgPT0gZnJvbVdpZGdldCkgJHNjb3BlLmxvY2FsVmFycy5jaGlsZFdpZGdldHNbaV0ucHJvY2Vzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoISRzY29wZS5sb2NhbFZhcnMuY2hpbGRXaWRnZXRzW2ldLnByb2Nlc3NlZCkgYWxsUHJvY2Vzc2VkID0gJHNjb3BlLmxvY2FsVmFycy5jaGlsZFdpZGdldHNbaV0ucHJvY2Vzc2VkO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgLy8gaWYgKCEkc2NvcGUuU2VhcmNoRm9ybVByb2Nlc3NlZCkgJHRpbWVvdXQoZnVuY3Rpb24oKSB7JHNjb3BlLkdldERhdGFzZXREYXRhKGZyb21XaWRnZXQpO30sMTAwMCk7XG4gICAgICAgICAgICAgIGlmKCRzY29wZS5mZC5hdXRvU2VhcmNoICYmIGFsbFByb2Nlc3NlZCAmJiAkc2NvcGUubG9jYWxWYXJzLlNlYXJjaEZvcm1Qcm9jZXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZT0kc2NvcGUuZmQucmVsYXRlZDtcbiAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VDb2x1bW5zKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB9XG4gICAgICB9O1xuICAgICAgIFxuICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMhPXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycy5jaGlsZFdpZGdldHMgPSBbXTtcbiAgICAgIGVsc2UgJHNjb3BlLmxvY2FsVmFycyA9IHtjaGlsZFdpZGdldHMgOiBbXX07XG4gICAgIC8vICRzY29wZS51bmNhdWdodFdpZGdldHMgPSBbXTtcbiAgICAgIHZhciBmcm9tV2lkZ2V0PTA7XG4gICBcbiBcbiAgICAgICRzY29wZS4kb24oJ1NlYXJjaEZvcm1SZWFkeScrJHNjb3BlLnRhc2tFeGVjdXRlSWQsZnVuY3Rpb24oZXZlbnQsIGRhdGEpe1xuICAgICAgXG4gICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuR2V0RGF0YXNldERhdGEoZGF0YSk7IFxuICAgICAgICAgICAgXG4gICAgICB9KTsgICAgIFxuICAgICBcbiAgIFxuICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cdC8vICAgICAgICAgICBHRVQgREFUQVNFVCBSRUxBVEVEIFJFQ09SRFNcblx0Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0RGF0YXNldFJlbGF0ZWRSZWNvcmRzID0gZnVuY3Rpb24gKHJlbGF0ZWREYXRhc2V0SWQscmVjb3JkSWQsbW9kZWxJZCkge1xuICBcbiAgXG4gICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xuICAgICAgICBcbiAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGF0YVJlbGF0ZWQoJHNjb3BlLmZkLnJlbGF0ZWQscmVjb3JkSWQscmVsYXRlZERhdGFzZXRJZCwwLG1vZGVsSWQsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZWxhdGVkLmRhdGEgPSBkYXRhLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1JlbGF0ZWQuY29sdW1uRGVmcyA9IGRhdGEuY29sdW1uc0RlZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dHcmlkPXRydWU7XG4gICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICBcbiAgICAgICAgXG4gLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cdC8vICAgICAgICAgICBHRVQgREFUQVNFVCBTSU5HTEUgUkVDT1JEXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxuICAgICAgJHNjb3BlLmxvY2FsVmFycy5nZXREYXRhc2V0U2luZ2xlUmVjb3JkID0gZnVuY3Rpb24gKHJlbGF0ZWREYXRhc2V0SWQscmVjb3JkSWQpIHtcbiAgXG4gIFxuICAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcbiAgICAgICAgXG4gICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURhdGFEaXJlY3RGaWx0ZXIocmVsYXRlZERhdGFzZXRJZCwwLGxhbmcse2lkOiByZWNvcmRJZH0pLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVsYXRlZC5kYXRhID0gZGF0YS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZWxhdGVkLmNvbHVtbkRlZnMgPSBkYXRhLmNvbHVtbnNEZWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgIFxuICAgICAgICAkc2NvcGUuJG9uKCdTZWFyY2hGb3JtUmVhZHknKyRzY29wZS50YXNrRXhlY3V0ZUlkKyRzY29wZS5mZC5wcmVzZW50YXRpb25JZCxmdW5jdGlvbihldmVudCwgZGF0YTEpe1xuICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5HZXREYXRhc2V0RGF0YShkYXRhMSk7IFxuICAgICAgICAgICAgXG4gICAgICAgIH0pO1xuICAgICAgICBcbiAgICAkc2NvcGUubG9jYWxWYXJzLmdldEZvcm1SZXNvdXJjZSA9IGZ1bmN0aW9uKCl7ICAgXG4gICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xuICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLnByZXNlbnRhdGlvbklkPT1udWxsKSB7XG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLnByZXNlbnRhdGlvbklkID0gMDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZUZvcm1FeHRlbmRlZFdpdGhEYXRhKCRzY29wZS5mZC5yZWxhdGVkLCRzY29wZS50YXNrSW5pdGlhdGVJZCwkc2NvcGUudGFza0V4ZWN1dGVJZCwkc2NvcGUuZmQucG9wdWxhdGVUeXBlLCRzY29wZS5mZC5wYXJlbnRFbGVtZW50SWQsJHNjb3BlLmZkLnByZXNlbnRhdGlvbklkLCRzY29wZS5wcmV2VGFza0V4ZUlkLCRzY29wZS5sb2NhbFZhcnMuZm9ybVR5cGUsJHNjb3BlLmxvY2FsVmFycy53aWRnZXRUeXBlLCRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZCxcImZcIixsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbj0gZGF0YS5kYXRhLnJlc291cmNlRGVmaW5pdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jID0geyduYW1lJzokc2NvcGUubG9jYWxWYXJzLnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbi5uYW1lLCdpZCc6JHNjb3BlLmZkLnJlbGF0ZWQsJ3JlbGF0ZWRJZCc6JHNjb3BlLmZkLnJlbGF0ZWQsJ3ByZXNlbnRhdGlvbklkJzokc2NvcGUuZmQucHJlc2VudGF0aW9uSWQsJ3NyY190eXBlX2lkJzokc2NvcGUuZmQucG9wdWxhdGVUeXBlLCdzcmNfdHlwZV90ZXh0Jzokc2NvcGUubG9jYWxWYXJzLnNyY190eXBlX3RleHRbJHNjb3BlLmZkLnBvcHVsYXRlVHlwZV0sJ3BhcmVudEVsZW1lbnRJZCc6JHNjb3BlLmZkLnBhcmVudEVsZW1lbnRJZH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5mSXRlbVZhbHVlPWRhdGEuZGF0YS53aWRnZXRzO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNlYXJjaEZvcm1Eb3dubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2V0RmllbGQoJHNjb3BlLmZkLmZJdGVtVmFsdWUsJ3JlcXVpcmVkJyxmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmZvcm1Mb2FkZWQ9dHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9wcmVwYXJlIHNlYXJjaCBmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLlByb2Nlc3NTZWFyY2hGb3JtKCRzY29wZS5mZC5mSXRlbVZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuU2VhcmNoRm9ybVByb2Nlc3NlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5jaGlsZFdpZGdldHMubGVuZ3RoPjApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UucmVnaXN0ZXJTZWFyY2goe3dpZGdldElkOiRzY29wZS5mZC5wcmVzZW50YXRpb25JZCx0YXNrRXhlY3V0ZUlkOiRzY29wZS50YXNrRXhlY3V0ZUlkLHByZXZUYXNrRXhlSWQ6JHNjb3BlLnByZXZUYXNrRXhlSWQsY2hpbGRXaWRnZXRzOiRzY29wZS5sb2NhbFZhcnMuY2hpbGRXaWRnZXRzfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm9vdFNjb3BlLiRicm9hZGNhc3QoJ1NlYXJjaEZvcm1SZWFkeScrJHNjb3BlLnRhc2tFeGVjdXRlSWQse3dpZGdldElkOiRzY29wZS5mZC5wcmVzZW50YXRpb25JZH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQgPSAgZGF0YS5kYXRhLndpZGdldHM7ICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5wcmVzZW50YXRpb25JZF0gPSAgZGF0YS5kYXRhLmZvcm1fZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5zZWFyY2ggPSAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLnByZXNlbnRhdGlvbklkXTtcbiAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICB9Oy8vZ2V0Rm9ybVJlc291cmNlX0VORFxuICAgIFxuICAkc2NvcGUubG9jYWxWYXJzLmdldEZvcm1SZXNvdXJjZU9yaWdpbmFsID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG4gICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQucHJlc2VudGF0aW9uSWQ9PW51bGwpXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQucHJlc2VudGF0aW9uSWQgPSAwO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRm9ybSgkc2NvcGUuZmQucmVsYXRlZCxcImlcIixsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZVdpZGdldERlZmluaXRpb249IGRhdGEuZGF0YS5yZXNvdXJjZURlZmluaXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0PWRhdGEuZGF0YS53aWRnZXRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jID0geyduYW1lJzokc2NvcGUubG9jYWxWYXJzLnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbi5uYW1lLCdpZCc6JHNjb3BlLmZkLnJlbGF0ZWQsJ3JlbGF0ZWRJZCc6JHNjb3BlLmZkLnJlbGF0ZWQsICdwcmVzZW50YXRpb25JZCc6JHNjb3BlLmZkLnByZXNlbnRhdGlvbklkICAsJ3NyY190eXBlX2lkJzokc2NvcGUuZmQucG9wdWxhdGVUeXBlLCdzcmNfdHlwZV90ZXh0Jzokc2NvcGUubG9jYWxWYXJzLnNyY190eXBlX3RleHRbJHNjb3BlLmZkLnBvcHVsYXRlVHlwZV0sJ3BhcmVudEVsZW1lbnRJZCc6JHNjb3BlLmZkLnBhcmVudEVsZW1lbnRJZH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZkl0ZW1WYWx1ZT1kYXRhLmRhdGEud2lkZ2V0cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTUlHT1IgLSBiaXRubyAtIERPQklPIFJFU09VUkNFUkVDT1JELUlEIFpBIEJST0FEQ0FTVCAgLSBBRERfUkVTT1VSQ0UgV0lER0VUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2Uuc2V0RGF0YSh7d2lkZ2V0SWQ6JHNjb3BlLmZkLnByZXNlbnRhdGlvbklkLCBERUk6IFt7J25hbWUnOidyZXNvdXJjZUxpbmsnLCd2YWx1ZSc6W3tuYW1lOidyZXNvdXJjZUlkJyx2YWx1ZTokc2NvcGUuZmQucmVsYXRlZH0se25hbWU6J3Jlc291cmNlUmVjb3JkSWQnLHZhbHVlOiRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZH1dfV19KTtcblx0XHRcdFx0XHRcdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VhcmNoRm9ybURvd25sb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZm9ybUxvYWRlZD10cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgIH07XG4gICBcbiAgICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldFJlY29yZFNlbGVjdGVkID0gZmFsc2U7XG4gICAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkRGF0YXNldFJlY29yZElkID0gMDtcbiBcbiAgICAgXG4gICAgICAkc2NvcGUubG9jYWxWYXJzLmdldFJlc291cmNlRGF0YSA9IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAvLyBzY29wZS5hY3Rpdml0eS5hY3Rpdml0eU1lc3NhZ2UgPSBQcm9jZXNzaW5nU2VydmljZS5zZXRBY3Rpdml0eU1zZygnRG93bmxvYWRpbmcgcmVzb3VyY2UgZGF0YSBmb3IgJytzY29wZS5zZWxlY3RlZFJlc291cmNlKTtcbiAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGluZyA9IHRydWU7XG4gICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLnBhZ2VTaXplPT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnMucGFnZVNpemUgPSBwYWdpbmF0aW9uT3B0aW9ucy5wYWdlU2l6ZTtcbiAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEYXRhKCRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZSwkc2NvcGUudGFza0lkLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YSA9IGRhdGEuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmNvbHVtbkRlZnMgPSBkYXRhLmNvbHVtbnNEZWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXN0b3JlR3JpZFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuXHRcdCBcbiAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAgLy8gICAgICAgICAgIEdFVCBSRVNPVVJDRSBEQVRBIFBBR0lOQVRFRFxuICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXG4gICAgJHNjb3BlLmxvY2FsVmFycy5nZXRSZXNvdXJjZURhdGFQYWdpbmF0ZWQgPSBmdW5jdGlvbiAodXJsTmV4dCx1cmxQcmV2LG5ld1BhZ2UscGFnZVNpemUpIHtcbiAgICAgICAgXG4gICAgICAgIFxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkZWQgPSBmYWxzZTsgICAgICAgIFxuICAgICAgICBpZiAoTWF0aC5jZWlsKCRzY29wZS5sb2NhbFZhcnMudG90YWxDb3VudC9wYWdlU2l6ZSk8bmV3UGFnZSlcbiAgICAgICAge1xuICAgICAgICAgIG5ld1BhZ2UgPSBNYXRoLmNlaWwoJHNjb3BlLmxvY2FsVmFycy50b3RhbENvdW50L3BhZ2VTaXplKTtcbiAgICAgICAgfVxuICAgICAgICAgXG4gICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xuICAgICAgICAgIFxuICAgICAgICAgaWYgKHBhZ2VTaXplPT11bmRlZmluZWQpXG4gICAgICAgICBcbiAgICAgICAgIHtcbiAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnBhZ2VTaXplID0gcGFnaW5hdGlvbk9wdGlvbnMucGFnZVNpemU7XG4gICAgICAgICAgcGFnZVNpemU9ICRzY29wZS5sb2NhbFZhcnMucGFnZVNpemU7XG4gICAgICAgICB9XG4gICAgICAgICBcbiAgICAgICAgIGlmICgkc2NvcGUuZmQucG9wdWxhdGVNZXRob2Q9PSdNJylcbiAgICAgICAgIHtcbiAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURhdGFQYWdpbmF0ZWRGaWx0ZXIoJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlLHVybE5leHQsdXJsUHJldixuZXdQYWdlLHBhZ2VTaXplLGxhbmcsJHNjb3BlLmZkLnNlYXJjaCwgJHNjb3BlLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEgPSBkYXRhLmRhdGEucmVzdWx0cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucmVzdG9yZUdyaWRTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5uZXh0UGFnZSA9IGRhdGEuZGF0YS5uZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wcmV2aW91c1BhZ2UgPSBkYXRhLmRhdGEucHJldmlvdXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnRvdGFsQ291bnQ9ZGF0YS5kYXRhLmNvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5jdXJyZW50UGFnZT1uZXdQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5udW1QYWdlcyA9IE1hdGguY2VpbCgkc2NvcGUubG9jYWxWYXJzLnRvdGFsQ291bnQvcGFnZVNpemUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS50b3RhbEl0ZW1zPSRzY29wZS5sb2NhbFZhcnMudG90YWxDb3VudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5zZXREYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFSTogW3tuYW1lOidyZXNvdXJjZUxpbmtEYXRhc2V0TGlzdCcsdmFsdWU6W3tuYW1lOidyZXNvdXJjZUlkJyx2YWx1ZTokc2NvcGUuZmQucmVsYXRlZH0se25hbWU6J3Jlc291cmNlUmVjb3JkSWQnLHZhbHVlOiRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWREYXRhc2V0UmVjb3JkSWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAse25hbWU6J3Jlc291cmNlUmVjb3JkSWRzJyx2YWx1ZTogbnVsbH0se25hbWU6J3Jlc291cmNlUmVjb3Jkc0FsbCcsdmFsdWU6JHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhfV19XSx3aWRnZXRJZDogJHNjb3BlLmZkLnByZXNlbnRhdGlvbklkLHRhc2tfZXhlY3V0ZV9pZDokc2NvcGUudGFza0V4ZWN1dGVJZH0pO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm9vdFNjb3BlLiRicm9hZGNhc3QoXCJTdGFydFRhc2tcIiskc2NvcGUuZmQucHJlc2VudGF0aW9uSWQrXCJDb21wbGV0ZWRcIiwkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgIH1cbiAgICAgICAgIGVsc2UgaWYgKCRzY29wZS5mZC5wb3B1bGF0ZU1ldGhvZD09J0EnKVxuICAgICAgICAge1xuICAgICAgICAgIHZhciB0YXNrX2luc3RhbmNlPTA7ICBcbiAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5mb3JtVHlwZT09J2knKSB0YXNrX2luc3RhbmNlID0gJHNjb3BlLnRhc2tJbml0aWF0ZUlkO1xuICAgICAgICAgIGVsc2UgdGFza19pbnN0YW5jZSA9ICRzY29wZS50YXNrRXhlY3V0ZUlkO1xuICAgIFxuICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGF0YVBhZ2luYXRlZEF1dG8oJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlLHVybE5leHQsdXJsUHJldixuZXdQYWdlLHBhZ2VTaXplLGxhbmcsJHNjb3BlLmZkLnByZXNlbnRhdGlvbklkLHRhc2tfaW5zdGFuY2UsJHNjb3BlLmxvY2FsVmFycy5mb3JtVHlwZSkudGhlbihmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YSA9IGRhdGEuZGF0YS5yZXN1bHRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXN0b3JlR3JpZFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLm5leHRQYWdlID0gZGF0YS5kYXRhLm5leHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnByZXZpb3VzUGFnZSA9IGRhdGEuZGF0YS5wcmV2aW91cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMudG90YWxDb3VudD1kYXRhLmRhdGEuY291bnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmN1cnJlbnRQYWdlPW5ld1BhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLm51bVBhZ2VzID0gTWF0aC5jZWlsKCRzY29wZS5sb2NhbFZhcnMudG90YWxDb3VudC9wYWdlU2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnBhZ2VTaXplID0gcGFnZVNpemU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLnRvdGFsSXRlbXM9JHNjb3BlLmxvY2FsVmFycy50b3RhbENvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnNldERhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVJOiBbe25hbWU6J3Jlc291cmNlTGluaycsdmFsdWU6W3tuYW1lOidyZXNvdXJjZUlkJyx2YWx1ZTokc2NvcGUuZmQucmVsYXRlZH0se25hbWU6J3Jlc291cmNlUmVjb3JkSWQnLHZhbHVlOiRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWREYXRhc2V0UmVjb3JkSWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAse25hbWU6J3Jlc291cmNlUmVjb3JkSWRzJyx2YWx1ZTogbnVsbH0se25hbWU6J3Jlc291cmNlUmVjb3Jkc0FsbCcsdmFsdWU6JHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhfV19XSx3aWRnZXRJZDogJHNjb3BlLmZkLnByZXNlbnRhdGlvbklkLHRhc2tfZXhlY3V0ZV9pZDokc2NvcGUudGFza0V4ZWN1dGVJZH0pO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm9vdFNjb3BlLiRicm9hZGNhc3QoXCJTdGFydFRhc2tcIiskc2NvcGUuZmQucHJlc2VudGF0aW9uSWQrXCJDb21wbGV0ZWRcIiwkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICBcbiAgICAgICAgIH1cbiAgICAgICAgfTtcblxuXG4gJHNjb3BlLmxvY2FsVmFycy5wYWdlQ2hhbmdlZCA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VEYXRhUGFnaW5hdGVkKCRzY29wZS5sb2NhbFZhcnMubmV4dFBhZ2UsJHNjb3BlLmxvY2FsVmFycy5wcmV2aW91c1BhZ2UsJHNjb3BlLmxvY2FsVmFycy5jdXJyZW50UGFnZSwkc2NvcGUubG9jYWxWYXJzLnBhZ2VTaXplKTtcbiAgICAgICAgIH07XG4gICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblx0Ly8gICAgICAgICAgIEdFVCBSRVNPVVJDRSBDT0xVTU5TXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxuICAkc2NvcGUubG9jYWxWYXJzLmdldFJlc291cmNlQ29sdW1ucyA9IGZ1bmN0aW9uIChnZXREYXRhKSB7XG4gICAgIHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG4gICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2U9PXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlID0gJHNjb3BlLmZkLnJlbGF0ZWQ7XG4gICAgIFxuICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlIT11bmRlZmluZWQgJiYgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlIT1udWxsKVxuICAgICB7XG4gICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlQ29sdW1ucygkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UsJHNjb3BlLnRhc2tJZCxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5jb2x1bW5EZWZzID0gZGF0YS5kYXRhO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGlmIChnZXREYXRhKSAkc2NvcGUubG9jYWxWYXJzLmdldFJlc291cmNlRGF0YVBhZ2luYXRlZCgkc2NvcGUubG9jYWxWYXJzLm5leHRQYWdlLCRzY29wZS5sb2NhbFZhcnMucHJldmlvdXNQYWdlLDEsJHNjb3BlLmxvY2FsVmFycy5wYWdlU2l6ZSk7ICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcbiAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICBcbiAgICAgfVxuICB9O1xuICAgICBcbiAgICAgJHNjb3BlLmxvY2FsVmFycy5nZXRSZXNvdXJjZURhdGFGaWx0ZXJlZCA9IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgJHNjb3BlLmZpbHRlciA9IHt9O1xuICAgICAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcblxuICAgICAgICAgICAvL3Njb3BlLmFjdGl2aXR5LmFjdGl2aXR5TWVzc2FnZSA9IFByb2Nlc3NpbmdTZXJ2aWNlLnNldEFjdGl2aXR5TXNnKCdSZXRyaXZpbmcgZGF0YSAnK3Njb3BlLnNlbGVjdGVkUmVzb3VyY2UpO1xuICAgICAgICAgIC8vJHNjb3BlLmZpbHRlciA9IFJlc291cmNlc0RhdGFTZXJ2aWNlLnByZXBhcmVSZXNvdXJjZVdpZGdldERhdGEoJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzLC0xKTtcbiAgICAgICAgIFxuICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2U9PW51bGwpIHtcbiAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZSA9ICRzY29wZS5mZC5yZWxhdGVkO1xuICAgICAgICAgIH1cblx0Ly9cdFx0UmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEYXRhRmlsdGVyZWQoJHNjb3BlLmZkLnJlbGF0ZWQsbGFuZywkc2NvcGUuZmlsdGVyKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHsvL01JR09SXG4gICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURhdGFGaWx0ZXJlZCgkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UsJHNjb3BlLnRhc2tJZCxsYW5nLCRzY29wZS5sb2NhbFZhcnMuZGFzaGJvYXJkLmRhdGEpLnRoZW4oZnVuY3Rpb24oZGF0YSkgey8vTUlHT1JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEgPSBkYXRhLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5jb2x1bW5EZWZzID0gZGF0YS5jb2x1bW5zRGVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXN0b3JlR3JpZFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblx0XHRcbiAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNldEZpZWxkID0gZnVuY3Rpb24oZm9ybSxuYW1lLHZhbHVlLG1zZylcbiAgICAgICAge1xuICAgICBcdFx0XHRcdFRhc2tEYXRhU2VydmljZS5zZXRGaWVsZChmb3JtLG5hbWUsdmFsdWUpO1xuICAgICAgICAgICAgaWYgKG1zZykgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKG1zZywnaW5mbycpO1xuICAgICAgICB9O1xuICAgICAgICBcbiAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dIaWRlU2VhcmNoRm9ybSA9IGZ1bmN0aW9uKClcbiAgICAgICAge1xuICAgICBcdFx0XHRcdGlmICgkc2NvcGUuZmQuc2hvd1NlYXJjaEZvcm0pICRzY29wZS5sb2NhbFZhcnMuZ2V0Rm9ybVJlc291cmNlKCk7XG4gICAgICAgIH07XG4gICAgICAgXG4gICAgICAgIFxuICAgIFxuICBpZiAoJHNjb3BlLmZkLnJlbGF0ZWQhPW51bGwgJiYgICEkc2NvcGUuZm9ybURlZmluaXRpb24gJiYgISRzY29wZS5sb2NhbFZhcnMuc2VhcmNoRm9ybURvd25sb2FkZWQpXG4gIHtcbiAgICAkc2NvcGUubG9jYWxWYXJzLmdldEZvcm1SZXNvdXJjZSgpO1xuICAgIFxuICB9ZWxzZSBpZiAoJHNjb3BlLmZkLnJlbGF0ZWQhPW51bGwgJiYgKCRzY29wZS5sb2NhbFZhcnMuc2hvd0Zvcm0gfHwgJHNjb3BlLmZkLmF1dG9TZWFyY2gpKVxuICB7XG4gICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0Rm9ybVJlc291cmNlKCk7XG4gICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0RGF0YXNldHMoKTtcbiAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VDb2x1bW5zKGZhbHNlKTtcbiAgICBcbiAgfWVsc2UgaWYoISRzY29wZS5sb2NhbFZhcnMuc2hvd0Zvcm0pXG4gIHtcbiAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93SGlkZVNlYXJjaEZvcm0oKTtcbiAgICAgJHNjb3BlLmxvY2FsVmFycy5nZXRSZXNvdXJjZUNvbHVtbnMoZmFsc2UpO1xuICAgICAkc2NvcGUubG9jYWxWYXJzLmdldERhdGFzZXRzKCk7XG4gICAgXG4gIH1cbiAgXG4gICAgXG4gICAgXG5cdFx0ICRzY29wZS5sb2NhbFZhcnMuc2F2ZUdyaWRTdGF0ZT0gZnVuY3Rpb24oKSB7XG4gICAgICAgdmFyIHN0YXRlID0gJHNjb3BlLmxvY2FsVmFycy5ncmlkQXBpLnNhdmVTdGF0ZS5zYXZlKCk7XG4gICAgICAgJHNjb3BlLmZkLmdyaWRTdGF0ZSA9IHN0YXRlO1xuICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShcIlRvIG1ha2UgY2hhbmdlcyBzdGljayBwbGVhc2Ugc2F2ZSBmb3JtXCIsJ2luZm8nKTtcbiAgICAgICAgICAgICBcbiAgICB9O1xuICBcbiAgICRzY29wZS5sb2NhbFZhcnMucmVzdG9yZUdyaWRTdGF0ZT0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKCRzY29wZS5mZC5ncmlkU3RhdGUhPW51bGwpXG4gICAge1xuICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLmdyaWRBcGkhPXVuZGVmaW5lZClcbiAgICAgICB7XG4gICAgICBcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkQXBpLnNhdmVTdGF0ZS5yZXN0b3JlKCRzY29wZSwkc2NvcGUuZmQuZ3JpZFN0YXRlKTtcbiAgICAgICAgXG4gICAgICAgfWVsc2VcbiAgICAgICB7XG4gICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc3RvcmVHcmlkU3RhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgfVxuICAgIH1cbiAgfTtcbiAgICAgICAgXG59XTsgLy9jb250cm9sZXJfRU5EXG5cbiAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXG4gICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0Tm90aWZpY2F0aW9uTGlzdC5odG1sJyxcbiAgICAgICAgICAgIGNvbnRyb2xsZXI6IGNvbnRyb2xsZXIsXG4gICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XG5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAkcm9vdFNjb3BlLiRicm9hZGNhc3QoXCJXaWRnZXRcIitzY29wZS5mZC5QcmVzZW50YXRpb25JZCtcIlJlYWR5XCIsbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgXG4gICAgICAgICAgICAgfVxuICAgICAgICAgICAgIFxuICAgICAgICAgICAgIFxuICB9IFxuICAgICAgICBcbn07XG4ndXNlIHN0cmljdCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3ROb3RpZmljYXRpb25TZW5kV2lkZ2V0IChUYXNrRGF0YVNlcnZpY2UpIHtcclxuICAgXHJcbiAgIHZhciBjb250cm9sbGVyID0gWyckc2NvcGUnLCAnJHVpYk1vZGFsJywgJyRzdGF0ZScsJyRzdGF0ZVBhcmFtcycsJyRlbGVtZW50JywnZHJhZ3VsYXJTZXJ2aWNlJywnJHRpbWVvdXQnLCdDb2Rlc1NlcnZpY2UnLCdSZXNvdXJjZXNEYXRhU2VydmljZScsJyRyb290U2NvcGUnLCdQcm9jZXNzaW5nU2VydmljZScsJ01lc3NhZ2luZ1NlcnZpY2UnLCdHcmlkc3RlclNlcnZpY2UnLCdXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlJywnQ09ERVNfQ09OU1QnLFxyXG4gICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoJHNjb3BlLCR1aWJNb2RhbCwkc3RhdGUsJHN0YXRlUGFyYW1zLCRlbGVtZW50LGRyYWd1bGFyU2VydmljZSwkdGltZW91dCxDb2Rlc1NlcnZpY2UsUmVzb3VyY2VzRGF0YVNlcnZpY2UsJHJvb3RTY29wZSxQcm9jZXNzaW5nU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSxXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLENPREVTX0NPTlNUKSB7XHJcbiAgICAgIFxyXG4gICAgICAkc2NvcGUuZmQubG9jYWxWYXJzID0ge307XHJcbiAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VhcmNoRm9ybURvd25sb2FkZWQgPSBmYWxzZTtcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtTG9hZGVkPWZhbHNlO1xyXG4gICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNyY190eXBlX3RleHQ9Q09ERVNfQ09OU1QuX1BPUFVMQVRFX1RZUEVfO1xyXG4gICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmFuaW1hdGlvbnNFbmFibGVkID0gdHJ1ZTtcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRUeXBlID0gMTtcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5oaWRlUG9wdWxhdGVNZXRob2QgPSB0cnVlO1xyXG4gICAgICBcclxuICAgICAgaWYgKCRzY29wZS5mZCE9dW5kZWZpbmVkKVxyXG4gICAgICB7XHJcbiAgICAgICAgICAgJHNjb3BlLmZkLnBvcHVsYXRlTWV0aG9kID0gXCJNXCI7XHJcbiAgICAgIH1lbHNlXHJcbiAgICAgIHtcclxuICAgICAgICAgICAkc2NvcGUuZmQ9e3BvcHVsYXRlTWV0aG9kIDogXCJNXCJ9O1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2U7XHJcbiAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZHN0ZXJUeXBlPVwicmVzb3VyY2VcIjtcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVR5cGU9XCJub3RpZmljYXRpb25cIjtcclxuICAgICBcclxuICAgICAgICAgIFxyXG4gICAgIGlmICgkc2NvcGUubG9jYWxWYXJzID09IHVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycz17fTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dNZW51ID0gZmFsc2VcclxuICAgICAgXHJcbiAgICAgICRzY29wZS5sb2NhbFZhcnMudG9nZ2xlRHJvcGRvd24gPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dNZW51ID0gICRzY29wZS5sb2NhbFZhcnMuc2hvd01lbnUgPyBmYWxzZTogdHJ1ZSBcclxuICAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgXHJcbiAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkID0ge1xyXG4gIFx0XHRcdFx0aWQ6ICcxJyxcclxuICBcdFx0XHRcdG5hbWU6ICdIb21lJyxcclxuICBcdFx0XHRcdHdpZGdldHM6IEdyaWRzdGVyU2VydmljZS5nZXRFbXB0eURhdGFzZXRGb3JtKClcclxuXHRcdFx0XHR9IDtcclxuICAgICAgICBcclxuICAgICBcclxuICBcclxuICAgICAgICAvLyRzY29wZS50YXNrSWQ9JHN0YXRlUGFyYW1zLmlkO1xyXG4gICAgICAgICRzY29wZS50YXNrSWQ9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZURlZklkO1xyXG4gICAgICAgIGlmICgkc2NvcGUudGFza0lkPT11bmRlZmluZWQpICAkc2NvcGUudGFza0lkPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VEZWZJZF9pZDtcclxuICAgICAgICBpZiAoJHNjb3BlLnRhc2tJZD09dW5kZWZpbmVkKSAkc2NvcGUudGFza0lkPTA7XHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy50YXNrSWQ9JHNjb3BlLnRhc2tJZDtcclxuICAgICAgICAkc2NvcGUuZmQucGFyZW50RGF0YXNldERlZklkPSRzY29wZS5mZC5yZWxhdGVkO1xyXG4gICAgICAgICRzY29wZS5wcmV2VGFza0V4ZUlkID0gICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucHJldl90YXNrX2lkO1xyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybVR5cGU9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX3R5cGU7XHJcbiAgICAgICAgJHNjb3BlLnNvdXJjZV90eXBlPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uc291cmNlX3R5cGU7XHJcbiAgICAgICAgJHNjb3BlLnRhc2tJbml0aWF0ZUlkID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50YXNrX2luaXRpYXRlX2lkO1xyXG4gICAgICAgICRzY29wZS50YXNrRXhlY3V0ZUlkID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50YXNrX2V4ZWN1dGVfaWQ7XHJcbiAgICAgICAgJHNjb3BlLmZvcm1EZWZpbml0aW9uID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb247XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgICgkc2NvcGUuZm9ybURlZmluaXRpb249PXVuZGVmaW5lZCkgJHNjb3BlLmZvcm1EZWZpbml0aW9uPWZhbHNlO1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZD0wO1xyXG4gICAgICAgIGlmICgkc2NvcGUudGFza0luaXRpYXRlSWQ9PXVuZGVmaW5lZClcclxuICAgICAgIHtcclxuICAgICAgICAkc2NvcGUudGFza0luaXRpYXRlSWQgPTA7XHJcbiAgICAgICAgXHJcbiAgICAgICB9XHJcbiAgICAgICBpZiAoJHNjb3BlLnRhc2tFeGVjdXRlSWQ9PXVuZGVmaW5lZClcclxuICAgICAgIHtcclxuICAgICAgICAkc2NvcGUudGFza0V4ZWN1dGVJZCA9MDtcclxuICAgICAgICBcclxuICAgICAgIH1cclxuICAgICAgICBpZiAoJHNjb3BlLnByZXZUYXNrRXhlSWQ9PXVuZGVmaW5lZClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAkc2NvcGUucHJldlRhc2tFeGVJZCA9MDtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgLy9yZWdpc3RlciB3aWRnZXQgXHJcbiAgICAgdmFyIG91dF9maWVsZHMgPSBbJ3Jlc291cmNlSWQnXVxyXG4gICAgIHZhciB3aWRnZXREZWZpbml0aW9uID0ge0RFSTogW3snbmFtZSc6J3Jlc291cmNlTGluaycsJ3ZhbHVlJzpbe25hbWU6J3Jlc291cmNlSWQnLHZhbHVlOiRzY29wZS5mZC5yZWxhdGVkfSx7bmFtZToncmVzb3VyY2VSZWNvcmRJZCcsdmFsdWU6Jyd9XX1dLGFjdGlvbnM6IFt7bmFtZTonUHJlcGFyZURhdGEnLHN0YXR1czpmYWxzZX1dLG5hbWU6ICd2aWV3UmVzb3VyY2VXaWRnZXQnLHdpZGdldElkOiAkc2NvcGUuZmQucHJlc2VudGF0aW9uSWQsdGFza19pbml0aWF0ZV9pZDokc2NvcGUudGFza0luaXRpYXRlSWQsdGFza19leGVjdXRlX2lkOiRzY29wZS50YXNrRXhlY3V0ZUlkLHRhc2tJZDogICRzY29wZS5sVGFza0lkLHJlc291cmNlRGVmSWQgOiAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UsIG91dHB1dDpvdXRfZmllbGRzLCB9O1xyXG4gICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmxvY2FsV2lkZ2V0SWQgPSBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnJlZ2lzdGVyV2lkZ2V0KHdpZGdldERlZmluaXRpb24pO1xyXG4gICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5sb2NhbElkPSRzY29wZS5mZC5sb2NhbFZhcnMubG9jYWxXaWRnZXRJZDsgIFx0XHRcclxuICAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93UHJvcGVydGllcz1mdW5jdGlvbihkYXRhc2V0TWFwcGVyVHlwZSxzaG93UHJvcGVydGllc1JpZ2h0KVxyXG4gICAgICB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGUgPSBkYXRhc2V0TWFwcGVyVHlwZTtcclxuICAgICAgICAgICAgfWVsc2VcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCAkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlIT1kYXRhc2V0TWFwcGVyVHlwZSkgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSA9IGRhdGFzZXRNYXBwZXJUeXBlO1xyXG4gICAgICAgICAgICAgICBlbHNlIFxyXG4gICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT0wO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzaG93UHJvcGVydGllc1JpZ2h0KSAkc2NvcGUuZ3NydmMuc2V0RmllbGRQcm9wZXJ0aWVzKCRzY29wZS5mZCk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZ2V0Rm9ybVJlc291cmNlT3JpZ2luYWwgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQucHJlc2VudGF0aW9uSWQ9PW51bGwpXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLnByZXNlbnRhdGlvbklkID0gMDtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZUZvcm0oJHNjb3BlLmZkLnJlbGF0ZWQsXCJpXCIsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbj0gZGF0YS5kYXRhLnJlc291cmNlRGVmaW5pdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dD1kYXRhLmRhdGEud2lkZ2V0cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lPSRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VXaWRnZXREZWZpbml0aW9uLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLnJlbGF0ZWRJZD0kc2NvcGUuZmQucmVsYXRlZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ucHJlc2VudGF0aW9uSWQ9JHNjb3BlLmZkLnByZXNlbnRhdGlvbklkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5zcmNfdHlwZV9pZD0kc2NvcGUuZmQucG9wdWxhdGVUeXBlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5zcmNfdHlwZV90ZXh0PSRzY29wZS5mZC5sb2NhbFZhcnMuc3JjX3R5cGVfdGV4dFskc2NvcGUuZmQucG9wdWxhdGVUeXBlXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ucGFyZW50RWxlbWVudElkPSRzY29wZS5mZC5wYXJlbnRFbGVtZW50SWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbT17J25hbWUnOiRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VXaWRnZXREZWZpbml0aW9uLm5hbWUsJ3JlbGF0ZWRJZCc6JHNjb3BlLmZkLnJlbGF0ZWQsICdwcmVzZW50YXRpb25JZCc6JHNjb3BlLmZkLnByZXNlbnRhdGlvbklkICAsJ3NyY190eXBlX2lkJzokc2NvcGUuZmQucG9wdWxhdGVUeXBlLCdzcmNfdHlwZV90ZXh0Jzokc2NvcGUuZmQubG9jYWxWYXJzLnNyY190eXBlX3RleHRbJHNjb3BlLmZkLnBvcHVsYXRlVHlwZV0sJ3BhcmVudEVsZW1lbnRJZCc6JHNjb3BlLmZkLnBhcmVudEVsZW1lbnRJZH07XHJcbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLndJdGVtVmFsdWU9ZGF0YS5kYXRhLndpZGdldHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9ICRlbGVtZW50LmNoaWxkcmVuKCkuZXEoMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JpZHN0ZXJTZXJ2aWNlLnNldHVwRHJhZ3VsYXIoJHNjb3BlLmZkLndJdGVtVmFsdWUsY29udGFpbmVyLCdyb3dzLScrJHNjb3BlLmZkLnByZXNlbnRhdGlvbklkLCdyb3ctJyskc2NvcGUuZmQubG9jYWxWYXJzLmdyaWRzdGVyVHlwZSsnLWhhZGxlJyx0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL01JR09SIC0gYml0bm8gLSBET0JJTyBSRVNPVVJDRVJFQ09SRC1JRCBaQSBCUk9BRENBU1QgIC0gQUREX1JFU09VUkNFIFdJREdFVFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2Uuc2V0RGF0YSh7d2lkZ2V0SWQ6JHNjb3BlLmZkLnByZXNlbnRhdGlvbklkLCBERUk6IFt7J25hbWUnOidyZXNvdXJjZUxpbmsnLCd2YWx1ZSc6W3tuYW1lOidyZXNvdXJjZUlkJyx2YWx1ZTokc2NvcGUuZmQucmVsYXRlZH0se25hbWU6J3Jlc291cmNlUmVjb3JkSWQnLHZhbHVlOiRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZH1dfV19KTtcclxuXHRcdFx0XHRcdFx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlYXJjaEZvcm1Eb3dubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybUxvYWRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRGb3JtUmVzb3VyY2UgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLnByZXNlbnRhdGlvbklkPT1udWxsKVxyXG4gICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnByZXNlbnRhdGlvbklkPTA7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybUxvYWRpbmc9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRm9ybUV4dGVuZGVkKCRzY29wZS5mZC5yZWxhdGVkLCRzY29wZS50YXNrSWQsJHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtVHlwZSwkc2NvcGUuZmQucHJlc2VudGF0aW9uSWQsXCJ3XCIsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VXaWRnZXREZWZpbml0aW9uPSBkYXRhLmRhdGEucmVzb3VyY2VEZWZpbml0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQgPSAgZGF0YS5kYXRhLndpZGdldHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWU9JHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVdpZGdldERlZmluaXRpb24ubmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ucmVsYXRlZElkPSRzY29wZS5mZC5yZWxhdGVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5wcmVzZW50YXRpb25JZD0kc2NvcGUuZmQucHJlc2VudGF0aW9uSWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLnNyY190eXBlX2lkPSRzY29wZS5mZC5wb3B1bGF0ZVR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLnNyY190eXBlX3RleHQ9JHNjb3BlLmZkLmxvY2FsVmFycy5zcmNfdHlwZV90ZXh0WyRzY29wZS5mZC5wb3B1bGF0ZVR5cGVdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5wYXJlbnRFbGVtZW50SWQ9JHNjb3BlLmZkLnBhcmVudEVsZW1lbnRJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtPXsnbmFtZSc6JHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVdpZGdldERlZmluaXRpb24ubmFtZSwncmVsYXRlZElkJzokc2NvcGUuZmQucmVsYXRlZCwgJ3ByZXNlbnRhdGlvbklkJzokc2NvcGUuZmQucHJlc2VudGF0aW9uSWQgICwnc3JjX3R5cGVfaWQnOiRzY29wZS5mZC5wb3B1bGF0ZVR5cGUsJ3NyY190eXBlX3RleHQnOiRzY29wZS5mZC5sb2NhbFZhcnMuc3JjX3R5cGVfdGV4dFskc2NvcGUuZmQucG9wdWxhdGVUeXBlXSwncGFyZW50RWxlbWVudElkJzokc2NvcGUuZmQucGFyZW50RWxlbWVudElkfTtcclxuIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLndJdGVtVmFsdWU9ZGF0YS5kYXRhLndpZGdldHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWFyY2hGb3JtRG93bmxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybUxvYWRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtTG9hZGluZz1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250YWluZXIgPSAkZWxlbWVudC5jaGlsZHJlbigpLmVxKDApLmNoaWxkcmVuKCkuZXEoMSkuY2hpbGRyZW4oKS5lcSgwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyaWRzdGVyU2VydmljZS5zZXR1cERyYWd1bGFyKCRzY29wZS5mZC53SXRlbVZhbHVlLGNvbnRhaW5lclswXSwncm93cy0nKyRzY29wZS5mZC5wcmVzZW50YXRpb25JZCwncm93LScrJHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkc3RlclR5cGUrJy1oYW5kbGUnLHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybUxvYWRpbmc9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgfTtcclxuICAgICAgXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRGb3JtUmVzb3VyY2VXaXRoRGF0YSA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5wcmVzZW50YXRpb25JZD09bnVsbCB8fCAkc2NvcGUuZmQucHJlc2VudGF0aW9uSWQ9PXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQucHJlc2VudGF0aW9uSWQgPSAwO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQucGFyZW50RWxlbWVudElkPT1udWxsIHx8ICRzY29wZS5mZC5wYXJlbnRFbGVtZW50SWQ9PXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQucGFyZW50RWxlbWVudElkID0gMDtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VGb3JtRXh0ZW5kZWRXaXRoRGF0YSgkc2NvcGUuZmQucmVsYXRlZCwkc2NvcGUudGFza0luaXRpYXRlSWQsJHNjb3BlLnRhc2tFeGVjdXRlSWQsJHNjb3BlLmZkLnBvcHVsYXRlVHlwZSwkc2NvcGUuZmQucGFyZW50RWxlbWVudElkLCRzY29wZS5mZC5wcmVzZW50YXRpb25JZCwkc2NvcGUucHJldlRhc2tFeGVJZCwkc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1UeXBlLCRzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0VHlwZSwkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQsXCJ3XCIsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5wcmVzZW50YXRpb25JZF0gPSAgZGF0YS5kYXRhLmZvcm1fZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VXaWRnZXREZWZpbml0aW9uPSBkYXRhLmRhdGEucmVzb3VyY2VEZWZpbml0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQ9ZGF0YS5kYXRhLndpZGdldHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQgPSBkYXRhLmRhdGEucmVzb3VyY2VSZWNvcmRJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldFJlY29yZElkPSRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWU9JHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVdpZGdldERlZmluaXRpb24ubmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ucmVsYXRlZElkPSRzY29wZS5mZC5yZWxhdGVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5wcmVzZW50YXRpb25JZD0kc2NvcGUuZmQucHJlc2VudGF0aW9uSWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLnNyY190eXBlX2lkPSRzY29wZS5mZC5wb3B1bGF0ZVR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLnNyY190eXBlX3RleHQ9JHNjb3BlLmZkLmxvY2FsVmFycy5zcmNfdHlwZV90ZXh0WyRzY29wZS5mZC5wb3B1bGF0ZVR5cGVdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5wYXJlbnRFbGVtZW50SWQ9JHNjb3BlLmZkLnBhcmVudEVsZW1lbnRJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtPXsnbmFtZSc6JHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVdpZGdldERlZmluaXRpb24ubmFtZSwncmVsYXRlZElkJzokc2NvcGUuZmQucmVsYXRlZCwgJ3ByZXNlbnRhdGlvbklkJzokc2NvcGUuZmQucHJlc2VudGF0aW9uSWQgICwnc3JjX3R5cGVfaWQnOiRzY29wZS5mZC5wb3B1bGF0ZVR5cGUsJ3NyY190eXBlX3RleHQnOiRzY29wZS5mZC5sb2NhbFZhcnMuc3JjX3R5cGVfdGV4dFskc2NvcGUuZmQucG9wdWxhdGVUeXBlXSwncGFyZW50RWxlbWVudElkJzokc2NvcGUuZmQucGFyZW50RWxlbWVudElkfTtcclxuIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRzY29wZS5mZC53SXRlbVZhbHVlPWRhdGEuZGF0YS53aWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAkdGltZW91dChmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybUxvYWRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtTG9hZGluZz1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VhcmNoRm9ybURvd25sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIH0pOyAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2Uuc2V0RGF0YSh7d2lkZ2V0SWQ6JHNjb3BlLmZkLnByZXNlbnRhdGlvbklkLCBERUk6IFt7J25hbWUnOidyZXNvdXJjZUxpbmsnLCd2YWx1ZSc6W3tuYW1lOidyZXNvdXJjZUlkJyx2YWx1ZTokc2NvcGUuZmQucmVsYXRlZH0se25hbWU6J3Jlc291cmNlUmVjb3JkSWQnLHZhbHVlOiRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZH1dfV19KTtcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udGFpbmVyID0gJGVsZW1lbnQuY2hpbGRyZW4oKS5lcSgwKS5jaGlsZHJlbigpLmVxKDEpLmNoaWxkcmVuKCkuZXEoMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JpZHN0ZXJTZXJ2aWNlLnNldHVwRHJhZ3VsYXIoJHNjb3BlLmZkLndJdGVtVmFsdWUsY29udGFpbmVyWzBdLCdyb3dzLScrJHNjb3BlLmZkLnByZXNlbnRhdGlvbklkLCdyb3ctJyskc2NvcGUuZmQubG9jYWxWYXJzLmdyaWRzdGVyVHlwZSsnLWhhbmRsZScsdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZXRGaWVsZCA9IGZ1bmN0aW9uKGZvcm0sbmFtZSx2YWx1ZSxtc2cpXHJcbiAgICAgICAge1xyXG4gICAgIFx0XHRcdFx0VGFza0RhdGFTZXJ2aWNlLnNldEZpZWxkKGZvcm0sbmFtZSx2YWx1ZSk7XHJcbiAgICAgICAgICAgIGlmIChtc2cpIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShtc2csJ2luZm8nKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2V0U2VsZWN0ZWREYXRhc2V0ID0gZnVuY3Rpb24oaWQpICB7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW09PXVuZGVmaW5lZCkgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbT17fTtcclxuICAgICAgICAgICAgICB2YXIgcG9zID0gJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TGlzdC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZihpZCk7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgaWYgKHBvcz49MCl7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLmlkID0gJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TGlzdFtwb3NdLmlkO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lID0gJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TGlzdFtwb3NdLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkRGF0YXNldCA9ICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldExpc3RbcG9zXTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQgPSAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWUgKycgKCcrJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5pZCArJyknXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtX2M9JHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIC8vIFBPUFVOSSBMSVNUVSBERUZJTklDSUpBIE9EIFJFU1VSU0EgKFJFU09VUkNFUyBMSVNUKVxyXG5cdFx0XHRcdFx0JHNjb3BlLmZkLmxvY2FsVmFycy5nZXREYXRhc2V0cyA9IGZ1bmN0aW9uKCkgIHtcclxuXHRcdFx0XHRcdFx0XHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRMaXN0PT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldExpc3Q9W107XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmTGlzdEJ5VHlwZShsYW5nLCdub3RpZmljYXRpb24nKS50aGVuKFxyXG5cdFx0XHRcdFx0XHRmdW5jdGlvbihkYXRhKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldExpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5yZWxhdGVkIT1udWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZXRTZWxlY3RlZERhdGFzZXQoJHNjb3BlLmZkLnJlbGF0ZWQpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0IFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0IH0pO1xyXG5cdFx0XHRcdFx0fVxyXG4gICAgICAgICAgXHJcbiAgaWYgKCRzY29wZS5mZC5yZWxhdGVkIT1udWxsICYmICAhJHNjb3BlLmZvcm1EZWZpbml0aW9uICYmICEkc2NvcGUuZmQubG9jYWxWYXJzLnNlYXJjaEZvcm1Eb3dubG9hZGVkKVxyXG4gIHtcclxuICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdldEZvcm1SZXNvdXJjZVdpdGhEYXRhKCk7XHJcbiAgICAvLyAkc2NvcGUuZmQubG9jYWxWYXJzLmdldERhdGFzZXRzKCk7XHJcbiAgICAvLyAkc2NvcGUuZmQubG9jYWxWYXJzLnNldFNlbGVjdGVkRGF0YXNldCgkc2NvcGUuZmQucmVsYXRlZCk7XHJcbiAgICBcclxuICB9ZWxzZSBpZiAoJHNjb3BlLmZkLnJlbGF0ZWQhPW51bGwpXHJcbiAge1xyXG4gICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZ2V0Rm9ybVJlc291cmNlKCk7XHJcbiAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXREYXRhc2V0cygpO1xyXG4gICAgIC8vJHNjb3BlLmZkLmxvY2FsVmFycy5zZXRTZWxlY3RlZERhdGFzZXQoJHNjb3BlLmZkLnJlbGF0ZWQpO1xyXG4gICAgXHJcbiAgfVxyXG4gIFxyXG4gIFxyXG4gICAgICB9XTtcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdE5vdGlmaWNhdGlvblNlbmRXaWRnZXQuaHRtbCcsXHJcbiAgICAgICAgICAgIGNvbnRyb2xsZXI6IGNvbnRyb2xsZXIsXHJcbiAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcclxuXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgIC8vIHNjb3BlLnJlc291cmNlRGF0YSA9IHt9O1xyXG4gIFxyXG4gICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucHJlcGFyZVJlc291cmNlRGF0YSA9IGZ1bmN0aW9uKHJlc291cmNlUmVjb3JkSWQpe1xyXG5cclxuICAgICAgICAgICAgIHNjb3BlLmZkLml0ZW1WYWx1ZSA9ICBSZXNvdXJjZXNEYXRhU2VydmljZS5wcmVwYXJlUmVzb3VyY2VXaWRnZXREYXRhKHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQscmVzb3VyY2VSZWNvcmRJZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5wcm9jZXNzV2lkZ2V0RGVwZW5kZW5jaWVzID0gZnVuY3Rpb24oKSB7IC8vLS0tLS0gIGt0VXBsb2FkZXIgIC0tLS0tXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgaWYgKHNjb3BlLmZkLnRJdGVtVmFsdWUhPXVuZGVmaW5lZCkgXHJcbiAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPCBzY29wZS5mZC50SXRlbVZhbHVlLmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgICAgICAgIHZhciBsaW5rZWRXaWRnZXRJZD1zY29wZS5mZC50SXRlbVZhbHVlW2ldLndpZGdldElkOyAgLy8gbGlua2VkV2lkZ2V0SWQ9IFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UuZ2V0TG9jYWxXaWRnZXRJZChsaW5rZWRXaWRnZXRJZCk7Ly9NSUdPUiAtIG1vcmFtIGRvYml0aSBsb2NhbHdpZGdldElkIG9kIHZlemFub2cgV2lkZ2V0SWQgXHJcbiAgICAgICAgICAgICAgICB2YXIgbGlua2VkSXRlbSA9ICdyZXNvdXJjZUxpbmsnICAgICAgICAgICAgICAgICAgICAgIC8vdmFyIGxpbmtlZEl0ZW0gPSBzY29wZS5mZC50SXRlbVZhbHVlW2ldLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKGxpbmtlZFdpZGdldElkIT11bmRlZmluZWQgJiYgbGlua2VkV2lkZ2V0SWQhPW51bGwgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wO2o8c2NvcGUuZmQudEl0ZW1WYWx1ZVtpXS5ERUkubGVuZ3RoO2orKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHNjb3BlLmZkLnRJdGVtVmFsdWVbaV0uREVJW2pdLm5hbWU9PWxpbmtlZEl0ZW0pICYmIChzY29wZS5mZC50SXRlbVZhbHVlW2ldLkRFSVtqXS52YWx1ZT09dHJ1ZSkpIHsgLy9TQ09QRS5PTiBzYW1vIGthZCBqZSBERUkgdmFsdWUgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxpbmtlZEl0ZW0gPSBzY29wZS5mZC50SXRlbVZhbHVlW2ldLkRFSVtqXS5uYW1lOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInZpZXcgXCIrc2NvcGUuZmQucHJlc2VudGF0aW9uSWQrXCIgc2UgdmV6ZSBuYSBzZXJ2ZXJza2kgXCIgKyBsaW5rZWRXaWRnZXRJZCk7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLiRvbignRXZlbnQnK2xpbmtlZFdpZGdldElkK2xpbmtlZEl0ZW0sZnVuY3Rpb24oZXZlbnQsIGRhdGEpeyAgLy9pZGUgcG8gc3ZpbSB2ZXphbmltIHdpZGdldGltYSBpIGRvZGFqIHNjb3BlLm9uICAgLy9NSUdPUiBUT0RPIC0gRE9EQVRJIFNBTU8gVSBTTFVDQUpVIERBIEpFIERFSSBWQUxVRSA9IFRSVUUgISEhISAgICAgPDw8PDw8PDw8PDw8PCAhISEhISEhISFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwidmlldyBcIisgc2NvcGUuZmQucHJlc2VudGF0aW9uSWQrXCIgZG9iaW8gZXZlbnQgXCIgKyBldmVudC5uYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrPTA7azxkYXRhLmxlbmd0aDtrKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhW2tdLm5hbWU9PSdyZXNvdXJjZVJlY29yZElkJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmxpbmtlZFJlc291cmNlSWQgPSBkYXRhW2tdLnZhbHVlOyAvL1RPRE8gLSBJTEogLSBvdm8gYmkgaXN0byB0cmViYWxhIGJpdGkgdmFyaWphYmxhIC0gc3RhIGFrbyBwcm9tamVuaW0gaW50ZXJmYWNlIG9kbm9zbm8gbmF6aXYgcG9samEhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnJlc291cmNlUmVjb3JkSWQgPSBzY29wZS5mZC5sb2NhbFZhcnMubGlua2VkUmVzb3VyY2VJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhW2tdLm5hbWU9PSdyZXNvdXJjZUlkJykgc2NvcGUuZmQubG9jYWxWYXJzLmxpbmtlZFJlc291cmNlRGVmSWQgPSBkYXRhW2tdLnZhbHVlOyAgLy9UT0RPLSBJTEogLSBvdm8gYmkgaXN0byB0cmViYWxhIGJpdGkgdmFyaWphYmxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2dldCBzZWxlY3RlZFJlY29yZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3Njb3BlLmdldEZvcm1SZXNvdXJjZVdpdGhEYXRhKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vXHRkYXRhOiB7cmVzb3VyY2VfZGVmX2lkOnNjb3BlLmZkLmxpbmtlZFJlc291cmNlRGVmSWQscmVzb3VyY2VfaWQ6c2NvcGUuZmQubGlua2VkUmVzb3VyY2VJZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIC8vb25fRU5EXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0vL2lmXHJcbiAgICAgICAgICAgICAgICAgICAgfS8vZm9yIGpcclxuICAgICAgICAgICAgICAgIH0vL2lmXHJcblxyXG4gICAgICAgICAgICAgLy8gZWxzZSB7ICBzY29wZS5mZC50SXRlbVZhbHVlLnNwbGljZShpLDEpOyAgfSAvLyBuaWplIG1pIGphc25vIHphc3RvIHNhbSByYWRpbyBTUExJQ0VcclxuICAgICAgICAgICAgfSAvL2ZvciBpXHJcbiAgICAgIH0vL2ZuICBwcjBjZXNzV2lkZ2V0RGVwZW5kZWNpZXMgLS0tLS0tLS0tLS0tLSAgICBrdFZpZXdTaW5nbGVSZXNvdXJjZVdpZGdldFxyXG5cclxuICAgICAgICAgIGlmIChzY29wZS5mZC5wcmVzZW50YXRpb25JZD09dW5kZWZpbmVkIHx8IHNjb3BlLmZkLnByZXNlbnRhdGlvbklkPT1udWxsKSBzY29wZS5mZC5wcmVzZW50YXRpb25JZD0wO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuZm9ybVR5cGU9c2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fdHlwZTtcclxuICAgICAgICAgIC8qXHJcbiAgICAgICAgICBUYXNrRGF0YVNlcnZpY2UuZ2V0V2lkZ2V0RGVwZW5kZW5jaWVzKHNjb3BlLnRhc2tJZCxzY29wZS5mZC5wcmVzZW50YXRpb25JZCxzY29wZS5mZC5sb2NhbFZhcnMuZm9ybVR5cGUpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQudEl0ZW1WYWx1ZT1kYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnByb2Nlc3NXaWRnZXREZXBlbmRlbmNpZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICBzY29wZS4kb24oJ0luaXRpYXRlVGFza1Bvc3RQcm9jZXNzJyxmdW5jdGlvbihldmVudCwgZGF0YSl7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmIChkYXRhIT11bmRlZmluZWQpe1xyXG4gICAgICAgICAgICAgIGZvcih2YXIgaT0wO2k8ZGF0YS5sZW5ndGg7aSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQucHJlc2VudGF0aW9uSWQ9PWRhdGFbaV0ud2lkZ2V0SWQpIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2Uuc2V0RGF0YShkYXRhW2ldKTsgXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vc2V0IGFsbCBlbGVtZW50cyByZWFkLW9ubHlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5zZXRGaWVsZChzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0LCdyZWFkT25seScsdHJ1ZSk7XHJcbiAgICAgICAgICB9KTtcclxuICBcclxuICAgICAgfSAgICAgXHJcbiAgICB9XHJcbiAgICAgICAgXHJcbn07XG4ndXNlIHN0cmljdCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3ROdW1iZXIgKCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXHJcblx0XHRjb250cm9sbGVyOiBmdW5jdGlvbiAoJHNjb3BlLCRyb290U2NvcGUsUmVzb3VyY2VzRGF0YVNlcnZpY2UsQ29kZXNTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlLCR0ZW1wbGF0ZUNhY2hlLCRjb21waWxlLCRlbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2U7XHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycyA9ICB7fTtcclxuICAgICAgICAgICAgICAgICAkc2NvcGVbJHNjb3BlLmZkLmlkXSAgPSB7J2ZkJzogJHNjb3BlLmZkfVxyXG4gICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZm9ybURhdGE9PXVuZGVmaW5lZCkgICRzY29wZS5mb3JtRGF0YSA9IFt7fV07XHJcblx0XHRcdFx0IGlmICgkc2NvcGUuZmQubG9jYWxWYXJzPT11bmRlZmluZWQpICAkc2NvcGUuZmQubG9jYWxWYXJzPXt9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnM9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLlBhcmFtZXRlcnMgPSB7fTtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuc2V0U3RlcCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuc3RlcFZhbHVlID1wYXJzZUZsb2F0KE1hdGgucG93KDAuMSwkc2NvcGUuZmQuUGFyYW1ldGVycy5Ob09mRGVjaW1hbHMpKS50b0ZpeGVkKCRzY29wZS5mZC5QYXJhbWV0ZXJzLk5vT2ZEZWNpbWFscyk7XHJcbiAgICAgICAgICAgICAgICAgfTsgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuc3RlcFZhbHVlPT1udWxsIHx8ICRzY29wZS5mZC5zdGVwVmFsdWU9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLnNldFN0ZXAoKTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBcclxuXHRcdFx0ICAgXHQkc2NvcGUubXlzY29wZT0kc2NvcGVcclxuXHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5TZXREZWZhdWx0ID0gZnVuY3Rpb24oKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5EZWZhdWx0VmFsdWUgPSB7dmFsdWU6JHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VhcmNoPVtcclxuXHRcdFx0ICBcdHtpZDoxLGZpbHRlcjonZ3QnLGNvZGVfbmFtZTonZ3RlJyxuYW1lOlwiR3JlYXRlciB0aGFuXCIsaWNvbjpcImZhIGZhLWNoZXZyb24tcmlnaHRcIn0sXHJcblx0XHRcdCAgXHR7aWQ6MixmaWx0ZXI6J2JldHdlZW4nLGNvZGVfbmFtZTonYmV0d2VlbicsbmFtZTpcIkJldHdlZW5cIixpY29uOlwiZmEgZmEtZXhwYW5kXCJ9LFxyXG5cdFx0XHQgIFx0e2lkOjMsZmlsdGVyOidsdCcsY29kZV9uYW1lOidsdGUnLG5hbWU6XCJMb3dlciB0aGFuXCIsaWNvbjpcImZhIGZhLWNoZXZyb24tbGVmdFwifSxcclxuXHRcdFx0ICBcdHtpZDo0LGZpbHRlcjonZXEnLGNvZGVfbmFtZTonZXEnLG5hbWU6XCJFcXVhbHNcIixpY29uOlwiZmEgZmEtYmFyc1wifSBdO1xyXG4gICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5wcm9jZXNzRmlsdGVycyA9IGZ1bmN0aW9uKGZpbHRlckxpc3QpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wO2k8ICRzY29wZVskc2NvcGUuZmQuaWRdWydmZCddLmxvY2FsVmFycy5zZWFyY2gubGVuZ3RoO2krKylcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSBmaWx0ZXJMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKCAkc2NvcGVbJHNjb3BlLmZkLmlkXVsnZmQnXS5sb2NhbFZhcnMuc2VhcmNoW2ldLmNvZGVfbmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3M+PTApICAkc2NvcGVbJHNjb3BlLmZkLmlkXVsnZmQnXS5sb2NhbFZhcnMuc2VhcmNoW2ldLm5hbWUgPSBmaWx0ZXJMaXN0W3Bvc10ubmFtZVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuU2VhcmNoPT09dW5kZWZpbmVkIHx8ICRzY29wZS5mZC5TZWFyY2g9PT1udWxsKSAgICRzY29wZS5mZC5TZWFyY2g9JHNjb3BlLmZkLmxvY2FsVmFycy5zZWFyY2hbM107Ly9pbml0aWFsaXplIHRvIGVxdWFsc1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuU2VhcmNoKSAgJHNjb3BlLmZkLlNlYXJjaC5WYWx1ZT0kc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV07IFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGVbJHNjb3BlLmZkLmlkXVsnZmQnXS5sb2NhbFZhcnMuZmlsdGVyUmVhZHk9dHJ1ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuc2hvd1NlYXJjaEZpbHRlcnMgfHwgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb24pXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICAgICAgICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzQnlOYW1lKCdzZWFyY2hfZmlsdGVycycsbGFuZykudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZGVidWdnZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuZmQubG9jYWxWYXJzLnByb2Nlc3NGaWx0ZXJzKGRhdGEuZGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGVbJHNjb3BlLmZkLmlkXVsnZmQnXS5sb2NhbFZhcnMucHJvY2Vzc0ZpbHRlcnMoZGF0YS5kYXRhKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1WYWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJHNjb3BlLmZvcm1EYXRhLmxlbmd0aCkgJHNjb3BlLmZvcm1EYXRhPVt7fV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1WYWx1ZT0kc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9ZWxzZSAkc2NvcGUuZm9ybURhdGE9W3t9XTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1WYWx1ZVN0YXRlPSAkc2NvcGUua3NtLmFkZFN1YmplY3QoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkKyctbnVtYmVyVmFsdWVTdGF0ZU5hbWUnKyRzY29wZS5mZC5QcmVzZW50YXRpb25JZCxpdGVtVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1WYWx1ZVN0YXRlTmFtZSA9IGl0ZW1WYWx1ZVN0YXRlLnN1YmplY3QubmFtZTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWVfY2hhbmdlZCA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVZhbHVlU3RhdGUuc3ViamVjdC5zZXRTdGF0ZUNoYW5nZXMgPSBkYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1WYWx1ZVN0YXRlLnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKFwidmFsdWVDaGFuZ2VkXCIpO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IGFjdGlvbl92YWx1ZV9jaGFuZ2VkID0gJHNjb3BlLmtzbS5hZGRBY3Rpb24oaXRlbVZhbHVlU3RhdGUsXCJ2YWx1ZUNoYW5nZWRcIix2YWx1ZV9jaGFuZ2VkKTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUub25fYmx1cl9hY3Rpb249ZnVuY3Rpb24oKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKGl0ZW1WYWx1ZVN0YXRlLFwidmFsdWVDaGFuZ2VkXCIsICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLmZkLkRlZmF1bHRWYWx1ZSA9ICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXTtcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGxldCBhcHBseV92YWx1ZSA9IGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEhPXVuZGVmaW5lZCkgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdID0gZGF0YTtcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQ/LlBhcmFtZXRlcnM/LkRlcGVuZGVudEZpZWxkSWQhPXVuZGVmaW5lZCAmJiAkc2NvcGUuZmQ/LlBhcmFtZXRlcnM/LkRlcGVuZGVudEZpZWxkSWQhPW51bGwpICAgXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLkRlcGVuZGVudEZpZWxkSWQhPVwiXCIpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGVwZW5kZW50X2ZpZWxkID0gXCJGaWVsZFwiKyRzY29wZS5mZC5QcmVzZW50YXRpb25JZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN1YnNjcmliZWRTdWJqZWN0ID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkKyctJyskc2NvcGUuZmQuUGFyYW1ldGVycy5EZXBlbmRlbnRGaWVsZFR5cGUrXCJWYWx1ZVN0YXRlTmFtZVwiKyRzY29wZS5mZC5QYXJhbWV0ZXJzLkRlcGVuZGVudEZpZWxkSWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlciA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0LGRlcGVuZGVudF9maWVsZCxcInZhbHVlQ2hhbmdlZFwiLGFwcGx5X3ZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN0YXRlID0gJHNjb3BlLmtzbS5nZXRTdGF0ZShzdWJzY3JpYmVkU3ViamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5zdGF0dXM9PVwib2tcIikgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdID0gc3RhdGUuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMubG9hZENvdW50ZXJzID0gZnVuY3Rpb24oKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBcclxuIFxyXG5cclxuICAgICAgICAgICAgICAgICAgaWYgKCEkc2NvcGUuZmQubG9jYWxWYXJzLmNvdW50ZXJMaXN0KVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZ1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuY291bnRlcnNMb2FkZWQ9ZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY291bnRlckRlZklkID0gMFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5jb3VudGVyRGVmSWQ/LmlkKSBjb3VudGVyRGVmSWQgPSAkc2NvcGUuZmQuUGFyYW1ldGVycy5jb3VudGVyRGVmSWQuaWRcclxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGVGaWx0ZXIobGFuZywnY291bnRlcicsJycsY291bnRlckRlZklkKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmNvdW50ZXJMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSgkc2NvcGUuZmQubG9jYWxWYXJzLmNvdW50ZXJMaXN0KSkgICAkc2NvcGUuZmQubG9jYWxWYXJzLmNvdW50ZXJMaXN0PVtdOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xldCBwb3MgPSAkc2NvcGUuZmQubG9jYWxWYXJzLmNvdW50ZXJzTGlzdC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZigkc2NvcGUuZmQuUGFyYW1ldGVycy5jb3VudGVyRGVmSWQuaWQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWYgKHBvcz49MCkgJHNjb3BlLmZkLnNlbGVjdGVkUmVzb3VyY2U9JHNjb3BlLmZkLnJlc291cmNlc0xpc3RbcG9zXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuY291bnRlcnNMb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICB9IFxyXG5cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9ICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5Vc2VDb3VudGVyKSAkc2NvcGUuZmQubG9jYWxWYXJzLmxvYWRDb3VudGVycygpXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybWF0TnVtYmVyID0gZnVuY3Rpb24oaW5wdXROdW1iZXIpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBsZXQgZm9ybWF0ZWROdW1iZXIgPSBcIlwiXHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhLmxlbmd0aCAmJiAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0hPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBOb09mRGVjaW1hbHMgPSAwXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5NYXhMZW5ndGg+MCkgTm9PZkRlY2ltYWxzID0gJHNjb3BlLmZkLk1heExlbmd0aFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvL2lmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5Vc2VGb3JtYXQpIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLkRidHlwZSE9J2ludGVnZXJmaWVsZGRlZmluaXRpb24nKSBmb3JtYXRlZE51bWJlciA9IGlucHV0TnVtYmVyPy50b0xvY2FsZVN0cmluZyhuYXZpZ2F0b3IubGFuZ3VhZ2Use21pbmltdW1GcmFjdGlvbkRpZ2l0czpOb09mRGVjaW1hbHMsbWF4aW11bUZyYWN0aW9uRGlnaXRzOk5vT2ZEZWNpbWFsc30pO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgZm9ybWF0ZWROdW1iZXI9aW5wdXROdW1iZXI/LnRvU3RyaW5nKClcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfSBcclxuXHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXRlZE51bWJlclxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmZvcm1hdE51bWJlckJsb2NrY2hhaW4gPSBmdW5jdGlvbihpbnB1dClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IGZvcm1hdGVkTnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgd2ViMztcclxuICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLkNvbnZlcnRCbG9ja2NoYWluRm9ybWF0KVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5ldGhlcmV1bSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWIzID0gbmV3IFdlYjMod2luZG93LmV0aGVyZXVtKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSBpZiAod2luZG93LndlYjMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2ViMyA9IG5ldyBXZWIzKHdpbmRvdy53ZWIzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKHdlYjMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIud2ViM0luZnVyYSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2ViMyA9IG5ldyBXZWIzKCRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci53ZWIzSW5mdXJhKTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnd2ViMyBwcm92aWRlciBub3QgYXZhaWxhYmxlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLldhbGxldEVycm9yID0gJ3dlYjMgcHJvdmlkZXIgbm90IGF2YWlsYWJsZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlucHV0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuRnJvbUFycmF5IT11bmRlZmluZWQpIGlucHV0ID0gJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5QYXJhbWV0ZXJzLlNvdXJjZUZpZWxkTmFtZV1bJHNjb3BlLmZkLlBhcmFtZXRlcnMuRnJvbUFycmF5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRlZE51bWJlciA9IHdlYjMudXRpbHMuZnJvbVdlaShpbnB1dC50b0xvY2FsZVN0cmluZygnZnVsbHdpZGUnLCB7dXNlR3JvdXBpbmc6ZmFsc2V9KSwgJ2V0aGVyJykudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLHttaW5pbXVtRnJhY3Rpb25EaWdpdHM6JHNjb3BlLmZkLlBhcmFtZXRlcnMuTm9PZkRlY2ltYWxzLG1heGltdW1GcmFjdGlvbkRpZ2l0czoxOH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgIGZvcm1hdGVkTnVtYmVyID0gaW5wdXQ7XHJcbiAgICAgICAgICAgICAgICAgIH1lbHNlIGZvcm1hdGVkTnVtYmVyPWlucHV0O1xyXG4gICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuQ29udmVydFRvRGF5cykgZm9ybWF0ZWROdW1iZXIgPSBmb3JtYXRlZE51bWJlci84NjQwMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdGVkTnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1hdE51bWJlcigpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHRlbXBsYXRlO1xyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uKSAgdGVtcGxhdGUgPSAkdGVtcGxhdGVDYWNoZS5nZXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0TnVtYmVyLmh0bWwnKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgdGVtcGxhdGUgPSAkdGVtcGxhdGVDYWNoZS5nZXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0TnVtYmVyRXhlLmh0bWwnKTtcclxuICAgICAgICAgICAgICAgICRlbGVtZW50LmFwcGVuZCgkY29tcGlsZSh0ZW1wbGF0ZSkoJHNjb3BlKSk7IFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICBpZiAoaXRlbVZhbHVlU3RhdGUuc3ViamVjdC5jdXJyZW50U3RhdGVJbmRleD49MClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdID0gaXRlbVZhbHVlU3RhdGUuc3ViamVjdC5nZXRTdGF0ZTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0hPXVuZGVmaW5lZCkgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKGl0ZW1WYWx1ZVN0YXRlTmFtZSxcInZhbHVlQ2hhbmdlZFwiLCAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0pO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG4gIFxyXG5cdFx0XHRcdHNjb3BlLmlzT3Blbj10cnVlO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHNjb3BlLnJlZnJlc2hTZWFyY2hWYWx1ZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLlNlYXJjaCkgc2NvcGUuZmQuU2VhcmNoLlZhbHVlPXNjb3BlLmZvcm1EYXRhWzBdW3Njb3BlLmZkLkZpZWxkTmFtZV1cclxuICAgICAgICAgICAgICAgIH07IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBzY29wZS5zaG93UHJvcGVydGllcyA9IGZ1bmN0aW9uKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgIFx0ICBzY29wZS5nc3J2Yy5zZXRGaWVsZFByb3BlcnRpZXMoc2NvcGUuZmQsIHNjb3BlLmlucHV0QXJyYXkpOy8vIGlucHV0QXJyYXkgaXMgcGFyZW50XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBzY29wZS5hcHBseU51bUZpbHRlcnMgPSBmdW5jdGlvbihpbmRleCkge1xyXG5cdFx0XHRcdCAgICBzY29wZS5mZC5TZWFyY2g9c2NvcGUuZmQubG9jYWxWYXJzLnNlYXJjaFtpbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLlNlYXJjaCAmJiBzY29wZS5mb3JtRGF0YSE9dW5kZWZpbmVkICYmIHNjb3BlLmZvcm1EYXRhLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuU2VhcmNoLlZhbHVlPXNjb3BlLmZvcm1EYXRhWzBdW3Njb3BlLmZkLkZpZWxkTmFtZV07IFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuU2VhcmNoLlZhbHVlPT11bmRlZmluZWQpIHNjb3BlLmZkLlNlYXJjaC5WYWx1ZSA9IFwiXCI7XHRcdFxyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuVXBkYXRlV2l0aERlZmF1bHQgJiYgIXNjb3BlLmZkLk5vVXBkYXRlKSBzY29wZS5mb3JtRGF0YVswXVtzY29wZS5mZC5GaWVsZE5hbWVdID0gc2NvcGUuZmQuRGVmYXVsdFZhbHVlPy52YWx1ZVxyXG4gICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG59O1xuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24ga3RPdXRjb21lQWN0aW9ucyAoKSB7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXG4gICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdE91dGNvbWVBY3Rpb25zLmh0bWwnLFxuICAgICAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbigkc2NvcGUsZHJhZ3VsYXJTZXJ2aWNlKXtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICRzY29wZS5nZXRTZXFOb0Zvck5ld0FjdGlvbiA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICB2YXIgc2VxTm89MDtcbiAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPCRzY29wZS5vdXRjb21lcy5sZW5ndGg7aSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgIHNlcU5vID0gc2VxTm8rJHNjb3BlLm91dGNvbWVzW2ldLmFjdGlvbnMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIHNlcU5vKys7ICAgICAgICBcbiAgICAgICAgICAgICAgICAgIHJldHVybiBzZXFObztcbiAgICAgIFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICRzY29wZS5hY3Rpb25zID0gW1xuICAgICAgICAgICAgICAgIHtpZDE6MSx0eXBlOjEsbmFtZTE6J1N0YXJ0IHRhc2snLHRhc2tJZDpudWxsLGFjdGlvblBhcmFtczp7fX0sXG4gICAgICAgICAgICAgICAge2lkMToyLHR5cGU6MixuYW1lMTonU2VuZCBub3RpZmljYXRpb24nLHRhc2tJZDpudWxsLGFjdGlvblBhcmFtczp7fX1cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICRzY29wZS5zZXR1cERyYWd1bGFyID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhciBjb250YWluZXIgPSBlbGVtLmNoaWxkcmVuKCkuZXEoMCkuY2hpbGRyZW4oKS5lcSgwKS5jaGlsZHJlbigpLmVxKDApLmNoaWxkcmVuKCkuZXEoMikuY2hpbGRyZW4oKS5lcSgwKS5jaGlsZHJlbigpLmVxKDApLmNoaWxkcmVuKCkuZXEoMSkuY2hpbGRyZW4oKS5lcSgwKS5jaGlsZHJlbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnb3V0Y29tZUFjdGlvbnNEcmFndWxhcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhciB3aWRnZXRzID1bJCRzY29wZS5wVGFza0luaXRpYXRlRm9ybVJlc291cmNlcywkJHNjb3BlLnBUYXNrRXhlY3V0ZUZvcm1SZXNvdXJjZXMsJCRzY29wZS5pbml0aWF0ZUZvcm1SZXNvdXJjZXMsJCRzY29wZS5zZWxlY3RlZFJlc291cmNlLCQkc2NvcGUuZXhlY3V0ZUZvcm1SZXNvdXJjZXNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ3VsYXJTZXJ2aWNlKGNvbnRhaW5lcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuYW1lU3BhY2U6IG5hbWVzcGFjZSAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9taXJyb3I6ICdndS1taXJyb3ItZW1wdHknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2ZXJ0T25TcGlsbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJzTW9kZWw6ICRzY29wZS5hY3Rpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZGlyZWN0aW9uOid2ZXJ0aWNhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2VwdHM6IGFjY2VwdHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVzOiBmdW5jdGlvbiAoZWwsIGNvbnRhaW5lciwgaGFuZGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGUuY2xhc3NMaXN0LmNvbnRhaW5zKFwiZWxlbWVudC1kcmFnLWhhbmRsZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOyAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAkc2NvcGUuc2V0dXBEcmFndWxhcigpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIC8qICAgICAgICAgIFxuICAgICAgICAgICAgICBzY29wZS5vdXRjb21lRGVmQWN0aW9uc09wdGlvbnMgPVxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGl0ZW1Nb3ZlZDogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LmRlc3Quc29ydGFibGVTY29wZS5tb2RlbFZhbHVlW2V2ZW50LmRlc3QuaW5kZXhdLmlkID0gc2NvcGUuZ2V0U2VxTm9Gb3JOZXdBY3Rpb24oKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGNsb25lOnRydWUsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICBcbiAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgIFxuICAgICAgICB9XG4gICAgfVxufTtcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGt0T3V0Y29tZURlZkxpc3QgKCkge1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZXN0cmljdDogJ0EnLFxuICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RPdXRjb21lRGVmTGlzdC5odG1sJyxcbiAgICAgICAgICAgICAgICBzY29wZTp7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXNrOiAnPScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFZhcnM6ICc9JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkOiAnPScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbigkc2NvcGUsVGFza0RlZmluaXRpb25TZXJ2aWNlLENvZGVzU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlLFRhc2tEYXRhU2VydmljZSwkcm9vdFNjb3BlLCR0aW1lb3V0LGRyYWd1bGFTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSl7XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5wYXJhbWV0ZXJzID0ge3BsYWNlaG9sZGVyOidTZWxlY3QgdGVtcGxhdGUgdG8gbG9hZCcsbGFiZWw6J091dGNvbWVzJyxuYW1lOidvdXRjb21lcycsc2VsZWN0ZWRJdGVtOiRzY29wZS50YXNrLlRhc2tPdXRjb21lSGVhZElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQ6dHJ1ZSxoaWRlTGFiZWw6dHJ1ZSxkcm9wZG93blNpemU6J2NvbC1sZy0yNCd9O1xuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNob3dMb2FkRnJvbVRlbXBsYXRlID17fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50ZHM9VGFza0RlZmluaXRpb25TZXJ2aWNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm91dGNvbWVzRG93bmxvYWRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5vdXRjb21lcz1bXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmM9R3JpZHN0ZXJTZXJ2aWNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNldHVwRHJhZ3VsYSA9IGZ1bmN0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgd2lkZ2V0SGFuZGxlUmVzb3VyY2UgPSAnZWxlbWVudC1kcmFnLWhhbmRsZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiYWcgPSBkcmFndWxhU2VydmljZS5maW5kKCRyb290U2NvcGUsICdiYWctb3V0Y29tZXMnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYmFnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnNldHVwRHJhZ3VsYSgnYmFnLW91dGNvbWVzJywnb3V0Y29tZXNEcmFndWxhJyx3aWRnZXRIYW5kbGVSZXNvdXJjZSk7ICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuZGVzdHJveURyYWd1bGEoJ2JhZy1vdXRjb21lcycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0dXBEcmFndWxhKCdiYWctb3V0Y29tZXMnLCdvdXRjb21lc0RyYWd1bGEnLHdpZGdldEhhbmRsZVJlc291cmNlKTsgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgfTsgIFxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5HZXRUYXNrT3V0Y29tZXNEZWYobGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm91dGNvbWVDb2RlcyA9IGRhdGEuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUudGFzay5UYXNrT3V0Y29tZUhlYWRJZCE9bnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwb3MgPSAkc2NvcGUub3V0Y29tZUNvZGVzLm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKCRzY29wZS50YXNrLlRhc2tPdXRjb21lSGVhZElkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcz4tMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5wYXJhbWV0ZXJzLnNlbGVjdGVkSXRlbSA9ICRzY29wZS5vdXRjb21lQ29kZXNbcG9zXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRPdXRjb21lSWQ9JHNjb3BlLnBhcmFtZXRlcnMuc2VsZWN0ZWRJdGVtLmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuR2V0T3V0Y29tZXMoKTsgXG4gICAgICAgICBcbiAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAkc2NvcGUuc2hvd291dGNvbWVkZXRhaWxzPSBmdW5jdGlvbihvdXRjb21lLGluZGV4LHNob3dMb2FkRnJvbVRlbXBsYXRlKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdHJhbnNmZXIgY2hpbGQgJHNjb3BlIHBhcmFtZXRlcnMgdG8gcGFyZW50cyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zaG93TG9hZEZyb21UZW1wbGF0ZT1zaG93TG9hZEZyb21UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jbGlja2VkT3V0Y29tZSA9IG91dGNvbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRPdXRjb21lSW5kZXg9aW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zaG93Q29uZmlybVJlbW92ZU91dGNvbWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZXR1cERyYWd1bGEoKTtcbiAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RPdXRjb21lPSBmdW5jdGlvbihvdXRjb21lKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRCdXR0b24ub3V0Y29tZT1vdXRjb21lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkT3V0Y29tZSA9IGZ1bmN0aW9uKGl0ZW0sbW9kZWwpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5wYXJhbWV0ZXJzLnNlbGVjdGVkSXRlbSA9IGl0ZW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkT3V0Y29tZUlkPWl0ZW0uaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlbW92ZUFjdGlvbiA9IGZ1bmN0aW9uKGluZGV4KXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUudGFzay5UYXNrT3V0Y29tZUNvZGVJZCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY2xpY2tlZE91dGNvbWUuYWN0aW9ucy5zcGxpY2UoaW5kZXgsMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZW1vdmVPdXRjb21lID0gZnVuY3Rpb24oaW5kZXgpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRzY29wZS50YXNrLlRhc2tPdXRjb21lQ29kZUlkID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMub3V0Y29tZXMuc3BsaWNlKGluZGV4LDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuaXNTZWxlY3RlZE91dGNvbWUgPSBmdW5jdGlvbihpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoJHNjb3BlLnNlbGVjdGVkSW5kZXg9PWluZGV4KSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5zZWxlY3RlZE91dGNvbWVJbmRleD09aW5kZXggKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wcm9tamVuaW9PdXRjb21lID0gZnVuY3Rpb24gKGluZGV4LGlzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlciAgIC8vcHJvbWplbmlvT3V0Y29tZSAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkID0gaXNTZWxlY3RlZFskc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgaWYgKGlzU2VsZWN0ZWRbaW5kZXhdID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQga2V5IGluIGlzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkW2tleV09ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgfSBcblxuICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkW2luZGV4XSA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRPdXRjb21lSW5kZXggPSBpbmRleFxuICAgICAgICAgICAgICAgICAgIH0gZWxzZSBcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRPdXRjb21lSW5kZXggPSBudWxsXG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmFkZE91dGNvbWVJdGVtID0gZnVuY3Rpb24obmV3SXRlbSl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3SXRlbSE9dW5kZWZpbmVkICYmIG5ld0l0ZW0hPW51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMub3V0Y29tZXMucHVzaChuZXdJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJHRpbWVvdXQoZnVuY3Rpb24oKXsgLy9NSUdPUiAtbW/FvmUgc2UgbWFrbnV0aSB0aW1lb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLm91dGNvbWVzLnB1c2goe2lkMTpudWxsLG5hbWUxOm51bGwsb3V0Y29tZU5hbWU6bnVsbCxpY29uOm51bGwsYnRuTmFtZTonKk5ldyBPdXRjb21lKicsYnRuQ2xhc3M6bnVsbCxhY3Rpb25zOltdfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRPdXRjb21lSW5kZXg9ICRzY29wZS5sb2NhbFZhcnMub3V0Y29tZXMubGVuZ3RoLTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY2xpY2tlZE91dGNvbWU9JHNjb3BlLmxvY2FsVmFycy5vdXRjb21lc1skc2NvcGUuc2VsZWN0ZWRPdXRjb21lSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNob3dMb2FkRnJvbVRlbXBsYXRlWyRzY29wZS5zZWxlY3RlZE91dGNvbWVJbmRleF09dHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL30pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHRpbWVvdXQoZnVuY3Rpb24oKXsgLy9NSUdPUiAtbW/FvmUgc2UgbWFrbnV0aSB0aW1lb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zaG93b3V0Y29tZWRldGFpbHMoICRzY29wZS5sb2NhbFZhcnMub3V0Y29tZXNbJHNjb3BlLmxvY2FsVmFycy5vdXRjb21lcy5sZW5ndGgtMV0sICRzY29wZS5sb2NhbFZhcnMub3V0Y29tZXMubGVuZ3RoLTEsICRzY29wZS5zaG93TG9hZEZyb21UZW1wbGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2aWRqZXRpIGRhIGxpIG92byBkb2xlIGltYSBmdW5rY2lqdSAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAvLyAgIGlmICgkc2NvcGUucGFyYW1ldGVycy5zZWxlY3RlZEl0ZW0pIGRlbGV0ZSAkc2NvcGUucGFyYW1ldGVycy5zZWxlY3RlZEl0ZW07IC8vcmVzZXQgc2VsZWN0ZWQgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5HZXRPdXRjb21lcyA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nOyAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvdXRjb21lSWQgPSAwICAgICAgICAgICAgICAgIC8qTUlHT1IgcHJvdmplcml0aSBqb3MqLyAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoJHNjb3BlLnBhcmFtZXRlcnMuc2VsZWN0ZWRJdGVtIT11bmRlZmluZWQpIHsgLypNSUdPUiBwcm92amVyaXRpIGpvcyovIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBvdXRjb21lSWQgPSAkc2NvcGUucGFyYW1ldGVycy5zZWxlY3RlZEl0ZW0uaWQ7ICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUudGFzay5UYXNrT3V0Y29tZUhlYWRJZCAhPXVuZGVmaW5lZCkgb3V0Y29tZUlkID0gJHNjb3BlLnRhc2suVGFza091dGNvbWVIZWFkSWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9hZGluZ0FjdGlvbnM9dHJ1ZTsgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRzY29wZS5vdXRjb21lc0Rvd25sb2FkZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFza0RhdGFTZXJ2aWNlLkdldFRhc2tPdXRjb21lcyggJHNjb3BlLnRhc2suUmVzb3VyY2VEZWZJZCxvdXRjb21lSWQsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7ICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMub3V0Y29tZXMgPSBkYXRhLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUudGFzay5UYXNrT3V0Y29tZUhlYWRJZCA9ICRzY29wZS5wYXJhbWV0ZXJzLnNlbGVjdGVkSXRlbS5pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRzY29wZS5zZWxlY3RlZE91dGNvbWVJZD0kc2NvcGUucGFyYW1ldGVycy5zZWxlY3RlZEl0ZW0uaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm91dGNvbWVzRG93bmxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvYWRpbmdBY3Rpb25zPWZhbHNlOyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICgkc2NvcGUubG9jYWxWYXJzLm91dGNvbWVzLmxlbmd0aD4wKSAgJHNjb3BlLnNob3dvdXRjb21lZGV0YWlscygkc2NvcGUubG9jYWxWYXJzLm91dGNvbWVzWzBdLDAsJHNjb3BlLnNob3dMb2FkRnJvbVRlbXBsYXRlKTsgLy9zaG93IGZpcnN0IGF2YWlsYWJsZSBvdXRjb21lIChpZiBhbnkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2FkaW5nQWN0aW9ucz1mYWxzZTsgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2FkaW5nQWN0aW9ucz1mYWxzZTsgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgfS8vR2V0T3V0Y29tZXNcbiAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgU0FWRSBUQVNLIE9VVENPTUVTXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNhdmVUYXNrT3V0Y29tZXMgPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NoZWNrIGZvciBlcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzYXZlVGFza091dGNvbWVzRXJyb3JzPVtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkc2NvcGUudGFzay5JbmZpbml0ZVRhc2spXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IodmFyIGk9MDtpPCRzY29wZS5sb2NhbFZhcnMub3V0Y29tZXMubGVuZ3RoO2krKyl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLm91dGNvbWVzW2ldLm91dGNvbWVOYW1lPT1udWxsKSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVUYXNrT3V0Y29tZXNFcnJvcnMucHVzaCgnT3V0Y29tZSBuYW1lIG11c3QgYmUgZGVmaW5lZCEnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLm91dGNvbWVzLmxlbmd0aD09MClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlVGFza091dGNvbWVzRXJyb3JzLnB1c2goXCJPdXRjb21lIG11c3QgYmUgZGVmaW5lZCFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzYXZlVGFza091dGNvbWVzRXJyb3JzLmxlbmd0aD4wKSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShzYXZlVGFza091dGNvbWVzRXJyb3JzLCdlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgLy8gTk8gRVJST1JTXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9ha28gbmUgcG9zdG9qaSBvdXRjb21lSGVhZCBhIGltYSBwb2RhdGFrYSBvbmRhIGtyZWlyYW1vIG5vdmkgb3V0Y29tZUhlYWQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCRzY29wZS50YXNrLlRhc2tPdXRjb21lSGVhZElkID09IG51bGwgfHwgJHNjb3BlLnRhc2suVGFza091dGNvbWVIZWFkSWQ9PXVuZGVmaW5lZCB8fCAkc2NvcGUudGFzay5UYXNrT3V0Y29tZUhlYWRJZD09MCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5vdXRjb21lcy5sZW5ndGg+MCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuT3V0Y29tZUhlYWQgPSB7QWN0aXZlOnRydWUsaWQ6bnVsbH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuT3V0Y29tZUhlYWQuTGFuZyA9IGxhbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuT3V0Y29tZUhlYWQuT3V0Y29tZU5hbWU9XCJPdXRjb21lVGFza1wiKyRzY29wZS50YXNrLlJlc291cmNlRGVmSWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuT3V0Y29tZUhlYWQuTmFtZT1cIk91dGNvbWVUYXNrXCIrJHNjb3BlLnRhc2suUmVzb3VyY2VEZWZJZDtcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYXNrRGF0YVNlcnZpY2UuU2F2ZU91dGNvbWVEZWZpbml0aW9uKCRzY29wZS5PdXRjb21lSGVhZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2suVGFza091dGNvbWVIZWFkSWQ9ZGF0YS5kYXRhLmRhdGEuaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5kYXRhLm1zZywnc3VjY2VzcycpOyAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2F2ZVRhc2tPdXRjb21lc0ZpbmFsaXplKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgLy9ha28gdmXEhyBwb3N0b2ppIG91dGNvbWVoZWFkIG9uZGEgc2FtbyBzbmltYW1vIG91dGNvbWUgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlICAkc2NvcGUuc2F2ZVRhc2tPdXRjb21lc0ZpbmFsaXplKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2F2ZVRhc2tPdXRjb21lc0ZpbmFsaXplID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb3V0Y29tZXMgPSB7b3V0Y29tZUlkOiAkc2NvcGUudGFzay5UYXNrT3V0Y29tZUhlYWRJZCwgZGVmYXVsdE91dGNvbWVJZDokc2NvcGUudGFzay5EZWZhdWx0T3V0Y29tZUlkLCBvdXRjb21lczokc2NvcGUubG9jYWxWYXJzLm91dGNvbWVzfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9UT0RPIC0gbmVrYWQgamUgUmVzb3VyY2VEZWZJZF9pZCBhIG5la2FkIFJlc291cmNlRGVmSWQgISFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5TYXZlVGFza091dGNvbWVzKCRzY29wZS50YXNrLlJlc291cmNlRGVmSWRfaWQgfHwgJHNjb3BlLnRhc2suUmVzb3VyY2VEZWZJZCwhJHNjb3BlLnRhc2suSW5maW5pdGVUYXNrLG91dGNvbWVzLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLm91dGNvbWVzLm91dGNvbWVDb2Rlc0RldGFpbHMgPSBkYXRhLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5vdXRjb21lcy5zZWxlY3RlZE91dGNvbWVJbmRleD0tMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLkdldEFsbE91dGNvbWVzID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nOyAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYXNrRGF0YVNlcnZpY2UuR2V0VGFza091dGNvbWVzKDAsMCxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHsgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcih2YXIgaT0wO2k8ZGF0YS5kYXRhLmxlbmd0aDtpKyspIHsgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmRhdGFbaV0uaWQ9ZGF0YS5kYXRhW2ldLmlkMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZGF0YVtpXS5uYW1lPWRhdGEuZGF0YVtpXS5uYW1lMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuYWxsT3V0Y29tZXMgPSBkYXRhLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgfTsvL0dldEFsbE91dGNvbWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICRzY29wZS5HZXRBbGxPdXRjb21lcygpOyAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9XG4gICAgfVxufTtcbid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdFBhZ2VGb3JtICgpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RQYWdlRm9ybS5odG1sJyxcclxuICAgICAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uKCRzY29wZSxNZXNzYWdpbmdTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSxXaWRnZXRSZWdpc3RlclNlcnZpY2UsUHJvY2Vzc2luZ1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UsS2F0YWx5b1N0YXRlTWFuYWdlcixXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLGRyYWd1bGFTZXJ2aWNlLCRzdGF0ZVBhcmFtcywkcm9vdFNjb3BlLCR0aW1lb3V0KXtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZU9iamVjdCA9ICRzdGF0ZVBhcmFtcy5yZXNvdXJjZTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5DVFJMPSdrdFBhZ2VGb3JtJ1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1Mb2FkZWQ9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VJZD0kc3RhdGVQYXJhbXMuaWQ7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2U7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuc2hvd0ZpZWxkUHJvcGVydGllcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZURlZklkPSRzY29wZS5yZXNvdXJjZUlkO1xyXG4gICAgICAgICAgICAgICAgLy8kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fdHlwZT0kc2NvcGUuZm9ybVR5cGU7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybVR5cGU9J2knXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fZGVmaW5pdGlvbj10cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgICRzY29wZS5ncmlkc3RlclR5cGU9XCJwYWdlXCI7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucmVmcmVzaEZvcm09ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZGFzaGJvYXJkID0ge307XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucmVsb2FkVGFza1Rvb2xib3ggPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzPT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnM9e307XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLmRlUmVnaXN0ZXJBbGxXaWRnZXRzKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICRzY29wZS5kYXNoYm9hcmRMb2NhbCA9e3dpZGdldHM6e2xheW91dDogR3JpZHN0ZXJTZXJ2aWNlLmdldEVtcHR5VGFza0Zvcm0oKSxkYXRhOnt9fX07XHJcbiAgICAgICAgICAgICAgICAgbGV0IGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5rc20gPSBLYXRhbHlvU3RhdGVNYW5hZ2VyO1xyXG5cclxuICAgICAgICAgICAgICAgIHZhciBmb3JtX3NhdmVkID0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EZWZpbml0aW9uU3RhdGUuc3ViamVjdC5zZXRTdGF0ZUNoYW5nZXMgPSBkYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGVmaW5pdGlvblN0YXRlLnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKFwiZm9ybVNhdmVkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB2YXIgZm9ybURlZmluaXRpb25TdGF0ZSxmb3JtRGVmaW5pdGlvblN0YXRlTmFtZTsgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5zZXR1cEthdGFseW9TdGF0ZU1hbmFnZXIgPSBmdW5jdGlvbigpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybURlZmluaXRpb25TdGF0ZT0gJHNjb3BlLmtzbS5hZGRTdWJqZWN0KCdmb3JtRGVmaW5pdGlvblN0YXRlJyskc2NvcGUucmVzb3VyY2VJZCskc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fdHlwZSxudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICBmb3JtRGVmaW5pdGlvblN0YXRlTmFtZSA9IGZvcm1EZWZpbml0aW9uU3RhdGUuc3ViamVjdC5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBhY3Rpb25fdmFsdWVfY2hhbmdlZCA9ICRzY29wZS5rc20uYWRkQWN0aW9uKGZvcm1EZWZpbml0aW9uU3RhdGVOYW1lLFwiZm9ybVNhdmVkXCIsZm9ybV9zYXZlZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLnNldHVwS2F0YWx5b1N0YXRlTWFuYWdlcigpO1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLlNob3dGb3JtVmlldyA9IGZ1bmN0aW9uKHZpZXdJZCxsb2NrZWQpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAvLyR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcz09PXVuZGVmaW5lZCkgXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcz17fSBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9dmlld0lkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0Rm9ybVZpZXdUeXBlKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgLy8gIH0pXHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnNob3dIaWRlUHJvcGVydGllcyA9IGZ1bmN0aW9uKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0RmllbGRQcm9wZXJ0aWVzT3BlbmVkKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNob3dGaWVsZFByb3BlcnRpZXM9JHNjb3BlLmdzcnZjLmdldEZpZWxkUHJvcGVydGllc09wZW5lZCgpO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLiR3YXRjaCgnZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzT3BlbmVkKCknLGZ1bmN0aW9uKG5ld1ZhbHVlLG9sZFZhbHVlKXtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWUhPW9sZFZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkRmllbGQ9JHNjb3BlLmdzcnZjLmdldEZpZWxkUHJvcGVydGllcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2hvd0ZpZWxkUHJvcGVydGllcyA9ICRzY29wZS5nc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAkc2NvcGUuJHdhdGNoKCdnc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXMoKScsZnVuY3Rpb24obmV3VmFsdWUsb2xkVmFsdWUpe1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZSE9b2xkVmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRGaWVsZD0kc2NvcGUuZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zaG93RmllbGRQcm9wZXJ0aWVzID0gJHNjb3BlLmdzcnZjLmdldEZpZWxkUHJvcGVydGllc09wZW5lZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgIFxyXG4gICBcclxuICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLmZvcm1Gcm9tU2VydmVyTG9hZGVkID0ge307XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdldFJlc291cmNlRm9ybSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VGb3JtKCRzY29wZS5yZXNvdXJjZUlkLCdpJyxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNvdXJjZUZvcm1EYXRhID0gZGF0YS5kYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uID0gcmVzb3VyY2VGb3JtRGF0YS5yZXNvdXJjZURlZmluaXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uID0gdHJ1ZSAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzb3VyY2VGb3JtRGF0YS53aWRnZXRzLmxlbmd0aD4wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhc2hib2FyZD17d2lkZ2V0czp7bGF5b3V0OnJlc291cmNlRm9ybURhdGEud2lkZ2V0c319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGFzaGJvYXJkID0ge3dpZGdldHM6e2xheW91dDphbmd1bGFyLmNvcHkoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZUV4dGVuZGVkLkRlZmF1bHRGb3JtKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlVmVyc2lvbiA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uVmVyc2lvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5zZXRSZXNvdXJjZUZvcm1WZXJzaW9uKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uaWQse1ZlcnNpb246JHNjb3BlLnJlc291cmNlVmVyc2lvbn0pOyBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zPXtmb3JtVmlld1R5cGU6MSxzaG93R3JpZE5hdmlnYXRpb246ZmFsc2V9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybUxvYWRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtRnJvbVNlcnZlckxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLlNob3dGb3JtVmlldygkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlLGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5nZXRSZXNvdXJjZUZvcm0oKVxyXG5cclxuICAgICAgICAgICAgICRzY29wZS5nZXRfcHVibGlzaGVkX3Jlc291cmNlX2Zvcm1zPWZ1bmN0aW9uKCl7ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5HZXRQdWJsaXNoZWRSZXNvdXJjZXMoJHNjb3BlLnJlc291cmNlLnVpZCkudGhlbihmdW5jdGlvbiAoZGF0YSkgeyAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VzID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJHNjb3BlLmdldF9wdWJsaXNoZWRfcmVzb3VyY2VfZm9ybXMoKTtcclxuICAgICAgICAgICAgXHJcblxyXG4gICAgJHNjb3BlLm5ld1ZlcnNpb24gPSBmdW5jdGlvbigpXHJcbiAgICB7XHJcbiAgICAgICAgJHNjb3BlLmNyZWF0aW5nTmV3VmVyc2lvbj10cnVlXHJcbiAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuU2V0TmV3UmVzb3VyY2VWZXJzaW9uKCRzY29wZS5yZXNvdXJjZUlkKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXR1cz09MjAwKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5OZXdWZXJzaW9uID0gZGF0YS5kYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUHVibGlzaGVkPWZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtVmVyc2lvbiA9IHtOZXdWZXJzaW9uOmRhdGEuZGF0YSxQdWJsaXNoZWQ6ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5zZXRSZXNvdXJjZUZvcm1WZXJzaW9uKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uaWQsJHNjb3BlLmZvcm1WZXJzaW9uKTtcclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZSBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5kYXRhLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5jcmVhdGluZ05ld1ZlcnNpb249ZmFsc2VcclxuICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY3JlYXRpbmdOZXdWZXJzaW9uPWZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgIH07XHJcbiAgXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIC8vICAgICAgICAgIFNIT1cgTU9EQUxcclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICRzY29wZS5zaG93TW9kYWwgPSBmdW5jdGlvbiAocF90eXBlKSB7XHJcbiAgICAgLy9QT1NUIHB1Ymxpc2gtcmVzb3VyY2UgLCByZXNvdXJjZV9pZCwgdmVyc2lvbiBpIGRlc2NyaXB0aW9uXHJcbiAgICAgLy8kc2NvcGUuc2F2ZU1vZGFsPXRydWU7XHJcbiAgICAgJCgnI3BhZ2VQdWJsaXNoJykubW9kYWwoJ3Nob3cnKTsgXHJcbiAgICAgJHNjb3BlLm1vZGFsQWN0aW9uPXBfdHlwZVxyXG4gICAgICRzY29wZS5uZXdQdWJsaXNoVmVyc2lvbiA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uTmV3VmVyc2lvblxyXG5cclxuICAgICAgICBcclxuICAgIH1cclxuICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAgIC8vICAgICAgICAgICBTQVZFIFRBU0sgRk9STSBERUZJTklUSU9OXHJcbiAgICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgXHJcbiAgICAgICAgJHNjb3BlLnNhdmVGb3JtID0gZnVuY3Rpb24gKGlzVmFsaWQpIHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoaXNWYWxpZClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmFjdGl2aXR5LmFjdGl2aXR5TWVzc2FnZSA9IFByb2Nlc3NpbmdTZXJ2aWNlLnNldEFjdGl2aXR5TXNnKCdTYXZpbmcgcGFnZSBmb3JtIGZvciAnKyRzY29wZS5yZXNvdXJjZUlkKTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5zYXZpbmdGb3JtID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5zYXZlUmVzb3VyY2VGb3JtKCRzY29wZS5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQsJHNjb3BlLnJlc291cmNlSWQsJHNjb3BlLmZvcm1UeXBlLCRzY29wZS5sb2NhbFZhcnMubmV3RGVzY3JpcHRpb24pLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEubXNnLGRhdGEuZGF0YS5tc2dUeXBlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1WZXJzaW9uPSB7VmVyc2lvbjpkYXRhLmRhdGEudmVyc2lvbn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5Gb3JtVmVyc2lvbj0kc2NvcGUuZm9ybVZlcnNpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmRhdGEuaGFzX2NoYW5nZXMpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlB1Ymxpc2hlZD10cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybVZlcnNpb24uUHVibGlzaGVkPXRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uVmVyc2lvbiA9ICAkc2NvcGUuZm9ybVZlcnNpb24uVmVyc2lvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnNldEZpZWxkUHJvcGVydGllc09wZW5lZChmYWxzZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnNldFJlc291cmNlRm9ybVZlcnNpb24oJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5pZCwkc2NvcGUuZm9ybVZlcnNpb24pOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKGZvcm1EZWZpbml0aW9uU3RhdGVOYW1lLFwiZm9ybVNhdmVkXCIsZGF0YS5kYXRhLm5ld19pdGVtcyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2F2aW5nRm9ybSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuZGF0YS5mb3JtRGF0YS5sZW5ndGg+MCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhc2hib2FyZD17d2lkZ2V0czp7bGF5b3V0OmRhdGEuZGF0YS5mb3JtRGF0YX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtRnJvbVNlcnZlckxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjcGFnZVB1Ymxpc2gnKS5tb2RhbCgnaGlkZScpIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJHNjb3BlLlNob3dGb3JtVmlldygkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlLGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNhdmluZ0Zvcm0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgIH1cclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAkc2NvcGUuJG9uKCdDdHJsUEJQcmVzc2VkJyxmdW5jdGlvbihldmVudCxkYXRhKXtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB2YXIga2V5PWRhdGE7XHJcbiAgICAgICAgICAgICAgICBpZiAoa2V5PT0nYicgfHwga2V5PT0nQicpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPTEpICRzY29wZS5TaG93Rm9ybVZpZXcoMSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGtleT09J3AnIHx8IGtleT09J1AnKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlIT0yKSAkc2NvcGUuU2hvd0Zvcm1WaWV3KDIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfSk7ICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbn07XG4ndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBrdFBhZ2Vmb3JtbGF5b3V0ICgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXG4gICAgICAgICAgICBcblx0XHRcdGNvbnRyb2xsZXI6IGZ1bmN0aW9uICgkc2NvcGUsZHJhZ3VsYVNlcnZpY2UsJHJvb3RTY29wZSxXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSwkY29tcGlsZSwkZWxlbWVudCwkdGVtcGxhdGVDYWNoZSkge1xuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAkc2NvcGUuQ1RSTD1cImt0UGFnZWZvcm1sYXlvdXRcIlxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGxldCBkZWxldGVkV2lkZ2V0c1N0YXRlPSAkc2NvcGUua3NtLmFkZFN1YmplY3QoJ2RlbGV0ZWRXaWRnZXRzU3RhdGUnKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uaWQrJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX3R5cGUsbnVsbCk7XG4gICAgICAgICAgICAgICAgbGV0IGRlbGV0ZWRXaWRnZXRzU3RhdGVOYW1lID0gZGVsZXRlZFdpZGdldHNTdGF0ZS5zdWJqZWN0Lm5hbWU7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgbGV0IGFkZF9kZWxldGVkID0gZnVuY3Rpb24oZGF0YSl7XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGRlbGV0ZWQgPSBkZWxldGVkV2lkZ2V0c1N0YXRlLnN1YmplY3QuZ2V0U3RhdGVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlbGV0ZWQ9PT11bmRlZmluZWQgfHwgZGVsZXRlZD09PW51bGwpIGRlbGV0ZWQ9W10gICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlZC5wdXNoKGRhdGEpXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZWRXaWRnZXRzU3RhdGUuc3ViamVjdC5zZXRTdGF0ZUNoYW5nZXMgPSBkZWxldGVkO1xuICAgICAgICAgICAgICAgIH0gICAgICAgICAgICBcblxuICAgICAgICAgICAgICAgIGxldCBhY3Rpb25fdmFsdWVfY2hhbmdlZCA9ICRzY29wZS5rc20uYWRkQWN0aW9uKGRlbGV0ZWRXaWRnZXRzU3RhdGVOYW1lLFwiYWRkRGVsZXRlZFwiLGFkZF9kZWxldGVkKTtcblx0XHRcdFx0Ly9sZXQgYWN0aW9uX3ZhbHVlX2NoYW5nZWQgPSAkc2NvcGUua3NtLmFkZEFjdGlvbihkZWxldGVkV2lkZ2V0c1N0YXRlLFwiYWRkRGVsZXRlZFwiLGFkZF9kZWxldGVkKTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBsZXQgcHJvY2Vzc19kZWxldGVkX3dpZGdldHM9ZnVuY3Rpb24oKXtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgZGVsZXRlZHcgPSBkZWxldGVkV2lkZ2V0c1N0YXRlLnN1YmplY3QuZ2V0U3RhdGVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlbGV0ZWR3IT09bnVsbClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wO2k8ZGVsZXRlZHcubGVuZ3RoO2krKylcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGo9MDtqPCRzY29wZS5pbnB1dEFycmF5LmxheW91dC5sZW5ndGg7aisrKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmlucHV0QXJyYXkubGF5b3V0W2pdLlN0YXR1cz09XCJEZWxldGVkXCIgJiYgJHNjb3BlLmlucHV0QXJyYXkubGF5b3V0W2pdLlByZXNlbnRhdGlvbklkPT09ZGVsZXRlZHdbaV0uUHJlc2VudGF0aW9uSWQpICRzY29wZS5pbnB1dEFycmF5LmxheW91dC5zcGxpY2UoaiwxKSAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSBcImZvcm1EZWZpbml0aW9uU3RhdGVcIiskc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmlkKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV90eXBlO1xuICAgICAgICAgICAgICAgIGxldCBkZXBlbmRlbnRfZmllbGQgPSAkc2NvcGUuaW5wdXRBcnJheS5QcmVzZW50YXRpb25JZDtcbiAgICAgICAgICAgICAgICBsZXQgb2JzZXJ2ZXIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdCxkZXBlbmRlbnRfZmllbGQsXCJmb3JtU2F2ZWRcIixwcm9jZXNzX2RlbGV0ZWRfd2lkZ2V0cyk7XG5cbiAgICAgICAgICAgICAgICBcblxuICAgICAgICAgICAgICAgICRzY29wZS5yZW1vdmVGaWVsZCA9IGZ1bmN0aW9uIChpbmRleCl7XG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcIlJFTU9WRSBGSUVMRCBcIitpbmRleCk7XG5cdFx0XHRcdFx0XHRpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5kZVJlZ2lzdGVyV2lkZ2V0KCRzY29wZS5pbnB1dEFycmF5LmxheW91dFtpbmRleF0uTG9jYWxJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5pbnB1dEFycmF5LmxheW91dFtpbmRleF0uU2F2ZWQ9PXRydWUgJiYgJHNjb3BlLmlucHV0QXJyYXkubGF5b3V0W2luZGV4XS5QcmVzZW50YXRpb25JZCE9bnVsbCAmJiAkc2NvcGUuaW5wdXRBcnJheS5sYXlvdXRbaW5kZXhdLlByZXNlbnRhdGlvbklkIT11bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5pbnB1dEFycmF5LmxheW91dFtpbmRleF0uU3RhdHVzPVwiRGVsZXRlZFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9zdWJzY3JpYmUgdG8gc2F2ZSBmb3JtIGV2ZW50XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbihkZWxldGVkV2lkZ2V0c1N0YXRlTmFtZSxcImFkZERlbGV0ZWRcIix7UHJlc2VudGF0aW9uSWQ6JHNjb3BlLmlucHV0QXJyYXkubGF5b3V0W2luZGV4XS5QcmVzZW50YXRpb25JZCxpZHg6aW5kZXh9KVxuXHRcdFx0XHRcdFx0XHQgfWVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuaW5wdXRBcnJheS5sYXlvdXQuc3BsaWNlKGluZGV4LDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHR9O1xuXG4gICAgICAgICAgICAgICAgJHNjb3BlLnVuZG9EZWxldGUgPSBmdW5jdGlvbiAoaW5kZXgpe1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJSRU1PVkUgRklFTEQgXCIraW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmlucHV0QXJyYXkubGF5b3V0W2luZGV4XS5TdGF0dXM9XCJBY3RpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgXG4gICAgICAgXG4gICAgICAgICAgICAgICAgbGV0IHRlbXBsYXRlO1xuICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uKSB0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZUNhY2hlLmdldCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RQYWdlRm9ybUxheW91dC5odG1sJyk7XG4gICAgICAgICAgICAgICBlbHNlIHRlbXBsYXRlID0gJHRlbXBsYXRlQ2FjaGUuZ2V0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFBhZ2VGb3JtTGF5b3V0RXhlLmh0bWwnKTtcblxuICAgICAgICAgICAgICAgIC8vdGVtcGxhdGUgPSAkdGVtcGxhdGVDYWNoZS5nZXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0UGFnZUZvcm1MYXlvdXQuaHRtbCcpO1xuICAgICAgICAgIFxuICAgICAgICAgICAgICAgJGVsZW1lbnQuYXBwZW5kKCRjb21waWxlKHRlbXBsYXRlKSgkc2NvcGUpKTtcblxuXHRcdFx0fSxcblx0XHRcdCBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2NvcGUuaW5wdXRBcnJheS5sYXlvdXQ9PXVuZGVmaW5lZCB8fCBzY29wZS5pbnB1dEFycmF5LmxheW91dD09bnVsbCkgc2NvcGUuaW5wdXRBcnJheS5sYXlvdXQgPSBbXTtcbiAgICAgICAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbn07XG4ndXNlIHN0cmljdCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3RQYWdlTWVudSAoKSB7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXHJcbiAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RQYWdlTWVudS5odG1sJyxcclxuICAgICAgICAgICAgc2NvcGU6e1xyXG4gICAgICAgICAgICBsb2NhbFZhcnM6Jz0nLFxyXG4gICAgICAgICAgICBuYXZiYXJJdGVtc0xlZnQ6Jz0nLFxyXG4gICAgICAgICAgICBuYXZiYXJJdGVtc1JpZ2h0Oic9JyxcclxuICAgICAgICAgICAgcGFnZU1lbnU6Jz0/JyxcclxuICAgICAgICAgICAgcmVzb3VyY2U6Jz0nLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjb250cm9sbGVyOiBbJyRzY29wZScsJyR0aW1lb3V0JywnZHJhZ3VsYVNlcnZpY2UnLCckcm9vdFNjb3BlJywnTWVudVNlcnZpY2UnLCdSZXNvdXJjZXNEYXRhU2VydmljZScsJ01lc3NhZ2luZ1NlcnZpY2UnLCdHcmlkc3RlclNlcnZpY2UnLCckc3RhdGUnLFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uKCRzY29wZSwkdGltZW91dCxkcmFndWxhU2VydmljZSwkcm9vdFNjb3BlLE1lbnVTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlLCRzdGF0ZSl7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkTmF2YmFyID0ge2xheW91dCA6IFtdfVxyXG4gICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnBhZ2VNZW51SXRlbXM9IFtdXHJcblxyXG5cdFx0XHQgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2U7ICAgIFxyXG4gICAgICAgICAgICAgICBsZXQgY3VycmVudFVzZXI9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyO1xyXG5cdFx0XHQgICBcclxuICAgICAgICAgICAgICAgaWYgKCRzY29wZS5wYWdlTWVudSkgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wYWdlTWVudUl0ZW1zPSAkc2NvcGUucGFnZU1lbnVcclxuICAgICAgICAgICAgICAgZWxzZSBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnBhZ2VNZW51SXRlbXM9W11cclxuICAgICAgICAgICAgICAgXHJcbiAgXHJcbiAgICAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VUeXBlLlJlc291cmNlQ29kZT09J3BhZ2VtZW51Jykge1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dOYXZiYXJEZXRhaWxzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93TWVudURldGFpbHMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2hvd05hdmJhckRldGFpbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93TmF2YmFyRGV0YWlsc0ZpcnN0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICRzY29wZS53aGVuU3VjY2VzZnVsbERyb3AgPSBmdW5jdGlvbihpdGVtSW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdldE1lbnVEZXRhaWxzKGl0ZW1JbmRleClcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUGFnZU1lbnVJdGVtID0gJHNjb3BlLmxvY2FsVmFycy5wYWdlTWVudUl0ZW1zW2l0ZW1JbmRleF1cclxuICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93TWVudURldGFpbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pICBcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcblxyXG4gICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycyA9PSB1bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnM9e307XHJcbiAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucGFnZXNMb2FkZWQ9ZmFsc2U7ICAgIFxyXG4gICAgICAgICAgICAgICBsZXQgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgIFxyXG4gICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0TWVudURldGFpbHMgPSBmdW5jdGlvbihpbmRleCkgLy8gd2hlbiBjbGlja2VkIG9uIHNwZWNpZmljIHBhZ2UgbWVudSBpdGVtXHJcbiAgICAgICAgICAgICAgICB7XHJcblx0XHRcdFx0IC8vZGVidWdnZXJcclxuICAgICAgICAgICAgICAgICAgaWYgKCAgJHNjb3BlLmxvY2FsVmFycy5wYWdlTWVudUl0ZW1zLmxlbmd0aD09PWluZGV4KSBpbmRleC0tO1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkTWVudSAgPSAgICRzY29wZS5sb2NhbFZhcnMucGFnZU1lbnVJdGVtc1tpbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRNZW51LmluZGV4PWluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dNZW51RGV0YWlscyA9IGZhbHNlO1xyXG5cdFx0XHRcdCAgXHJcblx0XHRcdFx0ICBcdFx0XHRcdCAgXHJcblx0XHRcdFx0ICBpZiAoJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZE1lbnUuR3JvdXBzPT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRNZW51Lkdyb3Vwcz1bXVxyXG5cdFx0XHRcdCAgaWYgKCRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRNZW51LlVzZXJzPT11bmRlZmluZWQpICAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkTWVudS5Vc2Vycz1bXVxyXG5cdFx0XHRcdCAgXHRcdFx0ICBcclxuICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRNZW51LlRhcmdldD09dW5kZWZpbmVkKSAgIFxyXG5cdFx0XHRcdFx0XHRcdCRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRNZW51LlRhcmdldCA9IHtpZDogICRzY29wZS5sb2NhbFZhcnMucGFnZU1lbnVJdGVtc1tpbmRleF0uaWQsbmFtZTogICAkc2NvcGUubG9jYWxWYXJzLnBhZ2VNZW51SXRlbXNbaW5kZXhdLm5hbWV9O1xyXG4gICAgICAgICAgICAgICAgICBcclxuXHRcdFx0XHQgIGlmICgkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkTWVudS5zX21lbnVzX05hbWU9PXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZE1lbnUuc19tZW51c19OYW1lID0gICAkc2NvcGUubG9jYWxWYXJzLnBhZ2VNZW51SXRlbXNbaW5kZXhdLm5hbWU7XHJcblxyXG5cdFx0XHRcdCAgXHJcbiAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dNZW51RGV0YWlscyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmRlbGV0ZVBhZ2VNZW51ID0gZnVuY3Rpb24obWVudSxpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtZW51LnNfbWVudXNfaWQhPT1udWxsICYmIG1lbnUuc19tZW51c19pZCE9PXVuZGVmaW5lZCkgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lbnUuZGVsZXRlSXRlbSkgbWVudS5kZWxldGVJdGVtID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBtZW51LmRlbGV0ZUl0ZW0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wYWdlTWVudUl0ZW1zLnNwbGljZShpbmRleCwxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZE1lbnUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dNZW51RGV0YWlscyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmJ1aWxkRGF0YXNldCA9IGZ1bmN0aW9uKGUpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgJHN0YXRlLmdvKFwiJ2FwcC5uYXZiYXIucmVzb3VyY2VzLm5ld1wiLHsncmVzb3VyY2VfdHlwZSc6J2RhdGFzZXQnfSk7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmJ1aWxkUGFnZSA9IGZ1bmN0aW9uKGUpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgJHN0YXRlLmdvKFwiJ2FwcC5uYXZiYXIucmVzb3VyY2VzLm5ld1wiLHsncmVzb3VyY2VfdHlwZSc6J3BhZ2UnfSk7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuc2F2ZVBhZ2VNZW51ID0gZnVuY3Rpb24oKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBuYXZiYXJMZWZ0LG5hdmJhclJpZ2h0XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNpZGVNZW51SXRlbXMgPSBhbmd1bGFyLmNvcHkoJHNjb3BlLmxvY2FsVmFycy5wYWdlTWVudUl0ZW1zKTtcclxuXHRcdFx0XHRcdC8vc2lkZU1lbnVJdGVtIG1heSBjb250YWluIFwiR3JvdXBzXCIgb3IgXCJVc2Vyc1wiIGlmIHRoZXJlIHdhcyBjaGFuZ2UgKGlmIGNsaWNrZWQgb24gcGFnZSBtZW51IGVsZW1lbnQpXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgTWVudVNlcnZpY2Uuc2F2ZUZ1bGxBcHBNZW51KCRzY29wZS5yZXNvdXJjZS51aWQsIG5hdmJhckxlZnQsIG5hdmJhclJpZ2h0LHNpZGVNZW51SXRlbXMgKS50aGVuKFxyXG5cdFx0XHRcdFx0XHRmdW5jdGlvbihkYXRhKSB7XHJcblx0XHRcdFx0XHRcdFx0TWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEubXNnLCdzdWNjZXNzJyk7XHJcblx0XHRcdFx0XHRcdFx0JHNjb3BlLmxvY2FsVmFycy5wYWdlTWVudUl0ZW1zPWRhdGEucGFnZU1lbnUgICBcclxuXHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0ZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuXHRcdFx0XHRcdFx0XHRNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vZ2V0IHBhZ2VzXHJcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUobGFuZywncGFnZScpLnRoZW4oXHJcblx0XHRcdFx0XHRmdW5jdGlvbihkYXRhKSB7XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHQkc2NvcGUubG9jYWxWYXJzLnBhZ2VMaXN0ID0gZGF0YS5kYXRhO1xyXG5cdFx0XHRcdFx0XHQkc2NvcGUubG9jYWxWYXJzLnBhZ2VzTG9hZGVkPXRydWU7ICAgIFx0XHRcdFx0XHRcdCBcclxuICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuXHRcdFx0XHR9KTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgfV0sXHJcbiAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHsgICAgICAgXHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICBcclxufTtcbid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdFBhZ2VNZW51RXhlICgkdGltZW91dCkge1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxyXG4gICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0UGFnZU1lbnVFeGUuaHRtbCcsXHJcbiAgICAgICAgICAgIHNjb3BlOntcclxuICAgICAgICAgICAgICAgIHNpZGVNZW51czonPScsXHJcbiAgICAgICAgICAgICAgICBwYXJhbXM6Jz0nLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjb250cm9sbGVyOiBbJyRzY29wZScsJyRyb290U2NvcGUnLCdNZW51U2VydmljZScsJ0dyaWRzdGVyU2VydmljZScsXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgZnVuY3Rpb24oJHNjb3BlLCRyb290U2NvcGUsTWVudVNlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlKXtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubWVudV9zZXJ2aWNlID0gTWVudVNlcnZpY2U7ICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5nc3J2YyA9IEdyaWRzdGVyU2VydmljZTsgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICBsZXQgY3VycmVudFVzZXI9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyO1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XSxcclxuICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG5cclxuICAgICAgICAgICAgICAgICBzY29wZS5zZXRTaWRlTWVudSA9IGZ1bmN0aW9uKG1lbnVJZCkgeyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUubWVudV9zZXJ2aWNlLnNldFNlbGVjdGVkU2lkZW1lbnUobWVudUlkKSA7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgc2NvcGUubWVyZ2VPYmplY3RzID0gKC4uLm9iamVjdHMpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0cy5yZWR1Y2UoKGFjYywgY3VyKSA9PiAoeyAuLi5hY2MsIC4uLmN1ciB9KSk7XHJcblxyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBoaWRlIHNpZGUtbWVudSB3aGVuIGNsaWNrZWQgb3V0c2lkZVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFnZS1tZW51LWlkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lciAmJiBzY29wZS5tZW51X3NlcnZpY2UuZ2V0U2lkZU1lbnVWaXNpYmlsaXR5KCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe3Njb3BlLm1lbnVfc2VydmljZS50b2dnbGVTaWRlTWVudVZpc2liaWxpdHkoKX0pXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gIFxyXG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuLy9pbXBvcnQgaW5kZXhKc29uIGZyb20gJy4vaW5kZXguanNvbicgIGFzc2VydCB7dHlwZTogJ2pzb24nfTtcclxuaW1wb3J0IGluZGV4SnNvbiBmcm9tICcuLy4uLy4uLy4uLy4uLzAwMDFfbW9kdWxlcy8wMDAxX2luZGV4L2FuZ3VsYXJKcy9pbmRleC5qc29uJy8vd2l0aCB7dHlwZTogJ2pzb24nfTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdFBvcG92ZXIgKCRjb21waWxlKSB7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXHJcbiAgICAgICAgICAgICBzY29wZToge1xyXG5cdFx0XHRcdFx0dGlkOiAnPScsXHJcblx0XHRcdFx0XHRlbmFibGU6ICc9JyxcclxuXHRcdFx0XHRcdHRpbWVvdXQ6ICc9JyxcclxuXHRcdFx0XHRcdHNob3dPblN0YXJ0OiAnPScsXHJcblx0XHRcdFx0XHRpY29uOiAnPSdcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRjb250cm9sbGVyOiBmdW5jdGlvbigkc2NvcGUsICRyb290U2NvcGUsJHRpbWVvdXQsIFRhc2tEZWZpbml0aW9uU2VydmljZSxHcmlkc3RlclNlcnZpY2Upe1xyXG5cdFx0XHRcdHRoaXMuJHRpbWVvdXQgPSAkdGltZW91dFxyXG5cdFx0XHRcdHZhciBsYW5nQ29kZSA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nT2JqLkNvZGVcclxuXHRcdFx0XHQkc2NvcGUuY29udGVudD0gaW5kZXhKc29uW2xhbmdDb2RlXS5wb3BvdmVyICAgIFxyXG5cdFx0XHR9LFx0XHJcbiAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcclxuICAgICAgICAgICAgICAgIFx0XHJcblx0XHRcdFx0c2NvcGUub3BlbiA9IGZ1bmN0aW9uICh0aWQpIHtcclxuXHRcdFx0XHRcdC8vZGVidWdnZXJcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0c2NvcGUuJHdhdGNoKCdlbmFibGUnLGZ1bmN0aW9uKG5ld1ZhbHVlLG9sZFZhbHVlKXtcclxuXHRcdFx0XHRcdGlmIChvbGRWYWx1ZT09dHJ1ZSAmJiBuZXdWYWx1ZT09ZmFsc2UpIHtcclxuXHRcdFx0XHRcdFx0Ly9kZWJ1Z2dlclxyXG5cdFx0XHRcdFx0XHRlbGVtLnRvb2x0aXAoXCJoaWRlXCIpO1xyXG5cdFx0XHRcdFx0XHRyZXR1cm5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0aWYgKG5ld1ZhbHVlICYmIHNjb3BlLmNvbnRlbnRbc2NvcGUudGlkXSApIHtcclxuXHRcdFx0XHRcdFx0ZWxlbS5hdHRyKCd0aXRsZScsIHNjb3BlLmNvbnRlbnRbc2NvcGUudGlkXSk7XHJcblx0XHRcdFx0XHRcdC8vZWxlbS5hdHRyKCdjb250ZW50Jywgc2NvcGUuY29udGVudFtzY29wZS50aWRdKTtcclxuXHRcdFx0XHRcdFx0ZWxlbS50b29sdGlwKHtodG1sOnRydWV9KTtcclxuXHRcdFx0XHRcdFx0IFxyXG5cdFx0XHRcdFx0XHRpZiAoc2NvcGU/Lmljb24pIGVsZW0uYXBwZW5kKCRjb21waWxlKFwiIDxpIG5nLWNsaWNrPSdvcGVuKHRpZCknIGNsYXNzPSdmYXMgZmEtaW5mby1jaXJjbGUnPjwvaT5cIikoc2NvcGUpKTtcclxuXHRcdFx0XHRcdFx0aWYgKHNjb3BlPy5zaG93T25TdGFydCkge1xyXG5cdFx0XHRcdFx0XHRcdGVsZW0udG9vbHRpcChcInNob3dcIik7XHRcclxuXHRcdFx0XHRcdFx0XHRzZXRUaW1lb3V0KCAoKT0+IHsgZWxlbS50b29sdGlwKFwiaGlkZVwiKX0gLCAzMDAwKSBcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVx0XHRcdFx0ICBcclxuXHJcblx0XHRcdFx0XHRlbGVtLm9uKCckZGVzdHJveScsIGZ1bmN0aW9uKCkge1x0XHJcblx0XHRcdFx0XHRcdGVsZW0udG9vbHRpcCgnZGlzcG9zZScpO1xyXG5cdFx0XHRcdFx0XHRpZiAoYXR0cnM/LiQkb2JzZXJ2ZXJzPy5bJ3RpdGxlJ10pIGRlbGV0ZSBhdHRycy4kJG9ic2VydmVyc1sndGl0bGUnXTtcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH0pXHJcbiAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICBcclxufTtcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGt0UHJvY2Vzc2luZ0FuaW1hdGlvbiAoKSB7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXG4gICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0UHJvY2Vzc2luZ0FuaW1hdGlvbi5odG1sJyxcbiAgICAgICAgICAgIHNjb3BlOntcbiAgICAgICAgICAgICAgICAgICBtZXNzYWdlIDogXCJAXCIsXG4gICAgICAgICAgICAgICAgICAgc2hvd01zZzogXCI9XCIsXG4gICAgICAgICAgICAgICAgICAgc2hvd0FzQ2FyZDogXCI9XCIsXG4gICAgICBcdFx0XHR9LFxuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uKCl7fSxcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICB9XG4gICAgICAgIH0gICAgICAgICAgICAgXG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0UHJvY2Vzc2luZ0FuaW1hdGlvblRpbWVsaW5lICgpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFByb2Nlc3NpbmdBbmltYXRpb25UaW1lbGluZS5odG1sJyxcclxuICAgICAgICAgICAgc2NvcGU6e1xyXG4gICAgICAgICAgICAgICAgICAgbWVzc2FnZSA6IFwiQFwiLFxyXG4gICAgICAgICAgICAgICAgICAgc2hvd01zZzogXCI9XCIsXHJcbiAgICAgICAgICAgICAgICAgICBhbmltYXRpb25UeXBlOiBcIj1cIixcclxuICAgICAgICAgICAgICAgICAgIHBhcmFtczogXCI9P1wiLFxyXG4gICAgICBcdFx0XHR9LFxyXG4gICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBzY29wZS5mb3JtSXRlbXMgPSBbMSwyLDMsNF07XHJcbiAgICAgICAgICAgICAgICBpZiAoc2NvcGUuYW5pbWF0aW9uVHlwZT09XCJ0YWJsZVwiKSBzY29wZS5mb3JtSXRlbXMgPSBbMSwyLDMsNCw1LDYsNyw4XTtcclxuICAgICAgICAgICAgICAgIGlmIChzY29wZS5hbmltYXRpb25UeXBlPT1cImNhcmRcIikgXHJcbiAgICAgICAgICAgICAgICB7ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUuY2FyZEl0ZW1zID0gW11cclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0wO2k8c2NvcGUucGFyYW1zPy5pTnVtYmVyO2krKykgc2NvcGUuY2FyZEl0ZW1zLnB1c2goaSsxKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHNjb3BlLnBhcmFtcz8uc2tlbGV0b25Db2xvcilcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAvL3Njb3BlLmJhY2tncm91bmRHcmFkaWVudCA9J2JhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJytzY29wZS5wYXJhbXM/LmdyYWRpZW50Q29sb3JGcm9tKycgOCUsICcrc2NvcGUucGFyYW1zPy5ncmFkaWVudENvbG9yVG8rJyAxOCUsICcrc2NvcGUucGFyYW1zPy5ncmFkaWVudENvbG9yRnJvbSsnIDMzJSk7J1xyXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLnNrZWxldG9uQ29sb3IgPSAnYmFja2dyb3VuZC1jb2xvcjonK3Njb3BlLnBhcmFtcz8uc2tlbGV0b25Db2xvcisnOydcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoc2NvcGUucGFyYW1zPy5iYWNrZ3JvdW5kQ29sb3IpIHNjb3BlLmJhY2tncm91bmRDb2xvciA9ICdiYWNrZ3JvdW5kLWNvbG9yOicrc2NvcGUucGFyYW1zPy5iYWNrZ3JvdW5kQ29sb3IrJzsnXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgIH0gIFxyXG4gICAgfSAgICAgICAgICAgXHJcbn07XG4ndXNlIHN0cmljdCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3RQcm9jUGhQcm9wZXJ0eSAoKSB7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXHJcbiAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0UHJvY1BoUHJvcGVydHkuaHRtbCcsXHJcbiAgICAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbigkc2NvcGUpeyAgICBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gIFxyXG59O1xuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24ga3RQcm9wZXJ0eUhlYWRlciAoKSB7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXG4gICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFByb3BlcnR5SGVhZGVyLmh0bWwnLFxuICAgICAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uKCRzY29wZSxDb2Rlc1NlcnZpY2UsUmVzb3VyY2VzRGF0YVNlcnZpY2UsJHJvb3RTY29wZSxQcm9jZXNzaW5nU2VydmljZSl7ICAgIFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgfVxuICAgICAgICB9XG4gIFxufTtcbid1c2Ugc3RyaWN0JztcblxuXG5cbmV4cG9ydCBmdW5jdGlvbiBrdFB1Ymxpc2hlZFJlc291cmNlU2VsZWN0b3IgICgpIHtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXG4gICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFB1Ymxpc2hlZFJlc291cmNlU2VsZWN0b3IuaHRtbCcsXG4gICAgICAgICAgICAgc2NvcGU6e1xuICAgICAgICAgICAgICAgIFx0IGxvY2FsVmFycyA6IFwiPVwiLFxuICAgICAgICAgICAgICAgICAgICAgICBmZCA6IFwiPVwiLFxuICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24oJHNjb3BlLENvZGVzU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSwkcm9vdFNjb3BlLFByb2Nlc3NpbmdTZXJ2aWNlLGRyYWd1bGFyU2VydmljZSwkdGltZW91dCxDT0RFU19DT05TVCxNZXNzYWdpbmdTZXJ2aWNlKVxuICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZm9ybVByaW9yaXR5PSdlJztcbiAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zcmNfdHlwZV90ZXh0PUNPREVTX0NPTlNULl9QT1BVTEFURV9UWVBFX05FV187XG4gICAgICAgICAgICAgICRzY29wZS5mZC5SZWxhdGVkUG9wdWxhdGVUeXBlPTE7XG4gICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycz09dW5kZWZpbmVkKSAkc2NvcGUuZmQuUGFyYW1ldGVycyA9e307ICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5Qb3B1bGF0ZVR5cGUhPW51bGwgJiYgJHNjb3BlLmZkLlBvcHVsYXRlVHlwZSE9XCJcIilcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhciBwVHlwZSA9ICRzY29wZS5mZC5Qb3B1bGF0ZVR5cGU7XG4gICAgICAgICAgICAgICAgdmFyIGZvcm1Qcmlvcml0eSA9IHBUeXBlLnRvU3RyaW5nKCkuc3Vic3RyKDEsMSk7XG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLlJlbGF0ZWRQb3B1bGF0ZVR5cGU9cFR5cGUudG9TdHJpbmcoKS5zdWJzdHIoMCwxKTtcbiAgICAgICAgICAgICAgICBpZiAoZm9ybVByaW9yaXR5PT1cImlcIiB8fCBmb3JtUHJpb3JpdHk9PVwiZVwiKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmZvcm1Qcmlvcml0eSA9IGZvcm1Qcmlvcml0eTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbSE9dW5kZWZpbmVkKVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5zcmNfdHlwZV90ZXh0ID0gJHNjb3BlLmZkLmxvY2FsVmFycy5zcmNfdHlwZV90ZXh0WyRzY29wZS5mZC5SZWxhdGVkUG9wdWxhdGVUeXBlXTtcbiAgICAgICAgICAgICAgfWVsc2VcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0gPSB7c3JjX3R5cGVfdGV4dDokc2NvcGUuZmQubG9jYWxWYXJzLnNyY190eXBlX3RleHRbJHNjb3BlLmZkLlJlbGF0ZWRQb3B1bGF0ZVR5cGVdfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICBcblxuXG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIC8vZ2V0LXB1Ymxpc2hlZC1yZXNvdXJjZXMvKD9QPHJlc291cmNlVHlwZT4uKykvKD9QPHB1Ymxpc2hUeXBlPi4rKSdcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5HZXRQdWJsaXNoZWRSZXNvdXJjZXNCeVR5cGUgPSBmdW5jdGlvbigpICB7XHRcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3Q9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3Q9W107XG4gICAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UHVibGlzaGVkUmVzb3VyY2VzQnlUeXBlKCRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VUeXBlLCdmb3JtJykudGhlbihmdW5jdGlvbiAoZGF0YSkgeyAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0ID0gZGF0YS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZUlkIT1udWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZXRTZWxlY3RlZFJlc291cmNlKCRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSAgXG4gICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICB9IFxuICAgIFxuICAgIFxuICAgICBcbiAgICBcblx0aWYgKCRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0PT11bmRlZmluZWQpIHtcbiAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuR2V0UHVibGlzaGVkUmVzb3VyY2VzQnlUeXBlKCk7XG4gICAgfVxuICAgICAgICAgXG4gICAgLyogaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VMaXN0PT11bmRlZmluZWQpIHtcbiAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VzKCk7XG4gICAgfVxuICAgICovICAgICBcbiAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmNoYW5nZVByaW9yaXR5PSBmdW5jdGlvbihmcCl7IFxuICAgICAgICAgICAgICRzY29wZS5mZC5mb3JtUHJpb3JpdHkgPWZwOyBcbiAgICAgICAgICAgIH07XG4gICAgICAgICBcbiAgICAgICAgICBcbiAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuY29uZmlybT0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtID0gJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlXG4gICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLnNyY190eXBlX3RleHQgPSAkc2NvcGUuZmQubG9jYWxWYXJzLnNyY190eXBlX3RleHRbJHNjb3BlLmZkLlJlbGF0ZWRQb3B1bGF0ZVR5cGVdO1xuICAgICAgICAgICAgICAgICAgLy8gJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCA9ICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZSArJyAoJyskc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLmlkICsnKSdcbiAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUG9wdWxhdGVUeXBlPSRzY29wZS5mZC5SZWxhdGVkUG9wdWxhdGVUeXBlKyRzY29wZS5mZC5mb3JtUHJpb3JpdHk7XG4gICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT0wO1xuICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2V0U2VsZWN0ZWRSZXNvdXJjZSgkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLmlkKTtcbiAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgIC8vICAkc2NvcGUubG9jYWxWYXJzLnRvZ2dsZVByb3BlcnRpZXMoMCk7IC8vTUlHT1IgZG9kYW8gZGEgc2Ugc2FrcmlqZSBwcm9wZXJ0eSBrYWQgc3Rpc25lIHByb3pvciAsIFRPRE8gLSB0cmViYSBwb3R2cmRpdGkgZGEgc2UgbmVzdG8gcyB0aW1lIG5lIGt2YXJpXG4gICAgICAgICAgICB9O1xuXHRcdFx0XHQgIFxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMub25TZWxlY3RSZXNvdXJjZUNhbGxiYWNrID0gZnVuY3Rpb24gKGl0ZW0sIG1vZGVsKXtcblxuICAgICAgICAgICAgICAgICAgXHR2YXIgZXZlbnRSZXN1bHRJZD1pdGVtLmlkO1xuICAgICAgICAgICAgICAgICAgXHR2YXIgZXZlbnRSZXN1bHROYW1lPWl0ZW0ubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGV2ZW50UmVzdWx0UGFyZW50RWxlbWVudElkID1pdGVtLnBhcmVudEVsZW1lbnRJZDtcbiAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAvLyBpZiAoaXRlbS5pZCE9JHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5pZCAmJiAkc2NvcGUuZmQubG9jYWxWYXJzLnJlbGF0ZWRQb3B1bGF0ZVR5cGUhPTEpe1xuICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE8gLSBrYWQgc2UgcHJvbWplbmkgZGF0YXNldCBvbmRhIHNlIHRyZWJhIHJlc2V0aXJhdGkgR1JJRFNUQVRFXG4gICAgICAgICAgICAgICAgICAgICAvLyAkc2NvcGUuZmQuR3JpZFN0YXRlID0ge30gVE9ETyBpIG92byBkb2RhdGk/XG4gICAgICAgICAgICAgICAgICAgICAvLyRzY29wZS5mZC5QYXJhbWV0ZXJzLkdyaWRTdGF0ZSA9IHtzdGF0ZTpbXX1cbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAvLyRzY29wZS5mZC5sb2NhbFZhcnMuZ2V0Rm9ybVdpZGdldHMoaXRlbS5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAvLyAgfVxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgXHQgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW1fYyA9IHtpZDpldmVudFJlc3VsdElkLCBuYW1lIDogZXZlbnRSZXN1bHROYW1lLHBhcmVudEVsZW1lbnRJZDpldmVudFJlc3VsdFBhcmVudEVsZW1lbnRJZCxGb3JtOml0ZW0uRm9ybSxWZXJzaW9uOml0ZW0uVmVyc2lvbixSZXNvdXJjZURlZklkOml0ZW0uUmVzb3VyY2VEZWZJZH07XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZXRTZWxlY3RlZFNvdXJjZSA9IGZ1bmN0aW9uKHNvdXJjZV9pZCl7XG4gICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICBpZiAoc291cmNlX2lkPT0tMSlcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5SZWxhdGVkUG9wdWxhdGVUeXBlID0gJzMnO1xuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZm9ybVByaW9yaXR5ID0gJ2UnO1xuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIH1lbHNlXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5SZWxhdGVkUG9wdWxhdGVUeXBlID0gJzInO1xuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZm9ybVByaW9yaXR5ID0gc291cmNlX2lkLmZvcm1fdHlwZTtcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlNyY1dpZGdldElkID0gc291cmNlX2lkLnBhcmVudEVsZW1lbnRJZDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZV9pZC50eXBlPT0ncmxpc3QnKSAkc2NvcGUuZmQuUmVsYXRlZFBvcHVsYXRlVHlwZSA9ICc0JztcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRGb3JtV2lkZ2V0cyA9IGZ1bmN0aW9uKHJlc291cmNlX2lkKXtcbiAgICAgICAgICBcblxuICAgICAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG4gICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkID09IHVuZGVmaW5lZCB8fCAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PW51bGwpICRzY29wZS5mZC5QcmVzZW50YXRpb25JZD0wO1xuICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0Rm9ybVdpZGdldHMocmVzb3VyY2VfaWQsJHNjb3BlLmZkLmxvY2FsVmFycy50YXNrSWQsJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLDEsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmN1cnJlbnRUYXNrSW5pdGlhdGVEYXRhc2V0cyA9IGRhdGEuZGF0YS5pbml0aWF0ZV93aWRnZXRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmN1cnJlbnRUYXNrRXhlY3V0ZURhdGFzZXRzID0gZGF0YS5kYXRhLmV4ZWN1dGVfd2lkZ2V0cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuY3VycmVudERvd25sb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5wcmV2aW91c1Rhc2tJbml0aWF0ZURhdGFzZXRzID0gZGF0YS5kYXRhLmluaXRpYXRlX3dpZGdldHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnByZXZpb3VzVGFza0V4ZWN1dGVEYXRhc2V0cyA9IGRhdGEuZGF0YS5leGVjdXRlX3dpZGdldHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucHJldmlvdXNEb3dubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgIH07XG4gICAgICAgICAgIFxuICAgICAgICAgICBcbiAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZXRQb3B1bGF0ZU1ldGhvZD0gZnVuY3Rpb24ocG9wdWxhdGVNZXRob2Qpe1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5Qb3B1bGF0ZU1ldGhvZD1wb3B1bGF0ZU1ldGhvZDtcbiAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3B1bGF0ZU1ldGhvZD09J0EnKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jIT11bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpZD0kc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtX2MuaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWQ9PXVuZGVmaW5lZCkgaWQ9JHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jLnJlbGF0ZWRJZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZCE9dW5kZWZpbmVkKSAkc2NvcGUuZmQubG9jYWxWYXJzLmdldEZvcm1XaWRnZXRzKCRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW1fYy5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2V0UG9wdWxhdGVNZXRob2QoJHNjb3BlLmZkLlBvcHVsYXRlTWV0aG9kKTtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNldFBvcHVsYXRlVHlwZT0gZnVuY3Rpb24ocG9wdWxhdGVUeXBlKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUmVsYXRlZFBvcHVsYXRlVHlwZT1wb3B1bGF0ZVR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jIT11bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdldEZvcm1XaWRnZXRzKCRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW1fYy5yZWxhdGVkSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgXG4gICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgXG4gICAgICAgICAgICAgfVxuICAgICAgICB9XG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0UmVhZFNtYXJ0Q29udHJhY3QgKCkge1xyXG4gICBcclxuICAgdmFyIGNvbnRyb2xsZXIgPSBbJyRzY29wZScsICckdWliTW9kYWwnLCAnJHN0YXRlUGFyYW1zJywnJHN0YXRlJywnJHRpbWVvdXQnLCdDb2Rlc1NlcnZpY2UnLCdSZXNvdXJjZXNEYXRhU2VydmljZScsJyRyb290U2NvcGUnLCdDT0RFU19DT05TVCcsJ1Byb2Nlc3NpbmdTZXJ2aWNlJywnTWVzc2FnaW5nU2VydmljZScsJ0dyaWRzdGVyU2VydmljZScsJ1Rhc2tEYXRhU2VydmljZScsJ1dpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UnLCdLYXRhbHlvU3RhdGVNYW5hZ2VyJywnVXRpbGl0eVNlcnZpY2UnLCckdGVtcGxhdGVDYWNoZScsJyRjb21waWxlJywnJGVsZW1lbnQnLFxyXG4gICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoJHNjb3BlLCR1aWJNb2RhbCwkc3RhdGVQYXJhbXMsJHN0YXRlLCR0aW1lb3V0LENvZGVzU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSwkcm9vdFNjb3BlLENPREVTX0NPTlNULFByb2Nlc3NpbmdTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlLFRhc2tEYXRhU2VydmljZSxXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLEthdGFseW9TdGF0ZU1hbmFnZXIsVXRpbGl0eVNlcnZpY2UsJHRlbXBsYXRlQ2FjaGUsJGNvbXBpbGUsJGVsZW1lbnQpIHtcclxuICAgICBcclxuICAgICBcclxuICAgICAgLy8kc2NvcGUuZmQgPSB7fTtcclxuICAgICAgaWYgKCRzY29wZS5mZC5mb3JtRGF0YT09dW5kZWZpbmVkKSAgJHNjb3BlLmZkLmZvcm1EYXRhPVt7fV07XHJcbiAgICAgICRzY29wZS5mZC5zZWFyY2hGb3JtRG93bmxvYWRlZCA9IGZhbHNlO1xyXG4gICAgICAkc2NvcGUuZmQuZm9ybUxvYWRlZD1mYWxzZTtcclxuICAgICAgJHNjb3BlLmZkLnNyY190eXBlX3RleHQ9Q09ERVNfQ09OU1QuX1BPUFVMQVRFX1RZUEVfO1xyXG4gICAgICAkc2NvcGUuZmQuYW5pbWF0aW9uc0VuYWJsZWQgPSB0cnVlO1xyXG4gICAgICAkc2NvcGUuZmQud2lkZ2V0VHlwZSA9IDM7XHJcbiAgICAgICRzY29wZS5nc3J2YyA9IEdyaWRzdGVyU2VydmljZTtcclxuICAgICAgJHNjb3BlLmZkLmZvcm1QYXJhbXM9e2Zvcm1WaWV3VHlwZToxLHNob3dHcmlkTmF2aWdhdGlvbjp0cnVlfTtcclxuICAgICAgJHNjb3BlLmZkLmNvbnRyYWN0RGF0YXNldHMgPSB0cnVlO1xyXG5cclxuXHJcbiAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzID09IHVuZGVmaW5lZCkgICRzY29wZS5sb2NhbFZhcnM9IHt9IFxyXG4gICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dNZW51ID0gZmFsc2VcclxuICAgICAgXHJcbiAgICAgICRzY29wZS5sb2NhbFZhcnMudG9nZ2xlRHJvcGRvd24gPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dNZW51ID0gICRzY29wZS5sb2NhbFZhcnMuc2hvd01lbnUgPyBmYWxzZTogdHJ1ZSBcclxuICAgICAgfVxyXG4gICAgICAgXHJcbiAgICAgICBcclxuICAgICAgJHNjb3BlLmZkLmRhdGFzZXRNYXBwZXJUeXBlPTA7XHJcbiAgICAgIFxyXG4gICAgICBpZiAoJHNjb3BlLmZkLlBvcHVsYXRlVHlwZT09dW5kZWZpbmVkKSAkc2NvcGUuZmQuUG9wdWxhdGVUeXBlPVwiXCI7XHJcbiAgICAgXHJcbiAgICAgICRzY29wZS5mZC5ncmlkc3RlclR5cGU9XCJyZXNvdXJjZVwiO1xyXG4gICAgICAgICAgLy8gJHNjb3BlLmdyaWRzdGVyT3B0cyA9IEdyaWRzdGVyU2VydmljZS5nZXRHcmlkc3Rlck9wdGlvbnMoKTtcclxuICAgICAgICBcclxuICAgICAgJHNjb3BlLmZkLmRhc2hib2FyZCA9IHtcclxuICBcdFx0XHRcdGlkOiAnMScsXHJcbiAgXHRcdFx0XHRuYW1lOiAnSG9tZScsXHJcbiAgXHRcdFx0XHR3aWRnZXRzOiBbXVxyXG4gICAgICB9IDtcclxuICAgICAgICBcclxuICAgIFxyXG4gIFxyXG4gICAgICAvLyRzY29wZS50YXNrSWQ9JHN0YXRlUGFyYW1zLmlkO1xyXG4gICAgICAkc2NvcGUudGFza0lkPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VEZWZJZDtcclxuICAgICAgaWYgKCRzY29wZS50YXNrSWQ9PXVuZGVmaW5lZCkgICRzY29wZS50YXNrSWQ9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZURlZklkX2lkO1xyXG4gICAgICBpZiAoJHNjb3BlLnRhc2tJZD09dW5kZWZpbmVkKSAkc2NvcGUudGFza0lkPTA7XHJcbiAgICAgICRzY29wZS5mZC50YXNrSWQ9JHNjb3BlLnRhc2tJZDtcclxuICAgICAgJHNjb3BlLmZkLlBhcmVudERhdGFzZXREZWZJZD0kc2NvcGUuZmQuUmVsYXRlZDtcclxuICAgICAgJHNjb3BlLnByZXZUYXNrRXhlSWQgPSAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wcmV2X3Rhc2tfaWQ7XHJcbiAgICAgICRzY29wZS5mZC5mb3JtVHlwZT0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fdHlwZTtcclxuICAgICAgJHNjb3BlLnNvdXJjZV90eXBlPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uc291cmNlX3R5cGU7XHJcbiAgICAgICRzY29wZS50YXNrSW5pdGlhdGVJZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udGFza19pbml0aWF0ZV9pZDtcclxuICAgICAgJHNjb3BlLnRhc2tFeGVjdXRlSWQgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRhc2tfZXhlY3V0ZV9pZDtcclxuICAgICAgJHNjb3BlLmZvcm1EZWZpbml0aW9uID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb247XHJcbiAgICAgICAgXHJcbiAgICAgIGlmICAoJHNjb3BlLmZvcm1EZWZpbml0aW9uPT11bmRlZmluZWQpICRzY29wZS5mb3JtRGVmaW5pdGlvbj1mYWxzZTtcclxuICAgICAgICBcclxuICAgICAgJHNjb3BlLmZkLnJlc291cmNlUmVjb3JkSWQ9MDtcclxuICAgICAgaWYgKCRzY29wZS50YXNrSW5pdGlhdGVJZD09dW5kZWZpbmVkKVxyXG4gICAgICB7XHJcbiAgICAgICAgJHNjb3BlLnRhc2tJbml0aWF0ZUlkID0wO1xyXG4gICAgICBcclxuICAgICAgfVxyXG4gICAgICBpZiAoJHNjb3BlLnRhc2tFeGVjdXRlSWQ9PXVuZGVmaW5lZClcclxuICAgICAge1xyXG4gICAgICAgICAkc2NvcGUudGFza0V4ZWN1dGVJZCA9MDsgIFxyXG4gICAgICB9XHJcbiAgICAgICAgaWYgKCRzY29wZS5wcmV2VGFza0V4ZUlkPT11bmRlZmluZWQpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAkc2NvcGUucHJldlRhc2tFeGVJZCA9MDtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgIC8vcmVnaXN0ZXIgd2lkZ2V0IFxyXG4gICAgICB2YXIgb3V0X2ZpZWxkcyA9IFsncmVzb3VyY2VJZCddO1xyXG4gICAgICAvL2lmICgkc2NvcGUuZmQuTG9jYWxJZD09dW5kZWZpbmVkIHx8ICRzY29wZS5mZC5Mb2NhbElkPT1udWxsIHx8ICRzY29wZS5mZC5Mb2NhbElkPT0wKVxyXG4gICAgICAvL3tcclxuICAgICAgICAgdmFyIHdpZGdldERlZmluaXRpb24gPSB7REVJOiBbeyduYW1lJzoncmVzb3VyY2VMaW5rJywndmFsdWUnOlt7bmFtZToncmVzb3VyY2VJZCcsdmFsdWU6JHNjb3BlLmZkLlJlbGF0ZWR9LHtuYW1lOidyZXNvdXJjZVJlY29yZElkJyx2YWx1ZTonJ31dfV0sYWN0aW9uczogW3tuYW1lOidQcmVwYXJlRGF0YScsc3RhdHVzOmZhbHNlfV0sbmFtZTogJ3ZpZXdSZXNvdXJjZVdpZGdldCcsd2lkZ2V0SWQ6ICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCx0YXNrX2luaXRpYXRlX2lkOiRzY29wZS50YXNrSW5pdGlhdGVJZCx0YXNrX2V4ZWN1dGVfaWQ6JHNjb3BlLnRhc2tFeGVjdXRlSWQsdGFza0lkOiAgJHNjb3BlLmxUYXNrSWQscmVzb3VyY2VEZWZJZCA6ICRzY29wZS5mZC5zZWxlY3RlZFJlc291cmNlLCBvdXRwdXQ6b3V0X2ZpZWxkcywgfTtcclxuICAgICAgICAgJHNjb3BlLmZkLmxvY2FsV2lkZ2V0SWQgPSBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnJlZ2lzdGVyV2lkZ2V0KHdpZGdldERlZmluaXRpb24pO1xyXG4gICAgICAgICAkc2NvcGUuZmQuTG9jYWxJZD0kc2NvcGUuZmQubG9jYWxXaWRnZXRJZDtcclxuICAgICAgICAgJHNjb3BlLmZkLkxvY2FsSWQ9JHNjb3BlLmZkLmxvY2FsV2lkZ2V0SWQ7XHJcbiAgICAgICAgIC8vJHNjb3BlLmZkLkxvY2FsSWQ9VXRpbGl0eVNlcnZpY2UudXVpZE5vdygpO1xyXG4gICAgICAgICBcclxuICAgICAgLy99XHJcbiAgICAgICRzY29wZS5rc20gPSBLYXRhbHlvU3RhdGVNYW5hZ2VyO1xyXG4gICAgICBcclxuICAgICAgbGV0IHVwZGF0ZV9wcmVzZW50YXRpb25faWQgPSBmdW5jdGlvbihkYXRhKVxyXG4gICAgICB7XHJcbiAgICAgICAgIGlmIChkYXRhWyRzY29wZS5mZC5Mb2NhbElkXT4wICYmICgkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PW51bGwgfHwgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT0wKSkgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkID0gZGF0YVskc2NvcGUuZmQuTG9jYWxJZF07XHJcbiAgICAgICAgICAvL3Vuc3Vic2NyaWJlIGhlcmUgbGF0ZXIgYWZ0ZXIgaW1wbGVtZW50aW5nIHVuc3Vic2NyaWJlIC0gVG9Eb1xyXG4gICAgICAgICAgXHJcbiAgICAgIH1cclxuICAgICAgaWYgKCRzY29wZS5mZC5QcmVzZW50YXRpb25JZD09MCB8fCAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PW51bGwpXHJcbiAgICAgIHtcclxuICAgICAgICAgXHJcbiAgICAgICAgIGxldCBkZXBlbmRlbnRfZmllbGQgPSAkc2NvcGUuZmQuTG9jYWxJZDtcclxuICAgICAgICAgbGV0IHN1YnNjcmliZWRTdWJqZWN0ID0gXCJmb3JtRGVmaW5pdGlvblN0YXRlXCIrJHNjb3BlLnRhc2tJZCskc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fdHlwZTtcclxuICAgICAgICAgbGV0IG9ic2VydmVyID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3QsZGVwZW5kZW50X2ZpZWxkLFwiZm9ybVNhdmVkXCIsdXBkYXRlX3ByZXNlbnRhdGlvbl9pZCk7XHJcbiAgXHJcbiAgICAgIH0gICAgICAgIFxyXG4gICAgICBcclxuICAgICAgIGxldCBhcHBseV92YWx1ZSA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBsZXQgZG9fcmVmcmVzaD1mYWxzZTtcclxuICAgICAgICAgICAgaWYgKGRhdGEhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICBpZiAoZGF0YSAhPSAkc2NvcGUuZmQucmVzb3VyY2VSZWNvcmRJZClcclxuICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEgPT09J251bWJlcicpICRzY29wZS5mZC5yZXNvdXJjZVJlY29yZElkPSBkYXRhO1xyXG4gICAgICAgICAgICAgICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aD4wKVxyXG4gICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQucmVzb3VyY2VSZWNvcmRJZD0gZGF0YVswXS5pZCAgXHJcbiAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfWVsc2VcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQucmVzb3VyY2VSZWNvcmRJZCA9IGRhdGEuaWQ7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgZG9fcmVmcmVzaCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL2dldCBzZWxlY3RlZFJlY29yZFxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZkLnJlc291cmNlUmVjb3JkSWQgPT0gbnVsbCkgJHNjb3BlLmZkLnJlc291cmNlUmVjb3JkSWQ9MDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgLy8gaWYgKCRzY29wZS5mZC5yZXNvdXJjZVJlY29yZElkPjAgJiYgZG9fcmVmcmVzaCkgJHNjb3BlLmZkLmdldEZvcm1SZXNvdXJjZVdpdGhEYXRhKCk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICBcclxuICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzPT11bmRlZmluZWQpICRzY29wZS5mZC5QYXJhbWV0ZXJzPXt9O1xyXG4gICAgICBcclxuICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLlJlZnJlc2hPbklkQ2hhbmdlKVxyXG4gICAgICB7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAvL2ZpbmQgXHJcbiAgICAgICAgIC8vc3Vic2NyaWJlIG9ic2VydmVyXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgIGxldCBkZXBlbmRlbnRfZmllbGQgPSBcIkZpZWxkXCIrJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkO1xyXG4gICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSBcInJlc291cmNlaWRWYWx1ZVN0YXRlTmFtZVwiKyRzY29wZS5mZC5QYXJhbWV0ZXJzLlJlc291cmNlSWRJdGVtSWQrJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50cmFuc2FjdGlvbl9pZDtcclxuICAgICAgICAgbGV0IHN1YmplY3QgPSAkc2NvcGUua3NtLmFkZFN1YmplY3Qoc3Vic2NyaWJlZFN1YmplY3QsbnVsbCk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgbGV0IG9ic2VydmVyID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3QsZGVwZW5kZW50X2ZpZWxkLFwidmFsdWVDaGFuZ2VkXCIsYXBwbHlfdmFsdWUpO1xyXG4gICAgICAgICBsZXQgdmFsID0gJHNjb3BlLmtzbS5nZXRTdGF0ZShzdWJzY3JpYmVkU3ViamVjdCk7XHJcbiAgICAgICAgICRzY29wZS5mZC5yZXNvdXJjZVJlY29yZElkPSB2YWwuaWQ7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvL2dldCBzZWxlY3RlZFJlY29yZFxyXG4gICAgICAgICBpZiAoJHNjb3BlLmZkLnJlc291cmNlUmVjb3JkSWQgPT0gbnVsbCkgJHNjb3BlLmZkLnJlc291cmNlUmVjb3JkSWQ9MDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgIC8vaWYgKCRzY29wZS5mZC5yZXNvdXJjZVJlY29yZElkPjApICRzY29wZS5mZC5nZXRGb3JtUmVzb3VyY2VXaXRoRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAvL3N1YnNjcmliZSBvYnNlcnZlclxyXG4gICAgICBpZiAoJHNjb3BlLmZkLlBvcHVsYXRlVHlwZS50b1N0cmluZygpLnN1YnN0cigwLDEpPT1cIjRcIilcclxuICAgICAge1xyXG4gICAgICAgICBcclxuICAgICAgICBpZiAoJHNjb3BlLmZkLlNyY1dpZGdldElkIT11bmRlZmluZWQgJiYgJHNjb3BlLmZkLlNyY1dpZGdldElkIT1udWxsKVxyXG4gICAgICAgIFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGxldCBkZXBlbmRlbnRfZmllbGQgPSBcIkZpZWxkXCIrJHNjb3BlLmZkLlNyY1dpZGdldElkO1xyXG4gICAgICAgICAgICAgICAvLyBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSAkc2NvcGUuZmQuUGFyYW1ldGVycy5TcmNXaWRnZXRUeXBlK1wiVmFsdWVTdGF0ZU5hbWVcIiskc2NvcGUuZmQuU3JjV2lkZ2V0SWQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSBcInJsaXN0VmFsdWVTdGF0ZU5hbWVcIiskc2NvcGUuZmQuU3JjV2lkZ2V0SWQrJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50cmFuc2FjdGlvbl9pZDtcclxuICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlciA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0LGRlcGVuZGVudF9maWVsZCxcInZhbHVlQ2hhbmdlZFwiLGFwcGx5X3ZhbHVlKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfSAgXHJcbiAgICAgICAgIFxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBsZXQgcmVmcmVzaF93aWRnZXRfZGF0YSA9IGZ1bmN0aW9uKClcclxuICAgICAgXHJcbiAgICAgIHtcclxuICAgICAgICAvLyAkc2NvcGUuZmQuZ2V0Rm9ybVJlc291cmNlV2l0aERhdGEoKTsgICAgXHJcbiAgICAgICAgIFxyXG4gICAgICB9XHJcbiAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5FdmVudE5hbWUhPXVuZGVmaW5lZClcclxuICAgICAge1xyXG4gICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuRXZlbnROYW1lIT1cIlwiKVxyXG4gICAgICAgICB7XHJcbiAgICAgICAgICAgIGxldCBkZXBlbmRlbnRfZmllbGQyID0gXCJGaWVsZFwiKyRzY29wZS5mZC5QcmVzZW50YXRpb25JZDtcclxuICAgICAgICAgICAgbGV0IHN1YnNjcmliZWRTdWJqZWN0MiA9IFwidGFza1wiKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udHJhbnNhY3Rpb25faWQ7XHJcbiAgICAgICAgICAgIGxldCBvYnNlcnZlcjIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdDIsZGVwZW5kZW50X2ZpZWxkMiwkc2NvcGUuZmQuUGFyYW1ldGVycy5FdmVudE5hbWUscmVmcmVzaF93aWRnZXRfZGF0YSk7XHJcbiAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgJHNjb3BlLmZkLnNob3dQcm9wZXJ0aWVzPWZ1bmN0aW9uKGRhdGFzZXRNYXBwZXJUeXBlKVxyXG4gICAgICB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmRhdGFzZXRNYXBwZXJUeXBlPT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgJHNjb3BlLmZkLmRhdGFzZXRNYXBwZXJUeXBlID0gZGF0YXNldE1hcHBlclR5cGU7XHJcbiAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCAkc2NvcGUuZmQuZGF0YXNldE1hcHBlclR5cGUhPWRhdGFzZXRNYXBwZXJUeXBlKSAkc2NvcGUuZmQuZGF0YXNldE1hcHBlclR5cGUgPSBkYXRhc2V0TWFwcGVyVHlwZTtcclxuICAgICAgICAgICAgICAgZWxzZSAkc2NvcGUuZmQuZGF0YXNldE1hcHBlclR5cGU9MDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgfTtcclxuICAgICAgICAgICBcclxuICAgICAgJHNjb3BlLmZkLnNldEZpZWxkID0gZnVuY3Rpb24oZm9ybSxuYW1lLHZhbHVlLG1zZylcclxuICAgICAge1xyXG4gICAgICAgICBUYXNrRGF0YVNlcnZpY2Uuc2V0RmllbGQoZm9ybSxuYW1lLHZhbHVlKTtcclxuICAgICAgICAgaWYgKG1zZykgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKG1zZywnaW5mbycpO1xyXG4gICAgICB9OyAgXHJcbiAgICAgIFxyXG4gICAgICAkc2NvcGUuZmQuZ2V0UmVzb3VyY2VBbGwgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZBbGwoJHNjb3BlLmZkLlJlbGF0ZWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5yZXNvdXJjZSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnJlc291cmNlTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkc2NvcGUuZmQuUGFyYW1ldGVycy5BdXRvTG9hZCkgJHNjb3BlLmZkLnJlYWRCbG9ja2NoYWluVmFycygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICRzY29wZS5mZC5yZWFkQmxvY2tjaGFpblZhcnMgPSBmdW5jdGlvbiAoKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICAgLy9sZXQgcHJvdmlkZXI9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLndlYjNQcm92aWRlcjtcclxuICAgICAgICAgICAgICAvLyRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci53ZWIzSW5mdXJhID0gbmV3IFdlYjMobmV3IFdlYjMucHJvdmlkZXJzLldlYnNvY2tldFByb3ZpZGVyKCd3c3M6Ly9yb3BzdGVuLmluZnVyYS5pby93cy92My9kNTYxOWE0MTkwNWE0MWY4OGM1ZTc0MmU0MTgwZWYzYycpKVxyXG4gICAgICAgICAgICAgICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci53ZWIzSW5mdXJhID0gbmV3IFdlYjMobmV3IFdlYjMucHJvdmlkZXJzLkh0dHBQcm92aWRlcignaHR0cHM6Ly9tYWlubmV0LmluZnVyYS5pby92My9kNTYxOWE0MTkwNWE0MWY4OGM1ZTc0MmU0MTgwZWYzYycpKVxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLnJlYWRCbG9ja2NoYWluVmFycygkc2NvcGUuZmQucmVzb3VyY2UuUGFyYW1ldGVycy5Db250cmFjdElkLCRzY29wZS5mZC5yZXNvdXJjZS5QYXJhbWV0ZXJzLkNvbnRyYWN0QWJpKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5mb3JtRGF0YVswXT1kYXRhLmRhdGEudmFycztcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmdldEZvcm1SZXNvdXJjZU9yaWdpbmFsKCAkc2NvcGUuZmQucmVzb3VyY2UuUGFyYW1ldGVycy5QdWJsaWNWYXJzRGF0YXNldElkLmlkKTtcclxuXHJcbiAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICAgXHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICRzY29wZS5mZC5nZXRGb3JtUmVzb3VyY2VPcmlnaW5hbCA9IGZ1bmN0aW9uKGRhdGFzZXRJZCl7XHJcbiAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QcmVzZW50YXRpb25JZD09bnVsbClcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQgPSAwO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICRzY29wZS5mZC5mb3JtTG9hZGVkPWZhbHNlO1xyXG4gICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRm9ybShkYXRhc2V0SWQsXCJpXCIsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQucmVzb3VyY2VXaWRnZXREZWZpbml0aW9uPSBkYXRhLmRhdGEucmVzb3VyY2VEZWZpbml0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEuZGF0YS53aWRnZXRzKSkgJHNjb3BlLmZkLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCA9ICBkYXRhLmRhdGEud2lkZ2V0cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLnNlbGVjdGVkUmVzb3VyY2VJdGVtIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZT0kc2NvcGUuZmQucmVzb3VyY2VXaWRnZXREZWZpbml0aW9uLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ucmVsYXRlZElkPSRzY29wZS5mZC5SZWxhdGVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnNlbGVjdGVkUmVzb3VyY2VJdGVtLnByZXNlbnRhdGlvbklkPSRzY29wZS5mZC5QcmVzZW50YXRpb25JZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5zZWxlY3RlZFJlc291cmNlSXRlbS5zcmNfdHlwZV9pZD0kc2NvcGUuZmQuUG9wdWxhdGVUeXBlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnNlbGVjdGVkUmVzb3VyY2VJdGVtLnNyY190eXBlX3RleHQ9JHNjb3BlLmZkLnNyY190eXBlX3RleHRbJHNjb3BlLmZkLlBvcHVsYXRlVHlwZV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ucGFyZW50RWxlbWVudElkPSRzY29wZS5mZC5QYXJlbnRFbGVtZW50SWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnNlbGVjdGVkUmVzb3VyY2VJdGVtPXsnbmFtZSc6JHNjb3BlLmZkLnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbi5uYW1lLCdyZWxhdGVkSWQnOiRzY29wZS5mZC5SZWxhdGVkLCAncHJlc2VudGF0aW9uSWQnOiRzY29wZS5mZC5QcmVzZW50YXRpb25JZCAgLCdzcmNfdHlwZV9pZCc6JHNjb3BlLmZkLlBvcHVsYXRlVHlwZSwnc3JjX3R5cGVfdGV4dCc6JHNjb3BlLmZkLnNyY190eXBlX3RleHRbJHNjb3BlLmZkLlBvcHVsYXRlVHlwZV0sJ3BhcmVudEVsZW1lbnRJZCc6JHNjb3BlLmZkLlBhcmVudEVsZW1lbnRJZH07XHJcbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLndJdGVtVmFsdWU9ZGF0YS5kYXRhLndpZGdldHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9ICRlbGVtZW50LmNoaWxkcmVuKCkuZXEoMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JpZHN0ZXJTZXJ2aWNlLnNldHVwRHJhZ3VsYXIoJHNjb3BlLmZkLndJdGVtVmFsdWUsY29udGFpbmVyLCdyb3dzLScrJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLCdyb3ctJyskc2NvcGUuZmQuZ3JpZHN0ZXJUeXBlKyctaGFkbGUnLHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9NSUdPUiAtIGJpdG5vIC0gRE9CSU8gUkVTT1VSQ0VSRUNPUkQtSUQgWkEgQlJPQURDQVNUICAtIEFERF9SRVNPVVJDRSBXSURHRVRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnNldERhdGEoe3dpZGdldElkOiRzY29wZS5mZC5QcmVzZW50YXRpb25JZCwgREVJOiBbeyduYW1lJzoncmVzb3VyY2VMaW5rJywndmFsdWUnOlt7bmFtZToncmVzb3VyY2VJZCcsdmFsdWU6JHNjb3BlLmZkLlJlbGF0ZWR9LHtuYW1lOidyZXNvdXJjZVJlY29yZElkJyx2YWx1ZTokc2NvcGUuZmQuUmVzb3VyY2VSZWNvcmRJZH1dfV19KTtcclxuXHRcdFx0XHRcdFx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuc2VhcmNoRm9ybURvd25sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kdGltZW91dChmdW5jdGlvbigpeyRzY29wZS5mZC5mb3JtTG9hZGVkPXRydWV9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5mb3JtTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAkc2NvcGUuZmQuc2V0RmllbGQoJHNjb3BlLmZkLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCwnUmVhZE9ubHknLHRydWUpOyAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuc2V0RmllbGQoJHNjb3BlLmZkLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCwnUmVxdWlyZWQnLGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRzY29wZS5mZC5yZWFkQmxvY2tjaGFpblZhcnMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgfTtcclxuICAgICAgJHNjb3BlLmZkLmdyaWRPcHRpb25zID0ge1xyXG4gICAgICAgICBcclxuICAgICAgICAgc2hvd0dyaWRGb290ZXI6IHRydWUsXHJcbiAgICAgICAgc2hvd0NvbHVtbkZvb3RlcjogdHJ1ZSxcclxuICAgICAgICBlbmFibGVSb3dTZWxlY3Rpb246IHRydWUsXHJcbiAgICAgICAgbXVsdGlTZWxlY3Q6IGZhbHNlLFxyXG4gICAgICAvLyAgZW5hYmxlSG9yaXpvbnRhbFNjcm9sbGJhciA6IDEsXHJcbiAgICAgICAvLyBlbmFibGVWZXJ0aWNhbFNjcm9sbGJhciA6IDIsXHJcbiAgICAgICAgZW5hYmxlRmlsdGVyaW5nOiB0cnVlLFxyXG4gICAgICAgIGVuYWJsZVJvd0hlYWRlclNlbGVjdGlvbjogZmFsc2UsXHJcbiAgICAgICAgZW5hYmxlQ29sdW1uUmVzaXppbmc6IHRydWUsXHJcbiAgICAgICAgZW5hYmxlQ29sdW1uUmVvcmRlcmluZzogdHJ1ZSxcclxuICAgICAgICAvL3VzZUV4dGVybmFsUGFnaW5hdGlvbjogZmFsc2UsXHJcbiAgICAgICAgcGFnaW5hdGlvblBhZ2VTaXplczogWzEwLCAyNSwgNTAsMTAwLDIwMCw1MDAsMTAwMCw1MDAwLDEwMDAwXSxcclxuICAgICAgfVxyXG4gICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLmdldEZvcm1SZXNvdXJjZSA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICAgICRzY29wZS5mZC5mb3JtTG9hZGVkPWZhbHNlO1xyXG4gICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT1udWxsKVxyXG4gICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPTA7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICRzY29wZS5mZC5mb3JtTG9hZGluZz10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VGb3JtRXh0ZW5kZWQoJHNjb3BlLmZkLnJlc291cmNlLlBhcmFtZXRlcnMsJHNjb3BlLnRhc2tJZCwkc2NvcGUuZmQuZm9ybVR5cGUsJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLFwid1wiLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQucmVzb3VyY2VXaWRnZXREZWZpbml0aW9uPSBkYXRhLmRhdGEucmVzb3VyY2VEZWZpbml0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YS5kYXRhLndpZGdldHMpKSAkc2NvcGUuZmQuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0ID0gIGRhdGEuZGF0YS53aWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0hPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lPSRzY29wZS5mZC5yZXNvdXJjZVdpZGdldERlZmluaXRpb24ubmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5zZWxlY3RlZFJlc291cmNlSXRlbS5yZWxhdGVkSWQ9JHNjb3BlLmZkLlJlbGF0ZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ucHJlc2VudGF0aW9uSWQ9JHNjb3BlLmZkLlByZXNlbnRhdGlvbklkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnNlbGVjdGVkUmVzb3VyY2VJdGVtLnNyY190eXBlX2lkPSRzY29wZS5mZC5Qb3B1bGF0ZVR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0uc3JjX3R5cGVfdGV4dD0kc2NvcGUuZmQuc3JjX3R5cGVfdGV4dFskc2NvcGUuZmQuUG9wdWxhdGVUeXBlXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5zZWxlY3RlZFJlc291cmNlSXRlbS5wYXJlbnRFbGVtZW50SWQ9JHNjb3BlLmZkLlBhcmVudEVsZW1lbnRJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW09eyduYW1lJzokc2NvcGUuZmQucmVzb3VyY2VXaWRnZXREZWZpbml0aW9uLm5hbWUsJ3JlbGF0ZWRJZCc6JHNjb3BlLmZkLlJlbGF0ZWQsICdwcmVzZW50YXRpb25JZCc6JHNjb3BlLmZkLlByZXNlbnRhdGlvbklkICAsJ3NyY190eXBlX2lkJzokc2NvcGUuZmQuUG9wdWxhdGVUeXBlLCdzcmNfdHlwZV90ZXh0Jzokc2NvcGUuZmQuc3JjX3R5cGVfdGV4dFskc2NvcGUuZmQuUG9wdWxhdGVUeXBlXSwncGFyZW50RWxlbWVudElkJzokc2NvcGUuZmQuUGFyZW50RWxlbWVudElkfTtcclxuIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLndJdGVtVmFsdWU9ZGF0YS5kYXRhLndpZGdldHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5zZWFyY2hGb3JtRG93bmxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZm9ybUxvYWRpbmc9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgJHNjb3BlLmZkLnNldEZpZWxkKCRzY29wZS5mZC5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQsJ1JlYWRPbmx5Jyx0cnVlKTsgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnNldEZpZWxkKCRzY29wZS5mZC5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQsJ1JlcXVpcmVkJyxmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmZvcm1Mb2FkaW5nPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgXHJcbiAgICAgICAgICAgJHNjb3BlLmZkLnNldFNlbGVjdGVkRGF0YXNldCA9IGZ1bmN0aW9uKGlkKSAge1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW09PXVuZGVmaW5lZCkgJHNjb3BlLmZkLnNlbGVjdGVkUmVzb3VyY2VJdGVtPXt9O1xyXG4gICAgICAgICAgICAgIHZhciBwb3MgPSAkc2NvcGUuZmQucmVzb3VyY2VMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKGlkKTtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBpZiAocG9zPj0wKXtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5zZWxlY3RlZFJlc291cmNlSXRlbS5pZCA9ICRzY29wZS5mZC5yZXNvdXJjZUxpc3RbcG9zXS5pZDtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lID0gJHNjb3BlLmZkLnJlc291cmNlTGlzdFtwb3NdLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQuc2VsZWN0ZWREYXRhc2V0ID0gJHNjb3BlLmZkLnJlc291cmNlTGlzdFtwb3NdO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkID0gJHNjb3BlLmZkLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWUgKycgKCcrJHNjb3BlLmZkLnNlbGVjdGVkUmVzb3VyY2VJdGVtLmlkICsnKSdcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5zZWxlY3RlZFJlc291cmNlSXRlbV9jPSRzY29wZS5mZC5zZWxlY3RlZFJlc291cmNlSXRlbTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIC8vIFBPUFVOSSBMSVNUVSBERUZJTklDSUpBIE9EIFJFU1VSU0EgKFJFU09VUkNFUyBMSVNUKVxyXG5cdCRzY29wZS5mZC5nZXRSZXNvdXJjZXMgPSBmdW5jdGlvbigpICB7XHJcblx0XHRcdFx0XHRcdFxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZkLnJlc291cmNlTGlzdD09dW5kZWZpbmVkKSAkc2NvcGUuZmQucmVzb3VyY2VMaXN0PVtdO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUobGFuZywnc21hcnRjb250cmFjdCcpLnRoZW4oXHJcblx0XHRcdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgJHNjb3BlLmZkLnJlc291cmNlTGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlJlbGF0ZWQhPW51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuc2V0U2VsZWN0ZWREYXRhc2V0KCRzY29wZS5mZC5SZWxhdGVkKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ICAgICBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCB9KTtcclxuXHRcdFx0XHRcdH1cclxuICAgXHJcblxyXG4kc2NvcGUuZmQuZ2V0UHJldmlvdXNUYXNrV2lkZ2V0ICA9IGZ1bmN0aW9uKGxpbmtUeXBlKVxyXG4gICAge1xyXG4gICAgICB2YXIgcFRhc2tEYXRhO1xyXG4gICAgICB2YXIgcFRhc2tEYXRhUmV0ID0gV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5nZXRQcmV2VGFza0RhdGEoJHNjb3BlLnByZXZUYXNrRXhlSWQpO1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShwVGFza0RhdGFSZXQpICYmIHBUYXNrRGF0YVJldC5sZW5ndGg+MCkgcFRhc2tEYXRhID0gcFRhc2tEYXRhUmV0WzBdO1xyXG4gICAgICAgICAgICB2YXIgZGF0YXNldElkPTAsZGF0YXNldFJlY29yZElkPTA7XHJcbiAgICAgICAgICAgIGlmIChwVGFza0RhdGEhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICBpZiAocFRhc2tEYXRhLkRFSSE9dW5kZWZpbmVkICYmIHBUYXNrRGF0YS5ERUkhPW51bGwpXHJcbiAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8cFRhc2tEYXRhLkRFSS5sZW5ndGg7aSsrKVxyXG4gICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgaWYgKHBUYXNrRGF0YS5ERUlbaV0ubmFtZT09bGlua1R5cGUpXHJcbiAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgaWYgKHBUYXNrRGF0YS5ERUlbaV0udmFsdWUhPXVuZGVmaW5lZCAmJiBwVGFza0RhdGEuREVJW2ldLnZhbHVlIT1udWxsKVxyXG4gICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7ajxwVGFza0RhdGEuREVJW2ldLnZhbHVlLmxlbmd0aDtqKyspXHJcbiAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChwVGFza0RhdGEuREVJW2ldLnZhbHVlW2pdLm5hbWU9PVwicmVzb3VyY2VJZFwiICYmIHBUYXNrRGF0YS5ERUlbaV0udmFsdWVbal0udmFsdWUhPXVuZGVmaW5lZCkgZGF0YXNldElkPXBUYXNrRGF0YS5ERUlbaV0udmFsdWVbal0udmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocFRhc2tEYXRhLkRFSVtpXS52YWx1ZVtqXS5uYW1lPT1cInJlc291cmNlUmVjb3JkSWRcIiAmJiBwVGFza0RhdGEuREVJW2ldLnZhbHVlW2pdLnZhbHVlIT11bmRlZmluZWQpIGRhdGFzZXRSZWNvcmRJZD1wVGFza0RhdGEuREVJW2ldLnZhbHVlW2pdLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICByZXR1cm4geydkYXRhc2V0SWQnOmRhdGFzZXRJZCwnZGF0YXNldFJlY29yZElkJzpkYXRhc2V0UmVjb3JkSWR9O1xyXG4gICAgfTtcclxuXHJcblxyXG4gICBcclxuICAgXHJcbiAgJHNjb3BlLmZkLnByZXZpb3VzVGFza0RhdGE9JHNjb3BlLmZkLmdldFByZXZpb3VzVGFza1dpZGdldChcInJlc291cmNlTGlua0RhdGFzZXRMaXN0XCIpO1xyXG4gXHJcbiAgICAgICAgICBcclxuICBpZiAoJHNjb3BlLmZkLlJlbGF0ZWQhPW51bGwgJiYgICEkc2NvcGUuZm9ybURlZmluaXRpb24gJiYgISRzY29wZS5mZC5zZWFyY2hGb3JtRG93bmxvYWRlZClcclxuICB7XHJcbiAgICAgJHNjb3BlLmZkLmdldFJlc291cmNlQWxsKCk7XHJcbiAgICBcclxuICB9XHJcbiAgZWxzZSBpZiAoJHNjb3BlLmZkLlJlbGF0ZWQhPW51bGwpXHJcbiAge1xyXG4gICAgIC8vJHNjb3BlLmZkLmdldEZvcm1SZXNvdXJjZSgpO1xyXG4gICAgICRzY29wZS5mZC5nZXRSZXNvdXJjZXMoKTtcclxuICAgICAkc2NvcGUuZmQuZ2V0UmVzb3VyY2VBbGwoKTtcclxuICAgICAvLyRzY29wZS5mZC5zZXRTZWxlY3RlZERhdGFzZXQoJHNjb3BlLmZkLlJlbGF0ZWQpO1xyXG4gICAgXHJcbiAgfSBcclxuXHJcbiAgICAgICAgJHNjb3BlLmZkLnByb2Nlc3NXaWRnZXREZXBlbmRlbmNpZXMgPSBmdW5jdGlvbigpIHsgLy8tLS0tLSAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICBpZiAoJHNjb3BlLmZkLnRJdGVtVmFsdWUhPXVuZGVmaW5lZCkgXHJcbiAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPCAkc2NvcGUuZmQudEl0ZW1WYWx1ZS5sZW5ndGg7aSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbGlua2VkV2lkZ2V0SWQ9JHNjb3BlLmZkLnRJdGVtVmFsdWVbaV0ud2lkZ2V0SWQ7ICAvLyBsaW5rZWRXaWRnZXRJZD0gV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5nZXRMb2NhbFdpZGdldElkKGxpbmtlZFdpZGdldElkKTsvL01JR09SIC0gbW9yYW0gZG9iaXRpIGxvY2Fsd2lkZ2V0SWQgb2QgdmV6YW5vZyBXaWRnZXRJZCBcclxuICAgICAgICAgICAgICAgIHZhciBsaW5rZWRJdGVtID0gJ3Jlc291cmNlTGluaycgICAgICAgICAgICAgICAgICAgICAgLy92YXIgbGlua2VkSXRlbSA9ICRzY29wZS5mZC50SXRlbVZhbHVlW2ldLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKGxpbmtlZFdpZGdldElkIT11bmRlZmluZWQgJiYgbGlua2VkV2lkZ2V0SWQhPW51bGwgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wO2o8JHNjb3BlLmZkLnRJdGVtVmFsdWVbaV0uREVJLmxlbmd0aDtqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgkc2NvcGUuZmQudEl0ZW1WYWx1ZVtpXS5ERUlbal0ubmFtZT09bGlua2VkSXRlbSkgJiYgKCRzY29wZS5mZC50SXRlbVZhbHVlW2ldLkRFSVtqXS52YWx1ZT09dHJ1ZSkpIHsgLy9TQ09QRS5PTiBzYW1vIGthZCBqZSBERUkgdmFsdWUgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxpbmtlZEl0ZW0gPSAkc2NvcGUuZmQudEl0ZW1WYWx1ZVtpXS5ERUlbal0ubmFtZTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ2aWV3IFwiKyRzY29wZS5mZC5QcmVzZW50YXRpb25JZCtcIiBzZSB2ZXplIG5hIHNlcnZlcnNraSBcIiArIGxpbmtlZFdpZGdldElkKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRvbignRXZlbnQnK2xpbmtlZFdpZGdldElkK2xpbmtlZEl0ZW0sZnVuY3Rpb24oZXZlbnQsIGRhdGEpeyAgLy9pZGUgcG8gc3ZpbSB2ZXphbmltIHdpZGdldGltYSBpIGRvZGFqICRzY29wZS5vbiAgIC8vTUlHT1IgVE9ETyAtIERPREFUSSBTQU1PIFUgU0xVQ0FKVSBEQSBKRSBERUkgVkFMVUUgPSBUUlVFICEhISEgICAgIDw8PDw8PDw8PDw8PDwgISEhISEhISEhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICBjb25zb2xlLmxvZyhcInZpZXcgXCIrICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCtcIiBkb2JpbyBldmVudCBcIiArIGV2ZW50Lm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGs9MDtrPGRhdGEubGVuZ3RoO2srKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFba10ubmFtZT09J3Jlc291cmNlUmVjb3JkSWQnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubGlua2VkUmVzb3VyY2VJZCA9IGRhdGFba10udmFsdWU7IC8vVE9ETyAtIElMSiAtIG92byBiaSBpc3RvIHRyZWJhbGEgYml0aSB2YXJpamFibGEgLSBzdGEgYWtvIHByb21qZW5pbSBpbnRlcmZhY2Ugb2Rub3NubyBuYXppdiBwb2xqYSFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnJlc291cmNlUmVjb3JkSWQgPSAkc2NvcGUuZmQubGlua2VkUmVzb3VyY2VJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhW2tdLm5hbWU9PSdyZXNvdXJjZUlkJykgJHNjb3BlLmZkLmxpbmtlZFJlc291cmNlRGVmSWQgPSBkYXRhW2tdLnZhbHVlOyAgLy9UT0RPLSBJTEogLSBvdm8gYmkgaXN0byB0cmViYWxhIGJpdGkgdmFyaWphYmxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2dldCBzZWxlY3RlZFJlY29yZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRzY29wZS5mZC5nZXRGb3JtUmVzb3VyY2VXaXRoRGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1x0ZGF0YToge3Jlc291cmNlX2RlZl9pZDokc2NvcGUuZmQubGlua2VkUmVzb3VyY2VEZWZJZCxyZXNvdXJjZV9pZDokc2NvcGUuZmQubGlua2VkUmVzb3VyY2VJZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIC8vb25fRU5EXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0vL2lmXHJcbiAgICAgICAgICAgICAgICAgICAgfS8vZm9yIGpcclxuICAgICAgICAgICAgICAgIH0vL2lmXHJcblxyXG4gICAgICAgICAgICAgLy8gZWxzZSB7ICAkc2NvcGUuZmQudEl0ZW1WYWx1ZS5zcGxpY2UoaSwxKTsgIH0gLy8gbmlqZSBtaSBqYXNubyB6YXN0byBzYW0gcmFkaW8gU1BMSUNFXHJcbiAgICAgICAgICAgIH0gLy9mb3IgaVxyXG4gICAgICB9Ly9mbiAgcHIwY2Vzc1dpZGdldERlcGVuZGVjaWVzIC0tLS0tLS0tLS0tLS0gICAga3RWaWV3U2luZ2xlUmVzb3VyY2VXaWRnZXRcclxuXHJcbiAgICAgICAgICBpZiAoJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT11bmRlZmluZWQgfHwgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT1udWxsKSAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9MDtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgJHNjb3BlLmZkLmZvcm1UeXBlPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV90eXBlO1xyXG4gICAgICAgICAgLypcclxuICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5nZXRXaWRnZXREZXBlbmRlbmNpZXMoJHNjb3BlLnRhc2tJZCwkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsJHNjb3BlLmZkLmZvcm1UeXBlKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC50SXRlbVZhbHVlPWRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQucHJvY2Vzc1dpZGdldERlcGVuZGVuY2llcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgIFxyXG4gICAgICAgICAgICBsZXQgdGVtcGxhdGVcclxuICAgICAgICAgICAgdGVtcGxhdGUgPSAkdGVtcGxhdGVDYWNoZS5nZXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0UmVhZFNtYXJ0Q29udHJhY3QuaHRtbCcpO1xyXG4gICAgICAgICAgICAkZWxlbWVudC5hcHBlbmQoJGNvbXBpbGUodGVtcGxhdGUpKCRzY29wZSkpOyBcclxuXHJcbiAgIFxyXG4gIFxyXG4gIFxyXG4gICAgICB9XTtcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgY29udHJvbGxlcjogY29udHJvbGxlcixcclxuICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG5cclxuICAgICAgICAgICAgfSAgICAgXHJcbiAgfVxyXG4gIFxyXG59O1xuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24ga3RSZWdleFZhbGlkYXRvciAoKXsgXG4gICByZXR1cm4ge1xuICAgICAgICByZXN0cmljdDogJ0EnLFxuICAgICAgICByZXF1aXJlOiAnbmdNb2RlbCcsXG4gICAgICAgIGxpbms6IGZ1bmN0aW9uKHNjb3BlLCBlbGVtLCBhdHRyLCBuZ01vZGVsKSB7ICAgICAgICAgICBcbiAgICAgICAgICBuZ01vZGVsLiR2YWxpZGF0b3JzLmt0UmVnZXhWYWxpZGF0b3IgPSBmdW5jdGlvbihtb2RlbFZhbHVlLCB2aWV3VmFsdWUpIHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKG1vZGVsVmFsdWU9PT11bmRlZmluZWQgJiYgdmlld1ZhbHVlPT09dW5kZWZpbmVkKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgICBsZXQgcmVnZXggPSBhdHRyLmt0UmVnZXhWYWxpZGF0b3I7XG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IG1vZGVsVmFsdWUgfHwgdmlld1ZhbHVlO1xuICAgICAgICAgICAgICBsZXQgdmFsaWQgPSB2YWx1ZS5tYXRjaChyZWdleCk7XG4gICAgICAgICAgICAgIGlmICh2YWxpZCE9PW51bGwpIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuZ01vZGVsLiRzZXRWYWxpZGl0eShzY29wZS5mZC5FcnJvck1zZyxmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfTsgICAgXG4gICAgICB9XG4gICB9O1xufTtcbid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdFJlc291cmNlICgpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJywgXHJcblx0XHRcdGNvbnRyb2xsZXI6IGZ1bmN0aW9uICgkc2NvcGUsICRyb290U2NvcGUsJGVsZW1lbnQsJGNvbXBpbGUsJHRlbXBsYXRlQ2FjaGUsUmVzb3VyY2VzRGF0YVNlcnZpY2UsVGFza0RhdGFTZXJ2aWNlLFByb2Nlc3NpbmdTZXJ2aWNlLCR0aW1lb3V0LCRxLE1lc3NhZ2luZ1NlcnZpY2UsQ09ERVNfQ09OU1QsR3JpZHN0ZXJTZXJ2aWNlLFV0aWxpdHlTZXJ2aWNlLFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UsS2F0YWx5b1N0YXRlTWFuYWdlcikge1xyXG5cclxuXHRcclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2U7ICBcclxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzID0ge31cclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0gID0ge30gXHJcbiAgICAgICAgLy8kc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF1bJHNjb3BlLmZkLmlkXSAgPSB7J2ZkJzogJHNjb3BlLmZkLCAnbG9jYWxWYXJzJzokc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF19ICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSgkc2NvcGUuZmQuTmFtZUZpZWxkKSkgJHNjb3BlLmZkLk5hbWVGaWVsZD17fVxyXG4gICAgICAgIC8vJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmRhc2hib2FyZCA9IHt3aWRnZXRzOltdfVxyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5kYXRhc2V0bGlzdGxpbmtlZCA9IGZhbHNlXHJcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmdyaWRzdGVyVHlwZSA9ICdkYXRhc2V0J1xyXG4gICAgICAgIGlmICgkc2NvcGUuZm9ybURhdGEgPT0gdW5kZWZpbmVkIHx8ICFBcnJheS5pc0FycmF5KCRzY29wZS5mb3JtRGF0YSkpICRzY29wZS5mb3JtRGF0YT1be31dO1xyXG4gICAgICAgIGlmICgkc2NvcGUuZm9ybURhdGEubGVuZ3RoID09IDApICRzY29wZS5mb3JtRGF0YS5wdXNoKHt9KTtcclxuICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdID09PSB1bmRlZmluZWQpICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSA9W3t9XVxyXG4gICAgICAgIGxldCBuZXdWYWx1ZVNpbmdsZSxuZXdWYWx1ZU11bHRpcGxlO1xyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5yZXNvdXJjZVR5cGVzTGlzdD1be3R5cGU6J2RhdGFzZXQnLG5hbWU6J0RhdGFzZXQnLEVsZW1lbnRUeXBlOidyZXNvdXJjZSd9LHt0eXBlOidmaWxlJyxuYW1lOidGaWxlJyxFbGVtZW50VHlwZTonZmlsZSd9XVxyXG5cclxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uVGFibGVQcmVmaXggPSAncmVzb3VyY2UnKyRzY29wZS5mZC5SZWxhdGVkLy8rJ18nKyRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5vcmdhbmlzYXRpb24uaWRcclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uZm9ybVBhcmFtcyA9IHtmb3JtVmlld1R5cGU6MSxzaG93R3JpZE5hdmlnYXRpb246dHJ1ZX1cclxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0ucGFyZW50UmVzb3VyY2VSZWNvcmRJZCA9ICRzY29wZS5yZXNvdXJjZVJlY29yZElkXHJcbiAgICAgICAgJHNjb3BlLmN0cmwgPSB0aGlzO1xyXG4gICAgICAgICRzY29wZS5DVFJMTkFNRT0na3RSZXNvdXJjZSdcclxuXHJcbiAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMgPT0gdW5kZWZpbmVkKSAkc2NvcGUuZmQubG9jYWxWYXJzPXt9XHJcblxyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5TaG93QWR2YW5jZWRQcm9wZXJ0aWVzID0gJHNjb3BlLnBhcmFtcz8uU2hvd0FkdmFuY2VkUHJvcGVydGllc1xyXG4gICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycyA9ICRzY29wZS5sb2NhbFZhcnNcclxuICAgICAgICBcclxuICAgICAgICAvLyRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXT0kc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF1cclxuXHJcbiAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzPT09dW5kZWZpbmVkIHx8ICRzY29wZS5mZC5QYXJhbWV0ZXJzPT09bnVsbCkgJHNjb3BlLmZkLlBhcmFtZXRlcnM9e31cclxuICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuUmVzb3VyY2VSZWxhdGlvbnNoaXBUeXBlPT09dW5kZWZpbmVkKSAkc2NvcGUuZmQuUGFyYW1ldGVycy5SZXNvdXJjZVJlbGF0aW9uc2hpcFR5cGU9J25ldydcclxuICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuRGVmU3RhdGU9PT11bmRlZmluZWQpICRzY29wZS5mZC5QYXJhbWV0ZXJzLkRlZlN0YXRlPSdiYXNpYydcclxuICAgICAgICBcclxuICAgICAgICBpZiAoJHNjb3BlLmZkLkZvcm1EZWZTZWFyY2g9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLkZvcm1EZWZTZWFyY2g9e31cclxuICAgICAgICBcclxuICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuUmVzb3VyY2VUeXBlPT11bmRlZmluZWQpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuUmVzb3VyY2VSZWxhdGlvbnNoaXBUeXBlPT0nZXhpc3RpbmcnKSAgJHNjb3BlLmZkLlBhcmFtZXRlcnMuUmVzb3VyY2VUeXBlPSRzY29wZS5mZC5SZXNvdXJjZVR5cGVcclxuICAgICAgICAgICAgZWxzZSAkc2NvcGUuZmQuUGFyYW1ldGVycy5SZXNvdXJjZVR5cGU9JHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLnJlc291cmNlVHlwZXNMaXN0WzBdLnR5cGVcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLlJlc291cmNlVHlwZT09J2ZpbGUnKSAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uYWN0aW9uRGVmPSBbe2lkOjEsYnRuTGFiZWw6J1ByZXZpZXcgZmlsZScsYnRuQ2xhc3M6J2J0bi1vdXRsaW5lLXByaW1hcnknLGljb246J2ZhIGZhLXNlYXJjaCd9LHtpZDoyLGJ0bkxhYmVsOidEb3dubG9hZCBmaWxlJyxidG5DbGFzczonYnRuLW91dGxpbmUtcHJpbWFyeScsaWNvbjonZmEgZmEtZG93bmxvYWQnfV0gXHJcbiAgICBcclxuICAgICAgICBpZiAoJHNjb3BlLmZkLk1heExlbmd0aD09PXVuZGVmaW5lZCkgJHNjb3BlLmZkLk1heExlbmd0aD0xXHJcbiAgICAgICAgaWYgKCRzY29wZS5mZC5VdWlkUmVmPT11bmRlZmluZWQpICRzY29wZS5mZC5VdWlkUmVmPVV0aWxpdHlTZXJ2aWNlLnV1aWR2NCgpXHJcbiAgICAgICAgJHNjb3BlLmZkLlBhcmFtZXRlcnMuVXVpZFJlZiA9ICRzY29wZS5mZC5VdWlkUmVmXHJcblxyXG4gICAgICAgIGxldCBwYXJlbnRXaWRnZXRVaWQgPSAnJ1xyXG5cclxuICAgICAgICBpZiAoJHNjb3BlLnBhcmVudFdpZGdldCE9dW5kZWZpbmVkKSBwYXJlbnRXaWRnZXRVaWQgPSAkc2NvcGUucGFyZW50V2lkZ2V0KyctJ1xyXG5cclxuICAgICAgICAgbGV0IHdfYWN0aW9ucz1bXHJcbiAgICAgICAgICAgICAgICAgICAge2lkOjAsbmFtZTonY291bnRSZWNvcmRzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAge2lkOjEsbmFtZToncmVmcmVzaERhdGEnfSxcclxuICAgICAgICAgICAgICAgICAgICB7aWQ6MixuYW1lOidkYXRhTG9hZGVkJ30sXHJcbiAgICAgICAgICAgICAgICAgICAge2lkOjMsbmFtZTondmFsdWVDaGFuZ2VkJ30sICBcclxuICAgICAgICAgICAgICAgIF1cclxuXHJcbiAgICAgICAgdmFyIHdpZGdldERlZmluaXRpb24gPSB7REVJOiBbeyduYW1lJzoncmVzb3VyY2VMaW5rRGF0YXNldCcsJ3ZhbHVlJzpbe25hbWU6J3Jlc291cmNlSWQnLHZhbHVlOiRzY29wZS5mZC5SZWxhdGVkfSx7bmFtZToncmVzb3VyY2VSZWNvcmRJZCcsdmFsdWU6Jyd9XX1dLGFjdGlvbnM6IHdfYWN0aW9ucyxuYW1lOiAnZGF0YXNldExpc3RXaWRnZXQnLHdpZGdldExhYmVsOiAnUmVsYXRlZCByZXNvdXJjZSByZWNvcmRzJyx3aWRnZXROYW1lOiAncmVzb3VyY2VXaWRnZXQnLHdpZGdldElkOiBwYXJlbnRXaWRnZXRVaWQrJHNjb3BlLmZkLlV1aWRSZWYsdGFza0lkOiAgJHNjb3BlLmxUYXNrSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VEZWZJZCA6ICRzY29wZS5mZC5SZWxhdGVkLCAvL3Jlc291cmNlRGVmSWQgOiAkc2NvcGUuc2VsZWN0ZWRSZXNvdXJjZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlUmVjb3JkSWQ6JHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLnJlc291cmNlUmVjb3JkSWQsdGFza19pbml0aWF0ZV9pZDokc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRhc2tfaW5pdGlhdGVfaWQsdGFza19leGVjdXRlX2lkOiRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udGFza19leGVjdXRlX2lkLCBvdXRwdXQ6bnVsbCxwYXJlbnRSZXNvdXJjZUlkOiRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udWlkIH07XHJcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmxvY2FsV2lkZ2V0SWQgPSBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnJlZ2lzdGVyV2lkZ2V0KHdpZGdldERlZmluaXRpb24pO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICghJHNjb3BlLmZkLlNhdmVkKSAkc2NvcGUuZmQuSXRlbUlkID0gJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmxvY2FsV2lkZ2V0SWRcclxuXHJcblxyXG4gICAgICAgICRzY29wZS5rc20gPSBLYXRhbHlvU3RhdGVNYW5hZ2VyO1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5wb3B1bGF0ZVZhbHVlID0gZnVuY3Rpb24obmV3VmFsdWUpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbGV0IGlwLHBvc1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZS5pbnB1dFBhcmFtcyE9dW5kZWZpbmVkICYmIG5ld1ZhbHVlLmlucHV0UGFyYW1zIT0nJykgaXAgPSAgSlNPTi5wYXJzZShuZXdWYWx1ZS5pbnB1dFBhcmFtcylcclxuICAgICAgICAgICAgICAgIGlmIChpcD8uZmllbGRJZCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWUuc3RhdGU/Lml0ZW1WYWx1ZT8udmFsKSBwb3MgPSAkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRJdGVtcy5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZCB9KS5pbmRleE9mKG5ld1ZhbHVlLnN0YXRlPy5pdGVtVmFsdWU/LnZhbFtpcD8uZmllbGRJZF0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocG9zPj0wKSAkc2NvcGUuaXRlbVZhbHVlLnZhbCA9ICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldEl0ZW1zW3Bvc11cclxuICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlPy5zdGF0ZT8uc2VsZWN0ZWRJdGVtcykgcG9zID0gJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0SXRlbXMubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQgfSkuaW5kZXhPZihuZXdWYWx1ZS5zdGF0ZT8uc2VsZWN0ZWRJdGVtc1tpcD8uZmllbGRJZF0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3M+PTApICRzY29wZS5pdGVtVmFsdWUudmFsID0gJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0SXRlbXNbcG9zXVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWU/LnN0YXRlPy5pdGVtVmFsdWUpICRzY29wZS5pdGVtVmFsdWUgPSBuZXdWYWx1ZS5zdGF0ZS5pdGVtVmFsdWVcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChuZXdWYWx1ZT8uc3RhdGU/LnNlbGVjdGVkSXRlbXMpICRzY29wZS5pdGVtVmFsdWUudmFsID0gbmV3VmFsdWUuc3RhdGUuc2VsZWN0ZWRJdGVtc1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdID0gJHNjb3BlLml0ZW1WYWx1ZS52YWw7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQuU2VhcmNoLnZhbHVlID0gJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlPy5zdGF0ZSkgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKHZhbHVlU3RhdGVOYW1lLFwidmFsdWVDaGFuZ2VkXCIsIG5ld1ZhbHVlPy5zdGF0ZSlcclxuICAgICAgICAgICAgICAgIGVsc2UgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKHZhbHVlU3RhdGVOYW1lLFwidmFsdWVDaGFuZ2VkXCIsIG5ld1ZhbHVlKVxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2Uuc2V0RGF0YSh7XHJcbiAgICAgICAgICAgICAgICAgICAgREVJOiBbe25hbWU6J3Jlc291cmNlTGlua0RhdGFzZXQnLHZhbHVlOlt7bmFtZToncmVzb3VyY2VJZCcsdmFsdWU6JHNjb3BlLmZkLlJlbGF0ZWR9LHtuYW1lOidyZXNvdXJjZVJlY29yZElkJyx2YWx1ZTpuZXdWYWx1ZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLHtuYW1lOidyZXNvdXJjZVJlY29yZElkcycsdmFsdWU6bmV3VmFsdWV9LHtuYW1lOidyZXNvdXJjZVJlY29yZHNBbGwnLHZhbHVlOiRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldEl0ZW1zfV19XSx3aWRnZXRJZDogJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLHRhc2tfZXhlY3V0ZV9pZDokc2NvcGUudGFza0V4ZWN1dGVJZH0pOyAgIFxyXG4gICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgXHJcbiAgICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICAgICoqKioqKioqKioqKioqKioqKiBTeW5jIGRhdGEgd2l0aCBTdGF0ZSBtYW5hZ2VyICoqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbiAgICAgICBcclxuICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnM9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLlBhcmFtZXRlcnM9e307XHJcbiAgICAgICAgJHNjb3BlLml0ZW1WYWx1ZSA9IHt2YWw6bnVsbH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IHZhbHVlU3RhdGU9ICRzY29wZS5rc20uYWRkU3ViamVjdCgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQrJy0nK3BhcmVudFdpZGdldFVpZCskc2NvcGUuZmQuVXVpZFJlZiwkc2NvcGUuaXRlbVZhbHVlLnZhbCk7XHJcbiAgICAgICAgbGV0IHZhbHVlU3RhdGVOYW1lID0gdmFsdWVTdGF0ZS5zdWJqZWN0Lm5hbWU7XHJcblxyXG4gICAgICAgIGxldCB3clN0YXRlPSAkc2NvcGUua3NtLmFkZFN1YmplY3QoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkKyctJytwYXJlbnRXaWRnZXRVaWQrJHNjb3BlLmZkLlV1aWRSZWYrJy13aWRnZXRSZWFkeScsJHNjb3BlLml0ZW1WYWx1ZS52YWwpO1xyXG4gICAgICAgIGxldCB3clN0YXRlTmFtZSA9IHdyU3RhdGUuc3ViamVjdC5uYW1lO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCB2YWx1ZV9jaGFuZ2VkID0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICB7ICAgXHJcbiAgICAgICAgICAgIHZhbHVlU3RhdGUuc3ViamVjdC5zZXRTdGF0ZUNoYW5nZXMgPSBkYXRhO1xyXG4gICAgICAgICAgICB2YWx1ZVN0YXRlLnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKFwidmFsdWVDaGFuZ2VkXCIpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IGFjdGlvbl92YWx1ZV9jaGFuZ2VkID0gJHNjb3BlLmtzbS5hZGRBY3Rpb24odmFsdWVTdGF0ZU5hbWUsXCJ2YWx1ZUNoYW5nZWRcIix2YWx1ZV9jaGFuZ2VkKTtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgcmVmcmVzaF9kYXRhID0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5HZXRSZXNvdXJjZURhdGFGb3JQYXJlbnQoKVxyXG4gICAgICAgICAgICBsZXQgc3QgPSB2YWx1ZVN0YXRlLnN1YmplY3QuZ2V0U3RhdGVcclxuXHJcbiAgICAgICAgICAgIGlmIChzdD09dW5kZWZpbmVkKSBzdD17fVxyXG4gICAgICAgICAgICBzdFsnYWN0aW9uX2luZGV4J10gPSBkYXRhPy5hY3Rpb25faW5kZXhcclxuICAgICAgICAgICAgdmFsdWVTdGF0ZS5zdWJqZWN0LnNldFN0YXRlQ2hhbmdlcyA9IHN0XHJcbiAgICAgICAgICAgIHZhbHVlU3RhdGUuc3ViamVjdC5ub3RpZnlPYnNlcnZlcnMoXCJyZWZyZXNoRGF0YVwiKVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IGFjdGlvbl9yZWZyZXNoX2RhdGEgPSAkc2NvcGUua3NtLmFkZEFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcInJlZnJlc2hEYXRhXCIscmVmcmVzaF9kYXRhKTtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgd2lkZ2V0X3JlYWR5ID0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgd3JTdGF0ZS5zdWJqZWN0LnNldFN0YXRlQ2hhbmdlcyA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgd3JTdGF0ZS5zdWJqZWN0Lm5vdGlmeU9ic2VydmVycyhcIndpZGdldFJlYWR5XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIGxldCBhY3Rpb25fd2lkZ2V0X3JlYWR5ID0gJHNjb3BlLmtzbS5hZGRBY3Rpb24od3JTdGF0ZU5hbWUsXCJ3aWRnZXRSZWFkeVwiLHdpZGdldF9yZWFkeSk7XHJcblxyXG4gICAgICAgIGxldCBkYXRhX2xvYWRlZCA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB2YWx1ZVN0YXRlLnN1YmplY3Quc2V0U3RhdGVDaGFuZ2VzID0gZGF0YVxyXG4gICAgICAgICAgICAvL25vdGlmeVxyXG4gICAgICAgICAgICB2YWx1ZVN0YXRlLnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKFwiZGF0YUxvYWRlZFwiKVxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgYWN0aW9uX2RhdGFfbG9hZGVkPSAkc2NvcGUua3NtLmFkZEFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcImRhdGFMb2FkZWRcIixkYXRhX2xvYWRlZCk7XHJcblxyXG5cclxuICAgICAgICAgbGV0IGNvdW50X3JlY29yZHMgPSBmdW5jdGlvbihkYXRhKVxyXG4gICAgICAgIHtcclxuXHJcbiAgICAgICAgICAgIC8vdmFsdWVTdGF0ZS5zdWJqZWN0LnNldFN0YXRlQ2hhbmdlcyA9IGRhdGFcclxuXHJcbiAgICAgICAgICAgIGxldCByZXN1bHRcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJlc3VsdCA9IFskc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uZ3JpZERhdGEubGVuZ3RoXVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5ncmlkRGF0YS5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICAgICAvL2FwcGx5IGZpbHRlclxyXG4gICAgICAgICAgICAgICAgbGV0IGtleSx2YWxcclxuICAgICAgICAgICAgICAgIGxldCBpbl9kYXRhID0gZGF0YVsnZXZlbnRzX2RhdGEnXVsnaW5fZGF0YSddXHJcbiAgICAgICAgICAgICAgICBpZiAoaW5fZGF0YT09dW5kZWZpbmVkKSBpbl9kYXRhID0gXCJ7fVwiXHJcbiAgICAgICAgICAgICAgICBsZXQgaW5wdXQgPSBKU09OLnBhcnNlKGluX2RhdGEpXHJcblxyXG4gICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhpbnB1dCkubGVuZ3RoPjApXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gT2JqZWN0LmVudHJpZXMoaW5wdXQpLm1hcCggKFtrZXksIHZhbF0gPSBpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWw9PSdjdXJyZW50VXNlcigpJykgdmFsID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLnVzZXJpZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmdyaWREYXRhLnJlZHVjZSgoY291bnQsIGl0ZW0pID0+IChpdGVtW2tleV0gPT0gdmFsID8gY291bnQgKyAxIDogY291bnQpLCAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBcclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IHN0YXRlID0gdmFsdWVTdGF0ZS5zdWJqZWN0LmdldFN0YXRlXHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQhPXVuZGVmaW5lZCAmJiByZXN1bHQubGVuZ3RoPjApIHN0YXRlWydjb3VudFJlY29yZHMnXSA9IHJlc3VsdFswXVxyXG4gICAgICAgICAgICBlbHNlIHN0YXRlWydjb3VudFJlY29yZHMnXSA9IG51bGxcclxuICAgICAgICAgICAgdmFsdWVTdGF0ZS5zdWJqZWN0LnNldFN0YXRlQ2hhbmdlcyA9IHN0YXRlXHJcblxyXG4gICAgICAgICAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5ldmVudHNbZGF0YS5ldmVudF9pbmRleF0uYWN0aW9uc1tkYXRhLmFjdGlvbl9pbmRleF0uY29tcGxldGVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5ldmVudHNbZGF0YS5ldmVudF9pbmRleF0uYWN0aW9uc1tkYXRhLmFjdGlvbl9pbmRleF0ucmVzdWx0ID0gc3RhdGVbJ2NvdW50UmVjb3JkcyddXHJcbiAgICAgICAgICAgICRzY29wZS5wcm9jZXNzRXZlbnRzKHN0YXRlLGZhbHNlKVxyXG4gICAgICAgICAgICAvL25vdGlmeVxyXG4gICAgICAgICAgICB2YWx1ZVN0YXRlLnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKFwiY291bnRSZWNvcmRzXCIpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBhY3Rpb25fY291bnRfcmVjb3Jkcz0gJHNjb3BlLmtzbS5hZGRBY3Rpb24odmFsdWVTdGF0ZU5hbWUsXCJjb3VudFJlY29yZHNcIixjb3VudF9yZWNvcmRzKTtcclxuXHJcblxyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBhcHBseV92YWx1ZSA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBsZXQgbG9jYWxfZGF0YTsgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGxvY2FsX2RhdGEgPSBkYXRhO1xyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLkRlcGVuZGVudEZpZWxkRmlsdGVyIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5EZXBlbmRlbnRGaWVsZEZpbHRlciE9XCJcIiB8fCAkc2NvcGUuZmQuUGFyYW1ldGVycy5EZXBlbmRlbnRGaWVsZEVsZW1lbnQhPVwiXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5sZW5ndGg+MCkgbG9jYWxfZGF0YSA9IGRhdGFbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGxvY2FsX2RhdGEgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF9kYXRhID0gZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRJdGVtcyA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5TaG93RmllbGQgJiYgISRzY29wZS5mZC5SZWFkT25seSkgZEl0ZW1zID0gJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0SXRlbXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBkSXRlbXMgPSAkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRJdGVtc0hpZGRlbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZEl0ZW1zPT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnJlZnJlc2hEYXRhc2V0RGF0YUxpc3QoXCJcIix0cnVlLGxvY2FsX2RhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfZGF0YT1udWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVsZW1lbnQxLGVsZW1lbnQyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLkRlcGVuZGVudEZpZWxkRmlsdGVyIT1cIlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50MSA9ICRzY29wZS5mZC5QYXJhbWV0ZXJzLkRlcGVuZGVudEZpZWxkRmlsdGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50MiA9IFwiaWRcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDEgPSBcImlkXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQyID0gJHNjb3BlLmZkLlBhcmFtZXRlcnMuRGVwZW5kZW50RmllbGRFbGVtZW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IGRJdGVtcy5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZVtlbGVtZW50MV07IH0pLmluZGV4T2YobG9jYWxfZGF0YVtlbGVtZW50Ml0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3M+PTApIGxvY2FsX2RhdGEgPSBkSXRlbXNbcG9zXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgbG9jYWxfZGF0YSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucG9wdWxhdGVWYWx1ZShsb2NhbF9kYXRhKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5hcHBseV92YWx1ZSA9IGFwcGx5X3ZhbHVlXHJcbiAgICAgICAgXHJcbiAgICAgICAgLypcclxuICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuRGVwZW5kZW50RmllbGRJZCE9dW5kZWZpbmVkICYmICRzY29wZS5mZC5QYXJhbWV0ZXJzLkRlcGVuZGVudEZpZWxkSWQhPW51bGwpXHJcbiAgICAgICAgXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuRGVwZW5kZW50RmllbGRJZCE9XCJcIilcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbGV0IGRlcGVuZGVudF9maWVsZCA9IFwiRmllbGRcIiskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQrXCItXCIrJHNjb3BlLmZkLlBhcmFtZXRlcnMuRGVwZW5kZW50RmllbGRUeXBlK1wiVmFsdWVTdGF0ZU5hbWVcIiskc2NvcGUuZmQuUGFyYW1ldGVycy5EZXBlbmRlbnRGaWVsZElkO1xyXG4gICAgICAgICAgICAgICAgbGV0IG9ic2VydmVyID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3QsZGVwZW5kZW50X2ZpZWxkLFwidmFsdWVDaGFuZ2VkXCIsYXBwbHlfdmFsdWUsdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgdmFsID0gJHNjb3BlLmtzbS5nZXRTdGF0ZShzdWJzY3JpYmVkU3ViamVjdCk7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucG9wdWxhdGVWYWx1ZSh2YWwuc3RhdGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgICovXHJcbiAgICAgICAgICAvKioqKioqKioqKioqIEdldCBzZWxlY3RlZCByZWNvcmRzIGZvciBkcm9wZG93biAqKioqKioqKioqKioqKi9cclxuICAgICAgICAkc2NvcGUuZmQuZ2V0RGF0YXNldExpc3QgPSBmdW5jdGlvbigpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSE9dW5kZWZpbmVkICYmICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXS5sZW5ndGg+MCAmJiAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQhPW51bGwgJiYgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGF0YUxpc3QoJHNjb3BlLmZkLlJlbGF0ZWQsJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLGxhbmcseydpZF9faW4nOiAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV19KS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhPT09dW5kZWZpbmVkKSAkc2NvcGUuZm9ybURhdGEgPSBbe31dO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuTWF4TGVuZ3RoPT0xKSAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0gPSBkYXRhLmRhdGFbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0gPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnBvcHVsYXRlVmFsdWUoJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnNldFNlYXJjaCgkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsJHNjb3BlLnRhc2tFeGVjdXRlSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKHZhbHVlU3RhdGVOYW1lLFwidmFsdWVDaGFuZ2VkXCIsICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuaXRlbVZhbHVlLnZhbCA9ICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXTtcclxuICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5ncmlkRGF0YVJldHJpZXZlZCA9ZmFsc2U7XHJcbiAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0ucmVzdWx0cyA9IHt9IFxyXG4gICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmdyaWREYXRhPVtdXHJcbiAgICBcclxuXHJcbiAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLnByb2Nlc3NUYWJsZUFjdGlvbiA9IGZ1bmN0aW9uKGZpbGUsIGFjdGlvbklkKXtcclxuICAgICAgICBsZXQgYnRuID0gJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmFjdGlvbkRlZlthY3Rpb25JZF1cclxuICAgICAgICBpZiAoYnRuLmlkPT0xKXtcclxuXHJcbiAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0ucHJldmlld0ZpbGUoZmlsZVsncmVzb3VyY2UnKyRzY29wZS5mZC5SZWxhdGVkKydfaWQnXSxmaWxlWydyZXNvdXJjZScrJHNjb3BlLmZkLlJlbGF0ZWQrJ19GaWxlTmFtZSddKVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChidG4uaWQ9PTIpe1xyXG4gICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uZG93bmxvYWRGaWxlKGZpbGVbJ3Jlc291cmNlJyskc2NvcGUuZmQuUmVsYXRlZCsnX2lkJ10sZmlsZVsncmVzb3VyY2UnKyRzY29wZS5mZC5SZWxhdGVkKydfRmlsZU5hbWUnXSlcclxuXHJcbiAgICAgICAgfVxyXG4gICAgfSAgICBcclxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gICAgIC8qKioqKioqKioqKiogUG9wdWxhdGUga3RSZXNvdXJjZSBzbWFydCB0YWJsZSAqKioqKioqKioqKioqKi9cclxuICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5nZXREYXRhc2V0RGF0YUZvclNtYXJ0VGFibGUgPSBmdW5jdGlvbih0YWJsZVN0YXRlLCBwYWdlTnVtYmVyLHBhZ2VTaXplKVxyXG4gICAge1xyXG4gICAgICAgICBsZXQgZGVmZXJyZWQgPSAkcS5kZWZlcigpOyBcclxuICAgICAgICAgaWYgKCRzY29wZS5mZC5SZWxhdGVkIT1udWxsICYmICRzY29wZS5mZC5SZWxhdGVkIT11bmRlZmluZWQgJiYgJHNjb3BlLmZkLlJlbGF0ZWQhPVwiXCIpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlmICghJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb24pXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHJlc2VudGF0aW9uX2lkID0gJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXNlbnRhdGlvbl9pZD09bnVsbCB8fCBwcmVzZW50YXRpb25faWQ9PT11bmRlZmluZWQpICBwcmVzZW50YXRpb25faWQ9MFxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uZ3JpZERhdGE9PT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5ncmlkRGF0YSA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlciAvL2dldERhdGFzZXREYXRhRm9yU21hcnRUYWJsZSAvLz09a3RSZWZyZXNoRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYWdlTnVtYmVyPT11bmRlZmluZWQpIHBhZ2VOdW1iZXIgPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYWdlU2l6ZT09dW5kZWZpbmVkKSBwYWdlU2l6ZSA9IDU7XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIGxldCBpdGVtcyA9ICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSBcclxuICAgICAgICAgICAgICAgICAgIGlmIChpdGVtcz09dW5kZWZpbmVkKSBpdGVtcyA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmdyaWREYXRhUmV0cmlldmVkID09PSB0cnVlIHx8IGl0ZW1zLmxlbmd0aD09PTApXHJcbiAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLnJlc3VsdHMuY29sdW1ucz0kc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uY29sdW1uRGVmc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0ucmVzdWx0cy5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0ucmVzdWx0cy5jb3VudCA9ICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5ncmlkRGF0YS5sZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLnJlc3VsdHMubnVtYmVyT2ZQYWdlcyA9IE1hdGguY2VpbCgkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0ucmVzdWx0cy5jb3VudC9wYWdlU2l6ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLnJlc3VsdHMucmVzdWx0cyA9ICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5ncmlkRGF0YS5zbGljZSggKHBhZ2VOdW1iZXIgLTEpICogcGFnZVNpemUsIHBhZ2VOdW1iZXIgKiBwYWdlU2l6ZSlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6ICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5yZXN1bHRzfSk7XHJcbiAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtcyE9W3t9XSlcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURhdGFEaXJlY3RGaWx0ZXIoJHNjb3BlLmZkLlJlbGF0ZWQse2lkX19pbjogaXRlbXN9LCRzY29wZS5mZC5HcmlkU3RhdGVbJ2NvbHVtbnNRdWVyeSddKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uZ3JpZERhdGFSZXRyaWV2ZWQgPSB0cnVlOyAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0ucmVzdWx0cy5jb2x1bW5zID0gJHNjb3BlLmZkLkdyaWRTdGF0ZVsnY29sdW1uc0RlZiddXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5yZXN1bHRzLnBhZ2VTaXplID0gcGFnZVNpemU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmdyaWREYXRhID0gZGF0YS5kYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLnJlc3VsdHMuY291bnQgPSAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uZ3JpZERhdGEubGVuZ3RoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLnJlc3VsdHMubnVtYmVyT2ZQYWdlcyA9IE1hdGguY2VpbCgkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0ucmVzdWx0cy5jb3VudC9wYWdlU2l6ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmdyaWREYXRhKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLnJlc3VsdHMucmVzdWx0cyA9ICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5ncmlkRGF0YS5zbGljZSggKHBhZ2VOdW1iZXIgLTEpICogcGFnZVNpemUsIHBhZ2VOdW1iZXIgKiBwYWdlU2l6ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0ucmVzdWx0cyA9IHt9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLnJlc3VsdHN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICBcclxuICAgICAgICB9ZWxzZVxyXG5cclxuICAgICAgICB7XHJcblxyXG4gICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoJHNjb3BlLmZkLlBhcmFtZXRlcnMuUmVzb3VyY2VUeXBlKycgaXMgbm90IHNlbGVjdGVkLiBQbGVhc2Ugc2VsZWN0ICcrJHNjb3BlLmZkLlBhcmFtZXRlcnMuUmVzb3VyY2VUeXBlLCdpbmZvJyk7XHJcbiAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6ICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5yZXN1bHRzfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH1cclxuICAgICAgXHJcbiAgICAgIC8qXHJcbiAgICAgICAgJHNjb3BlLiR3YXRjaCgnaXRlbVZhbHVlLnZhbCcsZnVuY3Rpb24obmV3VmFsdWUsb2xkVmFsdWUpe1xyXG4gICAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlIT1vbGRWYWx1ZSAmJiBuZXdWYWx1ZSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICRzY29wZS5mZC5QYXJhbWV0ZXJzLkNoaWxkUmVzb3VyY2UgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgICovXHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLnNlYXJjaD1bXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aWQ6MSxmaWx0ZXI6J29ubGlzdCcsbmFtZTpcIk9uIGxpc3Q6XCIsaWNvbjpcImZhIGZhLWNoZXZyb24tcmlnaHRcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aWQ6MixmaWx0ZXI6J25vdG9ubGlzdCcsbmFtZTpcIk5vdCBvbiBsaXN0OlwiLGljb246XCJmYSBmYS1leHBhbmRcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgICBdO1xyXG5cdFx0XHRcdFxyXG4gICAgICAgIGlmICgkc2NvcGUuZmQhPXVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlNlYXJjaD09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlNlYXJjaD0kc2NvcGUuc2VhcmNoWzBdOyAvL01JR09SIFRPRE8gLSBncmVza2Ega29kIGluY2lqYWNpamUgemEgbXVsdGlwbGUgLCBtb3pkYSB0cmViYSBrb2QgcHJvbWplbmUgbmEgbXVsdGlwbGUgb3ZvIGpvcyBqZWRub20gb2tpbnV0aVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfSBcclxuXHJcblx0XHRcdCAgJHNjb3BlLmFwcGx5U2VhcmNoRmlsdGVycyA9IGZ1bmN0aW9uKGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICBcclxuXHRcdFx0XHQgICRzY29wZS5mZC5TZWFyY2g9JHNjb3BlLnNlYXJjaFtpbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuU2VhcmNoLnZhbHVlID0gWyAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0gXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5pc09wZW49ZmFsc2U7XHRcdFxyXG5cdFx0XHQgIH07XHJcbiAgICAgICBcclxuICAgICAgIFxyXG4gICAgICAgICRzY29wZS5zcmNfdHlwZV90ZXh0PUNPREVTX0NPTlNULl9QT1BVTEFURV9UWVBFXyAgXHJcbiAgICAgIFxyXG4gICAgICAgICRzY29wZS5mZC5pbnB1dFBhcmFtc0RhdGFzZXRzID0ge3BsYWNlaG9sZGVyOidTZWxlY3QgZGF0YXNldC4uLicsbGFiZWw6J0RhdGFzZXQnLG5hbWU6J2RhdGFzZXRzJyxjb2x1bW5TaXplTGFiZWw6J2NvbC0yNCcsXHJcbiAgICAgICAgICAgICAgICBoaWRlTGFiZWw6ZmFsc2UscGFkZGluZ0xlZnQ6dHJ1ZSxkcm9wZG93blNpemU6J2NvbC0yNCcsbGFiZWxUZXh0U2l6ZTonbGFiZWwteHMgdGV4dC1tdXRlZCcsc2l6ZVhzOnRydWV9O1xyXG4gICAgICAgXHJcbiAgICAgICBcclxuICAgICAgICAkc2NvcGUuZmQuaW5wdXRQYXJhbXNTZWFyY2hGb3JtID0ge3BsYWNlaG9sZGVyOidTZWxlY3QgdGFzay4uLicsbGFiZWw6J1NlYXJjaCBmb3JtIHRhc2snLG5hbWU6J3Rhc2tzJyxjb2x1bW5TaXplTGFiZWw6J2NvbC0yNCcsXHJcbiAgICAgICAgICAgICAgICBoaWRlTGFiZWw6ZmFsc2UscGFkZGluZ0xlZnQ6dHJ1ZSxkcm9wZG93blNpemU6J2NvbC0yNCcsbGFiZWxUZXh0U2l6ZTonbGFiZWwteHMgdGV4dC1tdXRlZCcsc2l6ZVhzOnRydWV9O1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICBcclxuICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5pc1Jlc291cmNlU2VsZWN0ZWQgPSBmYWxzZTtcclxuIFxyXG5cdFx0XHRcdCRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5zZWxlY3RlZERhdGFSZWNvcmQ9ZmFsc2U7XHJcblx0XHRcdFx0JHNjb3BlLnRhc2tJZD0wO1xyXG4gICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLnNob3dGb3JtID0gZmFsc2U7XHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmdyaWRPcHRpb25zID17fVxyXG5cdFxyXG5cdFx0XHRcdFx0ICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLlJlbGF0aW9uc2hpcFR5cGUgPSAkc2NvcGUuZmQuTWF4TGVuZ3RoO1xyXG5cclxuXHRcdFx0aWYgKCRzY29wZS5mZC5sb2NhbFZhcnM9PXVuZGVmaW5lZCkgICRzY29wZS5mZC5sb2NhbFZhcnM9e31cclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUuZmQuUGFyZW50RGF0YXNldERlZklkPSRzY29wZS5mZC5SZWxhdGVkO1xyXG4gICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uIT11bmRlZmluZWQpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgJHNjb3BlLnRhc2tJZD0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlJlc291cmNlRGVmSWQ7XHJcbiAgICAgICAgICAkc2NvcGUucHJldlRhc2tFeGVJZCA9ICAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnByZXZfdGFza19pZDtcclxuICAgICAgICAgICRzY29wZS5mb3JtVHlwZT0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fdHlwZTtcclxuICAgICAgICAgICRzY29wZS5zb3VyY2VfdHlwZT0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnNvdXJjZV90eXBlO1xyXG4gICAgICAgICAgJHNjb3BlLnRhc2tJbml0aWF0ZUlkID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50YXNrX2luaXRpYXRlX2lkO1xyXG4gICAgICAgICAgJHNjb3BlLnRhc2tFeGVjdXRlSWQgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRhc2tfZXhlY3V0ZV9pZDtcclxuICAgICAgICAgICRzY29wZS5mb3JtRGVmaW5pdGlvbiA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBpZiAoJHNjb3BlLnRhc2tJZD09dW5kZWZpbmVkKSAkc2NvcGUudGFza0lkPTBcclxuICAgICAgICAgJHNjb3BlLmZkLmdyaWRzdGVyVHlwZSA9IFwicmVzb3VyY2VcIjtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLnJlc291cmNlRGFzaGJvYXJkID0ge1xyXG4gIFx0XHRcdFx0aWQ6ICcxJyxcclxuICBcdFx0XHRcdG5hbWU6ICdIb21lJyxcclxuICBcdFx0XHRcdHdpZGdldHM6IFtdLFxyXG4gICAgICAgICAgZGF0YTp7fVxyXG5cdFx0XHRcdH0gO1xyXG4gICAgICAgIGlmICAoJHNjb3BlLmZvcm1EZWZpbml0aW9uPT11bmRlZmluZWQpICRzY29wZS5mb3JtRGVmaW5pdGlvbj1mYWxzZTtcclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUuZmQucmVzb3VyY2VSZWNvcmRJZD0wO1xyXG4gICAgICAgIGlmICgkc2NvcGUudGFza0luaXRpYXRlSWQ9PXVuZGVmaW5lZClcclxuICAgICAgIHtcclxuICAgICAgICAkc2NvcGUudGFza0luaXRpYXRlSWQgPTA7XHJcbiAgICAgICAgXHJcbiAgICAgICB9XHJcbiAgICAgICBpZiAoJHNjb3BlLnRhc2tFeGVjdXRlSWQ9PXVuZGVmaW5lZClcclxuICAgICAgIHtcclxuICAgICAgICAkc2NvcGUudGFza0V4ZWN1dGVJZCA9MDtcclxuICAgICAgICBcclxuICAgICAgIH1cclxuICAgICAgICBpZiAoJHNjb3BlLnByZXZUYXNrRXhlSWQ9PXVuZGVmaW5lZClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAkc2NvcGUucHJldlRhc2tFeGVJZCA9MDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLyppZiAoJHNjb3BlLmZkLlByZXNlbnRhdGlvblR5cGU9PW51bGwpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgICRzY29wZS5mZC5QcmVzZW50YXRpb25UeXBlID0gMTtcclxuICAgICAgICB9Ki9cclxuICAgICAgICAgICAgXHJcbiAgICAgICBcclxuICAgICAgICAgICRzY29wZS5mZC5yZXNvdXJjZXNMaXN0PVtdO1xyXG4gICAgICAgICAgJHNjb3BlLmZkLnJlc291cmNlTGlzdExlbmd0aD0wO1xyXG4gICAgICAgICAgJHNjb3BlLmZkLnNlbGVjdGVkUmVzb3VyY2UgPSAwO1xyXG4gICAgICAgICAgLy9pZiAoJHNjb3BlLmZkLlJlbGF0ZWQhPW51bGwpICRzY29wZS5mZC5zZWxlY3RlZERhdGFzZXQgPSAkc2NvcGUuZmQuUmVsYXRlZDtcclxuXHRcdFxyXG4gICAgLypcclxuICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmFkZEV2ZW50PWZ1bmN0aW9uKClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5ldmVudHM9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLlBhcmFtZXRlcnMuZXZlbnRzPVtdXHJcbiAgICAgICAgICAgICRzY29wZS5mZC5QYXJhbWV0ZXJzLmV2ZW50cy5wdXNoKHthY3Rpb25zOltdfSkgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5hZGRBY3Rpb249ZnVuY3Rpb24oZXZlbnQpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQuYWN0aW9ucz09dW5kZWZpbmVkKSBldmVudC5hY3Rpb25zPVtdXHJcbiAgICAgICAgICAgIGV2ZW50LmFjdGlvbnMucHVzaCh7fSkgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5pbnNlcnRBY3Rpb249ZnVuY3Rpb24oZXZlbnQsaW5kZXgpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQuYWN0aW9ucz09dW5kZWZpbmVkKSBldmVudC5hY3Rpb25zPVtdXHJcbiAgICAgICAgICAgIGV2ZW50LmFjdGlvbnMuc3BsaWNlKGluZGV4LDAse30pICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uZGVsQWN0aW9uPWZ1bmN0aW9uKGV2ZW50LGluZGV4KVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50LmFjdGlvbnM9PXVuZGVmaW5lZCkgZXZlbnQuYWN0aW9ucz1bXVxyXG4gICAgICAgICAgICBpZiAoZXZlbnQuYWN0aW9ucy5sZW5ndGg+aW5kZXgpICBldmVudC5hY3Rpb25zLnNwbGljZShpbmRleCwxKSAgIFxyXG4gICAgICAgIH1cclxuICAgICovXHJcbiAgICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBHRVQgREFUQVNFVCBMSVNUICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdFx0Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5nZXRSZXNvdXJjZXMgPSBmdW5jdGlvbihlbGVtZW50X3R5cGUsc2VhcmNoKSAge1xyXG5cdFx0XHRjb25zdCBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nXHJcbiAgICAgICAgICAgICRzY29wZS5mZC5SZWxhdGVkTG9hZGVkPWZhbHNlXHJcbiAgICAgICAgICAgIC8vc2V0IHdpZGdldCB2YXJpYWJsZXNcclxuXHJcbiAgICAgICAgICAgIC8vJHNjb3BlLmZkLkVsZW1lbnRUeXBlPWVsZW1lbnRfdHlwZVxyXG5cclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZMaXN0QnlUeXBlRmlsdGVyKGxhbmcsZWxlbWVudF90eXBlLHNlYXJjaCwkc2NvcGUuZmQuc2VsZWN0ZWRSZXNvdXJjZSkudGhlbihcclxuXHRcdFx0ICAgIGZ1bmN0aW9uKGRhdGEpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHJcbiAgICAgICBcdFx0XHQgICRzY29wZS5mZC5yZXNvdXJjZXNMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoJHNjb3BlLmZkLnJlc291cmNlc0xpc3QpKSAgICRzY29wZS5mZC5yZXNvdXJjZXNMaXN0PVtdOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUmVsYXRlZCE9bnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQucmVzb3VyY2VJZCA9ICRzY29wZS5mZC5SZWxhdGVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5yZXNvdXJjZUxpc3RMZW5ndGggPSAkc2NvcGUuZmQucmVzb3VyY2VzTGlzdC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9zZWxlY3QgZGF0YXNldCBmcm9tIGRyb3Bkb3duXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwb3MgPSAkc2NvcGUuZmQucmVzb3VyY2VzTGlzdC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZigkc2NvcGUuZmQucmVzb3VyY2VJZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3M+PTApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuc2VsZWN0ZWRSZXNvdXJjZT0kc2NvcGUuZmQucmVzb3VyY2VzTGlzdFtwb3NdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuaXNSZXNvdXJjZVNlbGVjdGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG5cdFx0XHRcdFx0XHRcdGlmICggISRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5wdWJsaXNoZWRMb2FkZWQgKSAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmdldFB1Ymxpc2hlZFJlc291cmNlcygpXHJcbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5SZWxhdGVkTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0IFxyXG4gICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgfSk7XHJcbiAgICAgICB9O1x0ICBcclxuXHJcbiAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uZ2V0UHVibGlzaGVkUmVzb3VyY2VzPWZ1bmN0aW9uKClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0hPXVuZGVmaW5lZClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLnB1Ymxpc2hlZExvYWRlZD1mYWxzZSAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5HZXRQdWJsaXNoZWRSZXNvdXJjZXNCeVR5cGVJZCgkc2NvcGUuZmQuUmVsYXRlZCwnZm9ybScpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKGRhdGEpIHsgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0hPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5wdWJsaXNoZWRSZXNvdXJjZUxpc3QgPSBkYXRhLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0ucHVibGlzaGVkTG9hZGVkPXRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZm9ybURlZmluaXRpb24gJiYgJHNjb3BlLmZkLkdyaWRTdGF0ZT8uY29sdW1uc0RlZiE9dW5kZWZpbmVkKSBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uZ3JpZERhdGFSZXRyaWV2ZWQgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5yZXNvdXJjZURhdGFEb3dubG9hZGVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuUHVibGlzaGVkUmVzb3VyY2VJZCE9dW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUHJlc2VudGF0aW9uVHlwZT09MikgJHNjb3BlLmZkLlNob3dTZWFyY2hGb3JtID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uZ2V0UHVibGlzaGVkUmVzb3VyY2VCeUlkKCRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlSWQsJHNjb3BlLmZkLlNob3dTZWFyY2hGb3JtKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdFcnJvciBpbiBsb2NhbFZhcnMgPSAnKyRzY29wZS5mZC5VdWlkUmVmLCdlcnJvcicpXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1lbHNlIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnRXJyb3IgLSBsb2NhbFZhcnMgPSAnKyRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXSwnZXJyb3InKTtcclxuICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgICBcclxuXHRcdFx0XHJcbiAgICAgICAgJHNjb3BlLmZkLnJlc291cmNlRGF0YVJlY29yZFNlbGVjdGVkPWZhbHNlO1xyXG5cclxuICAgICAgICBcclxuXHJcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLlNob3dGb3JtID0gZnVuY3Rpb24oaWQpIFxyXG4gICAgICAgIHsgXHJcbiAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5nZXRQdWJsaXNoZWRSZXNvdXJjZUJ5SWQoaWQsdHJ1ZSlcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uU2hvd1NlYXJjaEZvcm0gPSBmdW5jdGlvbihpZCkgXHJcbiAgICAgICAgeyAgIGxldCBzaG93X3NlYXJjaF9mb3JtXHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuU2hvd1NlYXJjaEZvcm0pIHNob3dfc2VhcmNoX2Zvcm0gPSBmYWxzZVxyXG4gICAgICAgICAgICBlbHNlIHNob3dfc2VhcmNoX2Zvcm0gPSB0cnVlXHJcbiAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5nZXRQdWJsaXNoZWRSZXNvdXJjZUJ5SWQoaWQsc2hvd19zZWFyY2hfZm9ybSlcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cdFx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBHRVQgUFVCTElTSEVEIERBVEFTRVQgREVUQUlMUyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHRcclxuXHJcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmdldFB1Ymxpc2hlZFJlc291cmNlQnlJZCA9IGZ1bmN0aW9uKGlkLHNob3dfc2VhcmNoX2Zvcm0pIFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCBwb3NcclxuICAgICAgICAgICAgbGV0IG9sZF9wdWJsaXNoX2lkID0gJHNjb3BlLmZkLlBhcmFtZXRlcnMuUHVibGlzaGVkUmVzb3VyY2VJZFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgcG9zID0gJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLnB1Ymxpc2hlZFJlc291cmNlTGlzdC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZihpZCk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKHBvcz49MCl7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0ucHVibGlzaGVkUmVzb3VyY2UgPSAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0ucHVibGlzaGVkUmVzb3VyY2VMaXN0W3Bvc11cclxuICAgICAgICAgICAgICAgIGlmIChzaG93X3NlYXJjaF9mb3JtKSAge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLkZvcm1EZWZTZWFyY2g/LmxheW91dCE9PXVuZGVmaW5lZCAmJiAkc2NvcGUuZmQuRm9ybURlZlNlYXJjaD8ubGF5b3V0IT09bnVsbCAmJiAkc2NvcGUuZmQuRm9ybURlZlNlYXJjaD8ubGF5b3V0Py5sZW5ndGg+MCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuZmQuRm9ybURlZmluaXRpb24ubGF5b3V0ID0gJHNjb3BlLmZkLkZvcm1EZWZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5mb3JtTG9hZGVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIFxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuRm9ybURlZlNlYXJjaD17fVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLkdldFB1Ymxpc2hlZFJlc291cmNlQnlJZChpZCkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuRm9ybURlZlNlYXJjaC5sYXlvdXQgPSBkYXRhLmRhdGEuRm9ybSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLmZkLkZvcm1EZWZpbml0aW9uLmxheW91dCA9ICRzY29wZS5mZC5Gb3JtRGVmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmZvcm1Mb2FkZWQgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5mb3JtTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1lbHNlICRzY29wZS5mZC5mb3JtTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfWVsc2UgJHNjb3BlLmZkLmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICB9ICAgIFxyXG5cclxuXHJcbiAgICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBHRVQgVEFTSyBMSVNUICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdFx0XHRcdFx0Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHRcdFx0XHRcdCRzY29wZS5mZC5nZXRUYXNrcyA9IGZ1bmN0aW9uKHNlYXJjaCkgIHtcclxuXHRcdFx0XHRcdFx0dmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmTGlzdEJ5VHlwZShsYW5nLCd0YXNrJykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICRzY29wZS5mZC50YXNrTGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgfSk7XHJcbiAgICAgICAgICB9XHJcblx0XHRcdFx0XHRcclxuICAgICAgICAvLyAgJHNjb3BlLmZkLmdldFRhc2tzKCcnKTtcclxuICAgICAgICAgIFxyXG5cdFx0XHRcdCAgICAvLyB3aGVuIGNvbmZpcm0gc2VsZWN0aW9uIGNsaWNrZWRcclxuICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAkc2NvcGUuZmQuY29uZmlybVNlbGVjdGlvbiA9IGZ1bmN0aW9uICgpXHJcblx0XHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHQkc2NvcGUuZmQuU2VhcmNoRm9ybURvd25sb2FkZWQ9ZmFsc2U7XHJcblx0XHRcdFx0XHRcdFx0JHNjb3BlLmZkLnJlc291cmNlRGFzaGJvYXJkLndpZGdldHMubGVuZ3RoPTA7XHJcblx0XHRcdFx0XHQgfVxyXG4gICAgICAgICAgICBcdCRzY29wZS5mZC5jYW5jZWwgPSBmdW5jdGlvbiAoKVxyXG5cdFx0XHRcdFx0XHR7XHJcbiAgICAgICAgICAgICAgJHNjb3BlLmZkLlNlYXJjaEZvcm1Eb3dubG9hZGVkPWZhbHNlO1xyXG4gICAgICAgICAgICAgICRzY29wZS5mZC5yZXNvdXJjZURhc2hib2FyZC53aWRnZXRzLmxlbmd0aD0wO1xyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAqL1xyXG5cdFxyXG4gICAgICAgIFxyXG4gICAgICAgICAkc2NvcGUuZmQucm93U2VsZWN0aW9uQ2hhbmdlZCA9IGZ1bmN0aW9uKHJvdyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdPXJvd1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5zZWxlY3RlZFJlc291cmNlUmVjb3JkID0gcm93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLnNlbGVjdGVkUmVzb3VyY2VSZWNvcmRJZCA9IHJvd1skc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uVGFibGVQcmVmaXgrJ19pZCddOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5pc1JlY29yZFNlbGVjdGVkPXJvdy5pc1NlbGVjdGVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvdW50IHNlbGVjdGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnJlc291cmNlRGF0YVJlY29yZFNlbGVjdGVkPSRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXS5sZW5ndGg7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2Uuc2V0RGF0YSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVJOiBbe25hbWU6J3Jlc291cmNlTGlua0RhdGFzZXQnLHZhbHVlOlt7bmFtZToncmVzb3VyY2VJZCcsdmFsdWU6JHNjb3BlLmZkLlJlbGF0ZWR9LHtuYW1lOidyZXNvdXJjZVJlY29yZElkJyx2YWx1ZTokc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uc2VsZWN0ZWRSZXNvdXJjZVJlY29yZElkfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bmFtZToncmVzb3VyY2VSZWNvcmRJZHMnLHZhbHVlOnJvd30se25hbWU6J3Jlc291cmNlUmVjb3Jkc0FsbCcsdmFsdWU6JHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmdyaWRPcHRpb25zLmRhdGF9XX1dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldElkOiAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsdGFza19leGVjdXRlX2lkOiRzY29wZS50YXNrRXhlY3V0ZUlkfSk7XHJcblxyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgLyogZGVsZXRlIHNlbGVjdGVkIGNoaWxkIHJlY29yZCovXHJcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmRlbGV0ZUNoaWxkUmVjb3JkID0gZnVuY3Rpb24oKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0ucGFyZW50UmVzb3VyY2VSZWNvcmRJZD4wICYmICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5pc1JlY29yZFNlbGVjdGVkKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuRGVsZXRlQ2hpbGRSZWxhdGlvbnNoaXAoJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLCRzY29wZS5wYXJlbnRSZXNvdXJjZURlZklkLCRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5wYXJlbnRSZXNvdXJjZVJlY29yZElkLCRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5zZWxlY3RlZFJlc291cmNlUmVjb3JkSWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEuZGF0YSwnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5ncmlkRGF0YS5sZW5ndGg9MFxyXG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmlzUmVjb3JkU2VsZWN0ZWQgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLkdldFJlc291cmNlRGF0YUZvclBhcmVudCgpO1xyXG5cclxuICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IuZGF0YSwnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8qICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLmdldFJlc291cmNlRGF0YVJlZnJlc2ggPSBmdW5jdGlvbiAocmV0VmFsdWUpIFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICAvL1RvRG8gb3ZvIHByZWJhY2l0aSBzdmUgdSBqZWRhbiBBUEkgcG96aXZcclxuICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlUmVjb3JkSWQ+MClcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEYXRhTTJtKCRzY29wZS5mZC5QcmVzZW50YXRpb25JZCwkc2NvcGUucGFyZW50UmVzb3VyY2VEZWZJZCwkc2NvcGUuZmQuUmVsYXRlZCwkc2NvcGUucmVzb3VyY2VSZWNvcmRJZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0gPSBkYXRhOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZXR1cEdyaWQoZGF0YSk7ICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvciwnZXJyb3InKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XHJcbiAgICAgICAgICAgIH0gICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgICovICAgIFxyXG5cclxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uR2V0UmVzb3VyY2VEYXRhRm9yUGFyZW50ID0gZnVuY3Rpb24gKCkgXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgIHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5wYXJlbnRSZXNvdXJjZVJlY29yZElkPjApXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmdyaWREYXRhUmV0cmlldmVkID0gZmFsc2VcclxuICAgICAgICAgICAgICAgIC8vJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdPXt9XHJcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURhdGFNMm0oJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLCRzY29wZS5wYXJlbnRSZXNvdXJjZURlZklkLCRzY29wZS5mZC5SZWxhdGVkLCRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5wYXJlbnRSZXNvdXJjZVJlY29yZElkLCRzY29wZS50YXNrSWQsJHNjb3BlLmZkLkl0ZW1JZCxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSA9IGRhdGE7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uc2V0dXBHcmlkTmV3KGRhdGEpOyAgQlVHIFRPRE8hXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uc2V0dXBHcmlkTmV3KGRhdGEpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSAgICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgJHNjb3BlLmxpbmtlZFdpZGdldElkID0gMDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgaWYgKCRzY29wZS5mZC5TZWFyY2ghPXVuZGVmaW5lZCkgJHNjb3BlLmxpbmtlZFdpZGdldElkID0gJHNjb3BlLmZkLlNlYXJjaC5XaWRnZXRJZDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgdmFyIHJlZnJlc2hfbGlzdF9mcm9tX2NhbGxiYWNrPWZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLnJlZnJlc2hEYXRhc2V0RGF0YUxpc3QoXCJcIix0cnVlLCRzY29wZS5sRGF0YSk7ICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICAgICAgICBcclxuICAgICAgIFxyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldEl0ZW1zPSBbXVxyXG5cdFx0XHRcclxuXHRcdFx0XHJcbiAgICAgICAgJHNjb3BlLmZkLnJlZnJlc2hEYXRhc2V0RGF0YUxpc3QgPSBmdW5jdGlvbihzZWFyY2gsYXBwbHksdmFsKVxyXG4gICAgICAgICAgICB7XHJcblx0XHRcdFx0Ly9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgIHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICAgLy9Ub0RvIG92byBwcmViYWNpdGkgc3ZlIHUgamVkYW4gQVBJIHBveml2XHJcbiAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQhPW51bGwgJiYgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkIT11bmRlZmluZWQgJiYgJHNjb3BlLmZkLk5hbWVGaWVsZD8uaWQhPXVuZGVmaW5lZCAmJiAkc2NvcGUuZmQuTmFtZUZpZWxkPy5uYW1lIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjdHJsID0gdGhpcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sX2FwcGx5ID0gYXBwbHk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubF92YWwgPSB2YWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmcm9tQ2FjaGU9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIC8vUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEYXRhTGlzdCgkc2NvcGUuZmQuUmVsYXRlZCwkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsbGFuZyxzZWFyY2gpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEYXRhTGlzdEFsbCgkc2NvcGUuZmQuUmVsYXRlZCwkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsbGFuZyxmcm9tQ2FjaGUscmVmcmVzaF9saXN0X2Zyb21fY2FsbGJhY2ssJHNjb3BlLmZkLk5hbWVGaWVsZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLml0ZW1WYWx1ZS52YWw9PXVuZGVmaW5lZCB8fCAkc2NvcGUuaXRlbVZhbHVlLnZhbD09bnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KCRzY29wZS5mb3JtRGF0YSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KCRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpPTA7aTwkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0ubGVuZ3RoO2krKylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5NYXhMZW5ndGg9PTEpICRzY29wZS5pdGVtVmFsdWUudmFsPXsnaWQnOiRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXVtpXX07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuaXRlbVZhbHVlLnZhbCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5pdGVtVmFsdWUudmFsLnB1c2ggKHsnaWQnOiRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXVtpXX0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlNob3dGaWVsZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldEl0ZW1zID0gYW5ndWxhci5jb3B5KGRhdGEuZGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0SXRlbXMubGVuZ3RoPjApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2lmICghJHNjb3BlLmZkLlJlcXVpcmVkICYmICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldEl0ZW1zWzBdLmlkIT1udWxsKSAkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRJdGVtcy51bnNoaWZ0KHtpZDpudWxsfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3NlbGVjdCB2YWx1ZSBpZiBleGlzdHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZigkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0pPT0nbnVtYmVyJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcG9zID0gJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0SXRlbXMubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdKTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zPj0wKSAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0gPSAkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRJdGVtc1twb3NdXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5SZWFkT25seSkgJHNjb3BlLmZkLnNlbGVjdEl0ZW0oJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdKVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRJdGVtc0hpZGRlbiA9IGFuZ3VsYXIuY29weShkYXRhLmRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0SXRlbXNIaWRkZW4ubGVuZ3RoPjApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRzY29wZS5mZC5SZXF1aXJlZCAmJiAkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRJdGVtc0hpZGRlblswXS5pZCE9bnVsbCkgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0SXRlbXNIaWRkZW4udW5zaGlmdCh7aWQ6bnVsbH0pOyAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pZiAoISRzY29wZS5mZC5SZWFkT25seSkgJHNjb3BlLmxvYWREcm9wZG93bigkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRJdGVtcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmRhdGFSZWFkeSA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2lmIChjdHJsLmxfYXBwbHkpIGFwcGx5X3ZhbHVlKGN0cmwubF92YWwpOyAvL1RPRE8gLSBtaWdvciB1bmNvbW1lbnQgbGF0ZXIgd2hlbiBidWcgaXMgZm91bmRcclxuXHRcdFx0XHRcdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAvKioqKioqKioqKioqIENhbGwgdGFzayB3aGVuIG1hZ25pZmllciBpcyBjbGlja2VkIG9yIGF1dG9TZWFyY2g9dHJ1ZSAqKioqKioqKioqKioqKi9cclxuICAgICAgICAgIFxyXG4gICAgICAgICRzY29wZS5mZC5TZWxlY3REYXRhc2V0UmVjb3JkcyA9IGZ1bmN0aW9uKHRhc2tJZCxhdXRvU2VhcmNoKXtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgLy8gJHNjb3BlLlByZUluaXRpYXRlVGFzayh0YXNrSWQsMCk7XHJcbiAgICAgICAgICAgICRzY29wZS5mZC5hdXRvU2VhcmNoTG9jYWw9YXV0b1NlYXJjaDtcclxuICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93Rm9ybSA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmICghJHNjb3BlLmZkLnNlYXJjaEZvcm1Eb3dubG9hZGVkKVxyXG4gICAgICAgICAgICB7ICAgXHJcbiAgICAgICAgICAgICAgICBpZiAgKHRhc2tJZD09dW5kZWZpbmVkIHx8IHRhc2tJZD09bnVsbCB8fCB0YXNrSWQ9PTApIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShcIkVycm9yIGluIGRlZmluaXRpb24hISBTZWFyY2ggZm9ybSBpcyBub3QgYXNzaWduZWQgdG8gZGF0YXNldC5cIixcImVycm9yXCIpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLlN0YXJ0VGFzayh0YXNrSWQsMCwwKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyRyb290U2NvcGUuJGJyb2FkY2FzdChcIlByb2Nlc3NUYXNrXCIrJHNjb3BlLmZkLnByZXNlbnRhdGlvbklkLHsndGFza0lkJzp0YXNrSWQsJ3Rhc2tfZXhlY3V0ZV9pZCc6JHNjb3BlLnRhc2tFeGVjdXRlSWR9KTtcclxuICAgICAgICAgICAgICAgICAgICAvL2lmIChhdXRvU2VhcmNoKSAkc2NvcGUuZmQuQ29uZmlybVNlbGVjdGlvbigpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnNlYXJjaEZvcm1Eb3dubG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmRvd25sb2FkRmlsZSA9IGZ1bmN0aW9uKGZpbGVJZCxmaWxlTmFtZSl7XHJcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5kb3dubG9hZEZpbGUoJHNjb3BlLmZkLlJlbGF0ZWQsZmlsZUlkKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoJ0ZpbGUgJytmaWxlTmFtZSsnIGRvd25sb2FkZWQnLCdpbmZvJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtkYXRhLmRhdGFdKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuZG93bmxvYWQgPSBmaWxlTmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS50YXJnZXQgPSAnX2JsYW5rJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5jbGljaygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgfTsvLyBkb3dsb2FkIGZpbGUgRU5EXHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5wcmV2aWV3RmlsZSA9IGZ1bmN0aW9uKGZpbGVJZCxmaWxlTmFtZSxmaWxlVHlwZSl7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmRvd25sb2FkRmlsZSgkc2NvcGUuZmQuUmVsYXRlZCxmaWxlSWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtkYXRhLmRhdGFdLHt0eXBlOmZpbGVUeXBlfSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3X2RvYyA9IHdpbmRvdy5vcGVuKHVybCxcIl9ibGFua1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgfTsvLyBwcmV2aWV3IGZpbGUgRU5EXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLypcclxuICAgICAgICAgICB2YXIgbG9jYWxXaWRnZXRJZD1cIlwiOyAgXHJcbiAgICAgICAgICAgICRzY29wZS4kb24oXCJFdmVudFwiK2xvY2FsV2lkZ2V0SWQrXCJyZXNvdXJjZUxpbmtEYXRhc2V0XCIsZnVuY3Rpb24oZXZlbnQsZGF0YSl7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8ZGF0YVsxXS52YWx1ZS5sZW5ndGg7aSsrKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAkc2NvcGUuZmQuZ3JpZE9wdGlvbnMuZGF0YS5wdXNoKGRhdGFbMV0udmFsdWVbaV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgICovXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLypcclxuICAgICAgICAgICBDb25maXJtIHNlbGVjdGlvbiAtIHBvcHVsYXRlIHdpdGggc2VsZWN0ZWQgaXRlbXMgZnJvbSBzZWFyY2ggZm9ybVxyXG4gICAgICAgICAgKi9cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAkc2NvcGUuZmQuYXV0b1NlYXJjaExvY2FsID0gdHJ1ZTtcclxuICAgICAgICAgIHZhciBjb3VudGVyPTA7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICRzY29wZS5mZC5Db25maXJtU2VsZWN0aW9uID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHZhciBpdGVtcz1bXTtcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5ncmlkT3B0aW9ucy5kYXRhIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTwkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uZ3JpZE9wdGlvbnMuZGF0YS5sZW5ndGg7aSsrKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBpdGVtcy5wdXNoKCRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5ncmlkT3B0aW9ucy5kYXRhW2ldLmlkKTtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy9HZXQgYWxzbyBzZWxlY3RlZCBmcm9tIHNlYXJjaCBmb3JtXHJcbiAgICAgICAgICAgIHZhciBsaW5rZWRJdGVtID0gJ3Jlc291cmNlTGlua0RhdGFzZXQnO1xyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmxpbmtlZFdpZGdldElkIT11bmRlZmluZWQpIC8vbGlua2VkV2lkZ2V0SWQgPSAyMzI1O1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICB2YXIgZGF0YSA9IFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UuZ2V0RGF0YUJ5V2lkZ2V0SWRPbmx5KCRzY29wZS5saW5rZWRXaWRnZXRJZCxsaW5rZWRJdGVtKTtcclxuICAgICAgICAgICAgIC8vdmFyIGRhdGEgPSBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLmdldERhdGFCeUxvY2FsVGFza1dpZGdldElkKGxvY2FsVGFza0lkLFdpZGdldElkLGxpbmtlZEl0ZW0pO1xyXG4gICAgICAgICAgICAgdmFyIGZyb21XaWRnZXQ9W107XHJcbiAgICAgICAgICAgICBmb3IgKHZhciBrPTA7azxkYXRhLmxlbmd0aDtrKyspIHtcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuQXV0b1NlYXJjaCAmJiAkc2NvcGUuZmQuYXV0b1NlYXJjaExvY2FsKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgaWYgKGRhdGFba10ubmFtZT09J3Jlc291cmNlUmVjb3Jkc0FsbCcpIGZyb21XaWRnZXQgPSBkYXRhW2tdLnZhbHVlOyBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhW2tdLm5hbWU9PSdyZXNvdXJjZVJlY29yZElkcycpIGZyb21XaWRnZXQgPSBkYXRhW2tdLnZhbHVlOyAvL1RPRE8gLSBJTEogLSBvdm8gYmkgaXN0byB0cmViYWxhIGJpdGkgdmFyaWphYmxhIC0gc3RhIGFrbyBwcm9tamVuaW0gaW50ZXJmYWNlIG9kbm9zbm8gbmF6aXYgcG9samEhXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgaWYgKGZyb21XaWRnZXQhPW51bGwpICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7ajxmcm9tV2lkZ2V0Lmxlbmd0aDtqKyspXHJcbiAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICB2YXIgcG9zID0gaXRlbXMubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGU7IH0pLmluZGV4T2YoZnJvbVdpZGdldFtqXS5pZCk7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgaWYgKHBvczwwKSBpdGVtcy5wdXNoKGZyb21XaWRnZXRbal0uaWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhLmxlbmd0aD4wKSAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV09aXRlbXM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUHJlc2VudGF0aW9uVHlwZT09MClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uZ3JpZE9wdGlvbnMuZGF0YSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICBpZiAoaXRlbXMubGVuZ3RoPjAgJiYgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmdyaWRPcHRpb25zLmRhdGEubGVuZ3RoPGl0ZW1zLmxlbmd0aClcclxuICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlJlbGF0ZWQ+MCAmJiBpdGVtcyE9W3t9XSkgJHNjb3BlLmZkLmdldERhdGFzZXREaXJlY3QoJHNjb3BlLmZkLlJlbGF0ZWQseydpZF9faW4nOml0ZW1zfSk7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QcmVzZW50YXRpb25UeXBlPT0xICYmIGl0ZW1zLmxlbmd0aD4wKSAkc2NvcGUuZmQuZ2V0RGF0YXNldExpc3QoKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vJHNjb3BlLmZkLnNlYXJjaEZvcm1Eb3dubG9hZGVkPWZhbHNlO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2hvd0Zvcm0gPSBmYWxzZTtcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAgQ2FuY2VsIHNlbGVjdGlvbiAtIGNhbmNlbCBzZWxlY3Rpb24gZnJvbSBzZWFyY2ggZm9ybSBcclxuICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgJHNjb3BlLmZkLkNhbmNlbFNlbGVjdGlvbiA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dGb3JtID0gZmFsc2U7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAgLy8gICAgICAgICAgIEdFVCBGT1JNIEZJRUxEU1xyXG4gICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAkc2NvcGUuZmQuZ2V0Rm9ybUZpZWxkcyA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRGb3JtRmllbGRzKCRzY29wZS5mZC5SZWxhdGVkLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQucHJlc2VudGF0aW9uRWxlbWVudHM9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICB9O1xyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAgLy8gICAgICAgICAgQ2xlYXIgc2FlcmNoIHRhc2sgZHJvcGRvd25cclxuICAgICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5jbGVhclNlYXJjaFRhc2sgPSBmdW5jdGlvbihldmVudCxzZWxlY3Qpe1xyXG4gICAgICAgICAgICAkc2NvcGUuZmQuU2VhcmNoLnRhc2tJZCA9IG51bGw7XHJcbiAgICAgICAgICAgfTtcclxuICAgICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICAgIC8vICAgICAgICAgIFJlbW92ZSBzZWxlY3RlZCByZWNvcmRzIGZyb20gZ3JpZFxyXG4gICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLnNldHVwR3JpZE5ldz0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uZ3JpZERhdGEgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICBpZiAoISRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5jb2x1bW5EZWZzKSAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uY29sdW1uRGVmcyA9ICRzY29wZS5mZFsnR3JpZFN0YXRlJ11bJ2NvbHVtbnNEZWYnXSAvL2RhdGEuY29sdW1uc0RlZjtcclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5ncmlkRGF0YVJldHJpZXZlZCA9IHRydWVcclxuICAgICAgICAgICAgICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcImRhdGFMb2FkZWRcIiwge2RhdGE6JHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmdyaWREYXRhfSk7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24od3JTdGF0ZU5hbWUsXCJ3aWRnZXRSZWFkeVwiLCB7d2lkZ2V0OiRzY29wZS5mZC5VdWlkUmVmLHByb2Nlc3NlZDp0cnVlfSk7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFxyXG4gIFxyXG4gICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5zYXZlR3JpZFN0YXRlPSBmdW5jdGlvbihzaG93X21lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgLy9kZWJ1Z2dlciAvL2t0VGFza0RhdGFzZXRMaXN0IHNtYXJ0dGFibGVcclxuICAgICAgICAgICAgICAgbGV0IGNvbHVtbnNEZWYgPSAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uY29sdW1uRGVmc1xyXG5cclxuICAgICAgICAgICAgICAgbGV0IGNvbHVtbnNRdWVyeSA9ICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5jb2x1bW5zRm9yUXVlcnlcclxuICAgICAgICAgICAgICAgJHNjb3BlLmZkWydHcmlkU3RhdGUnXT17J2NvbHVtbnNEZWYnOmNvbHVtbnNEZWYsJ2NvbHVtbnNRdWVyeSc6IGNvbHVtbnNRdWVyeX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBpZiAoc2hvd19tZXNzYWdlKVxyXG4gICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoXCJUbyBtYWtlIGNoYW5nZXMgc3RpY2sgcGxlYXNlIHNhdmUgZm9ybVwiLCdpbmZvJyk7ICAgICAgICAgICAgXHJcbiAgICB9O1xyXG5cclxuICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5yZXN0b3JlR3JpZFN0YXRlPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgaWYgKCRzY29wZS5mZFsnR3JpZFN0YXRlJ10hPT11bmRlZmluZWQgJiYgJHNjb3BlLmZkWydHcmlkU3RhdGUnXSE9PW51bGwpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUuZmRbJ0dyaWRTdGF0ZSddWydjb2x1bW5zRGVmJ10hPT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5jb2x1bW5EZWZzID0gICRzY29wZS5mZFsnR3JpZFN0YXRlJ11bJ2NvbHVtbnNEZWYnXVxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZkWydHcmlkU3RhdGUnXVsnY29sdW1uc1F1ZXJ5J10hPT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5jb2x1bW5zRm9yUXVlcnkgPSAgJHNjb3BlLmZkWydHcmlkU3RhdGUnXVsnY29sdW1uc1F1ZXJ5J11cclxuXHJcbiAgICAgICAgfVxyXG4gICAgfTsgICBcclxuICAgICAgICAgICAgXHJcbiAgICBpZiAoJHNjb3BlLmZkWydHcmlkU3RhdGUnXSE9PXVuZGVmaW5lZCAmJiAkc2NvcGUuZmRbJ0dyaWRTdGF0ZSddIT09bnVsbCkgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLnJlc3RvcmVHcmlkU3RhdGUoKTtcclxuXHJcbiAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uZ2V0UmVzb3VyY2VEYXRhUmVsYXRlZD0gZnVuY3Rpb24gKCkge1xyXG5cclxuICAgICAgICAgICAgJHNjb3BlLmZpbHRlciA9IHt9O1xyXG4gICAgICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG5cclxuICAgICAgICAgICAvL3Njb3BlLmFjdGl2aXR5LmFjdGl2aXR5TWVzc2FnZSA9IFByb2Nlc3NpbmdTZXJ2aWNlLnNldEFjdGl2aXR5TXNnKCdSZXRyaXZpbmcgZGF0YSAnK3Njb3BlLnNlbGVjdGVkUmVzb3VyY2UpO1xyXG4gICAgICAgICAgLy8kc2NvcGUuZmlsdGVyID0gUmVzb3VyY2VzRGF0YVNlcnZpY2UucHJlcGFyZVJlc291cmNlV2lkZ2V0RGF0YSgkc2NvcGUuZGFzaGJvYXJkLndpZGdldHMsLTEpO1xyXG4gICAgICAgICBcclxuICAgICAgICAgIGlmICgkc2NvcGUuZmQuc2VsZWN0ZWRSZXNvdXJjZT09bnVsbCkge1xyXG4gICAgICAgICAgICAkc2NvcGUuZmQuc2VsZWN0ZWRSZXNvdXJjZUlkID0gJHNjb3BlLmZkLlJlbGF0ZWQ7XHJcbiAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAgJHNjb3BlLmZkLnNlbGVjdGVkUmVzb3VyY2VJZCA9ICRzY29wZS5mZC5zZWxlY3RlZFJlc291cmNlLmlkO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgIC8vICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEYXRhRmlsdGVyZWQoJHNjb3BlLmZkLlJlbGF0ZWQsbGFuZywkc2NvcGUuZmlsdGVyKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHsvL01JR09SXHJcbiAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGF0YUZpbHRlcmVkKCRzY29wZS5mZC5SZWxhdGVkLCRzY29wZS5mZC5SZXNvdXJjZUlkKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHsvL01JR09SXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5zZXR1cEdyaWQoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgXHJcblx0XHQgJHNjb3BlLmZkLmdldFJlc291cmNlRGF0YUZpbHRlcmVkID0gZnVuY3Rpb24gKCkge1xyXG5cclxuICAgICAgICAgICAgJHNjb3BlLmZpbHRlciA9IHt9O1xyXG4gICAgICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG5cclxuICAgICAgICAgICAvL3Njb3BlLmFjdGl2aXR5LmFjdGl2aXR5TWVzc2FnZSA9IFByb2Nlc3NpbmdTZXJ2aWNlLnNldEFjdGl2aXR5TXNnKCdSZXRyaXZpbmcgZGF0YSAnK3Njb3BlLnNlbGVjdGVkUmVzb3VyY2UpO1xyXG4gICAgICAgICAgLy8kc2NvcGUuZmlsdGVyID0gUmVzb3VyY2VzRGF0YVNlcnZpY2UucHJlcGFyZVJlc291cmNlV2lkZ2V0RGF0YSgkc2NvcGUuZGFzaGJvYXJkLndpZGdldHMsLTEpO1xyXG4gICAgICAgICBcclxuICAgICAgICAgIGlmICgkc2NvcGUuZmQuc2VsZWN0ZWRSZXNvdXJjZT09bnVsbCkge1xyXG4gICAgICAgICAgICAkc2NvcGUuZmQuc2VsZWN0ZWRSZXNvdXJjZUlkID0gJHNjb3BlLmZkLlJlbGF0ZWQ7XHJcbiAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAgJHNjb3BlLmZkLnNlbGVjdGVkUmVzb3VyY2VJZCA9ICRzY29wZS5mZC5zZWxlY3RlZFJlc291cmNlLmlkO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuXHQvL1x0XHRSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURhdGFGaWx0ZXJlZCgkc2NvcGUuZmQuUmVsYXRlZCxsYW5nLCRzY29wZS5maWx0ZXIpLnRoZW4oZnVuY3Rpb24oZGF0YSkgey8vTUlHT1JcclxuICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEYXRhRmlsdGVyZWQoJHNjb3BlLmZkLnNlbGVjdGVkUmVzb3VyY2VJZCwkc2NvcGUudGFza0lkLGxhbmcsJHNjb3BlLmZkLnJlc291cmNlRGFzaGJvYXJkLndpZGdldHMpLnRoZW4oZnVuY3Rpb24oZGF0YSkgey8vTUlHT1JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnNldHVwR3JpZChkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblx0XHRcclxuXHRcdFx0XHRcdFx0XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAkc2NvcGUuZmQuZ2V0UmVzb3VyY2VEYXRhID0gZnVuY3Rpb24gKCkgXHJcblx0e1xyXG4gICAgICAgICAgICAgICAgLy8gJHNjb3BlLmFjdGl2aXR5LmFjdGl2aXR5TWVzc2FnZSA9IFByb2Nlc3NpbmdTZXJ2aWNlLnNldEFjdGl2aXR5TXNnKCdEb3dubG9hZGluZyByZXNvdXJjZSBkYXRhIGZvciAnKyRzY29wZS5yZXNvdXJjZUlkKTtcclxuICAgICAgICAgICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGF0YSgkc2NvcGUucmVzb3VyY2VJZCwkc2NvcGUudGFza0lkLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uc2V0dXBHcmlkTmV3KGRhdGEpO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcblx0fTtcclxuICAgICAgIFxyXG4gICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0ucHVibGlzaGVkUmVzb3VyY2VMaXN0PT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5wdWJsaXNoZWRSZXNvdXJjZUxpc3Q9W107XHJcbiAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuXHJcbiAgICAgXHJcbiAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uR2V0UmVjb3JkRm9yVmlldyA9IGZ1bmN0aW9uKGRhdGFzZXREZWZJZCxkYXRhc2V0UmVjb3JkSWQpe1xyXG4gICAgICAgICBcclxuICAgICAgICAgaWYgKGRhdGFzZXRSZWNvcmRJZD09PXVuZGVmaW5lZCkgZGF0YXNldFJlY29yZElkPTBcclxuICAgICAgICAgaWYgKGRhdGFzZXREZWZJZD09PXVuZGVmaW5lZCkgZGF0YXNldERlZklkPTBcclxuICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLnJlc291cmNlUmVjb3JkSWQgPSBkYXRhc2V0UmVjb3JkSWRcclxuICAgICAgICAgJHNjb3BlLmZkLlBhcmVudERhdGFzZXREZWZJZCA9IGRhdGFzZXREZWZJZFxyXG4gICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlSWQ9PXVuZGVmaW5lZCkgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlSWQ9MFxyXG5cclxuICAgICAgICAgICAgbGV0IHBhZ2VpZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZUlkXHJcbiAgICAgICAgICAgIGxldCByaW5zdGFuY2UgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2VfaW5zdGFuY2VfaWRcclxuICAgICAgICAgICAgbGV0IHByZXZfcmVzb3VyY2VfaWQgPSAkc2NvcGUudGFza0V4ZWN1dGVJZFxyXG4gICAgICAgICBpZiAoJHNjb3BlLmZkLlBvcHVsYXRlVHlwZS50b1N0cmluZygpLnN1YnN0cigwLDEpPT0nMycpXHJcbiAgICAgICAgIHtcclxuICAgICAgICAgICAgLy9wYWdlaWQgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnByZXZfcGFnZV9pZFxyXG4gICAgICAgICAgICBwcmV2X3Jlc291cmNlX2lkID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wcmV2X3BhZ2VfaW5zdGFuY2VfaWRcclxuICAgICAgICAgXHJcbiAgICAgICAgIH1cclxuICAgICAgICAgaWYgKHByZXZfcmVzb3VyY2VfaWQ9PXVuZGVmaW5lZCkgcHJldl9yZXNvdXJjZV9pZD0wXHJcblxyXG4gICAgICAgICAgVGFza0RhdGFTZXJ2aWNlLkdldFRhc2tWaWV3UmVzb3VyY2UoJHNjb3BlLmZkLlV1aWRSZWYscGFnZWlkLCRzY29wZS50YXNrSWQscHJldl9yZXNvdXJjZV9pZCxyaW5zdGFuY2UsJ2knLGRhdGFzZXREZWZJZCxkYXRhc2V0UmVjb3JkSWQsJHNjb3BlLmZkLlBhcmFtZXRlcnMuUHVibGlzaGVkUmVzb3VyY2VWZXJzaW9uKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YXNldF9yZWNvcmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEuZGF0YS5kYXRhKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICAoZGF0YS5kYXRhLmxlbmd0aD4wKSBkYXRhc2V0X3JlY29yZCAgPSBkYXRhLmRhdGEuZGF0YVswXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZGF0YXNldF9yZWNvcmQ9e31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBkYXRhc2V0X3JlY29yZCAgPSBkYXRhLmRhdGEuZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0gPSAgW2RhdGFzZXRfcmVjb3JkXVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICB9ICAgICBcclxuXHJcbiAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgLy8gICAgICAgICAgIEdFVCBEQVRBU0VUIERJUkVDVCBGSUxURVJcclxuICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICAgICAgJHNjb3BlLmZkLmdldERhdGFzZXREaXJlY3QgPSBmdW5jdGlvbiAocmVsYXRlZERhdGFzZXRJZCxmaWx0ZXJfZGF0YSkge1xyXG5cclxuICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURhdGFEaXJlY3RGaWx0ZXIocmVsYXRlZERhdGFzZXRJZCxmaWx0ZXJfZGF0YSwkc2NvcGUuZmQuR3JpZFN0YXRlWydjb2x1bW5zUXVlcnknXSkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUHJlc2VudGF0aW9uVHlwZT09MCkgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLnNldHVwR3JpZE5ldyhkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJHNjb3BlLmZkLlByZXNlbnRhdGlvblR5cGU9PTIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtRGF0YT1be31dXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV09ZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLm1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5nZXRDb2x1bW5zRGVmID0gZnVuY3Rpb24gKCkge1xyXG5cclxuICAgICAgICBcclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuIGdldFJlc291cmNlQ29sdW1ucygkc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZUlkLCdkYXRhc2V0JyxsYW5nLCRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlVmVyc2lvbikudGhlbihmdW5jdGlvbihkYXRhKSB7Ly9NSUdPUlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uY29sdW1uRGVmcyA9IGRhdGEuZGF0YS5jb2x1bW5zRGVmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0ucmVzdWx0cy5jb2x1bW5zID0gICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5jb2x1bW5EZWZzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0ucmVzb3VyY2VEYXRhRG93bmxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uc2F2ZUdyaWRTdGF0ZShmYWxzZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgICAgICAgJHNjb3BlLmZkLnNlbGVjdEl0ZW0gPSBmdW5jdGlvbihpdGVtKVxyXG4gICAgICAgICB7XHJcbiAgICAgICAgICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcInZhbHVlQ2hhbmdlZFwiLCB7aXRlbVZhbHVlOnt2YWw6aXRlbX19KVxyXG4gICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vZWxlbWVudCBpcyBzZWxlY3RlZFxyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5pdGVtU2VsZWN0ZWQgPSBmdW5jdGlvbihpdGVtLG1vZGVsKVxyXG5cclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICRzY29wZS5mZC5zZWxlY3RJdGVtKGl0ZW0pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBSZXNvdXJjZSBpcyBzZWxlY3RlZFxyXG4gICAgICAgICRzY29wZS5mZC5vblNlbGVjdENhbGxiYWNrID0gZnVuY3Rpb24gKGl0ZW0sIG1vZGVsKVxyXG5cdFx0e1xyXG4gICAgICAgICAgICAgICAgdmFyIGV2ZW50UmVzdWx0SWQ9aXRlbS5pZDtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5ldmVudFJlc3VsdE5hbWU9aXRlbS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQucmVzb3VyY2VJZD1ldmVudFJlc3VsdElkO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmlzUmVzb3VyY2VTZWxlY3RlZD10cnVlO1xyXG5cdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgLy9pZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuUmVzb3VyY2VSZWxhdGlvbnNoaXBUeXBlPT09J2V4aXN0aW5nJylcclxuICAgICAgICAgICAgICAgIC8ve1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLm1heF9sZW5ndGghPXVuZGVmaW5lZCkgJHNjb3BlLmZkLk1heExlbmd0aD1pdGVtLm1heF9sZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5kYl90eXBlIT11bmRlZmluZWQpICRzY29wZS5mZC5EYnR5cGU9aXRlbS5kYl90eXBlXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlBhcmFtZXRlcnMuRmllbGROYW1lUmVsYXRlZFBhcmVudD1pdGVtLmZpZWxkX25hbWVcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLkZpZWxkTmFtZVJlbGF0ZWRQYXJlbnQ9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLlBhcmFtZXRlcnMuRmllbGROYW1lUmVsYXRlZFBhcmVudCA9ICdGaWVsZCcraXRlbS5ybWRVaWRcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vfVxyXG4gICAgICAgICAgICAgICBcdCRzY29wZS5mZC5SZWxhdGVkPSRzY29wZS5mZC5yZXNvdXJjZUlkO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmdldFB1Ymxpc2hlZFJlc291cmNlcygpXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlJlbGF0ZWQhPXVuZGVmaW5lZCAmJiAkc2NvcGUuZmQuUmVsYXRlZCE9bnVsbCkgJHNjb3BlLmZkLmdldEZvcm1GaWVsZHMoKTtcclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgIC8vIFJlc291cmNlIGlzIHNlbGVjdGVkXHJcbiAgICAgICAgICRzY29wZS5mZC5vblNlbGVjdFB1Ymxpc2hlZCA9IGZ1bmN0aW9uIChpdGVtLCBtb2RlbClcclxuXHRcdHtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MgPSAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0ucHVibGlzaGVkUmVzb3VyY2VMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKGl0ZW0/LmlkKTtcclxuICAgICAgICAgICAgICAgIGxldCBvbGRfcHVibGlzaF9pZCA9ICRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlSWRcclxuICAgICAgICAgICAgICAgIGlmIChwb3M+PTApe1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlSWQgPSAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0ucHVibGlzaGVkUmVzb3VyY2VMaXN0W3Bvc10uaWRcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5DaGlsZFJlc291cmNlTmFtZSA9ICRzY29wZS5mZC5uYW1lKyAnICgnKyRzY29wZS5mZC5pZCsnKSdcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZVZlcnNpb24gPSAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0ucHVibGlzaGVkUmVzb3VyY2VMaXN0W3Bvc10uVmVyc2lvbjtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLkdyaWRTdGF0ZT8uY29sdW1uc0RlZj09PXVuZGVmaW5lZCB8fCAkc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZUlkICE9b2xkX3B1Ymxpc2hfaWQpICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5nZXRDb2x1bW5zRGVmKClcclxuICAgICAgICAgICAgICAgICAgICBlbHNlICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5yZXNvdXJjZURhdGFEb3dubG9hZGVkID10cnVlXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLlBhcmFtZXRlcnMuRGVmU3RhdGUgPSAnYWR2YW5jZWQnXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAkc2NvcGUuZmQub25TZWxlY3RTZWFyY2hGb3JtPSBmdW5jdGlvbiAoaXRlbSwgbW9kZWwpXHJcblx0XHR7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlNlYXJjaD09dW5kZWZpbmVkKSAkc2NvcGUuZmRbJ3NlYXJjaCddPXt0YXNrSWQ6aXRlbX07XHJcbiAgICAgICAgICAgICAgIGVsc2UgJHNjb3BlLmZkLlNlYXJjaC50YXNrSWQgPSBpdGVtO1xyXG4gICAgICAgICAgICAgICAgLy8kc2NvcGUuZmQuU2VhcmNoLndpZGdldElkPTA7IC8vb3ZvIHRyZWJhIG5hIHNlcnZlcnUgZG9odmF0aXRpIHdpZGdldElkXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIH0gXHJcblx0XHRcdCAgXHJcbiAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLlVzZVVzZXJQcm9wZXJ0eSAmJiAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIudWVwPy5BZHZhbmNlZFByb3BlcnRpZXMhPXVuZGVmaW5lZCkgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLnVlcD8uQWR2YW5jZWRQcm9wZXJ0aWVzWyRzY29wZS5mZC5QYXJhbWV0ZXJzLlVzZXJQcm9wZXJ0eUlkXVxyXG5cclxuICAgICAgICAvL2FrbyBpbWEgb2RhYnJhbmloIGRvaHZhdGkgaWggaSBzZXR1cGlyYWpcclxuICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhIT11bmRlZmluZWQgJiYgJHNjb3BlLmZkLlBhcmFtZXRlcnMuR2V0RGF0YSAmJiAhJHNjb3BlLmZvcm1EZWZpbml0aW9uKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoJHNjb3BlLmZvcm1EYXRhKSAmJiAkc2NvcGUuZm9ybURhdGEubGVuZ3RoPjApXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0hPXVuZGVmaW5lZCAmJiBBcnJheS5pc0FycmF5KCRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSkpXHJcbiAgICAgICAgICAgICAgICB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUHJlc2VudGF0aW9uVHlwZT09MClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLnJlc291cmNlRGF0YURvd25sb2FkZWQgPXRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSE9W3t9XSAmJiAkc2NvcGUuZmQuRWxlbWVudFR5cGUhPSdlcmVzb3VyY2UnKSAkc2NvcGUuZmQuZ2V0RGF0YXNldERpcmVjdCgkc2NvcGUuZmQuUmVsYXRlZCx7J2lkX19pbic6WyRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXV19KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJHNjb3BlLmZkLkVsZW1lbnRUeXBlPT0nZXJlc291cmNlJykgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZl9kYXRhID0ge31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmX2RhdGFbJHNjb3BlLmZkLkZpZWxkTmFtZV0gPSAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0ucGFyZW50UmVzb3VyY2VSZWNvcmRJZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5nZXREYXRhc2V0RGlyZWN0KCRzY29wZS5mZC5SZWxhdGVkLGZfZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJHNjb3BlLmZkLlByZXNlbnRhdGlvblR5cGU9PTEgJiYgJHNjb3BlLmZkLlNob3dGaWVsZClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5yZWZyZXNoRGF0YXNldERhdGFMaXN0KCkgLy8gVE9ETyAtIGNoZWNrIHdoeSBubyBwYXJhbWV0ZXJzIGlzIHNlbnQgdG8gZnVuY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJHNjb3BlLmZkLlJlbGF0ZWQ9PT1udWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdSZXNvdXJjZSBpcyBub3Qgc2VsZWN0ZWQuIFBsZWFzZSBzZWxlY3QgcmVzb3VyY2UnLCdpbmZvJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRzY29wZS5mZC5QcmVzZW50YXRpb25UeXBlPT0xICYmICRzY29wZS5mZC5TaG93RmllbGQpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQucmVmcmVzaERhdGFzZXREYXRhTGlzdCgpLy8gVE9ETyAtIGNoZWNrIHdoeSBubyBwYXJhbWV0ZXJzIGlzIHNlbnQgdG8gZnVuY3Rpb25cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1lbHNlICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5HZXRSZXNvdXJjZURhdGFGb3JQYXJlbnQoKVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRzY29wZS5mZC5QcmVzZW50YXRpb25UeXBlPT0xICYmICRzY29wZS5mZC5TaG93RmllbGQpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5yZWZyZXNoRGF0YXNldERhdGFMaXN0KCkvLyBUT0RPIC0gY2hlY2sgd2h5IG5vIHBhcmFtZXRlcnMgaXMgc2VudCB0byBmdW5jdGlvblxyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRzY29wZS5mZC5QcmVzZW50YXRpb25UeXBlPT0yICYmIHR5cGVvZigkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0pPT0nbnVtYmVyJylcclxuICAgICAgICAgICAgICAgIHsgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5pdGVtVmFsdWUgPSBhbmd1bGFyLmNvcHkoJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0gPSBbe31dXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNbJHNjb3BlLmZkLmlkXS5HZXRSZWNvcmRGb3JWaWV3KCRzY29wZS5mZC5SZWxhdGVkLCRzY29wZS5mZC5pdGVtVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uR2V0UmVzb3VyY2VEYXRhRm9yUGFyZW50KCkgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLlJlc291cmNlUmVsYXRpb25zaGlwVHlwZT09PSduZXcnIHx8ICRzY29wZS5mZC5QYXJhbWV0ZXJzLlJlc291cmNlUmVsYXRpb25zaGlwVHlwZT09PSd2aWV3JykgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmdldFJlc291cmNlcygkc2NvcGUuZmQuUGFyYW1ldGVycy5SZXNvdXJjZVR5cGUpXHJcbiAgICAgICAgICAgIGVsc2UgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmdldFB1Ymxpc2hlZFJlc291cmNlcygpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuUHVibGlzaGVkUmVzb3VyY2VJZCE9dW5kZWZpbmVkKSB7XHJcblxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZvcm1EZWZpbml0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0uZ2V0UHVibGlzaGVkUmVzb3VyY2VzKCkgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZ2V0Rm9ybUZpZWxkcygpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZigkc2NvcGUuZmQuUGFyYW1ldGVycy5HZXREYXRhIHx8ICRzY29wZS5mZC5TaG93U2VhcmNoRm9ybSkgJHNjb3BlLmxvY2FsVmFyc1skc2NvcGUuZmQuaWRdLmdldFB1Ymxpc2hlZFJlc291cmNlQnlJZCgkc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZUlkLCRzY29wZS5mZC5TaG93U2VhcmNoRm9ybSlcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAkc2NvcGUucHJvY2Vzc0V2ZW50cyA9IGZ1bmN0aW9uKGRhdGEsbmV3Um91bmQpXHJcbiAgICAgICAge1xyXG5cclxuICAgICAgICAgICAgVXRpbGl0eVNlcnZpY2UucHJvY2Vzc19ldmVudHMoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkLHZhbHVlU3RhdGUsZGF0YSwkc2NvcGUuZmQuUGFyYW1ldGVycy5ldmVudHMsJHNjb3BlLmtzbSxuZXdSb3VuZClcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vcHJvY2VzcyBldmVudHMgYW5kIGV4ZWN1dGUgYWN0aW9uc1xyXG4gICAgICAgIGlmICghJHNjb3BlLmZvcm1EZWZpbml0aW9uICYmICRzY29wZS5mZC5QYXJhbWV0ZXJzPy5ldmVudHM/Lmxlbmd0aD4wKSBVdGlsaXR5U2VydmljZS5zdWJzY3JpYmVfMl9ldmVudHMoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkLCRzY29wZS5wYXJlbnRXaWRnZXQsJHNjb3BlLmZkLlBhcmFtZXRlcnMuZXZlbnRzLCRzY29wZSwkc2NvcGUua3NtKVxyXG5cclxuICAgICAgICBsZXQgdGVtcGxhdGU7XHJcbiAgICAgICAgaWYgKCRzY29wZS5mb3JtRGVmaW5pdGlvbikgdGVtcGxhdGUgPSAkdGVtcGxhdGVDYWNoZS5nZXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0UmVzb3VyY2UuaHRtbCcpO1xyXG4gICAgICAgIGVsc2UgXHJcbiAgICAgICAgICAgIHsgXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuUmVzb3VyY2VUeXBlPT0nZmlsZScpICB0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZUNhY2hlLmdldCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RGaWxlRXhlLmh0bWwnKVxyXG4gICAgICAgICAgICAgICAgZWxzZSB0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZUNhY2hlLmdldCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RSZXNvdXJjZUV4ZS5odG1sJylcclxuICAgICAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgICBcclxuICAgICAgICAkZWxlbWVudC5hcHBlbmQoJGNvbXBpbGUodGVtcGxhdGUpKCRzY29wZSkpOyAgXHJcbiAgICAgICAgICBcclxuXHR9LC8vLi4uY29udHJvbGxlclxyXG5cdFx0XHRcdFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XHJcbiAgICAgICAgICAgICBcdFx0c2NvcGUubG9jYWxWYXJzW3Njb3BlLmZkLmlkXS5kYXRhc2V0bGlzdGxpbmtlZCAgPSB0cnVlXHJcbiAgICAgICAgICAgIH1cclxuICAgIFxyXG4gICAgfVxyXG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0UmVzb3VyY2VEZWZpbml0aW9uICgpIHtcclxuICAgICAgXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICByZXN0cmljdDogJ0EnLFxyXG4gICAgICAgIHNjb3BlOntcclxuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZTonPScsXHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9LFxyXG5cdHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RSZXNvdXJjZURlZmluaXRpb24uaHRtbCcsXHJcbiAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24gKCRzY29wZSwkcm9vdFNjb3BlLEdyaWRzdGVyU2VydmljZSxLYXRhbHlvU3RhdGVNYW5hZ2VyLFJlc291cmNlc0RhdGFTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsQ29kZXNTZXJ2aWNlKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5nc3J2YyA9IEdyaWRzdGVyU2VydmljZTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmtzbSA9IEthdGFseW9TdGF0ZU1hbmFnZXI7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5FZGl0UmVzb3VyY2VGbj1mdW5jdGlvbih2YWwpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZWRpdFJlc291cmNlPXZhbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICAgICBDb2Rlc1NlcnZpY2UuZ2V0Q29kZXNCeU5hbWUoJ2NvZGVzdGF0dXMnLGxhbmcpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VTdGF0dXNMaXN0ID0gZGF0YS5kYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnN0YXR1c2VzRG93bmxvYWRlZD10cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnNhdmVSZXNvdXJjZURlZiA9IGZ1bmN0aW9uIChmb3JtYSkge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIGlmIChmb3JtYS4kdmFsaWQpXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5TYXZlUmVzb3VyY2VEZWYyKCRzY29wZS5yZXNvdXJjZSkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXM9PT0yMDAgfHwgZGF0YS5zdGF0dXM9PTIwMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLm1zZywnc3VjY2VzcycpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiUGxlYXNlIGVudGVyIHJlcXVpcmVkIGRhdGFcIiwnd2FybmluZycpOyBcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfTsgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG5cdFx0XHRcdFxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgfSAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcbn07XG4ndXNlIHN0cmljdCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3RSZXNvdXJjZWlkICgpIHtcclxuICAgICAgXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICByZXN0cmljdDogJ0EnLFxyXG5cdC8vdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFJlc291cmNlaWQuaHRtbCcsXHJcbiAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24gKCRzY29wZSxHcmlkc3RlclNlcnZpY2UsS2F0YWx5b1N0YXRlTWFuYWdlciwkdGVtcGxhdGVDYWNoZSwkY29tcGlsZSwkZWxlbWVudClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2U7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5rc20gPSBLYXRhbHlvU3RhdGVNYW5hZ2VyO1xyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzPT11bmRlZmluZWQpICRzY29wZS5mZC5QYXJhbWV0ZXJzPXt9O1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlc291cmNlSWRWYWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZm9ybURhdGEubGVuZ3RoPT0wKSAkc2NvcGUuZm9ybURhdGE9W3t9XVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoJHNjb3BlLmZvcm1EYXRhKSkgJHNjb3BlLmZvcm1EYXRhPVt7fV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlSWRWYWx1ZT0kc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9ZWxzZSAkc2NvcGUuZm9ybURhdGE9W3t9XTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBsZXQgcGFyZW50V2lkZ2V0VWlkID0gJydcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnBhcmVudFdpZGdldCE9dW5kZWZpbmVkKSBwYXJlbnRXaWRnZXRVaWQgPSAkc2NvcGUucGFyZW50V2lkZ2V0KyctJ1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCB2YWx1ZVN0YXRlPSAkc2NvcGUua3NtLmFkZFN1YmplY3QoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkKyctJytwYXJlbnRXaWRnZXRVaWQrJHNjb3BlLmZkLlV1aWRSZWYscmVzb3VyY2VJZFZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvL2xldCB2YWx1ZVN0YXRlPSAkc2NvcGUua3NtLmFkZFN1YmplY3QoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkKyctcmVzb3VyY2VpZFZhbHVlU3RhdGVOYW1lJyskc2NvcGUuZmQuVXVpZFJlZCxyZXNvdXJjZUlkVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlU3RhdGVOYW1lID0gdmFsdWVTdGF0ZS5zdWJqZWN0Lm5hbWU7XHJcbiAgICAgICAgICAgICAgICAvL3ZhbHVlU3RhdGUuc3ViamVjdC5ub3RpZnlPYnNlcnZlcnMoXCJ2YWx1ZUNoYW5nZWRcIik7IFxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlX2NoYW5nZWQgPSBmdW5jdGlvbihkYXRhKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlU3RhdGUuc3ViamVjdC5zZXRTdGF0ZUNoYW5nZXMgPSBkYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlU3RhdGUuc3ViamVjdC5ub3RpZnlPYnNlcnZlcnMoXCJ2YWx1ZUNoYW5nZWRcIik7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgYWN0aW9uX3ZhbHVlX2NoYW5nZWQgPSAkc2NvcGUua3NtLmFkZEFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcInZhbHVlQ2hhbmdlZFwiLHZhbHVlX2NoYW5nZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUub25fYmx1cl9hY3Rpb249ZnVuY3Rpb24oKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKHZhbHVlU3RhdGVOYW1lLFwidmFsdWVDaGFuZ2VkXCIsICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IGFwcGx5X3ZhbHVlID0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV09PXVuZGVmaW5lZCkgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdID0gZGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGFbMF1bJ2lkJ109PXVuZGVmaW5lZCkgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdID0gZGF0YVswXVsnaWQnXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkYXRhKSA9PT0gJ1tvYmplY3QgT2JqZWN0XScpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFbJHNjb3BlLmZkLkZpZWxkTmFtZV09PXVuZGVmaW5lZCkgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdID0gZGF0YVskc2NvcGUuZmQuRmllbGROYW1lXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGFbJ2lkJ109PXVuZGVmaW5lZCkgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdID0gZGF0YVsnaWQnXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcInZhbHVlQ2hhbmdlZFwiLCAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0pO1xyXG4gICAgICAgICAgICAgICAgfTsgXHJcbiAgICAgICAgICAgICAgIC8vIGxldCBvYnNlcnZlcl91bmRvID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoZm9ybUNoYW5nZXNTdWJqZWN0LFwiRmllbGRcIiskc2NvcGUuZmQuSXRlbUlkLFwidmFsdWVDaGFuZ2VkXCIsYXBwbHlfdmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLkRlcGVuZGVudEZpZWxkSWQhPXVuZGVmaW5lZCAmJiAkc2NvcGUuZmQuUGFyYW1ldGVycy5EZXBlbmRlbnRGaWVsZElkIT1udWxsKVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLkRlcGVuZGVudEZpZWxkSWQhPVwiXCIpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGVwZW5kZW50X2ZpZWxkID0gXCJGaWVsZFwiKyRzY29wZS5mZC5QcmVzZW50YXRpb25JZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN1YnNjcmliZWRTdWJqZWN0ID0gJHNjb3BlLmZkLlBhcmFtZXRlcnMuRGVwZW5kZW50RmllbGRUeXBlK1wiVmFsdWVTdGF0ZU5hbWVcIiskc2NvcGUuZmQuUGFyYW1ldGVycy5EZXBlbmRlbnRGaWVsZElkKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udHJhbnNhY3Rpb25faWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdWJqZWN0ID0gJHNjb3BlLmtzbS5hZGRTdWJqZWN0KHN1YnNjcmliZWRTdWJqZWN0LG51bGwpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlciA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0LGRlcGVuZGVudF9maWVsZCxcInZhbHVlQ2hhbmdlZFwiLGFwcGx5X3ZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbCA9ICRzY29wZS5rc20uZ2V0U3RhdGUoc3Vic2NyaWJlZFN1YmplY3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsLnN0YXRlIT1udWxsKSBhcHBseV92YWx1ZSh2YWwuc3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcblx0XHRcdFx0aWYgKCAkc2NvcGUuZmQubG9jYWxWYXJzPT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnM9e31cclxuXHJcbiAgICAgICAgICAgICAgICAgaWYgKHJlc291cmNlSWRWYWx1ZSE9dW5kZWZpbmVkKSAkc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24odmFsdWVTdGF0ZU5hbWUsXCJ2YWx1ZUNoYW5nZWRcIiwgcmVzb3VyY2VJZFZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgdGVtcGxhdGVcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fZGVmaW5pdGlvbikgdGVtcGxhdGUgPSAkdGVtcGxhdGVDYWNoZS5nZXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0UmVzb3VyY2VpZC5odG1sJyk7XHJcbiAgICAgICAgICAgICAgICBlbHNlIHRlbXBsYXRlID0gJHRlbXBsYXRlQ2FjaGUuZ2V0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFJlc291cmNlaWRFeGUuaHRtbCcpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgJGVsZW1lbnQuYXBwZW5kKCRjb21waWxlKHRlbXBsYXRlKSgkc2NvcGUpKTsgIFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG5cdFx0XHRcdFxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgc2NvcGUuc2VhcmNoPVtcclxuICAgICAgICAgICAgICAgIHtpZDoxLGZpbHRlcjonZ3QnLG5hbWU6XCJHcmVhdGVyIHRoYW5cIixpY29uOlwiZmEgZmEtY2hldnJvbi1yaWdodFwifSxcclxuICAgICAgICAgICAgICAgIHtpZDoyLGZpbHRlcjonYmV0d2VlbicsbmFtZTpcIkJldHdlZW5cIixpY29uOlwiZmEgZmEtZXhwYW5kXCJ9LFxyXG4gICAgICAgICAgICAgICAge2lkOjMsZmlsdGVyOidsdCcsbmFtZTpcIkxvd2VyIHRoYW5cIixpY29uOlwiZmEgZmEtY2hldnJvbi1sZWZ0XCJ9LFxyXG4gICAgICAgICAgICAgICAge2lkOjQsZmlsdGVyOidlcScsbmFtZTpcIkVxdWFsc1wiLGljb246XCJmYSBmYS1iYXJzXCJ9IF07XHJcblx0XHRcdFx0XHJcbiAgICAgICAgICAgICAgICBzY29wZS5yZWZyZXNoU2VhcmNoVmFsdWUgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLlNlYXJjaCkgc2NvcGUuZmQuU2VhcmNoLlZhbHVlPXNjb3BlLmZvcm1EYXRhWzBdW3Njb3BlLmZkLkZpZWxkTmFtZV07ICAgICAgXHJcbiAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoc2NvcGUuc2hvd1NlYXJjaEZpbHRlcnMpICB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuU2VhcmNoPXNjb3BlLnNlYXJjaFszXTsvL2luaXRpYWxpemUgdG8gZXF1YWxzXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLlNlYXJjaCAmJiBzY29wZS5mb3JtRGF0YSE9dW5kZWZpbmVkICYmIHNjb3BlLmZvcm1EYXRhLmxlbmd0aD4wKSBzY29wZS5mZC5TZWFyY2guVmFsdWU9c2NvcGUuZm9ybURhdGFbMF1bc2NvcGUuZmQuRmllbGROYW1lXTsgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBzY29wZS5zaG93UHJvcGVydGllcyA9IGZ1bmN0aW9uKGV2ZW50KVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5nc3J2Yy5zZXRGaWVsZFByb3BlcnRpZXMoc2NvcGUuZmQsIHNjb3BlLmlucHV0QXJyYXkpOy8vIGlucHV0QXJyYXkgaXMgcGFyZW50XHJcbiAgICAgICBcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHNjb3BlLmFwcGx5RmlsdGVycyA9IGZ1bmN0aW9uKGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLlNlYXJjaD1zY29wZS5zZWFyY2hbaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZvcm1EYXRhWzBdW3Njb3BlLmZkLkZpZWxkTmFtZV0pIHNjb3BlLmZkLlNlYXJjaC5WYWx1ZT1zY29wZS5mb3JtRGF0YVswXVtzY29wZS5mZC5GaWVsZE5hbWVdOyAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0UmVzb3VyY2VSZWYgKCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcmVzdHJpY3Q6ICdBJywgXHJcbiAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24gKCRzY29wZSwgJHJvb3RTY29wZSxSZXNvdXJjZXNEYXRhU2VydmljZSxQcm9jZXNzaW5nU2VydmljZSwkdGltZW91dCxNZXNzYWdpbmdTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSxVdGlsaXR5U2VydmljZSxXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlKSB7XHJcblx0XHJcbiAgICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlO1xyXG4gICAgICAgXHRcclxuICAgICAgIFx0IGlmICgkc2NvcGUuZmQubG9jYWxWYXJzPT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnM9e307ICAgICAgICBcclxuIFx0XHRcdFx0IGlmICghJHNjb3BlLmZkLlBhcmFtZXRlcnMpICAkc2NvcGUuZmQuUGFyYW1ldGVycz17fVxyXG4gICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzPT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnM9e307ICAgICAgICBcclxuXHJcblx0XHRcdFx0XHRcdFxyXG4gICAgICAgICAgJHNjb3BlLmNvbExlbmd0aCA9IFsnY29sLWxnLTInLCdjb2wtbGctNCcsJ2NvbC1sZy02JywnY29sLWxnLTgnLCdjb2wtbGctMTAnLCdjb2wtbGctMTInLCdjb2wtbGctMTQnLCdjb2wtbGctMTYnLCdjb2wtbGctMTgnLCdjb2wtbGctMjAnLCdjb2wtbGctMjInLCdjb2wtbGctMjQnXTtcclxuICAgICAgIFxyXG5cdCAgXHRcdFx0JHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVR5cGVzTGlzdD1be2lkOjEsdHlwZToncGFnZScsbmFtZTonUGFnZSd9LHtpZDoyLG5hbWU6J0RhdGFzZXQnLHR5cGU6J3Jlc291cmNlJ30se2lkOjMsbmFtZTonRmlsZScsdHlwZTonZmlsZSd9LHtpZDo0LG5hbWU6J0FwcGxpY2F0aW9uJyx0eXBlOidhcHBsaWNhdGlvbid9XVxyXG4gXHRcdFx0XHRcdFxyXG4gXHRcdFx0XHRcdCAgICAgICAgIGxldCB3X2FjdGlvbnM9W1xyXG4gICAgICAgICAgICAgICAgICAgIHtpZDoxLG5hbWU6J3ZhbHVlQ2hhbmdlZCd9LCAgXHJcbiAgICAgICAgICAgICAgICBdXHJcblxyXG4gICAgICAgIGxldCBwYXJlbnRXaWRnZXRVaWQgPSAnJ1xyXG5cclxuICAgICAgICBpZiAoJHNjb3BlLnBhcmVudFdpZGdldCE9dW5kZWZpbmVkKSBwYXJlbnRXaWRnZXRVaWQgPSAkc2NvcGUucGFyZW50V2lkZ2V0KyctJ1xyXG5cclxuICAgICAgICBpZiAoJHNjb3BlLmZkLlV1aWRSZWY9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLlV1aWRSZWY9VXRpbGl0eVNlcnZpY2UudXVpZHY0KClcclxuICAgICAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5VdWlkUmVmID0gJHNjb3BlLmZkLlV1aWRSZWZcclxuXHJcbiAgICAgICAgaWYgKCEkc2NvcGUuZmQuU2F2ZWQpICRzY29wZS5mZC5JdGVtSWQgPSAkc2NvcGUubG9jYWxWYXJzLmxvY2FsV2lkZ2V0SWRcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRsZXQgd2lkZ2V0RGVmaW5pdGlvbiA9IHthY3Rpb25zOiB3X2FjdGlvbnMsbmFtZTogJ3Jlc291cmNlUmVmV2lkZ2V0Jyx3aWRnZXRMYWJlbDogJ1Jlc291cmNlIHJlZmVyZW5jZScsd2lkZ2V0TmFtZTogJ3Jlc291cmNlUmVmV2lkZ2V0Jyx3aWRnZXRJZDogcGFyZW50V2lkZ2V0VWlkKyRzY29wZS5mZC5VdWlkUmVmLG91dHB1dDpudWxsLHBhcmVudFJlc291cmNlSWQ6JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi51aWQgfTtcclxuICAgICAgIFxyXG5cdFx0XHRcdCRzY29wZS5sb2NhbFZhcnMubG9jYWxXaWRnZXRJZCA9IFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UucmVnaXN0ZXJXaWRnZXQod2lkZ2V0RGVmaW5pdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHRcdFxyXG5cdFx0XHRcdFx0Ly8gUmVzb3VyY2UgdHlwZSBpcyBzZWxlY3RlZFxyXG4gICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMub25TZWxlY3RDYWxsYmFjayA9IGZ1bmN0aW9uIChpdGVtLCBtb2RlbCl7XHJcbiAgICAgICAgICAgICAgICB2YXIgZXZlbnRSZXN1bHRJZD1pdGVtLmlkO1x0XHRcdFx0XHJcbiAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuXHRcdFx0XHR9LC8vLi4uY29udHJvbGxlclxyXG5cdFx0XHRcdFxyXG4gICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0UmVzb3VyY2VSZWYuaHRtbCcsXHJcbiAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcclxuXHRcdFx0XHQgICAgXHJcbiAgICAgICAgICAgIGlmICghc2NvcGUuZmQuUG9wdWxhdGVUeXBlKSBzY29wZS5mZC5Qb3B1bGF0ZVR5cGU9MFxyXG4gICAgICAgICAgICB9XHJcbiAgICBcclxuICAgIH1cclxufTtcbid1c2Ugc3RyaWN0JztcclxuXHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0UmVzb3VyY2VTZWxlY3RvciAgKFJlc291cmNlc0RhdGFTZXJ2aWNlLCRyb290U2NvcGUsZHJhZ3VsYXJTZXJ2aWNlLCR0aW1lb3V0LE1lc3NhZ2luZ1NlcnZpY2UpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXHJcbiAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0UmVzb3VyY2VTZWxlY3Rvci5odG1sJyxcclxuICAgICAgICAgICAgIHNjb3BlOntcclxuICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFJlc291cmNlOic9JyxcclxuICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGVzTGlzdDonPScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyczonPScsXHJcblxyXG5cclxuICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG4gICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgaWYgKCFzY29wZS5wYXJhbWV0ZXJzKSBzY29wZS5wYXJhbWV0ZXJzPXt9XHJcbiBcclxuICAgICAgICAgICAgc2NvcGUuZ2V0UmVzb3VyY2VzID0gZnVuY3Rpb24ocmVzb3VyY2VfdHlwZSkgIHsgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKHNjb3BlLnJlc291cmNlTGlzdD09dW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgc2NvcGUucmVzb3VyY2VMaXN0PXt9O1xyXG4gICAgICAgICAgICAgICAgIHNjb3BlLnJlc291cmNlTGlzdFtyZXNvdXJjZV90eXBlXT1bXVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICBcclxuICAgICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFzY29wZS5yZXNvdXJjZUxpc3Rbc2NvcGUucGFyYW1ldGVycy5TZWxlY3RlZFJlc291cmNlVHlwZV0/Lmxlbmd0aCAmJiBzY29wZS5wYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlKXtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZMaXN0QnlUeXBlKGxhbmcscmVzb3VyY2VfdHlwZSkudGhlbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVzb3VyY2VMaXN0W3Jlc291cmNlX3R5cGVdID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuc2V0UmVzb3VyY2VEZCgpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLnNlbGVjdGVkUmVzb3VyY2U/LmlkKSBzY29wZS5nZXRQdWJsaXNoZWRSZXNvdXJjZXMoKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIHNjb3BlLnNldFJlc291cmNlRGQgPSBmdW5jdGlvbigpeyAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCB0bXBSZXNvdXJjZUl0ZW0gPSBzY29wZS5zZWxlY3RlZFJlc291cmNlXHJcbiAgICAgICAgICAgICAgICBpZiAoIXNjb3BlLnNlbGVjdGVkUmVzb3VyY2Upe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcG9zID0gc2NvcGUucmVzb3VyY2VMaXN0W3Njb3BlLnBhcmFtZXRlcnMuU2VsZWN0ZWRSZXNvdXJjZVR5cGVdLm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKHNjb3BlLnNlbGVjdGVkUmVzb3VyY2U/LmlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcz49MCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5zZWxlY3RlZFJlc291cmNlPSBzY29wZS5yZXNvdXJjZUxpc3Rbc2NvcGUucGFyYW1ldGVycy5TZWxlY3RlZFJlc291cmNlVHlwZV1bcG9zXVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9ICAgICAgICAgICAgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNjb3BlLmdldFB1Ymxpc2hlZFJlc291cmNlcz1mdW5jdGlvbigpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBzY29wZS5wdWJsaXNoZWRMb2FkZWQ9ZmFsc2VcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgaWYgKHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlTGlzdD09dW5kZWZpbmVkKSBcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgc2NvcGUucHVibGlzaGVkUmVzb3VyY2VMaXN0PXt9O1xyXG4gICAgICAgICAgICAgICAgaWYgKHNjb3BlLnBhcmFtZXRlcnMuU2VsZWN0ZWRSZXNvdXJjZVR5cGUpIHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlTGlzdFtzY29wZS5wYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlXT1bXVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5HZXRQdWJsaXNoZWRSZXNvdXJjZXNCeVR5cGVJZChzY29wZS5zZWxlY3RlZFJlc291cmNlLmlkLCdmb3JtJykudGhlbihcclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChkYXRhKSB7ICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgc2NvcGUucHVibGlzaGVkUmVzb3VyY2VMaXN0W3Njb3BlLnBhcmFtZXRlcnMuU2VsZWN0ZWRSZXNvdXJjZVR5cGVdID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgc2NvcGUucHVibGlzaGVkTG9hZGVkPXRydWVcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIXNjb3BlLnBhcmFtZXRlcnMuU2VsZWN0VmVyc2lvbkRpcmVjdCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBzY29wZS5wYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlSWQgPSBzY29wZS5wdWJsaXNoZWRSZXNvdXJjZUxpc3Rbc2NvcGUucGFyYW1ldGVycy5TZWxlY3RlZFJlc291cmNlVHlwZV1bMF0uaWRcclxuICAgICAgICAgICAgICAgICAgICBzY29wZS5wYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlVmVyc2lvbiA9IHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlTGlzdFtzY29wZS5wYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlXVswXS5WZXJzaW9uXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9ICAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgc2NvcGUuR2V0UHVibGlzaGVkUmVzb3VyY2VzQnlUeXBlID0gZnVuY3Rpb24ocmVzb3VyY2VfdHlwZSkgIHsgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmIChyZXNvdXJjZV90eXBlPT11bmRlZmluZWQpIHJlc291cmNlX3R5cGUgPSBzY29wZS5yZXNvdXJjZVR5cGVcclxuICAgICAgICAgICAgICAgIGlmIChzY29wZS5wdWJsaXNoZWRSZXNvdXJjZUxpc3Q9PXVuZGVmaW5lZCkgXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5wdWJsaXNoZWRSZXNvdXJjZUxpc3Q9e307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5wYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlKSBzY29wZS5wdWJsaXNoZWRSZXNvdXJjZUxpc3Rbc2NvcGUucGFyYW1ldGVycy5TZWxlY3RlZFJlc291cmNlVHlwZV09W11cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy8gd2UgYXJlIGluIGJ1aWxkIG1vZGUsIHNvIHdlIHNob3VsZCBpbnZhbGlkYXRlIGNhaGNlICh1c2VDYWNoZSBpcyBmYWxzZSkgIFRPRE8gLSBwcm92amVyaXRpIGRhIGxpIHRyZWJhIGtvcmlzaXRpIGNhY2hlXHJcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5HZXRQdWJsaXNoZWRSZXNvdXJjZXNCeVR5cGUocmVzb3VyY2VfdHlwZSwnZm9ybScsIGZhbHNlKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyICAgLy9HZXRQdWJsaXNoZWRSZXNvdXJjZXNCeVR5cGUgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucHVibGlzaGVkUmVzb3VyY2VMaXN0W3Njb3BlLnBhcmFtZXRlcnMuU2VsZWN0ZWRSZXNvdXJjZVR5cGVdLmxlbmd0aCA9IDA7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ3VsYXIuZXh0ZW5kKHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlTGlzdFtzY29wZS5wYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlXSwgZGF0YS5kYXRhKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICB9IFxyXG4gICAgXHJcbiAgICAgICAgIC8qIFxyXG4gICAgICAgICBzY29wZS5jb25maXJtPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICBcclxuICAgICAgICAgICAgICBcclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgc2NvcGUuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQgPSBzY29wZS5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lICsnICgnK3Njb3BlLnNlbGVjdGVkUmVzb3VyY2VJdGVtLmlkICsnKSdcclxuICAgICAgICAgICAgICAgICAgICBzY29wZS5wYXJhbWV0ZXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnbmFtZV9jb25maXJtZWQnOiBzY29wZS5zZWxlY3RlZFJlc291cmNlSXRlbT8ubmFtZV9jb25maXJtZWRcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIHNjb3BlLnNlbGVjdGVkUmVzb3VyY2VJdGVtX2M9c2NvcGUuc2VsZWN0ZWRSZXNvdXJjZUl0ZW1QdWJsaXNoZWQ7IFxyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwdWJsaXNoZWQgPSBzY29wZS5wdWJsaXNoZWRSZXNvdXJjZUxpc3Rbc2NvcGUucHVibGlzaGVkUmVzb3VyY2VMaXN0Lmxlbmd0aC0xXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHB1Ymxpc2hlZCE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5zZWxlY3RlZFJlc291cmNlSXRlbV9jID0gcHVibGlzaGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5wYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlSWQgPSBwdWJsaXNoZWQuaWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnBhcmFtZXRlcnMuUHVibGlzaGVkUmVzb3VyY2VWZXJzaW9uID0gcHVibGlzaGVkLlZlcnNpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgXHJcbiAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICBcclxuICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICovICAgXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgc2NvcGUub25SZXNvdXJjZVNlbGVjdG9yQ2FsbGJhY2sgPSBmdW5jdGlvbiAoaXRlbSwgbW9kZWwpe1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgZXZlbnRSZXN1bHRJZD1pdGVtLmlkO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBldmVudFJlc3VsdE5hbWU9aXRlbS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBldmVudFJlc3VsdFBhcmVudEVsZW1lbnRJZCA9aXRlbS5wYXJlbnRFbGVtZW50SWQ7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUuc2VsZWN0ZWRSZXNvdXJjZSA9IGl0ZW1cclxuICAgICAgICAgICAgICAgICAgICBzY29wZS5wYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlSWQ9MFxyXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmdldFB1Ymxpc2hlZFJlc291cmNlcygpXHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHNjb3BlLm9uUmVzb3VyY2VTZWxlY3RvclZlcnNpb25DYWxsYmFjayA9IGZ1bmN0aW9uIChpdGVtLCBtb2RlbCl7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLnNlbGVjdGVkUmVzb3VyY2VJdGVtUHVibGlzaGVkID0gaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLnBhcmFtZXRlcnMuUHVibGlzaGVkUmVzb3VyY2VJZCA9IGl0ZW0uaWRcclxuICAgICAgICAgICAgICAgICAgICBzY29wZS5wYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlVmVyc2lvbiA9IGl0ZW0uVmVyc2lvblxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKHNjb3BlLnBhcmFtZXRlcnMuU2VsZWN0ZWRSZXNvdXJjZVR5cGUpIHNjb3BlLmdldFJlc291cmNlcyhzY29wZS5wYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlKVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0UmljaHRleHRib3ggKCkge1xyXG4gICAgICAgXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uICgkc2NvcGUsJHJvb3RTY29wZSwkdGVtcGxhdGVDYWNoZSwkZWxlbWVudCwkY29tcGlsZSxHcmlkc3RlclNlcnZpY2UsV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZSxDb2Rlc1NlcnZpY2UsJHNjZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzPT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnM9e307XHJcblx0XHRcdFx0XHRcdGlmICgkc2NvcGUuZmQubG9jYWxWYXJzPT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnM9e307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cdFx0XHRcdFx0XHQkc2NvcGUuZmQubG9jYWxWYXJzLndkZXMgPSBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEZWZpbml0aW9uPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybURhdGEgPSBbe31dOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJHNjb3BlLmZvcm1EYXRhLmxlbmd0aD09MCkgXHJcblx0XHRcdFx0XHRcdFx0XHQkc2NvcGUuZm9ybURhdGEgPSBbe31dO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5lbmFibGVFZGl0RGVmYXVsdD10cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzQnlOYW1lKCd1c2VydGFncycsbGFuZykudGhlbihcclxuXHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC50YWdMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcG9zID0gJHNjb3BlLmZkLnRhZ0xpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoJHNjb3BlLmZkLlVuaXF1ZUlkKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcz49MCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5VbmlxdWVJZE9iaj0kc2NvcGUuZmQudGFnTGlzdFtwb3NdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhWzBdIT11bmRlZmluZWQgJiYgICRzY29wZS5mZC5SZWFkT25seSkgJHNjb3BlLmZkLnJlYWRPbmx5VmFsPSRzY2UudHJ1c3RBc0h0bWwoJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJHdhdGNoKFwiZmQuUmVhZE9ubHlcIixmdW5jdGlvbihuZXdWYWx1ZSxvbGRWYWx1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWYgKCRzY29wZS5zaG93U2VhcmNoRmlsdGVycylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YVswXSE9dW5kZWZpbmVkICYmICAkc2NvcGUuZmQuUmVhZE9ubHkpICRzY29wZS5mZC5yZWFkT25seVZhbD0kc2NlLnRydXN0QXNIdG1sKCRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5pc09wZW49dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmlzT3Blbj1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZWFyY2g9W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aWQ6MSxmaWx0ZXI6J2JlZ2lucycsbmFtZTpcIkJlZ2lucyB3aXRoXCIsaWNvbjpcImZhIGZhLWNoZXZyb24tcmlnaHRcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpZDoyLGZpbHRlcjonY29udGFpbnMnLG5hbWU6XCJDb250YWluc1wiLGljb246XCJmYSBmYS1leHBhbmRcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpZDozLGZpbHRlcjonZW5kcycsbmFtZTpcIkVuZHMgd2l0aFwiLGljb246XCJmYSBmYS1jaGV2cm9uLWxlZnRcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpZDo0LGZpbHRlcjonZXEnLG5hbWU6XCJFcXVhbHNcIixpY29uOlwiZmEgZmEtYmFyc1wifSBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLkVkaXREZWZhdWx0ID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXT0kc2NvcGUuZmQuRGVmYXVsdFZhbHVlXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5TZXREZWZhdWx0ID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuRGVmYXVsdFZhbHVlID0gJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuYXBwbHlUZXh0RmlsdGVycyA9IGZ1bmN0aW9uKGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5TZWFyY2g9JHNjb3BlLnNlYXJjaFtpbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuU2VhcmNoKSAkc2NvcGUuZmQuU2VhcmNoLnZhbHVlPSRzY29wZS5mZC5zSXRlbVZhbHVlOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmlzT3Blbj1mYWxzZTtcdFx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlZnJlc2hTZWFyY2hWYWx1ZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlNlYXJjaCkgJHNjb3BlLmZkLlNlYXJjaC52YWx1ZT0kc2NvcGUuZmQuc0l0ZW1WYWx1ZTsgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQub25TZWxlY3RVbmlxdWUgPSBmdW5jdGlvbihpdGVtLG1vZGVsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlVuaXF1ZUlkPWl0ZW0uaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNob3dQcm9wZXJ0aWVzID0gZnVuY3Rpb24oZXZlbnQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnNldEZpZWxkUHJvcGVydGllcygkc2NvcGUuZmQsZXZlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLnNob3dTZWFyY2hGb3JtKSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuU2VhcmNoPT11bmRlZmluZWQpICRzY29wZS5mZC5TZWFyY2g9JHNjb3BlLnNlYXJjaFszXTsvL2luaXRpYWxpemUgdG8gZXF1YWxzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wbGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uKSB0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZUNhY2hlLmdldCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RSaWNodGV4dGJveC5odG1sJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgdGVtcGxhdGUgPSAkdGVtcGxhdGVDYWNoZS5nZXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0UmljaHRleHRib3hFeGUuaHRtbCcpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRlbGVtZW50LmFwcGVuZCgkY29tcGlsZSh0ZW1wbGF0ZSkoJHNjb3BlKSk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcclxuXHRcdFx0XHRcclxuXHJcblxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxufTtcbid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdFJ1blBhZ2VEaXIgKCRyb290U2NvcGUsJGxvY2F0aW9uLEthdGFseW9TdGF0ZU1hbmFnZXIsUmVzb3VyY2VzRGF0YVNlcnZpY2UsVXRpbGl0eVNlcnZpY2UsU2V0dGluZ3NTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsQXV0aGVudGljYXRpb25TZXJ2aWNlLCR0aW1lb3V0LCRzdGF0ZVBhcmFtcyxHcmlkc3RlclNlcnZpY2UsTWVudVNlcnZpY2UsJHN0YXRlKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuXHRcdCAgICBzY29wZTp7XHJcbiAgICAgICAgICAgICAgICAgICBwYWdlaWQ6Jz0nLFxyXG4gICAgICAgICAgICAgICAgICAgcHZlcjonPScsXHJcbiAgICAgICAgICAgICAgICAgICBlbnZpZDonPScsXHJcbiAgICAgICAgICAgICAgICAgICBleGV1c2VyOic9JyxcclxuICAgICAgICAgICAgICAgICAgIHBhZ2VUeXBlOiAnPT8nLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0UnVuUGFnZURpci5odG1sJyxcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHNjb3BlLmdyaWRzdGVyVHlwZSA9XCJwYWdlXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIHBhZ2VfaWQgPSBzY29wZS5wYWdlaWRcclxuICAgICAgICAgICAgICAgIHNjb3BlLnBhZ2VfdmVyc2lvbiA9IHNjb3BlLnB2ZXJcclxuICAgICAgICAgICAgICAgIHNjb3BlLnJlc291cmNlSWQgPSBwYWdlX2lkXHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcblxyXG4gICAgICAgICAgICAgICAgc2NvcGUubG9jYWxWYXJzPXtwYWdlX3N0YXRlOnt9fTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKCRzdGF0ZVBhcmFtcy5wYXJhbWV0ZXJzIT11bmRlZmluZWQgJiYgJHN0YXRlUGFyYW1zLnBhcmFtZXRlcnMhPVwiXCIpICAgIHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgc2NvcGUuZm9ybVJlbmRlcmluZ0NvbXBsZXRlZD1mYWxzZTtcclxuICAgICAgICAgICAgICAgIHNjb3BlLmtzbSA9IEthdGFseW9TdGF0ZU1hbmFnZXI7XHJcbiAgICAgICAgICAgICAgICBzY29wZS5nc3J2YyA9IEdyaWRzdGVyU2VydmljZVxyXG4gICAgICAgICAgICAgICAgc2NvcGUubWVudV9zZXJ2aWNlID0gTWVudVNlcnZpY2VcclxuXHJcbiAgICAgICAgICAgICAgICBzY29wZS5nc3J2Yy5zZXRGb3JtVmlld1R5cGUoMilcclxuICAgICAgICAgICAgICAgIHNjb3BlLm1lbnVfc2VydmljZS5yZXNldFB1YmxpY1BhZ2UoKVxyXG5cclxuICAgICAgICAgICAgICAgIGxldCBwYWdlVmFsdWVTdGF0ZVxyXG4gICAgICAgICAgICAgICAgbGV0IHBhZ2VWYWx1ZVN0YXRlTmFtZSBcclxuICAgICAgICAgICAgICAgIGxldCBwcm9jZXNzV2lkZ2V0c1N0YXRlTmFtZSxwcm9jZXNzV2lkZ2V0c1N0YXRlXHJcbiAgICAgICAgICAgICAgICBsZXQgbWVudVZpc2liaWxpdHk9IHNjb3BlLmtzbS5hZGRTdWJqZWN0KFwibWVudVZpc2liaWxpdHlcIixzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZT8uUGFyYW1ldGVycyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgbWVudVZpc2liaWxpdHlOYW1lID0gbWVudVZpc2liaWxpdHkuc3ViamVjdC5uYW1lO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCBwYWdlX3ZhbHVlX2NoYW5nZWQgPSBmdW5jdGlvbihkYXRhKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VWYWx1ZVN0YXRlLnN1YmplY3Quc2V0U3RhdGVDaGFuZ2VzID0gZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlVmFsdWVTdGF0ZS5zdWJqZWN0Lm5vdGlmeU9ic2VydmVycyhcInBhZ2VWYWx1ZUNoYW5nZWRcIik7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgbWVudV92aXNpYmlsaXR5X2NoYW5nZWQgPSBmdW5jdGlvbihkYXRhKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICBtZW51VmlzaWJpbGl0eS5zdWJqZWN0LnNldFN0YXRlQ2hhbmdlcyA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgIG1lbnVWaXNpYmlsaXR5LnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKFwibWVudVZpc2liaWxpdHlDaGFuZ2VkXCIpO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgbWVudV92aXNpYmlsaXR5X2FjdGlvbiA9IHNjb3BlLmtzbS5hZGRBY3Rpb24obWVudVZpc2liaWxpdHlOYW1lLG1lbnVWaXNpYmlsaXR5TmFtZStcIkNoYW5nZWRcIixtZW51X3Zpc2liaWxpdHlfY2hhbmdlZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBzY29wZS5zZXRQYWdlU3RhdGUgPSBmdW5jdGlvbiAoKSBcclxuICAgICAgICAgICAgICAgIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhY3Rpb25fcGFnZV92YWx1ZV9jaGFuZ2VkXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHN0YXRlUGFyYW1zLnBhcmFtZXRlcnM/LnBhZ2Vfc3RhdGVfaWQhPXVuZGVmaW5lZCAmJiAkc3RhdGVQYXJhbXMucGFyYW1ldGVycz8ucGFnZV9zdGF0ZV9pZC50cmltKCkhPVwiXCIgJiYgJHN0YXRlUGFyYW1zLnBhcmFtZXRlcnM/LnVzZV9zdGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9sb2FkIHN0YXRlIGRpcmVjdGx5IGZyb20gcGFyYW1zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5wYWdlX3N0YXRlX2lkID0gJHN0YXRlUGFyYW1zLnBhcmFtZXRlcnMucGFnZV9zdGF0ZV9pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLnByZXZfcGFnZV9zdGF0ZV9pZCA9ICRzdGF0ZVBhcmFtcy5wYXJhbWV0ZXJzLnByZXZfcGFnZV9zdGF0ZV9pZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUucHJldmlvdXNUYXNrID0gJHN0YXRlUGFyYW1zLnBhcmFtZXRlcnMucHJldl90YXNrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlVmFsdWVTdGF0ZSAgPSBzY29wZS5rc20uYWRkU3ViamVjdCgkc3RhdGVQYXJhbXMucGFyYW1ldGVycy5wYWdlX3N0YXRlX2lkLHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VWYWx1ZVN0YXRlTmFtZSA9IHBhZ2VWYWx1ZVN0YXRlLnN1YmplY3QubmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFnZVZhbHVlU3RhdGUuc3RhdHVzPT09J29rJykgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uX3BhZ2VfdmFsdWVfY2hhbmdlZCA9IHNjb3BlLmtzbS5hZGRBY3Rpb24ocGFnZVZhbHVlU3RhdGVOYW1lLFwicGFnZVZhbHVlQ2hhbmdlZFwiLHBhZ2VfdmFsdWVfY2hhbmdlZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRzdGF0ZVBhcmFtcy5wYXJhbWV0ZXJzPy51c2Vfc3RhdGUgfHwgJHN0YXRlUGFyYW1zLnBhcmFtZXRlcnM/LnVzZV9zdGF0ZT09PXVuZGVmaW5lZCAmJiAkc3RhdGVQYXJhbXMucGFyYW1ldGVycz8ucGFnZV9zdGF0ZV9pZCE9PXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZVZhbHVlU3RhdGUgID0gc2NvcGUua3NtLmFkZFN1YmplY3QoJHN0YXRlUGFyYW1zLnBhcmFtZXRlcnM/LnBhZ2Vfc3RhdGVfaWQsbnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlVmFsdWVTdGF0ZU5hbWUgPSBwYWdlVmFsdWVTdGF0ZS5zdWJqZWN0Lm5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYWdlVmFsdWVTdGF0ZS5zdGF0dXM9PT0nb2snKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fcGFnZV92YWx1ZV9jaGFuZ2VkID0gc2NvcGUua3NtLmFkZEFjdGlvbihwYWdlVmFsdWVTdGF0ZU5hbWUsXCJwYWdlVmFsdWVDaGFuZ2VkXCIscGFnZV92YWx1ZV9jaGFuZ2VkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhZ2VWYWx1ZVN0YXRlLnN1YmplY3QuY3VycmVudFN0YXRlSW5kZXg+PTApeyAvL2xvYWQgbGFzdCBzdGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlID0gcGFnZVZhbHVlU3RhdGUuc3ViamVjdC5nZXRTdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jcmVhdGUgbmV3IHN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9nZW5lcmF0ZSBndWlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHV1aWQgPSBVdGlsaXR5U2VydmljZS51dWlkdjQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5wYWdlX3N0YXRlX2lkID0gJHN0YXRlLmN1cnJlbnQubmFtZStcIi1cIitwYWdlX2lkK1wiLVwiK3V1aWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUucHJldl9wYWdlX3N0YXRlX2lkID0gJHN0YXRlUGFyYW1zLnBhcmFtZXRlcnM/LnByZXZfcGFnZV9zdGF0ZV9pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5wcmV2aW91c1Rhc2sgPSAkc3RhdGVQYXJhbXMucGFyYW1ldGVycz8ucHJldl90YXNrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZVZhbHVlU3RhdGUgID0gc2NvcGUua3NtLmFkZFN1YmplY3Qoc2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUucGFnZV9zdGF0ZV9pZCxudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlVmFsdWVTdGF0ZU5hbWUgPSBwYWdlVmFsdWVTdGF0ZS5zdWJqZWN0Lm5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhZ2VWYWx1ZVN0YXRlLnN0YXR1cz09PSdvaycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl9wYWdlX3ZhbHVlX2NoYW5nZWQgPSBzY29wZS5rc20uYWRkQWN0aW9uKHBhZ2VWYWx1ZVN0YXRlTmFtZSxcInBhZ2VWYWx1ZUNoYW5nZWRcIixwYWdlX3ZhbHVlX2NoYW5nZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24ocGFnZVZhbHVlU3RhdGVOYW1lLFwicGFnZVZhbHVlQ2hhbmdlZFwiLCBzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NyZWF0ZSBuZXcgc3RhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZ2VuZXJhdGUgZ3VpZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHV1aWQgPSBVdGlsaXR5U2VydmljZS51dWlkdjQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLnBhZ2Vfc3RhdGVfaWQgPSAkc3RhdGUuY3VycmVudC5uYW1lK1wiLVwiK3BhZ2VfaWQrXCItXCIrdXVpZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLnByZXZfcGFnZV9zdGF0ZV9pZCA9ICRzdGF0ZVBhcmFtcy5wYXJhbWV0ZXJzPy5wcmV2X3BhZ2Vfc3RhdGVfaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5wcmV2aW91c1Rhc2sgPSAkc3RhdGVQYXJhbXMucGFyYW1ldGVycz8ucHJldl90YXNrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlVmFsdWVTdGF0ZSAgPSBzY29wZS5rc20uYWRkU3ViamVjdChzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5wYWdlX3N0YXRlX2lkLG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlVmFsdWVTdGF0ZU5hbWUgPSBwYWdlVmFsdWVTdGF0ZS5zdWJqZWN0Lm5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYWdlVmFsdWVTdGF0ZS5zdGF0dXM9PT0nb2snKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fcGFnZV92YWx1ZV9jaGFuZ2VkID0gc2NvcGUua3NtLmFkZEFjdGlvbihwYWdlVmFsdWVTdGF0ZU5hbWUsXCJwYWdlVmFsdWVDaGFuZ2VkXCIscGFnZV92YWx1ZV9jaGFuZ2VkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24ocGFnZVZhbHVlU3RhdGVOYW1lLFwicGFnZVZhbHVlQ2hhbmdlZFwiLCBzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQ9c2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUucGFnZV9zdGF0ZV9pZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucHJldl9wYWdlX3N0YXRlX2lkPXNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLnByZXZfcGFnZV9zdGF0ZV9pZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZUlkPSBzY29wZS5yZXNvdXJjZUlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX2luc3RhbmNlX2lkPSBzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5wYWdlX2luc3RhbmNlX2lkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wcmV2X3BhZ2VfaWQ9c2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUucHJldmlvdXNUYXNrPy5wYWdlSWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnByZXZfcGFnZV9pbnN0YW5jZV9pZD1zY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5wcmV2aW91c1Rhc2s/LnBhZ2VfaW5zdGFuY2VfaWRcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24obWVudVZpc2liaWxpdHlOYW1lLG1lbnVWaXNpYmlsaXR5TmFtZStcIkNoYW5nZWRcIiwgc2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUuUGFyYW1ldGVycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnNldFByb2Nlc3NXaWRnZXRFdmVudCgpXHJcbiAgICAgICAgICAgICAgICB9Ly9zZXRQYWdlU3RhdGVGTlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgd2lkZ2V0c19wcm9jZXNzZWQgPSBmdW5jdGlvbihkYXRhKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1dpZGdldHNTdGF0ZS5zdWJqZWN0LnNldFN0YXRlQ2hhbmdlcyA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzV2lkZ2V0c1N0YXRlLnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKFwid2lkZ2V0c19wcm9jZXNzZWRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgc2NvcGUuZ2V0UmVzb3VyY2VGb3JtID0gZnVuY3Rpb24gKCkgXHJcbiAgICAgICAgICAgICAgICB7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZUZvcm0oc2NvcGUucmVzb3VyY2VJZCwnaScsbGFuZykudGhlbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhLndpZGdldHMubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZGFzaGJvYXJkID0ge3dpZGdldHM6e2xheW91dDpkYXRhLmRhdGEud2lkZ2V0c30sZGF0YTp7fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmRhc2hib2FyZD17d2lkZ2V0cyA6IHtsYXlvdXQ6R3JpZHN0ZXJTZXJ2aWNlLmdldEVtcHR5VGFza0Zvcm0oKX0sZGF0YTp7fX07ICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbj0gZGF0YS5kYXRhLnJlc291cmNlRGVmaW5pdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcyA9IHtmb3JtVmlld1R5cGU6Mn1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZ3NydmMuc2V0Rm9ybVZpZXdUeXBlKHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uID0gZmFsc2VcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuc2V0UGFnZVN0YXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5QYXJhbWV0ZXJzLnNldEJnQ29sb3IpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZ3NydmMuc2V0Qm9keUJnQ29sb3Ioc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlBhcmFtZXRlcnMuYmdDb2xvcilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNjb3BlLmdzcnZjLnJlc2V0Qm9keUJnQ29sb3IoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnBhZ2VMb2FkZWQ9dHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUGFyYW1ldGVyc0xhbmc9PT11bmRlZmluZWQpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlBhcmFtZXRlcnNMYW5nPXtJbnZhbGlkRm9ybU1lc3NhZ2U6J1BsZWFzZSBjb3JyZWN0IGludmFsaWQgZW50cmllcyd9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlBhcmFtZXRlcnNMYW5nLkludmFsaWRGb3JtTWVzc2FnZT09PXVuZGVmaW5lZCkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUGFyYW1ldGVyc0xhbmcuSW52YWxpZEZvcm1NZXNzYWdlID0gXCJQbGVhc2UgY29ycmVjdCBpbnZhbGlkIGVudHJpZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnBhZ2VMb2FkZWQ9dHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgc2NvcGUuZ2V0UmVzb3VyY2VEZWZpbml0aW9uID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkFsbChzY29wZS5yZXNvdXJjZUlkKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGRhdGEpIHsgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5yZXNvdXJjZSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnM9PW51bGwpIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycyA9IHtuYXZiYXI6dHJ1ZSxzaWRlTWVudTp0cnVlLHBhZ2VHcmlkSXRlbXM6W3tpZDoxfV0sZ3JpZDp7Tm9PZlJvd3M6bnVsbCxOb09mQ29sdW1uczpudWxsLFJvd0dhcDpudWxsLENvbHVtbkdhcDpudWxsfX0gICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlID0gc2NvcGUucmVzb3VyY2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLnBhZ2VfaW5zdGFuY2VfaWQgPSBzY29wZS5wYWdlX2luc3RhbmNlX2lkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmxvY2FsVmFycy5zaWRlTWVudXMgPSBzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkPy5wYWdlX21lbnVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5sb2NhbFZhcnMuc2lkZU1lbnVzID09PSB1bmRlZmluZWQpIHNjb3BlLmxvY2FsVmFycy5zaWRlTWVudXMgPSBbXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUubG9jYWxWYXJzLnNpZGVNZW51cy5sZW5ndGg+MCkgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5QYXJhbWV0ZXJzPT11bmRlZmluZWQpICAgc2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUuUGFyYW1ldGVycz17fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLlBhcmFtZXRlcnMuc2lkZU1lbnUgPSB0cnVlICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5nZXRSZXNvdXJjZUZvcm0oKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUuc2V0UHJvY2Vzc1dpZGdldEV2ZW50PWZ1bmN0aW9uKClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLiRvbignUHJvY2Vzc1dpZGdldHMnK3Njb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLnBhZ2Vfc3RhdGVfaWQsICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGV2ZW50LGRhdGEpeyAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmb3JtID0gc2NvcGVbJ2Zvcm0nK3Njb3BlLnJlc291cmNlSWRdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybS4kc2V0U3VibWl0dGVkKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5sb2NhbFZhcnMuUHJvY2Vzc1dpZGdldHMoZm9ybSxkYXRhLmFjdGlvbl9pbmRleCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1dpZGdldHNTdGF0ZU5hbWU9IFwicHJvY2Vzc1dpZGdldHNTdGF0ZU5hbWVcIitzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5wYWdlX3N0YXRlX2lkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzV2lkZ2V0c1N0YXRlPSBzY29wZS5rc20uYWRkU3ViamVjdChwcm9jZXNzV2lkZ2V0c1N0YXRlTmFtZSxzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5wYWdlX3N0YXRlX2lkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFjdGlvbl93aWRnZXRzX3Byb2Nlc3NlZCA9IHNjb3BlLmtzbS5hZGRBY3Rpb24ocHJvY2Vzc1dpZGdldHNTdGF0ZU5hbWUsXCJ3aWRnZXRzX3Byb2Nlc3NlZFwiLHdpZGdldHNfcHJvY2Vzc2VkKTtcclxuICAgICAgICAgICAgICAgICAgICB9IFxyXG5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBzY29wZS5sb2NhbFZhcnMuUHJvY2Vzc1dpZGdldHMgPSBmdW5jdGlvbihmb3JtLGFjdGlvbl9pZHgpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybS4kdmFsaWQpIHsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UucHJvY2Vzc1dpZGdldHMoc2NvcGUucmVzb3VyY2VJZCxzY29wZS5kYXNoYm9hcmQuZGF0YSxzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5wYWdlX2luc3RhbmNlX2lkLHNjb3BlLnBhZ2VfdmVyc2lvbikudGhlbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihkYXRhKSB7ICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGE/LmRhdGE/Lm1zZyE9PVwiXCIpIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm9vdFNjb3BlLiRicm9hZGNhc3QoJ1Byb2Nlc3NXaWRnZXRQb3N0UHJvY2Vzcycrc2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUucGFnZV9zdGF0ZV9pZCxkYXRhLmRhdGEucmV0X3ZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKHByb2Nlc3NXaWRnZXRzU3RhdGVOYW1lLFwid2lkZ2V0c19wcm9jZXNzZWRcIix7cGFnZV9pZDpzY29wZS5yZXNvdXJjZUlkLGFjdGlvbjoncHJvY3dpZGdldHMnLCdhY3Rpb25faW5kZXgnOmFjdGlvbl9pZHh9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24ocHJvY2Vzc1dpZGdldHNTdGF0ZU5hbWUsXCJ3aWRnZXRzX3Byb2Nlc3NlZFwiLHtwYWdlX2lkOnNjb3BlLnJlc291cmNlSWQsYWN0aW9uOidwcm9jd2lkZ2V0cycsJ2FjdGlvbl9pbmRleCc6YWN0aW9uX2lkeCwnZXJyb3InOnRydWV9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIH0gLy8gaWYgKGlzVmFsaWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5rc20uZXhlY3V0ZUFjdGlvbihwcm9jZXNzV2lkZ2V0c1N0YXRlTmFtZSxcIndpZGdldHNfcHJvY2Vzc2VkXCIse3BhZ2VfaWQ6c2NvcGUucmVzb3VyY2VJZCxhY3Rpb246J3Byb2N3aWRnZXRzJywnYWN0aW9uX2luZGV4JzphY3Rpb25faWR4LCdlcnJvcic6dHJ1ZX0pOyAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5QYXJhbWV0ZXJzTGFuZy5JbnZhbGlkRm9ybU1lc3NhZ2UsJ3dhcm5pbmcnKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgfTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvcHN0YXRlJywgKGUpID0+IHsgIC8vIG9uIGJyb3dzZXIgXCJCYWNrXCIgY2xpY2tcclxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhZ2VfaW5zdGFuY2UgPSAkbG9jYXRpb24uc2VhcmNoKCkucmluc3RhbmNlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYocGFnZV9pbnN0YW5jZS50b1N0cmluZygpPT1cIjBcIikgeyAvLyBpZiBpbml0aWFsIGxvYWQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAvL3dpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShudWxsLCBudWxsLCBudWxsKTsgLy8gUHJldmVudCBhZGRpbmcgY3VycmVudCBVUkwgdG8gSGlzdG9yeSBBUElcclxuICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5oaXN0b3J5LmdvKC0yKVxyXG4gICAgICAgICAgICAgICAgICAgIH1lbHNlIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHNjb3BlLm9wZW5TZWN1cmVkUGFnZSA9IGZ1bmN0aW9uKHBhZ2VJZCwgcGFnZVZlcnNpb24pXHJcbiAgICAgICAgICAgICAgICB7ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhZ2VfaW5zdGFuY2UgPSAkbG9jYXRpb24uc2VhcmNoKCkucmluc3RhbmNlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwYWdlVmVyc2lvbikgcGFnZVZlcnNpb249MFxyXG5cclxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5vcGVuU2VjdXJlZFBhZ2UocGFnZUlkLCBwYWdlVmVyc2lvbiwgcGFnZV9pbnN0YW5jZSkudGhlbihcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZGF0YSkgeyAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2V0IHBhZ2UgaW5zdGFuY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnBhZ2VfaW5zdGFuY2VfaWQgPSBkYXRhPy5kYXRhPy5pbnN0YW5jZT8uaWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0ZS5wYXJhbXMucmluc3RhbmNlID0gc2NvcGUucGFnZV9pbnN0YW5jZV9pZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVzb3VyY2UgPSBkYXRhPy5kYXRhPy5wYXJhbXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYWdlX2luc3RhbmNlPy50b1N0cmluZygpPT1cIjBcIikgLy8gbWlqZW5qYSBVUkwgYmV6IHp2YW5qYSBrb250cm9sZXJhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0ZS50cmFuc2l0aW9uVG8oJHN0YXRlLmN1cnJlbnQubmFtZSwgJHN0YXRlLnBhcmFtcywgeyBub3RpZnk6IGZhbHNlLCAgIGxvY2F0aW9uOidyZXBsYWNlJywgaW5oZXJpdDp0cnVlfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzPT1udWxsKSB7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycyA9IHtuYXZiYXI6dHJ1ZSxzaWRlTWVudTp0cnVlLHBhZ2VHcmlkSXRlbXM6W3tpZDoxfV0sZ3JpZDp7Tm9PZlJvd3M6bnVsbCxOb09mQ29sdW1uczpudWxsLFJvd0dhcDpudWxsLENvbHVtbkdhcDpudWxsfX0gICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlID0gc2NvcGUucmVzb3VyY2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5wYWdlX2luc3RhbmNlX2lkID0gc2NvcGUucGFnZV9pbnN0YW5jZV9pZFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhlcmUgZ2V0IHBhZ2UgbWVudSBleGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0eXBlID0gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1lbnVfaWQgPSBzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkPy5ybGlua3NbMF0/LlJlc291cmNlMlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1fdmVyID0gc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VFeHRlbmRlZD8ucmxpbmtzWzBdPy5SZXNvdXJjZTJfVmVyc2lvbiA/PyAwXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uPSBzY29wZS5yZXNvdXJjZSAvL2RhdGEuZGF0YS5yZXNvdXJjZURlZmluaXRpb247XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMgPSB7Zm9ybVZpZXdUeXBlOjJ9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZ3NydmMuc2V0Rm9ybVZpZXdUeXBlKHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb24gPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLkV4ZVZlcnNpb24gPSBwYWdlVmVyc2lvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5QYXJhbWV0ZXJzLnNldEJnQ29sb3IpICAgIHNjb3BlLmdzcnZjLnNldEJvZHlCZ0NvbG9yKHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5QYXJhbWV0ZXJzLmJnQ29sb3IpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNjb3BlLmdzcnZjLnJlc2V0Qm9keUJnQ29sb3IoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZW51X2lkIT11bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW51U2VydmljZS5nZXRNZW51c0V4ZShtZW51X2lkLHR5cGUsbV92ZXIpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChkYXRhbSkgeyAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLm1lbnVfc2VydmljZS5zZXRTaWRlTWVudShtZW51X2lkLG1fdmVyLGRhdGFtLm1lbnVzLGRhdGFtLnByb3BlcnRpZXMpICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5tZW51X3NlcnZpY2Uuc2lkZU1lbnUubWVudXMubGVuZ3RoPjApICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLlBhcmFtZXRlcnM9PXVuZGVmaW5lZCkgc2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUuUGFyYW1ldGVycz17fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLlBhcmFtZXRlcnMuc2lkZU1lbnUgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5zZXRQYWdlU3RhdGUoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucGFnZUxvYWRlZD10cnVlICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLm1lbnVfc2VydmljZS5jbGVhclNpZGVNZW51KClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5zZXRQYWdlU3RhdGUoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnBhZ2VMb2FkZWQ9dHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmRhdGEuZm9ybS5sZW5ndGg+MClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZGFzaGJvYXJkID0ge3dpZGdldHM6e2xheW91dDpkYXRhLmRhdGEuZm9ybX0sZGF0YTp7fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmRhc2hib2FyZD17d2lkZ2V0cyA6IHtsYXlvdXQ6R3JpZHN0ZXJTZXJ2aWNlLmdldEVtcHR5VGFza0Zvcm0oKX0sZGF0YTp7fX07ICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlBhcmFtZXRlcnNMYW5nPT09dW5kZWZpbmVkKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUGFyYW1ldGVyc0xhbmc9e0ludmFsaWRGb3JtTWVzc2FnZTonUGxlYXNlIGNvcnJlY3QgaW52YWxpZCBlbnRyaWVzJ31cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlBhcmFtZXRlcnNMYW5nLkludmFsaWRGb3JtTWVzc2FnZT09PXVuZGVmaW5lZCkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlBhcmFtZXRlcnNMYW5nLkludmFsaWRGb3JtTWVzc2FnZSA9IFwiUGxlYXNlIGNvcnJlY3QgaW52YWxpZCBlbnRyaWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mb3JtTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnVuYXV0aG9yaXNlZCA9IHRydWU7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucGFnZUxvYWRlZD10cnVlICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc3RhdGUucGFyYW1zLnJpbnN0YW5jZSA9IHVuZGVmaW5lZFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhZ2VfaW5zdGFuY2U/LnRvU3RyaW5nKCk9PVwiMFwiKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhdGUudHJhbnNpdGlvblRvKCAkc3RhdGUuY3VycmVudC5uYW1lLCAkc3RhdGUucGFyYW1zLCAgeyBub3RpZnk6IGZhbHNlLCAgIGxvY2F0aW9uOidyZXBsYWNlJywgaW5oZXJpdDp0cnVlfSkgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgIHNjb3BlLm9wZW5QdWJsaWNQYWdlID0gZnVuY3Rpb24ob3JnSWQscGFnZUlkLCBwYWdlVmVyc2lvbilcclxuICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhZ2VfaW5zdGFuY2UgPSAkbG9jYXRpb24uc2VhcmNoKCkucmluc3RhbmNlXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBzY2hlbWFuYW1lID0gJGxvY2F0aW9uLnNlYXJjaCgpLmVudlxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NoZW1hbmFtZSkgeyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oXCJlbnZpcm9ubWVudFwiLCBzY2hlbWFuYW1lKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudEVudiA9ICBzY2hlbWFuYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlICRzdGF0ZS5nbyhcImFwcC5vdGhlcndpc2VcIilcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUubWVudV9zZXJ2aWNlLnNldFB1YmxpY1BhZ2UodHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5vcGVuUHVibGljUGFnZShvcmdJZCxwYWdlSWQsIHBhZ2VWZXJzaW9uLCBwYWdlX2luc3RhbmNlKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9zZXQgcGFnZSBpbnN0YW5jZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucGFnZV9pbnN0YW5jZV9pZCA9IGRhdGE/LmRhdGE/Lmluc3RhbmNlPy5pZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXRlLnBhcmFtcy5yaW5zdGFuY2UgPSBzY29wZS5wYWdlX2luc3RhbmNlX2lkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYWdlX2luc3RhbmNlPy50b1N0cmluZygpPT1cIjBcIikgLy8gbWlqZW5qYSBVUkwgYmV6IHp2YW5qYSBrb250cm9sZXJhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0ZS50cmFuc2l0aW9uVG8oJHN0YXRlLmN1cnJlbnQubmFtZSwgJHN0YXRlLnBhcmFtcywgeyBub3RpZnk6IGZhbHNlLCAgIGxvY2F0aW9uOidyZXBsYWNlJywgaW5oZXJpdDp0cnVlfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnJlc291cmNlID0gZGF0YT8uZGF0YT8ucGFyYW1zO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnM9PW51bGwpIHsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzID0ge25hdmJhcjp0cnVlLHNpZGVNZW51OnRydWUscGFnZUdyaWRJdGVtczpbe2lkOjF9XSxncmlkOntOb09mUm93czpudWxsLE5vT2ZDb2x1bW5zOm51bGwsUm93R2FwOm51bGwsQ29sdW1uR2FwOm51bGx9fSAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUgPSBzY29wZS5yZXNvdXJjZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLnBhZ2VfaW5zdGFuY2VfaWQgPSBzY29wZS5wYWdlX2luc3RhbmNlX2lkXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVzb3VyY2VJZCA9IHNjb3BlLnJlc291cmNlLnVpZFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHR5cGUgPSAxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWVudV9pZCA9IHNjb3BlLnJlc291cmNlLlJlc291cmNlRXh0ZW5kZWQ/LnJsaW5rc1swXT8uUmVzb3VyY2UyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbV92ZXIgPSBzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkPy5ybGlua3NbMF0/LlJlc291cmNlMl9WZXJzaW9uID8/IDBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRoZW50aWNhdGlvblNlcnZpY2UuU2V0Q3JlZGVudGlhbHMoZGF0YS5kYXRhLmFwaV91c2VyLGRhdGEuZGF0YS5hcGlfdXNlcj8udXNlcm5hbWUsIFwiXCIsZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uPSBzY29wZS5yZXNvdXJjZSAvL2RhdGEuZGF0YS5yZXNvdXJjZURlZmluaXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcyA9IHtmb3JtVmlld1R5cGU6Mn1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5nc3J2Yy5zZXRGb3JtVmlld1R5cGUoc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fZGVmaW5pdGlvbiA9IGZhbHNlXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5QYXJhbWV0ZXJzLnNldEJnQ29sb3IpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmdzcnZjLnNldEJvZHlCZ0NvbG9yKHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5QYXJhbWV0ZXJzLmJnQ29sb3IpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNjb3BlLmdzcnZjLnJlc2V0Qm9keUJnQ29sb3IoKVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhLmZvcm0ubGVuZ3RoPjApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmRhc2hib2FyZCA9IHt3aWRnZXRzOntsYXlvdXQ6ZGF0YS5kYXRhLmZvcm19LGRhdGE6e319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmRhc2hib2FyZD17d2lkZ2V0cyA6IHtsYXlvdXQ6R3JpZHN0ZXJTZXJ2aWNlLmdldEVtcHR5VGFza0Zvcm0oKX0sZGF0YTp7fX07ICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnBhZ2VMb2FkZWQ9dHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZW51X2lkIT11bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW51U2VydmljZS5nZXRNZW51c0V4ZShtZW51X2lkLHR5cGUsbV92ZXIpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChkYXRhbSkgeyAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5tZW51X3NlcnZpY2Uuc2V0U2lkZU1lbnUobWVudV9pZCxtX3ZlcixkYXRhbS5tZW51cyxkYXRhbS5wcm9wZXJ0aWVzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUubWVudV9zZXJ2aWNlLnNpZGVNZW51Lm1lbnVzLmxlbmd0aD4wKSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5QYXJhbWV0ZXJzPT11bmRlZmluZWQpIHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLlBhcmFtZXRlcnM9e31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5QYXJhbWV0ZXJzLnNpZGVNZW51ID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuc2V0UGFnZVN0YXRlKCkgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5tZW51X3NlcnZpY2UuY2xlYXJTaWRlTWVudSgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuc2V0UGFnZVN0YXRlKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUGFyYW1ldGVyc0xhbmc9PT11bmRlZmluZWQpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5QYXJhbWV0ZXJzTGFuZz17SW52YWxpZEZvcm1NZXNzYWdlOidQbGVhc2UgY29ycmVjdCBpbnZhbGlkIGVudHJpZXMnfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlBhcmFtZXRlcnNMYW5nLkludmFsaWRGb3JtTWVzc2FnZT09PXVuZGVmaW5lZCkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlBhcmFtZXRlcnNMYW5nLkludmFsaWRGb3JtTWVzc2FnZSA9IFwiUGxlYXNlIGNvcnJlY3QgaW52YWxpZCBlbnRyaWVzXCIgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUudW5hdXRob3Jpc2VkID0gdHJ1ZTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5wYWdlTG9hZGVkPXRydWUgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0ZS5wYXJhbXMucmluc3RhbmNlID0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYWdlX2luc3RhbmNlPy50b1N0cmluZygpPT1cIjBcIikgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhdGUudHJhbnNpdGlvblRvKCRzdGF0ZS5jdXJyZW50Lm5hbWUsICRzdGF0ZS5wYXJhbXMsICB7IG5vdGlmeTogZmFsc2UsICAgbG9jYXRpb246J3JlcGxhY2UnLCBpbmhlcml0OnRydWV9KSAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgIHNjb3BlLm9wZW5TYWFzUGFnZSA9IGZ1bmN0aW9uKGVudklkLGV4ZVVzZXIscGFnZUlkLCBwYWdlVmVyc2lvbilcclxuICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhZ2VfaW5zdGFuY2UgPSAkbG9jYXRpb24uc2VhcmNoKCkucmluc3RhbmNlXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBzY2hlbWFuYW1lID0gJGxvY2F0aW9uLnNlYXJjaCgpLmVudlxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NoZW1hbmFtZSkgeyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oXCJlbnZpcm9ubWVudFwiLCBzY2hlbWFuYW1lKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudEVudiA9ICBzY2hlbWFuYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlICRzdGF0ZS5nbyhcImFwcC5vdGhlcndpc2VcIilcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2Uub3BlblNhYXNQYWdlKGVudklkLGV4ZVVzZXIscGFnZUlkLCBwYWdlVmVyc2lvbiwgcGFnZV9pbnN0YW5jZSkudGhlbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZGF0YSkgeyAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2V0IHBhZ2UgaW5zdGFuY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnBhZ2VfaW5zdGFuY2VfaWQgPSBkYXRhPy5kYXRhPy5pbnN0YW5jZT8uaWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0ZS5wYXJhbXMucmluc3RhbmNlID0gc2NvcGUucGFnZV9pbnN0YW5jZV9pZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVzb3VyY2UgPSBkYXRhPy5kYXRhPy5wYXJhbXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYWdlX2luc3RhbmNlPy50b1N0cmluZygpPT1cIjBcIikgLy8gbWlqZW5qYSBVUkwgYmV6IHp2YW5qYSBrb250cm9sZXJhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0ZS50cmFuc2l0aW9uVG8oJHN0YXRlLmN1cnJlbnQubmFtZSwgJHN0YXRlLnBhcmFtcywgeyBub3RpZnk6IGZhbHNlLCAgIGxvY2F0aW9uOidyZXBsYWNlJywgaW5oZXJpdDp0cnVlfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzPT1udWxsKSB7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycyA9IHtuYXZiYXI6dHJ1ZSxzaWRlTWVudTp0cnVlLHBhZ2VHcmlkSXRlbXM6W3tpZDoxfV0sZ3JpZDp7Tm9PZlJvd3M6bnVsbCxOb09mQ29sdW1uczpudWxsLFJvd0dhcDpudWxsLENvbHVtbkdhcDpudWxsfX0gICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlID0gc2NvcGUucmVzb3VyY2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5wYWdlX2luc3RhbmNlX2lkID0gc2NvcGUucGFnZV9pbnN0YW5jZV9pZFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhlcmUgZ2V0IHBhZ2UgbWVudSBleGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0eXBlID0gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1lbnVfaWQgPSBzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkPy5ybGlua3NbMF0/LlJlc291cmNlMlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1fdmVyID0gc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VFeHRlbmRlZD8ucmxpbmtzWzBdPy5SZXNvdXJjZTJfVmVyc2lvbiA/PyAwXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uPSBzY29wZS5yZXNvdXJjZSAvL2RhdGEuZGF0YS5yZXNvdXJjZURlZmluaXRpb247XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMgPSB7Zm9ybVZpZXdUeXBlOjJ9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZ3NydmMuc2V0Rm9ybVZpZXdUeXBlKHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb24gPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLkV4ZVZlcnNpb24gPSBwYWdlVmVyc2lvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5QYXJhbWV0ZXJzLnNldEJnQ29sb3IpICAgIHNjb3BlLmdzcnZjLnNldEJvZHlCZ0NvbG9yKHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5QYXJhbWV0ZXJzLmJnQ29sb3IpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNjb3BlLmdzcnZjLnJlc2V0Qm9keUJnQ29sb3IoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZW51X2lkIT11bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW51U2VydmljZS5nZXRNZW51c0V4ZShtZW51X2lkLHR5cGUsbV92ZXIpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChkYXRhbSkgeyAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLm1lbnVfc2VydmljZS5zZXRTaWRlTWVudShtZW51X2lkLG1fdmVyLGRhdGFtLm1lbnVzLGRhdGFtLnByb3BlcnRpZXMpICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5tZW51X3NlcnZpY2Uuc2lkZU1lbnUubWVudXMubGVuZ3RoPjApICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLlBhcmFtZXRlcnM9PXVuZGVmaW5lZCkgc2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUuUGFyYW1ldGVycz17fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLlBhcmFtZXRlcnMuc2lkZU1lbnUgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5zZXRQYWdlU3RhdGUoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucGFnZUxvYWRlZD10cnVlICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLm1lbnVfc2VydmljZS5jbGVhclNpZGVNZW51KClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5zZXRQYWdlU3RhdGUoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnBhZ2VMb2FkZWQ9dHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmRhdGEuZm9ybS5sZW5ndGg+MClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZGFzaGJvYXJkID0ge3dpZGdldHM6e2xheW91dDpkYXRhLmRhdGEuZm9ybX0sZGF0YTp7fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmRhc2hib2FyZD17d2lkZ2V0cyA6IHtsYXlvdXQ6R3JpZHN0ZXJTZXJ2aWNlLmdldEVtcHR5VGFza0Zvcm0oKX0sZGF0YTp7fX07ICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlBhcmFtZXRlcnNMYW5nPT09dW5kZWZpbmVkKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUGFyYW1ldGVyc0xhbmc9e0ludmFsaWRGb3JtTWVzc2FnZTonUGxlYXNlIGNvcnJlY3QgaW52YWxpZCBlbnRyaWVzJ31cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlBhcmFtZXRlcnNMYW5nLkludmFsaWRGb3JtTWVzc2FnZT09PXVuZGVmaW5lZCkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlBhcmFtZXRlcnNMYW5nLkludmFsaWRGb3JtTWVzc2FnZSA9IFwiUGxlYXNlIGNvcnJlY3QgaW52YWxpZCBlbnRyaWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mb3JtTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnVuYXV0aG9yaXNlZCA9IHRydWU7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucGFnZUxvYWRlZD10cnVlICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc3RhdGUucGFyYW1zLnJpbnN0YW5jZSA9IHVuZGVmaW5lZFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhZ2VfaW5zdGFuY2U/LnRvU3RyaW5nKCk9PVwiMFwiKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhdGUudHJhbnNpdGlvblRvKCAkc3RhdGUuY3VycmVudC5uYW1lLCAkc3RhdGUucGFyYW1zLCAgeyBub3RpZnk6IGZhbHNlLCAgIGxvY2F0aW9uOidyZXBsYWNlJywgaW5oZXJpdDp0cnVlfSkgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0pOyAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5yZXNvdXJjZUlkICE9IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUucGFnZVR5cGU9PSdzZWN1cmVkJykgc2NvcGUub3BlblNlY3VyZWRQYWdlKHNjb3BlLnJlc291cmNlSWQsIHNjb3BlLnBhZ2VfdmVyc2lvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzY29wZS5wYWdlVHlwZT09J3NhYXMnKSBzY29wZS5vcGVuU2Fhc1BhZ2Uoc2NvcGUuZW52aWQsc2NvcGUuZXhldXNlcixzY29wZS5yZXNvdXJjZUlkLCBzY29wZS5wYWdlX3ZlcnNpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NvcGUucGFnZVR5cGU9PSdwdWJsaWMnKSBzY29wZS5vcGVuUHVibGljUGFnZShzY29wZS5vcmdJZCxzY29wZS5yZXNvdXJjZUlkLCBzY29wZS5wYWdlX3ZlcnNpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mb3JtTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUudW5hdXRob3Jpc2VkID0gdHJ1ZTsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgIH1cclxuICB9XHJcbn1cbid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdFNlYXJjaEJveCAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuXHRcdGNvbnRyb2xsZXI6IGZ1bmN0aW9uICgkc2NvcGUsR3JpZHN0ZXJTZXJ2aWNlLCR0ZW1wbGF0ZUNhY2hlLCRjb21waWxlLCRlbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2U7XHJcbiAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnM9PXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycyA9ICB7fTtcclxuICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhPT11bmRlZmluZWQpICAkc2NvcGUuZm9ybURhdGEgPSBbe31dO1xyXG4gICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycz09dW5kZWZpbmVkKSAkc2NvcGUuZmQuUGFyYW1ldGVycyA9IHt9O1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICRzY29wZS5mZC5zZXRTdGVwID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5zdGVwVmFsdWUgPXBhcnNlRmxvYXQoTWF0aC5wb3coMC4xLCRzY29wZS5mZC5QYXJhbWV0ZXJzLk5vT2ZEZWNpbWFscykpLnRvRml4ZWQoJHNjb3BlLmZkLlBhcmFtZXRlcnMuTm9PZkRlY2ltYWxzKTtcclxuICAgICAgICAgICAgICAgICB9OyBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5zdGVwVmFsdWU9PW51bGwgfHwgJHNjb3BlLmZkLnN0ZXBWYWx1ZT09dW5kZWZpbmVkKSAkc2NvcGUuZmQuc2V0U3RlcCgpO1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLnNob3dTZWFyY2hGb3JtKSAgXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5zZWFyY2g9PXVuZGVmaW5lZCkgICAgJHNjb3BlLmZkLnNlYXJjaD0kc2NvcGUuc2VhcmNoWzNdOy8vaW5pdGlhbGl6ZSB0byBlcXVhbHNcclxuICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLnNlYXJjaCkgICRzY29wZS5mZC5zZWFyY2gudmFsdWU9JHNjb3BlLmZkLnNJdGVtVmFsdWU7IFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuc2VhcmNoPVtcclxuXHRcdFx0ICBcdHtpZDoxLGZpbHRlcjonZ3QnLG5hbWU6XCJHcmVhdGVyIHRoYW5cIixpY29uOlwiZmEgZmEtY2hldnJvbi1yaWdodFwifSxcclxuXHRcdFx0ICBcdHtpZDoyLGZpbHRlcjonYmV0d2VlbicsbmFtZTpcIkJldHdlZW5cIixpY29uOlwiZmEgZmEtZXhwYW5kXCJ9LFxyXG5cdFx0XHQgIFx0e2lkOjMsZmlsdGVyOidsdCcsbmFtZTpcIkxvd2VyIHRoYW5cIixpY29uOlwiZmEgZmEtY2hldnJvbi1sZWZ0XCJ9LFxyXG5cdFx0XHQgIFx0e2lkOjQsZmlsdGVyOidlcScsbmFtZTpcIkVxdWFsc1wiLGljb246XCJmYSBmYS1iYXJzXCJ9IF07XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybWF0TnVtYmVyID0gZnVuY3Rpb24oKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybWF0ZWROdW1iZXIgPSAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0udG9Mb2NhbGVTdHJpbmcobmF2aWdhdG9yLmxhbmd1YWdlLHttaW5pbXVtRnJhY3Rpb25EaWdpdHM6JHNjb3BlLmZkLlBhcmFtZXRlcnMuTm9PZkRlY2ltYWxzLG1heGltdW1GcmFjdGlvbkRpZ2l0czokc2NvcGUuZmQuUGFyYW1ldGVycy5Ob09mRGVjaW1hbHN9KTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfWVsc2UgICRzY29wZS5mb3JtYXRlZE51bWJlciA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZm9ybWF0TnVtYmVyQmxvY2tjaGFpbiA9IGZ1bmN0aW9uKGlucHV0KVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgZm9ybWF0ZWROdW1iZXI7XHJcbiAgICAgICAgICAgICAgICAgIGxldCB3ZWIzO1xyXG4gICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuQ29udmVydEJsb2NrY2hhaW5Gb3JtYXQpXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0IT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmV0aGVyZXVtKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYjMgPSBuZXcgV2ViMyh3aW5kb3cuZXRoZXJldW0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmICh3aW5kb3cud2ViMylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWIzID0gbmV3IFdlYjMod2luZG93LndlYjMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHdlYjMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIud2ViM0luZnVyYSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2ViMyA9IG5ldyBXZWIzKCRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci53ZWIzSW5mdXJhKTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnd2ViMyBwcm92aWRlciBub3QgYXZhaWxhYmxlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlucHV0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuRnJvbUFycmF5IT11bmRlZmluZWQpIGlucHV0ID0gJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5QYXJhbWV0ZXJzLlNvdXJjZUZpZWxkTmFtZV1bJHNjb3BlLmZkLlBhcmFtZXRlcnMuRnJvbUFycmF5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRlZE51bWJlciA9IHdlYjMudXRpbHMuZnJvbVdlaShpbnB1dC50b0xvY2FsZVN0cmluZygnZnVsbHdpZGUnLCB7dXNlR3JvdXBpbmc6ZmFsc2V9KSwgJ2V0aGVyJykudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLHttaW5pbXVtRnJhY3Rpb25EaWdpdHM6JHNjb3BlLmZkLlBhcmFtZXRlcnMuTm9PZkRlY2ltYWxzLG1heGltdW1GcmFjdGlvbkRpZ2l0czoxOH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgIGZvcm1hdGVkTnVtYmVyID0gaW5wdXQ7XHJcbiAgICAgICAgICAgICAgICAgIH1lbHNlIGZvcm1hdGVkTnVtYmVyPWlucHV0O1xyXG4gICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuQ29udmVydFRvRGF5cykgZm9ybWF0ZWROdW1iZXIgPSBmb3JtYXRlZE51bWJlci84NjQwMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdGVkTnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgdGVtcGxhdGU7XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb24pICB0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZUNhY2hlLmdldCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RTZWFyY2hCb3guaHRtbCcpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSB0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZUNhY2hlLmdldCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RTZWFyY2hCb3hFeGUuaHRtbCcpO1xyXG4gICAgICAgICAgICAgICAgJGVsZW1lbnQuYXBwZW5kKCRjb21waWxlKHRlbXBsYXRlKSgkc2NvcGUpKTsgXHJcblxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcclxuICBcclxuXHRcdFx0XHRzY29wZS5pc09wZW49dHJ1ZTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBzY29wZS5yZWZyZXNoU2VhcmNoVmFsdWUgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5zZWFyY2gpIHNjb3BlLmZkLnNlYXJjaC52YWx1ZT1zY29wZS5mZC5zSXRlbVZhbHVlOyAgICAgIFxyXG4gICAgICAgICAgICAgICAgfTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLnNob3dTZWFyY2hGb3JtKSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuc2VhcmNoPT11bmRlZmluZWQpICAgc2NvcGUuZmQuc2VhcmNoPXNjb3BlLnNlYXJjaFszXTsvL2luaXRpYWxpemUgdG8gZXF1YWxzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5zZWFyY2gpICBzY29wZS5mZC5zZWFyY2gudmFsdWU9c2NvcGUuZmQuc0l0ZW1WYWx1ZTsgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgc2NvcGUuc2hvd1Byb3BlcnRpZXMgPSBmdW5jdGlvbihldmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgXHRcdFx0IHNjb3BlLmdzcnZjLnNldEZpZWxkUHJvcGVydGllcyhzY29wZS5mZCwgc2NvcGUuaW5wdXRBcnJheSk7Ly8gaW5wdXRBcnJheSBpcyBwYXJlbnRcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHNjb3BlLmFwcGx5TnVtRmlsdGVycyA9IGZ1bmN0aW9uKGluZGV4KSB7XHJcblx0XHRcdFx0ICAgc2NvcGUuZmQuc2VhcmNoPXNjb3BlLnNlYXJjaFtpbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuc0l0ZW1WYWx1ZSkgc2NvcGUuZmQuc2VhcmNoLnZhbHVlPXNjb3BlLmZkLnNJdGVtVmFsdWU7XHJcblx0XHRcdFx0ICAgc2NvcGUuaXNPcGVuPWZhbHNlO1x0XHRcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcbn07XHJcblx0XHRcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGt0U2VsZWN0R2VuZXJpYyAoKSB7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXG4gICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFNlbGVjdEdlbmVyaWMuaHRtbCcsXG4gICAgICAgICAgICAgc2NvcGU6IHtcbiAgICAgICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnM6ICc9JyxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW06ICc9JyxcbiAgICAgICAgICAgICAgICBpbnB1dEFycmF5OiAnPScsXG4gICAgICAgICAgICAgICAgcmVxdWlyZWRGaWVsZDogJz0/JyxcbiAgICAgICAgICAgICAgICBvblNlbGVjdEZuOiAnJicsXG4gICAgICAgICAgICAgICAgcmVmcmVzaEZuOiAnJicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24oVXNlclNlcnZpY2UsUmVzb3VyY2VzRGF0YVNlcnZpY2UsJHJvb3RTY29wZSxQcm9jZXNzaW5nU2VydmljZSl7fSxcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgIHNjb3BlLm9uU2VsZWN0SXRlbSA9IGZ1bmN0aW9uKGl0ZW0sbW9kZWwpIHtcbiAgICAgICAgICAgICAgICAgICBzY29wZS5vblNlbGVjdEZuKGl0ZW0sbW9kZWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgc2NvcGUucmVmcmVzaFJlc3VsdHMgPSBmdW5jdGlvbihmaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICBzY29wZS5yZWZyZXNoRm4oZmlsdGVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgfVxuICAgICAgICB9XG4gIFxufTtcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGt0U2VsZWN0R3JvdXBzICgpIHtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcbiAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0U2VsZWN0R3JvdXBzLmh0bWwnLFxuICAgICAgICAgICAgLyogIHNjb3BlOntcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zOic9JyxcbiAgICAgICAgICAgICB9LCovXG4gICAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbigkc2NvcGUsVXNlclNlcnZpY2Upe1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICRzY29wZS5ncm91cExpc3Q9W107XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgJHNjb3BlLmdldEdyb3VwcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICBVc2VyU2VydmljZS5nZXRVc2Vyc0dyb3VwcygnZ3JvdXBzJykudGhlbihmdW5jdGlvbihkYXRhKXtcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3JvdXBMaXN0ID0gZGF0YS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5ncm91cHNEb3dubG9hZGVkPXRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICRzY29wZS5nZXRHcm91cHMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIFxuICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIH1cblxuICAgIH1cbn07XG4ndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBrdFNlbGVjdEdyb3Vwc1dpdGhTY29wZSAoKSB7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXG4gICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFNlbGVjdEdyb3Vwc1dpdGhTY29wZS5odG1sJyxcbiAgICAgICAgICAgICAgc2NvcGU6e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM6Jz0nLFxyXG4gICAgICAgICAgICAgICAgc2l6ZTonPT8nLFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0SWQ6Jz0nLFxuICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24oJHNjb3BlLFVzZXJTZXJ2aWNlKXtcclxuICAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWQ9e2dyb3Vwczokc2NvcGUuc2VsZWN0ZWRJdGVtc307XHJcbiAgICAgICAgIFxyXG4gICAgICAgICBcclxuICAgICAgICAgICAkc2NvcGUuJHdhdGNoKCdzZWxlY3RlZC5ncm91cHMnLGZ1bmN0aW9uKG5ld1ZhbHVlLG9sZFZhbHVlKXtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBpZiAobmV3VmFsdWUhPW9sZFZhbHVlICYmIG5ld1ZhbHVlIT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkSXRlbXM9bmV3VmFsdWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAgJHNjb3BlLmdyb3VwTGlzdD1bXTtcclxuICAgICAgICAvL2lmICgkc2NvcGUuc2VsZWN0ZWRJdGVtcz09dW5kZWZpbmVkKSAkc2NvcGUuc2VsZWN0ZWRJdGVtcz1bXVxyXG5cclxuICAgICAgICAkc2NvcGUuZ2V0R3JvdXBzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgVXNlclNlcnZpY2UuZ2V0VXNlcnNHcm91cHMoJ2dyb3VwcycpLnRoZW4oZnVuY3Rpb24oZGF0YSl7XHJcbiAgICAgICAgICAkc2NvcGUuZ3JvdXBMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgJHNjb3BlLmdyb3Vwc0Rvd25sb2FkZWQgPSB0cnVlO1xyXG5cdFx0XHRcdH0pO1xyXG5cclxuICAgICAgICB9XHJcblx0XHRcdFx0JHNjb3BlLmdldEdyb3VwcygpO1xyXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XG4gICAgICAgICAgICBcbiAgICAgICAgICBcbiAgICAgICBcbiAgICAgICAgXG4gICAgICAgIFxuICAgICAgXG4gICAgXG5cbiAgICAgICAgICAgIH1cblxuICAgIH1cbn07XG4ndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBrdFNlbGVjdFVzZXJzIChVc2VyU2VydmljZSwkdGltZW91dCkge1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXG4gICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0U2VsZWN0VXNlcnMuaHRtbCcsXG4gICAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbigkc2NvcGUsIFVzZXJTZXJ2aWNlKXtcbiAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICRzY29wZS51c2VyTGlzdD1bXTtcbiAgICAgICAgICAgICAgICAkc2NvcGUuZ2V0VXNlcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIFVzZXJTZXJ2aWNlLmdldFVzZXJzR3JvdXBzKCd1c2VycycpLnRoZW4oZnVuY3Rpb24oZGF0YSl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnVzZXJMaXN0ID0gZGF0YS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS51c2Vyc0Rvd25sb2FkZWQ9dHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAvLyRzY29wZS5hZGRDdXJyZW50VXNlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXHRcdFxuICAgICAgICAgICAgJHNjb3BlLmdldFVzZXJzKCk7ICBcbiAgICAgICAgICBcbiAgICAgICAgICAgfSxcbiAgICAgICAgICAgXG4gICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcbiAgICAgICAgIFxuICAgICAgICB9Ly9MSW5rXG4gICAgfVxufTtcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGt0U2VsZWN0VXNlcnNXaXRoU2NvcGUgKFVzZXJTZXJ2aWNlKSB7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcbiAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0U2VsZWN0VXNlcnNXaXRoU2NvcGUuaHRtbCcsXG4gICAgICAgICAgICAgc2NvcGU6e1xuICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zOic9JyxcbiAgICAgICAgICAgICAgc2l6ZTonPT8nLFxuICAgICAgICAgICAgICBzZWxlY3RJZDonPScsXG4gICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24oVXNlclNlcnZpY2Upe30sXG4gICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xuXG5cbiAgICAgICAgICAgICAgXG4gICAgICAgc2NvcGUudXNlckxpc3Q9W107XG4gICAgICAgIC8vaWYgKHNjb3BlLnNlbGVjdGVkSXRlbXM9PXVuZGVmaW5lZCkgc2NvcGUuc2VsZWN0ZWRJdGVtcz1bXVxuICAgICAgICBzY29wZS5zZWxlY3RlZD17dXNlcnM6c2NvcGUuc2VsZWN0ZWRJdGVtc307XG4gICAgICAgIFxuICAgICAgICBcbiAgICAgICAgICAgXG4gICAgICAgICAgICAgc2NvcGUuJHdhdGNoKCdzZWxlY3RlZC51c2VycycsZnVuY3Rpb24obmV3VmFsdWUsb2xkVmFsdWUpe1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlIT09b2xkVmFsdWUgJiYgbmV3VmFsdWUhPT11bmRlZmluZWQpXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgIHNjb3BlLnNlbGVjdGVkSXRlbXM9bmV3VmFsdWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgXG5cbiAgICAgICAgc2NvcGUuZ2V0VXNlcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAvL2RlYnVnZ2VyXG4gICAgICAgICAgICBcbiAgICAgICAgICBVc2VyU2VydmljZS5nZXRVc2Vyc0dyb3VwcygndXNlcnMnKS50aGVuKGZ1bmN0aW9uKGRhdGEpe1xuICAgICAgICAgIHNjb3BlLnVzZXJMaXN0ID0gYW5ndWxhci5jb3B5KGRhdGEuZGF0YSk7XG4gICAgICAgICAgc2NvcGUudXNlcnNEb3dubG9hZGVkID0gdHJ1ZTtcblx0XHRcdFx0fSk7XG5cbiAgICAgICAgfVxuXHRcdFx0XHRzY29wZS5nZXRVc2VycygpO1xuXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIFxuICAgICAgICBzY29wZS51c2VyU2VsZWN0ZWQgPSAgZnVuY3Rpb24oaXRlbSxtb2RlbCkge1xuICAgICAgICBcbiAgICAgXG4gICAgICAgIC8qXG4gICAgICAgICAgICB2YXIgcG9zID0gc2NvcGUuc2VsZWN0ZWRJdGVtcy5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZihpdGVtLmlkKTtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAocG9zPDApe1xuICAgICAgICAgICAgICAgICBzY29wZS5zZWxlY3RlZEl0ZW1zLnB1c2goYW5ndWxhci5jb3B5KGl0ZW0pKTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICovICBcblxuICAgICAgICB9O1xuICAgICAgXG4gICAgICB9XG4gICAgfVxufTtcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGt0U2VwYXJhdG9yICgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXG5cdFx0XHQgY29udHJvbGxlcjogZnVuY3Rpb24gKCRzY29wZSxHcmlkc3RlclNlcnZpY2UpIHtcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5nc3J2YyA9IEdyaWRzdGVyU2VydmljZTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5zaG93UHJvcGVydGllcyA9IGZ1bmN0aW9uKGV2ZW50KVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0RmllbGRQcm9wZXJ0aWVzKCRzY29wZS5mZCxldmVudCk7XHJcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0U2VwYXJhdG9yLmh0bWwnLFxuICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcblxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xufTtcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGt0U2ltcGxlVXNlciAoVXNlclNlcnZpY2UpIHtcblxuXHRyZXR1cm4ge1xuICAgICAgICByZXN0cmljdDogJ0EnLFxuICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFNpbXBsZVVzZXIuaHRtbCcsXG4gICAgICAgICBzY29wZTp7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRVc2VyIDogJz0nLFxuICAgICAgICAgICAgICAgIHVzZXJMaXN0OiAnPScsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRVc2VyTW9kZWw6ICc9J1xuICAgICAgICAgICAgICAgIH0sICAgICAgXG5cdFx0IGNvbnRyb2xsZXI6IGZ1bmN0aW9uKFVzZXJTZXJ2aWNlKXt9LFxuICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xuICAgICAgICAgIFxuICAgICAgICAgICAgY29uc29sZS5sb2coJ3Njb3BlIHVzZXIgbGlzdCcpXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhzY29wZS51c2VyTGlzdCk7XG4gICAgICAgICAgIC8qIHNjb3BlLmdldFVzZXJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICBVc2VyU2VydmljZS5nZXRVc2Vyc0dyb3VwcygndXNlcnMnKS50aGVuKGZ1bmN0aW9uKGRhdGEpe1xuICAgICAgICAgICAgICAgICAgc2NvcGUudXNlckxpc3QgPSBkYXRhLmRhdGE7XG4gICAgICAgICAgICAgICAgICBzY29wZS5zZWxlY3RlZFVzZXJNb2RlbCA9IFVzZXJTZXJ2aWNlLmdldFVzZXJPYmplY3RCeUlkKHNjb3BlLnNlbGVjdGVkVXNlcik7IFxuICAgICAgICAgICAgICAgICAgc2NvcGUuc2VsZWN0ZWRVc2VyID0gc2NvcGUuc2VsZWN0ZWRVc2VyTW9kZWwuaWQ7ICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSovXG4gICAgICAgICAgXG4gICAgICAgICAgICBzY29wZS5wb3B1bGF0ZVVzZXIgPSBmdW5jdGlvbiAoaXRlbSxtb2RlbCkgeyBcbiAgICAgICAgICAgICAgICAgIHNjb3BlLnNlbGVjdGVkVXNlck1vZGVsID0gaXRlbTtcbiAgICAgICAgICAgICAgICAgIHNjb3BlLnNlbGVjdGVkVXNlciA9IGl0ZW0uaWQ7ICAgXG4gICAgXHRcdH07XG4gICAgICAgICAgICAgICAgICAgIFxuXG4gICAgICAgICB9XG4gICAgfVxufTtcbid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdFNtYXJ0Q2FyZHMoJHRpbWVvdXQsIFV0aWxpdHlTZXJ2aWNlLCBSZXNvdXJjZXNEYXRhU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdFQScsXHJcbiAgICAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbiAoJHNjb3BlLCAkcm9vdFNjb3BlLCAkZmlsdGVyLCAkdGltZW91dCwgVXRpbGl0eVNlcnZpY2UsIFJlc291cmNlc0RhdGFTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsJHNjZSwkZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRpc3BsYXlUYWJsZURhdGEgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUucHJpb3JpdHk9IHsgbWluOjEsIG1heDozIH1cclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuaXNTb3J0Q2hhbmdlZCA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuTWF0aCA9IHdpbmRvdy5NYXRoO1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbD0geyBzdEl0ZW1zT25QYWdlOiRzY29wZS5pdGVtc09uUGFnZX1cclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2hvd1RhYmxlQ29uZmlnTWVudT1mYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5wYWdlSXRlbXNMaXN0ID0gWzUsMTAsMjUsNTAsMTAwLDI1MCw1MDAsMTAwMF07XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm15Rm9ybWF0PXt9XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxhbmdDb2RlID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmdPYmouQ29kZVxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5sZWZ0Q3NzPVwibGVmdDogMHB4O1wiICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZvbnRTaXplPT11bmRlZmluZWQgKSAkc2NvcGUuZm9udFNpemUgPSBcIjFyZW1cIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLkNUUkw9J2t0U21hcnRDYXJkcydcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmNsaWVudFNpZGU9PXVuZGVmaW5lZCkgJHNjb3BlLmNsaWVudFNpZGU9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS51c2VQYWdpbmF0aW9uPT11bmRlZmluZWQpICRzY29wZS51c2VQYWdpbmF0aW9uPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUudGFibGVEYXRhIT11bmRlZmluZWQpICRzY29wZS5kaXNwbGF5VGFibGVEYXRhID0gJHNjb3BlLnRhYmxlRGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBQQVJBTUVURVJTIERFRkFVTFRTXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5wYXJhbWV0ZXJzPT09dW5kZWZpbmVkKSAgJHNjb3BlLnBhcmFtZXRlcnMudGFibGUgPSB7IH0gICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnBhcmFtZXRlcnMudGFibGU9PXVuZGVmaW5lZCkgICAgJHNjb3BlLnBhcmFtZXRlcnMudGFibGUgPSB7IH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnBhcmFtZXRlcnMuUGFnZXJMYWJlbDE9PT11bmRlZmluZWQpICRzY29wZS5wYXJhbWV0ZXJzLlBhZ2VyTGFiZWwxID0naXRlbXMgcGVyIHBhZ2UgfCBQYWdlOidcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnBhcmFtZXRlcnMuUGFnZXJMYWJlbDI9PT11bmRlZmluZWQpICRzY29wZS5wYXJhbWV0ZXJzLlBhZ2VyTGFiZWwyID0nb2YnXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5wYXJhbWV0ZXJzLlBhZ2VyTGFiZWwzPT09dW5kZWZpbmVkKSAkc2NvcGUucGFyYW1ldGVycy5QYWdlckxhYmVsMyA9J2l0ZW1zJyAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucGFyYW1ldGVycy5QYWdlck1heFBhZ2VzPT09dW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5wYXJhbWV0ZXJzLlBhZ2VyTWF4UGFnZXMgPSAxMFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGg8OTkyKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucGFyYW1ldGVycy5QYWdlck1heFBhZ2VzID0gTWF0aC5yb3VuZCgkc2NvcGUucGFyYW1ldGVycy5QYWdlck1heFBhZ2VzLzIpXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgZWxzZSBpZiAoJHNjb3BlLnBhcmFtZXRlcnMuUGFnZXJNYXhQYWdlcz49MTApICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aDw5OTIpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5wYXJhbWV0ZXJzLlBhZ2VyTWF4UGFnZXMgPSBNYXRoLnJvdW5kKCRzY29wZS5wYXJhbWV0ZXJzLlBhZ2VyTWF4UGFnZXMvMilcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucGFyYW1ldGVycy50YWJsZS5WZXJ0aWNhbFNwYWNpbmc9PXVuZGVmaW5lZCkgJHNjb3BlLnBhcmFtZXRlcnMudGFibGUuVmVydGljYWxTcGFjaW5nPTBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgLyogQXJyYXkucHJvdG90eXBlLnNvcnRCeSA9IGZ1bmN0aW9uIChwcm9wZXJ0eU5hbWUsIHNvcnREaXJlY3Rpb24pIHsgLy8gc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCBHRVRTT1JUTUVIVE9EICEhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvcnREaXJlY3Rpb24gOiAgdHJ1ZT1hc2NlbmRpbmcsIGZhbHNlPWRlc2NlbmRpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNvcnRBcmd1bWVudHMgPSBhcmd1bWVudHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc29ydChmdW5jdGlvbiAob2JqQSwgb2JqQikge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYXJnSW5kZXggPSAwOyBhcmdJbmRleCA8IHNvcnRBcmd1bWVudHMubGVuZ3RoICYmIHJlc3VsdCA9PT0gMDsgYXJnSW5kZXggKz0gMikge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJvcGVydHlOYW1lID0gc29ydEFyZ3VtZW50c1thcmdJbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKG9iakFbcHJvcGVydHlOYW1lXSA8IG9iakJbcHJvcGVydHlOYW1lXSkgPyAtMSA6IChvYmpBW3Byb3BlcnR5TmFtZV0gPiBvYmpCW3Byb3BlcnR5TmFtZV0pID8gMSA6IDA7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vUmV2ZXJzZSBpZiBzb3J0IG9yZGVyIGlzIGZhbHNlIChERVNDKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCAqPSAhc29ydEFyZ3VtZW50c1thcmdJbmRleCArIDFdID8gMSA6IC0xO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH0qL1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ2V0U29ydE1ldGhvZCA9IFV0aWxpdHlTZXJ2aWNlLmdldFNvcnRNZXRob2RcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc29ydEdyaWREYXRhID0gZnVuY3Rpb24gKClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuaXNTb3J0Q2hhbmdlZCA9IGZhbHNlICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNvcnRBcmd1bWVudHMgPSBbXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhbGxUYWJsZURhdGEgPSAkc2NvcGUuZ3JpZERhdGEoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbGxUYWJsZURhdGEhPXVuZGVmaW5lZCAmJiBhbGxUYWJsZURhdGEubGVuZ3RoID4xICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBjb2wgb2YgICRzY29wZS5jb2x1bW5EZWZzKSB7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sLnNvcnQgPT0nYXNjZW5kaW5nJyB8fCBjb2wuc29ydCA9PSdkZXNjZW5kaW5nJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0QXJndW1lbnRzLnB1c2goY29sLnNvcnRbMF0gKyBjb2wubmFtZSkgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YXIgbGFuZ0NvZGUgPSAkcm9vdFNjb3BlLmdsb2JhbHM/LmN1cnJlbnRVc2VyPy5sYW5nT2JqPy5Db2RlID8/ICdlbi1HQidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbFRhYmxlRGF0YS5zb3J0ICgkc2NvcGUuZ2V0U29ydE1ldGhvZChzb3J0QXJndW1lbnRzLCRyb290U2NvcGUuZ2xvYmFscz8uY3VycmVudFVzZXI/LmxhbmdPYmo/LkNvZGUgKSk7ICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICBjb25zdCBudW1Gb3JtYXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoXCJkZS1ERVwiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyICxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDJcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgIFxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdldEl0ZW0gPSBmdW5jdGlvbiAoY29sdW1uLGl0ZW0pXHJcbiAgICAgICAgICAgICAgICAgICAgeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0ucmVzb3VyY2VkZWZsYW5nX3NldCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGdldChpdGVtLGNvbHVtbi5uYW1lLCBudWxsKSAgICAgICAgLy8gRm9yIFJFU09VUkNFIExJU1QgdGFibGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGl0ZW1bY29sdW1uLm5hbWVdICAgICAgLy9mb3IgdXNlciBkYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWw9PT1udWxsIHx8IHZhbD09PXVuZGVmaW5lZCkgcmV0dXJuIFwi4oiFXCI7ICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyIC8vc21hcnR0YWJsZSAvL2dldEl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW4uY2VsbEZpbHRlcikgeyAvL0RBVEUgRk9STUFUXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmNlbGxGaWx0ZXIuc3Vic3RyaW5nKDAsNCkudHJpbSgpPT1cImRhdGVcIikgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9ICRmaWx0ZXIoY29sdW1uLmNlbGxGaWx0ZXIuc3Vic3RyaW5nKDAsNCkpKHZhbCxjb2x1bW4uY2VsbEZpbHRlci5zdWJzdHJpbmcoNixjb2x1bW4uY2VsbEZpbHRlci5sZW5ndGgpLnRyaW0oKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbnVtYmVyLnRvU3RyaW5nKCkucmVwbGFjZSgvXFwuL2csICcsJykgIyByZXBsYWNlIGRvdCB3aXRoIGNvbW1hXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW4uRWxlbWVudFR5cGUgPT0gXCJudW1iZXJcIikgICB2YWwgPSAgJHNjb3BlLm15Rm9ybWF0W2NvbHVtbi5pZF0uZm9ybWF0KHZhbClcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbDtcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUucm93U2VsZWN0ZWQgPSBmdW5jdGlvbihyb3cpIFxyXG4gICAgICAgICAgICAgICAgICAgIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucm93U2VsZWN0ZWRDb3VudCA9IHJvdy5pc1NlbGVjdGVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnBvc2l0aW9uQ3NzPVwibGVmdDogXCIrJHNjb3BlLmN1cnNvclBvc2l0aW9uTGVmdCtcInB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yb3dTZWxlY3RlZENoYW5nZSh7aXRlbTpyb3d9KTsgXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5zZXRBY3Rpb25zUG9zaXRpb24gPSBmdW5jdGlvbihldmVudCxpbmRleCkgXHJcbiAgICAgICAgICAgICAgICAgICAgeyBcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBjdXJyZW50VGFyZ2V0T2Zmc2V0TGVmdCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQub2Zmc2V0TGVmdCBcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIC8vICBsZXQgYWN0aW9ucyA9ICRlbGVtZW50WzBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJzbS1hY3Rpb25zXCIraW5kZXgpXHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgdGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInRibGNvbnRhaW5lclwiKyRzY29wZS5wYXJhbWV0ZXJzLlV1aWRSZWYpXHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyAgaWYgKGFjdGlvbnMubGVuZ3RoKSBhY3Rpb25zWzBdLm9mZnNldExlZnQgPSBjdXJyZW50VGFyZ2V0T2Zmc2V0TGVmdFxyXG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmN1cnNvclBvc2l0aW9uTGVmdCA9IGN1cnJlbnRUYXJnZXRPZmZzZXRMZWZ0IC0gdGFibGUuc2Nyb2xsTGVmdCArIGV2ZW50Lm9mZnNldFhcclxuICAgICAgICAgICAgICAgICAgICB9OyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAkc2NvcGUuY29weWNvbHVtbkRlZnMgPSBmdW5jdGlvbigpIFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlciAvL2NvcHljb2x1bW5EZWZzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgJHNjb3BlLmNvbHVtbkRlZnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uc29ydCA9PSBcInRydWVcIiB8fCBpdGVtLnNvcnQgPT0gXCJyZXZlcnNlXCIpICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnNvcnRDb2x1bW5EZWZzKSAgJHNjb3BlLnNvcnRDb2x1bW5EZWZzLnB1c2goaXRlbSkgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRyb3BTdWNjZXNzID0gZnVuY3Rpb24oKSB7IC8vIE5PVCBVU0VEIC0gREVNT05TVFJBVElPTiBPRiBcIkFDVElPTiBPTiBEUk9QXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgc3JjIG9mICRzY29wZS5zb3J0Q29sdW1uRGVmcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGRzdCBvZiAkc2NvcGUuY29sdW1uRGVmcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3JjID09IGRzdCkgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc29ydEZpbHRlciA9IGZ1bmN0aW9uIChpdGVtKSB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5zb3J0ID09PSAndHJ1ZScgfHwgaXRlbS5zb3J0ID09PSAncmV2ZXJzZSc7IFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRvZ2dsZVRhYmxlQ29uZmlnTWVudSA9IGZ1bmN0aW9uKClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNob3dUYWJsZUNvbmZpZ01lbnUgPSAhJHNjb3BlLnNob3dUYWJsZUNvbmZpZ01lbnVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRvZ2dsZVNvcnRNZW51ID0gZnVuY3Rpb24oKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2hvd1NvcnRNZW51ID0gISRzY29wZS5zaG93U29ydE1lbnVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdFBhZ2UgPSBmdW5jdGlvbiAocGFnZSkgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRicm9hZGNhc3QgKCdzZWxlY3RQYWdlJywgcGFnZSk7Ly9zZW5kIHRvIHNtYXJ0LXRhYmxlIGNvbnRyb2xsZXJcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnByaW50VGFibGUgPSBmdW5jdGlvbigpXHJcbiAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29sdW1ucz1bXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgb3V0cHV0PVwiPGRpdiBjbGFzcz0nY29udGFpbmVyJz5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQrIFwiPGRpdiBpZD0ncHJpbnRiJyBjbGFzcz0nbm9wcmludCcgc3R5bGU9J3BhZGRpbmc6MTBweCc+IDxidXR0b24gIG9uQ2xpY2s9JyB2YXIgZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCZxdW90O3ByaW50YiZxdW90Oyk7IGUucmVtb3ZlKCk7IHdpbmRvdy5wcmludCgpJz5QcmludDwvYnV0dG9uPjwvZGl2PlwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YT0gJHNjb3BlLmdyaWREYXRhKClcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgLy8gUFJJTlQgSEVBREVSXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dCsgXCI8ZGl2IGNsYXNzPSdyZWQnPlwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29sdW1uU3R5bGVzPScnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTwgJHNjb3BlLmNvbHVtbkRlZnMubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29sID0gJHNjb3BlLmNvbHVtbkRlZnNbaV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbC52aXNpYmxlID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2xDbGFzcz1cImNlbGwgY29sXCIgKyBpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgICggY29sLkVsZW1lbnRUeXBlID09IFwibnVtYmVyXCIgKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0ICsgXCI8ZGl2IGNsYXNzPScgXCIgKyBjb2xDbGFzcyArIFwiIGFyJyA+XCIgKyBjb2wuZGlzcGxheU5hbWUgKyBcIjwvZGl2PlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQgKyBcIjxkaXYgY2xhc3M9JyBcIiArIGNvbENsYXNzICsgIFwiICcgPlwiICsgY29sLmRpc3BsYXlOYW1lICsgXCI8L2Rpdj5cIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtblN0eWxlcys9ICcgLmNvbCcgKyBpICsgJyAgeyAgbWFyZ2luLWxlZnQ6IDRweCA7IHdpZHRoOicgKyBjb2wud2lkdGggKyAnIH0nIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0KyBcIjwvZGl2PlwiIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUFJJTlQgREFUQVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IHJvdyBvZiBkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQrIFwiPGRpdiBjbGFzcz0ncmVkJz5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPCAkc2NvcGUuY29sdW1uRGVmcy5sZW5ndGg7IGkrKykgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbCA9ICRzY29wZS5jb2x1bW5EZWZzW2ldXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2wudmlzaWJsZSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2xDbGFzcz1cImNlbGwgY29sXCIgKyBpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICAoIGNvbC5FbGVtZW50VHlwZSA9PSBcIm51bWJlclwiICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZvcm1hdHRlZCA9IHJvd1tjb2wubmFtZV0udG9Mb2NhbGVTdHJpbmcoICAkc2NvcGUubGFuZ0NvZGUgfHwgJ2VuLUdCJywgeyBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dD1vdXRwdXQgKyAnPGRpdiBjbGFzcz1cIicgKyBjb2xDbGFzcyArICcgYXJcIj4nKyBmb3JtYXR0ZWQgKyAgJzwvZGl2PidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dD1vdXRwdXQgKyAnPGRpdiBjbGFzcz1cIicgKyBjb2xDbGFzcysgJ1wiPicrIHJvd1tjb2wubmFtZV0gKyAgJzwvZGl2PidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dCsgXCI8L2Rpdj5cIiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoJ015IHRpdGxlJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jLmhlYWQuaW5uZXJIVE1MKz0nICA8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgdHlwZT1cInRleHQvY3NzXCIgaHJlZj1cIi9zdGF0aWMvbW9kdWxlcy9zdHlsZXMvYnVpbGQvY3NzL21hc3Rlci5jc3NcIiAvPiAnICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2MuaGVhZC5pbm5lckhUTUwrPScgPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIHR5cGU9XCJ0ZXh0L2Nzc1wiIGhyZWY9XCIvc3RhdGljL21vZHVsZXMvc3R5bGVzL2J1aWxkL2Nzcy9tYWluLmNzc1wiIC8+J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2MuYm9keS5pbm5lckhUTUwrPSc8ZGl2IGlkPVwiY29udGVudFwiPlRFU1Q8L2Rpdj4nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RyV2luZG93RmVhdHVyZXMgPSBcImxvY2F0aW9uPXllcyxoZWlnaHQ9NTcwLHdpZHRoPTUyMCxzY3JvbGxiYXJzPXllcyxzdGF0dXM9eWVzXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3aW4gPSB3aW5kb3cub3BlbihcIlwiLCBcIl9ibGFua1wiLCBzdHJXaW5kb3dGZWF0dXJlcyk7ICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2luLmRvY3VtZW50LmJvZHkuaW5uZXJIVE1MKz1cclxuICAgICAgICAgICAgICAgICAgICAgICAvLyAnIDxzdHlsZSB0eXBlPVwidGV4dC9jc3NcIiBtZWRpYT1cInByaW50XCI+ICAgQHBhZ2UgeyBzaXplOiBsYW5kc2NhcGU7ICB9ICAgIGJvZHkgeyAgIHdyaXRpbmctbW9kZTogdGItcmw7IH0gPC9zdHlsZT4nICBcclxuICAgICAgICAgICAgICAgICAgICAgIC8vICAnIDxzdHlsZSB0eXBlPVwidGV4dC9jc3NcIiA+ICAgQHBhZ2UgeyBzaXplOiBsYW5kc2NhcGU7ICB9ICAgIGJvZHkgeyAgfSA8L3N0eWxlPicgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnIDxzdHlsZSB0eXBlPVwidGV4dC9jc3NcIj4nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICsnIEBwYWdlIHsgIHNpemU6IGxhbmRzY2FwZTsgIG1hcmdpbjogMDt9ICBodG1sLCBib2R5IHsgICB3aWR0aDogMjk3bW07ICAgaGVpZ2h0OiAyMTBtbTsgIH0nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgLy8gKycgQHBhZ2UgeyAgc2l6ZTogQTQ7ICBtYXJnaW46IDA7fSAgaHRtbCwgYm9keSB7ICAgd2lkdGg6IDIwMDBweDsgICBoZWlnaHQ6IDEwMDBweDsgIH0nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICsnIC5yZWQgeyAgZm9udC13ZWlnaHQ6IGJvbGQ7IG1heC13aWR0aDogMTAwJTsgIGZvbnQtc2l6ZTogMTBweDsgZGlzcGxheTogdGFibGUtcm93OyB9ICdcclxuICAgICAgICAgICAgICAgICAgICAgICAgKycgLmNlbGwgIHsgIHdpZHRoOiAxMDBweDsgZmxvYXQ6IGxlZnQ7ICAgZGlzcGxheTogdGFibGUtY29sdW1uOyB9J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICArJyAuYXIgeyAgdGV4dC1hbGlnbjogcmlnaHQgIH0nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICsnIC5jb250YWluZXIgeyBkaXNwbGF5OiB0YWJsZTsgIHdpZHRoOiAxMDAlOyB9ICdcclxuICAgICAgICAgICAgICAgICAgICAgICAgKyAgY29sdW1uU3R5bGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICsnIDwvc3R5bGU+ICdcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2luLmRvY3VtZW50LmJvZHkuaW5uZXJIVE1MICs9IG91dHB1dDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICRzY29wZS5leHBvcnQyZXhjZWwgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHZhciB3YiA9IG5ldyBFeGNlbEpTLldvcmtib29rKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnBhcmFtZXRlcnMuZXhjZWxFeHBvcnRUZW1wbGF0ZUZpbGVUeXBlPy5pZCE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZG93bmxvYWRGaWxlKCRzY29wZS5wYXJhbWV0ZXJzLmV4Y2VsRXhwb3J0VGVtcGxhdGVGaWxlSWQgLCAkc2NvcGUucGFyYW1ldGVycy5leGNlbEV4cG9ydFRlbXBsYXRlRmlsZVR5cGUuaWQpXHJcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoJ0ZpbGUgZG93bmxvYWRlZCcsJ2luZm8nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50ZW1wbGF0ZSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC50aGVuKCBmdW5jdGlvbihkYXRhKSB7ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgd2IueGxzeC5sb2FkKCRzY29wZS50ZW1wbGF0ZSkuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4od29ya2Jvb2sgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrYm9vay5lYWNoU2hlZXQoKHNoZWV0LCBpZCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuJHBhcmVudC5mb3JtRGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBhcnR5X25hbWUgPSAkc2NvcGUuJHBhcmVudC5mb3JtRGF0YVtPYmplY3Qua2V5cygkc2NvcGUuJHBhcmVudC5mb3JtRGF0YSlbMF1dWzBdW1wicGFydHlfbmFtZVwiXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRyYWN0X251bWJlciA9ICRzY29wZS4kcGFyZW50LmZvcm1EYXRhW09iamVjdC5rZXlzKCRzY29wZS4kcGFyZW50LmZvcm1EYXRhKVswXV1bMF1bXCJjb250cmFjdF9udW1iZXJcIl1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGVldC5nZXRDZWxsKCdBMicpLnZhbHVlID0gcGFydHlfbmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGVldC5nZXRDZWxsKCdCMycpLnZhbHVlID0gY29udHJhY3RfbnVtYmVyOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcD1bXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGhlYWRlcj1bXVxyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmNvbHVtbkRlZnMuZm9yRWFjaCggIChjb2wsIGkpID0+ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sLnZpc2libGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyLnB1c2goY29sLmRpc3BsYXlOYW1lKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29sV2lkdGggPSBjb2wud2lkdGgucmVwbGFjZShcIiVcIixcIlwiKS5yZXBsYWNlKFwicHhcIixcIlwiKSAvLyBmb3IgRXhjZWwgd2UgZG9udCB3YW50ICUgb3IgcHhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5wdXNoKHtoZWFkZXI6IGNvbC5kaXNwbGF5TmFtZSwga2V5OmNvbC5uYW1lLCB3aWR0aDogY29sV2lkdGggfSApIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hlZXQuY29sdW1ucyA9IHRlbXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qc2hlZXQuaW5zZXJ0Um93KDYsIGhlYWRlciwnaScpICBUT0RPIC0gbWFrZSBoZWFkZXIgZHluYW1pY2FseSBjcmVhdGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hlZXQuc3BsaWNlUm93cyg1LCAxKTsgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9ICRzY29wZS5ncmlkRGF0YSgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hlZXQuaW5zZXJ0Um93cyg3LCBkYXRhLCdpJykgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWV0LnNwbGljZVJvd3MoNiwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9zaGVldC5zcGxpY2VSb3dzKDEsIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWV0LmdldFJvdygxKS5oaWRkZW4gPSB0cnVlICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd29ya2Jvb2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2Jvb2sueGxzeC53cml0ZUJ1ZmZlcigpLnRoZW4oKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbZGF0YV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0O2NoYXJzZXQ9dXRmLTgnIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUFzKGJsb2IsICdleHBvcnQueGxzeCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB9ZWxzZSBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoJ0V4cG9ydCB0ZW1wbGF0ZSBpcyBub3QgZGVmaW5lZCEnLCd3YXJuaW5nJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgXHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAkc2NvcGUuZXhwb3J0VGFibGUgPSBmdW5jdGlvbigpXHJcbiAgICAgICAgICAgICAgICAgICAgeyAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3b3JrYm9vayA9IG5ldyBFeGNlbEpTLldvcmtib29rKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdvcmtzaGVldCA9IHdvcmtib29rLmFkZFdvcmtzaGVldCgnTmV3IFNoZWV0Jyk7ICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcD1bXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNEYXRlPXt9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpc0xpc3Q9e31cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlzQ29sdW1uVmlzaWJsZT1bXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgY29sIG9mICRzY29wZS5jb2x1bW5EZWZzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbC52aXNpYmxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ29sdW1uVmlzaWJsZS5wdXNoKGNvbC5uYW1lKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLnB1c2goe2hlYWRlcjogY29sLmRpc3BsYXlOYW1lLCBrZXk6Y29sLm5hbWV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sLkVsZW1lbnRUeXBlPT0gJ2xpc3QnKSAgaXNMaXN0W2NvbC5uYW1lXSA9IHRydWUgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2wuRWxlbWVudFR5cGU9PSAnZGF0ZScpICBpc0RhdGVbY29sLm5hbWVdID0gdHJ1ZSAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc2hlZXQuY29sdW1ucyA9IHRlbXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy93b3Jrc2hlZXQuY29sdW1ucyA9ICRzY29wZS5jb2x1bW5EZWZzLm1hcChjb2wgPT4ge2hlYWRlcjogY29sLmRpc3BsYXlOYW1lLCBrZXk6Y29sLm5hbWV9KTsgLy9UT0RPIG1vemRhIG92byB1YmFjaXRpIHVtamVzdG8gZ29yZVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFsbFRhYmxlRGF0YT0kc2NvcGUuZ3JpZERhdGEoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWxsRXhwb3J0RGF0YSA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNyZWF0aW5nICBkYXRhIGZvciBleHBvcnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgcm93IG9mIGFsbFRhYmxlRGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9iaiA9IHt9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBjb2wgb2YgaXNDb2x1bW5WaXNpYmxlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqW2NvbF0gPSByb3dbY29sXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocm93W2NvbF0gJiYgaXNMaXN0W2NvbF0pICAgeyAgLy93aGVuIGxpc3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpbY29sXSA9IHJvd1tjb2xdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJvd1tjb2xdICYmIGlzRGF0ZVtjb2xdKSAgIHsgIC8vd2hlbiBkYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ialtjb2xdID0gbmV3IERhdGUocm93W2NvbF0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbEV4cG9ydERhdGEucHVzaChvYmopXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NoZWV0LmFkZFJvd3MoYWxsRXhwb3J0RGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtib29rLnhsc3gud3JpdGVCdWZmZXIoKS50aGVuKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtkYXRhXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7Y2hhcnNldD11dGYtOCcgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUFzKGJsb2IsICdleHBvcnQueGxzeCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTsgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVmcmVzaERhdGFFeHQgPSBmdW5jdGlvbihwYWdlTnVtYmVyLHBhZ2VTaXplKSAgXHJcbiAgICAgICAgICAgICAgICAgICAgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFibGVTdGF0ZS5wYWdpbmF0aW9uLm51bWJlciA9IHBhZ2VTaXplO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50YWJsZVN0YXRlLnBhZ2luYXRpb24uc3RhcnQgPSAocGFnZU51bWJlci0xKSpwYWdlU2l6ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVmcmVzaERhdGEoJHNjb3BlLnRhYmxlU3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmxpcFNvcnQgPSBmdW5jdGlvbih0Yykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGMuc29ydCA9PSB1bmRlZmluZWQgfHwgdGMuc29ydD09XCJcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjLnNvcnQ9XCJhc2NlbmRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlICBpZiAodGMuc29ydD09XCJhc2NlbmRpbmdcIikgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Yy5zb3J0PVwiZGVzY2VuZGluZ1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0Yy5zb3J0PT1cImRlc2NlbmRpbmdcIikgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Yy5zb3J0PVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5pc1NvcnRDaGFuZ2VkID0gdHJ1ZVxyXG5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFJFRlJFU0ggRlVOQ1RJT04gLSBDQUxMRUQgRlJPTSBTTUFSVC1UQUJMRSAhIVxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5yZWZyZXNoRGF0YSA9IGZ1bmN0aW9uKHRhYmxlU3RhdGUpIFxyXG4gICAgICAgICAgICAgICAgICAgIHsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGlmICh0YWJsZVN0YXRlLnBhZ2luYXRpb24ubnVtYmVyPT11bmRlZmluZWQgfHwgdGFibGVTdGF0ZS5wYWdpbmF0aW9uLm51bWJlcj09TmFOKSAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVTdGF0ZS5wYWdpbmF0aW9uLm51bWJlcj0xMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vZGVidWdnZXIgLy9yZWZyZXNoRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRzY29wZS5pc1NvcnRDaGFuZ2VkKSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmlzU29ydENoYW5nZWQgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNvcnRHcmlkRGF0YSgpICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIC8vYWN0dWFsbHkgZnVuY3Rpb24gR0VUREFUQVNNQVJUVEFCTEUgaW4ga3RUYXNrRGF0YXNldExpc3Qgd2lkZ2V0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5rdFJlZnJlc2hEYXRhKHt0YWJsZVN0YXRlOiB0YWJsZVN0YXRlLCBwYWdlTnVtYmVyOih0YWJsZVN0YXRlLnBhZ2luYXRpb24uc3RhcnQvdGFibGVTdGF0ZS5wYWdpbmF0aW9uLm51bWJlcikrMSwgcGFnZVNpemU6dGFibGVTdGF0ZS5wYWdpbmF0aW9uLm51bWJlcn0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlciAvL3NtYXJ0dGFibGUgLy9nZXQgZm9ybWF0ZWQgZGlzcGxheVRhYmVEYXRhIFxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5kaXNwbGF5VGFibGVEYXRhID0gcmVzdWx0LmRhdGEucmVzdWx0cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY29sdW1uRGVmcyA9IHJlc3VsdC5kYXRhLmNvbHVtbnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRvdGFsTWF0Y2hlZCA9IHJlc3VsdC5kYXRhLmNvdW50O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNvbCBvZiAkc2NvcGUuY29sdW1uRGVmcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmV3Rm9ybWF0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXNlR3JvdXBpbmcgPSBjb2wuZGlzYWJsZUdyb3VwaW5nID8gZmFsc2UgOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sLmRlY2ltYWxQbGFjZXMpICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdGb3JtYXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoXCJkZS1ERVwiLCB7IHVzZUdyb3VwaW5nOiB1c2VHcm91cGluZywgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogY29sLmRlY2ltYWxQbGFjZXMgLCAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBjb2wuZGVjaW1hbFBsYWNlcyAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Zvcm1hdCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChcImRlLURFXCIsIHsgdXNlR3JvdXBpbmc6IHVzZUdyb3VwaW5nIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubXlGb3JtYXRbY29sLmlkXSA9IG5ld0Zvcm1hdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5kYXRhLnJlc3VsdHMhPXVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHJlc3VsdC5kYXRhLnJlc3VsdHMpeyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5nZXRJdGVtPSB7fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGNvbCBvZiByZXN1bHQuZGF0YS5jb2x1bW5zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZ2V0SXRlbVtjb2wubmFtZV0gPSAkc2NvcGUuZ2V0SXRlbShjb2wgLGl0ZW0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhYmxlU3RhdGUhPXVuZGVmaW5lZCkgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVTdGF0ZS5wYWdpbmF0aW9uLm51bWJlck9mUGFnZXMgPSByZXN1bHQuZGF0YS5udW1iZXJPZlBhZ2VzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVN0YXRlLnBhZ2luYXRpb24udG90YWxJdGVtQ291bnQgPSByZXN1bHQuZGF0YS5jb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhYmxlU3RhdGUgPSB0YWJsZVN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICBcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nZXRBY3Rpb25MYWJlbCA9IGZ1bmN0aW9uKGluZGV4KSBcclxuICAgICAgICAgICAgICAgICAgICB7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRzY29wZS5hY3Rpb25EZWZpbml0aW9uW2luZGV4XS5MYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0cmluZ1RvUGF0aCA9IGZ1bmN0aW9uIChwYXRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwYXRoIGlzbid0IGEgc3RyaW5nLCByZXR1cm4gaXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykgcmV0dXJuIHBhdGg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvdXRwdXQgPSBbXTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguc3BsaXQoJy4nKS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtLCBpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3BsaXQgdG8gYW4gYXJyYXkgd2l0aCBicmFja2V0IG5vdGF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnNwbGl0KC9cXFsoW159XSspXFxdL2cpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkubGVuZ3RoID4gMCkgICAgb3V0cHV0LnB1c2goa2V5KTsvLyBQdXNoIHRvIHRoZSBuZXcgYXJyYXlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGdldCA9IGZ1bmN0aW9uIChvYmosIHBhdGgsIGRlZikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoID0gc3RyaW5nVG9QYXRoKHBhdGgpOy8vIEdldCB0aGUgcGF0aCBhcyBhbiBhcnJheVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY3VycmVudCA9IG9iajsvLyBDYWNoZSB0aGUgY3VycmVudCBvYmplY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGVhY2ggaXRlbSBpbiB0aGUgcGF0aCwgZGlnIGludG8gdGhlIG9iamVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGF0aCE9PW51bGwgJiYgcGF0aCE9PXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgaXRlbSBpc24ndCBmb3VuZCwgcmV0dXJuIHRoZSBkZWZhdWx0IChvciBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjdXJyZW50W3BhdGhbaV1dID09PSB1bmRlZmluZWQgfHwgY3VycmVudFtwYXRoW2ldXSA9PT0gbnVsbCApIHJldHVybiBkZWY7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudFtwYXRoW2ldXTsgLy8gT3RoZXJ3aXNlLCB1cGRhdGUgdGhlIGN1cnJlbnQgIHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSByZXR1cm4gZGVmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50O1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAkc2NvcGUuY29udmVydFRvSHRtbD1mdW5jdGlvbihjb250ZW50KXtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICRzY2UudHJ1c3RBc0h0bWwoY29udGVudClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgXHJcbiAgICAgICAgJHNjb3BlLiR3YXRjaCgnY29sdW1uRGVmcycsIGZ1bmN0aW9uIChuZXdWYWx1ZSkgeyAvL1NPUlRJUkFOSkUgS09MT05BIC0gTkUgWk5BTSBEQSBMSSBVT1DEjEUgT1ZPIElNQSBJS0FLVk9HIFNNSVNMQS4uTUlTTElNIERBIE5FIC0gVE9ETyBPQlJJU0FUSVxyXG5cclxuICAgICAgICAgICAgaWYgKCRzY29wZS5zb3J0Q29sdW1uRGVmcyA9PSB1bmRlZmluZWQpICRzY29wZS5zb3J0Q29sdW1uRGVmcyA9ICBbXSAgICAgIFxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmNvbHVtbkRlZnMgPT0gdW5kZWZpbmVkKSAkc2NvcGUuY29sdW1uRGVmcyA9ICBbXSAgXHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiAkc2NvcGUuY29sdW1uRGVmcykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoaXRlbS5zb3J0ID09IFwiYXNjZW5kaW5nXCIgfHwgaXRlbS5zb3J0ID09IFwiZGVzY2VuZGluZ1wiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgLy9pZiBuZXcgY29sdW1uIGFscmVhZHkgZXhpc3RzIGluIHNvcnQgYXJyYXkgZG8gbm90aGluZyBvdGhlcndpc2UgcHVzaCBpbnRvIG5ldyBhcnJheVxyXG4gICAgICAgICAgICAgICAgICAgICAgIGlmICggISAkc2NvcGUuc29ydENvbHVtbkRlZnMuaW5jbHVkZXMoaXRlbSkgKSAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNvcnRDb2x1bW5EZWZzLnB1c2goaXRlbSkgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfSBcclxuXHJcbiAgICAgICAgICAgLy8gIC8vc29ydCBrb2xvbmEgXHJcbiAgICAgICAgICAgLy8gJHNjb3BlLnNvcnRDb2x1bW5EZWZzLnNvcnQoICAoYSxiKSA9PiAoYS5zb3J0T3JkZXIgPiBiLnNvcnRPcmRlcikgPyAxIDogKChiLnNvcnRPcmRlciA+IGEuc29ydE9yZGVyKSA/IC0xIDogMCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9LHRydWUpO1xyXG4gICAgICAgIFxyXG4gICAgICAvKiBcclxuICAgICAgICAkc2NvcGUuJHdhdGNoKCdzb3J0Q29sdW1uRGVmcycsIGZ1bmN0aW9uIChuZXdWYWx1ZSxvbGRWYWx1ZSkge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpIDwgJHNjb3BlLnNvcnRDb2x1bW5EZWZzLmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnNvcnRDb2x1bW5EZWZzW2ldLnNvcnQgPT0gXCJcIikgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zb3J0Q29sdW1uRGVmcy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc29ydENvbHVtbkRlZnNbaV1bJ3NvcnRPcmRlciddID0gaVxyXG4gICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfSwgdHJ1ZSk7Ki9cclxuICBcclxuXHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9LCAgLy9DVFJMXHJcbiAgICAgICAgICAgICAgIHNjb3BlOntcclxuICAgICAgICAgICAgICAgICAgICB0YWJsZURhdGE6Jz0/JyxcclxuICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzOic9PycsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6Jz0/JyxcclxuICAgICAgICAgICAgICAgICAgICBjZWxsUGFkZGluZzonPT8nLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkRlZnM6Jz0/JyxcclxuICAgICAgICAgICAgICAgICAgICB1c2VQYWdpbmF0aW9uOic9PycsXHJcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50U2lkZTonPT8nLFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zT25QYWdlOic9JyxcclxuICAgICAgICAgICAgICAgICAgICBhbGxvd1NvcnQ6Jz0nLFxyXG5cdFx0XHRcdFx0ZmQ6Jz0nLFxyXG5cdFx0XHRcdFx0cmVzb3VyY2VEZWZpbml0aW9uOic9JyxcclxuICAgICAgICAgICAgICAgICAgICByb3dTZWxlY3RlZENoYW5nZTonJicsXHJcbiAgICAgICAgICAgICAgICAgICAga3RSZWZyZXNoRGF0YTonJmt0UmVmcmVzaERhdGEnLFxyXG4gICAgICAgICAgICAgICAgICAgIGdyaWREYXRhOicmZ3JpZERhdGEnLFxyXG4gICAgICAgICAgICAgICAgICAgIHNldEZuUmVmcmVzaERhdGE6ICcmJyxcclxuICAgICAgICAgICAgICAgICAgICBzaG93QWN0aW9uQnV0dG9uczonPT8nLFxyXG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NBY3Rpb246JyZrdFByb2Nlc3NBY3Rpb24nLFxyXG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxQYWdlOiAnPT8nLFxyXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbkRlZmluaXRpb246ICc9PycsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RTbWFydENhcmRzLmh0bWwnLFxyXG4gICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBzY29wZS5mb3JtTG9hZGVkPXRydWUgLy8gTUlHT1IgLSB0b2RvIHRlc3RcclxuICAgICAgICAgICAgICAgIHNjb3BlLnNldEZuUmVmcmVzaERhdGEoe3RoZURpckZuOiBzY29wZS5yZWZyZXNoRGF0YUV4dH0pO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNjb3BlLmFjdGlvbkRlZmluaXRpb249PT11bmRlZmluZWQpIHNjb3BlLmFjdGlvbkRlZmluaXRpb249W3thY3Rpb25JZDoxLExhYmVsOidFZGl0J31dXHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAgICAgICAgICBcclxuICAgICAgXHJcbn07XG4ndXNlIHN0cmljdCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3RTbWFydFRhYmxlICgkdGltZW91dCwgVXRpbGl0eVNlcnZpY2UsIFJlc291cmNlc0RhdGFTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICByZXN0cmljdDogJ0VBJyxcclxuICAgICAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uICgkc2NvcGUsICRyb290U2NvcGUsICRmaWx0ZXIsICR0aW1lb3V0LCBVdGlsaXR5U2VydmljZSwgUmVzb3VyY2VzRGF0YVNlcnZpY2UsTWVzc2FnaW5nU2VydmljZSwkc2NlLCRlbGVtZW50KSB7IFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5kaXNwbGF5VGFibGVEYXRhID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnByaW9yaXR5PSB7IG1pbjoxLCBtYXg6MyB9XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmlzU29ydENoYW5nZWQgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLk1hdGggPSB3aW5kb3cuTWF0aDtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWw9IHsgc3RJdGVtc09uUGFnZTokc2NvcGUuaXRlbXNPblBhZ2V9XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNob3dUYWJsZUNvbmZpZ01lbnU9ZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUucGFnZUl0ZW1zTGlzdCA9IFs1LDEwLDI1LDUwLDEwMCwyNTAsNTAwLDEwMDBdO1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5teUZvcm1hdD17fVxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5sYW5nQ29kZSA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nT2JqLkNvZGVcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubGVmdENzcz1cImxlZnQ6IDBweDtcIiAgXHJcblx0XHRcdFx0XHQkc2NvcGUucG9zaXRpb25Dc3M9XCJcIlx0XHRcdFx0XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb250U2l6ZT09dW5kZWZpbmVkICkgJHNjb3BlLmZvbnRTaXplID0gXCIxcmVtXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5DVFJMPSdrdFNtYXJ0VGFibGUnXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5jbGllbnRTaWRlPT11bmRlZmluZWQpICRzY29wZS5jbGllbnRTaWRlPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUudXNlUGFnaW5hdGlvbj09dW5kZWZpbmVkKSAkc2NvcGUudXNlUGFnaW5hdGlvbj1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnRhYmxlRGF0YSE9dW5kZWZpbmVkKSAkc2NvcGUuZGlzcGxheVRhYmxlRGF0YSA9ICRzY29wZS50YWJsZURhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gUEFSQU1FVEVSUyBERUZBVUxUU1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucGFyYW1ldGVycz09PXVuZGVmaW5lZCkgICRzY29wZS5wYXJhbWV0ZXJzLnRhYmxlID0geyB9ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5wYXJhbWV0ZXJzLnRhYmxlPT11bmRlZmluZWQpICAgICRzY29wZS5wYXJhbWV0ZXJzLnRhYmxlID0geyB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5wYXJhbWV0ZXJzLlBhZ2VyTGFiZWwxPT09dW5kZWZpbmVkKSAkc2NvcGUucGFyYW1ldGVycy5QYWdlckxhYmVsMSA9J2l0ZW1zIHBlciBwYWdlIHwgUGFnZTonXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5wYXJhbWV0ZXJzLlBhZ2VyTGFiZWwyPT09dW5kZWZpbmVkKSAkc2NvcGUucGFyYW1ldGVycy5QYWdlckxhYmVsMiA9J29mJ1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucGFyYW1ldGVycy5QYWdlckxhYmVsMz09PXVuZGVmaW5lZCkgJHNjb3BlLnBhcmFtZXRlcnMuUGFnZXJMYWJlbDMgPSdpdGVtcycgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnBhcmFtZXRlcnMuUGFnZXJNYXhQYWdlcz09PXVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucGFyYW1ldGVycy5QYWdlck1heFBhZ2VzID0gMTBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoPDk5MikgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnBhcmFtZXRlcnMuUGFnZXJNYXhQYWdlcyA9IE1hdGgucm91bmQoJHNjb3BlLnBhcmFtZXRlcnMuUGFnZXJNYXhQYWdlcy8yKVxyXG4gICAgICAgICAgICAgICAgICAgIH0gIGVsc2UgaWYgKCRzY29wZS5wYXJhbWV0ZXJzLlBhZ2VyTWF4UGFnZXM+PTEwKSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGg8OTkyKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucGFyYW1ldGVycy5QYWdlck1heFBhZ2VzID0gTWF0aC5yb3VuZCgkc2NvcGUucGFyYW1ldGVycy5QYWdlck1heFBhZ2VzLzIpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnBhcmFtZXRlcnMudGFibGUuVmVydGljYWxTcGFjaW5nPT11bmRlZmluZWQpICRzY29wZS5wYXJhbWV0ZXJzLnRhYmxlLlZlcnRpY2FsU3BhY2luZz0wXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAvKiAgIEFycmF5LnByb3RvdHlwZS5zb3J0QnkgPSBmdW5jdGlvbiAocHJvcGVydHlOYW1lLCBzb3J0RGlyZWN0aW9uKSB7IC8vIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgR0VUU09SVE1FSFRPRCAhIVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzb3J0RGlyZWN0aW9uIDogIHRydWU9YXNjZW5kaW5nLCBmYWxzZT1kZXNjZW5kaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzb3J0QXJndW1lbnRzID0gYXJndW1lbnRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNvcnQoZnVuY3Rpb24gKG9iakEsIG9iakIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYXJnSW5kZXggPSAwOyBhcmdJbmRleCA8IHNvcnRBcmd1bWVudHMubGVuZ3RoICYmIHJlc3VsdCA9PT0gMDsgYXJnSW5kZXggKz0gMikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcm9wZXJ0eU5hbWUgPSBzb3J0QXJndW1lbnRzW2FyZ0luZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAob2JqQVtwcm9wZXJ0eU5hbWVdIDwgb2JqQltwcm9wZXJ0eU5hbWVdKSA/IC0xIDogKG9iakFbcHJvcGVydHlOYW1lXSA+IG9iakJbcHJvcGVydHlOYW1lXSkgPyAxIDogMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKj0gIXNvcnRBcmd1bWVudHNbYXJnSW5kZXggKyAxXSA/IDEgOiAtMTsvL1JldmVyc2UgaWYgc29ydCBvcmRlciBpcyBmYWxzZSAoREVTQylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgIH0qL1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5nZXRTb3J0TWV0aG9kID0gVXRpbGl0eVNlcnZpY2UuZ2V0U29ydE1ldGhvZFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5zb3J0R3JpZERhdGEgPSBmdW5jdGlvbiAoKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5pc1NvcnRDaGFuZ2VkID0gZmFsc2UgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc29ydEFyZ3VtZW50cyA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFsbFRhYmxlRGF0YSA9ICRzY29wZS5ncmlkRGF0YSgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsbFRhYmxlRGF0YSE9dW5kZWZpbmVkICYmIGFsbFRhYmxlRGF0YS5sZW5ndGggPjEgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNvbCBvZiAgJHNjb3BlLmNvbHVtbkRlZnMpIHsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2wuc29ydCA9PSdhc2NlbmRpbmcnIHx8IGNvbC5zb3J0ID09J2Rlc2NlbmRpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRBcmd1bWVudHMucHVzaChjb2wuc29ydFswXSArIGNvbC5uYW1lKSAgLy8gZmlyc3QgbGV0ZXIgaXMgYShzY2VuZGluZykgb3IgZChlc2NlbmRpbmcpICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsVGFibGVEYXRhLnNvcnQgKCRzY29wZS5nZXRTb3J0TWV0aG9kKHNvcnRBcmd1bWVudHMsICRyb290U2NvcGUuZ2xvYmFscz8uY3VycmVudFVzZXI/LmxhbmdPYmo/LkNvZGUgKSk7ICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICBjb25zdCBudW1Gb3JtYXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoXCJkZS1ERVwiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyICxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDJcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuXHRcdFx0XHRcdCRzY29wZS5zaG93TWVudUZuID0gKGV2ZW50KSA9PiB7XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdGxldCBjdXJzb3JQb3NpdGlvbkxlZnQgPSBldmVudC5jbGllbnRYIFxyXG4gIFxyXG5cdFx0XHRcdFx0XHRsZXQgdGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImRsaXN0LVwiICskc2NvcGUucGFyYW1ldGVycy5VdWlkUmVmKVxyXG5cdFx0XHRcdFx0XHRpZiAodGFibGUpIHtcclxuXHRcdFx0XHRcdFx0XHRsZXQgcmVjdCA9IHRhYmxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlY3QudG9wLCByZWN0LnJpZ2h0LCByZWN0LmJvdHRvbSwgcmVjdC5sZWZ0KTtcclxuXHRcdFx0XHRcdFx0XHRjdXJzb3JQb3NpdGlvbkxlZnQgPSBldmVudC5jbGllbnRYIC0gcmVjdC54IFxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdCRzY29wZS5wb3NpdGlvbkNzcz0gXCJsZWZ0OiBcIisgY3Vyc29yUG9zaXRpb25MZWZ0ICtcInB4XCJcclxuXHRcdFxyXG5cdFx0XHRcdFx0fVxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdldEl0ZW0gPSBmdW5jdGlvbiAoY29sdW1uLGl0ZW0pXHJcbiAgICAgICAgICAgICAgICAgICAgeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0ucmVzb3VyY2VkZWZsYW5nX3NldCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGdldChpdGVtLGNvbHVtbi5uYW1lLCBudWxsKSAgICAgICAgLy8gRm9yIFJFU09VUkNFIExJU1QgdGFibGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGl0ZW1bY29sdW1uLm5hbWVdICAgICAgLy9mb3IgdXNlciBkYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWw9PT1udWxsIHx8IHZhbD09PXVuZGVmaW5lZCkgcmV0dXJuIFwi4oiFXCI7ICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyIC8vc21hcnR0YWJsZSAvL2dldEl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW4uY2VsbEZpbHRlcikgeyAvL0RBVEUgRk9STUFUXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmNlbGxGaWx0ZXIuc3Vic3RyaW5nKDAsNCkudHJpbSgpPT1cImRhdGVcIikgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9ICRmaWx0ZXIoY29sdW1uLmNlbGxGaWx0ZXIuc3Vic3RyaW5nKDAsNCkpKHZhbCxjb2x1bW4uY2VsbEZpbHRlci5zdWJzdHJpbmcoNixjb2x1bW4uY2VsbEZpbHRlci5sZW5ndGgpLnRyaW0oKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbnVtYmVyLnRvU3RyaW5nKCkucmVwbGFjZSgvXFwuL2csICcsJykgIyByZXBsYWNlIGRvdCB3aXRoIGNvbW1hXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW4uRWxlbWVudFR5cGUgPT0gXCJudW1iZXJcIikgICB2YWwgPSAgJHNjb3BlLm15Rm9ybWF0W2NvbHVtbi5pZF0uZm9ybWF0KHZhbClcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbDtcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUucm93U2VsZWN0ZWQgPSBmdW5jdGlvbihyb3cpIFxyXG4gICAgICAgICAgICAgICAgICAgIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJHNjb3BlLnBhcmFtZXRlcnMuTXVsdGlsaW5lKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJvd1NlbGVjdGVkQ291bnQgPSByb3cuaXNTZWxlY3RlZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5wb3NpdGlvbkNzcz1cImxlZnQ6IFwiKyRzY29wZS5jdXJzb3JQb3NpdGlvbkxlZnQrXCJweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucm93U2VsZWN0ZWRDaGFuZ2Uoe2l0ZW06cm93fSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmFsbFNlbGVjdGVkKSAkc2NvcGUuYWxsU2VsZWN0ZWQgPSByb3cuaXNTZWxlY3RlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJvd1NlbGVjdGVkTXVsdGlwbGUocm93KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJvd1NlbGVjdGVkTXVsdGlwbGUgPSBmdW5jdGlvbihyb3cpIFxyXG4gICAgICAgICAgICAgICAgICAgIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0TXVsdGlwbGUoe2l0ZW06cm93fSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RBbGxSb3dzID0gZnVuY3Rpb24oKSBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmFsbFNlbGVjdGVkID0gISRzY29wZS5hbGxTZWxlY3RlZFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wO2k8JHNjb3BlLmRpc3BsYXlUYWJsZURhdGEubGVuZ3RoO2krKylcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGlzcGxheVRhYmxlRGF0YVtpXS5pc1NlbGVjdGVkID0gJHNjb3BlLmFsbFNlbGVjdGVkIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RNdWx0aXBsZSh7aXRlbTpudWxsLHNlbGVjdEFsbDokc2NvcGUuYWxsU2VsZWN0ZWQsZGVzZWxlY3RBbGw6ISRzY29wZS5hbGxTZWxlY3RlZH0pOyBcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNldEFjdGlvbnNQb3NpdGlvbiA9IGZ1bmN0aW9uKGV2ZW50LGluZGV4KSBcclxuICAgICAgICAgICAgICAgICAgICB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRUYXJnZXRPZmZzZXRMZWZ0ID0gZXZlbnQuY3VycmVudFRhcmdldC5vZmZzZXRMZWZ0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gIGxldCBhY3Rpb25zID0gJGVsZW1lbnRbMF0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInNtLWFjdGlvbnNcIitpbmRleClcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCB0YWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGJsY29udGFpbmVyXCIrJHNjb3BlLnBhcmFtZXRlcnMuVXVpZFJlZilcclxuICAgICAgICAgICAgICAgICAgICAgIC8vICBpZiAoYWN0aW9ucy5sZW5ndGgpIGFjdGlvbnNbMF0ub2Zmc2V0TGVmdCA9IGN1cnJlbnRUYXJnZXRPZmZzZXRMZWZ0XHJcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY3Vyc29yUG9zaXRpb25MZWZ0ID0gY3VycmVudFRhcmdldE9mZnNldExlZnQgLSB0YWJsZS5zY3JvbGxMZWZ0ICsgZXZlbnQub2Zmc2V0WFxyXG4gICAgICAgICAgICAgICAgICAgIH07ICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICRzY29wZS5jb3B5Y29sdW1uRGVmcyA9IGZ1bmN0aW9uKCkgXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyIC8vY29weWNvbHVtbkRlZnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiAkc2NvcGUuY29sdW1uRGVmcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5zb3J0ID09IFwidHJ1ZVwiIHx8IGl0ZW0uc29ydCA9PSBcInJldmVyc2VcIikgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuc29ydENvbHVtbkRlZnMpICAkc2NvcGUuc29ydENvbHVtbkRlZnMucHVzaChpdGVtKSAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZHJvcFN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgLy8gTk9UIFVTRUQgLSBERU1PTlNUUkFUSU9OIE9GIFwiQUNUSU9OIE9OIERST1BcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBzcmMgb2YgJHNjb3BlLnNvcnRDb2x1bW5EZWZzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgZHN0IG9mICRzY29wZS5jb2x1bW5EZWZzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcmMgPT0gZHN0KSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5zb3J0RmlsdGVyID0gZnVuY3Rpb24gKGl0ZW0pIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLnNvcnQgPT09ICd0cnVlJyB8fCBpdGVtLnNvcnQgPT09ICdyZXZlcnNlJzsgXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUudG9nZ2xlVGFibGVDb25maWdNZW51ID0gZnVuY3Rpb24oKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2hvd1RhYmxlQ29uZmlnTWVudSA9ICEkc2NvcGUuc2hvd1RhYmxlQ29uZmlnTWVudVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUudG9nZ2xlU29ydE1lbnUgPSBmdW5jdGlvbigpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zaG93U29ydE1lbnUgPSAhJHNjb3BlLnNob3dTb3J0TWVudVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0UGFnZSA9IGZ1bmN0aW9uIChwYWdlKSB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJGJyb2FkY2FzdCAoJ3NlbGVjdFBhZ2UnLCBwYWdlKTsvL3NlbmQgdG8gc21hcnQtdGFibGUgY29udHJvbGxlclxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUucHJpbnRUYWJsZSA9IGZ1bmN0aW9uKClcclxuICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2x1bW5zPVtdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvdXRwdXQ9XCI8ZGl2IGNsYXNzPSdjb250YWluZXInPlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dCsgXCI8ZGl2IGlkPSdwcmludGInIGNsYXNzPSdub3ByaW50JyBzdHlsZT0ncGFkZGluZzoxMHB4Jz4gPGJ1dHRvbiAgb25DbGljaz0nIHZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJnF1b3Q7cHJpbnRiJnF1b3Q7KTsgZS5yZW1vdmUoKTsgd2luZG93LnByaW50KCknPlByaW50PC9idXR0b24+PC9kaXY+XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXRhPSAkc2NvcGUuZ3JpZERhdGEoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAvLyBQUklOVCBIRUFERVJcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0KyBcIjxkaXYgY2xhc3M9J3JlZCc+XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb2x1bW5TdHlsZXM9JydcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPCAkc2NvcGUuY29sdW1uRGVmcy5sZW5ndGg7aSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2wgPSAkc2NvcGUuY29sdW1uRGVmc1tpXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sLnZpc2libGUgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbENsYXNzPVwiY2VsbCBjb2xcIiArIGkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAgKCBjb2wuRWxlbWVudFR5cGUgPT0gXCJudW1iZXJcIiApIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQgKyBcIjxkaXYgY2xhc3M9JyBcIiArIGNvbENsYXNzICsgXCIgYXInID5cIiArIGNvbC5kaXNwbGF5TmFtZSArIFwiPC9kaXY+XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dCArIFwiPGRpdiBjbGFzcz0nIFwiICsgY29sQ2xhc3MgKyAgXCIgJyA+XCIgKyBjb2wuZGlzcGxheU5hbWUgKyBcIjwvZGl2PlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uU3R5bGVzKz0gJyAuY29sJyArIGkgKyAnICB7ICBtYXJnaW4tbGVmdDogNHB4IDsgd2lkdGg6JyArIGNvbC53aWR0aCArICcgfScgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQrIFwiPC9kaXY+XCIgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBQUklOVCBEQVRBXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcihsZXQgcm93IG9mIGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dCsgXCI8ZGl2IGNsYXNzPSdyZWQnPlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8ICRzY29wZS5jb2x1bW5EZWZzLmxlbmd0aDsgaSsrKSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29sID0gJHNjb3BlLmNvbHVtbkRlZnNbaV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbC52aXNpYmxlID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbENsYXNzPVwiY2VsbCBjb2xcIiArIGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgICggY29sLkVsZW1lbnRUeXBlID09IFwibnVtYmVyXCIgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZm9ybWF0dGVkID0gcm93W2NvbC5uYW1lXS50b0xvY2FsZVN0cmluZyggICRzY29wZS5sYW5nQ29kZSB8fCAnZW4tR0InLCB7IG1heGltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0PW91dHB1dCArICc8ZGl2IGNsYXNzPVwiJyArIGNvbENsYXNzICsgJyBhclwiPicrIGZvcm1hdHRlZCArICAnPC9kaXY+J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0PW91dHB1dCArICc8ZGl2IGNsYXNzPVwiJyArIGNvbENsYXNzKyAnXCI+Jysgcm93W2NvbC5uYW1lXSArICAnPC9kaXY+J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0KyBcIjwvZGl2PlwiICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgnTXkgdGl0bGUnKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2MuaGVhZC5pbm5lckhUTUwrPScgIDxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiB0eXBlPVwidGV4dC9jc3NcIiBocmVmPVwiL3N0YXRpYy9tb2R1bGVzL3N0eWxlcy9idWlsZC9jc3MvbWFzdGVyLmNzc1wiIC8+ICcgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvYy5oZWFkLmlubmVySFRNTCs9JyA8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgdHlwZT1cInRleHQvY3NzXCIgaHJlZj1cIi9zdGF0aWMvbW9kdWxlcy9zdHlsZXMvYnVpbGQvY3NzL21haW4uY3NzXCIgLz4nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvYy5ib2R5LmlubmVySFRNTCs9JzxkaXYgaWQ9XCJjb250ZW50XCI+VEVTVDwvZGl2PidcclxuICAgICAgICAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdHJXaW5kb3dGZWF0dXJlcyA9IFwibG9jYXRpb249eWVzLGhlaWdodD01NzAsd2lkdGg9NTIwLHNjcm9sbGJhcnM9eWVzLHN0YXR1cz15ZXNcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHdpbiA9IHdpbmRvdy5vcGVuKFwiXCIsIFwiX2JsYW5rXCIsIHN0cldpbmRvd0ZlYXR1cmVzKTsgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aW4uZG9jdW1lbnQuYm9keS5pbm5lckhUTUwrPVxyXG4gICAgICAgICAgICAgICAgICAgICAgIC8vICcgPHN0eWxlIHR5cGU9XCJ0ZXh0L2Nzc1wiIG1lZGlhPVwicHJpbnRcIj4gICBAcGFnZSB7IHNpemU6IGxhbmRzY2FwZTsgIH0gICAgYm9keSB7ICAgd3JpdGluZy1tb2RlOiB0Yi1ybDsgfSA8L3N0eWxlPicgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gICcgPHN0eWxlIHR5cGU9XCJ0ZXh0L2Nzc1wiID4gICBAcGFnZSB7IHNpemU6IGxhbmRzY2FwZTsgIH0gICAgYm9keSB7ICB9IDwvc3R5bGU+JyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICcgPHN0eWxlIHR5cGU9XCJ0ZXh0L2Nzc1wiPidcclxuICAgICAgICAgICAgICAgICAgICAgICAgKycgQHBhZ2UgeyAgc2l6ZTogbGFuZHNjYXBlOyAgbWFyZ2luOiAwO30gIGh0bWwsIGJvZHkgeyAgIHdpZHRoOiAyOTdtbTsgICBoZWlnaHQ6IDIxMG1tOyAgfSdcclxuICAgICAgICAgICAgICAgICAgICAgICAvLyArJyBAcGFnZSB7ICBzaXplOiBBNDsgIG1hcmdpbjogMDt9ICBodG1sLCBib2R5IHsgICB3aWR0aDogMjAwMHB4OyAgIGhlaWdodDogMTAwMHB4OyAgfSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgKycgLnJlZCB7ICBmb250LXdlaWdodDogYm9sZDsgbWF4LXdpZHRoOiAxMDAlOyAgZm9udC1zaXplOiAxMHB4OyBkaXNwbGF5OiB0YWJsZS1yb3c7IH0gJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICArJyAuY2VsbCAgeyAgd2lkdGg6IDEwMHB4OyBmbG9hdDogbGVmdDsgICBkaXNwbGF5OiB0YWJsZS1jb2x1bW47IH0nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICsnIC5hciB7ICB0ZXh0LWFsaWduOiByaWdodCAgfSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgKycgLmNvbnRhaW5lciB7IGRpc3BsYXk6IHRhYmxlOyAgd2lkdGg6IDEwMCU7IH0gJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICArICBjb2x1bW5TdHlsZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgKycgPC9zdHlsZT4gJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aW4uZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgKz0gb3V0cHV0O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLmV4cG9ydDJleGNlbCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdmFyIHdiID0gbmV3IEV4Y2VsSlMuV29ya2Jvb2soKTtcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucGFyYW1ldGVycy5leGNlbEV4cG9ydFRlbXBsYXRlRmlsZVR5cGU/LmlkIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5kb3dubG9hZEZpbGUoJHNjb3BlLnBhcmFtZXRlcnMuZXhjZWxFeHBvcnRUZW1wbGF0ZUZpbGVJZCAsICRzY29wZS5wYXJhbWV0ZXJzLmV4Y2VsRXhwb3J0VGVtcGxhdGVGaWxlVHlwZS5pZClcclxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnRmlsZSBkb3dubG9hZGVkJywnaW5mbycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRlbXBsYXRlID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oIGZ1bmN0aW9uKGRhdGEpIHsgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB3Yi54bHN4LmxvYWQoJHNjb3BlLnRlbXBsYXRlKS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlbih3b3JrYm9vayA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtib29rLmVhY2hTaGVldCgoc2hlZXQsIGlkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS4kcGFyZW50LmZvcm1EYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGFydHlfbmFtZSA9ICRzY29wZS4kcGFyZW50LmZvcm1EYXRhW09iamVjdC5rZXlzKCRzY29wZS4kcGFyZW50LmZvcm1EYXRhKVswXV1bMF1bXCJwYXJ0eV9uYW1lXCJdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29udHJhY3RfbnVtYmVyID0gJHNjb3BlLiRwYXJlbnQuZm9ybURhdGFbT2JqZWN0LmtleXMoJHNjb3BlLiRwYXJlbnQuZm9ybURhdGEpWzBdXVswXVtcImNvbnRyYWN0X251bWJlclwiXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWV0LmdldENlbGwoJ0EyJykudmFsdWUgPSBwYXJ0eV9uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWV0LmdldENlbGwoJ0IzJykudmFsdWUgPSBjb250cmFjdF9udW1iZXI7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wPVtdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGVhZGVyPVtdXHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY29sdW1uRGVmcy5mb3JFYWNoKCAgKGNvbCwgaSkgPT4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2wudmlzaWJsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIucHVzaChjb2wuZGlzcGxheU5hbWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2xXaWR0aCA9IGNvbC53aWR0aC5yZXBsYWNlKFwiJVwiLFwiXCIpLnJlcGxhY2UoXCJweFwiLFwiXCIpIC8vIGZvciBFeGNlbCB3ZSBkb250IHdhbnQgJSBvciBweFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLnB1c2goe2hlYWRlcjogY29sLmRpc3BsYXlOYW1lLCBrZXk6Y29sLm5hbWUsIHdpZHRoOiBjb2xXaWR0aCB9ICkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGVldC5jb2x1bW5zID0gdGVtcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypzaGVldC5pbnNlcnRSb3coNiwgaGVhZGVyLCdpJykgIFRPRE8gLSBtYWtlIGhlYWRlciBkeW5hbWljYWx5IGNyZWF0ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGVldC5zcGxpY2VSb3dzKDUsIDEpOyAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXRhID0gJHNjb3BlLmdyaWREYXRhKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGVldC5pbnNlcnRSb3dzKDcsIGRhdGEsJ2knKSAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hlZXQuc3BsaWNlUm93cyg2LCAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3NoZWV0LnNwbGljZVJvd3MoMSwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hlZXQuZ2V0Um93KDEpLmhpZGRlbiA9IHRydWUgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3b3JrYm9vayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrYm9vay54bHN4LndyaXRlQnVmZmVyKCkudGhlbigoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtkYXRhXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7Y2hhcnNldD11dGYtOCcgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlQXMoYmxvYiwgJ2V4cG9ydC54bHN4Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH1lbHNlIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnRXhwb3J0IHRlbXBsYXRlIGlzIG5vdCBkZWZpbmVkIScsJ3dhcm5pbmcnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICBcclxuICBcclxuICAgICAgICAgICAgICAgICAgICRzY29wZS5leHBvcnRUYWJsZSA9IGZ1bmN0aW9uKClcclxuICAgICAgICAgICAgICAgICAgICB7ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdvcmtib29rID0gbmV3IEV4Y2VsSlMuV29ya2Jvb2soKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd29ya3NoZWV0ID0gd29ya2Jvb2suYWRkV29ya3NoZWV0KCdOZXcgU2hlZXQnKTsgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wPVtdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpc0RhdGU9e31cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlzTGlzdD17fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNDb2x1bW5WaXNpYmxlPVtdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBjb2wgb2YgJHNjb3BlLmNvbHVtbkRlZnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sLnZpc2libGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDb2x1bW5WaXNpYmxlLnB1c2goY29sLm5hbWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAucHVzaCh7aGVhZGVyOiBjb2wuZGlzcGxheU5hbWUsIGtleTpjb2wubmFtZX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2wuRWxlbWVudFR5cGU9PSAnbGlzdCcpICBpc0xpc3RbY29sLm5hbWVdID0gdHJ1ZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbC5FbGVtZW50VHlwZT09ICdkYXRlJykgIGlzRGF0ZVtjb2wubmFtZV0gPSB0cnVlICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzaGVldC5jb2x1bW5zID0gdGVtcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3dvcmtzaGVldC5jb2x1bW5zID0gJHNjb3BlLmNvbHVtbkRlZnMubWFwKGNvbCA9PiB7aGVhZGVyOiBjb2wuZGlzcGxheU5hbWUsIGtleTpjb2wubmFtZX0pOyAvL1RPRE8gbW96ZGEgb3ZvIHViYWNpdGkgdW1qZXN0byBnb3JlXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWxsVGFibGVEYXRhPSRzY29wZS5ncmlkRGF0YSgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhbGxFeHBvcnREYXRhID0gW11cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3JlYXRpbmcgIGRhdGEgZm9yIGV4cG9ydFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCByb3cgb2YgYWxsVGFibGVEYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb2JqID0ge31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGNvbCBvZiBpc0NvbHVtblZpc2libGUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpbY29sXSA9IHJvd1tjb2xdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyb3dbY29sXSAmJiBpc0xpc3RbY29sXSkgICB7ICAvL3doZW4gbGlzdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ialtjb2xdID0gcm93W2NvbF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocm93W2NvbF0gJiYgaXNEYXRlW2NvbF0pICAgeyAgLy93aGVuIGRhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqW2NvbF0gPSBuZXcgRGF0ZShyb3dbY29sXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsRXhwb3J0RGF0YS5wdXNoKG9iailcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc2hlZXQuYWRkUm93cyhhbGxFeHBvcnREYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgd29ya2Jvb2sueGxzeC53cml0ZUJ1ZmZlcigpLnRoZW4oKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2RhdGFdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldDtjaGFyc2V0PXV0Zi04JyB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlQXMoYmxvYiwgJ2V4cG9ydC54bHN4Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5yZWZyZXNoRGF0YUV4dCA9IGZ1bmN0aW9uKHBhZ2VOdW1iZXIscGFnZVNpemUpICBcclxuICAgICAgICAgICAgICAgICAgICB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50YWJsZVN0YXRlLnBhZ2luYXRpb24ubnVtYmVyID0gcGFnZVNpemU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhYmxlU3RhdGUucGFnaW5hdGlvbi5zdGFydCA9IChwYWdlTnVtYmVyLTEpKnBhZ2VTaXplO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZWZyZXNoRGF0YSgkc2NvcGUudGFibGVTdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mbGlwU29ydCA9IGZ1bmN0aW9uKHRjKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0Yy5zb3J0ID09IHVuZGVmaW5lZCB8fCB0Yy5zb3J0PT1cIlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGMuc29ydD1cImFzY2VuZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgIGlmICh0Yy5zb3J0PT1cImFzY2VuZGluZ1wiKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjLnNvcnQ9XCJkZXNjZW5kaW5nXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRjLnNvcnQ9PVwiZGVzY2VuZGluZ1wiKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjLnNvcnQ9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmlzU29ydENoYW5nZWQgPSB0cnVlXHJcblxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gUkVGUkVTSCBGVU5DVElPTiAtIENBTExFRCBGUk9NIFNNQVJULVRBQkxFICEhXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlZnJlc2hEYXRhID0gZnVuY3Rpb24odGFibGVTdGF0ZSkgXHJcbiAgICAgICAgICAgICAgICAgICAgeyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhYmxlU3RhdGUucGFnaW5hdGlvbi5udW1iZXI9PXVuZGVmaW5lZCB8fCB0YWJsZVN0YXRlLnBhZ2luYXRpb24ubnVtYmVyPT1OYU4pICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVN0YXRlLnBhZ2luYXRpb24ubnVtYmVyPTEwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRzY29wZS5pc1NvcnRDaGFuZ2VkKSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmlzU29ydENoYW5nZWQgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNvcnRHcmlkRGF0YSgpICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIC8vYWN0dWFsbHkgZnVuY3Rpb24gR0VUREFUQVNNQVJUVEFCTEUgaW4ga3RUYXNrRGF0YXNldExpc3Qgd2lkZ2V0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5rdFJlZnJlc2hEYXRhKHt0YWJsZVN0YXRlOiB0YWJsZVN0YXRlLCBwYWdlTnVtYmVyOih0YWJsZVN0YXRlLnBhZ2luYXRpb24uc3RhcnQvdGFibGVTdGF0ZS5wYWdpbmF0aW9uLm51bWJlcikrMSwgcGFnZVNpemU6dGFibGVTdGF0ZS5wYWdpbmF0aW9uLm51bWJlcn0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlciAvL3NtYXJ0dGFibGUgLy9nZXQgZm9ybWF0ZWQgZGlzcGxheVRhYmVEYXRhIFxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5kaXNwbGF5VGFibGVEYXRhID0gcmVzdWx0LmRhdGEucmVzdWx0cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY29sdW1uRGVmcyA9IHJlc3VsdC5kYXRhLmNvbHVtbnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRvdGFsTWF0Y2hlZCA9IHJlc3VsdC5kYXRhLmNvdW50O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNvbCBvZiAkc2NvcGUuY29sdW1uRGVmcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmV3Rm9ybWF0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXNlR3JvdXBpbmcgPSBjb2wuZGlzYWJsZUdyb3VwaW5nID8gZmFsc2UgOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sLmRlY2ltYWxQbGFjZXMpICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdGb3JtYXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoXCJkZS1ERVwiLCB7IHVzZUdyb3VwaW5nOiB1c2VHcm91cGluZywgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogY29sLmRlY2ltYWxQbGFjZXMgLCAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBjb2wuZGVjaW1hbFBsYWNlcyAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Zvcm1hdCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChcImRlLURFXCIsIHsgdXNlR3JvdXBpbmc6IHVzZUdyb3VwaW5nIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubXlGb3JtYXRbY29sLmlkXSA9IG5ld0Zvcm1hdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5kYXRhLnJlc3VsdHMhPXVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHJlc3VsdC5kYXRhLnJlc3VsdHMpeyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5nZXRJdGVtPSB7fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGNvbCBvZiByZXN1bHQuZGF0YS5jb2x1bW5zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZ2V0SXRlbVtjb2wubmFtZV0gPSAkc2NvcGUuZ2V0SXRlbShjb2wgLGl0ZW0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhYmxlU3RhdGUhPXVuZGVmaW5lZCkgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVTdGF0ZS5wYWdpbmF0aW9uLm51bWJlck9mUGFnZXMgPSByZXN1bHQuZGF0YS5udW1iZXJPZlBhZ2VzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVN0YXRlLnBhZ2luYXRpb24udG90YWxJdGVtQ291bnQgPSByZXN1bHQuZGF0YS5jb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhYmxlU3RhdGUgPSB0YWJsZVN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICBcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nZXRBY3Rpb25MYWJlbCA9IGZ1bmN0aW9uKGluZGV4KSBcclxuICAgICAgICAgICAgICAgICAgICB7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRzY29wZS5hY3Rpb25EZWZpbml0aW9uW2luZGV4XS5MYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0cmluZ1RvUGF0aCA9IGZ1bmN0aW9uIChwYXRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwYXRoIGlzbid0IGEgc3RyaW5nLCByZXR1cm4gaXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykgcmV0dXJuIHBhdGg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvdXRwdXQgPSBbXTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguc3BsaXQoJy4nKS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtLCBpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3BsaXQgdG8gYW4gYXJyYXkgd2l0aCBicmFja2V0IG5vdGF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnNwbGl0KC9cXFsoW159XSspXFxdL2cpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkubGVuZ3RoID4gMCkgICAgb3V0cHV0LnB1c2goa2V5KTsvLyBQdXNoIHRvIHRoZSBuZXcgYXJyYXlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGdldCA9IGZ1bmN0aW9uIChvYmosIHBhdGgsIGRlZikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoID0gc3RyaW5nVG9QYXRoKHBhdGgpOy8vIEdldCB0aGUgcGF0aCBhcyBhbiBhcnJheVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY3VycmVudCA9IG9iajsvLyBDYWNoZSB0aGUgY3VycmVudCBvYmplY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGVhY2ggaXRlbSBpbiB0aGUgcGF0aCwgZGlnIGludG8gdGhlIG9iamVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGF0aCE9PW51bGwgJiYgcGF0aCE9PXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgaXRlbSBpc24ndCBmb3VuZCwgcmV0dXJuIHRoZSBkZWZhdWx0IChvciBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjdXJyZW50W3BhdGhbaV1dID09PSB1bmRlZmluZWQgfHwgY3VycmVudFtwYXRoW2ldXSA9PT0gbnVsbCApIHJldHVybiBkZWY7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudFtwYXRoW2ldXTsgLy8gT3RoZXJ3aXNlLCB1cGRhdGUgdGhlIGN1cnJlbnQgIHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSByZXR1cm4gZGVmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50O1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAkc2NvcGUuY29udmVydFRvSHRtbD1mdW5jdGlvbihjb250ZW50KXtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICRzY2UudHJ1c3RBc0h0bWwoY29udGVudClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgXHJcbiAgICAgICAgJHNjb3BlLiR3YXRjaCgnY29sdW1uRGVmcycsIGZ1bmN0aW9uIChuZXdWYWx1ZSkgeyAvL1NPUlRJUkFOSkUgS09MT05BIC0gTkUgWk5BTSBEQSBMSSBVT1DEjEUgT1ZPIElNQSBJS0FLVk9HIFNNSVNMQS4uTUlTTElNIERBIE5FIC0gVE9ETyBPQlJJU0FUSVxyXG5cclxuICAgICAgICAgICAgaWYgKCRzY29wZS5zb3J0Q29sdW1uRGVmcyA9PSB1bmRlZmluZWQpICRzY29wZS5zb3J0Q29sdW1uRGVmcyA9ICBbXSAgICAgIFxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmNvbHVtbkRlZnMgPT0gdW5kZWZpbmVkKSAkc2NvcGUuY29sdW1uRGVmcyA9ICBbXSAgXHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiAkc2NvcGUuY29sdW1uRGVmcykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoaXRlbS5zb3J0ID09IFwiYXNjZW5kaW5nXCIgfHwgaXRlbS5zb3J0ID09IFwiZGVzY2VuZGluZ1wiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgLy9pZiBuZXcgY29sdW1uIGFscmVhZHkgZXhpc3RzIGluIHNvcnQgYXJyYXkgZG8gbm90aGluZyBvdGhlcndpc2UgcHVzaCBpbnRvIG5ldyBhcnJheVxyXG4gICAgICAgICAgICAgICAgICAgICAgIGlmICggISAkc2NvcGUuc29ydENvbHVtbkRlZnMuaW5jbHVkZXMoaXRlbSkgKSAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNvcnRDb2x1bW5EZWZzLnB1c2goaXRlbSkgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfSBcclxuXHJcbiAgICAgICAgICAgLy8gIC8vc29ydCBrb2xvbmEgXHJcbiAgICAgICAgICAgLy8gJHNjb3BlLnNvcnRDb2x1bW5EZWZzLnNvcnQoICAoYSxiKSA9PiAoYS5zb3J0T3JkZXIgPiBiLnNvcnRPcmRlcikgPyAxIDogKChiLnNvcnRPcmRlciA+IGEuc29ydE9yZGVyKSA/IC0xIDogMCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9LHRydWUpO1xyXG4gICAgICAgIFxyXG4gICAgICAvKiBcclxuICAgICAgICAkc2NvcGUuJHdhdGNoKCdzb3J0Q29sdW1uRGVmcycsIGZ1bmN0aW9uIChuZXdWYWx1ZSxvbGRWYWx1ZSkge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpIDwgJHNjb3BlLnNvcnRDb2x1bW5EZWZzLmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnNvcnRDb2x1bW5EZWZzW2ldLnNvcnQgPT0gXCJcIikgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zb3J0Q29sdW1uRGVmcy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc29ydENvbHVtbkRlZnNbaV1bJ3NvcnRPcmRlciddID0gaVxyXG4gICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfSwgdHJ1ZSk7Ki9cclxuICBcclxuXHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9LCAgLy9DVFJMXHJcbiAgICAgICAgICAgICAgIHNjb3BlOntcclxuICAgICAgICAgICAgICAgICAgICB0YWJsZURhdGE6Jz0/JyxcclxuICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzOic9PycsXHJcblx0XHRcdFx0XHRwYXJhbWV0ZXJzbGFuZzonPT8nLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOic9PycsXHJcbiAgICAgICAgICAgICAgICAgICAgY2VsbFBhZGRpbmc6Jz0/JyxcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5EZWZzOic9PycsXHJcbiAgICAgICAgICAgICAgICAgICAgdXNlUGFnaW5hdGlvbjonPT8nLFxyXG4gICAgICAgICAgICAgICAgICAgIGNsaWVudFNpZGU6Jz0/JyxcclxuICAgICAgICAgICAgICAgICAgICBpdGVtc09uUGFnZTonPScsXHJcbiAgICAgICAgICAgICAgICAgICAgYWxsb3dTb3J0Oic9JyxcclxuICAgICAgICAgICAgICAgICAgICByb3dTZWxlY3RlZENoYW5nZTonJicsXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0TXVsdGlwbGU6JyYnLFxyXG4gICAgICAgICAgICAgICAgICAgIGt0UmVmcmVzaERhdGE6JyZrdFJlZnJlc2hEYXRhJyxcclxuICAgICAgICAgICAgICAgICAgICBncmlkRGF0YTonJmdyaWREYXRhJyxcclxuICAgICAgICAgICAgICAgICAgICBzZXRGblJlZnJlc2hEYXRhOiAnJicsXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvd0FjdGlvbkJ1dHRvbnM6Jz0/JyxcclxuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzQWN0aW9uOicma3RQcm9jZXNzQWN0aW9uJyxcclxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsUGFnZTogJz0/JyxcclxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25EZWZpbml0aW9uOiAnPT8nLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0U21hcnRUYWJsZS5odG1sJyxcclxuICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgc2NvcGUuc2V0Rm5SZWZyZXNoRGF0YSh7dGhlRGlyRm46IHNjb3BlLnJlZnJlc2hEYXRhRXh0fSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2NvcGUuYWN0aW9uRGVmaW5pdGlvbj09PXVuZGVmaW5lZCkgc2NvcGUuYWN0aW9uRGVmaW5pdGlvbj1be2FjdGlvbklkOjEsTGFiZWw6J0VkaXQnfV1cclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgIH1cclxuICAgIH1cclxuICAgICAgICAgICAgIFxyXG4gICAgICBcclxufTtcbid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdFN0YXJ0VGFza1dpZGdldCAoJHJvb3RTY29wZSwkc3RhdGVQYXJhbXMsR3JpZHN0ZXJTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLFRhc2tEYXRhU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlLFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UsJHRpbWVvdXQsJGNvb2tpZXMpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFN0YXJ0VGFza1dpZGdldC5odG1sJyxcclxuICAgICAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24oVXNlclNlcnZpY2UsUmVzb3VyY2VzRGF0YVNlcnZpY2UsJHJvb3RTY29wZSxQcm9jZXNzaW5nU2VydmljZSwkdGltZW91dCwkc3RhdGVQYXJhbXMsJGNvb2tpZXMsV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZSwkc3RhdGUsVGFza0RhdGFTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlKXt9LFxyXG4gICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICAgICBzY29wZS50YXNrTGlzdFBhcmFtZXRlcnMgPSB7cGxhY2Vob2xkZXI6J1NlbGVjdCBvciBzZWFyY2ggdGFzay4uLicsbGFiZWw6c2NvcGUuZmQuTGFiZWwsbmFtZTondGFzaycsXHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbTpudWxsLGhpZGVMYWJlbDpmYWxzZSxjb2x1bW5TaXplTGFiZWw6J2NvbC1sZy00Jyxkcm9wZG93blNpemU6J2NvbC1sZy04JyxvblNlbGVjdEZ1bmN0aW9uOicnfTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBzY29wZS5pbml0aWF0ZUZvcm1Mb2FkZWQ9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBzY29wZS5pc1NhdmluZz1mYWxzZTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgc2NvcGUucHJldmlvdXNUYXNrPSRzdGF0ZVBhcmFtcy5wcmV2X3Rhc2tfZXhlY3V0ZV9pZDtcclxuICAgICAgICAgICAgICAgIHNjb3BlLnByZXZpb3VzVGFza091dGNvbWVJZD0kc3RhdGVQYXJhbXMub3V0Y29tZV9pZDtcclxuICAgICAgICAgICAgICAgIHNjb3BlLnByZXZpb3VzVGFza1BhY2thZ2U9JHN0YXRlUGFyYW1zLnByZXZfdGFza19wYWNrYWdlOyBcclxuICAgICAgICAgICAgICAgIHNjb3BlLmdyaWRzdGVyVHlwZT1cInRhc2tcIjtcclxuICAgICAgICAgICAgICAgIC8vc2NvcGUuZ3JpZHN0ZXJPcHRzID0gR3JpZHN0ZXJTZXJ2aWNlLmdldEdyaWRzdGVyT3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgICAgc2NvcGUuc2hvd1NlYXJjaEZpbHRlcnM9ZmFsc2U7ICAgICAgXHJcbiAgICAgICAgICAgICAgICBzY29wZS5kYXNoYm9hcmQgPSB7d2lkZ2V0cyA6IFtdfTtcclxuICAgICAgICAgICAgICAgIHNjb3BlLnRhc2tEZWZJZD1zY29wZS5mZC5SZWxhdGVkOyAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgc2NvcGUuZnJvbVN0YXRlTmFtZT0kc3RhdGVQYXJhbXMuZnJvbVN0YXRlTmFtZTtcclxuICAgICAgICAgICAgICAgIHNjb3BlLmZyb21TdGF0ZVBhcmFtcz0kc3RhdGVQYXJhbXMuZnJvbVN0YXRlUGFyYW1zO1xyXG4gICAgICAgICAgICAgICAgc2NvcGUuY29va2llRnJvbVN0YXRlTmFtZT0kY29va2llcy5nZXRPYmplY3QoJ2luaXRpYXRlVGFza0Zyb21TdGF0ZU5hbWUnKTtcclxuICAgICAgICAgICAgICAgIHNjb3BlLmNvb2tpZUZyb21TdGF0ZVBhcmFtcz0kY29va2llcy5nZXRPYmplY3QoJ2luaXRpYXRlVGFza0Zyb21TdGF0ZVBhcmFtcycpO1xyXG4gICAgICAgICAgICAgICAgc2NvcGUubm9CYWNrYnV0dG9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBzY29wZS5iYWNrQnRuRnJvbUNvb2tpZT1mYWxzZTtcclxuICAgICAgXHJcbiAgICAgIFxyXG4gIFxyXG4gICAgICAgICAgICAgICAgc2NvcGUucmVtb3ZlRmllbGQgPSBmdW5jdGlvbiAoaW5kZXgpe1xyXG5cdFx0XHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuXHRcdFx0XHRcdFx0IFxyXG4gICAgICAgICAgICAgICAgIHNjb3BlLmlucHV0QXJyYXkubGF5b3V0LnNwbGljZShpbmRleCwgMSk7XHJcblx0XHRcdFx0XHRcdCBcclxuICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIH0gICBcclxuXHJcbiBcclxuIFxyXG4gICAgXHJcbiAgICAgICAgICBzY29wZS5Jbml0aXRhdGVBbGxMaXN0ID0gZnVuY3Rpb24oKXtcclxuICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmQnlUeXBlKGxhbmcsJ3Rhc2snKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmdyaWRPcHRpb25zLmRhdGEgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICBcclxuICAgIC8vbmFwdW5pIGdyaWQgcyBkZWZpbmljaWphbWEgcmVzdXJzYVxyXG4gICAvLyAkc2NvcGUuSW5pdGl0YXRlQWxsTGlzdCgpO1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgIHNjb3BlLkluaXRpdGF0ZU15TGlzdCA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgIFxyXG4gICAgICAgICBcclxuICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeUxhbmdCeVR5cGVVc2VyKGxhbmcsJ3Rhc2snKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZ3JpZE9wdGlvbnMuZGF0YSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgXHJcbiAgICAgICAgICBcclxuICAgIH07ICAgXHJcbiAgICBcclxuICAgICAgc2NvcGUuVGFza1NlbGVjdGlvbkNoYW5nZWQgPSBmdW5jdGlvbihpdGVtLG1vZGVsKXtcclxuICAgICAgXHJcbiAgICAgICBzY29wZS50YXNrTGlzdFBhcmFtZXRlcnMuc2VsZWN0ZWRJdGVtPWl0ZW07XHJcbiAgICAgICBzY29wZS5mZC5SZWxhdGVkID0gc2NvcGUudGFza0xpc3RQYXJhbWV0ZXJzLnNlbGVjdGVkSXRlbS5pZDtcclxuICAgICAgIHNjb3BlLlNlbGVjdEFueVRhc2soKTtcclxuICBcclxuICAgICB9O1xyXG4gICAgIFxyXG4gICAgIHNjb3BlLlNlbGVjdEFueVRhc2sgPSBmdW5jdGlvbigpe1xyXG4gICAgICBcclxuICAgICAgaWYgKHNjb3BlLmZkLlNlYXJjaC5zdGFydEFueVRhc2spXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBzY29wZS50YXNrRGVmSWQ9c2NvcGUudGFza0xpc3RQYXJhbWV0ZXJzLnNlbGVjdGVkSXRlbS5pZDsgICBcclxuICAgICAgICAgIC8vICBzY29wZS5Jbml0aXRhdGVNeUxpc3QoKTsgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHNjb3BlLnRhc2tEZWZJZCA9IHNjb3BlLmZkLlJlbGF0ZWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICB9O1xyXG4gICAgICBcclxuICAgICBcclxuICAgICAgaWYgKHNjb3BlLmZyb21TdGF0ZU5hbWU9PXVuZGVmaW5lZCB8fCBzY29wZS5mcm9tU3RhdGVOYW1lPT1cIlwiKVxyXG4gICAgICB7XHJcbiAgICAgICAgICBpZiAoc2NvcGUuY29va2llRnJvbVN0YXRlTmFtZT09dW5kZWZpbmVkIHx8IHNjb3BlLmNvb2tpZUZyb21TdGF0ZU5hbWU9PVwiXCIpXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHNjb3BlLm5vQmFja0J1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBzY29wZS5mcm9tU3RhdGVOYW1lID0gIHNjb3BlLmNvb2tpZUZyb21TdGF0ZU5hbWU7XHJcbiAgICAgICAgICAgIHNjb3BlLmJhY2tCdG5Gcm9tQ29va2llID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICAkY29va2llcy5wdXRPYmplY3QoJ2luaXRpYXRlVGFza0Zyb21TdGF0ZU5hbWUnLHNjb3BlLmZyb21TdGF0ZU5hbWUpO1xyXG4gICAgICAgIFxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBpZiAoc2NvcGUuZnJvbVN0YXRlUGFyYW1zPT11bmRlZmluZWQpXHJcbiAgICAgIHtcclxuICAgICAgICAgIGlmIChzY29wZS5jb29raWVGcm9tU3RhdGVQYXJhbXMhPXVuZGVmaW5lZClcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBpZiAoc2NvcGUuYmFja0J0bkZyb21Db29raWUpXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgc2NvcGUuZnJvbVN0YXRlUGFyYW1zID0gIHNjb3BlLmNvb2tpZUZyb21TdGF0ZVBhcmFtcztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgfWVsc2UgaWYgKHNjb3BlLmNvb2tpZUZyb21TdGF0ZVBhcmFtcz09dW5kZWZpbmVkKVxyXG4gICAgICB7XHJcbiAgICAgICAgJGNvb2tpZXMucHV0T2JqZWN0KCdpbml0aWF0ZVRhc2tGcm9tU3RhdGVQYXJhbXMnLHNjb3BlLmZyb21TdGF0ZVBhcmFtcyk7XHJcbiAgICAgICAgXHJcbiAgICAgIH1lbHNlXHJcbiAgICAgIHtcclxuICAgICAgICAgIGlmIChzY29wZS5iYWNrQnRuRnJvbUNvb2tpZSlcclxuICAgICAgICAgIHtcclxuICAgICAgICBcclxuICAgICAgICAgICAgc2NvcGUuZnJvbVN0YXRlUGFyYW1zID0gIHNjb3BlLmNvb2tpZUZyb21TdGF0ZVBhcmFtcztcclxuICAgICAgICBcclxuICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgJGNvb2tpZXMucHV0T2JqZWN0KCdpbml0aWF0ZVRhc2tGcm9tU3RhdGVQYXJhbXMnLHNjb3BlLmZyb21TdGF0ZVBhcmFtcyk7ICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgICAgIGlmIChzY29wZS5wcmV2aW91c1Rhc2s9PXVuZGVmaW5lZCB8fCBzY29wZS5wcmV2aW91c1Rhc2s9PVwiXCIpXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgLy8gJHN0YXRlLmdvKCk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBzY29wZS5wcmV2aW91c1Rhc2sgPSAwO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgc2NvcGUucG90ZW50aWFsT3duZXJzID0ge307XHJcbiAgICAgIFxyXG5cclxuICAgICAgXHJcbiAgICAvL1dpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UuZGVSZWdpc3RlckFsbFdpZGdldHMoKTtcdC8vTWlnb3IgLSBjaXN0aW0gdGFza3dpZGdldFJlZ2lzdHJ5IFxyXG5cclxuICAgICAgc2NvcGUubG9jYWxUYXNrSWQ9V2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5yZWdpc3RlclRhc2soc2NvcGUudGFza0RlZklkKTtcclxuICAgICBcclxuICAgICBpZiAgKHNjb3BlLmZkLmxvY2FsVmFycz09PXVuZGVmaW5lZCkgIHNjb3BlLmZkLmxvY2FsVmFycz17fSBcclxuICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnRhc2tEZWZpbml0aW9uID17fTtcclxuICAgICAgc2NvcGUucG90ZW50aWFsT3duZXJzLnBvdGVudGlhbE93bmVyc1VzZXJzID0gW107XHJcbiAgICAgIHNjb3BlLnBvdGVudGlhbE93bmVycy5wb3RlbnRpYWxPd25lcnNHcm91cHMgPSBbXTtcclxuICAgICAgXHJcbiAgICAgICAgIHNjb3BlLkZvcm1Mb2NrVW5sb2NrID0gZnVuY3Rpb24oKVxyXG4gICAgICB7XHJcbiAgICAgICAgc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybUxvY2tlZD0hc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybUxvY2tlZDtcclxuXHJcbiAgICAgXHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICBzY29wZS5QcmVJbml0aWF0ZVRhc2sgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgc2NvcGUudGFza0luaXRpYXRlSWQ9MDtcclxuICAgICAgICAgIHNjb3BlLnRhc2tFeGVjdXRlSWQ9MDtcclxuICAgICAgICAgIFxyXG4gICAgICAgICBcclxuICAgICAgICBUYXNrRGF0YVNlcnZpY2UucHJlSW5pdGlhdGVUYXNrKHNjb3BlLnRhc2tEZWZJZCxzY29wZS5wcmV2aW91c1Rhc2ssbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnRhc2tEZWZpbml0aW9uID0gZGF0YS5kYXRhLnRhc2tkZWZbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnRhc2tEZWZpbml0aW9uLnByZXZfdGFza19pZCA9IHNjb3BlLnByZXZpb3VzVGFzaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMudGFza0RlZmluaXRpb24uZm9ybV90eXBlPVwiaVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy50YXNrRGVmaW5pdGlvbi5zb3VyY2VfdHlwZSA9ICRzdGF0ZVBhcmFtcy5zcmNfdHlwZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMudGFza0RlZmluaXRpb24udGFza0Zvcm1Mb2FkZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQubG9jYWxWYXJzLnRhc2tEZWZpbml0aW9uLkF1dG9Jbml0aWF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLkF1dG9Jbml0aWF0ZVRhc2soKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5yZXNvdXJjZURlZmluaXRpb249ZGF0YS5kYXRhLnJlc291cmNlRGVmaW5pdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0ID0gZGF0YS5kYXRhLndpZGdldHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zID0ge2Zvcm1Mb2NrZWQ6dHJ1ZSxmb3JtVmlld1R5cGU6Mn07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtzY29wZS5pbml0aWF0ZUZvcm1Mb2FkZWQgPSB0cnVlO30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICBzY29wZS5DYW5jZWxDbGlja2VkID0gZnVuY3Rpb24oKXtcclxuICAgICAgICBcclxuICAgICAgICAkc3RhdGUuZ28oIHNjb3BlLmZyb21TdGF0ZU5hbWUsIHNjb3BlLmZyb21TdGF0ZVBhcmFtcyk7XHJcbiAgICAgIFxyXG4gICAgICB9O1xyXG4gICAgICBcclxuICAgICAgIHNjb3BlLkF1dG9Jbml0aWF0ZVRhc2sgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgIC8vICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgIHZhciBwYXJlbnREYXRhc2V0PXNjb3BlLmdldFByZXZpb3VzVGFza1dpZGdldCgpO1xyXG4gICAgICAgIGlmIChzY29wZS5wcmV2aW91c1Rhc2tPdXRjb21lSWQ9PXVuZGVmaW5lZCkgc2NvcGUucHJldmlvdXNUYXNrT3V0Y29tZUlkPTA7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5pbml0aWF0ZVRhc2soc2NvcGUudGFza0RlZklkLHNjb3BlLnByZXZpb3VzVGFzayxzY29wZS5wcmV2aW91c1Rhc2tPdXRjb21lSWQsW10sc2NvcGUucG90ZW50aWFsT3duZXJzLHBhcmVudERhdGFzZXRbJ2RhdGFzZXRJZCddLHBhcmVudERhdGFzZXRbJ2RhdGFzZXRSZWNvcmRJZCddLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUudGFza19pbml0aWF0ZV9pZCA9IGRhdGEuZGF0YS50YXNrX2luaXRpYXRlX2lkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS50YXNrX2V4ZWN1dGVfaWQgPSBkYXRhLmRhdGEudGFza19leGVjdXRlX2lkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRzdGF0ZS5nbygnYXBwLm5hdmJhci50YXNrcy5leGVjdXRlJyx7aWQ6IHNjb3BlLnRhc2tEZWZJZCx0YXNrX2luaXRpYXRlX2lkOnNjb3BlLnRhc2tfaW5pdGlhdGVfaWQsdGFza19leGVjdXRlX2lkOnNjb3BlLnRhc2tfZXhlY3V0ZV9pZCxmcm9tU3RhdGVOYW1lOnNjb3BlLmZyb21TdGF0ZU5hbWUsZnJvbVN0YXRlUGFyYW1zOnNjb3BlLmZyb21TdGF0ZVBhcmFtcyxwcmV2X3Rhc2tfcGFja2FnZTpzY29wZS5wcmV2aW91c1Rhc2tQYWNrYWdlLHByZXY6c2NvcGUudGFza0V4ZWN1dGVJZH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgLy8gfVxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAgc2NvcGUuSW5pdGlhdGVUYXNrID0gZnVuY3Rpb24oZm9ybSl7XHJcbiAgICAgICAgdmFyIGYgPSBzY29wZS5mb3JtYTtcclxuICAgICAgICBpZiAoZm9ybS4kc3VibWl0dGVkKSBzY29wZS5zZXRTdWJtaXR0ZWQoZm9ybSk7XHJcbiAgICAgICAgaWYgKGZvcm0uJHZhbGlkKSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvL3ZhciBpbml0aWF0ZURhdGE9e307XHJcbiAgICAgICAgICAgICRyb290U2NvcGUuJGJyb2FkY2FzdCgnUHJvY2Vzc1Rhc2tXaWRnZXRzJyx7fSk7IC8vc3ZpIHdpZGdldGkgc2x1c2FqdSBvdmFqIGV2ZW50XHJcbiAgICAgICAgICAgIHNjb3BlLmlzU2F2aW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgIGlmIChzY29wZS5wcmV2aW91c1Rhc2tPdXRjb21lSWQ9PXVuZGVmaW5lZCkgc2NvcGUucHJldmlvdXNUYXNrT3V0Y29tZUlkPTA7XHJcbiAgICAgICAgICAgIC8vYWtvIGplIHByZXRob2RuaSB0YXNrIGltYW8gbGlzdHUgcG92dWNpIFdpZGdldERhdGFcclxuICAgICAgICAgICAgdmFyIHBhcmVudERhdGFzZXQ9c2NvcGUuZ2V0UHJldmlvdXNUYXNrV2lkZ2V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBUYXNrRGF0YVNlcnZpY2UuaW5pdGlhdGVUYXNrKHNjb3BlLnRhc2tEZWZJZCxzY29wZS5wcmV2aW91c1Rhc2ssc2NvcGUucHJldmlvdXNUYXNrT3V0Y29tZUlkLHNjb3BlLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCxzY29wZS5wb3RlbnRpYWxPd25lcnMscGFyZW50RGF0YXNldFsnZGF0YXNldElkJ10scGFyZW50RGF0YXNldFsnZGF0YXNldFJlY29yZElkJ10sbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblx0XHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm9vdFNjb3BlLiRicm9hZGNhc3QoJ0luaXRpYXRlVGFza1Bvc3RQcm9jZXNzJyxkYXRhLmRhdGEucmV0X3ZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vb3ZvIHRyZWJhIHN0YXZpdGkgdSBldmVudCBJbml0aWF0ZVRhc2tQb3N0UHJvY2Vzc0ZpbmlzaGVkICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5HcmlkU3RhdGUuY2FuY2VsQnRuSWNvbiA9IFwiZmEgZmEtYXJyb3ctY2lyY2xlLWxlZnRcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLkdyaWRTdGF0ZS5jYW5jZWxCdG5UeHQgPSBcIkdvIGJhY2tcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnRhc2tJbml0aWF0ZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAkc2NvcGUuaXNTYXZpbmcgPSBmYWxzZTsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuaXNTYXZpbmcgPSBmYWxzZTsgIFxyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHJcbiAgICAgICAgICB9IC8vIGlmIChpc1ZhbGlkKVxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoXCJQbGVhc2UgZW50ZXIgcmVxdWlyZWQgZGF0YVwiLCd3YXJuaW5nJyk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICB9O1xyXG5cclxuICAgIHNjb3BlLmdldFByZXZpb3VzVGFza1dpZGdldCAgPSBmdW5jdGlvbigpXHJcbiAgICB7XHJcbiAgICAgIHZhciBwVGFza0RhdGEgPSBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLmdldFByZXZUYXNrRGF0YShzY29wZS5mZC5sb2NhbFZhcnMudGFza0RlZmluaXRpb24ucHJldl90YXNrX2lkKTtcclxuICAgICAgICAgICAgdmFyIGRhdGFzZXRJZD0wLGRhdGFzZXRSZWNvcmRJZD0wO1xyXG4gICAgICAgICAgICBpZiAocFRhc2tEYXRhLkRFSSE9dW5kZWZpbmVkICYmIHBUYXNrRGF0YS5ERUkhPW51bGwpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8cFRhc2tEYXRhLkRFSS5sZW5ndGg7aSsrKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgaWYgKHBUYXNrRGF0YS5ERUlbaV0ubmFtZT09XCJyZXNvdXJjZUxpbmtcIilcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpZiAocFRhc2tEYXRhLkRFSVtpXS52YWx1ZSE9dW5kZWZpbmVkICYmIHBUYXNrRGF0YS5ERUlbaV0udmFsdWUhPW51bGwpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIGZvciAodmFyIGo9MDtqPHBUYXNrRGF0YS5ERUlbaV0udmFsdWUubGVuZ3RoO2orKylcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgaWYgKHBUYXNrRGF0YS5ERUlbaV0udmFsdWVbal0ubmFtZT09XCJyZXNvdXJjZUlkXCIgJiYgcFRhc2tEYXRhLkRFSVtpXS52YWx1ZVtqXS52YWx1ZSE9dW5kZWZpbmVkKSBkYXRhc2V0SWQ9cFRhc2tEYXRhLkRFSVtpXS52YWx1ZVtqXS52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgIGlmIChwVGFza0RhdGEuREVJW2ldLnZhbHVlW2pdLm5hbWU9PVwicmVzb3VyY2VSZWNvcmRJZFwiICYmIHBUYXNrRGF0YS5ERUlbaV0udmFsdWVbal0udmFsdWUhPXVuZGVmaW5lZCkgZGF0YXNldFJlY29yZElkPXBUYXNrRGF0YS5ERUlbaV0udmFsdWVbal0udmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChkYXRhc2V0SWQ9PXVuZGVmaW5lZCB8fCBkYXRhc2V0SWQ9PVwiXCIpIGRhdGFzZXRJZD0wO1xyXG4gICAgICAgICAgICAgIGlmIChkYXRhc2V0UmVjb3JkSWQ9PXVuZGVmaW5lZCB8fCBkYXRhc2V0UmVjb3JkSWQ9PVwiXCIpIGRhdGFzZXRSZWNvcmRJZD0wO1xyXG4gICAgICAgICAgICB9XHJcbiAgICByZXR1cm4geydkYXRhc2V0SWQnOmRhdGFzZXRJZCwnZGF0YXNldFJlY29yZElkJzpkYXRhc2V0UmVjb3JkSWR9O1xyXG4gICAgfTtcclxuICAgICAgICBzY29wZS5zZXRTdWJtaXR0ZWQgPSBmdW5jdGlvbiAoZm9ybSkge1xyXG4gICAgICAgICAgZm9ybS4kc2V0U3VibWl0dGVkKCk7XHJcbiAgICAgICAgICBhbmd1bGFyLmZvckVhY2goZm9ybSwgZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgICAgICAgICBpZihpdGVtICYmIGl0ZW0uJCRwYXJlbnRGb3JtID09PSBmb3JtICYmIGl0ZW0uJHNldFN1Ym1pdHRlZCkge1xyXG4gICAgICAgICAgICAgIHNjb3BlLnNldFN1Ym1pdHRlZChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBcclxuICAgICAgLy9nZXQgZm9ybSAgIFxyXG4gICAgXHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUobGFuZywndGFzaycpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS50YXNrTGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9IHNjb3BlLnRhc2tMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKHNjb3BlLmZkLlJlbGF0ZWQpO1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3M+PTApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUudGFza0xpc3RQYXJhbWV0ZXJzLnNlbGVjdGVkSXRlbSA9ICBzY29wZS50YXNrTGlzdFtwb3NdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgXHJcbiAgICAgIGlmIChzY29wZS5mZC5TZWFyY2g9PT11bmRlZmluZWQgfHwgc2NvcGUuZmQuU2VhcmNoPT09bnVsbCkgICAgICAgICBzY29wZS5mZC5TZWFyY2ggPSB7c3RhcnRBbnlUYXNrOmZhbHNlfTsgIFxyXG4gICAgICBpZiAoc2NvcGUudGFza0RlZklkIT11bmRlZmluZWQgJiYgc2NvcGUudGFza0RlZklkPjAgJiYgIXNjb3BlLmZkLlNlYXJjaC5zdGFydEFueVRhc2spIHNjb3BlLlByZUluaXRpYXRlVGFzaygpO1xyXG4gICAgICBlbHNlIGlmIChzY29wZS5mZC5TZWFyY2guc3RhcnRBbnlUYXNrKSAgJHJvb3RTY29wZS4kYnJvYWRjYXN0KCdQYWdlTG9hZGVkJyx7fSk7ICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICB9ICAgICAgICAgICAgIFxyXG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0U3R5bGVBdHRyaWJ1dGUgKCkge1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxyXG4gICAgICAgICAgICBzY29wZTp7XHJcbiAgICAgICAgICAgICAgZmQ6ICc9JyxcclxuICAgICAgICAgICAgICBzdHlsZVR5cGU6Jz0nLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICBcclxuICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG5cdFx0XHRcdFxyXG5cdFx0XHQgICAgc2NvcGUuY29sTGVuZ3RoPVtdO1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8MjQ7aSsrKSBzY29wZS5jb2xMZW5ndGgucHVzaCgnY29sLWxnLScrKGkrMSkpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5QYXJhbWV0ZXJzPT11bmRlZmluZWQpIHNjb3BlLmZkLlBhcmFtZXRlcnM9e307XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHNjb3BlLiR3YXRjaChmdW5jdGlvbiAoKSB7IHJldHVybiBlbGVtWzBdLnN0eWxlLndpZHRofSwgIHdpZHRoQ2hhbmdlZENhbGxCYWNrLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIHNjb3BlLiR3YXRjaChmdW5jdGlvbiAoKSB7IHJldHVybiBlbGVtWzBdLnN0eWxlLmhlaWdodH0sICBoZWlnaHRDaGFuZ2VkQ2FsbEJhY2ssIHRydWUpO1xyXG5cclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHdpZHRoQ2hhbmdlZENhbGxCYWNrKG5ld1ZhbHVlLCBvbGRWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgJiYgc2NvcGUuZmQuUGFyYW1ldGVycyE9dW5kZWZpbmVkICYmIHNjb3BlLmZkLlBhcmFtZXRlcnM/LkN1c3RvbVNpemUpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuc3R5bGVUeXBlPT1cImxhYmVsXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLlBhcmFtZXRlcnMuTGFiZWxTdHlsZT09dW5kZWZpbmVkKSBzY29wZS5mZC5QYXJhbWV0ZXJzLkxhYmVsU3R5bGUgPSB7fTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuUGFyYW1ldGVycy5MYWJlbFN0eWxlLldpZHRoID0gbmV3VmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5zdHlsZVR5cGU9PVwiZWxlbWVudFwiKSAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5QYXJhbWV0ZXJzLkVsZW1lbnRTdHlsZT09dW5kZWZpbmVkKSBzY29wZS5mZC5QYXJhbWV0ZXJzLkVsZW1lbnRTdHlsZSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5QYXJhbWV0ZXJzLkVsZW1lbnRTdHlsZS5XaWR0aCA9IG5ld1ZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICBmdW5jdGlvbiBoZWlnaHRDaGFuZ2VkQ2FsbEJhY2sobmV3VmFsdWUsIG9sZFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSAmJiBzY29wZS5mZC5QYXJhbWV0ZXJzIT11bmRlZmluZWQgJiYgc2NvcGUuZmQuUGFyYW1ldGVycz8uQ3VzdG9tU2l6ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZyBpbnRlcmVzdGluZyBoZXJlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLnN0eWxlVHlwZT09XCJsYWJlbFwiKSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuUGFyYW1ldGVycy5MYWJlbFN0eWxlPT11bmRlZmluZWQpIHNjb3BlLmZkLlBhcmFtZXRlcnMuTGFiZWxTdHlsZSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5QYXJhbWV0ZXJzLkxhYmVsU3R5bGUuSGVpZ2h0ID0gbmV3VmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5zdHlsZVR5cGU9PVwiZWxlbWVudFwiKSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuUGFyYW1ldGVycy5FbGVtZW50U3R5bGU9PXVuZGVmaW5lZCkgc2NvcGUuZmQuUGFyYW1ldGVycy5FbGVtZW50U3R5bGUgPSB7fTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuUGFyYW1ldGVycy5FbGVtZW50U3R5bGUuSGVpZ2h0ID0gbmV3VmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdC8vTUlHT1IgTkVXXHJcbiAgICAgICAgICAgICAgICBzY29wZS4kd2F0Y2goJ2ZkLkxhYmVsTGVuZ3RoJyxmdW5jdGlvbihuZXdWYWx1ZSxvbGRWYWx1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlIT1vbGRWYWx1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmdyaWRDbGFzc0xhYmVsID0gc2NvcGUuY29sTGVuZ3RoW3Njb3BlLmZkLkxhYmVsTGVuZ3RoLTFdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICBzY29wZS4kd2F0Y2goJ2ZkLlZhbHVlTGVuZ3RoJyxmdW5jdGlvbihuZXdWYWx1ZSxvbGRWYWx1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlIT1vbGRWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5ncmlkQ2xhc3NFbGVtZW50ID0gc2NvcGUuY29sTGVuZ3RoW3Njb3BlLmZkLlZhbHVlTGVuZ3RoLTFdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHNjb3BlLmZkLnByb2Nlc3Nfc2l6ZV9zdHlsZSA9IGZ1bmN0aW9uKG5ld1ZhbHVlKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN1c3RvbVN0eWxlTGFiZWwgPSBzY29wZS5mZC5QYXJhbWV0ZXJzLmN1c3RvbUNzc0xhYmVsK1wiO3RleHQtYWxpZ246XCIrc2NvcGUuZmQuUGFyYW1ldGVycy5MYWJlbEFsaWduK1wiICFpbXBvcnRhbnQ7Zm9udC1zaXplOlwiK3Njb3BlLmZkLlBhcmFtZXRlcnMuRm9udFNpemUrc2NvcGUuZmQuUGFyYW1ldGVycy5Gb250VW5pdHMrXCI7Y29sb3I6XCIrc2NvcGUuZmQuUGFyYW1ldGVycy5Gb250Q29sb3IrXCI7XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY3VzdG9tU3R5bGVFbGVtZW50ID0gc2NvcGUuZmQuUGFyYW1ldGVycy5jdXN0b21Dc3NFbGVtZW50K1wiO2ZvbnQtc2l6ZTpcIitzY29wZS5mZC5QYXJhbWV0ZXJzLlZhbHVlRm9udFNpemUrc2NvcGUuZmQuUGFyYW1ldGVycy5WYWx1ZUZvbnRVbml0cytcIjtjb2xvcjpcIitzY29wZS5mZC5QYXJhbWV0ZXJzLlZhbHVlRm9udENvbG9yK1wiO1wiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sYWJlbEFsaWduID0gXCJ0ZXh0LWFsaWduOlwiK3Njb3BlLmZkLlBhcmFtZXRlcnMuTGFiZWxBbGlnbitcIiAhaW1wb3J0YW50XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAgKHNjb3BlLmZkLlBhcmFtZXRlcnMuRm9udEJvbGQpIGN1c3RvbVN0eWxlTGFiZWwgPSBjdXN0b21TdHlsZUxhYmVsKyBcImZvbnQtd2VpZ2h0OiBib2xkO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAgKHNjb3BlLmZkLlBhcmFtZXRlcnMuVmFsdWVGb250Qm9sZCkgY3VzdG9tU3R5bGVFbGVtZW50ID0gY3VzdG9tU3R5bGVFbGVtZW50KyBcImZvbnQtd2VpZ2h0OiBib2xkO1wiXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlPy5DdXN0b21TaXplKSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmN1c3RvbVN0eWxlTGFiZWw9IGN1c3RvbVN0eWxlTGFiZWwrXCI7d2lkdGg6XCIrc2NvcGUuZmQuUGFyYW1ldGVycy5MYWJlbFN0eWxlPy5XaWR0aCtcIjtoZWlnaHQ6XCIrc2NvcGUuZmQuUGFyYW1ldGVycy5MYWJlbFN0eWxlPy5IZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuY3VzdG9tU3R5bGVFbGVtZW50ID0gY3VzdG9tU3R5bGVFbGVtZW50K1wicmVzaXplOmJvdGg7d2lkdGg6XCIrc2NvcGUuZmQuUGFyYW1ldGVycy5FbGVtZW50U3R5bGU/LldpZHRoK1wiO2hlaWdodDpcIitzY29wZS5mZC5QYXJhbWV0ZXJzLkVsZW1lbnRTdHlsZT8uSGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmdyaWRDbGFzc0xhYmVsPVwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuZ3JpZENsYXNzRWxlbWVudD1cIlwiOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuY3VzdG9tU3R5bGVMYWJlbD1jdXN0b21TdHlsZUxhYmVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmN1c3RvbVN0eWxlRWxlbWVudD1jdXN0b21TdHlsZUVsZW1lbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuZ3JpZENsYXNzTGFiZWwgPSBzY29wZS5jb2xMZW5ndGhbc2NvcGUuZmQuTGFiZWxMZW5ndGgtMV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuZ3JpZENsYXNzRWxlbWVudCA9IHNjb3BlLmNvbExlbmd0aFtzY29wZS5mZC5WYWx1ZUxlbmd0aC0xXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIHNjb3BlLiR3YXRjaCgnZmQuUGFyYW1ldGVycycsZnVuY3Rpb24obmV3VmFsdWUsb2xkVmFsdWUpe1xyXG5cdFx0XHRcdFx0ICBpZiAobmV3VmFsdWUhPW9sZFZhbHVlICYmIHNjb3BlLmZkLnByb2Nlc3Nfc2l6ZV9zdHlsZSkgIHtcclxuXHRcdFx0XHRcdFx0c2NvcGUuZmQucHJvY2Vzc19zaXplX3N0eWxlKG5ld1ZhbHVlKTtcclxuXHRcdFx0XHRcdCAgfVxyXG4gICAgICAgICAgICAgICAgIH0sdHJ1ZSk7XHJcblx0XHRcdFx0IFxyXG4gICAgICAgICAgICAgICBzY29wZS5mZC5wcm9jZXNzX3NpemVfc3R5bGUoc2NvcGUuZmQuUGFyYW1ldGVycyk7XHJcblxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gIFxyXG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0VGFicyAoKSB7XHJcbiAgICAgICBcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXHJcblx0XHRjb250cm9sbGVyOiBmdW5jdGlvbiAoJHNjb3BlLEdyaWRzdGVyU2VydmljZSxVdGlsaXR5U2VydmljZSwkdGVtcGxhdGVDYWNoZSwkY29tcGlsZSwkZWxlbWVudCkge1xyXG5cclxuICAgICAgICAgICAgIFxyXG4gICAgICAgLy9pZiAoJHNjb3BlLmZkLmxheW91dD09dW5kZWZpbmVkIHx8ICRzY29wZS5mZC5sYXlvdXQubGVuZ3RoPT0wKSAgICRzY29wZS5mZC5sYXlvdXQ9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZUV4dGVuZGVkLkRlZmF1bHRGb3JtLy8gJHNjb3BlLmZkLmxheW91dD1bXVxyXG4gICAgICAgJHNjb3BlLmZkLnNlbGVjdGVkVGFiID0gMFxyXG4gICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlXHJcbiAgICAgICAvLyRzY29wZS5mZC5jb3VudEFjdGl2ZT0xXHJcblxyXG4gICAgICAgJHNjb3BlLnBhcmVudCA9ICRzY29wZS5pbnB1dEFycmF5XHJcbiAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycyA9PSB1bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnM9IHt9IFxyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucGFyZW50ID0gJHNjb3BlLmlucHV0QXJyYXlcclxuICAgICAgICAgXHJcblxyXG4gICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmNvbmZpcm1BbmREZWxldGVFbGVtZW50ID0gZnVuY3Rpb24gKHllc25vICwgZmR2YWx1ZSkgLy8gZGVsZXRlIENvbHVtblxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdzcnZjX3NldENvbmZpcm1EZWxldGVFbGVtZW50KHllc25vKVxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZ3NydmNfZGVsZXRlRWxlbWVudChmZHZhbHVlKVxyXG4gICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nc3J2Y19jaGFuZ2VDb25maXJtRGVsZXRlRWxlbWVudCA9ICBHcmlkc3RlclNlcnZpY2UuY2hhbmdlQ29uZmlybURlbGV0ZUVsZW1lbnRcclxuXHQgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nc3J2Y19zZXRDb25maXJtRGVsZXRlRWxlbWVudCA9ICBHcmlkc3RlclNlcnZpY2Uuc2V0Q29uZmlybURlbGV0ZUVsZW1lbnRcclxuXHQgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nc3J2Y19nZXRDb25maXJtRGVsZXRlRWxlbWVudCA9ICBHcmlkc3RlclNlcnZpY2UuZ2V0Q29uZmlybURlbGV0ZUVsZW1lbnRcclxuXHQgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nc3J2Y19kZWxldGVFbGVtZW50ID0gR3JpZHN0ZXJTZXJ2aWNlLmRlbGV0ZUVsZW1lbnRcclxuXHRcdFxyXG5cdFx0XHJcblx0XHQkc2NvcGUuZmQubG9jYWxWYXJzLmNvbmZpcm1EZWxldGVUYWIgPSBmdW5jdGlvbiAoKSB7XHJcblx0XHRcdCAgaWYgKCRzY29wZS5mZC5sYXlvdXQubGVuZ3RoID4gMSkgLy8gXHRkbyBub3QgZGVsZXRlIGxhc3QgdGFiISBcclxuXHRcdFx0XHRcdCRzY29wZS5mZC5sYXlvdXRbJHNjb3BlLmZkLnNlbGVjdGVkVGFiXS5TdGF0dXM9J0RlbGV0ZWQnO1xyXG5cdFx0XHRcdFx0Ly8kc2NvcGUuZmQubGF5b3V0LnNwbGljZSgkc2NvcGUuZmQuc2VsZWN0ZWRUYWIsMSlcclxuXHRcdFx0ICAkc2NvcGUuZmQubG9jYWxWYXJzLmNsaWNrZWRPbkRlbGV0ZVRhYj1mYWxzZVxyXG5cdFx0fVxyXG5cdFx0XHJcbiAgICAgIFxyXG4gICAgICAgXHJcbiAgICAgICAkc2NvcGUuYWRkTmV3VGFiID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBsZXQgbmV3VGFiID0gYW5ndWxhci5jb3B5KCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VFeHRlbmRlZC5EZWZhdWx0Rm9ybVswXSlcclxuICAgICAgICAgIG5ld1RhYi5VdWlkUmVmID0gVXRpbGl0eVNlcnZpY2UudXVpZHY0KClcclxuICAgICAgICAgICRzY29wZS5mZC5sYXlvdXQucHVzaChuZXdUYWIpXHJcbiAgICAgICB9XHJcbiAgICAgICBcclxuICAgICAgIFxyXG4gICAgICAkc2NvcGUuc2hvd1Byb3BlcnRpZXM9ZnVuY3Rpb24oaW5kZXgsc2hvd1Byb3BlcnRpZXNSaWdodClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICAgICRzY29wZS5mZC5zZWxlY3RlZFRhYj1pbmRleFxyXG4gICAgICAgICAgIGlmIChzaG93UHJvcGVydGllc1JpZ2h0KSAkc2NvcGUuZ3NydmMuc2V0RmllbGRQcm9wZXJ0aWVzKCRzY29wZS5mZCwgJHNjb3BlLmZkLmxvY2FsVmFycy5wYXJlbnQgKTtcclxuICAgICAgXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICBsZXQgdGVtcGxhdGU7XHJcbiAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb24pIHRlbXBsYXRlID0gJHRlbXBsYXRlQ2FjaGUuZ2V0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhYnMuaHRtbCcpO1xyXG4gICAgICAgICAgZWxzZSB0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZUNhY2hlLmdldCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYWJzRXhlLmh0bWwnKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgJGVsZW1lbnQuYXBwZW5kKCRjb21waWxlKHRlbXBsYXRlKSgkc2NvcGUpKTsgXHJcblxyXG5cclxuICAgIH0sXHJcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxufTtcbid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdFRhc2tBZGRSZXNvdXJjZSAoJHRpbWVvdXQsVXRpbGl0eVNlcnZpY2UpIHtcclxuICAgXHJcbiAgIHZhciBjb250cm9sbGVyID0gWyckc2NvcGUnLCAnJHVpYk1vZGFsJywgJyRzdGF0ZScsJyRzdGF0ZVBhcmFtcycsJ2RyYWd1bGFyU2VydmljZScsJyR0aW1lb3V0JywnQ29kZXNTZXJ2aWNlJywnUmVzb3VyY2VzRGF0YVNlcnZpY2UnLCdVdGlsaXR5U2VydmljZScsJyRyb290U2NvcGUnLCdQcm9jZXNzaW5nU2VydmljZScsJ01lc3NhZ2luZ1NlcnZpY2UnLCdHcmlkc3RlclNlcnZpY2UnLCdUYXNrRGF0YVNlcnZpY2UnLCdXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlJywnQ09ERVNfQ09OU1QnLCckdGVtcGxhdGVDYWNoZScsJyRjb21waWxlJywnJGVsZW1lbnQnLFxyXG4gICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoJHNjb3BlLCR1aWJNb2RhbCwkc3RhdGUsJHN0YXRlUGFyYW1zLGRyYWd1bGFyU2VydmljZSwkdGltZW91dCxDb2Rlc1NlcnZpY2UsUmVzb3VyY2VzRGF0YVNlcnZpY2UsVXRpbGl0eVNlcnZpY2UsJHJvb3RTY29wZSxQcm9jZXNzaW5nU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSxUYXNrRGF0YVNlcnZpY2UsV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZSxDT0RFU19DT05TVCwkdGVtcGxhdGVDYWNoZSwkY29tcGlsZSwkZWxlbWVudCkge1xyXG4gICAgICBcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycyA9IHt9O1xyXG4gICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlYXJjaEZvcm1Eb3dubG9hZGVkID0gZmFsc2U7XHJcblxyXG4gICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNyY190eXBlX3RleHQ9Q09ERVNfQ09OU1QuX1BPUFVMQVRFX1RZUEVfO1xyXG4gICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmFuaW1hdGlvbnNFbmFibGVkID0gdHJ1ZTtcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRUeXBlID0gMTtcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5oaWRlUG9wdWxhdGVNZXRob2QgPSB0cnVlO1xyXG4gICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPTA7ICAgICAgXHJcbiAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybVBhcmFtcz17Zm9ybVZpZXdUeXBlOjEsc2hvd0dyaWROYXZpZ2F0aW9uOmZhbHNlfTtcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93TWVudSA9IGZhbHNlXHJcbiAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0UmVhZHk9ZmFsc2VcclxuICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlXHJcbiAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuU2hvd0FkdmFuY2VkUHJvcGVydGllcyA9IHRydWVcclxuXHJcblx0ICAkc2NvcGUuZ3NydmMucGFyZW50UmVzb3VyY2VbJHNjb3BlLmZkLlV1aWRSZWZdID0gJHNjb3BlLmZkXHJcblxyXG4gICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnM9PT1udWxsIHx8ICRzY29wZS5mZC5QYXJhbWV0ZXJzPT09dW5kZWZpbmVkKSAkc2NvcGUuZmQuUGFyYW1ldGVycyA9IHt9XHJcbiAgICAgIGlmICgkc2NvcGUuZm9ybURhdGE9PT11bmRlZmluZWQpICAkc2NvcGUuZm9ybURhdGE9e31cclxuICAgICAgJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5VdWlkUmVmXT0gW3t9XVxyXG4gICAgICBpZiAoJHNjb3BlLmZkLk11bHRpbGluZSkgJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5VdWlkUmVmXT0gW1t7fV1dXHJcbiAgICAgICRzY29wZS5mZC5QYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlPSdkYXRhc2V0J1xyXG5cclxuICAgICAgJHNjb3BlLmZkLlBhcmFtZXRlcnMuU2hvd0FkdmFuY2VkUHJvcGVydGllcyA9IHRydWVcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlY29yZHM9e31cclxuXHJcbiAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMudG9nZ2xlRHJvcGRvd24gPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2hvd01lbnUgPSAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93TWVudSA/IGZhbHNlOiB0cnVlIFxyXG4gICAgICAgfVxyXG4gICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAkc2NvcGUuZm9ybVBhcmFtc1BhcmVudD0kc2NvcGUuZm9ybVBhcmFtcztcclxuICAgICAgXHJcbiAgICAgIGlmICgkc2NvcGUuZmQhPXVuZGVmaW5lZCl7XHJcbiAgICAgICAgICAgJHNjb3BlLmZkLlBvcHVsYXRlTWV0aG9kID0gXCJNXCI7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgJHNjb3BlLmZkPXtQb3B1bGF0ZU1ldGhvZCA6IFwiTVwifTtcclxuICAgICAgfVxyXG5cdCAgXHJcbiAgICAgIGlmICh0eXBlb2YoJHNjb3BlLmZkLkRhdGFzZXRNYXBwaW5nKT09J3N0cmluZycpICRzY29wZS5mZC5EYXRhc2V0TWFwcGluZz1bXTtcclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdyaWRzdGVyVHlwZT1cImRhdGFzZXRcIjtcclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlVHlwZT1cImRhdGFzZXRcIjtcclxuICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQgPSB7XHJcbiAgXHRcdFx0XHRpZDogJzEnLFxyXG4gIFx0XHRcdFx0bmFtZTogJ0hvbWUnLFxyXG4gIFx0XHRcdFx0d2lkZ2V0czoge31cclxuXHRcdH0gO1xyXG4gICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLnRhc2tJZD0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlJlc291cmNlRGVmVWlkO1xyXG4gICAgICAgIGlmICgkc2NvcGUudGFza0lkPT11bmRlZmluZWQpICRzY29wZS50YXNrSWQ9XCIwXCI7XHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy50YXNrSWQ9JHNjb3BlLnRhc2tJZDtcclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlSWQ9JHNjb3BlLnRhc2tJZDtcclxuICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZUlkPT1cIjBcIikgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZUlkPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uaWQgIFxyXG5cclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlRGVmaW5pdGlvbiA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb25cclxuICAgICAgICAkc2NvcGUuZmQuUGFyZW50RGF0YXNldERlZklkPSRzY29wZS5mZC5SZWxhdGVkO1xyXG4gICAgICAgICRzY29wZS5wcmV2VGFza0V4ZUlkID0gICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucHJldl90YXNrX2lkO1xyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybVR5cGU9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX3R5cGU7XHJcbiAgICAgICAgJHNjb3BlLnNvdXJjZV90eXBlPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uc291cmNlX3R5cGU7XHJcbiAgICAgICAgJHNjb3BlLnRhc2tJbml0aWF0ZUlkID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50YXNrX2luaXRpYXRlX2lkO1xyXG4gICAgICAgICRzY29wZS50YXNrRXhlY3V0ZUlkID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50YXNrX2V4ZWN1dGVfaWQ7XHJcbiAgICAgICAgJHNjb3BlLmZvcm1EZWZpbml0aW9uID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb247XHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkPTA7XHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZvcm1EZWZpbml0aW9uID0gJHNjb3BlLmZvcm1EZWZpbml0aW9uIHx8IGZhbHNlXHJcbiAgICAgICAgJHNjb3BlLnRhc2tJbml0aWF0ZUlkID0gJHNjb3BlLnRhc2tJbml0aWF0ZUlkIHx8IDBcclxuICAgICAgICAkc2NvcGUudGFza0V4ZWN1dGVJZCA9ICRzY29wZS50YXNrRXhlY3V0ZUlkIHx8IDBcclxuICAgICAgICAkc2NvcGUucHJldlRhc2tFeGVJZCA9ICRzY29wZS5wcmV2VGFza0V4ZUlkIHx8IDBcclxuXHRcdFxyXG5cdFx0JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYXJlbnRXaWRnZXRVaWQgPSAkc2NvcGUuZmQuVXVpZFJlZlxyXG4gICAgXHJcblxyXG4gICAgaWYgKCRzY29wZS5mZC5NdWx0aWxpbmUpICRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMgPSBbXVxyXG4gICAgICAgIFxyXG4gICAgICAvL3JlZ2lzdGVyIHdpZGdldCBcclxuICAgICAgdmFyIG91dF9maWVsZHMgPSBbJ3Jlc291cmNlSWQnXVxyXG4gICAgICBpZiAoJHNjb3BlLmZkLlV1aWRSZWY9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLlV1aWRSZWY9VXRpbGl0eVNlcnZpY2UudXVpZHY0KClcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICBsZXQgd19hY3Rpb25zPVtcclxuICAgICAgICAgICAgICAgICAgICB7aWQ6MSxuYW1lOidhZGRSZXNvdXJjZVJlY29yZCd9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtpZDoyLG5hbWU6J2FkZFJlY29yZCd9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtpZDozLG5hbWU6J3JlbW92ZVJlY29yZCd9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtpZDo0LG5hbWU6J3NldFJlY29yZHMnfSwgIFxyXG4gICAgICAgICAgICAgICAgXVxyXG5cclxuICAgICAgdmFyIHdpZGdldERlZmluaXRpb24gPSB7REVJOiBbeyduYW1lJzoncmVzb3VyY2VMaW5rJywnZGlzcGxheU5hbWUnOidEYXRhc2V0IHJlY29yZCBpZCcsJ3ZhbHVlJzpbe25hbWU6J3Jlc291cmNlSWQnLHZhbHVlOiRzY29wZS5mZC5SZWxhdGVkfSx7bmFtZToncmVzb3VyY2VSZWNvcmRJZCcsdmFsdWU6Jyd9XX1dLGFjdGlvbnM6IHdfYWN0aW9ucyx3aWRnZXRMYWJlbDogJ0FkZCBkYXRhc2V0IHJlY29yZCcsd2lkZ2V0TmFtZTogJ2FkZFJlc291cmNlV2lkZ2V0Jyx3aWRnZXRJZDogJHNjb3BlLmZkLlV1aWRSZWYsdGFza19pbml0aWF0ZV9pZDokc2NvcGUudGFza0luaXRpYXRlSWQsdGFza19leGVjdXRlX2lkOiRzY29wZS50YXNrRXhlY3V0ZUlkLHRhc2tJZDogICRzY29wZS5sVGFza0lkLHJlc291cmNlX2lkOiRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZV9zdGF0ZV9pZCxyZXNvdXJjZURlZklkIDogJHNjb3BlLmZkLlJlbGF0ZWQsIG91dHB1dDpvdXRfZmllbGRzLHBhcmVudFJlc291cmNlSWQ6JHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZURlZmluaXRpb24udWlkIH07XHJcbiAgICAgIFxyXG4gICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmxvY2FsV2lkZ2V0SWQgPSBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnJlZ2lzdGVyV2lkZ2V0KHdpZGdldERlZmluaXRpb24pO1xyXG4gICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmxvY2FsSWQ9JHNjb3BlLmZkLmxvY2FsVmFycy5sb2NhbFdpZGdldElkO1xyXG4gICAgICAkc2NvcGUuZmQuTG9jYWxJZD0kc2NvcGUuZmQubG9jYWxWYXJzLmxvY2FsV2lkZ2V0SWQ7XHJcbiAgICAgIFxyXG4gICAgICBpZiAoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5zaG93SGlkZGVuPT11bmRlZmluZWQpICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uc2hvd0hpZGRlbj17fVxyXG5cdCAgXHJcblx0ICAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnNob3dIaWRkZW5bJHNjb3BlLmZkLlV1aWRSZWZdID0gdHJ1ZVxyXG4gICAgICBcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93UHJvcGVydGllcz1mdW5jdGlvbihkYXRhc2V0TWFwcGVyVHlwZSxzaG93UHJvcGVydGllc1JpZ2h0KVxyXG4gICAgICB7ICAgIFxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGUgPSBkYXRhc2V0TWFwcGVyVHlwZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSE9ZGF0YXNldE1hcHBlclR5cGUpIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGUgPSBkYXRhc2V0TWFwcGVyVHlwZTtcclxuICAgICAgICAgICAgICAgZWxzZSBcclxuICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9MDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc2hvd1Byb3BlcnRpZXNSaWdodCkgXHQkc2NvcGUuZ3NydmMuc2V0RmllbGRQcm9wZXJ0aWVzKCRzY29wZS5mZCk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICB9O1xyXG4gICAgICBcclxuICAgICAgICBcclxuICAgICAgXHJcbiAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2V0RmllbGQgPSBmdW5jdGlvbihmb3JtLG5hbWUsdmFsdWUsbXNnKVxyXG4gICAgICB7XHJcbiAgICAgXHRcdFx0XHRUYXNrRGF0YVNlcnZpY2Uuc2V0RmllbGQoZm9ybSxuYW1lLHZhbHVlKTtcclxuICAgICAgICAgICAgaWYgKG1zZykgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKG1zZywnaW5mbycpO1xyXG4gICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCB2YWx1ZVN0YXRlPSAkc2NvcGUua3NtLmFkZFN1YmplY3QoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkKyctJyskc2NvcGUuZmQuVXVpZFJlZiwkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQpO1xyXG4gICAgICAgIGxldCB2YWx1ZVN0YXRlTmFtZSA9IHZhbHVlU3RhdGUuc3ViamVjdC5uYW1lO1xyXG4gICAgICAgICAgICAgICAgXHJcblxyXG4gICAgbGV0IGFkZF9yZXNvdXJjZV9yZWNvcmQgPSBmdW5jdGlvbihkYXRhKXtcclxuICAgICAgICAgIFxyXG4gICAgICAgIGxldCBzdGF0ZSA9IHZhbHVlU3RhdGUuc3ViamVjdC5nZXRTdGF0ZUNoYW5nZXNcclxuICAgICAgICBpZiAoc3RhdGU9PXVuZGVmaW5lZCkgc3RhdGU9e31cclxuICAgICAgICBpZiAoZGF0YT8uYWN0aW9uX2luZGV4IT11bmRlZmluZWQpIHN0YXRlWydhY3Rpb25faW5kZXgnXSA9IGRhdGEuYWN0aW9uX2luZGV4XHJcbiAgICAgICAgdmFsdWVTdGF0ZS5zdWJqZWN0LnNldFN0YXRlQ2hhbmdlcyA9IHN0YXRlXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5BZGRSZXNvdXJjZVJlY29yZCh2YWx1ZVN0YXRlLGRhdGE/LmFjdGlvbl9pbmRleClcclxuICAgICAgICAgIFxyXG4gICAgfTtcclxuICAgICAgXHJcbiAgICBsZXQgYWN0aW9uX2FkZF9yZXNvdXJjZV9yZWNvcmQgPSAkc2NvcGUua3NtLmFkZEFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcImFkZFJlc291cmNlUmVjb3JkXCIsYWRkX3Jlc291cmNlX3JlY29yZCk7XHJcblxyXG4gICAgbGV0IGFkZF9yZWNvcmQgPSBmdW5jdGlvbihkYXRhKXtcclxuICAgICAgICAgIFxyXG4gICAgICAgIGxldCBzdGF0ZSA9IHZhbHVlU3RhdGUuc3ViamVjdC5nZXRTdGF0ZUNoYW5nZXNcclxuICAgICAgICBpZiAoc3RhdGU9PXVuZGVmaW5lZCkgc3RhdGU9e31cclxuICAgICAgICBpZiAoZGF0YT8uYWN0aW9uX2luZGV4IT11bmRlZmluZWQpIHN0YXRlWydhY3Rpb25faW5kZXgnXSA9IGRhdGEuYWN0aW9uX2luZGV4XHJcbiAgICAgICAgdmFsdWVTdGF0ZS5zdWJqZWN0LnNldFN0YXRlQ2hhbmdlcyA9IHN0YXRlXHJcbiAgICAgICAgaWYgKCRzY29wZS5mZC5NdWx0aWxpbmUpICAkc2NvcGUuZmQubG9jYWxWYXJzLmFkZFJlY29yZFRvTXVsdGlwbGUoZGF0YS5yZWNvcmQpXHJcbiAgICAgICAgICBcclxuICAgIH07XHJcbiAgICBsZXQgYWN0aW9uX2FkZF9yZWNvcmQgPSAkc2NvcGUua3NtLmFkZEFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcImFkZFJlY29yZFwiLGFkZF9yZWNvcmQpO1xyXG5cclxuICAgIGxldCByZW1vdmVfcmVjb3JkID0gZnVuY3Rpb24oZGF0YSl7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgLy9maW5kIHJlY29yZCB0byByZW1vdmVcclxuICAgICAgICAgICAgLy9zcGxpY2UgZnJvbSBhcnJheVxyXG4gICAgICAgICAgXHJcbiAgICB9OyAgXHJcbiAgICBsZXQgYWN0aW9uX3JlbW92ZV9yZWNvcmQgPSAkc2NvcGUua3NtLmFkZEFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcInJlbW92ZVJlY29yZFwiLHJlbW92ZV9yZWNvcmQpO1xyXG5cclxuXHJcbiAgICBcclxuICAgIGxldCBzZXRfcmVjb3JkcyA9IGZ1bmN0aW9uKGRhdGEpe1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCByZWNzLGlucHV0X3BhcmFtcyxkZWZhdWx0X2RhdGFcclxuICAgICAgICBpZiAoZGF0YS5pbl9kYXRhPy5ldmVudF9kYXRhPy5zdGF0ZSl7XHJcbiAgICAgICAgICAgIHJlY3MgPSBkYXRhLmluX2RhdGE/LmV2ZW50X2RhdGE/LnN0YXRlXHJcbiAgICAgICAgICAgIGlucHV0X3BhcmFtcyA9IGRhdGEuaW5fZGF0YT8uaW5fcGFyYW1zXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGlucHV0X3BhcmFtcyA9PSAnc3RyaW5nJykgaW5wdXRfcGFyYW1zID0gSlNPTi5wYXJzZShpbnB1dF9wYXJhbXMpXHJcbiAgICAgICAgICAgIGVsc2UgaW5wdXRfcGFyYW1zID0ge31cclxuICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sZW5ndGg9MFxyXG4gICAgICAgICAgICAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlV1aWRSZWZdLmxlbmd0aD0wXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7aTxyZWNzLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdF9kYXRhPXt9XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoaW5wdXRfcGFyYW1zKSkge1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X2RhdGFba2V5XSA9IHJlY3NbaV1bdmFsdWVdXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlV1aWRSZWZdLnB1c2goW2RlZmF1bHRfZGF0YV0pXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLnB1c2goe2xheW91dDpbVXRpbGl0eVNlcnZpY2UuY2xvbmUoJHNjb3BlLmZkLkZvcm1EZWZbMF0pXX0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zdGFydF93aWRnZXQoKVxyXG4gICAgICAgICAgXHJcbiAgICB9O1xyXG4gICAgbGV0IGFjdGlvbl91cGRhdGVfcmVjb3JkID0gJHNjb3BlLmtzbS5hZGRBY3Rpb24odmFsdWVTdGF0ZU5hbWUsXCJzZXRSZWNvcmRzXCIsc2V0X3JlY29yZHMpO1xyXG5cclxuICAgIC8vYWRkIG5ldyByZWNvcmQgYXQgdGhlIGVuZCBvZiBhcnJheVxyXG4gICAgJHNjb3BlLmZkLmxvY2FsVmFycy5hZGRSZWNvcmRUb011bHRpcGxlID0gZnVuY3Rpb24ocmVjKSAge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KCRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuVXVpZFJlZl1bMF0pKXtcclxuXHJcbiAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMucHVzaCh7bGF5b3V0OltVdGlsaXR5U2VydmljZS5jbG9uZSgkc2NvcGUuZmQuRm9ybURlZlswXSldfSlcclxuICAgICAgICAgICAgLy9oZXJlIGRlZmluZSB0aGUgd2F5IGFuZCBleGVjdXRlIG1hcHBpbmcgb2YgdGhlIHNlbGVjdGVkIHJlY29yZCAtIFRvRG8gKHRoaXMgbm90IHJlYWxseSB3b3JraW5nKVxyXG4gICAgICAgICAgICAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlV1aWRSZWZdLnB1c2goW3t9XSlcclxuICAgICAgICAgICAgJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5VdWlkUmVmXVskc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlV1aWRSZWZdLmxlbmd0aC0xXVswXVskc2NvcGUuZmQuUHJvcGVydGllcy5GaWVsZElkXT1yZWMuaWRcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmFkZE1hbnVhbFJlY29yZFRvTXVsdGlwbGUgPSBmdW5jdGlvbigpICB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMucHVzaCh7bGF5b3V0OltVdGlsaXR5U2VydmljZS5jbG9uZSgkc2NvcGUuZmQuRm9ybURlZlswXSldfSlcclxuICAgICAgICAgICAgJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5VdWlkUmVmXS5wdXNoKFt7fV0pXHJcbiAgICAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlbW92ZU1hbnVhbFJlY29yZFRvTXVsdGlwbGUgPSBmdW5jdGlvbihpZHgpICB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgLypcclxuICAgICAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlY29yZHMpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLnNwbGljZShrZXksMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5VdWlkUmVmXS5zcGxpY2Uoa2V5LDEpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLnNwbGljZShpZHgsMSlcclxuICAgICAgICAgICAgICAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlV1aWRSZWZdLnNwbGljZShpZHgsMSlcclxuICAgIH1cclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2V0U2VsZWN0ZWRSZXNvdXJjZSA9IGZ1bmN0aW9uKGlkLHNhdmVkKSAge1xyXG5cclxuICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW09PXVuZGVmaW5lZCkgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbT17fTtcclxuICAgICAgICAgICAgbGV0IHBvcyA9ICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKCRzY29wZS5mZC5SZWxhdGVkKTtcclxuICAgICAgICAgICAgaWYgKHBvcz49MCAmJiAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLmlkPT09dW5kZWZpbmVkKSBcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbSA9ICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VMaXN0W3Bvc11cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0gXHJcblxyXG4gICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdldFB1Ymxpc2hlZFJlc291cmNlQnlJZChpZCxzYXZlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRQdWJsaXNoZWRSZXNvdXJjZUJ5SWQgPSBmdW5jdGlvbihpZCxzYXZlZCkgXHJcbiBcclxuICAgIHtcclxuICAgICAgICAgICAgbGV0IHBvc1xyXG4gICAgICAgICAgICBpZiAoc2F2ZWQgJiYgJHNjb3BlLmZkLkZvcm1EZWYhPT11bmRlZmluZWQgJiYgJHNjb3BlLmZkLkZvcm1EZWYhPT1udWxsKVxyXG4gICAgICAgICAgICAgIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgcG9zID0gJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoaWQpO1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAocG9zPj0wKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lID0gJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3RbcG9zXS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkRGF0YXNldCA9ICRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0W3Bvc11cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jPSRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGVmaW5pdGlvbikgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQgPSAkc2NvcGUuZmQuRm9ybURlZlxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCEkc2NvcGUuZmQuTXVsdGlsaW5lKSAkc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCA9IFV0aWxpdHlTZXJ2aWNlLmNsb25lKCRzY29wZS5mZC5Gb3JtRGVmKVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5wdXNoKHtsYXlvdXQ6W1V0aWxpdHlTZXJ2aWNlLmNsb25lKCRzY29wZS5mZC5Gb3JtRGVmWzBdKV19KVxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybUxvYWRlZD10cnVlO1xyXG5cclxuICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgcG9zID0gJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoaWQpO1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgaWYgKHBvcz49MCl7XHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UHVibGlzaGVkUmVzb3VyY2VCeUlkKGlkKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFB1Ymxpc2hlZFJlc291cmNlID0gJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3RbcG9zXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5Gb3JtRGVmID0gZGF0YS5kYXRhLkZvcm1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZm9ybURlZmluaXRpb24pICRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0ID0gJHNjb3BlLmZkLkZvcm1EZWZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCEkc2NvcGUuZmQuTXVsdGlsaW5lKSAkc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCA9IFV0aWxpdHlTZXJ2aWNlLmNsb25lKCRzY29wZS5mZC5Gb3JtRGVmKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAkc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLnB1c2goe2xheW91dDpbVXRpbGl0eVNlcnZpY2UuY2xvbmUoJHNjb3BlLmZkLkZvcm1EZWZbMF0pXX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jIT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlSWQ9JHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jLmlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlVmVyc2lvbj0kc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtX2MuVmVyc2lvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdFcnJvciAtIHB1Ymxpc2hlZCBkYXRhc2V0IG5vdCBzZWxlY3RlZCBrdFRBc2tBZGQnLCdlcnJvcicpXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybUxvYWRlZD10cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICBcclxuICAgICAgIFxyXG59XHJcbiBcclxuXHJcbiAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3Q9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3Q9W107XHJcbiAgICBcclxuXHR2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgXHJcbiAgICBpZiAoJHNjb3BlLmZkLlJlbGF0ZWQhPVwiXCIgJiYgJHNjb3BlLmZkLlJlbGF0ZWQhPXVuZGVmaW5lZCAmJiAkc2NvcGUuZmQuUmVsYXRlZCE9bnVsbCkgIHtcclxuXHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUuZm9ybURlZmluaXRpb24pICRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0ID0gJHNjb3BlLmZkLkZvcm1EZWZcclxuICAgICAgICAgICAgZWxzZSBpZiAoISRzY29wZS5mZC5NdWx0aWxpbmUpICRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0ID0gVXRpbGl0eVNlcnZpY2UuY2xvbmUoJHNjb3BlLmZkLkZvcm1EZWYpXHJcbiAgICAgICAgICAgIGVsc2UgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5wdXNoKHtsYXlvdXQ6W1V0aWxpdHlTZXJ2aWNlLmNsb25lKCRzY29wZS5mZC5Gb3JtRGVmWzBdKV19KVxyXG4gICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfWVsc2UgJHNjb3BlLmZkLmxvY2FsVmFycy5Ob1B1Ymxpc2hlZFJlc291cmNlTXNnPVwiRGVmaW5pdGlvbiBlcnJvciAtLT4gUmVzb3VyY2UgZm9ybSBub3QgZGVmaW5lZCFcIlxyXG4gIFxyXG4gICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucHJlcGFyZVJlc291cmNlRGF0YSA9IGZ1bmN0aW9uKHJlc291cmNlUmVjb3JkSWQpe1xyXG5cclxuICAgICAgICAgICAgICRzY29wZS5mZC5pdGVtVmFsdWUgPSAgUmVzb3VyY2VzRGF0YVNlcnZpY2UucHJlcGFyZVJlc291cmNlV2lkZ2V0RGF0YSgkc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCxyZXNvdXJjZVJlY29yZElkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5wcm9jZXNzV2lkZ2V0RGVwZW5kZW5jaWVzID0gZnVuY3Rpb24oKSB7IC8vLS0tLS0gIGt0VXBsb2FkZXIgIC0tLS0tXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgaWYgKCRzY29wZS5mZC50SXRlbVZhbHVlIT11bmRlZmluZWQpIFxyXG4gICAgICAgICAgICBmb3IgKHZhciBpPTA7aTwgJHNjb3BlLmZkLnRJdGVtVmFsdWUubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGxpbmtlZFdpZGdldElkPSRzY29wZS5mZC50SXRlbVZhbHVlW2ldLndpZGdldElkOyAgLy8gbGlua2VkV2lkZ2V0SWQ9IFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UuZ2V0TG9jYWxXaWRnZXRJZChsaW5rZWRXaWRnZXRJZCk7Ly9NSUdPUiAtIG1vcmFtIGRvYml0aSBsb2NhbHdpZGdldElkIG9kIHZlemFub2cgV2lkZ2V0SWQgXHJcbiAgICAgICAgICAgICAgICB2YXIgbGlua2VkSXRlbSA9ICdyZXNvdXJjZUxpbmsnICAgICAgICAgICAgICAgICAgICAgIC8vdmFyIGxpbmtlZEl0ZW0gPSAkc2NvcGUuZmQudEl0ZW1WYWx1ZVtpXS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmIChsaW5rZWRXaWRnZXRJZCE9dW5kZWZpbmVkICYmIGxpbmtlZFdpZGdldElkIT1udWxsICkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGo9MDtqPCRzY29wZS5mZC50SXRlbVZhbHVlW2ldLkRFSS5sZW5ndGg7aisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoJHNjb3BlLmZkLnRJdGVtVmFsdWVbaV0uREVJW2pdLm5hbWU9PWxpbmtlZEl0ZW0pICYmICgkc2NvcGUuZmQudEl0ZW1WYWx1ZVtpXS5ERUlbal0udmFsdWU9PXRydWUpKSB7IC8vU0NPUEUuT04gc2FtbyBrYWQgamUgREVJIHZhbHVlID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsaW5rZWRJdGVtID0gJHNjb3BlLmZkLnRJdGVtVmFsdWVbaV0uREVJW2pdLm5hbWU7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidmlldyBcIiskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQrXCIgc2UgdmV6ZSBuYSBzZXJ2ZXJza2kgXCIgKyBsaW5rZWRXaWRnZXRJZCk7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS4kb24oJ0V2ZW50JytsaW5rZWRXaWRnZXRJZCtsaW5rZWRJdGVtLGZ1bmN0aW9uKGV2ZW50LCBkYXRhKXsgIC8vaWRlIHBvIHN2aW0gdmV6YW5pbSB3aWRnZXRpbWEgaSBkb2RhaiAkc2NvcGUub24gICAvL01JR09SIFRPRE8gLSBET0RBVEkgU0FNTyBVIFNMVUNBSlUgREEgSkUgREVJIFZBTFVFID0gVFJVRSAhISEhICAgICA8PDw8PDw8PDw8PDw8ICEhISEhISEhIVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGs9MDtrPGRhdGEubGVuZ3RoO2srKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFba10ubmFtZT09J3Jlc291cmNlUmVjb3JkSWQnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmxpbmtlZFJlc291cmNlSWQgPSBkYXRhW2tdLnZhbHVlOyAvL1RPRE8gLSBJTEogLSBvdm8gYmkgaXN0byB0cmViYWxhIGJpdGkgdmFyaWphYmxhIC0gc3RhIGFrbyBwcm9tamVuaW0gaW50ZXJmYWNlIG9kbm9zbm8gbmF6aXYgcG9samEhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZVJlY29yZElkID0gJHNjb3BlLmZkLmxvY2FsVmFycy5saW5rZWRSZXNvdXJjZUlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFba10ubmFtZT09J3Jlc291cmNlSWQnKSAkc2NvcGUuZmQubG9jYWxWYXJzLmxpbmtlZFJlc291cmNlRGVmSWQgPSBkYXRhW2tdLnZhbHVlOyAgLy9UT0RPLSBJTEogLSBvdm8gYmkgaXN0byB0cmViYWxhIGJpdGkgdmFyaWphYmxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgLy9vbl9FTkRcclxuICAgICAgICAgICAgICAgICAgICAgICAgfS8vaWZcclxuICAgICAgICAgICAgICAgICAgICB9Ly9mb3IgalxyXG4gICAgICAgICAgICAgICAgfS8vaWZcclxuXHJcbiAgICAgICAgICAgIH0gLy9mb3IgaVxyXG4gICAgICB9Ly9mbiAgcHIwY2Vzc1dpZGdldERlcGVuZGVjaWVzIC0tLS0tLS0tLS0tLS0gICAga3RWaWV3U2luZ2xlUmVzb3VyY2VXaWRnZXRcclxuXHJcbiAgICAgICAgICBpZiAoJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT11bmRlZmluZWQgfHwgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT1udWxsKSAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9MDtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtVHlwZT0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fdHlwZTtcclxuXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5wcm9jZXNzVGFza1JldHVybiA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgaWYgKGRhdGEhPXVuZGVmaW5lZCl7XHJcbiAgICAgICAgICAgICAgICBsZXQgcnZcclxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgIHJ2ICA9IGRhdGFcclxuICAgICAgICAgICAgICAgIH1lbHNlIHJ2ID1bZGF0YV1cclxuXHJcbiAgICAgICAgICAgICAgICAgIGZvcih2YXIgaT0wO2k8cnYubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PXJ2W2ldLndpZGdldElkKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2Uuc2V0RGF0YShydltpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNldEZpZWxkKCRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0LCdSZWFkT25seScsdHJ1ZSk7IC8vc2V0IGFsbCBlbGVtZW50cyByZWFkLW9ubHlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5FeHRyYWN0SWRGcm9tUmVjb3JkPWZ1bmN0aW9uKHJlY29yZCl7XHJcblxyXG4gICAgICAgICAgICBsZXQgcmVjb3JkX2lkXHJcblxyXG4gICAgICAgICAgICBpZiAocmVjb3JkIT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICB7ICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWNvcmQpICYmIHJlY29yZC5sZW5ndGg+MClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5UYWJsZVByZWZpeCsnX2lkJyBpbiByZWNvcmRbMF0pXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRfaWQ9cmVjb3JkWzBdWyRzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXgrJ19pZCddXHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1lbHNlIHJlY29yZF9pZCA9IHJlY29yZFswXS5pZFxyXG5cclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLlRhYmxlUHJlZml4KydfaWQnIGluIHJlY29yZClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZF9pZCA9IHJlY29yZFskc2NvcGUuZmQubG9jYWxWYXJzLlRhYmxlUHJlZml4KydfaWQnXVxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZSByZWNvcmRfaWQgPSByZWNvcmQuaWRcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1lbHNlIHJlY29yZF9pZCA9IG51bGxcclxuXHJcbiAgICAgICAgICAgIHJldHVybiByZWNvcmRfaWQgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucHJvY2Vzc01hcHBpbmdEYXRhID0gZnVuY3Rpb24oKXtcclxuXHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLm1hcHBpbmdEMmQpe1xyXG5cclxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKCRzY29wZS5mZC5sb2NhbFZhcnMubWFwcGluZ0QyZCkuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuTXVsdGlsaW5lKXtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpPTA7aTwkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlV1aWRSZWZdLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlV1aWRSZWZdW2ldWzBdW2tleV09JHNjb3BlLmZkLmxvY2FsVmFycy5tYXBwaW5nRDJkW2tleV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlV1aWRSZWZdWzBdW2tleV09JHNjb3BlLmZkLmxvY2FsVmFycy5tYXBwaW5nRDJkW2tleV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLlByb2Nlc3NNYXBwaW5nID0gZnVuY3Rpb24oKXtcclxuXHJcbiAgICAgICAgICAgIGxldCBmaWx0ZXJfZGF0YSA9IHt9XHJcbiAgICAgICAgICAgIGlmICghJHNjb3BlLmZkLmxvY2FsVmFycy5tYXBwaW5nRDJkKXtcclxuXHJcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5wcm9jZXNzUjJyTWFwcGluZygkc2NvcGUuZmQuVXVpZFJlZiwkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnVpZCwkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlZlcnNpb24sJHNjb3BlLmZkLkRhdGFzZXRNYXBwaW5nLGZpbHRlcl9kYXRhLCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZV9pbnN0YW5jZV9pZCwkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnByZXZfcGFnZV9pbnN0YW5jZV9pZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5tYXBwaW5nRDJkID0gZGF0YS5kYXRhXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucHJvY2Vzc01hcHBpbmdEYXRhKClcclxuXHJcbiAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRSZWFkeSA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRSZWFkeSA9IHRydWVcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnByb2Nlc3NNYXBwaW5nRGF0YSgpXHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRSZWFkeSA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICBcclxuXHJcbiAgICAgICAgbGV0IHdhaXRfZm9yX3dpZGdldCA9IGZ1bmN0aW9uKGRhdGEpe1xyXG5cclxuICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zdGFydF93aWRnZXQoKVxyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc3RhcnRfd2lkZ2V0ID0gZnVuY3Rpb24oKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5EYXRhc2V0TWFwcGluZz8ubGVuZ3RoPjAgJiYgISRzY29wZS5mb3JtRGVmaW5pdGlvbilcclxuICAgICAgICAgICAge1xyXG5cclxuICAgICAgICAgICAgICBpZiAoKCRzY29wZS5mZC5NdWx0aWxpbmUgJiYgJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5VdWlkUmVmXS5sZW5ndGgpIHx8ICEkc2NvcGUuZmQuTXVsdGlsaW5lKSAkc2NvcGUuZmQubG9jYWxWYXJzLlByb2Nlc3NNYXBwaW5nICgpXHJcbiAgICAgICAgICAgIH1lbHNlICRzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0UmVhZHkgPSB0cnVlXHJcbiAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cclxuXHJcblxyXG4gICAgICAgIGlmICgkc2NvcGUuZmQuU3JjV2lkZ2V0SWQhPXVuZGVmaW5lZCAmJiAkc2NvcGUuZmQuU3JjV2lkZ2V0SWQhPW51bGwpXHJcbiAgICAgICAgXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IGRlcGVuZGVudF9maWVsZCA9IFwiRmllbGRcIiskc2NvcGUuZmQuVXVpZFJlZjtcclxuICAgICAgICAgICAgICAgLy8gbGV0IHN1YnNjcmliZWRTdWJqZWN0ID0gJHNjb3BlLmZkLlBhcmFtZXRlcnMuU3JjV2lkZ2V0VHlwZStcIlZhbHVlU3RhdGVOYW1lXCIrJHNjb3BlLmZkLlNyY1dpZGdldElkO1xyXG4gICAgICAgICAgICAgICAgbGV0IHN1YnNjcmliZWRTdWJqZWN0ID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkK1wiLVwiKyRzY29wZS5mZC5TcmNXaWRnZXRJZDtcclxuICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlciA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0LGRlcGVuZGVudF9maWVsZCxcInZhbHVlQ2hhbmdlZFwiLHdhaXRfZm9yX3dpZGdldCk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1lbHNlIFxyXG5cclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGlmICghJHNjb3BlLmZkLlBhcmFtZXRlcnM/LmV2ZW50cz8ubGVuZ3RoKSAkc2NvcGUuZmQubG9jYWxWYXJzLnN0YXJ0X3dpZGdldCgpXHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5BZGRSZXNvdXJjZVJlY29yZCA9IGZ1bmN0aW9uKHZhbHVlU3RhdGVQYXJhbSxhY3RfaWR4KXtcclxuICAgICAgICAgICAgbGV0IGZkYXRhID0gJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5VdWlkUmVmXVswXVxyXG5cclxuICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5NdWx0aWxpbmUpIGZkYXRhID0gJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5VdWlkUmVmXVxyXG4gICAgICAgICBcclxuICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5hZGRSZXNvdXJjZVJlY29yZCgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnVpZCwkc2NvcGUuZmQuVXVpZFJlZixmZGF0YSwkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLkV4ZVZlcnNpb24sJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX2luc3RhbmNlX2lkLCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucHJldl9wYWdlX2luc3RhbmNlX2lkKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gZGF0YS5kYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBybXNnID0gcmVzcG9uc2UuUmVzcG9uc2VNc2dcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJtc2cpIHJtc2c9XCJSZWNvcmQgY3JlYXRlZCBzdWNjZXNzZnVseSFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShybXNnLCdzdWNjZXNzJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZCA9ICRzY29wZS5mZC5sb2NhbFZhcnMuRXh0cmFjdElkRnJvbVJlY29yZChyZXNwb25zZS5yZWNvcmQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXVswXSA9IHJlc3BvbnNlLnJlY29yZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2Uuc2V0RGF0YSh7REVJOiBbeyduYW1lJzoncmVzb3VyY2VMaW5rJywndmFsdWUnOlt7bmFtZToncmVzb3VyY2VJZCcsdmFsdWU6JHNjb3BlLmZkLlJlbGF0ZWR9LHtuYW1lOidyZXNvdXJjZVJlY29yZElkJyx2YWx1ZTokc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWR9XX1dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbe25hbWU6J1ByZXBhcmVEYXRhJyxzdGF0dXM6ZmFsc2V9XSxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhZGRSZXNvdXJjZVdpZGdldCcsd2lkZ2V0SWQ6ICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCx0YXNrX2luaXRpYXRlX2lkOiRzY29wZS50YXNrSW5pdGlhdGVJZCx0YXNrX2V4ZWN1dGVfaWQ6JHNjb3BlLnRhc2tFeGVjdXRlSWQsXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrSWQ6ICAkc2NvcGUubFRhc2tJZCxyZXNvdXJjZV9pZDokc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQscmVzb3VyY2VEZWZJZCA6ICRzY29wZS5mZC5SZWxhdGVkLCBvdXRwdXQ6b3V0X2ZpZWxkc30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVN0YXRlUGFyYW0uc3ViamVjdC5ub3RpZnlPYnNlcnZlcnMoXCJhZGRSZXNvdXJjZVJlY29yZFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24odmFsdWVTdGF0ZU5hbWUsXCJ2YWx1ZUNoYW5nZWRcIiwge2RhdGFzZXREZWZJZDokc2NvcGUuZmQuUmVsYXRlZCxyZWNvcmRJZDokc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQscmVjb3JkOiRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuVXVpZFJlZl1bMF19KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcInZhbHVlQ2hhbmdlZFwiLCB7ZXJyb3I6dHJ1ZX0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICB9KTtcclxuICAgIH0gXHJcblxyXG5cclxuICAgICAgICAkc2NvcGUucHJvY2Vzc0V2ZW50cyA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAge1xyXG5cclxuICAgICAgICAgICAgVXRpbGl0eVNlcnZpY2UucHJvY2Vzc19ldmVudHMoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkLHZhbHVlU3RhdGUsZGF0YSwkc2NvcGUuZmQuUGFyYW1ldGVycy5ldmVudHMsJHNjb3BlLmtzbSlcclxuICAgICAgICB9XHJcbiAgICAgICAgJHNjb3BlLnBhcmVudFdpZGdldD1cIlwiXHJcbiAgICAgICAgLy9wcm9jZXNzIGV2ZW50cyBhbmQgZXhlY3V0ZSBhY3Rpb25zXHJcbiAgICAgICAgaWYgKCEkc2NvcGUuZm9ybURlZmluaXRpb24gJiYgJHNjb3BlLmZkLlBhcmFtZXRlcnM/LmV2ZW50cz8ubGVuZ3RoPjApIFV0aWxpdHlTZXJ2aWNlLnN1YnNjcmliZV8yX2V2ZW50cygkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQsJHNjb3BlLnBhcmVudFdpZGdldCwkc2NvcGUuZmQuUGFyYW1ldGVycy5ldmVudHMsJHNjb3BlLCRzY29wZS5rc20pXHJcblxyXG5cclxuICAgICAgICAgJHNjb3BlLiRvbignSW5pdGlhdGVUYXNrUG9zdFByb2Nlc3MnKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udHJhbnNhY3Rpb25faWQsZnVuY3Rpb24oZXZlbnQsIGRhdGEpe1xyXG4gICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnByb2Nlc3NUYXNrUmV0dXJuKGRhdGEpXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAkc2NvcGUuJG9uKCdFeGVjdXRlVGFza1Bvc3RQcm9jZXNzJyskc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRhc2tfZXhlY3V0ZV9pZCxmdW5jdGlvbihldmVudCwgZGF0YSl7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucHJvY2Vzc1Rhc2tSZXR1cm4oZGF0YSlcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAkc2NvcGUuJG9uKCdQcm9jZXNzV2lkZ2V0UG9zdFByb2Nlc3MnKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZV9zdGF0ZV9pZCxmdW5jdGlvbihldmVudCwgZGF0YSl7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucHJvY2Vzc1Rhc2tSZXR1cm4oZGF0YSlcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgIGxldCB0ZW1wbGF0ZTtcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZm9ybURlZmluaXRpb24pIHRlbXBsYXRlID0gJHRlbXBsYXRlQ2FjaGUuZ2V0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tBZGRSZXNvdXJjZS5odG1sJyk7XHJcbiAgICAgICAgICAgICAgICBlbHNlIHRlbXBsYXRlID0gJHRlbXBsYXRlQ2FjaGUuZ2V0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tBZGRSZXNvdXJjZUV4ZS5odG1sJyk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRlbGVtZW50LmFwcGVuZCgkY29tcGlsZSh0ZW1wbGF0ZSkoJHNjb3BlKSk7IFxyXG4gICAgICB9XTtcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgY29udHJvbGxlcjogY29udHJvbGxlcixcclxuICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG5cclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgd2lkZ2V0U3RhdGU9IHNjb3BlLmtzbS5hZGRTdWJqZWN0KCd0YXNrV2lkZ2V0JytzY29wZS5mZC5QcmVzZW50YXRpb25JZCxzY29wZS5mZC5QcmVzZW50YXRpb25JZCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2lkZ2V0U3RhdGVOYW1lID0gd2lkZ2V0U3RhdGUuc3ViamVjdC5uYW1lO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgY2xlYXJfZm9ybSA9IGZ1bmN0aW9uKClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgLy9zY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0PVtdXHJcbiAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtTG9hZGVkPWZhbHNlXHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCA9IFV0aWxpdHlTZXJ2aWNlLmNsb25lKHNjb3BlLmZkLkZvcm1EZWYpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmZvcm1EYXRhW3Njb3BlLmZkLlV1aWRSZWZdPSBbe31dXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0U3RhdGUuc3ViamVjdC5zZXRTdGF0ZUNoYW5nZXMgPSBzY29wZS5mZC5QcmVzZW50YXRpb25JZFxyXG4gICAgICAgICAgICAgICAgICAgIHdpZGdldFN0YXRlLnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKFwiY2xlYXJmb3JtXCIpO1xyXG4gICAgICAgICAgICAgICAgICB9KSAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICBsZXQgYWN0aW9uX2Zvcm1fY2xlYXJlZCA9IHNjb3BlLmtzbS5hZGRBY3Rpb24od2lkZ2V0U3RhdGVOYW1lLFwiY2xlYXJmb3JtXCIsY2xlYXJfZm9ybSk7XHJcblxyXG5cclxuICAgICAgIFxyXG4gICAgICAgICAgICB9ICAgICBcclxuICAgICAgICB9XHJcbiAgfVxyXG5cbid1c2Ugc3RyaWN0JztcclxuXHJcbi8vaW1wb3J0IHtDaGFydH0gZnJvbSAnY2hhcnQnO1xyXG4vL2ltcG9ydCBDaGFydERhdGFMYWJlbHMgZnJvbSAnY2hhcnRqcy1wbHVnaW4tZGF0YWxhYmVscyc7XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0VGFza0NoYXJ0ICgpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrQ2hhcnQuaHRtbCcsXHJcblxyXG4gICAgICAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24oJHNjb3BlLCRyb290U2NvcGUsJHRpbWVvdXQsVXNlclNlcnZpY2UsUmVzb3VyY2VzRGF0YVNlcnZpY2UsVGFza0RhdGFTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlLCBVdGlsaXR5U2VydmljZSkge1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIGNvbnN0IG51bUZvcm1hdCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChcImRlLURFXCIsIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogICRzY29wZS5mZC5QYXJhbWV0ZXJzLmNoYXJ0RnJhY3Rpb25EaWdpdHMgfHwgMixcclxuICAgICAgICAgICAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogICRzY29wZS5mZC5QYXJhbWV0ZXJzLmNoYXJ0RnJhY3Rpb25EaWdpdHMgfHwgMlxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmM9IEdyaWRzdGVyU2VydmljZTtcclxuICAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoJHNjb3BlLmZkLnNlbGVjdGVkVGFza3MpKSAkc2NvcGUuZmQuc2VsZWN0ZWRUYXNrcz1bXTtcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uIT11bmRlZmluZWQpICB7XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS50YXNrRXhlY3V0ZUlkID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50YXNrX2V4ZWN1dGVfaWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycyA9PSB1bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnM9e307XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxPYmo9e2xvYWRlZFRhc2tzIDogW119O1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy50YXNrSXRlbSA9IG51bGw7ICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkVGFzayA9IHt9O1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93TWVudSA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycyA9PSB1bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnM9e307XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkOiAnMScsXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0hvbWUnLFxyXG4gICAgICAgICAgICAgICAgICAgIHdpZGdldHM6IHt9XHJcblx0XHRcdFx0fSA7XHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy50YXNrSXRlbSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFRhc2sgPSB7fTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy9NSUdPUiAtIFBSRUJBQ0lPIElaIFRBU0sgQUREIFJFU09VUkNFLCBUT0RPIC0gSVpCQUNJVEkgVklTQUtcclxuICAgICAgICAgICAgICAgICRzY29wZS50YXNrSWQ9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZURlZklkO1xyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS50YXNrSWQ9PXVuZGVmaW5lZCkgICRzY29wZS50YXNrSWQ9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZURlZklkX2lkO1xyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS50YXNrSWQ9PXVuZGVmaW5lZCkgJHNjb3BlLnRhc2tJZD0wO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy50YXNrSWQ9JHNjb3BlLnRhc2tJZDtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5QYXJlbnREYXRhc2V0RGVmSWQ9JHNjb3BlLmZkLlJlbGF0ZWQ7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucHJldlRhc2tFeGVJZCA9ICAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnByZXZfdGFza19pZDtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybVR5cGU9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX3R5cGU7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuc291cmNlX3R5cGU9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5zb3VyY2VfdHlwZTtcclxuICAgICAgICAgICAgICAgICRzY29wZS50YXNrSW5pdGlhdGVJZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udGFza19pbml0aWF0ZV9pZDtcclxuICAgICAgICAgICAgICAgICRzY29wZS50YXNrRXhlY3V0ZUlkID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50YXNrX2V4ZWN1dGVfaWQ7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybURlZmluaXRpb24gPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fZGVmaW5pdGlvbjtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZD0wO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdGlmICgkc2NvcGUuZmQuVXVpZFJlZj09dW5kZWZpbmVkKSAkc2NvcGUuZmQuVXVpZFJlZj1VdGlsaXR5U2VydmljZS51dWlkdjQoKTtcclxuXHRcdFx0XHQkc2NvcGUuZmQuUGFyYW1ldGVycy5VdWlkUmVmID0gJHNjb3BlLmZkLlV1aWRSZWY7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5mb3JtRGVmaW5pdGlvbiA9ICRzY29wZS5mb3JtRGVmaW5pdGlvbiB8fCBmYWxzZVxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tJbml0aWF0ZUlkID0gJHNjb3BlLnRhc2tJbml0aWF0ZUlkIHx8IDBcclxuICAgICAgICAgICAgICAgICRzY29wZS50YXNrRXhlY3V0ZUlkID0gJHNjb3BlLnRhc2tFeGVjdXRlSWQgfHwgMFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnByZXZUYXNrRXhlSWQgPSAkc2NvcGUucHJldlRhc2tFeGVJZCB8fCAwXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGhzdnRvcmdiID0gZnVuY3Rpb24gKGgscyx2KSAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZj0gKG4saz0obitoLzYwKSU2KSA9PiB2IC0gdipzKk1hdGgubWF4KCBNYXRoLm1pbihrLDQtaywxKSwgMCk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gICBcIiNcIiArIE1hdGgucm91bmQoZig1KSAqIDI1NSkudG9TdHJpbmcoMTYpICsgIE1hdGgucm91bmQoZigzKSAqIDI1NSkudG9TdHJpbmcoMTYpICsgTWF0aC5yb3VuZChmKDEpICogMjU1KSAudG9TdHJpbmcoMTYpIFxyXG4gICAgICAgICAgICAgICAgfSAgXHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IEhTVjJSR0IgPSBmdW5jdGlvbihoLCBzLCB2KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHIsIGcsIGIsIGksIGYsIHAsIHEsIHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGgucywgdiA9IGgudiwgaCA9IGguaDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaSA9IE1hdGguZmxvb3IoaCAqIDYpO1xyXG4gICAgICAgICAgICAgICAgICAgIGYgPSBoICogNiAtIGk7XHJcbiAgICAgICAgICAgICAgICAgICAgcCA9IHYgKiAoMSAtIHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHEgPSB2ICogKDEgLSBmICogcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdCA9IHYgKiAoMSAtICgxIC0gZikgKiBzKTtcclxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGkgJSA2KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDogciA9IHYsIGcgPSB0LCBiID0gcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTogciA9IHEsIGcgPSB2LCBiID0gcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjogciA9IHAsIGcgPSB2LCBiID0gdDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzogciA9IHAsIGcgPSBxLCBiID0gdjsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDogciA9IHQsIGcgPSBwLCBiID0gdjsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTogciA9IHYsIGcgPSBwLCBiID0gcTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgIHJldHVybiAgICBcIiNcIiArIE1hdGgucm91bmQociAqIDI1NSkudG9TdHJpbmcoMTYpICsgICAgTWF0aC5yb3VuZChnICogMjU1KS50b1N0cmluZygxNikgKyBNYXRoLnJvdW5kKGIgKiAyNTUpIC50b1N0cmluZygxNikgXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMudG9nZ2xlRHJvcGRvd24gPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2hvd01lbnUgPSAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93TWVudSA/IGZhbHNlOiB0cnVlIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuY29weVRvQ2xpcGJvYXJkID0gZnVuY3Rpb24odGV4dCl7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5jb3B5VXVpZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dCkudGhlbiggXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7JHNjb3BlLmZkLmxvY2FsVmFycy5jb3B5VXVpZCA9IGZhbHNlO30sMTAwMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHsgICAgLyogY2xpcGJvYXJkIHdyaXRlIGZhaWxlZCAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdDb3B5IHRvIGNsaXBib2FyZCBmYWlsZWQnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXskc2NvcGUuZmQubG9jYWxWYXJzLmNvcHlVdWlkID0gZmFsc2U7fSwxMDAwKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHZhciAgcHJvY2Vzc19vYnNlcnZlZF9kYXRhID0gZnVuY3Rpb24oZGF0YSkgLy8gY2FsbGVkIGJ5IGRhdGFzZXRMaXN0ICh2aWEgS1NNKVxyXG4gICAgICAgICAgICAgICAgeyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5lcnJvcm1zZyA9JydcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGE9PXVuZGVmaW5lZCB8fCBkYXRhPy5zdGF0ZT8uc2hhcmVkRGF0YT8uYW5hbHl0aWNzPT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuQ2FsY3VsYXRlRnVuY3Rpb24/Lm5hbWU9PXVuZGVmaW5lZCkgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmVycm9ybXNnPSdDYWxjdWxhdGUgRnVuY3Rpb24gbm90IGRlZmluZWQhJ1xyXG4gICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuY2hhcnRUeXBlPT11bmRlZmluZWQpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlBhcmFtZXRlcnMuY2hhcnRUeXBlPSdjb3VudGVyJ1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuU2VsZWN0ZWRDaGFydEFuYWx5dGljcyA9ICRzY29wZS5mZC5QYXJhbWV0ZXJzLlNlbGVjdGVkQ2hhcnRBbmFseXRpY3MgfHwgMCAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5hbmFseXRpY3MgPSAgZGF0YT8uc3RhdGU/LnNoYXJlZERhdGE/LmFuYWx5dGljc1skc2NvcGUuZmQubG9jYWxWYXJzLlNlbGVjdGVkQ2hhcnRBbmFseXRpY3NdWyRzY29wZS5mZC5QYXJhbWV0ZXJzLkNhbGN1bGF0ZUZ1bmN0aW9uLm5hbWVdXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFuYWx5dGljcyA9ICAkc2NvcGUuZmQubG9jYWxWYXJzLmFuYWx5dGljcyBcclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy9maW5kIG1pbnZhbHVlIGFuZCBtYXh2YWx1ZSBvZiBjdXJyZW50IEFuYXl0aWNzIGRhdGFcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLm1heHZhbHVlPS0xXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5taW52YWx1ZT0tMVxyXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGFuYWx5dGljcykuZm9yRWFjaChmdW5jdGlvbihrZXksaW5kZXgpIHsgLy9tdXN0IHVzZSBpbnZlcnNlIGxvZ2ljICh1bmRlZmluZWQgPT0gbnVtYmVyIGlzIGFsd2F5cyBmYWxzZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKCBhbmFseXRpY3Nba2V5XSA8IGFuYWx5dGljc1skc2NvcGUuZmQubG9jYWxWYXJzLm1heHZhbHVlXSkpICAgJHNjb3BlLmZkLmxvY2FsVmFycy5tYXh2YWx1ZSA9IGtleVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoIGFuYWx5dGljc1trZXldID4gYW5hbHl0aWNzWyRzY29wZS5mZC5sb2NhbFZhcnMubWludmFsdWVdKSkgICAkc2NvcGUuZmQubG9jYWxWYXJzLm1pbnZhbHVlID0ga2V5ICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuIFxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhID0gT2JqZWN0LnZhbHVlcyhhbmFseXRpY3MpXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5sYWJlbHMgPSBPYmplY3Qua2V5cyhhbmFseXRpY3MpXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzPy5jaGFydFR5cGU/Lm5hbWUgPT0gJ3BpZScgfHwgJHNjb3BlLmZkLlBhcmFtZXRlcnM/LmNoYXJ0VHlwZT8ubmFtZSA9PSAnZG91Z2hudXQnIHx8ICRzY29wZS5mZC5QYXJhbWV0ZXJzPy5jaGFydFR5cGU/Lm5hbWUgPT0gJ3BvbGFyQXJlYScpIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29sb3JzPVtdIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdvbGRlbl9yYXRpbyA9IDAuNjE4MDMzOTg4NzQ5ODk1XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaCA9IE1hdGgucmFuZG9tKCkgLy8gdXNlIHJhbmRvbSBzdGFydCB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiAkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGEpIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggKz0gZ29sZGVuX3JhdGlvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggJT0gMSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9ycy5wdXNoKCBIU1YyUkdCKCBoLCAwLjUsIDAuOTUpICkgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jb252ZXJ0IGNvbG9ycyB0byBhcnJheSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuY2hhcnRDb2xvcnMgPSBbICAgeyBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9ycyB9ICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGEgPSAgICAgWyAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGEgICAgXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycz8uY2hhcnRUeXBlPy5uYW1lIT11bmRlZmluZWQpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmNoYXJ0VHlwZSA9ICAkc2NvcGUuZmQuUGFyYW1ldGVycy5jaGFydFR5cGUubmFtZSBcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmNoYXJ0VHlwZSA9ICAkc2NvcGUuZmQuUGFyYW1ldGVycy5jaGFydFR5cGUgLy9jb3VudGVyIGRvZXMgbm90IGhhdmUgLm5hbWVcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5jaGFydExhYmVsID0gICRzY29wZS5mZC5QYXJhbWV0ZXJzLmNoYXJ0TGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNoYXJlZERhdGEgPSBkYXRhPy5zaGFyZWREYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgLy9zdW1taW5nIGFsbCB2YWx1ZXMgZm9yIGNvdW50ZXJcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmNvdW50QWxsID0gJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhLnJlZHVjZSgocGFydGlhbFN1bSwgYSkgPT4gcGFydGlhbFN1bSArIGEsIDApOyBcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHQvLyAqKioqIEpTT05FIFNDUklQVElORyAqKioqKiAvL1xyXG5cdFx0XHRcdFx0Ly92YXIgdGVtcGxhdGUgPSB7YTogeyRldmFsOiBcImZvby5iYXJcIn19O1xyXG4gICAgICAgICAgICAgICAgICAgIC8vdmFyIHRlbXBsYXRlID0gXCIke2Zvby5iYXJ9XCJcclxuICAgICAgICAgICAgICAgICAgICAvL3ZhciB0ZW1wbGF0ZSA9IFwiJHttaW52YWx1ZX0gJHthbmFseXRpY3NbbWludmFsdWVdfVwiICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy92YXIgY29udGV4dCA9IHtmb286IHtiYXI6IFwiem9vXCJ9fSAgICBcclxuICAgICAgICAgICAgICAgICAgICAvLyRzY29wZS5mZC5sb2NhbFZhcnMudGVzdGpzb25lICA9IGpzb25lKHRlbXBsYXRlLCAkc2NvcGUuZmQubG9jYWxWYXJzKSAgXHJcblx0XHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNjcmlwdFZhbHVlICA9IGpzb25lKCRzY29wZS5mZC5QYXJhbWV0ZXJzLnNjcmlwdCB8fCAnJywgICRzY29wZS5mZC5sb2NhbFZhcnMpXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH07IFxyXG4gICAgXHJcbiAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybWF0TnVtYmVyID0gZnVuY3Rpb24obnVtKSAge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgbmV3Rm9ybWF0ICwgdXNlR3JvdXBpbmc7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB1c2VHcm91cGluZyA9ICRzY29wZS5mZC5QYXJhbWV0ZXJzLnVzZUdyb3VwaW5nU2VwYXJhdG9yIDsgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLmNoYXJ0RnJhY3Rpb25EaWdpdHMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBuZXdGb3JtYXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoXCJkZS1ERVwiLCB7IHVzZUdyb3VwaW5nOiB1c2VHcm91cGluZywgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogJHNjb3BlLmZkLlBhcmFtZXRlcnMuY2hhcnRGcmFjdGlvbkRpZ2l0cyAsICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6ICRzY29wZS5mZC5QYXJhbWV0ZXJzLmNoYXJ0RnJhY3Rpb25EaWdpdHMgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgbmV3Rm9ybWF0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KFwiZGUtREVcIiwgeyB1c2VHcm91cGluZzogdXNlR3JvdXBpbmcgfSk7ICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5kaXNhYmxlRm9ybWF0dGluZykgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudW0gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld0Zvcm1hdC5mb3JtYXQobnVtKVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnRXJyb3IhJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgIFxyXG4gICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNldFNlbGVjdGVkRGF0YXNldCA9IGZ1bmN0aW9uKGlkLHNhdmVkKSAge1xyXG4gICAgICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW09PXVuZGVmaW5lZCkgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbT17fVxyXG4gICAgICAgICAgICAgIC8vcGljayBvcmhlciBwYXJhbWV0ZXJzIGZyb20gZGF0YWJhc2VcclxuICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdldFB1Ymxpc2hlZFJlc291cmNlQnlJZChpZCxzYXZlZCk7XHJcbiAgICAgICAgICAgICAgXHJcblx0XHR9XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRQdWJsaXNoZWRSZXNvdXJjZUJ5SWQgPSBmdW5jdGlvbihpZCxzYXZlZCkgXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBsZXQgcG9zXHJcbiAgICAgICAgICAgIGlmIChzYXZlZCAmJiAkc2NvcGUuZmQuRm9ybURlZiE9PXVuZGVmaW5lZCAmJiAkc2NvcGUuZmQuRm9ybURlZiE9PW51bGwpXHJcbiAgICAgICAgICAgICAgeyBcclxuICAgICAgICAgICAgICAgICAgICBwb3MgPSAkc2NvcGUuZmQubG9jYWxWYXJzLnB1Ymxpc2hlZFJlc291cmNlTGlzdC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZihpZCk7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwb3M+PTApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWUgPSAkc2NvcGUuZmQubG9jYWxWYXJzLnB1Ymxpc2hlZFJlc291cmNlTGlzdFtwb3NdLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWREYXRhc2V0ID0gJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3RbcG9zXVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLmlkID0gaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCA9ICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZSArJyAoJyskc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLmlkICsnKSdcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtX2M9JHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbTtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCA9ICRzY29wZS5mZC5Gb3JtRGVmXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtTG9hZGVkPXRydWU7XHJcblxyXG4gICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICBwb3MgPSAkc2NvcGUuZmQubG9jYWxWYXJzLnB1Ymxpc2hlZFJlc291cmNlTGlzdC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZihpZCk7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBpZiAocG9zPj0wKXtcclxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5HZXRQdWJsaXNoZWRSZXNvdXJjZUJ5SWQoaWQpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkRGF0YXNldCA9ICRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0W3Bvc107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCA9IGRhdGEuZGF0YS5Gb3JtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuRm9ybURlZiA9ICRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jIT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlSWQ9JHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jLmlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlVmVyc2lvbj0kc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtX2MuVmVyc2lvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUmVsYXRlZD0kc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtX2MuUmVzb3VyY2VEZWZJZDsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5mcmVzaEZvcm09YW5ndWxhci5jb3B5KCRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW1fYy5Gb3JtKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5SZWxhdGVkID0gJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3RbcG9zXS5SZXNvdXJjZURlZklkXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdFcnJvciAtIHB1Ymxpc2hlZCBkYXRhc2V0IG5vdCBzZWxlY3RlZCBrdFRBc2tBZGQnLCdlcnJvcicpXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybUxvYWRlZD10cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICBcclxufVxyXG4gICAgICAgXHJcblxyXG4gICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5jYWxjdWxhdGVGdW5jdGlvbnM9IFsge2lkOjEsbmFtZTonc3VtJ30se2lkOjIsbmFtZTonbWVhbid9LHtpZDozLG5hbWU6J21pbid9LHtpZDo0LG5hbWU6J21heCd9LHtpZDo1LG5hbWU6J2NvdW50J30gXSAgICAgXHJcblxyXG5cclxuLy8gb3B0aW9ucy5wbHVnaW5zLmxlZ2VuZCA6ICB0cnVlXHJcblxyXG5cclxuICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5jaGFydE9wdGlvbnM9IHtcclxuICAgICAgICAgICAgICAgICAgICBzY2FsZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aWNrczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vcHJlY2lzaW9uOiAgZGVmaW5lZCBhcyBwYXJhbWV0ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfSAgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luczogeyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZ2VuZDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAncmdiKDI1NSwgOTksIDEzMiknXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcjogJ2xhYmVsJywgIC8vIHJlbmRlciAnbGFiZWwnLCAndmFsdWUnLCAncGVyY2VudGFnZScsICdpbWFnZScgb3IgY3VzdG9tIGZ1bmN0aW9uLCBkZWZhdWx0IGlzICdwZXJjZW50YWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDAsLy8gcHJlY2lzaW9uIGZvciBwZXJjZW50YWdlLCBkZWZhdWx0IGlzIDBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3daZXJvOiBmYWxzZSwgLy8gIHdoZXRoZXIgb3Igbm90IGxhYmVscyBvZiB2YWx1ZSAwIGFyZSBkaXNwbGF5ZWQsIGRlZmF1bHQgaXMgZmFsc2UgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IDE0LCAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udENvbG9yOiAnIzAwMCcsLy8gZm9udCBjb2xvciwgY2FuIGJlIGNvbG9yIGFycmF5IGZvciBlYWNoIGRhdGEgb3IgZnVuY3Rpb24gZm9yIGR5bmFtaWMgY29sb3IsIGRlZmF1bHQgaXMgZGVmYXVsdEZvbnRDb2xvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFN0eWxlOiAnbm9ybWFsJywgICAvLyBmb250IHN0eWxlLCBkZWZhdWx0IGlzIGRlZmF1bHRGb250U3R5bGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk6IFwiJ0hlbHZldGljYSBOZXVlJywgJ0hlbHZldGljYScsICdBcmlhbCcsIHNhbnMtc2VyaWZcIiwgICAgICAgICAvLyBmb250IGZhbWlseSwgZGVmYXVsdCBpcyBkZWZhdWx0Rm9udEZhbWlseSAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFNoYWRvdzogZmFsc2UsIC8vIGRyYXcgdGV4dCBzaGFkb3dzIHVuZGVyIGxhYmVscywgZGVmYXVsdCBpcyBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLmNoYXJ0UHJlY2lzaW9uIT11bmRlZmluZWQgJiYgJHNjb3BlLmZkLlBhcmFtZXRlcnMuY2hhcnRQcmVjaXNpb24hPW51bGwgKSB7ICAgICBcclxuICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5jaGFydE9wdGlvbnMuc2NhbGUudGlja3MucHJlY2lzaW9uID0gJHNjb3BlLmZkLlBhcmFtZXRlcnMuY2hhcnRQcmVjaXNpb25cclxuICAgICAgICAgIH1cclxuICAgICAgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycz8uY2hhcnRUeXBlPy5uYW1lICA9PT0gJ2JhcicgIHx8ICRzY29wZS5mZC5QYXJhbWV0ZXJzPy5jaGFydFR5cGU/Lm5hbWUgICA9PT0gJ2xpbmUnIHx8ICRzY29wZS5mZC5QYXJhbWV0ZXJzPy5jaGFydFR5cGU/Lm5hbWUgICA9PT0gJ3JhZGFyJyB8fCAkc2NvcGUuZmQuUGFyYW1ldGVycz8uY2hhcnRUeXBlPy5uYW1lICAgPT09ICdidWJibGUnKSAge1xyXG4gICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmNoYXJ0T3B0aW9ucy5wbHVnaW5zLmxlZ2VuZC5kaXNwbGF5PSBmYWxzZVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgIC8qICRzY29wZS5mZC5sb2NhbFZhcnMuY2hhcnRUeXBlcyA9IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpZDoxLG5hbWU6J2xpbmUnfSx7aWQ6MixuYW1lOidiYXInfSx7aWQ6MyxuYW1lOidyYWRhcid9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2lkOjQsbmFtZTonZG91Z2hudXQnfSx7aWQ6NSxuYW1lOidwaWUnfSx7aWQ6NixuYW1lOidwb2xhckFyZWEnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpZDo3LG5hbWU6J2J1YmJsZSd9ICx7aWQ6OTksbmFtZTonY291bnRlcid9LCB7aWQ6MTAwLCBuYW1lOidzY3JpcHQnIH1cclxuICAgICAgICAgICAgICAgIF0qL1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHQkc2NvcGUuZmQubG9jYWxWYXJzLmNoYXJ0VHlwZXMgPSBbIC8vcmVtb3ZlZCByYWRhciwgYnViYmxlIGFuZCBzY3JpcHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpZDoxLG5hbWU6J2xpbmUnfSx7aWQ6MixuYW1lOidiYXInfSwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aWQ6NCxuYW1lOidkb3VnaG51dCd9LHtpZDo1LG5hbWU6J3BpZSd9LHtpZDo2LG5hbWU6J3BvbGFyQXJlYSd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2lkOjk5LG5hbWU6J2NvdW50ZXInfSAse2lkOjEwMCwgbmFtZTonc2NyaXB0J31cclxuXHRcdFx0XHRcdFx0XHQgLy97aWQ6MyxuYW1lOidyYWRhcid9LHtpZDo3LG5hbWU6J2J1YmJsZSd9XHJcbiAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgIFxyXG5cdFx0XHRpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuY2hhcnRUeXBlPT11bmRlZmluZWQpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlBhcmFtZXRlcnMuY2hhcnRUeXBlPSRzY29wZS5mZC5sb2NhbFZhcnMuY2hhcnRUeXBlc1sxXSAvL2RlZmF1bHQgPSBiYXJcclxuXHRcdFx0XHRcdFx0XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnRvZ2dsZURyb3Bkb3duID0gZnVuY3Rpb24oKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dNZW51ID0gICRzY29wZS5sb2NhbFZhcnMuc2hvd01lbnUgPyBmYWxzZTogdHJ1ZSBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuJG9uKCdJbmxpbmVUYXNrQ2xvc2VkJyxmdW5jdGlvbihldmVudCxkYXRhKXtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdGFza0lkPWRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9ICRzY29wZS5sb2NhbE9iai5sb2FkZWRUYXNrcy5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS50YXNrSWQ7IH0pLmluZGV4T2YodGFza0lkKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocG9zPj0wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxPYmoubG9hZGVkVGFza3Muc3BsaWNlKHBvcywxKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuc2VsZWN0ZWRUYXNrcz09PXVuZGVmaW5lZCB8fCAkc2NvcGUuZmQuc2VsZWN0ZWRUYXNrcz09PW51bGwpICRzY29wZS5mZC5zZWxlY3RlZFRhc2tzID0gW107XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuRm9ybURlZiE9bnVsbCAmJiAkc2NvcGUuZmQuRm9ybURlZiE9PXVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5zZWxlY3RlZFRhc2tzID0gJHNjb3BlLmZkLkZvcm1EZWY7XHJcbiAgICAgICAgICAgICAgICB9ZWxzZSAgIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuRm9ybURlZiA9IFtdOyAgXHJcbiAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgaW5pdGlhdGVfdGFzayA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxvYWRUYXNrPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMudGFza0xvYWRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxPYmoubG9hZGVkVGFza3MubGVuZ3RoPjApICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxPYmoubG9hZGVkVGFza3NbMF0udGFza0lkLmlkICE9IGRhdGEudGFza0lkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxPYmoubG9hZGVkVGFza3MubGVuZ3RoPTA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkVGFzaz10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGxvYWRUYXNrPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsT2JqLmxvYWRlZFRhc2tzLnNwbGljZSgwLDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7ajwkc2NvcGUuZmQuc2VsZWN0ZWRUYXNrcy5sZW5ndGg7aisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLnNlbGVjdGVkVGFza3Nbal0udGFza0lkLmlkPT1kYXRhLnRhc2tJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbE9iai5sb2FkZWRUYXNrcy5wdXNoKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnRhc2tMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIC8vc3Vic2NyaWJlIHRvIGV2ZW50cyAtIGluaXRpYWxseSBvbmx5IHJlZnJlc2ggZGF0YSAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQgJiYgJHNjb3BlLmZkLlBhcmFtZXRlcnMud2lkZ2V0UmVmZXJlbmNlICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2hvYW1pID0nY2hhcnQnKyAkc2NvcGUuZmQuVXVpZFJlZiAgLy8gdmFsdWVTdGF0ZU5hbWUgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQgKyAnLScrICRzY29wZS5mZC5QYXJhbWV0ZXJzLndpZGdldFJlZmVyZW5jZSAvL29kYWJyYW5pVVVJRG5la29nRUxFTUVOVEEgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlciA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0LHdob2FtaSxcInZhbHVlQ2hhbmdlZFwiLHByb2Nlc3Nfb2JzZXJ2ZWRfZGF0YSk7ICAgXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgbGV0IGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7ICBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIC8qIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmTGlzdEJ5VHlwZShsYW5nLCd0YXNrJykudGhlbihmdW5jdGlvbihkYXRhKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQudGFza0xpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnRhc2tzTG9hZGVkPXRydWU7ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy50YXNrSXNPcGVuID0gZnVuY3Rpb24odGFza0lkKVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlzT3BlblBvcyA9ICRzY29wZS5sb2NhbE9iai5sb2FkZWRUYXNrcy5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS50YXNrSWQ7IH0pLmluZGV4T2YodGFza0lkKTtcclxuICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzT3BlblBvcz49MCkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAkc2NvcGUuZmQucGFzdGVGcm9tQ2xpcGJvYXJkID0gZnVuY3Rpb24odGFzayl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLnJlYWRUZXh0KCkudGhlbiggKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNsaXBib2FyZCBzdWNjZXNzZnVsbHkgcmVhZCAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXt0YXNrLndpZGdldElkID0gZGF0YX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNsaXBib2FyZCByZWFkIGZhaWxlZCAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdQYXN0ZSBmcm9tIGNsaXBib2FyZCBmYWlsZWQnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLkFkZFRhc2tUb0xpc3QgPSBmdW5jdGlvbiAoKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5zZWxlY3RlZFRhc2tzLnB1c2goe3dpZGdldElkOm51bGwsdGFza0lkOm51bGx9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQuQ29uZmlybVRhc2tMaXN0ID0gZnVuY3Rpb24gKClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLkZvcm1EZWYgPSAkc2NvcGUuZmQuc2VsZWN0ZWRUYXNrcztcclxuICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnNob3dDb25maXJtZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXskc2NvcGUuZmQuc2hvd0NvbmZpcm1lZD1mYWxzZX0sNTAwMCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5SZW1vdmVUYXNrRnJvbUxpc3QgPSBmdW5jdGlvbiAoaW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIGlmIChpbmRleD49MCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnNlbGVjdGVkVGFza3Muc3BsaWNlKGluZGV4LDEpOyAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgfSAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zYXZlVGFza1RvUmVzb3VyY2UgPSBmdW5jdGlvbih0ZGlkLHRlaSxkYXRhc2V0RGVmSWQsZGF0YXNldFJlY29yZElkKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBUYXNrRGF0YVNlcnZpY2Uuc2F2ZVRhc2tUb1Jlc291cmNlKHRlaSxkYXRhc2V0RGVmSWQsZGF0YXNldFJlY29yZElkLCRzY29wZS5mZC5wcmVzZW50YXRpb25JZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXRlLmdvKCdhcHAubmF2YmFyLnRhc2tzLmluaXRpYXRlJyx7aWQ6IHRkaWQsZnJvbVN0YXRlTmFtZTokc3RhdGUuY3VycmVudC5uYW1lLGZyb21TdGF0ZVBhcmFtczokc3RhdGUucGFyYW1zLG91dGNvbWVfaWQ6MCxwcmV2X3Rhc2tfZXhlY3V0ZV9pZDp0ZWl9KTtcclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2hvd1Byb3BlcnRpZXMgPSBmdW5jdGlvbihkYXRhc2V0TWFwcGVyVHlwZSxzaG93UHJvcGVydGllc1JpZ2h0KVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSA9IGRhdGFzZXRNYXBwZXJUeXBlO1xyXG4gICAgICAgICAgICAgICAgfWVsc2VcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wIHx8ICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGUhPWRhdGFzZXRNYXBwZXJUeXBlKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSA9IGRhdGFzZXRNYXBwZXJUeXBlO1xyXG4gICAgICAgICAgICAgICAgICAgZWxzZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPTA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKHNob3dQcm9wZXJ0aWVzUmlnaHQpICRzY29wZS5nc3J2Yy5zZXRGaWVsZFByb3BlcnRpZXMoJHNjb3BlLmZkKTtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZCAhPSB1bmRlZmluZWQpICB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZpZWxkc0xpc3QgPSBbXVxyXG4gICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdldEZpZWxkTmFtZXNGcm9tT2JqZWN0KCRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLCAkc2NvcGUuZmQubG9jYWxWYXJzLmZpZWxkc0xpc3QpXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuIFxyXG4gICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRGaWVsZE5hbWVzRnJvbU9iamVjdCA9IGZ1bmN0aW9uIChvYmosIGZpZWxkc0xpc3QpICAgLy8gZmluZCBGaWVsZE5hbWVzIGluIGdpdmVuIERhc2hib2FyZCBvYmplY3QgcmVjdXJzaXZlbHkgXHJcbiAgICAgey8vIGZpZWxkc0xpc3QgIGlzIHJldHVybiB2YXJpYWJsZSAodXNlZCBmb3IgbXVsdGlwbGUgc2VsZWN0KVxyXG4gICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICB2YXIgbyA9IHt9O1xyXG4gICAgICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoICh0eXBlb2Yob2JqW2tleV0pID09PSAnb2JqZWN0JykgJiYgb2JqW2tleV0gICAgJiYga2V5ICE9ICdOYW1lRmllbGQnKSAgeyAvL0RvIE5PVCBwYXJzZSAnTmFtZUZpZWxkJyAgKHdlIG5lZWQgaXQgYXMgaXQgaXMpXHJcbiAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRGaWVsZE5hbWVzRnJvbU9iamVjdChvYmpba2V5XSwgZmllbGRzTGlzdClcclxuICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgZWxzZSB7ICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXkgPT0gJ0ZpZWxkTmFtZScgICkgeyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgb1trZXldPSBvYmpba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ID09ICdQcmVzZW50YXRpb25JZCcgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9bJ2lkJ109IG9ialtrZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleSA9PSAnTGFiZWwnICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvWyduYW1lJ109IG9ialtrZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pIDsgXHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCBvWydGaWVsZE5hbWUnXSAmJiBPYmplY3Qua2V5cyhvKS5sZW5ndGggPiAwICkgZmllbGRzTGlzdC5wdXNoKG8pICAgXHJcbiAgICB9OyBcclxuXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgfSxcclxuICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICB9ICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgfVxyXG4gIFxyXG59O1xyXG5cclxuXHJcbi8qXHJcbiAkc2NvcGUuZmQubG9jYWxWYXJzLm5ld2RhdGEgPSAge1xyXG4gICAgICAgIGxhYmVsczogWydSZWQnLCAnQmx1ZScsICdZZWxsb3cnLCAnR3JlZW4nLCAnUHVycGxlJywgJ09yYW5nZSddLFxyXG4gICAgICAgIGRhdGFzZXRzOiBbe1xyXG4gICAgICAgICAgICBsYWJlbDogJyMgb2YgVm90ZXMnLFxyXG4gICAgICAgICAgICBkYXRhOiBbMTIsIDE5LCAzLCA1LCAyLCAzXSxcclxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBbXHJcbiAgICAgICAgICAgICAgICAncmdiYSgyNTUsIDk5LCAxMzIsIDAuMiknLFxyXG4gICAgICAgICAgICAgICAgJ3JnYmEoNTQsIDE2MiwgMjM1LCAwLjIpJyxcclxuICAgICAgICAgICAgICAgICdyZ2JhKDI1NSwgMjA2LCA4NiwgMC4yKScsXHJcbiAgICAgICAgICAgICAgICAncmdiYSg3NSwgMTkyLCAxOTIsIDAuMiknLFxyXG4gICAgICAgICAgICAgICAgJ3JnYmEoMTUzLCAxMDIsIDI1NSwgMC4yKScsXHJcbiAgICAgICAgICAgICAgICAncmdiYSgyNTUsIDE1OSwgNjQsIDAuMiknXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiBbXHJcbiAgICAgICAgICAgICAgICAncmdiYSgyNTUsIDk5LCAxMzIsIDEpJyxcclxuICAgICAgICAgICAgICAgICdyZ2JhKDU0LCAxNjIsIDIzNSwgMSknLFxyXG4gICAgICAgICAgICAgICAgJ3JnYmEoMjU1LCAyMDYsIDg2LCAxKScsXHJcbiAgICAgICAgICAgICAgICAncmdiYSg3NSwgMTkyLCAxOTIsIDEpJyxcclxuICAgICAgICAgICAgICAgICdyZ2JhKDE1MywgMTAyLCAyNTUsIDEpJyxcclxuICAgICAgICAgICAgICAgICdyZ2JhKDI1NSwgMTU5LCA2NCwgMSknXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIGJvcmRlcldpZHRoOiAxXHJcbiAgICAgICAgfV1cclxuICAgIH0qL1xyXG4gICAgXHJcbiAgICBcclxuICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5jaGFydE9wdGlvbnMucGx1Z2lucy5sYWJlbHMuZ2VuZXJhdGVMYWJlbHMoY2hhcnQpIHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFzZXRzID0gY2hhcnQuZGF0YS5kYXRhc2V0cztcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7bGFiZWxzOiB7dXNlUG9pbnRTdHlsZSwgcG9pbnRTdHlsZSwgdGV4dEFsaWduLCBjb2xvcn19ID0gY2hhcnQubGVnZW5kLm9wdGlvbnM7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3R5bGUgPSBtZXRhLmNvbnRyb2xsZXIuZ2V0U3R5bGUodXNlUG9pbnRTdHlsZSA/IDAgOiB1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvcmRlcldpZHRoID0gdG9QYWRkaW5nKHN0eWxlLmJvcmRlcldpZHRoKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogZGF0YXNldHNbbWV0YS5pbmRleF0ubGFiZWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsU3R5bGU6IHN0eWxlLmJhY2tncm91bmRDb2xvcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRDb2xvcjogY29sb3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW46ICFtZXRhLnZpc2libGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lQ2FwOiBzdHlsZS5ib3JkZXJDYXBTdHlsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVEYXNoOiBzdHlsZS5ib3JkZXJEYXNoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZURhc2hPZmZzZXQ6IHN0eWxlLmJvcmRlckRhc2hPZmZzZXQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lSm9pbjogc3R5bGUuYm9yZGVySm9pblN0eWxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVdpZHRoOiAoYm9yZGVyV2lkdGgud2lkdGggKyBib3JkZXJXaWR0aC5oZWlnaHQpIC8gNCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVN0eWxlOiBzdHlsZS5ib3JkZXJDb2xvcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50U3R5bGU6IHBvaW50U3R5bGUgfHwgc3R5bGUucG9pbnRTdHlsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uOiBzdHlsZS5yb3RhdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogdGV4dEFsaWduIHx8IHN0eWxlLnRleHRBbGlnbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzZXRJbmRleDogbWV0YS5pbmRleFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgXG4ndXNlIHN0cmljdCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3RUYXNrQ29udGFpbmVyICgpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrQ29udGFpbmVyLmh0bWwnLFxyXG4gICAgICAgICAgICAgLypzY29wZToge1xyXG4gICAgICAgICAgICAgICAgaW5wdXRQYXJhbWV0ZXJzOiAnPScsXHJcbiAgICAgICAgICAgICAgICAvL3NlbGVjdGVkSXRlbTogJz0nLFxyXG4gICAgICAgICAgICAgICAgaW5wdXRBcnJheTogJz0nLFxyXG4gICAgICAgICAgICB9LCovXHJcbiAgICAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbigkc2NvcGUsJHJvb3RTY29wZSwkdGltZW91dCxVc2VyU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSxUYXNrRGF0YVNlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxHcmlkc3RlclNlcnZpY2UpIHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yz0gR3JpZHN0ZXJTZXJ2aWNlO1xyXG4gICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSgkc2NvcGUuZmQuc2VsZWN0ZWRUYXNrcykpICRzY29wZS5mZC5zZWxlY3RlZFRhc2tzPVtdO1xyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24hPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tFeGVjdXRlSWQgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRhc2tfZXhlY3V0ZV9pZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzID09IHVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycz17fTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbE9iaj17bG9hZGVkVGFza3MgOiBbXX07XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnRhc2tJdGVtID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRUYXNrID0ge307XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dNZW51ID0gZmFsc2VcclxuICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnRvZ2dsZURyb3Bkb3duID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93TWVudSA9ICAkc2NvcGUubG9jYWxWYXJzLnNob3dNZW51ID8gZmFsc2U6IHRydWUgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLiRvbignSW5saW5lVGFza0Nsb3NlZCcsZnVuY3Rpb24oZXZlbnQsZGF0YSl7XHJcbiAgICAgICAgICAgICAgICAgICAgLy92YXIgaW5kZXg9ZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAvLyRzY29wZS5sb2NhbE9iai5sb2FkZWRUYXNrcy5zcGxpY2UoaW5kZXgsMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRhc2tJZD1kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBwb3MgPSAkc2NvcGUubG9jYWxPYmoubG9hZGVkVGFza3MubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUudGFza0lkOyB9KS5pbmRleE9mKHRhc2tJZCk7XHJcbiAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwb3M+PTApXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsT2JqLmxvYWRlZFRhc2tzLnNwbGljZShwb3MsMSk7ICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLnNlbGVjdGVkVGFza3M9PT11bmRlZmluZWQgfHwgJHNjb3BlLmZkLnNlbGVjdGVkVGFza3M9PT1udWxsKSAkc2NvcGUuZmQuc2VsZWN0ZWRUYXNrcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLkZvcm1EZWYhPW51bGwgJiYgJHNjb3BlLmZkLkZvcm1EZWYhPT11bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuc2VsZWN0ZWRUYXNrcyA9ICRzY29wZS5mZC5Gb3JtRGVmO1xyXG4gICAgICAgICAgICAgICAgfWVsc2VcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5Gb3JtRGVmID0gW107XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGxldCBpbml0aWF0ZV90YXNrID0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbG9hZFRhc2s9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy50YXNrTG9hZGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbE9iai5sb2FkZWRUYXNrcy5sZW5ndGg+MClcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxPYmoubG9hZGVkVGFza3NbMF0udGFza0lkLmlkICE9IGRhdGEudGFza0lkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxPYmoubG9hZGVkVGFza3MubGVuZ3RoPTA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkVGFzaz10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfWVsc2UgbG9hZFRhc2s9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgLy8gIGlmIChsb2FkVGFzaylcclxuICAgICAgICAgICAgICAgICAgICAvL3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsT2JqLmxvYWRlZFRhc2tzLnNwbGljZSgwLDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwO2o8JHNjb3BlLmZkLnNlbGVjdGVkVGFza3MubGVuZ3RoO2orKylcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuc2VsZWN0ZWRUYXNrc1tqXS50YXNrSWQuaWQ9PWRhdGEudGFza0lkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxPYmoubG9hZGVkVGFza3MucHVzaChkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnRhc2tMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy99XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwO2k8JHNjb3BlLmZkLnNlbGVjdGVkVGFza3MubGVuZ3RoO2krKylcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSAnaW5pdGlhdGVUYXNrU3RhdGVOYW1lJyskc2NvcGUuZmQuc2VsZWN0ZWRUYXNrc1tpXS53aWRnZXRJZDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGVwZW5kZW50X2ZpZWxkID0gJ3Rhc2tDb250YWluZXInKyRzY29wZS5mZC5VdWlkUmVmKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udHJhbnNhY3Rpb25faWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3QsZGVwZW5kZW50X2ZpZWxkLFwidGFza0luaXRpYXRlZFwiLGluaXRpYXRlX3Rhc2spOyAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5Mb2FkVGFzaz1mdW5jdGlvbih0YXNrSWQsb3V0Y29tZUlkLHByZXZpb3VzVGFzayxvcGVuVGFza1R5cGUpXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxPYmoubG9hZGVkVGFza3Muc3BsaWNlKDAsMCx7J3Rhc2tJZCc6dGFza0lkLCdvdXRjb21lSWQnOm91dGNvbWVJZCwncHJldmlvdXNUYXNrJzpwcmV2aW91c1Rhc2ssJ2xvY2FsVmFycyc6bG9jYWxWYXJzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICAgICBsZXQgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZzsgICAgXHJcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUobGFuZywndGFzaycpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnRhc2tMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC50YXNrc0xvYWRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMudGFza0lzT3BlbiA9IGZ1bmN0aW9uKHRhc2tJZClcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBpc09wZW5Qb3MgPSAkc2NvcGUubG9jYWxPYmoubG9hZGVkVGFza3MubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUudGFza0lkOyB9KS5pbmRleE9mKHRhc2tJZCk7XHJcbiAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09wZW5Qb3M+PTApIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQucGFzdGVGcm9tQ2xpcGJvYXJkID0gZnVuY3Rpb24odGFzayl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLnJlYWRUZXh0KCkudGhlbiggKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNsaXBib2FyZCBzdWNjZXNzZnVsbHkgcmVhZCAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXt0YXNrLndpZGdldElkID0gZGF0YX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNsaXBib2FyZCByZWFkIGZhaWxlZCAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdQYXN0ZSBmcm9tIGNsaXBib2FyZCBmYWlsZWQnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLkFkZFRhc2tUb0xpc3QgPSBmdW5jdGlvbiAoKXtcclxuICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuc2VsZWN0ZWRUYXNrcy5wdXNoKHt3aWRnZXRJZDpudWxsLHRhc2tJZDpudWxsfSk7XHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLkNvbmZpcm1UYXNrTGlzdCA9IGZ1bmN0aW9uICgpe1xyXG4gICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuRm9ybURlZiA9ICRzY29wZS5mZC5zZWxlY3RlZFRhc2tzO1xyXG4gICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuc2hvd0NvbmZpcm1lZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyRzY29wZS5mZC5zaG93Q29uZmlybWVkPWZhbHNlfSw1MDAwKTtcclxuICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5SZW1vdmVUYXNrRnJvbUxpc3QgPSBmdW5jdGlvbiAoaW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIGlmIChpbmRleD49MCl7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuc2VsZWN0ZWRUYXNrcy5zcGxpY2UoaW5kZXgsMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zYXZlVGFza1RvUmVzb3VyY2UgPSBmdW5jdGlvbih0ZGlkLHRlaSxkYXRhc2V0RGVmSWQsZGF0YXNldFJlY29yZElkKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBUYXNrRGF0YVNlcnZpY2Uuc2F2ZVRhc2tUb1Jlc291cmNlKHRlaSxkYXRhc2V0RGVmSWQsZGF0YXNldFJlY29yZElkLCRzY29wZS5mZC5wcmVzZW50YXRpb25JZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXRlLmdvKCdhcHAubmF2YmFyLnRhc2tzLmluaXRpYXRlJyx7aWQ6IHRkaWQsZnJvbVN0YXRlTmFtZTokc3RhdGUuY3VycmVudC5uYW1lLGZyb21TdGF0ZVBhcmFtczokc3RhdGUucGFyYW1zLG91dGNvbWVfaWQ6MCxwcmV2X3Rhc2tfZXhlY3V0ZV9pZDp0ZWl9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfSAgICAgICBcclxuICAgICAgICAgICAgICBcclxuICAgIH1cclxuICBcclxufTtcbid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdFRhc2tEYXRhc2V0TGlzdCAoJHJvb3RTY29wZSxNZXNzYWdpbmdTZXJ2aWNlLFRhc2tEYXRhU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSwkdGltZW91dCxXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLCRxLEthdGFseW9TdGF0ZU1hbmFnZXIsVXRpbGl0eVNlcnZpY2UpIHtcclxuICAgXHJcbiAgICB2YXIgY29udHJvbGxlciA9IFsnJHNjb3BlJywgJyR1aWJNb2RhbCcsJyRzdGF0ZVBhcmFtcycsJyR0aW1lb3V0JywnQ29kZXNTZXJ2aWNlJywnUmVzb3VyY2VzRGF0YVNlcnZpY2UnLCckcm9vdFNjb3BlJywnUHJvY2Vzc2luZ1NlcnZpY2UnLCdXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlJywnR3JpZHN0ZXJTZXJ2aWNlJywnVXRpbGl0eVNlcnZpY2UnLCAnTWVzc2FnaW5nU2VydmljZScsJ0NPREVTX0NPTlNUJywnVGFza0RhdGFTZXJ2aWNlJywnS2F0YWx5b1N0YXRlTWFuYWdlcicsJyRxJywnJGZpbHRlcicsJyR0ZW1wbGF0ZUNhY2hlJywnJGNvbXBpbGUnLCckZWxlbWVudCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoJHNjb3BlLCR1aWJNb2RhbCwkc3RhdGVQYXJhbXMsJHRpbWVvdXQsQ29kZXNTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLCRyb290U2NvcGUsUHJvY2Vzc2luZ1NlcnZpY2UsV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZSxHcmlkc3RlclNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlLCBNZXNzYWdpbmdTZXJ2aWNlLENPREVTX0NPTlNULFRhc2tEYXRhU2VydmljZSxLYXRhbHlvU3RhdGVNYW5hZ2VyLCRxLCRmaWx0ZXIsJHRlbXBsYXRlQ2FjaGUsJGNvbXBpbGUsJGVsZW1lbnQpIHtcclxuICAgICAgXHJcbiAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycz09PXVuZGVmaW5lZCkgJHNjb3BlLmZkLmxvY2FsVmFycz17fVxyXG5cclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldGxpc3RsaW5rZWQ9IGZhbHNlXHJcbiAgICAkc2NvcGUuQ1RSTD0na3RUYXNrRGF0YXNldExpc3QnXHJcbiAgICAkc2NvcGUuZ3NydmM9R3JpZHN0ZXJTZXJ2aWNlO1xyXG4gICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT0wO1xyXG4gICAgJHNjb3BlLmZkLmxvY2FsVmFycy5Jbml0aWFsTG9hZD10cnVlO1xyXG4gICAgXHJcbiAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnRhYmxlUG9zaXRpb24gPSAkZWxlbWVudFxyXG4gICAgXHJcbiAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNyY190eXBlX3RleHQ9Q09ERVNfQ09OU1QuX1BPUFVMQVRFX1RZUEVfOyBcclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VhcmNoRm9ybURvd25sb2FkZWQgPSBmYWxzZTtcclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2hvd1NlYXJjaEZpbHRlcnM9dHJ1ZTtcclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRlZCA9IGZhbHNlO1xyXG4gICAgJHNjb3BlLmZkLmxvY2FsVmFycy5oaWRlUG9wdWxhdGVNZXRob2Q9dHJ1ZVxyXG4gICAgJHNjb3BlLmZkLlBvcHVsYXRlTWV0aG9kPVwiTVwiXHJcbiAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmxvYWRpbmdQYXJhbXMgPSB0cnVlXHJcbiAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlVHlwZXNMaXN0PVt7dHlwZTonZGF0YXNldCcsbmFtZTonRGF0YXNldCd9LHt0eXBlOidmaWxlJyxuYW1lOidGaWxlJ31dXHJcbiAgICAkc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlPXt9O1xyXG4gICAgJHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW1zPVtdO1xyXG4gICAgJHNjb3BlLnRhc2tJZD0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnVpZDtcclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMudGFza0lkPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udWlkO1xyXG5cdFxyXG5cdFxyXG4gICAgJHNjb3BlLmZkLmxvY2FsVmFycy5wYXJlbnRSZXNvdXJjZUlkPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udWlkO1xyXG4gICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMucGFyZW50UmVzb3VyY2VJZD09dW5kZWZpbmVkKSAkc2NvcGUuZmQubG9jYWxWYXJzLnBhcmVudFJlc291cmNlSWQgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2VJZFxyXG4gICAgaWYgKCRzY29wZS50YXNrSWQ9PXVuZGVmaW5lZCkgICRzY29wZS50YXNrSWQ9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi51aWQ7XHJcbiAgICBpZiAoJHNjb3BlLnRhc2tJZD09dW5kZWZpbmVkKSAkc2NvcGUudGFza0lkPVwiMFwiXHJcbiAgICAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnJlc291cmNlVmVyc2lvbiA9ICRzdGF0ZVBhcmFtcy52ZXJzaW9uO1xyXG5cdFxyXG5cdCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFyZW50V2lkZ2V0VWlkID0gJHNjb3BlLmZkLlV1aWRSZWZcclxuXHJcbiAgICBpZiAoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5yZXNvdXJjZVZlcnNpb249PXVuZGVmaW5lZCkgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5yZXNvdXJjZVZlcnNpb24gPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlZlcnNpb24gfHwgMFxyXG5cclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMudGFza0lkPSRzY29wZS50YXNrSWQ7XHJcbiAgICAkc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFR5cGUgPSA0O1xyXG4gICAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXN1bHRzID0ge31cclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybVBhcmFtcz17Zm9ybVZpZXdUeXBlOjEsc2hvd0dyaWROYXZpZ2F0aW9uOmZhbHNlfTtcclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc3FGb3JtUGFyYW1zID0ge2Zvcm1WaWV3VHlwZToxLHNob3dHcmlkTmF2aWdhdGlvbjpmYWxzZX07XHJcbiAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmNhcmRMYXlvdXRQYXJhbXM9e2Zvcm1WaWV3VHlwZToxLHNob3dHcmlkTmF2aWdhdGlvbjpmYWxzZX07XHJcblxyXG4gICAgJHNjb3BlLmZkLmxvY2FsVmFycy5UYWJsZVByZWZpeCA9ICdyZXNvdXJjZScrJHNjb3BlLmZkLlJlbGF0ZWRcclxuICAgICAgICAgICAgICAgXHJcbiAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnBhcmVudERhdGFzZXREZWZJZD0kc2NvcGUuZmQuUmVsYXRlZDtcclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMuYW5pbWF0aW9uc0VuYWJsZWQgPSB0cnVlO1xyXG4gICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzPT11bmRlZmluZWQpICAkc2NvcGUuZmQuUGFyYW1ldGVycyA9IHt9XHJcbiAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMudGFibGU9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLlBhcmFtZXRlcnMudGFibGU9e30gXHJcbiAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuQW5hbHl0aWNzPT11bmRlZmluZWQpICAkc2NvcGUuZmQuUGFyYW1ldGVycy5BbmFseXRpY3M9W11cclxuICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5TZWxlY3RlZFJlc291cmNlVHlwZT09dW5kZWZpbmVkKSAgICRzY29wZS5mZC5QYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlPSdkYXRhc2V0J1xyXG5cclxuICAgIFxyXG4gICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzTGFuZz09dW5kZWZpbmVkKSAgJHNjb3BlLmZkLlBhcmFtZXRlcnNMYW5nID0ge31cclxuICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVyc0xhbmcuUGFnZXJMYWJlbDE9PXVuZGVmaW5lZCkgICAkc2NvcGUuZmQuUGFyYW1ldGVyc0xhbmcuUGFnZXJMYWJlbDE9J2l0ZW1zIHBlciBwYWdlIHwgUGFnZTonXHJcbiAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnNMYW5nLlBhZ2VyTGFiZWwyPT11bmRlZmluZWQpICAgJHNjb3BlLmZkLlBhcmFtZXRlcnNMYW5nLlBhZ2VyTGFiZWwyPSdvZidcclxuICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVyc0xhbmcuUGFnZXJMYWJlbDM9PXVuZGVmaW5lZCkgICAkc2NvcGUuZmQuUGFyYW1ldGVyc0xhbmcuUGFnZXJMYWJlbDM9J2l0ZW1zJ1xyXG4gICAgXHJcbiAgICAkc2NvcGUuZmQubG9jYWxWYXJzWyRzY29wZS5mZC5pZF0gPSAkc2NvcGUuZmQubG9jYWxWYXJzXHJcbiAgICBcclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMuU2hvd0FkdmFuY2VkUHJvcGVydGllcyA9IHRydWVcclxuICAgICRzY29wZS5mZC5QYXJhbWV0ZXJzLlNob3dBZHZhbmNlZFByb3BlcnRpZXMgPSB0cnVlXHJcbiAgICBcclxuICAgICRzY29wZS5mZC5QYXJhbWV0ZXJzLlBhZ2VyTGFiZWwxID0gJHNjb3BlLmZkLlBhcmFtZXRlcnNMYW5nLlBhZ2VyTGFiZWwxXHJcbiAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5QYWdlckxhYmVsMiA9ICRzY29wZS5mZC5QYXJhbWV0ZXJzTGFuZy5QYWdlckxhYmVsMlxyXG4gICAgJHNjb3BlLmZkLlBhcmFtZXRlcnMuUGFnZXJMYWJlbDMgPSAkc2NvcGUuZmQuUGFyYW1ldGVyc0xhbmcuUGFnZXJMYWJlbDNcclxuICAgICRzY29wZS5mZC5QYXJhbWV0ZXJzLk5vRGF0YU1zZyA9ICRzY29wZS5mZC5QYXJhbWV0ZXJzTGFuZy5Ob0RhdGFNc2dcclxuXHJcbiAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZT09dW5kZWZpbmVkIHx8ICRzY29wZS5mZC5QYXJhbWV0ZXJzLlByZXNlbnRhdGlvblR5cGU9PW51bGwpICRzY29wZS5mZC5QYXJhbWV0ZXJzLlByZXNlbnRhdGlvblR5cGU9J3RhYmxlJztcclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZHN0ZXJUeXBlPSRzY29wZS5mZC5QYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlO1xyXG4gICAgJHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5pdGVtVmFsdWUgPSB7dmFsOm51bGx9O1xyXG4gICAgaWYgKCRzY29wZS5mZC5NdWx0aWxpbmUpICRzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuaXRlbVZhbHVlLnZhbCA9IFtdXHJcbiAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5NdWx0aWxpbmUgPSAkc2NvcGUuZmQuTXVsdGlsaW5lXHJcblxyXG4gICAgJHNjb3BlLmZkLmxvY2FsVmFycy5pc0NvbGxhcHNlZCA9ICRzY29wZS5mZC5QYXJhbWV0ZXJzLlNlYXJjaEZvcm1Db2xsYXBzZWQ7XHJcbiAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5pc0NvbGxhcHNlZD09dW5kZWZpbmVkKSAkc2NvcGUuZmQubG9jYWxWYXJzLmlzQ29sbGFwc2VkID1mYWxzZTtcclxuICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLmlzQ29sbGFwc2VkRGF0YT09dW5kZWZpbmVkKSAkc2NvcGUuZmQubG9jYWxWYXJzLmlzQ29sbGFwc2VkRGF0YSA9ZmFsc2U7XHJcbiAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5pc0NvbGxhcHNlZEFjdGlvbnM9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLmxvY2FsVmFycy5pc0NvbGxhcHNlZEFjdGlvbnMgPWZhbHNlO1xyXG4gICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93UmVsYXRlZFJlc291cmNlcz1mYWxzZVxyXG4gICAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZWxhdGVkUmVzb3VyY2VzUHVibGlzaGVkTGlzdD17fVxyXG4gICAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZWxhdGVkUmVzb3VyY2VzQ29sdW1ucz17fVxyXG4gICAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZURlZmluaXRpb24gPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uO1xyXG4gICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQgPSB7XHJcbiAgXHRcdFx0XHRpZDogJzEnLFxyXG4gIFx0XHRcdFx0bmFtZTogJ0hvbWUnLFxyXG4gIFx0XHRcdFx0d2lkZ2V0czoge31cclxuXHRcdFx0XHR9IDtcclxuICAgICAgICBcclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkQ2FyZCA9IHtcclxuICBcdFx0XHRcdGlkOiAnMScsXHJcbiAgXHRcdFx0XHRuYW1lOiAnSG9tZScsXHJcbiAgXHRcdFx0XHR3aWRnZXRzOiB7fVxyXG5cdFx0XHRcdH0gO1xyXG4gICAgJHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YSA9IHtcclxuICAgICAgICAvLyAgY29sdW1uRGVmczogY29sRGVmcyxcclxuICAgICAgICAvL2VuYWJsZUdyaWRNZW51OiB0cnVlLFxyXG4gICAgICAgIHNob3dHcmlkRm9vdGVyOiB0cnVlLFxyXG4gICAgICAgIHNob3dDb2x1bW5Gb290ZXI6IHRydWUsXHJcbiAgICAgICAgZW5hYmxlUm93U2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgICAgIG11bHRpU2VsZWN0OiAkc2NvcGUuZmQuTXVsdGlsaW5lLFxyXG4gICAgICAvLyAgZW5hYmxlSG9yaXpvbnRhbFNjcm9sbGJhciA6IDEsXHJcbiAgICAgICAvLyBlbmFibGVWZXJ0aWNhbFNjcm9sbGJhciA6IDIsXHJcbiAgICAgICAgZW5hYmxlRmlsdGVyaW5nOiB0cnVlLFxyXG4gICAgICAgIGZvbnRTaXplOiAxMixcclxuICAgICAgICBjZWxsUGFkZGluZzozMCxcclxuICAgICAgICBlbmFibGVSb3dIZWFkZXJTZWxlY3Rpb246IGZhbHNlLFxyXG4gICAgICAgIGVuYWJsZUNvbHVtblJlc2l6aW5nOiB0cnVlLFxyXG4gICAgICAgIGVuYWJsZUNvbHVtblJlb3JkZXJpbmc6IHRydWUsXHJcbiAgICAgICAgLy91c2VFeHRlcm5hbFBhZ2luYXRpb246IGZhbHNlLFxyXG4gICAgICAgIHBhZ2luYXRpb25QYWdlU2l6ZXM6IFsxMCwgMjUsIDUwLDEwMCwyMDAsNTAwLDEwMDAsNTAwMCwxMDAwMF0sXHJcbiAgICAgICAvLyBlbmFibGVQYWdpbmF0aW9uQ29udHJvbHM6IHRydWUsXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5wcmludGFibGUgPT0gdHJ1ZSkge1xyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuc2hvd0NvbHVtbkZvb3RlciA9IGZhbHNlO1xyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuc2hvd0NvbHVtbkZvb3RlciA9IGZhbHNlO1xyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuc2hvd0dyaWRGb290ZXIgPSBmYWxzZTtcclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmVuYWJsZVBhZ2luYXRpb25Db250cm9scyA9IGZhbHNlOyBcclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmVuYWJsZVZlcnRpY2FsU2Nyb2xsYmFyID0gMDsgIFxyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZW5hYmxlSG9yaXpvbnRhbFNjcm9sbGJhciA9IDA7ICBcclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmVuYWJsZUZpbHRlcmluZyA9IGZhbHNlOyAgXHJcbiAgICAgICAgXHJcbiAgICB9XHJcbiAgICAgIFxyXG4gICAgdmFyIHBhZ2luYXRpb25PcHRpb25zID0ge1xyXG4gICAgICAgIHBhZ2VOdW1iZXI6IDEsXHJcbiAgICAgICAgcGFnZVNpemU6IDEwLFxyXG4gICAgICAgIHNvcnQ6IG51bGxcclxuICAgICAgfTtcclxuICAgICAgXHJcbiAgICAgICAkc2NvcGUucGFnaW5hdGlvbk9wdGlvbnMgPSB7XHJcbiAgICAgICAgcGFnZU51bWJlcjogMSxcclxuICAgICAgICBwYWdlU2l6ZTogMTAsXHJcbiAgICAgICAgc29ydDogbnVsbFxyXG4gICAgfTtcclxuICAgIFxyXG4gICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVsYXRlZCA9IHtcclxuICAgICAgICAgLy8gIGNvbHVtbkRlZnM6IGNvbERlZnMsXHJcbiAgICAgICAgICBlbmFibGVHcmlkTWVudTogdHJ1ZSxcclxuICAgICAgICAgIHNob3dHcmlkRm9vdGVyOiB0cnVlLFxyXG4gICAgICAgICAgc2hvd0NvbHVtbkZvb3RlcjogdHJ1ZSxcclxuICAgICAgICAgIGVuYWJsZVJvd1NlbGVjdGlvbjogZmFsc2UsXHJcbiAgICAgICAgICBtdWx0aVNlbGVjdDogZmFsc2UsXHJcbiAgICAgICAgICBlbmFibGVIb3Jpem9udGFsU2Nyb2xsYmFyIDogMiwgXHJcbiAgICAgICAgICBuYWJsZVZlcnRpY2FsU2Nyb2xsYmFyIDogMixcclxuICAgICAgICAgIGVuYWJsZUZpbHRlcmluZzogdHJ1ZSxcclxuICAgICAgICAgIGVuYWJsZVJvd0hlYWRlclNlbGVjdGlvbjogdHJ1ZSxcclxuICAgICAgICAgIGVuYWJsZUNvbHVtblJlc2l6aW5nOiB0cnVlLFxyXG4gICAgICAgICAgbWluUm93c1RvU2hvdzogMixcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy9NSUdPUkNIQVJUXHJcbiAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmNhbGN1bGF0ZUZ1bmN0aW9uPSBbIHtpZDoxLG5hbWU6J3N1bSd9LHtpZDoyLG5hbWU6J21lYW4nfSx7aWQ6MyxuYW1lOidtaW4nfSx7aWQ6NCxuYW1lOidtYXgnfSx7aWQ6NSxuYW1lOidjb3VudCd9IF1cclxuICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuY2hhcnRPcHRpb25zPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luQXRaZXJvOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luQXRaZXJvOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAvLyRzY29wZS5mZC5sb2NhbFZhcnMuY2hhcnRUeXBlcyA9IFt7aWQ6MSxuYW1lOidsaW5lJ30se2lkOjIsbmFtZTonYmFyJ30se2lkOjMsbmFtZToncmFkYXInfSx7aWQ6NCxuYW1lOidkb3VnaG51dCd9LHtpZDo1LG5hbWU6J3BpZSd9LHtpZDo2LG5hbWU6J3BvbGFyQXJlYSd9LHtpZDo3LG5hbWU6J2J1YmJsZSd9XVxyXG5cdFx0ICAgJHNjb3BlLmZkLmxvY2FsVmFycy5jaGFydFR5cGVzID0gW3tpZDoxLG5hbWU6J2xpbmUnfSx7aWQ6MixuYW1lOidiYXInfSx7aWQ6NCxuYW1lOidkb3VnaG51dCd9LHtpZDo1LG5hbWU6J3BpZSd9LHtpZDo2LG5hbWU6J3BvbGFyQXJlYSd9XVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAvLyRzY29wZS5mZC5Qb3B1bGF0ZVR5cGU9MTtcclxuICAgICAgJHNjb3BlLmZkLlBhcmVudERhdGFzZXREZWZJZD0kc2NvcGUuZmQuUmVsYXRlZDtcclxuICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5QYXJlbnREYXRhc2V0RGVmSWQgPSAkc2NvcGUuZmQuUGFyZW50RGF0YXNldERlZklkXHJcbiAgICAgICRzY29wZS5wcmV2VGFza0V4ZUlkID0gICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucHJldl90YXNrX2lkO1xyXG4gICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1UeXBlPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV90eXBlO1xyXG4gICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNvdXJjZV90eXBlPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uc291cmNlX3R5cGU7XHJcbiAgICAgICRzY29wZS50YXNrSW5pdGlhdGVJZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udGFza19pbml0aWF0ZV9pZDtcclxuICAgICAgJHNjb3BlLnRhc2tFeGVjdXRlSWQgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRhc2tfZXhlY3V0ZV9pZDtcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtRGVmaW5pdGlvbiA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uO1xyXG4gICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQgPSAwO1xyXG4gICAgICAkc2NvcGUuZmQuUGFyZW50RWxlbWVudElkID0gMDtcclxuICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybURlZmluaXRpb249PXVuZGVmaW5lZCkgJHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtRGVmaW5pdGlvbiA9IGZhbHNlO1xyXG4gICAgICBpZiAoJHNjb3BlLnRhc2tJbml0aWF0ZUlkPT11bmRlZmluZWQpICRzY29wZS50YXNrSW5pdGlhdGVJZCA9MDtcclxuICAgICAgaWYgKCRzY29wZS50YXNrRXhlY3V0ZUlkPT11bmRlZmluZWQpICRzY29wZS50YXNrRXhlY3V0ZUlkID0wO1xyXG4gICAgICBpZiAoJHNjb3BlLnByZXZUYXNrRXhlSWQ9PXVuZGVmaW5lZCkgJHNjb3BlLnByZXZUYXNrRXhlSWQgPTA7XHJcbiAgICBcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5kYXRhc2V0UmVjb3JkU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZERhdGFzZXRSZWNvcmRJZCA9IDA7ICAgICAgXHJcbiAgICAgIHZhciBvdXRfZmllbGRzID0gWydyZXNvdXJjZVJlY29yZElkJ107XHJcblxyXG4gICAgICBpZiAoJHNjb3BlLmZkLlV1aWRSZWY9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLlV1aWRSZWY9VXRpbGl0eVNlcnZpY2UudXVpZHY0KClcclxuICAgICAgJHNjb3BlLmZkLlBhcmFtZXRlcnMuVXVpZFJlZiA9ICRzY29wZS5mZC5VdWlkUmVmXHJcblxyXG4gICAgICAgICBsZXQgd19hY3Rpb25zPVtcclxuICAgICAgICAgICAgICAgICAgICB7aWQ6MSxuYW1lOidyZWZyZXNoRGF0YSd9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtpZDoyLG5hbWU6J2NvdW50U2VsZWN0ZWQnfSxcclxuICAgICAgICAgICAgICAgICAgICB7aWQ6MyxuYW1lOidjb3VudFJlY29yZHMnfSxcclxuICAgICAgICAgICAgICAgICAgICB7aWQ6NCxuYW1lOidzZXRGaWx0ZXInfSxcclxuICAgICAgICAgICAgICAgICAgICB7aWQ6NSxuYW1lOid1bnNlbGVjdEl0ZW1zJ31cclxuICAgICAgICAgICAgICAgIF1cclxuXHJcbiAgICAgIC8vcmVzb3VyY2VMaW5rXHJcbiAgICAgIHZhciB3aWRnZXREZWZpbml0aW9uID0ge0RFSTogW3snbmFtZSc6J3Jlc291cmNlTGlua0RhdGFzZXRMaXN0JywndmFsdWUnOlt7bmFtZToncmVzb3VyY2VJZCcsdmFsdWU6JHNjb3BlLmZkLlJlbGF0ZWR9LHtuYW1lOidyZXNvdXJjZVJlY29yZElkJyx2YWx1ZTonJ31dfV0sYWN0aW9uczogd19hY3Rpb25zLHdpZGdldE5hbWU6ICdyZXNvdXJjZUxpc3RXaWRnZXQnLHdpZGdldElkOiAkc2NvcGUuZmQuVXVpZFJlZix0YXNrSWQ6ICAkc2NvcGUubFRhc2tJZCxcclxuICAgICAgcmVzb3VyY2VEZWZJZCA6ICRzY29wZS5mZC5SZWxhdGVkLCB3aWRnZXRMYWJlbDonUmVzb3VyY2UgbGlzdCcscGFyZW50UmVzb3VyY2VJZDokc2NvcGUuZmQubG9jYWxWYXJzLnBhcmVudFJlc291cmNlSWQsXHJcbiAgICAgIHJlc291cmNlUmVjb3JkSWQ6JHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkLHRhc2tfaW5pdGlhdGVfaWQ6JHNjb3BlLnRhc2tJbml0aWF0ZUlkLHRhc2tfZXhlY3V0ZV9pZDokc2NvcGUudGFza0V4ZWN1dGVJZCxwYWdlSWQ6JHNjb3BlLmZkLmxvY2FsVmFycy5wYXJlbnRSZXNvdXJjZUlkLHJlc291cmNlX2lkOiRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZV9zdGF0ZV9pZCwgb3V0cHV0Om91dF9maWVsZHMgfTtcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5sb2NhbFdpZGdldElkID0gV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5yZWdpc3RlcldpZGdldCh3aWRnZXREZWZpbml0aW9uKTtcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5Mb2NhbElkPSRzY29wZS5mZC5sb2NhbFZhcnMubG9jYWxXaWRnZXRJZDtcclxuICAgICAgJHNjb3BlLmZkLkxvY2FsSWQ9JHNjb3BlLmZkLmxvY2FsVmFycy5sb2NhbFdpZGdldElkO1xyXG5cclxuICAgICAgXHJcbiAgICAgICRzY29wZS5nc3J2Yy5wYXJlbnRSZXNvdXJjZVskc2NvcGUuZmQuVXVpZFJlZl0gPSAkc2NvcGUuZmRcclxuICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybURlZmluaXRpb24gJiYgJHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSkgJHNjb3BlLmZkLlBhcmFtZXRlcnMuQnVpbGRNb2RlID0gdHJ1ZVxyXG4gICAgICBlbHNlICRzY29wZS5mZC5QYXJhbWV0ZXJzLkJ1aWxkTW9kZSA9IGZhbHNlXHJcblxyXG4gICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dNZW51ID0gZmFsc2VcclxuICAgICAgXHJcblxyXG4gICBcclxuXHJcblxyXG4gICAgbGV0IHRlbXBsYXRlO1xyXG4gICAgaWYgKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uKSB0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZUNhY2hlLmdldCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrRGF0YXNldExpc3QuaHRtbCcpO1xyXG4gICAgZWxzZSB0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZUNhY2hlLmdldCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrRGF0YXNldExpc3RFeGUuaHRtbCcpO1xyXG4gICAgICAgICAgXHJcbiAgICAkZWxlbWVudC5hcHBlbmQoJGNvbXBpbGUodGVtcGxhdGUpKCRzY29wZSkpOyBcclxuICAgXHJcbiAgIFxyXG4gICAgICAgIFxyXG59XTsgLy9jb250cm9sZXJfRU5EXHJcblxyXG4gIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXHJcbiAgICAgICAgICAgIC8vdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tEYXRhc2V0TGlzdC5odG1sJyxcclxuICAgICAgICAgICAgY29udHJvbGxlcjogY29udHJvbGxlcixcclxuICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG4gICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRsaXN0bGlua2VkID0gdHJ1ZVxyXG4gICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICB2YXIgcGFnaW5hdGlvbk9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgICAgICBwYWdlTnVtYmVyOiAxLFxyXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDEwLFxyXG4gICAgICAgICAgICAgICAgc29ydDogbnVsbFxyXG4gICAgICAgICAgICB9OyAgICAgXHJcbiAgICAgICBcclxuICAgICAgICBcclxuICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy50b2dnbGVEcm9wZG93biA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnNob3dNZW51ID0gIHNjb3BlLmZkLmxvY2FsVmFycy5zaG93TWVudSA/IGZhbHNlOiB0cnVlIFxyXG4gICAgICAgfVxyXG4gICAgICAgXHJcbiAgICAgICBcclxuICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuc2V0RmllbGQgPSBmdW5jdGlvbihmb3JtLG5hbWUsdmFsdWUsbXNnKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBUYXNrRGF0YVNlcnZpY2Uuc2V0RmllbGQoZm9ybSxuYW1lLHZhbHVlKTtcclxuICAgICAgICAgICAgaWYgKG1zZykgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKG1zZywnaW5mbycpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHNjb3BlLmZkLlBhcmFtZXRlcnM9PXVuZGVmaW5lZCkgXHJcbiAgICAgICAgICAgIHNjb3BlLmZkLlBhcmFtZXRlcnM9IHtcclxuICAgICAgICAgICAgICAgIHRhYmxlOiB7fSwgXHJcbiAgICAgICAgICAgICAgICBQcmVzZW50YXRpb25UeXBlOid0YWJsZScsIFxyXG4gICAgICAgICAgICAgICAgQW5hbHl0aWNzOltdXHJcbiAgICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3Qgc3ViamVjdE5hbWU9IHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkK1wiLVwiK3Njb3BlLmZkLlV1aWRSZWZcclxuXHJcbiAgICAgICAgbGV0IHZhbHVlU3RhdGU9IHNjb3BlLmtzbS5hZGRTdWJqZWN0KHN1YmplY3ROYW1lLHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZSk7XHJcbiAgICAgICAgY29uc3QgdmFsdWVTdGF0ZU5hbWUgPSB2YWx1ZVN0YXRlLnN1YmplY3QubmFtZTtcclxuICAgICBcclxuXHJcbiAgICBzY29wZS5mZC5sb2NhbFZhcnMuY2xlYXJEcm9wZG93biA9IHt9XHJcbiAgICBcclxuICAgIHNjb3BlLmZkLmxvY2FsVmFycy5jYWxsQ2xlYXJEcm9wZG93bkZuPWZ1bmN0aW9uKCl7XHJcblxyXG4gICAgICAgIGlmIChzY29wZS5mZC5sb2NhbFZhcnMuY2xlYXJEcm9wZG93bi5jbGVhckl0ZW1zKSBzY29wZS5mZC5sb2NhbFZhcnMuY2xlYXJEcm9wZG93bi5jbGVhckl0ZW1zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgXHJcblxyXG4gICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgLy8gICAgICAgICAgIEdFVCBSRVNPVVJDRSBEQVRBIFBBR0lOQVRFRFxyXG4gICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICAgIHNjb3BlLmZkLmxvY2FsVmFycy5nZXRSZXNvdXJjZURhdGFQYWdpbmF0ZWQgPSBmdW5jdGlvbiAodXJsTmV4dCx1cmxQcmV2LG5ld1BhZ2UscGFnZVNpemUsZ2V0Q2hpbGRyZW4pIHtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoc2NvcGUuZmQubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGE9PXVuZGVmaW5lZCkgc2NvcGUuZmQubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEgPSBbXTtcclxuICAgICAgICBcclxuICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKE1hdGguY2VpbChzY29wZS5mZC5sb2NhbFZhcnMudG90YWxDb3VudC9wYWdlU2l6ZSk8bmV3UGFnZSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuZXdQYWdlID0gTWF0aC5jZWlsKHNjb3BlLmZkLmxvY2FsVmFycy50b3RhbENvdW50L3BhZ2VTaXplKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgICAgIHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICBcclxuICAgICAgICBpZiAocGFnZVNpemU9PXVuZGVmaW5lZClcclxuICAgICAgICAgXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnBhZ2VTaXplID0gc2NvcGUucGFnaW5hdGlvbk9wdGlvbnMucGFnZVNpemU7XHJcbiAgICAgICAgICBwYWdlU2l6ZT0gc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnBhZ2VTaXplO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBpZiAoc2NvcGUuZmQuUG9wdWxhdGVNZXRob2Q9PSdNJylcclxuICAgICAgICB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICBzY29wZS5rc20uZXhlY3V0ZUFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcInZhbHVlQ2hhbmdlZFwiLCBzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUpO1xyXG4gICAgICAgICAgIHNjb3BlW1wiZGF0YXNldExpc3RTZWFyY2hGb3JtXCIgKyBzY29wZS5mZC5QcmVzZW50YXRpb25JZF0/LiRzZXRTdWJtaXR0ZWQoKVxyXG4gICAgICAgICAgIGxldCBpc192YWxpZCA9IHNjb3BlW1wiZGF0YXNldExpc3RTZWFyY2hGb3JtXCIgKyBzY29wZS5mZC5QcmVzZW50YXRpb25JZF0/LiR2YWxpZFxyXG4gICAgICAgICAgIC8vbGV0IGlzX3ZhbGlkID0gc2NvcGUuZGF0YXNldExpc3RTZWFyY2hGb3JtPy4kdmFsaWRcclxuICAgICAgICAgICBsZXQgY2hpbGQgPSB7fVxyXG4gICAgICAgICAgIGlmIChnZXRDaGlsZHJlbilcclxuICAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGNoaWxkLmlzX2NoaWxkID0gZ2V0Q2hpbGRyZW5cclxuICAgICAgICAgICAgY2hpbGQucGFyZW50X3Jlc291cmNlX2lkID0gc2NvcGUuZmQuUGFyZW50RGF0YXNldERlZklkXHJcbiAgICAgICAgICAgIGNoaWxkLnBhcmVudF9yZWNvcmRfaWQgPSBzY29wZS5mZC5sb2NhbFZhcnMuUGFyZW50UmVjb3JkSWRcclxuXHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICAgIGlmIChpc192YWxpZClcclxuICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvL3Njb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhLmxlbmd0aD0wO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLk11bHRpbGluZSAmJiBzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuaXRlbVZhbHVlPy52YWw/Lmxlbmd0aCkgc2NvcGUuZmQubG9jYWxWYXJzLmNhbGxDbGVhckRyb3Bkb3duRm4oKSAvL3Njb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5pdGVtVmFsdWUudmFsLmxlbmd0aD0wXHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICghc2NvcGUuZmQuTXVsdGlsaW5lICYmIHNjb3BlLmZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZT09J2Ryb3Bkb3duJykgc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLml0ZW1WYWx1ZS52YWwgPSBudWxsIFxyXG4gICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgLy9pZiAoc2NvcGUuZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlPT0nZHJvcGRvd24nKSBzY29wZS5mZC5sb2NhbFZhcnMuc2V0RHJvcGRvd24oc2NvcGUuZmQuUGFyYW1ldGVycy5DbGllbnRTaWRlRmlsdGVyLCBzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEpXHJcbiAgICAgICAgICAgICAgICAvLyAga3RUYXNrRGF0YXNldExpc3RGaWx0ZXIgKHJlc291cmNlSWQscHJlc2VudGF0aW9uSWQsdGFza0lkLGZpbHRlcixmb3JtX2xheW91dCxjb2x1bW5zX2Zvcl9xdWVyeSx1aWQsdmVyLGNoaWxkKSB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5rdFRhc2tEYXRhc2V0TGlzdEZpbHRlcihzY29wZS5mZC5SZWxhdGVkLCBzY29wZS5mZC5QcmVzZW50YXRpb25JZCxzY29wZS5mZC5sb2NhbFZhcnMucGFyZW50UmVzb3VyY2VJZCwgIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5mb3JtRGF0YSwgc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCwgc2NvcGUuZmQubG9jYWxWYXJzLmNvbHVtbnNGb3JRdWVyeSxzY29wZS5mZC5VdWlkUmVmLHNjb3BlLmZkLlBhcmFtZXRlcnMuUHVibGlzaGVkUmVzb3VyY2VWZXJzaW9uLHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5yZXNvdXJjZVZlcnNpb24sY2hpbGQpLnRoZW4oXHJcblx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5jb2x1bW5EZWZzID0gZGF0YS5kYXRhLmNvbHVtbnM/LmNvbHVtbnNEZWY7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZGVidWdnZXIgLy9rdFRhc2tEYXRhc2V0TGlzdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2lmIChzY29wZS5mZC5HcmlkU3RhdGU/LmNvbHVtbnNEZWY/Lmxlbmd0aCA+IDApICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmNvbHVtbkRlZnMgPSBzY29wZS5mZC5HcmlkU3RhdGUuY29sdW1uc0RlZlxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuc2hhcmVkRGF0YSA9IGRhdGEuZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5rc20uZXhlY3V0ZUFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcInZhbHVlQ2hhbmdlZFwiLCBzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEgPSBkYXRhLmRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZT09J2NhcmQnKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YSA9IHNjb3BlLmZkLmxvY2FsVmFycy5UcmFuc2Zvcm1EYXRhRm9yQ2FyZChkYXRhLmRhdGEuZGF0YSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkQ2FyZC53aWRnZXRzLmxheW91dCA9IHNjb3BlLmZkLkZvcm1EZWZTZWFyY2g/LkNhcmRGb3JtIC8vTUlHT1IgZG9kYW8gamVyIHNlIG5lIHByaWthenVqdSBrYXJ0aWNlIHUgdGFidVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2NvcGUuZmQubG9jYWxWYXJzLmNhcmRMYXlvdXRMb2FkZWQgPSB0cnVlIC8vTUlHT1IgZG9kYW8gamVyIHNlIG5lIHByaWthenVqdSBrYXJ0aWNlIHUgdGFidVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2NvcGUuZmQubG9jYWxWYXJzLnJlc3RvcmVHcmlkU3RhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLm5leHRQYWdlID0gZGF0YS5kYXRhLmRhdGEubmV4dDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnByZXZpb3VzUGFnZSA9IGRhdGEuZGF0YS5kYXRhLnByZXZpb3VzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMudG90YWxDb3VudD1kYXRhLmRhdGEuZGF0YS5jb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLmN1cnJlbnRQYWdlPTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5sb2NhbFZhcnMudG90YWxDb3VudD4wICYmIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5jdXJyZW50UGFnZT09MCkgc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLmN1cnJlbnRQYWdlPTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5udW1QYWdlcyA9IE1hdGguY2VpbChzY29wZS5mZC5sb2NhbFZhcnMudG90YWxDb3VudC9zY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUucGFnZVNpemUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLnRvdGFsSXRlbXM9c2NvcGUuZmQubG9jYWxWYXJzLnRvdGFsQ291bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQpIHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtTG9hZGVkPXRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkZWQgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5Jbml0aWFsTG9hZCA9IGZhbHNlXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlPT0nZHJvcGRvd24nKSBzY29wZS5mZC5sb2NhbFZhcnMuc2V0RHJvcGRvd24oc2NvcGUuZmQuUGFyYW1ldGVycy5DbGllbnRTaWRlRmlsdGVyLCBkYXRhLmRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKHNjb3BlLmZkLkVycm9yTXNnLCd3YXJuaW5nJyk7XHJcbiAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcgPSBmYWxzZX0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICB9XHJcbiAgICAgICAgIGVsc2UgaWYgKHNjb3BlLmZkLlBvcHVsYXRlTWV0aG9kPT0nQScpXHJcbiAgICAgICAgIHtcclxuICAgICAgICAgIHZhciB0YXNrX2luc3RhbmNlPTA7ICBcclxuICAgICAgICAgIGlmIChzY29wZS5mZC5sb2NhbFZhcnMuZm9ybVR5cGU9PSdpJykgdGFza19pbnN0YW5jZSA9IHNjb3BlLnRhc2tJbml0aWF0ZUlkO1xyXG4gICAgICAgICAgZWxzZSB0YXNrX2luc3RhbmNlID0gc2NvcGUudGFza0V4ZWN1dGVJZDtcclxuICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhLmxlbmd0aD0wXHJcbiAgICAgICAgICAvL2lmIChzY29wZS5mZC5QYXJhbWV0ZXJzLlByZXNlbnRhdGlvblR5cGU9PSdkcm9wZG93bicpIHNjb3BlLmZkLmxvY2FsVmFycy5zZXREcm9wZG93bihzY29wZS5mZC5QYXJhbWV0ZXJzLkNsaWVudFNpZGVGaWx0ZXIsIHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YSlcclxuICAgICAgICAgIGlmIChzY29wZS5mZC5NdWx0aWxpbmUgJiYgc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLml0ZW1WYWx1ZT8udmFsPy5sZW5ndGgpIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5pdGVtVmFsdWUudmFsLmxlbmd0aD0wXHJcbiAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcgPSB0cnVlXHJcbiAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURhdGFQYWdpbmF0ZWRBdXRvKHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSWQsdXJsTmV4dCx1cmxQcmV2LG5ld1BhZ2UscGFnZVNpemUsbGFuZyxzY29wZS5mZC5QcmVzZW50YXRpb25JZCx0YXNrX2luc3RhbmNlLHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtVHlwZSkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucmVzdG9yZUdyaWRTdGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5uZXh0UGFnZSA9IGRhdGEuZGF0YS5uZXh0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucHJldmlvdXNQYWdlID0gZGF0YS5kYXRhLnByZXZpb3VzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMudG90YWxDb3VudD1kYXRhLmRhdGEuY291bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5jdXJyZW50UGFnZT1uZXdQYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMubnVtUGFnZXMgPSBNYXRoLmNlaWwoc2NvcGUuZmQubG9jYWxWYXJzLnRvdGFsQ291bnQvcGFnZVNpemUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUucGFnZVNpemUgPSBwYWdlU2l6ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLnRvdGFsSXRlbXM9c2NvcGUuZmQubG9jYWxWYXJzLnRvdGFsQ291bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5Jbml0aWFsTG9hZCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2Uuc2V0RGF0YSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFSTogW3tuYW1lOidyZXNvdXJjZUxpbmsnLHZhbHVlOlt7bmFtZToncmVzb3VyY2VJZCcsdmFsdWU6c2NvcGUuZmQuUmVsYXRlZH0se25hbWU6J3Jlc291cmNlUmVjb3JkSWQnLHZhbHVlOnNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZERhdGFzZXRSZWNvcmRJZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLHtuYW1lOidyZXNvdXJjZVJlY29yZElkcycsdmFsdWU6IG51bGx9LHtuYW1lOidyZXNvdXJjZVJlY29yZHNBbGwnLHZhbHVlOnNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhfV19XSx3aWRnZXRJZDogc2NvcGUuZmQuVXVpZFJlZixwYXJlbnRSZXNvdXJjZUlkOiRzY29wZS5mZC5sb2NhbFZhcnMucGFyZW50UmVzb3VyY2VJZCx0YXNrX2V4ZWN1dGVfaWQ6c2NvcGUudGFza0V4ZWN1dGVJZH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJvb3RTY29wZS4kYnJvYWRjYXN0KFwiU3RhcnRUYXNrXCIrc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQrXCJDb21wbGV0ZWRcIixzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5QYXJhbWV0ZXJzLlByZXNlbnRhdGlvblR5cGU9PSdkcm9wZG93bicpIHNjb3BlLmZkLmxvY2FsVmFycy5zZXREcm9wZG93bihzY29wZS5mZC5QYXJhbWV0ZXJzLkNsaWVudFNpZGVGaWx0ZXIsIHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgICAvKiBHZXQgY2hpbGRyZW4gZm9yIHBhcmVudCovXHJcbiAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLkdldFJlc291cmNlRGF0YUZvclBhcmVudCA9IGZ1bmN0aW9uICgpIFxyXG4gICAgICAgIHsgICBcclxuICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcgPSB0cnVlXHJcbiAgICAgICAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCA9IHNjb3BlLmZkLkZvcm1EZWZTZWFyY2g/LlNlYXJjaEZvcm1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VEYXRhUGFnaW5hdGVkKHNjb3BlLmZkLmxvY2FsVmFycy5uZXh0UGFnZSxzY29wZS5mZC5sb2NhbFZhcnMucHJldmlvdXNQYWdlLHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5jdXJyZW50UGFnZSxzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUucGFnZVNpemUsdHJ1ZSlcclxuICAgICAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURhdGFNMm1GaWx0ZXIoc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsc2NvcGUuZmQuUGFyZW50RGF0YXNldERlZklkLHNjb3BlLmZkLlJlbGF0ZWQsc2NvcGUuZmQubG9jYWxWYXJzLlBhcmVudFJlY29yZElkLHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5mb3JtRGF0YSwgc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCxzY29wZS50YXNrSWQsMCxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEgPSBkYXRhLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuY29sdW1uRGVmcyA9IGRhdGEuY29sdW1uc0RlZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGluZyA9IGZhbHNlIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5Jbml0aWFsTG9hZCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQ9dHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zaGFyZWREYXRhID0gZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKHZhbHVlU3RhdGVOYW1lLFwidmFsdWVDaGFuZ2VkXCIsIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcgPSBmYWxzZSBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfSovXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqIGdldCBzdGF0ZSBpZiBleGlzdHMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICAgaWYgKHZhbHVlU3RhdGUuc3ViamVjdC5jdXJyZW50U3RhdGVJbmRleD49MCAmJiAhc2NvcGUuZmQuQXV0b1NlYXJjaClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5sb2FkRnJvbVN0YXRlPXRydWU7XHJcbiAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZSA9IHZhbHVlU3RhdGUuc3ViamVjdC5nZXRTdGF0ZTtcclxuICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dD1zY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUud2lkZ2V0cztcclxuICAgICAgICAgICAgc2NvcGUuZmQuZkl0ZW1WYWx1ZSA9IHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQ7XHJcbiAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5zZWFyY2hGb3JtRG93bmxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIC8vc2NvcGUuZmQubG9jYWxWYXJzLnNldEZpZWxkKHNjb3BlLmZkLmZJdGVtVmFsdWUsJ1JlcXVpcmVkJyxmYWxzZSk7XHJcbiAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgIC8vc2NvcGUuZmQuU2VhcmNoID0gc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLmZvcm1EYXRhO1xyXG4gICAgICAgICAgICAvL3Njb3BlLmZvcm1EYXRhW3Njb3BlLmZkLlByZXNlbnRhdGlvbklkXT1zY29wZS5mZC5TZWFyY2g7XHJcbiAgICAgICAgfWVsc2VcclxuICAgICAgICBcclxuICAgICAgICB7XHJcbiAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuZm9ybURhdGE9W3t9XTsgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBsZXQgdmFsdWVfY2hhbmdlZCA9IGZ1bmN0aW9uKGRhdGEpe1xyXG4gICAgICAgICAgICB2YWx1ZVN0YXRlLnN1YmplY3Quc2V0U3RhdGVDaGFuZ2VzID0gZGF0YTtcclxuICAgICAgICAgICAgdmFsdWVTdGF0ZS5zdWJqZWN0Lm5vdGlmeU9ic2VydmVycyhcInZhbHVlQ2hhbmdlZFwiKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBhY3Rpb25fdmFsdWVfY2hhbmdlZCA9IHNjb3BlLmtzbS5hZGRBY3Rpb24odmFsdWVTdGF0ZU5hbWUsXCJ2YWx1ZUNoYW5nZWRcIix2YWx1ZV9jaGFuZ2VkKTtcclxuICAgICAgIFxyXG4gICAgICAgIGxldCBzZWxlY3Rpb25fY2hhbmdlZCA9IGZ1bmN0aW9uKGRhdGEpe1xyXG4gICAgICAgICAgICB2YWx1ZVN0YXRlLnN1YmplY3Quc2V0U3RhdGVDaGFuZ2VzID0gZGF0YTtcclxuICAgICAgICAgICAgdmFsdWVTdGF0ZS5zdWJqZWN0Lm5vdGlmeU9ic2VydmVycyhcInNlbGVjdGlvbkNoYW5nZWRcIik7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgYWN0aW9uX3NlbGVjdGlvbl9jaGFuZ2VkID0gc2NvcGUua3NtLmFkZEFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcInNlbGVjdGlvbkNoYW5nZWRcIixzZWxlY3Rpb25fY2hhbmdlZCk7XHJcblxyXG4gICAgICAgIGxldCBhcHBseV92YWx1ZSA9IGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLml0ZW1WYWx1ZS52YWwgPSBkYXRhLnN0YXRlO1xyXG4gICAgICAgIH07IFxyXG4gICAgICAgXHJcbiAgICAgICAgaWYgKHNjb3BlLmZkLlBhcmFtZXRlcnMuRGVwZW5kZW50RmllbGRJZCE9dW5kZWZpbmVkICYmIHNjb3BlLmZkLlBhcmFtZXRlcnMuRGVwZW5kZW50RmllbGRJZCE9bnVsbCkge1xyXG4gICAgICAgICAgICBpZiAoc2NvcGUuZmQuUGFyYW1ldGVycy5EZXBlbmRlbnRGaWVsZElkIT1cIlwiKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZGVwZW5kZW50X2ZpZWxkID0gc2NvcGUuZmQuUGFyYW1ldGVycy5EZXBlbmRlbnRGaWVsZElkO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSBzY29wZS5mZC5QYXJhbWV0ZXJzLkRlcGVuZGVudEZpZWxkVHlwZStcIlZhbHVlU3RhdGVOYW1lXCIrc2NvcGUuZmQuUGFyYW1ldGVycy5EZXBlbmRlbnRGaWVsZElkO1xyXG4gICAgICAgICAgICAgICAgbGV0IG9ic2VydmVyID0gc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdCxkZXBlbmRlbnRfZmllbGQsXCJ2YWx1ZUNoYW5nZWRcIixhcHBseV92YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgIGxldCBkZWZhdWx0X3JlZnJlc2hfZGF0YSA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB2YWx1ZVN0YXRlLnN1YmplY3Quc2V0U3RhdGVDaGFuZ2VzID0gZGF0YVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5HZXREYXRhc2V0RGF0YUNsaWNrKClcclxuICAgICAgICAgXHJcbiAgICAgICAgICAgIHZhbHVlU3RhdGUuc3ViamVjdC5ub3RpZnlPYnNlcnZlcnMoXCJyZWZyZXNoRGF0YVwiLGRhdGEpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBhY3Rpb25fcmVmcmVzaF9kYXRhID0gc2NvcGUua3NtLmFkZEFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcInJlZnJlc2hEYXRhXCIsZGVmYXVsdF9yZWZyZXNoX2RhdGEpXHJcbiAgICAgICBzY29wZS5yZWZyZXNoRGF0YSA9IGRlZmF1bHRfcmVmcmVzaF9kYXRhXHJcblxyXG4gICAgICAgXHJcbiAgICAgICAgbGV0IGNvdW50X3NlbGVjdGVkID0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICB7XHJcblxyXG4gICAgICAgICAgICAvL3ZhbHVlU3RhdGUuc3ViamVjdC5zZXRTdGF0ZUNoYW5nZXMgPSBkYXRhXHJcblxyXG4gICAgICAgICAgICBsZXQgcmVzdWx0XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXN1bHQgPSBzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuc2VsZWN0ZWRJdGVtcy5sZW5ndGhcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmIChzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuc2VsZWN0ZWRJdGVtcy5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICAgICAvL2FwcGx5IGZpbHRlclxyXG4gICAgICAgICAgICAgICAgbGV0IGtleSx2YWxcclxuICAgICAgICAgICAgICAgIGxldCBpbl9wYXJhbXMgPSBkYXRhWydpbl9kYXRhJ11bJ2luX3BhcmFtcyddXHJcbiAgICAgICAgICAgICAgICBpZiAoaW5fcGFyYW1zPT11bmRlZmluZWQpIGluX3BhcmFtcyA9IFwie31cIlxyXG4gICAgICAgICAgICAgICAgbGV0IGlucHV0ID0gSlNPTi5wYXJzZShpbl9wYXJhbXMpXHJcblxyXG4gICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhpbnB1dCkubGVuZ3RoPjApXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gT2JqZWN0LmVudHJpZXMoaW5wdXQpLm1hcCggKFtrZXksIHZhbF0gPSBpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWw9PSdjdXJyZW50VXNlcigpJykgdmFsID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLnVzZXJpZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnNlbGVjdGVkSXRlbXMucmVkdWNlKChjb3VudCwgaXRlbSkgPT4gKGl0ZW1ba2V5XSA9PSB2YWwgPyBjb3VudCArIDEgOiBjb3VudCksIDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IFxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgc3RhdGUgPSB2YWx1ZVN0YXRlLnN1YmplY3QuZ2V0U3RhdGVcclxuICAgICAgICAgICAgaWYgKHJlc3VsdCE9dW5kZWZpbmVkKSBzdGF0ZVsnY291bnRTZWxlY3RlZCddID0gcmVzdWx0XHJcbiAgICAgICAgICAgIGVsc2Ugc3RhdGVbJ2NvdW50U2VsZWN0ZWQnXSA9IG51bGxcclxuICAgICAgICAgICAgdmFsdWVTdGF0ZS5zdWJqZWN0LnNldFN0YXRlQ2hhbmdlcyA9IHN0YXRlXHJcblxyXG4gICAgICAgICAgICBzY29wZS5mZC5QYXJhbWV0ZXJzLmV2ZW50c1tkYXRhLmV2ZW50X2luZGV4XS5hY3Rpb25zW2RhdGEuYWN0aW9uX2luZGV4XS5jb21wbGV0ZWQgPSB0cnVlXHJcbiAgICAgICAgICAgIHNjb3BlLmZkLlBhcmFtZXRlcnMuZXZlbnRzW2RhdGEuZXZlbnRfaW5kZXhdLmFjdGlvbnNbZGF0YS5hY3Rpb25faW5kZXhdLnJlc3VsdCA9IHN0YXRlWydjb3VudFNlbGVjdGVkJ11cclxuICAgICAgICAgICAgc2NvcGUucHJvY2Vzc0V2ZW50cyhzdGF0ZSxmYWxzZSlcclxuICAgICAgICAgICAgLy9ub3RpZnlcclxuICAgICAgICAgICAgdmFsdWVTdGF0ZS5zdWJqZWN0Lm5vdGlmeU9ic2VydmVycyhcImNvdW50U2VsZWN0ZWRcIilcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGFjdGlvbl9jb3VudF9yZWNvcmRzPSBzY29wZS5rc20uYWRkQWN0aW9uKHZhbHVlU3RhdGVOYW1lLFwiY291bnRTZWxlY3RlZFwiLGNvdW50X3NlbGVjdGVkKTtcclxuXHJcbiAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuc2hvd1Byb3BlcnRpZXM9ZnVuY3Rpb24oZGF0YXNldE1hcHBlclR5cGUsc2hvd1Byb3BlcnRpZXNSaWdodCxwcm9wZXJ0eVR5cGUpXHJcbiAgICAgICB7XHJcbiAgICAgICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICAgICAgaWYgKCAhc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlICkgLy9zZXQgaWYgbm90IGRlZmluZWQgb3IgemVyb1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSA9IGRhdGFzZXRNYXBwZXJUeXBlO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5VHlwZT09J2Jhc2ljJykge1xyXG4gICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wIHx8IHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSE9ZGF0YXNldE1hcHBlclR5cGUpIFxyXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSA9IGRhdGFzZXRNYXBwZXJUeXBlO1xyXG4gICAgICAgICAgICAgICBlbHNlIFxyXG4gICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPTA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHNob3dQcm9wZXJ0aWVzUmlnaHQpIHNjb3BlLmdzcnZjLnNldEZpZWxkUHJvcGVydGllcyhzY29wZS5mZCk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuUHJvcGVydHlUeXBlID1wcm9wZXJ0eVR5cGVcclxuICAgICAgICB9O1xyXG4gICAgICAgICAgXHJcblxyXG4gICAgc2NvcGUuZmQubG9jYWxWYXJzLnByb2Nlc3NUYWJsZUFjdGlvbiA9IGZ1bmN0aW9uKHJlc291cmNlLCBhY3Rpb25JZCl7XHJcbiAgICAgICAgbGV0IGJ0biA9IHNjb3BlLmZkLkZvcm1EZWZbYWN0aW9uSWRdXHJcbiAgICAgICAgaWYgKGJ0bi5SZXNvdXJjZVR5cGU9PSd0YXNrJyl7XHJcblxyXG4gICAgICAgICAgICBsZXQgcGFnZVN0YXRlID0gIHNjb3BlLmtzbS5nZXRTdGF0ZShzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZV9zdGF0ZV9pZClcclxuICAgICAgICAgICAgbGV0IHByZXZfdGFza19leGVjdXRlX2lkID0gcGFnZVN0YXRlLnN0YXRlLnByZXZpb3VzVGFzaz8udGFza19leGVjdXRlX2lkXHJcbiAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5Mb2FkVGFzayhidG4uaWQsMCxwcmV2X3Rhc2tfZXhlY3V0ZV9pZCxidG4uT3BlblRhc2tUeXBlKVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChidG4uUmVzb3VyY2VUeXBlPT0ncGFnZScpe1xyXG4gICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuT3BlblBhZ2UoYnRuKVxyXG5cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gKioqKiAgTUFJTiBzbWFydCB0YWJsZSBmdW5jdGlvbiBmb3IgcHJlcGFyYXRpb24gYW5kIHBhZ2luYXRpb24gKioqKlxyXG4gICAgXHJcbiAgICBcclxuICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmdldERhdGFTbWFydFRhYmxlID0gZnVuY3Rpb24odGFibGVTdGF0ZSwgcGFnZU51bWJlcixwYWdlU2l6ZSl7XHJcbiAgICAgICBcclxuICAgICAgICAgICAgLy9kZWJ1Z2dlciAgLy9kZWJ1ZyBnZXREYXRhU21hcnRUYWJsZSAoemFwcmF2byBrdFJlZnJlc2ggdSBzbWFydHRhYmxlIHdpZGdldHUpXHJcbiAgICAgICAgICAgIGxldCBkZWZlcnJlZCA9ICRxLmRlZmVyKCk7ICAgIFxyXG4gICAgICAgICAgICBzY29wZS5yZXNvdXJjZUxvYWRpbmc9dHJ1ZTtcclxuICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgIHZhciBuZXdQYWdlXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAocGFnZU51bWJlcj09dW5kZWZpbmVkKSBwYWdlTnVtYmVyID0gc2NvcGUucGFnaW5hdGlvbk9wdGlvbnMucGFnZU51bWJlcjtcclxuICAgICAgICAgICAgaWYgKHBhZ2VTaXplPT11bmRlZmluZWQpIHBhZ2VTaXplID0gc2NvcGUucGFnaW5hdGlvbk9wdGlvbnMucGFnZVNpemU7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoc2NvcGUuZmQubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICBzY29wZS50b3RhbENvdW50PSBzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YS5sZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICBzY29wZS5wYWdpbmF0aW9uT3B0aW9ucy50b3RhbEl0ZW1Db3VudD1zY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YS5sZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICBzY29wZS5wYWdpbmF0aW9uT3B0aW9ucy5udW1iZXJPZlBhZ2VzID0gTWF0aC5jZWlsKHNjb3BlLnBhZ2luYXRpb25PcHRpb25zLnRvdGFsSXRlbUNvdW50L3BhZ2VTaXplKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHNjb3BlLnRvdGFsQ291bnQ+MCl7XHJcbiAgICAgICAgICAgICAgICBpZiAoTWF0aC5jZWlsKHNjb3BlLnRvdGFsQ291bnQvcGFnZVNpemUpPHBhZ2VOdW1iZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3UGFnZSA9IE1hdGguY2VpbChzY29wZS50b3RhbENvdW50L3BhZ2VTaXplKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgIGlmIChzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YSkgXHJcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnJlc3VsdHMgPSB7cmVzdWx0cyA6IHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhLnNsaWNlKCAocGFnZU51bWJlciAtMSkgKiBwYWdlU2l6ZSwgcGFnZU51bWJlciAqIHBhZ2VTaXplKSB9XHJcbiAgICAgICAgICAgICBlbHNlIFxyXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5yZXN1bHRzID0ge30gICAgIFxyXG4gICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnJlc3VsdHMuY29sdW1ucz1zY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuY29sdW1uRGVmc1xyXG4gICAgICAgICAgICAgLy9zY29wZS5uZXh0UGFnZSA9IGRhdGEuZGF0YS5uZXh0O1xyXG4gICAgICAgICAgICAgLy9zY29wZS5wcmV2aW91c1BhZ2UgPSBkYXRhLmRhdGEucHJldmlvdXM7XHJcbiAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuY3VycmVudFBhZ2U9cGFnZU51bWJlcjtcclxuICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5yZXN1bHRzLnBhZ2VTaXplID0gcGFnZVNpemU7XHJcbiAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucmVzdWx0cy5udW1iZXJPZlBhZ2VzID0gc2NvcGUucGFnaW5hdGlvbk9wdGlvbnMubnVtYmVyT2ZQYWdlcztcclxuICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5yZXN1bHRzLmNvdW50ID0gICBzY29wZS50b3RhbENvdW50XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5jdXJyZW50UGFnZSA9IHNjb3BlLmZkLmxvY2FsVmFycy5jdXJyZW50UGFnZTtcclxuICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5wYWdlU2l6ZSA9IHNjb3BlLmZkLmxvY2FsVmFycy5yZXN1bHRzLnBhZ2VTaXplO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAvL3Njb3BlLmtzbS5leGVjdXRlQWN0aW9uKHZhbHVlU3RhdGVOYW1lLFwidmFsdWVDaGFuZ2VkXCIsIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZSk7IC8vVE9ETyAtIHByb3ZqZXJpdGkgamVsIG92byB0cmViYSBvdGtvbWVudGlyYXRpXHJcbiAgICAgICAgICAgICBpZiAoIXNjb3BlLmZkLmxvY2FsVmFycy5sb2FkRnJvbVN0YXRlKSBzY29wZS5mZC5sb2NhbFZhcnMucmVzZXRTZWxlY3Rpb24oKTtcclxuICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHNjb3BlLmZkLmxvY2FsVmFycy5yZXN1bHRzfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgfTtcclxuXHJcbiAgICAgICAgICAvL01JR09SIFRPRE9cclxuICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucm93U2VsZWN0aW9uQ2hhbmdlZCA9IGZ1bmN0aW9uIChyb3cpIHtcclxuXHJcblxyXG4gICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnNlbGVjdGVkRGF0YXNldFJlY29yZElkID0gMFxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgLy8gZmluZCBcInNlbGVjdGVkRGF0YXNldFJlY29yZElkXCJcclxuICAgICAgICAgICAgICAgIGxldCBleHREYXRhU291cmNlSWROYW1lLCBuZXdzZWxlY3RlZElkXHJcbiAgICAgICAgICAgICAgICBleHREYXRhU291cmNlSWROYW1lPSdpZCc7XHJcbiAgICAgICAgICAgICAgICAgLy8gZmluZCBJRCBmb3IgY2xpY2tlZCByb3dcclxuICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZT8ucmVzb3VyY2VXaWRnZXREZWZpbml0aW9uPy5QYXJhbWV0ZXJzPy5leHREYXRhU291cmNlTGluayAhPSB1bmRlZmluZWQpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBleHREYXRhU291cmNlSWROYW1lID0gc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbi5QYXJhbWV0ZXJzLmV4dERhdGFTb3VyY2VMaW5rICsgXCJfaWRcIlxyXG4gICAgICAgICAgICAgICAgICBpZiAoICByb3cuaGFzT3duUHJvcGVydHkoZXh0RGF0YVNvdXJjZUlkTmFtZSkgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgbmV3c2VsZWN0ZWRJZCA9IHJvd1tleHREYXRhU291cmNlSWROYW1lXVxyXG4gICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdzZWxlY3RlZElkPT1udWxsKSBcclxuICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld3NlbGVjdGVkSWQgPSByb3dbc2NvcGUuZmQubG9jYWxWYXJzLlRhYmxlUHJlZml4KydfJytleHREYXRhU291cmNlSWROYW1lXVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBuZXdzZWxlY3RlZElkID0gcm93W3Njb3BlLmZkLmxvY2FsVmFycy5UYWJsZVByZWZpeCsnXycrZXh0RGF0YVNvdXJjZUlkTmFtZV1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyIC8va3RUYXNrRGF0YXNldExpc3RcclxuICAgICAgICAgICAgICAgICAvL2FscmVhZHkgc2VsZWN0ZWRcclxuICAgICAgICAgICAgICAgICBpZiAoIHJvdy5pc1NlbGVjdGVkID09IGZhbHNlKSAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgLy91bnNlbGVjdCBhbmQgcmVtb3ZlIGZyb20gc2VsZWN0aW9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGlmICggbmV3c2VsZWN0ZWRJZCA+IDAgICYmIHNjb3BlLmZkLk11bHRpbGluZSkgeyAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9ICBzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuc2VsZWN0ZWRJdGVtcy5pbmRleE9mKCAgbmV3c2VsZWN0ZWRJZCApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcyAhPSAtMSkgIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW1zLnNwbGljZShwb3MsMSlcclxuICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSBpZiAoIXNjb3BlLmZkLk11bHRpbGluZSkgIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW1zLmxlbmd0aD0wIFxyXG4gICAgICAgICAgICAgICAgIH0gZWxzZSBcclxuICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld3NlbGVjdGVkSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnNlbGVjdGVkRGF0YXNldFJlY29yZElkID0gbmV3c2VsZWN0ZWRJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLk11bHRpbGluZSA9PSB0cnVlKSBzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuc2VsZWN0ZWRJdGVtcy5wdXNoKG5ld3NlbGVjdGVkSWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW1zID1bbmV3c2VsZWN0ZWRJZF1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vc2NvcGUuZmQuYWN0aW9uc1Bvc2l0aW9uID0gXCJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OlwiK2V2ZW50LmNsaWVudFgrXCJweDt0b3A6XCIrZXZlbnQuY2xpZW50WStcInB4XCJcclxuICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLmRhdGFzZXRSZWNvcmRTZWxlY3RlZCA9IHJvdy5pc1NlbGVjdGVkO1xyXG4gICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuc2VsZWN0ZWRSZXNvdXJjZVJlY29yZCA9IHJvd1xyXG4gICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucHJldlRhc2tQYWNrYWdlID17cmVzb3VyY2VEZWZJZDpzY29wZS5mZC5SZWxhdGVkLHJlY29yZHM6IHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW1zfVxyXG4gICAgICAgICAgICBcclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnNldERhdGEoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgREVJOiBbe25hbWU6J3Jlc291cmNlTGlua0RhdGFzZXRMaXN0Jyx2YWx1ZTpbe25hbWU6J3Jlc291cmNlSWQnLHZhbHVlOnNjb3BlLmZkLlJlbGF0ZWR9LHtuYW1lOidyZXNvdXJjZVJlY29yZElkJyx2YWx1ZTpzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuc2VsZWN0ZWREYXRhc2V0UmVjb3JkSWR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICx7bmFtZToncmVzb3VyY2VSZWNvcmRJZHMnLHZhbHVlOmdyaWRBcGkuc2VsZWN0aW9uLmdldFNlbGVjdGVkUm93cygpfSx7bmFtZToncmVzb3VyY2VSZWNvcmRzQWxsJyx2YWx1ZTpzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YX1dfV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLHtuYW1lOidyZXNvdXJjZVJlY29yZElkcycsIHZhbHVlOiBzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuc2VsZWN0ZWRJdGVtc30se25hbWU6J3Jlc291cmNlUmVjb3Jkc0FsbCcsdmFsdWU6c2NvcGUuZmQubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGF9XX1dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFJlc291cmNlSWQ6c2NvcGUuZmQubG9jYWxWYXJzLnBhcmVudFJlc291cmNlSWQsd2lkZ2V0SWQ6IHNjb3BlLmZkLlV1aWRSZWYscmVzb3VyY2VfaWQ6c2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQsdGFza19leGVjdXRlX2lkOnNjb3BlLnRhc2tFeGVjdXRlSWQscmVzb3VyY2VfaWQ6c2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWR9KTtcclxuICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgIHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKHZhbHVlU3RhdGVOYW1lLFwic2VsZWN0aW9uQ2hhbmdlZFwiLCBzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICAgICB9O1xyXG4gICAgc2NvcGUuZmQubG9jYWxWYXJzLm11bHRpcGxlU2VsZWN0ID0gZnVuY3Rpb24ocm93LHNlbGVjdEFsbCxkZXNlbGVjdEFsbCl7XHJcblxyXG4gICAgICAgIGlmIChzZWxlY3RBbGwpIHtcclxuICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnNlbGVjdGVkSXRlbXMgPSBhbmd1bGFyLmNvcHkoc2NvcGUuZmQubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEpXHJcbiAgICAgICAgICAgICAgIGZvcihsZXQgaT0wO2k8c2NvcGUuZmQubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEubGVuZ3RoO2krKylcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEuaXNTZWxlY3RlZD10cnVlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZGVzZWxlY3RBbGwpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuc2VsZWN0ZWRJdGVtcy5sZW5ndGg9MFxyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDtpPHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhLmxlbmd0aDtpKyspXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhLmlzU2VsZWN0ZWQ9ZmFsc2VcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICBsZXQgZXh0RGF0YVNvdXJjZUlkTmFtZSwgbmV3c2VsZWN0ZWRJZFxyXG4gICAgICAgICAgICAgICAgZXh0RGF0YVNvdXJjZUlkTmFtZT0naWQnO1xyXG4gICAgICAgICAgICAgICAgIC8vIGZpbmQgSUQgZm9yIGNsaWNrZWQgcm93XHJcbiAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGU/LnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbj8uUGFyYW1ldGVycz8uZXh0RGF0YVNvdXJjZUxpbmsgIT0gdW5kZWZpbmVkKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0RGF0YVNvdXJjZUlkTmFtZSA9IHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5yZXNvdXJjZVdpZGdldERlZmluaXRpb24uUGFyYW1ldGVycy5leHREYXRhU291cmNlTGluayArIFwiX2lkXCJcclxuICAgICAgICAgICAgICAgICAgaWYgKCAgcm93Lmhhc093blByb3BlcnR5KGV4dERhdGFTb3VyY2VJZE5hbWUpICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgIG5ld3NlbGVjdGVkSWQgPSByb3dbZXh0RGF0YVNvdXJjZUlkTmFtZV1cclxuICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3c2VsZWN0ZWRJZD09bnVsbCkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdzZWxlY3RlZElkID0gcm93W3Njb3BlLmZkLmxvY2FsVmFycy5UYWJsZVByZWZpeCsnXycrZXh0RGF0YVNvdXJjZUlkTmFtZV1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3c2VsZWN0ZWRJZCA9IHJvd1tzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXgrJ18nK2V4dERhdGFTb3VyY2VJZE5hbWVdXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAocm93LmlzU2VsZWN0ZWQpIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW1zLnB1c2gocm93KVxyXG4gICAgICAgICAgICBlbHNlIGlmIChyb3cuaXNTZWxlY3RlZD09PWZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvYmpXaXRoSWRJbmRleCA9IHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW1zLmZpbmRJbmRleCgoeCkgPT4gIHhbc2NvcGUuZmQubG9jYWxWYXJzLlRhYmxlUHJlZml4KydfJytleHREYXRhU291cmNlSWROYW1lXSA9PT0gbmV3c2VsZWN0ZWRJZClcclxuICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW1zLnNwbGljZShvYmpXaXRoSWRJbmRleCwgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24odmFsdWVTdGF0ZU5hbWUsXCJzZWxlY3Rpb25DaGFuZ2VkXCIsIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW1zKTtcclxuICAgIH1cclxuICAgIHNjb3BlLmZkLmxvY2FsVmFycy5kcm9wZG93blNlbGVjdGlvbkNoYW5nZWQgPSBmdW5jdGlvbiAoaXRlbSxtb2RlbCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuc2VsZWN0ZWREYXRhc2V0UmVjb3JkSWQgPSAwXHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW1zPWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5kYXRhc2V0UmVjb3JkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnNlbGVjdGVkUmVzb3VyY2VSZWNvcmQgPSBpdGVtXHJcbiAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucHJldlRhc2tQYWNrYWdlID17cmVzb3VyY2VEZWZJZDpzY29wZS5mZC5SZWxhdGVkLHJlY29yZHM6IHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW1zfVxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2Uuc2V0RGF0YSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICBERUk6IFt7bmFtZToncmVzb3VyY2VMaW5rRGF0YXNldExpc3QnLHZhbHVlOlt7bmFtZToncmVzb3VyY2VJZCcsdmFsdWU6c2NvcGUuZmQuUmVsYXRlZH0se25hbWU6J3Jlc291cmNlUmVjb3JkSWQnLHZhbHVlOnNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZERhdGFzZXRSZWNvcmRJZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgLHtuYW1lOidyZXNvdXJjZVJlY29yZElkcycsdmFsdWU6Z3JpZEFwaS5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRSb3dzKCl9LHtuYW1lOidyZXNvdXJjZVJlY29yZHNBbGwnLHZhbHVlOnNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhfV19XSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAse25hbWU6J3Jlc291cmNlUmVjb3JkSWRzJywgdmFsdWU6IHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW1zfSx7bmFtZToncmVzb3VyY2VSZWNvcmRzQWxsJyx2YWx1ZTpzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YX1dfV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50UmVzb3VyY2VJZDpzY29wZS5mZC5sb2NhbFZhcnMucGFyZW50UmVzb3VyY2VJZCx3aWRnZXRJZDogc2NvcGUuZmQuVXVpZFJlZixyZXNvdXJjZV9pZDpzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZV9zdGF0ZV9pZCx0YXNrX2V4ZWN1dGVfaWQ6c2NvcGUudGFza0V4ZWN1dGVJZCxyZXNvdXJjZV9pZDpzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZV9zdGF0ZV9pZH0pO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBzY29wZS5rc20uZXhlY3V0ZUFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcInNlbGVjdGlvbkNoYW5nZWRcIiwgc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlKTtcclxuICAgICAgIH07XHJcblxyXG4gICAgXHJcbiAgICBcclxuICAgIHNjb3BlLmZkLmxvY2FsVmFycy5yZXNldFNlbGVjdGlvbiA9IGZ1bmN0aW9uKClcclxuICAgIHtcclxuICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnNlbGVjdGVkSXRlbXMubGVuZ3RoPTA7XHJcbiAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZERhdGFzZXRSZWNvcmRJZCA9IDA7XHJcbiAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5kYXRhc2V0UmVjb3JkU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICBcclxuICAgIH1cclxuICAgICAgICBcclxuICAgIGxldCBwcm9jZXNzX2Zvcm1fY2hhbmdlID0gZnVuY3Rpb24oZGF0YSlcclxuICAgIHsgXHJcbiAgICAgICAgaWYgKGRhdGEuc3RhdGUhPXVuZGVmaW5lZClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHNjb3BlLmZkLlNlYXJjaCA9IHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5mb3JtRGF0YTtcclxuICAgICAgICAgICAgaWYgKHNjb3BlLmZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZT09J2Ryb3Bkb3duJykgc2NvcGUuZmQubG9jYWxWYXJzLmdldERhdGFzZXREYXRhTGlzdChzY29wZS5mZC5QYXJhbWV0ZXJzLkNsaWVudFNpZGVGaWx0ZXIsdHJ1ZSk7XHJcbiAgICAgICAgICAgIGVsc2Ugc2NvcGUuZmQubG9jYWxWYXJzLmdldFJlc291cmNlRGF0YVBhZ2luYXRlZChzY29wZS5mZC5sb2NhbFZhcnMubmV4dFBhZ2Usc2NvcGUuZmQubG9jYWxWYXJzLnByZXZpb3VzUGFnZSwxLHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5wYWdlU2l6ZSk7ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfSAgICAgICAgICAgICBcclxuICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAvL3N1YnNjcmliZSB0byBldmVudHMgLSBpbml0aWFsbHkgb25seSByZWZyZXNoIGRhdGFcclxuICAgXHJcbiAgICBsZXQgZGVwZW5kZW50X2ZpZWxkMiA9IFwiRmllbGRcIitzY29wZS5mZC5QcmVzZW50YXRpb25JZDtcclxuICAgIGxldCBzdWJzY3JpYmVkU3ViamVjdDIgPSBcInRhc2tcIitzY29wZS5yZXNvdXJjZURlZmluaXRpb24udHJhbnNhY3Rpb25faWQ7XHJcbiAgICBsZXQgb2JzZXJ2ZXIyID0gc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdDIsZGVwZW5kZW50X2ZpZWxkMixzY29wZS5mZC5QYXJhbWV0ZXJzLkV2ZW50TmFtZSxwcm9jZXNzX2Zvcm1fY2hhbmdlKTtcclxuXHJcbiAgICAgICAgXHJcbiAgICAgc2NvcGUuZmQubG9jYWxWYXJzLlByb2Nlc3NTZWFyY2hGb3JtPWZ1bmN0aW9uIChmb3JtKXswXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgIGlmIChmb3JtIT11bmRlZmluZWQpe1xyXG4gICAgICAgICAgICBmb3IodmFyIGk9MDtpPGZvcm0ubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCdFbGVtZW50VHlwZScgaW4gZm9ybVtpXSlcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgIGlmIChmb3JtW2ldLlBhcmFtZXRlcnMhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1baV0uQXV0b1NlYXJjaClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1baV0uRWxlbWVudFR5cGUgPT0gJ3Jlc291cmNlJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwb3MgPSBzY29wZS5mZC5sb2NhbFZhcnMuY2hpbGRXaWRnZXRzLm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLndpZGdldElkOyB9KS5pbmRleE9mKGZvcm1baV0uVXVpZFJlZik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvczwwKSBzY29wZS5mZC5sb2NhbFZhcnMuY2hpbGRXaWRnZXRzLnB1c2goe3dpZGdldElkOmZvcm1baV0uVXVpZFJlZixwcm9jZXNzZWQ6ZmFsc2V9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc3Vic2NyaWJlIHRvIGNoYW5nZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1baV0uUGFyYW1ldGVycy5EZXBlbmRlbnRGaWVsZElkIT11bmRlZmluZWQgJiYgZm9ybVtpXS5QYXJhbWV0ZXJzLkRlcGVuZGVudEZpZWxkSWQhPW51bGwpXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1baV0uUGFyYW1ldGVycy5EZXBlbmRlbnRGaWVsZElkIT1cIlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRlcGVuZGVudF9maWVsZCA9IHZhbHVlU3RhdGVOYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdWJzY3JpYmVkU3ViamVjdCA9IHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkK1wiLVwiK2Zvcm1baV0uVXVpZFJlZjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN1YmplY3QgPSBzY29wZS5rc20uYWRkU3ViamVjdChzdWJzY3JpYmVkU3ViamVjdCxudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9ic2VydmVyID0gc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdCxkZXBlbmRlbnRfZmllbGQsXCJ2YWx1ZUNoYW5nZWRcIixwcm9jZXNzX2Zvcm1fY2hhbmdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbCA9IHNjb3BlLmtzbS5nZXRTdGF0ZShzdWJzY3JpYmVkU3ViamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWwuc3RhdGUhPW51bGwgJiYgdmFsLnN0YXRlIT11bmRlZmluZWQpIHByb2Nlc3NfZm9ybV9jaGFuZ2UodmFsLnN0YXRlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoJ2xheW91dCcgaW4gZm9ybVtpXSlcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLlByb2Nlc3NTZWFyY2hGb3JtKGZvcm1baV0ubGF5b3V0KTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IFxyXG4gICAgICAgICAgIFxyXG4gICAgICB9O1xyXG4gICAgICBcclxuICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLlNlYXJjaEZvcm1Qcm9jZXNzZWQ9ZmFsc2U7XHJcbiAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5zZXRQcmVzZW50YXRpb25UeXBlID0gZnVuY3Rpb24oaXR5cGUpICB7XHJcblxyXG4gICAgICAgICAgICBzY29wZS5mZC5QYXJhbWV0ZXJzLlByZXNlbnRhdGlvblR5cGU9aXR5cGVcclxuXHJcbiAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5zZXRTZWxlY3RlZFJlc291cmNlKHNjb3BlLmZkLlBhcmFtZXRlcnMuUHVibGlzaGVkUmVzb3VyY2VJZCxmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmIChzY29wZS5mZC5QYXJhbWV0ZXJzLlByZXNlbnRhdGlvblR5cGU9PSdkcm9wZG93bicpIHNjb3BlLmZkLmxvY2FsVmFycy5nZXRGb3JtRmllbGRzKClcclxuICAgICAgICB9ICAgICAgXHJcblxyXG4gICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5zZXRTZWxlY3RlZFJlc291cmNlID0gZnVuY3Rpb24oaWQsc2F2ZWQpICB7XHJcblxyXG4gICAgICAgICAgICBpZiAoc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtPT11bmRlZmluZWQpIHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbT17fTtcclxuICAgICAgICAgICAgbGV0IHBvcyA9IHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZUxpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2Yoc2NvcGUuZmQuUmVsYXRlZCk7XHJcbiAgICAgICAgICAgIGlmIChwb3M+PTAgJiYgc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLmlkPT09dW5kZWZpbmVkKSBzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0gPSBzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VMaXN0W3Bvc11cclxuICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmdldFB1Ymxpc2hlZFJlc291cmNlQnlJZChpZCxzYXZlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgIFxyXG4gICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5nZXRQdWJsaXNoZWRSZXNvdXJjZUJ5SWQgPSBmdW5jdGlvbihpZCxzYXZlZCkgXHJcbiBcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGxldCBwb3NcclxuICAgICAgICAgICAgbGV0IG9sZF9wdWJsaXNoX2lkID0gc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZUlkXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKHNhdmVkICYmIHNjb3BlLmZkLkZvcm1EZWZTZWFyY2g/LlNlYXJjaEZvcm0hPT11bmRlZmluZWQgJiYgc2NvcGUuZmQuRm9ybURlZlNlYXJjaD8uU2VhcmNoRm9ybSE9PW51bGwgJiYgc2NvcGUuZmQuRm9ybURlZlNlYXJjaD8uU2VhcmNoRm9ybS5sZW5ndGg+MClcclxuICAgICAgICAgICAgICB7IFxyXG4gICAgICAgICAgICAgICAgICAgIHBvcyA9IHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoaWQpO1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAocG9zPj0wKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUHVibGlzaGVkUmVzb3VyY2UgPSBzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0W3Bvc107XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQgPSBzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0ID0gc2NvcGUuZmQuRm9ybURlZlNlYXJjaD8uU2VhcmNoRm9ybVxyXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtTG9hZGVkPXRydWVcclxuXHRcdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5QYXJhbWV0ZXJzLlByZXNlbnRhdGlvblR5cGU9PSdjYXJkJykgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmRDYXJkLndpZGdldHMubGF5b3V0ID0gc2NvcGUuZmQuRm9ybURlZlNlYXJjaD8uQ2FyZEZvcm1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5jYXJkTGF5b3V0TG9hZGVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5sb2NhbFZhcnMuZm9ybURlZmluaXRpb24pIFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkZWQgPXRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLkdyaWRTdGF0ZT8uY29sdW1uc0RlZj09PXVuZGVmaW5lZCB8fCBvbGRfcHVibGlzaF9pZCE9aWQpIHNjb3BlLmZkLmxvY2FsVmFycy5nZXREZWZhdWx0Q29sdW1uc0RlZigpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugc2NvcGUuZmQubG9jYWxWYXJzLnJlc3RvcmVHcmlkU3RhdGUoKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQubG9jYWxWYXJzLmZpZWxkc0xpc3QgPT0gdW5kZWZpbmVkKSBzY29wZS5mZC5sb2NhbFZhcnMuZmllbGRzTGlzdCA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBzY29wZS5mZC5sb2NhbFZhcnMuZmllbGRzTGlzdC5sZW5ndGg9MFxyXG4gICAgICAgICAgICAgICAgICAgIC8vRk9SIEFOQVlMVElDU1xyXG4gICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5maWVsZHNMaXN0ID0gc2NvcGUuZmQuR3JpZFN0YXRlPy5jb2x1bW5zRGVmPy5tYXAoIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9PiAgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHgubmFtZSAmJiB4Lm5hbWUuaW5jbHVkZXMoJy5uYW1lJykgKSAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIHsnaWQnOnguaWQsICdGaWVsZE5hbWUnOngubmFtZS5zbGljZSgwLCAtNSksICduYW1lJzp4LmRpc3BsYXlOYW1lfSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsnaWQnOnguaWQsICdGaWVsZE5hbWUnOngubmFtZSwgJ25hbWUnOnguZGlzcGxheU5hbWV9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAvLyBzY29wZS5mZC5sb2NhbFZhcnMuZ2V0RmllbGROYW1lc0Zyb21PYmplY3Qoc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZCwgc2NvcGUuZmQubG9jYWxWYXJzLmZpZWxkc0xpc3QpXHJcblxyXG4gICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICBwb3MgPSBzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKGlkKTtcclxuICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuRm9ybURlZlNlYXJjaD17fVxyXG4gICAgICAgICAgICAgICAgICBpZiAocG9zPj0wKXtcclxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5HZXRQdWJsaXNoZWRSZXNvdXJjZUJ5SWQoaWQpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3Njb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5pZCA9IHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3RbcG9zXS5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWUgPSBzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0W3Bvc10ubmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5Gb3JtID0gZGF0YS5kYXRhLkZvcm1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFB1Ymxpc2hlZFJlc291cmNlID0gc2NvcGUuZmQubG9jYWxWYXJzLnB1Ymxpc2hlZFJlc291cmNlTGlzdFtwb3NdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9zY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW1fYz1zY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCA9IHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtX2MhPT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZUlkPXNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jLmlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLlBhcmFtZXRlcnMuUHVibGlzaGVkUmVzb3VyY2VWZXJzaW9uPXNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jLlZlcnNpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuUmVsYXRlZD1zY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW1fYy5SZXNvdXJjZURlZlVpZDsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmZyZXNoRm9ybT1hbmd1bGFyLmNvcHkoc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtX2MuRm9ybSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQgPSBkYXRhLmRhdGEuRm9ybVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZT09J2NhcmQnKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkQ2FyZC53aWRnZXRzLmxheW91dCA9IGRhdGEuZGF0YS5Gb3JtXHRcdFxyXG5cdFx0XHRcdFx0XHRcdH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLkZvcm1EZWZTZWFyY2hbJ1NlYXJjaEZvcm0nXSA9IHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5QYXJhbWV0ZXJzLlByZXNlbnRhdGlvblR5cGU9PSdjYXJkJykgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5Gb3JtRGVmU2VhcmNoWydDYXJkRm9ybSddID0gc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZENhcmQud2lkZ2V0cy5sYXlvdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmNhcmRMYXlvdXRMb2FkZWQgPSB0cnVlXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5HcmlkU3RhdGU/LmNvbHVtbnNEZWY9PT11bmRlZmluZWQgfHwgb2xkX3B1Ymxpc2hfaWQhPWlkKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuZ2V0RGVmYXVsdENvbHVtbnNEZWYoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRlZCA9dHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTUlHT1JDSEFSVFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmZpZWxkc0xpc3QgPSBbXVxyXG4gICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuZ2V0RmllbGROYW1lc0Zyb21PYmplY3Qoc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZCwgc2NvcGUuZmQubG9jYWxWYXJzLmZpZWxkc0xpc3QpLy9NSUdPUkNIQVJUXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuZm9ybUxvYWRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICBcclxufSAgICBcclxuICAgICAgXHJcbiAgICAgIC8vbmVlZGVkIGZvciBBTkFZTFRJQ1NcclxuICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5nZXRGaWVsZE5hbWVzRnJvbU9iamVjdCA9IGZ1bmN0aW9uIChvYmosIGZpZWxkc0xpc3QsIHBhcmVudCxwYXRoKSAgIHsgICAgICAvLyBmaW5kIEZpZWxkTmFtZXMgaW4gZ2l2ZW4gRGFzaGJvYXJkIG9iamVjdCByZWN1cnNpdmVseSAuIGZpZWxkc0xpc3QgIGlzIHJldHVybiB2YXJpYWJsZSBcclxuICAgICAgICAgICAgdmFyIG8gPSB7fTtcclxuICAgICAgICAgICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkgeyAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoICh0eXBlb2Yob2JqW2tleV0pID09PSAnb2JqZWN0JykgJiYgb2JqW2tleV0gICAmJiBrZXkgIT0gJ0Zvcm1EZWZTZWFyY2gnICYmIGtleSAhPSAnTmFtZUZpZWxkJyAmJiBrZXkgIT0gJ1BhcmFtZXRlcnMnICYmIGtleSAhPSAnbG9jYWxWYXJzJyAmJiBrZXkgIT0gJ0Zvcm1EZWYnICYmIGtleSAhPSAncHVibGlzaGVkRGF0YXNldCcpICB7IC8vRG8gTk9UIHBhcnNlICdOYW1lRmllbGQnICAod2UgbmVlZCBpdCBhcyBpdCBpcylcclxuICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuZ2V0RmllbGROYW1lc0Zyb21PYmplY3QoIG9ialtrZXldLCBmaWVsZHNMaXN0LCBwYXJlbnQsIHBhdGggKyAnLycgKyBrZXkpXHJcbiAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgZWxzZSB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ID09ICdEaXJlY3RpdmVOYW1lJykgeyBwYXJlbnQgPSBvYmpbJ1JlbGF0ZWQnXSB9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSA9PSAnbmFtZScpIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG9ialtrZXldICYmIG9ialtrZXldLmluY2x1ZGVzKCcubmFtZScpICkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb1snRmllbGROYW1lJ10gPSBvYmpba2V5XS5zbGljZSgwLCAtNSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIG9bJ0ZpZWxkTmFtZSddID0gb2JqW2tleV07ICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkgPT0gJ2Rpc3BsYXlOYW1lJykgeyAgb1snbmFtZSddID0gb2JqW2tleV0gIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkgPT0gJ0VsZW1lbnRUeXBlJyB8fCBrZXkgPT0gJ2lkJyAgKSB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb1trZXldPSBvYmpba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7IFxyXG4gICAgIFxyXG4gICAgICAgICAgICAgb1sncGFyZW50J10gPSBwYXJlbnQgXHJcbiAgICAgICAgICAgICAvL29bJ3BhdGgnXSA9IHBhdGhcclxuICAgICAgICAgICAgLy8gaWYgKHBhdGguaW5jbHVkZXMoJ0dyaWRzdGF0ZScpICYmIHBhdGguaW5jbHVkZXMoJ2NvbHVtbnNEZWYnKSkge1xyXG4gICAgICAgICAgICAgIGlmICggIG9bJ0VsZW1lbnRUeXBlJ10gJiYgb1snbmFtZSddICYmIE9iamVjdC5rZXlzKG8pLmxlbmd0aCA+IDAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgIC8vIGRlbGV0ZSAgb1snRWxlbWVudFR5cGUnXVxyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gIGRlbGV0ZSAgb1snRmllbGROYW1lJ11cclxuICAgICAgICAgICAgICAgICAgICAgIC8vICAgZGVsZXRlICBvWydwYXJlbnQnXVxyXG4gICAgICAgICAgICAgICAgICBpZiAoZmllbGRzTGlzdC5maW5kKHggPT4geC5pZCA9PT0gby5pZCk9PT11bmRlZmluZWQpIGZpZWxkc0xpc3QucHVzaChvKSAgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgIH07IFxyXG5cclxuICBcclxuICBcclxuICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLkdldERhdGFzZXREYXRhPWZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgIHtcclxuICAgICAgICAgICAgZnJvbVdpZGdldCA9IGRhdGEud2lkZ2V0SWQ7XHJcbiAgICAgICAgICAgIHZhciBhbGxQcm9jZXNzZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgdmFyIHBvcyA9IHNjb3BlLmZkLmxvY2FsVmFycy5jaGlsZFdpZGdldHMubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUud2lkZ2V0SWQ7IH0pLmluZGV4T2YoZnJvbVdpZGdldCk7XHJcbiAgICAgICAgICAgIC8vaWYgKHBvczwwKSBzY29wZS5mZC5jaGlsZFdpZGdldHMucHVzaCh7d2lkZ2V0SWQ6ZnJvbVdpZGdldCxwcm9jZXNzZWQ6dHJ1ZX0pO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxzY29wZS5mZC5sb2NhbFZhcnMuY2hpbGRXaWRnZXRzLmxlbmd0aDtpKyspXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQubG9jYWxWYXJzLmNoaWxkV2lkZ2V0c1tpXS53aWRnZXRJZCA9PSBmcm9tV2lkZ2V0KSBzY29wZS5mZC5sb2NhbFZhcnMuY2hpbGRXaWRnZXRzW2ldLnByb2Nlc3NlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXNjb3BlLmZkLmxvY2FsVmFycy5jaGlsZFdpZGdldHNbaV0ucHJvY2Vzc2VkKSBhbGxQcm9jZXNzZWQgPSBzY29wZS5mZC5sb2NhbFZhcnMuY2hpbGRXaWRnZXRzW2ldLnByb2Nlc3NlZDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8gaWYgKCFzY29wZS5TZWFyY2hGb3JtUHJvY2Vzc2VkKSAkdGltZW91dChmdW5jdGlvbigpIHtzY29wZS5HZXREYXRhc2V0RGF0YShmcm9tV2lkZ2V0KTt9LDEwMDApO1xyXG4gICAgICAgICAgICAgIGlmKChzY29wZS5mZC5QYXJhbWV0ZXJzLkF1dG9TZWFyY2hDbGllbnQgfHwgc2NvcGUuZmQubG9jYWxWYXJzLmxvYWRGcm9tU3RhdGUpICYmIGFsbFByb2Nlc3NlZCAmJiBzY29wZS5mZC5sb2NhbFZhcnMuU2VhcmNoRm9ybVByb2Nlc3NlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSWQ9c2NvcGUuZmQuUmVsYXRlZDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuUGFyYW1ldGVycyE9bnVsbCAmJiBzY29wZS5mZC5QYXJhbWV0ZXJzIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZT09J2Ryb3Bkb3duJykgc2NvcGUuZmQubG9jYWxWYXJzLmdldERhdGFzZXREYXRhTGlzdChzY29wZS5mZC5QYXJhbWV0ZXJzLkNsaWVudFNpZGVGaWx0ZXIsZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSBzY29wZS5mZC5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VEYXRhUGFnaW5hdGVkKHNjb3BlLmZkLmxvY2FsVmFycy5uZXh0UGFnZSxzY29wZS5mZC5sb2NhbFZhcnMucHJldmlvdXNQYWdlLHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5jdXJyZW50UGFnZSxzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUucGFnZVNpemUpOyAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIFxyXG4gICAgICBpZiAoc2NvcGUuZmQubG9jYWxWYXJzIT11bmRlZmluZWQpIHNjb3BlLmZkLmxvY2FsVmFycy5jaGlsZFdpZGdldHMgPSBbXTtcclxuICAgICAgZWxzZSBzY29wZS5mZC5sb2NhbFZhcnMgPSB7Y2hpbGRXaWRnZXRzIDogW119O1xyXG4gICAgIC8vIHNjb3BlLnVuY2F1Z2h0V2lkZ2V0cyA9IFtdO1xyXG4gICAgICB2YXIgZnJvbVdpZGdldD0wO1xyXG4gICBcclxuICAgICAgIGxldCBzZWFyY2hfZm9ybV9yZWFkeSA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuR2V0RGF0YXNldERhdGEoZGF0YSk7IFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IGFjdGlvbl9zZWFyY2hfZm9ybV9yZWFkeSA9IHNjb3BlLmtzbS5hZGRBY3Rpb24odmFsdWVTdGF0ZU5hbWUsXCJTZWFyY2hGb3JtUmVhZHlcIitzY29wZS50YXNrRXhlY3V0ZUlkK3Njb3BlLnJlc291cmNlRGVmaW5pdGlvbi50cmFuc2FjdGlvbl9pZCxzZWFyY2hfZm9ybV9yZWFkeSk7XHJcbiAgICAgIC8qICAgXHJcbiAgICAgIHNjb3BlLiRvbignU2VhcmNoRm9ybVJlYWR5JytzY29wZS50YXNrRXhlY3V0ZUlkK3Njb3BlLnJlc291cmNlRGVmaW5pdGlvbi50cmFuc2FjdGlvbl9pZCxmdW5jdGlvbihldmVudCwgZGF0YSl7ICAgXHJcbiAgICAgIH0pOyAgICAgXHJcbiAgICAgKi9cclxuICAgXHJcbiAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgLy8gICAgICAgICAgIEdFVCBEQVRBU0VUIFJFTEFURUQgUkVDT1JEU1xyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmdldERhdGFzZXRSZWxhdGVkUmVjb3JkcyA9IGZ1bmN0aW9uIChyZWxhdGVkRGF0YXNldElkLHJlY29yZElkLG1vZGVsSWQpIHtcclxuICBcclxuICBcclxuICAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICBcclxuICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEYXRhUmVsYXRlZChzY29wZS5mZC5SZWxhdGVkLHJlY29yZElkLHJlbGF0ZWREYXRhc2V0SWQsMCxtb2RlbElkLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZGVidWdnZXIgLy9nZXREYXRhc2V0UmVsYXRlZFJlY29yZHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1JlbGF0ZWQuZGF0YSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1JlbGF0ZWQuY29sdW1uRGVmcyA9IGRhdGEuY29sdW1uc0RlZjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5zaG93R3JpZD10cnVlO1xyXG4gICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICBcclxuICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIC8vICAgICAgICAgICBTRUxFQ1QgQ0FSRCBJVEVNXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogIFxyXG5cclxuICAgIHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RDYXJkSXRlbSA9IGZ1bmN0aW9uKGluZGV4KXtcclxuICAgICAgICBsZXQgdmFsdWVcclxuICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWREYXRhc2V0UmVjb3JkSWQ9MFxyXG4gICAgICAgIGlmIChzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuc2VsZWN0ZWRDYXJkSW5kZXghPWluZGV4KVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnNlbGVjdGVkQ2FyZEluZGV4PWluZGV4O1xyXG4gICAgICAgICAgICB2YWx1ZT1zY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YVtzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuc2VsZWN0ZWRDYXJkSW5kZXhdWzBdO1xyXG4gICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWREYXRhc2V0UmVjb3JkSWQgPSBzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YVtpbmRleF1bMF1bc2NvcGUuZmQubG9jYWxWYXJzLlRhYmxlUHJlZml4K1wiX2lkXCJdXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZENhcmRJbmRleD1udWxsO1xyXG4gICAgICAgICAgICB2YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vc2VuZCBkYXRhIHRvIHBhY2thZ2VcclxuICAgICAgICAgV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5zZXREYXRhKHtcclxuICAgICAgICAgICAgICAgICAgREVJOiBbe25hbWU6J3Jlc291cmNlTGlua0RhdGFzZXRMaXN0Jyx2YWx1ZTpbe25hbWU6J3Jlc291cmNlSWQnLHZhbHVlOnNjb3BlLmZkLlJlbGF0ZWR9LHtuYW1lOidyZXNvdXJjZVJlY29yZElkJyx2YWx1ZTpzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWREYXRhc2V0UmVjb3JkSWR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICx7bmFtZToncmVzb3VyY2VSZWNvcmRJZHMnLHZhbHVlOnZhbHVlfSx7bmFtZToncmVzb3VyY2VSZWNvcmRzQWxsJyx2YWx1ZTpzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YX1dfV0sd2lkZ2V0SWQ6IHNjb3BlLmZkLlV1aWRSZWYscGFyZW50UmVzb3VyY2VJZDpzY29wZS5mZC5sb2NhbFZhcnMucGFyZW50UmVzb3VyY2VJZCx0YXNrX2V4ZWN1dGVfaWQ6c2NvcGUudGFza0V4ZWN1dGVJZH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICB9O1xyXG4gICAgICAgXHJcbiAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIC8vICAgICAgICAgICBHRVQgREFUQVNFVCBTSU5HTEUgUkVDT1JEXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmdldERhdGFzZXRTaW5nbGVSZWNvcmQgPSBmdW5jdGlvbiAocmVsYXRlZERhdGFzZXRJZCxyZWNvcmRJZCkge1xyXG4gIFxyXG4gICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgIFxyXG4gICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURhdGFEaXJlY3RGaWx0ZXIocmVsYXRlZERhdGFzZXRJZCx7aWQ6IHJlY29yZElkfSxzY29wZS5mZC5HcmlkU3RhdGVbJ2NvbHVtbnNRdWVyeSddKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1JlbGF0ZWQuZGF0YSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1JlbGF0ZWQuY29sdW1uRGVmcyA9IHNjb3BlLmZkLkdyaWRTdGF0ZVsnY29sdW1uc0RlZiddXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgXHJcbiAgICAgICAgc2NvcGUuJG9uKCdTZWFyY2hGb3JtUmVhZHknK3Njb3BlLnRhc2tFeGVjdXRlSWQrc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsZnVuY3Rpb24oZXZlbnQsIGRhdGExKXtcclxuICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuR2V0RGF0YXNldERhdGEoZGF0YTEpOyBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICBzY29wZS5mZC5sb2NhbFZhcnMuVHJhbnNmb3JtRGF0YUZvckNhcmQgPSBmdW5jdGlvbihkYXRhKVxyXG4gICAge1xyXG4gICAgICAgIGxldCBuZXdEYXRhID0gW107XHJcbiAgICAgICAgbGV0IG5ld0VsZW1lbnQgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpPTA7aTxkYXRhLmxlbmd0aDtpKyspXHJcbiAgICAgICAge1xyXG4gICAgICAgIFxyXG4gICAgICAgIG5ld0VsZW1lbnQucHVzaChkYXRhW2ldKTtcclxuICAgICAgICBuZXdEYXRhLnB1c2gobmV3RWxlbWVudCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgbmV3RWxlbWVudCA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3RGF0YTsgXHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAgICAgbGV0IHN0cmluZ1RvUGF0aCA9IGZ1bmN0aW9uIChwYXRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwYXRoIGlzbid0IGEgc3RyaW5nLCByZXR1cm4gaXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykgcmV0dXJuIHBhdGg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvdXRwdXQgPSBbXTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguc3BsaXQoJy4nKS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtLCBpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3BsaXQgdG8gYW4gYXJyYXkgd2l0aCBicmFja2V0IG5vdGF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnNwbGl0KC9cXFsoW159XSspXFxdL2cpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkubGVuZ3RoID4gMCkgICAgb3V0cHV0LnB1c2goa2V5KTsvLyBQdXNoIHRvIHRoZSBuZXcgYXJyYXlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcclxuICAgICAgICAgfTtcclxuICAgICAgICAgXHJcbiAgICAgICAgIFxyXG4gICAgICBsZXQgZ2V0ID0gZnVuY3Rpb24gKG9iaiwgcGF0aCwgZGVmKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKiBJZiB0aGUgcGF0aCBpcyBhIHN0cmluZywgY29udmVydCBpdCB0byBhbiBhcnJheVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKiBAcGFyYW0gIHtTdHJpbmd8QXJyYXl9IHBhdGggVGhlIHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICogQHJldHVybiB7QXJyYXl9ICAgICAgICAgICAgIFRoZSBwYXRoIGFycmF5ICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoID0gc3RyaW5nVG9QYXRoKHBhdGgpOy8vIEdldCB0aGUgcGF0aCBhcyBhbiBhcnJheVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY3VycmVudCA9IG9iajsvLyBDYWNoZSB0aGUgY3VycmVudCBvYmplY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGVhY2ggaXRlbSBpbiB0aGUgcGF0aCwgZGlnIGludG8gdGhlIG9iamVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBpdGVtIGlzbid0IGZvdW5kLCByZXR1cm4gdGhlIGRlZmF1bHQgKG9yIG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGN1cnJlbnRbcGF0aFtpXV0gPT09IHVuZGVmaW5lZCB8fCBjdXJyZW50W3BhdGhbaV1dID09PSBudWxsICkgcmV0dXJuIGRlZjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W3BhdGhbaV1dOyAvLyBPdGhlcndpc2UsIHVwZGF0ZSB0aGUgY3VycmVudCAgdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudDtcclxuICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgbGV0IGdldEl0ZW0gPSBmdW5jdGlvbiAoY29sdW1uLGl0ZW0pXHJcbiAgICAgIHsgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgbGV0IGRlZiA9IG51bGxcclxuICAgICAgICAgICAgbGV0IHZhbCA9IGdldChpdGVtLGNvbHVtbi5uYW1lLGRlZikgO1xyXG4gICAgICAgICAgICBpZiAodmFsPT09bnVsbCkgcmV0dXJuIFwi4oiFXCI7XHJcbiAgICAgICAgICAgIC8vZGVidWdnZXIgLy9zbWFydHRhYmxlIC8vZ2V0SXRlbVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKGNvbHVtbi5jZWxsRmlsdGVyKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmNlbGxGaWx0ZXIuc3Vic3RyaW5nKDAsNCkudHJpbSgpPT1cImRhdGVcIikgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9ICRmaWx0ZXIoY29sdW1uLmNlbGxGaWx0ZXIuc3Vic3RyaW5nKDAsNCkpKHZhbCxjb2x1bW4uY2VsbEZpbHRlci5zdWJzdHJpbmcoNixjb2x1bW4uY2VsbEZpbHRlci5sZW5ndGgpLnRyaW0oKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmIChjb2x1bW4uTm9PZkRlY2ltYWxzKXtcclxuICAgICAgICAgICAgICAgICAgICB2YWw9ICAodmFsKS50b0xvY2FsZVN0cmluZyggICAgbmF2aWdhdG9yLmxhbmd1YWdlLCAgICAgICAgICB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogY29sdW1uLk5vT2ZEZWNpbWFscyB9ICApOyBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIHZhbDtcclxuICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgXHJcbiAgICBzY29wZS5mZC5sb2NhbFZhcnMuZXhlY3V0ZURhdGFzZXRMaXN0ID0gZnVuY3Rpb24oKXsgICBcclxuICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICBpZiAoc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PW51bGwpIHtcclxuICAgICAgICAgICAgc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQgPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJZD09dW5kZWZpbmVkKSBzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUlkID0gc2NvcGUuZmQuUmVsYXRlZDtcclxuICAgICAgICBpZiAoc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnBhZ2VTaXplPT11bmRlZmluZWQpIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5wYWdlU2l6ZSA9IHBhZ2luYXRpb25PcHRpb25zLnBhZ2VTaXplXHJcblxyXG4gICAgICAgIGlmIChzY29wZS5mZC5NdWx0aWxpbmUgJiYgc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLml0ZW1WYWx1ZT8udmFsPy5sZW5ndGgpIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5pdGVtVmFsdWUudmFsLmxlbmd0aD0wXHJcbiAgICAgICAgZWxzZSBpZiAoIXNjb3BlLmZkLk11bHRpbGluZSkgc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLml0ZW1WYWx1ZS52YWwgPSBudWxsXHJcbiAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nID0gdHJ1ZVxyXG4gICAgICAgIFxyXG4gICAgICAgIFRhc2tEYXRhU2VydmljZS5rdFRhc2tEYXRhc2V0TGlzdChzY29wZS5mZC5SZWxhdGVkLHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLHNjb3BlLmZkLmxvY2FsVmFycy5wYXJlbnRSZXNvdXJjZUlkLHNjb3BlLmZkLlV1aWRSZWYsc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZVZlcnNpb24sc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnJlc291cmNlVmVyc2lvbikudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5yZXNvdXJjZVdpZGdldERlZmluaXRpb249IGRhdGEuZGF0YS5yZXNvdXJjZURlZmluaXRpb247XHJcblx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQgaWYgKGRhdGEuZGF0YS5jb2x1bW5zPy5jb2x1bW5zRGVmPy5sZW5ndGg9PTAgKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0IE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnRGlkIG5vdCByZWNlaXZlIGNvbHVtbkRlZnMgZGF0YSBmb3IgdXVpZDogJyArIHNjb3BlLmZkLlV1aWRSZWYsJ2Vycm9yJylcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgY29uc29sZS5sb2cgKCckc2NvcGUuZmQubG9jYWxWYXJzLmV4ZWN1dGVEYXRhc2V0TGlzdCgpOiBEaWQgbm90IHJlY2VpdmUgY29sdW1uRGVmcyBkYXRhIGZvciB1dWlkOiAnICsgc2NvcGUuZmQuVXVpZFJlZilcclxuXHRcdFx0XHRcdFx0XHRcdFx0IH1cdFx0XHRcdFx0XHRcdFx0XHRcdCBcclxuXHRcdFx0XHRcdFx0XHRcdFx0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmNvbHVtbkRlZnMgPSBkYXRhLmRhdGEuY29sdW1ucy5jb2x1bW5zRGVmO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyIC8va3RUYXNrRGF0YXNldExpc3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2lmIChzY29wZS5mZC5HcmlkU3RhdGU/LmNvbHVtbnNEZWY/Lmxlbmd0aCA+IDApICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5jb2x1bW5EZWZzID0gc2NvcGUuZmQuR3JpZFN0YXRlLmNvbHVtbnNEZWZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUlHT1IgVE9ETyAgICBLQUQgU0UgTUlKRU5KQSBSRVNVUlMgTkEgREFUQVNFVCBMSVNUSSBUUkVCQSBOVUxJUkFUSSBHUklEU1RBVEUgIVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlciAgLy9wcmVwYXJlIGNvbHVtbkRlZnMgLy9zbWFydHRhYmxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5mSXRlbVZhbHVlPWRhdGEuZGF0YS53aWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhLndpZGdldHNDYXJkIT1udWxsKSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZENhcmQud2lkZ2V0cy5sYXlvdXQgPSAgZGF0YS5kYXRhLndpZGdldHNDYXJkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0ID0gIGRhdGEuZGF0YS53aWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUud2lkZ2V0cyA9IHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5mb3JtRGF0YSA9ICBkYXRhLmRhdGEuZm9ybURhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLlNlYXJjaCA9IHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5mb3JtRGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLlNlYXJjaD09dW5kZWZpbmVkKSBzY29wZS5mZC5TZWFyY2g9e307XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuc2hhcmVkRGF0YSA9IGRhdGEuZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5rc20uZXhlY3V0ZUFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcInZhbHVlQ2hhbmdlZFwiLCBzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9zZXR1cCBkYXRhIGdyaWQgb3IgY2FyZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YSA9IGRhdGEuZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlPT0nY2FyZCcpIHsgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0c2NvcGUuZmQubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEgPSBzY29wZS5mZC5sb2NhbFZhcnMuVHJhbnNmb3JtRGF0YUZvckNhcmQoZGF0YS5kYXRhLmRhdGEpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly9zY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkQ2FyZC53aWRnZXRzLmxheW91dCA9IHNjb3BlLmZkLkZvcm1EZWZTZWFyY2g/LkNhcmRGb3JtIC8vTUlHT1IgVE9ETyBWSURKRVRJIERBIExJIE9WTyBUUkVCQSBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vc2NvcGUuZmQubG9jYWxWYXJzLmNhcmRMYXlvdXRMb2FkZWQgPSB0cnVlIC8vTUlHT1IgZG9kYW8gamVyIHNlIG5lIHByaWthenVqdSBrYXJ0aWNlICAvL01JR09SIFRPRE8gVklESkVUSSBEQSBMSSBPVk8gVFJFQkFcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2NvcGUuZmQubG9jYWxWYXJzLnJlc3RvcmVHcmlkU3RhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLm5leHRQYWdlID0gZGF0YS5kYXRhLmRhdGEubmV4dDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnByZXZpb3VzUGFnZSA9IGRhdGEuZGF0YS5kYXRhLnByZXZpb3VzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMudG90YWxDb3VudD1kYXRhLmRhdGEuZGF0YS5jb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLmN1cnJlbnRQYWdlPTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5sb2NhbFZhcnMudG90YWxDb3VudD4wICYmIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5jdXJyZW50UGFnZT09MCkgc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLmN1cnJlbnRQYWdlPTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5udW1QYWdlcyA9IE1hdGguY2VpbChzY29wZS5mZC5sb2NhbFZhcnMudG90YWxDb3VudC9zY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUucGFnZVNpemUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLnRvdGFsSXRlbXM9c2NvcGUuZmQubG9jYWxWYXJzLnRvdGFsQ291bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuSW5pdGlhbExvYWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnNlYXJjaEZvcm1Eb3dubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmNhcmRMYXlvdXRMb2FkZWQgPSB0cnVlXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlPT0nZHJvcGRvd24nKSBzY29wZS5mZC5sb2NhbFZhcnMuc2V0RHJvcGRvd24oc2NvcGUuZmQuUGFyYW1ldGVycy5DbGllbnRTaWRlRmlsdGVyLCBkYXRhLmRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICB9Oy8vZ2V0Rm9ybVJlc291cmNlX0VORFxyXG5cclxuICAgICAgXHJcbiAgXHJcbiAgICBzY29wZS5mZC5sb2NhbFZhcnMucmVzdG9yZUdyaWRTdGF0ZT0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgIGlmIChzY29wZS5mZFsnR3JpZFN0YXRlJ10hPT11bmRlZmluZWQgJiYgc2NvcGUuZmRbJ0dyaWRTdGF0ZSddIT09bnVsbClcclxuICAgICAgICB7XHJcbiAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgIGlmIChzY29wZS5mZFsnR3JpZFN0YXRlJ11bJ2NvbHVtbnNEZWYnXSE9PXVuZGVmaW5lZCAmJiBzY29wZS5mZFsnR3JpZFN0YXRlJ11bJ2NvbHVtbnNEZWYnXS5sZW5ndGgpIHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5jb2x1bW5EZWZzID0gIHNjb3BlLmZkWydHcmlkU3RhdGUnXVsnY29sdW1uc0RlZiddXHJcbiAgICAgICAgICAgIGlmIChzY29wZS5mZFsnR3JpZFN0YXRlJ11bJ2NvbHVtbnNRdWVyeSddIT09dW5kZWZpbmVkICYmIHNjb3BlLmZkWydHcmlkU3RhdGUnXVsnY29sdW1uc1F1ZXJ5J10ubGVuZ3RoKSBzY29wZS5mZC5sb2NhbFZhcnMuY29sdW1uc0ZvclF1ZXJ5ID0gIHNjb3BlLmZkWydHcmlkU3RhdGUnXVsnY29sdW1uc1F1ZXJ5J11cclxuICAgICAgICAgICAgaWYgKHNjb3BlLmZkWydHcmlkU3RhdGUnXVsncmVsYXRlZFJlc291cmNlcyddIT09dW5kZWZpbmVkICYmIHNjb3BlLmZkWydHcmlkU3RhdGUnXVsncmVsYXRlZFJlc291cmNlcyddLmxlbmd0aCkgc2NvcGUuZmQubG9jYWxWYXJzLnJlbGF0ZWRSZXNvdXJjZXMgPSAgc2NvcGUuZmRbJ0dyaWRTdGF0ZSddWydyZWxhdGVkUmVzb3VyY2VzJ11cclxuICAgICAgICAgICAgaWYgKHNjb3BlLmZkLmxvY2FsVmFycy5jb2x1bW5zRm9yUXVlcnk9PT11bmRlZmluZWQpIHNjb3BlLmZkLmxvY2FsVmFycy5jb2x1bW5zRm9yUXVlcnk9W11cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5nZXRSZXNvdXJjZURhdGEgPSBmdW5jdGlvbiAoKSB7XHJcblxyXG4gICAgICAgIC8vIHNjb3BlLmFjdGl2aXR5LmFjdGl2aXR5TWVzc2FnZSA9IFByb2Nlc3NpbmdTZXJ2aWNlLnNldEFjdGl2aXR5TXNnKCdEb3dubG9hZGluZyByZXNvdXJjZSBkYXRhIGZvciAnK3Njb3BlLnNlbGVjdGVkUmVzb3VyY2UpO1xyXG4gICAgICAgIHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICBpZiAoc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnBhZ2VTaXplPT11bmRlZmluZWQpIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5wYWdlU2l6ZSA9IHBhZ2luYXRpb25PcHRpb25zLnBhZ2VTaXplO1xyXG4gICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGF0YShzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUlkLHNjb3BlLnRhc2tJZCxzY29wZS5mZC5sb2NhbFZhcnMuZm9ybVR5cGUsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmNvbHVtbkRlZnMgPSBkYXRhLmNvbHVtbnNEZWY7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyIC8vZ2V0UmVzb3VyY2VEYXRhKCkgLy9zbWFydHRhYmxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucmVzdG9yZUdyaWRTdGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLkluaXRpYWxMb2FkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIC8vICAgICAgICAgICBHRVQgRk9STSBGSUVMRFNcclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5nZXRGb3JtRmllbGRzID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucGVMb2FkZWQ9ZmFsc2UgICAgICAgICBcclxuICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRGb3JtRmllbGRzKHNjb3BlLmZkLlJlbGF0ZWQsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuUHJlc2VudGF0aW9uRWxlbWVudHM9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5wZUxvYWRlZD10cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5wZUxvYWRlZD10cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICBcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAvKiBcclxuICAgICAgICAgc2NvcGUuJHdhdGNoKCdsb2NhbFZhcnMud2lkZ2V0U3RhdGUuaXRlbVZhbHVlLnZhbCcsZnVuY3Rpb24obmV3VmFsdWUsb2xkVmFsdWUpe1xyXG4gICAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWUhPW9sZFZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAvL3NlbmQgZGF0YSB0byBwYWNrYWdlXHJcbiAgICAgICAgICAgICAgICAgICBsZXQgbmV3VmFsdWVTaW5nbGUsbmV3VmFsdWVNdWx0aXBsZTtcclxuICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5NdWx0aWxpbmUpXHJcbiAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVNdWx0aXBsZSA9IG5ld1ZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlU2luZ2xlPVwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVNdWx0aXBsZSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlU2luZ2xlPW5ld1ZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICBzY29wZS5rc20uZXhlY3V0ZUFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcInZhbHVlQ2hhbmdlZFwiLCBzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5zZXREYXRhKHtcclxuICAgICAgICAgICAgICAgICAgICBERUk6IFt7bmFtZToncmVzb3VyY2VMaW5rRGF0YXNldExpc3QnLHZhbHVlOlt7bmFtZToncmVzb3VyY2VJZCcsdmFsdWU6c2NvcGUuZmQuUmVsYXRlZH0se25hbWU6J3Jlc291cmNlUmVjb3JkSWQnLHZhbHVlOm5ld1ZhbHVlU2luZ2xlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAse25hbWU6J3Jlc291cmNlUmVjb3JkSWRzJyx2YWx1ZTpuZXdWYWx1ZU11bHRpcGxlfSx7bmFtZToncmVzb3VyY2VSZWNvcmRzQWxsJyx2YWx1ZTpzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldEl0ZW1zfV19XSx3aWRnZXRJZDogc2NvcGUuZmQuVXVpZFJlZixwYXJlbnRSZXNvdXJjZUlkOnNjb3BlLmZkLmxvY2FsVmFycy5wYXJlbnRSZXNvdXJjZUlkLHRhc2tfZXhlY3V0ZV9pZDpzY29wZS50YXNrRXhlY3V0ZUlkfSk7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgKi9cclxuICAgICAgIFxyXG4gICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgIC8vICAgICAgICAgICBHRVQgREFUQVNFVCBEQVRBIEZPUiBEUk9QRE9XTlxyXG4gICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgdmFyIHJlZnJlc2hfbGlzdF9mcm9tX2NhbGxiYWNrPWZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5nZXREYXRhc2V0RGF0YUxpc3QodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIHNjb3BlLmZpbHRlck9uQ2xpZW50ID0gZnVuY3Rpb24oaXRlbXMpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBsZXQgdGVtcD1bXTtcclxuICAgICAgICAgICAgbGV0IHNlYXJjaDtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2NvcGUuZmQuU2VhcmNoKSAmJiBzY29wZS5mZC5TZWFyY2gubGVuZ3RoPjApIHNlYXJjaCA9IHNjb3BlLmZkLlNlYXJjaFswXTtcclxuICAgICAgICAgICAgZWxzZSBzZWFyY2ggPSBzY29wZS5mZC5TZWFyY2g7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDtpPGl0ZW1zLmxlbmd0aDtpKyspXHJcbiAgICAgICAgICAgIHtcclxuICBcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBzZWFyY2gpIHtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2VhcmNoW2tleV0hPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkgaW4gaXRlbXNbaV0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtc1tpXVtrZXldPT1zZWFyY2hba2V5XS5pZCB8fCBzZWFyY2hba2V5XT09bnVsbCB8fCBzZWFyY2hba2V5XT09dW5kZWZpbmVkIHx8IGl0ZW1zW2ldW2tleV09PXVuZGVmaW5lZCkgIHRlbXAucHVzaChpdGVtc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmIChrZXkgaW4gaXRlbXNbaV0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtc1tpXVtrZXldPT1zZWFyY2hba2V5XSB8fCBzZWFyY2hba2V5XT09bnVsbCB8fCBzZWFyY2hba2V5XT09dW5kZWZpbmVkIHx8IGl0ZW1zW2ldW2tleV09PXVuZGVmaW5lZCkgIHRlbXAucHVzaChpdGVtc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIHRlbXAucHVzaChpdGVtc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfWVsc2UgdGVtcC5wdXNoKGl0ZW1zW2ldKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRlbXA7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuZ2V0RGF0YXNldERhdGFMaXN0ID0gZnVuY3Rpb24oZnJvbUNhY2hlLGNsaWVudFNpZGVGaWx0ZXIpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmcm9tQ2FjaGU9PXVuZGVmaW5lZCkgZnJvbUNhY2hlPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNsaWVudFNpZGVGaWx0ZXI9PXVuZGVmaW5lZCkgY2xpZW50U2lkZUZpbHRlcj1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0SXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGF0YUxpc3RBbGwoc2NvcGUuZmQuUmVsYXRlZCxzY29wZS5mZC5QcmVzZW50YXRpb25JZCxsYW5nLGZyb21DYWNoZSxyZWZyZXNoX2xpc3RfZnJvbV9jYWxsYmFjayxzY29wZS5mZC5OYW1lRmllbGQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjbGllbnRTaWRlRmlsdGVyKSBzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldEl0ZW1zID0gc2NvcGUuZmlsdGVyT25DbGllbnQoZGF0YS5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldEl0ZW1zID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNjb3BlLmZkLk11bHRpbGluZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLml0ZW1WYWx1ZS52YWwhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSBzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldEl0ZW1zLm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5pdGVtVmFsdWUudmFsLmlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zPDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9zY29wZS5jbGVhckRyb3Bkb3duKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuaXRlbVZhbHVlLnZhbCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2Ugc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLml0ZW1WYWx1ZS52YWwgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSBpZiAoc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLml0ZW1WYWx1ZT8udmFsPy5sZW5ndGgpIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5pdGVtVmFsdWUudmFsLmxlbmd0aD0wXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnNldERyb3Bkb3duID0gZnVuY3Rpb24oY2xpZW50U2lkZUZpbHRlcixkYXRhKXtcclxuICAgICAgICBcclxuICAgICAgICAgICAgLy8kdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgaWYgKGNsaWVudFNpZGVGaWx0ZXIpIHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0SXRlbXMgPSBzY29wZS5maWx0ZXJPbkNsaWVudChkYXRhLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldEl0ZW1zID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzY29wZS5mZC5NdWx0aWxpbmUpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLml0ZW1WYWx1ZS52YWwhPT11bmRlZmluZWQgJiYgc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLml0ZW1WYWx1ZS52YWwhPT1udWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0SXRlbXMubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2Yoc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLml0ZW1WYWx1ZS52YWw/LmlkKTtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3M8MCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9zY29wZS5jbGVhckRyb3Bkb3duKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLml0ZW1WYWx1ZS52YWw9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2Ugc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLml0ZW1WYWx1ZS52YWw9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLkdldERhdGFzZXREYXRhQ2xpY2sgPSBmdW5jdGlvbigpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJZD1zY29wZS5mZC5SZWxhdGVkO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLkhhc1BhcmVudERhdGFzZXQgJiYgc2NvcGUuZmQuUG9wdWxhdGVQYXJlbnRNZXRob2Q9PSdBJylcclxuICAgICAgICAgICAgICAgIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLkdldFJlc291cmNlRGF0YUZvclBhcmVudCgpXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9ZWxzZSBzY29wZS5mZC5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VEYXRhUGFnaW5hdGVkKHNjb3BlLmZkLmxvY2FsVmFycy5uZXh0UGFnZSxzY29wZS5mZC5sb2NhbFZhcnMucHJldmlvdXNQYWdlLDEsc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnBhZ2VTaXplKTsgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH07ICAgIFxyXG4gIFxyXG5cclxuICAgXHJcblxyXG4gICAgc2NvcGUuZmQubG9jYWxWYXJzLnBhZ2VDaGFuZ2VkID0gZnVuY3Rpb24oKXtcclxuICAgICAgICBcclxuICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VEYXRhUGFnaW5hdGVkKHNjb3BlLmZkLmxvY2FsVmFycy5uZXh0UGFnZSxzY29wZS5mZC5sb2NhbFZhcnMucHJldmlvdXNQYWdlLHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5jdXJyZW50UGFnZSxzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUucGFnZVNpemUpO1xyXG4gICAgfTtcclxuICAgICAgXHJcbiAgICAgXHJcbiAgICAgXHJcbiAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZERhdGEgPSBmdW5jdGlvbigpIHtcclxuXHJcbiAgICAgICAgICAgcmV0dXJuIHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhXHJcbiAgICAgICAgfVxyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5nZXREZWZhdWx0Q29sdW1uc0RlZiA9IGZ1bmN0aW9uICgpIHtcclxuXHJcbiAgICAgICAgXHJcbiAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VDb2x1bW5zKHNjb3BlLmZkLlBhcmFtZXRlcnMuUHVibGlzaGVkUmVzb3VyY2VJZCxzY29wZS5mZC5QYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlLGxhbmcsc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZVZlcnNpb24pLnRoZW4oZnVuY3Rpb24oZGF0YSkgey8vTUlHT1JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5jb2x1bW5EZWZzID0gZGF0YS5kYXRhLmNvbHVtbnNEZWZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEucmVsYXRlZFJlc291cmNlcyA9IGRhdGEuZGF0YS5yZWxhdGVkUmVzb3VyY2VzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnJlc3VsdHMuY29sdW1ucyA9ICBzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuY29sdW1uRGVmc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuc2F2ZUdyaWRTdGF0ZShmYWxzZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfVxyXG4gICAgICBcclxuICAgIHNjb3BlLmZkLmxvY2FsVmFycy5SZWxhdGVkUmVzb3VyY2VDb2x1bW5zID0gZnVuY3Rpb24ocmVsYXRlZF9pbmRleCxpbml0aWFsX2xvYWQpe1xyXG5cclxuXHJcbiAgICAgICAgbGV0IHNlbGVjdGVkX3JlbGF0ZWQgPSBzY29wZS5mZC5HcmlkU3RhdGUucmVsYXRlZFJlc291cmNlc1tyZWxhdGVkX2luZGV4XVxyXG4gICAgICAgIGlmIChzZWxlY3RlZF9yZWxhdGVkLlNlbGVjdFZlcnNpb25EaXJlY3Q9PT11bmRlZmluZWQpIHNlbGVjdGVkX3JlbGF0ZWQuU2VsZWN0VmVyc2lvbkRpcmVjdCA9IGZhbHNlXHJcblxyXG4gICAgICAgIGlmICgoIWluaXRpYWxfbG9hZCAmJiAhc2VsZWN0ZWRfcmVsYXRlZC5TZWxlY3RlZCkgfHwgKGluaXRpYWxfbG9hZCAmJiBzZWxlY3RlZF9yZWxhdGVkLlNlbGVjdGVkKSl7XHJcbiAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5yZWxhdGVkUmVzb3VyY2VzUHVibGlzaGVkTGlzdFtzZWxlY3RlZF9yZWxhdGVkLmlkXSA9IFtdXHJcbiAgICAgICAgICAgIHNlbGVjdGVkX3JlbGF0ZWQuTG9hZGluZ0NvbHVtbnM9dHJ1ZVxyXG4gICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5HZXRQdWJsaXNoZWRSZXNvdXJjZXNCeVR5cGVJZChzZWxlY3RlZF9yZWxhdGVkLmlkLCdmb3JtJykudGhlbihcclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChkYXRhKSB7ICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5yZWxhdGVkUmVzb3VyY2VzUHVibGlzaGVkTGlzdFtzZWxlY3RlZF9yZWxhdGVkLmlkXSA9IGRhdGEuZGF0YTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzZWxlY3RlZF9yZWxhdGVkLlNlbGVjdFZlcnNpb25EaXJlY3Qpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHVibGlzaGVkID0gc2NvcGUuZmQubG9jYWxWYXJzLnJlbGF0ZWRSZXNvdXJjZXNQdWJsaXNoZWRMaXN0W3NlbGVjdGVkX3JlbGF0ZWQuaWRdW3Njb3BlLmZkLmxvY2FsVmFycy5yZWxhdGVkUmVzb3VyY2VzUHVibGlzaGVkTGlzdFtzZWxlY3RlZF9yZWxhdGVkLmlkXS5sZW5ndGgtMV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZF9yZWxhdGVkLlB1Ymxpc2hlZFJlc291cmNlSWQgPSBwdWJsaXNoZWQuaWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRfcmVsYXRlZC5QdWJsaXNoZWRSZXNvdXJjZVZlcnNpb24gPSBwdWJsaXNoZWQuVmVyc2lvblxyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXNlbGVjdGVkX3JlbGF0ZWQuU2VsZWN0VmVyc2lvbkRpcmVjdCB8fCAoaW5pdGlhbF9sb2FkICYmIHNlbGVjdGVkX3JlbGF0ZWQuU2VsZWN0VmVyc2lvbkRpcmVjdCkpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2dldCBjb2x1bW5zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkX3JlbGF0ZWQucmVzb3VyY2VUeXBlPSdkYXRhc2V0JyAvL3JlbW92ZSBoYXJkY29kaW5nIGxhdGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5yZWxhdGVkUmVzb3VyY2VzQ29sdW1uc1tzZWxlY3RlZF9yZWxhdGVkLmlkXSA9IFtdXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZUNvbHVtbnMoc2VsZWN0ZWRfcmVsYXRlZC5QdWJsaXNoZWRSZXNvdXJjZUlkLHNlbGVjdGVkX3JlbGF0ZWQucmVzb3VyY2VUeXBlLGxhbmcsc2VsZWN0ZWRfcmVsYXRlZC5QdWJsaXNoZWRSZXNvdXJjZVZlcnNpb24pLnRoZW4oZnVuY3Rpb24oZGF0YSkgey8vTUlHT1JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnJlbGF0ZWRSZXNvdXJjZXNDb2x1bW5zW3NlbGVjdGVkX3JlbGF0ZWQuaWRdID0gZGF0YS5kYXRhLmNvbHVtbnNEZWZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5zZXRDb2xTZWxlY3RlZChyZWxhdGVkX2luZGV4KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkX3JlbGF0ZWQuTG9hZGluZ0NvbHVtbnM9ZmFsc2UgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZF9yZWxhdGVkLkxvYWRpbmdDb2x1bW5zPWZhbHNlICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZF9yZWxhdGVkLkxvYWRpbmdDb2x1bW5zPWZhbHNlICAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG5cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnJlbGF0ZWRSZXNvdXJjZXNDb2x1bW5zW3NlbGVjdGVkX3JlbGF0ZWQuaWRdPVtdXHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgICBzY29wZS5zZXRDb2xTZWxlY3RlZCA9IGZ1bmN0aW9uKHJlbGF0ZWRfaW5kZXgpe1xyXG5cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5HcmlkU3RhdGUucmVsYXRlZFJlc291cmNlc1tyZWxhdGVkX2luZGV4XS5zZWxlY3RlZENvbHM9PXVuZGVmaW5lZCkgc2NvcGUuZmQuR3JpZFN0YXRlLnJlbGF0ZWRSZXNvdXJjZXNbcmVsYXRlZF9pbmRleF0uc2VsZWN0ZWRDb2xzPVtdXHJcbiAgICAgICAgICAgICAgICBsZXQgcmVsYXRlZF9pZCA9IHNjb3BlLmZkLkdyaWRTdGF0ZS5yZWxhdGVkUmVzb3VyY2VzW3JlbGF0ZWRfaW5kZXhdLmlkXHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTA7ajxzY29wZS5mZC5sb2NhbFZhcnMucmVsYXRlZFJlc291cmNlc0NvbHVtbnNbcmVsYXRlZF9pZF0ubGVuZ3RoO2orKylcclxuICAgICAgICAgICAgICAgIHsgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuR3JpZFN0YXRlLnJlbGF0ZWRSZXNvdXJjZXNbcmVsYXRlZF9pbmRleF0uc2VsZWN0ZWRDb2xzLmluZGV4T2Yoc2NvcGUuZmQubG9jYWxWYXJzLnJlbGF0ZWRSZXNvdXJjZXNDb2x1bW5zW3JlbGF0ZWRfaWRdW2pdLm5hbWUpPj0wKSBzY29wZS5mZC5sb2NhbFZhcnMucmVsYXRlZFJlc291cmNlc0NvbHVtbnNbcmVsYXRlZF9pZF1bal0uc2VsZWN0ZWQ9IHRydWVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgc2NvcGUuZmQubG9jYWxWYXJzLlJlbGF0ZWRSZXNvdXJjZURpcmVjdENvbHVtbnMgPSBmdW5jdGlvbihwdWJsaXNoZWQpe1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9nZXQgY29sdW1uc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3NlbGVjdGVkX3JlbGF0ZWQucmVzb3VyY2VUeXBlPSdkYXRhc2V0JyAvL3JlbW92ZSBoYXJkY29kaW5nIGxhdGVyXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcG9zID0gc2NvcGUuZmQuR3JpZFN0YXRlLnJlbGF0ZWRSZXNvdXJjZXMubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YocHVibGlzaGVkLlJlc291cmNlRGVmVWlkKVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcz49MCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5HcmlkU3RhdGUucmVsYXRlZFJlc291cmNlc1twb3NdLkxvYWRpbmdDb2x1bW5zPXRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLkdyaWRTdGF0ZS5yZWxhdGVkUmVzb3VyY2VzW3Bvc10uUHVibGlzaGVkUmVzb3VyY2VJZD1wdWJsaXNoZWQuaWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLkdyaWRTdGF0ZS5yZWxhdGVkUmVzb3VyY2VzW3Bvc10uUHVibGlzaGVkUmVzb3VyY2VWZXJzaW9uID0gcHVibGlzaGVkLlZlcnNpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucmVsYXRlZFJlc291cmNlc0NvbHVtbnNbcHVibGlzaGVkLlJlc291cmNlRGVmVWlkXSA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlZC5SZXNvdXJjZVR5cGUgPSAnZGF0YXNldCcgLy9yZW1vdmUgdGhpcyBhZnRlciBpbXBsZW1lbnRhdGlvbiBvbiBzZXJ2ZXJcclxuXHJcbiAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VDb2x1bW5zKHB1Ymxpc2hlZC5pZCxwdWJsaXNoZWQuUmVzb3VyY2VUeXBlLGxhbmcscHVibGlzaGVkLlZlcnNpb24pLnRoZW4oZnVuY3Rpb24oZGF0YSkgey8vTUlHT1JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnJlbGF0ZWRSZXNvdXJjZXNDb2x1bW5zW3B1Ymxpc2hlZC5SZXNvdXJjZURlZlVpZF0gPSBkYXRhLmRhdGEuY29sdW1uc0RlZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuR3JpZFN0YXRlLnJlbGF0ZWRSZXNvdXJjZXNbcG9zXS5Mb2FkaW5nQ29sdW1ucz1mYWxzZSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5zZXRDb2xTZWxlY3RlZChwb3MpICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLkdyaWRTdGF0ZS5yZWxhdGVkUmVzb3VyY2VzW3Bvc10uTG9hZGluZ0NvbHVtbnM9ZmFsc2VcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHNjb3BlLmZkLmxvY2FsVmFycy5hZGRSZW1vdmVDb2x1bW4gPSBmdW5jdGlvbihjb2wscmVsYXRlZF9pZCl7XHJcblxyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBwb3MgPSBzY29wZS5mZC5HcmlkU3RhdGVbJ2NvbHVtbnNEZWYnXS5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5uYW1lOyB9KS5pbmRleE9mKGNvbC5uYW1lKTtcclxuICAgICAgICBsZXQgcG9zX3JlbCA9IHNjb3BlLmZkLkdyaWRTdGF0ZVsncmVsYXRlZFJlc291cmNlcyddLm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKHJlbGF0ZWRfaWQpO1xyXG5cclxuICAgICAgICBpZiAocG9zPjApIHtcclxuICAgICAgICAgICBpZiAoY29sLnNlbGVjdGVkKSBcclxuXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHNjb3BlLmZkLkdyaWRTdGF0ZVsnY29sdW1uc0RlZiddLnNwbGljZShwb3MsMSlcclxuICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5HcmlkU3RhdGUucmVsYXRlZFJlc291cmNlc1twb3NfcmVsXS5zZWxlY3RlZENvbHM9PXVuZGVmaW5lZCkgc2NvcGUuZmQuR3JpZFN0YXRlLnJlbGF0ZWRSZXNvdXJjZXNbcG9zX3JlbF0uc2VsZWN0ZWRDb2xzPVtdXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHNjb3BlLmZkLkdyaWRTdGF0ZS5yZWxhdGVkUmVzb3VyY2VzW3Bvc19yZWxdLnNlbGVjdGVkQ29scy5zcGxpY2UoY29sLm5hbWUpXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIGlmICghY29sLnNlbGVjdGVkKSBcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5HcmlkU3RhdGVbJ2NvbHVtbnNEZWYnXS5wdXNoKGNvbClcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuR3JpZFN0YXRlLnJlbGF0ZWRSZXNvdXJjZXNbcG9zX3JlbF0uc2VsZWN0ZWRDb2xzPT11bmRlZmluZWQpIHNjb3BlLmZkLkdyaWRTdGF0ZS5yZWxhdGVkUmVzb3VyY2VzW3Bvc19yZWxdLnNlbGVjdGVkQ29scz1bXVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuR3JpZFN0YXRlLnJlbGF0ZWRSZXNvdXJjZXNbcG9zX3JlbF0uc2VsZWN0ZWRDb2xzLnB1c2goY29sLm5hbWUpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBzY29wZS5mZC5sb2NhbFZhcnMub25TZWxlY3RDb2x1bW5zVmVyc2lvbkNhbGxiYWNrPWZ1bmN0aW9uIChpdGVtLG1vZGVsKSB7XHJcblxyXG4gICAgICAgICBsZXQgcG9zID0gc2NvcGUuZmQubG9jYWxWYXJzLnJlbGF0ZWRSZXNvdXJjZXNQdWJsaXNoZWRMaXN0W2l0ZW0uUmVzb3VyY2VEZWZVaWRdLm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKGl0ZW0uaWQpO1xyXG5cclxuICAgICAgICBpZiAocG9zPjApIHtcclxuXHJcbiAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5SZWxhdGVkUmVzb3VyY2VEaXJlY3RDb2x1bW5zKHNjb3BlLmZkLmxvY2FsVmFycy5yZWxhdGVkUmVzb3VyY2VzUHVibGlzaGVkTGlzdFtpdGVtLlJlc291cmNlRGVmVWlkXVtwb3NdKVxyXG4gICAgICAgICAgIC8vc2NvcGUuZmQubG9jYWxWYXJzLnJlbGF0ZWRSZXNvdXJjZXNQdWJsaXNoZWRMaXN0W3Bvc11cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBzY29wZS5mZC5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VEYXRhRmlsdGVyZWQgPSBmdW5jdGlvbiAoKSB7XHJcblxyXG4gICAgICAgICAgICBzY29wZS5maWx0ZXIgPSB7fTtcclxuICAgICAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuXHJcbiAgICAgICAgICAgLy9zY29wZS5hY3Rpdml0eS5hY3Rpdml0eU1lc3NhZ2UgPSBQcm9jZXNzaW5nU2VydmljZS5zZXRBY3Rpdml0eU1zZygnUmV0cml2aW5nIGRhdGEgJytzY29wZS5zZWxlY3RlZFJlc291cmNlKTtcclxuICAgICAgICAgIC8vc2NvcGUuZmlsdGVyID0gUmVzb3VyY2VzRGF0YVNlcnZpY2UucHJlcGFyZVJlc291cmNlV2lkZ2V0RGF0YShzY29wZS5kYXNoYm9hcmQud2lkZ2V0cywtMSk7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgaWYgKHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSWQ9PW51bGwpIHtcclxuICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJZCA9IHNjb3BlLmZkLlJlbGF0ZWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAvLyAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEYXRhRmlsdGVyZWQoc2NvcGUuZmQuUmVsYXRlZCxsYW5nLHNjb3BlLmZpbHRlcikudGhlbihmdW5jdGlvbihkYXRhKSB7Ly9NSUdPUlxyXG4gICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURhdGFGaWx0ZXJlZChzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUlkLHNjb3BlLnRhc2tJZCxzY29wZS5mZC5sb2NhbFZhcnMuZm9ybVR5cGUsbGFuZyxzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLmRhdGEpLnRoZW4oZnVuY3Rpb24oZGF0YSkgey8vTUlHT1JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5jb2x1bW5EZWZzID0gZGF0YS5jb2x1bW5zRGVmO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucmVzdG9yZUdyaWRTdGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5Jbml0aWFsTG9hZCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnNob3dIaWRlU2VhcmNoRm9ybSA9IGZ1bmN0aW9uKClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9pZiAoc2NvcGUuZmQuU2hvd1NlYXJjaEZvcm0pIHNjb3BlLmZkLmxvY2FsVmFycy5nZXRGb3JtUmVzb3VyY2UoKTtcclxuICAgICAgICB9O1xyXG4gICAgXHJcbiAgICAvL0dFVCBQdWJsaXNoZWQgcmVzb3VyY2VzXHJcbiAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmdldFB1Ymxpc2hlZFJlc291cmNlcz1mdW5jdGlvbigpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkTG9hZGVkPWZhbHNlXHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5HZXRQdWJsaXNoZWRSZXNvdXJjZXNCeVR5cGVJZChzY29wZS5mZC5SZWxhdGVkLCdmb3JtJykudGhlbihcclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChkYXRhKSB7ICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnB1Ymxpc2hlZFJlc291cmNlTGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRMb2FkZWQ9dHJ1ZVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICghc2NvcGUuZmQuUGFyYW1ldGVycy5TZWxlY3RWZXJzaW9uRGlyZWN0KXtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHVibGlzaGVkID0gc2NvcGUuZmQubG9jYWxWYXJzLnB1Ymxpc2hlZFJlc291cmNlTGlzdFtzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0Lmxlbmd0aC0xXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW1fYyA9IHB1Ymxpc2hlZFxyXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLlBhcmFtZXRlcnMuUHVibGlzaGVkUmVzb3VyY2VJZCA9IHB1Ymxpc2hlZD8uaWRcclxuICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlVmVyc2lvbiA9IHB1Ymxpc2hlZD8uVmVyc2lvblxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlSWQ+MCkgc2NvcGUuZmQubG9jYWxWYXJzLnNldFNlbGVjdGVkUmVzb3VyY2Uoc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZUlkLHRydWUpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH0gICAgICAgICBcclxuICAgICAgICAgICBcclxuICAgIC8vIFBPUFVOSSBMSVNUVSBERUZJTklDSUpBIE9EIFJFU1VSU0EgKFJFU09VUkNFUyBMSVNUKVxyXG4gICAgc2NvcGUuZmQubG9jYWxWYXJzLmdldFJlc291cmNlcyA9IGZ1bmN0aW9uKCkgIHtcclxuXHJcbiAgICAgICAgICAgIGlmIChzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VMaXN0PT11bmRlZmluZWQpIHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZUxpc3Q9W107XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgbGV0IGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmTGlzdEJ5VHlwZShsYW5nLHNjb3BlLmZkLlBhcmFtZXRlcnMuU2VsZWN0ZWRSZXNvdXJjZVR5cGUpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuUmVsYXRlZCE9XCJcIiAmJiBzY29wZS5mZC5SZWxhdGVkIT11bmRlZmluZWQgJiYgc2NvcGUuZmQuUmVsYXRlZCE9bnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZUxpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2Yoc2NvcGUuZmQuUmVsYXRlZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zPjApIHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbSA9IHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZUxpc3RbcG9zXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5nZXRQdWJsaXNoZWRSZXNvdXJjZXMoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy9Mb2FkIHN1YnF1ZXJ5IGZvcm1cclxuICAgIHNjb3BlLmZkLmxvY2FsVmFycy5sb2FkU3VicXVlcnlGb3JtID0gZnVuY3Rpb24oKXtcclxuXHJcbiAgICAgICAgbGV0IHZlcnNpb24gPSAwXHJcbiAgICAgICAgaWYgKHNjb3BlLmZkLlBhcmFtZXRlcnMuU3ViUXVlcnkuU2VsZWN0VmVyc2lvbkRpcmVjdCkgdmVyc2lvbiA9IHNjb3BlLmZkLlBhcmFtZXRlcnMuU3ViUXVlcnkuUHVibGlzaGVkUmVzb3VyY2VWZXJzaW9uXHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLkdldFB1Ymxpc2hlZFJlc291cmNlQnlJZChzY29wZS5mZC5QYXJhbWV0ZXJzLlN1YlF1ZXJ5LlB1Ymxpc2hlZFJlc291cmNlSWQpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLlBhcmFtZXRlcnMuU3ViUXVlcnkuZm9ybSA9IHtsYXlvdXQ6ZGF0YS5kYXRhLkZvcm19XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzY29wZS5mZC5QYXJhbWV0ZXJzLlN1YlF1ZXJ5LmZvcm1EYXRhKSBzY29wZS5mZC5QYXJhbWV0ZXJzLlN1YlF1ZXJ5LmZvcm1EYXRhPVt7fV1cclxuICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuc3VicXVlcnlGb3JtTG9hZGVkPXRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuc3VicXVlcnlGb3JtTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBcclxuICAgIH1cclxuXHJcbiAgICBzY29wZS5mZC5sb2NhbFZhcnMuc3FSZXNvdXJjZURlZmluaXRpb24gPSB7dWlkOnNjb3BlLmZkLlBhcmFtZXRlcnMuU3ViUXVlcnk/LlNlbGVjdGVkUmVzb3VyY2U/LmlkLGZvcm1fZGVmaW5pdGlvbjp0cnVlfVxyXG4gICAgaWYgKHNjb3BlLmZkLlBhcmFtZXRlcnMuVXNlU3ViUXVlcnkgJiYgc2NvcGUuZmQuUGFyYW1ldGVycy5TdWJRdWVyeS5QdWJsaXNoZWRSZXNvdXJjZUlkICYmICFzY29wZS5mZC5QYXJhbWV0ZXJzLlN1YlF1ZXJ5LmZvcm0/LmxheW91dD8ubGVuZ3RoKSBzY29wZS5mZC5sb2NhbFZhcnMubG9hZFN1YnF1ZXJ5Rm9ybSgpXHJcbiAgICBlbHNle1xyXG5cclxuICAgICAgICBpZiAoIXNjb3BlLmZkLlBhcmFtZXRlcnMuU3ViUXVlcnkpIHNjb3BlLmZkLlBhcmFtZXRlcnMuU3ViUXVlcnk9e31cclxuICAgICAgICBpZiAoIXNjb3BlLmZkLlBhcmFtZXRlcnMuU3ViUXVlcnkuZm9ybURhdGEpIHNjb3BlLmZkLlBhcmFtZXRlcnMuU3ViUXVlcnkuZm9ybURhdGE9W3t9XVxyXG4gICAgICAgIFxyXG4gICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5zdWJxdWVyeUZvcm1Mb2FkZWQ9dHJ1ZVxyXG5cclxuICAgIH1cclxuICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAvLyAgICAgICAgICAgR0VUIERBVEFTRVQgRElSRUNUIEZJTFRFUlxyXG4gICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gICAgICBzY29wZS5mZC5sb2NhbFZhcnMuZ2V0RGF0YXNldERpcmVjdCA9IGZ1bmN0aW9uIChpdGVtKSB7XHJcblxyXG4gICAgICAgIGxldCBjaGlsZHJlbiA9IFtpdGVtW3Njb3BlLmZkLmxvY2FsVmFycy5UYWJsZVByZWZpeCsnX2lkJ11dXHJcbiAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nID0gdHJ1ZSBcclxuICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURhdGFEaXJlY3RGaWx0ZXIoc2NvcGUuZmQuUmVsYXRlZCx7aWRfX2luOiBjaGlsZHJlbn0sc2NvcGUuZmQuR3JpZFN0YXRlWydjb2x1bW5zUXVlcnknXSkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEgPSBkYXRhLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5jb2x1bW5EZWZzID0gc2NvcGUuZmQuR3JpZFN0YXRlWydjb2x1bW5zRGVmJ11cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nID0gZmFsc2UgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuSW5pdGlhbExvYWQgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGluZyA9IGZhbHNlICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG5cclxuXHJcbiAgICBcclxuICAgIFxyXG4gICAgICBcclxuICAgICAgICBsZXQgcmVmcmVzaF9kYXRhPWZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBsZXQgc3RhdGUgPSBkYXRhLnN0YXRlXHJcbiAgICAgICAgICAgIGxldCBzZWFyY2hfZm9ybSA9IHNjb3BlW1wiZGF0YXNldExpc3RTZWFyY2hGb3JtXCIgKyBzY29wZS5mZC5QcmVzZW50YXRpb25JZF1cclxuICAgICAgICAgICAgLy9pZiBzZWFyY2ggZm9ybSBpcyB1bmRlZmluZWQgeW91IGNhbid0IGdldCB0aGUgZGF0YVxyXG4gICAgICAgICAgICBpZiAoc3RhdGUhPT11bmRlZmluZWQgJiYgc2VhcmNoX2Zvcm0hPXVuZGVmaW5lZClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgc2NvcGUuZmQuUGFyZW50RGF0YXNldERlZklkID0gc3RhdGUuZGF0YXNldERlZklkXHJcbiAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuUGFyZW50UmVjb3JkSWQgPSBzdGF0ZS5yZWNvcmRJZFxyXG4gICAgICAgICAgICAgICAgLy9pZiAoc2NvcGUuZmQuUGFyYW1ldGVycy5QYXJlbnRSZWxhdGlvbnNoaXBUeXBlPT0wKSBcclxuICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5HZXRSZXNvdXJjZURhdGFGb3JQYXJlbnQoKVxyXG4gICAgICAgICAgICAgICAgLy9lbHNlIHNjb3BlLmZkLmxvY2FsVmFycy5nZXREYXRhc2V0RGlyZWN0KHN0YXRlLnJlY29yZClcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICBpZiAoc2NvcGUuZmQuSGFzUGFyZW50RGF0YXNldCAmJiBzY29wZS5mZC5Qb3B1bGF0ZVBhcmVudE1ldGhvZD09J0EnKVxyXG4gICAge1xyXG4gICAgICAgIFxyXG5cclxuICAgICAgICAvL3NldHVwIGhlcmUgc3RhdGUgbWFuYWdlclxyXG4gICAgICAgIGxldCBkZXBlbmRlbnRfZmllbGQgPSB2YWx1ZVN0YXRlTmFtZVxyXG4gICAgICAgIGxldCBzdWJzY3JpYmVkU3ViamVjdCA9IHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkKyctJytzY29wZS5mZC5TcmNQYXJlbnRXaWRnZXRJZDtcclxuICAgICAgICBsZXQgc3ViamVjdCA9IHNjb3BlLmtzbS5hZGRTdWJqZWN0KHN1YnNjcmliZWRTdWJqZWN0LG51bGwpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgbGV0IG9ic2VydmVyID0gc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdCxkZXBlbmRlbnRfZmllbGQsXCJ2YWx1ZUNoYW5nZWRcIixyZWZyZXNoX2RhdGEpO1xyXG4gICAgICAgIGxldCB2YWwgPSBzY29wZS5rc20uZ2V0U3RhdGUoc3Vic2NyaWJlZFN1YmplY3QpO1xyXG4gICAgICAgIGlmICh2YWwuc3RhdGUhPT11bmRlZmluZWQgJiYgdmFsLnN0YXRlIT09bnVsbClcclxuICAgICAgICB7ICAgXHJcbiAgICAgICAgICAgIGxldCBwYXJlbnRfaXRlbSAgPSB2YWwuc3RhdGVcclxuICAgICAgICAgICAgc2NvcGUuZmQuUGFyZW50RGF0YXNldERlZklkID0gcGFyZW50X2l0ZW0uZGF0YXNldERlZklkXHJcbiAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5QYXJlbnRSZWNvcmRJZCA9IHBhcmVudF9pdGVtLnJlY29yZElkXHJcbiAgICAgICAgICAgIC8vaWYgKHNjb3BlLmZkLlBhcmFtZXRlcnMuUGFyZW50UmVsYXRpb25zaGlwVHlwZT09MCkgXHJcbiAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5HZXRSZXNvdXJjZURhdGFGb3JQYXJlbnQoKVxyXG4gICAgICAgICAgICAvL2Vsc2Ugc2NvcGUuZmQubG9jYWxWYXJzLmdldERhdGFzZXREaXJlY3QocGFyZW50X2l0ZW0ucmVjb3JkKVxyXG4gICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIHNjb3BlLmZkLmxvY2FsVmFycy5nZXRQcmV2aW91c1Rhc2tXaWRnZXQgID0gZnVuY3Rpb24obGlua1R5cGUpXHJcbiAgICB7XHJcbiAgICAgIHZhciBwVGFza0RhdGEgPSBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLmdldFByZXZUYXNrRGF0YShzY29wZS5wcmV2VGFza0V4ZUlkKTtcclxuICAgICAgICAgICAgdmFyIGRhdGFzZXRJZD0wLGRhdGFzZXRSZWNvcmRJZD0wO1xyXG4gICAgICAgICAgICBsZXQgYWN0aW9uO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBrPTA7azxwVGFza0RhdGEubGVuZ3RoO2srKylcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaWYgKHBUYXNrRGF0YVtrXS5ERUkhPXVuZGVmaW5lZCAmJiBwVGFza0RhdGFba10uREVJIT1udWxsKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8cFRhc2tEYXRhW2tdLkRFSS5sZW5ndGg7aSsrKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBpZiAocFRhc2tEYXRhW2tdLkRFSVtpXS5uYW1lPT1saW5rVHlwZSlcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwVGFza0RhdGFba10uREVJW2ldLnZhbHVlIT11bmRlZmluZWQgJiYgcFRhc2tEYXRhW2tdLkRFSVtpXS52YWx1ZSE9bnVsbClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvL3BvcHVsYXRlIHNlbGVjdGVkIGl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7ajxwVGFza0RhdGFba10uREVJW2ldLnZhbHVlLmxlbmd0aDtqKyspXHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBUYXNrRGF0YVtrXS5ERUlbaV0udmFsdWVbal0ubmFtZT09XCJyZXNvdXJjZUlkXCIgJiYgcFRhc2tEYXRhW2tdLkRFSVtpXS52YWx1ZVtqXS52YWx1ZSE9dW5kZWZpbmVkKSBkYXRhc2V0SWQ9cFRhc2tEYXRhW2tdLkRFSVtpXS52YWx1ZVtqXS52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICBpZiAocFRhc2tEYXRhW2tdLkRFSVtpXS52YWx1ZVtqXS5uYW1lPT1cInJlc291cmNlUmVjb3JkSWRcIiAmJiBwVGFza0RhdGFba10uREVJW2ldLnZhbHVlW2pdLnZhbHVlIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YXNldFJlY29yZElkPXBUYXNrRGF0YVtrXS5ERUlbaV0udmFsdWVbal0udmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlID09ICdkcm9wZG93bicgJiYgZGF0YXNldElkPT1zY29wZS5mZC5SZWxhdGVkICYmICFzY29wZS5mZC5NdWx0aWxpbmUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5pdGVtVmFsdWUudmFsID0gcFRhc2tEYXRhW2tdLkRFSVtpXS52YWx1ZVtqXS52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBzY29wZS5rc20uZXhlY3V0ZUFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcInZhbHVlQ2hhbmdlZFwiLCBzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICBpZiAocFRhc2tEYXRhW2tdLkRFSVtpXS52YWx1ZVtqXS5uYW1lPT1cInJlc291cmNlUmVjb3JkSWRzXCIgJiYgcFRhc2tEYXRhW2tdLkRFSVtpXS52YWx1ZVtqXS52YWx1ZSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzZXRSZWNvcmRJZD1wVGFza0RhdGFba10uREVJW2ldLnZhbHVlW2pdLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZSA9PSAnZHJvcGRvd24nICYmIGRhdGFzZXRJZD09c2NvcGUuZmQuUmVsYXRlZCAmJiBzY29wZS5mZC5NdWx0aWxpbmUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5pdGVtVmFsdWUudmFsID0gcFRhc2tEYXRhW2tdLkRFSVtpXS52YWx1ZVtqXS52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBzY29wZS5rc20uZXhlY3V0ZUFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcInZhbHVlQ2hhbmdlZFwiLCBzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICByZXR1cm4geydkYXRhc2V0SWQnOmRhdGFzZXRJZCwnZGF0YXNldFJlY29yZElkJzpkYXRhc2V0UmVjb3JkSWR9O1xyXG4gICAgfTtcclxuXHJcblxyXG4gIHNjb3BlLmZkLmxvY2FsVmFycy5wcmV2aW91c1Rhc2tEYXRhPXNjb3BlLmZkLmxvY2FsVmFycy5nZXRQcmV2aW91c1Rhc2tXaWRnZXQoXCJyZXNvdXJjZUxpbmtEYXRhc2V0TGlzdFwiKTtcclxuIFxyXG4gXHJcbiAgc2NvcGUuZmQubG9jYWxWYXJzLnBhdGNoRGFzaGJvYXJkID0gZnVuY3Rpb24gKG9iaiwgZGVzdElkLCBwYXRjaERhdGEpICAgICBcclxuICAgICB7IC8vIHNhbXBsZSBmdW5jdGlvbiBmb3IgcmVjdXJzaXZlbHkgcGF0Y2hpbmcgZGFzaGJvYXJkIG9iamVjdFxyXG4gICAgICAgIHZhciBvID0ge307XHJcbiAgICAgICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICggKHR5cGVvZihvYmpba2V5XSkgPT09ICdvYmplY3QnKSAmJiBvYmpba2V5XSAgIClcclxuICAgICAgICAgICAgeyAgICAgICBcclxuICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucGF0Y2hEYXNoYm9hcmQob2JqW2tleV0sIGRlc3RJZCwgcGF0Y2hEYXRhKVxyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICBlbHNlIHsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXkgPT0gJ0FuZ3VsYXJEaXJlY3RpdmVOYW1lJyB8fCBrZXkgPT0gJ0NvbnRhaW5lcklkJyB8fCBrZXkgPT0gJ0VsZW1lbnRUeXBlJyB8fCBrZXkgPT0gJ0ZpZWxkTmFtZScgfHwga2V5ID09ICdOYW1lJyAgfHwga2V5ID09ICdPcmlnaW5hbFByZXNlbnRhdGlvbkVsZW1lbnRJZCcpIHsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvW2tleV09IG9ialtrZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBrZXkgPT0gJ05hbWVGaWVsZCcgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmpba2V5XSkgKSBvW2tleV09IG9ialtrZXldWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIG9ba2V5XT0gb2JqW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXkgPT0gJ1ByZXNlbnRhdGlvbklkJyApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb1snaWQnXT0gb2JqW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgfSAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSkgOyBcclxuICAgICAgICBcclxuICAgICAgICAvL2lmIChPYmplY3Qua2V5cyhvKS5sZW5ndGggPiAwKSAuLmRvIHNvbW9ldGhpbmcgd2l0aCBvICAgXHJcbiAgICB9OyBcclxuXHJcblxyXG4gIHNjb3BlLmZkLmxvY2FsVmFycy5zYXZlR3JpZFN0YXRlPSBmdW5jdGlvbihzaG93X21lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgLy9kZWJ1Z2dlciAvL2t0VGFza0RhdGFzZXRMaXN0IHNtYXJ0dGFibGVcclxuICAgICAgICAgICAgICAgbGV0IGNvbHVtbnNEZWYgPSBzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuY29sdW1uRGVmc1xyXG5cclxuICAgICAgICAgICAgICAgbGV0IGNvbHVtbnNRdWVyeSA9IHNjb3BlLmZkLmxvY2FsVmFycy5jb2x1bW5zRm9yUXVlcnlcclxuICAgICAgICAgICAgICAgbGV0IHJlbGF0ZWRSZXNvdXJjZXMgPSBzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEucmVsYXRlZFJlc291cmNlc1xyXG4gICAgICAgICAgICAgICBzY29wZS5mZFsnR3JpZFN0YXRlJ109eydjb2x1bW5zRGVmJzpjb2x1bW5zRGVmLCdjb2x1bW5zUXVlcnknOiBjb2x1bW5zUXVlcnksJ3JlbGF0ZWRSZXNvdXJjZXMnOnJlbGF0ZWRSZXNvdXJjZXN9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIC8vdmFyIGRlc3RJZD1zY29wZS5mZC5Mb2NhbElkXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vZmluZCBjb3JyZXNwb25kaW5nIGNvbHVtbnMgaW4gUHJlc2VudGF0aW9uIGVsZW1lbnRzXHJcbiAgICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpIDwgc2NvcGUuZmQuZkl0ZW1WYWx1ZVswXS5sYXlvdXRbMF0ubGF5b3V0Lmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8IHN0YXRlLmxlbmd0aDtqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlW2pdWydpZCddID09IHNjb3BlLmZkLmZJdGVtVmFsdWVbMF0ubGF5b3V0WzBdLmxheW91dFtpXVsnaWQnXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmZJdGVtVmFsdWVbMF0ubGF5b3V0WzBdLmxheW91dFtpXVsnUGFyYW1ldGVycyddWydHcmlkU3RhdGUnXSA9IHN0YXRlW2pdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAvL3ZhciByZXMgPSBzY29wZS5mZC5sb2NhbFZhcnMucGF0Y2hEYXNoYm9hcmQgKHMsIHNjb3BlLmZkLkxvY2FsSWQsIHN0YXRlKVxyXG4gICAgICAgICAgICAgIGlmIChzaG93X21lc3NhZ2UpXHJcbiAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShcIlRvIG1ha2UgY2hhbmdlcyBzdGljayBwbGVhc2Ugc2F2ZSBmb3JtXCIsJ2luZm8nKTsgICAgICAgICAgICBcclxuICAgIH07XHJcbiAgICBcclxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBwcmV2aWV3IGFuZCBkb3dsbG9hZCBmaWxlcyBmdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBwcmV2aWV3IGFuZCBkb3dsbG9hZCBmaWxlcyBmdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBwcmV2aWV3IGFuZCBkb3dsbG9hZCBmaWxlcyBmdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuICAgICBzY29wZS5mZC5sb2NhbFZhcnMuZG93bmxvYWRGaWxlID0gZnVuY3Rpb24oZmlsZUlkLGZpbGVOYW1lKXtcclxuICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmRvd25sb2FkRmlsZShzY29wZS5mZC5SZWxhdGVkLGZpbGVJZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdGaWxlICcrZmlsZU5hbWUrJyBkb3dubG9hZGVkJywnaW5mbycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbZGF0YS5kYXRhXSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5ocmVmID0gdXJsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmRvd25sb2FkID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEudGFyZ2V0ID0gJ19ibGFuayc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuY2xpY2soKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgIH07Ly8gZG93bG9hZCBmaWxlIEVORFxyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucHJldmlld0ZpbGUgPSBmdW5jdGlvbihmaWxlSWQsZmlsZU5hbWUsZmlsZVR5cGUpe1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5kb3dubG9hZEZpbGUoc2NvcGUuZmQuUmVsYXRlZCxmaWxlSWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtkYXRhLmRhdGFdLHt0eXBlOmZpbGVUeXBlfSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3X2RvYyA9IHdpbmRvdy5vcGVuKHVybCxcIl9ibGFua1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgfTsvLyBwcmV2aWV3IGZpbGUgRU5EXHJcbiAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIHByZXZpZXcgYW5kIGRvd2xsb2FkIGZpbGVzIGZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogcHJldmlldyBhbmQgZG93bGxvYWQgZmlsZXMgZnVuY3Rpb25zICoqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbiAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogcHJldmlldyBhbmQgZG93bGxvYWQgZmlsZXMgZnVuY3Rpb25zICoqKioqKioqKioqKioqKioqKioqKioqKiovXHJcblxyXG5cclxuICAgICBpZiAoc2NvcGUuZmQubG9jYWxWYXJzLnB1Ymxpc2hlZFJlc291cmNlTGlzdD09dW5kZWZpbmVkKSBzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0PVtdO1xyXG4gICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcblxyXG4gICAgICAvKiAgICAgICAgXHJcbiAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLkdldFB1Ymxpc2hlZFJlc291cmNlc0J5VHlwZShzY29wZS5mZC5QYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlLCdmb3JtJykudGhlbihcclxuICAgICAgICBmdW5jdGlvbiAoZGF0YSkgeyAgXHJcbiAgICAgICAgICAgIGlmIChzY29wZS5mZC5sb2NhbFZhcnM9PT11bmRlZmluZWQpIHNjb3BlLmZkLmxvY2FsVmFycz17fSAgICAgXHJcbiAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnB1Ymxpc2hlZFJlc291cmNlTGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAvL2RlYnVnZ2VyICAvL0dldFB1Ymxpc2hlZFJlc291cmNlc0J5VHlwZSAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICBpZiAoc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZUlkIT1udWxsKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5zZXRTZWxlY3RlZFJlc291cmNlKHNjb3BlLmZkLlBhcmFtZXRlcnMuUHVibGlzaGVkUmVzb3VyY2VJZCx0cnVlKTsgICBcclxuICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICAqL1xyXG4gICAgc2NvcGUuZmQubG9jYWxWYXJzLmdldEZpbGVUeXBlcyA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUoJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmcsJ2ZpbGUnKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihkYXRhKSB7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMubGlzdE9mRmlsZVR5cGVzID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAsZnVuY3Rpb24oZXJyb3IpeyAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJykgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgIFxyXG4gICAgfVxyXG5cclxuICAgIC8vY2hlY2sgdGhlIHB1cnBvc2Ugb2YgdGhpcyBmdW5jdGlvblxyXG4gICAgaWYgKHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtRGVmaW5pdGlvbikgc2NvcGUuZmQubG9jYWxWYXJzLmdldEZpbGVUeXBlcygpXHJcbiAgICAgICAgXHJcbiAgICAgIFxyXG5cclxuICAgICAgICAvLyYmICFzY29wZS5mZC5QYXJhbWV0ZXJzLkRvd25sb2FkQWxsUmVjb3JkXHJcbiAgICAgICAgaWYgKHNjb3BlLmZkLlJlbGF0ZWQhPW51bGwgJiYgICFzY29wZS5mZC5sb2NhbFZhcnMuZm9ybURlZmluaXRpb24gJiYgIXNjb3BlLmZkLkhhc1BhcmVudERhdGFzZXQpIHtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIGlmICghc2NvcGUuZmQubG9jYWxWYXJzLmxvYWRGcm9tU3RhdGUgJiYgIXNjb3BlLmZkLlBhcmFtZXRlcnMuQXV0b1NlYXJjaENsaWVudCAmJiBzY29wZS5mZC5BdXRvU2VhcmNoKSBzY29wZS5mZC5sb2NhbFZhcnMuZXhlY3V0ZURhdGFzZXRMaXN0KCk7XHJcbiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgIChzY29wZS5mZC5sb2NhbFZhcnMubG9hZEZyb21TdGF0ZSB8fCAoc2NvcGUuZmQubG9jYWxWYXJzLnNlYXJjaEZvcm1Eb3dubG9hZGVkICYmIHNjb3BlLmZkLlBhcmFtZXRlcnMuQXV0b1NlYXJjaENsaWVudCkpXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VEYXRhUGFnaW5hdGVkKHNjb3BlLmZkLmxvY2FsVmFycy5uZXh0UGFnZSxzY29wZS5mZC5sb2NhbFZhcnMucHJldmlvdXNQYWdlLHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5jdXJyZW50UGFnZSxzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUucGFnZVNpemUpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgICghc2NvcGUuZmQubG9jYWxWYXJzLnNlYXJjaEZvcm1Eb3dubG9hZGVkICYmIHNjb3BlLmZkLlBhcmFtZXRlcnMuQXV0b1NlYXJjaENsaWVudClcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5zaG93SGlkZVNlYXJjaEZvcm0oKTtcclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICB9ZWxzZSBpZiAoc2NvcGUuZmQuUmVsYXRlZCE9bnVsbCAgJiYgICFzY29wZS5mZC5sb2NhbFZhcnMuZm9ybURlZmluaXRpb24gJiYgIXNjb3BlLmZkLmxvY2FsVmFycy5zZWFyY2hGb3JtRG93bmxvYWRlZCAmJiBzY29wZS5mZC5QYXJhbWV0ZXJzLkRvd25sb2FkQWxsUmVjb3JkcyAgJiYgIXNjb3BlLmZkLlBhcmFtZXRlcnMuQXV0b1NlYXJjaENsaWVudClcclxuICAgICAgICBcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5nZXRSZXNvdXJjZURhdGFQYWdpbmF0ZWQoc2NvcGUuZmQubG9jYWxWYXJzLm5leHRQYWdlLHNjb3BlLmZkLmxvY2FsVmFycy5wcmV2aW91c1BhZ2Usc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLmN1cnJlbnRQYWdlLHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5wYWdlU2l6ZSk7ICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHNjb3BlLmZkLlJlbGF0ZWQhPW51bGwgICYmIChzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGUhPTUgfHwgc2NvcGUuZmQuUGFyYW1ldGVycy5BdXRvU2VhcmNoQ2xpZW50KSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgLy9pZiAoc2NvcGUuZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlPT0nY2FyZCcpIHNjb3BlLmZkLmxvY2FsVmFycy5nZXRDYXJkTGF5b3V0KCk7XHJcbiAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnJlc3RvcmVHcmlkU3RhdGUoKTtcclxuICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuc2hvd0hpZGVTZWFyY2hGb3JtKCk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIGlmIChzY29wZS5mZC5sb2NhbFZhcnMuZm9ybURlZmluaXRpb24gJiYgc2NvcGUuZmQuUmVsYXRlZCE9XCJcIiAmJiBzY29wZS5mZC5SZWxhdGVkIT11bmRlZmluZWQgJiYgc2NvcGUuZmQuUmVsYXRlZCE9bnVsbCkgXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmdldFJlc291cmNlcygpXHJcbiAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlPT0nZHJvcGRvd24nKSBzY29wZS5mZC5sb2NhbFZhcnMuZ2V0Rm9ybUZpZWxkcygpXHJcbiAgICAgICAgICAgICAgICAvL3NldHVwIHJlbGF0ZWQgcmVzb3VyY2VzIGFuZCBjb2x1bW5zXHJcbiAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuR3JpZFN0YXRlPy5yZWxhdGVkUmVzb3VyY2VzIT09dW5kZWZpbmVkKXtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGk9MDtpPHNjb3BlLmZkLkdyaWRTdGF0ZT8ucmVsYXRlZFJlc291cmNlcy5sZW5ndGg7aSsrKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5HcmlkU3RhdGU/LnJlbGF0ZWRSZXNvdXJjZXNbaV0uU2VsZWN0ZWQpIHNjb3BlLmZkLmxvY2FsVmFycy5SZWxhdGVkUmVzb3VyY2VDb2x1bW5zKGksdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHNjb3BlLmZkLlJlbGF0ZWQhPVwiXCIgJiYgc2NvcGUuZmQuUmVsYXRlZCE9dW5kZWZpbmVkICYmIHNjb3BlLmZkLlJlbGF0ZWQhPW51bGwpIHNjb3BlLmZkLmxvY2FsVmFycy5sb2FkaW5nUGFyYW1zID0gZmFsc2VcclxuICAgICAgICBcclxuICAgJHJvb3RTY29wZS4kYnJvYWRjYXN0KFwiV2lkZ2V0XCIrc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQrXCJSZWFkeVwiLG51bGwpO1xyXG4gICBcclxuICAgXHJcbiAgIHNjb3BlLmZkLmxvY2FsVmFycy5hZGRBbmFseXRpY3MgPSBmdW5jdGlvbigpXHJcbiAgIHtcclxuICAgICAgICBpZiAoIHNjb3BlLmZkLlBhcmFtZXRlcnMuQW5hbHl0aWNzID09IHVuZGVmaW5lZCkgICB7XHJcbiAgICAgICAgICAgICAgICBzY29wZS5mZC5QYXJhbWV0ZXJzLkFuYWx5dGljcyA9ICAgW11cclxuICAgICAgICB9XHJcbiAgICAgICAgc2NvcGUuZmQuUGFyYW1ldGVycy5BbmFseXRpY3MucHVzaCggeyBDYWxjdWxhdGVGdW5jdGlvbjonJywgQWdncmVnYXRlRmllbGQ6JycsIENhbGN1bGF0ZUZpZWxkOicnLCBTaG93OnRydWUgfSlcclxuICAgICAgIFxyXG4gICB9XHJcbiAgIHNjb3BlLnByb2Nlc3NFdmVudHM9ZnVuY3Rpb24oZGF0YSxuZXdSb3VuZCl7XHJcblxyXG4gICAgVXRpbGl0eVNlcnZpY2UucHJvY2Vzc19ldmVudHMoc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQsdmFsdWVTdGF0ZSxkYXRhLHNjb3BlLmZkLlBhcmFtZXRlcnMuZXZlbnRzLHNjb3BlLmtzbSxuZXdSb3VuZClcclxuICAgfVxyXG5cclxuICAgIC8vcHJvY2VzcyBldmVudHMgYW5kIGV4ZWN1dGUgYWN0aW9uc1xyXG4gICAgaWYgKCFzY29wZS5mZC5sb2NhbFZhcnMuZm9ybURlZmluaXRpb24gJiYgc2NvcGUuZmQuUGFyYW1ldGVycz8uZXZlbnRzPy5sZW5ndGg+MCkgVXRpbGl0eVNlcnZpY2Uuc3Vic2NyaWJlXzJfZXZlbnRzKHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkLHNjb3BlLmZkLlV1aWRSZWYsc2NvcGUuZmQuUGFyYW1ldGVycy5ldmVudHMsc2NvcGUsc2NvcGUua3NtKVxyXG5cclxuICAgICAgICAgICAgXHJcbiAgICB9XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgIFxyXG4gIH0gXHJcbiAgICAgICAgXHJcbn07XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24ga3RUYXNrRGVmRGV0YWlscyAoKSB7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXG4gICAgICAgICAgICBzY29wZTp7XG4gICAgICAgICAgICAgIHRhc2tEZWZpbml0aW9uOic9JyxcbiAgICAgICAgICAgICAgaXNDb2xsYXBzZWQ6Jz0nXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tEZWZEZXRhaWxzLmh0bWwnLFxuICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcblxuICAgICAgICAgXG4gICAgICAgXG4gICAgICAgICAgICB9XG5cbiAgICB9XG59O1xuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24ga3RUYXNrRGV0YWlscyAoKSB7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXG4gICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tEZXRhaWxzLmh0bWwnLFxuICAgICAgICAgICAgICAgc2NvcGU6e1xuICAgICAgICAgICAgICB0TmFtZTogXCI9XCIsXG4gICAgICAgICAgICAgIHRJbml0Oic9JyxcbiAgICAgICAgICAgICAgdEV4ZTonPScsXG4gICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICBjb250cm9sbGVyOiBmdW5jdGlvbihDb2Rlc1NlcnZpY2UsJHJvb3RTY29wZSl7fSxcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XG5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgXG4gICAgICAgICAgICBzY29wZS50aSA9IHNjb3BlLnRJbml0O1xuICAgICAgICAgICAgLypcbiAgICAgICAgICAgIHNjb3BlLmdldEluaXRpYXRlSWQgPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgaWYgKHNjb3BlLnRhc2tJbml0aWF0ZUluc3RhbmNlICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJldHVybiBzY29wZS50YXNrSW5pdGlhdGVJbnN0YW5jZS5pZDtcbiAgICAgICAgICAgICAgfWVsc2VcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2NvcGUudGFza0V4ZWN1dGVJbnN0YW5jZS5pZDtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgc2NvcGUuZ2V0U3RhdHVzID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgaWYgKHNjb3BlLnRhc2tJbml0aWF0ZUluc3RhbmNlICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJldHVybiBzY29wZS50YXNrSW5pdGlhdGVJbnN0YW5jZS5TdGF0dXMuTmFtZTtcbiAgICAgICAgICAgICAgfWVsc2VcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2NvcGUudGFza0V4ZWN1dGVJbnN0YW5jZS5TdGF0dXMuTmFtZTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgfSBcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAqL1xuICAgICAgIFxuICAgICAgICAgICAgfVxuXG4gICAgfVxufTtcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGt0VGFza0Ryb3Bkb3duICgpIHtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcbiAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza0Ryb3Bkb3duLmh0bWwnLFxuICAgICAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uKCRzY29wZSxDb2Rlc1NlcnZpY2UsUmVzb3VyY2VzRGF0YVNlcnZpY2UsJHJvb3RTY29wZSxQcm9jZXNzaW5nU2VydmljZSl7ICAgIFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgfVxuICAgICAgICB9XG4gIFxufTtcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGt0VGFza0Ryb3Bkb3duMiAoKSB7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXG4gICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tEcm9wZG93bjIuaHRtbCcsXG4gICAgICAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24oJHNjb3BlLENvZGVzU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSwkcm9vdFNjb3BlLFByb2Nlc3NpbmdTZXJ2aWNlKXsgICAgXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgXG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0VGFza0V4ZWN1dGVPdXRjb21lcyAoKSB7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXHJcbiAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza0V4ZWN1dGVPdXRjb21lcy5odG1sJyxcclxuICAgICAgICAgICAgICBzY29wZTp7XHJcbiAgICAgICAgICAgICAgICBvdXRjb21lczogJz0nLFxyXG4gICAgICAgICAgICAgICAgdGFza0RlZmluaXRpb246ICc9JyxcclxuICAgICAgICAgICAgICAgIHRhc2tFeGU6ICc9JyxcclxuICAgICAgICAgICAgICAgIGV4ZUZvcm06ICc9JyxcclxuICAgICAgICAgICAgICAgIGZvcm06ICc9JyxcclxuICAgICAgICAgICAgICAgIGZvcm1QYXJhbXM6ICc9JyxcclxuICAgICAgICAgICAgICAgIHRhc2tJbml0aWF0ZUluc3RhbmNlOiAnPScsXHJcbiAgICAgICAgICAgICAgICBsb2NhbFZhcnM6Jz0nLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uKCRzY29wZSxDb2Rlc1NlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxUYXNrRGF0YVNlcnZpY2UsJHJvb3RTY29wZSwkc3RhdGUpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgaWYgKHNjb3BlLmxvY2FsVmFycz09dW5kZWZpbmVkKSBzY29wZS5sb2NhbFZhcnM9e307XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgc2NvcGUubG9jYWxWYXJzLnNob3dJbmxpbmVUYXNrPWZhbHNlO1xyXG4gICAgICAgICAgICAgIHNjb3BlLmxvY2FsVmFycy5pc0lubGluZVRhc2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgIGlmIChzY29wZS50YXNrRXhlIT11bmRlZmluZWQpIHNjb3BlLnRhc2tFeGUuc2hvd0lubGluZVRhc2s9ZmFsc2U7XHJcbiAgICAgICAgICAgICBlbHNlIHNjb3BlLnRhc2tFeGUgPSB7c2hvd0lubGluZVRhc2s6ZmFsc2V9OyAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIHNjb3BlLmxvY2FsVmFycy5Qcm9jZXNzT3V0Y29tZSA9IGZ1bmN0aW9uIChvdXRjb21lKXtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8b3V0Y29tZS5hY3Rpb25zLmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKG91dGNvbWUuYWN0aW9uc1tpXS50eXBlPT0xIHx8IG91dGNvbWUuYWN0aW9uc1tpXS50eXBlPT0yKVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmxvY2FsVmFycy5Jbml0aWF0ZVRhc2tGcm9tT3V0Y29tZShvdXRjb21lLmFjdGlvbnNbaV0udGFza0lkLG91dGNvbWUuaWQxLG91dGNvbWUuYWN0aW9uc1tpXS50eXBlLG91dGNvbWUuYWN0aW9uc1tpXS5hY3Rpb25QYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChvdXRjb21lLmFjdGlvbnMubGVuZ3RoPT0wKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICRyb290U2NvcGUuJGJyb2FkY2FzdCgnRXhlY3V0ZVRhc2snK3Njb3BlLnRhc2tFeGUuaWQse2Zvcm06c2NvcGUuZm9ybSxvdXRjb21lSWQ6b3V0Y29tZS5pZDF9KTtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgc2NvcGUubG9jYWxWYXJzLkluaXRpYXRlVGFza0Zyb21PdXRjb21lID0gZnVuY3Rpb24gKHRhc2tEZWZJZCxvdXRjb21lSWQsdHlwZSxhY3Rpb25QYXJhbXMpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy9zYXZlIHRhc2sgaW5zdGFuY2UgZm9ybSBmb3IgbGF0ZXIgcHJvY2Vzc2luZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLnRhc2tFeGUhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS50YXNrRXhlLmlkIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBUYXNrRGF0YVNlcnZpY2Uuc2F2ZVRhc2tGb3JtRGF0YShzY29wZS50YXNrRXhlLmlkLHNjb3BlLmV4ZUZvcm0pLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGU9PTEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmxvY2FsVmFycy5zaG93SW5saW5lVGFzaz10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUudGFza0V4ZS5zaG93SW5saW5lVGFzaz10cnVlO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5sb2NhbFZhcnMuaXNJbmxpbmVUYXNrPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5sb2NhbFZhcnMuZnJvbU91dGNvbWU9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2NvcGUubG9jYWxWYXJzLnRhc2tEZWZJZD10YXNrRGVmSWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3Njb3BlLmxvY2FsVmFycy5vdXRjb21lSWQ9b3V0Y29tZUlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9zY29wZS5sb2NhbFZhcnMucHJldlRhc2tJZD1zY29wZS50YXNrRXhlLmlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhc2tEZWZJZCE9dW5kZWZpbmVkICYmICB0YXNrRGVmSWQ+MCkgc2NvcGUubG9jYWxWYXJzLlN0YXJ0VGFzayh0YXNrRGVmSWQsb3V0Y29tZUlkLHNjb3BlLnRhc2tFeGUuaWQpOyAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZT09MilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXRlLmdvKCdhcHAubmF2YmFyLnRhc2tzLnByb2MnLHtpZDogdGFza0RlZklkLGZyb21TdGF0ZU5hbWU6JHN0YXRlLmN1cnJlbnQubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tU3RhdGVQYXJhbXM6JHN0YXRlLnBhcmFtcyxwcmV2X3Rhc2tfZXhlY3V0ZV9pZDpzY29wZS50YXNrRXhlLmlkLG91dGNvbWVfaWQ6b3V0Y29tZUlkLHByZXNlbnRhdGlvbl9pZDowfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiSW52YWxpZCB0YXNrIGRhdGEgLS0+IFRhc2sgZXhlY3V0aW9uIGlkIGlzIHVuZGVmaW5lZFwiLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiSW52YWxpZCB0YXNrIGRhdGEgLS0+IFRhc2sgZXhlY3V0aW9uIG9iamVjdCBpcyB1bmRlZmluZWRcIiwnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcbid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdFRhc2tGaWxlcyAoKSB7XHJcbiAgICAgICBcclxuICAgICByZXR1cm4ge1xyXG4gICAgICAgIHJlc3RyaWN0OiAnQScsIFxyXG4gICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrRmlsZXMuaHRtbCcsXHJcbiAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uICgkc2NvcGUsICRyb290U2NvcGUsJHVpYk1vZGFsLEthdGFseW9TdGF0ZU1hbmFnZXIsUmVzb3VyY2VzRGF0YVNlcnZpY2UsUHJvY2Vzc2luZ1NlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxDT0RFU19DT05TVCxXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSxUYXNrRGF0YVNlcnZpY2UsJHRpbWVvdXQsJHEpIHtcclxuXHRcdFx0XHQgXHJcbiAgICAgICAgICAgICAgJHNjb3BlLmZkLlJlYWRPbmx5PWZhbHNlO1xyXG4gICAgICAgICAgICAgICRzY29wZS5hbmltYXRpb25zRW5hYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlO1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzPT11bmRlZmluZWQpICAkc2NvcGUuZmQubG9jYWxWYXJzID0ge2RhdGFzZXRNYXBwZXJUeXBlOjB9O1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQgPSB7d2lkZ2V0czpbXX1cclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2hvd01lbnUgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZT17fVxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkc3RlclR5cGUgPSAnZmlsZSdcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXggPSAncmVzb3VyY2UnKyRzY29wZS5mZC5SZWxhdGVkKydfJyskcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIub3JnYW5pc2F0aW9uLmlkXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dTZWFyY2hGaWx0ZXJzID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtUGFyYW1zPXtmb3JtVmlld1R5cGU6MSxzaG93R3JpZE5hdmlnYXRpb246dHJ1ZX07XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnRhc2tJZD0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlJlc291cmNlRGVmSWQ7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLkluaXRpYWxMb2FkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uICYmICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEpICRzY29wZS5mZC5QYXJhbWV0ZXJzLkJ1aWxkTW9kZSA9IHRydWVcclxuICAgICAgICAgICAgICAgIGVsc2UgJHNjb3BlLmZkLlBhcmFtZXRlcnMuQnVpbGRNb2RlID0gZmFsc2VcclxuXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnRvZ2dsZURyb3Bkb3duID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93TWVudSA9ICAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dNZW51ID8gZmFsc2U6IHRydWUgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzID09IG51bGwgfHwgICRzY29wZS5mZC5QYXJhbWV0ZXJzPT11bmRlZmluZWQpICAkc2NvcGUuZmQuUGFyYW1ldGVycyA9IHt9O1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucGFnaW5hdGlvbk9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZU51bWJlcjogMSxcclxuICAgICAgICAgICAgICAgICAgICBwYWdlU2l6ZTogMTAsXHJcbiAgICAgICAgICAgICAgICAgICAgc29ydDogbnVsbFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAkc2NvcGUuc2hvd01ldGFkYXRhID0gZnVuY3Rpb24gKGZpbGVJZCkge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgdmFyIG1vZGFsSW5zdGFuY2UgPSAkdWliTW9kYWwub3Blbih7XHJcbiAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogJHNjb3BlLmFuaW1hdGlvbnNFbmFibGVkLFxyXG4gICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ21ldGFkYXRhX21vZGFsLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnRmlsZU1ldGFkYXRhTW9kYWxJbnN0YW5jZUN0cmwnLFxyXG4gICAgICAgICAgICAgICAgICBzaXplOiAnbGcnLFxyXG4gICAgICAgICAgICAgICAgICByZXNvbHZlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0VmFsdWU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7ZmlsZV9pZDpmaWxlSWR9O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBtb2RhbEluc3RhbmNlLnJlc3VsdC50aGVuKGZ1bmN0aW9uIChyZXRWYWx1ZSx3aW5kZXgsaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgIFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBcclxuXHJcblxyXG4gICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2hvd1Byb3BlcnRpZXM9ZnVuY3Rpb24oZGF0YXNldE1hcHBlclR5cGUpXHJcbiAgICAgICAgICAge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlID0gZGF0YXNldE1hcHBlclR5cGU7XHJcbiAgICAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSE9ZGF0YXNldE1hcHBlclR5cGUpICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGUgPSBkYXRhc2V0TWFwcGVyVHlwZTtcclxuICAgICAgICAgICAgICAgICAgZWxzZSAkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPTA7XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IHZhbHVlU3RhdGU9ICRzY29wZS5rc20uYWRkU3ViamVjdCgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQrXCItXCIrJHNjb3BlLmZkLkVsZW1lbnRUeXBlK1wiVmFsdWVTdGF0ZU5hbWUtXCIrJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLCRzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUpO1xyXG4gICAgICAgIGxldCB2YWx1ZVN0YXRlTmFtZSA9IHZhbHVlU3RhdGUuc3ViamVjdC5uYW1lO1xyXG4gICAgICAgIFxyXG5cclxuICAgICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqIGdldCBzdGF0ZSBpZiBleGlzdHMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICAgaWYgKHZhbHVlU3RhdGUuc3ViamVjdC5jdXJyZW50U3RhdGVJbmRleD49MCAmJiAhJHNjb3BlLmZkLkF1dG9TZWFyY2gpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmxvYWRGcm9tU3RhdGU9dHJ1ZTtcclxuICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZSA9IHZhbHVlU3RhdGUuc3ViamVjdC5nZXRTdGF0ZTtcclxuICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQ9JHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS53aWRnZXRzO1xyXG4gICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlYXJjaEZvcm1Eb3dubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtTG9hZGVkPXRydWU7XHJcbiAgICAgICAgfWVsc2VcclxuICAgICAgICBcclxuICAgICAgICB7XHJcbiAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLmZvcm1EYXRhPVt7fV07ICBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMub2tGaWxlQ29ubmVjdG9yID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQudEl0ZW1WYWx1ZT0kc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9ycztcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2hvd1Byb3BlcnRpZXMoMCk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuY2FuY2VsRmlsZUNvbm5lY3RvciA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgLy9DYW4ndCBjb3B5ISBNYWtpbmcgY29waWVzIG9mIFdpbmRvdyBvciBTY29wZSBpbnN0YW5jZXMgaXMgbm90IHN1cHBvcnRlZFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnM9YW5ndWxhci5jb3B5KCRzY29wZS5mZC50SXRlbVZhbHVlKTtcclxuICAgICAgICAgICAgICAgIC8vJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnM9JHNjb3BlLmZkLnRJdGVtVmFsdWU7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dQcm9wZXJ0aWVzKDApO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgKi9cclxuICAgICAgICAgIC8vICAga3QgdGFza2ZpbGVzIC0gRklMRUNPTk5FQ1RPUiAgLSAgaXN0YSBmdW5rY2lqYSBrYW8gaSB6YSB1cGxvYWRlciFcclxuICAgICAgICAgIC8qXHJcblx0XHQgICRzY29wZS5mZC5sb2NhbFZhcnMub3BlbkZpbGVDb25uZWN0b3IgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93UHJvcGVydGllcygxKTtcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTEpIHtcclxuXHRcdFx0XHQvL1BPUFVOSSBMSVNUVSBEQVRBU0VUT1ZBIFxyXG4gICAgICAgICAgICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nOyAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmTGlzdEJ5VHlwZShsYW5nLCdkYXRhc2V0JykudGhlbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5kYXRhc2V0TGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZG9kYWogaW1lIGRhdGFzZXRhIHUga29uZWt0b3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnMhPXVuZGVmaW5lZCkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPCAkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9ycy5sZW5ndGg7aSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwID0gJHNjb3BlLmZkLmRhdGFzZXRMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKCRzY29wZS5mZC5saXN0T2ZDb25uZWN0b3JzW2ldLnBhcmVudERhdGFzZXREZWZJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwPj0wKSAkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9yc1tpXS5wYXJlbnREYXRhc2V0TmFtZSA9ICRzY29wZS5mZC5kYXRhc2V0TGlzdFtwXS5uYW1lOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLnRJdGVtVmFsdWU9PXVuZGVmaW5lZCB8fCAkc2NvcGUuZmQudEl0ZW1WYWx1ZVswXT09bnVsbCkgJHNjb3BlLmZkLnRJdGVtVmFsdWUgPSBbXTsgIFxyXG5cdFx0XHRcdFx0XHQgXHJcbiAgICAgICAgICAgICAgICAgIC8vb3ZvIGplIGt0LXRhc2tGaWxlc1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9ycz0gV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5nZXRSZWdpc3RlcmVkV2lkZ2V0cygpOy8vTUlHT1IgIC0gdXptaSBzdmUgcmVnaXN0cmlyYW5lIHdpZGdldGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vQnJpc2kgc3ZlIGtvamkgc2UgdmVjIG5hbGF6ZSB1IHRJdGVtVmFsdWVcclxuXHRcdFx0XHRcdFx0aWYgKCRzY29wZS5mZC5saXN0T2ZDb25uZWN0b3JzIT11bmRlZmluZWQpIFxyXG5cdFx0XHRcdFx0XHRcdFx0ICBmb3IgKHZhciBpPTA7aTwgJHNjb3BlLmZkLnRJdGVtVmFsdWUubGVuZ3RoIDtpKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgZm9yICh2YXIgaj0wO2o8ICRzY29wZS5mZC5saXN0T2ZDb25uZWN0b3JzLmxlbmd0aDtqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQudEl0ZW1WYWx1ZVtpXSE9bnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5saXN0T2ZDb25uZWN0b3JzW2pdLndpZGdldElkPT0kc2NvcGUuZmQudEl0ZW1WYWx1ZVtpXS53aWRnZXRJZCkgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9ycy5zcGxpY2UoaiwxKTsvL2JyaXNpIGxva2FsbmlcdFx0XHRcdCAgIFx0XHRcdFx0XHQgICAgXHRcdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0XHQgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZG9kYWogc2Egc2VydmVyYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPCAkc2NvcGUuZmQudEl0ZW1WYWx1ZS5sZW5ndGggO2krKykgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLnRJdGVtVmFsdWVbaV0hPW51bGwpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5saXN0T2ZDb25uZWN0b3JzLnB1c2goJHNjb3BlLmZkLnRJdGVtVmFsdWVbaV0pO1x0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblx0XHRcdFx0XHRcdFx0ICBcclxuXHRcdFx0XHRcdFx0XHQgIC8vT3N0YXZpIHUgbGlzdGkga29uZWt0b3JhIHNhbW8gV0lER0VURSBrb2ppIGltYWp1IFwiUmVzb3VyY2VJRFwiIGplciBzdSB0byBkYXRhIHdpZGdldGlcclxuXHRcdFx0XHRcdFx0XHQgIHZhciBuZXdsaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdCAgIFxyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCRzY29wZS5mZC5saXN0T2ZDb25uZWN0b3JzIT11bmRlZmluZWQpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpPTA7aTwgJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnMubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9yc1tpXS5ERUkhPXVuZGVmaW5lZCkgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7ajwgJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnNbaV0uREVJLmxlbmd0aDtqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9yc1tpXS5ERUlbal0ubmFtZT09J3Jlc291cmNlTGluaycgfHwgJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnNbaV0uREVJW2pdLm5hbWU9PSdyZXNvdXJjZUxpbmtEYXRhc2V0TGlzdCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2FrbyBERUkgbmlqZSB0cnVlL2ZhbHNlIC0gcmVzZXRpcmFqIG5hIGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAoJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnNbaV0uREVJW2pdLnZhbHVlIT1mYWxzZSkgJiYgKCRzY29wZS5mZC5saXN0T2ZDb25uZWN0b3JzW2ldLkRFSVtqXS52YWx1ZSE9dHJ1ZSkgKSAkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9yc1tpXS5ERUlbal0udmFsdWU9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kb2RhaiBrb25la3RvciB1IG5vdnUgbGlzdHUgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3bGlzdC5wdXNoKCRzY29wZS5mZC5saXN0T2ZDb25uZWN0b3JzW2ldKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHRcdFx0XHRcdFx0IFx0XHRcdFx0XHRcdCAgXHRcdFx0XHRcdFx0ICAgXHRcdFx0XHRcdCAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0fS8vaWZcclxuXHRcdFx0XHRcdFx0XHQgICRzY29wZS5mZC5saXN0T2ZDb25uZWN0b3JzPW5ld2xpc3Q7IC8va29uYWNuYSBsaXN0YSBOT1ZJSCBkYXRhc2V0IGtvbmVrdG9yYSAoTkUgdWtsanVjdWplIG9uZSB1IHRJdGVtVmFsdWUga29qYSBzZSBzYWxqZSBwb3NlYm5vKVxyXG4gXHJcblx0XHRcdFx0XHRcdFxyXG4gICAgICAgICAgICAgfS8vaWZcclxuXHRcdFx0fTsgLy8gb3BlbiBGSWxlQ29ubmVjdG9yIC0ga3RUYXNrRmlsZXMgXHJcbiAgICAgICAgKi9cclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUuZmQuZmlsZUxpc3REb3dubG9hZGVkID0gZmFsc2U7XHJcbiAgICAgICAgJHNjb3BlLmZkLmlzQ29sbGFwc2VkRmlsZXNMaXN0ID0gdHJ1ZTtcclxuICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuaGlkZVBvcHVsYXRlTWV0aG9kPXRydWU7XHJcblxyXG4gICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVR5cGU9XCJmaWxlXCI7XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLnRhc2tJZD0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlJlc291cmNlRGVmSWQ7XHJcblxyXG4gICAgICAgICBpZiAoJHNjb3BlLnRhc2tJZD09dW5kZWZpbmVkKSAgJHNjb3BlLnRhc2tJZD0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlJlc291cmNlRGVmSWRfaWQ7XHJcbiAgICAgICAgIGlmICgkc2NvcGUudGFza0lkPT11bmRlZmluZWQpICAkc2NvcGUudGFza0lkPTA7XHJcbiAgICAgICBcclxuXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZXRTZWxlY3RlZFJlc291cmNlID0gZnVuY3Rpb24oaWQsc2F2ZWQpICB7XHJcblxyXG4gICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtPT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW09e307XHJcbiAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRQdWJsaXNoZWRSZXNvdXJjZUJ5SWQoaWQsc2F2ZWQpO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRQdWJsaXNoZWRSZXNvdXJjZUJ5SWQgPSBmdW5jdGlvbihpZCxzYXZlZCkgXHJcbiBcclxuIHtcclxuICAgIFxyXG4gICAgICAgICAgICBsZXQgcG9zXHJcbiAgICAgICAgICAgIGxldCBvbGRfcHVibGlzaF9pZCA9ICRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlSWRcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoc2F2ZWQgJiYgJHNjb3BlLmZkLkZvcm1EZWYhPT11bmRlZmluZWQgJiYgJHNjb3BlLmZkLkZvcm1EZWYhPT1udWxsICYmICRzY29wZS5mZC5Gb3JtRGVmLmxlbmd0aD4wKVxyXG4gICAgICAgICAgICAgIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgcG9zID0gJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoaWQpO1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAocG9zPj0wKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbSA9ICRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0W3Bvc107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZSA9ICRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0W3Bvc107XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkID0gJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lICsnICgnKyRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0uaWQgKycpJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCA9ICRzY29wZS5mZC5Gb3JtRGVmXHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb24pICRzY29wZS5mZC5maWxlTGlzdERvd25sb2FkZWQgPXRydWVcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgIHBvcyA9ICRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKGlkKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKHBvcz49MCl7XHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UHVibGlzaGVkUmVzb3VyY2VCeUlkKGlkKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbSA9ICRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0W3Bvc107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLkZvcm0gPSBkYXRhLmRhdGEuRm9ybVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlID0gJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3RbcG9zXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCA9ICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZSArJyAoJyskc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLmlkICsnKSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtIT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlSWQ9JHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZVZlcnNpb249JHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5WZXJzaW9uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5SZWxhdGVkPSRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0uUmVzb3VyY2VEZWZJZDsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQgPSAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLkZvcm1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuRm9ybURlZiA9ICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0uRm9ybVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZnJlc2hGb3JtPWFuZ3VsYXIuY29weSgkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLkZvcm0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5HcmlkU3RhdGU/LmNvbHVtbnNEZWY9PT11bmRlZmluZWQgfHwgb2xkX3B1Ymxpc2hfaWQhPWlkKSAkc2NvcGUuZmQubG9jYWxWYXJzLmdldENvbHVtbnNEZWYoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAkc2NvcGUuZmQuZmlsZUxpc3REb3dubG9hZGVkID10cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSAgICAgXHJcbn0gICAgICBcclxuXHJcbiAgIFxyXG4gIFxyXG4gICAgICAgIHZhciBvdXRfZmllbGRzID0gWydyZXNvdXJjZUlkJ107XHJcbiAgICAgICAgdmFyIHdpZGdldERlZmluaXRpb24gPSB7IERFSTogW3snbmFtZSc6J3Jlc291cmNlTGlua1InLCd2YWx1ZSc6W3tuYW1lOidyZXNvdXJjZUlkJyx2YWx1ZTokc2NvcGUuZmQuUmVsYXRlZH0se25hbWU6J3Jlc291cmNlUmVjb3JkSWQnLHZhbHVlOicnfV19XSxhY3Rpb25zOiBbe25hbWU6J1ByZXBhcmVEYXRhJyxzdGF0dXM6ZmFsc2V9XSxuYW1lOiAna3RUYXNrRmlsZXMnLHdpZGdldElkOiAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsdGFza0lkOiAgJHNjb3BlLmxUYXNrSWQscmVzb3VyY2VEZWZJZCA6ICRzY29wZS5zZWxlY3RlZFJlc291cmNlLCBvdXRwdXQ6b3V0X2ZpZWxkcywgfTtcclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmxvY2FsV2lkZ2V0SWQgPSBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnJlZ2lzdGVyV2lkZ2V0KHdpZGdldERlZmluaXRpb24pO1xyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuTG9jYWxJZD0kc2NvcGUuZmQubG9jYWxWYXJzLmxvY2FsV2lkZ2V0SWQ7XHJcbiAgICBcclxuICAgICAgICAkc2NvcGUuZmQuTG9jYWxJZD0kc2NvcGUuZmQubG9jYWxWYXJzLmxvY2FsV2lkZ2V0SWQ7XHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmtzbSA9IEthdGFseW9TdGF0ZU1hbmFnZXI7XHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtVHlwZT0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fdHlwZTtcclxuICAgICAgICBcclxuICAgICAgXHJcbiAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UHVibGlzaGVkUmVzb3VyY2VzQnlUeXBlKCdmaWxlJywnZm9ybScpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHsgICAgICAgXHJcbiAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgLy9kZWJ1Z2dlciAgLy9HZXRQdWJsaXNoZWRSZXNvdXJjZXNCeVR5cGUgICBcclxuICAgICAgICAgICAvLyRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0ID0gSlNPTi5wYXJzZShkYXRhLmRhdGFbMF0uRm9ybSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlSWQhPW51bGwpICRzY29wZS5mZC5sb2NhbFZhcnMuc2V0U2VsZWN0ZWRSZXNvdXJjZSgkc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZUlkLHRydWUpO1xyXG4gICAgICAgICAgIGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLk5vUHVibGlzaGVkUmVzb3VyY2VNc2c9XCJEZWZpbml0aW9uIGVycm9yIC0tPiBQdWJsaXNoZWQgZGF0YXNldCBub3QgZGVmaW5lZCFcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgIH0pO1xyXG5cclxuXHJcblxyXG5cdCAgICRzY29wZS5mZC5kb3dubG9hZEZpbGUgPSBmdW5jdGlvbihmaWxlSWQsZmlsZU5hbWUpe1xyXG4gICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZG93bmxvYWRGaWxlKCRzY29wZS5mZC5SZWxhdGVkLGZpbGVJZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdGaWxlICcrZmlsZU5hbWUrJyBkb3dubG9hZGVkJywnaW5mbycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbZGF0YS5kYXRhXSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5ocmVmID0gdXJsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmRvd25sb2FkID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEudGFyZ2V0ID0gJ19ibGFuayc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuY2xpY2soKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgIH07Ly8gZG93bG9hZCBmaWxlIEVORFxyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgICAkc2NvcGUuZmQucHJldmlld0ZpbGUgPSBmdW5jdGlvbihmaWxlSWQsZmlsZU5hbWUsZmlsZVR5cGUpe1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5kb3dubG9hZEZpbGUoJHNjb3BlLmZkLlJlbGF0ZWQsZmlsZUlkKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbZGF0YS5kYXRhXSx7dHlwZTpmaWxlVHlwZX0pKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld19kb2MgPSB3aW5kb3cub3Blbih1cmwsXCJfYmxhbmtcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgIH07Ly8gcHJldmlldyBmaWxlIEVORFxyXG4gICBcclxuICAgICAgLy9rdCBUQVNLIEZJTEVTXHJcbiAgICBcclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZXNEYXRhID0ge2RhdGE6W119O1xyXG4gICAgXHJcbiAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVTZWxlY3Rpb25DaGFuZ2VkID0gZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgICRzY29wZS5mZC5maWxlU2VsZWN0ZWQ9aXRlbS5pc1NlbGVjdGVkO1xyXG4gICAgICAgJHNjb3BlLmZkLlNlbGVjdGVkRmlsZSA9IGl0ZW07XHJcbiAgICAgXHJcbiAgICB9XHJcblxyXG4gICBcclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZ2V0RmlsZXM9IGZ1bmN0aW9uKHRhYmxlU3RhdGUsIHBhZ2VOdW1iZXIscGFnZVNpemUpe1xyXG5cclxuXHJcbiAgICAgICAgLy90YXNrRXhlY3V0ZUlkOiAwICAgdGFza0luaXRpYXRlSWQ6IDBcclxuICAgICAgICBsZXQgZGVmZXJyZWQgPSAkcS5kZWZlcigpOyAgICBcclxuICAgICAgICAkc2NvcGUucmVzb3VyY2VMb2FkaW5nPXRydWU7XHJcbiAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgdmFyIG5ld1BhZ2VcclxuICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChwYWdlTnVtYmVyPT11bmRlZmluZWQpIHBhZ2VOdW1iZXIgPSAkc2NvcGUuZmQubG9jYWxWYXJzLnBhZ2luYXRpb25PcHRpb25zLnBhZ2VOdW1iZXI7XHJcbiAgICAgICAgaWYgKHBhZ2VTaXplPT11bmRlZmluZWQpIHBhZ2VTaXplID0gJHNjb3BlLmZkLmxvY2FsVmFycy5wYWdpbmF0aW9uT3B0aW9ucy5wYWdlU2l6ZTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5maWxlc0RhdGEhPT11bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMudG90YWxDb3VudD0gJHNjb3BlLmZkLmxvY2FsVmFycy5maWxlc0RhdGEuZGF0YT8ubGVuZ3RoXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnBhZ2luYXRpb25PcHRpb25zLnRvdGFsSXRlbUNvdW50PSRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZXNEYXRhLmRhdGE/Lmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5wYWdpbmF0aW9uT3B0aW9ucy5udW1iZXJPZlBhZ2VzID0gTWF0aC5jZWlsKCRzY29wZS5mZC5sb2NhbFZhcnMucGFnaW5hdGlvbk9wdGlvbnMudG90YWxJdGVtQ291bnQvcGFnZVNpemUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMudG90YWxDb3VudD4wKXtcclxuICAgICAgICAgICAgaWYgKE1hdGguY2VpbCgkc2NvcGUuZmQubG9jYWxWYXJzLnRvdGFsQ291bnQvcGFnZVNpemUpPHBhZ2VOdW1iZXIpXHJcbiAgICAgICAgICAgICAgICBuZXdQYWdlID0gTWF0aC5jZWlsKCRzY29wZS5mZC5sb2NhbFZhcnMudG90YWxDb3VudC9wYWdlU2l6ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5maWxlc0RhdGEpIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXN1bHRzID0ge3Jlc3VsdHMgOiAkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzRGF0YS5kYXRhLnNsaWNlKCAocGFnZU51bWJlciAtMSkgKiBwYWdlU2l6ZSwgcGFnZU51bWJlciAqIHBhZ2VTaXplKSB9XHJcbiAgICAgICAgIGVsc2UgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc3VsdHMgPSB7fSAgICAgXHJcbiAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzdWx0cy5jb2x1bW5zPSRzY29wZS5mZC5HcmlkU3RhdGU/LmNvbHVtbnNEZWZcclxuXHJcbiAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuY3VycmVudFBhZ2U9cGFnZU51bWJlcjtcclxuICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXN1bHRzLnBhZ2VTaXplID0gcGFnZVNpemU7XHJcbiAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzdWx0cy5udW1iZXJPZlBhZ2VzID0gJHNjb3BlLmZkLmxvY2FsVmFycy5wYWdpbmF0aW9uT3B0aW9ucy5udW1iZXJPZlBhZ2VzO1xyXG4gICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc3VsdHMuY291bnQgPSAgICRzY29wZS5mZC5sb2NhbFZhcnMudG90YWxDb3VudFxyXG4gICAgICAgICBcclxuICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5jdXJyZW50UGFnZSA9ICRzY29wZS5mZC5sb2NhbFZhcnMuY3VycmVudFBhZ2U7XHJcbiAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUucGFnZVNpemUgPSAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc3VsdHMucGFnZVNpemU7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAvLyRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcInZhbHVlQ2hhbmdlZFwiLCAkc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlKTtcclxuICAgICAgICAgLy9pZiAoISRzY29wZS5mZC5sb2NhbFZhcnMubG9hZEZyb21TdGF0ZSkgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNldFNlbGVjdGlvbigpO1xyXG4gICAgICAgICBcclxuICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogJHNjb3BlLmZkLmxvY2FsVmFycy5yZXN1bHRzfSk7XHJcbiAgICAgICAgIFxyXG4gICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH1cclxuXHJcblx0JHNjb3BlLmZkLmdldEZpbGVzRGF0YSA9IGZ1bmN0aW9uIChmaWxlX2RlZl9pZCxkYXRhc2V0X2RlZl9pZCkge1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdCRzY29wZS5maWx0ZXIgPSB7fTtcclxuXHRcdFx0XHR2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG5cdFx0XHRcdC8vJHNjb3BlLmZkLmxpbmtlZFJlc291cmNlSWQgPSByZXNvdXJjZV9pZDsgLy9NSUdPUiAtIG1vemRhIGplIHZpc2FrIChqZSlcclxuXHRcdFx0XHQvLyRzY29wZS5mZC5saW5rZWRSZXNvdXJjZURlZklkID0gcmVzb3VyY2VfZGVmX2lkOyAvL01JR09SIC0gbW96ZGEgamUgdmlzYWsgKGplKVxyXG4gICAgICAgICAgIGlmIChmaWxlX2RlZl9pZCE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzRGF0YS5kYXRhLmxlbmd0aD0wO1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5maWxlU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldEZpbGVzRGF0YSgkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsZmlsZV9kZWZfaWQsZGF0YXNldF9kZWZfaWQsMCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5maWxlc0RhdGEgPSBkYXRhLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sYXN0UmVzb3VyY2VEZWZJZCA9IGZpbGVfZGVmX2lkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubGFzdFJlc291cmNlSWQgPSBkYXRhc2V0X2RlZl9pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmZpbGVMaXN0RG93bmxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuSW5pdGlhbExvYWQgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHRcdFx0XHJcbiAgICAgICAgICAgICAgICAgICAgLGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1x0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZmlsZUxpc3REb3dubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuXHR9Oy8vZ2V0Rmlsc0RhdGEgRU5EXHJcblxyXG4gICAgJHNjb3BlLmZkLmxvY2FsVmFycy5HZXRGaWxlc0NsaWNrID0gZnVuY3Rpb24oKVxyXG5cclxuICAgIHtcclxuICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUlkPSRzY29wZS5mZC5SZWxhdGVkO1xyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuR2V0RmlsZXNGaWx0ZXIoJHNjb3BlLmZkLmxvY2FsVmFycy5uZXh0UGFnZSwkc2NvcGUuZmQubG9jYWxWYXJzLnByZXZpb3VzUGFnZSwxLCRzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUucGFnZVNpemUpOyBcclxuICAgICAgICAgICBcclxuXHJcbiAgICB9XHJcbiAgICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgLy8gICAgICAgICAgIEdFVCBSRVNPVVJDRSBEQVRBIFBBR0lOQVRFRFxyXG4gICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMuR2V0RmlsZXNGaWx0ZXIgPSBmdW5jdGlvbiAodXJsTmV4dCx1cmxQcmV2LG5ld1BhZ2UscGFnZVNpemUpIFxyXG4gICAge1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzRGF0YS5kYXRhPT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZXNEYXRhLmRhdGEgPSBbXTtcclxuICAgICAgICBpZiAoTWF0aC5jZWlsKCRzY29wZS5mZC5sb2NhbFZhcnMudG90YWxDb3VudC9wYWdlU2l6ZSk8bmV3UGFnZSkgbmV3UGFnZSA9IE1hdGguY2VpbCgkc2NvcGUuZmQubG9jYWxWYXJzLnRvdGFsQ291bnQvcGFnZVNpemUpO1xyXG4gICAgICAgIGNvbnN0IGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICBpZiAocGFnZVNpemU9PXVuZGVmaW5lZClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnBhZ2VTaXplID0gcGFnaW5hdGlvbk9wdGlvbnMucGFnZVNpemU7XHJcbiAgICAgICAgICBwYWdlU2l6ZT0gJHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5wYWdlU2l6ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICBcclxuICAgICAgICAkc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24odmFsdWVTdGF0ZU5hbWUsXCJ2YWx1ZUNoYW5nZWRcIiwgJHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZSk7XHJcbiAgICAgICAgJHNjb3BlW1widGFza0ZpbGVzU2VhcmNoRm9ybVwiICsgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXT8uJHNldFN1Ym1pdHRlZCgpXHJcbiAgICAgICAgY29uc3QgaXNfdmFsaWQgPSAkc2NvcGVbXCJ0YXNrRmlsZXNTZWFyY2hGb3JtXCIgKyAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWRdPy4kdmFsaWRcclxuICAgICAgICAgICAvL2xldCBpc192YWxpZCA9ICRzY29wZS5kYXRhc2V0TGlzdFNlYXJjaEZvcm0/LiR2YWxpZFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgIGlmIChpc192YWxpZClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5maWxlc0RhdGEuZGF0YS5sZW5ndGg9MDtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGF0YVBhZ2luYXRlZEZpbHRlcigkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJZCx1cmxOZXh0LHVybFByZXYsbmV3UGFnZSxwYWdlU2l6ZSxsYW5nLCRzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuZm9ybURhdGEsICRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0LCRzY29wZS5mZC5sb2NhbFZhcnMuY29sdW1uc0ZvclF1ZXJ5KS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3NldHVwIGRhdGEgZ3JpZCBvciBjYXJkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZXNEYXRhLmRhdGEgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlPT0nY2FyZCcpICRzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YSA9ICRzY29wZS5mZC5sb2NhbFZhcnMuVHJhbnNmb3JtRGF0YUZvckNhcmQoZGF0YS5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXN0b3JlR3JpZFN0YXRlKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZmlsZUxpc3REb3dubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuSW5pdGlhbExvYWQgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkc2NvcGUuZmQubG9jYWxWYXJzLmxvYWRGcm9tU3RhdGUpICRzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuY3VycmVudFBhZ2U9MTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLnRvdGFsQ291bnQ+MCAmJiAkc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLmN1cnJlbnRQYWdlPT0wKSAkc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLmN1cnJlbnRQYWdlPTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLm51bVBhZ2VzID0gTWF0aC5jZWlsKCRzY29wZS5mZC5sb2NhbFZhcnMudG90YWxDb3VudC8kc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnBhZ2VTaXplKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5maWxlc0RhdGEudG90YWxJdGVtcz0kc2NvcGUuZmQubG9jYWxWYXJzLnRvdGFsQ291bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2Uuc2V0RGF0YSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUk6IFt7bmFtZToncmVzb3VyY2VMaW5rVGFza0ZpbGVzJyx2YWx1ZTpbe25hbWU6J3Jlc291cmNlSWQnLHZhbHVlOiRzY29wZS5mZC5SZWxhdGVkfSx7bmFtZToncmVzb3VyY2VSZWNvcmRJZCcsdmFsdWU6JHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZERhdGFzZXRSZWNvcmRJZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICx7bmFtZToncmVzb3VyY2VSZWNvcmRJZHMnLHZhbHVlOiBudWxsfSx7bmFtZToncmVzb3VyY2VSZWNvcmRzQWxsJyx2YWx1ZTokc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzRGF0YS5kYXRhfV19XSx3aWRnZXRJZDogJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLHRhc2tfZXhlY3V0ZV9pZDokc2NvcGUudGFza0V4ZWN1dGVJZH0pO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmxvYWRGcm9tU3RhdGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZmlsZUxpc3REb3dubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCRzY29wZS5mZC5FcnJvck1zZywnd2FybmluZycpO1xyXG4gICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7ICRzY29wZS5mZC5maWxlTGlzdERvd25sb2FkZWQgPSB0cnVlOyRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcgPSBmYWxzZX0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgfTtcclxuICAgICAgICAgXHJcblxyXG5cclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMucGFnZUNoYW5nZWQgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcInZhbHVlQ2hhbmdlZFwiLCAkc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlKTtcclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLkdldEZpbGVzRmlsdGVyKCRzY29wZS5mZC5sb2NhbFZhcnMubmV4dFBhZ2UsJHNjb3BlLmZkLmxvY2FsVmFycy5wcmV2aW91c1BhZ2UsJHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5jdXJyZW50UGFnZSwkc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnBhZ2VTaXplKTtcclxuICAgICAgICAgfTtcclxuXHJcbiAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgLy8gICAgICAgICAgIEdFVCBEQVRBU0VUIERJUkVDVCBGSUxURVJcclxuICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXREYXRhc2V0RGlyZWN0ID0gZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgICBsZXQgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nOyAgICAgICAgICAgICBcclxuICAgICAgICBsZXQgY2hpbGRyZW4gPSBbaXRlbVskc2NvcGUuZmQuUGFyYW1ldGVycy5QYXJlbnREYXRhc2V0RmllbGROYW1lXV1cclxuICAgICAgICAkc2NvcGUuZmQuZmlsZUxpc3REb3dubG9hZGVkID0gZmFsc2VcclxuICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURhdGFEaXJlY3RGaWx0ZXIoJHNjb3BlLmZkLlJlbGF0ZWQsJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLFwiaVwiLGxhbmcse2lkX19pbjogY2hpbGRyZW59KS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5maWxlc0RhdGEuZGF0YSA9IGRhdGEuZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRzY29wZS5mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuY29sdW1uRGVmcyA9IGRhdGEuY29sdW1uc0RlZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc3RvcmVHcmlkU3RhdGUoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZmlsZUxpc3REb3dubG9hZGVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLkluaXRpYWxMb2FkID0gZmFsc2VcclxuICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgLyogR2V0IGNoaWxkcmVuIGZvciBwYXJlbnQqL1xyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuR2V0UmVzb3VyY2VEYXRhRm9yUGFyZW50ID0gZnVuY3Rpb24gKCkgXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgIHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuUGFyZW50UmVjb3JkSWQ+MClcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZmlsZUxpc3REb3dubG9hZGVkID0gZmFsc2VcclxuICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGF0YU0ybSgkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsJHNjb3BlLmZkLlBhcmVudERhdGFzZXREZWZJZCwkc2NvcGUuZmQuUmVsYXRlZCwkc2NvcGUuZmQubG9jYWxWYXJzLlBhcmVudFJlY29yZElkLCRzY29wZS50YXNrSWQsMCxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZXNEYXRhLmRhdGEgPSBkYXRhLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5jb2x1bW5EZWZzID0gZGF0YS5jb2x1bW5zRGVmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc3RvcmVHcmlkU3RhdGUoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmZpbGVMaXN0RG93bmxvYWRlZCA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuSW5pdGlhbExvYWQgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gICAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuXHJcbiAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXN0b3JlR3JpZFN0YXRlPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgaWYgKCRzY29wZS5mZFsnR3JpZFN0YXRlJ10hPT11bmRlZmluZWQgJiYgJHNjb3BlLmZkWydHcmlkU3RhdGUnXSE9PW51bGwpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUuZmRbJ0dyaWRTdGF0ZSddWydjb2x1bW5zRGVmJ10hPT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZXNDb2x1bW5zID0gICRzY29wZS5mZFsnR3JpZFN0YXRlJ11bJ2NvbHVtbnNEZWYnXVxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZkWydHcmlkU3RhdGUnXVsnY29sdW1uc1F1ZXJ5J10hPT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnMuY29sdW1uc0ZvclF1ZXJ5ID0gICRzY29wZS5mZFsnR3JpZFN0YXRlJ11bJ2NvbHVtbnNRdWVyeSddXHJcblxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2F2ZUdyaWRTdGF0ZT0gZnVuY3Rpb24oc2hvd01zZykge1xyXG4gICAgICAgICAgICAgICAvL2RlYnVnZ2VyIC8va3RUYXNrRGF0YXNldExpc3Qgc21hcnR0YWJsZVxyXG4gICAgICAgICAgICAgICBsZXQgY29sdW1uc0RlZiA9ICRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZXNDb2x1bW5zXHJcblxyXG4gICAgICAgICAgICAgICBsZXQgY29sdW1uc1F1ZXJ5ID0gJHNjb3BlLmZkLmxvY2FsVmFycy5jb2x1bW5zRm9yUXVlcnlcclxuICAgICAgICAgICAgICAgJHNjb3BlLmZkWydHcmlkU3RhdGUnXT17J2NvbHVtbnNEZWYnOmNvbHVtbnNEZWYsJ2NvbHVtbnNRdWVyeSc6IGNvbHVtbnNRdWVyeX1cclxuXHJcbiAgICAgICAgICAgICAgIGlmIChzaG93TXNnKSBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoXCJUbyBtYWtlIGNoYW5nZXMgc3RpY2sgcGxlYXNlIHNhdmUgZm9ybVwiLCdpbmZvJyk7ICAgICAgICAgICAgXHJcbiAgICB9O1xyXG5cclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRDb2x1bW5zRGVmID0gZnVuY3Rpb24gKCkge1xyXG5cclxuICAgICAgICBsZXQgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlQ29sdW1ucygkc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZUlkLCdmaWxlJyxsYW5nLCRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlVmVyc2lvbikudGhlbihmdW5jdGlvbihkYXRhKSB7Ly9NSUdPUlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzQ29sdW1ucyA9IGRhdGEuZGF0YS5jb2x1bW5zRGVmO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuZmQubG9jYWxWYXJzLmNvbHVtbnNEb3dubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5maWxlTGlzdERvd25sb2FkZWQgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLkluaXRpYWxMb2FkID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2F2ZUdyaWRTdGF0ZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgfVxyXG5cclxuICAgICAgICAvL2t0VGFza0ZpbGVzICAtIFByb2Nlc3NFdmVudFxyXG4gICAgICAkc2NvcGUuZmQuUHJvY2Vzc0V2ZW50PWZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgIHtcclxuICAgICAgICBmb3IgKHZhciBpPTA7aTxkYXRhLmxlbmd0aDtpKyspXHJcbiAgICAgICAge1xyXG4gICAgICAgICBpZiAoZGF0YVtpXS5uYW1lPT0ncmVzb3VyY2VSZWNvcmRJZCcpXHJcbiAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgaWYgKGRhdGFbaV0udmFsdWUhPXVuZGVmaW5lZCAmJiB0eXBlb2YgZGF0YVtpXS52YWx1ZSA9PSdvYmplY3QnKVxyXG4gICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5saW5rZWRSZXNvdXJjZUlkID0gZGF0YVtpXS52YWx1ZS5pZDtcclxuICAgICAgICAgICAgICAgfWVsc2UgJHNjb3BlLmZkLmxpbmtlZFJlc291cmNlSWQgPSBkYXRhW2ldLnZhbHVlO1xyXG5cclxuICAgICAgICAgfVxyXG4gICAgICAgICBpZiAoZGF0YVtpXS5uYW1lPT0ncmVzb3VyY2VJZCcpXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKGRhdGFbaV0udmFsdWUhPXVuZGVmaW5lZCAmJiB0eXBlb2YgZGF0YVtpXS52YWx1ZSA9PSdvYmplY3QnKVxyXG4gICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5saW5rZWRSZXNvdXJjZURlZklkID0gZGF0YVtpXS52YWx1ZS5pZDtcclxuICAgICAgICAgICAgICAgfWVsc2UgJHNjb3BlLmZkLmxpbmtlZFJlc291cmNlRGVmSWQgPSBkYXRhW2ldLnZhbHVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH07IC8va3RUYXNrRmlsZXMgIC0gUHJvY2Vzc0V2ZW50XHJcbiAgICAgIFxyXG4gICAgICAgIC8va3RUYXNrRmlsZXMgIC0gcHIwY2Vzc1dpZGdldERlcGVuZGVuY2llc1xyXG4gICAgICAgICRzY29wZS5mZC5Qcm9jZXNzV2lkZ2V0RGVwZW5kZW5jaWVzID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZkLnRJdGVtVmFsdWUhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPCAkc2NvcGUuZmQudEl0ZW1WYWx1ZS5sZW5ndGg7aSsrKSB7IC8vIHByb2xhemltIHBvIERFSSBvZCB2ZXphbmloIHdpZGdldGFcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbGlua2VkV2lkZ2V0SWQ9JHNjb3BlLmZkLnRJdGVtVmFsdWVbaV0ud2lkZ2V0SWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmtlZFdpZGdldElkIT11bmRlZmluZWQgJiYgbGlua2VkV2lkZ2V0SWQhPW51bGwgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgIC8vbGlua2VkV2lkZ2V0SWQ9IFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UuZ2V0TG9jYWxXaWRnZXRJZChsaW5rZWRXaWRnZXRJZCk7Ly9NSUdPUiAtIG1vcmFtIGRvYml0aSBsb2NhbHdpZGdldElkIG9kIHZlemFub2cgV2lkZ2V0SWQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGo9MDtqPCRzY29wZS5mZC50SXRlbVZhbHVlW2ldLkRFSS5sZW5ndGg7aisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCRzY29wZS5mZC50SXRlbVZhbHVlW2ldLkRFSVtqXS5uYW1lPT09J3Jlc291cmNlTGluaycgfHwgJHNjb3BlLmZkLnRJdGVtVmFsdWVbaV0uREVJW2pdLm5hbWU9PT0ncmVzb3VyY2VMaW5rRGF0YXNldExpc3QnKSAmJiAoJHNjb3BlLmZkLnRJdGVtVmFsdWVbaV0uREVJW2pdLnZhbHVlPT10cnVlKSkgeyAvL1NDT1BFLk9OIHNhbW8ga2FkIGplIERFSSB2YWx1ZSA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwia3QtdGFza2ZpbGVzIFwiICsgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkK1wiIHZlemFuaSB3aWRnZXRpZD1cIiArIGxpbmtlZFdpZGdldElkKTsgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGlua2VkSXRlbSA9ICRzY29wZS5mZC50SXRlbVZhbHVlW2ldLkRFSVtqXS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJG9uKCdFdmVudCcrbGlua2VkV2lkZ2V0SWQrbGlua2VkSXRlbSxmdW5jdGlvbihldmVudCwgZGF0YSl7ICAvL2lkZSBwbyBzdmltIHZlemFuaW0gd2lkZ2V0aW1hIGkgZG9kYWogJHNjb3BlLm9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgY29uc29sZS5sb2coXCJrdC10YXNrZmlsZXMgXCIrJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkK1wiLCBkb2JpbyBldmVudCBcIiArIGV2ZW50Lm5hbWUpOyAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2t0VEFTS2ZpbGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlByb2Nlc3NFdmVudChkYXRhKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgLy8kb25fRU5EXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXRhID0gV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5nZXREYXRhQnlXaWRnZXRJZCgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRhc2tfZXhlY3V0ZV9pZCwkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRhc2tfaW5pdGlhdGVfaWQsJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wcmV2X3Rhc2tfaWQsbGlua2VkV2lkZ2V0SWQsbGlua2VkSXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5Qcm9jZXNzRXZlbnQoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ly9pZlxyXG4gICAgICAgICAgICAgICAgICAgIH0vL2ZvciBqXHJcbiAgICAgICAgICAgICAgICAgICB9Ly9pZiAgIFxyXG4gICAgICAgICAgICAgICAgfSAvL2ZvciBpXHJcbiAgICAgICAgfS8vIGZuIHByMGNlc3NXaWRnZXREZXBlbmRlbmNpZXNcclxuXHJcbiAgICBsZXQgcmVmcmVzaF9kYXRhPWZ1bmN0aW9uKGRhdGEpXHJcbiAgICB7XHJcbiAgICAgICAgICAgIGxldCBzdGF0ZSA9IGRhdGEuc3RhdGVcclxuXHJcbiAgICAgICAgICAgIGlmIChzdGF0ZSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUGFyZW50RGF0YXNldERlZklkID0gc3RhdGUuZGF0YXNldERlZklkXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLlBhcmVudFJlY29yZElkID0gc3RhdGUucmVjb3JkSWRcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5QYXJlbnRSZWxhdGlvbnNoaXBUeXBlPT0wKSAkc2NvcGUuZmQubG9jYWxWYXJzLkdldFJlc291cmNlRGF0YUZvclBhcmVudCgpXHJcbiAgICAgICAgICAgICAgICBlbHNlICRzY29wZS5mZC5sb2NhbFZhcnMuZ2V0RGF0YXNldERpcmVjdChzdGF0ZS5yZWNvcmQpXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCRzY29wZS5mZC5IYXNQYXJlbnREYXRhc2V0ICYmICRzY29wZS5mZC5Qb3B1bGF0ZVBhcmVudE1ldGhvZD09J0EnKVxyXG4gICAge1xyXG4gICAgICAgIFxyXG5cclxuICAgICAgICAvL3NldHVwIGhlcmUgc3RhdGUgbWFuYWdlclxyXG4gICAgICAgIGxldCBkZXBlbmRlbnRfZmllbGQgPSBcIkZpZWxkXCIrJHNjb3BlLmZkLlV1aWRSZWY7XHJcbiAgICAgICAgbGV0IHN1YnNjcmliZWRTdWJqZWN0ID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkKyctJyskc2NvcGUuZmQuU3JjUGFyZW50V2lkZ2V0SWQ7XHJcbiAgICAgICAgbGV0IHN1YmplY3QgPSAkc2NvcGUua3NtLmFkZFN1YmplY3Qoc3Vic2NyaWJlZFN1YmplY3QsbnVsbCk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICBsZXQgb2JzZXJ2ZXIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdCxkZXBlbmRlbnRfZmllbGQsXCJ2YWx1ZUNoYW5nZWRcIixyZWZyZXNoX2RhdGEpO1xyXG4gICAgICAgIGxldCB2YWwgPSAkc2NvcGUua3NtLmdldFN0YXRlKHN1YnNjcmliZWRTdWJqZWN0KTtcclxuICAgICAgICBpZiAodmFsLnN0YXRlIT09dW5kZWZpbmVkICYmIHZhbC5zdGF0ZSE9PW51bGwpXHJcbiAgICAgICAgeyAgIFxyXG4gICAgICAgICAgICBsZXQgcGFyZW50X2l0ZW0gID0gdmFsLnN0YXRlXHJcbiAgICAgICAgICAgICRzY29wZS5mZC5QYXJlbnREYXRhc2V0RGVmSWQgPSBwYXJlbnRfaXRlbS5kYXRhc2V0RGVmSWRcclxuICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5QYXJlbnRSZWNvcmRJZCA9IHBhcmVudF9pdGVtLnJlY29yZElkXHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5QYXJlbnRSZWxhdGlvbnNoaXBUeXBlPT0wKSAkc2NvcGUuZmQubG9jYWxWYXJzLkdldFJlc291cmNlRGF0YUZvclBhcmVudCgpXHJcbiAgICAgICAgICAgIGVsc2UgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXREYXRhc2V0RGlyZWN0KHBhcmVudF9pdGVtLnJlY29yZClcclxuICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgIH1cclxuICAgXHJcbiAgICAgIC8vVE9ETyAtIHZpZGpldGkgZGEgbGkgb3ZhaiB0cmViYSBpIHpib2cgw6hlZ2FcclxuICAgICAgICRzY29wZS4kb24oJ0luaXRpYXRlVGFza0ZpbGVzVXBsb2FkZWQnLGZ1bmN0aW9uKGV2ZW50LCBkYXRhKXtcclxuICAgICAgICAgICAgICRzY29wZS5mZC5nZXRGaWxlc0RhdGEoJHNjb3BlLmZkLmxpbmtlZFJlc291cmNlRGVmSWQgLCRzY29wZS5mZC5saW5rZWRSZXNvdXJjZUlkICk7IFxyXG4gICAgICAgICAgfSk7XHJcblx0XHQgIFxyXG4gICAgICBcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAvL2dldCBmaWxlcyAoZmlyc3QgZXZlcnl0aGluZyB0aGVuIGZpbHRlciBieSBkYXRhc2V0KVxyXG4gICAgICAgIGlmICghJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb24gJiYgJHNjb3BlLmZkLkF1dG9TZWFyY2ggJiYgISRzY29wZS5mZC5IYXNQYXJlbnREYXRhc2V0KSAkc2NvcGUuZmQuZ2V0RmlsZXNEYXRhKCRzY29wZS5mZC5SZWxhdGVkLDApO1xyXG4gICAgICAgIGVsc2UgaWYgKCRzY29wZS5mZC5HcmlkU3RhdGU/LmNvbHVtbnNEZWYhPT11bmRlZmluZWQpICRzY29wZS5mZC5maWxlTGlzdERvd25sb2FkZWQgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvL0lMSlUgZmV0Y2ggZnJvbSBzZXJ2ZXIgdEl0ZW1WYWx1ZSBrdFRhc2tGaWxlcyAtIG5vdCBuZWVkZWQgKHdpZGdldCBkZXBlbmRlbmNpZXMgd2lsbCBiZSBkZXByZWF0ZWQpXHJcbiAgICAgICAgICAkc2NvcGUuZm9ybVR5cGU9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX3R5cGU7XHJcbiAgICAgICAgICAvKlxyXG4gICAgICAgICAgaWYgKCRzY29wZS5mZC5QcmVzZW50YXRpb25JZCE9dW5kZWZpbmVkICYmICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCE9bnVsbCkge1xyXG4gICAgICAgICAgVGFza0RhdGFTZXJ2aWNlLmdldFdpZGdldERlcGVuZGVuY2llcygkc2NvcGUudGFza0lkLCRzY29wZS5mZC5QcmVzZW50YXRpb25JZCwkc2NvcGUuZm9ybVR5cGUpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnRJdGVtVmFsdWU9ZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5Qcm9jZXNzV2lkZ2V0RGVwZW5kZW5jaWVzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgIFxyXG4gICAgICAgICAgfSovXHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgfSwvL2t0VGFza0ZpbGUgJENPTlRST0xFUlxyXG4gICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcclxuICAgICAgICAgIFxyXG4gICAgICBcclxuXHRcdH0vL0xJTksga3RUYXNrRmlsZXNcclxuICAgIH1cclxufTsgLy9rdFRhc2tGaWxlcyBFTkRcbid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdFRhc2tGb3JtICgpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrRm9ybS5odG1sJyxcclxuICAgICAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uKCRzY29wZSxUYXNrRGVmaW5pdGlvblNlcnZpY2UsVGFza0RhdGFTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlLFdpZGdldFJlZ2lzdGVyU2VydmljZSxQcm9jZXNzaW5nU2VydmljZSxcclxuICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZSxLYXRhbHlvU3RhdGVNYW5hZ2VyLFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UsZHJhZ3VsYVNlcnZpY2UsJHN0YXRlUGFyYW1zLCRyb290U2NvcGUsJHRpbWVvdXQpe1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnRkcz1UYXNrRGVmaW5pdGlvblNlcnZpY2U7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZU9iamVjdCA9ICRzdGF0ZVBhcmFtcy5yZXNvdXJjZTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5DVFJMPSdrdFRhc2tGb3JtJ1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1Mb2FkZWQ9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybVZlcnNpb249e307XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VJZD0kc3RhdGVQYXJhbXMuaWQ7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2U7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuc2hvd0ZpZWxkUHJvcGVydGllcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1UeXBlPSRzY29wZS50ZHMuc2hvd1Rhc2tGb3JtRm4oKTtcclxuXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUudGFza0RlZmluaXRpb24uUmVzb3VyY2VEZWZJZF9pZD0kc2NvcGUucmVzb3VyY2VJZDtcclxuICAgICAgICAgICAgICAgICRzY29wZS50YXNrRGVmaW5pdGlvbi5mb3JtX3R5cGU9JHNjb3BlLmZvcm1UeXBlO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLmZvcm1fZGVmaW5pdGlvbj10cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgICRzY29wZS5ncmlkc3RlclR5cGU9XCJ0YXNrXCI7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucmVmcmVzaEZvcm09ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZGFzaGJvYXJkID0geydpJzp7fSwnZSc6e319O1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnJlbG9hZFRhc2tUb29sYm94ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycz09dW5kZWZpbmVkKSAkc2NvcGUubG9jYWxWYXJzPXt9O1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmNiQXV0b0V4ZWN1dGVDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmNiQXV0b0luaXRpYXRlQ2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgLy8gJHNjb3BlLmdzcnZjLmRlc3Ryb3lEcmFndWxhKCdiYWctY29sdW1ucycpO1xyXG4gICAgICAgICAgICAgICAgLy8gJHNjb3BlLmdzcnZjLmRlc3Ryb3lEcmFndWxhKCdiYWctcm93cy0nKyRzY29wZS5ncmlkc3RlclR5cGUpO1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIC8vJHJvb3RTY29wZS4kZW1pdCgnUmVnaXN0ZXJUYXNrV2lkZ2V0cycsbnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvLyBXaWRnZXRSZWdpc3RlclNlcnZpY2UuTGlzdGVuVG9FdmVudHMoKTtcclxuICAgICAgICAgICAgICAgIC8vIFdpZGdldFJlZ2lzdGVyU2VydmljZS5FbWl0UmVnaXN0ZXJUYXNrV2lkZ2V0RXZlbnQoKTtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLmRlUmVnaXN0ZXJBbGxXaWRnZXRzKCk7XHRcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAkc2NvcGUuaGlkZVRhYkluZGV4ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAkc2NvcGUub3V0Y29tZXMgPSB7b3V0Y29tZUNvZGVzRGV0YWlsczpbXX07XHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLm91dGNvbWVzLnNlbGVjdGVkT3V0Y29tZUluZGV4PS0xO1xyXG4gICAgICAgICAgICAgICAgICRzY29wZS5kYXNoYm9hcmRMb2NhbCA9e3dpZGdldHM6e2xheW91dDogR3JpZHN0ZXJTZXJ2aWNlLmdldEVtcHR5VGFza0Zvcm0oKSxkYXRhOnt9fX07XHJcbiAgICAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5rc20gPSBLYXRhbHlvU3RhdGVNYW5hZ2VyO1xyXG5cclxuICAgICAgICAgICAgICAgIHZhciBmb3JtX3NhdmVkID0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EZWZpbml0aW9uU3RhdGUuc3ViamVjdC5zZXRTdGF0ZUNoYW5nZXMgPSBkYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGVmaW5pdGlvblN0YXRlLnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKFwiZm9ybVNhdmVkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB2YXIgZm9ybURlZmluaXRpb25TdGF0ZSxmb3JtRGVmaW5pdGlvblN0YXRlTmFtZTsgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5zZXR1cEthdGFseW9TdGF0ZU1hbmFnZXIgPSBmdW5jdGlvbigpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybURlZmluaXRpb25TdGF0ZT0gJHNjb3BlLmtzbS5hZGRTdWJqZWN0KCdmb3JtRGVmaW5pdGlvblN0YXRlJyskc2NvcGUucmVzb3VyY2VJZCskc2NvcGUudGFza0RlZmluaXRpb24uZm9ybV90eXBlLG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1EZWZpbml0aW9uU3RhdGVOYW1lID0gZm9ybURlZmluaXRpb25TdGF0ZS5zdWJqZWN0Lm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFjdGlvbl92YWx1ZV9jaGFuZ2VkID0gJHNjb3BlLmtzbS5hZGRBY3Rpb24oZm9ybURlZmluaXRpb25TdGF0ZU5hbWUsXCJmb3JtU2F2ZWRcIixmb3JtX3NhdmVkKTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAkc2NvcGUuc2V0dXBLYXRhbHlvU3RhdGVNYW5hZ2VyKCk7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuU2hvd0Zvcm1WaWV3ID0gZnVuY3Rpb24odmlld0lkLGxvY2tlZClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgIC8vJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnRhc2tEZWZpbml0aW9uLmZvcm1QYXJhbXM9PT11bmRlZmluZWQpIFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza0RlZmluaXRpb24uZm9ybVBhcmFtcz17fSBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50YXNrRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT12aWV3SWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5zZXRGb3JtVmlld1R5cGUoJHNjb3BlLnRhc2tEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgIC8vICB9KVxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuc2hvd0hpZGVUYXNrRm9ybSA9IGZ1bmN0aW9uKGZvcm1fdHlwZSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50ZHMuc2hvd0hpZGVUYXNrRm9ybShmb3JtX3R5cGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fdHlwZT1mb3JtX3R5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5TaG93Rm9ybVZpZXcoMSxmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZXR1cEthdGFseW9TdGF0ZU1hbmFnZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKFwidGFza0RlZmluaXRpb25TdGF0ZVwiKyRzY29wZS5yZXNvdXJjZUlkLFwiZm9ybVR5cGVDaGFuZ2VkXCIsZm9ybV90eXBlKVxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuc2hvd0hpZGVQcm9wZXJ0aWVzID0gZnVuY3Rpb24odmFsdWUpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5zZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2hvd0ZpZWxkUHJvcGVydGllcz0kc2NvcGUuZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzT3BlbmVkKCk7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAkc2NvcGUuJHdhdGNoKCdnc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKScsZnVuY3Rpb24obmV3VmFsdWUsb2xkVmFsdWUpe1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZSE9b2xkVmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRGaWVsZD0kc2NvcGUuZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zaG93RmllbGRQcm9wZXJ0aWVzID0gJHNjb3BlLmdzcnZjLmdldEZpZWxkUHJvcGVydGllc09wZW5lZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICRzY29wZS4kd2F0Y2goJ2dzcnZjLmdldEZpZWxkUHJvcGVydGllcygpJyxmdW5jdGlvbihuZXdWYWx1ZSxvbGRWYWx1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlIT1vbGRWYWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZEZpZWxkPSRzY29wZS5nc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNob3dGaWVsZFByb3BlcnRpZXMgPSAkc2NvcGUuZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzT3BlbmVkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgXHJcbiAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgIC8vc2F2ZSB0YXNrIHBhcmFtZXRlcnNcclxuICAgICAgLypcclxuICAgICAgJHNjb3BlLnNhdmVUYXNrUGFyYW1ldGVycyA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIFRhc2tEYXRhU2VydmljZS5TYXZlVGFza1BhcmFtZXRlcnMoJHNjb3BlLnRhc2tEZWZpbml0aW9uLmlkLCRzY29wZS50YXNrRGVmaW5pdGlvbikudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLm1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLmZvcm1fdHlwZT0kc2NvcGUuZm9ybVR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza09yaWdpbmFsPWFuZ3VsYXIuY29weSgkc2NvcGUudGFza0RlZmluaXRpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5jYkF1dG9Jbml0aWF0ZUNoYW5nZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuY2JBdXRvRXhlY3V0ZUNoYW5nZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgXHJcbiAgICAgIH07XHJcbiAgICAgICAgIFxyXG4gICAgICAqL1xyXG5cclxuICBcclxuICBcclxuICAvKlxyXG4gICAgICAgICAgICAgJHNjb3BlLmdldFRhc2tQYXJhbWV0ZXJzID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5HZXRUYXNrUGFyYW1ldGVycygkc2NvcGUucmVzb3VyY2VJZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICRzY29wZS5hYy5hbGVydHMgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEubGVuZ3RoPjApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza0RlZmluaXRpb24gPSBkYXRhWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza0RlZmluaXRpb24uZm9ybV90eXBlPSRzY29wZS5mb3JtVHlwZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLmZvcm1fZGVmaW5pdGlvbj10cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdldFJlc291cmNlRm9ybSgpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkc2NvcGUudGFza0RlZmluaXRpb24uSW5maW5pdGVUYXNrKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2dldCBUYXNrIE91dGNvbWVzIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS50YXNrRGVmaW5pdGlvbi5UYXNrT3V0Y29tZUhlYWRJZCA9PSBudWxsIHx8ICRzY29wZS50YXNrRGVmaW5pdGlvbi5UYXNrT3V0Y29tZUhlYWRJZD09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLlRhc2tPdXRjb21lSGVhZElkPTA7IC8vdmlkamV0aSBkYSBsaSBvdm8gdHJlYmEgTUlHT1JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1Rhc2tEYXRhU2VydmljZS5HZXRUYXNrQ29kZXNBY3Rpb25zQnlJZCgkc2NvcGUucmVzb3VyY2VJZCxsYW5nLCRzY29wZS50YXNrRGVmaW5pdGlvbi5UYXNrT3V0Y29tZUhlYWRJZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZvcm1fdHlwZT09PVwiZVwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYXNrRGF0YVNlcnZpY2UuR2V0VGFza091dGNvbWVzKCRzY29wZS5yZXNvdXJjZUlkLCRzY29wZS50YXNrRGVmaW5pdGlvbi5UYXNrT3V0Y29tZUhlYWRJZCxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm91dGNvbWVzLm91dGNvbWVDb2Rlc0RldGFpbHMgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50YXNrRGVmaW5pdGlvbiA9IHtvdXRjb21lczp7b3V0Y29tZUNvZGVzRGV0YWlsczpkYXRhLmRhdGF9fTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9wcmlrYXppIGRlZmF1bHRubyBkZXRhbGplIG9kIHBydm9nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCRzY29wZS5vdXRjb21lcy5vdXRjb21lQ29kZXNEZXRhaWxzLmxlbmd0aD4wKSAgICRzY29wZS5jbGlja2VkT3V0Y29tZSA9ICRzY29wZS5vdXRjb21lcy5vdXRjb21lQ29kZXNEZXRhaWxzWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICB9O1xyXG4gICAgICAgICovICAgICAgICBcclxuICAgICBcclxuXHJcbiAgICAgICAgICAgICRzY29wZS5mb3JtRnJvbVNlcnZlckxvYWRlZCA9IHt9O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5nZXRSZXNvdXJjZUZvcm0gPSBmdW5jdGlvbiAoYWZ0ZXJTYXZlLGFmdGVyU2F2ZU1zZykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoISRzY29wZS5mb3JtRnJvbVNlcnZlckxvYWRlZFskc2NvcGUuZm9ybVR5cGVdKVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VGb3JtKCRzY29wZS5yZXNvdXJjZUlkLCRzY29wZS5mb3JtVHlwZSxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzb3VyY2VGb3JtRGF0YSA9IGRhdGEuZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24gPSByZXNvdXJjZUZvcm1EYXRhLnJlc291cmNlRGVmaW5pdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5HZXRXaWRnZXRUb29sYm94KCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VDb2RlKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHdpZGdldERhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5nc3J2Yy50YXNrVG9vbGJveEl0ZW1zPT11bmRlZmluZWQgfHwgJHNjb3BlLmdzcnZjLnRhc2tUb29sYm94SXRlbXMubGVuZ3RoPT0wKSAgICRzY29wZS5nc3J2Yy5zZXRUYXNrVG9vbGJveEl0ZW1zKHdpZGdldERhdGEuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNvdXJjZUZvcm1EYXRhLndpZGdldHMubGVuZ3RoPjApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhc2hib2FyZFskc2NvcGUuZm9ybVR5cGVdPXt3aWRnZXRzOntsYXlvdXQ6cmVzb3VyY2VGb3JtRGF0YS53aWRnZXRzfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhc2hib2FyZFskc2NvcGUuZm9ybVR5cGVdID0ge3dpZGdldHM6e2xheW91dDokc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlJlc291cmNlRXh0ZW5kZWQuRGVmYXVsdEZvcm19fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtVmVyc2lvbiBbJHNjb3BlLmZvcm1UeXBlXSA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uRm9ybVZlcnNpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLmdzcnZjLnNldFRhc2tGb3JtVmVyc2lvbigkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmlkKyRzY29wZS5mb3JtVHlwZSwkc2NvcGUuZm9ybVZlcnNpb25bJHNjb3BlLmZvcm1UeXBlXSk7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0VGFza0Zvcm1WZXJzaW9uKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uaWQgKyAkc2NvcGUuZm9ybVR5cGUse1ZlcnNpb246JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5WZXJzaW9uLFB1Ymxpc2hlZDokc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlB1Ymxpc2hlZCxOZXdWZXJzaW9uOiRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uTmV3VmVyc2lvbn0pOyAgXHJcbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zPXtmb3JtVmlld1R5cGU6MSxzaG93R3JpZE5hdmlnYXRpb246ZmFsc2V9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmdzcnZjLmZvcm1Mb2NrZWQgPT0gdHJ1ZSkgICAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlID0gMjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybUxvYWRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybUZyb21TZXJ2ZXJMb2FkZWRbJHNjb3BlLmZvcm1UeXBlXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5TaG93Rm9ybVZpZXcoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSxmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZGVidWdnZXI7IC8vZ2V0UmVzb3VyY2VGb3JtIG1pZ29yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFmdGVyU2F2ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoYWZ0ZXJTYXZlTXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgXHJcblxyXG4gICAgJHNjb3BlLm5ld1ZlcnNpb24gPSBmdW5jdGlvbigpXHJcbiAgICB7XHJcbiAgICAgICAgJHNjb3BlLmNyZWF0aW5nTmV3VmVyc2lvbj10cnVlXHJcbiAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuU2V0TmV3UmVzb3VyY2VWZXJzaW9uKCRzY29wZS5yZXNvdXJjZUlkKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXR1cz09MjAwKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5OZXdWZXJzaW9uID0gZGF0YS5kYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUHVibGlzaGVkPWZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtVmVyc2lvbiBbJHNjb3BlLmZvcm1UeXBlXSA9IHtOZXdWZXJzaW9uOmRhdGEuZGF0YSxQdWJsaXNoZWQ6ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5zZXRUYXNrRm9ybVZlcnNpb24oJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5pZCskc2NvcGUuZm9ybVR5cGUsJHNjb3BlLmZvcm1WZXJzaW9uWyRzY29wZS5mb3JtVHlwZV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1lbHNlIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEsJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmNyZWF0aW5nTmV3VmVyc2lvbj1mYWxzZVxyXG4gICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jcmVhdGluZ05ld1ZlcnNpb249ZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgfTtcclxuICAgICAgICBcclxuICAgICRzY29wZS5nZXRfcHVibGlzaGVkX3Jlc291cmNlX2Zvcm1zPWZ1bmN0aW9uKCl7ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UHVibGlzaGVkUmVzb3VyY2VzKCRzY29wZS5yZXNvdXJjZUlkKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7ICAgICAgIFxyXG4gICAgICAgICAgICRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZXMgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAkc2NvcGUuZ2V0X3B1Ymxpc2hlZF9yZXNvdXJjZV9mb3JtcygpOyAgIFxyXG4gICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICAgICAgLy8gICAgICAgICAgIFNBVkUgVEFTSyBGT1JNIERFRklOSVRJT05cclxuICAgICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICRzY29wZS5zaG93U2F2ZU1vZGFsID0gZnVuY3Rpb24gKHBfdHlwZSkge1xyXG4gICAgICAgLy9QT1NUIHB1Ymxpc2gtcmVzb3VyY2UgLCByZXNvdXJjZV9pZCwgdmVyc2lvbiBpIGRlc2NyaXB0aW9uXHJcbiAgICAgICAgLy8kc2NvcGUuc2F2ZU1vZGFsPXRydWU7XHJcbiAgICAgICAgJCgnI3Rhc2tQdWJsaXNoJykubW9kYWwoJ3Nob3cnKTsgXHJcbiAgICAgICAgJHNjb3BlLnNhdmVPclB1Ymxpc2g9J3NhdmUnXHJcbiAgICAgICAgJHNjb3BlLm5ld1B1Ymxpc2hWZXJzaW9uID0gICRzY29wZS5nc3J2Yy5yZXNvdXJjZUZvcm1WZXJzaW9uWyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uaWQrJHNjb3BlLmZvcm1UeXBlXS5OZXdWZXJzaW9uXHJcblxyXG4gICAgICAgIFxyXG4gICAgfVxyXG4gICAgICAgICRzY29wZS5zYXZlVGFza0Zvcm0gPSBmdW5jdGlvbiAoZm9ybSkge1xyXG5cclxuICAgICAgICAgICAgaWYgKGZvcm0uJHZhbGlkKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICRzY29wZS5hY3Rpdml0eS5hY3Rpdml0eU1lc3NhZ2UgPSBQcm9jZXNzaW5nU2VydmljZS5zZXRBY3Rpdml0eU1zZygnU2F2aW5nIHRhc2sgZm9ybSBmb3IgJyskc2NvcGUucmVzb3VyY2VJZCk7XHJcbiAgICAgICAgICAgICAgICRzY29wZS5zYXZpbmdUYXNrRm9ybSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICQoJyN0YXNrUHVibGlzaCcpLm1vZGFsKCdoaWRlJykgXHJcbiAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLnNhdmVSZXNvdXJjZUZvcm0oJHNjb3BlLmRhc2hib2FyZFskc2NvcGUuZm9ybVR5cGVdLndpZGdldHMubGF5b3V0LCRzY29wZS5yZXNvdXJjZUlkLCRzY29wZS5mb3JtVHlwZSwkc2NvcGUubG9jYWxWYXJzLm5ld0Rlc2NyaXB0aW9uKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEubXNnLGRhdGEubXNnVHlwZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybVZlcnNpb24gWyRzY29wZS5mb3JtVHlwZV0gPSB7VmVyc2lvbjpkYXRhLnZlcnNpb24sUHVibGlzaGVkOnRydWV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLkZvcm1WZXJzaW9uPXtWZXJzaW9uOmRhdGEudmVyc2lvbn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5zZXRUYXNrRm9ybVZlcnNpb24oJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5pZCskc2NvcGUuZm9ybVR5cGUsJHNjb3BlLmZvcm1WZXJzaW9uWyRzY29wZS5mb3JtVHlwZV0pOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbihmb3JtRGVmaW5pdGlvblN0YXRlTmFtZSxcImZvcm1TYXZlZFwiLGRhdGEubmV3X2l0ZW1zKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zYXZpbmdUYXNrRm9ybSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlbWVtYmVyVGFza0Zvcm1GbiA9ICRzY29wZS50ZHMuc2hvd1Rhc2tGb3JtRm4oKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhLmZvcm1EYXRhLmxlbmd0aD4wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhc2hib2FyZFskc2NvcGUuZm9ybVR5cGVdPXt3aWRnZXRzOntsYXlvdXQ6ZGF0YS5kYXRhLmZvcm1EYXRhfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGRzLnNob3dIaWRlVGFza0Zvcm0oJycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGRzLnNob3dIaWRlVGFza0Zvcm0ocmVtZW1iZXJUYXNrRm9ybUZuKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgXHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybUxvYWRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1Gcm9tU2VydmVyTG9hZGVkWyRzY29wZS5mb3JtVHlwZV0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdldF9wdWJsaXNoZWRfcmVzb3VyY2VfZm9ybXMoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgJHRpbWVvdXQoZnVuY3Rpb24oKXsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICRzY29wZS5TaG93Rm9ybVZpZXcoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSxmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNhdmluZ1Rhc2tGb3JtID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAgIC8vICAgICAgICAgICBTQVZFIFRBU0sgQlVUVE9OU1xyXG4gICAgICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgICAgICAgJHNjb3BlLnNhdmVUYXNrQnRucyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIC8vJHNjb3BlLmFjdGl2aXR5LmFjdGl2aXR5TWVzc2FnZSA9IFByb2Nlc3NpbmdTZXJ2aWNlLnNldEFjdGl2aXR5TXNnKCdTYXZpbmcgdGFzayBidG5zIGZvciAnKyRzY29wZS5yZXNvdXJjZUlkKTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5TYXZlVGFza0J0bnMoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5pbml0VGFza0J0bkRlZiwkc2NvcGUucmVzb3VyY2VJZCxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLiRvbignQ3RybFBCUHJlc3NlZCcsZnVuY3Rpb24oZXZlbnQsZGF0YSl7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdmFyIGtleT1kYXRhO1xyXG4gICAgICAgICAgICAgICAgaWYgKGtleT09J2InIHx8IGtleT09J0InKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlIT0xKSAkc2NvcGUuU2hvd0Zvcm1WaWV3KDEpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChrZXk9PSdwJyB8fCBrZXk9PSdQJylcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSE9MikgJHNjb3BlLlNob3dGb3JtVmlldygyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0pOyAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAgIC8vICAgICAgICAgICBDQUxMIEZVTkNUSU9OUyBGT1IgRkVUQ0hJTkcgVEFTSyBGT1JNLCBQQVJBTUVURVJTLCBPVVRDT01FU1xyXG4gICAgICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAkc2NvcGUuJHdhdGNoKCd0ZHMuc2hvd1Rhc2tGb3JtRm4oKScsZnVuY3Rpb24obmV3VmFsdWUsb2xkVmFsdWUpe1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybVR5cGUgPSBuZXdWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24oXCJ0YXNrVG9vbEJveFwiLFwidG9vbGJveExvYWRlZFwiLHt3aWRnZXRfaWQ6bnVsbCxzdGF0ZTpmYWxzZX0pO1xyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZUlkICE9IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5nZXRUYXNrUGFyYW1ldGVycygpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG59O1xuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24ga3RUYXNrZm9ybWxheW91dCAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxuICAgICAgICAgICAgXG5cdFx0XHRjb250cm9sbGVyOiBmdW5jdGlvbiAoJHNjb3BlLGRyYWd1bGFTZXJ2aWNlLCRyb290U2NvcGUsV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZSxHcmlkc3RlclNlcnZpY2UsJGNvbXBpbGUsJGVsZW1lbnQsJHRlbXBsYXRlQ2FjaGUpIHtcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgJHNjb3BlLkNUUkw9XCJrdFRhc2tmb3JtbGF5b3V0XCJcblx0XHRcdFx0JHNjb3BlLnJlbW92ZUZpZWxkID0gZnVuY3Rpb24gKGluZGV4KXtcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKFwiUkVNT1ZFIEZJRUxEIFwiK2luZGV4KTtcblx0XHRcdFx0XHRcdGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLmRlUmVnaXN0ZXJXaWRnZXQoJHNjb3BlLmlucHV0QXJyYXkubGF5b3V0W2luZGV4XS5Mb2NhbElkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmlucHV0QXJyYXkubGF5b3V0W2luZGV4XS5TYXZlZD09dHJ1ZSAmJiAkc2NvcGUuaW5wdXRBcnJheS5sYXlvdXRbaW5kZXhdLlByZXNlbnRhdGlvbklkIT1udWxsICYmICRzY29wZS5pbnB1dEFycmF5LmxheW91dFtpbmRleF0uUHJlc2VudGF0aW9uSWQhPXVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdFx0XHRcdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmlucHV0QXJyYXkubGF5b3V0W2luZGV4XS5TdGF0dXM9XCJEZWxldGVkXCI7XG5cdFx0XHRcdFx0XHRcdCB9ZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5pbnB1dEFycmF5LmxheW91dC5zcGxpY2UoaW5kZXgsMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdH07XG4gICAgICAgICAgICAgICAgXG4gICAgICAgXG4gICAgICAgICAgICAgICAgbGV0IHRlbXBsYXRlO1xuICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uKSB0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZUNhY2hlLmdldCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrRm9ybUxheW91dC5odG1sJyk7XG4gICAgICAgICAgICAgICBlbHNlIHRlbXBsYXRlID0gJHRlbXBsYXRlQ2FjaGUuZ2V0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tGb3JtTGF5b3V0RXhlLmh0bWwnKTtcbiAgICAgICAgICBcbiAgICAgICAgICAgICAgICRlbGVtZW50LmFwcGVuZCgkY29tcGlsZSh0ZW1wbGF0ZSkoJHNjb3BlKSk7XG5cblx0XHRcdH0sXG5cdFx0XHQgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xuXG4gICAgICAgICAgICAgICAgaWYgKHNjb3BlLmlucHV0QXJyYXkubGF5b3V0PT11bmRlZmluZWQgfHwgc2NvcGUuaW5wdXRBcnJheS5sYXlvdXQ9PW51bGwpIHNjb3BlLmlucHV0QXJyYXkubGF5b3V0ID0gW107XG4gICAgICAgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG59O1xuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24ga3RUYXNrRm9yUGFnZSAoKSB7XG4gICAgICAgIHZhciBjb250cm9sbGVyID0gWyckc2NvcGUnLCAnJHN0YXRlUGFyYW1zJywnJHN0YXRlJywnJHJvb3RTY29wZScsJ0dyaWRzdGVyU2VydmljZScsJ1dpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UnLCdSZXNvdXJjZXNEYXRhU2VydmljZScsJ0thdGFseW9TdGF0ZU1hbmFnZXInLCckdGVtcGxhdGVDYWNoZScsJyRjb21waWxlJywnJGVsZW1lbnQnLCdUYXNrRGVmaW5pdGlvblNlcnZpY2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkc2NvcGUsJHN0YXRlUGFyYW1zLCRzdGF0ZSwkcm9vdFNjb3BlLEdyaWRzdGVyU2VydmljZSxXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLEthdGFseW9TdGF0ZU1hbmFnZXIsJHRlbXBsYXRlQ2FjaGUsJGNvbXBpbGUsJGVsZW1lbnQsVGFza0RlZmluaXRpb25TZXJ2aWNlKSB7XG5cbiAgICAgICAgJHNjb3BlLkNUUkw9XCJrdFRhc2tGb3JQYWdlXCJcbiAgICAgICAgbGV0IGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZ1xuICAgICAgICBpZiAoJHNjb3BlLmZkPT11bmRlZmluZWQpICRzY29wZS5mZD17fTtcbiAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnM9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLmxvY2FsVmFycz17fTsgICAgICAgICAgICAgXG4gICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uPT11bmRlZmluZWQpICRzY29wZS5yZXNvdXJjZURlZmluaXRpb249e307ICAgICAgICAgICAgXG4gICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLnByZXZpb3VzVGFzaz09dW5kZWZpbmVkKSAkc2NvcGUuZmQubG9jYWxWYXJzLnByZXZpb3VzVGFzayA9IDA7XG4gICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLm91dGNvbWVJZD09dW5kZWZpbmVkKSAkc2NvcGUuZmQubG9jYWxWYXJzLm91dGNvbWVJZCA9IDA7XG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMubG9hZFRhc2tEaXJlY3QgPSB0cnVlO1xuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnRhc2tEZWZpbml0aW9uID0ge307XG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMudGFza0RlZmluaXRpb24ucGFnZV9zdGF0ZV9pZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZV9zdGF0ZV9pZFxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnRhc2tJZCA9ICRzY29wZS5mZC5QYXJhbWV0ZXJzPy50YXNrRGVmSWQ/LmlkXG4gICAgICAgICRzY29wZS5rc20gPSBLYXRhbHlvU3RhdGVNYW5hZ2VyXG4gICAgICAgICRzY29wZS50ZHMgPSBUYXNrRGVmaW5pdGlvblNlcnZpY2VcbiAgICAgICAgJHNjb3BlLmdzcnZjPUdyaWRzdGVyU2VydmljZVxuICAgICAgICBcbiAgICAgICAgbGV0IHdpZGdldERlZmluaXRpb24gPSB7bmFtZTogJ3Rhc2tGb3JQYWdlJyx3aWRnZXRJZDogJHNjb3BlLmZkLkxvY2FsSWQsdGFza0lkOiAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5pZCB9O1xuICAgICAgICAkc2NvcGUuZmQuTG9jYWxJZD1XaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnJlZ2lzdGVyV2lkZ2V0KHdpZGdldERlZmluaXRpb24pO1xuICAgICAgICBcbiAgICAgICAgbGV0IGRlcGVuZGVudF9maWVsZF9waWQgPSAkc2NvcGUuZmQuTG9jYWxJZDtcbiAgICAgICAgbGV0IHN1YnNjcmliZWRTdWJqZWN0UGlkID0gXCJmb3JtRGVmaW5pdGlvblN0YXRlXCIrJHNjb3BlLnRhc2tJZCskc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fdHlwZTtcbiAgICAgICAgbGV0IGRlcGVuZGVudF9maWVsZF9waWQyXG4gICAgICAgICAgICAgXG4gICAgICAgIGxldCB1cGRhdGVfcHJlc2VudGF0aW9uX2lkMiA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgIGxldCBwcmVzZW50YXRpb25faWQgPSBhbmd1bGFyLmNvcHkoJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkKVxuICAgICAgICAgICAgaWYgKGRhdGFbcHJlc2VudGF0aW9uX2lkXSE9PXVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQgPSBkYXRhW3ByZXNlbnRhdGlvbl9pZF07XG4gICAgICAgICAgICAgICAgLy91bnN1YnNjcmliZSBoZXJlIGxhdGVyIGFmdGVyIGltcGxlbWVudGluZyB1bnN1YnNjcmliZSAtIFRvRG9cbiAgICAgICAgICAgICAgICBkZXBlbmRlbnRfZmllbGRfcGlkMiA9ICRzY29wZS5mZC5QcmVzZW50YXRpb25JZFxuICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlclBpZDIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdFBpZCxkZXBlbmRlbnRfZmllbGRfcGlkMixcImZvcm1TYXZlZFwiLHVwZGF0ZV9wcmVzZW50YXRpb25faWQyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGxldCB1cGRhdGVfcHJlc2VudGF0aW9uX2lkID0gZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgaWYgKGRhdGFbJHNjb3BlLmZkLkxvY2FsSWRdPjAgJiYgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT0wICYmIGRhdGFbJHNjb3BlLmZkLkxvY2FsSWRdIT09dW5kZWZpbmVkKSAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQgPSBkYXRhWyRzY29wZS5mZC5Mb2NhbElkXTtcbiAgICAgICAgICAgIGxldCBvYnNlcnZlclBpZDIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdFBpZCxkZXBlbmRlbnRfZmllbGRfcGlkMixcImZvcm1TYXZlZFwiLHVwZGF0ZV9wcmVzZW50YXRpb25faWQyKTtcbiAgICAgICAgICAgIC8vdW5zdWJzY3JpYmUgaGVyZSBsYXRlciBhZnRlciBpbXBsZW1lbnRpbmcgdW5zdWJzY3JpYmUgLSBUb0RvXG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICAgICAgICAgXG5cbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy50b2dnbGVEcm9wZG93biA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93TWVudSA9ICAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dNZW51ID8gZmFsc2U6IHRydWUgXG4gICAgICAgIH1cblxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dQcm9wZXJ0aWVzPWZ1bmN0aW9uKGRhdGFzZXRNYXBwZXJUeXBlLHNob3dQcm9wZXJ0aWVzUmlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGUgPSBkYXRhc2V0TWFwcGVyVHlwZTtcbiAgICAgICAgICAgICB9ZWxzZSAge1xuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wIHx8ICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGUhPWRhdGFzZXRNYXBwZXJUeXBlKSBcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGUgPSBkYXRhc2V0TWFwcGVyVHlwZTtcbiAgICAgICAgICAgICAgICBlbHNlIFxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPTA7XG4gICAgICAgICAgICAgfVxuICAgICAgICAgICAgIGlmIChzaG93UHJvcGVydGllc1JpZ2h0KSAkc2NvcGUuZ3NydmMuc2V0RmllbGRQcm9wZXJ0aWVzKCRzY29wZS5mZCk7ICAgICAgICAgICAgXG4gICAgICAgICB9ICBcblxuXG4gICAgICAgIC8vICoqKioqKioqKioqKioqICBFWEVDVVRFIE9OIElOSVQgKioqKioqKioqKioqKioqKlxuICAgICAgICBcbiAgICAgICAgaWYgKCRzY29wZS5mZC5QcmVzZW50YXRpb25JZD09PW51bGwgfHwgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT09MCkge1xuICAgICAgICAgICAgbGV0IG9ic2VydmVyUGlkID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3RQaWQsZGVwZW5kZW50X2ZpZWxkX3BpZCxcImZvcm1TYXZlZFwiLHVwZGF0ZV9wcmVzZW50YXRpb25faWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVwZW5kZW50X2ZpZWxkX3BpZDIgPSAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWRcbiAgICAgICAgICAgIGxldCBvYnNlcnZlclBpZDIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdFBpZCxkZXBlbmRlbnRfZmllbGRfcGlkMixcImZvcm1TYXZlZFwiLHVwZGF0ZV9wcmVzZW50YXRpb25faWQyKTtcbiAgICAgICAgfVxuXG4gXG4gICAgXG4gICAgICAgICBsZXQgdGVtcGxhdGU7XG4gICAgICAgICB0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZUNhY2hlLmdldCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrRm9yUGFnZS5odG1sJyk7XG4gICAgICAgICAgICAgXG4gICAgICAgICAgXG4gICAgICAgICAkZWxlbWVudC5hcHBlbmQoJGNvbXBpbGUodGVtcGxhdGUpKCRzY29wZSkpO1xuXG4gICAgICAgfV07XG4gICAgICAgICAgXG4gICAgICAgICAgXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxuICAgICAgICAgICAgY29udHJvbGxlcjpjb250cm9sbGVyLFxuICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcbiAgICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgfVxuICAgICAgICB9ICAgICAgICAgICAgIFxufTtcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGt0VGFza0ludGVncmF0aW9uV2lkZ2V0ICgpIHtcbiAgIFxuICAgdmFyIGNvbnRyb2xsZXIgPSBbJyRzY29wZScsICckdWliTW9kYWwnLCAnJHN0YXRlUGFyYW1zJywnJHN0YXRlJywnJHRpbWVvdXQnLCdDb2Rlc1NlcnZpY2UnLCdSZXNvdXJjZXNEYXRhU2VydmljZScsJyRyb290U2NvcGUnLCdDT0RFU19DT05TVCcsJ1Byb2Nlc3NpbmdTZXJ2aWNlJywnTWVzc2FnaW5nU2VydmljZScsJ0dyaWRzdGVyU2VydmljZScsJ1Rhc2tEYXRhU2VydmljZScsJ1dpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UnLCdLYXRhbHlvU3RhdGVNYW5hZ2VyJywnVXRpbGl0eVNlcnZpY2UnLCckdGVtcGxhdGVDYWNoZScsJyRjb21waWxlJywnJGVsZW1lbnQnLFxuICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCRzY29wZSwkdWliTW9kYWwsJHN0YXRlUGFyYW1zLCRzdGF0ZSwkdGltZW91dCxDb2Rlc1NlcnZpY2UsUmVzb3VyY2VzRGF0YVNlcnZpY2UsJHJvb3RTY29wZSxDT0RFU19DT05TVCxQcm9jZXNzaW5nU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSxUYXNrRGF0YVNlcnZpY2UsV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZSxLYXRhbHlvU3RhdGVNYW5hZ2VyLFV0aWxpdHlTZXJ2aWNlLCR0ZW1wbGF0ZUNhY2hlLCRjb21waWxlLCRlbGVtZW50KSB7XG4gICAgIFxuICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlO1xuICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG4gICAgICAkc2NvcGUubG9jYWxWYXJzLndpZGdldFR5cGUgPSA1O1xuICAgICAgJHNjb3BlLmZkLlBvcHVsYXRlVHlwZSA9IFwiNFwiO1xuICAgICAgJHNjb3BlLmxvY2FsVmFycy5mb3JtUGFyYW1zPXtmb3JtVmlld1R5cGU6MSxzaG93R3JpZE5hdmlnYXRpb246dHJ1ZX07XG4gICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhPT11bmRlZmluZWQpICRzY29wZS5mb3JtRGF0YT17fTtcbiAgICAgIGlmICgkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXT09dW5kZWZpbmVkKSAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXT1be31dO1xuICAgICAgXG4gICAgICAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPTA7XG4gICAgICAgICAgIFxuICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkc3RlclR5cGU9XCJyZXNvdXJjZVwiO1xuICAgICAgICAgIC8vICRzY29wZS5ncmlkc3Rlck9wdHMgPSBHcmlkc3RlclNlcnZpY2UuZ2V0R3JpZHN0ZXJPcHRpb25zKCk7XG4gICAgXG4gICAgXG4gICAgICAgIFxuICAgICAgJHNjb3BlLmxvY2FsVmFycy5kYXNoYm9hcmQgPSB7XG4gIFx0XHRcdFx0aWQ6ICcxJyxcbiAgXHRcdFx0XHRuYW1lOiAnSG9tZScsXG4gIFx0XHRcdFx0d2lkZ2V0czogW11cbiAgICAgIH0gO1xuICAgICAgXG4gICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMgPT0gdW5kZWZpbmVkKSAkc2NvcGUubG9jYWxWYXJzPXt9O1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dNZW51ID0gZmFsc2VcbiAgICAgIFxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnRvZ2dsZURyb3Bkb3duID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2hvd01lbnUgPSAgJHNjb3BlLmxvY2FsVmFycy5zaG93TWVudSA/IGZhbHNlOiB0cnVlIFxuICAgICAgICAgfVxuICAgICAgICBcbiAgICBcbiAgXG4gICAgICAvLyRzY29wZS50YXNrSWQ9JHN0YXRlUGFyYW1zLmlkO1xuICAgICAgJHNjb3BlLnRhc2tJZD0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlJlc291cmNlRGVmSWQ7XG4gICAgICBpZiAoJHNjb3BlLnRhc2tJZD09dW5kZWZpbmVkKSAgJHNjb3BlLnRhc2tJZD0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlJlc291cmNlRGVmSWRfaWQ7XG4gICAgICBpZiAoJHNjb3BlLnRhc2tJZD09dW5kZWZpbmVkKSAkc2NvcGUudGFza0lkPTA7XG4gICAgICAkc2NvcGUubG9jYWxWYXJzLnRhc2tJZD0kc2NvcGUudGFza0lkO1xuICAgICAgJHNjb3BlLmZkLlBhcmVudERhdGFzZXREZWZJZD0kc2NvcGUuZmQuUmVsYXRlZDtcbiAgICAgICRzY29wZS5wcmV2VGFza0V4ZUlkID0gICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucHJldl90YXNrX2lkO1xuICAgICAgJHNjb3BlLmxvY2FsVmFycy5mb3JtVHlwZT0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fdHlwZTtcbiAgICAgICRzY29wZS5zb3VyY2VfdHlwZT0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnNvdXJjZV90eXBlO1xuICAgICAgJHNjb3BlLnRhc2tJbml0aWF0ZUlkID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50YXNrX2luaXRpYXRlX2lkO1xuICAgICAgJHNjb3BlLnRhc2tFeGVjdXRlSWQgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRhc2tfZXhlY3V0ZV9pZDtcbiAgICAgICRzY29wZS5mb3JtRGVmaW5pdGlvbiA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uO1xuICAgICAgXG4gICAgICAgaWYgICgkc2NvcGUuZm9ybURlZmluaXRpb249PXVuZGVmaW5lZCkgJHNjb3BlLmZvcm1EZWZpbml0aW9uPWZhbHNlO1xuICAgICAgICBcbiAgICAgICRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZD0wO1xuICAgICAgaWYgKCRzY29wZS50YXNrSW5pdGlhdGVJZD09dW5kZWZpbmVkKVxuICAgICAge1xuICAgICAgICAkc2NvcGUudGFza0luaXRpYXRlSWQgPTA7XG4gICAgICBcbiAgICAgIH1cbiAgICAgIGlmICgkc2NvcGUudGFza0V4ZWN1dGVJZD09dW5kZWZpbmVkKVxuICAgICAge1xuICAgICAgICAgJHNjb3BlLnRhc2tFeGVjdXRlSWQgPTA7ICBcbiAgICAgIH1cbiAgICAgICAgaWYgKCRzY29wZS5wcmV2VGFza0V4ZUlkPT11bmRlZmluZWQpXG4gICAgICAgIHtcbiAgICAgICAgICAgICRzY29wZS5wcmV2VGFza0V4ZUlkID0wO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgLy9yZWdpc3RlciB3aWRnZXQgXG4gICAgICB2YXIgb3V0X2ZpZWxkcyA9IFsncmVzb3VyY2VJZCddO1xuICAgICAgLy9pZiAoJHNjb3BlLmZkLkxvY2FsSWQ9PXVuZGVmaW5lZCB8fCAkc2NvcGUuZmQuTG9jYWxJZD09bnVsbCB8fCAkc2NvcGUuZmQuTG9jYWxJZD09MClcbiAgICAgIC8ve1xuICAgICAgICAgdmFyIHdpZGdldERlZmluaXRpb24gPSB7REVJOiBbeyduYW1lJzoncmVzb3VyY2VMaW5rJywndmFsdWUnOlt7bmFtZToncmVzb3VyY2VJZCcsdmFsdWU6JHNjb3BlLmZkLlJlbGF0ZWR9LHtuYW1lOidyZXNvdXJjZVJlY29yZElkJyx2YWx1ZTonJ31dfV0sYWN0aW9uczogW3tuYW1lOidQcmVwYXJlRGF0YScsc3RhdHVzOmZhbHNlfV0sbmFtZTogJ3ZpZXdSZXNvdXJjZVdpZGdldCcsd2lkZ2V0SWQ6ICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCx0YXNrX2luaXRpYXRlX2lkOiRzY29wZS50YXNrSW5pdGlhdGVJZCx0YXNrX2V4ZWN1dGVfaWQ6JHNjb3BlLnRhc2tFeGVjdXRlSWQsdGFza0lkOiAgJHNjb3BlLmxUYXNrSWQscmVzb3VyY2VEZWZJZCA6ICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZSwgb3V0cHV0Om91dF9maWVsZHMsIH07XG4gICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmxvY2FsV2lkZ2V0SWQgPSBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnJlZ2lzdGVyV2lkZ2V0KHdpZGdldERlZmluaXRpb24pO1xuICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5Mb2NhbElkPSRzY29wZS5sb2NhbFZhcnMubG9jYWxXaWRnZXRJZDtcbiAgICAgICAgICRzY29wZS5mZC5Mb2NhbElkPSRzY29wZS5sb2NhbFZhcnMubG9jYWxXaWRnZXRJZDtcbiAgICAgICAgIC8vJHNjb3BlLmZkLkxvY2FsSWQ9VXRpbGl0eVNlcnZpY2UudXVpZE5vdygpO1xuICAgICAgICAgXG4gICAgICAvL31cbiAgICAgICRzY29wZS5rc20gPSBLYXRhbHlvU3RhdGVNYW5hZ2VyO1xuICAgICAgXG4gICAgICBsZXQgZGVwZW5kZW50X2ZpZWxkX3BpZCA9ICRzY29wZS5mZC5Mb2NhbElkO1xuICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3RQaWQgPSBcImZvcm1EZWZpbml0aW9uU3RhdGVcIiskc2NvcGUudGFza0lkKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV90eXBlO1xuICAgICAgICBsZXQgZGVwZW5kZW50X2ZpZWxkX3BpZDJcbiAgICAgICAgbGV0IHVwZGF0ZV9wcmVzZW50YXRpb25faWQyID0gZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgbGV0IHByZXNlbnRhdGlvbl9pZCA9IGFuZ3VsYXIuY29weSgkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQpXG4gICAgICAgICAgICBpZiAoZGF0YVtwcmVzZW50YXRpb25faWRdIT09dW5kZWZpbmVkKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCA9IGRhdGFbcHJlc2VudGF0aW9uX2lkXTtcbiAgICAgICAgICAgIC8vdW5zdWJzY3JpYmUgaGVyZSBsYXRlciBhZnRlciBpbXBsZW1lbnRpbmcgdW5zdWJzY3JpYmUgLSBUb0RvXG4gICAgICAgICAgICBkZXBlbmRlbnRfZmllbGRfcGlkMiA9ICRzY29wZS5mZC5QcmVzZW50YXRpb25JZFxuICAgICAgICAgICAgbGV0IG9ic2VydmVyUGlkMiA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0UGlkLGRlcGVuZGVudF9maWVsZF9waWQyLFwiZm9ybVNhdmVkXCIsdXBkYXRlX3ByZXNlbnRhdGlvbl9pZDIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCB1cGRhdGVfcHJlc2VudGF0aW9uX2lkID0gZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgaWYgKGRhdGFbJHNjb3BlLmZkLkxvY2FsSWRdPjAgJiYgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT0wICYmIGRhdGFbJHNjb3BlLmZkLkxvY2FsSWRdIT09dW5kZWZpbmVkKSAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQgPSBkYXRhWyRzY29wZS5mZC5Mb2NhbElkXTtcbiAgICAgICAgICBcbiAgICAgICAgICAgIGxldCBvYnNlcnZlclBpZDIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdFBpZCxkZXBlbmRlbnRfZmllbGRfcGlkMixcImZvcm1TYXZlZFwiLHVwZGF0ZV9wcmVzZW50YXRpb25faWQyKTtcbiAgICAgICAgICAgIC8vdW5zdWJzY3JpYmUgaGVyZSBsYXRlciBhZnRlciBpbXBsZW1lbnRpbmcgdW5zdWJzY3JpYmUgLSBUb0RvXG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIFxuICAgICAgICBpZiAoJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT09bnVsbCB8fCAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PT0wKVxuICAgICAgICB7XG4gICAgICAgICAgICBsZXQgb2JzZXJ2ZXJQaWQgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdFBpZCxkZXBlbmRlbnRfZmllbGRfcGlkLFwiZm9ybVNhdmVkXCIsdXBkYXRlX3ByZXNlbnRhdGlvbl9pZCk7XG4gICAgICAgIH0gZWxzZXtcbiAgICAgICAgICAgIGRlcGVuZGVudF9maWVsZF9waWQyID0gJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXG4gICAgICAgICAgICBsZXQgb2JzZXJ2ZXJQaWQyID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3RQaWQsZGVwZW5kZW50X2ZpZWxkX3BpZDIsXCJmb3JtU2F2ZWRcIix1cGRhdGVfcHJlc2VudGF0aW9uX2lkMik7XG4gICAgICAgIH1cbiAgICAgICAgICAgICBcbiAgICAgIFxuICAgICAgIGxldCBhcHBseV92YWx1ZSA9IGZ1bmN0aW9uKGRhdGEpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCBkb19yZWZyZXNoPWZhbHNlO1xuICAgICAgICAgICAgaWYgKGRhdGEhPXVuZGVmaW5lZClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgIGlmIChkYXRhICE9ICRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZClcbiAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0nbnVtYmVyJykgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkPSBkYXRhO1xuICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSlcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aD4wKVxuICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZD0gZGF0YVswXS5pZCAgXG4gICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9ZWxzZVxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkID0gZGF0YS5pZDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGRvX3JlZnJlc2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9nZXQgc2VsZWN0ZWRSZWNvcmRcbiAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQgPT0gbnVsbCkgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkPTA7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQ+MCAmJiBkb19yZWZyZXNoKSAkc2NvcGUubG9jYWxWYXJzLmdldEZvcm1SZXNvdXJjZVdpdGhEYXRhKCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIFxuICAgICAgICB9O1xuICAgICAgICBcbiAgICAgIFxuICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzPT11bmRlZmluZWQpICRzY29wZS5mZC5QYXJhbWV0ZXJzPXt9O1xuICAgICAgXG4gICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuUmVmcmVzaE9uSWRDaGFuZ2UpXG4gICAgICB7XG4gICAgICAgICBcbiAgICAgICAgIC8vZmluZCBcbiAgICAgICAgIC8vc3Vic2NyaWJlIG9ic2VydmVyXG4gICAgICAgICAgIFxuICAgICAgICAgbGV0IGRlcGVuZGVudF9maWVsZCA9IFwiRmllbGRcIiskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ7XG4gICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSBcImludGVncmF0aW9uVmFsdWVTdGF0ZU5hbWVcIiskc2NvcGUuZmQuUGFyYW1ldGVycy5SZXNvdXJjZUlkSXRlbUlkKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udHJhbnNhY3Rpb25faWQ7XG4gICAgICAgICBsZXQgc3ViamVjdCA9ICRzY29wZS5rc20uYWRkU3ViamVjdChzdWJzY3JpYmVkU3ViamVjdCxudWxsKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgbGV0IG9ic2VydmVyID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3QsZGVwZW5kZW50X2ZpZWxkLFwidmFsdWVDaGFuZ2VkXCIsYXBwbHlfdmFsdWUpO1xuICAgICAgICAgbGV0IHZhbCA9ICRzY29wZS5rc20uZ2V0U3RhdGUoc3Vic2NyaWJlZFN1YmplY3QpO1xuICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkPSB2YWwuaWQ7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vZ2V0IHNlbGVjdGVkUmVjb3JkXG4gICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkID09IG51bGwpICRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZD0wO1xuICAgICAgICAgICAgXG4gICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkPjApICRzY29wZS5sb2NhbFZhcnMuZ2V0Rm9ybVJlc291cmNlV2l0aERhdGEoKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgXG4gICAgICAvL3N1YnNjcmliZSBvYnNlcnZlclxuICAgICAgaWYgKCRzY29wZS5mZD8uUG9wdWxhdGVUeXBlPy50b1N0cmluZygpLnN1YnN0cigwLDEpPT1cIjRcIilcbiAgICAgIHtcbiAgICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgICAgICoqKioqKioqKioqKioqKioqKiBTeW5jIGRhdGEgd2l0aCBTdGF0ZSBtYW5hZ2VyICoqKioqKioqKioqKioqKioqKioqKipcbiAgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuICAgICAgIFxuICAgICAgIFxuICAgICAgICBpZiAoJHNjb3BlLmZkLlNyY1dpZGdldElkIT11bmRlZmluZWQgJiYgJHNjb3BlLmZkLlNyY1dpZGdldElkIT1udWxsKVxuICAgICAgICBcbiAgICAgICAge1xuICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBsZXQgZGVwZW5kZW50X2ZpZWxkID0gXCJGaWVsZFwiKyRzY29wZS5mZC5TcmNXaWRnZXRJZDtcbiAgICAgICAgICAgICAgIC8vIGxldCBzdWJzY3JpYmVkU3ViamVjdCA9ICRzY29wZS5mZC5QYXJhbWV0ZXJzLlNyY1dpZGdldFR5cGUrXCJWYWx1ZVN0YXRlTmFtZVwiKyRzY29wZS5mZC5TcmNXaWRnZXRJZDtcbiAgICAgICAgICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSBcImludGVncmF0aW9uVmFsdWVTdGF0ZU5hbWVcIiskc2NvcGUuZmQuU3JjV2lkZ2V0SWQrJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50cmFuc2FjdGlvbl9pZDtcbiAgICAgICAgICAgICAgICBsZXQgb2JzZXJ2ZXIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdCxkZXBlbmRlbnRfZmllbGQsXCJ2YWx1ZUNoYW5nZWRcIixhcHBseV92YWx1ZSk7XG4gICAgICAgICAgICBcbiAgICAgICAgfSAgXG4gICAgICAgICBcbiAgICAgIH1cbiAgICAgIFxuICAgICAgICAvLyBNSUdPUiBET0RBTyAyLjYuMjAyMS0gUFJPVkpFUklUSSAtUE9QVU5JIExJU1RVIERFRklOSUNJSkEgT0QgUkVTVVJTQSAoUkVTT1VSQ0VTIExJU1QpXG4gICAgICAgICRzY29wZS5mZC5nZXRSZXNvdXJjZXMgPSBmdW5jdGlvbigpICB7XHRcdFx0XHRcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZUxpc3Q9PXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZUxpc3Q9W107XG4gICAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG4gICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZMaXN0QnlUeXBlKGxhbmcsJ2ludGVncmF0aW9uJykudGhlbihcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZUxpc3QgPSBkYXRhLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlc0xvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNldFNlbGVjdGVkSW50ZWdyYXRpb24oJHNjb3BlLmZkLlJlbGF0ZWQpO1xuICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcbiAgICAgICAgICAgICAgIH0pO1xuXHRcdFx0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAkc2NvcGUuZmQuZ2V0UmVzb3VyY2VzKCk7XG4gICAgICBsZXQgcmVmcmVzaF93aWRnZXRfZGF0YSA9IGZ1bmN0aW9uKClcbiAgICAgIFxuICAgICAge1xuICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5nZXRGb3JtUmVzb3VyY2VXaXRoRGF0YSgpOyAgICBcbiAgICAgICAgIFxuICAgICAgfVxuICAgICAgICAgICBcbiAgICAgICRzY29wZS5sb2NhbFZhcnMuc2hvd1Byb3BlcnRpZXM9ZnVuY3Rpb24oZGF0YXNldE1hcHBlclR5cGUpXG4gICAgICB7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT11bmRlZmluZWQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlID0gZGF0YXNldE1hcHBlclR5cGU7XG4gICAgICAgICAgICB9ZWxzZVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgJHNjb3BlLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSE9ZGF0YXNldE1hcHBlclR5cGUpICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGUgPSBkYXRhc2V0TWFwcGVyVHlwZTtcbiAgICAgICAgICAgICAgIGVsc2UgJHNjb3BlLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT0wO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICB9O1xuICAgICAgICAgICBcbiAgICAgICRzY29wZS5sb2NhbFZhcnMuc2V0RmllbGQgPSBmdW5jdGlvbihmb3JtLG5hbWUsdmFsdWUsbXNnKVxuICAgICAge1xuICAgICAgICAgVGFza0RhdGFTZXJ2aWNlLnNldEZpZWxkKGZvcm0sbmFtZSx2YWx1ZSk7XG4gICAgICAgICBpZiAobXNnKSBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UobXNnLCdpbmZvJyk7XG4gICAgICB9OyAgXG4gICAgICBcbiAgICAgICAkc2NvcGUubG9jYWxWYXJzLmNvbmZpcm1JbnRlZ3JhdGlvbiA9IGZ1bmN0aW9uKClcbiAgICAgIHtcbiAgICAgICAvLyAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5zcmNfdHlwZV90ZXh0ID0gJHNjb3BlLmxvY2FsVmFycy5zcmNfdHlwZV90ZXh0WyRzY29wZS5mZC5SZWxhdGVkUG9wdWxhdGVUeXBlXTtcbiAgICAgICAgICRzY29wZS5sb2NhbFZhcnMubmFtZV9jb25maXJtZWQgPSAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWUgKycgKCcrJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5pZCArJyknXG4gICAgICAgICAvLyRzY29wZS5mZC5Qb3B1bGF0ZVR5cGU9JHNjb3BlLmZkLlJlbGF0ZWRQb3B1bGF0ZVR5cGUrJHNjb3BlLmZkLmZvcm1Qcmlvcml0eTtcbiAgICAgIFxuICAgICAgICAgJHNjb3BlLmZkLlJlbGF0ZWQ9JHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5pZDtcbiAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0Rm9ybVJlc291cmNlKCk7XG4gICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmludGVncmF0aW9uQ29uZmlybWVkID0gdHJ1ZTtcbiAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmludGVncmF0aW9uQ29uZmlybWVkID0gZmFsc2U7XG4gICAgICAgICB9LDIwMDApO1xuICAgICAgfTsgIFxuXG4gICAgICBcbiAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0Rm9ybVJlc291cmNlT3JpZ2luYWwgPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT1udWxsKVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkID0gMDtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgbGV0IGRhdGFzZXRJZCA9ICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldEZvcm1QYXJhbXMuUGFyYW1ldGVycy5kYXRhc2V0LmlkO1xuICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZUZvcm0oZGF0YXNldElkLFwiaVwiLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbj0gZGF0YS5kYXRhLnJlc291cmNlRGVmaW5pdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YS5kYXRhLndpZGdldHMpKSAkc2NvcGUubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCA9ICBkYXRhLmRhdGEud2lkZ2V0cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC53SXRlbVZhbHVlPWRhdGEuZGF0YS53aWRnZXRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL01JR09SIC0gYml0bm8gLSBET0JJTyBSRVNPVVJDRVJFQ09SRC1JRCBaQSBCUk9BRENBU1QgIC0gQUREX1JFU09VUkNFIFdJREdFVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnNldERhdGEoe3dpZGdldElkOiRzY29wZS5mZC5QcmVzZW50YXRpb25JZCwgREVJOiBbeyduYW1lJzoncmVzb3VyY2VMaW5rJywndmFsdWUnOlt7bmFtZToncmVzb3VyY2VJZCcsdmFsdWU6JHNjb3BlLmZkLlJlbGF0ZWR9LHtuYW1lOidyZXNvdXJjZVJlY29yZElkJyx2YWx1ZTokc2NvcGUuZmQuUmVzb3VyY2VSZWNvcmRJZH1dfV19KTtcblx0XHRcdFx0XHRcdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VhcmNoRm9ybURvd25sb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZm9ybUxvYWRlZD10cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJHNjb3BlLmxvY2FsVmFycy5zZXRGaWVsZCgkc2NvcGUubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCwnUmVhZE9ubHknLHRydWUpOyAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZXRGaWVsZCgkc2NvcGUubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCwnUmVxdWlyZWQnLGZhbHNlKTsgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgfTtcbiAgICAgICAgXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0Rm9ybVJlc291cmNlID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG4gICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmZvcm1Mb2FkZWQ9ZmFsc2U7XG4gICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT1udWxsKVxuICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9MDtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5mb3JtTG9hZGluZz10cnVlO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGxldCBkYXRhc2V0SWQ7XG4gICAgICAgICAgICAgICAgLy9pZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuRm9ybVNhdmVkKVxuICAgICAgICAgICAgICAgIGRhdGFzZXRJZCA9ICRzY29wZS5mZC5SZWxhdGVkO1xuICAgICAgICAgICAgICAgIC8vZWxzZSAgZGF0YXNldElkPSAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRGb3JtUGFyYW1zLlBhcmFtZXRlcnMuZGF0YXNldC5pZDtcbiAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VGb3JtRXh0ZW5kZWQoZGF0YXNldElkLCRzY29wZS50YXNrSWQsJHNjb3BlLmxvY2FsVmFycy5mb3JtVHlwZSwkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsXCJ3XCIsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZVdpZGdldERlZmluaXRpb249IGRhdGEuZGF0YS5yZXNvdXJjZURlZmluaXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YS5kYXRhLndpZGdldHMpKSAkc2NvcGUubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCA9ICBkYXRhLmRhdGEud2lkZ2V0cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLndJdGVtVmFsdWU9ZGF0YS5kYXRhLndpZGdldHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNlYXJjaEZvcm1Eb3dubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7ICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmZvcm1Mb2FkZWQ9dHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5mb3JtTG9hZGluZz1mYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgJHNjb3BlLmxvY2FsVmFycy5zZXRGaWVsZCgkc2NvcGUubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCwnUmVhZE9ubHknLHRydWUpOyAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZXRGaWVsZCgkc2NvcGUubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCwnUmVxdWlyZWQnLGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5mb3JtTG9hZGluZz1mYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgIH07XG4gICAgICBcbiAgICAgICAgICAgICAgXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0Rm9ybVJlc291cmNlV2l0aERhdGEgPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcbiAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5mb3JtTG9hZGVkPWZhbHNlO1xuICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT1udWxsIHx8ICRzY29wZS5mZC5QcmVzZW50YXRpb25JZD09dW5kZWZpbmVkKVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkID0gMDtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJlbnRFbGVtZW50SWQ9PW51bGwgfHwgJHNjb3BlLmZkLlBhcmVudEVsZW1lbnRJZD09dW5kZWZpbmVkKVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLlBhcmVudEVsZW1lbnRJZCA9IDA7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkPT11bmRlZmluZWQgfHwgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkPT0wKVxuICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMucHJldmlvdXNUYXNrRGF0YVsnZGF0YXNldFJlY29yZElkJ10hPXVuZGVmaW5lZCAmJiAkc2NvcGUubG9jYWxWYXJzLnByZXZpb3VzVGFza0RhdGFbJ2RhdGFzZXRSZWNvcmRJZCddIT1cIlwiICYmICRzY29wZS5sb2NhbFZhcnMucHJldmlvdXNUYXNrRGF0YVsnZGF0YXNldElkJ109PSRzY29wZS5mZC5SZWxhdGVkKSAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQgPSAkc2NvcGUubG9jYWxWYXJzLnByZXZpb3VzVGFza0RhdGFbJ2RhdGFzZXRSZWNvcmRJZCddO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQgIT09J251bWJlcicgJiYgdHlwZW9mICRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZCAhPT0nc3RyaW5nJylcbiAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkKSlcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQubGVuZ3RoPjApXG4gICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQ9ICRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZFswXS5pZCAgXG4gICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGVsc2UgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkID0gJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkLmlkOyAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAvL2xldCBkYXRhc2V0SWQgPSAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRGb3JtUGFyYW1zLlBhcmFtZXRlcnMuZGF0YXNldC5pZDtcbiAgICAgICAgICAgICAgIGxldCBkYXRhc2V0SWQgPSAkc2NvcGUuZmQuUmVsYXRlZDtcbiAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZUZvcm1FeHRlbmRlZFdpdGhEYXRhKGRhdGFzZXRJZCwkc2NvcGUudGFza0luaXRpYXRlSWQsJHNjb3BlLnRhc2tFeGVjdXRlSWQsJHNjb3BlLmZkLlBvcHVsYXRlVHlwZSwkc2NvcGUuZmQuUGFyZW50RWxlbWVudElkLCRzY29wZS5mZC5QcmVzZW50YXRpb25JZCwkc2NvcGUucHJldlRhc2tFeGVJZCwkc2NvcGUubG9jYWxWYXJzLmZvcm1UeXBlLCRzY29wZS5sb2NhbFZhcnMud2lkZ2V0VHlwZSwkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQsXCJ3XCIsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXSA9ICBkYXRhLmRhdGEuZm9ybV9kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXT09dW5kZWZpbmVkKSAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXT1bXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbj0gZGF0YS5kYXRhLnJlc291cmNlRGVmaW5pdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhLmRhdGEud2lkZ2V0cykpICRzY29wZS5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0ID0gIGRhdGEuZGF0YS53aWRnZXRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWRdLmxlbmd0aD4wKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZCA9ICRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWRdWzBdWydpZCddO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRSZWNvcmRJZD0kc2NvcGUubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5mb3JtTG9hZGVkPXRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZm9ybUxvYWRpbmc9ZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNlYXJjaEZvcm1Eb3dubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL01JR09SIC0gYml0bm8gLSBET0JJTyBSRVNPVVJDRVJFQ09SRC1JRCBaQSBCUk9BRENBU1QgIC0gVklFV19SRVNPVVJDRSBXSURHRVRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5zZXREYXRhKHt3aWRnZXRJZDokc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsIERFSTogW3snbmFtZSc6J3Jlc291cmNlTGluaycsJ3ZhbHVlJzpbe25hbWU6J3Jlc291cmNlSWQnLHZhbHVlOiRzY29wZS5mZC5SZWxhdGVkfSx7bmFtZToncmVzb3VyY2VSZWNvcmRJZCcsdmFsdWU6JHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkfV19XX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAkc2NvcGUubG9jYWxWYXJzLnNldEZpZWxkKCRzY29wZS5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0LCdSZWFkT25seScsdHJ1ZSk7ICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNldEZpZWxkKCRzY29wZS5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0LCdSZXF1aXJlZCcsZmFsc2UpOyAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmZvcm1Mb2FkZWQ9dHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5mb3JtTG9hZGluZz1mYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VhcmNoRm9ybURvd25sb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgfTtcbiAgICAgIFxuICAgICAgICRzY29wZS5sb2NhbFZhcnMuY2FsbEFwaSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgIGxldCBhcGlFbmRQb2ludCA9ICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldEZvcm1QYXJhbXMuUGFyYW1ldGVycy5BUElFbmRwb2ludDtcbiAgICAgICAgIGxldCBtZXRob2QgPSAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRGb3JtUGFyYW1zLlBhcmFtZXRlcnMuQVBJTWV0aG9kO1xuICAgICAgICAgbGV0IGZvcm1fZGF0YSA9ICRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWRdWzBdO1xuICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuQ2FsbEFwaUdlbmVyaWMoYXBpRW5kUG9pbnQsbWV0aG9kLGZvcm1fZGF0YSkudGhlbihmdW5jdGlvbihkYXRhKXtcbiAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEubXNnLCdzdWNjZXNzJyk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IuZGF0YS5tc2csJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfSk7XG4gICAgICAgfVxuICAgICAgJHNjb3BlLmdldERhdGFzZXRQYXJhbXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZBbGwoJHNjb3BlLmZkLlJlbGF0ZWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldEZvcm1QYXJhbXMgPSBkYXRhLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJHNjb3BlLmZvcm1EZWZpbml0aW9uICYmICEkc2NvcGUubG9jYWxWYXJzLnNlYXJjaEZvcm1Eb3dubG9hZGVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0Rm9ybVJlc291cmNlV2l0aERhdGEoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5nZXRGb3JtUmVzb3VyY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9OyAgICAgIFxuICAgICAgXG4gICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2V0U2VsZWN0ZWRJbnRlZ3JhdGlvbiA9IGZ1bmN0aW9uKGlkKSAge1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW09PXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbT17fTtcbiAgICAgICAgICAgICAgdmFyIHBvcyA9ICRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKGlkKTtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIGlmIChwb3M+PTApe1xuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0gPSAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlTGlzdFtwb3NdO1xuXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5uYW1lX2NvbmZpcm1lZCA9ICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZSArJyAoJyskc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLmlkICsnKSc7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgfVxuXHRcdFx0XHRcdH1cbiAgXG5cbiRzY29wZS5sb2NhbFZhcnMuZ2V0UHJldmlvdXNUYXNrV2lkZ2V0ICA9IGZ1bmN0aW9uKGxpbmtUeXBlKVxuICAgIHtcbiAgICAgIHZhciBwVGFza0RhdGE7XG4gICAgICB2YXIgcFRhc2tEYXRhUmV0ID0gV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5nZXRQcmV2VGFza0RhdGEoJHNjb3BlLnByZXZUYXNrRXhlSWQpO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocFRhc2tEYXRhUmV0KSAmJiBwVGFza0RhdGFSZXQubGVuZ3RoPjApIHBUYXNrRGF0YSA9IHBUYXNrRGF0YVJldFswXTtcbiAgICAgICAgICAgIHZhciBkYXRhc2V0SWQ9MCxkYXRhc2V0UmVjb3JkSWQ9MDtcbiAgICAgICAgICAgIGlmIChwVGFza0RhdGEhPXVuZGVmaW5lZClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgIGlmIChwVGFza0RhdGEuREVJIT11bmRlZmluZWQgJiYgcFRhc2tEYXRhLkRFSSE9bnVsbClcbiAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHBUYXNrRGF0YS5ERUkubGVuZ3RoO2krKylcbiAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgaWYgKHBUYXNrRGF0YS5ERUlbaV0ubmFtZT09bGlua1R5cGUpXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBpZiAocFRhc2tEYXRhLkRFSVtpXS52YWx1ZSE9dW5kZWZpbmVkICYmIHBUYXNrRGF0YS5ERUlbaV0udmFsdWUhPW51bGwpXG4gICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wO2o8cFRhc2tEYXRhLkRFSVtpXS52YWx1ZS5sZW5ndGg7aisrKVxuICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChwVGFza0RhdGEuREVJW2ldLnZhbHVlW2pdLm5hbWU9PVwicmVzb3VyY2VJZFwiICYmIHBUYXNrRGF0YS5ERUlbaV0udmFsdWVbal0udmFsdWUhPXVuZGVmaW5lZCkgZGF0YXNldElkPXBUYXNrRGF0YS5ERUlbaV0udmFsdWVbal0udmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHBUYXNrRGF0YS5ERUlbaV0udmFsdWVbal0ubmFtZT09XCJyZXNvdXJjZVJlY29yZElkXCIgJiYgcFRhc2tEYXRhLkRFSVtpXS52YWx1ZVtqXS52YWx1ZSE9dW5kZWZpbmVkKSBkYXRhc2V0UmVjb3JkSWQ9cFRhc2tEYXRhLkRFSVtpXS52YWx1ZVtqXS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgIHJldHVybiB7J2RhdGFzZXRJZCc6ZGF0YXNldElkLCdkYXRhc2V0UmVjb3JkSWQnOmRhdGFzZXRSZWNvcmRJZH07XG4gICAgfTtcblxuXG4gICBcbiAgIFxuICAkc2NvcGUubG9jYWxWYXJzLnByZXZpb3VzVGFza0RhdGE9JHNjb3BlLmxvY2FsVmFycy5nZXRQcmV2aW91c1Rhc2tXaWRnZXQoXCJyZXNvdXJjZUxpbmtEYXRhc2V0TGlzdFwiKTtcbiBcbiAgaWYgKCRzY29wZS5mZC5SZWxhdGVkIT1udWxsKSAkc2NvcGUuZ2V0RGF0YXNldFBhcmFtcygpO1xuIFxuICAgICAgICAgICAgbGV0IHRlbXBsYXRlO1xuICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGVmaW5pdGlvbikgdGVtcGxhdGUgPSAkdGVtcGxhdGVDYWNoZS5nZXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza0ludGVncmF0aW9uV2lkZ2V0Lmh0bWwnKTtcbiAgICAgICAgICAgIGVsc2UgdGVtcGxhdGUgPSAkdGVtcGxhdGVDYWNoZS5nZXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza0ludGVncmF0aW9uV2lkZ2V0Lmh0bWwnKTtcbiAgICAgICAgICBcbiAgICAgICAgICAgICRlbGVtZW50LmFwcGVuZCgkY29tcGlsZSh0ZW1wbGF0ZSkoJHNjb3BlKSk7IFxuXG4gIFxuICAgICAgfV07XG5cbiAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXG4gICAgICAgICAgIFxuICAgICAgICAgICAgY29udHJvbGxlcjogY29udHJvbGxlcixcbiAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcblxuICAgICAgICAgICAgfSAgICAgXG4gIH1cbiAgXG59O1xuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24ga3RUYXNrTGlzdFdpZGdldCAoKSB7XG4gICAgICAgICAgICAgdmFyIGNvbnRyb2xsZXIgPSBbJyRzY29wZScsICckc3RhdGVQYXJhbXMnLCckc3RhdGUnLCdVc2VyU2VydmljZScsJ1Jlc291cmNlc0RhdGFTZXJ2aWNlJywnJHJvb3RTY29wZScsJ1Byb2Nlc3NpbmdTZXJ2aWNlJywnJHRpbWVvdXQnLCckY29va2llcycsJ0NvZGVzU2VydmljZScsJ1dpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UnLCdUYXNrRGF0YVNlcnZpY2UnLCdNZXNzYWdpbmdTZXJ2aWNlJywnR3JpZHN0ZXJTZXJ2aWNlJywnS2F0YWx5b1N0YXRlTWFuYWdlcicsJyRxJywnJHRlbXBsYXRlQ2FjaGUnLCckY29tcGlsZScsJyRlbGVtZW50JywnVGFza0RlZmluaXRpb25TZXJ2aWNlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoJHNjb3BlLCRzdGF0ZVBhcmFtcywkc3RhdGUsVXNlclNlcnZpY2UsUmVzb3VyY2VzRGF0YVNlcnZpY2UsJHJvb3RTY29wZSxQcm9jZXNzaW5nU2VydmljZSwkdGltZW91dCwkY29va2llcyxDb2Rlc1NlcnZpY2UsV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZSxUYXNrRGF0YVNlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxHcmlkc3RlclNlcnZpY2UsS2F0YWx5b1N0YXRlTWFuYWdlciwkcSwkdGVtcGxhdGVDYWNoZSwkY29tcGlsZSwkZWxlbWVudCxUYXNrRGVmaW5pdGlvblNlcnZpY2UpIHtcbiAgICAgICAgICBcbiAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcbiAgICAgICAgICAgICAkc2NvcGUuQ1RSTCA9IFwia3RUYXNrTGlzdFdpZGdldFwiICAgXG4gICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnM9PXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycyA9IHt9OyAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAkc2NvcGUuc3RhdGVOYW1lPSRzdGF0ZS5jdXJyZW50Lm5hbWU7XG4gICAgICAgICAgICAgJHNjb3BlLnN0YXRlUGFyYW1zID0gJHN0YXRlLmN1cnJlbnQucGFyYW1zO1xuICAgICAgICAgICAgICRzY29wZS50YXNrX2luaXRpYXRlX2lkPSRzdGF0ZVBhcmFtcy50YXNrX2luaXRpYXRlX2lkO1xuICAgICAgICAgICAgICRzY29wZS50YXNrX2V4ZWN1dGVfaWQ9JHN0YXRlUGFyYW1zLnRhc2tfZXhlY3V0ZV9pZDtcbiAgICAgICAgICAgICAkc2NvcGUudGRzPVRhc2tEZWZpbml0aW9uU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgJHNjb3BlLmlzX3N1cGVydXNlciA9ICAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIuaXNfc3VwZXJ1c2VyO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAgJHNjb3BlLmdyaWRPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgZGF0YTpbXSxcbiAgICAgICAgICAgICBlbmFibGVHcmlkTWVudTogdHJ1ZSxcbiAgICAgICAgICAgICAvL3Nob3dHcmlkRm9vdGVyOiB0cnVlLFxuICAgICAgICAgICAgIC8vc2hvd0NvbHVtbkZvb3RlcjogdHJ1ZSxcbiAgICAgICAgICAgICBlbmFibGVSb3dTZWxlY3Rpb246IHRydWUsXG4gICAgICAgICAgICAgbXVsdGlTZWxlY3Q6IGZhbHNlLFxuICAgICAgICAgICAgIGVuYWJsZUhvcml6b250YWxTY3JvbGxiYXIgOiAwLCBcbiAgICAgICAgICAgICBlbmFibGVWZXJ0aWNhbFNjcm9sbGJhciA6IDIsXG4gICAgICAgICAgICAgLy9lbmFibGVGaWx0ZXJpbmc6IHRydWUsXG4gICAgICAgICAgICAgZW5hYmxlUm93SGVhZGVyU2VsZWN0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgICBlbmFibGVDb2x1bW5SZXNpemluZzogdHJ1ZSxcbiAgICAgICAgICAgICB1c2VFeHRlcm5hbFBhZ2luYXRpb246IHRydWUsXG4gICAgICAgICAgICAgcGFnaW5hdGlvblBhZ2VTaXplczogWzEwLCAyNSwgNTAsMTAwLDIwMCw1MDAsMTAwMF0sXG4gICAgICAgICAgICAgZW5hYmxlUGFnaW5hdGlvbkNvbnRyb2xzOiBmYWxzZSxcbiAgICAgICAgICAgICAvL3BhZ2luYXRpb25QYWdlU2l6ZTogMTAsXG4gICAgICAgICAgICAgLy91c2VFeHRlcm5hbFNvcnRpbmcgOiB0cnVlLFxuICAgICAgICAgICAgIC8vdXNlRXh0ZXJuYWxGaWx0ZXJpbmc6IHRydWUsXG4gICAgICAgICAgICAvLyBtaW5Sb3dzVG9TaG93IDogM1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICB2YXIgcGFnaW5hdGlvbk9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIHBhZ2VOdW1iZXI6IDEsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VTaXplOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgc29ydDogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnBhZ2VTaXplID0gIHBhZ2luYXRpb25PcHRpb25zLnBhZ2VTaXplO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmZpcnN0VGltZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdmFyIGNvbHVtbkRlZnNJbml0aWF0ZSA9IFsgIFxuICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnVGFza0luaXRpYXRpb25JZC5pZCcsIGRpc3BsYXlOYW1lOiAnVGFzayBTdGFydCBJRCcsIHR5cGU6ICdudW1iZXInLCB3aWR0aDonNSUnLGVuYWJsZUhpZGluZzogZmFsc2UsIHZpc2libGU6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ1Rhc2tJbml0aWF0aW9uSWQuSW5pdGlhdG9ySWQubmFtZScsIGRpc3BsYXlOYW1lOiAnU3RhcnRlZCBieSd9LFxuICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnVGFza0luaXRpYXRpb25JZC5TdGF0dXMuQ29kZXNEZXRhaWxMYW5nWzBdLlZhbHVlJywgZGlzcGxheU5hbWU6ICdUYXNrIHN0YXR1cycgfSxcbiAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ1Rhc2tJbml0aWF0aW9uSWQuUmVzb3VyY2VkZWYucmVzb3VyY2VkZWZsYW5nX3NldFswXS5OYW1lJywgZGlzcGxheU5hbWU6ICdUYXNrIG5hbWUnIH0sXG4gICAgICAgICAgICAgICAgICB7IG5hbWU6ICdUYXNrSW5pdGlhdGlvbklkLlJlc291cmNlZGVmLnJlc291cmNlZGVmbGFuZ19zZXRbMF0uRGVzY3JpcHRpb24nLCBkaXNwbGF5TmFtZTogJ1Rhc2sgZGVzY3JpcHRpb24nIH0sXG4gICAgICAgICAgICAgICAgICB7IG5hbWU6ICdUYXNrSW5pdGlhdGlvbklkLlJlc291cmNlZGVmLmlkJywgZGlzcGxheU5hbWU6ICdUYXNrIGRlZiBpZCcsZW5hYmxlSGlkaW5nOiBmYWxzZSx2aXNpYmxlOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnVGFza0luaXRpYXRpb25JZC5DcmVhdGVkRGF0ZVRpbWUnLCBkaXNwbGF5TmFtZTogJ0RhdGUgY3JlYXRlZCcsZW5hYmxlSGlkaW5nOiBmYWxzZSx0eXBlOiAnZGF0ZScsIGNlbGxGaWx0ZXI6ICdkYXRlOlxcJ2RkLk1NLnl5eXkgSEg6bW06c3M6c3NzXFwnJyB9LFxuICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnVGFza0luaXRpYXRpb25JZC5DcmVhdGVkQnkubmFtZScsIGRpc3BsYXlOYW1lOiAnQ3JlYXRlZCBieSd9LFxuICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnRm9yR3JvdXAubmFtZScsIGRpc3BsYXlOYW1lOiAnRm9yIGdyb3VwJ30sXG4gICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICB2YXIgY29sdW1uRGVmc0V4ZWN1dGUgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnaWQnLCBkaXNwbGF5TmFtZTogJ1Rhc2sgRXhlY3V0ZSBJRCcsIHR5cGU6ICdudW1iZXInLCB3aWR0aDonMTAlJyxlbmFibGVIaWRpbmc6IGZhbHNlLCB2aXNpYmxlOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAncmVzb3VyY2VkZWZbMF0uTmFtZScsIGRpc3BsYXlOYW1lOiAnVGFzayBuYW1lJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ3Jlc291cmNlZGVmWzBdLkRlc2NyaXB0aW9uJywgZGlzcGxheU5hbWU6ICdUYXNrIGRlc2NyaXB0aW9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ2FjdHVhbE93bmVyLm5hbWUnLCBkaXNwbGF5TmFtZTogJ1Rhc2sgT3duZXInfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICdzdGF0dXNbMF0uVmFsdWUnLCBkaXNwbGF5TmFtZTogJ1Rhc2sgc3RhdHVzJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8geyBuYW1lOiAnb3V0Y29tZVswXS5OYW1lJywgZGlzcGxheU5hbWU6ICdUYXNrIG91dGNvbWUnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAncmVzb3VyY2VkZWZbMF0uaWQnLCBkaXNwbGF5TmFtZTogJ1Rhc2sgZGVmIGlkJyxlbmFibGVIaWRpbmc6IGZhbHNlLHZpc2libGU6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnQ3JlYXRlZERhdGVUaW1lJywgZGlzcGxheU5hbWU6ICdEYXRlIGNyZWF0ZWQnLGVuYWJsZUhpZGluZzogZmFsc2UsdHlwZTogJ2RhdGUnLCBjZWxsRmlsdGVyOiAnZGF0ZTpcXCdkZC5NTS55eXl5IEhIOm1tOnNzOnNzc1xcJycgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICdjcmVhdGVkQnkubmFtZScsIGRpc3BsYXlOYW1lOiAnQ3JlYXRlZCBieSd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgIF07ICAgXG4gICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUudGFza19leGVjdXRlX2lkPT11bmRlZmluZWQpICRzY29wZS50YXNrX2V4ZWN1dGVfaWQgPSAwO1xuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnRhc2tfaW5pdGlhdGVfaWQ9PXVuZGVmaW5lZCkgJHNjb3BlLnRhc2tfaW5pdGlhdGVfaWQgPSAwO1xuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmRldGFpbHNDbGlja2VkPWZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dNZW51ID0gZmFsc2VcbiAgICAgIFxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnRvZ2dsZURyb3Bkb3duID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dNZW51ID0gICRzY29wZS5sb2NhbFZhcnMuc2hvd01lbnUgPyBmYWxzZTogdHJ1ZSBcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuU2VhcmNoPT09dW5kZWZpbmVkIHx8ICRzY29wZS5mZC5TZWFyY2g9PT1udWxsKSAkc2NvcGUuZmQuU2VhcmNoID0ge307XG4gICAgICAgICAgICAgXG4gICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgbGV0IHdpZGdldERlZmluaXRpb24gPSB7bmFtZTogJ3Rhc2tFeGVjdXRlV2lkZ2V0Jyx3aWRnZXRJZDogJHNjb3BlLmZkLkxvY2FsSWQsdGFza19pbml0aWF0ZV9pZDokc2NvcGUudGFza19pbml0aWF0ZV9pZCx0YXNrX2V4ZWN1dGVfaWQ6JHNjb3BlLnRhc2tfZXhlY3V0ZV9pZCx0YXNrSWQ6ICAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmlkIH07XG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLkxvY2FsSWQ9V2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5yZWdpc3RlcldpZGdldCh3aWRnZXREZWZpbml0aW9uKTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAkc2NvcGUua3NtID0gS2F0YWx5b1N0YXRlTWFuYWdlcjtcbiAgICAgIFxuICAgICAgICAgICAgICAgICBsZXQgZGVwZW5kZW50X2ZpZWxkX3BpZCA9ICRzY29wZS5mZC5Mb2NhbElkO1xuICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3RQaWQgPSBcImZvcm1EZWZpbml0aW9uU3RhdGVcIiskc2NvcGUudGFza0lkKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV90eXBlO1xuICAgICAgICBsZXQgZGVwZW5kZW50X2ZpZWxkX3BpZDJcbiAgICAgICAgbGV0IHVwZGF0ZV9wcmVzZW50YXRpb25faWQyID0gZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgbGV0IHByZXNlbnRhdGlvbl9pZCA9IGFuZ3VsYXIuY29weSgkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQpXG4gICAgICAgICAgICBpZiAoZGF0YVtwcmVzZW50YXRpb25faWRdIT09dW5kZWZpbmVkKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCA9IGRhdGFbcHJlc2VudGF0aW9uX2lkXTtcbiAgICAgICAgICAgIC8vdW5zdWJzY3JpYmUgaGVyZSBsYXRlciBhZnRlciBpbXBsZW1lbnRpbmcgdW5zdWJzY3JpYmUgLSBUb0RvXG4gICAgICAgICAgICBkZXBlbmRlbnRfZmllbGRfcGlkMiA9ICRzY29wZS5mZC5QcmVzZW50YXRpb25JZFxuICAgICAgICAgICAgbGV0IG9ic2VydmVyUGlkMiA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0UGlkLGRlcGVuZGVudF9maWVsZF9waWQyLFwiZm9ybVNhdmVkXCIsdXBkYXRlX3ByZXNlbnRhdGlvbl9pZDIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCB1cGRhdGVfcHJlc2VudGF0aW9uX2lkID0gZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgaWYgKGRhdGFbJHNjb3BlLmZkLkxvY2FsSWRdPjAgJiYgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT0wICYmIGRhdGFbJHNjb3BlLmZkLkxvY2FsSWRdIT09dW5kZWZpbmVkKSAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQgPSBkYXRhWyRzY29wZS5mZC5Mb2NhbElkXTtcbiAgICAgICAgICBcbiAgICAgICAgICAgIGxldCBvYnNlcnZlclBpZDIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdFBpZCxkZXBlbmRlbnRfZmllbGRfcGlkMixcImZvcm1TYXZlZFwiLHVwZGF0ZV9wcmVzZW50YXRpb25faWQyKTtcbiAgICAgICAgICAgIC8vdW5zdWJzY3JpYmUgaGVyZSBsYXRlciBhZnRlciBpbXBsZW1lbnRpbmcgdW5zdWJzY3JpYmUgLSBUb0RvXG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIFxuICAgICAgICBpZiAoJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT09bnVsbCB8fCAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PT0wKVxuICAgICAgICB7XG4gICAgICAgICAgICBsZXQgb2JzZXJ2ZXJQaWQgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdFBpZCxkZXBlbmRlbnRfZmllbGRfcGlkLFwiZm9ybVNhdmVkXCIsdXBkYXRlX3ByZXNlbnRhdGlvbl9pZCk7XG4gICAgICAgIH0gZWxzZXtcbiAgICAgICAgICAgIGRlcGVuZGVudF9maWVsZF9waWQyID0gJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXG4gICAgICAgICAgICBsZXQgb2JzZXJ2ZXJQaWQyID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3RQaWQsZGVwZW5kZW50X2ZpZWxkX3BpZDIsXCJmb3JtU2F2ZWRcIix1cGRhdGVfcHJlc2VudGF0aW9uX2lkMik7XG4gICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZpbHRlcj0kc2NvcGUuZmQuU2VhcmNoO1xuICAgICAgICAgICAgICAgICAgIC8vb3ZvIHRyZWJhIHByaWxhZ29kaXRpXG4gICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5TZWFyY2gudGFza0xpc3RUeXBlPT11bmRlZmluZWQpICRzY29wZS5mZC5TZWFyY2gudGFza0xpc3RUeXBlPVwiY2xhaW1cIjtcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3JpZE9wdGlvbnMub25SZWdpc3RlckFwaSA9IGZ1bmN0aW9uIChncmlkQXBpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3JpZEFwaSA9IGdyaWRBcGk7XG4gICAgICAgICAgICAgICAgICAgICAgICBncmlkQXBpLnNlbGVjdGlvbi5vbi5yb3dTZWxlY3Rpb25DaGFuZ2VkKCRzY29wZSxmdW5jdGlvbihyb3cpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMudGFza1NlbGVjdGVkPXJvdy5pc1NlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJvdy5pc1NlbGVjdGVkKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlNlYXJjaC50YXNrTGlzdFR5cGU9PVwiZXhlY3V0ZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkVGFzaz1yb3cuZW50aXR5LmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50YXNrX2V4ZWN1dGVfaWQgPSAkc2NvcGUuc2VsZWN0ZWRUYXNrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRUYXNrRGVmSWQ9cm93LmVudGl0eS5yZXNvdXJjZWRlZi5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRUYXNrT2JqZWN0ID0gcm93LmVudGl0eTsgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRUYXNrPXJvdy5lbnRpdHkuVGFza0luaXRpYXRpb25JZC5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza19pbml0aWF0ZV9pZCA9ICRzY29wZS5zZWxlY3RlZFRhc2s7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZFRhc2tEZWZJZD1yb3cuZW50aXR5LlRhc2tJbml0aWF0aW9uSWQuUmVzb3VyY2VkZWYuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkVGFza09iamVjdCA9IHJvdy5lbnRpdHkuVGFza0luaXRpYXRpb25JZDsgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgLy9leHRlcm5hbCBwYWdpbmF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgZ3JpZEFwaS5wYWdpbmF0aW9uLm9uLnBhZ2luYXRpb25DaGFuZ2VkKCRzY29wZSwgZnVuY3Rpb24gKG5ld1BhZ2UsIHBhZ2VTaXplKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2luYXRpb25PcHRpb25zLnBhZ2VOdW1iZXIgPSBuZXdQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdpbmF0aW9uT3B0aW9ucy5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuRXhlY3V0ZUFsbExpc3RQYWdpbmF0ZWRGaWx0ZXIoJHNjb3BlLmZkLlNlYXJjaC50YXNrTGlzdFR5cGUsMSxmYWxzZSxcIlwiLCRzY29wZS5sb2NhbFZhcnMubmV4dFBhZ2UsJHNjb3BlLmxvY2FsVmFycy5wcmV2aW91c1BhZ2UsbmV3UGFnZSxwYWdlU2l6ZSwkc2NvcGUuZmlsdGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgZ3JpZEFwaS5jb3JlLm9uLmZpbHRlckNoYW5nZWQoJHNjb3BlLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldCBzb21lICRzY29wZSB2YXJpYWJsZSB0aGF0IGJvdGggbGlzdHMgdXNlIGZvciBmaWx0ZXJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJCRzY29wZS5zb21lRmlsdGVyVmFsdWVCb3RoTGlzdHNMb29rQXQgPSAuLi4uLi5cbiAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dQcm9wZXJ0aWVzPWZ1bmN0aW9uKGRhdGFzZXRNYXBwZXJUeXBlKVxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT11bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGUgPSBkYXRhc2V0TWFwcGVyVHlwZTtcbiAgICAgICAgICAgICAgICAgICB9ZWxzZVxuICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlIT1kYXRhc2V0TWFwcGVyVHlwZSkgJHNjb3BlLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSA9IGRhdGFzZXRNYXBwZXJUeXBlO1xuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgJHNjb3BlLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT0wO1xuICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5yZW1vdmVGaWVsZCA9IGZ1bmN0aW9uIChpbmRleCl7XG5cdFx0XHRcdFx0XHRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG5cdFx0XHRcdFx0XHQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuaW5wdXRBcnJheS5sYXlvdXQuc3BsaWNlKGluZGV4LCAxKTtcblx0XHRcdFx0XHRcdCBcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5DbGFpbVNlbGVjdGVkID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5FeGVjdXRlVGFza0FjdGlvbigkc2NvcGUuc2VsZWN0ZWRUYXNrLDAsJ2NsYWltJyxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3JlZnJlc2ggbGlzdGUgdGFzay1vdmEgemEgY2xhaW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuRXhlY3V0ZUFsbExpc3QoJHNjb3BlLmZkLlNlYXJjaC50YXNrTGlzdFR5cGUsMSx0cnVlLGRhdGEuZGF0YS5tc2cpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgIH0gXG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuRXhlY3V0ZUFsbExpc3QgPSBmdW5jdGlvbih0eXBlLGZpbHRlcixhZnRlckNsYWltLG1zZ0FmdGVyKXtcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICBUYXNrRGF0YVNlcnZpY2UuZ2V0SW5pdGlhdGVkVGFza3ModHlwZSxmaWx0ZXIpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5ncmlkT3B0aW9ucy5kYXRhID0gZGF0YS5kYXRhLnJlc3VsdHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFmdGVyQ2xhaW0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKG1zZ0FmdGVyLCdzdWNjZXNzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuRXhlY3V0ZUFsbExpc3RQYWdpbmF0ZWQgPSBmdW5jdGlvbih0eXBlLGZpbHRlcixhZnRlckNsYWltLG1zZ0FmdGVyLHVybE5leHQsdXJsUHJldixuZXdQYWdlLHBhZ2VTaXplKXtcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmRhdGFMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcbiAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMudG90YWxDb3VudD4wKVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChNYXRoLmNlaWwoJHNjb3BlLnRvdGFsQ291bnQvcGFnZVNpemUpPG5ld1BhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1BhZ2UgPSBNYXRoLmNlaWwoJHNjb3BlLnRvdGFsQ291bnQvcGFnZVNpemUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBUYXNrRGF0YVNlcnZpY2UuZ2V0SW5pdGlhdGVkVGFza3NQYWdpbmF0ZWQodHlwZSxmaWx0ZXIsdXJsTmV4dCx1cmxQcmV2LG5ld1BhZ2UscGFnZVNpemUpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5ncmlkT3B0aW9ucy5kYXRhID0gZGF0YS5kYXRhLnJlc3VsdHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5uZXh0UGFnZSA9IGRhdGEuZGF0YS5uZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucHJldmlvdXNQYWdlID0gZGF0YS5kYXRhLnByZXZpb3VzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudG90YWxDb3VudD1kYXRhLmRhdGEuY291bnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jdXJyZW50UGFnZT1uZXdQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubnVtUGFnZXMgPSBNYXRoLmNlaWwoJHNjb3BlLnRvdGFsQ291bnQvcGFnZVNpemUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucGFnZVNpemUgPSBwYWdlU2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdyaWRPcHRpb25zLnRvdGFsSXRlbXM9JHNjb3BlLnRvdGFsQ291bnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZGF0YUxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFmdGVyQ2xhaW0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKG1zZ0FmdGVyLCdzdWNjZXNzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5yb3dTZWxlY3Rpb25DaGFuZ2VkPWZ1bmN0aW9uKGl0ZW0pXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMudGFza1NlbGVjdGVkPWl0ZW0uaXNTZWxlY3RlZDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXRlbS5pc1NlbGVjdGVkKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlNlYXJjaC50YXNrTGlzdFR5cGU9PVwiZXhlY3V0ZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkVGFzaz1pdGVtLmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50YXNrX2V4ZWN1dGVfaWQgPSAkc2NvcGUuc2VsZWN0ZWRUYXNrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRUYXNrRGVmSWQ9aXRlbS5yZXNvdXJjZWRlZlswXS5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRUYXNrT2JqZWN0ID0gaXRlbTsgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRUYXNrPWl0ZW0uVGFza0luaXRpYXRpb25JZC5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza19pbml0aWF0ZV9pZCA9ICRzY29wZS5zZWxlY3RlZFRhc2s7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZFRhc2tEZWZJZD1pdGVtLlRhc2tJbml0aWF0aW9uSWQuUmVzb3VyY2VkZWYuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkVGFza09iamVjdCA9IGl0ZW0uVGFza0luaXRpYXRpb25JZDsgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5FeGVjdXRlQWxsTGlzdFBhZ2luYXRlZEZpbHRlciA9IGZ1bmN0aW9uKHR5cGUsZmlsdGVyLGFmdGVyQ2xhaW0sbXNnQWZ0ZXIsdXJsTmV4dCx1cmxQcmV2LG5ld1BhZ2UscGFnZVNpemUsZl9maWx0ZXIpe1xuICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xuICAgICAgICAgICAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9ICRxLmRlZmVyKClcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmRhdGFMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlNlYXJjaC50YXNrTGlzdFR5cGU9PVwiY2xhaW1cIilcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzdWx0cyA9IHtjb2x1bW5zIDogY29sdW1uRGVmc0luaXRpYXRlfTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuU2VhcmNoLnRhc2tMaXN0VHlwZT09XCJleGVjdXRlXCIpXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc3VsdHMgPSB7Y29sdW1ucyA6IGNvbHVtbkRlZnNFeGVjdXRlfTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLnRvdGFsQ291bnQ+MClcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5jZWlsKCRzY29wZS5sb2NhbFZhcnMudG90YWxDb3VudC9wYWdlU2l6ZSk8bmV3UGFnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UGFnZSA9IE1hdGguY2VpbCgkc2NvcGUubG9jYWxWYXJzLnRvdGFsQ291bnQvcGFnZVNpemUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgIC8vICRzY29wZS5ncmlkT3B0aW9ucy5kYXRhLmxlbmd0aD0wO1xuICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5nZXRJbml0aWF0ZWRUYXNrc1BhZ2luYXRlZEZpbHRlcmVkKHR5cGUsZmlsdGVyLHVybE5leHQsdXJsUHJldixuZXdQYWdlLHBhZ2VTaXplLGZfZmlsdGVyKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzdWx0cy5yZXN1bHRzID0gZGF0YS5kYXRhLnJlc3VsdHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMubmV4dFBhZ2UgPSBkYXRhLmRhdGEubmV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wcmV2aW91c1BhZ2UgPSBkYXRhLmRhdGEucHJldmlvdXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMudG90YWxDb3VudD1kYXRhLmRhdGEuY291bnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuY3VycmVudFBhZ2U9bmV3UGFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5udW1QYWdlcyA9IE1hdGguY2VpbCgkc2NvcGUubG9jYWxWYXJzLnRvdGFsQ291bnQvcGFnZVNpemUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnBhZ2VTaXplID0gcGFnZVNpemU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXN1bHRzLnRvdGFsSXRlbXM9JHNjb3BlLmxvY2FsVmFycy50b3RhbENvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmZpcnN0VGltZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmRhdGFMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc3VsdHMucGFnZVNpemUgPSBwYWdlU2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzdWx0cy5udW1iZXJPZlBhZ2VzID0gJHNjb3BlLmxvY2FsVmFycy5udW1QYWdlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzdWx0cy5jb3VudCA9IGRhdGEuZGF0YS5jb3VudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVmZXJyZWQhPXVuZGVmaW5lZCkgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogJHNjb3BlLnJlc3VsdHN9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBpZiAoJHNjb3BlLmxvY2FsVmFycy50b3RhbENvdW50PT0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJHNjb3BlLmxvY2FsVmFycy5kZXRhaWxzQ2xpY2tlZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuU2VhcmNoLnRhc2tMaXN0VHlwZT09XCJleGVjdXRlXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50YXNrX2V4ZWN1dGVfaWQgPSAkc2NvcGUuZ3JpZE9wdGlvbnMuZGF0YVswXS5pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tfaW5pdGlhdGVfaWQgPSAkc2NvcGUuZ3JpZE9wdGlvbnMuZGF0YVswXS5UYXNrSW5pdGlhdGlvbklkLmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ki9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm9vdFNjb3BlLiRicm9hZGNhc3QoJ1BhZ2VMb2FkZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFmdGVyQ2xhaW0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKG1zZ0FmdGVyLCdzdWNjZXNzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7ZGF0YTogJHNjb3BlLnJlc3VsdHN9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgJHNjb3BlLmZkLnBhZ2VDaGFuZ2VkID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRpcmVjdGl2ZUZuU21hcnRUYWJsZVJlZnJlc2goMSwkc2NvcGUubG9jYWxWYXJzLnBhZ2VTaXplKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLmZkLmdldFRhc2tMaXN0KDEsJHNjb3BlLmxvY2FsVmFycy5wYWdlU2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBcbiAgICAgICAgICAgICAkc2NvcGUuc2V0RGlyZWN0aXZlRm5SZWZyZXNoRGF0YSA9IGZ1bmN0aW9uKGRpcmVjdGl2ZUZuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5kaXJlY3RpdmVGblNtYXJ0VGFibGVSZWZyZXNoID0gZGlyZWN0aXZlRm47XG4gICAgICAgICAgICAgfTtcbiAgICBcbiAgICAgICAgICAgICAkc2NvcGUuZmQuZ2V0VGFza0xpc3QgPSBmdW5jdGlvbihwYWdlTnVtYmVyLHBhZ2VTaXplKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRmcmQgPSAkcS5kZWZlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmRhdGFMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLkV4ZWN1dGVBbGxMaXN0UGFnaW5hdGVkRmlsdGVyKCRzY29wZS5mZC5TZWFyY2gudGFza0xpc3RUeXBlLDEsZmFsc2UsXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMubmV4dFBhZ2UsJHNjb3BlLmxvY2FsVmFycy5wcmV2aW91c1BhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlTnVtYmVyLHBhZ2VTaXplLCRzY29wZS5maWx0ZXIpLnRoZW4oZnVuY3Rpb24oZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGZyZC5yZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRmcmQucHJvbWlzZTtcbiAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAkc2NvcGUuRXhlY3V0ZUxpc3RQcmVQYWdpbmF0ZWQgPSBmdW5jdGlvbihsaXN0RmlsdGVyKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuRXhlY3V0ZUFsbExpc3RQYWdpbmF0ZWQoJHNjb3BlLmZkLlNlYXJjaC50YXNrTGlzdFR5cGUsbGlzdEZpbHRlcixmYWxzZSxcIlwiLFwiXCIsXCJcIixwYWdpbmF0aW9uT3B0aW9ucy5wYWdlTnVtYmVyLHBhZ2luYXRpb25PcHRpb25zLnBhZ2VTaXplKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5TZWFyY2guaGVhZGVyTGFiZWwgPSBcIlNlbGVjdCB1c2VycyBvciBncm91cHNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuU2VhcmNoLnVzZXJzTGFiZWwgPVwiVXNlcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuU2VhcmNoLmdyb3Vwc0xhYmVsID0gXCJHcm91cHNcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICRzY29wZS4kd2F0Y2goJ2ZkLlNlYXJjaC50YXNrRGVmSWRzJyxmdW5jdGlvbihuZXdWYWx1ZSxvbGRWYWx1ZSl7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWUhPW9sZFZhbHVlICYmIG5ld1ZhbHVlIT11bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5maWx0ZXIudGFza0RlZklkcz0kc2NvcGUuZmQuU2VhcmNoLnRhc2tEZWZJZHM7XG4gICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgJHNjb3BlLiR3YXRjaCgnZmQuU2VhcmNoLnRhc2tTdGF0dXMnLGZ1bmN0aW9uKG5ld1ZhbHVlLG9sZFZhbHVlKXtcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZSE9b2xkVmFsdWUgJiYgbmV3VmFsdWUhPXVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZpbHRlci50YXNrU3RhdHVzPSRzY29wZS5mZC5TZWFyY2gudGFza1N0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAvL2dldCB0YXNrIHN0YXR1c2VzXG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgIENvZGVzU2VydmljZS5nZXRDb2Rlc0J5TmFtZSgndGFza3N0YXR1c2VzJyxsYW5nKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMudGFza1N0YXR1c2VzID0gZGF0YS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICBsZXQgdGVtcGxhdGU7XG4gICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uKSB0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZUNhY2hlLmdldCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrTGlzdFdpZGdldC5odG1sJyk7XG4gICAgICAgICAgICAgZWxzZSB0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZUNhY2hlLmdldCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrTGlzdFdpZGdldEV4ZS5odG1sJyk7XG4gICAgICAgICAgXG4gICAgICAgICAgICAgJGVsZW1lbnQuYXBwZW5kKCRjb21waWxlKHRlbXBsYXRlKSgkc2NvcGUpKTsgICAgICBcbiAgICAgICAgICBcbiAgICAgICAgICB9XTtcbiAgICAgICAgICBcbiAgICAgICAgICBcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXG4gICAgICAgICAgICBjb250cm9sbGVyOmNvbnRyb2xsZXIsXG4gICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xuICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgICB9XG4gICAgICAgIH0gICAgICAgICAgICAgXG59O1xuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24ga3RUYXNrTWVzc2FnZSAoKSB7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXG4gICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza01lc3NhZ2UuaHRtbCcsXG4gICAgICAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24oJHNjb3BlLEdyaWRzdGVyU2VydmljZSwkc2NlKXtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjPSBHcmlkc3RlclNlcnZpY2U7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzID09IHVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycz17fTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93TWVudSA9IGZhbHNlXG4gICAgICBcbiAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMudG9nZ2xlRHJvcGRvd24gPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93TWVudSA9ICAkc2NvcGUubG9jYWxWYXJzLnNob3dNZW51ID8gZmFsc2U6IHRydWUgXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuUmVzcG9uc2VNc2cgPSAkc2NlLnRydXN0QXNIdG1sKCRzY29wZS5mZC5SZXNwb25zZU1zZyk7XHJcblxyXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICBcbiAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgXG4gICAgICAgIH0gICAgICAgXG4gICAgICAgICAgICAgIFxuICAgIH1cbiAgXG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0VGFza1Byb2NEaXJlY3RpdmUgKCkge1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxyXG4gICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza1Byb2NEaXJlY3RpdmUuaHRtbCcsXHJcbiAgICAgICAgICAgIHNjb3BlOiB7XHJcbiAgICAgICAgICAgICAgICBmZDogJz0nLFxyXG4gICAgICAgICAgICAgICAgbG9jYWxWYXJzOiAnPScsXHJcbiAgICAgICAgICAgICAgICB0YXNrRGVmaW5pdGlvbjonPScsXHJcbiAgICAgICAgICAgIH0sXHJcbiBcclxuICAgICBjb250cm9sbGVyOiBmdW5jdGlvbigkc2NvcGUsTWVzc2FnaW5nU2VydmljZSxUYXNrRGF0YVNlcnZpY2UsUHVibGljVGFza0RhdGFTZXJ2aWNlLE1lbnVTZXJ2aWNlLCR0aW1lb3V0LCRyb290U2NvcGUsR3JpZHN0ZXJTZXJ2aWNlLCRzdGF0ZVBhcmFtcyxXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLGRyYWd1bGFTZXJ2aWNlLEthdGFseW9TdGF0ZU1hbmFnZXIpXHJcbiAgICAge1xyXG4gICAgICAgICRzY29wZS5DVFJMID0gXCJrdFRhc2tQcm9jRGlyZWN0aXZlXCJcclxuICAgICAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2U7XHJcbiAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnM9PXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycz17fTtcclxuICAgICAgICBpZiAoJHNjb3BlLmZkPT11bmRlZmluZWQpICRzY29wZS5mZD17fTtcclxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRzdGVyVHlwZSA9IFwidGFza1wiO1xyXG4gICAgICAgICRzY29wZS5nc3J2Yy5zaG93Rm9vdGVyPXRydWU7XHJcbiAgICAgICAgaWYgKCRzY29wZS50YXNrRGVmaW5pdGlvbiE9dW5kZWZpbmVkICYmICRzY29wZS5sb2NhbFZhcnMucHJldmlvdXNUYXNrPT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnMucHJldmlvdXNUYXNrPSAkc2NvcGUudGFza0RlZmluaXRpb24udGFza19leGVjdXRlX2lkO1xyXG4gICAgICAgIGVsc2UgaWYgKCRzY29wZS5sb2NhbFZhcnMucHJldmlvdXNUYXNrPT11bmRlZmluZWQpICAkc2NvcGUubG9jYWxWYXJzLnByZXZpb3VzVGFzaz0wO1xyXG4gICAgICAgIC8vaWYgKCRzY29wZS50YXNrRGVmaW5pdGlvbj09dW5kZWZpbmVkKSAkc2NvcGUudGFza0RlZmluaXRpb24gPSAge307XHJcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wb3RlbnRpYWxPd25lcnMgPSB7fTtcclxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnBvdGVudGlhbE93bmVycy5wb3RlbnRpYWxPd25lcnNVc2VycyA9IFtdO1xyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMucG90ZW50aWFsT3duZXJzLnBvdGVudGlhbE93bmVyc0dyb3VwcyA9IFtdO1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMuYmFja0Nsb3NlSWNvbiA9IFwiZmEgZmEtY2xvc2VcIjtcclxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmNhbmNlbEJhY2tCdG5UeHQgPSBcIkNhbmNlbFwiO1xyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb249e307XHJcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrPXt9O1xyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrID0ge1xyXG4gICAgICAgICAgICAgICAgaWQ6ICcxJyxcclxuICAgICAgICAgICAgICAgIG5hbWU6ICdIb21lJyxcclxuICAgICAgICAgICAgICAgIHdpZGdldHM6ICRzY29wZS5nc3J2Yy5nZXRFbXB0eUNvbHVtbigpLFxyXG4gICAgICAgICAgICAgICAgd2lkZ2V0c09yaWdpbmFsOiAkc2NvcGUuZ3NydmMuZ2V0RW1wdHlDb2x1bW4oKSxcclxuICAgICAgICAgICAgICAgIGRhdGE6e31cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICBcclxuICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRUYXNrcz09dW5kZWZpbmVkKSAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkVGFza3MgPSBbXTtcclxuICAgICAgIFxyXG4gICAgICAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkVGFza0luZGV4PS0xO1xyXG4gICAgICBpZiAoJHNjb3BlLmZkLnR5cGUhPXVuZGVmaW5lZClcclxuICAgICAge1xyXG4gICAgICAgICAgaWYgKCRzY29wZS5mZC50eXBlPT0naXRhc2snKVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZkLndJdGVtVmFsdWUhPW51bGwpIHtcclxuICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFRhc2tzID0gJHNjb3BlLmZkLndJdGVtVmFsdWU7XHJcbiAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAkc2NvcGUuZmQud0l0ZW1WYWx1ZSA9IFtdO1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC50SXRlbVZhbHVlIT1udWxsKSB7XHJcbiAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRUYXNrcyA9ICRzY29wZS5mZC50SXRlbVZhbHVlO1xyXG4gICAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICRzY29wZS5mZC50SXRlbVZhbHVlID0gW107XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAgXHJcbiAgICAgICAkc2NvcGUuUHJvY2Vzc0RhdGFGcm9tU3RhcnRUYXNrID0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgIHtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmIChkYXRhLnRhc2tkZWYhPXVuZGVmaW5lZCkgICRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb24gPSBkYXRhLnRhc2tkZWY7XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnRhc2tEZWZpbml0aW9uIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS50YXNrRGVmaW5pdGlvbi50YXNrX2V4ZWN1dGVfaWQ9PXVuZGVmaW5lZCkgJHNjb3BlLnRhc2tEZWZpbml0aW9uLnRhc2tfZXhlY3V0ZV9pZCA9ICRzY29wZS5sb2NhbFZhcnMucHJldmlvdXNUYXNrO1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb24ucHJldl90YXNrX2lkID0gJHNjb3BlLnRhc2tEZWZpbml0aW9uLnRhc2tfZXhlY3V0ZV9pZDtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmlubGluZVRhc2tEZWZpbml0aW9uLnByZXZfdGFza190cmFuc2FjdGlvbl9pZCA9ICRzY29wZS50YXNrRGVmaW5pdGlvbi50cmFuc2FjdGlvbl9pZDtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmlubGluZVRhc2tEZWZpbml0aW9uLnByZXZfdGFza19vYmplY3QgPSAkc2NvcGUudGFza0RlZmluaXRpb247XHJcblxyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmlubGluZVRhc2tEZWZpbml0aW9uLnByZXZfdGFza19pZCA9ICRzY29wZS5sb2NhbFZhcnMucHJldmlvdXNUYXNrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrRGVmaW5pdGlvbi5wcm9jX3R5cGUgPSBkYXRhLnByb2NUeXBlO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrRGVmaW5pdGlvbi5mb3JtX3R5cGUgPSBkYXRhLmZvcm1UeXBlO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrRGVmaW5pdGlvbi50cmFuc2FjdGlvbl9pZCA9IGRhdGEudHJhbnNhY3Rpb25JZDtcclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb24udGFza0V4ZWN1dGVJbnN0YW5jZSA9IGRhdGEudGFza0V4ZWN1dGVJbnN0YW5jZTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb24udGFza0luaXRpYXRlSW5zdGFuY2UgPSBkYXRhLnRhc2tJbml0aWF0ZUluc3RhbmNlO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrRGVmaW5pdGlvbi5pbmxpbmVfdGFzaz0kc2NvcGUubG9jYWxWYXJzLmlzSW5saW5lVGFzaztcclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb24uc291cmNlX3R5cGUgPSAkc3RhdGVQYXJhbXMuc3JjX3R5cGU7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmlubGluZVRhc2tEZWZpbml0aW9uLnRhc2tGb3JtTG9hZGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmlubGluZVRhc2tEZWZpbml0aW9uLmlubGluZUluaXRpYXRlRm9ybUxvYWRlZCA9IHRydWU7IFxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb24udGFza0V4ZWN1dGVJbnN0YW5jZSE9dW5kZWZpbmVkICYmICRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb24udGFza0V4ZWN1dGVJbnN0YW5jZS5sZW5ndGg+MCkgJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrRGVmaW5pdGlvbi50YXNrX2V4ZWN1dGVfaWQgPSAkc2NvcGUubG9jYWxWYXJzLmlubGluZVRhc2tEZWZpbml0aW9uLnRhc2tFeGVjdXRlSW5zdGFuY2VbMF0uaWQ7XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrRGVmaW5pdGlvbi50YXNrSW5pdGlhdGVJbnN0YW5jZSE9dW5kZWZpbmVkICYmICRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb24udGFza0luaXRpYXRlSW5zdGFuY2UubGVuZ3RoPjApICRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb24udGFza19pbml0aWF0ZV9pZCA9ICRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb24udGFza0luaXRpYXRlSW5zdGFuY2VbMF0uaWQ7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmlubGluZVRhc2sucmVzb3VyY2VEZWZpbml0aW9uPWRhdGEucmVzb3VyY2VEZWZpbml0aW9uOyAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrLmRhdGEgPSBkYXRhLmZvcm1fZGF0YTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrLmRhdGE9PXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrLmRhdGEgPSB7fTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFzay53aWRnZXRzLmxheW91dD0gZGF0YS53aWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFzay5yZXNvdXJjZURlZmluaXRpb249PXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrLnJlc291cmNlRGVmaW5pdGlvbiA9IHt9O1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zID0ge2Zvcm1WaWV3VHlwZToyLGZvcm1Mb2NrZWQgOiB0cnVlfTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnNldEZvcm1WaWV3VHlwZSgkc2NvcGUubG9jYWxWYXJzLmlubGluZVRhc2sucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0VGFza0Zvcm1WZXJzaW9uKCRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFzay5yZXNvdXJjZURlZmluaXRpb24uaWQrJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrRGVmaW5pdGlvbi5mb3JtX3R5cGUsJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrLnJlc291cmNlRGVmaW5pdGlvbi5Gb3JtVmVyc2lvbilcclxuXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUua3NtID0gS2F0YWx5b1N0YXRlTWFuYWdlcjtcclxuICAgICAgICAgICAgICAgIC8vZGVmaW5lIHRhc2tfY2xvc2VkIGFjdGlvbiBmcm9tIHBhcmVudCB0YXNrIGlmIHBhcmVudCBleGlzdHNcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUudGFza0RlZmluaXRpb24hPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmlubGluZVRhc2sucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQgPSAkc2NvcGUudGFza0RlZmluaXRpb24ucGFnZV9zdGF0ZV9pZFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0YXNrUGFyZW50U3RhdGU9ICRzY29wZS5rc20uZ2V0U3ViamVjdChcInRhc2tcIiskc2NvcGUudGFza0RlZmluaXRpb24udHJhbnNhY3Rpb25faWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0YXNrX2Nsb3NlZCA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3RleHRWYWx1ZVN0YXRlLnN1YmplY3Quc2V0U3RhdGVDaGFuZ2VzID0gZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFza1BhcmVudFN0YXRlLm5vdGlmeU9ic2VydmVycyhcInRhc2tfY2xvc2VkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFjdGlvbl90YXNrX2Nsb3NlZDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGFza1BhcmVudFN0YXRlIT11bmRlZmluZWQpIGFjdGlvbl90YXNrX2Nsb3NlZCA9ICRzY29wZS5rc20uYWRkQWN0aW9uKHRhc2tQYXJlbnRTdGF0ZS5uYW1lLFwidGFza19jbG9zZWRcIix0YXNrX2Nsb3NlZCk7ICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vUmVnaXN0ZXIgdGFzayB3aXRoIHN0YXRlIG1hbmFnZXJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdGFza1N0YXRlPSAkc2NvcGUua3NtLmFkZFN1YmplY3QoJ3Rhc2snKyRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb24udHJhbnNhY3Rpb25faWQsJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrRGVmaW5pdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRhc2tTdGF0ZU5hbWUgPSB0YXNrU3RhdGUuc3ViamVjdC5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRhc2tfc3RhcnRlZCA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3RleHRWYWx1ZVN0YXRlLnN1YmplY3Quc2V0U3RhdGVDaGFuZ2VzID0gZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFza1N0YXRlLnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKFwidGFza19zdGFydGVkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBsZXQgYWN0aW9uX3Rhc2tfc3RhcnRlZCA9ICRzY29wZS5rc20uYWRkQWN0aW9uKHRhc2tTdGF0ZU5hbWUsXCJ0YXNrX3N0YXJ0ZWRcIix0YXNrX3N0YXJ0ZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbih0YXNrU3RhdGVOYW1lLFwidGFza19zdGFydGVkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0YXNrX2luaXRpYXRlZCA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3RleHRWYWx1ZVN0YXRlLnN1YmplY3Quc2V0U3RhdGVDaGFuZ2VzID0gZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFza1N0YXRlLnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKFwidGFza19pbml0aWF0ZWRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBhY3Rpb25fdGFza19pbml0aWF0ZWQgPSAkc2NvcGUua3NtLmFkZEFjdGlvbih0YXNrU3RhdGVOYW1lLFwidGFza19pbml0aWF0ZWRcIix0YXNrX2luaXRpYXRlZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRvbignUmVmcmVzaFRhc2snKyRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb24udHJhbnNhY3Rpb25faWQsZnVuY3Rpb24oZXZlbnQsZGF0YSl7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuU3RhcnROZXdUYXNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5pbml0aWF0ZUZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy50YXNrSW5pdGlhdGVkPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmlzQ29sbGFwc2VkMz10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sNTAwKTsgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9O1xyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMuUHJvY2Vzc01lbnVDbGljaz0gZnVuY3Rpb24obWVudUlkKXtcclxuICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgIGlmIChtZW51SWQhPTApXHJcbiAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuaW5pdGlhdGVGb3JtTG9hZGVkPWZhbHNlO1xyXG4gICAgICAgICAgICAgIE1lbnVTZXJ2aWNlLlByb2Nlc3NNZW51Q2xpY2sobWVudUlkKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuUHJvY2Vzc0RhdGFGcm9tU3RhcnRUYXNrKGRhdGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLm1zZyE9dW5kZWZpbmVkKSBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IsJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmlubGluZVRhc2sudGFza1Byb2NSZXNwb25zZSA9IHtzdGF0dXMgOiBlcnJvci5zdGF0dXMsbXNnOmVycm9yLm1zZ307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgXHJcbiAgICAgICAkc2NvcGUubG9jYWxWYXJzLkdldEV4ZWN1dGVUYXNrQnlFeGVJZD0gZnVuY3Rpb24odGFza19leGVjdXRlX2lkLHRhc2tfaW5pdGlhdGVfaWQpe1xyXG4gICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgaWYgKHRhc2tfZXhlY3V0ZV9pZD4wKVxyXG4gICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBUYXNrRGF0YVNlcnZpY2UucHJlRXhlY3V0ZVRhc2sodGFza19pbml0aWF0ZV9pZCx0YXNrX2V4ZWN1dGVfaWQsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLlByb2Nlc3NEYXRhRnJvbVN0YXJ0VGFzayhkYXRhLmRhdGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLm1zZyE9dW5kZWZpbmVkKSBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IsJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmlubGluZVRhc2sudGFza1Byb2NSZXNwb25zZSA9IHtzdGF0dXMgOiBlcnJvci5zdGF0dXMsbXNnOmVycm9yLm1zZ307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgICBcclxuICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLnByb2Nlc3NNZW51Q2xpY2tlZCkgJHNjb3BlLmxvY2FsVmFycy5Qcm9jZXNzTWVudUNsaWNrKCRzY29wZS5sb2NhbFZhcnMubWVudUlkKTtcclxuICAgICAgIFxyXG4gICAgICAgXHJcbiAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuU3RhcnRUYXNrID0gZnVuY3Rpb24odGFza0lkLG91dGNvbWVJZCxwcmV2aW91c1Rhc2tJZCl7XHJcbiAgICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICAgIGlmIChvdXRjb21lSWQ9PXVuZGVmaW5lZCB8fCBvdXRjb21lSWQ9PVwiXCIpIG91dGNvbWVJZD0wO1xyXG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzVGFza0lkPT11bmRlZmluZWQgfHwgcHJldmlvdXNUYXNrSWQ9PVwiXCIpIHByZXZpb3VzVGFza0lkPTA7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKHRhc2tJZCE9MClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmluaXRpYXRlRm9ybUxvYWRlZD1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBUYXNrRGF0YVNlcnZpY2UuU3RhcnRUYXNrKHRhc2tJZCxvdXRjb21lSWQscHJldmlvdXNUYXNrSWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoZGF0YS5kYXRhKS5sZW5ndGg9PTAgfHwgZGF0YS5kYXRhPT1udWxsIHx8IGRhdGEuZGF0YT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoJ1Rhc2sgcHJvY2Vzc2luZyBlcnJvci4gVGFzayBkYXRhIGlzIGVtcHR5ISAtLT4gQ2hlY2sgdGFzayBkZWZpbml0aW9uIC0tPiBUYXNrIGlkID0gJyt0YXNrSWQsJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuUHJvY2Vzc0RhdGFGcm9tU3RhcnRUYXNrKGRhdGEuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2cubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrLnRhc2tQcm9jUmVzcG9uc2UgPSB7c3RhdHVzIDogZXJyb3Iuc3RhdHVzLG1zZzplcnJvci5tc2d9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuU3RhcnRQdWJsaWNUYXNrID0gZnVuY3Rpb24ob3JnYW5pc2F0aW9uSWQsdGFza05hbWUsdGFza0lkLG91dGNvbWVJZCxwcmV2aW91c1Rhc2tJZCl7XHJcbiAgICAgICAgICAgICAgICBpZiAob3JnYW5pc2F0aW9uSWQ9PXVuZGVmaW5lZCB8fCBvcmdhbmlzYXRpb25JZD09XCJcIikgb3JnYW5pc2F0aW9uSWQ9MDtcclxuICAgICAgICAgICAgICAgIGlmIChvdXRjb21lSWQ9PXVuZGVmaW5lZCB8fCBvdXRjb21lSWQ9PVwiXCIpIG91dGNvbWVJZD0wO1xyXG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzVGFza0lkPT11bmRlZmluZWQgfHwgcHJldmlvdXNUYXNrSWQ9PVwiXCIpIHByZXZpb3VzVGFza0lkPTA7XHJcbiAgICAgICAgICAgICAgICBpZiAodGFza0lkPT11bmRlZmluZWQgfHwgdGFza0lkPT1cIlwiKSB0YXNrSWQ9MDtcclxuICAgICAgICAgICAgICAgIGlmICh0YXNrTmFtZT09dW5kZWZpbmVkKSB0YXNrTmFtZT1cIlwiO1xyXG4gICAgICAgICAgICAgICAgaWYgKCh0YXNrSWQhPTAgfHwgdGFza05hbWUhPVwiXCIpICYmIG9yZ2FuaXNhdGlvbklkPjApXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIFB1YmxpY1Rhc2tEYXRhU2VydmljZS5TdGFydFRhc2sob3JnYW5pc2F0aW9uSWQsdGFza05hbWUsdGFza0lkLG91dGNvbWVJZCxwcmV2aW91c1Rhc2tJZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGRhdGEuZGF0YSkubGVuZ3RoPT0wIHx8IGRhdGEuZGF0YT09bnVsbCB8fCBkYXRhLmRhdGE9PXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdUYXNrIHByb2Nlc3NpbmcgZXJyb3IuIFRhc2sgZGF0YSBpcyBlbXB0eSEgLS0+IENoZWNrIHRhc2sgZGVmaW5pdGlvbiAtLT4gVGFzayBpZCA9ICcrdGFza0lkLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLlByb2Nlc3NEYXRhRnJvbVN0YXJ0VGFzayhkYXRhLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrLnRhc2tQcm9jUmVzcG9uc2UgPSB7c3RhdHVzIDogZXJyb3Iuc3RhdHVzLG1zZzplcnJvci5tc2d9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb24gPSBkYXRhLmRhdGEudGFza2RlZlswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUudGFza0RlZmluaXRpb24hPXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrRGVmaW5pdGlvbi5wcmV2X3Rhc2tfaWQgPSAkc2NvcGUudGFza0RlZmluaXRpb24udGFza19leGVjdXRlX2lkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrRGVmaW5pdGlvbi5wcm9jX3R5cGUgPSBkYXRhLmRhdGEucHJvY1R5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmlubGluZVRhc2tEZWZpbml0aW9uLmZvcm1fdHlwZSA9IGRhdGEuZGF0YS5mb3JtVHlwZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb24udHJhbnNhY3Rpb25faWQgPSBkYXRhLmRhdGEudHJhbnNhY3Rpb25JZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb24uaW5saW5lX3Rhc2s9JHNjb3BlLmxvY2FsVmFycy5pc0lubGluZVRhc2s7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmlubGluZVRhc2tEZWZpbml0aW9uLnNvdXJjZV90eXBlID0gJHN0YXRlUGFyYW1zLnNyY190eXBlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrRGVmaW5pdGlvbi50YXNrRm9ybUxvYWRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrRGVmaW5pdGlvbi50YXNrRXhlY3V0ZUluc3RhbmNlID0gZGF0YS5kYXRhLnRhc2tFeGVjdXRlSW5zdGFuY2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmlubGluZVRhc2tEZWZpbml0aW9uLnRhc2tJbml0aWF0ZUluc3RhbmNlID0gZGF0YS5kYXRhLnRhc2tJbml0aWF0ZUluc3RhbmNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrRGVmaW5pdGlvbi5pbmxpbmVJbml0aWF0ZUZvcm1Mb2FkZWQgPSB0cnVlOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLmlubGluZVRhc2tEZWZpbml0aW9uLnRhc2tFeGVjdXRlSW5zdGFuY2UhPXVuZGVmaW5lZCAmJiAkc2NvcGUubG9jYWxWYXJzLmlubGluZVRhc2tEZWZpbml0aW9uLnRhc2tFeGVjdXRlSW5zdGFuY2UubGVuZ3RoPjApICRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb24udGFza19leGVjdXRlX2lkID0gJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrRGVmaW5pdGlvbi50YXNrRXhlY3V0ZUluc3RhbmNlWzBdLmlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb24udGFza0luaXRpYXRlSW5zdGFuY2UhPXVuZGVmaW5lZCAmJiAkc2NvcGUubG9jYWxWYXJzLmlubGluZVRhc2tEZWZpbml0aW9uLnRhc2tJbml0aWF0ZUluc3RhbmNlLmxlbmd0aD4wKSAkc2NvcGUubG9jYWxWYXJzLmlubGluZVRhc2tEZWZpbml0aW9uLnRhc2tfaW5pdGlhdGVfaWQgPSAkc2NvcGUubG9jYWxWYXJzLmlubGluZVRhc2tEZWZpbml0aW9uLnRhc2tJbml0aWF0ZUluc3RhbmNlWzBdLmlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmlubGluZVRhc2sucmVzb3VyY2VEZWZpbml0aW9uPWRhdGEuZGF0YS5yZXNvdXJjZURlZmluaXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmlubGluZVRhc2suZGF0YSA9IGRhdGEuZGF0YS5mb3JtX2RhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrLmRhdGE9PXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrLmRhdGEgPSB7fTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFzay53aWRnZXRzLmxheW91dD0gZGF0YS5kYXRhLndpZGdldHM7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zID0ge2Zvcm1WaWV3VHlwZToyLGZvcm1Mb2NrZWQgOiB0cnVlfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMudGFza0luaXRpYXRlZCA9IGZhbHNlOyAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmluaXRpYXRlRm9ybUxvYWRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuaXNDb2xsYXBzZWQzPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sMSk7ICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrLnRhc2tQcm9jUmVzcG9uc2UgPSB7c3RhdHVzIDogZXJyb3Iuc3RhdHVzLG1zZzplcnJvci5tc2d9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5sb2FkVGFza0RpcmVjdCkgJHNjb3BlLmxvY2FsVmFycy5TdGFydFRhc2soJHNjb3BlLmxvY2FsVmFycy50YXNrSWQsJHNjb3BlLmxvY2FsVmFycy5vdXRjb21lSWQsJHNjb3BlLmxvY2FsVmFycy5wcmV2aW91c1Rhc2spO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMucHJvY2Vzc1N0YXJ0VGFzayB8fCAkc2NvcGUubG9jYWxWYXJzLmF1dG9TZWFyY2gpICRzY29wZS5sb2NhbFZhcnMuU3RhcnRUYXNrKCRzY29wZS5sb2NhbFZhcnMubWVudUlkLCRzY29wZS5sb2NhbFZhcnMub3V0Y29tZUlkLCRzY29wZS5sb2NhbFZhcnMucHJldmlvdXNUYXNrKTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5wdWJsaWNUYXNrKSAkc2NvcGUubG9jYWxWYXJzLlN0YXJ0UHVibGljVGFzaygkc2NvcGUubG9jYWxWYXJzLm9yZ2FuaXNhdGlvbklkLCRzY29wZS5sb2NhbFZhcnMucHVibGljVGFza05hbWUsJHNjb3BlLmxvY2FsVmFycy5wdWJsaWNUYXNrSWQsJHNjb3BlLmxvY2FsVmFycy5vdXRjb21lSWQsJHNjb3BlLmxvY2FsVmFycy5wcmV2aW91c1Rhc2spO1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgfSxcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XHJcbiAgICAgICBcclxuICAgICAgIFxyXG4gICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0VGFza1Byb2NFeGVjdXRlICgpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tQcm9jRXhlY3V0ZS5odG1sJyxcclxuICAgICAgICAgICAgc2NvcGU6e1xyXG4gICAgICAgICAgICAgICAgICAgdGFza0RlZmluaXRpb24gOiBcIj1cIixcclxuICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZDogXCI9XCIsXHJcbiAgICAgICAgICAgICAgICAgICByZXNvdXJjZURlZmluaXRpb246XCI9XCIsXHJcbiAgICAgICAgICAgICAgICAgICB0YXNrRXhlY3V0ZUluc3RhbmNlOiBcIj1cIixcclxuICAgICAgICAgICAgICAgICAgIHRhc2tJbml0aWF0ZUluc3RhbmNlOiBcIj1cIixcclxuICAgICAgICAgICAgICAgICAgIGxvY2FsVmFyczogXCI9XCIsXHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgXHRcdFx0fSxcclxuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uKCRzY29wZSwkc3RhdGVQYXJhbXMsJGNvb2tpZXMsJHJvb3RTY29wZSxUYXNrRGF0YVNlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsS2F0YWx5b1N0YXRlTWFuYWdlcil7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuQ1RSTCA9XCJrdFRhc2tQcm9jRXhlY3V0ZVwiICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkPT11bmRlZmluZWQpICRzY29wZS5mZD17fTtcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubFZhcnM9PXVuZGVmaW5lZCkgJHNjb3BlLmxWYXJzPXt9O1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlO1xyXG4gICAgICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzPT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnM9e307XHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmxWYXJzLmlzQ29sbGFwc2VkMz10cnVlO1xyXG4gICAgICAgICAgICAgICAgICRzY29wZS50YXNrT3V0Y29tZXMgPSAkc2NvcGUubG9jYWxWYXJzLnRhc2tPdXRjb21lczsgICBcclxuICAgICAgICAgICAgICAgICAkc2NvcGUuZXhlY3V0ZVRhc2tEYXRhTG9hZGVkPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICRzY29wZS50YXNrRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkPSRzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZV9pZDtcclxuXHJcbiAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS50YXNrRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkPT09dW5kZWZpbmVkKSAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQ9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkO1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZyb21TdGF0ZU5hbWU9JHN0YXRlUGFyYW1zLmZyb21TdGF0ZU5hbWU7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZnJvbVN0YXRlUGFyYW1zPSRzdGF0ZVBhcmFtcy5mcm9tU3RhdGVQYXJhbXM7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuY29va2llRnJvbVN0YXRlTmFtZT0kY29va2llcy5nZXRPYmplY3QoJ2V4ZWN1dGVUYXNrRnJvbVN0YXRlTmFtZScpO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmNvb2tpZUZyb21TdGF0ZVBhcmFtcz0kY29va2llcy5nZXRPYmplY3QoJ2V4ZWN1dGVUYXNrRnJvbVN0YXRlUGFyYW1zJyk7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubm9CYWNrYnV0dG9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuYmFja0J0bkZyb21Db29raWU9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUua3NtID0gS2F0YWx5b1N0YXRlTWFuYWdlcjtcclxuICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgIGxldCBleGVjdXRlVGFza1N0YXRlPSAkc2NvcGUua3NtLmFkZFN1YmplY3QoJ2V4ZWN1dGVUYXNrU3RhdGVOYW1lJyskc2NvcGUudGFza0RlZmluaXRpb24udHJhbnNhY3Rpb25faWQsJHNjb3BlLnRhc2tEZWZpbml0aW9uLnRhc2tfZXhlY3V0ZV9pZCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgZXhlY3V0ZVRhc2tTdGF0ZU5hbWUgPSBleGVjdXRlVGFza1N0YXRlLnN1YmplY3QubmFtZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgbGV0IHRhc2tfZXhlY3V0ZWQgPSBmdW5jdGlvbihkYXRhKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVUYXNrU3RhdGUuc3ViamVjdC5zZXRTdGF0ZUNoYW5nZXMgPSBkYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVUYXNrU3RhdGUuc3ViamVjdC5ub3RpZnlPYnNlcnZlcnMoXCJ0YXNrX2V4ZWN1dGVkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IGFjdGlvbl90YXNrX2V4ZWN1dGVkID0gJHNjb3BlLmtzbS5hZGRBY3Rpb24oZXhlY3V0ZVRhc2tTdGF0ZU5hbWUsXCJ0YXNrX2V4ZWN1dGVkXCIsdGFza19leGVjdXRlZCk7XHJcblxyXG4gICAgICAgICAgICAgICBpZiAoJHNjb3BlLnRhc2tJbml0aWF0ZUluc3RhbmNlLmxlbmd0aD4wKVxyXG4gICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUudGFza19pbml0aWF0ZV9pZCA9ICRzY29wZS50YXNrSW5pdGlhdGVJbnN0YW5jZVswXS5pZDtcclxuICAgICAgICAgICAgICAgICRzY29wZS50YXNrRGVmaW5pdGlvbi50YXNrSW5pdGlhdGVJbnN0YW5jZSA9ICRzY29wZS50YXNrSW5pdGlhdGVJbnN0YW5jZVswXTtcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICBlbHNlICRzY29wZS50YXNrX2luaXRpYXRlX2lkID0gMDtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIGlmICgkc2NvcGUudGFza0V4ZWN1dGVJbnN0YW5jZS5sZW5ndGg+MClcclxuICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tfZXhlY3V0ZV9pZCA9ICRzY29wZS50YXNrRXhlY3V0ZUluc3RhbmNlWzBdLmlkO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLnRhc2tFeGVjdXRlSW5zdGFuY2UgPSAkc2NvcGUudGFza0V4ZWN1dGVJbnN0YW5jZVswXTtcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICBlbHNlICRzY29wZS50YXNrX2V4ZWN1dGVfaWQ9MDtcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZnJvbVN0YXRlTmFtZT09dW5kZWZpbmVkIHx8ICRzY29wZS5mcm9tU3RhdGVOYW1lPT1cIlwiKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuY29va2llRnJvbVN0YXRlTmFtZT09dW5kZWZpbmVkIHx8ICRzY29wZS5jb29raWVGcm9tU3RhdGVOYW1lPT1cIlwiKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5ub0JhY2tCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZyb21TdGF0ZU5hbWUgPSAgJHNjb3BlLmNvb2tpZUZyb21TdGF0ZU5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuYmFja0J0bkZyb21Db29raWUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgJGNvb2tpZXMucHV0T2JqZWN0KCdleGVjdXRlVGFza0Zyb21TdGF0ZU5hbWUnLCRzY29wZS5mcm9tU3RhdGVOYW1lKTtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZnJvbVN0YXRlUGFyYW1zPT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5jb29raWVGcm9tU3RhdGVQYXJhbXMhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuYmFja0J0bkZyb21Db29raWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZnJvbVN0YXRlUGFyYW1zID0gICRzY29wZS5jb29raWVGcm9tU3RhdGVQYXJhbXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9ZWxzZSBpZiAoJHNjb3BlLmNvb2tpZUZyb21TdGF0ZVBhcmFtcz09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAkY29va2llcy5wdXRPYmplY3QoJ2V4ZWN1dGVUYXNrRnJvbVN0YXRlUGFyYW1zJywkc2NvcGUuZnJvbVN0YXRlUGFyYW1zKTtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuYmFja0J0bkZyb21Db29raWUpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mcm9tU3RhdGVQYXJhbXMgPSAgJHNjb3BlLmNvb2tpZUZyb21TdGF0ZVBhcmFtcztcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfWVsc2VcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRjb29raWVzLnB1dE9iamVjdCgnZXhlY3V0ZVRhc2tGcm9tU3RhdGVQYXJhbXMnLCRzY29wZS5mcm9tU3RhdGVQYXJhbXMpOyAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5ncmlkc3RlclR5cGU9XCJ0YXNrXCI7XHJcbiAgICAgICAgICAgICAgICAvLyRzY29wZS5ncmlkc3RlckV4ZUZvcm1PcHRzID0gR3JpZHN0ZXJTZXJ2aWNlLmdldEdyaWRzdGVyT3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1UeXBlPVwiZVwiO1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5pc0NvbGxhcHNlZFRhc2tEZXRhaWxzPXRydWU7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5sVmFycy5jaGFuZ2VJc0NvbGxhcHNlZDMgPSBmdW5jdGlvbigpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxWYXJzLmlzQ29sbGFwc2VkMykgJHNjb3BlLmxWYXJzLmlzQ29sbGFwc2VkMyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICBlbHNlICRzY29wZS5sVmFycy5pc0NvbGxhcHNlZDMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnNldEZvcm0gPSBmdW5jdGlvbihmb3JtKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1hID0gZm9ybTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuRm9ybUxvY2tVbmxvY2sgPSBmdW5jdGlvbigpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtTG9ja2VkPSEkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybUxvY2tlZDtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5nb0JhY2sgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhdGUuZ28oJHNjb3BlLmZyb21TdGF0ZU5hbWUsJHNjb3BlLmZyb21TdGF0ZVBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucmV0dXJuVG9QcmV2aW91c1Rhc2sgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnNldE9wZW5UYXNrSW5OZXdQYWdlKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLkNhbmNlbENsaWNrZWQgPSBmdW5jdGlvbigpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLnByb2NfdHlwZSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLmlubGluZUluaXRpYXRlRm9ybUxvYWRlZD1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza0RlZmluaXRpb24uc2hvd0lubGluZVRhc2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dJbmxpbmVUYXNrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLmlubGluZVRhc2tJbml0aWF0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJGVtaXQoJ0lubGluZVRhc2tDbG9zZWQnLCRzY29wZS5sb2NhbFZhcnMudGFza0lkKTtcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5FeGVjdXRlVGFza0FjdGlvbiA9IGZ1bmN0aW9uKGFjdGlvbil7XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICBUYXNrRGF0YVNlcnZpY2UuRXhlY3V0ZVRhc2tBY3Rpb24oJHNjb3BlLmxvY2FsVmFycy50YXNrX2luaXRpYXRlX2lkLCRzY29wZS5sb2NhbFZhcnMudGFza19leGVjdXRlX2lkLGFjdGlvbixsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza0luaXRpYXRlSW5zdGFuY2UgPWRhdGEuZGF0YS5kYXRhLnRhc2tJbml0aWF0ZUluc3RhbmNlWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tFeGVjdXRlSW5zdGFuY2UgPWRhdGEuZGF0YS5kYXRhLnRhc2tFeGVjdXRlSW5zdGFuY2VbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnRhc2tFeGVjdXRlSW5zdGFuY2UhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza0RlZmluaXRpb24udGFza19leGVjdXRlX2lkID0gJHNjb3BlLnRhc2tFeGVjdXRlSW5zdGFuY2UuaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGlvbj09XCJjbGFpbVwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLnBhZ2VDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyb290U2NvcGUuJGJyb2FkY2FzdCgnUmVmcmVzaERhdGEwJyxkYXRhLmRhdGEucmV0X3ZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEuZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICRzY29wZS4kb24oJ0V4ZWN1dGVUYXNrJyskc2NvcGUudGFza19leGVjdXRlX2lkLGZ1bmN0aW9uKGV2ZW50LGRhdGEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZvcm0gPSAkc2NvcGUuZm9ybWE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm0uJHNldFN1Ym1pdHRlZCgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vaWYgKGZvcm0uJHN1Ym1pdHRlZCkgJHNjb3BlLmxvY2FsVmFycy5zZXRTdWJtaXR0ZWQoZm9ybSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuRXhlY3V0ZVRhc2soZGF0YS5vdXRjb21lSWQsZm9ybSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuRXhlY3V0ZVRhc2sgPSBmdW5jdGlvbihvdXRjb21lSWQsZm9ybSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmb3JtLiR2YWxpZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgVGFza0RhdGFTZXJ2aWNlLmV4ZWN1dGVUYXNrKCRzY29wZS50YXNrX2V4ZWN1dGVfaWQsJHNjb3BlLmRhc2hib2FyZC5kYXRhLG91dGNvbWVJZCxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YT8uZGF0YT8ubXNnIT09XCJcIikgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEuZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm9vdFNjb3BlLiRicm9hZGNhc3QoJHNjb3BlLnRhc2tEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQrJy0nK1wiVGFza1Bvc3RQcm9jZXNzXCIrJHNjb3BlLnRhc2tEZWZpbml0aW9uLnRyYW5zYWN0aW9uX2lkLGRhdGEuZGF0YS5yZXRfdmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyb290U2NvcGUuJGJyb2FkY2FzdCgnRXhlY3V0ZVRhc2tQb3N0UHJvY2VzcycrJHNjb3BlLnRhc2tfZXhlY3V0ZV9pZCxkYXRhLmRhdGEucmV0X3ZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0YXNrU3RhdGVOYW1lID0gXCJleGVjdXRlVGFza1N0YXRlTmFtZVwiKyRzY29wZS50YXNrRGVmaW5pdGlvbi50cmFuc2FjdGlvbl9pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24odGFza1N0YXRlTmFtZSxcInRhc2tfZXhlY3V0ZWRcIix7dGFza19pZDokc2NvcGUudGFza0RlZmluaXRpb24udGFza19leGVjdXRlX2lkLGFjdGlvbjonZXhlY3V0ZXRhc2snfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gLy8gaWYgKGlzVmFsaWQpXHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlBhcmFtZXRlcnNMYW5nLkludmFsaWRGb3JtTWVzc2FnZSwnd2FybmluZycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgIC8vIFxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZXRTdWJtaXR0ZWQgPSBmdW5jdGlvbiAoZm9ybSkge1xyXG4gICAgICAgICAgICAgICAgICBhbmd1bGFyLmZvckVhY2goZm9ybSwgZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICBpZihpdGVtICYmIGl0ZW0uJCRwYXJlbnRGb3JtID09PSBmb3JtICYmIGl0ZW0uJHNldFN1Ym1pdHRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZXRTdWJtaXR0ZWQoaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICB9ICAgICAgICAgICAgIFxyXG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0VGFza1Byb2NJbml0aWF0ZSAoKSB7XHJcbiAgICAgICAgICAgICB2YXIgY29udHJvbGxlciA9IFsnJHNjb3BlJywgJyRzdGF0ZVBhcmFtcycsJyRzdGF0ZScsJ1VzZXJTZXJ2aWNlJywnUmVzb3VyY2VzRGF0YVNlcnZpY2UnLCckcm9vdFNjb3BlJywnUHJvY2Vzc2luZ1NlcnZpY2UnLCckdGltZW91dCcsJyRjb29raWVzJywnQ29kZXNTZXJ2aWNlJywnS2F0YWx5b1N0YXRlTWFuYWdlcicsXHJcbiAgICAgICAgICAgICAgJ1dpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UnLCdUYXNrRGF0YVNlcnZpY2UnLCdUYXNrUHJvY1NlcnZpY2UnLCdNZXNzYWdpbmdTZXJ2aWNlJywnR3JpZHN0ZXJTZXJ2aWNlJywgJyR3aW5kb3cnLCckc2NlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkc2NvcGUsJHN0YXRlUGFyYW1zLCRzdGF0ZSxVc2VyU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSwkcm9vdFNjb3BlLFByb2Nlc3NpbmdTZXJ2aWNlLCR0aW1lb3V0LCRjb29raWVzLENvZGVzU2VydmljZSxLYXRhbHlvU3RhdGVNYW5hZ2VyLFxyXG4gICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UsVGFza0RhdGFTZXJ2aWNlLFRhc2tQcm9jU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSwgJHdpbmRvdywkc2NlKSB7XHJcbiAgICAgICAgICAgICRzY29wZS5DVFJMID1cImt0VGFza1Byb2NJbml0aWF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnM9PXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycz17fTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5pc0NvbGxhcHNlZDM9dHJ1ZTsgIFxyXG4gICAgICAgICAgLy8kc2NvcGUubG9jYWxWYXJzID0ge2Rhc2hib2FyZDp7fX07XHJcbiAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmF1dG9Jbml0aWF0ZT1mYWxzZTtcclxuICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2hvd1Rhc2sgPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMucHJldmlvdXNUYXNrPT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnMucHJldmlvdXNUYXNrID0gMDtcclxuICAgICAgICAgIHZhciBhUGFyYW1zID0ge307XHJcbiAgICAgICAgICB2YXIgcFRhc2tQYWNrYWdlPXt9O1xyXG4gICAgICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlO1xyXG4gICAgICAgICAgaWYgKCRzY29wZS5mZCE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAgICRzY29wZS4kb24oJ1Byb2Nlc3NUYXNrJysgJHNjb3BlLmZkLnByZXNlbnRhdGlvbklkLGZ1bmN0aW9uKGV2ZW50LGRhdGEpe1xyXG4gICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5pbmxpbmVUYXNrRGVmaW5pdGlvbj09dW5kZWZpbmVkKSAkc2NvcGUubG9jYWxWYXJzLmlubGluZVRhc2tEZWZpbml0aW9uPXt0YXNrX2V4ZWN1dGVfaWQgOiBkYXRhLnRhc2tfZXhlY3V0ZV9pZH07XHJcbiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb24udGFza19leGVjdXRlX2lkPT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb24udGFza19leGVjdXRlX2lkID0gZGF0YS50YXNrX2V4ZWN1dGVfaWQ7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLlN0YXJ0VGFzayhkYXRhLnRhc2tJZCxkYXRhLm91dGNvbWVJZCk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmluaXRpYXRlRm9ybUxvYWRlZD1mYWxzZTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5pc1NhdmluZz1mYWxzZTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5wcmV2aW91c1Rhc2s9JHNjb3BlLnRhc2tEZWZpbml0aW9uLnByZXZfdGFza19pZDtcclxuICAgICAgICAgICAgICAgICRzY29wZS5wcmV2aW91c1Rhc2tPdXRjb21lSWQ9JHN0YXRlUGFyYW1zLm91dGNvbWVfaWQ7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucHJldmlvdXNUYXNrUGFja2FnZT0kc3RhdGVQYXJhbXMucHJldl90YXNrX3BhY2thZ2U7IFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmdyaWRzdGVyVHlwZT1cInRhc2tcIjtcclxuICAgICAgICAgICAgICAgICRzY29wZS5zaG93U2VhcmNoRmlsdGVycz1mYWxzZTsgICAgICBcclxuICAgICAgICAgICAgICAgIC8vJHNjb3BlLmRhc2hib2FyZCA9IHt3aWRnZXRzIDogW119O1xyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5wcmV2aW91c1Rhc2tPdXRjb21lSWQ9PVwiXCIpICRzY29wZS5wcmV2aW91c1Rhc2tPdXRjb21lSWQgPSAwO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZnJvbVN0YXRlTmFtZT0kc3RhdGVQYXJhbXMuZnJvbVN0YXRlTmFtZTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mcm9tU3RhdGVQYXJhbXM9JHN0YXRlUGFyYW1zLmZyb21TdGF0ZVBhcmFtcztcclxuICAgICAgICAgICAgICAgICRzY29wZS5jb29raWVGcm9tU3RhdGVOYW1lPSRjb29raWVzLmdldE9iamVjdCgnaW5pdGlhdGVUYXNrRnJvbVN0YXRlTmFtZScpO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmNvb2tpZUZyb21TdGF0ZVBhcmFtcz0kY29va2llcy5nZXRPYmplY3QoJ2luaXRpYXRlVGFza0Zyb21TdGF0ZVBhcmFtcycpO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLm5vQmFja2J1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmJhY2tCdG5Gcm9tQ29va2llPWZhbHNlO1xyXG4gICAgICBcclxuICAgICAgXHJcbiAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucmVtb3ZlRmllbGQgPSBmdW5jdGlvbiAoaW5kZXgpe1xyXG5cdFx0XHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuXHRcdFx0XHRcdFx0IFxyXG4gICAgICAgICAgICAgICAgICRzY29wZS5pbnB1dEFycmF5LmxheW91dC5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cdFx0XHRcdFx0XHQgXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB9ICAgXHJcblxyXG4gXHJcbiBcclxuICAgIFxyXG4gICAgICAgICAgJHNjb3BlLkluaXRpdGF0ZUFsbExpc3QgPSBmdW5jdGlvbigpe1xyXG4gICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZCeVR5cGUobGFuZywndGFzaycpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdyaWRPcHRpb25zLmRhdGEgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICBcclxuICAgXHJcbiAgICAgICRzY29wZS5Jbml0aXRhdGVNeUxpc3QgPSBmdW5jdGlvbigpe1xyXG4gICAgICBcclxuICAgICAgICAgXHJcbiAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZMaXN0QnlMYW5nQnlUeXBlVXNlcihsYW5nLCd0YXNrJykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5ncmlkT3B0aW9ucy5kYXRhID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICBcclxuICAgICAgICAgIFxyXG4gICAgfTsgICBcclxuICAgIFxyXG4gICBcclxuICAgICBcclxuICAgICAgXHJcbiAgICAgXHJcbiAgICAgIGlmICgkc2NvcGUuZnJvbVN0YXRlTmFtZT09dW5kZWZpbmVkIHx8ICRzY29wZS5mcm9tU3RhdGVOYW1lPT1cIlwiKVxyXG4gICAgICB7XHJcbiAgICAgICAgICBpZiAoJHNjb3BlLmNvb2tpZUZyb21TdGF0ZU5hbWU9PXVuZGVmaW5lZCB8fCAkc2NvcGUuY29va2llRnJvbVN0YXRlTmFtZT09XCJcIilcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJHNjb3BlLm5vQmFja0J1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAkc2NvcGUuZnJvbVN0YXRlTmFtZSA9ICAkc2NvcGUuY29va2llRnJvbVN0YXRlTmFtZTtcclxuICAgICAgICAgICAgJHNjb3BlLmJhY2tCdG5Gcm9tQ29va2llID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICAkY29va2llcy5wdXRPYmplY3QoJ2luaXRpYXRlVGFza0Zyb21TdGF0ZU5hbWUnLCRzY29wZS5mcm9tU3RhdGVOYW1lKTtcclxuICAgICAgICBcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgaWYgKCRzY29wZS5mcm9tU3RhdGVQYXJhbXM9PXVuZGVmaW5lZClcclxuICAgICAge1xyXG4gICAgICAgICAgaWYgKCRzY29wZS5jb29raWVGcm9tU3RhdGVQYXJhbXMhPXVuZGVmaW5lZClcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBpZiAoJHNjb3BlLmJhY2tCdG5Gcm9tQ29va2llKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mcm9tU3RhdGVQYXJhbXMgPSAgJHNjb3BlLmNvb2tpZUZyb21TdGF0ZVBhcmFtcztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgfWVsc2UgaWYgKCRzY29wZS5jb29raWVGcm9tU3RhdGVQYXJhbXM9PXVuZGVmaW5lZClcclxuICAgICAge1xyXG4gICAgICAgICRjb29raWVzLnB1dE9iamVjdCgnaW5pdGlhdGVUYXNrRnJvbVN0YXRlUGFyYW1zJywkc2NvcGUuZnJvbVN0YXRlUGFyYW1zKTtcclxuICAgICAgICBcclxuICAgICAgfWVsc2VcclxuICAgICAge1xyXG4gICAgICAgICAgaWYgKCRzY29wZS5iYWNrQnRuRnJvbUNvb2tpZSlcclxuICAgICAgICAgIHtcclxuICAgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLmZyb21TdGF0ZVBhcmFtcyA9ICAkc2NvcGUuY29va2llRnJvbVN0YXRlUGFyYW1zO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgfWVsc2VcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAkY29va2llcy5wdXRPYmplY3QoJ2luaXRpYXRlVGFza0Zyb21TdGF0ZVBhcmFtcycsJHNjb3BlLmZyb21TdGF0ZVBhcmFtcyk7ICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgICAgIGlmICgkc2NvcGUucHJldmlvdXNUYXNrPT11bmRlZmluZWQgfHwgJHNjb3BlLnByZXZpb3VzVGFzaz09XCJcIilcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAvLyAkc3RhdGUuZ28oKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICRzY29wZS5wcmV2aW91c1Rhc2sgPSAwO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgJHNjb3BlLnBvdGVudGlhbE93bmVycyA9IHt9O1xyXG4gICAgICBcclxuXHJcbiAgICAgIFxyXG4gICAgLy9XaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLmRlUmVnaXN0ZXJBbGxXaWRnZXRzKCk7XHQvL01pZ29yIC0gY2lzdGltIHRhc2t3aWRnZXRSZWdpc3RyeSBcclxuXHJcbiAgICAgICRzY29wZS5sb2NhbFRhc2tJZD1XaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnJlZ2lzdGVyVGFzaygkc2NvcGUudGFza0RlZklkKTtcclxuICAgICAgXHJcbiAgICAgLy8gJHNjb3BlLnRhc2tEZWZpbml0aW9uID17fTtcclxuICAgICAgJHNjb3BlLnBvdGVudGlhbE93bmVycy5wb3RlbnRpYWxPd25lcnNVc2VycyA9IFtdO1xyXG4gICAgICAkc2NvcGUucG90ZW50aWFsT3duZXJzLnBvdGVudGlhbE93bmVyc0dyb3VwcyA9IFtdO1xyXG4gICAgICBcclxuICAgICAgICAgJHNjb3BlLkZvcm1Mb2NrVW5sb2NrID0gZnVuY3Rpb24oKVxyXG4gICAgICB7XHJcbiAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1Mb2NrZWQ9ISRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtTG9ja2VkO1xyXG5cclxuICAgICBcclxuICAgICAgfTtcclxuICAgICBcclxuICAgICAgJHNjb3BlLm1lbnVJZCA9ICRzdGF0ZVBhcmFtcy5pZDtcclxuICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgIFxyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMuTmV3VGFzayA9IGZ1bmN0aW9uKHRhc2tJZClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmlubGluZVRhc2sud2lkZ2V0cy5sYXlvdXQ9YW5ndWxhci5jb3B5KCRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFzay53aWRnZXRzT3JpZ2luYWwpO1xyXG4gICAgICAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLmlubGluZVRhc2tJbml0aWF0ZWQ9ZmFsc2U7XHJcbiAgICAgICAgfTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMuU3RhcnROZXdUYXNrID0gZnVuY3Rpb24oKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuU3RhcnRUYXNrKCRzY29wZS50YXNrRGVmaW5pdGlvbi5SZXNvdXJjZURlZklkX2lkLDAsMCk7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5yZXR1cm5Ub1ByZXZpb3VzVGFzayA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgJHNjb3BlLmtzbT1LYXRhbHlvU3RhdGVNYW5hZ2VyO1xyXG4gICAgICAgICAgICAgbGV0IHRhc2tTdGF0ZU5hbWUgPSBcInRhc2tcIiskc2NvcGUudGFza0RlZmluaXRpb24ucHJldl90YXNrX3RyYW5zYWN0aW9uX2lkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAkc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24odGFza1N0YXRlTmFtZSxcInRhc2tfY2xvc2VkXCIpO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0T3BlblRhc2tJbk5ld1BhZ2UoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIH07ICAgICAgIFxyXG4gICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5DYW5jZWxDbGlja2VkID0gZnVuY3Rpb24oKVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMuZnJvbU91dGNvbWUgICYmICEkc2NvcGUudGFza0RlZmluaXRpb24uaW5saW5lX3Rhc2spXHJcbiAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5leGVjdXRlVGFza0RhdGFMb2FkZWQ9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMucGFnZUNoYW5nZWQhPXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycy5wYWdlQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLnByb2NfdHlwZT0wO1xyXG4gICAgICAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLmlubGluZUluaXRpYXRlRm9ybUxvYWRlZD1mYWxzZTtcclxuICAgICAgICAgICAgICRzY29wZS50YXNrRGVmaW5pdGlvbi5zaG93SW5saW5lVGFzayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLmlubGluZVRhc2tJbml0aWF0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucHJvY190eXBlPTA7XHJcbiAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmlubGluZUluaXRpYXRlRm9ybUxvYWRlZD1mYWxzZTtcclxuICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2hvd0lubGluZVRhc2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuaW5saW5lVGFza0luaXRpYXRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICRzY29wZS4kZW1pdCgnSW5saW5lVGFza0Nsb3NlZCcsJHNjb3BlLmxvY2FsVmFycy50YXNrSWQpO1xyXG4gICAgICAgICAgICAgaWYgKCEkc2NvcGUudGFza0RlZmluaXRpb24uaW5saW5lX3Rhc2spICR3aW5kb3cuaGlzdG9yeS5iYWNrKCk7XHJcbiAgICAgICAgICB9O1xyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgICAkc2NvcGUubG9jYWxWYXJzLkF1dG9Jbml0aWF0ZVRhc2sgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgIC8vICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgIHZhciBwYXJlbnREYXRhc2V0PSRzY29wZS5sb2NhbFZhcnMuZ2V0UHJldmlvdXNUYXNrV2lkZ2V0KCk7XHJcbiAgICAgICAgaWYgKCRzY29wZS5wcmV2aW91c1Rhc2tPdXRjb21lSWQ9PXVuZGVmaW5lZCkgJHNjb3BlLnByZXZpb3VzVGFza091dGNvbWVJZD0wO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBUYXNrRGF0YVNlcnZpY2UuaW5pdGlhdGVUYXNrKCRzY29wZS50YXNrRGVmaW5pdGlvbi5SZXNvdXJjZURlZklkX2lkLCRzY29wZS5wcmV2aW91c1Rhc2ssJHNjb3BlLnByZXZpb3VzVGFza091dGNvbWVJZCxbXSwkc2NvcGUucG90ZW50aWFsT3duZXJzLHBhcmVudERhdGFzZXRbJ2RhdGFzZXRJZCddLHBhcmVudERhdGFzZXRbJ2RhdGFzZXRSZWNvcmRJZCddLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tfaW5pdGlhdGVfaWQgPSBkYXRhLmRhdGEudGFza19pbml0aWF0ZV9pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tfZXhlY3V0ZV9pZCA9IGRhdGEuZGF0YS50YXNrX2V4ZWN1dGVfaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHN0YXRlLmdvKCdhcHAubmF2YmFyLnRhc2tzLmV4ZWN1dGUnLHtpZDogJHNjb3BlLnRhc2tEZWZJZCx0YXNrX2luaXRpYXRlX2lkOiRzY29wZS50YXNrX2luaXRpYXRlX2lkLHRhc2tfZXhlY3V0ZV9pZDokc2NvcGUudGFza19leGVjdXRlX2lkLGZyb21TdGF0ZU5hbWU6JHNjb3BlLmZyb21TdGF0ZU5hbWUsZnJvbVN0YXRlUGFyYW1zOiRzY29wZS5mcm9tU3RhdGVQYXJhbXMscHJldl90YXNrX3BhY2thZ2U6JHNjb3BlLnByZXZpb3VzVGFza1BhY2thZ2UscHJldjokc2NvcGUudGFza0V4ZWN1dGVJZH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgLy8gfVxyXG4gICAgICB9O1xyXG4gICAgICBcclxuICAgICAgJHNjb3BlLiRvbignQ2xvc2VUYXNrRm9ybScrJHNjb3BlLnRhc2tEZWZpbml0aW9uLnRyYW5zYWN0aW9uX2lkLGZ1bmN0aW9uKGV2ZW50LGRhdGEpe1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93VGFzayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuJGVtaXQoJ0lubGluZVRhc2tDbG9zZWQnLCRzY29wZS5sb2NhbFZhcnMudGFza0lkKTtcclxuICAgICAgIH0pO1xyXG4gICAgICBcclxuICAgICAgICRzY29wZS5sb2NhbFZhcnMuSW5pdGlhdGVUYXNrID0gZnVuY3Rpb24oZm9ybSl7XHJcbiAgICAgICAgdmFyIGYgPSAkc2NvcGUuZm9ybWE7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKGZvcm0uJHN1Ym1pdHRlZCkgJHNjb3BlLmxvY2FsVmFycy5zZXRTdWJtaXR0ZWQoZm9ybSk7XHJcbiAgICAgICAgaWYgKGZvcm0uJHZhbGlkKSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvL3ZhciBpbml0aWF0ZURhdGE9e307XHJcbiAgICAgICAgICAgICRyb290U2NvcGUuJGJyb2FkY2FzdCgnUHJvY2Vzc1Rhc2tXaWRnZXRzJyx7fSk7IC8vc3ZpIHdpZGdldGkgc2x1c2FqdSBvdmFqIGV2ZW50XHJcbiAgICAgICAgICAgICRzY29wZS5pc1NhdmluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLnByZXZpb3VzVGFza091dGNvbWVJZD09dW5kZWZpbmVkKSAkc2NvcGUucHJldmlvdXNUYXNrT3V0Y29tZUlkPTA7XHJcbiAgICAgICAgICAgIC8vYWtvIGplIHByZXRob2RuaSB0YXNrIGltYW8gbGlzdHUgcG92dWNpIFdpZGdldERhdGFcclxuICAgICAgICAgICAgdmFyIHBhcmVudERhdGFzZXQ9JHNjb3BlLmxvY2FsVmFycy5nZXRQcmV2aW91c1Rhc2tXaWRnZXQoXCJyZXNvdXJjZUxpbmtEYXRhc2V0TGlzdFwiKTtcclxuICAgICAgXHJcbiAgICAgICAgICAgIGlmIChwYXJlbnREYXRhc2V0WydkYXRhc2V0SWQnXT09dW5kZWZpbmVkIHx8IHBhcmVudERhdGFzZXRbJ2RhdGFzZXRJZCddPT1cIlwiKSBwYXJlbnREYXRhc2V0WydkYXRhc2V0SWQnXSA9IDA7XHJcbiAgICAgICAgICAgIGlmIChwYXJlbnREYXRhc2V0WydkYXRhc2V0UmVjb3JkSWQnXT09dW5kZWZpbmVkIHx8IHBhcmVudERhdGFzZXRbJ2RhdGFzZXRSZWNvcmRJZCddPT1cIlwiKSBwYXJlbnREYXRhc2V0WydkYXRhc2V0UmVjb3JkSWQnXSA9IDA7XHJcbiAgICAgICAgICAgIGxldCByZXNvdXJjZV9kZWZfaWQgPSAkc2NvcGUudGFza0RlZmluaXRpb24uUmVzb3VyY2VEZWZJZDtcclxuICAgICAgICAgICAgaWYgKHJlc291cmNlX2RlZl9pZD09dW5kZWZpbmVkKSByZXNvdXJjZV9kZWZfaWQgPSAkc2NvcGUudGFza0RlZmluaXRpb24uUmVzb3VyY2VEZWZJZF9pZDtcclxuICAgICAgICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5Jbml0aWF0ZVRhc2socmVzb3VyY2VfZGVmX2lkLCRzY29wZS50YXNrRGVmaW5pdGlvbi50cmFuc2FjdGlvbl9pZCwkc2NvcGUuZGFzaGJvYXJkLmRhdGEsJHNjb3BlLnBvdGVudGlhbE93bmVycyxwYXJlbnREYXRhc2V0WydkYXRhc2V0SWQnXSxwYXJlbnREYXRhc2V0WydkYXRhc2V0UmVjb3JkSWQnXSxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHRcdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEuZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHJvb3RTY29wZS4kYnJvYWRjYXN0KCdJbml0aWF0ZVRhc2tQb3N0UHJvY2VzcycrJHNjb3BlLnRhc2tEZWZpbml0aW9uLnRyYW5zYWN0aW9uX2lkLGRhdGEuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL292byB0cmViYSBzdGF2aXRpIHUgZXZlbnQgSW5pdGlhdGVUYXNrUG9zdFByb2Nlc3NGaW5pc2hlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmRhdGEudGFza0luaXRpYXRlSW5zdGFuY2UhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhLnRhc2tJbml0aWF0ZUluc3RhbmNlLmxlbmd0aD4wKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLnRhc2tJbml0aWF0ZUluc3RhbmNlID0gZGF0YS5kYXRhLnRhc2tJbml0aWF0ZUluc3RhbmNlWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLnRhc2tfaW5pdGlhdGVfaWQgPSAkc2NvcGUudGFza0RlZmluaXRpb24udGFza0luaXRpYXRlSW5zdGFuY2UuaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJfdmFsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhLnJldF92YWx1ZSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRhdGEuZGF0YS5yZXRfdmFsdWUubGVuZ3RoPjApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmRhdGEucmV0X3ZhbHVlWzBdLmVvc1Jlc3BvbnNlIT1udWxsICYmIGRhdGEuZGF0YS5yZXRfdmFsdWVbMF0uZW9zUmVzcG9uc2UhPXVuZGVmaW5lZCkgJHNjb3BlLmVvc1Jlc3BvbnNlID0gSlNPTi5zdHJpbmdpZnkoZGF0YS5kYXRhLnJldF92YWx1ZVswXS5lb3NSZXNwb25zZSxudWxsLDIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuZGF0YS5yZXRfdmFsdWVbMF0uZW9zUmVzcG9uc2UyIT1udWxsICYmIGRhdGEuZGF0YS5yZXRfdmFsdWVbMF0uZW9zUmVzcG9uc2UyIT11bmRlZmluZWQpICRzY29wZS5lb3NSZXNwb25zZTIgPSBKU09OLnN0cmluZ2lmeShkYXRhLmRhdGEucmV0X3ZhbHVlWzBdLmVvc1Jlc3BvbnNlMixudWxsLDIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcl92YWwgPSBkYXRhLmRhdGEucmV0X3ZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSByX3ZhbCA9IHt0YXNrX2luaXRpYXRlX2lkOiRzY29wZS50YXNrRGVmaW5pdGlvbi50YXNrX2luaXRpYXRlX2lkfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyb290U2NvcGUuJGJyb2FkY2FzdCgkc2NvcGUudGFza0RlZmluaXRpb24ucGFnZV9zdGF0ZV9pZCsnLScrXCJUYXNrUG9zdFByb2Nlc3NcIiskc2NvcGUudGFza0RlZmluaXRpb24udHJhbnNhY3Rpb25faWQscl92YWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZXhlY3V0ZSBhY3Rpb24gdGFza19pbml0aWF0ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5rc20gPSBLYXRhbHlvU3RhdGVNYW5hZ2VyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRhc2tTdGF0ZU5hbWUgPSBcInRhc2tcIiskc2NvcGUudGFza0RlZmluaXRpb24udHJhbnNhY3Rpb25faWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24odGFza1N0YXRlTmFtZSxcInRhc2tfaW5pdGlhdGVkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhLnJlc3RhcnRfdGFzayE9bnVsbCAmJiBkYXRhLmRhdGEucmVzdGFydF90YXNrIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLnRyYW5zYWN0aW9uX2lkID0gZGF0YS5kYXRhLnJlc3RhcnRfdGFzay5kYXRhLnRyYW5zYWN0aW9uSWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJG9uKCdDbG9zZVRhc2tGb3JtJyskc2NvcGUudGFza0RlZmluaXRpb24udHJhbnNhY3Rpb25faWQsZnVuY3Rpb24oZXZlbnQsZGF0YSl7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93VGFzayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRlbWl0KCdJbmxpbmVUYXNrQ2xvc2VkJywkc2NvcGUubG9jYWxWYXJzLnRhc2tJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRlbWl0KCdSZWZyZXNoRGF0YScrICRzY29wZS50YXNrRGVmaW5pdGlvbi5wcmV2X3Rhc2tfaWQsJHNjb3BlLnRhc2tEZWZpbml0aW9uLlJlc291cmNlRGVmSWRfaWQpOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMudGFza0luaXRpYXRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuZGF0YS50YXNrX2V4ZWN1dGVfaWQ+MClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuZGF0YS50YXNrZGVmLlBhcmFtZXRlcnMhPW51bGwgJiYgZGF0YS5kYXRhLnRhc2tkZWYuUGFyYW1ldGVycyE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhLnRhc2tkZWYuUGFyYW1ldGVycy5BdXRvTG9hZEV4ZUZvcm0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLkdldEV4ZWN1dGVUYXNrQnlFeGVJZChkYXRhLmRhdGEudGFza19leGVjdXRlX2lkLGRhdGEuZGF0YS50YXNrX2luaXRpYXRlX2lkKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJHNjb3BlLmlzU2F2aW5nID0gZmFsc2U7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmVycm9yTXNnID0gJHNjZS50cnVzdEFzSHRtbChlcnJvci5tc2cpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuaXNTYXZpbmcgPSBmYWxzZTsgIFxyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHJcbiAgICAgICAgICB9IC8vIGlmIChpc1ZhbGlkKVxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoXCJQbGVhc2UgY29ycmVjdCBpbnZhbGlkIGVudHJpZXNcIiwnd2FybmluZycpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgfTtcclxuXHJcbiAgICAkc2NvcGUubG9jYWxWYXJzLmdldFByZXZpb3VzVGFza1dpZGdldCAgPSBmdW5jdGlvbihkZWlUeXBlKVxyXG4gICAge1xyXG4gICAgICB2YXIgcFRhc2tQa2cgPSBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLmdldFByZXZUYXNrRGF0YSgkc2NvcGUudGFza0RlZmluaXRpb24ucHJldl90YXNrX2lkKTtcclxuICAgICAgICAgICAgIHZhciBkYXRhc2V0SWQ9MCxkYXRhc2V0UmVjb3JkSWQ9MCxwVGFza0RhdGEscFRhc2tEYXRhQXJyYXk7XHJcbiAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkocFRhc2tQa2cpKVxyXG4gICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBUYXNrRGF0YUFycmF5ID0gW3BUYXNrUGtnXTtcclxuICAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcFRhc2tEYXRhQXJyYXkgPSBwVGFza1BrZzsgICAgICAgIFxyXG4gICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgZm9yIChsZXQgbD0wO2w8cFRhc2tEYXRhQXJyYXkubGVuZ3RoO2wrKylcclxuICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwVGFza0RhdGEgPSBwVGFza0RhdGFBcnJheVtsXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocFRhc2tEYXRhLkRFSSE9dW5kZWZpbmVkICYmIHBUYXNrRGF0YS5ERUkhPW51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHBUYXNrRGF0YS5ERUkubGVuZ3RoO2krKylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocFRhc2tEYXRhLkRFSVtpXS5uYW1lPT1kZWlUeXBlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocFRhc2tEYXRhLkRFSVtpXS52YWx1ZSE9dW5kZWZpbmVkICYmIHBUYXNrRGF0YS5ERUlbaV0udmFsdWUhPW51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7ajxwVGFza0RhdGEuREVJW2ldLnZhbHVlLmxlbmd0aDtqKyspXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocFRhc2tEYXRhLkRFSVtpXS52YWx1ZVtqXS5uYW1lPT1cInJlc291cmNlSWRcIiAmJiBwVGFza0RhdGEuREVJW2ldLnZhbHVlW2pdLnZhbHVlIT11bmRlZmluZWQpIGRhdGFzZXRJZD1wVGFza0RhdGEuREVJW2ldLnZhbHVlW2pdLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocFRhc2tEYXRhLkRFSVtpXS52YWx1ZVtqXS5uYW1lPT1cInJlc291cmNlUmVjb3JkSWRcIiAmJiBwVGFza0RhdGEuREVJW2ldLnZhbHVlW2pdLnZhbHVlIT11bmRlZmluZWQpIGRhdGFzZXRSZWNvcmRJZD1wVGFza0RhdGEuREVJW2ldLnZhbHVlW2pdLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICByZXR1cm4geydkYXRhc2V0SWQnOmRhdGFzZXRJZCwnZGF0YXNldFJlY29yZElkJzpkYXRhc2V0UmVjb3JkSWR9O1xyXG4gICAgfTtcclxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNldFN1Ym1pdHRlZCA9IGZ1bmN0aW9uIChmb3JtKSB7XHJcbiAgICAgICAgICBmb3JtLiRzZXRTdWJtaXR0ZWQoKTtcclxuICAgICAgICAgIGFuZ3VsYXIuZm9yRWFjaChmb3JtLCBmdW5jdGlvbihpdGVtKSB7XHJcbiAgICAgICAgICAgIGlmKGl0ZW0gJiYgaXRlbS4kJHBhcmVudEZvcm0gPT09IGZvcm0gJiYgaXRlbS4kc2V0U3VibWl0dGVkKSB7XHJcbiAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZXRTdWJtaXR0ZWQoaXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB9XTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tQcm9jSW5pdGlhdGUuaHRtbCcsXHJcbiAgICAgICAgICAgIHNjb3BlOntcclxuICAgICAgICAgICAgICAgICAgIHRhc2tEZWZpbml0aW9uIDogXCI9XCIsXHJcbiAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmQ6IFwiPVwiLFxyXG4gICAgICAgICAgICAgICAgICAgcmVzb3VyY2VEZWZpbml0aW9uOlwiPVwiLFxyXG4gICAgICAgICAgICAgICAgICAgbG9jYWxWYXJzOiBcIj1cIixcclxuICAgICAgXHRcdFx0fSxcclxuICAgICAgICAgICAgY29udHJvbGxlcjpjb250cm9sbGVyLFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgXHJcbiAgICAgICAgICAgICBcclxuICAgIH1cclxuICB9ICAgICAgICAgICAgIFxyXG59O1xuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24ga3RUYXNrUHJvY0xpc3QgKCkge1xuICAgICAgICAgICAgIHZhciBjb250cm9sbGVyID0gWyckc2NvcGUnLCAnJHN0YXRlUGFyYW1zJywnJHN0YXRlJywnVXNlclNlcnZpY2UnLCdSZXNvdXJjZXNEYXRhU2VydmljZScsJyRyb290U2NvcGUnLCdQcm9jZXNzaW5nU2VydmljZScsJyR0aW1lb3V0JywnJGNvb2tpZXMnLCdDb2Rlc1NlcnZpY2UnLCdXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlJywnVGFza0RhdGFTZXJ2aWNlJywnTWVzc2FnaW5nU2VydmljZScsJ0dyaWRzdGVyU2VydmljZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCRzY29wZSwkc3RhdGVQYXJhbXMsJHN0YXRlLFVzZXJTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLCRyb290U2NvcGUsUHJvY2Vzc2luZ1NlcnZpY2UsJHRpbWVvdXQsJGNvb2tpZXMsQ29kZXNTZXJ2aWNlLFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UsVGFza0RhdGFTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlKSB7XG4gICAgICAgICAgXG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICBcbiAgICAgICAgICB9XTtcbiAgICAgICAgICBcbiAgICAgICAgICBcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXG4gICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza1Byb2NMaXN0Lmh0bWwnLFxuICAgICAgICAgICAgY29udHJvbGxlcjpjb250cm9sbGVyLFxuICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcbiAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmxvY2FsVmFycyA9IHt9OyAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUuc3RhdGVOYW1lPSRzdGF0ZS5jdXJyZW50Lm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLnN0YXRlUGFyYW1zID0gJHN0YXRlLmN1cnJlbnQucGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICBzY29wZS50YXNrX2luaXRpYXRlX2lkPSRzdGF0ZVBhcmFtcy50YXNrX2luaXRpYXRlX2lkO1xuICAgICAgICAgICAgICAgICAgICBzY29wZS50YXNrX2V4ZWN1dGVfaWQ9JHN0YXRlUGFyYW1zLnRhc2tfZXhlY3V0ZV9pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgc2NvcGUuaXNfc3VwZXJ1c2VyID0gICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5pc19zdXBlcnVzZXI7XG4gICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmdyaWRPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICAgIGRhdGE6W10sXG4gICAgICAgICAgICAgICAgICAgIGVuYWJsZUdyaWRNZW51OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAvL3Nob3dHcmlkRm9vdGVyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAvL3Nob3dDb2x1bW5Gb290ZXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGVuYWJsZVJvd1NlbGVjdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlTZWxlY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBlbmFibGVIb3Jpem9udGFsU2Nyb2xsYmFyIDogMCwgXG4gICAgICAgICAgICAgICAgICAgIGVuYWJsZVZlcnRpY2FsU2Nyb2xsYmFyIDogMixcbiAgICAgICAgICAgICAgICAgICAgLy9lbmFibGVGaWx0ZXJpbmc6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGVuYWJsZVJvd0hlYWRlclNlbGVjdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZW5hYmxlQ29sdW1uUmVzaXppbmc6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHVzZUV4dGVybmFsUGFnaW5hdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgcGFnaW5hdGlvblBhZ2VTaXplczogWzEwLCAyNSwgNTAsMTAwLDIwMCw1MDAsMTAwMF0sXG4gICAgICAgICAgICAgICAgICAgIGVuYWJsZVBhZ2luYXRpb25Db250cm9sczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIC8vcGFnaW5hdGlvblBhZ2VTaXplOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgLy91c2VFeHRlcm5hbFNvcnRpbmcgOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAvL3VzZUV4dGVybmFsRmlsdGVyaW5nOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgIC8vIG1pblJvd3NUb1Nob3cgOiAzXG4gICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICB2YXIgcGFnaW5hdGlvbk9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIHBhZ2VOdW1iZXI6IDEsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VTaXplOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgc29ydDogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbHVtbkRlZnNJbml0aWF0ZSA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ1Rhc2tJbml0aWF0aW9uSWQuaWQnLCBkaXNwbGF5TmFtZTogJ0lEJywgdHlwZTogJ251bWJlcicsIHdpZHRoOic1JScsZW5hYmxlSGlkaW5nOiBmYWxzZSwgdmlzaWJsZTogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnVGFza0luaXRpYXRpb25JZC5Jbml0aWF0b3JJZC5uYW1lJywgZGlzcGxheU5hbWU6ICdTdGFydGVkIGJ5J30sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICdUYXNrSW5pdGlhdGlvbklkLlN0YXR1cy5Db2Rlc0RldGFpbExhbmdbMF0uVmFsdWUnLCBkaXNwbGF5TmFtZTogJ1Rhc2sgc3RhdHVzJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnVGFza0luaXRpYXRpb25JZC5SZXNvdXJjZWRlZi5yZXNvdXJjZWRlZmxhbmdfc2V0WzBdLk5hbWUnLCBkaXNwbGF5TmFtZTogJ1Rhc2sgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ1Rhc2tJbml0aWF0aW9uSWQuUmVzb3VyY2VkZWYucmVzb3VyY2VkZWZsYW5nX3NldFswXS5EZXNjcmlwdGlvbicsIGRpc3BsYXlOYW1lOiAnVGFzayBkZXNjcmlwdGlvbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ1Rhc2tJbml0aWF0aW9uSWQuUmVzb3VyY2VkZWYuaWQnLCBkaXNwbGF5TmFtZTogJ1Rhc2sgZGVmIGlkJyxlbmFibGVIaWRpbmc6IGZhbHNlLHZpc2libGU6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICdUYXNrSW5pdGlhdGlvbklkLkNyZWF0ZWREYXRlVGltZScsIGRpc3BsYXlOYW1lOiAnRGF0ZSBjcmVhdGVkJyxlbmFibGVIaWRpbmc6IGZhbHNlLHR5cGU6ICdkYXRlJywgY2VsbEZpbHRlcjogJ2RhdGU6XFwnZGQuTU0ueXl5eSBISDptbTpzczpzc3NcXCcnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICdUYXNrSW5pdGlhdGlvbklkLkNyZWF0ZWRCeS5uYW1lJywgZGlzcGxheU5hbWU6ICdDcmVhdGVkIGJ5J30sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICdGb3JHcm91cC5uYW1lJywgZGlzcGxheU5hbWU6ICdGb3IgZ3JvdXAnfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgIHZhciBjb2x1bW5EZWZzRXhlY3V0ZSA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICdpZCcsIGRpc3BsYXlOYW1lOiAnVGFzayBFeGVjdXRlIElEJywgdHlwZTogJ251bWJlcicsIHdpZHRoOicxMCUnLGVuYWJsZUhpZGluZzogZmFsc2UsIHZpc2libGU6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICdyZXNvdXJjZWRlZi5yZXNvdXJjZWRlZmxhbmdfc2V0WzBdLk5hbWUnLCBkaXNwbGF5TmFtZTogJ1Rhc2sgbmFtZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICdyZXNvdXJjZWRlZi5yZXNvdXJjZWRlZmxhbmdfc2V0WzBdLkRlc2NyaXB0aW9uJywgZGlzcGxheU5hbWU6ICdUYXNrIGRlc2NyaXB0aW9uJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ2FjdHVhbE93bmVyLm5hbWUnLCBkaXNwbGF5TmFtZTogJ1Rhc2sgT3duZXInfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICdzdGF0dXMuQ29kZXNEZXRhaWxMYW5nWzBdLlZhbHVlJywgZGlzcGxheU5hbWU6ICdUYXNrIHN0YXR1cycgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICdvdXRjb21lLlRhc2tPdXRjb21lc0RldGFpbExhbmdfdGFza291dGNvbWVkZXRhaWxpZFswXS5EaXNwbGF5TmFtZScsIGRpc3BsYXlOYW1lOiAnVGFzayBvdXRjb21lJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ3Jlc291cmNlZGVmLmlkJywgZGlzcGxheU5hbWU6ICdUYXNrIGRlZiBpZCcsZW5hYmxlSGlkaW5nOiBmYWxzZSx2aXNpYmxlOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ0NyZWF0ZWREYXRlVGltZScsIGRpc3BsYXlOYW1lOiAnRGF0ZSBjcmVhdGVkJyxlbmFibGVIaWRpbmc6IGZhbHNlLHR5cGU6ICdkYXRlJywgY2VsbEZpbHRlcjogJ2RhdGU6XFwnZGQuTU0ueXl5eSBISDptbTpzczpzc3NcXCcnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnY3JlYXRlZEJ5Lm5hbWUnLCBkaXNwbGF5TmFtZTogJ0NyZWF0ZWQgYnknfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBdOyAgIFxuICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBzY29wZS50YXNrX2V4ZWN1dGVfaWQgPSAwO1xuICAgICAgICAgICAgICAgICAgIHNjb3BlLnRhc2tfaW5pdGlhdGVfaWQgPSAwO1xuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkPT09dW5kZWZpbmVkKSBzY29wZS5mZD17fTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLnNlYXJjaD09PXVuZGVmaW5lZCB8fCBzY29wZS5mZC5zZWFyY2g9PT1udWxsKSBzY29wZS5mZC5zZWFyY2ggPSB7fTtcbiAgICAgICAgICAgICAgICAgICAvL292byB0cmViYSBwcmlsYWdvZGl0aVxuICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5zZWFyY2gudGFza0xpc3RUeXBlPT11bmRlZmluZWQpIHNjb3BlLmZkLnNlYXJjaC50YXNrTGlzdFR5cGU9XCJjbGFpbVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmdyaWRPcHRpb25zLm9uUmVnaXN0ZXJBcGkgPSBmdW5jdGlvbiAoZ3JpZEFwaSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZ3JpZEFwaSA9IGdyaWRBcGk7XG4gICAgICAgICAgICAgICAgICAgICAgICBncmlkQXBpLnNlbGVjdGlvbi5vbi5yb3dTZWxlY3Rpb25DaGFuZ2VkKHNjb3BlLGZ1bmN0aW9uKHJvdyl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUudGFza1NlbGVjdGVkPXJvdy5pc1NlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJvdy5pc1NlbGVjdGVkKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5zZWFyY2gudGFza0xpc3RUeXBlPT1cImV4ZWN1dGVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnNlbGVjdGVkVGFzaz1yb3cuZW50aXR5LmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnRhc2tfZXhlY3V0ZV9pZCA9IHNjb3BlLnNlbGVjdGVkVGFzaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuc2VsZWN0ZWRUYXNrRGVmSWQ9cm93LmVudGl0eS5yZXNvdXJjZWRlZi5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5zZWxlY3RlZFRhc2tPYmplY3QgPSByb3cuZW50aXR5OyAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnNlbGVjdGVkVGFzaz1yb3cuZW50aXR5LlRhc2tJbml0aWF0aW9uSWQuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUudGFza19pbml0aWF0ZV9pZCA9IHNjb3BlLnNlbGVjdGVkVGFzaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuc2VsZWN0ZWRUYXNrRGVmSWQ9cm93LmVudGl0eS5UYXNrSW5pdGlhdGlvbklkLlJlc291cmNlZGVmLmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnNlbGVjdGVkVGFza09iamVjdCA9IHJvdy5lbnRpdHkuVGFza0luaXRpYXRpb25JZDsgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgLy9leHRlcm5hbCBwYWdpbmF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgZ3JpZEFwaS5wYWdpbmF0aW9uLm9uLnBhZ2luYXRpb25DaGFuZ2VkKHNjb3BlLCBmdW5jdGlvbiAobmV3UGFnZSwgcGFnZVNpemUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnaW5hdGlvbk9wdGlvbnMucGFnZU51bWJlciA9IG5ld1BhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2luYXRpb25PcHRpb25zLnBhZ2VTaXplID0gcGFnZVNpemU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLkV4ZWN1dGVBbGxMaXN0UGFnaW5hdGVkRmlsdGVyKHNjb3BlLmZkLnNlYXJjaC50YXNrTGlzdFR5cGUsMSxmYWxzZSxcIlwiLHNjb3BlLmxvY2FsVmFycy5uZXh0UGFnZSxzY29wZS5sb2NhbFZhcnMucHJldmlvdXNQYWdlLG5ld1BhZ2UscGFnZVNpemUsJHNjb3BlLmZkLnNlYXJjaCk7XG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgIGdyaWRBcGkuY29yZS5vbi5maWx0ZXJDaGFuZ2VkKHNjb3BlLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldCBzb21lIHNjb3BlIHZhcmlhYmxlIHRoYXQgYm90aCBsaXN0cyB1c2UgZm9yIGZpbHRlcmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzY29wZS5zb21lRmlsdGVyVmFsdWVCb3RoTGlzdHNMb29rQXQgPSAuLi4uLi5cbiAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLnJlbW92ZUZpZWxkID0gZnVuY3Rpb24gKGluZGV4KXtcblx0XHRcdFx0XHRcdFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcblx0XHRcdFx0XHRcdCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmlucHV0QXJyYXkubGF5b3V0LnNwbGljZShpbmRleCwgMSk7XG5cdFx0XHRcdFx0XHQgXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUuQ2xhaW1TZWxlY3RlZCA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYXNrRGF0YVNlcnZpY2UuRXhlY3V0ZVRhc2tBY3Rpb24oc2NvcGUuc2VsZWN0ZWRUYXNrLDAsJ2NsYWltJyxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3JlZnJlc2ggbGlzdGUgdGFzay1vdmEgemEgY2xhaW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5FeGVjdXRlQWxsTGlzdChzY29wZS5mZC5zZWFyY2gudGFza0xpc3RUeXBlLDEsdHJ1ZSxkYXRhLmRhdGEubXNnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICB9IFxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUuRXhlY3V0ZUFsbExpc3QgPSBmdW5jdGlvbih0eXBlLGZpbHRlcixhZnRlckNsYWltLG1zZ0FmdGVyKXtcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICBUYXNrRGF0YVNlcnZpY2UuZ2V0SW5pdGlhdGVkVGFza3ModHlwZSxmaWx0ZXIpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmdyaWRPcHRpb25zLmRhdGEgPSBkYXRhLmRhdGEucmVzdWx0cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWZ0ZXJDbGFpbSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UobXNnQWZ0ZXIsJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIHNjb3BlLkV4ZWN1dGVBbGxMaXN0UGFnaW5hdGVkID0gZnVuY3Rpb24odHlwZSxmaWx0ZXIsYWZ0ZXJDbGFpbSxtc2dBZnRlcix1cmxOZXh0LHVybFByZXYsbmV3UGFnZSxwYWdlU2l6ZSl7XG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguY2VpbChzY29wZS50b3RhbENvdW50L3BhZ2VTaXplKTxuZXdQYWdlKVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1BhZ2UgPSBNYXRoLmNlaWwoc2NvcGUudG90YWxDb3VudC9wYWdlU2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5nZXRJbml0aWF0ZWRUYXNrc1BhZ2luYXRlZCh0eXBlLGZpbHRlcix1cmxOZXh0LHVybFByZXYsbmV3UGFnZSxwYWdlU2l6ZSkudGhlbihmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZ3JpZE9wdGlvbnMuZGF0YSA9IGRhdGEuZGF0YS5yZXN1bHRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5uZXh0UGFnZSA9IGRhdGEuZGF0YS5uZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5wcmV2aW91c1BhZ2UgPSBkYXRhLmRhdGEucHJldmlvdXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnRvdGFsQ291bnQ9ZGF0YS5kYXRhLmNvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5jdXJyZW50UGFnZT1uZXdQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5udW1QYWdlcyA9IE1hdGguY2VpbChzY29wZS50b3RhbENvdW50L3BhZ2VTaXplKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUucGFnZVNpemUgPSBwYWdlU2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZ3JpZE9wdGlvbnMudG90YWxJdGVtcz1zY29wZS50b3RhbENvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhZnRlckNsYWltKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShtc2dBZnRlciwnc3VjY2VzcycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUuRXhlY3V0ZUFsbExpc3RQYWdpbmF0ZWRGaWx0ZXIgPSBmdW5jdGlvbih0eXBlLGZpbHRlcixhZnRlckNsYWltLG1zZ0FmdGVyLHVybE5leHQsdXJsUHJldixuZXdQYWdlLHBhZ2VTaXplLGZfZmlsdGVyKXtcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuc2VhcmNoLnRhc2tMaXN0VHlwZT09XCJjbGFpbVwiKVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmdyaWRPcHRpb25zLmNvbHVtbkRlZnMgPSBjb2x1bW5EZWZzSW5pdGlhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuc2VhcmNoLnRhc2tMaXN0VHlwZT09XCJleGVjdXRlXCIpXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZ3JpZE9wdGlvbnMuY29sdW1uRGVmcyA9IGNvbHVtbkRlZnNFeGVjdXRlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguY2VpbChzY29wZS5sb2NhbFZhcnMudG90YWxDb3VudC9wYWdlU2l6ZSk8bmV3UGFnZSlcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdQYWdlID0gTWF0aC5jZWlsKHNjb3BlLmxvY2FsVmFycy50b3RhbENvdW50L3BhZ2VTaXplKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZ3JpZE9wdGlvbnMuZGF0YS5sZW5ndGg9MDtcbiAgICAgICAgICAgICAgICAgICAgICBUYXNrRGF0YVNlcnZpY2UuZ2V0SW5pdGlhdGVkVGFza3NQYWdpbmF0ZWRGaWx0ZXJlZCh0eXBlLGZpbHRlcix1cmxOZXh0LHVybFByZXYsbmV3UGFnZSxwYWdlU2l6ZSxmX2ZpbHRlcikudGhlbihmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZ3JpZE9wdGlvbnMuZGF0YSA9IGRhdGEuZGF0YS5yZXN1bHRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5sb2NhbFZhcnMubmV4dFBhZ2UgPSBkYXRhLmRhdGEubmV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUubG9jYWxWYXJzLnByZXZpb3VzUGFnZSA9IGRhdGEuZGF0YS5wcmV2aW91cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUubG9jYWxWYXJzLnRvdGFsQ291bnQ9ZGF0YS5kYXRhLmNvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5sb2NhbFZhcnMuY3VycmVudFBhZ2U9bmV3UGFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUubG9jYWxWYXJzLm51bVBhZ2VzID0gTWF0aC5jZWlsKHNjb3BlLmxvY2FsVmFycy50b3RhbENvdW50L3BhZ2VTaXplKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUubG9jYWxWYXJzLnBhZ2VTaXplID0gcGFnZVNpemU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmdyaWRPcHRpb25zLnRvdGFsSXRlbXM9c2NvcGUubG9jYWxWYXJzLnRvdGFsQ291bnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5sb2NhbFZhcnMudG90YWxDb3VudD09MSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5zZWFyY2gudGFza0xpc3RUeXBlPT1cImV4ZWN1dGVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS50YXNrX2V4ZWN1dGVfaWQgPSBzY29wZS5ncmlkT3B0aW9ucy5kYXRhWzBdLmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUudGFza19pbml0aWF0ZV9pZCA9IHNjb3BlLmdyaWRPcHRpb25zLmRhdGFbMF0uVGFza0luaXRpYXRpb25JZC5pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmxvY2FsVmFycy5nZXRUYXNrRXhlY3V0ZURhdGEoc2NvcGUudGFza19pbml0aWF0ZV9pZCxzY29wZS50YXNrX2V4ZWN1dGVfaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm9vdFNjb3BlLiRicm9hZGNhc3QoJ1BhZ2VMb2FkZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFmdGVyQ2xhaW0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKG1zZ0FmdGVyLCdzdWNjZXNzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmxvY2FsVmFycy5wYWdlQ2hhbmdlZCA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5FeGVjdXRlQWxsTGlzdFBhZ2luYXRlZEZpbHRlcihzY29wZS5mZC5zZWFyY2gudGFza0xpc3RUeXBlLDEsZmFsc2UsXCJcIixzY29wZS5sb2NhbFZhcnMubmV4dFBhZ2Usc2NvcGUubG9jYWxWYXJzLnByZXZpb3VzUGFnZSxzY29wZS5sb2NhbFZhcnMuY3VycmVudFBhZ2Usc2NvcGUubG9jYWxWYXJzLnBhZ2VTaXplLHNjb3BlLmZkLnNlYXJjaCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAvL25hcHVuaSBncmlkIHMgZGVmaW5pY2lqYW1hIHJlc3Vyc2FcbiAgICAgICAgICAgICAgICAgICAgIC8vc2NvcGUuY3VycmVudFBhZ2UgPSAgcGFnaW5hdGlvbk9wdGlvbnMucGFnZU51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgIC8vc2NvcGUucGFnZVNpemUgPSBwYWdpbmF0aW9uT3B0aW9ucy5wYWdlU2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgIHNjb3BlLkV4ZWN1dGVBbGxMaXN0UGFnaW5hdGVkRmlsdGVyKHNjb3BlLmZkLnNlYXJjaC50YXNrTGlzdFR5cGUsMSxmYWxzZSxcIlwiLFwiXCIsXCJcIixwYWdpbmF0aW9uT3B0aW9ucy5wYWdlTnVtYmVyLHBhZ2luYXRpb25PcHRpb25zLnBhZ2VTaXplLHNjb3BlLmZkLnNlYXJjaCk7XG4gICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgIHNjb3BlLkV4ZWN1dGVMaXN0UHJlUGFnaW5hdGVkID0gZnVuY3Rpb24obGlzdEZpbHRlcil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuRXhlY3V0ZUFsbExpc3RQYWdpbmF0ZWQoc2NvcGUuZmQuc2VhcmNoLnRhc2tMaXN0VHlwZSxsaXN0RmlsdGVyLGZhbHNlLFwiXCIsXCJcIixcIlwiLHBhZ2luYXRpb25PcHRpb25zLnBhZ2VOdW1iZXIscGFnaW5hdGlvbk9wdGlvbnMucGFnZVNpemUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZMaXN0QnlUeXBlKGxhbmcsJ3Rhc2snKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS50YXNrRGVmTGlzdCA9IGRhdGEuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5zZWFyY2guaGVhZGVyTGFiZWwgPSBcIlNlbGVjdCB1c2VycyBvciBncm91cHNcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5zZWFyY2gudXNlcnNMYWJlbCA9XCJVc2Vyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLnNlYXJjaC5ncm91cHNMYWJlbCA9IFwiR3JvdXBzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgLy9nZXQgdGFzayBzdGF0dXNlc1xuICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICBDb2Rlc1NlcnZpY2UuZ2V0Q29kZXNCeU5hbWUoJ3Rhc2tzdGF0dXNlcycsbGFuZykudGhlbihmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS50YXNrU3RhdHVzZXMgPSBkYXRhLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgfVxuICAgICAgICB9ICAgICAgICAgICAgIFxufTtcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGt0VGFza1Rvb2xib3ggKCkge1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza1Rvb2xib3guaHRtbCcsXG4gICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyOiBbJyRzY29wZScsJyRyb290U2NvcGUnLCdHcmlkc3RlclNlcnZpY2UnLCdUYXNrRGVmaW5pdGlvblNlcnZpY2UnLCdLYXRhbHlvU3RhdGVNYW5hZ2VyJywnJHRpbWVvdXQnLCBmdW5jdGlvbigkc2NvcGUsJHJvb3RTY29wZSxHcmlkc3RlclNlcnZpY2UsVGFza0RlZmluaXRpb25TZXJ2aWNlLEthdGFseW9TdGF0ZU1hbmFnZXIsJHRpbWVvdXQpe1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5DVFJMPSdrdFRhc2tUb29sYm94JztcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2YyA9IEdyaWRzdGVyU2VydmljZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50b29sYm94SXRlbXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50ZHMgPSBUYXNrRGVmaW5pdGlvblNlcnZpY2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY29sbGFwc2VkPXt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlbG9hZGluZ1Rvb2xib3ggPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLmRlc3Ryb3lEcmFndWxhKCdiYWctdGFzaycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgd2lkZ2V0SGFuZGxlID0gJ3Rhc2stZWxlbWVudC1kcmFnLWhhbmRsZSc7XG4gICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNldHVwRHJhZ3VsYVJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnNldHVwRHJhZ3VsYSgnYmFnLXRhc2snLCd0YXNrLXRvb2xib3gnLHdpZGdldEhhbmRsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza1Rvb2xib3hJdGVtcz0gJHNjb3BlLmdzcnZjLmdldFRhc2tUb29sYm94SXRlbXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgLy9yZWdpc3RlciB0byBzdGF0ZSBtYW5hZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUua3NtID0gS2F0YWx5b1N0YXRlTWFuYWdlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRvb2xib3hfbG9hZGVkID0gZnVuY3Rpb24oZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza1Rvb2xib3hMb2FkZWQoZGF0YS5zdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRvb2xib3hfcmVsb2FkID0gZnVuY3Rpb24oZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tUb29sYm94TG9hZGVkKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRvb2xib3hTdGF0ZT0gJHNjb3BlLmtzbS5hZGRTdWJqZWN0KFwidGFza1Rvb2xCb3hcIixudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0b29sYm94U3RhdGVOYW1lID0gdG9vbGJveFN0YXRlLnN1YmplY3QubmFtZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFjdGlvbl90b29sYm94X2xvYWRlZCA9ICRzY29wZS5rc20uYWRkQWN0aW9uKHRvb2xib3hTdGF0ZU5hbWUsXCJ0b29sYm94TG9hZGVkXCIsdG9vbGJveF9sb2FkZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYWN0aW9uX3Rvb2xib3hfcmVsb2FkID0gJHNjb3BlLmtzbS5hZGRBY3Rpb24odG9vbGJveFN0YXRlTmFtZSxcInRvb2xib3hSZWxvYWRcIix0b29sYm94X3JlbG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2V0Q29sbGFwc2U9ZnVuY3Rpb24odmFsdWUsZWxlbWVudF90eXBlKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudF90eXBlPT1cInRvb2xib3hncm91cFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5jb2xsYXBzZWRbdmFsdWVdPT09dW5kZWZpbmVkKSAkc2NvcGUuY29sbGFwc2VkW3ZhbHVlXSA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmNvbGxhcHNlZFt2YWx1ZV0pICRzY29wZS5jb2xsYXBzZWRbdmFsdWVdID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgJHNjb3BlLmNvbGxhcHNlZFt2YWx1ZV0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza1Rvb2xib3hMb2FkZWQ9ZnVuY3Rpb24odmFsdWUpeyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLmRlc3Ryb3lEcmFndWxhKCdiYWctdGFzaycpOyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50YXNrVG9vbGJveEl0ZW1zLmxlbmd0aD0wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmd1bGFyLmV4dGVuZCgkc2NvcGUudGFza1Rvb2xib3hJdGVtcywgJHNjb3BlLmdzcnZjLmdldFRhc2tUb29sYm94SXRlbXMoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLnRhc2tUb29sYm94SXRlbXM9ICRzY29wZS5nc3J2Yy5nZXRUYXNrVG9vbGJveEl0ZW1zKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyR0aW1lb3V0KGZ1bmN0aW9uKCl7JHNjb3BlLnRhc2tUb29sYm94SXRlbXM9ICRzY29wZS5nc3J2Yy5nZXRUYXNrVG9vbGJveEl0ZW1zKCk7fSkgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHRpbWVvdXQoZnVuY3Rpb24oKXskc2NvcGUuZ3NydmMuU2V0VGFza1Rvb2xib3hMb2FkZWQodmFsdWUpOyRzY29wZS5yZWxvYWRpbmdUb29sYm94ID0gdHJ1ZTt9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudG9vbGJveFN0YXR1cz1mdW5jdGlvbih2YWx1ZSl7XG4gICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5TZXRUYXNrVG9vbGJveExvYWRlZCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgIFxuICAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICB9XG4gICAgICB9XG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0VGFza1VwZGF0ZVJlc291cmNlIChSZXNvdXJjZXNEYXRhU2VydmljZSxUYXNrRGF0YVNlcnZpY2UsS2F0YWx5b1N0YXRlTWFuYWdlciwkdGltZW91dCkge1xyXG4gICAgdmFyIGNvbnRyb2xsZXIgPSBbJyRzY29wZScsICckdWliTW9kYWwnLCAnJHN0YXRlUGFyYW1zJywnJHN0YXRlJywnJHRpbWVvdXQnLCdDb2Rlc1NlcnZpY2UnLCdSZXNvdXJjZXNEYXRhU2VydmljZScsJyRyb290U2NvcGUnLCdDT0RFU19DT05TVCcsJ1Byb2Nlc3NpbmdTZXJ2aWNlJywnTWVzc2FnaW5nU2VydmljZScsJ0dyaWRzdGVyU2VydmljZScsJ1Rhc2tEYXRhU2VydmljZScsJ1dpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UnLCdVdGlsaXR5U2VydmljZScsJ0thdGFseW9TdGF0ZU1hbmFnZXInLCckdGVtcGxhdGVDYWNoZScsJyRjb21waWxlJywnJGVsZW1lbnQnLFxyXG4gICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoJHNjb3BlLCR1aWJNb2RhbCwkc3RhdGVQYXJhbXMsJHN0YXRlLCR0aW1lb3V0LENvZGVzU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSwkcm9vdFNjb3BlLENPREVTX0NPTlNULFByb2Nlc3NpbmdTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlLFRhc2tEYXRhU2VydmljZSxXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLFV0aWxpdHlTZXJ2aWNlLEthdGFseW9TdGF0ZU1hbmFnZXIsJHRlbXBsYXRlQ2FjaGUsJGNvbXBpbGUsJGVsZW1lbnQpIHtcclxuICAgXHJcbiAgICAgICRzY29wZS5mZC5sb2NhbFZhcnM9e307XHJcbiAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VhcmNoRm9ybURvd25sb2FkZWQgPSBmYWxzZTtcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtTG9hZGVkPWZhbHNlO1xyXG4gICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNyY190eXBlX3RleHQ9Q09ERVNfQ09OU1QuX1BPUFVMQVRFX1RZUEVfOyAgXHJcbiAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuYW5pbWF0aW9uc0VuYWJsZWQgPSB0cnVlO1xyXG4gICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFR5cGUgPSAyO1xyXG4gICAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2U7XHJcbiAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybVBhcmFtcz17Zm9ybVZpZXdUeXBlOjEsc2hvd0dyaWROYXZpZ2F0aW9uOmZhbHNlfTtcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5ncmlkc3RlclR5cGU9XCJkYXRhc2V0XCI7XHJcbiAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VUeXBlPVwiZGF0YXNldFwiO1xyXG4gICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlVHlwZXNMaXN0PVt7dHlwZTonZGF0YXNldCcsbmFtZTonRGF0YXNldCd9LHt0eXBlOidmaWxlJyxuYW1lOidGaWxlJ31dXHJcbiAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXggPSAncmVzb3VyY2UnKyRzY29wZS5mZC5SZWxhdGVkXHJcbiAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuU2hvd0FkdmFuY2VkUHJvcGVydGllcyA9IHRydWVcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93TWVudSA9IGZhbHNlXHJcblx0ICBcclxuICAgICAgXHJcbiAgICAgIGlmICgkc2NvcGUuZm9ybURhdGE9PT11bmRlZmluZWQpIHtcclxuXHJcbiAgICAgICAgJHNjb3BlLmZvcm1EYXRhPXt9XHJcbiAgICAgICAgJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5VdWlkUmVmXT1be31dXHJcbiAgICAgIH0gZWxzZSBpZiAoJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5VdWlkUmVmXT09PXVuZGVmaW5lZCB8fCAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlV1aWRSZWZdPT09bnVsbCkgXHRcdFxyXG5cdFx0XHRcdCRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuVXVpZFJlZl09W3t9XVxyXG4gXHJcblx0ICBcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy50b2dnbGVEcm9wZG93biA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93TWVudSA9ICAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dNZW51ID8gZmFsc2U6IHRydWUgXHJcbiAgICAgIH1cclxuICAgICAgICAgXHJcbiAgICAgICBcclxuICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycz09dW5kZWZpbmVkKSAkc2NvcGUuZmQuUGFyYW1ldGVycz17fTtcclxuICAgIFxyXG4gICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzTGFuZz09PXVuZGVmaW5lZCB8fCAkc2NvcGUuZmQuUGFyYW1ldGVyc0xhbmc9PT1udWxsKSAkc2NvcGUuZmQuUGFyYW1ldGVyc0xhbmc9e31cclxuXHJcbiAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5TaG93QWR2YW5jZWRQcm9wZXJ0aWVzID0gdHJ1ZVxyXG5cclxuICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVyc0xhbmc/LkNyZWF0ZWRCeVRlbXBsYXRlPT09dW5kZWZpbmVkKSAgJHNjb3BlLmZkLlBhcmFtZXRlcnNMYW5nLkNyZWF0ZWRCeVRlbXBsYXRlPSdDcmVhdGVkIGJ5IHt7dXNlcj4+IG9uIHt7ZGF0ZX19IGF0IHt7dGltZX19J1xyXG4gICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzTGFuZz8uQ2hhbmdlZEJ5VGVtcGxhdGU9PT11bmRlZmluZWQpICAkc2NvcGUuZmQuUGFyYW1ldGVyc0xhbmcuQ2hhbmdlZEJ5VGVtcGxhdGU9J0xhc3QgY2hhbmdlZCBieSB7e3VzZXJ9fSBvbiB7e2RhdGV9fSBhdCB7e3RpbWV9fSdcclxuICAgIFxyXG4gICAgaWYgKCRzY29wZS5mZC5Qb3B1bGF0ZVR5cGU9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLlBvcHVsYXRlVHlwZT1cIlwiO1xyXG5cclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkID0ge1xyXG4gIFx0XHRcdFx0aWQ6ICcxJyxcclxuICBcdFx0XHRcdG5hbWU6ICdIb21lJyxcclxuICBcdFx0XHRcdHdpZGdldHM6IHtsYXlvdXQ6IFtdfSxcclxuXHRcdFx0XHRzZWFyY2hGb3JtOiB7bGF5b3V0OiBbXX1cclxuXHRcdH0gO1xyXG4gICAgICBcclxuXHJcbiAgICAgICAgaWYgKCRzY29wZS50YXNrSWQ9PXVuZGVmaW5lZCkgJHNjb3BlLnRhc2tJZD1cIjBcIjtcclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnRhc2tJZD0kc2NvcGUudGFza0lkO1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEZWZpbml0aW9uID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvblxyXG4gICAgICAgICRzY29wZS5mZC5QYXJlbnREYXRhc2V0RGVmSWQ9JHNjb3BlLmZkLlJlbGF0ZWQ7XHJcbiAgICAgICAgJHNjb3BlLnByZXZUYXNrRXhlSWQgPSAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wcmV2X3Rhc2tfaWQ7XHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtVHlwZT0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fdHlwZTtcclxuICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtVHlwZT09dW5kZWZpbmVkKSAkc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1UeXBlPSdpJ1xyXG4gICAgICAgICRzY29wZS5zb3VyY2VfdHlwZT0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnNvdXJjZV90eXBlO1xyXG4gICAgICAgICRzY29wZS50YXNrSW5pdGlhdGVJZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udGFza19pbml0aWF0ZV9pZDtcclxuICAgICAgICAkc2NvcGUudGFza0V4ZWN1dGVJZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udGFza19leGVjdXRlX2lkO1xyXG4gICAgICAgICRzY29wZS5mb3JtRGVmaW5pdGlvbiA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uO1xyXG4gICAgICAgICRzY29wZS5mZC5QYXJlbnRSZXNvdXJjZURlZklkPSRzY29wZS5mZC5SZWxhdGVkXHJcblxyXG4gICAgICAgIGlmICAoJHNjb3BlLmZvcm1EZWZpbml0aW9uPT11bmRlZmluZWQpICRzY29wZS5mb3JtRGVmaW5pdGlvbj1mYWxzZTtcclxuXHRcdFxyXG5cdFx0JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYXJlbnRXaWRnZXRVaWQgPSAkc2NvcGUuZmQuVXVpZFJlZlxyXG5cdFx0XHQgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZD0wO1xyXG5cdFx0XHJcbiAgICAgICAgaWYgKCRzY29wZS50YXNrSW5pdGlhdGVJZD09dW5kZWZpbmVkKVxyXG4gICAgICAge1xyXG4gICAgICAgICRzY29wZS50YXNrSW5pdGlhdGVJZCA9MDtcclxuICAgICAgICBcclxuICAgICAgIH1cclxuICAgICAgIGlmICgkc2NvcGUudGFza0V4ZWN1dGVJZD09dW5kZWZpbmVkKVxyXG4gICAgICAge1xyXG4gICAgICAgICRzY29wZS50YXNrRXhlY3V0ZUlkID0wO1xyXG4gICAgICAgIFxyXG4gICAgICAgfVxyXG4gICAgICAgIGlmICgkc2NvcGUucHJldlRhc2tFeGVJZD09dW5kZWZpbmVkKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICRzY29wZS5wcmV2VGFza0V4ZUlkID0wO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgLy9yZWdpc3RlciB3aWRnZXQgXHJcbiAgICAgIHZhciBvdXRfZmllbGRzID0gWydyZXNvdXJjZUlkJ107XHJcblxyXG4gICBcclxuICAgICAgICBsZXQgd19hY3Rpb25zPVtcclxuICAgICAgICAgICAgICAgICAgICB7aWQ6MSxuYW1lOid1cGRhdGVSZXNvdXJjZVJlY29yZCd9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtpZDoyLG5hbWU6J2FkZFJlY29yZCd9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtpZDozLG5hbWU6J3JlbW92ZVJlY29yZCd9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtpZDo0LG5hbWU6J3NldFJlY29yZHMnfSwgIFxyXG4gICAgICAgICAgICAgICAgICAgIHtpZDo1LG5hbWU6J2FkZFJlY29yZFdpdGhSZWZyZXNoJ30sXHJcbiAgICAgICAgICAgICAgICAgICAge2lkOjYsbmFtZTonc2V0UmVjb3Jkc1dpdGhSZWZyZXNoJ30sICBcclxuICAgICAgICAgICAgICAgIF1cclxuICAgICAgICBpZiAoJHNjb3BlLmZkLlV1aWRSZWY9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLlV1aWRSZWY9VXRpbGl0eVNlcnZpY2UudXVpZHY0KClcclxuICAgICAgICBsZXQgcmVzb3VyY2VfdWlkID0gJHNjb3BlLmZkLmxvY2FsVmFycz8ucmVzb3VyY2VEZWZpbml0aW9uPy51aWQgXHJcbiAgICAgICAgaWYgKCFyZXNvdXJjZV91aWQpIHJlc291cmNlX3VpZCA9ICRzY29wZS5mZC5sb2NhbFZhcnM/LnJlc291cmNlRGVmaW5pdGlvbj8ucGFnZUlkXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIHZhciB3aWRnZXREZWZpbml0aW9uID0ge0RFSTogW3snbmFtZSc6J3Jlc291cmNlTGluaycsJ3ZhbHVlJzpbe25hbWU6J3Jlc291cmNlSWQnLHZhbHVlOiRzY29wZS5mZC5SZWxhdGVkfSx7bmFtZToncmVzb3VyY2VSZWNvcmRJZCcsdmFsdWU6Jyd9XX1dLGFjdGlvbnM6IHdfYWN0aW9ucywgd2lkZ2V0TGFiZWw6ICdVcGRhdGUgcmVzb3VyY2UgcmVjb3JkJyx3aWRnZXROYW1lOiAndXBkYXRlUmVzb3VyY2VXaWRnZXQnLFxyXG4gICAgICAgIHdpZGdldElkOiAkc2NvcGUuZmQuVXVpZFJlZix0YXNrX2luaXRpYXRlX2lkOiRzY29wZS50YXNrSW5pdGlhdGVJZCx0YXNrX2V4ZWN1dGVfaWQ6JHNjb3BlLnRhc2tFeGVjdXRlSWQsdGFza0lkOiAgJHNjb3BlLmxUYXNrSWQscmVzb3VyY2VfaWQ6JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkLHJlc291cmNlRGVmSWQgOiAkc2NvcGUuZmQuUmVsYXRlZCwgb3V0cHV0Om91dF9maWVsZHMsIHBhcmVudFJlc291cmNlSWQ6cmVzb3VyY2VfdWlkfTtcclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmxvY2FsV2lkZ2V0SWQgPSBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnJlZ2lzdGVyV2lkZ2V0KHdpZGdldERlZmluaXRpb24pO1xyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuTG9jYWxJZD0kc2NvcGUuZmQubG9jYWxWYXJzLmxvY2FsV2lkZ2V0SWQ7XHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLkxvY2FsSWQ9JHNjb3BlLmZkLmxvY2FsVmFycy5sb2NhbFdpZGdldElkO1xyXG4gICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmtzbSA9IEthdGFseW9TdGF0ZU1hbmFnZXI7XHJcbiAgICAgICAgdmFyIHZhbHVlU3RhdGU9ICRzY29wZS5rc20uYWRkU3ViamVjdCgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQrXCItXCIrJHNjb3BlLmZkLlV1aWRSZWYsJHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZSk7XHJcbiAgICAgICAgdmFyIHZhbHVlU3RhdGVOYW1lID0gdmFsdWVTdGF0ZS5zdWJqZWN0Lm5hbWU7XHJcbiAgICAgICAgXHJcbiAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKiogZ2V0IHN0YXRlIGlmIGV4aXN0cyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICBcclxuICAgICAgaWYgKHZhbHVlU3RhdGUuc3ViamVjdC5jdXJyZW50U3RhdGVJbmRleD49MCkgIHsgICBcclxuICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUgPSB2YWx1ZVN0YXRlLnN1YmplY3QuZ2V0U3RhdGU7XHJcbiAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQgPSAkc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnJlc291cmNlUmVjb3JkSWQ7XHJcbiAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmxvYWRGcm9tU3RhdGU9dHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLndpZGdldFN0YXRlPXsncmVzb3VyY2VJZCc6JHNjb3BlLmZkLlJlbGF0ZWQsJ3Jlc291cmNlUmVjb3JkSWQnOjB9O1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBsZXQgdmFsdWVfY2hhbmdlZCA9IGZ1bmN0aW9uKGRhdGEpe1xyXG4gICAgICAgICAgdmFsdWVTdGF0ZS5zdWJqZWN0LnNldFN0YXRlQ2hhbmdlcyA9IGRhdGE7XHJcbiAgICAgICAgICB2YWx1ZVN0YXRlLnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKFwidmFsdWVDaGFuZ2VkXCIpO1xyXG4gICAgICB9O1xyXG4gICAgICBcclxuICAgICAgbGV0IGFjdGlvbl92YWx1ZV9jaGFuZ2VkID0gJHNjb3BlLmtzbS5hZGRBY3Rpb24odmFsdWVTdGF0ZU5hbWUsXCJ2YWx1ZUNoYW5nZWRcIix2YWx1ZV9jaGFuZ2VkKTtcclxuICAgICAgXHJcbiAgICAgIGxldCB1cGRhdGVfcmVjb3JkID0gZnVuY3Rpb24oZGF0YSl7XHJcbiAgICAgICAgICBcclxuICAgICAgICBsZXQgc3RhdGUgPSB2YWx1ZVN0YXRlLnN1YmplY3QuZ2V0U3RhdGVDaGFuZ2VzXHJcbiAgICAgICAgaWYgKHN0YXRlPT11bmRlZmluZWQpIHZhbHVlU3RhdGUuc3ViamVjdC5zZXRTdGF0ZUNoYW5nZXMgPSBkYXRhXHJcblxyXG4gICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5mbG93QWN0aW9ucz8ubGVuZ3RoPjApXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgIGZvciAobGV0IGk9MDtpPCRzY29wZS5mZC5QYXJhbWV0ZXJzLmZsb3dBY3Rpb25zPy5sZW5ndGg7aSsrKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGxldCBjb25kaXRpb249e31cclxuICAgICAgICAgICAgICAgIGxldCB2YWx1ZXM9e31cclxuICAgICAgICAgICAgICAgIGlmICghJHNjb3BlLmZkLlBhcmFtZXRlcnMuZmxvd0FjdGlvbnNbaV0uTm9Db25kaXRpb24pXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uID0gSlNPTi5wYXJzZSgkc2NvcGUuZmQuUGFyYW1ldGVycy5mbG93QWN0aW9uc1tpXS5Db25kaXRpb24pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHZhbHVlcyA9IEpTT04ucGFyc2UoJHNjb3BlLmZkLlBhcmFtZXRlcnMuZmxvd0FjdGlvbnNbaV0uVmFsdWVzKVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoVXRpbGl0eVNlcnZpY2UuY2hlY2tfY29uZGl0aW9uKGNvbmRpdGlvbj8ub3BlcmF0b3IsY29uZGl0aW9uPy52YWx1ZSwkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlV1aWRSZWZdWzBdW2NvbmRpdGlvbj8uZmllbGRdKSB8fCAkc2NvcGUuZmQuUGFyYW1ldGVycy5mbG93QWN0aW9uc1tpXS5Ob0NvbmRpdGlvbilcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggY29uc3QgcHJvcGVydHkgaW4gdmFsdWVzICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuVXVpZFJlZl1bMF1bcHJvcGVydHldID0gdmFsdWVzW3Byb3BlcnR5XVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLlVwZGF0ZVJlc291cmNlUmVjb3JkKClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICB9ZWxzZSAgJHNjb3BlLmZkLmxvY2FsVmFycy5VcGRhdGVSZXNvdXJjZVJlY29yZCgpXHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgLy92YWx1ZVN0YXRlLnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKFwidXBkYXRlUmVzb3VyY2VSZWNvcmRcIik7XHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICBsZXQgYWN0aW9uX3VwZGF0ZV9yZWNvcmQgPSAkc2NvcGUua3NtLmFkZEFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcInVwZGF0ZVJlc291cmNlUmVjb3JkXCIsdXBkYXRlX3JlY29yZCk7XHJcbiAgICAgICBcclxuICAgICAgIFxyXG4gICAgICAgbGV0IGFwcGx5X3ZhbHVlID0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGxldCBkb19yZWZyZXNoPWZhbHNlO1xyXG4gICAgICAgICAgICBpZiAoZGF0YSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEgPT09J251bWJlcicpICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZD0gZGF0YTtcclxuICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSlcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aD4wKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXgrJ19pZCcgaW4gZGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkPSBkYXRhWzBdWyRzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXgrJ19pZCddXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZD0gZGF0YVswXS5pZFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfWVsc2VcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXgrJ19pZCcgaW4gZGF0YSlcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZD0gZGF0YVskc2NvcGUuZmQubG9jYWxWYXJzLlRhYmxlUHJlZml4KydfaWQnXVxyXG4gICAgICAgICAgICAgICAgICAgIH1lbHNlICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZD0gZGF0YS5pZFxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBkb19yZWZyZXNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy9nZXQgc2VsZWN0ZWRSZWNvcmRcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZCA9PSBudWxsKSAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQ9MDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQ+MCAmJiBkb19yZWZyZXNoKSAkc2NvcGUuZmQubG9jYWxWYXJzLkdldFJlY29yZEZvclVwZGF0ZSgkc2NvcGUuZmQuUGFyZW50RGF0YXNldERlZklkLCRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZClcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycz09dW5kZWZpbmVkKSAkc2NvcGUuZmQuUGFyYW1ldGVycz17fTtcclxuICAgICAgXHJcbiAgICAgICAgbGV0IGRlcGVuZGVudF9maWVsZCxzdWJzY3JpYmVkU3ViamVjdCxzdWJqZWN0ICxvYnNlcnZlciAsIHZhbFxyXG4gICAgICAgIGRlcGVuZGVudF9maWVsZCA9IFwiRmllbGRcIiskc2NvcGUuZmQuVXVpZFJlZlxyXG4gICAgICAgIC8qXHJcbiAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLlJlZnJlc2hPbklkQ2hhbmdlKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgXHJcbiAgICAgICAgIC8vZmluZCBcclxuICAgICAgICAgLy9zdWJzY3JpYmUgb2JzZXJ2ZXJcclxuICAgICAgICAgXHJcbiAgICAgICAgICAgIHN1YnNjcmliZWRTdWJqZWN0ID0gXCJyZXNvdXJjZWlkVmFsdWVTdGF0ZU5hbWVcIiskc2NvcGUuZmQuUGFyYW1ldGVycy5SZXNvdXJjZUlkSXRlbUlkKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udHJhbnNhY3Rpb25faWQ7XHJcbiAgICAgICAgICAgIHN1YmplY3QgPSAkc2NvcGUua3NtLmFkZFN1YmplY3Qoc3Vic2NyaWJlZFN1YmplY3QsbnVsbCk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgb2JzZXJ2ZXIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdCxkZXBlbmRlbnRfZmllbGQsXCJ2YWx1ZUNoYW5nZWRcIixhcHBseV92YWx1ZSk7XHJcbiAgICAgICAgICAgIHZhbCA9ICRzY29wZS5rc20uZ2V0U3RhdGUoc3Vic2NyaWJlZFN1YmplY3QpO1xyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5UYWJsZVByZWZpeCsnX2lkJyBpbiB2YWwpICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZD0gdmFsLnN0YXRlWyRzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXgrJ19pZCddXHJcbiAgICAgICAgICAgIGVsc2UgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkPSB2YWwuaWRcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vZ2V0IHNlbGVjdGVkUmVjb3JkXHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQgPT0gbnVsbCkgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkPTA7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkPjApICRzY29wZS5mZC5sb2NhbFZhcnMuR2V0UmVjb3JkRm9yVXBkYXRlKCRzY29wZS5mZC5QYXJlbnREYXRhc2V0RGVmSWQsJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgKi9cclxuXHJcbiAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93UHJvcGVydGllcz1mdW5jdGlvbihkYXRhc2V0TWFwcGVyVHlwZSxzaG93UHJvcGVydGllc1JpZ2h0KVxyXG4gICAgICB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGUgPSBkYXRhc2V0TWFwcGVyVHlwZTtcclxuICAgICAgICAgICAgfWVsc2VcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCAkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlIT1kYXRhc2V0TWFwcGVyVHlwZSkgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSA9IGRhdGFzZXRNYXBwZXJUeXBlO1xyXG4gICAgICAgICAgICAgICBlbHNlIFxyXG4gICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT0wO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzaG93UHJvcGVydGllc1JpZ2h0KSAkc2NvcGUuZ3NydmMuc2V0RmllbGRQcm9wZXJ0aWVzKCRzY29wZS5mZCk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICB9O1xyXG4gICAgICAgIFxyXG5cclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmFkZEFjdGlvbj1mdW5jdGlvbigpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuZmxvd0FjdGlvbnM9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLlBhcmFtZXRlcnMuZmxvd0FjdGlvbnM9W11cclxuICAgICAgICAgICAgJHNjb3BlLmZkLlBhcmFtZXRlcnMuZmxvd0FjdGlvbnMucHVzaCh7fSkgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuaW5zZXJ0QWN0aW9uPWZ1bmN0aW9uKGluZGV4KVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLmZsb3dBY3Rpb25zPT11bmRlZmluZWQpICRzY29wZS5mZC5QYXJhbWV0ZXJzLmZsb3dBY3Rpb25zPVtdXHJcbiAgICAgICAgICAgICRzY29wZS5mZC5QYXJhbWV0ZXJzLmZsb3dBY3Rpb25zLnNwbGljZShpbmRleCwwLHt9KSAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kZWxBY3Rpb249ZnVuY3Rpb24oaW5kZXgpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuZmxvd0FjdGlvbnM9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLlBhcmFtZXRlcnMuZmxvd0FjdGlvbnM9W11cclxuICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLmZsb3dBY3Rpb25zLmxlbmd0aD5pbmRleCkgICRzY29wZS5mZC5QYXJhbWV0ZXJzLmZsb3dBY3Rpb25zLnNwbGljZShpbmRleCwxKSAgIFxyXG4gICAgICAgIH0gICAgICAgICAgXHJcbiAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLkV4dHJhY3RJZEZyb21SZWNvcmQ9ZnVuY3Rpb24ocmVjb3JkKXtcclxuXHJcbiAgICAgICAgbGV0IHJlY29yZF9pZFxyXG5cclxuICAgICAgICBpZiAocmVjb3JkIT09dW5kZWZpbmVkKVxyXG4gICAgICAgIHsgICBcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVjb3JkKSAmJiByZWNvcmQubGVuZ3RoPjApXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLlRhYmxlUHJlZml4KydfaWQnIGluIHJlY29yZFswXSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmRfaWQ9cmVjb3JkWzBdWyRzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXgrJ19pZCddXHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9ZWxzZSByZWNvcmRfaWQgPSByZWNvcmRbMF0uaWRcclxuXHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXgrJ19pZCcgaW4gcmVjb3JkKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZF9pZCA9IHJlY29yZFskc2NvcGUuZmQubG9jYWxWYXJzLlRhYmxlUHJlZml4KydfaWQnXVxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfWVsc2UgcmVjb3JkX2lkID0gcmVjb3JkLmlkXHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfWVsc2UgcmVjb3JkX2lkID0gbnVsbFxyXG5cclxuICAgICAgICByZXR1cm4gcmVjb3JkX2lkICAgXHJcbiAgICB9XHJcblxyXG4gICAgJHNjb3BlLmZkLmxvY2FsVmFycy5Qcm9jZXNzQXVkaXRJbmZvID0gZnVuY3Rpb24ocmVjb3JkKVxyXG4gICAge1xyXG5cclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLkNyZWF0ZWRCeUxhYmVsID0gJHNjb3BlLmZkLlBhcmFtZXRlcnNMYW5nLkNyZWF0ZWRCeVRlbXBsYXRlLnJlcGxhY2UoJ3t7dXNlcn19JyxyZWNvcmRbJHNjb3BlLmZkLmxvY2FsVmFycy5UYWJsZVByZWZpeCsnX0NyZWF0ZWRCeS5uYW1lJ10pXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5DcmVhdGVkQnlMYWJlbCA9ICRzY29wZS5mZC5sb2NhbFZhcnMuQ3JlYXRlZEJ5TGFiZWwucmVwbGFjZSgne3tkYXRlfX0nLG5ldyBEYXRlKHJlY29yZFskc2NvcGUuZmQubG9jYWxWYXJzLlRhYmxlUHJlZml4KydfQ3JlYXRlZERhdGVUaW1lJ10pLnRvTG9jYWxlRGF0ZVN0cmluZygpKVxyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuQ3JlYXRlZEJ5TGFiZWwgPSAkc2NvcGUuZmQubG9jYWxWYXJzLkNyZWF0ZWRCeUxhYmVsLnJlcGxhY2UoJ3t7dGltZX19JyxuZXcgRGF0ZShyZWNvcmRbJHNjb3BlLmZkLmxvY2FsVmFycy5UYWJsZVByZWZpeCsnX0NyZWF0ZWREYXRlVGltZSddKS50b0xvY2FsZVRpbWVTdHJpbmcoKSlcclxuICAgICAgICBpZiAocmVjb3JkWyRzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXgrJ19DaGFuZ2VkQnkubmFtZSddIT09bnVsbClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuQ2hhbmdlZEJ5TGFiZWwgPSAkc2NvcGUuZmQuUGFyYW1ldGVyc0xhbmcuQ2hhbmdlZEJ5VGVtcGxhdGUucmVwbGFjZSgne3t1c2VyfX0nLHJlY29yZFskc2NvcGUuZmQubG9jYWxWYXJzLlRhYmxlUHJlZml4KydfQ2hhbmdlZEJ5Lm5hbWUnXSlcclxuICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5DaGFuZ2VkQnlMYWJlbCA9ICRzY29wZS5mZC5sb2NhbFZhcnMuQ2hhbmdlZEJ5TGFiZWwucmVwbGFjZSgne3tkYXRlfX0nLG5ldyBEYXRlKHJlY29yZFskc2NvcGUuZmQubG9jYWxWYXJzLlRhYmxlUHJlZml4KydfQ2hhbmdlZERhdGVUaW1lJ10pLnRvTG9jYWxlRGF0ZVN0cmluZygpKVxyXG4gICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLkNoYW5nZWRCeUxhYmVsID0gJHNjb3BlLmZkLmxvY2FsVmFycy5DaGFuZ2VkQnlMYWJlbC5yZXBsYWNlKCd7e3RpbWV9fScsbmV3IERhdGUocmVjb3JkWyRzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXgrJ19DaGFuZ2VkRGF0ZVRpbWUnXSkudG9Mb2NhbGVUaW1lU3RyaW5nKCkpXHJcbiAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuSGFzQ2hhbmdlZEJ5PXRydWVcclxuICAgICAgICB9IFxyXG4gICAgfVxyXG5cclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMuVXBkYXRlUmVzb3VyY2VSZWNvcmQgPSBmdW5jdGlvbihkYXRhc2V0RGVmSWQsZGF0YXNldFJlY29yZElkKXtcclxuICAgICAgICAgXHJcbiAgICAgICAgaWYgKGRhdGFzZXRSZWNvcmRJZD09PXVuZGVmaW5lZCkgZGF0YXNldFJlY29yZElkPSRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZFxyXG4gICAgICAgIGlmIChkYXRhc2V0RGVmSWQ9PT11bmRlZmluZWQpIGRhdGFzZXREZWZJZD0kc2NvcGUuZmQuUGFyZW50RGF0YXNldERlZklkXHJcbiAgICAgICAgbGV0IHJlc291cmNlX2lkID0gICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZUlkXHJcbiAgICAgICAgbGV0IHJ2ZXJzaW9uID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5FeGVWZXJzaW9uXHJcblxyXG4gICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLnVwZGF0ZVJlc291cmNlUmVjb3JkKHJlc291cmNlX2lkLCRzY29wZS5mZC5VdWlkUmVmLCRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuVXVpZFJlZl1bMF0scnZlcnNpb24pLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBkYXRhLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcm1zZyA9IHJlc3BvbnNlLlJlc3BvbnNlTXNnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFybXNnKSBybXNnPVwiUmVjb3JkIHVwZGF0ZWQgc3VjY2Vzc2Z1bHkhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2Uocm1zZywnc3VjY2VzcycpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQgPSAkc2NvcGUuZmQubG9jYWxWYXJzLkV4dHJhY3RJZEZyb21SZWNvcmQocmVzcG9uc2UucmVjb3JkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5VdWlkUmVmXVswXSA9IHJlc3BvbnNlLnJlY29yZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2Uuc2V0RGF0YSh7REVJOiBbeyduYW1lJzoncmVzb3VyY2VMaW5rJywndmFsdWUnOlt7bmFtZToncmVzb3VyY2VJZCcsdmFsdWU6JHNjb3BlLmZkLlJlbGF0ZWR9LHtuYW1lOidyZXNvdXJjZVJlY29yZElkJyx2YWx1ZTokc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWR9XX1dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbe25hbWU6J1ByZXBhcmVEYXRhJyxzdGF0dXM6ZmFsc2V9XSxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd1cGRhdGVSZXNvdXJjZVdpZGdldCcsd2lkZ2V0SWQ6ICRzY29wZS5mZC5VdWlkUmVmLHRhc2tfaW5pdGlhdGVfaWQ6JHNjb3BlLnRhc2tJbml0aWF0ZUlkLHRhc2tfZXhlY3V0ZV9pZDokc2NvcGUudGFza0V4ZWN1dGVJZCxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tJZDogICRzY29wZS5sVGFza0lkLHJlc291cmNlX2lkOiRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZV9zdGF0ZV9pZCxyZXNvdXJjZURlZklkIDogJHNjb3BlLmZkLlJlbGF0ZWQsIG91dHB1dDpvdXRfZmllbGRzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3RhdGUuc3ViamVjdC5ub3RpZnlPYnNlcnZlcnMoXCJ1cGRhdGVSZXNvdXJjZVJlY29yZFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24odmFsdWVTdGF0ZU5hbWUsXCJ2YWx1ZUNoYW5nZWRcIiwge2RhdGFzZXREZWZJZDokc2NvcGUuZmQuUmVsYXRlZCxyZWNvcmRJZDokc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQscmVjb3JkOiRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuVXVpZFJlZl1bMF19KTtcclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKHZhbHVlU3RhdGVOYW1lLFwidmFsdWVDaGFuZ2VkXCIsIHtlcnJvcjp0cnVlfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfSk7XHJcbiAgICB9IFxyXG5cclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMuR2V0UmVjb3JkRm9yVXBkYXRlID0gZnVuY3Rpb24oZGF0YXNldERlZklkLGRhdGFzZXRSZWNvcmRJZCl7XHJcblxyXG4gICAgICAgICBpZiAoZGF0YXNldFJlY29yZElkPT09dW5kZWZpbmVkKSBkYXRhc2V0UmVjb3JkSWQ9MFxyXG4gICAgICAgICBpZiAoZGF0YXNldERlZklkPT09dW5kZWZpbmVkKSBkYXRhc2V0RGVmSWQ9MFxyXG4gICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQgPSBkYXRhc2V0UmVjb3JkSWRcclxuICAgICAgICAgJHNjb3BlLmZkLlBhcmVudERhdGFzZXREZWZJZCA9IGRhdGFzZXREZWZJZFxyXG4gICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmVudERhdGFzZXREZWZJZD09dW5kZWZpbmVkIHx8ICRzY29wZS5mZC5QYXJlbnREYXRhc2V0RGVmSWQ9PTApIFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUGFyZW50RGF0YXNldERlZklkPSRzY29wZS5mZC5SZWxhdGVkXHJcbiAgICAgICAgICAgICAgICBkYXRhc2V0RGVmSWQ9JHNjb3BlLmZkLlBhcmVudERhdGFzZXREZWZJZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2VJZD09dW5kZWZpbmVkKSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2VJZD0wXHJcblxyXG4gICAgICAgICAgICBsZXQgcGFnZWlkID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlSWRcclxuICAgICAgICAgICAgbGV0IHJpbnN0YW5jZSA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZV9pbnN0YW5jZV9pZFxyXG4gICAgICAgICAgICBsZXQgcHJldl9yZXNvdXJjZV9pZCA9ICRzY29wZS50YXNrRXhlY3V0ZUlkXHJcbiAgICAgICAgIGlmICgkc2NvcGUuZmQuUG9wdWxhdGVUeXBlLnRvU3RyaW5nKCkuc3Vic3RyKDAsMSk9PSczJylcclxuICAgICAgICAge1xyXG4gICAgICAgICAgICAvL3BhZ2VpZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucHJldl9wYWdlX2lkXHJcbiAgICAgICAgICAgIHByZXZfcmVzb3VyY2VfaWQgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnByZXZfcGFnZV9pbnN0YW5jZV9pZFxyXG4gICAgICAgICBcclxuICAgICAgICAgfVxyXG4gICAgICAgICBpZiAocHJldl9yZXNvdXJjZV9pZD09dW5kZWZpbmVkKSBwcmV2X3Jlc291cmNlX2lkPTBcclxuXHJcbiAgICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5HZXRUYXNrVXBkYXRlUmVzb3VyY2UoJHNjb3BlLmZkLlV1aWRSZWYscGFnZWlkLCRzY29wZS50YXNrSWQscHJldl9yZXNvdXJjZV9pZCxyaW5zdGFuY2UsJHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtVHlwZSxkYXRhc2V0RGVmSWQsZGF0YXNldFJlY29yZElkLCRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlVmVyc2lvbikudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vVGFza0RhdGFTZXJ2aWNlLkdldFRhc2tVcGRhdGVSZXNvdXJjZSgkc2NvcGUuZmQuVXVpZFJlZiwkc2NvcGUudGFza0lkLCRzY29wZS50YXNrRXhlY3V0ZUlkLCRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybVR5cGUsZGF0YXNldERlZklkLGRhdGFzZXRSZWNvcmRJZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGFzZXRfcmVjb3JkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhLmRhdGEuZGF0YSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAgKGRhdGEuZGF0YS5sZW5ndGg+MCkgZGF0YXNldF9yZWNvcmQgID0gZGF0YS5kYXRhLmRhdGFbMF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGRhdGFzZXRfcmVjb3JkPXt9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZGF0YXNldF9yZWNvcmQgID0gZGF0YS5kYXRhLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuVXVpZFJlZl1bMF0gPSAgZGF0YXNldF9yZWNvcmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQgPSAkc2NvcGUuZmQubG9jYWxWYXJzLkV4dHJhY3RJZEZyb21SZWNvcmQoZGF0YXNldF9yZWNvcmQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5zZXREYXRhKHtERUk6IFt7J25hbWUnOidyZXNvdXJjZUxpbmsnLCd2YWx1ZSc6W3tuYW1lOidyZXNvdXJjZUlkJyx2YWx1ZTpkYXRhc2V0RGVmSWR9LHtuYW1lOidyZXNvdXJjZVJlY29yZElkJyx2YWx1ZTokc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWR9XX1dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbe25hbWU6J1ByZXBhcmVEYXRhJyxzdGF0dXM6ZmFsc2V9XSxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd1cGRhdGVSZXNvdXJjZVdpZGdldCcsd2lkZ2V0SWQ6ICRzY29wZS5mZC5VdWlkUmVmLHRhc2tfaW5pdGlhdGVfaWQ6JHNjb3BlLnRhc2tJbml0aWF0ZUlkLHRhc2tfZXhlY3V0ZV9pZDokc2NvcGUudGFza0V4ZWN1dGVJZCxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tJZDogICRzY29wZS5sVGFza0lkLHJlc291cmNlX2lkOiRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZV9zdGF0ZV9pZCxyZXNvdXJjZURlZklkIDogJHNjb3BlLmZkLlJlbGF0ZWQsIG91dHB1dDpvdXRfZmllbGRzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKHZhbHVlU3RhdGVOYW1lLFwidmFsdWVDaGFuZ2VkXCIsIHtkYXRhc2V0RGVmSWQ6ZGF0YXNldERlZklkLHJlY29yZElkOiRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZCxyZWNvcmQ6JHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5VdWlkUmVmXVswXX0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLlNob3dBdWRpdEluZm8pICRzY29wZS5mZC5sb2NhbFZhcnMuUHJvY2Vzc0F1ZGl0SW5mbyhkYXRhc2V0X3JlY29yZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhRG93bmxvYWRlZCA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICB9ICAgIFxyXG4gICAgXHJcbiAgICAgIFxyXG4gICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLkdldFJlY29yZEZpbHRlciA9IGZ1bmN0aW9uKGZpbHRlcl9kYXRhKXtcclxuXHJcbiAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybUxvYWRlZCA9IGZhbHNlXHJcbiAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXREYXRhc2V0RGF0YSgkc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZUlkLGZpbHRlcl9kYXRhKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YXNldF9yZWNvcmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEuZGF0YSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAgKGRhdGEuZGF0YS5sZW5ndGg+MCkgZGF0YXNldF9yZWNvcmQgID0gZGF0YS5kYXRhWzBdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBkYXRhc2V0X3JlY29yZD17fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGRhdGFzZXRfcmVjb3JkICA9IGRhdGEuZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5VdWlkUmVmXVswXSA9ICBkYXRhc2V0X3JlY29yZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtTG9hZGVkID0gdHJ1ZVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybUxvYWRlZCA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAvKiAgICAgIFxyXG4gICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZXRSZWFkT25seSA9IGZ1bmN0aW9uKGZvcm0scmVhZE9ubHkpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaWYgKGZvcm0hPXVuZGVmaW5lZCl7XHJcbiAgICAgXHRcdFx0XHRcdGZvcih2YXIgaT0wO2k8Zm9ybS5sZW5ndGg7aSsrKSB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJ3JlYWRPbmx5JyBpbiBmb3JtW2ldKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGZvcm1baV0ucmVhZE9ubHkgPSByZWFkT25seTtcclxuICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCdsYXlvdXQnIGluIGZvcm1baV0pXHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZXRSZWFkT25seShmb3JtW2ldLmxheW91dCxyZWFkT25seSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2V0UmVxdWlyZWQgPSBmdW5jdGlvbihmb3JtLHJlcXVpcmVkKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGlmIChmb3JtIT11bmRlZmluZWQpe1xyXG4gICAgIFx0XHRcdFx0XHRmb3IodmFyIGk9MDtpPGZvcm0ubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCdyZXF1aXJlZCcgaW4gZm9ybVtpXSlcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBmb3JtW2ldLnJlcXVpcmVkID0gcmVxdWlyZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGlmICgnbGF5b3V0JyBpbiBmb3JtW2ldKVxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2V0UmVxdWlyZWQoZm9ybVtpXS5sYXlvdXQscmVxdWlyZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgKi9cclxuICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5wcm9jZXNzVGFza1JldHVybiA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAge1xyXG5cclxuICAgICAgICAgICAgIGlmIChkYXRhIT11bmRlZmluZWQpe1xyXG4gICAgICAgICAgICAgICAgbGV0IHJ2XHJcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICBydiAgPSBkYXRhXHJcbiAgICAgICAgICAgICAgICB9ZWxzZSBydiA9W2RhdGFdXHJcblxyXG4gICAgICAgICAgICAgICAgICBmb3IodmFyIGk9MDtpPHJ2Lmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlV1aWRSZWY9PXJ2W2ldLndpZGdldElkKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2Uuc2V0RGF0YShydltpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyRzY29wZS5mZC5sb2NhbFZhcnMuc2V0RmllbGQoJHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQsJ1JlYWRPbmx5Jyx0cnVlKTsgLy9zZXQgYWxsIGVsZW1lbnRzIHJlYWQtb25seVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNldFNlbGVjdGVkUmVzb3VyY2UgPSBmdW5jdGlvbihpZCxzYXZlZCkgIHtcclxuICAgICAgICAgICAgICAvL2RlYnVnZ2VyIC8vc2V0U2VsZWN0ZWREYXRhc2V0XHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW09PXVuZGVmaW5lZCkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbT17fTtcclxuICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdldFB1Ymxpc2hlZFJlc291cmNlQnlJZChpZCxzYXZlZCk7XHJcblxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9ICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICBcclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZ2V0UHVibGlzaGVkUmVzb3VyY2VCeUlkID0gZnVuY3Rpb24oaWQsc2F2ZWQpIFxyXG4gXHJcbiAgICB7XHJcbiAgICBcclxuICAgICAgICAgICAgbGV0IHBvc1xyXG4gICAgICAgICAgICBpZiAoc2F2ZWQgJiYgJHNjb3BlLmZkLkZvcm1EZWYhPT11bmRlZmluZWQgJiYgJHNjb3BlLmZkLkZvcm1EZWYhPT1udWxsKVxyXG4gICAgICAgICAgICAgIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgcG9zID0gJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoaWQpO1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAocG9zPj0wKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lID0gJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3RbcG9zXS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkRGF0YXNldCA9ICRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0W3Bvc11cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5pZCA9IGlkO1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQgPSAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWUgKycgKCcrJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5pZCArJyknXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jPSRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW07XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQgPSAkc2NvcGUuZmQuRm9ybURlZlxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLnNlYXJjaEZvcm0ubGF5b3V0PWFuZ3VsYXIuY29weSgkc2NvcGUuZmQuRm9ybURlZilcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgIHBvcyA9ICRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKGlkKTtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIGlmIChwb3M+PTApe1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0gPSAkc2NvcGUuZmQubG9jYWxWYXJzLnB1Ymxpc2hlZFJlc291cmNlTGlzdFtwb3NdXHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UHVibGlzaGVkUmVzb3VyY2VCeUlkKGlkKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5Gb3JtID0gZGF0YS5kYXRhLkZvcm1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWREYXRhc2V0ID0gJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3RbcG9zXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0ID0gZGF0YS5kYXRhLkZvcm1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW1fYz0kc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkID0gJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lICsnICgnKyRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0uaWQgKycpJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW1fYyE9PXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZUlkPSRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW1fYy5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZVZlcnNpb249JHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jLlZlcnNpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlJlbGF0ZWQ9JHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jLlJlc291cmNlRGVmVWlkOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC5zZWFyY2hGb3JtLmxheW91dD1hbmd1bGFyLmNvcHkoJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jLkZvcm0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5mcmVzaEZvcm09YW5ndWxhci5jb3B5KCRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW1fYy5Gb3JtKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5SZWxhdGVkID0gJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3RbcG9zXS5SZXNvdXJjZURlZlVpZFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnRXJyb3IgLSBwdWJsaXNoZWQgZGF0YXNldCBub3Qgc2VsZWN0ZWQnLCdlcnJvcicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5Gb3JtRGVmID0gJHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybUxvYWRlZD10cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICBcclxuICAgICAgIFxyXG59XHJcblxyXG4gICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0PT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0PVtdO1xyXG4gICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICAgIFxyXG4gICBSZXNvdXJjZXNEYXRhU2VydmljZS5HZXRQdWJsaXNoZWRSZXNvdXJjZXNCeVR5cGUoJ2RhdGFzZXQnLCdmb3JtJykudGhlbihcclxuICAgICAgICBmdW5jdGlvbiAoZGF0YSkgeyAgICAgICBcclxuICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnB1Ymxpc2hlZFJlc291cmNlTGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtTG9hZGVkID0gdHJ1ZVxyXG4gICAgICAgICAgIC8vZGVidWdnZXIgIC8vR2V0UHVibGlzaGVkUmVzb3VyY2VzQnlUeXBlICAgXHJcbiAgICAgICAgICAgLy8kc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCA9IEpTT04ucGFyc2UoZGF0YS5kYXRhWzBdLkZvcm0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlSWQhPW51bGwpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZXRTZWxlY3RlZFJlc291cmNlKCRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlSWQsdHJ1ZSk7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgIH0pO1xyXG4gXHJcblxyXG4gICBcclxuICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2V0RmllbGQgPSBmdW5jdGlvbihmb3JtLG5hbWUsdmFsdWUsbXNnKVxyXG4gICAgICAgIHtcclxuICAgICBcdFx0XHRcdFRhc2tEYXRhU2VydmljZS5zZXRGaWVsZChmb3JtLG5hbWUsdmFsdWUpO1xyXG4gICAgICAgICAgICBpZiAobXNnKSBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UobXNnLCdpbmZvJyk7XHJcbiAgICAgICAgfTsgIFxyXG4gICBcclxuICBcclxuICAgIGxldCBnZXRfcmVzb3VyY2VfcmVjb3JkID0gZnVuY3Rpb24oZGF0YSlcclxuICAgIHtcclxuICAgICAgICBsZXQgcmVjID0gZGF0YS5zdGF0ZT8uaXRlbVZhbHVlPy52YWw/LmlkXHJcblxyXG4gICAgICAgIGlmICghcmVjKSByZWMgPSBkYXRhLnN0YXRlXHJcblxyXG4gICAgICAgIGlmIChyZWMpICRzY29wZS5mZC5sb2NhbFZhcnMuR2V0UmVjb3JkRm9yVXBkYXRlKCRzY29wZS5mZC5SZWxhdGVkLHJlYylcclxuICAgIH1cclxuXHJcbiAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdldFRoaXNSZXNvdXJjZVdpZGdldCAgPSBmdW5jdGlvbigpXHJcbiAgICB7XHJcblxyXG4gICAgICAgIC8vcmVnaXN0ZXIgaGVyZSB0byBrc21cclxuICAgICAgICBsZXQgZGVwZW5kZW50X2ZpZWxkID0gXCJGaWVsZFwiKyRzY29wZS5mZC5VdWlkUmVmO1xyXG4gICAgICAgIGxldCBzdWJzY3JpYmVkU3ViamVjdCA9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkKyctJyskc2NvcGUuZmQuU3JjV2lkZ2V0SWRcclxuICAgICAgICBsZXQgc3ViamVjdCA9ICRzY29wZS5rc20uYWRkU3ViamVjdChzdWJzY3JpYmVkU3ViamVjdCxudWxsKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIGxldCBvYnNlcnZlciA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0LGRlcGVuZGVudF9maWVsZCxcInZhbHVlQ2hhbmdlZFwiLGdldF9yZXNvdXJjZV9yZWNvcmQpO1xyXG4gICAgICAgIGxldCB2YWwgPSAkc2NvcGUua3NtLmdldFN0YXRlKHN1YnNjcmliZWRTdWJqZWN0KVxyXG4gICAgICAgIGlmICh2YWwuc3RhdHVzPT0nb2snICYmIHZhbC5zdGF0ZSkgZ2V0X3Jlc291cmNlX3JlY29yZCh2YWwuc3RhdGUpXHJcbiAgICB9XHJcblxyXG4gICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRQcmV2aW91c1Jlc291cmNlV2lkZ2V0ICA9IGZ1bmN0aW9uKGxpbmtUeXBlKVxyXG4gICAge1xyXG4gICAgICAgIHZhciBwVGFza0RhdGE7XHJcblxyXG4gICAgICAgIGxldCBwYWdlU3RhdGUgPSAgJHNjb3BlLmtzbS5nZXRTdGF0ZSgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQpXHJcbiAgICAgICAgbGV0IHByZXZfdGFza19leGVjdXRlX2lkID0gcGFnZVN0YXRlLnN0YXRlLnByZXZpb3VzVGFzaz8udGFza19leGVjdXRlX2lkXHJcbiAgICAgICAgbGV0IHByZXZfcGFnZV9pZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucHJldl9wYWdlX2lkXHJcbiAgICAgICAgbGV0IHBUYXNrRGF0YVJldFxyXG4gICAgICAgIC8vcFRhc2tEYXRhUmV0ID0gV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5nZXRQcmV2VGFza0RhdGEocHJldl90YXNrX2V4ZWN1dGVfaWQpO1xyXG4gICAgICAgIHBUYXNrRGF0YVJldCA9IFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UuZ2V0UHJldlJlc291cmNlRGF0YShwcmV2X3Rhc2tfZXhlY3V0ZV9pZCwkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnByZXZfcGFnZV9zdGF0ZV9pZCxwcmV2X3BhZ2VfaWQpO1xyXG5cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwVGFza0RhdGFSZXQpICYmIHBUYXNrRGF0YVJldC5sZW5ndGg+MClcclxuICAgICAgICB7ICAgICAgXHJcbiAgICAgICAgICAgICAgICB2YXIgZGF0YXNldElkPTAsZGF0YXNldFJlY29yZElkPTA7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBrPTA7azxwVGFza0RhdGFSZXQubGVuZ3RoO2srKylcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgIHBUYXNrRGF0YSA9IHBUYXNrRGF0YVJldFtrXTtcclxuICAgICAgICAgICAgICAgICAgIGlmIChwVGFza0RhdGEhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChwVGFza0RhdGEuREVJIT11bmRlZmluZWQgJiYgcFRhc2tEYXRhLkRFSSE9bnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHBUYXNrRGF0YS5ERUkubGVuZ3RoO2krKylcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwVGFza0RhdGEuREVJW2ldLm5hbWU9PWxpbmtUeXBlKSB8fCBsaW5rVHlwZT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBUYXNrRGF0YS5ERUlbaV0udmFsdWUhPXVuZGVmaW5lZCAmJiBwVGFza0RhdGEuREVJW2ldLnZhbHVlIT1udWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaj0wO2o8cFRhc2tEYXRhLkRFSVtpXS52YWx1ZS5sZW5ndGg7aisrKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocFRhc2tEYXRhLkRFSVtpXS52YWx1ZVtqXS5uYW1lPT1cInJlc291cmNlSWRcIiAmJiBwVGFza0RhdGEuREVJW2ldLnZhbHVlW2pdLnZhbHVlIT11bmRlZmluZWQgJiYgcFRhc2tEYXRhLkRFSVtpXS52YWx1ZVtqXS52YWx1ZT09PSRzY29wZS5mZC5SZWxhdGVkKSBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YXNldElkPXBUYXNrRGF0YS5ERUlbaV0udmFsdWVbal0udmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaz0wO2s8cFRhc2tEYXRhLkRFSVtpXS52YWx1ZS5sZW5ndGg7aysrKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBUYXNrRGF0YS5ERUlbaV0udmFsdWVba10ubmFtZT09XCJyZXNvdXJjZVJlY29yZElkXCIgJiYgcFRhc2tEYXRhLkRFSVtpXS52YWx1ZVtrXS52YWx1ZSE9dW5kZWZpbmVkICYmIGRhdGFzZXRJZCE9XCIwXCIgJiYgZGF0YXNldElkIT1cIlwiICYmIHBUYXNrRGF0YS5ERUlbaV0udmFsdWVba10udmFsdWU+MCkgZGF0YXNldFJlY29yZElkPXBUYXNrRGF0YS5ERUlbaV0udmFsdWVba10udmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7J2RhdGFzZXRJZCc6ZGF0YXNldElkLCdkYXRhc2V0UmVjb3JkSWQnOmRhdGFzZXRSZWNvcmRJZH07XHJcbiAgICAgICAgXHJcbiAgICB9O1xyXG4gICBcclxuICAgXHJcbiAgICBpZiAoISRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uICYmICRzY29wZS5mZC5Qb3B1bGF0ZU1ldGhvZD09J0EnICYmICgkc2NvcGUuZmQuUG9wdWxhdGVUeXBlLnRvU3RyaW5nKCkuc3Vic3RyKDAsMSk9PSczJyB8fCAkc2NvcGUuZmQuUG9wdWxhdGVUeXBlLnRvU3RyaW5nKCkuc3Vic3RyKDAsMSk9PSc0JykpICBcclxuXHJcbiAgICB7XHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5wcmV2aW91c1Rhc2tEYXRhPSRzY29wZS5mZC5sb2NhbFZhcnMuZ2V0UHJldmlvdXNSZXNvdXJjZVdpZGdldCgpO1xyXG5cclxuICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5wcmV2aW91c1Rhc2tEYXRhPT09dW5kZWZpbmVkKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnByZXZpb3VzVGFza0RhdGEgPSB7ZGF0YXNldFJlY29yZElkOjAsZGF0YXNldElkOiRzY29wZS5mZC5SZWxhdGVkfSBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICgkc2NvcGUuZmQuUmVsYXRlZCE9bnVsbCAmJiAkc2NvcGUuZmQuUmVsYXRlZCE9dW5kZWZpbmVkKSAkc2NvcGUuZmQubG9jYWxWYXJzLkdldFJlY29yZEZvclVwZGF0ZSgkc2NvcGUuZmQubG9jYWxWYXJzLnByZXZpb3VzVGFza0RhdGE/LmRhdGFzZXRJZCwkc2NvcGUuZmQubG9jYWxWYXJzLnByZXZpb3VzVGFza0RhdGE/LmRhdGFzZXRSZWNvcmRJZClcclxuXHJcbiAgICB9ZWxzZSBpZiAoJHNjb3BlLmZkLlBvcHVsYXRlVHlwZS50b1N0cmluZygpLnN1YnN0cigwLDEpPT0nMicpXHJcbiAgICB7XHJcbiAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdldFRoaXNSZXNvdXJjZVdpZGdldCgpXHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmICghJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb24gJiYgJHNjb3BlLmZkLlBvcHVsYXRlTWV0aG9kPT0nQScgJiYgJHNjb3BlLmZkLlBvcHVsYXRlVHlwZS50b1N0cmluZygpLnN1YnN0cigwLDEpPT0nMicpICBcclxuXHJcbiAgICB7XHJcblxyXG4gICAgICAgIC8vc3Vic2NyaWJlIHRvIHZhbHVlX2NoYW5nZWQgZXZlbnRcclxuICAgICAgICBsZXQgd2lkZ2V0SWRGcm9tID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkKyctJyskc2NvcGUuZmQuU3JjV2lkZ2V0SWRcclxuICAgICAgICBvYnNlcnZlciA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHdpZGdldElkRnJvbSxkZXBlbmRlbnRfZmllbGQsXCJ2YWx1ZUNoYW5nZWRcIixhcHBseV92YWx1ZSk7XHJcbiAgICAgICAgbGV0IHN0ID0gJHNjb3BlLmtzbS5nZXRTdGF0ZSh3aWRnZXRJZEZyb20pXHJcblxyXG4gICAgICAgIGlmIChzdC5zdGF0dXM9PSdvaycpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB2YWwgPSBzdC5zdGF0ZT8ucmVjb3JkXHJcbiAgICAgICAgICAgIGlmICh2YWwhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXgrJ19pZCcgaW4gdmFsKSAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQ9IHZhbFskc2NvcGUuZmQubG9jYWxWYXJzLlRhYmxlUHJlZml4KydfaWQnXVxyXG4gICAgICAgICAgICAgICAgZWxzZSAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQ9IHZhbC5pZFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQgPT0gbnVsbCkgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkPTA7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZD4wKSAkc2NvcGUuZmQubG9jYWxWYXJzLkdldFJlY29yZEZvclVwZGF0ZSgkc2NvcGUuZmQuUGFyZW50RGF0YXNldERlZklkLCRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAgICAgICRzY29wZS4kb24oJ0luaXRpYXRlVGFza1Bvc3RQcm9jZXNzJyskc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRyYW5zYWN0aW9uX2lkLGZ1bmN0aW9uKGV2ZW50LCBkYXRhKXtcclxuICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5wcm9jZXNzVGFza1JldHVybihkYXRhKVxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLiRvbignRXhlY3V0ZVRhc2tQb3N0UHJvY2VzcycrJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50YXNrX2V4ZWN1dGVfaWQsZnVuY3Rpb24oZXZlbnQsIGRhdGEpe1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnByb2Nlc3NUYXNrUmV0dXJuKGRhdGEpXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgJHNjb3BlLiRvbignUHJvY2Vzc1dpZGdldFBvc3RQcm9jZXNzJyskc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQsZnVuY3Rpb24oZXZlbnQsIGRhdGEpe1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnByb2Nlc3NUYXNrUmV0dXJuKGRhdGEpXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICBcclxuICBcclxuICAgIGxldCB0ZW1wbGF0ZTtcclxuICAgIGlmICgkc2NvcGUuZm9ybURlZmluaXRpb24pIHRlbXBsYXRlID0gJHRlbXBsYXRlQ2FjaGUuZ2V0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tVcGRhdGVSZXNvdXJjZS5odG1sJyk7XHJcbiAgICBlbHNlIHRlbXBsYXRlID0gJHRlbXBsYXRlQ2FjaGUuZ2V0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tVcGRhdGVSZXNvdXJjZUV4ZS5odG1sJyk7XHJcbiAgICAgICAgICBcclxuICAgICRlbGVtZW50LmFwcGVuZCgkY29tcGlsZSh0ZW1wbGF0ZSkoJHNjb3BlKSk7IFxyXG4gIFxyXG4gIFxyXG59XTtcclxuICByZXR1cm4ge1xyXG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICBjb250cm9sbGVyOiBjb250cm9sbGVyLFxyXG4gICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XHJcblxyXG4gICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgIGxldCB3aWRnZXRTdGF0ZT0gc2NvcGUua3NtLmFkZFN1YmplY3Qoc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQrJy0nK3Njb3BlLmZkLlV1aWRSZWYsc2NvcGUuZmQuVXVpZFJlZik7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2lkZ2V0U3RhdGVOYW1lID0gd2lkZ2V0U3RhdGUuc3ViamVjdC5uYW1lO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgY2xlYXJfZm9ybSA9IGZ1bmN0aW9uKClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgLy9zY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0PVtdXHJcbiAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtTG9hZGVkPWZhbHNlXHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9zY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0ID0gYW5ndWxhci5jb3B5KHNjb3BlLmZkLmxvY2FsVmFycy5mcmVzaEZvcm0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmZvcm1EYXRhW3Njb3BlLmZkLlV1aWRSZWZdPSBbe31dXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0U3RhdGUuc3ViamVjdC5zZXRTdGF0ZUNoYW5nZXMgPSBzY29wZS5mZC5VdWlkUmVmXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0U3RhdGUuc3ViamVjdC5ub3RpZnlPYnNlcnZlcnMoXCJjbGVhcmZvcm1cIik7XHJcbiAgICAgICAgICAgICAgICAgIH0pICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgIGxldCBhY3Rpb25fZm9ybV9jbGVhcmVkID0gc2NvcGUua3NtLmFkZEFjdGlvbih3aWRnZXRTdGF0ZU5hbWUsXCJjbGVhcmZvcm1cIixjbGVhcl9mb3JtKTtcclxuXHJcblxyXG4gICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhID0ge307XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMucHJlcGFyZVJlc291cmNlRGF0YSA9IGZ1bmN0aW9uKHJlc291cmNlUmVjb3JkSWQpe1xyXG4gICAgICAgICAgIFxyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgc2NvcGUuZmQuaXRlbVZhbHVlID0gIFJlc291cmNlc0RhdGFTZXJ2aWNlLnByZXBhcmVSZXNvdXJjZVdpZGdldERhdGEoc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCxyZXNvdXJjZVJlY29yZElkKTtcclxuICBcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnByb2Nlc3NXaWRnZXREZXBlbmRlbmNpZXMgPSBmdW5jdGlvbigpIHsgLy8tLS0tLSAga3RVcGxvYWRlciAgLS0tLS1cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICBpZiAoc2NvcGUuZmQudEl0ZW1WYWx1ZSE9dW5kZWZpbmVkKSBcclxuICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8IHNjb3BlLmZkLnRJdGVtVmFsdWUubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGxpbmtlZFdpZGdldElkPXNjb3BlLmZkLnRJdGVtVmFsdWVbaV0ud2lkZ2V0SWQ7ICAvLyBsaW5rZWRXaWRnZXRJZD0gV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5nZXRMb2NhbFdpZGdldElkKGxpbmtlZFdpZGdldElkKTsvL01JR09SIC0gbW9yYW0gZG9iaXRpIGxvY2Fsd2lkZ2V0SWQgb2QgdmV6YW5vZyBXaWRnZXRJZCBcclxuICAgICAgICAgICAgICAgIHZhciBsaW5rZWRJdGVtID0gJ3Jlc291cmNlTGluaycgICAgICAgICAgICAgICAgICAgICAgLy92YXIgbGlua2VkSXRlbSA9IHNjb3BlLmZkLnRJdGVtVmFsdWVbaV0ubmFtZTtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAobGlua2VkV2lkZ2V0SWQhPXVuZGVmaW5lZCAmJiBsaW5rZWRXaWRnZXRJZCE9bnVsbCApIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7ajxzY29wZS5mZC50SXRlbVZhbHVlW2ldLkRFSS5sZW5ndGg7aisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoc2NvcGUuZmQudEl0ZW1WYWx1ZVtpXS5ERUlbal0ubmFtZT09bGlua2VkSXRlbSkgJiYgKHNjb3BlLmZkLnRJdGVtVmFsdWVbaV0uREVJW2pdLnZhbHVlPT10cnVlKSkgeyAvL1NDT1BFLk9OIHNhbW8ga2FkIGplIERFSSB2YWx1ZSA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGlua2VkSXRlbSA9IHNjb3BlLmZkLnRJdGVtVmFsdWVbaV0uREVJW2pdLm5hbWU7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidmlldyBcIitzY29wZS5mZC5QcmVzZW50YXRpb25JZCtcIiBzZSB2ZXplIG5hIHNlcnZlcnNraSBcIiArIGxpbmtlZFdpZGdldElkKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuJG9uKCdFdmVudCcrbGlua2VkV2lkZ2V0SWQrbGlua2VkSXRlbSxmdW5jdGlvbihldmVudCwgZGF0YSl7ICAvL2lkZSBwbyBzdmltIHZlemFuaW0gd2lkZ2V0aW1hIGkgZG9kYWogc2NvcGUub24gICAvL01JR09SIFRPRE8gLSBET0RBVEkgU0FNTyBVIFNMVUNBSlUgREEgSkUgREVJIFZBTFVFID0gVFJVRSAhISEhICAgICA8PDw8PDw8PDw8PDw8ICEhISEhISEhIVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJ2aWV3IFwiKyBzY29wZS5mZC5QcmVzZW50YXRpb25JZCtcIiBkb2JpbyBldmVudCBcIiArIGV2ZW50Lm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGs9MDtrPGRhdGEubGVuZ3RoO2srKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFba10ubmFtZT09J3Jlc291cmNlUmVjb3JkSWQnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMubGlua2VkUmVzb3VyY2VJZCA9IGRhdGFba10udmFsdWU7IC8vVE9ETyAtIElMSiAtIG92byBiaSBpc3RvIHRyZWJhbGEgYml0aSB2YXJpamFibGEgLSBzdGEgYWtvIHByb21qZW5pbSBpbnRlcmZhY2Ugb2Rub3NubyBuYXppdiBwb2xqYSFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQgPSBzY29wZS5mZC5sb2NhbFZhcnMubGlua2VkUmVzb3VyY2VJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhW2tdLm5hbWU9PSdyZXNvdXJjZUlkJykgc2NvcGUuZmQubG9jYWxWYXJzLmxpbmtlZFJlc291cmNlRGVmSWQgPSBkYXRhW2tdLnZhbHVlOyAgLy9UT0RPLSBJTEogLSBvdm8gYmkgaXN0byB0cmViYWxhIGJpdGkgdmFyaWphYmxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2dldCBzZWxlY3RlZFJlY29yZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3Njb3BlLmdldEZvcm1SZXNvdXJjZVdpdGhEYXRhKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vXHRkYXRhOiB7cmVzb3VyY2VfZGVmX2lkOnNjb3BlLmZkLmxpbmtlZFJlc291cmNlRGVmSWQscmVzb3VyY2VfaWQ6c2NvcGUuZmQubGlua2VkUmVzb3VyY2VJZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIC8vb25fRU5EXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0vL2lmXHJcbiAgICAgICAgICAgICAgICAgICAgfS8vZm9yIGpcclxuICAgICAgICAgICAgICAgIH0vL2lmXHJcblxyXG4gICAgICAgICAgICAgLy8gZWxzZSB7ICBzY29wZS5mZC50SXRlbVZhbHVlLnNwbGljZShpLDEpOyAgfSAvLyBuaWplIG1pIGphc25vIHphc3RvIHNhbSByYWRpbyBTUExJQ0VcclxuICAgICAgICAgICAgfSAvL2ZvciBpXHJcbiAgICAgIH0vL2ZuICBwcjBjZXNzV2lkZ2V0RGVwZW5kZWNpZXMgLS0tLS0tLS0tLS0tLSAgICBrdFZpZXdTaW5nbGVSZXNvdXJjZVdpZGdldFxyXG5cclxuICAgICAgICAgIGlmIChzY29wZS5mZC5QcmVzZW50YXRpb25JZD09dW5kZWZpbmVkIHx8IHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT1udWxsKSBzY29wZS5mZC5QcmVzZW50YXRpb25JZD0wO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuZm9ybVR5cGU9c2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fdHlwZTtcclxuICAgICAgICAgIC8qXHJcbiAgICAgICAgICBUYXNrRGF0YVNlcnZpY2UuZ2V0V2lkZ2V0RGVwZW5kZW5jaWVzKHNjb3BlLnRhc2tJZCxzY29wZS5mZC5QcmVzZW50YXRpb25JZCxzY29wZS5mZC5sb2NhbFZhcnMuZm9ybVR5cGUpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQudEl0ZW1WYWx1ZT1kYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnByb2Nlc3NXaWRnZXREZXBlbmRlbmNpZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgIFxyXG4gIFxyXG4gICAgICAgIH1cclxuICB9IFxyXG4gICAgICAgIFxyXG59O1xuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24ga3RUYXNrVmlld1BkZiAoKSB7XG4gICBcbiAgICB2YXIgY29udHJvbGxlciA9IFsnJHNjb3BlJywgJyR1aWJNb2RhbCcsJyRzdGF0ZVBhcmFtcycsJyR0aW1lb3V0JywnQ29kZXNTZXJ2aWNlJywnUmVzb3VyY2VzRGF0YVNlcnZpY2UnLCckcm9vdFNjb3BlJywnUHJvY2Vzc2luZ1NlcnZpY2UnLCdXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlJywnR3JpZHN0ZXJTZXJ2aWNlJywnTWVzc2FnaW5nU2VydmljZScsJ0NPREVTX0NPTlNUJywnVGFza0RhdGFTZXJ2aWNlJywnS2F0YWx5b1N0YXRlTWFuYWdlcicsXG4gICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCRzY29wZSwkdWliTW9kYWwsJHN0YXRlUGFyYW1zLCR0aW1lb3V0LENvZGVzU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSwkcm9vdFNjb3BlLFByb2Nlc3NpbmdTZXJ2aWNlLFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsQ09ERVNfQ09OU1QsVGFza0RhdGFTZXJ2aWNlLEthdGFseW9TdGF0ZU1hbmFnZXIpIHtcbiAgICAgIFxuICAgICAgXG4gICAgXG4gICAgJHNjb3BlLmxvY2FsVmFycz17fTtcbiAgICAkc2NvcGUuZ3NydmM9R3JpZHN0ZXJTZXJ2aWNlO1xuICAgICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9MDtcbiAgICAkc2NvcGUuZmQuaW5pdGlhbExvYWQ9dHJ1ZTtcbiAgICAkc2NvcGUubG9jYWxWYXJzLnNyY190eXBlX3RleHQ9Q09ERVNfQ09OU1QuX1BPUFVMQVRFX1RZUEVfOyBcbiAgICAkc2NvcGUubG9jYWxWYXJzLnNlYXJjaEZvcm1Eb3dubG9hZGVkID0gZmFsc2U7XG4gICAgJHNjb3BlLmxvY2FsVmFycy5zaG93U2VhcmNoRmlsdGVycz10cnVlO1xuICAgICRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRlZCA9IGZhbHNlO1xuICAgICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRJdGVtcz1bXTtcbiAgICAkc2NvcGUudGFza0lkPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VEZWZJZDtcbiAgICBpZiAoJHNjb3BlLnRhc2tJZD09dW5kZWZpbmVkKSAgJHNjb3BlLnRhc2tJZD0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlJlc291cmNlRGVmSWRfaWQ7XG4gICAgaWYgKCRzY29wZS50YXNrSWQ9PXVuZGVmaW5lZCkgJHNjb3BlLnRhc2tJZD0wXG4gICAgJHNjb3BlLmxvY2FsVmFycy50YXNrSWQ9JHNjb3BlLnRhc2tJZDtcbiAgICAkc2NvcGUubG9jYWxWYXJzLndpZGdldFR5cGUgPSA0O1xuICAgICRzY29wZS5sb2NhbFZhcnMuZm9ybVBhcmFtcz17Zm9ybVZpZXdUeXBlOjEsc2hvd0dyaWROYXZpZ2F0aW9uOnRydWV9O1xuICAgICRzY29wZS5sb2NhbFZhcnMuY2FyZExheW91dFBhcmFtcz17Zm9ybVZpZXdUeXBlOjEsc2hvd0dyaWROYXZpZ2F0aW9uOnRydWV9O1xuICAgIC8vJHNjb3BlLmdzcnZjLnNldEZvcm1WaWV3VHlwZSgkc2NvcGUubG9jYWxWYXJzLmZvcm1QYXJhbXM9e2Zvcm1WaWV3VHlwZSkpO1xuICAgICRzY29wZS5sb2NhbFZhcnMucGFyZW50RGF0YXNldERlZklkPSRzY29wZS5mZC5SZWxhdGVkO1xuICAgICRzY29wZS5sb2NhbFZhcnMuYW5pbWF0aW9uc0VuYWJsZWQgPSB0cnVlO1xuICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycz09dW5kZWZpbmVkKSAkc2NvcGUuZmQuUGFyYW1ldGVycyA9IHtQcmVzZW50YXRpb25UeXBlOid0YWJsZSd9O1xuICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlPT11bmRlZmluZWQgfHwgJHNjb3BlLmZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZT09bnVsbCkgJHNjb3BlLmZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZT0ndGFibGUnO1xuICAgICRzY29wZS5sb2NhbFZhcnMuZ3JpZHN0ZXJUeXBlPVwicmVzb3VyY2VcIjtcbiAgICAkc2NvcGUuaXRlbVZhbHVlID0ge3ZhbDpudWxsfTtcbiAgICAkc2NvcGUubG9jYWxWYXJzLmlzQ29sbGFwc2VkID0gJHNjb3BlLmZkLlBhcmFtZXRlcnMuU2VhcmNoRm9ybUNvbGxhcHNlZDtcbiAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5pc0NvbGxhcHNlZD09dW5kZWZpbmVkKSAkc2NvcGUubG9jYWxWYXJzLmlzQ29sbGFwc2VkID10cnVlO1xuICAgIGlmICgkc2NvcGUuZmQuQXV0b1NlYXJjaCkgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGluZyA9IHRydWU7XG5cbiAgICAgJHNjb3BlLmxvY2FsVmFycy5kYXNoYm9hcmQgPSB7XG4gIFx0XHRcdFx0aWQ6ICcxJyxcbiAgXHRcdFx0XHRuYW1lOiAnSG9tZScsXG4gIFx0XHRcdFx0d2lkZ2V0czoge31cblx0XHRcdFx0fSA7XG4gICAgICAgIFxuICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5kYXNoYm9hcmRDYXJkID0ge1xuICBcdFx0XHRcdGlkOiAnMScsXG4gIFx0XHRcdFx0bmFtZTogJ0hvbWUnLFxuICBcdFx0XHRcdHdpZGdldHM6IHt9XG5cdFx0XHRcdH0gO1xuICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEgPSB7XG4gICAgICAgICAgIC8vICBjb2x1bW5EZWZzOiBjb2xEZWZzLFxuICAgICAgICAvL2VuYWJsZUdyaWRNZW51OiB0cnVlLFxuICAgICAgICBzaG93R3JpZEZvb3RlcjogdHJ1ZSxcbiAgICAgICAgc2hvd0NvbHVtbkZvb3RlcjogdHJ1ZSxcbiAgICAgICAgZW5hYmxlUm93U2VsZWN0aW9uOiB0cnVlLFxuICAgICAgICBtdWx0aVNlbGVjdDogJHNjb3BlLmZkLk11bHRpbGluZSxcbiAgICAgIC8vICBlbmFibGVIb3Jpem9udGFsU2Nyb2xsYmFyIDogMSxcbiAgICAgICAvLyBlbmFibGVWZXJ0aWNhbFNjcm9sbGJhciA6IDIsXG4gICAgICAgIGVuYWJsZUZpbHRlcmluZzogdHJ1ZSxcbiAgICAgICAgZW5hYmxlUm93SGVhZGVyU2VsZWN0aW9uOiBmYWxzZSxcbiAgICAgICAgZW5hYmxlQ29sdW1uUmVzaXppbmc6IHRydWUsXG4gICAgICAgIGVuYWJsZUNvbHVtblJlb3JkZXJpbmc6IHRydWUsXG4gICAgICAgIC8vdXNlRXh0ZXJuYWxQYWdpbmF0aW9uOiBmYWxzZSxcbiAgICAgICAgcGFnaW5hdGlvblBhZ2VTaXplczogWzEwLCAyNSwgNTAsMTAwLDIwMCw1MDAsMTAwMCw1MDAwLDEwMDAwXSxcbiAgICAgICAvLyBlbmFibGVQYWdpbmF0aW9uQ29udHJvbHM6IHRydWUsXG4gICAgICB9O1xuXG4gIHZhciBwYWdpbmF0aW9uT3B0aW9ucyA9IHtcbiAgICBwYWdlTnVtYmVyOiAxLFxuICAgIHBhZ2VTaXplOiAxMCxcbiAgICBzb3J0OiBudWxsXG4gICAgfTtcbiAgICBcbiAgICBcbiAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVsYXRlZCA9IHtcbiAgICAgIC8vICBjb2x1bW5EZWZzOiBjb2xEZWZzLFxuICAgICAgIGVuYWJsZUdyaWRNZW51OiB0cnVlLFxuICAgICAgIHNob3dHcmlkRm9vdGVyOiB0cnVlLFxuICAgICAgIHNob3dDb2x1bW5Gb290ZXI6IHRydWUsXG4gICAgICAgZW5hYmxlUm93U2VsZWN0aW9uOiBmYWxzZSxcbiAgICAgICBtdWx0aVNlbGVjdDogZmFsc2UsXG4gICAgICAgZW5hYmxlSG9yaXpvbnRhbFNjcm9sbGJhciA6IDIsIFxuICAgICAgIG5hYmxlVmVydGljYWxTY3JvbGxiYXIgOiAyLFxuICAgICAgIGVuYWJsZUZpbHRlcmluZzogdHJ1ZSxcbiAgICAgICBlbmFibGVSb3dIZWFkZXJTZWxlY3Rpb246IHRydWUsXG4gICAgICAgZW5hYmxlQ29sdW1uUmVzaXppbmc6IHRydWUsXG4gICAgICAgbWluUm93c1RvU2hvdzogMixcbiAgICAgIFxuICAgfVxuICAgIFxuICAgICAgICAkc2NvcGUudGFza0lkPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VEZWZJZDtcbiAgICAgICAgaWYgKCRzY29wZS50YXNrSWQ9PXVuZGVmaW5lZCkgICRzY29wZS50YXNrSWQ9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZURlZklkX2lkO1xuICAgICAgICBpZiAoJHNjb3BlLnRhc2tJZD09dW5kZWZpbmVkKSAkc2NvcGUudGFza0lkPTA7XG4gICAgICAgIFxuICAgICAgICAvLyRzY29wZS5mZC5Qb3B1bGF0ZVR5cGU9MTtcbiAgICAgICAgJHNjb3BlLmZkLlBhcmVudERhdGFzZXREZWZJZD0kc2NvcGUuZmQuUmVsYXRlZDtcbiAgICAgICAgJHNjb3BlLnByZXZUYXNrRXhlSWQgPSAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wcmV2X3Rhc2tfaWQ7XG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMuZm9ybVR5cGU9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX3R5cGU7XG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMuc291cmNlX3R5cGU9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5zb3VyY2VfdHlwZTtcbiAgICAgICAgJHNjb3BlLnRhc2tJbml0aWF0ZUlkID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50YXNrX2luaXRpYXRlX2lkO1xuICAgICAgICAkc2NvcGUudGFza0V4ZWN1dGVJZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udGFza19leGVjdXRlX2lkO1xuICAgICAgICAkc2NvcGUuZm9ybURlZmluaXRpb24gPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fZGVmaW5pdGlvbjtcbiAgICAgICAgaWYgICgkc2NvcGUuZm9ybURlZmluaXRpb249PXVuZGVmaW5lZClcbiAgICAgICAge1xuICAgICAgICAgIFxuICAgICAgICAgICRzY29wZS5mb3JtRGVmaW5pdGlvbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBcbiAgICAgICAgXG4gICAgICAgIFxuICAgICAgICAgIGlmICgkc2NvcGUudGFza0luaXRpYXRlSWQ9PXVuZGVmaW5lZClcbiAgICAgICB7XG4gICAgICAgICRzY29wZS50YXNrSW5pdGlhdGVJZCA9MDtcbiAgICAgICAgXG4gICAgICAgfVxuICAgICAgIGlmICgkc2NvcGUudGFza0V4ZWN1dGVJZD09dW5kZWZpbmVkKVxuICAgICAgIHtcbiAgICAgICAgJHNjb3BlLnRhc2tFeGVjdXRlSWQgPTA7XG4gICAgICAgIFxuICAgICAgIH1cbiAgICAgICAgaWYgKCRzY29wZS5wcmV2VGFza0V4ZUlkPT11bmRlZmluZWQpXG4gICAgICAgIHtcbiAgICAgICAgICAkc2NvcGUucHJldlRhc2tFeGVJZCA9MDtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkID0gMDtcbiAgICAgICAgJHNjb3BlLmZkLlBhcmVudEVsZW1lbnRJZCA9IDA7XG4gICAgICBcbiAgICAgIHZhciBvdXRfZmllbGRzID0gWydyZXNvdXJjZVJlY29yZElkJ107XG4gICAgICAvL3Jlc291cmNlTGlua1xuICAgICAgdmFyIHdpZGdldERlZmluaXRpb24gPSB7XG4gICAgICAgICAgICBERUk6IFt7J25hbWUnOidyZXNvdXJjZUxpbmtEYXRhc2V0TGlzdCcsJ3ZhbHVlJzpbe25hbWU6J3Jlc291cmNlSWQnLHZhbHVlOiRzY29wZS5mZC5SZWxhdGVkfSx7bmFtZToncmVzb3VyY2VSZWNvcmRJZCcsdmFsdWU6Jyd9XX1dLFxuICAgICAgICAgICAgYWN0aW9uczogW3tuYW1lOidQcmVwYXJlRGF0YScsc3RhdHVzOmZhbHNlfV0sXG4gICAgICAgICAgICBuYW1lOiAnZGF0YXNldExpc3RXaWRnZXQnLFxuICAgICAgICAgICAgd2lkZ2V0SWQ6ICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCxcbiAgICAgICAgICAgIHRhc2tJZDogICRzY29wZS5sVGFza0lkLFxuICAgICAgICAgICAgcmVzb3VyY2VEZWZJZCA6ICRzY29wZS5mZC5SZWxhdGVkLCAvL3Jlc291cmNlRGVmSWQgOiAkc2NvcGUuc2VsZWN0ZWRSZXNvdXJjZVxuICAgICAgICAgICAgcmVzb3VyY2VSZWNvcmRJZDokc2NvcGUubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQsdGFza19pbml0aWF0ZV9pZDokc2NvcGUudGFza0luaXRpYXRlSWQsdGFza19leGVjdXRlX2lkOiRzY29wZS50YXNrRXhlY3V0ZUlkLCBvdXRwdXQ6b3V0X2ZpZWxkcyBcbiAgICAgIH07XG4gICAgICAkc2NvcGUubG9jYWxWYXJzLmxvY2FsV2lkZ2V0SWQgPSBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnJlZ2lzdGVyV2lkZ2V0KHdpZGdldERlZmluaXRpb24pO1xuICAgICAgJHNjb3BlLmxvY2FsVmFycy5Mb2NhbElkPSRzY29wZS5sb2NhbFZhcnMubG9jYWxXaWRnZXRJZDtcbiAgICAgICRzY29wZS5mZC5Mb2NhbElkPSRzY29wZS5sb2NhbFZhcnMubG9jYWxXaWRnZXRJZDtcbiAgICAgICAgICBcbiAgICAgICBcbiAgICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICAgICAqKioqKioqKioqKioqKioqKiogU3luYyBkYXRhIHdpdGggU3RhdGUgbWFuYWdlciAqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAgICAgICAgXG4gICAgICAgIGxldCBkZXBlbmRlbnRfZmllbGRfcGlkID0gJHNjb3BlLmZkLkxvY2FsSWQ7XG4gICAgICAgIGxldCBzdWJzY3JpYmVkU3ViamVjdFBpZCA9IFwiZm9ybURlZmluaXRpb25TdGF0ZVwiKyRzY29wZS50YXNrSWQrJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX3R5cGU7XG4gICAgICAgIGxldCBkZXBlbmRlbnRfZmllbGRfcGlkMlxuICAgICAgICBsZXQgdXBkYXRlX3ByZXNlbnRhdGlvbl9pZDIgPSBmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICBsZXQgcHJlc2VudGF0aW9uX2lkID0gYW5ndWxhci5jb3B5KCRzY29wZS5mZC5QcmVzZW50YXRpb25JZClcbiAgICAgICAgICAgIGlmIChkYXRhW3ByZXNlbnRhdGlvbl9pZF0hPT11bmRlZmluZWQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkID0gZGF0YVtwcmVzZW50YXRpb25faWRdO1xuICAgICAgICAgICAgLy91bnN1YnNjcmliZSBoZXJlIGxhdGVyIGFmdGVyIGltcGxlbWVudGluZyB1bnN1YnNjcmliZSAtIFRvRG9cbiAgICAgICAgICAgIGRlcGVuZGVudF9maWVsZF9waWQyID0gJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXG4gICAgICAgICAgICBsZXQgb2JzZXJ2ZXJQaWQyID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3RQaWQsZGVwZW5kZW50X2ZpZWxkX3BpZDIsXCJmb3JtU2F2ZWRcIix1cGRhdGVfcHJlc2VudGF0aW9uX2lkMik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHVwZGF0ZV9wcmVzZW50YXRpb25faWQgPSBmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICBpZiAoZGF0YVskc2NvcGUuZmQuTG9jYWxJZF0+MCAmJiAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PTAgJiYgZGF0YVskc2NvcGUuZmQuTG9jYWxJZF0hPT11bmRlZmluZWQpICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCA9IGRhdGFbJHNjb3BlLmZkLkxvY2FsSWRdO1xuICAgICAgICAgIFxuICAgICAgICAgICAgbGV0IG9ic2VydmVyUGlkMiA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0UGlkLGRlcGVuZGVudF9maWVsZF9waWQyLFwiZm9ybVNhdmVkXCIsdXBkYXRlX3ByZXNlbnRhdGlvbl9pZDIpO1xuICAgICAgICAgICAgLy91bnN1YnNjcmliZSBoZXJlIGxhdGVyIGFmdGVyIGltcGxlbWVudGluZyB1bnN1YnNjcmliZSAtIFRvRG9cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgXG4gICAgICAgIGlmICgkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PT1udWxsIHx8ICRzY29wZS5mZC5QcmVzZW50YXRpb25JZD09PTApXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCBvYnNlcnZlclBpZCA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0UGlkLGRlcGVuZGVudF9maWVsZF9waWQsXCJmb3JtU2F2ZWRcIix1cGRhdGVfcHJlc2VudGF0aW9uX2lkKTtcbiAgICAgICAgfSBlbHNle1xuICAgICAgICAgICAgZGVwZW5kZW50X2ZpZWxkX3BpZDIgPSAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWRcbiAgICAgICAgICAgIGxldCBvYnNlcnZlclBpZDIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdFBpZCxkZXBlbmRlbnRfZmllbGRfcGlkMixcImZvcm1TYXZlZFwiLHVwZGF0ZV9wcmVzZW50YXRpb25faWQyKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzPT11bmRlZmluZWQpICRzY29wZS5mZC5QYXJhbWV0ZXJzPXt9O1xuICAgICAgIFxuICAgICAgICBcbiAgICAgICAgbGV0IHZhbHVlU3RhdGU9ICRzY29wZS5rc20uYWRkU3ViamVjdCgkc2NvcGUuZmQuRWxlbWVudFR5cGUrXCJWYWx1ZVN0YXRlTmFtZVwiKyRzY29wZS5mZC5QcmVzZW50YXRpb25JZCskc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRyYW5zYWN0aW9uX2lkLCRzY29wZS5pdGVtVmFsdWUudmFsKTtcbiAgICAgICAgbGV0IHZhbHVlU3RhdGVOYW1lID0gdmFsdWVTdGF0ZS5zdWJqZWN0Lm5hbWU7XG4gICAgICAgIFxuICAgICAgICBsZXQgdmFsdWVfY2hhbmdlZCA9IGZ1bmN0aW9uKGRhdGEpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlU3RhdGUuc3ViamVjdC5zZXRTdGF0ZUNoYW5nZXMgPSBkYXRhO1xuICAgICAgICAgICAgdmFsdWVTdGF0ZS5zdWJqZWN0Lm5vdGlmeU9ic2VydmVycyhcInZhbHVlQ2hhbmdlZFwiKTtcbiAgICAgICAgfTtcbiAgICAgICAgXG4gICAgICAgIGxldCBhY3Rpb25fdmFsdWVfY2hhbmdlZCA9ICRzY29wZS5rc20uYWRkQWN0aW9uKHZhbHVlU3RhdGVOYW1lLFwidmFsdWVDaGFuZ2VkXCIsdmFsdWVfY2hhbmdlZCk7XG4gICAgICAgXG4gICAgICAgIGxldCBhcHBseV92YWx1ZSA9IGZ1bmN0aW9uKGRhdGEpXG4gICAgICAgIHtcbiAgICAgICAgICAgICRzY29wZS5pdGVtVmFsdWUudmFsID0gZGF0YTtcbiAgICAgICAgfTsgXG4gICAgICAgXG4gICAgICAgIGlmICggJHNjb3BlLmZkLlBhcmFtZXRlcnMuRGVwZW5kZW50RmllbGRJZCE9dW5kZWZpbmVkICAgICAmJiAkc2NvcGUuZmQuUGFyYW1ldGVycy5EZXBlbmRlbnRGaWVsZElkIT1udWxsICAgICAmJiAkc2NvcGUuZmQuUGFyYW1ldGVycy5EZXBlbmRlbnRGaWVsZElkIT1cIlwiIClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsZXQgZGVwZW5kZW50X2ZpZWxkID0gXCJGaWVsZFwiKyRzY29wZS5mZC5QYXJhbWV0ZXJzLkRlcGVuZGVudEZpZWxkSWQ7XG4gICAgICAgICAgICAgICAgbGV0IHN1YnNjcmliZWRTdWJqZWN0ID0gJHNjb3BlLmZkLlBhcmFtZXRlcnMuRGVwZW5kZW50RmllbGRUeXBlK1wiVmFsdWVTdGF0ZU5hbWVcIiskc2NvcGUuZmQuUGFyYW1ldGVycy5EZXBlbmRlbnRGaWVsZElkO1xuICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlciA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0LGRlcGVuZGVudF9maWVsZCxcInZhbHVlQ2hhbmdlZFwiLGFwcGx5X3ZhbHVlKTtcbiAgICAgICAgICAgIH1cbiBcbiAgICAgICAgXG4gICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2hvd1Byb3BlcnRpZXMgPSBmdW5jdGlvbihkYXRhc2V0TWFwcGVyVHlwZSkgIHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAvLyBpZiAoJHNjb3BlLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkKVxuICAgICAgICAgICAvLyB7XG4gICAgICAgICAgIC8vICAgICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGUgPSBkYXRhc2V0TWFwcGVyVHlwZTtcbiAgICAgICAgICAgLy8gfWVsc2VcbiAgICAgICAgICAgLy8ge1xuICAgICAgICAgICAvLyAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlIT1kYXRhc2V0TWFwcGVyVHlwZSkgJHNjb3BlLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSA9IGRhdGFzZXRNYXBwZXJUeXBlO1xuICAgICAgICAgICAvLyAgICBlbHNlICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9MDtcbiAgICAgICAgICAgLy8gfSBcbiAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSA9IChkYXRhc2V0TWFwcGVyVHlwZSA9PSAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlKSA/IDA6IGRhdGFzZXRNYXBwZXJUeXBlO1xuICAgICAgICAgICAgXG4gICAgICAgICAgIH07XG4gICAgICAgICAgIFxuICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5vblJlZ2lzdGVyQXBpID0gZnVuY3Rpb24gKGdyaWRBcGkpIHtcbiAgICAgICAgLy9zZXQgZ3JpZEFwaSBvbiBzY29wZVxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRBcGkgPSBncmlkQXBpO1xuICAgICAgICAgaWYgKCRzY29wZS5yZXN0b3JlR3JpZFN0YXRlKSAkc2NvcGUubG9jYWxWYXJzLmdyaWRBcGkuc2F2ZVN0YXRlLnJlc3RvcmUoJHNjb3BlLCRzY29wZS5mZC5HcmlkU3RhdGUpO1xuICAgICAgICAgIGdyaWRBcGkuc2VsZWN0aW9uLm9uLnJvd1NlbGVjdGlvbkNoYW5nZWQoJHNjb3BlLGZ1bmN0aW9uKHJvdyl7XG5cbiAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldFJlY29yZFNlbGVjdGVkPXJvdy5pc1NlbGVjdGVkO1xuICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMuZGF0YXNldFJlY29yZFNlbGVjdGVkKVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWYgKHJvdy5lbnRpdHkuaWQhPSRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWREYXRhc2V0UmVjb3JkSWQpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZERhdGFzZXRSZWNvcmRJZCA9IHJvdy5lbnRpdHkuaWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9ZWxzZVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZERhdGFzZXRSZWNvcmRJZCA9IDA7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1JlbGF0ZWQuY29sdW1uRGVmcz1bXTtcbiAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1JlbGF0ZWQuZGF0YT1bXTtcbiAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93R3JpZD1mYWxzZTtcbiAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wcmV2VGFza1BhY2thZ2UgPXtyZXNvdXJjZURlZklkOiRzY29wZS5mZC5SZWxhdGVkLHJlY29yZHM6Z3JpZEFwaS5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRSb3dzKCl9XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZEl0ZW1zID0gZ3JpZEFwaS5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRSb3dzKCk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIC8vJHJvb3RTY29wZS4kYnJvYWRjYXN0KCdFdmVudHJlc291cmNlTGluaycrJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLCRzY29wZS5zZWxlY3RlZERhdGFzZXRSZWNvcmRJZCk7XG4gICAgICAgICAgICBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnNldERhdGEoe1xuICAgICAgICAgICAgICAgICAgREVJOiBbe25hbWU6J3Jlc291cmNlTGlua0RhdGFzZXRMaXN0Jyx2YWx1ZTpbe25hbWU6J3Jlc291cmNlSWQnLHZhbHVlOiRzY29wZS5mZC5SZWxhdGVkfSx7bmFtZToncmVzb3VyY2VSZWNvcmRJZCcsdmFsdWU6JHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZERhdGFzZXRSZWNvcmRJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICx7bmFtZToncmVzb3VyY2VSZWNvcmRJZHMnLHZhbHVlOmdyaWRBcGkuc2VsZWN0aW9uLmdldFNlbGVjdGVkUm93cygpfSx7bmFtZToncmVzb3VyY2VSZWNvcmRzQWxsJyx2YWx1ZTokc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGF9XX1dLHdpZGdldElkOiAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsdGFza19leGVjdXRlX2lkOiRzY29wZS50YXNrRXhlY3V0ZUlkfSk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgXG4gICAgICAgICAgICAvL2V4dGVybmFsIHBhZ2luYXRpb25cbiAgICAgICAgLypcbiAgICAgICAgICBncmlkQXBpLnBhZ2luYXRpb24ub24ucGFnaW5hdGlvbkNoYW5nZWQoJHNjb3BlLCBmdW5jdGlvbiAobmV3UGFnZSwgcGFnZVNpemUpIHtcbiAgICAgICAgICAgIHBhZ2luYXRpb25PcHRpb25zLnBhZ2VOdW1iZXIgPSBuZXdQYWdlO1xuICAgICAgICAgICAgcGFnaW5hdGlvbk9wdGlvbnMucGFnZVNpemUgPSBwYWdlU2l6ZTtcbiAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VEYXRhUGFnaW5hdGVkKCRzY29wZS5sb2NhbFZhcnMubmV4dFBhZ2UsJHNjb3BlLmxvY2FsVmFycy5wcmV2aW91c1BhZ2UsbmV3UGFnZSxwYWdlU2l6ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAqL1xuICAgICAgICAgICBncmlkQXBpLnNlbGVjdGlvbi5vbi5yb3dTZWxlY3Rpb25DaGFuZ2VkQmF0Y2goJHNjb3BlLGZ1bmN0aW9uKHJvdyl7XG5cbiAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wcmV2VGFza1BhY2thZ2UgPXtyZXNvdXJjZURlZklkOiRzY29wZS5mZC5SZWxhdGVkLHJlY29yZHM6Z3JpZEFwaS5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRSb3dzKCl9XG4gICAgICAgICAgICAgIFxuICAgICAgICAgIH0pO1xuICAgICB9XG4gICAgIFxuICAgICAgICBcbiAgICBsZXQgcHJvY2Vzc19mb3JtX2NoYW5nZSA9IGZ1bmN0aW9uKGRhdGEpXG4gICAgeyBcbiAgICAgICAgJHNjb3BlLmZkLlNlYXJjaCA9ICRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWRdO1xuICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZT09J3RhYmxlJykgJHNjb3BlLmxvY2FsVmFycy5nZXRSZXNvdXJjZUNvbHVtbnModHJ1ZSk7XG4gICAgICAgIGVsc2UgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLlByZXNlbnRhdGlvblR5cGU9PSdkcm9wZG93bicpICRzY29wZS5sb2NhbFZhcnMuZ2V0RGF0YXNldERhdGFMaXN0KCRzY29wZS5mZC5QYXJhbWV0ZXJzLkNsaWVudFNpZGVGaWx0ZXIsdHJ1ZSk7XG4gICAgICAgIGVsc2UgJHNjb3BlLmxvY2FsVmFycy5nZXRSZXNvdXJjZURhdGFQYWdpbmF0ZWQoJHNjb3BlLmxvY2FsVmFycy5uZXh0UGFnZSwkc2NvcGUubG9jYWxWYXJzLnByZXZpb3VzUGFnZSwxLCRzY29wZS5sb2NhbFZhcnMucGFnZVNpemUpOyAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgIFxuICAgIH07XG4gICAgXG4gICAgXG4gICAgLy9zdWJzY3JpYmUgdG8gZXZlbnRzIC0gaW5pdGlhbGx5IG9ubHkgcmVmcmVzaCBkYXRhXG4gICBcbiAgICBsZXQgZGVwZW5kZW50X2ZpZWxkMiA9IFwiRmllbGRcIiskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ7XG4gICAgbGV0IHN1YnNjcmliZWRTdWJqZWN0MiA9IFwidGFza1wiKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udHJhbnNhY3Rpb25faWQ7XG4gICAgbGV0IG9ic2VydmVyMiA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0MixkZXBlbmRlbnRfZmllbGQyLCRzY29wZS5mZC5QYXJhbWV0ZXJzLkV2ZW50TmFtZSxwcm9jZXNzX2Zvcm1fY2hhbmdlKTtcblxuICAgICAgICBcbiAgICAgJHNjb3BlLmxvY2FsVmFycy5Qcm9jZXNzU2VhcmNoRm9ybT1mdW5jdGlvbiAoZm9ybSl7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgaWYgKGZvcm0hPXVuZGVmaW5lZCl7XG4gICAgICAgICAgICBmb3IodmFyIGk9MDtpPGZvcm0ubGVuZ3RoO2krKykge1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBpZiAoJ0VsZW1lbnRUeXBlJyBpbiBmb3JtW2ldKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1baV0uQXV0b1NlYXJjaClcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybVtpXS5FbGVtZW50VHlwZSA9PSAncmVzb3VyY2UnKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9ICRzY29wZS5sb2NhbFZhcnMuY2hpbGRXaWRnZXRzLm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLndpZGdldElkOyB9KS5pbmRleE9mKGZvcm1baV0uUHJlc2VudGF0aW9uSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvczwwKSAkc2NvcGUubG9jYWxWYXJzLmNoaWxkV2lkZ2V0cy5wdXNoKHt3aWRnZXRJZDpmb3JtW2ldLlByZXNlbnRhdGlvbklkLHByb2Nlc3NlZDpmYWxzZX0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvL3N1YnNjcmliZSB0byBjaGFuZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3JtW2ldLlBhcmFtZXRlcnMhPXVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybVtpXS5QYXJhbWV0ZXJzLkRlcGVuZGVudEZpZWxkSWQhPXVuZGVmaW5lZCAmJiBmb3JtW2ldLlBhcmFtZXRlcnMuRGVwZW5kZW50RmllbGRJZCE9bnVsbClcbiAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybVtpXS5QYXJhbWV0ZXJzLkRlcGVuZGVudEZpZWxkSWQhPVwiXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkZXBlbmRlbnRfZmllbGQgPSBcIkZpZWxkXCIrJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN1YnNjcmliZWRTdWJqZWN0ID0gZm9ybVtpXS5FbGVtZW50VHlwZStcIlZhbHVlU3RhdGVOYW1lXCIrZm9ybVtpXS5JdGVtSWQrJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50cmFuc2FjdGlvbl9pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdWJqZWN0ID0gJHNjb3BlLmtzbS5hZGRTdWJqZWN0KHN1YnNjcmliZWRTdWJqZWN0LG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9ic2VydmVyID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3QsZGVwZW5kZW50X2ZpZWxkLFwidmFsdWVDaGFuZ2VkXCIscHJvY2Vzc19mb3JtX2NoYW5nZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCdsYXlvdXQnIGluIGZvcm1baV0pXG4gICAgICAgICAgICAgICAgICAgICAgeyAgIFxuICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLlByb2Nlc3NTZWFyY2hGb3JtKGZvcm1baV0ubGF5b3V0KTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9IFxuICAgICAgICAgICBcbiAgICAgIH07XG4gICAgICBcbiAgICAgICRzY29wZS5sb2NhbFZhcnMuU2VhcmNoRm9ybVByb2Nlc3NlZD1mYWxzZTtcblxuXG4gICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZXRTZWxlY3RlZERhdGFzZXQgPSBmdW5jdGlvbihpZCkgIHtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtPT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW09e307XG4gICAgICAgICAgICAgIHZhciBwb3MgPSAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKGlkKTtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIGlmIChwb3M+PTApe1xuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0uaWQgPSAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRMaXN0W3Bvc10uaWQ7XG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lID0gJHNjb3BlLmxvY2FsVmFycy5kYXRhc2V0TGlzdFtwb3NdLm5hbWU7XG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZERhdGFzZXQgPSAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRMaXN0W3Bvc107XG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCA9ICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZSArJyAoJyskc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLmlkICsnKSdcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtX2M9JHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbTtcbiAgICAgICAgICAgICAgICB9XG5cdFx0XHRcdFx0fTtcbiAgICAgICAgICBcbiAgICAgICAvLyBQT1BVTkkgTElTVFUgREVGSU5JQ0lKQSBPRCBSRVNVUlNBIChSRVNPVVJDRVMgTElTVClcbiAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5nZXREYXRhc2V0cyA9IGZ1bmN0aW9uKCkgIHtcblx0XHRcdFx0XHRcdFxuICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5kYXRhc2V0TGlzdD09dW5kZWZpbmVkKSAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRMaXN0PVtdO1xuICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcbiAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZMaXN0QnlUeXBlKGxhbmcsJ2RhdGFzZXQnKS50aGVuKFxuICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihkYXRhKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5kYXRhc2V0TGlzdCA9IGRhdGEuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlJlbGF0ZWQhPW51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNldFNlbGVjdGVkRGF0YXNldCgkc2NvcGUuZmQuUmVsYXRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgIFx0XHQgXG4gICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxuICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXHR9O1xuICAgICAgICAgICAgXG4gICAgICAkc2NvcGUubG9jYWxWYXJzLkdldERhdGFzZXREYXRhPWZ1bmN0aW9uKGRhdGEpXG5cbiAgICAgIHtcbiAgICAgICAgICAgIGZyb21XaWRnZXQgPSBkYXRhLndpZGdldElkO1xuICAgICAgICAgICAgdmFyIGFsbFByb2Nlc3NlZD10cnVlO1xuICAgICAgICAgICAgdmFyIHBvcyA9ICRzY29wZS5sb2NhbFZhcnMuY2hpbGRXaWRnZXRzLm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLndpZGdldElkOyB9KS5pbmRleE9mKGZyb21XaWRnZXQpO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpPTA7aTwkc2NvcGUubG9jYWxWYXJzLmNoaWxkV2lkZ2V0cy5sZW5ndGg7aSsrKVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMuY2hpbGRXaWRnZXRzW2ldLndpZGdldElkID09IGZyb21XaWRnZXQpICRzY29wZS5sb2NhbFZhcnMuY2hpbGRXaWRnZXRzW2ldLnByb2Nlc3NlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKCEkc2NvcGUubG9jYWxWYXJzLmNoaWxkV2lkZ2V0c1tpXS5wcm9jZXNzZWQpIGFsbFByb2Nlc3NlZCA9ICRzY29wZS5sb2NhbFZhcnMuY2hpbGRXaWRnZXRzW2ldLnByb2Nlc3NlZDtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmKCRzY29wZS5mZC5BdXRvU2VhcmNoICYmIGFsbFByb2Nlc3NlZCAmJiAkc2NvcGUubG9jYWxWYXJzLlNlYXJjaEZvcm1Qcm9jZXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlPSRzY29wZS5mZC5SZWxhdGVkO1xuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMhPW51bGwgJiYgJHNjb3BlLmZkLlBhcmFtZXRlcnMhPXVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlPT0ndGFibGUnKSAkc2NvcGUubG9jYWxWYXJzLmdldFJlc291cmNlQ29sdW1ucyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlPT0nZHJvcGRvd24nKSAkc2NvcGUubG9jYWxWYXJzLmdldERhdGFzZXREYXRhTGlzdCgkc2NvcGUuZmQuUGFyYW1ldGVycy5DbGllbnRTaWRlRmlsdGVyLGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlICRzY29wZS5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VEYXRhUGFnaW5hdGVkKCRzY29wZS5sb2NhbFZhcnMubmV4dFBhZ2UsJHNjb3BlLmxvY2FsVmFycy5wcmV2aW91c1BhZ2UsMSwkc2NvcGUubG9jYWxWYXJzLnBhZ2VTaXplKTsgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB9XG4gICAgICB9O1xuICAgIFxuICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMhPXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycy5jaGlsZFdpZGdldHMgPSBbXTtcbiAgICAgIGVsc2UgJHNjb3BlLmxvY2FsVmFycyA9IHtjaGlsZFdpZGdldHMgOiBbXX07XG4gICAgICB2YXIgZnJvbVdpZGdldD0wO1xuXG4gICAgICBsZXQgc2VhcmNoX2Zvcm1fcmVhZHkgPSBmdW5jdGlvbihkYXRhKVxuICAgICAgICB7XG4gICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLkdldERhdGFzZXREYXRhKGRhdGEpOyBcbiAgICAgICAgfTtcbiAgICAgICAgXG4gICAgICAgIGxldCBhY3Rpb25fc2VhcmNoX2Zvcm1fcmVhZHkgPSAkc2NvcGUua3NtLmFkZEFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcIlNlYXJjaEZvcm1SZWFkeVwiKyRzY29wZS50YXNrRXhlY3V0ZUlkKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udHJhbnNhY3Rpb25faWQsc2VhcmNoX2Zvcm1fcmVhZHkpO1xuICAgICAgIFxuICAgICAgIFxuICAgXG4gICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblx0Ly8gICAgICAgICAgIEdFVCBEQVRBU0VUIFJFTEFURUQgUkVDT1JEU1xuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5nZXREYXRhc2V0UmVsYXRlZFJlY29yZHMgPSBmdW5jdGlvbiAocmVsYXRlZERhdGFzZXRJZCxyZWNvcmRJZCxtb2RlbElkKSB7XG4gIFxuICBcbiAgICAgICAgIHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG4gICAgICAgIFxuICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEYXRhUmVsYXRlZCgkc2NvcGUuZmQuUmVsYXRlZCxyZWNvcmRJZCxyZWxhdGVkRGF0YXNldElkLDAsbW9kZWxJZCxsYW5nKS50aGVuKFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGRhdGEpIHsgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1JlbGF0ZWQuZGF0YSA9IGRhdGEuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVsYXRlZC5jb2x1bW5EZWZzID0gZGF0YS5jb2x1bW5zRGVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2hvd0dyaWQ9dHJ1ZTtcbiAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIFxuICAgICAgICBcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblx0Ly8gICAgICAgICAgIEdFVCBEQVRBU0VUIFNJTkdMRSBSRUNPUkRcblx0Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXG4gICAgICAkc2NvcGUubG9jYWxWYXJzLmdldERhdGFzZXRTaW5nbGVSZWNvcmQgPSBmdW5jdGlvbiAocmVsYXRlZERhdGFzZXRJZCxyZWNvcmRJZCkge1xuICBcbiAgXG4gICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xuICAgICAgICBcbiAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGF0YURpcmVjdEZpbHRlcihyZWxhdGVkRGF0YXNldElkLDAsbGFuZyx7aWQ6IHJlY29yZElkfSkudGhlbihcbiAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihkYXRhKSB7ICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVsYXRlZC5kYXRhID0gZGF0YS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZWxhdGVkLmNvbHVtbkRlZnMgPSBkYXRhLmNvbHVtbnNEZWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgXG4gICAgICAgICRzY29wZS4kb24oJ1NlYXJjaEZvcm1SZWFkeScrJHNjb3BlLnRhc2tFeGVjdXRlSWQrJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLGZ1bmN0aW9uKGV2ZW50LCBkYXRhMSl7XG4gICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLkdldERhdGFzZXREYXRhKGRhdGExKTsgXG4gICAgICAgICAgICBcbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0Rm9ybVJlc291cmNlID0gZnVuY3Rpb24oKXsgICBcbiAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG4gICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PW51bGwpIHtcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQgPSAwO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZUZvcm1FeHRlbmRlZFdpdGhEYXRhKCRzY29wZS5mZC5SZWxhdGVkLCRzY29wZS50YXNrSW5pdGlhdGVJZCwkc2NvcGUudGFza0V4ZWN1dGVJZCwkc2NvcGUuZmQuUG9wdWxhdGVUeXBlLCRzY29wZS5mZC5QYXJlbnRFbGVtZW50SWQsJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLCRzY29wZS5wcmV2VGFza0V4ZUlkLCRzY29wZS5sb2NhbFZhcnMuZm9ybVR5cGUsJHNjb3BlLmxvY2FsVmFycy53aWRnZXRUeXBlLCRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZCxcImZcIixsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbj0gZGF0YS5kYXRhLnJlc291cmNlRGVmaW5pdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtX2MgPSB7J25hbWUnOiRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VXaWRnZXREZWZpbml0aW9uLm5hbWUsJ2lkJzokc2NvcGUuZmQuUmVsYXRlZCwncmVsYXRlZElkJzokc2NvcGUuZmQuUmVsYXRlZCwncHJlc2VudGF0aW9uSWQnOiRzY29wZS5mZC5QcmVzZW50YXRpb25JZCwnc3JjX3R5cGVfaWQnOiRzY29wZS5mZC5Qb3B1bGF0ZVR5cGUsJ3NyY190eXBlX3RleHQnOiRzY29wZS5sb2NhbFZhcnMuc3JjX3R5cGVfdGV4dFskc2NvcGUuZmQuUG9wdWxhdGVUeXBlXSwncGFyZW50RWxlbWVudElkJzokc2NvcGUuZmQuUGFyZW50RWxlbWVudElkfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmZJdGVtVmFsdWU9ZGF0YS5kYXRhLndpZGdldHM7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VhcmNoRm9ybURvd25sb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZXRGaWVsZCgkc2NvcGUuZmQuZkl0ZW1WYWx1ZSwnUmVxdWlyZWQnLGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZm9ybUxvYWRlZD10cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3ByZXBhcmUgc2VhcmNoIGZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuUHJvY2Vzc1NlYXJjaEZvcm0oJHNjb3BlLmZkLmZJdGVtVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5TZWFyY2hGb3JtUHJvY2Vzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLmNoaWxkV2lkZ2V0cy5sZW5ndGg+MClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5yZWdpc3RlclNlYXJjaCh7d2lkZ2V0SWQ6JHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLHRhc2tFeGVjdXRlSWQ6JHNjb3BlLnRhc2tFeGVjdXRlSWQscHJldlRhc2tFeGVJZDokc2NvcGUucHJldlRhc2tFeGVJZCxjaGlsZFdpZGdldHM6JHNjb3BlLmxvY2FsVmFycy5jaGlsZFdpZGdldHN9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcIlNlYXJjaEZvcm1SZWFkeVwiKyRzY29wZS50YXNrRXhlY3V0ZUlkKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udHJhbnNhY3Rpb25faWQsIHt3aWRnZXRJZDokc2NvcGUuZmQuUHJlc2VudGF0aW9uSWR9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0ID0gIGRhdGEuZGF0YS53aWRnZXRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YSA9PSB1bmRlZmluZWQpICRzY29wZS5mb3JtRGF0YT17fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWRdID0gIGRhdGEuZGF0YS5mb3JtX2RhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuU2VhcmNoID0gJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5QcmVzZW50YXRpb25JZF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlNlYXJjaD09dW5kZWZpbmVkKSAkc2NvcGUuZmQuU2VhcmNoPXt9O1xuICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgIH07Ly9nZXRGb3JtUmVzb3VyY2VfRU5EXG4gICAgICBcbiAgICAkc2NvcGUubG9jYWxWYXJzLmV4ZWN1dGVEYXRhc2V0TGlzdCA9IGZ1bmN0aW9uKCl7ICAgXG4gICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcbiAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PW51bGwpIHtcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZT09dW5kZWZpbmVkKSAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UgPSAkc2NvcGUuZmQuUmVsYXRlZDtcbiAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLnBhZ2VTaXplPT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnMucGFnZVNpemUgPSBwYWdpbmF0aW9uT3B0aW9ucy5wYWdlU2l6ZTtcbiAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5rdFRhc2tEYXRhc2V0TGlzdCgkc2NvcGUuZmQuUmVsYXRlZCwkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsJHNjb3BlLmxvY2FsVmFycy50YXNrSWQsJHNjb3BlLmxvY2FsVmFycy5mb3JtVHlwZSxsYW5nKS50aGVuKFxuICAgICAgICBcbiAgICAgICAgICAgICAgICBmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZVdpZGdldERlZmluaXRpb249IGRhdGEuZGF0YS5yZXNvdXJjZURlZmluaXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuY29sdW1uRGVmcyA9IGRhdGEuZGF0YS5jb2x1bW5zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmZJdGVtVmFsdWU9ZGF0YS5kYXRhLndpZGdldHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhLndpZGdldHNDYXJkIT1udWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC53SXRlbVZhbHVlPWRhdGEuZGF0YS53aWRnZXRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZGFzaGJvYXJkQ2FyZC53aWRnZXRzLmxheW91dCA9ICBkYXRhLmRhdGEud2lkZ2V0c0NhcmQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNlYXJjaEZvcm1Eb3dubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2V0RmllbGQoJHNjb3BlLmZkLmZJdGVtVmFsdWUsJ1JlcXVpcmVkJyxmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmZvcm1Mb2FkZWQ9dHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCA9ICBkYXRhLmRhdGEud2lkZ2V0cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZm9ybURhdGEgPT0gdW5kZWZpbmVkKSAkc2NvcGUuZm9ybURhdGE9e307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXSA9ICBkYXRhLmRhdGEuZm9ybURhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuU2VhcmNoID0gJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5QcmVzZW50YXRpb25JZF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlNlYXJjaD09dW5kZWZpbmVkKSAkc2NvcGUuZmQuU2VhcmNoPXt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3NldHVwIGRhdGEgZ3JpZCBvciBjYXJkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEgPSBkYXRhLmRhdGEuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlPT0nY2FyZCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEgPSAkc2NvcGUuVHJhbnNmb3JtRGF0YUZvckNhcmQoZGF0YS5kYXRhLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXN0b3JlR3JpZFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuaW5pdGlhbExvYWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLm5leHRQYWdlID0gZGF0YS5kYXRhLmRhdGEubmV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucHJldmlvdXNQYWdlID0gZGF0YS5kYXRhLmRhdGEucHJldmlvdXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnRvdGFsQ291bnQ9ZGF0YS5kYXRhLmRhdGEuY291bnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmN1cnJlbnRQYWdlPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy50b3RhbENvdW50PjAgJiYgJHNjb3BlLmxvY2FsVmFycy5jdXJyZW50UGFnZT09MCkgJHNjb3BlLmxvY2FsVmFycy5jdXJyZW50UGFnZT0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5udW1QYWdlcyA9IE1hdGguY2VpbCgkc2NvcGUubG9jYWxWYXJzLnRvdGFsQ291bnQvJHNjb3BlLmxvY2FsVmFycy5wYWdlU2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEudG90YWxJdGVtcz0kc2NvcGUubG9jYWxWYXJzLnRvdGFsQ291bnQ7XG4gICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgfTsvL2dldEZvcm1SZXNvdXJjZV9FTkRcblxuICAgICAgXG4gICAgXG4gICRzY29wZS5sb2NhbFZhcnMuZ2V0Rm9ybVJlc291cmNlT3JpZ2luYWwgPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QcmVzZW50YXRpb25JZD09bnVsbClcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCA9IDA7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VGb3JtKCRzY29wZS5mZC5SZWxhdGVkLFwiaVwiLGxhbmcpLnRoZW4oXG4gICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VXaWRnZXREZWZpbml0aW9uPSBkYXRhLmRhdGEucmVzb3VyY2VEZWZpbml0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dD1kYXRhLmRhdGEud2lkZ2V0cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW1fYyA9IHsnbmFtZSc6JHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZVdpZGdldERlZmluaXRpb24ubmFtZSwnaWQnOiRzY29wZS5mZC5SZWxhdGVkLCdyZWxhdGVkSWQnOiRzY29wZS5mZC5SZWxhdGVkLCAncHJlc2VudGF0aW9uSWQnOiRzY29wZS5mZC5QcmVzZW50YXRpb25JZCAgLCdzcmNfdHlwZV9pZCc6JHNjb3BlLmZkLlBvcHVsYXRlVHlwZSwnc3JjX3R5cGVfdGV4dCc6JHNjb3BlLmxvY2FsVmFycy5zcmNfdHlwZV90ZXh0WyRzY29wZS5mZC5Qb3B1bGF0ZVR5cGVdLCdwYXJlbnRFbGVtZW50SWQnOiRzY29wZS5mZC5QYXJlbnRFbGVtZW50SWR9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmZJdGVtVmFsdWU9ZGF0YS5kYXRhLndpZGdldHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL01JR09SIC0gYml0bm8gLSBET0JJTyBSRVNPVVJDRVJFQ09SRC1JRCBaQSBCUk9BRENBU1QgIC0gQUREX1JFU09VUkNFIFdJREdFVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnNldERhdGEoe3dpZGdldElkOiRzY29wZS5mZC5QcmVzZW50YXRpb25JZCwgREVJOiBbeyduYW1lJzoncmVzb3VyY2VMaW5rJywndmFsdWUnOlt7bmFtZToncmVzb3VyY2VJZCcsdmFsdWU6JHNjb3BlLmZkLlJlbGF0ZWR9LHtuYW1lOidyZXNvdXJjZVJlY29yZElkJyx2YWx1ZTokc2NvcGUubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWR9XX1dfSk7XG5cdFx0XHRcdFx0XHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VhcmNoRm9ybURvd25sb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZm9ybUxvYWRlZD10cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YSA9PSB1bmRlZmluZWQpICRzY29wZS5mb3JtRGF0YT17fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWRdID0gW3t9XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5TZWFyY2ggPSAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgfTtcbiAgIFxuICAgICAkc2NvcGUubG9jYWxWYXJzLmdldERhdGFzZXRDYXJkTGF5b3V0T3JpZ2luYWwgPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QcmVzZW50YXRpb25JZD09bnVsbClcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCA9IDA7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VGb3JtKCRzY29wZS5mZC5SZWxhdGVkLFwiaVwiLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZURlZmluaXRpb25DYXJkPSBkYXRhLmRhdGEucmVzb3VyY2VEZWZpbml0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5kYXNoYm9hcmRDYXJkLndpZGdldHMubGF5b3V0PWRhdGEuZGF0YS53aWRnZXRzO1xuICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQud0l0ZW1WYWx1ZT1kYXRhLmRhdGEud2lkZ2V0cztcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5jYXJkTGF5b3V0TG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZm9ybURhdGFDYXJkID09IHVuZGVmaW5lZCkgJHNjb3BlLmZvcm1EYXRhQ2FyZD17fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGVycm9yKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgfTtcbiAgICAgIFxuICAgICAgXG4gICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0Q2FyZExheW91dCA9IGZ1bmN0aW9uKCl7ICAgXG4gICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xuICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT1udWxsKSB7XG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkID0gMDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZUZvcm1FeHRlbmRlZFdpdGhEYXRhKCRzY29wZS5mZC5SZWxhdGVkLCRzY29wZS50YXNrSW5pdGlhdGVJZCwkc2NvcGUudGFza0V4ZWN1dGVJZCwkc2NvcGUuZmQuUG9wdWxhdGVUeXBlLCRzY29wZS5mZC5QYXJlbnRFbGVtZW50SWQsJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLCRzY29wZS5wcmV2VGFza0V4ZUlkLCRzY29wZS5sb2NhbFZhcnMuZm9ybVR5cGUsJHNjb3BlLmxvY2FsVmFycy53aWRnZXRUeXBlLCRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZCxcIndcIixsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlRGVmaW5pdGlvbkNhcmQ9IGRhdGEuZGF0YS5yZXNvdXJjZURlZmluaXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQud0l0ZW1WYWx1ZT1kYXRhLmRhdGEud2lkZ2V0cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZGFzaGJvYXJkQ2FyZC53aWRnZXRzLmxheW91dCA9ICBkYXRhLmRhdGEud2lkZ2V0cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1EYXRhQ2FyZCA9ICBkYXRhLmRhdGEuZm9ybV9kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YUNhcmQgPT0gdW5kZWZpbmVkKSAkc2NvcGUuZm9ybURhdGFDYXJkPXt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuY2FyZExheW91dExvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgIH07Ly9nZXRDYXJkbGF5b3V0X0VORFxuXG4gICAgICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0Q2FyZEl0ZW0gPSBmdW5jdGlvbihpbmRleCl7XG4gICAgICAgIGxldCB2YWx1ZTtcbiAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRDYXJkSW5kZXghPWluZGV4KVxuICAgICAgICB7XG4gICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkQ2FyZEluZGV4PWluZGV4O1xuICAgICAgICAgICAgdmFsdWU9JHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhWyRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRDYXJkSW5kZXhdWzBdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZENhcmRJbmRleD1udWxsO1xuICAgICAgICAgICAgdmFsdWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIC8vc2VuZCBkYXRhIHRvIHBhY2thZ2VcbiAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2Uuc2V0RGF0YSh7XG4gICAgICAgICAgICAgICAgICBERUk6IFt7bmFtZToncmVzb3VyY2VMaW5rRGF0YXNldExpc3QnLHZhbHVlOlt7bmFtZToncmVzb3VyY2VJZCcsdmFsdWU6JHNjb3BlLmZkLlJlbGF0ZWR9LHtuYW1lOidyZXNvdXJjZVJlY29yZElkJyx2YWx1ZTokc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkRGF0YXNldFJlY29yZElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgLHtuYW1lOidyZXNvdXJjZVJlY29yZElkcycsdmFsdWU6dmFsdWV9LHtuYW1lOidyZXNvdXJjZVJlY29yZHNBbGwnLHZhbHVlOiRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YX1dfV0sd2lkZ2V0SWQ6ICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCx0YXNrX2V4ZWN1dGVfaWQ6JHNjb3BlLnRhc2tFeGVjdXRlSWR9KTtcbiAgICAgICAgICAgIFxuICAgICB9O1xuICAgICAgXG4gICAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRSZWNvcmRTZWxlY3RlZCA9IGZhbHNlO1xuICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZERhdGFzZXRSZWNvcmRJZCA9IDA7XG4gXG4gICAgJHNjb3BlLmxvY2FsVmFycy5yZXN0b3JlR3JpZFN0YXRlPSBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKCRzY29wZS5mZC5HcmlkU3RhdGUhPW51bGwpXG4gICAgICAgIHtcbiAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMuZ3JpZEFwaSE9dW5kZWZpbmVkKVxuICAgICAgICAgICB7XG4gICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRBcGkuc2F2ZVN0YXRlLnJlc3RvcmUoJHNjb3BlLCRzY29wZS5mZC5HcmlkU3RhdGUpO1xuICAgICAgICAgICB9XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAge1xuICAgICAgICAgICAgJHNjb3BlLnJlc3RvcmVHcmlkU3RhdGU9dHJ1ZTtcbiAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VEYXRhID0gZnVuY3Rpb24gKCkge1xuXG4gICAgICAgIHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5wYWdlU2l6ZT09dW5kZWZpbmVkKSAkc2NvcGUubG9jYWxWYXJzLnBhZ2VTaXplID0gcGFnaW5hdGlvbk9wdGlvbnMucGFnZVNpemU7XG4gICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGF0YSgkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UsJHNjb3BlLnRhc2tJZCwkc2NvcGUubG9jYWxWYXJzLmZvcm1UeXBlLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YSA9IGRhdGEuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmNvbHVtbkRlZnMgPSBkYXRhLmNvbHVtbnNEZWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXN0b3JlR3JpZFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmluaXRpYWxMb2FkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgLy8gICAgICAgICAgIEdFVCBGT1JNIEZJRUxEU1xuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxuICAgICAgICAgICAgXG4gICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5nZXRGb3JtRmllbGRzID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xuICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRGb3JtRmllbGRzKCRzY29wZS5mZC5SZWxhdGVkLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuUHJlc2VudGF0aW9uRWxlbWVudHM9IGRhdGEuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgfTtcbiAgICAgICAgICBcbiAgICAgICAgICBcbiAgICAgICAgICAkc2NvcGUuJHdhdGNoKCdpdGVtVmFsdWUudmFsJyxmdW5jdGlvbihuZXdWYWx1ZSxvbGRWYWx1ZSl7XG4gICAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWUhPW9sZFZhbHVlKVxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIC8vc2VuZCBkYXRhIHRvIHBhY2thZ2VcbiAgICAgICAgICAgICAgICAgICBsZXQgbmV3VmFsdWVTaW5nbGUsbmV3VmFsdWVNdWx0aXBsZTtcbiAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLk11bHRpbGluZSlcbiAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlTXVsdGlwbGUgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTaW5nbGU9XCJcIjtcbiAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVNdWx0aXBsZSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZVNpbmdsZT1uZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKHZhbHVlU3RhdGVOYW1lLFwidmFsdWVDaGFuZ2VkXCIsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5zZXREYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgREVJOiBbe25hbWU6J3Jlc291cmNlTGlua0RhdGFzZXRMaXN0Jyx2YWx1ZTpbe25hbWU6J3Jlc291cmNlSWQnLHZhbHVlOiRzY29wZS5mZC5SZWxhdGVkfSx7bmFtZToncmVzb3VyY2VSZWNvcmRJZCcsdmFsdWU6bmV3VmFsdWVTaW5nbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAse25hbWU6J3Jlc291cmNlUmVjb3JkSWRzJyx2YWx1ZTpuZXdWYWx1ZU11bHRpcGxlfSx7bmFtZToncmVzb3VyY2VSZWNvcmRzQWxsJyx2YWx1ZTokc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRJdGVtc31dfV0sd2lkZ2V0SWQ6ICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCx0YXNrX2V4ZWN1dGVfaWQ6JHNjb3BlLnRhc2tFeGVjdXRlSWR9KTtcbiAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgICAgXG4gICAgICAgXG4gICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICAvLyAgICAgICAgICAgR0VUIERBVEFTRVQgREFUQSBGT1IgRFJPUERPV05cbiAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAgdmFyIHJlZnJlc2hfbGlzdF9mcm9tX2NhbGxiYWNrPWZ1bmN0aW9uKGRhdGEpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5nZXREYXRhc2V0RGF0YUxpc3QodHJ1ZSk7ICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgJHNjb3BlLmZpbHRlck9uQ2xpZW50ID0gZnVuY3Rpb24oaXRlbXMpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCB0ZW1wPVtdO1xuICAgICAgICAgICAgbGV0IHNlYXJjaDtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KCRzY29wZS5mZC5TZWFyY2gpICYmICRzY29wZS5mZC5TZWFyY2gubGVuZ3RoPjApIHNlYXJjaCA9ICRzY29wZS5mZC5TZWFyY2hbMF07XG4gICAgICAgICAgICBlbHNlIHNlYXJjaCA9ICRzY29wZS5mZC5TZWFyY2g7XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7aTxpdGVtcy5sZW5ndGg7aSsrKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBzZWFyY2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlYXJjaFtrZXldIT11bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkgaW4gaXRlbXNbaV0pXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zW2ldW2tleV09PXNlYXJjaFtrZXldLmlkIHx8IHNlYXJjaFtrZXldPT1udWxsIHx8IHNlYXJjaFtrZXldPT11bmRlZmluZWQgfHwgaXRlbXNbaV1ba2V5XT09dW5kZWZpbmVkKSAgdGVtcC5wdXNoKGl0ZW1zW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmIChrZXkgaW4gaXRlbXNbaV0pXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zW2ldW2tleV09PXNlYXJjaFtrZXldIHx8IHNlYXJjaFtrZXldPT1udWxsIHx8IHNlYXJjaFtrZXldPT11bmRlZmluZWQgfHwgaXRlbXNbaV1ba2V5XT09dW5kZWZpbmVkKSAgdGVtcC5wdXNoKGl0ZW1zW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIHRlbXAucHVzaChpdGVtc1tpXSk7XG4gICAgICAgICAgICAgICAgICAgIH1lbHNlIHRlbXAucHVzaChpdGVtc1tpXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRlbXA7XG4gICAgICAgICAgICBcbiAgICAgICAgfVxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdldERhdGFzZXREYXRhTGlzdCA9IGZ1bmN0aW9uKGZyb21DYWNoZSxjbGllbnRTaWRlRmlsdGVyKVxuICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmcm9tQ2FjaGU9PXVuZGVmaW5lZCkgZnJvbUNhY2hlPXRydWU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjbGllbnRTaWRlRmlsdGVyPT11bmRlZmluZWQpIGNsaWVudFNpZGVGaWx0ZXI9ZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldEl0ZW1zID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEYXRhTGlzdEFsbCgkc2NvcGUuZmQuUmVsYXRlZCwkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsbGFuZyxmcm9tQ2FjaGUscmVmcmVzaF9saXN0X2Zyb21fY2FsbGJhY2spLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNsaWVudFNpZGVGaWx0ZXIpICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldEl0ZW1zID0gJHNjb3BlLmZpbHRlck9uQ2xpZW50KGRhdGEuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldEl0ZW1zID0gZGF0YS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLml0ZW1WYWx1ZS52YWwhPXVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9ICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldEl0ZW1zLm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKCRzY29wZS5pdGVtVmFsdWUudmFsLmlkKTtcbiAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zPDApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLml0ZW1WYWx1ZS52YWwgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5pdGVtVmFsdWUudmFsID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICBcbiAgICAgICAgfTtcbiAgICAgICAgXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMuR2V0RGF0YXNldERhdGFDbGljayA9IGZ1bmN0aW9uKClcbiAgICAgICAge1xuICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLlByZXNlbnRhdGlvblR5cGU9PSdkcm9wZG93bicpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdldERhdGFzZXREYXRhTGlzdCgpOyBcbiAgICAgICAgICAgIH1lbHNlXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlPSRzY29wZS5mZC5SZWxhdGVkO1xuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VDb2x1bW5zKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9OyAgICBcbiAgICAgICAgICAgXG5cdCRzY29wZS5UcmFuc2Zvcm1EYXRhRm9yQ2FyZCA9IGZ1bmN0aW9uKGRhdGEpXG4gICAge1xuICAgICAgICBsZXQgbmV3RGF0YSA9IFtdO1xuICAgICAgICBsZXQgbmV3RWxlbWVudCA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7aTxkYXRhLmxlbmd0aDtpKyspXG4gICAgICAgIHtcbiAgICAgICAgXG4gICAgICAgIG5ld0VsZW1lbnQucHVzaChkYXRhW2ldKTtcbiAgICAgICAgbmV3RGF0YS5wdXNoKG5ld0VsZW1lbnQpO1xuICAgICAgICBcbiAgICAgICAgbmV3RWxlbWVudCA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdEYXRhOyBcbiAgICB9O1xuICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICAvLyAgICAgICAgICAgR0VUIFJFU09VUkNFIERBVEEgUEFHSU5BVEVEXG4gICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcbiAgICAkc2NvcGUubG9jYWxWYXJzLmdldFJlc291cmNlRGF0YVBhZ2luYXRlZCA9IGZ1bmN0aW9uICh1cmxOZXh0LHVybFByZXYsbmV3UGFnZSxwYWdlU2l6ZSkge1xuICAgICAgICBcbiAgICAgICAgXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRlZCA9IGZhbHNlOyAgICAgICAgXG4gICAgICAgIGlmIChNYXRoLmNlaWwoJHNjb3BlLmxvY2FsVmFycy50b3RhbENvdW50L3BhZ2VTaXplKTxuZXdQYWdlKVxuICAgICAgICB7XG4gICAgICAgICAgbmV3UGFnZSA9IE1hdGguY2VpbCgkc2NvcGUubG9jYWxWYXJzLnRvdGFsQ291bnQvcGFnZVNpemUpO1xuICAgICAgICB9XG4gICAgICAgICBcbiAgICAgICAgIHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG4gICAgICAgICAgXG4gICAgICAgICBpZiAocGFnZVNpemU9PXVuZGVmaW5lZClcbiAgICAgICAgIFxuICAgICAgICAge1xuICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucGFnZVNpemUgPSBwYWdpbmF0aW9uT3B0aW9ucy5wYWdlU2l6ZTtcbiAgICAgICAgICBwYWdlU2l6ZT0gJHNjb3BlLmxvY2FsVmFycy5wYWdlU2l6ZTtcbiAgICAgICAgIH1cbiAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRJdGVtcy5sZW5ndGg9MDtcbiAgICAgICAgIGlmICgkc2NvcGUuZmQuUG9wdWxhdGVNZXRob2Q9PSdNJylcbiAgICAgICAgIHtcbiAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgXG4gICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEYXRhUGFnaW5hdGVkRmlsdGVyKCRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZSx1cmxOZXh0LHVybFByZXYsbmV3UGFnZSxwYWdlU2l6ZSxsYW5nLCRzY29wZS5mZC5TZWFyY2gsICRzY29wZS5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0KS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEgPSBkYXRhLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZT09J2NhcmQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhID0gJHNjb3BlLlRyYW5zZm9ybURhdGFGb3JDYXJkKGRhdGEuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc3RvcmVHcmlkU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5pbml0aWFsTG9hZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMubmV4dFBhZ2UgPSBkYXRhLmRhdGEubmV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucHJldmlvdXNQYWdlID0gZGF0YS5kYXRhLnByZXZpb3VzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy50b3RhbENvdW50PWRhdGEuZGF0YS5jb3VudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuY3VycmVudFBhZ2U9bmV3UGFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLnRvdGFsQ291bnQ+MCAmJiAkc2NvcGUubG9jYWxWYXJzLmN1cnJlbnRQYWdlPT0wKSAkc2NvcGUubG9jYWxWYXJzLmN1cnJlbnRQYWdlPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLm51bVBhZ2VzID0gTWF0aC5jZWlsKCRzY29wZS5sb2NhbFZhcnMudG90YWxDb3VudC9wYWdlU2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnBhZ2VTaXplID0gcGFnZVNpemU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLnRvdGFsSXRlbXM9JHNjb3BlLmxvY2FsVmFycy50b3RhbENvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnNldERhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVJOiBbe25hbWU6J3Jlc291cmNlTGlua0RhdGFzZXRMaXN0Jyx2YWx1ZTpbe25hbWU6J3Jlc291cmNlSWQnLHZhbHVlOiRzY29wZS5mZC5SZWxhdGVkfSx7bmFtZToncmVzb3VyY2VSZWNvcmRJZCcsdmFsdWU6JHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZERhdGFzZXRSZWNvcmRJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICx7bmFtZToncmVzb3VyY2VSZWNvcmRJZHMnLHZhbHVlOiBudWxsfSx7bmFtZToncmVzb3VyY2VSZWNvcmRzQWxsJyx2YWx1ZTokc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGF9XX1dLHdpZGdldElkOiAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsdGFza19leGVjdXRlX2lkOiRzY29wZS50YXNrRXhlY3V0ZUlkfSk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyb290U2NvcGUuJGJyb2FkY2FzdChcIlN0YXJ0VGFza1wiKyRzY29wZS5mZC5QcmVzZW50YXRpb25JZCtcIkNvbXBsZXRlZFwiLCRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgfVxuICAgICAgICAgZWxzZSBpZiAoJHNjb3BlLmZkLlBvcHVsYXRlTWV0aG9kPT0nQScpXG4gICAgICAgICB7XG4gICAgICAgICAgdmFyIHRhc2tfaW5zdGFuY2U9MDsgIFxuICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLmZvcm1UeXBlPT0naScpIHRhc2tfaW5zdGFuY2UgPSAkc2NvcGUudGFza0luaXRpYXRlSWQ7XG4gICAgICAgICAgZWxzZSB0YXNrX2luc3RhbmNlID0gJHNjb3BlLnRhc2tFeGVjdXRlSWQ7XG4gICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGF0YVBhZ2luYXRlZEF1dG8oJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlLHVybE5leHQsdXJsUHJldixuZXdQYWdlLHBhZ2VTaXplLGxhbmcsJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLHRhc2tfaW5zdGFuY2UsJHNjb3BlLmxvY2FsVmFycy5mb3JtVHlwZSkudGhlbihmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhID0gZGF0YS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXN0b3JlR3JpZFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuaW5pdGlhbExvYWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLm5leHRQYWdlID0gZGF0YS5kYXRhLm5leHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnByZXZpb3VzUGFnZSA9IGRhdGEuZGF0YS5wcmV2aW91cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMudG90YWxDb3VudD1kYXRhLmRhdGEuY291bnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmN1cnJlbnRQYWdlPW5ld1BhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLm51bVBhZ2VzID0gTWF0aC5jZWlsKCRzY29wZS5sb2NhbFZhcnMudG90YWxDb3VudC9wYWdlU2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnBhZ2VTaXplID0gcGFnZVNpemU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLnRvdGFsSXRlbXM9JHNjb3BlLmxvY2FsVmFycy50b3RhbENvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnNldERhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVJOiBbe25hbWU6J3Jlc291cmNlTGluaycsdmFsdWU6W3tuYW1lOidyZXNvdXJjZUlkJyx2YWx1ZTokc2NvcGUuZmQuUmVsYXRlZH0se25hbWU6J3Jlc291cmNlUmVjb3JkSWQnLHZhbHVlOiRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWREYXRhc2V0UmVjb3JkSWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAse25hbWU6J3Jlc291cmNlUmVjb3JkSWRzJyx2YWx1ZTogbnVsbH0se25hbWU6J3Jlc291cmNlUmVjb3Jkc0FsbCcsdmFsdWU6JHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhfV19XSx3aWRnZXRJZDogJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLHRhc2tfZXhlY3V0ZV9pZDokc2NvcGUudGFza0V4ZWN1dGVJZH0pO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm9vdFNjb3BlLiRicm9hZGNhc3QoXCJTdGFydFRhc2tcIiskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQrXCJDb21wbGV0ZWRcIiwkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICBcbiAgICAgICAgIH1cbiAgICAgICAgfTtcblxuXG4gICAgJHNjb3BlLmxvY2FsVmFycy5wYWdlQ2hhbmdlZCA9IGZ1bmN0aW9uKCl7IFxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdldFJlc291cmNlRGF0YVBhZ2luYXRlZCgkc2NvcGUubG9jYWxWYXJzLm5leHRQYWdlLCRzY29wZS5sb2NhbFZhcnMucHJldmlvdXNQYWdlLCRzY29wZS5sb2NhbFZhcnMuY3VycmVudFBhZ2UsJHNjb3BlLmxvY2FsVmFycy5wYWdlU2l6ZSk7XG4gICAgICAgICB9O1xuICAgICAgICAgXG4gICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblx0Ly8gICAgICAgICAgIEdFVCBSRVNPVVJDRSBDT0xVTU5TXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxuICAkc2NvcGUubG9jYWxWYXJzLmdldFJlc291cmNlQ29sdW1ucyA9IGZ1bmN0aW9uIChnZXREYXRhKSB7XG4gICAgIHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG4gICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2U9PXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlID0gJHNjb3BlLmZkLlJlbGF0ZWQ7XG4gICAgIFxuICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlIT11bmRlZmluZWQgJiYgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlIT1udWxsKVxuICAgICB7XG4gICAgICAgICAgIHRhc2tJZCA9ICRzY29wZS50YXNrSWQ7XG4gICAgICAgICAgIGlmICgkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PXVuZGVmaW5lZCB8fCAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PW51bGwgfHwgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT0wKVxuICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHZhciB0YXNrSWQgPSAwOyAgICAgICAgXG4gICAgICAgICAgIH1cbiAgICAgICRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcgPSB0cnVlO1xuXG4gICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlQ29sdW1ucygkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UsdGFza0lkLCRzY29wZS5sb2NhbFZhcnMuZm9ybVR5cGUsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuY29sdW1uRGVmcyA9IGRhdGEuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5jdXJyZW50UGFnZT09dW5kZWZpbmVkKSAkc2NvcGUubG9jYWxWYXJzLmN1cnJlbnRQYWdlPTE7XG4gICAgICAgICAgICAgICAgaWYgKGdldERhdGEgJiYgISRzY29wZS5mb3JtRGVmaW5pdGlvbikgJHNjb3BlLmxvY2FsVmFycy5nZXRSZXNvdXJjZURhdGFQYWdpbmF0ZWQoJHNjb3BlLmxvY2FsVmFycy5uZXh0UGFnZSwkc2NvcGUubG9jYWxWYXJzLnByZXZpb3VzUGFnZSwxLCRzY29wZS5sb2NhbFZhcnMucGFnZVNpemUpOyAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXN0b3JlR3JpZFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmluaXRpYWxMb2FkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgXG4gICAgIH1cbiAgfTtcbiAgICAgXG4gICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VEYXRhRmlsdGVyZWQgPSBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICRzY29wZS5maWx0ZXIgPSB7fTtcbiAgICAgICAgICAgIHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG5cbiAgICAgICAgIFxuICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2U9PW51bGwpIHtcbiAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZSA9ICRzY29wZS5mZC5SZWxhdGVkO1xuICAgICAgICAgIH1cbiAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICBcbiAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGF0YUZpbHRlcmVkKCRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZSwkc2NvcGUudGFza0lkLCRzY29wZS5sb2NhbFZhcnMuZm9ybVR5cGUsbGFuZywkc2NvcGUubG9jYWxWYXJzLmRhc2hib2FyZC5kYXRhKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHsvL01JR09SXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhID0gZGF0YS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuY29sdW1uRGVmcyA9IGRhdGEuY29sdW1uc0RlZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5pbml0aWFsTG9hZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucmVzdG9yZUdyaWRTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcbiAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcbiAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblx0XHRcbiAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNldEZpZWxkID0gZnVuY3Rpb24oZm9ybSxuYW1lLHZhbHVlLG1zZylcbiAgICAgICAge1xuICAgICBcdFx0XHRcdFRhc2tEYXRhU2VydmljZS5zZXRGaWVsZChmb3JtLG5hbWUsdmFsdWUpO1xuICAgICAgICAgICAgaWYgKG1zZykgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKG1zZywnaW5mbycpO1xuICAgICAgICB9O1xuICAgICAgICBcbiAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dIaWRlU2VhcmNoRm9ybSA9IGZ1bmN0aW9uKClcbiAgICAgICAge1xuICAgICBcdFx0XHRcdGlmICgkc2NvcGUuZmQuU2hvd1NlYXJjaEZvcm0pICRzY29wZS5sb2NhbFZhcnMuZ2V0Rm9ybVJlc291cmNlKCk7XG4gICAgICAgIH07XG4gICAgICAgXG4gICAgICAgXG4gICAgICAgXG4gICAgJHNjb3BlLmxvY2FsVmFycy5nZXRQcmV2aW91c1Rhc2tXaWRnZXQgID0gZnVuY3Rpb24obGlua1R5cGUpXG4gICAge1xuICAgICAgdmFyIHBUYXNrRGF0YSA9IFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UuZ2V0UHJldlRhc2tEYXRhKCRzY29wZS5wcmV2VGFza0V4ZUlkKTtcbiAgICAgICAgICAgIHZhciBkYXRhc2V0SWQ9MCxkYXRhc2V0UmVjb3JkSWQ9MDtcbiAgICAgICAgICAgIGxldCBhY3Rpb247XG4gICAgICAgICAgICBmb3IgKGxldCBrPTA7azxwVGFza0RhdGEubGVuZ3RoO2srKylcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZiAocFRhc2tEYXRhW2tdLkRFSSE9dW5kZWZpbmVkICYmIHBUYXNrRGF0YVtrXS5ERUkhPW51bGwpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHBUYXNrRGF0YVtrXS5ERUkubGVuZ3RoO2krKylcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBpZiAocFRhc2tEYXRhW2tdLkRFSVtpXS5uYW1lPT1saW5rVHlwZSlcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBUYXNrRGF0YVtrXS5ERUlbaV0udmFsdWUhPXVuZGVmaW5lZCAmJiBwVGFza0RhdGFba10uREVJW2ldLnZhbHVlIT1udWxsKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgLy9wb3B1bGF0ZSBzZWxlY3RlZCBpdGVtXG4gICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7ajxwVGFza0RhdGFba10uREVJW2ldLnZhbHVlLmxlbmd0aDtqKyspXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICBpZiAocFRhc2tEYXRhW2tdLkRFSVtpXS52YWx1ZVtqXS5uYW1lPT1cInJlc291cmNlSWRcIiAmJiBwVGFza0RhdGFba10uREVJW2ldLnZhbHVlW2pdLnZhbHVlIT11bmRlZmluZWQpIGRhdGFzZXRJZD1wVGFza0RhdGFba10uREVJW2ldLnZhbHVlW2pdLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICBpZiAocFRhc2tEYXRhW2tdLkRFSVtpXS52YWx1ZVtqXS5uYW1lPT1cInJlc291cmNlUmVjb3JkSWRcIiAmJiBwVGFza0RhdGFba10uREVJW2ldLnZhbHVlW2pdLnZhbHVlIT11bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhc2V0UmVjb3JkSWQ9cFRhc2tEYXRhW2tdLkRFSVtpXS52YWx1ZVtqXS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZSA9PSAnZHJvcGRvd24nICYmIGRhdGFzZXRJZD09JHNjb3BlLmZkLlJlbGF0ZWQgJiYgISRzY29wZS5mZC5NdWx0aWxpbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5pdGVtVmFsdWUudmFsID0gcFRhc2tEYXRhW2tdLkRFSVtpXS52YWx1ZVtqXS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKHZhbHVlU3RhdGVOYW1lLFwidmFsdWVDaGFuZ2VkXCIsICRzY29wZS5pdGVtVmFsdWUudmFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBUYXNrRGF0YVtrXS5ERUlbaV0udmFsdWVbal0ubmFtZT09XCJyZXNvdXJjZVJlY29yZElkc1wiICYmIHBUYXNrRGF0YVtrXS5ERUlbaV0udmFsdWVbal0udmFsdWUhPXVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzZXRSZWNvcmRJZD1wVGFza0RhdGFba10uREVJW2ldLnZhbHVlW2pdLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlID09ICdkcm9wZG93bicgJiYgZGF0YXNldElkPT0kc2NvcGUuZmQuUmVsYXRlZCAmJiAkc2NvcGUuZmQuTXVsdGlsaW5lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuaXRlbVZhbHVlLnZhbCA9IHBUYXNrRGF0YVtrXS5ERUlbaV0udmFsdWVbal0udmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9ICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcInZhbHVlQ2hhbmdlZFwiLCAkc2NvcGUuaXRlbVZhbHVlLnZhbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgcmV0dXJuIHsnZGF0YXNldElkJzpkYXRhc2V0SWQsJ2RhdGFzZXRSZWNvcmRJZCc6ZGF0YXNldFJlY29yZElkfTtcbiAgICB9O1xuXG5cbiAgIFxuICAkc2NvcGUubG9jYWxWYXJzLnByZXZpb3VzVGFza0RhdGE9JHNjb3BlLmxvY2FsVmFycy5nZXRQcmV2aW91c1Rhc2tXaWRnZXQoXCJyZXNvdXJjZUxpbmtEYXRhc2V0TGlzdFwiKTtcbiBcbiAgICAgICAgXG4gICAgICAgJHNjb3BlLmxvY2FsVmFycy5zYXZlR3JpZFN0YXRlPSBmdW5jdGlvbigpIHtcbiAgICAgICB2YXIgc3RhdGUgPSAkc2NvcGUubG9jYWxWYXJzLmdyaWRBcGkuc2F2ZVN0YXRlLnNhdmUoKTtcbiAgICAgICAkc2NvcGUuZmQuR3JpZFN0YXRlID0gc3RhdGU7XG4gICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiVG8gbWFrZSBjaGFuZ2VzIHN0aWNrIHBsZWFzZSBzYXZlIGZvcm1cIiwnaW5mbycpO1xuICAgICAgICAgICAgIFxuICAgIH07XG4gIFxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUmVsYXRlZCE9bnVsbCAmJiAgISRzY29wZS5mb3JtRGVmaW5pdGlvbiAmJiAhJHNjb3BlLmxvY2FsVmFycy5zZWFyY2hGb3JtRG93bmxvYWRlZCAmJiAhJHNjb3BlLmZkLlBhcmFtZXRlcnMuRG93bmxvYWRBbGxSZWNvcmRzKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5leGVjdXRlRGF0YXNldExpc3QoKTtcbiAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIH1lbHNlIGlmICgkc2NvcGUuZmQuUmVsYXRlZCE9bnVsbCAmJiAgISRzY29wZS5mb3JtRGVmaW5pdGlvbiAmJiAhJHNjb3BlLmxvY2FsVmFycy5zZWFyY2hGb3JtRG93bmxvYWRlZCAmJiAkc2NvcGUuZmQuUGFyYW1ldGVycy5Eb3dubG9hZEFsbFJlY29yZHMpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLlByZXNlbnRhdGlvblR5cGU9PSd0YWJsZScpICRzY29wZS5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VDb2x1bW5zKHRydWUpO1xuICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLlByZXNlbnRhdGlvblR5cGU9PSdkcm9wZG93bicpXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0RGF0YXNldERhdGFMaXN0KHRydWUsJHNjb3BlLmZkLlBhcmFtZXRlcnMuQ2xpZW50U2lkZUZpbHRlcik7XG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0Rm9ybVJlc291cmNlKCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZT09J2NhcmQnKSAkc2NvcGUubG9jYWxWYXJzLmdldENhcmRMYXlvdXQoKTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoJHNjb3BlLmZkLlJlbGF0ZWQhPW51bGwgJiYgKCRzY29wZS5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTIgfHwgJHNjb3BlLmZkLkF1dG9TZWFyY2gpKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdldEZvcm1SZXNvdXJjZSgpO1xuICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0RGF0YXNldHMoKTtcbiAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZT09J3RhYmxlJykgJHNjb3BlLmxvY2FsVmFycy5nZXRSZXNvdXJjZUNvbHVtbnMoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLlByZXNlbnRhdGlvblR5cGU9PSdjYXJkJykgJHNjb3BlLmxvY2FsVmFycy5nZXRDYXJkTGF5b3V0KCk7XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB9ZWxzZSBpZigkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlIT01KVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dIaWRlU2VhcmNoRm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VDb2x1bW5zKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdldERhdGFzZXRzKCk7XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycyE9bnVsbCAmJiAkc2NvcGUuZmQuUGFyYW1ldGVycyE9dW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlPT1cImRyb3Bkb3duXCIpICRzY29wZS5sb2NhbFZhcnMuZ2V0Rm9ybUZpZWxkcygpOyBcbiAgICAgICAgICAgICAgICAgICB9XG4gIFxuICAgJHJvb3RTY29wZS4kYnJvYWRjYXN0KFwiV2lkZ2V0XCIrJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkK1wiUmVhZHlcIixudWxsKTtcbiAgICAgICAgXG59XTsgLy9jb250cm9sZXJfRU5EXG5cbiAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXG4gICAgICAgICAgICB0ZW1wbGF0ZVVybDogJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza1ZpZXdQZGYuaHRtbCcsXG4gICAgICAgICAgICBjb250cm9sbGVyOiBjb250cm9sbGVyLFxuICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xuICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBcbiAgICAgICAgICAgICBcbiAgfSBcbiAgICAgICAgXG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0VGFza1ZpZXdSZXNvdXJjZSAoKSB7XHJcbiAgIFxyXG4gICB2YXIgY29udHJvbGxlciA9IFsnJHNjb3BlJywgJyR1aWJNb2RhbCcsICckc3RhdGVQYXJhbXMnLCckc3RhdGUnLCckdGltZW91dCcsJ0NvZGVzU2VydmljZScsJ1Jlc291cmNlc0RhdGFTZXJ2aWNlJywnJHJvb3RTY29wZScsJ0NPREVTX0NPTlNUJywnUHJvY2Vzc2luZ1NlcnZpY2UnLCdNZXNzYWdpbmdTZXJ2aWNlJywnR3JpZHN0ZXJTZXJ2aWNlJywnVGFza0RhdGFTZXJ2aWNlJywnV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZScsJ0thdGFseW9TdGF0ZU1hbmFnZXInLCdVdGlsaXR5U2VydmljZScsJyR0ZW1wbGF0ZUNhY2hlJywnJGNvbXBpbGUnLCckZWxlbWVudCcsXHJcbiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkc2NvcGUsJHVpYk1vZGFsLCRzdGF0ZVBhcmFtcywkc3RhdGUsJHRpbWVvdXQsQ29kZXNTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLCRyb290U2NvcGUsQ09ERVNfQ09OU1QsUHJvY2Vzc2luZ1NlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxHcmlkc3RlclNlcnZpY2UsVGFza0RhdGFTZXJ2aWNlLFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UsS2F0YWx5b1N0YXRlTWFuYWdlcixVdGlsaXR5U2VydmljZSwkdGVtcGxhdGVDYWNoZSwkY29tcGlsZSwkZWxlbWVudCkge1xyXG4gICAgIFxyXG5cclxuICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgJHNjb3BlLkNUUkw9XCJrdFRhc2tWaWV3UmVzb3VyY2VcIlxyXG4gICAgXHJcblxyXG4gICAgJHNjb3BlLmZkLmxvY2FsVmFycyA9IHtcclxuICAgICAgICAgIHNob3dNZW51OiBmYWxzZSxcclxuICAgICAgICAgIHNlYXJjaEZvcm1Eb3dubG9hZGVkOiBmYWxzZSxcclxuICAgICAgICAgIGZvcm1Mb2FkZWQ6IHRydWUsXHJcbiAgICAgICAgICBzcmNfdHlwZV90ZXh0OiBDT0RFU19DT05TVC5fUE9QVUxBVEVfVFlQRV8sXHJcbiAgICAgICAgICBhbmltYXRpb25zRW5hYmxlZDogdHJ1ZSxcclxuICAgICAgICAgIGZvcm1QYXJhbXM6IHtmb3JtVmlld1R5cGU6MSwgc2hvd0dyaWROYXZpZ2F0aW9uOmZhbHNlfSxcclxuICAgICAgICAgIHdpZGdldFR5cGU6IDMsXHJcbiAgICAgICAgICBncmlkc3RlclR5cGU6IFwiZGF0YXNldFwiLFxyXG4gICAgICAgICAgcmVzb3VyY2VUeXBlOlwiZGF0YXNldFwiLFxyXG4gICAgICAgICAgZGF0YXNldE1hcHBlclR5cGU6MCxcclxuICAgICAgICAgIHNlYXJjaEZpbHRlcjpbe31dLFxyXG4gICAgICAgICAgcmVzb3VyY2VUeXBlc0xpc3Q6W3t0eXBlOidkYXRhc2V0JyxuYW1lOidEYXRhc2V0J30se3R5cGU6J2ZpbGUnLG5hbWU6J0ZpbGUnfV1cclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXggPSAncmVzb3VyY2UnKyRzY29wZS5mZC5SZWxhdGVkXHJcbiAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnRvZ2dsZURyb3Bkb3duID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dNZW51ID0gICRzY29wZS5mZC5sb2NhbFZhcnMuc2hvd01lbnUgPyBmYWxzZTogdHJ1ZSBcclxuICAgIH1cclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMuU2hvd0Zvcm1UeXBlPSdkYXRhJ1xyXG5cclxuXHJcbiAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlYXJjaEZpbHRlcj17fVxyXG5cclxuICAgICRzY29wZS5nc3J2YyA9IEdyaWRzdGVyU2VydmljZTtcclxuICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycz09dW5kZWZpbmVkKSAkc2NvcGUuZmQuUGFyYW1ldGVycz17fTtcclxuICAgIFxyXG4gICAgJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXSA9ICRzY29wZS5mZFxyXG5cclxuICAgICRzY29wZS5mZC5QYXJhbWV0ZXJzLlNob3dBZHZhbmNlZFByb3BlcnRpZXMgPSB0cnVlXHJcbiAgICAkc2NvcGUuZmQubG9jYWxWYXJzLlNob3dBZHZhbmNlZFByb3BlcnRpZXMgPSB0cnVlXHJcbiAgICBpZiAoISRzY29wZS5mZC5QYXJhbWV0ZXJzLlNlYXJjaEZvcm1EZXBlbmRlbmNpZXMpICAkc2NvcGUuZmQuUGFyYW1ldGVycy5TZWFyY2hGb3JtRGVwZW5kZW5jaWVzID0gW11cclxuICAgIGlmICgkc2NvcGUuZm9ybURhdGE9PT11bmRlZmluZWQpXHJcbiAgICB7XHJcblxyXG4gICAgICAgICRzY29wZS5mb3JtRGF0YT17fVxyXG5cclxuICAgICAgICAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlV1aWRSZWZdPVt7fV1cclxuICAgICAgICAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlV1aWRSZWYrJy1zZWFyY2gnXT1be31dXHJcblxyXG4gICAgfWVsc2VcclxuICAgIHtcclxuICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5VdWlkUmVmXT09PXVuZGVmaW5lZCB8fCAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlV1aWRSZWZdPT09bnVsbCkgXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuVXVpZFJlZl09W3t9XVxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5VdWlkUmVmKyctc2VhcmNoJ109W3t9XVxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICAgaWYgKCRzY29wZS5mZC5Qb3B1bGF0ZVR5cGU9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLlBvcHVsYXRlVHlwZT1cIlwiO1xyXG4gICAgICBcclxuICAgICAgICBcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQgPSB7XHJcbiAgXHRcdFx0XHRpZDogJzEnLFxyXG4gIFx0XHRcdFx0bmFtZTogJ0hvbWUnLFxyXG4gIFx0XHRcdFx0d2lkZ2V0czoge30sXHJcbiAgICAgICAgICAgICAgICBzZWFyY2hGb3JtOnt9XHJcbiAgICAgIH0gO1xyXG4gICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnNMYW5nPT09dW5kZWZpbmVkIHx8ICRzY29wZS5mZC5QYXJhbWV0ZXJzTGFuZz09PW51bGwpICRzY29wZS5mZC5QYXJhbWV0ZXJzTGFuZz17fVxyXG5cclxuICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzTGFuZz8uQ3JlYXRlZEJ5VGVtcGxhdGU9PT11bmRlZmluZWQpICAkc2NvcGUuZmQuUGFyYW1ldGVyc0xhbmcuQ3JlYXRlZEJ5VGVtcGxhdGU9J0NyZWF0ZWQgYnkge3t1c2VyfX0gb24ge3tkYXRlfX0gYXQge3t0aW1lfX0nXHJcbiAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVyc0xhbmc/LkNoYW5nZWRCeVRlbXBsYXRlPT09dW5kZWZpbmVkKSAgJHNjb3BlLmZkLlBhcmFtZXRlcnNMYW5nLkNoYW5nZWRCeVRlbXBsYXRlPSdMYXN0IGNoYW5nZWQgYnkge3t1c2VyfX0gb24ge3tkYXRlfX0gYXQge3t0aW1lfX0nXHJcblxyXG4gICAgICAkc2NvcGUudGFza0lkPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VEZWZVaWQ7XHJcbiAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEZWZpbml0aW9uID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvblxyXG4gICAgICBcclxuICAgICAgaWYgKCRzY29wZS50YXNrSWQ9PXVuZGVmaW5lZCkgJHNjb3BlLnRhc2tJZD0wO1xyXG4gICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnRhc2tJZD0kc2NvcGUudGFza0lkO1xyXG4gICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlSWQ9JHNjb3BlLnRhc2tJZDtcclxuICAgICAgICBcclxuICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VJZD09MCkgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZUlkPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uaWQgIFxyXG4gICAgICAkc2NvcGUuZmQuUGFyZW50UmVzb3VyY2VEZWZJZD0kc2NvcGUuZmQuUmVsYXRlZDtcclxuICAgICAgJHNjb3BlLnByZXZUYXNrRXhlSWQgPSAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wcmV2X3Rhc2tfaWQ7XHJcbiAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybVR5cGU9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX3R5cGU7XHJcbiAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1UeXBlPT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybVR5cGU9J2knXHJcbiAgICAgICRzY29wZS5zb3VyY2VfdHlwZT0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnNvdXJjZV90eXBlO1xyXG4gICAgICAkc2NvcGUudGFza0luaXRpYXRlSWQgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRhc2tfaW5pdGlhdGVfaWQ7XHJcbiAgICAgICRzY29wZS50YXNrRXhlY3V0ZUlkID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50YXNrX2V4ZWN1dGVfaWQ7XHJcbiAgICAgICRzY29wZS5mb3JtRGVmaW5pdGlvbiA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uO1xyXG4gICAgICBpZiAgKCRzY29wZS5mb3JtRGVmaW5pdGlvbj09dW5kZWZpbmVkKSAkc2NvcGUuZm9ybURlZmluaXRpb249ZmFsc2U7XHJcbiAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0ID0gJHNjb3BlLmZkLkZvcm1EZWZcclxuXHQgIFxyXG5cdCAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYXJlbnRXaWRnZXRVaWQgPSAkc2NvcGUuZmQuVXVpZFJlZlxyXG4gICAgICBcclxuXHJcbiAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2V0RmllbGQgPSBmdW5jdGlvbihmb3JtLG5hbWUsdmFsdWUsbXNnKVxyXG4gICAgICB7XHJcbiAgICAgICAgIFRhc2tEYXRhU2VydmljZS5zZXRGaWVsZChmb3JtLG5hbWUsdmFsdWUpO1xyXG4gICAgICAgICBpZiAobXNnKSBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UobXNnLCdpbmZvJyk7XHJcbiAgICAgIH07ICBcclxuICAgICAgXHJcbiAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZ2V0RmllbGRzID0gZnVuY3Rpb24oZm9ybSxyZXF1aXJlZEZpZWxkcyxtc2cpXHJcbiAgICAgIHtcclxuICAgICAgICAgbGV0IHJlc3VsdFByb3BlcnRpZXMgPSAgVGFza0RhdGFTZXJ2aWNlLmdldEZpZWxkcyhmb3JtLCByZXF1aXJlZEZpZWxkcyk7XHJcbiAgICAgICAgIGlmIChtc2cpIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShtc2csJ2luZm8nKTtcclxuICAgICAgICAgcmV0dXJuIHJlc3VsdFByb3BlcnRpZXNcclxuICAgICAgfTsgXHJcblxyXG5cclxuICAgICAgaWYgKCRzY29wZS5mZC5Qb3B1bGF0ZU1ldGhvZD09J00nKVxyXG4gICAgICB7XHJcblxyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLnNlYXJjaEZvcm0gPSB7bGF5b3V0OiRzY29wZS5mZC5Gb3JtRGVmU2VhcmNofVxyXG4gICAgICAgIC8vJHNjb3BlLmZkLmxvY2FsVmFycy5zZXRGaWVsZCgkc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC5zZWFyY2hGb3JtLmxheW91dCxcIlJlYWRPbmx5XCIsZmFsc2UpXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWFyY2hGb3JtTG9hZGVkPXRydWVcclxuICAgICAgfSAgICBcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkPTA7XHJcbiAgICAgIGlmICgkc2NvcGUudGFza0luaXRpYXRlSWQ9PXVuZGVmaW5lZClcclxuICAgICAgICAgICAgJHNjb3BlLnRhc2tJbml0aWF0ZUlkID0wO1xyXG4gICAgICBpZiAoJHNjb3BlLnRhc2tFeGVjdXRlSWQ9PXVuZGVmaW5lZClcclxuICAgICAgICAgICAgJHNjb3BlLnRhc2tFeGVjdXRlSWQgPTA7ICBcclxuICAgICAgaWYgKCRzY29wZS5wcmV2VGFza0V4ZUlkPT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICRzY29wZS5wcmV2VGFza0V4ZUlkID0wO1xyXG5cclxuICAgICAgLy9yZWdpc3RlciB3aWRnZXQgXHJcbiAgICAgIHZhciBvdXRfZmllbGRzID0gWydyZXNvdXJjZUlkJ107XHJcbiAgICAgIHZhciB3aWRnZXREZWZpbml0aW9uID0ge0RFSTogW3snbmFtZSc6J3Jlc291cmNlTGluaycsJ3ZhbHVlJzpbe25hbWU6J3Jlc291cmNlSWQnLHZhbHVlOiRzY29wZS5mZC5SZWxhdGVkfSx7bmFtZToncmVzb3VyY2VSZWNvcmRJZCcsdmFsdWU6Jyd9XX1dLGFjdGlvbnM6IFt7aWQ6MSxuYW1lOidyZWZyZXNoUmVjb3JkJ30se2lkOjIsbmFtZToncmVsb2FkV2lkZ2V0J31dLHdpZGdldE5hbWU6ICd2aWV3UmVzb3VyY2VXaWRnZXQnLHdpZGdldExhYmVsOidWaWV3IHJlc291cmNlIHJlY29yZCcsZmQ6JHNjb3BlLmZkLHBhcmVudFJlc291cmNlSWQ6JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi51aWQsd2lkZ2V0SWQ6ICRzY29wZS5mZC5VdWlkUmVmLHRhc2tfaW5pdGlhdGVfaWQ6JHNjb3BlLnRhc2tJbml0aWF0ZUlkLHRhc2tfZXhlY3V0ZV9pZDokc2NvcGUudGFza0V4ZWN1dGVJZCx0YXNrSWQ6ICAkc2NvcGUubFRhc2tJZCxyZXNvdXJjZV9pZDokc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQscmVzb3VyY2VEZWZJZCA6ICRzY29wZS5mZC5SZWxhdGVkLCBvdXRwdXQ6b3V0X2ZpZWxkcywgfTtcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5sb2NhbFdpZGdldElkID0gV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5yZWdpc3RlcldpZGdldCh3aWRnZXREZWZpbml0aW9uKTtcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5Mb2NhbElkPSRzY29wZS5mZC5sb2NhbFZhcnMubG9jYWxXaWRnZXRJZDtcclxuICAgICAgJHNjb3BlLmZkLkxvY2FsSWQ9JHNjb3BlLmZkLmxvY2FsVmFycy5sb2NhbFdpZGdldElkO1xyXG4gICAgICBpZiAoJHNjb3BlLmZkLlV1aWRSZWY9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLlV1aWRSZWY9VXRpbGl0eVNlcnZpY2UudXVpZHY0KClcclxuICAgICAgJHNjb3BlLmtzbSA9IEthdGFseW9TdGF0ZU1hbmFnZXI7XHJcbiAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUgPSBudWxsO1xyXG4gICAgICAgXHJcbiAgICAgIHZhciB2YWx1ZVN0YXRlPSAkc2NvcGUua3NtLmFkZFN1YmplY3QoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkK1wiLVwiKyRzY29wZS5mZC5VdWlkUmVmLCRzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUpO1xyXG4gICAgICB2YXIgdmFsdWVTdGF0ZU5hbWUgPSB2YWx1ZVN0YXRlLnN1YmplY3QubmFtZTtcclxuICAgICAgICBcclxuICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKiBnZXQgc3RhdGUgaWYgZXhpc3RzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgIFxyXG4gICAgICBpZiAodmFsdWVTdGF0ZS5zdWJqZWN0LmN1cnJlbnRTdGF0ZUluZGV4Pj0wKSAgeyAgIFxyXG4gICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZSA9IHZhbHVlU3RhdGUuc3ViamVjdC5nZXRTdGF0ZTtcclxuICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZCA9ICRzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUucmVzb3VyY2VSZWNvcmRJZDtcclxuICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMubG9hZEZyb21TdGF0ZT10cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGU9eydyZXNvdXJjZUlkJzokc2NvcGUuZmQuUmVsYXRlZCwncmVzb3VyY2VSZWNvcmRJZCc6MH07XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIGxldCB2YWx1ZV9jaGFuZ2VkID0gZnVuY3Rpb24oZGF0YSl7XHJcbiAgICAgICAgICB2YWx1ZVN0YXRlLnN1YmplY3Quc2V0U3RhdGVDaGFuZ2VzID0gZGF0YTtcclxuICAgICAgICAgIHZhbHVlU3RhdGUuc3ViamVjdC5ub3RpZnlPYnNlcnZlcnMoXCJ2YWx1ZUNoYW5nZWRcIik7XHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICBsZXQgYWN0aW9uX3ZhbHVlX2NoYW5nZWQgPSAkc2NvcGUua3NtLmFkZEFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcInZhbHVlQ2hhbmdlZFwiLHZhbHVlX2NoYW5nZWQpO1xyXG4gICAgICAgXHJcbiAgICAgICBcclxuICAgICAgIGxldCBhcHBseV92YWx1ZSA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBsZXQgZG9fcmVmcmVzaD1mYWxzZTtcclxuICAgICAgICAgICAgbGV0IHN0YXRlPWRhdGEuc3RhdGVcclxuICAgICAgICAgICAgaWYgKHN0YXRlIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09J251bWJlcicpICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZD0gc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoc3RhdGUpKVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLmxlbmd0aD4wKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXgrJ19pZCcgaW4gc3RhdGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZD0gc3RhdGVbMF1bJHNjb3BlLmZkLmxvY2FsVmFycy5UYWJsZVByZWZpeCsnX2lkJ11cclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkPSBzdGF0ZVswXS5pZFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfWVsc2VcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXgrJ19pZCcgaW4gc3RhdGUpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQ9IHN0YXRlWyRzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXgrJ19pZCddXHJcbiAgICAgICAgICAgICAgICAgICAgfWVsc2UgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkPSBzdGF0ZS5pZFxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBkb19yZWZyZXNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy9nZXQgc2VsZWN0ZWRSZWNvcmRcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZCA9PSBudWxsKSAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQ9MDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQ+MCAmJiBkb19yZWZyZXNoKSAkc2NvcGUuZmQubG9jYWxWYXJzLkdldFJlY29yZEZvclZpZXcoJHNjb3BlLmZkLlBhcmVudERhdGFzZXREZWZJZCwkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQpXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICBcclxuICAgICBcclxuICAgICAgXHJcbiAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5SZWZyZXNoT25JZENoYW5nZSlcclxuICAgICAge1xyXG4gICAgICAgICBcclxuICAgICAgICAgLy9maW5kIFxyXG4gICAgICAgICAvL3N1YnNjcmliZSBvYnNlcnZlclxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICBsZXQgZGVwZW5kZW50X2ZpZWxkID0gXCJGaWVsZFwiKyRzY29wZS5mZC5VdWlkUmVmO1xyXG4gICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSBcInJlc291cmNlaWRWYWx1ZVN0YXRlTmFtZVwiKyRzY29wZS5mZC5QYXJhbWV0ZXJzLlJlc291cmNlSWRJdGVtSWQrJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50cmFuc2FjdGlvbl9pZDtcclxuICAgICAgICAgbGV0IHN1YmplY3QgPSAkc2NvcGUua3NtLmFkZFN1YmplY3Qoc3Vic2NyaWJlZFN1YmplY3QsbnVsbCk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgbGV0IG9ic2VydmVyID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3QsZGVwZW5kZW50X2ZpZWxkLFwidmFsdWVDaGFuZ2VkXCIsYXBwbHlfdmFsdWUpO1xyXG4gICAgICAgICBsZXQgdmFsID0gJHNjb3BlLmtzbS5nZXRTdGF0ZShzdWJzY3JpYmVkU3ViamVjdCk7XHJcbiAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLlRhYmxlUHJlZml4KydfaWQnIGluIHZhbClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZD0gdmFsWyRzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXgrJ19pZCddXHJcbiAgICAgICAgfWVsc2UgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkPSB2YWwuaWRcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vZ2V0IHNlbGVjdGVkUmVjb3JkXHJcbiAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQgPT0gbnVsbCkgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkPTA7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkPjApICRzY29wZS5mZC5sb2NhbFZhcnMuR2V0UmVjb3JkRm9yVmlldygkc2NvcGUuZmQuUGFyZW50RGF0YXNldERlZklkLCRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZCk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIC8vc3Vic2NyaWJlIG9ic2VydmVyXHJcbiAgICAgIGlmICgkc2NvcGUuZmQuUG9wdWxhdGVUeXBlLnRvU3RyaW5nKCkuc3Vic3RyKDAsMSk9PVwiNFwiKVxyXG4gICAgICB7XHJcbiAgICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAgKioqKioqKioqKioqKioqKioqIFN5bmMgZGF0YSB3aXRoIFN0YXRlIG1hbmFnZXIgKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuICAgICAgIFxyXG4gICAgICAgIGlmICgkc2NvcGUuZmQuU3JjV2lkZ2V0SWQhPXVuZGVmaW5lZCAmJiAkc2NvcGUuZmQuU3JjV2lkZ2V0SWQhPW51bGwpXHJcbiAgICAgICAgXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IGRlcGVuZGVudF9maWVsZCA9IFwiRmllbGRcIiskc2NvcGUuZmQuU3JjV2lkZ2V0SWQ7XHJcbiAgICAgICAgICAgICAgIC8vIGxldCBzdWJzY3JpYmVkU3ViamVjdCA9ICRzY29wZS5mZC5QYXJhbWV0ZXJzLlNyY1dpZGdldFR5cGUrXCJWYWx1ZVN0YXRlTmFtZVwiKyRzY29wZS5mZC5TcmNXaWRnZXRJZDtcclxuICAgICAgICAgICAgICAgIGxldCBzdWJzY3JpYmVkU3ViamVjdCA9IFwicmxpc3RWYWx1ZVN0YXRlTmFtZVwiKyRzY29wZS5mZC5TcmNXaWRnZXRJZCskc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRyYW5zYWN0aW9uX2lkO1xyXG4gICAgICAgICAgICAgICAgbGV0IG9ic2VydmVyID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3QsZGVwZW5kZW50X2ZpZWxkLFwidmFsdWVDaGFuZ2VkXCIsYXBwbHlfdmFsdWUpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9ICBcclxuICAgICAgICAgXHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIGxldCByZWZyZXNoX3dpZGdldF9kYXRhID0gZnVuY3Rpb24oKVxyXG4gICAgICBcclxuICAgICAge1xyXG4gICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLkdldFJlY29yZEZvclZpZXcoJHNjb3BlLmZkLlBhcmVudERhdGFzZXREZWZJZCwkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQpICAgIFxyXG4gICAgICAgICBcclxuICAgICAgfVxyXG4gICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuRXZlbnROYW1lIT11bmRlZmluZWQpXHJcbiAgICAgIHtcclxuICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLkV2ZW50TmFtZSE9XCJcIilcclxuICAgICAgICAge1xyXG4gICAgICAgICAgICBsZXQgZGVwZW5kZW50X2ZpZWxkMiA9IFwiRmllbGRcIiskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ7XHJcbiAgICAgICAgICAgIGxldCBzdWJzY3JpYmVkU3ViamVjdDIgPSBcInRhc2tcIiskc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRyYW5zYWN0aW9uX2lkO1xyXG4gICAgICAgICAgICBsZXQgb2JzZXJ2ZXIyID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3QyLGRlcGVuZGVudF9maWVsZDIsJHNjb3BlLmZkLlBhcmFtZXRlcnMuRXZlbnROYW1lLHJlZnJlc2hfd2lkZ2V0X2RhdGEpO1xyXG4gICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dQcm9wZXJ0aWVzPWZ1bmN0aW9uKGRhdGFzZXRNYXBwZXJUeXBlLHNob3dQcm9wZXJ0aWVzUmlnaHQpXHJcbiAgICAgIHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSA9IGRhdGFzZXRNYXBwZXJUeXBlO1xyXG4gICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wIHx8ICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGUhPWRhdGFzZXRNYXBwZXJUeXBlKSBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlID0gZGF0YXNldE1hcHBlclR5cGU7XHJcbiAgICAgICAgICAgICAgIGVsc2UgXHJcbiAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPTA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHNob3dQcm9wZXJ0aWVzUmlnaHQpICRzY29wZS5nc3J2Yy5zZXRGaWVsZFByb3BlcnRpZXMoJHNjb3BlLmZkKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgIH07XHJcbiAgIFxyXG4gICAgICAkc2NvcGUuZmQub3Blbk1vZGFsID0gZnVuY3Rpb24obW9kYWxJZClcclxuICAgICAge1xyXG4gICAgICAgICQobW9kYWxJZCkubW9kYWwoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5hZGRXaWRnZXREZXAgPSBmdW5jdGlvbigpXHJcbiAgICAgIHtcclxuXHJcbiAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuRGVwU2VhcmNoV2lkZ2V0SWQpe1xyXG5cclxuICAgICAgICAgICAgJHNjb3BlLmZkLlBhcmFtZXRlcnMuU2VhcmNoRm9ybURlcGVuZGVuY2llcy5wdXNoKHt3aWRnZXQ6JHNjb3BlLmZkLmxvY2FsVmFycy5EZXBTZWFyY2hXaWRnZXRJZCxwcm9jZXNzZWQ6ZmFsc2V9KVxyXG4gICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLkRlcFNlYXJjaFdpZGdldElkPVwiXCJcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVtb3ZlV2lkZ2V0RGVwID0gZnVuY3Rpb24oaWR4KVxyXG4gICAgICB7XHJcblxyXG4gICAgICAgICAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5TZWFyY2hGb3JtRGVwZW5kZW5jaWVzLnNwbGljZShpZHgsMSlcclxuICAgICAgICBcclxuICAgICAgfVxyXG5cclxuICAgIC8vcHJvY2VzcyBzZWFyY2ggZm9ybSBkZXBlbmRlbmNpZXNcclxuICAgICAgXHJcbiAgICBsZXQgcHJvY2Vzc19zZWFyY2hfZm9ybV9yZWFkeSA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICB7ICAgXHJcbiAgICAgICAgaWYgKCEkc2NvcGUuZmQuUGFyYW1ldGVycy5TZWFyY2hGb3JtRGVwZW5kZW5jaWVzLmxlbmd0aCkgcmV0dXJuXHJcbiAgICAgICAgbGV0IHdpZGdldCA9IGRhdGE/LnN0YXRlPy53aWRnZXRcclxuICAgICAgICBpZiAod2lkZ2V0KXtcclxuICAgICAgICAgICAgbGV0IHBvcyA9ICRzY29wZS5mZC5QYXJhbWV0ZXJzLlNlYXJjaEZvcm1EZXBlbmRlbmNpZXMubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUud2lkZ2V0OyB9KS5pbmRleE9mKHdpZGdldClcclxuICAgICBcclxuICAgICAgICAgICAgaWYgKHBvcz49MCAmJiBkYXRhPy5zdGF0ZT8ucHJvY2Vzc2VkKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5TZWFyY2hGb3JtRGVwZW5kZW5jaWVzLnNwbGljZShwb3MsMSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBpZiAoISRzY29wZS5mZC5QYXJhbWV0ZXJzLlNlYXJjaEZvcm1EZXBlbmRlbmNpZXMubGVuZ3RoICYmICRzY29wZS5mZC5BdXRvU2VhcmNoICYmICRzY29wZS5mZC5Qb3B1bGF0ZU1ldGhvZD09J00nICYmICEkc2NvcGUuZm9ybURlZmluaXRpb24pICRzY29wZS5mZC5sb2NhbFZhcnMuR2V0UmVjb3JkKClcclxuXHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaT0wO2k8JHNjb3BlLmZkLlBhcmFtZXRlcnMuU2VhcmNoRm9ybURlcGVuZGVuY2llcy5sZW5ndGg7aSsrKXtcclxuXHJcbiAgICAgICAgICAgIGxldCBkZXBfZmllbGQgPSBcIkZpZWxkXCIrJHNjb3BlLmZkLlV1aWRSZWZcclxuICAgICAgICAgICAgbGV0IHN1YlN1YmplY3QgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQrJy0nKyRzY29wZS5mZC5VdWlkUmVmKyctJyskc2NvcGUuZmQuUGFyYW1ldGVycy5TZWFyY2hGb3JtRGVwZW5kZW5jaWVzW2ldLndpZGdldCsnLXdpZGdldFJlYWR5J1xyXG4gICAgICAgICAgICBsZXQgc3ViaiA9ICRzY29wZS5rc20uYWRkU3ViamVjdChzdWJTdWJqZWN0LG51bGwpXHJcbiAgICAgICAgICAgIGxldCBvYnNlcnZlciA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YlN1YmplY3QsZGVwX2ZpZWxkLFwid2lkZ2V0UmVhZHlcIixwcm9jZXNzX3NlYXJjaF9mb3JtX3JlYWR5KVxyXG4gICAgICAgICAgICBsZXQgdmFsID0gJHNjb3BlLmtzbS5nZXRTdGF0ZShzdWJTdWJqZWN0KVxyXG4gICAgICAgICAgICBpZiAodmFsPy5zdGF0dXM9PVwib2tcIiAmJiB2YWw/LnN0YXRlKSBwcm9jZXNzX3NlYXJjaF9mb3JtX3JlYWR5KHZhbClcclxuICAgICAgICAgXHJcbiAgICB9IFxyXG4gICAgXHJcblxyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuR2V0Rm9ybUFycmF5ID0gZnVuY3Rpb24ocG9zaXRpb24pe1xyXG5cclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuY3VycmVudFJlY29yZEluZGV4ID0gJHNjb3BlLmZkLmxvY2FsVmFycy5jdXJyZW50UmVjb3JkSW5kZXggK3Bvc2l0aW9uXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlV1aWRSZWZdWzBdID0gJHNjb3BlLmZkLmxvY2FsVmFycy5yZWNvcmRzQXJyYXlbJHNjb3BlLmZkLmxvY2FsVmFycy5jdXJyZW50UmVjb3JkSW5kZXhdXHJcbiAgICAgICAgfVxyXG4gICAgICBcclxuICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5HZXRSZWNvcmQgPSBmdW5jdGlvbigpe1xyXG5cclxuICAgICAgICAgICAgbGV0IHJlc291cmNlVmVyc2lvbiA9IDBcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlVmVyc2lvbikgcmVzb3VyY2VWZXJzaW9uID0gJHNjb3BlLmZkLlBhcmFtZXRlcnMuUHVibGlzaGVkUmVzb3VyY2VWZXJzaW9uXHJcblxyXG4gICAgICAgICAgICBpZiAoISRzY29wZS5mZC5QYXJhbWV0ZXJzLlNlbGVjdFZlcnNpb25EaXJlY3QpIHJlc291cmNlVmVyc2lvbj0wXHJcblxyXG4gICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXREYXRhc2V0RGF0YSgkc2NvcGUuZmQuUmVsYXRlZCwkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlV1aWRSZWYrJy1zZWFyY2gnXVswXSxyZXNvdXJjZVZlcnNpb24pLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgLy9SZXNvdXJjZXNEYXRhU2VydmljZS5nZXRUYXNrVmlld1Jlc291cmNlKCRzY29wZS5mZC5QcmVzZW50YXRpb25JZCwkc2NvcGUudGFza0lkLCRzY29wZS5mZC5sb2NhbFZhcnMuZm9ybVR5cGUsJHNjb3BlLmZkLlJlbGF0ZWQsKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YXNldF9yZWNvcmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEuZGF0YSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAgKGRhdGEuZGF0YS5sZW5ndGg+MSkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YXNldF9yZWNvcmQgID0gZGF0YS5kYXRhWzBdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZWNvcmRzQXJyYXkgPSBkYXRhLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmN1cnJlbnRSZWNvcmRJbmRleCA9IDBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmlzTXVsdGlwbGVSZWNvcmRzID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSBpZiAoZGF0YS5kYXRhLmxlbmd0aD09MSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YXNldF9yZWNvcmQgID0gZGF0YS5kYXRhWzBdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5pc011bHRpcGxlUmVjb3JkcyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhc2V0X3JlY29yZD17fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuaXNNdWx0aXBsZVJlY29yZHMgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhc2V0X3JlY29yZCAgPSBkYXRhLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuaXNNdWx0aXBsZVJlY29yZHMgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlV1aWRSZWZdWzBdID0gIGRhdGFzZXRfcmVjb3JkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhRG93bmxvYWRlZCA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuaXNNdWx0aXBsZVJlY29yZHMgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG5cclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMuUHJvY2Vzc0F1ZGl0SW5mbyA9IGZ1bmN0aW9uKHJlY29yZClcclxuICAgIHtcclxuXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5DcmVhdGVkQnlMYWJlbCA9ICRzY29wZS5mZC5QYXJhbWV0ZXJzTGFuZy5DcmVhdGVkQnlUZW1wbGF0ZS5yZXBsYWNlKCd7e3VzZXJ9fScscmVjb3JkWyRzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXgrJ19DcmVhdGVkQnkubmFtZSddKVxyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuQ3JlYXRlZEJ5TGFiZWwgPSAkc2NvcGUuZmQubG9jYWxWYXJzLkNyZWF0ZWRCeUxhYmVsLnJlcGxhY2UoJ3t7ZGF0ZX19JyxuZXcgRGF0ZShyZWNvcmRbJHNjb3BlLmZkLmxvY2FsVmFycy5UYWJsZVByZWZpeCsnX0NyZWF0ZWREYXRlVGltZSddKS50b0xvY2FsZURhdGVTdHJpbmcoKSlcclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLkNyZWF0ZWRCeUxhYmVsID0gJHNjb3BlLmZkLmxvY2FsVmFycy5DcmVhdGVkQnlMYWJlbC5yZXBsYWNlKCd7e3RpbWV9fScsbmV3IERhdGUocmVjb3JkWyRzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXgrJ19DcmVhdGVkRGF0ZVRpbWUnXSkudG9Mb2NhbGVUaW1lU3RyaW5nKCkpXHJcbiAgICAgICAgaWYgKHJlY29yZFskc2NvcGUuZmQubG9jYWxWYXJzLlRhYmxlUHJlZml4KydfQ2hhbmdlZEJ5Lm5hbWUnXSE9PW51bGwpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLkNoYW5nZWRCeUxhYmVsID0gJHNjb3BlLmZkLlBhcmFtZXRlcnNMYW5nLkNoYW5nZWRCeVRlbXBsYXRlLnJlcGxhY2UoJ3t7dXNlcn19JyxyZWNvcmRbJHNjb3BlLmZkLmxvY2FsVmFycy5UYWJsZVByZWZpeCsnX0NoYW5nZWRCeS5uYW1lJ10pXHJcbiAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuQ2hhbmdlZEJ5TGFiZWwgPSAkc2NvcGUuZmQubG9jYWxWYXJzLkNoYW5nZWRCeUxhYmVsLnJlcGxhY2UoJ3t7ZGF0ZX19JyxuZXcgRGF0ZShyZWNvcmRbJHNjb3BlLmZkLmxvY2FsVmFycy5UYWJsZVByZWZpeCsnX0NoYW5nZWREYXRlVGltZSddKS50b0xvY2FsZURhdGVTdHJpbmcoKSlcclxuICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5DaGFuZ2VkQnlMYWJlbCA9ICRzY29wZS5mZC5sb2NhbFZhcnMuQ2hhbmdlZEJ5TGFiZWwucmVwbGFjZSgne3t0aW1lfX0nLG5ldyBEYXRlKHJlY29yZFskc2NvcGUuZmQubG9jYWxWYXJzLlRhYmxlUHJlZml4KydfQ2hhbmdlZERhdGVUaW1lJ10pLnRvTG9jYWxlVGltZVN0cmluZygpKVxyXG4gICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLkhhc0NoYW5nZWRCeT10cnVlXHJcbiAgICAgICAgfSBcclxuICAgIH1cclxuXHJcbiAgICAkc2NvcGUuZmQubG9jYWxWYXJzLkV4dHJhY3RJZEZyb21SZWNvcmQ9ZnVuY3Rpb24ocmVjb3JkKXtcclxuXHJcbiAgICAgICAgbGV0IHJlY29yZF9pZFxyXG5cclxuICAgICAgICBpZiAocmVjb3JkIT09dW5kZWZpbmVkKVxyXG4gICAgICAgIHsgICBcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVjb3JkKSAmJiByZWNvcmQubGVuZ3RoPjApXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLlRhYmxlUHJlZml4KydfaWQnIGluIHJlY29yZFswXSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmRfaWQ9cmVjb3JkWzBdWyRzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXgrJ19pZCddXHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9ZWxzZSByZWNvcmRfaWQgPSByZWNvcmRbMF0uaWRcclxuXHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuVGFibGVQcmVmaXgrJ19pZCcgaW4gcmVjb3JkKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZF9pZCA9IHJlY29yZFskc2NvcGUuZmQubG9jYWxWYXJzLlRhYmxlUHJlZml4KydfaWQnXVxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfWVsc2UgcmVjb3JkX2lkID0gcmVjb3JkLmlkXHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfWVsc2UgcmVjb3JkX2lkID0gbnVsbFxyXG5cclxuICAgICAgICByZXR1cm4gcmVjb3JkX2lkICAgXHJcbiAgICB9XHJcbiAgICAgICAgICBcclxuICAgICBcclxuICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5HZXRSZWNvcmRGb3JWaWV3ID0gZnVuY3Rpb24oZGF0YXNldERlZklkLGRhdGFzZXRSZWNvcmRJZCl7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICBpZiAoZGF0YXNldFJlY29yZElkPT09dW5kZWZpbmVkKSBkYXRhc2V0UmVjb3JkSWQ9MFxyXG4gICAgICAgICBpZiAoZGF0YXNldERlZklkPT09dW5kZWZpbmVkKSBkYXRhc2V0RGVmSWQ9MFxyXG4gICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQgPSBkYXRhc2V0UmVjb3JkSWRcclxuICAgICAgICAgJHNjb3BlLmZkLlBhcmVudERhdGFzZXREZWZJZCA9IGRhdGFzZXREZWZJZFxyXG4gICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlSWQ9PXVuZGVmaW5lZCkgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlSWQ9MFxyXG5cclxuICAgICAgICAgICAgbGV0IHBhZ2VpZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZUlkXHJcbiAgICAgICAgICAgIGxldCByaW5zdGFuY2UgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2VfaW5zdGFuY2VfaWRcclxuICAgICAgICAgICAgbGV0IHByZXZfcmVzb3VyY2VfaWQgPSAkc2NvcGUudGFza0V4ZWN1dGVJZFxyXG4gICAgICAgICBpZiAoJHNjb3BlLmZkLlBvcHVsYXRlVHlwZS50b1N0cmluZygpLnN1YnN0cigwLDEpPT0nMycpXHJcbiAgICAgICAgIHtcclxuICAgICAgICAgICAgLy9wYWdlaWQgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnByZXZfcGFnZV9pZFxyXG4gICAgICAgICAgICBwcmV2X3Jlc291cmNlX2lkID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wcmV2X3BhZ2VfaW5zdGFuY2VfaWRcclxuICAgICAgICAgXHJcbiAgICAgICAgIH1cclxuICAgICAgICAgaWYgKHByZXZfcmVzb3VyY2VfaWQ9PXVuZGVmaW5lZCkgcHJldl9yZXNvdXJjZV9pZD0wXHJcblxyXG4gICAgICAgICAgVGFza0RhdGFTZXJ2aWNlLkdldFRhc2tWaWV3UmVzb3VyY2UoJHNjb3BlLmZkLlV1aWRSZWYscGFnZWlkLCRzY29wZS50YXNrSWQscHJldl9yZXNvdXJjZV9pZCxyaW5zdGFuY2UsJHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtVHlwZSxkYXRhc2V0RGVmSWQsZGF0YXNldFJlY29yZElkLCRzY29wZS5mZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlVmVyc2lvbikudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGFzZXRfcmVjb3JkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhLmRhdGEuZGF0YSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAgKGRhdGEuZGF0YS5sZW5ndGg+MCkgZGF0YXNldF9yZWNvcmQgID0gZGF0YS5kYXRhLmRhdGFbMF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGRhdGFzZXRfcmVjb3JkPXt9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZGF0YXNldF9yZWNvcmQgID0gZGF0YS5kYXRhLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuVXVpZFJlZl1bMF0gPSAgZGF0YXNldF9yZWNvcmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkID0gJHNjb3BlLmZkLmxvY2FsVmFycy5FeHRyYWN0SWRGcm9tUmVjb3JkKGRhdGFzZXRfcmVjb3JkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2Uuc2V0RGF0YSh7REVJOiBbeyduYW1lJzoncmVzb3VyY2VMaW5rJywndmFsdWUnOlt7bmFtZToncmVzb3VyY2VJZCcsdmFsdWU6ZGF0YXNldERlZklkfSx7bmFtZToncmVzb3VyY2VSZWNvcmRJZCcsdmFsdWU6JHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkfV19XSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uczogW3tuYW1lOidQcmVwYXJlRGF0YScsc3RhdHVzOmZhbHNlfV0sXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndmlld1Jlc291cmNlV2lkZ2V0Jyx3aWRnZXRJZDogJHNjb3BlLmZkLlV1aWRSZWYsdGFza19pbml0aWF0ZV9pZDokc2NvcGUudGFza0luaXRpYXRlSWQsdGFza19leGVjdXRlX2lkOiRzY29wZS50YXNrRXhlY3V0ZUlkLFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza0lkOiAgJHNjb3BlLmxUYXNrSWQscmVzb3VyY2VfaWQ6JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkLCByZXNvdXJjZURlZklkIDogJHNjb3BlLmZkLlJlbGF0ZWQsIG91dHB1dDpvdXRfZmllbGRzfSlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbih2YWx1ZVN0YXRlTmFtZSxcInZhbHVlQ2hhbmdlZFwiLCB7ZGF0YXNldERlZklkOmRhdGFzZXREZWZJZCxyZWNvcmRJZDokc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQscmVjb3JkOiRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuVXVpZFJlZl1bMF19KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5TaG93QXVkaXRJbmZvKSAkc2NvcGUuZmQubG9jYWxWYXJzLlByb2Nlc3NBdWRpdEluZm8oZGF0YXNldF9yZWNvcmQpXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhRG93bmxvYWRlZCA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICB9ICBcclxuXHJcbmxldCBnZXRfcmVzb3VyY2VfcmVjb3JkID0gZnVuY3Rpb24oZGF0YSlcclxue1xyXG4gICAgbGV0IHJlYyA9IGRhdGEuc3RhdGU/Lml0ZW1WYWx1ZT8udmFsPy5pZFxyXG5cclxuICAgIGlmICghcmVjKSByZWMgPSBkYXRhLnN0YXRlXHJcblxyXG4gICAgaWYgKHJlYykgJHNjb3BlLmZkLmxvY2FsVmFycy5HZXRSZWNvcmRGb3JWaWV3KCRzY29wZS5mZC5SZWxhdGVkLHJlYylcclxufVxyXG5cclxuJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRUaGlzUmVzb3VyY2VXaWRnZXQgID0gZnVuY3Rpb24oKVxyXG57XHJcblxyXG4gICAgLy9yZWdpc3RlciBoZXJlIHRvIGtzbVxyXG4gICAgbGV0IGRlcGVuZGVudF9maWVsZCA9IFwiRmllbGRcIiskc2NvcGUuZmQuVXVpZFJlZjtcclxuICAgIGxldCBzdWJzY3JpYmVkU3ViamVjdCA9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkKyctJyskc2NvcGUuZmQuU3JjV2lkZ2V0SWRcclxuICAgIGxldCBzdWJqZWN0ID0gJHNjb3BlLmtzbS5hZGRTdWJqZWN0KHN1YnNjcmliZWRTdWJqZWN0LG51bGwpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICBsZXQgb2JzZXJ2ZXIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdCxkZXBlbmRlbnRfZmllbGQsXCJ2YWx1ZUNoYW5nZWRcIixnZXRfcmVzb3VyY2VfcmVjb3JkKTtcclxuICAgIGxldCB2YWwgPSAkc2NvcGUua3NtLmdldFN0YXRlKHN1YnNjcmliZWRTdWJqZWN0KVxyXG4gICAgaWYgKHZhbC5zdGF0dXM9PSdvaycgJiYgdmFsLnN0YXRlKSBnZXRfcmVzb3VyY2VfcmVjb3JkKHZhbC5zdGF0ZSlcclxufVxyXG4kc2NvcGUuZmQubG9jYWxWYXJzLmdldFByZXZpb3VzVGFza1dpZGdldCAgPSBmdW5jdGlvbihsaW5rVHlwZSlcclxuICAgIHtcclxuICAgICAgICB2YXIgcFRhc2tEYXRhO1xyXG5cclxuICAgICAgICBsZXQgcGFnZVN0YXRlID0gICRzY29wZS5rc20uZ2V0U3RhdGUoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkKVxyXG4gICAgICAgIGxldCBwcmV2X3Rhc2tfZXhlY3V0ZV9pZCA9IHBhZ2VTdGF0ZS5zdGF0ZS5wcmV2aW91c1Rhc2s/LnRhc2tfZXhlY3V0ZV9pZFxyXG4gICAgICAgIGxldCBwcmV2X3BhZ2VfaWQgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnByZXZfcGFnZV9pZFxyXG4gICAgICAgIGxldCBwVGFza0RhdGFSZXRcclxuICAgICAgICAvL3BUYXNrRGF0YVJldCA9IFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UuZ2V0UHJldlRhc2tEYXRhKHByZXZfdGFza19leGVjdXRlX2lkKTtcclxuICAgICAgICBwVGFza0RhdGFSZXQgPSBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLmdldFByZXZSZXNvdXJjZURhdGEocHJldl90YXNrX2V4ZWN1dGVfaWQsJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wcmV2X3BhZ2Vfc3RhdGVfaWQscHJldl9wYWdlX2lkKTtcclxuXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocFRhc2tEYXRhUmV0KSAmJiBwVGFza0RhdGFSZXQubGVuZ3RoPjApXHJcbiAgICAgICAgeyAgICAgIFxyXG4gICAgICAgICAgICAgICAgdmFyIGRhdGFzZXRJZD0wLGRhdGFzZXRSZWNvcmRJZD0wO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaz0wO2s8cFRhc2tEYXRhUmV0Lmxlbmd0aDtrKyspXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICBwVGFza0RhdGEgPSBwVGFza0RhdGFSZXRba107XHJcbiAgICAgICAgICAgICAgICAgICBpZiAocFRhc2tEYXRhIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocFRhc2tEYXRhLkRFSSE9dW5kZWZpbmVkICYmIHBUYXNrRGF0YS5ERUkhPW51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxwVGFza0RhdGEuREVJLmxlbmd0aDtpKyspXHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocFRhc2tEYXRhLkRFSVtpXS5uYW1lPT1saW5rVHlwZSkgfHwgbGlua1R5cGU9PXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwVGFza0RhdGEuREVJW2ldLnZhbHVlIT11bmRlZmluZWQgJiYgcFRhc2tEYXRhLkRFSVtpXS52YWx1ZSE9bnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGo9MDtqPHBUYXNrRGF0YS5ERUlbaV0udmFsdWUubGVuZ3RoO2orKylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBUYXNrRGF0YS5ERUlbaV0udmFsdWVbal0ubmFtZT09XCJyZXNvdXJjZUlkXCIgJiYgcFRhc2tEYXRhLkRFSVtpXS52YWx1ZVtqXS52YWx1ZSE9dW5kZWZpbmVkICYmIHBUYXNrRGF0YS5ERUlbaV0udmFsdWVbal0udmFsdWU9PT0kc2NvcGUuZmQuUmVsYXRlZCkgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzZXRJZD1wVGFza0RhdGEuREVJW2ldLnZhbHVlW2pdLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGs9MDtrPHBUYXNrRGF0YS5ERUlbaV0udmFsdWUubGVuZ3RoO2srKylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwVGFza0RhdGEuREVJW2ldLnZhbHVlW2tdLm5hbWU9PVwicmVzb3VyY2VSZWNvcmRJZFwiICYmIHBUYXNrRGF0YS5ERUlbaV0udmFsdWVba10udmFsdWUhPXVuZGVmaW5lZCAmJiBkYXRhc2V0SWQhPVwiMFwiICYmIGRhdGFzZXRJZCE9XCJcIiAmJiBwVGFza0RhdGEuREVJW2ldLnZhbHVlW2tdLnZhbHVlPjApIGRhdGFzZXRSZWNvcmRJZD1wVGFza0RhdGEuREVJW2ldLnZhbHVlW2tdLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4geydkYXRhc2V0SWQnOmRhdGFzZXRJZCwnZGF0YXNldFJlY29yZElkJzpkYXRhc2V0UmVjb3JkSWR9O1xyXG4gICAgICAgIFxyXG4gICAgfTtcclxuXHJcblxyXG4gICBcclxuIGlmICghJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb24gJiYgJHNjb3BlLmZkLlBvcHVsYXRlTWV0aG9kPT0nQScgJiYgJHNjb3BlLmZkLlBvcHVsYXRlVHlwZS50b1N0cmluZygpLnN1YnN0cigwLDEpPT0nMycpIFxyXG5cclxuICAgIHtcclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnByZXZpb3VzVGFza0RhdGE9JHNjb3BlLmZkLmxvY2FsVmFycy5nZXRQcmV2aW91c1Rhc2tXaWRnZXQoKTtcclxuXHJcbiAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMucHJldmlvdXNUYXNrRGF0YT09PXVuZGVmaW5lZClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5wcmV2aW91c1Rhc2tEYXRhID0ge2RhdGFzZXRSZWNvcmRJZDowLGRhdGFzZXRJZDokc2NvcGUuZmQuUmVsYXRlZH0gXHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1lbHNlIGlmICgkc2NvcGUuZmQuUG9wdWxhdGVUeXBlLnRvU3RyaW5nKCkuc3Vic3RyKDAsMSk9PScyJylcclxuICAgIHtcclxuICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZ2V0VGhpc1Jlc291cmNlV2lkZ2V0KClcclxuICAgIH1cclxuXHJcbiAgICAvLyBQT1BVTkkgTElTVFUgREVGSU5JQ0lKQSBPRCBSRVNVUlNBIChSRVNPVVJDRVMgTElTVClcclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VzID0gZnVuY3Rpb24oKSAge1xyXG5cclxuICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VMaXN0PT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VMaXN0PVtdO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUobGFuZywkc2NvcGUuZmQuUGFyYW1ldGVycy5TZWxlY3RlZFJlc291cmNlVHlwZSkudGhlbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlJlbGF0ZWQhPVwiXCIgJiYgJHNjb3BlLmZkLlJlbGF0ZWQhPXVuZGVmaW5lZCAmJiAkc2NvcGUuZmQuUmVsYXRlZCE9bnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9ICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKCRzY29wZS5mZC5SZWxhdGVkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3M+PTApICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0gPSAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlTGlzdFtwb3NdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuZmQubG9jYWxWYXJzLmdldFB1Ymxpc2hlZFJlc291cmNlcygpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZXRTZWxlY3RlZFJlc291cmNlID0gZnVuY3Rpb24oaWQsc2F2ZWQpICB7XHJcblxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbT09dW5kZWZpbmVkKSAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtPXt9O1xyXG4gICAgICAgICAgICBsZXQgcG9zID0gJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZUxpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoJHNjb3BlLmZkLlJlbGF0ZWQpO1xyXG4gICAgICAgICAgICBpZiAocG9zPj0wICYmICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0uaWQ9PT11bmRlZmluZWQpIFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtID0gJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZUxpc3RbcG9zXVxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmdldFB1Ymxpc2hlZFJlc291cmNlQnlJZChpZCxzYXZlZCk7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmZkLkF1dG9TZWFyY2ggJiYgJHNjb3BlLmZkLlBvcHVsYXRlTWV0aG9kPT0nTScgJiYgISRzY29wZS5mb3JtRGVmaW5pdGlvbiAmJiAhJHNjb3BlLmZkLlBhcmFtZXRlcnMuU2VhcmNoRm9ybURlcGVuZGVuY2llcy5sZW5ndGgpICRzY29wZS5mZC5sb2NhbFZhcnMuR2V0UmVjb3JkKClcclxuXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgIFxyXG5cclxuXHJcbiAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRQdWJsaXNoZWRSZXNvdXJjZUJ5SWQgPSBmdW5jdGlvbihpZCxzYXZlZCl7XHJcbiAgICAgICAgICAgIGxldCBwb3NcclxuICAgICAgICAgICAgbGV0IG9sZF9wdWJsaXNoX2lkID0gJHNjb3BlLmZkLlBhcmFtZXRlcnMuUHVibGlzaGVkUmVzb3VyY2VJZFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmIChzYXZlZCAmJiAkc2NvcGUuZmQuRm9ybURlZilcclxuICAgICAgICAgICAgICB7IFxyXG4gICAgICAgICAgICAgICAgICAgIHBvcyA9ICRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKGlkKTtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvcz49MCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRQdWJsaXNoZWRSZXNvdXJjZSA9ICRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0W3Bvc107XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0ID0gJHNjb3BlLmZkLkZvcm1EZWZcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQ9dHJ1ZVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBvcHVsYXRlTWV0aG9kPT0nTScpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQuc2VhcmNoRm9ybS5sYXlvdXQgPSAkc2NvcGUuZmQuRm9ybURlZlNlYXJjaFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlYXJjaEZvcm1Mb2FkZWQ9dHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICBwb3MgPSAkc2NvcGUuZmQubG9jYWxWYXJzLnB1Ymxpc2hlZFJlc291cmNlTGlzdC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZihpZCk7XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5Gb3JtRGVmPXt9XHJcbiAgICAgICAgICAgICAgICAgIGlmIChwb3M+PTApe1xyXG4gICAgICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLkdldFB1Ymxpc2hlZFJlc291cmNlQnlJZChpZCkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLkZvcm0gPSBkYXRhLmRhdGEuRm9ybVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFB1Ymxpc2hlZFJlc291cmNlID0gJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3RbcG9zXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW1fYyE9PXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZUlkPSRzY29wZS5mZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW1fYy5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZVZlcnNpb249JHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jLlZlcnNpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlJlbGF0ZWQ9JHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jLlJlc291cmNlRGVmVWlkOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZyZXNoRm9ybT1hbmd1bGFyLmNvcHkoJHNjb3BlLmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jLkZvcm0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCA9IGRhdGEuZGF0YS5Gb3JtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuRm9ybURlZiA9ICRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5Gb3JtRGVmU2VhcmNoID0gYW5ndWxhci5jb3B5KCRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXNoYm9hcmQuc2VhcmNoRm9ybS5sYXlvdXQgPSAkc2NvcGUuZmQuRm9ybURlZlNlYXJjaFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWFyY2hGb3JtTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2VhcmNoRm9ybUxvYWRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICBcclxuICAgIH0gICAgXHJcbiAgICBcclxuaWYgKCRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VMaXN0PT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VMaXN0PVtdO1xyXG5pZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3Q9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3Q9W107XHJcbnZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gIFxyXG4gICAgICAgICAgIFxyXG4gIFJlc291cmNlc0RhdGFTZXJ2aWNlLkdldFB1Ymxpc2hlZFJlc291cmNlc0J5VHlwZSgnZGF0YXNldCcsJ2Zvcm0nKS50aGVuKFxyXG4gICAgICAgIGZ1bmN0aW9uIChkYXRhKSB7ICAgICAgIFxyXG4gICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgIC8vZGVidWdnZXIgIC8vR2V0UHVibGlzaGVkUmVzb3VyY2VzQnlUeXBlICAgXHJcbiAgICAgICAgICAgLy8kc2NvcGUuZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCA9IEpTT04ucGFyc2UoZGF0YS5kYXRhWzBdLkZvcm0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZUlkIT1udWxsKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2V0U2VsZWN0ZWRSZXNvdXJjZSgkc2NvcGUuZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZUlkLHRydWUpO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICB9KTtcclxuICAgIFxyXG4gICAgLy9pZiAoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb24pICRzY29wZS5mZC5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VzKCk7XHJcbiAgIFxyXG4gIGlmICgkc2NvcGUuZmQuUmVsYXRlZCE9bnVsbCAmJiAgISRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uICYmICEkc2NvcGUuZmQubG9jYWxWYXJzLnNlYXJjaEZvcm1Eb3dubG9hZGVkKVxyXG4gIHsgXHJcbiAgICAgaWYgKCRzY29wZS5mZC5Qb3B1bGF0ZU1ldGhvZD09J0EnICYmICRzY29wZS5mZC5Qb3B1bGF0ZVR5cGUudG9TdHJpbmcoKS5zdWJzdHIoMCwxKT09JzMnKSAkc2NvcGUuZmQubG9jYWxWYXJzLkdldFJlY29yZEZvclZpZXcoJHNjb3BlLmZkLlJlbGF0ZWQsJHNjb3BlLmZkLmxvY2FsVmFycy5wcmV2aW91c1Rhc2tEYXRhPy5kYXRhc2V0UmVjb3JkSWQpXHJcbiAgIFxyXG4gIH1cclxuXHJcbiAgICAgICBcclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnByb2Nlc3NXaWRnZXREZXBlbmRlbmNpZXMgPSBmdW5jdGlvbigpIHsgLy8tLS0tLSAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICBpZiAoJHNjb3BlLmZkLnRJdGVtVmFsdWUhPXVuZGVmaW5lZCkgXHJcbiAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPCAkc2NvcGUuZmQudEl0ZW1WYWx1ZS5sZW5ndGg7aSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbGlua2VkV2lkZ2V0SWQ9JHNjb3BlLmZkLnRJdGVtVmFsdWVbaV0ud2lkZ2V0SWQ7ICAvLyBsaW5rZWRXaWRnZXRJZD0gV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5nZXRMb2NhbFdpZGdldElkKGxpbmtlZFdpZGdldElkKTsvL01JR09SIC0gbW9yYW0gZG9iaXRpIGxvY2Fsd2lkZ2V0SWQgb2QgdmV6YW5vZyBXaWRnZXRJZCBcclxuICAgICAgICAgICAgICAgIHZhciBsaW5rZWRJdGVtID0gJ3Jlc291cmNlTGluaycgICAgICAgICAgICAgICAgICAgICAgLy92YXIgbGlua2VkSXRlbSA9ICRzY29wZS5mZC50SXRlbVZhbHVlW2ldLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKGxpbmtlZFdpZGdldElkIT11bmRlZmluZWQgJiYgbGlua2VkV2lkZ2V0SWQhPW51bGwgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wO2o8JHNjb3BlLmZkLnRJdGVtVmFsdWVbaV0uREVJLmxlbmd0aDtqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgkc2NvcGUuZmQudEl0ZW1WYWx1ZVtpXS5ERUlbal0ubmFtZT09bGlua2VkSXRlbSkgJiYgKCRzY29wZS5mZC50SXRlbVZhbHVlW2ldLkRFSVtqXS52YWx1ZT09dHJ1ZSkpIHsgLy9TQ09QRS5PTiBzYW1vIGthZCBqZSBERUkgdmFsdWUgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxpbmtlZEl0ZW0gPSAkc2NvcGUuZmQudEl0ZW1WYWx1ZVtpXS5ERUlbal0ubmFtZTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ2aWV3IFwiKyRzY29wZS5mZC5QcmVzZW50YXRpb25JZCtcIiBzZSB2ZXplIG5hIHNlcnZlcnNraSBcIiArIGxpbmtlZFdpZGdldElkKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRvbignRXZlbnQnK2xpbmtlZFdpZGdldElkK2xpbmtlZEl0ZW0sZnVuY3Rpb24oZXZlbnQsIGRhdGEpeyAgLy9pZGUgcG8gc3ZpbSB2ZXphbmltIHdpZGdldGltYSBpIGRvZGFqICRzY29wZS5vbiAgIC8vTUlHT1IgVE9ETyAtIERPREFUSSBTQU1PIFUgU0xVQ0FKVSBEQSBKRSBERUkgVkFMVUUgPSBUUlVFICEhISEgICAgIDw8PDw8PDw8PDw8PDwgISEhISEhISEhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICBjb25zb2xlLmxvZyhcInZpZXcgXCIrICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCtcIiBkb2JpbyBldmVudCBcIiArIGV2ZW50Lm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGs9MDtrPGRhdGEubGVuZ3RoO2srKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFba10ubmFtZT09J3Jlc291cmNlUmVjb3JkSWQnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmxpbmtlZFJlc291cmNlSWQgPSBkYXRhW2tdLnZhbHVlOyAvL1RPRE8gLSBJTEogLSBvdm8gYmkgaXN0byB0cmViYWxhIGJpdGkgdmFyaWphYmxhIC0gc3RhIGFrbyBwcm9tamVuaW0gaW50ZXJmYWNlIG9kbm9zbm8gbmF6aXYgcG9samEhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZCA9ICRzY29wZS5mZC5sb2NhbFZhcnMubGlua2VkUmVzb3VyY2VJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhW2tdLm5hbWU9PSdyZXNvdXJjZUlkJykgJHNjb3BlLmZkLmxvY2FsVmFycy5saW5rZWRSZXNvdXJjZURlZklkID0gZGF0YVtrXS52YWx1ZTsgIC8vVE9ETy0gSUxKIC0gb3ZvIGJpIGlzdG8gdHJlYmFsYSBiaXRpIHZhcmlqYWJsYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9nZXQgc2VsZWN0ZWRSZWNvcmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5HZXRSZWNvcmRGb3JWaWV3KCRzY29wZS5mZC5QYXJlbnREYXRhc2V0RGVmSWQsJHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkKVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9cdGRhdGE6IHtyZXNvdXJjZV9kZWZfaWQ6JHNjb3BlLmZkLmxpbmtlZFJlc291cmNlRGVmSWQscmVzb3VyY2VfaWQ6JHNjb3BlLmZkLmxpbmtlZFJlc291cmNlSWR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSAvL29uX0VORFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9Ly9pZlxyXG4gICAgICAgICAgICAgICAgICAgIH0vL2ZvciBqXHJcbiAgICAgICAgICAgICAgICB9Ly9pZlxyXG5cclxuICAgICAgICAgICAgIC8vIGVsc2UgeyAgJHNjb3BlLmZkLnRJdGVtVmFsdWUuc3BsaWNlKGksMSk7ICB9IC8vIG5pamUgbWkgamFzbm8gemFzdG8gc2FtIHJhZGlvIFNQTElDRVxyXG4gICAgICAgICAgICB9IC8vZm9yIGlcclxuICAgICAgfS8vZm4gIHByMGNlc3NXaWRnZXREZXBlbmRlY2llcyAtLS0tLS0tLS0tLS0tICAgIGt0Vmlld1NpbmdsZVJlc291cmNlV2lkZ2V0XHJcblxyXG4gICAgICAgICAgaWYgKCRzY29wZS5mZC5QcmVzZW50YXRpb25JZD09dW5kZWZpbmVkIHx8ICRzY29wZS5mZC5QcmVzZW50YXRpb25JZD09bnVsbCkgICAgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPTA7XHJcblxyXG4gICAgICAgICAgXHJcblxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAvKlxyXG5cclxuICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5nZXRXaWRnZXREZXBlbmRlbmNpZXMoJHNjb3BlLnRhc2tJZCwkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsJHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtVHlwZSkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQudEl0ZW1WYWx1ZT1kYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5wcm9jZXNzV2lkZ2V0RGVwZW5kZW5jaWVzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAqLyAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLmZkLnZlcmlmeV9ibG9ja2NoYWluX2RhdGEgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldEJsb2NrY2hhaW5EYXRhc2V0UmVjb3Jkcygkc2NvcGUuZmQuUmVsYXRlZCwnZGF0YXNldCcsJ2thdGFseTEuY29kZScsMSwkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlV1aWRSZWZdWzBdLkJDaGFpblJlY0lkLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5VdWlkUmVmXVswXS5mb3JtRGF0YUJsb2NrY2hhaW49IEpTT04ucGFyc2UoZGF0YS5kYXRhLmRhdGEucm93c1swXS5kYXRhc2V0RGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICRzY29wZS5mZC5nZXRfdHJhbnNhY3Rpb24gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldEJsb2NrY2hhaW5UcmFuc2FjdGlvbigkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlV1aWRSZWZdWzBdLlRyeElkLCRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuVXVpZFJlZl1bMF0uQmxvY2tJZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxldCByZXRfdmFsID0geydibG9ja19udW0nOmRhdGEuZGF0YS5ibG9ja19udW0sJ2Jsb2NrX3RpbWUnOmRhdGEuZGF0YS5ibG9ja19udW0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAnaWQnOmRhdGEuZGF0YS5pZCwndHJhY2VzJzpkYXRhLmRhdGEudHJhY2VzLCd0cngnOmRhdGEuZGF0YS50cnh9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXRfdmFsID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5CbG9ja0NoYWluVHJhbnNhY3Rpb24gPSBKU09OLnN0cmluZ2lmeShyZXRfdmFsLG51bGwsMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnNob3dUcmFuc2FjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgIFxyXG4gICAgXHJcbiAgICAgICAgICAgIGxldCB0ZW1wbGF0ZTtcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGVmaW5pdGlvbikgdGVtcGxhdGUgPSAkdGVtcGxhdGVDYWNoZS5nZXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza1ZpZXdSZXNvdXJjZS5odG1sJyk7XHJcbiAgICAgICAgICAgIGVsc2UgdGVtcGxhdGUgPSAkdGVtcGxhdGVDYWNoZS5nZXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza1ZpZXdSZXNvdXJjZUV4ZS5odG1sJyk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgJGVsZW1lbnQuYXBwZW5kKCRjb21waWxlKHRlbXBsYXRlKSgkc2NvcGUpKTsgXHJcblxyXG4gICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnNldEZpZWxkKCRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0LFwiUmVhZE9ubHlcIix0cnVlKVxyXG5cclxuICBcclxuICAgICAgfV07XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNvbnRyb2xsZXI6IGNvbnRyb2xsZXIsXHJcbiAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcclxuXHJcbiAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgIH0gICAgIFxyXG4gIH1cclxuICBcclxufTtcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGt0VGFza1dpZGdldCAoJHRpbWVvdXQpIHtcbiAgICAgICAgICAgICB2YXIgY29udHJvbGxlciA9IFsnJHNjb3BlJywgJyRzdGF0ZVBhcmFtcycsJyRzdGF0ZScsJyRyb290U2NvcGUnLCdHcmlkc3RlclNlcnZpY2UnLCckdGVtcGxhdGVDYWNoZScsJyRjb21waWxlJywnJGVsZW1lbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkc2NvcGUsJHN0YXRlUGFyYW1zLCRzdGF0ZSwkcm9vdFNjb3BlLEdyaWRzdGVyU2VydmljZSwkdGVtcGxhdGVDYWNoZSwkY29tcGlsZSwkZWxlbWVudCkge1xuXG4gICAgICAgICAgICAgXG4gICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnM9PXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycz17fTtcbiAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkPT11bmRlZmluZWQpICRzY29wZS5mZD17fTtcbiAgICAgICAgICAgICBpZiAoJHNjb3BlLnRhc2tEZWZpbml0aW9uPT11bmRlZmluZWQpICRzY29wZS50YXNrRGVmaW5pdGlvbj17fTtcbiAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnRhc2tJZCA9ICRzY29wZS50YXNrSWQ7XG4gICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMucHJldmlvdXNUYXNrPT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnMucHJldmlvdXNUYXNrID0gMDtcbiAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5vdXRjb21lSWQ9PXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycy5vdXRjb21lSWQgPSAwO1xuICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMubG9hZFRhc2tEaXJlY3QgPSB0cnVlO1xuICAgICAgICAgICAgIFxuICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5SZWxvYWRUYXNrPWZhbHNlO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAgJHNjb3BlLmdzcnZjPUdyaWRzdGVyU2VydmljZTtcbiAgICAgICAgICAgICAkc2NvcGUub3BlbmVkVGFza0luTmV3UGFnZT17bG9jYWxWYXJzOntwYWdlX3N0YXRlX2lkOiRzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZV9pZH0sdGFza0RlZmluaXRpb246bnVsbH07XG5cbiAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0T3BlblRhc2tUeXBlKFwiY3VycmVudFwiKTtcbiAgIFxuICAgICAgICAgICAgICRzY29wZS5vcGVuVGFza0luTmV3UGFnZT1mdW5jdGlvbigpe1xuICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm9wZW5lZFRhc2tJbk5ld1BhZ2UgPSAkc2NvcGUuZ3NydmMuZ2V0VGFza0RhdGFJbk5ld1BhZ2UoKTtcbiAgICAgICAgICAgXG4gICAgICAgIFxuICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgbGV0IHRlbXBsYXRlO1xuICAgICAgICAgICAgIHRlbXBsYXRlID0gJHRlbXBsYXRlQ2FjaGUuZ2V0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tXaWRnZXQuaHRtbCcpO1xuICAgICAgICAgICAgIFxuICAgICAgICAgIFxuICAgICAgICAgICAgICRlbGVtZW50LmFwcGVuZCgkY29tcGlsZSh0ZW1wbGF0ZSkoJHNjb3BlKSk7XG5cbiAgICAgICAgICB9XTtcbiAgICAgICAgICBcbiAgICAgICAgICBcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXG4gICAgICAgICAgICBjb250cm9sbGVyOmNvbnRyb2xsZXIsXG4gICAgICAgICAgICBzY29wZTp7XG4gICAgICAgICAgICAgdGFza0lkOiAnPScsXG4gICAgICAgICAgICAgZmQ6ICc9JyxcbiAgICAgICAgICAgICBsb2NhbFZhcnM6ICc9PycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcbiAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgc2NvcGUuJG9uKCdSZWZyZXNoVGFzaycrc2NvcGUubG9jYWxWYXJzLnRhc2tJZCxmdW5jdGlvbihldmVudCxkYXRhKXtcblxuICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmxvY2FsVmFycy5SZWxvYWRUYXNrPXRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXsgc2NvcGUubG9jYWxWYXJzLlJlbG9hZFRhc2s9ZmFsc2U7fSlcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICB9XG4gICAgICAgIH0gICAgICAgICAgICAgXG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0VGV4dGJveCAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24gKCRzY29wZSwkcm9vdFNjb3BlLEdyaWRzdGVyU2VydmljZSxLYXRhbHlvU3RhdGVNYW5hZ2VyLENvZGVzU2VydmljZSwkdGVtcGxhdGVDYWNoZSwkY29tcGlsZSwkZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzPT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnM9e307XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzPXt9O1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlWyRzY29wZS5mZC5pZF0gID0geydmZCc6ICRzY29wZS5mZCwgJ2xvY2FsdmFycyc6JHNjb3BlLmZkLmxvY2FsVmFyc31cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93QmFzaWMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93U2l6ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dTdHlsZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dHZW5lcmFsID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2hvd0FkdmFuY2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5teXNjb3BlID0gJHNjb3BlXHQgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2U7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUudG9nZ2xlTWUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmtzbSA9IEthdGFseW9TdGF0ZU1hbmFnZXI7XHJcbiAgICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuXHRcdFx0XHRcclxuXHJcblx0XHRcdFx0XHJcbiAgICAgICAgICAgICAgICBDb2Rlc1NlcnZpY2UuZ2V0Q29kZXNCeU5hbWUoJ3VzZXJ0YWdzJyxsYW5nKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlciAvLyBDb2Rlc1NlcnZpY2UuZ2V0Q29kZXNCeU5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnRhZ0xpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9ICRzY29wZS5mZC50YWdMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKCRzY29wZS5mZC5VbmlxdWVJZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zPj0wKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5VbmlxdWVJZE9iaj0kc2NvcGUuZmQudGFnTGlzdFtwb3NdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnNlYXJjaEZpbHRlcj17fTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5zZWFyY2hGaWx0ZXJbJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zZWFyY2g9W1xyXG4gICAgICAgICAgICAgICAgICAgIHtpZDoxLGZpbHRlcjonYmVnaW5zJyxjb2RlX25hbWU6J2JlZ2lucycsbmFtZTpcIkJlZ2lucyB3aXRoXCIsaWNvbjpcImZhIGZhLWNoZXZyb24tcmlnaHRcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAge2lkOjIsZmlsdGVyOidjb250YWlucycsY29kZV9uYW1lOidjb250YWlucycsbmFtZTpcIkNvbnRhaW5zXCIsaWNvbjpcImZhIGZhLWV4cGFuZFwifSxcclxuICAgICAgICAgICAgICAgICAgICB7aWQ6MyxmaWx0ZXI6J2VuZHMnLGNvZGVfbmFtZTonZW5kcycsbmFtZTpcIkVuZHMgd2l0aFwiLGljb246XCJmYSBmYS1jaGV2cm9uLWxlZnRcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAge2lkOjQsZmlsdGVyOidlcScsY29kZV9uYW1lOidlcScsbmFtZTpcIkVxdWFsc1wiLGljb246XCJmYSBmYS1iYXJzXCJ9IF07XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucHJvY2Vzc0ZpbHRlcnMgPSBmdW5jdGlvbihmaWx0ZXJMaXN0KVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGk9MDtpPCAkc2NvcGVbJHNjb3BlLmZkLmlkXVsnZmQnXS5sb2NhbFZhcnMuc2VhcmNoLmxlbmd0aDtpKyspXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcG9zID0gZmlsdGVyTGlzdC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZiggJHNjb3BlWyRzY29wZS5mZC5pZF1bJ2ZkJ10ubG9jYWxWYXJzLnNlYXJjaFtpXS5jb2RlX25hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zPj0wKSAgJHNjb3BlWyRzY29wZS5mZC5pZF1bJ2ZkJ10ubG9jYWxWYXJzLnNlYXJjaFtpXS5uYW1lID0gZmlsdGVyTGlzdFtwb3NdLm5hbWVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlNlYXJjaD09PXVuZGVmaW5lZCB8fCAkc2NvcGUuZmQuU2VhcmNoPT09bnVsbCkgICAkc2NvcGUuZmQuU2VhcmNoPSAkc2NvcGVbJHNjb3BlLmZkLmlkXVsnZmQnXS5sb2NhbFZhcnMuc2VhcmNoWzFdOy8vaW5pdGlhbGl6ZSB0byBlcXVhbHNcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlNlYXJjaCkgICRzY29wZS5mZC5TZWFyY2guVmFsdWU9JHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdOyBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlWyRzY29wZS5mZC5pZF1bJ2ZkJ10ubG9jYWxWYXJzLmZpbHRlclJlYWR5PXRydWVcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnNob3dTZWFyY2hGaWx0ZXJzIHx8ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIENvZGVzU2VydmljZS5nZXRDb2Rlc0J5TmFtZSgnc2VhcmNoX2ZpbHRlcnMnLGxhbmcpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLmZkLmxvY2FsVmFycy5wcm9jZXNzRmlsdGVycyhkYXRhLmRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZVskc2NvcGUuZmQuaWRdWydmZCddLmxvY2FsVmFycy5wcm9jZXNzRmlsdGVycyhkYXRhLmRhdGEpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRzY29wZS5mZC5sb2NhbFZhcnMgPSAkc2NvcGVbJHNjb3BlLmZkLmlkXVsnZmQnXS5sb2NhbFZhcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdnZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycz09dW5kZWZpbmVkKSAkc2NvcGUuZmQuUGFyYW1ldGVycz17fTtcclxuICAgICAgICAgICAgICAgIGxldCB0ZXh0VmFsdWUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRzY29wZS5mb3JtRGF0YS5sZW5ndGgpICRzY29wZS5mb3JtRGF0YT1be31dO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0VmFsdWU9JHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfWVsc2UgJHNjb3BlLmZvcm1EYXRhPVt7fV07XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGxldCBwYXJlbnRXaWRnZXRVaWQgPSAnJ1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucGFyZW50V2lkZ2V0IT11bmRlZmluZWQpIHBhcmVudFdpZGdldFVpZCA9ICRzY29wZS5wYXJlbnRXaWRnZXQrJy0nXHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHRleHRWYWx1ZVN0YXRlPSAkc2NvcGUua3NtLmFkZFN1YmplY3QoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkKyctJytwYXJlbnRXaWRnZXRVaWQrJHNjb3BlLmZkLlV1aWRSZWYsdGV4dFZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGxldCB0ZXh0VmFsdWVTdGF0ZU5hbWUgPSB0ZXh0VmFsdWVTdGF0ZS5zdWJqZWN0Lm5hbWU7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlX2NoYW5nZWQgPSBmdW5jdGlvbihkYXRhKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHRleHRWYWx1ZVN0YXRlLnN1YmplY3Quc2V0U3RhdGVDaGFuZ2VzID0gZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0VmFsdWVTdGF0ZS5zdWJqZWN0Lm5vdGlmeU9ic2VydmVycyhcInZhbHVlQ2hhbmdlZFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlZnJlc2hTZWFyY2hWYWx1ZSgpO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IGFjdGlvbl92YWx1ZV9jaGFuZ2VkID0gJHNjb3BlLmtzbS5hZGRBY3Rpb24odGV4dFZhbHVlU3RhdGVOYW1lLFwidmFsdWVDaGFuZ2VkXCIsdmFsdWVfY2hhbmdlZCk7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLm9uX2JsdXJfYWN0aW9uPWZ1bmN0aW9uKClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbih0ZXh0VmFsdWVTdGF0ZU5hbWUsXCJ2YWx1ZUNoYW5nZWRcIiwgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuZmQuRGVmYXVsdFZhbHVlID0gJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IGFwcGx5X3ZhbHVlID0gZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSE9dW5kZWZpbmVkKSAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0gPSBkYXRhO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZD8uUGFyYW1ldGVycz8uRGVwZW5kZW50RmllbGRJZCE9dW5kZWZpbmVkICYmICRzY29wZS5mZD8uUGFyYW1ldGVycz8uRGVwZW5kZW50RmllbGRJZCE9bnVsbCkgICBcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMuRGVwZW5kZW50RmllbGRJZCE9XCJcIilcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkZXBlbmRlbnRfZmllbGQgPSBcIkZpZWxkXCIrJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQrJy0nKyRzY29wZS5mZC5QYXJhbWV0ZXJzLkRlcGVuZGVudEZpZWxkVHlwZStcIlZhbHVlU3RhdGVOYW1lXCIrJHNjb3BlLmZkLlBhcmFtZXRlcnMuRGVwZW5kZW50RmllbGRJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9ic2VydmVyID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3QsZGVwZW5kZW50X2ZpZWxkLFwidmFsdWVDaGFuZ2VkXCIsYXBwbHlfdmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3RhdGUgPSAkc2NvcGUua3NtLmdldFN0YXRlKHN1YnNjcmliZWRTdWJqZWN0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLnN0YXR1cz09XCJva1wiKSAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0gPSBzdGF0ZS5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucmVmcmVzaFNlYXJjaFZhbHVlID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5TZWFyY2gpICRzY29wZS5mZC5TZWFyY2guVmFsdWU9JHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdOyAgICAgIFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLlNldERlZmF1bHQgPSBmdW5jdGlvbigpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLkRlZmF1bHRWYWx1ZSA9IHt2YWx1ZTokc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV19O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQub25TZWxlY3RVbmlxdWUgPSBmdW5jdGlvbihpdGVtLG1vZGVsKVxyXG4gICAgICAgICAgICAgICAgeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuVW5pcXVlSWQ9aXRlbS5pZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgdGVtcGxhdGU7XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb24pICB0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZUNhY2hlLmdldCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUZXh0Ym94Lmh0bWwnKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgdGVtcGxhdGUgPSAkdGVtcGxhdGVDYWNoZS5nZXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGV4dGJveEV4ZS5odG1sJyk7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkZWxlbWVudC5hcHBlbmQoJGNvbXBpbGUodGVtcGxhdGUpKCRzY29wZSkpOyAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICh0ZXh0VmFsdWVTdGF0ZS5zdWJqZWN0LmN1cnJlbnRTdGF0ZUluZGV4Pj0wICYmICRzY29wZS5mZC5QYXJhbWV0ZXJzLkxvYWRGcm9tU3RhdGUpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSA9IHRleHRWYWx1ZVN0YXRlLnN1YmplY3QuZ2V0U3RhdGU7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdIT11bmRlZmluZWQpICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbih0ZXh0VmFsdWVTdGF0ZU5hbWUsXCJ2YWx1ZUNoYW5nZWRcIiwgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgXHJcbiAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgc2NvcGUuYXBwbHlUZXh0RmlsdGVycyA9IGZ1bmN0aW9uKGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuU2VhcmNoPXNjb3BlLmZkLmxvY2FsVmFycy5zZWFyY2hbaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5TZWFyY2ggJiYgc2NvcGUuZm9ybURhdGEhPXVuZGVmaW5lZCAmJiBzY29wZS5mb3JtRGF0YS5sZW5ndGg+MCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuU2VhcmNoLlZhbHVlPXNjb3BlLmZvcm1EYXRhWzBdW3Njb3BlLmZkLkZpZWxkTmFtZV07IFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuU2VhcmNoLlZhbHVlPT11bmRlZmluZWQpIHNjb3BlLmZkLlNlYXJjaC5WYWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBzY29wZS5zaG93UHJvcGVydGllcyA9IGZ1bmN0aW9uKGV2ZW50KSB7XHJcblx0XHRcdFx0XHRzY29wZS5nc3J2Yy5zZXRGaWVsZFByb3BlcnRpZXMoc2NvcGUuZmQsIHNjb3BlLmlucHV0QXJyYXkpOyAvL2lucHV0QXJyYXkgaXMgZmlyc3QgcGFyZW50IG9mIHRoZSBlbGVtZW50XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5VcGRhdGVXaXRoRGVmYXVsdCAmJiAhc2NvcGUuZmQuTm9VcGRhdGUpIHNjb3BlLmZvcm1EYXRhWzBdW3Njb3BlLmZkLkZpZWxkTmFtZV0gPSBzY29wZS5mZC5EZWZhdWx0VmFsdWU/LnZhbHVlXHJcblxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbn07XG4ndXNlIHN0cmljdCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3RUaW1lICgpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uICgkc2NvcGUsR3JpZHN0ZXJTZXJ2aWNlLEthdGFseW9TdGF0ZU1hbmFnZXIsJHRlbXBsYXRlQ2FjaGUsJGVsZW1lbnQsJGNvbXBpbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2YyA9IEdyaWRzdGVyU2VydmljZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zaG93UHJvcGVydGllcyA9IGZ1bmN0aW9uKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuZ3NydmMuc2V0RmllbGRQcm9wZXJ0aWVzKCRzY29wZS5mZCk7XHJcblx0XHRcdFx0XHRcdFx0ICRzY29wZS5nc3J2Yy5zZXRGaWVsZFByb3BlcnRpZXMoJHNjb3BlLmZkLCAkc2NvcGUuaW5wdXRBcnJheSk7XHJcblx0XHRcdFx0XHRcdFx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcGxhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fZGVmaW5pdGlvbikgIHRlbXBsYXRlID0gJHRlbXBsYXRlQ2FjaGUuZ2V0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRpbWUuaHRtbCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHRlbXBsYXRlID0gJHRlbXBsYXRlQ2FjaGUuZ2V0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRpbWVFeGUuaHRtbCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICRlbGVtZW50LmFwcGVuZCgkY29tcGlsZSh0ZW1wbGF0ZSkoJHNjb3BlKSk7ICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycyxuZ01vZGVsQ29udHJvbGxlcikge1xyXG5cdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZm9ybURhdGE9PT11bmRlZmluZWQpIHNjb3BlLmZvcm1EYXRhID0gW3snRmllbGQnOjB9XTtcclxuICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZvcm1QYXJhbXM9PT11bmRlZmluZWQpIHNjb3BlLmZvcm1QYXJhbXMgPSB7Zm9ybVZpZXdUeXBlOjF9O1xyXG4gICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZm9ybVBhcmFtc1BhcmVudD09PXVuZGVmaW5lZCkgc2NvcGUuZm9ybVBhcmFtc1BhcmVudCA9IHtmb3JtVmlld1R5cGU6MX07XHJcbiAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5MYWJlbExlbmd0aCA9PT0gdW5kZWZpbmVkKSBzY29wZS5mZC5sYWJlbExlbmd0aD0gMTQ7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5sb2NhbFZhcnM9PT11bmRlZmluZWQpIHNjb3BlLmZkLmxvY2FsVmFycz17fVxyXG4gICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuUGFyYW1ldGVyc0xhbmc9PT11bmRlZmluZWQpIHNjb3BlLmZkLlBhcmFtZXRlcnNMYW5nPXtmb3JtYXQxOidISDptbSd9O1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLnRpbWVGb3JtYXRMaXN0ID0gW3tpZDoxLG5hbWU6J0hIOm1tJyxtYXNrOic5OTo5OSd9LHtpZDoyLG5hbWU6J0hIOm1tOnNzJyxtYXNrOic5OTo5OTo5OSd9LHtpZDozLG5hbWU6J0hIOm1tJ30se2lkOjQsbmFtZTonSEg6bW06c3M6c3NzJ31dO1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLlBhcmFtZXRlcnNMYW5nIT11bmRlZmluZWQgJiYgc2NvcGUuZmQuUGFyYW1ldGVyc0xhbmchPW51bGwpXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgcG9zRm9ybWF0VGltZSA9IHNjb3BlLmZkLnRpbWVGb3JtYXRMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLm5hbWUudG9TdHJpbmcoKTsgfSkuaW5kZXhPZihzY29wZS5mZC5QYXJhbWV0ZXJzTGFuZy5mb3JtYXQxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3NGb3JtYXRUaW1lPj0wKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5QYXJhbWV0ZXJzTGFuZy5mb3JtYXQxPXNjb3BlLmZkLnRpbWVGb3JtYXRMaXN0W3Bvc0Zvcm1hdFRpbWVdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5mb3JtYXQgPSBzY29wZS5mZC5QYXJhbWV0ZXJzTGFuZy5mb3JtYXQxICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgIH0gIGVsc2Ugc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1hdCA9IHNjb3BlLmZkLnRpbWVGb3JtYXRMaXN0WzBdXHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICBzY29wZS5zZWFyY2g9WyAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB7aWQ6MSxmaWx0ZXI6J2d0JyxuYW1lOlwiRnJvbSA8dGltZT5cIixpY29uOlwiZmEgZmEtY2hldnJvbi1yaWdodFwifSxcclxuICAgICAgICAgICAgICAgIHtpZDoyLGZpbHRlcjonbHQnLG5hbWU6XCJUbyA8dGltZT5cIixpY29uOlwiZmEgZmEtY2hldnJvbi1sZWZ0XCJ9LFxyXG4gICAgICAgICAgICAgICAge2lkOjMsZmlsdGVyOidlcScsbmFtZTpcIk9uIDx0aW1lPlwiLGljb246XCJmYSBmYS1iYXJzXCJ9LCAgICAgIFxyXG4gICAgICAgICAgICAgICAge2lkOjQsZmlsdGVyOidiZXR3ZWVuJyxuYW1lOlwiQmV0d2VlbiA8dGltZTE+IGFuZCA8dGltZTI+XCIsaWNvbjpcImZhIGZhLWV4cGFuZFwifSBdO1xyXG4gXHJcbiAgICBcclxuIFxyXG4gICAgICAgICAgICAgICAgaWYgKHNjb3BlLnNob3dTZWFyY2hGaWx0ZXJzKSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuU2VhcmNoPT09dW5kZWZpbmVkIHx8IHNjb3BlLmZkLlNlYXJjaD09PW51bGwpICAgc2NvcGUuZmQuU2VhcmNoPXNjb3BlLnNlYXJjaFsyXTsvL2luaXRpYWxpemUgdG8gZXF1YWxzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5TZWFyY2gpICBzY29wZS5mZC5TZWFyY2gudmFsdWU9c2NvcGUuZm9ybURhdGFbMF1bc2NvcGUuZmQuRmllbGROYW1lXTsgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBzY29wZS5DVFJMPSdrdFRpbWUnO1xyXG5cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIHNjb3BlLnJlZnJlc2hTZWFyY2hWYWx1ZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuU2VhcmNoICYmIHNjb3BlLmZvcm1EYXRhIT11bmRlZmluZWQgJiYgc2NvcGUuZm9ybURhdGEubGVuZ3RoPjApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuU2VhcmNoLnZhbHVlPXNjb3BlLmZvcm1EYXRhWzBdW3Njb3BlLmZkLkZpZWxkTmFtZV07IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICBcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBzY29wZS5hcHBseVRpbWVGaWx0ZXJzID0gZnVuY3Rpb24oaW5kZXgpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLlNlYXJjaCA9IHNjb3BlLnNlYXJjaFtpbmRleF1cclxuICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLlNlYXJjaCAmJiBzY29wZS5mb3JtRGF0YSE9dW5kZWZpbmVkICYmIHNjb3BlLmZvcm1EYXRhLmxlbmd0aD4wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5TZWFyY2gudmFsdWU9c2NvcGUuZm9ybURhdGFbMF1bc2NvcGUuZmQuRmllbGROYW1lXTsgXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLlNlYXJjaC5WYWx1ZT09dW5kZWZpbmVkKSBzY29wZS5mZC5TZWFyY2guVmFsdWUgPSBcIlwiO1xyXG5cclxuICAgICAgICAgICAgICAgICAgdmFyIGk9c2NvcGUuc2VhcmNoW2luZGV4XS5pZDsgXHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuc2VhcmNoW2luZGV4XS5pZD09NCkgc2NvcGUuc2VhcmNoLnNob3dTZWNvbmRUaW1lPXRydWUgIFxyXG4gICAgICAgICAgICAgICAgICBlbHNlICBzY29wZS5zZWFyY2guc2hvd1NlY29uZFRpbWU9ZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cclxuICAgfVxyXG5cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0VGltZVBhcnNlciAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlOiduZ01vZGVsJyxcclxuICAgICAgIFxyXG4gICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMsbmdNb2RlbENvbnRyb2xsZXIpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBmb3JtYXRJbnB1dFRpbWUodmFsdWUpe1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1vZGVsX3ZhbHVlXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PVwic3RyaW5nXCIpIG1vZGVsX3ZhbHVlID0gbmV3IERhdGUodmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgbW9kZWxfdmFsdWUgPSB2YWx1ZVxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtb2RlbF92YWx1ZVxyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgbmdNb2RlbENvbnRyb2xsZXIuJGZvcm1hdHRlcnMucHVzaChmb3JtYXRJbnB1dFRpbWUpXHJcblxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcblxyXG4gICB9XHJcblxyXG5cclxufVxyXG5cbid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdFRvb2xib3ggKCkge1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxyXG4gICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRvb2xib3guaHRtbCcsXHJcbiAgICAgICAgICAgICAvKiBzY29wZTp7XHJcbiAgICAgICAgICAgICAgICBcdCBmb3JtIDogJz0nLFxyXG4gICAgICAgICAgICB9LCovXHJcbiAgICAgICAgICAgICBjb250cm9sbGVyOiBbJyRzY29wZScsJ2RyYWd1bGFTZXJ2aWNlJywnJHJvb3RTY29wZScsJ0dyaWRzdGVyU2VydmljZScsJ0thdGFseW9TdGF0ZU1hbmFnZXInLFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uKCRzY29wZSxkcmFndWxhU2VydmljZSwkcm9vdFNjb3BlLEdyaWRzdGVyU2VydmljZSxLYXRhbHlvU3RhdGVNYW5hZ2VyKXtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2U7ICAgICAgXHJcbiAgICAgICAgICAgICAgICB2YXIgd2lkZ2V0SGFuZGxlID0gJ2VsZW1lbnQtZHJhZy1oYW5kbGUnO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmNvbGxhcHNlZD17fTtcclxuICAgICAgICAgICAgICAgIHZhciBzZXR1cERyYWd1bGEgPSAkc2NvcGUuZ3NydmMuc2V0dXBEcmFndWxhKCdiYWctJyskc2NvcGUuZ3JpZHN0ZXJUeXBlLCdyZXNvdXJjZS10b29sYm94Jyx3aWRnZXRIYW5kbGUpO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnRvb2xib3hJdGVtcz0gJHNjb3BlLmdzcnZjLmdldFdpZGdldFRvb2xib3hJdGVtcygkc2NvcGUuZ3JpZHN0ZXJUeXBlKTtcclxuICAgICAgICAgICAgICAgICAvL3JlZ2lzdGVyIHRvIHN0YXRlIG1hbmFnZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmtzbSA9IEthdGFseW9TdGF0ZU1hbmFnZXI7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdG9vbGJveF9sb2FkZWQgPSBmdW5jdGlvbihkYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VUb29sYm94TG9hZGVkKGRhdGEuc3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0b29sYm94X3JlbG9hZCA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VUb29sYm94TG9hZGVkKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRvb2xib3hTdGF0ZT0gJHNjb3BlLmtzbS5hZGRTdWJqZWN0KCRzY29wZS5ncmlkc3RlclR5cGUrXCJUb29sQm94XCIsbnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0b29sYm94U3RhdGVOYW1lID0gdG9vbGJveFN0YXRlLnN1YmplY3QubmFtZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhY3Rpb25fdG9vbGJveF9sb2FkZWQgPSAkc2NvcGUua3NtLmFkZEFjdGlvbih0b29sYm94U3RhdGVOYW1lLFwidG9vbGJveExvYWRlZFwiLHRvb2xib3hfbG9hZGVkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhY3Rpb25fdG9vbGJveF9yZWxvYWQgPSAkc2NvcGUua3NtLmFkZEFjdGlvbih0b29sYm94U3RhdGVOYW1lLFwidG9vbGJveFJlbG9hZFwiLHRvb2xib3hfcmVsb2FkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZXRDb2xsYXBzZT1mdW5jdGlvbih2YWx1ZSxlbGVtZW50X3R5cGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRfdHlwZT09XCJ0b29sYm94Z3JvdXBcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmNvbGxhcHNlZFt2YWx1ZV09PT11bmRlZmluZWQpICRzY29wZS5jb2xsYXBzZWRbdmFsdWVdID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuY29sbGFwc2VkW3ZhbHVlXSkgJHNjb3BlLmNvbGxhcHNlZFt2YWx1ZV0gPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlICRzY29wZS5jb2xsYXBzZWRbdmFsdWVdID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZVRvb2xib3hMb2FkZWQ9ZnVuY3Rpb24odmFsdWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuZGVzdHJveURyYWd1bGEoJ2JhZy0nKyRzY29wZS5ncmlkc3RlclR5cGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudG9vbGJveEl0ZW1zPSAkc2NvcGUuZ3NydmMuZ2V0V2lkZ2V0VG9vbGJveEl0ZW1zKCRzY29wZS5ncmlkc3RlclR5cGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgfV0sXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XG4ndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBrdFRyZWVWaWV3ICgpIHtcbiAgIFxuICAgIHZhciBjb250cm9sbGVyID0gWyckc2NvcGUnLCAnJHVpYk1vZGFsJywgJyRzdGF0ZVBhcmFtcycsJyRzdGF0ZScsJyR0aW1lb3V0JywnQ29kZXNTZXJ2aWNlJywnUmVzb3VyY2VzRGF0YVNlcnZpY2UnLCckcm9vdFNjb3BlJywnQ09ERVNfQ09OU1QnLCdQcm9jZXNzaW5nU2VydmljZScsJ01lc3NhZ2luZ1NlcnZpY2UnLCdHcmlkc3RlclNlcnZpY2UnLCdUYXNrRGF0YVNlcnZpY2UnLCdXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlJyxcbiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkc2NvcGUsJHVpYk1vZGFsLCRzdGF0ZVBhcmFtcywkc3RhdGUsJHRpbWVvdXQsQ29kZXNTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLCRyb290U2NvcGUsQ09ERVNfQ09OU1QsUHJvY2Vzc2luZ1NlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxHcmlkc3RlclNlcnZpY2UsVGFza0RhdGFTZXJ2aWNlLFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UpIHtcbiAgICAgXG4gICAgXG4gICAgJHNjb3BlLmxvY2FsVmFycz17fTtcbiAgICAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPTA7XG4gICAgJHNjb3BlLmxvY2FsVmFycy5zcmNfdHlwZV90ZXh0PUNPREVTX0NPTlNULl9QT1BVTEFURV9UWVBFXzsgXG4gICAgJHNjb3BlLmxvY2FsVmFycy5zZWFyY2hGb3JtRG93bmxvYWRlZCA9IGZhbHNlO1xuICAgICRzY29wZS5sb2NhbFZhcnMuc2hvd1NlYXJjaEZpbHRlcnM9dHJ1ZTtcbiAgICAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkZWQgPSB0cnVlO1xuICAgICRzY29wZS50YXNrSWQ9JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZURlZklkO1xuICAgIGlmICgkc2NvcGUudGFza0lkPT11bmRlZmluZWQpICAkc2NvcGUudGFza0lkPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VEZWZJZF9pZDtcbiAgICBpZiAoJHNjb3BlLnRhc2tJZD09dW5kZWZpbmVkKSAkc2NvcGUudGFza0lkPTBcbiAgICAkc2NvcGUubG9jYWxWYXJzLnRhc2tJZD0kc2NvcGUudGFza0lkO1xuICAgICRzY29wZS5sb2NhbFZhcnMud2lkZ2V0VHlwZSA9IDQ7XG4gICAgXG4gICAgJHNjb3BlLmxvY2FsVmFycy5wYXJlbnREYXRhc2V0RGVmSWQ9JHNjb3BlLmZkLlJlbGF0ZWQ7XG4gICAgJHNjb3BlLmxvY2FsVmFycy5hbmltYXRpb25zRW5hYmxlZCA9IHRydWU7XG5cdCAgXG4gICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkc3RlclR5cGU9XCJyZXNvdXJjZVwiO1xuICAgICAgICAgIFxuXG4gICAgJHNjb3BlLmxvY2FsVmFycy5kYXNoYm9hcmQgPSB7XG4gIFx0XHRcdFx0aWQ6ICcxJyxcbiAgXHRcdFx0XHRuYW1lOiAnSG9tZScsXG4gIFx0XHRcdFx0d2lkZ2V0czogR3JpZHN0ZXJTZXJ2aWNlLmdldEVtcHR5RGF0YXNldEZvcm0oKVxuXHRcdFx0XHR9IDtcbiAgICAgICAgXG4gICAgICAgIFxuICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEgPSB7XG4gICAgICAgIGVuYWJsZUdyaWRNZW51OiB0cnVlLFxuICAgICAgICBzaG93R3JpZEZvb3RlcjogdHJ1ZSxcbiAgICAgICAgc2hvd0NvbHVtbkZvb3RlcjogdHJ1ZSxcbiAgICAgICAgZW5hYmxlUm93U2VsZWN0aW9uOiB0cnVlLFxuICAgICAgICBtdWx0aVNlbGVjdDogJHNjb3BlLmZkLk11bHRpbGluZSxcbiAgICAgICAgZW5hYmxlRmlsdGVyaW5nOiB0cnVlLFxuICAgICAgICBlbmFibGVSb3dIZWFkZXJTZWxlY3Rpb246IHRydWUsXG4gICAgICAgIGVuYWJsZUNvbHVtblJlc2l6aW5nOiB0cnVlLFxuICAgICAgICBlbmFibGVDb2x1bW5SZW9yZGVyaW5nOiB0cnVlLFxuICAgICAgICB1c2VFeHRlcm5hbFBhZ2luYXRpb246IHRydWUsXG4gICAgICAgIHBhZ2luYXRpb25QYWdlU2l6ZXM6IFsxMCwgMjUsIDUwLDEwMCwyMDAsNTAwLDEwMDBdLFxuICAgICAgICBlbmFibGVQYWdpbmF0aW9uQ29udHJvbHM6IGZhbHNlLFxuICAgICAgfTtcblxuICB2YXIgcGFnaW5hdGlvbk9wdGlvbnMgPSB7XG4gICAgcGFnZU51bWJlcjogMSxcbiAgICBwYWdlU2l6ZTogMTAsXG4gICAgc29ydDogbnVsbFxuICAgIH07XG4gICAgXG4gICAgXG4gICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1JlbGF0ZWQgPSB7XG4gICAgICAvLyAgY29sdW1uRGVmczogY29sRGVmcyxcbiAgICAgICBlbmFibGVHcmlkTWVudTogdHJ1ZSxcbiAgICAgICBzaG93R3JpZEZvb3RlcjogdHJ1ZSxcbiAgICAgICBzaG93Q29sdW1uRm9vdGVyOiB0cnVlLFxuICAgICAgIGVuYWJsZVJvd1NlbGVjdGlvbjogZmFsc2UsXG4gICAgICAgbXVsdGlTZWxlY3Q6IGZhbHNlLFxuICAgICAgIGVuYWJsZUhvcml6b250YWxTY3JvbGxiYXIgOiAyLCBcbiAgICAgICBuYWJsZVZlcnRpY2FsU2Nyb2xsYmFyIDogMixcbiAgICAgICBlbmFibGVGaWx0ZXJpbmc6IHRydWUsXG4gICAgICAgZW5hYmxlUm93SGVhZGVyU2VsZWN0aW9uOiB0cnVlLFxuICAgICAgIGVuYWJsZUNvbHVtblJlc2l6aW5nOiB0cnVlLFxuICAgICAgIG1pblJvd3NUb1Nob3c6IDIsXG4gICAgICBcbiAgIH1cbiAgICBcbiAgICAgICAgJHNjb3BlLnRhc2tJZD0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlJlc291cmNlRGVmSWQ7XG4gICAgICAgIGlmICgkc2NvcGUudGFza0lkPT11bmRlZmluZWQpICAkc2NvcGUudGFza0lkPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VEZWZJZF9pZDtcbiAgICAgICAgaWYgKCRzY29wZS50YXNrSWQ9PXVuZGVmaW5lZCkgJHNjb3BlLnRhc2tJZD0wO1xuICAgICAgICBcbiAgICAgICAgLy8kc2NvcGUuZmQuUG9wdWxhdGVUeXBlPTE7XG4gICAgICAgICRzY29wZS5mZC5QYXJlbnREYXRhc2V0RGVmSWQ9JHNjb3BlLmZkLlJlbGF0ZWQ7XG4gICAgICAgICRzY29wZS5wcmV2VGFza0V4ZUlkID0gICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucHJldl90YXNrX2lkO1xuICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmZvcm1UeXBlPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV90eXBlO1xuICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNvdXJjZV90eXBlPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uc291cmNlX3R5cGU7XG4gICAgICAgICRzY29wZS50YXNrSW5pdGlhdGVJZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udGFza19pbml0aWF0ZV9pZDtcbiAgICAgICAgJHNjb3BlLnRhc2tFeGVjdXRlSWQgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRhc2tfZXhlY3V0ZV9pZDtcbiAgICAgICAgJHNjb3BlLmZvcm1EZWZpbml0aW9uID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb247XG4gICAgICAgIGlmICAoJHNjb3BlLmZvcm1EZWZpbml0aW9uPT11bmRlZmluZWQpXG4gICAgICAgIHtcbiAgICAgICAgICBcbiAgICAgICAgICAkc2NvcGUuZm9ybURlZmluaXRpb24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgXG4gICAgICAgIFxuICAgICAgICBcbiAgICAgICAgICBpZiAoJHNjb3BlLnRhc2tJbml0aWF0ZUlkPT11bmRlZmluZWQpXG4gICAgICAge1xuICAgICAgICAkc2NvcGUudGFza0luaXRpYXRlSWQgPTA7XG4gICAgICAgIFxuICAgICAgIH1cbiAgICAgICBpZiAoJHNjb3BlLnRhc2tFeGVjdXRlSWQ9PXVuZGVmaW5lZClcbiAgICAgICB7XG4gICAgICAgICRzY29wZS50YXNrRXhlY3V0ZUlkID0wO1xuICAgICAgICBcbiAgICAgICB9XG4gICAgICAgIGlmICgkc2NvcGUucHJldlRhc2tFeGVJZD09dW5kZWZpbmVkKVxuICAgICAgICB7XG4gICAgICAgICAgJHNjb3BlLnByZXZUYXNrRXhlSWQgPTA7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZCA9IDA7XG4gICAgICAgICRzY29wZS5mZC5QYXJlbnRFbGVtZW50SWQgPSAwO1xuICAgICAgICBcbiAgICAgICAgXG4gICAgICAgIFxuICAgICAgdmFyIG91dF9maWVsZHMgPSBbJ3Jlc291cmNlUmVjb3JkSWQnXVxuICAgICAgLy9yZXNvdXJjZUxpbmtcbiAgICAgIHZhciB3aWRnZXREZWZpbml0aW9uID0ge0RFSTogW3snbmFtZSc6J3Jlc291cmNlTGlua0RhdGFzZXRMaXN0JywndmFsdWUnOlt7bmFtZToncmVzb3VyY2VJZCcsdmFsdWU6JHNjb3BlLmZkLlJlbGF0ZWR9LHtuYW1lOidyZXNvdXJjZVJlY29yZElkJyx2YWx1ZTonJ31dfV0sYWN0aW9uczogW3tuYW1lOidQcmVwYXJlRGF0YScsc3RhdHVzOmZhbHNlfV0sbmFtZTogJ2RhdGFzZXRMaXN0V2lkZ2V0Jyx3aWRnZXRJZDogJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLHRhc2tJZDogICRzY29wZS5sVGFza0lkLFxuICAgICAgcmVzb3VyY2VEZWZJZCA6ICRzY29wZS5mZC5SZWxhdGVkLCAvL3Jlc291cmNlRGVmSWQgOiAkc2NvcGUuc2VsZWN0ZWRSZXNvdXJjZVxuICAgICAgcmVzb3VyY2VSZWNvcmRJZDokc2NvcGUubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQsdGFza19pbml0aWF0ZV9pZDokc2NvcGUudGFza0luaXRpYXRlSWQsdGFza19leGVjdXRlX2lkOiRzY29wZS50YXNrRXhlY3V0ZUlkLCBvdXRwdXQ6b3V0X2ZpZWxkcyB9O1xuICAgICAgJHNjb3BlLmxvY2FsVmFycy5sb2NhbFdpZGdldElkID0gV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5yZWdpc3RlcldpZGdldCh3aWRnZXREZWZpbml0aW9uKTtcbiAgICAgICRzY29wZS5sb2NhbFZhcnMubG9jYWxJZD0kc2NvcGUubG9jYWxXaWRnZXRJZDtcbiAgICAgIFxuICAgICAgXG4gICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLm9uUmVnaXN0ZXJBcGkgPSBmdW5jdGlvbiAoZ3JpZEFwaSkge1xuICAgICAgICAvL3NldCBncmlkQXBpIG9uIHNjb3BlXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ3JpZEFwaSA9IGdyaWRBcGk7XG4gICAgICAgICAgIFxuICAgICAgICAgIGdyaWRBcGkuc2VsZWN0aW9uLm9uLnJvd1NlbGVjdGlvbkNoYW5nZWQoJHNjb3BlLGZ1bmN0aW9uKHJvdyl7XG5cbiAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldFJlY29yZFNlbGVjdGVkPXJvdy5pc1NlbGVjdGVkO1xuICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMuZGF0YXNldFJlY29yZFNlbGVjdGVkKVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWYgKHJvdy5lbnRpdHkuaWQhPSRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWREYXRhc2V0UmVjb3JkSWQpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZERhdGFzZXRSZWNvcmRJZCA9IHJvdy5lbnRpdHkuaWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9ZWxzZVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZERhdGFzZXRSZWNvcmRJZCA9IDA7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1JlbGF0ZWQuY29sdW1uRGVmcz1bXTtcbiAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1JlbGF0ZWQuZGF0YT1bXTtcbiAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93R3JpZD1mYWxzZTtcbiAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wcmV2VGFza1BhY2thZ2UgPXtyZXNvdXJjZURlZklkOiRzY29wZS5mZC5SZWxhdGVkLHJlY29yZHM6Z3JpZEFwaS5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRSb3dzKCl9XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgaWYgKGdyaWRBcGkuc2VsZWN0aW9uLmdldFNlbGVjdGVkUm93cygpLmxlbmd0aD4wKVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8kcm9vdFNjb3BlLiRicm9hZGNhc3QoJ0V2ZW50cmVzb3VyY2VMaW5rJyskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsJHNjb3BlLnNlbGVjdGVkRGF0YXNldFJlY29yZElkKTtcbiAgICAgICAgICAgICAgICBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnNldERhdGEoe1xuICAgICAgICAgICAgICAgICAgREVJOiBbe25hbWU6J3Jlc291cmNlTGlua0RhdGFzZXRMaXN0Jyx2YWx1ZTpbe25hbWU6J3Jlc291cmNlSWQnLHZhbHVlOiRzY29wZS5mZC5SZWxhdGVkfSx7bmFtZToncmVzb3VyY2VSZWNvcmRJZCcsdmFsdWU6JHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZERhdGFzZXRSZWNvcmRJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICx7bmFtZToncmVzb3VyY2VSZWNvcmRJZHMnLHZhbHVlOmdyaWRBcGkuc2VsZWN0aW9uLmdldFNlbGVjdGVkUm93cygpfSx7bmFtZToncmVzb3VyY2VSZWNvcmRzQWxsJyx2YWx1ZTokc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGF9XX1dLHdpZGdldElkOiAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsdGFza19leGVjdXRlX2lkOiRzY29wZS50YXNrRXhlY3V0ZUlkfSk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBcbiAgICAgICAgICAgIC8vZXh0ZXJuYWwgcGFnaW5hdGlvblxuICAgICAgICAgIGdyaWRBcGkucGFnaW5hdGlvbi5vbi5wYWdpbmF0aW9uQ2hhbmdlZCgkc2NvcGUsIGZ1bmN0aW9uIChuZXdQYWdlLCBwYWdlU2l6ZSkge1xuICAgICAgICAgICAgcGFnaW5hdGlvbk9wdGlvbnMucGFnZU51bWJlciA9IG5ld1BhZ2U7XG4gICAgICAgICAgICBwYWdpbmF0aW9uT3B0aW9ucy5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5nZXRSZXNvdXJjZURhdGFQYWdpbmF0ZWQoJHNjb3BlLmxvY2FsVmFycy5uZXh0UGFnZSwkc2NvcGUubG9jYWxWYXJzLnByZXZpb3VzUGFnZSxuZXdQYWdlLHBhZ2VTaXplKTtcbiAgICAgICAgICB9KTtcbiAgICAgIFxuICAgICAgICAgICBncmlkQXBpLnNlbGVjdGlvbi5vbi5yb3dTZWxlY3Rpb25DaGFuZ2VkQmF0Y2goJHNjb3BlLGZ1bmN0aW9uKHJvdyl7XG5cbiAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wcmV2VGFza1BhY2thZ2UgPXtyZXNvdXJjZURlZklkOiRzY29wZS5mZC5SZWxhdGVkLHJlY29yZHM6Z3JpZEFwaS5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRSb3dzKCl9XG4gICAgICAgICAgICAgIFxuICAgICAgICAgIH0pO1xuICAgICB9XG4gICAgIFxuICAgICBcbiAgICAkc2NvcGUubG9jYWxWYXJzLnRvZ2dsZVByb3BlcnRpZXM9ZnVuY3Rpb24obWFwcGVyVHlwZSlcbiAgICAgIHtcbiAgICAgICAgICAvL2RlYnVnZ2VyIC8vdG9nZ2xlUHJvcGVydGllc1xuICAgICAgICAgICAgaWYgKG1hcHBlclR5cGUpICBcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlID0gbWFwcGVyVHlwZVxuICAgICAgICAgICAgZWxzZSAgICAgeyAgXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCAgPyAgICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9MiA6ICAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPTAgICAgICAgIFxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuaXNDb2xsYXBzZWRNYXBwZXIgPSAhICAgJHNjb3BlLmxvY2FsVmFycy5pc0NvbGxhcHNlZE1hcHBlclxuICAgICAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIFxuICAgICAgXG4gICAgICBcbiAgICAgXG4gICAgICRzY29wZS5sb2NhbFZhcnMuUHJvY2Vzc1NlYXJjaEZvcm09ZnVuY3Rpb24gKGZvcm0pe1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoZm9ybSE9dW5kZWZpbmVkKXtcbiAgICAgXHRcdFx0XHRcdGZvcih2YXIgaT0wO2k8Zm9ybS5sZW5ndGg7aSsrKSB7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIGlmICgndHlwZScgaW4gZm9ybVtpXSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3JtW2ldLnR5cGUgPT0gJ3Jlc291cmNlJyAmJiBmb3JtW2ldLmF1dG9TZWFyY2gpXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9ICRzY29wZS5sb2NhbFZhcnMuY2hpbGRXaWRnZXRzLm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLndpZGdldElkOyB9KS5pbmRleE9mKGZvcm1baV0ucHJlc2VudGF0aW9uSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvczwwKSAkc2NvcGUubG9jYWxWYXJzLmNoaWxkV2lkZ2V0cy5wdXNoKHt3aWRnZXRJZDpmb3JtW2ldLnByZXNlbnRhdGlvbklkLHByb2Nlc3NlZDpmYWxzZX0pXG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCdsYXlvdXQnIGluIGZvcm1baV0pXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuUHJvY2Vzc1NlYXJjaEZvcm0oZm9ybVtpXS5sYXlvdXQpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH0gXG4gICAgICAgICAgIFxuICAgICAgfTtcbiAgICAgIFxuICAgICAgJHNjb3BlLmxvY2FsVmFycy5TZWFyY2hGb3JtUHJvY2Vzc2VkPWZhbHNlO1xuXG4gICAgICAvKlxuICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZXREYXRhc2V0TWFwcGVyVHlwZT0gZnVuY3Rpb24odHlwZSl7XG4gICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlID0gdHlwZTtcbiAgICAgICAgICB9OyAgICAgIFxuICAgICAgKi9cbiAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNldFNlbGVjdGVkRGF0YXNldCA9IGZ1bmN0aW9uKGlkKSAge1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW09PXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbT17fTtcbiAgICAgICAgICAgICAgdmFyIHBvcyA9ICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldExpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoaWQpO1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgaWYgKHBvcz49MCl7XG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5pZCA9ICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldExpc3RbcG9zXS5pZDtcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWUgPSAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRMaXN0W3Bvc10ubmFtZTtcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkRGF0YXNldCA9ICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldExpc3RbcG9zXTtcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkID0gJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lICsnICgnKyRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0uaWQgKycpJ1xuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW1fYz0kc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtO1xuICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0XHR9O1xuICAgICAgICAgIFxuICAgICAgIC8vIFBPUFVOSSBMSVNUVSBERUZJTklDSUpBIE9EIFJFU1VSU0EgKFJFU09VUkNFUyBMSVNUKVxuXHRcdFx0XHRcdCRzY29wZS5sb2NhbFZhcnMuZ2V0RGF0YXNldHMgPSBmdW5jdGlvbigpICB7XG5cdFx0XHRcdFx0XHRcbiAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRMaXN0PT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldExpc3Q9W107XG4gICAgICAgICAgXG4gICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcbiAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmTGlzdEJ5VHlwZShsYW5nLCdkYXRhc2V0JykudGhlbihcblx0XHRcdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRMaXN0ID0gZGF0YS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlJlbGF0ZWQhPW51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2V0U2VsZWN0ZWREYXRhc2V0KCRzY29wZS5mZC5SZWxhdGVkKTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgIFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCBcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCB9KTtcblx0XHRcdFx0XHR9XG4gICAgICAgICAgICBcbiAgICAgICRzY29wZS5sb2NhbFZhcnMuR2V0RGF0YXNldERhdGE9ZnVuY3Rpb24oZGF0YSlcblxuICAgICAge1xuXG4gICAgICAgICAgICBmcm9tV2lkZ2V0ID0gZGF0YS53aWRnZXRJZDtcbiAgICAgICAgICAgIHZhciBhbGxQcm9jZXNzZWQ9dHJ1ZTtcbiAgICAgICAgICAgIHZhciBwb3MgPSAkc2NvcGUubG9jYWxWYXJzLmNoaWxkV2lkZ2V0cy5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS53aWRnZXRJZDsgfSkuaW5kZXhPZihmcm9tV2lkZ2V0KTtcbiAgICAgICAgICAgIC8vaWYgKHBvczwwKSAkc2NvcGUuZmQuY2hpbGRXaWRnZXRzLnB1c2goe3dpZGdldElkOmZyb21XaWRnZXQscHJvY2Vzc2VkOnRydWV9KTtcbiAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPCRzY29wZS5sb2NhbFZhcnMuY2hpbGRXaWRnZXRzLmxlbmd0aDtpKyspXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5jaGlsZFdpZGdldHNbaV0ud2lkZ2V0SWQgPT0gZnJvbVdpZGdldCkgJHNjb3BlLmxvY2FsVmFycy5jaGlsZFdpZGdldHNbaV0ucHJvY2Vzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoISRzY29wZS5sb2NhbFZhcnMuY2hpbGRXaWRnZXRzW2ldLnByb2Nlc3NlZCkgYWxsUHJvY2Vzc2VkID0gJHNjb3BlLmxvY2FsVmFycy5jaGlsZFdpZGdldHNbaV0ucHJvY2Vzc2VkO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgLy8gaWYgKCEkc2NvcGUuU2VhcmNoRm9ybVByb2Nlc3NlZCkgJHRpbWVvdXQoZnVuY3Rpb24oKSB7JHNjb3BlLkdldERhdGFzZXREYXRhKGZyb21XaWRnZXQpO30sMTAwMCk7XG4gICAgICAgICAgICAgIGlmKCRzY29wZS5mZC5BdXRvU2VhcmNoICYmIGFsbFByb2Nlc3NlZCAmJiAkc2NvcGUubG9jYWxWYXJzLlNlYXJjaEZvcm1Qcm9jZXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZT0kc2NvcGUuZmQuUmVsYXRlZDtcbiAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VDb2x1bW5zKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB9XG4gICAgICB9O1xuICAgICAgIFxuICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMhPXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycy5jaGlsZFdpZGdldHMgPSBbXTtcbiAgICAgIGVsc2UgJHNjb3BlLmxvY2FsVmFycyA9IHtjaGlsZFdpZGdldHMgOiBbXX07XG4gICAgIC8vICRzY29wZS51bmNhdWdodFdpZGdldHMgPSBbXTtcbiAgICAgIHZhciBmcm9tV2lkZ2V0PTA7XG4gICBcbiBcbiAgICAgICRzY29wZS4kb24oJ1NlYXJjaEZvcm1SZWFkeScrJHNjb3BlLnRhc2tFeGVjdXRlSWQsZnVuY3Rpb24oZXZlbnQsIGRhdGEpe1xuICAgICAgXG4gICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuR2V0RGF0YXNldERhdGEoZGF0YSk7IFxuICAgICAgICAgICAgXG4gICAgICB9KTsgICAgIFxuICAgICBcbiAgIFxuICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cdC8vICAgICAgICAgICBHRVQgREFUQVNFVCBSRUxBVEVEIFJFQ09SRFNcblx0Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0RGF0YXNldFJlbGF0ZWRSZWNvcmRzID0gZnVuY3Rpb24gKHJlbGF0ZWREYXRhc2V0SWQscmVjb3JkSWQsbW9kZWxJZCkge1xuICBcbiAgXG4gICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xuICAgICAgICBcbiAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGF0YVJlbGF0ZWQoJHNjb3BlLmZkLlJlbGF0ZWQscmVjb3JkSWQscmVsYXRlZERhdGFzZXRJZCwwLG1vZGVsSWQsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZWxhdGVkLmRhdGEgPSBkYXRhLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1JlbGF0ZWQuY29sdW1uRGVmcyA9IGRhdGEuY29sdW1uc0RlZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dHcmlkPXRydWU7XG4gICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICBcbiAgICAgICAgXG4gLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cdC8vICAgICAgICAgICBHRVQgREFUQVNFVCBTSU5HTEUgUkVDT1JEXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxuICAgICAgJHNjb3BlLmxvY2FsVmFycy5nZXREYXRhc2V0U2luZ2xlUmVjb3JkID0gZnVuY3Rpb24gKHJlbGF0ZWREYXRhc2V0SWQscmVjb3JkSWQpIHtcbiAgXG4gIFxuICAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcbiAgICAgICAgXG4gICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURhdGFEaXJlY3RGaWx0ZXIocmVsYXRlZERhdGFzZXRJZCwwLGxhbmcse2lkOiByZWNvcmRJZH0pLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVsYXRlZC5kYXRhID0gZGF0YS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZWxhdGVkLmNvbHVtbkRlZnMgPSBkYXRhLmNvbHVtbnNEZWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgIFxuICAgICAgICAkc2NvcGUuJG9uKCdTZWFyY2hGb3JtUmVhZHknKyRzY29wZS50YXNrRXhlY3V0ZUlkKyRzY29wZS5mZC5QcmVzZW50YXRpb25JZCxmdW5jdGlvbihldmVudCwgZGF0YTEpe1xuICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5HZXREYXRhc2V0RGF0YShkYXRhMSk7IFxuICAgICAgICAgICAgXG4gICAgICAgIH0pO1xuICAgICAgICBcbiAgICAkc2NvcGUubG9jYWxWYXJzLmdldEZvcm1SZXNvdXJjZSA9IGZ1bmN0aW9uKCl7ICAgXG4gICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xuICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT1udWxsKSB7XG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkID0gMDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZUZvcm1FeHRlbmRlZFdpdGhEYXRhKCRzY29wZS5mZC5SZWxhdGVkLCRzY29wZS50YXNrSW5pdGlhdGVJZCwkc2NvcGUudGFza0V4ZWN1dGVJZCwkc2NvcGUuZmQuUG9wdWxhdGVUeXBlLCRzY29wZS5mZC5QYXJlbnRFbGVtZW50SWQsJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLCRzY29wZS5wcmV2VGFza0V4ZUlkLCRzY29wZS5sb2NhbFZhcnMuZm9ybVR5cGUsJHNjb3BlLmxvY2FsVmFycy53aWRnZXRUeXBlLCRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZCxcImZcIixsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbj0gZGF0YS5kYXRhLnJlc291cmNlRGVmaW5pdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jID0geyduYW1lJzokc2NvcGUubG9jYWxWYXJzLnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbi5uYW1lLCdpZCc6JHNjb3BlLmZkLlJlbGF0ZWQsJ3JlbGF0ZWRJZCc6JHNjb3BlLmZkLlJlbGF0ZWQsJ3ByZXNlbnRhdGlvbklkJzokc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsJ3NyY190eXBlX2lkJzokc2NvcGUuZmQuUG9wdWxhdGVUeXBlLCdzcmNfdHlwZV90ZXh0Jzokc2NvcGUubG9jYWxWYXJzLnNyY190eXBlX3RleHRbJHNjb3BlLmZkLlBvcHVsYXRlVHlwZV0sJ3BhcmVudEVsZW1lbnRJZCc6JHNjb3BlLmZkLlBhcmVudEVsZW1lbnRJZH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5mSXRlbVZhbHVlPWRhdGEuZGF0YS53aWRnZXRzO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNlYXJjaEZvcm1Eb3dubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2V0RmllbGQoJHNjb3BlLmZkLmZJdGVtVmFsdWUsJ3JlcXVpcmVkJyxmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmZvcm1Mb2FkZWQ9dHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9wcmVwYXJlIHNlYXJjaCBmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLlByb2Nlc3NTZWFyY2hGb3JtKCRzY29wZS5mZC5mSXRlbVZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuU2VhcmNoRm9ybVByb2Nlc3NlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5jaGlsZFdpZGdldHMubGVuZ3RoPjApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UucmVnaXN0ZXJTZWFyY2goe3dpZGdldElkOiRzY29wZS5mZC5QcmVzZW50YXRpb25JZCx0YXNrRXhlY3V0ZUlkOiRzY29wZS50YXNrRXhlY3V0ZUlkLHByZXZUYXNrRXhlSWQ6JHNjb3BlLnByZXZUYXNrRXhlSWQsY2hpbGRXaWRnZXRzOiRzY29wZS5sb2NhbFZhcnMuY2hpbGRXaWRnZXRzfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm9vdFNjb3BlLiRicm9hZGNhc3QoJ1NlYXJjaEZvcm1SZWFkeScrJHNjb3BlLnRhc2tFeGVjdXRlSWQse3dpZGdldElkOiRzY29wZS5mZC5QcmVzZW50YXRpb25JZH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQgPSAgZGF0YS5kYXRhLndpZGdldHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhID09IHVuZGVmaW5lZCkgJHNjb3BlLmZvcm1EYXRhPXt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5QcmVzZW50YXRpb25JZF0gPSAgZGF0YS5kYXRhLmZvcm1fZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5TZWFyY2ggPSAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXTtcbiAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICB9Oy8vZ2V0Rm9ybVJlc291cmNlX0VORFxuICAgIFxuICAkc2NvcGUubG9jYWxWYXJzLmdldEZvcm1SZXNvdXJjZU9yaWdpbmFsID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG4gICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PW51bGwpXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQgPSAwO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRm9ybSgkc2NvcGUuZmQuUmVsYXRlZCxcImlcIixsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZVdpZGdldERlZmluaXRpb249IGRhdGEuZGF0YS5yZXNvdXJjZURlZmluaXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0PWRhdGEuZGF0YS53aWRnZXRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbV9jID0geyduYW1lJzokc2NvcGUubG9jYWxWYXJzLnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbi5uYW1lLCdpZCc6JHNjb3BlLmZkLlJlbGF0ZWQsJ3JlbGF0ZWRJZCc6JHNjb3BlLmZkLlJlbGF0ZWQsICdwcmVzZW50YXRpb25JZCc6JHNjb3BlLmZkLlByZXNlbnRhdGlvbklkICAsJ3NyY190eXBlX2lkJzokc2NvcGUuZmQuUG9wdWxhdGVUeXBlLCdzcmNfdHlwZV90ZXh0Jzokc2NvcGUubG9jYWxWYXJzLnNyY190eXBlX3RleHRbJHNjb3BlLmZkLlBvcHVsYXRlVHlwZV0sJ3BhcmVudEVsZW1lbnRJZCc6JHNjb3BlLmZkLlBhcmVudEVsZW1lbnRJZH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZkl0ZW1WYWx1ZT1kYXRhLmRhdGEud2lkZ2V0cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTUlHT1IgLSBiaXRubyAtIERPQklPIFJFU09VUkNFUkVDT1JELUlEIFpBIEJST0FEQ0FTVCAgLSBBRERfUkVTT1VSQ0UgV0lER0VUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2Uuc2V0RGF0YSh7d2lkZ2V0SWQ6JHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLCBERUk6IFt7J25hbWUnOidyZXNvdXJjZUxpbmsnLCd2YWx1ZSc6W3tuYW1lOidyZXNvdXJjZUlkJyx2YWx1ZTokc2NvcGUuZmQuUmVsYXRlZH0se25hbWU6J3Jlc291cmNlUmVjb3JkSWQnLHZhbHVlOiRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZH1dfV19KTtcblx0XHRcdFx0XHRcdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VhcmNoRm9ybURvd25sb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZm9ybUxvYWRlZD10cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgIH07XG4gICBcbiAgICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldFJlY29yZFNlbGVjdGVkID0gZmFsc2U7XG4gICAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkRGF0YXNldFJlY29yZElkID0gMDtcbiBcbiAgICAgXG4gICAgICAkc2NvcGUubG9jYWxWYXJzLmdldFJlc291cmNlRGF0YSA9IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAvLyBzY29wZS5hY3Rpdml0eS5hY3Rpdml0eU1lc3NhZ2UgPSBQcm9jZXNzaW5nU2VydmljZS5zZXRBY3Rpdml0eU1zZygnRG93bmxvYWRpbmcgcmVzb3VyY2UgZGF0YSBmb3IgJytzY29wZS5zZWxlY3RlZFJlc291cmNlKTtcbiAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGluZyA9IHRydWU7XG4gICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLnBhZ2VTaXplPT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnMucGFnZVNpemUgPSBwYWdpbmF0aW9uT3B0aW9ucy5wYWdlU2l6ZTtcbiAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEYXRhKCRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZSwkc2NvcGUudGFza0lkLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YSA9IGRhdGEuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmNvbHVtbkRlZnMgPSBkYXRhLmNvbHVtbnNEZWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXN0b3JlR3JpZFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuXHRcdCBcbiAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAgLy8gICAgICAgICAgIEdFVCBSRVNPVVJDRSBEQVRBIFBBR0lOQVRFRFxuICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXG4gICAgJHNjb3BlLmxvY2FsVmFycy5nZXRSZXNvdXJjZURhdGFQYWdpbmF0ZWQgPSBmdW5jdGlvbiAodXJsTmV4dCx1cmxQcmV2LG5ld1BhZ2UscGFnZVNpemUpIHtcbiAgICAgICAgXG4gICAgICAgIFxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkZWQgPSBmYWxzZTsgICAgICAgIFxuICAgICAgICBpZiAoTWF0aC5jZWlsKCRzY29wZS5sb2NhbFZhcnMudG90YWxDb3VudC9wYWdlU2l6ZSk8bmV3UGFnZSlcbiAgICAgICAge1xuICAgICAgICAgIG5ld1BhZ2UgPSBNYXRoLmNlaWwoJHNjb3BlLmxvY2FsVmFycy50b3RhbENvdW50L3BhZ2VTaXplKTtcbiAgICAgICAgfVxuICAgICAgICAgXG4gICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xuICAgICAgICAgIFxuICAgICAgICAgaWYgKHBhZ2VTaXplPT11bmRlZmluZWQpXG4gICAgICAgICBcbiAgICAgICAgIHtcbiAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnBhZ2VTaXplID0gcGFnaW5hdGlvbk9wdGlvbnMucGFnZVNpemU7XG4gICAgICAgICAgcGFnZVNpemU9ICRzY29wZS5sb2NhbFZhcnMucGFnZVNpemU7XG4gICAgICAgICB9XG4gICAgICAgICBcbiAgICAgICAgIGlmICgkc2NvcGUuZmQuUG9wdWxhdGVNZXRob2Q9PSdNJylcbiAgICAgICAgIHtcbiAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURhdGFQYWdpbmF0ZWRGaWx0ZXIoJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlLHVybE5leHQsdXJsUHJldixuZXdQYWdlLHBhZ2VTaXplLGxhbmcsJHNjb3BlLmZkLlNlYXJjaCwgJHNjb3BlLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEgPSBkYXRhLmRhdGEucmVzdWx0cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucmVzdG9yZUdyaWRTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5uZXh0UGFnZSA9IGRhdGEuZGF0YS5uZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wcmV2aW91c1BhZ2UgPSBkYXRhLmRhdGEucHJldmlvdXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnRvdGFsQ291bnQ9ZGF0YS5kYXRhLmNvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5jdXJyZW50UGFnZT1uZXdQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5udW1QYWdlcyA9IE1hdGguY2VpbCgkc2NvcGUubG9jYWxWYXJzLnRvdGFsQ291bnQvcGFnZVNpemUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS50b3RhbEl0ZW1zPSRzY29wZS5sb2NhbFZhcnMudG90YWxDb3VudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5zZXREYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFSTogW3tuYW1lOidyZXNvdXJjZUxpbmtEYXRhc2V0TGlzdCcsdmFsdWU6W3tuYW1lOidyZXNvdXJjZUlkJyx2YWx1ZTokc2NvcGUuZmQuUmVsYXRlZH0se25hbWU6J3Jlc291cmNlUmVjb3JkSWQnLHZhbHVlOiRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWREYXRhc2V0UmVjb3JkSWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAse25hbWU6J3Jlc291cmNlUmVjb3JkSWRzJyx2YWx1ZTogbnVsbH0se25hbWU6J3Jlc291cmNlUmVjb3Jkc0FsbCcsdmFsdWU6JHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhfV19XSx3aWRnZXRJZDogJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLHRhc2tfZXhlY3V0ZV9pZDokc2NvcGUudGFza0V4ZWN1dGVJZH0pO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm9vdFNjb3BlLiRicm9hZGNhc3QoXCJTdGFydFRhc2tcIiskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQrXCJDb21wbGV0ZWRcIiwkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgIH1cbiAgICAgICAgIGVsc2UgaWYgKCRzY29wZS5mZC5Qb3B1bGF0ZU1ldGhvZD09J0EnKVxuICAgICAgICAge1xuICAgICAgICAgIHZhciB0YXNrX2luc3RhbmNlPTA7ICBcbiAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5mb3JtVHlwZT09J2knKSB0YXNrX2luc3RhbmNlID0gJHNjb3BlLnRhc2tJbml0aWF0ZUlkO1xuICAgICAgICAgIGVsc2UgdGFza19pbnN0YW5jZSA9ICRzY29wZS50YXNrRXhlY3V0ZUlkO1xuICAgIFxuICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGF0YVBhZ2luYXRlZEF1dG8oJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlLHVybE5leHQsdXJsUHJldixuZXdQYWdlLHBhZ2VTaXplLGxhbmcsJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLHRhc2tfaW5zdGFuY2UsJHNjb3BlLmxvY2FsVmFycy5mb3JtVHlwZSkudGhlbihmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YSA9IGRhdGEuZGF0YS5yZXN1bHRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXN0b3JlR3JpZFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLm5leHRQYWdlID0gZGF0YS5kYXRhLm5leHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnByZXZpb3VzUGFnZSA9IGRhdGEuZGF0YS5wcmV2aW91cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMudG90YWxDb3VudD1kYXRhLmRhdGEuY291bnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmN1cnJlbnRQYWdlPW5ld1BhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLm51bVBhZ2VzID0gTWF0aC5jZWlsKCRzY29wZS5sb2NhbFZhcnMudG90YWxDb3VudC9wYWdlU2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnBhZ2VTaXplID0gcGFnZVNpemU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLnRvdGFsSXRlbXM9JHNjb3BlLmxvY2FsVmFycy50b3RhbENvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnNldERhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVJOiBbe25hbWU6J3Jlc291cmNlTGluaycsdmFsdWU6W3tuYW1lOidyZXNvdXJjZUlkJyx2YWx1ZTokc2NvcGUuZmQuUmVsYXRlZH0se25hbWU6J3Jlc291cmNlUmVjb3JkSWQnLHZhbHVlOiRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWREYXRhc2V0UmVjb3JkSWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAse25hbWU6J3Jlc291cmNlUmVjb3JkSWRzJyx2YWx1ZTogbnVsbH0se25hbWU6J3Jlc291cmNlUmVjb3Jkc0FsbCcsdmFsdWU6JHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhfV19XSx3aWRnZXRJZDogJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLHRhc2tfZXhlY3V0ZV9pZDokc2NvcGUudGFza0V4ZWN1dGVJZH0pO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm9vdFNjb3BlLiRicm9hZGNhc3QoXCJTdGFydFRhc2tcIiskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQrXCJDb21wbGV0ZWRcIiwkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICBcbiAgICAgICAgIH1cbiAgICAgICAgfTtcblxuXG4gJHNjb3BlLmxvY2FsVmFycy5wYWdlQ2hhbmdlZCA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VEYXRhUGFnaW5hdGVkKCRzY29wZS5sb2NhbFZhcnMubmV4dFBhZ2UsJHNjb3BlLmxvY2FsVmFycy5wcmV2aW91c1BhZ2UsJHNjb3BlLmxvY2FsVmFycy5jdXJyZW50UGFnZSwkc2NvcGUubG9jYWxWYXJzLnBhZ2VTaXplKTtcbiAgICAgICAgIH07XG4gICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblx0Ly8gICAgICAgICAgIEdFVCBSRVNPVVJDRSBDT0xVTU5TXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxuICAkc2NvcGUubG9jYWxWYXJzLmdldFJlc291cmNlQ29sdW1ucyA9IGZ1bmN0aW9uIChnZXREYXRhKSB7XG4gICAgIHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XG4gICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2U9PXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlID0gJHNjb3BlLmZkLlJlbGF0ZWQ7XG4gICAgIFxuICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlIT11bmRlZmluZWQgJiYgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlIT1udWxsKVxuICAgICB7XG4gICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlQ29sdW1ucygkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UsJHNjb3BlLnRhc2tJZCxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5jb2x1bW5EZWZzID0gZGF0YS5kYXRhO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGlmIChnZXREYXRhKSAkc2NvcGUubG9jYWxWYXJzLmdldFJlc291cmNlRGF0YVBhZ2luYXRlZCgkc2NvcGUubG9jYWxWYXJzLm5leHRQYWdlLCRzY29wZS5sb2NhbFZhcnMucHJldmlvdXNQYWdlLDEsJHNjb3BlLmxvY2FsVmFycy5wYWdlU2l6ZSk7ICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcbiAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICBcbiAgICAgfVxuICB9O1xuICAgICBcbiAgICAgJHNjb3BlLmxvY2FsVmFycy5nZXRSZXNvdXJjZURhdGFGaWx0ZXJlZCA9IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgJHNjb3BlLmZpbHRlciA9IHt9O1xuICAgICAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcblxuICAgICAgICAgICAvL3Njb3BlLmFjdGl2aXR5LmFjdGl2aXR5TWVzc2FnZSA9IFByb2Nlc3NpbmdTZXJ2aWNlLnNldEFjdGl2aXR5TXNnKCdSZXRyaXZpbmcgZGF0YSAnK3Njb3BlLnNlbGVjdGVkUmVzb3VyY2UpO1xuICAgICAgICAgIC8vJHNjb3BlLmZpbHRlciA9IFJlc291cmNlc0RhdGFTZXJ2aWNlLnByZXBhcmVSZXNvdXJjZVdpZGdldERhdGEoJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzLC0xKTtcbiAgICAgICAgIFxuICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2U9PW51bGwpIHtcbiAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZSA9ICRzY29wZS5mZC5SZWxhdGVkO1xuICAgICAgICAgIH1cblx0Ly9cdFx0UmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEYXRhRmlsdGVyZWQoJHNjb3BlLmZkLlJlbGF0ZWQsbGFuZywkc2NvcGUuZmlsdGVyKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHsvL01JR09SXG4gICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURhdGFGaWx0ZXJlZCgkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UsJHNjb3BlLnRhc2tJZCxsYW5nLCRzY29wZS5sb2NhbFZhcnMuZGFzaGJvYXJkLmRhdGEpLnRoZW4oZnVuY3Rpb24oZGF0YSkgey8vTUlHT1JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEgPSBkYXRhLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5jb2x1bW5EZWZzID0gZGF0YS5jb2x1bW5zRGVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZXN0b3JlR3JpZFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblx0XHRcbiAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNldEZpZWxkID0gZnVuY3Rpb24oZm9ybSxuYW1lLHZhbHVlLG1zZylcbiAgICAgICAge1xuICAgICBcdFx0XHRcdFRhc2tEYXRhU2VydmljZS5zZXRGaWVsZChmb3JtLG5hbWUsdmFsdWUpO1xuICAgICAgICAgICAgaWYgKG1zZykgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKG1zZywnaW5mbycpO1xuICAgICAgICB9O1xuICAgICAgICBcbiAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dIaWRlU2VhcmNoRm9ybSA9IGZ1bmN0aW9uKClcbiAgICAgICAge1xuICAgICBcdFx0XHRcdGlmICgkc2NvcGUuZmQuU2hvd1NlYXJjaEZvcm0pICRzY29wZS5sb2NhbFZhcnMuZ2V0Rm9ybVJlc291cmNlKCk7XG4gICAgICAgIH07XG4gICAgICAgXG4gICAgICAgIFxuICAgIFxuICBpZiAoJHNjb3BlLmZkLlJlbGF0ZWQhPW51bGwgJiYgICEkc2NvcGUuZm9ybURlZmluaXRpb24gJiYgISRzY29wZS5sb2NhbFZhcnMuc2VhcmNoRm9ybURvd25sb2FkZWQpXG4gIHtcbiAgICAkc2NvcGUubG9jYWxWYXJzLmdldEZvcm1SZXNvdXJjZSgpO1xuICAgIFxuICB9ZWxzZSBpZiAoJHNjb3BlLmZkLlJlbGF0ZWQhPW51bGwgJiYgKCRzY29wZS5sb2NhbFZhcnMuc2hvd0Zvcm0gfHwgJHNjb3BlLmZkLkF1dG9TZWFyY2gpKVxuICB7XG4gICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0Rm9ybVJlc291cmNlKCk7XG4gICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0RGF0YXNldHMoKTtcbiAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VDb2x1bW5zKGZhbHNlKTtcbiAgICBcbiAgfWVsc2UgaWYoISRzY29wZS5sb2NhbFZhcnMuc2hvd0Zvcm0pXG4gIHtcbiAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93SGlkZVNlYXJjaEZvcm0oKTtcbiAgICAgJHNjb3BlLmxvY2FsVmFycy5nZXRSZXNvdXJjZUNvbHVtbnMoZmFsc2UpO1xuICAgICAkc2NvcGUubG9jYWxWYXJzLmdldERhdGFzZXRzKCk7XG4gICAgXG4gIH1cbiAgXG4gICAgXG4gICAgXG5cdFx0ICRzY29wZS5sb2NhbFZhcnMuc2F2ZUdyaWRTdGF0ZT0gZnVuY3Rpb24oKSB7XG4gICAgICAgdmFyIHN0YXRlID0gJHNjb3BlLmxvY2FsVmFycy5ncmlkQXBpLnNhdmVTdGF0ZS5zYXZlKCk7XG4gICAgICAgJHNjb3BlLmZkLkdyaWRTdGF0ZSA9IHN0YXRlO1xuICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShcIlRvIG1ha2UgY2hhbmdlcyBzdGljayBwbGVhc2Ugc2F2ZSBmb3JtXCIsJ2luZm8nKTtcbiAgICAgICAgICAgICBcbiAgICB9O1xuICBcbiAgICRzY29wZS5sb2NhbFZhcnMucmVzdG9yZUdyaWRTdGF0ZT0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKCRzY29wZS5mZC5HcmlkU3RhdGUhPW51bGwpXG4gICAge1xuICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLmdyaWRBcGkhPXVuZGVmaW5lZClcbiAgICAgICB7XG4gICAgICBcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5ncmlkQXBpLnNhdmVTdGF0ZS5yZXN0b3JlKCRzY29wZSwkc2NvcGUuZmQuR3JpZFN0YXRlKTtcbiAgICAgICAgXG4gICAgICAgfWVsc2VcbiAgICAgICB7XG4gICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnJlc3RvcmVHcmlkU3RhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgfVxuICAgIH1cbiAgfTtcbiAgICAgICAgXG4gICAgICAgICAgICAgICAkcm9vdFNjb3BlLiRicm9hZGNhc3QoXCJXaWRnZXRcIiskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQrXCJSZWFkeVwiLG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcbn1dOyAvL2NvbnRyb2xlcl9FTkRcblxuICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcbiAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUcmVlVmlldy5odG1sJyxcbiAgICAgICAgICAgIGNvbnRyb2xsZXI6IGNvbnRyb2xsZXIsXG4gICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XG5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgXG4gICAgICAgICAgICBcbiAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgXG4gICAgICAgICAgICAgXG4gIH0gXG4gICAgICAgIFxufTtcbid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdFVwbG9hZGVyICgkdGltZW91dCx1aVVwbG9hZGVyLFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UsUmVzb3VyY2VzRGF0YVNlcnZpY2UsVGFza0RhdGFTZXJ2aWNlLCRjb29raWVzLCRyb290U2NvcGUpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgIHJlc3RyaWN0OiAnQScsIFxyXG4gICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFVwbG9hZGVyLmh0bWwnLFxyXG4gICAgICAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24gKCRzY29wZSwgJGVsZW1lbnQsJHJvb3RTY29wZSwkdWliTW9kYWwsTWVzc2FnaW5nU2VydmljZSxQcm9jZXNzaW5nU2VydmljZSwkbG9nLEdyaWRzdGVyU2VydmljZSwkdGltZW91dCwkc3RhdGVQYXJhbXMpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiVSBrb250cm9sZXJ1XCIpO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLlJlYWRPbmx5PWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmFuaW1hdGlvbnNFbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5zaG93RmlsZU1ldGFEYXRhPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tJZD0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlJlc291cmNlRGVmSWQ7XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnRhc2tJZD09dW5kZWZpbmVkKSAgJHNjb3BlLnRhc2tJZD0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlJlc291cmNlRGVmSWRfaWQ7XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnRhc2tJZD09dW5kZWZpbmVkKSAkc2NvcGUudGFza0lkPTA7ICBcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzPT11bmRlZmluZWQpICAkc2NvcGUubG9jYWxWYXJzID0ge2RhdGFzZXRNYXBwZXJUeXBlOjB9O1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZpbGVzID0gW107ICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2hvd1Byb3BlcnRpZXM9ZnVuY3Rpb24oZGF0YXNldE1hcHBlclR5cGUpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSA9IGRhdGFzZXRNYXBwZXJUeXBlO1xyXG4gICAgICAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wIHx8ICRzY29wZS5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGUhPWRhdGFzZXRNYXBwZXJUeXBlKSAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlID0gZGF0YXNldE1hcHBlclR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPTA7XHJcbiAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5va0ZpbGVDb25uZWN0b3IgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC50SXRlbVZhbHVlPSRzY29wZS5mZC5saXN0T2ZDb25uZWN0b3JzO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93UHJvcGVydGllcygwKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5jYW5jZWxGaWxlQ29ubmVjdG9yID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9ycz1hbmd1bGFyLmNvcHkoJHNjb3BlLmZkLnRJdGVtVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93UHJvcGVydGllcygwKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBcclxuXHRcdCAgJHNjb3BlLm9rTW9kYWwgPSBmdW5jdGlvbiAod2luZGV4LGluZGV4KSB7XHJcblx0XHRcdCR0aW1lb3V0KGZ1bmN0aW9uKCkgeyRzY29wZS5zaG93RmlsZU1ldGFEYXRhPWZhbHNlOyB9KTtcclxuXHRcdCAgfTtcclxuXHJcblx0XHQgICRzY29wZS5jYW5jZWxNb2RhbCA9IGZ1bmN0aW9uICgpIHtcclxuXHRcdFx0JHRpbWVvdXQoZnVuY3Rpb24oKSB7JHNjb3BlLnNob3dGaWxlTWV0YURhdGE9ZmFsc2U7IH0pO1xyXG5cdFx0ICB9O1xyXG5cdFx0ICBcclxuICAgICAgIFxyXG4gICAgICAgIFxyXG5cdFx0ICRzY29wZS5zaG93TWV0YWRhdGEgPSBmdW5jdGlvbihmaWxlSW5kZXgsZmlsZUlkKXsgXHJcblx0XHQgXHJcblx0XHRcdFx0ICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcblx0XHRcdFx0ICAgdmFyIGZpbGVfcmVzb3VyY2VfdHlwZSA9IFwiZmlsZVwiO1xyXG5cdFx0XHRcdCAgICAkc2NvcGUudGFza0lkPSRzdGF0ZVBhcmFtcy5pZDtcclxuXHRcdFx0XHQgICBcclxuXHRcdFx0XHQgICAgLy9SZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZUZvcm1leHRlbmRlZChpZCByZXN1cnNhICx0YXNrLWlkLCBpLCAkc2NvcGUuZmQucHJlc2VudGF0aW9uSWQsbGFuZylcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdCAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRm9ybShmaWxlSWQsXCJpXCIsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjPSRzY29wZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLmdyaWRPcHRpb25zLmRhdGEgPSBkYXRhLmRhdGE7XHJcblx0XHRcdFx0XHRcdFx0XHQgIC8vJHNjb3BlLmZpbGVzW2ZpbGVJbmRleF0uZGFzaGJvYXJkPVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAkc2NvcGUuZmlsZXNbZmlsZUluZGV4XS5kYXNoYm9hcmQ9ZGF0YS5kYXRhO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAvL2ZpbGVzWyRpbmRleF0uZGFzaGJvYXJkLndpZGdldHNcclxuXHRcdFx0XHRcdFx0XHRcdCAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblx0XHRcclxuXHJcblx0XHRcdCAgfTtcclxuICAgICBcclxuICAgICAgICAgICBcclxuXHRcdFx0Ly8gT1BFTiBNT0RBTCBmaWxlaGVscGVyXHJcblx0XHRcdCAkc2NvcGUub3Blbk1vZGFsID0gZnVuY3Rpb24gKHNpemUsZmlsZUluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgIHZhciBtb2RhbEluc3RhbmNlID0gJHVpYk1vZGFsLm9wZW4oe1xyXG4gICAgICAgICAgICAgICAgICBhbmltYXRpb246ICRzY29wZS5hbmltYXRpb25zRW5hYmxlZCxcclxuICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdmaWxlaGVscGVyLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnRmlsZU1vZGFsSW5zdGFuY2VDdHJsJyxcclxuICAgICAgICAgICAgICAgICAgc2l6ZTogc2l6ZSxcclxuICAgICAgICAgICAgICAgICAgcmVzb2x2ZToge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldFZhbHVlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3Jlc291cmNlSWQ6JHNjb3BlLnJlc291cmNlSWQsZmlsZUluZGV4OmZpbGVJbmRleCxmaWxlczokc2NvcGUuZmlsZXMsaGVhZGxpbmU6J0VudGVyIGZpbGUgbWV0YWRhdGEnfTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblx0XHRcdFxyXG5cdFx0XHRcclxuICAgICAgICAgICAgbW9kYWxJbnN0YW5jZS5yZXN1bHQudGhlbihmdW5jdGlvbiAocmV0VmFsdWUsd2luZGV4LGluZGV4KSB7XHJcbiAgICAgICAgICAgICAvLyAkc2NvcGUuZ2V0UmVzb3VyY2VGb3JtICgpO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgLy8kbG9nLmluZm8oJ01vZGFsIGRpc21pc3NlZCBhdDogJyArIG5ldyBEYXRlKCkpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICBcclxuXHRcdH07XHJcbiAgICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAvL25vdmkgRklMRSBDT05ORUNUT1IgLSBVUExPQURFUlxyXG4gICAgICAkc2NvcGUubG9jYWxWYXJzLm9wZW5GaWxlQ29ubmVjdG9yICA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAvLyRzY29wZS5mZC5zaG93RmlsZUNvbm5lY3Rvcj0gISRzY29wZS5mZC5zaG93RmlsZUNvbm5lY3RvcjtcclxuICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93UHJvcGVydGllcygxKTtcclxuICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIC8vUE9QVU5JIExJU1RVIERBVEFTRVRPVkEgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZMaXN0QnlUeXBlKGxhbmcsJ2RhdGFzZXQnKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGF0YXNldExpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kb2RhaiBpbWUgZGF0YXNldGEgdSBrb25la3RvcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnMhPXVuZGVmaW5lZCkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTwgJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnMubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy92YXIgcCA9ICRzY29wZS5kYXRhc2V0TGlzdC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZigkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9yc1tpXS5wYXJlbnREYXRhc2V0RGVmSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSAkc2NvcGUuZGF0YXNldExpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnNbaV0ucGFyZW50RGF0YXNldERlZklkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwPj0wKSAkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9yc1tpXS5wYXJlbnREYXRhc2V0TmFtZSA9ICRzY29wZS5kYXRhc2V0TGlzdFtwXS5uYW1lOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuIFx0XHRcdFx0XHRcdFx0aWYgKCRzY29wZS5mZC50SXRlbVZhbHVlPT11bmRlZmluZWQgfHwgJHNjb3BlLmZkLnRJdGVtVmFsdWVbMF09PW51bGwpICAkc2NvcGUuZmQudEl0ZW1WYWx1ZSA9IFtdOyBcclxuXHRcdFx0XHRcdFx0XHQvLyBvdm8gamUgIEt0LVVQTE9BREVSXHJcblx0XHRcdFx0XHRcdFx0ICAkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9ycz0gV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5nZXRSZWdpc3RlcmVkV2lkZ2V0cygpOy8vTUlHT1IgIC0gdXptaSBzdmUgcmVnaXN0cmlyYW5lIHdpZGdldGVcclxuXHRcdFx0XHRcdFx0XHQgIFxyXG5cdFx0XHRcdFx0XHRcdCAgLy9CcmlzaSBzdmUga29qaSBzZSB2ZWMgbmFsYXplIHUgdEl0ZW1WYWx1ZVxyXG5cdFx0XHRcdFx0XHRcdCAgIGlmICgkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9ycyE9dW5kZWZpbmVkKSBcclxuXHRcdFx0XHRcdFx0XHRcdCAgZm9yICh2YXIgaT0wO2k8ICRzY29wZS5mZC50SXRlbVZhbHVlLmxlbmd0aCA7aSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0IGZvciAodmFyIGo9MDtqPCAkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9ycy5sZW5ndGg7aisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLnRJdGVtVmFsdWVbaV0hPW51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9yc1tqXS53aWRnZXRJZD09JHNjb3BlLmZkLnRJdGVtVmFsdWVbaV0ud2lkZ2V0SWQpICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnMuc3BsaWNlKGosMSk7Ly9icmlzaSBsb2thbG5pXHRcdFx0XHQgICBcdFx0XHRcdFx0ICAgIFx0XHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0XHRcdFx0ICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RvZGFqIHNhIHNlcnZlcmFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTwgJHNjb3BlLmZkLnRJdGVtVmFsdWUubGVuZ3RoIDtpKyspIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC50SXRlbVZhbHVlW2ldIT1udWxsKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9ycy5wdXNoKCRzY29wZS5mZC50SXRlbVZhbHVlW2ldKTtcdFx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblxyXG5cdFx0XHRcdFx0XHRcdCAgLy9Pc3RhdmkgdSBsaXN0aSBrb25la3RvcmEgc2FtbyBXSURHRVRFIGtvamkgaW1hanUgXCJSZXNvdXJjZUlEXCIgamVyIHN1IHRvIGRhdGEgd2lkZ2V0aVxyXG5cdFx0XHRcdFx0XHRcdCAgdmFyIG5ld2xpc3Q9W107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cdFx0XHRcdFx0XHRcdCAgICBpZiAoJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnMhPXVuZGVmaW5lZCl7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPCAkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9ycy5sZW5ndGg7aSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5saXN0T2ZDb25uZWN0b3JzW2ldLkRFSSE9dW5kZWZpbmVkKSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGo9MDtqPCAkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9yc1tpXS5ERUkubGVuZ3RoO2orKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5saXN0T2ZDb25uZWN0b3JzW2ldLkRFSVtqXS5uYW1lPT0ncmVzb3VyY2VMaW5rJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vYWtvIERFSS52YWx1ZSBuaWplIHRydWUvZmFsc2UgLSByZXNldGlyYWogbmEgZmFsc2UgKHpuYWNpIE5JSkUgUE9WRVpBTiBqb8WhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggKCRzY29wZS5mZC5saXN0T2ZDb25uZWN0b3JzW2ldLkRFSVtqXS52YWx1ZSE9ZmFsc2UpICYmICgkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9yc1tpXS5ERUlbal0udmFsdWUhPXRydWUpICkgJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnNbaV0uREVJW2pdLnZhbHVlPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZG9kYWoga29uZWt0b3IgdSBub3Z1IGxpc3R1IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpc3QucHVzaCgkc2NvcGUuZmQubGlzdE9mQ29ubmVjdG9yc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1x0XHRcdFx0XHRcdCBcdFx0XHRcdFx0XHQgIFx0XHRcdFx0XHRcdCAgIFx0XHRcdFx0XHQgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfS8vaWZcclxuXHRcdFx0XHRcdFx0XHQgICRzY29wZS5mZC5saXN0T2ZDb25uZWN0b3JzPW5ld2xpc3Q7IC8va29uYWNuYSBsaXN0YSBOT1ZJSCBkYXRhc2V0IGtvbmVrdG9yYSBcclxuIFxyXG5cdFx0XHRcdFx0XHRcdCAgLy9yZXR1cm4ge3NlbGVjdGVkSXRlbUZyb21TZXJ2ZXI6JHNjb3BlLmZkLnRJdGVtVmFsdWUsbGlzdE9mQ29ubmVjdG9yczogJHNjb3BlLmZkLmxpc3RPZkNvbm5lY3RvcnMsaGVhZGxpbmU6J0Nob29zZSByZXF1aXJlZCBpbnRlcmZhY2VzJyxzZWxlY3RlZEZpbGVDb25uZWN0b3I6JHNjb3BlLnNlbGVjdGVkRmlsZUNvbm5lY3Rvcn07XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdCAgXHJcblx0XHRcdFx0LyogaW50ZXJmYWNlTW9kYWwucmVzdWx0LnRoZW4oZnVuY3Rpb24gKHNlbGVjdGVkSXRlbSkgeyBcclxuXHRcdFx0XHRcdFx0XHQvLyRzY29wZS5mZC50SXRlbVZhbHVlPXNlbGVjdGVkSXRlbTsgLy8gLy9NSUdPUiBUT0RPIHZpZGpldCBkYSBsaSB0cmViYSBhbmd1bGFyLmNvcHkoc2VsZWN0ZWRJdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC50SXRlbVZhbHVlPWFuZ3VsYXIuY29weShzZWxlY3RlZEl0ZW0pOyAvLyBNSUdPUiBUT0RPIC0gVEVTVCBTQSBBTkdVTEFSIENPUFlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblx0XHRcdFx0XHRcdFx0Ly8gTUlHT1IgIFRPRE8gLVxyXG5cdFx0XHRcdFx0XHRcdC8vc2VsZWt0aXJhbmkgd2lkZ2V0IGltYSBcInJlc291cmNlSURcIiBpbnRlcmZhY2VcIiAtICByZWdpc3RyaXJhbW8gc2UgbmEgbmplZ292IFwiZXZlbnRcIlxyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdCRzY29wZS4kb24oJ3Jlc291cmNlSWQ6JytzZWxlY3RlZEl0ZW0sXHJcblx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbihldmVudCwgZGF0YSl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdyZXNvdXJjZUlEIHVodmFjZW4gdSBrdFVwbG9hZGVyISBkYXRhOicgKyAgZGF0YSk7XHJcblx0XHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHQvLyRzY29wZS5mZC5saXN0T2ZDb25uZWN0b3JzPSBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLmdldFJlZ2lzdGVyZWRJbnRlcmZhY2VzKHNlbGVjdGVkSXRlbSk7IFxyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdH0qL1xyXG5cdFxyXG4gICAgICAgICAgICB9IC8vaWYgc2hvd2ZpbGVjb25uZXRvciAgXHJcblx0XHR9OyAvLyBvcGVuIEZJTEVDT05ORUNUT1IgLSBVUExPQURFUlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICBcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdCBcdC8vIEZVTkNUSU9OIE9OU0VMRUNUIENBTExCQUNLIElJXHJcblx0XHRcdFx0XHQkc2NvcGUub25TZWxlY3RDYWxsYmFjazIgPSBmdW5jdGlvbiAoaXRlbSwgbW9kZWwsZmlsZUluZGV4KXtcclxuXHRcdFx0XHRcdFx0dmFyIGV2ZW50UmVzdWx0SWQ9aXRlbS5pZDtcclxuXHRcdFx0XHRcdFx0JHNjb3BlLmV2ZW50UmVzdWx0TmFtZT1pdGVtLk5hbWU7XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHQgLy9jb25zb2xlLmxvZyhcIm9uU2VsZWN0Q2FsbGJhY2sgSUk6XCIgKyAgJHNjb3BlLmV2ZW50UmVzdWx0TmFtZSsgJyAnICsgZXZlbnRSZXN1bHRJZCk7XHJcblxyXG5cdFx0XHRcdFx0XHQgICRzY29wZS5yZXNvdXJjZUlkPWV2ZW50UmVzdWx0SWQ7XHJcblx0XHRcdFx0XHRcdCAgJHNjb3BlLmlzUmVzb3VyY2VTZWxlY3RlZD10cnVlO1xyXG5cdFx0XHRcdFx0XHQgXHRcclxuXHRcdFx0XHRcdFx0XHRcdCRzY29wZS5mZC5maWxldHlwZT0kc2NvcGUucmVzb3VyY2VJZDsgXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHR9Ly9vblNlbGVjdENhbGxiYWNrIElJXHJcblx0XHRcdFx0IFxyXG5cdFx0XHRcdCBcclxuXHRcdFx0XHQgXHJcblx0XHRcdFx0IFxyXG5cdFx0XHRcdFx0Ly8gRlVOQ1RJT04gLSBPTl9TRUxFQ1RfRklMRVRZUEUgXHJcblx0XHRcdFx0XHQvLyBOQUtPTiDCilRPIFNFIFpBIFBPSkVESU5Bw4hOSSBGSUxFIE9EQUJFUkUgRklMRS1UWVBFICAtLT4gJHNjb3BlLnJlc291cmNlSWRcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0JHNjb3BlLm9uU2VsZWN0RmlsZVR5cGUgPSBmdW5jdGlvbiAoaXRlbSxmaWxlSW5kZXgpe1xyXG5cdFx0XHRcdFx0XHR2YXIgc2VsZWN0ZWRGaWxlVHlwZUlkPWl0ZW0uaWQ7XHJcblx0XHRcdFx0XHRcdCRzY29wZS5yZXNvdXJjZUlkPXNlbGVjdGVkRmlsZVR5cGVJZDtcclxuXHRcdFx0XHRcdFx0ICRzY29wZS5pc1Jlc291cmNlU2VsZWN0ZWQ9dHJ1ZTtcclxuXHRcdFx0ICAgICAgICAgICAgIGlmICgkc2NvcGUuZmlsZXNbZmlsZUluZGV4XS5maWxlUmVzb3VyY2VJRCE9c2VsZWN0ZWRGaWxlVHlwZUlkKSB7XHJcblx0XHRcdCAgICAgICAgICAgICAgJHNjb3BlLmZpbGVzW2ZpbGVJbmRleF0uZmlsZVJlc291cmNlSUQgPSBzZWxlY3RlZEZpbGVUeXBlSWQ7XHJcblx0XHRcdCAgICAgICAgICAgICAgJHNjb3BlLmZpbGVzW2ZpbGVJbmRleF0uZm9ybUxvYWRlZCA9IGZhbHNlO1xyXG5cdFx0XHQgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0IFxyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhcIm9uU2VsZWN0RmlsZVR5cGUgOlwiICsgc2VsZWN0ZWRGaWxlVHlwZUlkKTtcclxuXHRcdFxyXG5cdFx0XHRcdFx0XHQkc2NvcGUuZmlsZUluZGV4PWZpbGVJbmRleDtcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHQvL2lmICgkc2NvcGUuZmlsZXNbZmlsZUluZGV4XS5maWxlUmVzb3VyY2VJRD09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly9cdCRzY29wZS5nZXRSZXNvdXJjZUZvcm0gKCk7XHJcblx0XHRcdFx0XHRcdFx0XHQvL1x0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdC8vaWYgKCRzY29wZS5yZXNvdXJjZUlkICE9IHVuZGVmaW5lZCkge1x0XHJcblx0XHRcdFx0XHRcdFx0XHRcdC8vJHNjb3BlLmdldFJlc291cmNlRm9ybSAoKTtcclxuXHRcdFx0XHRcdFx0XHRcdC8vfVxyXG5cdFx0XHRcdFx0XHQgXHRcdFxyXG5cdFx0XHRcdFx0XHQvLyRzY29wZS5mZC5yZWxhdGVkPSRzY29wZS5yZXNvdXJjZUlkOyAvLyBvdm8gdmlza2E/Pz8gTUlHT1JcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdCRzY29wZS5zaG93TWV0YWRhdGEoZmlsZUluZGV4LCRzY29wZS5maWxlc1tmaWxlSW5kZXhdLmZpbGVSZXNvdXJjZUlEICk7XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHR2YXIgZXJyPSRzY29wZS50ZXN0UnVsZXMoKTtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRcdH0vL29uU2VsZWN0RmlsZVR5cGVcclxuXHRcdFx0XHQgXHJcblx0XHRcdFx0IFxyXG5cdFx0XHRcdCAgICBcclxuXHRcdFx0XHR2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG5cdFx0XHRcdHZhciB0eXBlPVwiZmlsZVwiOyAvLyBQUk9NSkVOSVRJIC0gWkFTQUQgSkUgSEFSRC1DT0RFRCAhISEhISBNSUdPUlxyXG5cdFx0XHRcdFx0IFxyXG5cdFx0XHRcdFx0IFxyXG5cdFx0XHRcdFx0Ly8gcG96aXZhIHNlIGl6IGt0VXBsb2FkZXIuaHRtbFxyXG5cdFx0XHRcdFx0JHNjb3BlLnJlbW92ZSA9IGZ1bmN0aW9uIChpbmRleCkge1xyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0JHNjb3BlLmZkLk1ldGFEYXRhLnNwbGljZShpbmRleCwxKTtcclxuXHRcdFx0XHRcdFx0JHNjb3BlLmlzT3Blbj10cnVlO1xyXG5cdFx0XHRcdFx0XHR2YXIgZXJyPSRzY29wZS50ZXN0UnVsZXMoKTtcdFxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0IFxyXG5cdFx0XHRcdFx0IFxyXG5cdFx0XHQvLyBQT1BVTkkgTElTVFUgIGxJU1QgT0YgRklMRSBUWVBFU1xyXG4gICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkJ5VHlwZShsYW5nLHR5cGUpLnRoZW4oXHJcblx0XHRcdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgJHNjb3BlLmxpc3RPZkZpbGVUeXBlcyA9IGRhdGEuZGF0YTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCBcclxuXHRcdFx0XHRcdFx0XHR9LGZ1bmN0aW9uKGVycm9yKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHR9KTtcclxuICAgICAgICAgICAgICAgIFx0ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG5cdFxyXG4gICAgICBcclxuICAgICBcclxuXHRcdFx0IH0sLy8gY29udHJvbGVyX2t0VXBsb2FkZXJfRU5EXHJcblx0XHRcdFxyXG5cclxuXHRcdFx0Ly8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgS1QtIFVQTE9BREVSICAgTElOSyBGVU5LQ0lKQSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdFx0XHRyZXF1aXJlOiAnXmZvcm0nLCAvLyBNSUdPUiAgLSBOT1ZPIERPREFPIFxyXG5cdFx0XHRsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzLGZvcm1DdHJsKSB7IC8vTUlHT1IgTk9WT1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLnVpVXBsb2FkZXIgPSB1aVVwbG9hZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQhPXVuZGVmaW5lZCkgc2NvcGUuZmQudWlVcGxvYWRlci5jcmVhdGVVcGxvYWRlcihzY29wZS5mZC5QcmVzZW50YXRpb25JZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL01JR09SIFRPRE8gLSBwcmlsYWdvZGl0aSB3aWRnZXRkZWZpbml0aW9uIHphIHVwbG9hZGVyIGRhIHNhbGplIGkgcG92ZXphbmkgcmVsYXRlZCBkYXRhc2V0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG91dF9maWVsZHMgPSBbJ3Jlc291cmNlSWQnXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgd2lkZ2V0RGVmaW5pdGlvbiA9IHtERUk6IFt7J25hbWUnOidyZXNvdXJjZUxpbmtSJywndmFsdWUnOlt7bmFtZToncmVzb3VyY2VJZCcsdmFsdWU6c2NvcGUuZmQuUmVsYXRlZH0se25hbWU6J3Jlc291cmNlUmVjb3JkSWQnLHZhbHVlOicnfV19XSxhY3Rpb25zOiBbe25hbWU6J1ByZXBhcmVEYXRhJyxzdGF0dXM6ZmFsc2V9XSxuYW1lOiAna3RVcGxvYWRlcicsbG9jYWxXaWRnZXRJZDpzY29wZS5mZC5Mb2NhbElkLHdpZGdldElkOiBzY29wZS5mZC5QcmVzZW50YXRpb25JZCx0YXNrSWQ6ICBzY29wZS5sVGFza0lkLHJlc291cmNlRGVmSWQgOiBzY29wZS5zZWxlY3RlZFJlc291cmNlLCBvdXRwdXQ6b3V0X2ZpZWxkcywgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3ZhciB3aWRnZXREZWZpbml0aW9uID0ge0RFSTogW3snbmFtZSc6J3Jlc291cmNlTGlua1InLCd2YWx1ZSc6ZmFsc2V9XSxhY3Rpb25zOiBbe25hbWU6J1ByZXBhcmVEYXRhJyxzdGF0dXM6ZmFsc2V9XSxuYW1lOiAna3RVcGxvYWRlcicsbG9jYWxXaWRnZXRJZDpzY29wZS5mZC5sb2NhbElkLHdpZGdldElkOiBzY29wZS5mZC5wcmVzZW50YXRpb25JZCx0YXNrSWQ6ICBzY29wZS5sVGFza0lkLHJlc291cmNlRGVmSWQgOiBzY29wZS5zZWxlY3RlZFJlc291cmNlLCBvdXRwdXQ6b3V0X2ZpZWxkcywgfTtcclxuXHRcdCAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUubG9jYWxXaWRnZXRJZCA9IFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UucmVnaXN0ZXJXaWRnZXQod2lkZ2V0RGVmaW5pdGlvbik7IC8vemFtaWplbml0aSBnZGplIHNlIHN2ZSBwb2phdmxqdWp1ZSBpIHN0YXZpdGkgTE9DQUwgVE9ET1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLkxvY2FsSWQ9c2NvcGUubG9jYWxXaWRnZXRJZDsgICAgICAgICBcclxuICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQudWlVcGxvYWRlci5yZW1vdmVBbGwoc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQpOyAvL01JR09SIFRFTVAtIFRSRUJBIG5la2FrbyBvYnJpc2F0aSBpbmljaWphbG5lIGZhamxvdmUga29kIHJlaWdzdHJhY2lqYSBhbGkgb3ZkamUgbmUgcmFkaSAhISFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKGVsZW1lbnQuZmlsZXMpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZWxlbVswXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmaWxlRWxlbWVudCcpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50WzBdLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmaWxlcyA9IGUudGFyZ2V0LmZpbGVzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC51aVVwbG9hZGVyLmFkZEZpbGVzKGZpbGVzLHNjb3BlLmZkLlByZXNlbnRhdGlvbklkKTtcdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5maWxlcyA9c2NvcGUuZmQudWlVcGxvYWRlci5nZXRGaWxlcyhzY29wZS5mZC5QcmVzZW50YXRpb25JZCk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVycj1zY29wZS50ZXN0UnVsZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICBcclxuICAgIFx0XHJcbiAgICAgICAgXHJcbiAgICAgICAgdmFyIGZpbGVDb3VudGVyID0gMDtcclxuXHRcdFx0Ly9zY29wZS5ydWxlcz1bXTtcclxuXHRcdFx0aWYgKHNjb3BlLmZkLk1ldGFEYXRhPT11bmRlZmluZWQpICBzY29wZS5mZC5NZXRhRGF0YT1bXTsgICAgICAgIFxyXG5cdFx0XHRzY29wZS5ydWxlcyA9ICBzY29wZS5mZC5NZXRhRGF0YTtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHQvLyBBREQgUlVMRSBERUZJTklUSU9OIC0gcG96aXZhIHNlIGl6IGt0VXBsb2FkZXIuaHRtbFxyXG5cdFx0XHRcdHNjb3BlLmFkZFJ1bGVEZWZpbml0aW9uPWZ1bmN0aW9uKG5hbWUsbWluLG1heCxtaW5Ub3RhbCl7XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdGlmIChtaW49PXVuZGVmaW5lZCkgbWluPTA7XHRcdFx0XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdGZvciAodmFyIGk9MSwgbD1zY29wZS5ydWxlcy5sZW5ndGg7IGk8bDsgaSsrKSBcclxuXHRcdFx0XHRcdFx0XHRcdGlmIChzY29wZS5ydWxlc1tpXS5uYW1lPT1uYW1lKSBuYW1lPScnO1xyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0aWYgKG5hbWUhPXVuZGVmaW5lZCAmJiBuYW1lICE9ICcnKSB7XHJcblx0XHRcdFx0XHRcdHNjb3BlLnJ1bGVzLnB1c2goeyduYW1lJzpuYW1lLCdtaW4nOm1pbiwnbWF4JzptYXh9KTtcclxuXHRcdFx0XHRcdFx0Ly9zY29wZS5ydWxlcy5taW5Ub3RhbD1taW5Ub3RhbDtcdFxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBzY29wZS5idG5fcmVtb3ZlID0gZnVuY3Rpb24oaW5kZXgsZmlsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyRsb2cuaW5mbygnZGVsZXRpbmc9JyArIGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3ZhciBzPXNjb3BlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3ZhciBmPWZvcm1DdHJsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC51aVVwbG9hZGVyLnJlbW92ZUZpbGUoZmlsZSxzY29wZS5mZC5QcmVzZW50YXRpb25JZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlcnI9c2NvcGUudGVzdFJ1bGVzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9OyAgICAgIFxyXG5cdFx0XHRcclxuXHJcbiAgICAgICAgICAgICAgICBzY29wZS5idG5fY2xlYW4gPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLnVpVXBsb2FkZXIucmVtb3ZlQWxsKHNjb3BlLmZkLlByZXNlbnRhdGlvbklkKTtcclxuICAgICAgICAgICAgICAgIH07XHJcblxyXG5cclxuICAgICAgICBzY29wZS50ZXN0UnVsZXMgPSBmdW5jdGlvbigpe1xyXG5cdFx0XHRcdFx0XHJcbiAgICAgICAgICAgICAgICB2YXIgZXJyTXNnPW51bGw7XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTE7IGkgPCBzY29wZS5ydWxlcy5sZW5ndGg7IGkrKykgeyAvL3NlYXJjaCBydWxlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmlsZXNGb3VuZD0wO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IodmFyIGogPSAwOyBqIDwgc2NvcGUuZmlsZXMubGVuZ3RoOyBqKysgKSB7Ly9zZWFyY2ggZmlsZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmlsZXNbal0uZmlsZVJlc291cmNlSUQgPT0gc2NvcGUucnVsZXNbaV0ubmFtZSkgZmlsZXNGb3VuZD1maWxlc0ZvdW5kKzE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlc0ZvdW5kIDwgc2NvcGUucnVsZXNbaV0ubWluKSB7Zm9ybUN0cmwudXBsb2FkZXJGb3JtLiRzZXRWYWxpZGl0eSgnTm90IGVub3VnaCBmaWxlIHR5cGVzJywgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHQgZWxzZSBmb3JtQ3RybC51cGxvYWRlckZvcm0uJHNldFZhbGlkaXR5KCdOb3QgZW5vdWdoIGZpbGUgdHlwZXMnLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlc0ZvdW5kID4gc2NvcGUucnVsZXNbaV0ubWF4KSB7Zm9ybUN0cmwudXBsb2FkZXJGb3JtLiRzZXRWYWxpZGl0eSgnVG9vIG1hbnkgZmlsZSB0eXBlcycsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHQgZWxzZSBmb3JtQ3RybC51cGxvYWRlckZvcm0uJHNldFZhbGlkaXR5KCdUb28gbWFueSBmaWxlIHR5cGVzJywgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0XHRcclxuXHRcdGlmIChzY29wZS5ydWxlcy5sZW5ndGg+MCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmlsZXMubGVuZ3RoIDwgc2NvcGUucnVsZXNbMF0ubWluKSBmb3JtQ3RybC51cGxvYWRlckZvcm0uJHNldFZhbGlkaXR5KCdNaW5pbXVtIGZpbGVzIG5lZWRlZCcsIGZhbHNlKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZm9ybUN0cmwudXBsb2FkZXJGb3JtLiRzZXRWYWxpZGl0eSgnTWluaW11bSBmaWxlcyBuZWVkZWQnLCB0cnVlKTsgfVxyXG4gIFxyXG5cdFx0XHRcdFx0Ly9lcnJNc2c9bnVsbDsgLy8gc2FtbyB6YSB0ZXN0ICEhISAgICAgTUFLTlVUSSBLQVNOSUpFRUUgISEhISAgICAgPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVyck1zZztcclxuXHRcdFx0XHRcdFxyXG4gICAgICAgICB9Ly90ZXN0X1JVTEVTXHJcbiAgICAgICAgICAgICAgIFxyXG5cdFx0XHJcbiAgICAgXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHRcdC8vIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQga3QtVVBMT0FERVIgQlROX1VQTE9BRFxyXG5cdFx0Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICAgc2NvcGUuYnRuX3VwbG9hZCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICBcdFx0XHRcdFxyXG5cdFx0XHQvLyBDSEVDSyBUSEUgUlVMRVMgRklSU1RcclxuXHRcdFx0dmFyIGVyck1zZz1zY29wZS50ZXN0UnVsZXMoKTtcclxuXHRcdFx0ZXJyTXNnPW51bGw7IC8vIHNhbW8gemEgdGVzdCAhISEgICAgIE1BS05VVEkgS0FTTklKRUVFRSAhISEhICAgICA8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRpZiAoZXJyTXNnPT1udWxsKSB7XHJcbiAgICAgICAgXHRcdHZhciBjc3JmX3Rva2VuID0gJGNvb2tpZXMuZ2V0KCdjc3JmdG9rZW4nKTsgLy8nbWlybyc7Ly8kY29va2llU3RvcmUuZ2V0KCdjc3JmdG9rZW4nKTtcclxuXHRcdFx0XHRcclxuICAgICAgICBcdFx0Ly8gWkEgc3Zha2kgRkFKTCBwb2plZGluYcOobm8gIVxyXG4gICAgICAgIFx0XHRzY29wZS5mZC51aVVwbG9hZGVyLnN0YXJ0VXBsb2FkKHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLHsgIFxyXG5cdFx0XHRcdHVybDogJy4uL2FwaS9maWxlLXVwbG9hZC8nLCBcclxuXHRcdFx0XHRoZWFkZXJzOiB7J1gtQ1NSRlRva2VuJyA6IGNzcmZfdG9rZW4gfSxcclxuXHRcdFx0XHRcdGNvbmN1cnJlbmN5OiAzLFxyXG5cdFx0XHRcdFx0Ly8gdSBkYXRhIG5hcHVuaXRpIHBvZGF0a2UgdmV6YW5lIHphIGZhamwgLSBmaWxlVHlwZSAsIElEIHJlc3Vyc2FcclxuXHRcdFx0XHRcdGRhdGE6IHtyZXNvdXJjZV9kZWZfaWQ6c2NvcGUuZmQubGlua2VkUmVzb3VyY2VEZWZJZCxyZXNvdXJjZV9pZDpzY29wZS5mZC5saW5rZWRSZXNvdXJjZUlkfSxcclxuXHRcdFx0XHRcdG9uUHJvZ3Jlc3M6IGZ1bmN0aW9uKGZpbGUpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0JHRpbWVvdXQoZnVuY3Rpb24oKSB7IGZpbGUuc3RhdHVzPSdVcGxvYWRpbmcuLi4nOyB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcblx0XHRcdFx0XHRvbkNvbXBsZXRlZDogZnVuY3Rpb24oZmlsZSwgcmVzcG9uc2Usc3RhdHVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlPUpTT04ucGFyc2UocmVzcG9uc2UpOyAvL2NvbnZlcnRpcmFtIHN0cmluZyB1IEpTT04gb2JqZWt0XHJcblx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0aWYgKHN0YXR1cz09MjAxKSB7XHJcblx0XHRcdFx0XHRcdFx0XHQvLyBOQUtPTiBTTU8gVVNQSkVTTk8gVVBMT0FEQUxJIEZJTEUgLCBQT1RSRUJBTiBNRVRBREFUQSBVUExPQURcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzcG9uc2UuLi4uIElEIGZhamxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZpbGUuZmlsZVJlc291cmNlSUQgLi4uIGplIGZpbGVfdHlwZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzY29wZS5yZXNvdXJjZURhdGEgLi4gc3ByZW1samVuaSBtZXRhIHBvZGFjaVxyXG5cdFx0XHRcdFx0XHRcdFx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKSB7IGZpbGUudXBsb2FkU3VjY2Vzcz10cnVlOyAgfSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcdFx0XHRcdC8vT1VUUFVUOiBkYXRhLnNhdmVkUmVzb3VyY2VJZCAuLiBJRCBtZXRhLXJlc3Vyc2Ega29qaSBqZSBwcmlkcnXCnmVuIGZhamx1ICh1bnV0YXIgMTEtaWNlIGlsaSAxMi1pY2UpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHRcdCBmaWxlLnJlc291cmNlRGF0YT17fTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9QUklQUkVNQSBzY29wZS5yZXNvdXJjZURhdGEgIFpBIFVQTE9BRCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZS5kYXNoYm9hcmQhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmllbGRJZD1cIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjPXNjb3BlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8ZmlsZS5kYXNoYm9hcmQud2lkZ2V0cy5sZW5ndGg7aSsrKSB7Ly9pZGVtIHBvIGdyaWRST1dcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wO2o8ZmlsZS5kYXNoYm9hcmQud2lkZ2V0c1tpXS5sYXlvdXQubGVuZ3RoO2orKylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrPTA7azxmaWxlLmRhc2hib2FyZC53aWRnZXRzW2ldLmxheW91dFtqXS5sYXlvdXQubGVuZ3RoO2srKylcdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkSWQ9J0ZpZWxkJytmaWxlLmRhc2hib2FyZC53aWRnZXRzW2ldLmxheW91dFtqXS5sYXlvdXRba10uaXRlbUlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGUuZGFzaGJvYXJkLndpZGdldHNbaV0ubGF5b3V0W2pdLmxheW91dFtrXS5kYnR5cGU9PSdpZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRJZD1maWVsZElkKydfaWQnLy9jb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkSWQ9J2lkJy8vY29kZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5yZXNvdXJjZURhdGFbZmllbGRJZF0gPSBmaWxlLmRhc2hib2FyZC53aWRnZXRzW2ldLmxheW91dFtqXS5sYXlvdXRba10uc0l0ZW1WYWx1ZVx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfS8vZm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogTUVUQVVQTE9BRCAqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlLnJlc291cmNlRGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZkamUgamUgc3ZlIGkgdXBkYXRlIG1vZGVsYSBpIGluc2VydCBtZXRhIHBkZGF0YWthIC0gbmFwcmF2bGplbmEgcG9zZWJuYSBEUkYgZnVua2NpamFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5tZXRhU3RhdHVzPSdTYXZpbmcgbWV0YWRhdGEuLi4nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmZpbGVNZXRhVXBsb2FkKHJlc3BvbnNlLGZpbGUuZmlsZVJlc291cmNlSUQsc2NvcGUuZmQubGlua2VkUmVzb3VyY2VJZCxzY29wZS5mZC5saW5rZWRSZXNvdXJjZURlZklkLCBmaWxlLmRhc2hib2FyZC53aWRnZXRzKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQudGhlbiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihkYXRhKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUubWV0YVN1Y2Nlc3M9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuc2hvd0ZpbGVNZXRhRGF0YT1mYWxzZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUubWV0YUVycm9yPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLm1ldGFTdGF0dXMgPSBlcnJvci5tc2c7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gLy9JRlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUubm9NZXRhID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVDb3VudGVyKys7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZpbGVzLmxlbmd0aCA9PSBmaWxlQ291bnRlcil7IC8vTUlHT1IgLU92YWogc2Ugb2tpZGEgYSBvbmFqIGRydWdpIG5hIDEyMyBpemdsZWRhIG5hXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJvb3RTY29wZS4kYnJvYWRjYXN0KCdJbml0aWF0ZVRhc2tGaWxlc1VwbG9hZGVkJyx7J3Jlc291cmNlX2lkJzpzY29wZS5mZC5saW5rZWRSZXNvdXJjZUlkLCdyZXNvdXJjZV9kZWZfaWQnOiBzY29wZS5mZC5saW5rZWRSZXNvdXJjZURlZklkfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgIGVsc2UgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2lmIGZpbGUgdXBsb2FkIGVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS51cGxvYWRFcnJvcj10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5zdGF0dXM9cmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0vL29uX2NvbXBsZXRlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAvL3N0YXJ0VXBsb2FkXHJcblx0XHR9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIC8vaWYgdGVzdCBlcnJvcmVkICAgICAgICAgIFxyXG5cdFx0fVxyXG4gICAgICAgIH07IC8vIEZVTkNUSU9OIGIubl91cDFvYWRcclxuXHJcbiAgICAgXHJcbiAgICAgIFxyXG4gICAgICBzY29wZS5Qcm9jZXNzRXZlbnQ9ZnVuY3Rpb24oZGF0YSlcclxuICAgICAge1xyXG4gICAgICAgICBmb3IgKHZhciBrPTA7azxkYXRhLmxlbmd0aDtrKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhW2tdLm5hbWU9PSdyZXNvdXJjZVJlY29yZElkJykgc2NvcGUuZmQubGlua2VkUmVzb3VyY2VJZCA9IGRhdGFba10udmFsdWU7IC8vVE9ETyAtIElMSiAtIG92byBiaSBpc3RvIHRyZWJhbGEgYml0aSB2YXJpamFibGEgLSBzdGEgYWtvIHByb21qZW5pbSBpbnRlcmZhY2Ugb2Rub3NubyBuYXppdiBwb2xqYSFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhW2tdLm5hbWU9PSdyZXNvdXJjZUlkJykgc2NvcGUuZmQubGlua2VkUmVzb3VyY2VEZWZJZCA9IGRhdGFba10udmFsdWU7ICAvL1RPRE8tIElMSiAtIG92byBiaSBpc3RvIHRyZWJhbGEgYml0aSB2YXJpamFibGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5saW5rZWRSZXNvdXJjZURlZklkPjAgJiYgc2NvcGUuZmQubGlua2VkUmVzb3VyY2VJZD4wKSBzY29wZS5mZC51cGxvYWRSZWFkeSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICBcclxuICAgICAgICAgaWYgKHNjb3BlLmZpbGVzLmxlbmd0aD4wICYmIHNjb3BlLmZkLnVwbG9hZFJlYWR5KSBzY29wZS5idG5fdXBsb2FkKCk7ICAvLyBwb3ppdmEgVVBMT0FEIC0gTUlHT1IgVE9ETyAtIHVwbG9hZCB0cmViYSBzYW1vIGFrbyBpbWEgZmFqbCAhISFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgfTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgXHRcclxuICAgICAgXHRcdFx0XHJcblx0XHJcbiAgICAgXHQgIC8vIG5lIHpuYW0gZGEgbGkgY2UgdSBvdm9qIGxpbmsgZnVua2Npamkgd2lkZ2V0IHZlYyBpbWF0aSByZXNvdXJjZV9pZFxyXG4gICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBzY29wZS5mb3JtVHlwZT1zY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV90eXBlO1xyXG4gICAgICAgICAgLypcclxuICAgICAgICAgIGlmIChzY29wZS5mZC5QcmVzZW50YXRpb25JZCE9dW5kZWZpbmVkICYmIHNjb3BlLmZkLlByZXNlbnRhdGlvbklkIT1udWxsKSAgIHtcclxuICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5nZXRXaWRnZXREZXBlbmRlbmNpZXMoc2NvcGUudGFza0lkLHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLHNjb3BlLmZvcm1UeXBlKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLnRJdGVtVmFsdWU9ZGF0YS5kYXRhO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vb3ZvIGplIGRhIHRyZW51dG5vIHJhZGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5wcm9jZXNzV2lkZ2V0RGVwZW5kZW5jaWVzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICovXHJcbiAgICAgICAgICAvL01JR09SIC0gcG9jaXN0aSBmYWpsb3ZlIGthZCBkb2JpamVzIEluaXRhdGVUYXNrIGV2ZW50XHJcblx0XHQgIHNjb3BlLiRvbignUHJvY2Vzc1Rhc2tXaWRnZXRzJyxmdW5jdGlvbihldmVudCwgZGF0YSl7XHJcbiAgICAgICAgICAgLy9zY29wZS5idG5fY2xlYW4oKTsgLy8gTUlHT1IgLSBQUklWUkVNRU5PIE1BS05VTyBKRVIgQ0UgQklUSSBWSVNBSyBLQUQgUFJPUkFESSBPVk8gR09SRVxyXG4gICAgICAgICAgIGlmIChzY29wZS5maWxlcy5sZW5ndGg+MCAmJiBzY29wZS5mZC51cGxvYWRSZWFkeSkgc2NvcGUuYnRuX3VwbG9hZCgpO1xyXG4gICAgICAgICAgfSk7XHJcblxyXG5cdFx0ICBcclxuXHRcdCAgXHJcblx0XHQgIC8vTUlHT1IgTk9WTyBUT0RPXHJcblx0XHQgIHNjb3BlLmludGVyZmFjZUhhbmRsZXI9IGZ1bmN0aW9uIChldmVudCxkYXRhKSB7XHJcblx0XHRcdFx0XHRcdFx0c2NvcGUudGVzdD0wO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHQgLy8gc2NvcGUuZmQubGlua2VkUmVzb3VyY2VJZCA9IGRhdGEucmVzb3VyY2VfaWQ7XHJcblx0XHRcdCAgIC8vc2NvcGUuZmQubGlua2VkUmVzb3VyY2VEZWZJZCA9IGRhdGEucmVzb3VyY2VfZGVmX2lkO1xyXG5cdFx0XHQgIFxyXG5cdFx0XHQgICAvL3Njb3BlLmJ0bl91cGxvYWQoKTsgIFxyXG5cdFx0ICB9XHJcblx0XHQgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgXHJcbiAgICAgfSAvL2xpbmsgZGlyZWN0aXZlICdrdFVwbG9hZGVyJ1xyXG4gICAgfTtcclxufTtcbid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdFVwbG9hZEZpbGUgKCR0aW1lb3V0LHVpVXBsb2FkZXIsTWVzc2FnaW5nU2VydmljZSxXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLFRhc2tEYXRhU2VydmljZSxVdGlsaXR5U2VydmljZSwkY29va2llcywkcm9vdFNjb3BlLEthdGFseW9TdGF0ZU1hbmFnZXIsJHNjZSwgJGxvY2F0aW9uKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICByZXN0cmljdDogJ0EnLCBcclxuICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RVcGxvYWRGaWxlLmh0bWwnLFxyXG4gICAgICAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24gKCRzY29wZSwgJGVsZW1lbnQsJHJvb3RTY29wZSwkdWliTW9kYWwsTWVzc2FnaW5nU2VydmljZSxQcm9jZXNzaW5nU2VydmljZSwkbG9nLEdyaWRzdGVyU2VydmljZSxXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLFV0aWxpdHlTZXJ2aWNlLEthdGFseW9TdGF0ZU1hbmFnZXIsJHRpbWVvdXQsJHN0YXRlUGFyYW1zKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIlUga29udHJvbGVydVwiKTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5nc3J2YyA9IEdyaWRzdGVyU2VydmljZVxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmFuaW1hdGlvbnNFbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzPT11bmRlZmluZWQpICAkc2NvcGUuZmQubG9jYWxWYXJzID0ge2RhdGFzZXRNYXBwZXJUeXBlOjB9O1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5maWxlcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5oaWRlQWxsPXRydWVcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC51cGxvYWRSZWFkeSA9IHRydWVcclxuXHRcdFx0XHQkc2NvcGUuQ1RSTD1cImt0VXBsb2FkRklsZVwiXHJcblxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnBhcmVudFJlc291cmNlWyRzY29wZS5mZC5VdWlkUmVmXSA9ICRzY29wZS5mZFxyXG5cclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2hvd01lbnUgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5TaG93VXBsb2FkRmlsZSA9IHRydWVcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93QWxsPSBmdW5jdGlvbih4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgICAgIC8vICRzY29wZS5mZC5sb2NhbFZhcnMuaGlkZUFsbCA9IHhcclxuICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZiBvZiAkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYuaGlkZUZvcm0gPSB4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRQdWJsaXNoZWRSZXNvdXJjZUJ5SWQgPSBmdW5jdGlvbihpZCxpbmRleCkgXHJcbiBcclxuICAgICAgICAgICAge1xyXG4gICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMucnVsZXNbaW5kZXhdLkZvcm1EZWY9PT11bmRlZmluZWQgfHwgJHNjb3BlLmZkLlBhcmFtZXRlcnMucnVsZXNbaW5kZXhdLkZvcm1EZWY9PT1udWxsKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIHBvcyA9ICRzY29wZS5mZC5saXN0T2ZGaWxlVHlwZXMubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoaWQpO1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAocG9zPj0wKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UHVibGlzaGVkUmVzb3VyY2VCeUlkKGlkKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5QYXJhbWV0ZXJzLnJ1bGVzW2luZGV4XS5Gb3JtRGVmID0gZGF0YS5kYXRhLkZvcm1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUmVsYXRlZCA9ICRzY29wZS5mZC5QYXJhbWV0ZXJzLnJ1bGVzW2luZGV4XS5SZXNvdXJjZURlZlVpZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLmZkLlJlbGF0ZWQgPSAkc2NvcGUuZmQubG9jYWxWYXJzLmxpc3RPZkZpbGVUeXBlc1twb3NdLlJlc291cmNlRGVmSWRcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUudGFza0lkPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VEZWZVaWQ7XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnRhc2tJZD09dW5kZWZpbmVkKSAkc2NvcGUudGFza0lkPTA7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnRhc2tJZD0kc2NvcGUudGFza0lkO1xyXG4gICAgICAgICAgICAgICAgLy8kc2NvcGUuZmQuUGFyZW50RGF0YXNldERlZklkPSRzY29wZS5mZC5SZWxhdGVkO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnByZXZUYXNrRXhlSWQgPSAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wcmV2X3Rhc2tfaWQ7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1UeXBlPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV90eXBlO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnNvdXJjZV90eXBlPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uc291cmNlX3R5cGU7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUudGFza0luaXRpYXRlSWQgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRhc2tfaW5pdGlhdGVfaWQ7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUudGFza0V4ZWN1dGVJZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udGFza19leGVjdXRlX2lkO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1EZWZpbml0aW9uID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb247XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlUmVjb3JkSWQ9MDtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEZWZpbml0aW9uID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvblxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1EZWZpbml0aW9uID0gJHNjb3BlLmZvcm1EZWZpbml0aW9uIHx8IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUudGFza0luaXRpYXRlSWQgPSAkc2NvcGUudGFza0luaXRpYXRlSWQgfHwgMFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tFeGVjdXRlSWQgPSAkc2NvcGUudGFza0V4ZWN1dGVJZCB8fCAwXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucHJldlRhc2tFeGVJZCA9ICRzY29wZS5wcmV2VGFza0V4ZUlkIHx8IDBcclxuXHRcdFx0XHRpZiAoJHNjb3BlLmZkLmxvY2FsVmFycz09dW5kZWZpbmVkKSAgJHNjb3BlLmZkLmxvY2FsVmFycz17fVxyXG4gXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnRvZ2dsZURyb3Bkb3duID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93TWVudSA9ICAkc2NvcGUuZmQubG9jYWxWYXJzLnNob3dNZW51ID8gZmFsc2U6IHRydWUgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV90eXBlPT0naScpICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQudGFza0luc3RhbmNlSWQgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRhc2tfaW5pdGlhdGVfaWQ7XHJcbiAgICAgICAgICAgICAgICAgICB9ZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC50YXNrSW5zdGFuY2VJZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udGFza19leGVjdXRlX2lkO1xyXG4gICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5zaG93UHJvcGVydGllcz1mdW5jdGlvbihkYXRhc2V0TWFwcGVyVHlwZSxzaG93UHJvcGVydGllc1JpZ2h0KVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSA9IGRhdGFzZXRNYXBwZXJUeXBlO1xyXG4gICAgICAgICAgICAgICAgfWVsc2VcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wIHx8ICRzY29wZS5mZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGUhPWRhdGFzZXRNYXBwZXJUeXBlKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSA9IGRhdGFzZXRNYXBwZXJUeXBlO1xyXG4gICAgICAgICAgICAgICAgICAgZWxzZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPTA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoc2hvd1Byb3BlcnRpZXNSaWdodCkgJHNjb3BlLmdzcnZjLnNldEZpZWxkUHJvcGVydGllcygkc2NvcGUuZmQpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgfTtcclxuICAgICAgXHJcbiAgICAgICAgICAgIFxyXG5cdFx0ICAgICAgIFxyXG4gICAgICAgICAgICB2YXIgb3V0X2ZpZWxkcyA9IFsncmVzb3VyY2VJZCddO1xyXG4gICAgICAgICAgICB2YXIgd2lkZ2V0RGVmaW5pdGlvbiA9IHtuYW1lOiAna3RVcGxvYWRGaWxlV2lkZ2V0JyxcclxuICAgICAgICAgICAgd2lkZ2V0SWQ6ICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCx0YXNrX2luaXRpYXRlX2lkOiRzY29wZS50YXNrSW5pdGlhdGVJZCx0YXNrX2V4ZWN1dGVfaWQ6JHNjb3BlLnRhc2tFeGVjdXRlSWQsdGFza0lkOiAgJHNjb3BlLmxUYXNrSWQscmVzb3VyY2VEZWZJZCA6ICRzY29wZS5mZC5SZWxhdGVkLCBvdXRwdXQ6b3V0X2ZpZWxkcywgfTtcclxuICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5sb2NhbFdpZGdldElkID0gV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5yZWdpc3RlcldpZGdldCh3aWRnZXREZWZpbml0aW9uKTtcclxuICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5Mb2NhbElkPSRzY29wZS5mZC5sb2NhbFZhcnMubG9jYWxXaWRnZXRJZDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICRzY29wZS5mZC5Mb2NhbElkPSRzY29wZS5mZC5sb2NhbFZhcnMubG9jYWxXaWRnZXRJZDtcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5VdWlkUmVmPT11bmRlZmluZWQpICRzY29wZS5mZC5VdWlkUmVmPVV0aWxpdHlTZXJ2aWNlLnV1aWR2NCgpICAgICAgIFxyXG4gICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLmtzbSA9IEthdGFseW9TdGF0ZU1hbmFnZXI7XHJcbiAgICAgICAgICAgIGxldCBkZXBlbmRlbnRfZmllbGRfcGlkID0gJHNjb3BlLmZkLkxvY2FsSWQ7XHJcbiAgICAgICAgICAgIGxldCBzdWJzY3JpYmVkU3ViamVjdFBpZCA9IFwiZm9ybURlZmluaXRpb25TdGF0ZVwiKyRzY29wZS50YXNrSWQrJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX3R5cGU7XHJcbiAgICAgICAgICAgIGxldCBkZXBlbmRlbnRfZmllbGRfcGlkMlxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuXHJcblx0XHRcclxuICAgICAgICBsZXQgdmFsdWVTdGF0ZT0gJHNjb3BlLmtzbS5hZGRTdWJqZWN0KCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZV9zdGF0ZV9pZCsnLScrJHNjb3BlLmZkLlV1aWRSZWYsJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkKTtcclxuICAgICAgICBsZXQgdmFsdWVTdGF0ZU5hbWUgPSB2YWx1ZVN0YXRlLnN1YmplY3QubmFtZTtcclxuICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgbGV0IHVwbG9hZF9hY3Rpb24gPSBmdW5jdGlvbihkYXRhKXtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgbGV0IHN0YXRlID0gdmFsdWVTdGF0ZS5zdWJqZWN0LmdldFN0YXRlQ2hhbmdlc1xyXG4gICAgICAgICAgaWYgKHN0YXRlPT11bmRlZmluZWQpIHN0YXRlPXt9XHJcbiAgICAgICAgICBpZiAoZGF0YT8uYWN0aW9uX2luZGV4IT11bmRlZmluZWQpIHN0YXRlWydhY3Rpb25faW5kZXgnXSA9IGRhdGEuYWN0aW9uX2luZGV4XHJcbiAgICAgICAgICB2YWx1ZVN0YXRlLnN1YmplY3Quc2V0U3RhdGVDaGFuZ2VzID0gc3RhdGVcclxuICAgICAgICAgICRzY29wZS5idG5fdXBsb2FkKHZhbHVlU3RhdGUsZGF0YT8uYWN0aW9uX2luZGV4KVxyXG4gICAgICAgICAgXHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICBsZXQgYWN0aW9uX3VwbG9hZCA9ICRzY29wZS5rc20uYWRkQWN0aW9uKHZhbHVlU3RhdGVOYW1lLFwidXBsb2FkRmlsZVwiLHVwbG9hZF9hY3Rpb24pO1xyXG5cclxuICAgICAgICAkc2NvcGUuZmQuc2hvd01ldGFkYXRhID0gZnVuY3Rpb24oZmlsZUluZGV4LGZpbGVJZCxmb3JtX2RlZmluaXRpb24peyBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzW2ZpbGVJbmRleF0uZm9ybVBhcmFtcyA9IHtmb3JtVmlld1R5cGU6Mn07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzW2ZpbGVJbmRleF0uZ3JpZHN0ZXJUeXBlID0gXCJmaWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzW2ZpbGVJbmRleF0uZGFzaGJvYXJkPT09dW5kZWZpbmVkKSAkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzW2ZpbGVJbmRleF0uZGFzaGJvYXJkPXt9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZXNbZmlsZUluZGV4XS51cGxvYWRTdWNjZXNzIHx8ICEkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzW2ZpbGVJbmRleF0ubWV0YVN1Y2Nlc3MpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5maWxlc1tmaWxlSW5kZXhdLmRhc2hib2FyZC5mb3JtRGF0YT1be31dO1xyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZXNbZmlsZUluZGV4XS5oaWRlRm9ybSA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZXNbZmlsZUluZGV4XS5kYXNoYm9hcmQud2lkZ2V0cz17bGF5b3V0OmZvcm1fZGVmaW5pdGlvbn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZXNbZmlsZUluZGV4XS5mb3JtTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuXHRcdFx0ICB9O1xyXG4gICAgICBcclxuICAgICAgXHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRlVOQ1RJT04gT05TRUxFQ1QgQ0FMTEJBQ0sgSUlcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5vblNlbGVjdENhbGxiYWNrMiA9IGZ1bmN0aW9uIChpdGVtLCBtb2RlbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5zZWxlY3RlZEZpbGVOYW1lPWl0ZW0ubmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuc2VsZWN0ZWRGaWxlVHlwZT1pdGVtXHJcblxyXG4gICAgICAgICAgICAgICAgfS8vb25TZWxlY3RDYWxsYmFjayBJSVxyXG4gICAgICAgICAgICAgICAgIFxyXG5cdFx0XHRcdCBcclxuXHRcdFx0XHQgJHNjb3BlLmZkLmFkZEZpbGVzQ2xpY2sgPSBmdW5jdGlvbigpXHJcblxyXG4gICAgICAgICAgICAgICAgIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbGVXaWRnZXQnKyRzY29wZS5mZC5QcmVzZW50YXRpb25JZCkuY2xpY2soKVxyXG4gICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHQgXHJcbiAgICAgICAgICAgICAgICAvLyBGVU5DVElPTiAtIE9OX1NFTEVDVF9GSUxFVFlQRSBcclxuICAgICAgICAgICAgICAgIC8vIE5BS09OIFNUTyBTRSBaQSBQT0pFRElOQWNOSSBGSUxFIE9EQUJFUkUgRklMRS1UWVBFICAtLT4gJHNjb3BlLnJlc291cmNlSWRcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLm9uU2VsZWN0RmlsZVR5cGUgPSBmdW5jdGlvbiAoaXRlbSxmaWxlSW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWRGaWxlVHlwZUlkPWl0ZW0uUmVzb3VyY2VEZWZVaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmb3JtX2RlZlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmlzUmVzb3VyY2VTZWxlY3RlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmxvY2FsVmFycy5maWxlc1tmaWxlSW5kZXhdLmZpbGVSZXNvdXJjZUlEIT1zZWxlY3RlZEZpbGVUeXBlSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZXNbZmlsZUluZGV4XS5maWxlUmVzb3VyY2VJRCA9IHNlbGVjdGVkRmlsZVR5cGVJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZXNbZmlsZUluZGV4XS5maWxlUHVibGlzaElkID0gaXRlbS5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZXNbZmlsZUluZGV4XS53aWRnZXRJZCA9ICRzY29wZS5mZC5QcmVzZW50YXRpb25JZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZXNbZmlsZUluZGV4XS5mb3JtTG9hZGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzW2ZpbGVJbmRleF0uZmlsZVR5cGVTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAvL2Zvcm1fZGVmID0gaXRlbS5Gb3JtIC0tIGZvcm0gaXMgbm90IGhlcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5maWxlSW5kZXg9ZmlsZUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnNob3dNZXRhZGF0YShmaWxlSW5kZXgsJHNjb3BlLmZkLmxvY2FsVmFycy5maWxlc1tmaWxlSW5kZXhdLmZpbGVSZXNvdXJjZUlELGZvcm1fZGVmICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXJyPSRzY29wZS5mZC50ZXN0UnVsZXMoKTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0vL29uU2VsZWN0RmlsZVR5cGVcclxuXHRcdFx0XHQgXHJcblx0XHRcdFx0IFxyXG5cdFx0XHRcdCAgICBcclxuXHRcdFx0XHR2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG5cdFx0XHRcdHZhciB0eXBlPVwiZmlsZVwiOyAvLyBQUk9NSkVOSVRJIC0gWkFTQUQgSkUgSEFSRC1DT0RFRCAhISEhISBNSUdPUlxyXG5cdFx0XHRcdFx0IFxyXG5cdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHBveml2YSBzZSBpeiBrdFVwbG9hZEZpbGUuaHRtbFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5sb2FkRm9ybSA9IGZ1bmN0aW9uIChpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5zZWxlY3RlZFJ1bGVJbmRleCA9IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlBhcmFtZXRlcnMucnVsZXNbaW5kZXhdLmZvcm1EYXRhPVt7fV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5Mb2FkZWRGb3JtID0ge2xheW91dDokc2NvcGUuZmQuUGFyYW1ldGVycy5ydWxlc1tpbmRleF0uRm9ybURlZn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlBhcmFtZXRlcnMucnVsZXNbaW5kZXhdLmdyaWRzdGVyVHlwZSA9IFwiZmlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5QYXJhbWV0ZXJzLnJ1bGVzW2luZGV4XS5mb3JtUGFyYW1zID0ge2Zvcm1WaWV3VHlwZToxLHNob3dHcmlkTmF2aWdhdGlvbjp0cnVlfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuc2VsZWN0ZWRSdWxlSW5kZXggPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlBhcmFtZXRlcnMucnVsZXNbaW5kZXhdLmZvcm1Mb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuXHRcdFx0XHRcdC8vIHBveml2YSBzZSBpeiBrdFVwbG9hZEZpbGUuaHRtbFxyXG5cdFx0XHRcdFx0JHNjb3BlLmZkLnJlbW92ZSA9IGZ1bmN0aW9uIChpbmRleCkge1xyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0JHNjb3BlLmZkLlBhcmFtZXRlcnMucnVsZXMuc3BsaWNlKGluZGV4LDEpO1xyXG5cdFx0XHRcdFx0XHQkc2NvcGUuaXNPcGVuPXRydWU7XHJcblx0XHRcdFx0XHRcdHZhciBlcnI9JHNjb3BlLmZkLnRlc3RSdWxlcygpO1x0XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyBQT1BVTkkgTElTVFUgIGxJU1QgT0YgUFVCTElTSEVEIEZJTEUgVFlQRVNcclxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5HZXRQdWJsaXNoZWRSZXNvdXJjZXNCeVR5cGUodHlwZSwnZm9ybScpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChkYXRhKSB7ICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxpc3RPZkZpbGVUeXBlcyA9IGRhdGEuZGF0YTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBhcmFtZXRlcnMucnVsZXMubGVuZ3RoPjEpICRzY29wZS5mZC5zaG93RmlsZVNlbGVjdCA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5ydWxlcy5sZW5ndGg9PTEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5zaG93RmlsZVNlbGVjdCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlJlbGF0ZWQgPSAkc2NvcGUuZmQuUGFyYW1ldGVycy5ydWxlc1swXS5SZXNvdXJjZURlZklEXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlB1Ymxpc2hJZCA9ICRzY29wZS5mZC5QYXJhbWV0ZXJzLnJ1bGVzWzBdLmlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5nZXRQdWJsaXNoZWRSZXNvdXJjZUJ5SWQoJHNjb3BlLmZkLlB1Ymxpc2hJZCwwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIFx0ICAgICAgICAgICAgXHJcbiAgICAgJHNjb3BlLmZkLmdldFByZXZpb3VzVGFza1dpZGdldCAgPSBmdW5jdGlvbihkZWlUeXBlKVxyXG4gICAge1xyXG4gICAgICB2YXIgcFRhc2tQa2cgPSBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLmdldFByZXZUYXNrRGF0YSgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnByZXZfdGFza19pZCk7XHJcbiAgICAgICAgICAgICB2YXIgZGF0YXNldElkPTAsZGF0YXNldFJlY29yZElkPTAscFRhc2tEYXRhLHBUYXNrRGF0YUFycmF5O1xyXG4gICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHBUYXNrUGtnKSlcclxuICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwVGFza0RhdGFBcnJheSA9IFtwVGFza1BrZ107XHJcbiAgICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBUYXNrRGF0YUFycmF5ID0gcFRhc2tQa2c7ICAgICAgICBcclxuICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIGZvciAobGV0IGw9MDtsPHBUYXNrRGF0YUFycmF5Lmxlbmd0aDtsKyspXHJcbiAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcFRhc2tEYXRhID0gcFRhc2tEYXRhQXJyYXlbbF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBUYXNrRGF0YS5ERUkhPXVuZGVmaW5lZCAmJiBwVGFza0RhdGEuREVJIT1udWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxwVGFza0RhdGEuREVJLmxlbmd0aDtpKyspXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBUYXNrRGF0YS5ERUlbaV0ubmFtZT09ZGVpVHlwZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBUYXNrRGF0YS5ERUlbaV0udmFsdWUhPXVuZGVmaW5lZCAmJiBwVGFza0RhdGEuREVJW2ldLnZhbHVlIT1udWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wO2o8cFRhc2tEYXRhLkRFSVtpXS52YWx1ZS5sZW5ndGg7aisrKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBUYXNrRGF0YS5ERUlbaV0udmFsdWVbal0ubmFtZT09XCJyZXNvdXJjZUlkXCIgJiYgcFRhc2tEYXRhLkRFSVtpXS52YWx1ZVtqXS52YWx1ZSE9dW5kZWZpbmVkKSBkYXRhc2V0SWQ9cFRhc2tEYXRhLkRFSVtpXS52YWx1ZVtqXS52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBUYXNrRGF0YS5ERUlbaV0udmFsdWVbal0ubmFtZT09XCJyZXNvdXJjZVJlY29yZElkXCIgJiYgcFRhc2tEYXRhLkRFSVtpXS52YWx1ZVtqXS52YWx1ZSE9dW5kZWZpbmVkKSBkYXRhc2V0UmVjb3JkSWQ9cFRhc2tEYXRhLkRFSVtpXS52YWx1ZVtqXS52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgcmV0dXJuIHsnZGF0YXNldElkJzpkYXRhc2V0SWQsJ2RhdGFzZXRSZWNvcmRJZCc6ZGF0YXNldFJlY29yZElkfTtcclxuICAgIH07XHJcblx0XHJcbiAgICAkc2NvcGUuZmQubG9jYWxWYXJzLlJlc2V0VXBsb2FkID0gZnVuY3Rpb24oKSBcclxuIFxyXG4gICAge1xyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuZmlsZXM9W11cclxuICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLlNob3dVcGxvYWRGaWxlID0gdHJ1ZVxyXG4gICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMuc2V0dXBGaWxlRWxlbWVudCgpXHJcbiAgICB9XHJcbiAgICBcclxuICAgICRzY29wZS5mZC5sb2NhbFZhcnMucHJvY2Vzc1Rhc2tSZXR1cm4gPSBmdW5jdGlvbihkYXRhKVxyXG4gICAge1xyXG5cclxuICAgICAgICAgICAgIGlmIChkYXRhIT11bmRlZmluZWQpe1xyXG4gICAgICAgICAgICAgICAgbGV0IHJ2XHJcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICBydiAgPSBkYXRhXHJcbiAgICAgICAgICAgICAgICB9ZWxzZSBydiA9W2RhdGFdXHJcblxyXG4gICAgICAgICAgICAgICAgICBmb3IodmFyIGk9MDtpPHJ2Lmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT1ydltpXS53aWRnZXRJZClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnNldERhdGEocnZbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAvLyAkc2NvcGUuZmQubG9jYWxWYXJzLnNldEZpZWxkKCRzY29wZS5mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0LCdSZWFkT25seScsdHJ1ZSk7IC8vc2V0IGFsbCBlbGVtZW50cyByZWFkLW9ubHlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAgJHNjb3BlLiRvbignSW5pdGlhdGVUYXNrUG9zdFByb2Nlc3MnKyRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udHJhbnNhY3Rpb25faWQsZnVuY3Rpb24oZXZlbnQsIGRhdGEpe1xyXG4gICAgICAgICAgICAkc2NvcGUuZmQubG9jYWxWYXJzLnByb2Nlc3NUYXNrUmV0dXJuKGRhdGEpXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAkc2NvcGUuJG9uKCdFeGVjdXRlVGFza1Bvc3RQcm9jZXNzJyskc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRhc2tfZXhlY3V0ZV9pZCxmdW5jdGlvbihldmVudCwgZGF0YSl7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICRzY29wZS5mZC5sb2NhbFZhcnMucHJvY2Vzc1Rhc2tSZXR1cm4oZGF0YSlcclxuICAgICAgICAgICAgJHNjb3BlLmZkLmxvY2FsVmFycy5TaG93VXBsb2FkRmlsZSA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICB9KTtcclxuICAgICBcclxuXHRcdFx0IH0sLy8gY29udHJvbGVyX2t0VXBsb2FkRmlsZV9FTkRcclxuXHRcdFx0XHJcblxyXG5cdFx0XHQvLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICBLVC1VUExPQUQtRklMRSAgIExJTksgRlVOS0NJSkEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHRcdFx0cmVxdWlyZTogJ15mb3JtJywgXHJcblx0XHRcdGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMsZm9ybUN0cmwpIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5sb2NhbFZhcnM9PXVuZGVmaW5lZCkgIHNjb3BlLmZkLmxvY2FsVmFycyA9IHtkYXRhc2V0TWFwcGVyVHlwZTowfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5TaG93VXBsb2FkRmlsZSA9IHRydWVcclxuICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuZmQuUGFyYW1ldGVycz09dW5kZWZpbmVkIHx8IHNjb3BlLmZkLlBhcmFtZXRlcnM9PW51bGwpIHNjb3BlLmZkLlBhcmFtZXRlcnM9e307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLlBhcmFtZXRlcnMucnVsZXM9PXVuZGVmaW5lZCB8fCBzY29wZS5mZC5QYXJhbWV0ZXJzLnJ1bGVzPT1udWxsKSBzY29wZS5mZC5QYXJhbWV0ZXJzLnJ1bGVzPVtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLnVpVXBsb2FkZXIgPSB1aVVwbG9hZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5QcmVzZW50YXRpb25JZCE9dW5kZWZpbmVkKSBzY29wZS5mZC51aVVwbG9hZGVyLmNyZWF0ZVVwbG9hZGVyKHNjb3BlLmZkLlByZXNlbnRhdGlvbklkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTUlHT1IgVE9ETyAtIHByaWxhZ29kaXRpIHdpZGdldGRlZmluaXRpb24gemEgdXBsb2FkZXIgZGEgc2FsamUgaSBwb3ZlemFuaSByZWxhdGVkIGRhdGFzZXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb3V0X2ZpZWxkcyA9IFsncmVzb3VyY2VJZCddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3aWRnZXREZWZpbml0aW9uID0ge0RFSTogW3snbmFtZSc6J3Jlc291cmNlTGlua1InLCd2YWx1ZSc6W3tuYW1lOidyZXNvdXJjZUlkJyx2YWx1ZTpzY29wZS5mZC5SZWxhdGVkfSx7bmFtZToncmVzb3VyY2VSZWNvcmRJZCcsdmFsdWU6Jyd9XX1dLGFjdGlvbnM6IFt7bmFtZTonUHJlcGFyZURhdGEnLHN0YXR1czpmYWxzZX1dLG5hbWU6ICdrdFVwbG9hZGVyJyxsb2NhbFdpZGdldElkOnNjb3BlLmZkLkxvY2FsSWQsd2lkZ2V0SWQ6IHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLHRhc2tJZDogIHNjb3BlLmxUYXNrSWQscmVzb3VyY2VEZWZJZCA6IHNjb3BlLnNlbGVjdGVkUmVzb3VyY2UsIG91dHB1dDpvdXRfZmllbGRzLCB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdmFyIHdpZGdldERlZmluaXRpb24gPSB7REVJOiBbeyduYW1lJzoncmVzb3VyY2VMaW5rUicsJ3ZhbHVlJzpmYWxzZX1dLGFjdGlvbnM6IFt7bmFtZTonUHJlcGFyZURhdGEnLHN0YXR1czpmYWxzZX1dLG5hbWU6ICdrdFVwbG9hZGVyJyxsb2NhbFdpZGdldElkOnNjb3BlLmZkLmxvY2FsSWQsd2lkZ2V0SWQ6IHNjb3BlLmZkLnByZXNlbnRhdGlvbklkLHRhc2tJZDogIHNjb3BlLmxUYXNrSWQscmVzb3VyY2VEZWZJZCA6IHNjb3BlLnNlbGVjdGVkUmVzb3VyY2UsIG91dHB1dDpvdXRfZmllbGRzLCB9O1xyXG5cdFx0ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5sb2NhbFdpZGdldElkID0gV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5yZWdpc3RlcldpZGdldCh3aWRnZXREZWZpbml0aW9uKTsgLy96YW1pamVuaXRpIGdkamUgc2Ugc3ZlIHBvamF2bGp1anVlIGkgc3Rhdml0aSBMT0NBTCBUT0RPXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuTG9jYWxJZD1zY29wZS5sb2NhbFdpZGdldElkOyAgICAgICAgIFxyXG4gICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC51aVVwbG9hZGVyLnJlbW92ZUFsbChzY29wZS5mZC5QcmVzZW50YXRpb25JZCk7IC8vTUlHT1IgVEVNUC0gVFJFQkEgbmVrYWtvIG9icmlzYXRpIGluaWNpamFsbmUgZmFqbG92ZSBrb2QgcmVpZ3N0cmFjaWphIGFsaSBvdmRqZSBuZSByYWRpICEhIVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coZWxlbWVudC5mZC5sb2NhbFZhcnMuZmlsZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5zZXR1cEZpbGVFbGVtZW50ID0gZnVuY3Rpb24oKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW1lbnRcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbVswXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmaWxlRWxlbWVudCcpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50WzBdLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZpbGVzID0gZS50YXJnZXQuZmlsZXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC51aVVwbG9hZGVyLmFkZEZpbGVzKGZpbGVzLHNjb3BlLmZkLlByZXNlbnRhdGlvbklkKTtcdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzID1zY29wZS5mZC51aVVwbG9hZGVyLmdldEZpbGVzKHNjb3BlLmZkLlByZXNlbnRhdGlvbklkKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xldCBmaWxlSW5kZXggPSAgc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzLmxlbmd0aCAtMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzY29wZS5mZC5zaG93RmlsZVNlbGVjdCkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZvcm1fZGVmID0gc2NvcGUuZmQuUGFyYW1ldGVycy5ydWxlc1swXS5Gb3JtRGVmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBmaWxlSW5kZXg9MDsgZmlsZUluZGV4IDwgc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzLmxlbmd0aDsgZmlsZUluZGV4KyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzW2ZpbGVJbmRleF0uZmlsZVJlc291cmNlSUQgPSBzY29wZS5mZC5QYXJhbWV0ZXJzLnJ1bGVzWzBdLmZpbGVUeXBlLlJlc291cmNlRGVmVWlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuZmlsZXNbZmlsZUluZGV4XS5maWxlUHVibGlzaElkID0gc2NvcGUuZmQuUGFyYW1ldGVycy5ydWxlc1swXS5maWxlVHlwZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzW2ZpbGVJbmRleF0ud2lkZ2V0SWQgPSBzY29wZS5mZC5QcmVzZW50YXRpb25JZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzW2ZpbGVJbmRleF0uZm9ybUxvYWRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuZmlsZXNbZmlsZUluZGV4XS5maWxlVHlwZVNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuc2hvd01ldGFkYXRhKGZpbGVJbmRleCxzY29wZS5mZC5sb2NhbFZhcnMuZmlsZXNbZmlsZUluZGV4XS5maWxlUmVzb3VyY2VJRCxmb3JtX2RlZik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVycj1zY29wZS5mZC50ZXN0UnVsZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICBcclxuICAgIFx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnNldHVwRmlsZUVsZW1lbnQoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmlsZUNvdW50ZXIgPSAwO1xyXG5cdFx0XHQvL3Njb3BlLmZkLlBhcmFtZXRlcnMucnVsZXM9W107XHJcblx0XHRcdGlmIChzY29wZS5mZC5NZXRhRGF0YT09dW5kZWZpbmVkKSAgc2NvcGUuZmQuTWV0YURhdGE9W107ICAgICAgICBcclxuXHRcdFx0XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0Ly8gQUREIFJVTEUgREVGSU5JVElPTiAtIHBveml2YSBzZSBpeiBrdFVwbG9hZGVyLmh0bWxcclxuXHRcdFx0XHRzY29wZS5mZC5hZGRSdWxlRGVmaW5pdGlvbj1mdW5jdGlvbihuYW1lLG1pbixtYXgsbWluVG90YWwpe1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRpZiAobWluPT11bmRlZmluZWQpIG1pbj0wO1x0XHRcdFxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRmb3IgKHZhciBpPTEsIGw9c2NvcGUuZmQuUGFyYW1ldGVycy5ydWxlcy5sZW5ndGg7IGk8bDsgaSsrKSBcclxuXHRcdFx0XHRcdFx0XHRcdGlmIChzY29wZS5mZC5QYXJhbWV0ZXJzLnJ1bGVzW2ldLm5hbWU9PW5hbWUpIG5hbWU9Jyc7XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRpZiAobmFtZSE9dW5kZWZpbmVkICYmIG5hbWUgIT0gJycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcblx0XHRcdFx0XHRcdHNjb3BlLmZkLlBhcmFtZXRlcnMucnVsZXMucHVzaCh7J2ZpbGVUeXBlJzpzY29wZS5mZC5zZWxlY3RlZEZpbGVUeXBlLCdtaW4nOm1pbiwnbWF4JzptYXh9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5nZXRQdWJsaXNoZWRSZXNvdXJjZUJ5SWQoc2NvcGUuZmQuc2VsZWN0ZWRGaWxlVHlwZS5pZCxzY29wZS5mZC5QYXJhbWV0ZXJzLnJ1bGVzLmxlbmd0aC0xKVxyXG5cdFx0XHRcdFx0XHQvL3Njb3BlLmZkLlBhcmFtZXRlcnMucnVsZXMubWluVG90YWw9bWluVG90YWw7XHRcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgc2NvcGUuYnRuX3JlbW92ZSA9IGZ1bmN0aW9uKGluZGV4LGZpbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQudWlVcGxvYWRlci5yZW1vdmVGaWxlKGZpbGUsc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXJyPXNjb3BlLmZkLnRlc3RSdWxlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfTsgICAgICBcclxuXHRcdFx0XHJcblxyXG4gICAgICAgICAgICAgICAgc2NvcGUuYnRuX2NsZWFuID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICBzY29wZS5mZC51aVVwbG9hZGVyLnJlbW92ZUFsbChzY29wZS5mZC5QcmVzZW50YXRpb25JZCk7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICBzY29wZS5jb252ZXJ0VG9IdG1sID0gZnVuY3Rpb24obXNnKXtcclxuICAgICAgICAgICAgICAgcmV0dXJuICRzY2UudHJ1c3RBc0h0bWwobXNnKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICBzY29wZS5mZC50ZXN0UnVsZXMgPSBmdW5jdGlvbigpe1xyXG5cdFx0ICAvLyBkZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgdmFyIGVyck1zZz1udWxsO1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpIDwgc2NvcGUuZmQuUGFyYW1ldGVycy5ydWxlcy5sZW5ndGg7IGkrKykgeyAvL3NlYXJjaCBydWxlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIC8qICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZpbGVzRm91bmQ9MDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yKHZhciBqID0gMDsgaiA8IHNjb3BlLmZkLmxvY2FsVmFycy5maWxlcy5sZW5ndGg7IGorKyApIHsvL3NlYXJjaCBmaWxlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5sb2NhbFZhcnMuZmlsZXNbal0uZmlsZVJlc291cmNlSUQgPT0gc2NvcGUuZmQuUGFyYW1ldGVycy5ydWxlc1tpXS5uYW1lKSBmaWxlc0ZvdW5kPWZpbGVzRm91bmQrMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgTklTQU0gU0lHVVJBTiBTVE8gU0FNIEhUSU8gUyBPVklNIFBPU1RJQ0kqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmlsZXNGb3VuZCA9IHNjb3BlLmZkLmxvY2FsVmFycy5maWxlcy5sZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC5QYXJhbWV0ZXJzLnJ1bGVzW2ldLm1pbiE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVzRm91bmQgPCBzY29wZS5mZC5QYXJhbWV0ZXJzLnJ1bGVzW2ldLm1pbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1DdHJsWyd1cGxvYWRGaWxlRm9ybScrc2NvcGUuZmQuUHJlc2VudGF0aW9uSWRdLiRzZXRWYWxpZGl0eSgnTm90RW5vdWdoRmlsZXMnLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuRXJyb3JNc2cgPSBzY29wZS5mZC5QYXJhbWV0ZXJzPy5FcnJvck5vdEVub3VnaEZpbGVzIHx8ICgnWW91IG5lZWQgdG8gc2VsZWN0IGF0IGxlYXN0ICcgICsgc2NvcGUuZmQuUGFyYW1ldGVycy5ydWxlc1tpXS5taW4gKyAnIGZpbGUhJykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cdCAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUN0cmxbJ3VwbG9hZEZpbGVGb3JtJytzY29wZS5mZC5QcmVzZW50YXRpb25JZF0uJHNldFZhbGlkaXR5KCdOb3RFbm91Z2hGaWxlcycsIHRydWUpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmZkLlBhcmFtZXRlcnMucnVsZXNbaV0ubWF4IT11bmRlZmluZWQgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVzRm91bmQgPiBzY29wZS5mZC5QYXJhbWV0ZXJzLnJ1bGVzW2ldLm1heCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1DdHJsWyd1cGxvYWRGaWxlRm9ybScrc2NvcGUuZmQuUHJlc2VudGF0aW9uSWRdLiRzZXRWYWxpZGl0eSgnVG9vTWFueUZpbGVzJywgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5mZC5FcnJvck1zZyA9IHNjb3BlLmZkLlBhcmFtZXRlcnM/LkVycm9yVG9vTWFueUZpbGVzIHx8ICgnTW9yZSB0aGFuICcgICsgc2NvcGUuZmQuUGFyYW1ldGVycy5ydWxlc1tpXS5tYXggKyAnIGZpbGUocykgc2VsZWN0ZWQhJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cdGVsc2UgICAgeyAgZm9ybUN0cmxbJ3VwbG9hZEZpbGVGb3JtJytzY29wZS5mZC5QcmVzZW50YXRpb25JZF0uJHNldFZhbGlkaXR5KCdUb29NYW55RmlsZXMnLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdFxyXG5cdFx0Ly9pZiAoc2NvcGUuZmQuUGFyYW1ldGVycy5ydWxlcy5sZW5ndGg+MClcclxuICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoc2NvcGUuZmQubG9jYWxWYXJzLmZpbGVzLmxlbmd0aCA8IHNjb3BlLmZkLlBhcmFtZXRlcnMucnVsZXNbMF0ubWluKSBmb3JtQ3RybFsndXBsb2FkRmlsZUZvcm0nK3Njb3BlLmZkLlByZXNlbnRhdGlvbklkXS4kc2V0VmFsaWRpdHkoJ01pbmltdW1GaWxlc05lZWRlZCcsIGZhbHNlKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vZWxzZSBmb3JtQ3RybFsndXBsb2FkRmlsZUZvcm0nK3Njb3BlLmZkLlByZXNlbnRhdGlvbklkXS4kc2V0VmFsaWRpdHkoJ01pbmltdW1GaWxlc05lZWRlZCcsIHRydWUpOyB9XHJcbiAgXHJcblx0XHRcclxuICAgICAgICAgICAgICAgIHJldHVybiBlcnJNc2c7XHJcblx0XHRcdFx0XHRcclxuICAgICAgICAgfS8vdGVzdF9SVUxFU1xyXG4gICAgICAgICAgICAgICBcclxuXHRzY29wZS52ZXJpZnlfZmlsZXMgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHZhciBjc3JmX3Rva2VuID0gJGNvb2tpZXMuZ2V0KCdjc3JmdG9rZW4nKTsgXHJcblx0XHRcdFxyXG4gICAgICAgICAgICAgICAgLy8gWkEgc3Zha2kgRkFKTCBwb2plZGluYcOobm8gIVxyXG4gICAgICAgICAgICAgICAgc2NvcGUuZmQudWlVcGxvYWRlci5zdGFydFVwbG9hZChzY29wZS5mZC5QcmVzZW50YXRpb25JZCx7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnYXBpL3ZlcmlmeS1maWxlLycsIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7J1gtQ1NSRlRva2VuJyA6IGNzcmZfdG9rZW4gfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvbmN1cnJlbmN5OiAzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHUgZGF0YSBuYXB1bml0aSBwb2RhdGtlIHZlemFuZSB6YSBmYWpsIC0gZmlsZVR5cGUgLCBJRCByZXN1cnNhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kYXRhOiB7Zm9ybV9kYXRhOmZpbGUuZm9ybV9kYXRhLHJlc291cmNlX2lkOmZpbGUuZmlsZVJlc291cmNlSUR9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZGF0YToge2Zvcm1fZGF0YTpzY29wZS5mb3JtX2RhdGF9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUHJvZ3Jlc3M6IGZ1bmN0aW9uKGZpbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJGxvZy5pbmZvKGZpbGUubmFtZSArICc9JyArIGZpbGUuaHVtYW5TaXplKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCkgeyBmaWxlLnN0YXR1cz0nVXBsb2FkaW5nLi4uJzsgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbXBsZXRlZDogZnVuY3Rpb24oZmlsZSwgcmVzcG9uc2Usc3RhdHVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXM9PTIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IEpTT04ucGFyc2UocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLnVwbG9hZFN1Y2Nlc3M9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmpzb25SZXNwb25zZUVPUy5yb3dzLmxlbmd0aD4wKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5ibG9ja2NoYWluSGFzaCA9IHJlc3BvbnNlLmpzb25SZXNwb25zZUVPUy5yb3dzWzBdLmhhc2g7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5maWxlRm91bmQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiRmlsZSBub3QgZm91bmQhXCIsJ3dhcm5pbmcnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLmJsb2NrY2hhaW5IYXNoPVwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5lb3NSZXNwb25zZTIgPSBKU09OLnN0cmluZ2lmeShyZXNwb25zZS5qc29uUmVzcG9uc2VFT1MsbnVsbCwyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5maWxlSGFzaCA9IHJlc3BvbnNlLmZpbGVIYXNoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZmlsZS51cGxvYWRTdWNjZXNzPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0vL29uX2NvbXBsZXRlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTsgLy9zdGFydFVwbG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICBcdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vIFx0XHRcdFx0a3QtdXBsb2FkLWZpbGUgQlROX1VQTE9BRFxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICAgIHNjb3BlLmJ0bl91cGxvYWQgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgXHRcdFx0XHRcclxuICAgICAgICAvLyBDSEVDSyBUSEUgUlVMRVMgRklSU1RcclxuICAgICAgICAgXHJcblx0XHR2YXIgZXJyTXNnPXNjb3BlLmZkLnRlc3RSdWxlcygpO1xyXG4gICAgICAgIGxldCB1cGxvYWRfZm9ybSA9IGZvcm1DdHJsWyd1cGxvYWRGaWxlRm9ybScrc2NvcGUuZmQuUHJlc2VudGF0aW9uSWRdXHJcbiAgICAgICAgdXBsb2FkX2Zvcm0uJHNldFN1Ym1pdHRlZCgpXHJcblxyXG5cdFx0aWYgKGVyck1zZz09bnVsbCAmJiB1cGxvYWRfZm9ybS4kdmFsaWQpIHtcclxuXHRcclxuICAgICAgICBcdFx0dmFyIGNzcmZfdG9rZW4gPSAkY29va2llcy5nZXQoJ2NzcmZ0b2tlbicpOyAvLydtaXJvJzsvLyRjb29raWVTdG9yZS5nZXQoJ2NzcmZ0b2tlbicpO1xyXG5cdFx0XHQgICAgbGV0IHVybF92YXIgPSAnYXBpL3VwbG9hZC1maWxlLycrc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQrJy8nXHJcbiAgICAgICAgICAgICAgICB1cmxfdmFyKz0gdXJsX3Zhci5pbmRleE9mKCc/JykgPj0gMCA/ICAnJicgOiAnPydcclxuXHRcdFx0ICAgIGxldCBlbnZfZnJvbV91cmwgPSAkbG9jYXRpb24uc2VhcmNoKCkuZW52IFxyXG4gICAgICAgICAgICAgICAgLy91cmxfdmFyKz0gXCJlbnY9XCIgKyBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwiZW52aXJvbm1lbnRcIilcclxuICAgICAgICBcdFx0dXJsX3Zhcis9IFwiZW52PVwiICsgZW52X2Zyb21fdXJsXHJcblx0XHRcdFx0Ly8gWkEgc3Zha2kgRkFKTCBwb2plZGluYcOobm8gIVxyXG4gICAgICAgIFx0XHRzY29wZS5mZC51aVVwbG9hZGVyLnN0YXJ0VXBsb2FkKHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLHsgIFxyXG5cdFx0XHRcdHVybDogdXJsX3ZhcixcclxuXHRcdFx0XHRoZWFkZXJzOiB7J1gtQ1NSRlRva2VuJyA6IGNzcmZfdG9rZW4sJ0F1dGhvcml6YXRpb24nOiRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5hdXRoZGF0YSB9LFxyXG5cdFx0XHRcdFx0Ly9jb25jdXJyZW5jeTogMyxcclxuXHRcdFx0XHRcdC8vIHUgZGF0YSBuYXB1bml0aSBwb2RhdGtlIHZlemFuZSB6YSBmYWpsIC0gZmlsZVR5cGUgLCBJRCByZXN1cnNhXHJcblx0XHRcdFx0XHQvL2RhdGE6IHtmb3JtX2RhdGE6ZmlsZS5mb3JtX2RhdGEscmVzb3VyY2VfaWQ6ZmlsZS5maWxlUmVzb3VyY2VJRH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RhdGE6IHtmb3JtX2RhdGE6c2NvcGUuZm9ybV9kYXRhfSxcclxuXHRcdFx0XHRcdG9uUHJvZ3Jlc3M6IGZ1bmN0aW9uKGZpbGUpIHtcclxuXHRcdFx0XHRcdFx0Ly8kbG9nLmluZm8oZmlsZS5uYW1lICsgJz0nICsgZmlsZS5odW1hblNpemUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpIHsgZmlsZS5zdGF0dXM9J1VwbG9hZGluZy4uLic7IH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuXHRcdFx0XHRcdG9uQ29tcGxldGVkOiBmdW5jdGlvbihmaWxlLCByZXNwb25zZSxzdGF0dXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzPT0yMDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBKU09OLnBhcnNlKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmlsZV9pZD1yZXNwb25zZS5maWxlX2lkOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpIHsgZmlsZS51cGxvYWRTdWNjZXNzPXRydWU7ICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLmVvc1Jlc3BvbnNlID0gSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuanNvblJlc3BvbnNlRU9TLG51bGwsMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5lb3NSZXNwb25zZTIgPSBKU09OLnN0cmluZ2lmeShyZXNwb25zZS5qc29uUmVzcG9uc2VFT1MyLG51bGwsMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGUuZGFzaGJvYXJkLmZvcm1EYXRhICYmICghc2NvcGUuZmQuUGFyYW1ldGVycy5Ob01ldGEgfHwgc2NvcGUuZmQuSGFzUGFyZW50RGF0YXNldCkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcmVudERhdGFzZXQ9c2NvcGUuZmQuZ2V0UHJldmlvdXNUYXNrV2lkZ2V0KFwicmVzb3VyY2VMaW5rRGF0YXNldExpc3RcIik7XHJcbiAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudERhdGFzZXRbJ2RhdGFzZXRJZCddPT11bmRlZmluZWQgfHwgcGFyZW50RGF0YXNldFsnZGF0YXNldElkJ109PVwiXCIpIHBhcmVudERhdGFzZXRbJ2RhdGFzZXRJZCddID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnREYXRhc2V0WydkYXRhc2V0UmVjb3JkSWQnXT09dW5kZWZpbmVkIHx8IHBhcmVudERhdGFzZXRbJ2RhdGFzZXRSZWNvcmRJZCddPT1cIlwiKSBwYXJlbnREYXRhc2V0WydkYXRhc2V0UmVjb3JkSWQnXSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLm1ldGFTdGF0dXM9J1NhdmluZyBtZXRhZGF0YS4uLidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbnN0YW5jZV9pZD1zY29wZS5mZC50YXNrSW5zdGFuY2VJZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlX2lkPT0wIHx8IGluc3RhbmNlX2lkPT11bmRlZmluZWQpIGluc3RhbmNlX2lkID0gc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2VfaW5zdGFuY2VfaWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwcmV2X3Jlc291cmNlX2lkID0gc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnByZXZfdGFza19pZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZfcmVzb3VyY2VfaWQ9PTAgfHwgcHJldl9yZXNvdXJjZV9pZD09dW5kZWZpbmVkKSBwcmV2X3Jlc291cmNlX2lkID0gc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnByZXZfcGFnZV9pZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICBmaWxlTWV0YVVwZGF0ZSAoZmlsZUlkLCAgICAgICBmaWxlTWV0YURlZklkLCAgICAgICAgIHB1Ymxpc2hJZCx0YXNrSW5zdGFuY2VJZCxwcmV2VGFza0lkLHBhcmVudERhdGFzZXREZWZJZCxwYXJlbnREYXRhc2V0SWQsZmlsZVJlc291cmNlRGF0YSxmZCxwYWdlX2lkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5maWxlTWV0YVVwZGF0ZShmaWxlX2lkLGZpbGUuZmlsZVJlc291cmNlSUQsZmlsZS5maWxlUHVibGlzaElkLGluc3RhbmNlX2lkLHByZXZfcmVzb3VyY2VfaWQscGFyZW50RGF0YXNldFsnZGF0YXNldElkJ10scGFyZW50RGF0YXNldFsnZGF0YXNldFJlY29yZElkJ10sZmlsZS5kYXNoYm9hcmQuZm9ybURhdGEsc2NvcGUuZmQsc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnVpZCkudGhlbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5tZXRhU3VjY2Vzcz10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUubWV0YUVycm9yPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5tZXRhU3RhdHVzID0gZXJyb3IubXNnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAvL0lGXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKSB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS51cGxvYWRTdWNjZXNzPWZhbHNlOyAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0vL29uX2NvbXBsZXRlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAvL3N0YXJ0VXBsb2FkXHJcblx0XHR9IGVsc2Uge1xyXG4gICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2Uoc2NvcGUuZmQuRXJyb3JNc2csJ3dhcm5pbmcnKTtcclxuXHRcdH1cclxuICAgICAgICB9OyAvLyBGVU5DVElPTiBiLm5fdXAxb2FkXHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IHByb2Nlc3NfdXBsb2FkID0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgaWYgKHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX3R5cGU9PSdpJylcclxuICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBzY29wZS5mZC50YXNrSW5zdGFuY2VJZCA9IGRhdGEudGFza19pbml0aWF0ZV9pZDtcclxuICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHNjb3BlLmZkLnRhc2tJbnN0YW5jZUlkID0gZGF0YS50YXNrX2V4ZWN1dGVfaWQ7ICBcclxuICAgICAgICAgICB9XHJcbiAgICAgICAgICAgaWYgKHNjb3BlLmZkLmxvY2FsVmFycy5maWxlcy5sZW5ndGg+MCAmJiBzY29wZS5mZC5QYXJhbWV0ZXJzLlZlcmlmeU9ubHkpIHNjb3BlLnZlcmlmeV9maWxlcygpO1xyXG4gICAgICAgICAgIGVsc2Ugc2NvcGUuYnRuX3VwbG9hZCgpO1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgIH0gIFxyXG4gICAgICAgIFxyXG4gICAgICAgIHNjb3BlLmtzbSA9IEthdGFseW9TdGF0ZU1hbmFnZXI7XHJcbiAgICAgICAgbGV0IGRlcGVuZGVudF9maWVsZCA9IFwiRmllbGRcIitzY29wZS5mZC5QcmVzZW50YXRpb25JZDtcclxuICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSBzY29wZS5yZXNvdXJjZURlZmluaXRpb24ucGFnZV9zdGF0ZV9pZCsnLScrXCJUYXNrUG9zdFByb2Nlc3NcIjtcclxuICAgICAgICBsZXQgb2JzZXJ2ZXIgPSBzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0LGRlcGVuZGVudF9maWVsZCxcIlRhc2tQb3N0UHJvY2Vzc1wiLHByb2Nlc3NfdXBsb2FkKTtcclxuICAgICAgICBsZXQgc3RhdGUgPSBzY29wZS5rc20uZ2V0U3RhdGUoc3Vic2NyaWJlZFN1YmplY3QpO1xyXG4gICAgICAgIFxyXG5cclxuICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3RQYWdlID0gXCJwcm9jZXNzV2lkZ2V0c1N0YXRlTmFtZVwiK3Njb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkXHJcbiAgICAgICAgbGV0IG9ic2VydmVyX3BhZ2UgPSBzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0UGFnZSxkZXBlbmRlbnRfZmllbGQsXCJ3aWRnZXRzX3Byb2Nlc3NlZFwiLHByb2Nlc3NfdXBsb2FkKTtcclxuICAgICAgICBcclxuICAgICAgICAvLyByZXBsYWNlZCBicm9hZGNhc3Qgd2l0aCBzdGF0ZSBtYW5hZ2VyXHJcbiAgICAgICAgc2NvcGUuJG9uKHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkKyctJytcIlRhc2tQb3N0UHJvY2Vzc1wiK3Njb3BlLnJlc291cmNlRGVmaW5pdGlvbi50cmFuc2FjdGlvbl9pZCxmdW5jdGlvbihldmVudCwgZGF0YSl7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgaWYgKHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX3R5cGU9PSdpJylcclxuICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBzY29wZS5mZC50YXNrSW5zdGFuY2VJZCA9IGRhdGEudGFza19pbml0aWF0ZV9pZDtcclxuICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC50YXNrSW5zdGFuY2VJZCA9PT0gdW5kZWZpbmVkKSBzY29wZS5mZC50YXNrSW5zdGFuY2VJZCA9IHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50YXNrX2luaXRpYXRlX2lkO1xyXG4gICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgc2NvcGUuZmQudGFza0luc3RhbmNlSWQgPSBkYXRhLnRhc2tfZXhlY3V0ZV9pZDtcclxuICAgICAgICAgICAgICAgIGlmIChzY29wZS5mZC50YXNrSW5zdGFuY2VJZCA9PT0gdW5kZWZpbmVkKSBzY29wZS5mZC50YXNrSW5zdGFuY2VJZCA9IHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50YXNrX2V4ZWN1dGVfaWQ7XHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICAgIGlmIChzY29wZS5mZC5sb2NhbFZhcnMuZmlsZXMubGVuZ3RoPjAgJiYgc2NvcGUuZmQuUGFyYW1ldGVycy5WZXJpZnlPbmx5KSBzY29wZS52ZXJpZnlfZmlsZXMoKTtcclxuICAgICAgICAgICBlbHNlIHNjb3BlLmJ0bl91cGxvYWQoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgXHJcblxyXG4gICAgIH0gLy9MSU5LX0VORCAna3RVcGxvYWRGaWxlJ1xyXG4gXHJcblxyXG4gfTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBrdEZpbGVEcm9wem9uZSgpe1xyXG4gIHJldHVybiB7XHJcbiAgICByZXN0cmljdDogJ0EnLFxyXG4gICAgbGluazogZnVuY3Rpb24oc2NvcGUsIGVsZW1lbnQsIGF0dHJzKSB7XHJcbiAgICAgIHZhciBjaGVja1NpemUsIGlzVHlwZVZhbGlkLCBwcm9jZXNzRHJhZ092ZXJPckVudGVyLCB2YWxpZE1pbWVUeXBlcztcclxuICAgICAgXHJcbiAgICAgIHByb2Nlc3NEcmFnT3Zlck9yRW50ZXIgPSBmdW5jdGlvbihldmVudCkge1xyXG4gICAgICAgIGlmIChldmVudCAhPSBudWxsKSB7XHJcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9ICdjb3B5JztcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH07XHJcbiAgICAgIHZhbGlkTWltZVR5cGVzID0gYXR0cnMuZmlsZURyb3B6b25lO1xyXG5cclxuICAgICAgY2hlY2tTaXplID0gZnVuY3Rpb24oc2l6ZSkge1xyXG4gICAgICAgIHZhciBfcmVmO1xyXG5cclxuICAgICAgICBpZiAoKChfcmVmID0gYXR0cnMubWF4RmlsZVNpemUpID09PSAodm9pZCAwKSB8fCBfcmVmID09PSAnJykgfHwgKHNpemUgLyAxMDI0KSAvIDEwMjQgPCBhdHRycy5tYXhGaWxlU2l6ZSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBpc1R5cGVWYWxpZCA9IGZ1bmN0aW9uKHR5cGUpIHtcclxuICAgICAgICBpZiAoKHZhbGlkTWltZVR5cGVzID09PSAodm9pZCAwKSB8fCB2YWxpZE1pbWVUeXBlcyA9PT0gJycpIHx8IHZhbGlkTWltZVR5cGVzLmluZGV4T2YodHlwZSkgPiAtMSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGFsZXJ0KFwiSW52YWxpZCBmaWxlIHR5cGUuICBGaWxlIG11c3QgYmUgb25lIG9mIGZvbGxvd2luZyB0eXBlcyBcIiArIHZhbGlkTWltZVR5cGVzKTtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBlbGVtZW50LmJpbmQoJ2RyYWdvdmVyJywgcHJvY2Vzc0RyYWdPdmVyT3JFbnRlcik7XHJcbiAgICAgIGVsZW1lbnQuYmluZCgnZHJhZ2VudGVyJywgcHJvY2Vzc0RyYWdPdmVyT3JFbnRlcik7XHJcblxyXG4gICAgICByZXR1cm4gZWxlbWVudC5iaW5kKCdkcm9wJywgZnVuY3Rpb24oZXZlbnQpIHtcclxuICAgICAgICB2YXIgZmlsZSwgbmFtZSwgcmVhZGVyLCBzaXplLCB0eXBlO1xyXG4gICAgICAgIGlmIChldmVudCAhPSBudWxsKSB7XHJcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbihldnQpIHtcclxuICAgICAgICAgIGlmIChjaGVja1NpemUoc2l6ZSkgJiYgaXNUeXBlVmFsaWQodHlwZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHNjb3BlLiRhcHBseShmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICBzY29wZS5maWxlID0gZXZ0LnRhcmdldC5yZXN1bHQ7XHJcbiAgICAgICAgICAgICAgaWYgKGFuZ3VsYXIuaXNTdHJpbmcoc2NvcGUuZmlsZU5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc2NvcGUuZmlsZU5hbWUgPSBuYW1lO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBmaWxlID0gZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzWzBdO1xyXG4gICAgICAgIG5hbWUgPSBmaWxlLm5hbWU7XHJcbiAgICAgICAgdHlwZSA9IGZpbGUudHlwZTtcclxuICAgICAgICBzaXplID0gZmlsZS5zaXplO1xyXG4gICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0VXNlciAoKSB7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXHJcbiAgICAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uICgkc2NvcGUsICRlbGVtZW50LCR0aW1lb3V0LFVzZXJTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLCRyb290U2NvcGUsUHJvY2Vzc2luZ1NlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlLENvZGVzU2VydmljZSwkdGVtcGxhdGVDYWNoZSwkY29tcGlsZSl7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2U7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzPXt9O1xyXG4gICAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGVbJHNjb3BlLmZkLmlkXSAgPSB7J2ZkJzogJHNjb3BlLmZkfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICAoJHNjb3BlLmZvcm1EYXRhPT11bmRlZmluZWQgfHwgICFBcnJheS5pc0FycmF5KCRzY29wZS5mb3JtRGF0YSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybURhdGE9W3t9XVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICghJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdKSAkc2NvcGUuZmQubm9WYWx1ZSA9IHRydWVcclxuICAgICAgICAgICAgICAgIGxldCBwYXJlbnRXaWRnZXRVaWQgPSAnJ1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucGFyZW50V2lkZ2V0IT11bmRlZmluZWQpIHBhcmVudFdpZGdldFVpZCA9ICRzY29wZS5wYXJlbnRXaWRnZXQrJy0nXHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHVzZXJWYWx1ZVN0YXRlPSAkc2NvcGUua3NtLmFkZFN1YmplY3QoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkKyctJytwYXJlbnRXaWRnZXRVaWQrJHNjb3BlLmZkLlV1aWRSZWYrXCItd2lkZ2V0UmVhZHlcIix7d2lkZ2V0OiRzY29wZS5mZC5VdWlkUmVmLHByb2Nlc3NlZDpmYWxzZX0pO1xyXG4gICAgICAgICAgICAgICAgbGV0IHVzZXJWYWx1ZVN0YXRlTmFtZSA9IHVzZXJWYWx1ZVN0YXRlLnN1YmplY3QubmFtZTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgd2lkZ2V0X3JlYWR5ID0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICB1c2VyVmFsdWVTdGF0ZS5zdWJqZWN0LnNldFN0YXRlQ2hhbmdlcyA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgdXNlclZhbHVlU3RhdGUuc3ViamVjdC5ub3RpZnlPYnNlcnZlcnMoXCJ3aWRnZXRSZWFkeVwiKTtcclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IGFjdGlvbl93aWRnZXRfcmVhZHkgPSAkc2NvcGUua3NtLmFkZEFjdGlvbih1c2VyVmFsdWVTdGF0ZU5hbWUsXCJ3aWRnZXRSZWFkeVwiLHdpZGdldF9yZWFkeSk7XHJcblxyXG4gICAgICAgICAgICAgICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzQnlOYW1lKCd1c2VydGFncycsbGFuZykudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQudGFnTGlzdCA9IGRhdGEuZGF0YTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwb3MgPSAkc2NvcGUuZmQudGFnTGlzdC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZigkc2NvcGUuZmQuVW5pcXVlSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zPj0wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuVW5pcXVlSWRPYmo9JHNjb3BlLmZkLnRhZ0xpc3RbcG9zXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLnNlYXJjaExpc3Q9W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2lkOjEsZmlsdGVyOidvbmxpc3QnLGNvZGVfbmFtZTonb25saXN0JyxuYW1lOlwiT24gbGlzdFwiLGljb246XCJmYSBmYS1jaGVja1wifSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpZDoyLGZpbHRlcjonbm90b25saXN0Jyxjb2RlX25hbWU6J25vdG9ubGlzdCcsbmFtZTpcIk5vdCBvbiBsaXN0XCIsaWNvbjpcImZhIGZhLXRpbWVzXCJ9LFxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5wcm9jZXNzRmlsdGVycyA9IGZ1bmN0aW9uKGZpbHRlckxpc3QpICAvLyBnZXQgc2VhcmNoIGZpbHRlciBpbiBjb3JyZWN0IGxhbmd1YWdlXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wO2k8JHNjb3BlLmZkLnNlYXJjaExpc3QubGVuZ3RoO2krKykgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSBmaWx0ZXJMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKCRzY29wZS5mZC5zZWFyY2hMaXN0W2ldLmNvZGVfbmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zPj0wKSAkc2NvcGUuZmQuc2VhcmNoTGlzdFtpXS5uYW1lID0gZmlsdGVyTGlzdFtwb3NdLm5hbWVcclxuICAgICAgICAgICAgICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5TZWFyY2g9PT11bmRlZmluZWQgfHwgJHNjb3BlLmZkLlNlYXJjaD09PW51bGwpICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlNlYXJjaD0kc2NvcGUuZmQuc2VhcmNoTGlzdFswXTsgIC8vICBpbml0aWFsaXplIHRvIG9ubGlzdFxyXG4gICAgICAgICAgICAgICAgICAgIH0gIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuU2VhcmNoKSAgJHNjb3BlLmZkLlNlYXJjaC5WYWx1ZSA9ICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXTsgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmZpbHRlclJlYWR5PXRydWVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5zaG93U2VhcmNoRmlsdGVycyB8fCAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fZGVmaW5pdGlvbikgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVzU2VydmljZS5nZXRDb2Rlc0J5TmFtZSgnc2VhcmNoX2ZpbHRlcnMnLGxhbmcpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlWyRzY29wZS5mZC5pZF1bJ2ZkJ10ucHJvY2Vzc0ZpbHRlcnMoZGF0YS5kYXRhKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQuYXBwbHlMaXN0RmlsdGVycyA9IGZ1bmN0aW9uKGluZGV4KSB7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5TZWFyY2ggPSAkc2NvcGUuZmQuc2VhcmNoTGlzdFtpbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiggdHlwZW9mICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSA9PT0gJ3N0cmluZycgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlNlYXJjaC52YWx1ZSA9IFsgeydpZCc6JHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdfSBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnNob3dQcm9wZXJ0aWVzID0gZnVuY3Rpb24oZXZlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5zZXRGaWVsZFByb3BlcnRpZXMoJHNjb3BlLmZkLGV2ZW50KTtcclxuICAgICAgICAgICAgICAgIH07IFxyXG4gICAgICAgICAgICAgICAgXHJcblx0XHRcdFx0aWYgKCAkc2NvcGUuZmQubG9jYWxWYXJzPT11bmRlZmluZWQpICRzY29wZS5mZC5sb2NhbFZhcnM9e31cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5Qb3B1bGF0ZVR5cGU9PW51bGwpIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5Qb3B1bGF0ZVR5cGU9MTtcclxuICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkVXNyPXt9O1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnVzZXJJdGVtID0geyBzZWxlY3RlZFVzZXIgOiBudWxsIH07XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5zZXRVc2VyID0gZnVuY3Rpb24gKHVzZXJfaWQpIFxyXG4gICAgICAgICAgICAgICAgeyAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgaWYgICgkc2NvcGUuZm9ybURhdGE9PXVuZGVmaW5lZCB8fCAgIUFycmF5LmlzQXJyYXkoJHNjb3BlLmZvcm1EYXRhKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtRGF0YT1be31dXHJcbiAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICBsZXQgcG9zID0gJHNjb3BlLnVzZXJMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKHVzZXJfaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgaWYgKHBvcz49MCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXT0kc2NvcGUudXNlckxpc3RbcG9zXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuU2VhcmNoLlZhbHVlID0gWyAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0gXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICB9ICAgIFxyXG4gICAgICAgICAgICAgICAgfSBcclxuXHJcbiAgICAgICAgICAgICBcclxuICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZ2V0VXNlcnMgPSBmdW5jdGlvbiAoKSBcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgVXNlclNlcnZpY2UuZ2V0VXNlcnNHcm91cHMoJ3VzZXJzJykudGhlbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZGF0YSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnVzZXJMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMudXNlckxpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlBvcHVsYXRlVHlwZS50b1N0cmluZygpPT0nMicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNldFVzZXIoJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLnVzZXJpZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkc2NvcGUuZm9ybURhdGEhPXVuZGVmaW5lZCAmJiAkc2NvcGUuZm9ybURhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSE9bnVsbCAmJiAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0hPXVuZGVmaW5lZCAmJiBOdW1iZXIoJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdKSE9TmFOKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNldFVzZXIoJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0hPW51bGwgJiYgJHNjb3BlLmZvcm1EYXRhWzBdWyRzY29wZS5mZC5GaWVsZE5hbWVdIT11bmRlZmluZWQgJiYgQXJyYXkuaXNBcnJheSgkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV0ubGVuZ3RoPjApICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZXRVc2VyKCRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXVswXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudXNlcnNMb2FkZWQ9dHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbih1c2VyVmFsdWVTdGF0ZU5hbWUsXCJ3aWRnZXRSZWFkeVwiLCB7d2lkZ2V0OiRzY29wZS5mZC5VdWlkUmVmLHByb2Nlc3NlZDp0cnVlfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5jbGVhciA9IGZ1bmN0aW9uKGV2ZW50LHNlbGVjdCkgXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtRGF0YVswXVskc2NvcGUuZmQuRmllbGROYW1lXSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5TZWFyY2gudmFsdWUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUudXNlckl0ZW0uc2VsZWN0ZWRVc2VyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuJHdhdGNoKCd1c2VySXRlbS5zZWxlY3RlZFVzZXInLCBmdW5jdGlvbihuZXdWYWx1ZSxvbGRWYWx1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZm9ybURhdGEgJiYgbmV3VmFsdWUpICAkc2NvcGUuZm9ybURhdGFbMF1bJHNjb3BlLmZkLkZpZWxkTmFtZV09bmV3VmFsdWUuaWQ7XHJcbiAgICAgICAgICAgICAgICB9KTsqL1xyXG4gICAgICAgICAgICAgICAgbGV0IHRlbXBsYXRlO1xyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uKVxyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlID0gJHRlbXBsYXRlQ2FjaGUuZ2V0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFVzZXIuaHRtbCcpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZUNhY2hlLmdldCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RVc2VyRXhlLmh0bWwnKTtcclxuICAgICAgICAgICAgICAgICRlbGVtZW50LmFwcGVuZCgkY29tcGlsZSh0ZW1wbGF0ZSkoJHNjb3BlKSk7ICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgaWYgKCRzY29wZT8uZmQ/LlNlYXJjaD09dW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGU/LmZkPy5zZWFyY2hMaXN0Py5sZW5ndGgpICAgJHNjb3BlLmZkLlNlYXJjaCA9ICRzY29wZT8uZmQ/LnNlYXJjaExpc3RbMF07ICAvLyAgaW5pdGlhbGl6ZSB0byBvbmxpc3RcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gIFx0XHRcdFx0JHNjb3BlLmdldFVzZXJzKCk7XHJcbiAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW0sIGF0dHJzKSB7XHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICBcclxufTtcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGt0VXNlcnNHcm91cHNTZWxlY3QgKCR0aW1lb3V0KSB7XG4gIFxuICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcbiAgICAgICAgICAgIHNjb3BlOntcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVXNlcnM6Jz0nLFxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRHcm91cHM6Jz0nLFxuICAgICAgICAgICAgICAgICAgaGVhZGVyTGFiZWw6Jz0/JyxcbiAgICAgICAgICAgICAgICAgIHVzZXJzTGFiZWw6Jz0/JyxcbiAgICAgICAgICAgICAgICAgIGdyb3Vwc0xhYmVsOic9PycsIFxuICAgICAgICAgICAgICAgICAgdXBkYXRlT25DaGFuZ2U6Jz0/J1xuICAgICAgICAgICAgIH0sXG4gICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RVc2Vyc0dyb3Vwc1NlbGVjdC5odG1sJyxcbiAgICAgICAgICAgY29udHJvbGxlcjogZnVuY3Rpb24oJHNjb3BlLCAkcm9vdFNjb3BlKXtcbiAgICAgICAgICAgICAgICRzY29wZS5DVFJMPSdrdFVzZXJzR3JvdXBTZWxlY3QnXG4gICAgICAgICAgICAgICBcbiAgICAgICAgICAgfSxcbiAgICAgICAgICAgXG4gICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcbiAgICAgICAgICAgICAgICAgLyogXG4gICAgICAgICAgICAgICAgaWYgKHNjb3BlLnNlbGVjdGVkVXNlcnM9PXVuZGVmaW5lZCkgc2NvcGUuc2VsZWN0ZWRVc2VycyA9IFtdO1xuICAgICAgICAgICAgICAgICBpZiAoc2NvcGUuc2VsZWN0ZWRHcm91cHM9PXVuZGVmaW5lZCkgc2NvcGUuc2VsZWN0ZWRHcm91cHMgPSBbXTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBzY29wZS5zZWxlY3RlZCA9IHt1c2VyczpzY29wZS5zZWxlY3RlZFVzZXJzLGdyb3VwczpzY29wZS5zZWxlY3RlZEdyb3Vwc307XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHNjb3BlLiR3YXRjaCgnc2VsZWN0ZWQudXNlcnMnLGZ1bmN0aW9uKG5ld1ZhbHVlLG9sZFZhbHVlKXsgXG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZSE9b2xkVmFsdWUgJiYgbmV3VmFsdWUhPT11bmRlZmluZWQpICAgICBzY29wZS5zZWxlY3RlZFVzZXJzPW5ld1ZhbHVlOyAgXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgc2NvcGUuJHdhdGNoKCdzZWxlY3RlZC5ncm91cHMnLGZ1bmN0aW9uKG5ld1ZhbHVlLG9sZFZhbHVlKXtcbiAgICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZSE9b2xkVmFsdWUgJiYgbmV3VmFsdWUhPT11bmRlZmluZWQpICAgICAgIHNjb3BlLnNlbGVjdGVkR3JvdXBzPW5ld1ZhbHVlOyBcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBzY29wZS4kd2F0Y2goJ3NlbGVjdGVkVXNlcnMnLGZ1bmN0aW9uKG5ld1ZhbHVlLG9sZFZhbHVlKXtcbiAgICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZSE9b2xkVmFsdWUgJiYgbmV3VmFsdWUhPT11bmRlZmluZWQpICAgICAgICBzY29wZS5zZWxlY3RlZC51c2Vycz1uZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBzY29wZS4kd2F0Y2goJ3NlbGVjdGVkR3JvdXBzJyxmdW5jdGlvbihuZXdWYWx1ZSxvbGRWYWx1ZSl7XG4gICAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWUhPW9sZFZhbHVlICYmIG5ld1ZhbHVlIT09dW5kZWZpbmVkKSAgICAgICAgIHNjb3BlLnNlbGVjdGVkLmdyb3Vwcz1uZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICovXG4gICAgICAgXG4gICAgXG4gICAgICB9XG4gICAgfVxuICBcbn07XG4ndXNlIHN0cmljdCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3RWaWRlbyAoJHJvb3RTY29wZSwkc2NlLEdyaWRzdGVyU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSxLYXRhbHlvU3RhdGVNYW5hZ2VyLFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UpIHtcclxuIHJldHVybiB7XHJcbiAgICAgIHJlc3RyaWN0OiAnQScsXHJcblx0ICBjb250cm9sbGVyOiBmdW5jdGlvbiAoJHNjb3BlKVxyXG5cdCAgeyAgICAgICAgICBcclxuICAgICAgXHJcbiAgICAgIFxyXG4gXHJcbiBcclxuICAgfSxcclxuICAgXHJcbiAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFZpZGVvLmh0bWwnLFxyXG4gICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHsgICAgICBcclxuICAgICAgXHJcbiAgICAgICAgICBpZiAoc2NvcGUuZmQubG9jYWxWYXJzPT11bmRlZmluZWQpIHNjb3BlLmZkLmxvY2FsVmFycz17fTtcclxuICAgICAgICBcclxuICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuc2hvd01lbnUgPSBmYWxzZVxyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgICAgc2NvcGUudGFza0lkID0gc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlJlc291cmNlRGVmSWQ7XHJcbiAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnByZXZUYXNrRXhlSWQgPSAgc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnByZXZfdGFza19pZDtcclxuICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuZm9ybVR5cGU9c2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fdHlwZTtcclxuICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuc291cmNlX3R5cGU9c2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnNvdXJjZV90eXBlO1xyXG4gICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy50YXNrSW5pdGlhdGVJZCA9IHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50YXNrX2luaXRpYXRlX2lkO1xyXG4gICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy50YXNrRXhlY3V0ZUlkID0gc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRhc2tfZXhlY3V0ZV9pZDtcclxuICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuZm9ybURlZmluaXRpb24gPSBzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uO1xyXG4gICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkID0gMDtcclxuICAgICAgICBzY29wZS5mZC5QYXJlbnRFbGVtZW50SWQgPSAwO1xyXG4gICAgICAgIGlmIChzY29wZS5mZC5sb2NhbFZhcnMuZm9ybURlZmluaXRpb249PXVuZGVmaW5lZCkgc2NvcGUuZmQubG9jYWxWYXJzLmZvcm1EZWZpbml0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHNjb3BlLmZkLmxvY2FsVmFycy50YXNrSW5pdGlhdGVJZD09dW5kZWZpbmVkKSBzY29wZS5mZC5sb2NhbFZhcnMudGFza0luaXRpYXRlSWQgPTA7XHJcbiAgICAgICAgaWYgKHNjb3BlLmZkLmxvY2FsVmFycy50YXNrRXhlY3V0ZUlkPT11bmRlZmluZWQpIHNjb3BlLmZkLmxvY2FsVmFycy50YXNrRXhlY3V0ZUlkID0wO1xyXG4gICAgICAgIGlmIChzY29wZS5mZC5sb2NhbFZhcnMucHJldlRhc2tFeGVJZD09dW5kZWZpbmVkKSBzY29wZS5mZC5sb2NhbFZhcnMucHJldlRhc2tFeGVJZCA9MDtcclxuICAgICAgICBpZiAoc2NvcGUuZmQubG9jYWxWYXJzPT11bmRlZmluZWQpICBzY29wZS5mZC5sb2NhbFZhcnM9e31cclxuXHJcbiAgICAgICAgdmFyIHdpZGdldERlZmluaXRpb24gPSB7bmFtZTogJ2t0VmlkZW8nLHdpZGdldElkOiBzY29wZS5mZC5QcmVzZW50YXRpb25JZCx0YXNrSWQ6ICBzY29wZS50YXNrSWQsXHJcbiAgICAgICAgdGFza19pbml0aWF0ZV9pZDpzY29wZS5mZC5sb2NhbFZhcnMudGFza0luaXRpYXRlSWQsdGFza19leGVjdXRlX2lkOnNjb3BlLmZkLmxvY2FsVmFycy50YXNrRXhlY3V0ZUlkfTtcclxuICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMubG9jYWxXaWRnZXRJZCA9IFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UucmVnaXN0ZXJXaWRnZXQod2lkZ2V0RGVmaW5pdGlvbik7XHJcbiAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLkxvY2FsSWQ9c2NvcGUuZmQubG9jYWxWYXJzLmxvY2FsV2lkZ2V0SWQ7XHJcbiAgICAgICAgc2NvcGUuZmQuTG9jYWxJZD1zY29wZS5mZC5sb2NhbFZhcnMubG9jYWxXaWRnZXRJZDtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuc2hvd01lbnUgPSBmYWxzZVxyXG4gICAgICAgIFxyXG4gICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMudG9nZ2xlRHJvcGRvd24gPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnNob3dNZW51ID0gIHNjb3BlLmZkLmxvY2FsVmFycy5zaG93TWVudSA/IGZhbHNlOiB0cnVlIFxyXG4gICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgICAgICBcclxuICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuc2V0RmllbGQgPSBmdW5jdGlvbihmb3JtLG5hbWUsdmFsdWUsbXNnKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgVGFza0RhdGFTZXJ2aWNlLnNldEZpZWxkKGZvcm0sbmFtZSx2YWx1ZSk7XHJcbiAgICAgICAgICAgICBpZiAobXNnKSBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UobXNnLCdpbmZvJyk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICBzY29wZS5rc209S2F0YWx5b1N0YXRlTWFuYWdlclxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgIHNjb3BlLmdzcnZjPSBHcmlkc3RlclNlcnZpY2U7XHJcbiAgICAgICAgXHJcbiAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLnNldFZpZGVvU3JjID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgIGxldCBhdXRvcGxheSA9IHNjb3BlLmZkLlBhcmFtZXRlcnMuQXV0b1BsYXkgPyAxIDogMFxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICBzY29wZS52aWRlb1NyYz0kc2NlLnRydXN0QXNSZXNvdXJjZVVybChzY29wZS5mZC5QYXJhbWV0ZXJzLlVybCtzY29wZS5mZC5QYXJhbWV0ZXJzLlZpZGVvSWQrJz9hdXRvcGxheT0nK2F1dG9wbGF5KycmbXV0ZT0nK2F1dG9wbGF5Kycmb3JpZ2luPScrc2NvcGUuZmQuUGFyYW1ldGVycy5PcmlnaW4pXHJcbiAgICAgICAgfVxyXG4gICAgICAgICBzY29wZS5mZC5sb2NhbFZhcnMuc2V0VmlkZW9TcmMoKSBcclxuICAgICAgICAvL2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL003bGMxVVZmLVZFP2F1dG9wbGF5PTEmb3JpZ2luPWh0dHA6Ly9leGFtcGxlLmNvbVxyXG5cclxuICAgICB9XHJcbiAgIH07XHJcbn07XG4ndXNlIHN0cmljdCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24ga3RXZWIzV2FsbGV0ICgpIHtcclxuICAgXHJcbiAgIHZhciBjb250cm9sbGVyID0gWyckc2NvcGUnLCAnJHVpYk1vZGFsJywgJyRzdGF0ZVBhcmFtcycsJyRzdGF0ZScsJyR0aW1lb3V0JywnQ29kZXNTZXJ2aWNlJywnUmVzb3VyY2VzRGF0YVNlcnZpY2UnLCckcm9vdFNjb3BlJywnQ09ERVNfQ09OU1QnLCdQcm9jZXNzaW5nU2VydmljZScsJ01lc3NhZ2luZ1NlcnZpY2UnLCdHcmlkc3RlclNlcnZpY2UnLCdUYXNrRGF0YVNlcnZpY2UnLCdXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlJywnS2F0YWx5b1N0YXRlTWFuYWdlcicsJ1V0aWxpdHlTZXJ2aWNlJywnJHRlbXBsYXRlQ2FjaGUnLCckY29tcGlsZScsJyRlbGVtZW50JyxcclxuICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCRzY29wZSwkdWliTW9kYWwsJHN0YXRlUGFyYW1zLCRzdGF0ZSwkdGltZW91dCxDb2Rlc1NlcnZpY2UsUmVzb3VyY2VzRGF0YVNlcnZpY2UsJHJvb3RTY29wZSxDT0RFU19DT05TVCxQcm9jZXNzaW5nU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSxUYXNrRGF0YVNlcnZpY2UsV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZSxLYXRhbHlvU3RhdGVNYW5hZ2VyLFV0aWxpdHlTZXJ2aWNlLCR0ZW1wbGF0ZUNhY2hlLCRjb21waWxlLCRlbGVtZW50KSB7XHJcbiAgICAgICAgIFxyXG4gICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzID09IHVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycz17fTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMuc2hvd01lbnUgPSBmYWxzZVxyXG4gICAgICBcclxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnRvZ2dsZURyb3Bkb3duID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaG93TWVudSA9ICAkc2NvcGUubG9jYWxWYXJzLnNob3dNZW51ID8gZmFsc2U6IHRydWUgXHJcbiAgICAgICAgIH1cclxuICAgICAgICAgXHJcbiAgICAgICAgICRzY29wZS5mZC5jb3B5VG9DbGlwYm9hcmQgPSBmdW5jdGlvbih0ZXh0KXtcclxuICAgICAgICAgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ3ZWIzXCIrJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkKTtcclxuICAgICAgICAgICAgaW5wdXQudmFsdWUgPSB0ZXh0O1xyXG4gICAgICAgICAgICBpbnB1dC5mb2N1cygpO1xyXG4gICAgICAgICAgICBpbnB1dC5zZWxlY3QoKTtcclxuICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTtcclxuICAgICAgICAgICAgJHNjb3BlLmZkLmNvcHlBZGRyZXNzID0gdHJ1ZTtcclxuICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXskc2NvcGUuZmQuY29weUFkZHJlc3MgPSBmYWxzZTt9LDEwMDApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICBcclxuICAgICAgICAgXHJcbiAgICAgICAgICRzY29wZS5mZC5saW5rV2ViM1dhbGxldCA9IGZ1bmN0aW9uKClcclxuICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmNvbm5lY3RpbmdUb1dhbGxldCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQud2ViM0Nvbm5lY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLmV0aF9hZGRyZXNzPW51bGw7XHJcbiAgICAgICAgICAgICAgICBpZiAod2luZG93LmV0aGVyZXVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5mZC53ZWIzRXhpc3RzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgdmFyIHdlYjMgPSBuZXcgV2ViMyh3aW5kb3cuZXRoZXJldW0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgZXRoZXJldW0uc2VuZCgnZXRoX3JlcXVlc3RBY2NvdW50cycpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmV0aF9hZGRyZXNzID0gcmVzdWx0LnJlc3VsdFswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmNvbm5lY3RpbmdUb1dhbGxldCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmV0aF9hZGRyZXNzIT1udWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC53ZWIzQ29ubmVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2ViMy5ldGgubmV0LmdldE5ldHdvcmtUeXBlKCkudGhlbihmdW5jdGlvbihyZXN1bHQpeyRzY29wZS5mZC5jb25uZWN0ZWRfbmV0d29yaz1yZXN1bHR9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHdlaTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYjMuZXRoLmdldEJhbGFuY2UoJHNjb3BlLmV0aF9hZGRyZXNzLCBmdW5jdGlvbiAoZXJyb3IsIHdlaSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiYWxhbmNlID0gd2ViMy51dGlscy5mcm9tV2VpKHdlaSwgJ2V0aGVyJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5iYWxhbmNlID0gYmFsYW5jZSArIFwiIEVUSFwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmJhbGFuY2VDaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlICAkc2NvcGUuZmQud2ViM0Nvbm5lY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuY29ubmVjdGluZ1RvV2FsbGV0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC53ZWIzQ29ubmVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5lcnJvcl9tc2cgPSBlcnJvci5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfWVsc2UgICAgICAgICAgICAgICAgJHNjb3BlLmZkLndlYjNFeGlzdHMgPSBmYWxzZTtcclxuICAgICAgICAgfSAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gJHNjb3BlLmZkLmxpbmtXZWIzV2FsbGV0KCk7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICBcclxuICAgICAgLy8gVW5wa2cgaW1wb3J0c1xyXG4gICAgICBjb25zdCBXZWIzTW9kYWwgPSB3aW5kb3cuV2ViM01vZGFsPy5kZWZhdWx0O1xyXG4gICAgICBjb25zdCBXYWxsZXRDb25uZWN0UHJvdmlkZXIgPSB3aW5kb3cuV2FsbGV0Q29ubmVjdFByb3ZpZGVyPy5kZWZhdWx0O1xyXG4gICAgICBjb25zdCBFdm1DaGFpbnMgPSB3aW5kb3cuZXZtQ2hhaW5zO1xyXG4gICAgICBjb25zdCBGb3J0bWF0aWMgPSB3aW5kb3cuRm9ydG1hdGljO1xyXG4gICAgICBcclxuICAgICAgLy8gV2ViM21vZGFsIGluc3RhbmNlXHJcbiAgICAgIHZhciB3ZWIzTW9kYWw7XHJcbiAgICAgIFxyXG4gICAgICAvLyBDaG9zZW4gd2FsbGV0IHByb3ZpZGVyIGdpdmVuIGJ5IHRoZSBkaWFsb2cgd2luZG93XHJcbiAgICAgIHZhciBwcm92aWRlcjtcclxuICAgICAgXHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBTZXR1cCB0aGUgb3JjaGVzdHJhXHJcbiAgICAgICAqL1xyXG4gICAgICAkc2NvcGUuZmQuaW5pdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgXHJcbiAgICAgICAgIFxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiV2FsbGV0Q29ubmVjdFByb3ZpZGVyIGlzXCIsIFdhbGxldENvbm5lY3RQcm92aWRlcik7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJGb3J0bWF0aWMgaXNcIiwgRm9ydG1hdGljKTtcclxuICAgICAgXHJcbiAgICAgICAgLy8gVGVsbCBXZWIzbW9kYWwgd2hhdCBwcm92aWRlcnMgd2UgaGF2ZSBhdmFpbGFibGUuXHJcbiAgICAgICAgLy8gQnVpbHQtaW4gd2ViIGJyb3dzZXIgcHJvdmlkZXIgKG9ubHkgb25lIGNhbiBleGlzdCBhcyBhIHRpbWUpXHJcbiAgICAgICAgLy8gbGlrZSBNZXRhTWFzaywgQnJhdmUgb3IgT3BlcmEgaXMgYWRkZWQgYXV0b21hdGljYWxseSBieSBXZWIzbW9kYWxcclxuICAgICAgICBjb25zdCBwcm92aWRlck9wdGlvbnMgPSB7XHJcbiAgICAgICAgICB3YWxsZXRjb25uZWN0OiB7XHJcbiAgICAgICAgICAgIHBhY2thZ2U6IFdhbGxldENvbm5lY3RQcm92aWRlcixcclxuICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgIC8vIEt0bHlvIGtleVxyXG4gICAgICAgICAgICAgIGluZnVyYUlkOiBcImQ1NjE5YTQxOTA1YTQxZjg4YzVlNzQyZTQxODBlZjNjXCIsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgIFxyXG4gICAgICAgICAgLyogYWRkIGxhdGVyIElMSlxyXG4gICAgICAgICAgZm9ydG1hdGljOiB7XHJcbiAgICAgICAgICAgIHBhY2thZ2U6IEZvcnRtYXRpYyxcclxuICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgIC8vIE1pa2tvJ3MgVEVTVE5FVCBhcGkga2V5XHJcbiAgICAgICAgICAgICAga2V5OiBcInBrX3Rlc3RfMzkxRTI2QTNCNDNBMzM1MFwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgICovXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAoV2ViM01vZGFsIT09dW5kZWZpbmVkKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHdlYjNNb2RhbCA9IG5ldyBXZWIzTW9kYWwoe1xyXG4gICAgICAgICAgICBjYWNoZVByb3ZpZGVyOiBmYWxzZSwgLy8gb3B0aW9uYWxcclxuICAgICAgICAgICAgcHJvdmlkZXJPcHRpb25zLCAvLyByZXF1aXJlZFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfWVsc2UgJHNjb3BlLmZkLmVycm9yX21zZz0nRXJyb3IgY29ubmVjdGluZyB0byB3ZWIzIHByb3ZpZGVyJ1xyXG4gICAgICB9XHJcblxyXG5cclxuICAgICAgLyoqXHJcbiAgICAgICAqIEtpY2sgaW4gdGhlIFVJIGFjdGlvbiBhZnRlciBXZWIzbW9kYWwgZGlhbG9nIGhhcyBjaG9zZW4gYSBwcm92aWRlclxyXG4gICAgICAgKi9cclxuICAgICAgJHNjb3BlLmZkLmZldGNoQWNjb3VudERhdGE9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgXHJcbiAgICAgICAgICRzY29wZS5mZC5jb25uZWN0aW5nVG9XYWxsZXQgPSB0cnVlO1xyXG4gICAgICAgICAkc2NvcGUuZmQud2ViM0Nvbm5lY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAkcm9vdFNjb3BlLmdsb2JhbHMud2ViM0Nvbm5lY3RlZD0kc2NvcGUuZmQud2ViM0Nvbm5lY3RlZDtcclxuICAgICAgICAgJHNjb3BlLmZkLmV0aF9hZGRyZXNzPW51bGw7XHJcbiAgICAgICAgLy8gR2V0IGEgV2ViMyBpbnN0YW5jZSBmb3IgdGhlIHdhbGxldFxyXG4gICAgICAgIGNvbnN0IHdlYjMgPSBuZXcgV2ViMyhwcm92aWRlcik7XHJcbiAgICAgIFxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiV2ViMyBpbnN0YW5jZSBpc1wiLCB3ZWIzKTtcclxuICAgICAgICAgd2luZG93LndlYjMgPSB3ZWIzO1xyXG4gICAgICAgIC8vIEdldCBjb25uZWN0ZWQgY2hhaW4gaWQgZnJvbSBFdGhlcmV1bSBub2RlXHJcbiAgICAgICAgd2ViMy5ldGguZ2V0Q2hhaW5JZCgpLnRoZW4oZnVuY3Rpb24oZGF0YSl7XHJcbiAgICAgICAgICAkc2NvcGUuZmQuY2hhaW5JZCA9IGRhdGE7XHJcbiAgICAgICAgICAgJHNjb3BlLmZkLmNoYWluRGF0YT1Fdm1DaGFpbnMuZ2V0Q2hhaW4oJHNjb3BlLmZkLmNoYWluSWQpOy8vLnRoZW4oZnVuY3Rpb24oZGF0YSl7XHJcbiAgICAgICAgICAgJHNjb3BlLmZkLmNvbm5lY3RlZF9uZXR3b3JrID0gJHNjb3BlLmZkLmNoYWluRGF0YS5uYW1lO1xyXG4gICAgICAgICAgIC8vICRzY29wZS5mZC5jaGFpbkRhdGEgPSBkYXRhO1xyXG4gICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmNvbm5lY3RpbmdUb1dhbGxldD1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIC8vIExvYWQgY2hhaW4gaW5mb3JtYXRpb24gb3ZlciBhbiBIVFRQIEFQSVxyXG4gICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgLy9zZXQgY2hhaW4gbmFtZVxyXG4gICAgICAgIC8vZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNuZXR3b3JrLW5hbWVcIikudGV4dENvbnRlbnQgPSBjaGFpbkRhdGEubmFtZTtcclxuICAgICAgXHJcbiAgICAgICAgLy8gR2V0IGxpc3Qgb2YgYWNjb3VudHMgb2YgdGhlIGNvbm5lY3RlZCB3YWxsZXRcclxuICAgICAgICB3ZWIzLmV0aC5nZXRBY2NvdW50cygpLnRoZW4oZnVuY3Rpb24oZGF0YSl7XHJcbiAgICAgICAgICAgIGxldCBhY2NvdW50cyA9IGRhdGE7XHJcbiAgICAgICAgICAgIC8vIE1ldGFNYXNrIGRvZXMgbm90IGdpdmUgeW91IGFsbCBhY2NvdW50cywgb25seSB0aGUgc2VsZWN0ZWQgYWNjb3VudFxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkdvdCBhY2NvdW50c1wiLCBhY2NvdW50cyk7XHJcbiAgICAgICAgICAgIC8vc2VsZWN0IGFjY291bnQgaGVyZVxyXG4gICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICBpZiAoYWNjb3VudHMubGVuZ3RoPjApXHJcbiAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmV0aF9hZGRyZXNzID0gYWNjb3VudHNbMF07XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5mZC53ZWIzQ29ubmVjdGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICRyb290U2NvcGUuZ2xvYmFscy53ZWIzQ29ubmVjdGVkPSRzY29wZS5mZC53ZWIzQ29ubmVjdGVkO1xyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICRzY29wZS5mZC5jb25uZWN0aW5nVG9XYWxsZXQ9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuY29ubmVjdGluZ1RvV2FsbGV0PWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgIH0pO1xyXG4gICAgICBcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgIC8vIEJlY2F1c2UgcmVuZGVyaW5nIGFjY291bnQgZG9lcyBpdHMgb3duIFJQQyBjb21tdWNhdGlvblxyXG4gICAgICAgIC8vIHdpdGggRXRoZXJldW0gbm9kZSwgd2UgZG8gbm90IHdhbnQgdG8gZGlzcGxheSBhbnkgcmVzdWx0c1xyXG4gICAgICAgIC8vIHVudGlsIGRhdGEgZm9yIGFsbCBhY2NvdW50cyBpcyBsb2FkZWRcclxuICAgICAgICBcclxuICAgICAgICAvL2Rvbid0IHJlYWxseSB1bmRlcnN0YW5kIHRoaXNcclxuICAgICAgICAvL2F3YWl0IFByb21pc2UuYWxsKHJvd1Jlc29sdmVycyk7XHJcbiAgICAgIFxyXG4gICAgICB9XHJcblxyXG5cclxuXHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBGZXRjaCBhY2NvdW50IGRhdGEgZm9yIFVJIHdoZW5cclxuICAgICAgICogLSBVc2VyIHN3aXRjaGVzIGFjY291bnRzIGluIHdhbGxldFxyXG4gICAgICAgKiAtIFVzZXIgc3dpdGNoZXMgbmV0d29ya3MgaW4gd2FsbGV0XHJcbiAgICAgICAqIC0gVXNlciBjb25uZWN0cyB3YWxsZXQgaW5pdGlhbGx5XHJcbiAgICAgICAqL1xyXG4gICAgICAkc2NvcGUuZmQucmVmcmVzaEFjY291bnREYXRhID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLmZldGNoQWNjb3VudERhdGEocHJvdmlkZXIpO1xyXG5cclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBDb25uZWN0IHdhbGxldCBidXR0b24gcHJlc3NlZC5cclxuICAgICAgICovXHJcbiAgICAgIC8vYXN5bmMgZnVuY3Rpb24gb25Db25uZWN0KCkge1xyXG4gICAgICAgICBcclxuICAgICAgICRzY29wZS5mZC5jb25uZWN0V2ViM1dhbGxldCA9IGZ1bmN0aW9uKCl7ICBcclxuICAgICAgXHJcbiAgICAgICAgY29uc29sZS5sb2coXCJPcGVuaW5nIGEgZGlhbG9nXCIsIHdlYjNNb2RhbCk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHdlYjNNb2RhbC5jb25uZWN0KCkudGhlbihmdW5jdGlvbihkYXRhKXtcclxuICAgICAgICAgICAgcHJvdmlkZXIgPSBkYXRhO1xyXG4gICAgICAgICAgICAkcm9vdFNjb3BlLmdsb2JhbHMud2ViM1Byb3ZpZGVyPXByb3ZpZGVyO1xyXG4gICAgICAgICAgICAgLy8gU3Vic2NyaWJlIHRvIGFjY291bnRzIGNoYW5nZVxyXG4gICAgICAgICAgICBwcm92aWRlci5vbihcImFjY291bnRzQ2hhbmdlZFwiLCAoYWNjb3VudHMpID0+IHtcclxuICAgICAgICAgICAgICAkc2NvcGUuZmQuZmV0Y2hBY2NvdW50RGF0YSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgIFxyXG4gICAgICAgICAgICAvLyBTdWJzY3JpYmUgdG8gY2hhaW5JZCBjaGFuZ2VcclxuICAgICAgICAgICAgcHJvdmlkZXIub24oXCJjaGFpbkNoYW5nZWRcIiwgKGNoYWluSWQpID0+IHtcclxuICAgICAgICAgICAgICAgJHNjb3BlLmZkLmNoYWluSWQgPSBjaGFpbklkO1xyXG4gICAgICAgICAgICAgICRzY29wZS5mZC5mZXRjaEFjY291bnREYXRhKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgXHJcbiAgICAgICAgIC8vIFN1YnNjcmliZSB0byBuZXR3b3JrSWQgY2hhbmdlXHJcbiAgICAgICAgIHByb3ZpZGVyLm9uKFwibmV0d29ya0NoYW5nZWRcIiwgKG5ldHdvcmtJZCkgPT4ge1xyXG4gICAgICAgICAgICAkc2NvcGUuZmQubmV0d29ya0lkPW5ldHdvcmtJZDtcclxuICAgICAgICAgICAkc2NvcGUuZmQuZmV0Y2hBY2NvdW50RGF0YSgpO1xyXG4gICAgICAgICB9KTtcclxuICAgICAgIFxyXG4gICAgICAgICAkc2NvcGUuZmQucmVmcmVzaEFjY291bnREYXRhKCk7XHJcbiAgICAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBjYXRjaChlKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkNvdWxkIG5vdCBnZXQgYSB3YWxsZXQgY29ubmVjdGlvblwiLCBlKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgfVxyXG5cclxuICAgICAgLyoqXHJcbiAgICAgICAqIERpc2Nvbm5lY3Qgd2FsbGV0IGJ1dHRvbiBwcmVzc2VkLlxyXG4gICAgICAgKi9cclxuICAgICAgJHNjb3BlLmZkLmRpc2Nvbm5lY3RXYWxsZXQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIFxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiS2lsbGluZyB0aGUgd2FsbGV0IGNvbm5lY3Rpb25cIiwgcHJvdmlkZXIpO1xyXG4gICAgICBcclxuICAgICAgICAgICAgICAgICAgLy8gVE9ETzogV2hpY2ggcHJvdmlkZXJzIGhhdmUgY2xvc2UgbWV0aG9kP1xyXG4gICAgICAgICAgICAgICAgICBpZihwcm92aWRlci5jbG9zZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyLmNsb3NlKCkudGhlbihmdW5jdGlvbihkYXRhKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjYWNoZWQgcHJvdmlkZXIgaXMgbm90IGNsZWFyZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gV2FsbGV0Q29ubmVjdCB3aWxsIGRlZmF1bHQgdG8gdGhlIGV4aXN0aW5nIHNlc3Npb25cclxuICAgICAgICAgICAgICAgICAgICAvLyBhbmQgZG9lcyBub3QgYWxsb3cgdG8gcmUtc2NhbiB0aGUgUVIgY29kZSB3aXRoIGEgbmV3IHdhbGxldC5cclxuICAgICAgICAgICAgICAgICAgICAvLyBEZXBlbmRpbmcgb24geW91ciB1c2UgY2FzZSB5b3UgbWF5IHdhbnQgb3Igd2FudCBub3QgaGlzIGJlaGF2aXIuXHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuZmQud2ViM0Nvbm5lY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAkcm9vdFNjb3BlLmdsb2JhbHMud2ViM0Nvbm5lY3RlZD0kc2NvcGUuZmQud2ViM0Nvbm5lY3RlZDtcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmV0aF9hZGRyZXNzPW51bGw7XHJcbiAgICAgICAgICAgICAgICAgIHdlYjNNb2RhbC5jbGVhckNhY2hlZFByb3ZpZGVyKCk7XHJcbiAgICAgICAgICAgICAgICAgIHByb3ZpZGVyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAkc2NvcGUuZmQuaW5pdCgpO1xyXG4gICAgICAgICAvLyRzY29wZS5mZC5jb25uZWN0V2ViM1dhbGxldCgpOyAgXHJcbiAgICAgICAgIGxldCB0ZW1wbGF0ZVxyXG4gICAgICAgICB0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZUNhY2hlLmdldCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RXZWIzV2FsbGV0Lmh0bWwnKTtcclxuICAgICAgICAgJGVsZW1lbnQuYXBwZW5kKCRjb21waWxlKHRlbXBsYXRlKSgkc2NvcGUpKTsgXHJcblxyXG4gICBcclxuICBcclxuICBcclxuICAgICAgfV07XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJlc3RyaWN0OiAnQScsXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNvbnRyb2xsZXI6IGNvbnRyb2xsZXIsXHJcbiAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcclxuXHJcbiAgICAgICAgICAgIH0gICAgIFxyXG4gIH1cclxuICBcclxufTtcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGt0V2lkZ2V0RGF0YVNvdXJjZURlZiAoV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZSkge1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxuICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RXaWRnZXREYXRhU291cmNlRGVmLmh0bWwnLFxuICAgICAgICAgICAgIGNvbnRyb2xsZXI6IGZ1bmN0aW9uKCRzY29wZSxXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlKXtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uIChzY29wZSwgZWxlbSwgYXR0cnMpIHtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiAoIXNjb3BlLmZkLmxvY2FsVmFycykgc2NvcGUuZmQubG9jYWxWYXJzPXt9XG4gICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLndkZXMgPSBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlXG4gICAgICAgICAgICAgICAgaWYgKCFzY29wZS5mZC5sb2NhbFZhcnMucmVzb3VyY2VEZWZpbml0aW9uICYmIHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbikgc2NvcGUuZmQubG9jYWxWYXJzLnJlc291cmNlRGVmaW5pdGlvbj1zY29wZS5yZXNvdXJjZURlZmluaXRpb25cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiAoIXNjb3BlLmZkLlBhcmFtZXRlcnMpIHNjb3BlLmZkLlBhcmFtZXRlcnMgPSB7fVxuICAgICAgICAgICAgICAgIGlmKCFzY29wZS5mZC5QYXJhbWV0ZXJzPy5EYXRhU291cmNlcykgc2NvcGUuZmQuUGFyYW1ldGVycy5EYXRhU291cmNlcyA9IFtdXG4gICAgICAgICAgICAgICAgc2NvcGUuZmQubG9jYWxWYXJzLmFkZERhdGFTb3VyY2U9ZnVuY3Rpb24od2lkZ2V0KXtcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUuZmQuUGFyYW1ldGVycy5EYXRhU291cmNlcy5wdXNoKHt3aWRnZXRJZDp3aWRnZXQuaWQsd2lkZ2V0TmFtZTp3aWRnZXQubmFtZSxzcmNOYW1lOid3aWRnZXQnKyhzY29wZS5mZC5QYXJhbWV0ZXJzLkRhdGFTb3VyY2VzLmxlbmd0aCsxKX0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLmxvY2FsVmFycy5kZWxEYXRhU291cmNlPWZ1bmN0aW9uKGlkeCl7XG4gICAgICAgICAgICAgICAgICAgIHNjb3BlLmZkLlBhcmFtZXRlcnMuRGF0YVNvdXJjZXMuc3BsaWNlKGlkeCwxKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgXG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0V2lkZ2V0VG9vbGJveCAoKSB7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICByZXN0cmljdDogJ0EnLFxyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFdpZGdldFRvb2xib3guaHRtbCcsXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgY29udHJvbGxlcjogWyckc2NvcGUnLCckcm9vdFNjb3BlJywnR3JpZHN0ZXJTZXJ2aWNlJywnVGFza0RlZmluaXRpb25TZXJ2aWNlJywnS2F0YWx5b1N0YXRlTWFuYWdlcicsJyR0aW1lb3V0JywgZnVuY3Rpb24oJHNjb3BlLCRyb290U2NvcGUsR3JpZHN0ZXJTZXJ2aWNlLFRhc2tEZWZpbml0aW9uU2VydmljZSxLYXRhbHlvU3RhdGVNYW5hZ2VyLCR0aW1lb3V0KXtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuQ1RSTD0na3RXaWRnZXRUb29sYm94JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudG9vbGJveEl0ZW1zID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50ZHMgPSBUYXNrRGVmaW5pdGlvblNlcnZpY2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jb2xsYXBzZWQ9e307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZWxvYWRpbmdUb29sYm94ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRyYWd1bGFfYmFnPSdiYWctJyskc2NvcGUuZ3JpZHN0ZXJUeXBlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5kZXN0cm95RHJhZ3VsYSgkc2NvcGUuZHJhZ3VsYV9iYWcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHdpZGdldEhhbmRsZSA9ICRzY29wZS5ncmlkc3RlclR5cGUrJy1lbGVtZW50LWRyYWctaGFuZGxlJztcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNldHVwRHJhZ3VsYVJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjd2l6YXJkJykuaGlkZSg0MDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LDYwMDApO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0dXBEcmFndWxhKCRzY29wZS5kcmFndWxhX2JhZywkc2NvcGUuZ3JpZHN0ZXJUeXBlKyctdG9vbGJveCcsd2lkZ2V0SGFuZGxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLndpZGdldFRvb2xib3hJdGVtcz0gJHNjb3BlLmdzcnZjLmdldFdpZGdldFRvb2xib3hJdGVtcygkc2NvcGUuZ3JpZHN0ZXJUeXBlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm5vdF90b29sYm94X2dyb3VwX2NsYXNzPSdpdGVtICcrJHNjb3BlLmdyaWRzdGVyVHlwZSsnLWVsZW1lbnQtZHJhZy1oYW5kbGUnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vcmVnaXN0ZXIgdG8gc3RhdGUgbWFuYWdlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUua3NtID0gS2F0YWx5b1N0YXRlTWFuYWdlcjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0b29sYm94X2xvYWRlZCA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS53aWRnZXRUb29sYm94TG9hZGVkKGRhdGEuc3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0b29sYm94X3JlbG9hZCA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUud2lkZ2V0VG9vbGJveExvYWRlZChkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0b29sYm94U3RhdGU9ICRzY29wZS5rc20uYWRkU3ViamVjdCgkc2NvcGUuZ3JpZHN0ZXJUeXBlK1wiVG9vbEJveFwiLG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdG9vbGJveFN0YXRlTmFtZSA9IHRvb2xib3hTdGF0ZS5zdWJqZWN0Lm5hbWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYWN0aW9uX3Rvb2xib3hfbG9hZGVkID0gJHNjb3BlLmtzbS5hZGRBY3Rpb24odG9vbGJveFN0YXRlTmFtZSxcInRvb2xib3hMb2FkZWRcIix0b29sYm94X2xvYWRlZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYWN0aW9uX3Rvb2xib3hfcmVsb2FkID0gJHNjb3BlLmtzbS5hZGRBY3Rpb24odG9vbGJveFN0YXRlTmFtZSxcInRvb2xib3hSZWxvYWRcIix0b29sYm94X3JlbG9hZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNldENvbGxhcHNlPWZ1bmN0aW9uKHZhbHVlLGVsZW1lbnRfdHlwZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudF90eXBlPT1cInRvb2xib3hncm91cFwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuY29sbGFwc2VkW3ZhbHVlXT09PXVuZGVmaW5lZCkgJHNjb3BlLmNvbGxhcHNlZFt2YWx1ZV0gPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5jb2xsYXBzZWRbdmFsdWVdKSAkc2NvcGUuY29sbGFwc2VkW3ZhbHVlXSA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgJHNjb3BlLmNvbGxhcHNlZFt2YWx1ZV0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLndpZGdldFRvb2xib3hMb2FkZWQ9ZnVuY3Rpb24odmFsdWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5kZXN0cm95RHJhZ3VsYSgnYmFnLScrJHNjb3BlLmdyaWRzdGVyVHlwZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLndpZGdldFRvb2xib3hJdGVtcz0gJHNjb3BlLmdzcnZjLmdldFdpZGdldFRvb2xib3hJdGVtcygkc2NvcGUuZ3JpZHN0ZXJUeXBlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRvb2xib3hTdGF0dXM9ZnVuY3Rpb24odmFsdWUpe1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLlNldFdpZGdldFRvb2xib3hMb2FkZWQodmFsdWUsJHNjb3BlLmdyaWRzdGVyVHlwZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgIH1dLFxyXG4gICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgfVxyXG59O1xuJ3VzZSBzdHJpY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGt0V3JpdGVTbWFydENvbnRyYWN0ICgpIHtcclxuICAgXHJcbiAgIHZhciBjb250cm9sbGVyID0gWyckc2NvcGUnLCAnJHVpYk1vZGFsJywnJHN0YXRlUGFyYW1zJywnJHN0YXRlJywnJHRpbWVvdXQnLCdDb2Rlc1NlcnZpY2UnLCdSZXNvdXJjZXNEYXRhU2VydmljZScsJyRyb290U2NvcGUnLCdDT0RFU19DT05TVCcsJ1Byb2Nlc3NpbmdTZXJ2aWNlJywnTWVzc2FnaW5nU2VydmljZScsJ0dyaWRzdGVyU2VydmljZScsJ1Rhc2tEYXRhU2VydmljZScsJ1dpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UnLCdLYXRhbHlvU3RhdGVNYW5hZ2VyJywnVXRpbGl0eVNlcnZpY2UnLCckdGVtcGxhdGVDYWNoZScsJyRjb21waWxlJywnJGVsZW1lbnQnLFxyXG4gICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoJHNjb3BlLCR1aWJNb2RhbCwkc3RhdGVQYXJhbXMsJHN0YXRlLCR0aW1lb3V0LENvZGVzU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSwkcm9vdFNjb3BlLENPREVTX0NPTlNULFByb2Nlc3NpbmdTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlLFRhc2tEYXRhU2VydmljZSxXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLEthdGFseW9TdGF0ZU1hbmFnZXIsVXRpbGl0eVNlcnZpY2UsJHRlbXBsYXRlQ2FjaGUsJGNvbXBpbGUsJGVsZW1lbnQpIHtcclxuICAgICBcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldCA9IHt9O1xyXG4gICAgICAvLyRzY29wZS5mZCA9IHt9O1xyXG4gICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlYXJjaEZvcm1Eb3dubG9hZGVkID0gZmFsc2U7XHJcbiAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZm9ybUxvYWRlZD1mYWxzZTtcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zcmNfdHlwZV90ZXh0PUNPREVTX0NPTlNULl9QT1BVTEFURV9UWVBFXztcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5hbmltYXRpb25zRW5hYmxlZCA9IHRydWU7XHJcbiAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQud2lkZ2V0VHlwZSA9IDM7XHJcbiAgICAgICRzY29wZS5nc3J2YyA9IEdyaWRzdGVyU2VydmljZTtcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5mb3JtUGFyYW1zPXtmb3JtVmlld1R5cGU6MSxzaG93R3JpZE5hdmlnYXRpb246dHJ1ZX07XHJcbiAgICAgICRzY29wZS5mZC5jb250cmFjdERhdGFzZXRzID0gdHJ1ZTtcclxuICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YT09dW5kZWZpbmVkKSAkc2NvcGUuZm9ybURhdGE9e307XHJcbiAgICAgIGlmICgkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXT09dW5kZWZpbmVkKSAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXT1bXTtcclxuICAgICAgJHNjb3BlLmZkLm1zZ3M9e307XHJcbiAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZGF0YXNldE1hcHBlclR5cGU9MDtcclxuICAgICAgJHNjb3BlLmZkLlNob3dUYWI9MTtcclxuICAgICAgaWYgKCRzY29wZS5mZC5Qb3B1bGF0ZVR5cGU9PXVuZGVmaW5lZCkgJHNjb3BlLmZkLlBvcHVsYXRlVHlwZT1cIlwiO1xyXG4gICAgICAkc2NvcGUuZmQudG9rZW4xQ29udHJhY3Q9XCIweDI0RTM3OTQ2MDVDODRFNTgwRUVBNDk3MjczOEQ2MzNFOGE3MTI3YzhcIjtcclxuICAgICAgJHNjb3BlLmZkLnRva2VuMUNvbnRyYWN0QWJpPVt7XCJpbnB1dHNcIjpbXSxcInN0YXRlTXV0YWJpbGl0eVwiOlwibm9ucGF5YWJsZVwiLFwidHlwZVwiOlwiY29uc3RydWN0b3JcIn0se1wiYW5vbnltb3VzXCI6ZmFsc2UsXCJpbnB1dHNcIjpbe1wiaW5kZXhlZFwiOnRydWUsXCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcIm93bmVyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImluZGV4ZWRcIjp0cnVlLFwiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJzcGVuZGVyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwidmFsdWVcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwiQXBwcm92YWxcIixcInR5cGVcIjpcImV2ZW50XCJ9LHtcImFub255bW91c1wiOmZhbHNlLFwiaW5wdXRzXCI6W3tcImluZGV4ZWRcIjp0cnVlLFwiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJwcmV2aW91c093bmVyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImluZGV4ZWRcIjp0cnVlLFwiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJuZXdPd25lclwiLFwidHlwZVwiOlwiYWRkcmVzc1wifV0sXCJuYW1lXCI6XCJPd25lcnNoaXBUcmFuc2ZlcnJlZFwiLFwidHlwZVwiOlwiZXZlbnRcIn0se1wiYW5vbnltb3VzXCI6ZmFsc2UsXCJpbnB1dHNcIjpbe1wiaW5kZXhlZFwiOnRydWUsXCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcImZyb21cIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW5kZXhlZFwiOnRydWUsXCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInRvXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwidmFsdWVcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwiVHJhbnNmZXJcIixcInR5cGVcIjpcImV2ZW50XCJ9LHtcImlucHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcIm93bmVyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwic3BlbmRlclwiLFwidHlwZVwiOlwiYWRkcmVzc1wifV0sXCJuYW1lXCI6XCJhbGxvd2FuY2VcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJ2aWV3XCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJzcGVuZGVyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiYW1vdW50XCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcImFwcHJvdmVcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJib29sXCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcImJvb2xcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJub25wYXlhYmxlXCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJhY2NvdW50XCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9XSxcIm5hbWVcIjpcImJhbGFuY2VPZlwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwiZGVjaW1hbHNcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50OFwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50OFwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInNwZW5kZXJcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJzdWJ0cmFjdGVkVmFsdWVcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwiZGVjcmVhc2VBbGxvd2FuY2VcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJib29sXCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcImJvb2xcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJub25wYXlhYmxlXCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJzcGVuZGVyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiYWRkZWRWYWx1ZVwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJuYW1lXCI6XCJpbmNyZWFzZUFsbG93YW5jZVwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImJvb2xcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwiYm9vbFwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcIm5vbnBheWFibGVcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwibmFtZVwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcInN0cmluZ1wiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJzdHJpbmdcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJ2aWV3XCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbXSxcIm5hbWVcIjpcIm93bmVyXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJyZW5vdW5jZU93bmVyc2hpcFwiLFwib3V0cHV0c1wiOltdLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJub25wYXlhYmxlXCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbXSxcIm5hbWVcIjpcInN5bWJvbFwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcInN0cmluZ1wiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJzdHJpbmdcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJ2aWV3XCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbXSxcIm5hbWVcIjpcInRvdGFsU3VwcGx5XCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwicmVjaXBpZW50XCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiYW1vdW50XCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcInRyYW5zZmVyXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYm9vbFwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJib29sXCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwibm9ucGF5YWJsZVwiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwic2VuZGVyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwicmVjaXBpZW50XCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiYW1vdW50XCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcInRyYW5zZmVyRnJvbVwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImJvb2xcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwiYm9vbFwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcIm5vbnBheWFibGVcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcIm5ld093bmVyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9XSxcIm5hbWVcIjpcInRyYW5zZmVyT3duZXJzaGlwXCIsXCJvdXRwdXRzXCI6W10sXCJzdGF0ZU11dGFiaWxpdHlcIjpcIm5vbnBheWFibGVcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9XTs7XHJcbiAgICAgICRzY29wZS5mZC50b2tlbjJDb250cmFjdD1cIjB4MURFNWUwMDBDNDFDOGQzNWI5ZjFmNDk4NUMyMzk4OGYwNTgzMTA1N1wiO1xyXG4gICAgICAkc2NvcGUuZmQudG9rZW4yQ29udHJhY3RBYmk9W3tcImlucHV0c1wiOltdLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJub25wYXlhYmxlXCIsXCJ0eXBlXCI6XCJjb25zdHJ1Y3RvclwifSx7XCJhbm9ueW1vdXNcIjpmYWxzZSxcImlucHV0c1wiOlt7XCJpbmRleGVkXCI6dHJ1ZSxcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwib3duZXJcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW5kZXhlZFwiOnRydWUsXCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInNwZW5kZXJcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJ2YWx1ZVwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJuYW1lXCI6XCJBcHByb3ZhbFwiLFwidHlwZVwiOlwiZXZlbnRcIn0se1wiYW5vbnltb3VzXCI6ZmFsc2UsXCJpbnB1dHNcIjpbe1wiaW5kZXhlZFwiOnRydWUsXCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInByZXZpb3VzT3duZXJcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW5kZXhlZFwiOnRydWUsXCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcIm5ld093bmVyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9XSxcIm5hbWVcIjpcIk93bmVyc2hpcFRyYW5zZmVycmVkXCIsXCJ0eXBlXCI6XCJldmVudFwifSx7XCJhbm9ueW1vdXNcIjpmYWxzZSxcImlucHV0c1wiOlt7XCJpbmRleGVkXCI6dHJ1ZSxcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwiZnJvbVwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbmRleGVkXCI6dHJ1ZSxcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwidG9cIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJ2YWx1ZVwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJuYW1lXCI6XCJUcmFuc2ZlclwiLFwidHlwZVwiOlwiZXZlbnRcIn0se1wiaW5wdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwib3duZXJcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJzcGVuZGVyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9XSxcIm5hbWVcIjpcImFsbG93YW5jZVwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInNwZW5kZXJcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJhbW91bnRcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwiYXBwcm92ZVwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImJvb2xcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwiYm9vbFwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcIm5vbnBheWFibGVcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcImFjY291bnRcIixcInR5cGVcIjpcImFkZHJlc3NcIn1dLFwibmFtZVwiOlwiYmFsYW5jZU9mXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJkZWNpbWFsc1wiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQ4XCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcInVpbnQ4XCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwic3BlbmRlclwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcInN1YnRyYWN0ZWRWYWx1ZVwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJuYW1lXCI6XCJkZWNyZWFzZUFsbG93YW5jZVwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImJvb2xcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwiYm9vbFwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcIm5vbnBheWFibGVcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInNwZW5kZXJcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJhZGRlZFZhbHVlXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcImluY3JlYXNlQWxsb3dhbmNlXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYm9vbFwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJib29sXCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwibm9ucGF5YWJsZVwiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJuYW1lXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwic3RyaW5nXCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcInN0cmluZ1wifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwib3duZXJcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcImFkZHJlc3NcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJ2aWV3XCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbXSxcIm5hbWVcIjpcInJlbm91bmNlT3duZXJzaGlwXCIsXCJvdXRwdXRzXCI6W10sXCJzdGF0ZU11dGFiaWxpdHlcIjpcIm5vbnBheWFibGVcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwic3ltYm9sXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwic3RyaW5nXCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcInN0cmluZ1wifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwidG90YWxTdXBwbHlcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJ2aWV3XCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJyZWNpcGllbnRcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJhbW91bnRcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwidHJhbnNmZXJcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJib29sXCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcImJvb2xcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJub25wYXlhYmxlXCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJzZW5kZXJcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJyZWNpcGllbnRcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJhbW91bnRcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwidHJhbnNmZXJGcm9tXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYm9vbFwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJib29sXCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwibm9ucGF5YWJsZVwiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwibmV3T3duZXJcIixcInR5cGVcIjpcImFkZHJlc3NcIn1dLFwibmFtZVwiOlwidHJhbnNmZXJPd25lcnNoaXBcIixcIm91dHB1dHNcIjpbXSxcInN0YXRlTXV0YWJpbGl0eVwiOlwibm9ucGF5YWJsZVwiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn1dOztcclxuICAgICAgJHNjb3BlLmZkLnN0YWtpbmdDb250cmFjdD1cIjB4OEMwNWJBMjE1NTc5MzZFM2UwNzEzZENFNEY5QzNiZmM5NzRmNEM4RVwiO1xyXG4gICAgICAkc2NvcGUuZmQuc3Rha2luZ0NvbnRyYWN0QWJpPVt7XCJpbnB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJfdG9rZW4xXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwiX3Rva2VuMlwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIl9hcHlcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJfZHVyYXRpb25cIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJfdG9rZW5SYXRpb1wiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIl9tYXhTdGFrZUFtdDFcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJfcmV3YXJkQW10MVwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcIl9vd25lclwiLFwidHlwZVwiOlwiYWRkcmVzc1wifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcIm5vbnBheWFibGVcIixcInR5cGVcIjpcImNvbnN0cnVjdG9yXCJ9LHtcImFub255bW91c1wiOmZhbHNlLFwiaW5wdXRzXCI6W3tcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwiZnJvbVwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcInNlbnREYXRlXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcIkFkZGVkVG9CbGFja0xpc3RcIixcInR5cGVcIjpcImV2ZW50XCJ9LHtcImFub255bW91c1wiOmZhbHNlLFwiaW5wdXRzXCI6W3tcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwidG9rZW4xXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwidG9rZW4yXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiYXB5XCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiZHVyYXRpb25cIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJtYXhTdGFrZUFtdDFcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJtYXhTdGFrZUFtdDJcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJyZXdhcmRBbXQxXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwicmV3YXJkQW10MlwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcIm93bmVyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiY3JlYXRlZEF0XCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiaW50ZXJlc3RSYXRlXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwidG9rZW5SYXRpb1wiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJuYW1lXCI6XCJDcmVhdGVkQ29udHJhY3RcIixcInR5cGVcIjpcImV2ZW50XCJ9LHtcImFub255bW91c1wiOmZhbHNlLFwiaW5wdXRzXCI6W3tcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwidG9cIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJyZWRlZW1lZERhdGVcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJhbW91bnRcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwiRWFybHlSZWRlZW1lZFwiLFwidHlwZVwiOlwiZXZlbnRcIn0se1wiYW5vbnltb3VzXCI6ZmFsc2UsXCJpbnB1dHNcIjpbe1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJ0b1wiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcInJlZGVlbWVkRGF0ZVwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcImFtb3VudDFcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJhbW91bnQyXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcIkVhcmx5UmVkZWVtZWRBbGxcIixcInR5cGVcIjpcImV2ZW50XCJ9LHtcImFub255bW91c1wiOmZhbHNlLFwiaW5wdXRzXCI6W3tcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwiZnJvbVwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcImFtb3VudFwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJuYW1lXCI6XCJSZWNlaXZlZFwiLFwidHlwZVwiOlwiZXZlbnRcIn0se1wiYW5vbnltb3VzXCI6ZmFsc2UsXCJpbnB1dHNcIjpbe1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJ0b1wiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcInJlZGVlbWVkRGF0ZVwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcImFtb3VudDFcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJhbW91bnQyXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcIlJlZGVlbWVkXCIsXCJ0eXBlXCI6XCJldmVudFwifSx7XCJhbm9ueW1vdXNcIjpmYWxzZSxcImlucHV0c1wiOlt7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInRvXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwicmVkZWVtZWREYXRlXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiYW1vdW50MVwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcImFtb3VudDJcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwiUmVkZWVtZWRBbGxcIixcInR5cGVcIjpcImV2ZW50XCJ9LHtcImFub255bW91c1wiOmZhbHNlLFwiaW5wdXRzXCI6W3tcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwiZnJvbVwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcInNlbnREYXRlXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcIlJlbW92ZWRGcm9tQmxhY2tMaXN0XCIsXCJ0eXBlXCI6XCJldmVudFwifSx7XCJhbm9ueW1vdXNcIjpmYWxzZSxcImlucHV0c1wiOlt7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcImZyb21cIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJhbW91bnRcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwiUmV2ZXJ0ZWRcIixcInR5cGVcIjpcImV2ZW50XCJ9LHtcImFub255bW91c1wiOmZhbHNlLFwiaW5wdXRzXCI6W3tcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwiZnJvbVwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInRva2VuQ3RyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiYW1vdW50XCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcIlN0YWtlZFwiLFwidHlwZVwiOlwiZXZlbnRcIn0se1wiYW5vbnltb3VzXCI6ZmFsc2UsXCJpbnB1dHNcIjpbe1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJmcm9tXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwic3RhcnREYXRlXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcIlN0YXJ0U3Rha2luZ1wiLFwidHlwZVwiOlwiZXZlbnRcIn0se1wiYW5vbnltb3VzXCI6ZmFsc2UsXCJpbnB1dHNcIjpbe1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJmcm9tXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwic3RvcERhdGVcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwiU3RvcFN0YWtpbmdcIixcInR5cGVcIjpcImV2ZW50XCJ9LHtcImFub255bW91c1wiOmZhbHNlLFwiaW5wdXRzXCI6W3tcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwidG9cIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW5kZXhlZFwiOmZhbHNlLFwiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJzZW50RGF0ZVwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcImFtb3VudFwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJuYW1lXCI6XCJUcmFuc2ZlckJhY2tSZXdhcmRcIixcInR5cGVcIjpcImV2ZW50XCJ9LHtcImFub255bW91c1wiOmZhbHNlLFwiaW5wdXRzXCI6W3tcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwiZnJvbVwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbmRleGVkXCI6ZmFsc2UsXCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcInNlbnREYXRlXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiYW1vdW50XCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcIlRyYW5zZmVyUmV3YXJkXCIsXCJ0eXBlXCI6XCJldmVudFwifSx7XCJzdGF0ZU11dGFiaWxpdHlcIjpcInBheWFibGVcIixcInR5cGVcIjpcImZhbGxiYWNrXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwiYWN0aXZhdGVcIixcIm91dHB1dHNcIjpbXSxcInN0YXRlTXV0YWJpbGl0eVwiOlwibm9ucGF5YWJsZVwiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJhcHlcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJ2aWV3XCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzW11cIixcIm5hbWVcIjpcImFkZHJlc3NMaXN0XCIsXCJ0eXBlXCI6XCJhZGRyZXNzW11cIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJib29sXCIsXCJuYW1lXCI6XCJibFN0YXR1c1wiLFwidHlwZVwiOlwiYm9vbFwifV0sXCJuYW1lXCI6XCJibGFja0xpc3RcIixcIm91dHB1dHNcIjpbXSxcInN0YXRlTXV0YWJpbGl0eVwiOlwibm9ucGF5YWJsZVwiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJjcmVhdGVkQXRcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJ2aWV3XCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbXSxcIm5hbWVcIjpcImRlQWN0aXZhdGVcIixcIm91dHB1dHNcIjpbXSxcInN0YXRlTXV0YWJpbGl0eVwiOlwibm9ucGF5YWJsZVwiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJkdXJhdGlvblwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcIndhbGxldFwiLFwidHlwZVwiOlwiYWRkcmVzc1wifV0sXCJuYW1lXCI6XCJnZXRCbGFja0xpc3RlZFN0YXR1c1wiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImJvb2xcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwiYm9vbFwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwiZ2V0TXlJbmZvXCIsXCJvdXRwdXRzXCI6W3tcImNvbXBvbmVudHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJ3YWxsZXRcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJ0b2tlblwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcImFtb3VudFwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcImNyZWF0ZWRBdFwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcImJvb2xcIixcIm5hbWVcIjpcInJlZGVlbWVkXCIsXCJ0eXBlXCI6XCJib29sXCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwicmV3YXJkQW10MVwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcInJld2FyZEFtdDJcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJyZWRlZW1lZEF0XCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwic3Rha2VFbmRcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwiaW50ZXJuYWxUeXBlXCI6XCJzdHJ1Y3QgS3RseW9TdGFraW5nLlRyYW5zYWN0aW9uW11cIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidHVwbGVbXVwifSx7XCJjb21wb25lbnRzXCI6W3tcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwibGltaXQxXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwibGltaXQyXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcImludGVybmFsVHlwZVwiOlwic3RydWN0IEt0bHlvU3Rha2luZy5NYXhMaW1pdFwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ0dXBsZVwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwiZ2V0TXlMaW1pdHNcIixcIm91dHB1dHNcIjpbe1wiY29tcG9uZW50c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcImxpbWl0MVwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcImxpbWl0MlwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJpbnRlcm5hbFR5cGVcIjpcInN0cnVjdCBLdGx5b1N0YWtpbmcuTWF4TGltaXRcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidHVwbGVcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJ2aWV3XCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbXSxcIm5hbWVcIjpcImdldE15U3Rha2luZ3NcIixcIm91dHB1dHNcIjpbe1wiY29tcG9uZW50c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcIndhbGxldFwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInRva2VuXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiYW1vdW50XCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiY3JlYXRlZEF0XCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwiYm9vbFwiLFwibmFtZVwiOlwicmVkZWVtZWRcIixcInR5cGVcIjpcImJvb2xcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJyZXdhcmRBbXQxXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwicmV3YXJkQW10MlwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcInJlZGVlbWVkQXRcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJzdGFrZUVuZFwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJpbnRlcm5hbFR5cGVcIjpcInN0cnVjdCBLdGx5b1N0YWtpbmcuVHJhbnNhY3Rpb25bXVwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ0dXBsZVtdXCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJnZXRSZXdhcmRzSW5mb1wiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwiZ2V0U3Rha2VSZXdhcmRBbW91bnRzXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwid2FsbGV0XCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9XSxcIm5hbWVcIjpcImdldFN0YWtpbmdzXCIsXCJvdXRwdXRzXCI6W3tcImNvbXBvbmVudHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJ3YWxsZXRcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJ0b2tlblwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcImFtb3VudFwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcImNyZWF0ZWRBdFwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcImJvb2xcIixcIm5hbWVcIjpcInJlZGVlbWVkXCIsXCJ0eXBlXCI6XCJib29sXCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwicmV3YXJkQW10MVwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcInJld2FyZEFtdDJcIixcInR5cGVcIjpcInVpbnQyNTZcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJyZWRlZW1lZEF0XCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwic3Rha2VFbmRcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwiaW50ZXJuYWxUeXBlXCI6XCJzdHJ1Y3QgS3RseW9TdGFraW5nLlRyYW5zYWN0aW9uW11cIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidHVwbGVbXVwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwiaW5mb1wiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwiYWRkcmVzc1wifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidWludDI1NlwifSx7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwibWF4U3Rha2VBbXQxXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJtYXhTdGFrZUFtdDJcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJ2aWV3XCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbXSxcIm5hbWVcIjpcIm93bmVyXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiaW5kZXhJZFwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJuYW1lXCI6XCJyZWRlZW1cIixcIm91dHB1dHNcIjpbXSxcInN0YXRlTXV0YWJpbGl0eVwiOlwibm9ucGF5YWJsZVwiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJyZWRlZW1BbGxcIixcIm91dHB1dHNcIjpbXSxcInN0YXRlTXV0YWJpbGl0eVwiOlwibm9ucGF5YWJsZVwiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiaW5kZXhJZFwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJuYW1lXCI6XCJyZWRlZW1FYXJseVwiLFwib3V0cHV0c1wiOltdLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJub25wYXlhYmxlXCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbXSxcIm5hbWVcIjpcInJlZGVlbUVhcmx5QWxsXCIsXCJvdXRwdXRzXCI6W10sXCJzdGF0ZU11dGFiaWxpdHlcIjpcIm5vbnBheWFibGVcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwicmV3YXJkQW10MVwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwicmV3YXJkQW10MlwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInRva2VuQ29udHJhY3RcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJhbXRcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwic3Rha2VcIixcIm91dHB1dHNcIjpbXSxcInN0YXRlTXV0YWJpbGl0eVwiOlwibm9ucGF5YWJsZVwiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJ0b2tlbjFcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcImFkZHJlc3NcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJ2aWV3XCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbXSxcIm5hbWVcIjpcInRva2VuMlwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwiYWRkcmVzc1wifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInRva2VuXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwicmV3YXJkX2Ftb3VudFwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJuYW1lXCI6XCJ0cmFuc2ZlckJhY2tSZXdhcmRcIixcIm91dHB1dHNcIjpbXSxcInN0YXRlTXV0YWJpbGl0eVwiOlwibm9ucGF5YWJsZVwiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwidG9rZW5cIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJyZXdhcmRfYW1vdW50XCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcInRyYW5zZmVyUmV3YXJkXCIsXCJvdXRwdXRzXCI6W10sXCJzdGF0ZU11dGFiaWxpdHlcIjpcIm5vbnBheWFibGVcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcInN0YXRlTXV0YWJpbGl0eVwiOlwicGF5YWJsZVwiLFwidHlwZVwiOlwicmVjZWl2ZVwifV07XHJcbiAgICAgXHJcbiAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMgPT0gdW5kZWZpbmVkKSAgJHNjb3BlLmxvY2FsVmFycz0ge30gXHJcbiAgICAgICRzY29wZS5sb2NhbFZhcnMuc2hvd01lbnUgPSBmYWxzZVxyXG4gICAgICBcclxuICAgICAgICRzY29wZS5sb2NhbFZhcnMudG9nZ2xlRHJvcGRvd24gPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dNZW51ID0gICRzY29wZS5sb2NhbFZhcnMuc2hvd01lbnUgPyBmYWxzZTogdHJ1ZSBcclxuICAgICAgIH1cclxuICAgIFxyXG4gICAgIFxyXG4gICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmdyaWRzdGVyVHlwZT1cInJlc291cmNlXCI7XHJcbiAgICAgICAgICAvLyAkc2NvcGUuZ3JpZHN0ZXJPcHRzID0gR3JpZHN0ZXJTZXJ2aWNlLmdldEdyaWRzdGVyT3B0aW9ucygpO1xyXG4gICAgXHJcbiAgICBcclxuICAgICAgICBcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5kYXNoYm9hcmQgPSB7XHJcbiAgXHRcdFx0XHRpZDogJzEnLFxyXG4gIFx0XHRcdFx0bmFtZTogJ0hvbWUnLFxyXG4gIFx0XHRcdFx0d2lkZ2V0czogW11cclxuICAgICAgfSA7XHJcbiAgICAgICAgXHJcbiAgICBcclxuICBcclxuICAgICAgLy8kc2NvcGUudGFza0lkPSRzdGF0ZVBhcmFtcy5pZDtcclxuICAgICAgJHNjb3BlLnRhc2tJZD0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlJlc291cmNlRGVmSWQ7XHJcbiAgICAgIGlmICgkc2NvcGUudGFza0lkPT11bmRlZmluZWQpICAkc2NvcGUudGFza0lkPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VEZWZJZF9pZDtcclxuICAgICAgaWYgKCRzY29wZS50YXNrSWQ9PXVuZGVmaW5lZCkgJHNjb3BlLnRhc2tJZD0wO1xyXG4gICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnRhc2tJZD0kc2NvcGUudGFza0lkO1xyXG4gICAgICAkc2NvcGUuZmQuUGFyZW50RGF0YXNldERlZklkPSRzY29wZS5mZC5SZWxhdGVkO1xyXG4gICAgICAkc2NvcGUucHJldlRhc2tFeGVJZCA9ICAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnByZXZfdGFza19pZDtcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5mb3JtVHlwZT0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fdHlwZTtcclxuICAgICAgJHNjb3BlLnNvdXJjZV90eXBlPSRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uc291cmNlX3R5cGU7XHJcbiAgICAgICRzY29wZS50YXNrSW5pdGlhdGVJZCA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24udGFza19pbml0aWF0ZV9pZDtcclxuICAgICAgJHNjb3BlLnRhc2tFeGVjdXRlSWQgPSAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnRhc2tfZXhlY3V0ZV9pZDtcclxuICAgICAgJHNjb3BlLmZvcm1EZWZpbml0aW9uID0gJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb247XHJcbiAgICAgICAgXHJcbiAgICAgIGlmICAoJHNjb3BlLmZvcm1EZWZpbml0aW9uPT11bmRlZmluZWQpICRzY29wZS5mb3JtRGVmaW5pdGlvbj1mYWxzZTtcclxuICAgICAgICBcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkPTA7XHJcbiAgICAgIGlmICgkc2NvcGUudGFza0luaXRpYXRlSWQ9PXVuZGVmaW5lZClcclxuICAgICAge1xyXG4gICAgICAgICRzY29wZS50YXNrSW5pdGlhdGVJZCA9MDtcclxuICAgICAgXHJcbiAgICAgIH1cclxuICAgICAgaWYgKCRzY29wZS50YXNrRXhlY3V0ZUlkPT11bmRlZmluZWQpXHJcbiAgICAgIHtcclxuICAgICAgICAgJHNjb3BlLnRhc2tFeGVjdXRlSWQgPTA7ICBcclxuICAgICAgfVxyXG4gICAgICAgIGlmICgkc2NvcGUucHJldlRhc2tFeGVJZD09dW5kZWZpbmVkKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgJHNjb3BlLnByZXZUYXNrRXhlSWQgPTA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAvL3JlZ2lzdGVyIHdpZGdldCBcclxuICAgICAgdmFyIG91dF9maWVsZHMgPSBbJ3Jlc291cmNlSWQnXTtcclxuICAgICAgLy9pZiAoJHNjb3BlLmZkLkxvY2FsSWQ9PXVuZGVmaW5lZCB8fCAkc2NvcGUuZmQuTG9jYWxJZD09bnVsbCB8fCAkc2NvcGUuZmQuTG9jYWxJZD09MClcclxuICAgICAgLy97XHJcbiAgICAgICAgIHZhciB3aWRnZXREZWZpbml0aW9uID0ge0RFSTogW3snbmFtZSc6J3Jlc291cmNlTGluaycsJ3ZhbHVlJzpbe25hbWU6J3Jlc291cmNlSWQnLHZhbHVlOiRzY29wZS5mZC5SZWxhdGVkfSx7bmFtZToncmVzb3VyY2VSZWNvcmRJZCcsdmFsdWU6Jyd9XX1dLGFjdGlvbnM6IFt7bmFtZTonUHJlcGFyZURhdGEnLHN0YXR1czpmYWxzZX1dLG5hbWU6ICd2aWV3UmVzb3VyY2VXaWRnZXQnLHdpZGdldElkOiAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsdGFza19pbml0aWF0ZV9pZDokc2NvcGUudGFza0luaXRpYXRlSWQsdGFza19leGVjdXRlX2lkOiRzY29wZS50YXNrRXhlY3V0ZUlkLHRhc2tJZDogICRzY29wZS5sVGFza0lkLHJlc291cmNlRGVmSWQgOiAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2UsIG91dHB1dDpvdXRfZmllbGRzLCB9O1xyXG4gICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmxvY2FsV2lkZ2V0SWQgPSBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLnJlZ2lzdGVyV2lkZ2V0KHdpZGdldERlZmluaXRpb24pO1xyXG4gICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LkxvY2FsSWQ9JHNjb3BlLmxvY2FsVmFyc1dpZGdldC5sb2NhbFdpZGdldElkO1xyXG4gICAgICAgICAkc2NvcGUuZmQuTG9jYWxJZD0kc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmxvY2FsV2lkZ2V0SWQ7XHJcbiAgICAgICAgIC8vJHNjb3BlLmZkLkxvY2FsSWQ9VXRpbGl0eVNlcnZpY2UudXVpZE5vdygpO1xyXG4gICAgICAgICBcclxuICAgICAgLy99XHJcbiAgICAgICRzY29wZS5rc20gPSBLYXRhbHlvU3RhdGVNYW5hZ2VyO1xyXG4gICAgICBcclxuICAgICAgIGxldCBkZXBlbmRlbnRfZmllbGRfcGlkID0gJHNjb3BlLmZkLkxvY2FsSWQ7XHJcbiAgICAgICAgbGV0IHN1YnNjcmliZWRTdWJqZWN0UGlkID0gXCJmb3JtRGVmaW5pdGlvblN0YXRlXCIrJHNjb3BlLnRhc2tJZCskc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fdHlwZTtcclxuICAgICAgICBsZXQgZGVwZW5kZW50X2ZpZWxkX3BpZDJcclxuICAgICAgICBsZXQgdXBkYXRlX3ByZXNlbnRhdGlvbl9pZDIgPSBmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgIGxldCBwcmVzZW50YXRpb25faWQgPSBhbmd1bGFyLmNvcHkoJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkKVxyXG4gICAgICAgICAgICBpZiAoZGF0YVtwcmVzZW50YXRpb25faWRdIT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQgPSBkYXRhW3ByZXNlbnRhdGlvbl9pZF07XHJcbiAgICAgICAgICAgIC8vdW5zdWJzY3JpYmUgaGVyZSBsYXRlciBhZnRlciBpbXBsZW1lbnRpbmcgdW5zdWJzY3JpYmUgLSBUb0RvXHJcbiAgICAgICAgICAgIGRlcGVuZGVudF9maWVsZF9waWQyID0gJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXHJcbiAgICAgICAgICAgIGxldCBvYnNlcnZlclBpZDIgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdFBpZCxkZXBlbmRlbnRfZmllbGRfcGlkMixcImZvcm1TYXZlZFwiLHVwZGF0ZV9wcmVzZW50YXRpb25faWQyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdXBkYXRlX3ByZXNlbnRhdGlvbl9pZCA9IGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgaWYgKGRhdGFbJHNjb3BlLmZkLkxvY2FsSWRdPjAgJiYgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT0wICYmIGRhdGFbJHNjb3BlLmZkLkxvY2FsSWRdIT09dW5kZWZpbmVkKSAkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQgPSBkYXRhWyRzY29wZS5mZC5Mb2NhbElkXTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICBsZXQgb2JzZXJ2ZXJQaWQyID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3RQaWQsZGVwZW5kZW50X2ZpZWxkX3BpZDIsXCJmb3JtU2F2ZWRcIix1cGRhdGVfcHJlc2VudGF0aW9uX2lkMik7XHJcbiAgICAgICAgICAgIC8vdW5zdWJzY3JpYmUgaGVyZSBsYXRlciBhZnRlciBpbXBsZW1lbnRpbmcgdW5zdWJzY3JpYmUgLSBUb0RvXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICgkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PT1udWxsIHx8ICRzY29wZS5mZC5QcmVzZW50YXRpb25JZD09PTApXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBsZXQgb2JzZXJ2ZXJQaWQgPSAkc2NvcGUua3NtLnN1YnNjcmliZShzdWJzY3JpYmVkU3ViamVjdFBpZCxkZXBlbmRlbnRfZmllbGRfcGlkLFwiZm9ybVNhdmVkXCIsdXBkYXRlX3ByZXNlbnRhdGlvbl9pZCk7XHJcbiAgICAgICAgfSBlbHNle1xyXG4gICAgICAgICAgICBkZXBlbmRlbnRfZmllbGRfcGlkMiA9ICRzY29wZS5mZC5QcmVzZW50YXRpb25JZFxyXG4gICAgICAgICAgICBsZXQgb2JzZXJ2ZXJQaWQyID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3RQaWQsZGVwZW5kZW50X2ZpZWxkX3BpZDIsXCJmb3JtU2F2ZWRcIix1cGRhdGVfcHJlc2VudGF0aW9uX2lkMik7XHJcbiAgICAgICAgfVxyXG4gICAgICBcclxuICAgICAgIGxldCBhcHBseV92YWx1ZSA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBsZXQgZG9fcmVmcmVzaD1mYWxzZTtcclxuICAgICAgICAgICAgaWYgKGRhdGEhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICBpZiAoZGF0YSAhPSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQpXHJcbiAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSdudW1iZXInKSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQ9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEubGVuZ3RoPjApXHJcbiAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZD0gZGF0YVswXS5pZCAgXHJcbiAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfWVsc2VcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQgPSBkYXRhLmlkO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGRvX3JlZnJlc2ggPSB0cnVlO1xyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy9nZXQgc2VsZWN0ZWRSZWNvcmRcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZCA9PSBudWxsKSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQ9MDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQ+MCAmJiBkb19yZWZyZXNoKSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmdldEZvcm1SZXNvdXJjZVdpdGhEYXRhKCk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICBcclxuICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzPT11bmRlZmluZWQpICRzY29wZS5mZC5QYXJhbWV0ZXJzPXt9O1xyXG4gICAgICBcclxuICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLlJlZnJlc2hPbklkQ2hhbmdlKVxyXG4gICAgICB7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAvL2ZpbmQgXHJcbiAgICAgICAgIC8vc3Vic2NyaWJlIG9ic2VydmVyXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgIGxldCBkZXBlbmRlbnRfZmllbGQgPSBcIkZpZWxkXCIrJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkO1xyXG4gICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSBcInJlc291cmNlaWRWYWx1ZVN0YXRlTmFtZVwiKyRzY29wZS5mZC5QYXJhbWV0ZXJzLlJlc291cmNlSWRJdGVtSWQrJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50cmFuc2FjdGlvbl9pZDtcclxuICAgICAgICAgbGV0IHN1YmplY3QgPSAkc2NvcGUua3NtLmFkZFN1YmplY3Qoc3Vic2NyaWJlZFN1YmplY3QsbnVsbCk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgbGV0IG9ic2VydmVyID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUoc3Vic2NyaWJlZFN1YmplY3QsZGVwZW5kZW50X2ZpZWxkLFwidmFsdWVDaGFuZ2VkXCIsYXBwbHlfdmFsdWUpO1xyXG4gICAgICAgICBsZXQgdmFsID0gJHNjb3BlLmtzbS5nZXRTdGF0ZShzdWJzY3JpYmVkU3ViamVjdCk7XHJcbiAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZD0gdmFsLmlkO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy9nZXQgc2VsZWN0ZWRSZWNvcmRcclxuICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZCA9PSBudWxsKSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQ9MDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQ+MCkgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5nZXRGb3JtUmVzb3VyY2VXaXRoRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAvL3N1YnNjcmliZSBvYnNlcnZlclxyXG4gICAgICBpZiAoJHNjb3BlLmZkLlBvcHVsYXRlVHlwZS50b1N0cmluZygpLnN1YnN0cigwLDEpPT1cIjRcIilcclxuICAgICAge1xyXG4gICAgICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICAgICoqKioqKioqKioqKioqKioqKiBTeW5jIGRhdGEgd2l0aCBTdGF0ZSBtYW5hZ2VyICoqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbiAgICAgICAgXHJcbiAgICAgICBcclxuICAgICAgICBpZiAoJHNjb3BlLmZkLlNyY1dpZGdldElkIT11bmRlZmluZWQgJiYgJHNjb3BlLmZkLlNyY1dpZGdldElkIT1udWxsKVxyXG4gICAgICAgIFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGxldCBkZXBlbmRlbnRfZmllbGQgPSBcIkZpZWxkXCIrJHNjb3BlLmZkLlNyY1dpZGdldElkO1xyXG4gICAgICAgICAgICAgICAvLyBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSAkc2NvcGUuZmQuUGFyYW1ldGVycy5TcmNXaWRnZXRUeXBlK1wiVmFsdWVTdGF0ZU5hbWVcIiskc2NvcGUuZmQuU3JjV2lkZ2V0SWQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QgPSBcInJsaXN0VmFsdWVTdGF0ZU5hbWVcIiskc2NvcGUuZmQuU3JjV2lkZ2V0SWQrJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50cmFuc2FjdGlvbl9pZDtcclxuICAgICAgICAgICAgICAgIGxldCBvYnNlcnZlciA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0LGRlcGVuZGVudF9maWVsZCxcInZhbHVlQ2hhbmdlZFwiLGFwcGx5X3ZhbHVlKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfSAgXHJcbiAgICAgICAgIFxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBsZXQgcmVmcmVzaF93aWRnZXRfZGF0YSA9IGZ1bmN0aW9uKClcclxuICAgICAgXHJcbiAgICAgIHtcclxuICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5nZXRGb3JtUmVzb3VyY2VXaXRoRGF0YSgpOyAgICBcclxuICAgICAgICAgXHJcbiAgICAgIH1cclxuICAgICAgaWYgKCRzY29wZS5mZC5QYXJhbWV0ZXJzLkV2ZW50TmFtZSE9dW5kZWZpbmVkKVxyXG4gICAgICB7XHJcbiAgICAgICAgIGlmICgkc2NvcGUuZmQuUGFyYW1ldGVycy5FdmVudE5hbWUhPVwiXCIpXHJcbiAgICAgICAgIHtcclxuICAgICAgICAgICAgbGV0IGRlcGVuZGVudF9maWVsZDIgPSBcIkZpZWxkXCIrJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkO1xyXG4gICAgICAgICAgICBsZXQgc3Vic2NyaWJlZFN1YmplY3QyID0gXCJ0YXNrXCIrJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi50cmFuc2FjdGlvbl9pZDtcclxuICAgICAgICAgICAgbGV0IG9ic2VydmVyMiA9ICRzY29wZS5rc20uc3Vic2NyaWJlKHN1YnNjcmliZWRTdWJqZWN0MixkZXBlbmRlbnRfZmllbGQyLCRzY29wZS5mZC5QYXJhbWV0ZXJzLkV2ZW50TmFtZSxyZWZyZXNoX3dpZGdldF9kYXRhKTtcclxuICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNob3dQcm9wZXJ0aWVzPWZ1bmN0aW9uKGRhdGFzZXRNYXBwZXJUeXBlKVxyXG4gICAgICB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZGF0YXNldE1hcHBlclR5cGUgPSBkYXRhc2V0TWFwcGVyVHlwZTtcclxuICAgICAgICAgICAgfWVsc2VcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmRhdGFzZXRNYXBwZXJUeXBlIT1kYXRhc2V0TWFwcGVyVHlwZSkgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5kYXRhc2V0TWFwcGVyVHlwZSA9IGRhdGFzZXRNYXBwZXJUeXBlO1xyXG4gICAgICAgICAgICAgICBlbHNlICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZGF0YXNldE1hcHBlclR5cGU9MDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgfTtcclxuICAgICAgICAgICBcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZXRGaWVsZCA9IGZ1bmN0aW9uKGZvcm0sbmFtZSx2YWx1ZSxtc2cpXHJcbiAgICAgIHtcclxuICAgICAgICAgVGFza0RhdGFTZXJ2aWNlLnNldEZpZWxkKGZvcm0sbmFtZSx2YWx1ZSk7XHJcbiAgICAgICAgIGlmIChtc2cpIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShtc2csJ2luZm8nKTtcclxuICAgICAgfTsgIFxyXG4gICAgICBcclxuICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5nZXRSZXNvdXJjZUFsbCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkFsbCgkc2NvcGUuZmQuUmVsYXRlZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnJlc291cmNlID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgICAvLyRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZ2V0UmVzb3VyY2VBbGwoKTtcclxuICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZ2V0Rm9ybVJlc291cmNlT3JpZ2luYWwgPSBmdW5jdGlvbihkYXRhc2V0SWQpe1xyXG4gICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ9PW51bGwpXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkID0gMDtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmZvcm1Mb2FkZWQ9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VGb3JtKGRhdGFzZXRJZCxcImlcIixsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VXaWRnZXREZWZpbml0aW9uPSBkYXRhLmRhdGEucmVzb3VyY2VEZWZpbml0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEuZGF0YS53aWRnZXRzKSkgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQgPSAgZGF0YS5kYXRhLndpZGdldHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0hPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZT0kc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbi5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5yZWxhdGVkSWQ9JHNjb3BlLmZkLlJlbGF0ZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLnByZXNlbnRhdGlvbklkPSRzY29wZS5mZC5QcmVzZW50YXRpb25JZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0uc3JjX3R5cGVfaWQ9JHNjb3BlLmZkLlBvcHVsYXRlVHlwZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0uc3JjX3R5cGVfdGV4dD0kc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNyY190eXBlX3RleHRbJHNjb3BlLmZkLlBvcHVsYXRlVHlwZV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLnBhcmVudEVsZW1lbnRJZD0kc2NvcGUuZmQuUGFyZW50RWxlbWVudElkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW09eyduYW1lJzokc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbi5uYW1lLCdyZWxhdGVkSWQnOiRzY29wZS5mZC5SZWxhdGVkLCAncHJlc2VudGF0aW9uSWQnOiRzY29wZS5mZC5QcmVzZW50YXRpb25JZCAgLCdzcmNfdHlwZV9pZCc6JHNjb3BlLmZkLlBvcHVsYXRlVHlwZSwnc3JjX3R5cGVfdGV4dCc6JHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zcmNfdHlwZV90ZXh0WyRzY29wZS5mZC5Qb3B1bGF0ZVR5cGVdLCdwYXJlbnRFbGVtZW50SWQnOiRzY29wZS5mZC5QYXJlbnRFbGVtZW50SWR9O1xyXG4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC53SXRlbVZhbHVlPWRhdGEuZGF0YS53aWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250YWluZXIgPSAkZWxlbWVudC5jaGlsZHJlbigpLmVxKDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyaWRzdGVyU2VydmljZS5zZXR1cERyYWd1bGFyKCRzY29wZS5mZC53SXRlbVZhbHVlLGNvbnRhaW5lciwncm93cy0nKyRzY29wZS5mZC5QcmVzZW50YXRpb25JZCwncm93LScrJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5ncmlkc3RlclR5cGUrJy1oYWRsZScsdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8gICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL01JR09SIC0gYml0bm8gLSBET0JJTyBSRVNPVVJDRVJFQ09SRC1JRCBaQSBCUk9BRENBU1QgIC0gQUREX1JFU09VUkNFIFdJREdFVFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2Uuc2V0RGF0YSh7d2lkZ2V0SWQ6JHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLCBERUk6IFt7J25hbWUnOidyZXNvdXJjZUxpbmsnLCd2YWx1ZSc6W3tuYW1lOidyZXNvdXJjZUlkJyx2YWx1ZTokc2NvcGUuZmQuUmVsYXRlZH0se25hbWU6J3Jlc291cmNlUmVjb3JkSWQnLHZhbHVlOiRzY29wZS5mZC5SZXNvdXJjZVJlY29yZElkfV19XX0pO1xyXG5cdFx0XHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VhcmNoRm9ybURvd25sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kdGltZW91dChmdW5jdGlvbigpeyRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZm9ybUxvYWRlZD10cnVlfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2V0RmllbGQoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQsJ1JlYWRPbmx5Jyx0cnVlKTsgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZXRGaWVsZCgkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmRhc2hib2FyZC53aWRnZXRzLmxheW91dCwnUmVxdWlyZWQnLGZhbHNlKTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICB9O1xyXG4gICAgICBcclxuICAgICAgJHNjb3BlLmZkLm9wZW5TdGFrZVNjcmVlbj1mdW5jdGlvbih0b2tlbil7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAkc2NvcGUuZmQuU2hvd1RhYj0yO1xyXG4gICAgICAgICBpZiAodG9rZW49PSdCTkYnKSAkc2NvcGUuZmQuU2hvd1RhYj0zO1xyXG4gICAgICAgICAkc2NvcGUuZmQuY3VycmVudFRva2VuVGlja2VyPXRva2VuO1xyXG4gICAgICAgICAkc2NvcGUuZmQuY29uZmlybWF0aW9uMSA9IG51bGw7XHJcbiAgICAgICAgICRzY29wZS5mZC50cmFuc2FjdGlvbkhhc2gxID0gbnVsbDtcclxuICAgICAgICAgJHNjb3BlLmZkLmVycm9yTWVzc2FnZTEgPSBudWxsO1xyXG4gICAgICAgICAkc2NvcGUuZmQuY29uZmlybWF0aW9uMiA9IG51bGw7XHJcbiAgICAgICAgICRzY29wZS5mZC50cmFuc2FjdGlvbkhhc2gyID0gbnVsbDtcclxuICAgICAgICAgJHNjb3BlLmZkLmVycm9yTWVzc2FnZTIgPSBudWxsO1xyXG4gICAgICAgICBcclxuICAgICAgICAgaWYgKCRzY29wZS5mZC5ldGhfYWRkcmVzcz09dW5kZWZpbmVkKVxyXG4gICAgICAgICB7XHJcbiAgICAgICAgICAgIHdlYjMuZXRoLmdldEFjY291bnRzKCkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZXRoX2FkZHJlc3MgPSByZXN1bHRbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZ2V0QWxsb3dhbmNlKCRzY29wZS5mZC5ldGhfYWRkcmVzcyx0b2tlbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5nZXRNeUxpbWl0cyh0b2tlbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICB9IGVsc2VcclxuICAgICAgICAge1xyXG4gICAgICAgICAgICRzY29wZS5mZC5nZXRBbGxvd2FuY2UoJHNjb3BlLmZkLmV0aF9hZGRyZXNzLHRva2VuKTtcclxuICAgICAgICAgJHNjb3BlLmZkLmdldE15TGltaXRzKHRva2VuKTsgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICBcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgJHNjb3BlLmZkLmdldEFsbG93YW5jZSA9IGZ1bmN0aW9uKHdhbGxldCx0b2tlbil7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgdmFyIHRva2VuQWRkcmVzcztcclxuICAgICAgICAgICAgICAgICAgIHZhciB0b2tlbkFCSTtcclxuICAgICAgICAgICAgICAgICAgIHZhciBjb250cmFjdEFkZHJlc3MgPSAkc2NvcGUuZmQuc3Rha2luZ0NvbnRyYWN0O1xyXG4gICAgICAgICAgICAgICAgICAgaWYgKHRva2VuPT1cIktUTFlPXCIpXHJcbiAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgIHRva2VuQWRkcmVzcz0gJHNjb3BlLmZkLnRva2VuMUNvbnRyYWN0O1xyXG4gICAgICAgICAgICAgICAgICAgICB0b2tlbkFCSSA9ICRzY29wZS5mZC50b2tlbjFDb250cmFjdEFiaTtcclxuICAgICAgICAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgIHRva2VuQWRkcmVzcz0gJHNjb3BlLmZkLnRva2VuMkNvbnRyYWN0O1xyXG4gICAgICAgICAgICAgICAgICAgICB0b2tlbkFCSSA9ICRzY29wZS5mZC50b2tlbjJDb250cmFjdEFiaTtcclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgbGV0IHdlYjM7ICAgICAgIFxyXG4gICAgICAgICAgICBpZiAod2luZG93LmV0aGVyZXVtKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICB3ZWIzPSBuZXcgV2ViMyh3aW5kb3cuZXRoZXJldW0pOyAgXHJcbiAgICAgICAgICAgIH1lbHNlIGlmICh3aW5kb3cud2ViMylcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICB3ZWIzPSBuZXcgV2ViMyh3aW5kb3cud2ViMyk7IFxyXG4gICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIHdlYjMgPSBudWxsO1xyXG4gICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoXCJFcnJvciBjb25uZWN0aW5nIHRvIHdlYjMgd2FsbGV0IVwiLCdlcnJvcicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBpZiAod2ViMyE9bnVsbClcclxuICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0b2tlbkluc3QgPSBuZXcgd2ViMy5ldGguQ29udHJhY3QodG9rZW5BQkksdG9rZW5BZGRyZXNzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbkluc3QubWV0aG9kcy5hbGxvd2FuY2Uod2FsbGV0LGNvbnRyYWN0QWRkcmVzcykuY2FsbCgpLnRoZW4oZnVuY3Rpb24gKGFsbG93YW5jZV9yYXcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYmFsID0gd2ViMy51dGlscy5mcm9tV2VpKGFsbG93YW5jZV9yYXcsICdldGhlcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7JHNjb3BlLmZkLmFsbG93YW5jZSA9IGJhbDt9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgfSAgICBcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgICAgJHNjb3BlLmZkLnNldEFsbG93YW5jZSA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuY29uZmlybWF0aW9uMSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5mZC50cmFuc2FjdGlvbkhhc2gxID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmVycm9yTWVzc2FnZTEgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgbGV0IHdlYjM7XHJcbiAgICAgICAgICAgICAgICAgICB2YXIgdG9rZW5BZGRyZXNzLHRva2VuQUJJO1xyXG4gICAgICAgICAgICAgICAgICAgdmFyIHNwZW5kZXIgPSAkc2NvcGUuZmQuc3Rha2luZ0NvbnRyYWN0O1xyXG4gICAgICAgICAgICAgICAgICAgdmFyIG93bmVyID0gJHNjb3BlLmZkLmV0aF9hZGRyZXNzO1xyXG4gICAgICAgICAgICAgICAgICAgdmFyIHRva2VuID0gJHNjb3BlLmZkLmN1cnJlbnRUb2tlblRpY2tlcjtcclxuICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbj09XCJLVExZT1wiKVxyXG4gICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICB0b2tlbkFkZHJlc3M9ICRzY29wZS5mZC50b2tlbjFDb250cmFjdDtcclxuICAgICAgICAgICAgICAgICAgICAgdG9rZW5BQkkgPSAkc2NvcGUuZmQudG9rZW4xQ29udHJhY3RBYmk7XHJcbiAgICAgICAgICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICB0b2tlbkFkZHJlc3M9ICRzY29wZS5mZC50b2tlbjJDb250cmFjdDtcclxuICAgICAgICAgICAgICAgICAgICAgdG9rZW5BQkkgPSAkc2NvcGUuZmQudG9rZW4yQ29udHJhY3RBYmk7XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuZXRoZXJldW0pXHJcbiAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHdlYjM9IG5ldyBXZWIzKHdpbmRvdy5ldGhlcmV1bSk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYgKHdpbmRvdy53ZWIzKVxyXG4gICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdlYjM9IG5ldyBXZWIzKHdpbmRvdy53ZWIzKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2ViMyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShcIkVycm9yIGNvbm5lY3RpbmcgdG8gd2FsbGV0IVwiLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2ViMyE9bnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0b2tlbkluc3QgPSBuZXcgd2ViMy5ldGguQ29udHJhY3QodG9rZW5BQkksdG9rZW5BZGRyZXNzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbkluc3Qub3B0aW9ucy5mcm9tID0gb3duZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFtb3VudF93ZWkgPSB3ZWIzLnV0aWxzLnRvV2VpKCRzY29wZS5mZC5BcHByb3ZlQW1vdW50LnRvU3RyaW5nKCksICdldGhlcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuSW5zdC5tZXRob2RzLmFwcHJvdmUoc3BlbmRlcixhbW91bnRfd2VpKS5zZW5kKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub24oJ3RyYW5zYWN0aW9uSGFzaCcsIGZ1bmN0aW9uKGhhc2gpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXskc2NvcGUuZmQudHJhbnNhY3Rpb25IYXNoMT1oYXNoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnBlbmRpbmcxPXRydWU7fSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub24oJ2NvbmZpcm1hdGlvbicsIGZ1bmN0aW9uKGNvbmZpcm1hdGlvbk51bWJlciwgcmVjZWlwdCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maXJtYXRpb25OdW1iZXI+MClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyRzY29wZS5mZC5jb25maXJtYXRpb24xPWNvbmZpcm1hdGlvbk51bWJlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5wZW5kaW5nMT1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5nZXRBbGxvd2FuY2UoJHNjb3BlLmZkLmV0aF9hZGRyZXNzLCRzY29wZS5mZC5jdXJyZW50VG9rZW5UaWNrZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vbigncmVjZWlwdCcsIGZ1bmN0aW9uKHJlY2VpcHQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7JHNjb3BlLmZkLnRyeFJlY2VpcHQxPXJlY2VpcHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnN0YXR1czE9cmVjZWlwdC5zdGF0dXM7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhyZWNlaXB0KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vbignZXJyb3InLCBmdW5jdGlvbihlcnJvciwgcmVjZWlwdCkgeyAvLyBJZiB0aGUgdHJhbnNhY3Rpb24gd2FzIHJlamVjdGVkIGJ5IHRoZSBuZXR3b3JrIHdpdGggYSByZWNlaXB0LCB0aGUgc2Vjb25kIHBhcmFtZXRlciB3aWxsIGJlIHRoZSByZWNlaXB0LlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXskc2NvcGUuZmQuZXJyb3JNZXNzYWdlMT1lcnJvci5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVjZWlwdCE9dW5kZWZpbmVkKSAgJHNjb3BlLmZkLnN0YXR1czE9cmVjZWlwdC5zdGF0dXM7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB9IGVsc2UgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiRXJyb3IgY29ubmVjdGluZyB0byB3YWxsZXQhXCIsJ2Vycm9yJyk7ICAgICBcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgICRzY29wZS5mZC5zdGFrZSA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgdmFyIHRva2VuQWRkcmVzcyx0b2tlbkFCSTtcclxuICAgICAgICAgICAgICAgICAgIHZhciBjb250cmFjdEFkZHJlc3MgPSAkc2NvcGUuZmQuc3Rha2luZ0NvbnRyYWN0O1xyXG4gICAgICAgICAgICAgICAgICAgdmFyIGNvbnRyYWN0QUJJID0gJHNjb3BlLmZkLnN0YWtpbmdDb250cmFjdEFiaTtcclxuICAgICAgICAgICAgICAgICAgIHZhciBvd25lciA9ICRzY29wZS5mZC5ldGhfYWRkcmVzcztcclxuICAgICAgICAgICAgICAgICAgIHZhciB0b2tlbiA9ICRzY29wZS5mZC5jdXJyZW50VG9rZW5UaWNrZXI7XHJcbiAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuY29uZmlybWF0aW9uMiA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5mZC50cmFuc2FjdGlvbkhhc2gyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmVycm9yTWVzc2FnZTIgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgd2ViMztcclxuICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbj09XCJLVExZT1wiKVxyXG4gICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICB0b2tlbkFkZHJlc3M9ICRzY29wZS5mZC50b2tlbjFDb250cmFjdDtcclxuICAgICAgICAgICAgICAgICAgICAgdG9rZW5BQkkgPSAkc2NvcGUuZmQudG9rZW4xQ29udHJhY3RBYmk7XHJcbiAgICAgICAgICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICB0b2tlbkFkZHJlc3M9ICRzY29wZS5mZC50b2tlbjJDb250cmFjdDtcclxuICAgICAgICAgICAgICAgICAgICAgdG9rZW5BQkkgPSAkc2NvcGUuZmQudG9rZW4yQ29udHJhY3RBYmk7XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5ldGhlcmV1bSlcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgd2ViMz0gbmV3IFdlYjMod2luZG93LmV0aGVyZXVtKTsgIFxyXG4gICAgICAgICAgICAgICAgICB9ZWxzZSBpZiAod2luZG93LndlYjMpXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgd2ViMz0gbmV3IFdlYjMod2luZG93LndlYjMpOyBcclxuICAgICAgICAgICAgICAgICAgfWVsc2VcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICB3ZWIzID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiRXJyb3IgY29ubmVjdGluZyB0byB3ZWIzIHdhbGxldCFcIiwnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgaWYgKHdlYjMhPW51bGwpXHJcbiAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udHJhY3RJbnN0ID0gbmV3IHdlYjMuZXRoLkNvbnRyYWN0KGNvbnRyYWN0QUJJLGNvbnRyYWN0QWRkcmVzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJhY3RJbnN0Lm9wdGlvbnMuZnJvbSA9IG93bmVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhbW91bnRfd2VpID0gd2ViMy51dGlscy50b1dlaSgkc2NvcGUuZmQuU3Rha2VBbW91bnQudG9TdHJpbmcoKSwgJ2V0aGVyJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJhY3RJbnN0Lm1ldGhvZHMuc3Rha2UodG9rZW5BZGRyZXNzLGFtb3VudF93ZWkpLnNlbmQoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vbigndHJhbnNhY3Rpb25IYXNoJywgZnVuY3Rpb24oaGFzaCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyRzY29wZS5mZC50cmFuc2FjdGlvbkhhc2gyPWhhc2g7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQucGVuZGluZzI9dHJ1ZTt9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vbignY29uZmlybWF0aW9uJywgZnVuY3Rpb24oY29uZmlybWF0aW9uTnVtYmVyLCByZWNlaXB0KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpcm1hdGlvbk51bWJlcj4wKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyRzY29wZS5mZC5jb25maXJtYXRpb24yPWNvbmZpcm1hdGlvbk51bWJlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQucGVuZGluZzI9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm9uKCdyZWNlaXB0JywgZnVuY3Rpb24ocmVjZWlwdCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7JHNjb3BlLmZkLnRyeFJlY2VpcHQyPXJlY2VpcHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5zdGF0dXMyPXJlY2VpcHQuc3RhdHVzOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmdldEFsbG93YW5jZSgkc2NvcGUuZmQuZXRoX2FkZHJlc3MsdG9rZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhyZWNlaXB0KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vbignZXJyb3InLCBmdW5jdGlvbihlcnJvciwgcmVjZWlwdCkgeyAvLyBJZiB0aGUgdHJhbnNhY3Rpb24gd2FzIHJlamVjdGVkIGJ5IHRoZSBuZXR3b3JrIHdpdGggYSByZWNlaXB0LCB0aGUgc2Vjb25kIHBhcmFtZXRlciB3aWxsIGJlIHRoZSByZWNlaXB0LlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyRzY29wZS5mZC5lcnJvck1lc3NhZ2UyPWVycm9yLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQucGVuZGluZzI9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVjZWlwdCE9dW5kZWZpbmVkKSAkc2NvcGUuZmQuc3RhdHVzMj1yZWNlaXB0LnN0YXR1cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cmFjdEluc3QubWV0aG9kcy5zdGFrZSh0b2tlbkFkZHJlc3MsYW1vdW50X3dlaSkuc2VuZCgpLnRoZW4oZnVuY3Rpb24gKHRyeCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UodHJ4LCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tZXNzYWdlLCdlcnJvcicpOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2UgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiRXJyb3IgY29ubmVjdGluZyB0byB3YWxsZXQhXCIsJ2Vycm9yJyk7ICAgICBcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgJHNjb3BlLmZkLlJlZGVlbSA9IGZ1bmN0aW9uKGVhcmx5LGluZGV4KXtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHZhciB3ZWIzO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5tc2dzW2luZGV4XT09dW5kZWZpbmVkKSAkc2NvcGUuZmQubXNnc1tpbmRleF0gPSB7Y29uZmlybWF0aW9uIDogbnVsbCx0cmFuc2FjdGlvbkhhc2ggOiBudWxsLGVycm9yTWVzc2FnZSA6IG51bGwscGVuZGluZzpudWxsLHRyeFJlY2VpcHQ6bnVsbCxzdGF0dXMgOiBudWxsfTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICRzY29wZS5mZC5tc2dzW2luZGV4XS5jb25maXJtYXRpb249bnVsbDtcclxuICAgICAgICAgICAgICAgJHNjb3BlLmZkLm1zZ3NbaW5kZXhdLnRyYW5zYWN0aW9uSGFzaCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICRzY29wZS5mZC5tc2dzW2luZGV4XS5lcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAkc2NvcGUuZmQubXNnc1tpbmRleF0udHJ4UmVjZWlwdCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICRzY29wZS5mZC5tc2dzW2luZGV4XS5wZW5kaW5nID0gbnVsbDtcclxuICAgICAgICAgICAgICAgJHNjb3BlLmZkLm1zZ3NbaW5kZXhdLnN0YXR1cyA9IG51bGw7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAkc2NvcGUuZmQuY3VycmVjdEluZGV4PWluZGV4OyAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKHdpbmRvdy5ldGhlcmV1bSlcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgd2ViMz0gbmV3IFdlYjMod2luZG93LmV0aGVyZXVtKTsgIFxyXG4gICAgICAgICAgICB9ZWxzZSBpZiAod2luZG93LndlYjMpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgd2ViMz0gbmV3IFdlYjMod2luZG93LndlYjMpOyBcclxuICAgICAgICAgICAgfWVsc2VcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICB3ZWIzID0gbnVsbDtcclxuICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiRXJyb3IgY29ubmVjdGluZyB0byB3ZWIzIHdhbGxldCFcIiwnZXJyb3InKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgaWYgKHdlYjMhPW51bGwpXHJcbiAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRyYWN0QWRkcmVzcyA9ICRzY29wZS5mZC5zdGFraW5nQ29udHJhY3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250cmFjdEFCSSA9ICRzY29wZS5mZC5zdGFraW5nQ29udHJhY3RBYmk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udHJhY3RJbnN0ID0gbmV3IHdlYjMuZXRoLkNvbnRyYWN0KGNvbnRyYWN0QUJJLGNvbnRyYWN0QWRkcmVzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2ViMy5ldGguZ2V0QWNjb3VudHMoKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5ldGhfYWRkcmVzcyA9IHJlc3VsdFswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyYWN0SW5zdC5vcHRpb25zLmZyb20gPSAkc2NvcGUuZmQuZXRoX2FkZHJlc3M7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVhcmx5KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyYWN0SW5zdC5tZXRob2RzLnJlZGVlbUVhcmx5KGluZGV4KS5zZW5kKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vbigndHJhbnNhY3Rpb25IYXNoJywgZnVuY3Rpb24oaGFzaCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyRzY29wZS5mZC5tc2dzW2luZGV4XS50cmFuc2FjdGlvbkhhc2g9aGFzaDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLm1zZ3NbaW5kZXhdLnBlbmRpbmc9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub24oJ2NvbmZpcm1hdGlvbicsIGZ1bmN0aW9uKGNvbmZpcm1hdGlvbk51bWJlciwgcmVjZWlwdCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maXJtYXRpb25OdW1iZXI+MClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyRzY29wZS5mZC5tc2dzW2luZGV4XS5jb25maXJtYXRpb249Y29uZmlybWF0aW9uTnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubXNnc1tpbmRleF0ucGVuZGluZz1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vbigncmVjZWlwdCcsIGZ1bmN0aW9uKHJlY2VpcHQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubXNnc1tpbmRleF0udHJ4UmVjZWlwdD1yZWNlaXB0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubXNnc1tpbmRleF0uc3RhdHVzPXJlY2VpcHQuc3RhdHVzOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZ2V0TXlTdGFraW5ncygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vbignZXJyb3InLCBmdW5jdGlvbihlcnJvciwgcmVjZWlwdCkgeyAvLyBJZiB0aGUgdHJhbnNhY3Rpb24gd2FzIHJlamVjdGVkIGJ5IHRoZSBuZXR3b3JrIHdpdGggYSByZWNlaXB0LCB0aGUgc2Vjb25kIHBhcmFtZXRlciB3aWxsIGJlIHRoZSByZWNlaXB0LlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXskc2NvcGUuZmQubXNnc1tpbmRleF0uZXJyb3JNZXNzYWdlPWVycm9yLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNlaXB0IT11bmRlZmluZWQpICRzY29wZS5mZC5tc2dzW2luZGV4XS5zdGF0dXM9cmVjZWlwdC5zdGF0dXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubXNnc1tpbmRleF0ucGVuZGluZz1mYWxzZTt9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJhY3RJbnN0Lm1ldGhvZHMucmVkZWVtKGluZGV4KS5zZW5kKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm9uKCd0cmFuc2FjdGlvbkhhc2gnLCBmdW5jdGlvbihoYXNoKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7JHNjb3BlLmZkLm1zZ3NbaW5kZXhdLnRyYW5zYWN0aW9uSGFzaD1oYXNoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubXNnc1tpbmRleF0ucGVuZGluZz10cnVlO30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm9uKCdjb25maXJtYXRpb24nLCBmdW5jdGlvbihjb25maXJtYXRpb25OdW1iZXIsIHJlY2VpcHQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlybWF0aW9uTnVtYmVyPjApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLm1zZ3NbaW5kZXhdLmNvbmZpcm1hdGlvbj1jb25maXJtYXRpb25OdW1iZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5tc2dzW2luZGV4XS5wZW5kaW5nPWZhbHNlO30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vbigncmVjZWlwdCcsIGZ1bmN0aW9uKHJlY2VpcHQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubXNnc1tpbmRleF0udHJ4UmVjZWlwdD1yZWNlaXB0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5tc2dzW2luZGV4XS5zdGF0dXM9cmVjZWlwdC5zdGF0dXM7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmdldE15U3Rha2luZ3MoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub24oJ2Vycm9yJywgZnVuY3Rpb24oZXJyb3IsIHJlY2VpcHQpIHsgLy8gSWYgdGhlIHRyYW5zYWN0aW9uIHdhcyByZWplY3RlZCBieSB0aGUgbmV0d29yayB3aXRoIGEgcmVjZWlwdCwgdGhlIHNlY29uZCBwYXJhbWV0ZXIgd2lsbCBiZSB0aGUgcmVjZWlwdC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5tc2dzW2luZGV4XS5lcnJvck1lc3NhZ2U9ZXJyb3IubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNlaXB0IT11bmRlZmluZWQpICAkc2NvcGUuZmQubXNnc1tpbmRleF0uc3RhdHVzPXJlY2VpcHQuc3RhdHVzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLm1zZ3NbaW5kZXhdLnBlbmRpbmc9ZmFsc2U7fSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgIFxyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICB9O1xyXG4gICAgICBcclxuICAgICAgJHNjb3BlLmZkLmdldEJhbGFuY2UgPSBmdW5jdGlvbih0b2tlbil7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBsZXQgd2ViMztcclxuICAgICAgICAgICAgICAgICAgIHZhciB0b2tlbkFkZHJlc3MsdG9rZW5BQkk7XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbj09XCJLVExZT1wiKVxyXG4gICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICB0b2tlbkFkZHJlc3M9ICRzY29wZS5mZC50b2tlbjFDb250cmFjdDtcclxuICAgICAgICAgICAgICAgICAgICAgdG9rZW5BQkkgPSAkc2NvcGUuZmQudG9rZW4xQ29udHJhY3RBYmk7XHJcbiAgICAgICAgICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICB0b2tlbkFkZHJlc3M9ICRzY29wZS5mZC50b2tlbjJDb250cmFjdDtcclxuICAgICAgICAgICAgICAgICAgICAgdG9rZW5BQkkgPSAkc2NvcGUuZmQudG9rZW4yQ29udHJhY3RBYmk7XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICBpZiAod2luZG93LmV0aGVyZXVtKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICB3ZWIzPSBuZXcgV2ViMyh3aW5kb3cuZXRoZXJldW0pOyAgXHJcbiAgICAgICAgICAgIH1lbHNlIGlmICh3aW5kb3cud2ViMylcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICB3ZWIzPSBuZXcgV2ViMyh3aW5kb3cud2ViMyk7IFxyXG4gICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIHdlYjMgPSBudWxsO1xyXG4gICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoXCJFcnJvciBjb25uZWN0aW5nIHRvIHdlYjMgd2FsbGV0IVwiLCdlcnJvcicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBpZiAod2ViMyE9bnVsbClcclxuICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0b2tlbkluc3QgPSBuZXcgd2ViMy5ldGguQ29udHJhY3QodG9rZW5BQkksdG9rZW5BZGRyZXNzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5JbnN0Lm1ldGhvZHMuYmFsYW5jZU9mKCRzY29wZS5mZC5ldGhfYWRkcmVzcykuY2FsbCgpLnRoZW4oZnVuY3Rpb24gKGJhbF9yYXcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYmFsID0gd2ViMy51dGlscy5mcm9tV2VpKGJhbF9yYXcsICdldGhlcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYWw8PTEwMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUua3RseW9fYmFsYW5jZV9vayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmt0bHlvX2JhbGFuY2VfbXNnID0gXCJJbnN1ZmZpY2llbnQgYmFsYW5jZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlICRzY29wZS5rdGx5b19iYWxhbmNlX29rID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyRzY29wZS5iYWxhbmNlX2t0bHlvID0gYmFsKyBcIiBLVExZT1wiO30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAgXHJcbiAgICAgICAgICAkc2NvcGUuZmQuZm9ybWF0TnVtYmVyID0gZnVuY3Rpb24oaW5wdXRfc3RyaW5nKXtcclxuICAgICAgICAgICAgbGV0IG51bWJlcjtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgaWYgKHdpbmRvdy5ldGhlcmV1bSlcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgd2ViMz0gbmV3IFdlYjMod2luZG93LmV0aGVyZXVtKTsgIFxyXG4gICAgICAgICAgICB9ZWxzZSBpZiAod2luZG93LndlYjMpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgd2ViMz0gbmV3IFdlYjMod2luZG93LndlYjMpOyBcclxuICAgICAgICAgICAgfWVsc2VcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICB3ZWIzID0gbnVsbDtcclxuICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiRXJyb3IgY29ubmVjdGluZyB0byB3ZWIzIHdhbGxldCFcIiwnZXJyb3InKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgaWYgKHdlYjMhPW51bGwpXHJcbiAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIG51bWJlciA9IE51bWJlcih3ZWIzLnV0aWxzLmZyb21XZWkoaW5wdXRfc3RyaW5nLCAnZXRoZXInKSkudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7IG1heGltdW1GcmFjdGlvbkRpZ2l0czogMTggfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLypcclxuICAgICAgICAgICBsZXQgZGVjaW1hbHMgPSAoXCIwMDAwMDAwMDAwMDAwMDAwMDBcIiArIGlucHV0X3N0cmluZy5zdWJzdHIoaW5wdXRfc3RyaW5nLmxlbmd0aCAtIDE4KSkuc2xpY2UoLTE4KTtcclxuICAgICAgICAgICBpZiAoaW5wdXRfc3RyaW5nLmxlbmd0aDwxOSkgbnVtYmVyPSBcIjAuXCIrZGVjaW1hbHM7XHJcbiAgICAgICAgICAgZWxzZSBudW1iZXIgPSBpbnB1dF9zdHJpbmcuc3Vic3RyaW5nKDAsaW5wdXRfc3RyaW5nLmxlbmd0aCAtIDE4KStcIi5cIitkZWNpbWFscztcclxuICAgICAgICAgICAqL1xyXG4gICAgICAgICAgIHJldHVybiBudW1iZXI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgJHNjb3BlLmZkLmdldEFtb3VudCA9IGZ1bmN0aW9uKHRva2VuLGZvclRva2VuLGFtb3VudCxhbW91bnRSZXdhcmQpe1xyXG4gICAgICAgICAgICBsZXQgbnVtYmVyLG51bWJlclJld2FyZDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCB0b2tlblRpY2tlciA9ICRzY29wZS5mZC5nZXRUb2tlblRpY2tlcih0b2tlbik7XHJcbiAgICAgICAgICAgIGlmICh3aW5kb3cuZXRoZXJldW0pXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgIHdlYjM9IG5ldyBXZWIzKHdpbmRvdy5ldGhlcmV1bSk7ICBcclxuICAgICAgICAgICAgfWVsc2UgaWYgKHdpbmRvdy53ZWIzKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIHdlYjM9IG5ldyBXZWIzKHdpbmRvdy53ZWIzKTsgXHJcbiAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgd2ViMyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShcIkVycm9yIGNvbm5lY3RpbmcgdG8gd2FsbGV0IVwiLCdlcnJvcicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBpZiAod2ViMyE9bnVsbClcclxuICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgbnVtYmVyID0gTnVtYmVyKHdlYjMudXRpbHMuZnJvbVdlaShhbW91bnQsICdldGhlcicpKTtcclxuICAgICAgICAgICAgICAgbnVtYmVyUmV3YXJkID0gTnVtYmVyKHdlYjMudXRpbHMuZnJvbVdlaShhbW91bnRSZXdhcmQsICdldGhlcicpKTtcclxuICAgICAgICAgICAgICAgaWYgKHRva2VuVGlja2VyPT1mb3JUb2tlbikgbnVtYmVyID0gbnVtYmVyK251bWJlclJld2FyZDtcclxuICAgICAgICAgICAgICAgZWxzZSBudW1iZXIgPSBudW1iZXJSZXdhcmQ7XHJcbiAgICAgICAgICAgICAgIG51bWJlciA9IG51bWJlci50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHsgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiA0IH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICBcclxuICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAkc2NvcGUuZmQuaXNSZWxlYXNlZCA9IGZ1bmN0aW9uKHN0YWtlKXtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgaWYgKHN0YWtlLnN0YWtlRW5kPj0kc2NvcGUuZmQuY3VycmVudERhdGUpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICBlbHNlIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAkc2NvcGUuZmQuZm9ybWF0RGF0ZSA9IGZ1bmN0aW9uKGlucHV0X3RpbWVzdGFtcCl7XHJcbiAgICAgICAgICAgIGxldCBkYXRlX3ZhcjtcclxuICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSB7IHdlZWtkYXk6ICdzaG9ydCcsIHllYXI6ICdudW1lcmljJywgbW9udGg6ICdzaG9ydCcsIGRheTogJ251bWVyaWMnLGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOicyLWRpZ2l0JyxzZWNvbmQ6JzItZGlnaXQnLGhvdXIxMjpmYWxzZSB9O1xyXG4gICAgICAgICAgICBkYXRlX3ZhciA9IG5ldyBEYXRlKGlucHV0X3RpbWVzdGFtcCoxMDAwKS50b0xvY2FsZURhdGVTdHJpbmcodW5kZWZpbmVkLG9wdGlvbnMpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgcmV0dXJuIGRhdGVfdmFyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5mZC5nZXRUb2tlblRpY2tlciA9IGZ1bmN0aW9uKHRva2VuQWRkcmVzcyl7XHJcbiAgICAgICAgXHJcbiAgICAgICAgIGxldCB0b2tlblRpY2tlcjtcclxuICAgICAgICAgaWYgKHRva2VuQWRkcmVzcy50b0xvd2VyQ2FzZSgpPT0gJHNjb3BlLmZkLnRva2VuMUNvbnRyYWN0LnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICAgIHtcclxuICAgICAgICAgICAgdG9rZW5UaWNrZXI9XCJLVExZT1wiO1xyXG4gICAgICAgICB9ZWxzZVxyXG4gICAgICAgICB7XHJcbiAgICAgICAgICAgIHRva2VuVGlja2VyPVwiQk5GXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICB9XHJcbiAgICAgICAgIHJldHVybiB0b2tlblRpY2tlcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZkLnNldE1heCA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICBpZiAoJHNjb3BlLmZkLnJlbWFpblN0YWtlTGltaXQgPiAkc2NvcGUuZmQuYWxsb3dhbmNlKSAkc2NvcGUuZmQuU3Rha2VBbW91bnQgPSAkc2NvcGUuZmQuYWxsb3dhbmNlO1xyXG4gICAgICAgICBlbHNlICRzY29wZS5mZC5TdGFrZUFtb3VudCA9ICRzY29wZS5mZC5yZW1haW5TdGFrZUxpbWl0O1xyXG4gICAgICAgICBcclxuICAgICAgICAgXHJcbiAgICAgICAgfTtcclxuICAgICAgICAkc2NvcGUuZmQuc2V0TWF4QWxsb3dhbmNlID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgXHJcbiAgICAgICAgICRzY29wZS5mZC5BcHByb3ZlQW1vdW50ID0gJHNjb3BlLmZkLnJlbWFpblN0YWtlTGltaXQ7XHJcbiAgICAgICAgIFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgJHNjb3BlLmZkLmdldE15TGltaXRzID0gZnVuY3Rpb24odG9rZW4pe1xyXG4gICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICBpZiAod2luZG93LmV0aGVyZXVtKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICB3ZWIzPSBuZXcgV2ViMyh3aW5kb3cuZXRoZXJldW0pOyAgXHJcbiAgICAgICAgICAgIH1lbHNlIGlmICh3aW5kb3cud2ViMylcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICB3ZWIzPSBuZXcgV2ViMyh3aW5kb3cud2ViMyk7IFxyXG4gICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIHdlYjMgPSBudWxsO1xyXG4gICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoXCJFcnJvciBjb25uZWN0aW5nIHRvIHdhbGxldCFcIiwnZXJyb3InKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgaWYgKHdlYjMhPW51bGwpXHJcbiAgICAgICAgICAgICAgIHsgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB3ZWIzLmV0aC5nZXRBY2NvdW50cygpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmV0aF9hZGRyZXNzID0gcmVzdWx0WzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLmV0aF9hZGRyZXNzIT1udWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2dldCBhZGRyZXNzIGFuZCBhYmlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRyYWN0QWRkcmVzcyA9ICRzY29wZS5mZC5zdGFraW5nQ29udHJhY3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250cmFjdEFCSSA9ICRzY29wZS5mZC5zdGFraW5nQ29udHJhY3RBYmk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRyYWN0SW5zdCA9IG5ldyB3ZWIzLmV0aC5Db250cmFjdChjb250cmFjdEFCSSxjb250cmFjdEFkZHJlc3MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyYWN0SW5zdC5vcHRpb25zLmZyb20gPSAkc2NvcGUuZmQuZXRoX2FkZHJlc3M7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJhY3RJbnN0Lm1ldGhvZHMuZ2V0TXlMaW1pdHMoKS5jYWxsKCkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuPT1cIktUTFlPXCIpICRzY29wZS5mZC5zcGVudFN0YWtlTGltaXQ9d2ViMy51dGlscy5mcm9tV2VpKGRhdGEubGltaXQxLCdldGhlcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlICRzY29wZS5mZC5zcGVudFN0YWtlTGltaXQ9d2ViMy51dGlscy5mcm9tV2VpKGRhdGEubGltaXQyLCdldGhlcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cmFjdEluc3QubWV0aG9kcy5nZXRTdGFrZVJld2FyZEFtb3VudHMoKS5jYWxsKCkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuPT1cIktUTFlPXCIpICRzY29wZS5mZC5tYXhTdGFrZUxpbWl0PXdlYjMudXRpbHMuZnJvbVdlaShkYXRhWzRdLCdldGhlcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlICRzY29wZS5mZC5tYXhTdGFrZUxpbWl0PXdlYjMudXRpbHMuZnJvbVdlaShkYXRhWzVdLCdldGhlcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQubWF4U3Rha2VMaW1pdFByaW50ID0gTnVtYmVyKCRzY29wZS5mZC5tYXhTdGFrZUxpbWl0KS50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHsgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAxOCB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLnJlbWFpblN0YWtlTGltaXQgPSAkc2NvcGUuZmQubWF4U3Rha2VMaW1pdCAtICRzY29wZS5mZC5zcGVudFN0YWtlTGltaXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5yZW1haW5TdGFrZUxpbWl0UHJpbnQgPSBOdW1iZXIoJHNjb3BlLmZkLnJlbWFpblN0YWtlTGltaXQpLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwgeyBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDE4IH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1lc3NhZ2UsJ2Vycm9yJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tZXNzYWdlLCdlcnJvcicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyYWN0SW5zdC5tZXRob2RzLmdldFN0YWtlUmV3YXJkQW1vdW50cygpLmNhbGwoKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW49PVwiS1RMWU9cIikgJHNjb3BlLmZkLm1heFN0YWtlTGltaXQ9ZGF0YS5tYXhTdGFrZUFtdDE7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAkc2NvcGUuZmQubWF4U3Rha2VMaW1pdD1kYXRhLm1heFN0YWtlQW10MjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1lc3NhZ2UsJ2Vycm9yJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiRXJyb3IgY29ubmVjdGluZyB0byB3YWxsZXQhXCIsJ2Vycm9yJykgO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmQuZXJyb3JfbXNnID0gZXJyb3IubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgICBcclxuICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICRzY29wZS5mZC5nZXRNeVN0YWtpbmdzID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICAkc2NvcGUuZmQuYWZ0ZXJRdWVyeT1mYWxzZTtcclxuICAgICAgICAgICAgICAvLyRzY29wZS5mZC5teVN0YWtlcz1bXTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICh3aW5kb3cuZXRoZXJldW0pXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgIHdlYjM9IG5ldyBXZWIzKHdpbmRvdy5ldGhlcmV1bSk7ICBcclxuICAgICAgICAgICAgfWVsc2UgaWYgKHdpbmRvdy53ZWIzKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIHdlYjM9IG5ldyBXZWIzKHdpbmRvdy53ZWIzKTsgXHJcbiAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgd2ViMyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShcIkVycm9yIGNvbm5lY3RpbmcgdG8gd2FsbGV0IVwiLCdlcnJvcicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBpZiAod2ViMyE9bnVsbClcclxuICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB3ZWIzLmV0aC5nZXRBY2NvdW50cygpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5ldGhfYWRkcmVzcyA9IHJlc3VsdFswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5ldGhfYWRkcmVzcyE9bnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9nZXQgYWRkcmVzcyBhbmQgYWJpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250cmFjdEFkZHJlc3MgPSAkc2NvcGUuZmQuc3Rha2luZ0NvbnRyYWN0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udHJhY3RBQkkgPSAkc2NvcGUuZmQuc3Rha2luZ0NvbnRyYWN0QWJpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250cmFjdEluc3QgPSBuZXcgd2ViMy5ldGguQ29udHJhY3QoY29udHJhY3RBQkksY29udHJhY3RBZGRyZXNzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cmFjdEluc3Qub3B0aW9ucy5mcm9tID0gJHNjb3BlLmZkLmV0aF9hZGRyZXNzO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyYWN0SW5zdC5tZXRob2RzLmdldE15U3Rha2luZ3MoKS5jYWxsKCkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLmN1cnJlbnREYXRlID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7ICRzY29wZS5mZC5teVN0YWtlcyA9IGRhdGE7JHNjb3BlLmZkLmFmdGVyUXVlcnk9dHJ1ZTt9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1lc3NhZ2UsJ2Vycm9yJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiRXJyb3IgY29ubmVjdGluZyB0byB3YWxsZXQhXCIsJ2Vycm9yJykgO1xyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5lcnJvcl9tc2cgPSBlcnJvci5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8kc2NvcGUuZmQuZ2V0TXlTdGFraW5ncygpO1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZ2V0Rm9ybVJlc291cmNlID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5mb3JtTG9hZGVkPWZhbHNlO1xyXG4gICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT1udWxsKVxyXG4gICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPTA7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZm9ybUxvYWRpbmc9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRm9ybUV4dGVuZGVkKCRzY29wZS5mZC5SZWxhdGVkLCRzY29wZS50YXNrSWQsJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5mb3JtVHlwZSwkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsXCJ3XCIsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VXaWRnZXREZWZpbml0aW9uPSBkYXRhLmRhdGEucmVzb3VyY2VEZWZpbml0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YS5kYXRhLndpZGdldHMpKSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmRhc2hib2FyZC53aWRnZXRzLmxheW91dCA9ICBkYXRhLmRhdGEud2lkZ2V0cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lPSRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VXaWRnZXREZWZpbml0aW9uLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLnJlbGF0ZWRJZD0kc2NvcGUuZmQuUmVsYXRlZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ucHJlc2VudGF0aW9uSWQ9JHNjb3BlLmZkLlByZXNlbnRhdGlvbklkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5zcmNfdHlwZV9pZD0kc2NvcGUuZmQuUG9wdWxhdGVUeXBlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5zcmNfdHlwZV90ZXh0PSRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc3JjX3R5cGVfdGV4dFskc2NvcGUuZmQuUG9wdWxhdGVUeXBlXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ucGFyZW50RWxlbWVudElkPSRzY29wZS5mZC5QYXJlbnRFbGVtZW50SWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbT17J25hbWUnOiRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VXaWRnZXREZWZpbml0aW9uLm5hbWUsJ3JlbGF0ZWRJZCc6JHNjb3BlLmZkLlJlbGF0ZWQsICdwcmVzZW50YXRpb25JZCc6JHNjb3BlLmZkLlByZXNlbnRhdGlvbklkICAsJ3NyY190eXBlX2lkJzokc2NvcGUuZmQuUG9wdWxhdGVUeXBlLCdzcmNfdHlwZV90ZXh0Jzokc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNyY190eXBlX3RleHRbJHNjb3BlLmZkLlBvcHVsYXRlVHlwZV0sJ3BhcmVudEVsZW1lbnRJZCc6JHNjb3BlLmZkLlBhcmVudEVsZW1lbnRJZH07XHJcbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC53SXRlbVZhbHVlPWRhdGEuZGF0YS53aWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlYXJjaEZvcm1Eb3dubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmZvcm1Mb2FkaW5nPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2V0RmllbGQoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQsJ1JlYWRPbmx5Jyx0cnVlKTsgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZXRGaWVsZCgkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmRhc2hib2FyZC53aWRnZXRzLmxheW91dCwnUmVxdWlyZWQnLGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmZvcm1Mb2FkaW5nPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZ2V0Rm9ybVJlc291cmNlV2l0aERhdGEgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZm9ybUxvYWRlZD1mYWxzZTtcclxuICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkPT1udWxsIHx8ICRzY29wZS5mZC5QcmVzZW50YXRpb25JZD09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5QcmVzZW50YXRpb25JZCA9IDA7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5QYXJlbnRFbGVtZW50SWQ9PW51bGwgfHwgJHNjb3BlLmZkLlBhcmVudEVsZW1lbnRJZD09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mZC5QYXJlbnRFbGVtZW50SWQgPSAwO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkPT11bmRlZmluZWQgfHwgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkPT0wKVxyXG4gICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQucHJldmlvdXNUYXNrRGF0YVsnZGF0YXNldFJlY29yZElkJ10hPXVuZGVmaW5lZCAmJiAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnByZXZpb3VzVGFza0RhdGFbJ2RhdGFzZXRSZWNvcmRJZCddIT1cIlwiICYmICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucHJldmlvdXNUYXNrRGF0YVsnZGF0YXNldElkJ109PSRzY29wZS5mZC5SZWxhdGVkKSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQgPSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnByZXZpb3VzVGFza0RhdGFbJ2RhdGFzZXRSZWNvcmRJZCddO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQgIT09J251bWJlcicgJiYgdHlwZW9mICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZCAhPT0nc3RyaW5nJylcclxuICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkKSlcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkLmxlbmd0aD4wKVxyXG4gICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZD0gJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkWzBdLmlkICBcclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZCA9ICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZC5pZDsgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRm9ybUV4dGVuZGVkV2l0aERhdGEoJHNjb3BlLmZkLlJlbGF0ZWQsJHNjb3BlLnRhc2tJbml0aWF0ZUlkLCRzY29wZS50YXNrRXhlY3V0ZUlkLCRzY29wZS5mZC5Qb3B1bGF0ZVR5cGUsJHNjb3BlLmZkLlBhcmVudEVsZW1lbnRJZCwkc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQsJHNjb3BlLnByZXZUYXNrRXhlSWQsJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5mb3JtVHlwZSwkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LndpZGdldFR5cGUsJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVJlY29yZElkLFwid1wiLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWRdID0gIGRhdGEuZGF0YS5mb3JtX2RhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5QcmVzZW50YXRpb25JZF09PXVuZGVmaW5lZCkgJHNjb3BlLmZvcm1EYXRhWyRzY29wZS5mZC5QcmVzZW50YXRpb25JZF09W107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbj0gZGF0YS5kYXRhLnJlc291cmNlRGVmaW5pdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEuZGF0YS53aWRnZXRzKSkgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQgPSAgZGF0YS5kYXRhLndpZGdldHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mb3JtRGF0YVskc2NvcGUuZmQuUHJlc2VudGF0aW9uSWRdLmxlbmd0aD4wKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlUmVjb3JkSWQgPSAkc2NvcGUuZm9ybURhdGFbJHNjb3BlLmZkLlByZXNlbnRhdGlvbklkXVswXVsnaWQnXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZGF0YXNldFJlY29yZElkPSRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWU9JHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVdpZGdldERlZmluaXRpb24ubmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ucmVsYXRlZElkPSRzY29wZS5mZC5SZWxhdGVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5wcmVzZW50YXRpb25JZD0kc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLnNyY190eXBlX2lkPSRzY29wZS5mZC5Qb3B1bGF0ZVR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLnNyY190eXBlX3RleHQ9JHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zcmNfdHlwZV90ZXh0WyRzY29wZS5mZC5Qb3B1bGF0ZVR5cGVdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5wYXJlbnRFbGVtZW50SWQ9JHNjb3BlLmZkLlBhcmVudEVsZW1lbnRJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtPXsnbmFtZSc6JHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZVdpZGdldERlZmluaXRpb24ubmFtZSwncmVsYXRlZElkJzokc2NvcGUuZmQuUmVsYXRlZCwgJ3ByZXNlbnRhdGlvbklkJzokc2NvcGUuZmQuUHJlc2VudGF0aW9uSWQgICwnc3JjX3R5cGVfaWQnOiRzY29wZS5mZC5Qb3B1bGF0ZVR5cGUsJ3NyY190eXBlX3RleHQnOiRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc3JjX3R5cGVfdGV4dFskc2NvcGUuZmQuUG9wdWxhdGVUeXBlXSwncGFyZW50RWxlbWVudElkJzokc2NvcGUuZmQuUGFyZW50RWxlbWVudElkfTtcclxuIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUuZmQud0l0ZW1WYWx1ZT1kYXRhLmRhdGEud2lkZ2V0cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJHRpbWVvdXQoZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5pbml0aWF0ZUZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZm9ybUxvYWRpbmc9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlYXJjaEZvcm1Eb3dubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICB9KTsgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTUlHT1IgLSBiaXRubyAtIERPQklPIFJFU09VUkNFUkVDT1JELUlEIFpBIEJST0FEQ0FTVCAgLSBWSUVXX1JFU09VUkNFIFdJREdFVFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2Uuc2V0RGF0YSh7d2lkZ2V0SWQ6JHNjb3BlLmZkLlByZXNlbnRhdGlvbklkLCBERUk6IFt7J25hbWUnOidyZXNvdXJjZUxpbmsnLCd2YWx1ZSc6W3tuYW1lOidyZXNvdXJjZUlkJyx2YWx1ZTokc2NvcGUuZmQuUmVsYXRlZH0se25hbWU6J3Jlc291cmNlUmVjb3JkSWQnLHZhbHVlOiRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VSZWNvcmRJZH1dfV19KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2V0RmllbGQoJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQsJ1JlYWRPbmx5Jyx0cnVlKTsgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZXRGaWVsZCgkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmRhc2hib2FyZC53aWRnZXRzLmxheW91dCwnUmVxdWlyZWQnLGZhbHNlKTsgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgfTtcclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2V0U2VsZWN0ZWREYXRhc2V0ID0gZnVuY3Rpb24oaWQpICB7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW09PXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbT17fTtcclxuICAgICAgICAgICAgICB2YXIgcG9zID0gJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5yZXNvdXJjZUxpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoaWQpO1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGlmIChwb3M+PTApe1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5pZCA9ICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VMaXN0W3Bvc10uaWQ7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWUgPSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlTGlzdFtwb3NdLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkRGF0YXNldCA9ICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VMaXN0W3Bvc107XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkID0gJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lICsnICgnKyRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0uaWQgKycpJ1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbV9jPSRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW07XHJcbiAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0XHR9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAvLyBQT1BVTkkgTElTVFUgREVGSU5JQ0lKQSBPRCBSRVNVUlNBIChSRVNPVVJDRVMgTElTVClcclxuXHQkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmdldFJlc291cmNlcyA9IGZ1bmN0aW9uKCkgIHtcclxuXHRcdFx0XHRcdFx0XHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlTGlzdD09dW5kZWZpbmVkKSAkc2NvcGUubG9jYWxWYXJzV2lkZ2V0LnJlc291cmNlTGlzdD1bXTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZMaXN0QnlUeXBlKGxhbmcsJ3NtYXJ0Y29udHJhY3QnKS50aGVuKFxyXG5cdFx0XHRcdFx0XHRmdW5jdGlvbihkYXRhKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQucmVzb3VyY2VMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuUmVsYXRlZCE9bnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2V0U2VsZWN0ZWREYXRhc2V0KCRzY29wZS5mZC5SZWxhdGVkKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ICAgICBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCB9KTtcclxuXHRcdFx0XHRcdH1cclxuICAgXHJcbiAgICAgICAgIFxyXG4gIGlmICgkc2NvcGUuZmQuUmVsYXRlZCE9bnVsbCAmJiAgISRzY29wZS5mb3JtRGVmaW5pdGlvbiAmJiAhJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5zZWFyY2hGb3JtRG93bmxvYWRlZClcclxuICB7XHJcbiAgICBcclxuICAgIC8vICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZ2V0Rm9ybVJlc291cmNlV2l0aERhdGEoKTtcclxuICAgIC8vICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZ2V0RGF0YXNldHMoKTtcclxuICAgIC8vICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2V0U2VsZWN0ZWREYXRhc2V0KCRzY29wZS5mZC5SZWxhdGVkKTtcclxuICAgIFxyXG4gIH1lbHNlIGlmICgkc2NvcGUuZmQuUmVsYXRlZCE9bnVsbClcclxuICB7XHJcbiAgICAgLy8kc2NvcGUubG9jYWxWYXJzV2lkZ2V0LmdldEZvcm1SZXNvdXJjZSgpO1xyXG4gICAgIC8vJHNjb3BlLmxvY2FsVmFyc1dpZGdldC5nZXRSZXNvdXJjZXMoKTtcclxuICAgICAvLyRzY29wZS5sb2NhbFZhcnNXaWRnZXQuc2V0U2VsZWN0ZWREYXRhc2V0KCRzY29wZS5mZC5SZWxhdGVkKTtcclxuICAgIFxyXG4gIH0gXHJcblxyXG4gICAgXHJcblxyXG5cclxuICAgICAgIFxyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgIFxyXG4gICAgICAgICAgICBsZXQgdGVtcGxhdGVcclxuICAgICAgICAgICAgdGVtcGxhdGUgPSAkdGVtcGxhdGVDYWNoZS5nZXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0V3JpdGVTbWFydENvbnRyYWN0Lmh0bWwnKTtcclxuICAgICAgICAgICAgJGVsZW1lbnQuYXBwZW5kKCRjb21waWxlKHRlbXBsYXRlKSgkc2NvcGUpKTsgXHJcblxyXG4gIFxyXG4gICAgICB9XTtcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgY29udHJvbGxlcjogY29udHJvbGxlcixcclxuICAgICAgICAgICAgbGluazogZnVuY3Rpb24gKHNjb3BlLCBlbGVtLCBhdHRycykge1xyXG5cclxuICAgICAgICAgICAgfSAgICAgXHJcbiAgfVxyXG4gIFxyXG59OyIsImV4cG9ydCBkZWZhdWx0IGFuZ3VsYXIubW9kdWxlKCdLYXRhbHlvJykucnVuKFsnJHRlbXBsYXRlQ2FjaGUnLCBmdW5jdGlvbigkdGVtcGxhdGVDYWNoZSkgeyR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMvYXBwbXNnLmh0bWwnLCc8ZGl2IG5nLWNsYXNzPVwie1xcJ3NoYWRvdyBhcHAtbXNnLWFuaW1hdGVcXCc6bWVzc2FnZUxpc3QubGVuZ3RoPjB9XCIgbmctaWY9XCJjb3VudFZpc2libGUoKT4wICYmICFjbG9zZUFsbENsaWNrZWRWYXJcIiBjbGFzcz1jYXJkIHN0eWxlPVwiYm9yZGVyOm5vbmU7bWFyZ2luOjNweDttaW4td2lkdGg6IDQwdnc7XCI+PGRpdiBpZGQ9TVVMVElQTEUtTUVTU0FHRVMgbmctaWY9XCJmYWxzZSAmJiBtZXNzYWdlTGlzdC5sZW5ndGg+MVwiIGNsYXNzPVwiY2FyZC1oZWFkZXIgcC0xXCI+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sIHB4LTBcIj48aSBjbGFzcz1cImJhZGdlIGJhZGdlLXByaW1hcnkgbWItMlwiPnt7Y291bnRWaXNpYmxlKCl9fTwvaT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIG15LWF1dG9cIj48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhbmdlciBidG4tc20gYm9yZGVyLTAgZmxvYXQtcmlnaHQgcHgtMCBweS0wXCIgbmctY2xpY2s9Y2xvc2VBbGxDbGlja2VkKCkgYXJpYS1sYWJlbD1jbG9zZT48aSBjbGFzcz1cImZhIGZhLXRpbWVzIG14LTFcIj48L2k+PHNwYW4gY2xhc3M+PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbCBweC0wXCIgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzMDBweDttaW4td2lkdGg6IDI1cmVtO292ZXJmbG93OiBhdXRvO1wiPjxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgYWxlcnQtbWVzc2FnZXMtaW5zaWRlIG0tMCBwLTBcIiBuZy1yZXBlYXQ9XCJtc2cgaW4gbWVzc2FnZUxpc3RcIiBuZy1pZj1tc2cuc2hvdz48ZGl2IGNsYXNzPWFsZXJ0LW1zZy1wYWRkIG5nLWNsYXNzPVwie1xcJ3N1Y2Nlc3NcXCc6XFwnYWxlcnQtc3VjY2Vzc1xcJyxcXCdpbmZvXFwnOlxcJ2FsZXJ0LWluZm9cXCcsXFwnd2FybmluZ1xcJzpcXCdhbGVydC13YXJuaW5nXFwnLFxcJ2Vycm9yXFwnOlxcJ2FsZXJ0LWRhbmdlclxcJ31bbXNnLnR5cGVdXCI+PHNwYW4gbmctaWY9XCJtc2cubWVzc2FnZS5tZXNzYWdlLmxlbmd0aDwxMDAwXCIgc3R5bGU9bWF4LWhlaWdodDoyMDBweCBuZy1iaW5kLWh0bWw9Y29udmVydFRvSHRtbChtc2cubWVzc2FnZS5tZXNzYWdlKT48L3NwYW4+PGlmcmFtZSBuZy1pZj1cIm1zZy5tZXNzYWdlLm1lc3NhZ2UubGVuZ3RoPjk5OVwiIHN0eWxlPVwiYm9yZGVyOm5vbmU7bWluLXdpZHRoOiAzNXJlbTt3aWR0aDoxMDAlO292ZXJmbG93OiBhdXRvO292ZXJmbG93LWNsaXAtbWFyZ2luOiB1bnNldDtcIiBzcmNkb2M9XCJ7eyBjb252ZXJ0VG9IdG1sKG1zZy5tZXNzYWdlLm1lc3NhZ2UpIH19XCI+PC9pZnJhbWU+PHNwYW4gbmctaWY9XCJtc2cudHlwZT09XFwnZXJyb3JcXCcgJiYgbXNnLnNyYz09XFwnZnJvbnRlbmRcXCcgJiYgbXNnLm1lc3NhZ2Uuc3RhY2tcIiBuZy1iaW5kLWh0bWw9XCJjb252ZXJ0VG9IdG1sKFxcJzxiPkRldGFpbHM6PC9iPiBcXCcrbXNnLm1lc3NhZ2Uuc3RhY2spXCI+PC9zcGFuPiA8c3BhbiBuZy1pZj1cIm1zZy50eXBlPT1cXCdlcnJvclxcJyAmJiBtc2cuc3JjIT1cXCdmcm9udGVuZFxcJyAmJiBtc2cubWVzc2FnZS5saW5lbm9cIiBuZy1iaW5kLWh0bWw9XCJjb252ZXJ0VG9IdG1sKFxcJyA8Yj5MaW5lIG51bWJlcjo8L2I+IFxcJyttc2cubWVzc2FnZS5saW5lbm8gK1xcJyA8Yj5UeXBlOjwvYj4gXFwnK21zZy5tZXNzYWdlLnR5cGUrXFwnIDxiPkZpbGU6PC9iPiBcXCcrbXNnLm1lc3NhZ2UuZmlsZW5hbWUpXCI+PC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgaWRkPU1VTFRJUExFLU1FU1NBR0VTLU5PVk8gbmctaWY9XCJtZXNzYWdlTGlzdC5sZW5ndGg+MVwiIGNsYXNzPWNhcmQtaGVhZGVyIHN0eWxlPVwicGFkZGluZzogMnB4OyBwYWRkaW5nLXRvcDogMDtcIj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wgcHgtMFwiIHN0eWxlPVwibWF4LWhlaWdodDogMTIwcHg7bWluLXdpZHRoOiAzNXZ3O292ZXJmbG93OiBhdXRvO1wiPjxkaXYgbmctcmVwZWF0PVwibXNnIGluIG1lc3NhZ2VMaXN0XCIgbmctaWY9bXNnLnNob3cgY2xhc3M9XCJtdC0xIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiByb3VuZGVkXCIgc3R5bGU9XCJhbGlnbi1pdGVtczogY2VudGVyO1wiIG5nLWNsYXNzPVwie1xcJ3N1Y2Nlc3NcXCc6XFwnYWxlcnQtc3VjY2Vzc1xcJyxcXCdpbmZvXFwnOlxcJ2FsZXJ0LWluZm9cXCcsXFwnd2FybmluZ1xcJzpcXCdhbGVydC13YXJuaW5nXFwnLFxcJ2Vycm9yXFwnOlxcJ2FsZXJ0LWRhbmdlclxcJ31bbXNnLnR5cGVdXCI+PGRpdiBpZGQ9ZW1wdHktbGVmdC1tYXJnaW4tZWxlbWVudCBzdHlsZT1cIm1heC1oZWlnaHQ6IDMwMHB4O1wiIGNsYXNzPVwiXCI+PGkgY2xhc3M9XCJtLTEgcHQtMVwiIG5nLWNsYXNzPVwie1xcJ3N1Y2Nlc3NcXCc6XFwnZmFzIGZhLWNoZWNrLWNpcmNsZVxcJyxcXCdpbmZvXFwnOlxcJ2ZhcyBmYS1pbmZvLWNpcmNsZVxcJyxcXCd3YXJuaW5nXFwnOlxcJ2ZhcyBmYS1leGNsYW1hdGlvbi10cmlhbmdsZVxcJyxcXCdlcnJvclxcJzpcXCdmYXMgZmEtdGltZXMtY2lyY2xlXFwnfVttc2cudHlwZV1cIiBzdHlsZT1cImZvbnQtc2l6ZTogeC1sYXJnZTtcIj48L2k+PHNwYW4gY2xhc3M+PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzMDBweDtcIiBjbGFzcz1cIlwiPjxzcGFuIG5nLWlmPVwibXNnLm1lc3NhZ2UubWVzc2FnZS5sZW5ndGg8MTAwMFwiIHN0eWxlPW1heC1oZWlnaHQ6MjAwcHg7IG5nLWJpbmQtaHRtbD1jb252ZXJ0VG9IdG1sKG1zZy5tZXNzYWdlLm1lc3NhZ2UpPjwvc3Bhbj48aWZyYW1lIG5nLWlmPVwibXNnLm1lc3NhZ2UubWVzc2FnZS5sZW5ndGg+OTk5XCIgc3R5bGU9XCJib3JkZXI6bm9uZTttaW4td2lkdGg6IDM1cmVtO3dpZHRoOjEwMCU7b3ZlcmZsb3c6IGF1dG87b3ZlcmZsb3ctY2xpcC1tYXJnaW46IHVuc2V0O1wiIHNyY2RvYz17e2NvbnZlcnRUb0h0bWwobXNnLm1lc3NhZ2UubWVzc2FnZSl9fT48L2lmcmFtZT48c3BhbiBuZy1pZj1cIm1zZy50eXBlPT1cXCdlcnJvclxcJyAmJiBtc2cuc3JjPT1cXCdmcm9udGVuZFxcJ1wiIG5nLWJpbmQtaHRtbD1cImNvbnZlcnRUb0h0bWwoXFwnPGI+RGV0YWlsczo8L2I+IFxcJyttc2cubWVzc2FnZS5zdGFjaylcIj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1teS1hdXRvIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA1cHg7IGJvcmRlci1yYWRpdXM6MnB4OyBwYWRkaW5nOiAwcHggM3B4OztcIj48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhbmdlciBidG4tc20gYm9yZGVyLTAgcC0wXCIgbmctY2xpY2s9Y2xvc2VBbGVydCgkaW5kZXgpIGFyaWEtbGFiZWw9Y2xvc2U+PGkgY2xhc3M9XCJmYSBmYS10aW1lcyBteC0xXCI+PC9pPjxzcGFuIGNsYXNzPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGlkZD1TSU5HTEUtTUVTU0FHRSBuZy1pZj1cIm1lc3NhZ2VMaXN0Lmxlbmd0aD09MVwiPjxkaXYgbmctcmVwZWF0PVwibXNnIGluIG1lc3NhZ2VMaXN0XCIgbmctaWY9bXNnLnNob3cgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gcm91bmRlZFwiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGNlbnRlcjtcIiBuZy1jbGFzcz1cIntcXCdzdWNjZXNzXFwnOlxcJ2FsZXJ0LXN1Y2Nlc3NcXCcsXFwnaW5mb1xcJzpcXCdhbGVydC1pbmZvXFwnLFxcJ3dhcm5pbmdcXCc6XFwnYWxlcnQtd2FybmluZ1xcJyxcXCdlcnJvclxcJzpcXCdhbGVydC1kYW5nZXJcXCd9W21zZy50eXBlXVwiPjxkaXYgaWRkPWVtcHR5LWxlZnQtbWFyZ2luLWVsZW1lbnQgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzMDBweDtcIiBjbGFzcz1cIlwiPjxpIGNsYXNzPVwibS0xIHB0LTFcIiBuZy1jbGFzcz1cIntcXCdzdWNjZXNzXFwnOlxcJ2ZhcyBmYS1jaGVjay1jaXJjbGVcXCcsXFwnaW5mb1xcJzpcXCdmYXMgZmEtaW5mby1jaXJjbGVcXCcsXFwnd2FybmluZ1xcJzpcXCdmYXMgZmEtZXhjbGFtYXRpb24tdHJpYW5nbGVcXCcsXFwnZXJyb3JcXCc6XFwnZmFzIGZhLXRpbWVzLWNpcmNsZVxcJ31bbXNnLnR5cGVdXCIgc3R5bGU9XCJmb250LXNpemU6IHgtbGFyZ2U7XCI+PC9pPjxzcGFuIGNsYXNzPjwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPVwibWF4LWhlaWdodDogMzUwcHg7IGZsZXgtZ3JvdzogMTt0ZXh0LWFsaWduOiBjZW50ZXI7XCIgY2xhc3M+PHNwYW4gbmctaWY9XCJtc2cubWVzc2FnZS5tZXNzYWdlLmxlbmd0aDwxMDAwXCIgc3R5bGU9bWF4LWhlaWdodDoyMDBweDsgbmctYmluZC1odG1sPWNvbnZlcnRUb0h0bWwobXNnLm1lc3NhZ2UubWVzc2FnZSk+PC9zcGFuPjxpZnJhbWUgbmctaWY9XCJtc2cubWVzc2FnZS5tZXNzYWdlLmxlbmd0aD45OTlcIiBzdHlsZT1cImJvcmRlcjpub25lO21pbi13aWR0aDogMzVyZW07d2lkdGg6MTAwJTtvdmVyZmxvdzogYXV0bztvdmVyZmxvdy1jbGlwLW1hcmdpbjogdW5zZXQ7XCIgc3JjZG9jPXt7Y29udmVydFRvSHRtbChtc2cubWVzc2FnZS5tZXNzYWdlKX19PjwvaWZyYW1lPjxzcGFuIG5nLWlmPVwibXNnLnR5cGU9PVxcJ2Vycm9yXFwnICYmIG1zZy5zcmM9PVxcJ2Zyb250ZW5kXFwnXCIgbmctYmluZC1odG1sPVwiY29udmVydFRvSHRtbChcXCc8Yj5EZXRhaWxzOjwvYj4gXFwnK21zZy5tZXNzYWdlLnN0YWNrKVwiPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPW15LWF1dG8gc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDVweDsgYm9yZGVyLXJhZGl1czoycHg7IHBhZGRpbmc6IDBweCAzcHg7O1wiPjxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFuZ2VyIGJ0bi1zbSBib3JkZXItMCBwLTBcIiBuZy1jbGljaz1jbG9zZUFsZXJ0KCRpbmRleCkgYXJpYS1sYWJlbD1jbG9zZT48aSBjbGFzcz1cImZhIGZhLXRpbWVzIG14LTFcIj48L2k+PHNwYW4gY2xhc3M+PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEFjdGlvbkJ1dHRvbnMuaHRtbCcsJzxkaXYgY2xhc3M9d2lkZ2V0LWhlYWQgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LWFjdGl2ZSBtLTIgc2hhZG93XFwnOmZkLmxvY2FsVmFycy5hY3Rpb25CdXR0b25Qcm9wc1tmZC5VdWlkUmVmXT4wfVwiPjxkaXYgbmctaWY9XCJnc3J2Yy5nZXRGb3JtVmlld1R5cGUoKT09MSB8fCBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MVwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wIHAtMCBtYi0xXCIgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LWhlYWQtYWN0aXZlXFwnOmZkLmxvY2FsVmFycy5hY3Rpb25CdXR0b25Qcm9wc1tmZC5VdWlkUmVmXT4wLFxcJ2JnLWxpZ2h0XFwnOmZkLmxvY2FsVmFycy5hY3Rpb25CdXR0b25Qcm9wc1tmZC5VdWlkUmVmXT09MH1cIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGkgY2xhc3M9XCJmYSBmYS1yb2NrZXQgbXgtMlwiPjwvaT48bGFiZWw+QWN0aW9uIGJ1dHRvbnMgKHt7ZmQuUHJlc2VudGF0aW9uSWR9fSk8L2xhYmVsPiA8YSBocmVmIHRpdGxlPXNvcnQgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LXByb3BcXCc6ZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wIHx8IGZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkfVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIHt7Z3JpZFR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIHdpZGdldC1wcm9wXCI+PGkgY2xhc3M9XCJ7e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZSBmYXMgZmEtZ3JpcC12ZXJ0aWNhbFwiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LXJpZ2h0IG15LWF1dG9cIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLmxvY2FsVmFycy50b2dnbGVCdXR0b25EZWZpbml0aW9uKDApIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4td2FybmluZ1wiIHN0eWxlPjxzcGFuIGNsYXNzIHN0eWxlPnt7ZmQuRm9ybURlZi5sZW5ndGh9fSBhY3Rpb24gYnV0dG9ue3tmZC5Gb3JtRGVmLmxlbmd0aCA+IDEgPyBcXCdzXFwnOlxcJ1xcJ319IGRlZmluZWQ8L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIG15LWF1dG8gcC0wXCI+PGEgaHJlZiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIGJ0bi1zbVwiIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1wcm9wXFwnOmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCBmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZH1cIiB0aXRsZT1cIlNob3cvaGlkZSBwcm9wZXJ0aWVzXCIgbmctY2xpY2s9ZmQubG9jYWxWYXJzLnRvZ2dsZUJ1dHRvbkRlZmluaXRpb24oMCk+PGkgY2xhc3M9XCJmYXMgZmEtY29nXCI+PC9pPjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGRpdiBrdC10YXNrLWRyb3Bkb3duPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmZC5sb2NhbFZhcnMuYWN0aW9uQnV0dG9uUHJvcHNbZmQuVXVpZFJlZl0+MCAmJiAoZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgfHwgZ3NydmMuZ2V0Rm9ybVZpZXdUeXBlKCk9PTEpXCIgY2xhc3M9cC0yPjxkaXYga3QtZm9ybS1lbGVtZW50LXByb3BlcnRpZXMgZmQ9ZmQgbG9jYWwtdmFycz1mZD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwiZmQubG9jYWxWYXJzLnNlbGVjdGVkVGFza0luZGV4Pi0xXCIgY2xhc3M9XCJjYXJkLWJvZHkgcC0xXCI+PGRpdiBjbGFzcz1kLWlubGluZS1ibG9jaz48Yj48bGFiZWw+e3tmZC5sb2NhbFZhcnMuc2VsZWN0ZWRUYXNrc1tmZC5sb2NhbFZhcnMuc2VsZWN0ZWRUYXNrSW5kZXhdLm5hbWV9fSAoe3tmZC5sb2NhbFZhcnMuc2VsZWN0ZWRUYXNrc1tmZC5sb2NhbFZhcnMuc2VsZWN0ZWRUYXNrSW5kZXhdLmlkfX0pPC9sYWJlbD48L2I+PC9kaXY+PGRpdiBjbGFzcz1cImQtaW5saW5lLWJsb2NrIG1sLTJcIj48aW5wdXQgdHlwZT10ZXh0IGNsYXNzPWZvcm0tY29udHJvbCBuZy1tb2RlbD1mZC5sb2NhbFZhcnMuc2VsZWN0ZWRUYXNrc1tmZC5sb2NhbFZhcnMuc2VsZWN0ZWRUYXNrSW5kZXhdLmJ0bkxhYmVsPjwvZGl2PjxkaXYgY2xhc3M9XCJkLWlubGluZS1ibG9jayBtbC0yXCI+PGRpdiBrdC1pY29uLXBpY2tlciBzZWxlY3QtY29sb3JzPXRydWUgc2VsZWN0LWljb25zPXRydWUgc2VsZWN0ZWQtaWNvbj1mZC5sb2NhbFZhcnMuc2VsZWN0ZWRUYXNrc1tmZC5sb2NhbFZhcnMuc2VsZWN0ZWRUYXNrSW5kZXhdLmljb24gc2VsZWN0ZWQtYnV0dG9uPWZkLmxvY2FsVmFycy5zZWxlY3RlZFRhc2tzW2ZkLmxvY2FsVmFycy5zZWxlY3RlZFRhc2tJbmRleF0uYnRuQ2xhc3M+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImQtaW5saW5lLWJsb2NrIG1sLTJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5SZW1vdmVUYXNrRnJvbUxpc3QoZmQubG9jYWxWYXJzLnNlbGVjdGVkVGFza0luZGV4KSBjbGFzcz1cImJ0biBidG4teHMgYnRuLW91dGxpbmUtZGFuZ2VyXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS10cmFzaCBtci0yXCI+PC9zcGFuPiBSZW1vdmUgdGFzazwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJkLWlubGluZS1ibG9jayBtbC0zXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cImZkLmxvY2FsVmFycy5zZWxlY3RlZFRhc2tJbmRleD0tMTtmZC5sb2NhbFZhcnMuYWN0aW9uQnV0dG9uUHJvcHNbZmQuVXVpZFJlZl09MFwiIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tb3V0bGluZS1wcmltYXJ5XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS10aW1lcyBtci0yXCI+PC9zcGFuPkNsb3NlIGRldGFpbHM8L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGlkPWFjdGlvbl9idXR0b25zIG5nLWlmPVwiZ3NydmMuZ2V0Rm9ybVZpZXdUeXBlKCk9PTJcIj48ZGl2PjxkaXYgY2xhc3M9Y29sIG5nLWlmPVwiZmQuRm9ybURlZi5sZW5ndGg+MFwiPjxkaXYgY2xhc3M9XCJteS0xIHRleHQte3tmZC5QYXJhbWV0ZXJzLlRleHRBbGlnbn19XCI+PGRpdiBuZy1yZXBlYXQ9XCJidXR0b24gaW4gZmQuRm9ybURlZiB0cmFjayBieSAkaW5kZXhcIiBuZy1jbGFzcz1cIntcXCdtci0yXFwnOmZkLkZvcm1EZWYubGVuZ3RoPCRpbmRleCsxfVwiIGNsYXNzPWQtaW5saW5lLWJsb2NrPjxkaXYgbmctc3dpdGNoPWJ1dHRvbi5hY3Rpb24+PGRpdiBuZy1zd2l0Y2gtd2hlbj1pbml0aWF0ZXRhc2sgbmctaWY9IWJ1dHRvbi5oaWRlQnV0dG9uIG5nLXNob3c9IWZkLmxvY2FsVmFycy50YXNrSW5pdGlhdGVkPjxidXR0b24gdHlwZT1zdWJtaXQgY2xhc3M9XCJidG4ge3tidXR0b24uc2l6ZX19IHt7YnV0dG9uLmJ0bkNsYXNzfX0gbXItMlwiPjxpIGNsYXNzPXt7YnV0dG9uLmljb259fSBuZy1jbGFzcz1cIntcXCdtci0yXFwnOmJ1dHRvbi5pY29uIT1cXCdcXCcgJiYgYnV0dG9uLmljb24hPXVuZGVmaW5lZH1cIj48L2k+IHt7YnV0dG9uLmJ0bkxhYmVsfX08L2J1dHRvbj48L2Rpdj48ZGl2IG5nLXN3aXRjaC13aGVuPWluaXRpYXRldGFzayBuZy1pZj0hYnV0dG9uLmhpZGVCdXR0b24+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biB7e2J1dHRvbi5zaXplfX0ge3tidXR0b24uYnRuQ2xhc3N9fSBtci0yXCI+PGkgY2xhc3M9e3tidXR0b24uaWNvbn19IG5nLWNsYXNzPVwie1xcJ21yLTJcXCc6YnV0dG9uLmljb24hPVxcJ1xcJyAmJiBidXR0b24uaWNvbiE9dW5kZWZpbmVkfVwiPjwvaT4ge3tidXR0b24uYnRuTGFiZWx9fTwvYnV0dG9uPjwvZGl2PjxkaXYgbmctc3dpdGNoLXdoZW49Y29tcGxldGV0YXNrIG5nLWlmPSFidXR0b24uaGlkZUJ1dHRvbj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIG1yLTIge3tidXR0b24uc2l6ZX19IHt7YnV0dG9uLmJ0bkNsYXNzfX1cIj48aSBjbGFzcz17e2J1dHRvbi5pY29ufX0gbmctY2xhc3M9XCJ7XFwnbXItMlxcJzpidXR0b24uaWNvbiE9XFwnXFwnICYmIGJ1dHRvbi5pY29uIT11bmRlZmluZWR9XCI+PC9pPiB7e2J1dHRvbi5idG5MYWJlbH19PC9idXR0b24+PC9kaXY+PGRpdiBuZy1zd2l0Y2gtd2hlbj1leGVjdXRldGFzayBuZy1pZj0hYnV0dG9uLmhpZGVCdXR0b24+PGJ1dHRvbiB0eXBlPXN1Ym1pdCBjbGFzcz1cImJ0biBtci0yIHt7OjpidXR0b24uc2l6ZX19IHt7OjpidXR0b24uYnRuQ2xhc3N9fVwiPjxpIGNsYXNzPXt7OjpidXR0b24uaWNvbn19IG5nLWNsYXNzPVwie1xcJ21yLTJcXCc6YnV0dG9uLmljb24hPVxcJ1xcJyAmJiBidXR0b24uaWNvbiE9dW5kZWZpbmVkfVwiPjwvaT4ge3s6OmJ1dHRvbi5idG5MYWJlbH19PC9idXR0b24+PC9kaXY+PGRpdiBuZy1zd2l0Y2gtZGVmYXVsdD48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWlmPSFidXR0b24uaGlkZUJ1dHRvbiBjbGFzcz1cImJ0biBtYi0yIG1yLTIge3tidXR0b24uc2l6ZX19IHt7YnV0dG9uLmJ0bkNsYXNzfX1cIj48aSBjbGFzcz17e2J1dHRvbi5pY29ufX0gbmctY2xhc3M9XCJ7XFwnbXItMlxcJzpidXR0b24uaWNvbiE9XFwnXFwnICYmIGJ1dHRvbi5pY29uIT11bmRlZmluZWR9XCI+PC9pPiB7e2J1dHRvbi5idG5MYWJlbH19PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBzdHlsZT17e2ZkLlBhcmFtZXRlcnMuSW5saW5lVGFza1N0eWxlfX0+PGRpdiBuZy1yZXBlYXQ9XCJzVGFzayBpbiBmZC5sb2NhbFZhcnMubG9hZGVkVGFza3MgdHJhY2sgYnkgc1Rhc2sudGFza0lkXCI+PGRpdiBrdC10YXNrLXByb2MtZGlyZWN0aXZlIGZkPWZkIGxvY2FsLXZhcnM9c1Rhc2suZmQgdGFzay1kZWZpbml0aW9uPXRhc2tEZWZpbml0aW9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEFjdGlvbkJ1dHRvbnNFeGUuaHRtbCcsJzxkaXYgaWRkPWt0QWN0aW9uc0J1dHRvbnNFeGUgY2xhc3M9d2lkZ2V0LWhlYWQgbmctaWY9ZmQuU2hvd0ZpZWxkPjxkaXYgY2xhc3M9cm93PjxkaXYgY2xhc3M9Y29sIG5nLWlmPVwiZmQuRm9ybURlZi5sZW5ndGg+MFwiPjxkaXYgY2xhc3M9bXktMSBzdHlsZT1cInt7ZmQuUGFyYW1ldGVycy5DdXN0b21DU1N9fTsge3tmZC5QYXJhbWV0ZXJzLmN1c3RvbUNTU319OyBqdXN0aWZ5LWNvbnRlbnQ6e3s6OmZkLlBhcmFtZXRlcnMuQWxpZ25CdXR0b25zfX07ZGlzcGxheTogZmxleDtmbGV4LXdyYXA6IHdyYXA7Z2FwOiA4cHhcIiBuZy1pZj0hZmQuUGFyYW1ldGVycy5TaG93QXNHcm91cD48ZGl2IG5nLXJlcGVhdD1cImJ1dHRvbiBpbiBmZC5Gb3JtRGVmIHRyYWNrIGJ5ICRpbmRleFwiIHN0eWxlIG5nLWNsYXNzPVwie1xcJ21yLTJcXCc6ZmQuRm9ybURlZi5sZW5ndGg8JGluZGV4KzF9XCI+PGRpdiBuZy1zd2l0Y2g9YnV0dG9uLmFjdGlvbi52YWx1ZT48ZGl2IG5nLXN3aXRjaC13aGVuPWluaXRpYXRldGFzayBuZy1pZj0hYnV0dG9uLmhpZGVCdXR0b24gbmctc2hvdz1cIiFsb2NhbFZhcnMudGFza0luaXRpYXRlZCAmJiByZXNvdXJjZURlZmluaXRpb24uZm9ybV90eXBlPT1cXCdpXFwnXCI+PGJ1dHRvbiB0eXBlPXN1Ym1pdCBjbGFzcz1cImJ0biB7ezo6YnV0dG9uLnNpemV9fSB7ezo6YnV0dG9uLmJ0bkNsYXNzfX1cIj48aSBjbGFzcz17ezo6YnV0dG9uLmljb259fSBuZy1jbGFzcz1cIntcXCdtci0yXFwnOmJ1dHRvbi5pY29uIT1cXCdcXCcgJiYgYnV0dG9uLmljb24hPXVuZGVmaW5lZH1cIj48L2k+IHt7OjpidXR0b24uYnRuTGFiZWx9fTwvYnV0dG9uPjwvZGl2PjxkaXYgbmctc3dpdGNoLXdoZW49Y29tcGxldGV0YXNrIG5nLWlmPSFidXR0b24uaGlkZUJ1dHRvbiBuZy1jbGljaz1mZC5sb2NhbFZhcnMuUHJvY2Vzc0J1dHRvbkFjdGlvbihidXR0b24sJGV2ZW50LGxvY2FsVmFycy5wcmV2aW91c1Rhc2ssJGluZGV4KSBuZy1zaG93PVwicmVzb3VyY2VEZWZpbml0aW9uLnRhc2tfZXhlY3V0ZV9pZD4wICYmIHJlc291cmNlRGVmaW5pdGlvbi50YXNrRXhlY3V0ZUluc3RhbmNlLlN0YXR1cy5OYW1lIT1cXCdjb21wbGV0ZWRcXCdcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIHt7OjpidXR0b24uc2l6ZX19IHt7OjpidXR0b24uYnRuQ2xhc3N9fVwiPjxpIGNsYXNzPXt7OjpidXR0b24uaWNvbn19IG5nLWNsYXNzPVwie1xcJ21yLTJcXCc6YnV0dG9uLmljb24hPVxcJ1xcJyAmJiBidXR0b24uaWNvbiE9dW5kZWZpbmVkfVwiPjwvaT4ge3s6OmJ1dHRvbi5idG5MYWJlbH19PC9idXR0b24+PC9kaXY+PGRpdiBuZy1zd2l0Y2gtd2hlbj1leGVjdXRldGFzayBuZy1pZj0hYnV0dG9uLmhpZGVCdXR0b24gbmctY2xpY2s9ZmQubG9jYWxWYXJzLlByb2Nlc3NCdXR0b25BY3Rpb24oYnV0dG9uLCRldmVudCxsb2NhbFZhcnMucHJldmlvdXNUYXNrLCRpbmRleCkgbmctc2hvdz1cInJlc291cmNlRGVmaW5pdGlvbi50YXNrX2V4ZWN1dGVfaWQ+MCAmJiByZXNvdXJjZURlZmluaXRpb24udGFza0V4ZWN1dGVJbnN0YW5jZS5TdGF0dXMuTmFtZSE9XFwnY29tcGxldGVkXFwnXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biB7ezo6YnV0dG9uLnNpemV9fSB7ezo6YnV0dG9uLmJ0bkNsYXNzfX1cIj48aSBjbGFzcz17ezo6YnV0dG9uLmljb259fSBuZy1jbGFzcz1cIntcXCdtci0yXFwnOmJ1dHRvbi5pY29uIT1cXCdcXCcgJiYgYnV0dG9uLmljb24hPXVuZGVmaW5lZH1cIj48L2k+IHt7OjpidXR0b24uYnRuTGFiZWx9fTwvYnV0dG9uPjwvZGl2PjxkaXYgbmctc3dpdGNoLWRlZmF1bHQ+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1pZj0hYnV0dG9uLmhpZGVCdXR0b24gbmctY2xpY2s9ZmQubG9jYWxWYXJzLlByb2Nlc3NCdXR0b25BY3Rpb24oYnV0dG9uLCRldmVudCxsb2NhbFZhcnMucHJldmlvdXNUYXNrLCRpbmRleCkgY2xhc3M9XCJidG4ge3s6OmJ1dHRvbi5zaXplfX0ge3s6OmJ1dHRvbi5idG5DbGFzc319XCI+PGkgY2xhc3M9e3s6OmJ1dHRvbi5pY29ufX0gbmctY2xhc3M9XCJ7XFwnbXItMlxcJzpidXR0b24uaWNvbiE9XFwnXFwnICYmIGJ1dHRvbi5pY29uIT11bmRlZmluZWR9XCI+PC9pPiB7ezo6YnV0dG9uLmJ0bkxhYmVsfX08L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPWZkLlBhcmFtZXRlcnMuU2hvd0FzR3JvdXA+PGRpdiBjbGFzcz1cImJ0bi1ncm91cCB0ZXh0LXt7OjpidXR0b24udGV4dEFsaWdufX1cIiByb2xlPWdyb3VwPjxidXR0b24gbmctcmVwZWF0PVwiYnV0dG9uIGluIGZkLkZvcm1EZWYgdHJhY2sgYnkgJGluZGV4XCIgdHlwZT1idXR0b24gbmctY2xpY2s9ZmQubG9jYWxWYXJzLlByb2Nlc3NCdXR0b25BY3Rpb24oYnV0dG9uLCRldmVudCxsb2NhbFZhcnMucHJldmlvdXNUYXNrLCRpbmRleCkgY2xhc3M9XCJidG4ge3s6OmJ1dHRvbi5zaXplfX0ge3s6OmJ1dHRvbi5idG5DbGFzc319XCIgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLmxvY2FsVmFycy5jbGlja2VkQnV0dG9uPT0kaW5kZXh9XCI+PGkgY2xhc3M9e3s6OmJ1dHRvbi5pY29ufX0gbmctY2xhc3M9XCJ7XFwnbXItMlxcJzpidXR0b24uaWNvbiE9XFwnXFwnICYmIGJ1dHRvbi5pY29uIT11bmRlZmluZWR9XCI+PC9pPiB7ezo6YnV0dG9uLmJ0bkxhYmVsfX08L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IHN0eWxlPXt7ZmQuUGFyYW1ldGVycy5JbmxpbmVUYXNrU3R5bGV9fT48ZGl2IG5nLXJlcGVhdD1cInNUYXNrIGluIGZkLmxvY2FsVmFycy5sb2FkZWRUYXNrcyB0cmFjayBieSBzVGFzay50YXNrSWRcIj48ZGl2IGt0LXRhc2stcHJvYy1kaXJlY3RpdmUgZmQ9ZmQgbG9jYWwtdmFycz1zVGFzay5sb2NhbFZhcnMgdGFzay1kZWZpbml0aW9uPXJlc291cmNlRGVmaW5pdGlvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RBY3Rpb25CdXR0b25zUHJvcGVydGllcy5odG1sJywnPGRpdiBjbGFzcz1tLTIgaWQ9QWN0aW9uQnV0dG9uc1Byb3BlcnRpZXMgc3R5bGU+PHN0eWxlPlxcclxcblxcdFxcclxcblxcdCAqID4gLnNob3dPbkhvdmVyIHtcXHJcXG4gICAgICAgIHZpc2liaWxpdHk6aGlkZGVuO1xcclxcbiAgICB9IFxcclxcblxcdFxcclxcbiAgICAqOmhvdmVyID4gLnNob3dPbkhvdmVyLCAqID4gLmhpZGVPbkhvdmVyIHtcXHJcXG4gICAgICAgIHZpc2liaWxpdHk6dmlzaWJsZTtcXHJcXG4gICAgfSAgXFxyXFxuIFxcclxcblxcdFxcclxcbiAgICAqOmhvdmVyID4gLmhpZGVPbkhvdmVyIHtcXHJcXG4gICAgICAgICB2aXNpYmlsaXR5OmhpZGRlbjtcXHJcXG4gICAgfSAgXFxyXFxuICAgICAgIC5idG4uYWN0aXZlIHtcXHJcXG4gICAgICAgICBib3gtc2hhZG93OiAycHggM3B4IDZweCAycHggIzgwODA4MGM3O1xcclxcbiAgICAgICB9XFxyXFxuICAgICAgIC5wcm9wcy1leHBhbmRlZHtcXHJcXG5cXHJcXG4gICAgICAgXFx0ICAgIG1pbi13aWR0aDogbWF4LWNvbnRlbnQ7XFxyXFxuICAgIFxcdFxcdHotaW5kZXg6IDEwMDA7XFxyXFxuICAgIFxcdFxcdHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gICAgXFx0XFx0YmFja2dyb3VuZDogYWxpY2VibHVlO1xcclxcbiAgICAgICB9XFxyXFxuICAgICAgIC5hY3Rpb24tc3R5bGV7XFxyXFxuXFxyXFxuXFx0XFx0XFx0cGFkZGluZzogMTJweDtcXHJcXG4gICAgXFx0XFx0Ym94LXNoYWRvdzogMHB4IDBweCA4cHggMHB4IHJnYmEoNDQsIDk2LCAyMjksIDAuMTEpO1xcclxcbiAgICBcXHRcXHRiYWNrZ3JvdW5kOiB3aGl0ZTtcXHJcXG4gICAgXFx0XFx0Ym9yZGVyLXJhZGl1czogNHB4O1xcclxcbiAgICAgICB9XFxyXFxuICAgICAgIC5hY3Rpb24tY29udGFpbmVyLXN0eWxle1xcclxcblxcclxcbiAgICAgICBcXHRcXHRkaXNwbGF5OiBmbGV4O1xcclxcbiAgICBcXHRcXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcclxcbiAgICBcXHRcXHRnYXA6IDEycHg7XFxyXFxuICAgICAgIH1cXHJcXG5cXHQgICBcXHJcXG5cXHQgICBkaXYgPiA6aGlkZS1maXJzdC1jaGlsZCB7XFxyXFxuXFx0XFx0XFx0ICBkaXNwbGF5OiBub25lO1xcclxcblxcdFxcdH1cXHJcXG5cXHJcXG4gICAgPC9zdHlsZT48ZGl2IGNsYXNzPVwiZC1mbGV4IG15LTIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPjxzcGFuIGNsYXNzPW15LWF1dG8+V2lkZ2V0IHJlZmVyZW5jZTo8L3NwYW4+IDxzcGFuIGNsYXNzPVwibXktYXV0byBtci0yIGJvbGRcIiB0aXRsZT1cIldpZGdldCByZWZlcmVuY2VcIiBuZy1iaW5kPWZkLlV1aWRSZWY+PC9zcGFuPiA8YnV0dG9uIHR5cGU9YnV0dG9uIHRpdGxlPVwiQ29weSB3aWRnZXQgcmVmZXJlbmNlXCIgY2xhc3M9XCJidG4gYnRuLWxpbmsgYnRuLXNtIHAtMFwiIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5jb3B5VG9DbGlwYm9hcmQoZmQuVXVpZFJlZik+PGkgY2xhc3M9XCJmYSBmYS1jb3B5IG1sLTFcIj48L2k+PC9idXR0b24+IDxzcGFuIG5nLWNsYXNzPVwie1xcJ3Zpc2liaWxpdHktdmlzaWJsZVxcJzpmZC5jb3B5VXVpZCxcXCd2aXNpYmlsaXR5LWhpZGRlblxcJzohZmQuY29weVV1aWR9XCIgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgc21hbGwgbWwtMVwiPkNvcGllZCE8L3NwYW4+PC9kaXY+PGRpdiBuZy1pZj1mZC5Gb3JtRGVmLmxlbmd0aCBjbGFzcz1cInJvdyBtdC0yIG1iLTRcIj48bGFiZWwgY2xhc3M9XCJjb2wtbGctMjQgbWItMVwiPkN1c3RvbSBDU1Mgc3R5bGU8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5jdXN0b21DU1M+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1mZC5Gb3JtRGVmLmxlbmd0aCBjbGFzcz1cInJvdyBtLTVcIj48ZGl2IGNsYXNzPWNvbC0xMD48c3BhbiBjbGFzcz1cIm15LTIgbXItM1wiPkFsaWduIGJ1dHRvbnM8L3NwYW4+PGRpdiBjbGFzcz1idG4tZ3JvdXAgc3R5bGU9XCJmbGV4LXdyYXA6IHdyYXA7XCI+PGxhYmVsIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYnRuLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5BbGlnbkJ1dHRvbnMgdWliLWJ0bi1yYWRpbz1cIlxcJ2xlZnRcXCdcIiB1bmNoZWNrYWJsZT48c3BhbiBjbGFzcz1cImZhIGZhLWFsaWduLWxlZnRcIj48L3NwYW4+PC9sYWJlbD4gPGxhYmVsIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYnRuLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5BbGlnbkJ1dHRvbnMgdWliLWJ0bi1yYWRpbz1cIlxcJ2NlbnRlclxcJ1wiIHVuY2hlY2thYmxlPjxzcGFuIGNsYXNzPVwiZmEgZmEtYWxpZ24tY2VudGVyXCI+PC9zcGFuPjwvbGFiZWw+IDxsYWJlbCBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuQWxpZ25CdXR0b25zIHVpYi1idG4tcmFkaW89XCJcXCdyaWdodFxcJ1wiIHVpYi11bmNoZWNrYWJsZT11bmNoZWNrYWJsZT48c3BhbiBjbGFzcz1cImZhIGZhLWFsaWduLXJpZ2h0XCI+PC9zcGFuPjwvbGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb2w+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYlNob3dGaWVsZHt7ZmQuUHJlc2VudGF0aW9uSWR9fT48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCIgbmFtZT1jYlNob3dGaWVsZHt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1tb2RlbD1mZC5TaG93RmllbGQgbmctY2hlY2tlZD1mZC5TaG93RmllbGQ+IFNob3cgYWN0aW9uIGJ1dHRvbnM8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9Y29sPjxsYWJlbCBjbGFzcz1cImt0LWNoZWNrYm94LWxhYmVsIG15LWF1dG8gbXItMlwiPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlNob3dBc0dyb3VwPkdyb3VwIGJ1dHRvbnM8L2xhYmVsPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBuZy1yZXBlYXQ9XCJidXR0b24gaW4gZmQuRm9ybURlZiB0cmFjayBieSAkaW5kZXhcIiBsci1kcm9wLXRhcmdldD1hY3Rpb25zIGxyLWRyYWctc3JjPWFjdGlvbnMgbmctY2xpY2s9ZmQubG9jYWxWYXJzLnNob3dCdXR0b25EZWZpbml0aW9uKCRpbmRleCkgbmctZGJsY2xpY2s9XCJmZC5sb2NhbFZhcnMuZXhwYW5kZWRQcm9wcz0hZmQubG9jYWxWYXJzLmV4cGFuZGVkUHJvcHNcIiBjbGFzcz1cInBsLTAgY29sLXNtLWF1dG8gbXQtMVwiPjxidXR0b24gdHlwZT1idXR0b24gc3R5bGU9XCJib3JkZXI6MXB4IGRvdHRlZCBsaWdodGdyYXk7XCIgdGl0bGU9XCJEb3VibGUgY2xpY2sgdG8gcmVzaXplIHByb3BlcnRpZXNcIiBuZy1jbGFzcz1cImZkLmxvY2FsVmFycy5zZWxlY3RlZEJ1dHRvbkluZGV4ID09ICRpbmRleCA/IFxcJ2FjdGl2ZVxcJzogXFwnXFwnXCIgY2xhc3M9XCJjb2wtMjQgYnRuIG1yLTIge3tmZC5sb2NhbFZhcnMuYWN0aW9uQnV0dG9uQ2xhc3NbYnV0dG9uLnNpemVJbmRleF19fVwiPjxzcGFuIG5nLWhpZGU9XCIkaW5kZXg9PTBcIiB0eXBlPWJ1dHRvbiBzdHlsZT1cInBvc2l0aW9uOmFic29sdXRlOyBwYWRkaW5nOiA1cHg7IGxlZnQ6M3B4OyB0b3A6NHB4O3BhZGRpbmctYm90dG9tOiAycHg7XCIgY2xhc3M9XCJzaG93T25Ib3ZlciBidG4gYnRuLXByaW1hcnkgYnRuLXNtIGJvcmRlci0wIGVsZW1lbnQtZHJhZy1oYW5kbGVcIj48aSBjbGFzcz1cImZhcyBmYS1ncmlwLXZlcnRpY2FsXCI+PC9pPjwvc3Bhbj4gPGkgY2xhc3M9XCJ7e2J1dHRvbi5pY29ufX0gaGlkZU9uSG92ZXJcIiBuZy1jbGFzcz1cIntcXCdtci0yXFwnOmJ1dHRvbi5pY29uIT1cXCdcXCcgJiYgYnV0dG9uLmljb24hPXVuZGVmaW5lZH1cIj48L2k+IDxzcGFuIG5nLWlmPWJ1dHRvbi5idG5MYWJlbCBuZy1jbGFzcz1cIntcXCdtLTJcXCc6ICFidXR0b24uaWNvbn1cIj57e2J1dHRvbi5idG5MYWJlbH19PC9zcGFuPiA8c3BhbiBuZy1pZj0hYnV0dG9uLmJ0bkxhYmVsIGNsYXNzPW1yLTI+PC9zcGFuPjwvYnV0dG9uPjxkaXYgY2xhc3M9XCJwLTIgY29sLTEyXCIgc3R5bGU9XCJib3JkZXItcmlnaHQ6MXB4IHNvbGlkIGJsYWNrXCIgbmctc3R5bGU9XCJ7XFwnYm9yZGVyLXJpZ2h0XFwnOiAkaW5kZXggIT0gZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uSW5kZXggPyBcXCcxcHggc29saWQgbGlnaHRncmF5IFxcJzogXFwnMXB4IHNvbGlkIGJsYWNrXFwnfVwiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtc20tYXV0byBkLWZsZXggbWItM1wiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9ZmQubG9jYWxWYXJzLmFkZEJ1dHRvblRvTGlzdCgpIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlua1wiPjxzcGFuIGNsYXNzPWZudDY+QWRkIE5ldyBCdXR0b248L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBpZD1EZXRhaWxzX3ZpZXcgbmctaWY9XCJmZC5sb2NhbFZhcnMuc2VsZWN0ZWRCdXR0b25JbmRleD49MCAmJiBmZC5Gb3JtRGVmLmxlbmd0aD4wXCIgY2xhc3M9cC0yIG5nLWNsYXNzPVwie1xcJ3Byb3BzLWV4cGFuZGVkXFwnOmZkLmxvY2FsVmFycy5leHBhbmRlZFByb3BzfVwiIHN0eWxlPVwiYm94LXNoYWRvdzogMnB4IDNweCA2cHggMnB4ICM4MDgwODBjNztcIj48ZGl2IGNsYXNzPXJvdz48ZGl2IGNsYXNzPWNvbC1sZy0xMj48ZGl2IGNsYXNzPVwibWItMiBoNSB0ZXh0LWNlbnRlciBib3JkZXItYm90dG9tXCI+QWN0aW9uczwvZGl2PjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9ZmQubG9jYWxWYXJzLmFkZEJ1dHRvbkFjdGlvbigpIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlua1wiIG5nLWlmPVwiZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uLmFjdGlvbnMubGVuZ3RoPT0wXCI+PGkgY2xhc3M9XCJmYSBmYS1wbHVzIG1yLTJcIj48L2k+IDxzcGFuIGNsYXNzPXNtYWxsPkFkZCBOZXcgQWN0aW9uPC9zcGFuPjwvYnV0dG9uPjxkaXYgbmctaWY9ZmQubG9jYWxWYXJzLmxvYWRpbmdBY3Rpb25zIGNsYXNzPXRleHQtY2VudGVyPjxoNT5Mb2FkaW5nIGFjdGlvbnMuLi48L2g1PjwvZGl2PjxkaXYgbmctaWY9IWZkLmxvY2FsVmFycy5sb2FkaW5nQWN0aW9ucyBkcmFndWxhPVwiXFwnYmFnLWFjdGlvbi17e2ZkLlV1aWRSZWZ9fS17e2ZkLmxvY2FsVmFycy5zZWxlY3RlZEJ1dHRvbkluZGV4fX1cXCdcIiBkcmFndWxhLXNjb3BlPSRyb290IGRyYWd1bGEtbW9kZWw9ZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uLmFjdGlvbnMgY2xhc3M9XCJhY3Rpb24tY29udGFpbmVyLXN0eWxlIGJ1dHRvbi17e2ZkLmxvY2FsVmFycy5zZWxlY3RlZEJ1dHRvbkluZGV4fX1cIj48ZGl2IG5nLXJlcGVhdD1cImJ0bkFjdGlvbiBpbiBmZC5sb2NhbFZhcnMuc2VsZWN0ZWRCdXR0b24uYWN0aW9uc1wiIG5nLWluaXQ9XCIkbGFzdCAmJiBmZC5sb2NhbFZhcnMuYWN0aW9uc0ZpbmlzaGVkKGZkLmxvY2FsVmFycy5zZWxlY3RlZEJ1dHRvbi5hY3Rpb25zKVwiIGNsYXNzPWFjdGlvbi1zdHlsZT48ZGl2IGNsYXNzPVwiYm9yZGVyLWJvdHRvbSBweS0yIG1iLTJcIj48ZGl2IGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgdy0yNVwiPjxhIGhyZWYgdGl0bGU9c29ydCBjbGFzcz1cImJ0biBidG4teHMgYnRuLW91dGxpbmUtZGFyayBib3JkZXItMCBhY3Rpb24tZHJhZy1oYW5kbGVcIj48aSBjbGFzcz1cImFjdGlvbi1kcmFnLWhhbmRsZSBmYXMgZmEtZ3JpcC12ZXJ0aWNhbFwiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImQtaW5saW5lLWJsb2NrIHctNTAgdGV4dC1jZW50ZXJcIj48c3BhbiBjbGFzcz1ib2xkIG5nLWJpbmQ9XCJcXCdBY3Rpb24gXFwnK2J0bkFjdGlvbi5pZCB8fCAkaW5kZXgrMVwiPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgdy0yNSB0ZXh0LXJpZ2h0XCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cImJ0bkFjdGlvbi5jb2xsYXBzZWQ9IWJ0bkFjdGlvbi5jb2xsYXBzZWRcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kYXJrIGJvcmRlci0wIGJ0bi14c1wiPjxpIG5nLWlmPWJ0bkFjdGlvbi5jb2xsYXBzZWQgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi11cFwiPjwvaT4gPGkgbmctaWY9IWJ0bkFjdGlvbi5jb2xsYXBzZWQgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1kb3duXCI+PC9pPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgbmctaGlkZT1idG5BY3Rpb24uY29sbGFwc2VkPjxkaXYgY2xhc3M9XCJkLWlubGluZS1ibG9jayBtYi0zIHctNzUgdGV4dC1sZWZ0XCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1mZC5sb2NhbFZhcnMuaW5zZXJ0QnV0dG9uQWN0aW9uKCRpbmRleCkgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4teHNcIj48aSBjbGFzcz1cImZhIGZhLWFycm93LXVwIG1yLTJcIj48L2k+IDxzcGFuIGNsYXNzPXNtYWxsPkluc2VydCBhY3Rpb24gYmVmb3JlPC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJkLWlubGluZS1ibG9jayB3LTI1IHRleHQtcmlnaHRcIj48YnV0dG9uIHR5cGU9YnV0dG9uIHRpdGxlPVwiRGVsZXRlIGFjdGlvbiB7eyRpbmRleH19XCIgbmctY2xpY2s9ZmQubG9jYWxWYXJzLmRlbEJ1dHRvbkFjdGlvbigkaW5kZXgpIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhbmdlciBidG4teHNcIj48aSBjbGFzcz1cImZhIGZhLXRyYXNoXCI+PC9pPjwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9bXgtYXV0byBzdHlsZT1cIndpZHRoOiA5MCU7XCI+PGxhYmVsIGNsYXNzPVwicGwtMCB0ZXh0LW11dGVkXCIgZm9yPWFjdGlvbkNhdGVnb3J5e3tmZC5QcmVzZW50YXRpb25JZH19X3t7JGluZGV4fX0+QWN0aW9uIGNhdGVnb3J5PC9sYWJlbD48ZGl2IGNsYXNzPW1iLTI+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLW1vZGVsPWJ0bkFjdGlvbi5hY3Rpb24gb24tc2VsZWN0LWZuPWZkLmxvY2FsVmFycy5vblNlbGVjdEZuKGl0ZW0sbW9kZWwsJGluZGV4KSBkcm9wZG93bi1pdGVtcz1mZC5sb2NhbFZhcnMuYWN0aW9uVHlwZXMgc2VsZWN0ZWQtaXRlbXM9YnRuQWN0aW9uLmFjdGlvbiBpcy1tdWx0aXBsZT1mYWxzZSBuYW1lPWFjdGlvbkNhdGVnb3J5e3tmZC5QcmVzZW50YXRpb25JZH19X3t7JGluZGV4fX0gcmVxdWlyZWQ9ZmFsc2UgZHJvcGRvd24taWQ9XCJcXCdhY3Rpb25cXCdcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2lubmVyRm9ybVxcJ1wiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IGFjdGlvbiBjYXRlZ29yeS4uLlxcJ1wiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PC9kaXY+PGRpdiBuZy1pZj1cImJ0bkFjdGlvbi5hY3Rpb24udmFsdWU9PVxcJ3dpZGdldGFjdGlvblxcJ1wiPjxkaXYgY2xhc3M9bXQtMj48bGFiZWwgY2xhc3M9XCJwbC0wIHRleHQtbXV0ZWRcIiBmb3I9d2lkZ2V0SWR7e2ZkLlByZXNlbnRhdGlvbklkfX1fe3skaW5kZXh9fT5UYXJnZXQgd2lkZ2V0PC9sYWJlbD48c3BhbiBjbGFzcz1cIm1sLTIgdGV4dC1tdXRlZFwiIG5nLWlmPSFidG5BY3Rpb24ud2lkZ2V0UmVmT2JqIG5nLWJpbmQ9YnRuQWN0aW9uLndpZGdldFJlZj48L3NwYW4+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLW1vZGVsPWJ0bkFjdGlvbi53aWRnZXRSZWZPYmogb24tc2VsZWN0LWZuPWZkLmxvY2FsVmFycy5vblNlbGVjdFdpZGdldENhbGxiYWNrKGl0ZW0sbW9kZWwsYnRuQWN0aW9uKSBzZWxlY3RlZC1pdGVtcz1idG5BY3Rpb24ud2lkZ2V0UmVmT2JqIGlzLW11bHRpcGxlPWZhbHNlIG5hbWU9d2lkZ2V0SWR7e2ZkLlByZXNlbnRhdGlvbklkfX1fe3skaW5kZXh9fSBuZy1yZXF1aXJlZD1mYWxzZSBkcm9wZG93bi1pdGVtcz1mZC5sb2NhbFZhcnMud2Rlcy53aWRnZXRSZWdpc3RyeUxpc3RbZmQubG9jYWxWYXJzLnJlc291cmNlRGVmaW5pdGlvbi51aWRdIGRyb3Bkb3duLWlkPVwiXFwnd2lkZ2V0TGlzdFxcJytyZXNvdXJjZS5QYXJhbWV0ZXJzLmRhdGFzZXQuaWRcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2Zvcm1SZXNvdXJjZVxcJytyZXNvdXJjZS5QYXJhbWV0ZXJzLmRhdGFzZXQuaWRcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCB3aWRnZXRcXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjwvZGl2PjxzcGFuIGNsYXNzPVwibWwtMiBtdC0yIHRleHQtbXV0ZWRcIiBuZy1pZj0hYnRuQWN0aW9uLndpZGdldEFjdGlvbk5hbWVPYmogbmctYmluZD1cIlxcJ0FjdGlvbjogXFwnK2J0bkFjdGlvbi53aWRnZXRBY3Rpb25OYW1lXCI+PC9zcGFuPjxkaXYgY2xhc3M9bXQtMiBuZy1pZj1idG5BY3Rpb24ud2lkZ2V0UmVmT2JqLmFjdGlvbnM+PGxhYmVsIGNsYXNzPVwicGwtMCB0ZXh0LW11dGVkXCIgZm9yPWFjdGlvbk5hbWV7e2ZkLlByZXNlbnRhdGlvbklkfX1fe3skaW5kZXh9fT5BY3Rpb248L2xhYmVsPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1pZj1idG5BY3Rpb24ud2lkZ2V0UmVmT2JqLmxvYWRlZCBuZy1tb2RlbD1idG5BY3Rpb24ud2lkZ2V0QWN0aW9uTmFtZU9iaiBvbi1zZWxlY3QtZm49ZmQubG9jYWxWYXJzLm9uU2VsZWN0QWN0aW9uQ2FsbGJhY2soaXRlbSxtb2RlbCxidG5BY3Rpb24pIHNlbGVjdGVkLWl0ZW1zPWJ0bkFjdGlvbi53aWRnZXRBY3Rpb25OYW1lT2JqIGlzLW11bHRpcGxlPWZhbHNlIG5hbWU9YWN0aW9uTmFtZXt7ZmQuUHJlc2VudGF0aW9uSWR9fV97eyRpbmRleH19IG5nLXJlcXVpcmVkPWZhbHNlIGRyb3Bkb3duLWl0ZW1zPWJ0bkFjdGlvbi53aWRnZXRSZWZPYmouYWN0aW9ucyBkcm9wZG93bi1pZD1cIlxcJ2FjdGlvbkxpc3RcXCcrcmVzb3VyY2UuUGFyYW1ldGVycy5kYXRhc2V0LmlkXCIgcGFyZW50LWZvcm0taWQ9XCJcXCdmb3JtUmVzb3VyY2VcXCcrcmVzb3VyY2UuUGFyYW1ldGVycy5kYXRhc2V0LmlkXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgYWN0aW9uXFwnXCI+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48L2Rpdj48ZGl2IGNsYXNzPW10LTE+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkNvbmRpdGlvbjwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgbmctbW9kZWw9YnRuQWN0aW9uLkNvbmRpdGlvbj48L2Rpdj48ZGl2IGNsYXNzPW10LTE+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPklucHV0IHBhcmFtZXRlcnM8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWJ0bkFjdGlvbi5JbnB1dFBhcmFtcz48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwiYnRuQWN0aW9uLmFjdGlvbi52YWx1ZT09XFwnb3BlbnBhZ2VcXCdcIiBjbGFzcz1tYi0yPjxkaXYgY2xhc3M9bXktMj48ZGl2IG5nLWZvcm09Zm9ybVBhZ2VTZWxlY3QgY2xhc3M+PGxhYmVsIGNsYXNzPXRleHQtbXV0ZWQgZm9yPXBhZ2VJZD5TZWxlY3QgcGFnZTwvbGFiZWw+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLW1vZGVsPWJ0bkFjdGlvbi5wYWdlIG5nLWlmPWZkLmxvY2FsVmFycy5wYWdlc0xvYWRlZCBvbi1zZWxlY3QtZm49ZmQubG9jYWxWYXJzLm9uU2VsZWN0UGFnZUNhbGxiYWNrKGl0ZW0sbW9kZWwsJGluZGV4KSBzZWxlY3RlZC1pdGVtcz1idG5BY3Rpb24ucGFnZSBpcy1tdWx0aXBsZT1mYWxzZSBuYW1lPXBhZ2VJZCBuZy1yZXF1aXJlZD1mYWxzZSBkcm9wZG93bi1pdGVtcz1mZC5sb2NhbFZhcnMucGFnZUxpc3QgZHJvcGRvd24taWQ9XCJcXCdyZXNvdXJjZUxpc3RcXCcrcmVzb3VyY2UuUGFyYW1ldGVycy5kYXRhc2V0LmlkXCIgcGFyZW50LWZvcm0taWQ9XCJcXCdmb3JtUmVzb3VyY2VcXCcrcmVzb3VyY2UuUGFyYW1ldGVycy5kYXRhc2V0LmlkXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgcGFnZVxcJ1wiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PC9kaXY+PGRpdiBjbGFzcz1jb2wtMjQgbmctaWY9YnRuQWN0aW9uLnBhZ2UuaWQ+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYk9wZW5QYWdlVmVyc2lvbnt7JGluZGV4fX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JPcGVuUGFnZVZlcnNpb257eyRpbmRleH19IG5nLW1vZGVsPWJ0bkFjdGlvbi5TZWxlY3RWZXJzaW9uRGlyZWN0IG5nLWNoZWNrZWQ9YnRuQWN0aW9uLlNlbGVjdFZlcnNpb25EaXJlY3QgbmctY2xpY2s9ZmQubG9jYWxWYXJzLmdldFB1Ymxpc2hlZFJlc291cmNlcyhidG5BY3Rpb24ucGFnZS5pZCwhYnRuQWN0aW9uLlNlbGVjdFZlcnNpb25EaXJlY3QpPiBTZWxlY3Qge3tmZC5QYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlfX0gdmVyc2lvbiBtYW51YWxseSAoaWYgbm90IGNoZWNrZWQgbGF0ZXN0IHB1Ymxpc2hlZCB2ZXJzaW9uIHdpbGwgYmUgdXNlZCk8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wXCIgbmctaWY9YnRuQWN0aW9uLlNlbGVjdFZlcnNpb25EaXJlY3Q+PGRpdiBjbGFzcz1cInNtYWxsIGNvbFwiPk5hbWU6IHt7YnRuQWN0aW9uLnNlbGVjdGVkUHVibGlzaGVkUmVzb3VyY2UubmFtZX19PC9kaXY+PGRpdiBjbGFzcz1cInNtYWxsIGNvbFwiPlZlcnNpb246IHt7YnRuQWN0aW9uLnNlbGVjdGVkUHVibGlzaGVkUmVzb3VyY2UuVmVyc2lvbn19PC9kaXY+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1mZC5sb2NhbFZhcnMuZ2V0UHVibGlzaGVkUmVzb3VyY2VzKGJ0bkFjdGlvbi5wYWdlLmlkLHRydWUpIGNsYXNzPVwiY29sIGJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi14c1wiPjxpIGNsYXNzPVwiZmEgZmEtYnJhbmNoIG1yLTJcIj48L2k+IDxzcGFuIGNsYXNzPXNtYWxsPkNoYW5nZSB2ZXJzaW9uPC9zcGFuPjwvYnV0dG9uPjxkaXYgbmctaWY9XCJmZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0W2J0bkFjdGlvbi5wYWdlLmlkXS5sZW5ndGg+MFwiIGNsYXNzPVwiY29sLTI0IHAtMCBtdC0yXCI+PHNwYW4gY2xhc3M9dGV4dC1tdXRlZD5TZWxlY3QgdmVyc2lvbjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTI0IHAtMCBtdC0yXCIgbmctZm9ybT1idG5BY3Rpb25PcGVuUGFnZVZlcnNpb257e2ZkLlByZXNlbnRhdGlvbklkfX1fe3skaW5kZXh9fT48a3QtZHJvcGRvd24tc3RhbmRhcmQgbmctaWY9XCJmZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0W2J0bkFjdGlvbi5wYWdlLmlkXS5sZW5ndGg+MFwiIGlzLW11bHRpcGxlPWZhbHNlIG5nLW1vZGVsPWJ0bkFjdGlvbi5zZWxlY3RlZFB1Ymxpc2hlZFJlc291cmNlIHNlbGVjdGVkLWl0ZW1zPWJ0bkFjdGlvbi5zZWxlY3RlZFB1Ymxpc2hlZFJlc291cmNlIHJlcXVpcmVkLWZpZWxkPXRydWUgZHJvcGRvd24taXRlbXM9ZmQubG9jYWxWYXJzLnB1Ymxpc2hlZFJlc291cmNlTGlzdFtidG5BY3Rpb24ucGFnZS5pZF0gZHJvcGRvd24taWQ9XCJcXCd2ZXJzaW9uXFwnK2ZkLlByZXNlbnRhdGlvbklkK1xcJ19cXCcrJGluZGV4XCIgcGFyZW50LWZvcm0taWQ9XCJcXCdidG5BY3Rpb25PcGVuUGFnZVZlcnNpb25cXCcrZmQuUHJlc2VudGF0aW9uSWQrXFwnX1xcJyskaW5kZXhcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCB2ZXJzaW9uXFwnXCI+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48ZGl2IG5nLWlmPVwiZmQubG9jYWxWYXJzLnB1Ymxpc2hlZFJlc291cmNlTGlzdFtidG5BY3Rpb24ucGFnZS5pZF0ubGVuZ3RoPT0wXCI+Tm8gcHVibGlzaGVkIHt7ZmQuUGFyYW1ldGVycy5TZWxlY3RlZFJlc291cmNlVHlwZX19cyAhPC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveCBtdC0yXCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgaWQ9Y2JVc2VTdGF0ZXt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1tb2RlbD1idG5BY3Rpb24udXNlX3N0YXRlPiA8bGFiZWwgY2xhc3M9XCJjdXN0b20tY29udHJvbC1sYWJlbCBsYWJlbC14c1wiIGZvcj1jYlVzZVN0YXRle3tmZC5QcmVzZW50YXRpb25JZH19PkxvYWQgcGFnZSBkYXRhIGZyb20gc3RhdGU8L2xhYmVsPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJteS0yIHAtMlwiIG5nLWlmPVwiYnRuQWN0aW9uLmFjdGlvbi52YWx1ZT09XFwnY2xlYXJmb3JtXFwnXCI+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPldpZGdldCBpZDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9YnRuQWN0aW9uLndpZGdldElkPjwvZGl2PjxkaXYgbmctaWY9XCJidG5BY3Rpb24uYWN0aW9uLnZhbHVlPT1cXCdydW50YXNrXFwnXCIgY2xhc3M9bWItMj48ZGl2IG5nLWZvcm09Zm9ybVBhZ2VTZWxlY3QgY2xhc3M9XCJteS0yIHAtMFwiPjxsYWJlbCBjbGFzcz1cInNtYWxsIGJvbGRcIiBmb3I9dGFza0lkPlNlbGVjdCB0YXNrPC9sYWJlbD48a3QtZHJvcGRvd24tc3RhbmRhcmQgbmctbW9kZWw9YnRuQWN0aW9uLnRhc2sgbmctaWY9ZmQubG9jYWxWYXJzLnRhc2tzTG9hZGVkIHNlbGVjdGVkLWl0ZW1zPWJ0bkFjdGlvbi50YXNrIGlzLW11bHRpcGxlPWZhbHNlIG5hbWU9dGFza0lkIG5nLXJlcXVpcmVkPWZhbHNlIGRyb3Bkb3duLWl0ZW1zPWZkLmxvY2FsVmFycy50YXNrTGlzdCBkcm9wZG93bi1pZD1cIlxcJ3Jlc291cmNlTGlzdFxcJytyZXNvdXJjZS5QYXJhbWV0ZXJzLmRhdGFzZXQuaWRcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2Zvcm1SZXNvdXJjZVxcJytyZXNvdXJjZS5QYXJhbWV0ZXJzLmRhdGFzZXQuaWRcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCB0YXNrXFwnXCI+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48L2Rpdj48ZGl2IGNsYXNzPVwic21hbGwgYm9sZFwiPlRhc2sgcG9zaXRpb24gb24gcGFnZTwvZGl2PjxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgbXktMVwiIHJvbGU9Z3JvdXAgYXJpYS1sYWJlbD1PcGVuVGFza1R5cGU+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cImJ0bkFjdGlvbi5PcGVuVGFza1R5cGU9XFwnY3VycmVudFxcJ1wiIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpidG5BY3Rpb24uT3BlblRhc2tUeXBlPT1cXCdjdXJyZW50XFwnfVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5XCI+T3BlbiBpbiBjdXJyZW50IGNvbnRhaW5lcjwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwiYnRuQWN0aW9uLk9wZW5UYXNrVHlwZT1cXCdpbmxpbmVcXCdcIiBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6YnRuQWN0aW9uLk9wZW5UYXNrVHlwZT09XFwnaW5saW5lXFwnfVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5XCI+SW5saW5lIHRhc2s8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cImJ0bkFjdGlvbi5PcGVuVGFza1R5cGU9XFwnY29udGFpbmVyXFwnXCIgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmJ0bkFjdGlvbi5PcGVuVGFza1R5cGU9PVxcJ2NvbnRhaW5lclxcJ31cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeVwiPlRhc2sgY29udGFpbmVyPC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1teS0yPjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbD48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCIgbmctbW9kZWw9YnRuQWN0aW9uLlNob3dDbG9zZVRhc2tCdG4+IFNob3cgY2xvc2UgdGFzayBidXR0b248L2xhYmVsPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9bXktMj48bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkXCI+RXhlY3V0ZSBhZnRlciBhY3Rpb24gbnVtYmVyPC9sYWJlbD4gPGlucHV0IHR5cGU9bnVtYmVyIHN0ZXA9MSBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1idG5BY3Rpb24uZGVwZW5kc09uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJtdC0zIHRleHQtbGVmdFwiPjxidXR0b24gbmctaWY9XCJmZC5sb2NhbFZhcnMuc2VsZWN0ZWRCdXR0b24uYWN0aW9ucy5sZW5ndGgtMSE9JGluZGV4XCIgdHlwZT1idXR0b24gbmctY2xpY2s9ZmQubG9jYWxWYXJzLmluc2VydEJ1dHRvbkFjdGlvbigkaW5kZXgrMSkgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4teHNcIj48aSBjbGFzcz1cImZhIGZhLWFycm93LWRvd24gbXItMlwiPjwvaT4gPHNwYW4gY2xhc3M9c21hbGw+SW5zZXJ0IGFjdGlvbiBhZnRlcjwvc3Bhbj48L2J1dHRvbj4gPGJ1dHRvbiBuZy1pZj1cImZkLmxvY2FsVmFycy5zZWxlY3RlZEJ1dHRvbi5hY3Rpb25zLmxlbmd0aC0xPT0kaW5kZXhcIiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1mZC5sb2NhbFZhcnMuYWRkQnV0dG9uQWN0aW9uKCkgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4teHNcIj48aSBjbGFzcz1cImZhIGZhLWFycm93LWRvd24gbXItMlwiPjwvaT4gPHNwYW4gY2xhc3M9c21hbGw+SW5zZXJ0IGFjdGlvbiBhZnRlcjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0xMiBuZy1pZj1cImZkLkZvcm1EZWYubGVuZ3RoPjBcIj48ZGl2IGNsYXNzPVwiaDUgdGV4dC1jZW50ZXIgbWItMiBib3JkZXItYm90dG9tXCI+U3R5bGluZyAmIHZpc2liaWxpdHk8L2Rpdj48ZGl2IGNsYXNzPXJvdz48ZGl2IGNsYXNzPWNvbC1sZy0xMj48ZGl2IGNsYXNzPW15LTI+PGRpdiBjbGFzcz1cIm1iLTEgc21hbGwgYm9sZFwiPkJ1dHRvbiBsYWJlbDwvZGl2PjxkaXYgY2xhc3M+PGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1mZC5sb2NhbFZhcnMuc2VsZWN0ZWRCdXR0b24uYnRuTGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1teS0zPjxkaXYgY2xhc3M9XCJteS0xIHNtYWxsIGJvbGRcIj5CdXR0b24gdmlzaWJpbGl0eTwvZGl2PjxkaXY+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYkhpZGVCdXR0b257e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JIaWRlQnV0dG9ue3tmZC5QcmVzZW50YXRpb25JZH19IG5nLW1vZGVsPWZkLmxvY2FsVmFycy5zZWxlY3RlZEJ1dHRvbi5oaWRlQnV0dG9uIG5nLWNoZWNrZWQ9ZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uLmhpZGVCdXR0b24+IEhpZGUgYnV0dG9uIG9uIHBhZ2UgbG9hZDwvbGFiZWw+PC9kaXY+PGRpdj48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWwgZm9yPWNiVmlzaWJpbGl0eUJ1dHRvbnt7ZmQuUHJlc2VudGF0aW9uSWR9fT48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCIgbmFtZT1jYlZpc2liaWxpdHlCdXR0b257e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uLnByb2Nlc3NCdXR0b25WaXNpYmlsaXR5IG5nLWNoZWNrZWQ9ZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uLnByb2Nlc3NCdXR0b25WaXNpYmlsaXR5PiBQcm9jZXNzIGJ1dHRvbnMgdmlzaWJpbGl0eSBhZnRlciBhY3Rpb25zPC9sYWJlbD48L2Rpdj48ZGl2IG5nLWlmPVwiYnRuQWN0aW9uLmFjdGlvbi52YWx1ZSE9XFwnb3BlbnBhZ2VcXCdcIiBjbGFzcz1cIm10LTMgbWItMiBzbWFsbCBib2xkXCI+U2VsZWN0IGlmIGJ1dHRvbnMgYXJlIHZpc2libGUgYWZ0ZXIgYWN0aW9uIGlzIGV4ZWN1dGVkPC9kaXY+PGRpdiBuZy1pZj1cImJ0bkFjdGlvbi5hY3Rpb24udmFsdWUhPVxcJ29wZW5wYWdlXFwnXCIgY2xhc3M9XCJib3JkZXIgcm91bmRlZFwiPjxkaXYgbmctcmVwZWF0PVwidmlzaWJpbGl0eSBpbiBmZC5sb2NhbFZhcnMuc2VsZWN0ZWRCdXR0b24udmlzaWJpbGl0eUFmdGVyQWN0aW9uIHRyYWNrIGJ5ICRpbmRleFwiPjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbCBmb3I9Y2JTaG93QnV0dG9ue3tmZC5QcmVzZW50YXRpb25JZH19e3skaW5kZXh9fT48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCIgbmFtZT1jYlNob3dCdXR0b257e2ZkLlByZXNlbnRhdGlvbklkfX17eyRpbmRleH19IG5nLW1vZGVsPXZpc2liaWxpdHkudmlzaWJsZSBuZy1jaGVja2VkPXZpc2liaWxpdHkudmlzaWJsZT4ge3tmZC5Gb3JtRGVmW3Zpc2liaWxpdHkuaW5kZXhdLmJ0bkxhYmVsfX0gKHt7dmlzaWJpbGl0eS5pbmRleH19KTwvbGFiZWw+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb2wtbGctMTI+PGRpdiBjbGFzcz48ZGl2IGNsYXNzPVwic21hbGwgYm9sZCBteS0yXCI+QnV0dG9uIHNpemUgPGlucHV0IHR5cGU9cmFuZ2UgbWluPTAgbWF4PTMgbmctY2hhbmdlPVwiZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uLnNpemU9ZmQubG9jYWxWYXJzLmFjdGlvbkJ1dHRvbkNsYXNzW2ZkLmxvY2FsVmFycy5zZWxlY3RlZEJ1dHRvbi5zaXplSW5kZXhdXCIgbmctbW9kZWw9ZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uLnNpemVJbmRleCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48ZGl2IGNsYXNzPXRleHQtY2VudGVyPnt7ZmQubG9jYWxWYXJzLmFjdGlvbkJ1dHRvblNpemVbZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uLnNpemVJbmRleF19fTwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJtbC0yIG15LTRcIj48ZGl2IGNsYXNzPVwic21hbGwgYm9sZCBteS0yXCI+Q29sb3JzICYgSWNvbnM8L2Rpdj48ZGl2IGNsYXNzIGt0LWljb24tcGlja2VyIHNlbGVjdC1jb2xvcnM9dHJ1ZSBzZWxlY3QtaWNvbnM9dHJ1ZSBzZWxlY3RlZC1pY29uPWZkLmxvY2FsVmFycy5zZWxlY3RlZEJ1dHRvbi5pY29uIHNlbGVjdGVkLWJ1dHRvbj1mZC5sb2NhbFZhcnMuc2VsZWN0ZWRCdXR0b24uYnRuQ2xhc3M+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5hY3Rpb25CdXR0b25Qcm9wc1tmZC5VdWlkUmVmXT4wXCIgY2xhc3M9bXQtMT48ZGl2IG5nLWlmPWZhbHNlIGNsYXNzPWNvbC1hdXRvPjxiPjxsYWJlbD57e2ZkLmxvY2FsVmFycy5zZWxlY3RlZEJ1dHRvbi5uYW1lfX08L2xhYmVsPjwvYj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwibXktMiBwLTJcIiBuZy1pZj1cImJ0bkFjdGlvbi5hY3Rpb24udmFsdWU9PVxcJ2NvbXBsZXRldGFza1xcJ1wiPjxkaXY+PHNwYW4gY2xhc3M9dGV4dC1tdXRlZD5BY3Rpb24gb3V0Y29tZTo8L3NwYW4+IDxzcGFuIG5nLWlmPWJ0bkFjdGlvbi5vdXRjb21lIGNsYXNzPVwicC0xIG1yLTJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5XCIgZGF0YS10b2dnbGU9bW9kYWwgZGF0YS10YXJnZXQ9I2V4YW1wbGVNb2RhbENlbnRlcj57e2J0bkFjdGlvbi5vdXRjb21lLm5hbWUxfX0gPHNwYW4gY2xhc3M9XCJtbC0xIGZhcyBmYS1jb2dcIj48L3NwYW4+PC9idXR0b24+PC9zcGFuPiA8c3BhbiBuZy1pZj0hYnRuQWN0aW9uLm91dGNvbWUgY2xhc3M9XCJwLTEgbXItMlwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnlcIiBkYXRhLXRvZ2dsZT1tb2RhbCBkYXRhLXRhcmdldD0jZXhhbXBsZU1vZGFsQ2VudGVyPjxzcGFuIGNsYXNzPVwiZmFzIGZhLWNvZ1wiPjwvc3Bhbj48L2J1dHRvbj48L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5hY3Rpb25CdXR0b25Qcm9wc1tmZC5VdWlkUmVmXT4wXCIgY2xhc3M9XCJyb3cgcC00XCI+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LXJpZ2h0XCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1mZC5sb2NhbFZhcnMuUmVtb3ZlQnV0dG9uRnJvbUxpc3QoZmQubG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uSW5kZXgpIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1kYW5nZXJcIj48c3BhbiBjbGFzcz1cImZhIGZhLXRyYXNoIG1yLTJcIj48L3NwYW4+IFJlbW92ZSBidXR0b248L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwibW9kYWwgZmFkZSBiZC1leGFtcGxlLW1vZGFsLWxnXCIgaWQ9ZXhhbXBsZU1vZGFsQ2VudGVyIG5nLWlmPVwiYnRuQWN0aW9uLmFjdGlvbi52YWx1ZT09XFwnY29tcGxldGV0YXNrXFwnXCIgdGFiaW5kZXg9LTEgcm9sZT1kaWFsb2cgYXJpYS1sYWJlbGxlZGJ5PWV4YW1wbGVNb2RhbENlbnRlclRpdGxlIGFyaWEtaGlkZGVuPXRydWU+PGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1sZ1wiIHJvbGU9ZG9jdW1lbnQ+PGRpdiBjbGFzcz1tb2RhbC1jb250ZW50PjxkaXYgY2xhc3M9bW9kYWwtaGVhZGVyPjxoNSBjbGFzcz1tb2RhbC10aXRsZSBpZD1leGFtcGxlTW9kYWxMb25nVGl0bGU+T3V0Y29tZXM8L2g1PjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9Y2xvc2UgZGF0YS1kaXNtaXNzPW1vZGFsIGFyaWEtbGFiZWw9Q2xvc2U+PHNwYW4gYXJpYS1oaWRkZW49dHJ1ZT4mdGltZXM7PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHJvd1wiPjxkaXYga3Qtb3V0Y29tZS1kZWYtbGlzdCBjbGFzcz13LTEwMCBsb2NhbC12YXJzPWZkLmxvY2FsVmFycyB0YXNrPWZkLmxvY2FsVmFycy5yZXNvdXJjZURlZmluaXRpb24gZmQ9ZmQ+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5zZWxlY3RlZE91dGNvbWVJbmRleCA9PSBudWxsIHx8IGZkLmxvY2FsVmFycy5zZWxlY3RlZE91dGNvbWVJbmRleCA9PSB1bmRlZmluZWRcIiBjbGFzcz1cIm10LTMgdGV4dC1jZW50ZXJcIj48c3BhbiBjbGFzcz1cInAtMSBtci0yXCI+VGhlcmUgYXJlIG5vIHNlbGVjdGVkIG91dGNvbWVzLiBQbGVhc2Ugc2VsZWN0IG9uZSBmcm9tIGFib3ZlITwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPjxidXR0b24gbmctaWY9XCJmZC5sb2NhbFZhcnMuc2VsZWN0ZWRPdXRjb21lSW5kZXggIT0gbnVsbCB8fCBmZC5sb2NhbFZhcnMuc2VsZWN0ZWRPdXRjb21lSW5kZXggIT0gdW5kZWZpbmVkXCIgbmctY2xpY2s9XCJmZC5sb2NhbFZhcnMuc2VsZWN0ZWRCdXR0b24ub3V0Y29tZSA9IGZkLmxvY2FsVmFycy5vdXRjb21lcyBbZmQubG9jYWxWYXJzLnNlbGVjdGVkT3V0Y29tZUluZGV4XTsgZmQubG9jYWxWYXJzLnNhdmVUYXNrT3V0Y29tZXMoKVwiIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCI+U2F2ZTwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEFjdGlvbkluaXRpYXRlVGFzay5odG1sJywnPGRpdiBuZy1mb3JtPVwiXFwna3RBY3Rpb25JVFxcJyskaWRcIiBjbGFzcz1cInJvdyBtLTAgcC0yXCI+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLWlmPXRhc2tMaXN0IG5nLW1vZGVsPXRhc2tMaXN0UGFyYW1ldGVycy5zZWxlY3RlZEl0ZW0gc2VsZWN0ZWQtaXRlbXM9dGFza0xpc3RQYXJhbWV0ZXJzLnNlbGVjdGVkSXRlbSBkcm9wZG93bi1pdGVtcz10YXNrTGlzdCBvbi1zZWxlY3QtZm49c2V0SW5pdGlhdGVUYXNrQWN0aW9uKGl0ZW0sbW9kZWwpIGlzLW11bHRpcGxlPWZhbHNlIHJlcXVpcmVkPXRydWUgZHJvcGRvd24taWQ9XCJcXCdwYWdlXFwnXCIgcGFyZW50LWZvcm0taWQ9XCJcXCdrdEFjdGlvbklUXFwnKyRpZFwiIHNlYXJjaC10ZXh0PVwiXFwnU2VhcmNoIG9yIHNlbGVjdCAuLi5cXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBtdC0xXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiB0aXRsZT17e2ZkLlNlYXJjaC5uYW1lfX0gY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSByb3VuZGVkLTBcIiBocmVmIG5nLWNsaWNrPVwic2hvd0Zvcm11bGE9IXNob3dGb3JtdWxhXCI+PGkgY2xhc3M9XCJmYSBmYS1jYWxjdWxhdG9yXCI+PC9pPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wIHAtMlwiIG5nLWlmPXNob3dGb3JtdWxhPjxkaXYgY2xhc3M9XCJjb2wtMjQgbWItMVwiPjxkaXYgY2xhc3M9YnRuLWdyb3VwIHJvbGU9Z3JvdXAgYXJpYS1sYWJlbD1PcGVuVGFza1R5cGU+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cImFjdC5hY3Rpb25QYXJhbXMuT3BlblRhc2tUeXBlPVxcJ25ld1BhZ2VcXCdcIiBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6YWN0LmFjdGlvblBhcmFtcy5PcGVuVGFza1R5cGU9PVxcJ25ld1BhZ2VcXCd9XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnlcIj5PcGVuIGluIG5ldyBwYWdlPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9XCJhY3QuYWN0aW9uUGFyYW1zLk9wZW5UYXNrVHlwZT1cXCdjdXJyZW50XFwnXCIgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmFjdC5hY3Rpb25QYXJhbXMuT3BlblRhc2tUeXBlPT1cXCdjdXJyZW50XFwnfVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5XCI+T3BlbiBpbiBjdXJyZW50IGNvbnRhaW5lcjwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwiYWN0LmFjdGlvblBhcmFtcy5PcGVuVGFza1R5cGU9XFwnaW5saW5lXFwnXCIgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmFjdC5hY3Rpb25QYXJhbXMuT3BlblRhc2tUeXBlPT1cXCdpbmxpbmVcXCd9XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnlcIj5JbmxpbmUgdGFzazwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLTEyPjxsYWJlbCBjbGFzcz1cIm1hcmdpbkw1IGZvcm0tY29udHJvbC1sYWJlbCBuby1ib3JkZXIgYWxpZ24tbWlkZGxlXCIgZm9yPXt7ZmQuTmFtZX19Rm9ybXVsYT5Gb3JtdWxhPC9sYWJlbD4gPHRleHRhcmVhIG5nLW1vZGVsPWFjdC5hY3Rpb25QYXJhbXMuZm9ybXVsYSBuZy1jaGFuZ2UgcGxhY2Vob2xkZXI9XCJFbnRlciBmb3JtdWxhXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcm91bmRlZC0wXCI+XFxyXFxuICAgIDwvdGV4dGFyZWE+PC9kaXY+PGRpdiBjbGFzcz1jb2wtMTI+PGxhYmVsIGNsYXNzPVwibWFyZ2luTDUgZm9ybS1jb250cm9sLWxhYmVsIG5vLWJvcmRlciBhbGlnbi1taWRkbGVcIiBmb3I9e3tmZC5OYW1lfX1Db25kaXRpb24+Q29uZGl0aW9uPC9sYWJlbD4gPHRleHRhcmVhIG5nLW1vZGVsPWFjdC5hY3Rpb25QYXJhbXMuY29uZGl0aW9uIG5nLWNoYW5nZSBwbGFjZWhvbGRlcj1cIkVudGVyIGNvbmRpdGlvblwiIG5hbWU9Y29uZGl0aW9uIGNsYXNzPVwiZm9ybS1jb250cm9sIHJvdW5kZWQtMFwiPlxcclxcbiAgICA8L3RleHRhcmVhPjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEFjdGlvblNlbmROb3RpZmljYXRpb24uaHRtbCcsJzxkaXY+PGRpdiBjbGFzcz1cInJvdyBtLTAgcC0yXCIgbmctZm9ybT1ub3RpZmljYXRpb25Gb3JtPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBteS1hdXRvXCI+PGxhYmVsIGNsYXNzPVwidGV4dC1tdXRlZCBtci0yXCIgZm9yPW5vdGlmaWNhdGlvbnt7YWN0LmlkMX19PlNlbGVjdCBub3RpZmljYXRpb248L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9Y29sPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1pZj1hY3Qubm90aWZpY2F0aW9uc0xvYWRlZCBuZy1tb2RlbD1hY3QuYWN0aW9uUGFyYW1zLm5vdGlmaWNhdGlvbiBzZWxlY3RlZC1pdGVtcz1hY3QuYWN0aW9uUGFyYW1zLm5vdGlmaWNhdGlvbiBvbi1zZWxlY3QtZm49bm90aWZpY2F0aW9uU2VsZWN0ZWQoaXRlbSxtb2RlbCkgaXMtbXVsdGlwbGU9ZmFsc2UgbmFtZT1ub3RpZmljYXRpb257eyRpbmRleH19IG5nLXJlcXVpcmVkPWZhbHNlIGRyb3Bkb3duLWl0ZW1zPW5vdGlmaWNhdGlvbkxpc3QgZHJvcGRvd24taWQ9XCJcXCdub3RpZmljYXRpb25cXCcrJGluZGV4XCIgcGFyZW50LWZvcm0taWQ9XCJcXCdub3RpZmljYXRpb25cXCcrJGluZGV4XCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3Qgbm90aWZpY2F0aW9uXFwnXCI+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXQtMVwiPjxidXR0b24gdHlwZT1idXR0b24gdGl0bGU9e3tmZC5TZWFyY2gubmFtZX19IGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gcm91bmRlZC0wXCIgaHJlZiBuZy1jbGljaz1cInNob3dGb3JtdWxhPSFzaG93Rm9ybXVsYVwiPjxpIGNsYXNzPVwiZmEgZmEtY2FsY3VsYXRvclwiPjwvaT48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBwLTJcIiBuZy1pZj1zaG93Rm9ybXVsYT48ZGl2IGNsYXNzPWNvbC0xMj48bGFiZWwgY2xhc3M9XCJtYXJnaW5MNSBmb3JtLWNvbnRyb2wtbGFiZWwgbm8tYm9yZGVyIGFsaWduLW1pZGRsZVwiIGZvcj17e2ZkLk5hbWV9fUZvcm11bGE+Rm9ybXVsYTwvbGFiZWw+IDx0ZXh0YXJlYSBuZy1tb2RlbD1hY3QuYWN0aW9uUGFyYW1zLmZvcm11bGEgbmctY2hhbmdlIHBsYWNlaG9sZGVyPVwiRW50ZXIgZm9ybXVsYVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHJvdW5kZWQtMFwiPlxcclxcbiAgICA8L3RleHRhcmVhPjwvZGl2PjxkaXYgY2xhc3M9Y29sLTEyPjxsYWJlbCBjbGFzcz1cIm1hcmdpbkw1IGZvcm0tY29udHJvbC1sYWJlbCBuby1ib3JkZXIgYWxpZ24tbWlkZGxlXCIgZm9yPXt7ZmQuTmFtZX19Q29uZGl0aW9uPkNvbmRpdGlvbjwvbGFiZWw+IDx0ZXh0YXJlYSBuZy1tb2RlbD1hY3QuYWN0aW9uUGFyYW1zLmNvbmRpdGlvbiBuZy1jaGFuZ2UgcGxhY2Vob2xkZXI9XCJFbnRlciBjb25kaXRpb25cIiBuYW1lPWNvbmRpdGlvbiBjbGFzcz1cImZvcm0tY29udHJvbCByb3VuZGVkLTBcIj5cXHJcXG4gICAgPC90ZXh0YXJlYT48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RBcHBOYXZiYXIuaHRtbCcsJzxkaXYga3RhcHBuYXZiYXI+PGRpdiBjbGFzcz1cInRleHQtcmlnaHQgbXktMlwiIHN0eWxlPXBvc2l0aW9uOnN0aWNreTt0b3A6NTBweDtoZWlnaHQ6MTAwJT48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc3VjY2Vzc1wiIG5nLWNsaWNrPVwic2hvd01vZGFsKFxcJ3NhdmVcXCcpXCI+PGkgY2xhc3M9XCJmYSBmYS1zYXZlIG1yLTJcIj48L2k+U2F2ZSBtZW51PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1tdC0xPjxkaXYgbmctaWY9ZmFsc2U+PGRpdiBuZy1pZj1cImxvY2FsVmFycy5wYWdlTGlzdC5sZW5ndGg9PTBcIiBjbGFzcz1cInJvdyBtLTAgbXQtMlwiPjxkaXYgY2xhc3M9XCJjb2wtMjQgbXktYXV0b1wiPllvdSBkb25cXCd0IGhhdmUgYW55IHBhZ2VzLiBUaGUgYmVzdCB3YXkgZm9yd2FyZCBpcyB0byBjcmVhdGUgeW91ciBmaXJzdCBwYWdlLjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMjQgbXktYXV0b1wiPjxzcGFuIGNsYXNzPW1yLTI+Q3JlYXRlIHlvdXIgZmlyc3QgcGFnZTwvc3Bhbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1jcmVhdGVQYWdlKCkgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLWluZm8gbWItMlwiIGt0LWJvb3RzdHJhcC10b29sdGlwIGRhdGEtdG9nZ2xlPXRvb2x0aXAgZGF0YS1wbGFjZW1lbnQ9cmlnaHQgdGl0bGU9XCJDbGljayB0byBkZWZpbmUgeW91ciBkYXRhXCI+QnVpbGQgbmV3IHBhZ2U8L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTI0IG15LWF1dG9cIj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwibXQtMSByb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC1sZy01IHAtMFwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgbS0wIHNoYWRvdyBwLTJcIiBpZD1jb2xsYXBzZVRhc2tzIHN0eWxlPVwibWF4LWhlaWdodDozNXJlbTtvdmVyZmxvdy15OnNjcm9sbDt3aWR0aDogbWF4LWNvbnRlbnRcIj48ZGl2IGNsYXNzPWhlbHBlciBzdHlsZT1cIm9wYWNpdHk6IDAuNTtcIj48aDYgY2xhc3M9bWItMT5QYWdlczwvaDY+PHAgY2xhc3M9XCJzbWFsbCB0ZXh0LW11dGVkIG1iLTJcIj5UbyBidWlsZCBhcHBsaWNhdGlvbiBtZW51IHVzZSB0aGUgPGkgY2xhc3M9XCJteC0xIGZhcyBmYS1ncmlwLXZlcnRpY2FsXCI+PC9pPiBpY29uIHRvIGRyYWcgJmFtcDsgZHJvcCBwYWdlcyBvbiBuYXZpZ2F0aW9uIGJhciBhYm92ZTwvcD48L2Rpdj48ZGl2IGNsYXNzPW1iLTI+PGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaCBwYWdlc1wiIG5nLW1vZGVsPWxvY2FsVmFycy5maWx0ZXJQYWdlcz48L2Rpdj48ZGl2IGlkPWFwcC1tZW51LXRhc2stbGlzdCBkcmFndWxhPVwiXFwnYXBwLW1lbnUtYmFnXFwnXCIgZHJhZ3VsYS1zY29wZT0kcm9vdCBkcmFndWxhLW1vZGVsPWxvY2FsVmFycy5wYWdlTGlzdD48ZGl2IG5nLXJlcGVhdD1cInBhZ2UgaW4gbG9jYWxWYXJzLnBhZ2VMaXN0IHRyYWNrIGJ5IHBhZ2UuaWRcIiBuZy1zaG93PVwiKFtwYWdlLm5hbWVdIHwgZmlsdGVyOmxvY2FsVmFycy5maWx0ZXJQYWdlcykubGVuZ3RoXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1XCIgY2xhc3M9XCJib3JkZXIgcm91bmRlZCB0ZXh0LWRhcmsgbWItMVwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1jb2w+e3skaW5kZXgrMX19LiB7e3BhZ2UubmFtZX19ICh7e3BhZ2UuaWR9fSk8L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi14cyBib3JkZXItMCBlbGVtZW50LWRyYWctaGFuZGxlXCI+PGkgY2xhc3M9XCJlbGVtZW50LWRyYWctaGFuZGxlIGZhcyBmYS1ncmlwLXZlcnRpY2FsXCI+PC9pPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJuYXZiYXJDb250YWluZXIgc3RpY2t5IGNvbC1sZy0xOSBwLTBcIiBuZy1zdHlsZT1nc3J2Yy5nZXRUb3BGb3JTdGlja3koOTApIHN0eWxlPVwiaGVpZ2h0OjEwMCU7dG9wOjkwcHg7cG9zaXRpb246IHN0aWNreVwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBwLTBcIj48bmF2IGNsYXNzPVwibmF2YmFyIG5hdmJhci1leHBhbmQtbGcgbmF2YmFyLWN1c3RvbSBuYXZiYXItY3VzdG9tLWV4dCBwLTAgYm9yZGVyLWJvdHRvbVwiPjxidXR0b24gY2xhc3M9XCJuYXZiYXItdG9nZ2xlciBuYXZiYXItbGlnaHRcIiB0eXBlPWJ1dHRvbiBkYXRhLXRvZ2dsZT1jb2xsYXBzZSBkYXRhLXRhcmdldD0jbmF2YmFyVG9nZ2xlcnt7YXBwbGljYXRpb24uaWR9fSBhcmlhLWNvbnRyb2xzPW5hdmJhclRvZ2dsZXJ7e2FwcGxpY2F0aW9uLmlkfX0gYXJpYS1leHBhbmRlZD1mYWxzZSBhcmlhLWxhYmVsPVwiVG9nZ2xlIG5hdmlnYXRpb25cIj48c3BhbiBjbGFzcz1uYXZiYXItdG9nZ2xlci1pY29uPjwvc3Bhbj48L2J1dHRvbj48ZGl2IGNsYXNzPVwiY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlXCIgaWQ9bmF2YmFyVG9nZ2xlcnt7cmVzb3VyY2UuaWR9fSBuZy1pZj1sb2NhbFZhcnMucGFnZXNMb2FkZWQ+PGRpdiBjbGFzcz1cImNvbCBwLTBcIiBuZy1jbGFzcz1cIntcXCd3aGl0ZS1ib3JkZXItZGFzaGVkXFwnOm5hdmJhckl0ZW1zTGVmdC5sZW5ndGg9PTB9XCI+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IHN0eWxlPXBvc2l0aW9uOmFic29sdXRlIGNsYXNzPVwiY29sLWF1dG8gcC0wIG0tMFwiIGt0LWJvb3RzdHJhcC10b29sdGlwIHRpdGxlPVwiTmF2aWdhdGlvbiBiYXIgLSBkcm9wIHBhZ2Ugb24gdGFyZ2V0XCIgbmctaWY9XCJuYXZiYXJJdGVtc0xlZnQubGVuZ3RoPT0wXCI+PGkgY2xhc3M9XCJmYSBmYS1idWxsc2V5ZSB0ZXh0LXdoaXRlIG0tMiBwLTJcIj48L2k+IDxzcGFuIGNsYXNzPXRleHQtd2hpdGU+RHJvcCBoZXJlIGluIE5hdmlnYXRpb24gYmFyPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgcC0wXCI+PHVsIHN0eWxlPVwibWluLWhlaWdodDogNDRweDtcIiBjbGFzcz1cIm5hdmJhci1uYXYgbXItYXV0b1wiIGRyYWd1bGE9XCJcXCdhcHAtbWVudS1iYWdcXCdcIiBkcmFndWxhLXNjb3BlPSRyb290IGRyYWd1bGEtbW9kZWw9bmF2YmFySXRlbXNMZWZ0IGlkPW5hdmJhckxlZnQ+PGxpIGlkPXt7JGluZGV4fX0gbmctcmVwZWF0PVwibmkgaW4gbmF2YmFySXRlbXNMZWZ0XCIgY2xhc3M9XCJuYXYtaXRlbSBwLTBcIiBzdHlsZT1wb3NpdGlvbjpyZWxhdGl2ZSBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6IGxvY2FsVmFycy5zZWxlY3RlZFNpZGUgPT0gXFwnbGVmdFxcJyAmJiBsb2NhbFZhcnMuc2VsZWN0ZWROYXZiYXIuaW5kZXggPT0gJGluZGV4fVwiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9XCJsb2NhbFZhcnMuZGVsZXRlTmF2YmFyKG5pLCRpbmRleCxcXCdsZWZ0XFwnKVwiIG5nLWlmPVwibG9jYWxWYXJzLnNlbGVjdGVkU2lkZSA9PSBcXCdsZWZ0XFwnICYmIGxvY2FsVmFycy5zZWxlY3RlZE5hdmJhci5pbmRleCA9PSAkaW5kZXggJiYgbG9jYWxWYXJzLnNob3dOYXZiYXJEZXRhaWxzXCIgc3R5bGU9XCJwYWRkaW5nOiAycHggNHB4O2JvcmRlci1yYWRpdXM6OHB4O3RvcDotMTBweDtyaWdodDogMHB4O1wiIG5nLWNsYXNzPVwie1xcJ2J0bi1kYW5nZXJcXCc6IW5pLmRlbGV0ZUl0ZW0sXFwnYnRuLXN1Y2Nlc3NcXCc6bmkuZGVsZXRlSXRlbX1cIiBjbGFzcz1cImZudDQgcG9zaXRpb24tYWJzb2x1dGVcIj48aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPjwvYnV0dG9uPjxkaXYgY2xhc3Mgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O2p1c3RpZnktY29udGVudDogY2VudGVyO1wiIG5nLWlmPVwibG9jYWxWYXJzLnNlbGVjdGVkU2lkZSA9PSBcXCdsZWZ0XFwnICYmIGxvY2FsVmFycy5zZWxlY3RlZE5hdmJhci5pbmRleCA9PSAkaW5kZXggJiYgbG9jYWxWYXJzLnNob3dOYXZiYXJEZXRhaWxzXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBzdHlsZT1cInBhZGRpbmc6MXB4IDJweDttYXJnaW46IC00cHggMHB4XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIHBvc2l0aW9uLWFic29sdXRlIGVsZW1lbnQtZHJhZy1oYW5kbGVcIj48aSBjbGFzcz1cImVsZW1lbnQtZHJhZy1oYW5kbGUgZmFzIGZhLWdyaXAtaG9yaXpvbnRhbFwiPjwvaT48L2J1dHRvbj48L2Rpdj48YSBocmVmIGNsYXNzPVwibmF2LWxpbmsgbmF2LWxpbmstY3VzdG9tXCIgbmctY2xpY2s9XCJsb2NhbFZhcnMuc2VsZWN0ZWRTaWRlID0gXFwnbGVmdFxcJzsgbG9jYWxWYXJzLmdldE5hdmJhckRldGFpbHMobmF2YmFySXRlbXNMZWZ0LCRpbmRleClcIj48aSBjbGFzcz17e25pLnNfbWVudXNfSWNvbn19PjwvaT4gPHNwYW4gY2xhc3M9bWwtMSBuZy1pZj1cIm5pLnNfbWVudXNfTmFtZT09dW5kZWZpbmVkXCI+e3tuaS5uYW1lfX08L3NwYW4+IDxzcGFuIGNsYXNzPW1sLTEgbmctaWY9XCJuaS5zX21lbnVzX05hbWUhPXVuZGVmaW5lZFwiPnt7bmkuc19tZW51c19OYW1lfX08L3NwYW4+PC9hPjwvbGk+PC91bD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1hdXRvPjx1bCBjbGFzcz1cIm5hdmJhci1uYXYgbmF2YmFyLWN1c3RvbSBuYXZiYXItY3VzdG9tLWV4dFwiIGRyYWd1bGE9XCJcXCdhcHAtbWVudS1iYWdcXCdcIiBkcmFndWxhLXNjb3BlPSRyb290IGRyYWd1bGEtbW9kZWw9bmF2YmFySXRlbXNSaWdodCBpZD1uYXZiYXJSaWdodD48bGkgbmctcmVwZWF0PVwibmlyIGluIG5hdmJhckl0ZW1zUmlnaHQgdHJhY2sgYnkgJGluZGV4XCIgY2xhc3M9XCJuYXYtaXRlbSBlbGVtZW50LWRyYWctaGFuZGxlXCIgbmctY2xhc3M9XCJ7XFwnZHJvcGRvd25cXCc6bmlyLnNfbWVudXNfUG9wdWxhdGVUeXBlPT1cXCduYXZiYXJyaWdodFxcJ31cIj48YSBocmVmIG5nLWNsaWNrPVwibG9jYWxWYXJzLnNlbGVjdGVkU2lkZSA9XFwncmlnaHRcXCc7bG9jYWxWYXJzLmdldE5hdmJhckRldGFpbHMobmF2YmFySXRlbXNSaWdodCwkaW5kZXgpXCIgZGF0YS1kaXNhYmxlZD10cnVlIGNsYXNzPVwibmF2LWxpbmsgbmF2LWxpbmstY3VzdG9tIGRyb3Bkb3duLXRvZ2dsZVwiIGRhdGEtdG9nZ2xlPWRyb3Bkb3duIGlkPW5hdmJhclJpZ2h0RHJvcGRvd25FZGl0IGFyaWEtaGFzcG9wdXA9dHJ1ZSBhcmlhLWV4cGFuZGVkPWZhbHNlPjxpIGNsYXNzPVwie3tuaXIuc19tZW51c19JY29ufX0gbXItMVwiPjwvaT48c3BhbiBjbGFzcz1tbC0xPnt7bmlyLnNfbWVudXNfTmFtZX19PC9zcGFuPjwvYT48dWwgY2xhc3M9XCJkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtcmlnaHQgcm91bmRlZC0wIGJvcmRlci0wIHB5LTAgc2hhZG93LXNtXCIgYXJpYS1sYWJlbGxlZGJ5PW5hdmJhclJpZ2h0RHJvcGRvd25FZGl0PjxsaSBjbGFzcz1uYXYtaXRlbSBuZy1yZXBlYXQ9XCJjbnIgaW4gbmlyLmxheW91dCB0cmFjayBieSAkaW5kZXhcIj48YSBocmVmIG5nLWNsaWNrPVwibG9jYWxWYXJzLnNlbGVjdGVkU2lkZSA9XFwncmlnaHRcXCc7Z2V0TmF2YmFyRGV0YWlscyhjbnIuc19tZW51c19OYXZiYXIpXCIgY2xhc3M9XCJuYXYtbGluayBuYXYtbGluay1jdXN0b21cIj48aSBjbGFzcz1cImZhIGZhLXt7Y25yLnNfbWVudXNfSWNvbn19IG1yLTJcIj48L2k+e3tjbnIuc19tZW51c19OYW1lfX08L2E+PC9saT48bGkgY2xhc3M9bmF2LWl0ZW0+PGEgY2xhc3M9bmF2LWxpbmsgaHJlZj48aSBjbGFzcz1cImZhIGZhLXNpZ24tb3V0LWFsdCBtci0yXCI+PC9pPkxvZ291dDwvYT48L2xpPjwvdWw+PC9saT48L3VsPjwvZGl2PjwvZGl2PjwvbmF2PjwvZGl2PjxkaXYgbmctc2hvdz1cImxvY2FsVmFycy5zZWxlY3RlZE5hdmJhci5zX21lbnVzX01lbnVUeXBlPT0yICYmIChsb2NhbFZhcnMuc2hvd05hdmJhckRldGFpbHMgfHwgbG9jYWxWYXJzLnNob3dNZW51RGV0YWlscylcIiBuZy1pZj1sb2NhbFZhcnMuc2hvd05hdmJhckRldGFpbHNGaXJzdCBjbGFzcz1cImNvbC1sZy01IHAtMFwiPjxkaXYgY2xhc3M9XCJwLTIgc2hhZG93LXNtIHNpZGVtZW51LWN1c3RvbVwiPjxkaXYgY2xhc3M9XCJoZWxwZXIgYm9yZGVyLWJvdHRvbVwiIHN0eWxlPVwib3BhY2l0eTogMC41O1wiPjxoNiBjbGFzcz1cIm1iLTEgdGV4dC1jZW50ZXIgYm9yZGVyLWJvdHRvbSBib3JkZXItcHJpbWFyeVwiPkNvbnRhaW5lciBpdGVtczwvaDY+PHAgY2xhc3M9XCJzbWFsbCB0ZXh0LW11dGVkIG1iLTJcIj5UbyBidWlsZCB0aGUgc3ViIG1lbnUsIHVzZSA8aSBjbGFzcz1cIm14LTEgZmFzIGZhLWdyaXAtdmVydGljYWxcIj48L2k+IGljb24gdG8gZHJhZyAmYW1wOyBkcm9wIHBhZ2VzIGJlbGxvdzwvcD48L2Rpdj48ZGl2IHN0eWxlPWJvcmRlcjpkYXNoZWQgbmctY2xhc3M9XCJ7XFwnZW1wdHktc2lkZS1tZW51XFwnOmxvY2FsVmFycy5zZWxlY3RlZE5hdmJhci5sYXlvdXQubGVuZ3RoPT0wfVwiPjxkaXYgY2xhc3M9dy0xMDAgbmctaWY9XCJsb2NhbFZhcnMuc2VsZWN0ZWROYXZiYXIubGF5b3V0Lmxlbmd0aD09MFwiIGt0LWJvb3RzdHJhcC10b29sdGlwIHRpdGxlPVwiTWVudSAtIGRyb3AgaXRlbXMgaGVyZVwiPjwvZGl2Pjx1bCBzdHlsZT1cIm1pbi1oZWlnaHQ6IDQ1cHg7XCIgY2xhc3M9XCJuYXZiYXItbmF2IHNpZGUtbWVudS1jb2xvclwiIGRyYWd1bGE9XCJcXCdhcHAtbWVudS1iYWdcXCdcIiBkcmFndWxhLXNjb3BlPSRyb290IGRyYWd1bGEtbW9kZWw9bG9jYWxWYXJzLnNlbGVjdGVkTmF2YmFyLmxheW91dCBpZD1zaWRlTWVudT48bGkgaWQ9e3skaW5kZXh9fSBuZy1yZXBlYXQ9XCJtaSBpbiBsb2NhbFZhcnMuc2VsZWN0ZWROYXZiYXIubGF5b3V0IHRyYWNrIGJ5ICRpbmRleFwiIGNsYXNzPVwibmF2LWl0ZW0gcC0wIGJvcmRlci0wXCIgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmxvY2FsVmFycy5zZWxlY3RlZE1lbnUuaW5kZXggPT0gJGluZGV4fVwiPjxhIGhyZWYgY2xhc3M9XCJuYXYtbGluayBwYWRkaW5nNVwiIG5nLWNsaWNrPWxvY2FsVmFycy5nZXRNZW51RGV0YWlscyhsb2NhbFZhcnMuc2VsZWN0ZWROYXZiYXIubGF5b3V0LCRpbmRleCk+PGkgY2xhc3M9e3ttaS5zX21lbnVzX0ljb259fT48L2k+IDxzcGFuIG5nLWlmPVwibWkuc19tZW51c19OYW1lPT11bmRlZmluZWRcIiBjbGFzcz1teC0zPnt7bWkubmFtZX19PC9zcGFuPiA8c3BhbiBuZy1pZj1cIm1pLnNfbWVudXNfTmFtZSE9dW5kZWZpbmVkXCIgY2xhc3M9bXgtMz57e21pLnNfbWVudXNfTmFtZX19PC9zcGFuPjwvYT48ZGl2IGNsYXNzPVwiYmctd2hpdGUgcG9zaXRpb24tYWJzb2x1dGVcIiBzdHlsZT1cInJpZ2h0OiAxNXB4O21hcmdpbi10b3A6LTMwcHhcIiBuZy1pZj1cImxvY2FsVmFycy5zZWxlY3RlZE1lbnUuaW5kZXggPT0gJGluZGV4XCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi14cyBib3JkZXItMCBlbGVtZW50LWRyYWctaGFuZGxlXCI+PGkgY2xhc3M9XCJlbGVtZW50LWRyYWctaGFuZGxlIGZhcyBmYS1ncmlwLXZlcnRpY2FsXCI+PC9pPjwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsYXNzPVwie1xcJ2J0bi1vdXRsaW5lLWRhbmdlclxcJzohbWkuZGVsZXRlSXRlbSxcXCdidG4tb3V0bGluZS1zdWNjZXNzXFwnOm1pLmRlbGV0ZUl0ZW19XCIgbmctY2xpY2s9bG9jYWxWYXJzLmRlbGV0ZU1lbnUobWksJGluZGV4KSBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kYW5nZXIgYnRuLXhzIGJvcmRlci0wXCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2J1dHRvbj48L2Rpdj48ZGl2IG5nLWlmPVwibWkuc19tZW51c19NZW51VHlwZT09MlwiIGt0LXNpZGVtZW51LWNvbnRhaW5lcj48L2Rpdj48L2xpPjwvdWw+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0xOSBwLTBcIj48ZGl2IGNsYXNzPXNoYWRvdy1zbSBrdC1uYXZiYXItZGVmaW5pdGlvbiBuZy1pZj1cImxvY2FsVmFycy5zaG93TmF2YmFyRGV0YWlscyAmJiBsb2NhbFZhcnMuc2VsZWN0ZWROYXZiYXJcIiBsb2NhbC12YXJzPWxvY2FsVmFycyBuYXZiYXItaXRlbT1sb2NhbFZhcnMuc2VsZWN0ZWROYXZiYXI+PC9kaXY+PGRpdiBjbGFzcz1zaGFkb3ctc20ga3QtbWVudS1kZWZpbml0aW9uIG5nLWlmPWxvY2FsVmFycy5zaG93TWVudURldGFpbHMgbG9jYWwtdmFycz1sb2NhbFZhcnMgbWVudS1pdGVtPWxvY2FsVmFycy5zZWxlY3RlZE1lbnU+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGZvcm0gbmctc3VibWl0PXNhdmVNZW51KGZvcm1Nb2RhbC4kdmFsaWQpIG5hbWU9Zm9ybU1vZGFsIGNsYXNzPVwibW9kYWwgZmFkZSBiZC1leGFtcGxlLW1vZGFsLWxnXCIgaWQ9bWVudVB1Ymxpc2ggdGFiaW5kZXg9LTEgcm9sZT1kaWFsb2cgYXJpYS1sYWJlbGxlZGJ5PW1lbnVQdWJsaXNoIGFyaWEtaGlkZGVuPXRydWU+PGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC14bFwiIHJvbGU9ZG9jdW1lbnQ+PGRpdiBjbGFzcz1tb2RhbC1jb250ZW50PjxkaXYgY2xhc3M9bW9kYWwtaGVhZGVyPjxzcGFuIGNsYXNzPVwiZmEgZmEtbGcgZmEtZGF0YWJhc2UgbS0yXCI+PC9zcGFuPjxoNSBjbGFzcz1tb2RhbC10aXRsZSBpZD1leGFtcGxlTW9kYWxMb25nVGl0bGU+e3tyZXNvdXJjZS5SZXNvdXJjZU5hbWV9fSA8Yj57e3Jlc291cmNlLk5hbWV9fTwvYj48L2g1PjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9Y2xvc2UgZGF0YS1kaXNtaXNzPW1vZGFsIGFyaWEtbGFiZWw9Q2xvc2U+PHNwYW4gYXJpYS1oaWRkZW49dHJ1ZT4mdGltZXM7PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wIG1vZGFsLWJvZHlcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTggcC0wXCI+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiBmb3JtTW9kYWwuSWQuJHRvdWNoZWQgJiYgZm9ybU1vZGFsLklkLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTI0IGZvcj1JZD5JZDwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1yZXNvdXJjZS5pZCBuZy1kaXNhYmxlZD10cnVlIG5nLXJlcXVpcmVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPUlkIG5hbWU9SWQgcGxhY2Vob2xkZXI9SWQ+PHAgbmctc2hvdz1cImZvcm1Nb2RhbC5JZC4kdG91Y2hlZCAmJiBmb3JtTW9kYWwuSWQuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIHJlc291cmNlIElkPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogZm9ybU1vZGFsLlZlcnNpb24uJHRvdWNoZWQgJiYgZm9ybU1vZGFsLlZlcnNpb24uJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtbGctMjQgZm9yPVZlcnNpb24+VmVyc2lvbjwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PGlucHV0IHR5cGU9dGV4dCBuZy1kaXNhYmxlZD10cnVlIG5nLW1vZGVsPXJlc291cmNlLk5ld1ZlcnNpb24gbmctcmVxdWlyZWQ9dHJ1ZSBjbGFzcz1mb3JtLWNvbnRyb2wgaWQ9VmVyc2lvbiBuYW1lPVZlcnNpb24gcGxhY2Vob2xkZXI9XCJSZXNvdXJjZSB2ZXJzaW9uXCI+PC9kaXY+PC9kaXY+PGRpdj48ZGl2IGNsYXNzPW0tMj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwibW9kYWxBY3Rpb249PVxcJ3NhdmVcXCdcIiBjbGFzcz1cImNvbC1sZy0xNiBwLTBcIj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogZm9ybU1vZGFsLkRlc2NyaXB0aW9uLiR0b3VjaGVkICYmIGZvcm1Nb2RhbC5EZXNjcmlwdGlvbi4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1sZy0yNCBmb3I9RGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTI0Pjx0ZXh0YXJlYSBuZy1tb2RlbD1sb2NhbFZhcnMubmV3RGVzY3JpcHRpb24gbmFtZT1EZXNjcmlwdGlvbiBuZy1yZXF1aXJlZD10cnVlIG5nLW1pbi1sZW5ndGg9MTAgbmctY2xhc3M9XCJ7IFxcJ2JvcmRlci1kYW5nZXJcXCcgOiBmb3JtTW9kYWwuRGVzY3JpcHRpb24uJHRvdWNoZWQgJiYgZm9ybU1vZGFsLkRlc2NyaXB0aW9uLiRpbnZhbGlkIH1cIiBjbGFzcz1mb3JtLWNvbnRyb2w+PC90ZXh0YXJlYT48cCBuZy1zaG93PVwiKCBmb3JtTW9kYWwuRGVzY3JpcHRpb24uJHRvdWNoZWQpICYmIGZvcm1Nb2RhbC5EZXNjcmlwdGlvbi4kaW52YWxpZFwiIGNsYXNzPVwic21hbGwgdGV4dC1kYW5nZXJcIj5FbnRlciByZXNvdXJjZSBkZXNjcmlwdGlvbiAobWluIDEwIGNoYXJzKTwvcD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiREVQTE9ZIHctMTAwXCI+PGRpdiBjbGFzcz1cImJvcmRlci10b3AgbS0zXCI+PGRpdiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIiBjbGFzcz1cInAtMSByb3cgbXgtMVwiIG5nLWNsaWNrPVwiaXNDb2xsYXBzZWRWZXJIaXN0b3J5ID0gIWlzQ29sbGFwc2VkVmVySGlzdG9yeVwiPjxzcGFuIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBwLTFcIj48c3BhbiBuZy1jbGFzcz1cIntcXCdmYXMgZmEtY2hldnJvbi1kb3duXFwnOiAhaXNDb2xsYXBzZWRWZXJIaXN0b3J5LFxcJ2ZhcyBmYS1jaGV2cm9uLXJpZ2h0XFwnOiBpc0NvbGxhcHNlZFZlckhpc3RvcnkgfVwiPjwvc3Bhbj48L3NwYW4+IDxzcGFuIGNsYXNzPXRhZz5WRVJTSU9OIEhJU1RPUlk8L3NwYW4+PC9kaXY+PGRpdiB1aWItY29sbGFwc2U9aXNDb2xsYXBzZWRWZXJIaXN0b3J5PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcC0wXCI+PGRpdiBuZy1pZj1sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VzLmxlbmd0aCBjbGFzcz1wLTE+PGRpdiBuZy1yZXBlYXQ9XCJlbGVtZW50IGluIGxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZXMgdHJhY2sgYnkgZWxlbWVudC5pZFwiPjxkaXYgbmctaWY9XCIkaW5kZXg9PTBcIiBjbGFzcz1cInJvdyBtLTAgYm9sZCB0ZXh0LWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+PGRpdiBjbGFzcz1cImNvbC1sZy00IG15LTEgYm9yZGVyLWJvdHRvbVwiPjxzcGFuIGNsYXNzPVwiXCI+UHVibGlzaCBpZDwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTQgbXktMSBib3JkZXItYm90dG9tXCI+PHNwYW4gY2xhc3M+VmVyc2lvbjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTEwIG15LTEgYm9yZGVyLWJvdHRvbVwiPjxzcGFuIGNsYXNzPkRlc2NyaXB0aW9uPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wIGl0ZW0gdGV4dC1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPjxkaXYgY2xhc3M9XCJjb2wtbGctNCBteS0xXCI+PHNwYW4+e3tlbGVtZW50LmlkfX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy00IG15LTFcIj48c3Bhbj57e2VsZW1lbnQuVmVyc2lvbn19PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMTAgbXktMVwiPjxzcGFuPnt7ZWxlbWVudC5EZXNjcmlwdGlvbn19PC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJyZXNvdXJjZS5SZXNvdXJjZVN1YlR5cGU9PVxcJ3N0YW5kYXJkXFwnICYmICFkYXRhc2V0RGVwbG95Lmxlbmd0aCAmJiBtb2RhbEFjdGlvbj09XFwndmVyc2lvblxcJ1wiIGNsYXNzPVwiaDUgdGV4dC1jZW50ZXJcIj5WZXJzaW9uIHt7cmVzb3VyY2UuVmVyc2lvbn19IHdpbGwgYmUgZmluYWxpc2VkIGFuZCBsb2NrZWQgZm9yIGNoYW5nZXMhPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm0tMiB0ZXh0LWNlbnRlciBjb2wtMjRcIj48YnV0dG9uIG5nLWlmPVwibW9kYWxBY3Rpb249PVxcJ3NhdmVcXCdcIiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBidG4tbGdcIiB0eXBlPXN1Ym1pdD48c3BhbiBuZy1pZj1zYXZpbmdNZW51PjxpIGNsYXNzPVwiZmFzIGZhLXNwaW5uZXIgZmEtc3BpbiBtci0xXCI+PC9pPjwvc3Bhbj4gPHNwYW4gbmctaWY9c2F2aW5nTWVudT5TYXZpbmcuLi48L3NwYW4+IDxpIG5nLWlmPSFzYXZpbmdNZW51IGNsYXNzPVwiZmEgZmEtbmV3c3BhcGVyLW8gbXItMVwiPjwvaT4gPHNwYW4gbmctaWY9IXNhdmluZ01lbnU+U2F2ZSBtZW51PC9zcGFuPjwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWlmPVwibW9kYWxBY3Rpb249PVxcJ3ZlcnNpb25cXCcgJiYgcmVzb3VyY2UuVmVyc2lvbj09cmVzb3VyY2UuTmV3VmVyc2lvblwiIG5nLWNsaWNrPW5ld1ZlcnNpb24oKSBuZy1kaXNhYmxlZD1jcmVhdGluZ05ld1ZlcnNpb24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pbmZvIG1yLTJcIj48aSBuZy1pZj0hY3JlYXRpbmdOZXdWZXJzaW9uIGNsYXNzPVwiZmEgZmEtY29kZS1icmFuY2ggbXItMVwiPjwvaT4gPGkgbmctaWY9Y3JlYXRpbmdOZXdWZXJzaW9uIGNsYXNzPVwiZmFzIGZhLXNwaW5uZXIgZmEtc3BpbiBtci0xXCI+PC9pPiA8c3BhbiBuZy1pZj1jcmVhdGluZ05ld1ZlcnNpb24+RmluYWxpc2luZyB2ZXJzaW9uIHt7cmVzb3VyY2UuVmVyc2lvbn19Li4uPC9zcGFuPiA8c3BhbiBuZy1pZj0hY3JlYXRpbmdOZXdWZXJzaW9uPkZpbmFsaXNlIHZlcnNpb24ge3tyZXNvdXJjZS5WZXJzaW9ufX08L3NwYW4+PC9idXR0b24+PGRpdiBjbGFzcz1cImg2IHRleHQtY2VudGVyIHRleHQtc3VjY2Vzc1wiIG5nLWlmPVwicmVzb3VyY2UuVmVyc2lvbiE9cmVzb3VyY2UuTmV3VmVyc2lvbiAmJiBtb2RhbEFjdGlvbj09XFwndmVyc2lvblxcJ1wiPjxpIGNsYXNzPVwiZmEgZmEtY2hlY2stY2lyY2xlIG1yLTJcIj48L2k+VmVyc2lvbiB7e3Jlc291cmNlLk5ld1ZlcnNpb259fS4gY3JlYXRlZCBzdWNjZXNzZnVseSE8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Zvcm0+PHN0eWxlIHR5cGU9dGV4dC9jc3M+XFxyXFxuICAgICAgICBcXHJcXG4gICAgICAgIC5ndS10cmFuc2l0IHtcXHJcXG4gICAgICAgICAgICBib3JkZXI6IDJweCBkYXNoZWQgb3JhbmdlO1xcclxcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlZmVmZWY7XFxyXFxuICAgICAgICAgICAgbWFyZ2luOiAwLjc1cmVtO1xcclxcbiAgICAgICAgICAgIGNvbG9yOiAjYTFhMWExO1xcclxcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xcclxcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XFxyXFxuICAgICAgICAgICAgcGFkZGluZzogMC4yNXJlbTtcXHJcXG4gICAgICAgICAgICBmb250LXNpemU6IHh4LXNtYWxsO1xcclxcbiAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICBcXHJcXG5cXHRcXHRcXHQubmF2YmFyLWN1c3RvbS1leHR7XFxyXFxuXFx0XFx0XFx0XFx0YmFja2dyb3VuZC1jb2xvcjoge3tyZXNvdXJjZS5QYXJhbWV0ZXJzLmN1c3RvbUJnQ29sb3J9fSAhaW1wb3J0YW50O1xcclxcblxcdFxcdFxcdH1cXHJcXG5cXHJcXG5cXHRcXHRcXHQubmF2LWxpbmstY3VzdG9te1xcclxcblxcdFxcdFxcdFxcdHt7cmVzb3VyY2UuUGFyYW1ldGVycy5jdXN0b21Dc3N9fVxcclxcblxcdFxcdFxcdH1cXHJcXG5cXHJcXG5cXHRcXHRcXHQubmF2LWxpbmstY3VzdG9tOmhvdmVyLC5uYXYtbGluay1jdXN0b206Zm9jdXN7XFxyXFxuXFx0XFx0XFx0XFx0e3tyZXNvdXJjZS5QYXJhbWV0ZXJzLmN1c3RvbUNzc0hvdmVyfX1cXHJcXG5cXHRcXHRcXHR9XFxyXFxuXFxyXFxuXFx0XFx0XFx0Lm5hdmJhci1jdXN0b20gLm5hdmJhci1uYXYgbGkuYWN0aXZlID4gYS5uYXYtbGluay1jdXN0b20ge1xcclxcblxcdFxcdFxcdFxcdHt7cmVzb3VyY2UuUGFyYW1ldGVycy5jdXN0b21Dc3NBY3RpdmV9fVxcclxcblxcdFxcdFxcdH1cXHJcXG5cXHRcXHQ8L3N0eWxlPjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEJhc2ljVGFibGUuaHRtbCcsJzxkaXYgbmctcmVwZWF0PVwiZWxlbWVudCBpbiBkYXRhIHRyYWNrIGJ5IGVsZW1lbnQuaWRcIj48ZGl2IG5nLWlmPVwiJGluZGV4PT0wXCIgY2xhc3M9XCJyb3cgbS0wIG1iLTEgZm50NiBib2xkIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj48ZGl2IG5nLXJlcGVhdD1cImNvbCBpbiBjb2x1bW5zIHRyYWNrIGJ5IGNvbC5uYW1lXCIgc3R5bGU9XCJib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB3aGl0ZTtcIiBjbGFzcz1cImNvbC17e2NvbC5sZW59fSBweC0xIGJnLWRhcmtcIj48c3BhbiBjbGFzcz10ZXh0LXdoaXRlIHN0eWxlPVwiZGlzcGxheTogZmxleDtoZWlnaHQ6IDEwMCU7ZmxleC13cmFwOiB3cmFwO2ZsZXgtZGlyZWN0aW9uOiBjb2x1bW47anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XCI+e3tjb2wubGFiZWx9fTwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBtYi0xIGl0ZW0gc21hbGwganVzdGlmeS1jb250ZW50LWNlbnRlclwiPjxkaXYgbmctcmVwZWF0PVwiY29sIGluIGNvbHVtbnMgdHJhY2sgYnkgY29sLm5hbWVcIiBjbGFzcz1cImNvbC17e2NvbC5sZW59fSBweC0xXCIgbmctY2xhc3M9XCJ7XFwnYmctcHJpbWFyeS1saWdodFxcJzpjb2wudHlwZT09XFwnaWRcXCcsXFwnYmctZGFuZ2VyLWxpZ2h0IGJvbGRcXCc6ZWxlbWVudFtjb2wubmFtZV0hPVxcJ05cXCcgJiYgY29sLnR5cGU9PVxcJ21hcHBpbmdcXCd9XCI+PHNwYW4gbmctaWY9XCJjb2wudHlwZSE9XFwnYm9vbFxcJyAmJiBjb2wudHlwZSE9XFwnbWFwcGluZ1xcJ1wiIHN0eWxlPVwiZGlzcGxheTogZmxleDtoZWlnaHQ6IDEwMCU7ZmxleC13cmFwOiB3cmFwO2ZsZXgtZGlyZWN0aW9uOiBjb2x1bW47anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XCI+e3tlbGVtZW50W2NvbC5uYW1lXX19PC9zcGFuPjxkaXYgbmctaWY9XCJjb2wudHlwZT09XFwnYm9vbFxcJ1wiIGNsYXNzPVwidGV4dC1jZW50ZXIgY3VzdG9tLWNvbnRyb2wgY3VzdG9tLWNoZWNrYm94XCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmctZGlzYWJsZWQ9dHJ1ZSBjbGFzcz1jdXN0b20tY29udHJvbC1pbnB1dCBuZy1tb2RlbD1lbGVtZW50W2NvbC5uYW1lXT4gPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgbGFiZWwteHNcIj48L2xhYmVsPjwvZGl2PjxzcGFuIG5nLWlmPVwiY29sLnR5cGU9PVxcJ21hcHBpbmdcXCdcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7aGVpZ2h0OiAxMDAlO2ZsZXgtd3JhcDogd3JhcDtmbGV4LWRpcmVjdGlvbjogY29sdW1uO2p1c3RpZnktY29udGVudDogY2VudGVyO1wiPnt7Z2V0TWFwcGluZyhlbGVtZW50W2NvbC5uYW1lXSl9fTwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RCb29sZWFuLmh0bWwnLCc8ZGl2IGNsYXNzPVwicm93IG0tMCBmb3JtLWdyb3VwIG1iLTEgZGF0YXNldC1pdGVtXCIgbmctaWY9XCJmZC5TaG93RmllbGQgfHwgKGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xICYmIGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlIT0yKVwiIG5nLWNsYXNzPVwie1xcJ2JnLWdyYXktMjAgYm9yZGVyIHNoYWRvd1xcJzpmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MiAmJiBmZD09Z3NydmMuZ2V0U2VsZWN0ZWRGZCgpICYmIGdzcnZjLmdldEZpZWxkUHJvcGVydGllc09wZW5lZCgpfVwiPjxkaXYgc3R5bGU9e3tmZC5sYWJlbEFsaWdufX0gY2xhc3M9e3tmZC5ncmlkQ2xhc3NFbGVtZW50fX0gbmctY2xhc3M9XCJ7XFwnY29sLWF1dG9cXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplfVwiPjxkaXY+PGxhYmVsIGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnbGFiZWxcXCdcIiBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlTGFiZWx9fSBmb3I9XCJ7e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX1cIiBjbGFzcz1cInAtMCBtYXJnaW5MNSBmb3JtLWNvbnRyb2wtbGFiZWwgbm8tYm9yZGVyIGFsaWduLW1pZGRsZVwiIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlclxcJyA6IChpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJGludmFsaWQsXFwnY3VzdG9tLWVsLWxheW91dC1zdHlsZVxcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTF9XCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJteS0yIG1yLTJcIiBuZy1pZj1mZC5QYXJhbWV0ZXJzLlRleHRSaWdodCBuZy1kaXNhYmxlZD1mZC5SZWFkT25seSBzdHlsZT1cInRyYW5zZm9ybTogc2NhbGUoe3tmZC5QYXJhbWV0ZXJzLlNjYWxlfX0pO2FjY2VudC1jb2xvcjp7e2ZkLlBhcmFtZXRlcnMuVmFsdWVGb250Q29sb3J9fTtcIiBuYW1lPVwie3tmZC5OYW1lfX17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19XCIgbmctbW9kZWw9Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSBuZy1jaGVja2VkPWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0+IHt7ZmQuTGFiZWx9fSA8aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cIm15LTIgbWwtMlwiIG5nLWlmPSFmZC5QYXJhbWV0ZXJzLlRleHRSaWdodCBuZy1kaXNhYmxlZD1mZC5SZWFkT25seSBzdHlsZT1cInRyYW5zZm9ybTogc2NhbGUoe3tmZC5QYXJhbWV0ZXJzLlNjYWxlfX0pO2FjY2VudC1jb2xvcjp7e2ZkLlBhcmFtZXRlcnMuVmFsdWVGb250Q29sb3J9fTtcIiBuYW1lPVwie3tmZC5OYW1lfX17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19XCIgbmctbW9kZWw9Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSBuZy1jaGVja2VkPWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0+PC9sYWJlbD48cCBuZy1jbGFzcz1cIntcXCdpbnZhbGlkLXRvb2x0aXAgcmlnaHQtMFxcJzpmZC5QYXJhbWV0ZXJzLkVycm9yTXNnVHlwZT09XFwndG9vbHRpcFxcJyB8fCBmZC5QYXJhbWV0ZXJzLkVycm9yTXNnVHlwZT09dW5kZWZpbmVkLFxcJ2ludmFsaWQtZmVlZGJhY2tcXCc6ZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PVxcJ2ZlZWRiYWNrXFwnfVwiPnt7ZmQuRXJyb3JNc2d9fTwvcD48L2Rpdj48ZGl2IGNsYXNzPVwiZWxlbWVudC1wcm9wZXJ0aWVzLWJ0bnMgYmctcHJpbWFyeSByb3VuZGVkIHNoYWRvd1wiIG5nLWlmPVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTJcIj48c3BhbiBjbGFzcz1cImxhYmVsIGxhYmVsLXhzIHRleHQtd2hpdGUgbWwtMSBib2xkXCI+e3tmZC5OYW1lfX08L3NwYW4+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIHByb3AtYnRuIGVsZW1lbnQtZHJhZy1oYW5kbGVcIiB0aXRsZT1zb3J0PjxpIGNsYXNzPVwiZWxlbWVudC1kcmFnLWhhbmRsZSBmYSBmYS1ncmlwLXZlcnRpY2FsXCI+PC9pPjwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi14cyBwcm9wLWJ0blwiIHRpdGxlPVwiRmllbGQgcHJvcGVydGllc1wiIG5nLWNsaWNrPXNob3dQcm9wZXJ0aWVzKCRldmVudCk+PGkgY2xhc3M9XCJmYSBmYS1jb2dcIj48L2k+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0Qm9vbGVhblByb3BlcnRpZXMuaHRtbCcsJzxkaXYgY2xhc3M9cC0xPjxkaXYga3QtcHJvcGVydHktaGVhZGVyPjwvZGl2PjxkaXYgbmctY2xpY2s9XCJsb2NhbFZhcnMuc2hvd0Jhc2ljID0gIWxvY2FsVmFycy5zaG93QmFzaWNcIiBjbGFzcz1cImV4cGFuZC1wcm9wZXJ0eS1wYW5lbCB0YWcgYm9yZGVyLWJvdHRvbSBib3JkZXItc3VjY2VzcyBteS0xIHB5LTFcIiBkYXRhLXRvZ2dsZT1jb2xsYXBzZSBocmVmPSNtYWluUHJvcGVydHlQYW5lbCByb2xlPWJ1dHRvbiBhcmlhLWV4cGFuZGVkPXRydWUgYXJpYS1jb250cm9scz1tYWluUHJvcGVydHlQYW5lbD48c3BhbiBjbGFzcz1cImNvbCBwLTBcIj5CQVNJQzwvc3Bhbj4gPGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLXNob3c9bG9jYWxWYXJzLnNob3dCYXNpYyBjbGFzcz1cImZhcyBmYS1hbmdsZS1kb3duXCI+PC9pPiA8aSBzdHlsZT1cImZvbnQtc2l6ZTogbGFyZ2U7XCIgbmctc2hvdz0hbG9jYWxWYXJzLnNob3dCYXNpYyBjbGFzcz1cImZhcyBmYS1hbmdsZS11cFwiPjwvaT48L2Rpdj48ZGl2IGNsYXNzPVwibWItNCBjb2xsYXBzZSBzaG93XCIgaWQ9bWFpblByb3BlcnR5UGFuZWw+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkNoZWNrYm94IHNpemUgKHt7ZmQuUGFyYW1ldGVycy5TY2FsZX19KTwvbGFiZWw+IDxpbnB1dCB0eXBlPW51bWJlciBtaW49MSBtYXg9MTAgc3RlcD0wLjAxIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuU2NhbGUgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5MYWJlbDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuTGFiZWw+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5FcnJvciBtc2c8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLkVycm9yTXNnPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+RGlzcGxheSB2YWx1ZSBmb3IgVHJ1ZTwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5UcnVlVmFsPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+RGlzcGxheSB2YWx1ZSBmb3IgRmFsc2U8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuRmFsc2VWYWw+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWwgZm9yPWNiVGV4dFJpZ2h0e3tmZC5QcmVzZW50YXRpb25JZH19PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPWNiVGV4dFJpZ2h0e3tmZC5QcmVzZW50YXRpb25JZH19IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuVGV4dFJpZ2h0IG5nLWNoZWNrZWQ9ZmQuUGFyYW1ldGVycy5UZXh0UmlnaHQ+IFRleHQgcmlnaHQ8L2xhYmVsPjwvZGl2PjwvZGl2PjxkaXYga3QtZmllbGQtZXh0ZW5kZWQtcHJvcGVydGllcz48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RDYWxjdWxhdGVkRmllbGQuaHRtbCcsJzxuZy1mb3JtIG5hbWU9aW5uZXJGb3Jte3tmZC5JdGVtSWR9fT48ZGl2IGNsYXNzPVwicm93IG0tMCBmb3JtLWdyb3VwIG1iLTFcIiBuZy1pZj1cImZkLlNob3dGaWVsZCB8fCAoZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTIpXCIgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZH19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkfX0uJGludmFsaWQsXFwnYmctZ3JheS0yMCBtci0wIHAtMSBib3JkZXJcXCc6Zm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTIgJiYgZmQuSXRlbUlkPT1nc3J2Yy5nZXRTZWxlY3RlZEl0ZW1JZCgpICYmIGdzcnZjLmdldEZpZWxkUHJvcGVydGllc09wZW5lZCgpIH1cIj48ZGl2IG5nLWNsYXNzPWNvbExlbmd0aFtmZC5sYWJlbExlbmd0aC0xXT48bGFiZWwgY2xhc3M9XCJtYXJnaW5MNSBmb3JtLWNvbnRyb2wtbGFiZWwgbm8tYm9yZGVyIGFsaWduLW1pZGRsZVwiIGZvcj17e2ZkLk5hbWV9fT48YSBuZy1pZj0haW5wdXRBcnJheS5sb2NrZWQgdGl0bGU9c29ydCBocmVmPjxpIGNsYXNzPVwiZWxlbWVudC1kcmFnLWhhbmRsZSBmYSBmYS1zb3J0XCI+PC9pPjwvYT4ge3tmZC5MYWJlbH19PC9sYWJlbD48L2Rpdj48ZGl2IG5nLWNsYXNzPWNvbExlbmd0aFtmZC5WYWx1ZUxlbmd0aC0xXT48ZGl2IGNsYXNzPVwibWItMCBib3JkZXIgcC0xIHJvdW5kZWQtMFwiPnt7ZmQuc0l0ZW1WYWx1ZX19PC9kaXY+PGRpdiBjbGFzcz1cIm1iLTAgYm9yZGVyIHAtMVwiPnt7ZmQuU2VhcmNofX08L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXJvdz48YnV0dG9uIGlkPXRleHRib3gtYWRkb24te3tmZC5QcmVzZW50YXRpb25JZH19IHR5cGU9YnV0dG9uIHRpdGxlPXt7ZmQuU2VhcmNoLm5hbWV9fSBjbGFzcz1cImJ0biBidG4tbGlnaHQgcm91bmRlZC0wXCIgaHJlZiBuZy1jbGljaz1sb2NhbFZhcnMuQ2FsY3VsYXRlKCk+PGkgY2xhc3M9XCJmYSBmYS1jYWxjdWxhdG9yXCI+PC9pPjwvYnV0dG9uPjxkaXYgY2xhc3M9XCJlbGVtZW50LXByb3BlcnRpZXMtYnRucyBiZy1wcmltYXJ5IHJvdW5kZWQgc2hhZG93XCIgbmctaWY9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MlwiPjxhIGhyZWYgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIHByb3AtYnRuIGVsZW1lbnQtZHJhZy1oYW5kbGVcIiB0aXRsZT1zb3J0PjxpIGNsYXNzPVwiZmEgZmEtc29ydFwiPjwvaT48L2E+IDxhIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi14cyBwcm9wLWJ0blwiIGhyZWYgdGl0bGU9XCJGaWVsZCBwcm9wZXJ0aWVzXCIgbmctY2xpY2s9c2hvd1Byb3BlcnRpZXMoKT48aSBjbGFzcz1cImZhIGZhLWNvZ1wiPjwvaT48L2E+PC9kaXY+PC9kaXY+PC9kaXY+PC9uZy1mb3JtPicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdENhbGN1bGF0ZWRGaWVsZFByb3BlcnRpZXMuaHRtbCcsJzxkaXY+PGRpdiBjbGFzcz10ZXh0LWNlbnRlcj48aDU+UHJvcGVydGllczwvaDU+PC9kaXY+PGhyPjxsYWJlbD5MYWJlbCBsZW5ndGg8L2xhYmVsPiA8aW5wdXQgdHlwZT1udW1iZXIgbWluPTEgbWF4PTEyIG5nLW1vZGVsPWZkLkxhYmVsTGVuZ3RoIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiPiA8bGFiZWw+VmFsdWUgbGVuZ3RoPC9sYWJlbD4gPGlucHV0IHR5cGU9bnVtYmVyIG1pbj0xIG1heD0xMiBuZy1tb2RlbD1mZC5WYWx1ZUxlbmd0aCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj4gPGxhYmVsPkZvcm11bGE8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlNlYXJjaD4gPGxhYmVsPk1heCBsZW5ndGg8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLk1heExlbmd0aD4gPGxhYmVsPkxhYmVsPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5MYWJlbD4gPGxhYmVsPkVycm9yIG1zZzwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuRXJyb3JNc2c+IDxsYWJlbD5TZWFyY2hUZXh0PC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5TZWFyY2hUZXh0PjxkaXYgY2xhc3M9Y2hlY2tib3g+PGxhYmVsPjxpbnB1dCB0eXBlPWNoZWNrYm94IG5nLW1vZGVsPWZkLlJlcXVpcmVkPiBSZXF1aXJlZDwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1jaGVja2JveD48bGFiZWw+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmctbW9kZWw9ZmQuTXVsdGlsaW5lPiBNdWx0aXBsZSBsaW5lczwvbGFiZWw+PC9kaXY+PGRpdiBrdC1maWVsZC1leHRlbmRlZC1wcm9wZXJ0aWVzPjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdENhbGVuZGFyLmh0bWwnLCc8ZGl2IGNsYXNzPXdpZGdldC1oZWFkIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1hY3RpdmUgbS0yIHNoYWRvd1xcJzpsb2NhbFZhcnMuc2hvd0FkZFRhc2sgfHwgbG9jYWxWYXJzLnNlbGVjdGVkVGFza0luZGV4Pi0xfVwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wIHAtMCBiZy1saWdodFwiIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1oZWFkLWFjdGl2ZVxcJzpmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU+MCxcXCdiZy1saWdodFxcJzpmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTB9XCIgbmctaWY9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MVwiPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTAgYmctZ3JheS0xMDBcIj48aSBjbGFzcz1cImZhciBmYS1jYWxlbmRhciBteC0yXCI+PC9pPjxsYWJlbD5DYWxlbmRhciAoe3tmZC5QcmVzZW50YXRpb25JZH19KTwvbGFiZWw+IDxhIGhyZWYgdGl0bGU9c29ydCBuZy1jbGFzcz1cIntcXCd3aWRnZXQtcHJvcFxcJzpmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT11bmRlZmluZWR9XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnkgYm9yZGVyLTAge3tncmlkVHlwZX19LWVsZW1lbnQtZHJhZy1oYW5kbGUgd2lkZ2V0LXByb3BcIj48aSBjbGFzcz1cInt7Z3JpZFR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIGZhcyBmYS1ncmlwLXZlcnRpY2FsXCI+PC9pPjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIHRleHQtcmlnaHQgbXktYXV0b1wiPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIiBuZy1pZj1cImZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCE9XFwnXFwnICYmIGZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCE9dW5kZWZpbmVkXCI+PGEgaHJlZiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIGJ0bi1zbVwiIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1wcm9wXFwnOmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCBmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZH1cIiB0aXRsZT1cIlNob3cvaGlkZSBwcm9wZXJ0aWVzXCIgbmctY2xpY2s9ZmQubG9jYWxWYXJzLnNob3dQcm9wZXJ0aWVzKDIsdHJ1ZSk+PGkgY2xhc3M9XCJmYXMgZmEtY29nXCI+PC9pPjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCIgbmctaWY9dHJ1ZT48YSBocmVmIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYm9yZGVyLTAgYnRuLXNtXCIgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LXByb3BcXCc6ZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wIHx8IGZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkfVwiIHRpdGxlPVwiU2hvdy9oaWRlIHByb3BlcnRpZXNcIiBuZy1jbGljaz1mZC5sb2NhbFZhcnMuc2hvd1Byb3BlcnRpZXMoMix0cnVlKT48aSBjbGFzcz1cImZhcyBmYS1jb2dcIj48L2k+PC9hPjwvZGl2PjxkaXYgaWQ9XCJkZWxldGUgd2lkZ2V0XCIgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48ZGl2IGt0LXRhc2stZHJvcGRvd24+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MVwiIGZkPWZkIGxvY2FsLXZhcnM9ZmQubG9jYWxWYXJzIGt0LWRhdGFzZXQtbWFwcGVyPjwvZGl2PjxkaXYgbmctaWY9XCJsb2NhbFZhcnMuc2hvd1Byb3BlcnRpZXMgJiYgZ3NydmMuZ2V0Rm9ybVZpZXdUeXBlKCk9PTFcIj48ZGl2IGt0LWZvcm0tZWxlbWVudC1wcm9wZXJ0aWVzIGZkPWZkIGxvY2FsLXZhcnM9bG9jYWxWYXJzPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJnc3J2Yy5nZXRGb3JtVmlld1R5cGUoKT09MlwiPjxkaXYgbmctcmVwZWF0PVwic1Rhc2sgaW4gbG9jYWxPYmoubG9hZGVkVGFza3MgdHJhY2sgYnkgdGFza0lkXCI+PGRpdiBrdC10YXNrLXByb2MtZGlyZWN0aXZlIGZkPWZkIGxvY2FsLXZhcnM9c1Rhc2subG9jYWxWYXJzIHRhc2stZGVmaW5pdGlvbj1yZXNvdXJjZURlZmluaXRpb24+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5jaGFydFR5cGUhPVxcJ2NvdW50ZXJcXCcgJiYgZmQubG9jYWxWYXJzLmNoYXJ0VHlwZSE9XFwnc2NyaXB0XFwnXCIgaWQ9Q0hBUlRDYW52YXN7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGRpdiBuZy1zaG93PVwiZmQubG9jYWxWYXJzLnNob3dGb3JtIHx8IGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yXCIgY2xhc3M9XCJyb3cgbS0wIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj48aDQgY2xhc3M9Y29sLTI0Pnt7ZmQuTGFiZWx9fTwvaDQ+PGNhbnZhcyBuZy1zaG93PVwiZmQubG9jYWxWYXJzLmRhdGEubGVuZ3RoID4gMFwiIG5nLWNsYXNzPWNvbExlbmd0aFtmZC52YWx1ZUxlbmd0aC0xXSBjbGFzcz1cImNoYXJ0IGNoYXJ0LWJhc2VcIiBjaGFydC1jb2xvcnM9ZmQubG9jYWxWYXJzLmNoYXJ0Q29sb3JzIGNoYXJ0LXR5cGU9ZmQubG9jYWxWYXJzLmNoYXJ0VHlwZSBjaGFydC1kYXRhPWZkLmxvY2FsVmFycy5kYXRhIGNoYXJ0LWxibD1mZC5MYWJlbCBjaGFydC1sYWJlbHM9ZmQubG9jYWxWYXJzLmxhYmVscyBjaGFydC1vcHRpb25zPWZkLmxvY2FsVmFycy5jaGFydE9wdGlvbnM+PC9jYW52YXM+PGRpdiBuZy1zaG93PVwiZmQubG9jYWxWYXJzLmRhdGEubGVuZ3RoID09IDBcIiBzdHlsZT1cImZvbnQtc2l6ZToge3sgZmQuUGFyYW1ldGVycy5Gb250U2l6ZSB8fCBcXCc3cmVtXFwnfX1cIj57eyBmZC5QYXJhbWV0ZXJzTGFuZy5Ob0RhdGFNc2cgfHwgXFwnTm8gZGF0YSFcXCd9fTwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmZC5sb2NhbFZhcnMuY2hhcnRUeXBlPT1cXCdzY3JpcHRcXCdcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGp1c3RpZnktY29udGVudDogY2VudGVyOyBhbGlnbi1pdGVtczogY2VudGVyOyBwYWRkaW5nOiAyNHB4IDA7IGdhcDogMTJweDtcIiBpZD1DSEFSVENhbnZhc0NvdW50ZXJ7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGRpdiBzdHlsZT1cInt7IGZkLlBhcmFtZXRlcnMuY3NzU3R5bGUgfX1cIj48ZGl2IHN0eWxlPVwiZm9udC1zaXplOiB7eyBmZC5QYXJhbWV0ZXJzLkZvbnRTaXplIHx8IFxcJzdyZW1cXCd9fVwiPnt7ZmQubG9jYWxWYXJzLnNjcmlwdFZhbHVlIH19PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5jaGFydFR5cGU9PVxcJ2NvdW50ZXJcXCdcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGp1c3RpZnktY29udGVudDogY2VudGVyOyBhbGlnbi1pdGVtczogY2VudGVyOyBwYWRkaW5nOiAyNHB4IDA7IGdhcDogMTJweDtcIiBpZD1DSEFSVENhbnZhc0NvdW50ZXJ7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGRpdiBzdHlsZT1cInt7IGZkLlBhcmFtZXRlcnMuY3NzU3R5bGUgfX1cIj48ZGl2IHN0eWxlPVwiZm9udC1zaXplOiB7eyBmZC5QYXJhbWV0ZXJzLkZvbnRTaXplIHx8IFxcJzdyZW1cXCd9fTtcIiBuZy1pZj1mZC5QYXJhbWV0ZXJzLmNoYXJ0RmlsdGVyRmllbGQ+PGRpdiBzdHlsZT10ZXh0LWFsaWduOmNlbnRlcj57eyBmZC5sb2NhbFZhcnMuZm9ybWF0TnVtYmVyKCBmZC5sb2NhbFZhcnMuYW5hbHl0aWNzW2ZkLlBhcmFtZXRlcnMuY2hhcnRGaWx0ZXJGaWVsZF0gfHwgMCApIH19IHt7ZmQuUGFyYW1ldGVycy5Db3VudGVyVW5pdHN9fTwvZGl2PjxkaXYgc3R5bGU9XCJmb250LXNpemU6IGNhbGMoMTJweCArIDAuMTVlbSk7dGV4dC1hbGlnbjogY2VudGVyO1wiPnt7IGZkLmxvY2FsVmFycy5jaGFydExhYmVsIH19PC9kaXY+PC9kaXY+PGRpdiBzdHlsZT1cImZvbnQtc2l6ZToge3sgZmQuUGFyYW1ldGVycy5Gb250U2l6ZSB8fCBcXCc3cmVtXFwnfX07XCIgbmctaWY9IWZkLlBhcmFtZXRlcnMuY2hhcnRGaWx0ZXJGaWVsZD48ZGl2IHN0eWxlPXRleHQtYWxpZ246Y2VudGVyPnt7IGZkLmxvY2FsVmFycy5mb3JtYXROdW1iZXIoZmQubG9jYWxWYXJzLmNvdW50QWxsKSB9fSB7e2ZkLlBhcmFtZXRlcnMuQ291bnRlclVuaXRzfX08L2Rpdj48ZGl2IHN0eWxlPVwiZm9udC1zaXplOiBjYWxjKDEycHggKyAwLjE1ZW0pO3RleHQtYWxpZ246IGNlbnRlcjtcIj57eyBmZC5sb2NhbFZhcnMuY2hhcnRMYWJlbCB9fTwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxoMz48Yj57eyBmZC5sb2NhbFZhcnMuZXJyb3Jtc2d9fTwvYj48L2gzPjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdENhbGVuZGFyUHJvcGVydGllcy5odG1sJywnPGRpdiBuZy1mb3JtPVwiXFwndGFza0NoYXJ0UHJvcGVydGllc1xcJytmZC5QcmVzZW50YXRpb25JZFwiIGNsYXNzPXAtMD48ZGl2IGNsYXNzPXBiLTQ+PGxhYmVsIGNsYXNzPldpZGdldCByZWZlcmVuY2UgKGVudGVyIG9yIHBhc3RlKTwvbGFiZWw+IDxidXR0b24gdHlwZT1idXR0b24gdGl0bGU9XCJQYXN0ZSB3aWRnZXQgcmVmZXJlbmNlXCIgY2xhc3M9XCJidG4gYnRuLWxpbmsgYnRuLXhzIHAtMFwiIG5nLWNsaWNrPWZkLnBhc3RlRnJvbUNsaXBib2FyZCh0YXNrKT48aSBjbGFzcz1cImZhIGZhLXBhc3RlIG1sLTFcIj48L2k+PC9idXR0b24+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy53aWRnZXRSZWZlcmVuY2U+PC9kaXY+PGRpdiBjbGFzcz1yb3c+PGRpdiBjbGFzcz1cImNvbC0yNCBteS0yXCIgbmctaWY9IWZkLlBhcmFtZXRlcnMuSGlkZUhlYWRlcj48bGFiZWw+VGl0bGU8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLkxhYmVsPiA8bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkXCI+Tm8gZGF0YSBtZXNzYWdlPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzTGFuZy5Ob0RhdGFNc2c+PC9kaXY+PGRpdiBjbGFzcz1jb2wtMjQ+PGxhYmVsIGNsYXNzPVwicGwtMCBsYWJlbC14cyB0ZXh0LW11dGVkXCIgZm9yPW5hbWVGaWVsZD5TZWxlY3QgZnVuY3Rpb248L2xhYmVsPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBjbGFzcz1tLTEgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5DYWxjdWxhdGVGdW5jdGlvbiBzZWxlY3RlZC1pdGVtcz1mZC5QYXJhbWV0ZXJzLkNhbGN1bGF0ZUZ1bmN0aW9uIGlzLW11bHRpcGxlPWZhbHNlIG5hbWU9UGFyYW1ldGVycy5DYWxjdWxhdGVGdW5jdGlvbnt7ZmQuUHJlc2VudGF0aW9uSWR9fSByZXF1aXJlZC1maWVsZD10cnVlIGRyb3Bkb3duLWl0ZW1zPWZkLmxvY2FsVmFycy5jYWxjdWxhdGVGdW5jdGlvbnMgZHJvcGRvd24taWQ9XCJcXCdQYXJhbWV0ZXJzLkNhbGN1bGF0ZUZ1bmN0aW9uXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgcGFyZW50LWZvcm0taWQ9XCJcXCd2aWV3Q2hhcnRQcm9wZXJ0aWVzXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgZnVuY3Rpb25cXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjwvZGl2PjxkaXYgY2xhc3M9Y29sLTI0PjxsYWJlbCBjbGFzcz1cInBsLTAgbGFiZWwteHMgdGV4dC1tdXRlZFwiIGZvcj1uYW1lRmllbGQ+TWFwcGluZyBkZWZpbml0aW9uPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1mb3JtLWNvbnRyb2wgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5tYXBwaW5nRGVmaW5pdGlvbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTI0IG10LTFcIiBpZD1leHRlbmRlZFByb3BlcnR5UGFuZWw+PGRpdiBjbGFzcz1cImV4cGFuZC1wcm9wZXJ0eS1wYW5lbCB0YWcgYm9yZGVyLWJvdHRvbSBib3JkZXItc3VjY2VzcyBteS0xIHB5LTFcIiBkYXRhLXRvZ2dsZT1jb2xsYXBzZSBocmVmPSNlbGVtZW50U2l6ZXt7ZmQuUHJlc2VudGF0aW9uSWR9fSByb2xlPWJ1dHRvbiBhcmlhLWV4cGFuZGVkPXRydWUgYXJpYS1jb250cm9scz1leHRlbmRlZFByb3BlcnR5UGFuZWw+PHNwYW4gY2xhc3M9XCJjb2wgcC0wXCI+Q2hhcnQgdHlwZTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sbGFwc2Ugc2hvd1wiIGlkPWVsZW1lbnRTaXple3tmZC5QcmVzZW50YXRpb25JZH19PjxkaXYgY2xhc3M9XCJwcm9wLXRhYi1jb250ZW50IHAtMSBtYi00XCI+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9XCJwbC0wIGxhYmVsLXhzIHRleHQtbXV0ZWRcIiBmb3I9bmFtZUZpZWxkPlNlbGVjdCBDaGFydCBUeXBlPC9sYWJlbD48a3QtZHJvcGRvd24tc3RhbmRhcmQgY2xhc3M9bS0xIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuY2hhcnRUeXBlIHNlbGVjdGVkLWl0ZW1zPWZkLlBhcmFtZXRlcnMuY2hhcnRUeXBlIGlzLW11bHRpcGxlPWZhbHNlIG5hbWU9UGFyYW1ldGVycy5jaGFydFR5cGV7e2ZkLlByZXNlbnRhdGlvbklkfX0gcmVxdWlyZWQtZmllbGQ9dHJ1ZSBkcm9wZG93bi1pdGVtcz1mZC5sb2NhbFZhcnMuY2hhcnRUeXBlcyBkcm9wZG93bi1pZD1cIlxcJ1BhcmFtZXRlcnMuY2hhcnRUeXBlXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgcGFyZW50LWZvcm0taWQ9XCJcXCd2aWV3Q2hhcnRQcm9wZXJ0aWVzXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgY2hhcnQgdHlwZVxcJ1wiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlBhcmFtZXRlcnMuY2hhcnRUeXBlLm5hbWUhPVxcJ3NjcmlwdFxcJyAmJiBmZC5QYXJhbWV0ZXJzLmNoYXJ0VHlwZS5uYW1lIT1cXCdjb3VudGVyXFwnXCIgY2xhc3M+PGxhYmVsIGNsYXNzPVwicGwtMCBsYWJlbC14cyB0ZXh0LW11dGVkXCI+Q2hhcnQgUHJlY2lzaW9uICh4L3kgYXhlcyk8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPWZvcm0tY29udHJvbCBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLmNoYXJ0UHJlY2lzaW9uPjwvZGl2PjxkaXYgbmctaWY9XCJmZC5QYXJhbWV0ZXJzLmNoYXJ0VHlwZS5uYW1lPT1cXCdzY3JpcHRcXCdcIiBjbGFzcz1cInAtMSBtYi0xXCI+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9XCJwbC0wIGxhYmVsLXhzIHRleHQtbXV0ZWRcIj5TY3JpcHQgZGF0YTo8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0YXJlYSBjbGFzcz1mb3JtLWNvbnRyb2wgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5zY3JpcHQ+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlBhcmFtZXRlcnMuY2hhcnRUeXBlLm5hbWU9PVxcJ2NvdW50ZXJcXCdcIiBjbGFzcz1wLTE+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9XCJwbC0wIGxhYmVsLXhzIHRleHQtbXV0ZWRcIj5DaGFydCBMYWJlbDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9Zm9ybS1jb250cm9sIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuY2hhcnRMYWJlbD48L2Rpdj48ZGl2PjxkaXYgY2xhc3M+PGxhYmVsIGNsYXNzPVwicGwtMCBsYWJlbC14cyB0ZXh0LW11dGVkXCI+VXNlIDEwMDBzIHNlcGFyYXRvcjwvbGFiZWw+IDxpbnB1dCBuZy1kaXNhYmxlZD1mZC5QYXJhbWV0ZXJzLmRpc2FibGVGb3JtYXR0aW5nIHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy51c2VHcm91cGluZ1NlcGFyYXRvcj48L2Rpdj48ZGl2IGNsYXNzPjxsYWJlbCBjbGFzcz1cInBsLTAgbGFiZWwteHMgdGV4dC1tdXRlZFwiPkRlY2ltYWwgUGxhY2VzPC9sYWJlbD4gPGlucHV0IG5nLWRpc2FibGVkPWZkLlBhcmFtZXRlcnMuZGlzYWJsZUZvcm1hdHRpbmcgdHlwZT10ZXh0IGNsYXNzPWZvcm0tY29udHJvbCBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLmNoYXJ0RnJhY3Rpb25EaWdpdHM+PC9kaXY+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9XCJwbC0wIGxhYmVsLXhzIHRleHQtbXV0ZWRcIj5EaXNhYmxlIGZvcm1hdHRpbmc8L2xhYmVsPiA8aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLmRpc2FibGVGb3JtYXR0aW5nPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M+PGxhYmVsIGNsYXNzPVwicGwtMCBsYWJlbC14cyB0ZXh0LW11dGVkXCI+Q291bnRlciBVbml0czwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9Zm9ybS1jb250cm9sIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuQ291bnRlclVuaXRzPjwvZGl2PjxkaXYgY2xhc3M+PGxhYmVsIGNsYXNzPVwicGwtMCBsYWJlbC14cyB0ZXh0LW11dGVkXCI+Q2hhcnQgZmlsdGVyaW5nIGZpZWxkPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1mb3JtLWNvbnRyb2wgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5jaGFydEZpbHRlckZpZWxkPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJcIj48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+Rm9udCBzaXplPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkZvbnRTaXplIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiPjwvZGl2PjxkaXYgY2xhc3M9bWItMT48bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkIGxhYmVsLXhzXCI+Q3NzIHN0eWxlPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLmNzc1N0eWxlPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdENvZGVzQWN0aW9ucy5odG1sJywnPGRpdiBjbGFzcz1weC0yPjxkaXYgaWQ9Y29kZUFjdGlvbnNEcmFndWxhIGNsYXNzPVwibGlzdCBncm91cFwiIGRyYWd1bGEtc2NvcGU9JHJvb3QgZHJhZ3VsYT1cIlxcJ2JhZy1hY3Rpb25zXFwnXCIgZHJhZ3VsYS1tb2RlbD1hY3Rpb25zIG5nLW1vZGVsPWFjdGlvbnM+PGRpdiBuZy1yZXBlYXQ9XCJhY3Rpb24gaW4gYWN0aW9ucyB0cmFjayBieSAkaW5kZXhcIiBjbGFzcz1saXN0LWNvbXBvbmVudC1saWJyYXJ5PjxkaXYgc3R5bGU9XCJib3JkZXI6IDJweCBzb2xpZCBncmF5O1wiIGNsYXNzPVwiZWxlbWVudC1kcmFnLWhhbmRsZSBpdGVtIG1iLTFcIiBocmVmPjxzcGFuIGNsYXNzPVwiZWxlbWVudC1kcmFnLWhhbmRsZSB0ZXh0LXByaW1hcnlcIj48aSBjbGFzcz1cImVsZW1lbnQtZHJhZy1oYW5kbGUgZmFzIGZhLWdyaXAtdmVydGljYWwgbXItMVwiPjwvaT4ge3thY3Rpb24ubmFtZTF9fTwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RDb2Rlc0RlZkFjdGlvbnMuaHRtbCcsJzxkaXYgY2xhc3NzPWNhcmQ+PGRpdiBjbGFzcyBuZy1pZj1sb2FkaW5nQWN0aW9ucyBrdC1wcm9jZXNzaW5nLWFuaW1hdGlvbiBzaG93LW1zZz10cnVlIG1lc3NhZ2U9XCJMb2FkaW5nIGFjdGlvbnMuLi5cIj48L2Rpdj48ZGl2IGNsYXNzPXJvdyBuZy1pZj1cImNvZGVzQWN0aW9ucy5zZWxlY3RlZEFjdGlvbkluZGV4PT0kaW5kZXggJiYgIWxvYWRpbmdBY3Rpb25zXCIgbmctcmVwZWF0PVwiY29kZSBpbiBjb2Rlc0FjdGlvbnMuY29kZXNBY3Rpb25zTGlzdCB0cmFjayBieSAkaW5kZXhcIj48ZGl2IGNsYXNzPWNvbC1hdXRvPjxkaXYgY2xhc3M9aXRlbT48ZGl2IGNsYXNzPVwic21hbGwgYm9sZCBwLTJcIj5EcmFnIGFjdGlvbnMgZnJvbSBoZXJlPC9kaXY+PGRpdiBrdC1jb2Rlcy1hY3Rpb25zPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgcC0yXCI+PGRpdiBjbGFzcz1cInRleHQtY2VudGVyIGJvbGRcIj5Ecm9wIEFjdGlvbnMgb24gY2FudmFzIGJlbGxvdzwvZGl2Pjx1bCBzdHlsZT1cImJvcmRlcjogZGFzaGVkIDJweDtcIiBjbGFzcz1cInAtMiBiZy1ncmF5LTUwXCIgbmctY2xhc3M9XCJ7XFwnbWluMTBcXCcgOiBjb2RlLmFjdGlvbnMubGVuZ3RoPT0wfVwiIGRyYWd1bGEtc2NvcGU9JHJvb3QgZHJhZ3VsYT1cIlxcJ2JhZy1hY3Rpb25zXFwnXCIgZHJhZ3VsYS1tb2RlbD1jb2RlLmFjdGlvbnMgbmctbW9kZWw9Y29kZS5hY3Rpb25zPjxsaSBuZy1yZXBlYXQ9XCJhY3QgaW4gY29kZS5hY3Rpb25zIHRyYWNrIGJ5ICRpbmRleFwiIGNsYXNzPVwiY2FyZCBtYi0xXCI+PGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHAtMCBiZy1saWdodFwiPjxhIGhyZWYgdGl0bGU9XCJTb3J0IGFjdGlvblwiPjxkaXYgY2xhc3M9XCJwLTEgZWxlbWVudC1kcmFnLWhhbmRsZSBwYi0wIGQtaW5saW5lIGJnLWRhcmsgdGV4dC13aGl0ZVwiPjxzcGFuIGNsYXNzPW1yLTI+QWN0aW9uIHt7JGluZGV4KzF9fSAtIHt7YWN0Lm5hbWUxfX08L3NwYW4+PGkgY2xhc3M9XCJmYXMgZmEtZ3JpcC12ZXJ0aWNhbCBlbGVtZW50LWRyYWctaGFuZGxlIHRleHQtcHJpbWFyeSBtbC0xXCI+PC9pPjwvZGl2PjwvYT4gPGEgY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1vdXRsaW5lLWRhbmdlciBib3JkZXItMCBmbG9hdC1yaWdodFwiIGhyZWYgdGl0bGU9XCJSZW1vdmUgYWN0aW9uXCIgbmctY2xpY2s9cmVtb3ZlQWN0aW9uKCRwYXJlbnQuJGluZGV4LCRpbmRleCk+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2E+PC9kaXY+PGRpdiBuZy1zd2l0Y2g9YWN0LnR5cGUgY2xhc3M9XCJib3JkZXIgYm9yZGVyLWRhcmtcIj48ZGl2IG5nLXN3aXRjaC13aGVuPTEga3QtYWN0aW9uLWluaXRpYXRlLXRhc2s+PC9kaXY+PGRpdiBuZy1zd2l0Y2gtd2hlbj0yIGt0LWFjdGlvbi1zZW5kLW5vdGlmaWNhdGlvbj48L2Rpdj48L2Rpdj48L2xpPjxsaT48ZGl2IGNsYXNzPVwibXQtMiBtbC00XCI+RHJvcCBoZXJlPGRpdj48aSBjbGFzcz1cImZhciBmYS0yeCBmYS1oYW5kLXBvaW50LXVwXCI+PC9pPjwvZGl2PjwvZGl2PjwvbGk+PC91bD48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RDb2Rlc0RldGFpbEVkaXQuaHRtbCcsJzxkaXYgbmctc2hvdz1jb2RlSWQgaWRkPWt0Q29kZXNEZXRhaWxFZGl0Pjxmb3JtIG5nLXN1Ym1pdD1zYXZlQ29kZXNEZXRhaWxzKCkgaWQ9Zm9ybUNvZGVzIG5hbWU9Zm9ybUNvZGVzIGNsYXNzPVwibXQtMiBmb3JtLWhvcml6b250YWxcIiByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2IGlkZD1EZXRhaWxzIGNsYXNzPjxkaXY+PGRpdiBzdHlsZT1cImJvcmRlci1ib3R0b206IHNvbGlkIDFweCBncmF5O1wiIGNsYXNzPVwicm93IG14LTEgdy0xMDBcIj48ZGl2IGNsYXNzPVwiY29sLTIgbXktMiBwbC0wXCI+PGxhYmVsIGNsYXNzPWJvbGQ+aWQ8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtNyBteS0yXCI+PGxhYmVsIGNsYXNzPWJvbGQ+VmFsdWU8L2xhYmVsPjwvZGl2PjxkaXYgbmctaWY9c2hvd0ljb25BY3RpdmUgY2xhc3M9XCJjb2wtNiBteS0yXCI+PGxhYmVsIGNsYXNzPWJvbGQ+TmFtZTwvbGFiZWw+PC9kaXY+PGRpdiBuZy1pZj1zaG93SWNvbkFjdGl2ZSBjbGFzcz1cImNvbC00IG15LTIgdGV4dC1jZW50ZXJcIj48bGFiZWwgY2xhc3M9Ym9sZD5JY29uPC9sYWJlbD48L2Rpdj48ZGl2IG5nLWlmPXNob3dJY29uQWN0aXZlIGNsYXNzPVwiY29sLTMgbXktMlwiPjxsYWJlbCBjbGFzcz1ib2xkPkFjdGl2ZTwvbGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBpZD1zY3JvbGxjb250YWluZXIgY2xhc3M9bXktMiBzdHlsZT1cIm92ZXJmbG93LXk6IHNjcm9sbDsgbWF4LWhlaWdodDogMjUwcHg7XCI+PGRpdiBuZy1yZXBlYXQ9XCJjb2RlSXRlbSBpbiBjb2Rlc0xpc3QgdHJhY2sgYnkgJGluZGV4XCI+PGRpdiBjbGFzcz1cInJvdyBteC0xIG15LTFcIj48ZGl2IGNsYXNzPVwiY29sLTIgcHgtMFwiPjxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBzdHlsZT1ib3JkZXI6bm9uZT48bm9icj57e2NvZGVJdGVtLmlkIHx8IFxcJypcXCd9fTwvbm9icj48L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtNyBweC0yIGFsaWduLWl0ZW1zLWNlbnRlclwiPjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9Y29kZUl0ZW0uVmFsdWUgbmctY2hhbmdlPVwiY29kZUl0ZW0uTmFtZT1jb2RlSXRlbS5WYWx1ZVwiIG5nLXJlcXVpcmVkPXRydWUgcGxhY2Vob2xkZXI9XCJDb2RlIFZhbHVlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+PC9kaXY+PGRpdiBuZy1pZj1zaG93SWNvbkFjdGl2ZSBjbGFzcz1cImNvbC03IHB4LTIgYWxpZ24taXRlbXMtY2VudGVyXCI+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1jb2RlSXRlbS5OYW1lIG5nLXJlcXVpcmVkPXRydWUgcGxhY2Vob2xkZXI9XCJJdGVtIG5hbWVcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48L2Rpdj48ZGl2IG5nLWlmPXNob3dJY29uQWN0aXZlIGNsYXNzPVwiY29sLTMgcHgtMSBhbGlnbi1pdGVtcy1jZW50ZXIgdGV4dC1jZW50ZXJcIj48ZGl2IGt0LWljb24tcGlja2VyIHRpdGxlPVRFU1QgdW5pcXVlLWlkPVwiJGluZGV4K1xcJ19cXCcrY29kZUl0ZW0uaWRcIiBzZWxlY3QtY29sb3JzPWZhbHNlIHNlbGVjdC1pY29ucz10cnVlIHNlbGVjdGVkLWljb249Y29kZUl0ZW0uUGFyYW1zLkljb24yIHNlbGVjdGVkLWJ1dHRvbj1jb2RlSXRlbS5QYXJhbXMuYnRuQ2xhc3M+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1zaG93SWNvbkFjdGl2ZSBjbGFzcz1cImNvbC0zIHB4LTEgYWxpZ24taXRlbXMtY2VudGVyIHRleHQtY2VudGVyXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gcC0wXCIgbmctY2xhc3M9XCJ7XFwnYnRuLW91dGxpbmUtc3VjY2Vzc1xcJzpjb2RlSXRlbS5BY3RpdmUsXFwnYnRuLW91dGxpbmUtZGFuZ2VyXFwnOiFjb2RlSXRlbS5BY3RpdmV9XCIgaHJlZiB0aXRsZT1TdGF0dXMgbmctY2xpY2s9XCJjb2RlSXRlbS5BY3RpdmU9IWNvZGVJdGVtLkFjdGl2ZVwiPjxpIGNsYXNzPXB4LTEgbmctY2xhc3M9XCJ7XFwnZmFzIGZhLWNoZWNrXFwnOmNvZGVJdGVtLkFjdGl2ZSxcXCdmYXMgZmEtdGltZXNcXCc6IWNvZGVJdGVtLkFjdGl2ZX1cIj48L2k+PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0xIHB4LTEgbWwtMiBhbGlnbi1pdGVtcy1jZW50ZXJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBwLTAgcHgtMVwiIHRpdGxlPVwiUmVtb3ZlIGNvZGVcIiBuZy1jbGljaz1yZW1vdmVDb2RlKCRpbmRleCk+PGkgY2xhc3M9XCJmYXMgZmEtdHJhc2gtYWx0XCI+PC9pPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMjQgcGItMiB0ZXh0LWNlbnRlclwiIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTpzb2xpZCAxcHhcIj48ZGl2IHN0eWxlPVwiZm50OCBib3JkZXI6bm9uZVwiIHR5cGU9YnV0dG9uIGlkPWFkZEJ0biBuZy1jbGljaz1hZGRFbXB0eUNvZGVJdGVtKCkgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1wbHVzXCI+PC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb250cm9sLWdyb3VwIG15LTNcIiBuZy1oaWRlPVwiZmFsc2UgJiYgQ29kZUhlYWQuaWQ+MFwiPjxidXR0b24gdHlwZT1zdWJtaXQgaWQ9c2F2ZUJ0biBuZy1kaXNhYmxlZD1mb3JtLiRpbnZhbGlkIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXN1Y2Nlc3NcIj48c3BhbiBjbGFzcz1cImZhIGZhLXNhdmUgbXItMlwiPjwvc3Bhbj4gU2F2ZSBjb2RlIGxpc3Q8L2J1dHRvbj48L2Rpdj48L2Zvcm0+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0Q29kZXNEZXRhaWxMaXN0Lmh0bWwnLCc8ZGl2IG5nLXNob3c9XCJjb2RlSWQ+MFwiIGNsYXNzPVwibW9kYWwgZmFkZSBiZC1leGFtcGxlLW1vZGFsLWxnXCIgaWQ9ZXhhbXBsZU1vZGFsQyB0YWJpbmRleD0tMSByb2xlPWRpYWxvZyBhcmlhLWxhYmVsbGVkYnk9ZXhhbXBsZU1vZGFsQ2VudGVyVGl0bGUgYXJpYS1oaWRkZW49dHJ1ZT48ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWxnXCIgcm9sZT1kb2N1bWVudD48ZGl2IGNsYXNzPW1vZGFsLWNvbnRlbnQgc3R5bGU9XCJtaW4taGVpZ2h0OiAxNTBweDtcIj48ZGl2IGNsYXNzPXRleHQtY2VudGVyIG5nLWhpZGU9Y29kZXNMb2FkZWQgc3R5bGU9cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTs+PGRpdiBjbGFzcz1sZHMtcmluZz48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcHktMVwiPjxkaXYgY2xhc3M9XCJtb2RhbC10aXRsZSBmbnQxMiBjb2wgbXgtMCBwLTAgbXktMlwiPjxpIGNsYXNzPVwiZmEgZmEtYmFyY29kZSBtci0yXCI+PC9pPiA8c3Bhbj57e2NvZGVOYW1lfX08L3NwYW4+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9Y2xvc2UgbmctY2xpY2s9dW5zZWxlY3RSb3dzKCkgZGF0YS1kaXNtaXNzPW1vZGFsIGFyaWEtbGFiZWw9Q2xvc2U+PHNwYW4gYXJpYS1oaWRkZW49dHJ1ZT5cXHhENzwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPjxkaXYgbmctc2hvdz10cnVlIG5nLWNsaWNrPXRvZ2dsZUVkaXRDb2RlcygpIHN0eWxlPWN1cnNvcjpwb2ludGVyOyBjbGFzcz1cImQtZmxleCBib3JkZXItYm90dG9tXCI+PGRpdiBjbGFzcz1wLTA+PGRpdiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biB0ZXh0LXByaW1hcnkgbXktMVwiPjxzcGFuIG5nLXNob3c9c2hvd0VkaXRDb2RlcyBjbGFzcz1cImZhIGZhLWNoZXZyb24tdXBcIj48L3NwYW4+IDxzcGFuIG5nLWhpZGU9c2hvd0VkaXRDb2RlcyBjbGFzcz1cImZhIGZhLWNoZXZyb24tcmlnaHRcIj48L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm1vZGFsLXRpdGxlIGZudDEwIHctMTAwIHAtMCBteC0wIG15LTJcIj48c3Bhbj5Db2RlcyBQYXJhbWV0ZXJzPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgbmctc2hvdz1zaG93RWRpdENvZGVzIGNsYXNzPXAtMiBpZD1FZGl0PjxkaXYgY2xhc3M9bXktMz48Zm9ybSBuZy1zdWJtaXQ9c2F2ZUNvZGVIZWFkKGNvZGVIZWFkRm9ybS4kdmFsaWQpIGlkPWNvZGVIZWFkIG5hbWU9Y29kZUhlYWRGb3JtIGNsYXNzPWZvcm0taG9yaXpvbnRhbCByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2IGNsYXNzPVwicm93IG1iLTNcIj48ZGl2IGNsYXNzPVwiY29sLTYgZm9ybS1ncm91cCByb3cgbWwtMlwiIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoY29kZUhlYWRGb3JtLiRzdWJtaXR0ZWQgfHwgY29kZUhlYWRGb3JtLnN0YXR1cy4kdG91Y2hlZCkgJmFtcDsmYW1wOyBjb2RlSGVhZEZvcm0uc3RhdHVzLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9XCJjb2wtbGctOCBtdC0xXCIgZm9yPWFjdGl2ZT5BY3RpdmU8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLWF1dG8+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y2hlY2tib3gtem9vbS1sYXJnZSBuZy1tb2RlbD1Db2RlSGVhZC5BY3RpdmUgbmFtZT1hY3RpdmUgbmctcmVxdWlyZWQ9ZmFsc2Ugc3R5bGU+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0xMiBmb3JtLWdyb3VwIHJvdyBtbC0yXCI+PGxhYmVsIGNsYXNzPVwiY29sLWxnLTkgbXQtMVwiIGZvcj1sYW5nPlVzZXIgZ2VuZXJhdGVkIGlkPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1sZy02PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPWNoZWNrYm94LXpvb20tbGFyZ2UgbmctbW9kZWw9Q29kZUhlYWQuVXNlckdlbmVyYXRlZElkIG5hbWU9dXNlckdlbmVyYXRlZElkIG5nLXJlcXVpcmVkPWZhbHNlPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHJvdyBtbC0yXCIgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChjb2RlSGVhZEZvcm0uJHN1Ym1pdHRlZCB8fCBjb2RlSGVhZEZvcm0uY29kZUlkLiR0b3VjaGVkKSAmJiBmb3JtLmNvZGVJZC4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1sZy02IGZvcj1jb2RlSWQ+Q29kZSBJRDwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctMTY+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1Db2RlSGVhZC5pZCBuZy1yZXF1aXJlZD10cnVlIG5nLWRpc2FibGVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPWNvZGVJZCBuYW1lPWNvZGVJZCBwbGFjZWhvbGRlcj1cIkNvZGUgSURcIj48cCBuZy1zaG93PVwiKGNvZGVIZWFkRm9ybS4kc3VibWl0dGVkIHx8IGNvZGVIZWFkRm9ybS5jb2RlSWQuJHRvdWNoZWQpICYmIGNvZGVIZWFkRm9ybS5jb2RlSWQuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIGNvZGUgaWQ8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcm93IG1sLTJcIiBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGNvZGVIZWFkRm9ybS4kc3VibWl0dGVkIHx8IGNvZGVIZWFkRm9ybS5jb2RlTmFtZS4kdG91Y2hlZCkgJiYgY29kZUhlYWRGb3JtLmNvZGVOYW1lLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTYgZm9yPWNvZGVOYW1lPkNvZGUgbmFtZTwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctMTY+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1Db2RlSGVhZC5Db2RlTmFtZSBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1jb2RlTmFtZSBuYW1lPWNvZGVOYW1lIHBsYWNlaG9sZGVyPVwiQ29kZSBuYW1lXCI+PHAgbmctc2hvdz1cIihjb2RlSGVhZEZvcm0uJHN1Ym1pdHRlZCB8fCBjb2RlSGVhZEZvcm0uY29kZU5hbWUuJHRvdWNoZWQpICYmIGNvZGVIZWFkRm9ybS5jb2RlTmFtZS4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIgY29kZSBuYW1lPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHJvdyBtbC0yXCIgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChjb2RlSGVhZEZvcm0uJHN1Ym1pdHRlZCB8fCBjb2RlSGVhZEZvcm0uQ29kZUhlYWROYW1lLiR0b3VjaGVkKSAmJiBjb2RlSGVhZEZvcm0uQ29kZUhlYWROYW1lLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTYgZm9yPWNvZGVIZWFkTmFtZT5Db2RlIHVuaXF1ZSBpZGVudGlmaWVyPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1sZy0xNj48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPUNvZGVIZWFkLkNvZGVIZWFkTmFtZSBuZy1yZXF1aXJlZD1mYWxzZSBjbGFzcz1mb3JtLWNvbnRyb2wgaWQ9Y29kZUhlYWROYW1lIG5hbWU9Y29kZUhlYWROYW1lIHBsYWNlaG9sZGVyPVwiQ29kZSB1bmlxdWUgaWRlbnRpZmllclwiPjxwIG5nLXNob3c9XCIoY29kZUhlYWRGb3JtLiRzdWJtaXR0ZWQgfHwgY29kZUhlYWRGb3JtLmNvZGVIZWFkTmFtZS4kdG91Y2hlZCkgJiYgY29kZUhlYWRGb3JtLmNvZGVIZWFkTmFtZS4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIgdW5pcXVlIGlkZW50aWZpZXIgKGFueSB0ZXh0IHVwIHRvIDI1NSBjaGFyYWN0ZXJzKTwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCByb3cgbWwtMlwiIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoY29kZUhlYWRGb3JtLiRzdWJtaXR0ZWQgfHwgY29kZUhlYWRGb3JtLmNvZGVEZXNjcmlwdGlvbi4kdG91Y2hlZCkgJiYgY29kZUhlYWRGb3JtLmNvZGVEZXNjcmlwdGlvbi4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1sZy02IGZvcj1jb2RlRGVzY3JpcHRpb24+Q29kZSBkZXNjcmlwdGlvbjwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctMTY+PHRleHRhcmVhIG5nLW1vZGVsPUNvZGVIZWFkLkRlc2NyaXB0aW9uIG5hbWU9Y29kZURlc2NyaXB0aW9uIG5nLXJlcXVpcmVkPXRydWUgbmctbWluLWxlbmd0aD0yMCBjbGFzcz1mb3JtLWNvbnRyb2w+PC90ZXh0YXJlYT48cCBuZy1zaG93PVwiKGNvZGVIZWFkRm9ybS4kc3VibWl0dGVkIHx8IGNvZGVIZWFkRm9ybS5jb2RlRGVzY3JpcHRpb24uJHRvdWNoZWQpICYmIGNvZGVIZWFkRm9ybS5jb2RlRGVzY3JpcHRpb24uJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIGNvZGUgZGVzY3JpcHRpb24obWluIDIwIGNoYXJzKS48L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcm93IG1sLTJcIiBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGNvZGVIZWFkRm9ybS4kc3VibWl0dGVkIHx8IGNvZGVIZWFkRm9ybS5jb2RlVHlwZS4kdG91Y2hlZCkgJiYgY29kZUhlYWRGb3JtLmNvZGVUeXBlLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTYgZm9yPWNvZGVUeXBlPkNvZGUgdHlwZTwvbGFiZWw+PGRpdiBuZy1mb3JtPUNvZGVUeXBlIGNsYXNzPWNvbC1sZy0xNj48a3QtZHJvcGRvd24tc3RhbmRhcmQgbmctaWY9XCJjb2RlVHlwZUxpc3QubGVuZ3RoPjBcIiBuZy1tb2RlbD1Db2RlSGVhZC5Db2RlVHlwZSBzZWxlY3RlZC1pdGVtcz1Db2RlSGVhZC5Db2RlVHlwZSBvbi1zZWxlY3QtZm49b25TZWxlY3RDYWxsYmFja0NvZGVUeXBlKGl0ZW0sbW9kZWwpIGlzLW11bHRpcGxlPWZhbHNlIG5hbWU9Y29kZVR5cGUgbmctcmVxdWlyZWQ9ZmFsc2UgZHJvcGRvd24taXRlbXM9Y29kZVR5cGVMaXN0IGRyb3Bkb3duLWlkPVwiXFwnY29kZVR5cGVcXCdcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ0NvZGVUeXBlXFwnXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgY29kZSB0eXBlLi5cXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjxwIG5nLXNob3c9XCIoY29kZUhlYWRGb3JtLiRzdWJtaXR0ZWQgfHwgY29kZUhlYWRGb3JtLmNvZGVUeXBlLiR0b3VjaGVkKSAmJiBjb2RlSGVhZEZvcm0uY29kZVR5cGUuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPlNlbGVjdCBjb2RlIHR5cGU8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbnRyb2wtZ3JvdXAgcHgtM1wiPjxidXR0b24gdHlwZT1zdWJtaXQgaWQ9Y2xlYXJCdG4gbmctZGlzYWJsZWQ9Y29kZUhlYWRGb3JtLiRpbnZhbGlkIGNsYXNzPVwiYnRuIGJ0bi1saWdodFwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtc2F2ZSBtci0yXCI+PC9zcGFuPlNhdmUgY29kZTwvYnV0dG9uPjwvZGl2PjwvZm9ybT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPjxkaXYgbmctc2hvdz1jb2Rlc0xvYWRlZCBuZy1jbGljaz10b2dnbGVMaXN0Q29kZXMoKSBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIiBjbGFzcz1cImQtZmxleCBib3JkZXItYm90dG9tXCI+PGRpdiBjbGFzcz1wLTA+PGRpdiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biB0ZXh0LXByaW1hcnkgbXktMVwiPjxzcGFuIG5nLWhpZGU9c2hvd0xpc3RDb2RlcyBjbGFzcz1cImZhIGZhLWNoZXZyb24tcmlnaHRcIj48L3NwYW4+IDxzcGFuIG5nLXNob3c9c2hvd0xpc3RDb2RlcyBjbGFzcz1cImZhIGZhLWNoZXZyb24tZG93blwiPjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGUgZm50MTAgdy0xMDAgbXgtMCBwLTAgbXktMlwiPjxzcGFuPkNvZGVzIExpc3Q8L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1zaG93PXNob3dMaXN0Q29kZXM+PGZvcm0gbmctc2hvdz1jb2Rlc0xvYWRlZCBuZy1zdWJtaXQ9c2F2ZUNvZGVzRGV0YWlscygpIGlkPWZvcm1Db2RlcyBuYW1lPWZvcm1Db2RlcyBjbGFzcz1cIm0tNCBmb3JtLWhvcml6b250YWxcIiByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2IGlkPVRpdGxlIGNsYXNzPVwidGV4dC1jZW50ZXIgbW9kYWwtdGl0bGUgZm50MTIgY29sIG15LTNcIj48L2Rpdj48ZGl2IGlkPURldGFpbHMgY2xhc3M+PGRpdiBuZy1pZj1cImNvZGVzRGV0YWlscy5sZW5ndGg+MFwiIG5nLW1vZGVsPWNvZGVzRGV0YWlscz48ZGl2IHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogc29saWQgMXB4IGdyYXk7XCIgY2xhc3M9XCJyb3cgbXgtNFwiPjxkaXYgY2xhc3M9XCJjb2wtMyBteS0yXCI+PGxhYmVsIGNsYXNzPWJvbGQ+aWQ8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMTIgbXktMlwiPjxsYWJlbCBjbGFzcz1ib2xkPk5hbWU8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMiBteS0yIHRleHQtY2VudGVyXCI+PGxhYmVsIGNsYXNzPWJvbGQ+SWNvbjwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0yIG15LTIgdGV4dC1jZW50ZXJcIj48bGFiZWwgY2xhc3M9Ym9sZD5BY3RpdmU8L2xhYmVsPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9bXktND48ZGl2IG5nLXJlcGVhdD1cImNvZGVJdGVtIGluIGNvZGVzRGV0YWlscyB0cmFjayBieSAkaW5kZXhcIj48ZGl2IGNsYXNzPVwicm93IG14LTQgbXktMVwiPjxkaXYgY2xhc3M9XCJjb2wtMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj48bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgc3R5bGU9Ym9yZGVyOm5vbmU+e3tjb2RlSXRlbS5pZH19PC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTEyIHB4LTEgYWxpZ24taXRlbXMtY2VudGVyXCI+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1jb2RlSXRlbS5WYWx1ZSBuZy1jaGFuZ2U9XCJjb2RlSXRlbS5OYW1lPWNvZGVJdGVtLlZhbHVlXCIgbmctcmVxdWlyZWQ9dHJ1ZSBwbGFjZWhvbGRlcj1cIkNvZGUgVmFsdWVcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTIgcHgtMSBhbGlnbi1pdGVtcy1jZW50ZXIgdGV4dC1jZW50ZXJcIj48ZGl2IGt0LWljb24tcGlja2VyIHRpdGxlPVRFU1QgdW5pcXVlLWlkPVwiJGluZGV4K1xcJ19cXCcrY29kZUl0ZW0uaWRcIiBzZWxlY3QtY29sb3JzPWZhbHNlIHNlbGVjdC1pY29ucz10cnVlIHNlbGVjdGVkLWljb249Y29kZUl0ZW0uUGFyYW1zLkljb24gc2VsZWN0ZWQtYnV0dG9uPWNvZGVJdGVtLlBhcmFtcy5idG5DbGFzcz48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTIgcHgtMSBhbGlnbi1pdGVtcy1jZW50ZXIgdGV4dC1jZW50ZXJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBwLTBcIiBuZy1jbGFzcz1cIntcXCdidG4tb3V0bGluZS1zdWNjZXNzXFwnOmNvZGVJdGVtLkFjdGl2ZSxcXCdidG4tb3V0bGluZS1kYW5nZXJcXCc6IWNvZGVJdGVtLkFjdGl2ZX1cIiBocmVmIHRpdGxlPVN0YXR1cyBuZy1jbGljaz1cImNvZGVJdGVtLkFjdGl2ZT0hY29kZUl0ZW0uQWN0aXZlXCI+PGkgY2xhc3M9cHgtMSBuZy1jbGFzcz1cIntcXCdmYXMgZmEtY2hlY2tcXCc6Y29kZUl0ZW0uQWN0aXZlLFxcJ2ZhcyBmYS10aW1lc1xcJzohY29kZUl0ZW0uQWN0aXZlfVwiPjwvaT48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTQgcHgtMSBtbC0yIGFsaWduLWl0ZW1zLWNlbnRlciB0ZXh0LXJpZ2h0XCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gcC0wIHB4LTFcIiB0aXRsZT1cIlJlbW92ZSBjb2RlXCIgbmctY2xpY2s9cmVtb3ZlQ29kZSgkaW5kZXgpPjxpIGNsYXNzPVwiZmFzIGZhLXRyYXNoLWFsdFwiPjwvaT48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIG15LTEgdGV4dC1jZW50ZXJcIj48ZGl2IHN0eWxlPVwiYm9yZGVyOm5vbmU7bWFyZ2luLWxlZnQ6IC0xMDBweDtcIiB0eXBlPWJ1dHRvbiBpZD1jbGVhckJ0biBuZy1jbGljaz1hZGRFbXB0eUNvZGVJdGVtKCkgY2xhc3M9XCJidG4gYnRuLWxnIGJ0bi1vdXRsaW5lLXByaW1hcnlcIj48c3BhbiBjbGFzcz1cImZhIGZhLXBsdXNcIj48L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCBteS0xXCI+PGRpdiBjbGFzcz1teS0yPjxidXR0b24gdHlwZT1zdWJtaXQgaWQ9c3VibWl0QnRuIG5nLWRpc2FibGVkPVwiZm9ybUNvZGVzLiRpbnZhbGlkIHx8IGNvZGVEZXRhaWxzLmxlbmd0aD4wXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtc2F2ZVwiPjwvc3Bhbj4mbmJzcCBTYXZlIGNvZGVzPC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JtPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdENvZGVzRHJvcGRvd24uaHRtbCcsJzxkaXYgY2xhc3M9bWItMT48ZGl2IG5nLWlmPWxhYmVsIG5nLWNsYXNzPWxhYmVsTGVuZ3RoPjxsYWJlbCBjbGFzcz1ib3JkZXItMCBmb3I9e3tuYW1lfX0gbmctY2xhc3M9XCJ7XFwnbGFiZWwteHMgdGV4dC1tdXRlZFxcJzpzaXplWHN9XCI+e3tsYWJlbH19PC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPVwicm93IGZvcm0tZ3JvdXAgbS0wIG1iLTFcIiBuZy1mb3JtPWlubmVyRm9ybT48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHAtMFwiPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBzaXplPVwiXFwnc21hbGxcXCdcIiBuZy1tb2RlbD1zZWxlY3RlZENvZGUgc2VsZWN0ZWQtaXRlbXM9c2VsZWN0ZWRDb2RlIGRyb3Bkb3duLWlkPVwiXFwnY29kZUxpc3RcXCcraXRlbS5pZFwiIHBhcmVudC1mb3JtLWlkPVwiXFwnY29kZUxpc3RcXCcraXRlbS5pZFwiIGRyb3Bkb3duLWl0ZW1zPWxvY2FsVmFycy5jb2RlTGlzdCBpcy1tdWx0aXBsZT1mYWxzZSBuYW1lPXt7bmFtZX19IHJlcXVpcmVkPWZhbHNlIHNlYXJjaC10ZXh0PVwiXFwnU2VhcmNoIG9yIHNlbGVjdCB1c2VyLi4uXFwnXCI+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48L2Rpdj48L2Rpdj48a3QtZHJvcGRvd24tc3RhbmRhcmQgbmctbW9kZWw9ZmQuc2VsZWN0ZWRSZXNvdXJjZSBzaXplPVwiXFwnc21hbGxcXCdcIiBzZWxlY3RlZC1pdGVtcz1mZC5zZWxlY3RlZFJlc291cmNlIG5nLWlmPWZkLlJlbGF0ZWRMb2FkZWQgb24tc2VsZWN0LWZuPWZkLm9uU2VsZWN0Q2FsbGJhY2soaXRlbSxtb2RlbCkgaXMtbXVsdGlwbGU9ZmFsc2UgbmFtZT1zZWxlY3RlZERhdGFzZXR7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctcmVxdWlyZWQ9dHJ1ZSBkcm9wZG93bi1pdGVtcz1mZC5yZXNvdXJjZXNMaXN0IGRyb3Bkb3duLWlkPVwiXFwnc2VsZWN0ZWREYXRhc2V0XFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgcGFyZW50LWZvcm0taWQ9XCJcXCdzZWxlY3RlZERhdGFzZXRcXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCBkYXRhc2V0XFwnXCI+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3REYXRhc2V0TWFwcGVyLmh0bWwnLCc8ZGl2IGlkPWt0RGF0YXNldE1hcHBlcnt7ZmQuUHJlc2VudGF0aW9uSWR9fSBjbGFzcz1cImNhcmQgYm9yZGVyLTBcIj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgbmctaWY9XCJmZC5sb2NhbFZhcnMucmVzb3VyY2VUeXBlc0xpc3QubGVuZ3RoPjBcIiBjbGFzcz1cImNvbC1sZy0yNCBteS0yXCI+PHNwYW4gY2xhc3M9aDY+U2VsZWN0IHJlc291cmNlIHR5cGU8L3NwYW4+PC9kaXY+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5yZXNvdXJjZVR5cGVzTGlzdC5sZW5ndGg+MFwiIGNsYXNzPWNvbC1sZy0yND48ZGl2IG5nLXJlcGVhdD1cInJ0IGluIGZkLmxvY2FsVmFycy5yZXNvdXJjZVR5cGVzTGlzdFwiIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZVwiPjxsYWJlbCBjbGFzcz1mb3JtLWNoZWNrLWxhYmVsPjxpbnB1dCB0eXBlPXJhZGlvIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuU2VsZWN0ZWRSZXNvdXJjZVR5cGUgdmFsdWU9e3tydC50eXBlfX0gbmctY2xpY2s9ZmQubG9jYWxWYXJzLmdldFJlc291cmNlcyhydC50eXBlKT4ge3tydC5uYW1lfX08L2xhYmVsPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9ZmQuUGFyYW1ldGVycy5TZWxlY3RlZFJlc291cmNlVHlwZSBjbGFzcz1cImNvbC0yNCBtdC0yXCI+PHNwYW4gY2xhc3M9XCJoNiB0ZXh0LWRhcmtcIj5TZWxlY3Qge3tmZC5QYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlfX08L3NwYW4+PC9kaXY+PGRpdiBuZy1pZj1mZC5QYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlIGNsYXNzPVwiY29sLTEyIG10LTJcIiBuZy1mb3JtPWlubmVyRm9ybTF7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGRpdj48a3QtZHJvcGRvd24tc3RhbmRhcmQgbmctaWY9XCJmZC5sb2NhbFZhcnMucmVzb3VyY2VMaXN0Lmxlbmd0aD4wXCIgaXMtbXVsdGlwbGU9ZmFsc2UgbmctbW9kZWw9ZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtIHNlbGVjdGVkLWl0ZW1zPWZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbSByZXF1aXJlZC1maWVsZD10cnVlIGRyb3Bkb3duLWl0ZW1zPWZkLmxvY2FsVmFycy5yZXNvdXJjZUxpc3QgZHJvcGRvd24taWQ9XCJcXCdyZXNvdXJjZVxcJytmZC5OYW1lK2ZkLkl0ZW1JZFwiIHBhcmVudC1mb3JtLWlkPVwiXFwnaW5uZXJGb3JtMVxcJytmZC5QcmVzZW50YXRpb25JZFwiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IFxcJytmZC5QYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlXCIgb24tc2VsZWN0LWZuPWZkLmxvY2FsVmFycy5vblNlbGVjdFJlc291cmNlQ2FsbGJhY2soaXRlbSxtb2RlbCk+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48ZGl2IG5nLWlmPVwiZmQubG9jYWxWYXJzLnJlc291cmNlTGlzdC5sZW5ndGg9PTBcIj5ObyB7e2ZkLlBhcmFtZXRlcnMuU2VsZWN0ZWRSZXNvdXJjZVR5cGV9fXMgITwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLTI0IG5nLWlmPWZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5pZD48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWwgZm9yPWNiVmVyc2lvbnt7ZmQuUHJlc2VudGF0aW9uSWR9fT48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCIgbmFtZT1jYlZlcnNpb257e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5TZWxlY3RWZXJzaW9uRGlyZWN0IG5nLWNoZWNrZWQ9ZmQuUGFyYW1ldGVycy5TZWxlY3RWZXJzaW9uRGlyZWN0IG5nLWNsaWNrPWZkLmxvY2FsVmFycy5nZXRQdWJsaXNoZWRSZXNvdXJjZXMoIWZkLlBhcmFtZXRlcnMuU2VsZWN0VmVyc2lvbkRpcmVjdCk+IFNlbGVjdCB7e2ZkLlBhcmFtZXRlcnMuU2VsZWN0ZWRSZXNvdXJjZVR5cGV9fSB2ZXJzaW9uIG1hbnVhbGx5IChpZiBub3QgY2hlY2tlZCBsYXRlc3QgcHVibGlzaGVkIHZlcnNpb24gd2lsbCBiZSB1c2VkKTwvbGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTBcIiBuZy1pZj1mZC5QYXJhbWV0ZXJzLlNlbGVjdFZlcnNpb25EaXJlY3Q+PGRpdiBjbGFzcz1cImNvbC0yNCBtdC0yXCI+PHNwYW4gY2xhc3M9XCJoNiB0ZXh0LWRhcmtcIj5TZWxlY3QgdmVyc2lvbjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTEyIG10LTJcIiBuZy1mb3JtPWlubmVyRm9ybTJ7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLWlmPVwiZmQubG9jYWxWYXJzLnB1Ymxpc2hlZFJlc291cmNlTGlzdC5sZW5ndGg+MFwiIGlzLW11bHRpcGxlPWZhbHNlIG5nLW1vZGVsPWZkLmxvY2FsVmFycy5zZWxlY3RlZFB1Ymxpc2hlZFJlc291cmNlIHNlbGVjdGVkLWl0ZW1zPWZkLmxvY2FsVmFycy5zZWxlY3RlZFB1Ymxpc2hlZFJlc291cmNlIHJlcXVpcmVkLWZpZWxkPXRydWUgZHJvcGRvd24taXRlbXM9ZmQubG9jYWxWYXJzLnB1Ymxpc2hlZFJlc291cmNlTGlzdCBkcm9wZG93bi1pZD1cIlxcJ3ZlcnNpb25cXCcrZmQuTmFtZStmZC5JdGVtSWRcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2lubmVyRm9ybTJcXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCB2ZXJzaW9uXFwnXCIgb24tc2VsZWN0LWZuPWZkLmxvY2FsVmFycy5vblNlbGVjdFZlcnNpb25DYWxsYmFjayhpdGVtLG1vZGVsKT48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjxkaXYgbmctaWY9XCJmZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0Lmxlbmd0aD09MFwiPk5vIHB1Ymxpc2hlZCB7e2ZkLlBhcmFtZXRlcnMuU2VsZWN0ZWRSZXNvdXJjZVR5cGV9fXMgITwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCIhZmQubG9jYWxWYXJzLmhpZGVQb3B1bGF0ZU1ldGhvZCAmJiBmZC5QYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlXCIgY2xhc3M9XCJyb3cgbS0wIG15LTMgdGV4dC1kYXJrXCI+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PHNwYW4gY2xhc3M9aDY+Q2hvb3NlIHRoZSBzb3VyY2Ugb2YgZGF0YTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0yND48ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZVwiPjxsYWJlbCBjbGFzcz1mb3JtLWNoZWNrLWxhYmVsPjxpbnB1dCBjbGFzcz1mb3JtLWNoZWNrLWlucHV0IHZhbHVlPUEgdHlwZT1yYWRpbyBkYXRhLW5nLW1vZGVsPWZkLlBvcHVsYXRlTWV0aG9kPiBBdXRvbWF0aWMgZGF0YSBtYXBwaW5nPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZVwiPjxsYWJlbCBjbGFzcz1mb3JtLWNoZWNrLWxhYmVsPjxpbnB1dCBjbGFzcz1mb3JtLWNoZWNrLWlucHV0IHZhbHVlPU0gdHlwZT1yYWRpbyBkYXRhLW5nLW1vZGVsPWZkLlBvcHVsYXRlTWV0aG9kPiBNYW51YWwgZW50cnkgKHVzaW5nIHRoZSBmb3JtKTwvbGFiZWw+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlBvcHVsYXRlTWV0aG9kPT1cXCdNXFwnXCIgY2xhc3M9XCJyb3cgbS0wIG15LTEgdGV4dC1kYXJrXCI+PGRpdiBjbGFzcz1jb2wtMjQ+PGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZFwiPlByb2Nlc3MgYWZ0ZXIgd2lkZ2V0PC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1mZC5TcmNXaWRnZXRJZD48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwiZmQuUG9wdWxhdGVNZXRob2Q9PVxcJ0FcXCdcIiBjbGFzcz1cInJvdyBtLTAgbXktMSB0ZXh0LWRhcmtcIj48ZGl2IGNsYXNzPWNvbC0yND48aDY+U2VsZWN0IHNvdXJjZSBvZiBkYXRhPC9oNj48L2Rpdj48ZGl2IGNsYXNzPWNvbC02PjxkaXYgY2xhc3M9XCJiZy1ncmF5LTEwMCByb3cgbS0wIHAtMSB0ZXh0LWNlbnRlclwiPjxkaXYgY2xhc3M9Y29sPjxiPlByZXZpb3VzIFJlc291cmNlPC9iPjwvZGl2PjxkaXYgY2xhc3M9Y29sLWF1dG8+PGEgaHJlZiB0aXRsZT1cIkNsaWNrIHRvIHNlbGVjdCBwcmV2aW91cyB0YXNrXCI+PGkgbmctY2xhc3M9XCJ7XFwnZmFyIGZhLXNxdWFyZSBmYS1sZyBtbC0zIHRleHQtZGFuZ2VyXFwnOmZkLlJlbGF0ZWRQb3B1bGF0ZVR5cGUhPVxcJzNcXCcsXFwnZmFyIGZhLWNoZWNrLXNxdWFyZSBmYS1sZyBtbC0zIHRleHQtc3VjY2Vzc1xcJzpmZC5SZWxhdGVkUG9wdWxhdGVUeXBlPT1cXCczXFwnfVwiIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5zZXRTZWxlY3RlZFNvdXJjZSgtMSk+PC9pPjwvYT48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbD48ZGl2IGNsYXNzPVwiYmctZ3JheS0xMDAgcm93IG0tMCBwLTEgdGV4dC1jZW50ZXJcIj48ZGl2IGNsYXNzPWNvbC1hdXRvPjxiPlRoaXMgUmVzb3VyY2U8L2I+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LXJpZ2h0XCI+PGEgaHJlZiB0aXRsZT1cIkNsaWNrIHRvIHNlbGVjdCBwcmV2aW91cyB0YXNrXCI+PGkgbmctY2xhc3M9XCJ7XFwnZmFyIGZhLXNxdWFyZSBmYS1sZyBtbC0zIHRleHQtZGFuZ2VyXFwnOmZkLlJlbGF0ZWRQb3B1bGF0ZVR5cGUhPVxcJzJcXCcsXFwnZmFyIGZhLWNoZWNrLXNxdWFyZSBmYS1sZyBtbC0zIHRleHQtc3VjY2Vzc1xcJzpmZC5SZWxhdGVkUG9wdWxhdGVUeXBlPT1cXCcyXFwnfVwiIG5nLWNsaWNrPVwiZmQuUmVsYXRlZFBvcHVsYXRlVHlwZT1cXCcyXFwnXCI+PC9pPjwvYT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPW15LTIgbmctaWY9XCJmZC5SZWxhdGVkUG9wdWxhdGVUeXBlPT1cXCcyXFwnXCI+PGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZFwiPldpZGdldCBpZDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgbmctbW9kZWw9ZmQuU3JjV2lkZ2V0SWQ+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBwLTIgbS0wIG10LTJcIj48ZGl2PjxidXR0b24gbmctZGlzYWJsZWQ9XCIhKGZkLmxvY2FsVmFycy5wdWJsaXNoZWRMb2FkZWQgJiYgKChmZC5QYXJhbWV0ZXJzLlNlbGVjdFZlcnNpb25EaXJlY3QgJiYgZmQubG9jYWxWYXJzLnNlbGVjdGVkUHVibGlzaGVkUmVzb3VyY2UuaWQ+MCkgfHwgIWZkLlBhcmFtZXRlcnMuU2VsZWN0VmVyc2lvbkRpcmVjdCkpXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgdHlwZT1idXR0b24gbmctY2xpY2s9ZmQubG9jYWxWYXJzLmNvbmZpcm0oKT48c3BhbiBuZy1pZj1cImZkLmxvY2FsVmFycy5wdWJsaXNoZWRMb2FkZWQgJiYgKChmZC5QYXJhbWV0ZXJzLlNlbGVjdFZlcnNpb25EaXJlY3QgJiYgZmQubG9jYWxWYXJzLnNlbGVjdGVkUHVibGlzaGVkUmVzb3VyY2UuaWQ+MCkgfHwgIWZkLlBhcmFtZXRlcnMuU2VsZWN0VmVyc2lvbkRpcmVjdClcIj5Db25maXJtIHNlbGVjdGlvbjwvc3Bhbj4gPHNwYW4gbmctaWY9XCIhKGZkLmxvY2FsVmFycy5wdWJsaXNoZWRMb2FkZWQgJiYgKChmZC5QYXJhbWV0ZXJzLlNlbGVjdFZlcnNpb25EaXJlY3QgJiYgZmQubG9jYWxWYXJzLnNlbGVjdGVkUHVibGlzaGVkUmVzb3VyY2UuaWQ+MCkgfHwgIWZkLlBhcmFtZXRlcnMuU2VsZWN0VmVyc2lvbkRpcmVjdCkpXCI+U2VsZWN0aW5nIHJlc291cmNlLi4uPC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdERhdGFzZXRNYXBwZXJQYXJlbnQuaHRtbCcsJzxkaXY+PGRpdiBjbGFzcz1cIm0tMiByb3cgcHktMlwiPjxkaXY+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYkhhc1BhcmVudHt7Z3NydmMucGFyZW50UmVzb3VyY2VbZmQuVXVpZFJlZl0uUHJlc2VudGF0aW9uSWR9fT48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCIgbmFtZT1jYkhhc1BhcmVudHt7Z3NydmMucGFyZW50UmVzb3VyY2VbZmQuVXVpZFJlZl0uUHJlc2VudGF0aW9uSWR9fSBuZy1tb2RlbD1nc3J2Yy5wYXJlbnRSZXNvdXJjZVtmZC5VdWlkUmVmXS5IYXNQYXJlbnREYXRhc2V0IG5nLWNoZWNrZWQ9Z3NydmMucGFyZW50UmVzb3VyY2VbZmQuVXVpZFJlZl0uSGFzUGFyZW50RGF0YXNldD4gVGhpcyBpcyBhIGNoaWxkIHJlY29yZCAoY2hlY2sgYW5kIHNlbGVjdCBwYXJlbnQgZGF0YXNldCk8L2xhYmVsPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9Z3NydmMucGFyZW50UmVzb3VyY2VbZmQuVXVpZFJlZl0uSGFzUGFyZW50RGF0YXNldCBjbGFzcz1cIm0tMiBwLTJcIj48ZGl2IGNsYXNzPVwibS0xIHAtMVwiIG5nLWlmPWdzcnZjLnBhcmVudFJlc291cmNlW2ZkLlV1aWRSZWZdLnJlc291cmNlTGlzdFBhcmVudERvd25sb2FkZWQ+PGRpdiBjbGFzcz1oNj5TZWxlY3QgcGFyZW50IHJlc291cmNlPC9kaXY+PGRpdiBuZy1mb3JtPWlubmVyRm9ybVBhcmVudFJlc291cmNle3tnc3J2Yy5wYXJlbnRSZXNvdXJjZVtmZC5VdWlkUmVmXS5QcmVzZW50YXRpb25JZH19PjxrdC1kcm9wZG93bi1zdGFuZGFyZCBpcy1tdWx0aXBsZT1mYWxzZSBuZy1tb2RlbD1nc3J2Yy5wYXJlbnRSZXNvdXJjZVtmZC5VdWlkUmVmXS5zZWxlY3RlZFJlc291cmNlUGFyZW50IHNlbGVjdGVkLWl0ZW1zPWdzcnZjLnBhcmVudFJlc291cmNlW2ZkLlV1aWRSZWZdLnNlbGVjdGVkUmVzb3VyY2VQYXJlbnQgcmVxdWlyZWQtZmllbGQ9ZmFsc2UgZHJvcGRvd24taXRlbXM9Z3NydmMucGFyZW50UmVzb3VyY2VbZmQuVXVpZFJlZl0ucmVzb3VyY2VMaXN0UGFyZW50IGRyb3Bkb3duLWlkPVwiXFwncmVzb3VyY2VQYXJlbnRcXCcrZ3NydmMucGFyZW50UmVzb3VyY2VbZmQuVXVpZFJlZl0uUHJlc2VudGF0aW9uSWRcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2lubmVyRm9ybVBhcmVudFJlc291cmNlXFwnK2dzcnZjLnBhcmVudFJlc291cmNlW2ZkLlV1aWRSZWZdLlByZXNlbnRhdGlvbklkXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgcGFyZW50IHJlc291cmNlXFwnXCIgb24tc2VsZWN0LWZuPW9uU2VsZWN0UmVzb3VyY2VQYXJlbnRDYWxsYmFjayhpdGVtLG1vZGVsKT48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjxkaXYgbmctaWY9XCJnc3J2Yy5wYXJlbnRSZXNvdXJjZVtmZC5VdWlkUmVmXS5yZXNvdXJjZUxpc3RQYXJlbnQubGVuZ3RoPT0wXCI+Tm8gcGFyZW50IHJlc291cmNlcyAhPC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTEgbXktM1wiPjxkaXYgY2xhc3M9XCJjb2wtMjQgcC0xXCI+PHNwYW4gY2xhc3M9aDY+Q2hvb3NlIHBhcmVudCBkYXRhc2V0IHJlY29yZDwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPWNvbC0yND48ZGl2IGNsYXNzPW15LTE+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgbXktYXV0b1wiPjxpbnB1dCB0eXBlPXJhZGlvIG5nLW1vZGVsPWdzcnZjLnBhcmVudFJlc291cmNlW2ZkLlV1aWRSZWZdLlBvcHVsYXRlUGFyZW50TWV0aG9kIHZhbHVlPUE+IEF1dG8gc2VsZWN0IHBhcmVudCByZWNvcmQ8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9bWItMT48bGFiZWwgY2xhc3M9bGFiZWwteHM+PGlucHV0IHR5cGU9cmFkaW8gbmctbW9kZWw9Z3NydmMucGFyZW50UmVzb3VyY2VbZmQuVXVpZFJlZl0uUG9wdWxhdGVQYXJlbnRNZXRob2QgdmFsdWU9TT4gTWFudWFsbHkgc2VsZWN0IHBhcmVudCByZWNvcmQgKHVzaW5nIHRoZSBzZWFyY2ggZm9ybSk8L2xhYmVsPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJnc3J2Yy5wYXJlbnRSZXNvdXJjZVtmZC5VdWlkUmVmXS5Qb3B1bGF0ZVBhcmVudE1ldGhvZD09XFwnQVxcJ1wiIGNsYXNzPVwicm93IG0tMCBteS0xIHRleHQtZGFya1wiPjxkaXYgY2xhc3M9Y29sLTI0PjxoNj5TZWxlY3Qgc291cmNlIG9mIGRhdGE8L2g2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTEwPjxkaXYgY2xhc3M9XCJiZy1ncmF5LTEwMCByb3cgbS0wIHAtMSB0ZXh0LWNlbnRlclwiPjxkaXYgY2xhc3M9Y29sLWF1dG8+PGI+UHJldmlvdXMgUmVzb3VyY2U8L2I+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LXJpZ2h0XCI+PGEgaHJlZiB0aXRsZT1cIkNsaWNrIHRvIHNlbGVjdCBwcmV2aW91cyB0YXNrXCI+PGkgbmctY2xhc3M9XCJ7XFwnZmFyIGZhLXNxdWFyZSBmYS1sZyBtbC0zIHRleHQtZGFuZ2VyXFwnOmdzcnZjLnBhcmVudFJlc291cmNlW2ZkLlV1aWRSZWZdLlBvcHVsYXRlVHlwZVBhcmVudExvY2FsIT1cXCczXFwnLFxcJ2ZhciBmYS1jaGVjay1zcXVhcmUgZmEtbGcgbWwtMyB0ZXh0LXN1Y2Nlc3NcXCc6Z3NydmMucGFyZW50UmVzb3VyY2VbZmQuVXVpZFJlZl0uUG9wdWxhdGVUeXBlUGFyZW50TG9jYWw9PVxcJzNcXCd9XCIgbmctY2xpY2s9XCJnc3J2Yy5wYXJlbnRSZXNvdXJjZVtmZC5VdWlkUmVmXS5Qb3B1bGF0ZVR5cGVQYXJlbnRMb2NhbD1cXCczXFwnXCI+PC9pPjwvYT48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0xND48ZGl2IGNsYXNzPVwiYmctZ3JheS0xMDAgcm93IG0tMCBwLTEgdGV4dC1jZW50ZXJcIj48ZGl2IGNsYXNzPWNvbC1hdXRvPjxiPlRoaXMgUmVzb3VyY2U8L2I+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LXJpZ2h0XCI+PGEgaHJlZiB0aXRsZT1cIkNsaWNrIHRvIHNlbGVjdCBwcmV2aW91cyB0YXNrXCI+PGkgbmctY2xhc3M9XCJ7XFwnZmFyIGZhLXNxdWFyZSBmYS1sZyBtbC0zIHRleHQtZGFuZ2VyXFwnOmdzcnZjLnBhcmVudFJlc291cmNlW2ZkLlV1aWRSZWZdLlBvcHVsYXRlVHlwZVBhcmVudExvY2FsIT1cXCcyXFwnLFxcJ2ZhciBmYS1jaGVjay1zcXVhcmUgZmEtbGcgbWwtMyB0ZXh0LXN1Y2Nlc3NcXCc6Z3NydmMucGFyZW50UmVzb3VyY2VbZmQuVXVpZFJlZl0uUG9wdWxhdGVUeXBlUGFyZW50TG9jYWw9PVxcJzJcXCd9XCIgbmctY2xpY2s9XCJnc3J2Yy5wYXJlbnRSZXNvdXJjZVtmZC5VdWlkUmVmXS5Qb3B1bGF0ZVR5cGVQYXJlbnRMb2NhbD1cXCcyXFwnXCI+PC9pPjwvYT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPW15LTIgbmctaWY9XCJnc3J2Yy5wYXJlbnRSZXNvdXJjZVtmZC5VdWlkUmVmXS5Qb3B1bGF0ZVR5cGVQYXJlbnRMb2NhbD09XFwnMlxcJ1wiPjxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWRcIj5XaWRnZXQgaWQ8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWdzcnZjLnBhcmVudFJlc291cmNlW2ZkLlV1aWRSZWZdLlNyY1BhcmVudFdpZGdldElkPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgcC0yIG0tMCBtdC0yXCIgbmctaWY9Z3NydmMucGFyZW50UmVzb3VyY2VbZmQuVXVpZFJlZl0uSGFzUGFyZW50RGF0YXNldD48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWNvbmZpcm1QYXJlbnQoKT5Db25maXJtPC9idXR0b24+PC9kaXY+PGRpdiBuZy1pZj1cImdzcnZjLnBhcmVudFJlc291cmNlW2ZkLlV1aWRSZWZdLkhhc1BhcmVudERhdGFzZXQgJiYgZ3NydmMucGFyZW50UmVzb3VyY2VbZmQuVXVpZFJlZl0uc2VsZWN0ZWRSZXNvdXJjZUl0ZW1QYXJlbnQubmFtZV9jb25maXJtZWRcIiBjbGFzcz1teS0yPjxkaXY+PGxhYmVsIGNsYXNzPWxhYmVsPlBhcmVudCByZXNvdXJjZSBuYW1lOiA8Yj57e2dzcnZjLnBhcmVudFJlc291cmNlW2ZkLlV1aWRSZWZdLnNlbGVjdGVkUmVzb3VyY2VJdGVtUGFyZW50Lm5hbWVfY29uZmlybWVkfX08L2I+PC9sYWJlbD48L2Rpdj48ZGl2IG5nLWlmPVwiZ3NydmMucGFyZW50UmVzb3VyY2VbZmQuVXVpZFJlZl0uUG9wdWxhdGVUeXBlUGFyZW50TG9jYWw9PVxcJzJcXCdcIiBjbGFzcz48bGFiZWwgY2xhc3M9bGFiZWw+Q29ubmVjdGVkIHBhcmVudCB3aWRnZXQ6IDxiIG5nLWlmPWdzcnZjLnBhcmVudFJlc291cmNlW2ZkLlV1aWRSZWZdLlNyY1BhcmVudFdpZGdldElkPnt7Z3NydmMucGFyZW50UmVzb3VyY2VbZmQuVXVpZFJlZl0uU3JjUGFyZW50V2lkZ2V0SWR9fTwvYj4gPHNwYW4gbmctaWY9IWdzcnZjLnBhcmVudFJlc291cmNlW2ZkLlV1aWRSZWZdLlNyY1BhcmVudFdpZGdldElkIGNsYXNzPXRleHQtZGFuZ2VyPkVycm9yIC0tPiBFbnRlciBvciBwYXN0ZSBwYXJlbnQgd2lkZ2V0IGlkPC9zcGFuPjwvbGFiZWw+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0RGF0YXNldFRvRGF0YXNldE1hcHBlci5odG1sJywnPGRpdiBjbGFzcz1cInJvdyBwLTJcIj48ZGl2IGNsYXNzPWNvbC0xMj48ZGl2PjxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtcHJpbWFyeVwiPkF2YWlsYWJsZSBtYXBwaW5nczwvc3Bhbj48L2Rpdj48ZGl2IG5nLWlmPW1hcHBpbmdzTG9hZGVkIGNsYXNzPVwiYm9yZGVyIGJvcmRlci1wcmltYXJ5IHJvdW5kZWQgcC0yIGF2YWlsYWJsZVwiIG5nLW1vZGVsPW1hcHBpbmdMaXN0PjxkaXYgbmctcmVwZWF0PVwibWFwIGluIHNvcnRMaXN0KG1hcHBpbmdMaXN0KSB0cmFjayBieSBtYXAuaWRcIiBjbGFzcz1cInRhZyBib3JkZXIgcm91bmRlZCBiZy1wcmltYXJ5LWxpZ2h0IHJvdyBtLTAgcGwtMiBtYi0yXCIgbHItZHJhZy1zcmM9bWFwcGluZyBsci1kcm9wLXRhcmdldD1tYXBwaW5nPjxkaXYgY2xhc3M9XCJjb2wgcC0wXCI+PHNwYW4gY2xhc3M9bWItMT57e21hcC5uYW1lfX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1vdXRsaW5lLXByaW1hcnkgYm9yZGVyLTAgZWxlbWVudC1kcmFnLWhhbmRsZVwiPjxpIGNsYXNzPVwiZmFzIGZhLWdyaXAtdmVydGljYWwgZWxlbWVudC1kcmFnLWhhbmRsZVwiPjwvaT48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC0xMj48ZGl2PjxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc3VjY2Vzc1wiIG5nLWlmPVwiZmQuRGF0YXNldE1hcHBpbmc9PXVuZGVmaW5lZCB8fCBmZC5EYXRhc2V0TWFwcGluZy5sZW5ndGg9PTBcIj4wIG1hcHBpbmdzIHNlbGVjdGVkPC9zcGFuPiA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLXN1Y2Nlc3NcIiBuZy1pZj1cImZkLkRhdGFzZXRNYXBwaW5nLmxlbmd0aD4wXCI+e3tmZC5EYXRhc2V0TWFwcGluZy5sZW5ndGh9fSBtYXBwaW5nKHMpIHNlbGVjdGVkPC9zcGFuPjwvZGl2PjxkaXYgbmctaWY9bWFwcGluZ3NMb2FkZWQgY2xhc3M9XCJib3JkZXIgYm9yZGVyLXN1Y2Nlc3Mgcm91bmRlZCBwLTIgc2VsZWN0ZWRcIiBuZy1tb2RlbD1mZC5EYXRhc2V0TWFwcGluZz48ZGl2IGNsYXNzIG5nLWlmPVwiZmQuRGF0YXNldE1hcHBpbmc9PXVuZGVmaW5lZCB8fCBmZC5EYXRhc2V0TWFwcGluZy5sZW5ndGg9PTBcIj5Ecm9wIGhlcmU8L2Rpdj48ZGl2IG5nLXJlcGVhdD1cInNNYXAgaW4gZmQuRGF0YXNldE1hcHBpbmcgfCBuZ1JlcGVhdGZpbHRlclwiIGNsYXNzPVwidGFnIGJvcmRlciByb3VuZGVkIGJnLXN1Y2Nlc3MtbGlnaHQgcm93IG0tMCBwbC0yIG1iLTJcIiBsci1kcmFnLXNyYz1tYXBwaW5nIGxyLWRyb3AtdGFyZ2V0PW1hcHBpbmc+PGRpdiBjbGFzcz1cImNvbCBwLTBcIj48ZGl2IGNsYXNzPVwidGFnIHRleHQtY2VudGVyIG1iLTNcIj48c3BhbiBjbGFzcz1cInRleHQtc3VjY2VzcyBib3JkZXItYm90dG9tXCI+e3tzTWFwLm5hbWV9fTwvc3Bhbj48L2Rpdj48bGFiZWwgY2xhc3M9XCJwbC0wIGxhYmVsLXhzIHRleHQtbXV0ZWRcIj5XaWRnZXQgcmVmZXJlbmNlPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1zTWFwLlV1aWRSZWYgbmctcmVxdWlyZWQ9XCJzTWFwLm1hcHBpbmd0eXBlIT1cXCczXFwnXCIgcGxhY2Vob2xkZXI9XCJFbnRlciB3aWRnZXQgaWRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48ZGl2IG5nLWZvcm09bWFwcGluZ3R5cGV7e2ZkLlByZXNlbnRhdGlvbklkfX1fe3skaW5kZXh9fSBjbGFzcz1tdC0yPjxsYWJlbCBjbGFzcz1cInBsLTAgbGFiZWwteHMgdGV4dC1tdXRlZFwiIGZvcj1tYXBwaW5nVHlwZXt7ZmQuUHJlc2VudGF0aW9uSWR9fV97eyRpbmRleH19PlNlbGVjdCBtYXBwaW5nIHR5cGU8L2xhYmVsPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1tb2RlbD1zTWFwLm1hcHBpbmdUeXBlIHNpemU9XCJcXCdzbWFsbFxcJ1wiIHNlbGVjdGVkLWl0ZW1zPXNNYXAubWFwcGluZ1R5cGUgb24tc2VsZWN0LWZuPW9uU2VsZWN0TWFwcGluZ1R5cGUoaXRlbSxtb2RlbCkgaXMtbXVsdGlwbGU9ZmFsc2UgbmFtZT1tYXBwaW5nVHlwZXt7ZmQuUHJlc2VudGF0aW9uSWR9fV97eyRpbmRleH19IG5nLXJlcXVpcmVkPXRydWUgZHJvcGRvd24taXRlbXM9bWFwcGluZ1R5cGVzIGRyb3Bkb3duLWlkPVwiXFwnbWFwcGluZ1R5cGVcXCcrZmQuUHJlc2VudGF0aW9uSWQrXFwnX1xcJyskaW5kZXhcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ21hcHBpbmdUeXBlXFwnK2ZkLlByZXNlbnRhdGlvbklkK1xcJ19cXCcrJGluZGV4XCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgbWFwcGluZyB0eXBlXFwnXCI+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4teHMgYnRuLW91dGxpbmUtc3VjY2VzcyBib3JkZXItMCBlbGVtZW50LWRyYWctaGFuZGxlXCI+PGkgY2xhc3M9XCJmYXMgZmEtZ3JpcC12ZXJ0aWNhbCBlbGVtZW50LWRyYWctaGFuZGxlXCI+PC9pPjwvYnV0dG9uPiA8YnV0dG9uIG5nLWNsaWNrPVwicmVtb3ZlKHNNYXAsICRpbmRleClcIiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4teHMgYnRuLW91dGxpbmUtc3VjY2VzcyBib3JkZXItMCBlbGVtZW50LWRyYWctaGFuZGxlXCI+PGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIj48L2k+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0RGF0ZS5odG1sJywnPHN0eWxlPlxcclxcbi50ZXh0LWdyYXkge1xcclxcbiAgICBjb2xvcjogIzAwZGJkYjtcXHJcXG59XFxyXFxuPC9zdHlsZT48ZGl2IGlkZD1rdERhdGUyIGNsYXNzPVwiZm9ybS1ncm91cCByb3cgbS0wIG10LTEgZGF0YXNldC1pdGVtXCIgbmctaWY9XCJmZC5TaG93RmllbGQgfHwgKGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xICYmIGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlIT0yKVwiIG5nLWZvcm09XCJpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19XCIgbmctY2xhc3M9XCJ7IFxcJ3dhcy12YWxpZGF0ZWRcXCcgOiAoaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiR0b3VjaGVkKSxcXCdiZy1ncmF5LTIwIHNoYWRvdy1zbVxcJzpmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MiAmJiBmZD09Z3NydmMuZ2V0U2VsZWN0ZWRGZCgpICYmIGdzcnZjLmdldEZpZWxkUHJvcGVydGllc09wZW5lZCgpIH1cIj48ZGl2IG5nLWhpZGU9XCIoZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGU9PTIgfHwgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTIpICYmIGZkLlBhcmFtZXRlcnMuSGlkZUxhYmVsXCIgc3R5bGU9e3tmZC5sYWJlbEFsaWdufX0gY2xhc3M9e3tmZC5ncmlkQ2xhc3NMYWJlbH19IG5nLWNsYXNzPVwie1xcJ2NvbC1hdXRvXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZX1cIj48bGFiZWwga3Qtc3R5bGUtYXR0cmlidXRlIGZkPWZkIHN0eWxlLXR5cGU9XCJcXCdsYWJlbFxcJ1wiIHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVMYWJlbH19IGZvcj1cInt7ZmQuTmFtZX19e3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fVwiIGNsYXNzPVwicC0wIG1hcmdpbkw1IGZvcm0tY29udHJvbC1sYWJlbCBuby1ib3JkZXIgYWxpZ24tbWlkZGxlXCIgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kaW52YWxpZCxcXCdjdXN0b20tZWwtbGF5b3V0LXN0eWxlXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MX1cIj57e2ZkLkxhYmVsfX08L2xhYmVsPjwvZGl2PjxkaXYgc3R5bGU9e3tmZC5sYWJlbEFsaWdufX0gY2xhc3M9e3tmZC5ncmlkQ2xhc3NFbGVtZW50fX0gbmctY2xhc3M9XCJ7XFwnY29sLWF1dG9cXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplfVwiPjxkaXYgbmctaWY9IWZkLlJlYWRPbmx5IGNsYXNzPXBiLTE+PGRpdiBuYW1lPWZpcnN0LWRhdGUgbmctaWY9IWZkLlNlYXJjaC5TaG93U2Vjb25kRGF0ZT48ZGl2IGNsYXNzPWlucHV0LWdyb3VwIG5nLWlmPVwiZmQuRGJ0eXBlPT1cXCdkYXRlZmllbGRkZWZpbml0aW9uXFwnXCI+PGlucHV0IGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBuZy1jbGFzcz1cIntcXCd0ZXh0LWdyYXlcXCc6aW5uZXJGb3JtLiRwcmlzdGluZSB9XCIgc3R5bGUtdHlwZT1cIlxcJ2VsZW1lbnRcXCdcIiBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlRWxlbWVudH19IHR5cGU9ZGF0ZSBjbGFzcz1mb3JtLWNvbnRyb2wgYXJpYS1kZXNjcmliZWRieT1cImRhdGV7e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19XCIgbmctbW9kZWw9Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSBuZy1jaGFuZ2U9ZmQub25fY2hhbmdlX2FjdGlvbigpIG5hbWU9XCJ7e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX1cIiBuZy1yZXF1aXJlZD1mZC5SZXF1aXJlZCBjbG9zZS10ZXh0PUNsb3NlPjwvZGl2PjxkaXYgY2xhc3M9aW5wdXQtZ3JvdXAgbmctaWY9XCJmZC5EYnR5cGU9PVxcJ2RhdGV0aW1lZmllbGRkZWZpbml0aW9uXFwnXCI+PGlucHV0IGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBuZy1jbGFzcz1cIntcXCd0ZXh0LWdyYXlcXCc6aW5uZXJGb3JtLiRwcmlzdGluZSB9XCIgc3R5bGUtdHlwZT1cIlxcJ2VsZW1lbnRcXCdcIiBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlRWxlbWVudH19IHR5cGU9ZGF0ZXRpbWUtbG9jYWwgY2xhc3M9Zm9ybS1jb250cm9sIGFyaWEtZGVzY3JpYmVkYnk9XCJkYXRle3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fVwiIG5nLW1vZGVsPWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0gbmctY2hhbmdlPWZkLm9uX2NoYW5nZV9hY3Rpb24oKSBuYW1lPVwie3tmZC5OYW1lfX17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19XCIgbmctcmVxdWlyZWQ9ZmQuUmVxdWlyZWQgY2xvc2UtdGV4dD1DbG9zZT48L2Rpdj48L2Rpdj48ZGl2IG5hbWU9c2Vjb25kLWRhdGUgbmctaWY9ZmQuU2VhcmNoLlNob3dTZWNvbmREYXRlPjxkaXYgY2xhc3M9aW5wdXQtZ3JvdXAgbmctaWY9XCJmZC5EYnR5cGU9PVxcJ2RhdGVmaWVsZGRlZmluaXRpb25cXCdcIj48aW5wdXQgbmctbW9kZWw9ZmQuU2VhcmNoLmJldHdlZW4xIGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnZWxlbWVudFxcJ1wiIHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVFbGVtZW50fX0gdHlwZT1kYXRlIGNsYXNzPWZvcm0tY29udHJvbCBwbGFjZWhvbGRlcj1cIkZyb20gZGF0ZVwiIGFyaWEtZGVzY3JpYmVkYnk9XCJkYXRle3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS0yXCIgbmFtZT17e2ZkLk5hbWV9fVRTVCBjbG9zZS10ZXh0PUNsb3NlPjwvZGl2PjxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBtdC0xXCIgbmctaWY9XCJmZC5EYnR5cGU9PVxcJ2RhdGVmaWVsZGRlZmluaXRpb25cXCdcIj48aW5wdXQgbmctbW9kZWw9ZmQuU2VhcmNoLmJldHdlZW4yIGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnZWxlbWVudFxcJ1wiIHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVFbGVtZW50fX0gdHlwZT1kYXRlIGNsYXNzPWZvcm0tY29udHJvbCBwbGFjZWhvbGRlcj1cIlRvIGRhdGVcIiBuYW1lPXt7ZmQuTmFtZX19VFNUMiBjbG9zZS10ZXh0PUNsb3NlPjwvZGl2PjxkaXYgY2xhc3M9aW5wdXQtZ3JvdXAgbmctaWY9XCJmZC5EYnR5cGU9PVxcJ2RhdGV0aW1lZmllbGRkZWZpbml0aW9uXFwnXCI+PGlucHV0IG5nLW1vZGVsPWZkLlNlYXJjaC5iZXR3ZWVuMSBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2VsZW1lbnRcXCdcIiBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlRWxlbWVudH19IHR5cGU9ZGF0ZXRpbWUtbG9jYWwgY2xhc3M9Zm9ybS1jb250cm9sIHBsYWNlaG9sZGVyPVwiRnJvbSBkYXRldGltZVwiIGFyaWEtZGVzY3JpYmVkYnk9XCJkYXRle3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS0yXCIgbmFtZT17e2ZkLk5hbWV9fVRTVCBjbG9zZS10ZXh0PUNsb3NlPjwvZGl2PjxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBtdC0xXCIgbmctaWY9XCJmZC5EYnR5cGU9PVxcJ2RhdGV0aW1lZmllbGRkZWZpbml0aW9uXFwnXCI+PGlucHV0IG5nLW1vZGVsPWZkLlNlYXJjaC5iZXR3ZWVuMiBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2VsZW1lbnRcXCdcIiBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlRWxlbWVudH19IHR5cGU9ZGF0ZXRpbWUtbG9jYWwgY2xhc3M9Zm9ybS1jb250cm9sIHBsYWNlaG9sZGVyPVwiVG8gZGF0ZXRpbWVcIiBuYW1lPXt7ZmQuTmFtZX19VFNUMiBjbG9zZS10ZXh0PUNsb3NlPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9ZmQuUmVhZE9ubHk+PGRpdiBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2VsZW1lbnRcXCdcIiBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlRWxlbWVudH19IGNsYXNzPVwiZm9ybS1jb250cm9sIGJvcmRlciByb3VuZGVkIHAtMVwiPnt7Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSB8IGRhdGU6IGZkLmZvcm1hdH19PC9kaXY+PC9kaXY+PGRpdiBzdHlsZT1cInZpc2liaWxpdHk6dmlzaWJsZSAhaW1wb3J0YW50XCIgY2xhc3M9XCJibHVlLWRyb3Bkb3duIHJvdW5kZWQgc2hhZG93XCI+PGRpdiBjbGFzcz1cImRyb3Bkb3duIGVsZW1lbnQtcHJvcGVydGllcy1idG5zIGJnLXByaW1hcnkgcm91bmRlZCBzaGFkb3dcIiBuZy1pZj1cImZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xICYmIGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlIT0yXCI+PHNwYW4gY2xhc3M9XCJsYWJlbCBsYWJlbC14cyB0ZXh0LXdoaXRlIG1sLTEgYm9sZFwiPnt7ZmQuTmFtZX19PC9zcGFuPiA8YSBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4teHMgcHJvcC1idG4gZWxlbWVudC1kcmFnLWhhbmRsZVwiIHRpdGxlPXNvcnQgaHJlZj48aSBjbGFzcz1cImZhIGZhLWdyaXAtdmVydGljYWwgZWxlbWVudC1kcmFnLWhhbmRsZVwiPjwvaT48L2E+IDxhIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi14cyBwcm9wLWJ0blwiIGhyZWYgdGl0bGU9XCJGaWVsZCBwcm9wZXJ0aWVzXCIgZGF0YS10b2dnbGU9dG9vbHRpcCBkYXRhLXBsYWNlbWVudD10b3AgbmctY2xpY2s9ZmQuc2hvd1Byb3BlcnRpZXMoKT48aSBjbGFzcz1cImZhIGZhLWNvZ1wiPjwvaT48L2E+IDxhIG5nLWlmPWdzcnZjLnNob3dGaWx0ZXIobXlzY29wZSkgaWQ9c2VhcmNoLWZpbHRlci17e2ZkLlByZXNlbnRhdGlvbklkfX0gZGF0YS10b2dnbGU9ZHJvcGRvd24gYXJpYS1oYXNwb3B1cD10cnVlIGFyaWEtZXhwYW5kZWQ9ZmFsc2UgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIHByb3AtYnRuXCIgaHJlZj48aSBjbGFzcz1cImZhIGZhLWZpbHRlciB7e2ZkLlNlYXJjaC5pY29ufX0gbXItMVwiIHRpdGxlPVwiRmlsdGVyIDoge3tmZC5TZWFyY2gubmFtZX19XCI+PC9pPnt7ZmQuU2VhcmNoLm5hbWV9fTwvYT48ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBzaGFkb3cgcC0wIGRyb3Bkb3duLW1heC1jb250ZW50LXdpZHRoXCIgc3R5bGU9XCJtaW4td2lkdGg6MHB4ICFpbXBvcnRhbnRcIiBhcmlhLWxhYmVsbGVkYnk9c2VhcmNoLWZpbHRlci17e2ZkLlByZXNlbnRhdGlvbklkfX0+PGRpdiBjbGFzcz1idG4tZ3JvdXAtdmVydGljYWwgcm9sZT1ncm91cCBhcmlhLWxhYmVsPVwiU2VhcmNoIGZpbHRlclwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5RGF0ZUZpbHRlcnMoMCkgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ2d0XFwnfVwiPjxzcGFuIGNsYXNzPXt7c2VhcmNoWzBdLmljb259fT48L3NwYW4+IHt7ZmQubG9jYWxWYXJzLnNlYXJjaFswXS5uYW1lfX08L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG0tc20gYnRuLWxpZ2h0XCIgbmctY2xpY2s9YXBwbHlEYXRlRmlsdGVycygxKSBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuU2VhcmNoLmZpbHRlcj09XFwnbHRcXCd9XCI+PHNwYW4gY2xhc3M9e3tzZWFyY2hbMV0uaWNvbn19Pjwvc3Bhbj4ge3tmZC5sb2NhbFZhcnMuc2VhcmNoWzFdLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseURhdGVGaWx0ZXJzKDIpIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpmZC5TZWFyY2guZmlsdGVyPT1cXCdlcVxcJ31cIj48c3BhbiBjbGFzcz17e3NlYXJjaFsyXS5pY29ufX0+PC9zcGFuPiB7e2ZkLmxvY2FsVmFycy5zZWFyY2hbMl0ubmFtZX19PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5RGF0ZUZpbHRlcnMoMykgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ2JlZXR3ZW5cXCd9XCI+PHNwYW4gY2xhc3M9e3tzZWFyY2hbM10uaWNvbn19Pjwvc3Bhbj4ge3tmZC5sb2NhbFZhcnMuc2VhcmNoWzNdLm5hbWV9fTwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3MgYXJpYS1sYWJlbGxlZGJ5PW1hc3MtcHJvcGVydHkte3tmZC5QcmVzZW50YXRpb25JZH19IGt0LW1hc3MtdXBkYXRlLXByb3BlcnRpZXM+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0RGF0ZUV4ZS5odG1sJywnPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcm93IG0tMCBtdC0xIGRhdGFzZXQtaXRlbVwiIG5nLWlmPTo6ZmQuU2hvd0ZpZWxkIG5nLWZvcm09aW5uZXJGb3Jte3s6OmZkLkl0ZW1JZH19IG5nLWNsYXNzPVwieyBcXCd3YXMtdmFsaWRhdGVkXFwnIDogKGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS57ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19LiR0b3VjaGVkKSxcXCdiZy1ncmF5LTIwIG0tMSBwLTEgYm9yZGVyIHNoYWRvdy1zbVxcJzpmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MiAmJiBmZD09Z3NydmMuZ2V0U2VsZWN0ZWRGZCgpICYmIGdzcnZjLmdldEZpZWxkUHJvcGVydGllc09wZW5lZCgpIH1cIj48ZGl2IG5nLWhpZGU9ZmQuUGFyYW1ldGVycy5IaWRlTGFiZWwgc3R5bGU9e3s6OmZkLmxhYmVsQWxpZ259fSBjbGFzcz17ezo6ZmQuZ3JpZENsYXNzTGFiZWx9fSBuZy1jbGFzcz1cIntcXCdjb2wtYXV0b1xcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemV9XCI+PGxhYmVsIGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnbGFiZWxcXCdcIiBzdHlsZT17ezo6ZmQuY3VzdG9tU3R5bGVMYWJlbH19IGZvcj17e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkfX0gY2xhc3M9XCJwLTAgbWFyZ2luTDUgZm9ybS1jb250cm9sLWxhYmVsIG5vLWJvcmRlciBhbGlnbi1taWRkbGVcIiBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiAoaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17e2ZkLkl0ZW1JZH19LiRpbnZhbGlkLFxcJ2N1c3RvbS1lbC1sYXlvdXQtc3R5bGVcXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xfVwiPnt7OjpmZC5MYWJlbH19PC9sYWJlbD48L2Rpdj48ZGl2IHN0eWxlPXt7ZmQubGFiZWxBbGlnbn19IGNsYXNzPXt7ZmQuZ3JpZENsYXNzRWxlbWVudH19IG5nLWNsYXNzPVwie1xcJ2NvbC1hdXRvXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZX1cIj48ZGl2IG5nLWlmPSFmZC5SZWFkT25seSBjbGFzcz1wYi0xIHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVFbGVtZW50fX0+PGRpdiBuYW1lPWZpcnN0LWRhdGUgbmctaWY9IWZkLlNlYXJjaC5TaG93U2Vjb25kRGF0ZT48ZGl2IGNsYXNzPWlucHV0LWdyb3VwIG5nLWlmPVwiZmQuRGJ0eXBlPT1cXCdkYXRlZmllbGRkZWZpbml0aW9uXFwnXCI+PGlucHV0IGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnZWxlbWVudFxcJ1wiIHR5cGU9ZGF0ZSBjbGFzcz1mb3JtLWNvbnRyb2wgYXJpYS1kZXNjcmliZWRieT1kYXRle3tmZC5QcmVzZW50YXRpb25JZH19IG5nLW1vZGVsPWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0gbmctY2hhbmdlPWZkLm9uX2NoYW5nZV9hY3Rpb24oKSBuYW1lPXt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fSBuZy1yZXF1aXJlZD1mZC5SZXF1aXJlZCBjbG9zZS10ZXh0PUNsb3NlPjxwIGNsYXNzPW5vcHJpbnQgbmctY2xhc3M9XCJ7XFwnaW52YWxpZC10b29sdGlwIHJpZ2h0LTBcXCc6ZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PVxcJ3Rvb2x0aXBcXCcgfHwgZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PXVuZGVmaW5lZCxcXCdpbnZhbGlkLWZlZWRiYWNrXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCdmZWVkYmFja1xcJ31cIj57ezo6ZmQuRXJyb3JNc2d9fTwvcD48L2Rpdj48ZGl2IGNsYXNzPWlucHV0LWdyb3VwIG5nLWlmPVwiZmQuRGJ0eXBlPT1cXCdkYXRldGltZWZpZWxkZGVmaW5pdGlvblxcJ1wiPjxpbnB1dCBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2VsZW1lbnRcXCdcIiB0eXBlPWRhdGV0aW1lLWxvY2FsIGNsYXNzPWZvcm0tY29udHJvbCBhcmlhLWRlc2NyaWJlZGJ5PWRhdGV7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSBuZy1jaGFuZ2U9ZmQub25fY2hhbmdlX2FjdGlvbigpIG5hbWU9e3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19IG5nLXJlcXVpcmVkPWZkLlJlcXVpcmVkIGNsb3NlLXRleHQ9Q2xvc2U+PHAgY2xhc3M9bm9wcmludCBuZy1jbGFzcz1cIntcXCdpbnZhbGlkLXRvb2x0aXAgcmlnaHQtMFxcJzpmZC5QYXJhbWV0ZXJzLkVycm9yTXNnVHlwZT09XFwndG9vbHRpcFxcJyB8fCBmZC5QYXJhbWV0ZXJzLkVycm9yTXNnVHlwZT09dW5kZWZpbmVkLFxcJ2ludmFsaWQtZmVlZGJhY2tcXCc6ZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PVxcJ2ZlZWRiYWNrXFwnfVwiPnt7OjpmZC5FcnJvck1zZ319PC9wPjwvZGl2PjwvZGl2PjxkaXYgbmFtZT1zZWNvbmQtZGF0ZSBuZy1pZj1mZC5TZWFyY2guU2hvd1NlY29uZERhdGU+PGRpdiBjbGFzcz1pbnB1dC1ncm91cD48aW5wdXQga3Qtc3R5bGUtYXR0cmlidXRlIGZkPWZkIHN0eWxlLXR5cGU9XCJcXCdlbGVtZW50XFwnXCIgdHlwZT1kYXRlIGNsYXNzPWZvcm0tY29udHJvbCBuZy1tb2RlbD1mZC5TZWFyY2guYmV0d2VlbjEgcGxhY2Vob2xkZXI9XCJGcm9tIGRhdGVcIiBhcmlhLWRlc2NyaWJlZGJ5PWRhdGV7e2ZkLlByZXNlbnRhdGlvbklkfX0tMiBuYW1lPXt7ZmQuTmFtZX19VFNUIGNsb3NlLXRleHQ9Q2xvc2UgbmctY2hhbmdlPVwiZmQub25fY2hhbmdlX2JldHdlZW4oXFwnYmV0d2VlbjFcXCcpXCI+PC9kaXY+PGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIG10LTFcIiBuZy1pZj1cImZkLkRidHlwZT09XFwnZGF0ZWZpZWxkZGVmaW5pdGlvblxcJ1wiPjxpbnB1dCBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2VsZW1lbnRcXCdcIiB0eXBlPWRhdGUgY2xhc3M9Zm9ybS1jb250cm9sIG5nLW1vZGVsPWZkLlNlYXJjaC5iZXR3ZWVuMiBwbGFjZWhvbGRlcj1cIlRvIGRhdGVcIiBuYW1lPXt7ZmQuTmFtZX19VFNUMiBjbG9zZS10ZXh0PUNsb3NlIG5nLWNoYW5nZT1cImZkLm9uX2NoYW5nZV9iZXR3ZWVuKFxcJ2JldHdlZW4yXFwnKVwiPjwvZGl2PjxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBtdC0xXCIgbmctaWY9XCJmZC5EYnR5cGU9PVxcJ2RhdGV0aW1lZmllbGRkZWZpbml0aW9uXFwnXCI+PGlucHV0IGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnZWxlbWVudFxcJ1wiIHR5cGU9ZGF0ZXRpbWUtbG9jYWwgY2xhc3M9Zm9ybS1jb250cm9sIG5nLW1vZGVsPWZkLlNlYXJjaC5iZXR3ZWVuMiBwbGFjZWhvbGRlcj1cIlRvIGRhdGVcIiBuYW1lPXt7ZmQuTmFtZX19VFNUMiBjbG9zZS10ZXh0PUNsb3NlIG5nLWNoYW5nZT1cImZkLm9uX2NoYW5nZV9iZXR3ZWVuKFxcJ2JldHdlZW4yXFwnKVwiPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9ZmQuUmVhZE9ubHk+PGRpdiBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2VsZW1lbnRcXCdcIiBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlRWxlbWVudH19IG5nLWNsYXNzPVwie1xcJ2Zvcm0tY29udHJvbFxcJzpmZC5QYXJhbWV0ZXJzLkJvcmRlckZvclJlYWRPbmx5fVwiPnt7Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSB8IGRhdGU6IGZkLmZvcm1hdH19PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImRyb3BsZWZ0IGVsZW1lbnQtcHJvcGVydGllcy1idG5zIGJnLXByaW1hcnkgcm91bmRlZCBzaGFkb3cgbm9wcmludFwiIG5nLWlmPTo6c2hvd1NlYXJjaEZpbHRlcnM+PGEgaWQ9c2VhcmNoLWZpbHRlci17ezo6ZmQuUHJlc2VudGF0aW9uSWR9fSBkYXRhLXRvZ2dsZT1kcm9wZG93biBhcmlhLWhhc3BvcHVwPXRydWUgYXJpYS1leHBhbmRlZD1mYWxzZSB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4teHMgcHJvcC1idG5cIiBocmVmPjxpIGNsYXNzPVwiZmEgZmEtZmlsdGVyIHt7ZmQuU2VhcmNoLmljb259fSBtci0xXCIgdGl0bGU9XCJGaWx0ZXIgOiB7e2ZkLlNlYXJjaC5uYW1lfX1cIj48L2k+e3tmZC5TZWFyY2gubmFtZX19PC9hPjxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IHNoYWRvdyBwLTAgZHJvcGRvd24tbWF4LWNvbnRlbnQtd2lkdGhcIiBzdHlsZT1cIm1pbi13aWR0aDowcHggIWltcG9ydGFudFwiIGFyaWEtbGFiZWxsZWRieT1zZWFyY2gtZmlsdGVyLXt7OjpmZC5QcmVzZW50YXRpb25JZH19PjxkaXYgbmctaWY9ZmQubG9jYWxWYXJzLmZpbHRlclJlYWR5IGNsYXNzPWJ0bi1ncm91cC12ZXJ0aWNhbCByb2xlPWdyb3VwIGFyaWEtbGFiZWw9XCJTZWFyY2ggZmlsdGVyXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG0tc20gYnRuLWxpZ2h0XCIgbmctY2xpY2s9YXBwbHlEYXRlRmlsdGVycygwKSBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuU2VhcmNoLmZpbHRlcj09XFwnZ3RlXFwnfVwiPjxzcGFuIGNsYXNzPXt7ZmQubG9jYWxWYXJzLnNlYXJjaFswXS5pY29ufX0+PC9zcGFuPiB7ezo6ZmQubG9jYWxWYXJzLnNlYXJjaFswXS5uYW1lfX08L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG0tc20gYnRuLWxpZ2h0XCIgbmctY2xpY2s9YXBwbHlEYXRlRmlsdGVycygxKSBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuU2VhcmNoLmZpbHRlcj09XFwnbHRlXFwnfVwiPjxzcGFuIGNsYXNzPXt7ZmQubG9jYWxWYXJzLnNlYXJjaFsxXS5pY29ufX0+PC9zcGFuPiB7ezo6ZmQubG9jYWxWYXJzLnNlYXJjaFsxXS5uYW1lfX08L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG0tc20gYnRuLWxpZ2h0XCIgbmctY2xpY2s9YXBwbHlEYXRlRmlsdGVycygyKSBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuU2VhcmNoLmZpbHRlcj09XFwnZXFcXCd9XCI+PHNwYW4gY2xhc3M9e3tmZC5sb2NhbFZhcnMuc2VhcmNoWzJdLmljb259fT48L3NwYW4+IHt7OjpmZC5sb2NhbFZhcnMuc2VhcmNoWzJdLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseURhdGVGaWx0ZXJzKDMpIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpmZC5TZWFyY2guZmlsdGVyPT1cXCdiZXR3ZWVuXFwnfVwiPjxzcGFuIGNsYXNzPXt7ZmQubG9jYWxWYXJzLnNlYXJjaFszXS5pY29ufX0+PC9zcGFuPiB7ezo6ZmQubG9jYWxWYXJzLnNlYXJjaFszXS5uYW1lfX08L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3REYXRlRXhlX29sZC5odG1sJywnPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcm93IG0tMCBtdC0xIGRhdGFzZXQtaXRlbVwiIG5nLWlmPVwiZmQuU2hvd0ZpZWxkIHx8IChmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MilcIiBuZy1mb3JtPWlubmVyRm9ybXt7ZmQuSXRlbUlkfX0gbmctY2xhc3M9XCJ7IFxcJ3dhcy12YWxpZGF0ZWRcXCcgOiAoaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19LiR0b3VjaGVkKSxcXCdiZy1ncmF5LTIwIG0tMSBwLTEgYm9yZGVyIHNoYWRvdy1zbVxcJzpmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MiAmJiBmZD09Z3NydmMuZ2V0U2VsZWN0ZWRGZCgpICYmIGdzcnZjLmdldEZpZWxkUHJvcGVydGllc09wZW5lZCgpIH1cIj48ZGl2IG5nLWNsYXNzPWNvbExlbmd0aFtmZC5MYWJlbExlbmd0aC0xXT48bGFiZWwgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZH19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS4kaW52YWxpZH1cIiBjbGFzcz1mb3JtLWNvbnRyb2wtbGFiZWwgZm9yPXt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fT57e2ZkLkxhYmVsfX08L2xhYmVsPjwvZGl2PjxkaXYgbmctY2xhc3M9Y29sTGVuZ3RoW2ZkLlZhbHVlTGVuZ3RoLTFdIG5nLWlmPSFmZC5SZWFkT25seT48ZGl2IG5hbWU9Zmlyc3QtZGF0ZSBuZy1pZj0hZmQuU2VhcmNoLlNob3dTZWNvbmREYXRlPjxkaXYgY2xhc3M9aW5wdXQtZ3JvdXA+PGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCByb3VuZGVkLTBcIiBhcmlhLWRlc2NyaWJlZGJ5PWRhdGV7e2ZkLkl0ZW1JZH19IHVpYi1kYXRlcGlja2VyLXBvcHVwPXt7ZmQuZm9ybWF0fX0gbmctbW9kZWw9XCJmb3JtRGF0YVswXVtcXCdGaWVsZFxcJytmZC5JdGVtSWRdXCIgbmctY2hhbmdlPVwiZmQuU2hvd1NlYXJjaEZvcm0/ZmQucmVmcmVzaFNlYXJjaFZhbHVlKCk6ZmQuU2VhcmNoPU5vbmVcIiBuYW1lPXt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fSBpcy1vcGVuPWZkLnBvcHVwMi5vcGVuZWQgZGF0ZXBpY2tlci1vcHRpb25zPWZkLmRhdGVPcHRpb25zIG5nLXJlcXVpcmVkPWZkLlJlcXVpcmVkIGNsb3NlLXRleHQ9Q2xvc2U+IDxzcGFuIGNsYXNzPWlucHV0LWdyb3VwLWFwcGVuZD48YnV0dG9uIHR5cGU9YnV0dG9uIGlkPWRhdGV7e2ZkLkl0ZW1JZH19LTIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IHJvdW5kZWQtMFwiIG5nLWNsaWNrPWZkLm9wZW4yKCk+PGkgY2xhc3M9XCJmYSBmYS1jYWxlbmRhclwiPjwvaT48L2J1dHRvbj48L3NwYW4+IDxzcGFuIGNsYXNzPVwibm9wcmludCBpbnZhbGlkLWZlZWRiYWNrXCI+e3tmZC5FcnJvck1zZ319PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgbmFtZT1zZWNvbmQtZGF0ZSBuZy1pZj1mZC5TZWFyY2guU2hvd1NlY29uZERhdGU+PGRpdiBjbGFzcz1pbnB1dC1ncm91cD48aW5wdXQgdHlwZT10ZXh0IGNsYXNzPWZvcm0tY29udHJvbCBuZy1tb2RlbD1mZC5TZWFyY2guYmV0d2VlbjEgcGxhY2Vob2xkZXI9XCJGcm9tIGRhdGVcIiB1aWItZGF0ZXBpY2tlci1wb3B1cD17e2ZkLmZvcm1hdH19IGFyaWEtZGVzY3JpYmVkYnk9ZGF0ZXt7ZmQuSXRlbUlkfX0tMiBuYW1lPXt7ZmQuTmFtZX19VFNUIGlzLW9wZW49ZmQucG9wdXAxLm9wZW5lZCBkYXRlcGlja2VyLW9wdGlvbnM9ZmQuZGF0ZU9wdGlvbnMgY2xvc2UtdGV4dD1DbG9zZT4gPHNwYW4gY2xhc3M9aW5wdXQtZ3JvdXAtYXBwZW5kPjxidXR0b24gdHlwZT1idXR0b24gaWQ9ZGF0ZXt7ZmQuSXRlbUlkfX0tMSBjbGFzcz1cImJ0biBidG4tbGlnaHQgcm91bmRlZC0wXCIgbmctY2xpY2s9ZmQub3BlbjEoKT48aSBjbGFzcz1cImZhIGZhLWNhbGVuZGFyXCI+PC9pPjwvYnV0dG9uPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgbXQtMVwiPjxpbnB1dCB0eXBlPXRleHQgY2xhc3M9Zm9ybS1jb250cm9sIG5nLW1vZGVsPWZkLlNlYXJjaC5iZXR3ZWVuMiBwbGFjZWhvbGRlcj1cIlRvIGRhdGVcIiB1aWItZGF0ZXBpY2tlci1wb3B1cD17e2ZkLmZvcm1hdH19IG5hbWU9e3tmZC5OYW1lfX1UU1QyIGlzLW9wZW49ZmQucG9wdXAyLm9wZW5lZCBkYXRlcGlja2VyLW9wdGlvbnM9ZmQuZGF0ZU9wdGlvbnMgY2xvc2UtdGV4dD1DbG9zZT4gPHNwYW4gY2xhc3M9aW5wdXQtZ3JvdXAtYXBwZW5kPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0IHJvdW5kZWQtMFwiIG5nLWNsaWNrPWZkLm9wZW4yKCk+PGkgY2xhc3M9XCJmYSBmYS1jYWxlbmRhclwiPjwvaT48L2J1dHRvbj48L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1mZC5SZWFkT25seSBuZy1jbGFzcz1jb2xMZW5ndGhbZmQuVmFsdWVMZW5ndGgtMV0+PGRpdiBzdHlsZT1cIm1pbi1oZWlnaHQ6IDM1cHg7XCIgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBwLTFcIj57e2Zvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0gfCBkYXRlOiBmZC5mb3JtYXR9fTwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJkcm9wZG93biBlbGVtZW50LXByb3BlcnRpZXMtYnRucyBiZy1wcmltYXJ5IHJvdW5kZWQgc2hhZG93IG5vcHJpbnRcIiBuZy1pZj1cImZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xICYmIGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlIT0yXCI+PHNwYW4gY2xhc3M9XCJsYWJlbCBsYWJlbC14cyB0ZXh0LXdoaXRlIG1sLTEgYm9sZFwiPnt7ZmQuTmFtZX19PC9zcGFuPiA8YSBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4teHMgcHJvcC1idG4gZWxlbWVudC1kcmFnLWhhbmRsZVwiIHRpdGxlPXNvcnQgaHJlZj48aSBjbGFzcz1cImVsZW1lbnQtZHJhZy1oYW5kbGUgZmEgZmEtZ3JpcC12ZXJ0aWNhbFwiPjwvaT48L2E+IDxhIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi14cyBwcm9wLWJ0blwiIGhyZWYgdGl0bGU9XCJGaWVsZCBwcm9wZXJ0aWVzXCIgZGF0YS10b2dnbGU9dG9vbHRpcCBkYXRhLXBsYWNlbWVudD10b3AgbmctY2xpY2s9ZmQuc2hvd1Byb3BlcnRpZXMoKT48aSBjbGFzcz1cImZhIGZhLWNvZ1wiPjwvaT48L2E+IDxhIG5nLWlmPVwic2hvd1NlYXJjaEZpbHRlcnMgfHwgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTFcIiBpZD1zZWFyY2gtZmlsdGVyLXt7ZmQuSXRlbUlkfX0gZGF0YS10b2dnbGU9ZHJvcGRvd24gYXJpYS1oYXNwb3B1cD10cnVlIGFyaWEtZXhwYW5kZWQ9ZmFsc2UgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIHByb3AtYnRuXCIgaHJlZj48aSBjbGFzcz1cImZhIGZhLWZpbHRlclwiIHRpdGxlPVwiRmlsdGVyIDoge3tmZC5TZWFyY2gubmFtZX19XCI+PC9pPjwvYT48ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBzaGFkb3cgcC0wIGRyb3Bkb3duLW1heC1jb250ZW50LXdpZHRoXCIgc3R5bGU9XCJtaW4td2lkdGg6MHB4ICFpbXBvcnRhbnRcIiBhcmlhLWxhYmVsbGVkYnk9c2VhcmNoLWZpbHRlci17e2ZkLkl0ZW1JZH19PjxkaXYgY2xhc3M9YnRuLWdyb3VwLXZlcnRpY2FsIHJvbGU9Z3JvdXAgYXJpYS1sYWJlbD1cIlNlYXJjaCBmaWx0ZXJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseURhdGVGaWx0ZXJzKDApIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpmZC5TZWFyY2guZmlsdGVyPT1cXCdndFxcJ31cIj48c3BhbiBjbGFzcz17e3NlYXJjaFswXS5pY29ufX0+PC9zcGFuPiB7e3NlYXJjaFswXS5uYW1lfX08L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG0tc20gYnRuLWxpZ2h0XCIgbmctY2xpY2s9YXBwbHlEYXRlRmlsdGVycygxKSBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuU2VhcmNoLmZpbHRlcj09XFwnbHRcXCd9XCI+PHNwYW4gY2xhc3M9e3tzZWFyY2hbMV0uaWNvbn19Pjwvc3Bhbj4ge3tzZWFyY2hbMV0ubmFtZX19PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5RGF0ZUZpbHRlcnMoMikgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ2VxXFwnfVwiPjxzcGFuIGNsYXNzPXt7c2VhcmNoWzJdLmljb259fT48L3NwYW4+IHt7c2VhcmNoWzJdLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseURhdGVGaWx0ZXJzKDMpIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpmZC5TZWFyY2guZmlsdGVyPT1cXCdiZWV0d2VuXFwnfVwiPjxzcGFuIGNsYXNzPXt7c2VhcmNoWzNdLmljb259fT48L3NwYW4+IHt7c2VhcmNoWzNdLm5hbWV9fTwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJkcm9wbGVmdCBlbGVtZW50LXByb3BlcnRpZXMtYnRucyBiZy1wcmltYXJ5IHJvdW5kZWQgc2hhZG93XCIgbmctaWY9XCIoZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTIgfHwgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGU9PTIpICYmIHNob3dTZWFyY2hGaWx0ZXJzXCI+PGEgaWQ9c2VhcmNoLWZpbHRlci17e2ZkLkl0ZW1JZH19IGRhdGEtdG9nZ2xlPWRyb3Bkb3duIGFyaWEtaGFzcG9wdXA9dHJ1ZSBhcmlhLWV4cGFuZGVkPWZhbHNlIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi14cyBwcm9wLWJ0blwiIGhyZWY+PGkgY2xhc3M9XCJmYSBmYS1maWx0ZXIge3tmZC5TZWFyY2guaWNvbn19IG1yLTFcIiB0aXRsZT1cIkZpbHRlciA6IHt7ZmQuU2VhcmNoLm5hbWV9fVwiPjwvaT57e2ZkLlNlYXJjaC5uYW1lfX08L2E+PGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgc2hhZG93IHAtMCBkcm9wZG93bi1tYXgtY29udGVudC13aWR0aFwiIHN0eWxlPVwibWluLXdpZHRoOjBweCAhaW1wb3J0YW50XCIgYXJpYS1sYWJlbGxlZGJ5PXNlYXJjaC1maWx0ZXIte3tmZC5JdGVtSWR9fT48ZGl2IGNsYXNzPWJ0bi1ncm91cC12ZXJ0aWNhbCByb2xlPWdyb3VwIGFyaWEtbGFiZWw9XCJTZWFyY2ggZmlsdGVyXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG0tc20gYnRuLWxpZ2h0XCIgbmctY2xpY2s9YXBwbHlEYXRlRmlsdGVycygwKSBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuU2VhcmNoLmZpbHRlcj09XFwnZ3RcXCd9XCI+PHNwYW4gY2xhc3M9e3tzZWFyY2hbMF0uaWNvbn19Pjwvc3Bhbj4ge3tzZWFyY2hbMF0ubmFtZX19PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5RGF0ZUZpbHRlcnMoMSkgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ2x0XFwnfVwiPjxzcGFuIGNsYXNzPXt7c2VhcmNoWzFdLmljb259fT48L3NwYW4+IHt7c2VhcmNoWzFdLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseURhdGVGaWx0ZXJzKDIpIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpmZC5TZWFyY2guZmlsdGVyPT1cXCdlcVxcJ31cIj48c3BhbiBjbGFzcz17e3NlYXJjaFsyXS5pY29ufX0+PC9zcGFuPiB7e3NlYXJjaFsyXS5uYW1lfX08L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG0tc20gYnRuLWxpZ2h0XCIgbmctY2xpY2s9YXBwbHlEYXRlRmlsdGVycygzKSBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuU2VhcmNoLmZpbHRlcj09XFwnYmV0d2VlblxcJ31cIj48c3BhbiBjbGFzcz17e3NlYXJjaFszXS5pY29ufX0+PC9zcGFuPiB7e3NlYXJjaFszXS5uYW1lfX08L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3REYXRlRXh0ZW5kZWRQcm9wZXJ0aWVzLmh0bWwnLCc8ZGl2PjxkaXYgbmctY2xpY2s9XCJsb2NhbFZhcnMuc2hvd0Jhc2ljID0gIWxvY2FsVmFycy5zaG93QmFzaWNcIiBjbGFzcz1cImV4cGFuZC1wcm9wZXJ0eS1wYW5lbCB0YWcgYm9yZGVyLWJvdHRvbSBib3JkZXItc3VjY2VzcyBteS0xIHB5LTFcIiBkYXRhLXRvZ2dsZT1jb2xsYXBzZSBocmVmPSNleHRlbmRlZFByb3BlcnR5UGFuZWwgcm9sZT1idXR0b24gYXJpYS1leHBhbmRlZD10cnVlIGFyaWEtY29udHJvbHM9bWFpblByb3BlcnR5UGFuZWw+PHNwYW4gY2xhc3M9XCJjb2wgcHgtMVwiPkV4dGVuZGVkIHByb3BlcnRpZXM8L3NwYW4+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PWxvY2FsVmFycy5zaG93QmFzaWMgY2xhc3M9XCJmYXMgZmEtYW5nbGUtZG93blwiPjwvaT4gPGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLXNob3c9IWxvY2FsVmFycy5zaG93QmFzaWMgY2xhc3M9XCJmYXMgZmEtYW5nbGUtdXBcIj48L2k+PC9kaXY+PGRpdiBjbGFzcz1cIm1iLTQgY29sbGFwc2Ugc2hvd1wiIGlkPWV4dGVuZGVkUHJvcGVydHlQYW5lbD48ZGl2IG5nLWlmPSFmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemU+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkVsZW1lbnQgd2lkdGg8L2xhYmVsPiA8aW5wdXQgdHlwZT1yYW5nZSBtaW49MSBtYXg9MjQgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5FbGVtZW50V2lkdGggY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5MYWJlbCBsZW5ndGg8L2xhYmVsPiA8aW5wdXQgdHlwZT1yYW5nZSBtaW49MSBtYXg9MjQgbmctbW9kZWw9ZmQuTGFiZWxMZW5ndGggY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5WYWx1ZSBsZW5ndGg8L2xhYmVsPiA8aW5wdXQgdHlwZT1yYW5nZSBtaW49MSBtYXg9MjQgbmctbW9kZWw9ZmQuVmFsdWVMZW5ndGggY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+PC9kaXY+PGRpdiBuZy1pZj1mZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemU+PGRpdiBjbGFzcz1cIm1iLTEgc21hbGwgYm9sZFwiPkN1c3RvbSBzaXplPC9kaXY+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkxhYmVsIGxlbmd0aDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5MYWJlbFN0eWxlLldpZHRoIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+VmFsdWUgbGVuZ3RoPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkVsZW1lbnRTdHlsZS5XaWR0aCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48L2Rpdj48ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLWNoZWNrYm94XCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgaWQ9Y2JVc2VEZWZhdWx0IG5nLW1vZGVsPWZkLlVzZURlZmF1bHQ+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPWNiVXNlRGVmYXVsdD5TaG93IGRlZmF1bHQgdmFsdWU8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9XCJjdXN0b20tY29udHJvbCBjdXN0b20tY2hlY2tib3hcIj48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1jdXN0b20tY29udHJvbC1pbnB1dCBpZD1jYlNob3dGaWVsZCBuZy1tb2RlbD1mZC5TaG93RmllbGQ+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPWNiU2hvd0ZpZWxkPlNob3cgZmllbGQ8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9XCJjdXN0b20tY29udHJvbCBjdXN0b20tY2hlY2tib3hcIj48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1jdXN0b20tY29udHJvbC1pbnB1dCBpZD1jYlVzZVN5c3RlbURhdGUgbmctbW9kZWw9ZmQuVXNlU3lzdGVtRGF0ZT4gPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgbGFiZWwteHNcIiBmb3I9Y2JVc2VTeXN0ZW1EYXRlPlBvcHVsYXRlIHdpdGggc3lzdGVtIGRhdGUvdGltZTwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveFwiPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IGlkPWNiUmVhZE9ubHkgbmctbW9kZWw9ZmQuUmVhZE9ubHk+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPWNiUmVhZE9ubHk+UmVhZCBvbmx5PC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLWNoZWNrYm94XCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgaWQ9Y2JVcGRhdGVXaXRoRGVmYXVsdCBuZy1tb2RlbD1mZC5VcGRhdGVXaXRoRGVmYXVsdD4gPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgbGFiZWwteHNcIiBmb3I9Y2JVcGRhdGVXaXRoRGVmYXVsdD5VcGRhdGUgd2l0aCBkZWZhdWx0IHZhbHVlPC9sYWJlbD48L2Rpdj48bGFiZWw+RGVmYXVsdDoge3tmZC5EZWZhdWx0VmFsdWV9fTwvbGFiZWw+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveFwiPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IGlkPWNiTm9VcGRhdGUgbmctbW9kZWw9ZmQuTm9VcGRhdGU+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPWNiTm9VcGRhdGU+RG8gbm90IHVwZGF0ZSBvciBzZWFyY2ggdGhpcyBmaWVsZDwvbGFiZWw+PC9kaXY+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cIm10LTIgYnRuIGJ0bi14cyBidG4td2FybmluZ1wiIHRpdGxlPVwiRGVsZXRlIGNvbnRhaW5lclwiIG5nLWNsaWNrPWxvY2FsVmFycy5nc3J2Yy5jaGFuZ2VDb25maXJtRGVsZXRlRWxlbWVudCgpPjxpIGNsYXNzPVwiZmEgZmEtdHJhc2ggdGV4dC1kYXJrXCIgbmctY2xhc3M9XCJ7XFwnZGlzYWJsZWRcXCc6IGZvcm1QYXJhbXMuZm9ybUxvY2tlZH1cIj48L2k+IERlbGV0ZSBlbGVtZW50PC9idXR0b24+PGRpdiBjbGFzcz1teS0xPjxkaXYgbmctaWY9bG9jYWxWYXJzLmdzcnZjLmdldENvbmZpcm1EZWxldGVFbGVtZW50KCkgY2xhc3M9Y2FyZD48ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgcC0wIHB4LTEgYmctbGlnaHRcIj48c3BhbiBjbGFzcz1cImZhIGZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlIHRleHQtZGFuZ2VyXCI+PHNwYW4gY2xhc3M9XCJtbC0yIHNtYWxsXCI+RGVsZXRlIGVsZW1lbnQgY29uZmlybWF0aW9uPC9zcGFuPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPW15LTE+PGRpdiBjbGFzcz1cIm1sLTEgc21hbGwgYm9sZCB0ZXh0LWRhcmtcIj5DbGljayBDb25maXJtIHRvIGRlbGV0ZSBlbGVtZW50ITwvZGl2PjxkaXYgY2xhc3M9XCJtbC0xIHNtYWxsIHRleHQtZGFya1wiPlRoaXMgYWN0aW9uIG1heSByZXN1bHQgaW4gYSBsb3NzIG9mIGRhdGEhPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1wLTE+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4teHMgYnRuLWRhbmdlclwiIHRpdGxlPUNvbmZpcm0gbmctY2xpY2s9bG9jYWxWYXJzLmdzcnZjLmRlbGV0ZUVsZW1lbnQoZmQpPkNvbmZpcm0gPGkgY2xhc3M9XCJtbC0yIGZhIGZhLWNoZWNrXCI+PC9pPjwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWxvY2FsVmFycy5nc3J2Yy5zZXRDb25maXJtRGVsZXRlRWxlbWVudChmYWxzZSkgY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1saW5rIHRleHQtbXV0ZWQgbWwtYXV0b1wiPkNhbmNlbDwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdERhdGVQcm9wZXJ0aWVzLmh0bWwnLCc8ZGl2IG5nLWZvcm09a3RMaXN0UHJvcGVydGllc3t7ZmQuUHJlc2VudGF0aW9uSWR9fT48ZGl2IGt0LXByb3BlcnR5LWhlYWRlcj48L2Rpdj48ZGl2IG5nLWNsaWNrPVwibG9jYWxWYXJzLnNob3dCYXNpYyA9ICFsb2NhbFZhcnMuc2hvd0Jhc2ljXCIgY2xhc3M9XCJleHBhbmQtcHJvcGVydHktcGFuZWwgdGFnIGJvcmRlci1ib3R0b20gYm9yZGVyLXN1Y2Nlc3MgbXktMSBweS0xXCIgZGF0YS10b2dnbGU9Y29sbGFwc2UgaHJlZj0jbWFpblByb3BlcnR5UGFuZWwgcm9sZT1idXR0b24gYXJpYS1leHBhbmRlZD10cnVlIGFyaWEtY29udHJvbHM9bWFpblByb3BlcnR5UGFuZWw+PHNwYW4gY2xhc3M9XCJjb2wgcC0wXCI+QmFzaWM8L3NwYW4+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PWxvY2FsVmFycy5zaG93QmFzaWMgY2xhc3M9XCJmYXMgZmEtYW5nbGUtZG93blwiPjwvaT4gPGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLXNob3c9IWxvY2FsVmFycy5zaG93QmFzaWMgY2xhc3M9XCJmYXMgZmEtYW5nbGUtdXBcIj48L2k+PC9kaXY+PGRpdiBjbGFzcz1cIm1iLTQgY29sbGFwc2Ugc2hvd1wiIGlkPW1haW5Qcm9wZXJ0eVBhbmVsPjxkaXYgY2xhc3M9XCJtYi0xIGJvcmRlci1ib3R0b21cIj48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkIGJvbGRcIj5EYXRlIHR5cGU8L2xhYmVsPjwvZGl2PjxkaXY+PGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgbGFiZWwteHNcIj48aW5wdXQgdHlwZT1yYWRpbyBjbGFzcz1tci0xIG5nLW1vZGVsPWZkLkRidHlwZSB2YWx1ZT1kYXRlZmllbGRkZWZpbml0aW9uPiBEYXRlPC9sYWJlbD48L2Rpdj48ZGl2PjxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCI+PGlucHV0IHR5cGU9cmFkaW8gY2xhc3M9bXItMSBuZy1tb2RlbD1mZC5EYnR5cGUgdmFsdWU9ZGF0ZXRpbWVmaWVsZGRlZmluaXRpb24+IERhdGUgYW5kIHRpbWU8L2xhYmVsPjwvZGl2PjxkaXYgbmctaWY9ZmQuZGlyTG9hZGVkPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5EYXRlIGZvcm1hdDwvbGFiZWw+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnNMYW5nLmZvcm1hdDEgc2l6ZT1cIlxcJ3NtYWxsXFwnXCIgc2VsZWN0ZWQtaXRlbXM9ZmQuUGFyYW1ldGVyc0xhbmcuZm9ybWF0MSBpcy1tdWx0aXBsZT1mYWxzZSBuYW1lPWRhdGVGb3JtYXR7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctcmVxdWlyZWQ9dHJ1ZSBkcm9wZG93bi1pdGVtcz1mZC5kYXRlRm9ybWF0TGlzdCBkcm9wZG93bi1pZD1cIlxcJ2RhdGVGb3JtYXRcXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2RhdGVGb3JtYXRcXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCBkYXRlIGZvcm1hdFxcJ1wiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PC9kaXY+PGRpdiBuZy1pZj1cImZkLmRpckxvYWRlZCAmJiBmZC5EYnR5cGU9PVxcJ2RhdGV0aW1lZmllbGRkZWZpbml0aW9uXFwnXCI+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPlRpbWUgZm9ybWF0PC9sYWJlbD48a3QtZHJvcGRvd24tc3RhbmRhcmQgbmctbW9kZWw9ZmQuUGFyYW1ldGVyc0xhbmcuZm9ybWF0MiBzaXplPVwiXFwnc21hbGxcXCdcIiBzZWxlY3RlZC1pdGVtcz1mZC5QYXJhbWV0ZXJzTGFuZy5mb3JtYXQyIGlzLW11bHRpcGxlPWZhbHNlIG5hbWU9dGltZUZvcm1hdHt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1yZXF1aXJlZD10cnVlIGRyb3Bkb3duLWl0ZW1zPWZkLnRpbWVGb3JtYXRMaXN0IGRyb3Bkb3duLWlkPVwiXFwndGltZUZvcm1hdFxcJytmZC5QcmVzZW50YXRpb25JZFwiIHBhcmVudC1mb3JtLWlkPVwiXFwndGltZUZvcm1hdFxcJytmZC5QcmVzZW50YXRpb25JZFwiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IHRpbWUgZm9ybWF0XFwnXCI+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48L2Rpdj48YnI+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkxhYmVsPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5MYWJlbD4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkVycm9yIG1zZzwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuRXJyb3JNc2c+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5Gb3JtdWxhPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlZhbHVlRm9ybXVsYSA8IGRpdj48L2Rpdj48ZGl2IGt0LWZpZWxkLWV4dGVuZGVkLXByb3BlcnRpZXM+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0RGVsZXRlRWxlbWVudC5odG1sJywnPGRpdiBjbGFzcz1tdC0xPjxidXR0b24gdHlwZT1idXR0b24gbmctaWY9XCJmZC5FbGVtZW50VHlwZSE9XFwncmVzb3VyY2VpZFxcJ1wiIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi14cyBidG4td2FybmluZ1wiIHRpdGxlPVwiRGVsZXRlIGNvbnRhaW5lclwiIG5nLWNsaWNrPWxvY2FsVmFycy5nc3J2Yy5jaGFuZ2VDb25maXJtRGVsZXRlRWxlbWVudCgpPjxpIGNsYXNzPVwiZmEgZmEtdHJhc2ggdGV4dC1kYXJrXCIgbmctY2xhc3M9XCJ7XFwnZGlzYWJsZWRcXCc6IGZvcm1QYXJhbXMuZm9ybUxvY2tlZH1cIj48L2k+IERlbGV0ZSBlbGVtZW50PC9idXR0b24+PGRpdiBjbGFzcz1teS0xPjxkaXYgbmctaWY9bG9jYWxWYXJzLmdzcnZjLmdldENvbmZpcm1EZWxldGVFbGVtZW50KCkgY2xhc3M9Y2FyZD48ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgcC0wIHB4LTEgYmctbGlnaHRcIj48c3BhbiBjbGFzcz1cImZhIGZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlIHRleHQtZGFuZ2VyXCI+PHNwYW4gY2xhc3M9XCJtbC0yIHNtYWxsXCI+VGhpcyBhY3Rpb24gbWF5IHJlc3VsdCBpbiBhIGxvc3Mgb2YgZGF0YSE8L3NwYW4+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9bXQtMj48ZGl2IGNsYXNzPVwibWwtMSBzbWFsbCBib2xkIHRleHQtY2VudGVyIHRleHQtZGFya1wiPkNsaWNrIENvbmZpcm0gdG8gZGVsZXRlIGVsZW1lbnQhPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInAtMSB0ZXh0LWNlbnRlclwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1kYW5nZXJcIiB0aXRsZT1Db25maXJtIG5nLWNsaWNrPWxvY2FsVmFycy5nc3J2Yy5kZWxldGVFbGVtZW50KGZkKT5Db25maXJtIDxpIGNsYXNzPVwibWwtMiBmYSBmYS1jaGVja1wiPjwvaT48L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1sb2NhbFZhcnMuZ3NydmMuc2V0Q29uZmlybURlbGV0ZUVsZW1lbnQoZmFsc2UpIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tbGluayB0ZXh0LW11dGVkIG1sLWF1dG9cIj5DYW5jZWw8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3REb3dubG9hZC5odG1sJywnPGRpdiBjbGFzcz1cInJvdyBjb2wgZm9ybS1ncm91cCBteC0wIG10LTEgZGF0YXNldC1pdGVtXCIgbmctaWY9XCJmZC5TaG93RmllbGQgfHwgKGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xICYmIGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlIT0yKVwiIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX0uJGludmFsaWQsXFwnYmctZ3JheS0yMCBtci0wIGJvcmRlclxcJzpmZD09Z3NydmMuZ2V0U2VsZWN0ZWRGZCgpICYmIGdzcnZjLmdldEZpZWxkUHJvcGVydGllc09wZW5lZCgpIH1cIj48ZGl2IHN0eWxlPXt7ZmQubGFiZWxBbGlnbn19IGNsYXNzPXt7ZmQuZ3JpZENsYXNzTGFiZWx9fSBuZy1jbGFzcz1cIntcXCdjb2wtYXV0b1xcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemV9XCI+PGxhYmVsIG5nLWlmPSFmZC5QYXJhbWV0ZXJzLlNob3dBc0xpbmsga3Qtc3R5bGUtYXR0cmlidXRlIGZkPWZkIHN0eWxlLXR5cGU9XCJcXCdsYWJlbFxcJ1wiIHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVMYWJlbH19IG5nLWNsYXNzPVwie1xcJ2N1c3RvbS1lbC1sYXlvdXQtc3R5bGVcXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xfVwiPnt7ZmQuTGFiZWx9fTwvbGFiZWw+IDxhIG5nLWlmPWZkLlBhcmFtZXRlcnMuU2hvd0FzTGluayBocmVmPXt7ZmQuUGFyYW1ldGVycy5MaW5rVXJsfX0ga3Qtc3R5bGUtYXR0cmlidXRlIGZkPWZkIHN0eWxlLXR5cGU9XCJcXCdsYWJlbFxcJ1wiIHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVMYWJlbH19IG5nLWNsYXNzPVwie1xcJ2N1c3RvbS1lbC1sYXlvdXQtc3R5bGVcXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xfVwiPnt7ZmQuTGFiZWx9fTwvYT48ZGl2IGNsYXNzPVwiZWxlbWVudC1wcm9wZXJ0aWVzLWJ0bnMgYmctcHJpbWFyeSByb3VuZGVkIHNoYWRvd1wiIG5nLWlmPVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTJcIj48c3BhbiBjbGFzcz1cImxhYmVsIGxhYmVsLXhzIHRleHQtd2hpdGUgbXgtMSBib2xkXCI+e3tmZC5OYW1lfX08L3NwYW4+IDxhIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi14cyBwcm9wLWJ0biBlbGVtZW50LWRyYWctaGFuZGxlIHt7Z3JpZFR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlXCIgdGl0bGU9c29ydCBocmVmPjxpIGNsYXNzPVwiZWxlbWVudC1kcmFnLWhhbmRsZSB7e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZSBmYSBmYS1ncmlwLXZlcnRpY2FsXCI+PC9pPjwvYT4gPGEgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIHByb3AtYnRuXCIgaHJlZiB0aXRsZT1cIkZpZWxkIHByb3BlcnRpZXNcIiBuZy1jbGljaz1zaG93UHJvcGVydGllcygkZXZlbnQpPjxpIGNsYXNzPVwiZmEgZmEtY29nXCI+PC9pPjwvYT48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3REb3dubG9hZFByb3BlcnRpZXMuaHRtbCcsJzxkaXYgaWQ9a3REb3dubG9hZFByb3BlcnRpZXMgbmctZm9ybT1cIlxcJ2Rvd25vbGFkUHJvcGVydGllc1xcJytmZC5QcmVzZW50YXRpb25JZFwiIGNsYXNzPXAtMT48ZGl2IGt0LXByb3BlcnR5LWhlYWRlcj48L2Rpdj48ZGl2IG5nLWNsaWNrPVwibG9jYWxWYXJzLnNob3dCYXNpYyA9ICFsb2NhbFZhcnMuc2hvd0Jhc2ljXCIgY2xhc3M9XCJleHBhbmQtcHJvcGVydHktcGFuZWwgdGFnIGJvcmRlci1ib3R0b20gYm9yZGVyLXN1Y2Nlc3MgbXktMSBweS0xXCIgZGF0YS10b2dnbGU9Y29sbGFwc2UgaHJlZj0jbWFpblByb3BlcnR5UGFuZWwgcm9sZT1idXR0b24gYXJpYS1leHBhbmRlZD10cnVlIGFyaWEtY29udHJvbHM9bWFpblByb3BlcnR5UGFuZWw+PHNwYW4gY2xhc3M9XCJjb2wgcC0wXCI+QkFTSUM8L3NwYW4+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PWxvY2FsVmFycy5zaG93QmFzaWMgY2xhc3M9XCJmYXMgZmEtYW5nbGUtZG93blwiPjwvaT4gPGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLXNob3c9IWxvY2FsVmFycy5zaG93QmFzaWMgY2xhc3M9XCJmYXMgZmEtYW5nbGUtdXBcIj48L2k+PC9kaXY+PGRpdiBjbGFzcz1cIm1iLTIgY29sbGFwc2Ugc2hvd1wiIGlkPW1haW5Qcm9wZXJ0eVBhbmVsPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5MYWJlbCB0ZXh0PC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5MYWJlbD48ZGl2IGNsYXNzPjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbCBmb3I9Y2JTaG93RmllbGR7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JTaG93RmllbGR7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQuU2hvd0ZpZWxkIG5nLWNoZWNrZWQ9ZmQuU2hvd0ZpZWxkPiBTaG93IGxhYmVsPC9sYWJlbD48L2Rpdj48L2Rpdj48ZGl2IGt0LXdpZGdldC1kYXRhLXNvdXJjZS1kZWY+PC9kaXY+PGRpdiBuZy1jbGljaz1cImxvY2FsVmFycy5zaG93T3RoZXIgPSAhbG9jYWxWYXJzLnNob3dPdGhlclwiIGNsYXNzPVwiZXhwYW5kLXByb3BlcnR5LXBhbmVsIHRhZyBib3JkZXItYm90dG9tIGJvcmRlci1zdWNjZXNzIG15LTEgcHktMVwiIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIGhyZWY9I2Zvcm11bGFQcm9wZXJ0eVBhbmVsIHJvbGU9YnV0dG9uIGFyaWEtZXhwYW5kZWQ9dHJ1ZSBhcmlhLWNvbnRyb2xzPW1haW5Qcm9wZXJ0eVBhbmVsPjxzcGFuIGNsYXNzPVwiY29sIHAtMFwiPlRyYW5mb3JtYXRpb25zPC9zcGFuPiA8aSBzdHlsZT1cImZvbnQtc2l6ZTogbGFyZ2U7XCIgbmctc2hvdz1sb2NhbFZhcnMuc2hvd0Jhc2ljIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLWRvd25cIj48L2k+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PSFsb2NhbFZhcnMuc2hvd0Jhc2ljIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLXVwXCI+PC9pPjwvZGl2PjxkaXYgZm9ybXVsYSBjbGFzcz1cIm1iLTIgY29sbGFwc2VcIiBpZD1mb3JtdWxhUHJvcGVydHlQYW5lbD48bGFiZWwgY2xhc3M9XCJrdC1jaGVja2JveC1sYWJlbCBtdC0xXCIgZm9yPWRpc2FibGVmb3JtYXR7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IG5hbWU9ZGlzYWJsZWZvcm1hdHt7ZmQuUHJlc2VudGF0aW9uSWR9fSB0eXBlPWNoZWNrYm94IGNsYXNzPWt0LWNoZWNrYm94LXByb3BlcnRpZXMgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy51cGRhdGVEb2NQcm9wZXJ0aWVzPiBVcGRhdGUgZG9jdW1lbnQgcHJvcGVydGllczwvbGFiZWw+PGRpdiBjbGFzcz1tdC0xPkRvY3VtZW50IHByb3BlcnRpZXMgbWFwOiA8dGV4dGFyZWEgcm93cz0xMCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5wcm9wZXJ0eU1hcD5cXHJcXG4gICAgICAgICAgICAgICAgICAgICAgIDwvdGV4dGFyZWE+PC9kaXY+PGRpdiBuZy1mb3JtPVwiXFwnc291cmNlRmlsZVxcJytmZC5QcmVzZW50YXRpb25JZFwiIGNsYXNzPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5Tb3VyY2UgZmlsZSB0eXBlPC9sYWJlbD48a3QtZHJvcGRvd24tc3RhbmRhcmQgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5GaWxlRGVmSWQgc2l6ZT1cIlxcJ3NtYWxsXFwnXCIgbmctY2hhbmdlPWZkLmxvY2FsVmFycy5maWxlU2VsZWN0ZWQoZmQuUGFyYW1ldGVycy5GaWxlRGVmSWQpIHNlbGVjdGVkLWl0ZW1zPWZkLlBhcmFtZXRlcnMuRmlsZURlZklkIGlzLW11bHRpcGxlPWZhbHNlIG5hbWU9c291cmNlRmlsZXt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1yZXF1aXJlZD1mYWxzZSBkcm9wZG93bi1pdGVtcz1mZC5sb2NhbFZhcnMubGlzdE9mRmlsZVR5cGVzIGRyb3Bkb3duLWlkPVwiXFwnc291cmNlRmlsZVxcJytmZC5QcmVzZW50YXRpb25JZFwiIHBhcmVudC1mb3JtLWlkPVwiXFwnc291cmNlRmlsZVxcJytmZC5QcmVzZW50YXRpb25JZFwiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IGZpbGUgdHlwZVxcJ1wiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PC9kaXY+PGRpdiBuZy1mb3JtPVwiXFwnc291cmNlRmlsZVJlY29yZFxcJytmZC5QcmVzZW50YXRpb25JZFwiIGNsYXNzPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5Tb3VyY2UgZmlsZSByZWNvcmQ8L2xhYmVsPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1pZj1mZC5sb2NhbFZhcnMuZmlsZVJlY29yZHMgbmctbW9kZWw9ZmQubG9jYWxWYXJzLnJlY29yZFNlbGVjdGVkIHNpemU9XCJcXCdzbWFsbFxcJ1wiIHNlbGVjdGVkLWl0ZW1zPWZkLmxvY2FsVmFycy5yZWNvcmRTZWxlY3RlZCBuZy1jaGFuZ2U9ZmQubG9jYWxWYXJzLmZpbGVSZWNvcmRTZWxlY3RlZChmZC5sb2NhbFZhcnMucmVjb3JkU2VsZWN0ZWQpIGlzLW11bHRpcGxlPWZhbHNlIG5hbWU9c291cmNlRmlsZXt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1yZXF1aXJlZD1mYWxzZSBkcm9wZG93bi1pdGVtcz1mZC5sb2NhbFZhcnMuZmlsZVJlY29yZHMgZHJvcGRvd24taWQ9XCJcXCdzb3VyY2VGaWxlUmVjb3JkXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgcGFyZW50LWZvcm0taWQ9XCJcXCdzb3VyY2VGaWxlXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgZmlsZSByZWNvcmQgXFwnXCI+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48c3BhbiBuZy1pZj0hZmQubG9jYWxWYXJzLmZpbGVSZWNvcmRzIGNsYXNzPVwic21hbGwgbWwtMiB0ZXh0LWRhbmdlclwiPk5vIHJlY29yZHMgZm9yIHt7ZmQuUGFyYW1ldGVycy5GaWxlRGVmSWQubmFtZX19PC9zcGFuPjwvZGl2PjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5GaWxlIGlkIGZvcm11bGE8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuRmlsZUlkRm9ybXVsYT48L2Rpdj48ZGl2IGRlbGV0ZS1lbGVtZW50IGNsYXNzPW10LTE+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1pZj1cImZkLkVsZW1lbnRUeXBlIT1cXCdyZXNvdXJjZWlkXFwnXCIgY2xhc3M9XCJ3LTEwMCBidG4gYnRuLXhzIGJ0bi13YXJuaW5nXCIgdGl0bGU9XCJEZWxldGUgY29udGFpbmVyXCIgbmctY2xpY2s9ZmQubG9jYWxWYXJzLmdzcnZjLmNoYW5nZUNvbmZpcm1EZWxldGVFbGVtZW50KCk+PGkgY2xhc3M9XCJmYSBmYS10cmFzaCB0ZXh0LWRhcmtcIiBuZy1jbGFzcz1cIntcXCdkaXNhYmxlZFxcJzogZm9ybVBhcmFtcy5mb3JtTG9ja2VkfVwiPjwvaT4gRGVsZXRlIGVsZW1lbnQ8L2J1dHRvbj48ZGl2IGNsYXNzPW15LTE+PGRpdiBuZy1pZj1mZC5sb2NhbFZhcnMuZ3NydmMuZ2V0Q29uZmlybURlbGV0ZUVsZW1lbnQoKSBjbGFzcz1jYXJkPjxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBwLTAgcHgtMSBiZy1saWdodFwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtZXhjbGFtYXRpb24tdHJpYW5nbGUgdGV4dC1kYW5nZXJcIj48c3BhbiBjbGFzcz1cIm1sLTIgc21hbGxcIj5UaGlzIGFjdGlvbiBtYXkgcmVzdWx0IGluIGEgbG9zcyBvZiBkYXRhITwvc3Bhbj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1tdC0yPjxkaXYgY2xhc3M9XCJtbC0xIHNtYWxsIGJvbGQgdGV4dC1jZW50ZXIgdGV4dC1kYXJrXCI+Q2xpY2sgQ29uZmlybSB0byBkZWxldGUgZWxlbWVudCE8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicC0xIHRleHQtY2VudGVyXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4teHMgYnRuLWRhbmdlclwiIHRpdGxlPUNvbmZpcm0gbmctY2xpY2s9ZmQubG9jYWxWYXJzLmdzcnZjLmRlbGV0ZUVsZW1lbnQoZmQpPkNvbmZpcm0gPGkgY2xhc3M9XCJtbC0yIGZhIGZhLWNoZWNrXCI+PC9pPjwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5nc3J2Yy5zZXRDb25maXJtRGVsZXRlRWxlbWVudChmYWxzZSkgY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1saW5rIHRleHQtbXV0ZWQgbWwtYXV0b1wiPkNhbmNlbDwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdERyb3Bkb3duLmh0bWwnLCc8ZGl2IGNsYXNzPWRyb3Bkb3duPjxkaXYgbmctaWY9c2hvd1NlYXJjaElucHV0IGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgY29sIHAtMFwiPjxpbnB1dCBhdXRvZm9jdXMgaWQ9e3s6OnBhcmVudEZvcm1JZH19Lnt7Ojpkcm9wZG93bklkfX1zZWFyY2ggbmctY2hhbmdlPWxvYWRJdGVtc09uQ2hhbmdlKCkgbmctbW9kZWwtb3B0aW9ucz1cInsgZGVib3VuY2U6IDEwMDAgfVwiIG5nLW1vZGVsPXNlYXJjaC5zZWFyY2hGaWx0ZXIgdHlwZT10ZXh0IG5nLWtleWRvd249cHJvY2Vzc0tleWJvYXJkRW50cnkoJGV2ZW50LC0xKSBwbGFjZWhvbGRlcj1cIlNlYXJjaCBpdGVtc1wiIG5hbWU9e3s6OnBhcmVudEZvcm1JZH19Lnt7Ojpkcm9wZG93bklkfX1zZWFyY2ggY2xhc3M9Zm9ybS1jb250cm9sPjwvZGl2PjxidXR0b24gdHlwZT1idXR0b24gaHJlZiBzdHlsZT1vdmVyZmxvdy15Om92ZXJsYXkgbmcta2V5ZG93bj1wcm9jZXNzS2V5Ym9hcmRFbnRyeSgkZXZlbnQsLTEpIG5nLWNsYXNzPVwie1xcJ3Zpc2liaWxpdHktaGlkZGVuXFwnOnNob3dTZWFyY2hJbnB1dCxcXCdpcy1pbnZhbGlkIGJvcmRlci1kYW5nZXJcXCc6KGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnt7Ojpkcm9wZG93bklkfX0uJHRvdWNoZWQpICYmIGZvcm0ue3s6OmRyb3Bkb3duSWR9fS4kaW52YWxpZH1cIiBuZy1ibHVyPWRyb3Bkb3duQmx1cnJlZCgpIGNsYXNzPVwicC0xIHctMTAwIGJvcmRlciBidG4gZm9ybS1jb250cm9sXCIgdGl0bGUgaWQ9e3s6OnBhcmVudEZvcm1JZH19Lnt7Ojpkcm9wZG93bklkfX0gZGF0YS10b2dnbGU9ZHJvcGRvd24gYXJpYS1oYXNwb3B1cD10cnVlIGFyaWEtZXhwYW5kZWQ9ZmFsc2U+PGRpdiBjbGFzcz1cInJvdyBtLTAgdGV4dC1sZWZ0XCI+PGRpdiBjbGFzcz1cImNvbCBweC0xXCI+PHNwYW4gbmctc2hvdz1cInNlbGVjdGVkSXRlbSE9bnVsbFwiIGNsYXNzPXt7OjpzaXplfX0gc3R5bGU9XCJvdmVyZmxvdy15OiBoaWRkZW5cIj57e3NlbGVjdGVkSXRlbS5uYW1lfX08L3NwYW4+IDxzcGFuIG5nLXNob3c9XCJzZWxlY3RlZEl0ZW09PW51bGxcIiBjbGFzcz1cInRleHQtbXV0ZWQtc3Ryb25nIHt7OjpzaXplfX1cIiBzdHlsZT1cIm92ZXJmbG93LXk6IGhpZGRlblwiPnt7c2VhcmNoVGV4dH19PC9zcGFuPjwvZGl2PjxkaXYgbmctaWY9ZmFsc2UgY2xhc3M9Y29sLWF1dG8+PGEgY2xhc3M9XCJidG4gYnRuLXhzIHB4LTEgYnRuLW91dGxpbmUtZGFuZ2VyIGJvcmRlci0wXCIgbmctY2xpY2s9Y2xlYXIoJGV2ZW50KT48aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPjwvYT48L2Rpdj48ZGl2IG5nLWhpZGU9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ue3s6OmRyb3Bkb3duSWR9fS4kdG91Y2hlZCkgJiYgZm9ybS57ezo6ZHJvcGRvd25JZH19LiRpbnZhbGlkXCIgY2xhc3M9Y29sLWF1dG8+PGkgY2xhc3M9XCJmYSBmYS1jYXJldC1kb3duXCI+PC9pPjwvZGl2PjwvZGl2PjwvYnV0dG9uPjxkaXYgbmctaWY9XCJpc011bHRpcGxlICYmIHNlbGVjdGVkSXRlbXMubGVuZ3RoPjBcIiBjbGFzcz1cImJvcmRlci1ib3R0b20gYm9yZGVyLXJpZ2h0IGJvcmRlci1sZWZ0IHJvdW5kZWQtYm90dG9tIHB0LTIgbXQtbjJcIj48ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc2Vjb25kYXJ5IG0tMVwiIG5nLXJlcGVhdD1cInNpIGluIHNlbGVjdGVkSXRlbXMgdHJhY2sgYnkgc2kuaWRcIj48c3BhbiBjbGFzcz17ezo6c2l6ZX19Pnt7c2kubmFtZX19PC9zcGFuPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tb3V0bGluZS1kYW5nZXIgYm9yZGVyLTBcIiBuZy1jbGljaz1yZW1vdmVJdGVtKCRpbmRleCk+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBzaGFkb3cgdy0xMDBcIiBhcmlhLWxhYmVsbGVkYnk9e3s6OnBhcmVudEZvcm1JZH19Lnt7Ojpkcm9wZG93bklkfX0gc3R5bGU9XCJ6LWluZGV4OiAxMDUwO1wiPjxkaXYgc3R5bGU9XCJtYXgtaGVpZ2h0OjIwcmVtO292ZXJmbG93LXk6YXV0bzt3aWR0aDogaW5oZXJpdFwiPjxkaXYgbmctcmVwZWF0PVwiZGkgaW4gZHJvcGRvd25JdGVtc0ZpbHRlcmVkIHRyYWNrIGJ5IGRpLmlkXCIgbmcta2V5ZG93bj1wcm9jZXNzS2V5Ym9hcmRFbnRyeSgkZXZlbnQsJGluZGV4KSBjbGFzcz1cInRleHQtcHJpbWFyeSBkcm9wZG93bi1saXN0LWl0ZW0gbWItMVwiPjxhIG5nLWlmPTo6ISFpc011bHRpcGxlIGhyZWYgaWQ9e3s6OnBhcmVudEZvcm1JZH19Lnt7Ojpkcm9wZG93bklkfX0uRHJvcGRvd25JdGVte3s6OmRpLmlkfX0gY2xhc3M9XCJjb2wgZHJvcGRvd24tbGlzdC1pdGVtIHt7OjpzaXplfX1cIiBuZy1jbGljaz1zZWxlY3RJdGVtKCRldmVudCxkaSk+PGkgY2xhc3M9bXgtMiBuZy1jbGFzcz1cImlzU2VsZWN0ZWRNdWx0aXBsZShkaSkgPyBcXCdmYXIgZmEtY2hlY2stc3F1YXJlXFwnOlxcJ2ZhciBmYS1zcXVhcmVcXCdcIj48L2k+PHNwYW4+e3s6OmRpLm5hbWV9fTwvc3Bhbj48L2E+IDxhIG5nLWlmPVwiOjohIWlzTXVsdGlwbGU9PWZhbHNlXCIgaHJlZiBpZD17ezo6cGFyZW50Rm9ybUlkfX0ue3s6OmRyb3Bkb3duSWR9fS5Ecm9wZG93bkl0ZW17ezo6ZGkuaWR9fSBuZy1jbGljaz1zZWxlY3RJdGVtKCRldmVudCxkaSkgY2xhc3M9XCJjb2wgZHJvcGRvd24tbGlzdC1pdGVtXCI+e3s6OmRpLm5hbWV9fTwvYT48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwic2VsZWN0ZWRJdGVtIT1udWxsXCIgY2xhc3M9XCJ0ZXh0LXJpZ2h0IHNtYWxsIHB4LTJcIj48YSBocmVmIGNsYXNzPVwic21hbGwgdGV4dC1kYW5nZXJcIiBuZy1jbGljaz1jbGVhcigkZXZlbnQpPnt7OjpjbGVhckNsb3NlTGlua319PC9hPjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdERyb3Bkb3duTXVsdGlwbGUuaHRtbCcsJzxkaXYgaWQ9ZHJvcGRvd25tdWx0aXBsZXt7OjokaWR9fSB0YWJpbmRleD0wIG5nLWtleXByZXNzPW9uS2V5ZG93bigkZXZlbnQpIG5nLWZvY3VzPW9uRm9jdXMoJGV2ZW50KT48ZGl2IGNsYXNzPVwiZC1mbGV4IHAtMSB3LTEwMCBib3JkZXIgcm91bmRlZCBiZy13aGl0ZVwiIHN0eWxlPVwibWluLWhlaWdodDogMzhweDtcIiBuZy1jbGljaz1zd2l0Y2hNb2RlKCRldmVudCk7PjxkaXYgY2xhc3M9YmFkZ2Vjb250YWluZXI+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCBwLTAgZXhwYW5kLXByb3BlcnR5LXBhbmVsXCIgcm9sZT1idXR0b24gYXJpYS1leHBhbmRlZD10cnVlIGFyaWEtY29udHJvbHM9bWFpblByb3BlcnR5UGFuZWw+PGRpdiBuZy1pZj1cInNlbGVjdGVkSXRlbXMubGVuZ3RoPT0wXCIgc3R5bGU9XCJjb2xvcjojQjdCQUM0OyBtYXJnaW4tcmlnaHQ6IGF1dG87XCIgY2xhc3M+e3tzZWFyY2hUZXh0fX08L2Rpdj48aSBpZD1kcm9wZG93bmVkaXRtb2Rle3s6OiRpZH19IHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBjbGFzcz1cImZhcyBmYS1hbmdsZS1kb3duIHB4LTFcIj48L2k+IDxpIHN0eWxlPVwicG9zaXRpb246YWJzb2x1dGU7Zm9udC1zaXplOiBsYXJnZTt2aXNpYmlsaXR5OmhpZGRlblwiIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLXVwIG1yLTFcIj48L2k+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0RHJvcGRvd25TdGFuZGFyZC5odG1sJywnPHN0eWxlPlxcclxcbiAgICBkaXYgPiAuc2hvd09uSG92ZXIge1xcclxcbiAgICAgICAgdmlzaWJpbGl0eTpoaWRkZW5cXHJcXG4gICAgfSBcXHJcXG5cXHRcXHJcXG4gICAgZGl2OmhvdmVyID4gLnNob3dPbkhvdmVyIHtcXHJcXG4gICAgICAgIHZpc2liaWxpdHk6dmlzaWJsZVxcclxcbiAgICB9ICBcXHJcXG5cXHJcXG4gICAgc2VsZWN0LmZvcm0tY29udHJvbDpmb2N1cyB+IC5zaG93T25Ib3ZlciB7XFxyXFxuICAgICAgICB2aXNpYmlsaXR5OnZpc2libGVcXHJcXG4gICAgfSAgIFxcclxcbiAgICAgIFxcclxcbiAgICBzZWxlY3QuZm9ybS1jb250cm9sLmlzLWludmFsaWQge1xcclxcbiAgICBib3JkZXItY29sb3I6ICNkYzM1NDU7XFxyXFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XFxyXFxufVxcclxcblxcclxcbjwvc3R5bGU+PGRpdiBpZGQ9a3REcm9wZG93blN0YW5kYXJkIGNsYXNzPVwicm93IG0tMFwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO21pbi1oZWlnaHQ6IDMwcHg7XCI+PHNlbGVjdCBuZy1pZj0haXNNdWx0aXBsZSBjbGFzcz1mb3JtLWNvbnRyb2wgbmFtZT17ezo6ZHJvcGRvd25JZH19IG5nLWNsYXNzPVwie1xcJ3RleHQtcGxhY2Vob2xkZXJcXCc6ICFtb2RlbC5pZCAsIFxcJ2Zvcm0tY29udHJvbC14c1xcJzpzaXplPT1cXCdzbWFsbFxcJyxcXCdpcy1pbnZhbGlkXFwnIDogKCRwYXJlbnQuZm9ybS4kc3VibWl0dGVkIHx8ICRwYXJlbnQuZm9ybS57ezo6ZHJvcGRvd25JZH19LiR0b3VjaGVkKSAmJiAkcGFyZW50LmZvcm0ue3s6OmRyb3Bkb3duSWR9fS4kaW52YWxpZCB9XCIgbmctY2hhbmdlPXNlbGVjdEl0ZW0oKSBuZy1yZXF1aXJlZD06OnJlcXVpcmVkRmllbGQgbmctbW9kZWw9bW9kZWwuaWQ+PG9wdGlvbiBuZy1pZj0hcmVxdWlyZWRGaWVsZCB2YWx1ZSBzZWxlY3RlZCBjbGFzcz10ZXh0LWxpZ2h0Pnt7c2VhcmNoVGV4dH19PC9vcHRpb24+PG9wdGlvbiBuZy1pZj1yZXF1aXJlZEZpZWxkIHZhbHVlIGhpZGRlbiBkaXNhYmxlZCBzZWxlY3RlZCBjbGFzcz10ZXh0LWxpZ2h0Pnt7c2VhcmNoVGV4dH19PC9vcHRpb24+PG9wdGlvbiBzdHlsZT1jb2xvcjpibGFjayBuZy1yZXBlYXQ9XCJ2YWwgaW4gZHJvcGRvd25JdGVtcyB0cmFjayBieSB2YWwuaWRcIiBuZy12YWx1ZT06OnZhbC5pZD57ezo6dmFsLm5hbWV9fTwvb3B0aW9uPjwvc2VsZWN0PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdER5bmFtaWNSZXNvdXJjZS5odG1sJywnPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcGItMSByb3cgbS0wIGRhdGFzZXQtaXRlbSBkeW5hbWljLXJlc291cmNlXCIgbmctaWY9XCJmZC5TaG93RmllbGQgfHwgKGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xICYmIGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlIT0yKVwiIG5nLWZvcm09aW5uZXJGb3Jte3s6OmZkLkl0ZW1JZH19IG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlclxcJyA6IChpbm5lckZvcm17e2ZkLkl0ZW1JZH19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS5EYXRhc2V0e3tmZC5JdGVtSWR9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS5EYXRhc2V0e3tmZC5JdGVtSWR9fS4kaW52YWxpZCxcXCdiZy1ncmF5LTIwIG1yLTAgYm9yZGVyXFwnOmZkLkl0ZW1JZD09Z3NydmMuZ2V0U2VsZWN0ZWRJdGVtSWQoKSAmJiBnc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKSB9XCI+PGRpdiBuZy1pZj1cImZkLlBhcmFtZXRlcnMuRGVmU3RhdGUhPVxcJ2Jhc2ljXFwnICYmIGZkLlByZXNlbnRhdGlvblR5cGU+PTBcIiBuZy1oaWRlPVwiKGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlPT0yIHx8IGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yKSAmJiBmZC5QYXJhbWV0ZXJzLkhpZGVMYWJlbFwiIHN0eWxlPXt7ZmQubGFiZWxBbGlnbn19IGNsYXNzPXt7ZmQuZ3JpZENsYXNzTGFiZWx9fSBuZy1jbGFzcz1cIntcXCdjb2wtYXV0b1xcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemV9XCI+PGxhYmVsIGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnbGFiZWxcXCdcIiBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlTGFiZWx9fSBmb3I9e3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19IGNsYXNzPVwicHQtMiBtYXJnaW5MNSBmb3JtLWNvbnRyb2wtbGFiZWwgbm8tYm9yZGVyIGFsaWduLW1pZGRsZVwiIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlclxcJyA6IChpbm5lckZvcm17e2ZkLkl0ZW1JZH19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0uJGludmFsaWQsXFwnY3VzdG9tLWVsLWxheW91dC1zdHlsZVxcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTF9XCI+e3tmZC5MYWJlbH19PC9sYWJlbD48L2Rpdj48ZGl2IG5nLWlmPVwiZmQuUGFyYW1ldGVycy5EZWZTdGF0ZSE9XFwnYmFzaWNcXCdcIiBzdHlsZT1cInZpc2liaWxpdHk6dmlzaWJsZSAhaW1wb3J0YW50XCIgY2xhc3M9XCJibHVlLWRyb3Bkb3duIHJvdW5kZWQgc2hhZG93XCI+PGRpdiBjbGFzcz1cImVsZW1lbnQtcHJvcGVydGllcy1idG5zIGJnLXByaW1hcnkgcm91bmRlZCBzaGFkb3cgbXQtMlwiIG5nLWlmPVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTJcIj48c3BhbiBjbGFzcz1cImxhYmVsIGxhYmVsLXhzIHRleHQtd2hpdGUgbWwtMSBib2xkXCI+e3tmZC5OYW1lfX08L3NwYW4+IDxhIGhyZWYgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIHByb3AtYnRuIGVsZW1lbnQtZHJhZy1oYW5kbGVcIiB0aXRsZT1zb3J0PjxpIGNsYXNzPVwiZWxlbWVudC1kcmFnLWhhbmRsZSBmYSBmYS1ncmlwLXZlcnRpY2FsXCI+PC9pPjwvYT4gPGEgaHJlZiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4teHMgcHJvcC1idG5cIiBuZy1jbGljaz1nc3J2Yy5zZXRGaWVsZFByb3BlcnRpZXMoZmQsJGV2ZW50KT48aSBjbGFzcz1cImZhIGZhLWNvZ1wiPjwvaT48L2E+IDxhIG5nLWlmPVwiZmQuUmVsYXRlZD09dW5kZWZpbmVkIHx8IGZkLlJlbGF0ZWQ9PW51bGxcIiB0aXRsZT1cIkVycm9ycyBpbiBkZWZpbml0aW9uXCIgaHJlZiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIGJ0bi14cyBwcm9wLWJ0blwiIG5nLWNsaWNrPWdzcnZjLnNldEZpZWxkUHJvcGVydGllcyhmZCwkZXZlbnQpPjxpIGNsYXNzPVwiZmEgZmEtZXhjbGFtYXRpb25cIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3MgYXJpYS1sYWJlbGxlZGJ5PW1hc3MtcHJvcGVydHkte3tmZC5QcmVzZW50YXRpb25JZH19IGt0LW1hc3MtdXBkYXRlLXByb3BlcnRpZXM+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlByZXNlbnRhdGlvblR5cGU9PTIgJiYgZmQuUGFyYW1ldGVycy5EZWZTdGF0ZSE9XFwnYmFzaWNcXCcgJiYgZmQuZm9ybUxvYWRlZFwiIGNsYXNzPVwie3tmZC5ncmlkQ2xhc3NFbGVtZW50fX0gcC0wIG15LWF1dG9cIj48ZGl2IGt0LWdyaWQgZ3JpZC10eXBlPWxvY2FsVmFyc1tmZC5pZF0uZ3JpZHN0ZXJUeXBlIHNob3ctc2VhcmNoLWZpbHRlcnM9bG9jYWxWYXJzW2ZkLmlkXS5zaG93U2VhcmNoRmlsdGVycyByZXNvdXJjZS1mb3JtLWxvYWRlZD1mZC5mb3JtTG9hZGVkIHBhcmVudC1yZXNvdXJjZS1kZWYtaWQ9ZmQuUGFyZW50RGF0YXNldERlZklkIHJlc291cmNlLXJlY29yZC1pZD1sb2NhbFZhcnNbZmQuaWRdLmRhdGFzZXRSZWNvcmRJZCByZXNvdXJjZS1kZWZpbml0aW9uPXJlc291cmNlRGVmaW5pdGlvbiBmb3JtLXBhcmFtcz1sb2NhbFZhcnNbZmQuaWRdLmZvcm1QYXJhbXMgZm9ybS1wYXJhbXMtcGFyZW50PWZvcm1QYXJhbXMgZm9ybS1kYXRhPWxvY2FsVmFyc1tmZC5pZF0ud2lkZ2V0U3RhdGUuZm9ybURhdGEgcGFyZW50PWZkLkZvcm1EZWZTZWFyY2ggYWxsLWNvbHVtbnM9ZmQuRm9ybURlZlNlYXJjaD48L2Rpdj48YnV0dG9uIG5nLWlmPWZhbHNlIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYnRuLXhzXCIgbmctY2xpY2s9bG9jYWxWYXJzW2ZkLmlkXS5TZWxlY3RSZWNvcmRzKCk+PGkgY2xhc3M9XCJmYSBmYS1zYXZlXCI+PC9pPkFwcGx5IHNlYXJjaDwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJ7e2ZkLmdyaWRDbGFzc0VsZW1lbnR9fSBteS1hdXRvXCIgbmctaWY9XCJmZC5QYXJhbWV0ZXJzLkRlZlN0YXRlIT1cXCdiYXNpY1xcJ1wiPjxkaXYgbmctaWY9XCJmZC5QcmVzZW50YXRpb25UeXBlPT0xICYmICFmZC5SZWFkT25seVwiPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1pZj1cImZkLmRhdGFzZXRJdGVtcyAmJiAhZmQuTXVsdGlsaW5lXCIgbmctbW9kZWw9aXRlbVZhbHVlLnZhbCBpcy1tdWx0aXBsZT1mYWxzZSBzZWxlY3RlZC1pdGVtcz1pdGVtVmFsdWUudmFsIHJlcXVpcmVkLWZpZWxkPWZkLlJlcXVpcmVkIGRyb3Bkb3duLWl0ZW1zPWZkLmRhdGFzZXRJdGVtcyBkcm9wZG93bi1pZD1mZC5OYW1lK2ZkLkl0ZW1JZCBwYXJlbnQtZm9ybS1pZD1cIlxcJ2lubmVyRm9ybVxcJytmZC5JdGVtSWRcIiBzZWFyY2gtdGV4dD1mZC5TZWFyY2hUZXh0Pjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PGRpdiBuZy1pZj0hZmQuZGF0YXNldEl0ZW1zIGNsYXNzPWZvcm0tY29udHJvbD5EYXRhc2V0IHBsYWNlaG9sZGVyPC9kaXY+PGt0LWRyb3Bkb3duLW11bHRpcGxlIG5nLWlmPWZkLk11bHRpbGluZSBuZy1tb2RlbD1mb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdIHNlbGVjdGVkLWl0ZW1zPWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0gbmFtZT1EYXRhc2V0e3tmZC5JdGVtSWR9fSByZXF1aXJlZD1mZC5SZXF1aXJlZCBkcm9wZG93bi1pdGVtcz1mZC5kYXRhc2V0SXRlbXMgZHJvcGRvd24taWQ9XCJcXCdEYXRhc2V0XFwnK2ZkLkl0ZW1JZFwiIHBhcmVudC1mb3JtLWlkPVwiXFwnaW5uZXJGb3JtXFwnK2ZkLkl0ZW1JZFwiIHNlYXJjaC10ZXh0PWZkLlNlYXJjaFRleHQ+PC9rdC1kcm9wZG93bi1tdWx0aXBsZT48cCBuZy1jbGFzcz1cIntcXCdpbnZhbGlkLXRvb2x0aXAgcmlnaHQtMCBtci0zXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCd0b29sdGlwXFwnIHx8IGZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT11bmRlZmluZWQsXFwnaW52YWxpZC1mZWVkYmFja1xcJzpmZC5QYXJhbWV0ZXJzLkVycm9yTXNnVHlwZT09XFwnZmVlZGJhY2tcXCcsXFwnZC1ibG9ja1xcJzooaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17e2ZkLkl0ZW1JZH19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fS4kaW52YWxpZH1cIj57e2ZkLkVycm9yTXNnfX08L3A+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlByZXNlbnRhdGlvblR5cGU9PTEgJiYgZmQuUmVhZE9ubHlcIj48ZGl2IG5nLWlmPVwiZm9ybURhdGFbMF1bZmQuRmllbGROYW1lXS5sZW5ndGg9PTBcIiBjbGFzcz1cImJvcmRlciBwLTEgcm91bmRlZC0wXCI+MCB7e2ZkLkxhYmVsfX0gc2VsZWN0ZWQ8L2Rpdj48ZGl2IG5nLWlmPVwiKGZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV09PXVuZGVmaW5lZCB8fCBmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdPT1udWxsKSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZT09MVwiIGNsYXNzPVwiYm9yZGVyIHAtMSByb3VuZGVkIGJnLXdoaXRlXCI+RGF0YXNldCByZWNvcmRzIHBsYWNlaG9sZGVyPC9kaXY+PGRpdiBuZy1pZj1cIihmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdPT11bmRlZmluZWQgfHwgZm9ybURhdGFbMF1bZmQuRmllbGROYW1lXT09bnVsbCkgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGU9PTJcIiBjbGFzcz1cImJvcmRlciBwLTEgcm91bmRlZCBiZy13aGl0ZVwiPk5vIGRhdGE8L2Rpdj48ZGl2IG5nLWlmPVwiZm9ybURhdGFbMF1bZmQuRmllbGROYW1lXS5sZW5ndGg+MCAmJiBmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdWzBdLmlkIT11bmRlZmluZWRcIiBjbGFzcz1cInB0LTIgbXQtbjJcIj48ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc2Vjb25kYXJ5IG0tMVwiIG5nLXJlcGVhdD1cIml0ZW0gaW4gZm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSB0cmFjayBieSBpdGVtLmlkXCI+PHNwYW4gY2xhc3M+e3tpdGVtLm5hbWV9fTwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IHN0eWxlPVwibWluLWhlaWdodDogMzVweDtcIiBjbGFzcz1cImJvcmRlciBwLTEgbWItMCByb3VuZGVkIGJnLXdoaXRlXCI+e3tmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdLm5hbWV9fXt7Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXVswXS5uYW1lfX08L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXJvdyBuZy1pZj1mYWxzZT48YnV0dG9uIG5nLWlmPVwic2hvd1NlYXJjaEZpbHRlcnMgfHwgKGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xICYmIGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlIT0yKVwiIHR5cGU9YnV0dG9uIHRpdGxlPXt7ZmQuU2VhcmNoLm5hbWV9fSBuZy1jbGFzcz1cIntcXCdtbC0zXFwnOmZkLlByZXNlbnRhdGlvblR5cGU9PTB9XCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IHJvdW5kZWQtMFwiIGhyZWYgdWliLXBvcG92ZXItdGVtcGxhdGU9XCJcXCdyZXNvdXJjZXNlYXJjaHByb3BlcnRpZXMuaHRtbFxcJ1wiIG5nLWNsaWNrPVwiaXNPcGVuPVRydWVcIiBwb3BvdmVyLWlzLW9wZW49aXNPcGVuIHBvcG92ZXItdHJpZ2dlcj1vdXRzaWRlQ2xpY2sgcG9wb3Zlci1hcHBlbmQtdG8tYm9keT10cnVlIHBvcG92ZXItcGxhY2VtZW50PWxlZnQtdG9wPjxpIGNsYXNzPVwiZmEgZmEtZmlsdGVyXCI+PC9pPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTI0IG5nLWlmPVwiZmQuUGFyYW1ldGVycy5EZWZTdGF0ZSE9XFwnYmFzaWNcXCcgJiYgZmQuUHJlc2VudGF0aW9uVHlwZT4wXCIgbmctc2hvdz1cIihmZC5QYXJhbWV0ZXJzLkRlZmluZVRhc2tzICYmIHJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb24pIHx8IChmZC5zZWxlY3RlZFRhc2tzLmxlbmd0aD4wICYmICFmb3JtRGVmaW5pdGlvbiAmJiBmZC5yZXNvdXJjZURhdGFSZWNvcmRTZWxlY3RlZClcIj48ZGl2IGt0LWluaXRpYXRlLXRhc2std2lkZ2V0IGZkPWZkIGxvY2FsLXZhcnM9bG9jYWxWYXJzW2ZkLmlkXT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNhcmQgbmctaWY9XCJmZC5TZWFyY2gudGFza0lkLmlkPjAgJiYgIWZvcm1EZWZpbml0aW9uICYmIGZkLlBhcmFtZXRlcnMuRGVmU3RhdGUhPVxcJ2Jhc2ljXFwnXCIgbmctc2hvdz1mZC5TaG93RmllbGQ+PGRpdiBjbGFzcz1jYXJkLWhlYWRlcj48ZGl2IGt0LXRhc2stcHJvYy1kaXJlY3RpdmUgZmQ9ZmQgdGFza2RlZmluaXRpb249dGFza0RlZmluaXRpb24gbG9jYWwtdmFycz1sb2NhbFZhcnNTZWFyY2g+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlByZXNlbnRhdGlvblR5cGU9PTAgJiYgZmQuUGFyYW1ldGVycy5EZWZTdGF0ZSE9XFwnYmFzaWNcXCdcIiBjbGFzcz17e2ZkLmdyaWRDbGFzc0VsZW1lbnR9fT48ZGl2IGNsYXNzPXJvdyBzdHlsZT1cInRvcDowO21hcmdpbi1sZWZ0Oi0xcmVtICFpbXBvcnRhbnRcIiBuZy1pZj1cIiFsb2NhbFZhcnNbZmQuaWRdLmRhdGFzZXRsaXN0bGlua2VkIHx8ICFsb2NhbFZhcnNbZmQuaWRdLnJlc291cmNlRGF0YURvd25sb2FkZWRcIiBrdC1wcm9jZXNzaW5nLWFuaW1hdGlvbiBzaG93LW1zZz10cnVlIHNob3ctYXMtY2FyZD1mYWxzZSBtZXNzYWdlPVwiTG9hZGluZyB7e2ZkLk5hbWV9fS4uLlwiPjwvZGl2PjxkaXYgY2xhc3MgbmctaWY9XCJsb2NhbFZhcnNbZmQuaWRdLmRhdGFzZXRsaXN0bGlua2VkICYmIGxvY2FsVmFyc1tmZC5pZF0ucmVzb3VyY2VEYXRhRG93bmxvYWRlZCAmJiAoZmQuZ3JpZE9wdGlvbnMuZGF0YS5sZW5ndGg+MCB8fCAoZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTIpKVwiPjxkaXYga3Qtc21hcnQtdGFibGUgdXNlLXBhZ2luYXRpb249ZmFsc2UgYWxsb3ctc29ydD10cnVlIGluaXRpYWwtcGFnZT0xIGl0ZW1zLW9uLXBhZ2U9MTAgcm93LXNlbGVjdGVkLWNoYW5nZT1mZC5yb3dTZWxlY3Rpb25DaGFuZ2VkKGl0ZW0pIHBhcmFtZXRlcnM9ZmQuUGFyYW1ldGVycyBmb250LXNpemU9ZmQuUGFyYW1ldGVycy50YWJsZS5mb250U2l6ZSBjZWxsLXBhZGRpbmc9ZmQuUGFyYW1ldGVycy50YWJsZS5jZWxsUGFkZGluZyBjb2x1bW4tZGVmcz1sb2NhbFZhcnNbZmQuaWRdLmNvbHVtbkRlZnMga3QtcmVmcmVzaC1kYXRhPVwibG9jYWxWYXJzW2ZkLmlkXS5nZXREYXRhc2V0RGF0YUZvclNtYXJ0VGFibGUodGFibGVTdGF0ZSwgcGFnZU51bWJlcixwYWdlU2l6ZSlcIj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwiZmQuUGFyYW1ldGVycy5EZWZTdGF0ZT09XFwnYmFzaWNcXCdcIiBjbGFzcz1jb2wtbGctMjQ+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlBhcmFtZXRlcnMuRGVmU3RhdGU9PVxcJ2Jhc2ljXFwnICYmIGZkLlBhcmFtZXRlcnMuUmVzb3VyY2VSZWxhdGlvbnNoaXBUeXBlPT1cXCdleGlzdGluZ1xcJ1wiIGNsYXNzPWNvbC1sZy0yND48ZGl2IGNsYXNzPW15LTI+PHNwYW4gY2xhc3M9XCJ0ZXh0LXByaW1hcnkgYm9sZFwiPkNISUxEIEZJRUxEICh7e2ZkLlJlc291cmNlVHlwZX19KTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPW15LTI+PGRpdiBjbGFzcz1tYi0xIG5nLWlmPVwiZmQuUGFyYW1ldGVycy5SZXNvdXJjZVJlbGF0aW9uc2hpcFR5cGU9PT1cXCdleGlzdGluZ1xcJ1wiPjxkaXYgY2xhc3M9bXItMj48c3Bhbj5DaGlsZCB7e2ZkLlJlc291cmNlVHlwZX19IG5hbWU6PC9zcGFuPjxzcGFuIGNsYXNzPWJvbGQgbmctYmluZD1cImZkLlBhcmFtZXRlcnMuQ2hpbGRSZXNvdXJjZU5hbWUgfHwgZmQubmFtZSB8fCBcXCdub25lXFwnXCI+PC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9bXktMiBuZy1pZj1sb2NhbFZhcnNbZmQuaWRdLnB1Ymxpc2hlZExvYWRlZD48bGFiZWwgY2xhc3M9XCJwbC0wIGxhYmVsIHRleHQtbXV0ZWRcIiBmb3I9c2VsZWN0ZWRQdWJsaXNoZWR7e2ZkLlByZXNlbnRhdGlvbklkfX0+U2VsZWN0IGZvcm08L2xhYmVsPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1tb2RlbD1sb2NhbFZhcnNbZmQuaWRdLnB1Ymxpc2hlZFJlc291cmNlIHNlbGVjdGVkLWl0ZW1zPWxvY2FsVmFyc1tmZC5pZF0ucHVibGlzaGVkUmVzb3VyY2Ugb24tc2VsZWN0LWZuPWZkLm9uU2VsZWN0UHVibGlzaGVkKGl0ZW0sbW9kZWwpIGlzLW11bHRpcGxlPWZhbHNlIG5hbWU9c2VsZWN0ZWRQdWJsaXNoZWR7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctcmVxdWlyZWQ9dHJ1ZSBkcm9wZG93bi1pdGVtcz1sb2NhbFZhcnNbZmQuaWRdLnB1Ymxpc2hlZFJlc291cmNlTGlzdCBkcm9wZG93bi1pZD1cIlxcJ3NlbGVjdGVkUHVibGloZWRcXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ3NlbGVjdGVkUHVibGlzaGVkXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgcmVzb3VyY2UgZm9ybVxcJ1wiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBteS0yXCIgbmctaWY9IWxvY2FsVmFyc1tmZC5pZF0ucHVibGlzaGVkTG9hZGVkPjxzcGFuIGNsYXNzPVwiZC1ibG9jayB3LTEwMCBib3JkZXIgcC0yIGJnLXdoaXRlXCI+TG9hZGluZyBmb3JtIGxpc3QuLi48L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlBhcmFtZXRlcnMuRGVmU3RhdGU9PVxcJ2Jhc2ljXFwnICYmIGZkLlByZXNlbnRhdGlvblR5cGU9PXVuZGVmaW5lZCAmJiBmZC5QYXJhbWV0ZXJzLlJlc291cmNlUmVsYXRpb25zaGlwVHlwZT09XFwnbmV3XFwnIHx8IGZkLlBhcmFtZXRlcnMuUmVzb3VyY2VSZWxhdGlvbnNoaXBUeXBlPT1cXCd2aWV3XFwnXCIgY2xhc3M9Y29sLWxnLTI0PjxkaXYgY2xhc3M9XCJyb3cgbS0wIG15LTEgcC0xIGJvcmRlciByb3VuZGVkIHNoYWRvdy1zbVwiPjxkaXYgbmctaWY9XCJsb2NhbFZhcnNbZmQuaWRdLnJlc291cmNlVHlwZXNMaXN0Lmxlbmd0aD4wXCIgY2xhc3M9XCJjb2wtbGctMjQgbXktMlwiPjxzcGFuIGNsYXNzPVwiaDYgdGV4dC1tdXRlZFwiPlNlbGVjdCByZXNvdXJjZSB0eXBlPC9zcGFuPjwvZGl2PjxkaXYgbmctaWY9XCJsb2NhbFZhcnNbZmQuaWRdLnJlc291cmNlVHlwZXNMaXN0Lmxlbmd0aD4wXCIgY2xhc3M9Y29sLWxnLTI0PjxkaXYgbmctcmVwZWF0PVwicnQgaW4gbG9jYWxWYXJzW2ZkLmlkXS5yZXNvdXJjZVR5cGVzTGlzdFwiIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZVwiPjxsYWJlbCBjbGFzcz1mb3JtLWNoZWNrLWxhYmVsPjxpbnB1dCB0eXBlPXJhZGlvIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuUmVzb3VyY2VUeXBlIG5nLXZhbHVlPXJ0LnR5cGUgbmctY2xpY2s9bG9jYWxWYXJzW2ZkLmlkXS5nZXRSZXNvdXJjZXMocnQudHlwZSk+IHt7cnQubmFtZX19PC9sYWJlbD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IG15LTJcIj48bGFiZWwgY2xhc3M9XCJwbC0wIGxhYmVsIHRleHQtbXV0ZWRcIiBmb3I9bmFtZUZpZWxkPlNlbGVjdCBwYXJlbnQge3tmZC5QYXJhbWV0ZXJzLlJlc291cmNlVHlwZX19PC9sYWJlbD48a3QtZHJvcGRvd24tc3RhbmRhcmQgbmctbW9kZWw9ZmQuc2VsZWN0ZWRSZXNvdXJjZSBzZWxlY3RlZC1pdGVtcz1mZC5zZWxlY3RlZFJlc291cmNlIG5nLWlmPWZkLlJlbGF0ZWRMb2FkZWQgb24tc2VsZWN0LWZuPWZkLm9uU2VsZWN0Q2FsbGJhY2soaXRlbSxtb2RlbCkgaXMtbXVsdGlwbGU9ZmFsc2UgbmFtZT1cInNlbGVjdGVkUmVzb3VyY2V7e2ZkLlV1aWRSZWYucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fVwiIG5nLXJlcXVpcmVkPXRydWUgZHJvcGRvd24taXRlbXM9ZmQucmVzb3VyY2VzTGlzdCBkcm9wZG93bi1pZD1cIlxcJ3NlbGVjdGVkUmVzb3VyY2VcXCcrZmQuVXVpZFJlZi5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKVwiIHBhcmVudC1mb3JtLWlkPVwiXFwnc2VsZWN0ZWRSZXNvdXJjZVxcJytmZC5VdWlkUmVmLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgXFwnK2ZkLlBhcmFtZXRlcnMuUmVzb3VyY2VUeXBlXCI+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IG1iLTNcIj48aSBjbGFzcz1cImZhIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZSB0ZXh0LWRhbmdlclwiPjwvaT4gPHNwYW4gY2xhc3M9dGV4dC1kYW5nZXI+UGxlYXNlIHNlbGVjdCBwYXJlbnQge3tmZC5QYXJhbWV0ZXJzLlJlc291cmNlVHlwZX19PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgbXktMlwiIG5nLWlmPSFmZC5SZWxhdGVkTG9hZGVkPjxzcGFuIGNsYXNzPVwiZC1ibG9jayB3LTEwMCBib3JkZXIgcC0yIGJnLXdoaXRlXCI+TG9hZGluZyByZXNvdXJjZSBsaXN0Li4uPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgbWItMlwiPjxidXR0b24gbmctZGlzYWJsZWQ9XCJmZC5SZWxhdGVkPT1cXCdcXCcgfHwgZmQuUmVsYXRlZD09dW5kZWZpbmVkIHx8IGZkLlJlbGF0ZWQ9PW51bGxcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cImZkLlBhcmFtZXRlcnMuRGVmU3RhdGU9XFwnYWR2YW5jZWRcXCdcIj48c3Bhbj5Db25maXJtIHNlbGVjdGlvbjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0yNCBuZy1pZj1cImZkLlBhcmFtZXRlcnMuRGVmU3RhdGUhPVxcJ2Jhc2ljXFwnICYmIGZkLlByZXNlbnRhdGlvblR5cGU9PXVuZGVmaW5lZFwiPjxkaXYgbmctaWY9XCJmZC5QYXJhbWV0ZXJzLlJlc291cmNlUmVsYXRpb25zaGlwVHlwZSE9XFwnZXhpc3RpbmdcXCdcIiBjbGFzcz1cInAtMiBib3JkZXIgcm91bmRlZCBzaGFkb3ctc21cIj48c3BhbiBjbGFzcz1cIm1yLTMgbWItMyB0ZXh0LXByaW1hcnkgYm9sZCB0YWdcIj57e2ZkLlBhcmFtZXRlcnMuUmVzb3VyY2VUeXBlfX08L3NwYW4+IDxzcGFuIGNsYXNzPW1yLTM+e3tmZC5zZWxlY3RlZFJlc291cmNlLm5hbWV9fTwvc3Bhbj48ZGl2IGNsYXNzPW15LTM+PGkgY2xhc3M9XCJmYSBmYS1leGNsYW1hdGlvbi1jaXJjbGUgdGV4dC1kYW5nZXJcIj48L2k+IDxzcGFuIGNsYXNzPXRleHQtZGFuZ2VyPlRvIGJlIHZpc2libGUgZ28gdG8gcHJvcGVydGllcyAtPiBVSSBjb21wb25lbnRzIGFuZCBjaG9vc2UgZGlzcGxheSBmb3JtPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmZC5QYXJhbWV0ZXJzLlJlc291cmNlUmVsYXRpb25zaGlwVHlwZT09XFwnZXhpc3RpbmdcXCdcIiBjbGFzcz1cInAtMiBib3JkZXIgcm91bmRlZCBzaGFkb3ctc21cIj48c3BhbiBjbGFzcz1cIm1yLTMgdGV4dC1wcmltYXJ5IGJvbGQgdGFnXCI+Q0hJTEQgRklFTEQgUExBQ0VIT0xERVIgKHt7ZmQuUGFyYW1ldGVycy5SZXNvdXJjZVR5cGV9fSk8L3NwYW4+IDxzcGFuIGNsYXNzPW1yLTMgbmctYmluZD1cImZkLlBhcmFtZXRlcnMuQ2hpbGRSZXNvdXJjZU5hbWUgfHwgZmQubmFtZVwiPjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3REeW5hbWljUmVzb3VyY2VQcm9wZXJ0aWVzLmh0bWwnLCc8ZGl2IGNsYXNzPXAtMSBuZy1mb3JtPWlubmVyRm9ybVByb3BlcnRpZXM+PGRpdiBrdC1wcm9wZXJ0eS1oZWFkZXI+PC9kaXY+PGRpdj48bGFiZWw+TGFiZWw8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPWZvcm0tY29udHJvbCBuZy1tb2RlbD1mZC5QbGFjZWhvbGRlcj4gPGxhYmVsPkVycm9yIG1zZzwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9Zm9ybS1jb250cm9sIG5nLW1vZGVsPWZkLkVycm9yTXNnPiA8bGFiZWw+U2VhcmNoVGV4dDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9Zm9ybS1jb250cm9sIG5nLW1vZGVsPWZkLlNlYXJjaFRleHQ+PGRpdiBjbGFzcz1jaGVja2JveD48bGFiZWw+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmctbW9kZWw9ZmQuUmVxdWlyZWQ+IFJlcXVpcmVkPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPWNoZWNrYm94PjxsYWJlbD48aW5wdXQgdHlwZT1jaGVja2JveCBuZy1tb2RlbD1mZC5NdWx0aWxpbmU+IE11bHRpcGxlIHJlc291cmNlPC9sYWJlbD48L2Rpdj48L2Rpdj48ZGl2IGt0LWZpZWxkLWV4dGVuZGVkLXByb3BlcnRpZXM+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0RWRpdENvZGVzLmh0bWwnLCc8ZGl2IGNsYXNzPWNhcmQ+PGRpdiBjbGFzcz10ZXh0LWNlbnRlcj48aDM+RWRpdCBjb2RlPC9oMz48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNhcmQ+PGZvcm0gbmctc3VibWl0PXNhdmVDb2RlKGZvcm0uJHZhbGlkKSBpZD1zYXZlRm9ybSBuYW1lPWZvcm0gY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHJvdyBtbC0yXCIgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5jb2RlSWQuJHRvdWNoZWQpICYmIGZvcm0uY29kZUlkLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTggZm9yPWNvZGVJZD5Db2RlIElEPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1sZy02PjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9Q29kZUhlYWQuaWQgbmctcmVxdWlyZWQ9dHJ1ZSBuZy1kaXNhYmxlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1jb2RlSWQgbmFtZT1jb2RlSWQgcGxhY2Vob2xkZXI9XCJDb2RlIElEXCI+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5jb2RlSWQuJHRvdWNoZWQpICYmIGZvcm0uY29kZUlkLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5FbnRlciBjb2RlIGlkPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHJvdyBtbC0yXCIgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5jb2RlTmFtZS4kdG91Y2hlZCkgJiYgZm9ybS5jb2RlTmFtZS4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1sZy04IGZvcj1jb2RlTmFtZT5Db2RlIG5hbWU8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTY+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1Db2RlSGVhZC5Db2Rlc0hlYWRMYW5nWzBdLkNvZGVOYW1lIG5nLXJlcXVpcmVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPWNvZGVOYW1lIG5hbWU9Y29kZU5hbWUgcGxhY2Vob2xkZXI9XCJDb2RlIG5hbWVcIj48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvZGVOYW1lLiR0b3VjaGVkKSAmJiBmb3JtLmNvZGVOYW1lLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5FbnRlciBjb2RlIG5hbWU8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcm93IG1sLTJcIiBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLkNvZGVIZWFkTmFtZS4kdG91Y2hlZCkgJiYgZm9ybS5Db2RlSGVhZE5hbWUuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtbGctOCBmb3I9Y29kZUhlYWROYW1lPkNvZGUgdW5pcXVlIGlkZW50aWZpZXI8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTY+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1Db2RlSGVhZC5Db2RlSGVhZE5hbWUgbmctcmVxdWlyZWQ9ZmFsc2UgY2xhc3M9Zm9ybS1jb250cm9sIGlkPWNvZGVIZWFkTmFtZSBuYW1lPWNvZGVIZWFkTmFtZSBwbGFjZWhvbGRlcj1cIkNvZGUgdW5pcXVlIGlkZW50aWZpZXJcIj48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvZGVIZWFkTmFtZS4kdG91Y2hlZCkgJiYgZm9ybS5jb2RlSGVhZE5hbWUuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIHVuaXF1ZSBpZGVudGlmaWVyIChhbnkgdGV4dCB1cCB0byAyNTUgY2hhcmFjdGVycyk8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcm93IG1sLTJcIiBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvZGVEZXNjcmlwdGlvbi4kdG91Y2hlZCkgJiYgZm9ybS5jb2RlRGVzY3JpcHRpb24uJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtbGctOCBmb3I9Y29kZURlc2NyaXB0aW9uPkNvZGUgZGVzY3JpcHRpb248L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTY+PHRleHRhcmVhIG5nLW1vZGVsPUNvZGVIZWFkLkNvZGVzSGVhZExhbmdbMF0uRGVzY3JpcHRpb24gbmFtZT1jb2RlRGVzY3JpcHRpb24gbmctcmVxdWlyZWQ9dHJ1ZSBuZy1taW4tbGVuZ3RoPTIwIGNsYXNzPWZvcm0tY29udHJvbD48L3RleHRhcmVhPjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uY29kZURlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtLmNvZGVEZXNjcmlwdGlvbi4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIgY29kZSBkZXNjcmlwdGlvbihtaW4gMjAgY2hhcnMpLjwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCByb3cgbWwtMlwiIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uY29kZVR5cGUuJHRvdWNoZWQpICYmIGZvcm0uY29kZVR5cGUuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtbGctOCBmb3I9Y29kZVR5cGU+Q29kZSB0eXBlPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1sZy02Pjx1aS1zZWxlY3QgbmctbW9kZWw9Q29kZUhlYWQuQ29kZVR5cGUgbmctZGlzYWJsZWQ9ZGlzYWJsZWQgbmFtZT1jb2RlVHlwZSBuZy1yZXF1aXJlZD10cnVlIHJlc2V0LXNlYXJjaC1pbnB1dD1mYWxzZT48dWktc2VsZWN0LW1hdGNoIGNsYXNzPXVpLXNlbGVjdC1tYXRjaCBwbGFjZWhvbGRlcj1cIlNlYXJjaCBvciBzZWxlY3QgY29kZSB0eXBlLi4uXCI+PHNwYW4+e3skc2VsZWN0LnNlbGVjdGVkLm5hbWV9fSA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmsgcC0wXCIgbmctY2xpY2s9XCJjbGVhcigkZXZlbnQsICRzZWxlY3QpXCI+PGkgY2xhc3M9XCJtbC0zIGZhIGZhLXRpbWVzIGZsb2F0LXJpZ2h0XCI+PC9pPjwvYT48L3NwYW4+PC91aS1zZWxlY3QtbWF0Y2g+PHVpLXNlbGVjdC1jaG9pY2VzIGNsYXNzPXVpLXNlbGVjdC1jaG9pY2VzIHJlcGVhdD1cImN0IGluIChjb2RlVHlwZUxpc3QgfCBmaWx0ZXI6IHsgbmFtZTogJHNlbGVjdC5zZWFyY2ggfSkgdHJhY2sgYnkgY3QuaWRcIiByZWZyZXNoPXJlZnJlc2hSZXN1bHRzKCRzZWxlY3QpIHJlZnJlc2gtZGVsYXk9MD48c3BhbiBjbGFzcz1wLTA+e3tjdC5uYW1lfX08L3NwYW4+PC91aS1zZWxlY3QtY2hvaWNlcz48L3VpLXNlbGVjdD48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvZGVUeXBlLiR0b3VjaGVkKSAmJiBmb3JtLmNvZGVUeXBlLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5TZWxlY3QgY29kZSB0eXBlPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHJvdyBtbC0yXCIgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5sYW5nLiR0b3VjaGVkKSAmJiBmb3JtLmxhbmcuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtbGctOCBmb3I9bGFuZz5MYW5ndWFnZTwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctNj48dWktc2VsZWN0IG5nLW1vZGVsPUNvZGVIZWFkLkNvZGVzSGVhZExhbmdbMF0uTGFuZyBuZy1kaXNhYmxlZD1kaXNhYmxlZCBuYW1lPWxhbmcgbmctcmVxdWlyZWQ9dHJ1ZSByZXNldC1zZWFyY2gtaW5wdXQ9ZmFsc2U+PHVpLXNlbGVjdC1tYXRjaCBjbGFzcz11aS1zZWxlY3QtbWF0Y2ggcGxhY2Vob2xkZXI9XCJTZWFyY2ggb3Igc2VsZWN0IGxhbmd1YWdlLi4uXCI+PHNwYW4gY2xhc3M9cC0wPnt7JHNlbGVjdC5zZWxlY3RlZC5uYW1lfX0gPGEgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saW5rIHAtMFwiIG5nLWNsaWNrPVwiY2xlYXIoJGV2ZW50LCAkc2VsZWN0KVwiPjxpIGNsYXNzPVwibWwtMyBmYSBmYS10aW1lcyBmbG9hdC1yaWdodFwiPjwvaT48L2E+PC9zcGFuPjwvdWktc2VsZWN0LW1hdGNoPjx1aS1zZWxlY3QtY2hvaWNlcyBjbGFzcz11aS1zZWxlY3QtY2hvaWNlcyByZXBlYXQ9XCJjbCBpbiAoY29kZUxhbmd1YWdlTGlzdCB8IGZpbHRlcjogeyBuYW1lOiAkc2VsZWN0LnNlYXJjaCB9KSB0cmFjayBieSAkaW5kZXhcIiByZWZyZXNoPXJlZnJlc2hSZXN1bHRzKCRzZWxlY3QpIHJlZnJlc2gtZGVsYXk9MD48c3Bhbj57e2NsLm5hbWV9fTwvc3Bhbj48L3VpLXNlbGVjdC1jaG9pY2VzPjwvdWktc2VsZWN0PjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ubGFuZy4kdG91Y2hlZCkgJiYgZm9ybS5sYW5nLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5TZWxlY3QgbGFuZ3VhZ2U8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcm93IG1sLTJcIiBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnN0YXR1cy4kdG91Y2hlZCkgJiYgZm9ybS5zdGF0dXMuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtbGctOCBmb3I9bGFuZz5TdGF0dXM8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTY+PHVpLXNlbGVjdCBuZy1tb2RlbD1Db2RlSGVhZC5TdGF0dXMgbmctZGlzYWJsZWQ9ZGlzYWJsZWQgbmFtZT1zdGF0dXMgbmctcmVxdWlyZWQ9dHJ1ZSByZXNldC1zZWFyY2gtaW5wdXQ9ZmFsc2U+PHVpLXNlbGVjdC1tYXRjaCBjbGFzcz11aS1zZWxlY3QtbWF0Y2ggcGxhY2Vob2xkZXI9XCJTZWFyY2ggb3Igc2VsZWN0IHN0YXR1cy4uLlwiPjxzcGFuIGNsYXNzPXAtMD57eyRzZWxlY3Quc2VsZWN0ZWQubmFtZX19IDxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGluayBwLTBcIiBuZy1jbGljaz1cImNsZWFyKCRldmVudCwgJHNlbGVjdClcIj48aSBjbGFzcz1cIm1sLTMgZmEgZmEtdGltZXMgZmxvYXQtcmlnaHRcIj48L2k+PC9hPjwvc3Bhbj48L3VpLXNlbGVjdC1tYXRjaD48dWktc2VsZWN0LWNob2ljZXMgY2xhc3M9dWktc2VsZWN0LWNob2ljZXMgcmVwZWF0PVwiY3MgaW4gKGNvZGVTdGF0dXNMaXN0IHwgZmlsdGVyOiB7IG5hbWU6ICRzZWxlY3Quc2VhcmNoIH0pIHRyYWNrIGJ5IGNzLmlkXCIgcmVmcmVzaD1yZWZyZXNoUmVzdWx0cygkc2VsZWN0KSByZWZyZXNoLWRlbGF5PTA+PHNwYW4+e3tjcy5uYW1lfX08L3NwYW4+PC91aS1zZWxlY3QtY2hvaWNlcz48L3VpLXNlbGVjdD48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnN0YXR1cy4kdG91Y2hlZCkgJiYgZm9ybS5zdGF0dXMuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPlNlbGVjdCBzdGF0dXM8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcm93IG1sLTJcIj48bGFiZWwgY2xhc3M9Y29sLWxnLTggZm9yPWxhbmc+VXNlciBnZW5lcmF0ZWQgaWQ8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTY+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y2hlY2tib3gtem9vbS1sYXJnZSBuZy1tb2RlbD1Db2RlSGVhZC5Vc2VyR2VuZXJhdGVkSWQgbmFtZT11c2VyR2VuZXJhdGVkSWQgbmctcmVxdWlyZWQ9ZmFsc2U+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbnRyb2wtZ3JvdXAgcm93IG1sLTJcIj48YnV0dG9uIHR5cGU9c3VibWl0IGlkPWNsZWFyQnRuIG5nLWRpc2FibGVkPWZvcm0uJGludmFsaWQgY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1zYXZlXCI+PC9zcGFuPiZuYnNwIFNhdmUgY29kZTwvYnV0dG9uPjwvZGl2PjwvZm9ybT48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RFcnJvckVsZW1lbnRQcm9wZXJ0aWVzLmh0bWwnLCc8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyXCI+RXJyb3Igd2hlbiBsb2FkaW5nIHByb3BlcnRpZXMuIEVsZW1lbnQgb2JqZWN0IGlzIG51bGwhPC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0RXhlY3V0ZVNtYXJ0Q29udHJhY3QuaHRtbCcsJzxkaXYgY2xhc3M9d2lkZ2V0LWhlYWQgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LWFjdGl2ZSBtLTIgc2hhZG93XFwnOmxvY2FsVmFyc1dpZGdldC5kYXRhc2V0TWFwcGVyVHlwZT4wLFxcJ20tMCBib3JkZXItMFxcJzooZmQuUmVsYXRlZD09bnVsbCB8fCBmZC5SZWxhdGVkPT11bmRlZmluZWQpICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yfVwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wIHAtMCBtYi0xXCIgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LWhlYWQtYWN0aXZlXFwnOmxvY2FsVmFyc1dpZGdldC5kYXRhc2V0TWFwcGVyVHlwZT4wLFxcJ2JnLWxpZ2h0XFwnOmxvY2FsVmFyc1dpZGdldC5kYXRhc2V0TWFwcGVyVHlwZT09MH1cIiBuZy1pZj1cImZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xXCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxpIGNsYXNzPVwiZmEgZmEtY29kZSBteC0yXCI+PC9pPjxsYWJlbD5FeGVjdXRlIHNtYXJ0IGNvbnRyYWN0ICh7e2ZkLlByZXNlbnRhdGlvbklkfX0pICh7e2ZkLkxvY2FsSWR9fSk8L2xhYmVsPiA8YSBocmVmIHRpdGxlPXNvcnQgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LXByb3BcXCc6bG9jYWxWYXJzV2lkZ2V0LmRhdGFzZXRNYXBwZXJUeXBlPT0wIHx8IGxvY2FsVmFyc1dpZGdldC5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkfVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIHt7Z3JpZFR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIHdpZGdldC1wcm9wXCI+PGkgY2xhc3M9XCJ7e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZSBmYXMgZmEtZ3JpcC12ZXJ0aWNhbFwiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LXJpZ2h0IG15LWF1dG9cIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWxvY2FsVmFyc1dpZGdldC5zaG93UHJvcGVydGllcygxKSBuZy1jbGFzcz1cIntcXCdidG4td2FybmluZ1xcJzpsb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPVxcJ1xcJyAmJiBsb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPXVuZGVmaW5lZCwgXFwnYnRuLW91dGxpbmUtcHJpbWFyeSBuby1ib3JkZXJcXCc6bG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkPT1cXCdcXCcgfHwgbG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkPT11bmRlZmluZWR9XCIgY2xhc3M9XCJidG4gYnRuLXhzXCI+PHNwYW4gbmctaWY9XCJsb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPVxcJ1xcJyAmJiBsb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPXVuZGVmaW5lZFwiPnt7bG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkfX08L3NwYW4+IDxzcGFuIG5nLWlmPVwibG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkPT1cXCdcXCcgfHwgbG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkPT11bmRlZmluZWRcIj5TZWxlY3Qgc21hcnQgY29udHJhY3Q8L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiIG5nLWlmPVwibG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT1cXCdcXCcgJiYgbG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT11bmRlZmluZWRcIj48YSBocmVmIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYm9yZGVyLTAgYnRuLXNtXCIgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LXByb3BcXCc6bG9jYWxWYXJzV2lkZ2V0LmRhdGFzZXRNYXBwZXJUeXBlPT0wIHx8IGxvY2FsVmFyc1dpZGdldC5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkfVwiIHRpdGxlPVwiU2hvdy9oaWRlIHByb3BlcnRpZXNcIiBuZy1jbGljaz1sb2NhbFZhcnNXaWRnZXQuc2hvd1Byb3BlcnRpZXMoMik+PGkgY2xhc3M9XCJmYXMgZmEtY29nXCI+PC9pPjwvYT4gPGEgbmctaWY9ZmFsc2UgaHJlZiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zdWNjZXNzIGJvcmRlci0wIGJ0bi1zbVwiIHRpdGxlPVwiU2hvdy9oaWRlIGZvcm1cIiBuZy1jbGljaz1cImxvY2FsVmFyc1dpZGdldC5zaG93Rm9ybT0hbG9jYWxWYXJzV2lkZ2V0LnNob3dGb3JtXCI+PGkgbmctY2xhc3M9XCJ7XFwnZmFzIGZhLWV5ZS1zbGFzaFxcJzohbG9jYWxWYXJzV2lkZ2V0LnNob3dGb3JtLFxcJ2ZhcyBmYS1leWVcXCc6bG9jYWxWYXJzV2lkZ2V0LnNob3dGb3JtfVwiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxkaXYga3QtdGFzay1kcm9wZG93bjI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1wLTM+PGRpdiBuZy1pZj1cImxvY2FsVmFyc1dpZGdldC5kYXRhc2V0TWFwcGVyVHlwZT4wXCIgY2xhc3M9bWItMj48ZGl2IGt0LWZvcm0tZWxlbWVudC1wcm9wZXJ0aWVzIGZkPWZkIGxvY2FsLXZhcnM9bG9jYWxWYXJzV2lkZ2V0PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9bWItMj48c3BhbiBuZy1pZj1mZC5jb250cmFjdEZ1bmN0aW9ucyBjbGFzcz1cImJvbGQgc21hbGwgcC0xIHRleHQtcHJpbWFyeVwiIG5nLWNsaWNrPVwiZmQuY29udHJhY3REYXRhc2V0cz10cnVlO2ZkLmNvbnRyYWN0RnVuY3Rpb25zPWZhbHNlO1wiPjxhIGhyZWY+Q29udHJhY3QgZGF0YXNldHM8L2E+PC9zcGFuPjxzcGFuIG5nLWlmPWZkLmNvbnRyYWN0RGF0YXNldHMgY2xhc3M9XCJib2xkIHNtYWxsIGJvcmRlci1ib3R0b20gYm9yZGVyLXN1Y2Nlc3MgcC0xIHRleHQtc3VjY2Vzc1wiPkNvbnRyYWN0IGRhdGFzZXRzPC9zcGFuPiA8c3BhbiBuZy1pZj1mZC5jb250cmFjdERhdGFzZXRzIGNsYXNzPVwiYm9sZCBzbWFsbCBwLTEgdGV4dC1wcmltYXJ5XCIgbmctY2xpY2s9XCJmZC5jb250cmFjdERhdGFzZXRzPWZhbHNlO2ZkLmNvbnRyYWN0RnVuY3Rpb25zPXRydWU7XCI+PGEgaHJlZj5Db250cmFjdCBmdW5jdGlvbnM8L2E+PC9zcGFuPjxzcGFuIG5nLWlmPWZkLmNvbnRyYWN0RnVuY3Rpb25zIGNsYXNzPVwiYm9sZCBzbWFsbCBib3JkZXItYm90dG9tIGJvcmRlci1zdWNjZXNzIHAtMSB0ZXh0LXN1Y2Nlc3NcIj5Db250cmFjdCBkYXRhc2V0czwvc3Bhbj48L2Rpdj48ZGl2IG5nLWlmPWZkLmNvbnRyYWN0RGF0YXNldHM+PGRpdiBuZy1yZXBlYXQ9XCJkYXRhc2V0IGluIGZkLnJlc291cmNlLlBhcmFtZXRlcnMuRGF0YXNldHMgdHJhY2sgYnkgJGluZGV4XCIgY2xhc3M9XCJkLWlubGluZS1ibG9jayBtci0yXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1mZC5sb2FkQmxvY2tjaGFpbkRhdGFzZXQoZGF0YXNldCkgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLWluZm8gbXktMlwiPnt7ZGF0YXNldC5EYXRhc2V0TmFtZX19PGkgbmctY2xhc3M9XCJ7XFwnZC1ub25lXFwnOmZkLnNlbGVjdGVkRGF0YXNldC5EYXRhc2V0TmFtZSE9ZGF0YXNldC5EYXRhc2V0TmFtZSxcXCdkLWlubGluZS1ibG9ja1xcJzpmZC5zZWxlY3RlZERhdGFzZXQuRGF0YXNldE5hbWU9PWRhdGFzZXQuRGF0YXNldE5hbWV9XCIgY2xhc3M9XCJtbC0yIGZhIGZhLWNoZWNrIHRleHQtc3VjY2Vzc1wiPjwvaT48L2J1dHRvbj48L2Rpdj48ZGl2PjxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWRcIj5QcmltYXJ5IGtleTwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgbmctbW9kZWw9ZmQuQmxvY2tDaGFpblByaW1hcnlLZXk+IDxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9ZmQuR2V0QmxvY2tjaGFpbkRhdGFzZXRSZWNvcmRzKCkgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnkgbXktMlwiPkdldCBkYXRhPC9idXR0b24+PC9kaXY+PGRpdiBuZy1pZj1mZC5kYXRhc2V0TG9hZGVkIHVpLWdyaWQ9ZmQuZ3JpZE9wdGlvbnMgdWktZ3JpZC1zZWxlY3Rpb24gdWktZ3JpZC1yZXNpemUtY29sdW1ucyB1aS1ncmlkLW1vdmUtY29sdW1ucyB1aS1ncmlkLXNhdmUtc3RhdGUgdWktZ3JpZC1wYWdpbmF0aW9uIHVpLWdyaWQtZ3JvdXBpbmcgY2xhc3M9bXlHcmlkPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9ZmQuY29udHJhY3RGdW5jdGlvbnM+PGRpdiBuZy1yZXBlYXQ9XCJmdW5jdGlvbiBpbiBmZC5yZXNvdXJjZS5QYXJhbWV0ZXJzLkZ1bmN0aW9ucyB0cmFjayBieSAkaW5kZXhcIiBjbGFzcz1cImQtaW5saW5lLWJsb2NrIG1yLTJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLmxvYWRCbG9ja2NoYWluRnVuY3Rpb24oZnVuY3Rpb24pIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1pbmZvIG15LTJcIj57e2Z1bmN0aW9uLkZ1bmN0aW9uTmFtZX19PGkgbmctY2xhc3M9XCJ7XFwnZC1ub25lXFwnOmZkLnNlbGVjdGVkRnVuY3Rpb24uRnVuY3Rpb25OYW1lIT1mdW5jdGlvbi5GdW5jdGlvbk5hbWUsXFwnZC1pbmxpbmUtYmxvY2tcXCc6ZmQuc2VsZWN0ZWRGdW5jdGlvbi5GdW5jdGlvbk5hbWU9PWZ1bmN0aW9uLkZ1bmN0aW9uTmFtZX1cIiBjbGFzcz1cIm1sLTIgZmEgZmEtY2hlY2sgdGV4dC1zdWNjZXNzXCI+PC9pPjwvYnV0dG9uPjwvZGl2PjxkaXYgbmctc2hvdz1cIiFsb2NhbFZhcnNXaWRnZXQuZm9ybUxvYWRlZCAmJiBmZC5zZWxlY3RlZEZ1bmN0aW9uLklucHV0RGF0YXNldElkXCIgYW5pbWF0aW9uLXR5cGU9XCJcXCdmb3JtXFwnXCIga3QtcHJvY2Vzc2luZy1hbmltYXRpb24tdGltZWxpbmUgc2hvdy1tc2c9ZmFsc2UgbWVzc2FnZT1cIkxvYWRpbmcgZm9ybS4uLlwiPjwvZGl2PjxkaXYgbmctaWY9bG9jYWxWYXJzV2lkZ2V0LmZvcm1Mb2FkZWQ+PGRpdiBrdC1ncmlkIGdyaWQtdHlwZT06OmxvY2FsVmFyc1dpZGdldC5ncmlkc3RlclR5cGUgcmVzb3VyY2UtZm9ybS1sb2FkZWQ9bG9jYWxWYXJzV2lkZ2V0LmZvcm1Mb2FkZWQgcGFyZW50LXJlc291cmNlLWRlZi1pZD06OmZkLlBhcmVudERhdGFzZXREZWZJZCByZXNvdXJjZS1yZWNvcmQtaWQ9Ojpsb2NhbFZhcnNXaWRnZXQuZGF0YXNldFJlY29yZElkIHJlc291cmNlLWRlZmluaXRpb249Ojp0YXNrRGVmaW5pdGlvbiBmb3JtLXBhcmFtcy1wYXJlbnQ9Zm9ybVBhcmFtcyBmb3JtLXBhcmFtcz06OmxvY2FsVmFyc1dpZGdldC5mb3JtUGFyYW1zIGZvcm0tZGF0YT1mb3JtRGF0YVtmZC5QcmVzZW50YXRpb25JZF0gcGFyZW50PTo6bG9jYWxWYXJzV2lkZ2V0LmRhc2hib2FyZC53aWRnZXRzIGFsbC1jb2x1bW5zPTo6bG9jYWxWYXJzV2lkZ2V0LmRhc2hib2FyZC53aWRnZXRzIGNsYXNzPWt0R3JpZD48L2Rpdj48L2Rpdj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLmV4ZWN1dGVCbG9ja2NoYWluRnVuY3Rpb24oZmQuc2VsZWN0ZWRGdW5jdGlvbikgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnkgbXktMlwiPkV4ZWN1dGUge3tmZC5zZWxlY3RlZEZ1bmN0aW9uLkZ1bmN0aW9uTmFtZX19PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0RXhlY3V0ZVNtYXJ0Q29udHJhY3RQcm9wZXJ0aWVzLmh0bWwnLCc8ZGl2IGNsYXNzPXAtMT48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0xXCIgZmQ9ZmQgbG9jYWwtdmFycz1sb2NhbFZhcnMga3QtZGF0YXNldC1tYXBwZXI+PC9kaXY+PGRpdiBuZy1pZj1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT4xXCIgY2xhc3M9XCJidG4tZ3JvdXAgYnRuLWdyb3VwLXRvZ2dsZSB3LTEwMFwiIGRhdGEtdG9nZ2xlPWJ1dHRvbnM+PGxhYmVsIG5nLWNsaWNrPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPTVcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnkgYWN0aXZlXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1jb2dcIj48L3NwYW4+IDxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9Zm9ybXR5cGUgaWQ9b3B0aW9uMSBhdXRvY29tcGxldGU9b2ZmPiBDb250cmFjdCBwcm9wZXJ0aWVzPC9sYWJlbD4gPGxhYmVsIG5nLWNsaWNrPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPTNcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIj48c3BhbiBjbGFzcz1cImZhIGZhLWRhdGFiYXNlXCI+PC9zcGFuPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9Zm9ybXR5cGUgaWQ9b3B0aW9uMiBhdXRvY29tcGxldGU9b2ZmPiBhYmM8L2xhYmVsPiA8bGFiZWwgbmctY2xpY2s9XCJsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9NFwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtY29weVwiPjwvc3Bhbj4gPGlucHV0IHR5cGU9cmFkaW8gbmFtZT1mb3JtdHlwZSBpZD1vcHRpb24zIGF1dG9jb21wbGV0ZT1vZmY+IHh5ejwvbGFiZWw+PC9kaXY+PGRpdiBuZy1pZj1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09NVwiIGNsYXNzPVwicm93IG0tMCBwLTJcIj48ZGl2IGNsYXNzPWNvbC0yND48bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkXCI+TGFiZWw8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLkxhYmVsPiA8bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkXCI+RXJyb3IgbXNnPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1mZC5FcnJvck1zZz4gPGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZFwiPlNlYXJjaFRleHQ8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLlNlYXJjaFRleHQ+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0xMiBtdC0xXCI+PGRpdiBjbGFzcz1tYi0yPjxzcGFuIGNsYXNzPVwiYm9sZCBzbWFsbCBib3JkZXItYm90dG9tIGJvcmRlci1pbmZvIHAtMSB0ZXh0LWluZm9cIj5Db250cmFjdCBkYXRhc2V0PC9zcGFuPjwvZGl2PjxkaXYgbmctcmVwZWF0PVwiZGF0YXNldCBpbiBmZC5yZXNvdXJjZS5QYXJhbWV0ZXJzLkRhdGFzZXRzIHRyYWNrIGJ5ICRpbmRleFwiIGNsYXNzPXAtMj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLmxvYWRCbG9ja2NoYWluRGF0YXNldERlZmluaXRpb24oZGF0YXNldCkgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLWluZm8gbXktMlwiPnt7ZGF0YXNldC5EYXRhc2V0TmFtZX19PC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0xMiBtdC0xXCI+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0RXhlY3V0ZVRhc2tXaWRnZXQuaHRtbCcsJzxkaXYgbmctaWY9bG9jYWxWYXJzLmV4ZWN1dGVUYXNrRGF0YUxvYWRlZD48ZGl2IGt0LXRhc2stcHJvYy1leGVjdXRlIHRhc2stZGVmaW5pdGlvbj1sb2NhbFZhcnNFeGVjdXRlVGFzay50YXNrRGVmaW5pdGlvbiBkYXNoYm9hcmQ9bG9jYWxWYXJzRXhlY3V0ZVRhc2suZGFzaGJvYXJkIHJlc291cmNlLWRlZmluaXRpb249bG9jYWxWYXJzRXhlY3V0ZVRhc2sucmVzb3VyY2VEZWZpbml0aW9uIHRhc2stZXhlY3V0ZS1pbnN0YW5jZT1sb2NhbFZhcnNFeGVjdXRlVGFzay50YXNrRXhlY3V0ZUluc3RhbmNlIHRhc2staW5pdGlhdGUtaW5zdGFuY2U9bG9jYWxWYXJzRXhlY3V0ZVRhc2sudGFza0luaXRpYXRlSW5zdGFuY2UgbG9jYWwtdmFycz1sb2NhbFZhcnNFeGVjdXRlVGFzaz48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RFeGVjdXRlVGFza1dpZGdldEV4ZS5odG1sJywnPGRpdiBuZy1pZj1sb2NhbFZhcnMuZXhlY3V0ZVRhc2tEYXRhTG9hZGVkPjxkaXYga3QtdGFzay1wcm9jLWV4ZWN1dGUgdGFzay1kZWZpbml0aW9uPTo6bG9jYWxWYXJzRXhlY3V0ZVRhc2sudGFza0RlZmluaXRpb24gZGFzaGJvYXJkPTo6bG9jYWxWYXJzRXhlY3V0ZVRhc2suZGFzaGJvYXJkIHJlc291cmNlLWRlZmluaXRpb249Ojpsb2NhbFZhcnNFeGVjdXRlVGFzay5yZXNvdXJjZURlZmluaXRpb24gdGFzay1leGVjdXRlLWluc3RhbmNlPTo6bG9jYWxWYXJzRXhlY3V0ZVRhc2sudGFza0V4ZWN1dGVJbnN0YW5jZSB0YXNrLWluaXRpYXRlLWluc3RhbmNlPTo6bG9jYWxWYXJzRXhlY3V0ZVRhc2sudGFza0luaXRpYXRlSW5zdGFuY2UgbG9jYWwtdmFycz06OmxvY2FsVmFyc0V4ZWN1dGVUYXNrPjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEZpZWxkQWR2YW5jZWRQcm9wZXJ0aWVzLmh0bWwnLCc8ZGl2IGlkPWt0RmllbGRBZHZhbmNlZFByb3BlcnRpZXN7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctaWY9XCIoZmQubG9jYWxWYXJzW2ZkLmlkXS5TaG93QWR2YW5jZWRQcm9wZXJ0aWVzIHx8IGZkLmxvY2FsVmFycy5TaG93QWR2YW5jZWRQcm9wZXJ0aWVzKSAmJiAkcm9vdC5nbG9iYWxzLmN1cnJlbnRVc2VyLnVlcC5QYXJhbXMuYmV0YUZlYXR1cmVzXCIgY2xhc3M9XCJtLTAgbXQtMlwiPjxkaXYgbmctY2xpY2s9XCJmZC5sb2NhbFZhcnMuc2hvd0FkdmFuY2VkID0gIWZkLmxvY2FsVmFycy5zaG93QWR2YW5jZWRcIiBjbGFzcz1cImV4cGFuZC1wcm9wZXJ0eS1wYW5lbCB0YWcgYm9yZGVyLWJvdHRvbSBib3JkZXItc3VjY2VzcyBteS0xIHB5LTFcIiBkYXRhLXRvZ2dsZT1jb2xsYXBzZSBocmVmPSNhZHZhbmNlZFByb3BlcnRpZXMgcm9sZT1idXR0b24gYXJpYS1leHBhbmRlZD10cnVlIGFyaWEtY29udHJvbHM9ZXh0ZW5kZWRQcm9wZXJ0eVBhbmVsPjxzcGFuIGNsYXNzPVwiY29sIHAtMFwiPkFkdmFuY2VkIHByb3BlcnRpZXMgYW5kIGFjdGlvbnM8L3NwYW4+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1oaWRlPSFmZC5sb2NhbFZhcnMuc2hvd0FkdmFuY2VkIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLWRvd25cIj48L2k+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1oaWRlPWZkLmxvY2FsVmFycy5zaG93QWR2YW5jZWQgY2xhc3M9XCJmYXMgZmEtYW5nbGUtdXBcIj48L2k+PC9kaXY+PGRpdiBpZD1hZHZhbmNlZFByb3BlcnRpZXMgY2xhc3M9XCJjb2xsYXBzZSBtLTAgbXQtMlwiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9ZmQubG9jYWxWYXJzW2ZkLmlkXS5hZGRFdmVudCgpIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGJ0bi14c1wiPjxpIGNsYXNzPVwiZmEgZmEtcGx1cyBtci0yXCI+PC9pPiA8c3BhbiBjbGFzcz1zbWFsbD5BZGQgZXZlbnQ8L3NwYW4+PC9idXR0b24+PGRpdiBuZy1yZXBlYXQ9XCJldmVudCBpbiBmZC5QYXJhbWV0ZXJzLmV2ZW50cyB0cmFjayBieSAkaW5kZXhcIj48ZGl2IGNsYXNzPVwiYm9yZGVyLWJvdHRvbSB0ZXh0LWNlbnRlciBib2xkIG1iLTJcIj5FdmVudCB7eyRpbmRleCsxfX0uPC9kaXY+PGRpdiBjbGFzcz48c3BhbiBjbGFzcz1ib3JkZXItYm90dG9tPkV2ZW50PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkV2ZW50IG5hbWU8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWV2ZW50LkV2ZW50TmFtZT48L2Rpdj48ZGl2IGNsYXNzPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5FdmVudCB3aWRnZXQgaWQ8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWV2ZW50LkV2ZW50V2lkZ2V0SWQ+PC9kaXY+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+RXZlbnQgZm48L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWV2ZW50LkV2ZW50Rm4+PC9kaXY+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+SW5wdXQgcGFyYW1ldGVyczwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZXZlbnQuSW5wdXRQYXJhbXM+PC9kaXY+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1mZC5sb2NhbFZhcnNbZmQuaWRdLmRlbEV2ZW50KCRpbmRleCkgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFuZ2VyIGJ0bi14c1wiPjxpIGNsYXNzPVwiZmEgZmEtbWludXMgbXItMlwiPjwvaT4gPHNwYW4gY2xhc3M9c21hbGw+RGVsZXRlIGV2ZW50IHt7JGluZGV4KzF9fS48L3NwYW4+PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9ZmQubG9jYWxWYXJzW2ZkLmlkXS5hZGRBY3Rpb24oZXZlbnQpIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGJ0bi14c1wiPjxpIGNsYXNzPVwiZmEgZmEtcGx1cyBtci0yXCI+PC9pPiA8c3BhbiBjbGFzcz1zbWFsbD5BZGQgYWN0aW9uPC9zcGFuPjwvYnV0dG9uPjxkaXYgbmctcmVwZWF0PVwiYWN0aW9uIGluIGV2ZW50LmFjdGlvbnMgdHJhY2sgYnkgJGluZGV4XCIgY2xhc3M9cC0yPjxkaXYgY2xhc3M9XCJib3JkZXItYm90dG9tIHRleHQtY2VudGVyIGJvbGQgbWItMlwiPkFjdGlvbiB7eyRpbmRleCsxfX0uPC9kaXY+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+V2lkZ2V0IGlkPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1hY3Rpb24uV2lkZ2V0SWQ+PC9kaXY+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+QWN0aW9uIG5hbWU8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWFjdGlvbi5BY3Rpb25OYW1lPjwvZGl2PjxkaXYgY2xhc3M+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkNvbmRpdGlvbjwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9YWN0aW9uLkNvbmRpdGlvbj48L2Rpdj48ZGl2IGNsYXNzPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5JbnB1dCBwYXJhbWV0ZXJzPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1hY3Rpb24uSW5wdXRQYXJhbXM+PC9kaXY+PGRpdj48bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkXCI+RXhlY3V0ZSBhZnRlciBhY3Rpb24gbnVtYmVyPC9sYWJlbD4gPGlucHV0IHR5cGU9bnVtYmVyIHN0ZXA9MSBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1hY3Rpb24uRGVwZW5kc09uPjwvZGl2PjxkaXYgY2xhc3M9bXktMj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLmxvY2FsVmFyc1tmZC5pZF0uZGVsQWN0aW9uKGV2ZW50LCRpbmRleCkgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFuZ2VyIGJ0bi14c1wiPjxpIGNsYXNzPVwiZmEgZmEtbWludXMgbXItMlwiPjwvaT4gPHNwYW4gY2xhc3M9c21hbGw+UmVtb3ZlPC9zcGFuPjwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLmxvY2FsVmFyc1tmZC5pZF0uaW5zZXJ0QWN0aW9uKGV2ZW50LCRpbmRleCkgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4teHNcIj48aSBjbGFzcz1cImZhIGZhLWFycm93LXVwIG1yLTJcIj48L2k+IDxzcGFuIGNsYXNzPXNtYWxsPkluc2VydCBiZWZvcmU8L3NwYW4+PC9idXR0b24+IDxidXR0b24gbmctaWY9XCJmZC5QYXJhbWV0ZXJzLmFjdGlvbnMubGVuZ3RoLTEhPSRpbmRleFwiIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLmxvY2FsVmFyc1tmZC5pZF0uaW5zZXJ0QWN0aW9uKGV2ZW50LCRpbmRleCsxKSBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi14c1wiPjxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctZG93biBtci0yXCI+PC9pPiA8c3BhbiBjbGFzcz1zbWFsbD5JbnNlcnQgYWZ0ZXI8L3NwYW4+PC9idXR0b24+IDxidXR0b24gbmctaWY9XCJldmVudC5hY3Rpb25zLmxlbmd0aC0xPT0kaW5kZXhcIiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1mZC5sb2NhbFZhcnNbZmQuaWRdLmFkZEFjdGlvbihldmVudCkgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4teHNcIj48aSBjbGFzcz1cImZhIGZhLXBsdXMgbXItMlwiPjwvaT4gPHNwYW4gY2xhc3M9c21hbGw+QWRkIGFjdGlvbjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RGaWVsZEJhc2ljUHJvcGVydGllcy5odG1sJywnPGRpdj48ZGl2IG5nLWNsaWNrPVwiZmQubG9jYWxWYXJzLnNob3dNYWluID0gIWZkLmxvY2FsVmFycy5zaG93TWFpblwiIGNsYXNzPVwiZXhwYW5kLXByb3BlcnR5LXBhbmVsIHRhZyBib3JkZXItYm90dG9tIGJvcmRlci1zdWNjZXNzIG15LTEgcHktMVwiIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIGhyZWY9I21haW5Qcm9wZXJ0eVBhbmVsIHJvbGU9YnV0dG9uIGFyaWEtZXhwYW5kZWQ9dHJ1ZSBhcmlhLWNvbnRyb2xzPW1haW5Qcm9wZXJ0eVBhbmVsPjxzcGFuIGNsYXNzPVwiY29sIHAtMFwiPk1BSU48L3NwYW4+PGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLXNob3c9ZmQubG9jYWxWYXJzLnNob3dNYWluIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLWRvd25cIj48L2k+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PSFmZC5sb2NhbFZhcnMuc2hvd01haW4gY2xhc3M9XCJmYXMgZmEtYW5nbGUtdXBcIj48L2k+PC9kaXY+PGRpdiBjbGFzcz1cIm1iLTQgY29sbGFwc2Ugc2hvd1wiIGlkPW1haW5Qcm9wZXJ0eVBhbmVsPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5MYWJlbDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJtYi0yIGZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5MYWJlbD4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkVycm9yIG1zZzwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJtYi0yIGZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5FcnJvck1zZz4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPlNlYXJjaFRleHQ8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwibWItMiBmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuU2VhcmNoVGV4dD48ZGl2PjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbCBmb3I9Y2JNdWx0aWxpbmV7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JNdWx0aWxpbmV7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQuTXVsdGlsaW5lIG5nLWNoZWNrZWQ9ZmQuTXVsdGlsaW5lPiBDYW4gaGF2ZSBtdWx0aXBsZSBsaW5lczwvbGFiZWw+PC9kaXY+PGRpdiBuZy1pZj1mZC5NdWx0aWxpbmU+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPk51bWJlciBvZiByb3dzPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLk51bWJlclJvd3M+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0RmllbGRCb3JkZXJQcm9wZXJ0eS5odG1sJywnPGRpdj48ZGl2IGNsYXNzPVwiZXhwYW5kLXByb3BlcnR5LXBhbmVsIHRhZyBweS0zXCIgZGF0YS10b2dnbGU9Y29sbGFwc2UgaHJlZj0jbGF5b3V0UGFuZWwgcm9sZT1idXR0b24gYXJpYS1leHBhbmRlZD10cnVlIGFyaWEtY29udHJvbHM9bGF5b3V0UGFuZWw+PHNwYW4gY2xhc3M9XCJjb2wgcC0wXCI+Qm9yZGVyczwvc3Bhbj4gPGkgY2xhc3M9XCJmYXIgZmEtc3F1YXJlIGZhLWxnXCI+PC9pPjwvZGl2PjxkaXYgY2xhc3M9XCJtYi00IG10LW4yIGNvbGxhcHNlXCIgaWQ9bGF5b3V0UGFuZWwgc3R5bGU+PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMVwiPjxkaXYgY2xhc3M9cC0zPjxzdmcgd2lkdGg9MTAwJSB2aWV3Ym94PVwiLTEwMCAwIDEyMDAgMTAwMFwiIHByZXNlcnZlYXNwZWN0cmF0aW9uPXRydWU+PHBvbHlnb24gc3Ryb2tlLXdpZHRoPTEgc3Ryb2tlLWRhc2hhcnJheT1cIjEgMVwiIHN0eWxlPVwiZmlsbDogI2YxZjFmMTtzdHJva2U6ICNiYmI7XCIgcG9pbnRzPVwiMCwwIDEwMDAsMCAxMDAwLDEwMDAgMCwxMDAwXCI+PC9wb2x5Z29uPjxwb2x5Z29uIGNsYXNzPWNpcmNsZWNsYXNzIHN0cm9rZS13aWR0aD0xIHN0cm9rZS1kYXNoYXJyYXk9XCIyIDFcIiBzdHlsZT1cImZpbGw6IHdoaXRlO3N0cm9rZTogI2JiYjtcIiBwb2ludHM9XCI0MDAsNDAwIDYwMCw0MDAgNjAwLDYwMCA0MDAsNjAwXCI+PC9wb2x5Z29uPjxwb2x5Z29uIGNsYXNzPUJsdWVXaGVuSG92ZXIgbmctY2xpY2s9ZmQuc2VsZWN0Qm9yZGVyKGZkLlBhcmFtZXRlcnMuYm9yZGVyLmxlZnQpOyBuZy1zdHlsZT1cIntcXCdmaWxsXFwnOiBmZC5zZWxlY3RlZEJvcmRlcj09ZmQuUGFyYW1ldGVycy5ib3JkZXIubGVmdCA/IFxcJ3JnYigxMzUsIDIwNiwgMjM1KVxcJyA6IFxcJ3JnYigyMTYsIDIxNiwgMjE2KVxcJ31cIiBzdHlsZT1cInN0cm9rZTogcmdiKDAsIDAsIDApO1wiIHBvaW50cz1cIjE1MCwxNTAgMjAwLDIwMCAyMDAsODAwIDE1MCw4NTBcIj48L3BvbHlnb24+PHRpdGxlPkxlZnQgQm9yZGVyPC90aXRsZT48cG9seWdvbiBjbGFzcz1CbHVlV2hlbkhvdmVyIG5nLWNsaWNrPWZkLnNlbGVjdEJvcmRlcihmZC5QYXJhbWV0ZXJzLmJvcmRlci5yaWdodCk7IG5nLXN0eWxlPVwie1xcJ2ZpbGxcXCc6IGZkLnNlbGVjdGVkQm9yZGVyPT1mZC5QYXJhbWV0ZXJzLmJvcmRlci5yaWdodCA/IFxcJ3JnYigxMzUsIDIwNiwgMjM1KVxcJyA6IFxcJ3JnYigyMTYsIDIxNiwgMjE2KVxcJ31cIiBzdHlsZT1cInN0cm9rZTogcmdiKDAsIDAsIDApO1wiIHBvaW50cz1cIjg1MCwxNTAgODAwLDIwMCA4MDAsODAwIDg1MCw4NTBcIj48L3BvbHlnb24+PHRpdGxlPlJpZ2h0IEJvcmRlcjwvdGl0bGU+PHBvbHlnb24gY2xhc3M9Qmx1ZVdoZW5Ib3ZlciBuZy1jbGljaz1mZC5zZWxlY3RCb3JkZXIoZmQuUGFyYW1ldGVycy5ib3JkZXIudG9wKTsgbmctc3R5bGU9XCJ7XFwnZmlsbFxcJzogZmQuc2VsZWN0ZWRCb3JkZXI9PWZkLlBhcmFtZXRlcnMuYm9yZGVyLnRvcCA/IFxcJ3JnYigxMzUsIDIwNiwgMjM1KVxcJyA6IFxcJ3JnYigyMTYsIDIxNiwgMjE2KVxcJ31cIiBzdHlsZT1cInN0cm9rZTogcmdiKDAsIDAsIDApO1wiIHBvaW50cz1cIjE1MCwxNTAgMjAwLDIwMCA4MDAsMjAwIDg1MCwxNTBcIj48L3BvbHlnb24+PHRpdGxlPlRvcCBCb3JkZXI8L3RpdGxlPjxwb2x5Z29uIGNsYXNzPUJsdWVXaGVuSG92ZXIgbmctY2xpY2s9ZmQuc2VsZWN0Qm9yZGVyKGZkLlBhcmFtZXRlcnMuYm9yZGVyLmJvdHRvbSk7IG5nLXN0eWxlPVwie1xcJ2ZpbGxcXCc6IGZkLnNlbGVjdGVkQm9yZGVyPT1mZC5QYXJhbWV0ZXJzLmJvcmRlci5ib3R0b20gPyBcXCdyZ2IoMTM1LCAyMDYsIDIzNSlcXCcgOiBcXCdyZ2IoMjE2LCAyMTYsIDIxNilcXCd9XCIgc3R5bGU9XCJzdHJva2U6IHJnYigwLCAwLCAwKTtcIiBwb2ludHM9XCIxNTAsODUwIDIwMCw4MDAgODAwLDgwMCA4NTAsODUwXCI+PC9wb2x5Z29uPjx0aXRsZT5Cb3R0b20gQm9yZGVyPC90aXRsZT48L3N2Zz48L2Rpdj48ZGl2IGNsYXNzPXRleHQtY2VudGVyPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIiBmb3I9c2V0RWxlbWVudFdpZHRoPlNlbGVjdGVkIGJvcmRlcjoge3tmZC5zZWxlY3RlZEJvcmRlci5uYW1lfX08L2xhYmVsPjwvZGl2PjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIiBmb3I9c2V0RWxlbWVudFdpZHRoPlNldCBib3JkZXIgc3R5bGU8L2xhYmVsPjxzZWxlY3QgbmctbW9kZWw9ZmQuc2VsZWN0ZWRCb3JkZXIuc3R5bGUgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgaWQ9c2V0RWxlbWVudFdpZHRoPjxvcHRpb24gZGVmYXVsdD5zb2xpZDwvb3B0aW9uPjxvcHRpb24+ZGFzaGVkPC9vcHRpb24+PG9wdGlvbj5kb3R0ZWQ8L29wdGlvbj48L3NlbGVjdD48ZGl2IGNsYXNzPjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbCBmb3I9Y2JSb3VuZGVkQm9yZGVye3tmZC5QcmVzZW50YXRpb25JZH19PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPWNiUm91bmRlZEJvcmRlcnt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlJvdW5kZWRCb3JkZXJzIG5nLWNoZWNrZWQ9ZmQuUGFyYW1ldGVycy5Sb3VuZGVkQm9yZGVycz4gUm91bmRlZDwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1tYi0yPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5TZXQgY29sb3I8L2xhYmVsPiA8aW5wdXQgdHlwZT1jb2xvciBuZy1tb2RlbD1mZC5zZWxlY3RlZEJvcmRlci5jb2xvciBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48L2Rpdj48ZGl2IGNsYXNzPW1iLTI+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPlNldCB3aWR0aDwvbGFiZWw+IDxpbnB1dCB0eXBlPW51bWJlciBtaW49MCBtYXg9MTUgbmctbW9kZWw9ZmQuc2VsZWN0ZWRCb3JkZXIud2lkdGggY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+PC9kaXY+PGRpdiBjbGFzcz1tYi0yPjxsYWJlbCBjbGFzcz1sYWJlbC14cz5QcmV2aWV3PC9sYWJlbD48ZGl2IGNsYXNzPVwiYmctd2hpdGUgcC00IG0tMVwiIHN0eWxlPjxkaXYgY2xhc3M9YmctZ3JheS0xMDAgbmctc3R5bGU9XCJ7XFwnYm9yZGVyLWxlZnQtc3R5bGVcXCc6ZmQuUGFyYW1ldGVycy5ib3JkZXIubGVmdC5zdHlsZSxcXCdib3JkZXItbGVmdC13aWR0aFxcJzpmZC5QYXJhbWV0ZXJzLmJvcmRlci5sZWZ0LndpZHRoLFxcJ2JvcmRlci1sZWZ0LWNvbG9yXFwnOmZkLlBhcmFtZXRlcnMuYm9yZGVyLmxlZnQuY29sb3IsIFxcJ2JvcmRlci1yaWdodC1zdHlsZVxcJzpmZC5QYXJhbWV0ZXJzLmJvcmRlci5yaWdodC5zdHlsZSxcXCdib3JkZXItcmlnaHQtd2lkdGhcXCc6ZmQuUGFyYW1ldGVycy5ib3JkZXIucmlnaHQud2lkdGgsXFwnYm9yZGVyLXJpZ2h0LWNvbG9yXFwnOmZkLlBhcmFtZXRlcnMuYm9yZGVyLnJpZ2h0LmNvbG9yLCBcXCdib3JkZXItdG9wLXN0eWxlXFwnOmZkLlBhcmFtZXRlcnMuYm9yZGVyLnRvcC5zdHlsZSxcXCdib3JkZXItdG9wLXdpZHRoXFwnOmZkLlBhcmFtZXRlcnMuYm9yZGVyLnRvcC53aWR0aCxcXCdib3JkZXItdG9wLWNvbG9yXFwnOmZkLlBhcmFtZXRlcnMuYm9yZGVyLnRvcC5jb2xvciwgXFwnYm9yZGVyLWJvdHRvbS1zdHlsZVxcJzpmZC5QYXJhbWV0ZXJzLmJvcmRlci5ib3R0b20uc3R5bGUsXFwnYm9yZGVyLWJvdHRvbS13aWR0aFxcJzpmZC5QYXJhbWV0ZXJzLmJvcmRlci5ib3R0b20ud2lkdGgsXFwnYm9yZGVyLWJvdHRvbS1jb2xvclxcJzpmZC5QYXJhbWV0ZXJzLmJvcmRlci5ib3R0b20uY29sb3IgfTtcIiBzdHlsZT1cIm1pbi1oZWlnaHQ6IDUwcHg7XCI+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0RmllbGREYXRhU291cmNlUHJvcGVydGllcy5odG1sJywnPGRpdj48ZGl2IG5nLWNsaWNrPVwiZmQubG9jYWxWYXJzLnNob3dEYXRhU291cmNlID0gIWZkLmxvY2FsVmFycy5zaG93RGF0YVNvdXJjZVwiIGNsYXNzPVwiZXhwYW5kLXByb3BlcnR5LXBhbmVsIHRhZyBib3JkZXItYm90dG9tIGJvcmRlci1zdWNjZXNzIG15LTEgcHktMVwiIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIGhyZWY9I2RhdGFTb3VyY2VQcm9wZXJ0aWVzIHJvbGU9YnV0dG9uIGFyaWEtZXhwYW5kZWQ9ZmFsc2UgYXJpYS1jb250cm9scz1kYXRhU291cmNlUHJvcGVydGllcz48c3BhbiBjbGFzcz1cImNvbCBwLTBcIj5EYXRhIGFuZCB2YWxpZGF0aW9uIHByb3BlcnRpZXM8L3NwYW4+PGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLWhpZGU9ZmQubG9jYWxWYXJzLnNob3dEYXRhU291cmNlIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLWRvd25cIj48L2k+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1oaWRlPSFmZC5sb2NhbFZhcnMuc2hvd0RhdGFTb3VyY2UgY2xhc3M9XCJmYXMgZmEtYW5nbGUtdXBcIj48L2k+PC9kaXY+PGRpdiBpZD1kYXRhU291cmNlUHJvcGVydGllcyBjbGFzcz1cImNvbGxhcHNlIG0tMCBtdC0yXCI+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWwgZm9yPWNiUmVxdWlyZWR7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JSZXF1aXJlZHt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1tb2RlbD1mZC5SZXF1aXJlZCBuZy1jaGVja2VkPWZkLlJlcXVpcmVkPiBSZXF1aXJlZDwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWwgZm9yPWNiVXNlRGVmYXVsdHt7ZmQuUHJlc2VudGF0aW9uSWR9fT48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCIgbmFtZT1jYlVzZURlZmF1bHR7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQuVXNlRGVmYXVsdCBuZy1jaGVja2VkPWZkLlVzZURlZmF1bHQ+IFNob3cgZGVmYXVsdCB2YWx1ZSBvbiBmb3JtPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbCBmb3I9Y2JVcGRhdGVXaXRoRGVmYXVsdHt7ZmQuUHJlc2VudGF0aW9uSWR9fT48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCIgbmFtZT1jYlVwZGF0ZVdpdGhEZWZhdWx0e3tmZC5QcmVzZW50YXRpb25JZH19IG5nLW1vZGVsPWZkLlVwZGF0ZVdpdGhEZWZhdWx0IG5nLWNoZWNrZWQ9ZmQuVXBkYXRlV2l0aERlZmF1bHQ+IFVzZSBkZWZhdWx0IHZhbHVlIGZvciB1cGRhdGUgb3Igc2VhcmNoPC9sYWJlbD48L2Rpdj48ZGl2PjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbD48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5Vc2VVc2VyUHJvcGVydHk+IFBvcHVsYXRlIHZhbHVlIGZyb20gdXNlciBhZHZhbmNlZCBwcm9wZXJ0aWVzPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbCBmb3I9Y2JMb2FkRnJvbVN0YXRle3tmZC5QcmVzZW50YXRpb25JZH19PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPWNiTG9hZEZyb21TdGF0ZXt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkxvYWRGcm9tU3RhdGUgbmctY2hlY2tlZD1mZC5Mb2FkRnJvbVN0YXRlPiBMb2FkIGRhdGEgZnJvbSBzdGF0ZTwvbGFiZWw+PC9kaXY+PGRpdiBuZy1pZj1cImZkLkVsZW1lbnRUeXBlPT1cXCd0ZXh0Ym94XFwnXCI+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPlJlZ2V4PC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlJlZ2V4PjwvZGl2PjxkaXYgbmctaWY9XCJmZC5FbGVtZW50VHlwZT09XFwnbGlzdFxcJ1wiPjxsYWJlbCBjbGFzcz1cIm10LTEgbGFiZWwteHMgdGV4dC1tdXRlZFwiPkNvbmRpdGlvbmFsIGNvZGU8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuQ29uZGl0aW9uPjwvZGl2PjxkaXYgbmctaWY9XCJmZC5FbGVtZW50VHlwZT09XFwnZGF0ZVxcJ1wiPjxkaXYgY2xhc3M+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYlVzZVN5c3RlbURhdGV7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JVc2VTeXN0ZW1EYXRle3tmZC5QcmVzZW50YXRpb25JZH19IG5nLW1vZGVsPWZkLlVzZVN5c3RlbURhdGUgbmctY2hlY2tlZD1mZC5Vc2VTeXN0ZW1EYXRlPiBQb3B1bGF0ZSB3aXRoIHN5c3RlbSBkYXRlL3RpbWU8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYkVwb2Noe3tmZC5QcmVzZW50YXRpb25JZH19PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPWNiRXBvY2h7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5FcG9jaCBuZy1jaGVja2VkPWZkLlBhcmFtZXRlcnMuRXBvY2g+IFNvdXJjZSBpbiBlcG9jaCBmb3JtYXQ8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPlNvdXJjZSBmaWVsZCBuYW1lPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlNvdXJjZUZpZWxkTmFtZT48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPWZkLlBhcmFtZXRlcnMuVXNlVXNlclByb3BlcnR5PjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5FbnRlciBhZHZhbmNlIHByb3BlcnR5IGlkPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlVzZXJQcm9wZXJ0eUlkPjwvZGl2PjxkaXYgY2xhc3M+PGRpdiBjbGFzcz1cImJvbGQgbXktMVwiPkRlZmF1bHQ6PC9kaXY+PGRpdiBjbGFzcz1teS0xIHN0eWxlPVwib3ZlcmZsb3c6IGF1dG87XCI+e3tmZC5EZWZhdWx0VmFsdWV9fTwvZGl2PjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9ZmQuU2V0RGVmYXVsdCgpIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4taW5mbyBteS0yXCI+U2V0IGRlZmF1bHQ8L2J1dHRvbj4gPGJ1dHRvbiBuZy1pZj1mZC5sb2NhbFZhcnMuZW5hYmxlRWRpdERlZmF1bHQgdHlwZT1idXR0b24gbmctY2xpY2s9ZmQubG9jYWxWYXJzLkVkaXREZWZhdWx0KCkgY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1pbmZvIG15LTIgbWwtMlwiPkVkaXQgZGVmYXVsdCA8aSBjbGFzcz1cImZhIGZhLXBlbmNpbFwiPjwvaT48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbCBmb3I9Y2JOb1VwZGF0ZXt7ZmQuUHJlc2VudGF0aW9uSWR9fT48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCIgbmFtZT1jYk5vVXBkYXRle3tmZC5QcmVzZW50YXRpb25JZH19IG5nLW1vZGVsPWZkLk5vVXBkYXRlIG5nLWNoZWNrZWQ9ZmQuTm9VcGRhdGU+IERvIG5vdCB1c2UgdGhpcyBmaWVsZCAoZm9yIHVwZGF0ZSBvciBzZWFyY2gpPC9sYWJlbD48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RGaWVsZEV4dGVuZGVkUHJvcGVydGllcy5odG1sJywnPGRpdiBuZy1pbml0PVwidG9nZ2xlU2l6ZSA9IHRydWU7IHRvZ2dsZUdlbmVyYWxcIiBjbGFzcz1tdC0xPjxkaXYgY2xhc3M9XCJtdC0xIG1iLTFcIiBpZD1leHRlbmRlZFByb3BlcnR5UGFuZWw+PGRpdiBuZy1oaWRlPVwicmVzb3VyY2VEZWZpbml0aW9uLndpZGdldFByb3BlcnR5SGlkZU1hcFtcXCdnZW5lcmFsXFwnXVwiIGt0LWZpZWxkLWdlbmVyYWwtcHJvcGVydHk+PC9kaXY+PGRpdiBuZy1oaWRlPVwicmVzb3VyY2VEZWZpbml0aW9uLndpZGdldFByb3BlcnR5SGlkZU1hcFtcXCdkYXRhVmFsaWRhdGlvblxcJ11cIiBrdC1maWVsZC1kYXRhLXNvdXJjZS1wcm9wZXJ0aWVzPjwvZGl2PjxkaXYga3QtZmllbGQtc2l6ZS1wcm9wZXJ0eT48L2Rpdj48ZGl2IGt0LWZpZWxkLXN0eWxlLXByb3BlcnR5PjwvZGl2PjxkaXYga3QtZmllbGQtYWR2YW5jZWQtcHJvcGVydGllcz48L2Rpdj48L2Rpdj48ZGl2IGt0LWRlbGV0ZS1lbGVtZW50PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEZpZWxkR2VuZXJhbFByb3BlcnR5Lmh0bWwnLCc8ZGl2PjxkaXYgbmctY2xpY2s9XCJmZC5sb2NhbFZhcnMuc2hvd0dlbmVyYWwgPSAhZmQubG9jYWxWYXJzLnNob3dHZW5lcmFsXCIgY2xhc3M9XCJleHBhbmQtcHJvcGVydHktcGFuZWwgdGFnIGJvcmRlci1ib3R0b20gYm9yZGVyLXN1Y2Nlc3MgbXktMSBweS0xXCIgZGF0YS10b2dnbGU9Y29sbGFwc2UgaHJlZj0jZ2VuZXJhbFByb3BlcnRpZXMgcm9sZT1idXR0b24gYXJpYS1leHBhbmRlZD1mYWxzZSBhcmlhLWNvbnRyb2xzPWV4dGVuZGVkUHJvcGVydHlQYW5lbD48c3BhbiBjbGFzcz1cImNvbCBwLTBcIj5Db25zdHJhaW50czwvc3Bhbj48aSBzdHlsZT1cImZvbnQtc2l6ZTogbGFyZ2U7XCIgbmctaGlkZT1mZC5sb2NhbFZhcnMuc2hvd0dlbmVyYWwgY2xhc3M9XCJmYXMgZmEtYW5nbGUtZG93blwiPjwvaT4gPGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLWhpZGU9IWZkLmxvY2FsVmFycy5zaG93R2VuZXJhbCBjbGFzcz1cImZhcyBmYS1hbmdsZS11cFwiPjwvaT48L2Rpdj48ZGl2IGlkPWdlbmVyYWxQcm9wZXJ0aWVzIGNsYXNzPVwiY29sbGFwc2UgbS0wIG10LTJcIj48ZGl2IGNsYXNzPjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbCBmb3I9Y2JVbmlxdWV7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIGJvcmRlciBteS0yIG1yLTJcIiBuYW1lPWNiVW5pcXVle3tmZC5QcmVzZW50YXRpb25JZH19IG5nLW1vZGVsPWZkLlVuaXF1ZSBuZy1jaGVja2VkPWZkLlVuaXF1ZT4gVW5pcXVlPC9sYWJlbD48L2Rpdj48ZGl2PjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5NYXggbGVuZ3RoPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5NYXhMZW5ndGg+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0RmllbGRTaXplUHJvcGVydHkuaHRtbCcsJzxkaXYgY2xhc3M9bXQtMSBpZD1leHRlbmRlZFByb3BlcnR5UGFuZWw+PGRpdiBuZy1jbGljaz1cImZkLmxvY2FsVmFycy5zaG93U2l6ZSA9ICFmZC5sb2NhbFZhcnMuc2hvd1NpemVcIiBjbGFzcz1cImV4cGFuZC1wcm9wZXJ0eS1wYW5lbCB0YWcgYm9yZGVyLWJvdHRvbSBib3JkZXItc3VjY2VzcyBteS0xIHB5LTFcIiBkYXRhLXRvZ2dsZT1jb2xsYXBzZSBocmVmPSNlbGVtZW50U2l6ZXt7ZmQuUHJlc2VudGF0aW9uSWR9fSByb2xlPWJ1dHRvbiBhcmlhLWV4cGFuZGVkPWZhbHNlIGFyaWEtY29udHJvbHM9ZXh0ZW5kZWRQcm9wZXJ0eVBhbmVsPjxzcGFuIGNsYXNzPVwiY29sIHAtMFwiPkVsZW1lbnQgc2l6ZTwvc3Bhbj48aSBzdHlsZT1cImZvbnQtc2l6ZTogbGFyZ2U7XCIgbmctaGlkZT1mZC5sb2NhbFZhcnMuc2hvd1NpemUgY2xhc3M9XCJmYXMgZmEtYW5nbGUtZG93blwiPjwvaT4gPGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLWhpZGU9IWZkLmxvY2FsVmFycy5zaG93U2l6ZSBjbGFzcz1cImZhcyBmYS1hbmdsZS11cFwiPjwvaT48L2Rpdj48ZGl2IGNsYXNzPWNvbGxhcHNlIGlkPWVsZW1lbnRTaXple3tmZC5QcmVzZW50YXRpb25JZH19Pjx1bCBjbGFzcz1cIm10LTIgbmF2IHByb3AtdGFicyBzbWFsbFwiPjxsaSBjbGFzcz1uYXYtaXRlbT48YSBjbGFzcz1uYXYtbGluayBuZy1jbGFzcz1cIntcXCdhY3RpdmUgYm9sZCBcXCc6IWZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZX1cIiBuZy1jbGljaz1cImZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSA9IGZhbHNlXCI+U3RhbmRhcmQgc2l6ZTwvYT48L2xpPjxsaSBjbGFzcz1uYXYtaXRlbT48YSBjbGFzcz1uYXYtbGluayBuZy1jbGFzcz1cIntcXCdhY3RpdmUgYm9sZCBcXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplfVwiIG5nLWNsaWNrPVwiZmQuUGFyYW1ldGVycy5DdXN0b21TaXplID0gdHJ1ZVwiPkN1c3RvbSBzaXplPC9hPjwvbGk+PC91bD48ZGl2IG5nLWlmPSFmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUgY2xhc3M9XCJwcm9wLXRhYi1jb250ZW50IHAtMVwiPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5FbGVtZW50IHdpZHRoIHt7ZmQuUGFyYW1ldGVycy5FbGVtZW50V2lkdGh9fTwvbGFiZWw+IDxpbnB1dCBpZD1lbGVtZW50V2lkdGh7e2ZkLlByZXNlbnRhdGlvbklkfX0gdHlwZT1yYW5nZSBtaW49MSBtYXg9MjQgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5FbGVtZW50V2lkdGggY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5MYWJlbCBsZW5ndGgge3tmZC5MYWJlbExlbmd0aH19PC9sYWJlbD4gPGlucHV0IHR5cGU9cmFuZ2UgbWluPTEgbWF4PTI0IG5nLW1vZGVsPWZkLkxhYmVsTGVuZ3RoIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+VmFsdWUgbGVuZ3RoIHt7ZmQuVmFsdWVMZW5ndGh9fTwvbGFiZWw+IDxpbnB1dCB0eXBlPXJhbmdlIG1pbj0xIG1heD0yNCBuZy1tb2RlbD1mZC5WYWx1ZUxlbmd0aCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48L2Rpdj48ZGl2IG5nLWlmPWZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSBjbGFzcz1cInByb3AtdGFiLWNvbnRlbnQgcC0xIG1iLTRcIj48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+TGFiZWwgd2lkdGg8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuTGFiZWxTdHlsZS5XaWR0aCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkxhYmVsIGhlaWdodDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5MYWJlbFN0eWxlLkhlaWdodCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPlZhbHVlIHdpZHRoPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkVsZW1lbnRTdHlsZS5XaWR0aCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPlZhbHVlIGhlaWdodDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5FbGVtZW50U3R5bGUuSGVpZ2h0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiPjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEZpZWxkU3R5bGVQcm9wZXJ0eS5odG1sJywnPGRpdj48ZGl2IG5nLWNsaWNrPVwiZmQubG9jYWxWYXJzLnNob3dTdHlsZSA9ICFmZC5sb2NhbFZhcnMuc2hvd1N0eWxlXCIgY2xhc3M9XCJleHBhbmQtcHJvcGVydHktcGFuZWwgdGFnIGJvcmRlci1ib3R0b20gYm9yZGVyLXN1Y2Nlc3MgbXktMSBweS0xXCIgZGF0YS10b2dnbGU9Y29sbGFwc2UgaHJlZj0jc3R5bGUgcm9sZT1idXR0b24gYXJpYS1leHBhbmRlZD1mYWxzZSBhcmlhLWNvbnRyb2xzPWV4dGVuZGVkUHJvcGVydHlQYW5lbD48c3BhbiBjbGFzcz1cImNvbCBwLTBcIj5TdHlsZSAmIHZpc2liaWxpdHk8L3NwYW4+PGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLWhpZGU9ZmQubG9jYWxWYXJzLnNob3dTdHlsZSBjbGFzcz1cImZhcyBmYS1hbmdsZS1kb3duXCI+PC9pPiA8aSBzdHlsZT1cImZvbnQtc2l6ZTogbGFyZ2U7XCIgbmctaGlkZT0hZmQubG9jYWxWYXJzLnNob3dTdHlsZSBjbGFzcz1cImZhcyBmYS1hbmdsZS11cFwiPjwvaT48L2Rpdj48ZGl2IGlkPXN0eWxlIGNsYXNzPVwiY29sbGFwc2UgbS0wIG10LTJcIj48ZGl2IGNsYXNzPjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbCBmb3I9Y2JTaG93RmllbGR7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JTaG93RmllbGR7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQuU2hvd0ZpZWxkIG5nLWNoZWNrZWQ9ZmQuU2hvd0ZpZWxkPiBTaG93IGZpZWxkPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPW1iLTE+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYlJlYWRPbmx5e3tmZC5QcmVzZW50YXRpb25JZH19PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPWNiUmVhZE9ubHl7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQuUmVhZE9ubHkgbmctY2hlY2tlZD1mZC5SZWFkT25seT4gUmVhZCBvbmx5PC9sYWJlbD48L2Rpdj48bGFiZWwgY2xhc3M9XCJtLTEgbGFiZWwteHMgdGV4dC1tdXRlZFwiPkN1c3RvbSBlbGVtZW50IENTUzwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5jdXN0b21DU1MgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+PHVsIGNsYXNzPVwibXQtMiBuYXYgcHJvcC10YWJzIHNtYWxsXCI+PGxpIG5nLWhpZGU9ZmQuUGFyYW1ldGVycy5IaWRlRWxlbWVudFByb3BlcnRpZXMgY2xhc3M9bmF2LWl0ZW0+PGEgY2xhc3M9bmF2LWxpbmsgbmctY2xhc3M9XCJ7XFwnYWN0aXZlIGJvbGRcXCc6IWZkLmlzTGFiZWxTdHlsZX1cIiBuZy1jbGljaz1cImZkLmlzTGFiZWxTdHlsZSA9IGZhbHNlXCI+VmFsdWUgc3R5bGU8L2E+PC9saT48bGkgY2xhc3M9bmF2LWl0ZW0+PGEgY2xhc3M9bmF2LWxpbmsgbmctY2xhc3M9XCJ7XFwnYWN0aXZlIGJvbGRcXCc6ZmQuaXNMYWJlbFN0eWxlfVwiIG5nLWNsaWNrPVwiZmQuaXNMYWJlbFN0eWxlID0gdHJ1ZVwiPkxhYmVsIHN0eWxlPC9hPjwvbGk+PC91bD48ZGl2IG5nLWlmPWZkLmlzTGFiZWxTdHlsZSBjbGFzcz1cInByb3AtdGFiLWNvbnRlbnQgcC0xIG1iLTRcIj48ZGl2IGNsYXNzPjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbCBmb3I9Y2JIaWRlTGFiZWx7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JIaWRlTGFiZWx7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5IaWRlTGFiZWwgbmctY2hlY2tlZD1mZC5QYXJhbWV0ZXJzLkhpZGVMYWJlbD4gSGlkZSBsYWJlbDwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWwgZm9yPWNiRm9udEJvbGR7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JGb250Qm9sZHt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkZvbnRCb2xkIG5nLWNoZWNrZWQ9ZmQuUGFyYW1ldGVycy5Gb250Qm9sZD4gQm9sZDwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+Rm9udCBzaXplPC9sYWJlbD4gPGlucHV0IHR5cGU9bnVtYmVyIHN0ZXA9MC4wMSBtaW49MC4wMSBtYXg9MTAwIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuRm9udFNpemUgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+PC9kaXY+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiIGZvcj1zZXRGb250VW5pdHM+Rm9udCBVbml0czwvbGFiZWw+PHNlbGVjdCBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkZvbnRVbml0cyBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBpZD1zZXRGb250VW5pdHNMYWJlbD48b3B0aW9uPnB4PC9vcHRpb24+PG9wdGlvbj5lbTwvb3B0aW9uPjxvcHRpb24+JTwvb3B0aW9uPjwvc2VsZWN0PjxkaXYgY2xhc3M+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkZvbnQgY29sb3I8L2xhYmVsPiA8aW5wdXQgdHlwZT1jb2xvciBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkZvbnRDb2xvciBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48L2Rpdj48ZGl2IGNsYXNzPVwibS0wIG10LTJcIj48ZGl2IGNsYXNzPVwiY29sIHAtMFwiPjxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlXCIgcm9sZT1ncm91cCBhcmlhLWxhYmVsPVwiTGFiZWwgYWxpZ25cIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwiZmQuUGFyYW1ldGVycy5MYWJlbEFsaWduPVxcJ2xlZnRcXCdcIiBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuUGFyYW1ldGVycy5MYWJlbEFsaWduPT1cXCdsZWZ0XFwnfVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5XCI+PGkgY2xhc3M9XCJmYXMgZmEtYWxpZ24tbGVmdFwiPjwvaT48L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cImZkLlBhcmFtZXRlcnMuTGFiZWxBbGlnbj1cXCdjZW50ZXJcXCdcIiBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuUGFyYW1ldGVycy5MYWJlbEFsaWduPT1cXCdjZW50ZXJcXCd9XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnlcIj48aSBjbGFzcz1cImZhcyBmYS1hbGlnbi1jZW50ZXJcIj48L2k+PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9XCJmZC5QYXJhbWV0ZXJzLkxhYmVsQWxpZ249XFwncmlnaHRcXCdcIiBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuUGFyYW1ldGVycy5MYWJlbEFsaWduPT1cXCdyaWdodFxcJ31cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeVwiPjxpIGNsYXNzPVwiZmFzIGZhLWFsaWduLXJpZ2h0XCI+PC9pPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxsYWJlbCBjbGFzcz1cIm0tMSBsYWJlbC14cyB0ZXh0LW11dGVkXCI+Q3VzdG9tIENTUzwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5jdXN0b21Dc3NMYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48L2Rpdj48ZGl2IG5nLWlmPSFmZC5pc0xhYmVsU3R5bGUgbmctaGlkZT1mZC5QYXJhbWV0ZXJzLkhpZGVFbGVtZW50UHJvcGVydGllcyBjbGFzcz1cInByb3AtdGFiLWNvbnRlbnQgcC0xIG1iLTRcIj48ZGl2IGNsYXNzPjwvZGl2PjxkaXYgY2xhc3M+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYlZhbHVlRm9udEJvbGR7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JWYWx1ZUZvbnRCb2xke3tmZC5QcmVzZW50YXRpb25JZH19IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuVmFsdWVGb250Qm9sZCBuZy1jaGVja2VkPWZkLlBhcmFtZXRlcnMuVmFsdWVGb250Qm9sZD4gQm9sZDwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWwgZm9yPWNiTm9Cb3JkZXJ7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JOb0JvcmRlcnt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkJvcmRlckZvclJlYWRPbmx5IG5nLWNoZWNrZWQ9ZmQuUGFyYW1ldGVycy5Cb3JkZXJGb3JSZWFkT25seT4gQWRkIGJvcmRlcnMgZm9yIHJlYWQgb25seTwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+Rm9udCBzaXplPC9sYWJlbD4gPGlucHV0IHR5cGU9bnVtYmVyIHN0ZXA9MC4wMSBtaW49MC4wMSBtYXg9MTAwIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuVmFsdWVGb250U2l6ZSBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48L2Rpdj48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCIgZm9yPXNldEZvbnRVbml0cz5Gb250IFVuaXRzPC9sYWJlbD48c2VsZWN0IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuVmFsdWVGb250VW5pdHMgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgaWQ9c2V0Rm9udFVuaXRzPjxvcHRpb24+cHg8L29wdGlvbj48b3B0aW9uPmVtPC9vcHRpb24+PG9wdGlvbj4lPC9vcHRpb24+PC9zZWxlY3Q+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+Rm9udCBjb2xvcjwvbGFiZWw+IDxpbnB1dCB0eXBlPWNvbG9yIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuVmFsdWVGb250Q29sb3IgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+PC9kaXY+PGxhYmVsIGNsYXNzPVwibS0xIGxhYmVsLXhzIHRleHQtbXV0ZWRcIj5DdXN0b20gQ1NTPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLmN1c3RvbUNzc0VsZW1lbnQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0RmlsZS5odG1sJywnPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcGItMSByb3cgbS0wIGRhdGFzZXQtaXRlbVwiIG5nLWlmPVwiZmQuU2hvd0ZpZWxkIHx8IChmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MilcIiBuZy1mb3JtPWlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fSBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiAoaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0uRGF0YXNldHt7ZmQuSXRlbUlkfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0uRGF0YXNldHt7ZmQuSXRlbUlkfX0uJGludmFsaWQsXFwnYmctZ3JheS0yMCBtci0wIGJvcmRlclxcJzpmZC5JdGVtSWQ9PWdzcnZjLmdldFNlbGVjdGVkSXRlbUlkKCkgJiYgZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzT3BlbmVkKCkgfVwiPjxkaXYgbmctaGlkZT1cIihmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZT09MiB8fCBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MikgJiYgZmQuUGFyYW1ldGVycy5IaWRlTGFiZWxcIiBzdHlsZT17e2ZkLmxhYmVsQWxpZ259fSBjbGFzcz17e2ZkLmdyaWRDbGFzc0xhYmVsfX0gbmctY2xhc3M9XCJ7XFwnY29sLWF1dG9cXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplfVwiPjxsYWJlbCBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2xhYmVsXFwnXCIgc3R5bGU9e3tmZC5jdXN0b21TdHlsZUxhYmVsfX0gZm9yPXt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fSBjbGFzcz1cInAtMCBtYXJnaW5MNSBmb3JtLWNvbnRyb2wtbGFiZWwgbm8tYm9yZGVyIGFsaWduLW1pZGRsZVwiIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlclxcJyA6IChpbm5lckZvcm17e2ZkLkl0ZW1JZH19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0uJGludmFsaWQsXFwnY3VzdG9tLWVsLWxheW91dC1zdHlsZVxcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTF9XCI+e3tmZC5MYWJlbH19IDxzcGFuIHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVMYWJlbH19IG5nLWlmPVwiZmQuUHJlc2VudGF0aW9uVHlwZT09MFwiPih7e2ZkLmxvY2FsVmFycy5ncmlkRGF0YS5sZW5ndGh9fSByZWNvcmRzKTwvc3Bhbj48L2xhYmVsPjwvZGl2PjxkaXYgc3R5bGU9XCJ2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudFwiIGNsYXNzPVwiYmx1ZS1kcm9wZG93biByb3VuZGVkIHNoYWRvd1wiPjxkaXYgY2xhc3M9XCJlbGVtZW50LXByb3BlcnRpZXMtYnRucyBiZy1wcmltYXJ5IHJvdW5kZWQgc2hhZG93IG10LTJcIiBuZy1pZj1cImZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xICYmIGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlIT0yXCI+PHNwYW4gY2xhc3M9XCJsYWJlbCBsYWJlbC14cyB0ZXh0LXdoaXRlIG1sLTEgYm9sZFwiPnt7ZmQuTmFtZX19PC9zcGFuPiA8YSBocmVmIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi14cyBwcm9wLWJ0biBlbGVtZW50LWRyYWctaGFuZGxlXCIgdGl0bGU9c29ydD48aSBjbGFzcz1cImVsZW1lbnQtZHJhZy1oYW5kbGUgZmEgZmEtZ3JpcC12ZXJ0aWNhbFwiPjwvaT48L2E+IDxhIGhyZWYgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIHByb3AtYnRuXCIgbmctY2xpY2s9Z3NydmMuc2V0RmllbGRQcm9wZXJ0aWVzKGZkLCRldmVudCk+PGkgY2xhc3M9XCJmYSBmYS1jb2dcIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3MgYXJpYS1sYWJlbGxlZGJ5PW1hc3MtcHJvcGVydHkte3tmZC5QcmVzZW50YXRpb25JZH19IGt0LW1hc3MtdXBkYXRlLXByb3BlcnRpZXM+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlNob3dTZWFyY2hGb3JtICYmIGZkLmxvY2FsVmFycy5mb3JtTG9hZGVkXCIgY2xhc3M9XCJ7e2ZkLmdyaWRDbGFzc0VsZW1lbnR9fSBwLTAgbXktYXV0b1wiPjxkaXYga3QtZ3JpZCBncmlkLXR5cGU9ZmQubG9jYWxWYXJzLmdyaWRzdGVyVHlwZSBzaG93LXNlYXJjaC1maWx0ZXJzPWZkLmxvY2FsVmFycy5zaG93U2VhcmNoRmlsdGVycyByZXNvdXJjZS1mb3JtLWxvYWRlZD1mZC5sb2NhbFZhcnMuZm9ybUxvYWRlZCBwYXJlbnQtcmVzb3VyY2UtZGVmLWlkPWZkLlBhcmVudERhdGFzZXREZWZJZCByZXNvdXJjZS1yZWNvcmQtaWQ9ZmQubG9jYWxWYXJzLmRhdGFzZXRSZWNvcmRJZCByZXNvdXJjZS1kZWZpbml0aW9uPXJlc291cmNlRGVmaW5pdGlvbiBmb3JtLXBhcmFtcz1mZC5sb2NhbFZhcnMuZm9ybVBhcmFtcyBmb3JtLXBhcmFtcy1wYXJlbnQ9Zm9ybVBhcmFtcyBmb3JtLWRhdGE9ZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLmZvcm1EYXRhIHBhcmVudD1mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMgYWxsLWNvbHVtbnM9ZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzPjwvZGl2PjxidXR0b24gbmctaWY9ZmFsc2UgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4teHNcIiBuZy1jbGljaz1mZC5sb2NhbFZhcnMuU2VsZWN0UmVjb3JkcygpPjxpIGNsYXNzPVwiZmEgZmEtc2F2ZVwiPjwvaT5BcHBseSBzZWFyY2g8L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwie3tmZC5ncmlkQ2xhc3NFbGVtZW50fX0gbXktYXV0b1wiPjxkaXYgbmctaWY9XCJmZC5QcmVzZW50YXRpb25UeXBlPT0xICYmICFmZC5SZWFkT25seVwiPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1pZj1cImZkLmRhdGFzZXRJdGVtcyAmJiAhZmQuTXVsdGlsaW5lXCIgbmctbW9kZWw9aXRlbVZhbHVlLnZhbCBpcy1tdWx0aXBsZT1mYWxzZSBzZWxlY3RlZC1pdGVtcz1pdGVtVmFsdWUudmFsIHJlcXVpcmVkLWZpZWxkPWZkLlJlcXVpcmVkIGRyb3Bkb3duLWl0ZW1zPWZkLmRhdGFzZXRJdGVtcyBkcm9wZG93bi1pZD1mZC5OYW1lK2ZkLkl0ZW1JZCBwYXJlbnQtZm9ybS1pZD1cIlxcJ2lubmVyRm9ybVxcJytmZC5JdGVtSWRcIiBzZWFyY2gtdGV4dD1mZC5TZWFyY2hUZXh0Pjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PGRpdiBuZy1pZj0hZmQuZGF0YXNldEl0ZW1zIGNsYXNzPWZvcm0tY29udHJvbD5EYXRhc2V0IHBsYWNlaG9sZGVyPC9kaXY+PGt0LWRyb3Bkb3duLW11bHRpcGxlIG5nLWlmPWZkLk11bHRpbGluZSBuZy1tb2RlbD1mb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdIHNlbGVjdGVkLWl0ZW1zPWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0gbmFtZT1EYXRhc2V0e3tmZC5JdGVtSWR9fSByZXF1aXJlZD1mZC5SZXF1aXJlZCBkcm9wZG93bi1pdGVtcz1mZC5kYXRhc2V0SXRlbXMgZHJvcGRvd24taWQ9XCJcXCdEYXRhc2V0XFwnK2ZkLkl0ZW1JZFwiIHBhcmVudC1mb3JtLWlkPVwiXFwnaW5uZXJGb3JtXFwnK2ZkLkl0ZW1JZFwiIHNlYXJjaC10ZXh0PWZkLlNlYXJjaFRleHQ+PC9rdC1kcm9wZG93bi1tdWx0aXBsZT48cCBuZy1jbGFzcz1cIntcXCdpbnZhbGlkLXRvb2x0aXAgcmlnaHQtMCBtci0zXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCd0b29sdGlwXFwnIHx8IGZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT11bmRlZmluZWQsXFwnaW52YWxpZC1mZWVkYmFja1xcJzpmZC5QYXJhbWV0ZXJzLkVycm9yTXNnVHlwZT09XFwnZmVlZGJhY2tcXCcsXFwnZC1ibG9ja1xcJzooaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17e2ZkLkl0ZW1JZH19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fS4kaW52YWxpZH1cIj57e2ZkLkVycm9yTXNnfX08L3A+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlByZXNlbnRhdGlvblR5cGU9PTEgJiYgZmQuUmVhZE9ubHlcIj48ZGl2IG5nLWlmPVwiZm9ybURhdGFbMF1bZmQuRmllbGROYW1lXS5sZW5ndGg9PTBcIiBjbGFzcz1cImJvcmRlciBwLTEgcm91bmRlZC0wXCI+MCB7e2ZkLkxhYmVsfX0gc2VsZWN0ZWQ8L2Rpdj48ZGl2IG5nLWlmPVwiKGZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV09PXVuZGVmaW5lZCB8fCBmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdPT1udWxsKSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZT09MVwiIGNsYXNzPVwiYm9yZGVyIHAtMSByb3VuZGVkIGJnLXdoaXRlXCI+RGF0YXNldCByZWNvcmRzIHBsYWNlaG9sZGVyPC9kaXY+PGRpdiBuZy1pZj1cIihmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdPT11bmRlZmluZWQgfHwgZm9ybURhdGFbMF1bZmQuRmllbGROYW1lXT09bnVsbCkgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGU9PTJcIiBjbGFzcz1cImJvcmRlciBwLTEgcm91bmRlZCBiZy13aGl0ZVwiPk5vIGRhdGE8L2Rpdj48ZGl2IG5nLWlmPVwiZm9ybURhdGFbMF1bZmQuRmllbGROYW1lXS5sZW5ndGg+MCAmJiBmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdWzBdLmlkIT11bmRlZmluZWRcIiBjbGFzcz1cInB0LTIgbXQtbjJcIj48ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc2Vjb25kYXJ5IG0tMVwiIG5nLXJlcGVhdD1cIml0ZW0gaW4gZm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSB0cmFjayBieSBpdGVtLmlkXCI+PHNwYW4gY2xhc3M+e3tpdGVtLm5hbWV9fTwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IHN0eWxlPVwibWluLWhlaWdodDogMzVweDtcIiBjbGFzcz1cImJvcmRlciBwLTEgbWItMCByb3VuZGVkIGJnLXdoaXRlXCI+e3tmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdLm5hbWV9fXt7Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXVswXS5uYW1lfX08L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0yNCBuZy1zaG93PVwiKGZkLlBhcmFtZXRlcnMuRGVmaW5lVGFza3MgJiYgcmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fZGVmaW5pdGlvbikgfHwgKGZkLnNlbGVjdGVkVGFza3MubGVuZ3RoPjAgJiYgIWZvcm1EZWZpbml0aW9uICYmIGZkLnJlc291cmNlRGF0YVJlY29yZFNlbGVjdGVkKVwiPjxkaXYga3QtaW5pdGlhdGUtdGFzay13aWRnZXQgZmQ9ZmQgbG9jYWwtdmFycz1sb2NhbFZhcnM+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jYXJkIG5nLWlmPVwiZmQuU2VhcmNoLnRhc2tJZC5pZD4wICYmICFmb3JtRGVmaW5pdGlvblwiIG5nLXNob3c9ZmQuU2hvd0ZpZWxkPjxkaXYgY2xhc3M9Y2FyZC1oZWFkZXI+PGRpdiBrdC10YXNrLXByb2MtZGlyZWN0aXZlIGZkPWZkIHRhc2tkZWZpbml0aW9uPXRhc2tEZWZpbml0aW9uIGxvY2FsLXZhcnM9bG9jYWxWYXJzU2VhcmNoPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmZC5QcmVzZW50YXRpb25UeXBlPT0wXCIgY2xhc3M9e3tmZC5ncmlkQ2xhc3NFbGVtZW50fX0+PGRpdiBjbGFzcyBuZy1pZj1mZC5maWxlU2VsZWN0ZWQ+PGJ1dHRvbiBuZy1pZj1mZC5QYXJhbWV0ZXJzLkRlbGV0ZUNoaWxkcmVuIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5kZWxldGVDaGlsZFJlY29yZCgpIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgYnRuLXhzXCIgc3R5bGU9bWFyZ2luOjEycHg+PGkgY2xhc3M9XCJmYSBmYS10aW1lcy1jaXJjbGUgbXgtMVwiPjwvaT48c3BhbiBuZy1iaW5kPVwiZmQuUGFyYW1ldGVyc0xhbmcuRGVsZXRlTGFiZWxCdG4gfHwgXFwnRGVsZXRlIHJlY29yZFxcJ1wiPjwvc3Bhbj48L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIGJ0bi14c1wiIG5nLWNsaWNrPVwiZmQucHJldmlld0ZpbGUoZmQubG9jYWxWYXJzLlNlbGVjdGVkRmlsZS5pZCxmZC5TZWxlY3RlZEZpbGVbXFwncmVzb3VyY2VcXCcrZmQuUmVsYXRlZCtcXCdfXFwnK29yZ19pZCtcXCdfRmlsZVR5cGVcXCddKVwiPjxpIGNsYXNzPVwiZmEgZmEtc2VhcmNoXCI+PC9pPiBQcmV2aWV3IGZpbGU8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIGJ0bi14c1wiIG5nLWNsaWNrPVwiZmQuZG93bmxvYWRGaWxlKGZkLmxvY2FsVmFycy5TZWxlY3RlZEZpbGUuaWQsZmQuU2VsZWN0ZWRGaWxlW1xcJ3Jlc291cmNlXFwnK2ZkLlJlbGF0ZWQrXFwnX1xcJytvcmdfaWQrXFwnX05hbWVcXCddKVwiPjxpIGNsYXNzPVwiZmEgZmEtZG93bmxvYWRcIj48L2k+IERvd25sb2FkIGZpbGU8L2J1dHRvbj48L2Rpdj48ZGl2IGlkPXNtYXJ0VGFibGV7e2ZkLlByZXNlbnRhdGlvbklkfX0ga3Qtc21hcnQtdGFibGUgbmctaWY9XCJmZC5sb2NhbFZhcnMuc21hcnRUYWJsZUxpbmtlZCAmJiBmZC5sb2NhbFZhcnMuZmlsZUxpc3REb3dubG9hZGVkICYmIChmZC5sb2NhbFZhcnMuZmlsZXNEYXRhLmxlbmd0aD4wIHx8IChmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MikpXCIgY2xhc3MgdXNlLXBhZ2luYXRpb249dHJ1ZSBwYXJhbWV0ZXJzPWZkLlBhcmFtZXRlcnMgZm9udC1zaXplPWZkLlBhcmFtZXRlcnMudGFibGUuZm9udFNpemUgY2VsbC1wYWRkaW5nPWZkLlBhcmFtZXRlcnMudGFibGUuY2VsbFBhZGRpbmcgY29sdW1uLWRlZnM9ZmQubG9jYWxWYXJzLmZpbGVzQ29sdW1ucyBpdGVtcy1vbi1wYWdlPWZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5wYWdlU2l6ZSByb3ctc2VsZWN0ZWQtY2hhbmdlPWZkLmxvY2FsVmFycy5maWxlU2VsZWN0aW9uQ2hhbmdlZChpdGVtKSBrdC1yZWZyZXNoLWRhdGE9XCJmZC5sb2NhbFZhcnMuZ2V0RmlsZXModGFibGVTdGF0ZSwgcGFnZU51bWJlcixwYWdlU2l6ZSlcIiBpbml0aWFsLXBhZ2U9ZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLmN1cnJlbnRQYWdlIGdyaWQtZGF0YT1ncmlkRGF0YSgpIGt0LXByb2Nlc3MtYWN0aW9uPXByb2Nlc3NUYWJsZUFjdGlvbihpdGVtLGFjdGlvbklkKT48L2Rpdj48ZGl2IG5nLWlmPVwiZmQubG9jYWxWYXJzLmZpbGVMaXN0RG93bmxvYWRlZCAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MlwiIGNsYXNzPW10LTM+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi14c1wiIG5nLWNsaWNrPWZkLnNhdmVHcmlkU3RhdGUoKT48aSBjbGFzcz1cImZhIGZhLXNhdmVcIj48L2k+IFNhdmUgZ3JpZCBsYXlvdXQ8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RGaWxlRXhlLmh0bWwnLCc8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBwYi0xIHJvdyBtLTAgZGF0YXNldC1pdGVtXCIgbmctaWY9ZmQuU2hvd0ZpZWxkIG5nLWZvcm09aW5uZXJGb3Jte3s6OmZkLkl0ZW1JZH19IG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlclxcJyA6IChpbm5lckZvcm17e2ZkLkl0ZW1JZH19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS5EYXRhc2V0e3tmZC5JdGVtSWR9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS5EYXRhc2V0e3tmZC5JdGVtSWR9fS4kaW52YWxpZCxcXCdiZy1ncmF5LTIwIG1yLTAgYm9yZGVyXFwnOmZkLkl0ZW1JZD09Z3NydmMuZ2V0U2VsZWN0ZWRJdGVtSWQoKSAmJiBnc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKSB9XCI+PGRpdiBuZy1oaWRlPTo6ZmQuUGFyYW1ldGVycy5IaWRlTGFiZWwgc3R5bGU9e3s6OmZkLmxhYmVsQWxpZ259fSBjbGFzcz17e2ZkLmdyaWRDbGFzc0xhYmVsfX0gbmctY2xhc3M9XCJ7XFwnY29sLWF1dG9cXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplfVwiPjxsYWJlbCBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2xhYmVsXFwnXCIgc3R5bGU9e3s6OmZkLmN1c3RvbVN0eWxlTGFiZWx9fSBmb3I9e3s6OmZkLk5hbWV9fXt7OjpmZC5JdGVtSWR9fSBjbGFzcz1cInAtMCBtYXJnaW5MNSBmb3JtLWNvbnRyb2wtbGFiZWwgbm8tYm9yZGVyIGFsaWduLW1pZGRsZVwiIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlclxcJyA6IChpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0ue3s6OmZkLk5hbWV9fXt7OjpmZC5JdGVtSWR9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3s6OmZkLkl0ZW1JZH19LiRpbnZhbGlkLFxcJ2N1c3RvbS1lbC1sYXlvdXQtc3R5bGVcXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplfVwiPnt7OjpmZC5MYWJlbH19IDxzcGFuIHN0eWxlPXt7OjpmZC5jdXN0b21TdHlsZUxhYmVsfX0gbmctaWY9XCI6OmZkLlByZXNlbnRhdGlvblR5cGU9PTBcIj4oe3tmZC5sVmFycy5ncmlkRGF0YS5sZW5ndGh9fSB7e2ZkLlNlYXJjaFRleHR9fSk8L3NwYW4+PC9sYWJlbD48L2Rpdj48ZGl2IG5nLWlmPWZkLlNob3dTZWFyY2hGb3JtIGNsYXNzPVwie3tmZC5ncmlkQ2xhc3NFbGVtZW50fX0gcC0wIG15LWF1dG9cIj48ZGl2IGt0LWdyaWQgZ3JpZC10eXBlPWZkLmxWYXJzLmdyaWRzdGVyVHlwZSBzaG93LXNlYXJjaC1maWx0ZXJzPXNob3dTZWFyY2hGaWx0ZXJzIHJlc291cmNlLWZvcm0tbG9hZGVkPWZkLmxWYXJzLmZvcm1Mb2FkZWQgcGFyZW50LXJlc291cmNlLWRlZi1pZD1mZC5QYXJlbnREYXRhc2V0RGVmSWQgcmVzb3VyY2UtcmVjb3JkLWlkPWZkLmxWYXJzLmRhdGFzZXRSZWNvcmRJZCByZXNvdXJjZS1kZWZpbml0aW9uPXJlc291cmNlRGVmaW5pdGlvbiBmb3JtLXBhcmFtcz1mZC5sVmFycy5mb3JtUGFyYW1zIGZvcm0tcGFyYW1zLXBhcmVudD1mb3JtUGFyYW1zIGZvcm0tZGF0YT1mb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdIHBhcmVudD1mZC5sVmFycy5kYXNoYm9hcmQud2lkZ2V0cyBhbGwtY29sdW1ucz1mZC5sVmFycy5kYXNoYm9hcmQud2lkZ2V0cz48L2Rpdj48YnV0dG9uIG5nLWlmPWZhbHNlIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYnRuLXhzXCIgbmctY2xpY2s9ZmQubFZhcnMuU2VsZWN0UmVjb3JkcygpPjxpIGNsYXNzPVwiZmEgZmEtc2F2ZVwiPjwvaT5BcHBseSBzZWFyY2g8L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwie3tmZC5ncmlkQ2xhc3NFbGVtZW50fX0gbXktYXV0b1wiPjxkaXYgbmctaWY9XCI6OmZkLlByZXNlbnRhdGlvblR5cGU9PTEgJiYgIWZkLlJlYWRPbmx5XCI+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLWlmPVwiIWZkLk11bHRpbGluZSAmJiBmZC5kYXRhc2V0SXRlbXMubGVuZ3RoPjBcIiBuZy1tb2RlbD1pdGVtVmFsdWUudmFsIHNlbGVjdGVkLWl0ZW1zPWl0ZW1WYWx1ZS52YWwgcmVxdWlyZWQtZmllbGQ9OjpmZC5SZXF1aXJlZCBkcm9wZG93bi1pdGVtcz1mZC5kYXRhc2V0SXRlbXMgZHJvcGRvd24taWQ9XCJcXCdEYXRhc2V0XFwnK2ZkLkl0ZW1JZFwiIHBhcmVudC1mb3JtLWlkPVwiXFwnaW5uZXJGb3JtXFwnK2ZkLkl0ZW1JZFwiIHNlYXJjaC10ZXh0PTo6ZmQuU2VhcmNoVGV4dD48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjxkaXYgbmctaWY9XCJmZC5kYXRhc2V0SXRlbXMubGVuZ3RoPT0wXCIgY2xhc3M9Zm9ybS1jb250cm9sPk5vIGRhdGEgaW4gZGF0YXNldDwvZGl2PjxrdC1kcm9wZG93bi1tdWx0aXBsZSBuZy1pZj1cImZkLk11bHRpbGluZSAmJiBmZC5kYXRhc2V0SXRlbXMubGVuZ3RoPjBcIiBuZy1tb2RlbD1mb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdIHNlbGVjdGVkLWl0ZW1zPWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0gbmFtZT1EYXRhc2V0e3s6OmZkLkl0ZW1JZH19IHJlcXVpcmVkPTo6ZmQuUmVxdWlyZWQgZHJvcGRvd24taXRlbXM9ZmQuZGF0YXNldEl0ZW1zIGRyb3Bkb3duLWlkPVwiXFwnRGF0YXNldHt7OjpmZC5JdGVtSWR9fVxcJ1wiIHBhcmVudC1mb3JtLWlkPVwiXFwnaW5uZXJGb3Jte3s6OmZkLkl0ZW1JZH19XFwnXCIgc2VhcmNoLXRleHQ9ZmQuU2VhcmNoVGV4dD48L2t0LWRyb3Bkb3duLW11bHRpcGxlPjxwIG5nLWNsYXNzPVwie1xcJ2ludmFsaWQtdG9vbHRpcCByaWdodC0wIG1yLTNcXCc6ZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PVxcJ3Rvb2x0aXBcXCcgfHwgZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PXVuZGVmaW5lZCxcXCdpbnZhbGlkLWZlZWRiYWNrXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCdmZWVkYmFja1xcJyxcXCdkLWJsb2NrXFwnOihpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0ue3s6OmZkLk5hbWV9fXt7OjpmZC5JdGVtSWR9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3s6OmZkLkl0ZW1JZH19Lnt7OjpmZC5OYW1lfX17ezo6ZmQuSXRlbUlkfX0uJGludmFsaWR9XCI+e3s6OmZkLkVycm9yTXNnfX08L3A+PC9kaXY+PGRpdiBuZy1pZj1cIjo6ZmQuUHJlc2VudGF0aW9uVHlwZT09MSAmJiBmZC5SZWFkT25seVwiPjxkaXYgbmctaWY9XCJmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdLmxlbmd0aD09MFwiIGNsYXNzPVwiYm9yZGVyIHAtMSByb3VuZGVkLTBcIj4wIHt7OjpmZC5MYWJlbH19IHNlbGVjdGVkPC9kaXY+PGRpdiBuZy1pZj1cIihmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdPT11bmRlZmluZWQgfHwgZm9ybURhdGFbMF1bZmQuRmllbGROYW1lXT09bnVsbClcIiBjbGFzcz1cImJvcmRlciBwLTEgcm91bmRlZCBiZy13aGl0ZVwiPk5vIGRhdGE8L2Rpdj48ZGl2IG5nLWlmPVwiZm9ybURhdGFbMF1bZmQuRmllbGROYW1lXS5sZW5ndGg+MCAmJiBmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdWzBdLmlkIT11bmRlZmluZWRcIiBjbGFzcz1cInB0LTIgbXQtbjJcIj48ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc2Vjb25kYXJ5IG0tMVwiIG5nLXJlcGVhdD1cIml0ZW0gaW4gZm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSB0cmFjayBieSBpdGVtLmlkXCI+PHNwYW4gY2xhc3M+e3tpdGVtLm5hbWV9fTwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IHN0eWxlPVwibWluLWhlaWdodDogMzVweDtcIiBjbGFzcz1cImJvcmRlciBwLTEgbWItMCByb3VuZGVkIGJnLXdoaXRlXCI+e3tmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdLm5hbWV9fXt7Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXVswXS5uYW1lfX08L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0yNCBuZy1zaG93PVwiZmQuc2VsZWN0ZWRUYXNrcy5sZW5ndGg+MCAmJiBmZC5yZXNvdXJjZURhdGFSZWNvcmRTZWxlY3RlZFwiPjxkaXYga3QtaW5pdGlhdGUtdGFzay13aWRnZXQgZmQ9ZmQgbG9jYWwtdmFycz1mZC5sVmFycz48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNhcmQgbmctaWY9XCJmZC5TZWFyY2gudGFza0lkLmlkPjBcIiBuZy1zaG93PTo6ZmQuU2hvd0ZpZWxkPjxkaXYgY2xhc3M9Y2FyZC1oZWFkZXI+PGRpdiBrdC10YXNrLXByb2MtZGlyZWN0aXZlIGZkPWZkIHRhc2tkZWZpbml0aW9uPXRhc2tEZWZpbml0aW9uIGxvY2FsLXZhcnM9bG9jYWxWYXJzU2VhcmNoPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3MgbmctaWY9ZmQubFZhcnMuaXNSZWNvcmRTZWxlY3RlZD48YnV0dG9uIG5nLWlmPWZkLlBhcmFtZXRlcnMuRGVsZXRlQ2hpbGRyZW4gdHlwZT1idXR0b24gbmctY2xpY2s9ZmQubFZhcnMuZGVsZXRlQ2hpbGRSZWNvcmQoKSBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIGJ0bi14c1wiIHN0eWxlPW1hcmdpbjoxMnB4PjxpIGNsYXNzPVwiZmEgZmEtdGltZXMtY2lyY2xlIG14LTFcIj48L2k+PHNwYW4gbmctYmluZD1cImZkLlBhcmFtZXRlcnNMYW5nLkRlbGV0ZUxhYmVsQnRuIHx8IFxcJ0RlbGV0ZSByZWNvcmRcXCdcIj48L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiBuZy1pZj1cIjo6ZmQuUHJlc2VudGF0aW9uVHlwZT09MFwiIGNsYXNzPXt7ZmQuZ3JpZENsYXNzRWxlbWVudH19PjxkaXYgbmctaWY9XCJmZC5sVmFycy5kYXRhc2V0bGlzdGxpbmtlZCAmJiBmZC5sVmFycy5ncmlkRGF0YVJldHJpZXZlZCAmJiBmZC5sVmFycy5ncmlkRGF0YS5sZW5ndGg+MFwiPjxkaXYga3Qtc21hcnQtdGFibGUgc2hvdy1hY3Rpb25zPWZhbHNlIHVzZS1wYWdpbmF0aW9uPWZkLlBhcmFtZXRlcnMuVXNlUGFnaW5hdGlvbiBhbGxvdy1zb3J0PXRydWUgaW5pdGlhbC1wYWdlPTEgaXRlbXMtb24tcGFnZT0xMCByb3ctc2VsZWN0ZWQtY2hhbmdlPWZkLnJvd1NlbGVjdGlvbkNoYW5nZWQoaXRlbSkgcGFyYW1ldGVycz1mZC5QYXJhbWV0ZXJzIGZvbnQtc2l6ZT1mZC5QYXJhbWV0ZXJzLnRhYmxlLmZvbnRTaXplIGNlbGwtcGFkZGluZz1mZC5QYXJhbWV0ZXJzLnRhYmxlLmNlbGxQYWRkaW5nIGNvbHVtbi1kZWZzPWZkLmxWYXJzLmNvbHVtbkRlZnMga3QtcmVmcmVzaC1kYXRhPVwiZmQuZ2V0RGF0YXNldERhdGFGb3JTbWFydFRhYmxlKHRhYmxlU3RhdGUsIHBhZ2VOdW1iZXIscGFnZVNpemUpXCIgc2hvdy1hY3Rpb24tYnV0dG9ucz10cnVlIGFjdGlvbi1kZWZpbml0aW9uPWZkLmxWYXJzLmFjdGlvbkRlZiBrdC1wcm9jZXNzLWFjdGlvbj1mZC5sVmFycy5wcm9jZXNzVGFibGVBY3Rpb24oaXRlbSxhY3Rpb25JZCk+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImRyb3BsZWZ0IGVsZW1lbnQtcHJvcGVydGllcy1idG5zIGJnLXByaW1hcnkgcm91bmRlZCBzaGFkb3cgbm9wcmludFwiIG5nLWlmPTo6c2hvd1NlYXJjaEZpbHRlcnM+PGEgaWQ9c2VhcmNoLWZpbHRlci17ezo6ZmQuSXRlbUlkfX0gZGF0YS10b2dnbGU9ZHJvcGRvd24gYXJpYS1oYXNwb3B1cD10cnVlIGFyaWEtZXhwYW5kZWQ9ZmFsc2UgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIHByb3AtYnRuXCIgaHJlZj48aSBjbGFzcz1cImZhIGZhLWZpbHRlciB7e2ZkLlNlYXJjaC5pY29ufX0gbXItMVwiIHRpdGxlPVwiRmlsdGVyIDoge3tmZC5TZWFyY2gubmFtZX19XCI+PC9pPnt7ZmQuU2VhcmNoLm5hbWV9fTwvYT48ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBzaGFkb3cgcC0wIGRyb3Bkb3duLW1heC1jb250ZW50LXdpZHRoXCIgc3R5bGU9XCJtaW4td2lkdGg6MHB4ICFpbXBvcnRhbnRcIiBhcmlhLWxhYmVsbGVkYnk9c2VhcmNoLWZpbHRlci17ezo6ZmQuSXRlbUlkfX0+PGRpdiBjbGFzcz1idG4tZ3JvdXAtdmVydGljYWwgcm9sZT1ncm91cCBhcmlhLWxhYmVsPVwiU2VhcmNoIGZpbHRlclwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5VGV4dEZpbHRlcnMoMCkgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ29ubGlzdFxcJ31cIj48c3BhbiBjbGFzcz1cImZhIGZhLWNoZXZyb24tcmlnaHRcIj48L3NwYW4+IHt7OjpzZWFyY2hbMF0ubmFtZX19PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5VGV4dEZpbHRlcnMoMSkgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ25vdG9ubGlzdFxcJ31cIj48c3BhbiBjbGFzcz1cImZhIGZhLWV4cGFuZFwiPjwvc3Bhbj4ge3s6OnNlYXJjaFsxXS5uYW1lfX08L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RGaWxlUHJvcGVydGllcy5odG1sJywnPGRpdiBjbGFzcz1wLTEgbmctZm9ybT1pbm5lckZvcm1Qcm9wZXJ0aWVze3tmZC5QcmVzZW50YXRpb25JZH19PjxkaXYga3QtcHJvcGVydHktaGVhZGVyPjwvZGl2PjxkaXYgbmctY2xpY2s9XCJmZC5sb2NhbFZhcnMuc2hvd0Jhc2ljID0gIWZkLmxvY2FsVmFycy5zaG93QmFzaWNcIiBjbGFzcz1cImV4cGFuZC1wcm9wZXJ0eS1wYW5lbCB0YWcgYm9yZGVyLWJvdHRvbSBib3JkZXItc3VjY2VzcyBteS0xIHB5LTFcIiBkYXRhLXRvZ2dsZT1jb2xsYXBzZSBocmVmPSNtYWluUHJvcGVydHlQYW5lbCByb2xlPWJ1dHRvbiBhcmlhLWV4cGFuZGVkPXRydWUgYXJpYS1jb250cm9scz1tYWluUHJvcGVydHlQYW5lbD48c3BhbiBjbGFzcz1cImNvbCBwLTBcIj5NQUlOPC9zcGFuPiA8aSBzdHlsZT1cImZvbnQtc2l6ZTogbGFyZ2U7XCIgbmctc2hvdz1mZC5sb2NhbFZhcnMuc2hvd0Jhc2ljIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLWRvd25cIj48L2k+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PSFmZC5sb2NhbFZhcnMuc2hvd0Jhc2ljIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLXVwXCI+PC9pPjwvZGl2PjxkaXYgY2xhc3M9XCJtYi00IGNvbGxhcHNlIHNob3dcIiBpZD1tYWluUHJvcGVydHlQYW5lbD48bGFiZWwgY2xhc3M9XCJwbC0wIGxhYmVsIGJvcmRlci1ib3R0b21cIj5OZXcgb3IgZXhpc3RpbmcgcmVsYXRpb25zaGlwPC9sYWJlbD48ZGl2IGNsYXNzPW15LTE+PGxhYmVsIGNsYXNzPWZvcm0tY2hlY2stbGFiZWw+PGlucHV0IHR5cGU9cmFkaW8gbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5SZXNvdXJjZVJlbGF0aW9uc2hpcFR5cGUgdmFsdWU9bmV3IG5nLWNsaWNrPWZkLmxvY2FsVmFycy5nZXRSZXNvdXJjZXMoKT4gQ3JlYXRlIG5ldyByZWxhdGlvbnNoaXA8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9bXktMj48bGFiZWwgY2xhc3M9Zm9ybS1jaGVjay1sYWJlbD48aW5wdXQgdHlwZT1yYWRpbyBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlJlc291cmNlUmVsYXRpb25zaGlwVHlwZSB2YWx1ZT1leGlzdGluZyBuZy1jbGljaz1mZC5sb2NhbFZhcnMuZ2V0RXhpc3RpbmdSZXNvdXJjZXMoKT4gU2VsZWN0IGV4aXN0aW5nIHJlbGF0aW9uc2hpcDwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1tYi0yPjxsYWJlbCBjbGFzcz1mb3JtLWNoZWNrLWxhYmVsPjxpbnB1dCB0eXBlPXJhZGlvIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuUmVzb3VyY2VSZWxhdGlvbnNoaXBUeXBlIHZhbHVlPXZpZXcgbmctY2xpY2s9ZmQubG9jYWxWYXJzLmdldFJlc291cmNlcygpPiBMaW5rIHRvIGV4aXN0aW5nIGZpbGUgKGZvciByZXNvdXJjZSB2aWV3KTwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1teS0yIG5nLWlmPVwiZmQuUGFyYW1ldGVycy5SZXNvdXJjZVJlbGF0aW9uc2hpcFR5cGU9PVxcJ25ld1xcJyB8fCBmZC5QYXJhbWV0ZXJzLlJlc291cmNlUmVsYXRpb25zaGlwVHlwZT09XFwndmlld1xcJ1wiPjxsYWJlbCBjbGFzcz1cInBsLTAgbGFiZWwgYm9yZGVyLWJvdHRvbVwiPlJlbGF0aW9uc2hpcCB0eXBlPC9sYWJlbD48ZGl2IGNsYXNzPW15LTI+PGxhYmVsIGNsYXNzPWZvcm0tY2hlY2stbGFiZWw+PGlucHV0IHR5cGU9cmFkaW8gbmctbW9kZWw9ZmQuTWF4TGVuZ3RoIG5nLXZhbHVlPTEgbmctY2xpY2s9XCJmZC5NdWx0aWxpbmU9ZmFsc2U7ZmQuRGJ0eXBlPVxcJ2ZvcmVpZ25rZXlkZWZpbml0aW9uXFwnXCI+IExpbmsgb25seSBvbmUgcmVjb3JkICgxOjEpPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPW1iLTI+PGxhYmVsIGNsYXNzPWZvcm0tY2hlY2stbGFiZWw+PGlucHV0IHR5cGU9cmFkaW8gbmctbW9kZWw9ZmQuTWF4TGVuZ3RoIG5nLXZhbHVlPTAgbmctY2xpY2s9XCJmZC5NdWx0aWxpbmU9dHJ1ZTtmZC5EYnR5cGU9XFwnbWFueXRvbWFueWZpZWxkZGVmaW5pdGlvblxcJ1wiPiBMaW5rIHVubGltaXRlZCBudW1iZXIgb2YgcmVjb3JkcyAoMTpuKTwvbGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1tYi0xIG5nLWlmPVwiZmQuUGFyYW1ldGVycy5SZXNvdXJjZVJlbGF0aW9uc2hpcFR5cGU9PT1cXCdleGlzdGluZ1xcJ1wiPjxzcGFuIGNsYXNzPW1yLTI+UGFyZW50IGZpZWxkbmFtZTo8L3NwYW4+PHNwYW4gbmctYmluZD1cImZkLlBhcmFtZXRlcnMuRmllbGROYW1lUmVsYXRlZFBhcmVudCB8fCBcXCdub25lXFwnXCI+PC9zcGFuPjwvZGl2PjxsYWJlbCBjbGFzcz1cInBsLTAgbGFiZWwteHMgdGV4dC1tdXRlZFwiIGZvcj1uYW1lRmllbGQ+U2VsZWN0IGZpbGU8L2xhYmVsPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1tb2RlbD1mZC5zZWxlY3RlZFJlc291cmNlIHNpemU9XCJcXCdzbWFsbFxcJ1wiIHNlbGVjdGVkLWl0ZW1zPWZkLnNlbGVjdGVkUmVzb3VyY2UgbmctaWY9ZmQuUmVsYXRlZExvYWRlZCBvbi1zZWxlY3QtZm49ZmQub25TZWxlY3RDYWxsYmFjayhpdGVtLG1vZGVsKSBpcy1tdWx0aXBsZT1mYWxzZSBuYW1lPXNlbGVjdGVkRGF0YXNldHt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1yZXF1aXJlZD10cnVlIGRyb3Bkb3duLWl0ZW1zPWZkLnJlc291cmNlc0xpc3QgZHJvcGRvd24taWQ9XCJcXCdzZWxlY3RlZERhdGFzZXRcXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ3NlbGVjdGVkRGF0YXNldFxcJytmZC5QcmVzZW50YXRpb25JZFwiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IGZpbGVcXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjxkaXYgbmctaWY9ZmQubG9jYWxWYXJzLnB1Ymxpc2hlZExvYWRlZD48bGFiZWwgY2xhc3M9XCJwbC0wIGxhYmVsLXhzIHRleHQtbXV0ZWRcIiBmb3I9c2VsZWN0ZWRQdWJsaXNoZWR7e2ZkLlByZXNlbnRhdGlvbklkfX0+U2VsZWN0IHB1Ymxpc2hlZCB2ZXJzaW9uPC9sYWJlbD48a3QtZHJvcGRvd24tc3RhbmRhcmQgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5wdWJsaXNoZWREYXRhc2V0IHNpemU9XCJcXCdzbWFsbFxcJ1wiIHNlbGVjdGVkLWl0ZW1zPWZkLlBhcmFtZXRlcnMucHVibGlzaGVkRGF0YXNldCBvbi1zZWxlY3QtZm49ZmQub25TZWxlY3RQdWJsaXNoZWQoaXRlbSxtb2RlbCkgaXMtbXVsdGlwbGU9ZmFsc2UgbmFtZT1zZWxlY3RlZFB1Ymxpc2hlZHt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1yZXF1aXJlZD10cnVlIGRyb3Bkb3duLWl0ZW1zPWZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3QgZHJvcGRvd24taWQ9XCJcXCdzZWxlY3RlZFB1YmxpaGVkXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgcGFyZW50LWZvcm0taWQ9XCJcXCdzZWxlY3RlZFB1Ymxpc2hlZFxcJytmZC5QcmVzZW50YXRpb25JZFwiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IHB1Ymxpc2hlZCBmaWxlIGZvcm1cXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjwvZGl2PjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5MYWJlbDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuTGFiZWw+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5FcnJvciBtc2c8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLkVycm9yTXNnPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+U2VhcmNoVGV4dDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuU2VhcmNoVGV4dD48ZGl2IGNsYXNzPW15LTI+PGxhYmVsIGNsYXNzPVwicGwtMCBsYWJlbCBib3JkZXItYm90dG9tXCI+U2VsZWN0IHByZXNlbnRhdGlvbiBjb21wb25lbnQ8L2xhYmVsPjxkaXYgY2xhc3M9bXktMT48bGFiZWwgY2xhc3M9Zm9ybS1jaGVjay1sYWJlbD48aW5wdXQgdHlwZT1yYWRpbyBuZy1tb2RlbD1mZC5QcmVzZW50YXRpb25UeXBlIHZhbHVlPTA+IFRhYmxlPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPW15LTE+PGxhYmVsIGNsYXNzPWZvcm0tY2hlY2stbGFiZWw+PGlucHV0IHR5cGU9cmFkaW8gbmctbW9kZWw9ZmQuUHJlc2VudGF0aW9uVHlwZSB2YWx1ZT0xPiBEcm9wZG93bjwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1tYi0yPjxsYWJlbCBjbGFzcz1mb3JtLWNoZWNrLWxhYmVsPjxpbnB1dCB0eXBlPXJhZGlvIG5nLW1vZGVsPWZkLlByZXNlbnRhdGlvblR5cGUgdmFsdWU9Mj4gVXNlIG9ubHkgc2VhcmNoIGZvcm08L2xhYmVsPjwvZGl2PjwvZGl2PjxkaXY+PGxhYmVsIGNsYXNzPVwicGwtMCBsYWJlbC14cyB0ZXh0LW11dGVkXCIgZm9yPW5hbWVGaWVsZD5TZWxlY3QgZmlsZSBmaWVsZHM8L2xhYmVsPjxrdC1kcm9wZG93bi1tdWx0aXBsZSBuZy1tb2RlbD1mZC5OYW1lRmllbGQgc2l6ZT1cIlxcJ3NtYWxsXFwnXCIgc2VsZWN0ZWQtaXRlbXM9ZmQuTmFtZUZpZWxkIG5hbWU9bmFtZUZpZWxke3tmZC5QcmVzZW50YXRpb25JZH19IHJlcXVpcmVkPWZhbHNlIGRyb3Bkb3duLWl0ZW1zPWZkLnByZXNlbnRhdGlvbkVsZW1lbnRzIGRyb3Bkb3duLWlkPVwiXFwnbmFtZUZpZWxkXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgcGFyZW50LWZvcm0taWQ9XCJcXCduYW1lRmllbGRcXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCBmaWVsZHMgZm9yIGRyb3Bkb3duXFwnXCI+PC9rdC1kcm9wZG93bi1tdWx0aXBsZT48L2Rpdj48ZGl2IG5nLWlmPWZhbHNlPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5NYXggbnVtYmVyIG9mIHJlY29yZHM8L2xhYmVsPiA8aW5wdXQgdHlwZT1udW1iZXIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbWluPTIgbmctbW9kZWw9ZmQuTWF4TGVuZ3RoPjwvZGl2PjxkaXY+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYkhhc1BhcmVudERhdGFzZXR7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JIYXNQYXJlbnREYXRhc2V0e3tmZC5QcmVzZW50YXRpb25JZH19IG5nLW1vZGVsPWZkLkhhc1BhcmVudERhdGFzZXQgbmctY2hlY2tlZD1mZC5IYXNQYXJlbnREYXRhc2V0PiBBZGQgZXhpc3RpbmcgZmlsZXM8L2xhYmVsPjwvZGl2PjxkaXY+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuZy1tb2RlbD1mZC5TaG93U2VhcmNoRm9ybSBuZy1jbGljaz1mZC5sb2NhbFZhcnMuU2hvd1NlYXJjaEZvcm0oZmQuUGFyYW1ldGVycy5QdWJsaXNoZWRSZXNvdXJjZUlkKT4gU2hvdyBzZWFyY2ggZm9ybTwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWw+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5nLW1vZGVsPWZkLkF1dG9TZWFyY2g+IEF1dG8gc2VhcmNoPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbD48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5Ob0dldERhdGE+IERvIG5vdCBnZXQgZmlsZXM8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkxpbmtDaGlsZHJlbj4gTGluayBjaGlsZCByZWNvcmRzPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbD48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5EZWxldGVDaGlsZHJlbj4gRW5hYmxlIHJlbGF0aW9uc2hpcCBkZWxldGlvbjwvbGFiZWw+PC9kaXY+PGRpdiBuZy1pZj1mZC5QYXJhbWV0ZXJzLkRlbGV0ZUNoaWxkcmVuPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5EZWxldGUgYnV0dG9uIGxhYmVsPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzTGFuZy5EZWxldGVMYWJlbEJ0bj48L2Rpdj48L2Rpdj48ZGl2IGt0LWZpZWxkLWV4dGVuZGVkLXByb3BlcnRpZXM+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0RmlsZVVwbG9hZC5odG1sJywnPGRpdiBjbGFzcz1cIndpZGdldC1oZWFkIHJvdW5kZWQtMFwiIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1hY3RpdmUgbS0yIHNoYWRvd1xcJzpsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU+MH1cIj48ZGl2IGNsYXNzPVwicm93IG0tMCBtYi0xIHAtMFwiIG5nLWlmPVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTFcIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtaGVhZC1hY3RpdmVcXCc6bG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPjAsXFwnYmctbGlnaHRcXCc6bG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wfVwiPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48aSBjbGFzcz1cImZhIGZhLXVwbG9hZCBteC0yXCI+PC9pPjxsYWJlbD5GaWxlIHVwbG9hZCAoe3s6OmZkLlByZXNlbnRhdGlvbklkfX0pPC9sYWJlbD4gPGEgaHJlZiB0aXRsZT1zb3J0IG5nLWNsYXNzPVwie1xcJ3dpZGdldC1wcm9wXFwnOmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCBsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZH1cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCB7e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZSB3aWRnZXQtcHJvcFwiPjxpIGNsYXNzPVwie3tncmlkVHlwZX19LWVsZW1lbnQtZHJhZy1oYW5kbGUgZmFzIGZhLWdyaXAtdmVydGljYWxcIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgdGV4dC1yaWdodCBteS1hdXRvXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1sb2NhbFZhcnMub3BlbkZpbGVDb25uZWN0b3IoKSBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi14c1wiPjxzcGFuPjxpIGNsYXNzPVwiZmEgZmEtcGx1Z1wiPjwvaT4gU2VsZWN0IGludGVyZmFjZTwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGEgaHJlZiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIGJ0bi1zbVwiIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1wcm9wXFwnOmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCBsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZH1cIiB0aXRsZT1cIlNob3cvaGlkZSBwcm9wZXJ0aWVzXCIgbmctY2xpY2s9bG9jYWxWYXJzLnNob3dQcm9wZXJ0aWVzKDIpPjxpIGNsYXNzPVwiZmFzIGZhLWNvZ1wiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxkaXYgY2xhc3M9XCJkcm9wZG93biBkLWlubGluZS1ibG9ja1wiIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1wcm9wXFwnOmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCBsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZH1cIj48YSBocmVmIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhbmdlciBib3JkZXItMCBidG4tc21cIiB0aXRsZT1cIlJlbW92ZSBmaWVsZFwiIGlkPWRyb3Bkb3duTWVudUJ1dHRvbiBkYXRhLXRvZ2dsZT1kcm9wZG93biBhcmlhLWhhc3BvcHVwPXRydWUgYXJpYS1leHBhbmRlZD1mYWxzZT48aSBjbGFzcz1cImZhIGZhLXRyYXNoXCI+PC9pPjwvYT48ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBzaGFkb3cgcC0wIGRyb3Bkb3duLW1heC1jb250ZW50LXdpZHRoXCIgYXJpYS1sYWJlbGxlZGJ5PWRyb3Bkb3duTWVudUJ1dHRvbj48ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgcC0wIHB4LTEgYmctbGlnaHRcIj48c3BhbiBjbGFzcz1cImZhIGZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlIHRleHQtZGFuZ2VyXCI+PHNwYW4gY2xhc3M9XCJtbC0yIHNtYWxsXCI+RGVsZXRlIHdpZGdldCBjb25maXJtYXRpb248L3NwYW4+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9bS0xPjxkaXYgY2xhc3M9XCJtLTEgc21hbGwgYm9sZCB0ZXh0LWRhcmtcIj5DbGljayBDb25maXJtIHRvIGRlbGV0ZSB3aWRnZXQhPC9kaXY+PGRpdiBuZy1pZj1mYWxzZSBjbGFzcz1cIm1sLTEgc21hbGwgdGV4dC1kYXJrXCI+VGhpcyBhY3Rpb24gbWF5IHJlc3VsdCBpbiBhIGxvc3Mgb2YgZGF0YSE8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXAtMT48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tZGFuZ2VyXCIgdGl0bGU9Q29uZmlybSBuZy1jbGljaz1yZW1vdmVGaWVsZCgkaW5kZXgpPkNvbmZpcm0gPGkgY2xhc3M9XCJtbC0yIGZhIGZhLWNoZWNrXCI+PC9pPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU+MCAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MVwiIGNsYXNzPXAtMj48ZGl2IGt0LWZvcm0tZWxlbWVudC1wcm9wZXJ0aWVzIGZkPWZkIGxvY2FsLXZhcnM9bG9jYWxWYXJzPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBiZy1saWdodCBwLTAgcHgtMSByYWRpb3VzLTBcIiBuZy1zaG93PVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPTFcIj57e2ZkLk5hbWV9fTwvZGl2PjxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHgtMSByYWRpb3VzLTBcIiBuZy1zaG93PVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPTFcIj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctZm9ybT11cGxvYWRlckZvcm0+PGRpdiBjbGFzcz1cImJ1dHRvbiBidG4gYnRuLXByaW1hcnlcIiBuZ2Ytc2VsZWN0IG5nZi1jaGFuZ2U9Y2hlY2tGb3JDaGFuZ2VzKCRmaWxlcykgbmdmLW11bHRpcGxlPXRydWU+U2VsZWN0IGZpbGVzPC9kaXY+PGRpdiBuZy1yZXBlYXQ9XCJmaWxlIGluIGZpbGVzXCIgaW5kZXg9JGluZGV4IGNsYXNzPW10LTE+PGhyPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1jb2w+PGRpdiBjbGFzcz1cImQtaW5saW5lLWJsb2NrIG15LWF1dG9cIj48c3BhbiBjbGFzcz1tci0yPnt7JGluZGV4KzF9fS4ge3tmaWxlLm5hbWV9fTwvc3Bhbj4gPHNwYW4gY2xhc3M9bXItMj4oe3sgKGZpbGUuc2l6ZS8xMDAwKS50b0ZpeGVkKDIpIH19IGtiKTwvc3Bhbj48L2Rpdj48cHJvZ3Jlc3MgY2xhc3M9bXQtMiB2YWx1ZT17e2ZpbGUubG9hZGVkfX0gbWF4PXt7ZmlsZS5zaXplfX0+PC9wcm9ncmVzcz48aSBuZy1zaG93PVwiZmlsZS51cGxvYWRTdWNjZXNzIHx8IGZpbGUudXBsb2FkRXJyb3JcIiB0aXRsZT1cIkZpbGUgdXBsb2FkIGNvbXBsZXRlZFwiIGNsYXNzPVwiZmEgZmEtdXBsb2FkIHRleHQtcHJpbWFyeSBmYS1sZyBtbC0zXCI+PC9pPiA8aSBuZy1zaG93PWZpbGUudXBsb2FkU3VjY2VzcyB0aXRsZT1TdWNjZXNzIGNsYXNzPVwiZmEgZmEtY2hlY2stY2lyY2xlIHRleHQtc3VjY2VzcyBmYS1sZyBtbC0zXCI+PC9pPiA8aSBuZy1zaG93PWZpbGUudXBsb2FkRXJyb3IgdGl0bGU9RXJyb3IgY2xhc3M9XCJmYSBmYS10aW1lcy1jaXJjbGUgdGV4dC1kYW5nZXIgZmEtbGcgbWwtM1wiPjwvaT4gPGEgbmctc2hvdz1maWxlLm1ldGFTdWNjZXNzIG5nLWNsaWNrPW9wZW5Nb2RhbEZpbGVNZXRhZGF0YSgkaW5kZXgpIGhyZWY+PGkgbmctc2hvdz1cIihmaWxlLm1ldGFTdWNjZXNzIHx8IGZpbGUubWV0YUVycm9yKSAmJiAhZmlsZS5ub01ldGFcIiB0aXRsZT1cIkZpbGUgbWV0YWRhdGEgdXBsb2FkXCIgY2xhc3M9XCJmYSBmYS1saXN0LWFsdCBmYS1sZyBtbC0zXCI+PC9pPjwvYT4gPGkgbmctc2hvdz1cImZpbGUubWV0YVN1Y2Nlc3MgJiYgIWZpbGUubm9NZXRhXCIgdGl0bGU9U3VjY2VzcyBjbGFzcz1cImZhIGZhLWNoZWNrLWNpcmNsZSB0ZXh0LXN1Y2Nlc3MgZmEtbGcgbWwtM1wiPjwvaT4gPGkgbmctc2hvdz1maWxlLm1ldGFFcnJvciB0aXRsZT1FcnJvciBjbGFzcz1cImZhIGZhLXRpbWVzLWNpcmNsZSB0ZXh0LWRhbmdlciBmYS1sZ1wiPjwvaT4gPHNwYW4gbmctaGlkZT1maWxlLnVwbG9hZFN1Y2Nlc3M+e3tmaWxlLnN0YXR1c319PC9zcGFuPiA8c3BhbiBuZy1oaWRlPWZpbGUubWV0YVN1Y2Nlc3M+e3tmaWxlLm1ldGFTdGF0dXN9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPWNvbC02IG5nLWlmPWZhbHNlIG5nLWhpZGU9ZmlsZS51cGxvYWRTdWNjZXNzPjx1aS1zZWxlY3QgbmctbW9kZWw9c2VsZWN0ZWRSZXNvdXJjZSBvbi1zZWxlY3Q9b25TZWxlY3RGaWxlVHlwZSgkaXRlbSwkaW5kZXgpIG5nLWRpc2FibGVkPWRpc2FibGVkIG5hbWU9RmlsZVR5cGV7eyRpbmRleH19IHJlc2V0LXNlYXJjaC1pbnB1dD1mYWxzZT48dWktc2VsZWN0LW1hdGNoIGNsYXNzPXVpLXNlbGVjdC1tYXRjaCBwbGFjZWhvbGRlcj17e2ZkLkxhYmVsfX0+PHNwYW4+e3skc2VsZWN0LnNlbGVjdGVkLnJlc291cmNlZGVmbGFuZ19zZXRbMF0uTmFtZX19PC9zcGFuPiA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmsgZmxvYXQtcmlnaHRcIiBuZy1jbGljaz1cImNsZWFyKCRldmVudCwgJHNlbGVjdClcIj48aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPjwvYT48L3VpLXNlbGVjdC1tYXRjaD48dWktc2VsZWN0LWNob2ljZXMgY2xhc3M9dWktc2VsZWN0LWNob2ljZXMgcmVwZWF0PVwiZmYgaW4gKGxpc3RPZkZpbGVUeXBlc3wgZmlsdGVyOiB7IGlkOiAkc2VsZWN0LnNlYXJjaCB9KSB0cmFjayBieSBmZi5pZFwiIHJlZnJlc2g9cmVmcmVzaFJlc3VsdHMoJHNlbGVjdCkgcmVmcmVzaC1kZWxheT0wPjxzcGFuPnt7ZmYucmVzb3VyY2VkZWZsYW5nX3NldFswXS5OYW1lfX08L3NwYW4+PC91aS1zZWxlY3QtY2hvaWNlcz48L3VpLXNlbGVjdD48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXktYXV0b1wiIG5nLWhpZGU9ZmlsZS51cGxvYWRTdWNjZXNzPjxhIGhyZWYgY2xhc3M9ZC1pbmxpbmUtYmxvY2sgbmctY2xpY2s9XCJzaG93RmlsZU1ldGFEYXRhPSFzaG93RmlsZU1ldGFEYXRhXCI+PGkgbmctc2hvdz1zaG93RmlsZU1ldGFEYXRhIGNsYXNzPVwiZmEgZmEtbGlzdC1hbHQgZmEtbGdcIj48L2k+PC9hPiA8YnV0dG9uIG5nLWNsaWNrPWJ0bl9yZW1vdmUoJGluZGV4LGZpbGUpIGhyZWYgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFuZ2VyIGJ0bi14c1wiIHRpdGxlPVwiUmVtb3ZlIGZyb20gbGlzdCB0byBiZSB1cGxvYWRlZFwiPjxpIGNsYXNzPVwiZmEgZmEtdGltZXMgbXItMlwiPjwvaT5SZW1vdmUgZmlsZTwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9c2hvd0ZpbGVNZXRhRGF0YT48ZGl2PjxkaXYga3QtZ3JpZCBncmlkLXR5cGU9Z3JpZHN0ZXJUeXBlIGZvcm0tcGFyYW1zPXJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zIHBhcmVudD1mZC5maWxlc1skaW5kZXhdLmRhc2hib2FyZC53aWRnZXRzIGFsbC1jb2x1bW5zPWZkLmZpbGVzWyRpbmRleF0uZGFzaGJvYXJkLndpZGdldHMgY2xhc3M9a3RHcmlkPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pjxicj48ZGl2IGNsYXNzPXJvdz48ZGl2IGNsYXNzPWNvbC0yND48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodFwiIG5nLWRpc2FibGVkPWlzU2F2aW5nIG5nLWlmPVwiZmQudXBsb2FkUmVhZHkgJiYgIWZkLlJlYWRPbmx5XCIgbmctY2xpY2s9YnRuX3VwbG9hZCgpPlVwbG9hZDwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4teHMgZmxvYXQtcmlnaHRcIiBuZy1pZj1cIighZmQuUmVhZE9ubHkpICYmIChmZC5maWxlcy5sZW5ndGg+MClcIiBuZy1jbGljaz1idG5fY2xlYW4oKT5SZW1vdmUgYWxsPC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD1maWxlaGVscGVyLmh0bWwgdHlwZT10ZXh0L25nLXRlbXBsYXRlPjxkaXY+IDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj4gPGgzIGNsYXNzPVwibW9kYWwtdGl0bGVcIj57e2hlYWRsaW5lfX08L2gzPiA8L2Rpdj4gPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj4gPGRpdiBrdC1ncmlkIGdyaWQtdHlwZT1cImdyaWRzdGVyVHlwZVwiIGZvcm0tcGFyYW1zPVwicmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXNcIiBwYXJlbnQ9XCJmZC5maWxlc1tmaWxlSW5kZXhdLmRhc2hib2FyZC53aWRnZXRzXCIgYWxsLWNvbHVtbnM9XCJmZC5maWxlc1tmaWxlSW5kZXhdLmRhc2hib2FyZC53aWRnZXRzXCIgY2xhc3M9XCJrdEdyaWRcIj48L2Rpdj4gPC9kaXY+IDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXIgdGV4dC1yaWdodFwiPiA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi13YXJuaW5nXCIgdHlwZT1cImJ1dHRvblwiIG5nLWNsaWNrPVwiY2FuY2VsTW9kYWwoKVwiPkNhbmNlbDwvYnV0dG9uPiA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIG5nLWNsaWNrPVwib2tNb2RhbCgpXCI+T0s8L2J1dHRvbj4gPC9kaXY+IDwvZGl2Pjwvc2NyaXB0PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEZpbGVVcGxvYWRQcm9wZXJ0aWVzLmh0bWwnLCc8ZGl2IGNsYXNzPXAtMT48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0xXCI+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wIGJvcmRlciBzaGFkb3ctc21cIj48ZGl2IGNsYXNzPVwicHgtMSBiZy1saWdodFwiPkZpbGUgdXBsb2FkIHdpZGdldCAoe3tmZC5QcmVzZW50YXRpb25JZH19KTwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgcC0wXCI+PGRpdiBjbGFzcz1cInJvdyBtLTBcIiBuZy1yZXBlYXQ9XCJzZWxlY3RlZEZpbGVDb25uZWN0b3IgaW4gZmQubGlzdE9mQ29ubmVjdG9yc1wiPjxkaXYgY2xhc3M9XCJjb2wtNCBwLTAgbWItMlwiPjxkaXYgY2xhc3M9aC0xMDAgbmctcmVwZWF0PVwiREVJbGlzdCBpbiBzZWxlY3RlZEZpbGVDb25uZWN0b3IuREVJXCI+PGRpdiBuZy1pZj1ERUlsaXN0LnZhbHVlIG5nLWNsYXNzPVwie1xcJ2gtNTBcXCc6JGluZGV4PjAsXFwnaC03NVxcJzokaW5kZXg9PTB9XCIgc3R5bGU9XCJib3JkZXItYm90dG9tOiAzcHggc29saWRcIiBjbGFzcz1ib3JkZXItc3VjY2Vzcz48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTIwIHAtMCBib3JkZXIgc2hhZG93LXNtIG1iLTJcIj48ZGl2IG5nLXJlcGVhdD1cIkRFSWxpc3QgaW4gc2VsZWN0ZWRGaWxlQ29ubmVjdG9yLkRFSVwiPjxkaXYgbmctaWY9XCIkaW5kZXg9PTBcIiBjbGFzcz1cImNvbC1hdXRvIGJnLWxpZ2h0IHB4LTJcIj57e3NlbGVjdGVkRmlsZUNvbm5lY3Rvci5kaXNwbGF5TmFtZX19ICh7e3NlbGVjdGVkRmlsZUNvbm5lY3Rvci53aWRnZXRJZH19KSBEYXRhc2V0OiB7e3NlbGVjdGVkRmlsZUNvbm5lY3Rvci5kYXRhc2V0SWR9fTwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMCBteS1hdXRvXCIgbmctY2xhc3M9XCJ7XFwnbWwtbjIgbXItMlxcJzpERUlsaXN0LnZhbHVlfVwiPjxpIGNsYXNzPVwiZmEgZmEtcGx1Z1wiIG5nLWNsYXNzPVwie1xcJ3RleHQtc3VjY2VzcyBmYS1yb3RhdGUtOTBcXCc6REVJbGlzdC52YWx1ZSxcXCd0ZXh0LWRhbmdlclxcJzohREVJbGlzdC52YWx1ZX1cIj48L2k+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIGN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveCBtbC0yXCIgfVwiPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IGlkPWNiREVJe3tzZWxlY3RlZEZpbGVDb25uZWN0b3IubG9jYWxXaWRnZXRJZH19e3tERUlsaXN0Lm5hbWV9fSBuZy1tb2RlbD1ERUlsaXN0LnZhbHVlPiA8bGFiZWwgY2xhc3M9XCJjdXN0b20tY29udHJvbC1sYWJlbCBsYWJlbC14c1wiIGZvcj1jYkRFSXt7c2VsZWN0ZWRGaWxlQ29ubmVjdG9yLmxvY2FsV2lkZ2V0SWR9fXt7REVJbGlzdC5uYW1lfX0+e3tERUlsaXN0LmRpc3BsYXlOYW1lfX0gKHt7REVJbGlzdC5uYW1lfX0pPC9sYWJlbD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBteS0yXCI+PGRpdiBjbGFzcz1cImNvbCBwLTAgdGV4dC1yaWdodFwiPjxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtd2FybmluZyBidG4tc21cIiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1sb2NhbFZhcnMuY2FuY2VsRmlsZUNvbm5lY3RvcigpPkNhbmNlbDwvYnV0dG9uPiA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYnRuLXNtXCIgdHlwZT1idXR0b24gbmctY2xpY2s9bG9jYWxWYXJzLm9rRmlsZUNvbm5lY3RvcigpPkNvbmZpcm08L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0yXCIgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1jb2wtMTI+PGRpdiBjbGFzcz1teS0yPjxsYWJlbD5IZWFkZXIgdGl0bGU8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLk5hbWU+PC9kaXY+PGRpdiBjbGFzcz1teS0yPjxsYWJlbD5FcnJvciBtc2c8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLkVycm9yTXNnPjwvZGl2PjxkaXYgY2xhc3M9bXktMj48bGFiZWw+TWluLiBmaWxlcyByZXF1aXJlZDwvbGFiZWw+IDxpbnB1dCB0eXBlPW51bWJlciBtaW49MCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5NZXRhRGF0YVswXS5taW4gbmctaW5pdD1cImZkLk1ldGFEYXRhWzBdLm1pbj0wXCI+PC9kaXY+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveCBteS0yXCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgaWQ9Y2JSZWFkT25seSBuZy1tb2RlbD1mZC5SZWFkT25seT4gPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgbGFiZWwteHNcIiBmb3I9Y2JSZWFkT25seT5EbyBOT1QgYWxsb3cgbWFudWFsIHVwbG9hZDwvbGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb2wtMTI+PGxhYmVsPkFkZCBGaWxlIHR5cGU6PC9sYWJlbD48dWktc2VsZWN0IG5nLW1vZGVsPXNlbGVjdGVkRmlsZXMgb24tc2VsZWN0PVwib25TZWxlY3RDYWxsYmFjazIoJGl0ZW0sICRtb2RlbCwkaW5kZXgpXCIgbmctZGlzYWJsZWQ9ZGlzYWJsZWQgbmFtZT17e2ZkLk5hbWV9fSBuZy1yZXF1aXJlZD17e2ZkLlJlcXVpcmVkfX0gcmVzZXQtc2VhcmNoLWlucHV0PWZhbHNlPjx1aS1zZWxlY3QtbWF0Y2ggY2xhc3M9dWktc2VsZWN0LW1hdGNoIHBsYWNlaG9sZGVyPXt7ZmQuTGFiZWx9fT48c3Bhbj57eyRzZWxlY3Quc2VsZWN0ZWQucmVzb3VyY2VkZWZsYW5nX3NldFswXS5OYW1lfX08L3NwYW4+IDxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGluayBmbG9hdC1yaWdodFwiIG5nLWNsaWNrPVwiY2xlYXIoJGV2ZW50LCAkc2VsZWN0KVwiPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+PC9hPjwvdWktc2VsZWN0LW1hdGNoPjx1aS1zZWxlY3QtY2hvaWNlcyBjbGFzcz11aS1zZWxlY3QtY2hvaWNlcyByZXBlYXQ9XCJmZiBpbiAobGlzdE9mRmlsZVR5cGVzfCBmaWx0ZXI6IHsgaWQ6ICRzZWxlY3Quc2VhcmNoIH0pIHRyYWNrIGJ5IGZmLmlkXCIgcmVmcmVzaD1yZWZyZXNoUmVzdWx0cygkc2VsZWN0KSByZWZyZXNoLWRlbGF5PTA+PHNwYW4+e3tmZi5yZXNvdXJjZWRlZmxhbmdfc2V0WzBdLk5hbWV9fTwvc3Bhbj48L3VpLXNlbGVjdC1jaG9pY2VzPjwvdWktc2VsZWN0PjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4teHMgbXktMVwiIG5nLWNsaWNrPWFkZFJ1bGVEZWZpbml0aW9uKGZkLmZpbGV0eXBlLGZkLm1pbixmZC5tYXgsZmQubWluVG90YWwpPjxpIGNsYXNzPVwiZmEgZmEtcGx1c1wiPjwvaT4gQWRkPC9idXR0b24+PGRpdiBuZy1zaG93PWZkLk1ldGFEYXRhLmxlbmd0aD48dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zbSBsYWJlbFwiPjx0aGVhZD48dHI+PHRoPkZpbGVUeXBlPC90aD48dGg+TWluPC90aD48dGg+TWF4PC90aD48L3RyPjwvdGhlYWQ+PHRib2R5Pjx0ciBuZy1yZXBlYXQ9XCJydWwgaW4gZmQuTWV0YURhdGFcIiBuZy1pZj1cIiRpbmRleCA+IDBcIj48dGQ+PHVsIHN0eWxlPWxpc3Qtc3R5bGU6bm9uZTtwYWRkaW5nLWxlZnQ6MD48bGkgbmctcmVwZWF0PVwiaXRlbSBpbiAobGlzdE9mRmlsZVR5cGVzIHwgZmlsdGVyOiB7IGlkOiBydWwubmFtZSB9KSB0cmFjayBieSAkaW5kZXhcIj57eyBpdGVtLnJlc291cmNlZGVmbGFuZ19zZXRbMF0uTmFtZSB9fTwvbGk+PC91bD48L3RkPjx0ZD48aW5wdXQgdHlwZT1udW1iZXIgbWluPTAgbmctbW9kZWw9cnVsLm1pbiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48L3RkPjx0ZD48aW5wdXQgdHlwZT1udW1iZXIgbWluPTAgbmctbW9kZWw9cnVsLm1heCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48L3RkPjx0ZD48YSB0aXRsZT1SZW1vdmUgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFuZ2VyIGJvcmRlci0wXCIgbmctY2xpY2s9cmVtb3ZlKCRpbmRleCk+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2E+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RGb3JtTGF5b3V0Lmh0bWwnLCc8ZGl2IGlkZD1rdEZvcm1MYXlvdXQgbmctY2xhc3M9XCJ7XFwncC0xXFwnOihpbnB1dEFycmF5LmxheW91dC5sZW5ndGg9PTAgfHwgaW5wdXRBcnJheS5jb3VudEFjdGl2ZT09MCkgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTIsXFwnbWItMSBwYi0xXFwnOihpbnB1dEFycmF5LmxheW91dC5sZW5ndGg9PTAgfHwgaW5wdXRBcnJheS5jb3VudEFjdGl2ZT09MCkgJiYgKGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yIHx8IGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlPT0yKX1cIiBjbGFzcz1wdC0xPjx1bCBjbGFzcz1cInJvdyBtLTAgZm9ybS1jb250YWluZXJcIiBuZy1jbGFzcz1cIntcXCdtaW4xMFxcJyA6IChpbnB1dEFycmF5LmxheW91dC5sZW5ndGg9PTAgfHwgaW5wdXRBcnJheS5jb3VudEFjdGl2ZT09MCkgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTJ9XCIgZHJhZ3VsYT1cIlxcJ2JhZy17e2dyaWRUeXBlfX1cXCdcIiBkcmFndWxhLXNjb3BlPSRyb290IGRyYWd1bGEtbW9kZWw9aW5wdXRBcnJheS5sYXlvdXQgbmctbW9kZWw9aW5wdXRBcnJheS5sYXlvdXQ+PGxpIG5nLWlmPVwiKGlucHV0QXJyYXkubGF5b3V0Lmxlbmd0aD09MCB8fCBpbnB1dEFycmF5LmNvdW50QWN0aXZlPT0wKSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MlwiIGNsYXNzPVwidGFnIG10LTEgcC0yIGQtaW5saW5lLWJsb2NrXCI+RHJvcCBoZXJlPC9saT48bGkgbmctcmVwZWF0PVwiZmQgaW4gaW5wdXRBcnJheS5sYXlvdXRcIiBjbGFzcz1cInAtMCB7e2ZkLlBhcmFtZXRlcnMuQ3VzdG9tQ1NTfX0ge3sgKGZkLlBhcmFtZXRlcnMuRWxlbWVudFdpZHRoICYmICFmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUpID8gKFxcJ2NvbC1sZy1cXCcrZmQuUGFyYW1ldGVycy5FbGVtZW50V2lkdGgpIDogXFwnY29sLWF1dG9cXCd9fSB7e2ZkLlBhcmFtZXRlcnMuY3VzdG9tQ1NTfX1cIiBuZy1jbGFzcz1cIntcXCdtYi0xXFwnOiAkaW5kZXgrMT09aW5wdXRBcnJheS5sYXlvdXQubGVuZ3RofVwiPjxkaXYgbmctc2hvdz1cImZkLlN0YXR1cz09XFwnQWN0aXZlXFwnXCIgbmctc3dpdGNoPWZkLkVsZW1lbnRUeXBlPjxkaXYgbmctc3dpdGNoLXdoZW49Z2NvbCBrdC1ncmlkLWNvbHVtbiBncmlkLXR5cGU9Z3JpZFR5cGUgcGFyZW50LXJlc291cmNlLWRlZi1pZD1wYXJlbnRSZXNvdXJjZURlZklkIHJlc291cmNlLXJlY29yZC1pZD1yZXNvdXJjZVJlY29yZElkIHJlc291cmNlLWRlZmluaXRpb249cmVzb3VyY2VEZWZpbml0aW9uIGlucHV0LWFycmF5PWZkIGZvcm0tcGFyYW1zPWZvcm1QYXJhbXMgZm9ybS1kYXRhPWZvcm1EYXRhIHBhcmFtcz1wYXJhbXMgZm9ybS1wYXJhbXMtcGFyZW50PWZvcm1QYXJhbXNQYXJlbnQgcGFyZW50PWlucHV0QXJyYXkgY2xhc3M9bm9Ib3Jpem9udGFsUGFkZGluZyBuZy1jbGFzcz1cIntcXCdjb2wtbGcte3tjb2x1bW4uU2l6ZVh9fSBjb2wtbWQte3tjb2x1bW4uUGFyYW1ldGVycy5TaXplWE1kfX0gY29sLXNtLXt7Y29sdW1uLlBhcmFtZXRlcnMuU2l6ZVhTbX19IGNvbC17e2NvbHVtbi5QYXJhbWV0ZXJzLlNpemVYWHN9fVxcJzohZmQuUGFyYW1ldGVycy5BdXRvU2l6ZSxcXCdjb2wtYXV0b1xcJzpmZC5QYXJhbWV0ZXJzLkF1dG9TaXplfVwiIGFsbC1jb2x1bW5zPWFsbENvbHVtbnM+PC9kaXY+PGRpdiBuZy1zd2l0Y2gtd2hlbj1yb3cga3QtZ3JpZC1yb3cgZ3JpZC10eXBlPWdyaWRUeXBlIHJvdz1mZCByZXNvdXJjZS1mb3JtLWxvYWRlZD1yZXNvdXJjZUZvcm1Mb2FkZWQgc2hvdy1zZWFyY2gtZmlsdGVycz1zaG93U2VhcmNoRmlsdGVycyBwYXJlbnQtcmVzb3VyY2UtZGVmLWlkPXBhcmVudFJlc291cmNlRGVmSWQgcmVzb3VyY2UtcmVjb3JkLWlkPXJlc291cmNlUmVjb3JkSWQgcmVzb3VyY2UtZGVmaW5pdGlvbj1yZXNvdXJjZURlZmluaXRpb24gZm9ybS1wYXJhbXM9Zm9ybVBhcmFtcyBmb3JtLXBhcmFtcy1wYXJlbnQ9Zm9ybVBhcmFtc1BhcmVudCBmb3JtLWRhdGE9Zm9ybURhdGEgcGFyYW1zPXBhcmFtcyBwYXJlbnQ9aW5wdXRBcnJheSBhbGwtcm93cz1hbGxDb2x1bW5zPjwvZGl2PjxkaXYgbmctc3dpdGNoLWRlZmF1bHQga3QtZm9ybS1maWVsZC1nZW5lcmF0b3I+PC9kaXY+PC9kaXY+PC9saT48L3VsPjxkaXYgY2xhc3M9XCJtb2RhbCBmYWRlXCIgcm9sZT1kaWFsb2cgYXJpYS1sYWJlbGxlZGJ5PW1hc3NQcm9wZXJ0eVVwZGF0ZSBpZD1tYXNzUHJvcGVydHlVcGRhdGUgYXJpYS1oaWRkZW49ZmFsc2U+PGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1sZ1wiIHJvbGU9ZG9jdW1lbnQ+PGRpdiBjbGFzcz1tb2RhbC1jb250ZW50PjxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcHktMVwiPjxkaXYgY2xhc3M9XCJtb2RhbC10aXRsZSBmbnQxMiBjb2wgbXgtMCBteS0yXCI+PHNwYW4+TWFzcyBQcm9wZXJ0eSBVcGRhdGU8L3NwYW4+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9Y2xvc2UgZGF0YS1kaXNtaXNzPW1vZGFsIGFyaWEtbGFiZWw9Q2xvc2U+PHNwYW4gYXJpYS1oaWRkZW49dHJ1ZT5cXHhENzwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPW1vZGFsLWJvZHk+PGRpdiBrdC1tYXNzLXByb3BlcnR5LXVwZGF0ZS1zZWxlY3QyPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEZvcm1MYXlvdXRFeGUuaHRtbCcsJzx1bCBpZGQ9a3RGb3JtTGF5b3V0RXhlIGNsYXNzPVwicm93IHB0LTEgbS0wIGZvcm0tY29udGFpbmVyXCI+PGxpIG5nLXJlcGVhdD1cImZkIGluIGlucHV0QXJyYXkubGF5b3V0IHRyYWNrIGJ5ICRpbmRleFwiIGNsYXNzPVwicC0wIHt7ZmQuUGFyYW1ldGVycy5jdXN0b21DU1N9fSB7eyAoZmQuUGFyYW1ldGVycy5FbGVtZW50V2lkdGggJiYgIWZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSkgPyAoXFwnY29sLWxnLVxcJytmZC5QYXJhbWV0ZXJzLkVsZW1lbnRXaWR0aCkgOiBcXCdjb2wtYXV0b1xcJ319XCIgbmctY2xhc3M9XCJ7XFwnbWItMVxcJzogJGluZGV4KzE9PWlucHV0QXJyYXkubGF5b3V0Lmxlbmd0aH1cIj48ZGl2IG5nLWlmPVwiZmQuU3RhdHVzPT1cXCdBY3RpdmVcXCdcIiBuZy1zd2l0Y2g9ZmQuRWxlbWVudFR5cGU+PGRpdiBuZy1zd2l0Y2gtd2hlbj1nY29sIGt0LWdyaWQtY29sdW1uIGdyaWQtdHlwZT06OmdyaWRUeXBlIHBhcmVudC1yZXNvdXJjZS1kZWYtaWQ9OjpwYXJlbnRSZXNvdXJjZURlZklkIHJlc291cmNlLXJlY29yZC1pZD06OnJlc291cmNlUmVjb3JkSWQgcmVzb3VyY2UtZGVmaW5pdGlvbj06OnJlc291cmNlRGVmaW5pdGlvbiBpbnB1dC1hcnJheT1mZCBmb3JtLXBhcmFtcz06OmZvcm1QYXJhbXMgcGFyYW1zPTo6cGFyYW1zIHBhcmVudC13aWRnZXQ9cGFyZW50V2lkZ2V0IGZvcm0tZGF0YT1mb3JtRGF0YSBmb3JtLXBhcmFtcy1wYXJlbnQ9Ojpmb3JtUGFyYW1zUGFyZW50IHBhcmVudD06OmlucHV0QXJyYXkgY2xhc3M9bm9Ib3Jpem9udGFsUGFkZGluZyBuZy1jbGFzcz1cIntcXCdjb2wtbGcte3s6OmNvbHVtbi5TaXplWH19IGNvbC1tZC17ezo6Y29sdW1uLlBhcmFtZXRlcnMuU2l6ZVhNZH19IGNvbC1zbS17ezo6Y29sdW1uLlBhcmFtZXRlcnMuU2l6ZVhTbX19IGNvbC17ezo6Y29sdW1uLlBhcmFtZXRlcnMuU2l6ZVhYc319XFwnOiFmZC5QYXJhbWV0ZXJzLkF1dG9TaXplLFxcJ2NvbC1hdXRvXFwnOmZkLlBhcmFtZXRlcnMuQXV0b1NpemV9XCIgYWxsLWNvbHVtbnM9OjphbGxDb2x1bW5zPjwvZGl2PjxkaXYgbmctc3dpdGNoLXdoZW49cm93IGt0LWdyaWQtcm93IGdyaWQtdHlwZT06OmdyaWRUeXBlIHJvdz1mZCByZXNvdXJjZS1mb3JtLWxvYWRlZD06OnJlc291cmNlRm9ybUxvYWRlZCBzaG93LXNlYXJjaC1maWx0ZXJzPTo6c2hvd1NlYXJjaEZpbHRlcnMgcGFyZW50LXJlc291cmNlLWRlZi1pZD06OnBhcmVudFJlc291cmNlRGVmSWQgcmVzb3VyY2UtcmVjb3JkLWlkPTo6cmVzb3VyY2VSZWNvcmRJZCByZXNvdXJjZS1kZWZpbml0aW9uPTo6cmVzb3VyY2VEZWZpbml0aW9uIHBhcmFtcz06OnBhcmFtcyBwYXJlbnQtd2lkZ2V0PXBhcmVudFdpZGdldCBmb3JtLXBhcmFtcz06OmZvcm1QYXJhbXMgZm9ybS1wYXJhbXMtcGFyZW50PTo6Zm9ybVBhcmFtc1BhcmVudCBmb3JtLWRhdGE9Zm9ybURhdGEgcGFyZW50PTo6aW5wdXRBcnJheSBhbGwtcm93cz06OmFsbENvbHVtbnM+PC9kaXY+PGRpdiBuZy1zd2l0Y2gtZGVmYXVsdCBrdC1mb3JtLWZpZWxkLWdlbmVyYXRvcj48L2Rpdj48L2Rpdj48L2xpPjwvdWw+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0Rm9ybVdpZGdldC5odG1sJywnPGRpdiBpZD1rdEZvcm1XaWRnZXQgY2xhc3M9XCJib3ggbm9Ib3Jpem9udGFsUGFkZGluZ1wiIG5vLWRyYWcgbmctY2xhc3M9Z2V0Q2xhc3MoaW5wdXRBcnJheS5zaXplWCk+PGRpdiBzdHlsZT1cImJvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2M7YmFja2dyb3VuZC1jb2xvcjojZWVlXCI+PGRpdiBjbGFzcz1mbG9hdC1sZWZ0IG5nLXNob3c9IWlucHV0QXJyYXkubG9ja2VkIHN0eWxlPW1hcmdpbi1sZWZ0OjZweD48YSBocmVmIGFzLXNvcnRhYmxlLWl0ZW0taGFuZGxlPjxpIGNsYXNzPVwiZmEgZmEtYXJyb3dzXCI+PC9pPjwvYT48L2Rpdj48c3Ryb25nIHN0eWxlPXBhZGRpbmctbGVmdDoyMHB4Pnt7IGlucHV0QXJyYXkubmFtZSB9fTwvc3Ryb25nPjxkaXYgY2xhc3M9ZmxvYXQtcmlnaHQgc3R5bGU9bWFyZ2luLXJpZ2h0OjZweD48YSB1aWItcG9wb3Zlci10ZW1wbGF0ZT1cIlxcJ3dpZGdldHByb3BlcnRpZXMuaHRtbFxcJ1wiIG5nLWlmPSFpbnB1dEFycmF5LmxvY2tlZCBwb3BvdmVyLXRyaWdnZXI9b3V0c2lkZUNsaWNrIHBvcG92ZXItYXBwZW5kLXRvLWJvZHk9dHJ1ZSBwb3BvdmVyLXBsYWNlbWVudD1sZWZ0LXRvcD48aSBjbGFzcz1cImZhIGZhLWNhcmV0LXNxdWFyZS1vLXJpZ2h0XCI+PC9pPjwvYT4gPGEgdWliLXBvcG92ZXItdGVtcGxhdGU9XCJcXCd0b29sYm94Lmh0bWxcXCdcIiBuZy1pZj0haW5wdXRBcnJheS5sb2NrZWQgcG9wb3Zlci10cmlnZ2VyPW91dHNpZGVDbGljayBwb3BvdmVyLWFwcGVuZC10by1ib2R5PXRydWUgcG9wb3Zlci1wbGFjZW1lbnQ9bGVmdC10b3A+PGkgY2xhc3M9XCJmYSBmYS1wbHVzLXNxdWFyZVwiIG5nLWNsYXNzPVwie1xcJ2NvbG9yOmJsYWNrXFwnOiBpbnB1dEFycmF5LmxvY2tlZH1cIj48L2k+PC9hPiA8YSB0aXRsZT1cIlJlbW92ZSB3aWRnZXRcIiBuZy1pZj0haW5wdXRBcnJheS5sb2NrZWQgbmctY2xpY2s9cmVtb3ZlKGlucHV0QXJyYXkpPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBuZy1jbGFzcz1cIntcXCdkaXNhYmxlZFxcJzogaW5wdXRBcnJheS5sb2NrZWR9XCI+PC9pPjwvYT4gPGEgdGl0bGU9XCJMb2NrL1VubG9jayB3aWRnZXRcIiBuZy1pZj0hZm9ybUxvY2tlZCBuZy1jbGljaz1cImlucHV0QXJyYXkubG9ja2VkPSFpbnB1dEFycmF5LmxvY2tlZDtpbnZlcnNlKClcIj48aSBuZy1jbGFzcz1cIntcXCdmYSBmYS1sb2NrXFwnOiBpbnB1dEFycmF5LmxvY2tlZCAsXFwnZmEgZmEtdW5sb2NrLWFsdFxcJzogIWlucHV0QXJyYXkubG9ja2VkLFxcJ2NvbG9yOmJsYWNrXFwnOiBpbnB1dEFycmF5LmxvY2tlZH1cIj48L2k+PC9hPjwvZGl2PjwvZGl2PjxkaXYgbmctc3dpdGNoPWdyaWRUeXBlIHN0eWxlPW1hcmdpbi10b3A6MTVweDttYXJnaW4tcmlnaHQ6MHB4PjxkaXYgbmctc3dpdGNoLXdoZW49cmVzb3VyY2Uga3QtZm9ybWxheW91dD48L2Rpdj48ZGl2IG5nLXN3aXRjaC13aGVuPXRhc2sga3QtdGFza2Zvcm1sYXlvdXQ+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD10b29sYm94Lmh0bWwgdHlwZT10ZXh0L25nLXRlbXBsYXRlPjxkaXYgbmctaWY9XCJpbnB1dEFycmF5LmxvY2tlZFwiID5VbmxvY2sgd2lkZ2V0ITwvZGl2PiA8ZGl2IG5nLWlmPVwiIWlucHV0QXJyYXkubG9ja2VkXCIga3QtdG9vbGJveCAvPjwvc2NyaXB0PjxzY3JpcHQgaWQ9d2lkZ2V0cHJvcGVydGllcy5odG1sIHR5cGU9dGV4dC9uZy10ZW1wbGF0ZT48ZGl2PiA8ZGl2IGNsYXNzPVwiYm94LWhlYWRlci1idG5zIGZsb2F0LXJpZ2h0XCIgPiA8L2Rpdj4gPGxhYmVsPk5hbWUgPC9sYWJlbD4gPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuZy1tb2RlbD1cImlucHV0QXJyYXkubmFtZVwiIC8+IDxkaXYgY2xhc3M9XCJjaGVja2JveFwiPiA8bGFiZWw+IDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuZy1tb2RlbD1cImlucHV0QXJyYXkuc2hvd0ZpZWxkXCI+IFNob3cgd2lkZ2V0IDwvbGFiZWw+IDwvZGl2PiA8bGFiZWw+VGFiIGluZGV4IDwvbGFiZWw+IDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgcGxhY2Vob2xkZXI9XCJ0YWIgaW5kZXhcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5nLW1vZGVsPVwiaW5wdXRBcnJheS50YWJJbmRleFwiIC8+IDxsYWJlbD5TaXplWCA8L2xhYmVsPiA8aW5wdXQgdHlwZT1cIm51bWJlclwiIHBsYWNlaG9sZGVyPVwic2l6ZVhcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5nLW1vZGVsPVwiaW5wdXRBcnJheS5zaXplWFwiIC8+IDwvZGl2Pjwvc2NyaXB0PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEdyaWQuaHRtbCcsJzxkaXYgaWRkPWt0R3JpZCBjbGFzcz48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IG10LTJcIj48bGFiZWwgY2xhc3M9XCJzd2l0Y2ggc3dpdGNoLWdyZWVuXCI+PGlucHV0IG5nLW1vZGVsPVwicmVzb3VyY2VEZWZpbml0aW9uLnNob3dIaWRkZW5bbXlwYXJlbnRXaWRnZXRVaWQgKyBcXCctXFwnKyByZXNvdXJjZURlZmluaXRpb24udWlkXVwiIHR5cGU9Y2hlY2tib3ggbmctdHJ1ZS12YWx1ZT10cnVlIG5nLWZhbHNlLXZhbHVlPWZhbHNlIGNsYXNzPXN3aXRjaC1pbnB1dD4gPHNwYW4gY2xhc3M9c3dpdGNoLWxhYmVsIGRhdGEtb249T24gZGF0YS1vZmY9T2ZmPjwvc3Bhbj4gPHNwYW4gY2xhc3M9c3dpdGNoLWhhbmRsZT48L3NwYW4+PC9sYWJlbD48ZGl2IGNsYXNzPVwibXktMSBkLWlubGluZS1ibG9ja1wiPjxzcGFuIGNsYXNzPVwibWwtMiBmbnQ2XCI+U2hvdyBoaWRkZW4gY29udGVudDwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzIG5nLWlmPSFmb3JtTG9hZGVkIGFuaW1hdGlvbi10eXBlPVwiXFwnZm9ybVxcJ1wiIGt0LXByb2Nlc3NpbmctYW5pbWF0aW9uLXRpbWVsaW5lIHNob3ctbXNnPXRydWUgbWVzc2FnZT1cIkxvYWRpbmcgZm9ybS4uLlwiPjwvZGl2Pjx1bCBuZy1pZj1cInNob3dHcmlkTmF2aWdhdGlvbiAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZT09MVwiIGNsYXNzPVwibmF2IG5hdi10YWJzIHNpbXBsZS10YWJzIGJvcmRlci0wIG1iLTIgbXgtNFwiIGlkPW15VGFiIHJvbGU9dGFibGlzdD48bGkgY2xhc3M9bmF2LWl0ZW0+PGEgY2xhc3M9bmF2LWxpbmsgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlPT0yfVwiIGhyZWYgaWQ9cHJldmlldy10YWIxIGRhdGEtdG9nZ2xlPXRhYiBuZy1jbGljaz1TaG93Rm9ybVZpZXcoMix0cnVlKSByb2xlPXRhYiBhcmlhLWNvbnRyb2xzPXByZXZpZXcgYXJpYS1zZWxlY3RlZD1cInt7Zm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGU9PTJ9fVwiPlByZXZpZXc8L2E+PC9saT48bGkgY2xhc3M9bmF2LWl0ZW0+PGEgY2xhc3M9bmF2LWxpbmsgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlPT0xfVwiIGlkPWJ1aWxkLXRhYjEgaHJlZiBkYXRhLXRvZ2dsZT10YWIgbmctY2xpY2s9U2hvd0Zvcm1WaWV3KDEsZmFsc2UpIHJvbGU9dGFiIGFyaWEtY29udHJvbHM9YnVpbGQgYXJpYS1zZWxlY3RlZD1cImZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlPT0xXCI+QnVpbGQ8L2E+PC9saT48bGkgY2xhc3M9bmF2LWl0ZW0+PGEgY2xhc3M9bmF2LWxpbmsgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlPT0zfSB8fCB7XFwnYWN0aXZlXFwnOmZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlPT00fVwiIGlkPWxheW91dC10YWIxIGhyZWYgZGF0YS10b2dnbGU9dGFiIG5nLWNsaWNrPVNob3dGb3JtVmlldyg0KSByb2xlPXRhYiBhcmlhLWNvbnRyb2xzPWxheW91dCBhcmlhLXNlbGVjdGVkPVwie3tmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZT09NCB8fCBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZT09M319XCI+PGkgY2xhc3M9XCJmYSBmYS10aC1sYXJnZSBtci0xXCI+PC9pPiBBcnJhbmdlIGxheW91dDwvYT48L2xpPjwvdWw+PGRpdiBuZy1pZj1cIiggZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTMgfHwgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTQpICYmIGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlIT0yXCIgY2xhc3M9XCJtLTIgYnRuLWdyb3VwIGJ0bi1ncm91cC1zbSBidG4tZ3JvdXAtdG9nZ2xlXCIgZGF0YS10b2dnbGU9YnV0dG9ucz48bGFiZWwgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4tdG9nZ2xlIGFjdGl2ZVwiIG5nLWNsaWNrPVNob3dGb3JtVmlldyg0KT48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPW9wdGlvbnMgaWQ9b3B0aW9uMiBhdXRvY29tcGxldGU9b2ZmIGNoZWNrZWQ+IDxpIGNsYXNzPVwiZmEgZmEtdGgtbGFyZ2UgbXItMVwiPjwvaT4gQXJyYW5nZSBjb250YWluZXJzPC9sYWJlbD4gPGxhYmVsIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYnRuLXRvZ2dsZVwiIG5nLWNsaWNrPVNob3dGb3JtVmlldygzKT48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPW9wdGlvbnMgaWQ9b3B0aW9uMyBhdXRvY29tcGxldGU9b2ZmPiA8aSBjbGFzcz1cImZhIGZhLWNvbHVtbnMgbXItMVwiPjwvaT4gQXJyYW5nZSBjb2x1bW5zPC9sYWJlbD48L2Rpdj48ZGl2IG5nLWlmPVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTRcIiBkcmFndWxhPVwiXFwnYmFnLXJvd3Mte3tncmlkVHlwZX19LXt7JGlkfX1cXCdcIiBkcmFndWxhLW1vZGVsPWFsbENvbHVtbnMubGF5b3V0IGNsYXNzPjxkaXYgbmctcmVwZWF0PVwid2lkZ2V0IGluIGFsbENvbHVtbnMubGF5b3V0IHRyYWNrIGJ5ICRpbmRleFwiIGNsYXNzPWdyaWRSZXBlYXRDb250YWluZXI+PGRpdiBuZy1pZj1cIndpZGdldC5TdGF0dXM9PVxcJ0FjdGl2ZVxcJ1wiIGt0LWdyaWQtcm93IGdyaWQtdHlwZT1ncmlkVHlwZSByb3c9d2lkZ2V0IHJlc291cmNlLWZvcm0tbG9hZGVkPWZvcm1Mb2FkZWQgc2hvdy1zZWFyY2gtZmlsdGVycz1zaG93U2VhcmNoRmlsdGVycyBwYXJlbnQtcmVzb3VyY2UtZGVmLWlkPXBhcmVudFJlc291cmNlRGVmSWQgcmVzb3VyY2UtcmVjb3JkLWlkPXJlc291cmNlUmVjb3JkSWQgcmVzb3VyY2UtZGVmaW5pdGlvbj1yZXNvdXJjZURlZmluaXRpb24gZm9ybS1wYXJhbXM9Zm9ybVBhcmFtcyBmb3JtLXBhcmFtcy1wYXJlbnQ9Zm9ybVBhcmFtc1BhcmVudCBwYXJlbnQ9YWxsQ29sdW1ucyBwYXJhbXM9cGFyYW1zIGZvcm0tZGF0YT1mb3JtRGF0YSBhbGwtcm93cz1hbGxDb2x1bW5zPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSE9NCAmJiBmb3JtTG9hZGVkXCIgY2xhc3M+PGRpdiBuZy1yZXBlYXQ9XCJ3aWRnZXQgaW4gYWxsQ29sdW1ucy5sYXlvdXQgdHJhY2sgYnkgJGluZGV4XCIgY2xhc3M9Z3JpZFJlcGVhdENvbnRhaW5lcj48ZGl2IG5nLWlmPVwid2lkZ2V0LlN0YXR1cz09XFwnQWN0aXZlXFwnXCIga3QtZ3JpZC1yb3cgZ3JpZC10eXBlPWdyaWRUeXBlIHJvdz13aWRnZXQgcmVzb3VyY2UtZm9ybS1sb2FkZWQ9Zm9ybUxvYWRlZCBzaG93LXNlYXJjaC1maWx0ZXJzPXNob3dTZWFyY2hGaWx0ZXJzIHBhcmVudC1yZXNvdXJjZS1kZWYtaWQ9cGFyZW50RGF0YXNldERlZklkIHJlc291cmNlLXJlY29yZC1pZD1yZXNvdXJjZVJlY29yZElkIHJlc291cmNlLWRlZmluaXRpb249cmVzb3VyY2VEZWZpbml0aW9uIGZvcm0tcGFyYW1zPWZvcm1QYXJhbXMgZm9ybS1wYXJhbXMtcGFyZW50PWZvcm1QYXJhbXNQYXJlbnQgcGFyZW50PWFsbENvbHVtbnMgcGFyYW1zPXBhcmFtcyBmb3JtLWRhdGE9Zm9ybURhdGEgYWxsLXJvd3M9YWxsQ29sdW1ucz48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RHcmlkQ29sdW1uLmh0bWwnLCc8ZGl2IGlkZD1rdEdyaWRDb2x1bW4gbmctc2hvdz1cImlucHV0QXJyYXkuU2hvd0ZpZWxkIHx8ICgoZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgfHwgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTQgfHwgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTMpICYmIGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlIT0yKVwiIGNsYXNzPXAtMCBuZy1jbGFzcz1cIntcXCdjb2x1bW4tb3V0bGluZVxcJzooZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgfHwgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTMpICYmIGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlIT0yLFxcJ2FjdGl2ZVxcJzppbnB1dEFycmF5PT1nc3J2Yy5zZWxlY3RlZEZpZWxkICYmIGdzcnZjLnByb3BlcnRpZXNPcGVuZWQsXFwnbS0xXFwnOmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0zfVwiPjxkaXYgaWQ9Y29sdW1uX2hlYWRlciBuZy1jbGljaz1nc3J2Yy5zZXRGaWVsZFByb3BlcnRpZXMoaW5wdXRBcnJheSxwYXJlbnQpIG5nLWlmPVwiaW5wdXRBcnJheS5TaG93SGVhZGVyIHx8IChmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSE9MiAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MilcIiBjbGFzcz1weC0wIG5nLWNsYXNzPVwie1xcJ2NvbHVtbi1oZWFkZXJcXCc6Zm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgfHwgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTMsXFwnbS0xIGJvcmRlciBib3JkZXItZGFya1xcJzpmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09NCxcXCdiZy1wcmltYXJ5LWxpZ2h0XFwnOmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yIHx8IGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlPT0yfVwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCIgbmctaWY9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSB8fCBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MiB8fCBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZT09MlwiPjxkaXYgaWQ9QWRkX2NvbHVtbl9sZWZ0IGNsYXNzPVwiY29sLWF1dG8gcC0wXCIgbmctaWY9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MlwiPjxhIHRpdGxlPVwiQWRkIGNvbHVtbiB0byB0aGUgbGVmdFwiIGhyZWYgbmctaWY9XCJpbnB1dEFycmF5PT1nc3J2Yy5zZWxlY3RlZEZpZWxkICYmIGdzcnZjLnByb3BlcnRpZXNPcGVuZWRcIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgcC0wIHB4LTEgbS0xIGJ0bi14c1wiIG5nLWNsaWNrPWFkZENvbHVtbihwYXJlbnQsMCk+PGkgY2xhc3M9XCJmYSBmYS1hcnJvdy1sZWZ0IHRleHQtZGFyayBtLTBcIiBuZy1jbGFzcz1cIntcXCdkaXNhYmxlZFxcJzogZm9ybVBhcmFtcy5mb3JtTG9ja2VkfVwiPjwvaT4gPGkgY2xhc3M9XCJmYSBmYS1jb2x1bW5zIHRleHQtZGFyayBtLTBcIiBuZy1jbGFzcz1cIntcXCdkaXNhYmxlZFxcJzogZm9ybVBhcmFtcy5mb3JtTG9ja2VkfVwiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1jb2w+PGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImNvbHVtbi1oZWFkZXItaW5wdXQgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTBcIiBuZy1jbGFzcz1cIntcXCd0ZXh0LXN1Y2Nlc3MgYm9sZFxcJzppbnB1dEFycmF5PT1nc3J2Yy5zZWxlY3RlZEZpZWxkICYmIGdzcnZjLnByb3BlcnRpZXNPcGVuZWR9XCIgbmctaWY9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MlwiIG5nLW1vZGVsPWlucHV0QXJyYXkuTmFtZSBjb250ZW50ZWRpdGFibGU9dHJ1ZT4gPHNwYW4gY2xhc3M9XCJzZWN0aW9uLXRpdGxlIHRhZyBzaG93LXdoZW4tZWRpdCBweS0yIG1iLTAgbWwtMSBiZy10cmFuc3BhcmVudCBib3JkZXItMFwiIG5nLWlmPVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTIgfHwgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGU9PTJcIj57e2lucHV0QXJyYXkuTmFtZX19PC9zcGFuPjwvZGl2PjxkaXYgaWQ9YWRkX2NvbHVtbl9yaWdodCBjbGFzcz1cImNvbC1hdXRvIHAtMFwiIG5nLWlmPVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTJcIj48YSB0aXRsZT1cIkFkZCBjb2x1bW4gdG8gdGhlIHJpZ2h0XCIgaHJlZiBuZy1pZj1cImlucHV0QXJyYXk9PWdzcnZjLnNlbGVjdGVkRmllbGQgJiYgZ3NydmMucHJvcGVydGllc09wZW5lZFwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBwLTAgcHgtMSBtLTEgYnRuLXhzXCIgbmctY2xpY2s9YWRkQ29sdW1uKHBhcmVudCwxKT48aSBjbGFzcz1cImZhIGZhLWNvbHVtbnMgdGV4dC1kYXJrXCIgbmctY2xhc3M9XCJ7XFwnZGlzYWJsZWRcXCc6IGZvcm1QYXJhbXMuZm9ybUxvY2tlZH1cIj48L2k+IDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctcmlnaHQgdGV4dC1kYXJrXCIgbmctY2xhc3M9XCJ7XFwnZGlzYWJsZWRcXCc6IGZvcm1QYXJhbXMuZm9ybUxvY2tlZH1cIj48L2k+PC9hPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wXCIgbmctaWY9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09M1wiPjxzcGFuIGNsYXNzPVwic2VjdGlvbi10aXRsZSBjb2wtYXV0byBtLTFcIj57e2lucHV0QXJyYXkuTmFtZX19PC9zcGFuPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBteS1hdXRvXCIgbmctaWY9XCJpbnB1dEFycmF5PT1nc3J2Yy5zZWxlY3RlZEZpZWxkICYmIGdzcnZjLnByb3BlcnRpZXNPcGVuZWRcIj48aW5wdXQgdHlwZT1udW1iZXIgbWluPTEgbWF4PTI0IG5nLW1vZGVsPWlucHV0QXJyYXkuU2l6ZVggY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTAgcC0xIHRleHQtY2VudGVyXCIgbmctaWY9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09M1wiPjxhIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgY29sLWF1dG8gbWwtMyB7e2dyaWRUeXBlfX0tY29sdW1uLWRyYWctaGFuZGxlXCIgdGl0bGU9c29ydCBocmVmPjxpIGNsYXNzPVwie3tncmlkVHlwZX19LWNvbHVtbi1kcmFnLWhhbmRsZSBmYSBmYS1zb3J0XCI+PC9pPjwvYT4gPHNwYW4gY2xhc3M9XCJoNiBjb2wtYXV0byBteS1hdXRvIG1sLTNcIj5Db2x1bW4gJm5ic3Age3s6OnBhcmVudC5sYXlvdXQuaW5kZXhPZihpbnB1dEFycmF5KSsxfX08L3NwYW4+PGRpdiBjbGFzcz1cInRleHQtZGFuZ2VyIGNvbCB0ZXh0LXJpZ2h0XCIgbmctaWY9XCJpbnB1dEFycmF5PT1nc3J2Yy5zZWxlY3RlZEZpZWxkICYmIGdzcnZjLnByb3BlcnRpZXNPcGVuZWRcIj48YSB0aXRsZT1cIkNsZWFyIHNlbGVjdGlvblwiIGhyZWYgY2xhc3M9XCJidG4gYnRuLWxpbmsgcHktMSBtbC0zIGJ0bi1zbVwiIG5nLWNsaWNrPXNob3dIaWRlUHJvcGVydGllcyhmYWxzZSk7PjxpIGNsYXNzPVwiZmEgZmEtdGltZXMgbS0wXCI+PC9pPiA8c3BhbiBjbGFzcz1tbC0xPkNsZWFyIHNlbGVjdGlvbjwvc3Bhbj48L2E+PC9kaXY+PC9kaXY+PGRpdiBuZy1zd2l0Y2g9Z3JpZFR5cGUgbmctc2hvdz1cIihmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSB8fCBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MiB8fCBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZVBhcmVudD09MikgJiYgaW5wdXRBcnJheS5TdGF0dXM9PVxcJ0FjdGl2ZVxcJ1wiPjxkaXYgbmctc3dpdGNoLXdoZW49dGFzayBrdC10YXNrZm9ybWxheW91dD48L2Rpdj48ZGl2IG5nLXN3aXRjaC13aGVuPXBhZ2Uga3QtcGFnZWZvcm1sYXlvdXQ+PC9kaXY+PGRpdiBuZy1zd2l0Y2gtZGVmYXVsdCBrdC1mb3JtbGF5b3V0PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEdyaWRDb2x1bW5FeGUuaHRtbCcsJzxkaXYgaWRkPWt0R3JpZENvbHVtbkV4ZSBuZy1pZj1pbnB1dEFycmF5LlNob3dGaWVsZCBjbGFzcz1wLTAgbmctc3R5bGU9XCJ7IFxcJ2ZvbnQtc2l6ZVxcJzogaW5wdXRBcnJheS5QYXJhbWV0ZXJzLkZvbnRTaXplIT11bmRlZmluZWQgPyBpbnB1dEFycmF5LlBhcmFtZXRlcnMuRm9udFNpemUrXFwncHhcXCcgOiBcXCdpbmhlcml0XFwnIH1cIj48ZGl2IG5nLWlmPTo6aW5wdXRBcnJheS5TaG93SGVhZGVyIGNsYXNzPXJvdyBzdHlsZT17e2lucHV0QXJyYXkuUGFyYW1ldGVycy5IZWFkZXJDc3NTdHlsZX19PjxkaXYgY2xhc3M9XCJjb2wgbXktYXV0b1wiPjxzcGFuIHN0eWxlPVwiZm9udC1zaXplOiB7e2lucHV0QXJyYXkuUGFyYW1ldGVycy5IZWFkZXJGb250U2l6ZX19O2NvbG9yOiB7e2lucHV0QXJyYXkuUGFyYW1ldGVycy5IZWFkZXJGb250Q29sb3J9fVwiIGNsYXNzPXt7aW5wdXRBcnJheS5QYXJhbWV0ZXJzLkhlYWRlclRleHRBbGlnbn19Pnt7OjppbnB1dEFycmF5Lk5hbWV9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1hdXRvIG5nLWlmPWlucHV0QXJyYXkuUGFyYW1ldGVycy5DYW5Db2xsYXBzZT48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBwLTBcIiBzdHlsZT1ib3gtc2hhZG93Om5vbmU7IGRhdGEtdG9nZ2xlPWNvbGxhcHNlIGRhdGEtdGFyZ2V0PSNpc0NvbGxhcHNlSWRDb2x7ezo6aW5wdXRBcnJheS5QcmVzZW50YXRpb25JZH19LXt7cGFyYW1zfX0gYXJpYS1leHBhbmRlZD17e2lucHV0QXJyYXkuUGFyYW1ldGVycy5pc0NvbGxhcHNlZH19LXt7cGFyYW1zfX0gYXJpYS1jb250cm9scz1pc0NvbGxhcHNlZElke3s6OmlucHV0QXJyYXkuUHJlc2VudGF0aW9uSWR9fS17e3BhcmFtc319IG5nLWNsaWNrPVwiaW5wdXRBcnJheS5QYXJhbWV0ZXJzLmlzQ29sbGFwc2VkW2lucHV0QXJyYXkuUHJlc2VudGF0aW9uSWQrXFwnLVxcJytwYXJhbXNdID0gIWlucHV0QXJyYXkuUGFyYW1ldGVycy5pc0NvbGxhcHNlZFtpbnB1dEFycmF5LlByZXNlbnRhdGlvbklkK1xcJy1cXCcrcGFyYW1zXVwiPjxzcGFuIG5nLWNsYXNzPVwie1xcJ2ZhIGZhLWNoZXZyb24tdXBcXCc6IGlucHV0QXJyYXkuUGFyYW1ldGVycy5pc0NvbGxhcHNlZFtpbnB1dEFycmF5LlByZXNlbnRhdGlvbklkK1xcJy1cXCcrcGFyYW1zXSxcXCdmYSBmYS1jaGV2cm9uLWRvd25cXCc6ICFpbnB1dEFycmF5LlBhcmFtZXRlcnMuaXNDb2xsYXBzZWRbaW5wdXRBcnJheS5QcmVzZW50YXRpb25JZCtcXCctXFwnK3BhcmFtc10gfVwiPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IG5nLXN3aXRjaD06OmdyaWRUeXBlIGNsYXNzPWNvbGxhcHNlIG5nLWNsYXNzPVwie1xcJ3Nob3dcXCc6aW5wdXRBcnJheS5QYXJhbWV0ZXJzLmlzQ29sbGFwc2VkW2lucHV0QXJyYXkuUHJlc2VudGF0aW9uSWQrXFwnLVxcJytwYXJhbXNdIHx8IChpbnB1dEFycmF5LlBhcmFtZXRlcnMuaXNDb2xsYXBzZWQ9PXVuZGVmaW5lZCAmJiAhaW5wdXRBcnJheS5QYXJhbWV0ZXJzLkNhbkNvbGxhcHNlKSB9XCIgaWQ9aXNDb2xsYXBzZUlkQ29se3s6OmlucHV0QXJyYXkuUHJlc2VudGF0aW9uSWR9fS17e3BhcmFtc319IG5nLXNob3c9XCI6OmlucHV0QXJyYXkuU3RhdHVzPT1cXCdBY3RpdmVcXCdcIj48ZGl2IG5nLXN3aXRjaC13aGVuPXRhc2sga3QtdGFza2Zvcm1sYXlvdXQ+PC9kaXY+PGRpdiBuZy1zd2l0Y2gtd2hlbj1wYWdlIGt0LXBhZ2Vmb3JtbGF5b3V0PjwvZGl2PjxkaXYgbmctc3dpdGNoLWRlZmF1bHQga3QtZm9ybWxheW91dD48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RHcmlkQ29sdW1uUHJvcGVydGllcy5odG1sJywnPGRpdiBpZD1rdEdyaWRDb2x1bW5Qcm9wZXJ0aWVzPjxkaXYga3QtcHJvcGVydHktaGVhZGVyPjwvZGl2PjxkaXYgbmctY2xpY2s9XCJsb2NhbFZhcnMuc2hvd0Jhc2ljID0gIWxvY2FsVmFycy5zaG93QmFzaWNcIiBjbGFzcz1cImV4cGFuZC1wcm9wZXJ0eS1wYW5lbCB0YWcgbXktMSBweS0xXCIgZGF0YS10b2dnbGU9Y29sbGFwc2UgaHJlZj0jbWFpblByb3BlcnR5UGFuZWwgcm9sZT1idXR0b24gYXJpYS1leHBhbmRlZD10cnVlIGFyaWEtY29udHJvbHM9bWFpblByb3BlcnR5UGFuZWw+PHNwYW4gY2xhc3M9XCJjb2wgcC0wXCI+QmFzaWM8L3NwYW4+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PWxvY2FsVmFycy5zaG93QmFzaWMgY2xhc3M9XCJmYXMgZmEtYW5nbGUtZG93blwiPjwvaT4gPGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLXNob3c9IWxvY2FsVmFycy5zaG93QmFzaWMgY2xhc3M9XCJmYXMgZmEtYW5nbGUtdXBcIj48L2k+PC9kaXY+PGRpdiBjbGFzcz1cIm1iLTQgY29sbGFwc2Ugc2hvd1wiIGlkPW1haW5Qcm9wZXJ0eVBhbmVsPjxkaXYgY2xhc3M9XCJjdXN0b20tY29udHJvbCBjdXN0b20tY2hlY2tib3hcIj48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1jdXN0b20tY29udHJvbC1pbnB1dCBpZD1jYlNob3dGaWVsZCBuZy1tb2RlbD1mZC5TaG93RmllbGQ+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPWNiU2hvd0ZpZWxkPlNob3cgY29sdW1uPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLWNoZWNrYm94IG1iLTJcIj48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1jdXN0b20tY29udHJvbC1pbnB1dCBpZD1jYkNhbkNvbGxhcHNlIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuQ2FuQ29sbGFwc2U+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPWNiQ2FuQ29sbGFwc2U+Q29sdW1uIGNhbiBiZSBjb2xsYXBzZWQ8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9bWItMj48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+Q29sdW1uIHNpemUge3tmZC5TaXplWH19PC9sYWJlbD4gPGlucHV0IHR5cGU9cmFuZ2UgbWluPTAgbWF4PTI0IG5nLW1vZGVsPWZkLlNpemVYIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+TWVkaXVtIHNpemUgc2NyZWVuIHt7ZmQuUGFyYW1ldGVycy5TaXplWE1kfX08L2xhYmVsPiA8aW5wdXQgdHlwZT1yYW5nZSBtaW49MCBtYXg9MjQgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5TaXplWE1kIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+U21hbGwgc2l6ZSBzY3JlZW4ge3tmZC5QYXJhbWV0ZXJzLlNpemVYU219fTwvbGFiZWw+IDxpbnB1dCB0eXBlPXJhbmdlIG1pbj0wIG1heD0yNCBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlNpemVYU20gY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5FeHRyYSBzbWFsbCBzaXplIHNjcmVlbiB7e2ZkLlBhcmFtZXRlcnMuU2l6ZVhYc319PC9sYWJlbD4gPGlucHV0IHR5cGU9cmFuZ2UgbWluPTAgbWF4PTI0IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuU2l6ZVhYcyBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLWNoZWNrYm94XCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgaWQ9Y2JBdXRvU2l6ZSBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkF1dG9TaXplPiA8bGFiZWwgY2xhc3M9XCJjdXN0b20tY29udHJvbC1sYWJlbCBsYWJlbC14c1wiIGZvcj1jYkF1dG9TaXplPkF1dG8gc2l6ZTwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1weS0xPjxsYWJlbCBjbGFzcz1cInB5LTEgZC1ibG9jayBsYWJlbC14cyB0ZXh0LW11dGVkXCI+QmFja2dyb3VuZCBjb2xvcjwvbGFiZWw+PGRpdiBjbGFzcz1tYi0xPjxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBjb2xvci1waWNrZXIgY29sb3ItcGlja2VyLXNob3ctY2FuY2VsLWJ1dHRvbj10cnVlIG5nLXN0eWxlPXtiYWNrZ3JvdW5kOmZkLlBhcmFtZXRlcnMuQmFja2dyb3VuZENvbG9yQX0gY29sb3ItcGlja2VyLWNhbmNlbC1idXR0b24tY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXhzXCIgY29sb3ItcGlja2VyLXBvc2l0aW9uPWxlZnQgY29sb3ItcGlja2VyLW1vZGVsPWZkLlBhcmFtZXRlcnMuQmFja2dyb3VuZENvbG9yQT48L2Rpdj48bGFiZWwgY2xhc3M9XCJteS0xIGxhYmVsLXhzIHRleHQtbXV0ZWRcIj5DdXN0b20gQ1NTPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLmN1c3RvbUNTUyBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48L2Rpdj48YnV0dG9uIG5nLWNsYXNzIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4td2FybmluZ1wiIHRpdGxlPVwiRGVsZXRlIGNvbnRhaW5lclwiIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5nc3J2Y19jaGFuZ2VDb25maXJtRGVsZXRlRWxlbWVudCgpPjxpIGNsYXNzPVwiZmEgZmEtdHJhc2ggdGV4dC1kYXJrIG1yLTFcIj48L2k+RGVsZXRlIGNvbHVtbjwvYnV0dG9uPjxkaXYgY2xhc3M9bXktMT48ZGl2IG5nLWlmPWZkLmxvY2FsVmFycy5nc3J2Y19nZXRDb25maXJtRGVsZXRlRWxlbWVudCgpIGNsYXNzPWNhcmQ+PGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHAtMCBweC0xIGJnLWxpZ2h0XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1leGNsYW1hdGlvbi10cmlhbmdsZSB0ZXh0LWRhbmdlclwiPjxzcGFuIGNsYXNzPVwibWwtMiBzbWFsbFwiPkRlbGV0ZSBjb2x1bW4gY29uZmlybWF0aW9uPC9zcGFuPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPW15LTE+PGRpdiBjbGFzcz1cIm1sLTEgc21hbGwgYm9sZCB0ZXh0LWRhcmtcIj5DbGljayBDb25maXJtIHRvIGRlbGV0ZSBjb2x1bW4hPC9kaXY+PGRpdiBjbGFzcz1cIm1sLTEgc21hbGwgdGV4dC1kYXJrXCI+VGhpcyBhY3Rpb24gbWF5IHJlc3VsdCBpbiBhIGxvc3Mgb2YgZGF0YSE8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXAtMT48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tZGFuZ2VyXCIgdGl0bGU9Q29uZmlybSBuZy1jbGljaz1mZC5sb2NhbFZhcnMuY29uZmlybUFuZERlbGV0ZUVsZW1lbnQoZmFsc2UsZmQpPkNvbmZpcm0gPGkgY2xhc3M9XCJtbC0yIGZhIGZhLWNoZWNrXCI+PC9pPjwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWlmPVwiZmQubGF5b3V0Lmxlbmd0aCA+IDBcIiBuZy1jbGljaz1mZC5sb2NhbFZhcnMuZ3NydmNfc2V0Q29uZmlybURlbGV0ZUVsZW1lbnQoZmFsc2UpIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tbGluayB0ZXh0LW11dGVkIG1sLWF1dG9cIj5DYW5jZWw8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPWZhbHNlPjxsYWJlbD5UYWIgaW5kZXg8L2xhYmVsPiA8aW5wdXQgdHlwZT1udW1iZXIgcGxhY2Vob2xkZXI9XCJ0YWIgaW5kZXhcIiBjbGFzcz1mb3JtLWNvbnRyb2wgbmctbW9kZWw9ZmQuVGFiSW5kZXg+PC9kaXY+PC9kaXY+PGhyIGNsYXNzPW15LTA+PGRpdiBuZy1jbGljaz1cImxvY2FsVmFycy5zaG93SGVhZGVyID0gIWxvY2FsVmFycy5zaG93SGVhZGVyXCIgY2xhc3M9XCJleHBhbmQtcHJvcGVydHktcGFuZWwgdGFnIG15LTEgcHktMVwiIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIGhyZWY9I2hlYWRlclByb3BlcnR5UGFuZWwgcm9sZT1idXR0b24gYXJpYS1leHBhbmRlZD10cnVlIGFyaWEtY29udHJvbHM9aGVhZGVyUHJvcGVydHlQYW5lbD48c3BhbiBjbGFzcz1cImNvbCBwLTBcIj5IRUFERVI8L3NwYW4+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PWxvY2FsVmFycy5zaG93SGVhZGVyIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLWRvd25cIj48L2k+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PSFsb2NhbFZhcnMuc2hvd0hlYWRlciBjbGFzcz1cImZhcyBmYS1hbmdsZS11cFwiPjwvaT48L2Rpdj48ZGl2IGNsYXNzPVwibWItNCBjb2xsYXBzZSBzaG93XCIgaWQ9aGVhZGVyUHJvcGVydHlQYW5lbD48ZGl2IGNsYXNzPVwiY2hlY2tib3ggbXktMVwiPjxsYWJlbD48aW5wdXQgdHlwZT1jaGVja2JveCBuZy1tb2RlbD1mZC5TaG93SGVhZGVyPiBTaG93IGhlYWRlcjwvbGFiZWw+PC9kaXY+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkhlYWRlciB0ZXh0PC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5OYW1lPjxkaXYgY2xhc3M9XCJjb2wtMjQgcHktMSBweC0wXCI+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkZvbnQgc2l6ZTwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5IZWFkZXJGb250U2l6ZSBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTI0IHB5LTEgcHgtMFwiPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5Gb250IGNvbG9yPC9sYWJlbD48aW5wdXQgY29sb3ItcGlja2VyIGNvbG9yLXBpY2tlci1zaG93LWNhbmNlbC1idXR0b249dHJ1ZSBjb2xvci1waWNrZXItbW9kZWw9ZmQuUGFyYW1ldGVycy5IZWFkZXJGb250Q29sb3Igbmctc3R5bGU9e2JhY2tncm91bmQ6ZmQuUGFyYW1ldGVycy5IZWFkZXJGb250Q29sb3J9IGNvbG9yLXBpY2tlci1jYW5jZWwtYnV0dG9uLWNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi14c1wiIGNvbG9yLXBpY2tlci1wb3NpdGlvbj1sZWZ0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiPjwvZGl2PjxsYWJlbCBjbGFzcz1cIm0tMSBsYWJlbC14cyB0ZXh0LW11dGVkXCI+SGVhZGVyIENTUyBzdHlsZTwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5IZWFkZXJDc3NTdHlsZSBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48ZGl2IGNsYXNzPVwiY29sLTI0IHB5LTEgcHgtMFwiPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5CYWNrZ3JvdW5kIGNvbG9yPC9sYWJlbD48aW5wdXQgY29sb3ItcGlja2VyIGNvbG9yLXBpY2tlci1zaG93LWNhbmNlbC1idXR0b249dHJ1ZSBjb2xvci1waWNrZXItbW9kZWw9ZmQuUGFyYW1ldGVycy5IZWFkZXJCYWNrZ3JvdW5kQ29sb3Igbmctc3R5bGU9XCJ7YmFja2dyb3VuZDogZmQuUGFyYW1ldGVycy5IZWFkZXJCYWNrZ3JvdW5kQ29sb3J9XCIgY29sb3ItcGlja2VyLWNhbmNlbC1idXR0b24tY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXhzXCIgY29sb3ItcGlja2VyLXBvc2l0aW9uPWxlZnQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0yNCBweS0xIHB4LTBcIj48bGFiZWwgY2xhc3M9XCJjb2wtMTIgY3VzdG9tLWNvbnRyb2wgY3VzdG9tLWNoZWNrYm94XCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgaWQ9Y2JGb250Qm9sZCBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkhlYWRlckZvbnRCb2xkPiA8bGFiZWwgY2xhc3M9XCJjdXN0b20tY29udHJvbC1sYWJlbCBsYWJlbC14c1wiIGZvcj1jYkZvbnRCb2xkPkJvbGQ8L2xhYmVsPjwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTAgbXQtMVwiPjxkaXYgY2xhc3M9XCJjb2wtMjQgcC0wXCI+PGRpdiBjbGFzcz1cIm1iLTEgc21hbGwgYm9sZFwiPlRleHQgQWxpZ248L2Rpdj48ZGl2IGNsYXNzPWJ0bi1ncm91cD48bGFiZWwgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgYnRuLXNtIG0tMVwiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuSGVhZGVyVGV4dEFsaWduIHVpYi1idG4tcmFkaW89XCJcXCdqdXN0aWZ5LWNvbnRlbnQtc3RhcnRcXCdcIiB1bmNoZWNrYWJsZT48c3BhbiBjbGFzcz1cImZhIGZhLWFsaWduLWxlZnRcIj48L3NwYW4+PC9sYWJlbD4gPGxhYmVsIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIGJ0bi1zbSBtLTFcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkhlYWRlclRleHRBbGlnbiB1aWItYnRuLXJhZGlvPVwiXFwnanVzdGlmeS1jb250ZW50LWNlbnRlclxcJ1wiIHVuY2hlY2thYmxlPjxzcGFuIGNsYXNzPVwiZmEgZmEtYWxpZ24tY2VudGVyXCI+PC9zcGFuPjwvbGFiZWw+IDxsYWJlbCBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBidG4tc20gbS0xXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5IZWFkZXJUZXh0QWxpZ24gdWliLWJ0bi1yYWRpbz1cIlxcJ2p1c3RpZnktY29udGVudC1lbmRcXCdcIiB1aWItdW5jaGVja2FibGU9dW5jaGVja2FibGU+PHNwYW4gY2xhc3M9XCJmYSBmYS1hbGlnbi1yaWdodFwiPjwvc3Bhbj48L2xhYmVsPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgbXQtMSBwLTBcIj48ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLWNoZWNrYm94XCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgaWQ9Y2JTaG93QXNMaW5rIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuU2hvd0FzTGluaz4gPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgbGFiZWwteHNcIiBmb3I9Y2JTaG93QXNMaW5rPlNob3cgYXMgbGluazwvbGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCBwLTBcIiBuZy1zaG93PWZkLlBhcmFtZXRlcnMuU2hvd0FzTGluaz48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+TGluayBVUkw8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuTGlua1VybCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48L2Rpdj48ZGl2IGNsYXNzPVwiZXhwYW5kLXByb3BlcnR5LXBhbmVsIHRhZyBweS0zXCIgZGF0YS10b2dnbGU9Y29sbGFwc2UgaHJlZj0jbGF5b3V0Rm9udHMgcm9sZT1idXR0b24gYXJpYS1leHBhbmRlZD10cnVlIGFyaWEtY29udHJvbHM9ZXh0ZW5kZWRQYW5lbFNoYWRvdz48c3BhbiBjbGFzcz1cImNvbCBwLTBcIj5Gb250czwvc3Bhbj4gPGkgY2xhc3M9XCJmYXMgZmEtZm9udCBmYS1sZ1wiPjwvaT48L2Rpdj48ZGl2IGNsYXNzPVwibWItNCBtdC1uMiBjb2xsYXBzZVwiIGlkPWxheW91dEZvbnRzIHN0eWxlPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIiBmb3I9c2V0Rm9udFVuaXRzPkZvbnQgVW5pdHM8L2xhYmVsPjxzZWxlY3QgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5Gb250VW5pdHMgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgaWQ9c2V0Rm9udFVuaXRzPjxvcHRpb24+cHg8L29wdGlvbj48b3B0aW9uPmVtPC9vcHRpb24+PG9wdGlvbj4lPC9vcHRpb24+PC9zZWxlY3Q+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkZvbnQgU2l6ZTwvbGFiZWw+IDxpbnB1dCB0eXBlPW51bWJlciBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkZvbnRTaXplIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+Rm9udCBDb2xvcjwvbGFiZWw+IDxpbnB1dCB0eXBlPWNvbG9yIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuRm9udENvbG9yIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiPjwvZGl2PjwvZGl2PjxociBjbGFzcz1teS0wPjxkaXYgY2xhc3M9XCJleHBhbmQtcHJvcGVydHktcGFuZWwgdGFnIHB5LTNcIiBkYXRhLXRvZ2dsZT1jb2xsYXBzZSBocmVmPSNsYXlvdXRQYW5lbCByb2xlPWJ1dHRvbiBhcmlhLWV4cGFuZGVkPXRydWUgYXJpYS1jb250cm9scz1sYXlvdXRQYW5lbD48c3BhbiBjbGFzcz1cImNvbCBwLTBcIj5Cb3JkZXJzPC9zcGFuPiA8aSBjbGFzcz1cImZhciBmYS1zcXVhcmUgZmEtbGdcIj48L2k+PC9kaXY+PGRpdiBjbGFzcz1cIm1iLTQgbXQtbjIgY29sbGFwc2VcIiBpZD1sYXlvdXRQYW5lbCBzdHlsZT48ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xXCI+PGRpdiBjbGFzcz1wLTM+PHN2ZyB3aWR0aD0xMDAlIHZpZXdib3g9XCItMTAwIDAgMTIwMCAxMDAwXCIgcHJlc2VydmVhc3BlY3RyYXRpb249dHJ1ZT48cG9seWdvbiBzdHJva2Utd2lkdGg9MSBzdHJva2UtZGFzaGFycmF5PVwiMSAxXCIgc3R5bGU9XCJmaWxsOiAjZjFmMWYxO3N0cm9rZTogI2JiYjtcIiBwb2ludHM9XCIwLDAgMTAwMCwwIDEwMDAsMTAwMCAwLDEwMDBcIj48L3BvbHlnb24+PHBvbHlnb24gY2xhc3M9Y2lyY2xlY2xhc3Mgc3Ryb2tlLXdpZHRoPTEgc3Ryb2tlLWRhc2hhcnJheT1cIjIgMVwiIHN0eWxlPVwiZmlsbDogd2hpdGU7c3Ryb2tlOiAjYmJiO1wiIHBvaW50cz1cIjQwMCw0MDAgNjAwLDQwMCA2MDAsNjAwIDQwMCw2MDBcIj48L3BvbHlnb24+PHBvbHlnb24gY2xhc3M9Qmx1ZVdoZW5Ib3ZlciBuZy1jbGljaz1mZC5zZWxlY3RCb3JkZXIoZmQuUGFyYW1ldGVycy5ib3JkZXIubGVmdCk7IG5nLXN0eWxlPVwie1xcJ2ZpbGxcXCc6IGZkLnNlbGVjdGVkQm9yZGVyPT1mZC5QYXJhbWV0ZXJzLmJvcmRlci5sZWZ0ID8gXFwncmdiKDEzNSwgMjA2LCAyMzUpXFwnIDogXFwncmdiKDIxNiwgMjE2LCAyMTYpXFwnfVwiIHN0eWxlPVwic3Ryb2tlOiByZ2IoMCwgMCwgMCk7XCIgcG9pbnRzPVwiMTUwLDE1MCAyMDAsMjAwIDIwMCw4MDAgMTUwLDg1MFwiPjwvcG9seWdvbj48dGl0bGU+TGVmdCBCb3JkZXI8L3RpdGxlPjxwb2x5Z29uIGNsYXNzPUJsdWVXaGVuSG92ZXIgbmctY2xpY2s9ZmQuc2VsZWN0Qm9yZGVyKGZkLlBhcmFtZXRlcnMuYm9yZGVyLnJpZ2h0KTsgbmctc3R5bGU9XCJ7XFwnZmlsbFxcJzogZmQuc2VsZWN0ZWRCb3JkZXI9PWZkLlBhcmFtZXRlcnMuYm9yZGVyLnJpZ2h0ID8gXFwncmdiKDEzNSwgMjA2LCAyMzUpXFwnIDogXFwncmdiKDIxNiwgMjE2LCAyMTYpXFwnfVwiIHN0eWxlPVwic3Ryb2tlOiByZ2IoMCwgMCwgMCk7XCIgcG9pbnRzPVwiODUwLDE1MCA4MDAsMjAwIDgwMCw4MDAgODUwLDg1MFwiPjwvcG9seWdvbj48dGl0bGU+UmlnaHQgQm9yZGVyPC90aXRsZT48cG9seWdvbiBjbGFzcz1CbHVlV2hlbkhvdmVyIG5nLWNsaWNrPWZkLnNlbGVjdEJvcmRlcihmZC5QYXJhbWV0ZXJzLmJvcmRlci50b3ApOyBuZy1zdHlsZT1cIntcXCdmaWxsXFwnOiBmZC5zZWxlY3RlZEJvcmRlcj09ZmQuUGFyYW1ldGVycy5ib3JkZXIudG9wID8gXFwncmdiKDEzNSwgMjA2LCAyMzUpXFwnIDogXFwncmdiKDIxNiwgMjE2LCAyMTYpXFwnfVwiIHN0eWxlPVwic3Ryb2tlOiByZ2IoMCwgMCwgMCk7XCIgcG9pbnRzPVwiMTUwLDE1MCAyMDAsMjAwIDgwMCwyMDAgODUwLDE1MFwiPjwvcG9seWdvbj48dGl0bGU+VG9wIEJvcmRlcjwvdGl0bGU+PHBvbHlnb24gY2xhc3M9Qmx1ZVdoZW5Ib3ZlciBuZy1jbGljaz1mZC5zZWxlY3RCb3JkZXIoZmQuUGFyYW1ldGVycy5ib3JkZXIuYm90dG9tKTsgbmctc3R5bGU9XCJ7XFwnZmlsbFxcJzogZmQuc2VsZWN0ZWRCb3JkZXI9PWZkLlBhcmFtZXRlcnMuYm9yZGVyLmJvdHRvbSA/IFxcJ3JnYigxMzUsIDIwNiwgMjM1KVxcJyA6IFxcJ3JnYigyMTYsIDIxNiwgMjE2KVxcJ31cIiBzdHlsZT1cInN0cm9rZTogcmdiKDAsIDAsIDApO1wiIHBvaW50cz1cIjE1MCw4NTAgMjAwLDgwMCA4MDAsODAwIDg1MCw4NTBcIj48L3BvbHlnb24+PHRpdGxlPkJvdHRvbSBCb3JkZXI8L3RpdGxlPjwvc3ZnPjwvZGl2PjxkaXYgY2xhc3M9dGV4dC1jZW50ZXI+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiIGZvcj1zZXRFbGVtZW50V2lkdGg+U2VsZWN0ZWQgYm9yZGVyOiB7e2ZkLnNlbGVjdGVkQm9yZGVyLm5hbWV9fTwvbGFiZWw+PC9kaXY+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiIGZvcj1zZXRFbGVtZW50V2lkdGg+U2V0IGJvcmRlciBzdHlsZTwvbGFiZWw+PHNlbGVjdCBuZy1tb2RlbD1mZC5zZWxlY3RlZEJvcmRlci5zdHlsZSBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBpZD1zZXRFbGVtZW50V2lkdGg+PG9wdGlvbiBkZWZhdWx0PnNvbGlkPC9vcHRpb24+PG9wdGlvbj5kYXNoZWQ8L29wdGlvbj48b3B0aW9uPmRvdHRlZDwvb3B0aW9uPjwvc2VsZWN0PjxkaXYgY2xhc3M+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYlJvdW5kZWRCb3JkZXJ7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JSb3VuZGVkQm9yZGVye3tmZC5QcmVzZW50YXRpb25JZH19IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuUm91bmRlZEJvcmRlcnMgbmctY2hlY2tlZD1mZC5QYXJhbWV0ZXJzLlJvdW5kZWRCb3JkZXJzPiBSb3VuZGVkPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPW1iLTI+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPlNldCBjb2xvcjwvbGFiZWw+IDxpbnB1dCB0eXBlPWNvbG9yIG5nLW1vZGVsPWZkLnNlbGVjdGVkQm9yZGVyLmNvbG9yIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiPjwvZGl2PjxkaXYgY2xhc3M9bWItMj48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+U2V0IHdpZHRoPC9sYWJlbD4gPGlucHV0IHR5cGU9bnVtYmVyIG1pbj0wIG1heD0xNSBuZy1tb2RlbD1mZC5zZWxlY3RlZEJvcmRlci53aWR0aCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48L2Rpdj48ZGl2IGNsYXNzPW1iLTI+PGxhYmVsIGNsYXNzPWxhYmVsLXhzPlByZXZpZXc8L2xhYmVsPjxkaXYgY2xhc3M9XCJiZy13aGl0ZSBwLTQgbS0xXCIgc3R5bGU+PGRpdiBjbGFzcz1iZy1ncmF5LTEwMCBuZy1zdHlsZT1cIntcXCdib3JkZXItbGVmdC1zdHlsZVxcJzpmZC5QYXJhbWV0ZXJzLmJvcmRlci5sZWZ0LnN0eWxlLFxcJ2JvcmRlci1sZWZ0LXdpZHRoXFwnOmZkLlBhcmFtZXRlcnMuYm9yZGVyLmxlZnQud2lkdGgsXFwnYm9yZGVyLWxlZnQtY29sb3JcXCc6ZmQuUGFyYW1ldGVycy5ib3JkZXIubGVmdC5jb2xvciwgXFwnYm9yZGVyLXJpZ2h0LXN0eWxlXFwnOmZkLlBhcmFtZXRlcnMuYm9yZGVyLnJpZ2h0LnN0eWxlLFxcJ2JvcmRlci1yaWdodC13aWR0aFxcJzpmZC5QYXJhbWV0ZXJzLmJvcmRlci5yaWdodC53aWR0aCxcXCdib3JkZXItcmlnaHQtY29sb3JcXCc6ZmQuUGFyYW1ldGVycy5ib3JkZXIucmlnaHQuY29sb3IsIFxcJ2JvcmRlci10b3Atc3R5bGVcXCc6ZmQuUGFyYW1ldGVycy5ib3JkZXIudG9wLnN0eWxlLFxcJ2JvcmRlci10b3Atd2lkdGhcXCc6ZmQuUGFyYW1ldGVycy5ib3JkZXIudG9wLndpZHRoLFxcJ2JvcmRlci10b3AtY29sb3JcXCc6ZmQuUGFyYW1ldGVycy5ib3JkZXIudG9wLmNvbG9yLCBcXCdib3JkZXItYm90dG9tLXN0eWxlXFwnOmZkLlBhcmFtZXRlcnMuYm9yZGVyLmJvdHRvbS5zdHlsZSxcXCdib3JkZXItYm90dG9tLXdpZHRoXFwnOmZkLlBhcmFtZXRlcnMuYm9yZGVyLmJvdHRvbS53aWR0aCxcXCdib3JkZXItYm90dG9tLWNvbG9yXFwnOmZkLlBhcmFtZXRlcnMuYm9yZGVyLmJvdHRvbS5jb2xvciB9O1wiIHN0eWxlPVwibWluLWhlaWdodDogNTBweDtcIj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48aHIgY2xhc3M9bXktMD48ZGl2IGNsYXNzPVwiZXhwYW5kLXByb3BlcnR5LXBhbmVsIHRhZyBweS0zXCIgZGF0YS10b2dnbGU9Y29sbGFwc2UgaHJlZj0jbGF5b3V0MyByb2xlPWJ1dHRvbiBhcmlhLWV4cGFuZGVkPXRydWUgYXJpYS1jb250cm9scz1leHRlbmRlZFBhbmVsPjxzcGFuIGNsYXNzPVwiY29sIHAtMFwiPkxheW91dDwvc3Bhbj4gPGkgY2xhc3M9XCJmYSBmYS1sYXllci1ncm91cCBmYS1sZ1wiPjwvaT48L2Rpdj48ZGl2IGNsYXNzPVwibWItNCBtdC1uMiBjb2xsYXBzZVwiIGlkPWxheW91dDMgc3R5bGU+PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMVwiPjxkaXYgY2xhc3M9cC0zPjxzdmcgd2lkdGg9MTAwJSB2aWV3Ym94PVwiLTEwMCAwIDEyMDAgMTAwMFwiIHByZXNlcnZlYXNwZWN0cmF0aW9uPXRydWU+PHBvbHlnb24gc3Ryb2tlLXdpZHRoPTYgc3Ryb2tlLWRhc2hhcnJheT1cIjQgNFwiIHN0eWxlPVwiZmlsbDogI2YxZjFmMTtzdHJva2U6ICNiYmI7XCIgcG9pbnRzPVwiMCwwIDEwMDAsMCAxMDAwLDEwMDAgMCwxMDAwXCI+PC9wb2x5Z29uPjxwb2x5Z29uIGNsYXNzPWNpcmNsZWNsYXNzIHN0cm9rZS13aWR0aD0xIHN0cm9rZS1kYXNoYXJyYXk9XCIyIDFcIiBzdHlsZT1cImZpbGw6IHdoaXRlO3N0cm9rZTogI2JiYjtcIiBwb2ludHM9XCI0MDAsNDAwIDYwMCw0MDAgNjAwLDYwMCA0MDAsNjAwXCI+PC9wb2x5Z29uPjxwb2x5Z29uIHN0eWxlPVwiZmlsbDogcmdiKDEzNSwgMjA2LCAyMzUpO1wiIHBvaW50cz1cIjE1MCwxNTAgMjAwLDIwMCAyMDAsODAwIDE1MCw4NTBcIj48L3BvbHlnb24+PHBvbHlnb24gc3R5bGU9XCJmaWxsOiByZ2IoMTM1LCAyMDYsIDIzNSk7XCIgcG9pbnRzPVwiODUwLDE1MCA4MDAsMjAwIDgwMCw4MDAgODUwLDg1MFwiPjwvcG9seWdvbj48cG9seWdvbiBzdHlsZT1cImZpbGw6IHJnYigxMzUsIDIwNiwgMjM1KTtcIiBwb2ludHM9XCIxNTAsMTUwIDIwMCwyMDAgODAwLDIwMCA4NTAsMTUwXCI+PC9wb2x5Z29uPjxwb2x5Z29uIHN0eWxlPVwiZmlsbDogcmdiKDEzNSwgMjA2LCAyMzUpO1wiIHBvaW50cz1cIjE1MCw4NTAgMjAwLDgwMCA4MDAsODAwIDg1MCw4NTBcIj48L3BvbHlnb24+PHN2ZyB4PTIwIHk9NDUwIHN0eWxlPWN1cnNvcjpwb2ludGVyIG5nLXN0eWxlPVwie1xcJ2ZpbGxcXCc6ZmQuc2VsZWN0ZWQ9PWZkLlBhcmFtZXRlcnMubWFyZ2luLmxlZnQgPyBcXCdibHVlXFwnOlxcJ2dyYXlcXCd9XCIgbmctY2xpY2s9ZmQuc2VsZWN0KGZkLlBhcmFtZXRlcnMubWFyZ2luLmxlZnQpIGNsYXNzPWhvdmVyUGFyZW50IGlkPWxlZnRtYXJnaW4+PHJlY3Qgd2lkdGg9MTUwIGhlaWdodD0xNTAgc3R5bGU9ZmlsbDp0cmFuc3BhcmVudDs+PC9yZWN0PjxwYXRoIGNsYXNzPWJsdWVPbkhvdmVyIHRyYW5zZm9ybT1cInNjYWxlKDAuMjUpIHRyYW5zbGF0ZSgwLDEwMClcIiBkPVwibSA0ODcuOTcxLDIzNS45OTMgLTg1LjQ2OCwtODUuNDY0IGMgLTUuMjIsLTUuMjI4IC0xNC4zOTYsLTUuMjI4IC0xOS42MTYsMCBsIC03LjQ1Miw3LjQ0OCBjIC01LjQsNS40MDggLTUuNCwxNC41NDggMC4wMDQsMTkuOTU2IGwgNDguNDU2LDQ4Ljc5MiBIIDY3LjkxMSBsIDQ4LjY5NiwtNDkuMDIgYyA1LjQwOCwtNS40MTIgNS40MDgsLTE0LjM4NCAwLC0xOS43OTYgbCAtNy40NDQsLTcuNTI0IGMgLTUuMjMyLC01LjIzMiAtMTQuNDA0LC01LjI3MiAtMTkuNjI0LC0wLjA0NCBMIDQuMDM1LDIzNS44MTMgYyAtMi42NzIsMi42NzYgLTQuMSw2LjI0IC00LjAzMiw5LjkxNiAtMC4wNzIsMy44MiAxLjM2LDcuMzk2IDQuMDMyLDEwLjA2OCBsIDg1LjQ2NCw4NS40NjQgYyA1LjIyOCw1LjIzMiAxNC4zOTYsNS4yMjggMTkuNjIsMCBsIDcuNDQ0LC03LjQ0OCBjIDUuNDE2LC01LjQxNiA1LjQxNiwtMTMuNzg0IDAsLTE5LjE5MiBMIDY2LjcwNywyNjUuMTg1IGggMzU4Ljc5MiBsIC01MC4wOTYsNDkuNjY4IGMgLTIuNjEyLDIuNjA0IC00LjA1Miw1Ljg4NCAtNC4wNTIsOS41OTIgMCwzLjcwOCAxLjQzNiw3LjA4OCA0LjA1Miw5LjcgbCA3LjQ0NCw3LjM5NiBjIDIuNjE2LDIuNjEyIDYuMSw0LjAyIDkuODEyLDQuMDIgMy43MTYsMCA3LjE5NiwtMS40NDggOS44MTIsLTQuMDYgbCA4NS41LC04NS41MDggYyAyLjY2NCwtMi42NjggNC4wOTYsLTYuMjQ4IDQuMDI4LC05LjkyNCAwLjA3NiwtMy44MjQgLTEuMzYsLTcuNDA0IC00LjAyOCwtMTAuMDc2IHpcIj48L3BhdGg+PHN2ZyBjbGFzcz1ibHVlT25Ib3ZlciB4PS0xNSB5PS0zMCB3aWR0aD0xNTAgaGVpZ2h0PTEyMD48dGV4dCBuZy1oaWRlPWZkLlBhcmFtZXRlcnMubWFyZ2luLmxlZnQuYXV0byB4PTUwJSB5PTUwJSBmb250LXNpemU9NjAgZG9taW5hbnQtYmFzZWxpbmU9bWlkZGxlIHRleHQtYW5jaG9yPW1pZGRsZT57e2ZkLlBhcmFtZXRlcnMubWFyZ2luLmxlZnQudmFsdWV9fXt7ZmQuUGFyYW1ldGVycy5tYXJnaW4ubGVmdC51bml0c319PC90ZXh0Pjx0ZXh0IG5nLXNob3c9ZmQuUGFyYW1ldGVycy5tYXJnaW4ubGVmdC5hdXRvIHg9NTAlIHk9NTAlIGZvbnQtc2l6ZT02MCBkb21pbmFudC1iYXNlbGluZT1taWRkbGUgdGV4dC1hbmNob3I9bWlkZGxlPmF1dG88L3RleHQ+PC9zdmc+PC9zdmc+PHN2ZyBpZD1yaWdodG1hcmdpbiB4PTg2MCB5PTQ1MCBjbGFzcz1ob3ZlclBhcmVudCBzdHlsZT1jdXJzb3I6cG9pbnRlciBuZy1zdHlsZT1cIntcXCdmaWxsXFwnOmZkLnNlbGVjdGVkPT1mZC5QYXJhbWV0ZXJzLm1hcmdpbi5yaWdodCA/IFxcJ2JsdWVcXCc6XFwnZ3JheVxcJ31cIiBuZy1jbGljaz1mZC5zZWxlY3QoZmQuUGFyYW1ldGVycy5tYXJnaW4ucmlnaHQpPjxyZWN0IHdpZHRoPTE1MCBoZWlnaHQ9MTUwIHN0eWxlPWZpbGw6dHJhbnNwYXJlbnQ7PjwvcmVjdD48cGF0aCBjbGFzcz1ibHVlT25Ib3ZlciB0cmFuc2Zvcm09XCJzY2FsZSgwLjI1KSB0cmFuc2xhdGUoMCwxMDApXCIgZD1cIm0gNDg3Ljk3MSwyMzUuOTkzIC04NS40NjgsLTg1LjQ2NCBjIC01LjIyLC01LjIyOCAtMTQuMzk2LC01LjIyOCAtMTkuNjE2LDAgbCAtNy40NTIsNy40NDggYyAtNS40LDUuNDA4IC01LjQsMTQuNTQ4IDAuMDA0LDE5Ljk1NiBsIDQ4LjQ1Niw0OC43OTIgSCA2Ny45MTEgbCA0OC42OTYsLTQ5LjAyIGMgNS40MDgsLTUuNDEyIDUuNDA4LC0xNC4zODQgMCwtMTkuNzk2IGwgLTcuNDQ0LC03LjUyNCBjIC01LjIzMiwtNS4yMzIgLTE0LjQwNCwtNS4yNzIgLTE5LjYyNCwtMC4wNDQgTCA0LjAzNSwyMzUuODEzIGMgLTIuNjcyLDIuNjc2IC00LjEsNi4yNCAtNC4wMzIsOS45MTYgLTAuMDcyLDMuODIgMS4zNiw3LjM5NiA0LjAzMiwxMC4wNjggbCA4NS40NjQsODUuNDY0IGMgNS4yMjgsNS4yMzIgMTQuMzk2LDUuMjI4IDE5LjYyLDAgbCA3LjQ0NCwtNy40NDggYyA1LjQxNiwtNS40MTYgNS40MTYsLTEzLjc4NCAwLC0xOS4xOTIgTCA2Ni43MDcsMjY1LjE4NSBoIDM1OC43OTIgbCAtNTAuMDk2LDQ5LjY2OCBjIC0yLjYxMiwyLjYwNCAtNC4wNTIsNS44ODQgLTQuMDUyLDkuNTkyIDAsMy43MDggMS40MzYsNy4wODggNC4wNTIsOS43IGwgNy40NDQsNy4zOTYgYyAyLjYxNiwyLjYxMiA2LjEsNC4wMiA5LjgxMiw0LjAyIDMuNzE2LDAgNy4xOTYsLTEuNDQ4IDkuODEyLC00LjA2IGwgODUuNSwtODUuNTA4IGMgMi42NjQsLTIuNjY4IDQuMDk2LC02LjI0OCA0LjAyOCwtOS45MjQgMC4wNzYsLTMuODI0IC0xLjM2LC03LjQwNCAtNC4wMjgsLTEwLjA3NiB6XCI+PC9wYXRoPjxzdmcgY2xhc3M9Ymx1ZU9uSG92ZXIgeD0tMTAgeT0tMzAgd2lkdGg9MTUwIGhlaWdodD0xMjA+PHRleHQgbmctaGlkZT1mZC5QYXJhbWV0ZXJzLm1hcmdpbi5yaWdodC5hdXRvIHg9NTAlIHk9NTAlIGZvbnQtc2l6ZT02MCBkb21pbmFudC1iYXNlbGluZT1taWRkbGUgdGV4dC1hbmNob3I9bWlkZGxlPnt7ZmQuUGFyYW1ldGVycy5tYXJnaW4ucmlnaHQudmFsdWV9fXt7ZmQuUGFyYW1ldGVycy5tYXJnaW4ucmlnaHQudW5pdHN9fTwvdGV4dD48dGV4dCBuZy1zaG93PWZkLlBhcmFtZXRlcnMubWFyZ2luLnJpZ2h0LmF1dG8geD01MCUgeT01MCUgZm9udC1zaXplPTYwIGRvbWluYW50LWJhc2VsaW5lPW1pZGRsZSB0ZXh0LWFuY2hvcj1taWRkbGU+YXV0bzwvdGV4dD48L3N2Zz48L3N2Zz48c3ZnIGlkPXRvcG1hcmdpbiB4PTQ1MCB5PTIwIGNsYXNzPWhvdmVyUGFyZW50IHN0eWxlPWN1cnNvcjpwb2ludGVyIG5nLXN0eWxlPVwie1xcJ2ZpbGxcXCc6ZmQuc2VsZWN0ZWQ9PWZkLlBhcmFtZXRlcnMubWFyZ2luLnRvcCA/IFxcJ2JsdWVcXCc6XFwnZ3JheVxcJ31cIiBuZy1jbGljaz1mZC5zZWxlY3QoZmQuUGFyYW1ldGVycy5tYXJnaW4udG9wKT48cmVjdCB3aWR0aD0xNTAgaGVpZ2h0PTE1MCBzdHlsZT1maWxsOnRyYW5zcGFyZW50Oz48L3JlY3Q+PHBhdGggY2xhc3M9Ymx1ZU9uSG92ZXIgdHJhbnNmb3JtPVwic2NhbGUoMC4yNSkgcm90YXRlKDkwLDIwMCwyMDApXCIgZD1cIm0gNDg3Ljk3MSwyMzUuOTkzIC04NS40NjgsLTg1LjQ2NCBjIC01LjIyLC01LjIyOCAtMTQuMzk2LC01LjIyOCAtMTkuNjE2LDAgbCAtNy40NTIsNy40NDggYyAtNS40LDUuNDA4IC01LjQsMTQuNTQ4IDAuMDA0LDE5Ljk1NiBsIDQ4LjQ1Niw0OC43OTIgSCA2Ny45MTEgbCA0OC42OTYsLTQ5LjAyIGMgNS40MDgsLTUuNDEyIDUuNDA4LC0xNC4zODQgMCwtMTkuNzk2IGwgLTcuNDQ0LC03LjUyNCBjIC01LjIzMiwtNS4yMzIgLTE0LjQwNCwtNS4yNzIgLTE5LjYyNCwtMC4wNDQgTCA0LjAzNSwyMzUuODEzIGMgLTIuNjcyLDIuNjc2IC00LjEsNi4yNCAtNC4wMzIsOS45MTYgLTAuMDcyLDMuODIgMS4zNiw3LjM5NiA0LjAzMiwxMC4wNjggbCA4NS40NjQsODUuNDY0IGMgNS4yMjgsNS4yMzIgMTQuMzk2LDUuMjI4IDE5LjYyLDAgbCA3LjQ0NCwtNy40NDggYyA1LjQxNiwtNS40MTYgNS40MTYsLTEzLjc4NCAwLC0xOS4xOTIgTCA2Ni43MDcsMjY1LjE4NSBoIDM1OC43OTIgbCAtNTAuMDk2LDQ5LjY2OCBjIC0yLjYxMiwyLjYwNCAtNC4wNTIsNS44ODQgLTQuMDUyLDkuNTkyIDAsMy43MDggMS40MzYsNy4wODggNC4wNTIsOS43IGwgNy40NDQsNy4zOTYgYyAyLjYxNiwyLjYxMiA2LjEsNC4wMiA5LjgxMiw0LjAyIDMuNzE2LDAgNy4xOTYsLTEuNDQ4IDkuODEyLC00LjA2IGwgODUuNSwtODUuNTA4IGMgMi42NjQsLTIuNjY4IDQuMDk2LC02LjI0OCA0LjAyOCwtOS45MjQgMC4wNzYsLTMuODI0IC0xLjM2LC03LjQwNCAtNC4wMjgsLTEwLjA3NiB6XCI+PC9wYXRoPjxzdmcgY2xhc3M9Ymx1ZU9uSG92ZXIgeD00MCB5PTAgd2lkdGg9MTUwIGhlaWdodD0xMjA+PHRleHQgbmctaGlkZT1mZC5QYXJhbWV0ZXJzLm1hcmdpbi50b3AuYXV0byB4PTUwJSB5PTUwJSBmb250LXNpemU9NjAgZG9taW5hbnQtYmFzZWxpbmU9bWlkZGxlIHRleHQtYW5jaG9yPW1pZGRsZT57e2ZkLlBhcmFtZXRlcnMubWFyZ2luLnRvcC52YWx1ZX19e3tmZC5QYXJhbWV0ZXJzLm1hcmdpbi50b3AudW5pdHN9fTwvdGV4dD48dGV4dCBuZy1zaG93PWZkLlBhcmFtZXRlcnMubWFyZ2luLnRvcC5hdXRvIHg9NTAlIHk9NTAlIGZvbnQtc2l6ZT02MCBkb21pbmFudC1iYXNlbGluZT1taWRkbGUgdGV4dC1hbmNob3I9bWlkZGxlPmF1dG88L3RleHQ+PC9zdmc+PC9zdmc+PHN2ZyBpZD1ib3R0b21tYXJnaW4geD00NTAgeT04NjAgY2xhc3M9aG92ZXJQYXJlbnQgc3R5bGU9Y3Vyc29yOnBvaW50ZXIgbmctc3R5bGU9XCJ7XFwnZmlsbFxcJzpmZC5zZWxlY3RlZD09ZmQuUGFyYW1ldGVycy5tYXJnaW4uYm90dG9tID8gXFwnYmx1ZVxcJzpcXCdncmF5XFwnfVwiIG5nLWNsaWNrPWZkLnNlbGVjdChmZC5QYXJhbWV0ZXJzLm1hcmdpbi5ib3R0b20pPjxyZWN0IHdpZHRoPTE1MCBoZWlnaHQ9MTUwIHN0eWxlPWZpbGw6dHJhbnNwYXJlbnQ7PjwvcmVjdD48cGF0aCBjbGFzcz1ibHVlT25Ib3ZlciB0cmFuc2Zvcm09XCJzY2FsZSgwLjI1KSByb3RhdGUoOTAsMjAwLDIwMClcIiBkPVwibSA0ODcuOTcxLDIzNS45OTMgLTg1LjQ2OCwtODUuNDY0IGMgLTUuMjIsLTUuMjI4IC0xNC4zOTYsLTUuMjI4IC0xOS42MTYsMCBsIC03LjQ1Miw3LjQ0OCBjIC01LjQsNS40MDggLTUuNCwxNC41NDggMC4wMDQsMTkuOTU2IGwgNDguNDU2LDQ4Ljc5MiBIIDY3LjkxMSBsIDQ4LjY5NiwtNDkuMDIgYyA1LjQwOCwtNS40MTIgNS40MDgsLTE0LjM4NCAwLC0xOS43OTYgbCAtNy40NDQsLTcuNTI0IGMgLTUuMjMyLC01LjIzMiAtMTQuNDA0LC01LjI3MiAtMTkuNjI0LC0wLjA0NCBMIDQuMDM1LDIzNS44MTMgYyAtMi42NzIsMi42NzYgLTQuMSw2LjI0IC00LjAzMiw5LjkxNiAtMC4wNzIsMy44MiAxLjM2LDcuMzk2IDQuMDMyLDEwLjA2OCBsIDg1LjQ2NCw4NS40NjQgYyA1LjIyOCw1LjIzMiAxNC4zOTYsNS4yMjggMTkuNjIsMCBsIDcuNDQ0LC03LjQ0OCBjIDUuNDE2LC01LjQxNiA1LjQxNiwtMTMuNzg0IDAsLTE5LjE5MiBMIDY2LjcwNywyNjUuMTg1IGggMzU4Ljc5MiBsIC01MC4wOTYsNDkuNjY4IGMgLTIuNjEyLDIuNjA0IC00LjA1Miw1Ljg4NCAtNC4wNTIsOS41OTIgMCwzLjcwOCAxLjQzNiw3LjA4OCA0LjA1Miw5LjcgbCA3LjQ0NCw3LjM5NiBjIDIuNjE2LDIuNjEyIDYuMSw0LjAyIDkuODEyLDQuMDIgMy43MTYsMCA3LjE5NiwtMS40NDggOS44MTIsLTQuMDYgbCA4NS41LC04NS41MDggYyAyLjY2NCwtMi42NjggNC4wOTYsLTYuMjQ4IDQuMDI4LC05LjkyNCAwLjA3NiwtMy44MjQgLTEuMzYsLTcuNDA0IC00LjAyOCwtMTAuMDc2IHpcIj48L3BhdGg+PHN2ZyBjbGFzcz1ibHVlT25Ib3ZlciB4PTQwIHk9MCB3aWR0aD0xNTAgaGVpZ2h0PTEyMD48dGV4dCBuZy1oaWRlPWZkLlBhcmFtZXRlcnMubWFyZ2luLmJvdHRvbS5hdXRvIHg9NTAlIHk9NTAlIGZvbnQtc2l6ZT02MCBkb21pbmFudC1iYXNlbGluZT1taWRkbGUgdGV4dC1hbmNob3I9bWlkZGxlPnt7ZmQuUGFyYW1ldGVycy5tYXJnaW4uYm90dG9tLnZhbHVlfX17e2ZkLlBhcmFtZXRlcnMubWFyZ2luLmJvdHRvbS51bml0c319PC90ZXh0Pjx0ZXh0IG5nLXNob3c9ZmQuUGFyYW1ldGVycy5tYXJnaW4uYm90dG9tLmF1dG8geD01MCUgeT01MCUgZm9udC1zaXplPTYwIGRvbWluYW50LWJhc2VsaW5lPW1pZGRsZSB0ZXh0LWFuY2hvcj1taWRkbGU+YXV0bzwvdGV4dD48L3N2Zz48L3N2Zz48c3ZnIHg9MjMwIHk9NDUwIGNsYXNzPWhvdmVyUGFyZW50IHN0eWxlPWN1cnNvcjpwb2ludGVyIG5nLXN0eWxlPVwie1xcJ2ZpbGxcXCc6ZmQuc2VsZWN0ZWQ9PWZkLlBhcmFtZXRlcnMucGFkZGluZy5sZWZ0ID8gXFwnYmx1ZVxcJzpcXCdncmF5XFwnfVwiIG5nLWNsaWNrPWZkLnNlbGVjdChmZC5QYXJhbWV0ZXJzLnBhZGRpbmcubGVmdCkgZmlsbD0jYmI+e3skaWR9fTxyZWN0IHdpZHRoPTE1IGhlaWdodD0xNSBzdHlsZT1maWxsOnRyYW5zcGFyZW50Oz48L3JlY3Q+PHBhdGggY2xhc3M9Ymx1ZU9uSG92ZXIgdHJhbnNmb3JtPVwic2NhbGUoMC4yNSkgdHJhbnNsYXRlKDAsMTAwKVwiIGQ9XCJtIDQ4Ny45NzEsMjM1Ljk5MyAtODUuNDY4LC04NS40NjQgYyAtNS4yMiwtNS4yMjggLTE0LjM5NiwtNS4yMjggLTE5LjYxNiwwIGwgLTcuNDUyLDcuNDQ4IGMgLTUuNCw1LjQwOCAtNS40LDE0LjU0OCAwLjAwNCwxOS45NTYgbCA0OC40NTYsNDguNzkyIEggNjcuOTExIGwgNDguNjk2LC00OS4wMiBjIDUuNDA4LC01LjQxMiA1LjQwOCwtMTQuMzg0IDAsLTE5Ljc5NiBsIC03LjQ0NCwtNy41MjQgYyAtNS4yMzIsLTUuMjMyIC0xNC40MDQsLTUuMjcyIC0xOS42MjQsLTAuMDQ0IEwgNC4wMzUsMjM1LjgxMyBjIC0yLjY3MiwyLjY3NiAtNC4xLDYuMjQgLTQuMDMyLDkuOTE2IC0wLjA3MiwzLjgyIDEuMzYsNy4zOTYgNC4wMzIsMTAuMDY4IGwgODUuNDY0LDg1LjQ2NCBjIDUuMjI4LDUuMjMyIDE0LjM5Niw1LjIyOCAxOS42MiwwIGwgNy40NDQsLTcuNDQ4IGMgNS40MTYsLTUuNDE2IDUuNDE2LC0xMy43ODQgMCwtMTkuMTkyIEwgNjYuNzA3LDI2NS4xODUgaCAzNTguNzkyIGwgLTUwLjA5Niw0OS42NjggYyAtMi42MTIsMi42MDQgLTQuMDUyLDUuODg0IC00LjA1Miw5LjU5MiAwLDMuNzA4IDEuNDM2LDcuMDg4IDQuMDUyLDkuNyBsIDcuNDQ0LDcuMzk2IGMgMi42MTYsMi42MTIgNi4xLDQuMDIgOS44MTIsNC4wMiAzLjcxNiwwIDcuMTk2LC0xLjQ0OCA5LjgxMiwtNC4wNiBsIDg1LjUsLTg1LjUwOCBjIDIuNjY0LC0yLjY2OCA0LjA5NiwtNi4yNDggNC4wMjgsLTkuOTI0IDAuMDc2LC0zLjgyNCAtMS4zNiwtNy40MDQgLTQuMDI4LC0xMC4wNzYgelwiPjwvcGF0aD48c3ZnIGNsYXNzPWJsdWVPbkhvdmVyIHg9LTEwIHk9LTMwIHdpZHRoPTE1MCBoZWlnaHQ9MTIwPjx0ZXh0IG5nLWhpZGU9ZmQuUGFyYW1ldGVycy5wYWRkaW5nLmxlZnQuYXV0byB4PTUwJSB5PTUwJSBmb250LXNpemU9NjAgZG9taW5hbnQtYmFzZWxpbmU9bWlkZGxlIHRleHQtYW5jaG9yPW1pZGRsZT57e2ZkLlBhcmFtZXRlcnMucGFkZGluZy5sZWZ0LnZhbHVlfX17e2ZkLlBhcmFtZXRlcnMucGFkZGluZy5sZWZ0LnVuaXRzfX08L3RleHQ+PHRleHQgbmctc2hvdz1mZC5QYXJhbWV0ZXJzLnBhZGRpbmcubGVmdC5hdXRvIHg9NTAlIHk9NTAlIGZvbnQtc2l6ZT02MCBkb21pbmFudC1iYXNlbGluZT1taWRkbGUgdGV4dC1hbmNob3I9bWlkZGxlPmF1dG88L3RleHQ+PC9zdmc+PC9zdmc+PHN2ZyB4PTY0MCB5PTQ1MCBzdHlsZT1jdXJzb3I6cG9pbnRlciBuZy1zdHlsZT1cIntcXCdmaWxsXFwnOmZkLnNlbGVjdGVkPT1mZC5QYXJhbWV0ZXJzLnBhZGRpbmcucmlnaHQgPyBcXCdibHVlXFwnOlxcJ2dyYXlcXCd9XCIgbmctY2xpY2s9ZmQuc2VsZWN0KGZkLlBhcmFtZXRlcnMucGFkZGluZy5yaWdodCkgZmlsbD0jYmIgY2xhc3M9aG92ZXJQYXJlbnQ+PHJlY3Qgd2lkdGg9MTUwIGhlaWdodD0xNTAgc3R5bGU9ZmlsbDp0cmFuc3BhcmVudDs+PC9yZWN0PjxwYXRoIGNsYXNzPWJsdWVPbkhvdmVyIHRyYW5zZm9ybT1cInNjYWxlKDAuMjUpIHRyYW5zbGF0ZSgwLDEwMClcIiBkPVwibSA0ODcuOTcxLDIzNS45OTMgLTg1LjQ2OCwtODUuNDY0IGMgLTUuMjIsLTUuMjI4IC0xNC4zOTYsLTUuMjI4IC0xOS42MTYsMCBsIC03LjQ1Miw3LjQ0OCBjIC01LjQsNS40MDggLTUuNCwxNC41NDggMC4wMDQsMTkuOTU2IGwgNDguNDU2LDQ4Ljc5MiBIIDY3LjkxMSBsIDQ4LjY5NiwtNDkuMDIgYyA1LjQwOCwtNS40MTIgNS40MDgsLTE0LjM4NCAwLC0xOS43OTYgbCAtNy40NDQsLTcuNTI0IGMgLTUuMjMyLC01LjIzMiAtMTQuNDA0LC01LjI3MiAtMTkuNjI0LC0wLjA0NCBMIDQuMDM1LDIzNS44MTMgYyAtMi42NzIsMi42NzYgLTQuMSw2LjI0IC00LjAzMiw5LjkxNiAtMC4wNzIsMy44MiAxLjM2LDcuMzk2IDQuMDMyLDEwLjA2OCBsIDg1LjQ2NCw4NS40NjQgYyA1LjIyOCw1LjIzMiAxNC4zOTYsNS4yMjggMTkuNjIsMCBsIDcuNDQ0LC03LjQ0OCBjIDUuNDE2LC01LjQxNiA1LjQxNiwtMTMuNzg0IDAsLTE5LjE5MiBMIDY2LjcwNywyNjUuMTg1IGggMzU4Ljc5MiBsIC01MC4wOTYsNDkuNjY4IGMgLTIuNjEyLDIuNjA0IC00LjA1Miw1Ljg4NCAtNC4wNTIsOS41OTIgMCwzLjcwOCAxLjQzNiw3LjA4OCA0LjA1Miw5LjcgbCA3LjQ0NCw3LjM5NiBjIDIuNjE2LDIuNjEyIDYuMSw0LjAyIDkuODEyLDQuMDIgMy43MTYsMCA3LjE5NiwtMS40NDggOS44MTIsLTQuMDYgbCA4NS41LC04NS41MDggYyAyLjY2NCwtMi42NjggNC4wOTYsLTYuMjQ4IDQuMDI4LC05LjkyNCAwLjA3NiwtMy44MjQgLTEuMzYsLTcuNDA0IC00LjAyOCwtMTAuMDc2IHpcIj48L3BhdGg+PHN2ZyBjbGFzcz1ibHVlT25Ib3ZlciB4PS0xMCB5PS0zMCB3aWR0aD0xNTAgaGVpZ2h0PTEyMD48dGV4dCBuZy1oaWRlPWZkLlBhcmFtZXRlcnMucGFkZGluZy5yaWdodC5hdXRvIHg9NTAlIHk9NTAlIGZvbnQtc2l6ZT02MCBkb21pbmFudC1iYXNlbGluZT1taWRkbGUgdGV4dC1hbmNob3I9bWlkZGxlPnt7ZmQuUGFyYW1ldGVycy5wYWRkaW5nLnJpZ2h0LnZhbHVlfX17e2ZkLlBhcmFtZXRlcnMucGFkZGluZy5yaWdodC51bml0c319PC90ZXh0Pjx0ZXh0IG5nLXNob3c9ZmQuUGFyYW1ldGVycy5wYWRkaW5nLnJpZ2h0LmF1dG8geD01MCUgeT01MCUgZm9udC1zaXplPTYwIGRvbWluYW50LWJhc2VsaW5lPW1pZGRsZSB0ZXh0LWFuY2hvcj1taWRkbGU+YXV0bzwvdGV4dD48L3N2Zz48L3N2Zz48c3ZnIHg9NDUwIHk9MjQwIHN0eWxlPWN1cnNvcjpwb2ludGVyIGNsYXNzPWhvdmVyUGFyZW50IG5nLXN0eWxlPVwie1xcJ2ZpbGxcXCc6ZmQuc2VsZWN0ZWQ9PWZkLlBhcmFtZXRlcnMucGFkZGluZy50b3AgPyBcXCdibHVlXFwnOlxcJ2dyYXlcXCd9XCIgbmctY2xpY2s9ZmQuc2VsZWN0KGZkLlBhcmFtZXRlcnMucGFkZGluZy50b3ApIGZpbGw9I2JiPjxyZWN0IHdpZHRoPTE1MCBoZWlnaHQ9MTAwIHN0eWxlPWZpbGw6dHJhbnNwYXJlbnQ7PjwvcmVjdD48cGF0aCBjbGFzcz1ibHVlT25Ib3ZlciB0cmFuc2Zvcm09XCJzY2FsZSgwLjI1KSByb3RhdGUoOTAsMjAwLDIwMClcIiBkPVwibSA0ODcuOTcxLDIzNS45OTMgLTg1LjQ2OCwtODUuNDY0IGMgLTUuMjIsLTUuMjI4IC0xNC4zOTYsLTUuMjI4IC0xOS42MTYsMCBsIC03LjQ1Miw3LjQ0OCBjIC01LjQsNS40MDggLTUuNCwxNC41NDggMC4wMDQsMTkuOTU2IGwgNDguNDU2LDQ4Ljc5MiBIIDY3LjkxMSBsIDQ4LjY5NiwtNDkuMDIgYyA1LjQwOCwtNS40MTIgNS40MDgsLTE0LjM4NCAwLC0xOS43OTYgbCAtNy40NDQsLTcuNTI0IGMgLTUuMjMyLC01LjIzMiAtMTQuNDA0LC01LjI3MiAtMTkuNjI0LC0wLjA0NCBMIDQuMDM1LDIzNS44MTMgYyAtMi42NzIsMi42NzYgLTQuMSw2LjI0IC00LjAzMiw5LjkxNiAtMC4wNzIsMy44MiAxLjM2LDcuMzk2IDQuMDMyLDEwLjA2OCBsIDg1LjQ2NCw4NS40NjQgYyA1LjIyOCw1LjIzMiAxNC4zOTYsNS4yMjggMTkuNjIsMCBsIDcuNDQ0LC03LjQ0OCBjIDUuNDE2LC01LjQxNiA1LjQxNiwtMTMuNzg0IDAsLTE5LjE5MiBMIDY2LjcwNywyNjUuMTg1IGggMzU4Ljc5MiBsIC01MC4wOTYsNDkuNjY4IGMgLTIuNjEyLDIuNjA0IC00LjA1Miw1Ljg4NCAtNC4wNTIsOS41OTIgMCwzLjcwOCAxLjQzNiw3LjA4OCA0LjA1Miw5LjcgbCA3LjQ0NCw3LjM5NiBjIDIuNjE2LDIuNjEyIDYuMSw0LjAyIDkuODEyLDQuMDIgMy43MTYsMCA3LjE5NiwtMS40NDggOS44MTIsLTQuMDYgbCA4NS41LC04NS41MDggYyAyLjY2NCwtMi42NjggNC4wOTYsLTYuMjQ4IDQuMDI4LC05LjkyNCAwLjA3NiwtMy44MjQgLTEuMzYsLTcuNDA0IC00LjAyOCwtMTAuMDc2IHpcIj48L3BhdGg+PHN2ZyBjbGFzcz1ibHVlT25Ib3ZlciB4PTUwIHk9MjAgd2lkdGg9MTUwIGhlaWdodD05MD48dGV4dCBuZy1oaWRlPWZkLlBhcmFtZXRlcnMucGFkZGluZy50b3AuYXV0byB4PTUwJSB5PTUwJSBmb250LXNpemU9NjAgZG9taW5hbnQtYmFzZWxpbmU9bWlkZGxlIHRleHQtYW5jaG9yPW1pZGRsZT57e2ZkLlBhcmFtZXRlcnMucGFkZGluZy50b3AudmFsdWV9fXt7ZmQuUGFyYW1ldGVycy5wYWRkaW5nLnRvcC51bml0c319PC90ZXh0Pjx0ZXh0IG5nLXNob3c9ZmQuUGFyYW1ldGVycy5wYWRkaW5nLnRvcC5hdXRvIHg9NTAlIHk9NTAlIGZvbnQtc2l6ZT02MCBkb21pbmFudC1iYXNlbGluZT1taWRkbGUgdGV4dC1hbmNob3I9bWlkZGxlPmF1dG88L3RleHQ+PC9zdmc+PC9zdmc+PHN2ZyB4PTQ1MCB5PTY0MCBzdHlsZT1jdXJzb3I6cG9pbnRlciBuZy1zdHlsZT1cIntcXCdmaWxsXFwnOmZkLnNlbGVjdGVkPT1mZC5QYXJhbWV0ZXJzLnBhZGRpbmcuYm90dG9tID8gXFwnYmx1ZVxcJzpcXCdncmF5XFwnfVwiIG5nLWNsaWNrPWZkLnNlbGVjdChmZC5QYXJhbWV0ZXJzLnBhZGRpbmcuYm90dG9tKSBmaWxsPSNiYiBjbGFzcz1ob3ZlclBhcmVudD48cmVjdCB3aWR0aD0xMDAgaGVpZ2h0PTEwMCBzdHlsZT1maWxsOnRyYW5zcGFyZW50Oz48L3JlY3Q+PHBhdGggY2xhc3M9Ymx1ZU9uSG92ZXIgdHJhbnNmb3JtPVwic2NhbGUoMC4yNSkgcm90YXRlKDkwLDIwMCwyMDApXCIgZD1cIm0gNDg3Ljk3MSwyMzUuOTkzIC04NS40NjgsLTg1LjQ2NCBjIC01LjIyLC01LjIyOCAtMTQuMzk2LC01LjIyOCAtMTkuNjE2LDAgbCAtNy40NTIsNy40NDggYyAtNS40LDUuNDA4IC01LjQsMTQuNTQ4IDAuMDA0LDE5Ljk1NiBsIDQ4LjQ1Niw0OC43OTIgSCA2Ny45MTEgbCA0OC42OTYsLTQ5LjAyIGMgNS40MDgsLTUuNDEyIDUuNDA4LC0xNC4zODQgMCwtMTkuNzk2IGwgLTcuNDQ0LC03LjUyNCBjIC01LjIzMiwtNS4yMzIgLTE0LjQwNCwtNS4yNzIgLTE5LjYyNCwtMC4wNDQgTCA0LjAzNSwyMzUuODEzIGMgLTIuNjcyLDIuNjc2IC00LjEsNi4yNCAtNC4wMzIsOS45MTYgLTAuMDcyLDMuODIgMS4zNiw3LjM5NiA0LjAzMiwxMC4wNjggbCA4NS40NjQsODUuNDY0IGMgNS4yMjgsNS4yMzIgMTQuMzk2LDUuMjI4IDE5LjYyLDAgbCA3LjQ0NCwtNy40NDggYyA1LjQxNiwtNS40MTYgNS40MTYsLTEzLjc4NCAwLC0xOS4xOTIgTCA2Ni43MDcsMjY1LjE4NSBoIDM1OC43OTIgbCAtNTAuMDk2LDQ5LjY2OCBjIC0yLjYxMiwyLjYwNCAtNC4wNTIsNS44ODQgLTQuMDUyLDkuNTkyIDAsMy43MDggMS40MzYsNy4wODggNC4wNTIsOS43IGwgNy40NDQsNy4zOTYgYyAyLjYxNiwyLjYxMiA2LjEsNC4wMiA5LjgxMiw0LjAyIDMuNzE2LDAgNy4xOTYsLTEuNDQ4IDkuODEyLC00LjA2IGwgODUuNSwtODUuNTA4IGMgMi42NjQsLTIuNjY4IDQuMDk2LC02LjI0OCA0LjAyOCwtOS45MjQgMC4wNzYsLTMuODI0IC0xLjM2LC03LjQwNCAtNC4wMjgsLTEwLjA3NiB6XCI+PC9wYXRoPjxzdmcgY2xhc3M9Ymx1ZU9uSG92ZXIgeD01MCB5PTIwIHdpZHRoPTE1MCBoZWlnaHQ9OTA+PHRleHQgbmctaGlkZT1mZC5QYXJhbWV0ZXJzLnBhZGRpbmcuYm90dG9tLmF1dG8geD01MCUgeT01MCUgZm9udC1zaXplPTYwIGRvbWluYW50LWJhc2VsaW5lPW1pZGRsZSB0ZXh0LWFuY2hvcj1taWRkbGU+e3tmZC5QYXJhbWV0ZXJzLnBhZGRpbmcuYm90dG9tLnZhbHVlfX17e2ZkLlBhcmFtZXRlcnMucGFkZGluZy5ib3R0b20udW5pdHN9fTwvdGV4dD48dGV4dCBuZy1zaG93PWZkLlBhcmFtZXRlcnMucGFkZGluZy5ib3R0b20uYXV0byB4PTUwJSB5PTUwJSBmb250LXNpemU9NjAgZG9taW5hbnQtYmFzZWxpbmU9bWlkZGxlIHRleHQtYW5jaG9yPW1pZGRsZT5hdXRvPC90ZXh0Pjwvc3ZnPjwvc3ZnPjwvc3ZnPjwvZGl2PjxkaXYgbmctc2hvdz1mZC5zZWxlY3RlZD48ZGl2IGNsYXNzPXRleHQtY2VudGVyPjxsYWJlbCBjbGFzcz1sYWJlbC14cyBmb3I9c2V0RWxlbWVudFdpZHRoPjxiPnt7ZmQuc2VsZWN0ZWQubmFtZX19PC9iPjwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1tYi0yPjxkaXYgY2xhc3M9cHQtMj48aW5wdXQgdHlwZT1jaGVja2JveCBuZy1jaGFuZ2U9XCJmZC5zZWxlY3RlZC52YWx1ZT0wO2ZkLnNlbGVjdGVkLnVuaXRzPVxcJ3B4XFwnXCIgbmctbW9kZWw9ZmQuc2VsZWN0ZWQuYXV0bz4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkF1dG8gc2l6ZTwvbGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtYi0yXCI+PGRpdiBjbGFzcz1jb2w+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPlZhbHVlPC9sYWJlbD4gPGlucHV0IG5nLWRpc2FibGVkPWZkLnNlbGVjdGVkLmF1dG8gdHlwZT1udW1iZXIgbWluPS01MDAgbWF4PTUwMCBuZy1tb2RlbD1mZC5zZWxlY3RlZC52YWx1ZSBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48L2Rpdj48ZGl2IGNsYXNzPWNvbD48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCIgZm9yPXNldEVsZW1lbnRXaWR0aD5Vbml0czwvbGFiZWw+PHNlbGVjdCBuZy1kaXNhYmxlZD1mZC5zZWxlY3RlZC5hdXRvIG5nLW1vZGVsPWZkLnNlbGVjdGVkLnVuaXRzIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIGlkPXNldEVsZW1lbnRXaWR0aD48b3B0aW9uPnB4PC9vcHRpb24+PG9wdGlvbj5lbTwvb3B0aW9uPjxvcHRpb24+JTwvb3B0aW9uPjwvc2VsZWN0PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9dGV4dC1jZW50ZXIgbmctaGlkZT1mZC5zZWxlY3RlZD5Ob3RoaW5nIHNlbGVjdGVkPC9kaXY+PC9kaXY+PC9kaXY+PGhyIGNsYXNzPW15LTA+PGRpdiBjbGFzcz1cImV4cGFuZC1wcm9wZXJ0eS1wYW5lbCB0YWcgcHktM1wiIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIGhyZWY9I2xheW91dFNoYWRvdyByb2xlPWJ1dHRvbiBhcmlhLWV4cGFuZGVkPXRydWUgYXJpYS1jb250cm9scz1leHRlbmRlZFBhbmVsU2hhZG93PjxzcGFuIGNsYXNzPVwiY29sIHAtMFwiPlNoYWRvdzwvc3Bhbj4gPGkgY2xhc3M9XCJmYSBmYS11bWJyZWxsYS1iZWFjaCBmYS1sZ1wiPjwvaT48L2Rpdj48ZGl2IGNsYXNzPVwibWItNCBtdC1uMiBjb2xsYXBzZVwiIGlkPWxheW91dFNoYWRvdyBzdHlsZT48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCIgZm9yPXNldFNoYWRvd1VuaXRzPlVuaXRzPC9sYWJlbD48c2VsZWN0IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuU2hhZG93VW5pdHMgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgaWQ9c2V0U2hhZG93VW5pdHM+PG9wdGlvbj5weDwvb3B0aW9uPjxvcHRpb24+ZW08L29wdGlvbj48b3B0aW9uPiU8L29wdGlvbj48L3NlbGVjdD48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+aC1vZmZzZXQ8L2xhYmVsPiA8aW5wdXQgdHlwZT1udW1iZXIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5TaGFkb3dIT2Zmc2V0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+di1vZmZzZXQ8L2xhYmVsPiA8aW5wdXQgdHlwZT1udW1iZXIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5TaGFkb3dWT2Zmc2V0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+Qmx1cjwvbGFiZWw+IDxpbnB1dCB0eXBlPW51bWJlciBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlNoYWRvd0JsdXIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5TcHJlYWQ8L2xhYmVsPiA8aW5wdXQgdHlwZT1udW1iZXIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5TaGFkb3dTcHJlYWQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5Db2xvcjwvbGFiZWw+IDxpbnB1dCB0eXBlPWNvbG9yIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuU2hhZG93Q29sb3IgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0R3JpZEV4ZS5odG1sJywnPGRpdiBpZGQ9a3RHcmlkRXhlIGNsYXNzPjxkaXYgaWQ9Z3JpZGxvYWRpbmcgY2xhc3MgbmctaWY9XCIhZm9ybUxvYWRlZCAmJiAhaGlkZVByb2Nlc3NpbmdBbmltYXRpb25cIiBhbmltYXRpb24tdHlwZT1cIlxcJ2Zvcm1cXCdcIiBrdC1wcm9jZXNzaW5nLWFuaW1hdGlvbi10aW1lbGluZSBzaG93LW1zZz10cnVlIG1lc3NhZ2U9XCJMb2FkaW5nIGZvcm0uLi5cIj48L2Rpdj48ZGl2IG5nLWlmPWZvcm1Mb2FkZWQ+PGRpdiBuZy1yZXBlYXQ9XCJ3aWRnZXQgaW4gYWxsQ29sdW1ucy5sYXlvdXQgdHJhY2sgYnkgJGluZGV4XCIgY2xhc3M9Z3JpZFJlcGVhdENvbnRhaW5lcj48ZGl2IG5nLWlmPVwid2lkZ2V0LlN0YXR1cz09XFwnQWN0aXZlXFwnXCIga3QtZ3JpZC1yb3cgZ3JpZC10eXBlPTo6Z3JpZFR5cGUgcm93PXdpZGdldCByZXNvdXJjZS1mb3JtLWxvYWRlZD1mb3JtTG9hZGVkIHNob3ctc2VhcmNoLWZpbHRlcnM9OjpzaG93U2VhcmNoRmlsdGVycyBwYXJlbnQtcmVzb3VyY2UtZGVmLWlkPTo6cGFyZW50UmVzb3VyY2VEZWZJZCByZXNvdXJjZS1yZWNvcmQtaWQ9OjpyZXNvdXJjZVJlY29yZElkIHJlc291cmNlLWRlZmluaXRpb249OjpyZXNvdXJjZURlZmluaXRpb24gcGFyZW50LXdpZGdldD1wYXJlbnRXaWRnZXQgZm9ybS1wYXJhbXM9Ojpmb3JtUGFyYW1zIHBhcmFtcz1wYXJhbXMgZm9ybS1wYXJhbXMtcGFyZW50PTo6Zm9ybVBhcmFtc1BhcmVudCBwYXJlbnQ9OjphbGxDb2x1bW5zIGZvcm0tZGF0YT1mb3JtRGF0YSBhbGwtcm93cz06OmFsbENvbHVtbnM+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0R3JpZFJvdy5odG1sJywnPHN0eWxlPlxcclxcbi8qXFxyXFxuLmhhbGZPdmFsIHtcXHJcXG4gICAgbWF4LXdpZHRoOiAyJTtcXHJcXG4gICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTBDNTgwO1xcclxcbiAgICBib3JkZXItcmFkaXVzOiA0MHB4IDBweCAwcHggNDBweDtcXHJcXG59IFxcclxcbi5ib3JkZXJHcmVlbiB7XFxyXFxuICAgYm9yZGVyOiBzb2xpZCAjYTBDNTgwIDJweDtcXHJcXG59Ki9cXHJcXG5cXHJcXG48L3N0eWxlPjxkaXYgaWRkPWt0R3JpZFJvdyBjbGFzcyBuZy1zaG93PVwicm93LlNob3dGaWVsZCB8fCAoZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTIpXCIgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOnJvdz09Z3NydmMuc2VsZWN0ZWRGaWVsZCAmJiBnc3J2Yy5wcm9wZXJ0aWVzT3BlbmVkLFxcJ2JnLXdoaXRlIG15LTIgbXItMCBtbC0yIHAtMFxcJzooZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgfHwgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTMgfHwgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTQpICYmIGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlIT0yfVwiIHN0eWxlPVwiYmFja2dyb3VuZDogdXJsKHt7cm93LlBhcmFtZXRlcnMuQmFja2dyb3VuZEltYWdlVXJsfX0pIHt7cm93LlBhcmFtZXRlcnMuQmFja2dyb3VuZENvbG9yQX19IHt7cm93LlBhcmFtZXRlcnMuUmVwZWF0QmFja1RleHR9fSAhaW1wb3J0YW50OyBoZWlnaHQ6IHt7cm93LlBhcmFtZXRlcnMuQmFja2dyb3VuZEltYWdlSGVpZ2h0fX17e3Jvdy5QYXJhbWV0ZXJzLkJhY2tncm91bmRJbWFnZVVuaXR9fTtcIj48ZGl2IGNsYXNzPVwiZC1mbGV4IG0tMFwiPjxkaXYgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCIgbmctY2xpY2s9Z3NydmMuc2V0RmllbGRQcm9wZXJ0aWVzKHJvdyxwYXJlbnQpIG5nLXNob3c9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MiAmJiAhcm93LkFsbG93U29ydFwiIGNsYXNzPVwiaGFsZk92YWwgZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHAtMFwiPjxkaXYgY2xhc3M9c2hvd09uSG92ZXI+PGEgc3R5bGU9XCJwYWRkaW5nOiAwLjFyZW0gMC4ycmVtO1wiIHRpdGxlPVwiSW5zZXJ0IGxheW91dCBjb250YWluZXIgYWJvdmVcIiBocmVmIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGFsaWduLXRvcCBib3JkZXItMCBidG4teHNcIiBuZy1jbGljaz1hZGRSb3dBYm92ZShyb3cpPjxzcGFuIGNsYXNzPVwiZmEgZmEtYXJyb3ctdXBcIiBuZy1jbGFzcz1cIntcXCdkaXNhYmxlZFxcJzogZm9ybVBhcmFtcy5mb3JtTG9ja2VkfVwiPjwvc3Bhbj48L2E+PC9kaXY+PGRpdj48aSBjbGFzcz1cInt7Z3JpZFR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIGhhbmRsZXIgZmFzIGZhLWdyaXAtdmVydGljYWwgdGV4dC13aGl0ZSBtbC0xXCIgc3R5bGU9b3BhY2l0eTowLjg+PC9pPjwvZGl2PjxkaXYgY2xhc3M9c2hvd09uSG92ZXI+PGEgc3R5bGU9XCJwYWRkaW5nOiAwLjFyZW0gMC4ycmVtO1wiIHRpdGxlPVwiSW5zZXJ0IGxheW91dCBjb250YWluZXIgYmVsb3dcIiBocmVmIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJvcmRlci0wIGJ0bi14c1wiIG5nLWNsaWNrPWFkZFJvd0JlbG93KHJvdyk+PHNwYW4gY2xhc3M9XCJmYSBmYS1hcnJvdy1kb3duXCIgbmctY2xhc3M9XCJ7XFwnZGlzYWJsZWRcXCc6IGZvcm1QYXJhbXMuZm9ybUxvY2tlZH1cIj48L3NwYW4+PC9hPjwvZGl2PjwvZGl2PjxkaXYgaWQ9cm93X2NvbnRlbnQgc3R5bGU9XCJtYXgtd2lkdGg6IDk4JTtcIiBjbGFzcz1cImNvbCBwYi0yIHAtMFwiIG5nLWNsYXNzPVwieyBcXCdib3JkZXJHcmVlblxcJzogaXNGb3JtVmlld1R5cGVFcXVhbCgxKX1cIj48ZGl2IGlkPXJvd19oZWFkZXIgbmctc2hvdz1yb3cuU2hvd0hlYWRlciBjbGFzcz1cInJvdyBtLTAgc2VjdGlvbi1oZWFkZXJcIiBuZy1jbGljaz1nc3J2Yy5zZXRGaWVsZFByb3BlcnRpZXMocm93LHBhcmVudCkgbmctY2xhc3M9XCJ7IFxcJ1xcJzpmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSB8fCBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZT09MSwgXFwnYmctZ3JheS0yMDBcXCc6Zm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTIgfHwgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGU9PTIgfVwiPjxkaXYgY2xhc3M9XCJjb2wgcC0xIG15LWF1dG9cIj48c3BhbiBjbGFzcz1cInNlY3Rpb24tdGl0bGUgdGFnIHNob3ctd2hlbi1lZGl0IHAtMSBweC0yIG1iLTAgbWwtMSBiZy10cmFuc3BhcmVudCBib3JkZXItMFwiIG5nLWlmPVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTIgfHwgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGU9PTJcIj57e3Jvdy5OYW1lfX08L3NwYW4+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJyb3ctaGVhZGVyLWlucHV0IGJvcmRlci0wIGJnLXRyYW5zcGFyZW50XCIgbmctY2xhc3M9XCJ7XFwndGV4dC1wcmltYXJ5IGJvbGRcXCc6cm93PT1nc3J2Yy5zZWxlY3RlZEZpZWxkICYmIGdzcnZjLnByb3BlcnRpZXNPcGVuZWR9XCIgbmctaWY9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MlwiIG5nLW1vZGVsPXJvdy5OYW1lPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTAgcGwtMSBteS1hdXRvXCIgbmctaWY9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MiAmJiAhcm93LkFsbG93U29ydFwiPjxhIHRpdGxlPVwiRW5hYmxlIHNvcnRcIiBuZy1pZj1cInBhcmVudC5lbGVtZW50VHlwZT09XFwnZ2NvbFxcJ1wiIGhyZWYgY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1saWdodCBwLTEgbXItMVwiIG5nLWNsaWNrPVwicm93LkFsbG93U29ydD0hcm93LkFsbG93U29ydFwiPjxpIGNsYXNzPVwiZmEgZmEtc29ydCB0ZXh0LWRhcmtcIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTAgcGwtMVwiIG5nLWlmPXJvdy5BbGxvd1NvcnQ+PGEgdGl0bGU9XCJEaXNhYmxlIHNvcnRcIiBocmVmIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc21cIiBuZy1jbGljaz1cInJvdy5BbGxvd1NvcnQ9IXJvdy5BbGxvd1NvcnRcIj48aSBjbGFzcz1cImZhIGZhLXNvcnQgdGV4dC1kYXJrXCI+PC9pPiBEaXNhYmxlIHNvcnQ8L2E+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cInBhcmVudC5sYXlvdXQubGVuZ3RoPT0wXCI+PGJ1dHRvbiBuZy1jbGljaz1hZGRDb2x1bW4ocm93LDEpPis8L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IHAtMCBtLTBcIiBuZy1pZj1cIiFyb3cuQWxsb3dTb3J0ICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0zXCIgZHJhZ3VsYT1cIlxcJ2JhZy1jb2x1bW5zLXt7Z3JpZFR5cGV9fVxcJ1wiIGRyYWd1bGEtbW9kZWw9cm93LmxheW91dD48ZGl2IG5nLWNsYXNzPVwie1xcJ3JvdW5kZWRcXCc6Y29sdW1uLlBhcmFtZXRlcnMuUm91bmRlZEJvcmRlcnN9XCIgbmctcmVwZWF0PVwiY29sdW1uIGluIHJvdy5sYXlvdXQgdHJhY2sgYnkgY29sdW1uLmlkXCIgY2xhc3M9XCJwLTAgY29sLWxnLXt7Y29sdW1uLlNpemVYfX0gY29sLW1kLXt7Y29sdW1uLlBhcmFtZXRlcnMuU2l6ZVhNZH19IGNvbC1zbS17e2NvbHVtbi5QYXJhbWV0ZXJzLlNpemVYU219fSBjb2wte3tjb2x1bW4uUGFyYW1ldGVycy5TaXplWFhzfX1cIiBzdHlsZT1cInBhZGRpbmc6IHt7Y29sdW1uLlBhcmFtZXRlcnMucGFkZGluZy50b3AudmFsdWV9fXt7Y29sdW1uLlBhcmFtZXRlcnMucGFkZGluZy50b3AudW5pdHN9fSB7e2NvbHVtbi5QYXJhbWV0ZXJzLnBhZGRpbmcucmlnaHQudmFsdWV9fXt7Y29sdW1uLlBhcmFtZXRlcnMucGFkZGluZy5yaWdodC51bml0c319IHt7Y29sdW1uLlBhcmFtZXRlcnMucGFkZGluZy5ib3R0b20udmFsdWV9fXt7Y29sdW1uLlBhcmFtZXRlcnMucGFkZGluZy5ib3R0b20udW5pdHN9fSB7e2NvbHVtbi5QYXJhbWV0ZXJzLnBhZGRpbmcubGVmdC52YWx1ZX19e3tjb2x1bW4uUGFyYW1ldGVycy5wYWRkaW5nLmxlZnQudW5pdHN9fSAhaW1wb3J0YW50OyBtYXJnaW46e3tjb2x1bW4uUGFyYW1ldGVycy5tYXJnaW4udG9wLnZhbHVlfX17e2NvbHVtbi5QYXJhbWV0ZXJzLm1hcmdpbi50b3AudW5pdHN9fSAhaW1wb3J0YW50O3t7Y29sdW1uLlBhcmFtZXRlcnMubWFyZ2luLnJpZ2h0LnZhbHVlfX17e2NvbHVtbi5QYXJhbWV0ZXJzLm1hcmdpbi5yaWdodC51bml0c319IHt7Y29sdW1uLlBhcmFtZXRlcnMubWFyZ2luLmJvdHRvbS52YWx1ZX19e3tjb2x1bW4uUGFyYW1ldGVycy5tYXJnaW4uYm90dG9tLnVuaXRzfX0ge3tjb2x1bW4uUGFyYW1ldGVycy5tYXJnaW4ubGVmdC52YWx1ZX19e3tjb2x1bW4uUGFyYW1ldGVycy5tYXJnaW4ubGVmdC51bml0c319ICFpbXBvcnRhbnQ7IGJvcmRlci10b3A6e3tjb2x1bW4uUGFyYW1ldGVycy5ib3JkZXIudG9wLndpZHRofX1weCB7e2NvbHVtbi5QYXJhbWV0ZXJzLmJvcmRlci50b3Auc3R5bGV9fSB7e2NvbHVtbi5QYXJhbWV0ZXJzLmJvcmRlci50b3AuY29sb3J9fSB7e2NvbHVtbi5QYXJhbWV0ZXJzLmJvcmRlci5yaWdodC53aWR0aH19cHgge3tjb2x1bW4uUGFyYW1ldGVycy5ib3JkZXIucmlnaHQuc3R5bGV9fSB7e2NvbHVtbi5QYXJhbWV0ZXJzLmJvcmRlci5yaWdodC5jb2xvcn19IHt7Y29sdW1uLlBhcmFtZXRlcnMuYm9yZGVyLmJvdHRvbS53aWR0aH19cHgge3tjb2x1bW4uUGFyYW1ldGVycy5ib3JkZXIuYm90dG9tLnN0eWxlfX0ge3tjb2x1bW4uUGFyYW1ldGVycy5ib3JkZXIuYm90dG9tLmNvbG9yfX0ge3tjb2x1bW4uUGFyYW1ldGVycy5ib3JkZXIubGVmdC53aWR0aH19cHgge3tjb2x1bW4uUGFyYW1ldGVycy5ib3JkZXIubGVmdC5zdHlsZX19IHt7Y29sdW1uLlBhcmFtZXRlcnMuYm9yZGVyLmxlZnQuY29sb3J9fSAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kLWNvbG9yOiB7e2NvbHVtbi5QYXJhbWV0ZXJzLkJhY2tncm91bmRDb2xvcn19ICFpbXBvcnRhbnQ7IGJveC1zaGFkb3c6IHt7Y29sdW1uLlBhcmFtZXRlcnMuU2hhZG93SE9mZnNldH19e3tjb2x1bW4uUGFyYW1ldGVycy5TaGFkb3dVbml0c319IHt7Y29sdW1uLlBhcmFtZXRlcnMuU2hhZG93Vk9mZnNldH19e3tjb2x1bW4uUGFyYW1ldGVycy5TaGFkb3dVbml0c319IHt7Y29sdW1uLlBhcmFtZXRlcnMuU2hhZG93Qmx1cn19e3tjb2x1bW4uUGFyYW1ldGVycy5TaGFkb3dVbml0c319IHt7Y29sdW1uLlBhcmFtZXRlcnMuU2hhZG93U3ByZWFkfX17e2NvbHVtbi5QYXJhbWV0ZXJzLlNoYWRvd1VuaXRzfX0ge3tjb2x1bW4uUGFyYW1ldGVycy5TaGFkb3dDb2xvcn19O1wiPjxkaXYgbmctc3dpdGNoPWNvbHVtbi5FbGVtZW50VHlwZT48ZGl2IG5nLXN3aXRjaC13aGVuPWdjb2wgbmctc2hvdz1cImNvbHVtbi5TdGF0dXM9PVxcJ0FjdGl2ZVxcJ1wiIGt0LWdyaWQtY29sdW1uIHJlc291cmNlLWZvcm0tbG9hZGVkPXJlc291cmNlRm9ybUxvYWRlZCBncmlkLXR5cGU9Z3JpZFR5cGUgc2hvdy1zZWFyY2gtZmlsdGVycz1zaG93U2VhcmNoRmlsdGVycyBwYXJlbnQtcmVzb3VyY2UtZGVmLWlkPXBhcmVudFJlc291cmNlRGVmSWQgcmVzb3VyY2UtcmVjb3JkLWlkPXJlc291cmNlUmVjb3JkSWQgcmVzb3VyY2UtZGVmaW5pdGlvbj1yZXNvdXJjZURlZmluaXRpb24gaW5wdXQtYXJyYXk9Y29sdW1uIGZvcm0tcGFyYW1zPWZvcm1QYXJhbXMgZm9ybS1wYXJhbXMtcGFyZW50PWZvcm1QYXJhbXNQYXJlbnQgZm9ybS1kYXRhPWZvcm1EYXRhIHBhcmFtcz1wYXJhbXMgcGFyZW50PXJvdyBhbGwtY29sdW1ucz1yb3cubGF5b3V0IGFsbC1yb3dzPWFsbFJvd3MgaW5kZXg9JGluZGV4IGNsYXNzPXAtMD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IHAtMCBtLTBcIiBuZy1pZj1cImlzRm9ybVZpZXdUeXBlRXF1YWwoMikgfHwgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgfHwgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTJcIj48ZGl2IG5nLWNsYXNzPVwie1xcJ2JvcmRlciByb3VuZGVkIHAtNFxcJzogMT09MX1cIiBuZy1yZXBlYXQ9XCJjb2x1bW4gaW4gcm93LmxheW91dCB0cmFjayBieSBjb2x1bW4uaWRcIiBuZy1zaG93PVwiY29sdW1uLlNob3dGaWVsZCB8fCBpc0Zvcm1WaWV3VHlwZUVxdWFsKDEpXCIgY2xhc3M9XCJwLTAgY29sLWxnLXt7Y29sdW1uLlNpemVYfX0gY29sLW1kLXt7Y29sdW1uLlBhcmFtZXRlcnMuU2l6ZVhNZH19IGNvbC1zbS17e2NvbHVtbi5QYXJhbWV0ZXJzLlNpemVYU219fSBjb2wte3tjb2x1bW4uUGFyYW1ldGVycy5TaXplWFhzfX1cIiBzdHlsZT1cInBhZGRpbmc6e3tjb2x1bW4uUGFyYW1ldGVycy5wYWRkaW5nLnRvcC52YWx1ZX19e3tjb2x1bW4uUGFyYW1ldGVycy5wYWRkaW5nLnRvcC51bml0c319IHt7Y29sdW1uLlBhcmFtZXRlcnMucGFkZGluZy5yaWdodC52YWx1ZX19e3tjb2x1bW4uUGFyYW1ldGVycy5wYWRkaW5nLnJpZ2h0LnVuaXRzfX0ge3tjb2x1bW4uUGFyYW1ldGVycy5wYWRkaW5nLmJvdHRvbS52YWx1ZX19e3tjb2x1bW4uUGFyYW1ldGVycy5wYWRkaW5nLmJvdHRvbS51bml0c319IHt7Y29sdW1uLlBhcmFtZXRlcnMucGFkZGluZy5sZWZ0LnZhbHVlfX17e2NvbHVtbi5QYXJhbWV0ZXJzLnBhZGRpbmcubGVmdC51bml0c319ICFpbXBvcnRhbnQ7IG1hcmdpbjp7e2NvbHVtbi5QYXJhbWV0ZXJzLm1hcmdpbi50b3AudmFsdWV9fXt7Y29sdW1uLlBhcmFtZXRlcnMubWFyZ2luLnRvcC51bml0c319IHt7Y29sdW1uLlBhcmFtZXRlcnMubWFyZ2luLnJpZ2h0LnZhbHVlfX17e2NvbHVtbi5QYXJhbWV0ZXJzLm1hcmdpbi5yaWdodC51bml0c319IHt7Y29sdW1uLlBhcmFtZXRlcnMubWFyZ2luLmJvdHRvbS52YWx1ZX19e3tjb2x1bW4uUGFyYW1ldGVycy5tYXJnaW4uYm90dG9tLnVuaXRzfX0ge3tjb2x1bW4uUGFyYW1ldGVycy5tYXJnaW4ubGVmdC52YWx1ZX19e3tjb2x1bW4uUGFyYW1ldGVycy5tYXJnaW4ubGVmdC51bml0c319ICFpbXBvcnRhbnQ7IGJvcmRlcjp7e2NvbHVtbi5QYXJhbWV0ZXJzLmJvcmRlci50b3Aud2lkdGh9fXB4IHt7Y29sdW1uLlBhcmFtZXRlcnMuYm9yZGVyLnRvcC5zdHlsZX19IHt7Y29sdW1uLlBhcmFtZXRlcnMuYm9yZGVyLnRvcC5jb2xvcn19IHt7Y29sdW1uLlBhcmFtZXRlcnMuYm9yZGVyLnJpZ2h0LndpZHRofX1weCB7e2NvbHVtbi5QYXJhbWV0ZXJzLmJvcmRlci5yaWdodC5zdHlsZX19IHt7Y29sdW1uLlBhcmFtZXRlcnMuYm9yZGVyLnJpZ2h0LmNvbG9yfX0ge3tjb2x1bW4uUGFyYW1ldGVycy5ib3JkZXIuYm90dG9tLndpZHRofX1weCB7e2NvbHVtbi5QYXJhbWV0ZXJzLmJvcmRlci5ib3R0b20uc3R5bGV9fSB7e2NvbHVtbi5QYXJhbWV0ZXJzLmJvcmRlci5ib3R0b20uY29sb3J9fSB7e2NvbHVtbi5QYXJhbWV0ZXJzLmJvcmRlci5sZWZ0LndpZHRofX1weCB7e2NvbHVtbi5QYXJhbWV0ZXJzLmJvcmRlci5sZWZ0LnN0eWxlfX0ge3tjb2x1bW4uUGFyYW1ldGVycy5ib3JkZXIubGVmdC5jb2xvcn19ICFpbXBvcnRhbnQ7IGJhY2tncm91bmQtY29sb3I6IHt7Y29sdW1uLlBhcmFtZXRlcnMuQmFja2dyb3VuZENvbG9yQX19ICFpbXBvcnRhbnQ7IGJveC1zaGFkb3c6IHt7Y29sdW1uLlBhcmFtZXRlcnMuU2hhZG93SE9mZnNldH19e3tjb2x1bW4uUGFyYW1ldGVycy5TaGFkb3dVbml0c319IHt7Y29sdW1uLlBhcmFtZXRlcnMuU2hhZG93Vk9mZnNldH19e3tjb2x1bW4uUGFyYW1ldGVycy5TaGFkb3dVbml0c319IHt7Y29sdW1uLlBhcmFtZXRlcnMuU2hhZG93Qmx1cn19e3tjb2x1bW4uUGFyYW1ldGVycy5TaGFkb3dVbml0c319IHt7Y29sdW1uLlBhcmFtZXRlcnMuU2hhZG93U3ByZWFkfX17e2NvbHVtbi5QYXJhbWV0ZXJzLlNoYWRvd1VuaXRzfX0ge3tjb2x1bW4uUGFyYW1ldGVycy5TaGFkb3dDb2xvcn19O1wiPjxkaXYgbmctc3dpdGNoPWNvbHVtbi5FbGVtZW50VHlwZT48ZGl2IG5nLXN3aXRjaC13aGVuPWdjb2wgbmctc2hvdz1cImNvbHVtbi5TdGF0dXM9PVxcJ0FjdGl2ZVxcJ1wiIGt0LWdyaWQtY29sdW1uIHJlc291cmNlLWZvcm0tbG9hZGVkPXJlc291cmNlRm9ybUxvYWRlZCBncmlkLXR5cGU9Z3JpZFR5cGUgc2hvdy1zZWFyY2gtZmlsdGVycz1zaG93U2VhcmNoRmlsdGVycyBwYXJlbnQtcmVzb3VyY2UtZGVmLWlkPXBhcmVudFJlc291cmNlRGVmSWQgcmVzb3VyY2UtcmVjb3JkLWlkPXJlc291cmNlUmVjb3JkSWQgcmVzb3VyY2UtZGVmaW5pdGlvbj1yZXNvdXJjZURlZmluaXRpb24gaW5wdXQtYXJyYXk9Y29sdW1uIGZvcm0tcGFyYW1zPWZvcm1QYXJhbXMgZm9ybS1wYXJhbXMtcGFyZW50PWZvcm1QYXJhbXNQYXJlbnQgZm9ybS1kYXRhPWZvcm1EYXRhIHBhcmFtcz1wYXJhbXMgcGFyZW50PXJvdyBhbGwtY29sdW1ucz1yb3cubGF5b3V0IGFsbC1yb3dzPWFsbFJvd3MgaW5kZXg9JGluZGV4IGNsYXNzPXAtMD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IHAtMVwiIG5nLWlmPVwicm93LkFsbG93U29ydCB8fCBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09NFwiPjxhIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgbWwtM1wiIG5nLWNsYXNzPVwie1xcJ2VsZW1lbnQtZHJhZy1oYW5kbGVcXCc6Zm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEsXFwne3tncmlkVHlwZX19LXJvdy1kcmFnLWhhbmRsZVxcJzpmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09NH1cIiB0aXRsZT1cIlNvcnQgbGF5b3V0IGNvbnRhaW5lclwiIGhyZWY+PGkgY2xhc3M9XCJmYSBmYS1zb3J0XCIgbmctY2xhc3M9XCJ7XFwnZWxlbWVudC1kcmFnLWhhbmRsZVxcJzpmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSxcXCd7e2dyaWRUeXBlfX0tcm93LWRyYWctaGFuZGxlXFwnOmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT00fVwiPjwvaT48L2E+IDxzcGFuIGNsYXNzPVwidGFnIGg2IG1sLTNcIj5MYXlvdXQgY29udGFpbmVyICZuYnNwIHt7OjpwYXJlbnQubGF5b3V0LmluZGV4T2Yocm93KSsxfX08L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0R3JpZFJvd0V4ZS5odG1sJywnPGRpdiBuZy1pZj06OnJvdy5QYXJhbWV0ZXJzLlByaW50YWJsZSBjbGFzcz1cImRyb3BsZWZ0IHJvdW5kZWRcIiBzdHlsZT1cInotaW5kZXg6MTAwOyBtaW4td2lkdGg6IG1heC1jb250ZW50O3RleHQtYWxpZ246IHJpZ2h0O1wiPjxhIG5nLWNsaWNrPW9sZHByaW50Um93KHJvdy5QcmVzZW50YXRpb25JZCkgaWQ9c2VhcmNoLWZpbHRlci17ezo6ZmQuSXRlbUlkfX0gZGF0YS10b2dnbGU9ZHJvcGRvd24gYXJpYS1oYXNwb3B1cD10cnVlIGFyaWEtZXhwYW5kZWQ9ZmFsc2UgdHlwZT1idXR0b24gY2xhc3M9XCJub3ByaW50IGJ0biBidG4tc2Vjb25kYXJ5IGJ0bi1zbVwiIGhyZWY+PGkgc3R5bGU9Y29sb3I6YmxhY2sgY2xhc3M9XCJub3ByaW50IGZhcyBmYS1wcmludCBmYS1zbSB7ezo6ZmQuU2VhcmNoLmljb259fVwiIHRpdGxlPVwiRmlsdGVyIDoge3s6OmZkLlNlYXJjaC5uYW1lfX1cIj48L2k+e3s6OmZkLlNlYXJjaC5uYW1lfX08L2E+PC9kaXY+PGRpdiBpZD1yb3d7ezo6cm93LlByZXNlbnRhdGlvbklkfX0gY2xhc3M9Zm9ybS1zZWN0aW9uIG5nLXNob3c9Ojpyb3cuU2hvd0ZpZWxkIHN0eWxlPVwiYmFja2dyb3VuZDogdXJsKHt7Ojpyb3cuUGFyYW1ldGVycy5CYWNrZ3JvdW5kSW1hZ2VVcmx9fSkge3s6OnJvdy5QYXJhbWV0ZXJzLkJhY2tncm91bmRDb2xvckF9fSB7ezo6cm93LlBhcmFtZXRlcnMuUmVwZWF0QmFja1RleHR9fSAhaW1wb3J0YW50OyBoZWlnaHQ6IHt7Ojpyb3cuUGFyYW1ldGVycy5CYWNrZ3JvdW5kSW1hZ2VIZWlnaHR9fXt7Ojpyb3cuUGFyYW1ldGVycy5CYWNrZ3JvdW5kSW1hZ2VVbml0fX07XCI+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sIHAtMFwiPjxkaXYgbmctaWY9Ojpyb3cuU2hvd0hlYWRlciBjbGFzcz1cInJvdyBtLTAgc2VjdGlvbi1oZWFkZXJcIj48ZGl2IGNsYXNzPVwiY29sIHAtMSBteS1hdXRvXCI+PHNwYW4gY2xhc3M9XCJzZWN0aW9uLXRpdGxlIHRhZyBzaG93LXdoZW4tZWRpdCBwLTEgcHgtMiBtYi0wIG1sLTEgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTBcIj57ezo6cm93Lk5hbWV9fTwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IHAtMCBtLTBcIj48ZGl2IG5nLXJlcGVhdD1cImNvbHVtbiBpbiByb3cubGF5b3V0IHRyYWNrIGJ5IGNvbHVtbi5pZFwiIG5nLWlmPVwiOjpjb2x1bW4uU3RhdHVzPT1cXCdBY3RpdmVcXCdcIiBjbGFzcz1cInNob3cte3tjb2x1bW4uU2hvd0ZpZWxkfX0gcC0wIGNvbC1sZy17ezo6Y29sdW1uLlNpemVYfX0gY29sLW1kLXt7Ojpjb2x1bW4uUGFyYW1ldGVycy5TaXplWE1kfX0gY29sLXNtLXt7Ojpjb2x1bW4uUGFyYW1ldGVycy5TaXplWFNtfX0gY29sLXt7Ojpjb2x1bW4uUGFyYW1ldGVycy5TaXplWFhzfX0ge3tjb2x1bW4uUGFyYW1ldGVycy5jdXN0b21DU1N9fVwiIG5nLWNsYXNzPVwieyBcXCdjb2wtYXV0b1xcJzpjb2x1bW4uUGFyYW1ldGVycy5BdXRvU2l6ZSxcXCdyb3VuZGVkXFwnOmNvbHVtbi5QYXJhbWV0ZXJzLlJvdW5kZWRCb3JkZXJzfVwiIHN0eWxlPVwicGFkZGluZy10b3A6e3s6OmNvbHVtbi5QYXJhbWV0ZXJzLnBhZGRpbmcudG9wLnZhbHVlfX17ezo6Y29sdW1uLlBhcmFtZXRlcnMucGFkZGluZy50b3AudW5pdHN9fSAhaW1wb3J0YW50OyBwYWRkaW5nLWJvdHRvbTp7ezo6Y29sdW1uLlBhcmFtZXRlcnMucGFkZGluZy5ib3R0b20udmFsdWV9fXt7Ojpjb2x1bW4uUGFyYW1ldGVycy5wYWRkaW5nLmJvdHRvbS51bml0c319ICFpbXBvcnRhbnQ7IHBhZGRpbmctbGVmdDp7ezo6Y29sdW1uLlBhcmFtZXRlcnMucGFkZGluZy5sZWZ0LnZhbHVlfX17ezo6Y29sdW1uLlBhcmFtZXRlcnMucGFkZGluZy5sZWZ0LnVuaXRzfX0gIWltcG9ydGFudDsgcGFkZGluZy1yaWdodDp7ezo6Y29sdW1uLlBhcmFtZXRlcnMucGFkZGluZy5yaWdodC52YWx1ZX19e3s6OmNvbHVtbi5QYXJhbWV0ZXJzLnBhZGRpbmcucmlnaHQudW5pdHN9fSAhaW1wb3J0YW50OyBtYXJnaW4tdG9wOnt7Ojpjb2x1bW4uUGFyYW1ldGVycy5tYXJnaW4udG9wLnZhbHVlfX17ezo6Y29sdW1uLlBhcmFtZXRlcnMubWFyZ2luLnRvcC51bml0c319ICFpbXBvcnRhbnQ7IG1hcmdpbi1ib3R0b206e3s6OmNvbHVtbi5QYXJhbWV0ZXJzLm1hcmdpbi5ib3R0b20udmFsdWV9fXt7Ojpjb2x1bW4uUGFyYW1ldGVycy5tYXJnaW4uYm90dG9tLnVuaXRzfX0gIWltcG9ydGFudDsgbWFyZ2luLWxlZnQ6e3s6OmNvbHVtbi5QYXJhbWV0ZXJzLm1hcmdpbi5sZWZ0LnZhbHVlfX17ezo6Y29sdW1uLlBhcmFtZXRlcnMubWFyZ2luLmxlZnQudW5pdHN9fSAhaW1wb3J0YW50OyBtYXJnaW4tcmlnaHQ6e3s6OmNvbHVtbi5QYXJhbWV0ZXJzLm1hcmdpbi5yaWdodC52YWx1ZX19e3s6OmNvbHVtbi5QYXJhbWV0ZXJzLm1hcmdpbi5yaWdodC51bml0c319ICFpbXBvcnRhbnQ7IGJvcmRlci10b3A6e3s6OmNvbHVtbi5QYXJhbWV0ZXJzLmJvcmRlci50b3Aud2lkdGh9fXB4IHt7Ojpjb2x1bW4uUGFyYW1ldGVycy5ib3JkZXIudG9wLnN0eWxlfX0ge3s6OmNvbHVtbi5QYXJhbWV0ZXJzLmJvcmRlci50b3AuY29sb3J9fSAhaW1wb3J0YW50OyBib3JkZXItYm90dG9tOnt7Ojpjb2x1bW4uUGFyYW1ldGVycy5ib3JkZXIuYm90dG9tLndpZHRofX1weCB7ezo6Y29sdW1uLlBhcmFtZXRlcnMuYm9yZGVyLmJvdHRvbS5zdHlsZX19IHt7Y29sdW1uLlBhcmFtZXRlcnMuYm9yZGVyLmJvdHRvbS5jb2xvcn19ICFpbXBvcnRhbnQ7IGJvcmRlci1sZWZ0Ont7Ojpjb2x1bW4uUGFyYW1ldGVycy5ib3JkZXIubGVmdC53aWR0aH19cHgge3s6OmNvbHVtbi5QYXJhbWV0ZXJzLmJvcmRlci5sZWZ0LnN0eWxlfX0ge3s6OmNvbHVtbi5QYXJhbWV0ZXJzLmJvcmRlci5sZWZ0LmNvbG9yfX0gIWltcG9ydGFudDsgYm9yZGVyLXJpZ2h0Ont7Ojpjb2x1bW4uUGFyYW1ldGVycy5ib3JkZXIucmlnaHQud2lkdGh9fXB4IHt7Ojpjb2x1bW4uUGFyYW1ldGVycy5ib3JkZXIucmlnaHQuc3R5bGV9fSB7ezo6Y29sdW1uLlBhcmFtZXRlcnMuYm9yZGVyLnJpZ2h0LmNvbG9yfX0gIWltcG9ydGFudDsgYmFja2dyb3VuZC1jb2xvcjoge3s6OmNvbHVtbi5QYXJhbWV0ZXJzLkJhY2tncm91bmRDb2xvckF9fSAhaW1wb3J0YW50OyBib3gtc2hhZG93OiB7ezo6Y29sdW1uLlBhcmFtZXRlcnMuU2hhZG93SE9mZnNldH19e3s6OmNvbHVtbi5QYXJhbWV0ZXJzLlNoYWRvd1VuaXRzfX0ge3s6OmNvbHVtbi5QYXJhbWV0ZXJzLlNoYWRvd1ZPZmZzZXR9fXt7Ojpjb2x1bW4uUGFyYW1ldGVycy5TaGFkb3dVbml0c319IHt7Ojpjb2x1bW4uUGFyYW1ldGVycy5TaGFkb3dCbHVyfX17ezo6Y29sdW1uLlBhcmFtZXRlcnMuU2hhZG93VW5pdHN9fSB7ezo6Y29sdW1uLlBhcmFtZXRlcnMuU2hhZG93U3ByZWFkfX17ezo6Y29sdW1uLlBhcmFtZXRlcnMuU2hhZG93VW5pdHN9fSB7ezo6Y29sdW1uLlBhcmFtZXRlcnMuU2hhZG93Q29sb3J9fTtcIj48ZGl2IG5nLXN3aXRjaD06OmNvbHVtbi5FbGVtZW50VHlwZT48ZGl2IG5nLXN3aXRjaC13aGVuPWdjb2wga3QtZ3JpZC1jb2x1bW4gcmVzb3VyY2UtcmVjb3JkLWlkPTo6cmVzb3VyY2VSZWNvcmRJZCByZXNvdXJjZS1mb3JtLWxvYWRlZD1yZXNvdXJjZUZvcm1Mb2FkZWQgZ3JpZC10eXBlPTo6Z3JpZFR5cGUgc2hvdy1zZWFyY2gtZmlsdGVycz1zaG93U2VhcmNoRmlsdGVycyBwYXJlbnQtcmVzb3VyY2UtZGVmLWlkPTo6cGFyZW50UmVzb3VyY2VEZWZJZCByZXNvdXJjZS1kZWZpbml0aW9uPTo6cmVzb3VyY2VEZWZpbml0aW9uIGlucHV0LWFycmF5PWNvbHVtbiBmb3JtLXBhcmFtcz06OmZvcm1QYXJhbXMgcGFyYW1zPTo6cGFyYW1zIHBhcmVudC13aWRnZXQ9cGFyZW50V2lkZ2V0IGZvcm0tcGFyYW1zLXBhcmVudD06OmZvcm1QYXJhbXNQYXJlbnQgZm9ybS1kYXRhPWZvcm1EYXRhIHBhcmVudD06OnJvdyBhbGwtY29sdW1ucz1yb3cubGF5b3V0IGFsbC1yb3dzPWFsbFJvd3MgaW5kZXg9JGluZGV4IGNsYXNzPXAtMD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RHcmlkUm93UHJvcGVydGllcy5odG1sJywnPGRpdj48ZGl2IGt0LXByb3BlcnR5LWhlYWRlcj48L2Rpdj48ZGl2IG5nLWNsaWNrPVwibG9jYWxWYXJzLnNob3dCYXNpYyA9ICFsb2NhbFZhcnMuc2hvd0Jhc2ljXCIgY2xhc3M9XCJleHBhbmQtcHJvcGVydHktcGFuZWwgdGFnIGJvcmRlci1ib3R0b20gYm9yZGVyLXN1Y2Nlc3MgbXktMSBweS0xXCIgZGF0YS10b2dnbGU9Y29sbGFwc2UgaHJlZj0jbWFpblByb3BlcnR5UGFuZWwgcm9sZT1idXR0b24gYXJpYS1leHBhbmRlZD10cnVlIGFyaWEtY29udHJvbHM9bWFpblByb3BlcnR5UGFuZWw+PHNwYW4gY2xhc3M9XCJjb2wgcC0wXCI+QmFzaWM8L3NwYW4+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PWxvY2FsVmFycy5zaG93QmFzaWMgY2xhc3M9XCJmYXMgZmEtYW5nbGUtZG93blwiPjwvaT4gPGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLXNob3c9IWxvY2FsVmFycy5zaG93QmFzaWMgY2xhc3M9XCJmYXMgZmEtYW5nbGUtdXBcIj48L2k+PC9kaXY+PGRpdiBjbGFzcz1cIm1iLTQgY29sbGFwc2Ugc2hvd1wiIGlkPW1haW5Qcm9wZXJ0eVBhbmVsPjxkaXYgY2xhc3M9XCJjdXN0b20tY29udHJvbCBjdXN0b20tY2hlY2tib3hcIj48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1jdXN0b20tY29udHJvbC1pbnB1dCBpZD1jYlNob3dGaWVsZCBuZy1tb2RlbD1mZC5TaG93RmllbGQ+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPWNiU2hvd0ZpZWxkPlNob3cgcm93PC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLWNoZWNrYm94XCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgaWQ9Y2JTaG93SGVhZGVyIG5nLW1vZGVsPWZkLlNob3dIZWFkZXI+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPWNiU2hvd0hlYWRlcj5TaG93IGhlYWRlcjwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveFwiPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IGlkPWNiUHJpbnRhYmxlIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuUHJpbnRhYmxlPiA8bGFiZWwgY2xhc3M9XCJjdXN0b20tY29udHJvbC1sYWJlbCBsYWJlbC14c1wiIGZvcj1jYlByaW50YWJsZT5QcmludGFibGU8L2xhYmVsPjwvZGl2PjxkaXY+PGxhYmVsPkNTUzwvbGFiZWw+IDx0ZXh0YXJlYSB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5SYXdDU1M+XFxyXFxuXFx0XFx0XFx0PC90ZXh0YXJlYT48L2Rpdj48ZGl2IGNsYXNzPW15LTI+PGRpdiBjbGFzcz1cInNtYWxsIGJvcmRlci1ib3R0b21cIj5JbWFnZSBzb3VyY2UgdHlwZTwvZGl2PjxkaXYgY2xhc3M9XCJjdXN0b20tY29udHJvbCBjdXN0b20tcmFkaW9cIj48aW5wdXQgdHlwZT1yYWRpbyBpZD1zcmNUeXBlMXt7ZmQuUHJlc2VudGF0aW9uSWR9fSBjbGFzcz1jdXN0b20tY29udHJvbC1pbnB1dCBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlNyY1R5cGUgdmFsdWU9d2ViIG5hbWU9c3JjVHlwZXt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1jbGljaz1cImZkLlBhcmFtZXRlcnMuU3JjVHlwZT1cXCd3ZWJcXCdcIiBuZy1jaGVja2VkPVwiZmQuUGFyYW1ldGVycy5TcmNUeXBlPT1cXCd3ZWJcXCdcIj4gPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgbGFiZWwteHNcIiBmb3I9c3JjVHlwZTF7e2ZkLlByZXNlbnRhdGlvbklkfX0+V2ViPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLXJhZGlvXCI+PGlucHV0IHR5cGU9cmFkaW8gaWQ9c3JjVHlwZTJ7e2ZkLlByZXNlbnRhdGlvbklkfX0gY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5TcmNUeXBlIHZhbHVlPWZpbGUgbmFtZT1zcmNUeXBle3tmZC5QcmVzZW50YXRpb25JZH19IG5nLWNsaWNrPVwiZmQuUGFyYW1ldGVycy5TcmNUeXBlPVxcJ2ZpbGVcXCdcIiBuZy1jaGVja2VkPVwiZmQuUGFyYW1ldGVycy5TcmNUeXBlPT1cXCdmaWxlXFwnXCI+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPXNyY1R5cGUye3tmZC5QcmVzZW50YXRpb25JZH19PlJlc291cmNlIGZpbGU8L2xhYmVsPjwvZGl2PjwvZGl2PjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5CYWNrZ3JvdW5kIGNvbG9yPC9sYWJlbD48ZGl2PjxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBjb2xvci1waWNrZXIgY29sb3ItcGlja2VyLXNob3ctY2FuY2VsLWJ1dHRvbj10cnVlIG5nLXN0eWxlPXtiYWNrZ3JvdW5kOmZkLlBhcmFtZXRlcnMuQmFja2dyb3VuZENvbG9yQX0gY29sb3ItcGlja2VyLWNhbmNlbC1idXR0b24tY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXhzXCIgY29sb3ItcGlja2VyLXBvc2l0aW9uPWxlZnQgY29sb3ItcGlja2VyLW1vZGVsPWZkLlBhcmFtZXRlcnMuQmFja2dyb3VuZENvbG9yQT48L2Rpdj48ZGl2IGNsYXNzPVwibXktMiBwLTJcIiBzdHlsZT1cImJhY2tncm91bmQ6IGFxdWFtYXJpbmU7IGJvcmRlci1yYWRpdXM6NXB4XCI+PGRpdiBuZy1pZj1cImZkLlBhcmFtZXRlcnMuU3JjVHlwZT09XFwnd2ViXFwnIHx8IGZkLlBhcmFtZXRlcnMuU3JjVHlwZT09PXVuZGVmaW5lZFwiPjxsYWJlbD5CYWNrZ3JvdW5kIGltYWdlIHVybDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5CYWNrZ3JvdW5kSW1hZ2VVcmw+PC9kaXY+PGRpdiBjbGFzcz1tYi0yIG5nLWlmPVwiZmQuUGFyYW1ldGVycy5TcmNUeXBlPT1cXCdmaWxlXFwnXCI+PGRpdiBuZy1mb3JtPVwiXFwnc291cmNlRmlsZVxcJytmZC5QcmVzZW50YXRpb25JZFwiIGNsYXNzPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5Tb3VyY2UgZmlsZTwvbGFiZWw+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuRmlsZURlZklkIHNpemU9XCJcXCdzbWFsbFxcJ1wiIHNlbGVjdGVkLWl0ZW1zPWZkLlBhcmFtZXRlcnMuRmlsZURlZklkIGlzLW11bHRpcGxlPWZhbHNlIG5hbWU9c291cmNlRmlsZXt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1yZXF1aXJlZD1mYWxzZSBkcm9wZG93bi1pdGVtcz1mZC5sb2NhbFZhcnMubGlzdE9mRmlsZVR5cGVzIGRyb3Bkb3duLWlkPVwiXFwnc291cmNlRmlsZVxcJytmZC5QcmVzZW50YXRpb25JZFwiIHBhcmVudC1mb3JtLWlkPVwiXFwnc291cmNlRmlsZVxcJytmZC5QcmVzZW50YXRpb25JZFwiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IGZpbGUgdHlwZVxcJ1wiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PC9kaXY+PGxhYmVsPlNvdXJjZSBmaWxlIHJlY29yZCBpZDwvbGFiZWw+IDxpbnB1dCB0eXBlPW51bWJlciBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkZpbGVJZD48L2Rpdj48ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLWNoZWNrYm94XCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgaWQ9Y2JSZXBlYXQgbmctY2hhbmdlPWZkLkJhY2tSZXBlYXRDaGFuZ2VkKCkgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5SZXBlYXRCYWNrSW1nPiA8bGFiZWwgY2xhc3M9XCJjdXN0b20tY29udHJvbC1sYWJlbCBsYWJlbC14c1wiIGZvcj1jYlJlcGVhdD5SZXBlYXQgYmFja2dyb3VuZCBpbWFnZTwvbGFiZWw+PC9kaXY+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiIGZvcj1zZXRFbGVtZW50V2lkdGg+VW5pdHM8L2xhYmVsPjxzZWxlY3QgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5CYWNrZ3JvdW5kSW1hZ2VVbml0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIGlkPXNldEVsZW1lbnRXaWR0aD48b3B0aW9uPnB4PC9vcHRpb24+PG9wdGlvbj5lbTwvb3B0aW9uPjxvcHRpb24+JTwvb3B0aW9uPjwvc2VsZWN0PjxsYWJlbD5CYWNrZ3JvdW5kIGltYWdlIGhlaWdodDwvbGFiZWw+IDxpbnB1dCB0eXBlPW51bWJlciBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkJhY2tncm91bmRJbWFnZUhlaWdodD48L2Rpdj48ZGl2IG5nLWlmPWZhbHNlIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLWNoZWNrYm94XCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgaWQ9Y2JBbGxvd1NvcnQgbmctbW9kZWw9ZmQuQWxsb3dTb3J0PiA8bGFiZWwgY2xhc3M9XCJjdXN0b20tY29udHJvbC1sYWJlbCBsYWJlbC14c1wiIGZvcj1jYkFsbG93U29ydD5BbGxvdyBzb3J0PC9sYWJlbD48L2Rpdj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4td2FybmluZ1wiIHRpdGxlPVwiRGVsZXRlIGNvbnRhaW5lclwiIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5nc3J2YygpLmNoYW5nZUNvbmZpcm1EZWxldGVFbGVtZW50KCk+PGkgY2xhc3M9XCJmYSBmYS10cmFzaCB0ZXh0LWRhcmtcIiBuZy1jbGFzcz1cIntcXCdkaXNhYmxlZFxcJzogZm9ybVBhcmFtcy5mb3JtTG9ja2VkfVwiPjwvaT4gRGVsZXRlIGxheW91dCBjb250YWluZXI8L2J1dHRvbj48ZGl2IGNsYXNzPW15LTE+PGRpdiBuZy1pZj1mZC5sb2NhbFZhcnMuZ3NydmMoKS5nZXRDb25maXJtRGVsZXRlRWxlbWVudCgpIGNsYXNzPWNhcmQ+PGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHAtMCBweC0xIGJnLWxpZ2h0XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1leGNsYW1hdGlvbi10cmlhbmdsZSB0ZXh0LWRhbmdlclwiPjxzcGFuIGNsYXNzPVwibWwtMiBzbWFsbFwiPkRlbGV0ZSBsYXlvdXQgY29uZmlybWF0aW9uPC9zcGFuPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPW15LTE+PGRpdiBjbGFzcz1cIm1sLTEgc21hbGwgYm9sZCB0ZXh0LWRhcmtcIj5DbGljayBDb25maXJtIHRvIGRlbGV0ZSBsYXlvdXQgY29udGFpbmVyITwvZGl2PjxkaXYgY2xhc3M9XCJtbC0xIHNtYWxsIHRleHQtZGFya1wiPlRoaXMgYWN0aW9uIG1heSByZXN1bHQgaW4gYSBsb3NzIG9mIGRhdGEhPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1wLTE+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4teHMgYnRuLWRhbmdlclwiIHRpdGxlPUNvbmZpcm0gbmctY2xpY2s9ZmQubG9jYWxWYXJzLmdzcnZjKCkuc2V0Q29uZmlybURlbGV0ZUVsZW1lbnQoZmFsc2UpO2ZkLmxvY2FsVmFycy5nc3J2YygpLmRlbGV0ZUVsZW1lbnQoZmQpPkNvbmZpcm0gPGkgY2xhc3M9XCJtbC0yIGZhIGZhLWNoZWNrXCI+PC9pPjwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5nc3J2YygpLnNldENvbmZpcm1EZWxldGVFbGVtZW50KGZhbHNlKSBjbGFzcz1cImJ0biBidG4teHMgYnRuLWxpbmsgdGV4dC1tdXRlZCBtbC1hdXRvXCI+Q2FuY2VsPC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1mYWxzZT48bGFiZWw+VGFiIGluZGV4PC9sYWJlbD4gPGlucHV0IHR5cGU9bnVtYmVyIHBsYWNlaG9sZGVyPVwidGFiIGluZGV4XCIgY2xhc3M9Zm9ybS1jb250cm9sIG5nLW1vZGVsPWZkLlRhYkluZGV4PiA8bGFiZWw+U2l6ZVg8L2xhYmVsPiA8aW5wdXQgdHlwZT1udW1iZXIgcGxhY2Vob2xkZXI9c2l6ZVggY2xhc3M9Zm9ybS1jb250cm9sIG5nLW1vZGVsPWZkLlNpemVYPjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEdyaWRzdGVyV2lkZ2V0Lmh0bWwnLCc8ZGl2IGlkPWt0R3JpZHN0ZXJXaWRnZXQ+PGRpdiBzdHlsZT1cImJvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2M7YmFja2dyb3VuZC1jb2xvcjojZWVlXCI+PGRpdiBjbGFzcz1mbG9hdC1sZWZ0IG5nLXNob3c9IWlucHV0QXJyYXkubG9ja2VkIHN0eWxlPW1hcmdpbi1sZWZ0OjZweD48YSBocmVmIGNsYXNzPWRyYWctaGFuZGxlPjxpIGNsYXNzPVwiZmEgZmEtYXJyb3dzXCI+PC9pPjwvYT48L2Rpdj48c3Ryb25nIHN0eWxlPXBhZGRpbmctbGVmdDoyMHB4Pnt7IGlucHV0QXJyYXkubmFtZSB9fTwvc3Ryb25nPjxkaXYgY2xhc3M9ZmxvYXQtcmlnaHQgc3R5bGU9bWFyZ2luLXJpZ2h0OjZweD48YSB1aWItcG9wb3Zlci10ZW1wbGF0ZT1cIlxcJ3dpZGdldHByb3BlcnRpZXMuaHRtbFxcJ1wiIG5nLWlmPSFpbnB1dEFycmF5LmxvY2tlZCBwb3BvdmVyLXRyaWdnZXI9b3V0c2lkZUNsaWNrIHBvcG92ZXItYXBwZW5kLXRvLWJvZHk9dHJ1ZSBwb3BvdmVyLXBsYWNlbWVudD1sZWZ0LXRvcD48aSBjbGFzcz1cImZhIGZhLWNhcmV0LXNxdWFyZS1vLXJpZ2h0XCI+PC9pPjwvYT4gPGEgdWliLXBvcG92ZXItdGVtcGxhdGU9XCJcXCd0b29sYm94Lmh0bWxcXCdcIiBuZy1pZj0haW5wdXRBcnJheS5sb2NrZWQgcG9wb3Zlci10cmlnZ2VyPW91dHNpZGVDbGljayBwb3BvdmVyLWFwcGVuZC10by1ib2R5PXRydWUgcG9wb3Zlci1wbGFjZW1lbnQ9bGVmdC10b3A+PGkgY2xhc3M9XCJmYSBmYS1wbHVzLXNxdWFyZVwiIG5nLWNsYXNzPVwie1xcJ2NvbG9yOmJsYWNrXFwnOiBpbnB1dEFycmF5LmxvY2tlZH1cIj48L2k+PC9hPiA8YSB0aXRsZT1cIlJlbW92ZSB3aWRnZXRcIiBuZy1pZj0haW5wdXRBcnJheS5sb2NrZWQgbmctY2xpY2s9cmVtb3ZlKGlucHV0QXJyYXkpPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBuZy1jbGFzcz1cIntcXCdkaXNhYmxlZFxcJzogaW5wdXRBcnJheS5sb2NrZWR9XCI+PC9pPjwvYT4gPGEgdGl0bGU9XCJMb2NrL1VubG9jayB3aWRnZXRcIiBuZy1pZj0hZm9ybUxvY2tlZCBuZy1jbGljaz1cImlucHV0QXJyYXkubG9ja2VkPSFpbnB1dEFycmF5LmxvY2tlZDtpbnZlcnNlKClcIj48aSBuZy1jbGFzcz1cIntcXCdmYSBmYS1sb2NrXFwnOiBpbnB1dEFycmF5LmxvY2tlZCAsXFwnZmEgZmEtdW5sb2NrLWFsdFxcJzogIWlucHV0QXJyYXkubG9ja2VkLFxcJ2NvbG9yOmJsYWNrXFwnOiBpbnB1dEFycmF5LmxvY2tlZH1cIj48L2k+PC9hPjwvZGl2PjwvZGl2PjxkaXYgbmctc3dpdGNoPWdyaWRzdGVyVHlwZSBzdHlsZT1tYXJnaW4tdG9wOjE1cHg7bWFyZ2luLXJpZ2h0OjBweD48ZGl2IG5nLXN3aXRjaC13aGVuPXJlc291cmNlIGt0LWZvcm1sYXlvdXQ+PC9kaXY+PGRpdiBuZy1zd2l0Y2gtd2hlbj10YXNrIGt0LXRhc2tmb3JtbGF5b3V0PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9dG9vbGJveC5odG1sIHR5cGU9dGV4dC9uZy10ZW1wbGF0ZT48ZGl2IG5nLWlmPVwiaW5wdXRBcnJheS5sb2NrZWRcIiA+VW5sb2NrIHdpZGdldCE8L2Rpdj4gPGRpdiBuZy1pZj1cIiFpbnB1dEFycmF5LmxvY2tlZFwiIGt0LXRvb2xib3ggLz48L3NjcmlwdD48c2NyaXB0IGlkPXdpZGdldHByb3BlcnRpZXMuaHRtbCB0eXBlPXRleHQvbmctdGVtcGxhdGU+PGRpdj4gPGRpdiBjbGFzcz1cImJveC1oZWFkZXItYnRucyBmbG9hdC1yaWdodFwiID4gPC9kaXY+IDxsYWJlbD5OYW1lIDwvbGFiZWw+IDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmctbW9kZWw9XCJpbnB1dEFycmF5Lm5hbWVcIiAvPiA8ZGl2IGNsYXNzPVwiY2hlY2tib3hcIj4gPGxhYmVsPiA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmctbW9kZWw9XCJpbnB1dEFycmF5LnNob3dGaWVsZFwiPiBTaG93IHdpZGdldCA8L2xhYmVsPiA8L2Rpdj4gPGxhYmVsPlRhYiBpbmRleCA8L2xhYmVsPiA8aW5wdXQgdHlwZT1cIm51bWJlclwiIHBsYWNlaG9sZGVyPVwidGFiIGluZGV4XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuZy1tb2RlbD1cImlucHV0QXJyYXkudGFiSW5kZXhcIiAvPiA8L2Rpdj48L3NjcmlwdD48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RHcmlkc3RlcldpZGdldFJlc291cmNlLmh0bWwnLCc8ZGl2IGlkPWt0R3JpZHN0ZXJXaWRnZXRSZXNvdXJjZT48ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrO2JvcmRlcjoxcHggc29saWQgI2NjYzt3aWR0aDogMTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiNlZWVcIj48ZGl2IG5nLWlmPSF3aWRnZXQubG9ja2VkIHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrO2JvcmRlcjoxcHggc29saWQgI2NjY1wiPjxpIGNsYXNzPVwiZmEgZmEtaGFuZC1wYXBlci1vIGRyYWctaGFuZGxlXCIgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2tcIj48L2k+PC9kaXY+PGRpdiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jaztiYWNrZ3JvdW5kLWNvbG9yOiNlZWVcIj4mbmJzcCB7eyB3aWRnZXQubmFtZSB9fTwvZGl2PjxkaXYgY2xhc3M9ZmxvYXQtcmlnaHQgc3R5bGU9bWFyZ2luLXJpZ2h0OjZweD48YSB0aXRsZT1cIkxvY2svVW5sb2NrIHdpZGdldFwiIG5nLWNsaWNrPWxvY2soJGluZGV4KT48aSBuZy1jbGFzcz1cIntcXCdmYSBmYS1sb2NrXFwnOiB3aWRnZXQubG9ja2VkICxcXCdmYSBmYS11bmxvY2stYWx0XFwnOiAhd2lkZ2V0LmxvY2tlZCxcXCdjb2xvcjpibGFja1xcJzogd2lkZ2V0LmxvY2tlZH1cIj48L2k+PC9hPiA8YSB1aWItcG9wb3Zlci10ZW1wbGF0ZT1cIlxcJ3dpZGdldHByb3BlcnRpZXMuaHRtbFxcJ1wiIG5nLWlmPSF3aWRnZXQubG9ja2VkIHBvcG92ZXItdHJpZ2dlcj1vdXRzaWRlQ2xpY2sgcG9wb3Zlci1hcHBlbmQtdG8tYm9keT10cnVlIHBvcG92ZXItcGxhY2VtZW50PWxlZnQtdG9wPjxpIGNsYXNzPVwiZmEgZmEtY2FyZXQtc3F1YXJlLW8tcmlnaHRcIj48L2k+PC9hPiA8YSB1aWItcG9wb3Zlci10ZW1wbGF0ZT1cIlxcJ3Rvb2xib3guaHRtbFxcJ1wiIG5nLWlmPSF3aWRnZXQubG9ja2VkIHBvcG92ZXItdHJpZ2dlcj1vdXRzaWRlQ2xpY2sgcG9wb3Zlci1hcHBlbmQtdG8tYm9keT10cnVlIHBvcG92ZXItcGxhY2VtZW50PWxlZnQtdG9wPjxpIGNsYXNzPVwiZmEgZmEtcGx1cy1zcXVhcmVcIiBuZy1jbGFzcz1cIntcXCdjb2xvcjpibGFja1xcJzogd2lkZ2V0LmxvY2tlZH1cIj48L2k+PC9hPiA8YSB0aXRsZT1cIlJlbW92ZSB3aWRnZXRcIiBuZy1pZj0hd2lkZ2V0LmxvY2tlZCBuZy1jbGljaz1cIiF3aWRnZXQubG9ja2VkICYmIHJlbW92ZSgkaW5kZXgpXCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiIG5nLWNsYXNzPVwie1xcJ2Rpc2FibGVkXFwnOiB3aWRnZXQubG9ja2VkfVwiPjwvaT48L2E+PC9kaXY+PC9kaXY+PGRpdj48ZGl2IG5nLXN3aXRjaD1ncmlkc3RlclR5cGU+PGRpdiBuZy1zd2l0Y2gtd2hlbj1yZXNvdXJjZSBrdC1mb3JtbGF5b3V0IGFjdGl2ZT1mb3JtTG9hZGVkIGlucHV0LWFycmF5PXdpZGdldD48L2Rpdj48ZGl2IG5nLXN3aXRjaC13aGVuPXRhc2sga3QtdGFza2Zvcm1sYXlvdXQgYWN0aXZlPWZvcm1Mb2FkZWQgaW5wdXQtYXJyYXk9d2lkZ2V0PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9dG9vbGJveC5odG1sIHR5cGU9dGV4dC9uZy10ZW1wbGF0ZT48ZGl2IG5nLWlmPVwid2lkZ2V0LmxvY2tlZFwiID5VbmxvY2sgd2lkZ2V0ITwvZGl2PiA8ZGl2IG5nLWlmPVwiIXdpZGdldC5sb2NrZWRcIiBrdC10b29sYm94IC8+PC9zY3JpcHQ+PHNjcmlwdCBpZD13aWRnZXRwcm9wZXJ0aWVzLmh0bWwgdHlwZT10ZXh0L25nLXRlbXBsYXRlPjxkaXY+IDxkaXYgY2xhc3M9XCJib3gtaGVhZGVyLWJ0bnMgZmxvYXQtcmlnaHRcIiA+IDwvZGl2PiA8bGFiZWw+TmFtZSA8L2xhYmVsPiA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5nLW1vZGVsPVwid2lkZ2V0Lm5hbWVcIiAvPiA8ZGl2IGNsYXNzPVwiY2hlY2tib3hcIj4gPGxhYmVsPiA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmctY2xpY2s9XCJTaG93SGlkZVdpZGdldCgpXCIgbmctbW9kZWw9XCJ3aWRnZXQuc2hvd0ZpZWxkXCI+IFNob3cgd2lkZ2V0IDwvbGFiZWw+IDwvZGl2PiA8bGFiZWw+VGFiIGluZGV4IDwvbGFiZWw+IDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgcGxhY2Vob2xkZXI9XCJ0YWItaW5kZXhcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5nLW1vZGVsPVwid2lkZ2V0LnRhYkluZGV4XCIgLz4gPC9kaXY+PC9zY3JpcHQ+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0R3JvdXAuaHRtbCcsJzxkaXYgY2xhc3M9XCJyb3cgbS0wIHBiLTEgZm9ybS1ncm91cCBtdC0xIGRhdGFzZXQtaXRlbVwiIG5nLWlmPVwiZmQuU2hvd0ZpZWxkIHx8IChmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MilcIiBuZy1mb3JtPVwiaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fVwiIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlclxcJyA6IChpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiRpbnZhbGlkLFxcJ2JnLWdyYXktMjAgYm9yZGVyXFwnOmZkPT1nc3J2Yy5nZXRTZWxlY3RlZEZkKCkgJiYgZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzT3BlbmVkKCkgfVwiPjxkaXYgbmctaGlkZT1cIihmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZT09MiB8fCBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MikgJiYgZmQuUGFyYW1ldGVycy5IaWRlTGFiZWxcIiBzdHlsZT17e2ZkLmxhYmVsQWxpZ259fSBjbGFzcz17e2ZkLmdyaWRDbGFzc0xhYmVsfX0gbmctY2xhc3M9XCJ7XFwnY29sLWF1dG9cXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplfVwiPjxsYWJlbCBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2xhYmVsXFwnXCIgc3R5bGU9e3tmZC5jdXN0b21TdHlsZUxhYmVsfX0gZm9yPVwie3tmZC5OYW1lfX17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19XCIgY2xhc3M9XCJwLTAgbWFyZ2luTDUgZm9ybS1jb250cm9sLWxhYmVsIG5vLWJvcmRlciBhbGlnbi1taWRkbGVcIiBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiAoaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiRpbnZhbGlkLFxcJ2N1c3RvbS1lbC1sYXlvdXQtc3R5bGVcXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xfVwiPnt7ZmQuTGFiZWx9fTwvbGFiZWw+IDxpIG5nLWlmPWZvcm1EYXRhWzBdLmZvcm1EYXRhQmxvY2tjaGFpblswXSBuZy1jbGFzcz1cIntcXCdmYSBmYS1jaGVjayB0ZXh0LXN1Y2Nlc3NcXCc6IGZvcm1EYXRhWzBdLmZvcm1EYXRhQmxvY2tjaGFpblswXVtmZC5GaWVsZE5hbWVdPT1mb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdLFxcJ2ZhIGZhLXRpbWVzIHRleHQtZGFuZ2VyXFwnOmZvcm1EYXRhWzBdLmZvcm1EYXRhQmxvY2tjaGFpblswXVtmZC5GaWVsZE5hbWVdIT1mb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdfVwiPjwvaT48L2Rpdj48ZGl2IGNsYXNzPVwie3tmZC5ncmlkQ2xhc3NFbGVtZW50fX0gbXktYXV0b1wiPjxkaXYgdGl0bGU9e3tmb3JtRGF0YVswXS5mb3JtRGF0YUJsb2NrY2hhaW5bMF1bZmQuRmllbGROYW1lXX19IG5nLWNsYXNzPVwie1xcJ2N1c3RvbS1lbC1sYXlvdXQtc3R5bGUgY29sLWF1dG9cXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xLFxcJ2NvbC1hdXRvXFwnOiBmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPTF9XCIgbmctaWY9IWZkLlJlYWRPbmx5PjxzZWxlY3QgY2xhc3M9Zm9ybS1jb250cm9sIGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnZWxlbWVudFxcJ1wiIG5hbWU9XCJ7ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19XCIgbmctY2hhbmdlPXNlbGVjdGlvbl9jaGFuZ2VkKCkgc3R5bGU9e3tmZC5jdXN0b21TdHlsZUVsZW1lbnR9fSBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZFxcJyA6IChpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiRpbnZhbGlkIH1cIiBuZy1yZXF1aXJlZD1mZC5SZXF1aXJlZCBuZy1tb2RlbD1ncm91cEl0ZW0uc2VsZWN0ZWRHcm91cD48b3B0aW9uIHZhbHVlIHNlbGVjdGVkIGRpc2FibGVkIGNsYXNzPXRleHQtbGlnaHQ+e3s6OmZkLlNlYXJjaFRleHR9fTwvb3B0aW9uPjxvcHRpb24gbmctaWY9IWZkLlJlcXVpcmVkIHZhbHVlPW51bGw+PC9vcHRpb24+PG9wdGlvbiBuZy1yZXBlYXQ9XCIoaWQsdmFsKSBpbiA6Omdyb3VwTGlzdCB0cmFjayBieSBpZFwiIG5nLXZhbHVlPTo6dmFsIGNsYXNzPXAtMT57ezo6dmFsLm5hbWV9fTwvb3B0aW9uPjwvc2VsZWN0PjxwIG5nLWlmPWZvcm1EYXRhIG5nLWNsYXNzPVwie1xcJ2ludmFsaWQtdG9vbHRpcCByaWdodC0wIG10LW4yIG1yLTNcXCc6ZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PVxcJ3Rvb2x0aXBcXCcgfHwgZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PXVuZGVmaW5lZCxcXCdpbnZhbGlkLWZlZWRiYWNrXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCdmZWVkYmFja1xcJyxcXCdkLWJsb2NrXFwnOihpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiRpbnZhbGlkfVwiPnt7ZmQuRXJyb3JNc2d9fTwvcD48L2Rpdj48ZGl2IG5nLWlmPWZkLlJlYWRPbmx5IGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnZWxlbWVudFxcJ1wiIHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVFbGVtZW50fX0+PGRpdiB0aXRsZT17e2Zvcm1EYXRhWzBdLmZvcm1EYXRhQmxvY2tjaGFpblswXVtmZC5GaWVsZE5hbWVdfX0gbmctY2xhc3M9XCJ7XFwnZm9ybS1jb250cm9sXFwnOmZkLlBhcmFtZXRlcnMuQm9yZGVyRm9yUmVhZE9ubHl9XCI+e3tzZWxlY3RlZEdyb3VwLm5hbWV9fTwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9XCJ2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudFwiIGNsYXNzPVwiYmx1ZS1kcm9wZG93biByb3VuZGVkIHNoYWRvd1wiPjxkaXYgY2xhc3M9XCJlbGVtZW50LXByb3BlcnRpZXMtYnRucyBiZy1wcmltYXJ5IHJvdW5kZWQgc2hhZG93XCIgbmctaWY9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MlwiPjxzcGFuIGNsYXNzPVwibGFiZWwgbGFiZWwteHMgdGV4dC13aGl0ZSBtbC0xIGJvbGRcIj57e2ZkLk5hbWV9fTwvc3Bhbj4gPGEgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIHByb3AtYnRuIGVsZW1lbnQtZHJhZy1oYW5kbGVcIiB0aXRsZT1zb3J0IGhyZWY+PGkgY2xhc3M9XCJlbGVtZW50LWRyYWctaGFuZGxlIGZhIGZhLWdyaXAtdmVydGljYWxcIj48L2k+PC9hPiA8YSBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4teHMgcHJvcC1idG5cIiBocmVmIHRpdGxlPVwiRmllbGQgcHJvcGVydGllc1wiIG5nLWNsaWNrPXNob3dQcm9wZXJ0aWVzKCRldmVudCk+PGkgY2xhc3M9XCJmYSBmYS1jb2dcIj48L2k+PC9hPiA8YnV0dG9uIG5nLWlmPXNob3dTZWFyY2hGaWx0ZXJzIHR5cGU9YnV0dG9uIHRpdGxlPXt7ZmQuU2VhcmNoLm5hbWV9fSBjbGFzcz1cImJ0biBidG4tbGlnaHQgcm91bmRlZC0wXCIgaHJlZiB1aWItcG9wb3Zlci10ZW1wbGF0ZT1cIlxcJ3VzZXJzZWFyY2hwcm9wZXJ0aWVzLmh0bWxcXCdcIiBuZy1jbGljaz1cImlzT3Blbj1UcnVlXCIgcG9wb3Zlci1pcy1vcGVuPWlzT3BlbiBwb3BvdmVyLXRyaWdnZXI9b3V0c2lkZUNsaWNrIHBvcG92ZXItYXBwZW5kLXRvLWJvZHk9dHJ1ZSBwb3BvdmVyLXBsYWNlbWVudD1sZWZ0LXRvcD48aSBjbGFzcz1cImZhIGZhLWZpbHRlclwiPjwvaT48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzIGFyaWEtbGFiZWxsZWRieT1tYXNzLXByb3BlcnR5LXt7ZmQuUHJlc2VudGF0aW9uSWR9fSBrdC1tYXNzLXVwZGF0ZS1wcm9wZXJ0aWVzPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9Z3JvdXBzZWFyY2hwcm9wZXJ0aWVzLmh0bWwgdHlwZT10ZXh0L25nLXRlbXBsYXRlPjxkaXYgPiA8ZGl2IGNhbGw9XCJyb3dcIj4gPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJHcmVhdGVyIHRoZW5cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbmctYmluZGluZ1wiIG5nLWNsaWNrPVwiYXBwbHlOdW1GaWx0ZXJzKDApXCI+IDxzcGFuIGNsYXNzPVwie3tzZWFyY2hbMF0uaWNvbn19XCI+PC9zcGFuPiB7e3NlYXJjaFswXS5uYW1lfX0gPC9idXR0b24+IDwvZGl2PiA8ZGl2IGNhbGw9XCJyb3dcIj4gPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJMb3dlciB0aGVuIFwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBuZy1iaW5kaW5nXCIgbmctY2xpY2s9XCJhcHBseU51bUZpbHRlcnMoMSlcIj4gPHNwYW4gY2xhc3M9XCJ7e3NlYXJjaFsxXS5pY29ufX1cIj48L3NwYW4+IHt7c2VhcmNoWzFdLm5hbWV9fTwvYnV0dG9uPiA8L2Rpdj4gPGRpdiBjYWxsPVwicm93XCI+IDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlkPVwiRW5kc1wiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBuZy1iaW5kaW5nXCIgbmctY2xpY2s9XCJhcHBseU51bUZpbHRlcnMoMilcIj4gPHNwYW4gY2xhc3M9XCJ7e3NlYXJjaFsyXS5pY29ufX1cIj48L3NwYW4+IHt7c2VhcmNoWzJdLm5hbWV9fTwvYnV0dG9uPiA8L2Rpdj4gPGRpdiBjYWxsPVwicm93XCI+IDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlkPVwiRXhhY3RcIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbmctYmluZGluZ1wiIG5nLWNsaWNrPVwiYXBwbHlOdW1GaWx0ZXJzKDMpXCI+IDxzcGFuIGNsYXNzPVwie3tzZWFyY2hbM10uaWNvbn19XCI+PC9zcGFuPiB7e3NlYXJjaFszXS5uYW1lfX08L2J1dHRvbj4gPC9kaXY+IDwvZGl2Pjwvc2NyaXB0PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEdyb3VwUHJvcGVydGllcy5odG1sJywnPGRpdiBjbGFzcz1wLTE+PGRpdiBjbGFzcz1cIm10LTIgdGV4dC1jZW50ZXJcIj48bGFiZWwgY2xhc3M9XCJkLWJsb2NrIGxhYmVsLXhzIHRleHQtbXV0ZWRcIj48Yj5JZDo8L2I+IHt7ZmQuUHJlc2VudGF0aW9uSWQgfHwgXFwnbm9uZVxcJ319PC9sYWJlbD4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPjxiPlR5cGU6PC9iPiB7e2ZkLkVsZW1lbnRUeXBlfX08L2xhYmVsPjwvZGl2PjxkaXYgbmctY2xpY2s9XCJsb2NhbFZhcnMuc2hvd0Jhc2ljID0gIWxvY2FsVmFycy5zaG93QmFzaWNcIiBjbGFzcz1cImV4cGFuZC1wcm9wZXJ0eS1wYW5lbCB0YWcgYm9yZGVyLWJvdHRvbSBib3JkZXItc3VjY2VzcyBteS0xIHB5LTFcIiBkYXRhLXRvZ2dsZT1jb2xsYXBzZSBocmVmPSNtYWluUHJvcGVydHlQYW5lbCByb2xlPWJ1dHRvbiBhcmlhLWV4cGFuZGVkPXRydWUgYXJpYS1jb250cm9scz1tYWluUHJvcGVydHlQYW5lbD48c3BhbiBjbGFzcz1cImNvbCBwLTBcIj5CQVNJQzwvc3Bhbj4gPGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLXNob3c9bG9jYWxWYXJzLnNob3dCYXNpYyBjbGFzcz1cImZhcyBmYS1hbmdsZS1kb3duXCI+PC9pPiA8aSBzdHlsZT1cImZvbnQtc2l6ZTogbGFyZ2U7XCIgbmctc2hvdz0hbG9jYWxWYXJzLnNob3dCYXNpYyBjbGFzcz1cImZhcyBmYS1hbmdsZS11cFwiPjwvaT48L2Rpdj48ZGl2IGNsYXNzPVwibWItNCBjb2xsYXBzZSBzaG93XCIgaWQ9bWFpblByb3BlcnR5UGFuZWw+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkxhYmVsIGxlbmd0aDwvbGFiZWw+IDxpbnB1dCB0eXBlPW51bWJlciBtaW49MSBtYXg9MjQgbmctbW9kZWw9ZmQuTGFiZWxMZW5ndGggY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5WYWx1ZSBsZW5ndGg8L2xhYmVsPiA8aW5wdXQgdHlwZT1udW1iZXIgbWluPTEgbWF4PTI0IG5nLW1vZGVsPWZkLlZhbHVlTGVuZ3RoIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+TGFiZWw8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLkxhYmVsPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+RXJyb3IgbXNnPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5FcnJvck1zZz4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPlNlYXJjaFRleHQ8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlNlYXJjaFRleHQ+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveFwiPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IGlkPWNiUmVxdWlyZWQgbmctbW9kZWw9ZmQuUmVxdWlyZWQ+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPWNiUmVxdWlyZWQ+UmVxdWlyZWQ8L2xhYmVsPjwvZGl2PjxkaXYga3QtY29kZXMtZHJvcGRvd24gc2l6ZS14cz10cnVlIHNlYXJjaC10ZXh0PVwiU2VsZWN0IHVuaXF1ZSB1c2VyIGlkZW50aWZpZXJcIiBsYWJlbD1cIlVuaXF1ZSBpZGVudGlmaWVyXCIgdmFsdWUtbGVuZ3RoPWNvbC0yNCBjb2RlLW5hbWU9dW5pcXVlaWRzIHNlbGVjdGVkLWNvZGUtaWQ9ZmQuVW5pcXVlSWQ+PC9kaXY+PC9kaXY+PGRpdiBrdC1maWVsZC1leHRlbmRlZC1wcm9wZXJ0aWVzPjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEhlYWRlci5odG1sJywnPGRpdiBjbGFzcz13aWRnZXQtaGVhZCBuZy1jbGFzcz1cIntcXCd3aWRnZXQtYWN0aXZlIG0tMiBzaGFkb3dcXCc6ZmQ9PWdzcnZjLmdldFNlbGVjdGVkRmQoKSAmJiBnc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKX1cIj48ZGl2IG5nLWlmPVwiZ3NydmMuZ2V0Rm9ybVZpZXdUeXBlKCk9PTEgfHwgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTFcIj48ZGl2IGNsYXNzPVwicm93IG0tMCBwLTAgbWItMVwiIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1oZWFkLWFjdGl2ZVxcJzpmZD09Z3NydmMuZ2V0U2VsZWN0ZWRGZCgpICYmIGdzcnZjLmdldEZpZWxkUHJvcGVydGllc09wZW5lZCgpLFxcJ2JnLWxpZ2h0XFwnOiFnc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKX1cIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGkgdGl0bGU9XCJJZDoge3s6OmZkLlByZXNlbnRhdGlvbklkfX1cIiBjbGFzcz1cImZhcyBmYS1oZWFkaW5nIG14LTJcIj48L2k+PGxhYmVsPkhlYWRsaW5lICh7e2ZkLlByZXNlbnRhdGlvbklkfX0pPC9sYWJlbD4gPGEgaHJlZiB0aXRsZT1zb3J0IGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIHt7Z3JpZFR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIHdpZGdldC1wcm9wXCI+PGkgY2xhc3M9XCJ7e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZSBmYXMgZmEtZ3JpcC12ZXJ0aWNhbFwiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LXJpZ2h0IHAtMFwiPjxhIGhyZWYgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCBidG4tc20gd2lkZ2V0LXByb3BcIiB0aXRsZT1cIlNob3cgcHJvcGVydGllc1wiIG5nLWNsaWNrPVwiZ3NydmMuc2V0RmllbGRQcm9wZXJ0aWVzKGZkLCAkZXZlbnQpXCI+PGkgY2xhc3M9XCJmYXMgZmEtY29nXCI+PC9pPjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGRpdiBrdC10YXNrLWRyb3Bkb3duPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9ZmQuUmVzcG9uc2VNc2cgY2xhc3M9XCJjb2wte3tmZC5QYXJhbWV0ZXJzLkVsZW1lbnRXaWR0aH19IHAtMFwiIHN0eWxlPVwidGV4dC1hbGlnbjoge3tmZC5QYXJhbWV0ZXJzLlRleHRBbGlnbn19O1wiPjxkaXYgbmctaGlkZT1mZC5QYXJhbWV0ZXJzLlNob3dBc0xpbmsgY2xhc3M9XCJweS0xIGNvbC0yNFwiIG5nLWNsYXNzPVwie1xcJ2JvbGRcXCc6ZmQuUGFyYW1ldGVycy5Gb250Qm9sZCxcXCdyb3VuZGVkXFwnOmZkLlBhcmFtZXRlcnMuUm91bmRlZEJvcmRlcnN9XCIgbmctYmluZC1odG1sPWZkLlJlc3BvbnNlTXNnIHN0eWxlPVwiYm9yZGVyLXRvcDp7ezo6ZmQuUGFyYW1ldGVycy5ib3JkZXIudG9wLndpZHRofX1weCB7ezo6ZmQuUGFyYW1ldGVycy5ib3JkZXIudG9wLnN0eWxlfX0ge3s6OmZkLlBhcmFtZXRlcnMuYm9yZGVyLnRvcC5jb2xvcn19ICFpbXBvcnRhbnQ7IGJvcmRlci1ib3R0b206e3s6OmZkLlBhcmFtZXRlcnMuYm9yZGVyLmJvdHRvbS53aWR0aH19cHgge3s6OmZkLlBhcmFtZXRlcnMuYm9yZGVyLmJvdHRvbS5zdHlsZX19IHt7ZmQuUGFyYW1ldGVycy5ib3JkZXIuYm90dG9tLmNvbG9yfX0gIWltcG9ydGFudDsgYm9yZGVyLWxlZnQ6e3s6OmZkLlBhcmFtZXRlcnMuYm9yZGVyLmxlZnQud2lkdGh9fXB4IHt7OjpmZC5QYXJhbWV0ZXJzLmJvcmRlci5sZWZ0LnN0eWxlfX0ge3s6OmZkLlBhcmFtZXRlcnMuYm9yZGVyLmxlZnQuY29sb3J9fSAhaW1wb3J0YW50OyBib3JkZXItcmlnaHQ6e3s6OmZkLlBhcmFtZXRlcnMuYm9yZGVyLnJpZ2h0LndpZHRofX1weCB7ezo6ZmQuUGFyYW1ldGVycy5ib3JkZXIucmlnaHQuc3R5bGV9fSB7ezo6ZmQuUGFyYW1ldGVycy5ib3JkZXIucmlnaHQuY29sb3J9fSAhaW1wb3J0YW50OyBmb250LXNpemU6IHt7ZmQuUGFyYW1ldGVycy5Gb250U2l6ZX19cmVtOyBjb2xvcjoge3tmZC5QYXJhbWV0ZXJzLkZvbnRDb2xvcn19OyBiYWNrZ3JvdW5kLWNvbG9yOiB7e2ZkLlBhcmFtZXRlcnMuQmFja2dyb3VuZENvbG9yfX07XCI+e3tmZC5SZXNwb25zZU1zZ319PC9kaXY+PGEgbmctc2hvdz1mZC5QYXJhbWV0ZXJzLlNob3dBc0xpbmsgY2xhc3M9XCJweS0xIGNvbC0yNFwiIG5nLWNsYXNzPVwie1xcJ2JvbGRcXCc6ZmQuUGFyYW1ldGVycy5Gb250Qm9sZH1cIiBocmVmPXt7ZmQuUGFyYW1ldGVycy5MaW5rVXJsfX0gc3R5bGU9XCJmb250LXNpemU6IHt7ZmQuUGFyYW1ldGVycy5Gb250U2l6ZX19cmVtOyBjb2xvcjoge3tmZC5QYXJhbWV0ZXJzLkZvbnRDb2xvcn19OyBiYWNrZ3JvdW5kLWNvbG9yOiB7e2ZkLlBhcmFtZXRlcnMuQmFja2dyb3VuZENvbG9yfX07XCI+e3tmZC5SZXNwb25zZU1zZ319PC9hPjwvZGl2PjxkaXYgbmctaWY9IWZkLlJlc3BvbnNlTXNnIGNsYXNzPVwie3tjb2xMZW5ndGhbZmQuTGFiZWxMZW5ndGgtMV19fSBwLTBcIj48ZGl2IGNsYXNzPVwicHktMSBjb2wtMjRcIiBuZy1jbGFzcz1cIntcXCdib2xkXFwnOmZkLlBhcmFtZXRlcnMuRm9udEJvbGQsXFwncm91bmRlZFxcJzpmZC5QYXJhbWV0ZXJzLlJvdW5kZWRCb3JkZXJzfVwiIG5nLWhpZGU9ZmQuUGFyYW1ldGVycy5TaG93QXNMaW5rIHN0eWxlPVwiZm9udC1zaXplOiB7e2ZkLlBhcmFtZXRlcnMuRm9udFNpemV9fXJlbTsgY29sb3I6IHt7ZmQuUGFyYW1ldGVycy5Gb250Q29sb3J9fTsgdGV4dC1hbGlnbjoge3tmZC5QYXJhbWV0ZXJzLlRleHRBbGlnbn19OyBiYWNrZ3JvdW5kLWNvbG9yOiB7e2ZkLlBhcmFtZXRlcnMuQmFja2dyb3VuZENvbG9yfX07XCI+SGVhZGVyIFRleHQ8L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RIZWFkZXJQcm9wZXJ0aWVzLmh0bWwnLCc8ZGl2IGlkPWt0SGVhZGVyUHJvcGVydGllcyBjbGFzcz1wLTE+PGRpdiBjbGFzcz10ZXh0LWNlbnRlcj48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+PGI+SUQ6PC9iPiB7e2ZkLlByZXNlbnRhdGlvbklkIHx8IFxcJ25vbmVcXCd9fTwvbGFiZWw+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj48Yj5UeXBlOjwvYj4ge3tmZC5FbGVtZW50VHlwZX19PC9sYWJlbD48L2Rpdj48ZGl2IG5nLWNsaWNrPVwibG9jYWxWYXJzLnNob3dCYXNpYyA9ICFsb2NhbFZhcnMuc2hvd0Jhc2ljXCIgY2xhc3M9XCJleHBhbmQtcHJvcGVydHktcGFuZWwgdGFnIGJvcmRlci1ib3R0b20gYm9yZGVyLXN1Y2Nlc3MgbXktMSBweS0xXCIgZGF0YS10b2dnbGU9Y29sbGFwc2UgaHJlZj0jbWFpblByb3BlcnR5UGFuZWwgcm9sZT1idXR0b24gYXJpYS1leHBhbmRlZD10cnVlIGFyaWEtY29udHJvbHM9bWFpblByb3BlcnR5UGFuZWw+PHNwYW4gY2xhc3M9XCJjb2wgcC0wXCI+QkFTSUM8L3NwYW4+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PWxvY2FsVmFycy5zaG93QmFzaWMgY2xhc3M9XCJmYXMgZmEtYW5nbGUtZG93blwiPjwvaT4gPGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLXNob3c9IWxvY2FsVmFycy5zaG93QmFzaWMgY2xhc3M9XCJmYXMgZmEtYW5nbGUtdXBcIj48L2k+PC9kaXY+PGRpdiBjbGFzcz1cIm1iLTQgY29sbGFwc2Ugc2hvd1wiIGlkPW1haW5Qcm9wZXJ0eVBhbmVsPjxkaXYgY2xhc3M9XCJjaGVja2JveCBtYi0yXCI+PGxhYmVsPjxpbnB1dCB0eXBlPWNoZWNrYm94IG5nLW1vZGVsPWZkLlNob3dGaWVsZD4gU2hvdyBoZWFkZXI8L2xhYmVsPjwvZGl2PjxsYWJlbD5IZWFkZXIgdGV4dDwvbGFiZWw+IDx0ZXh0YXJlYSBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiByb3dzPTQgbmctbW9kZWw9ZmQuUmVzcG9uc2VNc2c+PC90ZXh0YXJlYT4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkVsZW1lbnQgd2lkdGgge3tmZC5QYXJhbWV0ZXJzLkVsZW1lbnRXaWR0aH19PC9sYWJlbD4gPGlucHV0IGlkPWVsZW1lbnRXaWR0aHt7ZmQuUHJlc2VudGF0aW9uSWR9fSB0eXBlPXJhbmdlIG1pbj0xIG1heD0yNCBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkVsZW1lbnRXaWR0aCBuZy1pbml0PVwiZmQuUGFyYW1ldGVycy5FbGVtZW50V2lkdGggPyBmZC5QYXJhbWV0ZXJzLkVsZW1lbnRXaWR0aCA6IDI0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+PGRpdiBjbGFzcz1cImNvbC0yNCBweS0xIHB4LTBcIj48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+Rm9udCBzaXplPC9sYWJlbD4gPGlucHV0IHR5cGU9bnVtYmVyIHN0ZXA9MC4wMSBtaW49MC4wMSBtYXg9MjAgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5Gb250U2l6ZSBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiIGZvcj1zZXRGb250VW5pdHM+Rm9udCBVbml0czwvbGFiZWw+PHNlbGVjdCBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkZvbnRVbml0cyBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBpZD1zZXRGb250VW5pdHM+PG9wdGlvbj5weDwvb3B0aW9uPjxvcHRpb24+ZW08L29wdGlvbj48b3B0aW9uPiU8L29wdGlvbj48L3NlbGVjdD48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTI0IHB5LTEgcHgtMFwiPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5Gb250IGNvbG9yPC9sYWJlbD4gPGlucHV0IHR5cGU9Y29sb3IgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5Gb250Q29sb3IgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+PC9kaXY+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkJhY2tncm91bmQgY29sb3I8L2xhYmVsPjxkaXY+PGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIGNvbG9yLXBpY2tlciBjb2xvci1waWNrZXItc2hvdy1jYW5jZWwtYnV0dG9uPXRydWUgbmctc3R5bGU9e2JhY2tncm91bmQ6ZmQuUGFyYW1ldGVycy5CYWNrZ3JvdW5kQ29sb3JBfSBjb2xvci1waWNrZXItY2FuY2VsLWJ1dHRvbi1jbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4teHNcIiBjb2xvci1waWNrZXItcG9zaXRpb249bGVmdCBjb2xvci1waWNrZXItbW9kZWw9ZmQuUGFyYW1ldGVycy5CYWNrZ3JvdW5kQ29sb3JBPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMjQgcHktMSBweC0wXCI+PGxhYmVsIGNsYXNzPVwiY29sLTEyIGN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveFwiPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IGlkPWNiRm9udEJvbGQgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5Gb250Qm9sZD4gPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgbGFiZWwteHNcIiBmb3I9Y2JGb250Qm9sZD5Cb2xkPC9sYWJlbD48L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wIG10LTFcIj48ZGl2IGNsYXNzPVwiY29sLTI0IHAtMFwiPjxkaXYgY2xhc3M9XCJtYi0xIHNtYWxsIGJvbGRcIj5UZXh0IEFsaWduPC9kaXY+PGRpdiBjbGFzcz1idG4tZ3JvdXA+PGxhYmVsIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIGJ0bi1zbSBtLTFcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlRleHRBbGlnbiB1aWItYnRuLXJhZGlvPVwiXFwnbGVmdFxcJ1wiIHVuY2hlY2thYmxlPjxzcGFuIGNsYXNzPVwiZmEgZmEtYWxpZ24tbGVmdFwiPjwvc3Bhbj48L2xhYmVsPiA8bGFiZWwgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgYnRuLXNtIG0tMVwiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuVGV4dEFsaWduIHVpYi1idG4tcmFkaW89XCJcXCdjZW50ZXJcXCdcIiB1bmNoZWNrYWJsZT48c3BhbiBjbGFzcz1cImZhIGZhLWFsaWduLWNlbnRlclwiPjwvc3Bhbj48L2xhYmVsPiA8bGFiZWwgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgYnRuLXNtIG0tMVwiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuVGV4dEFsaWduIHVpYi1idG4tcmFkaW89XCJcXCdyaWdodFxcJ1wiIHVpYi11bmNoZWNrYWJsZT11bmNoZWNrYWJsZT48c3BhbiBjbGFzcz1cImZhIGZhLWFsaWduLXJpZ2h0XCI+PC9zcGFuPjwvbGFiZWw+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCBtdC0xIHAtMFwiPjxkaXYgY2xhc3M9XCJjdXN0b20tY29udHJvbCBjdXN0b20tY2hlY2tib3hcIj48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1jdXN0b20tY29udHJvbC1pbnB1dCBpZD1jYlNob3dBc0xpbmsgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5TaG93QXNMaW5rPiA8bGFiZWwgY2xhc3M9XCJjdXN0b20tY29udHJvbC1sYWJlbCBsYWJlbC14c1wiIGZvcj1jYlNob3dBc0xpbms+U2hvdyBhcyBsaW5rPC9sYWJlbD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIHAtMFwiIG5nLXNob3c9ZmQuUGFyYW1ldGVycy5TaG93QXNMaW5rPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5MaW5rIFVSTDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5MaW5rVXJsIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiPjwvZGl2PjwvZGl2PjxkaXYgZmQ9ZmQga3QtZmllbGQtYm9yZGVyLXByb3BlcnR5PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEhlbHBDZW50ZXIuaHRtbCcsJzxkaXYgY2xhc3M9aGVscC1saW5rLXBvc2l0aW9uPjxhIGhyZWYgdGl0bGU9XCJoZWxwIGNlbnRlclwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiIG5nLWNsaWNrPXNob3dIaWRlSGVscCh0cnVlKT48aSBjbGFzcz1cImZhIGZhLXF1ZXN0aW9uLWNpcmNsZVwiPjwvaT48L2E+PC9kaXY+PGRpdiBuZy1pZj1maXJzdENsaWNrIG5nLWNsYXNzPVwie1xcJ3NsaWRlLWluXFwnOnNob3dIZWxwLFxcJ3NsaWRlLW91dFxcJzohc2hvd0hlbHB9XCIgY2xhc3M9aGVscC1jZW50ZXItZGl2PjxkaXYgY2xhc3M9aGVscC1oZWFkZXI+PHNwYW4gY2xhc3M9aGVhZGVyLXRleHQ+V2VsY29tZSB0byBLYXRhbHlvIGhlbHAgY2VudGVyPC9zcGFuPiA8YSBocmVmIHRpdGxlPVwiY2xvc2UgaGVscFwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlua1wiIG5nLWNsaWNrPXNob3dIaWRlSGVscChmYWxzZSk+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1oZWxwLWNvbnRlbnQ+PGRpdiBuZy1pZj1cInNob3dIZWxwICYmIHN0YXR1c0NvZGU9PTIwMFwiIGt0LXJ1bi1wYWdlLWRpciBleGV1c2VyPWV4ZVVzZXJJZCBlbnZpZD1wYWdlRW52SWQgcGFnZWlkPXBhZ2VJZCBwdmVyPXBWZXIgcGFnZS10eXBlPVwiXFwnc2Fhc1xcJ1wiPjwvZGl2PjxkaXYgbmctaWY9XCJzaG93SGVscCAmJiBzdGF0dXNDb2RlPT00MDRcIiBjbGFzcz1oZWxwLW5vdC1mb3VuZD5IZWxwIHBhZ2Ugbm90IGZvdW5kITwvZGl2PjwvZGl2PjwvZGl2PjxzdHlsZT5cXHJcXG5cXHQuaGVscC1jZW50ZXItZGl2e1xcclxcblxcdFxcdHBvc2l0aW9uOmZpeGVkO1xcclxcblxcdFxcdGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xcclxcblxcdFxcdHJpZ2h0OiAwO1xcclxcblxcdCAgICB6LWluZGV4OiA5OTk5O1xcclxcblxcdCAgICBoZWlnaHQ6IDEwMCU7XFxyXFxuXFx0ICAgIGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0Z3JheTtcXHJcXG5cXHQgICAgcGFkZGluZzogMC41cmVtO1xcclxcblxcdCAgICB3aWR0aDogZml0LWNvbnRlbnQ7XFxyXFxuXFx0ICAgIG1heC13aWR0aDoge3twYWdlTWF4V2lkdGh9fSU7XFxyXFxuXFx0XFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcclxcbiAgICBcXHQtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXHJcXG5cXHR9XFxyXFxuXFxyXFxuXFx0LnNsaWRlLWluIHtcXHJcXG5cXHQgICAgYW5pbWF0aW9uOiBzbGlkZS1pbiAwLjVzIGZvcndhcmRzO1xcclxcblxcdCAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtaW4gMC41cyBmb3J3YXJkcztcXHJcXG5cXHR9XFxyXFxuXFxyXFxuXFx0LnNsaWRlLW91dCB7XFxyXFxuXFx0ICAgYW5pbWF0aW9uOiBzbGlkZS1vdXQgMC41cyBmb3J3YXJkcztcXHJcXG5cXHQgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtb3V0IDAuNXMgZm9yd2FyZHM7XFxyXFxuXFxyXFxuXFx0fVxcclxcblxcdCAgICBcXHJcXG5cXHRAa2V5ZnJhbWVzIHNsaWRlLWluIHtcXHJcXG5cXHQgICAgMTAwJSB7IFxcclxcblxcdCAgICBcXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xcclxcblxcdCAgICB9XFxyXFxuXFx0fVxcclxcblxcclxcblxcdEAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS1pbiB7XFxyXFxuXFx0ICAgIDEwMCUgeyBcXHJcXG5cXHQgICAgXFx0LXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xcclxcblxcclxcblxcclxcblxcdCAgICB9XFxyXFxuXFx0fVxcclxcblxcdCAgICBcXHJcXG5cXHRAa2V5ZnJhbWVzIHNsaWRlLW91dCB7XFxyXFxuXFx0ICAgIDAlIHsgXFxyXFxuXFx0ICAgIFxcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7IFxcclxcblxcdCAgICB9XFxyXFxuXFx0ICAgIDEwMCUgeyBcXHJcXG5cXHQgICAgXFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcclxcblxcclxcblxcclxcblxcdCAgICB9XFxyXFxuXFxyXFxuXFx0fVxcclxcblxcclxcblxcdEAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS1vdXQge1xcclxcblxcdCAgICAwJSB7IFxcclxcblxcdCAgICBcXHQtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7IFxcclxcblxcdCAgICB9XFxyXFxuXFx0ICAgIDEwMCUgeyBcXHJcXG5cXHQgICAgXFx0LXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxyXFxuXFx0ICAgIH1cXHJcXG5cXHR9XFxyXFxuXFx0LmhlbHAtaGVhZGVye1xcclxcblxcdFxcdGRpc3BsYXk6IGZsZXg7XFxyXFxuXFx0XFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuIDtcXHJcXG5cXHRcXHRhbGlnbi1pdGVtczogY2VudGVyO1xcclxcbiAgICBcXHRib3JkZXItYm90dG9tOiAxcHggc29saWQ7XFxyXFxuXFx0fVxcclxcblxcdC5oZWFkZXItdGV4dHtcXHJcXG5cXHRcXHRmb250LXNpemU6IDFyZW07XFxyXFxuXFx0fVxcclxcblxcdC5oZWxwLWNvbnRlbnR7XFxyXFxuXFx0XFx0cGFkZGluZzogMC4yNXJlbTtcXHJcXG5cXHRcXHRoZWlnaHQ6IGNhbGMoMTAwJSAtIDc2LjY2cHgpO1xcclxcbiAgICBcXHRvdmVyZmxvdy15OiBhdXRvO1xcclxcbiAgICBcXHRvdmVyZmxvdy14OiBoaWRkZW47XFxyXFxuXFx0fVxcclxcblxcdC5oZWxwLW5vdC1mb3VuZHtcXHJcXG5cXHRcXHRjb2xvcjogcmVkO1xcclxcblxcdFxcdGZvbnQtc2l6ZTogMS4yNXJlbTtcXHJcXG5cXHRcXHRwYWRkaW5nOiAwLjI1cmVtO1xcclxcblxcdH1cXHJcXG5cXHQuaGVscC1saW5rLXBvc2l0aW9ue1xcclxcblxcdFxcdHotaW5kZXg6OTk5OTtcXHJcXG5cXHRcXHRyaWdodDogMXJlbTtcXHJcXG5cXHRcXHRib3R0b206IDFyZW07XFxyXFxuXFx0XFx0ei1pbmRleDogMTtcXHJcXG5cXHRcXHRwb3NpdGlvbjoge3sgcG9zaXRpb24gfX07XFxyXFxuXFx0fVxcclxcbjwvc3R5bGU+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0SWNvblBpY2tlci5odG1sJywnPGRpdiBuZy1zaG93PXNob3dJY29ucyBpZD1rdEljb25QaWNrZXIgc3R5bGU9XCJwb3NpdGlvbjpmaXhlZCAhaW1wb3J0YW50OyB6LWluZGV4OjEwMDAgIWltcG9ydGFudDsgbGVmdDogMjAlOyByaWdodDogMjAlOyB0b3A6IDIwJTtcIiBjbGFzcz1iZy1ncmF5LTUwPjxkaXYgY2xhc3M9dGV4dC1yaWdodD48YnV0dG9uIHN0eWxlPVwidG9wOiAtMjBweDsgcG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiAxMDAwOyByaWdodDogLTE0cHg7XCIgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1kYW5nZXJcIiBuZy1jbGljaz1zaG93SWNvbnNGdW5jKGZhbHNlKSBhcmlhLWxhYmVsPUNsb3NlPjxzcGFuIGFyaWEtaGlkZGVuPXRydWU+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzIG5nLWNsYXNzPVwie1xcJyBzaGFkb3dcXCc6IWRlc2lnbk1vZGUsXFwnY2FyZFxcJzpkZXNpZ25Nb2RlfVwiIGFyaWEtbGFiZWxsZWRieT1pY29uUGlja2Vye3t1bmlxdWVJZH19PjxkaXYgY2xhc3M9dGV4dC1jZW50ZXIgbmctaGlkZT1pdGVtc0xvYWRlZCBzdHlsZT1cInBvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCU7IHotaW5kZXg6IDEwMDA7XCI+PGRpdiBjbGFzcz1sZHMtcmluZz48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9XCJtaW4taGVpZ2h0OiAxMDBweDtcIiBuZy1pZj1zZWxlY3RJY29ucyBjbGFzcz1cInJvdyBtLTAgcGwtMCByb3VuZGVkLTAgYm9yZGVyIGJnLWdyYXktNTBcIj48ZGl2IGNsYXNzPVwiY29sLTI0IHAtMlwiPjxpbnB1dCBuZy1zaG93PVwiaWNvbnMubGVuZ3RoPjBcIiB0eXBlPXRleHQgbmctbW9kZWw9aWNvbnNGaWx0ZXIuZmlsdGVyIG5nLWNoYW5nZT1jaGFuZ2VkX2ZpbHRlcigpOyBuZy1tb2RlbC1vcHRpb25zPVwie2RlYm91bmNlOiAyMDB9XCIgcGxhY2Vob2xkZXI9XCJGaWx0ZXIgaWNvbnNcIiBjbGFzcz1mb3JtLWNvbnRyb2wgbmFtZT1pY29uc2ZpbHRlcj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTI0IG0tMFwiIHN0eWxlPVwibWluLXdpZHRoOiA0MHJlbTttYXgtaGVpZ2h0OiAyMHJlbTtvdmVyZmxvdzogYXV0bztcIj48ZGl2IG5nLWlmPXNob3dCdXR0b25zIGNsYXNzPVwicm93IG0tMFwiPjxkaXYgbmctcmVwZWF0PVwiaWNvbiBpbiBmaWx0ZXJlZEljb25zXCIgY2xhc3M9XCJjb2wgdGV4dC1jZW50ZXIgcC0xXCI+PGEgdGl0bGU9e3s6Omljb24uc2hvcnR5fX0gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCBwLTAgcC0xIHB4LTJcIiBuZy1jbGljaz1pY29uQ2hvc2VuKGljb24pIGhyZWY+PGkgY2xhc3M9e3s6Omljb24uZnVsbH19PjwvaT48L2E+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1zZWxlY3RDb2xvcnMgY2xhc3M9XCJtLTAgcGwtMCByb3VuZGVkLTAgYm9yZGVyIGJnLXdoaXRlXCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgcC0yXCI+PHNwYW4gY2xhc3M9bXItMj48Yj5TZWxlY3Qgc3R5bGU8L2I+PC9zcGFuPjxkaXYgbmctcmVwZWF0PVwiYnV0dG9uIGluIGFsbEJ1dHRvbnNcIj48YnV0dG9uIHRpdGxlPXt7YnV0dG9ufX0gdHlwZT1idXR0b24gbmctY2xpY2s9c3R5bGVDaG9zZW4oYnV0dG9uKSBuZy1jbGFzcz1cIntcXCdwLTBcXCc6YnV0dG9uPT1cXCdidG4tbGlua1xcJyxcXCdwLTNcXCc6YnV0dG9uIT1cXCdidG4tbGlua1xcJyx9XCIgY2xhc3M9XCJidG4ge3tidXR0b259fSBtbC0xXCI+PHNwYW4gbmctaWY9XCJidXR0b24gPT0gXFwnYnRuLWxpbmtcXCdcIj57e2J1dHRvbn19PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPjxkaXYgY2xhc3M9XCJiZy1ncmF5LTUwIHRleHQtY2VudGVyXCI+PGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIHR5cGU9YnV0dG9uIG5nLWNsaWNrPXNob3dJY29uc0Z1bmMoZmFsc2UpPkZpbmlzaDwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJiZy1ncmF5LTUwIHRleHQtY2VudGVyXCI+PGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5XCIgdHlwZT1idXR0b24gbmctY2xpY2s9cmVzZXRTdHlsZSgpPlJlc2V0IFN0eWxlPC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBrdGljb25waWNrZXJleGUgY2xhc3M9bS0wIG5nLWlmPVwiaWNvbnMubGVuZ3RoPjBcIj48ZGl2IGNsYXNzPWRlc2lnbk1vZGUgbmctY2xhc3M9XCJ7XFwnXFwnOiFkZXNpZ25Nb2RlfVwiPjxzcGFuIG5nLWlmPXRpdGxlIGNsYXNzPVwic21hbGwgbXV0ZWQgbXItMlwiPjxiPnt7dGl0bGV9fTwvYj48L3NwYW4+IDxidXR0b24gbmctZGlzYWJsZWQ9c2V0RGlzYWJsZWQgc3R5bGU9XCJtaW4taGVpZ2h0OiAyMHB4O21pbi13aWR0aDogMjBweDtcIiBjbGFzcz1cInAtMCBweC0xXCIgbmctY2xhc3M9Z2V0QnRuQ2xhc3MoKSBpZD1pY29uUGlja2Vye3t1bmlxdWVJZH19IHR5cGU9YnV0dG9uIHRpdGxlPXt7c2VsZWN0ZWRJY29ufX0gYXJpYS1oYXNwb3B1cD10cnVlIGFyaWEtZXhwYW5kZWQ9ZmFsc2Ugbmctc2hvdz1cInNlbGVjdEljb25zIHx8ICFkZXNpZ25Nb2RlXCIgbmctY2xpY2s9c2hvd0ljb25zRnVuYyh0cnVlKT48aSBjbGFzcz1cInt7c2VsZWN0ZWRJY29uIHx8IChzZWxlY3RlZEJ1dHRvbiA/IFxcJ1xcJzpcXCdmYXMgZmEtcGFpbnQtYnJ1c2hcXCcgKX19XCI+PC9pPiA8c3BhbiBuZy1pZj1zZWxlY3RlZEljb24+e3tidG5MYWJlbH19PC9zcGFuPjwvYnV0dG9uPjxzcGFuIG5nLXNob3c9ZGVzaWduTW9kZSBjbGFzcz1cInNtYWxsIG14LTNcIj57e3NlbGVjdGVkSWNvbn19PC9zcGFuPjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEltYWdlLmh0bWwnLCc8ZGl2IGNsYXNzPXdpZGdldC1oZWFkIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1hY3RpdmUgbS0yIHNoYWRvd1xcJzpmZD09Z3NydmMuZ2V0U2VsZWN0ZWRGZCgpICYmIGdzcnZjLmdldEZpZWxkUHJvcGVydGllc09wZW5lZCgpfVwiPjxkaXYgbmctaWY9XCJnc3J2Yy5nZXRGb3JtVmlld1R5cGUoKT09MSB8fCBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MVwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wIHAtMCBtYi0xXCIgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LWhlYWQtYWN0aXZlXFwnOmZkPT1nc3J2Yy5nZXRTZWxlY3RlZEZkKCkgJiYgZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzT3BlbmVkKCksXFwnYmctbGlnaHRcXCc6IWdzcnZjLmdldEZpZWxkUHJvcGVydGllc09wZW5lZCgpfVwiPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48aSBjbGFzcz1cImZhcyBmYS1pbWFnZSBteC0yXCI+PC9pPjxsYWJlbD5JbWFnZSAoe3tmZC5QcmVzZW50YXRpb25JZH19KTwvbGFiZWw+IDxhIGhyZWYgdGl0bGU9c29ydCBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCB7e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZSB3aWRnZXQtcHJvcFwiPjxpIGNsYXNzPVwie3tncmlkVHlwZX19LWVsZW1lbnQtZHJhZy1oYW5kbGUgZmFzIGZhLWdyaXAtdmVydGljYWxcIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgdGV4dC1yaWdodCBteS1hdXRvIHAtMFwiPjxhIGhyZWYgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCBidG4tc20gd2lkZ2V0LXByb3BcIiB0aXRsZT1cIlNob3cvaGlkZSBpbWFnZVwiIG5nLWNsaWNrPVwiZmQubG9jYWxWYXJzLmhpZGVJbWFnZT0hZmQubG9jYWxWYXJzLmhpZGVJbWFnZVwiPjxpIGNsYXNzPVwiZmFzIGZhLWV5ZVwiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIG15LWF1dG8gcC0wXCI+PGEgaHJlZiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIGJ0bi1zbSB3aWRnZXQtcHJvcFwiIHRpdGxlPVwiU2hvdyBwcm9wZXJ0aWVzXCIgbmctY2xpY2s9Z3NydmMuc2V0RmllbGRQcm9wZXJ0aWVzKGZkKT48aSBjbGFzcz1cImZhcyBmYS1jb2dcIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48ZGl2IGt0LXRhc2stZHJvcGRvd24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj0hZmQubG9jYWxWYXJzLmhpZGVJbWFnZSBuZy1jbGFzcz1cIntcXCd0ZXh0LWNlbnRlclxcJzpmZC5QYXJhbWV0ZXJzLkltYWdlQWxpZ249PVxcJ2NlbnRlclxcJyxcXCd0ZXh0LWxlZnRcXCc6ZmQuUGFyYW1ldGVycy5JbWFnZUFsaWduPT1cXCdsZWZ0XFwnLFxcJ3RleHQtcmlnaHRcXCc6ZmQuUGFyYW1ldGVycy5JbWFnZUFsaWduPT1cXCdyaWdodFxcJ31cIj48aW1nIHdpZHRoPXt7ZmQuUGFyYW1ldGVycy5JbWFnZVdpZHRofX0lIHNyYz17e2ZkLkltYWdlVXJsfX0+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0SW1hZ2VQcm9wZXJ0aWVzLmh0bWwnLCc8ZGl2IGNsYXNzPXAtMT48ZGl2IGNsYXNzPVwiZXhwYW5kLXByb3BlcnR5LXBhbmVsIHRhZ1wiIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIGhyZWY9I21haW5Qcm9wZXJ0eVBhbmVsIHJvbGU9YnV0dG9uIGFyaWEtZXhwYW5kZWQ9dHJ1ZSBhcmlhLWNvbnRyb2xzPW1haW5Qcm9wZXJ0eVBhbmVsPk1haW4gaW1hZ2UgcHJvcGVydGllczxzdmcgY2xhc3M9c2V0dGluZ3MgeG1sbnM9aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcgd2lkdGg9MjQgaGVpZ2h0PTI0IHZpZXdib3g9XCIwIDAgMjQgMjRcIj48cGF0aCBmaWxsPW5vbmUgZD1cIk0wIDBoMjR2MjRIMFYwelwiPjwvcGF0aD48cGF0aCBvcGFjaXR5PS4zIGQ9XCJNMTkuMjggOC42bC0uNy0xLjIxLTEuMjcuNTEtMS4wNi40My0uOTEtLjdjLS4zOS0uMy0uOC0uNTQtMS4yMy0uNzFsLTEuMDYtLjQzLS4xNi0xLjEzTDEyLjcgNGgtMS40bC0uMTkgMS4zNS0uMTYgMS4xMy0xLjA2LjQ0Yy0uNDEuMTctLjgyLjQxLTEuMjUuNzNsLS45LjY4LTEuMDUtLjQyLTEuMjctLjUyLS43IDEuMjEgMS4wOC44NC44OS43LS4xNCAxLjEzYy0uMDMuMy0uMDUuNTMtLjA1Ljczcy4wMi40My4wNS43M2wuMTQgMS4xMy0uODkuNy0xLjA4Ljg0LjcgMS4yMSAxLjI3LS41MSAxLjA2LS40My45MS43Yy4zOS4zLjguNTQgMS4yMy43MWwxLjA2LjQzLjE2IDEuMTMuMTkgMS4zNmgxLjM5bC4xOS0xLjM1LjE2LTEuMTMgMS4wNi0uNDNjLjQxLS4xNy44Mi0uNDEgMS4yNS0uNzNsLjktLjY4IDEuMDQuNDIgMS4yNy41MS43LTEuMjEtMS4wOC0uODQtLjg5LS43LjE0LTEuMTNjLjA0LS4zMS4wNS0uNTIuMDUtLjczIDAtLjIxLS4wMi0uNDMtLjA1LS43M2wtLjE0LTEuMTMuODktLjcgMS4xLS44NHpNMTIgMTZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0elwiPjwvcGF0aD48cGF0aCBkPVwiTTE5LjQzIDEyLjk4Yy4wNC0uMzIuMDctLjY0LjA3LS45OCAwLS4zNC0uMDMtLjY2LS4wNy0uOThsMi4xMS0xLjY1Yy4xOS0uMTUuMjQtLjQyLjEyLS42NGwtMi0zLjQ2Yy0uMDktLjE2LS4yNi0uMjUtLjQ0LS4yNS0uMDYgMC0uMTIuMDEtLjE3LjAzbC0yLjQ5IDFjLS41Mi0uNC0xLjA4LS43My0xLjY5LS45OGwtLjM4LTIuNjVDMTQuNDYgMi4xOCAxNC4yNSAyIDE0IDJoLTRjLS4yNSAwLS40Ni4xOC0uNDkuNDJsLS4zOCAyLjY1Yy0uNjEuMjUtMS4xNy41OS0xLjY5Ljk4bC0yLjQ5LTFjLS4wNi0uMDItLjEyLS4wMy0uMTgtLjAzLS4xNyAwLS4zNC4wOS0uNDMuMjVsLTIgMy40NmMtLjEzLjIyLS4wNy40OS4xMi42NGwyLjExIDEuNjVjLS4wNC4zMi0uMDcuNjUtLjA3Ljk4cy4wMy42Ni4wNy45OGwtMi4xMSAxLjY1Yy0uMTkuMTUtLjI0LjQyLS4xMi42NGwyIDMuNDZjLjA5LjE2LjI2LjI1LjQ0LjI1LjA2IDAgLjEyLS4wMS4xNy0uMDNsMi40OS0xYy41Mi40IDEuMDguNzMgMS42OS45OGwuMzggMi42NWMuMDMuMjQuMjQuNDIuNDkuNDJoNGMuMjUgMCAuNDYtLjE4LjQ5LS40MmwuMzgtMi42NWMuNjEtLjI1IDEuMTctLjU5IDEuNjktLjk4bDIuNDkgMWMuMDYuMDIuMTIuMDMuMTguMDMuMTcgMCAuMzQtLjA5LjQzLS4yNWwyLTMuNDZjLjEyLS4yMi4wNy0uNDktLjEyLS42NGwtMi4xMS0xLjY1em0tMS45OC0xLjcxYy4wNC4zMS4wNS41Mi4wNS43MyAwIC4yMS0uMDIuNDMtLjA1LjczbC0uMTQgMS4xMy44OS43IDEuMDguODQtLjcgMS4yMS0xLjI3LS41MS0xLjA0LS40Mi0uOS42OGMtLjQzLjMyLS44NC41Ni0xLjI1LjczbC0xLjA2LjQzLS4xNiAxLjEzLS4yIDEuMzVoLTEuNGwtLjE5LTEuMzUtLjE2LTEuMTMtMS4wNi0uNDNjLS40My0uMTgtLjgzLS40MS0xLjIzLS43MWwtLjkxLS43LTEuMDYuNDMtMS4yNy41MS0uNy0xLjIxIDEuMDgtLjg0Ljg5LS43LS4xNC0xLjEzYy0uMDMtLjMxLS4wNS0uNTQtLjA1LS43NHMuMDItLjQzLjA1LS43M2wuMTQtMS4xMy0uODktLjctMS4wOC0uODQuNy0xLjIxIDEuMjcuNTEgMS4wNC40Mi45LS42OGMuNDMtLjMyLjg0LS41NiAxLjI1LS43M2wxLjA2LS40My4xNi0xLjEzLjItMS4zNWgxLjM5bC4xOSAxLjM1LjE2IDEuMTMgMS4wNi40M2MuNDMuMTguODMuNDEgMS4yMy43MWwuOTEuNyAxLjA2LS40MyAxLjI3LS41MS43IDEuMjEtMS4wNy44NS0uODkuNy4xNCAxLjEzek0xMiA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCA2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpcIj48L3BhdGg+PC9zdmc+PC9kaXY+PGRpdiBjbGFzcz1cIm1iLTQgY29sbGFwc2Ugc2hvd1wiIGlkPW1haW5Qcm9wZXJ0eVBhbmVsPjxkaXY+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPjxiPklEOjwvYj4ge3tmZC5QcmVzZW50YXRpb25JZH19PC9sYWJlbD4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPjxiPlR5cGU6PC9iPiB7e2ZkLkVsZW1lbnRUeXBlfX08L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wIG10LTFcIj48ZGl2IGNsYXNzPWNvbD48ZGl2IG5nLWZvcm09XCJcXCdzb3VyY2VGaWxlXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgY2xhc3M+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPlNvdXJjZSBmaWxlIHR5cGU8L2xhYmVsPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkZpbGVEZWZJZCBzaXplPVwiXFwnc21hbGxcXCdcIiBuZy1jaGFuZ2U9ZmQubG9jYWxWYXJzLmZpbGVTZWxlY3RlZChmZC5QYXJhbWV0ZXJzLkZpbGVEZWZJZCkgc2VsZWN0ZWQtaXRlbXM9ZmQuUGFyYW1ldGVycy5GaWxlRGVmSWQgaXMtbXVsdGlwbGU9ZmFsc2UgbmFtZT1zb3VyY2VGaWxle3tmZC5QcmVzZW50YXRpb25JZH19IG5nLXJlcXVpcmVkPWZhbHNlIGRyb3Bkb3duLWl0ZW1zPWZkLmxvY2FsVmFycy5saXN0T2ZGaWxlVHlwZXMgZHJvcGRvd24taWQ9XCJcXCdzb3VyY2VGaWxlXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgcGFyZW50LWZvcm0taWQ9XCJcXCdzb3VyY2VGaWxlXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgZmlsZSB0eXBlXFwnXCI+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48L2Rpdj48ZGl2IG5nLWZvcm09XCJcXCdzb3VyY2VGaWxlUmVjb3JkXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgY2xhc3M+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPlNvdXJjZSBmaWxlIHJlY29yZDwvbGFiZWw+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLWlmPWZkLmxvY2FsVmFycy5maWxlUmVjb3JkcyBuZy1tb2RlbD1mZC5sb2NhbFZhcnMucmVjb3JkU2VsZWN0ZWQgc2l6ZT1cIlxcJ3NtYWxsXFwnXCIgc2VsZWN0ZWQtaXRlbXM9ZmQubG9jYWxWYXJzLnJlY29yZFNlbGVjdGVkIG5nLWNoYW5nZT1mZC5sb2NhbFZhcnMuZmlsZVJlY29yZFNlbGVjdGVkKGZkLmxvY2FsVmFycy5yZWNvcmRTZWxlY3RlZCkgaXMtbXVsdGlwbGU9ZmFsc2UgbmFtZT1zb3VyY2VGaWxle3tmZC5QcmVzZW50YXRpb25JZH19IG5nLXJlcXVpcmVkPWZhbHNlIGRyb3Bkb3duLWl0ZW1zPWZkLmxvY2FsVmFycy5maWxlUmVjb3JkcyBkcm9wZG93bi1pZD1cIlxcJ3NvdXJjZUZpbGVSZWNvcmRcXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ3NvdXJjZUZpbGVcXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCBmaWxlIHJlY29yZCBcXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjwvZGl2PjxsYWJlbD5JbWFnZSB3aWR0aChwZXJjZW50YWdlKTwvbGFiZWw+IDxpbnB1dCB0eXBlPW51bWJlciBtaW49MCBtYXg9MTAwIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuSW1hZ2VXaWR0aD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBtdC0xXCI+PGRpdiBjbGFzcz1jb2w+PGRpdiBjbGFzcz1cIm1iLTEgc21hbGwgYm9sZFwiPkFsaWduIGltYWdlPC9kaXY+PGRpdiBjbGFzcz1idG4tZ3JvdXA+PGxhYmVsIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIGJ0bi14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuSW1hZ2VBbGlnbiB1aWItYnRuLXJhZGlvPVwiXFwnbGVmdFxcJ1wiIHVuY2hlY2thYmxlPkxlZnQgPHNwYW4gY2xhc3M9XCJmYSBmYS1hbGlnbi1sZWZ0XCI+PC9zcGFuPjwvbGFiZWw+IDxsYWJlbCBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBidG4teHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkltYWdlQWxpZ24gdWliLWJ0bi1yYWRpbz1cIlxcJ2NlbnRlclxcJ1wiIHVuY2hlY2thYmxlPk1pZGRsZSA8c3BhbiBjbGFzcz1cImZhIGZhLWFsaWduLWNlbnRlclwiPjwvc3Bhbj48L2xhYmVsPiA8bGFiZWwgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgYnRuLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5JbWFnZUFsaWduIHVpYi1idG4tcmFkaW89XCJcXCdyaWdodFxcJ1wiIHVpYi11bmNoZWNrYWJsZT11bmNoZWNrYWJsZT5SaWdodCA8c3BhbiBjbGFzcz1cImZhIGZhLWFsaWduLXJpZ2h0XCI+PC9zcGFuPjwvbGFiZWw+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0SW5pdGlhdGVUYXNrV2lkZ2V0Lmh0bWwnLCc8ZGl2IGNsYXNzPXdpZGdldC1oZWFkIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1hY3RpdmUgbS0yIHNoYWRvd1xcJzpsb2NhbFZhcnMuc2hvd1Jlc291cmNlRGV0YWlscyB8fCBsb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUluZGV4Pi0xfVwiPjxkaXYgbmctaWY9XCIoZ3NydmMuZ2V0Rm9ybVZpZXdUeXBlKCk9PTEgfHwgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEpICYmIGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlIT0yXCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgcC0wIG1iLTFcIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtaGVhZC1hY3RpdmVcXCc6ZmQubG9jYWxWYXJzLnNob3dSZXNvdXJjZURldGFpbHMsXFwnYmctbGlnaHRcXCc6IWZkLmxvY2FsVmFycy5zaG93UmVzb3VyY2VEZXRhaWxzfVwiPjxkaXYgbmctaWY9XCJmZC5FbGVtZW50VHlwZT09XFwnaXRhc2tcXCdcIiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxpIGNsYXNzPVwiZmEgZmEtcm9ja2V0IG14LTJcIj48L2k+PGxhYmVsPlJlc291cmNlIGFjdGlvbiB3aWRnZXQgKHt7OjpmZC5QcmVzZW50YXRpb25JZH19KTwvbGFiZWw+IDxhIGhyZWYgdGl0bGU9c29ydCBuZy1jbGFzcz1cIntcXCd3aWRnZXQtcHJvcFxcJzpmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT11bmRlZmluZWR9XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnkgYm9yZGVyLTAge3tncmlkVHlwZX19LWVsZW1lbnQtZHJhZy1oYW5kbGUgd2lkZ2V0LXByb3BcIj48aSBjbGFzcz1cInt7Z3JpZFR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIGZhcyBmYS1ncmlwLXZlcnRpY2FsXCI+PC9pPjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIHAtMSBteS1hdXRvXCI+PGJ1dHRvbiBsci1kcmFnLXNyYz1hY3Rpb25zIGxyLWRyb3AtdGFyZ2V0PWFjdGlvbnMgbmctcmVwZWF0PVwicmVzb3VyY2UgaW4gZmQuRm9ybURlZlwiIHR5cGU9YnV0dG9uIGRhdGEtdG9nZ2xlPXRvb2x0aXAgZGF0YS1wbGFjZW1lbnQ9dG9wIHRpdGxlPVwiUmVzb3VyY2UgaWQ6IHt7cmVzb3VyY2UuaWR9fSA9PiBDbGljayBmb3IgZGV0YWlsc1wiIGNsYXNzPVwiYnRuIHt7cmVzb3VyY2Uuc2l6ZX19IHt7cmVzb3VyY2UuYnRuQ2xhc3N9fVwiIHN0eWxlPVwiYm9yZGVyOiBzb2xpZCAhaW1wb3J0YW50XCIgbmctY2xpY2s9ZmQubG9jYWxWYXJzLlNob3dSZXNvdXJjZURlZmluaXRpb24oJGluZGV4KSBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6cmVzb3VyY2UuaWQ9PWZkLmxvY2FsVmFycy5yZXNvdXJjZUl0ZW0uaWR9XCI+PGRpdiBjbGFzcz1cImQtZmxleCBlbGVtZW50LWRyYWctaGFuZGxlIHt7dGMuc3R5bGV9fVwiPjxpIGNsYXNzPXt7cmVzb3VyY2UuaWNvbn19IG5nLWNsYXNzPVwie1xcJ21yLTIgbWItMlxcJzpyZXNvdXJjZS5pY29uIT11bmRlZmluZWQgJiYgcmVzb3VyY2UuaWNvbiE9bnVsbCAmJiByZXNvdXJjZS5pY29uIT1cXCdcXCd9XCI+PC9pPiB7e3Jlc291cmNlLmJ0bkxhYmVsfX08L2Rpdj48L2J1dHRvbj4gPGJ1dHRvbiBrdC1wb3BvdmVyIGRhdGEtcGxhY2VtZW50PXRvcCB0aWQ9XCJcXCdhZGQtYWN0aW9uLWJ1dHRvblxcJ1wiIHNob3ctb24tc3RhcnQ9ZmFsc2UgZW5hYmxlPVwidHJ1ZSB8fCBmZC5Gb3JtRGVmLmxlbmd0aD09MFwiIHN0eWxlPVwiYm9yZGVyOiBkYXNoZWQgdGhpbiAhaW1wb3J0YW50XCIgdHlwZT1idXR0b24gbmctY2xpY2s9ZmQubG9jYWxWYXJzLk5ld1Jlc291cmNlKCkgY2xhc3M9XCJtbC0yIGJ0biBidG4tb3V0bGluZS1wcmltYXJ5XCI+PGkgY2xhc3M9XCJmYSBmYS1wbHVzXCI+PC9pPjwvYnV0dG9uPiA8c3BhbiBjbGFzcz1teC0xIG5nLWlmPVwiZmQuRm9ybURlZi5sZW5ndGg9PTBcIj5DbGljayBoZXJlIHRvIGFkZCBhY3Rpb248L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiIG5nLWlmPVwiZmQuRWxlbWVudFR5cGU9PVxcJ2l0YXNrXFwnXCI+PGRpdiBrdC10YXNrLWRyb3Bkb3duMj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGlkPVJlc291cmNlX2RldGFpbHMgbmctaWY9ZmQubG9jYWxWYXJzLnNob3dSZXNvdXJjZURldGFpbHMgY2xhc3M9bXktMz48ZGl2IGNsYXNzPVwicm93IG0tMCBwLTFcIj48ZGl2IGNsYXNzPVwibWItMyBjb2wtMjQgYm9sZFwiPjxsYWJlbD5BY3Rpb24gbmFtZSA6PC9sYWJlbD48ZGl2IGNsYXNzPW15LTMgZGF0YS10b2dnbGU9dG9vbHRpcCBkYXRhLXBsYWNlbWVudD10b3AgdGl0bGU9e3tmZC5Gb3JtRGVmW2ZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSW5kZXhdLmlkfX0+PGlucHV0IHR5cGU9dGV4dCBjbGFzcz1mb3JtLWNvbnRyb2wgbmctbW9kZWw9ZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UuYnRuTGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIG15LWF1dG8gYm9sZCBtci0yXCI+PGxhYmVsPkFjdGlvbiBUeXBlIDo8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwYi0yIGJ0bi1ncm91cFwiIHJvbGU9Z3JvdXAgYXJpYS1sYWJlbD1SZXNvdXJjZVR5cGU+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cImZkLmxvY2FsVmFycy5zZXRSZXNvdXJjZVR5cGUoXFwncGFnZVxcJylcIiBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UuUmVzb3VyY2VUeXBlPT1cXCdwYWdlXFwnfVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5XCI+T3BlbiBwYWdlPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9XCJmZC5sb2NhbFZhcnMuc2V0UmVzb3VyY2VUeXBlKFxcJ2Zsb3dcXCcpXCIgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlLlJlc291cmNlVHlwZT09XFwnZmxvd1xcJ31cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeVwiPkV4ZWN1dGUgZmxvdzwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwiZmQubG9jYWxWYXJzLnNldFJlc291cmNlVHlwZShcXCd0YXNrXFwnKVwiIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpmZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZS5SZXNvdXJjZVR5cGU9PVxcJ3Rhc2tcXCd9XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnlcIj5FeGVjdXRlIHRhc2s8L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0xMCBzdHlsZT1cIm1pbi1oZWlnaHQ6IDQwcHg7XCI+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLWlmPVwiZmQubG9jYWxWYXJzLnJlc291cmNlTGlzdEZvckRyb3Bkb3duICYmIGZkLmxvY2FsVmFycy5yZXNvdXJjZUxvYWRlZFwiIG5nLWRpc2FibGVkPWZhbHNlIGlzLW11bHRpcGxlPWZhbHNlIG5nLW1vZGVsPWZkLmxvY2FsVmFycy5yZXNvdXJjZUl0ZW0gc2VsZWN0ZWQtaXRlbXM9ZmQubG9jYWxWYXJzLnJlc291cmNlSXRlbSBkcm9wZG93bi1pdGVtcz1mZC5sb2NhbFZhcnMucmVzb3VyY2VMaXN0Rm9yRHJvcGRvd24gZHJvcGRvd24taWQ9XCJcXCdkcm9wXFwnK2ZkLk5hbWUrZmQuSXRlbUlkXCIgcGFyZW50LWZvcm0taWQ9XCJcXCdpbm5lckZvcm1cXCcrZmQuSXRlbUlkXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3RcXCdcIiBvbi1zZWxlY3QtZm49XCJvblNlbGVjdFJlc291cmNlQ2FsbGJhY2soZmQubG9jYWxWYXJzLnJlc291cmNlSXRlbSwgJGluZGV4KVwiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1mZC5sb2NhbFZhcnMuc2hvd1Jlc291cmNlRGV0YWlscyBjbGFzcz1cInJvdyBtLTFcIj48ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IG15LTMgcC0xXCI+PGRpdiBjbGFzcz1cIm1sLTIgbXQtMlwiIG5nLWlmPVwiZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VUeXBlPT1cXCd0YXNrXFwnXCI+PGRpdiBjbGFzcz1cIm1iLTEgYm9sZFwiPjxsYWJlbD5UYXNrIFR5cGU8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9YnRuLWdyb3VwIHJvbGU9Z3JvdXAgYXJpYS1sYWJlbD1PcGVuVGFza1R5cGU+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cImZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlLk9wZW5UYXNrVHlwZT1cXCduZXdQYWdlXFwnXCIgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlLk9wZW5UYXNrVHlwZT09XFwnbmV3UGFnZVxcJ31cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeVwiPk9wZW4gaW4gbmV3IHBhZ2U8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cImZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlLk9wZW5UYXNrVHlwZT1cXCdjdXJyZW50XFwnXCIgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlLk9wZW5UYXNrVHlwZT09XFwnY3VycmVudFxcJ31cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeVwiPk9wZW4gaW4gY3VycmVudCBjb250YWluZXI8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cImZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlLk9wZW5UYXNrVHlwZT1cXCdpbmxpbmVcXCdcIiBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UuT3BlblRhc2tUeXBlPT1cXCdpbmxpbmVcXCd9XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnlcIj5JbmxpbmUgdGFzazwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwiZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UuT3BlblRhc2tUeXBlPVxcJ2NvbnRhaW5lclxcJ1wiIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpmZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZS5PcGVuVGFza1R5cGU9PVxcJ2NvbnRhaW5lclxcJ31cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeVwiPlRhc2sgY29udGFpbmVyPC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1yb3c+PGRpdiBjbGFzcz1jb2wtMTI+PGRpdiBjbGFzcz1cIm0tMiBib2xkXCI+PGxhYmVsPkJ1dHRvbiBzaXplPC9sYWJlbD48L2Rpdj48ZGl2PjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9XCJmZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZS5zaXplPVxcJ2J0bi1sZ1xcJ1wiIG5nLWNsYXNzPVwiZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2Uuc2l6ZT09XFwnYnRuLWxnXFwnID8gXFwnYnRuLXN1Y2Nlc3NcXCc6IFxcJ2J0bi1vdXRsaW5lLXByaW1hcnlcXCdcIiBjbGFzcz1cImJ0biBidG4tbGdcIj5MYXJnZTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwiZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2Uuc2l6ZT1cXCdcXCdcIiBuZy1jbGFzcz1cImZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlLnNpemU9PVxcJ1xcJyA/IFxcJ2J0bi1zdWNjZXNzXFwnOiBcXCdidG4tb3V0bGluZS1wcmltYXJ5XFwnXCIgY2xhc3M9YnRuPlJlZ3VsYXI8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cImZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlLnNpemU9XFwnYnRuLXNtXFwnXCIgbmctY2xhc3M9XCJmZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZS5zaXplPT1cXCdidG4tc21cXCcgPyBcXCdidG4tc3VjY2Vzc1xcJzogXFwnYnRuLW91dGxpbmUtcHJpbWFyeVxcJ1wiIGNsYXNzPVwiYnRuIGJ0bi1zbVwiPlNtYWxsPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9XCJmZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZS5zaXplPVxcJ2J0bi14c1xcJ1wiIG5nLWNsYXNzPVwiZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2Uuc2l6ZT09XFwnYnRuLXhzXFwnID8gXFwnYnRuLXN1Y2Nlc3NcXCc6IFxcJ2J0bi1vdXRsaW5lLXByaW1hcnlcXCdcIiBjbGFzcz1cImJ0biBidG4teHNcIj5FeHRyYSBzbWFsbDwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMTAgbXQtMSBtYi0zXCI+PGRpdiBjbGFzcz1cIm10LTEgbWItMyBib2xkXCI+PGxhYmVsPkJ1dHRvbiBzdHlsZTo8L2xhYmVsPjwvZGl2PjxkaXYga3QtaWNvbi1waWNrZXIgc2VsZWN0LWNvbG9ycz10cnVlIHNlbGVjdC1pY29ucz10cnVlIHNlbGVjdGVkLWljb249ZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UuaWNvbiBzZWxlY3RlZC1idXR0b249ZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UuYnRuQ2xhc3M+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtdC01XCI+PGRpdiBjbGFzcz1cIm9mZnNldC05IGNvbC0zIGZsb2F0LXJpZ2h0XCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiBuZy1jbGljaz1mZC5sb2NhbFZhcnMuQWRkUmVzb3VyY2UoKSBhcmlhLWxhYmVsPUNsb3NlPjxzcGFuIGFyaWEtaGlkZGVuPXRydWU+RmluaXNoPC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgaWQ9NiBjbGFzcz1cImNvbC00IHB4LTAgbXgtMFwiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9ZmQubG9jYWxWYXJzLlJlbW92ZVJlc291cmNlRnJvbUxpc3QoZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJbmRleCkgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLWRhbmdlclwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtdHJhc2ggbXItMVwiPjwvc3Bhbj4gRGVsZXRlPC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImdzcnZjLmdldEZvcm1WaWV3VHlwZSgpPT0yICYmIChmZC5QYXJhbWF0ZXJzLkFjdGlvblBvc2l0aW9uPT1cXCdhYm92ZVxcJyB8fCBmZC5QYXJhbWF0ZXJzLkFjdGlvblBvc2l0aW9uPT11bmRlZmluZWQpXCI+PGRpdj48ZGl2IG5nLWlmPVwiZmQuRm9ybURlZi5sZW5ndGg+MFwiPjxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O2ZsZXgtd3JhcDogd3JhcDtnYXA6IDhweDtcIj48ZGl2IGNsYXNzPWQtaW5saW5lIG5nLXJlcGVhdD1cInJlc291cmNlIGluIGZkLkZvcm1EZWZcIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWlmPVwicmVzb3VyY2UuUmVzb3VyY2VUeXBlPT1cXCd0YXNrXFwnXCIgbmctaGlkZT1mZC5sb2NhbFZhcnMudGFza0lzT3BlbihyZXNvdXJjZS5pZCkgbmctY2xpY2s9ZmQubG9jYWxWYXJzLkxvYWRUYXNrKHJlc291cmNlLmlkLDAsZmQubG9jYWxWYXJzLnByZXZpb3VzVGFzayxyZXNvdXJjZS5PcGVuVGFza1R5cGUpIGNsYXNzPVwiYnRuIHt7cmVzb3VyY2Uuc2l6ZX19IHt7cmVzb3VyY2UuYnRuQ2xhc3N9fVwiPjxpIGNsYXNzPXt7cmVzb3VyY2UuaWNvbn19IG5nLWNsYXNzPVwie1xcJ21yLTJcXCc6cmVzb3VyY2UuaWNvbiE9dW5kZWZpbmVkICYmIHJlc291cmNlLmljb24hPW51bGwgJiYgcmVzb3VyY2UuaWNvbiE9XFwnXFwnfVwiPjwvaT4ge3tyZXNvdXJjZS5idG5MYWJlbH19PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gbmctaWY9XCJyZXNvdXJjZS5SZXNvdXJjZVR5cGU9PVxcJ3BhZ2VcXCdcIiBuZy1oaWRlPWZkLmxvY2FsVmFycy50YXNrSXNPcGVuKHJlc291cmNlLmlkKSBuZy1jbGljaz1mZC5sb2NhbFZhcnMuT3BlblBhZ2UocmVzb3VyY2UpIGNsYXNzPVwiYnRuIHt7cmVzb3VyY2Uuc2l6ZX19IHt7cmVzb3VyY2UuYnRuQ2xhc3N9fVwiPjxpIGNsYXNzPXt7cmVzb3VyY2UuaWNvbn19IG5nLWNsYXNzPVwie1xcJ21yLTJcXCc6cmVzb3VyY2UuaWNvbiE9dW5kZWZpbmVkICYmIHJlc291cmNlLmljb24hPW51bGwgJiYgcmVzb3VyY2UuaWNvbiE9XFwnXFwnfVwiPjwvaT4ge3tyZXNvdXJjZS5idG5MYWJlbH19PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1yZXBlYXQ9XCJzVGFzayBpbiBmZC5sb2NhbFZhcnMubG9hZGVkVGFza3MgdHJhY2sgYnkgc1Rhc2sudGFza0lkXCIgY2xhc3M9bWItMT48ZGl2IGt0LXRhc2stcHJvYy1kaXJlY3RpdmUgZmQ9ZmQgbG9jYWwtdmFycz1zVGFzay5sb2NhbFZhcnMgdGFzay1kZWZpbml0aW9uPXJlc291cmNlRGVmaW5pdGlvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RJbml0aWF0ZVRhc2tXaWRnZXRQcm9wZXJ0aWVzLmh0bWwnLCc8ZGl2PjxkaXY+PGxhYmVsIGNsYXNzPXRleHQtbXV0ZWQ+TGFiZWw8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLkxhYmVsPjwvZGl2PjxkaXY+PGxhYmVsIGNsYXNzPXRleHQtbXV0ZWQ+RXJyb3IgbXNnPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1mZC5FcnJvck1zZz48L2Rpdj48ZGl2PjxsYWJlbCBjbGFzcz10ZXh0LW11dGVkPlNlYXJjaFRleHQ8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLlNlYXJjaFRleHQ+PC9kaXY+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveCBtci0zXCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgaWQ9Y2JJbmxpbmVUYXNrIG5nLW1vZGVsPWZkLklubGluZVRhc2s+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPWNiSW5saW5lVGFzaz5TdGFydCB0YXNrIGlubGluZTwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveFwiPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IGlkPWNiQW55VGFzayBuZy1jbGljaz1mZC5TaG93VGFza0xpc3QoKSBuZy1tb2RlbD1mZC5BbnlUYXNrPiA8bGFiZWwgY2xhc3M9XCJjdXN0b20tY29udHJvbC1sYWJlbCBsYWJlbC14c1wiIGZvcj1jYkFueVRhc2s+U3RhcnQgYW55IHRhc2s8L2xhYmVsPjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEt0bHlvU3Rha2luZy5odG1sJywnPGRpdiBjbGFzcz13aWRnZXQtaGVhZCBuZy1jbGFzcz1cIntcXCd3aWRnZXQtYWN0aXZlIG0tMiBzaGFkb3dcXCc6bG9jYWxWYXJzV2lkZ2V0LmRhdGFzZXRNYXBwZXJUeXBlPjAsXFwnbS0wIGJvcmRlci0wXFwnOihmZC5SZWxhdGVkPT1udWxsIHx8IGZkLlJlbGF0ZWQ9PXVuZGVmaW5lZCkgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTJ9XCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgcC0wIG1iLTFcIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtaGVhZC1hY3RpdmVcXCc6bG9jYWxWYXJzV2lkZ2V0LmRhdGFzZXRNYXBwZXJUeXBlPjAsXFwnYmctbGlnaHRcXCc6bG9jYWxWYXJzV2lkZ2V0LmRhdGFzZXRNYXBwZXJUeXBlPT0wfVwiIG5nLWlmPVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTFcIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGkgY2xhc3M9XCJmYSBmYS1jb2RlIG14LTJcIj48L2k+PGxhYmVsPldyaXRlIHNtYXJ0IGNvbnRyYWN0ICh7e2ZkLlByZXNlbnRhdGlvbklkfX0pICh7e2ZkLkxvY2FsSWR9fSk8L2xhYmVsPiA8YSBocmVmIHRpdGxlPXNvcnQgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LXByb3BcXCc6bG9jYWxWYXJzV2lkZ2V0LmRhdGFzZXRNYXBwZXJUeXBlPT0wIHx8IGxvY2FsVmFyc1dpZGdldC5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkfVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIHt7Z3JpZFR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIHdpZGdldC1wcm9wXCI+PGkgY2xhc3M9XCJ7e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZSBmYXMgZmEtZ3JpcC12ZXJ0aWNhbFwiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LXJpZ2h0IG15LWF1dG9cIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWxvY2FsVmFyc1dpZGdldC5zaG93UHJvcGVydGllcygxKSBuZy1jbGFzcz1cIntcXCdidG4td2FybmluZ1xcJzpsb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPVxcJ1xcJyAmJiBsb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPXVuZGVmaW5lZCwgXFwnYnRuLW91dGxpbmUtcHJpbWFyeSBuby1ib3JkZXJcXCc6bG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkPT1cXCdcXCcgfHwgbG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkPT11bmRlZmluZWR9XCIgY2xhc3M9XCJidG4gYnRuLXhzXCI+PHNwYW4gbmctaWY9XCJsb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPVxcJ1xcJyAmJiBsb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPXVuZGVmaW5lZFwiPnt7bG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkfX08L3NwYW4+IDxzcGFuIG5nLWlmPVwibG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkPT1cXCdcXCcgfHwgbG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkPT11bmRlZmluZWRcIj5TZWxlY3Qgc21hcnQgY29udHJhY3Q8L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiIG5nLWlmPVwibG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT1cXCdcXCcgJiYgbG9jYWxWYXJzV2lkZ2V0LnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT11bmRlZmluZWRcIj48YSBocmVmIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYm9yZGVyLTAgYnRuLXNtXCIgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LXByb3BcXCc6bG9jYWxWYXJzV2lkZ2V0LmRhdGFzZXRNYXBwZXJUeXBlPT0wIHx8IGxvY2FsVmFyc1dpZGdldC5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkfVwiIHRpdGxlPVwiU2hvdy9oaWRlIHByb3BlcnRpZXNcIiBuZy1jbGljaz1sb2NhbFZhcnNXaWRnZXQuc2hvd1Byb3BlcnRpZXMoMik+PGkgY2xhc3M9XCJmYXMgZmEtY29nXCI+PC9pPjwvYT4gPGEgbmctaWY9ZmFsc2UgaHJlZiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zdWNjZXNzIGJvcmRlci0wIGJ0bi1zbVwiIHRpdGxlPVwiU2hvdy9oaWRlIGZvcm1cIiBuZy1jbGljaz1cImxvY2FsVmFyc1dpZGdldC5zaG93Rm9ybT0hbG9jYWxWYXJzV2lkZ2V0LnNob3dGb3JtXCI+PGkgbmctY2xhc3M9XCJ7XFwnZmFzIGZhLWV5ZS1zbGFzaFxcJzohbG9jYWxWYXJzV2lkZ2V0LnNob3dGb3JtLFxcJ2ZhcyBmYS1leWVcXCc6bG9jYWxWYXJzV2lkZ2V0LnNob3dGb3JtfVwiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxkaXYgY2xhc3M9XCJkcm9wZG93biBkLWlubGluZS1ibG9ja1wiIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1wcm9wXFwnOmxvY2FsVmFyc1dpZGdldC5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCBsb2NhbFZhcnNXaWRnZXQuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZH1cIj48YSBocmVmIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhbmdlciBib3JkZXItMCBidG4tc21cIiB0aXRsZT1cIlJlbW92ZSBmaWVsZFwiIGlkPWRyb3Bkb3duTWVudUJ1dHRvbiBkYXRhLXRvZ2dsZT1kcm9wZG93biBhcmlhLWhhc3BvcHVwPXRydWUgYXJpYS1leHBhbmRlZD1mYWxzZT48aSBjbGFzcz1cImZhIGZhLXRyYXNoXCI+PC9pPjwvYT48ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBzaGFkb3cgcC0wIGRyb3Bkb3duLW1heC1jb250ZW50LXdpZHRoXCIgYXJpYS1sYWJlbGxlZGJ5PWRyb3Bkb3duTWVudUJ1dHRvbj48ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgcC0wIHB4LTEgYmctbGlnaHRcIj48c3BhbiBjbGFzcz1cImZhIGZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlIHRleHQtZGFuZ2VyXCI+PHNwYW4gY2xhc3M9XCJtbC0yIHNtYWxsXCI+RGVsZXRlIHdpZGdldCBjb25maXJtYXRpb248L3NwYW4+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9bS0xPjxkaXYgY2xhc3M9XCJtLTEgc21hbGwgYm9sZCB0ZXh0LWRhcmtcIj5DbGljayBDb25maXJtIHRvIGRlbGV0ZSB3aWRnZXQhPC9kaXY+PGRpdiBuZy1pZj1mYWxzZSBjbGFzcz1cIm1sLTEgc21hbGwgdGV4dC1kYXJrXCI+VGhpcyBhY3Rpb24gbWF5IHJlc3VsdCBpbiBhIGxvc3Mgb2YgZGF0YSE8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXAtMT48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tZGFuZ2VyXCIgdGl0bGU9Q29uZmlybSBuZy1jbGljaz1yZW1vdmVGaWVsZCgkaW5kZXgpPkNvbmZpcm0gPGkgY2xhc3M9XCJtbC0yIGZhIGZhLWNoZWNrXCI+PC9pPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cC0zPjxkaXYgbmctaWY9XCJsb2NhbFZhcnNXaWRnZXQuZGF0YXNldE1hcHBlclR5cGU+MFwiIGNsYXNzPW1iLTI+PGRpdiBrdC1mb3JtLWVsZW1lbnQtcHJvcGVydGllcyBmZD1mZCBsb2NhbC12YXJzPWxvY2FsVmFyc1dpZGdldD48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPSRyb290Lmdsb2JhbHMuY3VycmVudFVzZXIud2ViM0Nvbm5lY3RlZCBjbGFzcz1cInJvdyBtLTAgbXktNFwiPjxkaXYgY2xhc3M9XCJjb2wtbGctOCB0ZXh0LWNlbnRlciBtYi0yXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cImZkLlNob3dUYWI9MTtmZC5nZXRNeVN0YWtpbmdzKClcIiBuZy1jbGFzcz1cIntcXCdidG4tcHJpbWFyeVxcJzogZmQuU2hvd1RhYj09MSxcXCdidG4tbGlnaHRcXCc6IGZkLlNob3dUYWIhPTF9XCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IHctNzVcIj48aSBjbGFzcz1cImZhcyBmYS1oYW5kLWhvbGRpbmctdXNkIG1yLTJcIj48L2k+TXkgc3Rha2luZ3M8L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTggdGV4dC1jZW50ZXIgbWItMlwiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9XCJmZC5vcGVuU3Rha2VTY3JlZW4oXFwnS1RMWU9cXCcpXCIgbmctY2xhc3M9XCJ7XFwnYnRuLXByaW1hcnlcXCc6ZmQuU2hvd1RhYj09MixcXCdidG4tbGlnaHRcXCc6ZmQuU2hvd1RhYiE9Mn1cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgdy03NVwiPjxpbWcgY2xhc3Mgc3JjPS9zdGF0aWMvaW1nL2Zhdmljb24uaWNvPiBTdGFrZSBLVExZTzwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctOCB0ZXh0LWNlbnRlciBtYi0yXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cImZkLm9wZW5TdGFrZVNjcmVlbihcXCdCTkZcXCcpXCIgbmctY2xhc3M9XCJ7XFwnYnRuLXByaW1hcnlcXCc6ZmQuU2hvd1RhYj09MyxcXCdidG4tbGlnaHRcXCc6ZmQuU2hvd1RhYiE9M31cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgdy03NVwiPjxpbWcgY2xhc3Mgd2lkdGg9OCUgc3JjPS9zdGF0aWMvaW1nL2JuZl9ncmV5LnBuZz4gU3Rha2UgQk5GPC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj0kcm9vdC5nbG9iYWxzLmN1cnJlbnRVc2VyLndlYjNDb25uZWN0ZWQ+PGRpdiBuZy1pZj1cImZkLlNob3dUYWI9PTFcIiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHRleHQtbGlnaHQgdGV4dC1jZW50ZXJcIiBuZy1pZj1cImZkLm15U3Rha2VzLmxlbmd0aD09MCAmJiBmZC5hZnRlclF1ZXJ5XCI+PGRpdj48aSBjbGFzcz1cImZhciBmYS1mb2xkZXItb3BlbiBmYS00eFwiPjwvaT48L2Rpdj48c3BhbiBjbGFzcz1cImg1IG10LTFcIj5Zb3UgaGF2ZW5cXCd0IHN0YWtlZCBhbnkgdG9rZW5zITwvc3Bhbj48L2Rpdj48ZGl2IG5nLXJlcGVhdD1cInN0YWtlIGluIGZkLm15U3Rha2VzIHRyYWNrIGJ5ICRpbmRleFwiIGNsYXNzPVwiY29sLWxnLTEyIGNvbC1zbS0yNCBwLTFcIj48ZGl2IHN0eWxlPWNvbG9yOiMyNjMxNGQ7YmFja2dyb3VuZC1jb2xvcjojZWZmMWYzIGNsYXNzPVwicm91bmRlZCBwLTNcIj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxkaXY+PHNwYW4gY2xhc3M9Ym9sZD5TdGFrZWQ8L3NwYW4+PC9kaXY+PHNwYW4gY2xhc3M9XCJib2xkIG1yLTIgaDRcIiBuZy1iaW5kPWZkLmZvcm1hdE51bWJlcihzdGFrZS5hbW91bnQpPjwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJib2xkIG1yLTIgaDRcIiBuZy1iaW5kPWZkLmdldFRva2VuVGlja2VyKHN0YWtlLnRva2VuKT48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBwLTAgbXktMlwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1jb2wtbGctMTI+PHNwYW4gbmctY2xhc3MgY2xhc3M9Ym9sZD5TdGFraW5nIHN0YXJ0ZWQgb248L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1jb2wtbGctMTI+PHNwYW4gY2xhc3M+e3tmZC5mb3JtYXREYXRlKHN0YWtlLmNyZWF0ZWRBdCl9fTwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHAtMCBteS0yXCI+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPWNvbC1sZy0xMj48ZGl2IG5nLWlmPWZkLmlzUmVsZWFzZWQoc3Rha2UpPjxzcGFuIGNsYXNzPVwiYm9sZCB0ZXh0LXN1Y2Nlc3NcIj5TdGFraW5nIGVuZGVkIG9uPC9zcGFuPjwvZGl2PjxkaXYgbmctaWY9IWZkLmlzUmVsZWFzZWQoc3Rha2UpPjxzcGFuIGNsYXNzPVwiYm9sZCB0ZXh0LXdhcm5pbmdcIj5TdGFraW5nIGVuZHMgb248L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb2wtbGctMTI+PGRpdj48c3BhbiBuZy1jbGFzcz1cIntcXCd0ZXh0LXN1Y2Nlc3NcXCc6ZmQuaXNSZWxlYXNlZChzdGFrZSksXFwndGV4dC13YXJuaW5nXFwnOiFmZC5pc1JlbGVhc2VkKHN0YWtlKX1cIj57e2ZkLmZvcm1hdERhdGUoc3Rha2Uuc3Rha2VFbmQpfX08L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTAgbXktMlwiIG5nLWlmPSFzdGFrZS5yZWRlZW1lZD48ZGl2IGNsYXNzPWNvbC1sZy0xMiBuZy1pZj1mZC5pc1JlbGVhc2VkKHN0YWtlKT48ZGl2PjxzcGFuIGNsYXNzPXRleHQtc3VjY2Vzcz5Zb3UgY2FuIHJlZGVlbTwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTEyIGJvbGRcIiBuZy1pZj1mZC5pc1JlbGVhc2VkKHN0YWtlKT48ZGl2PjxkaXY+PHNwYW4gbmctYmluZD1cImZkLmdldEFtb3VudChzdGFrZS50b2tlbixcXCdLVExZT1xcJyxzdGFrZS5hbW91bnQsc3Rha2UucmV3YXJkQW10MSlcIj48L3NwYW4+IDxzcGFuPktUTFlPPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gbmctYmluZD1cImZkLmdldEFtb3VudChzdGFrZS50b2tlbixcXCdCTkZcXCcsc3Rha2UuYW1vdW50LHN0YWtlLnJld2FyZEFtdDIpXCI+PC9zcGFuPiA8c3Bhbj5CTkY8L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTAgbXktMlwiIG5nLWlmPSFmZC5pc1JlbGVhc2VkKHN0YWtlKT48ZGl2IGNsYXNzPWNvbC1sZy0xMj48ZGl2IG5nLWlmPSFzdGFrZS5yZWRlZW1lZD48c3BhbiBjbGFzcz1ib2xkPldoZW4gc3Rha2luZyBlbmRzIHlvdSBjYW4gcmVkZWVtPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTEyPjxkaXY+PHNwYW4gbmctYmluZD1cImZkLmdldEFtb3VudChzdGFrZS50b2tlbixcXCdLVExZT1xcJyxzdGFrZS5hbW91bnQsc3Rha2UucmV3YXJkQW10MSlcIj48L3NwYW4+IDxzcGFuPktUTFlPPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gbmctYmluZD1cImZkLmdldEFtb3VudChzdGFrZS50b2tlbixcXCdCTkZcXCcsc3Rha2UuYW1vdW50LHN0YWtlLnJld2FyZEFtdDIpXCI+PC9zcGFuPiA8c3Bhbj5CTkY8L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTAgbXktMlwiIG5nLWlmPXN0YWtlLnJlZGVlbWVkPjxkaXYgY2xhc3M9Y29sLWxnLTEyPjxkaXY+PHNwYW4gY2xhc3M9XCJib2xkIHRleHQtc3VjY2Vzc1wiPlJlZGVlbWVkIG9uPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTEyPjxzcGFuIGNsYXNzPXRleHQtc3VjY2Vzcz57e2ZkLmZvcm1hdERhdGUoc3Rha2UucmVkZWVtZWRBdCl9fTwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBteS0yXCIgbmctaWY9c3Rha2UucmVkZWVtZWQ+PGRpdiBjbGFzcz1jb2wtbGctMTI+PGRpdiBuZy1pZj1cInN0YWtlLnN0YWtlRW5kPD1zdGFrZS5yZWRlZW1lZEF0XCI+PHNwYW4gY2xhc3M+WW91IGhhdmUgcmVkZWVtZWQ8L3NwYW4+PC9kaXY+PGRpdiBuZy1pZj1cInN0YWtlLnN0YWtlRW5kPnN0YWtlLnJlZGVlbWVkQXRcIj48c3BhbiBjbGFzcz5Zb3UgaGF2ZSByZWRlZW1lZCBlYXJseTwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTEyIGJvbGRcIj48ZGl2IG5nLWlmPVwic3Rha2Uuc3Rha2VFbmQ8PXN0YWtlLnJlZGVlbWVkQXRcIj48c3BhbiBuZy1iaW5kPVwiZmQuZ2V0QW1vdW50KHN0YWtlLnRva2VuLFxcJ0tUTFlPXFwnLHN0YWtlLmFtb3VudCxzdGFrZS5yZXdhcmRBbXQxKVwiPjwvc3Bhbj4gPHNwYW4+S1RMWU88L3NwYW4+PC9kaXY+PGRpdiBuZy1pZj1cInN0YWtlLnN0YWtlRW5kPD1zdGFrZS5yZWRlZW1lZEF0XCI+PHNwYW4gbmctYmluZD1cImZkLmdldEFtb3VudChzdGFrZS50b2tlbixcXCdCTkZcXCcsc3Rha2UuYW1vdW50LHN0YWtlLnJld2FyZEFtdDIpXCI+PC9zcGFuPiA8c3Bhbj5CTkY8L3NwYW4+PC9kaXY+PGRpdiBuZy1pZj1cInN0YWtlLnN0YWtlRW5kPnN0YWtlLnJlZGVlbWVkQXRcIj48c3BhbiBuZy1iaW5kPWZkLmZvcm1hdE51bWJlcihzdGFrZS5hbW91bnQpPjwvc3Bhbj4gPHNwYW4gbmctYmluZD1mZC5nZXRUb2tlblRpY2tlcihzdGFrZS50b2tlbik+PC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBwLTAgbWItMlwiPjxidXR0b24gbmctaWY9XCJzdGFrZS5zdGFrZUVuZDw9ZmQuY3VycmVudERhdGUgJiYgIXN0YWtlLnJlZGVlbWVkXCIgdHlwZT1idXR0b24gbmctZGlzYWJsZWQ9XCJmZC5tc2dzWyRpbmRleF0ucGVuZGluZyB8fCBmZC5tc2dzWyRpbmRleF0uc3RhdHVzXCIgbmctY2xpY2s9ZmQuUmVkZWVtKGZhbHNlLCRpbmRleCkgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IGNvbC1sZy0yNFwiPlJlZGVlbSBub3c8L2J1dHRvbj48ZGl2IG5nLWlmPVwic3Rha2Uuc3Rha2VFbmQ+ZmQuY3VycmVudERhdGUgJiYgIXN0YWtlLnJlZGVlbWVkXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1kaXNhYmxlZD1cImZkLm1zZ3NbJGluZGV4XS5wZW5kaW5nIHx8IGZkLm1zZ3NbJGluZGV4XS5zdGF0dXNcIiBuZy1jbGljaz1mZC5SZWRlZW0odHJ1ZSwkaW5kZXgpIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeSBjb2wtbGctMjRcIj5SZWRlZW0gZWFybHk8L2J1dHRvbj4gPHNwYW4gY2xhc3M9XCJzbWFsbCB0ZXh0LWRhbmdlclwiPklmIHlvdSByZWRlZW0gZWFybHkgeW91IHdpbGwgbm90IHJlY2VpdmUgdGhlIHJld2FyZHMhPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcC0wIG10LTJcIj48ZGl2IG5nLWlmPWZkLm1zZ3NbJGluZGV4XS50cmFuc2FjdGlvbkhhc2ggY2xhc3M9XCJyb3cgYm9yZGVyLXRvcCBweS0yIG0tMCBtdC0zXCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxzcGFuIGNsYXNzPVwiYm9sZCBtci0zXCI+VHJhbnNhY3Rpb24gc3VibWl0dGVkPC9zcGFuPiA8YSBocmVmPWh0dHBzOi8vZXRoZXJzY2FuLmlvL3R4L3t7ZmQubXNnc1skaW5kZXhdLnRyYW5zYWN0aW9uSGFzaH19IHRhcmdldD1fYmxhbms+VmlldyBvbiBldGhlcnNjYW48L2E+PGRpdiBjbGFzcz1cInRleHQtYnJlYWsgdGV4dC13cmFwXCI+e3tmZC5tc2dzWyRpbmRleF0udHJhbnNhY3Rpb25IYXNofX08L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPWZkLm1zZ3NbJGluZGV4XS5wZW5kaW5nIGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcC0wIHRleHQtd2FybmluZyBib2xkXCI+UGVuZGluZyB0cmFuc2FjdGlvbi4uLjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9ZmQubXNnc1skaW5kZXhdLmNvbmZpcm1hdGlvbiBjbGFzcz1cInJvdyBtLTAgbXQtMlwiPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTAgbXItMlwiPjxzcGFuIGNsYXNzPlRyYW5zYWN0aW9uIGNvbXBsZXRlZDwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1pbmZvXCI+e3tmZC5tc2dzWyRpbmRleF0uY29uZmlybWF0aW9ufX0gYmxvY2sgY29uZmlybWF0aW9uczwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIHAtMFwiPjxzcGFuIGNsYXNzPlN0YXR1czwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJtbC0xIGJhZGdlIGJhZGdlLXN1Y2Nlc3NcIiBuZy1pZj1mZC5tc2dzWyRpbmRleF0uc3RhdHVzPlN1Y2Nlc3M8L3NwYW4+IDxzcGFuIGNsYXNzPVwibWwtMSBiYWRnZSBiYWRnZS1kYW5nZXJcIiBuZy1pZj0hZmQubXNnc1skaW5kZXhdLnN0YXR1cz5FcnJvcjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPWZkLm1zZ3NbJGluZGV4XS5lcnJvck1lc3NhZ2UgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBwLTAgdGV4dC1kYW5nZXJcIj5FcnJvcjoge3tmZC5tc2dzWyRpbmRleF0uZXJyb3JNZXNzYWdlfX08L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwiZmQuU2hvd1RhYj09MiB8fCBmZC5TaG93VGFiPT0zXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjZWZmMWYzO1wiIGNsYXNzPVwicm93IHAtMyByb3VuZGVkIG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMTIgY29sLXhzLTI0IGNvbC1zbS0yNCBwLTBcIj48ZGl2IGNsYXNzPVwicm93IG0tMCBteS0zXCI+PGRpdiBuZy1pZj1mZC5hcHByb3ZhbE9wZW4gY2xhc3M9bXktMj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwiZmQuYXBwcm92YWxPcGVuPWZhbHNlXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBwLTAgcHktMVwiPjxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctbGVmdCBtci0xXCI+PC9pPlJldHVybiB0byBzdGFraW5nPC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCB0ZXh0LWNlbnRlciBwLTAgbXktMlwiPjxzcGFuIGNsYXNzPWg1PllvdXIgcmVtYWluaW5nIGxpbWl0IGlzPC9zcGFuPjxkaXYgY2xhc3M9XCJib2xkIGJnLXdoaXRlIHAtMiByb3VuZGVkXCI+e3tmZC5yZW1haW5TdGFrZUxpbWl0UHJpbnR9fSB7e2ZkLmN1cnJlbnRUb2tlblRpY2tlcn19PC9kaXY+PGRpdiBuZy1pZj1mYWxzZT48bGFiZWwgY2xhc3M9dGV4dC1tdXRlZD5SZW1haW5pbmcgc3Rha2UgbGltaXQ8L2xhYmVsPiB7e2ZkLm1heFN0YWtlTGltaXRQcmludH19PHNwYW4+PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9ZmQuYXBwcm92YWxPcGVuIGNsYXNzPVwiY29sLWxnLTI0IHRleHQtY2VudGVyIHAtMCBteS0yXCI+PHNwYW4gY2xhc3M9aDU+WW91ciBhbGxvd2FuY2UgaXM8L3NwYW4+PGRpdiBjbGFzcz1cImJvbGQgYmctd2hpdGUgcC0yIHJvdW5kZWRcIj57e2ZkLmFsbG93YW5jZX19IHt7ZmQuY3VycmVudFRva2VuVGlja2VyfX08L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPWZkLmFwcHJvdmFsT3BlbiBjbGFzcz1cImNvbC1sZy0yNCBwLTAgbXQtMlwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxzcGFuIGNsYXNzPVwidGV4dC1wcmltYXJ5IGJvbGQgaDVcIj5BbGxvd2FuY2UgYW1vdW50PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgdGV4dC1yaWdodCBwLTBcIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLnNldE1heEFsbG93YW5jZSgpIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMFwiPk1heDwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9ZmQuYXBwcm92YWxPcGVuIGNsYXNzPVwiY29sLWxnLTI0IHAtMFwiPjxkaXYgbmctaWY9ZmQuYXBwcm92YWxPcGVuIGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wgcC0wXCI+PGlucHV0IHR5cGU9dGV4dCBtaW49MCBuZy1yZXF1aXJlZD10cnVlIHN0eWxlPVwiZm9udC1zaXplOiB4LWxhcmdlO2JhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50XCIgY2xhc3M9Zm9ybS1jb250cm9sIHBsYWNlaG9sZGVyPTAuMDAgbmctbW9kZWw9ZmQuQXBwcm92ZUFtb3VudD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPWZkLmFwcHJvdmFsT3BlbiBjbGFzcz1cImNvbC1sZy0yNCBwLTAgbXktMlwiPjxkaXYgbmctaWY9ZmQuYXBwcm92YWxPcGVuIGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcC0wIG10LTJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLnNldEFsbG93YW5jZSgpIG5nLWRpc2FibGVkPVwiZmQuQXBwcm92ZUFtb3VudD09dW5kZWZpbmVkXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3Mgdy0xMDBcIj5BcHByb3ZlIGFsbG93YW5jZTwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9IWZkLmFwcHJvdmFsT3BlbiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wIHB5LTFcIj48c3BhbiBjbGFzcz1cInRleHQtcHJpbWFyeSBib2xkIGg2XCI+QW1vdW50PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgdGV4dC1yaWdodCBwLTAgcHktMVwiPjxzcGFuIGNsYXNzPW1yLTE+QWxsb3dhbmNlIGlzPC9zcGFuPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwiZmQuYXBwcm92YWxPcGVuPXRydWVcIiB0aXRsZT1cIkNsaWNrIHRvIHNldCBhbGxvd2FuY2VcIiBjbGFzcz1cImJ0biBidG4teHMgYnRuLW91dGxpbmUtc3VjY2VzcyBwLTFcIj48c3BhbiBjbGFzcz1tci0xPnt7ZmQuYWxsb3dhbmNlfX08L3NwYW4+PHNwYW4+e3tmZC5jdXJyZW50VG9rZW5UaWNrZXJ9fTwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPSFmZC5hcHByb3ZhbE9wZW4gY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbCBwLTBcIj48aW5wdXQgdHlwZT10ZXh0IG1pbj0wIHN0eWxlPVwiZm9udC1zaXplOiB4LWxhcmdlO2JhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50XCIgY2xhc3M9Zm9ybS1jb250cm9sIHBsYWNlaG9sZGVyPTAuMDAgbmctbW9kZWw9ZmQuU3Rha2VBbW91bnQ+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj0hZmQuYXBwcm92YWxPcGVuIGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wgcC0wIG10LTJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLnN0YWtlKCkgY2xhc3M9XCJidG4gYnRuLWxnIGJ0bi1zdWNjZXNzIHctNzVcIj5TdGFrZTwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLnNldE1heCgpIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMCBweS0xXCI+TWF4PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1mZC5hcHByb3ZhbE9wZW4gY2xhc3M9XCJjb2wtbGctMjQgcC0wXCI+PGRpdiBuZy1pZj1mZC50cmFuc2FjdGlvbkhhc2gxIGNsYXNzPVwicm93IGJvcmRlci10b3AgcHktMiBtLTAgbXQtM1wiPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48c3BhbiBjbGFzcz1cImJvbGQgbXItMlwiPlRyYW5zYWN0aW9uIHN1Ym1pdHRlZDwvc3Bhbj4gPGEgaHJlZj1odHRwczovL2V0aGVyc2Nhbi5pby90eC97e2ZkLnRyYW5zYWN0aW9uSGFzaDF9fSB0YXJnZXQ9X2JsYW5rPlZpZXcgb24gZXRoZXJzY2FuPC9hPjxkaXYgY2xhc3M9XCJ0ZXh0LWJyZWFrIHRleHQtd3JhcFwiPnt7ZmQudHJhbnNhY3Rpb25IYXNoMX19PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1mZC5wZW5kaW5nMSBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHAtMCB0ZXh0LXdhcm5pbmcgYm9sZFwiPlBlbmRpbmcgdHJhbnNhY3Rpb24uLi48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPWZkLmNvbmZpcm1hdGlvbjEgY2xhc3M9XCJyb3cgbS0wIG10LTJcIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wIG1yLTJcIj48c3BhbiBjbGFzcz5UcmFuc2FjdGlvbiBjb21wbGV0ZWQ8L3NwYW4+IDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtaW5mb1wiPnt7ZmQuY29uZmlybWF0aW9uMX19IGJsb2NrIGNvbmZpcm1hdGlvbnM8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCBwLTBcIj48c3BhbiBjbGFzcz5TdGF0dXM8L3NwYW4+IDxzcGFuIGNsYXNzPVwibWwtMSBiYWRnZSBiYWRnZS1zdWNjZXNzXCIgbmctaWY9ZmQuc3RhdHVzMT5TdWNjZXNzPC9zcGFuPiA8c3BhbiBjbGFzcz1cIm1sLTEgYmFkZ2UgYmFkZ2UtZGFuZ2VyXCIgbmctaWY9IWZkLnN0YXR1czE+RXJyb3I8L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1mZC5lcnJvck1lc3NhZ2UxIGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcC0wIHRleHQtZGFuZ2VyXCI+RXJyb3I6IHt7ZmQuZXJyb3JNZXNzYWdlMX19PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj0hZmQuYXBwcm92YWxPcGVuIGNsYXNzPVwiY29sLWxnLTI0IHAtMFwiPjxkaXYgbmctaWY9ZmQudHJhbnNhY3Rpb25IYXNoMiBjbGFzcz1cInJvdyBib3JkZXItdG9wIHB5LTIgbS0wIG10LTNcIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PHNwYW4gY2xhc3M9XCJib2xkIG1yLTJcIj5UcmFuc2FjdGlvbiBzdWJtaXR0ZWQ8L3NwYW4+IDxhIGhyZWY9aHR0cHM6Ly9ldGhlcnNjYW4uaW8vdHgve3tmZC50cmFuc2FjdGlvbkhhc2gyfX0gdGFyZ2V0PV9ibGFuaz5WaWV3IG9uIGV0aGVyc2NhbjwvYT48ZGl2IGNsYXNzPVwidGV4dC1icmVhayB0ZXh0LXdyYXBcIj57e2ZkLnRyYW5zYWN0aW9uSGFzaDJ9fTwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9ZmQucGVuZGluZzIgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBwLTAgdGV4dC13YXJuaW5nIGJvbGRcIj5QZW5kaW5nIHRyYW5zYWN0aW9uLi4uPC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1mZC5jb25maXJtYXRpb24yIGNsYXNzPVwicm93IG0tMCBtdC0yXCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMCBtci0yXCI+PHNwYW4gY2xhc3M+VHJhbnNhY3Rpb24gY29tcGxldGVkPC9zcGFuPiA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWluZm9cIj57e2ZkLmNvbmZpcm1hdGlvbjJ9fSBibG9jayBjb25maXJtYXRpb25zPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgcC0wXCI+PHNwYW4gY2xhc3M+U3RhdHVzPC9zcGFuPiA8c3BhbiBjbGFzcz1cIm1sLTEgYmFkZ2UgYmFkZ2Utc3VjY2Vzc1wiIG5nLWlmPWZkLnN0YXR1czI+U3VjY2Vzczwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJtbC0xIGJhZGdlIGJhZGdlLWRhbmdlclwiIG5nLWlmPSFmZC5zdGF0dXMyPkVycm9yPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9ZmQuZXJyb3JNZXNzYWdlMiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHAtMCB0ZXh0LWRhbmdlclwiPkVycm9yOiB7e2ZkLmVycm9yTWVzc2FnZTJ9fTwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdEt0bHlvU3Rha2luZ1Byb3BlcnRpZXMuaHRtbCcsJzxkaXYgY2xhc3M9cC0xPjxkaXYgbmctaWY9XCJsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTFcIiBmZD1mZCBsb2NhbC12YXJzPWxvY2FsVmFycyBrdC1kYXRhc2V0LW1hcHBlcj48L2Rpdj48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPjFcIiBjbGFzcz1cImJ0bi1ncm91cCBidG4tZ3JvdXAtdG9nZ2xlIHctMTAwXCIgZGF0YS10b2dnbGU9YnV0dG9ucz48bGFiZWwgbmctY2xpY2s9XCJsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9NVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeSBhY3RpdmVcIj48c3BhbiBjbGFzcz1cImZhIGZhLWNvZ1wiPjwvc3Bhbj4gPGlucHV0IHR5cGU9cmFkaW8gbmFtZT1mb3JtdHlwZSBpZD1vcHRpb24xIGF1dG9jb21wbGV0ZT1vZmY+IENvbnRyYWN0IHByb3BlcnRpZXM8L2xhYmVsPiA8bGFiZWwgbmctY2xpY2s9XCJsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9M1wiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtZGF0YWJhc2VcIj48L3NwYW4+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT1mb3JtdHlwZSBpZD1vcHRpb24yIGF1dG9jb21wbGV0ZT1vZmY+IGFiYzwvbGFiZWw+IDxsYWJlbCBuZy1jbGljaz1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT00XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1jb3B5XCI+PC9zcGFuPiA8aW5wdXQgdHlwZT1yYWRpbyBuYW1lPWZvcm10eXBlIGlkPW9wdGlvbjMgYXV0b2NvbXBsZXRlPW9mZj4geHl6PC9sYWJlbD48L2Rpdj48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT01XCIgY2xhc3M9XCJyb3cgbS0wIHAtMlwiPjxkaXYgY2xhc3M9Y29sLTI0PjxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWRcIj5MYWJlbDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgbmctbW9kZWw9ZmQuTGFiZWw+IDxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWRcIj5FcnJvciBtc2c8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLkVycm9yTXNnPiA8bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkXCI+U2VhcmNoVGV4dDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgbmctbW9kZWw9ZmQuU2VhcmNoVGV4dD4gPGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZFwiPkZ1bmN0aW9uPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkZ1bmN0aW9uPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMTIgbXQtMVwiPjxkaXYgY2xhc3M9bWItMj48c3BhbiBjbGFzcz1cImJvbGQgc21hbGwgYm9yZGVyLWJvdHRvbSBib3JkZXItaW5mbyBwLTEgdGV4dC1pbmZvXCI+Q29udHJhY3QgZGF0YXNldDwvc3Bhbj48L2Rpdj48ZGl2IG5nLXJlcGVhdD1cImRhdGFzZXQgaW4gZmQucmVzb3VyY2UuUGFyYW1ldGVycy5EYXRhc2V0cyB0cmFjayBieSAkaW5kZXhcIiBjbGFzcz1wLTI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1mZC5sb2FkQmxvY2tjaGFpbkRhdGFzZXREZWZpbml0aW9uKGRhdGFzZXQpIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1pbmZvIG15LTJcIj57e2RhdGFzZXQuRGF0YXNldE5hbWV9fTwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMTIgbXQtMVwiPjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdExhYmVsLmh0bWwnLCc8ZGl2IGNsYXNzPVwicm93IGNvbCBmb3JtLWdyb3VwIG14LTAgbXQtMSBkYXRhc2V0LWl0ZW1cIiBuZy1pZj1cImZkLlNob3dGaWVsZCB8fCAoZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTIpXCIgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChpbm5lckZvcm17e2ZkLlByZXNlbnRhdGlvbklkfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17e2ZkLlByZXNlbnRhdGlvbklkfX0ue3tmZC5OYW1lfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7ZmQuUHJlc2VudGF0aW9uSWR9fS57e2ZkLk5hbWV9fS4kaW52YWxpZCxcXCdiZy1ncmF5LTIwIG1yLTAgYm9yZGVyXFwnOmZkPT1nc3J2Yy5nZXRTZWxlY3RlZEZkKCkgJiYgZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzT3BlbmVkKCkgfVwiPjxkaXYgc3R5bGU9e3tmZC5sYWJlbEFsaWdufX0gY2xhc3M9e3tmZC5ncmlkQ2xhc3NMYWJlbH19IG5nLWNsYXNzPVwie1xcJ2NvbC1hdXRvXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZX1cIj48bGFiZWwgbmctaWY9IWZkLlBhcmFtZXRlcnMuU2hvd0FzTGluayBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2xhYmVsXFwnXCIgc3R5bGU9e3tmZC5jdXN0b21TdHlsZUxhYmVsfX0gbmctY2xhc3M9XCJ7XFwnY3VzdG9tLWVsLWxheW91dC1zdHlsZVxcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTF9XCI+e3tmZC5MYWJlbH19PC9sYWJlbD4gPGEgbmctaWY9ZmQuUGFyYW1ldGVycy5TaG93QXNMaW5rIGhyZWY9e3tmZC5QYXJhbWV0ZXJzLkxpbmtVcmx9fSBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2xhYmVsXFwnXCIgc3R5bGU9e3tmZC5jdXN0b21TdHlsZUxhYmVsfX0gbmctY2xhc3M9XCJ7XFwnY3VzdG9tLWVsLWxheW91dC1zdHlsZVxcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTF9XCI+e3tmZC5MYWJlbH19PC9hPjxkaXYgY2xhc3M9XCJlbGVtZW50LXByb3BlcnRpZXMtYnRucyBiZy1wcmltYXJ5IHJvdW5kZWQgc2hhZG93XCIgbmctaWY9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MlwiPjxzcGFuIGNsYXNzPVwibGFiZWwgbGFiZWwteHMgdGV4dC13aGl0ZSBteC0xIGJvbGRcIj57e2ZkLk5hbWV9fTwvc3Bhbj4gPGEgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIHByb3AtYnRuIGVsZW1lbnQtZHJhZy1oYW5kbGUge3tncmlkVHlwZX19LWVsZW1lbnQtZHJhZy1oYW5kbGVcIiB0aXRsZT1zb3J0IGhyZWY+PGkgY2xhc3M9XCJlbGVtZW50LWRyYWctaGFuZGxlIHt7Z3JpZFR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIGZhIGZhLWdyaXAtdmVydGljYWxcIj48L2k+PC9hPiA8YSBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4teHMgcHJvcC1idG5cIiBocmVmIHRpdGxlPVwiRmllbGQgcHJvcGVydGllc1wiIG5nLWNsaWNrPXNob3dQcm9wZXJ0aWVzKCRldmVudCk+PGkgY2xhc3M9XCJmYSBmYS1jb2dcIj48L2k+PC9hPjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdExhYmVsUHJvcGVydGllcy5odG1sJywnPGRpdiBpZD1rdExhYmVsUHJvcGVydGllcyBuZy1mb3JtPVwiXFwnbGFiZWxQcm9wZXJ0aWVzXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgY2xhc3M9cC0xPjxkaXYga3QtcHJvcGVydHktaGVhZGVyPjwvZGl2PjxkaXYgbmctY2xpY2s9XCJsb2NhbFZhcnMuc2hvd0Jhc2ljID0gIWxvY2FsVmFycy5zaG93QmFzaWNcIiBjbGFzcz1cImV4cGFuZC1wcm9wZXJ0eS1wYW5lbCB0YWcgYm9yZGVyLWJvdHRvbSBib3JkZXItc3VjY2VzcyBteS0xIHB5LTFcIiBkYXRhLXRvZ2dsZT1jb2xsYXBzZSBocmVmPSNtYWluUHJvcGVydHlQYW5lbCByb2xlPWJ1dHRvbiBhcmlhLWV4cGFuZGVkPXRydWUgYXJpYS1jb250cm9scz1tYWluUHJvcGVydHlQYW5lbD48c3BhbiBjbGFzcz1cImNvbCBwLTBcIj5CQVNJQzwvc3Bhbj4gPGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLXNob3c9bG9jYWxWYXJzLnNob3dCYXNpYyBjbGFzcz1cImZhcyBmYS1hbmdsZS1kb3duXCI+PC9pPiA8aSBzdHlsZT1cImZvbnQtc2l6ZTogbGFyZ2U7XCIgbmctc2hvdz0hbG9jYWxWYXJzLnNob3dCYXNpYyBjbGFzcz1cImZhcyBmYS1hbmdsZS11cFwiPjwvaT48L2Rpdj48ZGl2IGNsYXNzPVwibWItMiBjb2xsYXBzZSBzaG93XCIgaWQ9bWFpblByb3BlcnR5UGFuZWw+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkxhYmVsIHRleHQ8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLkxhYmVsPjxkaXYgY2xhc3M+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYlNob3dGaWVsZHt7ZmQuUHJlc2VudGF0aW9uSWR9fT48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCIgbmFtZT1jYlNob3dGaWVsZHt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1tb2RlbD1mZC5TaG93RmllbGQgbmctY2hlY2tlZD1mZC5TaG93RmllbGQ+IFNob3cgbGFiZWw8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYlNob3dBc0xpbmt7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JTaG93QXNMaW5re3tmZC5QcmVzZW50YXRpb25JZH19IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuU2hvd0FzTGluayBuZy1jaGVja2VkPWZkLlBhcmFtZXRlcnMuU2hvd0FzTGluaz4gU2hvdyBhcyBoeXBlcmxpbms8L2xhYmVsPjwvZGl2PjxkaXYgbmctaWY9ZmQuUGFyYW1ldGVycy5TaG93QXNMaW5rPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5MaW5rIFVSTDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5MaW5rVXJsPjwvZGl2PjwvZGl2PjxkaXYga3QtZmllbGQtYmFzaWMtcHJvcGVydGllcz48L2Rpdj48ZGl2IGt0LXdpZGdldC1kYXRhLXNvdXJjZS1kZWY+PC9kaXY+PGRpdiBuZy1jbGljaz1cImxvY2FsVmFycy5zaG93T3RoZXIgPSAhbG9jYWxWYXJzLnNob3dPdGhlclwiIGNsYXNzPVwiZXhwYW5kLXByb3BlcnR5LXBhbmVsIHRhZyBib3JkZXItYm90dG9tIGJvcmRlci1zdWNjZXNzIG15LTEgcHktMVwiIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIGhyZWY9I2Zvcm11bGFQcm9wZXJ0eVBhbmVsIHJvbGU9YnV0dG9uIGFyaWEtZXhwYW5kZWQ9dHJ1ZSBhcmlhLWNvbnRyb2xzPW1haW5Qcm9wZXJ0eVBhbmVsPjxzcGFuIGNsYXNzPVwiY29sIHAtMFwiPkZvcm11bGE8L3NwYW4+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PWxvY2FsVmFycy5zaG93QmFzaWMgY2xhc3M9XCJmYXMgZmEtYW5nbGUtZG93blwiPjwvaT4gPGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLXNob3c9IWxvY2FsVmFycy5zaG93QmFzaWMgY2xhc3M9XCJmYXMgZmEtYW5nbGUtdXBcIj48L2k+PC9kaXY+PGRpdiBmb3JtdWxhIGNsYXNzPVwibWItMiBjb2xsYXBzZVwiIGlkPWZvcm11bGFQcm9wZXJ0eVBhbmVsPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5Gb3JtdWxhPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlZhbHVlRm9ybXVsYT48ZGl2IGNsYXNzPW10LTE+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkZvcm11bGEgVW5pdHM8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuQ291bnRlclVuaXRzPjwvZGl2PjxkaXYgY2xhc3M9bXQtMT48bGFiZWwgZm9yPWRlY2ltYWxze3tmZC5QcmVzZW50YXRpb25JZH19PjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5EZWNpbWFsIFBsYWNlczwvbGFiZWw+IDxpbnB1dCBuYW1lPWRlY2ltYWxze3tmZC5QcmVzZW50YXRpb25JZH19IFwiIG5nLWRpc2FibGVkPWZkLlBhcmFtZXRlcnMuZGlzYWJsZUZvcm1hdHRpbmcgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuZGVjaW1hbFBsYWNlcz48L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9bXQtMj48bGFiZWwgY2xhc3M9XCJrdC1jaGVja2JveC1sYWJlbCBtdC0xXCIgZm9yPXVzZTEwMDB7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IG5hbWU9dXNlMTAwMHt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1kaXNhYmxlZD1mZC5QYXJhbWV0ZXJzLmRpc2FibGVGb3JtYXR0aW5nIHR5cGU9Y2hlY2tib3ggY2xhc3M9a3QtY2hlY2tib3gtcHJvcGVydGllcyBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLnVzZUdyb3VwaW5nU2VwYXJhdG9yPiBVc2UgMTAwMHMgc2VwYXJhdG9yPC9sYWJlbD48L2Rpdj48bGFiZWwgY2xhc3M9XCJrdC1jaGVja2JveC1sYWJlbCBtdC0xXCIgZm9yPWRpc2FibGVmb3JtYXR7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IG5hbWU9ZGlzYWJsZWZvcm1hdHt7ZmQuUHJlc2VudGF0aW9uSWR9fSB0eXBlPWNoZWNrYm94IGNsYXNzPWt0LWNoZWNrYm94LXByb3BlcnRpZXMgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5kaXNhYmxlRm9ybWF0dGluZz4gRGlzYWJsZSBmb3JtYXR0aW5nPC9sYWJlbD48L2Rpdj48ZGl2IGt0LWZpZWxkLXNpemUtcHJvcGVydHk+PC9kaXY+PGRpdiBrdC1maWVsZC1zdHlsZS1wcm9wZXJ0eT48L2Rpdj48ZGl2IGRlbGV0ZS1lbGVtZW50IGNsYXNzPW10LTE+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1pZj1cImZkLkVsZW1lbnRUeXBlIT1cXCdyZXNvdXJjZWlkXFwnXCIgY2xhc3M9XCJ3LTEwMCBidG4gYnRuLXhzIGJ0bi13YXJuaW5nXCIgdGl0bGU9XCJEZWxldGUgY29udGFpbmVyXCIgbmctY2xpY2s9ZmQubG9jYWxWYXJzLmdzcnZjLmNoYW5nZUNvbmZpcm1EZWxldGVFbGVtZW50KCk+PGkgY2xhc3M9XCJmYSBmYS10cmFzaCB0ZXh0LWRhcmtcIiBuZy1jbGFzcz1cIntcXCdkaXNhYmxlZFxcJzogZm9ybVBhcmFtcy5mb3JtTG9ja2VkfVwiPjwvaT4gRGVsZXRlIGVsZW1lbnQ8L2J1dHRvbj48ZGl2IGNsYXNzPW15LTE+PGRpdiBuZy1pZj1mZC5sb2NhbFZhcnMuZ3NydmMuZ2V0Q29uZmlybURlbGV0ZUVsZW1lbnQoKSBjbGFzcz1jYXJkPjxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBwLTAgcHgtMSBiZy1saWdodFwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtZXhjbGFtYXRpb24tdHJpYW5nbGUgdGV4dC1kYW5nZXJcIj48c3BhbiBjbGFzcz1cIm1sLTIgc21hbGxcIj5UaGlzIGFjdGlvbiBtYXkgcmVzdWx0IGluIGEgbG9zcyBvZiBkYXRhITwvc3Bhbj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1tdC0yPjxkaXYgY2xhc3M9XCJtbC0xIHNtYWxsIGJvbGQgdGV4dC1jZW50ZXIgdGV4dC1kYXJrXCI+Q2xpY2sgQ29uZmlybSB0byBkZWxldGUgZWxlbWVudCE8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicC0xIHRleHQtY2VudGVyXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4teHMgYnRuLWRhbmdlclwiIHRpdGxlPUNvbmZpcm0gbmctY2xpY2s9ZmQubG9jYWxWYXJzLmdzcnZjLmRlbGV0ZUVsZW1lbnQoZmQpPkNvbmZpcm0gPGkgY2xhc3M9XCJtbC0yIGZhIGZhLWNoZWNrXCI+PC9pPjwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5nc3J2Yy5zZXRDb25maXJtRGVsZXRlRWxlbWVudChmYWxzZSkgY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1saW5rIHRleHQtbXV0ZWQgbWwtYXV0b1wiPkNhbmNlbDwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdExpc3QuaHRtbCcsJzxkaXYgaWQ9a3RMaXN0e3tmZC5QcmVzZW50YXRpb25JZH19IG5nLWNsaWNrPXNob3dQcm9wZXJ0aWVzKCRldmVudCkgY2xhc3M9XCJyb3cgZm9ybS1ncm91cCBteC0wIG10LTIgcGItMSBkYXRhc2V0LWl0ZW1cIiBuZy1pZj1cImZkLlNob3dGaWVsZCB8fCByZXNvdXJjZURlZmluaXRpb24uc2hvd0hpZGRlbltyZXNvdXJjZURlZmluaXRpb24ucGFyZW50V2lkZ2V0VWlkICsgXFwnLVxcJysgcmVzb3VyY2VEZWZpbml0aW9uLnVpZF1cIiBuZy1jbGFzcz1cIntcXCdiZy1ncmF5LTIwIGJvcmRlciBzaGFkb3dcXCc6Zm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTIgJiYgZmQ9PWdzcnZjLmdldFNlbGVjdGVkRmQoKSAmJiBnc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKX1cIj48ZGl2IG5nLWhpZGU9XCIoZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGU9PTIgfHwgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTIpICYmIGZkLlBhcmFtZXRlcnMuSGlkZUxhYmVsXCIgY2xhc3M9e3tmZC5ncmlkQ2xhc3NMYWJlbH19IHN0eWxlPXt7ZmQubGFiZWxBbGlnbn19IG5nLWNsYXNzPVwie1xcJ2NvbC1hdXRvXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZX1cIj48bGFiZWwga3Qtc3R5bGUtYXR0cmlidXRlIGZkPWZkIHN0eWxlLXR5cGU9XCJcXCdsYWJlbFxcJ1wiIHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVMYWJlbH19IGNsYXNzPVwibWFyZ2luTDUgZm9ybS1jb250cm9sLWxhYmVsIG5vLWJvcmRlciBhbGlnbi1taWRkbGVcIiBmb3I9XCJ7e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX1cIiBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiAoaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiRpbnZhbGlkLFxcJ2N1c3RvbS1lbC1sYXlvdXQtc3R5bGVcXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xfVwiPnt7ZmQuTGFiZWx9fTwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1cInt7ZmQuZ3JpZENsYXNzRWxlbWVudH19IG15LWF1dG9cIj48ZGl2IHBsYWNlaG9sZGVyLWxpc3QgbmctaWY9IWZkLmNvZGVzTG9hZGVkPjxzZWxlY3QgY2xhc3M9Zm9ybS1jb250cm9sIG5hbWU9XCJ7ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19XCI+PG9wdGlvbiB2YWx1ZSBjbGFzcz10ZXh0LWxpZ2h0Pnt7OjpmZC5TZWFyY2hUZXh0fX08L29wdGlvbj48L3NlbGVjdD48L2Rpdj48ZGl2IG5nLWlmPVwiIWZkLlJlYWRPbmx5ICYmIGZkLmNvZGVzTG9hZGVkXCI+PGRpdiBuZy1mb3JtPVwiaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fVwiIG5nLWNsYXNzPVwie1xcJ2lzLXZhbGlkXFwnIDogKGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kdG91Y2hlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kZGlydHkpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiR2YWxpZH1cIj48c2VsZWN0IG5nLWlmPSFmZC5NdWx0aWxpbmUgZmQ9ZmQgbmctY2hhbmdlPWZkLnNlbGVjdGlvbl9jaGFuZ2VkKGl0ZW0sbW9kZWwpIG5nLW1vZGVsPWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0gc3R5bGUtdHlwZT1cIlxcJ2VsZW1lbnRcXCdcIiBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlRWxlbWVudH19OyBjbGFzcz1mb3JtLWNvbnRyb2wgbmFtZT1cInt7OjpmZC5OYW1lfX17ezo6ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX1cIiBrdC1zdHlsZS1hdHRyaWJ1dGUgbmctcmVxdWlyZWQ9ZmQuUmVxdWlyZWQ+PG9wdGlvbiB2YWx1ZSBjbGFzcz10ZXh0LWxpZ2h0Pnt7OjpmZC5TZWFyY2hUZXh0fX08L29wdGlvbj48b3B0aW9uIG5nLXJlcGVhdD1cIihpZCx2YWwpIGluIGZkLmNvZGVMaXN0IHwgZmlsdGVyOiBzZWFyY2guc2VhcmNoRmlsdGVyIHRyYWNrIGJ5IGlkXCIgbmctdmFsdWU9dmFsIGNsYXNzPXAtMT57e3ZhbC5uYW1lfX08L29wdGlvbj48L3NlbGVjdD48a3QtZHJvcGRvd24tbXVsdGlwbGUgbmctaWY9ZmQuTXVsdGlsaW5lIG9uLXNlbGVjdC1mbj1mZC5zZWxlY3Rpb25fY2hhbmdlZChpdGVtLG1vZGVsKSBmaWVsZC1lbGVtZW50PWZkIG5nLW1vZGVsPWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0gc2VsZWN0ZWQtaXRlbXM9Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSBuYW1lPXt7ZmQuTmFtZX19e3tmZC5QcmVzZW50YXRpb25JZH19IG5nLXJlcXVpcmVkPWZkLlJlcXVpcmVkIGRyb3Bkb3duLWl0ZW1zPWZkLmNvZGVMaXN0IGRyb3Bkb3duLWlkPVwiZmQuTmFtZStmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJylcIiBjdXN0b20tc3R5bGU9ZmQuY3VzdG9tU3R5bGVFbGVtZW50IHBhcmVudC1mb3JtLWlkPVwiXFwnaW5uZXJGb3JtXFwnK2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKVwiIHNlYXJjaC10ZXh0PWZkLlNlYXJjaFRleHQ+PC9rdC1kcm9wZG93bi1tdWx0aXBsZT48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwiZmQuUmVhZE9ubHkgJiYgIWZkLk11bHRpbGluZVwiPjxkaXYgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYm9yZGVyIHJvdW5kZWQgcC0xXCI+e3tmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWUrXFwnLm5hbWVcXCddfX17e2Zvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0ubmFtZX19PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlJlYWRPbmx5ICYmIGZkLk11bHRpbGluZVwiPjxkaXYgbmctcmVwZWF0PVwiaXRlbSBpbiBmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdIHRyYWNrIGJ5ICRpbmRleFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMXB4ICFpbXBvcnRhbnQ7XCIgY2xhc3M9Zm9ybS1jb250cm9sPnt7aXRlbS5uYW1lfX08L2Rpdj48L2Rpdj48ZGl2IHN0eWxlPVwidmlzaWJpbGl0eTp2aXNpYmxlICFpbXBvcnRhbnRcIiBjbGFzcz1cImJsdWUtZHJvcGRvd24gcm91bmRlZCBzaGFkb3dcIj48ZGl2IGNsYXNzPVwiZWxlbWVudC1wcm9wZXJ0aWVzLWJ0bnMgYmctcHJpbWFyeSByb3VuZGVkIHNoYWRvdyBtdC0yXCIgbmctaWY9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MlwiPjxzcGFuIGNsYXNzPVwibGFiZWwgbGFiZWwteHMgdGV4dC13aGl0ZSBtbC0xIGJvbGRcIj57e2ZkLk5hbWV9fTwvc3Bhbj4gPGEgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIHByb3AtYnRuIGVsZW1lbnQtZHJhZy1oYW5kbGVcIiB0aXRsZT1zb3J0IGhyZWY+PGkgY2xhc3M9XCJlbGVtZW50LWRyYWctaGFuZGxlIGZhIGZhLWdyaXAtdmVydGljYWxcIj48L2k+PC9hPiA8YSBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4teHMgcHJvcC1idG5cIiBocmVmIHRpdGxlPVwiRmllbGQgcHJvcGVydGllc1wiIG5nLWNsaWNrPXNob3dQcm9wZXJ0aWVzKCRldmVudCk+PGkgY2xhc3M9XCJmYSBmYS1jb2dcIj48L2k+PC9hPiA8YSBuZy1pZj1nc3J2Yy5zaG93RmlsdGVyKG15c2NvcGUpIGlkPXNlYXJjaC1maWx0ZXIte3tmZC5QcmVzZW50YXRpb25JZH19IGRhdGEtdG9nZ2xlPWRyb3Bkb3duIGFyaWEtaGFzcG9wdXA9dHJ1ZSBhcmlhLWV4cGFuZGVkPWZhbHNlIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi14cyBwcm9wLWJ0blwiIGhyZWY+PGkgY2xhc3M9XCJmYSBmYS1maWx0ZXIgbXItMVwiIHRpdGxlPVwiRmlsdGVyIDoge3tmZC5TZWFyY2gubmFtZX19XCI+PC9pPnt7ZmQuU2VhcmNoLm5hbWV9fTwvYT48ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBzaGFkb3cgcC0wIGRyb3Bkb3duLW1heC1jb250ZW50LXdpZHRoXCIgc3R5bGU9XCJtaW4td2lkdGg6MHB4ICFpbXBvcnRhbnRcIiBhcmlhLWxhYmVsbGVkYnk9c2VhcmNoLWZpbHRlci17e2ZkLlByZXNlbnRhdGlvbklkfX0+PGRpdiBjbGFzcz1idG4tZ3JvdXAtdmVydGljYWwgcm9sZT1ncm91cCBhcmlhLWxhYmVsPVwiU2VhcmNoIGZpbHRlclwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5TGlzdEZpbHRlcnMoMCkgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ29ubGlzdFxcJ31cIj48c3BhbiBjbGFzcz17e2ZkLnNlYXJjaExpc3RbMF0uaWNvbn19Pjwvc3Bhbj4ge3tmZC5zZWFyY2hMaXN0WzBdLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseUxpc3RGaWx0ZXJzKDEpIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpmZC5TZWFyY2guZmlsdGVyPT1cXCdub3Rvbmxpc3RcXCd9XCI+PHNwYW4gY2xhc3M9e3tmZC5zZWFyY2hMaXN0WzFdLmljb259fT48L3NwYW4+IHt7ZmQuc2VhcmNoTGlzdFsxXS5uYW1lfX08L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48c3R5bGU+XFxyXFxuIHNlbGVjdCB7XFxyXFxuICBjb2xvcjogIzllOWU5ZTtcXHJcXG59XFxyXFxuXFxyXFxuIG9wdGlvbjoge1xcclxcbiAgY29sb3I6IGNvbG9yOiAjOWU5ZTllO1xcclxcbn1cXHJcXG4gb3B0aW9uOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xcclxcbiAgY29sb3I6IGJsYWNrO1xcclxcbn1cXHJcXG4gPC9zdHlsZT4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RMaXN0RXhlLmh0bWwnLCc8ZGl2IGlkPWt0TGlzdEV4ZXt7ZmQuUHJlc2VudGF0aW9uSWR9fSBjbGFzcz1cInJvdyBtLTAgbXQtMSBkYXRhc2V0LWl0ZW1cIiBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZFxcJyA6IChpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0ue3s6OmZkLk5hbWV9fXt7OjpmZC5JdGVtSWR9fS4kdG91Y2hlZCB8fCBpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0ue3s6OmZkLk5hbWV9fXt7OjpmZC5JdGVtSWR9fS4kZGlydHkpICYmIGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS57ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19LiRpbnZhbGlkLFxcJ2lzLXZhbGlkXFwnIDogKGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS57ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19LiR0b3VjaGVkIHx8IGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS57ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19LiRkaXJ0eSkgJiYgaW5uZXJGb3Jte3s6OmZkLkl0ZW1JZH19Lnt7OjpmZC5OYW1lfX17ezo6ZmQuSXRlbUlkfX0uJHZhbGlkfVwiIG5nLWlmPTo6ZmQuU2hvd0ZpZWxkPjxkaXYgbmctaGlkZT06OmZkLlBhcmFtZXRlcnMuSGlkZUxhYmVsIGNsYXNzPXt7ZmQuZ3JpZENsYXNzTGFiZWx9fSBzdHlsZT17e2ZkLmxhYmVsQWxpZ259fSBuZy1jbGFzcz1cIntcXCdjb2wtYXV0b1xcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemV9XCI+PGxhYmVsIGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnbGFiZWxcXCdcIiBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlTGFiZWx9fSBjbGFzcz1cIm1hcmdpbkw1IGZvcm0tY29udHJvbC1sYWJlbCBuby1ib3JkZXIgYWxpZ24tbWlkZGxlXCIgZm9yPXt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fSBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiAoaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17e2ZkLkl0ZW1JZH19LiRpbnZhbGlkLFxcJ2N1c3RvbS1lbC1sYXlvdXQtc3R5bGVcXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xfVwiPnt7ZmQuTGFiZWx9fTwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1cInt7ZmQuZ3JpZENsYXNzRWxlbWVudH19IG15LWF1dG9cIj48ZGl2IG5nLWlmPVwiIWZkLlJlYWRPbmx5ICYmIChmZC5jb2Rlc0xvYWRlZCB8fCBjb2Rlc0xvYWRlZClcIj48ZGl2IG5nLWZvcm09aW5uZXJGb3Jte3s6OmZkLkl0ZW1JZH19IG5nLWNsYXNzPVwie1xcJ2lzLXZhbGlkXFwnIDogKGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZH19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fS4kdG91Y2hlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZH19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fS4kZGlydHkpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19LiR2YWxpZH1cIj48ZGl2IG5nLWlmPSFmZC5NdWx0aWxpbmUga3Qtc3R5bGUtYXR0cmlidXRlIGZkPWZkIHN0eWxlLXR5cGU9XCJcXCdlbGVtZW50XFwnXCI+PHNlbGVjdCBjbGFzcz1mb3JtLWNvbnRyb2wgbmFtZT17ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19IHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVFbGVtZW50fX0gbmctbW9kZWwtb3B0aW9ucz1cInsgYWxsb3dJbnZhbGlkOiB0cnVlIH1cIiBuZy1jaGFuZ2U9ZmQuc2VsZWN0aW9uX2NoYW5nZWQoaXRlbSxtb2RlbCkgbmctY2xhc3M9XCJ7XFwndGV4dC1wbGFjZWhvbGRlclxcJzpmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdPT09dW5kZWZpbmVkIHx8IGZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV09PT1cXCdcXCcsXFwnYm9yZGVyLWRhbmdlciBpcy1pbnZhbGlkXFwnIDogKGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS57ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0ue3s6OmZkLk5hbWV9fXt7OjpmZC5JdGVtSWR9fS4kaW52YWxpZCB9XCIgbmctcmVxdWlyZWQ9ZmQuUmVxdWlyZWQgbmctbW9kZWw9Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXT48b3B0aW9uIG5nLWlmPWZkLlJlcXVpcmVkIHZhbHVlIGRpc2FibGVkIHNlbGVjdGVkPnt7ZmQuU2VhcmNoVGV4dH19PC9vcHRpb24+PG9wdGlvbiBjbGFzcz10ZXh0LXBsYWNlaG9sZGVyIG5nLWlmPSFmZC5SZXF1aXJlZCB2YWx1ZSBzZWxlY3RlZD57e2ZkLlNlYXJjaFRleHR9fTwvb3B0aW9uPjxvcHRpb24gbmctcmVwZWF0PVwiKGlkLHZhbCkgaW4gZmQuY29kZUxpc3QgfCBmaWx0ZXI6IHNlYXJjaC5zZWFyY2hGaWx0ZXIgdHJhY2sgYnkgaWRcIiBuZy12YWx1ZT06OnZhbCBuZy1zdHlsZT1cIihpZCE9dW5kZWZpbmVkICYmIHtcXCdjb2xvclxcJzogZmQuUGFyYW1ldGVycy5WYWx1ZUZvbnRDb2xvcn0pIHx8IChpZD09dW5kZWZpbmVkICYmIHtcXCdjb2xvclxcJzogXFwnI0I2QkFDM1xcJ30pXCIgY2xhc3M9cC0xPnt7Ojp2YWwubmFtZX19PC9vcHRpb24+PC9zZWxlY3Q+PC9kaXY+PGt0LWRyb3Bkb3duLW11bHRpcGxlIG5nLWlmPWZkLk11bHRpbGluZSBvbi1zZWxlY3QtZm49ZmQuc2VsZWN0aW9uX2NoYW5nZWQoaXRlbSxtb2RlbCkgZmllbGQtZWxlbWVudD1mZCBuZy1tb2RlbD1mb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdIHNlbGVjdGVkLWl0ZW1zPWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0gbmFtZT17ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19IG5nLXJlcXVpcmVkPWZkLlJlcXVpcmVkIHJlcXVpcmVkLWZpZWxkPWZkLlJlcXVpcmVkIGRyb3Bkb3duLWl0ZW1zPWZkLmNvZGVMaXN0IGRyb3Bkb3duLWlkPWZkLk5hbWUrZmQuSXRlbUlkIHBhcmVudC1mb3JtLWlkPVwiXFwnaW5uZXJGb3JtXFwnK2ZkLkl0ZW1JZFwiIHNlYXJjaC10ZXh0PWZkLlNlYXJjaFRleHQ+PC9rdC1kcm9wZG93bi1tdWx0aXBsZT48cCBjbGFzcz1ub3ByaW50IG5nLXN0eWxlPVwie1xcJ2Rpc3BsYXlcXCc6KChpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0ue3s6OmZkLk5hbWV9fXt7OjpmZC5JdGVtSWR9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3s6OmZkLkl0ZW1JZH19Lnt7OjpmZC5OYW1lfX17ezo6ZmQuSXRlbUlkfX0uJGludmFsaWQpID8gXFwnYmxvY2tcXCcgOiBcXCdub25lXFwnfVwiIG5nLWNsYXNzPVwie1xcJ2ludmFsaWQtdG9vbHRpcCByaWdodC0wXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCd0b29sdGlwXFwnIHx8IGZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT11bmRlZmluZWQsXFwnaW52YWxpZC1mZWVkYmFja1xcJzpmZC5QYXJhbWV0ZXJzLkVycm9yTXNnVHlwZT09XFwnZmVlZGJhY2tcXCd9XCI+e3s6OmZkLkVycm9yTXNnfX08L3A+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlJlYWRPbmx5ICYmICFmZC5NdWx0aWxpbmVcIiBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2VsZW1lbnRcXCdcIiBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlRWxlbWVudH19PjxkaXYgbmctc2hvdz1cIjo6Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXS5uYW1lPT11bmRlZmluZWRcIiBuZy1jbGFzcz1cIntcXCdmb3JtLWNvbnRyb2xcXCc6ZmQuUGFyYW1ldGVycy5Cb3JkZXJGb3JSZWFkT25seX1cIj57e2Zvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZStcXCcubmFtZVxcJ119fTwvZGl2PjxkaXYgbmctc2hvdz1cIjo6Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXS5uYW1lIT11bmRlaWZuZWRcIiBuZy1jbGFzcz1cIntcXCdmb3JtLWNvbnRyb2xcXCc6ZmQuUGFyYW1ldGVycy5Cb3JkZXJGb3JSZWFkT25seX1cIj57e2Zvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0ubmFtZX19PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlJlYWRPbmx5ICYmIGZkLk11bHRpbGluZVwiIGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnZWxlbWVudFxcJ1wiIHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVFbGVtZW50fX0+PGRpdiBuZy1yZXBlYXQ9XCJpdGVtIGluIDo6Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSB0cmFjayBieSAkaW5kZXhcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDFweCAhaW1wb3J0YW50O1wiIG5nLWNsYXNzPVwie1xcJ2Zvcm0tY29udHJvbFxcJzpmZC5QYXJhbWV0ZXJzLkJvcmRlckZvclJlYWRPbmx5fVwiPnt7OjppdGVtLm5hbWV9fTwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJkcm9wbGVmdCBlbGVtZW50LXByb3BlcnRpZXMtYnRucyBiZy1wcmltYXJ5IHJvdW5kZWQgc2hhZG93IG5vcHJpbnRcIiBuZy1pZj06OnNob3dTZWFyY2hGaWx0ZXJzPjxhIGlkPXNlYXJjaC1maWx0ZXIte3tmZC5QcmVzZW50YXRpb25JZH19IGRhdGEtdG9nZ2xlPWRyb3Bkb3duIGFyaWEtaGFzcG9wdXA9dHJ1ZSBhcmlhLWV4cGFuZGVkPWZhbHNlIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi14cyBwcm9wLWJ0blwiIGhyZWY+PGkgY2xhc3M9XCJmYSBmYS1maWx0ZXIgbXItMVwiIHRpdGxlPVwiRmlsdGVyIDoge3tmZC5TZWFyY2gubmFtZX19XCI+PC9pPnt7ZmQuU2VhcmNoLm5hbWV9fTwvYT48ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBzaGFkb3cgcC0wIGRyb3Bkb3duLW1heC1jb250ZW50LXdpZHRoXCIgc3R5bGU9XCJtaW4td2lkdGg6MHB4ICFpbXBvcnRhbnRcIiBhcmlhLWxhYmVsbGVkYnk9c2VhcmNoLWZpbHRlci17e2ZkLlByZXNlbnRhdGlvbklkfX0+PGRpdiBjbGFzcz1idG4tZ3JvdXAtdmVydGljYWwgcm9sZT1ncm91cCBhcmlhLWxhYmVsPVwiU2VhcmNoIGZpbHRlclwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5TGlzdEZpbHRlcnMoMCkgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ29ubGlzdFxcJ31cIj48c3BhbiBjbGFzcz17e2ZkLnNlYXJjaExpc3RbMF0uaWNvbn19Pjwvc3Bhbj4ge3s6OmZkLnNlYXJjaExpc3RbMF0ubmFtZX19PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5TGlzdEZpbHRlcnMoMSkgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ25vdG9ubGlzdFxcJ31cIj48c3BhbiBjbGFzcz17e2ZkLnNlYXJjaExpc3RbMV0uaWNvbn19Pjwvc3Bhbj4ge3s6OmZkLnNlYXJjaExpc3RbMV0ubmFtZX19PC9idXR0b24+PC9kaXY+LjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdExpc3RQcm9wZXJ0aWVzLmh0bWwnLCc8ZGl2PjxkaXY+PGlucHV0IG5nLW1vZGVsPWZkLnNob3dBZGROZXcgdHlwZT1jaGVja2JveCBpZD1tb2RhbC10b2dnbGU+PGRpdiBjbGFzcz1tbW9kYWw+PGRpdiBjbGFzcz1tbW9kYWwtY29udGVudD48aDMgbmctaWY9ZmQubG9jYWxWYXJzLnNlbGVjdGVkQ29kZUhlYWQuaWQgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC0zIG1iLTBcIj5FZGl0IGxpc3Q8L2gzPjxoMyBuZy1pZj0hZmQubG9jYWxWYXJzLnNlbGVjdGVkQ29kZUhlYWQuaWQgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC0zXCI+Q3JlYXRlIG5ldyBsaXN0PC9oMz48ZGl2IGNsYXNzPVwiXCI+PGZvcm0gbmctc3VibWl0PWZkLnNhdmVOZXdDb2RlKGZvcm0uJHZhbGlkKSBpZD1mb3JtIG5hbWU9Zm9ybSBjbGFzcz1cIm5lZWRzLXZhbGlkYXRpb24gZm9ybS1ob3Jpem9udGFsXCIgcm9sZT1mb3JtIG5vdmFsaWRhdGU+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWlmPVwiZmQubG9jYWxWYXJzLnNlbGVjdGVkQ29kZUhlYWQuaWQ+MFwiPjxsYWJlbCBjbGFzcyBmb3I9Y29kZU5hbWU+Q29kZSBpZDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9ZmQubG9jYWxWYXJzLnNlbGVjdGVkQ29kZUhlYWQuaWQgbmctZGlzYWJsZWQ9dHJ1ZSBjbGFzcz1mb3JtLWNvbnRyb2wgaWQ9Y29kZUlkIG5hbWU9Y29kZUlkIHBsYWNlaG9sZGVyPVwiQ29kZSBpZFwiPjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZCB3YXMtdmFsaWRhdGVkXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvZGVOYW1lLiR0b3VjaGVkKSAmJiBmb3JtLmNvZGVOYW1lLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9XCJmb3I9XCIgY29kZW5hbWVcIiBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uY29kZU5hbWUuJHRvdWNoZWQpICYmIGZvcm0uY29kZU5hbWUuJGludmFsaWR9XCI+TGlzdCBuYW1lPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBuZy1yZWFkb25seT1mZC5sb2NhbFZhcnMuc2VsZWN0ZWRDb2RlSGVhZC5pZCBuZy1tb2RlbD1mZC5sb2NhbFZhcnMuc2VsZWN0ZWRDb2RlSGVhZC5Db2RlTmFtZSBuZy1jaGFuZ2U9XCJmZC5sb2NhbFZhcnMuc2VsZWN0ZWRDb2RlSGVhZC5Db2RlSGVhZE5hbWU9ZmQubG9jYWxWYXJzLnNlbGVjdGVkQ29kZUhlYWQuQ29kZU5hbWVcIiBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1jb2RlTmFtZSBuYW1lPWNvZGVOYW1lIHBsYWNlaG9sZGVyPVwiTGlzdCBncm91cCBuYW1lXCI+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5jb2RlTmFtZS4kdG91Y2hlZCkgJiYgZm9ybS5jb2RlTmFtZS4kaW52YWxpZFwiIG5nLWNsYXNzPVwie1xcJ2ludmFsaWQtZmVlZGJhY2tcXCc6KGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvZGVOYW1lLiR0b3VjaGVkKSAmJiBmb3JtLmNvZGVOYW1lLiRpbnZhbGlkfVwiPkVudGVyIExpc3QgbmFtZTwvcD48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2lzLWludmFsaWQgd2FzLXZhbGlkYXRlZFxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5jb2RlRGVzY3JpcHRpb24uJHRvdWNoZWQgfHwgZm9ybS5jb2RlRGVzY3JpcHRpb24uJGRpcnR5KSAmJiBmb3JtLmNvZGVEZXNjcmlwdGlvbi4kaW52YWxpZCxcXCdpcy12YWxpZFxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5jb2RlRGVzY3JpcHRpb24uJHRvdWNoZWQgfHwgZm9ybS5jb2RlRGVzY3JpcHRpb24uJGRpcnR5KSAmJiBmb3JtLmNvZGVEZXNjcmlwdGlvbi4kdmFsaWR9XCI+PGxhYmVsIGNsYXNzIGZvcj1jb2RlRGVzY3JpcHRpb24gbmctY2xhc3M9XCJ7XFwndGV4dC1kYW5nZXJcXCc6KGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvZGVEZXNjcmlwdGlvbi4kdG91Y2hlZCkgJiYgZm9ybS5jb2RlRGVzY3JpcHRpb24uJGludmFsaWR9XCI+TGlzdCBkZXNjcmlwdGlvbjwvbGFiZWw+PGRpdiBjbGFzcz48dGV4dGFyZWEgbmctbW9kZWw9ZmQubG9jYWxWYXJzLnNlbGVjdGVkQ29kZUhlYWQuRGVzY3JpcHRpb24gbmctcmVhZG9ubHk9ZmQubG9jYWxWYXJzLnNlbGVjdGVkQ29kZUhlYWQuaWQgbmFtZT1jb2RlRGVzY3JpcHRpb24gbmctcmVxdWlyZWQ9dHJ1ZSBuZy1taW4tbGVuZ3RoPTIwIGNsYXNzPWZvcm0tY29udHJvbD48L3RleHRhcmVhPjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uY29kZURlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtLmNvZGVEZXNjcmlwdGlvbi4kaW52YWxpZFwiIG5nLWNsYXNzPVwie1xcJ2ludmFsaWQtZmVlZGJhY2tcXCc6KGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvZGVEZXNjcmlwdGlvbi4kdG91Y2hlZCkgJiYgZm9ybS5jb2RlRGVzY3JpcHRpb24uJGludmFsaWR9XCI+RW50ZXIgbGlzdCBkZXNjcmlwdGlvbihtaW4gMjAgY2hhcnMpPC9wPjwvZGl2PjwvZGl2PjwvZm9ybT48L2Rpdj48ZGl2IG5nLWhpZGU9XCJmZC5sb2NhbFZhcnMuc2VsZWN0ZWRDb2RlSGVhZC5pZD4wXCIgY2xhc3M9XCJyb3cgdGV4dC1jZW50ZXJcIj48ZGl2IGNsYXNzPVwiY29sLTEyIGNvbnRyb2wtZ3JvdXAgbWItMlwiPjxidXR0b24gdHlwZT1idXR0b24gaWQ9c2F2ZUJ0biBuZy1jbGljaz1mZC5zYXZlTmV3Q29kZShmZC5sb2NhbFZhcnMuc2VsZWN0ZWRDb2RlSGVhZCkgbmctZGlzYWJsZWQ9Zm9ybS4kaW52YWxpZCBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zdWNjZXNzXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1zYXZlIG1yLTJcIj48L3NwYW4+IFNhdmU8L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPWNvbD48bGFiZWwgZm9yPW1vZGFsLXRvZ2dsZSBjbGFzcz1jbG9zZS1idG4+Q2xvc2U8L2xhYmVsPjwvZGl2PjwvZGl2PjxkaXYgbmctc2hvdz1mZC5sb2NhbFZhcnMuc2VsZWN0ZWRDb2RlSGVhZC5pZCBjbGFzcz1yb3c+PGRpdiBjbGFzcz1cIm9mZnNldC02IGNvbC0xMSBwdC0zIGg1IHRleHQtY2VudGVyXCIgbmctaWY9ZmQubG9jYWxWYXJzLnNlbGVjdGVkQ29kZUhlYWQuaWQ+TGlzdCBpdGVtczwvZGl2PjxkaXYgY2xhc3M9XCJvZmZzZXQtNCBjb2wtMyBwdC00XCI+PGRpdj5EZXRhaWxzPC9kaXY+PGxhYmVsIGNsYXNzPVwic3dpdGNoIHN3aXRjaC1ncmVlblwiPjxpbnB1dCBuZy1pbml0PVwic2hvd21vcmU9ZmFsc2VcIiBuZy1tb2RlbD1zaG93bW9yZSB0eXBlPWNoZWNrYm94IGNsYXNzPXN3aXRjaC1pbnB1dD4gPHNwYW4gY2xhc3M9c3dpdGNoLWxhYmVsIGRhdGEtb249T24gZGF0YS1vZmY9T2ZmPjwvc3Bhbj4gPHNwYW4gY2xhc3M9c3dpdGNoLWhhbmRsZT48L3NwYW4+PC9sYWJlbD48L2Rpdj48L2Rpdj48ZGl2IGt0LWNvZGVzLWRldGFpbC1lZGl0IGZkPWZkIHNob3ctaWNvbi1hY3RpdmU9c2hvd21vcmUgY29kZS1pZD1mZC5sb2NhbFZhcnMuc2VsZWN0ZWRDb2RlSGVhZC5pZCBjb2Rlcy1saXN0PWZkLmNvZGVMaXN0IGNsYXNzPW0tMD48L2Rpdj48ZGl2IG5nLXNob3c9XCJmZC5sb2NhbFZhcnMuc2VsZWN0ZWRDb2RlSGVhZC5pZD4wXCIgY2xhc3M9XCJyb3cgdGV4dC1jZW50ZXIgbXQtM1wiPjxkaXYgY2xhc3M9XCJvZmZzZXQtMTYgY29sLTRcIj48bGFiZWwgZm9yPW1vZGFsLXRvZ2dsZSBjbGFzcz1jbG9zZS1idG4+Q2FuY2VsPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTQgY29udHJvbC1ncm91cCBtYi0yXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBpZD1zYXZlQnRuIG5nLWNsaWNrPVwiZmQuc2F2ZUNvZGVzRGV0YWlscyhmZC5sb2NhbFZhcnMuc2VsZWN0ZWRDb2RlSGVhZCwgZmQuY29kZUxpc3QgKVwiIG5nLWRpc2FibGVkPWZvcm0uJGludmFsaWQgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIj48c3BhbiBjbGFzcz1cImZhIGZhLXNhdmUgbXItMlwiPjwvc3Bhbj4gU2F2ZTwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYga3QtcHJvcGVydHktaGVhZGVyPjwvZGl2PjxkaXYgbmctY2xpY2s9XCJmZC5zaG93QmFzaWMgPSAhZmQuc2hvd0Jhc2ljXCIgY2xhc3M9XCJleHBhbmQtcHJvcGVydHktcGFuZWwgdGFnIGJvcmRlci1ib3R0b20gYm9yZGVyLXN1Y2Nlc3MgbXktMSBweS0xXCIgZGF0YS10b2dnbGU9Y29sbGFwc2UgaHJlZj0jbWFpblByb3BlcnR5UGFuZWwgcm9sZT1idXR0b24gYXJpYS1leHBhbmRlZD10cnVlIGFyaWEtY29udHJvbHM9bWFpblByb3BlcnR5UGFuZWw+PHNwYW4gY2xhc3M9XCJjb2wgcC0wXCI+QkFTSUM8L3NwYW4+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PWZkLnNob3dCYXNpYyBjbGFzcz1cImZhcyBmYS1hbmdsZS1kb3duXCI+PC9pPiA8aSBzdHlsZT1cImZvbnQtc2l6ZTogbGFyZ2U7XCIgbmctc2hvdz0hZmQuc2hvd0Jhc2ljIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLXVwXCI+PC9pPjwvZGl2PjxkaXYgY2xhc3M9XCJtYi00IGNvbGxhcHNlIHNob3dcIiBpZD1tYWluUHJvcGVydHlQYW5lbD48bGFiZWwgY2xhc3M9XCJtci0yIGxhYmVsLXhzIHRleHQtbXV0ZWRcIiBmb3I9bmFtZUZpZWxkPlNlbGVjdGVkIGxpc3Q8L2xhYmVsPjxkaXYgY2xhc3M9XCJkLWZsZXggcC0wXCIgbmctaWY9ZmQuY29kZXNEZWZpbml0aW9uTGlzdC5sZW5ndGggbmctZm9ybT1jb2RlTGlzdEZvcm17e2ZkLlByZXNlbnRhdGlvbklkfX0+PGRpdiBzdHlsZT13aWR0aDo5MCU+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLWlmPVwiZmQuY29kZUxpc3RQcm9wc0Rvd25sb2FkZWQgJiYgIWZkLmxvYWRpbmdQcm9wZXJ0aWVzXCIgaGlkZS1kZXRhaWxzPXRydWUgbmctY2hhbmdlPVwiZmQuQ29kZUlkPWZkLmNvZGUuc2VsZWN0ZWRDb2RlLnVpZDsgZmQuZ2V0Q29kZXMoZmQuY29kZS5zZWxlY3RlZENvZGUudWlkKVwiIG5nLW1vZGVsPWZkLmNvZGUuc2VsZWN0ZWRDb2RlIHNpemU9XCJcXCdzbWFsbFxcJ1wiIHNlbGVjdGVkLWl0ZW1zPWZkLmNvZGUuc2VsZWN0ZWRDb2RlIGlzLW11bHRpcGxlPWZhbHNlIG5hbWU9Y29kZUxpc3R7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctcmVxdWlyZWQ9dHJ1ZSBkcm9wZG93bi1pdGVtcz1mZC5jb2Rlc0RlZmluaXRpb25MaXN0IGRyb3Bkb3duLWlkPVwiXFwnY29kZUxpc3RcXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2NvZGVMaXN0Rm9ybVxcJytmZC5QcmVzZW50YXRpb25JZFwiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IGxpc3QgbmFtZVxcJ1wiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PC9kaXY+PGRpdiBjbGFzcz1tbC0yPjxidXR0b24gdGl0bGU9XCJFZGl0IHNlbGVjdGVkIGxpc3RcIiB0eXBlPWJ1dHRvbiBuZy1kaXNhYmxlZD0hZmQuY29kZS5zZWxlY3RlZENvZGUgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDZweDsgcGFkZGluZy1yaWdodDogNnB4O1wiIG5nLWNsaWNrPWZkLm9wZW5Nb2RhbCgpIGZvcj1tb2RhbC10b2dnbGUgY2xhc3M9XCJib2xkIGZudDYgYnRuIGJ0bi14cyBidG4tb3V0bGluZS1wcmltYXJ5XCI+PGkgY2xhc3M9XCJmYXMgZmEtcGVuXCI+PC9pPjwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9bWwtMT48YnV0dG9uIHRpdGxlPVwiQ3JlYXRlIG5ldyBsaXN0XCIgdHlwZT1idXR0b24gc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDZweDsgcGFkZGluZy1yaWdodDogNnB4O1wiIG5nLWNsaWNrPWZkLm9wZW5Nb2RhbCh0cnVlKSBmb3I9bW9kYWwtdG9nZ2xlIGNsYXNzPVwiYm9sZCBmbnQ2IGJ0biBidG4teHMgYnRuLW91dGxpbmUtcHJpbWFyeVwiPjxpIGNsYXNzPVwiZmEgZmEtcGx1c1wiPjwvaT48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPW1iLTI+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYk11bHRpbGluZXt7ZmQuUHJlc2VudGF0aW9uSWR9fT48aW5wdXQgdHlwZT1jaGVja2JveCBuZy1jbGljaz1cImZkLk11bHRpbGluZSA/IGZkLkRidHlwZT1cXCd0ZXh0ZmllbGRkZWZpbml0aW9uXFwnIDogZmQuRGJ0eXBlPVxcJ2ZvcmVpZ25rZXlkZWZpbml0aW9uXFwnXCIgY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JNdWx0aWxpbmV7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQuTXVsdGlsaW5lIG5nLWNoZWNrZWQ9ZmQuTXVsdGlsaW5lPiBNdWx0aXBsZSB2YWx1ZXMgY2FuIGJlIHNlbGVjdGVkPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPW1iLTI+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYldyaXRhYmxle3tmZC5QcmVzZW50YXRpb25JZH19PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPWNiV3JpdGFibGV7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQuaXNFZGl0YWJsZSBuZy1jaGVja2VkPWZkLmlzRWRpdGFibGU+IExpc3QgY2FuIGJlIHVwZGF0ZWQgYnkgdXNlcnMgKCBDYXV0aW9uISApPC9sYWJlbD48L2Rpdj48ZGl2IG5nLWlmPWZkLmNvZGVzRGVmaW5pdGlvbkxpc3QubGVuZ3RoPjxsYWJlbCBjbGFzcz1cIm10LTEgbGFiZWwteHMgdGV4dC1tdXRlZFwiPkxhYmVsPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5MYWJlbD4gPGxhYmVsIGNsYXNzPVwibXQtMSBsYWJlbC14cyB0ZXh0LW11dGVkXCI+RXJyb3IgbXNnPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5FcnJvck1zZz4gPGxhYmVsIGNsYXNzPVwibXQtMSBsYWJlbC14cyB0ZXh0LW11dGVkXCI+U2VhcmNoVGV4dDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuU2VhcmNoVGV4dD48ZGl2IG5nLWlmPWZkLk11bHRpbGluZT48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tb3V0bGluZS1kYW5nZXJcIiBuZy1jbGljaz1jbGVhck11bHRpcGxlKCk+Q2xlYXIgdmFsdWVzIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+PC9idXR0b24+PGRpdj48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+TWluIGl0ZW1zPC9sYWJlbD4gPGlucHV0IG5nLWlmPWZkLk11bHRpbGluZSB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuTWF4TGVuZ3RoPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYga3QtZmllbGQtZXh0ZW5kZWQtcHJvcGVydGllcz48L2Rpdj48L2Rpdj48c3R5bGU+XFxyXFxuXFxyXFxuXFxyXFxuIC5idG4tb3V0bGluZS1wcmltYXJ5ICB7XFxyXFxuICAgY3Vyc29yOnBvaW50ZXI7XFxyXFxufVxcclxcbiBcXHJcXG4gLmJ0bi1vdXRsaW5lLXByaW1hcnkuZGlzYWJsZWQ6aG92ZXIgLCAuYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZDpob3ZlciB7XFxyXFxuICAgYm9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O1xcclxcbiAgIGN1cnNvcjpkZWZhdWx0O1xcclxcbn1cXHJcXG5cXHJcXG4uYnRuLW91dGxpbmUtcHJpbWFyeS5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXByaW1hcnk6ZGlzYWJsZWQge1xcclxcbiAgICBjb2xvcjogI2FmYjBiNjtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxyXFxufVxcclxcbiAgICBcXHJcXG4gICAgLyogTW9kYWwgY29udGFpbmVyICovXFxyXFxuICAgIC5tbW9kYWwge1xcclxcblxcdFxcdHotaW5kZXg6MTAwO1xcclxcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcXHJcXG4gICAgICB0b3A6IDA7XFxyXFxuICAgICAgbGVmdDogMDtcXHJcXG4gICAgICB3aWR0aDogMTAwJTtcXHJcXG4gICAgICBoZWlnaHQ6IDEwMCU7XFxyXFxuICAgICAgZGlzcGxheTogZmxleDtcXHJcXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXHJcXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcclxcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcXHJcXG4gICAgICBvcGFjaXR5OiAwO1xcclxcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcclxcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC8qIE1vZGFsIGJveCAqL1xcclxcbiAgICAubW1vZGFsLWNvbnRlbnQge1xcclxcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xcclxcbiAgICAgIHBhZGRpbmc6IDIwcHg7XFxyXFxuICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xcclxcbiAgICAgIGJveC1zaGFkb3c6IDAgNXB4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xcclxcbiAgICAgIHdpZHRoOiA0MCU7XFxyXFxuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC8qIENsb3NlIGJ1dHRvbiAqL1xcclxcbiAgICAuY2xvc2UtYnRuIHtcXHJcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXHJcXG4gICAgICBtYXJnaW4tdG9wOiAxMHB4O1xcclxcbiAgICAgIGNvbG9yOiAjMDA3YmZmO1xcclxcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXHJcXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcXHJcXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgLyogTW9kYWwgdG9nZ2xlIChjaGVja2JveCkgKi9cXHJcXG4gICAgI21vZGFsLXRvZ2dsZSB7XFxyXFxuICAgICAgZGlzcGxheTogbm9uZTtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAvKiBTaG93IG1vZGFsIHdoZW4gY2hlY2tib3ggaXMgY2hlY2tlZCAqL1xcclxcbiAgICAjbW9kYWwtdG9nZ2xlOmNoZWNrZWQgfiAubW1vZGFsIHtcXHJcXG4gICAgICBvcGFjaXR5OiAxO1xcclxcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgLyogT3BlbiBidXR0b24gc3R5bGluZyAqL1xcclxcbiAgICAub3Blbi1idG4ge1xcclxcbiAgICAgIHBhZGRpbmc6IDEwcHggMTBweDtcXHJcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmO1xcclxcbiAgICAgIGNvbG9yOiB3aGl0ZTtcXHJcXG4gICAgICBib3JkZXI6IG5vbmU7XFxyXFxuICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xcclxcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcXHJcXG4gICAgICBmb250LXNpemU6IDE2cHg7XFxyXFxuICAgIH1cXHJcXG4gIDwvc3R5bGU+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0TWFzc1Byb3BlcnR5VXBkYXRlU2VsZWN0Lmh0bWwnLCc8ZGl2IGNsYXNzPW1iLTI+UGxlYXNlIHNlbGVjdCB3aGljaCBwcm9wZXJ0eSB3aWxsIGJlIHVwZGF0ZWQgPzwvZGl2PjxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgbmctbW9kZWw9c2VsZWN0ZWQgbmctY2hhbmdlPWFjdGl2YXRlTWFzc1VwZGF0ZUZuKHNlbGVjdGVkKSBuZy1vcHRpb25zPVwiaXRlbS5MYWJlbCBmb3IgaXRlbSBpbiBmZC5tYXNzVXBkYXRlRmllbGRMaXN0IHRyYWNrIGJ5IGl0ZW0uaWRcIj48L3NlbGVjdD48YnI+PGRpdiBuZy1pZj1zZWxlY3RlZD48ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj48ZGl2IGNsYXNzPVwicC00IG0tMiBib3JkZXJcIj48aW5wdXQgdHlwZT1jaGVja2JveCBuZy1tb2RlbD1sb2NhbFZhcnMudHVybkFsbFByb3BlcnRpZXNPbj4gTWFrZSBhbGwgZmllbGRzIFxcJ3t7c2VsZWN0ZWQuTGFiZWwgfGxvd2VyY2FzZX19XFwnID88L2Rpdj48ZGl2IGNsYXNzPVwicC00IG0tMiBib3JkZXJcIj48aW5wdXQgdHlwZT1jaGVja2JveCBuZy1tb2RlbD1sb2NhbFZhcnMudHVybkFsbFByb3BlcnRpZXNPZmY+IE1ha2UgYWxsIGZpZWxkcyBub3QgXFwne3tzZWxlY3RlZC5MYWJlbCB8bG93ZXJjYXNlfX1cXCcgPzwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9bXQtMj48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIG0tMlwiIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWhpZGVNYXNzVXBkYXRlRm4oKT5PSzwvYnV0dG9uPiA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi13YXJuaW5nIG0tMlwiIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWRlQWN0aXZhdGVNYXNzVXBkYXRlRm4oJGluZGV4KT5DYW5jZWw8L2J1dHRvbj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RNYXNzUHJvcGVydHlVcGRhdGVTZWxlY3QyLmh0bWwnLCc8ZGl2IGNsYXNzPW1iLTI+UGxlYXNlIHNlbGVjdCB3aGljaCBwcm9wZXJ0eSB3aWxsIGJlIHVwZGF0ZWQgPzwvZGl2PjxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgbmctbW9kZWw9c2VsZWN0ZWQgbmctY2hhbmdlPWFjdGl2YXRlTWFzc1VwZGF0ZUZuKHNlbGVjdGVkKSBuZy1vcHRpb25zPVwiaXRlbS5MYWJlbCBmb3IgaXRlbSBpbiBtYXNzVXBkYXRlRmllbGRMaXN0IHRyYWNrIGJ5IGl0ZW0uaWRcIj48L3NlbGVjdD48YnI+PGRpdiBuZy1pZj1zZWxlY3RlZD48ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj48ZGl2IGNsYXNzPVwicC00IG0tMiBib3JkZXJcIj48aW5wdXQgdHlwZT1jaGVja2JveCBuZy1tb2RlbD1sb2NhbFZhcnMudHVybkFsbFByb3BlcnRpZXNPbj4gTWFrZSBhbGwgZmllbGRzIFxcJ3t7c2VsZWN0ZWQuTGFiZWwgfGxvd2VyY2FzZX19XFwnID88L2Rpdj48ZGl2IGNsYXNzPVwicC00IG0tMiBib3JkZXJcIj48aW5wdXQgdHlwZT1jaGVja2JveCBuZy1tb2RlbD1sb2NhbFZhcnMudHVybkFsbFByb3BlcnRpZXNPZmY+IE1ha2UgYWxsIGZpZWxkcyBub3QgXFwne3tzZWxlY3RlZC5MYWJlbCB8bG93ZXJjYXNlfX1cXCcgPzwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9bXQtMj48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIG0tMlwiIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWhpZGVNYXNzVXBkYXRlRm4oKT5PSzwvYnV0dG9uPiA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi13YXJuaW5nIG0tMlwiIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWRlQWN0aXZhdGVNYXNzVXBkYXRlRm4oJGluZGV4KT5DYW5jZWw8L2J1dHRvbj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RNYXNzVXBkYXRlUHJvcGVydGllcy5odG1sJywnPGRpdiBuZy1pZj1cImZkLm1hc3NVcGRhdGUuQWN0aXZlIHx8IG1hc3NVcGRhdGUuQWN0aXZlXCIgY2xhc3M9XCJib3JkZXIgYmctbGlnaHQgcm91bmRlZCBzaGFkb3ctc20gcHgtMSBtci0yXCI+PGRpdiBuZy1pZj1cImZkLm1hc3NVcGRhdGUuSXRlbS5Db21wb25lbnQ9PVxcJ2NoZWNrYm94XFwnXCIgY2xhc3M+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYnt7ZmQubWFzc1VwZGF0ZS5JdGVtLkZpZWxkfX17e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2J7e2ZkLm1hc3NVcGRhdGUuSXRlbS5GaWVsZH19e3tmZC5QcmVzZW50YXRpb25JZH19IG5nLW1vZGVsPWZkW2ZkLm1hc3NVcGRhdGUuSXRlbS5GaWVsZF0gbmctY2hlY2tlZD1mZFtmZC5tYXNzVXBkYXRlLkl0ZW0uRmllbGRdPiB7e2ZkLm1hc3NVcGRhdGUuSXRlbS5MYWJlbH19PC9sYWJlbD48L2Rpdj48ZGl2IG5nLWlmPVwiZmQubWFzc1VwZGF0ZS5Db21wb25lbnQ9PVxcJ3RleHRib3hcXCdcIiBjbGFzcz48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+e3tmZC5tYXNzVXBkYXRlLkl0ZW0uTGFiZWx9fTwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9ZmRbZmQubWFzc1VwZGF0ZS5JdGVtLkZpZWxkXSBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48L2Rpdj48ZGl2IG5nLWlmPVwiZmQubWFzc1VwZGF0ZS5JdGVtLkNvbXBvbmVudD09XFwnbnVtYmVyXFwnXCIgY2xhc3M+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPnt7ZmQubWFzc1VwZGF0ZS5JdGVtLkxhYmVsfX08L2xhYmVsPiA8aW5wdXQgdHlwZT1udW1iZXIgbmctbW9kZWw9ZmRbZmQubWFzc1VwZGF0ZS5JdGVtLkZpZWxkXSBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48L2Rpdj48ZGl2IG5nLWlmPVwiZmQubWFzc1VwZGF0ZS5JdGVtLkNvbXBvbmVudD09XFwncmFuZ2VcXCdcIiBjbGFzcz48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+e3tmZC5tYXNzVXBkYXRlLkl0ZW0uTGFiZWx9fTwvbGFiZWw+IDxpbnB1dCB0eXBlPXJhbmdlIG5nLW1vZGVsPWZkW2ZkLm1hc3NVcGRhdGUuSXRlbS5GaWVsZF0gY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+PC9kaXY+PGRpdiBuZy1pZj1cImZkLm1hc3NVcGRhdGUuSXRlbS5Db21wb25lbnQ9PVxcJ3JhZGlvXFwnXCIgY2xhc3M+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYlNob3dGaWVsZHt7ZmQuUHJlc2VudGF0aW9uSWR9fT48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCIgbmFtZT1jYnt7ZmQubWFzc1VwZGF0ZS5JdGVtLkZpZWxkfX17e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmRbZmQubWFzc1VwZGF0ZS5JdGVtLkZpZWxkXSBuZy1jaGVja2VkPWZkW2ZkLm1hc3NVcGRhdGUuSXRlbS5GaWVsZF0+IFNob3cgZmllbGQ8L2xhYmVsPjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdE1lbnVDbGljay5odG1sJywnPGRpdiBrdC10YXNrLXByb2MtZGlyZWN0aXZlIGZkPWZkIGxvY2FsLXZhcnM9bG9jYWxWYXJzIHRhc2stZGVmaW5pdGlvbj10YXNrRGVmaW5pdGlvbj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RNZW51RGVmaW5pdGlvbi5odG1sJywnPGZvcm0gbmctc3VibWl0PXNhdmVTaWRlTWVudShrdE1lbnVEZWZpbml0aW9uRm9ybWEpIGNsYXNzPVwic2hhZG93LXNtIHB4LTQgcHktMlwiIG5hbWU9a3RNZW51RGVmaW5pdGlvbkZvcm1hIGlkPWt0TmF2YmFyRGVmaW5pdGlvbiByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2PjxkaXYgY2xhc3M9XCJjb2wtMTIga3QtY2hlY2tib3gtbGFiZWxcIj48aW5wdXQgdHlwZT1jaGVja2JveCBuZy1tb2RlbD1tZW51SXRlbS5zX21lbnVzX1NlbGVjdFZlcnNpb25EaXJlY3QgY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiPiBTZWxlY3QgcGFnZSB2ZXJzaW9uIG1hbnVhbGx5IChpZiBub3QsIGxhdGVzdCBwdWJsaXNoZWQgdmVyc2lvbiB3aWxsIGJlIHVzZWQpPC9kaXY+PGRpdiBjbGFzcz1jb2wtMTIgbmctaWY9bWVudUl0ZW0uc19tZW51c19TZWxlY3RWZXJzaW9uRGlyZWN0PjxkaXYgY2xhc3M9bXQtMj48c3BhbiBjbGFzcz1cImg2IHRleHQtZGFya1wiPlNlbGVjdCB2ZXJzaW9uPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9bXQtMiBuZy1mb3JtPWlubmVyRm9ybVZlcnNpb257e21lbnVJdGVtLmlkfX0+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLWlmPWxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlc1B1Ymxpc2hlZExpc3RbbWVudUl0ZW0uc19tZW51c19UYXJnZXRdLmxlbmd0aCBpcy1tdWx0aXBsZT1mYWxzZSBuZy1tb2RlbD1tZW51SXRlbS5zZWxlY3RlZFB1Ymxpc2hlZFJlc291cmNlIHNlbGVjdGVkLWl0ZW1zPW1lbnVJdGVtLnNlbGVjdGVkUHVibGlzaGVkUmVzb3VyY2UgcmVxdWlyZWQtZmllbGQ9dHJ1ZSBkcm9wZG93bi1pdGVtcz1sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZXNQdWJsaXNoZWRMaXN0W21lbnVJdGVtLnNfbWVudXNfVGFyZ2V0XSBkcm9wZG93bi1pZD1cIlxcJ3ZlcnNpb25cXCdcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2lubmVyRm9ybVZlcnNpb25cXCcrbWVudUl0ZW0uaWRcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCB2ZXJzaW9uXFwnXCI+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48ZGl2IG5nLWlmPVwiZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VzUHVibGlzaGVkTGlzdFttZW51SXRlbS5zX21lbnVzX1RhcmdldF0ubGVuZ3RoPT0wXCI+Tm8gcHVibGlzaGVkIG1lbnVzITwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M+PGRpdiBjbGFzcz1cInJvdyBtLTAgbXQtMVwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgbWItMVwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wIG10LTFcIj48ZGl2IG5nLWlmPWZhbHNlIGNsYXNzPVwiY29sIHAtMFwiPjxkaXYgY2xhc3M9XCJtYi0xIHNtYWxsXCI+TWVudSB0eXBlPC9kaXY+PGRpdiBjbGFzcz1idG4tZ3JvdXAgcm9sZT1ncm91cCBhcmlhLWxhYmVsPVwiTWVudSB0eXBlXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cIm1lbnVJdGVtLnNfbWVudXNfTWVudVR5cGU9MlwiIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzptZW51SXRlbS5zX21lbnVzX01lbnVUeXBlPT0yfVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5XCI+VGFzazwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwibWVudUl0ZW0uc19tZW51c19NZW51VHlwZT0xXCIgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOm1lbnVJdGVtLnNfbWVudXNfTWVudVR5cGU9PTF9XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnlcIj5TeXN0ZW0gcGFnZTwvYnV0dG9uPiA8YnV0dG9uIG5nLWlmPWZhbHNlIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwibWVudUl0ZW0uc19tZW51c19NZW51VHlwZT0zXCIgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOm1lbnVJdGVtLnNfbWVudXNfTWVudVR5cGU9PTN9XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnlcIj5Ecm9wZG93biBtZW51PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTAgbWItMVwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMTIgcC0wXCI+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9bGFiZWw+VGV4dDwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPW1lbnVJdGVtLnNfbWVudXNfTmFtZSBjbGFzcz1mb3JtLWNvbnRyb2w+PC9kaXY+PGRpdiBjbGFzcz1teS0zPjxkaXYgY2xhc3M9bWItMT5JY29uOjwvZGl2PjxkaXYga3QtaWNvbi1waWNrZXIgc2VsZWN0LWNvbG9ycz1mYWxzZSB1bmlxdWUtaWQ9bWVudUl0ZW0uc19tZW51c19pZCBzZWxlY3QtaWNvbnM9dHJ1ZSBzZWxlY3RlZC1pY29uPW1lbnVJdGVtLnNfbWVudXNfSWNvbiBzZWxlY3RlZC1idXR0b249bWVudUl0ZW0uYnRuQ2xhc3M+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb2wtbGctMTI+PGRpdiBjbGFzcz1jb2wtbGctMTI+PGRpdiBjbGFzcz1wdC0yIG5nLWlmPWxvY2FsVmFycy5tYW51YWxQYWdlU2VsZWN0PjxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1pZj1cImxvY2FsVmFycy5wYWdlc0xvYWRlZCAmJiBsb2NhbFZhcnMubWFudWFsUGFnZVNlbGVjdFwiIG5nLW1vZGVsPW1lbnVJdGVtLlRhcmdldCBzZWxlY3RlZC1pdGVtcz1tZW51SXRlbS5UYXJnZXQgZHJvcGRvd24taXRlbXM9bG9jYWxWYXJzLnBhZ2VMaXN0IGlzLW11bHRpcGxlPWZhbHNlIHJlcXVpcmVkPXRydWUgZHJvcGRvd24taWQ9XCJcXCdwYWdlXFwnXCIgcGFyZW50LWZvcm0taWQ9XCJcXCdpbm5lckZvcm1cXCdcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlYXJjaCBvciBzZWxlY3QgcGFnZS4uLlxcJ1wiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PC9kaXY+PGRpdiBjbGFzcz1cImJvbGQgcHktMlwiPnt7bWVudUl0ZW0uVGFyZ2V0Lm5hbWV9fTwvZGl2PjxkaXYgY2xhc3M9XCJjdXN0b20tY29udHJvbCBjdXN0b20tY2hlY2tib3ggbXQtMlwiPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IGlkPXJiQWN0aXZlIG5hbWU9YWN0aXZlIG5nLXJlcXVpcmVkPWZhbHNlIG5nLW1vZGVsPW1lbnVJdGVtLnNfbWVudXNfQWN0aXZlPiA8bGFiZWwgY2xhc3M9Y3VzdG9tLWNvbnRyb2wtbGFiZWwgZm9yPXJiQWN0aXZlPkFjdGl2ZTwvbGFiZWw+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1wLTI+PGRpdiBrdC11c2Vycy1ncm91cHMtc2VsZWN0IHVwZGF0ZS1vbi1jaGFuZ2U9bWVudUl0ZW0uVXNlcnMgbmctaWY9bWVudUl0ZW0uVXNlcnNHcm91cHNEb3dubG9hZGVkIHNlbGVjdGVkLXVzZXJzPW1lbnVJdGVtLlVzZXJzIHNlbGVjdGVkLWdyb3Vwcz1tZW51SXRlbS5Hcm91cHMgaGVhZGVyLWxhYmVsPWhlYWRlckxhYmVsIHVzZXJzLWxhYmVsPXVzZXJzTGFiZWwgZ3JvdXBzLWxhYmVsPWdyb3Vwc0xhYmVsPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9IWxvY2FsVmFycy5oaWRlQnRucyBjbGFzcz1cInJvdyBtLTAgbXQtMSBib3JkZXItdG9wXCI+PGRpdiBjbGFzcz1wLTE+PGJ1dHRvbiB0eXBlPXN1Ym1pdCBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zdWNjZXNzXCIgXCI+PGkgY2xhc3M9XCJmYSBmYS1zYXZlIG1yLTFcIj48L2k+U2F2ZTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhbmdlciBib3JkZXItMCBtbC0yXCIgbmctY2xpY2s9bWVudV9zZXJ2aWNlLnNldEN1cnJlbnROYXZiYXJJZChudWxsKTs+PHNwYW4gY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvc3Bhbj48c3BhbiBjbGFzcz1tbC0yPkNhbmNlbDwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Zvcm0+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0TmF2YmFyRGVmaW5pdGlvbi5odG1sJywnPGZvcm0gbmctaWY9bmF2YmFySXRlbS5pbmRleCsxIG5nLXN1Ym1pdD1zYXZlTmF2YmFyKGt0TmF2YmFyRGVmaW5pdGlvbkZvcm1hKSBuYW1lPWt0TmF2YmFyRGVmaW5pdGlvbkZvcm1hIGlkPWt0TmF2YmFyRGVmaW5pdGlvbiByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2IGlkZD1oZWFkZXIgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LWNlbnRlciBoNCBweS0zIG0tMCBib3JkZXItYm90dG9tXCI+PHNwYW4gbmctaWY9bmF2YmFySXRlbS5zX21lbnVzX05hbWU+PGI+e3tuYXZiYXJJdGVtLnNfbWVudXNfTmFtZX19PC9iPjwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJtbC0yIGg0IHRleHQtZGFuZ2VyXCIgbmctaWY9bmF2YmFySXRlbS5kZWxldGVJdGVtPkRlbGV0ZWQhPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgaWRkPWNvbnRlbnQgY2xhc3M9XCJyb3cgbS0wIG10LTFcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IG1iLTFcIj48ZGl2IGNsYXNzPVwicm93IG0tMCBtYi0xXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0xMiBwLTBcIiBuZy1pZj1cIm5hdmJhckl0ZW0uc19tZW51c19NZW51VHlwZSE9MlwiPjxkaXYgY2xhc3M9cHQtMiBuZy1pZj1sb2NhbFZhcnMubWFudWFsUGFnZVNlbGVjdD48a3QtZHJvcGRvd24tc3RhbmRhcmQgbmctaWY9bG9jYWxWYXJzLnBhZ2VzTG9hZGVkIG5nLW1vZGVsPW5hdmJhckl0ZW0uVGFyZ2V0IHNlbGVjdGVkLWl0ZW1zPW5hdmJhckl0ZW0uVGFyZ2V0IGRyb3Bkb3duLWl0ZW1zPWxvY2FsVmFycy5wYWdlTGlzdCBpcy1tdWx0aXBsZT1mYWxzZSByZXF1aXJlZD10cnVlIGRyb3Bkb3duLWlkPVwiXFwncGFnZVxcJ1wiIHBhcmVudC1mb3JtLWlkPVwiXFwnaW5uZXJGb3JtXFwnXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWFyY2ggb3Igc2VsZWN0IHBhZ2UuLi5cXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjwvZGl2PjxkaXY+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYkFjdGl2ZT48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCIgbmFtZT1jYkFjdGl2ZSBuZy1tb2RlbD1uYXZiYXJJdGVtLnNfbWVudXNfQWN0aXZlIG5nLWNoZWNrZWQ9bmF2YmFySXRlbS5zX21lbnVzX0FjdGl2ZT4gQWN0aXZlPC9sYWJlbD48L2Rpdj48bGFiZWwgZm9yPW1hbnVhbHZlcnNpb24gY2xhc3M9a3QtY2hlY2tib3gtbGFiZWw+PGlucHV0IG5nLWRpc2FibGVkPVwibG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VzUHVibGlzaGVkTGlzdFtuYXZiYXJJdGVtLnNfbWVudXNfVGFyZ2V0XS5sZW5ndGg9PTBcIiBuYW1lPW1hbnVhbHZlcnNpb24gdHlwZT1jaGVja2JveCBuZy1tb2RlbD1uYXZiYXJJdGVtLnNfbWVudXNfU2VsZWN0VmVyc2lvbkRpcmVjdCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCI+IDxzcGFuIG5nLXNob3c9XCJsb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZXNQdWJsaXNoZWRMaXN0W25hdmJhckl0ZW0uc19tZW51c19UYXJnZXRdLmxlbmd0aD09MFwiPlNlbGVjdCBwYWdlIHZlcnNpb24gaXMgbm90IHBvc3NpYmxlIC0gbm8gcHVibGlzaGVkIGRhdGEhPC9zcGFuPiA8c3BhbiBuZy1zaG93PVwiIWxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlc1B1Ymxpc2hlZExpc3RbbmF2YmFySXRlbS5zX21lbnVzX1RhcmdldF0ubGVuZ3RoPT0wXCI+U2VsZWN0IHBhZ2UgdmVyc2lvbiBtYW51YWxseSAob3RoZXJ3aXNlIGxhdGVzdCBwdWJsaXNoZWQgdmVyc2lvbiBpcyB1c2VkKTwvc3Bhbj48L2xhYmVsPjxkaXYgbmctaWY9bmF2YmFySXRlbS5zX21lbnVzX1NlbGVjdFZlcnNpb25EaXJlY3Q+PGRpdiBjbGFzcz1tdC0yPjxzcGFuIGNsYXNzPVwiaDYgdGV4dC1kYXJrXCI+U2VsZWN0IHZlcnNpb248L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1tdC0yIG5nLWZvcm09aW5uZXJGb3JtVmVyc2lvbnt7bmF2YmFySXRlbS5pZH19PjxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1pZj1sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZXNQdWJsaXNoZWRMaXN0W25hdmJhckl0ZW0uc19tZW51c19UYXJnZXRdLmxlbmd0aCBpcy1tdWx0aXBsZT1mYWxzZSBuZy1tb2RlbD1uYXZiYXJJdGVtLnNlbGVjdGVkUHVibGlzaGVkUmVzb3VyY2Ugc2VsZWN0ZWQtaXRlbXM9bmF2YmFySXRlbS5zZWxlY3RlZFB1Ymxpc2hlZFJlc291cmNlIHJlcXVpcmVkLWZpZWxkPXRydWUgZHJvcGRvd24taXRlbXM9bG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VzUHVibGlzaGVkTGlzdFtuYXZiYXJJdGVtLnNfbWVudXNfVGFyZ2V0XSBkcm9wZG93bi1pZD1cIlxcJ3ZlcnNpb25cXCdcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2lubmVyRm9ybVZlcnNpb25cXCcrbmF2YmFySXRlbS5pZFwiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IHZlcnNpb25cXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjxkaXYgbmctaWY9XCJsb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZXNQdWJsaXNoZWRMaXN0W25hdmJhckl0ZW0uc19tZW51c19UYXJnZXRdLmxlbmd0aD09MFwiPk5vIHB1Ymxpc2hlZCBtZW51cyE8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTEyIHAtMFwiIG5nLWlmPVwibmF2YmFySXRlbS5zX21lbnVzX01lbnVUeXBlPT0yXCI+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9bGFiZWw+TWVudSB0eXBlPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPVwiYm9sZCBweS0yXCI+Y29udGFpbmVyPC9kaXY+PGRpdj48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWwgZm9yPWNiQWN0aXZlPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPWNiQWN0aXZlIG5nLW1vZGVsPW5hdmJhckl0ZW0uc19tZW51c19BY3RpdmUgbmctY2hlY2tlZD1uYXZiYXJJdGVtLnNfbWVudXNfQWN0aXZlPiBBY3RpdmU8L2xhYmVsPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMTIgcC0wXCI+PGRpdj48bGFiZWwgY2xhc3M9bGFiZWw+VGV4dDwvbGFiZWw+PC9kaXY+PGRpdj48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPW5hdmJhckl0ZW0uc19tZW51c19OYW1lIGNsYXNzPWZvcm0tY29udHJvbD48L2Rpdj48ZGl2IGNsYXNzPXB5LTE+PGxhYmVsIHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA4cHg7XCI+SGlkZSB0ZXh0IG9uIHNtYWxsIHNjcmVlbiA8aW5wdXQgdHlwZT1jaGVja2JveCBuZy1tb2RlbD1uYXZiYXJJdGVtLnNfbWVudXNfUGFyYW1zLmhpZGVUZXh0T25TbWFsbFNjciBzdHlsZT1cImhlaWdodDogZml0LWNvbnRlbnQ7IHdpZHRoOiBmaXQtY29udGVudDsgZGlzcGxheTogaW5saW5lO1wiPjwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1cImQtZmxleCBtdC0zXCI+PHNwYW4gY2xhc3M9XCJteS1hdXRvIG1yLTJcIj5JY29uOjwvc3Bhbj48ZGl2IGt0LWljb24tcGlja2VyIHNlbGVjdC1jb2xvcnM9ZmFsc2UgdW5pcXVlLWlkPW5hdmJhckl0ZW0uc19tZW51c19pZCBzZWxlY3QtaWNvbnM9dHJ1ZSBzZWxlY3RlZC1pY29uPW5hdmJhckl0ZW0uc19tZW51c19JY29uIHNlbGVjdGVkLWJ1dHRvbj1uYXZiYXJJdGVtLmJ0bkNsYXNzPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cHktMT48bGFiZWwgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDtcIj5IaWRlIGljb24gb24gc21hbGwgc2NyZWVuIDxpbnB1dCB0eXBlPWNoZWNrYm94IG5nLW1vZGVsPW5hdmJhckl0ZW0uc19tZW51c19QYXJhbXMuaGlkZUljb25PblNtYWxsU2NyIHN0eWxlPVwiaGVpZ2h0OiBmaXQtY29udGVudDsgd2lkdGg6IGZpdC1jb250ZW50OyBkaXNwbGF5OiBpbmxpbmU7XCI+PC9sYWJlbD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXAtMj48ZGl2IGt0LXVzZXJzLWdyb3Vwcy1zZWxlY3QgdXBkYXRlLW9uLWNoYW5nZT1uYXZiYXJJdGVtLlVzZXJzIG5nLWlmPW5hdmJhckl0ZW0uVXNlcnNHcm91cHNEb3dubG9hZGVkIHNlbGVjdGVkLXVzZXJzPW5hdmJhckl0ZW0uVXNlcnMgc2VsZWN0ZWQtZ3JvdXBzPW5hdmJhckl0ZW0uR3JvdXBzIGhlYWRlci1sYWJlbD1oZWFkZXJMYWJlbCB1c2Vycy1sYWJlbD11c2Vyc0xhYmVsIGdyb3Vwcy1sYWJlbD1ncm91cHNMYWJlbD48L2Rpdj48L2Rpdj48L2Zvcm0+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0TmV3UmVzb3VyY2UuaHRtbCcsJzxkaXY+PGZvcm0gbmctc3VibWl0PW5ld1Jlc291cmNlKGZvcm0uJHZhbGlkKSBpZD1uZXdGb3JtIG5hbWU9Zm9ybSBjbGFzcz1mb3JtLWhvcml6b250YWwgcm9sZT1mb3JtIG5nLWNvbnRyb2xsZXI9XCJuZXdSZXNvdXJjZUN0cmwgYXMgbnJjXCIgbm92YWxpZGF0ZT48ZGl2IGNsYXNzPVwiYm94c2hhZG93IHNvcnQtYm94XCI+PGg0IGNsYXNzPXRleHQtY2VudGVyPlBsZWFzZSBzZWxlY3QgdGhlIHR5cGUgb2YgcmVzb3VyY2UgeW91IHdvdWxkIGxpa2UgdG8gY3JlYXRlICE8L2g0PjxpbnB1dCB0eXBlPWhpZGRlbiBuZy1tb2RlbD1pZCBjbGFzcz1jb2wteHMtNiBpZD1pZCBuYW1lPWlkPiA8aW5wdXQgdHlwZT1oaWRkZW4gbmctbW9kZWw9cmVzb3VyY2UuY3VycmVudFVzZXIgY2xhc3M9Y29sLXhzLTYgaWQ9Y3VycmVudFVzZXIgbmFtZT1jdXJyZW50VXNlcj48L2Rpdj48ZGl2IGNsYXNzPVwiYm94c2hhZG93IHNvcnQtYm94XCIgbmctaWY9IXNlbGVjdGVkUmVzb3VyY2VUeXBlLlZhbHVlPjxkaXYgY2xhc3M9cm93PjxkaXYgY2xhc3M9Y29sLXNtLTEyPjxhIGNsYXNzPVwibGlua0ljb24gY29sLXNtLTIgdGV4dC1jZW50ZXJcIiBuZy1jbGljaz1cInJlc291cmNlVHlwZVNlbGVjdGVkKFxcJ2RhdGFzZXRcXCcpXCI+PGRpdj48aSBjbGFzcz1cImZhIGZhLWRhdGFiYXNlIGZhLTV4XCI+PC9pPjwvZGl2PjxkaXY+PGg0IGNsYXNzPXRleHQtY2VudGVyPkRhdGFzZXQ8L2g0PjwvZGl2PjwvYT4gPGEgY2xhc3M9XCJsaW5rSWNvbiBjb2wtc20tMiB0ZXh0LWNlbnRlclwiIG5nLWNsaWNrPVwicmVzb3VyY2VUeXBlU2VsZWN0ZWQoXFwndGFza1xcJylcIj48ZGl2PjxpIGNsYXNzPVwiZmEgZmEtdGFza3MgZmEtNXhcIj48L2k+PC9kaXY+PGRpdiBjbGFzcz10ZXh0LWNlbnRlcj48aDQ+VGFzazwvaDQ+PC9kaXY+PC9hPiA8YSBjbGFzcz1cImxpbmtJY29uIGNvbC1zbS0yIHRleHQtY2VudGVyXCIgbmctY2xpY2s9XCJyZXNvdXJjZVR5cGVTZWxlY3RlZChcXCdmaWxlXFwnKVwiPjxkaXY+PGkgY2xhc3M9XCJmYSBmYS1maWxlLW8gZmEtNXhcIj48L2k+PC9kaXY+PGg0IGNsYXNzPXRleHQtY2VudGVyPkZpbGU8L2g0PjwvYT4gPGEgY2xhc3M9XCJsaW5rSWNvbiBjb2wtc20tMiB0ZXh0LWNlbnRlclwiIG5nLWNsaWNrPVwicmVzb3VyY2VUeXBlU2VsZWN0ZWQoXFwncGFnZVxcJylcIj48ZGl2PjxpIGNsYXNzPVwiZmEgZmEtbmV3c3BhcGVyLW8gZmEtNXhcIj48L2k+PC9kaXY+PGg0IGNsYXNzPXRleHQtY2VudGVyPlBhZ2U8L2g0PjwvYT48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiYm94c2hhZG93IHNvcnQtYm94XCIgbmctaWY9c2VsZWN0ZWRSZXNvdXJjZVR5cGUuVmFsdWU+PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcm93XCIgbmctc2hvdz1cInJlc291cmNlLnJlc291cmNlSUQgIT0gbnVsbCB8fCByZXNvdXJjZS5yZXNvdXJjZUlEID4gMFwiPjxsYWJlbCBjbGFzcz1jb2wtc20tMiBmb3I9cmVzb3VyY2VJRD57e3Jlc291cmNlLlJlc291cmNlRGVmSWQuUmVzb3VyY2VUeXBlLm5hbWV9fSBJRDwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtc20tNj48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPXJlc291cmNlLnJlc291cmNlSUQgaWQ9cmVzb3VyY2VJRCBuZy1kaXNhYmxlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbD48L2Rpdj48L2Rpdj48L2Rpdj48L2Zvcm0+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0Tm90aWZpY2F0aW9uU2VuZFdpZGdldC5odG1sJywnPGRpdiBjbGFzcz13aWRnZXQtaGVhZCBuZy1jbGFzcz1cIntcXCd3aWRnZXQtYWN0aXZlIG0tMSBzaGFkb3dcXCc6ZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPjAsXFwnbS0wIGJvcmRlci0wXFwnOihmZC5SZWxhdGVkPT1udWxsIHx8IGZkLlJlbGF0ZWQ9PXVuZGVmaW5lZCkgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTJ9XCI+PGRpdiBjbGFzcz1cInJvdyBiZy1saWdodCBtLTAgcC0wIG1iLTFcIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtaGVhZC1hY3RpdmVcXCc6ZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPjAsXFwnYmctbGlnaHRcXCc6ZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wfVwiIG5nLWlmPVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTFcIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGkgY2xhc3M9XCJmYSBmYS1lbnZlbG9wZSBteC0yXCI+PC9pPjxsYWJlbD5TZW5kIG5vdGlmaWNhdGlvbiAoe3tmZC5QcmVzZW50YXRpb25JZH19KSAoe3tmZC5Mb2NhbElkfX0pPC9sYWJlbD4gPGEgaHJlZiB0aXRsZT1zb3J0IG5nLWNsYXNzPVwie1xcJ3dpZGdldC1wcm9wXFwnOmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCBmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZH1cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCB7e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZSB3aWRnZXQtcHJvcFwiPjxpIGNsYXNzPVwie3tncmlkVHlwZX19LWVsZW1lbnQtZHJhZy1oYW5kbGUgZmFzIGZhLWdyaXAtdmVydGljYWxcIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgdGV4dC1yaWdodCBteS1hdXRvXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1mZC5sb2NhbFZhcnMuc2hvd1Byb3BlcnRpZXMoMSxmYWxzZSkgbmctY2xhc3M9XCJ7XFwnYnRuLXdhcm5pbmdcXCc6ZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT1cXCdcXCcgJiYgZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT11bmRlZmluZWQsIFxcJ2J0bi1vdXRsaW5lLXByaW1hcnkgbm8tYm9yZGVyXFwnOmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZD09XFwnXFwnIHx8IGZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZD09dW5kZWZpbmVkfVwiIGNsYXNzPVwiYnRuIGJ0bi14c1wiPjxzcGFuIG5nLWlmPVwiZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT1cXCdcXCcgJiYgZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT11bmRlZmluZWRcIj57e2ZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZH19PC9zcGFuPiA8c3BhbiBuZy1pZj1cImZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZD09XFwnXFwnIHx8IGZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZD09dW5kZWZpbmVkXCI+U2VsZWN0IG5vdGlmaWNhdGlvbjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCIgbmctaWY9XCJmZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPVxcJ1xcJyAmJiBmZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPXVuZGVmaW5lZFwiPjxhIGhyZWYgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCBidG4tc21cIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtcHJvcFxcJzpmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT11bmRlZmluZWR9XCIgdGl0bGU9XCJTaG93L2hpZGUgcHJvcGVydGllc1wiIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5zaG93UHJvcGVydGllcygyLHRydWUpPjxpIGNsYXNzPVwiZmFzIGZhLWNvZ1wiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxkaXYga3QtdGFzay1kcm9wZG93bjI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MVwiIGZkPWZkIGxvY2FsLXZhcnM9ZmQubG9jYWxWYXJzIGt0LWRhdGFzZXQtbWFwcGVyPjwvZGl2PjxkaXYgbmctaWY9XCIhZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQgJiYgZmQubG9jYWxWYXJzLnNob3dGb3JtXCIga3QtcHJvY2Vzc2luZy1hbmltYXRpb24gc2hvdy1tc2c9dHJ1ZSBtZXNzYWdlPVwiTG9hZGluZyBmb3JtLi4uXCI+PC9kaXY+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5mb3JtTG9hZGVkICYmIChmZC5sb2NhbFZhcnMuc2hvd0Zvcm0gfHwgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTIpXCIgY2xhc3M9XCJ3ZWxsLWN1c3RvbSBiZy13aGl0ZVwiPjxkaXYga3QtZ3JpZCBncmlkLXR5cGU9ZmQubG9jYWxWYXJzLmdyaWRzdGVyVHlwZSBwYXJlbnQtcmVzb3VyY2UtZGVmLWlkPWZkLnBhcmVudFJlc291cmNlRGVmSWQgcmVzb3VyY2UtcmVjb3JkLWlkPWZkLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkIHJlc291cmNlLWRlZmluaXRpb249cmVzb3VyY2VEZWZpbml0aW9uIGZvcm0tcGFyYW1zPWZvcm1QYXJhbXMgZm9ybS1kYXRhPWZvcm1EYXRhW2ZkLnByZXNlbnRhdGlvbklkXSBwYXJlbnQ9ZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzIGFsbC1jb2x1bW5zPWZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cyBjbGFzcz1rdEdyaWQ+PC9kaXY+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1pZj1mYWxzZSBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgcm91bmRlZC0wIG1sLTNcIiBuZy1jbGljaz1mZC5sb2NhbFZhcnMuc2VuZE5vdGlmaWNhdGlvbigpPjxzcGFuIGNsYXNzPVwiZmEgZmEtZW52ZWxvcGVcIj48L3NwYW4+IFNlbmQgbm90aWZpY2F0aW9uPC9idXR0b24+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0Tm90aWZpY2F0aW9uU2VuZFdpZGdldFByb3BlcnRpZXMuaHRtbCcsJzxkaXYgY2xhc3M9cC0xPjxkaXYgbmctaWY9XCJsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTFcIiBmZD1mZCBsb2NhbC12YXJzPWxvY2FsVmFycyBrdC1kYXRhc2V0LW1hcHBlcj48L2Rpdj48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPjFcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCByb3VuZGVkLTBcIiBuZy1jbGFzcz1cIntcXCdidG4tbGlnaHRcXCc6bG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0yLFxcJ2J0bi1pbmZvXFwnOmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSE9Mn1cIiBuZy1jbGljaz1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT0yXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1jb2dcIj48L3NwYW4+IFByb3BlcnRpZXM8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4taW5mbyByb3VuZGVkLTBcIiBuZy1jbGFzcz1cIntcXCdidG4tbGlnaHRcXCc6bG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0zLFxcJ2J0bi1pbmZvXFwnOmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSE9M31cIiBuZy1jbGljaz1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT0zXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1kYXRhYmFzZVwiPjwvc3Bhbj4gRGVmaW5lIHBhcmVudCBkYXRhc2V0PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWluZm8gcm91bmRlZC0wXCIgbmctY2xhc3M9XCJ7XFwnYnRuLWxpZ2h0XFwnOmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09NCxcXCdidG4taW5mb1xcJzpsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGUhPTR9XCIgbmctY2xpY2s9XCJsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9NFwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtY29weVwiPjwvc3Bhbj4gQ29weSBkYXRhIGZyb20gb3RoZXIgZGF0YXNldHM8L2J1dHRvbj48L2Rpdj48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0yXCIgY2xhc3M9XCJiZy1saWdodCB0ZXh0LWRhcmsgcC0yXCI+PGxhYmVsPkxhYmVsPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1mb3JtLWNvbnRyb2wgbmctbW9kZWw9ZmQucGxhY2Vob2xkZXI+IDxsYWJlbD5FcnJvciBtc2c8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPWZvcm0tY29udHJvbCBuZy1tb2RlbD1mZC5lcnJvck1zZz4gPGxhYmVsPlNlYXJjaFRleHQ8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPWZvcm0tY29udHJvbCBuZy1tb2RlbD1mZC5zZWFyY2hUZXh0Pjxocj48ZGl2IGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgbXQtMVwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCIgbmctY2xpY2s9XCJsb2NhbFZhcnMuc2V0RmllbGQobG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCxcXCdyZWFkT25seVxcJyx0cnVlLFxcJ0FsbCBmaWVsZHMgc2V0IHRvIHJlYWRvbmx5XFwnKVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtYmFuXCI+PC9zcGFuPiBNYXJrIGFsbCByZWFkIG9ubHk8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHRcIiBuZy1jbGljaz1cImxvY2FsVmFycy5zZXRGaWVsZChsb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0LFxcJ3JlYWRPbmx5XFwnLGZhbHNlLFxcJ0NsZWFyZWQgcmVhZG9ubHkgb24gYWxsIGZpZWxkc1xcJylcIj48c3BhbiBjbGFzcz1cImZhIGZhLXBlbmNpbFwiPjwvc3Bhbj4gQ2xlYXIgcmVhZCBvbmx5PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCIgbmctY2xpY2s9XCJsb2NhbFZhcnMuc2V0RmllbGQobG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCxcXCdyZXF1aXJlZFxcJyxmYWxzZSxcXCdBbGwgZmllbGRzIHNldCB0byByZXF1aXJlZFxcJylcIj48c3BhbiBjbGFzcz1cImZhIGZhLWNpcmNsZS1vXCI+PC9zcGFuPiBNYXJrIGFsbCBmaWVsZHMgbm90IHJlcXVpcmVkPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCIgbmctY2xpY2s9XCJsb2NhbFZhcnMuc2V0RmllbGQobG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCxcXCdyZXF1aXJlZFxcJyx0cnVlLFxcJ0FsbCBmaWVsZHMgc2V0IHRvIG5vdCByZXF1aXJlZFxcJylcIj48c3BhbiBjbGFzcz1cImZhIGZhLWNoZWNrLWNpcmNsZS1vXCI+PC9zcGFuPiBNYXJrIGFsbCBmaWVsZHMgcmVxdWlyZWQ8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHRcIiBuZy1jbGljaz1cImxvY2FsVmFycy5zZXRGaWVsZChsb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0LFxcJ3Nob3dGaWVsZFxcJyxmYWxzZSxcXCdBbGwgZmllbGRzIGFyZSBoaWRkZW5cXCcpXCI+PHNwYW4gY2xhc3M9XCJmYXMgZmEtZXllLXNsYXNoXCI+PC9zcGFuPiBIaWRlIGFsbCBmaWVsZHM8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHRcIiBuZy1jbGljaz1cImxvY2FsVmFycy5zZXRGaWVsZChsb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0LFxcJ3Nob3dGaWVsZFxcJyx0cnVlLFxcJ0FsbCBmaWVsZHMgYXJlIHZpc2libGVcXCcpXCI+PHNwYW4gY2xhc3M9XCJmYXMgZmEtZXllXCI+PC9zcGFuPiBTaG93IGFsbCBmaWVsZHM8L2J1dHRvbj48L2Rpdj48aHI+PGRpdj48aDY+RGVmaW5lIG1lc3NhZ2UgYWZ0ZXIgc3VjY2Vzc2Z1bCBwcm9jZXNzaW5nPC9oNj48dGV4dGFyZWEgbmctbW9kZWw9ZmQucmVzcG9uc2VNc2cgcGxhY2Vob2xkZXI9XCJFbnRlciBtZXNzYWdlXCIgbmFtZT1yZXNwb25zZU1zZyBjbGFzcz1mb3JtLWNvbnRyb2w+XFxyXFxuXFx0XFx0XFx0ICAgIFxcclxcblxcdFxcdFxcdDwvdGV4dGFyZWE+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09M1wiIGt0LWRhdGFzZXQtbWFwcGVyLXBhcmVudCBjbGFzcz1cImJnLWxpZ2h0IHRleHQtZGFya1wiPjwvZGl2PjxkaXYgbmctaWY9XCJsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTRcIiBrdC1kYXRhc2V0LXRvLWRhdGFzZXQtbWFwcGVyIGNsYXNzPVwiYmctbGlnaHQgdGV4dC1kYXJrXCI+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0TnVtYmVyLmh0bWwnLCc8ZGl2IG5nLWZvcm09XCJpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19XCIgY2xhc3M9XCJyb3cgcGItMSBtLTAgZGF0YXNldC1pdGVtXCIgbmctaWY9XCJmZC5TaG93RmllbGQgfHwgKGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xICYmIGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlIT0yKVwiIG5nLWNsYXNzPVwie1xcJ2JnLWdyYXktMjAgYm9yZGVyIHNoYWRvdy1zbVxcJzpmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MiAmJiBmZD09Z3NydmMuZ2V0U2VsZWN0ZWRGZCgpICYmIGdzcnZjLmdldEZpZWxkUHJvcGVydGllc09wZW5lZCgpfVwiPjxkaXYgY2xhc3M9e3tmZC5ncmlkQ2xhc3NMYWJlbH19IG5nLWNsYXNzPVwie1xcJ2NvbC1hdXRvXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZX1cIiBzdHlsZT17e2ZkLmxhYmVsQWxpZ259fT48bGFiZWwga3Qtc3R5bGUtYXR0cmlidXRlIGZkPWZkIHN0eWxlLXR5cGU9XCJcXCdsYWJlbFxcJ1wiIGNsYXNzPVwibWFyZ2luTDUgZm9ybS1jb250cm9sLWxhYmVsIG5vLWJvcmRlciBhbGlnbi1taWRkbGVcIiBmb3I9e3tmZC5OYW1lfX0gbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kaW52YWxpZCxcXCdjdXN0b20tZWwtbGF5b3V0LXN0eWxlXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MX1cIiBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlTGFiZWx9fT57e2ZkLkxhYmVsfX08L2xhYmVsPiA8c3BhbiBjbGFzcz1cIm14LTMgc21hbGwgbXV0ZWRcIj57e2Zvcm1hdGVkTnVtYmVyfX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cInt7ZmQuZ3JpZENsYXNzRWxlbWVudH19IG15LWF1dG9cIj48ZGl2IG5nLWNsYXNzPVwie1xcJ2N1c3RvbS1lbC1sYXlvdXQtc3R5bGUgY29sLWF1dG9cXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xLFxcJ2NvbC1hdXRvXFwnOiBmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPTF9XCI+PGRpdiBuZy1pZj1cImZkLlNlYXJjaC5uYW1lIT1cXCdCZXR3ZWVuXFwnICYmICFmZC5SZWFkT25seVwiPjxiIG5nLWlmPXNob3dTZWFyY2hGaWx0ZXJzPnt7ZmQuU2VhcmNoLm5hbWV9fTwvYj4gPGlucHV0IHR5cGU9bnVtYmVyIGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnZWxlbWVudFxcJ1wiIHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVFbGVtZW50fX07IHRhYmluZGV4PXt7aW5wdXRBcnJheS5UYWJJbmRleH19IG5nLW1pbj1mZC5QYXJhbWV0ZXJzLk1pbiBuZy1tYXg9ZmQuUGFyYW1ldGVycy5NYXggbmctc3RlcD1mZC5QYXJhbWV0ZXJzLlN0ZXBWYWx1ZSBuZy1ibHVyPWZvcm1hdE51bWJlcigpIG5nLW1vZGVsPWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0gbmctY2hhbmdlPVwiZmQuU2hvd1NlYXJjaEZvcm0/cmVmcmVzaFNlYXJjaFZhbHVlKCk6ZmQuU2VhcmNoPU5vbmVcIiBuZy1yZXF1aXJlZD1mZC5SZXF1aXJlZCBwbGFjZWhvbGRlcj17e2ZkLlNlYXJjaFRleHR9fSBuYW1lPVwie3tmZC5OYW1lfX17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19XCIgY2xhc3M9Zm9ybS1jb250cm9sIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlciBpcy1pbnZhbGlkXFwnIDogKGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJGludmFsaWQgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPTEgfVwiPjxwIG5nLWNsYXNzPVwie1xcJ2ludmFsaWQtdG9vbHRpcCByaWdodC0wXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCd0b29sdGlwXFwnIHx8IGZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT11bmRlZmluZWQsXFwnaW52YWxpZC1mZWVkYmFja1xcJzpmZC5QYXJhbWV0ZXJzLkVycm9yTXNnVHlwZT09XFwnZmVlZGJhY2tcXCd9XCI+e3tmZC5FcnJvck1zZ319PC9wPjwvZGl2PjxkaXYgbmctaWY9XCJmZC5TZWFyY2gubmFtZT09XFwnQmV0d2VlblxcJ1wiPjxiPkJldHdlZW46PC9iPiA8aW5wdXQgdHlwZT1udW1iZXIga3Qtc3R5bGUtYXR0cmlidXRlIGZkPWZkIHN0eWxlLXR5cGU9XCJcXCdlbGVtZW50XFwnXCIgc3R5bGU9e3tmZC5jdXN0b21TdHlsZUVsZW1lbnR9fSB0YWJpbmRleD17e2lucHV0QXJyYXkudGFiSW5kZXh9fSBuZy1tb2RlbD1mZC5TZWFyY2guYmV0d2VlbjEgbmctZGlzYWJsZWQ9ZmQuUmVhZE9ubHkgbmctcmVxdWlyZWQ9ZmFsc2UgcGxhY2Vob2xkZXI9e3tmZC5TZWFyY2hUZXh0fX0gbmFtZT17e2ZkLk5hbWV9fSBjbGFzcz1mb3JtLWNvbnRyb2w+PHAgbmctaGlkZT1cImZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xXCIgbmctY2xhc3M9XCJ7XFwnaW52YWxpZC10b29sdGlwIHJpZ2h0LTBcXCc6ZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PVxcJ3Rvb2x0aXBcXCcgfHwgZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PXVuZGVmaW5lZCxcXCdpbnZhbGlkLWZlZWRiYWNrXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCdmZWVkYmFja1xcJ31cIj57e2ZkLkVycm9yTXNnfX08L3A+PGI+QW5kOjwvYj4gPGlucHV0IHR5cGU9bnVtYmVyIGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnZWxlbWVudFxcJ1wiIHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVFbGVtZW50fX0gdGFiaW5kZXg9e3tpbnB1dEFycmF5LnRhYkluZGV4fX0gbmctbW9kZWw9ZmQuU2VhcmNoLmJldHdlZW4yIG5nLWRpc2FibGVkPWZkLlJlYWRPbmx5IG5nLXJlcXVpcmVkPWZhbHNlIHBsYWNlaG9sZGVyPXt7ZmQuU2VhcmNoVGV4dH19IG5hbWU9e3tmZC5OYW1lfX0gY2xhc3M9Zm9ybS1jb250cm9sPjxwIG5nLWhpZGU9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MVwiIG5nLWNsYXNzPVwie1xcJ2ludmFsaWQtdG9vbHRpcCByaWdodC0wXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCd0b29sdGlwXFwnIHx8IGZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT11bmRlZmluZWQsXFwnaW52YWxpZC1mZWVkYmFja1xcJzpmZC5QYXJhbWV0ZXJzLkVycm9yTXNnVHlwZT09XFwnZmVlZGJhY2tcXCd9XCI+e3tmZC5FcnJvck1zZ319PC9wPjwvZGl2PjxkaXYga3Qtc3R5bGUtYXR0cmlidXRlIGZkPWZkIHN0eWxlLXR5cGU9XCJcXCdlbGVtZW50XFwnXCIgbmctaWY9ZmQuUmVhZE9ubHkgc3R5bGU9e3tmZC5jdXN0b21TdHlsZUVsZW1lbnR9fT48ZGl2IG5nLWlmPVwiZmQuUGFyYW1ldGVycy5Tb3VyY2VGaWVsZE5hbWU9PVxcJ1xcJyB8fCBmZC5QYXJhbWV0ZXJzLlNvdXJjZUZpZWxkTmFtZT09dW5kZWZpbmVkXCIgc3R5bGU9XCJtaW4taGVpZ2h0OiAzNXB4O1wiIGNsYXNzPVwibWItMCBib3JkZXIgcC0xIHJvdW5kZWRcIiBuZy1iaW5kPWZvcm1hdGVkTnVtYmVyPjwvZGl2PjxkaXYgbmctaWY9XCJmZC5QYXJhbWV0ZXJzLlNvdXJjZUZpZWxkTmFtZSE9XFwnXFwnICYmIGZkLlBhcmFtZXRlcnMuU291cmNlRmllbGROYW1lIT11bmRlZmluZWRcIiBuZy1jbGFzcz1cIntcXCdib2xkXFwnOmZkLlBhcmFtZXRlcnMuVmFsdWVGb250Qm9sZH1cIiBjbGFzcz1tYi0wPjxzcGFuIG5nLWJpbmQ9ZmQuZm9ybWF0TnVtYmVyQmxvY2tjaGFpbihmb3JtRGF0YVswXVtmZC5QYXJhbWV0ZXJzLlNvdXJjZUZpZWxkTmFtZV0pPjwvc3Bhbj4gPHNwYW4gY2xhc3M9bWwtMSBuZy1iaW5kPWZkLlBhcmFtZXRlcnMuTnVtYmVyU3R5bGVTdWZmaXg+PC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9XCJ2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudFwiIGNsYXNzPVwiYmx1ZS1kcm9wZG93biByb3VuZGVkIHNoYWRvd1wiPjxkaXYgY2xhc3M9XCJlbGVtZW50LXByb3BlcnRpZXMtYnRucyBiZy1wcmltYXJ5IHJvdW5kZWQgc2hhZG93XCIgbmctaWY9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MlwiPjxzcGFuIGNsYXNzPVwibGFiZWwgbGFiZWwteHMgdGV4dC13aGl0ZSBtbC0xIGJvbGRcIj57e2ZkLk5hbWV9fTwvc3Bhbj4gPGEgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIHByb3AtYnRuIGVsZW1lbnQtZHJhZy1oYW5kbGVcIiB0aXRsZT1zb3J0IGhyZWY+PGkgY2xhc3M9XCJmYSBmYS1ncmlwLXZlcnRpY2FsIGVsZW1lbnQtZHJhZy1oYW5kbGVcIj48L2k+PC9hPiA8YSBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4teHMgcHJvcC1idG5cIiBocmVmIHRpdGxlPVwiRmllbGQgcHJvcGVydGllc1wiIG5nLWNsaWNrPXNob3dQcm9wZXJ0aWVzKCRldmVudCk+PGkgY2xhc3M9XCJmYSBmYS1jb2dcIj48L2k+PC9hPiA8YSBuZy1pZj1nc3J2Yy5zaG93RmlsdGVyKG15c2NvcGUpIGlkPVwic2VhcmNoLWZpbHRlci17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19XCIgZGF0YS10b2dnbGU9ZHJvcGRvd24gYXJpYS1oYXNwb3B1cD10cnVlIGFyaWEtZXhwYW5kZWQ9ZmFsc2UgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIHByb3AtYnRuXCIgaHJlZj48aSBjbGFzcz1cImZhIGZhLWZpbHRlciBtci0xXCIgdGl0bGU9XCJGaWx0ZXIgOiB7e2ZkLlNlYXJjaC5uYW1lfX1cIj48L2k+e3tmZC5TZWFyY2gubmFtZX19PC9hPjxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IHNoYWRvdyBwLTAgZHJvcGRvd24tbWF4LWNvbnRlbnQtd2lkdGhcIiBzdHlsZT1cIm1pbi13aWR0aDowcHggIWltcG9ydGFudFwiIGFyaWEtbGFiZWxsZWRieT1cInNlYXJjaC1maWx0ZXIte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fVwiPjxkaXYgY2xhc3M9YnRuLWdyb3VwLXZlcnRpY2FsIHJvbGU9Z3JvdXAgYXJpYS1sYWJlbD1cIlNlYXJjaCBmaWx0ZXJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseU51bUZpbHRlcnMoMCkgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ2d0XFwnfVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1yaWdodFwiPjwvc3Bhbj4ge3tmZC5sb2NhbFZhcnMuc2VhcmNoWzBdLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseU51bUZpbHRlcnMoMSkgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ2JlZXR3ZW5cXCd9XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1leHBhbmRcIj48L3NwYW4+IHt7ZmQubG9jYWxWYXJzLnNlYXJjaFsxXS5uYW1lfX08L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG0tc20gYnRuLWxpZ2h0XCIgbmctY2xpY2s9YXBwbHlOdW1GaWx0ZXJzKDIpIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpmZC5TZWFyY2guZmlsdGVyPT1cXCdsdFxcJ31cIj48c3BhbiBjbGFzcz1cImZhIGZhLWNoZXZyb24tbGVmdFwiPjwvc3Bhbj4ge3tmZC5sb2NhbFZhcnMuc2VhcmNoWzJdLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseU51bUZpbHRlcnMoMykgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ2VxXFwnfVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtYmFyc1wiPjwvc3Bhbj4ge3tmZC5sb2NhbFZhcnMuc2VhcmNoWzNdLm5hbWV9fTwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxzY3JpcHQgaWQ9bnVtYmVyc2VhcmNocHJvcGVydGllcy5odG1sIHR5cGU9dGV4dC9uZy10ZW1wbGF0ZT48ZGl2ID4gPGRpdiBjbGFzcz1cInJvd1wiPiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cIkdyZWF0ZXIgdGhlblwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBuZy1iaW5kaW5nXCIgbmctY2xpY2s9XCJhcHBseU51bUZpbHRlcnMoMClcIj4gPHNwYW4gY2xhc3M9XCJ7e3NlYXJjaFswXS5pY29ufX1cIj48L3NwYW4+IHt7c2VhcmNoWzBdLm5hbWV9fSA8L2J1dHRvbj4gPC9kaXY+IDxkaXYgY2xhc3M9XCJyb3dcIj4gPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJMb3dlciB0aGVuIFwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBuZy1iaW5kaW5nXCIgbmctY2xpY2s9XCJhcHBseU51bUZpbHRlcnMoMSlcIj4gPHNwYW4gY2xhc3M9XCJ7e3NlYXJjaFsxXS5pY29ufX1cIj48L3NwYW4+IHt7c2VhcmNoWzFdLm5hbWV9fTwvYnV0dG9uPiA8L2Rpdj4gPGRpdiBjbGFzcz1cInJvd1wiPiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cIkVuZHNcIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbmctYmluZGluZ1wiIG5nLWNsaWNrPVwiYXBwbHlOdW1GaWx0ZXJzKDIpXCI+IDxzcGFuIGNsYXNzPVwie3tzZWFyY2hbMl0uaWNvbn19XCI+PC9zcGFuPiB7e3NlYXJjaFsyXS5uYW1lfX08L2J1dHRvbj4gPC9kaXY+IDxkaXYgY2xhc3M9XCJyb3dcIj4gPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJFeGFjdFwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBuZy1iaW5kaW5nXCIgbmctY2xpY2s9XCJhcHBseU51bUZpbHRlcnMoMylcIj4gPHNwYW4gY2xhc3M9XCJ7e3NlYXJjaFszXS5pY29ufX1cIj48L3NwYW4+IHt7c2VhcmNoWzNdLm5hbWV9fTwvYnV0dG9uPiA8L2Rpdj4gPC9kaXY+PC9zY3JpcHQ+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0TnVtYmVyRXhlLmh0bWwnLCc8ZGl2IG5nLWZvcm09aW5uZXJGb3Jte3tmZC5JdGVtSWR9fSBjbGFzcz1cInJvdyBtLTAgbXQtMSBkYXRhc2V0LWl0ZW1cIiBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZFxcJyA6IChpbm5lckZvcm17e2ZkLkl0ZW1JZH19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkfX0uJHRvdWNoZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkfX0uJGRpcnR5KSAmJiBpbm5lckZvcm17e2ZkLkl0ZW1JZH19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fS4kaW52YWxpZCxcXCdpcy12YWxpZFxcJyA6IChpbm5lckZvcm17e2ZkLkl0ZW1JZH19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkfX0uJHRvdWNoZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkfX0uJGRpcnR5KSAmJiBpbm5lckZvcm17e2ZkLkl0ZW1JZH19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fS4kdmFsaWR9XCIgbmctaWY9OjpmZC5TaG93RmllbGQ+PGRpdiBuZy1oaWRlPTo6ZmQuUGFyYW1ldGVycy5IaWRlTGFiZWwgY2xhc3M9e3tmZC5ncmlkQ2xhc3NMYWJlbH19IG5nLWNsYXNzPVwie1xcJ2NvbC1hdXRvXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZX1cIiBzdHlsZT17e2ZkLmxhYmVsQWxpZ259fT48bGFiZWwga3Qtc3R5bGUtYXR0cmlidXRlIGZkPWZkIHN0eWxlLXR5cGU9XCJcXCdsYWJlbFxcJ1wiIGNsYXNzPVwibWFyZ2luTDUgZm9ybS1jb250cm9sLWxhYmVsIG5vLWJvcmRlciBhbGlnbi1taWRkbGVcIiBmb3I9e3tmZC5OYW1lfX0gbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZH19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS4kaW52YWxpZCxcXCdjdXN0b20tZWwtbGF5b3V0LXN0eWxlXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MX1cIiBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlTGFiZWx9fT57e2ZkLkxhYmVsfX08L2xhYmVsPiA8c3BhbiBjbGFzcz1cIm14LTMgc21hbGwgbXV0ZWRcIj57e2Zvcm1hdGVkTnVtYmVyfX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cInt7ZmQuZ3JpZENsYXNzRWxlbWVudH19IG15LWF1dG9cIj48ZGl2IG5nLWNsYXNzPVwie1xcJ2N1c3RvbS1lbC1sYXlvdXQtc3R5bGUgY29sLWF1dG9cXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xLFxcJ2NvbC1hdXRvXFwnOiBmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPTF9XCI+PGRpdiBuZy1pZj1cImZkLlNlYXJjaC5uYW1lIT1cXCdCZXR3ZWVuXFwnICYmICFmZC5SZWFkT25seVwiPjxpbnB1dCB0eXBlPW51bWJlciBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2VsZW1lbnRcXCdcIiBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlRWxlbWVudH19IHRhYmluZGV4PXt7aW5wdXRBcnJheS5UYWJJbmRleH19IG5nLW1pbj06OmZkLlBhcmFtZXRlcnMuTWluIG5nLW1heD06OmZkLlBhcmFtZXRlcnMuTWF4IG5nLXN0ZXA9OjpmZC5QYXJhbWV0ZXJzLlN0ZXBWYWx1ZSBuZy1ibHVyPWZvcm1hdE51bWJlcigpIG5nLW1vZGVsPWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0gbmctcGF0dGVybj06OmZkLlBhcmFtZXRlcnMuUmVnZXggbmctY2hhbmdlPXJlZnJlc2hTZWFyY2hWYWx1ZSgpIG5nLXJlcXVpcmVkPWZkLlJlcXVpcmVkIHBsYWNlaG9sZGVyPXt7ZmQuU2VhcmNoVGV4dH19IG5hbWU9e3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19IGNsYXNzPWZvcm0tY29udHJvbCBuZy1tb2RlbC1vcHRpb25zPVwieyBkZWJvdW5jZTogMjUwIH1cIiBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXIgaXMtaW52YWxpZFxcJyA6IChpbm5lckZvcm17e2ZkLkl0ZW1JZH19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19LiRpbnZhbGlkfVwiPjxwIGNsYXNzPW5vcHJpbnQgbmctY2xhc3M9XCJ7XFwnaW52YWxpZC10b29sdGlwIHJpZ2h0LTBcXCc6ZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PVxcJ3Rvb2x0aXBcXCcgfHwgZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PXVuZGVmaW5lZCxcXCdpbnZhbGlkLWZlZWRiYWNrXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCdmZWVkYmFja1xcJ31cIj57e2ZkLkVycm9yTXNnfX08L3A+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlNlYXJjaC5uYW1lPT1cXCdCZXR3ZWVuXFwnXCI+PGI+QmV0d2Vlbjo8L2I+IDxpbnB1dCB0eXBlPW51bWJlciBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2VsZW1lbnRcXCdcIiBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlRWxlbWVudH19IHRhYmluZGV4PXt7aW5wdXRBcnJheS50YWJJbmRleH19IG5nLW1vZGVsPWZkLlNlYXJjaC5iZXR3ZWVuMSBuZy1kaXNhYmxlZD1mZC5SZWFkT25seSBuZy1yZXF1aXJlZD1mYWxzZSBwbGFjZWhvbGRlcj17e2ZkLlNlYXJjaFRleHR9fSBuYW1lPXt7ZmQuTmFtZX19IGNsYXNzPWZvcm0tY29udHJvbD48cCBjbGFzcz1ub3ByaW50IG5nLWhpZGU9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MVwiIG5nLWNsYXNzPVwie1xcJ2ludmFsaWQtdG9vbHRpcCByaWdodC0wXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCd0b29sdGlwXFwnIHx8IGZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT11bmRlZmluZWQsXFwnaW52YWxpZC1mZWVkYmFja1xcJzpmZC5QYXJhbWV0ZXJzLkVycm9yTXNnVHlwZT09XFwnZmVlZGJhY2tcXCd9XCI+e3tmZC5FcnJvck1zZ319PC9wPjxiPkFuZDo8L2I+IDxpbnB1dCB0eXBlPW51bWJlciBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2VsZW1lbnRcXCdcIiBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlRWxlbWVudH19IHRhYmluZGV4PXt7aW5wdXRBcnJheS50YWJJbmRleH19IG5nLW1vZGVsPWZkLlNlYXJjaC5iZXR3ZWVuMiBuZy1kaXNhYmxlZD1mZC5SZWFkT25seSBuZy1yZXF1aXJlZD1mYWxzZSBwbGFjZWhvbGRlcj17e2ZkLlNlYXJjaFRleHR9fSBuYW1lPXt7ZmQuTmFtZX19IGNsYXNzPWZvcm0tY29udHJvbD48cCBjbGFzcz1ub3ByaW50IG5nLWhpZGU9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MVwiIG5nLWNsYXNzPVwie1xcJ2ludmFsaWQtdG9vbHRpcCByaWdodC0wXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCd0b29sdGlwXFwnIHx8IGZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT11bmRlZmluZWQsXFwnaW52YWxpZC1mZWVkYmFja1xcJzpmZC5QYXJhbWV0ZXJzLkVycm9yTXNnVHlwZT09XFwnZmVlZGJhY2tcXCd9XCI+e3tmZC5FcnJvck1zZ319PC9wPjwvZGl2PjxkaXYga3Qtc3R5bGUtYXR0cmlidXRlIGZkPWZkIHN0eWxlLXR5cGU9XCJcXCdlbGVtZW50XFwnXCIgbmctaWY9ZmQuUmVhZE9ubHkgc3R5bGU9e3tmZC5jdXN0b21TdHlsZUVsZW1lbnR9fT48ZGl2IG5nLWlmPVwiZmQuUGFyYW1ldGVycy5Tb3VyY2VGaWVsZE5hbWU9PVxcJ1xcJyB8fCBmZC5QYXJhbWV0ZXJzLlNvdXJjZUZpZWxkTmFtZT09dW5kZWZpbmVkXCIgbmctY2xhc3M9XCJ7XFwnZm9ybS1jb250cm9sXFwnOmZkLlBhcmFtZXRlcnMuQm9yZGVyRm9yUmVhZE9ubHl9XCIgbmctYmluZD1mZC5sb2NhbFZhcnMuZm9ybWF0TnVtYmVyKGZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0pPjwvZGl2PjxkaXYgbmctaWY9XCJmZC5QYXJhbWV0ZXJzLlNvdXJjZUZpZWxkTmFtZSE9XFwnXFwnICYmIGZkLlBhcmFtZXRlcnMuU291cmNlRmllbGROYW1lIT11bmRlZmluZWRcIiBuZy1jbGFzcz1cIntcXCdib2xkXFwnOmZkLlBhcmFtZXRlcnMuVmFsdWVGb250Qm9sZH1cIiBjbGFzcz1tYi0wPjxzcGFuIG5nLWJpbmQ9ZmQuZm9ybWF0TnVtYmVyQmxvY2tjaGFpbihmb3JtRGF0YVswXVtmZC5QYXJhbWV0ZXJzLlNvdXJjZUZpZWxkTmFtZV0pPjwvc3Bhbj4gPHNwYW4gY2xhc3M9bWwtMSBuZy1iaW5kPWZkLlBhcmFtZXRlcnMuTnVtYmVyU3R5bGVTdWZmaXg+PC9zcGFuPjwvZGl2PjxkaXYgbmctaWY9ZmQuRXJyb3JNc2c+PHNwYW4gY2xhc3M9dGV4dC1kYW5nZXI+e3tmZC5XYWxsZXRFcnJvcn19PC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJlbGVtZW50LXByb3BlcnRpZXMtYnRucyBiZy1wcmltYXJ5IHJvdW5kZWQgc2hhZG93XCIgbmctaWY9OjpzaG93U2VhcmNoRmlsdGVycz48YSBuZy1pZj1zaG93U2VhcmNoRmlsdGVycyBpZD1zZWFyY2gtZmlsdGVyLXt7ZmQuSXRlbUlkfX0gZGF0YS10b2dnbGU9ZHJvcGRvd24gYXJpYS1oYXNwb3B1cD10cnVlIGFyaWEtZXhwYW5kZWQ9ZmFsc2UgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIHByb3AtYnRuXCIgaHJlZj48aSBjbGFzcz1cImZhIGZhLWZpbHRlciB7e2ZkLlNlYXJjaC5pY29ufX0gbXItMVwiIHRpdGxlPVwiRmlsdGVyIDoge3tmZC5TZWFyY2gubmFtZX19XCI+PC9pPnt7ZmQuU2VhcmNoLm5hbWV9fTwvYT48ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBzaGFkb3cgcC0wIGRyb3Bkb3duLW1heC1jb250ZW50LXdpZHRoXCIgc3R5bGU9XCJtaW4td2lkdGg6MHB4ICFpbXBvcnRhbnRcIiBhcmlhLWxhYmVsbGVkYnk9c2VhcmNoLWZpbHRlci17e2ZkLkl0ZW1JZH19PjxkaXYgY2xhc3M9YnRuLWdyb3VwLXZlcnRpY2FsIHJvbGU9Z3JvdXAgYXJpYS1sYWJlbD1cIlNlYXJjaCBmaWx0ZXJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseU51bUZpbHRlcnMoMCkgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ2d0ZVxcJ31cIj48c3BhbiBjbGFzcz1cImZhIGZhLWNoZXZyb24tcmlnaHRcIj48L3NwYW4+IHt7ZmQubG9jYWxWYXJzLnNlYXJjaFswXS5uYW1lfX08L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG0tc20gYnRuLWxpZ2h0XCIgbmctY2xpY2s9YXBwbHlOdW1GaWx0ZXJzKDEpIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpmZC5TZWFyY2guZmlsdGVyPT1cXCdiZWV0d2VuXFwnfVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtZXhwYW5kXCI+PC9zcGFuPiB7e2ZkLmxvY2FsVmFycy5zZWFyY2hbMV0ubmFtZX19PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5TnVtRmlsdGVycygyKSBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuU2VhcmNoLmZpbHRlcj09XFwnbHRlXFwnfVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1sZWZ0XCI+PC9zcGFuPiB7e2ZkLmxvY2FsVmFycy5zZWFyY2hbMl0ubmFtZX19PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5TnVtRmlsdGVycygzKSBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuU2VhcmNoLmZpbHRlcj09XFwnZXFcXCd9XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1iYXJzXCI+PC9zcGFuPiB7e2ZkLmxvY2FsVmFycy5zZWFyY2hbM10ubmFtZX19PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0TnVtYmVyUHJvcGVydGllcy5odG1sJywnPGRpdiBjbGFzcz1wLTE+PGRpdiBrdC1wcm9wZXJ0eS1oZWFkZXI+PC9kaXY+PGRpdiBuZy1jbGljaz1cImZkLmxvY2FsVmFycy5zaG93QmFzaWMgPSAhZmQubG9jYWxWYXJzLnNob3dCYXNpY1wiIGNsYXNzPVwiZXhwYW5kLXByb3BlcnR5LXBhbmVsIHRhZyBib3JkZXItYm90dG9tIGJvcmRlci1zdWNjZXNzIG15LTEgcHktMVwiIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIGhyZWY9I21haW5Qcm9wZXJ0eVBhbmVsIHJvbGU9YnV0dG9uIGFyaWEtZXhwYW5kZWQ9dHJ1ZSBhcmlhLWNvbnRyb2xzPW1haW5Qcm9wZXJ0eVBhbmVsPjxzcGFuIGNsYXNzPVwiY29sIHAtMFwiPkJBU0lDPC9zcGFuPiA8aSBzdHlsZT1cImZvbnQtc2l6ZTogbGFyZ2U7XCIgbmctc2hvdz1mZC5sb2NhbFZhcnMuc2hvd0Jhc2ljIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLWRvd25cIj48L2k+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PSFmZC5sb2NhbFZhcnMuc2hvd0Jhc2ljIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLXVwXCI+PC9pPjwvZGl2PjxkaXYgY2xhc3M9XCJtYi00IGNvbGxhcHNlIHNob3dcIiBpZD1tYWluUHJvcGVydHlQYW5lbD48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+TGFiZWw8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLkxhYmVsPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+RXJyb3IgbXNnPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5FcnJvck1zZz4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPlNlYXJjaFRleHQ8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlNlYXJjaFRleHQ+PGRpdiBjbGFzcz1cImJvcmRlci1ib3R0b20gbXktMVwiPlZhbGlkYXRvcnM8L2Rpdj48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+TWluIHZhbHVlPC9sYWJlbD4gPGlucHV0IHR5cGU9bnVtYmVyIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuTWluPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+TWF4IHZhbHVlPC9sYWJlbD4gPGlucHV0IHR5cGU9bnVtYmVyIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuTWF4PiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+U3RlcDwvbGFiZWw+IDxpbnB1dCB0eXBlPW51bWJlciBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlN0ZXBWYWx1ZT4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPlJlZ2V4PC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlJlZ2V4PiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+Rm9ybXVsYTwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5WYWx1ZUZvcm11bGE+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveFwiPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IGlkPWNiUmVxdWlyZWQgbmctbW9kZWw9ZmQuUmVxdWlyZWQ+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPWNiUmVxdWlyZWQ+UmVxdWlyZWQ8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9XCJjdXN0b20tY29udHJvbCBjdXN0b20tY2hlY2tib3hcIj48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1jdXN0b20tY29udHJvbC1pbnB1dCBpZD1jYkNvbnZlcnRCbG9ja2NoYWluRm9ybWF0e3tmZC5VVWlkUmVmfX0gbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5Db252ZXJ0QmxvY2tjaGFpbkZvcm1hdD4gPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgbGFiZWwteHNcIiBmb3I9Y2JDb252ZXJ0QmxvY2tjaGFpbkZvcm1hdHt7ZmQuVVVpZFJlZn19PkNvbnZlcnQgZnJvbSBibG9ja2NoYWluIGZvcm1hdDwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveFwiPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IGlkPWNiQ29udmVydFRvRGF5cyBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkNvbnZlcnRUb0RheXM+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPWNiQ29udmVydFRvRGF5cz5Db252ZXJ0IHRvIGRheXM8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9XCJjdXN0b20tY29udHJvbCBjdXN0b20tcmFkaW9cIj48aW5wdXQgdHlwZT1yYWRpbyBpZD1maWVsZFR5cGUxIGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IG5nLW1vZGVsPWZkLkZpZWxkVHlwZSB2YWx1ZT0xIG5hbWU9ZmllbGRUeXBlIG5nLWNsaWNrPVwiZmQuRGJ0eXBlPVxcJ2ludGVnZXJmaWVsZGRlZmluaXRpb25cXCdcIiBuZy1jaGVja2VkPVwiZmQuRGJ0eXBlPT1cXCdpbnRlZ2VyZmllbGRkZWZpbml0aW9uXFwnXCI+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPWZpZWxkVHlwZTE+SW50ZWdlcjwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1yYWRpb1wiPjxpbnB1dCB0eXBlPXJhZGlvIGlkPWZpZWxkVHlwZTIgY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgbmctbW9kZWw9ZmQuRmllbGRUeXBlIHZhbHVlPTIgbmFtZT1maWVsZFR5cGUgbmctY2xpY2s9XCJmZC5EYnR5cGU9XFwnZGVjaW1hbGZpZWxkZGVmaW5pdGlvblxcJ1wiIG5nLWNoZWNrZWQ9XCJmZC5EYnR5cGU9PVxcJ2RlY2ltYWxmaWVsZGRlZmluaXRpb25cXCdcIj4gPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgbGFiZWwteHNcIiBmb3I9ZmllbGRUeXBlMj5EZWNpbWFsPC9sYWJlbD48L2Rpdj48ZGl2IG5nLWlmPVwiZmQuRGJ0eXBlPT1cXCdkZWNpbWFsZmllbGRkZWZpbml0aW9uXFwnXCI+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkRlY2ltYWwgcGxhY2VzPC9sYWJlbD4gPGlucHV0IHR5cGU9bnVtYmVyIG1pbj0xIG1heD0xOCBuZy1jaGFuZ2U9ZmQuc2V0U3RlcCgpIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLk1heExlbmd0aD48L2Rpdj48ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLXJhZGlvXCI+PGlucHV0IHR5cGU9cmFkaW8gaWQ9bnVtYmVyU3R5bGUxIGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuTnVtYmVyU3R5bGUgdmFsdWU9cGVyY2VudGFnZSBuYW1lPW51bWJlclN0eWxlMSBuZy1jbGljaz1cImZkLlBhcmFtZXRlcnMuTnVtYmVyU3R5bGU9XFwncGVyY2VudGFnZVxcJ1wiIG5nLWNoZWNrZWQ9XCJmZC5QYXJhbWV0ZXJzLk51bWJlclN0eWxlPT1cXCdwZXJjZW50YWdlXFwnXCI+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPW51bWJlclN0eWxlMT5QZXJjZW50YWdlPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLXJhZGlvXCI+PGlucHV0IHR5cGU9cmFkaW8gaWQ9bnVtYmVyU3R5bGUyIGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuTnVtYmVyU3R5bGUgdmFsdWU9Y3VycmVuY3kgbmFtZT1udW1iZXJTdHlsZTIgbmctY2xpY2s9XCJmZC5QYXJhbWV0ZXJzLk51bWJlclN0eWxlPVxcJ2N1cnJlbmN5XFwnXCIgbmctY2hlY2tlZD1cImZkLlBhcmFtZXRlcnMuTnVtYmVyU3R5bGU9PVxcJ2N1cnJlbmN5XFwnXCI+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPW51bWJlclN0eWxlMj5DdXJyZW5jeTwvbGFiZWw+PC9kaXY+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPk51bWJlciBzdHlsZSBzaWduPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLk51bWJlclN0eWxlU3VmZml4PjwvZGl2PjxkaXYgY2xhc3M9XCJjdXN0b20tY29udHJvbCBjdXN0b20tY2hlY2tib3hcIj48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1jdXN0b20tY29udHJvbC1pbnB1dCBpZD1jYlVzZUNvdW50ZXJ7e2ZkLlVVaWRSZWZ9fSBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlVzZUNvdW50ZXIgbmctY2xpY2s9ZmQubG9jYWxWYXJzLmxvYWRDb3VudGVycygpPiA8bGFiZWwgY2xhc3M9XCJjdXN0b20tY29udHJvbC1sYWJlbCBsYWJlbC14c1wiIGZvcj1jYlVzZUNvdW50ZXJ7e2ZkLlVVaWRSZWZ9fT5Vc2UgY291bnRlcjwvbGFiZWw+PC9kaXY+PGRpdiBuZy1pZj1mZC5QYXJhbWV0ZXJzLlVzZUNvdW50ZXIgbmctZm9ybT1cIlxcJ3NlbGVjdGVkQ291bnRlclxcJytmZC5QcmVzZW50YXRpb25JZFwiPjxsYWJlbCBjbGFzcz1cInBsLTAgcHQtMiBsYWJlbC14cyB0ZXh0LW11dGVkXCI+U2VsZWN0IGNvdW50ZXI8L2xhYmVsPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLmNvdW50ZXJEZWZJZCBzaXplPVwiXFwnc21hbGxcXCdcIiBzZWxlY3RlZC1pdGVtcz1mZC5QYXJhbWV0ZXJzLmNvdW50ZXJEZWZJZCBuZy1pZj1mZC5sb2NhbFZhcnMuY291bnRlcnNMb2FkZWQgb24tc2VsZWN0LWZuPWZkLmxvY2FsVmFycy5vblNlbGVjdENvdW50ZXJDYWxsYmFjayhpdGVtLG1vZGVsKSBpcy1tdWx0aXBsZT1mYWxzZSBuYW1lPXNlbGVjdGVkQ291bnRlcnt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1yZXF1aXJlZD1mZC5QYXJhbWV0ZXJzLlVzZUNvdW50ZXIgZHJvcGRvd24taXRlbXM9ZmQubG9jYWxWYXJzLmNvdW50ZXJMaXN0IGRyb3Bkb3duLWlkPVwiXFwnc2VsZWN0ZWRDb3VudGVyXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgcGFyZW50LWZvcm0taWQ9XCJcXCdzZWxlY3RlZENvdW50ZXJcXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCBjb3VudGVyIHJlc291cmNlXFwnXCI+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLWNoZWNrYm94XCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgaWQ9Y2JHZXRDb3VudGVye3tmZC5VVWlkUmVmfX0gbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5HZXRDb3VudGVyUmVjb3JkPiA8bGFiZWwgY2xhc3M9XCJjdXN0b20tY29udHJvbC1sYWJlbCBsYWJlbC14c1wiIGZvcj1jYkdldENvdW50ZXJ7e2ZkLlVVaWRSZWZ9fT5HZXQgY291bnRlciByZWNvcmQ8L2xhYmVsPjwvZGl2PjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5Db3VudGVyIGtleTwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5Db3VudGVyS2V5PjwvZGl2PjxkaXYga3QtZmllbGQtZXh0ZW5kZWQtcHJvcGVydGllcz48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RPdXRjb21lQWN0aW9ucy5odG1sJywnPGRpdiBjbGFzcz1weC0yPjxkaXYgaWQ9b3V0Y29tZXNEcmFndWxhIGNsYXNzPVwibGlzdCBncm91cFwiIGRyYWd1bGEtc2NvcGU9JHJvb3QgZHJhZ3VsYT1cIlxcJ2JhZy1vdXRjb21lc1xcJ1wiIGRyYWd1bGEtbW9kZWw9YWN0aW9ucyBuZy1tb2RlbD1hY3Rpb25zPjxkaXYgbmctcmVwZWF0PVwiYWN0aW9uIGluIGFjdGlvbnMgdHJhY2sgYnkgJGluZGV4XCIgY2xhc3M9bGlzdC1jb21wb25lbnQtbGlicmFyeT48ZGl2IHN0eWxlPVwiYm9yZGVyOiAycHggc29saWQgZ3JheTtcIiBjbGFzcz1cImVsZW1lbnQtZHJhZy1oYW5kbGUgaXRlbSBtYi0xXCIgaHJlZj48c3BhbiBjbGFzcz1cImVsZW1lbnQtZHJhZy1oYW5kbGUgdGV4dC1wcmltYXJ5XCI+PGkgY2xhc3M9XCJlbGVtZW50LWRyYWctaGFuZGxlIGZhcyBmYS1ncmlwLXZlcnRpY2FsIG1yLTFcIj48L2k+IHt7YWN0aW9uLm5hbWUxfX08L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0T3V0Y29tZURlZkxpc3QuaHRtbCcsJzxkaXYgbmctaW5pdD1cImxvY2FsVmFycy5lZGl0T3V0Y29tZT1mYWxzZVwiIGlkPWt0T3V0Y29tZURlZkxpc3QgY2xhc3M9dy0xMDA+PGRpdiBuZy1pZj1mYWxzZSBjbGFzcz48bGFiZWwgbmctc2hvdz10YXNrLkluZmluaXRlVGFzayB0aXRsZT1cIlVzdWFsbHkgdXNlZCBmb3IgcmVwZWF0aW5nIHRhc2tzIGxpa2UgcmVwb3J0cyBhbmQgbGlzdHMgb2YgZGF0YXNldCByZWNvcmRzIHdpdGggYSBzZWFyY2ggZnVuY3Rpb25hbGl0eVwiIGNsYXNzPVwicC00IGZvcm0tY2hlY2stbGFiZWwgdGV4dC1tdXRlZFwiIGZvcj1jaGVjazQ+VGFzayBoYXMgbm8gb3V0Y29tZXMgKHRhc2sgY2FuIG5ldmVyIGJlIGNvbXBsZXRlZCk8L2xhYmVsPjwvZGl2PjxzdHlsZT5cXG4gICAgbGkgPiAuc2hvd09uSG92ZXIge1xcbiAgICAgICAgdmlzaWJpbGl0eTpoaWRkZW5cXG4gICAgfVxcbiAgICBcXG4gICAgbGk6aG92ZXIgPiAuc2hvd09uSG92ZXIge1xcbiAgICAgICAgdmlzaWJpbGl0eTp2aXNpYmxlXFxuICAgIH1cXG4gICAgXFxuICAgICBsaS5zaGFkb3dPbkhvdmVyIHtcXG4gICAgICAgIGJveC1zaGFkb3c6IDJweCAycHggMnB4IDJweCAjMDAwMDAwNGEgIWltcG9ydGFudDtcXG4gICAgfVxcbiAgICBcXG4gICAgbGk6aG92ZXIuc2hhZG93T25Ib3ZlciB7XFxuICAgICAgICBib3gtc2hhZG93OiAzcHggM3B4IDRweCAycHggIzAwMDAwMDZhICFpbXBvcnRhbnQ7XFxuICAgIH1cXG4gICAgXFxuICAgIDwvc3R5bGU+PGRpdiBpZD1saXN0X29mX291dGNvbWVzIGNsYXNzPjx1bCBjbGFzcz1cIm5hdiBzaW1wbGUtdGFicyBtYi0yIHBiLTJcIiBpZD1teVRhYiByb2xlPXRhYmxpc3Q+PGxpIGlkPXphZ2xhdmxqZSBjbGFzcz1cInJvdyBteC0yIG1iLTIgdy0xMDAgZC1mbGV4IG5hdi1pdGVtXCI+PGRpdiBjbGFzcz1cImNvbC0xIHRleHQtY2VudGVyXCI+PGI+PGxhYmVsPjwvbGFiZWw+PC9iPjwvZGl2PjxkaXYgY2xhc3M9Y29sLTk+PGI+PGxhYmVsPk91dGNvbWUgZGlzcGxheSBuYW1lPC9sYWJlbD48L2I+PC9kaXY+PGRpdiBjbGFzcz1jb2wtOT48Yj48bGFiZWw+T3V0Y29tZSB2YWx1ZTwvbGFiZWw+PC9iPjwvZGl2PjxkaXYgY2xhc3M9Y29sLTM+PGI+PGxhYmVsPkVkaXQ8L2xhYmVsPjwvYj48L2Rpdj48L2xpPjxsaT48L2xpPjxsaSBuZy1yZXBlYXQ9XCJvdXRjb21lIGluIGxvY2FsVmFycy5vdXRjb21lcyB0cmFjayBieSAkaW5kZXhcIiBjbGFzcz1cInJvdyBzaGFkb3dPbkhvdmVyIHB5LTMgbS0yIHctMTAwIG5hdi1pdGVtXCI+PGRpdiBjbGFzcz1jb2wtMT48ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgY3VzdG9tLWNvbnRyb2wgY3VzdG9tLWNoZWNrYm94XCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJjdXN0b20tY29udHJvbC1pbnB1dCBuZy1wcmlzdGluZSBuZy11bnRvdWNoZWQgbmctdmFsaWQgbmctZW1wdHlcIiBpZD1zZWxlY3RPdXRjb21le3skaW5kZXh9fSBuZy1tb2RlbD1sb2NhbFZhcnMuaXNTZWxlY3RlZFtsb2NhbFZhcnMuc2VsZWN0ZWRCdXR0b25JbmRleF1bJGluZGV4XSBuZy1jaGFuZ2U9bG9jYWxWYXJzLnByb21qZW5pb091dGNvbWUoJGluZGV4LGxvY2FsVmFycy5pc1NlbGVjdGVkKT4gPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgbGFiZWwteHNcIiBmb3I9c2VsZWN0T3V0Y29tZXt7JGluZGV4fX0+LjwvbGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb2wtOT48aW5wdXQgbmctZGlzYWJsZWQ9XCJsb2NhbFZhcnMuc2VsZWN0ZWRCdXR0b24ub3V0Y29tZSE9b3V0Y29tZVwiIHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1vdXRjb21lLm5hbWUxPjwvZGl2PjxkaXYgY2xhc3M9Y29sLTk+PGlucHV0IG5nLWRpc2FibGVkPVwibG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uLm91dGNvbWUhPW91dGNvbWVcIiB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9b3V0Y29tZS5vdXRjb21lTmFtZT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTMgeHNob3dPbkhvdmVyXCI+PGJ1dHRvbiBzdHlsZT1wb3NpdGlvbjphYnNvbHV0ZSBpZD1sb2NrZWQgbmctc2hvdz1cImVkaXRPdXRjb21lICE9IHRydWVcIiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cImxvY2FsVmFycy5zZWxlY3RlZEJ1dHRvbi5vdXRjb21lPW91dGNvbWU7IGVkaXRPdXRjb21lID0gdHJ1ZVwiIGNsYXNzPVwiYnRuIHAtMSBidG4teHMgYnRuLWluZm9cIj48c3Bhbj48aSBjbGFzcz1cImZhcyBmYS1sb2NrXCI+PC9pPjwvc3Bhbj48L2J1dHRvbj4gPGJ1dHRvbiBzdHlsZT1wb3NpdGlvbjphYnNvbHV0ZSBpZD11bmxvY2tlZCBuZy1zaG93PVwiZWRpdE91dGNvbWUgPT0gdHJ1ZVwiIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwibG9jYWxWYXJzLnNlbGVjdGVkQnV0dG9uLm91dGNvbWU9bnVsbDsgZWRpdE91dGNvbWUgPSBmYWxzZVwiIGNsYXNzPVwiYnRuIHAtMSBidG4teHMgYnRuLWRhbmdlclwiPjxzcGFuPjxpIGNsYXNzPVwiZmFzIGZhLWxvY2stb3BlblwiPjwvaT48L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0yIHhzaG93T25Ib3ZlclwiPjxidXR0b24gaWQ9dHJhc2ggdHlwZT1idXR0b24gbmctY2xpY2s9bG9jYWxWYXJzLm91dGNvbWVzLnNwbGljZSgkaW5kZXgsMSkgY2xhc3M9XCJidG4gcC0xIGJ0bi14c1wiPjxzcGFuPjxpIGNsYXNzPVwiZmEgZmEtdHJhc2hcIj48L2k+PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgaWQ9T1VUQ09NRV9BQ1RJT05TIGNsYXNzPVwidy0xMDAgcm93IGNvbC0yNFwiIG5nLWlmPWVkaXRPdXRjb21lPjxkaXYgY2xhc3M9Y29sLTE+LjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgcC0wXCI+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9XCJib2xkIG0tM1wiPk91dGNvbWUgQWN0aW9uczwvbGFiZWw+PC9kaXY+PGRpdiBuZy1pZj0hbG9hZGluZ0FjdGlvbnM+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPWNvbC0xMD48ZGl2IGNsYXNzPWl0ZW0+PGRpdiBrdC1vdXRjb21lLWFjdGlvbnM+PC9kaXY+PGRpdiBjbGFzcz1cInNtYWxsIHAtMiB0ZXh0LWNlbnRlclwiPkRyYWcgYWN0aW9ucyBmcm9tIGhlcmU8L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbD48ZGl2IGNsYXNzPjx1bCBjbGFzcz1cInAtMiBiZy1ncmF5LTUwXCIgbmctY2xhc3M9XCJ7XFwnbWluMTBcXCcgOiBvdXRjb21lLmFjdGlvbnMubGVuZ3RoPT0wfVwiIGRyYWd1bGEtc2NvcGU9JHJvb3QgZHJhZ3VsYT1cIlxcJ2JhZy1vdXRjb21lc1xcJ1wiIGRyYWd1bGEtbW9kZWw9b3V0Y29tZS5hY3Rpb25zIG5nLW1vZGVsPW91dGNvbWUuYWN0aW9ucz48bGkgbmctaWY9XCJvdXRjb21lLmFjdGlvbnMubGVuZ3RoPT0wXCI+PGRpdiBjbGFzcz1tdC00PjxpIGNsYXNzPVwiZmFyIGZhLTJ4IGZhLWhhbmQtcG9pbnQtdXBcIj48L2k+PC9kaXY+PC9saT48bGkgbmctcmVwZWF0PVwiYWN0IGluIG91dGNvbWUuYWN0aW9ucyB0cmFjayBieSAkaW5kZXhcIiBjbGFzcz1cImNhcmQgbWItMVwiPjxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBwLTAgYmctbGlnaHRcIj48YSBocmVmIHRpdGxlPVwiU29ydCBhY3Rpb25cIj48ZGl2IGNsYXNzPVwic21hbGwgcC0xIGVsZW1lbnQtZHJhZy1oYW5kbGUgcGItMCBkLWlubGluZSBiZy1kYXJrIHRleHQtd2hpdGVcIj5BY3Rpb24ge3skaW5kZXgrMX19IDxpIGNsYXNzPVwiZmFzIGZhLWdyaXAtdmVydGljYWwgZWxlbWVudC1kcmFnLWhhbmRsZSB0ZXh0LXByaW1hcnkgbWwtMVwiPjwvaT48L2Rpdj48L2E+IDxhIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tb3V0bGluZS1kYW5nZXIgYm9yZGVyLTAgZmxvYXQtcmlnaHRcIiBocmVmIHRpdGxlPVwiUmVtb3ZlIGFjdGlvblwiIG5nLWNsaWNrPXJlbW92ZUFjdGlvbigkaW5kZXgpPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+PC9hPjwvZGl2PjxkaXYgbmctc3dpdGNoPWFjdC50eXBlIGNsYXNzPVwiYm9yZGVyIGJvcmRlci1kYXJrXCI+PGRpdiBuZy1zd2l0Y2gtd2hlbj0xIGt0LWFjdGlvbi1pbml0aWF0ZS10YXNrPjwvZGl2PjxkaXYgbmctc3dpdGNoLXdoZW49MiBrdC1hY3Rpb24taW5pdGlhdGUtdGFzaz48L2Rpdj48L2Rpdj48L2xpPjwvdWw+PGRpdiBjbGFzcz1cInNtYWxsIHRleHQtY2VudGVyXCI+RHJvcCBBY3Rpb25zIG9uIGNhbnZhcyBiZWxsb3c8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2xpPjwvdWw+PC9kaXY+PGRpdiBuZy1pZj1cImxvY2FsVmFycy5zZWxlY3RlZE91dGNvbWVJbmRleCA9PSBudWxsIHx8IGxvY2FsVmFycy5zZWxlY3RlZE91dGNvbWVJbmRleCA9PSB1bmRlZmluZWRcIiBpZD1ERVRBSUxTIGNsYXNzPWNvbD48ZGl2IG5nLWNsaWNrPWFkZE91dGNvbWVJdGVtKCk7IHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiIGNsYXNzPVwidGV4dC1jZW50ZXIgbWItM1wiPjxpIGNsYXNzPVwiZmFzIGZhLWxnIGZhLXBsdXNcIj48L2k+PC9kaXY+PHVsIGNsYXNzPVwibmF2IHNpbXBsZS10YWJzIG1iLTNcIiBpZD1teVRhYiByb2xlPXRhYmxpc3Q+PC91bD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicC0xIG15LTJcIiBuZy1pZj1sb2NhbFZhcnMuZWRpdE91dGNvbWU+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0UGFnZUZvcm0uaHRtbCcsJzxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC0zIGJvcmRlci1yaWdodCBib3JkZXItcHJpbWFyeVwiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLXByaW1hcnkgcm91bmRlZCBzaGFkb3dcIj48Zm9ybSBuZy1zdWJtaXQ9c2F2ZUZvcm0oZm9ybS5EZXNjcmlwdGlvbi4kdmFsaWQpIG5hbWU9Zm9ybSBjbGFzcz1cImZvcm0taG9yaXpvbnRhbCBweS0xXCIgbmctY2xhc3M9XCJ7XFwnZWRpdC1tb2RlXFwnOnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MX1cIiByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2IGNsYXNzPVwibS0wIHAtMSBib3JkZXItYm90dG9tIGJnLXdoaXRlXCIgaWQ9dGFza1Rvb2xib3hJZCBuZy1zdHlsZT1cIihyZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgfHwgcmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0zIHx8IHJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09NCkgJiYgZ3NydmMuZ2V0VG9wRm9yU3RpY2t5KDApXCIgbmctY2xhc3M9XCJ7XFwnZm9ybS1idG5zLXRvcCBwb3NpdGlvbi1zdGlja3lcXCc6cmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xIHx8IHJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MyB8fCByZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTR9XCI+PGRpdiBjbGFzcz1yb3c+PGRpdiBjbGFzcz1jb2w+PHVsIGNsYXNzPVwibmF2IG5hdi10YWJzIHNpbXBsZS10YWJzIGJvcmRlci0wIG14LTRcIiBpZD1teVRhYiByb2xlPXRhYmxpc3Q+PGxpIGNsYXNzPW5hdi1pdGVtPjxhIGNsYXNzPW5hdi1saW5rIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpyZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTF9XCIgaWQ9YnVpbGQtdGFiIGhyZWYgZGF0YS10b2dnbGU9dGFiIG5nLWNsaWNrPVNob3dGb3JtVmlldygxLGZhbHNlKSByb2xlPXRhYiBhcmlhLWNvbnRyb2xzPWJ1aWxkIGFyaWEtc2VsZWN0ZWQ9ZmFsc2U+QnVpbGQgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodCBtbC0yIHRleHQtcHJpbWFyeVwiPkN0cmwrQjwvc3Bhbj48L2E+PC9saT48bGkgY2xhc3M9bmF2LWl0ZW0+PGEgY2xhc3M9bmF2LWxpbmsgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MyB8fCByZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTR9XCIgaWQ9bGF5b3V0LXRhYiBocmVmIGRhdGEtdG9nZ2xlPXRhYiBuZy1jbGljaz1TaG93Rm9ybVZpZXcoNCkgcm9sZT10YWIgYXJpYS1jb250cm9scz1sYXlvdXQgYXJpYS1zZWxlY3RlZD1mYWxzZT48aSBjbGFzcz1cImZhIGZhLXRoLWxhcmdlIG1yLTFcIj48L2k+IEFycmFuZ2UgbGF5b3V0IDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQgbWwtMiB0ZXh0LXByaW1hcnlcIj5DdHJsK0w8L3NwYW4+PC9hPjwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXItM1wiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9XCJzaG93TW9kYWwoXFwnc2F2ZVxcJylcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIj48aSBjbGFzcz1cImZhIGZhLXNhdmUgbXItMVwiPjwvaT4gPHNwYW4+U2F2ZSBjaGFuZ2VzPC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbCBwLTBcIj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJwLTAgY29sLTI0IGNvbGxhcHNlXCIgbmctY2xhc3M9XCJ7XFwnYnVpbGQtbW9kZVxcJzpyZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgfHwgcmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0zIHx8IHJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09NCxcXCdzaG93XFwnOiFnc3J2Yy5nZXRUYXNrTG9hZGVkSW5QbGFjZWhvbGRlcigpfVwiPjxkaXYga3QtZ3JpZCBuZy1pZj1cImZvcm1Mb2FkZWQgJiYgIXNhdmluZ0Zvcm1cIiBjbGFzcz1rdEdyaWQgZ3JpZC10eXBlPWdyaWRzdGVyVHlwZSByZXNvdXJjZS1mb3JtLWxvYWRlZD1mb3JtTG9hZGVkIGZvcm0tcGFyYW1zPXJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zIGZvcm0tZGF0YSBwYXJlbnQ9ZGFzaGJvYXJkIGFsbC1jb2x1bW5zPWRhc2hib2FyZC53aWRnZXRzIHJlc291cmNlLWRlZmluaXRpb249cmVzb3VyY2VEZWZpbml0aW9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJtb2RhbCBmYWRlIGJkLWV4YW1wbGUtbW9kYWwtbGdcIiBpZD1wYWdlUHVibGlzaCB0YWJpbmRleD0tMSByb2xlPWRpYWxvZyBhcmlhLWxhYmVsbGVkYnk9cGFnZVB1Ymxpc2ggYXJpYS1oaWRkZW49dHJ1ZT48ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLXhsXCIgcm9sZT1kb2N1bWVudD48ZGl2IGNsYXNzPW1vZGFsLWNvbnRlbnQ+PGRpdiBjbGFzcz1tb2RhbC1oZWFkZXI+PHNwYW4gY2xhc3M9XCJmYSBmYS1sZyBmYS1kYXRhYmFzZSBtLTJcIj48L3NwYW4+PGg1IGNsYXNzPW1vZGFsLXRpdGxlPnt7cmVzb3VyY2VEZWZpbml0aW9uLlJlc291cmNlTmFtZX19IDxiPnt7cmVzb3VyY2VEZWZpbml0aW9uLk5hbWV9fTwvYj48L2g1PjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9Y2xvc2UgZGF0YS1kaXNtaXNzPW1vZGFsIGFyaWEtbGFiZWw9Q2xvc2U+PHNwYW4gYXJpYS1oaWRkZW49dHJ1ZT4mdGltZXM7PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wIG1vZGFsLWJvZHlcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTggcC0wXCI+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiBmb3JtLklkLiR0b3VjaGVkICYmIGZvcm0uSWQuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtbGctMjQgZm9yPUlkPklkPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1sZy0yND48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPXJlc291cmNlRGVmaW5pdGlvbi5pZCBuZy1kaXNhYmxlZD10cnVlIG5nLXJlcXVpcmVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPUlkIG5hbWU9SWQgcGxhY2Vob2xkZXI9SWQ+PHAgbmctc2hvdz1cImZvcm0uSWQuJHRvdWNoZWQgJiYgZm9ybS5JZC4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIgcmVzb3VyY2UgSWQ8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiBmb3JtLlZlcnNpb24uJHRvdWNoZWQgJiYgZm9ybS5WZXJzaW9uLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTI0IGZvcj1WZXJzaW9uPlZlcnNpb248L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxpbnB1dCB0eXBlPXRleHQgbmctZGlzYWJsZWQ9dHJ1ZSBuZy1tb2RlbD1uZXdQdWJsaXNoVmVyc2lvbiBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1WZXJzaW9uIG5hbWU9VmVyc2lvbiBwbGFjZWhvbGRlcj1cIlJlc291cmNlIFZlcnNpb25cIj48cCBuZy1zaG93PVwiKGZvcm0uVmVyc2lvbi4kdG91Y2hlZCkgJiYgZm9ybS5WZXJzaW9uLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5FbnRlciByZXNvdXJjZSBWZXJzaW9uPC9wPjwvZGl2PjwvZGl2PjxkaXY+PGRpdiBjbGFzcz1tLTI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cIm1vZGFsQWN0aW9uPT1cXCdzYXZlXFwnXCIgY2xhc3M9XCJjb2wtbGctMTYgcC0wXCI+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlclxcJyA6IGZvcm0uRGVzY3JpcHRpb24uJHRvdWNoZWQgJiYgZm9ybS5EZXNjcmlwdGlvbi4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1sZy0yNCBmb3I9RGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTI0Pjx0ZXh0YXJlYSBuZy1tb2RlbD1sb2NhbFZhcnMubmV3RGVzY3JpcHRpb24gbmFtZT1EZXNjcmlwdGlvbiBuZy1yZXF1aXJlZD10cnVlIG5nLW1pbi1sZW5ndGg9MTAgbmctY2xhc3M9XCJ7IFxcJ2JvcmRlci1kYW5nZXJcXCcgOiBmb3JtLkRlc2NyaXB0aW9uLiR0b3VjaGVkICYmIGZvcm0uRGVzY3JpcHRpb24uJGludmFsaWQgfVwiIGNsYXNzPWZvcm0tY29udHJvbD48L3RleHRhcmVhPjxwIG5nLXNob3c9XCIoIGZvcm0uRGVzY3JpcHRpb24uJHRvdWNoZWQpICYmIGZvcm0uRGVzY3JpcHRpb24uJGludmFsaWRcIiBjbGFzcz1cInNtYWxsIHRleHQtZGFuZ2VyXCI+RW50ZXIgcmVzb3VyY2UgZGVzY3JpcHRpb24gKG1pbiAxMCBjaGFycyk8L3A+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIkRFUExPWSB3LTEwMFwiPjxkaXYgY2xhc3M9XCJib3JkZXItdG9wIG0tM1wiPjxkaXYgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCIgY2xhc3M9XCJwLTEgcm93IG14LTFcIiBuZy1jbGljaz1cImlzQ29sbGFwc2VkVmVySGlzdG9yeSA9ICFpc0NvbGxhcHNlZFZlckhpc3RvcnlcIj48c3BhbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gcC0xXCI+PHNwYW4gbmctY2xhc3M9XCJ7XFwnZmFzIGZhLWNoZXZyb24tZG93blxcJzogIWlzQ29sbGFwc2VkVmVySGlzdG9yeSxcXCdmYXMgZmEtY2hldnJvbi1yaWdodFxcJzogaXNDb2xsYXBzZWRWZXJIaXN0b3J5IH1cIj48L3NwYW4+PC9zcGFuPiA8c3BhbiBjbGFzcz10YWc+VkVSU0lPTiBISVNUT1JZPC9zcGFuPjwvZGl2PjxkaXYgdWliLWNvbGxhcHNlPWlzQ29sbGFwc2VkVmVySGlzdG9yeT48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHAtMFwiPjxkaXYgbmctaWY9cHVibGlzaGVkUmVzb3VyY2VzLmxlbmd0aCBjbGFzcz1wLTE+PGRpdiBuZy1yZXBlYXQ9XCJlbGVtZW50IGluIHB1Ymxpc2hlZFJlc291cmNlcyB0cmFjayBieSBlbGVtZW50LmlkXCI+PGRpdiBuZy1pZj1cIiRpbmRleD09MFwiIGNsYXNzPVwicm93IG0tMCBib2xkIHRleHQtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTQgbXktMSBib3JkZXItYm90dG9tXCI+PHNwYW4gY2xhc3M9XCJcIj5QdWJsaXNoIGlkPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctNCBteS0xIGJvcmRlci1ib3R0b21cIj48c3BhbiBjbGFzcz5WZXJzaW9uPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMTAgbXktMSBib3JkZXItYm90dG9tXCI+PHNwYW4gY2xhc3M+RGVzY3JpcHRpb248L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTAgaXRlbSB0ZXh0LWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+PGRpdiBjbGFzcz1cImNvbC1sZy00IG15LTFcIj48c3Bhbj57e2VsZW1lbnQuaWR9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTQgbXktMVwiPjxzcGFuPnt7ZWxlbWVudC5WZXJzaW9ufX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0xMCBteS0xXCI+PHNwYW4+e3tlbGVtZW50LkRlc2NyaXB0aW9ufX08L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cIm1vZGFsQWN0aW9uPT1cXCd2ZXJzaW9uXFwnICYmIHJlc291cmNlRGVmaW5pdGlvbi5WZXJzaW9uPT1yZXNvdXJjZURlZmluaXRpb24uTmV3VmVyc2lvblwiIGNsYXNzPVwiaDUgdGV4dC1jZW50ZXJcIj5WZXJzaW9uIHt7cmVzb3VyY2VEZWZpbml0aW9uLlZlcnNpb259fSB3aWxsIGJlIGZpbmFsaXNlZCBhbmQgbG9ja2VkIGZvciBjaGFuZ2VzITwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJtLTIgdGV4dC1jZW50ZXIgY29sLTI0XCI+PGJ1dHRvbiBuZy1pZj1cIm1vZGFsQWN0aW9uPT1cXCdzYXZlXFwnXCIgbmctZGlzYWJsZWQ9c2F2aW5nRm9ybSBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBidG4tbGdcIiB0eXBlPXN1Ym1pdD48aSBuZy1pZj0hc2F2aW5nRm9ybSBjbGFzcz1cImZhIGZhLXNhdmUgbXItMlwiPjwvaT4gPGkgbmctaWY9c2F2aW5nRm9ybSBjbGFzcz1cImZhcyBmYS1zcGlubmVyIGZhLXNwaW4gbXItMVwiPjwvaT4gPHNwYW4gbmctaWY9c2F2aW5nRm9ybT5TYXZpbmcuLi48L3NwYW4+IDxzcGFuIG5nLWlmPSFzYXZpbmdGb3JtPlNhdmUgZm9ybTwvc3Bhbj48L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1pZj1cIm1vZGFsQWN0aW9uPT1cXCd2ZXJzaW9uXFwnICYmIHJlc291cmNlRGVmaW5pdGlvbi5WZXJzaW9uPT1yZXNvdXJjZURlZmluaXRpb24uTmV3VmVyc2lvblwiIG5nLWNsaWNrPW5ld1ZlcnNpb24oKSBuZy1kaXNhYmxlZD1jcmVhdGluZ05ld1ZlcnNpb24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pbmZvIG1yLTJcIj48aSBuZy1pZj0hY3JlYXRpbmdOZXdWZXJzaW9uIGNsYXNzPVwiZmEgZmEtY29kZS1icmFuY2ggbXItMVwiPjwvaT4gPGkgbmctaWY9Y3JlYXRpbmdOZXdWZXJzaW9uIGNsYXNzPVwiZmFzIGZhLXNwaW5uZXIgZmEtc3BpbiBtci0xXCI+PC9pPiA8c3BhbiBuZy1pZj1jcmVhdGluZ05ld1ZlcnNpb24+RmluYWxpc2luZyB2ZXJzaW9uIHt7cmVzb3VyY2VEZWZpbml0aW9uLlZlcnNpb259fS4uLjwvc3Bhbj4gPHNwYW4gbmctaWY9IWNyZWF0aW5nTmV3VmVyc2lvbj5GaW5hbGlzZSB2ZXJzaW9uIHt7cmVzb3VyY2VEZWZpbml0aW9uLlZlcnNpb259fTwvc3Bhbj48L2J1dHRvbj48ZGl2IGNsYXNzPVwiaDYgdGV4dC1jZW50ZXIgdGV4dC1zdWNjZXNzXCIgbmctaWY9XCJyZXNvdXJjZURlZmluaXRpb24uVmVyc2lvbiE9cmVzb3VyY2VEZWZpbml0aW9uLk5ld1ZlcnNpb24gJiYgbW9kYWxBY3Rpb249PVxcJ3ZlcnNpb25cXCdcIj48aSBjbGFzcz1cImZhIGZhLWNoZWNrLWNpcmNsZSBtci0yXCI+PC9pPlZlcnNpb24ge3tyZXNvdXJjZURlZmluaXRpb24uTmV3VmVyc2lvbn19LiBjcmVhdGVkIHN1Y2Nlc3NmdWx5ITwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9ybT48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RQYWdlRm9ybUxheW91dC5odG1sJywnPGRpdj48dWwgY2xhc3M9XCJmb3JtLWNvbnRhaW5lciBtYi0wXCIgbmctY2xhc3M9XCJ7XFwnbWluMTBcXCcgOiBpbnB1dEFycmF5LmxheW91dC5sZW5ndGg9PTAgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPTJ9XCIgZHJhZ3VsYT1cIlxcJ2JhZy1wYWdlXFwnXCIgZHJhZ3VsYS1zY29wZT0kcm9vdCBkcmFndWxhLW1vZGVsPWlucHV0QXJyYXkubGF5b3V0IG5nLW1vZGVsPWlucHV0QXJyYXkubGF5b3V0PjxsaSBuZy1pZj1cIihpbnB1dEFycmF5LmxheW91dC5sZW5ndGg9PTAgfHwgaW5wdXRBcnJheS5jb3VudEFjdGl2ZT09MCkgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTJcIiBjbGFzcz1cInRhZyBtdC0xIHAtMiBkLWlubGluZS1ibG9ja1wiPkRyb3AgaGVyZTwvbGk+PGxpIG5nLXJlcGVhdD1cImZkIGluIGlucHV0QXJyYXkubGF5b3V0XCI+PGRpdiBuZy1zaG93PVwiZmQuU3RhdHVzPT1cXCdBY3RpdmVcXCdcIiBuZy1zd2l0Y2g9ZmQuRWxlbWVudFR5cGU+PGRpdiBuZy1zd2l0Y2gtd2hlbj1nY29sIGt0LWdyaWQtY29sdW1uIGdyaWQtdHlwZT1ncmlkVHlwZSByZXNvdXJjZS1mb3JtLWxvYWRlZD1yZXNvdXJjZUZvcm1Mb2FkZWQgcGFyZW50LXJlc291cmNlLWRlZi1pZD1wYXJlbnRSZXNvdXJjZURlZklkIHJlc291cmNlLXJlY29yZC1pZD1yZXNvdXJjZVJlY29yZElkIHJlc291cmNlLWRlZmluaXRpb249cmVzb3VyY2VEZWZpbml0aW9uIGlucHV0LWFycmF5PWZkIHBhcmFtcz1wYXJhbXMgZm9ybS1wYXJhbXM9Zm9ybVBhcmFtcyBmb3JtLXBhcmFtcy1wYXJlbnQ9Zm9ybVBhcmFtc1BhcmVudCBmb3JtLWRhdGE9Zm9ybURhdGEgcGFyZW50PWlucHV0QXJyYXkgY2xhc3M9XCJub0hvcml6b250YWxQYWRkaW5nIGNvbC1sZy17e2ZkLlNpemVYfX0gY29sLW1kLXt7ZmQuUGFyYW1ldGVycy5TaXplWE1kfX0gY29sLXNtLXt7ZmQuUGFyYW1ldGVycy5TaXplWFNtfX0gY29sLXt7ZmQuUGFyYW1ldGVycy5TaXplWFhzfX1cIiBhbGwtY29sdW1ucz1hbGxDb2x1bW5zPjwvZGl2PjxkaXYgbmctc3dpdGNoLXdoZW49cm93IGt0LWdyaWQtcm93IGdyaWQtdHlwZT1ncmlkVHlwZSByb3c9ZmQgcmVzb3VyY2UtZm9ybS1sb2FkZWQ9cmVzb3VyY2VGb3JtTG9hZGVkIHNob3ctc2VhcmNoLWZpbHRlcnM9c2hvd1NlYXJjaEZpbHRlcnMgcGFyYW1zPXBhcmFtcyBwYXJlbnQtcmVzb3VyY2UtZGVmLWlkPXBhcmVudFJlc291cmNlRGVmSWQgcmVzb3VyY2UtcmVjb3JkLWlkPXJlc291cmNlUmVjb3JkSWQgcmVzb3VyY2UtZGVmaW5pdGlvbj1yZXNvdXJjZURlZmluaXRpb24gZm9ybS1wYXJhbXM9Zm9ybVBhcmFtcyBmb3JtLXBhcmFtcy1wYXJlbnQ9Zm9ybVBhcmFtc1BhcmVudCBmb3JtLWRhdGE9Zm9ybURhdGEgcGFyZW50PWlucHV0QXJyYXkgYWxsLXJvd3M9YWxsQ29sdW1ucz48L2Rpdj48ZGl2IG5nLXN3aXRjaC13aGVuPWdyaWQga3QtZ3JpZD48L2Rpdj48ZGl2IG5nLXN3aXRjaC1kZWZhdWx0IGt0LWZvcm0tZmllbGQtZ2VuZXJhdG9yPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmZC5TdGF0dXM9PVxcJ0RlbGV0ZWRcXCdcIiBuZy1zd2l0Y2g9ZmQuRWxlbWVudFR5cGU+PGRpdiBjbGFzcz1cImJvcmRlciBweC0xIG0tMSBzaGFkb3ctc20gYmctbGlnaHRcIj57e2ZkLk5hbWV9fSB7eyBmZC5QcmVzZW50YXRpb25JZD8gXFwnKFxcJyArIGZkLlByZXNlbnRhdGlvbklkICsgXFwnKVxcJyA6IFxcJ1xcJyB9fTxzcGFuIGNsYXNzPVwiYm9sZCB0ZXh0LWRhbmdlclwiPmRlbGV0ZWQhPC9zcGFuPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4td2FybmluZyBtbC00XCIgdGl0bGU9Q2FuY2VsIG5nLWNsaWNrPXVuZG9EZWxldGUoJGluZGV4KT5VbmRvIGRlbGV0ZTwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvbGk+PC91bD48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RQYWdlRm9ybUxheW91dEV4ZS5odG1sJywnPGRpdj48dWwgY2xhc3M9XCJmb3JtLWNvbnRhaW5lciBtYi0wXCI+PGxpIG5nLXJlcGVhdD1cImZkIGluIGlucHV0QXJyYXkubGF5b3V0XCIgbmctaWY9XCJmZC5TdGF0dXM9PVxcJ0FjdGl2ZVxcJ1wiPjxkaXYgbmctc3dpdGNoPTo6ZmQuRWxlbWVudFR5cGU+PGRpdiBuZy1zd2l0Y2gtd2hlbj1nY29sIGt0LWdyaWQtY29sdW1uIGdyaWQtdHlwZT06OmdyaWRUeXBlIHJlc291cmNlLWZvcm0tbG9hZGVkPTo6cmVzb3VyY2VGb3JtTG9hZGVkIHBhcmVudC1yZXNvdXJjZS1kZWYtaWQ9OjpwYXJlbnRSZXNvdXJjZURlZklkIHJlc291cmNlLXJlY29yZC1pZD06OnJlc291cmNlUmVjb3JkSWQgcmVzb3VyY2UtZGVmaW5pdGlvbj06OnJlc291cmNlRGVmaW5pdGlvbiBpbnB1dC1hcnJheT06OmZkIHBhcmFtcz06OnBhcmFtcyBwYXJlbnQtd2lkZ2V0PXBhcmVudFdpZGdldCBmb3JtLXBhcmFtcz06OmZvcm1QYXJhbXMgZm9ybS1wYXJhbXMtcGFyZW50PTo6Zm9ybVBhcmFtc1BhcmVudCBmb3JtLWRhdGE9Ojpmb3JtRGF0YSBwYXJlbnQ9OjppbnB1dEFycmF5IGNsYXNzPVwibm9Ib3Jpem9udGFsUGFkZGluZyBjb2wtbGcte3s6OmZkLlNpemVYfX0gY29sLW1kLXt7OjpmZC5QYXJhbWV0ZXJzLlNpemVYTWR9fSBjb2wtc20te3s6OmZkLlBhcmFtZXRlcnMuU2l6ZVhTbX19IGNvbC17ezo6ZmQuUGFyYW1ldGVycy5TaXplWFhzfX1cIiBhbGwtY29sdW1ucz06OmFsbENvbHVtbnM+PC9kaXY+PGRpdiBuZy1zd2l0Y2gtd2hlbj1yb3cga3QtZ3JpZC1yb3cgZ3JpZC10eXBlPTo6Z3JpZFR5cGUgcm93PTo6ZmQgcmVzb3VyY2UtZm9ybS1sb2FkZWQ9OjpyZXNvdXJjZUZvcm1Mb2FkZWQgc2hvdy1zZWFyY2gtZmlsdGVycz06OnNob3dTZWFyY2hGaWx0ZXJzIHBhcmFtcz06OnBhcmFtcyBwYXJlbnQtd2lkZ2V0PXBhcmVudFdpZGdldCBwYXJlbnQtcmVzb3VyY2UtZGVmLWlkPTo6cGFyZW50UmVzb3VyY2VEZWZJZCByZXNvdXJjZS1yZWNvcmQtaWQ9OjpyZXNvdXJjZVJlY29yZElkIHJlc291cmNlLWRlZmluaXRpb249OjpyZXNvdXJjZURlZmluaXRpb24gZm9ybS1wYXJhbXM9Ojpmb3JtUGFyYW1zIGZvcm0tcGFyYW1zLXBhcmVudD06OmZvcm1QYXJhbXNQYXJlbnQgZm9ybS1kYXRhPTo6Zm9ybURhdGEgcGFyZW50PTo6aW5wdXRBcnJheSBhbGwtcm93cz1hbGxDb2x1bW5zPjwvZGl2PjxkaXYgbmctc3dpdGNoLXdoZW49Z3JpZCBrdC1ncmlkPjwvZGl2PjxkaXYgbmctc3dpdGNoLWRlZmF1bHQga3QtZm9ybS1maWVsZC1nZW5lcmF0b3I+PC9kaXY+PC9kaXY+PC9saT48L3VsPjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFBhZ2VNZW51Lmh0bWwnLCc8c3R5bGU+XFxyXFxuXFxyXFxuICAgIGxpIC5zaG93b25odXZlciB7XFxyXFxuICAgICAgIGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50O1xcclxcbiAgICB9XFxyXFxuICAgIFxcclxcbiAgICBsaTpob3ZlciAuc2hvd29uaHV2ZXIge1xcclxcbiAgICAgICBkaXNwbGF5OmluaXRpYWwgIWltcG9ydGFudDtcXHJcXG4gICAgfVxcclxcblxcdCBsaSAuaGlkZW9uaHV2ZXIge1xcclxcbiAgICAgICAgZGlzcGxheTppbml0aWFsICFpbXBvcnRhbnQ7XFxyXFxuICAgIH1cXHJcXG4gICAgXFxyXFxuICAgIGxpOmhvdmVyIC5oaWRlb25odXZlciB7XFxyXFxuICAgICAgICBkaXNwbGF5Om5vbmUgIWltcG9ydGFudDtcXHJcXG4gICAgfVxcclxcblxcdFxcclxcblxcdC5zaG93b25odXZlciB7XFxyXFxuXFx0XFxyXFxuXFx0fVxcclxcblxcdFxcclxcblxcdFxcclxcblxcclxcbjwvc3R5bGU+PGRpdiBpZD1rdFBhZ2VNZW51PjxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0IG15LTJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgbmctY2xpY2s9c2F2ZVBhZ2VNZW51KCk+PGkgY2xhc3M9XCJmYSBmYS1zYXZlIG1yLTJcIj48L2k+U2F2ZSBtZW51PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1tdC0xPjxkaXYgbmctaWY9ZmFsc2U+PGRpdiBuZy1pZj1cImxvY2FsVmFycy5wYWdlTGlzdC5sZW5ndGg9PTBcIiBjbGFzcz1cInJvdyBtLTAgbXQtMlwiPjxkaXYgY2xhc3M9XCJjb2wtMjQgbXktYXV0b1wiPllvdSBkb25cXCd0IGhhdmUgYW55IHBhZ2VzLiBUaGUgYmVzdCB3YXkgZm9yd2FyZCBpcyB0byBjcmVhdGUgeW91ciBmaXJzdCBwYWdlLjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMjQgbXktYXV0b1wiPjxzcGFuIGNsYXNzPW1yLTI+Q3JlYXRlIHlvdXIgZmlyc3QgcGFnZTwvc3Bhbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1jcmVhdGVQYWdlKCkgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLWluZm8gbWItMlwiIGt0LWJvb3RzdHJhcC10b29sdGlwIGRhdGEtdG9nZ2xlPXRvb2x0aXAgZGF0YS1wbGFjZW1lbnQ9cmlnaHQgdGl0bGU9XCJDbGljayB0byBkZWZpbmUgeW91ciBkYXRhXCI+QnVpbGQgbmV3IHBhZ2U8L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTI0IG15LWF1dG9cIj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwibXQtMSByb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC1sZy01IHAtMFwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgbS0wIHNoYWRvdyBwLTJcIiBpZD1jb2xsYXBzZVRhc2tzIHN0eWxlPVwibWF4LWhlaWdodDozNXJlbTtvdmVyZmxvdy15OnNjcm9sbDt3aWR0aDogbWF4LWNvbnRlbnRcIj48ZGl2IGNsYXNzPWhlbHBlciBzdHlsZT1cIm9wYWNpdHk6IDAuNTtcIj48aDYgY2xhc3M9bWItMT5QYWdlczwvaDY+PHAgY2xhc3M9XCJzbWFsbCB0ZXh0LW11dGVkIG1iLTJcIj5UbyBidWlsZCBhcHBsaWNhdGlvbiBtZW51IHVzZSB0aGUgPGkgY2xhc3M9XCJteC0xIGZhcyBmYS1ncmlwLXZlcnRpY2FsXCI+PC9pPiBpY29uIHRvIGRyYWcgJmFtcDsgZHJvcCBwYWdlcyBvbiBuYXZpZ2F0aW9uIGJhciBhYm92ZTwvcD48L2Rpdj48ZGl2IGNsYXNzPW1iLTI+PGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaCBwYWdlc1wiIG5nLW1vZGVsPWxvY2FsVmFycy5maWx0ZXJQYWdlcz48L2Rpdj48ZGl2IGlkPWFwcC1tZW51LXBhZ2UtbGlzdD48ZGl2IGxyLWRyYWctc3JjLXNhZmU9cGFnZXMgbmctcmVwZWF0PVwicGFnZSBpbiBsb2NhbFZhcnMucGFnZUxpc3QgdHJhY2sgYnkgJGluZGV4XCIgbmctc2hvdz1cIihbcGFnZS5uYW1lXSB8IGZpbHRlcjpsb2NhbFZhcnMuZmlsdGVyUGFnZXMpLmxlbmd0aFwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNVwiIGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQgdGV4dC1kYXJrIG1iLTFcIj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9Y29sPnt7JGluZGV4KzF9fS4ge3twYWdlLm5hbWV9fSAoe3twYWdlLmlkfX0pPC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4teHMgYm9yZGVyLTAgZWxlbWVudC1kcmFnLWhhbmRsZVwiPjxpIGNsYXNzPVwiZmFzIGZhLWdyaXAtdmVydGljYWxcIj48L2k+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb2wtbGctMTk+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGlkPXBhZ2VtZW51IG5nLXNob3c9XCJyZXNvdXJjZS5SZXNvdXJjZVR5cGUuUmVzb3VyY2VDb2RlPT1cXCdwYWdlbWVudVxcJ1wiIGNsYXNzPVwiY29sLWxnLTUgcC0wXCI+PGRpdiBjbGFzcz1cInAtMiBzaGFkb3ctc20gc2lkZW1lbnUtY3VzdG9tXCI+PGRpdiBjbGFzcz1oZWxwZXIgc3R5bGU9XCJvcGFjaXR5OiAwLjU7XCI+PGRpdiBjbGFzcz1cIm1iLTEgdGV4dC1jZW50ZXIgYm9yZGVyLWJvdHRvbSBib3JkZXItcHJpbWFyeSBoNSBwLTFcIj5TaWRlIG1lbnU8L2Rpdj48ZGl2IGNsYXNzPW15LTM+PC9kaXY+PC9kaXY+PGRpdiBzdHlsZT1cImJvcmRlcjpkYXNoZWQgMXB4IGdyYXlcIiBuZy1jbGFzcz1cIntcXCdlbXB0eS1zaWRlLW1lbnVcXCc6bG9jYWxWYXJzLnNlbGVjdGVkTmF2YmFyLmxheW91dC5sZW5ndGg9PTB9XCI+PGRpdiBjbGFzcz13LTEwMCBuZy1pZj1cImxvY2FsVmFycy5wYWdlTWVudUl0ZW1zLmxlbmd0aD09MFwiIGt0LWJvb3RzdHJhcC10b29sdGlwIHRpdGxlPVwiRHJvcCBpdGVtcyBoZXJlXCI+PC9kaXY+PHVsIGNsYXNzPVwibS0xIG5hdmJhci1uYXYgc2lkZS1tZW51LWNvbG9yXCI+PGxpIG5nLXJlcGVhdD1cIm1pIGluIGxvY2FsVmFycy5wYWdlTWVudUl0ZW1zIHwgbmdSZXBlYXRmaWx0ZXIgYXMgZmlsdGVyZWRcIiBtaW4taGVpZ2h0PTEwMHB4IGxyLWRyb3AtdGFyZ2V0PXBhZ2VzIGxyLWRyYWctc3JjPXBhZ2VzIGxyLWRyb3Atc3VjY2Vzcz13aGVuU3VjY2VzZnVsbERyb3AgY2xhc3M9ZC1mbGV4IGlkPXt7JGluZGV4fX0gbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmxvY2FsVmFycy5zZWxlY3RlZE1lbnUuaW5kZXggPT0gJGluZGV4fVwiIHN0eWxlPXBvc2l0aW9uOnJlbGF0aXZlPjxhIHN0eWxlPVwicGFkZGluZy1sZWZ0OjAgIWltcG9ydGFudFwiIGNsYXNzPVwibmF2LWxpbmstY3VzdG9tIG5hdi1saW5rIGQtZmxleCBwYWRkaW5nNSB3LTEwMCBtLTBcIiBuZy1jbGljaz1sb2NhbFZhcnMuZ2V0TWVudURldGFpbHMoJGluZGV4KT48ZGl2IGNsYXNzPXNob3dvbmh1dmVyPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4teHMgbS0wIGJvcmRlci0wIGVsZW1lbnQtZHJhZy1oYW5kbGVcIj48aSBjbGFzcz1cImZhcyBmYS1ncmlwLXZlcnRpY2FsXCI+PC9pPjwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJoaWRlb25odXZlciBteS1hdXRvIG14LTFcIj48aSBjbGFzcz17e21pLnNfbWVudXNfSWNvbn19PjwvaT48L2Rpdj48c3BhbiBuZy1pZj1cIm1pLnNfbWVudXNfTmFtZT09dW5kZWZpbmVkXCIgY2xhc3M9bXktYXV0bz57e21pLm5hbWV9fTwvc3Bhbj4gPHNwYW4gbmctaWY9XCJtaS5zX21lbnVzX05hbWUhPXVuZGVmaW5lZFwiIGNsYXNzPW15LWF1dG8+e3ttaS5zX21lbnVzX05hbWV9fTwvc3Bhbj48L2E+PGRpdiBjbGFzcz1cImQtZmxleCBwb3NpdGlvbi1hYnNvbHV0ZVwiIHN0eWxlPXJpZ2h0OjBweDt0b3A6MnB4IG5nLWlmPVwidHJ1ZSB8fCBsb2NhbFZhcnMuc2VsZWN0ZWRNZW51LmluZGV4ID09ICRpbmRleFwiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xhc3M9XCJ7XFwnYnRuLW91dGxpbmUtZGFuZ2VyXFwnOiFtaS5kZWxldGVJdGVtLFxcJ2J0bi1vdXRsaW5lLXN1Y2Nlc3NcXCc6bWkuZGVsZXRlSXRlbX1cIiBuZy1jbGljaz1sb2NhbFZhcnMuZGVsZXRlUGFnZU1lbnUobWksJGluZGV4KSBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kYW5nZXIgYnRuLXhzIGJvcmRlci0wXCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2J1dHRvbj48L2Rpdj48ZGl2IG5nLWlmPVwibWkuc19tZW51c19NZW51VHlwZT09MlwiIGt0LXNpZGVtZW51LWNvbnRhaW5lcj48L2Rpdj48L2xpPjwvdWw+PC9kaXY+PHAgY2xhc3M9XCJ0ZXh0LW11dGVkIG15LTNcIj5UbyBidWlsZCB0aGUgc2lkZSBtZW51LCB1c2UgPGkgY2xhc3M9XCJteC0xIGZhcyBmYS1ncmlwLXZlcnRpY2FsXCI+PC9pPiBpY29uIHRvIGRyYWcgJmFtcDsgZHJvcCBwYWdlcyBhYm92ZTwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwic2hhZG93LXNtIGNvbC1sZy0xOSBwLTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj48ZGl2IGNsYXNzPXctMTAwIGt0LW1lbnUtZGVmaW5pdGlvbiBuZy1pZj1sb2NhbFZhcnMuc2hvd01lbnVEZXRhaWxzIGxvY2FsLXZhcnM9bG9jYWxWYXJzIG1lbnUtaXRlbT1sb2NhbFZhcnMuc2VsZWN0ZWRNZW51PjwvZGl2PjxkaXYgY2xhc3M9XCJ7eyBsb2NhbFZhcnMuc2VsZWN0ZWRNZW51LmluZGV4PT11bmRlZmluZWQ/IFxcJ2QtZmxleFxcJzpcXCdkLW5vbmVcXCd9fSBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPjxkaXYgY2xhc3M9aDU+Tm8gTWVudSBzZWxlY3RlZDwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFBhZ2VNZW51RXhlLmh0bWwnLCc8ZGl2IGNsYXNzPVwicm93IG0tMCBzaWRlbWVudSBzaWRlbWVudS1jdXN0b20tZXh0LXBcIiBuZy1jbGFzcz1cIm1lbnVfc2VydmljZS5nZXRTaWRlTWVudVZpc2liaWxpdHkoKSA/IFxcJ3Nob3dcXCc6IFxcJ2hpZGVcXCdcIj48ZGl2IGNsYXNzPVwicC0wIHNpZGVtZW51LWN1c3RvbSBjb2wtbGdcIj48ZGl2IGlkPXBhZ2UtbWVudS1pZCBjbGFzcz48ZGl2IGNsYXNzPXAtMD48dWwgY2xhc3M9XCJuYXZiYXItbmF2IHNpZGUtbWVudS1jb2xvclwiPjxsaSBuZy1yZXBlYXQ9XCJtaSBpbiBzaWRlTWVudXMgdHJhY2sgYnkgbWkuc19tZW51c19pZFwiIG5nLXN3aXRjaD06Om1pLnNfbWVudXNfTWVudVBvc2l0aW9uIGNsYXNzPVwibmF2LWl0ZW0gcC0wIGJvcmRlci0wXCIgbmctY2xhc3M9XCJ7XFwndGV4dC1jZW50ZXJcXCc6IW1lbnVfc2VydmljZS5nZXRTaWRlTWVudVNpemUoKSxcXCdhY3RpdmVcXCc6bWVudV9zZXJ2aWNlLmNoZWNrSWZBY3RpdmUobWkpfVwiPjxhIG5nLXN3aXRjaC13aGVuPXNpZGVtZW51IHRpdGxlPXt7OjptaS5zX21lbnVzX05hbWV9fSBuZy1jbGFzcz1cIntcXCdzaWRlLW1lbnUtbGFyZ2UtaWNvbnMtc3R5bGVcXCc6IW1lbnVfc2VydmljZS5nZXRTaWRlTWVudVNpemUoKX1cIiBjbGFzcz1cIm5hdi1saW5rLWN1c3RvbSBuYXYtbGluayBzaWRlLW5hdi1saW5rLWN1c3RvbS1wIHBhZGRpbmc1XCIgbmctY2xpY2s9c2V0U2lkZU1lbnUobWkuc19tZW51c19pZCkgdWktc3JlZj1cInt7OjptaS5zX21lbnVzX1BhcmFtcy5wYWdlc3RhdGV9fShtZXJnZU9iamVjdHMobWkuc19tZW51c19QYXJhbXMsIHsgdmVyc2lvbjogbWkuc19tZW51c19UYXJnZXRQYWdlVmVyc2lvbn0gKSlcIj48aSBjbGFzcz1zaWRlLW1lbnUtaWNvbiBuZy1jbGFzcz1cIntcXCdmYSBmYS17ezo6bWkuc19tZW51c19JY29ufX1cXCc6bWVudV9zZXJ2aWNlLmdldFNpZGVNZW51U2l6ZSgpLFxcJ2ZhIGZhLXt7OjptaS5zX21lbnVzX0ljb259fSBmYS1sZyB0ZXh0LWNlbnRlclxcJzohbWVudV9zZXJ2aWNlLmdldFNpZGVNZW51U2l6ZSgpfVwiPjwvaT4gPGkgY2xhc3M9XCJmYS1sZyB0ZXh0LWNlbnRlclwiIG5nLWlmPVwiIW1lbnVfc2VydmljZS5nZXRTaWRlTWVudVNpemUoKSAmJiBtaS5zX21lbnVzX0ljb249PXVuZGVmaW5lZFwiPnt7JGluZGV4fX08L2k+IDxzcGFuIG5nLWlmPW1lbnVfc2VydmljZS5nZXRTaWRlTWVudVNpemUoKSBjbGFzcz1tbC0yPnt7OjptaS5zX21lbnVzX05hbWV9fTwvc3Bhbj48L2E+PGRpdiBuZy1zd2l0Y2gtd2hlbj1zaWRlbWVudSBuZy1pZj1cIjo6bWkuc19tZW51c19NZW51VHlwZT09M1wiIGt0LXNpZGVtZW51LWNvbnRhaW5lcj48L2Rpdj48L2xpPjwvdWw+PC9kaXY+PC9kaXY+PC9kaXY+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImNvbC1sZy1hdXRvIHAtMCB0b2dnbGUtcGFnZS1tZW51LWJ1dHRvblwiIHRpdGxlPVwiQ2xpY2sgdG8gdG9nZ2xlIG1lbnUgc2l6ZVwiIG5nLWNsaWNrPW1lbnVfc2VydmljZS5jaGFuZ2VTaWRlTWVudVNpemUoKT48aSBuZy1jbGFzcz1cIntcXCdmYSBmYS1jaGV2cm9uLWxlZnRcXCc6IG1lbnVfc2VydmljZS5nZXRTaWRlTWVudVNpemUoKSwgXFwnZmEgZmEtY2hldnJvbi1yaWdodFxcJzogIW1lbnVfc2VydmljZS5nZXRTaWRlTWVudVNpemUoKX1cIj48L2k+PC9idXR0b24+PC9kaXY+PHN0eWxlPlxcclxcblxcclxcbiAgICAuc2lkZS1tZW51LXN0eWxle1xcclxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjoge3twYXJhbXMuY3VzdG9tQmdDb2xvcn19ICFpbXBvcnRhbnQ7XFxyXFxuICAgICAgfVxcclxcbiAgICAgIFxcclxcblxcclxcbiAgICAgIC5zaWRlLW5hdi1saW5rLWN1c3RvbS1we1xcclxcbiAgICAgICAgZGlzcGxheTogZmxleDtcXHJcXG4gICAgICAgIHt7cGFyYW1zLmN1c3RvbUNzc319XFxyXFxuICAgICAgfVxcclxcblxcclxcbiAgICAgIC5zaWRlLW5hdi1saW5rLWN1c3RvbS1wOmhvdmVyLC5zaWRlLW5hdi1saW5rLWN1c3RvbS1wOmZvY3Vze1xcclxcbiAgICAgICAge3twYXJhbXMuY3VzdG9tQ3NzSG92ZXJ9fVxcclxcbiAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAuc2lkZW1lbnUtY3VzdG9tIC5uYXZiYXItbmF2IGxpLmFjdGl2ZSA+IGEuc2lkZS1uYXYtbGluay1jdXN0b20tcCB7XFxyXFxuICAgICAgICB7e3BhcmFtcy5jdXN0b21Dc3NBY3RpdmV9fVxcclxcbiAgICAgIH1cXHJcXG5cXHJcXG4uc2lkZS1tZW51LWxhcmdlLWljb25zLXN0eWxle1xcclxcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxyXFxuICBwYWRkaW5nOiAxZW0gIWltcG9ydGFudDtcXHJcXG59XFxyXFxuLnNpZGUtbWVudS1pY29ue1xcclxcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcclxcbiAgbWluLXdpZHRoOiAxLjVlbSAhaW1wb3J0YW50O1xcclxcbn1cXHJcXG5cXHJcXG4udG9nZ2xlLXBhZ2UtbWVudS1idXR0b24ge1xcclxcbiAgcG9zaXRpb246IGFic29sdXRlO1xcclxcblxcdGJhY2tncm91bmQ6IHdoaXRlO1xcclxcbiAgd2lkdGg6IDI0cHg7XFxyXFxuICBoZWlnaHQ6IDI0cHg7XFxyXFxuICByaWdodDogLTEycHg7XFxyXFxuXFx0Zm9udC1zaXplOjEycHg7XFxyXFxuICB6LWluZGV4OiAxMDI5O1xcclxcbiAgZGlzcGxheTogZmxleDtcXHJcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcclxcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXHJcXG4gIGJvcmRlci1yYWRpdXM6IDMycHg7XFxyXFxuICB0b3A6IDMycHg7XFxyXFxuICBib3gtc2hhZG93OiAycHggMXB4IDVweCAjMDAwMDAwMzM7XFxyXFxuICBib3JkZXI6IG5vbmU7XFxyXFxufVxcclxcbi50b2dnbGUtcGFnZS1tZW51LWJ1dHRvbjpmb2N1c3tcXHJcXG4gIG91dGxpbmU6IG5vbmU7XFxyXFxufVxcclxcblxcclxcbkBtZWRpYSAobWF4LXdpZHRoOiA5OTFweCkge1xcclxcblxcclxcbiAgLnNpZGVtZW51IHtcXHJcXG4gICAgYmFja2dyb3VuZDogd2hpdGU7XFxyXFxuICAgIGhlaWdodDogMTAwdmg7XFxyXFxuICAgIHBvc2l0aW9uOiBmaXhlZDtcXHJcXG4gICAgd2lkdGg6IDgwdnc7XFxyXFxuICAgIGxlZnQ6IC04MHZ3O1xcclxcbiAgICB0b3A6IDA7XFxyXFxuICAgIHotaW5kZXg6IDExMDA7XFxyXFxuICAgIGZvbnQtc2l6ZTogMjRweDtcXHJcXG4gICAgdHJhbnNpdGlvbjogbGVmdCAxcyBlYXNlIDBzICFpbXBvcnRhbnQ7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAuc2lkZW1lbnUuc2hvdyB7XFxyXFxuICAgIGxlZnQ6IDA7XFxyXFxuICAgIGJveC1zaGFkb3c6IDAgMC41cmVtIDFyZW0gcmdiYSgxNCwgMjYsIDU3LCAwLjE1KSAhaW1wb3J0YW50O1xcclxcbiAgfVxcclxcbiAgXFxyXFxuICAudG9nZ2xlLXBhZ2UtbWVudS1idXR0b24ge1xcclxcblxcdGRpc3BsYXk6IG5vbmU7XFxyXFxuICB9XFxyXFxuICBcXHJcXG59XFxyXFxuPC9zdHlsZT4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RQYWdlVG9vbGJveC5odG1sJywnPGRpdiBjbGFzcz1cInBhbmVsLWRlZmF1bHQgbWFyZ2luMFwiPjxkaXYgY2xhc3M9cGFuZWwtaGVhZGluZz48c3BhbiBjbGFzcz1cImZhIGZhLXdyZW5jaFwiPiZuYnNwIFBhZ2UgdG9vbGJveDwvc3Bhbj4gPGEgY2xhc3M9ZmxvYXQtcmlnaHQgaHJlZiB1aWItcG9wb3Zlci10ZW1wbGF0ZT1cIlxcJ2hlbHB0b29sYm94Lmh0bWxcXCdcIiBwb3BvdmVyLXRyaWdnZXI9b3V0c2lkZUNsaWNrIHBvcG92ZXItYXBwZW5kLXRvLWJvZHk9dHJ1ZSBwb3BvdmVyLXBsYWNlbWVudD1yaWdodC10b3A+PGkgY2xhc3M9XCJmYSBmYS1xdWVzdGlvblwiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImxpc3QgZ3JvdXAgdG9vbGJveFwiIG5nLW1vZGVsPXRvb2xib3hJdGVtcz48ZGl2IG5nLXJlcGVhdD1cInRvb2xib3hJdGVtIGluIHRvb2xib3hJdGVtcyB0cmFjayBieSB0b29sYm94SXRlbS5pZFwiPjxhIHRpdGxlPVwiRHJhZyBtZVwiIGNsYXNzPVwidG9vbGJveC1kcmFnLWhhbmRsZSBsaXN0LWdyb3VwLWl0ZW1cIiBocmVmPjxzcGFuIGNsYXNzPXRvb2xib3gtZHJhZy1oYW5kbGUgbmctY2xhc3M9dG9vbGJveEl0ZW0uZmFjc3M+PC9zcGFuPiZuYnNwIHt7dG9vbGJveEl0ZW0ucGxhY2Vob2xkZXJ9fTwvYT48L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPWhlbHB0b29sYm94Lmh0bWwgdHlwZT10ZXh0L25nLXRlbXBsYXRlPjxzcGFuPlRvIGJ1aWxkIHBhZ2UgZm9ybSBkcmFnICYgZHJvcCBlbGVtZW50cyBmcm9tIHRvb2xib3ghPC9zcGFuPjwvc2NyaXB0PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFByb2Nlc3NpbmdBbmltYXRpb24uaHRtbCcsJzxkaXYgY2xhc3M9XCJwLTIgdGV4dC1jZW50ZXIgbS1hdXRvXCIgbmctY2xhc3M9XCJ7XFwnY2FyZFxcJzpzaG93QXNDYXJkfVwiPjxkaXYgY2xhc3M9c3Bpbm5lci1zdGQgbmctc2hvdz1zaG93TXNnPjxkaXYgY2xhc3M9XCJyZWN0MSBiZy1kYXJrIG1sLTFcIj48L2Rpdj48ZGl2IGNsYXNzPVwicmVjdDIgYmctZGFyayBtbC0xXCI+PC9kaXY+PGRpdiBjbGFzcz1cInJlY3QzIGJnLWRhcmsgbWwtMVwiPjwvZGl2PjxkaXYgY2xhc3M9XCJyZWN0NCBiZy1kYXJrIG1sLTFcIj48L2Rpdj48ZGl2IGNsYXNzPVwicmVjdDUgYmctZGFyayBtbC0xXCI+PC9kaXY+PC9kaXY+PGRpdj48aDU+e3sgbWVzc2FnZSB9fTwvaDU+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0UHJvY2Vzc2luZ0FuaW1hdGlvblRpbWVsaW5lLmh0bWwnLCc8ZGl2IGNsYXNzPVwidGltZWxpbmUtd3JhcHBlciB3LTEwMCBoLTEwMFwiPjxkaXYgY2xhc3M9XCJ0aW1lbGluZS1pdGVtIHRpbWVsaW5lLWl0ZW0tYmFja2dyb3VuZCBoLTEwMFwiPjxkaXYgbmctaWY9XCJhbmltYXRpb25UeXBlPT1cXCdmb3JtXFwnXCIgY2xhc3M9XCJhbmltYXRlZC1iYWNrZ3JvdW5kIGFuaW1hdGVkLWJhY2tncm91bmQtY29sb3JcIj48ZGl2IG5nLXJlcGVhdD1cImZpIGluIGZvcm1JdGVtcyB0cmFjayBieSBmaVwiIGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMSBjb2wtbWQtMSBjb2wtc20tMSBjb2wtMSBiYWNrZ3JvdW5kLW1hc2tlciBiYWNrZ3JvdW5kLW1hc2tlci1jb2xvciBtYXNrZXItaXRlbSBwLTBcIj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTMgY29sLW1kLTMgY29sLXNtLTMgY29sLTMgcC0wXCI+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0xIGNvbC1tZC0xIGNvbC1zbS0xIGNvbC0xIGJhY2tncm91bmQtbWFza2VyIGJhY2tncm91bmQtbWFza2VyLWNvbG9yIG1hc2tlci1pdGVtIHAtMFwiPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMTggY29sLW1kLTE4IGNvbC1zbS0xOCBjb2wtMTggcC0wXCI+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0xIGNvbC1tZC0xIGNvbC1zbS0xIGNvbC0xIGJhY2tncm91bmQtbWFza2VyIGJhY2tncm91bmQtbWFza2VyLWNvbG9yIG1hc2tlci1pdGVtIHAtMFwiPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgY29sLW1kLTI0IGNvbC1zbS0yNCBjb2wtMjQgYmFja2dyb3VuZC1tYXNrZXIgYmFja2dyb3VuZC1tYXNrZXItY29sb3IgbWFza2VyLW1hcmdpbiBjb2wtMjQgcC0wXCI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IGNvbC1tZC0yNCBjb2wtc20tMjQgY29sLTI0IGJhY2tncm91bmQtbWFza2VyIGJhY2tncm91bmQtbWFza2VyLWNvbG9yIG1hc2tlci1tYXJnaW4gY29sLTI0IHAtMFwiPjwvZGl2PjxkaXYgY2xhc3M9XCJiYWNrZ3JvdW5kLW1hc2tlciBiYWNrZ3JvdW5kLW1hc2tlci1jb2xvciBidXR0b24tYm90dG9tIGNvbC1sZy0xIGNvbC1tZC0xIGNvbC1zbS0xIGNvbC0xIHAtMFwiPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMiBjb2wtbWQtNCBjb2wtc20tNSBjb2wtNSBwLTBcIiBzdHlsZT48L2Rpdj48ZGl2IGNsYXNzPVwiYmFja2dyb3VuZC1tYXNrZXIgYmFja2dyb3VuZC1tYXNrZXItY29sb3IgYnV0dG9uLWJvdHRvbSBjb2wtbGctMjEgY29sLW1kLTE5IGNvbC1zbS0xOCBjb2wtMTggcC0wXCIgc3R5bGU+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImFuaW1hdGlvblR5cGU9PVxcJ3RhYmxlXFwnXCIgY2xhc3M9XCJhbmltYXRlZC1iYWNrZ3JvdW5kIGFuaW1hdGVkLWJhY2tncm91bmQtY29sb3JcIj48ZGl2IG5nLWlmPXNob3dNc2cgY2xhc3M9XCJoNCB0ZXh0LWNlbnRlciBteS1hdXRvXCI+e3ttZXNzYWdlfX08L2Rpdj48ZGl2IG5nLXJlcGVhdD1cImZpIGluIGZvcm1JdGVtcyB0cmFjayBieSBmaVwiIGNsYXNzPVwicm93IG0tMFwiPjxkaXYgbmctaWY9XCIkaW5kZXg9PTBcIiBjbGFzcz1cImNvbC0yNCBiYWNrZ3JvdW5kLW1hc2tlciBiYWNrZ3JvdW5kLW1hc2tlci1jb2xvciBtYXNrZXItbWFyZ2luXCI+PC9kaXY+PGRpdiBjbGFzcz1jb2wtND48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTEgYmFja2dyb3VuZC1tYXNrZXIgYmFja2dyb3VuZC1tYXNrZXItY29sb3IgbWFza2VyLWl0ZW1cIj48L2Rpdj48ZGl2IGNsYXNzPWNvbC00PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMSBiYWNrZ3JvdW5kLW1hc2tlciBiYWNrZ3JvdW5kLW1hc2tlci1jb2xvciBtYXNrZXItaXRlbVwiPjwvZGl2PjxkaXYgY2xhc3M9Y29sLTQ+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0xIGJhY2tncm91bmQtbWFza2VyIGJhY2tncm91bmQtbWFza2VyLWNvbG9yIG1hc2tlci1pdGVtXCI+PC9kaXY+PGRpdiBjbGFzcz1jb2wtND48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTEgYmFja2dyb3VuZC1tYXNrZXIgYmFja2dyb3VuZC1tYXNrZXItY29sb3IgbWFza2VyLWl0ZW1cIj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTI0IGJhY2tncm91bmQtbWFza2VyIGJhY2tncm91bmQtbWFza2VyLWNvbG9yIG1hc2tlci1tYXJnaW5cIj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwiYW5pbWF0aW9uVHlwZT09XFwnY2FyZFxcJ1wiIGNsYXNzPXJvdz48ZGl2IG5nLXJlcGVhdD1cImNsIGluIGNhcmRJdGVtcyB0cmFjayBieSBjbFwiIGNsYXNzPVwiY29sLWxnLTYgY29sLXNtLTEyIGNvbC14cy0yNCBwLTFcIj48ZGl2IGNsYXNzPVwic2hhZG93LXNtIGJvcmRlciByb3VuZGVkXCIgc3R5bGU9XCJwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6IDEwMCU7bWluLWhlaWdodDogMTQ1cHg7XCI+PGRpdiBzdHlsZT1cImhlaWdodDogMTAwJTtcIj48ZGl2IGNsYXNzPVwicm93IG0tMCBwLTEgdGV4dC1sZWZ0IG15LWF1dG8gaC0xMDAgZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LWFyb3VuZFwiPjxkaXYgY2xhc3M9XCJyb3cgYW5pbWF0ZWQtYmFja2dyb3VuZCBteC0xXCI+PGRpdiBjbGFzcz1cImNvbC0xMSBweC0wXCI+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0xMCBiYWNrZ3JvdW5kLW1hc2tlciBiYWNrZ3JvdW5kLW1hc2tlci1jb2xvciBtYXNrZXItaXRlbSBweC0wXCI+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0yIHB4LTBcIj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTEgYmFja2dyb3VuZC1tYXNrZXIgYmFja2dyb3VuZC1tYXNrZXItY29sb3IgbWFza2VyLWl0ZW0gcHgtMFwiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgYW5pbWF0ZWQtYmFja2dyb3VuZCBteC0xXCI+PGRpdiBjbGFzcz1cImNvbC04IGJhY2tncm91bmQtbWFza2VyIGJhY2tncm91bmQtbWFza2VyLWNvbG9yIG1hc2tlci1pdGVtIHB4LTBcIj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTggcHgtMFwiPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtOCBiYWNrZ3JvdW5kLW1hc2tlciBiYWNrZ3JvdW5kLW1hc2tlci1jb2xvciBtYXNrZXItaXRlbSBweC0wXCI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBhbmltYXRlZC1iYWNrZ3JvdW5kIG14LTFcIj48ZGl2IGNsYXNzPVwiY29sLTggYmFja2dyb3VuZC1tYXNrZXIgYmFja2dyb3VuZC1tYXNrZXItY29sb3IgbWFza2VyLWl0ZW0gcHgtMFwiPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtOCBweC0wXCI+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC04IGJhY2tncm91bmQtbWFza2VyIGJhY2tncm91bmQtbWFza2VyLWNvbG9yIG1hc2tlci1pdGVtIHB4LTBcIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IGFuaW1hdGVkLWJhY2tncm91bmQgbXgtMVwiPjxkaXYgY2xhc3M9XCJjb2wtMSBiYWNrZ3JvdW5kLW1hc2tlciBiYWNrZ3JvdW5kLW1hc2tlci1jb2xvciBtYXNrZXItaXRlbSBweC0wXCI+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0yMiBweC0wXCI+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0xIGJhY2tncm91bmQtbWFza2VyIGJhY2tncm91bmQtbWFza2VyLWNvbG9yIG1hc2tlci1pdGVtIHB4LTBcIj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48c3R5bGU+XFxyXFxuICAgIC5hbmltYXRlZC1iYWNrZ3JvdW5kLWNvbG9ye1xcclxcbiAgICAgICAge3tza2VsZXRvbkNvbG9yfX1cXHJcXG4gICAgICAgIFxcclxcbiAgICB9XFxyXFxuICAgIC50aW1lbGluZS1pdGVtLWJhY2tncm91bmR7XFxyXFxuICAgICAgIHt7YmFja2dyb3VuZENvbG9yfX0gXFxyXFxuICAgIH1cXHJcXG4gICAgLmJhY2tncm91bmQtbWFza2VyLWNvbG9ye1xcclxcbiAgICAgICAge3tiYWNrZ3JvdW5kQ29sb3J9fVxcclxcbiAgICB9XFxyXFxuPC9zdHlsZT4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RQcm9jUGhQcm9wZXJ0eS5odG1sJywnPGRpdj48ZGl2IG5nLWNsaWNrPVwiZmQubG9jYWxWYXJzLnNob3dQaFN0eWxlID0gIWZkLmxvY2FsVmFycy5zaG93UGhTdHlsZVwiIGNsYXNzPVwiZXhwYW5kLXByb3BlcnR5LXBhbmVsIHRhZyBib3JkZXItYm90dG9tIGJvcmRlci1zdWNjZXNzIG15LTEgcHktMVwiIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIGhyZWY9I3Boc3R5bGUgcm9sZT1idXR0b24gYXJpYS1leHBhbmRlZD1mYWxzZSBhcmlhLWNvbnRyb2xzPXBoc3R5bGU+PHNwYW4gY2xhc3M9XCJjb2wgcC0wXCI+TG9hZGluZyBza2VsZXRvbiBzdHlsZTwvc3Bhbj4gPGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLXNob3c9ZmQubG9jYWxWYXJzLnNob3dQaFN0eWxlIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLWRvd25cIj48L2k+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PSFmZC5sb2NhbFZhcnMuc2hvd1BoU3R5bGUgY2xhc3M9XCJmYXMgZmEtYW5nbGUtdXBcIj48L2k+PC9kaXY+PGRpdiBpZD1waHN0eWxlIGNsYXNzPVwiY29sbGFwc2UgbS0wIG10LTJcIj48ZGl2IGlkZD1zaG93TG9hZGluZ01lc3NhZ2UgY2xhc3M9bXktMj48ZGl2IGNsYXNzPWQtZmxleCBzdHlsZT1cImp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcIj48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWwgZm9yPWNiU2hvd0xvYWRpbmdNZXNzYWdle3tmZC5QcmVzZW50YXRpb25JZH19PkxvYWRpbmcgbWVzc2FnZTo8L2xhYmVsPiA8bGFiZWwgbmctY2xhc3M9XCJ7XFwnZGlzYWJsZWRcXCc6IWZkLlBhcmFtZXRlcnNMYW5nLlNob3dMb2FkaW5nTWVzc2FnZSB9XCIgY2xhc3M9XCJzd2l0Y2ggc3dpdGNoLWdyZWVuIHNtYWxsXCI+PGlucHV0IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnNMYW5nLlNob3dMb2FkaW5nTWVzc2FnZSB0eXBlPWNoZWNrYm94IG5nLXRydWUtdmFsdWU9dHJ1ZSBuZy1mYWxzZS12YWx1ZT1mYWxzZSBjbGFzcz1zd2l0Y2gtaW5wdXQ+IDxzcGFuIGNsYXNzPXN3aXRjaC1sYWJlbCBkYXRhLW9uPU9uIGRhdGEtb2ZmPU9mZj48L3NwYW4+IDxzcGFuIGNsYXNzPXN3aXRjaC1oYW5kbGU+PC9zcGFuPjwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1tYi0yPjxpbnB1dCBuZy1kaXNhYmxlZD0hZmQuUGFyYW1ldGVyc0xhbmcuU2hvd0xvYWRpbmdNZXNzYWdlIHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzTGFuZy5Mb2FkaW5nTWVzc2FnZT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5CYWNrZ3JvdW5kIGNvbG9yPC9sYWJlbD4gPGlucHV0IHR5cGU9Y29sb3IgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5iYWNrZ3JvdW5kQ29sb3IgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+PC9kaXY+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+U2tlbGV0b24gY29sb3I8L2xhYmVsPiA8aW5wdXQgdHlwZT1jb2xvciBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLnNrZWxldG9uQ29sb3IgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0UHJvcGVydHlIZWFkZXIuaHRtbCcsJzxkaXYgaWQ9cHJvcGVydHlfaGVhZGVyIGNsYXNzPVwibGFiZWwteHMgYmctd2hpdGUgYm9yZGVyIHB5LTIgcm91bmRlZCB0ZXh0LW11dGVkIHRleHQtY2VudGVyIG15LTJcIiB0aXRsZT1cIlByZXNlbnRhdGlvbiBJRDoge3tmZC5QcmVzZW50YXRpb25JZH19IHwgdUlkOiB7e2ZkLlV1aWRSZWZ9fVwiPjxkaXYgY2xhc3M+PHNwYW4gbmctY2xpY2s9XCJmZC5sb2NhbFZhcnMuc2hvd01vcmUgPSAhZmQubG9jYWxWYXJzLnNob3dNb3JlXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCIgY2xhc3M9XCJ0YWdib3JkZXItc3VjY2VzcyBtLTEgcHktMVwiIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIGhyZWY9I21vcmVQcm9wZXJ0eVBhbmVsIHJvbGU9YnV0dG9uIGFyaWEtZXhwYW5kZWQ9dHJ1ZSBhcmlhLWNvbnRyb2xzPW1vcmVQcm9wZXJ0eVBhbmVsPjxpIGNsYXNzPVwiZmFzIGZhLWluZm8tY2lyY2xlXCIgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlXCI+PC9pPjwvc3Bhbj4gPGI+SWQ6PC9iPiA8c3BhbiBjbGFzcz1tci0yIG5nLXNob3c9ZmQuVXVpZFJlZiBuZy1iaW5kPWZkLlV1aWRSZWY+PC9zcGFuPiA8c3BhbiBuZy1zaG93PVwiZmQuVXVpZFJlZiA9PSBudWxsXCIgY2xhc3M9Ym9sZD5ub25lPC9zcGFuPiA8YnV0dG9uIG5nLWlmPWZkLlV1aWRSZWYgdHlwZT1idXR0b24gdGl0bGU9XCJDb3B5IHdpZGdldCByZWZlcmVuY2VcIiBjbGFzcz1cImJ0biBidG4tbGluayBidG4teHMgcC0wXCIgbmctY2xpY2s9Z3NydmMuY29weVRvQ2xpcGJvYXJkKGZkLlV1aWRSZWYpPjxpIGNsYXNzPVwiZmEgZmEtY29weSBtbC0xXCI+PC9pPjwvYnV0dG9uPiA8c3BhbiBuZy1jbGFzcz1cIntcXCd2aXNpYmlsaXR5LXZpc2libGVcXCc6Z3NydmMuY29weVV1aWQsXFwndmlzaWJpbGl0eS1oaWRkZW5cXCc6IWdzcnZjLmNvcHlVdWlkfVwiIGNsYXNzPVwidGV4dC1wcmltYXJ5IHNtYWxsIG1sLTFcIj5Db3BpZWQhPC9zcGFuPjwvZGl2PjxkaXY+PGRpdiBjbGFzcz1cIm0tMyBjb2xsYXBzZVwiIGlkPW1vcmVQcm9wZXJ0eVBhbmVsPjxkaXYgY2xhc3M+PGI+VHlwZTo8L2I+IDxzcGFuPnt7ZmQuTmFtZSB9fTwvc3Bhbj48L2Rpdj48ZGl2IG5nLWlmPWZkLkZpZWxkTmFtZSBjbGFzcz48Yj5GaWVsZCBuYW1lOjwvYj4gPHNwYW4gbmctc2hvdz1mZC5GaWVsZE5hbWUgbmctYmluZD1mZC5GaWVsZE5hbWU+PC9zcGFuPiA8c3BhbiBuZy1zaG93PVwiZmQuRmllbGROYW1lID09IG51bGxcIj5ub25lPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M+PGI+UHJlc2VudGF0aW9uIElEOjwvYj4gPHNwYW4gbmctc2hvdz1mZC5QcmVzZW50YXRpb25JZCBuZy1iaW5kPWZkLlByZXNlbnRhdGlvbklkPjwvc3Bhbj4gPHNwYW4gbmctc2hvdz1cImZkLlByZXNlbnRhdGlvbklkID09IG51bGxcIj5ub25lPC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFB1Ymxpc2hlZFJlc291cmNlU2VsZWN0b3IuaHRtbCcsJzxkaXYgaWQ9a3RQdWJsaXNoZWRSZXNvdXJjZVNlbGVjdG9ye3tmZC5QcmVzZW50YXRpb25JZH19IGNsYXNzPVwiY2FyZCBib3JkZXItMFwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC0yNCBtdC0yXCI+PHNwYW4gY2xhc3M9XCJoNiB0ZXh0LWRhcmtcIj5TZWxlY3Qge3tmZC5sb2NhbFZhcnMucmVzb3VyY2VUeXBlfX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0xMiBtdC0yXCIgbmctZm9ybT1pbm5lckZvcm17e2ZkLlByZXNlbnRhdGlvbklkfX0+PGRpdiBuZy1mb3JtPWlubmVyRm9ybXt7ZmQuUHJlc2VudGF0aW9uSWR9fT48a3QtZHJvcGRvd24tc3RhbmRhcmQgbmctaWY9XCJmZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0Lmxlbmd0aD4wXCIgaXMtbXVsdGlwbGU9ZmFsc2UgbmctbW9kZWw9ZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2Ugc2VsZWN0ZWQtaXRlbXM9ZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2UgcmVxdWlyZWQtZmllbGQ9dHJ1ZSBkcm9wZG93bi1pdGVtcz1mZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0IGRyb3Bkb3duLWlkPWZkLk5hbWUrZmQuUHJlc2VudGF0aW9uSWQgcGFyZW50LWZvcm0taWQ9XCJcXCdpbm5lckZvcm1cXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBzZWFyY2gtdGV4dD1mZC5TZWFyY2hUZXh0IG9uLXNlbGVjdC1mbj1mZC5sb2NhbFZhcnMub25TZWxlY3RSZXNvdXJjZUNhbGxiYWNrKGl0ZW0sbW9kZWwpPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZUxpc3QubGVuZ3RoPT0wXCI+Tm8gcHVibGlzaGVkIGRhdGFzZXRzICE8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPSFmZC5sb2NhbFZhcnMuaGlkZVBvcHVsYXRlTWV0aG9kIGNsYXNzPVwicm93IG0tMCBteS0zIHRleHQtZGFya1wiPjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxzcGFuIGNsYXNzPWg2PkNob29zZSB0aGUgc291cmNlIG9mIGRhdGE8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmVcIj48bGFiZWwgY2xhc3M9Zm9ybS1jaGVjay1sYWJlbD48aW5wdXQgY2xhc3M9Zm9ybS1jaGVjay1pbnB1dCB2YWx1ZT1BIHR5cGU9cmFkaW8gbmctbW9kZWw9ZmQuUG9wdWxhdGVNZXRob2Q+IEF1dG9tYXRpYyBkYXRhIG1hcHBpbmc8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lXCI+PGxhYmVsIGNsYXNzPWZvcm0tY2hlY2stbGFiZWw+PGlucHV0IGNsYXNzPWZvcm0tY2hlY2staW5wdXQgdmFsdWU9TSB0eXBlPXJhZGlvIG5nLW1vZGVsPWZkLlBvcHVsYXRlTWV0aG9kPiBNYW51YWwgZW50cnkgKHVzaW5nIHRoZSBmb3JtKTwvbGFiZWw+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlBvcHVsYXRlTWV0aG9kPT1cXCdBXFwnXCIgY2xhc3M9XCJyb3cgbS0wIG15LTEgdGV4dC1kYXJrXCI+PGRpdiBjbGFzcz1jb2wtMjQ+PGg2PlNlbGVjdCBzb3VyY2Ugb2YgZGF0YTwvaDY+PC9kaXY+PGRpdiBjbGFzcz1jb2wtNj48ZGl2IGNsYXNzPVwiYmctZ3JheS0xMDAgcm93IG0tMCBwLTEgdGV4dC1jZW50ZXJcIj48ZGl2IGNsYXNzPWNvbD48Yj5QcmV2aW91cyBUYXNrPC9iPjwvZGl2PjxkaXYgY2xhc3M9Y29sLWF1dG8+PGEgaHJlZiB0aXRsZT1cIkNsaWNrIHRvIHNlbGVjdCBwcmV2aW91cyB0YXNrXCI+PGkgbmctY2xhc3M9XCJ7XFwnZmFyIGZhLXNxdWFyZSBtbC0zIHRleHQtZGFuZ2VyXFwnOmZkLlJlbGF0ZWRQb3B1bGF0ZVR5cGUhPVxcJzNcXCcsXFwnZmFyIGZhLWNoZWNrLXNxdWFyZSBtbC0zIHRleHQtc3VjY2Vzc1xcJzpmZC5SZWxhdGVkUG9wdWxhdGVUeXBlPT1cXCczXFwnfVwiIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5zZXRTZWxlY3RlZFNvdXJjZSgtMSk+PC9pPjwvYT48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbD48ZGl2IGNsYXNzPVwiYmctZ3JheS0xMDAgbWItMiBwLTEgdGV4dC1jZW50ZXJcIj48Yj5UaGlzIFRhc2s8L2I+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCBtYi0zXCIgbmctcmVwZWF0PVwiY3RpIGluIGZkLmxvY2FsVmFycy5jdXJyZW50VGFza0luaXRpYXRlRGF0YXNldHMgdHJhY2sgYnkgJGluZGV4XCI+PGRpdiBjbGFzcz1cInJvdyBiZy1ncmF5LTEwMCBwLTFcIj48ZGl2IGNsYXNzPWNvbD48c3Bhbj48Yj5UYXNrOjwvYj4ge3tjdGkudGFza19uYW1lfX0gKHt7Y3RpLnRhc2tfZGVmX2lkfX0pPC9zcGFuPiA8c3Bhbj48Yj5XaWRnZXQgaWQ6PC9iPiB7e2N0aS5wYXJlbnRFbGVtZW50SWR9fTwvc3Bhbj4gPHNwYW4+PGI+RGF0YXNldCBpZDo8L2I+IHt7Y3RpLnJlbGF0ZWRJZH19PC9zcGFuPiA8c3Bhbj48Yj5XaWRnZXQgdHlwZTo8L2I+IHt7Y3RpLnR5cGV9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1hdXRvPjxhIGhyZWYgdGl0bGU9XCJDbGljayB0byBzZWxlY3Qgd2lkZ2V0XCI+PGkgbmctY2xhc3M9XCJ7XFwnZmFyIGZhLXNxdWFyZSBtbC0zIHRleHQtZGFuZ2VyXFwnOmN0aS5wYXJlbnRFbGVtZW50SWQhPWZkLlNyY1dpZGdldElkIHx8IChmZC5SZWxhdGVkUG9wdWxhdGVUeXBlIT1cXCcyXFwnICYmIGZkLlJlbGF0ZWRQb3B1bGF0ZVR5cGUhPVxcJzRcXCcpICxcXCdmYXIgZmEtY2hlY2stc3F1YXJlIG1sLTMgdGV4dC1zdWNjZXNzXFwnOihjdGkucGFyZW50RWxlbWVudElkPT1mZC5TcmNXaWRnZXRJZCAmJiBmZC5SZWxhdGVkUG9wdWxhdGVUeXBlPT1cXCcyXFwnKSB8fCBmZC5SZWxhdGVkUG9wdWxhdGVUeXBlPT1cXCc0XFwnfVwiIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5zZXRTZWxlY3RlZFNvdXJjZShjdGkpPjwvaT48L2E+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCBtYi0zXCIgbmctaWY9XCJmZC5sb2NhbFZhcnMuZm9ybVR5cGU9PVxcJ2VcXCdcIiBuZy1yZXBlYXQ9XCJjdGUgaW4gZmQubG9jYWxWYXJzLmN1cnJlbnRUYXNrRXhlY3V0ZURhdGFzZXRzIHRyYWNrIGJ5ICRpbmRleFwiPjxkaXYgY2xhc3M9XCJyb3cgYmctZ3JheS0xMDAgcC0xXCI+PGRpdiBjbGFzcz1jb2w+PGRpdj48Yj5UYXNrOjwvYj4ge3tjdGUudGFza19uYW1lfX0gKHt7Y3RlLnRhc2tfZGVmX2lkfX0pPC9kaXY+PGRpdj48Yj5XaWRnZXQgaWQ6PC9iPiB7e2N0ZS5wYXJlbnRFbGVtZW50SWR9fTwvZGl2PjxkaXY+PGI+RGF0YXNldCBpZDo8L2I+IHt7Y3RlLnJlbGF0ZWRJZH19PC9kaXY+PGRpdj48Yj5XaWRnZXQgdHlwZTo8L2I+IHt7Y3RlLnR5cGV9fTwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLWF1dG8+PGEgaHJlZiB0aXRsZT1cIkNsaWNrIHRvIHNlbGVjdCB3aWRnZXRcIj48aSBuZy1jbGFzcz1cIntcXCdmYXIgZmEtc3F1YXJlIG1sLTMgdGV4dC1kYW5nZXJcXCc6Y3RlLnBhcmVudEVsZW1lbnRJZCE9ZmQuU3JjV2lkZ2V0SWQgfHwgKGZkLlJlbGF0ZWRQb3B1bGF0ZVR5cGUhPVxcJzJcXCcgJiYgZmQuUmVsYXRlZFBvcHVsYXRlVHlwZSE9XFwnNFxcJykgLFxcJ2ZhciBmYS1jaGVjay1zcXVhcmUgbWwtMyB0ZXh0LXN1Y2Nlc3NcXCc6KGN0ZS5wYXJlbnRFbGVtZW50SWQ9PWZkLlNyY1dpZGdldElkICYmIGZkLlJlbGF0ZWRQb3B1bGF0ZVR5cGU9PVxcJzJcXCcpIHx8IGZkLlJlbGF0ZWRQb3B1bGF0ZVR5cGU9PVxcJzRcXCd9XCIgbmctY2xpY2s9ZmQubG9jYWxWYXJzLnNldFNlbGVjdGVkU291cmNlKGN0ZSk+PC9pPjwvYT48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IHAtMiBtLTAgbXQtMlwiPjxkaXY+PGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1mZC5sb2NhbFZhcnMuY29uZmlybSgpPkNvbmZpcm08L2J1dHRvbj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RSZWFkU21hcnRDb250cmFjdC5odG1sJywnPGRpdiBjbGFzcz13aWRnZXQtaGVhZCBuZy1jbGFzcz1cIntcXCd3aWRnZXQtYWN0aXZlIG0tMiBzaGFkb3dcXCc6ZmQuZGF0YXNldE1hcHBlclR5cGU+MCxcXCdtLTAgYm9yZGVyLTBcXCc6KGZkLlJlbGF0ZWQ9PW51bGwgfHwgZmQuUmVsYXRlZD09dW5kZWZpbmVkKSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09Mn1cIj48ZGl2IGNsYXNzPVwicm93IG0tMCBwLTAgbWItMVwiIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1oZWFkLWFjdGl2ZVxcJzpmZC5kYXRhc2V0TWFwcGVyVHlwZT4wLFxcJ2JnLWxpZ2h0XFwnOmZkLmRhdGFzZXRNYXBwZXJUeXBlPT0wfVwiIG5nLWlmPVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTFcIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGkgY2xhc3M9XCJmYSBmYS1jb2RlIG14LTJcIj48L2k+PGxhYmVsPlJlYWQgc21hcnQgY29udHJhY3QgKHt7ZmQuUHJlc2VudGF0aW9uSWR9fSkgKHt7ZmQuTG9jYWxJZH19KTwvbGFiZWw+IDxhIGhyZWYgdGl0bGU9c29ydCBuZy1jbGFzcz1cIntcXCd3aWRnZXQtcHJvcFxcJzpmZC5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCBmZC5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkfVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIHt7Z3JpZFR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIHdpZGdldC1wcm9wXCI+PGkgY2xhc3M9XCJ7e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZSBmYXMgZmEtZ3JpcC12ZXJ0aWNhbFwiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LXJpZ2h0IG15LWF1dG9cIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLnNob3dQcm9wZXJ0aWVzKDEpIG5nLWNsYXNzPVwie1xcJ2J0bi13YXJuaW5nXFwnOmZkLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT1cXCdcXCcgJiYgZmQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPXVuZGVmaW5lZCwgXFwnYnRuLW91dGxpbmUtcHJpbWFyeSBuby1ib3JkZXJcXCc6ZmQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQ9PVxcJ1xcJyB8fCBmZC5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZD09dW5kZWZpbmVkfVwiIGNsYXNzPVwiYnRuIGJ0bi14c1wiPjxzcGFuIG5nLWlmPVwiZmQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPVxcJ1xcJyAmJiBmZC5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCE9dW5kZWZpbmVkXCI+e3tmZC5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZH19PC9zcGFuPiA8c3BhbiBuZy1pZj1cImZkLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkPT1cXCdcXCcgfHwgZmQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQ9PXVuZGVmaW5lZFwiPlNlbGVjdCBzbWFydCBjb250cmFjdDwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCIgbmctaWY9XCJmZC5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCE9XFwnXFwnICYmIGZkLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT11bmRlZmluZWRcIj48YSBocmVmIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYm9yZGVyLTAgYnRuLXNtXCIgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LXByb3BcXCc6ZmQuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgZmQuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZH1cIiB0aXRsZT1cIlNob3cvaGlkZSBwcm9wZXJ0aWVzXCIgbmctY2xpY2s9ZmQuc2hvd1Byb3BlcnRpZXMoMik+PGkgY2xhc3M9XCJmYXMgZmEtY29nXCI+PC9pPjwvYT4gPGEgbmctaWY9ZmFsc2UgaHJlZiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zdWNjZXNzIGJvcmRlci0wIGJ0bi1zbVwiIHRpdGxlPVwiU2hvdy9oaWRlIGZvcm1cIiBuZy1jbGljaz1cImZkLnNob3dGb3JtPSFmZC5zaG93Rm9ybVwiPjxpIG5nLWNsYXNzPVwie1xcJ2ZhcyBmYS1leWUtc2xhc2hcXCc6IWZkLnNob3dGb3JtLFxcJ2ZhcyBmYS1leWVcXCc6ZmQuc2hvd0Zvcm19XCI+PC9pPjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGRpdiBrdC10YXNrLWRyb3Bkb3duMj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXAtMyBuZy1pZj1cImZkLmRhdGFzZXRNYXBwZXJUeXBlPjBcIj48ZGl2IGNsYXNzPW1iLTI+PGRpdiBrdC1mb3JtLWVsZW1lbnQtcHJvcGVydGllcyBmZD1mZCBsb2NhbC12YXJzPWZkPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cC0zPjxkaXYgbmctaWY9IWZkLmZvcm1Mb2FkZWQgYW5pbWF0aW9uLXR5cGU9XCJcXCdmb3JtXFwnXCIga3QtcHJvY2Vzc2luZy1hbmltYXRpb24tdGltZWxpbmUgc2hvdy1tc2c9ZmFsc2UgbWVzc2FnZT1cIkxvYWRpbmcgZm9ybS4uLlwiPjwvZGl2PjxkaXYgbmctaWY9ZmQuZm9ybUxvYWRlZD48ZGl2IGt0LWdyaWQgZ3JpZC10eXBlPTo6ZmQuZ3JpZHN0ZXJUeXBlIHJlc291cmNlLWZvcm0tbG9hZGVkPWZkLmZvcm1Mb2FkZWQgcGFyZW50LXJlc291cmNlLWRlZi1pZD06OmZkLlBhcmVudERhdGFzZXREZWZJZCByZXNvdXJjZS1yZWNvcmQtaWQ9OjpmZC5yZXNvdXJjZVJlY29yZElkIHJlc291cmNlLWRlZmluaXRpb249OjpyZXNvdXJjZURlZmluaXRpb24gZm9ybS1wYXJhbXM9OjpmZC5mb3JtUGFyYW1zIGZvcm0tcGFyYW1zLXBhcmVudD06OmZvcm1QYXJhbXMgZm9ybS1kYXRhPWZkLmZvcm1EYXRhIHBhcmVudD06OmZkLmRhc2hib2FyZC53aWRnZXRzIGFsbC1jb2x1bW5zPTo6ZmQuZGFzaGJvYXJkLndpZGdldHMgY2xhc3M9a3RHcmlkPjwvZGl2PjxidXR0b24gbmctaWY9IWZkLlBhcmFtZXRlcnMuQXV0b0xvYWQgdHlwZT1idXR0b24gbmctY2xpY2s9ZmQucmVhZENvbnRyYWN0KCkgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnkgbXktMlwiPnt7ZmQuTGFiZWx9fTwvYnV0dG9uPiA8YnV0dG9uIG5nLWlmPVwiZmQud0l0ZW1WYWx1ZS5sZW5ndGg9PTBcIiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1mZC5nZXRGb3JtUmVzb3VyY2VPcmlnaW5hbChmZC5SZWxhdGVkKSBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBteS0yXCI+UmVsb2FkIG9yaWdpbmFsIGZvcm08L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RSZWFkU21hcnRDb250cmFjdFByb3BlcnRpZXMuaHRtbCcsJzxkaXYgY2xhc3M9cC0xPjxkaXYgbmctaWY9XCJsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTFcIiBmZD1mZCBsb2NhbC12YXJzPWxvY2FsVmFycyBrdC1kYXRhc2V0LW1hcHBlcj48L2Rpdj48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPjFcIiBjbGFzcz1cImJ0bi1ncm91cCBidG4tZ3JvdXAtdG9nZ2xlIHctMTAwXCIgZGF0YS10b2dnbGU9YnV0dG9ucz48bGFiZWwgbmctY2xpY2s9XCJsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9MlwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeSBhY3RpdmVcIj48c3BhbiBjbGFzcz1cImZhIGZhLWNvZ1wiPjwvc3Bhbj4gPGlucHV0IHR5cGU9cmFkaW8gbmFtZT1mb3JtdHlwZSBpZD1vcHRpb24xIGF1dG9jb21wbGV0ZT1vZmY+IEZvcm0gcHJvcGVydGllczwvbGFiZWw+IDxsYWJlbCBuZy1jbGljaz1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT0zXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1kYXRhYmFzZVwiPjwvc3Bhbj48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPWZvcm10eXBlIGlkPW9wdGlvbjIgYXV0b2NvbXBsZXRlPW9mZj4gQ29udHJhY3QgcHJvcGVydGllczwvbGFiZWw+PC9kaXY+PGRpdiBuZy1pZj1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09M1wiIGNsYXNzPVwicm93IG0tMCBwLTJcIj48ZGl2IGNsYXNzPWNvbC0yND48bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkXCI+TGFiZWw8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLkxhYmVsPiA8bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkXCI+RXJyb3IgbXNnPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1mZC5FcnJvck1zZz4gPGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZFwiPlNlYXJjaFRleHQ8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLlNlYXJjaFRleHQ+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWwgZm9yPWNiUmVhZE9ubHl7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JBdXRvTG9hZHt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkF1dG9Mb2FkIG5nLWNoZWNrZWQ9ZmQuUGFyYW1ldGVycy5BdXRvTG9hZD4gQXV0byBsb2FkIGNvbnRyYWN0PC9sYWJlbD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RSZWxhdGVkRGF0YXNldE1hcHBlci5odG1sJywnPGRpdiBjbGFzcz1yb3c+PGRpdiBjbGFzcz1jb2wtc20tNj48c3BhbiBjbGFzcz4mbmJzcDxoNT5TZWxlY3QgZGF0YXNldDwvaDU+PC9zcGFuPjx1aS1zZWxlY3QgbmctbW9kZWw9c2VsZWN0ZWREYXRhc2V0UGFyZW50IG9uLXNlbGVjdD1cIm9uU2VsZWN0RGF0YXNldFBhcmVudENhbGxiYWNrKCRpdGVtLCAkbW9kZWwpXCIgbmctZGlzYWJsZWQ9ZGlzYWJsZWQgbmFtZT1zZWxlY3RSZWxhdGVkRGF0YXNldCBuZy1yZXF1aXJlZD10cnVlIHJlc2V0LXNlYXJjaC1pbnB1dD1mYWxzZT48dWktc2VsZWN0LW1hdGNoIGNsYXNzPXVpLXNlbGVjdC1tYXRjaCBwbGFjZWhvbGRlcj1cIlNlbGVjdCBkYXRhc2V0Li4uXCI+PHNwYW4+e3skc2VsZWN0LnNlbGVjdGVkLm5hbWV9fSAoe3skc2VsZWN0LnNlbGVjdGVkLmlkfX0pPC9zcGFuPiA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmsgZmxvYXQtcmlnaHRcIiBuZy1jbGljaz1cImNsZWFyKCRldmVudCwgJHNlbGVjdClcIj48aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPjwvYT48L3VpLXNlbGVjdC1tYXRjaD48dWktc2VsZWN0LWNob2ljZXMgY2xhc3M9dWktc2VsZWN0LWNob2ljZXMgcmVwZWF0PVwiZGF0YXNldCBpbiAoZGF0YXNldExpc3QgfCBmaWx0ZXI6IHsgbmFtZTogJHNlbGVjdC5zZWFyY2ggfSkgdHJhY2sgYnkgZGF0YXNldC5pZFwiIHJlZnJlc2g9cmVmcmVzaFJlc3VsdHMoJHNlbGVjdCkgcmVmcmVzaC1kZWxheT0wPjxzcGFuPnt7ZGF0YXNldC5uYW1lfX0gKHt7ZGF0YXNldC5pZH19KTwvc3Bhbj48L3VpLXNlbGVjdC1jaG9pY2VzPjwvdWktc2VsZWN0PjxzcGFuIGNsYXNzPiZuYnNwPGg1PkNob29zZSBkYXRhc2V0IHJlY29yZCAodGhpcyByZWNvcmQgd2lsbCBiZSByZXRyaWV2ZWQgYW5kIHNob3duIG9uIHRoZSBmb3JtKTwvaDU+PC9zcGFuPjxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgaW5wdXQtZ3JvdXAtc21cIiBkYXRhLXRvZ2dsZT1idXR0b25zPjxsYWJlbCBjbGFzcz1cImJ0biBidG4tbGlnaHRcIiBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6IHJlbGF0ZWRQb3B1bGF0ZVR5cGU9PTF9XCIgbmctY2xpY2s9c2V0UG9wdWxhdGVUeXBlKDEpPjxpbnB1dCBuYW1lPXJQb3B1bGF0ZVR5cGUgY2xhc3MgdmFsdWU9MSB0eXBlPXJhZGlvIGRhdGEtbmctbW9kZWw9cmVsYXRlZFBvcHVsYXRlVHlwZT4gRml4ZWQgZGF0YXNldDwvbGFiZWw+IDxsYWJlbCBjbGFzcz1cImJ0biBidG4tbGlnaHRcIiBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6IHJlbGF0ZWRQb3B1bGF0ZVR5cGU9PTJ9XCIgbmctY2xpY2s9c2V0UG9wdWxhdGVUeXBlKDIpPjxpbnB1dCBuYW1lPXJQb3B1bGF0ZVR5cGUgY2xhc3MgdmFsdWU9MiB0eXBlPXJhZGlvIGRhdGEtbmctbW9kZWw9cmVsYXRlZFBvcHVsYXRlVHlwZT4gRGF0YXNldCBmcm9tIGN1cnJlbnQgdGFzazwvbGFiZWw+IDxsYWJlbCBjbGFzcz1cImJ0biBidG4tbGlnaHRcIiBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6IHJlbGF0ZWRQb3B1bGF0ZVR5cGU9PTN9XCIgbmctY2xpY2s9c2V0UG9wdWxhdGVUeXBlKDMpPjxpbnB1dCBuYW1lPXJQb3B1bGF0ZVR5cGUgY2xhc3MgdmFsdWU9MyB0eXBlPXJhZGlvIGRhdGEtbmctbW9kZWw9cmVsYXRlZFBvcHVsYXRlVHlwZT4gRGF0YXNldCBmcm9tIHByZXZpb3VzIHRhc2s8L2xhYmVsPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJyZWxhdGVkUG9wdWxhdGVUeXBlPT0xXCIgY2xhc3M9Zml4ZWQ+PGRpdiBjbGFzcz1cXCc9XCJjb2wtc20tMTJcIlxcJz48aDQ+U2VsZWN0ZWQgZGF0YXNldCBpcyB1c2VkIGFzIGEgZml4ZWQgc291cmNlPC9oND48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwicmVsYXRlZFBvcHVsYXRlVHlwZT09MlwiIGNsYXNzPWN1cnJlbnQ+PGRpdiBjbGFzcz1jb2wtc20tMTI+PGg1PlNlbGVjdGVkIGRhdGFzZXQgZnJvbSB0aGlzIHRhc2sgYXJlIHJldHJpZXZlZCBhbmQgc2hvd24gb24gdGhlIGZvcm08L2g1PjxzcGFuIG5nLWlmPVwiZm9ybVByaW9yaXR5PT1cXCdlXFwnXCI+PGI+Rmlyc3Qgc2VhcmNoIGZvciB7e3NlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkfX0gZGF0YXNldCBvbjx1PmV4ZWN1dGU8L3U+Zm9ybTwvYj48L3NwYW4+IDxzcGFuIG5nLWlmPVwiZm9ybVByaW9yaXR5PT1cXCdpXFwnXCI+PGI+Rmlyc3Qgc2VhcmNoIGZvciB7e3NlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkfX0gZGF0YXNldCBvbjx1PnN0YXJ0PC91PmZvcm08L2I+PC9zcGFuPiA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgdHlwZT1idXR0b24gbmctY2xpY2s9Y2hhbmdlUHJpb3JpdHkoKT5DaGFuZ2UgcHJpb3JpdHk8L2J1dHRvbj48ZGl2IGNsYXNzPWNvbC1zbS02IG5nLXJlcGVhdD1cImN0aSBpbiBjdXJyZW50VGFza0luaXRpYXRlRGF0YXNldHMgdHJhY2sgYnkgJGluZGV4XCI+PHNwYW4+PGI+VGFzazo8L2I+IHt7Y3RpLnRhc2tfbmFtZX19ICh7e2N0aS50YXNrX2RlZl9pZH19KTwvc3Bhbj4gPHNwYW4+PGI+V2lkZ2V0IGlkOjwvYj4ge3tjdGkucGFyZW50RWxlbWVudElkfX08L3NwYW4+IDxzcGFuPjxiPldpZGdldCB0eXBlOjwvYj4ge3tjdGkudHlwZX19PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Y29sLXNtLTYgbmctcmVwZWF0PVwiY3RlIGluIGN1cnJlbnRUYXNrRXhlY3V0ZURhdGFzZXRzIHRyYWNrIGJ5ICRpbmRleFwiPjxzcGFuPjxiPlRhc2s6PC9iPiB7e2N0ZS50YXNrX25hbWV9fSAoe3tjdGUudGFza19kZWZfaWR9fSk8L3NwYW4+IDxzcGFuPjxiPldpZGdldCBpZDo8L2I+IHt7Y3RlLnBhcmVudEVsZW1lbnRJZH19PC9zcGFuPiA8c3Bhbj48Yj5XaWRnZXQgdHlwZTo8L2I+IHt7Y3RlLnR5cGV9fTwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwicmVsYXRlZFBvcHVsYXRlVHlwZT09M1wiIGNsYXNzPXByZXZpb3VzPjxoNT5TZWxlY3RlZCBkYXRhc2V0cyBmcm9tIHByZXZpb3VzIHRhc2tzIGFyZSByZXRyaWV2ZWQgYW5kIHNob3duIG9uIHRoZSBmb3JtPC9oNT48c3BhbiBuZy1pZj1cImZvcm1Qcmlvcml0eT09XFwnZVxcJ1wiPjxiPkZpcnN0IHNlYXJjaCBmb3Ige3tzZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZH19IGRhdGFzZXQgb248dT5leGVjdXRlPC91PmZvcm08L2I+PC9zcGFuPiA8c3BhbiBuZy1pZj1cImZvcm1Qcmlvcml0eT09XFwnaVxcJ1wiPjxiPkZpcnN0IHNlYXJjaCBmb3Ige3tzZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZH19IGRhdGFzZXQgb248dT5zdGFydDwvdT5mb3JtPC9iPjwvc3Bhbj4gPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWNoYW5nZVByaW9yaXR5KCk+Q2hhbmdlIHByaW9yaXR5PC9idXR0b24+PGRpdiBjbGFzcz1jb2wtc20tNiBuZy1yZXBlYXQ9XCJwdGkgaW4gcHJldmlvdXNUYXNrSW5pdGlhdGVEYXRhc2V0cyB0cmFjayBieSAkaW5kZXhcIj48c3Bhbj48Yj5UYXNrOjwvYj4ge3twdGkudGFza19uYW1lfX0gKHt7cHRpLnRhc2tfZGVmX2lkfX0pPC9zcGFuPiA8c3Bhbj48Yj5XaWRnZXQgaWQ6PC9iPiB7e3B0aS5wYXJlbnRFbGVtZW50SWR9fTwvc3Bhbj4gPHNwYW4+PGI+V2lkZ2V0IHR5cGU6PC9iPiB7e3B0aS50eXBlfX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1jb2wtc20tNiBuZy1yZXBlYXQ9XCJwdGUgaW4gcHJldmlvdXNUYXNrRXhlY3V0ZURhdGFzZXRzIHRyYWNrIGJ5ICRpbmRleFwiPjxzcGFuPjxiPlRhc2s6PC9iPiB7e3B0ZS50YXNrX25hbWV9fSAoe3twdGUudGFza19kZWZfaWR9fSk8L3NwYW4+IDxzcGFuPjxiPldpZGdldCBpZDo8L2I+IHt7cHRlLnBhcmVudEVsZW1lbnRJZH19PC9zcGFuPiA8c3Bhbj48Yj5XaWRnZXQgdHlwZTo8L2I+IHt7cHRlLnR5cGV9fTwvc3Bhbj48L2Rpdj48L2Rpdj48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgdHlwZT1idXR0b24gbmctY2xpY2s9Y29uZmlybVJlbGF0ZWQoKT5Db25maXJtPC9idXR0b24+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0UmVzb3VyY2UuaHRtbCcsJzxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHBiLTEgcm93IG0tMCBkYXRhc2V0LWl0ZW1cIiBuZy1pZj1cImZkLlNob3dGaWVsZCB8fCAoZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTIpXCIgbmctZm9ybT1pbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0gbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZH19LkRhdGFzZXR7e2ZkLkl0ZW1JZH19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17e2ZkLkl0ZW1JZH19LkRhdGFzZXR7e2ZkLkl0ZW1JZH19LiRpbnZhbGlkLFxcJ2JnLWdyYXktMjAgbXItMCBib3JkZXJcXCc6ZmQuSXRlbUlkPT1nc3J2Yy5nZXRTZWxlY3RlZEl0ZW1JZCgpICYmIGdzcnZjLmdldEZpZWxkUHJvcGVydGllc09wZW5lZCgpIH1cIj48ZGl2IG5nLWlmPVwiZmQuUGFyYW1ldGVycy5EZWZTdGF0ZSE9XFwnYmFzaWNcXCcgJiYgZmQuUHJlc2VudGF0aW9uVHlwZT49MFwiIG5nLWhpZGU9XCIoZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGU9PTIgfHwgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTIpICYmIGZkLlBhcmFtZXRlcnMuSGlkZUxhYmVsXCIgc3R5bGU9e3tmZC5sYWJlbEFsaWdufX0gY2xhc3M9e3tmZC5ncmlkQ2xhc3NMYWJlbH19IG5nLWNsYXNzPVwie1xcJ2NvbC1hdXRvXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZX1cIj48bGFiZWwga3Qtc3R5bGUtYXR0cmlidXRlIGZkPWZkIHN0eWxlLXR5cGU9XCJcXCdsYWJlbFxcJ1wiIHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVMYWJlbH19IGZvcj1cInt7ZmQuTmFtZX19e3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fVwiIGNsYXNzPVwicHQtMiBtYXJnaW5MNSBmb3JtLWNvbnRyb2wtbGFiZWwgbm8tYm9yZGVyIGFsaWduLW1pZGRsZVwiIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlclxcJyA6IChpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJGludmFsaWQsXFwnY3VzdG9tLWVsLWxheW91dC1zdHlsZVxcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTF9XCI+e3tmZC5MYWJlbH19PC9sYWJlbD48L2Rpdj48ZGl2IG5nLWlmPVwiZmQuUGFyYW1ldGVycy5EZWZTdGF0ZSE9XFwnYmFzaWNcXCdcIiBzdHlsZT1cInZpc2liaWxpdHk6dmlzaWJsZSAhaW1wb3J0YW50XCIgY2xhc3M9XCJibHVlLWRyb3Bkb3duIHJvdW5kZWQgc2hhZG93XCI+PGRpdiBjbGFzcz1cImVsZW1lbnQtcHJvcGVydGllcy1idG5zIGJnLXByaW1hcnkgcm91bmRlZCBzaGFkb3cgbXQtMlwiIG5nLWlmPVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTJcIj48c3BhbiBjbGFzcz1cImxhYmVsIGxhYmVsLXhzIHRleHQtd2hpdGUgbWwtMSBib2xkXCI+e3tmZC5OYW1lfX08L3NwYW4+IDxhIGhyZWYgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIHByb3AtYnRuIGVsZW1lbnQtZHJhZy1oYW5kbGVcIiB0aXRsZT1zb3J0PjxpIGNsYXNzPVwiZWxlbWVudC1kcmFnLWhhbmRsZSBmYSBmYS1ncmlwLXZlcnRpY2FsXCI+PC9pPjwvYT4gPGEgaHJlZiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4teHMgcHJvcC1idG5cIiBuZy1jbGljaz1nc3J2Yy5zZXRGaWVsZFByb3BlcnRpZXMoZmQsJGV2ZW50KT48aSBjbGFzcz1cImZhIGZhLWNvZ1wiPjwvaT48L2E+IDxhIG5nLWlmPVwiZmQuUmVsYXRlZD09dW5kZWZpbmVkIHx8IGZkLlJlbGF0ZWQ9PW51bGxcIiB0aXRsZT1cIkVycm9ycyBpbiBkZWZpbml0aW9uXCIgaHJlZiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIGJ0bi14cyBwcm9wLWJ0blwiIG5nLWNsaWNrPWdzcnZjLnNldEZpZWxkUHJvcGVydGllcyhmZCwkZXZlbnQpPjxpIGNsYXNzPVwiZmEgZmEtZXhjbGFtYXRpb25cIj48L2k+PC9hPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmZC5QcmVzZW50YXRpb25UeXBlPT0yICYmIGZkLlBhcmFtZXRlcnMuRGVmU3RhdGUhPVxcJ2Jhc2ljXFwnICYmIGZkLmZvcm1Mb2FkZWRcIiBjbGFzcz1cInt7ZmQuZ3JpZENsYXNzRWxlbWVudH19IHAtMCBteS1hdXRvXCI+PGRpdiBrdC1ncmlkIGdyaWQtdHlwZT1sb2NhbFZhcnNbZmQuaWRdLmdyaWRzdGVyVHlwZSBzaG93LXNlYXJjaC1maWx0ZXJzPWxvY2FsVmFyc1tmZC5pZF0uc2hvd1NlYXJjaEZpbHRlcnMgcmVzb3VyY2UtZm9ybS1sb2FkZWQ9ZmQuZm9ybUxvYWRlZCBwYXJlbnQtcmVzb3VyY2UtZGVmLWlkPWZkLlBhcmVudERhdGFzZXREZWZJZCByZXNvdXJjZS1yZWNvcmQtaWQ9bG9jYWxWYXJzW2ZkLmlkXS5kYXRhc2V0UmVjb3JkSWQgcmVzb3VyY2UtZGVmaW5pdGlvbj1yZXNvdXJjZURlZmluaXRpb24gZm9ybS1wYXJhbXM9bG9jYWxWYXJzW2ZkLmlkXS5mb3JtUGFyYW1zIGZvcm0tcGFyYW1zLXBhcmVudD1mb3JtUGFyYW1zIGZvcm0tZGF0YT1sb2NhbFZhcnNbZmQuaWRdLndpZGdldFN0YXRlLmZvcm1EYXRhIHBhcmVudD1mZC5Gb3JtRGVmU2VhcmNoIGFsbC1jb2x1bW5zPWZkLkZvcm1EZWZTZWFyY2g+PC9kaXY+PGJ1dHRvbiBuZy1pZj1mYWxzZSB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi14c1wiIG5nLWNsaWNrPWxvY2FsVmFyc1tmZC5pZF0uU2VsZWN0UmVjb3JkcygpPjxpIGNsYXNzPVwiZmEgZmEtc2F2ZVwiPjwvaT5BcHBseSBzZWFyY2g8L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwie3tmZC5ncmlkQ2xhc3NFbGVtZW50fX0gbXktYXV0b1wiIG5nLWlmPVwiZmQuUGFyYW1ldGVycy5EZWZTdGF0ZSE9XFwnYmFzaWNcXCdcIj48ZGl2IG5nLWlmPVwiZmQuUHJlc2VudGF0aW9uVHlwZT09MSAmJiAhZmQuUmVhZE9ubHlcIj48a3QtZHJvcGRvd24tc3RhbmRhcmQgbmctaWY9XCJmZC5kYXRhc2V0SXRlbXMgJiYgIWZkLk11bHRpbGluZVwiIG5nLW1vZGVsPWl0ZW1WYWx1ZS52YWwgaXMtbXVsdGlwbGU9ZmFsc2Ugc2VsZWN0ZWQtaXRlbXM9aXRlbVZhbHVlLnZhbCByZXF1aXJlZC1maWVsZD1mZC5SZXF1aXJlZCBkcm9wZG93bi1pdGVtcz1mZC5kYXRhc2V0SXRlbXMgZHJvcGRvd24taWQ9XCJmZC5OYW1lK2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKVwiIHBhcmVudC1mb3JtLWlkPVwiXFwnaW5uZXJGb3JtXFwnK2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKVwiIHNlYXJjaC10ZXh0PWZkLlNlYXJjaFRleHQ+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48ZGl2IG5nLWlmPSFmZC5kYXRhc2V0SXRlbXMgY2xhc3M9Zm9ybS1jb250cm9sPkRhdGFzZXQgcGxhY2Vob2xkZXI8L2Rpdj48a3QtZHJvcGRvd24tbXVsdGlwbGUgbmctaWY9ZmQuTXVsdGlsaW5lIG5nLW1vZGVsPWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0gc2VsZWN0ZWQtaXRlbXM9Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSBuYW1lPVwiRGF0YXNldHt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX1cIiByZXF1aXJlZD1mZC5SZXF1aXJlZCBkcm9wZG93bi1pdGVtcz1mZC5kYXRhc2V0SXRlbXMgZHJvcGRvd24taWQ9XCJcXCdEYXRhc2V0XFwnK2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKVwiIHBhcmVudC1mb3JtLWlkPVwiXFwnaW5uZXJGb3JtXFwnK2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKVwiIHNlYXJjaC10ZXh0PWZkLlNlYXJjaFRleHQ+PC9rdC1kcm9wZG93bi1tdWx0aXBsZT48cCBuZy1jbGFzcz1cIntcXCdpbnZhbGlkLXRvb2x0aXAgcmlnaHQtMCBtci0zXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCd0b29sdGlwXFwnIHx8IGZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT11bmRlZmluZWQsXFwnaW52YWxpZC1mZWVkYmFja1xcJzpmZC5QYXJhbWV0ZXJzLkVycm9yTXNnVHlwZT09XFwnZmVlZGJhY2tcXCcsXFwnZC1ibG9ja1xcJzooaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kaW52YWxpZH1cIj57e2ZkLkVycm9yTXNnfX08L3A+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlByZXNlbnRhdGlvblR5cGU9PTEgJiYgZmQuUmVhZE9ubHlcIj48ZGl2IG5nLWlmPVwiZm9ybURhdGFbMF1bZmQuRmllbGROYW1lXS5sZW5ndGg9PTBcIiBjbGFzcz1cImJvcmRlciBwLTEgcm91bmRlZC0wXCI+MCB7e2ZkLkxhYmVsfX0gc2VsZWN0ZWQ8L2Rpdj48ZGl2IG5nLWlmPVwiKGZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV09PXVuZGVmaW5lZCB8fCBmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdPT1udWxsKSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZT09MVwiIGNsYXNzPVwiYm9yZGVyIHAtMSByb3VuZGVkIGJnLXdoaXRlXCI+RGF0YXNldCByZWNvcmRzIHBsYWNlaG9sZGVyPC9kaXY+PGRpdiBuZy1pZj1cIihmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdPT11bmRlZmluZWQgfHwgZm9ybURhdGFbMF1bZmQuRmllbGROYW1lXT09bnVsbCkgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGU9PTJcIiBjbGFzcz1cImJvcmRlciBwLTEgcm91bmRlZCBiZy13aGl0ZVwiPk5vIGRhdGE8L2Rpdj48ZGl2IG5nLWlmPVwiZm9ybURhdGFbMF1bZmQuRmllbGROYW1lXS5sZW5ndGg+MCAmJiBmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdWzBdLmlkIT11bmRlZmluZWRcIiBjbGFzcz1cInB0LTIgbXQtbjJcIj48ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc2Vjb25kYXJ5IG0tMVwiIG5nLXJlcGVhdD1cIml0ZW0gaW4gZm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSB0cmFjayBieSBpdGVtLmlkXCI+PHNwYW4gY2xhc3M+e3tpdGVtLm5hbWV9fTwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IHN0eWxlPVwibWluLWhlaWdodDogMzVweDtcIiBjbGFzcz1cImJvcmRlciBwLTEgbWItMCByb3VuZGVkIGJnLXdoaXRlXCI+e3tmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdLm5hbWV9fXt7Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXVswXS5uYW1lfX08L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXJvdyBuZy1pZj1mYWxzZT48YnV0dG9uIG5nLWlmPVwic2hvd1NlYXJjaEZpbHRlcnMgfHwgKGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xICYmIGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlIT0yKVwiIHR5cGU9YnV0dG9uIHRpdGxlPXt7ZmQuU2VhcmNoLm5hbWV9fSBuZy1jbGFzcz1cIntcXCdtbC0zXFwnOmZkLlByZXNlbnRhdGlvblR5cGU9PTB9XCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IHJvdW5kZWQtMFwiIGhyZWYgdWliLXBvcG92ZXItdGVtcGxhdGU9XCJcXCdyZXNvdXJjZXNlYXJjaHByb3BlcnRpZXMuaHRtbFxcJ1wiIG5nLWNsaWNrPVwiaXNPcGVuPVRydWVcIiBwb3BvdmVyLWlzLW9wZW49aXNPcGVuIHBvcG92ZXItdHJpZ2dlcj1vdXRzaWRlQ2xpY2sgcG9wb3Zlci1hcHBlbmQtdG8tYm9keT10cnVlIHBvcG92ZXItcGxhY2VtZW50PWxlZnQtdG9wPjxpIGNsYXNzPVwiZmEgZmEtZmlsdGVyXCI+PC9pPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTI0IG5nLWlmPVwiZmQuUGFyYW1ldGVycy5EZWZTdGF0ZSE9XFwnYmFzaWNcXCcgJiYgZmQuUHJlc2VudGF0aW9uVHlwZT4wXCIgbmctc2hvdz1cIihmZC5QYXJhbWV0ZXJzLkRlZmluZVRhc2tzICYmIHJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb24pIHx8IChmZC5zZWxlY3RlZFRhc2tzLmxlbmd0aD4wICYmICFmb3JtRGVmaW5pdGlvbiAmJiBmZC5yZXNvdXJjZURhdGFSZWNvcmRTZWxlY3RlZClcIj48ZGl2IGt0LWluaXRpYXRlLXRhc2std2lkZ2V0IGZkPWZkIGxvY2FsLXZhcnM9bG9jYWxWYXJzW2ZkLmlkXT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNhcmQgbmctaWY9XCJmZC5TZWFyY2gudGFza0lkLmlkPjAgJiYgIWZvcm1EZWZpbml0aW9uICYmIGZkLlBhcmFtZXRlcnMuRGVmU3RhdGUhPVxcJ2Jhc2ljXFwnXCIgbmctc2hvdz1mZC5TaG93RmllbGQ+PGRpdiBjbGFzcz1jYXJkLWhlYWRlcj48ZGl2IGt0LXRhc2stcHJvYy1kaXJlY3RpdmUgZmQ9ZmQgdGFza2RlZmluaXRpb249dGFza0RlZmluaXRpb24gbG9jYWwtdmFycz1sb2NhbFZhcnNTZWFyY2g+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlByZXNlbnRhdGlvblR5cGU9PTAgJiYgZmQuUGFyYW1ldGVycy5EZWZTdGF0ZSE9XFwnYmFzaWNcXCdcIiBjbGFzcz17e2ZkLmdyaWRDbGFzc0VsZW1lbnR9fT48ZGl2IGNsYXNzPXJvdyBzdHlsZT1cInRvcDowO21hcmdpbi1sZWZ0Oi0xcmVtICFpbXBvcnRhbnRcIiBuZy1pZj1cIiFsb2NhbFZhcnNbZmQuaWRdLmRhdGFzZXRsaXN0bGlua2VkIHx8ICFsb2NhbFZhcnNbZmQuaWRdLnJlc291cmNlRGF0YURvd25sb2FkZWRcIiBrdC1wcm9jZXNzaW5nLWFuaW1hdGlvbiBzaG93LW1zZz10cnVlIHNob3ctYXMtY2FyZD1mYWxzZSBtZXNzYWdlPVwiTG9hZGluZyB7e2ZkLk5hbWV9fS4uLlwiPjwvZGl2PjxkaXYgY2xhc3MgbmctaWY9XCJsb2NhbFZhcnNbZmQuaWRdLmRhdGFzZXRsaXN0bGlua2VkICYmIGxvY2FsVmFyc1tmZC5pZF0ucmVzb3VyY2VEYXRhRG93bmxvYWRlZCAmJiAoZmQuZ3JpZE9wdGlvbnMuZGF0YS5sZW5ndGg+MCB8fCAoZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTIpKVwiPjxkaXYga3Qtc21hcnQtdGFibGUgdXNlLXBhZ2luYXRpb249ZmFsc2UgYWxsb3ctc29ydD10cnVlIGluaXRpYWwtcGFnZT0xIGl0ZW1zLW9uLXBhZ2U9MTAgcm93LXNlbGVjdGVkLWNoYW5nZT1mZC5yb3dTZWxlY3Rpb25DaGFuZ2VkKGl0ZW0pIHBhcmFtZXRlcnM9ZmQuUGFyYW1ldGVycyBmb250LXNpemU9ZmQuUGFyYW1ldGVycy50YWJsZS5mb250U2l6ZSBjZWxsLXBhZGRpbmc9ZmQuUGFyYW1ldGVycy50YWJsZS5jZWxsUGFkZGluZyBjb2x1bW4tZGVmcz1sb2NhbFZhcnNbZmQuaWRdLmNvbHVtbkRlZnMga3QtcmVmcmVzaC1kYXRhPVwibG9jYWxWYXJzW2ZkLmlkXS5nZXREYXRhc2V0RGF0YUZvclNtYXJ0VGFibGUodGFibGVTdGF0ZSwgcGFnZU51bWJlcixwYWdlU2l6ZSlcIj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwiZmQuUGFyYW1ldGVycy5EZWZTdGF0ZT09XFwnYmFzaWNcXCdcIiBjbGFzcz1jb2wtbGctMjQ+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlBhcmFtZXRlcnMuRGVmU3RhdGU9PVxcJ2Jhc2ljXFwnICYmIGZkLlBhcmFtZXRlcnMuUmVzb3VyY2VSZWxhdGlvbnNoaXBUeXBlPT1cXCdleGlzdGluZ1xcJ1wiIGNsYXNzPWNvbC1sZy0yND48ZGl2IGNsYXNzPW15LTI+PHNwYW4gY2xhc3M9XCJ0ZXh0LXByaW1hcnkgYm9sZFwiPkNISUxEIEZJRUxEICh7e2ZkLlJlc291cmNlVHlwZX19KTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPW15LTI+PGRpdiBjbGFzcz1tYi0xIG5nLWlmPVwiZmQuUGFyYW1ldGVycy5SZXNvdXJjZVJlbGF0aW9uc2hpcFR5cGU9PT1cXCdleGlzdGluZ1xcJ1wiPjxkaXYgY2xhc3M9bXItMj48c3Bhbj5DaGlsZCB7e2ZkLlJlc291cmNlVHlwZX19IG5hbWU6PC9zcGFuPjxzcGFuIGNsYXNzPWJvbGQgbmctYmluZD1cImZkLlBhcmFtZXRlcnMuQ2hpbGRSZXNvdXJjZU5hbWUgfHwgZmQubmFtZSB8fCBcXCdub25lXFwnXCI+PC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9bXktMiBuZy1pZj1sb2NhbFZhcnNbZmQuaWRdLnB1Ymxpc2hlZExvYWRlZD48bGFiZWwgY2xhc3M9XCJwbC0wIGxhYmVsIHRleHQtbXV0ZWRcIiBmb3I9c2VsZWN0ZWRQdWJsaXNoZWR7e2ZkLlByZXNlbnRhdGlvbklkfX0+U2VsZWN0IGZvcm08L2xhYmVsPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1tb2RlbD1sb2NhbFZhcnNbZmQuaWRdLnB1Ymxpc2hlZFJlc291cmNlIHNlbGVjdGVkLWl0ZW1zPWxvY2FsVmFyc1tmZC5pZF0ucHVibGlzaGVkUmVzb3VyY2Ugb24tc2VsZWN0LWZuPWZkLm9uU2VsZWN0UHVibGlzaGVkKGl0ZW0sbW9kZWwpIGlzLW11bHRpcGxlPWZhbHNlIG5hbWU9c2VsZWN0ZWRQdWJsaXNoZWR7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctcmVxdWlyZWQ9dHJ1ZSBkcm9wZG93bi1pdGVtcz1sb2NhbFZhcnNbZmQuaWRdLnB1Ymxpc2hlZFJlc291cmNlTGlzdCBkcm9wZG93bi1pZD1cIlxcJ3NlbGVjdGVkUHVibGloZWRcXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ3NlbGVjdGVkUHVibGlzaGVkXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgcmVzb3VyY2UgZm9ybVxcJ1wiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBteS0yXCIgbmctaWY9IWxvY2FsVmFyc1tmZC5pZF0ucHVibGlzaGVkTG9hZGVkPjxzcGFuIGNsYXNzPVwiZC1ibG9jayB3LTEwMCBib3JkZXIgcC0yIGJnLXdoaXRlXCI+TG9hZGluZyBmb3JtIGxpc3QuLi48L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlBhcmFtZXRlcnMuRGVmU3RhdGU9PVxcJ2Jhc2ljXFwnICYmIGZkLlByZXNlbnRhdGlvblR5cGU9PXVuZGVmaW5lZCAmJiBmZC5QYXJhbWV0ZXJzLlJlc291cmNlUmVsYXRpb25zaGlwVHlwZT09XFwnbmV3XFwnIHx8IGZkLlBhcmFtZXRlcnMuUmVzb3VyY2VSZWxhdGlvbnNoaXBUeXBlPT1cXCd2aWV3XFwnXCIgY2xhc3M9Y29sLWxnLTI0PjxkaXYgY2xhc3M9XCJyb3cgbS0wIG15LTEgcC0xIGJvcmRlciByb3VuZGVkIHNoYWRvdy1zbVwiPjxkaXYgbmctaWY9XCJsb2NhbFZhcnNbZmQuaWRdLnJlc291cmNlVHlwZXNMaXN0Lmxlbmd0aD4wXCIgY2xhc3M9XCJjb2wtbGctMjQgbXktMlwiPjxzcGFuIGNsYXNzPVwiaDYgdGV4dC1tdXRlZFwiPlNlbGVjdCByZXNvdXJjZSB0eXBlPC9zcGFuPjwvZGl2PjxkaXYgbmctaWY9XCJsb2NhbFZhcnNbZmQuaWRdLnJlc291cmNlVHlwZXNMaXN0Lmxlbmd0aD4wXCIgY2xhc3M9Y29sLWxnLTI0PjxkaXYgbmctcmVwZWF0PVwicnQgaW4gbG9jYWxWYXJzW2ZkLmlkXS5yZXNvdXJjZVR5cGVzTGlzdFwiIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZVwiPjxsYWJlbCBjbGFzcz1mb3JtLWNoZWNrLWxhYmVsPjxpbnB1dCB0eXBlPXJhZGlvIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuUmVzb3VyY2VUeXBlIG5nLXZhbHVlPXJ0LnR5cGUgbmctY2xpY2s9bG9jYWxWYXJzW2ZkLmlkXS5nZXRSZXNvdXJjZXMocnQudHlwZSk+IHt7cnQubmFtZX19PC9sYWJlbD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IG15LTJcIj48bGFiZWwgY2xhc3M9XCJwbC0wIGxhYmVsIHRleHQtbXV0ZWRcIiBmb3I9bmFtZUZpZWxkPlNlbGVjdCBwYXJlbnQge3tmZC5QYXJhbWV0ZXJzLlJlc291cmNlVHlwZX19PC9sYWJlbD48a3QtZHJvcGRvd24tc3RhbmRhcmQgbmctbW9kZWw9ZmQuc2VsZWN0ZWRSZXNvdXJjZSBzZWxlY3RlZC1pdGVtcz1mZC5zZWxlY3RlZFJlc291cmNlIG5nLWlmPWZkLlJlbGF0ZWRMb2FkZWQgb24tc2VsZWN0LWZuPWZkLm9uU2VsZWN0Q2FsbGJhY2soaXRlbSxtb2RlbCkgaXMtbXVsdGlwbGU9ZmFsc2UgbmFtZT1cInNlbGVjdGVkUmVzb3VyY2V7e2ZkLlV1aWRSZWYucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fVwiIG5nLXJlcXVpcmVkPXRydWUgZHJvcGRvd24taXRlbXM9ZmQucmVzb3VyY2VzTGlzdCBkcm9wZG93bi1pZD1cIlxcJ3NlbGVjdGVkUmVzb3VyY2VcXCcrZmQuVXVpZFJlZi5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKVwiIHBhcmVudC1mb3JtLWlkPVwiXFwnc2VsZWN0ZWRSZXNvdXJjZVxcJytmZC5VdWlkUmVmLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgXFwnK2ZkLlBhcmFtZXRlcnMuUmVzb3VyY2VUeXBlXCI+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IG1iLTNcIj48aSBjbGFzcz1cImZhIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZSB0ZXh0LWRhbmdlclwiPjwvaT4gPHNwYW4gY2xhc3M9dGV4dC1kYW5nZXI+UGxlYXNlIHNlbGVjdCBwYXJlbnQge3tmZC5QYXJhbWV0ZXJzLlJlc291cmNlVHlwZX19PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgbXktMlwiIG5nLWlmPSFmZC5SZWxhdGVkTG9hZGVkPjxzcGFuIGNsYXNzPVwiZC1ibG9jayB3LTEwMCBib3JkZXIgcC0yIGJnLXdoaXRlXCI+TG9hZGluZyByZXNvdXJjZSBsaXN0Li4uPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgbWItMlwiPjxidXR0b24gbmctZGlzYWJsZWQ9XCJmZC5SZWxhdGVkPT1cXCdcXCcgfHwgZmQuUmVsYXRlZD09dW5kZWZpbmVkIHx8IGZkLlJlbGF0ZWQ9PW51bGxcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cImZkLlBhcmFtZXRlcnMuRGVmU3RhdGU9XFwnYWR2YW5jZWRcXCdcIj48c3Bhbj5Db25maXJtIHNlbGVjdGlvbjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0yNCBuZy1pZj1cImZkLlBhcmFtZXRlcnMuRGVmU3RhdGUhPVxcJ2Jhc2ljXFwnICYmIGZkLlByZXNlbnRhdGlvblR5cGU9PXVuZGVmaW5lZFwiPjxkaXYgbmctaWY9XCJmZC5QYXJhbWV0ZXJzLlJlc291cmNlUmVsYXRpb25zaGlwVHlwZSE9XFwnZXhpc3RpbmdcXCdcIiBjbGFzcz1cInAtMiBib3JkZXIgcm91bmRlZCBzaGFkb3ctc21cIj48c3BhbiBjbGFzcz1cIm1yLTMgbWItMyB0ZXh0LXByaW1hcnkgYm9sZCB0YWdcIj57e2ZkLlBhcmFtZXRlcnMuUmVzb3VyY2VUeXBlfX08L3NwYW4+IDxzcGFuIGNsYXNzPW1yLTM+e3tmZC5zZWxlY3RlZFJlc291cmNlLm5hbWV9fTwvc3Bhbj48ZGl2IGNsYXNzPW15LTM+PGkgY2xhc3M9XCJmYSBmYS1leGNsYW1hdGlvbi1jaXJjbGUgdGV4dC1kYW5nZXJcIj48L2k+IDxzcGFuIGNsYXNzPXRleHQtZGFuZ2VyPlRvIGJlIHZpc2libGUgZ28gdG8gcHJvcGVydGllcyAtPiBVSSBjb21wb25lbnRzIGFuZCBjaG9vc2UgZGlzcGxheSBmb3JtPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmZC5QYXJhbWV0ZXJzLlJlc291cmNlUmVsYXRpb25zaGlwVHlwZT09XFwnZXhpc3RpbmdcXCdcIiBjbGFzcz1cInAtMiBib3JkZXIgcm91bmRlZCBzaGFkb3ctc21cIj48c3BhbiBjbGFzcz1cIm1yLTMgdGV4dC1wcmltYXJ5IGJvbGQgdGFnXCI+Q0hJTEQgRklFTEQgUExBQ0VIT0xERVIgKHt7ZmQuUGFyYW1ldGVycy5SZXNvdXJjZVR5cGV9fSk8L3NwYW4+IDxzcGFuIGNsYXNzPW1yLTMgbmctYmluZD1cImZkLlBhcmFtZXRlcnMuQ2hpbGRSZXNvdXJjZU5hbWUgfHwgZmQubmFtZVwiPjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPXJlc291cmNlc2VhcmNocHJvcGVydGllcy5odG1sIHR5cGU9dGV4dC9uZy10ZW1wbGF0ZT48ZGl2PiA8bGFiZWw+Q2hvb3NlIGZpbHRlciBtZXRob2Q8L2xhYmVsPiA8ZGl2IGNhbGw9XCJyb3dcIj4gPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG5nLWJpbmRpbmdcIiBuZy1jbGljaz1cImFwcGx5U2VhcmNoRmlsdGVycygwKVwiPiA8c3BhbiBjbGFzcz1cImZhIGZhLWJhcnNcIj48L3NwYW4+IE9uIGxpc3Q8L2J1dHRvbj4gPC9kaXY+IDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBuZy1iaW5kaW5nXCIgbmctY2xpY2s9XCJhcHBseVNlYXJjaEZpbHRlcnMoMSlcIj4gPHNwYW4gY2xhc3M9XCJmYSBmYS1leHBhbmRcIj48L3NwYW4+IE5vdCBvbiBsaXN0PC9idXR0b24+IDwvZGl2Pjwvc2NyaXB0PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFJlc291cmNlRGVmaW5pdGlvbi5odG1sJywnPGRpdiBpZGQ9a3RSZXNvdXJjZURlZmluaXRpb24+PGRpdiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIiBjbGFzcz1cInAtMSByb3cgbXgtMVwiIG5nLWNsaWNrPVwiaXNDb2xsYXBzZWREYXRhUHJvcGVydHkgPSAhaXNDb2xsYXBzZWREYXRhUHJvcGVydHlcIj48c3BhbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gcC0xXCI+PHNwYW4gbmctY2xhc3M9XCJ7XFwnZmFzIGZhLWNoZXZyb24tdXBcXCc6IGlzQ29sbGFwc2VkRGF0YVByb3BlcnR5LFxcJ2ZhcyBmYS1jaGV2cm9uLWRvd25cXCc6ICFpc0NvbGxhcHNlZERhdGFQcm9wZXJ0eSB9XCI+PC9zcGFuPjwvc3Bhbj4gPHNwYW4gY2xhc3M9dGFnPnt7cmVzb3VyY2UuUmVzb3VyY2VOYW1lfX0gUFJPUEVSVElFUzwvc3Bhbj48L2Rpdj48Zm9ybSBpZD1kYXRhc2V0UHJvcHNGb3JtIHVpYi1jb2xsYXBzZT0haXNDb2xsYXBzZWREYXRhUHJvcGVydHkgbmctc3VibWl0PXNhdmVSZXNvdXJjZURlZihmb3JtKSBuYW1lPWZvcm0gY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC0yNCBtYi0yXCI+PGRpdiBjbGFzcz1jb2w+PGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyLWFjdGlvbnMgcm93IHAtMSBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+PGRpdiBjbGFzcz48ZGl2IGNsYXNzPW15LWF1dG8+QWN0aXZlPC9kaXY+PGxhYmVsIGNsYXNzPVwic3dpdGNoIHN3aXRjaC1ncmVlblwiPjxpbnB1dCBuZy1tb2RlbD1yZXNvdXJjZS5BY3RpdmUgdHlwZT1jaGVja2JveCBuZy10cnVlLXZhbHVlPXRydWUgbmctZmFsc2UtdmFsdWU9ZmFsc2UgY2xhc3M9c3dpdGNoLWlucHV0PiA8c3BhbiBjbGFzcz1zd2l0Y2gtbGFiZWwgZGF0YS1vbj1PbiBkYXRhLW9mZj1PZmY+PC9zcGFuPiA8c3BhbiBjbGFzcz1zd2l0Y2gtaGFuZGxlPjwvc3Bhbj48L2xhYmVsPjwvZGl2PjxkaXYgbmctaWY9XCIocmVzb3VyY2UuaWQgIT0gbnVsbCB8fCByZXNvdXJjZS5pZCA+IDApXCIgY2xhc3M9XCJjb2wtYXV0byBteC0xXCI+PHNwYW4gY2xhc3M9bXQtMT48YiBjbGFzcz1cInRhZyBzbWFsbCB0ZXh0LXN1Y2Nlc3MgbXktMSBtci0yXCI+SUQ8L2I+IHt7cmVzb3VyY2UuaWR9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXgtMVwiPjxzcGFuIGNsYXNzPVwic21hbGwgbXItMlwiPjxiIGNsYXNzPVwidGFnIHRleHQtc3VjY2VzcyBteS0xIG1yLTJcIj5WRVJTSU9OPC9iPiB7e2dzcnZjLnJlc291cmNlRm9ybVZlcnNpb25bcmVzb3VyY2UudWlkXS5WZXJzaW9ufX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIG14LTFcIj48ZGl2IG5nLWlmPVwiKHJlc291cmNlLmlkICE9IG51bGwgfHwgcmVzb3VyY2UuaWQgPiAwKVwiIGNsYXNzPXNtYWxsPjxiIGNsYXNzPVwidGFnIHRleHQtc3VjY2VzcyBteS0xIG1yLTJcIj5TVEFUVVM8L2I+PC9kaXY+PGRpdj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi14c1wiIHRpdGxlPVwiQ2xpY2sgZm9yIHB1Ymxpc2hpbmcgZGV0YWlsc1wiIG5nLWNsYXNzPVwie1xcJ2J0bi1vdXRsaW5lLXN1Y2Nlc3NcXCc6Z3NydmMucmVzb3VyY2VGb3JtVmVyc2lvbltyZXNvdXJjZS51aWRdLlB1Ymxpc2hlZCxcXCdidG4td2FybmluZ1xcJzohZ3NydmMucmVzb3VyY2VGb3JtVmVyc2lvbltyZXNvdXJjZS51aWRdLlB1Ymxpc2hlZH1cIiBuZy1jbGljaz1cInNob3dQdWJsaXNoKFxcJ2Zvcm1cXCcpXCI+PHNwYW4+VmVyc2lvbiB7e2dzcnZjLnJlc291cmNlRm9ybVZlcnNpb25bcmVzb3VyY2UudWlkXS5WZXJzaW9ufX08L3NwYW4+IDxpIG5nLWlmPWdzcnZjLnJlc291cmNlRm9ybVZlcnNpb25bcmVzb3VyY2UudWlkXS5QdWJsaXNoZWQgY2xhc3M9XCJmYSBmYS1jaGVjayBtbC0yXCI+PC9pPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBteC0xIHNtYWxsXCIgdGl0bGU9XCJDcmVhdGVkIGJ5IHt7cmVzb3VyY2UuQ3JlYXRlZEJ5LmZpcnN0X25hbWV9fSB7e3Jlc291cmNlLkNyZWF0ZWRCeS5sYXN0X25hbWV9fVwiIG5nLWlmPVwicmVzb3VyY2UuQ3JlYXRlZEJ5LmlkIT1udWxsXCI+PGIgY2xhc3M9XCJ0YWcgdGV4dC1zdWNjZXNzIG10LTEgbWItMiBtci0yXCI+Q1JFQVRFRDwvYj4ge3tyZXNvdXJjZS5DcmVhdGVkRGF0ZVRpbWUgfCBkYXRlOiBcImRkLk1NLnl5eXkgXFwnYXRcXCcgSEg6bW06c3NcIn19IDxzcGFuIG5nLWlmPXJlc291cmNlLkNyZWF0ZWRCeS5maXJzdF9uYW1lPihieSA8Yj57e3Jlc291cmNlLkNyZWF0ZWRCeS5maXJzdF9uYW1lfX0ge3tyZXNvdXJjZS5DcmVhdGVkQnkubGFzdF9uYW1lfX08L2I+KTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gc21hbGxcIj48c3BhbiB0aXRsZT1cIkNoYW5nZWQgYnkge3tyZXNvdXJjZS5DaGFuZ2VkQnkuZmlyc3RfbmFtZX19IHt7cmVzb3VyY2UuQ2hhbmdlZEJ5Lmxhc3RfbmFtZX19XCIgbmctaWY9XCJyZXNvdXJjZS5DaGFuZ2VkQnkuaWQhPW51bGxcIj48YiBjbGFzcz1cInRhZyB0ZXh0LXN1Y2Nlc3MgbXktMSBtYi0yIG1yLTJcIj5NT0RJRklFRDwvYj48L3NwYW4+IHt7cmVzb3VyY2UuQ2hhbmdlZERhdGVUaW1lIHwgZGF0ZTpcImRkLk1NLnl5eXkgXFwnYXRcXCcgSEg6bW06c3NcIn19IDxzcGFuIG5nLWlmPXJlc291cmNlLkNoYW5nZWRCeS5maXJzdF9uYW1lPihieSA8Yj57e3Jlc291cmNlLkNoYW5nZWRCeS5maXJzdF9uYW1lfX0ge3tyZXNvdXJjZS5DaGFuZ2VkQnkubGFzdF9uYW1lfX08L2I+KTwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTEwIHByLTBcIj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5OYW1lLiR0b3VjaGVkKSAmJiBmb3JtLk5hbWUuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtbGctMjQgZm9yPXJlc291cmNlTmFtZT5OYW1lPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1sZy0yND48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPXJlc291cmNlLk5hbWUgbmctcmVxdWlyZWQ9dHJ1ZSBjbGFzcz1mb3JtLWNvbnRyb2wgaWQ9TmFtZSBuYW1lPU5hbWUgcGxhY2Vob2xkZXI9XCJSZXNvdXJjZSBuYW1lXCI+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5OYW1lLiR0b3VjaGVkKSAmJiBmb3JtLk5hbWUuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIHJlc291cmNlIG5hbWU8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uU3ViamVjdC4kdG91Y2hlZCkgJiYgZm9ybS5TdWJqZWN0LiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTI0IGZvcj1TdWJqZWN0PlN1YmplY3Q8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9cmVzb3VyY2UuU3ViamVjdCBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1TdWJqZWN0IG5hbWU9U3ViamVjdCBwbGFjZWhvbGRlcj1cIlJlc291cmNlIHN1YmplY3RcIj48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLlN1YmplY3QuJHRvdWNoZWQpICYmIGZvcm0uU3ViamVjdC4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIgcmVzb3VyY2Ugc3ViamVjdDwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5EZXNjcmlwdGlvbi4kdG91Y2hlZCkgJiYgZm9ybS5EZXNjcmlwdGlvbi4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1sZy0yNCBmb3I9RGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTI0Pjx0ZXh0YXJlYSBuZy1tb2RlbD1yZXNvdXJjZS5EZXNjcmlwdGlvbiBuYW1lPURlc2NyaXB0aW9uIG5nLXJlcXVpcmVkPXRydWUgbmctbWluLWxlbmd0aD0yMCBjbGFzcz1mb3JtLWNvbnRyb2w+PC90ZXh0YXJlYT48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLkRlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtLkRlc2NyaXB0aW9uLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5FbnRlciByZXNvdXJjZSBkZXNjcmlwdGlvbihtaW4gMjAgY2hhcnMpLjwvcD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGlkZD1kZXNuaSBjbGFzcz1cImNvbC1sZy0xNCBwbC0wIHB0LTNcIj48ZGl2IG5nLWlmPWZhbHNlIGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5yZXNvdXJjZVRhZ3MuJHRvdWNoZWQpICYmIGZvcm0ucmVzb3VyY2VUYWdzLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTI0IGZvcj1kZGxSZXNvdXJjZVR5cGU+I0hhc2hUYWdzPC9sYWJlbD48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHBsLTBcIj48dWktc2VsZWN0IG5nLW1vZGVsPXJlc291cmNlLlRhZ3MgdWktc2VsZWN0LW11bHRpcGxlLWxpc3QgbmctZGlzYWJsZWQ9ZGlzYWJsZWQgY2xvc2Utb24tc2VsZWN0PWZhbHNlIG5hbWU9cmVzb3VyY2VUeXBlIG5nLXJlcXVpcmVkPWZhbHNlIHJlc2V0LXNlYXJjaC1pbnB1dD1mYWxzZT48dWktc2VsZWN0LW1hdGNoIGNsYXNzPXVpLXNlbGVjdC1tYXRjaCBwbGFjZWhvbGRlcj1cIlNlYXJjaCBvciBzZWxlY3QgZGF0YXNldCAjaGFzaHRhZ3MuLi5cIj48c3BhbiBjbGFzcz1wLTA+e3skc2VsZWN0LnNlbGVjdGVkLm5hbWV9fSA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmsgcC0wXCIgbmctY2xpY2s9XCJjbGVhcigkZXZlbnQsICRzZWxlY3QpXCI+PGkgY2xhc3M9XCJtbC0zIGZhIGZhLXRpbWVzIGZsb2F0LXJpZ2h0XCI+PC9pPjwvYT48L3NwYW4+PC91aS1zZWxlY3QtbWF0Y2g+PHVpLXNlbGVjdC1jaG9pY2VzIGNsYXNzPXVpLXNlbGVjdC1jaG9pY2VzIHJlcGVhdD1cInJ0IGluIChyZXNvdXJjZVRhZ3NMaXN0IHwgZmlsdGVyOiB7IG5hbWU6ICRzZWxlY3Quc2VhcmNoIH0pIHRyYWNrIGJ5IHJ0LmlkXCIgcmVmcmVzaD1yZWZyZXNoUmVzdWx0cygkc2VsZWN0KSByZWZyZXNoLWRlbGF5PTA+PHNwYW4+e3tydC5uYW1lfX08L3NwYW4+PC91aS1zZWxlY3QtY2hvaWNlcz48dWktc2VsZWN0LWZvb3Rlcj48L3VpLXNlbGVjdC1mb290ZXI+PHVpLXNlbGVjdC1uby1jaG9pY2U+PC91aS1zZWxlY3Qtbm8tY2hvaWNlPjwvdWktc2VsZWN0PjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ucmVzb3VyY2VUYWdzLiR0b3VjaGVkKSAmJiBmb3JtLnJlc291cmNlVGFncy4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+U2VsZWN0IHJlc291cmNlIGhhc2h0YWdzPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxkaXYga3QtdXNlcnMtZ3JvdXBzLXNlbGVjdCBuZy1pZj1yZXNvdXJjZS5yZXNvdXJjZURlZkRvd25sb2FkZWQgc2VsZWN0ZWQtdXNlcnM9cmVzb3VyY2UuQWRtaW5Vc2VycyBzZWxlY3RlZC1ncm91cHM9cmVzb3VyY2UuQWRtaW5Hcm91cHMgaGVhZGVyLWxhYmVsPXJlc291cmNlLmFkbWluSGVhZGVyTGFiZWwgdXNlcnMtbGFiZWw9XCJcXCdBZG1pbiB1c2Vyc1xcJ1wiIGdyb3Vwcy1sYWJlbD1cIlxcJ0FkbWluIGdyb3Vwc1xcJ1wiIGNsYXNzPWNvbD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0yND48ZGl2IGNsYXNzPWNvbD48YnV0dG9uIHR5cGU9c3VibWl0IGlkPXNhdmVSZXNvdXJjZUJ0biBuZy1kaXNhYmxlZD1mb3JtLiRpbnZhbGlkIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc3VjY2VzcyBteS0yXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1zYXZlIG1yLTJcIj48L3NwYW4+U2F2ZSBwcm9wZXJ0aWVzPC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JtPjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFJlc291cmNlRXhlLmh0bWwnLCc8ZGl2IGt0LWlkPXt7OjpmZC5QcmVzZW50YXRpb25JZH19IGNsYXNzPVwiZm9ybS1ncm91cCBwYi0xIHJvdyBtLTAgZGF0YXNldC1pdGVtXCIgbmctaWY9ZmQuU2hvd0ZpZWxkIG5nLWZvcm09aW5uZXJGb3Jte3s6OmZkLlByZXNlbnRhdGlvbklkfX0gbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGlubmVyRm9ybXt7ZmQuUHJlc2VudGF0aW9uSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7ZmQuUHJlc2VudGF0aW9uSWR9fS5EYXRhc2V0e3tmZC5QcmVzZW50YXRpb25JZH19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17e2ZkLlByZXNlbnRhdGlvbklkfX0uRGF0YXNldHt7ZmQuUHJlc2VudGF0aW9uSWR9fS4kaW52YWxpZCxcXCdiZy1ncmF5LTIwIG1yLTAgYm9yZGVyXFwnOmZkLkl0ZW1JZD09Z3NydmMuZ2V0U2VsZWN0ZWRJdGVtSWQoKSAmJiBnc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKSB9XCI+PGRpdiBuZy1oaWRlPTo6ZmQuUGFyYW1ldGVycy5IaWRlTGFiZWwgc3R5bGU9e3s6OmZkLmxhYmVsQWxpZ259fSBjbGFzcz17e2ZkLmdyaWRDbGFzc0xhYmVsfX0gbmctY2xhc3M9XCJ7XFwnY29sLWF1dG9cXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplfVwiPjxsYWJlbCBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2xhYmVsXFwnXCIgc3R5bGU9e3s6OmZkLmN1c3RvbVN0eWxlTGFiZWx9fSBmb3I9e3s6OmZkLk5hbWV9fXt7OjpmZC5QcmVzZW50YXRpb25JZH19IGNsYXNzPVwicC0wIG1hcmdpbkw1IGZvcm0tY29udHJvbC1sYWJlbCBuby1ib3JkZXIgYWxpZ24tbWlkZGxlXCIgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGlubmVyRm9ybXt7OjpmZC5QcmVzZW50YXRpb25JZH19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3s6OmZkLlByZXNlbnRhdGlvbklkfX0ue3s6OmZkLk5hbWV9fXt7OjpmZC5QcmVzZW50YXRpb25JZH19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17ezo6ZmQuUHJlc2VudGF0aW9uSWR9fS4kaW52YWxpZCxcXCdjdXN0b20tZWwtbGF5b3V0LXN0eWxlXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZX1cIj57ezo6ZmQuTGFiZWx9fSA8c3BhbiBzdHlsZT17ezo6ZmQuY3VzdG9tU3R5bGVMYWJlbH19IG5nLWlmPVwiOjpmZC5QcmVzZW50YXRpb25UeXBlPT0wXCI+KHt7bG9jYWxWYXJzW2ZkLmlkXS5ncmlkRGF0YS5sZW5ndGh9fSB7e2ZkLlNlYXJjaFRleHR9fSk8L3NwYW4+PC9sYWJlbD48L2Rpdj48ZGl2IG5nLWlmPVwiZmQuU2hvd1NlYXJjaEZvcm0gfHwgZmQuUHJlc2VudGF0aW9uVHlwZT09MlwiIGNsYXNzPVwie3tmZC5ncmlkQ2xhc3NFbGVtZW50fX0gcC0wIG15LWF1dG8geHh4XCI+PGRpdiBrdC1ncmlkIGdyaWQtdHlwZT1sb2NhbFZhcnNbZmQuaWRdLmdyaWRzdGVyVHlwZSBzaG93LXNlYXJjaC1maWx0ZXJzPXNob3dTZWFyY2hGaWx0ZXJzIHJlc291cmNlLWZvcm0tbG9hZGVkPWZkLmZvcm1Mb2FkZWQgcGFyZW50LXJlc291cmNlLWRlZi1pZD1mZC5QYXJlbnREYXRhc2V0RGVmSWQgcmVzb3VyY2UtcmVjb3JkLWlkPWxvY2FsVmFyc1tmZC5pZF0uZGF0YXNldFJlY29yZElkIHJlc291cmNlLWRlZmluaXRpb249cmVzb3VyY2VEZWZpbml0aW9uIGZvcm0tcGFyYW1zPWxvY2FsVmFyc1tmZC5pZF0uZm9ybVBhcmFtcyBmb3JtLXBhcmFtcy1wYXJlbnQ9Zm9ybVBhcmFtcyBmb3JtLWRhdGE9Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSBwYXJlbnQ9ZmQuRm9ybURlZlNlYXJjaCBhbGwtY29sdW1ucz1mZC5Gb3JtRGVmU2VhcmNoPjwvZGl2PjxidXR0b24gbmctaWY9ZmFsc2UgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4teHNcIiBuZy1jbGljaz1sb2NhbFZhcnNbZmQuaWRdLlNlbGVjdFJlY29yZHMoKT48aSBjbGFzcz1cImZhIGZhLXNhdmVcIj48L2k+QXBwbHkgc2VhcmNoPC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1cInt7ZmQuZ3JpZENsYXNzRWxlbWVudH19IG15LWF1dG9cIj48ZGl2IG5nLWlmPVwiOjpmZC5QcmVzZW50YXRpb25UeXBlPT0xICYmICFmZC5SZWFkT25seVwiPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBpcy1tdWx0aXBsZT1mZC5NdWx0aWxpbmUgbmctaWY9XCIhZmQuTXVsdGlsaW5lICYmIGZkLmxvY2FsVmFycy5kYXRhc2V0SXRlbXMubGVuZ3RoPjAgJiYgZmQuZGF0YVJlYWR5XCIgbmctbW9kZWw9Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSBzZWxlY3RlZC1pdGVtcz1mb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdIHJlcXVpcmVkLWZpZWxkPTo6ZmQuUmVxdWlyZWQgZHJvcGRvd24taXRlbXM9ZmQubG9jYWxWYXJzLmRhdGFzZXRJdGVtcyBkcm9wZG93bi1pZD1cIlxcJ0RhdGFzZXRcXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2lubmVyRm9ybVxcJytmZC5QcmVzZW50YXRpb25JZFwiIHNlYXJjaC10ZXh0PTo6ZmQuU2VhcmNoVGV4dCBvbi1zZWxlY3QtZm49bG9jYWxWYXJzW2ZkLmlkXS5pdGVtU2VsZWN0ZWQoaXRlbSxtb2RlbCk+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48ZGl2IG5nLWlmPVwiZmQubG9jYWxWYXJzLmRhdGFzZXRJdGVtcy5sZW5ndGg9PTBcIiBjbGFzcz1mb3JtLWNvbnRyb2wgbmctYmluZD1cImZkLlBhcmFtZXRlcnMuTm9EYXRhTXNnIHx8IFxcJ05vIGRhdGEgaW4gZGF0YXNldFxcJ1wiPjwvZGl2PjxrdC1kcm9wZG93bi1tdWx0aXBsZSBuZy1pZj1cImZkLk11bHRpbGluZSAmJiBmZC5sb2NhbFZhcnMuZGF0YXNldEl0ZW1zLmxlbmd0aD4wICYmIGZkLmRhdGFSZWFkeVwiIG5nLW1vZGVsPWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0gc2VsZWN0ZWQtaXRlbXM9Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSBuYW1lPURhdGFzZXR7ezo6ZmQuUHJlc2VudGF0aW9uSWR9fSByZXF1aXJlZD06OmZkLlJlcXVpcmVkIGRyb3Bkb3duLWl0ZW1zPWZkLmxvY2FsVmFycy5kYXRhc2V0SXRlbXMgZHJvcGRvd24taWQ9XCJcXCdEYXRhc2V0e3s6OmZkLlByZXNlbnRhdGlvbklkfX1cXCdcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2lubmVyRm9ybXt7OjpmZC5QcmVzZW50YXRpb25JZH19XFwnXCIgc2VhcmNoLXRleHQ9ZmQuU2VhcmNoVGV4dCBvbi1zZWxlY3QtZm49bG9jYWxWYXJzW2ZkLmlkXS5pdGVtU2VsZWN0ZWQoaXRlbSxtb2RlbCk+PC9rdC1kcm9wZG93bi1tdWx0aXBsZT48cCBuZy1jbGFzcz1cIntcXCdpbnZhbGlkLXRvb2x0aXAgcmlnaHQtMCBtci0zXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCd0b29sdGlwXFwnIHx8IGZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT11bmRlZmluZWQsXFwnaW52YWxpZC1mZWVkYmFja1xcJzpmZC5QYXJhbWV0ZXJzLkVycm9yTXNnVHlwZT09XFwnZmVlZGJhY2tcXCcsXFwnZC1ibG9ja1xcJzooaW5uZXJGb3Jte3s6OmZkLlByZXNlbnRhdGlvbklkfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17ezo6ZmQuUHJlc2VudGF0aW9uSWR9fS57ezo6ZmQuTmFtZX19e3s6OmZkLlByZXNlbnRhdGlvbklkfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7OjpmZC5QcmVzZW50YXRpb25JZH19Lnt7OjpmZC5OYW1lfX17ezo6ZmQuUHJlc2VudGF0aW9uSWR9fS4kaW52YWxpZH1cIj57ezo6ZmQuRXJyb3JNc2d9fTwvcD48L2Rpdj48ZGl2IG5nLWlmPVwiOjpmZC5QcmVzZW50YXRpb25UeXBlPT0xICYmIGZkLlJlYWRPbmx5XCI+PGRpdiBuZy1pZj1cImZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0ubGVuZ3RoPT0wXCIgY2xhc3M9XCJib3JkZXIgcC0xIHJvdW5kZWQtMFwiPjAge3s6OmZkLkxhYmVsfX0gc2VsZWN0ZWQ8L2Rpdj48ZGl2IG5nLWlmPVwiKGZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV09PXVuZGVmaW5lZCB8fCBmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdPT1udWxsKVwiIGNsYXNzPVwiYm9yZGVyIHAtMSByb3VuZGVkIGJnLXdoaXRlXCI+Tm8gZGF0YTwvZGl2PjxkaXYgbmctaWY9XCJmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdLmxlbmd0aD4wICYmIGZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV1bMF0uaWQhPXVuZGVmaW5lZFwiIGNsYXNzPVwicHQtMiBtdC1uMlwiPjxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1zZWNvbmRhcnkgbS0xXCIgbmctcmVwZWF0PVwiaXRlbSBpbiBmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdIHRyYWNrIGJ5IGl0ZW0uaWRcIj48c3BhbiBjbGFzcz57e2l0ZW0ubmFtZX19PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYga3Qtc3R5bGUtYXR0cmlidXRlIGZkPWZkIHN0eWxlLXR5cGU9XCJcXCdlbGVtZW50XFwnXCIgc3R5bGU9e3tmZC5jdXN0b21TdHlsZUVsZW1lbnR9fT57e2Zvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0ubmFtZX19e3tmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdWzBdLm5hbWV9fTwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTI0IG5nLXNob3c9XCJmZC5zZWxlY3RlZFRhc2tzLmxlbmd0aD4wICYmIGZkLnJlc291cmNlRGF0YVJlY29yZFNlbGVjdGVkXCI+PGRpdiBrdC1pbml0aWF0ZS10YXNrLXdpZGdldCBmZD1mZCBsb2NhbC12YXJzPWZkLmxWYXJzPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y2FyZCBuZy1pZj1cImZkLlNlYXJjaC50YXNrSWQuaWQ+MFwiIG5nLXNob3c9OjpmZC5TaG93RmllbGQ+PGRpdiBjbGFzcz1jYXJkLWhlYWRlcj48ZGl2IGt0LXRhc2stcHJvYy1kaXJlY3RpdmUgZmQ9ZmQgdGFza2RlZmluaXRpb249dGFza0RlZmluaXRpb24gbG9jYWwtdmFycz1sb2NhbFZhcnNTZWFyY2g+PC9kaXY+PC9kaXY+PC9kaXY+PGJ1dHRvbiBuZy1pZj1cImxvY2FsVmFyc1tmZC5pZF0uaXNSZWNvcmRTZWxlY3RlZCAmJiBmZC5QYXJhbWV0ZXJzLkRlbGV0ZUNoaWxkcmVuXCIgdHlwZT1idXR0b24gbmctY2xpY2s9bG9jYWxWYXJzW2ZkLmlkXS5kZWxldGVDaGlsZFJlY29yZCgpIGNsYXNzPVwie3tmZC5ncmlkQ2xhc3NFbGVtZW50fX0gYnRuIGJ0bi1kYW5nZXIgYnRuLXhzXCIgc3R5bGU9bWFyZ2luOjEycHg+PGkgY2xhc3M9XCJmYSBmYS10aW1lcy1jaXJjbGUgbXgtMVwiPjwvaT48c3BhbiBuZy1iaW5kPVwiZmQuUGFyYW1ldGVyc0xhbmcuRGVsZXRlTGFiZWxCdG4gfHwgXFwnRGVsZXRlIHJlY29yZFxcJ1wiPjwvc3Bhbj48L2J1dHRvbj48ZGl2IG5nLWlmPVwiOjpmZC5QcmVzZW50YXRpb25UeXBlPT0wXCIgY2xhc3M9e3tmZC5ncmlkQ2xhc3NFbGVtZW50fX0+PGRpdiBuZy1pZj1cImxvY2FsVmFyc1tmZC5pZF0uZGF0YXNldGxpc3RsaW5rZWQgJiYgbG9jYWxWYXJzW2ZkLmlkXS5ncmlkRGF0YVJldHJpZXZlZCAmJiBsb2NhbFZhcnNbZmQuaWRdLmdyaWREYXRhLmxlbmd0aD4wXCI+PGRpdiBrdC1zbWFydC10YWJsZSBwYXJhbWV0ZXJzPWZkLlBhcmFtZXRlcnMgdXNlLXBhZ2luYXRpb249ZmQuUGFyYW1ldGVycy5Vc2VQYWdpbmF0aW9uIGFsbG93LXNvcnQ9dHJ1ZSBpbml0aWFsLXBhZ2U9MSBpdGVtcy1vbi1wYWdlPTEwIHJvdy1zZWxlY3RlZC1jaGFuZ2U9ZmQucm93U2VsZWN0aW9uQ2hhbmdlZChpdGVtKSBmb250LXNpemU9ZmQuUGFyYW1ldGVycy50YWJsZS5mb250U2l6ZSBjZWxsLXBhZGRpbmc9ZmQuUGFyYW1ldGVycy50YWJsZS5jZWxsUGFkZGluZyBjb2x1bW4tZGVmcz1sb2NhbFZhcnNbZmQuaWRdLmNvbHVtbkRlZnMga3QtcmVmcmVzaC1kYXRhPVwibG9jYWxWYXJzW2ZkLmlkXS5nZXREYXRhc2V0RGF0YUZvclNtYXJ0VGFibGUodGFibGVTdGF0ZSwgcGFnZU51bWJlcixwYWdlU2l6ZSlcIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiZHJvcGxlZnQgZWxlbWVudC1wcm9wZXJ0aWVzLWJ0bnMgYmctcHJpbWFyeSByb3VuZGVkIHNoYWRvdyBub3ByaW50XCIgbmctaWY9OjpzaG93U2VhcmNoRmlsdGVycz48YSBpZD1zZWFyY2gtZmlsdGVyLXt7OjpmZC5QcmVzZW50YXRpb25JZH19IGRhdGEtdG9nZ2xlPWRyb3Bkb3duIGFyaWEtaGFzcG9wdXA9dHJ1ZSBhcmlhLWV4cGFuZGVkPWZhbHNlIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi14cyBwcm9wLWJ0blwiIGhyZWY+PGkgY2xhc3M9XCJmYSBmYS1maWx0ZXIge3tmZC5TZWFyY2guaWNvbn19IG1yLTFcIiB0aXRsZT1cIkZpbHRlciA6IHt7ZmQuU2VhcmNoLm5hbWV9fVwiPjwvaT57e2ZkLlNlYXJjaC5uYW1lfX08L2E+PGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgc2hhZG93IHAtMCBkcm9wZG93bi1tYXgtY29udGVudC13aWR0aFwiIHN0eWxlPVwibWluLXdpZHRoOjBweCAhaW1wb3J0YW50XCIgYXJpYS1sYWJlbGxlZGJ5PXNlYXJjaC1maWx0ZXIte3s6OmZkLlByZXNlbnRhdGlvbklkfX0+PGRpdiBjbGFzcz1idG4tZ3JvdXAtdmVydGljYWwgcm9sZT1ncm91cCBhcmlhLWxhYmVsPVwiU2VhcmNoIGZpbHRlclwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5VGV4dEZpbHRlcnMoMCkgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ29ubGlzdFxcJ31cIj48c3BhbiBjbGFzcz1cImZhIGZhLWNoZXZyb24tcmlnaHRcIj48L3NwYW4+IHt7OjpzZWFyY2hbMF0ubmFtZX19PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5VGV4dEZpbHRlcnMoMSkgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ25vdG9ubGlzdFxcJ31cIj48c3BhbiBjbGFzcz1cImZhIGZhLWV4cGFuZFwiPjwvc3Bhbj4ge3s6OnNlYXJjaFsxXS5uYW1lfX08L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RSZXNvdXJjZWlkLmh0bWwnLCc8ZGl2IGlkPWt0UmVzb3VyY2VJZCBjbGFzcz1cInJvdyBtLTAgZm9ybS1ncm91cCBkYXRhc2V0LWl0ZW1cIiBuZy1pZj1cImZkLlNob3dGaWVsZCB8fCByZXNvdXJjZURlZmluaXRpb24uc2hvd0hpZGRlbltyZXNvdXJjZURlZmluaXRpb24ucGFyZW50V2lkZ2V0VWlkICsgXFwnLVxcJysgcmVzb3VyY2VEZWZpbml0aW9uLnVpZF1cIiBuZy1mb3JtPWlubmVyRm9ybXt7JGluZGV4fX0gbmctY2xhc3M9XCJ7XFwndGV4dC1kYW5nZXJcXCcgOiAoaW5uZXJGb3Jte3skaW5kZXh9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7JGluZGV4fX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17eyRpbmRleH19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kaW52YWxpZCxcXCdiZy1ncmF5LTIwIG1yLTAgYm9yZGVyXFwnOmZkPT1nc3J2Yy5nZXRTZWxlY3RlZEZkKCkgJiYgZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzT3BlbmVkKCkgfVwiPjxkaXYgbmctaGlkZT1cIihmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZT09MiB8fCBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MikgJiYgZmQuUGFyYW1ldGVycy5IaWRlTGFiZWxcIiBzdHlsZT17e2ZkLmxhYmVsQWxpZ259fSBjbGFzcz17e2ZkLmdyaWRDbGFzc0xhYmVsfX0gbmctY2xhc3M9XCJ7IFxcJ2NvbC1hdXRvXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZX1cIj48bGFiZWwga3Qtc3R5bGUtYXR0cmlidXRlIGZkPWZkIHN0eWxlLXR5cGU9XCJcXCdsYWJlbFxcJ1wiIHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVMYWJlbH19IGZvcj1cInt7ZmQuTmFtZX19e3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fVwiIGNsYXNzPVwicC0wIG1hcmdpbkw1IGZvcm0tY29udHJvbC1sYWJlbCBuby1ib3JkZXIgYWxpZ24tbWlkZGxlXCIgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kaW52YWxpZCxcXCdjdXN0b20tZWwtbGF5b3V0LXN0eWxlXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MX1cIj57e2ZkLkxhYmVsfX0gPHNwYW4gY2xhc3M9XCJtbC0yIGJhZGdlIGJhZGdlLWluZm9cIiBuZy1pZj0hZmQuU2hvd0ZpZWxkPmhpZGRlbjwvc3Bhbj48L2xhYmVsPjwvZGl2PjxkaXYgc3R5bGU9XCJ2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudFwiIGNsYXNzPVwiYmx1ZS1kcm9wZG93biByb3VuZGVkIHNoYWRvd1wiPjxkaXYgY2xhc3M9XCJlbGVtZW50LXByb3BlcnRpZXMtYnRucyBiZy1wcmltYXJ5IHJvdW5kZWQgc2hhZG93XCIgbmctaWY9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MlwiPjxzcGFuIHRpdGxlPVwiRWxlbWVudCB0eXBlXCIgY2xhc3M9XCJsYWJlbCBsYWJlbC14cyB0ZXh0LXdoaXRlIG14LTEgYm9sZFwiPnt7ZmQuTmFtZX19PC9zcGFuPiA8YSBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4teHMgYm9yZGVyLTAgcHJvcC1idG4gZWxlbWVudC1kcmFnLWhhbmRsZVwiIHRpdGxlPW1vdmUgaHJlZj48aSBjbGFzcz1cImVsZW1lbnQtZHJhZy1oYW5kbGUgZmEgZmEtZ3JpcC12ZXJ0aWNhbFwiPjwvaT48L2E+IDxhIG5nLWNsaWNrPVwiZmQuU2hvd0ZpZWxkPSFmZC5TaG93RmllbGRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4teHMgYm9yZGVyLTAgcHJvcC1idG5cIiB0aXRsZT1zaG93aGlkZSBocmVmPjxpIG5nLWNsYXNzPVwie1xcJ2ZhIGZhLWV5ZVxcJzogZmQuU2hvd0ZpZWxkLCBcXCdmYSBmYS1leWUtc2xhc2hcXCc6ICFmZC5TaG93RmllbGR9XCI+PC9pPjwvYT4gPGEgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIGJvcmRlci0wIHByb3AtYnRuXCIgaHJlZiB0aXRsZT1cIkZpZWxkIHByb3BlcnRpZXNcIiBkYXRhLXRvZ2dsZT10b29sdGlwIGRhdGEtcGxhY2VtZW50PXRvcCBuZy1jbGljaz1zaG93UHJvcGVydGllcygkZXZlbnQpPjxpIGNsYXNzPVwiZmEgZmEtY29nXCI+PC9pPjwvYT48L2Rpdj48ZGl2IGNsYXNzIGFyaWEtbGFiZWxsZWRieT1cIm1hc3MtcHJvcGVydHkte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fVwiIGt0LW1hc3MtdXBkYXRlLXByb3BlcnRpZXM+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInt7ZmQuZ3JpZENsYXNzRWxlbWVudH19IG15LWF1dG9cIj48ZGl2IGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnZWxlbWVudFxcJ1wiIG5nLWNsYXNzPVwie1xcJ2N1c3RvbS1lbC1sYXlvdXQtc3R5bGUgY29sLWF1dG9cXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xLFxcJ2NvbC1hdXRvXFwnOiBmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPTF9XCIgbmctaWY9XCIhZmQuTXVsdGlsaW5lICYmICFmZC5SZWFkT25seVwiIHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVFbGVtZW50fX0+PGRpdiBjbGFzcyBuZy1oaWRlPVwiZmQuU2VhcmNoLm5hbWU9PVxcJ0JldHdlZW5cXCdcIiBuZy1pZj0hZmQuUmVhZE9ubHk+PGlucHV0IHR5cGU9bnVtYmVyIG1pbj0xIHRhYmluZGV4PXt7aW5wdXRBcnJheS50YWJJbmRleH19IG5nLW1vZGVsPWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0gbmctY2hhbmdlPXJlZnJlc2hTZWFyY2hWYWx1ZSgpIG5nLXJlcXVpcmVkPWZkLlJlcXVpcmVkIHBsYWNlaG9sZGVyPXt7ZmQuU2VhcmNoVGV4dH19IG5hbWU9XCJ7e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX1cIiBjbGFzcz1mb3JtLWNvbnRyb2w+PGRpdiBuZy1pZj1zaG93U2VhcmNoRmlsdGVyVHlwZT48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBuZy1iaW5kaW5nXCIgbmctY2xpY2s9YXBwbHlOdW1GaWx0ZXJzKDApPjxzcGFuIGNsYXNzPXt7c2VhcmNoWzBdLmljb259fT48L3NwYW4+IHt7c2VhcmNoWzBdLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBuZy1iaW5kaW5nXCIgbmctY2xpY2s9YXBwbHlOdW1GaWx0ZXJzKDEpPjxzcGFuIGNsYXNzPXt7c2VhcmNoWzFdLmljb259fT48L3NwYW4+IHt7c2VhcmNoWzFdLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBuZy1iaW5kaW5nXCIgbmctY2xpY2s9YXBwbHlOdW1GaWx0ZXJzKDIpPjxzcGFuIGNsYXNzPXt7c2VhcmNoWzJdLmljb259fT48L3NwYW4+IHt7c2VhcmNoWzJdLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBuZy1iaW5kaW5nXCIgbmctY2xpY2s9YXBwbHlOdW1GaWx0ZXJzKDMpPjxzcGFuIGNsYXNzPXt7c2VhcmNoWzNdLmljb259fT48L3NwYW4+IHt7c2VhcmNoWzNdLm5hbWV9fTwvYnV0dG9uPjwvZGl2PjxkaXY+PHNwYW4gbmctc2hvdz1cIihpbm5lckZvcm17eyRpbmRleH19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3skaW5kZXh9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7JGluZGV4fX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiRpbnZhbGlkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlciBzbWFsbFwiPnt7ZmQuZXJyb3JNc2d9fTwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnZWxlbWVudFxcJ1wiIG5nLWlmPWZkLlJlYWRPbmx5IG5nLWNsYXNzPVwie1xcJ2N1c3RvbS1lbC1sYXlvdXQtc3R5bGUgY29sLWF1dG9cXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xLFxcJ2NvbC1hdXRvXFwnOiBmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPTF9XCIgc3R5bGU9e3tmZC5jdXN0b21TdHlsZUVsZW1lbnR9fT48ZGl2IHRpdGxlPXt7Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXX19IG5nLWlmPVwiZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTIgfHwgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPTJcIiBuZy1jbGFzcz1cIntcXCdmb3JtLWNvbnRyb2xcXCc6ZmQuUGFyYW1ldGVycy5Cb3JkZXJGb3JSZWFkT25seX1cIiBjbGFzcz1tYi0xPlJlY29yZCBpZCAtIHBsYWNlaG9sZGVyPC9kaXY+PGRpdiBjbGFzcz1cIm1iLTEgZm9ybS1jb250cm9sXCIgbmctaWY9XCJmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZT09MiAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MlwiPlJlY29yZCBpZCAtIHBsYWNlaG9sZGVyPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1ub3ByaW50IG5nLWlmPVwiIWZkLlJlYWRPbmx5ICYmIChzaG93U2VhcmNoRmlsdGVycyB8fCAhaW5wdXRBcnJheS5Mb2NrZWQpXCIgbmctc2hvdz1cImZkLlNlYXJjaC5uYW1lPT1cXCdCZXR3ZWVuXFwnXCIgXCI+PGlucHV0IHR5cGU9bnVtYmVyIG1pbj0xIHRhYmluZGV4PXt7aW5wdXRBcnJheS50YWJJbmRleH19IG5nLW1vZGVsPWZkLlNlYXJjaC5iZXR3ZWVuMSBuZy1kaXNhYmxlZD1mZC5SZWFkT25seSBuZy1yZXF1aXJlZD1mZC5SZXF1aXJlZCBwbGFjZWhvbGRlcj17e2ZkLlNlYXJjaFRleHR9fSBuYW1lPXt7ZmQuTmFtZX19IGNsYXNzPWZvcm0tY29udHJvbD4gPHNwYW4gY2xhc3M9bm9wcmludCBuZy1zaG93PVwiKGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19Lnt7ZmQuTmFtZX19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19Lnt7ZmQuTmFtZX19LiRpbnZhbGlkXCI+e3tmZC5FcnJvck1zZ319PC9zcGFuPiA8YiBjbGFzcz1cIm5vcHJpbnQgbS0xXCI+QW5kPC9iPiA8aW5wdXQgdHlwZT1udW1iZXIgbWluPTEgdGFiaW5kZXg9e3tpbnB1dEFycmF5LnRhYkluZGV4fX0gbmctbW9kZWw9ZmQuU2VhcmNoLmJldHdlZW4yIG5nLWRpc2FibGVkPWZkLlJlYWRPbmx5IG5nLXJlcXVpcmVkPWZkLlJlcXVpcmVkIHBsYWNlaG9sZGVyPXt7ZmQuU2VhcmNoVGV4dH19IG5hbWU9e3tmZC5OYW1lfX0gY2xhc3M9XCJmb3JtLWNvbnRyb2wgbm9wcmludFwiPiA8c3BhbiBjbGFzcz1ub3ByaW50IG5nLXNob3c9XCIoaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0ue3tmZC5OYW1lfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0ue3tmZC5OYW1lfX0uJGludmFsaWRcIj57e2ZkLkVycm9yTXNnfX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImRyb3BsZWZ0IGVsZW1lbnQtcHJvcGVydGllcy1idG5zIGJnLXByaW1hcnkgcm91bmRlZCBzaGFkb3cgbm9wcmludFwiIG5nLWlmPVwiKGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yIHx8IGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlPT0yKSAmJiBzaG93U2VhcmNoRmlsdGVyc1wiPjxhIGlkPVwic2VhcmNoLWZpbHRlci17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19XCIgZGF0YS10b2dnbGU9ZHJvcGRvd24gYXJpYS1oYXNwb3B1cD10cnVlIGFyaWEtZXhwYW5kZWQ9ZmFsc2UgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIHByb3AtYnRuXCIgaHJlZj48aSBjbGFzcz1cImZhIGZhLWZpbHRlciBtci0xXCIgdGl0bGU9XCJGaWx0ZXIgOiB7e2ZkLlNlYXJjaC5uYW1lfX1cIj48L2k+e3tmZC5TZWFyY2gubmFtZX19PC9hPjxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IHNoYWRvdyBwLTAgZHJvcGRvd24tbWF4LWNvbnRlbnQtd2lkdGhcIiBzdHlsZT1cIm1pbi13aWR0aDowcHggIWltcG9ydGFudFwiIGFyaWEtbGFiZWxsZWRieT1cInNlYXJjaC1maWx0ZXIte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fVwiPjxkaXYgY2xhc3M9YnRuLWdyb3VwLXZlcnRpY2FsIHJvbGU9Z3JvdXAgYXJpYS1sYWJlbD1cIlNlYXJjaCBmaWx0ZXJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseUZpbHRlcnMoMCkgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ2d0XFwnfVwiPjxzcGFuIGNsYXNzPXt7c2VhcmNoWzBdLmljb259fT48L3NwYW4+IHt7c2VhcmNoWzBdLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseUZpbHRlcnMoMSkgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ2JldHdlZW5cXCd9XCI+PHNwYW4gY2xhc3M9e3tzZWFyY2hbMV0uaWNvbn19Pjwvc3Bhbj4ge3tzZWFyY2hbMV0ubmFtZX19PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5RmlsdGVycygyKSBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuU2VhcmNoLmZpbHRlcj09XFwnbHRcXCd9XCI+PHNwYW4gY2xhc3M9e3tzZWFyY2hbMl0uaWNvbn19Pjwvc3Bhbj4ge3tzZWFyY2hbMl0ubmFtZX19PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5RmlsdGVycygzKSBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuU2VhcmNoLmZpbHRlcj09XFwnZXFcXCd9XCI+PHNwYW4gY2xhc3M9e3tzZWFyY2hbM10uaWNvbn19Pjwvc3Bhbj4ge3tzZWFyY2hbM10ubmFtZX19PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0UmVzb3VyY2VpZEV4ZS5odG1sJywnPGRpdiBpZGQ9a3RSZXNvdXJjZUlkIGNsYXNzPVwicm93IG0tMCBmb3JtLWdyb3VwIGRhdGFzZXQtaXRlbVwiIG5nLWlmPWZkLlNob3dGaWVsZCBuZy1mb3JtPWlubmVyRm9ybXt7JGluZGV4fX0gbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGlubmVyRm9ybXt7JGluZGV4fX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17eyRpbmRleH19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3skaW5kZXh9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkfX0uJGludmFsaWQgfVwiPjxkaXYgbmctaGlkZT1cIihmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZT09MiB8fCBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MikgJiYgZmQuUGFyYW1ldGVycy5IaWRlTGFiZWxcIiBzdHlsZT17ezo6ZmQubGFiZWxBbGlnbn19IGNsYXNzPXt7ZmQuZ3JpZENsYXNzTGFiZWx9fSBuZy1jbGFzcz1cIntcXCdjb2wtYXV0b1xcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemV9XCI+PGxhYmVsIGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnbGFiZWxcXCdcIiBzdHlsZT17ezo6ZmQuY3VzdG9tU3R5bGVMYWJlbH19IGZvcj17e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkfX0gY2xhc3M9XCJwLTAgbWFyZ2luTDUgZm9ybS1jb250cm9sLWxhYmVsIG5vLWJvcmRlciBhbGlnbi1taWRkbGVcIiBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiAoaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17e2ZkLkl0ZW1JZH19LiRpbnZhbGlkLFxcJ2N1c3RvbS1lbC1sYXlvdXQtc3R5bGVcXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xfVwiPnt7OjpmZC5MYWJlbH19PC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPVwie3tmZC5ncmlkQ2xhc3NFbGVtZW50fX0gbXktYXV0b1wiPjxkaXYga3Qtc3R5bGUtYXR0cmlidXRlIGZkPWZkIHN0eWxlLXR5cGU9XCJcXCdlbGVtZW50XFwnXCIgbmctY2xhc3M9XCJ7XFwnY3VzdG9tLWVsLWxheW91dC1zdHlsZSBjb2wtYXV0b1xcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEsXFwnY29sLWF1dG9cXCc6IGZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSE9MX1cIiBuZy1pZj1cIiFmZC5NdWx0aWxpbmUgJiYgIWZkLlJlYWRPbmx5XCIgc3R5bGU9e3tmZC5jdXN0b21TdHlsZUVsZW1lbnR9fT48ZGl2IGNsYXNzIG5nLWhpZGU9XCJmZC5TZWFyY2gubmFtZT09XFwnQmV0d2VlblxcJ1wiIG5nLWlmPSFmZC5SZWFkT25seT48aW5wdXQgdHlwZT1udW1iZXIgbWluPTEgdGFiaW5kZXg9e3tpbnB1dEFycmF5LnRhYkluZGV4fX0gbmctbW9kZWw9Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSBuZy1jaGFuZ2U9cmVmcmVzaFNlYXJjaFZhbHVlKCkgbmctcmVxdWlyZWQ9ZmQuUmVxdWlyZWQgcGxhY2Vob2xkZXI9e3tmZC5TZWFyY2hUZXh0fX0gbmFtZT17e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkfX0gY2xhc3M9Zm9ybS1jb250cm9sPjxkaXYgbmctaWY9c2hvd1NlYXJjaEZpbHRlclR5cGU+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbmctYmluZGluZ1wiIG5nLWNsaWNrPWFwcGx5TnVtRmlsdGVycygwKT48c3BhbiBjbGFzcz17e3NlYXJjaFswXS5pY29ufX0+PC9zcGFuPiB7ezo6c2VhcmNoWzBdLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBuZy1iaW5kaW5nXCIgbmctY2xpY2s9YXBwbHlOdW1GaWx0ZXJzKDEpPjxzcGFuIGNsYXNzPXt7c2VhcmNoWzFdLmljb259fT48L3NwYW4+IHt7OjpzZWFyY2hbMV0ubmFtZX19PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG5nLWJpbmRpbmdcIiBuZy1jbGljaz1hcHBseU51bUZpbHRlcnMoMik+PHNwYW4gY2xhc3M9e3tzZWFyY2hbMl0uaWNvbn19Pjwvc3Bhbj4ge3s6OnNlYXJjaFsyXS5uYW1lfX08L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbmctYmluZGluZ1wiIG5nLWNsaWNrPWFwcGx5TnVtRmlsdGVycygzKT48c3BhbiBjbGFzcz17e3NlYXJjaFszXS5pY29ufX0+PC9zcGFuPiB7ezo6c2VhcmNoWzNdLm5hbWV9fTwvYnV0dG9uPjwvZGl2PjxkaXY+PHNwYW4gbmctc2hvdz1cIihpbm5lckZvcm17eyRpbmRleH19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3skaW5kZXh9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7JGluZGV4fX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19LiRpbnZhbGlkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlciBzbWFsbFwiPnt7ZmQuZXJyb3JNc2d9fTwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnZWxlbWVudFxcJ1wiIG5nLWlmPWZkLlJlYWRPbmx5IG5nLWNsYXNzPVwie1xcJ2N1c3RvbS1lbC1sYXlvdXQtc3R5bGUgY29sLWF1dG9cXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xLFxcJ2NvbC1hdXRvXFwnOiBmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPTF9XCIgc3R5bGU9e3tmZC5jdXN0b21TdHlsZUVsZW1lbnR9fT48ZGl2IHRpdGxlPXt7Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXX19IG5nLWNsYXNzPVwie1xcJ2Zvcm0tY29udHJvbFxcJzpmZC5QYXJhbWV0ZXJzLkJvcmRlckZvclJlYWRPbmx5fVwiIGNsYXNzPW1iLTE+e3tmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdfX08L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPW5vcHJpbnQgbmctaWY9XCIhZmQuUmVhZE9ubHkgJiYgKHNob3dTZWFyY2hGaWx0ZXJzIHx8ICFpbnB1dEFycmF5LkxvY2tlZClcIiBuZy1zaG93PVwiZmQuU2VhcmNoLm5hbWU9PVxcJ0JldHdlZW5cXCdcIiBcIj48aW5wdXQgdHlwZT1udW1iZXIgbWluPTEgdGFiaW5kZXg9e3tpbnB1dEFycmF5LnRhYkluZGV4fX0gbmctbW9kZWw9ZmQuU2VhcmNoLmJldHdlZW4xIG5nLWRpc2FibGVkPWZkLlJlYWRPbmx5IG5nLXJlcXVpcmVkPWZkLlJlcXVpcmVkIHBsYWNlaG9sZGVyPXt7ZmQuU2VhcmNoVGV4dH19IG5hbWU9e3tmZC5OYW1lfX0gY2xhc3M9Zm9ybS1jb250cm9sPiA8c3BhbiBjbGFzcz1ub3ByaW50IG5nLXNob3c9XCIoaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX0uJGludmFsaWRcIj57e2ZkLkVycm9yTXNnfX08L3NwYW4+IDxiIGNsYXNzPVwibm9wcmludCBtLTFcIj5BbmQ8L2I+IDxpbnB1dCB0eXBlPW51bWJlciBtaW49MSB0YWJpbmRleD17e2lucHV0QXJyYXkudGFiSW5kZXh9fSBuZy1tb2RlbD1mZC5TZWFyY2guYmV0d2VlbjIgbmctZGlzYWJsZWQ9ZmQuUmVhZE9ubHkgbmctcmVxdWlyZWQ9ZmQuUmVxdWlyZWQgcGxhY2Vob2xkZXI9e3tmZC5TZWFyY2hUZXh0fX0gbmFtZT17e2ZkLk5hbWV9fSBjbGFzcz1cImZvcm0tY29udHJvbCBub3ByaW50XCI+IDxzcGFuIGNsYXNzPW5vcHJpbnQgbmctc2hvdz1cIihpbm5lckZvcm17e2ZkLkl0ZW1JZH19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS57e2ZkLk5hbWV9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS57e2ZkLk5hbWV9fS4kaW52YWxpZFwiPnt7ZmQuRXJyb3JNc2d9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiZHJvcGxlZnQgZWxlbWVudC1wcm9wZXJ0aWVzLWJ0bnMgYmctcHJpbWFyeSByb3VuZGVkIHNoYWRvdyBub3ByaW50XCIgbmctaWY9XCIoZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTIgfHwgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGU9PTIpICYmIHNob3dTZWFyY2hGaWx0ZXJzXCI+PGEgaWQ9c2VhcmNoLWZpbHRlci17e2ZkLlV1aWRSZWZ9fSBkYXRhLXRvZ2dsZT1kcm9wZG93biBhcmlhLWhhc3BvcHVwPXRydWUgYXJpYS1leHBhbmRlZD1mYWxzZSB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4teHMgcHJvcC1idG5cIiBocmVmPjxpIGNsYXNzPVwiZmEgZmEtZmlsdGVyIG1yLTFcIiB0aXRsZT1cIkZpbHRlciA6IHt7OjpmZC5TZWFyY2gubmFtZX19XCI+PC9pPnt7OjpmZC5TZWFyY2gubmFtZX19PC9hPjxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IHNoYWRvdyBwLTAgZHJvcGRvd24tbWF4LWNvbnRlbnQtd2lkdGhcIiBzdHlsZT1cIm1pbi13aWR0aDowcHggIWltcG9ydGFudFwiIGFyaWEtbGFiZWxsZWRieT1zZWFyY2gtZmlsdGVyLXt7ZmQuVXVpZFJlZn19PjxkaXYgY2xhc3M9YnRuLWdyb3VwLXZlcnRpY2FsIHJvbGU9Z3JvdXAgYXJpYS1sYWJlbD1cIlNlYXJjaCBmaWx0ZXJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseUZpbHRlcnMoMCkgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ2d0XFwnfVwiPjxzcGFuIGNsYXNzPXt7c2VhcmNoWzBdLmljb259fT48L3NwYW4+IHt7OjpzZWFyY2hbMF0ubmFtZX19PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5RmlsdGVycygxKSBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuU2VhcmNoLmZpbHRlcj09XFwnYmV0d2VlblxcJ31cIj48c3BhbiBjbGFzcz17e3NlYXJjaFsxXS5pY29ufX0+PC9zcGFuPiB7ezo6c2VhcmNoWzFdLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseUZpbHRlcnMoMikgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ2x0XFwnfVwiPjxzcGFuIGNsYXNzPXt7c2VhcmNoWzJdLmljb259fT48L3NwYW4+IHt7OjpzZWFyY2hbMl0ubmFtZX19PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5RmlsdGVycygzKSBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuU2VhcmNoLmZpbHRlcj09XFwnZXFcXCd9XCI+PHNwYW4gY2xhc3M9e3tzZWFyY2hbM10uaWNvbn19Pjwvc3Bhbj4ge3s6OnNlYXJjaFszXS5uYW1lfX08L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RSZXNvdXJjZWlkUHJvcGVydGllcy5odG1sJywnPGRpdj48ZGl2IGt0LXByb3BlcnR5LWhlYWRlcj48L2Rpdj48ZGl2PjxkaXYgbmctY2xpY2s9XCJsb2NhbFZhcnMuc2hvd0Jhc2ljID0gIWxvY2FsVmFycy5zaG93QmFzaWNcIiBjbGFzcz1cImV4cGFuZC1wcm9wZXJ0eS1wYW5lbCB0YWcgYm9yZGVyLWJvdHRvbSBib3JkZXItc3VjY2VzcyBteS0xIHB5LTFcIiBkYXRhLXRvZ2dsZT1jb2xsYXBzZSBocmVmPSNtYWluUHJvcGVydHlQYW5lbCByb2xlPWJ1dHRvbiBhcmlhLWV4cGFuZGVkPXRydWUgYXJpYS1jb250cm9scz1tYWluUHJvcGVydHlQYW5lbD48c3BhbiBjbGFzcz1cImNvbCBwLTBcIj5CQVNJQzwvc3Bhbj4gPGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLXNob3c9bG9jYWxWYXJzLnNob3dCYXNpYyBjbGFzcz1cImZhcyBmYS1hbmdsZS1kb3duXCI+PC9pPiA8aSBzdHlsZT1cImZvbnQtc2l6ZTogbGFyZ2U7XCIgbmctc2hvdz0hbG9jYWxWYXJzLnNob3dCYXNpYyBjbGFzcz1cImZhcyBmYS1hbmdsZS11cFwiPjwvaT48L2Rpdj48ZGl2IGlkPW1haW5Qcm9wZXJ0eVBhbmVsIGNsYXNzPVwibWItNCBjb2xsYXBzZSBzaG93XCI+PGRpdj48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+UHJpbWFyeSBrZXkgdHlwZTwvbGFiZWw+PGRpdiBjbGFzcz1mb3JtLWNoZWNrPjxsYWJlbCBjbGFzcz1mb3JtLWNoZWNrLWxhYmVsPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9XCJ7e2ZkLlV1aWRSZWYucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fVwiIG5nLW1vZGVsPWZkLkRidHlwZSBuZy1jbGljaz1cImZkLkRiVHlwZT1cXCdpZFxcJ1wiIG5nLWNoZWNrZWQ9XCJmZC5EYnR5cGU9PVxcJ2lkXFwnXCI+IFNlcXVlbmNlPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tY2hlY2s+PGxhYmVsIGNsYXNzPWZvcm0tY2hlY2stbGFiZWw+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT1cInt7ZmQuVXVpZFJlZi5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19XCIgbmctbW9kZWw9ZmQuRGJ0eXBlIG5nLWNsaWNrPVwiZmQuRGJUeXBlPVxcJ3VpZFxcJ1wiIG5nLWNoZWNrZWQ9XCJmZC5EYnR5cGU9PVxcJ3VpZFxcJ1wiPiBVdWlkPC9sYWJlbD48L2Rpdj48L2Rpdj48ZGl2PjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5MYWJlbDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuTGFiZWw+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5TZWFyY2ggVGV4dDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuU2VhcmNoVGV4dD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGt0LWZpZWxkLWV4dGVuZGVkLXByb3BlcnRpZXM+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0UmVzb3VyY2VNYXBwZXIuaHRtbCcsJzxkaXYgY2xhc3M9cm93PjxkaXYgY2xhc3M9XCJjb2wtc20tb2Zmc2V0LTEgY29sLXNtLTEwXCI+PGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLWRlZmF1bHQgcGFkZGluZzAgbWFyZ2luMFwiPjxkaXYgY2xhc3M9cGFuZWwtaGVhZGluZz48c3BhbiBjbGFzcz1cImZhIGZhLXdyZW5jaFwiPiZuYnNwIFByZXZpb3VzIHRhc2s8L3NwYW4+IDxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9XCJpc0NvbGxhcHNlZCA9ICFpc0NvbGxhcHNlZFwiPjxzcGFuIG5nLWNsYXNzPVwie1xcJ2ZhIGZhLXBsdXMtc3F1YXJlXFwnOiBpc0NvbGxhcHNlZCxcXCdmYSBmYS1taW51cy1zcXVhcmVcXCc6ICFpc0NvbGxhcHNlZCB9XCI+PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgdWliLWNvbGxhcHNlPWlzQ29sbGFwc2VkIGNsYXNzPXBhbmVsLWJvZHk+PGRpdiB1aS1ncmlkPWdyaWRPcHRpb25zIHVpLWdyaWQtc2VsZWN0aW9uIHVpLWdyaWQtcmVzaXplLWNvbHVtbnMgY2xhc3M9bXlHcmlkU21hbGw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInBhZGRpbmcwIG1hcmdpbjBcIj48ZGl2IGNsYXNzPVwiY29sLXNtLTYgcGFkZGluZzAgbWFyZ2luMFwiPjxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0IHBhZGRpbmcwIG1hcmdpbjBcIj48ZGl2IGNsYXNzPXBhbmVsLWhlYWRpbmc+PHNwYW4gY2xhc3M9XCJmYSBmYS1yb2NrZXRcIj4mbmJzcCBEYXRhc2V0cyBmcm9tIHN0YXJ0IGZvcm08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cInBhbmVsLWJvZHkgbWF4MjAwXCI+PHVsIGNsYXNzPXJlc291cmNlTWFwcGVyRHJhZ3VsYXIyMSBuZy1jbGFzcz1cIntcXCdtaW4xMFxcJyA6IChwVGFza0luaXRpYXRlRm9ybVJlc291cmNlcy5sZW5ndGg9PTApICYmIChzZWxlY3RlZFJlc291cmNlWzBdLnNyY190eXBlX2lkPT0yMSl9XCI+PGxpIG5nLWlmPVwicFRhc2tJbml0aWF0ZUZvcm1SZXNvdXJjZXMubGVuZ3RoPT0wICYmIHNlbGVjdGVkUmVzb3VyY2VbMF0uc3JjX3R5cGVfaWQ9PTIxXCI+RHJvcCBiYWNrIGRhdGFzZXQgaGVyZTwvbGk+PGxpIG5nLXJlcGVhdD1cInB0aWZyIGluIHBUYXNrSW5pdGlhdGVGb3JtUmVzb3VyY2VzIHRyYWNrIGJ5IHB0aWZyLmlkXCI+PGEgY2xhc3M9XCJlbGVtZW50LWRyYWctaGFuZGxlIGxpc3QtZ3JvdXAtaXRlbVwiIGhyZWY+PHNwYW4gY2xhc3M9e3twdGlmci5mYWNzc319Pjwvc3Bhbj4mbmJzcCB7e3B0aWZyLm5hbWV9fTwvYT48L2xpPjwvdWw+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1zbS02IHBhZGRpbmcwIG1hcmdpbjBcIj48ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdCBwYWRkaW5nMCBtYXJnaW4wXCI+PGRpdiBjbGFzcz1wYW5lbC1oZWFkaW5nPjxzcGFuIGNsYXNzPVwiZmEgZmEtY29nXCI+Jm5ic3AgRGF0YXNldHMgZnJvbSBleGVjdXRlIGZvcm08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cInBhbmVsLWJvZHkgbWF4MjAwXCI+PHVsIGNsYXNzPXJlc291cmNlTWFwcGVyRHJhZ3VsYXIyMiBuZy1jbGFzcz1cIntcXCdtaW4xMFxcJyA6IChwVGFza0V4ZWN1dGVGb3JtUmVzb3VyY2VzLmxlbmd0aD09MCkgJiYgKHNlbGVjdGVkUmVzb3VyY2VbMF0uc3JjX3R5cGVfaWQ9PTIyKX1cIj48bGkgbmctaWY9XCJwVGFza0V4ZWN1dGVGb3JtUmVzb3VyY2VzLmxlbmd0aD09MCAmJiBzZWxlY3RlZFJlc291cmNlWzBdLnNyY190eXBlX2lkPT0yMlwiPkRyb3AgYmFjayBkYXRhc2V0IGhlcmU8L2xpPjxsaSBuZy1yZXBlYXQ9XCJwdGVmciBpbiBwVGFza0V4ZWN1dGVGb3JtUmVzb3VyY2VzIHRyYWNrIGJ5IHB0ZWZyLmlkXCI+PGEgY2xhc3M9XCJlbGVtZW50LWRyYWctaGFuZGxlIGxpc3QtZ3JvdXAtaXRlbVwiIGhyZWY+PHNwYW4gY2xhc3M9e3twdGVmci5mYWNzc319Pjwvc3Bhbj4mbmJzcCB7e3B0ZWZyLm5hbWV9fTwvYT48L2xpPjwvdWw+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1yb3c+PGRpdiBjbGFzcz1jb2wtc20tb2Zmc2V0LTY+PGRpdiBjbGFzcz1cImZhIGZhLWFycm93LWRvd24gZmEtMnhcIj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXJvdz48ZGl2IGNsYXNzPWNvbC1zbS0xMj48ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdCBwYWRkaW5nMCBtYXJnaW4wXCI+PGRpdiBjbGFzcz1wYW5lbC1oZWFkaW5nPjxzcGFuIGNsYXNzPVwiZmEgZmEtd3JlbmNoXCI+Jm5ic3AgQ3VycmVudCB0YXNrPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJwYWRkaW5nMCBtYXJnaW4wXCI+PGRpdiBjbGFzcz1cImNvbC1zbS00IHBhZGRpbmcwIG1hcmdpbjBcIj48ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdCBwYWRkaW5nMCBtYXJnaW4wXCI+PGRpdiBjbGFzcz1wYW5lbC1oZWFkaW5nPjxzcGFuIGNsYXNzPVwiZmEgZmEtcm9ja2V0XCI+Jm5ic3AgRGF0YXNldHMgZnJvbSBzdGFydCBmb3JtPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5IG1heDIwMFwiPjx1bCBjbGFzcz1cInJlc291cmNlTWFwcGVyRHJhZ3VsYXIxMSBsaXN0IGdyb3VwXCIgbmctY2xhc3M9XCJ7XFwnbWluMTBcXCcgOiBpbml0aWF0ZUZvcm1SZXNvdXJjZXMubGVuZ3RoPT0wICYmIHNlbGVjdGVkUmVzb3VyY2VbMF0uc3JjX3R5cGVfaWQ9PTExfVwiPjxsaSBuZy1pZj1cImluaXRpYXRlRm9ybVJlc291cmNlcy5sZW5ndGg9PTAgJiYgc2VsZWN0ZWRSZXNvdXJjZVswXS5zcmNfdHlwZV9pZD09MTFcIj5Ecm9wIGJhY2sgZGF0YXNldCBoZXJlPC9saT48bGkgbmctcmVwZWF0PVwiaWZyIGluIGluaXRpYXRlRm9ybVJlc291cmNlcyB0cmFjayBieSBpZnIuaWRcIj48YSBjbGFzcz1cImVsZW1lbnQtZHJhZy1oYW5kbGUgbGlzdC1ncm91cC1pdGVtXCIgaHJlZj48c3BhbiBjbGFzcz17e2lmci5mYWNzc319Pjwvc3Bhbj4mbmJzcCB7e2lmci5uYW1lfX08L2E+PC9saT48L3VsPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtc20tNCBwYWRkaW5nMCBtYXJnaW4wXCI+PGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLWRlZmF1bHQgcGFkZGluZzAgbWFyZ2luMFwiPjxkaXYgY2xhc3M9cGFuZWwtaGVhZGluZz48c3BhbiBjbGFzcz1cImZhIGZhLWNvZ1wiPiZuYnNwIFNlbGVjdGVkIGRhdGFzZXQ8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cInBhbmVsLWJvZHkgbWF4MjAwXCI+PHVsIGNsYXNzPXJlc291cmNlTWFwcGVyRHJhZ3VsYXIgbmctY2xhc3M9XCJ7XFwnbWluMTBcXCcgOiBzZWxlY3RlZFJlc291cmNlLmxlbmd0aD09MH1cIiBuZy1tb2RlbD1zZWxlY3RlZFJlc291cmNlPjxsaSBuZy1pZj1cInNlbGVjdGVkUmVzb3VyY2UubGVuZ3RoPT0wXCI+RHJvcCBkYXRhc2V0IGhlcmU8L2xpPjxsaSBuZy1yZXBlYXQ9XCJyIGluIHNlbGVjdGVkUmVzb3VyY2UgdHJhY2sgYnkgci5pZFwiPjxhIGNsYXNzPVwiZWxlbWVudC1kcmFnLWhhbmRsZSBsaXN0LWdyb3VwLWl0ZW1cIiBocmVmPjxzcGFuIG5nLWNsYXNzPXIuZmFjc3M+PC9zcGFuPiZuYnNwIHt7ci5uYW1lfX08YnI+KHt7ci5zcmNfdHlwZV9pZH19IDoge3tzcmNfdHlwZV90ZXh0W3Iuc3JjX3R5cGVfaWRdfX0pPC9hPjwvbGk+PC91bD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXNtLTQgcGFkZGluZzAgbWFyZ2luMFwiPjxkaXYgbmctaWY9XCJmb3JtVHlwZT09XFwnZVxcJ1wiIGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdCBwYWRkaW5nMCBtYXJnaW4wXCI+PGRpdiBjbGFzcz1wYW5lbC1oZWFkaW5nPjxzcGFuIGNsYXNzPVwiZmEgZmEtY29nXCI+Jm5ic3AgRXhlY3V0ZSBmb3JtIHJlc291cmNlczwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwicGFuZWwtYm9keSBtYXgyMDBcIj48dWwgY2xhc3M9XCJyZXNvdXJjZU1hcHBlckRyYWd1bGFyMTIgbGlzdCBncm91cFwiIG5nLWNsYXNzPVwie1xcJ21pbjEwXFwnIDogZXhlY3V0ZUZvcm1SZXNvdXJjZXMubGVuZ3RoPT0wICYmIHNlbGVjdGVkUmVzb3VyY2VbMF0uc3JjX3R5cGVfaWQ9PTEyfVwiPjxsaSBuZy1pZj1cImV4ZWN1dGVGb3JtUmVzb3VyY2VzLmxlbmd0aD09MCAmJiBzZWxlY3RlZFJlc291cmNlWzBdLnNyY190eXBlX2lkPT0xMlwiPkRyb3AgYmFjayByZXNvdXJjZSBoZXJlPC9saT48bGkgbmctcmVwZWF0PVwiZWZyIGluIGV4ZWN1dGVGb3JtUmVzb3VyY2VzIHRyYWNrIGJ5IGVmci5pZFwiPjxhIGNsYXNzPVwiZWxlbWVudC1kcmFnLWhhbmRsZSBsaXN0LWdyb3VwLWl0ZW1cIiBocmVmPjxzcGFuIGNsYXNzPXt7ZWZyLmZhY3NzfX0+PC9zcGFuPiZuYnNwIHt7ZWZyLm5hbWV9fTwvYT48L2xpPjwvdWw+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1yb3c+PGRpdiBjbGFzcz1jb2wtc20tb2Zmc2V0LTY+PGRpdiBjbGFzcz1cImZhIGZhLWFycm93LXVwIGZhLTJ4XCI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1yb3c+PGRpdiBjbGFzcz1cImNvbC1zbS1vZmZzZXQtMiBjb2wtc20tOFwiPjxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+PGRpdiBjbGFzcz1wYW5lbC1oZWFkaW5nPjxzcGFuIGNsYXNzPVwiZmEgZmEtd3JlbmNoXCI+Jm5ic3AgRml4ZWQgZGF0YXNldHM8L3NwYW4+IDxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9Zml4ZWRSZXNvdXJjZVNlYXJjaCBwbGFjZWhvbGRlcj1cIlNlYXJjaCBkYXRhc2V0c1wiIGNsYXNzPWZvcm0tY29udHJvbD48L2Rpdj48ZGl2IGNsYXNzPVwicGFuZWwtYm9keSBtYXgyMDBcIj48dWwgY2xhc3M9XCJyZXNvdXJjZU1hcHBlckRyYWd1bGFyMyBsaXN0IGdyb3VwXCIgbmctY2xhc3M9XCJ7XFwnbWluMTBcXCcgOiBmaXhlZFJlc291cmNlcy5sZW5ndGg9PTAgJiYgc2VsZWN0ZWRSZXNvdXJjZVswXS5zcmNfdHlwZV9pZD09M31cIj48bGkgbmctaWY9XCJmaXhlZFJlc291cmNlcy5sZW5ndGg9PTAgJiYgc2VsZWN0ZWRSZXNvdXJjZVswXS5zcmNfdHlwZV9pZD09M1wiPkRyb3AgYmFjayByZXNvdXJjZSBoZXJlPC9saT48bGkgbmctcmVwZWF0PVwiZnIgaW4gZml4ZWRSZXNvdXJjZXMgfCBmaWx0ZXI6IGZpeGVkUmVzb3VyY2VTZWFyY2ggdHJhY2sgYnkgZnIuaWRcIj48YSBjbGFzcz1cImVsZW1lbnQtZHJhZy1oYW5kbGUgbGlzdC1ncm91cC1pdGVtXCIgaHJlZj48c3BhbiBjbGFzcz17e2ZyLmZhY3NzfX0+PC9zcGFuPiZuYnNwIHt7ZnIuaWR9fSB8IHt7ZnIubmFtZX19IHwge3tmci5zdWJqZWN0fX08L2E+PC9saT48L3VsPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFJlc291cmNlUHJvcGVydGllcy5odG1sJywnPGRpdiBjbGFzcz1wLTEgbmctZm9ybT1pbm5lckZvcm1Qcm9wZXJ0aWVzPjxkaXYga3QtcHJvcGVydHktaGVhZGVyPjwvZGl2PjxkaXYgbmctY2xpY2s9XCJmZC5sb2NhbFZhcnNbZmQuaWRdLnNob3dCYXNpYyA9ICFmZC5sb2NhbFZhcnNbZmQuaWRdLnNob3dCYXNpY1wiIGNsYXNzPVwiZXhwYW5kLXByb3BlcnR5LXBhbmVsIHRhZyBib3JkZXItYm90dG9tIGJvcmRlci1zdWNjZXNzIG15LTEgcHktMVwiIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIGhyZWY9I21haW5Qcm9wZXJ0eVBhbmVsIHJvbGU9YnV0dG9uIGFyaWEtZXhwYW5kZWQ9dHJ1ZSBhcmlhLWNvbnRyb2xzPW1haW5Qcm9wZXJ0eVBhbmVsPjxzcGFuIGNsYXNzPVwiY29sIHAtMFwiPk1BSU48L3NwYW4+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PWZkLmxvY2FsVmFyc1tmZC5pZF0uc2hvd0Jhc2ljIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLWRvd25cIj48L2k+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PSFmZC5sb2NhbFZhcnNbZmQuaWRdLnNob3dCYXNpYyBjbGFzcz1cImZhcyBmYS1hbmdsZS11cFwiPjwvaT48L2Rpdj48ZGl2IGNsYXNzPVwibWItNCBjb2xsYXBzZSBzaG93XCIgaWQ9bWFpblByb3BlcnR5UGFuZWw+PGRpdiBjbGFzcz1teS0yIG5nLWlmPVwiZmQuUGFyYW1ldGVycy5SZXNvdXJjZVJlbGF0aW9uc2hpcFR5cGU9PVxcJ25ld1xcJyB8fCBmZC5QYXJhbWV0ZXJzLlJlc291cmNlUmVsYXRpb25zaGlwVHlwZT09XFwndmlld1xcJ1wiPjxkaXYgbmctaWY9XCJmZC5sb2NhbFZhcnNbZmQuaWRdLnJlc291cmNlVHlwZXNMaXN0Lmxlbmd0aD4wXCIgY2xhc3M9XCJjb2wtbGctMjQgbXktMiBwbC0wXCI+PHNwYW4gY2xhc3M9XCJoNiB0ZXh0LW11dGVkIGxhYmVsLXNtXCI+U2VsZWN0IHJlc291cmNlIHR5cGU8L3NwYW4+PC9kaXY+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFyc1tmZC5pZF0ucmVzb3VyY2VUeXBlc0xpc3QubGVuZ3RoPjBcIiBjbGFzcz1cImNvbC1sZy0yNCBwbC0wXCI+PGRpdiBuZy1yZXBlYXQ9XCJydCBpbiBmZC5sb2NhbFZhcnNbZmQuaWRdLnJlc291cmNlVHlwZXNMaXN0XCIgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lXCI+PGxhYmVsIGNsYXNzPWZvcm0tY2hlY2stbGFiZWw+PGlucHV0IHR5cGU9cmFkaW8gbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5SZXNvdXJjZVR5cGUgbmctdmFsdWU9cnQudHlwZSBuZy1jbGljaz1mZC5sb2NhbFZhcnNbZmQuaWRdLmdldFJlc291cmNlcyhydC50eXBlKT4ge3tydC5uYW1lfX08L2xhYmVsPjwvZGl2PjwvZGl2PjxsYWJlbCBjbGFzcz1cInBsLTAgcHQtMiBsYWJlbC14cyB0ZXh0LW11dGVkXCI+U2VsZWN0IHBhcmVudCB7e2ZkLlBhcmFtZXRlcnMuUmVzb3VyY2VUeXBlfX08L2xhYmVsPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1tb2RlbD1mZC5zZWxlY3RlZFJlc291cmNlIHNpemU9XCJcXCdzbWFsbFxcJ1wiIHNlbGVjdGVkLWl0ZW1zPWZkLnNlbGVjdGVkUmVzb3VyY2UgbmctaWY9ZmQuUmVsYXRlZExvYWRlZCBvbi1zZWxlY3QtZm49ZmQub25TZWxlY3RDYWxsYmFjayhpdGVtLG1vZGVsKSBpcy1tdWx0aXBsZT1mYWxzZSBuYW1lPXNlbGVjdGVkRGF0YXNldHt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1yZXF1aXJlZD10cnVlIGRyb3Bkb3duLWl0ZW1zPWZkLnJlc291cmNlc0xpc3QgZHJvcGRvd24taWQ9XCJcXCdzZWxlY3RlZERhdGFzZXRcXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ3NlbGVjdGVkRGF0YXNldFxcJytmZC5QcmVzZW50YXRpb25JZFwiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IFxcJytmZC5QYXJhbWV0ZXJzLlJlc291cmNlVHlwZVwiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PC9kaXY+PGRpdiBjbGFzcz1tYi0xIG5nLWlmPVwiZmQuUGFyYW1ldGVycy5SZXNvdXJjZVJlbGF0aW9uc2hpcFR5cGU9PT1cXCdleGlzdGluZ1xcJ1wiPjxkaXY+PHNwYW4gY2xhc3M9bXItMj5DaGlsZCByZXNvdXJjZTo8L3NwYW4+PHNwYW4gY2xhc3M9Ym9sZCBuZy1iaW5kPVwiZmQuUGFyYW1ldGVycy5DaGlsZFJlc291cmNlTmFtZSB8fCBcXCdub25lXFwnXCI+PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gY2xhc3M9bXItMj5SZWxhdGlvbnNoaXAgdHlwZTo8L3NwYW4+PHNwYW4gY2xhc3M9Ym9sZCBuZy1pZj1cImZkLk1heExlbmd0aD09MVwiPk9uZSB0byBtYW55ICgxOm4pPC9zcGFuPiA8c3BhbiBjbGFzcz1ib2xkIG5nLWlmPVwiZmQuTWF4TGVuZ3RoIT0xXCI+TWFueSB0byBtYW55IChtOm4pPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9bXktMT48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWw+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuR2V0RGF0YT4gR2V0IGRhdGE8L2xhYmVsPjwvZGl2PjwvZGl2PjxkaXYgbmctY2xpY2s9XCJmZC5sb2NhbFZhcnNbZmQuaWRdLnNob3dVaSA9ICFmZC5sb2NhbFZhcnNbZmQuaWRdLnNob3dVaVwiIGNsYXNzPVwiZXhwYW5kLXByb3BlcnR5LXBhbmVsIHRhZyBib3JkZXItYm90dG9tIGJvcmRlci1zdWNjZXNzIG15LTEgcHktMVwiIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIGhyZWY9I3VpUHJvcGVydHlQYW5lbCByb2xlPWJ1dHRvbiBhcmlhLWV4cGFuZGVkPXRydWUgYXJpYS1jb250cm9scz11aVByb3BlcnR5UGFuZWw+PHNwYW4gY2xhc3M9XCJjb2wgcC0wXCI+VUkgY29tcG9uZW50PC9zcGFuPiA8aSBzdHlsZT1cImZvbnQtc2l6ZTogbGFyZ2U7XCIgbmctaGlkZT1mZC5sb2NhbFZhcnNbZmQuaWRdLnNob3dVaSBjbGFzcz1cImZhcyBmYS1hbmdsZS1kb3duXCI+PC9pPiA8aSBzdHlsZT1cImZvbnQtc2l6ZTogbGFyZ2U7XCIgbmctaGlkZT0hZmQubG9jYWxWYXJzW2ZkLmlkXS5zaG93VWkgY2xhc3M9XCJmYXMgZmEtYW5nbGUtdXBcIj48L2k+PC9kaXY+PGRpdiBjbGFzcz1cIm1iLTQgY29sbGFwc2VcIiBpZD11aVByb3BlcnR5UGFuZWw+PGRpdiBuZy1pZj1mZC5sb2NhbFZhcnNbZmQuaWRdLnB1Ymxpc2hlZExvYWRlZD48bGFiZWwgY2xhc3M9XCJwbC0wIGxhYmVsLXhzIHRleHQtbXV0ZWRcIiBmb3I9c2VsZWN0ZWRQdWJsaXNoZWR7e2ZkLlByZXNlbnRhdGlvbklkfX0+U2VsZWN0IGZvcm08L2xhYmVsPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1tb2RlbD1mZC5sb2NhbFZhcnNbZmQuaWRdLnB1Ymxpc2hlZFJlc291cmNlIHNpemU9XCJcXCdzbWFsbFxcJ1wiIHNlbGVjdGVkLWl0ZW1zPWZkLmxvY2FsVmFyc1tmZC5pZF0ucHVibGlzaGVkUmVzb3VyY2Ugb24tc2VsZWN0LWZuPWZkLm9uU2VsZWN0UHVibGlzaGVkKGl0ZW0sbW9kZWwpIGlzLW11bHRpcGxlPWZhbHNlIG5hbWU9c2VsZWN0ZWRQdWJsaXNoZWR7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctcmVxdWlyZWQ9dHJ1ZSBkcm9wZG93bi1pdGVtcz1mZC5sb2NhbFZhcnNbZmQuaWRdLnB1Ymxpc2hlZFJlc291cmNlTGlzdCBkcm9wZG93bi1pZD1cIlxcJ3NlbGVjdGVkUHVibGloZWRcXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ3NlbGVjdGVkUHVibGlzaGVkXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgcmVzb3VyY2UgZm9ybVxcJ1wiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTAgbXktMlwiIG5nLWlmPVwiZmQubG9jYWxWYXJzW2ZkLmlkXS5wdWJsaXNoZWRSZXNvdXJjZSE9bnVsbCAmJiBmZC5sb2NhbFZhcnNbZmQuaWRdLnB1Ymxpc2hlZFJlc291cmNlIT11bmRlZmluZWRcIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXktMVwiPjxsYWJlbCBjbGFzcz1mb3JtLWNoZWNrLWxhYmVsPjxpbnB1dCB0eXBlPXJhZGlvIG5nLW1vZGVsPWZkLlByZXNlbnRhdGlvblR5cGUgdmFsdWU9MD4gVGFibGU8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBteS0xXCI+PGxhYmVsIGNsYXNzPWZvcm0tY2hlY2stbGFiZWw+PGlucHV0IHR5cGU9cmFkaW8gbmctbW9kZWw9ZmQuUHJlc2VudGF0aW9uVHlwZSB2YWx1ZT0xPiBEcm9wZG93bjwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIG15LTFcIj48bGFiZWwgY2xhc3M9Zm9ybS1jaGVjay1sYWJlbD48aW5wdXQgdHlwZT1yYWRpbyBuZy1tb2RlbD1mZC5QcmVzZW50YXRpb25UeXBlIHZhbHVlPTIgbmctY2xpY2s9ZmQubG9jYWxWYXJzW2ZkLmlkXS5TaG93Rm9ybShmZC5QYXJhbWV0ZXJzLlB1Ymxpc2hlZFJlc291cmNlSWQpPiBGb3JtPC9sYWJlbD48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwiZmQuUHJlc2VudGF0aW9uVHlwZT09MVwiPjxkaXY+PGxhYmVsIGNsYXNzPVwicGwtMCBsYWJlbC14cyB0ZXh0LW11dGVkXCIgZm9yPW5hbWVGaWVsZD5TZWxlY3QgaWQgZmllbGQ8L2xhYmVsPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1tb2RlbD1cImZkLk5hbWVGaWVsZFtcXCdpZFxcJ11cIiBzaXplPVwiXFwnc21hbGxcXCdcIiBpcy1tdWx0aXBsZT1mYWxzZSBzZWxlY3RlZC1pdGVtcz1cImZkLk5hbWVGaWVsZFtcXCdpZFxcJ11cIiBuYW1lPW5hbWVGaWVsZElke3tmZC5QcmVzZW50YXRpb25JZH19IHJlcXVpcmVkPXRydWUgZHJvcGRvd24taXRlbXM9ZmQucHJlc2VudGF0aW9uRWxlbWVudHMgZHJvcGRvd24taWQ9XCJcXCduYW1lRmllbGRJZFxcJytmZC5QcmVzZW50YXRpb25JZFwiIHBhcmVudC1mb3JtLWlkPVwiXFwnbmFtZUZpZWxkSWRcXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCBpZCBmaWVsZCBmb3IgZHJvcGRvd25cXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjwvZGl2PjxkaXY+PGxhYmVsIGNsYXNzPVwicGwtMCBsYWJlbC14cyB0ZXh0LW11dGVkXCIgZm9yPW5hbWVGaWVsZD5TZWxlY3QgZGF0YXNldCBmaWVsZHM8L2xhYmVsPjxrdC1kcm9wZG93bi1tdWx0aXBsZSBuZy1tb2RlbD1cImZkLk5hbWVGaWVsZFtcXCduYW1lXFwnXVwiIHNpemU9XCJcXCdzbWFsbFxcJ1wiIHNlbGVjdGVkLWl0ZW1zPVwiZmQuTmFtZUZpZWxkW1xcJ25hbWVcXCddXCIgbmFtZT1uYW1lRmllbGR7e2ZkLlByZXNlbnRhdGlvbklkfX0gcmVxdWlyZWQ9ZmFsc2UgZHJvcGRvd24taXRlbXM9ZmQucHJlc2VudGF0aW9uRWxlbWVudHMgZHJvcGRvd24taWQ9XCJcXCduYW1lRmllbGRcXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ25hbWVGaWVsZFxcJytmZC5QcmVzZW50YXRpb25JZFwiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IGZpZWxkcyBmb3IgZHJvcGRvd25cXCdcIj48L2t0LWRyb3Bkb3duLW11bHRpcGxlPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5TZXBhcmF0b3I8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPVwiZmQuTmFtZUZpZWxkW1xcJ3NlcGFyYXRvclxcJ11cIj48L2Rpdj48L2Rpdj48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+TGFiZWw8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLkxhYmVsPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+RXJyb3IgbXNnPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5FcnJvck1zZz4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPlJlY29yZHMgbGFiZWw8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlNlYXJjaFRleHQ+PC9kaXY+PGRpdiBjbGFzcz1cIm10LTEgbWItMVwiIGlkPWV4dGVuZGVkUHJvcGVydHlQYW5lbD48ZGl2IGt0LWZpZWxkLWRhdGEtc291cmNlLXByb3BlcnRpZXM+PC9kaXY+PGRpdiBrdC1maWVsZC1zaXplLXByb3BlcnR5PjwvZGl2PjxkaXYga3QtZmllbGQtc3R5bGUtcHJvcGVydHk+PC9kaXY+PGRpdiBrdC1maWVsZC1hZHZhbmNlZC1wcm9wZXJ0aWVzPjwvZGl2PjwvZGl2PjxkaXYga3QtZGVsZXRlLWVsZW1lbnQ+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0UmVzb3VyY2VSZWYuaHRtbCcsJzxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHBiLTEgcm93IG0tMCBkYXRhc2V0LWl0ZW0gcmVzb3VyY2UtcmVmZXJlbmNlXCIgbmctaWY9XCJmZC5TaG93RmllbGQgfHwgKGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xICYmIGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlIT0yKVwiIG5nLWZvcm09aW5uZXJGb3Jte3s6OmZkLkl0ZW1JZH19IG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlclxcJyA6IChpbm5lckZvcm17e2ZkLkl0ZW1JZH19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS5EYXRhc2V0e3tmZC5JdGVtSWR9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS5EYXRhc2V0e3tmZC5JdGVtSWR9fS4kaW52YWxpZCxcXCdiZy1ncmF5LTIwIG1yLTAgYm9yZGVyXFwnOmZkLkl0ZW1JZD09Z3NydmMuZ2V0U2VsZWN0ZWRJdGVtSWQoKSAmJiBnc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKSB9XCI+PGRpdiBzdHlsZT17e2ZkLmxhYmVsQWxpZ259fSBjbGFzcz17e2ZkLmdyaWRDbGFzc0xhYmVsfX0gbmctY2xhc3M9XCJ7XFwnY29sLWF1dG9cXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplfVwiPjxsYWJlbCBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2xhYmVsXFwnXCIgc3R5bGU9e3tmZC5jdXN0b21TdHlsZUxhYmVsfX0gZm9yPXt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fSBjbGFzcz1cInB0LTIgbWFyZ2luTDUgZm9ybS1jb250cm9sLWxhYmVsIG5vLWJvcmRlciBhbGlnbi1taWRkbGVcIiBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiAoaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17e2ZkLkl0ZW1JZH19LiRpbnZhbGlkLFxcJ2N1c3RvbS1lbC1sYXlvdXQtc3R5bGVcXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xfVwiPnt7ZmQuTmFtZX19IDxzcGFuIHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVMYWJlbH19IG5nLWlmPWZkLkxhYmVsPi0ge3tmZC5MYWJlbH19PC9zcGFuPjwvbGFiZWw+PGRpdiBjbGFzcz1cImZvcm0tY29udHJvbCBwLTFcIj5SZXNvdXJjZSByZWZlcmVuY2UgcGxhY2Vob2xkZXI8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0yNCBuZy1pZj1mZC5QYXJhbWV0ZXJzLlJlc291cmNlVHlwZT48c3BhbiBjbGFzcz1ib2xkPlNlbGVjdGVkIHJlc291cmNlIHR5cGUgZmlsdGVyOjwvc3Bhbj48c3BhbiBjbGFzcz1cIm1yLTMgbWItMyB0ZXh0LXByaW1hcnkgYm9sZFwiPnt7ZmQuUGFyYW1ldGVycy5SZXNvdXJjZVR5cGV9fTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPVwidmlzaWJpbGl0eTp2aXNpYmxlICFpbXBvcnRhbnRcIiBjbGFzcz1cImJsdWUtZHJvcGRvd24gcm91bmRlZCBzaGFkb3dcIj48ZGl2IGNsYXNzPVwiZWxlbWVudC1wcm9wZXJ0aWVzLWJ0bnMgYmctcHJpbWFyeSByb3VuZGVkIHNoYWRvdyBtdC0yXCI+PHNwYW4gY2xhc3M9XCJsYWJlbCBsYWJlbC14cyB0ZXh0LXdoaXRlIG1sLTEgYm9sZFwiPnt7ZmQuTmFtZX19PC9zcGFuPiA8YSBocmVmIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi14cyBwcm9wLWJ0biBlbGVtZW50LWRyYWctaGFuZGxlXCIgdGl0bGU9c29ydD48aSBjbGFzcz1cImVsZW1lbnQtZHJhZy1oYW5kbGUgZmEgZmEtZ3JpcC12ZXJ0aWNhbFwiPjwvaT48L2E+IDxhIGhyZWYgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIHByb3AtYnRuXCIgbmctY2xpY2s9Z3NydmMuc2V0RmllbGRQcm9wZXJ0aWVzKGZkLCRldmVudCk+PGkgY2xhc3M9XCJmYSBmYS1jb2dcIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3MgYXJpYS1sYWJlbGxlZGJ5PW1hc3MtcHJvcGVydHkte3tmZC5QcmVzZW50YXRpb25JZH19IGt0LW1hc3MtdXBkYXRlLXByb3BlcnRpZXM+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0UmVzb3VyY2VSZWZQcm9wZXJ0aWVzLmh0bWwnLCc8ZGl2IGNsYXNzPXAtMSBuZy1mb3JtPWlubmVyRm9ybVByb3BlcnRpZXM+PGRpdiBrdC1wcm9wZXJ0eS1oZWFkZXI+PC9kaXY+PGRpdj48bGFiZWw+TGFiZWw8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPWZvcm0tY29udHJvbCBuZy1tb2RlbD1mZC5MYWJlbD4gPGxhYmVsPkVycm9yIG1zZzwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9Zm9ybS1jb250cm9sIG5nLW1vZGVsPWZkLkVycm9yTXNnPiA8bGFiZWw+U2VhcmNoVGV4dDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9Zm9ybS1jb250cm9sIG5nLW1vZGVsPWZkLlNlYXJjaFRleHQ+PGRpdiBjbGFzcz1jaGVja2JveD48bGFiZWw+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmctbW9kZWw9ZmQuUmVxdWlyZWQ+IFJlcXVpcmVkPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0yND48ZGl2IGNsYXNzPVwicm93IG0tMCBteS0xIHAtMSBib3JkZXIgcm91bmRlZCBzaGFkb3ctc21cIj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IG15LTJcIj48bGFiZWwgY2xhc3M9XCJwbC0wIGxhYmVsIHRleHQtbXV0ZWRcIiBmb3I9bmFtZUZpZWxkPlNlbGVjdCByZXNvdXJjZSB0eXBlIGZpbHRlcjwvbGFiZWw+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuUmVzb3VyY2VUeXBlIHNlbGVjdGVkLWl0ZW1zPWZkLlBhcmFtZXRlcnMuUmVzb3VyY2VUeXBlIG9uLXNlbGVjdC1mbj1mZC5sb2NhbFZhcnMub25TZWxlY3RDYWxsYmFjayhpdGVtLG1vZGVsKSBpcy1tdWx0aXBsZT1mYWxzZSBuYW1lPVwic2VsZWN0ZWRSZXNvdXJjZVR5cGV7e2ZkLlV1aWRSZWYucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fVwiIG5nLXJlcXVpcmVkPXRydWUgZHJvcGRvd24taXRlbXM9ZmQubG9jYWxWYXJzLnJlc291cmNlVHlwZXNMaXN0IGRyb3Bkb3duLWlkPVwiXFwnc2VsZWN0ZWRSZXNvdXJjZVR5cGVcXCcrZmQuVXVpZFJlZi5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKVwiIHBhcmVudC1mb3JtLWlkPVwiXFwnc2VsZWN0ZWRSZXNvdXJjZVR5cGVcXCcrZmQuVXVpZFJlZi5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKVwiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IHJlc291cmNlIHR5cGVcXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxkaXY+UG9wdWxhdGUgdmFsdWU8L2Rpdj48aW5wdXQgdHlwZT1yYWRpbyBpZD1cInJhZGlvUG9wdWxhdGVUeXBle3tmZC5VdWlkUmVmLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0tMFwiIG5hbWU9XCJyYWRpb1BvcHVsYXRlVHlwZXt7ZmQuVXVpZFJlZi5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19XCIgbmctbW9kZWw9ZmQuUG9wdWxhdGVUeXBlIHZhbHVlPTAgbmctY2hlY2tlZD1cImZkLlBvcHVsYXRlVHlwZT09MFwiPiA8bGFiZWwgZm9yPVwicmFkaW9Qb3B1bGF0ZVR5cGV7e2ZkLlV1aWRSZWYucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS0wXCIgY2xhc3M9Zm9ybS1jaGVjay1sYWJlbD5NYW51YWxseTwvbGFiZWw+PGJyPjxpbnB1dCB0eXBlPXJhZGlvIGlkPVwicmFkaW9Qb3B1bGF0ZVR5cGV7e2ZkLlV1aWRSZWYucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS0xXCIgbmFtZT1cInJhZGlvUG9wdWxhdGVUeXBle3tmZC5VdWlkUmVmLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX1cIiBuZy1tb2RlbD1mZC5Qb3B1bGF0ZVR5cGUgdmFsdWU9MSBuZy1jaGVja2VkPVwiZmQuUG9wdWxhdGVUeXBlPT0xXCI+IDxsYWJlbCBmb3I9XCJyYWRpb1BvcHVsYXRlVHlwZXt7ZmQuVXVpZFJlZi5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LTFcIiBjbGFzcz1mb3JtLWNoZWNrLWxhYmVsPkF1dG8gZmlsbCB3aXRoIHRoaXMgcmVzb3VyY2U8L2xhYmVsPjxicj48aW5wdXQgdHlwZT1yYWRpbyBpZD1cInJhZGlvUG9wdWxhdGVUeXBle3tmZC5VdWlkUmVmLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0tMlwiIG5hbWU9XCJyYWRpb1BvcHVsYXRlVHlwZXt7ZmQuVXVpZFJlZi5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19XCIgbmctbW9kZWw9ZmQuUG9wdWxhdGVUeXBlIHZhbHVlPTIgbmctY2hlY2tlZD1cImZkLlBvcHVsYXRlVHlwZT09MlwiPiA8bGFiZWwgZm9yPVwicmFkaW9Qb3B1bGF0ZVR5cGV7e2ZkLlV1aWRSZWYucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS0yXCIgY2xhc3M9Zm9ybS1jaGVjay1sYWJlbD5BdXRvIGZpbGwgd2l0aCBwcmV2aW91cyByZXNvdXJjZTwvbGFiZWw+PGJyPjwvZGl2PjwvZGl2PjxkaXYga3QtZmllbGQtZXh0ZW5kZWQtcHJvcGVydGllcz48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RSZXNvdXJjZVNlbGVjdG9yLmh0bWwnLCc8ZGl2IGlkPWt0UmVzb3VyY2VTZWxlY3Rvcnt7ZmQuUHJlc2VudGF0aW9uSWR9fSBjbGFzcz1cImNhcmQgYm9yZGVyLTBcIj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgbmctaWY9cmVzb3VyY2VUeXBlc0xpc3QubGVuZ3RoIGNsYXNzPVwiY29sLWxnLTI0IG15LTJcIj48c3BhbiBjbGFzcz1oNj5TZWxlY3QgcmVzb3VyY2UgdHlwZTwvc3Bhbj48L2Rpdj48ZGl2IG5nLWlmPXJlc291cmNlVHlwZXNMaXN0Lmxlbmd0aCBjbGFzcz1jb2wtbGctMjQ+PGRpdiBuZy1yZXBlYXQ9XCJydCBpbiByZXNvdXJjZVR5cGVzTGlzdFwiIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZVwiPjxsYWJlbCBjbGFzcz1mb3JtLWNoZWNrLWxhYmVsPjxpbnB1dCB0eXBlPXJhZGlvIG5nLW1vZGVsPXBhcmFtZXRlcnMuU2VsZWN0ZWRSZXNvdXJjZVR5cGUgbmctY2hlY2tlZD1cInBhcmFtZXRlcnMuU2VsZWN0ZWRSZXNvdXJjZVR5cGU9PXJ0LnR5cGVcIiB2YWx1ZT17e3J0LnR5cGV9fSBuZy1jbGljaz1nZXRSZXNvdXJjZXMocnQudHlwZSk+IHt7cnQubmFtZX19PC9sYWJlbD48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPXBhcmFtZXRlcnMuU2VsZWN0ZWRSZXNvdXJjZVR5cGUgY2xhc3M9XCJjb2wtMjQgbXQtMlwiPjxzcGFuIGNsYXNzPVwiaDYgdGV4dC1kYXJrXCI+U2VsZWN0IHt7cGFyYW1ldGVycy5TZWxlY3RlZFJlc291cmNlVHlwZX19PC9zcGFuPjwvZGl2PjxkaXYgbmctaWY9cGFyYW1ldGVycy5TZWxlY3RlZFJlc291cmNlVHlwZSBjbGFzcz1cImNvbC0yNCBtdC0yXCIgbmctZm9ybT1pbm5lckZvcm1TdWJRdWVyeXt7ZmQuUHJlc2VudGF0aW9uSWR9fT48ZGl2PjxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1pZj1yZXNvdXJjZUxpc3RbcGFyYW1ldGVycy5TZWxlY3RlZFJlc291cmNlVHlwZV0ubGVuZ3RoIGlzLW11bHRpcGxlPWZhbHNlIG5nLW1vZGVsPXNlbGVjdGVkUmVzb3VyY2Ugc2VsZWN0ZWQtaXRlbXM9c2VsZWN0ZWRSZXNvdXJjZSByZXF1aXJlZC1maWVsZD10cnVlIGRyb3Bkb3duLWl0ZW1zPXJlc291cmNlTGlzdFtwYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlXSBkcm9wZG93bi1pZD1cIlxcJ3Jlc291cmNlXFwnK2ZkLk5hbWUrZmQuSXRlbUlkXCIgcGFyZW50LWZvcm0taWQ9XCJcXCdpbm5lckZvcm1TdWJRdWVyeVxcJytmZC5QcmVzZW50YXRpb25JZFwiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IFxcJytwYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlXCIgb24tc2VsZWN0LWZuPW9uUmVzb3VyY2VTZWxlY3RvckNhbGxiYWNrKGl0ZW0sbW9kZWwpPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PGRpdiBuZy1pZj0hcmVzb3VyY2VMaXN0W3BhcmFtZXRlcnMuU2VsZWN0ZWRSZXNvdXJjZVR5cGVdLmxlbmd0aD5ObyB7e3BhcmFtZXRlcnMuU2VsZWN0ZWRSZXNvdXJjZVR5cGV9fXMgITwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLTI0IG5nLWlmPXNlbGVjdGVkUmVzb3VyY2UuaWQ+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYlZlcnNpb257e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JWZXJzaW9ue3tmZC5QcmVzZW50YXRpb25JZH19IG5nLW1vZGVsPXBhcmFtZXRlcnMuc2VsZWN0VmVyc2lvbkRpcmVjdCBuZy1jaGVja2VkPXBhcmFtZXRlcnMuU2VsZWN0VmVyc2lvbkRpcmVjdCBuZy1jbGljaz1nZXRQdWJsaXNoZWRSZXNvdXJjZXMoIXBhcmFtZXRlcnMuU2VsZWN0VmVyc2lvbkRpcmVjdCk+IFNlbGVjdCB7e3BhcmFtZXRlcnMuU2VsZWN0ZWRSZXNvdXJjZVR5cGV9fSB2ZXJzaW9uIG1hbnVhbGx5IChpZiBub3QgY2hlY2tlZCBsYXRlc3QgcHVibGlzaGVkIHZlcnNpb24gd2lsbCBiZSB1c2VkKTwvbGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTBcIiBuZy1pZj1wYXJhbWV0ZXJzLlNlbGVjdFZlcnNpb25EaXJlY3Q+PGRpdiBjbGFzcz1cImNvbC0yNCBtdC0yXCI+PHNwYW4gY2xhc3M9XCJoNiB0ZXh0LWRhcmtcIj5TZWxlY3QgdmVyc2lvbjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTEyIG10LTJcIiBuZy1mb3JtPWlubmVyRm9ybTJ7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLWlmPVwicHVibGlzaGVkUmVzb3VyY2VMaXN0W3BhcmFtZXRlcnMuU2VsZWN0ZWRSZXNvdXJjZVR5cGVdLmxlbmd0aD4wXCIgaXMtbXVsdGlwbGU9ZmFsc2UgbmctbW9kZWw9c2VsZWN0ZWRQdWJsaXNoZWRSZXNvdXJjZSBzZWxlY3RlZC1pdGVtcz1zZWxlY3RlZFB1Ymxpc2hlZFJlc291cmNlIHJlcXVpcmVkLWZpZWxkPXRydWUgZHJvcGRvd24taXRlbXM9cHVibGlzaGVkUmVzb3VyY2VMaXN0W3BhcmFtZXRlcnMuU2VsZWN0ZWRSZXNvdXJjZVR5cGVdIGRyb3Bkb3duLWlkPVwiXFwndmVyc2lvblxcJytmZC5OYW1lK2ZkLkl0ZW1JZFwiIHBhcmVudC1mb3JtLWlkPVwiXFwnaW5uZXJGb3JtMlxcJytmZC5QcmVzZW50YXRpb25JZFwiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IHZlcnNpb25cXCdcIiBvbi1zZWxlY3QtZm49b25SZXNvdXJjZVNlbGVjdG9yVmVyc2lvbkNhbGxiYWNrKGl0ZW0sbW9kZWwpPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PGRpdiBuZy1pZj1cInB1Ymxpc2hlZFJlc291cmNlTGlzdFtwYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlXS5sZW5ndGg9PTBcIj5ObyBwdWJsaXNoZWQge3twYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlfX1zICE8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RSaWNodGV4dGJveC5odG1sJywnPG5nLWZvcm0gbmFtZT1pbm5lckZvcm17e2ZkLkl0ZW1JZH19IGNsYXNzPWZvcm0tZ3JvdXA+PGRpdiBjbGFzcz1cInJvdyBtLTAgbXQtMSBkYXRhc2V0LWl0ZW1cIiBuZy1pZj1cImZkLlNob3dGaWVsZCB8fCAoZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTIpXCIgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZH19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkfX0uJGludmFsaWQsXFwnYmctZ3JheS0yMCBtci0wIHAtMCBib3JkZXJcXCc6ZmQ9PWdzcnZjLmdldFNlbGVjdGVkRmQoKSAmJiBnc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKSB9XCI+PGRpdiBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2xhYmVsXFwnXCIgbmctaGlkZT1cIihmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZT09MiB8fCBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MikgJiYgZmQuUGFyYW1ldGVycy5IaWRlTGFiZWxcIiBzdHlsZT17e2ZkLmxhYmVsQWxpZ259fSBjbGFzcz17e2ZkLmdyaWRDbGFzc0xhYmVsfX0gbmctY2xhc3M9XCJ7XFwnY29sLWF1dG9cXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplfVwiPjxsYWJlbCBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2xhYmVsXFwnXCIgc3R5bGU9e3tmZC5jdXN0b21TdHlsZUxhYmVsfX0gY2xhc3M9XCJtYXJnaW5MNSBmb3JtLWNvbnRyb2wtbGFiZWwgbm8tYm9yZGVyIGFsaWduLW1pZGRsZVwiIGZvcj17e2ZkLk5hbWV9fSBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiAoaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17e2ZkLkl0ZW1JZH19LiRpbnZhbGlkLFxcJ2N1c3RvbS1lbC1sYXlvdXQtc3R5bGVcXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xfVwiPnt7ZmQuTGFiZWx9fTwvbGFiZWw+PC9kaXY+PGRpdiBuZy1jbGFzcz1cIntcXCdjdXN0b20tZWwtbGF5b3V0LXN0eWxlIGNvbC1hdXRvXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSxcXCdjb2wtYXV0b1xcJzogZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlIT0xfVwiIGNsYXNzPXt7ZmQuZ3JpZENsYXNzRWxlbWVudH19IGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnZWxlbWVudFxcJ1wiIHN0eWxlPVwibWluLWhlaWdodDogNTBweCAhaW1wb3J0YW50O3t7ZmQuY3VzdG9tU3R5bGVFbGVtZW50fX1cIj48ZGl2IG5nLWlmPSFmZC5SZWFkT25seT48ZGl2IHRydW1ib3d5Zy1uZyBuZy1ibHVyPW9uX2JsdXJfYWN0aW9uKCkgbmctbW9kZWw9Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSBwbGFjZWhvbGRlcj1cIkVudGVyIHRleHRcIiBlZGl0b3ItY29uZmlnPVwie2F1dG9ncm93OiB0cnVlLCBidG5zOiBbIFxcJ2ZvcmVDb2xvclxcJywgXFwnYmFja0NvbG9yXFwnLFxcJ2JvbGRcXCcsXFwnaXRhbGljXFwnLFxcJ3VuZGVybGluZVxcJyxcXCdzdHJpa2V0aHJvdWdoXFwnLFxcJ3xcXCcsXFwncmVtb3ZlZm9ybWF0XFwnLFxcJ3ZpZXdIVE1MXFwnLF19XCI+PC9kaXY+PHAgbmctc2hvdz1cIihpbm5lckZvcm17e2ZkLkl0ZW1JZH19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19LiRpbnZhbGlkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlciBzbWFsbFwiPnt7ZmQuRXJyb3JNc2d9fTwvcD48L2Rpdj48ZGl2IGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnZWxlbWVudFxcJ1wiIG5nLWlmPWZkLlJlYWRPbmx5IHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVFbGVtZW50fX0+PGRpdiBzdHlsZT1cIm1pbi1oZWlnaHQ6IDM1cHg7XCIgY2xhc3M9XCJib3JkZXIgcC0xIHJvdW5kZWRcIiBuZy1iaW5kLWh0bWw9ZmQucmVhZE9ubHlWYWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImRyb3Bkb3duIGVsZW1lbnQtcHJvcGVydGllcy1idG5zIGJnLXByaW1hcnkgcm91bmRlZCBzaGFkb3cgbXQtNFwiIG5nLWlmPVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTJcIj48c3BhbiBjbGFzcz1cImxhYmVsIGxhYmVsLXhzIHRleHQtd2hpdGUgbWwtMSBib2xkXCI+e3tmZC5OYW1lfX08L3NwYW4+IDxhIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi14cyBwcm9wLWJ0biBlbGVtZW50LWRyYWctaGFuZGxlXCIgdGl0bGU9c29ydCBocmVmPjxpIGNsYXNzPVwiZWxlbWVudC1kcmFnLWhhbmRsZSBmYSBmYS1ncmlwLXZlcnRpY2FsXCI+PC9pPjwvYT4gPGEgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIHByb3AtYnRuXCIgaHJlZiB0aXRsZT1cIkZpZWxkIHByb3BlcnRpZXNcIiBkYXRhLXRvZ2dsZT10b29sdGlwIGRhdGEtcGxhY2VtZW50PXRvcCBuZy1jbGljaz1zaG93UHJvcGVydGllcygkZXZlbnQpPjxpIGNsYXNzPVwiZmEgZmEtY29nXCI+PC9pPjwvYT48L2Rpdj48L2Rpdj48L2Rpdj48L25nLWZvcm0+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0UmljaHRleHRib3hFeGUuaHRtbCcsJzxuZy1mb3JtIG5hbWU9aW5uZXJGb3Jte3s6OmZkLkl0ZW1JZH19IGNsYXNzPWZvcm0tZ3JvdXA+PGRpdiBjbGFzcz1cInJvdyBtLTAgbXQtMSBkYXRhc2V0LWl0ZW1cIiBuZy1pZj1mZC5TaG93RmllbGQgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS57ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0ue3s6OmZkLk5hbWV9fXt7OjpmZC5JdGVtSWR9fS4kaW52YWxpZH1cIj48ZGl2IGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnbGFiZWxcXCdcIiBuZy1oaWRlPTo6ZmQuUGFyYW1ldGVycy5IaWRlTGFiZWwgbmctY2xhc3M9XCJ7XFwne3s6OmNvbExlbmd0aFtmZC5MYWJlbExlbmd0aC0xXX19XFwnOiFmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUsXFwnY3VzdG9tLWVsLWxheW91dC1zdHlsZSBjb2wtYXV0b1xcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUsXFwnY29sLWF1dG9cXCc6IGZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZX1cIiBzdHlsZT1cInRleHQtYWxpZ246e3s6OmZkLlBhcmFtZXRlcnMuTGFiZWxBbGlnbn19ICFpbXBvcnRhbnQ7d2lkdGg6e3s6OmZkLlBhcmFtZXRlcnMuTGFiZWxTdHlsZS5XaWR0aH19XCI+PGxhYmVsIGNsYXNzPVwibWFyZ2luTDUgZm9ybS1jb250cm9sLWxhYmVsIG5vLWJvcmRlciBhbGlnbi1taWRkbGVcIiBmb3I9e3s6OmZkLk5hbWV9fT57ezo6ZmQuTGFiZWx9fTwvbGFiZWw+PC9kaXY+PGRpdiBuZy1jbGFzcz1cIntcXCd7ezo6Y29sTGVuZ3RoW2ZkLlZhbHVlTGVuZ3RoLTFdfX1cXCc6IWZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSxcXCdjdXN0b20tZWwtbGF5b3V0LXN0eWxlIGNvbC1hdXRvXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSxcXCdjb2wtYXV0b1xcJzogZmQuUGFyYW1ldGVycy5DdXN0b21TaXplfVwiPjxkaXYga3Qtc3R5bGUtYXR0cmlidXRlIGZkPWZkIHN0eWxlLXR5cGU9XCJcXCdlbGVtZW50XFwnXCIgbmctaWY9XCIhZmQuUmVhZE9ubHkgJiYgIWZkLlBhcmFtZXRlcnMuVXNlU2ltcGxlVGV4dGFyZWFcIiBzdHlsZT13aWR0aDp7e2ZkLlBhcmFtZXRlcnMuRWxlbWVudFN0eWxlLldpZHRofX0+PGRpdiBzdHlsZT1cIm1pbi1oZWlnaHQ6IDUwcHggIWltcG9ydGFudDtcIiB0cnVtYm93eWctbmcgbmctYmx1cj1vbl9ibHVyX2FjdGlvbigpIG5nLW1vZGVsPWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0gcGxhY2Vob2xkZXI9e3s6OmZkLlNlYXJjaFRleHR9fSBlZGl0b3ItY29uZmlnPVwie2F1dG9ncm93OiB0cnVlLCBidG5zOiBbIFxcJ2ZvcmVDb2xvclxcJywgXFwnYmFja0NvbG9yXFwnLFxcJ2JvbGRcXCcsXFwnaXRhbGljXFwnLFxcJ3VuZGVybGluZVxcJyxcXCdzdHJpa2V0aHJvdWdoXFwnLFxcJ3xcXCcsXFwncmVtb3ZlZm9ybWF0XFwnLFxcJ3ZpZXdIVE1MXFwnLF19XCI+PC9kaXY+PHAgbmctc2hvdz1cIihpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0ue3s6OmZkLk5hbWV9fXt7OjpmZC5JdGVtSWR9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3s6OmZkLkl0ZW1JZH19Lnt7OjpmZC5OYW1lfX17ezo6ZmQuSXRlbUlkfX0uJGludmFsaWRcIiBjbGFzcz1cInRleHQtZGFuZ2VyIHNtYWxsXCI+e3s6OmZkLkVycm9yTXNnfX08L3A+PC9kaXY+PGRpdiBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2VsZW1lbnRcXCdcIiBuZy1jbGFzcz1cIntcXCdjdXN0b20tZWwtbGF5b3V0LXN0eWxlIGNvbC1hdXRvXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSxcXCdjb2wtYXV0b1xcJzogZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlIT0xfVwiIG5nLWlmPVwiIWZkLlJlYWRPbmx5ICYmIGZkLlBhcmFtZXRlcnMuVXNlU2ltcGxlVGV4dGFyZWFcIiBzdHlsZT13aWR0aDp7e2ZkLlBhcmFtZXRlcnMuRWxlbWVudFN0eWxlLldpZHRofX0+PGRpdiBjbGFzcz48dGV4dGFyZWEgdGFiaW5kZXg9e3s6OmlucHV0QXJyYXkuVGFiSW5kZXh9fSByb3dzPXt7OjpmZC5QYXJhbWV0ZXJzLk51bWJlclJvd3N9fSBuZy1tb2RlbD1mb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdIG5nLW1vZGVsLW9wdGlvbnM9XCJ7IGRlYm91bmNlOiAyNTAgfVwiIG5nLXJlcXVpcmVkPTo6ZmQuUmVxdWlyZWQgcGxhY2Vob2xkZXI9e3s6OmZkLlNlYXJjaFRleHR9fSBuYW1lPXt7OjpmZC5OYW1lfX17ezo6ZmQuSXRlbUlkfX0gbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyIGlzLWludmFsaWRcXCcgOiAoaW5uZXJGb3Jte3s6OmZkLkl0ZW1JZH19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3s6OmZkLkl0ZW1JZH19Lnt7OjpmZC5OYW1lfX17ezo6ZmQuSXRlbUlkfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS57ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19LiRpbnZhbGlkIH1cIiBjbGFzcz1mb3JtLWNvbnRyb2w+XFxuXFx0XFx0ICAgIDwvdGV4dGFyZWE+PHAgbmctY2xhc3M9XCJ7XFwnaW52YWxpZC10b29sdGlwIHJpZ2h0LTBcXCc6ZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PVxcJ3Rvb2x0aXBcXCcgfHwgZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PXVuZGVmaW5lZCxcXCdpbnZhbGlkLWZlZWRiYWNrXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCdmZWVkYmFja1xcJ31cIj57ezo6ZmQuRXJyb3JNc2d9fTwvcD48L2Rpdj48L2Rpdj48ZGl2IGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnZWxlbWVudFxcJ1wiIG5nLWlmPTo6ZmQuUmVhZE9ubHkgc3R5bGU9d2lkdGg6e3s6OmZkLlBhcmFtZXRlcnMuRWxlbWVudFN0eWxlLldpZHRofX0+PGRpdiBzdHlsZT1cIm1pbi1oZWlnaHQ6IDM1cHg7XCIgY2xhc3M9XCJib3JkZXIgcC0xIHJvdW5kZWRcIiBuZy1iaW5kLWh0bWw9ZmQucmVhZE9ubHlWYWw+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9uZy1mb3JtPicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFJpY2h0ZXh0Ym94UHJvcGVydGllcy5odG1sJywnPGRpdj48ZGl2IGt0LXByb3BlcnR5LWhlYWRlcj48L2Rpdj48ZGl2IG5nLWNsaWNrPVwibG9jYWxWYXJzLnNob3dCYXNpYyA9ICFsb2NhbFZhcnMuc2hvd0Jhc2ljXCIgY2xhc3M9XCJleHBhbmQtcHJvcGVydHktcGFuZWwgdGFnIGJvcmRlci1ib3R0b20gYm9yZGVyLXN1Y2Nlc3MgbXktMSBweS0xXCIgZGF0YS10b2dnbGU9Y29sbGFwc2UgaHJlZj0jbWFpblByb3BlcnR5UGFuZWwgcm9sZT1idXR0b24gYXJpYS1leHBhbmRlZD10cnVlIGFyaWEtY29udHJvbHM9bWFpblByb3BlcnR5UGFuZWw+PHNwYW4gY2xhc3M9XCJjb2wgcC0wXCI+QkFTSUM8L3NwYW4+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PWxvY2FsVmFycy5zaG93QmFzaWMgY2xhc3M9XCJmYXMgZmEtYW5nbGUtZG93blwiPjwvaT4gPGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLXNob3c9IWxvY2FsVmFycy5zaG93QmFzaWMgY2xhc3M9XCJmYXMgZmEtYW5nbGUtdXBcIj48L2k+PC9kaXY+PGRpdiBjbGFzcz1cIm1iLTQgY29sbGFwc2Ugc2hvd1wiIGlkPW1haW5Qcm9wZXJ0eVBhbmVsPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5MYWJlbDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuTGFiZWw+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5FcnJvciBtc2c8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLkVycm9yTXNnPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+U2VhcmNoVGV4dDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuU2VhcmNoVGV4dD4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkZvcm11bGE8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuVmFsdWVGb3JtdWxhIDxkaXY+IDxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IGlkPWNiUmVxdWlyZWR7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQuUmVxdWlyZWQ+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPWNiUmVxdWlyZWR7e2ZkLlByZXNlbnRhdGlvbklkfX0+UmVxdWlyZWQ8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYlNpbXBsZVRleHRBcmVhe3tmZC5QcmVzZW50YXRpb25JZH19PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPWNiU2ltcGxlVGV4dEFyZWF7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5Vc2VTaW1wbGVUZXh0YXJlYSBuZy1jaGVja2VkPWZkLlBhcmFtZXRlcnMuVXNlU2ltcGxlVGV4dGFyZWE+IFVzZSBzaW1wbGUgdGV4dCBhcmVhPC9sYWJlbD48L2Rpdj48L2Rpdj48ZGl2IGt0LWZpZWxkLWV4dGVuZGVkLXByb3BlcnRpZXM+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0UnVuUGFnZURpci5odG1sJywnPGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwicGFnZS0xMDAgcC0wXCI+PGRpdiBuZy1pZj11bmF1dGhvcmlzZWQ+PGg0IGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC1kYW5nZXJcIj5VbmF1dGhvcmlzZWQhPC9oND48L2Rpdj48ZGl2IG5nLXNob3c9XCIoZm9ybUxvYWRlZCB8fCBwYWdlTG9hZGVkKSAmJiAhdW5hdXRob3Jpc2VkXCIgY2xhc3M+PGRpdiBjbGFzcz48ZGl2IGNsYXNzPXBhZ2UtZ3JpZC1jb250YWluZXI+PGZvcm0gbmFtZT1mb3Jte3tyZXNvdXJjZUlkfX0gY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYgY2xhc3MgbmctaWY9XCJwYWdlTG9hZGVkICYmIHJlc291cmNlRGVmaW5pdGlvbi5wYWdlX3N0YXRlX2lkXCI+PGRpdiBrdC1ncmlkIGdyaWQtdHlwZT06OmdyaWRzdGVyVHlwZSByZXNvdXJjZS1mb3JtLWxvYWRlZD1wYWdlTG9hZGVkIHJlc291cmNlLWRlZmluaXRpb249OjpyZXNvdXJjZURlZmluaXRpb24gZm9ybS1wYXJhbXM9cmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMgZm9ybS1kYXRhPWRhc2hib2FyZC5kYXRhIHBhcmVudD06OmRhc2hib2FyZC53aWRnZXRzIGFsbC1jb2x1bW5zPTo6ZGFzaGJvYXJkLndpZGdldHMgY2xhc3M9a3RHcmlkPjxkaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JtPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9IXBhZ2VMb2FkZWQgY2xhc3M9XCJtb2RhbC1iYWNrZHJvcCBzaG93XCIgbmctY2xhc3M9XCJ7XFwnY29udGVudENlbnRlcmVkXFwnOiFwYWdlTG9hZGVkICYmIHJlc291cmNlfVwiPjxkaXYgbmctaWY9XCIhcGFnZUxvYWRlZCAmJiByZXNvdXJjZVwiIGNsYXNzPWxvYWRlci1zdHlsZT48ZGl2IGNsYXNzPVwibG9hZGVyIGxvYWRlci1sZ1wiPjwvZGl2PjxkaXYgY2xhc3M9bXQtMj48ZGl2IGNsYXNzPVwicGFuZWwtdGl0bGUgcHgtMVwiIHN0eWxlPXZlcnRpY2FsLWFsaWduOm1pZGRsZTtjb2xvcjojMzQ5OGRiPjxzcGFuPnt7cmVzb3VyY2UuUGFyYW1ldGVyc0xhbmcuTG9hZFBhZ2VUZXh0fX08L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PHN0eWxlPlxcclxcblxcclxcbjpyb290IHtcXHJcXG4gIC0tc2lkZU1lbnVXaWR0aDoge3sgbWVudV9zZXJ2aWNlLmdldFNpZGVNZW51U2l6ZSgpID8gXFwnMzAwcHhcXCc6XFwnNjBweFxcJyB9fTtcXHJcXG59XFxyXFxuXFxyXFxuLmdhcC0xMiB7XFxyXFxuXFx0Y29sdW1uLWdhcDogMTJweDtcXHJcXG59XFxyXFxuXFxyXFxuLnBhZ2UtMTAwIHtcXHJcXG5cXHR3aWR0aDogMTAwJTtcXHJcXG59XFxyXFxuXFxyXFxuLnNpZGUtbWVudS1oaWRkZW4ge1xcclxcblxcdHdpZHRoOiB2YXIoLS1zaWRlTWVudVdpZHRoKTtcXHJcXG5cXHRtYXJnaW4tbGVmdDogLTEycHg7XFxyXFxufVxcclxcblxcclxcbi5zaWRlLW1lbnUtdmlzaWJsZSB7XFxyXFxuXFx0d2lkdGg6IHZhcigtLXNpZGVNZW51V2lkdGgpO1xcclxcblxcdG1hcmdpbi1sZWZ0OiAtMTJweDtcXHJcXG5cXHRcXHJcXG59XFxyXFxuXFxyXFxuLnNpZGUtbWVudS1zdHlsZSB7XFxyXFxuXFx0cG9zaXRpb246Zml4ZWQ7XFxyXFxuXFx0ei1pbmRleDogMTAyNDtcXHJcXG5cXHRoZWlnaHQ6IDEwMHZoO1xcclxcblxcdHdpZHRoOiAgdmFyKC0tc2lkZU1lbnVXaWR0aCk7XFxyXFxuXFx0XFxyXFxuXFx0Ym9yZGVyLXJpZ2h0OiAycHggc29saWQgI2RlZTdlOTsgLyogbW92ZSB0byBjdXN0b20gc3R5bGUqL1xcclxcblxcdGJhY2tncm91bmQ6ICNmY2ZkZmQ7IC8qIG1vdmUgdG8gY3VzdG9tIHN0eWxlKi9cXHJcXG5cXHRcXHJcXG59XFxyXFxuXFxyXFxuLnBhZ2UtbWVudS12aXNpYmxlIHtcXHJcXG5cXHR3aWR0aDogY2FsYygxMDAlIC0gdmFyKC0tc2lkZU1lbnVXaWR0aCkgLSAxMnB4KTtcXHJcXG59XFxyXFxuXFxyXFxuXFxyXFxuLmNvbnRlbnRDZW50ZXJlZCB7XFxyXFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxyXFxufVxcclxcblxcclxcblxcclxcbi5jb250ZW50Q2VudGVyZWQ6OmJlZm9yZSB7XFxyXFxuICBjb250ZW50OiBcXCdcXCc7XFxyXFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICBoZWlnaHQ6IDEwMCU7IFxcclxcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXHJcXG4gIG1hcmdpbi1yaWdodDogLS4yNWVtOyAgLypBZGp1c3RzIGZvciBzcGFjaW5nKi9cXHJcXG59XFxyXFxuXFxyXFxuLmNvbnRlbnRDZW50ZXJlZCA+ICoge1xcclxcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcclxcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXHJcXG59XFxyXFxuLmxvYWRlci1zdHlsZXtcXHJcXG4gIG1pbi13aWR0aDogMTYlO1xcclxcbiAgLyp6LWluZGV4OiAyMDAwICFpbXBvcnRhbnQ7Ki9cXHJcXG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xcclxcbiAgcGFkZGluZzogMS41cmVtICFpbXBvcnRhbnQ7XFxyXFxuICBib3JkZXI6IDFweCBzb2xpZCAjRTdFOUVDO1xcclxcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtICFpbXBvcnRhbnQ7XFxyXFxuLyogIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gIHRvcDogNTAlO1xcclxcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwtNTAlKTtcXHJcXG4gIGxlZnQ6IDUwJTsqL1xcclxcbn1cXHJcXG5cXHJcXG5AbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHtcXHJcXG5cXHJcXG5cXHQuc2lkZS1tZW51LXN0eWxlIHtcXHJcXG5cXHRcXHR3aWR0aDogMDtcXHJcXG5cXHRcXHRoZWlnaHQ6IDA7XFxyXFxuXFx0XFx0cG9zaXRpb246IHN0YXRpYztcXHJcXG5cXHR9XFxyXFxuXFxyXFxuXFx0LnBhZ2UtbWVudS12aXNpYmxlIHtcXHJcXG5cXHRcXHR3aWR0aDoxMDAlO1xcclxcblxcdH1cXHJcXG5cXHJcXG5cXHQuZ2FwLTEyIHtcXHJcXG5cXHRcXHRjb2x1bW4tZ2FwOiAwcHg7XFxyXFxuXFx0fVxcclxcblxcclxcblxcclxcbn1cXHJcXG5cXHJcXG48L3N0eWxlPicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFNlYXJjaEJveC5odG1sJywnPG5nLWZvcm0gY2xhc3MgbmFtZT1pbm5lckZvcm17e2ZkLkl0ZW1JZH19IG5nLWNsYXNzPVwieyBcXCdpcy1pbnZhbGlkXFwnIDogKGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZH19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fS4kdG91Y2hlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZH19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fS4kZGlydHkpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19LiRpbnZhbGlkLFxcJ2lzLXZhbGlkXFwnIDogKGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZH19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fS4kdG91Y2hlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZH19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fS4kZGlydHkpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19LiR2YWxpZH1cIiBub3ZhbGlkYXRlPjxkaXYgY2xhc3M9XCJyb3cgbS0wIG10LTEgZGF0YXNldC1pdGVtXCIgbmctaWY9XCJmZC5TaG93RmllbGQgfHwgKGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xICYmIGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlIT0yKVwiIG5nLWNsYXNzPVwie1xcJ2JnLWdyYXktMjAgbS0xIHAtMSBib3JkZXIgc2hhZG93XFwnOmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xICYmIGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlIT0yICYmIGZkPT1nc3J2Yy5nZXRTZWxlY3RlZEZkKCkgJiYgZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzT3BlbmVkKCl9XCI+PGRpdiBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgbmctaGlkZT1cIihmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZT09MiB8fCBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MikgJiYgZmQuUGFyYW1ldGVycy5IaWRlTGFiZWxcIiBzdHlsZS10eXBlPVwiXFwnbGFiZWxcXCdcIiBjbGFzcz17e2NvbExlbmd0aFtmZC5MYWJlbExlbmd0aC0xXX19IG5nLWNsYXNzPVwie1xcJ2N1c3RvbS1lbC1sYXlvdXQtc3R5bGUgY29sLWF1dG9cXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xLFxcJ2NvbC1hdXRvXFwnOiBmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPTF9XCIgc3R5bGU9XCJ0ZXh0LWFsaWduOnt7ZmQuUGFyYW1ldGVycy5MYWJlbEFsaWdufX0gIWltcG9ydGFudDt3aWR0aDp7e2ZkLlBhcmFtZXRlcnMuTGFiZWxTdHlsZS5XaWR0aH19XCI+PGxhYmVsIGNsYXNzPVwibWFyZ2luTDUgZm9ybS1jb250cm9sLWxhYmVsIG5vLWJvcmRlciBhbGlnbi1taWRkbGVcIiBmb3I9e3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19IG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlclxcJyA6IChpbm5lckZvcm17e2ZkLkl0ZW1JZH19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0uJGludmFsaWR9XCI+e3tmZC5MYWJlbH19PC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPVwie3tjb2xMZW5ndGhbZmQuVmFsdWVMZW5ndGgtMV19fSBteS1hdXRvXCI+PGRpdiBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2VsZW1lbnRcXCdcIiBuZy1jbGFzcz1cIntcXCdjdXN0b20tZWwtbGF5b3V0LXN0eWxlIGNvbC1hdXRvXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSxcXCdjb2wtYXV0b1xcJzogZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlIT0xfVwiIG5nLWlmPVwiIWZkLk11bHRpbGluZSAmJiAhZmQuUmVhZE9ubHlcIiBzdHlsZT13aWR0aDp7e2ZkLlBhcmFtZXRlcnMuRWxlbWVudFN0eWxlLldpZHRofX0+PGRpdiBjbGFzcz48aW5wdXQgdHlwZT10ZXh0IHRhYmluZGV4PXt7aW5wdXRBcnJheS5UYWJJbmRleH19IG5nLXBhdHRlcm49ZmQuUGFyYW1ldGVycy5SZWdleCBuZy1tb2RlbD1mb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdIG5nLWNoYW5nZT1sb2NhbFZhcnMucmVmcmVzaFNlYXJjaFZhbHVlKCkgbmctcmVxdWlyZWQ9ZmQuUmVxdWlyZWQgcGxhY2Vob2xkZXI9e3tmZC5TZWFyY2hUZXh0fX0gbmFtZT17e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkfX0gY2xhc3M9Zm9ybS1jb250cm9sIG5nLW1vZGVsLW9wdGlvbnM9XCJ7IGRlYm91bmNlOiAyNTAgfVwiIG5nLWJsdXI9b25fYmx1cl9hY3Rpb24oKSBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXIgaXMtaW52YWxpZFxcJyA6IChpbm5lckZvcm17e2ZkLkl0ZW1JZH19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19LiRpbnZhbGlkICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlIT0xfVwiPjxwIG5nLWhpZGU9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MVwiIG5nLWNsYXNzPVwie1xcJ2ludmFsaWQtdG9vbHRpcCByaWdodC0wXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCd0b29sdGlwXFwnIHx8IGZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT11bmRlZmluZWQsXFwnaW52YWxpZC1mZWVkYmFja1xcJzpmZC5QYXJhbWV0ZXJzLkVycm9yTXNnVHlwZT09XFwnZmVlZGJhY2tcXCd9XCI+e3tmZC5FcnJvck1zZ319Ont7ZmQuUGFyYW1ldGVyc319PC9wPjwvZGl2PjwvZGl2PjxkaXYga3Qtc3R5bGUtYXR0cmlidXRlIGZkPWZkIHN0eWxlLXR5cGU9XCJcXCdlbGVtZW50XFwnXCIgbmctY2xhc3M9XCJ7XFwnY3VzdG9tLWVsLWxheW91dC1zdHlsZSBjb2wtYXV0b1xcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEsXFwnY29sLWF1dG9cXCc6IGZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSE9MX1cIiBuZy1pZj1cImZkLk11bHRpbGluZSAmJiAhZmQuUmVhZE9ubHlcIiBzdHlsZT13aWR0aDp7e2ZkLlBhcmFtZXRlcnMuRWxlbWVudFN0eWxlLldpZHRofX0+PGRpdiBjbGFzcz48dGV4dGFyZWEgdGFiaW5kZXg9e3tpbnB1dEFycmF5LlRhYkluZGV4fX0gcm93cz17e2ZkLlBhcmFtZXRlcnMuTnVtYmVyUm93c319IG5nLW1vZGVsPWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0gbmctY2hhbmdlPVwiZmQuU2hvd1NlYXJjaEZvcm0/cmVmcmVzaFNlYXJjaFZhbHVlKCk6ZmQuU2VhcmNoPW51bGxcIiBuZy1yZXF1aXJlZD1mZC5SZXF1aXJlZCBwbGFjZWhvbGRlcj17e2ZkLlNlYXJjaFRleHR9fSBuYW1lPXt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fSBuZy1tb2RlbC1vcHRpb25zPVwieyBkZWJvdW5jZTogMjUwIH1cIiBuZy1ibHVyPW9uX2JsdXJfYWN0aW9uKCkgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyIGlzLWludmFsaWRcXCcgOiAoaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17e2ZkLkl0ZW1JZH19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fS4kaW52YWxpZCAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSE9MX1cIiBjbGFzcz1mb3JtLWNvbnRyb2w+XFxuXFx0XFx0ICAgIDwvdGV4dGFyZWE+PHAgbmctaGlkZT1cImZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xXCIgbmctY2xhc3M9XCJ7XFwnaW52YWxpZC10b29sdGlwIHJpZ2h0LTBcXCc6ZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PVxcJ3Rvb2x0aXBcXCcgfHwgZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PXVuZGVmaW5lZCxcXCdpbnZhbGlkLWZlZWRiYWNrXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCdmZWVkYmFja1xcJ31cIj57e2ZkLkVycm9yTXNnfX06e3tmZC5QYXJhbWV0ZXJzfX08L3A+PC9kaXY+PC9kaXY+PGRpdiBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2VsZW1lbnRcXCdcIiBuZy1pZj1mZC5SZWFkT25seSBuZy1jbGFzcz1cIntcXCdjdXN0b20tZWwtbGF5b3V0LXN0eWxlIGNvbC1hdXRvXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSxcXCdjb2wtYXV0b1xcJzogZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlIT0xfVwiIHN0eWxlPXdpZHRoOnt7ZmQuUGFyYW1ldGVycy5FbGVtZW50U3R5bGUuV2lkdGh9fT48ZGl2IGNsYXNzPVwibWItMCBib3JkZXIgcC0xIHJvdW5kZWRcIiBzdHlsZT1cIm1pbi1oZWlnaHQ6IDM1cHg7XCI+e3tmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdfX08L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiZHJvcGRvd24gZWxlbWVudC1wcm9wZXJ0aWVzLWJ0bnMgYmctcHJpbWFyeSByb3VuZGVkIHNoYWRvd1wiIG5nLWlmPVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTJcIj48c3BhbiBjbGFzcz1cImxhYmVsIGxhYmVsLXhzIHRleHQtd2hpdGUgbWwtMSBib2xkXCI+e3tmZC5OYW1lfX08L3NwYW4+IDxhIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi14cyBwcm9wLWJ0biBlbGVtZW50LWRyYWctaGFuZGxlXCIgdGl0bGU9c29ydCBocmVmPjxpIGNsYXNzPVwiZWxlbWVudC1kcmFnLWhhbmRsZSBmYSBmYS1ncmlwLXZlcnRpY2FsXCI+PC9pPjwvYT4gPGEgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIHByb3AtYnRuXCIgaHJlZiB0aXRsZT1cIkZpZWxkIHByb3BlcnRpZXNcIiBkYXRhLXRvZ2dsZT10b29sdGlwIGRhdGEtcGxhY2VtZW50PXRvcCBuZy1jbGljaz1zaG93UHJvcGVydGllcygkZXZlbnQpPjxpIGNsYXNzPVwiZmEgZmEtY29nXCI+PC9pPjwvYT4gPGEgbmctaWY9XCJzaG93U2VhcmNoRmlsdGVycyB8fCBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MVwiIGlkPXNlYXJjaC1maWx0ZXIte3tmZC5JdGVtSWR9fSBkYXRhLXRvZ2dsZT1kcm9wZG93biBhcmlhLWhhc3BvcHVwPXRydWUgYXJpYS1leHBhbmRlZD1mYWxzZSB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4teHMgcHJvcC1idG5cIiBocmVmPjxpIGNsYXNzPVwiZmEgZmEtZmlsdGVyXCIgdGl0bGU9XCJGaWx0ZXIgOiB7e2ZkLlNlYXJjaC5uYW1lfX1cIj48L2k+PC9hPjxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IHNoYWRvdyBwLTAgZHJvcGRvd24tbWF4LWNvbnRlbnQtd2lkdGhcIiBzdHlsZT1cIm1pbi13aWR0aDowcHggIWltcG9ydGFudFwiIGFyaWEtbGFiZWxsZWRieT1zZWFyY2gtZmlsdGVyLXt7ZmQuSXRlbUlkfX0+PGRpdiBjbGFzcz1idG4tZ3JvdXAtdmVydGljYWwgcm9sZT1ncm91cCBhcmlhLWxhYmVsPVwiU2VhcmNoIGZpbHRlclwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5VGV4dEZpbHRlcnMoMCkgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ2JlZ2luc1xcJ31cIj48c3BhbiBjbGFzcz1cImZhIGZhLWNoZXZyb24tcmlnaHRcIj48L3NwYW4+IHt7c2VhcmNoWzBdLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseVRleHRGaWx0ZXJzKDEpIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpmZC5TZWFyY2guZmlsdGVyPT1cXCdjb250YWluc1xcJ31cIj48c3BhbiBjbGFzcz1cImZhIGZhLWV4cGFuZFwiPjwvc3Bhbj4ge3tzZWFyY2hbMV0ubmFtZX19PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5VGV4dEZpbHRlcnMoMikgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ2VuZHNcXCd9XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1jaGV2cm9uLWxlZnRcIj48L3NwYW4+IHt7c2VhcmNoWzJdLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseVRleHRGaWx0ZXJzKDMpIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpmZC5TZWFyY2guZmlsdGVyPT1cXCdlcVxcJ31cIj48c3BhbiBjbGFzcz1cImZhIGZhLWJhcnNcIj48L3NwYW4+IHt7c2VhcmNoWzNdLm5hbWV9fTwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJkcm9wbGVmdCBlbGVtZW50LXByb3BlcnRpZXMtYnRucyBiZy1wcmltYXJ5IHJvdW5kZWQgc2hhZG93XCIgbmctaWY9XCIoZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTIgfHwgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGU9PTIpICYmIHNob3dTZWFyY2hGaWx0ZXJzXCI+PGEgaWQ9c2VhcmNoLWZpbHRlci17e2ZkLkl0ZW1JZH19IGRhdGEtdG9nZ2xlPWRyb3Bkb3duIGFyaWEtaGFzcG9wdXA9dHJ1ZSBhcmlhLWV4cGFuZGVkPWZhbHNlIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi14cyBwcm9wLWJ0blwiIGhyZWY+PGkgY2xhc3M9XCJmYSBmYS1maWx0ZXIge3tmZC5TZWFyY2guaWNvbn19IG1yLTFcIiB0aXRsZT1cIkZpbHRlciA6IHt7ZmQuU2VhcmNoLm5hbWV9fVwiPjwvaT57e2ZkLlNlYXJjaC5uYW1lfX08L2E+PGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgc2hhZG93IHAtMCBkcm9wZG93bi1tYXgtY29udGVudC13aWR0aFwiIHN0eWxlPVwibWluLXdpZHRoOjBweCAhaW1wb3J0YW50XCIgYXJpYS1sYWJlbGxlZGJ5PXNlYXJjaC1maWx0ZXIte3tmZC5JdGVtSWR9fT48ZGl2IGNsYXNzPWJ0bi1ncm91cC12ZXJ0aWNhbCByb2xlPWdyb3VwIGFyaWEtbGFiZWw9XCJTZWFyY2ggZmlsdGVyXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG0tc20gYnRuLWxpZ2h0XCIgbmctY2xpY2s9YXBwbHlUZXh0RmlsdGVycygwKSBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuU2VhcmNoLmZpbHRlcj09XFwnYmVnaW5zXFwnfVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1yaWdodFwiPjwvc3Bhbj4ge3tzZWFyY2hbMF0ubmFtZX19PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5VGV4dEZpbHRlcnMoMSkgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ2NvbnRhaW5zXFwnfVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtZXhwYW5kXCI+PC9zcGFuPiB7e3NlYXJjaFsxXS5uYW1lfX08L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG0tc20gYnRuLWxpZ2h0XCIgbmctY2xpY2s9YXBwbHlUZXh0RmlsdGVycygyKSBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuU2VhcmNoLmZpbHRlcj09XFwnZW5kc1xcJ31cIj48c3BhbiBjbGFzcz1cImZhIGZhLWNoZXZyb24tbGVmdFwiPjwvc3Bhbj4ge3tzZWFyY2hbMl0ubmFtZX19PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5VGV4dEZpbHRlcnMoMykgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ2VxXFwnfVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtYmFyc1wiPjwvc3Bhbj4ge3tzZWFyY2hbM10ubmFtZX19PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9uZy1mb3JtPicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFNlYXJjaEJveEV4ZS5odG1sJywnPGRpdiBuZy1mb3JtPWlubmVyRm9ybXt7ZmQuSXRlbUlkfX0gY2xhc3M9XCJyb3cgbS0wIG10LTEgZGF0YXNldC1pdGVtXCIgbmctY2xhc3M9XCJ7IFxcJ2lzLWludmFsaWRcXCcgOiAoaW5uZXJGb3Jte3s6OmZkLkl0ZW1JZH19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3s6OmZkLkl0ZW1JZH19Lnt7OjpmZC5OYW1lfX17ezo6ZmQuSXRlbUlkfX0uJHRvdWNoZWQgfHwgaW5uZXJGb3Jte3s6OmZkLkl0ZW1JZH19Lnt7OjpmZC5OYW1lfX17ezo6ZmQuSXRlbUlkfX0uJGRpcnR5KSAmJiBpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0ue3s6OmZkLk5hbWV9fXt7OjpmZC5JdGVtSWR9fS4kaW52YWxpZCxcXCdpcy12YWxpZFxcJyA6IChpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0ue3s6OmZkLk5hbWV9fXt7OjpmZC5JdGVtSWR9fS4kdG91Y2hlZCB8fCBpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0ue3s6OmZkLk5hbWV9fXt7OjpmZC5JdGVtSWR9fS4kZGlydHkpICYmIGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS57ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19LiR2YWxpZH1cIiBuZy1pZj06OmZkLlNob3dGaWVsZD48ZGl2IGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBuZy1oaWRlPTo6ZmQuUGFyYW1ldGVycy5IaWRlTGFiZWwgc3R5bGUtdHlwZT1cIlxcJ2xhYmVsXFwnXCIgY2xhc3M9e3s6OmNvbExlbmd0aFtmZC5MYWJlbExlbmd0aC0xXX19IG5nLWNsYXNzPVwie1xcJ2N1c3RvbS1lbC1sYXlvdXQtc3R5bGUgY29sLWF1dG9cXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplLFxcJ2NvbC1hdXRvXFwnOiBmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemV9XCIgc3R5bGU9XCJ0ZXh0LWFsaWduOnt7OjpmZC5QYXJhbWV0ZXJzLkxhYmVsQWxpZ259fSAhaW1wb3J0YW50O3dpZHRoOnt7OjpmZC5QYXJhbWV0ZXJzLkxhYmVsU3R5bGUuV2lkdGh9fVwiPjxsYWJlbCBjbGFzcz1cIm1hcmdpbkw1IGZvcm0tY29udHJvbC1sYWJlbCBuby1ib3JkZXIgYWxpZ24tbWlkZGxlXCIgZm9yPXt7OjpmZC5OYW1lfX17ezo6ZmQuSXRlbUlkfX0gbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS57ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0uJGludmFsaWR9XCI+e3s6OmZkLkxhYmVsfX08L2xhYmVsPiA8aSBuZy1pZj1mb3JtRGF0YVswXS5mb3JtRGF0YUJsb2NrY2hhaW5bMF0gbmctY2xhc3M9XCJ7XFwnZmEgZmEtY2hlY2sgdGV4dC1zdWNjZXNzXFwnOiBmb3JtRGF0YVswXS5mb3JtRGF0YUJsb2NrY2hhaW5bMF1bZmQuRmllbGROYW1lXT09Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSxcXCdmYSBmYS10aW1lcyB0ZXh0LWRhbmdlclxcJzpmb3JtRGF0YVswXS5mb3JtRGF0YUJsb2NrY2hhaW5bMF1bZmQuRmllbGROYW1lXSE9Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXX1cIj48L2k+PC9kaXY+PGRpdiBjbGFzcz1cInt7Ojpjb2xMZW5ndGhbZmQuVmFsdWVMZW5ndGgtMV19fSBteS1hdXRvXCI+PGRpdiBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2VsZW1lbnRcXCdcIiBuZy1jbGFzcz1cIntcXCdjdXN0b20tZWwtbGF5b3V0LXN0eWxlIGNvbC1hdXRvXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSxcXCdjb2wtYXV0b1xcJzogZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlIT0xfVwiIG5nLWlmPVwiIWZkLk11bHRpbGluZSAmJiAhZmQuUmVhZE9ubHlcIiBzdHlsZT13aWR0aDp7e2ZkLlBhcmFtZXRlcnMuRWxlbWVudFN0eWxlLldpZHRofX0+PGRpdiBjbGFzcz48aW5wdXQgdHlwZT10ZXh0IHRhYmluZGV4PXt7aW5wdXRBcnJheS5UYWJJbmRleH19IG5nLXBhdHRlcm49OjpmZC5QYXJhbWV0ZXJzLlJlZ2V4IG5nLW1vZGVsPWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0gbmctY2hhbmdlPWxvY2FsVmFycy5yZWZyZXNoU2VhcmNoVmFsdWUoKSBuZy1yZXF1aXJlZD06OmZkLlJlcXVpcmVkIHBsYWNlaG9sZGVyPXt7OjpmZC5TZWFyY2hUZXh0fX0gbmFtZT17ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19IGNsYXNzPWZvcm0tY29udHJvbCB0aXRsZT17e2Zvcm1EYXRhWzBdLmZvcm1EYXRhQmxvY2tjaGFpblswXVtmZC5GaWVsZE5hbWVdfX0gbmctbW9kZWwtb3B0aW9ucz1cInsgZGVib3VuY2U6IDI1MCB9XCIgbmctYmx1cj1vbl9ibHVyX2FjdGlvbigpIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlciBpcy1pbnZhbGlkXFwnIDogKGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS57ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0ue3s6OmZkLk5hbWV9fXt7OjpmZC5JdGVtSWR9fS4kaW52YWxpZCB9XCI+PHAgbmctY2xhc3M9XCJ7XFwnaW52YWxpZC10b29sdGlwIHJpZ2h0LTBcXCc6ZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PVxcJ3Rvb2x0aXBcXCcgfHwgZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PXVuZGVmaW5lZCxcXCdpbnZhbGlkLWZlZWRiYWNrXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCdmZWVkYmFja1xcJ31cIj57ezo6ZmQuRXJyb3JNc2d9fTwvcD48L2Rpdj48L2Rpdj48ZGl2IGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnZWxlbWVudFxcJ1wiIG5nLWNsYXNzPVwie1xcJ2N1c3RvbS1lbC1sYXlvdXQtc3R5bGUgY29sLWF1dG9cXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xLFxcJ2NvbC1hdXRvXFwnOiBmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPTF9XCIgbmctaWY9XCJmZC5NdWx0aWxpbmUgJiYgIWZkLlJlYWRPbmx5XCIgc3R5bGU9d2lkdGg6e3s6OmZkLlBhcmFtZXRlcnMuRWxlbWVudFN0eWxlLldpZHRofX0+PGRpdiBjbGFzcz48dGV4dGFyZWEgdGFiaW5kZXg9e3s6OmlucHV0QXJyYXkuVGFiSW5kZXh9fSByb3dzPXt7OjpmZC5QYXJhbWV0ZXJzLk51bWJlclJvd3N9fSBuZy1tb2RlbD1mb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdIG5nLWNoYW5nZT1cImZkLlNob3dTZWFyY2hGb3JtP3JlZnJlc2hTZWFyY2hWYWx1ZSgpOmZkLlNlYXJjaD1udWxsXCIgbmctcmVxdWlyZWQ9OjpmZC5SZXF1aXJlZCBwbGFjZWhvbGRlcj17ezo6ZmQuU2VhcmNoVGV4dH19IG5hbWU9e3s6OmZkLk5hbWV9fXt7OjpmZC5JdGVtSWR9fSBuZy1tb2RlbC1vcHRpb25zPVwieyBkZWJvdW5jZTogMjUwIH1cIiBuZy1ibHVyPW9uX2JsdXJfYWN0aW9uKCkgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyIGlzLWludmFsaWRcXCcgOiAoaW5uZXJGb3Jte3s6OmZkLkl0ZW1JZH19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3s6OmZkLkl0ZW1JZH19Lnt7OjpmZC5OYW1lfX17ezo6ZmQuSXRlbUlkfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS57ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19LiRpbnZhbGlkIH1cIiBjbGFzcz1mb3JtLWNvbnRyb2w+XFxuXFx0XFx0ICAgIDwvdGV4dGFyZWE+PHAgbmctY2xhc3M9XCJ7XFwnaW52YWxpZC10b29sdGlwIHJpZ2h0LTBcXCc6ZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PVxcJ3Rvb2x0aXBcXCcgfHwgZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PXVuZGVmaW5lZCxcXCdpbnZhbGlkLWZlZWRiYWNrXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCdmZWVkYmFja1xcJ31cIj57ezo6ZmQuRXJyb3JNc2d9fTwvcD48L2Rpdj48L2Rpdj48ZGl2IGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnZWxlbWVudFxcJ1wiIG5nLWlmPTo6ZmQuUmVhZE9ubHkgbmctY2xhc3M9XCJ7XFwnY3VzdG9tLWVsLWxheW91dC1zdHlsZSBjb2wtYXV0b1xcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEsXFwnY29sLWF1dG9cXCc6IGZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSE9MX1cIiBzdHlsZT13aWR0aDp7ezo6ZmQuUGFyYW1ldGVycy5FbGVtZW50U3R5bGUuV2lkdGh9fT48ZGl2IHRpdGxlPXt7Zm9ybURhdGFbMF0uZm9ybURhdGFCbG9ja2NoYWluWzBdW2ZkLkZpZWxkTmFtZV19fSBjbGFzcz1cIm1iLTAgYm9yZGVyIHAtMSByb3VuZGVkXCIgc3R5bGU9XCJtaW4taGVpZ2h0OiAzNXB4O1wiPnt7Ojpmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdfX08L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiZHJvcGxlZnQgZWxlbWVudC1wcm9wZXJ0aWVzLWJ0bnMgYmctcHJpbWFyeSByb3VuZGVkIHNoYWRvdyBub3ByaW50XCIgbmctaWY9OjpzaG93U2VhcmNoRmlsdGVycz48YSBpZD1zZWFyY2gtZmlsdGVyLXt7OjpmZC5JdGVtSWR9fSBkYXRhLXRvZ2dsZT1kcm9wZG93biBhcmlhLWhhc3BvcHVwPXRydWUgYXJpYS1leHBhbmRlZD1mYWxzZSB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4teHMgcHJvcC1idG5cIiBocmVmPjxpIGNsYXNzPVwiZmEgZmEtZmlsdGVyIHt7OjpmZC5TZWFyY2guaWNvbn19IG1yLTFcIiB0aXRsZT1cIkZpbHRlciA6IHt7OjpmZC5TZWFyY2gubmFtZX19XCI+PC9pPnt7OjpmZC5TZWFyY2gubmFtZX19PC9hPjxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IHNoYWRvdyBwLTAgZHJvcGRvd24tbWF4LWNvbnRlbnQtd2lkdGhcIiBzdHlsZT1cIm1pbi13aWR0aDowcHggIWltcG9ydGFudFwiIGFyaWEtbGFiZWxsZWRieT1zZWFyY2gtZmlsdGVyLXt7OjpmZC5JdGVtSWR9fT48ZGl2IGNsYXNzPWJ0bi1ncm91cC12ZXJ0aWNhbCByb2xlPWdyb3VwIGFyaWEtbGFiZWw9XCJTZWFyY2ggZmlsdGVyXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG0tc20gYnRuLWxpZ2h0XCIgbmctY2xpY2s9YXBwbHlUZXh0RmlsdGVycygwKSBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuU2VhcmNoLmZpbHRlcj09XFwnYmVnaW5zXFwnfVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1yaWdodFwiPjwvc3Bhbj4ge3s6OnNlYXJjaFswXS5uYW1lfX08L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG0tc20gYnRuLWxpZ2h0XCIgbmctY2xpY2s9YXBwbHlUZXh0RmlsdGVycygxKSBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuU2VhcmNoLmZpbHRlcj09XFwnY29udGFpbnNcXCd9XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1leHBhbmRcIj48L3NwYW4+IHt7OjpzZWFyY2hbMV0ubmFtZX19PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5VGV4dEZpbHRlcnMoMikgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ2VuZHNcXCd9XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1jaGV2cm9uLWxlZnRcIj48L3NwYW4+IHt7OjpzZWFyY2hbMl0ubmFtZX19PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5VGV4dEZpbHRlcnMoMykgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ2VxXFwnfVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtYmFyc1wiPjwvc3Bhbj4ge3s6OnNlYXJjaFszXS5uYW1lfX08L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RTZWFyY2hCb3hQcm9wZXJ0aWVzLmh0bWwnLCc8ZGl2IGNsYXNzPXAtMT48ZGl2IGNsYXNzPVwiZXhwYW5kLXByb3BlcnR5LXBhbmVsIHRhZ1wiIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIGhyZWY9I21haW5Qcm9wZXJ0eVBhbmVsIHJvbGU9YnV0dG9uIGFyaWEtZXhwYW5kZWQ9dHJ1ZSBhcmlhLWNvbnRyb2xzPW1haW5Qcm9wZXJ0eVBhbmVsPjxzcGFuIGNsYXNzPVwiY29sIHAtMFwiPk1haW4gdGV4dGJveCBwcm9wZXJ0aWVzPC9zcGFuPiA8aSBjbGFzcz1cImZhIGZhLWNvZyBmYS1sZ1wiPjwvaT48L2Rpdj48ZGl2IGNsYXNzPVwibWItNCBjb2xsYXBzZSBzaG93XCIgaWQ9bWFpblByb3BlcnR5UGFuZWw+PGRpdj48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+PGI+SUQ6PC9iPiB7e2ZkLkl0ZW1JZH19PC9sYWJlbD4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPjxiPlByZXNlbnRhdGlvbiBJRDo8L2I+IHt7ZmQuUHJlc2VudGF0aW9uSWR9fTwvbGFiZWw+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj48Yj5UeXBlOjwvYj4ge3tmZC5FbGVtZW50VHlwZX19PC9sYWJlbD48L2Rpdj48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+TWF4IGxlbmd0aDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuTWF4TGVuZ3RoPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+TGFiZWw8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLkxhYmVsPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+RXJyb3IgbXNnPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5FcnJvck1zZz4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPlNlYXJjaFRleHQ8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlNlYXJjaFRleHQ+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5SZWdleDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5SZWdleD48ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLWNoZWNrYm94XCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgaWQ9Y2JNdWx0aWxpbmUgbmctbW9kZWw9ZmQuTXVsdGlsaW5lPiA8bGFiZWwgY2xhc3M9XCJjdXN0b20tY29udHJvbC1sYWJlbCBsYWJlbC14c1wiIGZvcj1jYk11bHRpbGluZT5NdWx0aXBsZSBsaW5lczwvbGFiZWw+PC9kaXY+PGRpdiBuZy1pZj1mZC5NdWx0aWxpbmU+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPk51bWJlciBvZiByb3dzPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLk51bWJlclJvd3M+PC9kaXY+PC9kaXY+PGRpdiBrdC1maWVsZC1leHRlbmRlZC1wcm9wZXJ0aWVzPjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFNlbGVjdEdlbmVyaWMuaHRtbCcsJzxkaXYgbmctZm9ybT1pbm5lckZvcm0gY2xhc3M9XCJyb3cgbS0wIG1iLTFcIiBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiAoaW5uZXJGb3JtLiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3JtLnt7aW5wdXRQYXJhbWV0ZXJzLm5hbWV9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3JtLnt7aW5wdXRQYXJhbWV0ZXJzLm5hbWV9fS4kaW52YWxpZCB9XCI+PGRpdiBuZy1pZj0haW5wdXRQYXJhbWV0ZXJzLmhpZGVMYWJlbCBuZy1jbGFzcz1cInsgXFwncGwtMFxcJyA6IGlucHV0UGFyYW1ldGVycy5wYWRkaW5nTGVmdCB9XCIgY2xhc3M9XCJ7e2lucHV0UGFyYW1ldGVycy5jb2x1bW5TaXplTGFiZWx9fSBteS1hdXRvXCI+PGxhYmVsIG5nLWNsYXNzPVwieyBcXCdwbC0wXFwnIDogaW5wdXRQYXJhbWV0ZXJzLnBhZGRpbmdMZWZ0IH1cIiBjbGFzcz17e2lucHV0UGFyYW1ldGVycy5sYWJlbFRleHRTaXplfX0gZm9yPXt7aW5wdXRQYXJhbWV0ZXJzLm5hbWV9fT57e2lucHV0UGFyYW1ldGVycy5sYWJlbH19PC9sYWJlbD48L2Rpdj48ZGl2IG5nLWNsYXNzPVwieyBcXCdwbC0wXFwnOiBpbnB1dFBhcmFtZXRlcnMucGFkZGluZ0xlZnQgfVwiIGNsYXNzPVwicC0wIHt7aW5wdXRQYXJhbWV0ZXJzLmRyb3Bkb3duU2l6ZX19XCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9c2VsZWN0ZWRJdGVtSGlkZGVuIG5nLW1vZGVsPXNlbGVjdGVkSXRlbSBuZy1yZXF1aXJlZD1yZXF1aXJlZEZpZWxkPjx1aS1zZWxlY3QgbmctbW9kZWw9c2VsZWN0ZWRJdGVtIHNpemV4cz17e2lucHV0UGFyYW1ldGVycy5zaXplWHN9fSBuZy1kaXNhYmxlZD1kaXNhYmxlZCBvbi1zZWxlY3Q9b25TZWxlY3RGbih7aXRlbTokaXRlbSxtb2RlbDokbW9kZWx9KSBuYW1lPXt7aW5wdXRQYXJhbWV0ZXJzLm5hbWV9fSBuZy1yZXF1aXJlZD17e2lucHV0UGFyYW1ldGVycy5yZXF1aXJlZH19IHJlc2V0LXNlYXJjaC1pbnB1dD1mYWxzZT48dWktc2VsZWN0LW1hdGNoIGFsbG93LWNsZWFyPXRydWUgY2xhc3M9XCJ1aS1zZWxlY3QtbWF0Y2gge3tpbnB1dFBhcmFtZXRlcnMubGFiZWxUZXh0U2l6ZX19XCIgcGxhY2Vob2xkZXI9e3tpbnB1dFBhcmFtZXRlcnMucGxhY2Vob2xkZXJ9fT48c3BhbiBjbGFzcz1wLTA+e3skc2VsZWN0LnNlbGVjdGVkLm5hbWV9fSAoe3skc2VsZWN0LnNlbGVjdGVkLmlkfX0pPC9zcGFuPjwvdWktc2VsZWN0LW1hdGNoPjx1aS1zZWxlY3QtY2hvaWNlcyBjbGFzcz11aS1zZWxlY3QtY2hvaWNlcyByZXBlYXQ9XCJpdGVtIGluIChpbnB1dEFycmF5fCBmaWx0ZXI6IHsgbmFtZTogJHNlbGVjdC5zZWFyY2h9KSB0cmFjayBieSBpdGVtLmlkXCIgcmVmcmVzaD1yZWZyZXNoRm4oe2ZpbHRlcjokc2VsZWN0LnNlYXJjaH0pPjxzcGFuPnt7aXRlbS5uYW1lfX0gKHt7aXRlbS5pZH19KTwvc3Bhbj48L3VpLXNlbGVjdC1jaG9pY2VzPjwvdWktc2VsZWN0PjxzcGFuIG5nLXNob3c9XCIoaW5uZXJGb3JtLiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3JtLnt7aW5wdXRQYXJhbWV0ZXJzLm5hbWV9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3JtLnt7aW5wdXRQYXJhbWV0ZXJzLm5hbWV9fS4kaW52YWxpZFwiIGNsYXNzPVwidGV4dC1kYW5nZXIgc21hbGxcIj57e2lucHV0UGFyYW1ldGVycy5lcnJvck1zZ319PC9zcGFuPjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFNlbGVjdEdyb3Vwcy5odG1sJywnPGRpdiBjbGFzcz1cInJvdyBmb3JtLWdyb3VwIG0tMCBtYi0xXCIgbmctZm9ybT1pbm5lckZvcm0gbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyIGlzLWludmFsaWQgd2FzLXZhbGlkYXRlZFxcJyA6IChpbm5lckZvcm0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm0uZ3JvdXAuJHRvdWNoZWQpICYmIGlubmVyRm9ybS5ncm91cC4kaW52YWxpZCB9XCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBwLTBcIj48a3QtZHJvcGRvd24tbXVsdGlwbGUgbmctaWY9Z3JvdXBzRG93bmxvYWRlZCBuZy1tb2RlbD1zZWxlY3RlZEdyb3VwcyBzZWxlY3RlZC1pdGVtcz1zZWxlY3RlZEdyb3VwcyBuYW1lPWdyb3VwcyBuZy1yZXF1aXJlZD1mYWxzZSBkcm9wZG93bi1pdGVtcz1ncm91cExpc3QgZHJvcGRvd24taWQ9XCJcXCdncm91cFxcJ1wiIHBhcmVudC1mb3JtLWlkPVwiXFwnaW5uZXJGb3JtXFwnXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWFyY2ggb3Igc2VsZWN0IGdyb3VwLi4uXFwnXCI+PC9rdC1kcm9wZG93bi1tdWx0aXBsZT48cCBuZy1zaG93PVwiKGlubmVyRm9ybS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybS5ncm91cC4kdG91Y2hlZCkgJiYgaW5uZXJGb3JtLmdyb3VwLiRpbnZhbGlkXCIgbmctY2xhc3M9XCJ7XFwnZC1ibG9jayBpbnZhbGlkLWZlZWRiYWNrXFwnOihpbm5lckZvcm0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm0uZ3JvdXAuJHRvdWNoZWQpICYmIGlubmVyRm9ybS5ncm91cC4kaW52YWxpZH1cIj5TZWxlY3QgZ3JvdXA8L3A+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0U2VsZWN0R3JvdXBzV2l0aFNjb3BlLmh0bWwnLCc8ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctZm9ybT1pbm5lckZvcm0+PGRpdiBuZy1pZj1ncm91cHNEb3dubG9hZGVkPjxrdC1kcm9wZG93bi1tdWx0aXBsZSBuZy1tb2RlbD1zZWxlY3RlZC5ncm91cHMgc2VsZWN0ZWQtaXRlbXM9c2VsZWN0ZWQuZ3JvdXBzIG5hbWU9Z3JvdXB7e3NlbGVjdElkfX0gcmVxdWlyZWQ9ZmFsc2UgZHJvcGRvd24taXRlbXM9Z3JvdXBMaXN0IGRyb3Bkb3duLWlkPVwiXFwnZ3JvdXBcXCcrc2VsZWN0SWRcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2dyb3VwXFwnK3NlbGVjdElkXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWFyY2ggb3Igc2VsZWN0IGdyb3Vwcy4uLlxcJ1wiPjwva3QtZHJvcGRvd24tbXVsdGlwbGU+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0U2VsZWN0VXNlcnMuaHRtbCcsJzxkaXYgY2xhc3M9XCJyb3cgZm9ybS1ncm91cCBtLTAgbWItMVwiIG5nLWZvcm09aW5uZXJGb3JtIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlciBpcy1pbnZhbGlkIHdhcy12YWxpZGF0ZWRcXCcgOiAoaW5uZXJGb3JtLiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3JtLnVzZXIuJHRvdWNoZWQpICYmIGlubmVyRm9ybS51c2VyLiRpbnZhbGlkIH1cIj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHAtMFwiPjxrdC1kcm9wZG93bi1tdWx0aXBsZSBuZy1pZj11c2Vyc0Rvd25sb2FkZWQgbmctbW9kZWw9c2VsZWN0ZWRVc2VycyBzZWxlY3RlZC1pdGVtcz1zZWxlY3RlZFVzZXJzIG5hbWU9dXNlciBuZy1yZXF1aXJlZD1mYWxzZSBkcm9wZG93bi1pdGVtcz11c2VyTGlzdCBkcm9wZG93bi1pZD1cIlxcJ3VzZXJcXCdcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2lubmVyRm9ybVxcJ1wiIHNlYXJjaC10ZXh0PVwiXFwnU2VhcmNoIG9yIHNlbGVjdCB1c2VyLi4uXFwnXCI+PC9rdC1kcm9wZG93bi1tdWx0aXBsZT48cCBuZy1zaG93PVwiKGlubmVyRm9ybS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybS51c2VyLiR0b3VjaGVkKSAmJiBpbm5lckZvcm0udXNlci4kaW52YWxpZFwiIG5nLWNsYXNzPVwie1xcJ2QtYmxvY2sgaW52YWxpZC1mZWVkYmFja1xcJzooaW5uZXJGb3JtLiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3JtLnVzZXIuJHRvdWNoZWQpICYmIGlubmVyRm9ybS51c2VyLiRpbnZhbGlkfVwiPlNlbGVjdCB1c2VyPC9wPjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFNlbGVjdFVzZXJzV2l0aFNjb3BlLmh0bWwnLCc8ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctZm9ybT1pbm5lckZvcm0+PGt0LWRyb3Bkb3duLW11bHRpcGxlIG5nLW1vZGVsPXNlbGVjdGVkLnVzZXJzIHNlbGVjdGVkLWl0ZW1zPXNlbGVjdGVkLnVzZXJzIG5hbWU9dXNlcnN7e3NlbGVjdElkfX0gcmVxdWlyZWQ9ZmFsc2UgZHJvcGRvd24taXRlbXM9dXNlckxpc3QgZHJvcGRvd24taWQ9XCJcXCd1c2VyXFwnK3NlbGVjdElkXCIgcGFyZW50LWZvcm0taWQ9XCJcXCd1c2VyXFwnK3NlbGVjdElkXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWFyY2ggb3Igc2VsZWN0IHVzZXJzLi4uXFwnXCI+PC9rdC1kcm9wZG93bi1tdWx0aXBsZT48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RTZXBhcmF0b3IuaHRtbCcsJzxkaXYgY2xhc3M9XCJyb3cgcGItMSBtLTAgZGF0YXNldC1pdGVtXCIgbmctaWY9XCJmZC5TaG93RmllbGQgfHwgKGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xICYmIGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlIT0yKVwiIG5nLWNsYXNzPVwie1xcJ2JnLWdyYXktMjAgYm9yZGVyIHNoYWRvd1xcJzpmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MiAmJiBmZD09Z3NydmMuZ2V0U2VsZWN0ZWRGZCgpICYmIGdzcnZjLmdldEZpZWxkUHJvcGVydGllc09wZW5lZCgpfVwiPjxkaXYga3Qtc3R5bGUtYXR0cmlidXRlIGZkPWZkIHN0eWxlLXR5cGU9XCJcXCdsYWJlbFxcJ1wiIHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVMYWJlbH19O3t7ZmQubGFiZWxBbGlnbn19IGNsYXNzPXt7ZmQuZ3JpZENsYXNzTGFiZWx9fT48aHI+PGRpdiBzdHlsZT1cInZpc2liaWxpdHk6dmlzaWJsZSAhaW1wb3J0YW50XCIgY2xhc3M9XCJibHVlLWRyb3Bkb3duIHJvdW5kZWQgc2hhZG93XCI+PGRpdiBjbGFzcz1cImVsZW1lbnQtcHJvcGVydGllcy1idG5zIGJnLXByaW1hcnkgcm91bmRlZCBzaGFkb3dcIiBuZy1pZj1cImZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xICYmIGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlIT0yXCI+PHNwYW4gY2xhc3M9XCJsYWJlbCBsYWJlbC14cyB0ZXh0LXdoaXRlIG14LTEgYm9sZFwiPnt7ZmQuTmFtZX19PC9zcGFuPiA8YSBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4teHMgcHJvcC1idG4gZWxlbWVudC1kcmFnLWhhbmRsZVwiIHRpdGxlPXNvcnQgaHJlZj48aSBjbGFzcz1cImZhIGZhLWdyaXAtdmVydGljYWxcIj48L2k+PC9hPiA8YSBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4teHMgcHJvcC1idG5cIiBocmVmIHRpdGxlPVwiRmllbGQgcHJvcGVydGllc1wiIG5nLWNsaWNrPXNob3dQcm9wZXJ0aWVzKCRldmVudCk+PGkgY2xhc3M9XCJmYSBmYS1jb2dcIj48L2k+PC9hPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFNlcGFyYXRvclByb3BlcnRpZXMuaHRtbCcsJzxkaXYgY2xhc3M9cC0xPjxkaXYgY2xhc3M9dGV4dC1jZW50ZXI+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPjxiPklEOjwvYj4ge3tmZC5QcmVzZW50YXRpb25JZCB8fCBcXCdub25lXFwnfX08L2xhYmVsPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+PGI+VHlwZTo8L2I+IHt7ZmQuRWxlbWVudFR5cGV9fTwvbGFiZWw+PC9kaXY+PGRpdiBuZy1jbGljaz1cImxvY2FsVmFycy5zaG93QmFzaWMgPSAhbG9jYWxWYXJzLnNob3dCYXNpY1wiIGNsYXNzPVwiZXhwYW5kLXByb3BlcnR5LXBhbmVsIHRhZyBib3JkZXItYm90dG9tIGJvcmRlci1zdWNjZXNzIG15LTEgcHktMVwiIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIGhyZWY9I21haW5Qcm9wZXJ0eVBhbmVsIHJvbGU9YnV0dG9uIGFyaWEtZXhwYW5kZWQ9dHJ1ZSBhcmlhLWNvbnRyb2xzPW1haW5Qcm9wZXJ0eVBhbmVsPjxzcGFuIGNsYXNzPVwiY29sIHAtMFwiPkJBU0lDPC9zcGFuPiA8aSBzdHlsZT1cImZvbnQtc2l6ZTogbGFyZ2U7XCIgbmctc2hvdz1sb2NhbFZhcnMuc2hvd0Jhc2ljIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLWRvd25cIj48L2k+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PSFsb2NhbFZhcnMuc2hvd0Jhc2ljIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLXVwXCI+PC9pPjwvZGl2PjxkaXYgY2xhc3M9XCJtYi00IGNvbGxhcHNlIHNob3dcIiBpZD1tYWluUHJvcGVydHlQYW5lbD48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+RWxlbWVudCB3aWR0aCB7e2ZkLlBhcmFtZXRlcnMuRWxlbWVudFdpZHRofX08L2xhYmVsPiA8aW5wdXQgaWQ9ZWxlbWVudFdpZHRoe3tmZC5QcmVzZW50YXRpb25JZH19IHR5cGU9cmFuZ2UgbWluPTEgbWF4PTI0IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuRWxlbWVudFdpZHRoIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+U2VwYXJhdG9yIGxlbmd0aCB7e2ZkLkxhYmVsTGVuZ3RofX08L2xhYmVsPiA8aW5wdXQgdHlwZT1yYW5nZSBtaW49MSBtYXg9MjQgbmctbW9kZWw9ZmQuTGFiZWxMZW5ndGggY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+PGRpdiBjbGFzcz1cIm10LTEgY3VzdG9tLWNvbnRyb2wgY3VzdG9tLWNoZWNrYm94XCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgaWQ9Y2JTaG93RmllbGQgbmctbW9kZWw9ZmQuU2hvd0ZpZWxkPiA8bGFiZWwgY2xhc3M9XCJjdXN0b20tY29udHJvbC1sYWJlbCBsYWJlbC14c1wiIGZvcj1jYlNob3dGaWVsZD5TaG93IHNlcGFyYXRvcjwvbGFiZWw+PC9kaXY+PGRpdiBrdC1kZWxldGUtZWxlbWVudD48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RTaW1wbGVVc2VyLmh0bWwnLCc8ZGl2IHN0eWxlPW1hcmdpbjowO3BhZGRpbmc6MD48dWktc2VsZWN0IG5nLW1vZGVsPXNlbGVjdGVkVXNlck1vZGVsIG5nLWRpc2FibGVkPWRpc2FibGVkIG9uLXNlbGVjdD1cInBvcHVsYXRlVXNlcigkaXRlbSwgJG1vZGVsKVwiIGNsYXNzPWlucHV0LXNtIG5nLXJlcXVpcmVkPXRydWUgcmVzZXQtc2VhcmNoLWlucHV0PWZhbHNlPjx1aS1zZWxlY3QtbWF0Y2ggY2xhc3M9dWktc2VsZWN0LW1hdGNoIHBsYWNlaG9sZGVyPXt7ZmQuc2VhcmNoVGV4dH19PjxzcGFuPnt7JHNlbGVjdC5zZWxlY3RlZC51c2VybmFtZX19LXt7JHNlbGVjdC5zZWxlY3RlZC5maXJzdF9uYW1lfX0ge3skc2VsZWN0LnNlbGVjdGVkLmxhc3RfbmFtZX19IDxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGluayBwLTBcIiBuZy1jbGljaz1cImNsZWFyKCRldmVudCwgJHNlbGVjdClcIj48aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPjwvYT48L3NwYW4+PC91aS1zZWxlY3QtbWF0Y2g+PHVpLXNlbGVjdC1jaG9pY2VzIGNsYXNzPXVpLXNlbGVjdC1jaG9pY2VzIHJlcGVhdD1cInVzZXIgaW4gKHVzZXJMaXN0IHwgZmlsdGVyOiB7IG5hbWU6ICRzZWxlY3Quc2VhcmNoIH0pIHRyYWNrIGJ5IHVzZXIuaWRcIiByZWZyZXNoPXJlZnJlc2hSZXN1bHRzKCRzZWxlY3QpIHJlZnJlc2gtZGVsYXk9MD48c3Bhbj57eyB1c2VyLm5hbWUgfX08L3NwYW4+PC91aS1zZWxlY3QtY2hvaWNlcz48L3VpLXNlbGVjdD48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RTbWFydENhcmRzLmh0bWwnLCc8ZGl2IGt0c21hcnRjYXJkcz48YnV0dG9uIGNsYXNzPVwibXktMiBidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgbmctaWY9cGFyYW1ldGVycy5wcmludGFibGUgbmctY2xpY2s9ZXhwb3J0MmV4Y2VsKCk+RXhwb3J0IGZvciBwcmludDwvYnV0dG9uPjxkaXYgbmctaWY9XCJwYXJhbWV0ZXJzLlNob3dUYWJsZUZlYXR1cmVzIHx8IHBhcmFtZXRlcnMuQnVpbGRNb2RlXCIgY2xhc3M9dGV4dC1yaWdodD48YnV0dG9uIG5nLWlmPXBhcmFtZXRlcnMuQnVpbGRNb2RlIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhcmsgYm9yZGVyLTBcIiBuZy1jbGljaz10b2dnbGVUYWJsZUNvbmZpZ01lbnUoKT48c3ZnIHZpZXdib3g9XCIzNC44MTggMjEuNjg5IDM4Mi45OTEgMzM0LjQ3NVwiIHhtbG5zPWh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIHdpZHRoPTEuMmVtIGhlaWdodD0xLjJlbT48cmVjdCB4PTU5LjM2MSB5PTU5LjM2MSB3aWR0aD0xMzkuMjY5IGhlaWdodD0zMi41MzQgc3R5bGU9XCJzdHJva2U6IHJnYigwLCAwLCAwKTsgZmlsbDogcmdiKDcsIDcsIDcpO1wiPjwvcmVjdD48cmVjdCB4PTI1My40MjQgeT01OS42NDYgd2lkdGg9MTM5LjI2OSBoZWlnaHQ9MzIuNTM0IHN0eWxlPVwiZmlsbDogcmdiYSg3LCA3LCA3LCAwLjQzKTtcIj48L3JlY3Q+PHJlY3QgeD01OS45MzIgeT0xMzEuOTk0IHdpZHRoPTEzOS4yNjkgaGVpZ2h0PTMyLjUzNCBzdHlsZT1cInN0cm9rZTogcmdiKDAsIDAsIDApOyBmaWxsOiByZ2IoNywgNywgNyk7XCI+PC9yZWN0PjxyZWN0IHg9NjEuNjQ1IHk9MjA1LjQ4MiB3aWR0aD0xMzkuMjY5IGhlaWdodD0zMi41MzQgc3R5bGU9XCJzdHJva2U6IHJnYigwLCAwLCAwKTsgZmlsbDogcmdiKDcsIDcsIDcpO1wiPjwvcmVjdD48cmVjdCB4PTU5LjkzMSB5PTI3Ny4xMTEgd2lkdGg9MTM5LjI2OSBoZWlnaHQ9MzIuNTM0IHN0eWxlPVwic3Ryb2tlOiByZ2IoMCwgMCwgMCk7IGZpbGw6IHJnYig3LCA3LCA3KTtcIj48L3JlY3Q+PHJlY3QgeD0yNTUuMTM4IHk9MTMxLjU2NCB3aWR0aD0xMzkuMjY5IGhlaWdodD0zMi41MzQgc3R5bGU9XCJmaWxsOiByZ2JhKDcsIDcsIDcsIDAuNDMpO1wiPjwvcmVjdD48cmVjdCB4PTI1Mi44NTQgeT0yMDQuOTExIHdpZHRoPTEzOS4yNjkgaGVpZ2h0PTMyLjUzNCBzdHlsZT1cImZpbGw6IHJnYmEoNywgNywgNywgMC40Myk7XCI+PC9yZWN0PjxyZWN0IHg9MjUzLjQyNSB5PTI3Ny42ODMgd2lkdGg9MTM5LjI2OSBoZWlnaHQ9MzIuNTM0IHN0eWxlPVwiZmlsbDogcmdiYSg3LCA3LCA3LCAwLjQzKTtcIj48L3JlY3Q+PC9zdmc+PC9idXR0b24+IDxidXR0b24gbmctaGlkZT1wYXJhbWV0ZXJzLkJ1aWxkTW9kZSB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kYXJrIGJvcmRlci0wXCIgbmctY2xpY2s9ZXhwb3J0VGFibGUoKT48c3BhbiBjbGFzcz1cImZhIGZhLXNhdmVcIj48L3NwYW4+PC9idXR0b24+IDxidXR0b24gbmctaGlkZT0hcGFyYW1ldGVycy5CdWlsZE1vZGUgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFyayBib3JkZXItMFwiIG5nLWNsaWNrPXRvZ2dsZVNvcnRNZW51KCk+PHNwYW4gY2xhc3M9XCJmYXMgZmEtc29ydC1hbW91bnQtdXBcIj48L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiBuZy1oaWRlPXRydWUgZG8tbm90LWRlbGV0ZS1uZWVkZWQtZm9yLWRpc3BsYXlpbmctYW5kLXNvcnQgaWQ9dGJsY29udGFpbmVye3twYXJhbWV0ZXJzLlV1aWRSZWZ9fSBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjsge3twYXJhbWV0ZXJzLmNzc1N0eWxlfX1cIiBjbGFzcz10YWJsZS1rYXRhbHlvLXdyYXBwZXI+PHRhYmxlIGt0bHlvLWlkPU5PVF9DTElFTlRfU0lERSBuZy1pZj0hY2xpZW50U2lkZSBjbGFzcz1zbWFydC10YWJsZS17e3BhcmFtZXRlcnMuVXVpZFJlZn19IHN0eWxlPVwiYm9yZGVyLXNwYWNpbmc6IDAge3twYXJhbWV0ZXJzLnRhYmxlLlZlcnRpY2FsU3BhY2luZyAqIDJ9fXB4IDsgYm9yZGVyLWNvbGxhcHNlOiB7eyBwYXJhbWV0ZXJzLnRhYmxlLlZlcnRpY2FsU3BhY2luZyA+IDAgPyBcXCdzZXBhcmF0ZVxcJzpcXCdjb2xsYXBzZVxcJyB9fTsgb3ZlcmZsb3c6YXV0bztmb250LXNpemU6IHt7Zm9udFNpemV9fSAhaW1wb3J0YW50O2NvbG9yOiMyNjMwNGNcIiBzdC10YWJsZT1kaXNwbGF5VGFibGVEYXRhIHN0LWl0ZW1zLWJ5LXBhZ2U9c3RJdGVtc0J5UGFnZSBzdC1waXBlPXJlZnJlc2hEYXRhPjx0aGVhZCBzdHlsZT1cImNvbG9yOnt7cGFyYW1ldGVycy50YWJsZS5IZWFkZXJGb250Q29sb3IgfX1cIj48dHIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB7e3BhcmFtZXRlcnMudGFibGUuSGVhZGVyQmdDb2xvciB8fCBcXCcjRUFFQkVFXFwnfX1cIj48dGggbmctaWY9XCI6OmFsbG93U29ydCAmJiAodGMudmlzaWJsZSB8fCB0Yy52aXNpYmxlPT11bmRlZmluZWQpXCIgbmctcmVwZWF0PVwidGMgaW4gY29sdW1uRGVmcyB0cmFjayBieSB0Yy5uYW1lXCIgc3R5bGU9XCJwYWRkaW5nOiB7e2NlbGxQYWRkaW5nfX0gIWltcG9ydGFudDtcIiBsci1kcmFnLXNyYz1oZWFkZXJzIGxyLWRyb3AtdGFyZ2V0PWhlYWRlcnMgc3Qtc29ydD17e3RjLm5hbWV9fT48c3Bhbj57ezo6dGMuZGlzcGxheU5hbWV9fTwvc3Bhbj48L3RoPjx0aCBuZy1jbGljaz1mbGlwU29ydCh0YykgbmctcmVwZWF0PVwidGMgaW4gY29sdW1uRGVmcyB0cmFjayBieSB0Yy5uYW1lXCIgc3R5bGU9XCJ3aWR0aDoge3t0Yy53aWR0aH19OyBwYWRkaW5nOiB7e2NlbGxQYWRkaW5nfX0gIWltcG9ydGFudFwiIG5nLWlmPVwiIWFsbG93U29ydCAmJiAodGMudmlzaWJsZSB8fCB0Yy52aXNpYmxlPT11bmRlZmluZWQpXCIgbHItZHJhZy1zcmM9aGVhZGVycyBsci1kcm9wLXRhcmdldD1oZWFkZXJzIHN0LXNvcnQ9ZGF0YVNvcnRGdW4ubGlzdGEgY2xhc3M+PGRpdiBjbGFzcz1cImQtZmxleCBlbGVtZW50LWRyYWctaGFuZGxlIHt7dGMuc3R5bGV9fVwiPjxkaXYgY2xhc3M9XCJtdC0xIG1sLTEgZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj48c3BhbiBuZy1zaG93PVwidGMuc29ydD09XFwnZGVzY2VuZGluZ1xcJ1wiIGNsYXNzPVwibXItMSBmYXMgZmEtc29ydC11cFwiPjwvc3Bhbj4gPHNwYW4gbmctc2hvdz1cInRjLnNvcnQ9PVxcJ2FzY2VuZGluZ1xcJ1wiIGNsYXNzPVwibXItMSBmYXMgZmEtc29ydC1kb3duXCI+PC9zcGFuPjwvZGl2PjxzcGFuPnt7Ojp0Yy5kaXNwbGF5TmFtZX19PC9zcGFuPiA8aW5wdXQgbmctc2hvdz1cImRpc3BsYXlUYWJsZURhdGEgPT0gdW5kZWZpbmVkXCIgdHlwZT1jaGVja2JveCBjbGFzcz1cIm10LTEgbWwtMlwiIGt0bHlvLWlkPWNiSGlkZGVuIG5nLW1vZGVsPWxvY2FsVmFycy5zaG93TWVudSBuZy1jbGljaz0kZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk+PC9kaXY+PGRpdiBuZy1zaG93PWxvY2FsVmFycy5zaG93TWVudSBuZy1jbGljaz0kZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkgc3R5bGU9XCJ6LWluZGV4OiAxMDAwO2JhY2tncm91bmQtY29sb3I6IHdoaXRlO3Bvc2l0aW9uOmFic29sdXRlXCIga3RseW8taWQ9dGJsTWVudSBjbGFzcz1cInRleHQtZGFyayBib3JkZXIgbS0yIHAtMiBkLWZsZXggZmxleC1jb2x1bW5cIj48ZGl2PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzIGt0bHlvLWlkPWNiSGlkZGVuIG5nLW1vZGVsPXRjLnZpc2libGU+IDxsYWJlbCBjbGFzcz1sYWJlbC14cz5Db2x1bW4gdmlzaWJsZTwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1teS0yPjxkaXY+PGxhYmVsIGNsYXNzPWxhYmVsLXhzPldpZHRoOjwvbGFiZWw+PC9kaXY+PGRpdj48aW5wdXQgdHlwZT10ZXh0IGNsYXNzPXctMTAwIGt0bHlvLWlkPWNiV2lkdGggbmctbW9kZWw9dGMud2lkdGg+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1teS0yPjxkaXY+PGxhYmVsIGNsYXNzPWxhYmVsLXhzPkNTUyBzdHlsZTo8L2xhYmVsPjwvZGl2PjxkaXY+PGlucHV0IHR5cGU9dGV4dCBjbGFzcz13LTEwMCBrdGx5by1pZD1jYlN0eWxlIG5nLW1vZGVsPXRjLnN0eWxlPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9bXktMj48ZGl2PjxsYWJlbCBjbGFzcz1sYWJlbC14cz5Db2x1bW4gbmFtZTo8L2xhYmVsPjwvZGl2PjxkaXY+PGlucHV0IHR5cGU9dGV4dCBjbGFzcz13LTEwMCBrdGx5by1pZD1jYlN0eWxlIG5nLW1vZGVsPXRjLmRpc3BsYXlOYW1lPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9bXQtMj48bGFiZWwgY2xhc3M9bGFiZWwtc20+U29ydDwvbGFiZWw+IDxidXR0b24gbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnIDogdGMuc29ydCA9PSBcXCdhc2NlbmRpbmdcXCd9XCIgc3R5bGU9XCJwYWRkaW5nOiAwLjMyNXJlbSAwLjQ1cmVtOyBmb250LXNpemU6IDAuOHJlbTtcIiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi14c1wiIG5nLWNsaWNrPVwidGMuc29ydD1cXCdhc2NlbmRpbmdcXCdcIj48c3BhbiBjbGFzcz1cImZhIGZhLWFycm93LXVwXCI+PC9zcGFuPjwvYnV0dG9uPiA8YnV0dG9uIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJyA6IHRjLnNvcnQgPT0gXFwnZGVzY2VuZGluZ1xcJ31cIiBzdHlsZT1cInBhZGRpbmc6IDAuMzI1cmVtIDAuNDVyZW07IGZvbnQtc2l6ZTogMC44cmVtO1wiIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYnRuLXhzXCIgbmctY2xpY2s9XCJ0Yy5zb3J0PVxcJ2Rlc2NlbmRpbmdcXCdcIj48c3BhbiBjbGFzcz1cImZhIGZhLWFycm93LWRvd25cIj48L3NwYW4+PC9idXR0b24+IDxidXR0b24gc3R5bGU9XCJwYWRkaW5nOiAwLjMyNXJlbSAwLjQ1cmVtOyBmb250LXNpemU6IDAuOHJlbTtcIiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi14c1wiIG5nLWNsaWNrPVwidGMuc29ydD1cXCdcXCdcIj48c3BhbiBjbGFzcz1cImZhcyBmYS10aW1lc1wiPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPW15LTI+PGRpdj48bGFiZWwgY2xhc3M9bGFiZWwteHM+U29ydCBwcmlvcml0eToge3t0Yy5zb3J0T3JkZXIgKzEgfX08L2xhYmVsPjwvZGl2PjxkaXY+PGlucHV0IG5nLWNoYW5nZT1wcm9tamVuYSh0YykgdHlwZT1yYW5nZSBuYW1lPXJhbmdlIG1pbj0wIG1heD0yIGNsYXNzPXctMTAwIGt0bHlvLWlkPWNiU29ydFByaW9yaXR5IG5nLW1vZGVsPXRjLnNvcnRPcmRlcj48L2Rpdj48L2Rpdj48ZGl2PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzIGt0bHlvLWlkPWNiRm9ybWF0IG5nLW1vZGVsPXRjLmRpc2FibGVHcm91cGluZz4gPGxhYmVsIGNsYXNzPWxhYmVsLXhzPkRpc2FibGUgMTAwMHMgc2VwYXJhdG9yPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPVwiZC1mbGV4IG15LTJcIj48ZGl2IGNsYXNzPXByLTE+PGxhYmVsIGNsYXNzPWxhYmVsLXhzPkRlY2ltYWwgcGxhY2VzOjwvbGFiZWw+PC9kaXY+PGRpdj48aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwidy0xMDAgbmctdG91Y2hlZFwiIGt0bHlvLWlkPWNiRGVjaW1hbCBuZy1tb2RlbD10Yy5kZWNpbWFsUGxhY2VzIHN0eWxlIG5nLXByaXN0aW5lIG5nLXVudG91Y2hlZCBuZy12YWxpZD48L2Rpdj48L2Rpdj48L2Rpdj48L3RoPjx0aCBjb2xzcGFuPTEwMCBuZy1pZj1wYXJhbWV0ZXJzLkJ1aWxkTW9kZT48ZGl2IHN0eWxlPVwicmlnaHQ6MDsgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IG1heC13aWR0aDogMjUlOyB6LWluZGV4OiAxMDA7IG92ZXJmbG93OiBhdXRvOyB3aWR0aDogZml0LWNvbnRlbnQ7IG1hcmdpbi10b3A6IC0xLjVyZW07XCIgbmctc2hvdz1zaG93VGFibGVDb25maWdNZW51IGNsYXNzPVwibWwtMSBib3JkZXIgbS0yIHAtMiBwb3NpdGlvbi1hYnNvbHV0ZSBkLWZsZXggZmxleC1jb2x1bW5cIj48ZGl2IGNsYXNzPXRleHQtZGFyayBzdHlsZT1mb250LXdlaWdodDoxMDAgbHItZHJhZy1zcmM9aGVhZGVyczIgbHItZHJvcC10YXJnZXQ9aGVhZGVyczIgbmctcmVwZWF0PVwiaGQgaW4gY29sdW1uRGVmc1wiPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPWVsZW1lbnQtZHJhZy1oYW5kbGUga3RseW8taWQ9Y2JEcnVnbyBuZy1tb2RlbD1oZC52aXNpYmxlPiB7ezo6aGQuZGlzcGxheU5hbWV9fSA8c3BhbiBuZy1pZj06OmhkLnJlc291cmNlRGVmSWQ+KHt7OjpoZC5yZXNvdXJjZURlZklkfX0pPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9XCJib3gtc2hhZG93OjAgMCAxcHggIzA4ODVCQTsgcmlnaHQ6MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTt3aWR0aDogMTUlO1wiIGt0bHlvLWlkPXRibFNvcnRNZW51IG5nLXNob3c9c2hvd1NvcnRNZW51IGNsYXNzPVwibWwtMSBib3JkZXIgbS0yIHBvc2l0aW9uLWFic29sdXRlIGQtZmxleCBmbGV4LWNvbHVtblwiPjxkaXYgY2xhc3M9XCJtLTEgYm9sZFwiPlNvcnQgb3JkZXI8L2Rpdj48ZGl2IGNsYXNzPVwibXgtMSBwLTFcIiBzdHlsZT48ZGl2IG5nLXJlcGVhdD1cImNkIGluIHNvcnRDb2x1bW5EZWZzXCIgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZDsgYm9yZGVyLXJhZGl1czogMXJlbTttYXJnaW46IDJweCAycHggMnB4IDJweDsgZm9udC13ZWlnaHQ6MTAwO2JhY2tncm91bmQtY29sb3I6I2VkZTBlMFwiIGxyLWRyYWctc3JjPWhlYWRlcnMzIGxyLWRyb3AtdGFyZ2V0PWhlYWRlcnMzIGxyLWRyb3Atc3VjY2Vzcz1kcm9wU3VjY2VzcygpPjxkaXYgc3R5bGU9XCJib3JkZXI6IG5vbmUgIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czogMXJlbTtiYWNrZ3JvdW5kLWNvbG9yOiAjRTdFOUVDO3BhZGRpbmc6IDJweCA0cHggMnB4IDRweDsgbGluZS1oZWlnaHQ6IDEuMDtcIiBjbGFzcz1cImJvbGQgZC1pbmxpbmUtYmxvY2tcIj57eyRpbmRleCsxfX08L2Rpdj48ZGl2IGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgbWwtMVwiPnt7OjpjZC5kaXNwbGF5TmFtZX19PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC90aD48L3RyPjwvdGhlYWQ+PHRmb290Pjx0ciBuZy1zaG93PTo6dXNlUGFnaW5hdGlvbj48dGQgY29sc3Bhbj0xMDAlPjxkaXYgY2xhc3M9XCJwdC0zIHRleHQtbGVmdCBib3JkZXItdG9wXCIgc3QtcGFnaW5hdGlvbiBzdC1pbml0aWFsLXBhZ2U9aW5pdGlhbFBhZ2Ugc3QtaXRlbXMtYnktcGFnZT1wYXJhbWV0ZXJzLkl0ZW1zT25QYWdlIHN0LWRpc3BsYXllZC1wYWdlcz1wYXJhbWV0ZXJzLlBhZ2VyTWF4UGFnZXM+PC9kaXY+PC90ZD48L3RyPjwvdGZvb3Q+PC90YWJsZT48L2Rpdj48ZGl2IHNtYXJ0Y2FyZHMtbGF5b3V0IG5nLWlmPVwiZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlPT1cXCdjYXJkXFwnXCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgbXgtMlwiIG5nLWlmPVwiZmQubG9jYWxWYXJzLmNhcmRMYXlvdXRMb2FkZWQgJiYgZmQubG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEubGVuZ3RoPjAgJiYgIWZkLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGluZ1wiPjxkaXYgbmctcmVwZWF0PVwiZGF0YVJlYyBpbiBkaXNwbGF5VGFibGVEYXRhXCIgY2xhc3M9XCJjb2wtNiBjb2wtbGcte3s6OmZkLlBhcmFtZXRlcnMuQ2FyZFNpemVYTGd9fSBjb2wtbWQte3s6OmZkLlBhcmFtZXRlcnMuQ2FyZFNpemVYTWR9fSBjb2wtc20te3s6OmZkLlBhcmFtZXRlcnMuQ2FyZFNpemVYU219fSBjb2wte3s6OmZkLlBhcmFtZXRlcnMuQ2FyZFNpemVYWHN9fSBwLTEgc2hvdy1vbi1ob3Zlci1jb250YWluZXItMVwiIG5nLWNsYXNzPVwie1xcJ3NlbGVjdGVkXFwnOmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZENhcmRJbmRleD09JGluZGV4fVwiPjxkaXYgY2xhc3M9XCJoLTEwMCBkYXRhc2V0LWxpc3QtY2FyZFwiIHN0eWxlPXt7ZmQuUGFyYW1ldGVycy5DYXJkQ3NzU3R5bGV9fSBuZy1jbGFzcz1cIntcXCdzZWxlY3RlZFxcJzpmZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuc2VsZWN0ZWRDYXJkSW5kZXg9PSRpbmRleH1cIj48ZGl2IG5nLWlmPVwiZmQuRm9ybURlZi5sZW5ndGg+MCB8fCAoZmQuUGFyYW1ldGVyc0xhbmcuQ2FyZEhlYWRlclRleHQhPXVuZGVmaW5lZCAmJiBmZC5QYXJhbWV0ZXJzTGFuZy5DYXJkSGVhZGVyVGV4dCE9XFwnXFwnKVwiIHN0eWxlIGNsYXNzPVwicm93IG14LTAgcHktMiBzaG93LW9uLWhvdmVyLWl0ZW0tMVwiPjxkaXYgY2xhc3M9Y29sPjxkaXYgbmctYmluZC1odG1sPWZkLlBhcmFtZXRlcnNMYW5nLkNhcmRIZWFkZXJUZXh0PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLWF1dG8+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBzdHlsZT1cImJveC1zaGFkb3c6IG5vbmU7XCIgY2xhc3M9XCJidG4gcHktMCBweC0xXCIgbmctY2xpY2s9ZmQubG9jYWxWYXJzLnNlbGVjdENhcmRJdGVtKCRpbmRleCk+PGkgY2xhc3M9XCJmYXMgZmEtZWxsaXBzaXMtdlwiPjwvaT48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiaW5pdGlhdGUtdGFzay13aWRnZXQgaW5pdC10YXNrLXN0eWxlIGJnLXdoaXRlXCIgbmctY2xhc3M9XCJ7XFwnc2VsZWN0ZWRcXCc6ZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnNlbGVjdGVkQ2FyZEluZGV4PT0kaW5kZXh9XCI+PGRpdiBuZy1yZXBlYXQ9XCJhY3RCdG4gaW4gZmQuRm9ybURlZiB0cmFjayBieSAkaW5kZXhcIj48YnV0dG9uIHRpdGxlPXt7YWN0QnRuLmJ0bkxhYmVsfX0gbmctY2xpY2s9ZmQubG9jYWxWYXJzLnByb2Nlc3NUYWJsZUFjdGlvbihkYXRhUmVjLCRpbmRleCkgdHlwZT1idXR0b24gY2xhc3M9XCJidG4ge3thY3RCdG4uYnRuQ2xhc3N9fSBib3JkZXItMCByb3VuZGVkLTAgZm50NyB3LTEwMCB0ZXh0LWxlZnRcIj48aSBjbGFzcz1cInt7YWN0QnRuLmljb259fSBtci0yXCI+PC9pPnt7YWN0QnRuLmJ0bkxhYmVsfX08L2J1dHRvbj48L2Rpdj48ZGl2IGt0LWluaXRpYXRlLXRhc2std2lkZ2V0IGNsYXNzPXZpc2liaWxpdHktaGlkZGVuIG5nLWlmPVwiZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnNlbGVjdGVkQ2FyZEluZGV4PT0kaW5kZXhcIj48L2Rpdj48L2Rpdj48ZGl2IGt0LWdyaWQgY2xhc3M9a3RHcmlkIGdyaWQtdHlwZT1mZC5sb2NhbFZhcnMuZ3JpZHN0ZXJUeXBlIHNob3ctc2VhcmNoLWZpbHRlcnM9ZmFsc2UgcmVzb3VyY2UtZm9ybS1sb2FkZWQ9dHJ1ZSBwYXJlbnQtZGF0YXNldC1kZWYtaWQgZGF0YXNldC1yZWNvcmQtaWQgcmVzb3VyY2UtZGVmaW5pdGlvbj1yZXNvdXJjZURlZmluaXRpb24gZm9ybS1wYXJhbXM9ZmQubG9jYWxWYXJzLmNhcmRMYXlvdXRQYXJhbXMgZm9ybS1wYXJhbXMtcGFyZW50PWZvcm1QYXJhbXMgZm9ybS1kYXRhPWRhdGFSZWMgcGFyYW1zPSRpbmRleCBwYXJlbnQ9ZmQubG9jYWxWYXJzLmRhc2hib2FyZENhcmQud2lkZ2V0cyBhbGwtY29sdW1ucz1mZC5sb2NhbFZhcnMuZGFzaGJvYXJkQ2FyZC53aWRnZXRzPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2FyZHMtcGFnaW5hdG9yIG5nLWlmPVwicGFyYW1ldGVycy5CdWlsZE1vZGUgfHwgIXBhcmFtZXRlcnMuaGlkZVBhZ2VyXCIgY2xhc3M9cGFnaW5hdG9yLWNvbnRhaW5lci1xdWVyeT48ZGl2IGNsYXNzPW5hdi1jb250YWluZXI+PGRpdiBjbGFzcz1sZXNzLXRoYW4tMzYwPjwvZGl2PjxuYXYgc3R5bGU9ZGlzcGxheTppbmxpbmUgbmctc2hvdz1cImRpc3BsYXlUYWJsZURhdGEubGVuZ3RoPjBcIiBjbGFzcz48dWwgY2xhc3M9XCJwYWdpbmF0aW9uIHBhZ2luYXRpb24tc20gbXktYXV0byBweS00XCIgc3R5bGU9XCJhbGlnbiBpdGVtczogY2VudGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7Zm9udC1zaXplOiB7e2ZvbnRTaXplfX0gIWltcG9ydGFudFwiPjxsaSBuZy1jbGFzcz1cIntkaXNhYmxlZDp0YWJsZVN0YXRlLnBhZ2luYXRpb24uY3VycmVudFBhZ2U9PTF9XCIgY2xhc3M9cGFnZS1pdGVtPjxhIGhyZWY9IyBjbGFzcz1wYWdlLWxpbmsgbmctY2xpY2s9XCJzZWxlY3RQYWdlKDEpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPjxzcGFuIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1sZWZ0XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1jaGV2cm9uLWxlZnRcIj48L3NwYW4+PC9zcGFuPjwvYT48L2xpPjxsaSBuZy1jbGFzcz1cIntkaXNhYmxlZDp0YWJsZVN0YXRlLnBhZ2luYXRpb24uY3VycmVudFBhZ2U9PTF9XCIgY2xhc3M9cGFnZS1pdGVtPjxhIGhyZWY9IyBjbGFzcz1wYWdlLWxpbmsgbmctY2xpY2s9XCJzZWxlY3RQYWdlKHRhYmxlU3RhdGUucGFnaW5hdGlvbi5jdXJyZW50UGFnZS0xKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj48c3BhbiBjbGFzcz1cImZhIGZhLWNoZXZyb24tbGVmdFwiPjwvc3Bhbj48L2E+PC9saT48bGkgbmctcmVwZWF0PVwicGFnZSBpbiB0YWJsZVN0YXRlLnBhZ2luYXRpb24ucGFnZXNcIiBjbGFzcz1wYWdlLWl0ZW0gbmctY2xhc3M9XCJ7YWN0aXZlOiBwYWdlPT10YWJsZVN0YXRlLnBhZ2luYXRpb24uY3VycmVudFBhZ2V9XCI+PGEgaHJlZj0jIGNsYXNzPXBhZ2UtbGluayBuZy1jbGljaz1cInNlbGVjdFBhZ2UocGFnZSk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+e3twYWdlfX08L2E+PC9saT48bGkgbmctY2xhc3M9XCJ7ZGlzYWJsZWQ6dGFibGVTdGF0ZS5wYWdpbmF0aW9uLmN1cnJlbnRQYWdlPT10YWJsZVN0YXRlLnBhZ2luYXRpb24ubnVtYmVyT2ZQYWdlc31cIiBjbGFzcz1wYWdlLWl0ZW0+PGEgaHJlZj0jIGNsYXNzPXBhZ2UtbGluayBuZy1jbGljaz1cInNlbGVjdFBhZ2UodGFibGVTdGF0ZS5wYWdpbmF0aW9uLmN1cnJlbnRQYWdlKzEpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPjxzcGFuIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1yaWdodFwiPjwvc3Bhbj48L2E+PC9saT48bGkgbmctY2xhc3M9XCJ7ZGlzYWJsZWQ6dGFibGVTdGF0ZS5wYWdpbmF0aW9uLmN1cnJlbnRQYWdlPT10YWJsZVN0YXRlLnBhZ2luYXRpb24ubnVtYmVyT2ZQYWdlc31cIiBjbGFzcz1wYWdlLWl0ZW0+PGEgaHJlZj0jIGNsYXNzPXBhZ2UtbGluayBuZy1jbGljaz1cInNlbGVjdFBhZ2UodGFibGVTdGF0ZS5wYWdpbmF0aW9uLm51bWJlck9mUGFnZXMpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPjxzcGFuIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1yaWdodFwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1yaWdodFwiPjwvc3Bhbj48L3NwYW4+PC9hPjwvbGk+PC91bD48L25hdj48ZGl2IHN0eWxlPVwiYWxpZ24taXRlbXM6IGNlbnRlcjsgZGlzcGxheTpmbGV4OyB3aWR0aDogZml0LWNvbnRlbnQ7IGp1c3RpZnktY29udGVudDogZW5kO2ZvbnQtc2l6ZToge3tmb250U2l6ZX19ICFpbXBvcnRhbnRcIj48c2VsZWN0IGNsYXNzPXJvdW5kZWQgbmctbW9kZWw9cGFyYW1ldGVycy5JdGVtc09uUGFnZSBuZy1vcHRpb25zPVwiaXRlbSBmb3IgaXRlbSBpbiBwYWdlSXRlbXNMaXN0IHRyYWNrIGJ5IGl0ZW1cIj48L3NlbGVjdD48c3BhbiBjbGFzcz1cIm1sLTEgc21hbGxcIj57e3BhcmFtZXRlcnMuUGFnZXJMYWJlbDF9fSB7e3RhYmxlU3RhdGUucGFnaW5hdGlvbi5jdXJyZW50UGFnZX19IC8ge3t0YWJsZVN0YXRlLnBhZ2luYXRpb24ubnVtYmVyT2ZQYWdlc319IHwge3t0YWJsZVN0YXRlLnBhZ2luYXRpb24uc3RhcnQrMX19IC0ge3sgTWF0aC5taW4gKCB0YWJsZVN0YXRlLnBhZ2luYXRpb24uY3VycmVudFBhZ2UgKiB0YWJsZVN0YXRlLnBhZ2luYXRpb24ubnVtYmVyICwgdGFibGVTdGF0ZS5wYWdpbmF0aW9uLnRvdGFsSXRlbUNvdW50KSB9fSB7e3BhcmFtZXRlcnMuUGFnZXJMYWJlbDJ9fSB7e3RhYmxlU3RhdGUucGFnaW5hdGlvbi50b3RhbEl0ZW1Db3VudH19IHt7cGFyYW1ldGVycy5QYWdlckxhYmVsM319PC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxzdHlsZT5cXHJcXG4uc21hcnQtdGFibGUte3twYXJhbWV0ZXJzLlV1aWRSZWZ9fSA+IHRib2R5IHRyLnN0LXNlbGVjdGVke1xcclxcblxcclxcbiAgICB7e3BhcmFtZXRlcnMudGFibGUuc2VsZWN0ZWRSb3dTdHlsZX19XFxyXFxufVxcclxcblxcclxcbi5zbWFydC10YWJsZS17e3BhcmFtZXRlcnMuVXVpZFJlZn19ID4gdGJvZHkgdHI6bm90KC5zdC1zZWxlY3RlZCk6aG92ZXJ7XFxyXFxuXFxyXFxuICAgIHt7cGFyYW1ldGVycy50YWJsZS5ob3ZlclJvd1N0eWxlfX1cXHJcXG59XFxyXFxuPC9zdHlsZT4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RTbWFydFRhYmxlLmh0bWwnLCc8ZGl2IGt0c21hcnR0YWJsZT48YnV0dG9uIGNsYXNzPVwibXktMiBidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgbmctaWY9cGFyYW1ldGVycy5wcmludGFibGUgbmctY2xpY2s9ZXhwb3J0MmV4Y2VsKCk+RXhwb3J0IGZvciBwcmludDwvYnV0dG9uPjxkaXYgbmctaWY9XCJwYXJhbWV0ZXJzLlNob3dUYWJsZUZlYXR1cmVzIHx8IHBhcmFtZXRlcnMuQnVpbGRNb2RlXCIgY2xhc3M9dGV4dC1yaWdodD48YnV0dG9uIG5nLWlmPXBhcmFtZXRlcnMuQnVpbGRNb2RlIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhcmsgYm9yZGVyLTBcIiBuZy1jbGljaz10b2dnbGVUYWJsZUNvbmZpZ01lbnUoKT48c3ZnIHZpZXdib3g9XCIzNC44MTggMjEuNjg5IDM4Mi45OTEgMzM0LjQ3NVwiIHhtbG5zPWh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIHdpZHRoPTEuMmVtIGhlaWdodD0xLjJlbT48cmVjdCB4PTU5LjM2MSB5PTU5LjM2MSB3aWR0aD0xMzkuMjY5IGhlaWdodD0zMi41MzQgc3R5bGU9XCJzdHJva2U6IHJnYigwLCAwLCAwKTsgZmlsbDogcmdiKDcsIDcsIDcpO1wiPjwvcmVjdD48cmVjdCB4PTI1My40MjQgeT01OS42NDYgd2lkdGg9MTM5LjI2OSBoZWlnaHQ9MzIuNTM0IHN0eWxlPVwiZmlsbDogcmdiYSg3LCA3LCA3LCAwLjQzKTtcIj48L3JlY3Q+PHJlY3QgeD01OS45MzIgeT0xMzEuOTk0IHdpZHRoPTEzOS4yNjkgaGVpZ2h0PTMyLjUzNCBzdHlsZT1cInN0cm9rZTogcmdiKDAsIDAsIDApOyBmaWxsOiByZ2IoNywgNywgNyk7XCI+PC9yZWN0PjxyZWN0IHg9NjEuNjQ1IHk9MjA1LjQ4MiB3aWR0aD0xMzkuMjY5IGhlaWdodD0zMi41MzQgc3R5bGU9XCJzdHJva2U6IHJnYigwLCAwLCAwKTsgZmlsbDogcmdiKDcsIDcsIDcpO1wiPjwvcmVjdD48cmVjdCB4PTU5LjkzMSB5PTI3Ny4xMTEgd2lkdGg9MTM5LjI2OSBoZWlnaHQ9MzIuNTM0IHN0eWxlPVwic3Ryb2tlOiByZ2IoMCwgMCwgMCk7IGZpbGw6IHJnYig3LCA3LCA3KTtcIj48L3JlY3Q+PHJlY3QgeD0yNTUuMTM4IHk9MTMxLjU2NCB3aWR0aD0xMzkuMjY5IGhlaWdodD0zMi41MzQgc3R5bGU9XCJmaWxsOiByZ2JhKDcsIDcsIDcsIDAuNDMpO1wiPjwvcmVjdD48cmVjdCB4PTI1Mi44NTQgeT0yMDQuOTExIHdpZHRoPTEzOS4yNjkgaGVpZ2h0PTMyLjUzNCBzdHlsZT1cImZpbGw6IHJnYmEoNywgNywgNywgMC40Myk7XCI+PC9yZWN0PjxyZWN0IHg9MjUzLjQyNSB5PTI3Ny42ODMgd2lkdGg9MTM5LjI2OSBoZWlnaHQ9MzIuNTM0IHN0eWxlPVwiZmlsbDogcmdiYSg3LCA3LCA3LCAwLjQzKTtcIj48L3JlY3Q+PC9zdmc+PC9idXR0b24+IDxidXR0b24gbmctaGlkZT1wYXJhbWV0ZXJzLkJ1aWxkTW9kZSB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kYXJrIGJvcmRlci0wXCIgbmctY2xpY2s9ZXhwb3J0VGFibGUoKT48c3BhbiBjbGFzcz1cImZhIGZhLXNhdmVcIj48L3NwYW4+PC9idXR0b24+IDxidXR0b24gbmctaGlkZT0hcGFyYW1ldGVycy5CdWlsZE1vZGUgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFyayBib3JkZXItMFwiIG5nLWNsaWNrPXRvZ2dsZVNvcnRNZW51KCk+PHNwYW4gY2xhc3M9XCJmYXMgZmEtc29ydC1hbW91bnQtdXBcIj48L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcyBuZy1zaG93PXBhcmFtZXRlcnMuQnVpbGRNb2RlPjxkaXYgY2xhc3M9bXktMj48bGFiZWwgY2xhc3M9bGFiZWwteHM+U2hvdyByb3cgY291bnRlcjwvbGFiZWw+IDxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzIGt0bHlvLWlkPWNiRm9ybWF0IG5nLW1vZGVsPXBhcmFtZXRlcnMudGFibGUuc2hvd0NvdW50ZXI+PC9kaXY+PGRpdiBuZy1pZj1wYXJhbWV0ZXJzLnRhYmxlLnNob3dDb3VudGVyIGNsYXNzPW15LTI+PGxhYmVsIGNsYXNzPWxhYmVsLXhzPkNvdW50ZXIgbGFiZWw8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzIGt0bHlvLWlkPWNiRm9ybWF0IG5nLW1vZGVsPXBhcmFtZXRlcnMudGFibGUuY291bnRlckxhYmVsPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9bXktMiBuZy1zaG93PXBhcmFtZXRlcnMuQnVpbGRNb2RlPkNvbHVtbiB2aXNpYmlsaXR5IGFuZCBzb3J0aW5nPC9kaXY+PGRpdiBpZD10Ymxjb250YWluZXJ7e3BhcmFtZXRlcnMuVXVpZFJlZn19IHN0eWxlPVwiYm9yZGVyOjFweCBzb2xpZCAjRDRENkRCOyBib3JkZXItcmFkaXVzOiAwLjI1cmVtOyB7e3BhcmFtZXRlcnMuY3NzU3R5bGV9fVwiIGNsYXNzPXRhYmxlLWthdGFseW8td3JhcHBlcj48dGFibGUga3RseW8taWQ9Tk9UX0NMSUVOVF9TSURFIHN0eWxlPVwiYm9yZGVyLXNwYWNpbmc6IDAge3twYXJhbWV0ZXJzLnRhYmxlLlZlcnRpY2FsU3BhY2luZyAqIDJ9fXB4IDsgYm9yZGVyLWNvbGxhcHNlOiB7eyBwYXJhbWV0ZXJzLnRhYmxlLlZlcnRpY2FsU3BhY2luZyA+IDAgPyBcXCdzZXBhcmF0ZVxcJzpcXCdjb2xsYXBzZVxcJyB9fTsgb3ZlcmZsb3c6YXV0bztmb250LXNpemU6IHt7Zm9udFNpemV9fSAhaW1wb3J0YW50O2NvbG9yOiMyNjMwNGNcIiBuZy1pZj0hY2xpZW50U2lkZSBzdC10YWJsZT1kaXNwbGF5VGFibGVEYXRhIHN0LWl0ZW1zLWJ5LXBhZ2U9c3RJdGVtc0J5UGFnZSBzdC1waXBlPXJlZnJlc2hEYXRhIGNsYXNzPVwidGFibGUta2F0YWx5byBzbWFydC10YWJsZS17e3BhcmFtZXRlcnMuVXVpZFJlZn19XCI+PHRoZWFkIHN0eWxlPVwiY29sb3I6e3twYXJhbWV0ZXJzLnRhYmxlLkhlYWRlckZvbnRDb2xvciB9fVwiPjx0ciBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHt7cGFyYW1ldGVycy50YWJsZS5IZWFkZXJCZ0NvbG9yIHx8IFxcJyNFQUVCRUVcXCd9fVwiPjx0aCBuZy1pZj1wYXJhbWV0ZXJzLk11bHRpbGluZSBuZy1jbGljaz1zZWxlY3RBbGxSb3dzKCkgc3R5bGU9XCJ3aWR0aDogMSU7cGFkZGluZzogMC4zNzVyZW0gMC4zNzVyZW0gMC4zNzVyZW0gMC43cmVtICFpbXBvcnRhbnQ7XCI+PGkgY2xhc3M9XCJmYSBmYS1jaGVjay1jaXJjbGVcIiBuZy1pZj1hbGxTZWxlY3RlZD48L2k+IDxpIGNsYXNzPVwiZmFyIGZhLWNpcmNsZVwiIG5nLWlmPSFhbGxTZWxlY3RlZD48L2k+PC90aD48dGggbmctaWY9XCI6OmFsbG93U29ydCAmJiAodGMudmlzaWJsZSB8fCB0Yy52aXNpYmxlPT11bmRlZmluZWQpXCIgbmctcmVwZWF0PVwidGMgaW4gY29sdW1uRGVmcyB0cmFjayBieSB0Yy5uYW1lXCIgc3R5bGU9XCJwYWRkaW5nOiB7e2NlbGxQYWRkaW5nfX0gIWltcG9ydGFudDtcIiBsci1kcmFnLXNyYz1oZWFkZXJzIGxyLWRyb3AtdGFyZ2V0PWhlYWRlcnMgc3Qtc29ydD17e3RjLm5hbWV9fT48c3Bhbj57ezo6dGMuZGlzcGxheU5hbWV9fTwvc3Bhbj48L3RoPjx0aCBuZy1jbGljaz1mbGlwU29ydCh0YykgbmctcmVwZWF0PVwidGMgaW4gY29sdW1uRGVmcyB0cmFjayBieSB0Yy5uYW1lXCIgc3R5bGU9XCJ3aWR0aDoge3t0Yy53aWR0aH19OyBwYWRkaW5nOiB7e2NlbGxQYWRkaW5nfX0gIWltcG9ydGFudFwiIG5nLWlmPVwiIWFsbG93U29ydCAmJiAodGMudmlzaWJsZSB8fCB0Yy52aXNpYmxlPT11bmRlZmluZWQpXCIgbHItZHJhZy1zcmM9aGVhZGVycyBsci1kcm9wLXRhcmdldD1oZWFkZXJzIHN0LXNvcnQ9ZGF0YVNvcnRGdW4ubGlzdGEgY2xhc3M+PGRpdiBjbGFzcz1cImQtZmxleCBlbGVtZW50LWRyYWctaGFuZGxlIHt7dGMuc3R5bGV9fVwiPjxkaXYgY2xhc3M9XCJtdC0xIG1sLTEgZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj48c3BhbiBuZy1zaG93PVwidGMuc29ydD09XFwnZGVzY2VuZGluZ1xcJ1wiIGNsYXNzPVwibXItMSBmYXMgZmEtc29ydC11cFwiPjwvc3Bhbj4gPHNwYW4gbmctc2hvdz1cInRjLnNvcnQ9PVxcJ2FzY2VuZGluZ1xcJ1wiIGNsYXNzPVwibXItMSBmYXMgZmEtc29ydC1kb3duXCI+PC9zcGFuPjwvZGl2PjxzcGFuPnt7Ojp0Yy5kaXNwbGF5TmFtZX19PC9zcGFuPiA8aW5wdXQgbmctc2hvdz1cImRpc3BsYXlUYWJsZURhdGEgPT0gdW5kZWZpbmVkICYmIHBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZSE9XFwnY2FyZFxcJ1wiIHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJtdC0xIG1sLTJcIiBrdGx5by1pZD1jYkhpZGRlbiBuZy1tb2RlbD1sb2NhbFZhcnMuc2hvd01lbnUgbmctY2xpY2s9c2hvd01lbnVGbigkZXZlbnQpOz48L2Rpdj48ZGl2IG5nLXNob3c9bG9jYWxWYXJzLnNob3dNZW51IG5nLWNsaWNrPSRldmVudC5zdG9wUHJvcGFnYXRpb24oKSBzdHlsZT1cInt7cG9zaXRpb25Dc3N9fTt6LWluZGV4OiAxMDAwO2JhY2tncm91bmQtY29sb3I6IHdoaXRlO3Bvc2l0aW9uOmFic29sdXRlOyBib3JkZXI6IDFweCBzb2xpZCAhaW1wb3J0YW50O1wiIGt0bHlvLWlkPXRibE1lbnUgY2xhc3M9XCJ0ZXh0LWRhcmsgYm9yZGVyIHAtMiBkLWZsZXggZmxleC1jb2x1bW5cIj48ZGl2IGNsYXNzPjxkaXY+PGxhYmVsIGNsYXNzPWxhYmVsLXhzPldpZHRoOjwvbGFiZWw+PC9kaXY+PGRpdj48aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIGt0bHlvLWlkPWNiV2lkdGggbmctbW9kZWw9dGMud2lkdGg+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1teS0xPjxkaXY+PGxhYmVsIGNsYXNzPWxhYmVsLXhzPkNTUyBzdHlsZTo8L2xhYmVsPjwvZGl2PjxkaXY+PGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBrdGx5by1pZD1jYlN0eWxlIG5nLW1vZGVsPXRjLnN0eWxlPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9bXktMT48ZGl2PjxsYWJlbCBjbGFzcz1sYWJlbC14cz5Db2x1bW4gbmFtZTo8L2xhYmVsPjwvZGl2PjxkaXY+PGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBrdGx5by1pZD1jYlN0eWxlIG5nLW1vZGVsPXRjLmRpc3BsYXlOYW1lPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9bXQtMj48bGFiZWwgY2xhc3M9bGFiZWwtc20+U29ydDwvbGFiZWw+IDxidXR0b24gbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnIDogdGMuc29ydCA9PSBcXCdhc2NlbmRpbmdcXCd9XCIgc3R5bGU9XCJwYWRkaW5nOiAwLjMyNXJlbSAwLjQ1cmVtOyBmb250LXNpemU6IDAuOHJlbTtcIiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi14c1wiIG5nLWNsaWNrPVwidGMuc29ydD1cXCdhc2NlbmRpbmdcXCdcIj48c3BhbiBjbGFzcz1cImZhIGZhLWFycm93LXVwXCI+PC9zcGFuPjwvYnV0dG9uPiA8YnV0dG9uIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJyA6IHRjLnNvcnQgPT0gXFwnZGVzY2VuZGluZ1xcJ31cIiBzdHlsZT1cInBhZGRpbmc6IDAuMzI1cmVtIDAuNDVyZW07IGZvbnQtc2l6ZTogMC44cmVtO1wiIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYnRuLXhzXCIgbmctY2xpY2s9XCJ0Yy5zb3J0PVxcJ2Rlc2NlbmRpbmdcXCdcIj48c3BhbiBjbGFzcz1cImZhIGZhLWFycm93LWRvd25cIj48L3NwYW4+PC9idXR0b24+IDxidXR0b24gc3R5bGU9XCJwYWRkaW5nOiAwLjMyNXJlbSAwLjQ1cmVtOyBmb250LXNpemU6IDAuOHJlbTtcIiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi14c1wiIG5nLWNsaWNrPVwidGMuc29ydD1cXCdcXCdcIj48c3BhbiBjbGFzcz1cImZhcyBmYS10aW1lc1wiPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPW15LTI+PGRpdj48bGFiZWwgY2xhc3M9bGFiZWwteHM+U29ydCBwcmlvcml0eToge3t0Yy5zb3J0T3JkZXIgKzEgfX08L2xhYmVsPjwvZGl2PjxkaXY+PGlucHV0IG5nLWNoYW5nZT1wcm9tamVuYSh0YykgdHlwZT1yYW5nZSBuYW1lPXJhbmdlIG1pbj0wIG1heD0yIGNsYXNzPXctMTAwIGt0bHlvLWlkPWNiU29ydFByaW9yaXR5IG5nLW1vZGVsPXRjLnNvcnRPcmRlcj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPW15LTE+PGxhYmVsIGNsYXNzPWxhYmVsLXhzPkRlY2ltYWwgcGxhY2VzOjwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1kLWZsZXg+PGRpdj48aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIGt0bHlvLWlkPWNiRGVjaW1hbCBuZy1tb2RlbD10Yy5kZWNpbWFsUGxhY2VzIHN0eWxlIG5nLXByaXN0aW5lIG5nLXVudG91Y2hlZCBuZy12YWxpZD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPW15LTI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3Mga3RseW8taWQ9Y2JGb3JtYXQgbmctbW9kZWw9dGMuZGlzYWJsZUdyb3VwaW5nPiA8bGFiZWwgY2xhc3M9bGFiZWwteHM+RGlzYWJsZSAxMDAwcyBzZXBhcmF0b3I8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9bXktMj48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcyBrdGx5by1pZD1jYkZvcm1hdCBuZy1tb2RlbD10Yy5odG1sUmVuZGVyPiA8bGFiZWwgY2xhc3M9bGFiZWwteHM+SHRtbCBjb250ZW50PC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPW15LTE+PGxhYmVsIGNsYXNzPWxhYmVsLXhzPkZvcm11bGE6PC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPWQtZmxleD48ZGl2PjxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIga3RseW8taWQ9Y2JEZWNpbWFsIG5nLW1vZGVsPXRjLmZvcm11bGEgc3R5bGUgbmctcHJpc3RpbmUgbmctdW50b3VjaGVkIG5nLXZhbGlkPjwvZGl2PjwvZGl2PjxkaXY+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3Mga3RseW8taWQ9Y2JIaWRkZW4gbmctbW9kZWw9dGMudmlzaWJsZT4gPGxhYmVsIGNsYXNzPWxhYmVsLXhzPkNvbHVtbiB2aXNpYmxlPC9sYWJlbD48L2Rpdj48L2Rpdj48L3RoPjx0aCBjb2xzcGFuPTEwMCBuZy1pZj1cInNob3dBY3Rpb25CdXR0b25zIHx8IHBhcmFtZXRlcnMuQnVpbGRNb2RlXCI+PGRpdiBzdHlsZT1cInJpZ2h0OjA7IGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyBtYXgtd2lkdGg6IDI1JTsgei1pbmRleDogMTAwOyBvdmVyZmxvdzogYXV0bzsgd2lkdGg6IGZpdC1jb250ZW50OyBtYXJnaW4tdG9wOiAtMS41cmVtO1wiIG5nLXNob3c9c2hvd1RhYmxlQ29uZmlnTWVudSBjbGFzcz1cIm1sLTEgYm9yZGVyIG0tMiBwLTIgcG9zaXRpb24tYWJzb2x1dGUgZC1mbGV4IGZsZXgtY29sdW1uXCI+PGRpdiBjbGFzcz1cInRleHQtZGFyayBtYi0yXCI+VmlzaWJsZSBjb2x1bW5zPC9kaXY+PGRpdiBjbGFzcz10ZXh0LWRhcmsgc3R5bGU9Zm9udC13ZWlnaHQ6MTAwIGxyLWRyYWctc3JjPWhlYWRlcnMyIGxyLWRyb3AtdGFyZ2V0PWhlYWRlcnMyIG5nLXJlcGVhdD1cImhkIGluIGNvbHVtbkRlZnNcIj48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1lbGVtZW50LWRyYWctaGFuZGxlIGt0bHlvLWlkPWNiRHJ1Z28gbmctbW9kZWw9aGQudmlzaWJsZT4ge3s6OmhkLmRpc3BsYXlOYW1lfX0gPHNwYW4gbmctaWY9OjpoZC5yZXNvdXJjZURlZklkPih7ezo6aGQucmVzb3VyY2VEZWZJZH19KTwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IHN0eWxlPVwiYm94LXNoYWRvdzowIDAgMXB4ICMwODg1QkE7IHJpZ2h0OjBweDsgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7d2lkdGg6IDE1JTtcIiBrdGx5by1pZD10YmxTb3J0TWVudSBuZy1zaG93PXNob3dTb3J0TWVudSBjbGFzcz1cIm1sLTEgYm9yZGVyIG0tMiBwb3NpdGlvbi1hYnNvbHV0ZSBkLWZsZXggZmxleC1jb2x1bW5cIj48ZGl2IGNsYXNzPVwibS0xIGJvbGRcIj5Tb3J0IG9yZGVyPC9kaXY+PGRpdiBjbGFzcz1cIm14LTEgcC0xXCIgc3R5bGU+PGRpdiBuZy1yZXBlYXQ9XCJjZCBpbiBzb3J0Q29sdW1uRGVmc1wiIHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQ7IGJvcmRlci1yYWRpdXM6IDFyZW07bWFyZ2luOiAycHggMnB4IDJweCAycHg7IGZvbnQtd2VpZ2h0OjEwMDtiYWNrZ3JvdW5kLWNvbG9yOiNlZGUwZTBcIiBsci1kcmFnLXNyYz1oZWFkZXJzMyBsci1kcm9wLXRhcmdldD1oZWFkZXJzMyBsci1kcm9wLXN1Y2Nlc3M9ZHJvcFN1Y2Nlc3MoKT48ZGl2IHN0eWxlPVwiYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6IDFyZW07YmFja2dyb3VuZC1jb2xvcjogI0U3RTlFQztwYWRkaW5nOiAycHggNHB4IDJweCA0cHg7IGxpbmUtaGVpZ2h0OiAxLjA7XCIgY2xhc3M9XCJib2xkIGQtaW5saW5lLWJsb2NrXCI+e3skaW5kZXgrMX19PC9kaXY+PGRpdiBjbGFzcz1cImQtaW5saW5lLWJsb2NrIG1sLTFcIj57ezo6Y2QuZGlzcGxheU5hbWV9fTwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvdGg+PC90cj48L3RoZWFkPjx0Ym9keSBzdHlsZT1cImNvbG9yOiB7e3BhcmFtZXRlcnMudGFibGUuRm9udENvbG9yIHx8IFxcJyMyNjMwNGNcXCd9fVwiPjx0ciBuZy1pZj0hcGFyYW1ldGVycy5NdWx0aWxpbmUgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB7e3BhcmFtZXRlcnMudGFibGUuVGFibGVCZ0NvbG9yfX1cIiBvbi1kYmwtY2xpY2s9XCJwcm9jZXNzQWN0aW9uKHtcXCdpdGVtXFwnOnJvdyxcXCdhY3Rpb25JZFxcJzphY3Rpb25EZWZpbml0aW9uWzBdLmlkIH0pXCIgbmctcmVwZWF0PVwicm93IGluIGRpc3BsYXlUYWJsZURhdGFcIiBzdC1zZWxlY3Qtcm93PXJvdyBzdC1zZWxlY3RlZD1yb3dTZWxlY3RlZChyb3cpPjx0ZCBuZy1jbGljaz1zZXRBY3Rpb25zUG9zaXRpb24oJGV2ZW50LCRpbmRleCkgbmctcmVwZWF0PVwidGNSb3cgaW4gY29sdW1uRGVmcyB0cmFjayBieSB0Y1Jvdy5uYW1lXCIgbmctc3R5bGU9XCJ7XFwncGFkZGluZ1xcJyA6IGNlbGxQYWRkaW5nLCBcXCd0ZXh0LWFsaWduXFwnOiB0Y1Jvdy5FbGVtZW50VHlwZSA9PSBcXCdudW1iZXJcXCcgPyBcXCdyaWdodFxcJyA6IFxcJ2xlZnRcXCcgfVwiIG5nLWlmPVwidGNSb3cudmlzaWJsZSB8fCB0Y1Jvdy52aXNpYmxlPT11bmRlZmluZWRcIiBkYXRhLXRpdGxlPXt7Y29sdW1uRGVmc1skaW5kZXhdLmRpc3BsYXlOYW1lfX0+PHNwYW4gbmctaWY9XCJ0Y1Jvdy50eXBlIT09XFwnYm9vbFxcJ1wiIG5nLWJpbmQ9Ojpyb3cuZ2V0SXRlbVt0Y1Jvdy5uYW1lXSBuZy1jbGFzcz1cInsgXFwnYmFkZ2UgYmFkZ2UtaW5mb1xcJyA6IHRjUm93LnR5cGUgPT0gXFwnYmFkZ2VcXCcgJiYgcm93LmdldEl0ZW1bdGNSb3cubmFtZV09PVxcJ0RhdGFzZXRcXCcsIFxcJ2JhZGdlIGJhZGdlLWRhcmtcXCcgOiB0Y1Jvdy50eXBlID09IFxcJ2JhZGdlXFwnICYmIHJvdy5nZXRJdGVtW3RjUm93Lm5hbWVdPT1cXCdSZXNvdXJjZSBtYXBwaW5nXFwnLCBcXCdiYWRnZSBiYWRnZS13YXJuaW5nXFwnIDogdGNSb3cudHlwZSA9PSBcXCdiYWRnZVxcJyAmJiByb3cuZ2V0SXRlbVt0Y1Jvdy5uYW1lXT09XFwnUGFnZVxcJywgXFwnYmFkZ2UgYmFkZ2Utc3VjY2Vzc1xcJyA6IHRjUm93LnR5cGUgPT0gXFwnYmFkZ2VcXCcgJiYgcm93LmdldEl0ZW1bdGNSb3cubmFtZV09PVxcJ0FwcGxpY2F0aW9uIG1lbnVcXCcsIFxcJ2JhZGdlIGJhZGdlLXByaW1hcnlcXCcgOiB0Y1Jvdy50eXBlID09IFxcJ2JhZGdlXFwnICYmIHJvdy5nZXRJdGVtW3RjUm93Lm5hbWVdPT1cXCdBcHBsaWNhdGlvblxcJywgXFwnYmFkZ2UgYmFkZ2Utc2Vjb25kYXJ5XFwnIDogdGNSb3cudHlwZSA9PSBcXCdiYWRnZVxcJyAmJiByb3cuZ2V0SXRlbVt0Y1Jvdy5uYW1lXT09XFwnUGFnZSBtZW51XFwnLCBcXCdiYWRnZSBiYWRnZS1kYW5nZXJcXCcgOiB0Y1Jvdy50eXBlID09IFxcJ2JhZGdlXFwnICYmIHJvdy5nZXRJdGVtW3RjUm93Lm5hbWVdPT1cXCdGaWxlXFwnLCB9XCI+PC9zcGFuPjxkaXYgbmctaWY9XCJ0Y1Jvdy50eXBlPT09XFwnYm9vbFxcJ1wiIGNsYXNzPVwidGV4dC1jZW50ZXIgc21hcnQtdGFibGUtY2hlY2tib3hcIj48aSBuZy1pZj06OnJvdy5nZXRJdGVtW3RjUm93Lm5hbWVdIGNsYXNzPVwiZmEgZmEtY2hlY2stY2lyY2xlIHRleHQtc3VjY2Vzc1wiPjwvaT4gPGkgbmctaWY9IXJvdy5nZXRJdGVtW3RjUm93Lm5hbWVdIGNsYXNzPVwiZmEgZmEtdGltZXMtY2lyY2xlIHRleHQtZGFuZ2VyXCI+PC9pPjwvZGl2PjwvdGQ+PHRkIG5nLWlmPVwic2hvd0FjdGlvbkJ1dHRvbnMgJiYgcm93LmlzU2VsZWN0ZWRcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDI1cHg7Ym9yZGVyLXJhZGl1czogMC4yNXJlbTttaW4td2lkdGg6IDEycmVtO3otaW5kZXg6IDE7e3twb3NpdGlvbkNzc319XCIgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBzaGFkb3ctc20gcC0wIGJnLXdoaXRlIHNtLWFjdGlvbnN7eyRpbmRleH19XCI+PGRpdiBuZy1yZXBlYXQ9XCJhY3RCdG4gaW4gYWN0aW9uRGVmaW5pdGlvbiB0cmFjayBieSAkaW5kZXhcIj48YnV0dG9uIHRpdGxlPXt7YWN0QnRuLmJ0bkxhYmVsfX0gbmctY2xpY2s9XCJwcm9jZXNzQWN0aW9uKHtcXCdpdGVtXFwnOnJvdyxcXCdhY3Rpb25JZFxcJzokaW5kZXh9KVwiIHR5cGU9YnV0dG9uIHN0eWxlPXdpZHRoOjEwMCUgY2xhc3M9XCJidG4ge3thY3RCdG4uYnRuQ2xhc3N9fSBib3JkZXItMCByb3VuZGVkLTAgZm50NyB0ZXh0LWxlZnRcIj48aSBjbGFzcz1cInt7YWN0QnRuLmljb259fSBtci0yXCI+PC9pPnt7YWN0QnRuLmJ0bkxhYmVsfX08L2J1dHRvbj48L2Rpdj48L3RkPjx0ZCBuZy1pZj1cInNob3dBY3Rpb25CdXR0b25zICYmICFyb3cuaXNTZWxlY3RlZFwiIGNsYXNzPWZpbGxlci10ZD48L3RkPjwvdHI+PHRyIG5nLWlmPXBhcmFtZXRlcnMuTXVsdGlsaW5lIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjoge3twYXJhbWV0ZXJzLnRhYmxlLlRhYmxlQmdDb2xvcn19XCIgbmctcmVwZWF0PVwicm93IGluIGRpc3BsYXlUYWJsZURhdGFcIiBzdC1zZWxlY3Qtcm93PXJvdyBzdC1zZWxlY3RlZD1yb3dTZWxlY3RlZChyb3cpIHN0LXNlbGVjdC1tb2RlPW11bHRpcGxlPjx0ZCBzdHlsZT1cIndpZHRoOiAxJTtcIj48aSBjbGFzcz1cImZhIGZhLWNoZWNrLWNpcmNsZVwiIG5nLWlmPXJvdy5pc1NlbGVjdGVkPjwvaT4gPGkgY2xhc3M9XCJmYXIgZmEtY2lyY2xlXCIgbmctaWY9IXJvdy5pc1NlbGVjdGVkPjwvaT48L3RkPjx0ZCBuZy1jbGljaz1zZXRBY3Rpb25zUG9zaXRpb24oJGV2ZW50LCRpbmRleCkgbmctcmVwZWF0PVwidGNSb3cgaW4gY29sdW1uRGVmcyB0cmFjayBieSB0Y1Jvdy5uYW1lXCIgbmctc3R5bGU9XCJ7XFwncGFkZGluZ1xcJyA6IGNlbGxQYWRkaW5nLCBcXCd0ZXh0LWFsaWduXFwnOiB0Y1Jvdy5FbGVtZW50VHlwZSA9PSBcXCdudW1iZXJcXCcgPyBcXCdyaWdodFxcJyA6IFxcJ2xlZnRcXCcgfVwiIG5nLWlmPVwidGNSb3cudmlzaWJsZSB8fCB0Y1Jvdy52aXNpYmxlPT11bmRlZmluZWRcIiBkYXRhLXRpdGxlPXt7Y29sdW1uRGVmc1skaW5kZXhdLmRpc3BsYXlOYW1lfX0+PHNwYW4gbmctaWY9XCJ0Y1Jvdy50eXBlIT09XFwnYm9vbFxcJ1wiIG5nLWJpbmQ9Ojpyb3cuZ2V0SXRlbVt0Y1Jvdy5uYW1lXSBuZy1jbGFzcz1cInsgXFwnYmFkZ2UgYmFkZ2UtaW5mb1xcJyA6IHRjUm93LnR5cGUgPT0gXFwnYmFkZ2VcXCcgJiYgcm93LmdldEl0ZW1bdGNSb3cubmFtZV09PVxcJ0RhdGFzZXRcXCcsIFxcJ2JhZGdlIGJhZGdlLXdhcm5pbmdcXCcgOiB0Y1Jvdy50eXBlID09IFxcJ2JhZGdlXFwnICYmIHJvdy5nZXRJdGVtW3RjUm93Lm5hbWVdPT1cXCdQYWdlXFwnLCBcXCdiYWRnZSBiYWRnZS1zdWNjZXNzXFwnIDogdGNSb3cudHlwZSA9PSBcXCdiYWRnZVxcJyAmJiByb3cuZ2V0SXRlbVt0Y1Jvdy5uYW1lXT09XFwnQXBwbGljYXRpb24gbWVudVxcJywgXFwnYmFkZ2UgYmFkZ2UtcHJpbWFyeVxcJyA6IHRjUm93LnR5cGUgPT0gXFwnYmFkZ2VcXCcgJiYgcm93LmdldEl0ZW1bdGNSb3cubmFtZV09PVxcJ0FwcGxpY2F0aW9uXFwnLCBcXCdiYWRnZSBiYWRnZS1zZWNvbmRhcnlcXCcgOiB0Y1Jvdy50eXBlID09IFxcJ2JhZGdlXFwnICYmIHJvdy5nZXRJdGVtW3RjUm93Lm5hbWVdPT1cXCdQYWdlIG1lbnVcXCcsIFxcJ2JhZGdlIGJhZGdlLWRhbmdlclxcJyA6IHRjUm93LnR5cGUgPT0gXFwnYmFkZ2VcXCcgJiYgcm93LmdldEl0ZW1bdGNSb3cubmFtZV09PVxcJ0ZpbGVcXCcsIH1cIj48L3NwYW4+PGRpdiBuZy1pZj1cInRjUm93LnR5cGU9PT1cXCdib29sXFwnXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBzbWFydC10YWJsZS1jaGVja2JveFwiPjxpIG5nLWlmPTo6cm93LmdldEl0ZW1bdGNSb3cubmFtZV0gY2xhc3M9XCJmYSBmYS1jaGVjay1jaXJjbGUgdGV4dC1zdWNjZXNzXCI+PC9pPiA8aSBuZy1pZj0hcm93LmdldEl0ZW1bdGNSb3cubmFtZV0gY2xhc3M9XCJmYSBmYS10aW1lcy1jaXJjbGUgdGV4dC1kYW5nZXJcIj48L2k+PC9kaXY+PC90ZD48dGQgbmctaWY9XCJzaG93QWN0aW9uQnV0dG9ucyAmJiByb3cuaXNTZWxlY3RlZFwiIHN0eWxlPVwibWFyZ2luLXRvcDogMjVweDtib3JkZXItcmFkaXVzOiAwLjI1cmVtO21pbi13aWR0aDogMTJyZW07ei1pbmRleDogMTt7e3Bvc2l0aW9uQ3NzfX1cIiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHNoYWRvdy1zbSBwLTAgYmctd2hpdGUgc20tYWN0aW9uc3t7JGluZGV4fX1cIj48ZGl2IG5nLXJlcGVhdD1cImFjdEJ0biBpbiBhY3Rpb25EZWZpbml0aW9uIHRyYWNrIGJ5ICRpbmRleFwiPjxidXR0b24gdGl0bGU9e3thY3RCdG4uYnRuTGFiZWx9fSBuZy1jbGljaz1cInByb2Nlc3NBY3Rpb24oe1xcJ2l0ZW1cXCc6cm93LFxcJ2FjdGlvbklkXFwnOiRpbmRleH0pXCIgdHlwZT1idXR0b24gc3R5bGU9d2lkdGg6MTAwJSBjbGFzcz1cImJ0biB7e2FjdEJ0bi5idG5DbGFzc319IGJvcmRlci0wIHJvdW5kZWQtMCBmbnQ3IHRleHQtbGVmdFwiPjxpIGNsYXNzPVwie3thY3RCdG4uaWNvbn19IG1yLTJcIj48L2k+e3thY3RCdG4uYnRuTGFiZWx9fTwvYnV0dG9uPjwvZGl2PjwvdGQ+PHRkIG5nLWlmPVwic2hvd0FjdGlvbkJ1dHRvbnMgJiYgIXJvdy5pc1NlbGVjdGVkXCIgY2xhc3M9ZmlsbGVyLXRkPjwvdGQ+PC90cj48L3Rib2R5Pjx0Zm9vdD48dHIgbmctc2hvdz06OnVzZVBhZ2luYXRpb24+PHRkIGNvbHNwYW49MTAwJT48ZGl2IGNsYXNzPVwicHQtMyB0ZXh0LWxlZnQgYm9yZGVyLXRvcFwiIHN0LXBhZ2luYXRpb24gc3QtaW5pdGlhbC1wYWdlPWluaXRpYWxQYWdlIHN0LWl0ZW1zLWJ5LXBhZ2U9cGFyYW1ldGVycy5JdGVtc09uUGFnZSBzdC1kaXNwbGF5ZWQtcGFnZXM9cGFyYW1ldGVycy5QYWdlck1heFBhZ2VzPjwvZGl2PjwvdGQ+PC90cj48L3Rmb290PjwvdGFibGU+PGRpdiBuZy1pZj1cImRpc3BsYXlUYWJsZURhdGEubGVuZ3RoPT0wXCIgY2xhc3M9XCJmbnQ5IGQtZmxleCBiZy13aGl0ZVwiIHN0eWxlPVwiaGVpZ2h0OiAxNTBweDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XCI+PHNwYW4+e3sgcGFyYW1ldGVycy5Ob0RhdGFNc2cgfHwgXFwnTk8gREFUQVxcJyB9fTwvc3Bhbj48L2Rpdj48L2Rpdj48dGFibGUga3RseW8taWQ9Q0xJRU5UX1NJREUgbmctaWY9OjpjbGllbnRTaWRlIHN0LXBpcGU9cmVmcmVzaERhdGEgc3QtdGFibGU9ZGlzcGxheVRhYmxlRGF0YTIgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkIHRhYmxlLWthdGFseW9cIj48dGhlYWQ+PHRyPjx0aCBuZy1pZj1cIjo6YWxsb3dTb3J0ICYmICh0Yy52aXNpYmxlIHx8IHRjLnZpc2libGU9PXVuZGVmaW5lZClcIiBsci1kcmFnLXNyYz1oZWFkZXJzIGxyLWRyb3AtdGFyZ2V0PWhlYWRlcnMgbmctcmVwZWF0PVwidGMgaW4gY29sdW1uRGVmcyB0cmFjayBieSB0Yy5uYW1lXCIgc3Qtc29ydD17e3RjLm5hbWV9fT57ezo6dGMuZGlzcGxheU5hbWV9fTwvdGg+PHRoIG5nLWlmPVwiIWFsbG93U29ydCAmJiAodGMudmlzaWJsZSB8fCB0Yy52aXNpYmxlPT11bmRlZmluZWQpXCIgc3Qtc29ydD17e3RjLm5hbWV9fSBsci1kcmFnLXNyYz1oZWFkZXJzIGxyLWRyb3AtdGFyZ2V0PWhlYWRlcnMgc3Qtc29ydC1kZWZhdWx0PXt7dGMuc29ydH19IG5nLXJlcGVhdD1cInRjIGluIGNvbHVtbkRlZnMgdHJhY2sgYnkgdGMubmFtZVwiPjxkaXYgY2xhc3M9XCJkLWZsZXggZWxlbWVudC1kcmFnLWhhbmRsZVwiPjxkaXYgY2xhc3M9XCJtdC0xIG1sLTEgZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj48c3BhbiBjbGFzcz1cInNvcnRhc2MgZmFzIGZhLXNvcnQtdXBcIj48L3NwYW4+IDxzcGFuIGNsYXNzPVwic29ydGRlc2MgZmFzIGZhLXNvcnQtZG93blwiPjwvc3Bhbj48L2Rpdj48c3Bhbj57ezo6dGMuZGlzcGxheU5hbWV9fTwvc3Bhbj4gPGxhYmVsIGNsYXNzPVwiZmFzIGZhLXNvcnQtZG93blwiIGt0bHlvLWlkPWNiVmlzaWJsZSBuZy1jbGljaz1cInNob3dNZW51PSFzaG93TWVudVwiPi0tPiA8aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cIm10LTEgbWwtMlwiIGt0bHlvLWlkPWNiSGlkZGVuIG5nLW1vZGVsPWxvY2FsVmFycy5zaG93TWVudSBuZy1jbGljaz0kZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk+PC9sYWJlbD48L2Rpdj48ZGl2IG5nLWNsaWNrPSRldmVudC5zdG9wUHJvcGFnYXRpb24oKSBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlO3dpZHRoOiAxNSU7XCIga3RseW8taWQ9dGJsTWVudSBuZy1zaG93PWxvY2FsVmFycy5zaG93TWVudSBjbGFzcz1cImJvcmRlciBtLTIgcC0yIHBvc2l0aW9uLWFic29sdXRlIGQtZmxleCBmbGV4LWNvbHVtblwiPjxkaXY+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3Mga3RseW8taWQ9Y2JIaWRkZW4gbmctbW9kZWw9dGMudmlzaWJsZT4gPGxhYmVsIGNsYXNzPWxhYmVsLXhzPkNvbHVtbiB2aXNpYmxlPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPW10LTI+PGxhYmVsIGNsYXNzPWxhYmVsLXNtPlNvcnQ8L2xhYmVsPiA8YnV0dG9uIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJyA6IHRjLnNvcnQgPT0gXFwnYXNjZW5kaW5nXFwnfVwiIHN0eWxlPVwicGFkZGluZzogMC4zMjVyZW0gMC40NXJlbTsgZm9udC1zaXplOiAwLjhyZW07XCIgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4teHNcIiBuZy1jbGljaz1cInRjLnNvcnQ9XFwnYXNjZW5kaW5nXFwnXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1hcnJvdy11cFwiPjwvc3Bhbj48L2J1dHRvbj4gPGJ1dHRvbiBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCcgOiB0Yy5zb3J0ID09IFxcJ2Rlc2NlbmRpbmdcXCd9XCIgc3R5bGU9XCJwYWRkaW5nOiAwLjMyNXJlbSAwLjQ1cmVtOyBmb250LXNpemU6IDAuOHJlbTtcIiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi14c1wiIG5nLWNsaWNrPVwidGMuc29ydD1cXCdkZXNjZW5kaW5nXFwnXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1hcnJvdy1kb3duXCI+PC9zcGFuPjwvYnV0dG9uPiA8YnV0dG9uIHN0eWxlPVwicGFkZGluZzogMC4zMjVyZW0gMC40NXJlbTsgZm9udC1zaXplOiAwLjhyZW07XCIgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4teHNcIiBuZy1jbGljaz1cInRjLnNvcnQ9XFwnXFwnXCI+PHNwYW4gY2xhc3M9XCJmYXMgZmEtdGltZXNcIj48L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PC90aD48dGg+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cIm1sLTEgYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYnRuLXhzXCIgbmctY2xpY2s9dG9nZ2xlVGFibGVDb25maWdNZW51KCk+PHNwYW4gY2xhc3M9XCJmYSBmYS1wbHVzXCI+PC9zcGFuPjwvYnV0dG9uPjxkaXYgc3R5bGU9XCJyaWdodDogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTt3aWR0aDogMTUlO1wiIGt0bHlvLWlkPXRibFRhYmxlQ29uZmlnTWVudSBuZy1zaG93PXNob3dUYWJsZUNvbmZpZ01lbnUgY2xhc3M9XCJtbC0xIGJvcmRlciBtLTIgcC0yIHBvc2l0aW9uLWFic29sdXRlIGQtZmxleCBmbGV4LWNvbHVtblwiPjxkaXYgc3R5bGU9Zm9udC13ZWlnaHQ6MTAwIGxyLWRyYWctc3JjPWhlYWRlcnMyIGxyLWRyb3AtdGFyZ2V0PWhlYWRlcnMyIG5nLXJlcGVhdD1cImhkIGluIGNvbHVtbkRlZnNcIj48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcyBrdGx5by1pZD1jYkRydWdvIG5nLW1vZGVsPWhkLnZpc2libGU+IHt7OjpoZC5kaXNwbGF5TmFtZX19IDxzcGFuIG5nLWlmPTo6aGQucmVzb3VyY2VEZWZJZD4oe3s6OmhkLnJlc291cmNlRGVmSWR9fSk8L3NwYW4+PC9kaXY+PC9kaXY+PC90aD48L3RyPjwvdGhlYWQ+PHRib2R5Pjx0ciBuZy1jbGljaz1zZXRMZWZ0UG9zaXRpb24oJGV2ZW50LHJvdykgc3Qtc2VsZWN0LXJvdz1yb3cgbmctcmVwZWF0PVwicm93IGluIGRpc3BsYXlUYWJsZURhdGFcIiBzdC1zZWxlY3RlZD1yb3dTZWxlY3RlZChyb3cpPjx0ZCBuZy1pZj1cInRjUm93LnZpc2libGUgfHwgdGNSb3cudmlzaWJsZT09dW5kZWZpbmVkXCIgbmctcmVwZWF0PVwidGNSb3cgaW4gY29sdW1uRGVmcyB0cmFjayBieSB0Y1Jvdy5uYW1lXCIgbmctYmluZD06OnJvdy5nZXRJdGVtW3RjUm93Lm5hbWVdPjwvdGQ+PHRkPjwvdGQ+PC90cj48dHIgbmctaWY9XCJkaXNwbGF5VGFibGVEYXRhMi5sZW5ndGg9PTBcIiBuZy1yZXBlYXQ9XCJ0YyBpbiBjb2x1bW5EZWZzXCI+PHRkIG5nLXJlcGVhdD1cInRjUm93IGluIGNvbHVtbkRlZnMgdHJhY2sgYnkgdGNSb3cubmFtZVwiPiZuYnNwOzwvdGQ+PC90cj48dHIgbmctaWY9XCJkaXNwbGF5VGFibGVEYXRhMi5sZW5ndGg9PTBcIj48dGQgbmctcmVwZWF0PVwidGNSb3cgaW4gY29sdW1uRGVmcyB0cmFjayBieSB0Y1Jvdy5uYW1lXCI+Jm5ic3A7PC90ZD48L3RyPjx0ciBuZy1pZj1cImRpc3BsYXlUYWJsZURhdGEyLmxlbmd0aD09MFwiPjx0ZCBuZy1yZXBlYXQ9XCJ0Y1JvdyBpbiBjb2x1bW5EZWZzIHRyYWNrIGJ5IHRjUm93Lm5hbWVcIj4mbmJzcDs8L3RkPjwvdHI+PC90Ym9keT48dGZvb3Q+PHRyPjx0ZCBuZy1zaG93PTo6dXNlUGFnaW5hdGlvbiBjb2xzcGFuPTEwMCUgY2xhc3M+PGRpdiBjbGFzcz1cInB0LTMgdGV4dC1sZWZ0IGJvcmRlci10b3BcIiBzdC1wYWdpbmF0aW9uIHN0LWluaXRpYWwtcGFnZT1pbml0aWFsUGFnZSBzdC1pdGVtcy1ieS1wYWdlPXBhcmFtZXRlcnMuSXRlbXNPblBhZ2Ugc3QtZGlzcGxheWVkLXBhZ2VzPXBhcmFtZXRlcnMuUGFnZXJNYXhQYWdlcz48L2Rpdj48L3RkPjwvdHI+PC90Zm9vdD48L3RhYmxlPjxkaXYgbmctaWY9cGFyYW1ldGVycy5CdWlsZE1vZGUgY2xhc3M9bXktMiBzdHlsZT1cImFsaWduLWl0ZW1zOiBjZW50ZXI7IGRpc3BsYXk6ZmxleDsgd2lkdGg6IGZpdC1jb250ZW50OyBqdXN0aWZ5LWNvbnRlbnQ6IGVuZDtmb250LXNpemU6IHt7Zm9udFNpemV9fSAhaW1wb3J0YW50XCI+PHNwYW4gY2xhc3M9XCJtLTEgc21hbGxcIj5TaG93PC9zcGFuPjxzZWxlY3QgY2xhc3M9cm91bmRlZCBuZy1tb2RlbD1wYXJhbWV0ZXJzLkl0ZW1zT25QYWdlIG5nLW9wdGlvbnM9XCJpdGVtIGZvciBpdGVtIGluIHBhZ2VJdGVtc0xpc3QgdHJhY2sgYnkgaXRlbVwiPjwvc2VsZWN0PjxzcGFuIG5nLWlmPXBhcmFtZXRlcnMuQnVpbGRNb2RlIGNsYXNzPVwibWwtMSBzbWFsbFwiPml0ZW1zIHBlciBwYWdlPC9zcGFuPjwvZGl2PjxkaXYgbmctaWY9XCJwYXJhbWV0ZXJzLkJ1aWxkTW9kZSB8fCAoIXBhcmFtZXRlcnMuaGlkZVBhZ2VyICYmIGRpc3BsYXlUYWJsZURhdGEubGVuZ3RoPjApXCIgdGFibGUtcGFnaW5hdG9yIGNsYXNzPXBhZ2luYXRvci1jb250YWluZXItcXVlcnk+PGRpdiBjbGFzcz1uYXYtY29udGFpbmVyPjxkaXYgY2xhc3M9bGVzcy10aGFuLTM2MD48L2Rpdj48bmF2IHN0eWxlPWRpc3BsYXk6aW5saW5lIG5nLXNob3c9XCJkaXNwbGF5VGFibGVEYXRhLmxlbmd0aD4wXCIgY2xhc3M+PHVsIGNsYXNzPVwicGFnaW5hdGlvbiBwYWdpbmF0aW9uLXNtIG15LWF1dG8gcHktNFwiIHN0eWxlPVwiYWxpZ24gaXRlbXM6IGNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2ZvbnQtc2l6ZToge3tmb250U2l6ZX19ICFpbXBvcnRhbnRcIj48bGkgbmctY2xhc3M9XCJ7ZGlzYWJsZWQ6dGFibGVTdGF0ZS5wYWdpbmF0aW9uLmN1cnJlbnRQYWdlPT0xfVwiIGNsYXNzPXBhZ2UtaXRlbT48YSBocmVmPSMgY2xhc3M9cGFnZS1saW5rIG5nLWNsaWNrPVwic2VsZWN0UGFnZSgxKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj48c3BhbiBjbGFzcz1cImZhIGZhLWNoZXZyb24tbGVmdFwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1sZWZ0XCI+PC9zcGFuPjwvc3Bhbj48L2E+PC9saT48bGkgbmctY2xhc3M9XCJ7ZGlzYWJsZWQ6dGFibGVTdGF0ZS5wYWdpbmF0aW9uLmN1cnJlbnRQYWdlPT0xfVwiIGNsYXNzPXBhZ2UtaXRlbT48YSBocmVmPSMgY2xhc3M9cGFnZS1saW5rIG5nLWNsaWNrPVwic2VsZWN0UGFnZSh0YWJsZVN0YXRlLnBhZ2luYXRpb24uY3VycmVudFBhZ2UtMSk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1jaGV2cm9uLWxlZnRcIj48L3NwYW4+PC9hPjwvbGk+PGxpIG5nLXJlcGVhdD1cInBhZ2UgaW4gdGFibGVTdGF0ZS5wYWdpbmF0aW9uLnBhZ2VzXCIgY2xhc3M9cGFnZS1pdGVtIG5nLWNsYXNzPVwie2FjdGl2ZTogcGFnZT09dGFibGVTdGF0ZS5wYWdpbmF0aW9uLmN1cnJlbnRQYWdlfVwiPjxhIGhyZWY9IyBjbGFzcz1wYWdlLWxpbmsgbmctY2xpY2s9XCJzZWxlY3RQYWdlKHBhZ2UpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPnt7cGFnZX19PC9hPjwvbGk+PGxpIG5nLWNsYXNzPVwie2Rpc2FibGVkOnRhYmxlU3RhdGUucGFnaW5hdGlvbi5jdXJyZW50UGFnZT09dGFibGVTdGF0ZS5wYWdpbmF0aW9uLm51bWJlck9mUGFnZXN9XCIgY2xhc3M9cGFnZS1pdGVtPjxhIGhyZWY9IyBjbGFzcz1wYWdlLWxpbmsgbmctY2xpY2s9XCJzZWxlY3RQYWdlKHRhYmxlU3RhdGUucGFnaW5hdGlvbi5jdXJyZW50UGFnZSsxKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj48c3BhbiBjbGFzcz1cImZhIGZhLWNoZXZyb24tcmlnaHRcIj48L3NwYW4+PC9hPjwvbGk+PGxpIG5nLWNsYXNzPVwie2Rpc2FibGVkOnRhYmxlU3RhdGUucGFnaW5hdGlvbi5jdXJyZW50UGFnZT09dGFibGVTdGF0ZS5wYWdpbmF0aW9uLm51bWJlck9mUGFnZXN9XCIgY2xhc3M9cGFnZS1pdGVtPjxhIGhyZWY9IyBjbGFzcz1wYWdlLWxpbmsgbmctY2xpY2s9XCJzZWxlY3RQYWdlKHRhYmxlU3RhdGUucGFnaW5hdGlvbi5udW1iZXJPZlBhZ2VzKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj48c3BhbiBjbGFzcz1cImZhIGZhLWNoZXZyb24tcmlnaHRcIj48c3BhbiBjbGFzcz1cImZhIGZhLWNoZXZyb24tcmlnaHRcIj48L3NwYW4+PC9zcGFuPjwvYT48L2xpPjwvdWw+PC9uYXY+PGRpdiBuZy1pZj0hcGFyYW1ldGVycy5CdWlsZE1vZGUgc3R5bGU9XCJhbGlnbi1pdGVtczogY2VudGVyOyBkaXNwbGF5OmZsZXg7IHdpZHRoOiBmaXQtY29udGVudDsganVzdGlmeS1jb250ZW50OiBlbmQ7Zm9udC1zaXplOiB7e2ZvbnRTaXplfX0gIWltcG9ydGFudFwiPjxzZWxlY3QgY2xhc3M9cm91bmRlZCBuZy1tb2RlbD1wYXJhbWV0ZXJzLkl0ZW1zT25QYWdlIG5nLW9wdGlvbnM9XCJpdGVtIGZvciBpdGVtIGluIHBhZ2VJdGVtc0xpc3QgdHJhY2sgYnkgaXRlbVwiPjwvc2VsZWN0PjxzcGFuIGNsYXNzPVwibWwtMSBzbWFsbFwiPnt7cGFyYW1ldGVycy5QYWdlckxhYmVsMX19IHt7dGFibGVTdGF0ZS5wYWdpbmF0aW9uLmN1cnJlbnRQYWdlfX0gLyB7e3RhYmxlU3RhdGUucGFnaW5hdGlvbi5udW1iZXJPZlBhZ2VzfX0gfCB7e3RhYmxlU3RhdGUucGFnaW5hdGlvbi5zdGFydCsxfX0gLSB7eyBNYXRoLm1pbiAoIHRhYmxlU3RhdGUucGFnaW5hdGlvbi5jdXJyZW50UGFnZSAqIHRhYmxlU3RhdGUucGFnaW5hdGlvbi5udW1iZXIgLCB0YWJsZVN0YXRlLnBhZ2luYXRpb24udG90YWxJdGVtQ291bnQpIH19IHt7cGFyYW1ldGVycy5QYWdlckxhYmVsMn19IHt7dGFibGVTdGF0ZS5wYWdpbmF0aW9uLnRvdGFsSXRlbUNvdW50fX0ge3twYXJhbWV0ZXJzLlBhZ2VyTGFiZWwzfX08L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PHN0eWxlPlxcclxcbi5zbWFydC10YWJsZS17e3BhcmFtZXRlcnMuVXVpZFJlZn19ID4gdGJvZHkgdHIuc3Qtc2VsZWN0ZWR7XFxyXFxuXFxyXFxuICAgIHt7cGFyYW1ldGVycy50YWJsZS5zZWxlY3RlZFJvd1N0eWxlfX1cXHJcXG59XFxyXFxuXFxyXFxuLnNtYXJ0LXRhYmxlLXt7cGFyYW1ldGVycy5VdWlkUmVmfX0gPiB0Ym9keSB0cjpub3QoLnN0LXNlbGVjdGVkKTpob3ZlcntcXHJcXG5cXHJcXG4gICAge3twYXJhbWV0ZXJzLnRhYmxlLmhvdmVyUm93U3R5bGV9fVxcclxcbn1cXHJcXG48L3N0eWxlPicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFN0YXJ0VGFza1dpZGdldC5odG1sJywnPGRpdiBuZy1zaG93PWZhbHNlPjxkaXYga3QtcHJvY2Vzc2luZy1hbmltYXRpb24gc2hvdy1tc2c9dHJ1ZSBtZXNzYWdlPVwiTG9hZGluZyBmb3JtXCI+PC9kaXY+PC9kaXY+PGRpdiBuZy1zaG93PXRydWU+PGRpdiBuZy1pZj0hZm9ybVBhcmFtcy5mb3JtTG9ja2VkPjxkaXYgY2xhc3M9ZmxvYXQtcmlnaHQgbmctaGlkZT1mb3JtUGFyYW1zLmZvcm1Mb2NrZWQ+PGEgdGl0bGU9c29ydCBjbGFzcz17e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZT48aSBjbGFzcz1cInt7Z3JpZFR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIGZhIGZhLXNvcnRcIj48L2k+PC9hPiA8YSB0aXRsZT1cIkhpZGUgZmllbGRcIiBuZy1jbGljaz1yZW1vdmVGaWVsZCgkaW5kZXgpPjxpIGNsYXNzPVwiZmEgZmEtdHJhc2hcIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3M9cm93PjxsYWJlbCBjbGFzcz1jb2wtc20tMSBmb3I9c3RhcnRBbnlUYXNrPlN0YXJ0IGFueSB0YXNrPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1zbS01PjxpbnB1dCB0eXBlPWNoZWNrYm94IG5nLWNsaWNrPVNlbGVjdEFueVRhc2soKSBjbGFzcz1jaGVja2JveC16b29tLWxhcmdlIG5nLW1vZGVsPWZkLnNlYXJjaC5zdGFydEFueVRhc2sgbmFtZT1zdGFydEFueVRhc2sgbmctcmVxdWlyZWQ9ZmFsc2U+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1mb3JtPVwiXFwna3RTdGFydFRhc2tXaWRnZXRcXCcrJGlkXCIgbmctc2hvdz1cImZkLnNlYXJjaC5zdGFydEFueVRhc2sgfHwgIWZvcm1QYXJhbXMuZm9ybUxvY2tlZFwiIGNsYXNzPXNvcnQtYm94PjxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1pZj10YXNrTGlzdCBuZy1tb2RlbD14eHggc2VsZWN0ZWQtaXRlbXM9eHh4IGRyb3Bkb3duLWl0ZW1zPXRhc2tMaXN0IG9uLXNlbGVjdC1mbj1UYXNrU2VsZWN0aW9uQ2hhbmdlZChpdGVtLG1vZGVsKSBpcy1tdWx0aXBsZT1mYWxzZSBkcm9wZG93bi1pZD1cIlxcJ3BhZ2VcXCdcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2t0U3RhcnRUYXNrV2lkZ2V0XFwnKyRpZFwiIHNlYXJjaC10ZXh0PVwiXFwnU2VhcmNoIG9yIHNlbGVjdCAuLi5cXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9UHJlSW5pdGlhdGVUYXNrKCkgY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1yb2NrZXRcIj48L3NwYW4+IFN0YXJ0IHNlbGVjdGVkIHRhc2s8L2J1dHRvbj48L2Rpdj48Zm9ybSBuZy1zdWJtaXQ9SW5pdGlhdGVUYXNrKGZvcm1hKSBuYW1lPWZvcm1hIGNsYXNzPWZvcm0taG9yaXpvbnRhbCByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2IGNsYXNzPWJveHNoYWRvdz48aDQgY2xhc3M9dGV4dC1jZW50ZXI+e3tyZXNvdXJjZURlZmluaXRpb24ubmFtZX19PC9oND48L2Rpdj48ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiIG5nLWlmPVwiIWZkLmxvY2FsVmFycy50YXNrRGVmaW5pdGlvbi5BdXRvQXNzaWduICYmIGZkLnJlbGF0ZWQ9PTBcIj48ZGl2IGNsYXNzPXBhbmVsLWhlYWRpbmc+UG90ZW50aWFsIG93bmVycyA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwiZmQuaXNDb2xsYXBzZWQgPSAhZmQuaXNDb2xsYXBzZWRcIj48c3BhbiBuZy1jbGFzcz1cIntcXCdmYSBmYS1wbHVzLXNxdWFyZVxcJzogaXNDb2xsYXBzZWQsXFwnZmEgZmEtbWludXMtc3F1YXJlXFwnOiAhaXNDb2xsYXBzZWQgfVwiPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IHVpYi1jb2xsYXBzZT1mZC5pc0NvbGxhcHNlZCBjbGFzcz1wYW5lbC1ib2R5PjxkaXYgY2xhc3M9XFwncm93XCJcXCc+PGRpdiBjbGFzcz1jb2wtc20tNj48ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtc3VjY2Vzc1wiPjxkaXYgY2xhc3M9cGFuZWwtaGVhZGluZz5Vc2VycyA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwiZmQuaXNDb2xsYXBzZWQxID0gIWZkLmlzQ29sbGFwc2VkMVwiPjxzcGFuIG5nLWNsYXNzPVwie1xcJ2ZhIGZhLXBsdXMtc3F1YXJlXFwnOiBpc0NvbGxhcHNlZDEsXFwnZmEgZmEtbWludXMtc3F1YXJlXFwnOiAhaXNDb2xsYXBzZWQxIH1cIj48L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiB1aWItY29sbGFwc2U9ZmQuaXNDb2xsYXBzZWQxIGNsYXNzPXBhbmVsLWJvZHk+PGRpdiBrdC1zZWxlY3QtdXNlcnMgc2VsZWN0ZWQtaXRlbXM9cG90ZW50aWFsT3duZXJzLnBvdGVudGlhbE93bmVyc1VzZXJzPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLXNtLTY+PGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLXdhcm5pbmdcIj48ZGl2IGNsYXNzPXBhbmVsLWhlYWRpbmc+R3JvdXBzIDxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9XCJmZC5pc0NvbGxhcHNlZDIgPSAhZmQuaXNDb2xsYXBzZWQyXCI+PHNwYW4gbmctY2xhc3M9XCJ7XFwnZmEgZmEtcGx1cy1zcXVhcmVcXCc6IGlzQ29sbGFwc2VkMixcXCdmYSBmYS1taW51cy1zcXVhcmVcXCc6ICFpc0NvbGxhcHNlZDIgfVwiPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IHVpYi1jb2xsYXBzZT1mZC5pc0NvbGxhcHNlZDIgY2xhc3M9cGFuZWwtYm9keT48ZGl2IGt0LXNlbGVjdC1ncm91cHMgc2VsZWN0ZWQtaXRlbXM9cG90ZW50aWFsT3duZXJzLnBvdGVudGlhbE93bmVyc0dyb3Vwcz48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWJveHNoYWRvdz48ZGl2IGt0LWdyaWQgZ3JpZC10eXBlPWdyaWRzdGVyVHlwZSByZXNvdXJjZS1mb3JtLWxvYWRlZD1pbml0aWF0ZUZvcm1Mb2FkZWQgcmVzb3VyY2UtZGVmaW5pdGlvbj1mZC5sb2NhbFZhcnMudGFza0RlZmluaXRpb24gZm9ybS1wYXJhbXM9cmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMgZm9ybS1kYXRhPWRhc2hib2FyZC5kYXRhIHBhcmVudD1kYXNoYm9hcmQud2lkZ2V0cyBhbGwtY29sdW1ucz1kYXNoYm9hcmQud2lkZ2V0cyBjbGFzcz1rdEdyaWQ+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1mZC5zZWFyY2guc3RhcnRBbnlUYXNrIGNsYXNzPXNvcnQtYm94PjxidXR0b24gdHlwZT1zdWJtaXQgbmctaWY9IXRhc2tJbml0aWF0ZWQgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIj48c3BhbiBjbGFzcz1cImZhIGZhLXJvY2tldFwiPjwvc3Bhbj4mbmJzcCBTdGFydCB0YXNrPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWRhbmdlclwiIG5nLWNsaWNrPUNhbmNlbENsaWNrZWQoKT48c3BhbiBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9zcGFuPiZuYnNwIENhbmNlbDwvYnV0dG9uPjxicj48L2Rpdj48ZGl2IG5nLWlmPSFmZC5zZWFyY2guc3RhcnRBbnlUYXNrIGNsYXNzPXNvcnQtYm94PjxidXR0b24gdHlwZT1zdWJtaXQgbmctaWY9IXRhc2tJbml0aWF0ZWQgbmctY2xhc3M9ZmQuZ3JpZFN0YXRlLmluaXRUYXNrQnRuU3R5bGU+PHNwYW4gbmctY2xhc3M9ZmQuZ3JpZFN0YXRlLmluaXRUYXNrQnRuSWNvbj48L3NwYW4+Jm5ic3Age3tmZC5ncmlkU3RhdGUuaW5pdFRhc2tCdG5UeHR9fTwvYnV0dG9uPjxkaXYgbmctaWY9IWlucHV0QXJyYXkubG9ja2VkPjxsYWJlbD5TdHlsZTwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9Zm9ybS1jb250cm9sIG5nLW1vZGVsPWZkLmdyaWRTdGF0ZS5pbml0VGFza0J0blN0eWxlPiA8bGFiZWw+VGV4dDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9Zm9ybS1jb250cm9sIG5nLW1vZGVsPWZkLmdyaWRTdGF0ZS5pbml0VGFza0J0blR4dD4gPGxhYmVsPkljb248L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPWZvcm0tY29udHJvbCBuZy1tb2RlbD1mZC5ncmlkU3RhdGUuaW5pdFRhc2tCdG5JY29uPjwvZGl2PjxidXR0b24gdHlwZT1idXR0b24gbmctY2xhc3M9ZmQuZ3JpZFN0YXRlLmNhbmNlbEJ0blN0eWxlIG5nLWNsaWNrPUNhbmNlbENsaWNrZWQoKT48c3BhbiBuZy1jbGFzcz1mZC5ncmlkU3RhdGUuY2FuY2VsQnRuSWNvbj48L3NwYW4+Jm5ic3Age3tmZC5ncmlkU3RhdGUuY2FuY2VsQnRuVHh0fX08L2J1dHRvbj48ZGl2IG5nLWlmPSFpbnB1dEFycmF5LmxvY2tlZD48bGFiZWw+U3R5bGU8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPWZvcm0tY29udHJvbCBuZy1tb2RlbD1mZC5ncmlkU3RhdGUuY2FuY2VsQnRuU3R5bGU+IDxsYWJlbD5UZXh0PC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1mb3JtLWNvbnRyb2wgbmctbW9kZWw9ZmQuZ3JpZFN0YXRlLmNhbmNlbEJ0blR4dD4gPGxhYmVsPkljb248L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPWZvcm0tY29udHJvbCBuZy1tb2RlbD1mZC5ncmlkU3RhdGUuY2FuY2VsQnRuSWNvbj48L2Rpdj48YnI+PC9kaXY+PC9mb3JtPjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhYnMuaHRtbCcsJzxzdHlsZT5cXHJcXG4gICAgbGkgPiAuc2hvd09uSG92ZXIge1xcclxcbiAgICAgICAgdmlzaWJpbGl0eTpoaWRkZW5cXHJcXG4gICAgfSAgIFxcclxcbiAgICBsaTpob3ZlciA+IC5zaG93T25Ib3ZlciB7XFxyXFxuICAgICAgICB2aXNpYmlsaXR5OnZpc2libGVcXHJcXG4gICAgfSAgIFxcclxcbiA8L3N0eWxlPjxkaXYgY2xhc3M9cC0xPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCIgc3R5bGU9e3tmZC5QYXJhbWV0ZXJzLkJ0bnNDc3NTdHlsZX19PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48dWwgc3R5bGU9XCJtaW4taGVpZ2h0OiA0NHB4O2ZsZXgtZGlyZWN0aW9uOnJvd1wiIGNsYXNzPVwibmF2YmFyLW5hdiBtci1hdXRvXCIgZHJhZ3VsYT1cIlxcJ3RhYi1iYWdcXCdcIiBkcmFndWxhLXNjb3BlPSRyb290IGRyYWd1bGEtbW9kZWw9ZmQubGF5b3V0PjxsaSBpZD17eyRpbmRleH19IG5nLWlmPVwidGFiYnRuLlN0YXR1cz09XFwnQWN0aXZlXFwnXCIgbmctcmVwZWF0PVwidGFiYnRuIGluIGZkLmxheW91dCB0cmFjayBieSB0YWJidG4uVXVpZFJlZlwiIGNsYXNzPVwibmF2LWl0ZW0gcC0wXCIgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOiBsb2NhbFZhcnMuc2VsZWN0ZWRTaWRlID09IFxcJ2xlZnRcXCcgJiYgbG9jYWxWYXJzLnNlbGVjdGVkTmF2YmFyLmluZGV4ID09ICRpbmRleH1cIiBzdHlsZT1cIm1hcmdpbjowcHggIWltcG9ydGFudDsgd2lkdGg6aW5oZXJpdCAhaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1zaG93UHJvcGVydGllcygkaW5kZXgsdHJ1ZSkgbmctY2xhc3M9XCJ7XFwnYnRuLXByaW1hcnlcXCc6ZmQuc2VsZWN0ZWRUYWI9PSRpbmRleCxcXCdidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wXFwnOmZkLnNlbGVjdGVkVGFiIT0kaW5kZXh9XCIgbmctZGlzYWJsZWQ9XCJmZC5zZWxlY3RlZFRhYj09JGluZGV4XCIgc3R5bGU9e3tmZC5sYXlvdXRbJGluZGV4XS5QYXJhbWV0ZXJzLkNzc1N0eWxlfX0gaHJlZiBjbGFzcz1cIm5hdi1saW5rIG5hdi1saW5rLWN1c3RvbVwiPjxzcGFuIGNsYXNzPW1sLTE+e3t0YWJidG4uTGFiZWx9fTwvc3Bhbj48L2J1dHRvbj48ZGl2IG5nLWlmPVwiZmQuc2VsZWN0ZWRUYWI9PSRpbmRleFwiIGNsYXNzPVwic2hvd09uSG92ZXIgcG9zaXRpb24tYWJzb2x1dGUgZC1mbGV4XCIgc3R5bGU9XCJ0b3A6OHB4OyBsZWZ0Oi00cHg7IHdpZHRoOjEwMCU7IGp1c3RpZnktY29udGVudDogc3RhcnQ7XCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBzdHlsZT1cInBhZGRpbmc6MC41cHggMnB4O1wiIFwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIGJ0bi1zbSBlbGVtZW50LWRyYWctaGFuZGxlXCI+PGkgY2xhc3M9XCJlbGVtZW50LWRyYWctaGFuZGxlIGZhcyBmYS1ncmlwLWhvcml6b250YWxcIj48L2k+PC9idXR0b24+PC9kaXY+PC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgbXktYXV0b1wiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9YWRkTmV3VGFiKCkgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCBidG4tc20gd2lkZ2V0LXByb3BcIj48aSBjbGFzcz1cImZhIGZhLXBsdXNcIj48L2k+PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9c2hvd1Byb3BlcnRpZXMoMCx0cnVlKSBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIGJ0bi1zbSB3aWRnZXQtcHJvcFwiPjxpIGNsYXNzPVwiZmFzIGZhLWNvZ1wiPjwvaT48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IG5nLXJlcGVhdD1cIndpZGdldCBpbiBmZC5sYXlvdXQgdHJhY2sgYnkgd2lkZ2V0LlV1aWRSZWZcIj48ZGl2IGNsYXNzPVwiYm9yZGVyIGJvcmRlci1wcmltYXJ5IHNoYWRvdy1zbVwiIHN0eWxlPXt7ZmQuUGFyYW1ldGVycy5Dc3NTdHlsZX19IG5nLXNob3c9XCJ3aWRnZXQuU3RhdHVzPT1cXCdBY3RpdmVcXCcgJiYgZmQuc2VsZWN0ZWRUYWI9PSRpbmRleFwiIGt0LWdyaWQtcm93IGdyaWQtdHlwZT1ncmlkVHlwZSByb3c9d2lkZ2V0IHJlc291cmNlLWZvcm0tbG9hZGVkPWZvcm1Mb2FkZWQgc2hvdy1zZWFyY2gtZmlsdGVycz1zaG93U2VhcmNoRmlsdGVycyBwYXJlbnQtcmVzb3VyY2UtZGVmLWlkPXBhcmVudFJlc291cmNlRGVmSWQgcmVzb3VyY2UtcmVjb3JkLWlkPXJlc291cmNlUmVjb3JkSWQgcmVzb3VyY2UtZGVmaW5pdGlvbj1yZXNvdXJjZURlZmluaXRpb24gZm9ybS1wYXJhbXM9Zm9ybVBhcmFtcyBmb3JtLXBhcmFtcy1wYXJlbnQ9Zm9ybVBhcmFtc1BhcmVudCBwYXJlbnQ9ZmQgZm9ybS1kYXRhPWZvcm1EYXRhIGFsbC1yb3dzPWZkLmxheW91dD48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYWJzRXhlLmh0bWwnLCc8ZGl2IG5nLXNob3c9ZmQuU2hvd0ZpZWxkPjxkaXYgc3R5bGU9e3tmZC5QYXJhbWV0ZXJzLkJ0bnNDc3NTdHlsZX19IGNsYXNzPXRhYi1idG5zLWNvbnRhaW5lcj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLXJlcGVhdD1cInRhYmJ0biBpbiBmZC5sYXlvdXQgdHJhY2sgYnkgJGluZGV4XCIgbmctY2xpY2s9c2hvd1Byb3BlcnRpZXMoJGluZGV4LHRydWUpIG5nLWRpc2FibGVkPVwiZmQuc2VsZWN0ZWRUYWI9PSRpbmRleFwiIG5neC1jbGFzcz1cIntcXCdidG4tcHJpbWFyeVxcJzpmZC5zZWxlY3RlZFRhYj09JGluZGV4LFxcJ2J0bi1vdXRsaW5lLXByaW1hcnkgYm9yZGVyLTBcXCc6ZmQuc2VsZWN0ZWRUYWIhPSRpbmRleH1cIiBjbGFzcz1cImJ0biByb3VuZGVkLTAgcC0xIGJ0bi1zbSB0YWItYnRuLXN0eWxlLXt7ZmQuVXVpZFJlZn19XCI+e3t0YWJidG4uTGFiZWx9fTwvYnV0dG9uPjwvZGl2PjxkaXYgbmctcmVwZWF0PVwid2lkZ2V0IGluIGZkLmxheW91dCB0cmFjayBieSAkaW5kZXhcIj48ZGl2IGNsYXNzPVwiYm9yZGVyIGJvcmRlci1wcmltYXJ5IHNoYWRvdy1zbVwiIHN0eWxlPXt7ZmQuUGFyYW1ldGVycy5Dc3NTdHlsZX19IG5nLWlmPVwid2lkZ2V0LlN0YXR1cz09XFwnQWN0aXZlXFwnICYmIGZkLnNlbGVjdGVkVGFiPT0kaW5kZXhcIiBrdC1ncmlkLXJvdyBncmlkLXR5cGU9OjpncmlkVHlwZSByb3c9d2lkZ2V0IHJlc291cmNlLWZvcm0tbG9hZGVkPWZvcm1Mb2FkZWQgc2hvdy1zZWFyY2gtZmlsdGVycz06OnNob3dTZWFyY2hGaWx0ZXJzIHBhcmVudC1yZXNvdXJjZS1kZWYtaWQ9OjpwYXJlbnRSZXNvdXJjZURlZklkIHJlc291cmNlLXJlY29yZC1pZD06OnJlc291cmNlUmVjb3JkSWQgcmVzb3VyY2UtZGVmaW5pdGlvbj06OnJlc291cmNlRGVmaW5pdGlvbiBmb3JtLXBhcmFtcz06OmZvcm1QYXJhbXMgZm9ybS1wYXJhbXMtcGFyZW50PTo6Zm9ybVBhcmFtc1BhcmVudCBwYXJlbnQ9ZmQgZm9ybS1kYXRhPWZvcm1EYXRhIGFsbC1yb3dzPWZkLmxheW91dD48L2Rpdj48L2Rpdj48L2Rpdj48c3R5bGUgdHlwZT10ZXh0L2Nzcz5cXHJcXG5cXHJcXG5cXHRcXHRcXHQudGFiLWJ0bnMtY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhciB7XFxyXFxuXFx0XFx0XFx0XFx0ZGlzcGxheTogbm9uZTtcXHJcXG5cXHRcXHRcXHR9XFxyXFxuICAgICAgICBcXHJcXG5cXHRcXHRcXHQudGFiLWJ0bi1zdHlsZS17e2ZkLlV1aWRSZWZ9fSBcXHJcXG5cXHRcXHRcXHR7XFxyXFxuXFx0XFx0XFx0XFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxyXFxuXFx0XFx0XFx0XFx0Y29sb3I6ICMyQzYwRTUgIWltcG9ydGFudDtcXHJcXG5cXHRcXHRcXHRcXHRib3JkZXI6bm9uZTtcXHJcXG5cXHJcXG5cXHRcXHRcXHRcXHR7e2ZkLlBhcmFtZXRlcnMuY3VzdG9tQ3NzfX1cXHJcXG5cXHRcXHRcXHR9XFxyXFxuXFx0XFx0XFx0XFxyXFxuXFx0XFx0XFx0LnRhYi1idG4tc3R5bGUte3tmZC5VdWlkUmVmfX06Zm9jdXMsIC50YWItYnRuLXN0eWxlLXt7ZmQuVXVpZFJlZn19OmhvdmVyXFxyXFxuXFx0XFx0XFx0e1xcclxcblxcdFxcdFxcdFxcdGJhY2tncm91bmQtY29sb3I6I2VhZjBmZDtcXHJcXG5cXHRcXHRcXHRcXHR7e2ZkLlBhcmFtZXRlcnMuY3VzdG9tQ3NzSG92ZXJ9fVxcclxcblxcdFxcdFxcdH1cXHJcXG5cXHRcXHRcXHRcXHJcXG5cXHRcXHRcXHQudGFiLWJ0bi1zdHlsZS17e2ZkLlV1aWRSZWZ9fTpkaXNhYmxlZCBcXHJcXG5cXHRcXHRcXHR7XFxyXFxuXFx0XFx0XFx0XFx0YmFja2dyb3VuZC1jb2xvcjogIzJDNjBFNTtcXHJcXG5cXHRcXHRcXHRcXHRjb2xvcjp3aGl0ZSAhaW1wb3J0YW50O1xcclxcblxcdFxcdFxcdFxcdHt7ZmQuUGFyYW1ldGVycy5jdXN0b21Dc3NTZWxlY3RlZH19XFxyXFxuXFx0XFx0XFx0fVxcclxcbiAgICAgICAgICAgIFxcclxcblxcdFxcdFxcclxcbjwvc3R5bGU+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFic1Byb3BlcnRpZXMuaHRtbCcsJzxkaXY+PGRpdiBjbGFzcz1cIm10LTIgdGV4dC1jZW50ZXJcIj48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+PGI+UHJlc2VudGF0aW9uIElEOjwvYj4ge3tmZC5QcmVzZW50YXRpb25JZCB8fCBcXCdub25lXFwnfX08L2xhYmVsPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+PGI+VXVpZDo8L2I+IHt7ZmQuVXVpZFJlZiB8fCBcXCdub25lXFwnfX08L2xhYmVsPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+PGI+VHlwZTo8L2I+IHt7ZmQuTmFtZX19ICh7e2ZkLkVsZW1lbnRUeXBlfX0pPC9sYWJlbD48L2Rpdj48ZGl2IG5nLWNsaWNrPVwibG9jYWxWYXJzLnNob3dCYXNpYyA9ICFsb2NhbFZhcnMuc2hvd0Jhc2ljXCIgY2xhc3M9XCJleHBhbmQtcHJvcGVydHktcGFuZWwgdGFnIGJvcmRlci1ib3R0b20gYm9yZGVyLXN1Y2Nlc3MgbXktMSBweS0xXCIgZGF0YS10b2dnbGU9Y29sbGFwc2UgaHJlZj0jbWFpblByb3BlcnR5UGFuZWwgcm9sZT1idXR0b24gYXJpYS1leHBhbmRlZD10cnVlIGFyaWEtY29udHJvbHM9bWFpblByb3BlcnR5UGFuZWw+PHNwYW4gY2xhc3M9XCJjb2wgcC0wXCI+QmFzaWM8L3NwYW4+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PWxvY2FsVmFycy5zaG93QmFzaWMgY2xhc3M9XCJmYXMgZmEtYW5nbGUtZG93blwiPjwvaT4gPGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLXNob3c9IWxvY2FsVmFycy5zaG93QmFzaWMgY2xhc3M9XCJmYXMgZmEtYW5nbGUtdXBcIj48L2k+PC9kaXY+PGRpdiBjbGFzcz1cIm1iLTQgY29sbGFwc2Ugc2hvd1wiIGlkPW1haW5Qcm9wZXJ0eVBhbmVsPjxkaXYgY2xhc3M9XCJjdXN0b20tY29udHJvbCBjdXN0b20tY2hlY2tib3hcIj48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1jdXN0b20tY29udHJvbC1pbnB1dCBpZD1jYlNob3dGaWVsZCBuZy1tb2RlbD1mZC5TaG93RmllbGQ+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPWNiU2hvd0ZpZWxkPlNob3cgdGFicyB3aWRnZXQ8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9bXktMj48bGFiZWw+VGFicyBzdHlsZTwvbGFiZWw+IDx0ZXh0YXJlYSByb3dzPTIgdHlwZT10ZXh0IHBsYWNlaG9sZGVyIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuQ3NzU3R5bGU+ICAgIFxcclxcbiAgICAgICAgXFx0PC90ZXh0YXJlYT48L2Rpdj48ZGl2IGNsYXNzPW15LTI+PGxhYmVsPkJ1dHRvbnMgQ1NTPC9sYWJlbD4gPHRleHRhcmVhIHJvd3M9MiB0eXBlPXRleHQgcGxhY2Vob2xkZXIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5jdXN0b21Dc3M+XFxyXFxuICAgICAgICAgICAgICAgICAgXFxyXFxuICAgICAgICBcXHQ8L3RleHRhcmVhPjwvZGl2PjxkaXYgY2xhc3M9bXktMj48bGFiZWw+QnV0dG9ucyBDU1Mgd2hlbiBob3ZlcjwvbGFiZWw+IDx0ZXh0YXJlYSByb3dzPTIgdHlwZT10ZXh0IHBsYWNlaG9sZGVyIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuY3VzdG9tQ3NzSG92ZXI+ICAgIFxcclxcbiAgICAgICAgXFx0PC90ZXh0YXJlYT48L2Rpdj48ZGl2IGNsYXNzPW15LTI+PGxhYmVsPkJ1dHRvbnMgQ1NTIHdoZW4gc2VsZWN0ZWQ8L2xhYmVsPiA8dGV4dGFyZWEgcm93cz0yIHR5cGU9dGV4dCBwbGFjZWhvbGRlciBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLmN1c3RvbUNzc1NlbGVjdGVkPlxcclxcbiAgICAgICAgICAgICAgICAgIFxcclxcbiAgICAgICAgXFx0PC90ZXh0YXJlYT48L2Rpdj48ZGl2IGNsYXNzPW15LTI+PGxhYmVsPlRhYiBidXR0b25zIGNvbnRhaW5lciBjc3Mgc3R5bGU8L2xhYmVsPiA8dGV4dGFyZWEgcm93cz0yIHR5cGU9dGV4dCBwbGFjZWhvbGRlciBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkJ0bnNDc3NTdHlsZT4gICAgIFxcclxcbiAgICAgICAgXFx0PC90ZXh0YXJlYT48L2Rpdj48ZGl2IGNsYXNzPW15LTIgbmctcmVwZWF0PVwidGFiIGluIGZkLmxheW91dCB0cmFjayBieSAkaW5kZXhcIj48bGFiZWw+VGFiIHt7JGluZGV4KzF9fSBuYW1lPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBwbGFjZWhvbGRlcj1cIlRhYiB7eyRpbmRleH19IG5hbWVcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5sYXlvdXRbJGluZGV4XS5MYWJlbD48L2Rpdj48ZGl2IGNsYXNzPW15LTI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4teHMgYnRuLXdhcm5pbmdcIiB0aXRsZT1cIkRlbGV0ZSB0YWJzXCIgbmctY2xpY2s9ZmQubG9jYWxWYXJzLmdzcnZjX2NoYW5nZUNvbmZpcm1EZWxldGVFbGVtZW50KCk+PGkgY2xhc3M9XCJmYSBmYS10cmFzaCB0ZXh0LWRhcmtcIiBuZy1jbGFzcz1cIntcXCdkaXNhYmxlZFxcJzogZm9ybVBhcmFtcy5mb3JtTG9ja2VkfVwiPjwvaT4gRGVsZXRlIHRhYnM8L2J1dHRvbj48ZGl2IGNsYXNzPW15LTE+PGRpdiBuZy1pZj1mZC5sb2NhbFZhcnMuZ3NydmNfZ2V0Q29uZmlybURlbGV0ZUVsZW1lbnQoKSBjbGFzcz1jYXJkPjxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBwLTAgcHgtMSBiZy1saWdodFwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtZXhjbGFtYXRpb24tdHJpYW5nbGUgdGV4dC1kYW5nZXJcIj48c3BhbiBjbGFzcz1cIm1sLTIgc21hbGxcIj5EZWxldGUgbGF5b3V0IGNvbmZpcm1hdGlvbjwvc3Bhbj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1teS0xPjxkaXYgY2xhc3M9XCJtbC0xIHNtYWxsIGJvbGQgdGV4dC1kYXJrXCI+Q2xpY2sgQ29uZmlybSB0byBkZWxldGUgdGFicyBlbGVtZW50ITwvZGl2PjxkaXYgY2xhc3M9XCJtbC0xIHNtYWxsIHRleHQtZGFya1wiPlRoaXMgYWN0aW9uIG1heSByZXN1bHQgaW4gYSBsb3NzIG9mIGRhdGEhPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1wLTE+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4teHMgYnRuLWRhbmdlclwiIHRpdGxlPUNvbmZpcm0gbmctY2xpY2s9XCJmZC5sb2NhbFZhcnMuY29uZmlybUFuZERlbGV0ZUVsZW1lbnQoZmFsc2UgLCBmZClcIj5Db25maXJtIDxpIGNsYXNzPVwibWwtMiBmYSBmYS1jaGVja1wiPjwvaT48L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1mZC5sb2NhbFZhcnMuZ3NydmNfc2V0Q29uZmlybURlbGV0ZUVsZW1lbnQoZmFsc2UpIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tbGluayB0ZXh0LW11dGVkIG1sLWF1dG9cIj5DYW5jZWw8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPW15LTI+PGJ1dHRvbiBuZy1kaXNhYmxlZD1cImZkLmxheW91dC5sZW5ndGggPCAyXCIgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi13YXJuaW5nXCIgdGl0bGU9XCJEZWxldGUgdGFiXCIgbmctY2xpY2s9XCJmZC5sb2NhbFZhcnMuY2xpY2tlZE9uRGVsZXRlVGFiPXRydWVcIj48aSBjbGFzcz1cImZhIGZhLXRyYXNoIHRleHQtZGFya1wiIG5nLWNsYXNzPVwie1xcJ2Rpc2FibGVkXFwnOiBmZC5sYXlvdXQubGVuZ3RoIDwgMn1cIj48L2k+IERlbGV0ZSBzZWxlY3RlZCB0YWI8L2J1dHRvbj48ZGl2IGNsYXNzPW15LTE+PGRpdiBuZy1pZj1mZC5sb2NhbFZhcnMuY2xpY2tlZE9uRGVsZXRlVGFiIGNsYXNzPWNhcmQ+PGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHAtMCBweC0xIGJnLWxpZ2h0XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1leGNsYW1hdGlvbi10cmlhbmdsZSB0ZXh0LWRhbmdlclwiPjxzcGFuIGNsYXNzPVwibWwtMiBzbWFsbFwiPkRlbGV0ZSBjb25maXJtYXRpb248L3NwYW4+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9bXktMT48ZGl2IGNsYXNzPVwibWwtMSBzbWFsbCBib2xkIHRleHQtZGFya1wiPkNsaWNrIENvbmZpcm0gdG8gZGVsZXRlIHRhYiBlbGVtZW50ITwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cC0xPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1kYW5nZXJcIiB0aXRsZT1Db25maXJtIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5jb25maXJtRGVsZXRlVGFiKCk+Q29uZmlybSA8aSBjbGFzcz1cIm1sLTIgZmEgZmEtY2hlY2tcIj48L2k+PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9ZmQubG9jYWxWYXJzLmdzcnZjX3NldENvbmZpcm1EZWxldGVFbGVtZW50KGZhbHNlKSBjbGFzcz1cImJ0biBidG4teHMgYnRuLWxpbmsgdGV4dC1tdXRlZCBtbC1hdXRvXCI+Q2FuY2VsPC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza0FkZE11bHRpcGxlUmVzb3VyY2VzLmh0bWwnLCc8ZGl2PjxkaXYgY2xhc3M9cGFuZWwtaW5mbyBuZy1pZj0haW5wdXRBcnJheS5sb2NrZWQ+PGRpdiBjbGFzcz1wYW5lbC1oZWFkaW5nPjxsYWJlbD57e2ZkLnBsYWNlaG9sZGVyfX08L2xhYmVsPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodFwiIG5nLWNsaWNrPVwiaXNDb2xsYXBzZWRNYXBwZXI9IWlzQ29sbGFwc2VkTWFwcGVyXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1kYXRhYmFzZVwiPjwvc3Bhbj4gU2VsZWN0IGRhdGFzZXQ8L2J1dHRvbj48ZGl2IGNsYXNzPWZsb2F0LXJpZ2h0IG5nLXNob3c9IWlucHV0QXJyYXkubG9ja2VkPjxhIHRpdGxlPXNvcnQgY2xhc3M9c29ydC1oYW5kbGU+PGkgY2xhc3M9XCJmYSBmYS1zb3J0XCI+PC9pPjwvYT4gPGEgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2tcIiB1aWItcG9wb3Zlci10ZW1wbGF0ZT1cIlxcJ211cGRhdGVwcm9wZXJ0aWVzLmh0bWxcXCdcIiBwb3BvdmVyLXRyaWdnZXI9b3V0c2lkZUNsaWNrIHBvcG92ZXItYXBwZW5kLXRvLWJvZHk9dHJ1ZSBwb3BvdmVyLXBsYWNlbWVudD1sZWZ0LXRvcD48aSBjbGFzcz1cImZhIGZhLWNhcmV0LXNxdWFyZS1vLXJpZ2h0XCI+PC9pPjwvYT4gPGEgdGl0bGU9XCJIaWRlIGZpZWxkXCIgbmctY2xpY2s9cmVtb3ZlRmllbGQoJGluZGV4KT48aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPjwvYT48L2Rpdj48YnI+PGxhYmVsPlNvdXJjZToge3tzZWxlY3RlZFJlc291cmNlSXRlbS5zcmNfdHlwZV90ZXh0fX08L2xhYmVsPjxicj48bGFiZWw+RGF0YXNldDoge3tzZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZH19PC9sYWJlbD48ZGl2IHVpYi1jb2xsYXBzZT0haXNDb2xsYXBzZWRNYXBwZXI+PGRpdiBrdC1kYXRhc2V0LW1hcHBlcj48L2Rpdj48L2Rpdj48aHI+PGRpdiBjbGFzcz1pbmxpbmUtYmxvY2stZGl2PjxkaXYgY2xhc3M9Y2hlY2tib3g+PGxhYmVsPjxpbnB1dCB0eXBlPWNoZWNrYm94IG5nLW1vZGVsPWZkLmhhc1BhcmVudERhdGFzZXQ+IFRoaXMgZGF0YXNldCBpcyBsaW5rZWQgdG8gcGFyZW50IGRhdGFzZXQ8L2xhYmVsPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9aW5saW5lLWJsb2NrLWRpdiBuZy1zaG93PWZkLmhhc1BhcmVudERhdGFzZXQ+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHRcIiBuZy1jbGljaz1cImlzQ29sbGFwc2VkTWFwcGVyUGFyZW50PSFpc0NvbGxhcHNlZE1hcHBlclBhcmVudFwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtZGF0YWJhc2VcIj48L3NwYW4+IFNlbGVjdCBwYXJlbnQgZGF0YXNldDwvYnV0dG9uPjwvZGl2PjxkaXYgbmctc2hvdz1mZC5oYXNQYXJlbnREYXRhc2V0PjxsYWJlbD5Tb3VyY2U6IHt7c2VsZWN0ZWRSZXNvdXJjZUl0ZW1QYXJlbnQuc3JjX3R5cGVfdGV4dH19PC9sYWJlbD48YnI+PGxhYmVsPkRhdGFzZXQ6IHt7c2VsZWN0ZWRSZXNvdXJjZUl0ZW1QYXJlbnQubmFtZV9jb25maXJtZWR9fTwvbGFiZWw+PC9kaXY+PGRpdiB1aWItY29sbGFwc2U9IWlzQ29sbGFwc2VkTWFwcGVyUGFyZW50PjxkaXYga3QtZGF0YXNldC1tYXBwZXItcGFyZW50PjwvZGl2PjwvZGl2Pjxocj48ZGl2IGNsYXNzPWlubGluZS1ibG9jay1kaXY+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHRcIiBuZy1jbGljaz1cImlzQ29sbGFwc2VkRGF0YXNldDJNYXBwZXI9IWlzQ29sbGFwc2VkRGF0YXNldDJNYXBwZXJcIj48c3BhbiBjbGFzcz1cImZhIGZhLWRhdGFiYXNlXCI+PC9zcGFuPiBTZWxlY3QgZGF0YXNldCB0byBkYXRhc2V0IG1hcHBpbmc8L2J1dHRvbj4gPHNwYW4+e3tzZWxlY3RlZFBhY2thZ2VzLmxlbmd0aH19IG1hcHBpbmcocykgc2VsZWN0ZWQ8L3NwYW4+PC9kaXY+PGRpdiBuZy1zaG93PSFpc0NvbGxhcHNlZERhdGFzZXQyTWFwcGVyPjxkaXYga3QtZGF0YXNldC10by1kYXRhc2V0LW1hcHBlcj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPWRhdGFEb3dubG9hZGluZz48aDQ+TG9hZGluZyBkYXRhLi4uPC9oND48L2Rpdj48ZGl2IG5nLWlmPWZvcm1Eb3dubG9hZGVkPjxkaXYga3QtZ3JpZCBncmlkLXR5cGU9Z3JpZHN0ZXJUeXBlIGZvcm0tcGFyYW1zPWZvcm1QYXJhbXMgYWxsLWNvbHVtbnM9d2lkZ2V0cyBjbGFzcz1cImt0R3JpZCBib3hzaGFkb3dcIiBuZy1yZXBlYXQ9XCJ3aWRnZXRzIGluIGRhc2hib2FyZC53aWRnZXRzIHRyYWNrIGJ5ICRpbmRleFwiPjwvZGl2PjwvZGl2PjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCIgbmctY2xpY2s9YWRkTmV3SXRlbSgpPjxzcGFuIGNsYXNzPVwiZmEgZmEtcGx1c1wiPjwvc3Bhbj4gQWRkIGl0ZW08L2J1dHRvbj48YnI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHRcIiBuZy1jbGljaz1zYXZlRGF0YXNldFJlY29yZHNNdWx0aXBsZSgpPjxzcGFuIGNsYXNzPVwiZmEgZmEtc2F2ZVwiPjwvc3Bhbj4gU2F2ZTwvYnV0dG9uPjxzY3JpcHQgaWQ9bXVwZGF0ZXByb3BlcnRpZXMuaHRtbCB0eXBlPXRleHQvbmctdGVtcGxhdGU+PGRpdj4gPGRpdiBjbGFzcz1cImJveC1oZWFkZXItYnRucyBmbG9hdC1yaWdodFwiID4gPC9kaXY+IDxsYWJlbD5MYWJlbCA8L2xhYmVsPiA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5nLW1vZGVsPVwiZmQucGxhY2Vob2xkZXJcIiAvPiA8bGFiZWw+RXJyb3IgbXNnIDwvbGFiZWw+IDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmctbW9kZWw9XCJmZC5lcnJvck1zZ1wiIC8+IDxsYWJlbD5TZWFyY2hUZXh0IDwvbGFiZWw+IDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmctbW9kZWw9XCJmZC5zZWFyY2hUZXh0XCIgLz4gPGRpdiBjbGFzcz1cImNoZWNrYm94XCI+IDxsYWJlbD4gPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5nLW1vZGVsPVwiZmQuYXV0b1NlYXJjaFwiID4gQXV0byBzZWFyY2ggPC9sYWJlbD4gPC9kaXY+IDxkaXYgY2xhc3M9XCJjaGVja2JveFwiPiA8bGFiZWw+IDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuZy1tb2RlbD1cImZkLnNob3dTZWFyY2hGb3JtXCIgPiBTaG93IHNlYXJjaCBmb3JtIDwvbGFiZWw+IDwvZGl2PiA8L2Rpdj48L3NjcmlwdD48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrQWRkUmVzb3VyY2UuaHRtbCcsJzxkaXYgY2xhc3M9d2lkZ2V0LWhlYWQgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LWFjdGl2ZSBtLTIgc2hhZG93XFwnOmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT4wLFxcJ20tMCBib3JkZXItMFxcJzooZmQuUmVsYXRlZD09bnVsbCB8fCBmZC5SZWxhdGVkPT11bmRlZmluZWQpICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yfVwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wIHAtMCBtYi0xXCIgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LWhlYWQtYWN0aXZlXFwnOmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT4wLFxcJ2JnLWxpZ2h0XFwnOmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MH1cIiBuZy1pZj1cImZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xXCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxpIGNsYXNzPVwiZmEgZmEtcGx1cyBteC0yXCI+PC9pPjxsYWJlbD5BZGQgZGF0YXNldCByZWNvcmQgKHt7ZmQuUHJlc2VudGF0aW9uSWR9fSk8L2xhYmVsPiA8YSBocmVmIHRpdGxlPXNvcnQgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LXByb3BcXCc6ZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wIHx8IGZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkfVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIHt7Z3JpZFR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIHdpZGdldC1wcm9wXCI+PGkgY2xhc3M9XCJ7e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZSBmYXMgZmEtZ3JpcC12ZXJ0aWNhbFwiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LXJpZ2h0IG15LWF1dG9cIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5zaG93UHJvcGVydGllcygxLGZhbHNlKSBuZy1jbGFzcz1cIntcXCdidG4td2FybmluZ1xcJzpmZC5QYXJhbWV0ZXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT1cXCdcXCcgJiYgZmQuUGFyYW1ldGVycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCE9dW5kZWZpbmVkLCBcXCdidG4tb3V0bGluZS1wcmltYXJ5IG5vLWJvcmRlclxcJzpmZC5QYXJhbWV0ZXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkPT1cXCdcXCcgfHwgZmQuUGFyYW1ldGVycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZD09dW5kZWZpbmVkfVwiIGNsYXNzPVwiYnRuIGJ0bi14c1wiPjxzcGFuIG5nLWlmPVwiZmQuUGFyYW1ldGVycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCE9XFwnXFwnICYmIGZkLlBhcmFtZXRlcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPXVuZGVmaW5lZFwiPnt7ZmQuUGFyYW1ldGVycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZH19PC9zcGFuPiA8c3BhbiBuZy1pZj1cImZkLlBhcmFtZXRlcnMuU2VsZWN0ZWRSZXNvdXJjZVR5cGUgJiYgKGZkLlBhcmFtZXRlcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQ9PVxcJ1xcJyB8fCBmZC5QYXJhbWV0ZXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkPT11bmRlZmluZWQpXCI+U2VsZWN0IHt7ZmQuUGFyYW1ldGVycy5TZWxlY3RlZFJlc291cmNlVHlwZX19PC9zcGFuPiA8c3BhbiBuZy1pZj1cIiFmZC5QYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlICYmIChmZC5QYXJhbWV0ZXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkPT1cXCdcXCcgfHwgZmQuUGFyYW1ldGVycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZD09dW5kZWZpbmVkKVwiPlNlbGVjdCByZXNvdXJjZTwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCIgbmctaWY9XCJmZC5QYXJhbWV0ZXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT1cXCdcXCcgJiYgZmQuUGFyYW1ldGVycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCE9dW5kZWZpbmVkXCI+PGEgaHJlZiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIGJ0bi1zbVwiIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1wcm9wXFwnOmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCBmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZH1cIiB0aXRsZT1cIlNob3cvaGlkZSBwcm9wZXJ0aWVzXCIgbmctY2xpY2s9ZmQubG9jYWxWYXJzLnNob3dQcm9wZXJ0aWVzKDIsdHJ1ZSk+PGkgY2xhc3M9XCJmYXMgZmEtY29nXCI+PC9pPjwvYT48L2Rpdj48ZGl2IGlkPWRlbGV0ZV9lbGVtZW50IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGRpdiBrdC10YXNrLWRyb3Bkb3duPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTFcIiBmZD1mZCBsb2NhbC12YXJzPWZkLmxvY2FsVmFycyBrdC1kYXRhc2V0LW1hcHBlcj48L2Rpdj48ZGl2IG5nLXNob3c9XCIhZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQgJiYgKGZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09NSB8fCBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MilcIiBhbmltYXRpb24tdHlwZT1cIlxcJ2Zvcm1cXCdcIiBrdC1wcm9jZXNzaW5nLWFuaW1hdGlvbi10aW1lbGluZSBzaG93LW1zZz1mYWxzZSBtZXNzYWdlPVwiTG9hZGluZyBmb3JtLi4uXCI+PC9kaXY+PGRpdiBuZy1zaG93PVwiZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQgJiYgKGZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MiB8fCBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MilcIj48ZGl2IGNsYXNzPVwibXQtMSBwLTIgdGV4dC1wcmltYXJ5XCIgbmctaWY9XCJmZC5sb2NhbFZhcnMuZm9ybUxvYWRlZCAmJiBmZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0Lmxlbmd0aD09MFwiPkZvcm0gaXMgbm90IGRlZmluZWQgb3IgZW1wdHk8L2Rpdj48ZGl2IGt0LWdyaWQgZ3JpZC10eXBlPWZkLmxvY2FsVmFycy5ncmlkc3RlclR5cGUgcmVzb3VyY2UtZm9ybS1sb2FkZWQ9ZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQgcGFyZW50LXJlc291cmNlLWRlZi1pZD1mZC5QYXJlbnREYXRhc2V0RGVmSWQgcmVzb3VyY2UtcmVjb3JkLWlkPWZkLmxvY2FsVmFycy5kYXRhc2V0UmVjb3JkSWQgcmVzb3VyY2UtZGVmaW5pdGlvbj1yZXNvdXJjZURlZmluaXRpb24gZm9ybS1wYXJhbXMtcGFyZW50PWZvcm1QYXJhbXMgZm9ybS1wYXJhbXM9ZmQubG9jYWxWYXJzLmZvcm1QYXJhbXMgZm9ybS1kYXRhPWZvcm1EYXRhW2ZkLlV1aWRSZWZdIHBhcmVudD1mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMgYWxsLWNvbHVtbnM9ZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzIHBhcmFtcz1mZC5QYXJhbWV0ZXJzIGNsYXNzPWt0R3JpZD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwibW9kYWwgZmFkZVwiIHJvbGU9ZGlhbG9nIGFyaWEtbGFiZWxsZWRieT1kYXRhc2V0TWFwcGVyTW9kYWwgaWQ9ZGF0YXNldE1hcHBlck1vZGFse3tmZC5QcmVzZW50YXRpb25JZH19IGFyaWEtaGlkZGVuPWZhbHNlPjxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtbGdcIiByb2xlPWRvY3VtZW50PjxkaXYgY2xhc3M9bW9kYWwtY29udGVudD48ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHB5LTFcIj48ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGUgZm50MTIgY29sIG14LTAgbXktMlwiPjxzcGFuPkRlZmluZSBkYXRhc2V0IG1hcHBpbmc8L3NwYW4+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9Y2xvc2UgZGF0YS1kaXNtaXNzPW1vZGFsIGFyaWEtbGFiZWw9Q2xvc2U+PHNwYW4gYXJpYS1oaWRkZW49dHJ1ZT5cXHhENzwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPW1vZGFsLWJvZHk+PGRpdiBrdC1kYXRhc2V0LXRvLWRhdGFzZXQtbWFwcGVyPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJtb2RhbCBmYWRlXCIgcm9sZT1kaWFsb2cgdGFiaW5kZXg9LTEgYXJpYS1sYWJlbGxlZGJ5PWRhdGFzZXRNYXBwZXJQYXJlbnRNb2RhbCBpZD1kYXRhc2V0TWFwcGVyUGFyZW50TW9kYWx7e2ZkLlByZXNlbnRhdGlvbklkfX0gYXJpYS1oaWRkZW49dHJ1ZT48ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWxnXCIgcm9sZT1kb2N1bWVudD48ZGl2IGNsYXNzPW1vZGFsLWNvbnRlbnQ+PGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBweS0xXCI+PGRpdiBjbGFzcz1cIm1vZGFsLXRpdGxlIGZudDEyIGNvbCBteC0wIG15LTJcIj48c3Bhbj5QYXJlbnQgZGF0YXNldCBzZXR1cDwvc3Bhbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1jbG9zZSBkYXRhLWRpc21pc3M9bW9kYWwgYXJpYS1sYWJlbD1DbG9zZT48c3BhbiBhcmlhLWhpZGRlbj10cnVlPlxceEQ3PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9bW9kYWwtYm9keT48ZGl2IGt0LWRhdGFzZXQtbWFwcGVyLXBhcmVudD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwibW9kYWwgZmFkZVwiIHJvbGU9ZGlhbG9nIGFyaWEtbGFiZWxsZWRieT1tYXNzUHJvcGVydHlVcGRhdGUgaWQ9bWFzc1Byb3BlcnR5VXBkYXRle3tmZC5QcmVzZW50YXRpb25JZH19IGFyaWEtaGlkZGVuPWZhbHNlPjxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtbGdcIiByb2xlPWRvY3VtZW50PjxkaXYgY2xhc3M9bW9kYWwtY29udGVudD48ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHB5LTFcIj48ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGUgZm50MTIgY29sIG14LTAgbXktMlwiPjxzcGFuPk1hc3MgUHJvcGVydHkgVXBkYXRlPC9zcGFuPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPWNsb3NlIGRhdGEtZGlzbWlzcz1tb2RhbCBhcmlhLWxhYmVsPUNsb3NlPjxzcGFuIGFyaWEtaGlkZGVuPXRydWU+XFx4RDc8L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1tb2RhbC1ib2R5PjxkaXYga3QtbWFzcy1wcm9wZXJ0eS11cGRhdGUtc2VsZWN0PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tBZGRSZXNvdXJjZUV4ZS5odG1sJywnPGRpdiBjbGFzcz13aWRnZXQtaGVhZCBuZy1pZj1mZC5sb2NhbFZhcnMud2lkZ2V0UmVhZHk+PGRpdiBuZy1zaG93PSFmZC5sb2NhbFZhcnMuZm9ybUxvYWRlZCBhbmltYXRpb24tdHlwZT1cIlxcJ2Zvcm1cXCdcIiBrdC1wcm9jZXNzaW5nLWFuaW1hdGlvbi10aW1lbGluZSBzaG93LW1zZz1mYWxzZSBtZXNzYWdlPVwiTG9hZGluZyBmb3JtLi4uXCI+PC9kaXY+PGRpdiBuZy1zaG93PWZkLmxvY2FsVmFycy5mb3JtTG9hZGVkPjxkaXYgY2xhc3M9XCJtdC0xIHAtMiB0ZXh0LWRhbmdlclwiIG5nLWlmPVwiZmQubG9jYWxWYXJzLk5vUHVibGlzaGVkUmVzb3VyY2VNc2chPT11bmRlZmluZWRcIj57e2ZkLmxvY2FsVmFycy5Ob1B1Ymxpc2hlZFJlc291cmNlTXNnfX08L2Rpdj48ZGl2IG5nLWlmPSFmZC5NdWx0aWxpbmUga3QtZ3JpZCBncmlkLXR5cGU9OjpmZC5sb2NhbFZhcnMuZ3JpZHN0ZXJUeXBlIHJlc291cmNlLWZvcm0tbG9hZGVkPWZkLmxvY2FsVmFycy5mb3JtTG9hZGVkIHBhcmVudC1yZXNvdXJjZS1kZWYtaWQ9OjpmZC5QYXJlbnREYXRhc2V0RGVmSWQgcmVzb3VyY2UtcmVjb3JkLWlkPTo6ZmQubG9jYWxWYXJzLmRhdGFzZXRSZWNvcmRJZCByZXNvdXJjZS1kZWZpbml0aW9uPTo6cmVzb3VyY2VEZWZpbml0aW9uIGZvcm0tcGFyYW1zLXBhcmVudD1mb3JtUGFyYW1zIGZvcm0tcGFyYW1zPTo6ZmQubG9jYWxWYXJzLmZvcm1QYXJhbXMgZm9ybS1kYXRhPWZvcm1EYXRhW2ZkLlV1aWRSZWZdIHBhcmVudC13aWRnZXQ9OjpmZC5VdWlkUmVmIHBhcmVudD06OmZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cyBhbGwtY29sdW1ucz06OmZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cyBjbGFzcz1rdEdyaWQ+PC9kaXY+PGRpdiBjbGFzcz1tdC0xIG5nLWlmPWZkLk11bHRpbGluZT48ZGl2IG5nLXJlcGVhdD1cImZvcm0gaW4gZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzXCIgY2xhc3M9YWRkLXJlY29yZC1pdGVtPjxkaXYgY2xhc3M9cmVtb3ZlLWJ0bj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tZGFuZ2VyXCIgbmctY2xpY2s9ZmQubG9jYWxWYXJzLnJlbW92ZU1hbnVhbFJlY29yZFRvTXVsdGlwbGUoJGluZGV4KT48aSBjbGFzcz1cImZhIGZhLXRyYXNoIG1yLTFcIj48L2k+PHNwYW4gbmctYmluZD1cImZkLlBhcmFtZXRlcnNMYW5nLlJlbW92ZVJlY0xhYmVsIHx8IFxcJ1JlbW92ZSBpdGVtXFwnXCI+PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYga3QtZ3JpZCBncmlkLXR5cGU9OjpmZC5sb2NhbFZhcnMuZ3JpZHN0ZXJUeXBlIHJlc291cmNlLWZvcm0tbG9hZGVkPWZkLmxvY2FsVmFycy5mb3JtTG9hZGVkIHBhcmVudC1yZXNvdXJjZS1kZWYtaWQ9OjpmZC5QYXJlbnREYXRhc2V0RGVmSWQgcmVzb3VyY2UtcmVjb3JkLWlkPTo6ZmQubG9jYWxWYXJzLmRhdGFzZXRSZWNvcmRJZHNbJGluZGV4XSByZXNvdXJjZS1kZWZpbml0aW9uPTo6cmVzb3VyY2VEZWZpbml0aW9uIGZvcm0tcGFyYW1zLXBhcmVudD1mb3JtUGFyYW1zIGZvcm0tcGFyYW1zPTo6ZmQubG9jYWxWYXJzLmZvcm1QYXJhbXMgZm9ybS1kYXRhPWZvcm1EYXRhW2ZkLlV1aWRSZWZdWyRpbmRleF0gcGFyZW50LXdpZGdldD06OmZkLlV1aWRSZWYgcGFyZW50PTo6Zm9ybSBhbGwtY29sdW1ucz06OmZvcm0gY2xhc3M9a3RHcmlkPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9bS0yIG5nLWlmPVwiKGZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sZW5ndGg8ZmQuUGFyYW1ldGVycy5NYXhJdGVtcyAmJiBmZC5QYXJhbWV0ZXJzLk1heEl0ZW1zPjApIHx8IGZkLlBhcmFtZXRlcnMuTWF4SXRlbXM9PXVuZGVmaW5lZFwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnlcIiBuZy1jbGljaz1mZC5sb2NhbFZhcnMuYWRkTWFudWFsUmVjb3JkVG9NdWx0aXBsZSgpPjxpIGNsYXNzPVwiZmEgZmEtcGx1cyBtci0xXCI+PC9pPjxzcGFuIG5nLWJpbmQ9XCJmZC5QYXJhbWV0ZXJzTGFuZy5BZGRSZWNMYWJlbCB8fCBcXCdBZGQgaXRlbVxcJ1wiPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48c3R5bGU+XFxyXFxuXFx0LnJlbW92ZS1idG57XFxyXFxuXFx0XFx0cG9zaXRpb246IGFic29sdXRlO1xcclxcblxcdFxcdG1hcmdpbi10b3A6IDEwcHg7XFxyXFxuXFx0XFx0cmlnaHQ6IDA7XFxyXFxuXFx0XFx0ei1pbmRleDogMTAwMDtcXHJcXG5cXHR9XFxyXFxuXFx0LmFkZC1yZWNvcmQtaXRlbSAucmVtb3ZlLWJ0bntcXHJcXG5cXHRcXHR2aXNpYmlsaXR5OiBoaWRkZW47XFxyXFxuXFx0fVxcclxcblxcclxcblxcclxcblxcdC5hZGQtcmVjb3JkLWl0ZW06aG92ZXIgLnJlbW92ZS1idG4ge1xcclxcblxcdHZpc2liaWxpdHk6IHZpc2libGU7XFxyXFxuXFx0fVxcclxcbjwvc3R5bGU+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza0FkZFJlc291cmNlUHJvcGVydGllcy5odG1sJywnPGRpdiBjbGFzcz48ZGl2IGt0LXByb3BlcnR5LWhlYWRlcj48L2Rpdj48ZGl2IG5nLWlmPVwiZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0xXCIgZmQ9ZmQgbG9jYWwtdmFycz1mZC5sb2NhbFZhcnMga3QtZGF0YXNldC1tYXBwZXI+PC9kaXY+PGRpdiBjbGFzcz1cImN1c3RvbWl6ZS1mb3JtIGQtZmxleCBwb3NpdGlvbi1hYnNvbHV0ZVwiPjwvZGl2PjxkaXYgbmctaWY9XCJmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTJcIiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLTI0IHB4LTBcIj48bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkXCI+TGFiZWw8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLkxhYmVsPiA8bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkIG10LTFcIj5FcnJvciBtc2c8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLkVycm9yTXNnPiA8bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkIG10LTFcIj5TZWFyY2hUZXh0PC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1mZC5TZWFyY2hUZXh0PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMjQgcHgtMFwiPjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbCBmb3I9Y2JNdWx0aWxpbmV7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JNdWx0aWxpbmV7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQuTXVsdGlsaW5lIG5nLWNoZWNrZWQ9ZmQuTXVsdGlsaW5lPiBBZGQgbXVsdGlwbGUgcmVjb3JkczwvbGFiZWw+PC9kaXY+PGRpdiBuZy1pZj1mZC5NdWx0aWxpbmUgY2xhc3M9XCJjb2wtMjQgcHgtMFwiPjxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWRcIj5NYXggaXRlbXM8L2xhYmVsPiA8aW5wdXQgdHlwZT1udW1iZXIgbWluPTAgbWF4PTEwMDAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5NYXhJdGVtcz4gPGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZFwiPkFkZCBidXR0b24gbGFiZWw8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnNMYW5nLkFkZFJlY0xhYmVsPiA8bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkXCI+UmVtb3ZlIGJ1dHRvbiBsYWJlbDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVyc0xhbmcuUmVtb3ZlUmVjTGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0yNCBweC0wXCI+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYkNoaWxkcmVue3tmZC5QcmVzZW50YXRpb25JZH19PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPWNiQ2hpbGRyZW57e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5BZGRDaGlsZCBuZy1jaGVja2VkPWZkLlBhcmFtZXRlcnMuQWRkQ2hpbGQ+IEFkZCBjaGlsZCByZWNvcmRzPC9sYWJlbD48L2Rpdj48ZGl2IG5nLWlmPWZkLlBhcmFtZXRlcnMuQWRkQ2hpbGQgY2xhc3M9XCJjb2wtMjQgcHgtMFwiPjxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWRcIj5DaGlsZCB3aWRnZXQgaWQ8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuQ2hpbGRXaWRnZXQ+IDxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWRcIj5IYXMgY2hpbGQgY29uZGl0aW9uPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkhhc0NoaWxkQ29uZGl0aW9uPiA8bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkXCI+UGFyZW50IGZpZWxkPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlBhcmVudEZpZWxkPiA8bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkXCI+Q2hpbGQgZmllbGQ8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuQ2hpbGRGaWVsZD48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTI0IHB4LTAgbXQtMlwiPjxzcGFuIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZCBtdC0xXCI+RGVmaW5lIG1lc3NhZ2Ugd2hlbiByZWNvcmQgaXMgYWRkZWQgc3VjY2Vzc2Z1bHk8L3NwYW4+IDx0ZXh0YXJlYSBuZy1tb2RlbD1mZC5SZXNwb25zZU1zZyBwbGFjZWhvbGRlcj1cIkVudGVyIG1lc3NhZ2VcIiBuYW1lPXJlc3BvbnNlTXNnIGNsYXNzPWZvcm0tY29udHJvbD5cXHJcXG5cXHRcXHRcXHQgICAgXFxyXFxuXFx0XFx0PC90ZXh0YXJlYT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXctMTAwIG5nLWlmPVwiZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlID4gMFwiPjxkaXYga3Qtd2lkZ2V0LWRhdGEtc291cmNlLWRlZj48L2Rpdj48ZGl2IGNsYXNzPXctMTAwIGlkZD1QTEFDRUhPTERFUlBST1BFUlRJRVMga3QtcHJvYy1waC1wcm9wZXJ0eT48L2Rpdj48ZGl2IGt0LWZpZWxkLWFkdmFuY2VkLXByb3BlcnRpZXM+PC9kaXY+PGRpdiBjbGFzcz1cIm15LTIgdGV4dC1jZW50ZXJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi14cyBidG4tcHJpbWFyeVwiIGRhdGEtdG9nZ2xlPW1vZGFsIGRhdGEtdGFyZ2V0PSNkYXRhc2V0TWFwcGVyTW9kYWx7e2ZkLlByZXNlbnRhdGlvbklkfX0+PHNwYW4+Q29weSBkYXRhIGZyb20gb3RoZXIgcmVzb3VyY2VzPC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJteS0yIHRleHQtY2VudGVyXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cInctMTAwIGJ0biBidG4teHMgYnRuLXByaW1hcnlcIiBkYXRhLXRvZ2dsZT1tb2RhbCBkYXRhLXRhcmdldD0jZGF0YXNldE1hcHBlclBhcmVudE1vZGFse3tmZC5QcmVzZW50YXRpb25JZH19PjxzcGFuPkRlZmluZSBwYXJlbnQgcmVzb3VyY2U8L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1cIm15LTIgdGV4dC1jZW50ZXJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi14cyBidG4tcHJpbWFyeVwiIGRhdGEtdG9nZ2xlPW1vZGFsIGRhdGEtdGFyZ2V0PSNtYXNzUHJvcGVydHlVcGRhdGV7e2ZkLlByZXNlbnRhdGlvbklkfX0+PHNwYW4+TWFzcyB1cGRhdGU8L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza0NoYXJ0Lmh0bWwnLCc8ZGl2IGNsYXNzPXdpZGdldC1oZWFkIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1hY3RpdmUgbS0yIHNoYWRvd1xcJzpsb2NhbFZhcnMuc2hvd0FkZFRhc2sgfHwgbG9jYWxWYXJzLnNlbGVjdGVkVGFza0luZGV4Pi0xfVwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wIHAtMCBiZy1saWdodFwiIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1oZWFkLWFjdGl2ZVxcJzpmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU+MCxcXCdiZy1saWdodFxcJzpmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTB9XCIgbmctaWY9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MVwiPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTAgYmctZ3JheS0xMDBcIj48aSBjbGFzcz1cImZhcyBmYS1jaGFydC1iYXIgbXgtMlwiPjwvaT48bGFiZWw+Q2hhcnQgKHt7ZmQuUHJlc2VudGF0aW9uSWR9fSk8L2xhYmVsPiA8YSBocmVmIHRpdGxlPXNvcnQgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LXByb3BcXCc6ZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wIHx8IGZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkfVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIHt7Z3JpZFR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIHdpZGdldC1wcm9wXCI+PGkgY2xhc3M9XCJ7e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZSBmYXMgZmEtZ3JpcC12ZXJ0aWNhbFwiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LXJpZ2h0IG15LWF1dG9cIj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCIgbmctaWY9XCJmZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPVxcJ1xcJyAmJiBmZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPXVuZGVmaW5lZFwiPjxhIGhyZWYgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCBidG4tc21cIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtcHJvcFxcJzpmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT11bmRlZmluZWR9XCIgdGl0bGU9XCJTaG93L2hpZGUgcHJvcGVydGllc1wiIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5zaG93UHJvcGVydGllcygyLHRydWUpPjxpIGNsYXNzPVwiZmFzIGZhLWNvZ1wiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiIG5nLWlmPXRydWU+PGEgaHJlZiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIGJ0bi1zbVwiIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1wcm9wXFwnOmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCBmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZH1cIiB0aXRsZT1cIlNob3cvaGlkZSBwcm9wZXJ0aWVzXCIgbmctY2xpY2s9ZmQubG9jYWxWYXJzLnNob3dQcm9wZXJ0aWVzKDIsdHJ1ZSk+PGkgY2xhc3M9XCJmYXMgZmEtY29nXCI+PC9pPjwvYT48L2Rpdj48ZGl2IGlkPVwiZGVsZXRlIHdpZGdldFwiIGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGRpdiBrdC10YXNrLWRyb3Bkb3duPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTFcIiBmZD1mZCBsb2NhbC12YXJzPWZkLmxvY2FsVmFycyBrdC1kYXRhc2V0LW1hcHBlcj48L2Rpdj48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLnNob3dQcm9wZXJ0aWVzICYmIGdzcnZjLmdldEZvcm1WaWV3VHlwZSgpPT0xXCI+PGRpdiBrdC1mb3JtLWVsZW1lbnQtcHJvcGVydGllcyBmZD1mZCBsb2NhbC12YXJzPWxvY2FsVmFycz48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwiZ3NydmMuZ2V0Rm9ybVZpZXdUeXBlKCk9PTJcIj48ZGl2IG5nLXJlcGVhdD1cInNUYXNrIGluIGxvY2FsT2JqLmxvYWRlZFRhc2tzIHRyYWNrIGJ5IHRhc2tJZFwiPjxkaXYga3QtdGFzay1wcm9jLWRpcmVjdGl2ZSBmZD1mZCBsb2NhbC12YXJzPXNUYXNrLmxvY2FsVmFycyB0YXNrLWRlZmluaXRpb249cmVzb3VyY2VEZWZpbml0aW9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmZC5sb2NhbFZhcnMuY2hhcnRUeXBlIT1cXCdjb3VudGVyXFwnICYmIGZkLmxvY2FsVmFycy5jaGFydFR5cGUhPVxcJ3NjcmlwdFxcJ1wiIGlkPUNIQVJUQ2FudmFze3tmZC5QcmVzZW50YXRpb25JZH19PjxkaXYgbmctc2hvdz1cImZkLmxvY2FsVmFycy5zaG93Rm9ybSB8fCBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MlwiIGNsYXNzPVwicm93IG0tMCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+PGg0IGNsYXNzPWNvbC0yND57e2ZkLkxhYmVsfX08L2g0PjxjYW52YXMgbmctc2hvdz1cImZkLmxvY2FsVmFycy5kYXRhLmxlbmd0aCA+IDBcIiBuZy1jbGFzcz1jb2xMZW5ndGhbZmQudmFsdWVMZW5ndGgtMV0gY2xhc3M9XCJjaGFydCBjaGFydC1iYXNlXCIgY2hhcnQtY29sb3JzPWZkLmxvY2FsVmFycy5jaGFydENvbG9ycyBjaGFydC10eXBlPWZkLmxvY2FsVmFycy5jaGFydFR5cGUgY2hhcnQtZGF0YT1mZC5sb2NhbFZhcnMuZGF0YSBjaGFydC1sYmw9ZmQuTGFiZWwgY2hhcnQtbGFiZWxzPWZkLmxvY2FsVmFycy5sYWJlbHMgY2hhcnQtb3B0aW9ucz1mZC5sb2NhbFZhcnMuY2hhcnRPcHRpb25zPjwvY2FudmFzPjxkaXYgbmctc2hvdz1cImZkLmxvY2FsVmFycy5kYXRhLmxlbmd0aCA9PSAwXCIgc3R5bGU9XCJmb250LXNpemU6IHt7IGZkLlBhcmFtZXRlcnMuRm9udFNpemUgfHwgXFwnN3JlbVxcJ319XCI+e3sgZmQuUGFyYW1ldGVyc0xhbmcuTm9EYXRhTXNnIHx8IFxcJ05vIGRhdGEhXFwnfX08L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwiZmQubG9jYWxWYXJzLmNoYXJ0VHlwZT09XFwnc2NyaXB0XFwnXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgcGFkZGluZzogMjRweCAwOyBnYXA6IDEycHg7XCIgaWQ9Q0hBUlRDYW52YXNDb3VudGVye3tmZC5QcmVzZW50YXRpb25JZH19PjxkaXYgc3R5bGU9XCJ7eyBmZC5QYXJhbWV0ZXJzLmNzc1N0eWxlIH19XCI+PGRpdiBzdHlsZT1cImZvbnQtc2l6ZToge3sgZmQuUGFyYW1ldGVycy5Gb250U2l6ZSB8fCBcXCc3cmVtXFwnfX1cIj57e2ZkLmxvY2FsVmFycy5zY3JpcHRWYWx1ZSB9fTwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmZC5sb2NhbFZhcnMuY2hhcnRUeXBlPT1cXCdjb3VudGVyXFwnXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgcGFkZGluZzogMjRweCAwOyBnYXA6IDEycHg7XCIgaWQ9Q0hBUlRDYW52YXNDb3VudGVye3tmZC5QcmVzZW50YXRpb25JZH19PjxkaXYgc3R5bGU9XCJ7eyBmZC5QYXJhbWV0ZXJzLmNzc1N0eWxlIH19XCI+PGRpdiBzdHlsZT1cImZvbnQtc2l6ZToge3sgZmQuUGFyYW1ldGVycy5Gb250U2l6ZSB8fCBcXCc3cmVtXFwnfX07XCIgbmctaWY9ZmQuUGFyYW1ldGVycy5jaGFydEZpbHRlckZpZWxkPjxkaXYgc3R5bGU9dGV4dC1hbGlnbjpjZW50ZXI+e3sgZmQubG9jYWxWYXJzLmZvcm1hdE51bWJlciggZmQubG9jYWxWYXJzLmFuYWx5dGljc1tmZC5QYXJhbWV0ZXJzLmNoYXJ0RmlsdGVyRmllbGRdIHx8IDAgKSB9fSB7e2ZkLlBhcmFtZXRlcnMuQ291bnRlclVuaXRzfX08L2Rpdj48ZGl2IHN0eWxlPVwiZm9udC1zaXplOiBjYWxjKDEycHggKyAwLjE1ZW0pO3RleHQtYWxpZ246IGNlbnRlcjtcIj57eyBmZC5sb2NhbFZhcnMuY2hhcnRMYWJlbCB9fTwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9XCJmb250LXNpemU6IHt7IGZkLlBhcmFtZXRlcnMuRm9udFNpemUgfHwgXFwnN3JlbVxcJ319O1wiIG5nLWlmPSFmZC5QYXJhbWV0ZXJzLmNoYXJ0RmlsdGVyRmllbGQ+PGRpdiBzdHlsZT10ZXh0LWFsaWduOmNlbnRlcj57eyBmZC5sb2NhbFZhcnMuZm9ybWF0TnVtYmVyKGZkLmxvY2FsVmFycy5jb3VudEFsbCkgfX0ge3tmZC5QYXJhbWV0ZXJzLkNvdW50ZXJVbml0c319PC9kaXY+PGRpdiBzdHlsZT1cImZvbnQtc2l6ZTogY2FsYygxMnB4ICsgMC4xNWVtKTt0ZXh0LWFsaWduOiBjZW50ZXI7XCI+e3sgZmQubG9jYWxWYXJzLmNoYXJ0TGFiZWwgfX08L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48aDM+PGI+e3sgZmQubG9jYWxWYXJzLmVycm9ybXNnfX08L2I+PC9oMz48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrQ2hhcnRQcm9wZXJ0aWVzLmh0bWwnLCc8ZGl2IG5nLWZvcm09XCJcXCd0YXNrQ2hhcnRQcm9wZXJ0aWVzXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgY2xhc3M9cC0wPjxkaXYgY2xhc3M9cGItND48bGFiZWwgY2xhc3M+V2lkZ2V0IHJlZmVyZW5jZSAoZW50ZXIgb3IgcGFzdGUpPC9sYWJlbD4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiB0aXRsZT1cIlBhc3RlIHdpZGdldCByZWZlcmVuY2VcIiBjbGFzcz1cImJ0biBidG4tbGluayBidG4teHMgcC0wXCIgbmctY2xpY2s9ZmQucGFzdGVGcm9tQ2xpcGJvYXJkKHRhc2spPjxpIGNsYXNzPVwiZmEgZmEtcGFzdGUgbWwtMVwiPjwvaT48L2J1dHRvbj4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLndpZGdldFJlZmVyZW5jZT48L2Rpdj48ZGl2IGNsYXNzPXJvdz48ZGl2IGNsYXNzPVwiY29sLTI0IG15LTJcIiBuZy1pZj0hZmQuUGFyYW1ldGVycy5IaWRlSGVhZGVyPjxsYWJlbD5UaXRsZTwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuTGFiZWw+IDxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWRcIj5ObyBkYXRhIG1lc3NhZ2U8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnNMYW5nLk5vRGF0YU1zZz48L2Rpdj48ZGl2IGNsYXNzPWNvbC0yND48bGFiZWwgY2xhc3M9XCJwbC0wIGxhYmVsLXhzIHRleHQtbXV0ZWRcIiBmb3I9bmFtZUZpZWxkPlNlbGVjdCBmdW5jdGlvbjwvbGFiZWw+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIGNsYXNzPW0tMSBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkNhbGN1bGF0ZUZ1bmN0aW9uIHNlbGVjdGVkLWl0ZW1zPWZkLlBhcmFtZXRlcnMuQ2FsY3VsYXRlRnVuY3Rpb24gaXMtbXVsdGlwbGU9ZmFsc2UgbmFtZT1QYXJhbWV0ZXJzLkNhbGN1bGF0ZUZ1bmN0aW9ue3tmZC5QcmVzZW50YXRpb25JZH19IHJlcXVpcmVkLWZpZWxkPXRydWUgZHJvcGRvd24taXRlbXM9ZmQubG9jYWxWYXJzLmNhbGN1bGF0ZUZ1bmN0aW9ucyBkcm9wZG93bi1pZD1cIlxcJ1BhcmFtZXRlcnMuQ2FsY3VsYXRlRnVuY3Rpb25cXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ3ZpZXdDaGFydFByb3BlcnRpZXNcXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCBmdW5jdGlvblxcJ1wiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PC9kaXY+PGRpdiBjbGFzcz1jb2wtMjQ+PGxhYmVsIGNsYXNzPVwicGwtMCBsYWJlbC14cyB0ZXh0LW11dGVkXCIgZm9yPW5hbWVGaWVsZD5TZWxlY3QgaW5kZXg8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPWZvcm0tY29udHJvbCBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlNlbGVjdGVkQ2hhcnRBbmFseXRpY3M+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0yNCBtdC0xXCIgaWQ9ZXh0ZW5kZWRQcm9wZXJ0eVBhbmVsPjxkaXYgY2xhc3M9XCJleHBhbmQtcHJvcGVydHktcGFuZWwgdGFnIGJvcmRlci1ib3R0b20gYm9yZGVyLXN1Y2Nlc3MgbXktMSBweS0xXCIgZGF0YS10b2dnbGU9Y29sbGFwc2UgaHJlZj0jZWxlbWVudFNpemV7e2ZkLlByZXNlbnRhdGlvbklkfX0gcm9sZT1idXR0b24gYXJpYS1leHBhbmRlZD10cnVlIGFyaWEtY29udHJvbHM9ZXh0ZW5kZWRQcm9wZXJ0eVBhbmVsPjxzcGFuIGNsYXNzPVwiY29sIHAtMFwiPkNoYXJ0IHR5cGU8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbGxhcHNlIHNob3dcIiBpZD1lbGVtZW50U2l6ZXt7ZmQuUHJlc2VudGF0aW9uSWR9fT48ZGl2IGNsYXNzPVwicHJvcC10YWItY29udGVudCBwLTEgbWItNFwiPjxkaXYgY2xhc3M+PGxhYmVsIGNsYXNzPVwicGwtMCBsYWJlbC14cyB0ZXh0LW11dGVkXCIgZm9yPW5hbWVGaWVsZD5TZWxlY3QgQ2hhcnQgVHlwZTwvbGFiZWw+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIGNsYXNzPW0tMSBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLmNoYXJ0VHlwZSBzZWxlY3RlZC1pdGVtcz1mZC5QYXJhbWV0ZXJzLmNoYXJ0VHlwZSBpcy1tdWx0aXBsZT1mYWxzZSBuYW1lPVBhcmFtZXRlcnMuY2hhcnRUeXBle3tmZC5QcmVzZW50YXRpb25JZH19IHJlcXVpcmVkLWZpZWxkPXRydWUgZHJvcGRvd24taXRlbXM9ZmQubG9jYWxWYXJzLmNoYXJ0VHlwZXMgZHJvcGRvd24taWQ9XCJcXCdQYXJhbWV0ZXJzLmNoYXJ0VHlwZVxcJytmZC5QcmVzZW50YXRpb25JZFwiIHBhcmVudC1mb3JtLWlkPVwiXFwndmlld0NoYXJ0UHJvcGVydGllc1xcJytmZC5QcmVzZW50YXRpb25JZFwiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IGNoYXJ0IHR5cGVcXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjwvZGl2PjxkaXYgbmctaWY9XCJmZC5QYXJhbWV0ZXJzLmNoYXJ0VHlwZS5uYW1lIT1cXCdzY3JpcHRcXCcgJiYgZmQuUGFyYW1ldGVycy5jaGFydFR5cGUubmFtZSE9XFwnY291bnRlclxcJ1wiIGNsYXNzPjxsYWJlbCBjbGFzcz1cInBsLTAgbGFiZWwteHMgdGV4dC1tdXRlZFwiPkNoYXJ0IFByZWNpc2lvbiAoeC95IGF4ZXMpPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1mb3JtLWNvbnRyb2wgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5jaGFydFByZWNpc2lvbj48L2Rpdj48ZGl2IG5nLWlmPVwiZmQuUGFyYW1ldGVycy5jaGFydFR5cGUubmFtZT09XFwnc2NyaXB0XFwnXCIgY2xhc3M9XCJwLTEgbWItMVwiPjxkaXYgY2xhc3M+PGxhYmVsIGNsYXNzPVwicGwtMCBsYWJlbC14cyB0ZXh0LW11dGVkXCI+U2NyaXB0IGV4cHJlc3Npb246PC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dGFyZWEgY2xhc3M9Zm9ybS1jb250cm9sIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuc2NyaXB0PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmZC5QYXJhbWV0ZXJzLmNoYXJ0VHlwZS5uYW1lPT1cXCdjb3VudGVyXFwnXCIgY2xhc3M9cC0xPjxkaXYgY2xhc3M+PGxhYmVsIGNsYXNzPVwicGwtMCBsYWJlbC14cyB0ZXh0LW11dGVkXCI+Q2hhcnQgTGFiZWw8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPWZvcm0tY29udHJvbCBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLmNoYXJ0TGFiZWw+PC9kaXY+PGRpdj48ZGl2IGNsYXNzPjxsYWJlbCBjbGFzcz1cInBsLTAgbGFiZWwteHMgdGV4dC1tdXRlZFwiPlVzZSAxMDAwcyBzZXBhcmF0b3I8L2xhYmVsPiA8aW5wdXQgbmctZGlzYWJsZWQ9ZmQuUGFyYW1ldGVycy5kaXNhYmxlRm9ybWF0dGluZyB0eXBlPWNoZWNrYm94IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMudXNlR3JvdXBpbmdTZXBhcmF0b3I+PC9kaXY+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9XCJwbC0wIGxhYmVsLXhzIHRleHQtbXV0ZWRcIj5EZWNpbWFsIFBsYWNlczwvbGFiZWw+IDxpbnB1dCBuZy1kaXNhYmxlZD1mZC5QYXJhbWV0ZXJzLmRpc2FibGVGb3JtYXR0aW5nIHR5cGU9dGV4dCBjbGFzcz1mb3JtLWNvbnRyb2wgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5jaGFydEZyYWN0aW9uRGlnaXRzPjwvZGl2PjxkaXYgY2xhc3M+PGxhYmVsIGNsYXNzPVwicGwtMCBsYWJlbC14cyB0ZXh0LW11dGVkXCI+RGlzYWJsZSBmb3JtYXR0aW5nPC9sYWJlbD4gPGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5kaXNhYmxlRm9ybWF0dGluZz48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPjxsYWJlbCBjbGFzcz1cInBsLTAgbGFiZWwteHMgdGV4dC1tdXRlZFwiPkNvdW50ZXIgVW5pdHM8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPWZvcm0tY29udHJvbCBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkNvdW50ZXJVbml0cz48L2Rpdj48ZGl2IGNsYXNzPjxsYWJlbCBjbGFzcz1cInBsLTAgbGFiZWwteHMgdGV4dC1tdXRlZFwiPkNoYXJ0IGZpbHRlcmluZyBmaWVsZDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9Zm9ybS1jb250cm9sIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuY2hhcnRGaWx0ZXJGaWVsZD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiXCI+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkZvbnQgc2l6ZTwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5Gb250U2l6ZSBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48L2Rpdj48ZGl2IGNsYXNzPW1iLTE+PGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZCBsYWJlbC14c1wiPkNzcyBzdHlsZTwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5jc3NTdHlsZT48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrQ29udGFpbmVyLmh0bWwnLCc8ZGl2IGNsYXNzPXdpZGdldC1oZWFkIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1hY3RpdmUgbS0yIHNoYWRvd1xcJzpsb2NhbFZhcnMuc2hvd0FkZFRhc2sgfHwgbG9jYWxWYXJzLnNlbGVjdGVkVGFza0luZGV4Pi0xfVwiPjxkaXYgbmctaWY9XCIoZ3NydmMuZ2V0Rm9ybVZpZXdUeXBlKCk9PTEgfHwgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEpICYmIGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlIT0yXCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgcC0wIG1iLTFcIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtaGVhZC1hY3RpdmVcXCc6bG9jYWxWYXJzLnNob3dBZGRUYXNrLFxcJ2JnLWxpZ2h0XFwnOiFsb2NhbFZhcnMuc2hvd0FkZFRhc2t9XCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxpIGNsYXNzPVwiZmFyIGZhLXNxdWFyZSBteC0yXCI+PC9pPjxsYWJlbD5UYXNrIGNvbnRhaW5lciAoe3s6OmZkLlByZXNlbnRhdGlvbklkfX0pPC9sYWJlbD4gPGEgaHJlZiB0aXRsZT1zb3J0IG5nLWNsYXNzPVwie1xcJ3dpZGdldC1wcm9wXFwnOmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCBsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZH1cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCB7e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZSB3aWRnZXQtcHJvcFwiPjxpIGNsYXNzPVwie3tncmlkVHlwZX19LWVsZW1lbnQtZHJhZy1oYW5kbGUgZmFzIGZhLWdyaXAtdmVydGljYWxcIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgbXktYXV0byB0ZXh0LXJpZ2h0IHAtMFwiPjxhIGhyZWYgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCBidG4tc21cIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtcHJvcFxcJzpsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgbG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT11bmRlZmluZWR9XCIgdGl0bGU9XCJTaG93L2hpZGUgcHJvcGVydGllc1wiIG5nLWNsaWNrPVwibG9jYWxWYXJzLnNob3dQcm9wZXJ0aWVzPSFsb2NhbFZhcnMuc2hvd1Byb3BlcnRpZXNcIj48aSBjbGFzcz1cImZhcyBmYS1jb2dcIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48ZGl2IGt0LXRhc2stZHJvcGRvd24yPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJsb2NhbFZhcnMuc2hvd1Byb3BlcnRpZXMgJiYgZ3NydmMuZ2V0Rm9ybVZpZXdUeXBlKCk9PTFcIj48ZGl2IGt0LWZvcm0tZWxlbWVudC1wcm9wZXJ0aWVzIGZkPWZkIGxvY2FsLXZhcnM9bG9jYWxWYXJzPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJnc3J2Yy5nZXRGb3JtVmlld1R5cGUoKT09MlwiPjxkaXYgbmctcmVwZWF0PVwic1Rhc2sgaW4gbG9jYWxPYmoubG9hZGVkVGFza3MgdHJhY2sgYnkgdGFza0lkXCI+PGRpdiBrdC10YXNrLXByb2MtZGlyZWN0aXZlIGZkPWZkIGxvY2FsLXZhcnM9c1Rhc2subG9jYWxWYXJzIHRhc2stZGVmaW5pdGlvbj1yZXNvdXJjZURlZmluaXRpb24+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza0NvbnRhaW5lclByb3BlcnRpZXMuaHRtbCcsJzxkaXYgY2xhc3M9cC0yPjxkaXYgbmctcmVwZWF0PVwidGFzayBpbiBmZC5zZWxlY3RlZFRhc2tzIHRyYWNrIGJ5ICRpbmRleFwiIGNsYXNzPjxkaXYgY2xhc3M9XCJyb3cgbS0wIGJvcmRlci1ib3R0b20gcHktMlwiPjxkaXYgY2xhc3M9Y29sPjxsYWJlbCBjbGFzcz5XaWRnZXQgcmVmZXJlbmNlIChlbnRlciBvciBwYXN0ZSk8L2xhYmVsPjxidXR0b24gdHlwZT1idXR0b24gdGl0bGU9XCJQYXN0ZSB3aWRnZXQgcmVmZXJlbmNlXCIgY2xhc3M9XCJidG4gYnRuLWxpbmsgYnRuLXhzIHAtMFwiIG5nLWNsaWNrPWZkLnBhc3RlRnJvbUNsaXBib2FyZCh0YXNrKT48aSBjbGFzcz1cImZhIGZhLXBhc3RlIG1sLTFcIj48L2k+PC9idXR0b24+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9Zm9ybS1jb250cm9sIG5nLW1vZGVsPXRhc2sud2lkZ2V0SWQ+PC9kaXY+PGRpdiBjbGFzcz1jb2w+PGRpdiBuZy1mb3JtPWZvcm1UYXNrU2VsZWN0e3tmZC5QcmVzZW50YXRpb25JZCskaW5kZXh9fXt7JGluZGV4fX0gY2xhc3M+PGxhYmVsIGNsYXNzIGZvcj10YXNrSWQ+VGFzazwvbGFiZWw+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLW1vZGVsPXRhc2sudGFza0lkIG5nLWlmPWZkLnRhc2tzTG9hZGVkIHNlbGVjdGVkLWl0ZW1zPXRhc2sudGFza0lkIGlzLW11bHRpcGxlPWZhbHNlIG5hbWU9dGFza0lkIG5nLXJlcXVpcmVkPXRydWUgZHJvcGRvd24taXRlbXM9ZmQudGFza0xpc3QgZHJvcGRvd24taWQ9XCJcXCd0YXNrTGlzdFxcJyskaW5kZXhcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2Zvcm1UYXNrU2VsZWN0XFwnK2ZkLlByZXNlbnRhdGlvbklkKyRpbmRleFwiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IHRhc2tcXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBteS1hdXRvXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1mZC5SZW1vdmVUYXNrRnJvbUxpc3QoJGluZGV4KSBjbGFzcz1cImJ0biBidG4teHMgYnRuLW91dGxpbmUtZGFuZ2VyXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS10cmFzaCBtci0yXCI+PC9zcGFuPiBSZW1vdmUgdGFzazwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbXktMlwiPjxkaXYgY2xhc3M9Y29sPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9ZmQuQWRkVGFza1RvTGlzdCgpIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tb3V0bGluZS1wcmltYXJ5XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1wbHVzIG1yLTJcIj48L3NwYW4+IEFkZCBuZXcgdGFzazwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byB0ZXh0LXJpZ2h0XCI+PHNwYW4gbmctaWY9ZmQuc2hvd0NvbmZpcm1lZCBjbGFzcz1cIm1yLTIgdGV4dC1wcmltYXJ5IGJvbGRcIj5Db25maXJtZWQhPC9zcGFuPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLkNvbmZpcm1UYXNrTGlzdCgpIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tb3V0bGluZS1zdWNjZXNzXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1jaGVjayBtci0yXCI+PC9zcGFuPiBDb25maXJtPC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza0RhdGFzZXRMaXN0Lmh0bWwnLCc8ZGl2IGt0dGFza2RhdGFzZXRsaXN0IGlkPWRsaXN0LXt7ZmQuVXVpZFJlZn19IGNsYXNzPXdpZGdldC1oZWFkIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1hY3RpdmUgbS0yIHNoYWRvd1xcJzpmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU+MCxcXCdtLTAgYm9yZGVyLTBcXCc6KGZkLlJlbGF0ZWQ9PW51bGwgfHwgZmQuUmVsYXRlZD09dW5kZWZpbmVkKSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MX1cIj48ZGl2IGNsYXNzPVwicm93IG0tMCBwLTAgYmctbGlnaHRcIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtaGVhZC1hY3RpdmVcXCc6ZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPjAsXFwnYmctbGlnaHRcXCc6ZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wfVwiIG5nLWlmPVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTFcIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wIGJnLWdyYXktMTAwXCI+PGkgY2xhc3M9XCJmYSBmYS1saXN0IG14LTJcIj48L2k+PGxhYmVsPlJlc291cmNlIGxpc3QgKHt7ZmQuUHJlc2VudGF0aW9uSWR9fSk8L2xhYmVsPiA8YSBocmVmIHRpdGxlPXNvcnQgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LXByb3BcXCc6ZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wIHx8IGZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkfVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIHt7Z3JpZFR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIHdpZGdldC1wcm9wXCI+PGkgY2xhc3M9XCJ7e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZSBmYXMgZmEtZ3JpcC12ZXJ0aWNhbFwiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LXJpZ2h0IG15LWF1dG9cIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwiZmQubG9jYWxWYXJzLnNob3dQcm9wZXJ0aWVzKDEsZmFsc2UsXFwnYmFzaWNcXCcpXCIgbmctY2xhc3M9XCJ7XFwnYnRuLXdhcm5pbmdcXCc6ZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT1cXCdcXCcgJiYgZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT11bmRlZmluZWQsIFxcJ2J0bi1vdXRsaW5lLXByaW1hcnkgbm8tYm9yZGVyXFwnOmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZD09XFwnXFwnIHx8IGZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZD09dW5kZWZpbmVkfVwiIGNsYXNzPVwiYnRuIGJ0bi14c1wiPjxzcGFuIG5nLWlmPVwiZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT1cXCdcXCcgJiYgZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT11bmRlZmluZWRcIj57e2ZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZH19PC9zcGFuPiA8c3BhbiBuZy1pZj1cImZkLmxvY2FsVmFycy5sb2FkaW5nUGFyYW1zICYmICFmZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWRcIj5Mb2FkaW5nIHt7ZmQuUGFyYW1ldGVycy5TZWxlY3RlZFJlc291cmNlVHlwZX19Li4uPC9zcGFuPiA8c3BhbiBuZy1pZj1cIiFmZC5sb2NhbFZhcnMucHVibGlzaGVkTG9hZGVkICYmICFmZC5sb2NhbFZhcnMubG9hZGluZ1BhcmFtcyAmJiBmZC5QYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlICYmIChmZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQ9PVxcJ1xcJyB8fCBmZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQ9PXVuZGVmaW5lZClcIj5TZWxlY3Qge3tmZC5QYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlfX08L3NwYW4+IDxzcGFuIG5nLWlmPVwiIWZkLlBhcmFtZXRlcnMuU2VsZWN0ZWRSZXNvdXJjZVR5cGUgJiYgKGZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZD09XFwnXFwnIHx8IGZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZD09dW5kZWZpbmVkKVwiPlNlbGVjdCByZXNvdXJjZTwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCIgbmctaWY9XCJmZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPVxcJ1xcJyAmJiBmZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPXVuZGVmaW5lZFwiPjxhIGhyZWYgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCBidG4tc21cIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtcHJvcFxcJzpmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT11bmRlZmluZWR9XCIgdGl0bGU9XCJTaG93L2hpZGUgcHJvcGVydGllc1wiIG5nLWNsaWNrPVwiZmQubG9jYWxWYXJzLnNob3dQcm9wZXJ0aWVzKDIsdHJ1ZSxcXCdiYXNpY1xcJylcIj48aSBjbGFzcz1cImZhcyBmYS1jb2dcIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48ZGl2IGt0LXRhc2stZHJvcGRvd24+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MVwiIGZkPWZkIGxvY2FsLXZhcnM9ZmQubG9jYWxWYXJzIGt0LWRhdGFzZXQtbWFwcGVyPjwvZGl2PjxkaXYgbmctaWY9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSE9MlwiIG5nLWNsYXNzPVwie1xcJ3AtMlxcJzpmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTIgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTF9XCI+PGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkIG1iLTIgZm9ybS1ob3Jpem9udGFsXCI+PGRpdiBuZy1zaG93PVwiKGZkLlNob3dTZWFyY2hGb3JtICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yKSB8fCAoZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0yICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xKVwiIGNsYXNzPjxkaXYgY2xhc3M9cC0wPjxkaXYgY2xhc3M9XCJyb3cgbS0wIHAtMSBiZy1ncmF5LTUwIHJvdW5kZWQgdGV4dC1wcmltYXJ5XCI+PGRpdiBjbGFzcz1cImNvbCBwLTAgbXktYXV0byB0ZXh0LWRhcmtcIj48aSBjbGFzcz1cImZhIGZhLXNlYXJjaFwiPjwvaT4gPHNwYW4gY2xhc3M9bWwtMiBuZy1iaW5kPVwiZmQuU2VhcmNoVGV4dCB8fCBcXCdTZWFyY2ggZm9ybVxcJ1wiPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCIgbmctaWY9XCJmZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPVxcJ1xcJyAmJiBmZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPXVuZGVmaW5lZFwiPjxhIGhyZWYgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCBidG4tc21cIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtcHJvcFxcJzpmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT11bmRlZmluZWR9XCIgdGl0bGU9XCJTaG93L2hpZGUgc2VhcmNoIGZvcm0gcHJvcGVydGllc1wiIG5nLWNsaWNrPVwiZmQubG9jYWxWYXJzLnNob3dQcm9wZXJ0aWVzKDIsdHJ1ZSxcXCdmb3JtXFwnKVwiPjxpIGNsYXNzPVwiZmFzIGZhLWNvZ1wiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHB4LTAgbXktYXV0b1wiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4teHMgYm9yZGVyLTBcIiBkYXRhLXRvZ2dsZT1jb2xsYXBzZSBkYXRhLXRhcmdldD0jaXNDb2xsYXBzZUlkRm9ybXt7OjpmZC5QcmVzZW50YXRpb25JZH19IGFyaWEtZXhwYW5kZWQ9e3tmZC5sb2NhbFZhcnMuaXNDb2xsYXBzZWR9fSBhcmlhLWNvbnRyb2xzPWlzQ29sbGFwc2VkSWR7ezo6ZmQuaWR9fSBuZy1jbGljaz1cImZkLmxvY2FsVmFycy5pc0NvbGxhcHNlZCA9ICFmZC5sb2NhbFZhcnMuaXNDb2xsYXBzZWRcIj48c3BhbiBuZy1jbGFzcz1cIntcXCdmYSBmYS1jaGV2cm9uLXVwXFwnOiBmZC5sb2NhbFZhcnMuaXNDb2xsYXBzZWQsXFwnZmEgZmEtY2hldnJvbi1kb3duXFwnOiAhZmQubG9jYWxWYXJzLmlzQ29sbGFwc2VkIH1cIj48L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb2xsYXBzZSBpZD1pc0NvbGxhcHNlSWRGb3Jte3s6OmZkLlByZXNlbnRhdGlvbklkfX0+PGRpdiBuZy1pZj1cIiFmZC5sb2NhbFZhcnMuZm9ybUxvYWRlZCAmJiBmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTJcIiBjbGFzcz1cInJvdyBtLTAgYm9yZGVyLTBcIiBrdC1wcm9jZXNzaW5nLWFuaW1hdGlvbi10aW1lbGluZSBhbmltYXRpb24tdHlwZT1mb3JtIHNob3ctbXNnPWZhbHNlIG1lc3NhZ2U9XCJMb2FkaW5nIGZvcm0uLi5cIj48L2Rpdj48ZGl2IG5nLWlmPVwiZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0yIHx8IChmZC5TaG93U2VhcmNoRm9ybSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MiAmJiBmZC5sb2NhbFZhcnMuZm9ybUxvYWRlZCAmJiBmZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRlZClcIj48ZGl2IGNsYXNzPVwibXQtMSBwLTIgdGV4dC1wcmltYXJ5XCIgbmctaWY9XCJmZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0Lmxlbmd0aD09MFwiPjxzcGFuIGNsYXNzPW1yLTM+Rm9ybSBpcyBub3QgZGVmaW5lZCBvciBlbXB0eTwvc3Bhbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIHRpdGxlPUNvbmZpcm0gbmctY2xpY2s9ZmQubG9jYWxWYXJzLmdldEZvcm1SZXNvdXJjZU9yaWdpbmFsKCk+UmVsb2FkIGRhdGFzZXQgZnJvbSA8aSBjbGFzcz1cIm1sLTIgZmFzIGZhLXN5bmNcIj48L2k+PC9idXR0b24+PC9kaXY+PGRpdiBrdC1ncmlkIGdyaWQtdHlwZT1mZC5sb2NhbFZhcnMuZ3JpZHN0ZXJUeXBlIHNob3ctc2VhcmNoLWZpbHRlcnM9ZmQubG9jYWxWYXJzLnNob3dTZWFyY2hGaWx0ZXJzIHJlc291cmNlLWZvcm0tbG9hZGVkPWZkLmxvY2FsVmFycy5mb3JtTG9hZGVkIHBhcmVudC1yZXNvdXJjZS1kZWYtaWQ9ZmQuUmVsYXRlZCByZXNvdXJjZS1yZWNvcmQtaWQ9ZmQubG9jYWxWYXJzLmRhdGFzZXRSZWNvcmRJZCByZXNvdXJjZS1kZWZpbml0aW9uPXJlc291cmNlRGVmaW5pdGlvbiBmb3JtLXBhcmFtcz1mZC5sb2NhbFZhcnMuZm9ybVBhcmFtcyBmb3JtLXBhcmFtcy1wYXJlbnQ9Zm9ybVBhcmFtcyBmb3JtLWRhdGE9ZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLmZvcm1EYXRhIHBhcmVudD1mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMgYWxsLWNvbHVtbnM9ZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzIHBhcmFtcz1mZC5QYXJhbWV0ZXJzIGNsYXNzPWt0R3JpZD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBteS0yXCIgbmctc2hvdz1cImZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yIHx8IChmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTIgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEpXCI+PGRpdiBuZy1pZj1mZC5QYXJhbWV0ZXJzLlNob3dHZXREYXRhQnV0dG9uIGNsYXNzPVwiY29sLWF1dG8gbXktYXV0byB7e2ZkLlBhcmFtZXRlcnMuc2VhcmNoQnV0dG9uT3V0ZXJDbGFzc319XCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiBuZy1jbGljaz1mZC5sb2NhbFZhcnMuR2V0RGF0YXNldERhdGFDbGljaygpPjxpIG5nLWlmPVwiKGZkLlNob3dTZWFyY2hGb3JtICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yKSB8fCAoZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0yICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xKVwiIGNsYXNzPXt7ZmQuUGFyYW1ldGVycy5zZWFyY2hCdXR0b25JY29ufX0+PC9pPiA8c3BhbiBuZy1pZj1cIihmZC5TaG93U2VhcmNoRm9ybSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MikgfHwgKGZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MiAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSlcIj57e2ZkLlBhcmFtZXRlcnNMYW5nLkdldERhdGFCdG5MYWJlbCB8fCBcXCdTZWFyY2hcXCd9fTwvc3Bhbj4gPGkgbmctaWY9XCIoIWZkLlNob3dTZWFyY2hGb3JtICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yKVwiIGNsYXNzPVwiZmFzIGZhLXN5bmNcIj48L2k+IDxzcGFuIG5nLWlmPVwiKCFmZC5TaG93U2VhcmNoRm9ybSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MilcIj57e2ZkLlBhcmFtZXRlcnNMYW5nLkdldERhdGFCdG5MYWJlbCB8fCBcXCdTZWFyY2hcXCd9fTwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwiZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0yICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xXCIgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBtYi0yXCI+PGRpdiBjbGFzcz1wLTA+PGRpdiBjbGFzcz1cInJvdyBtLTAgcC0xIGJnLWdyYXktNTAgcm91bmRlZCB0ZXh0LXByaW1hcnlcIj48ZGl2IGNsYXNzPVwiY29sIHAtMCBteS1hdXRvIHRleHQtZGFya1wiPjxpIGNsYXNzPVwiZmEgZmEtY29nc1wiPjwvaT4gPHNwYW4gY2xhc3M9bWwtMj5BY3Rpb25zPC9zcGFuPjwvZGl2PjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1saWdodCBtLTJcIiBkYXRhLXRvZ2dsZT1tb2RhbCBkYXRhLXRhcmdldD0jaW5pdGlhdGVUYXNrTW9kYWx7e2ZkLlByZXNlbnRhdGlvbklkfX0+PHNwYW4+TWFuYWdlIGFjdGlvbnMgPHNwYW4gbmctaWY9ZmQuRm9ybURlZi5sZW5ndGggY2xhc3M9XCJiYWRnZSBiYWRnZS1kYXJrIG1sLTEgbXQtMVwiPnt7ZmQuRm9ybURlZi5sZW5ndGh9fTwvc3Bhbj48L3NwYW4+PC9idXR0b24+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHB4LTAgbXktYXV0b1wiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4teHMgYm9yZGVyLTBcIiBkYXRhLXRvZ2dsZT1jb2xsYXBzZSBkYXRhLXRhcmdldD0jaXNDb2xsYXBzZWRBY3Rpb25ze3s6OmZkLlByZXNlbnRhdGlvbklkfX0gYXJpYS1leHBhbmRlZD17e2ZkLmxvY2FsVmFycy5pc0NvbGxhcHNlZEFjdGlvbnN9fSBhcmlhLWNvbnRyb2xzPWlzQ29sbGFwc2VkQWN0aW9uc3t7OjpmZC5pZH19IG5nLWNsaWNrPVwiZmQubG9jYWxWYXJzLmlzQ29sbGFwc2VkQWN0aW9ucyA9ICFmZC5sb2NhbFZhcnMuaXNDb2xsYXBzZWRBY3Rpb25zXCI+PHNwYW4gbmctY2xhc3M9XCJ7XFwnZmEgZmEtY2hldnJvbi1kb3duXFwnOiAhZmQubG9jYWxWYXJzLmlzQ29sbGFwc2VkQWN0aW9ucyxcXCdmYSBmYS1jaGV2cm9uLXVwXFwnOiBmZC5sb2NhbFZhcnMuaXNDb2xsYXBzZWRBY3Rpb25zIH1cIj48L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb2xsYXBzZSBpZD1pc0NvbGxhcHNlZEFjdGlvbnN7ezo6ZmQuUHJlc2VudGF0aW9uSWR9fT48ZGl2IGNsYXNzPVwiY29sLTI0IHB0LTQgbWItMSBteS1hdXRvIGJvbGRcIj48bGFiZWw+RGVmaW5lZCBhY3Rpb25zOjwvbGFiZWw+PGRpdiBuZy1pZj1cImZkLkZvcm1EZWYubGVuZ3RoPjBcIiBjbGFzcz1cImNvbCBwLTIgbXktMiBiZy1ncmF5LTIwIGJvcmRlci1ib3R0b21cIiBzdHlsZT1cImJvcmRlcjogMnB4IGRhc2hlZCAjYjFiM2I0ICFpbXBvcnRhbnQ7cG9zaXRpb246IHN0aWNreTttaW4taGVpZ2h0OiA0NXB4O3RvcDogNDRweDt6LWluZGV4OiAxO1wiPjxidXR0b24gbmctcmVwZWF0PVwicmVzb3VyY2UgaW4gZmQuRm9ybURlZlwiIHR5cGU9YnV0dG9uIGRhdGEtdG9nZ2xlPXRvb2x0aXAgZGF0YS1wbGFjZW1lbnQ9dG9wIHRpdGxlPVwiUmVzb3VyY2UgaWQ6IHt7cmVzb3VyY2UuaWR9fVwiIGNsYXNzPVwiYnRuIHt7cmVzb3VyY2Uuc2l6ZX19IHt7cmVzb3VyY2UuYnRuQ2xhc3N9fVwiIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpyZXNvdXJjZS5pZD09bG9jYWxWYXJzLnJlc291cmNlSXRlbS5pZH1cIj48aSBjbGFzcz17e3Jlc291cmNlLmljb259fSBuZy1jbGFzcz1cIntcXCdtci0yIG1iLTJcXCc6cmVzb3VyY2UuaWNvbiE9dW5kZWZpbmVkICYmIHJlc291cmNlLmljb24hPW51bGwgJiYgcmVzb3VyY2UuaWNvbiE9XFwnXFwnfVwiPjwvaT4ge3tyZXNvdXJjZS5idG5MYWJlbH19PC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm0tMSBteS0zIHJvd1wiPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBtLTEgcC0xIG15LWF1dG8gYm9sZFwiPjxsYWJlbD5BY3Rpb24gcG9zaXRpb246PC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTMgcC0xXCI+PHNlbGVjdCBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkFjdGlvblBvc2l0aW9uIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIGlkPXNldEZvbnRVbml0c0xhYmVsPjxvcHRpb24+YWJvdmU8L29wdGlvbj48b3B0aW9uPmlubGluZTwvb3B0aW9uPjwvc2VsZWN0PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmZC5QYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlPT1cXCdmaWxlXFwnXCIgY2xhc3M9XCJyb3cgbXQtNFwiPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBteS5hdXRvXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1pZj1cImZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW1zLmxlbmd0aD4wICYmICFmZC5QYXJhbWV0ZXJzLk5vUHJldmlld1wiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi14c1wiIG5nLWNsaWNrPVwiZmQubG9jYWxWYXJzLnByZXZpZXdGaWxlKGZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZFJlc291cmNlUmVjb3JkW2ZkLmxvY2FsVmFycy5UYWJsZVByZWZpeCtcXCdfaWRcXCddLGZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZFJlc291cmNlUmVjb3JkW2ZkLmxvY2FsVmFycy5UYWJsZVByZWZpeCtcXCdfRmlsZU5hbWVcXCddLGZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZFJlc291cmNlUmVjb3JkW2ZkLmxvY2FsVmFycy5UYWJsZVByZWZpeCtcXCdfRmlsZVR5cGVcXCddKVwiPjxpIGNsYXNzPVwiZmEgZmEtc2VhcmNoXCI+PC9pPiA8c3BhbiBuZy1pZj1mZC5QYXJhbWV0ZXJzTGFuZy5QcmV2aWV3TGFiZWw+e3tmZC5QYXJhbWV0ZXJzTGFuZy5QcmV2aWV3TGFiZWx9fTwvc3Bhbj4gPHNwYW4gbmctaWY9IWZkLlBhcmFtZXRlcnNMYW5nLlByZXZpZXdMYWJlbD5QcmV2aWV3IGZpbGU8L3NwYW4+PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gbmctaWY9XCJmZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuc2VsZWN0ZWRJdGVtcy5sZW5ndGg+MCAmJiAhZmQuUGFyYW1ldGVycy5Ob0Rvd25sb2FkXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzXCIgbmctY2xpY2s9XCJmZC5sb2NhbFZhcnMuZG93bmxvYWRGaWxlKGZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZFJlc291cmNlUmVjb3JkW2ZkLmxvY2FsVmFycy5UYWJsZVByZWZpeCtcXCdfaWRcXCddLGZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZFJlc291cmNlUmVjb3JkW2ZkLmxvY2FsVmFycy5UYWJsZVByZWZpeCtcXCdfRmlsZU5hbWVcXCddKVwiPjxpIGNsYXNzPVwiZmEgZmEtZG93bmxvYWRcIj48L2k+IDxzcGFuIG5nLWlmPWZkLlBhcmFtZXRlcnNMYW5nLkRvd25sb2FkTGFiZWw+e3tmZC5QYXJhbWV0ZXJzTGFuZy5Eb3dubG9hZExhYmVsfX08L3NwYW4+IDxzcGFuIG5nLWlmPSFmZC5QYXJhbWV0ZXJzTGFuZy5Eb3dubG9hZExhYmVsPkRvd25sb2FkIGZpbGU8L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZSE9XFwnZHJvcGRvd25cXCdcIiBuZy1zaG93PVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTIgfHwgKGZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MiAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSlcIiBjbGFzcz1cImJvcmRlciByb3VuZGVkXCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgcC0xIGJnLWdyYXktNTAgcm91bmRlZCB0ZXh0LXByaW1hcnlcIj48ZGl2IGNsYXNzPVwiY29sIHAtMCBteS1hdXRvIHRleHQtZGFya1wiPjxpIGNsYXNzPVwiZmEgZmEtZGF0YWJhc2VcIj48L2k+IDxzcGFuIGNsYXNzPW1sLTI+RGF0YTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcHgtMFwiIG5nLWlmPVwiZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT1cXCdcXCcgJiYgZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT11bmRlZmluZWRcIj48YSBocmVmIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYm9yZGVyLTAgYnRuLXNtXCIgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LXByb3BcXCc6ZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wIHx8IGZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkfVwiIHRpdGxlPVwiU2hvdy9oaWRlIHRhYmxlIHByb3BlcnRpZXNcIiBuZy1jbGljaz1cImZkLmxvY2FsVmFycy5zaG93UHJvcGVydGllcygyLHRydWUsXFwndGFibGVcXCcpXCI+PGkgY2xhc3M9XCJmYXMgZmEtY29nXCI+PC9pPjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcHgtMCBteS1hdXRvXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi14cyBib3JkZXItMFwiIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIGRhdGEtdGFyZ2V0PSNpc0NvbGxhcHNlSWREYXRhe3s6OmZkLlByZXNlbnRhdGlvbklkfX0gYXJpYS1leHBhbmRlZD17e2ZkLmxvY2FsVmFycy5pc0NvbGxhcHNlZERhdGF9fSBhcmlhLWNvbnRyb2xzPWlzQ29sbGFwc2VkSWREYXRhe3s6OmZkLmlkfX0gbmctY2xpY2s9XCJmZC5sb2NhbFZhcnMuaXNDb2xsYXBzZWREYXRhID0gIWZkLmxvY2FsVmFycy5pc0NvbGxhcHNlZERhdGFcIj48c3BhbiBuZy1jbGFzcz1cIntcXCdmYSBmYS1jaGV2cm9uLWRvd25cXCc6ICFmZC5sb2NhbFZhcnMuaXNDb2xsYXBzZWREYXRhLFxcJ2ZhIGZhLWNoZXZyb24tdXBcXCc6IGZkLmxvY2FsVmFycy5pc0NvbGxhcHNlZERhdGEgfVwiPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbGxhcHNlIGlkPWlzQ29sbGFwc2VJZERhdGF7ezo6ZmQuUHJlc2VudGF0aW9uSWR9fT48ZGl2IGNsYXNzPVwicm93IG0tMlwiPjxkaXYgY2xhc3M9XCJjb2wgdGV4dC1jZW50ZXJcIiBuZy1pZj1cImZkLmxvY2FsVmFycy5mb3JtRGVmaW5pdGlvbiAmJiBmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTIgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZmQuR3JpZFN0YXRlLnJlbGF0ZWRSZXNvdXJjZXMubGVuZ3RoXCI+PGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwiZmQubG9jYWxWYXJzLnNob3dSZWxhdGVkUmVzb3VyY2VzPSFmZC5sb2NhbFZhcnMuc2hvd1JlbGF0ZWRSZXNvdXJjZXNcIj48aSBjbGFzcz1cImZhcyBmYS1oaWVyYXJjaHkgbXItMlwiPjwvaT4gRGVmaW5lIHJlbGF0aW9uc2hpcHMgJiBjb2x1bW5zIDxpIG5nLWlmPSFmZC5sb2NhbFZhcnMuc2hvd1JlbGF0ZWRSZXNvdXJjZXMgY2xhc3M9XCJmYXMgZmEtcGx1cyBtbC0yXCI+PC9pPiA8aSBuZy1pZj1mZC5sb2NhbFZhcnMuc2hvd1JlbGF0ZWRSZXNvdXJjZXMgY2xhc3M9XCJmYXMgZmEtbWludXMgbWwtMlwiPjwvaT48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwiZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlIT1cXCdkcm9wZG93blxcJyAmJiBmZC5sb2NhbFZhcnMuc2hvd1JlbGF0ZWRSZXNvdXJjZXNcIiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IG5nLXJlcGVhdD1cInJlbGF0ZWQgaW4gZmQuR3JpZFN0YXRlLnJlbGF0ZWRSZXNvdXJjZXNcIiBuZy1pbml0PVwicmVsYXRlZEluZGV4PSRpbmRleFwiIGNsYXNzPWNvbC1sZy02PjxkaXYgY2xhc3M9XCJyb3VuZGVkIGJvcmRlciBiZy13aGl0ZSBwLTIgbXktMlwiPjxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBib2xkXCIgbmctY2xhc3M9XCJ7XFwnYm9yZGVyLWJvdHRvbSBiZy1ncmF5LTUwXFwnOnJlbGF0ZWQuU2VsZWN0ZWR9XCI+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsPnt7cmVsYXRlZC5uYW1lfX0gKHt7cmVsYXRlZC5pZH19KSA8aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtbC0yXCIgbmctY2xpY2s9ZmQubG9jYWxWYXJzLlJlbGF0ZWRSZXNvdXJjZUNvbHVtbnMoJGluZGV4KSBuZy1tb2RlbD1yZWxhdGVkLlNlbGVjdGVkPjwvbGFiZWw+PC9kaXY+PGRpdiBuZy1pZj1cInJlbGF0ZWQuU2VsZWN0ZWQgJiYgZmQubG9jYWxWYXJzLnJlbGF0ZWRSZXNvdXJjZXNQdWJsaXNoZWRMaXN0W3JlbGF0ZWQuaWRdLmxlbmd0aFwiPjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbD48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCIgbmctbW9kZWw9cmVsYXRlZC5TZWxlY3RWZXJzaW9uRGlyZWN0PiBTZWxlY3Qge3tyZWxhdGVkLnJlc291cmNlVHlwZX19IHZlcnNpb24gbWFudWFsbHkgKGlmIG5vdCBjaGVja2VkIGxhdGVzdCBwdWJsaXNoZWQgdmVyc2lvbiB3aWxsIGJlIHVzZWQpPC9sYWJlbD48L2Rpdj48ZGl2IG5nLWlmPXJlbGF0ZWQuU2VsZWN0VmVyc2lvbkRpcmVjdD48ZGl2IGNsYXNzPW10LTI+PHNwYW4gY2xhc3M9XCJoNiB0ZXh0LWRhcmtcIj5TZWxlY3QgdmVyc2lvbjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPW10LTIgbmctZm9ybT1pbm5lckZvcm1WZXJzaW9ue3tyZWxhdGVkLmlkfX0+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLWlmPWZkLmxvY2FsVmFycy5yZWxhdGVkUmVzb3VyY2VzUHVibGlzaGVkTGlzdFtyZWxhdGVkLmlkXS5sZW5ndGggaXMtbXVsdGlwbGU9ZmFsc2UgbmctbW9kZWw9cmVsYXRlZC5zZWxlY3RlZFB1Ymxpc2hlZFJlc291cmNlIHNlbGVjdGVkLWl0ZW1zPXJlbGF0ZWQuc2VsZWN0ZWRQdWJsaXNoZWRSZXNvdXJjZSByZXF1aXJlZC1maWVsZD10cnVlIGRyb3Bkb3duLWl0ZW1zPWZkLmxvY2FsVmFycy5yZWxhdGVkUmVzb3VyY2VzUHVibGlzaGVkTGlzdFtyZWxhdGVkLmlkXSBkcm9wZG93bi1pZD1cIlxcJ3ZlcnNpb25cXCcrZmQuTmFtZStmZC5JdGVtSWRcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2lubmVyRm9ybVZlcnNpb25cXCcrcmVsYXRlZC5pZFwiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IHZlcnNpb25cXCdcIiBvbi1zZWxlY3QtZm49ZmQubG9jYWxWYXJzLm9uU2VsZWN0Q29sdW1uc1ZlcnNpb25DYWxsYmFjayhpdGVtLG1vZGVsKT48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjxkaXYgbmctaWY9XCJmZC5sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VMaXN0Lmxlbmd0aD09MFwiPk5vIHB1Ymxpc2hlZCB7e2ZkLlBhcmFtZXRlcnMuU2VsZWN0ZWRSZXNvdXJjZVR5cGV9fXMgITwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJyZWxhdGVkLlNlbGVjdGVkICYmIGZkLmxvY2FsVmFycy5yZWxhdGVkUmVzb3VyY2VzUHVibGlzaGVkTGlzdFtyZWxhdGVkLmlkXS5sZW5ndGhcIj48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWw+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5nLW1vZGVsPXJlbGF0ZWQuSXNPdXRlckpvaW4+IE91dGVyIGpvaW4gKHNlbGVjdCByZWNvcmQgd2l0aG91dCByZWxhdGlvbnNoaXApPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPXJvdyBzdHlsZT1cInRvcDowO21hcmdpbi1sZWZ0Oi0xcmVtICFpbXBvcnRhbnRcIiBuZy1pZj1yZWxhdGVkLkxvYWRpbmdDb2x1bW5zIGt0LXByb2Nlc3NpbmctYW5pbWF0aW9uIHNob3ctbXNnPXRydWUgc2hvdy1hcy1jYXJkPWZhbHNlIG1lc3NhZ2U9XCJMb2FkaW5nIHt7cmVsYXRlZC5yZXNvdXJjZVR5cGV9fSBjb2x1bW5zLi4uXCI+PC9kaXY+PGRpdiBuZy1pZj1mZC5sb2NhbFZhcnMucmVsYXRlZFJlc291cmNlc0NvbHVtbnNbcmVsYXRlZC5pZF0ubGVuZ3RoIGNsYXNzPVwicHgtNCBteS0yIHRleHQtZGFyayBib3JkZXItYm90dG9tIHRleHQtY2VudGVyXCI+e3tyZWxhdGVkLnJlc291cmNlVHlwZX19IGNvbHVtbnM8L2Rpdj48ZGl2IG5nLXJlcGVhdD1cImNvbCBpbiBmZC5sb2NhbFZhcnMucmVsYXRlZFJlc291cmNlc0NvbHVtbnNbcmVsYXRlZC5pZF1cIiBjbGFzcz1wLTI+PGRpdj48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWw+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5nLW1vZGVsPWNvbC5zZWxlY3RlZCBuZy1jbGljaz1mZC5sb2NhbFZhcnMuYWRkUmVtb3ZlQ29sdW1uKGNvbCxyZWxhdGVkLmlkKT4ge3tjb2wuZGlzcGxheU5hbWV9fSAoe3tjb2wubmFtZX19KTwvbGFiZWw+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1wLTI+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYkF1dG9TZWFyY2h7e2ZkLlV1aWRSZWZ9fT48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCIgbmFtZT1jYkF1dG9TZWFyY2h7e2ZkLlV1aWRSZWZ9fSBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlVzZVN1YlF1ZXJ5IG5nLWNoZWNrZWQ9ZmQuUGFyYW1ldGVycy5Vc2VTdWJRdWVyeT5Vc2Ugc3VicXVlcnkgdG8gZmlsdGVyIHJlY29yZHM8L2xhYmVsPjxkaXYgbmctaWY9ZmQuUGFyYW1ldGVycy5Vc2VTdWJRdWVyeT48ZGl2IGt0LXJlc291cmNlLXNlbGVjdG9yIHBhcmFtZXRlcnM9ZmQuUGFyYW1ldGVycy5TdWJRdWVyeSByZXNvdXJjZS10eXBlcy1saXN0PWZkLmxvY2FsVmFycy5yZXNvdXJjZVR5cGVzTGlzdCBzZWxlY3RlZC1yZXNvdXJjZT1mZC5QYXJhbWV0ZXJzLlN1YlF1ZXJ5LlNlbGVjdGVkUmVzb3VyY2U+PC9kaXY+PGRpdiBuZy1pZj1mZC5QYXJhbWV0ZXJzLlN1YlF1ZXJ5LlNlbGVjdGVkUmVzb3VyY2U+PGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1mZC5sb2NhbFZhcnMubG9hZFN1YnF1ZXJ5Rm9ybSgpPkxvYWQgZm9ybTwvYnV0dG9uPjwvZGl2PjxkaXYgbmctaWY9XCJmZC5QYXJhbWV0ZXJzLlN1YlF1ZXJ5LlNlbGVjdGVkUmVzb3VyY2UgJiYgZmQubG9jYWxWYXJzLnN1YnF1ZXJ5Rm9ybUxvYWRlZFwiPjxkaXYgY2xhc3M9cm93PjxkaXYgY2xhc3M9Y29sLTEwPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5NYWluIGRhdGFzZXQgZmllbGQ8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuU3ViUXVlcnkuTWFpbkRhdGFzZXRGaWVsZD48L2Rpdj48ZGl2IGNsYXNzPWNvbC0xMD48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+U3VicXVlcnkgZmllbGQ8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuU3ViUXVlcnkuU3ViUXVlcnlGaWVsZD48L2Rpdj48ZGl2IGNsYXNzPWNvbC00PjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5PcGVyYXRvcjwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5TdWJRdWVyeS5TdWJRdWVyeU9wZXJhdG9yPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJtdC0xIHAtMiB0ZXh0LXByaW1hcnlcIiBuZy1pZj1cImZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQubGVuZ3RoPT0wXCI+PHNwYW4gY2xhc3M9bXItMz5Gb3JtIGlzIG5vdCBkZWZpbmVkIG9yIGVtcHR5PC9zcGFuPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgdGl0bGU9Q29uZmlybSBuZy1jbGljaz1mZC5sb2NhbFZhcnMuZ2V0Rm9ybVJlc291cmNlT3JpZ2luYWwoKT5SZWxvYWQgZGF0YXNldCBmcm9tIDxpIGNsYXNzPVwibWwtMiBmYXMgZmEtc3luY1wiPjwvaT48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwibXktNCBoNiB0ZXh0LWNlbnRlciBib3JkZXItYm90dG9tXCI+U3VicXVlcnkgZm9ybTwvZGl2PjxkaXYga3QtZ3JpZCBncmlkLXR5cGU9XCJcXCdkYXRhc2V0XFwnXCIgc2hvdy1zZWFyY2gtZmlsdGVycz10cnVlIHJlc291cmNlLWZvcm0tbG9hZGVkPWZkLmxvY2FsVmFycy5zdWJxdWVyeUZvcm1Mb2FkZWQgcGFyZW50LXJlc291cmNlLWRlZi1pZD1mZC5QYXJhbWF0ZXJzLlN1YlF1ZXJ5LlJlc291cmNlRGVmSWQgcmVzb3VyY2UtcmVjb3JkLWlkPTAgcmVzb3VyY2UtZGVmaW5pdGlvbj1mZC5sb2NhbFZhcnMuc3FSZXNvdXJjZURlZmluaXRpb24gZm9ybS1wYXJhbXM9ZmQubG9jYWxWYXJzLnNxRm9ybVBhcmFtcyBmb3JtLWRhdGE9ZmQuUGFyYW1ldGVycy5TdWJRdWVyeS5mb3JtRGF0YSBmb3JtLXBhcmFtcy1wYXJlbnQ9ZmQubG9jYWxWYXJzLnNxRm9ybVBhcmFtcyBwYXJlbnQ9ZmQuUGFyYW1ldGVycy5TdWJRdWVyeS5mb3JtIGFsbC1jb2x1bW5zPWZkLlBhcmFtZXRlcnMuU3ViUXVlcnkuZm9ybSBwYXJhbXM9ZmQuUGFyYW1ldGVycyBjbGFzcz1rdEdyaWQ+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhLmxlbmd0aD09MCAmJiAhZmQubG9jYWxWYXJzLkluaXRpYWxMb2FkICYmICFmZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcgJiYgZmQubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkZWRcIiBjbGFzcz1cInRleHQtY2VudGVyIHAtNFwiPjxpIGNsYXNzPVwiZmEgZmEtZmlsZSBmYS00eCBtYi0yXCI+PC9pPjxkaXYgY2xhc3M9aDU+e3tmZC5QYXJhbWV0ZXJzTGFuZy5Ob0RhdGFNc2d9fTwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmZC5QYXJhbWV0ZXJzLlByZXNlbnRhdGlvblR5cGU9PVxcJ3RhYmxlXFwnIHx8IGZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZT09XFwnY2FyZFxcJ1wiIGNsYXNzPVwiYm9yZGVyLTAgbXQtMVwiIHN0eWxlPVwie3sgZmQuUGFyYW1ldGVycy5jc3NTdHlsZSB9fVwiIG5nLXNob3c9XCIoZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTIgfHwgKGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xICYmIGZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MikpXCI+PGRpdiBuZy1pZj1cImZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yIHx8IChmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTIpXCI+PGRpdiBpZD1sb2FkaW5nc2NyZWVue3tmZC5QcmVzZW50YXRpb25JZH19IG5nLXNob3c9ZmQubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nIGt0LXByb2Nlc3NpbmctYW5pbWF0aW9uLXRpbWVsaW5lIGFuaW1hdGlvbi10eXBlPVwiXFwndGFibGVcXCdcIiBzaG93LW1zZz1mZC5QYXJhbWV0ZXJzLlNob3dMb2FkaW5nTWVzc2FnZSBtZXNzYWdlPXt7ZmQuUGFyYW1ldGVycy5Mb2FkaW5nTWVzc2FnZX19PjwvZGl2PjxkaXY+PGRpdiBpZD1zbWFydFRhYmxle3tmZC5QcmVzZW50YXRpb25JZH19IGt0LXNtYXJ0LXRhYmxlIG5nLWlmPVwiZmQubG9jYWxWYXJzLmRhdGFzZXRsaXN0bGlua2VkICYmICgoZmQubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkZWQgJiYgIWZkLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGluZyAmJiBmZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YS5sZW5ndGg+MCkgfHwgKGZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MiAmJiBmZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuY29sdW1uRGVmcy5sZW5ndGg+MCkpXCIgY2xhc3MgdXNlLXBhZ2luYXRpb249ZmQuUGFyYW1ldGVycy5Vc2VQYWdpbmF0aW9uIGhpZGUtcGFnZXI9ZmQuUGFyYW1ldGVycy5oaWRlUGFnZXIgcGFyYW1ldGVycz1mZC5QYXJhbWV0ZXJzIGZvbnQtc2l6ZT1mZC5QYXJhbWV0ZXJzLnRhYmxlLmZvbnRTaXplIGNlbGwtcGFkZGluZz1mZC5QYXJhbWV0ZXJzLnRhYmxlLmNlbGxQYWRkaW5nIGNvbHVtbi1kZWZzPWZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5jb2x1bW5EZWZzIGl0ZW1zLW9uLXBhZ2U9ZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnBhZ2VTaXplIHJvdy1zZWxlY3RlZC1jaGFuZ2U9ZmQubG9jYWxWYXJzLnJvd1NlbGVjdGlvbkNoYW5nZWQoaXRlbSkga3QtcmVmcmVzaC1kYXRhPVwiZmQubG9jYWxWYXJzLmdldERhdGFTbWFydFRhYmxlKHRhYmxlU3RhdGUsIHBhZ2VOdW1iZXIscGFnZVNpemUpXCIgaW5pdGlhbC1wYWdlPWZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5jdXJyZW50UGFnZSBncmlkLWRhdGE9ZmQubG9jYWxWYXJzLmdyaWREYXRhKCkga3QtcHJvY2Vzcy1hY3Rpb249ZmQubG9jYWxWYXJzLnByb2Nlc3NUYWJsZUFjdGlvbihpdGVtLGFjdGlvbklkKT48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwiZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlPT1cXCdjYXJkXFwnXCI+PGRpdiBjbGFzcz1cImJvcmRlciBtLTMgc2hhZG93LXNtXCI+PGRpdiBjbGFzcz1cIm10LTEgcC0yIHRleHQtcHJpbWFyeVwiIG5nLWlmPVwiZmQubG9jYWxWYXJzLmNhcmRMYXlvdXRMb2FkZWQgJiYgZmQubG9jYWxWYXJzLmRhc2hib2FyZENhcmQud2lkZ2V0cy5sYXlvdXQubGVuZ3RoPT0wXCI+PHNwYW4gY2xhc3M9bXItMz5DYXJkIGxheW91dCBpcyBub3QgZGVmaW5lZCBvciBlbXB0eTwvc3Bhbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIHRpdGxlPUNvbmZpcm0gbmctY2xpY2s9ZmQubG9jYWxWYXJzLmdldERhdGFzZXRDYXJkTGF5b3V0T3JpZ2luYWwoKT5SZWxvYWQgZGF0YXNldCBmcm9tIDxpIGNsYXNzPVwibWwtMiBmYXMgZmEtc3luY1wiPjwvaT48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwiYm9yZGVyLWJvdHRvbSB0ZXh0LWNlbnRlciBwLTFcIj48c3BhbiBjbGFzcz1oNj5DYXJkIGxheW91dCBkZWZpbml0aW9uPC9zcGFuPjwvZGl2PjxkaXYga3QtZ3JpZCBncmlkLXR5cGU9ZmQubG9jYWxWYXJzLmdyaWRzdGVyVHlwZSBzaG93LXNlYXJjaC1maWx0ZXJzPWZkLmxvY2FsVmFycy5zaG93U2VhcmNoRmlsdGVycyByZXNvdXJjZS1mb3JtLWxvYWRlZD1mZC5sb2NhbFZhcnMuZm9ybUxvYWRlZCBwYXJlbnQtcmVzb3VyY2UtZGVmLWlkIHJlc291cmNlLXJlY29yZC1pZCByZXNvdXJjZS1kZWZpbml0aW9uPXJlc291cmNlRGVmaW5pdGlvbiBmb3JtLXBhcmFtcz1mZC5sb2NhbFZhcnMuY2FyZExheW91dFBhcmFtcyBmb3JtLXBhcmFtcy1wYXJlbnQ9Zm9ybVBhcmFtcyBmb3JtLWRhdGE9Zm9ybUNhcmREYXRhIHBhcmVudD1mZC5sb2NhbFZhcnMuZGFzaGJvYXJkQ2FyZC53aWRnZXRzIGFsbC1jb2x1bW5zPWZkLmxvY2FsVmFycy5kYXNoYm9hcmRDYXJkLndpZGdldHMgY2xhc3M9a3RHcmlkPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MlwiPjxkaXYgbmctaWY9XCJmZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YS5sZW5ndGg9PTAgJiYgIWZkLmxvY2FsVmFycy5Jbml0aWFsTG9hZCAmJiBmZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRlZFwiIGNsYXNzPVwidGV4dC1jZW50ZXIgcC00XCI+PGkgY2xhc3M9XCJmYSBmYS1maWxlIGZhLTR4IG1iLTJcIj48L2k+PGRpdiBjbGFzcz1oNT57e2ZkLlBhcmFtZXRlcnNMYW5nLk5vRGF0YU1zZ319PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm10LTEgcC0yIHRleHQtcHJpbWFyeVwiIG5nLWlmPVwiZmQubG9jYWxWYXJzLmNhcmRMYXlvdXRMb2FkZWQgJiYgZmQubG9jYWxWYXJzLmRhc2hib2FyZENhcmQud2lkZ2V0cy5sYXlvdXQubGVuZ3RoPT0wXCI+Q2FyZCBsYXlvdXQgaXMgbm90IGRlZmluZWQgb3IgZW1wdHk8L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBteC0yXCIgbmctaWY9XCJmZC5sb2NhbFZhcnMuY2FyZExheW91dExvYWRlZCAmJiBmZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YS5sZW5ndGg+MFwiPjxkaXYgY2xhc3M9XCJjb2wtNiBwLTEgc2hvdy1vbi1ob3Zlci1jb250YWluZXJcIiBuZy1jbGFzcz1cIntcXCdzZWxlY3RlZFxcJzpmZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuc2VsZWN0ZWRDYXJkSW5kZXg9PSRpbmRleH1cIiBuZy1yZXBlYXQ9XCJkYXRhUmVjIGluIGZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhIHRyYWNrIGJ5ICRpbmRleFwiPjxkaXYgY2xhc3M9XCJoLTEwMCBkYXRhc2V0LWxpc3QtY2FyZFwiIG5nLWNsYXNzPVwie1xcJ3NlbGVjdGVkXFwnOmZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZENhcmRJbmRleD09JGluZGV4fVwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpbmsgc2hvdy1vbi1ob3Zlci1pdGVtXCIgbmctY2xpY2s9ZmQubG9jYWxWYXJzLnNlbGVjdENhcmRJdGVtKCRpbmRleCk+PHNwYW4gbmctaWY9XCJmZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuc2VsZWN0ZWRDYXJkSW5kZXghPSRpbmRleFwiPlNlbGVjdDwvc3Bhbj4gPHNwYW4gbmctaWY9XCJmZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuc2VsZWN0ZWRDYXJkSW5kZXg9PSRpbmRleFwiPlVuc2VsZWN0PC9zcGFuPjwvYnV0dG9uPjxkaXYga3QtZ3JpZCBjbGFzcz1rdEdyaWQgZ3JpZC10eXBlPWZkLmxvY2FsVmFycy5ncmlkc3RlclR5cGUgc2hvdy1zZWFyY2gtZmlsdGVycz1mYWxzZSByZXNvdXJjZS1mb3JtLWxvYWRlZD1mZC5sb2NhbFZhcnMuY2FyZExheW91dExvYWRlZCBwYXJlbnQtZGF0YXNldC1kZWYtaWQgZGF0YXNldC1yZWNvcmQtaWQgcmVzb3VyY2UtZGVmaW5pdGlvbj1yZXNvdXJjZURlZmluaXRpb24gZm9ybS1wYXJhbXM9ZmQubG9jYWxWYXJzLmNhcmRMYXlvdXRQYXJhbXMgZm9ybS1wYXJhbXMtcGFyZW50PWZvcm1QYXJhbXMgZm9ybS1kYXRhPWRhdGFSZWMgcGFyZW50PWZkLmxvY2FsVmFycy5kYXNoYm9hcmRDYXJkLndpZGdldHMgYWxsLWNvbHVtbnM9ZmQubG9jYWxWYXJzLmRhc2hib2FyZENhcmQud2lkZ2V0cz48L2Rpdj48ZGl2IGNsYXNzPVwicC0xIGluaXRpYXRlLXRhc2std2lkZ2V0XCIgbmctY2xhc3M9XCJ7XFwnc2VsZWN0ZWRcXCc6ZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnNlbGVjdGVkQ2FyZEluZGV4PT0kaW5kZXh9XCI+PGRpdiBrdC1pbml0aWF0ZS10YXNrLXdpZGdldD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwiZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlPT1cXCdkcm9wZG93blxcJ1wiIGNsYXNzPW0tMT48ZGl2IGNsYXNzPW15LWF1dG8gbmctY2xhc3M9Y29sTGVuZ3RoW2ZkLkxhYmVsTGVuZ3RoLTFdPjxsYWJlbCBjbGFzcz1cIm1hcmdpbkw1IGZvcm0tY29udHJvbC1sYWJlbCBuby1ib3JkZXJcIiBmb3I9e3tmZC5OYW1lfX17e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGlubmVyRm9ybXt7OjpmZC5QcmVzZW50YXRpb25JZH19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5QcmVzZW50YXRpb25JZH19Lnt7ZmQuTmFtZX19e3tmZC5QcmVzZW50YXRpb25JZH19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17e2ZkLlByZXNlbnRhdGlvbklkfX0ue3tmZC5OYW1lfX17e2ZkLlByZXNlbnRhdGlvbklkfX0uJGludmFsaWR9XCI+e3tmZC5MYWJlbH19PC9sYWJlbD48L2Rpdj48ZGl2IG5nLWNsYXNzPWNvbExlbmd0aFtmZC5WYWx1ZUxlbmd0aC0xXT48a3QtZHJvcGRvd24tc3RhbmRhcmQgbmctbW9kZWw9ZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLml0ZW1WYWx1ZS52YWwgbmctaWY9XCIhZmQuTXVsdGlsaW5lICYmIChmZC5sb2NhbFZhcnMuZGF0YXNldEl0ZW1zIHx8IGZkLmxvY2FsVmFycy5mb3JtRGVmaW5pdGlvbilcIiBzZWxlY3RlZC1pdGVtcz1mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuaXRlbVZhbHVlLnZhbCBzaXplIGlzLW11bHRpcGxlPWZhbHNlIHJlcXVpcmVkLWZpZWxkPWZhbHNlIGRyb3Bkb3duLWl0ZW1zPWZkLmxvY2FsVmFycy5kYXRhc2V0SXRlbXMgZHJvcGRvd24taWQ9ZmQuTmFtZStmZC5QcmVzZW50YXRpb25JZCBwYXJlbnQtZm9ybS1pZD1cIlxcJ2lubmVyRm9ybVxcJytmZC5QcmVzZW50YXRpb25JZFwiIHNlYXJjaC10ZXh0PWZkLlNlYXJjaFRleHQ+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48a3QtZHJvcGRvd24tbXVsdGlwbGUgbmctaWY9XCJmZC5NdWx0aWxpbmUgJiYgKGZkLmxvY2FsVmFycy5kYXRhc2V0SXRlbXMgfHwgZmQubG9jYWxWYXJzLmZvcm1EZWZpbml0aW9uKVwiIGZpZWxkLWVsZW1lbnQ9ZmQgbmctbW9kZWw9ZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLml0ZW1WYWx1ZS52YWwgc2VsZWN0ZWQtaXRlbXM9ZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLml0ZW1WYWx1ZS52YWwgbmFtZT17e2ZkLk5hbWV9fXt7ZmQuUHJlc2VudGF0aW9uSWR9fSByZXF1aXJlZC1maWVsZD1mYWxzZSBkcm9wZG93bi1pdGVtcz1mZC5sb2NhbFZhcnMuZGF0YXNldEl0ZW1zIGRyb3Bkb3duLWlkPWZkLk5hbWUrZmQuUHJlc2VudGF0aW9uSWQgcGFyZW50LWZvcm0taWQ9XCJcXCdpbm5lckZvcm1cXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBzZWFyY2gtdGV4dD1mZC5TZWFyY2hUZXh0Pjwva3QtZHJvcGRvd24tbXVsdGlwbGU+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm1vZGFsIGZhZGVcIiByb2xlPWRpYWxvZyB0YWJpbmRleD0tMSBhcmlhLWxhYmVsbGVkYnk9ZGF0YXNldE1hcHBlclBhcmVudE1vZGFsIGlkPWRhdGFzZXRNYXBwZXJQYXJlbnRNb2RhbHt7ZmQuUHJlc2VudGF0aW9uSWR9fSBhcmlhLWhpZGRlbj10cnVlPjxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtbGdcIiByb2xlPWRvY3VtZW50PjxkaXYgY2xhc3M9bW9kYWwtY29udGVudD48ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHB5LTFcIj48ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGUgZm50MTIgY29sIG14LTAgbXktMlwiPjxzcGFuPlBhcmVudCBkYXRhc2V0IHNldHVwPC9zcGFuPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPWNsb3NlIGRhdGEtZGlzbWlzcz1tb2RhbCBhcmlhLWxhYmVsPUNsb3NlPjxzcGFuIGFyaWEtaGlkZGVuPXRydWU+XFx4RDc8L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1tb2RhbC1ib2R5PjxkaXYga3QtZGF0YXNldC1tYXBwZXItcGFyZW50PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJtb2RhbCBmYWRlXCIgcm9sZT1kaWFsb2cgYXJpYS1sYWJlbGxlZGJ5PW1hc3NQcm9wZXJ0eVVwZGF0ZSBpZD1tYXNzUHJvcGVydHlVcGRhdGV7e2ZkLlByZXNlbnRhdGlvbklkfX0gYXJpYS1oaWRkZW49ZmFsc2U+PGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1sZ1wiIHJvbGU9ZG9jdW1lbnQ+PGRpdiBjbGFzcz1tb2RhbC1jb250ZW50PjxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcHktMVwiPjxkaXYgY2xhc3M9XCJtb2RhbC10aXRsZSBmbnQxMiBjb2wgbXgtMCBteS0yXCI+PHNwYW4+TWFzcyBQcm9wZXJ0eSBVcGRhdGU8L3NwYW4+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9Y2xvc2UgZGF0YS1kaXNtaXNzPW1vZGFsIGFyaWEtbGFiZWw9Q2xvc2U+PHNwYW4gYXJpYS1oaWRkZW49dHJ1ZT5cXHhENzwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPW1vZGFsLWJvZHk+PGRpdiBrdC1tYXNzLXByb3BlcnR5LXVwZGF0ZS1zZWxlY3Q+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uIGNsYXNzPVwibW9kYWwgZmFkZVwiIHJvbGU9ZGlhbG9nIGFyaWEtbGFiZWxsZWRieT1pbml0aWF0ZVRhc2tNb2RhbCBpZD1pbml0aWF0ZVRhc2tNb2RhbHt7ZmQuUHJlc2VudGF0aW9uSWR9fSBhcmlhLWhpZGRlbj1mYWxzZT48ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWxnXCIgcm9sZT1kb2N1bWVudD48ZGl2IGNsYXNzPW1vZGFsLWNvbnRlbnQ+PGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBweS0xXCI+PGRpdiBjbGFzcz1cIm1vZGFsLXRpdGxlIHRleHQtY2VudGVyIGZudDEyIGNvbCBteC0wIG15LTJcIj48c3Bhbj5BY3Rpb25zPC9zcGFuPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPWNsb3NlIGRhdGEtZGlzbWlzcz1tb2RhbCBhcmlhLWxhYmVsPUNsb3NlPjxzcGFuIGFyaWEtaGlkZGVuPXRydWU+XFx4RDc8L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgcC0xXCI+PGRpdiBrdC1pbml0aWF0ZS10YXNrLXdpZGdldCBjbGFzcz13LTEwMD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrRGF0YXNldExpc3RFeGUuaHRtbCcsJzxkaXYga3R0YXNrZGF0YXNldGxpc3RleGUgY2xhc3M9bXQtMj48ZGl2IG5nLWZvcm09ZGF0YXNldExpc3RTZWFyY2hGb3Jte3tmZC5QcmVzZW50YXRpb25JZH19IGNsYXNzPWZvcm0taG9yaXpvbnRhbCByb2xlPWZvcm0gc3R5bGU9XCJ3aWR0aDoge3tmZC5QYXJhbWV0ZXJzLmZvcm1XaWR0aH19O1wiPjxkaXYgbmctc2hvdz1mZC5TaG93U2VhcmNoRm9ybSBjbGFzcz48ZGl2IGNsYXNzPWNvbGxhcHNlIG5nLWNsYXNzPVwie1xcJ3Nob3dcXCc6IWZkLlBhcmFtZXRlcnMuU2VhcmNoRm9ybUNvbGxhcHNlZCAmJiBmZC5TaG93U2VhcmNoRm9ybX1cIiBpZD1pc0NvbGxhcHNlSWRGb3Jte3s6OmZkLlByZXNlbnRhdGlvbklkfX0+PGRpdiBuZy1pZj0hZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQgY2xhc3M9XCJyb3cgbS0wIGJvcmRlci0wXCIga3QtcHJvY2Vzc2luZy1hbmltYXRpb24tdGltZWxpbmUgYW5pbWF0aW9uLXR5cGU9XCJcXCdmb3JtXFwnXCIgc2hvdy1tc2c9ZmFsc2UgbWVzc2FnZT1cIkxvYWRpbmcgZm9ybS4uLlwiIHBhcmFtcz1mZC5QYXJhbWV0ZXJzPjwvZGl2PjxkaXYgbmctaWY9XCJmZC5sb2NhbFZhcnMuZm9ybUxvYWRlZCAmJiBmZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRlZFwiPjxkaXYgY2xhc3M9XCJtdC0xIHAtMiB0ZXh0LXByaW1hcnlcIiBuZy1pZj1cImZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQubGVuZ3RoPT0wXCI+PHNwYW4gY2xhc3M9bXItMz5Gb3JtIGlzIG5vdCBkZWZpbmVkIG9yIGVtcHR5PC9zcGFuPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgdGl0bGU9Q29uZmlybSBuZy1jbGljaz1mZC5sb2NhbFZhcnMuZ2V0Rm9ybVJlc291cmNlT3JpZ2luYWwoKT5SZWxvYWQgZGF0YXNldCBmcm9tIDxpIGNsYXNzPVwibWwtMiBmYXMgZmEtc3luY1wiPjwvaT48L2J1dHRvbj48L2Rpdj48ZGl2IGt0LWdyaWQgZ3JpZC10eXBlPWZkLmxvY2FsVmFycy5ncmlkc3RlclR5cGUgc2hvdy1zZWFyY2gtZmlsdGVycz1mZC5sb2NhbFZhcnMuc2hvd1NlYXJjaEZpbHRlcnMgcmVzb3VyY2UtZm9ybS1sb2FkZWQ9ZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQgcGFyZW50LXJlc291cmNlLWRlZi1pZD1mZC5SZWxhdGVkIHJlc291cmNlLXJlY29yZC1pZD1mZC5sb2NhbFZhcnMuZGF0YXNldFJlY29yZElkIHBhcmVudC13aWRnZXQ9OjpmZC5VdWlkUmVmIHJlc291cmNlLWRlZmluaXRpb249cmVzb3VyY2VEZWZpbml0aW9uIGZvcm0tcGFyYW1zPWZkLmxvY2FsVmFycy5mb3JtUGFyYW1zIGZvcm0tcGFyYW1zLXBhcmVudD1mb3JtUGFyYW1zIGZvcm0tZGF0YT1mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuZm9ybURhdGEgcGFyZW50PWZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cyBhbGwtY29sdW1ucz1mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMgY2xhc3M9a3RHcmlkPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgZ2V0LWRhdGEtYnV0dG9uIGNsYXNzPVwicm93IG0tMCBtdC0yXCIgc3R5bGU9e3tmZC5QYXJhbWV0ZXJzLnNlYXJjaEJ1dHRvbk91dGVyQ2xhc3N9fT48ZGl2IG5nLWlmPWZkLlBhcmFtZXRlcnMuU2hvd0dldERhdGFCdXR0b24gY2xhc3M9XCJjb2wtYXV0byBteS1hdXRvXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBzdHlsZT1cImZvbnQtc2l6ZToge3tmZC5QYXJhbWV0ZXJzLnNlYXJjaEJ1dHRvblNpemUgfHwgMTZ9fXB4XCIgY2xhc3M9XCJidG4ge3tmZC5QYXJhbWV0ZXJzLnNlYXJjaEJ1dHRvbkNsYXNzIHx8IFxcJ2J0bi1vdXRsaW5lLXByaW1hcnlcXCd9fSBidG4tc21cIiBuZy1jbGljaz1mZC5sb2NhbFZhcnMuR2V0RGF0YXNldERhdGFDbGljaygpPjxpIG5nLWlmPSFmZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcgY2xhc3M9XCJ7eyBmZC5QYXJhbWV0ZXJzLnNlYXJjaEJ1dHRvbkljb259fVwiPjwvaT4gPHNwYW4gbmctaWY9IWZkLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGluZyBuZy1iaW5kPVwiZmQuUGFyYW1ldGVyc0xhbmcuR2V0RGF0YUJ0bkxhYmVsIHx8IFxcJ0dldCBkYXRhXFwnXCI+PC9zcGFuPiA8c3BhbiBuZy1pZj1mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmc+PGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lciBmYS1zcGluIG1yLTFcIj48L2k+PC9zcGFuPiA8c3BhbiBuZy1pZj1mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcgbmctYmluZD1cImZkLlBhcmFtZXRlcnNMYW5nLkxvYWRpbmdNZXNzYWdlIHx8IFxcJ0xvYWRpbmcgZGF0YVxcJ1wiPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwiZmQuRm9ybURlZi5sZW5ndGg+MCAmJiAoZmQuUGFyYW1ldGVycy5BY3Rpb25Qb3NpdGlvbj09XFwnYWJvdmVcXCcgfHwgZmQuUGFyYW1ldGVycy5BY3Rpb25Qb3NpdGlvbj09dW5kZWZpbmVkKVwiIG5nLWNsYXNzPVwie1xcJ2JvcmRlci1ib3R0b20gcHQtNFxcJzpmZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuc2VsZWN0ZWRJdGVtcy5sZW5ndGh9XCIgY2xhc3M9XCJjb2wgcC0wIG15LWF1dG8gcGItMVwiIHN0eWxlPVwicG9zaXRpb246IHN0aWNreTttaW4taGVpZ2h0OiA0NXB4O3RvcDogNDRweDt6LWluZGV4OiAxO1wiPjxkaXYga3QtaW5pdGlhdGUtdGFzay13aWRnZXQgc3R5bGU9e3tnc3J2Yy5ib2R5QmdDb2xvcn19IG5nLWlmPVwiZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnNlbGVjdGVkSXRlbXMubGVuZ3RoPjBcIj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwiZmQuRm9ybURlZi5sZW5ndGg+MCAmJiBmZC5QYXJhbWV0ZXJzLkFjdGlvblBvc2l0aW9uPT1cXCdpbmxpbmVcXCdcIiBjbGFzcz1kLW5vbmUga3QtaW5pdGlhdGUtdGFzay13aWRnZXQ+PC9kaXY+PGRpdiB3aGVuLWZpbGUgY2xhc3M9XCJyb3cgbXQtNFwiIG5nLWlmPVwiZmQuUGFyYW1ldGVycy5TZWxlY3RlZFJlc291cmNlVHlwZT09XFwnZmlsZVxcJ1wiPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBteS5hdXRvXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1pZj1cImZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW1zLmxlbmd0aD4wICYmICFmZC5QYXJhbWV0ZXJzLk5vUHJldmlld1wiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi14c1wiIG5nLWNsaWNrPVwiZmQubG9jYWxWYXJzLnByZXZpZXdGaWxlKGZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZFJlc291cmNlUmVjb3JkW2ZkLmxvY2FsVmFycy5UYWJsZVByZWZpeCtcXCdfZ3VpZFxcJ10sZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnNlbGVjdGVkUmVzb3VyY2VSZWNvcmRbZmQubG9jYWxWYXJzLlRhYmxlUHJlZml4K1xcJ19GaWxlTmFtZVxcJ10sZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnNlbGVjdGVkUmVzb3VyY2VSZWNvcmRbZmQubG9jYWxWYXJzLlRhYmxlUHJlZml4K1xcJ19GaWxlVHlwZVxcJ10pXCI+PGkgY2xhc3M9XCJmYSBmYS1zZWFyY2hcIj48L2k+IDxzcGFuIG5nLWlmPWZkLlBhcmFtZXRlcnNMYW5nLlByZXZpZXdMYWJlbD57e2ZkLlBhcmFtZXRlcnNMYW5nLlByZXZpZXdMYWJlbH19PC9zcGFuPiA8c3BhbiBuZy1pZj0hZmQuUGFyYW1ldGVyc0xhbmcuUHJldmlld0xhYmVsPlByZXZpZXcgZmlsZTwvc3Bhbj48L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1pZj1cImZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW1zLmxlbmd0aD4wICYmICFmZC5QYXJhbWV0ZXJzLk5vRG93bmxvYWRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4teHNcIiBuZy1jbGljaz1cImZkLmxvY2FsVmFycy5kb3dubG9hZEZpbGUoZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnNlbGVjdGVkUmVzb3VyY2VSZWNvcmRbZmQubG9jYWxWYXJzLlRhYmxlUHJlZml4K1xcJ19ndWlkXFwnXSxmZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuc2VsZWN0ZWRSZXNvdXJjZVJlY29yZFtmZC5sb2NhbFZhcnMuVGFibGVQcmVmaXgrXFwnX0ZpbGVOYW1lXFwnXSlcIj48aSBjbGFzcz1cImZhIGZhLWRvd25sb2FkXCI+PC9pPiA8c3BhbiBuZy1pZj1mZC5QYXJhbWV0ZXJzTGFuZy5Eb3dubG9hZExhYmVsPnt7ZmQuUGFyYW1ldGVyc0xhbmcuRG93bmxvYWRMYWJlbH19PC9zcGFuPiA8c3BhbiBuZy1pZj0hZmQuUGFyYW1ldGVyc0xhbmcuRG93bmxvYWRMYWJlbD5Eb3dubG9hZCBmaWxlPC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmZC5QYXJhbWV0ZXJzLlByZXNlbnRhdGlvblR5cGU9PVxcJ3RhYmxlXFwnXCIgc3R5bGU9XCJ3aWR0aDoge3tmZC5QYXJhbWV0ZXJzLnRhYmxlLndpZHRofX07XCI+PGRpdiBjbGFzcz1cImJvcmRlci0wIG10LTFcIj48ZGl2IGlkPWxvYWRpbmdzY3JlZW57e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctc2hvdz1mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcga3QtcHJvY2Vzc2luZy1hbmltYXRpb24tdGltZWxpbmUgYW5pbWF0aW9uLXR5cGU9XCJcXCd0YWJsZVxcJ1wiIHNob3ctbXNnPWZkLlBhcmFtZXRlcnMuU2hvd0xvYWRpbmdNZXNzYWdlIG1lc3NhZ2U9e3tmZC5QYXJhbWV0ZXJzTGFuZy5Mb2FkaW5nTWVzc2FnZX19IHBhcmFtcz1mZC5QYXJhbWV0ZXJzPjwvZGl2PjxkaXYgaWQ9c21hcnRUYWJsZXt7ZmQuVXVpZFJlZn19IGt0LXNtYXJ0LXRhYmxlIG5nLWlmPVwiZmQubG9jYWxWYXJzLmRhdGFzZXRsaXN0bGlua2VkICYmICgoZmQubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkZWQgJiYgIWZkLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGluZykgfHwgKGZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MiAmJiBmZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuY29sdW1uRGVmcy5sZW5ndGg+MCkpXCIgY2xhc3MgdXNlLXBhZ2luYXRpb249ZmQuUGFyYW1ldGVycy5Vc2VQYWdpbmF0aW9uIHBhcmFtZXRlcnM9ZmQuUGFyYW1ldGVycyBwYXJhbWV0ZXJzbGFuZz1mZC5QYXJhbWV0ZXJzTGFuZyBmb250LXNpemU9ZmQuUGFyYW1ldGVycy50YWJsZS5mb250U2l6ZSBjZWxsLXBhZGRpbmc9ZmQuUGFyYW1ldGVycy50YWJsZS5jZWxsUGFkZGluZyBjb2x1bW4tZGVmcz1mZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuY29sdW1uRGVmcyBpdGVtcy1vbi1wYWdlPWZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5wYWdlU2l6ZSByb3ctc2VsZWN0ZWQtY2hhbmdlPWZkLmxvY2FsVmFycy5yb3dTZWxlY3Rpb25DaGFuZ2VkKGl0ZW0pIHNlbGVjdC1tdWx0aXBsZT1mZC5sb2NhbFZhcnMubXVsdGlwbGVTZWxlY3QoaXRlbSxzZWxlY3RBbGwsZGVzZWxlY3RBbGwpIGt0LXJlZnJlc2gtZGF0YT1cImZkLmxvY2FsVmFycy5nZXREYXRhU21hcnRUYWJsZSh0YWJsZVN0YXRlLCBwYWdlTnVtYmVyLHBhZ2VTaXplKVwiIGluaXRpYWwtcGFnZT1mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuY3VycmVudFBhZ2UgZ3JpZC1kYXRhPWZkLmxvY2FsVmFycy5ncmlkRGF0YSgpIGFjdGlvbi1kZWZpbml0aW9uPWZkLkZvcm1EZWYgc2hvdy1hY3Rpb24tYnV0dG9ucz1cImZkLlBhcmFtZXRlcnMuQWN0aW9uUG9zaXRpb249PVxcJ2lubGluZVxcJ1wiIGt0LXByb2Nlc3MtYWN0aW9uPWZkLmxvY2FsVmFycy5wcm9jZXNzVGFibGVBY3Rpb24oaXRlbSxhY3Rpb25JZCk+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZT09XFwnZHJvcGRvd25cXCdcIj48ZGl2IG5nLWhpZGU9OjpmZC5QYXJhbWV0ZXJzLkhpZGVMYWJlbCBjbGFzcz17e2ZkLmdyaWRDbGFzc0xhYmVsfX0gc3R5bGU9e3tmZC5sYWJlbEFsaWdufX0gbmctY2xhc3M9XCJ7XFwnY29sLWF1dG9cXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplfVwiPjxsYWJlbCBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2xhYmVsXFwnXCIgc3R5bGU9e3tmZC5jdXN0b21TdHlsZUxhYmVsfX0gY2xhc3M9XCJtYXJnaW5MNSBmb3JtLWNvbnRyb2wtbGFiZWwgbm8tYm9yZGVyIGFsaWduLW1pZGRsZVwiIGZvcj17e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkfX0gbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZH19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS4kaW52YWxpZCxcXCdjdXN0b20tZWwtbGF5b3V0LXN0eWxlXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MX1cIj57e2ZkLkxhYmVsfX08L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9XCJ7e2ZkLmdyaWRDbGFzc0VsZW1lbnR9fSBteS1hdXRvXCIga3Qtc3R5bGUtYXR0cmlidXRlIGZkPWZkIHN0eWxlLXR5cGU9XCJcXCdlbGVtZW50XFwnXCI+PGRpdiBuZy1pZj1mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcgY2xhc3M9cHgtMiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTttYXJnaW4tdG9wOiAxMHB4ICFpbXBvcnRhbnQ7XCI+PGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lciBmYS1zcGluIG1yLTFcIj48L2k+PHNwYW4gbmctYmluZD1cImZkLlBhcmFtZXRlcnNMYW5nLkxvYWRpbmdNZXNzYWdlIHx8IFxcJ0xvYWRpbmcgZGF0YVxcJ1wiPjwvc3Bhbj48L2Rpdj48a3QtZHJvcGRvd24tc3RhbmRhcmQgbmctbW9kZWw9ZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLml0ZW1WYWx1ZS52YWwgbmctaWY9IWZkLk11bHRpbGluZSBzZWxlY3RlZC1pdGVtcz1mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuaXRlbVZhbHVlLnZhbCBvbi1zZWxlY3QtZm49ZmQubG9jYWxWYXJzLmRyb3Bkb3duU2VsZWN0aW9uQ2hhbmdlZChpdGVtLG1vZGVsKSBzaXplIGlzLW11bHRpcGxlPWZhbHNlIHJlcXVpcmVkLWZpZWxkPTo6ZmQuUmVxdWlyZWQgZHJvcGRvd24taXRlbXM9ZmQubG9jYWxWYXJzLmRhdGFzZXRJdGVtcyBkcm9wZG93bi1pZD1mZC5OYW1lK2ZkLlByZXNlbnRhdGlvbklkIHBhcmVudC1mb3JtLWlkPVwiXFwnaW5uZXJGb3JtXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgc2VhcmNoLXRleHQ9OjpmZC5TZWFyY2hUZXh0Pjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PGt0LWRyb3Bkb3duLW11bHRpcGxlIG5nLWlmPTo6ZmQuTXVsdGlsaW5lIGZpZWxkLWVsZW1lbnQ9OjpmZCBuZy1tb2RlbD1mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuaXRlbVZhbHVlLnZhbCBzZWxlY3RlZC1pdGVtcz1mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuaXRlbVZhbHVlLnZhbCBvbi1zZWxlY3QtZm49ZmQubG9jYWxWYXJzLmRyb3Bkb3duU2VsZWN0aW9uQ2hhbmdlZChpdGVtLG1vZGVsKSBuYW1lPXt7OjpmZC5OYW1lfX17ezo6ZmQuVXVpZFJlZn19IG5nLXJlcXVpcmVkPTo6ZmQuUmVxdWlyZWQgcmVxdWlyZWQtZmllbGQ9OjpmZC5SZXF1aXJlZCBkcm9wZG93bi1pdGVtcz1mZC5sb2NhbFZhcnMuZGF0YXNldEl0ZW1zIGRyb3Bkb3duLWlkPWZkLk5hbWUrZmQuVXVpZFJlZiBvcHRpb25zLWZuPWZkLmxvY2FsVmFycy5jbGVhckRyb3Bkb3duIHBhcmVudC1mb3JtLWlkPVwiXFwnaW5uZXJGb3JtXFwnK2ZkLlV1aWRSZWZcIiBzZWFyY2gtdGV4dD1mZC5TZWFyY2hUZXh0Pjwva3QtZHJvcGRvd24tbXVsdGlwbGU+PC9kaXY+PC9kaXY+PGRpdiBjYXJkcyBuZy1pZj1cImZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZT09XFwnY2FyZFxcJ1wiPjxkaXYgbmctaWY9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTJcIiBjbGFzcz1cImJvcmRlciBtLTMgc2hhZG93LXNtXCI+PGRpdiBjbGFzcz1cIm10LTEgcC0yIHRleHQtcHJpbWFyeVwiIG5nLWlmPVwiZmQubG9jYWxWYXJzLmNhcmRMYXlvdXRMb2FkZWQgJiYgZmQubG9jYWxWYXJzLmRhc2hib2FyZENhcmQud2lkZ2V0cy5sYXlvdXQubGVuZ3RoPT0wXCI+PHNwYW4gY2xhc3M9bXItMz5DYXJkIGxheW91dCBpcyBub3QgZGVmaW5lZCBvciBlbXB0eTwvc3Bhbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIHRpdGxlPUNvbmZpcm0gbmctY2xpY2s9ZmQubG9jYWxWYXJzLmdldERhdGFzZXRDYXJkTGF5b3V0T3JpZ2luYWwoKT5SZWxvYWQgZGF0YXNldCBmcm9tIDxpIGNsYXNzPVwibWwtMiBmYXMgZmEtc3luY1wiPjwvaT48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwiYm9yZGVyLWJvdHRvbSB0ZXh0LWNlbnRlciBwLTFcIj48c3BhbiBjbGFzcz1oNj5DYXJkIGxheW91dCBkZWZpbml0aW9uPC9zcGFuPjwvZGl2PjxkaXYga3QtZ3JpZCBncmlkLXR5cGU9ZmQubG9jYWxWYXJzLmdyaWRzdGVyVHlwZSBzaG93LXNlYXJjaC1maWx0ZXJzPWZkLmxvY2FsVmFycy5zaG93U2VhcmNoRmlsdGVycyByZXNvdXJjZS1mb3JtLWxvYWRlZD1mZC5sb2NhbFZhcnMuZm9ybUxvYWRlZCBwYXJlbnQtcmVzb3VyY2UtZGVmLWlkIHJlc291cmNlLXJlY29yZC1pZCByZXNvdXJjZS1kZWZpbml0aW9uPXJlc291cmNlRGVmaW5pdGlvbiBmb3JtLXBhcmFtcz1mZC5sb2NhbFZhcnMuY2FyZExheW91dFBhcmFtcyBmb3JtLXBhcmFtcy1wYXJlbnQ9Zm9ybVBhcmFtcyBmb3JtLWRhdGE9Zm9ybUNhcmREYXRhIHBhcmVudD1mZC5sb2NhbFZhcnMuZGFzaGJvYXJkQ2FyZC53aWRnZXRzIGFsbC1jb2x1bW5zPWZkLmxvY2FsVmFycy5kYXNoYm9hcmRDYXJkLndpZGdldHMgY2xhc3M9a3RHcmlkPjwvZGl2PjwvZGl2PjxkaXY+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhLmxlbmd0aD09MCAmJiAhZmQubG9jYWxWYXJzLkluaXRpYWxMb2FkICYmIGZkLmxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGVkXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwLTRcIj48aSBjbGFzcz1cImZhIGZhLWZpbGUgZmEtNHggbWItMlwiPjwvaT48ZGl2IGNsYXNzPWg1Pnt7ZmQuUGFyYW1ldGVyc0xhbmcuTm9EYXRhTXNnfX08L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwibXQtMSBwLTIgdGV4dC1wcmltYXJ5XCIgbmctaWY9XCJmZC5sb2NhbFZhcnMuY2FyZExheW91dExvYWRlZCAmJiBmZC5sb2NhbFZhcnMuZGFzaGJvYXJkQ2FyZC53aWRnZXRzLmxheW91dC5sZW5ndGg9PTBcIj5DYXJkIGxheW91dCBpcyBub3QgZGVmaW5lZCBvciBlbXB0eTwvZGl2PjxkaXYgaWQ9bG9hZGluZ3NjcmVlbmNhcmRze3tmZC5QcmVzZW50YXRpb25JZH19IG5nLXNob3c9ZmQubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nIGt0LXByb2Nlc3NpbmctYW5pbWF0aW9uLXRpbWVsaW5lIGFuaW1hdGlvbi10eXBlPVwiXFwndGFibGVcXCdcIiBzaG93LW1zZz1mZC5QYXJhbWV0ZXJzLlNob3dMb2FkaW5nTWVzc2FnZSBtZXNzYWdlPXt7ZmQuUGFyYW1ldGVyc0xhbmcuTG9hZGluZ01lc3NhZ2V9fSBwYXJhbXM9ZmQuUGFyYW1ldGVycz48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBteC0yXCIgbmctaWY9XCJmZC5sb2NhbFZhcnMuY2FyZExheW91dExvYWRlZCAmJiBmZC5sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YS5sZW5ndGg+MCAmJiAhZmQubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nXCI+PGRpdiBpZD1zbWFydFRhYmxle3tmZC5VdWlkUmVmfX0ga3Qtc21hcnQtY2FyZHMgbmctaWY9XCJmZC5sb2NhbFZhcnMuZGF0YXNldGxpc3RsaW5rZWQgJiYgKChmZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRlZCAmJiAhZmQubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nICYmIGZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhLmxlbmd0aD4wKSB8fCAoZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0yICYmIGZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5jb2x1bW5EZWZzLmxlbmd0aD4wKSlcIiBjbGFzcz1jb2wtMjQgZmQ9ZmQgcmVzb3VyY2UtZGVmaW5pdGlvbj1yZXNvdXJjZURlZmluaXRpb24gZm9ybS1wYXJhbXM9Zm9ybVBhcmFtcyB1c2UtcGFnaW5hdGlvbj1mZC5QYXJhbWV0ZXJzLlVzZVBhZ2luYXRpb24gcGFyYW1ldGVycz1mZC5QYXJhbWV0ZXJzIGZvbnQtc2l6ZT1mZC5QYXJhbWV0ZXJzLnRhYmxlLmZvbnRTaXplIGNlbGwtcGFkZGluZz1mZC5QYXJhbWV0ZXJzLnRhYmxlLmNlbGxQYWRkaW5nIGNvbHVtbi1kZWZzPWZkLmxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5jb2x1bW5EZWZzIGl0ZW1zLW9uLXBhZ2U9ZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnBhZ2VTaXplIHJvdy1zZWxlY3RlZC1jaGFuZ2U9ZmQubG9jYWxWYXJzLnJvd1NlbGVjdGlvbkNoYW5nZWQoaXRlbSkga3QtcmVmcmVzaC1kYXRhPVwiZmQubG9jYWxWYXJzLmdldERhdGFTbWFydFRhYmxlKHRhYmxlU3RhdGUsIHBhZ2VOdW1iZXIscGFnZVNpemUpXCIgaW5pdGlhbC1wYWdlPWZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5jdXJyZW50UGFnZSBncmlkLWRhdGE9ZmQubG9jYWxWYXJzLmdyaWREYXRhKCkgYWN0aW9uLWRlZmluaXRpb249ZmQuRm9ybURlZiBzaG93LWFjdGlvbi1idXR0b25zPVwiZmQuUGFyYW1ldGVycy5BY3Rpb25Qb3NpdGlvbj09XFwnaW5saW5lXFwnXCIga3QtcHJvY2Vzcy1hY3Rpb249ZmQubG9jYWxWYXJzLnByb2Nlc3NUYWJsZUFjdGlvbihpdGVtLGFjdGlvbklkKT48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48c3R5bGUgdHlwZT10ZXh0L2Nzcz5cXHRcXHJcXG5cXHRcXHQuaW5pdC10YXNrLXN0eWxle1xcclxcblxcdFxcdFxcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG5cXHRcXHRcXHR6LWluZGV4OiAxMDIwO1xcclxcblxcdFxcdFxcdC8qbWFyZ2luLXRvcDogMzBweDsqL1xcclxcblxcdFxcdFxcdHJpZ2h0OiA1cHg7XFxyXFxuXFx0XFx0XFx0Ym9yZGVyOiAxcHggc29saWQ7XFxyXFxuXFx0XFx0XFx0Ym94LXNoYWRvdzogMCAwLjEyNXJlbSAwLjI1cmVtIHJnYmEoMTQsIDI2LCA1NywgMC4wNzUpICFpbXBvcnRhbnQ7XFxyXFxuXFx0XFx0XFx0Ym9yZGVyLXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50O1xcclxcblxcdFxcdH1cXHJcXG5cXHQ8L3N0eWxlPjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tEYXRhc2V0TGlzdFByb3BlcnRpZXMuaHRtbCcsJzxzdHlsZT5cXHJcXG4uc2hhZG93YnV0dG9uIHtcXHJcXG4gICAgYm94LXNoYWRvdzogMCAwLjEyNXJlbSAwLjI1cmVtIHJnYigxNCAyNiA1NyAvIDglKSAhaW1wb3J0YW50O1xcclxcbn1cXHJcXG4uc2hhZG93YnV0dG9uOmhvdmVyIHtcXHJcXG4gICAgYm94LXNoYWRvdzogdmFyKC0tZHMtb3ZlcmxheSwwIDhweCAxNnB4IC00cHggcmdiYSg5LDMwLDY2LDAuMjUpLDAgMCAxcHggcmdiYSg5LDMwLDY2LDAuMzEpKSAhaW1wb3J0YW50O1xcclxcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxyXFxufVxcclxcbi5zaGFkb3didXR0b24gLmJsdWVvbmhvdmVyIHtcXHJcXG4gICBib3JkZXItYm90dG9tOiBzb2xpZCBsaWdodGdyYXk7XFxyXFxufVxcclxcbi5zaGFkb3didXR0b24uYWN0aXZlIC5ibHVlb25ob3ZlciwgLnNoYWRvd2J1dHRvbjpob3ZlciAuYmx1ZW9uaG92ZXIge1xcclxcbiAgIGJvcmRlci1ib3R0b206IHNvbGlkIHRoaWNrIGJsdWUgOyAgXFxyXFxufVxcclxcbmJ1dHRvbi5hY3RpdmUsIGE6YWN0aXZlLCAubGluazphY3RpdmUge1xcclxcbiAgICBjb2xvcjogdmFyKC0tZHMtdGV4dC1saW5rLXByZXNzZWQsIzAwNjVGRik7XFxyXFxufVxcclxcbjwvc3R5bGU+PGRpdiBpZD1rdFRhc2tEYXRhc2V0TGlzdFByb3BlcnRpZXN7e2ZkLlByZXNlbnRhdGlvbklkfX0gY2xhc3M+PG5nLWZvcm0gbmFtZT1kYXRhc2V0TGlzdFByb3BlcnRpZXN7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGRpdj48ZGl2IGt0LXByb3BlcnR5LWhlYWRlcj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBwdC0xXCI+PGRpdiBpZGQ9QkFTSUMgbmctaWY9XCJmZC5sb2NhbFZhcnMuUHJvcGVydHlUeXBlPT1cXCdiYXNpY1xcJ1wiIGNsYXNzPVwiY29sLTI0IHB4LTBcIj48bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkIG10LTNcIj5TaG93IGRhdGEgYXM8L2xhYmVsPjxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgYnRuLWdyb3VwLXRvZ2dsZSB3LTEwMFwiIGRhdGEtdG9nZ2xlPWJ1dHRvbnM+PGxhYmVsIG5nLWNsaWNrPVwiZmQubG9jYWxWYXJzLnNldFByZXNlbnRhdGlvblR5cGUoXFwndGFibGVcXCcpXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCIgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZT09XFwndGFibGVcXCd9XCI+PHNwYW4gY2xhc3M9XCJmYXMgZmEtdGFibGUgbXItMlwiPjwvc3Bhbj4gPGlucHV0IHR5cGU9cmFkaW8gbmFtZT1wcmVzZW50YXRpb250eXBlIGlkPXBUeXBlMSBhdXRvY29tcGxldGU9b2ZmIGNoZWNrZWQ+IFRhYmxlPC9sYWJlbD4gPGxhYmVsIG5nLWNsaWNrPVwiZmQubG9jYWxWYXJzLnNldFByZXNlbnRhdGlvblR5cGUoXFwnZHJvcGRvd25cXCcpXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCIgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZT09XFwnZHJvcGRvd25cXCd9XCI+PHNwYW4gY2xhc3M9XCJmYXIgZmEtY2FyZXQtc3F1YXJlLWRvd24gbXItMlwiPjwvc3Bhbj48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXByZXNlbnRhdGlvbnR5cGUgaWQ9cFR5cGUyIGF1dG9jb21wbGV0ZT1vZmY+IERyb3Bkb3duPC9sYWJlbD4gPGxhYmVsIG5nLWNsaWNrPVwiZmQubG9jYWxWYXJzLnNldFByZXNlbnRhdGlvblR5cGUoXFwnY2FyZFxcJylcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlPT1cXCdjYXJkXFwnfVwiPjxzcGFuIGNsYXNzPVwiZmFyIGZhLWlkLWNhcmQgbXItMlwiPjwvc3Bhbj48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXByZXNlbnRhdGlvbnR5cGUgaWQ9cFR5cGUzIGF1dG9jb21wbGV0ZT1vZmY+IENhcmQ8L2xhYmVsPjwvZGl2PjxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWQgbXQtMlwiPkxhYmVsPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1mZC5MYWJlbD48ZGl2IGNsYXNzPW1iLTI+PGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZCBsYWJlbC14c1wiPkNzcyBzdHlsZTwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5jc3NTdHlsZT48L2Rpdj48ZGl2IGlkZD1hdXRvLXNlYXJjaD48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWwgZm9yPWNiQXV0b1NlYXJjaHt7ZmQuVXVpZFJlZn19PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPWNiQXV0b1NlYXJjaHt7ZmQuVXVpZFJlZn19IG5nLW1vZGVsPWZkLkF1dG9TZWFyY2ggbmctY2hlY2tlZD1mZC5BdXRvU2VhcmNoPiBGZXRjaCBkYXRhIG9uIHBhZ2UgbG9hZDwvbGFiZWw+PC9kaXY+PGRpdiBpZGQ9ZG93bmxvYWRBbGxSZWNvcmRzPjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbCBmb3I9Y2JBbGxSZWNvcmRze3tmZC5VdWlkUmVmfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JBbGxSZWNvcmRze3tmZC5VdWlkUmVmfX0gbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5Eb3dubG9hZEFsbFJlY29yZHMgbmctY2hlY2tlZD1mZC5QYXJhbWV0ZXJzLkRvd25sb2FkQWxsUmVjb3Jkcz4gRG93bmxvYWQgYWxsIHJlY29yZHM8L2xhYmVsPjwvZGl2PjxkaXYgaWRkPXJlcXVpcmVkIG5nLWlmPWZhbHNlPjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbCBmb3I9Y2JSZXF1aXJlZHt7ZmQuVXVpZFJlZn19PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPWNiUmVxdWlyZWR7e2ZkLlV1aWRSZWZ9fSBuZy1tb2RlbD1mZC5SZXF1aXJlZCBuZy1jaGVja2VkPWZkLlJlcXVpcmVkPiBSZXF1aXJlZDwvbGFiZWw+PC9kaXY+PGRpdiBpZGQ9YXV0b3NlYXJjaGNsaWVudCBuZy1pZj1mYWxzZT48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWwgZm9yPWNiQXV0b1NlYXJjaENsaWVudHt7ZmQuVXVpZFJlZn19PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPWNiQXV0b1NlYXJjaENsaWVudHt7ZmQuVXVpZFJlZn19IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuQXV0b1NlYXJjaENsaWVudCBuZy1jaGVja2VkPWZkLlBhcmFtZXRlcnMuQXV0b1NlYXJjaENsaWVudD4gQXV0byBzZWFyY2ggb24gY2xpZW50PC9sYWJlbD48L2Rpdj48ZGl2PjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbCBmb3I9Y2JDbGllbnRTaWRlRmlsdGVye3tmZC5VdWlkUmVmfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JDbGllbnRTaWRlRmlsdGVye3tmZC5VdWlkUmVmfX0gbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5DbGllbnRTaWRlRmlsdGVyIG5nLWNoZWNrZWQ9ZmQuUGFyYW1ldGVycy5DbGllbnRTaWRlRmlsdGVyPiBDbGllbnQgc2lkZSBmaWx0ZXJpbmc8L2xhYmVsPjwvZGl2PjxkaXYgbmctaWY9XCJmZC5QYXJhbWV0ZXJzLlByZXNlbnRhdGlvblR5cGU9PVxcJ2Ryb3Bkb3duXFwnXCIgY2xhc3M9bXktYXV0bz48bGFiZWwgY2xhc3M9XCJrdC1jaGVja2JveC1sYWJlbCBteS0yXCIgZm9yPWNiTXVsdGlsaW5le3tmZC5QcmVzZW50YXRpb25JZH19PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPVxcJ2NiXCJNdWx0aWxpbmV7e2ZkLlByZXNlbnRhdGlvbklkfX1cIlxcJyBuZy1tb2RlbD1mZC5NdWx0aWxpbmUgbmctY2hlY2tlZD1mZC5NdWx0aWxpbmU+IFNlbGVjdCBtdWx0aXBsZSByZWNvcmRzPC9sYWJlbD48ZGl2IG5nLWlmPWZkLmxvY2FsVmFycy5wZUxvYWRlZD48bGFiZWwgY2xhc3M9XCJwbC0wIGxhYmVsLXhzIHRleHQtbXV0ZWRcIiBmb3I9bmFtZUZpZWxkPlNlbGVjdCBpZCBmaWVsZDwvbGFiZWw+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLW1vZGVsPVwiZmQuTmFtZUZpZWxkW1xcJ2lkXFwnXVwiIHNpemU9XCJcXCdzbWFsbFxcJ1wiIGlzLW11bHRpcGxlPWZhbHNlIHNlbGVjdGVkLWl0ZW1zPVwiZmQuTmFtZUZpZWxkW1xcJ2lkXFwnXVwiIG5hbWU9bmFtZUZpZWxkSWR7e2ZkLlByZXNlbnRhdGlvbklkfX0gcmVxdWlyZWQ9dHJ1ZSBkcm9wZG93bi1pdGVtcz1mZC5sb2NhbFZhcnMuUHJlc2VudGF0aW9uRWxlbWVudHMgZHJvcGRvd24taWQ9XCJcXCduYW1lRmllbGRJZFxcJytmZC5QcmVzZW50YXRpb25JZFwiIHBhcmVudC1mb3JtLWlkPVwiXFwnbmFtZUZpZWxkSWRcXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCBpZCBmaWVsZCBmb3IgZHJvcGRvd25cXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjwvZGl2PjxkaXYgbmctaWY9ZmQubG9jYWxWYXJzLnBlTG9hZGVkPjxsYWJlbCBjbGFzcz1cInBsLTAgbGFiZWwteHMgdGV4dC1tdXRlZFwiIGZvcj1uYW1lRmllbGQ+U2VsZWN0IGRhdGFzZXQgZmllbGRzPC9sYWJlbD48a3QtZHJvcGRvd24tbXVsdGlwbGUgbmctbW9kZWw9XCJmZC5OYW1lRmllbGRbXFwnbmFtZVxcJ11cIiBzaXplPVwiXFwnc21hbGxcXCdcIiBzZWxlY3RlZC1pdGVtcz1cImZkLk5hbWVGaWVsZFtcXCduYW1lXFwnXVwiIG5hbWU9bmFtZUZpZWxke3tmZC5QcmVzZW50YXRpb25JZH19IHJlcXVpcmVkPWZhbHNlIGRyb3Bkb3duLWl0ZW1zPWZkLmxvY2FsVmFycy5QcmVzZW50YXRpb25FbGVtZW50cyBkcm9wZG93bi1pZD1cIlxcJ25hbWVGaWVsZFxcJytmZC5QcmVzZW50YXRpb25JZFwiIHBhcmVudC1mb3JtLWlkPVwiXFwnbmFtZUZpZWxkXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgZmllbGRzIGZvciBkcm9wZG93blxcJ1wiPjwva3QtZHJvcGRvd24tbXVsdGlwbGU+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPlNlcGFyYXRvcjwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9XCJmZC5OYW1lRmllbGRbXFwnc2VwYXJhdG9yXFwnXVwiPjwvZGl2PjxkaXYga3QtZmllbGQtc2l6ZS1wcm9wZXJ0eT48L2Rpdj48ZGl2IGt0LWZpZWxkLXN0eWxlLXByb3BlcnR5PjwvZGl2PjwvZGl2PjxkaXYga3Qtd2lkZ2V0LWRhdGEtc291cmNlLWRlZj48L2Rpdj48ZGl2IGt0LWZpZWxkLWFkdmFuY2VkLXByb3BlcnRpZXM+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5Qcm9wZXJ0eVR5cGU9PVxcJ2Zvcm1cXCdcIiBjbGFzcz1jb2wtMjQ+PGRpdj48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWwgZm9yPWNiU2hvd1NlYXJjaEZvcm17e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JTaG93U2VhcmNoRm9ybXt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1tb2RlbD1mZC5TaG93U2VhcmNoRm9ybSBuZy1jaGVja2VkPWZkLlNob3dTZWFyY2hGb3JtPiBTaG93IHNlYXJjaCBmb3JtPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPW1iLTE+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYlNob3dTZWFyY2hGb3Jte3tmZC5QcmVzZW50YXRpb25JZH19PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPWNiU2VhcmNoRm9ybUNvbGxhcHNlZHt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlNlYXJjaEZvcm1Db2xsYXBzZWQgbmctY2hlY2tlZD1mZC5QYXJhbWV0ZXJzLlNlYXJjaEZvcm1Db2xsYXBzZWQ+IFNlYXJjaCBmb3JtIGNvbGxhcHNlZDwvbGFiZWw+PC9kaXY+PGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZFwiPlNlYXJjaCBmb3JtIHdpZHRoPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLmZvcm1XaWR0aD4gPGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZFwiPlNlYXJjaCBoZWFkZXIgdGV4dDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgbmctbW9kZWw9ZmQuU2VhcmNoVGV4dD4gPGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZFwiPkZvcm0gdmFsaWRhdGlvbiBlcnJvcjwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgbmctbW9kZWw9ZmQuRXJyb3JNc2c+PGRpdiBjbGFzcz1tdC0xIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmNSA7Ym9yZGVyOiBzb2xpZCAxcHg7IGJvcmRlci1yYWRpdXM6NXB4OyBwYWRkaW5nLWJvdHRvbTo1cHhcIj48ZGl2IGlkZD1nZXREYXRhQnV0dG9uIGNsYXNzPW0tMiBzdHlsZT1cImJvcmRlci1ib3R0b206IHNvbGlkIGxpZ2h0Z3JheSAxcHg7XCI+PGRpdiBjbGFzcz1cImQtZmxleCBtYi0xXCIgc3R5bGU9XCJqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XCI+PGxhYmVsIGNsYXNzPVwiYm9sZCBrdC1jaGVja2JveC1sYWJlbFwiIGZvcj1jYlNob3dHZXREYXRhQnV0dG9ue3tmZC5QcmVzZW50YXRpb25JZH19PkVuYWJsZSBTZWFyY2ggYnV0dG9uPC9sYWJlbD4gPGxhYmVsIG5nLWNsYXNzPVwie1xcJ2Rpc2FibGVkXFwnOiFmZC5QYXJhbWV0ZXJzLlNob3dHZXREYXRhQnV0dG9uIH1cIiBjbGFzcz1cInN3aXRjaCBzd2l0Y2gtZ3JlZW4gc21hbGxcIj48aW5wdXQgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5TaG93R2V0RGF0YUJ1dHRvbiB0eXBlPWNoZWNrYm94IG5nLXRydWUtdmFsdWU9dHJ1ZSBuZy1mYWxzZS12YWx1ZT1mYWxzZSBjbGFzcz1zd2l0Y2gtaW5wdXQ+IDxzcGFuIGNsYXNzPXN3aXRjaC1sYWJlbCBkYXRhLW9uPU9uIGRhdGEtb2ZmPU9mZj48L3NwYW4+IDxzcGFuIGNsYXNzPXN3aXRjaC1oYW5kbGU+PC9zcGFuPjwvbGFiZWw+PC9kaXY+PC9kaXY+PGRpdj48ZGl2IGNsYXNzPW0tMT48ZGl2IGNsYXNzPVwic21hbGwgYm9sZCBteS0yXCI+U2VhcmNoIGJ1dHRvbiBzaXplOiB7e2ZkLlBhcmFtZXRlcnMuc2VhcmNoQnV0dG9uU2l6ZX19cHggPGlucHV0IG5nLWRpc2FibGVkPSFmZC5QYXJhbWV0ZXJzLlNob3dHZXREYXRhQnV0dG9uIHR5cGU9cmFuZ2UgbWluPTEyIG1heD0zMiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLnNlYXJjaEJ1dHRvblNpemUgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm15LWF1dG8gbXgtMSBzbWFsbCBib2xkIG15LTJcIj5TZWFyY2ggYnV0dG9uIGxhYmVsOjwvZGl2PjxkaXYgY2xhc3M9bS0xPjxpbnB1dCBuZy1kaXNhYmxlZD0hZmQuUGFyYW1ldGVycy5TaG93R2V0RGF0YUJ1dHRvbiB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVyc0xhbmcuR2V0RGF0YUJ0bkxhYmVsPjwvZGl2PjxkaXYgY2xhc3M9XCJteS1hdXRvIG14LTEgc21hbGwgYm9sZCBteS0yXCI+U2VhcmNoIGJ1dHRvbiBzdHlsZTo8L2Rpdj48ZGl2IGNsYXNzPW0tMT48aW5wdXQgbmctZGlzYWJsZWQ9IWZkLlBhcmFtZXRlcnMuU2hvd0dldERhdGFCdXR0b24gdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuc2VhcmNoQnV0dG9uT3V0ZXJDbGFzcz48L2Rpdj48ZGl2IGNsYXNzPWQtZmxleD48ZGl2IGNsYXNzPVwibXktYXV0byBteC0xIHNtYWxsIGJvbGQgbXktMlwiPlNlYXJjaCBidXR0b24gaWNvbjo8L2Rpdj48ZGl2IGt0LWljb24tcGlja2VyIHNldC1kaXNhYmxlZD0hZmQuUGFyYW1ldGVycy5TaG93R2V0RGF0YUJ1dHRvbiBzZWxlY3QtY29sb3JzPXRydWUgc2VsZWN0LWljb25zPXRydWUgc2VsZWN0ZWQtaWNvbj1mZC5QYXJhbWV0ZXJzLnNlYXJjaEJ1dHRvbkljb24gc2VsZWN0ZWQtYnV0dG9uPWZkLlBhcmFtZXRlcnMuc2VhcmNoQnV0dG9uQ2xhc3M+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5Qcm9wZXJ0eVR5cGU9PVxcJ3RhYmxlXFwnXCIgY2xhc3M9XCJjb2wtMjQgcC0yXCI+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSA+IDBcIiBjbGFzcz1teS0yPjxkaXYgY2xhc3M9dGV4dC1jZW50ZXI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cInctMTAwIGJ0biBidG4teHMgYnRuLWxpZ2h0XCIgZGF0YS10b2dnbGU9bW9kYWwgZGF0YS10YXJnZXQ9I2RhdGFzZXRNYXBwZXJQYXJlbnRNb2RhbHt7ZmQuUHJlc2VudGF0aW9uSWR9fT48c3Bhbj5EZWZpbmUgcGFyZW50IGRhdGFzZXQ8L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdj48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWwgZm9yPWNiTXVsdGlsaW5le3tmZC5VdWlkUmVmfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JNdWx0aWxpbmV7e2ZkLlV1aWRSZWZ9fSBuZy1tb2RlbD1mZC5NdWx0aWxpbmUgbmctY2hlY2tlZD1mZC5NdWx0aWxpbmU+IFNlbGVjdCBtdWx0aXBsZSByZWNvcmRzPC9sYWJlbD48L2Rpdj48ZGl2IGlkZD1NQUlOPjxkaXY+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYkhpZGVEYXRhe3tmZC5VdWlkUmVmfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JIaWRlRGF0YXt7ZmQuVXVpZFJlZn19IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuSGlkZURhdGFVaSBuZy1jaGVja2VkPWZkLlBhcmFtZXRlcnMuSGlkZURhdGFVaT4gSGlkZSBkYXRhIFVJIGFuZCBwYWdlcjwvbGFiZWw+PC9kaXY+PGRpdj48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWwgZm9yPWNiQ2FjaGVSZXN1bHRze3tmZC5VdWlkUmVmfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JDYWNoZVJlc3VsdHN7e2ZkLlV1aWRSZWZ9fSBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkNhY2hlUmVzdWx0cyBuZy1jaGVja2VkPWZkLlBhcmFtZXRlcnMuQ2FjaGVSZXN1bHRzPiBDYWNoZSByZXN1bHRzPC9sYWJlbD48L2Rpdj48ZGl2PjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbCBmb3I9Y2JTaG93VGFibGVGZWF0dXJlc3t7ZmQuVXVpZFJlZn19PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPWNiU2hvd1RhYmxlRmVhdHVyZXN7e2ZkLlV1aWRSZWZ9fSBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlNob3dUYWJsZUZlYXR1cmVzIG5nLWNoZWNrZWQ9ZmQuUGFyYW1ldGVycy5TaG93VGFibGVGZWF0dXJlcz4gU2hvdyB0YWJsZSBmZWF0dXJlczwvbGFiZWw+PC9kaXY+PGRpdiBpZGQ9Y2FyZGhlYWRlcnRleHQgbmctaWY9XCJmZC5QYXJhbWV0ZXJzLlByZXNlbnRhdGlvblR5cGU9PVxcJ2NhcmRcXCdcIiBjbGFzcz1tdC0yPjxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWRcIj5DYXJkIGhlYWRlciB0ZXh0PC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkNhcmRIZWFkZXJUZXh0PjwvZGl2PjwvZGl2PjxkaXYgaWRkPXNob3dMb2FkaW5nTWVzc2FnZSBuZy1pZj1cImZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZT09XFwnZHJvcGRvd25cXCdcIiBjbGFzcz1teS0yPjxkaXYgY2xhc3M9ZC1mbGV4IHN0eWxlPVwianVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1wiPjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbCBmb3I9Y2JTaG93TG9hZGluZ01lc3NhZ2V7e2ZkLlByZXNlbnRhdGlvbklkfX0+TG9hZGluZyBtZXNzYWdlOjwvbGFiZWw+IDxsYWJlbCBuZy1jbGFzcz1cIntcXCdkaXNhYmxlZFxcJzohZmQuUGFyYW1ldGVyc0xhbmcuU2hvd0xvYWRpbmdNZXNzYWdlIH1cIiBjbGFzcz1cInN3aXRjaCBzd2l0Y2gtZ3JlZW4gc21hbGxcIj48aW5wdXQgbmctbW9kZWw9ZmQuUGFyYW1ldGVyc0xhbmcuU2hvd0xvYWRpbmdNZXNzYWdlIHR5cGU9Y2hlY2tib3ggbmctdHJ1ZS12YWx1ZT10cnVlIG5nLWZhbHNlLXZhbHVlPWZhbHNlIGNsYXNzPXN3aXRjaC1pbnB1dD4gPHNwYW4gY2xhc3M9c3dpdGNoLWxhYmVsIGRhdGEtb249T24gZGF0YS1vZmY9T2ZmPjwvc3Bhbj4gPHNwYW4gY2xhc3M9c3dpdGNoLWhhbmRsZT48L3NwYW4+PC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPW1iLTI+PGlucHV0IG5nLWRpc2FibGVkPSFmZC5QYXJhbWV0ZXJzTGFuZy5TaG93TG9hZGluZ01lc3NhZ2UgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnNMYW5nLkxvYWRpbmdNZXNzYWdlPjwvZGl2PjwvZGl2PjxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWQgbGFiZWwteHMgbXQtMlwiPlxcJ05vIGRhdGFcXCcgbWVzc2FnZTwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVyc0xhbmcuTm9EYXRhTXNnPjxkaXYgbmctaWY9XCJmZC5QYXJhbWV0ZXJzLlByZXNlbnRhdGlvblR5cGUhPVxcJ2Ryb3Bkb3duXFwnXCIgY2xhc3M9bXQtMj48ZGl2IGNsYXNzPW1iLTI+PGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZCBsYWJlbC14c1wiPkNzcyBzdHlsZTwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5jc3NTdHlsZT48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwiZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlPT1cXCdjYXJkXFwnXCI+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkNhcmQgY3NzIHN0eWxlPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkNhcmRDc3NTdHlsZT48ZGl2IGNsYXNzPW15LTI+PGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgYm9yZGVyLWJvdHRvbSBtYi0yXCI+Q2FyZCBzaXplPC9kaXY+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkNvbHVtbiBzaXplIHt7ZmQuUGFyYW1ldGVycy5DYXJkU2l6ZVhMZ319PC9sYWJlbD4gPGlucHV0IHR5cGU9cmFuZ2UgbWluPTAgbWF4PTI0IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuQ2FyZFNpemVYTGcgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5NZWRpdW0gc2l6ZSBzY3JlZW4ge3tmZC5QYXJhbWV0ZXJzLkNhcmRTaXplWE1kfX08L2xhYmVsPiA8aW5wdXQgdHlwZT1yYW5nZSBtaW49MCBtYXg9MjQgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5DYXJkU2l6ZVhNZCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPlNtYWxsIHNpemUgc2NyZWVuIHt7ZmQuUGFyYW1ldGVycy5DYXJkU2l6ZVhTbX19PC9sYWJlbD4gPGlucHV0IHR5cGU9cmFuZ2UgbWluPTAgbWF4PTI0IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuQ2FyZFNpemVYU20gY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5FeHRyYSBzbWFsbCBzaXplIHNjcmVlbiB7e2ZkLlBhcmFtZXRlcnMuQ2FyZFNpemVYWHN9fTwvbGFiZWw+IDxpbnB1dCB0eXBlPXJhbmdlIG1pbj0wIG1heD0yNCBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkNhcmRTaXplWFhzIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiPjwvZGl2PjwvZGl2PjxkaXYgaWRkPUhFQURFUlBST1BFUlRJRVM+PGRpdiBuZy1jbGljaz1cImZkLmxvY2FsVmFycy5zaG93SGVhZGVyUHJvcCA9ICFmZC5sb2NhbFZhcnMuc2hvd0hlYWRlclByb3BcIiBocmVmPSNIRUFERVJQUk9QRVJUSUVTIGNsYXNzPVwiZXhwYW5kLXByb3BlcnR5LXBhbmVsIHRhZyBib3JkZXItYm90dG9tIGJvcmRlci1zdWNjZXNzIG1iLTEgcGItMVwiIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIHJvbGU9YnV0dG9uIGFyaWEtZXhwYW5kZWQ9dHJ1ZSBhcmlhLWNvbnRyb2xzPUhFQURFUlBST1BFUlRJRVM+PHNwYW4gY2xhc3M9XCJjb2wgcC0wXCI+SEVBREVSIERFU0lHTjwvc3Bhbj4gPGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLXNob3c9ZmQubG9jYWxWYXJzLnNob3dIZWFkZXJQcm9wIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLWRvd25cIj48L2k+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PSFmZC5sb2NhbFZhcnMuc2hvd0hlYWRlclByb3AgY2xhc3M9XCJmYXMgZmEtYW5nbGUtdXBcIj48L2k+PC9kaXY+PGRpdiBjbGFzcz1cIm1iLTQgY29sbGFwc2VcIiBpZD1IRUFERVJQUk9QRVJUSUVTPjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5IZWFkZXIgZm9udCBzaXplPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLnRhYmxlLkhlYWRlckZvbnRTaXplPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+SGVhZGVyIEZvbnQgQ29sb3I8L2xhYmVsPiA8aW5wdXQgdHlwZT1jb2xvciBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLnRhYmxlLkhlYWRlckZvbnRDb2xvciBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkhlYWRlciBCRyBDb2xvcjwvbGFiZWw+IDxpbnB1dCB0eXBlPWNvbG9yIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMudGFibGUuSGVhZGVyQmdDb2xvciBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48L2Rpdj48L2Rpdj48ZGl2IGlkZD1UQUJMRVBST1BFUlRJRVM+PGRpdiBuZy1jbGljaz1cImZkLmxvY2FsVmFycy5zaG93VGFibGVQcm9wID0gIWZkLmxvY2FsVmFycy5zaG93VGFibGVQcm9wXCIgaHJlZj0jVEFCTEVQUk9QRVJUSUVTIGNsYXNzPVwiZXhwYW5kLXByb3BlcnR5LXBhbmVsIHRhZyBib3JkZXItYm90dG9tIGJvcmRlci1zdWNjZXNzIG1iLTEgcGItMVwiIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIHJvbGU9YnV0dG9uIGFyaWEtZXhwYW5kZWQ9dHJ1ZSBhcmlhLWNvbnRyb2xzPVRBQkxFUFJPUEVSVElFUz48c3BhbiBjbGFzcz1cImNvbCBwLTBcIj5UQUJMRSBERVNJR048L3NwYW4+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PWZkLmxvY2FsVmFycy5zaG93VGFibGVQcm9wIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLWRvd25cIj48L2k+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PSFmZC5sb2NhbFZhcnMuc2hvd1RhYmxlUHJvcCBjbGFzcz1cImZhcyBmYS1hbmdsZS11cFwiPjwvaT48L2Rpdj48ZGl2IGNsYXNzPVwibWItNCBjb2xsYXBzZVwiIGlkPVRBQkxFUFJPUEVSVElFUz48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+VGFibGUgd2lkdGg8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMudGFibGUud2lkdGg+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5UYWJsZSBmb250IHNpemU8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMudGFibGUuZm9udFNpemU+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5UYWJsZSBmb250IGNvbG9yPC9sYWJlbD4gPGlucHV0IHR5cGU9Y29sb3IgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy50YWJsZS5Gb250Q29sb3IgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5UYWJsZSBCRyBDb2xvcjwvbGFiZWw+IDxpbnB1dCB0eXBlPWNvbG9yIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMudGFibGUuVGFibGVCZ0NvbG9yIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+VGFibGUgdmVydGljYWwgc3BhY2luZzwvbGFiZWw+IDxpbnB1dCB0eXBlPXJhbmdlIG1pbj0wIG1heD00IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMudGFibGUuVmVydGljYWxTcGFjaW5nIGNsYXNzPXctMTAwPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+VGFibGUgY2VsbCBwYWRkaW5nPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLnRhYmxlLmNlbGxQYWRkaW5nPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+U2VsZWN0ZWQgcm93KHMpIHN0eWxlPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLnRhYmxlLnNlbGVjdGVkUm93U3R5bGU+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5Ib3ZlciByb3cgc3R5bGU8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMudGFibGUuaG92ZXJSb3dTdHlsZT48L2Rpdj48L2Rpdj48ZGl2IGlkZD1QTEFDRUhPTERFUlBST1BFUlRJRVMga3QtcHJvYy1waC1wcm9wZXJ0eT48L2Rpdj48ZGl2IGlkZD1QQUdFUlBST1BFUlRJRVM+PGRpdiBuZy1jbGljaz1cImZkLmxvY2FsVmFycy5zaG93UGFnZXJQcm9wID0gIWZkLmxvY2FsVmFycy5zaG93UGFnZXJQcm9wXCIgaHJlZj0jUEFHRVJQUk9QRVJUSUVTIGNsYXNzPVwiZXhwYW5kLXByb3BlcnR5LXBhbmVsIHRhZyBib3JkZXItYm90dG9tIGJvcmRlci1zdWNjZXNzIG1iLTEgcGItMVwiIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIHJvbGU9YnV0dG9uIGFyaWEtZXhwYW5kZWQ9ZmFsc2UgYXJpYS1jb250cm9scz1QQUdFUlBST1BFUlRJRVM+PHNwYW4gY2xhc3M9XCJjb2wgcC0wXCI+UEFHRVIgUFJPUEVSVElFUzwvc3Bhbj4gPGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLXNob3c9ZmQubG9jYWxWYXJzLnNob3dQYWdlclByb3AgY2xhc3M9XCJmYXMgZmEtYW5nbGUtZG93blwiPjwvaT4gPGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLXNob3c9IWZkLmxvY2FsVmFycy5zaG93UGFnZXJQcm9wIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLXVwXCI+PC9pPjwvZGl2PjxkaXYgY2xhc3M9XCJtYi00IGNvbGxhcHNlXCIgaWQ9UEFHRVJQUk9QRVJUSUVTPjxkaXYgY2xhc3M9XCJteS0yIGJvcmRlci1ib3R0b21cIj48ZGl2IGNsYXNzPW15LTE+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkhpZGUgcGFnZXI6IDxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPWNidXNlUGFnaW5hdGlvbnt7ZmQuVXVpZFJlZn19IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuaGlkZVBhZ2VyIG5nLWNoZWNrZWQ9ZmQuUGFyYW1ldGVycy5oaWRlUGFnZXI+PC9sYWJlbD48L2Rpdj48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+aXRlbXMgcGVyIHBhZ2UgfCBQYWdlOjwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVyc0xhbmcuUGFnZXJMYWJlbDE+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5vZjwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVyc0xhbmcuUGFnZXJMYWJlbDI+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5pdGVtczwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVyc0xhbmcuUGFnZXJMYWJlbDM+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5Oby4gb2YgaXRlbXMgcGVyIHBhZ2U6PC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkl0ZW1zT25QYWdlPjxkaXYgY2xhc3M9bXktMT48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+RW5hYmxlIHBhZ2UgYnJlYWtzIDxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPWJjcGFnZWJyZWFre3tmZC5VdWlkUmVmfX0gbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5FbmFibGVQYWdlQnJlYWtzIG5nLWNoZWNrZWQ9ZmQuUGFyYW1ldGVycy5FbmFibGVQYWdlQnJlYWtzPjwvbGFiZWw+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBpZGQ9REFUQUVYUE9SVD48ZGl2IG5nLWNsaWNrPVwiZmQubG9jYWxWYXJzLnNob3dFeHBvcnRQcm9wID0gIWZkLmxvY2FsVmFycy5zaG93RXhwb3J0UHJvcFwiIGhyZWY9I0RBVEFFWFBPUlQgY2xhc3M9XCJleHBhbmQtcHJvcGVydHktcGFuZWwgdGFnIGJvcmRlci1ib3R0b20gYm9yZGVyLXN1Y2Nlc3MgbWItMSBwYi0xXCIgYXJpYS1jb250cm9scz1EQVRBRVhQT1JUIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIHJvbGU9YnV0dG9uIGFyaWEtZXhwYW5kZWQ9ZmFsc2U+PHNwYW4gY2xhc3M9XCJjb2wgcC0wXCI+REFUQSBFWFBPUlQ8L3NwYW4+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PWZkLmxvY2FsVmFycy5zaG93RXhwb3J0UHJvcCBjbGFzcz1cImZhcyBmYS1hbmdsZS1kb3duXCI+PC9pPiA8aSBzdHlsZT1cImZvbnQtc2l6ZTogbGFyZ2U7XCIgbmctc2hvdz0hZmQubG9jYWxWYXJzLnNob3dFeHBvcnRQcm9wIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLXVwXCI+PC9pPjwvZGl2PjxkaXYgY2xhc3M9XCJtYi00IGNvbGxhcHNlXCIgaWQ9REFUQUVYUE9SVD48ZGl2IG5nLWlmPVwiZmQuUGFyYW1ldGVycy5TZWxlY3RlZFJlc291cmNlVHlwZT09XFwnZmlsZVxcJ1wiPjxkaXYgY2xhc3M9bXktMj48bGFiZWw+UHJldmlldyBmaWxlIGJ1dHRvbiBsYWJlbDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVyc0xhbmcuUHJldmlld0xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9bXktMj48bGFiZWw+RG93bmxvYWQgZmlsZSBidXR0b24gbGFiZWw8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnNMYW5nLkRvd25sb2FkTGFiZWw+PC9kaXY+PGRpdj48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWwgZm9yPWNiTm9Eb3dubG9hZHt7ZmQuUHJlc2VudGF0aW9uSWR9fT48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCIgbmFtZT1jYk5vRG93bmxvYWR7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5Ob0Rvd25sb2FkIG5nLWNoZWNrZWQ9ZmQuUGFyYW1ldGVycy5Ob0Rvd25sb2FkPiBEaXNhYmxlIGRvd25sb2FkPC9sYWJlbD48L2Rpdj48ZGl2PjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbCBmb3I9Y2JOb1ByZXZpZXd7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JOb1ByZXZpZXd7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5Ob1ByZXZpZXcgbmctY2hlY2tlZD1mZC5QYXJhbWV0ZXJzLk5vUHJldmlldz4gRGlzYWJsZSBwcmV2aWV3PC9sYWJlbD48L2Rpdj48L2Rpdj48ZGl2PjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbCBmb3I9Y2JOb1ByZXZpZXd7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JOb1ByZXZpZXd7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5leHBvcnRFbmFibGVkIG5nLWNoZWNrZWQ9ZmQuUGFyYW1ldGVycy5leHBvcnRFbmFibGVkPiBFbmFibGUgZXhwb3J0IHRvIGZpbGU8L2xhYmVsPjwvZGl2PjxkaXY+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYk5vUHJldmlld3t7ZmQuUHJlc2VudGF0aW9uSWR9fT48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCIgbmFtZT1jYk5vUHJldmlld3t7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLmNvcHlUb2NsaXBib2FyZEVuYWJsZWQgbmctY2hlY2tlZD1mZC5QYXJhbWV0ZXJzLmNvcHlUb2NsaXBib2FyZEVuYWJsZWQ+IEVuYWJsZSBjb3B5IHRvIGNsaXBib2FyZDwvbGFiZWw+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBpZGQ9QU5BTFlUSUNTPjxkaXYgbmctY2xpY2s9XCJmZC5sb2NhbFZhcnMuc2hvd0FuYWxQcm9wID0gIWZkLmxvY2FsVmFycy5zaG93QW5hbFByb3BcIiBocmVmPSNBTkFMWVRJQ1MgY2xhc3M9XCJleHBhbmQtcHJvcGVydHktcGFuZWwgdGFnIGJvcmRlci1ib3R0b20gYm9yZGVyLXN1Y2Nlc3MgbWItMSBwYi0xXCIgZGF0YS10b2dnbGU9Y29sbGFwc2Ugcm9sZT1idXR0b24gYXJpYS1leHBhbmRlZD1mYWxzZSBhcmlhLWNvbnRyb2xzPUFOQUxZVElDUz48c3BhbiBjbGFzcz1cImNvbCBwLTBcIj5BTkFMWVRJQ1M8L3NwYW4+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PWZkLmxvY2FsVmFycy5zaG93QW5hbFByb3AgY2xhc3M9XCJmYXMgZmEtYW5nbGUtZG93blwiPjwvaT4gPGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLXNob3c9IWZkLmxvY2FsVmFycy5zaG93QW5hbFByb3AgY2xhc3M9XCJmYXMgZmEtYW5nbGUtdXBcIj48L2k+PC9kaXY+PGRpdiBjbGFzcz1cIm1iLTQgY29sbGFwc2VcIiBpZD1BTkFMWVRJQ1M+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSA+IDBcIiBjbGFzcz1teS0yPjxidXR0b24gbmctY2xpY2s9ZmQubG9jYWxWYXJzLmFkZEFuYWx5dGljcygpIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4teHMgdy0xMDBcIj5BZGQgQW5hbHl0aWNzPC9idXR0b24+PGRpdiBuZy1yZXBlYXQ9XCJpdGVtIGluIGZkLlBhcmFtZXRlcnMuQW5hbHl0aWNzXCI+PGRpdiBuZy1jbGljaz1cIml0ZW0uU2hvdyA9ICFpdGVtLlNob3dcIiBjbGFzcz1cImV4cGFuZC1wcm9wZXJ0eS1wYW5lbCB0YWcgYm9yZGVyLWJvdHRvbSBib3JkZXItc3VjY2VzcyBtYi0xIHBiLTFcIiBkYXRhLXRvZ2dsZT1jb2xsYXBzZSBocmVmPSNjaGFydFByb3BlcnR5UGFuZWx7e2ZkLlByZXNlbnRhdGlvbklkfX17eyRpbmRleH19IHJvbGU9YnV0dG9uIGFyaWEtZXhwYW5kZWQ9dHJ1ZSBhcmlhLWNvbnRyb2xzPW1haW5Qcm9wZXJ0eVBhbmVse3tmZC5QcmVzZW50YXRpb25JZH19PjxzcGFuIGNsYXNzPVwiY29sIGJvbGQgcC0wXCI+QU5BTFlUSUNTIHt7JGluZGV4fX08L3NwYW4+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PWxvY2FsVmFycy5zaG93QmFzaWMgY2xhc3M9XCJmYXMgZmEtYW5nbGUtZG93blwiPjwvaT4gPGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLXNob3c9IWxvY2FsVmFycy5zaG93QmFzaWMgY2xhc3M9XCJmYXMgZmEtYW5nbGUtdXBcIj48L2k+PC9kaXY+PGRpdiBjbGFzcz1cImNvbGxhcHNlIHNob3dcIiBpZD1jaGFydFByb3BlcnR5UGFuZWx7e2ZkLlByZXNlbnRhdGlvbklkfX17eyRpbmRleH19PjxsYWJlbCBjbGFzcz1cInBsLTAgbGFiZWwteHMgdGV4dC1tdXRlZFwiPkdyb3VwIGJ5PC9sYWJlbD48a3QtZHJvcGRvd24tc3RhbmRhcmQgY2xhc3M9bS0xIG5nLW1vZGVsPWl0ZW0uQWdncmVnYXRlRmllbGQgc2VsZWN0ZWQtaXRlbXM9aXRlbS5BZ2dyZWdhdGVGaWVsZCBpcy1tdWx0aXBsZT1mYWxzZSBzaXplPVwiXFwnc21hbGxcXCdcIiBuYW1lPXt7bmFtZX19IHJlcXVpcmVkLWZpZWxkPXRydWUgZHJvcGRvd24taXRlbXM9ZmQubG9jYWxWYXJzLmZpZWxkc0xpc3QgZHJvcGRvd24taWQ9XCJcXCdQYXJhbWV0ZXJzLkFnZ3JlZ2F0ZUZpZWxkXFwnK2ZkLlByZXNlbnRhdGlvbklkICsgJGluZGV4XCIgcGFyZW50LWZvcm0taWQ9XCJcXCdQYXJhbWV0ZXJzLkFnZ3JlZ2F0ZUZpZWxkXFwnK2ZkLlByZXNlbnRhdGlvbklkICsgJGluZGV4XCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgYWdncmVnYXRlIGZpZWxkc1xcJ1wiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PGxhYmVsIGNsYXNzPVwicGwtMCBsYWJlbC14cyB0ZXh0LW11dGVkXCI+U2VsZWN0IGNhbGN1bGF0ZWQgZmllbGQ8L2xhYmVsPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBjbGFzcz1tLTEgbmctbW9kZWw9aXRlbS5DYWxjdWxhdGVGaWVsZCBzZWxlY3RlZC1pdGVtcz1pdGVtLkNhbGN1bGF0ZUZpZWxkIGlzLW11bHRpcGxlPWZhbHNlIHNpemU9XCJcXCdzbWFsbFxcJ1wiIG5hbWU9QW5hbHl0aWNze3skaW5kZXh9fUNhbGN1bGF0ZUZpZWxke3tmZC5QcmVzZW50YXRpb25JZH19IHJlcXVpcmVkLWZpZWxkPXRydWUgZHJvcGRvd24taXRlbXM9ZmQubG9jYWxWYXJzLmZpZWxkc0xpc3QgZHJvcGRvd24taWQ9XCJcXCdQYXJhbWV0ZXJzLkNhbGN1bGF0ZUZpZWxkXFwnK2ZkLlByZXNlbnRhdGlvbklkKyAkaW5kZXhcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ3ZpZXdDaGFydFByb3BlcnRpZXNcXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCBjYWxjdWxhdGVkIGZpZWxkc1xcJ1wiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PGxhYmVsIGNsYXNzPVwicGwtMCBsYWJlbC14cyB0ZXh0LW11dGVkXCI+U2VsZWN0IGZ1bmN0aW9uPC9sYWJlbD48a3QtZHJvcGRvd24tc3RhbmRhcmQgY2xhc3M9bS0xIG5nLW1vZGVsPWl0ZW0uQ2FsY3VsYXRlRnVuY3Rpb24gc2VsZWN0ZWQtaXRlbXM9aXRlbS5DYWxjdWxhdGVGdW5jdGlvbiBpcy1tdWx0aXBsZT1mYWxzZSBzaXplPVwiXFwnc21hbGxcXCdcIiBuYW1lPVBhcmFtZXRlcnMuQ2FsY3VsYXRlRmllbGR7e2ZkLlByZXNlbnRhdGlvbklkfX0gcmVxdWlyZWQtZmllbGQ9dHJ1ZSBkcm9wZG93bi1pdGVtcz1mZC5sb2NhbFZhcnMuY2FsY3VsYXRlRnVuY3Rpb24gZHJvcGRvd24taWQ9XCJcXCdQYXJhbWV0ZXJzLkNhbGN1bGF0ZUZ1bmN0aW9uXFwnK2ZkLlByZXNlbnRhdGlvbklkICsgJGluZGV4XCIgcGFyZW50LWZvcm0taWQ9XCJcXCd2aWV3Q2hhcnRQcm9wZXJ0aWVzXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgZnVuY3Rpb25cXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjxkaXYgY2xhc3M9XCJtYi0yIHRleHQtY2VudGVyXCI+PGJ1dHRvbiBuZy1jbGljaz1mZC5QYXJhbWV0ZXJzLkFuYWx5dGljcy5zcGxpY2UoJGluZGV4LDEpIHR5cGU9YnV0dG9uIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi14cyBidG4td2FybmluZ1wiPjxzcGFuPlJlbW92ZSBhbmFseXRpY3M8L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09M1wiIGNsYXNzPVwicm93IGJvcmRlciBtLTAgcC0yXCI+PGRpdiBrdC1pbml0aWF0ZS10YXNrLXdpZGdldCBjbGFzcz13LTEwMD48L2Rpdj48L2Rpdj48L25nLWZvcm0+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza0RlZkRldGFpbHMuaHRtbCcsJzxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1jb2wtc20tNj48bGFiZWw+VGFzayBuYW1lIDo8L2xhYmVsPiB7e3Rhc2tEZWZpbml0aW9uLnJlc291cmNlZGVmbGFuZ19zZXRbMF0uTmFtZX19PC9kaXY+PGRpdiBjbGFzcz1jb2wtc20tNj48bGFiZWw+VGFzayBEZWZpbml0aW9uIElkIDo8L2xhYmVsPiB7e3Rhc2tEZWZpbml0aW9uLmlkfX08L2Rpdj48ZGl2IGNsYXNzPWNvbC1zbS02PjxsYWJlbD5UYXNrIHN1YmplY3QgOjwvbGFiZWw+IHt7dGFza0RlZmluaXRpb24ucmVzb3VyY2VkZWZsYW5nX3NldFswXS5TdWJqZWN0fX08L2Rpdj48ZGl2IGNsYXNzPWNvbC1zbS02PjxsYWJlbD5DcmVhdGVkIG9uIDo8L2xhYmVsPiB7e3Rhc2tEZWZpbml0aW9uLnJlc291cmNlZGVmbGFuZ19zZXRbMF0uQ3JlYXRlZERhdGVUaW1lIHwgZGF0ZTpcXCdkZC5NTS55eXl5IEhIOm1tOnNzLnNzc1xcJ319PC9kaXY+PGRpdiBjbGFzcz1jb2wtc20tMTI+PGxhYmVsPlRhc2sgZGVzY3JpcHRpb24gOjwvbGFiZWw+IHt7dGFza0RlZmluaXRpb24ucmVzb3VyY2VkZWZsYW5nX3NldFswXS5EZXNjcmlwdGlvbn19PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza0RldGFpbHMuaHRtbCcsJzxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGxhYmVsIGNsYXNzPWNvbC1zbS0zPlRhc2sgbmFtZTwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtc20tNj48Yj57e3ROYW1lfX08L2I+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48bGFiZWwgY2xhc3M9Y29sLXNtLTM+VGFzayBzdGF0dXM8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLXNtLTY+PGI+e3t0SW5pdCA/IHRJbml0LlN0YXR1cy5OYW1lIDogdEV4ZS5TdGF0dXMuVmFsdWV9fTwvYj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxsYWJlbCBjbGFzcz1jb2wtc20tMz5TdGFydCBpbnN0YW5jZSBJRDwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtc20tNj48Yj57e3RJbml0ID8gdEluaXQuaWQgOiB0RXhlLlRhc2tJbml0aWF0ZUlkLmlkfX08L2I+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48bGFiZWwgY2xhc3M9Y29sLXNtLTM+U3RhcnRlZCBvbjwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtc20tNj48Yj57e3RJbml0ID8gdEluaXQuQ3JlYXRlZERhdGVUaW1lIDogdEV4ZS5UYXNrSW5pdGlhdGVJZC5DcmVhdGVkRGF0ZVRpbWUgfCBkYXRlOlxcJ2RkLk1NLnl5eXkgSEg6bW06c3Muc3NzXFwnfX08L2I+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48bGFiZWwgY2xhc3M9Y29sLXNtLTM+RXhlY3V0ZSBpbnN0YW5jZSBJRDwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtc20tNj48Yj57e3RFeGUuaWR9fTwvYj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxsYWJlbCBjbGFzcz1jb2wtc20tMz5FeGVjdXRlIGluc3RhbmNlIGNyZWF0ZWQgb248L2xhYmVsPjxkaXYgY2xhc3M9Y29sLXNtLTY+PGI+e3t0RXhlLkNyZWF0ZWREYXRlVGltZSB8IGRhdGU6XFwnZGQuTU0ueXl5eSBISDptbTpzcy5zc3NcXCd9fTwvYj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrRHJvcGRvd24uaHRtbCcsJzxkaXYgY2xhc3M9XCJkcm9wZG93biBkLWlubGluZS1ibG9ja1wiIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1wcm9wXFwnOmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCBmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZH1cIj48YSBocmVmIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhbmdlciBib3JkZXItMCBidG4tc21cIiB0aXRsZT1cIlJlbW92ZSBmaWVsZFwiIGlkPWRyb3Bkb3duTWVudUJ1dHRvbiBuZy1jbGljaz1mZC5sb2NhbFZhcnMudG9nZ2xlRHJvcGRvd24oKSBhcmlhLWhhc3BvcHVwPXRydWUgYXJpYS1leHBhbmRlZD1mYWxzZT48aSBjbGFzcz1cImZhIGZhLXRyYXNoXCI+PC9pPjwvYT48ZGl2IHN0eWxlPVwidmlzaWJpbGl0eToge3tmZC5sb2NhbFZhcnMuc2hvd01lbnUgPyBcXCd2aXNpYmxlXFwnOiBcXCdoaWRkZW5cXCcgfX1cIiBjbGFzcz1cImRyb3Bkb3duLW5ld21lbnUgc2hhZG93IHAtMCBkcm9wZG93bi1tYXgtY29udGVudC13aWR0aFwiIGFyaWEtbGFiZWxsZWRieT1kcm9wZG93bk1lbnVCdXR0b24+PGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHAtMCBweC0xIGJnLWxpZ2h0XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1leGNsYW1hdGlvbi10cmlhbmdsZSB0ZXh0LWRhbmdlclwiPjxzcGFuIGNsYXNzPVwibWwtMiBzbWFsbFwiPjwvc3Bhbj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1tLTE+PGRpdiBjbGFzcz1cIm0tMSBzbWFsbCBib2xkIHRleHQtZGFya1wiPkNsaWNrIENvbmZpcm0gdG8gZGVsZXRlIHdpZGdldCE8L2Rpdj48ZGl2IG5nLWlmPWZhbHNlIGNsYXNzPVwibWwtMSBzbWFsbCB0ZXh0LWRhcmtcIj5UaGlzIGFjdGlvbiBtYXkgcmVzdWx0IGluIGEgbG9zcyBvZiBkYXRhITwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cC0xPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1kYW5nZXJcIiB0aXRsZT1Db25maXJtIG5nLWNsaWNrPWZkLmxvY2FsVmFycy50b2dnbGVEcm9wZG93bigpO3JlbW92ZUZpZWxkKCRpbmRleCk+Q29uZmlybSA8aSBjbGFzcz1cIm1sLTIgZmEgZmEtY2hlY2tcIj48L2k+PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi13YXJuaW5nXCIgdGl0bGU9Q2FuY2VsIG5nLWNsaWNrPWZkLmxvY2FsVmFycy50b2dnbGVEcm9wZG93bigpPkNhbmNlbDwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tEcm9wZG93bjIuaHRtbCcsJzxkaXYgY2xhc3M9XCJkcm9wZG93biBkLWlubGluZS1ibG9ja1wiIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1wcm9wXFwnOmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCBsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZH1cIj48YSBocmVmIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhbmdlciBib3JkZXItMCBidG4tc21cIiB0aXRsZT1cIlJlbW92ZSBmaWVsZFwiIGlkPWRyb3Bkb3duTWVudUJ1dHRvbiBuZy1jbGljaz1sb2NhbFZhcnMudG9nZ2xlRHJvcGRvd24oKSBhcmlhLWhhc3BvcHVwPXRydWUgYXJpYS1leHBhbmRlZD1mYWxzZT48aSBjbGFzcz1cImZhIGZhLXRyYXNoXCI+PC9pPjwvYT48ZGl2IHN0eWxlPVwidmlzaWJpbGl0eToge3tsb2NhbFZhcnMuc2hvd01lbnUgPyBcXCd2aXNpYmxlXFwnOiBcXCdoaWRkZW5cXCcgfX1cIiBjbGFzcz1cImRyb3Bkb3duLW5ld21lbnUgc2hhZG93IHAtMCBkcm9wZG93bi1tYXgtY29udGVudC13aWR0aFwiIGFyaWEtbGFiZWxsZWRieT1kcm9wZG93bk1lbnVCdXR0b24+PGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHAtMCBweC0xIGJnLWxpZ2h0XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1leGNsYW1hdGlvbi10cmlhbmdsZSB0ZXh0LWRhbmdlclwiPjxzcGFuIGNsYXNzPVwibWwtMiBzbWFsbFwiPjwvc3Bhbj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1tLTE+PGRpdiBjbGFzcz1cIm0tMSBzbWFsbCBib2xkIHRleHQtZGFya1wiPkNsaWNrIENvbmZpcm0gdG8gZGVsZXRlIHdpZGdldCE8L2Rpdj48ZGl2IG5nLWlmPWZhbHNlIGNsYXNzPVwibWwtMSBzbWFsbCB0ZXh0LWRhcmtcIj5UaGlzIGFjdGlvbiBtYXkgcmVzdWx0IGluIGEgbG9zcyBvZiBkYXRhITwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cC0xPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1kYW5nZXJcIiB0aXRsZT1Db25maXJtIG5nLWNsaWNrPXJlbW92ZUZpZWxkKCRpbmRleCk+Q29uZmlybTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4td2FybmluZ1wiIHRpdGxlPUNhbmNlbCBuZy1jbGljaz1sb2NhbFZhcnMudG9nZ2xlRHJvcGRvd24oKT5DYW5jZWw8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrRXhlY3V0ZU91dGNvbWVzLmh0bWwnLCc8ZGl2IGNsYXNzPXAtMT48ZGl2IGNsYXNzPWNvbnRyb2wtZ3JvdXAgbmctaWY9IWxvY2FsVmFycy5zaG93SW5saW5lVGFzaz48ZGl2IGNsYXNzPWJ0bi1ncm91cCBuZy1zaG93PVwidGFza0V4ZS5TdGF0dXMuTmFtZSE9XFwnY29tcGxldGVkXFwnXCI+PGJ1dHRvbiBuZy1yZXBlYXQ9XCJvdXRjb21lIGluIG91dGNvbWVzIHRyYWNrIGJ5ICRpbmRleFwiIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWxvY2FsVmFycy5Qcm9jZXNzT3V0Y29tZShvdXRjb21lKSBjbGFzcz1cImJ0biB7e291dGNvbWUuYnRuQ2xhc3N9fVwiPnt7b3V0Y29tZS5idG5OYW1lfX0gPHNwYW4gY2xhc3M9XCJmYSBmYS17e291dGNvbWUuaWNvbn19XCI+PC9zcGFuPiZuYnNwPC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBuZy1zaG93PWxvY2FsVmFycy5zaG93SW5saW5lVGFzaz48ZGl2IGt0LXRhc2stcHJvYy1kaXJlY3RpdmUgZmQ9ZmQgbG9jYWwtdmFycz1sb2NhbFZhcnMgdGFzay1kZWZpbml0aW9uPXRhc2tEZWZpbml0aW9uPjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tGaWxlcy5odG1sJywnPGRpdiBjbGFzcz1cIm15LTEgd2lkZ2V0LWhlYWRcIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtYWN0aXZlIG0tMSBzaGFkb3dcXCc6ZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPjB9XCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgYmctbGlnaHRcIiBuZy1pZj1cImZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xXCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMCBiZy1ncmF5LTEwMFwiPjxpIGNsYXNzPVwiZmEgZmEtZmlsZS1hbHQgbXgtMlwiPjwvaT48bGFiZWw+RmlsZSBsaXN0ICh7e2ZkLlByZXNlbnRhdGlvbklkfX0pPC9sYWJlbD4gPGEgaHJlZiB0aXRsZT1zb3J0IG5nLWNsYXNzPVwie1xcJ3dpZGdldC1wcm9wXFwnOmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCBmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZH1cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCB7e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZSB3aWRnZXQtcHJvcFwiPjxpIGNsYXNzPVwie3tncmlkVHlwZX19LWVsZW1lbnQtZHJhZy1oYW5kbGUgZmFzIGZhLWdyaXAtdmVydGljYWxcIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgdGV4dC1yaWdodCBteS1hdXRvXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1mZC5sb2NhbFZhcnMuc2hvd1Byb3BlcnRpZXMoMSkgbmctY2xhc3M9XCJ7XFwnYnRuLXdhcm5pbmdcXCc6ZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT1cXCdcXCcgJiYgZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT11bmRlZmluZWQsIFxcJ2J0bi1vdXRsaW5lLXByaW1hcnkgbm8tYm9yZGVyXFwnOmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZD09XFwnXFwnIHx8IGZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZD09dW5kZWZpbmVkfVwiIGNsYXNzPVwiYnRuIGJ0bi14c1wiPjxzcGFuIG5nLWlmPVwiZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT1cXCdcXCcgJiYgZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT11bmRlZmluZWRcIj57e2ZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZH19PC9zcGFuPiA8c3BhbiBuZy1pZj1cImZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZD09XFwnXFwnIHx8IGZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZD09dW5kZWZpbmVkXCI+U2VsZWN0IGZpbGU8L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxhIGhyZWYgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCBidG4tc21cIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtcHJvcFxcJzpmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT11bmRlZmluZWR9XCIgdGl0bGU9XCJTaG93L2hpZGUgcHJvcGVydGllc1wiIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5zaG93UHJvcGVydGllcygyKT48aSBjbGFzcz1cImZhcyBmYS1jb2dcIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48ZGl2IGt0LXRhc2stZHJvcGRvd24+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLmZpbGVMaXN0RG93bmxvYWRlZCAmJiBmZC5sb2NhbFZhcnMuZmlsZXNEYXRhLmRhdGEubGVuZ3RoPjBcIiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpbmsgYnRuLXhzXCIgbmctY2xpY2s9XCJmZC5pc0NvbGxhcHNlZEZpbGVzTGlzdCA9ICFmZC5pc0NvbGxhcHNlZEZpbGVzTGlzdFwiPjxzcGFuIG5nLWNsYXNzPVwie1xcJ2ZhIGZhLXBsdXMtc3F1YXJlXFwnOiAhZmQuaXNDb2xsYXBzZWRGaWxlc0xpc3QsXFwnZmEgZmEtbWludXMtc3F1YXJlXFwnOiBmZC5pc0NvbGxhcHNlZEZpbGVzTGlzdCB9XCI+PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU+MCAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MVwiIGNsYXNzPXAtMj48ZGl2IGt0LWZvcm0tZWxlbWVudC1wcm9wZXJ0aWVzIGZkPWZkIGxvY2FsLXZhcnM9ZmQubG9jYWxWYXJzPjwvZGl2PjwvZGl2PjxkaXYgbmctZm9ybT10YXNrRmlsZXNTZWFyY2hGb3Jte3tmZC5QcmVzZW50YXRpb25JZH19IGNsYXNzPWZvcm0taG9yaXpvbnRhbCByb2xlPWZvcm0+PGRpdiBuZy1zaG93PVwiKGZkLlNob3dTZWFyY2hGb3JtICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yKSB8fCAoZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0xICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xKVwiPjxkaXYgY2xhc3M9XCJwLTAgYm9yZGVyLWJvdHRvbSBtYi0yXCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgcC0xIHRleHQtcHJpbWFyeVwiPjxkaXYgY2xhc3M9XCJjb2wgcC0wXCI+PGkgY2xhc3M9XCJmYSBmYS1zZWFyY2hcIj48L2k+IDxzcGFuIGNsYXNzPW1sLTI+e3tmZC5TZWFyY2hUZXh0fX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHB4LTBcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYnRuLXhzIGJvcmRlci0wXCIgZGF0YS10b2dnbGU9Y29sbGFwc2UgZGF0YS10YXJnZXQ9I2lzQ29sbGFwc2VJZHt7OjpmZC5QcmVzZW50YXRpb25JZH19IGFyaWEtZXhwYW5kZWQ9e3tmZC5sb2NhbFZhcnMuaXNDb2xsYXBzZWR9fSBhcmlhLWNvbnRyb2xzPWlzQ29sbGFwc2VkSWR7ezo6ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1jbGljaz1cImZkLmxvY2FsVmFycy5pc0NvbGxhcHNlZCA9ICFmZC5sb2NhbFZhcnMuaXNDb2xsYXBzZWRcIj48c3BhbiBuZy1jbGFzcz1cIntcXCdmYSBmYS1jaGV2cm9uLWRvd25cXCc6ICFmZC5sb2NhbFZhcnMuaXNDb2xsYXBzZWQsXFwnZmEgZmEtY2hldnJvbi1yaWdodFxcJzogZmQubG9jYWxWYXJzLmlzQ29sbGFwc2VkIH1cIj48L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbGxhcHNlIHNob3dcIiBpZD1pc0NvbGxhcHNlSWR7ezo6ZmQuUHJlc2VudGF0aW9uSWR9fT48ZGl2IG5nLWlmPVwiIWZkLmxvY2FsVmFycy5mb3JtTG9hZGVkICYmIGZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MVwiIGNsYXNzPVwicm93IG0tMCBib3JkZXItMFwiIGt0LXByb2Nlc3NpbmctYW5pbWF0aW9uLXRpbWVsaW5lIGFuaW1hdGlvbi10eXBlPWZvcm0gc2hvdy1tc2c9ZmFsc2UgbWVzc2FnZT1cIkxvYWRpbmcgZm9ybS4uLlwiPjwvZGl2PjxkaXYgbmctaWY9XCIoZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0xIHx8IGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yKVwiPjxkaXYgY2xhc3M9XCJtdC0xIHAtMiB0ZXh0LXByaW1hcnlcIiBuZy1pZj1cImZkLmxvY2FsVmFycy5mb3JtTG9hZGVkICYmIGZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQubGVuZ3RoPT0wXCI+PHNwYW4gY2xhc3M9bXItMz5Gb3JtIGlzIG5vdCBkZWZpbmVkIG9yIGVtcHR5PC9zcGFuPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgdGl0bGU9Q29uZmlybSBuZy1jbGljaz1mZC5sb2NhbFZhcnMuZ2V0Rm9ybVJlc291cmNlT3JpZ2luYWwoKT5SZWxvYWQgZmlsZSBmb3JtIDxpIGNsYXNzPVwibWwtMiBmYXMgZmEtc3luY1wiPjwvaT48L2J1dHRvbj48L2Rpdj48ZGl2IGt0LWdyaWQgZ3JpZC10eXBlPWZkLmxvY2FsVmFycy5ncmlkc3RlclR5cGUgc2hvdy1zZWFyY2gtZmlsdGVycz1mZC5sb2NhbFZhcnMuc2hvd1NlYXJjaEZpbHRlcnMgcmVzb3VyY2UtZm9ybS1sb2FkZWQ9ZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQgcGFyZW50LXJlc291cmNlLWRlZi1pZD1mZC5QYXJlbnREYXRhc2V0RGVmSWQgcmVzb3VyY2UtcmVjb3JkLWlkPWZkLmxvY2FsVmFycy5kYXRhc2V0UmVjb3JkSWQgcmVzb3VyY2UtZGVmaW5pdGlvbj1yZXNvdXJjZURlZmluaXRpb24gZm9ybS1wYXJhbXM9ZmQubG9jYWxWYXJzLmZvcm1QYXJhbXMgZm9ybS1wYXJhbXMtcGFyZW50PWZvcm1QYXJhbXMgZm9ybS1kYXRhPWZkLmxvY2FsVmFycy53aWRnZXRTdGF0ZS5mb3JtRGF0YSBwYXJlbnQ9ZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzIGFsbC1jb2x1bW5zPWZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cyBjbGFzcz1rdEdyaWQ+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTJcIiBuZy1pZj1cIihmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MiAmJiBmZC5sb2NhbFZhcnMuZmlsZXNEYXRhLmRhdGEubGVuZ3RoPjApIHx8IChmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTEpXCIgbmctY2xhc3M9XCJ7XFwnYm9yZGVyLWJvdHRvbVxcJzohZmQuUGFyYW1ldGVycy5IaWRlSGVhZGVyfVwiPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBteS0xXCIgbmctaWY9IWZkLlBhcmFtZXRlcnMuSGlkZUhlYWRlcj57e2ZkLkxhYmVsfX08L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXktYXV0b1wiPjxidXR0b24gdHlwZT1idXR0b24gbmctaWY9XCJmZC5maWxlU2VsZWN0ZWQgJiYgIWZkLlBhcmFtZXRlcnMuTm9QcmV2aWV3XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzXCIgbmctY2xpY2s9XCJmZC5wcmV2aWV3RmlsZShmZC5TZWxlY3RlZEZpbGVbZmQubG9jYWxWYXJzLlRhYmxlUHJlZml4K1xcJ19pZFxcJ10sZmQuU2VsZWN0ZWRGaWxlW2ZkLmxvY2FsVmFycy5UYWJsZVByZWZpeCtcXCdfRmlsZU5hbWVcXCddLGZkLlNlbGVjdGVkRmlsZVtmZC5sb2NhbFZhcnMuVGFibGVQcmVmaXgrXFwnX0ZpbGVUeXBlXFwnXSlcIj48aSBjbGFzcz1cImZhIGZhLXNlYXJjaFwiPjwvaT4gPHNwYW4gbmctaWY9ZmQuUGFyYW1ldGVyc0xhbmcuUHJldmlld0xhYmVsPnt7ZmQuUGFyYW1ldGVyc0xhbmcuUHJldmlld0xhYmVsfX08L3NwYW4+IDxzcGFuIG5nLWlmPSFmZC5QYXJhbWV0ZXJzTGFuZy5QcmV2aWV3TGFiZWw+UHJldmlldyBmaWxlPC9zcGFuPjwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWlmPVwiZmQuZmlsZVNlbGVjdGVkICYmICFmZC5QYXJhbWV0ZXJzLk5vRG93bmxvYWRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4teHNcIiBuZy1jbGljaz1cImZkLmRvd25sb2FkRmlsZShmZC5TZWxlY3RlZEZpbGVbZmQubG9jYWxWYXJzLlRhYmxlUHJlZml4K1xcJ19pZFxcJ10sZmQuU2VsZWN0ZWRGaWxlW2ZkLmxvY2FsVmFycy5UYWJsZVByZWZpeCtcXCdfRmlsZU5hbWVcXCddKVwiPjxpIGNsYXNzPVwiZmEgZmEtZG93bmxvYWRcIj48L2k+IDxzcGFuIG5nLWlmPWZkLlBhcmFtZXRlcnNMYW5nLkRvd25sb2FkTGFiZWw+e3tmZC5QYXJhbWV0ZXJzTGFuZy5Eb3dubG9hZExhYmVsfX08L3NwYW4+IDxzcGFuIG5nLWlmPSFmZC5QYXJhbWV0ZXJzTGFuZy5Eb3dubG9hZExhYmVsPkRvd25sb2FkIGZpbGU8L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiBuZy1pZj1mZC5QYXJhbWV0ZXJzLlNob3dHZXREYXRhQnV0dG9uIGNsYXNzPVwiY29sIG15LWF1dG8gcHgtMCB0ZXh0LXJpZ2h0XCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBidG4teHNcIiBuZy1jbGljaz1mZC5sb2NhbFZhcnMuR2V0RmlsZXNDbGljaygpPjxpIGNsYXNzPVwiZmEgZmEtc3luY1wiPjwvaT4gPHNwYW4+e3tmZC5QYXJhbWV0ZXJzTGFuZy5HZXREYXRhQnRuTGFiZWx9fTwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwiKGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yICYmIGZkLmxvY2FsVmFycy5maWxlc0RhdGEuZGF0YS5sZW5ndGg+MCkgfHwgKGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xICYmIGZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MSlcIj48ZGl2IGlkPWxvYWRpbmdzY3JlZW57e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctc2hvdz1mZC5sb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcga3QtcHJvY2Vzc2luZy1hbmltYXRpb24tdGltZWxpbmUgYW5pbWF0aW9uLXR5cGU9XCJcXCd0YWJsZVxcJ1wiIHNob3ctbXNnPWZkLlBhcmFtZXRlcnMuU2hvd0xvYWRpbmdNZXNzYWdlIG1lc3NhZ2U9e3tmZC5QYXJhbWV0ZXJzLkxvYWRpbmdNZXNzYWdlfX0+PC9kaXY+PGRpdiBpZD1zbWFydFRhYmxle3tmZC5QcmVzZW50YXRpb25JZH19IGt0LXNtYXJ0LXRhYmxlIG5nLWlmPVwiZmQuZmlsZUxpc3REb3dubG9hZGVkICYmICgoZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0xKSB8fCBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MilcIiBjbGFzcyB1c2UtcGFnaW5hdGlvbj10cnVlIHBhcmFtZXRlcnM9ZmQuUGFyYW1ldGVycyBmb250LXNpemU9ZmQuUGFyYW1ldGVycy50YWJsZS5mb250U2l6ZSBjZWxsLXBhZGRpbmc9ZmQuUGFyYW1ldGVycy50YWJsZS5jZWxsUGFkZGluZyBjb2x1bW4tZGVmcz1mZC5sb2NhbFZhcnMuZmlsZXNDb2x1bW5zIGl0ZW1zLW9uLXBhZ2U9ZmQubG9jYWxWYXJzLndpZGdldFN0YXRlLnBhZ2VTaXplIHJvdy1zZWxlY3RlZC1jaGFuZ2U9ZmQubG9jYWxWYXJzLmZpbGVTZWxlY3Rpb25DaGFuZ2VkKGl0ZW0pIGt0LXJlZnJlc2gtZGF0YT1cImZkLmxvY2FsVmFycy5nZXRGaWxlcyh0YWJsZVN0YXRlLCBwYWdlTnVtYmVyLHBhZ2VTaXplKVwiIGluaXRpYWwtcGFnZT1mZC5sb2NhbFZhcnMud2lkZ2V0U3RhdGUuY3VycmVudFBhZ2UgZ3JpZC1kYXRhPWdyaWREYXRhKCkga3QtcHJvY2Vzcy1hY3Rpb249cHJvY2Vzc1RhYmxlQWN0aW9uKGl0ZW0sYWN0aW9uSWQpPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCIoZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTIgJiYgZmQubG9jYWxWYXJzLmZpbGVzRGF0YS5kYXRhLmxlbmd0aD09MCAmJiAhZmQubG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nICYmIGZkLmZpbGVMaXN0RG93bmxvYWRlZCAmJiAhZmQubG9jYWxWYXJzLkluaXRpYWxMb2FkKVwiIGNsYXNzPVwidGV4dC1jZW50ZXIgcC00XCI+PGkgY2xhc3M9XCJmYSBmYS1maWxlIGZhLTR4IG1iLTJcIj48L2k+PGRpdiBjbGFzcz1oNT57e2ZkLlBhcmFtZXRlcnMuTm9GaWxlc01zZ319PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm1vZGFsIGZhZGVcIiByb2xlPWRpYWxvZyB0YWJpbmRleD0tMSBhcmlhLWxhYmVsbGVkYnk9ZGF0YXNldE1hcHBlclBhcmVudE1vZGFsIGlkPWRhdGFzZXRNYXBwZXJQYXJlbnRNb2RhbHt7ZmQuUHJlc2VudGF0aW9uSWR9fSBhcmlhLWhpZGRlbj10cnVlPjxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtbGdcIiByb2xlPWRvY3VtZW50PjxkaXYgY2xhc3M9bW9kYWwtY29udGVudD48ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHB5LTFcIj48ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGUgZm50MTIgY29sIG14LTAgbXktMlwiPjxzcGFuPlBhcmVudCBkYXRhc2V0IHNldHVwPC9zcGFuPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPWNsb3NlIGRhdGEtZGlzbWlzcz1tb2RhbCBhcmlhLWxhYmVsPUNsb3NlPjxzcGFuIGFyaWEtaGlkZGVuPXRydWU+XFx4RDc8L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1tb2RhbC1ib2R5PjxkaXYga3QtZGF0YXNldC1tYXBwZXItcGFyZW50PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tGaWxlc1Byb3BlcnRpZXMuaHRtbCcsJzxkaXYgY2xhc3M9cC0xPjxkaXYgbmctaWY9XCJsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTFcIj48ZGl2IGNsYXNzPW1iLTQ+PGRpdiBrdC1wdWJsaXNoZWQtcmVzb3VyY2Utc2VsZWN0b3IgZmQ9ZmQgbG9jYWwtdmFycz1mZC5sb2NhbFZhcnM+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MlwiIGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9Y29sLTEyPjxkaXY+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYk5vSGVhZGVye3tmZC5QcmVzZW50YXRpb25JZH19PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPWNiTm9IZWFkZXJ7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5IaWRlSGVhZGVyIG5nLWNoZWNrZWQ9ZmQuUGFyYW1ldGVycy5IaWRlSGVhZGVyPiBIaWRlIGhlYWRlcjwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1teS0yIG5nLWlmPSFmZC5QYXJhbWV0ZXJzLkhpZGVIZWFkZXI+PGxhYmVsPkhlYWRlciB0aXRsZTwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuTGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1teS0yPjxsYWJlbD5TZWFyY2ggdGV4dDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuU2VhcmNoVGV4dD48L2Rpdj48ZGl2IGNsYXNzPW15LTI+PGxhYmVsPk5vIGZpbGVzIG1lc3NhZ2U8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuTm9GaWxlc01zZz48L2Rpdj48ZGl2PjxkaXY+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYkdldEZpbGVzQnV0dG9ue3tmZC5QcmVzZW50YXRpb25JZH19PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPWNiR2V0RmlsZXNCdXR0b257e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5TaG93R2V0RGF0YUJ1dHRvbiBuZy1jaGVja2VkPWZkLlBhcmFtZXRlcnMuU2hvd0dldERhdGFCdXR0b24+IFNob3cgZ2V0IGZpbGVzIGJ1dHRvbjwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1teS0yIG5nLWlmPWZkLlBhcmFtZXRlcnMuU2hvd0dldERhdGFCdXR0b24+PGxhYmVsPkdldCBmaWxlcyBidXR0b24gbGFiZWw8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnNMYW5nLkdldERhdGFCdG5MYWJlbD48L2Rpdj48ZGl2IGNsYXNzPW15LTIgbmctaWY9IWZkLlBhcmFtZXRlcnMuTm9QcmV2aWV3PjxsYWJlbD5QcmV2aWV3IGZpbGUgYnV0dG9uIGxhYmVsPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzTGFuZy5QcmV2aWV3TGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1teS0yIG5nLWlmPSFmZC5QYXJhbWV0ZXJzLk5vRG93bmxvYWQ+PGxhYmVsPkRvd25sb2FkIGZpbGUgYnV0dG9uIGxhYmVsPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzTGFuZy5Eb3dubG9hZExhYmVsPjwvZGl2PjxkaXY+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYlNob3dTZWFyY2hGb3Jte3tmZC5QcmVzZW50YXRpb25JZH19PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPWNiU2hvd1NlYXJjaEZvcm17e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQuU2hvd1NlYXJjaEZvcm0gbmctY2hlY2tlZD1mZC5TaG93U2VhcmNoRm9ybT4gU2hvdyBzZWFyY2ggZm9ybTwvbGFiZWw+PC9kaXY+PGRpdj48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWwgZm9yPWNiQXV0b1NlYXJjaHt7ZmQuUHJlc2VudGF0aW9uSWR9fT48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCIgbmFtZT1jYkF1dG9TZWFyY2h7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQuQXV0b1NlYXJjaCBuZy1jaGVja2VkPWZkLkF1dG9TZWFyY2g+IEF1dG8gc2VhcmNoIGZpbGVzPC9sYWJlbD48L2Rpdj48ZGl2PjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbCBmb3I9Y2JOb0Rvd25sb2Fke3tmZC5QcmVzZW50YXRpb25JZH19PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPWNiTm9Eb3dubG9hZHt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLk5vRG93bmxvYWQgbmctY2hlY2tlZD1mZC5QYXJhbWV0ZXJzLk5vRG93bmxvYWQ+IERpc2FibGUgZG93bmxvYWQ8L2xhYmVsPjwvZGl2PjxkaXY+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYk5vUHJldmlld3t7ZmQuUHJlc2VudGF0aW9uSWR9fT48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCIgbmFtZT1jYk5vUHJldmlld3t7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLk5vUHJldmlldyBuZy1jaGVja2VkPWZkLlBhcmFtZXRlcnMuTm9QcmV2aWV3PiBEaXNhYmxlIHByZXZpZXc8L2xhYmVsPjwvZGl2PjxkaXY+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlNob3dMb2FkaW5nTWVzc2FnZT4gU2hvdyBsb2FkaW5nIG1lc3NhZ2U8L2xhYmVsPjwvZGl2PjxkaXYgbmctaWY9ZmQuUGFyYW1ldGVycy5TaG93TG9hZGluZ01lc3NhZ2U+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkxvYWRpbmcgbWVzc2FnZSB0ZXh0PC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkxvYWRpbmdNZXNzYWdlPjwvZGl2PjxkaXYgY2xhc3M9bXktMj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwidy0yNSBidG4gYnRuLXhzIGJ0bi1wcmltYXJ5XCIgZGF0YS10b2dnbGU9bW9kYWwgZGF0YS10YXJnZXQ9I2RhdGFzZXRNYXBwZXJQYXJlbnRNb2RhbHt7ZmQuUHJlc2VudGF0aW9uSWR9fT48c3Bhbj5EZWZpbmUgcGFyZW50IGRhdGFzZXQ8L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1teS0yIG5nLWlmPWZkLkhhc1BhcmVudERhdGFzZXQ+PGRpdiBjbGFzcz1cInBsLTAgbGFiZWwgYm9yZGVyLWJvdHRvbVwiPlBhcmVudCByZWxhdGlvbnNoaXAgdHlwZTwvZGl2PjxkaXYgY2xhc3M9bXktMj48bGFiZWwgY2xhc3M9bGFiZWwteHM+PGlucHV0IHR5cGU9cmFkaW8gbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5QYXJlbnRSZWxhdGlvbnNoaXBUeXBlIHZhbHVlPTE+IE9uZSB0byBtYW55IHJlbGF0aW9uc2hwICgxOm4pPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPW1iLTI+PGxhYmVsIGNsYXNzPWxhYmVsLXhzPjxpbnB1dCB0eXBlPXJhZGlvIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuUGFyZW50UmVsYXRpb25zaGlwVHlwZSB2YWx1ZT0wPiBNYW55IHRvIG1hbnkgcmVsYXRpb25zaGlwIChuOm0pPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPW1iLTIgbmctaWY9XCJmZC5QYXJhbWV0ZXJzLlBhcmVudFJlbGF0aW9uc2hpcFR5cGU9PTFcIj48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+RmllbGQgbmFtZTwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5QYXJlbnREYXRhc2V0RmllbGROYW1lPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tGb3JtLmh0bWwnLCc8ZGl2IGNsYXNzPVwicm93IG0tMFwiIG5nLXNob3c9XCJ0ZHMuc2hvd1Rhc2tGb3JtRm4oKT09XFwnaVxcJyB8fCB0ZHMuc2hvd1Rhc2tGb3JtRm4oKT09XFwnZVxcJ1wiPjxkaXYgY2xhc3M9XCJjb2wtMyBib3JkZXItcmlnaHQgYm9yZGVyLXByaW1hcnlcIiBuZy1zdHlsZT1cIntcXCdtaW4taGVpZ2h0XFwnOntcXCdpXFwnOlxcJzJyZW1cXCcsXFwnZVxcJzpcXCcxcmVtXFwnfSBbdGRzLnNob3dUYXNrRm9ybUZuKCldfVwiPjwvZGl2PjwvZGl2PjxkaXYgaWQ9cm93MSBjbGFzcz1cInJvdyBtLTBcIiBuZy1zaG93PVwidGRzLnNob3dUYXNrRm9ybUZuKCk9PVxcJ2VcXCdcIj48ZGl2IGNsYXNzPWNvbC0zIHN0eWxlPVwibWluLWhlaWdodDogMXJlbVwiPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMTIgYm9yZGVyLXJpZ2h0IGJvcmRlci10b3AgYm9yZGVyLXByaW1hcnlcIiBzdHlsZT1cIm1pbi1oZWlnaHQ6IDFyZW1cIj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0xNiBuZy1pZj1cInRkcy5zaG93VGFza0Zvcm1GbigpIT1cXCdlXFwnXCI+PGRpdiB0aXRsZT1cIkRlZmluZSB0aGUgZm9ybSB0aGF0IHByb3ZpZGVzIGlucHV0IGZvciB0YXNrIGV4ZWN1dGlvblwiIGNsYXNzPWgtMTAwPjxidXR0b24gdHlwZT1idXR0b24gaHJlZiBjbGFzcz1cInJvdyBtLTAgcC0yIGJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHctMTAwIGgtMTAwXCIgbmctY2xpY2s9XCJzaG93SGlkZVRhc2tGb3JtKFxcJ2VcXCcpXCI+PGRpdiBjbGFzcz1jb2wtMjQ+PHNwYW4gY2xhc3M+VGFzayBmb3JtPC9zcGFuPjwvZGl2PjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgaWQ9cm93MiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPWNvbC1sZy01IG5nLWlmPVwidGRzLnNob3dUYXNrRm9ybUZuKCkgIT0gXFwnaVxcJ1wiPjxkaXYgdGl0bGU9XCJEZWZpbmUgdGhlIGZvcm0gdGhhdCBwcm92aWRlcyBpbnB1dCBmb3IgdGFzayBleGVjdXRpb25cIiBjbGFzcz1oLTEwMD48YnV0dG9uIHR5cGU9YnV0dG9uIGhyZWYgY2xhc3M9XCJyb3cgbS0wIHAtMiBidG4gYnRuLW91dGxpbmUtcHJpbWFyeSB3LTEwMFwiIG5nLWNsaWNrPVwic2hvd0hpZGVUYXNrRm9ybShcXCdpXFwnKVwiPjxkaXYgY2xhc3M9Y29sLTI0PjxzcGFuIGNsYXNzPklucHV0IGRhdGEgZm9ybTwvc3Bhbj48L2Rpdj48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy02IG5nLWlmPVwidGRzLnNob3dUYXNrRm9ybUZuKCkgPT0gXFwnaVxcJ1wiPjxkaXYgdGl0bGU9XCJEZWZpbmUgdGhlIGZvcm0gdGhhdCBwcm92aWRlcyBpbnB1dCBmb3IgdGFzayBleGVjdXRpb25cIiBjbGFzcz1cInJvdyBtLTAgaC0xMDAgcC0yIHNoYWRvdyBib3JkZXIgYm9yZGVyLXByaW1hcnkgdGV4dC1wcmltYXJ5IHRleHQtY2VudGVyIHJvdW5kZWRcIj48ZGl2IGNsYXNzPWNvbC0yND48c3BhbiBjbGFzcz5JbnB1dCBkYXRhIGZvcm08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1jb2wtMjQ+PGRpdiBjbGFzcz1kcm9wZG93bj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXktYXV0b1wiPjxpIHN0eWxlPVwiY29sb3I6ICMyYzYwZTVhMSAhaW1wb3J0YW50O1wiIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLWRvdWJsZS1yaWdodCBmYS0yeFwiPjwvaT48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0xNj48ZGl2IHRpdGxlPVwiRGVmaW5lIHRoZSBmb3JtIHRoYXQgcHJvdmlkZXMgcmVzdWx0cyBvZiB0YXNrIGV4ZWN1dGlvblwiIGNsYXNzPVwic2hhZG93IGJvcmRlciBib3JkZXItcHJpbWFyeSB0ZXh0LXByaW1hcnkgdGV4dC1jZW50ZXIgcm91bmRlZFwiPjxidXR0b24gdHlwZT1idXR0b24gaHJlZiBjbGFzcz1cIm0tMCBidG4gYnRuLW91dGxpbmUtcHJpbWFyeSB3LTEwMCBoLTEwMFwiIG5nLWNsaWNrPVwic2hvd0hpZGVUYXNrRm9ybShcXCdlXFwnKVwiPjxkaXYgY2xhc3M9Y29sLTI0PjxzcGFuIGNsYXNzPlRhc2sgZm9ybTwvc3Bhbj48L2Rpdj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGlkPXJvdzMgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1jb2wtMz48L2Rpdj48L2Rpdj48ZGl2IGlkPXJvdzQgY2xhc3M9cm93PjxkaXYgY2xhc3M9XCJjb2wtMyBwLTIgcHgtMyBib3JkZXItcmlnaHQgYm9yZGVyLXByaW1hcnlcIj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTEyIHAtMiBweC0zXCIgbmctY2xhc3M9XCJ7IFxcJ2JvcmRlci1yaWdodCBib3JkZXItcHJpbWFyeVxcJzp0ZHMuc2hvd1Rhc2tGb3JtRm4oKT09XFwnZVxcJyB9XCI+PC9kaXY+PC9kaXY+PGRpdiBpZD1yb3c1IGNsYXNzPVwicm93IHAtMCBtLTBcIj48ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgY29sLTYgcC0wIG0tMFwiPjxkaXYgY2xhc3M9cm93PjxkaXYgY2xhc3M9Y29sLTg+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC01IHAtMFwiPjxsYWJlbCBjbGFzcz1cImZsb2F0LXJpZ2h0IHN3aXRjaCBzd2l0Y2gtZ3JlZW5cIj48aW5wdXQgbmctbW9kZWw9dGFza0RlZmluaXRpb24uQXV0b0luaXRpYXRlIG5nLWNsaWNrPWxvY2FsVmFycy5zZXRBdXRvSW5pdGlhdGUoKSBuZy1jaGVja2VkPSF0YXNrRGVmaW5pdGlvbi5BdXRvSW5pdGlhdGUgdHlwZT1jaGVja2JveCBjbGFzcz1zd2l0Y2gtaW5wdXQ+IDxzcGFuIGNsYXNzPXN3aXRjaC1sYWJlbCBkYXRhLW9uPU9uIGRhdGEtb2ZmPU9mZj48L3NwYW4+IDxzcGFuIGNsYXNzPXN3aXRjaC1oYW5kbGU+PC9zcGFuPjwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC01IHAtMFwiPjxzcGFuIG5nLWhpZGU9dGFza0RlZmluaXRpb24uQXV0b0luaXRpYXRlIGNsYXNzPWZudDU+RU5BQkxFRDwvc3Bhbj4gPHNwYW4gbmctc2hvdz10YXNrRGVmaW5pdGlvbi5BdXRvSW5pdGlhdGUgY2xhc3M9Zm50NT5ESVNBQkxFRDwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTkgcC0yIHB4LTNcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAwLjJyZW1cIiBuZy1jbGFzcz1cIntcXCdib3JkZXItcmlnaHQgYm9yZGVyLXByaW1hcnlcXCc6dGRzLnNob3dUYXNrRm9ybUZuKCk9PVxcJ2VcXCcgfVwiPjwvZGl2PjwvZGl2PjxkaXYgaWQ9cm93NiBjbGFzcz1yb3c+PGRpdiBjbGFzcz1cImNvbC0zIHAtMiBweC0zXCIgbmctY2xhc3M9XCJ7XFwnYm9yZGVyLXJpZ2h0IGJvcmRlci1wcmltYXJ5XFwnOnRkcy5zaG93VGFza0Zvcm1GbigpPT1cXCdpXFwnICYmICF0YXNrRGVmaW5pdGlvbi5BdXRvSW5pdGlhdGV9XCI+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0xMiBwLTIgcHgtM1wiIG5nLWNsYXNzPVwieyBcXCdib3JkZXItcmlnaHQgYm9yZGVyLXByaW1hcnlcXCc6dGRzLnNob3dUYXNrRm9ybUZuKCk9PVxcJ2VcXCcgfVwiPjwvZGl2PjwvZGl2PjxkaXYgbmctc2hvdz1cIih0ZHMuc2hvd1Rhc2tGb3JtRm4oKT09XFwnaVxcJyAmJiAhdGFza0RlZmluaXRpb24uQXV0b0luaXRpYXRlKSB8fCAodGRzLnNob3dUYXNrRm9ybUZuKCk9PVxcJ2VcXCcgKVwiIGNsYXNzPVwiYm9yZGVyIGJvcmRlci1wcmltYXJ5IHJvdW5kZWQgc2hhZG93XCI+PGZvcm0gbmctc3VibWl0PXNhdmVUYXNrRm9ybShmb3JtKSBuZy1zaG93PVwiKHRkcy5zaG93VGFza0Zvcm1GbigpPT1cXCdpXFwnICYmICF0YXNrRGVmaW5pdGlvbi5BdXRvSW5pdGlhdGUpIHx8ICh0ZHMuc2hvd1Rhc2tGb3JtRm4oKT09XFwnZVxcJyApXCIgaWQ9Zm9ybWEgbmFtZT1mb3JtIGNsYXNzPVwiZm9ybS1ob3Jpem9udGFsIHB5LTFcIiBuZy1jbGFzcz1cIntcXCdlZGl0LW1vZGVcXCc6dGFza0RlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTF9XCIgcm9sZT1mb3JtPjxkaXYgY2xhc3M9XCJtLTAgcC0xIGJvcmRlci1ib3R0b20gYmctd2hpdGVcIiBpZD10YXNrVG9vbGJveElkIG5nLXN0eWxlPVwiKHRhc2tEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xIHx8IHRhc2tEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0zIHx8IHRhc2tEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT00KSAmJiBnc3J2Yy5nZXRUb3BGb3JTdGlja3koMClcIiBuZy1jbGFzcz1cIntcXCdmb3JtLWJ0bnMtdG9wIHBvc2l0aW9uLXN0aWNreVxcJzp0YXNrRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSB8fCB0YXNrRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MyB8fCB0YXNrRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09NH1cIj48ZGl2IGNsYXNzPXJvdz48ZGl2IGNsYXNzPWNvbD48dWwgY2xhc3M9XCJuYXYgbmF2LXRhYnMgc2ltcGxlLXRhYnMgYm9yZGVyLTAgbXgtNFwiIGlkPW15VGFiIHJvbGU9dGFibGlzdD48bGkgY2xhc3M9bmF2LWl0ZW0+PGEgY2xhc3M9bmF2LWxpbmsgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOnRhc2tEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yfVwiIGhyZWYgaWQ9cHJldmlldy10YWIgZGF0YS10b2dnbGU9dGFiIG5nLWNsaWNrPVNob3dGb3JtVmlldygyLHRydWUpIHJvbGU9dGFiIGFyaWEtY29udHJvbHM9cHJldmlldyBhcmlhLXNlbGVjdGVkPXRydWU+UHJldmlldyA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0IG1sLTIgdGV4dC1wcmltYXJ5XCI+Q3RybCtQPC9zcGFuPjwvYT48L2xpPjxsaSBjbGFzcz1uYXYtaXRlbT48YSBjbGFzcz1uYXYtbGluayBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6dGFza0RlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTF9XCIgaWQ9YnVpbGQtdGFiIGhyZWYgZGF0YS10b2dnbGU9dGFiIG5nLWNsaWNrPVNob3dGb3JtVmlldygxLGZhbHNlKSByb2xlPXRhYiBhcmlhLWNvbnRyb2xzPWJ1aWxkIGFyaWEtc2VsZWN0ZWQ9ZmFsc2U+QnVpbGQgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodCBtbC0yIHRleHQtcHJpbWFyeVwiPkN0cmwrQjwvc3Bhbj48L2E+PC9saT48bGkgY2xhc3M9bmF2LWl0ZW0+PGEgY2xhc3M9bmF2LWxpbmsgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOnRhc2tEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0zIHx8IHRhc2tEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT00fVwiIGlkPWxheW91dC10YWIgaHJlZiBkYXRhLXRvZ2dsZT10YWIgbmctY2xpY2s9U2hvd0Zvcm1WaWV3KDQpIHJvbGU9dGFiIGFyaWEtY29udHJvbHM9bGF5b3V0IGFyaWEtc2VsZWN0ZWQ9ZmFsc2U+PGkgY2xhc3M9XCJmYSBmYS10aC1sYXJnZSBtci0xXCI+PC9pPiBBcnJhbmdlIGxheW91dDwvYT48L2xpPjwvdWw+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIG1yLTNcIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWlmPVwicmVzb3VyY2VEZWZpbml0aW9uLk5ld1ZlcnNpb249PT1yZXNvdXJjZURlZmluaXRpb24uVmVyc2lvbiB8fCByZXNvdXJjZURlZmluaXRpb24uTmV3VmVyc2lvbj09PXVuZGVmaW5lZFwiIG5nLWNsaWNrPW5ld1ZlcnNpb24oKSBuZy1kaXNhYmxlZD1jcmVhdGluZ05ld1ZlcnNpb24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pbmZvIG1yLTJcIj48c3BhbiBuZy1pZj1jcmVhdGluZ05ld1ZlcnNpb24+RmluYWxpc2luZy4uLjwvc3Bhbj4gPHNwYW4gbmctaWY9IWNyZWF0aW5nTmV3VmVyc2lvbj5GaW5hbGlzZSB3b3JraW5nIHZlcnNpb248L3NwYW4+PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gbmctZGlzYWJsZWQ9c2F2aW5nVGFza0Zvcm0gbmctY2xpY2s9c2hvd1NhdmVNb2RhbCgpIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiPlNhdmUgZm9ybSBjaGFuZ2VzPC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTBcIiBuZy1zaG93PVwiKHRkcy5zaG93VGFza0Zvcm1GbigpPT1cXCdpXFwnICYmICF0YXNrRGVmaW5pdGlvbi5BdXRvSW5pdGlhdGUpIHx8ICh0ZHMuc2hvd1Rhc2tGb3JtRm4oKT09XFwnZVxcJylcIj48ZGl2IGNsYXNzPVwiY29sIHAtMFwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cInAtMCBjb2wtMjQgY29sbGFwc2VcIiBuZy1jbGFzcz1cIntcXCdidWlsZC1tb2RlXFwnOnRhc2tEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xIHx8IHRhc2tEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0zIHx8IHRhc2tEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT00LFxcJ3Nob3dcXCc6IWdzcnZjLmdldFRhc2tMb2FkZWRJblBsYWNlaG9sZGVyKCl9XCI+PGRpdiBrdC1ncmlkIGdyaWQtdHlwZT1ncmlkc3RlclR5cGUgcmVzb3VyY2UtZm9ybS1sb2FkZWQ9Zm9ybUxvYWRlZCByZXNvdXJjZS1kZWZpbml0aW9uPXRhc2tEZWZpbml0aW9uIGZvcm0tcGFyYW1zPXRhc2tEZWZpbml0aW9uLmZvcm1QYXJhbXMgZm9ybS1kYXRhPWRhc2hib2FyZFtmb3JtVHlwZV0uZGF0YSBwYXJlbnQ9ZGFzaGJvYXJkW2Zvcm1UeXBlXS53aWRnZXRzIGFsbC1jb2x1bW5zPWRhc2hib2FyZFtmb3JtVHlwZV0ud2lkZ2V0cyBjbGFzcz1rdEdyaWQ+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQgbXQtMlwiIG5nLWlmPWZhbHNlPjxkaXYgY2xhc3M9cC0yIG5nLWlmPVwidGFza0RlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIHt7dGFza0RlZmluaXRpb24uaW5pdFRhc2tCdG5EZWYuaW5pdFRhc2tCdG5TdHlsZX19XCI+PGkgY2xhc3M9e3t0YXNrRGVmaW5pdGlvbi5pbml0VGFza0J0bkRlZi5pbml0VGFza0J0bkljb259fT48L2k+IDxzcGFuIGNsYXNzPW1sLTE+e3t0YXNrRGVmaW5pdGlvbi5pbml0VGFza0J0bkRlZi5pbml0VGFza0J0blR4dH19PC9zcGFuPjwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIHt7dGFza0RlZmluaXRpb24uaW5pdFRhc2tCdG5EZWYuY2FuY2VsQnRuU3R5bGV9fSBtbC0xXCI+PGkgY2xhc3M9e3t0YXNrRGVmaW5pdGlvbi5pbml0VGFza0J0bkRlZi5jYW5jZWxCdG5JY29ufX0+PC9pPiA8c3BhbiBjbGFzcz1tbC0xPnt7dGFza0RlZmluaXRpb24uaW5pdFRhc2tCdG5EZWYuY2FuY2VsQnRuVHh0fX08L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTAgcC0yXCIgbmctaWY9XCJ0YXNrRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSE9MlwiPjxkaXYgY2xhc3M9XCJjb2wtbGctNiBwLTFcIj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxsYWJlbD5TdGFydCB0YXNrIGJ1dHRvbiB0ZXh0PC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1mb3JtLWNvbnRyb2wgbmctbW9kZWw9dGFza0RlZmluaXRpb24uaW5pdFRhc2tCdG5EZWYuaW5pdFRhc2tCdG5UeHQ+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGt0LWljb24tcGlja2VyIHNlbGVjdC1jb2xvcnM9dHJ1ZSBzZWxlY3QtaWNvbnM9dHJ1ZSBidG4tbGFiZWw9dGFza0RlZmluaXRpb24uaW5pdFRhc2tCdG5EZWYuaW5pdFRhc2tCdG5UeHQgc2VsZWN0ZWQtaWNvbj10YXNrRGVmaW5pdGlvbi5pbml0VGFza0J0bkRlZi5pbml0VGFza0J0bkljb24gc2VsZWN0ZWQtYnV0dG9uPXRhc2tEZWZpbml0aW9uLmluaXRUYXNrQnRuRGVmLmluaXRUYXNrQnRuU3R5bGU+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy02IHAtMVwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGxhYmVsPkNhbmNlbCB0YXNrIGJ1dHRvbiB0ZXh0PC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1mb3JtLWNvbnRyb2wgbmctbW9kZWw9dGFza0RlZmluaXRpb24uaW5pdFRhc2tCdG5EZWYuY2FuY2VsQnRuVHh0PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBrdC1pY29uLXBpY2tlciBzZWxlY3QtY29sb3JzPXRydWUgc2VsZWN0LWljb25zPXRydWUgYnRuLWxhYmVsPXRhc2tEZWZpbml0aW9uLmluaXRUYXNrQnRuRGVmLmNhbmNlbEJ0blR4dCBzZWxlY3RlZC1pY29uPXRhc2tEZWZpbml0aW9uLmluaXRUYXNrQnRuRGVmLmNhbmNlbEJ0bkljb24gc2VsZWN0ZWQtYnV0dG9uPXRhc2tEZWZpbml0aW9uLmluaXRUYXNrQnRuRGVmLmNhbmNlbEJ0blN0eWxlPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cC0xIG5nLWlmPVwidGFza0RlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPTJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1pbmZvIGJ0bi1zbVwiIG5nLWNsaWNrPXNhdmVUYXNrQnRucygpPjxzcGFuIGNsYXNzPVwiZmEgZmEtc2F2ZVwiPjwvc3Bhbj4mbmJzcCBTYXZlIHRhc2sgYnV0dG9uczwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJtb2RhbCBmYWRlIGJkLWV4YW1wbGUtbW9kYWwtbGdcIiBpZD10YXNrUHVibGlzaCB0YWJpbmRleD0tMSByb2xlPWRpYWxvZyBhcmlhLWxhYmVsbGVkYnk9dGFza1B1Ymxpc2ggYXJpYS1oaWRkZW49dHJ1ZT48ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLXhsXCIgcm9sZT1kb2N1bWVudD48ZGl2IGNsYXNzPW1vZGFsLWNvbnRlbnQ+PGRpdiBjbGFzcz1tb2RhbC1oZWFkZXI+PHNwYW4gY2xhc3M9XCJmYSBmYS1sZyBmYS1kYXRhYmFzZSBtLTJcIj48L3NwYW4+PGg1IGNsYXNzPW1vZGFsLXRpdGxlPnt7cmVzb3VyY2VEZWZpbml0aW9uLlJlc291cmNlTmFtZX19IDxiPnt7cmVzb3VyY2VEZWZpbml0aW9uLk5hbWV9fTwvYj48L2g1PjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9Y2xvc2UgZGF0YS1kaXNtaXNzPW1vZGFsIGFyaWEtbGFiZWw9Q2xvc2U+PHNwYW4gYXJpYS1oaWRkZW49dHJ1ZT4mdGltZXM7PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wIG1vZGFsLWJvZHlcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTggcC0wXCI+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiBmb3JtLklkLiR0b3VjaGVkICYmIGZvcm0uSWQuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtbGctMjQgZm9yPUlkPklkPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1sZy0yND48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPXJlc291cmNlRGVmaW5pdGlvbi5pZCBuZy1kaXNhYmxlZD10cnVlIG5nLXJlcXVpcmVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPUlkIG5hbWU9SWQgcGxhY2Vob2xkZXI9SWQ+PHAgbmctc2hvdz1cImZvcm0uSWQuJHRvdWNoZWQgJiYgZm9ybS5JZC4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIgcmVzb3VyY2UgSWQ8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiBmb3JtLlZlcnNpb24uJHRvdWNoZWQgJiYgZm9ybS5WZXJzaW9uLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTI0IGZvcj1WZXJzaW9uPlZlcnNpb248L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxpbnB1dCB0eXBlPXRleHQgbmctZGlzYWJsZWQ9dHJ1ZSBuZy1tb2RlbD1uZXdQdWJsaXNoVmVyc2lvbiBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1WZXJzaW9uIG5hbWU9VmVyc2lvbiBwbGFjZWhvbGRlcj1cIlJlc291cmNlIFZlcnNpb25cIj48cCBuZy1zaG93PVwiKGZvcm0uVmVyc2lvbi4kdG91Y2hlZCkgJiYgZm9ybS5WZXJzaW9uLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5FbnRlciByZXNvdXJjZSBWZXJzaW9uPC9wPjwvZGl2PjwvZGl2PjxkaXY+PGRpdiBjbGFzcz1tLTI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cInNhdmVPclB1Ymxpc2g9PVxcJ3NhdmVcXCdcIiBjbGFzcz1cImNvbC1sZy0xNiBwLTBcIj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogZm9ybS5EZXNjcmlwdGlvbi4kdG91Y2hlZCAmJiBmb3JtLkRlc2NyaXB0aW9uLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTI0IGZvcj1EZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PHRleHRhcmVhIG5nLW1vZGVsPWxvY2FsVmFycy5uZXdEZXNjcmlwdGlvbiBuYW1lPURlc2NyaXB0aW9uIG5nLXJlcXVpcmVkPXRydWUgbmctbWluLWxlbmd0aD0xMCBuZy1jbGFzcz1cInsgXFwnYm9yZGVyLWRhbmdlclxcJyA6IGZvcm0uRGVzY3JpcHRpb24uJHRvdWNoZWQgJiYgZm9ybS5EZXNjcmlwdGlvbi4kaW52YWxpZCB9XCIgY2xhc3M9Zm9ybS1jb250cm9sPjwvdGV4dGFyZWE+PHAgbmctc2hvdz1cIiggZm9ybS5EZXNjcmlwdGlvbi4kdG91Y2hlZCkgJiYgZm9ybS5EZXNjcmlwdGlvbi4kaW52YWxpZFwiIGNsYXNzPVwic21hbGwgdGV4dC1kYW5nZXJcIj5FbnRlciByZXNvdXJjZSBkZXNjcmlwdGlvbiAobWluIDEwIGNoYXJzKTwvcD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiREVQTE9ZIHctMTAwXCI+PGRpdiBjbGFzcz1cImJvcmRlci10b3AgbS0zXCI+PGRpdiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIiBjbGFzcz1cInAtMSByb3cgbXgtMVwiIG5nLWNsaWNrPVwiaXNDb2xsYXBzZWRWZXJIaXN0b3J5ID0gIWlzQ29sbGFwc2VkVmVySGlzdG9yeVwiPjxzcGFuIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBwLTFcIj48c3BhbiBuZy1jbGFzcz1cIntcXCdmYXMgZmEtY2hldnJvbi1kb3duXFwnOiAhaXNDb2xsYXBzZWRWZXJIaXN0b3J5LFxcJ2ZhcyBmYS1jaGV2cm9uLXJpZ2h0XFwnOiBpc0NvbGxhcHNlZFZlckhpc3RvcnkgfVwiPjwvc3Bhbj48L3NwYW4+IDxzcGFuIGNsYXNzPXRhZz5WRVJTSU9OIEhJU1RPUlk8L3NwYW4+PC9kaXY+PGRpdiB1aWItY29sbGFwc2U9aXNDb2xsYXBzZWRWZXJIaXN0b3J5PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcC0wXCI+PGRpdiBuZy1pZj1wdWJsaXNoZWRSZXNvdXJjZXMubGVuZ3RoIGNsYXNzPXAtMT48ZGl2IG5nLXJlcGVhdD1cImVsZW1lbnQgaW4gcHVibGlzaGVkUmVzb3VyY2VzIHRyYWNrIGJ5IGVsZW1lbnQuaWRcIj48ZGl2IG5nLWlmPVwiJGluZGV4PT0wXCIgY2xhc3M9XCJyb3cgbS0wIGJvbGQgdGV4dC1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPjxkaXYgY2xhc3M9XCJjb2wtbGctNCBteS0xIGJvcmRlci1ib3R0b21cIj48c3BhbiBjbGFzcz1cIlwiPlB1Ymxpc2ggaWQ8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy00IG15LTEgYm9yZGVyLWJvdHRvbVwiPjxzcGFuIGNsYXNzPlZlcnNpb248L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0xMCBteS0xIGJvcmRlci1ib3R0b21cIj48c3BhbiBjbGFzcz5EZXNjcmlwdGlvbjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBpdGVtIHRleHQtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTQgbXktMVwiPjxzcGFuPnt7ZWxlbWVudC5pZH19PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctNCBteS0xXCI+PHNwYW4+e3tlbGVtZW50LlZlcnNpb259fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTEwIG15LTFcIj48c3Bhbj57e2VsZW1lbnQuRGVzY3JpcHRpb259fTwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwibS0yIHRleHQtY2VudGVyIGNvbC0yNFwiPjxidXR0b24gbmctaWY9XCJzYXZlT3JQdWJsaXNoPT1cXCdzYXZlXFwnXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgYnRuLWxnXCIgdHlwZT1zdWJtaXQ+PGkgY2xhc3M9XCJmYSBmYS1uZXdzcGFwZXItbyBtci0xXCI+PC9pPiA8c3BhbiBuZy1pZj1zYXZpbmdGb3JtPlNhdmluZy4uLjwvc3Bhbj4gPHNwYW4gbmctaWY9IXNhdmluZ0Zvcm0+U2F2ZSBmb3JtPC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9ybT48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrRm9ybUxheW91dC5odG1sJywnPHN0eWxlPlxcclxcbi5kcm9waGVyZSB7XFxyXFxuICAgIGRpc3BsYXk6bm9uZTtcXHJcXG4gICAgYm9yZGVyOmRhc2hlZCBncmVlbiAxcHggO1xcclxcbn1cXHJcXG5cXHJcXG4uZm9ybS1jb250YWluZXIgPiBsaTpsYXN0LWNoaWxkLmRyb3BoZXJlIHtcXHJcXG4gICAgLypib3JkZXI6IDJweCBzb2xpZCBibHVlOyovXFxyXFxuICAgIGRpc3BsYXk6IGxpc3QtaXRlbTtcXHJcXG59XFxyXFxuPC9zdHlsZT48ZGl2IGlkPWt0VGFza0Zvcm1MYXlvdXQgbmctY2xhc3M9XCJ7XFwncC0xXFwnOmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xfVwiPjx1bCBjbGFzcz1cImZvcm0tY29udGFpbmVyIG1iLTBcIiBuZy1pZj1cImZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xXCIgbmctY2xhc3M9XCJ7XFwnbWluMTBcXCcgOiBpbnB1dEFycmF5LmxheW91dC5sZW5ndGg9PTAgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPTJ9XCIgZHJhZ3VsYT1cIlxcJ2JhZy10YXNrXFwnXCIgZHJhZ3VsYS1zY29wZT0kcm9vdCBkcmFndWxhLW1vZGVsPWlucHV0QXJyYXkubGF5b3V0IG5nLW1vZGVsPWlucHV0QXJyYXkubGF5b3V0PjxsaSBuZy1pZj1cIihpbnB1dEFycmF5LmxheW91dC5sZW5ndGg9PTAgfHwgaW5wdXRBcnJheS5jb3VudEFjdGl2ZT09MCkgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTJcIiBjbGFzcz1cInRhZyBtdC0xIGQtaW5saW5lLWJsb2NrXCI+RHJvcCBoZXJlPC9saT48bGkgbmctcmVwZWF0PVwiZmQgaW4gaW5wdXRBcnJheS5sYXlvdXRcIj48ZGl2IG5nLWlmPVwiZmQuU3RhdHVzPT1cXCdBY3RpdmVcXCdcIiBuZy1zd2l0Y2g9ZmQuRWxlbWVudFR5cGU+PGRpdiBuZy1zd2l0Y2gtd2hlbj1nY29sIGt0LWdyaWQtY29sdW1uIGdyaWQtdHlwZT1ncmlkVHlwZSByZXNvdXJjZS1mb3JtLWxvYWRlZD1yZXNvdXJjZUZvcm1Mb2FkZWQgcGFyZW50LXJlc291cmNlLWRlZi1pZD1wYXJlbnRSZXNvdXJjZURlZklkIHJlc291cmNlLXJlY29yZC1pZD1yZXNvdXJjZVJlY29yZElkIHJlc291cmNlLWRlZmluaXRpb249cmVzb3VyY2VEZWZpbml0aW9uIGlucHV0LWFycmF5PWZkIHBhcmFtcz1wYXJhbXMgZm9ybS1wYXJhbXM9Zm9ybVBhcmFtcyBmb3JtLXBhcmFtcy1wYXJlbnQ9Zm9ybVBhcmFtc1BhcmVudCBmb3JtLWRhdGE9Zm9ybURhdGEgcGFyZW50PWlucHV0QXJyYXkgY2xhc3M9XCJub0hvcml6b250YWxQYWRkaW5nIGNvbC1sZy17e2ZkLlNpemVYfX0gY29sLW1kLXt7ZmQuUGFyYW1ldGVycy5TaXplWE1kfX0gY29sLXNtLXt7ZmQuUGFyYW1ldGVycy5TaXplWFNtfX0gY29sLXt7ZmQuUGFyYW1ldGVycy5TaXplWFhzfX1cIiBhbGwtY29sdW1ucz1hbGxDb2x1bW5zPjwvZGl2PjxkaXYgbmctc3dpdGNoLXdoZW49cm93IGt0LWdyaWQtcm93IGdyaWQtdHlwZT1ncmlkVHlwZSByb3c9ZmQgcmVzb3VyY2UtZm9ybS1sb2FkZWQ9cmVzb3VyY2VGb3JtTG9hZGVkIHNob3ctc2VhcmNoLWZpbHRlcnM9c2hvd1NlYXJjaEZpbHRlcnMgcGFyZW50LXJlc291cmNlLWRlZi1pZD1wYXJlbnRSZXNvdXJjZURlZklkIHJlc291cmNlLXJlY29yZC1pZD1yZXNvdXJjZVJlY29yZElkIHJlc291cmNlLWRlZmluaXRpb249cmVzb3VyY2VEZWZpbml0aW9uIGZvcm0tcGFyYW1zPWZvcm1QYXJhbXMgZm9ybS1wYXJhbXMtcGFyZW50PWZvcm1QYXJhbXNQYXJlbnQgZm9ybS1kYXRhPWZvcm1EYXRhIHBhcmVudD1pbnB1dEFycmF5IGFsbC1yb3dzPWFsbENvbHVtbnM+PC9kaXY+PGRpdiBuZy1zd2l0Y2gtd2hlbj1ncmlkIGt0LWdyaWQ+PC9kaXY+PGRpdiBuZy1zd2l0Y2gtZGVmYXVsdCBrdC1mb3JtLWZpZWxkLWdlbmVyYXRvcj48L2Rpdj48L2Rpdj48L2xpPjwvdWw+PHVsIGNsYXNzPVwiZm9ybS1jb250YWluZXIgbWItMFwiIG5nLWlmPVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPTFcIj48bGkgbmctcmVwZWF0PVwiZmQgaW4gaW5wdXRBcnJheS5sYXlvdXRcIj48ZGl2IG5nLWlmPVwiZmQuU3RhdHVzPT1cXCdBY3RpdmVcXCdcIiBuZy1zd2l0Y2g9ZmQuRWxlbWVudFR5cGU+PGRpdiBuZy1zd2l0Y2gtd2hlbj1nY29sIGt0LWdyaWQtY29sdW1uIGdyaWQtdHlwZT1ncmlkVHlwZSByZXNvdXJjZS1mb3JtLWxvYWRlZD1yZXNvdXJjZUZvcm1Mb2FkZWQgcGFyZW50LXJlc291cmNlLWRlZi1pZD1wYXJlbnRSZXNvdXJjZURlZklkIHJlc291cmNlLXJlY29yZC1pZD1yZXNvdXJjZVJlY29yZElkIHJlc291cmNlLWRlZmluaXRpb249cmVzb3VyY2VEZWZpbml0aW9uIGlucHV0LWFycmF5PWZkIHBhcmFtcz1wYXJhbXMgZm9ybS1wYXJhbXM9Zm9ybVBhcmFtcyBmb3JtLXBhcmFtcy1wYXJlbnQ9Zm9ybVBhcmFtc1BhcmVudCBmb3JtLWRhdGE9Zm9ybURhdGEgcGFyZW50PWlucHV0QXJyYXkgY2xhc3M9bm9Ib3Jpem9udGFsUGFkZGluZyBuZy1jbGFzcz1cIntcXCdjb2wtbGcte3tmZC5TaXplWH19IGNvbC1tZC17e2ZkLlBhcmFtZXRlcnMuU2l6ZVhNZH19IGNvbC1zbS17e2ZkLlBhcmFtZXRlcnMuU2l6ZVhTbX19IGNvbC17e2ZkLlBhcmFtZXRlcnMuU2l6ZVhYc319XFwnOiFmZC5QYXJhbWV0ZXJzLkF1dG9TaXplLFxcJ2NvbC1hdXRvXFwnOmZkLlBhcmFtZXRlcnMuQXV0b1NpemV9XCIgYWxsLWNvbHVtbnM9YWxsQ29sdW1ucz48L2Rpdj48ZGl2IG5nLXN3aXRjaC13aGVuPXJvdyBrdC1ncmlkLXJvdyBncmlkLXR5cGU9Z3JpZFR5cGUgcm93PWZkIHJlc291cmNlLWZvcm0tbG9hZGVkPXJlc291cmNlRm9ybUxvYWRlZCBzaG93LXNlYXJjaC1maWx0ZXJzPXNob3dTZWFyY2hGaWx0ZXJzIHBhcmFtcz1wYXJhbXMgcGFyZW50LXJlc291cmNlLWRlZi1pZD1wYXJlbnRSZXNvdXJjZURlZklkIHJlc291cmNlLXJlY29yZC1pZD1yZXNvdXJjZVJlY29yZElkIHJlc291cmNlLWRlZmluaXRpb249cmVzb3VyY2VEZWZpbml0aW9uIGZvcm0tcGFyYW1zPWZvcm1QYXJhbXMgZm9ybS1wYXJhbXMtcGFyZW50PWZvcm1QYXJhbXNQYXJlbnQgZm9ybS1kYXRhPWZvcm1EYXRhIHBhcmVudD1pbnB1dEFycmF5IGFsbC1yb3dzPWFsbENvbHVtbnM+PC9kaXY+PGRpdiBuZy1zd2l0Y2gtd2hlbj1ncmlkIGt0LWdyaWQ+PC9kaXY+PGRpdiBuZy1zd2l0Y2gtZGVmYXVsdCBrdC1mb3JtLWZpZWxkLWdlbmVyYXRvcj48L2Rpdj48L2Rpdj48L2xpPjwvdWw+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza0Zvcm1MYXlvdXRFeGUuaHRtbCcsJzxkaXY+PHVsIGNsYXNzPVwiZm9ybS1jb250YWluZXIgbWItMFwiPjxsaSBuZy1yZXBlYXQ9XCJmZCBpbiBpbnB1dEFycmF5LmxheW91dFwiPjxkaXYgbmctaWY9XCI6OmZkLlN0YXR1cz09XFwnQWN0aXZlXFwnXCIgbmctc3dpdGNoPWZkLkVsZW1lbnRUeXBlPjxkaXYgbmctc3dpdGNoLXdoZW49Z2NvbCBrdC1ncmlkLWNvbHVtbiBncmlkLXR5cGU9OjpncmlkVHlwZSByZXNvdXJjZS1mb3JtLWxvYWRlZD1yZXNvdXJjZUZvcm1Mb2FkZWQgcGFyZW50LXJlc291cmNlLWRlZi1pZD06OnBhcmVudFJlc291cmNlRGVmSWQgcmVzb3VyY2UtcmVjb3JkLWlkPXJlc291cmNlUmVjb3JkSWQgcmVzb3VyY2UtZGVmaW5pdGlvbj06OnJlc291cmNlRGVmaW5pdGlvbiBpbnB1dC1hcnJheT1mZCBwYXJhbXM9OjpwYXJhbXMgcGFyZW50LXdpZGdldD1wYXJlbnRXaWRnZXQgZm9ybS1wYXJhbXM9Ojpmb3JtUGFyYW1zIGZvcm0tcGFyYW1zLXBhcmVudD06OmZvcm1QYXJhbXNQYXJlbnQgZm9ybS1kYXRhPWZvcm1EYXRhIHBhcmVudD06OmlucHV0QXJyYXkgY2xhc3M9XCJub0hvcml6b250YWxQYWRkaW5nIGNvbC1sZy17ezo6ZmQuU2l6ZVh9fSBjb2wtbWQte3s6OmZkLlBhcmFtZXRlcnMuU2l6ZVhNZH19IGNvbC1zbS17ezo6ZmQuUGFyYW1ldGVycy5TaXplWFNtfX0gY29sLXt7OjpmZC5QYXJhbWV0ZXJzLlNpemVYWHN9fVwiIGFsbC1jb2x1bW5zPWFsbENvbHVtbnM+PC9kaXY+PGRpdiBuZy1zd2l0Y2gtd2hlbj1yb3cga3QtZ3JpZC1yb3cgZ3JpZC10eXBlPTo6Z3JpZFR5cGUgcm93PWZkIHJlc291cmNlLWZvcm0tbG9hZGVkPXJlc291cmNlRm9ybUxvYWRlZCBzaG93LXNlYXJjaC1maWx0ZXJzPTo6c2hvd1NlYXJjaEZpbHRlcnMgcGFyZW50LXJlc291cmNlLWRlZi1pZD06OnBhcmVudFJlc291cmNlRGVmSWQgcmVzb3VyY2UtcmVjb3JkLWlkPTo6cmVzb3VyY2VSZWNvcmRJZCByZXNvdXJjZS1kZWZpbml0aW9uPTo6cmVzb3VyY2VEZWZpbml0aW9uIHBhcmFtcz06OnBhcmFtcyBwYXJlbnQtd2lkZ2V0PXBhcmVudFdpZGdldCBmb3JtLXBhcmFtcz06OmZvcm1QYXJhbXMgZm9ybS1wYXJhbXMtcGFyZW50PTo6Zm9ybVBhcmFtc1BhcmVudCBmb3JtLWRhdGE9Zm9ybURhdGEgcGFyZW50PWlucHV0QXJyYXkgYWxsLXJvd3M9YWxsQ29sdW1ucz48L2Rpdj48ZGl2IG5nLXN3aXRjaC13aGVuPWdyaWQga3QtZ3JpZD48L2Rpdj48ZGl2IG5nLXN3aXRjaC1kZWZhdWx0IGt0LWZvcm0tZmllbGQtZ2VuZXJhdG9yPjwvZGl2PjwvZGl2PjwvbGk+PC91bD48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrRm9ybVB1YmxpYy5odG1sJywnPGRpdiBjbGFzcz1cImNhcmQgbXQtMiBweS0wXCI+PGRpdj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwidGRzLnNob3dIaWRlVGFza0Zvcm0oXFwnXFwnKVwiIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tc2Vjb25kYXJ5IG0tMFwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtdGltZXMgdGV4dC1kYW5nZXJcIj48L3NwYW4+IENsb3NlIGZvcm0gZGVmaW5pdGlvbjwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJoNCB0ZXh0LWNlbnRlclwiPnt7cmVzb3VyY2VEZWZpbml0aW9uLm5hbWV9fSAtIDxzcGFuIG5nLWlmPVwiZm9ybVR5cGU9PVxcJ2lcXCdcIj5UYXNrIGNyZWF0b3IgZm9ybSBkZWZpbml0aW9uPC9zcGFuPjxzcGFuIG5nLWlmPVwiZm9ybVR5cGU9PVxcJ2VcXCdcIj5UYXNrIG93bmVyIGZvcm0gZGVmaW5pdGlvbjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY2FyZCByb3cgbS0wIG10LTIgcC0xXCIgbmctaWY9XCJ0YXNrRGVmaW5pdGlvbi5mb3JtX3R5cGU9PVxcJ2VcXCdcIj48Zm9ybSBpZD1zYXZlVGFza091dGNvbWVzIG5hbWU9c2F2ZVRhc2tPdXRjb21lc0Zvcm0gY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYga3Qtb3V0Y29tZS1kZWYtbGlzdCBvdXRjb21lcz1vdXRjb21lcy5vdXRjb21lQ29kZXNEZXRhaWxzIHNlbGVjdGVkLW91dGNvbWUtaW5kZXg9b3V0Y29tZXMuc2VsZWN0ZWRPdXRjb21lSW5kZXggdGFzaz10YXNrRGVmaW5pdGlvbiBzZWxlY3RlZC1vdXRjb21lLWlkPXNlbGVjdGVkLm91dGNvbWVIZWFkSWQ+PC9kaXY+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1kaXNhYmxlZD1zYXZlVGFza091dGNvbWVzRm9ybS4kaW52YWxpZCBuZy1jbGljaz1zYXZlVGFza091dGNvbWVzKHNhdmVUYXNrT3V0Y29tZXNGb3JtLiR2YWxpZCkgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtc2F2ZVwiPjwvc3Bhbj4mbmJzcCBTYXZlIHRhc2sgb3V0Y29tZXM8L2J1dHRvbj48L2Zvcm0+PC9kaXY+PGZvcm0gbmctc3VibWl0PXNhdmVUYXNrRm9ybSgpIGlkPWZvcm1hIG5hbWU9Zm9ybSBjbGFzcz1mb3JtLWhvcml6b250YWwgbmctY2xhc3M9XCJ7XFwnZWRpdC1tb2RlXFwnOnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MX1cIiByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2IGNsYXNzPVwiY2FyZCByb3cgbS0wIG10LTIgcC0xXCIgaWQ9dGFza1Rvb2xib3hJZCBuZy1zdHlsZT1cIihyZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgfHwgcmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0zIHx8IHJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09NCkgJiYgZ3NydmMuZ2V0VG9wRm9yU3RpY2t5KDApXCIgbmctY2xhc3M9XCJ7XFwnZm9ybS1idG5zLXRvcCBwb3NpdGlvbi1zdGlja3lcXCc6cmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xIHx8IHJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MyB8fCByZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTR9XCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+PHNwYW4gbmctaWY9XCJyZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgfHwgcmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0zIHx8IHJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09NFwiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtaW5mbyByb3VuZGVkIG1yLTIgdGV4dC13aGl0ZVwiPkVkaXRpbmc8L3NwYW4+IDxzcGFuIGNsYXNzPWg2PlRhc2sgZm9ybSBkZWZpbml0aW9uPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxidXR0b24gdGl0bGU9XCJGb3JtIHZpZXdcIiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0XCIgbmctY2xhc3M9XCJ7XFwnYnRuLXByaW1hcnlcXCc6IHJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSA9PTIgLFxcJ2J0bi1saWdodFxcJzogcmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlIT0yLFxcJ2NvbG9yOmJsYWNrIHRleHQtd2hpdGVcXCc6IHJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09Mn1cIiBuZy1jbGljaz1TaG93Rm9ybVZpZXcoMix0cnVlKT48aSBjbGFzcz1cImZhciBmYS1uZXdzcGFwZXIgZmEtbGdcIj48L2k+ICZuYnNwIFByZXZpZXc8L2J1dHRvbj4gPGJ1dHRvbiB0aXRsZT1cIkVkaXQgZm9ybSB2aWV3XCIgbmctZGlzYWJsZWQ9XCJyZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgfHwgcmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0zIHx8IHJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09NFwiIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQgbWwtM1wiIG5nLWNsYXNzPVwie1xcJ2J0bi1wcmltYXJ5XFwnOiByZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgfHwgcmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0zIHx8IHJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09NCAsXFwnYnRuLWxpZ2h0XFwnOiByZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTIsXFwnY29sb3I6YmxhY2sgdGV4dC13aGl0ZVxcJzogcmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xIHx8IHJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MyB8fCByZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTR9XCIgbmctY2xpY2s9U2hvd0Zvcm1WaWV3KDEsZmFsc2UpPjxpIGNsYXNzPVwiZmEgZmEtd2luZG93LXJlc3RvcmUgZmEtbGdcIj48L2k+ICZuYnNwIEVkaXQgdGFzayBmb3JtPC9idXR0b24+IDxidXR0b24gdHlwZT1zdWJtaXQgaWQ9Y2xlYXJCdG4gbmctaWY9XCJyZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgfHwgcmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0zIHx8IHJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09NFwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc3VjY2VzcyBtbC0zXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1zYXZlXCI+PC9zcGFuPiZuYnNwIFNhdmUge3tyZXNvdXJjZURlZmluaXRpb24ubmFtZX19IGZvcm08L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBtdC0yIHAtMVwiPjxkaXYgbmctY2xhc3M9XCJ7XFwncC0wIGNvbC1sZy0yMCBjYXJkXFwnOnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSxcXCdidWlsZC1tb2RlXFwnOnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSB8fCByZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTMgfHwgcmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT00LFxcJ3AtMCBjb2wtbGctMjQgY2FyZFxcJzpyZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTIgfHwgcmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0zIHx8IHJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09NH1cIj48ZGl2IGt0LWdyaWQgZ3JpZC10eXBlPWdyaWRzdGVyVHlwZSB0YXNrLWRlZmluaXRpb249dGFza0RlZmluaXRpb24gZm9ybS1wYXJhbXM9cmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMgZm9ybS1kYXRhPWRhc2hib2FyZC5kYXRhIHBhcmVudD1kYXNoYm9hcmQud2lkZ2V0cyBhbGwtY29sdW1ucz1kYXNoYm9hcmQud2lkZ2V0cyBjbGFzcz1rdEdyaWQ+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImJvcmRlci0wIHAtMCBjb2wtbGctNCBzdGlja3lcIiBzdHlsZT1cIm92ZXJmbG93LXk6IGF1dG87dG9wOjEzMHB4O21heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSA3cmVtKTtcIiBuZy1pZj1cInJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MVwiPjxkaXYgY2xhc3M9cC0xPjxkaXYgY2xhc3M9XCJjYXJkIG0tMFwiIG5nLWlmPXNob3dGaWVsZFByb3BlcnRpZXM+PGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJnLWxpZ2h0IHAtMFwiPjxzcGFuIGNsYXNzPVwibWwtMSBsYWJlbC14cyBib2xkXCI+UHJvcGVydGllczwvc3Bhbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiB0aXRsZT1cIkNsb3NlIHByb3BlcnRpZXNcIiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIHAtMCBwbC0xIHByLTEgZmxvYXQtcmlnaHRcIiBuZy1jbGljaz1zaG93SGlkZVByb3BlcnRpZXMoZmFsc2UpPjxzbWFsbD48c3BhbiBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9zcGFuPjwvc21hbGw+PC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm10LTIgcC0xXCIgbmctaWY9c2hvd0ZpZWxkUHJvcGVydGllcyBrdC1mb3JtLWVsZW1lbnQtcHJvcGVydGllcyBsb2NhbC12YXJzPWxvY2FsVmFycyBmZD1zZWxlY3RlZEZpZWxkPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9ybT48ZGl2IGNsYXNzPVwiY2FyZCBtdC0yXCIgbmctaWY9XCJ0YXNrRGVmaW5pdGlvbi5mb3JtX3R5cGU9PVxcJ2lcXCdcIj48ZGl2IGNsYXNzPXAtMiBuZy1pZj1cInJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MlwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4ge3tyZXNvdXJjZURlZmluaXRpb24uaW5pdFRhc2tCdG5EZWYuaW5pdFRhc2tCdG5TdHlsZX19XCI+PGkgY2xhc3M9e3tyZXNvdXJjZURlZmluaXRpb24uaW5pdFRhc2tCdG5EZWYuaW5pdFRhc2tCdG5JY29ufX0+PC9pPiA8c3BhbiBjbGFzcz1tbC0xPnt7cmVzb3VyY2VEZWZpbml0aW9uLmluaXRUYXNrQnRuRGVmLmluaXRUYXNrQnRuVHh0fX08L3NwYW4+PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4ge3tyZXNvdXJjZURlZmluaXRpb24uaW5pdFRhc2tCdG5EZWYuY2FuY2VsQnRuU3R5bGV9fSBtbC0xXCI+PGkgY2xhc3M9e3tyZXNvdXJjZURlZmluaXRpb24uaW5pdFRhc2tCdG5EZWYuY2FuY2VsQnRuSWNvbn19PjwvaT4gPHNwYW4gY2xhc3M9bWwtMT57e3Jlc291cmNlRGVmaW5pdGlvbi5pbml0VGFza0J0bkRlZi5jYW5jZWxCdG5UeHR9fTwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBwLTJcIiBuZy1pZj1cInJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSE9MlwiPjxkaXYgY2xhc3M9XCJjb2wtbGctNiBwLTFcIj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxsYWJlbD5TdGFydCB0YXNrIGJ1dHRvbiB0ZXh0PC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1mb3JtLWNvbnRyb2wgbmctbW9kZWw9cmVzb3VyY2VEZWZpbml0aW9uLmluaXRUYXNrQnRuRGVmLmluaXRUYXNrQnRuVHh0PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBrdC1pY29uLXBpY2tlciBzZWxlY3QtY29sb3JzPXRydWUgc2VsZWN0LWljb25zPXRydWUgYnRuLWxhYmVsPXJlc291cmNlRGVmaW5pdGlvbi5pbml0VGFza0J0bkRlZi5pbml0VGFza0J0blR4dCBzZWxlY3RlZC1pY29uPXJlc291cmNlRGVmaW5pdGlvbi5pbml0VGFza0J0bkRlZi5pbml0VGFza0J0bkljb24gc2VsZWN0ZWQtYnV0dG9uPXJlc291cmNlRGVmaW5pdGlvbi5pbml0VGFza0J0bkRlZi5pbml0VGFza0J0blN0eWxlPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctNiBwLTFcIj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxsYWJlbD5DYW5jZWwgdGFzayBidXR0b24gdGV4dDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9Zm9ybS1jb250cm9sIG5nLW1vZGVsPXJlc291cmNlRGVmaW5pdGlvbi5pbml0VGFza0J0bkRlZi5jYW5jZWxCdG5UeHQ+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGt0LWljb24tcGlja2VyIHNlbGVjdC1jb2xvcnM9dHJ1ZSBzZWxlY3QtaWNvbnM9dHJ1ZSBidG4tbGFiZWw9cmVzb3VyY2VEZWZpbml0aW9uLmluaXRUYXNrQnRuRGVmLmNhbmNlbEJ0blR4dCBzZWxlY3RlZC1pY29uPXJlc291cmNlRGVmaW5pdGlvbi5pbml0VGFza0J0bkRlZi5jYW5jZWxCdG5JY29uIHNlbGVjdGVkLWJ1dHRvbj1yZXNvdXJjZURlZmluaXRpb24uaW5pdFRhc2tCdG5EZWYuY2FuY2VsQnRuU3R5bGU+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj0hcmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybUxvY2tlZD48YnI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4taW5mbyBidG4tc21cIiBuZy1jbGljaz1zYXZlVGFza0J0bnMoKT48c3BhbiBjbGFzcz1cImZhIGZhLXNhdmVcIj48L3NwYW4+Jm5ic3AgU2F2ZSB0YXNrIGJ1dHRvbnM8L2J1dHRvbj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrRm9yUGFnZS5odG1sJywnPGRpdiBjbGFzcz13aWRnZXQtaGVhZCBuZy1jbGFzcz1cIntcXCdtLTAgYm9yZGVyLTBcXCc6Zm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTJ9XCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgcC0wIG1iLTEgYmctbGlnaHRcIiBuZy1pZj1cImZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xXCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxpIGNsYXNzPVwiZmEgZmEtY29nIG14LTJcIj48L2k+PGxhYmVsPlRhc2sgd2lkZ2V0ICh7e2ZkLlByZXNlbnRhdGlvbklkfX0pPC9sYWJlbD4gPGEgaHJlZiB0aXRsZT1zb3J0IG5nLWNsYXNzPVwie1xcJ3dpZGdldC1wcm9wXFwnOmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCBmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZH1cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCB7e3Jlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZUNvZGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIHdpZGdldC1wcm9wXCI+PGkgY2xhc3M9XCJ7e3Jlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZUNvZGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIGZhcyBmYS1ncmlwLXZlcnRpY2FsXCI+PC9pPjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIHAtMCB0ZXh0LXJpZ2h0XCI+PGEgaHJlZiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIGJ0bi1zbVwiIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1wcm9wXFwnOmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCBmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZH1cIiB0aXRsZT1cIlNob3cvaGlkZSBwcm9wZXJ0aWVzXCIgbmctY2xpY2s9ZmQubG9jYWxWYXJzLnNob3dQcm9wZXJ0aWVzKDIsdHJ1ZSk+PGkgY2xhc3M9XCJmYXMgZmEtY29nXCI+PC9pPjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGRpdiBrdC10YXNrLWRyb3Bkb3duPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYga3QtdGFzay1wcm9jLWRpcmVjdGl2ZSBmZD1mZCBsb2NhbC12YXJzPWZkLmxvY2FsVmFycyB0YXNrLWRlZmluaXRpb249ZmQubG9jYWxWYXJzLnRhc2tEZWZpbml0aW9uIG5nLWlmPVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTIgJiYgZmQuUGFyYW1ldGVycy50YXNrRGVmSWQuaWRcIj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrRm9yUGFnZVByb3BlcnRpZXMuaHRtbCcsJzxkaXYgaWQ9a3RUYXNrRm9yUGFnZVByb3BlcnRpZXMgbmctZm9ybT1rdFRhc2tMaXN0V2lkZ2V0UHJvcGVydGllc3t7ZmQuUHJlc2VudGF0aW9uSWR9fT48ZGl2PjxkaXYgY2xhc3M+PGRpdiBjbGFzcz1cIm10LTIgdGV4dC1jZW50ZXJcIj48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyBkLWJsb2NrIHRleHQtbXV0ZWRcIj48Yj5JZDo8L2I+IHt7ZmQuUHJlc2VudGF0aW9uSWQgfHwgXFwnbm9uZVxcJ319PC9sYWJlbD4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPjxiPlR5cGU6PC9iPiB7e2ZkLk5hbWV9fSAoe3tmZC5FbGVtZW50VHlwZX19KTwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTAgbXQtMiBwLTJcIj48bGFiZWwgY2xhc3M9XCJjb2wtbGctMjQgcHgtMFwiIGZvcj10YXNrRGVmSWQ+VGFzazwvbGFiZWw+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBweC0wXCI+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIHNpemU9XCJcXCdzbWFsbFxcJ1wiIG5nLWlmPXRkcy5nZXRUYXNrRGVmaW5pdGlvbkxpc3QoKS5sZW5ndGggbmctbW9kZWw9ZmQuUGFyYW1ldGVycy50YXNrRGVmSWQgc2VsZWN0ZWQtaXRlbXM9ZmQuUGFyYW1ldGVycy50YXNrRGVmSWQgaXMtbXVsdGlwbGU9ZmFsc2UgbmFtZT10YXNre3tmZC5QcmVzZW50YXRpb25JZH19IG5nLXJlcXVpcmVkPWZhbHNlIGRyb3Bkb3duLWl0ZW1zPXRkcy50YXNrRGVmaW5pdGlvbkxpc3QgZHJvcGRvd24taWQ9XCJcXCd0YXNrXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgcGFyZW50LWZvcm0taWQ9XCJcXCdrdFRhc2tMaXN0V2lkZ2V0UHJvcGVydGllc1xcJytmZC5QcmVzZW50YXRpb25JZFwiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IHRhc2tcXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tJbnRlZ3JhdGlvbldpZGdldC5odG1sJywnPGRpdiBjbGFzcz13aWRnZXQtaGVhZCBuZy1jbGFzcz1cIntcXCd3aWRnZXQtYWN0aXZlIG0tMiBzaGFkb3dcXCc6bG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPjAsXFwnbS0wIGJvcmRlci0wXFwnOihmZC5SZWxhdGVkPT1udWxsIHx8IGZkLlJlbGF0ZWQ9PXVuZGVmaW5lZCkgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTJ9XCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgcC0wIG1iLTFcIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtaGVhZC1hY3RpdmVcXCc6bG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPjAsXFwnYmctbGlnaHRcXCc6bG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wfVwiIG5nLWlmPVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTFcIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGkgY2xhc3M9XCJmYSBmYS1nbG9iZSBteC0yXCI+PC9pPjxsYWJlbD5JbnRlZ3JhdGlvbiB3aWRnZXQgKHt7ZmQuUHJlc2VudGF0aW9uSWR9fSkgKHt7ZmQuTG9jYWxJZH19KTwvbGFiZWw+IDxhIGhyZWYgdGl0bGU9c29ydCBuZy1jbGFzcz1cIntcXCd3aWRnZXQtcHJvcFxcJzpsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgbG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT11bmRlZmluZWR9XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnkgYm9yZGVyLTAge3tncmlkVHlwZX19LWVsZW1lbnQtZHJhZy1oYW5kbGUgd2lkZ2V0LXByb3BcIj48aSBjbGFzcz1cInt7Z3JpZFR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIGZhcyBmYS1ncmlwLXZlcnRpY2FsXCI+PC9pPjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIHRleHQtcmlnaHQgbXktYXV0b1wiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9bG9jYWxWYXJzLnNob3dQcm9wZXJ0aWVzKDEpIG5nLWNsYXNzPVwie1xcJ2J0bi13YXJuaW5nXFwnOmxvY2FsVmFycy5uYW1lX2NvbmZpcm1lZCE9XFwnXFwnICYmIGxvY2FsVmFycy5uYW1lX2NvbmZpcm1lZCE9dW5kZWZpbmVkLCBcXCdidG4tb3V0bGluZS1wcmltYXJ5IG5vLWJvcmRlclxcJzpsb2NhbFZhcnMubmFtZV9jb25maXJtZWQ9PVxcJ1xcJyB8fCBsb2NhbFZhcnMubmFtZV9jb25maXJtZWQ9PXVuZGVmaW5lZH1cIiBjbGFzcz1cImJ0biBidG4teHNcIj48c3BhbiBuZy1pZj1cImxvY2FsVmFycy5uYW1lX2NvbmZpcm1lZCE9XFwnXFwnICYmIGxvY2FsVmFycy5uYW1lX2NvbmZpcm1lZCE9dW5kZWZpbmVkXCI+e3tsb2NhbFZhcnMubmFtZV9jb25maXJtZWR9fTwvc3Bhbj4gPHNwYW4gbmctaWY9XCJsb2NhbFZhcnMubmFtZV9jb25maXJtZWQ9PVxcJ1xcJyB8fCBsb2NhbFZhcnMubmFtZV9jb25maXJtZWQ9PXVuZGVmaW5lZFwiPlNlbGVjdCBpbnRlZ3JhdGlvbjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCIgbmctaWY9XCJsb2NhbFZhcnMubmFtZV9jb25maXJtZWQhPVxcJ1xcJyAmJiBsb2NhbFZhcnMubmFtZV9jb25maXJtZWQhPXVuZGVmaW5lZFwiPjxhIGhyZWYgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCBidG4tc21cIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtcHJvcFxcJzpsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgbG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT11bmRlZmluZWR9XCIgdGl0bGU9XCJTaG93L2hpZGUgcHJvcGVydGllc1wiIG5nLWNsaWNrPWxvY2FsVmFycy5zaG93UHJvcGVydGllcygyKT48aSBjbGFzcz1cImZhcyBmYS1jb2dcIj48L2k+PC9hPiA8YSBuZy1pZj1mYWxzZSBocmVmIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXN1Y2Nlc3MgYm9yZGVyLTAgYnRuLXNtXCIgdGl0bGU9XCJTaG93L2hpZGUgZm9ybVwiIG5nLWNsaWNrPVwibG9jYWxWYXJzLnNob3dGb3JtPSFsb2NhbFZhcnMuc2hvd0Zvcm1cIj48aSBuZy1jbGFzcz1cIntcXCdmYXMgZmEtZXllLXNsYXNoXFwnOiFsb2NhbFZhcnMuc2hvd0Zvcm0sXFwnZmFzIGZhLWV5ZVxcJzpsb2NhbFZhcnMuc2hvd0Zvcm19XCI+PC9pPjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGRpdiBrdC10YXNrLWRyb3Bkb3duMj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPjBcIiBjbGFzcz1tYi0yPjxkaXYga3QtZm9ybS1lbGVtZW50LXByb3BlcnRpZXMgZmQ9ZmQgbG9jYWwtdmFycz1sb2NhbFZhcnM+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cIiFsb2NhbFZhcnMuZm9ybUxvYWRlZCAmJiAobG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0yIHx8IGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yKVwiIGFuaW1hdGlvbi10eXBlPVwiXFwnZm9ybVxcJ1wiIGt0LXByb2Nlc3NpbmctYW5pbWF0aW9uLXRpbWVsaW5lIHNob3ctbXNnPWZhbHNlIG1lc3NhZ2U9XCJMb2FkaW5nIGZvcm0uLi5cIj48L2Rpdj48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLmZvcm1Mb2FkZWQgJiYgKGxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MiB8fCBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MilcIj48ZGl2IGNsYXNzPVwibXQtMSBwLTIgdGV4dC1wcmltYXJ5XCIgbmctaWY9XCJsb2NhbFZhcnMuZm9ybUxvYWRlZCAmJiBsb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0Lmxlbmd0aD09MFwiPjxzcGFuPkZvcm0gaXMgbm90IGRlZmluZWQgb3IgZW1wdHk8L3NwYW4+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbWwtMlwiIG5nLWNsaWNrPWxvY2FsVmFycy5nZXRGb3JtUmVzb3VyY2VPcmlnaW5hbCgpPkxvYWQgb3JpZ2luYWwgZm9ybTwvYnV0dG9uPjwvZGl2PjxkaXYga3QtZ3JpZCBncmlkLXR5cGU9bG9jYWxWYXJzLmdyaWRzdGVyVHlwZSB0YXNrLWZvcm0tbG9hZGVkPWxvY2FsVmFycy5mb3JtTG9hZGVkIHBhcmVudC1kYXRhc2V0LWRlZi1pZD1mZC5QYXJlbnREYXRhc2V0RGVmSWQgZGF0YXNldC1yZWNvcmQtaWQ9bG9jYWxWYXJzLmRhdGFzZXRSZWNvcmRJZCB0YXNrLWRlZmluaXRpb249dGFza0RlZmluaXRpb24gZm9ybS1wYXJhbXM9bG9jYWxWYXJzLmZvcm1QYXJhbXMgZm9ybS1wYXJhbXMtcGFyZW50PWZvcm1QYXJhbXMgZm9ybS1kYXRhPWZvcm1EYXRhW2ZkLlByZXNlbnRhdGlvbklkXSBwYXJlbnQ9bG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzIGFsbC1jb2x1bW5zPWxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cyBjbGFzcz1rdEdyaWQ+PC9kaXY+PGRpdiBjbGFzcz1wLTIgbmctaWY9XCJsb2NhbFZhcnMuZm9ybUxvYWRlZCAmJiBsb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0Lmxlbmd0aD4wXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIG5nLWNsaWNrPWxvY2FsVmFycy5jYWxsQXBpKCk+e3tmZC5QYXJhbWV0ZXJzLkNhbGxBcGlCdG5MYWJlbH19PGkgY2xhc3M9XCJtbC0yIGZhIGZhLWNvZ1wiPjwvaT48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrSW50ZWdyYXRpb25XaWRnZXRQcm9wZXJ0aWVzLmh0bWwnLCc8ZGl2IGNsYXNzPXAtMz48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0xXCIgZmQ9ZmQgbG9jYWwtdmFycz1sb2NhbFZhcnM+PGRpdiBuZy1mb3JtPWZvcm1EYXRhc2V0U2VsZWN0IGNsYXNzPVwiY29sLWxnLTEyIHAtMFwiPjxsYWJlbCBjbGFzcz10ZXh0LW11dGVkIGZvcj1pbnRlZ3JhdGlvbklkPlNlbGVjdCBpbnRlZ3JhdGlvbjwvbGFiZWw+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLW1vZGVsPWxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbSBuZy1pZj1sb2NhbFZhcnMucmVzb3VyY2VzTG9hZGVkIHNlbGVjdGVkLWl0ZW1zPWxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbSBpcy1tdWx0aXBsZT1mYWxzZSBuYW1lPWludGVncmF0aW9uSWQgbmctcmVxdWlyZWQ9dHJ1ZSBkcm9wZG93bi1pdGVtcz1sb2NhbFZhcnMucmVzb3VyY2VMaXN0IGRyb3Bkb3duLWlkPVwiXFwncmVzb3VyY2VMaXN0XFwnK3Jlc291cmNlLlBhcmFtZXRlcnMuZGF0YXNldC5pZFwiIHBhcmVudC1mb3JtLWlkPVwiXFwnZm9ybVJlc291cmNlXFwnK3Jlc291cmNlLlBhcmFtZXRlcnMuZGF0YXNldC5pZFwiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IGludGVncmF0aW9uXFwnXCI+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48L2Rpdj48ZGl2IGNsYXNzPW10LTI+PGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1sb2NhbFZhcnMuY29uZmlybUludGVncmF0aW9uKCk+Q29uZmlybTwvYnV0dG9uPiA8c3BhbiBjbGFzcz1cInNtYWxsIHRleHQtcHJpbWFyeSBtbC0yXCIgbmctaWY9bG9jYWxWYXJzLmludGVncmF0aW9uQ29uZmlybWVkPkNvbmZpcm1lZCE8L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT4xXCIgY2xhc3M9XCJidG4tZ3JvdXAgYnRuLWdyb3VwLXRvZ2dsZSB3LTEwMFwiIGRhdGEtdG9nZ2xlPWJ1dHRvbnM+PGxhYmVsIG5nLWNsaWNrPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPTJcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnkgYWN0aXZlXCI+PHNwYW4gY2xhc3M9XCJmYXIgZmEtbmV3c3BhcGVyXCI+PC9zcGFuPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9Zm9ybXR5cGUgaWQ9b3B0aW9uNCBhdXRvY29tcGxldGU9b2ZmIGNoZWNrZWQ+IEN1c3RvbWl6ZSBmb3JtPC9sYWJlbD4gPGxhYmVsIG5nLWNsaWNrPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPTVcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIj48c3BhbiBjbGFzcz1cImZhIGZhLWNvZ1wiPjwvc3Bhbj4gPGlucHV0IHR5cGU9cmFkaW8gbmFtZT1mb3JtdHlwZSBpZD1vcHRpb24xIGF1dG9jb21wbGV0ZT1vZmY+IFdpZGdldCBwcm9wZXJ0aWVzPC9sYWJlbD48L2Rpdj48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT01XCIgY2xhc3M9XCJyb3cgbS0wIHAtMlwiPjxkaXYgY2xhc3M9Y29sLWxnLTEyPjxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWRcIj5MYWJlbDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgbmctbW9kZWw9ZmQuTGFiZWw+IDxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWRcIj5FcnJvciBtc2c8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLkVycm9yTXNnPiA8bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkXCI+U2VhcmNoVGV4dDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgbmctbW9kZWw9ZmQuU2VhcmNoVGV4dD4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkJ1dHRvbiBsYWJlbDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5DYWxsQXBpQnRuTGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBtdC0zXCI+PHNwYW4gY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkIG10LTFcIj5EZWZpbmUgbWVzc2FnZSBhZnRlciBzdWNjZXNzZnVsIHByb2Nlc3Npbmc8L3NwYW4+IDx0ZXh0YXJlYSBuZy1tb2RlbD1mZC5SZXNwb25zZU1zZyBwbGFjZWhvbGRlcj1cIkVudGVyIG1lc3NhZ2VcIiBuYW1lPXJlc3BvbnNlTXNnIGNsYXNzPWZvcm0tY29udHJvbD5cXHJcXG5cXHRcXHRcXHQgICAgXFxyXFxuXFx0XFx0PC90ZXh0YXJlYT48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrTGlzdFdpZGdldC5odG1sJywnPGRpdiBjbGFzcz13aWRnZXQtaGVhZD48ZGl2IG5nLXNob3c9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MVwiIGNsYXNzPVwibXQtMiBtYi0yXCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgcC0wIG1iLTEgYmctbGlnaHRcIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wIGJnLWdyYXktMTAwXCI+PGkgY2xhc3M9XCJmYSBmYS1jb2cgbXgtMlwiPjwvaT48bGFiZWw+RXhlY3V0ZSB0YXNrIHdpZGdldCAoe3tmZC5QcmVzZW50YXRpb25JZH19KSAoe3tmZC5Mb2NhbElkfX0pPC9sYWJlbD4gPGEgaHJlZiB0aXRsZT1zb3J0IG5nLWNsYXNzPVwie1xcJ3dpZGdldC1wcm9wXFwnOmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCBsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZH1cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCB7e3Jlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZUNvZGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIHdpZGdldC1wcm9wXCI+PGkgY2xhc3M9XCJ7e3Jlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZUNvZGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIGZhcyBmYS1ncmlwLXZlcnRpY2FsXCI+PC9pPjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIHRleHQtcmlnaHQgcC0wXCIgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LXByb3BcXCc6bG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wIHx8IGxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkfVwiPjxhIGhyZWYgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCBidG4tc21cIiB0aXRsZT1cIlNob3cvaGlkZSBwcm9wZXJ0aWVzXCIgbmctY2xpY2s9bG9jYWxWYXJzLnNob3dQcm9wZXJ0aWVzKDEpPjxpIGNsYXNzPVwiZmFzIGZhLWNvZ1wiPjwvaT48L2E+IDxhIGhyZWYgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc3VjY2VzcyBib3JkZXItMCBidG4tc21cIiB0aXRsZT1cIlNob3cvaGlkZSBmb3JtXCIgbmctY2xpY2s9XCJsb2NhbFZhcnMuc2hvd0Zvcm09IWxvY2FsVmFycy5zaG93Rm9ybVwiPjxpIG5nLWNsYXNzPVwie1xcJ2ZhcyBmYS1leWUtc2xhc2hcXCc6IWxvY2FsVmFycy5zaG93Rm9ybSxcXCdmYXMgZmEtZXllXFwnOmxvY2FsVmFycy5zaG93Rm9ybX1cIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48ZGl2IGt0LXRhc2stZHJvcGRvd24yPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctc2hvdz1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT4wICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xXCIgY2xhc3M9XCJwLTIgbWItMlwiPjxkaXYga3QtZm9ybS1lbGVtZW50LXByb3BlcnRpZXMgZmQ9ZmQgbG9jYWwtdmFycz1sb2NhbFZhcnM+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1wLTEgbmctaWY9XCJyZXN1bHRzLmRhdGEubGVuZ3RoPT0wICYmICFsb2NhbFZhcnMuZmlyc3RUaW1lICYmIGxvY2FsVmFycy5kYXRhTG9hZGVkXCI+PGRpdiBjbGFzcz1oNT57e2ZkLlBhcmFtZXRlcnNMYW5nLk5vRGF0YU1zZ319PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cIihmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MikgfHwgKGxvY2FsVmFycy5zaG93Rm9ybSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSlcIj48ZGl2IGNsYXNzPXJvdyBuZy1pZj0hbG9jYWxWYXJzLmRhdGFMb2FkZWQgbmctY2xhc3M9XCJ7XFwncHJvY2Vzc2luZy1vdmVybGF5XFwnOiFsb2NhbFZhcnMuZGF0YUxvYWRlZH1cIiBrdC1wcm9jZXNzaW5nLWFuaW1hdGlvbiBzaG93LW1zZz10cnVlIHNob3ctYXMtY2FyZD10cnVlIG1lc3NhZ2U9XCJMb2FkaW5nIHRhc2sgZGF0YVwiPjwvZGl2PjxkaXYgY2xhc3M9cHgtMSBuZy1pZj1cIihmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MikgfHwgKGxvY2FsVmFycy5zaG93Rm9ybSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSlcIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwibG9jYWxWYXJzLmdldFRhc2tFeGVjdXRlRGF0YSh0YXNrX2luaXRpYXRlX2lkLHRhc2tfZXhlY3V0ZV9pZCk7bG9jYWxWYXJzLmRldGFpbHNDbGlja2VkPXRydWVcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kYXJrIGJ0bi1zbVwiIG5nLWRpc2FibGVkPSFsb2NhbFZhcnMudGFza1NlbGVjdGVkPjxzcGFuIGNsYXNzPVwiZmFzIGZhLWNvZ3NcIj48L3NwYW4+IERldGFpbHM8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1sb2NhbFZhcnMucGFnZUNoYW5nZWQoKSBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kYXJrIGJ0bi1zbVwiPjxzcGFuIGNsYXNzPVwiZmFzIGZhLXN5bmNcIj48L3NwYW4+IFJlZnJlc2ggZGF0YTwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJib3JkZXItdG9wIG10LTFcIj48ZGl2IGt0LXNtYXJ0LXRhYmxlIGt0LXJlZnJlc2gtZGF0YT1mZC5nZXRUYXNrTGlzdChwYWdlTnVtYmVyLHBhZ2VTaXplKSBpdGVtcy1vbi1wYWdlPWxvY2FsVmFycy5wYWdlU2l6ZSByb3ctc2VsZWN0ZWQtY2hhbmdlPWZkLnJvd1NlbGVjdGlvbkNoYW5nZWQoaXRlbSk+PC9kaXY+PGRpdiBuZy1zaG93PVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTIgfHwgKGxvY2FsVmFycy5zaG93Rm9ybSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSlcIiBrdC1leGVjdXRlLXRhc2std2lkZ2V0PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tMaXN0V2lkZ2V0RXhlLmh0bWwnLCc8ZGl2IGNsYXNzPXdpZGdldC1oZWFkPjxkaXYgY2xhc3M9cC0xIG5nLWlmPVwicmVzdWx0cy5kYXRhLmxlbmd0aD09MCAmJiAhbG9jYWxWYXJzLmZpcnN0VGltZSAmJiBsb2NhbFZhcnMuZGF0YUxvYWRlZFwiPjxkaXYgY2xhc3M9aDU+e3tmZC5QYXJhbWV0ZXJzTGFuZy5Ob0RhdGFNc2d9fTwvZGl2PjwvZGl2PjxkaXY+PGRpdiBjbGFzcz1yb3cgbmctaWY9IWxvY2FsVmFycy5kYXRhTG9hZGVkIG5nLWNsYXNzPVwie1xcJ3Byb2Nlc3Npbmctb3ZlcmxheVxcJzohbG9jYWxWYXJzLmRhdGFMb2FkZWR9XCIga3QtcHJvY2Vzc2luZy1hbmltYXRpb24gc2hvdy1tc2c9dHJ1ZSBzaG93LWFzLWNhcmQ9dHJ1ZSBtZXNzYWdlPVwiTG9hZGluZyB0YXNrIGRhdGFcIj48L2Rpdj48ZGl2IGNsYXNzPVwicHgtMSBwdC0xXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cImxvY2FsVmFycy5nZXRUYXNrRXhlY3V0ZURhdGEodGFza19pbml0aWF0ZV9pZCx0YXNrX2V4ZWN1dGVfaWQpO2xvY2FsVmFycy5kZXRhaWxzQ2xpY2tlZD10cnVlXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4tc21cIiBuZy1kaXNhYmxlZD0hbG9jYWxWYXJzLnRhc2tTZWxlY3RlZD48c3BhbiBjbGFzcz1cImZhcyBmYS1jb2dzXCI+PC9zcGFuPiB7ezo6ZmQuUGFyYW1ldGVyc0xhbmcuRGV0YWlsc0J0bkxhYmVsfX08L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1mZC5wYWdlQ2hhbmdlZCgpIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYnRuLXNtXCI+PHNwYW4gY2xhc3M9XCJmYXMgZmEtc3luY1wiPjwvc3Bhbj4ge3s6OmZkLlBhcmFtZXRlcnNMYW5nLlJlZnJlc2hEYXRhQnRuTGFiZWx9fTwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJib3JkZXItdG9wIG10LTFcIj48ZGl2IGt0LXNtYXJ0LXRhYmxlIHNldC1mbi1yZWZyZXNoLWRhdGE9c2V0RGlyZWN0aXZlRm5SZWZyZXNoRGF0YSh0aGVEaXJGbikga3QtcmVmcmVzaC1kYXRhPWZkLmdldFRhc2tMaXN0KHBhZ2VOdW1iZXIscGFnZVNpemUpIGl0ZW1zLW9uLXBhZ2U9bG9jYWxWYXJzLnBhZ2VTaXplIHJvdy1zZWxlY3RlZC1jaGFuZ2U9ZmQucm93U2VsZWN0aW9uQ2hhbmdlZChpdGVtKT48L2Rpdj48ZGl2IGt0LWV4ZWN1dGUtdGFzay13aWRnZXQ+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza0xpc3RXaWRnZXRQcm9wZXJ0aWVzLmh0bWwnLCc8ZGl2IGlkPWt0VGFza0xpc3RXaWRnZXRQcm9wZXJ0aWVzIGNsYXNzPVwicC0xIHctNzUgbS1hdXRvXCIgbmctZm9ybT1rdFRhc2tMaXN0V2lkZ2V0UHJvcGVydGllc3t7ZmQuUHJlc2VudGF0aW9uSWR9fT48ZGl2IG5nLXNob3c9XCJsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU+MFwiPjxkaXYgY2xhc3M+PGRpdiBjbGFzcz1cImg1IHRleHQtY2VudGVyXCI+RXhlY3V0ZSB0YXNrIHdpZGdldCBwcm9wZXJ0aWVzPC9kaXY+PGRpdiBjbGFzcz1cImNvbC0xMiBweC0wIG10LTJcIj48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+Tm8gZGF0YSBtZXNzYWdlPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzTGFuZy5Ob0RhdGFNc2c+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5EZXRhaWxzIGJ1dHRvbiBsYWJlbDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVyc0xhbmcuRGV0YWlsc0J0bkxhYmVsPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+UmVmcmVzaCBkYXRhIGxhYmVsPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzTGFuZy5SZWZyZXNoRGF0YUJ0bkxhYmVsPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+Q2xvc2UgYnV0dG9uIGxhYmVsPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzTGFuZy5DbG9zZUJ0bkxhYmVsPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+UmV0dXJuIGJ1dHRvbiBsYWJlbDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVyc0xhbmcuUmV0dXJuQnRuTGFiZWw+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveFwiPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IGlkPWNiQXV0b1NlYXJjaCBuYW1lPUF1dG9TZWFyY2ggbmctcmVxdWlyZWQ9ZmFsc2UgbmctbW9kZWw9ZmQuQXV0b1NlYXJjaD4gPGxhYmVsIGNsYXNzPWN1c3RvbS1jb250cm9sLWxhYmVsIGZvcj1jYkF1dG9TZWFyY2g+QXV0byBzZWFyY2g8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9XCJjdXN0b20tY29udHJvbCBjdXN0b20tY2hlY2tib3ggbXQtMVwiPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IGlkPWNiU2hvd1NlYXJjaEZvcm0gbmFtZT1jYlNob3dTZWFyY2hGb3JtIG5nLXJlcXVpcmVkPWZhbHNlIG5nLW1vZGVsPWZkLlNob3dTZWFyY2hGb3JtPiA8bGFiZWwgY2xhc3M9Y3VzdG9tLWNvbnRyb2wtbGFiZWwgZm9yPWNiU2hvd1NlYXJjaEZvcm0+U2hvdyBzZWFyY2ggZm9ybTwvbGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTAgbXQtMyBwLTIgYm9yZGVyIGJvcmRlci1wcmltYXJ5XCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHRleHQtcHJpbWFyeSBiZy13aGl0ZSBweC0yIG10LW4zXCI+U2VsZWN0IHRhc2tzIGJ5IGNsYWltIHN0YXR1czwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMjQgbXQtMlwiPjxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgYnRuLWdyb3VwLXNtIGJ0bi1ncm91cC10b2dnbGVcIiBkYXRhLXRvZ2dsZT1idXR0b25zPjxsYWJlbCBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi10b2dnbGVcIiBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuU2VhcmNoLnRhc2tMaXN0VHlwZT09XFwnY2xhaW1cXCd9XCIgbmctY2xpY2s9XCJmZC5TZWFyY2gudGFza0xpc3RUeXBlPVxcJ2NsYWltXFwnXCI+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT1hY2Nlc3NUeXBlIG5nLWNoZWNrZWQ9XCJmZC5TZWFyY2gudGFza0xpc3RUeXBlPT1cXCdjbGFpbVxcJ1wiIG5nLW1vZGVsPWZkLlNlYXJjaC50YXNrTGlzdFR5cGUgaWQ9dGFza0xpc3RUeXBlMSBhdXRvY29tcGxldGU9b2ZmPiBOb3QgY2xhaW1lZDwvbGFiZWw+IDxsYWJlbCBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi10b2dnbGVcIiBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuU2VhcmNoLnRhc2tMaXN0VHlwZT09XFwnZXhlY3V0ZVxcJ31cIiBuZy1jbGljaz1cImZkLlNlYXJjaC50YXNrTGlzdFR5cGU9XFwnZXhlY3V0ZVxcJ1wiPjxpbnB1dCB0eXBlPXJhZGlvIG5nLWNoZWNrZWQ9XCJmZC5TZWFyY2gudGFza0xpc3RUeXBlPT1cXCdleGVjdXRlXFwnXCIgbmctbW9kZWw9ZmQuU2VhcmNoLnRhc2tMaXN0VHlwZSBuYW1lPWFjY2Vzc1R5cGUgaWQ9dGFza0xpc3RUeXBlMiBhdXRvY29tcGxldGU9b2ZmPiBDbGFpbWVkPC9sYWJlbD4gPGxhYmVsIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYnRuLXRvZ2dsZVwiIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpmZC5TZWFyY2gudGFza0xpc3RUeXBlPT1cXCdhbGxcXCd9XCIgbmctY2xpY2s9XCJmZC5TZWFyY2gudGFza0xpc3RUeXBlPVxcJ2FsbFxcJ1wiPjxpbnB1dCB0eXBlPXJhZGlvIG5nLWNoZWNrZWQ9XCJmZC5TZWFyY2gudGFza0xpc3RUeXBlPT1cXCdhbGxcXCdcIiBuZy1tb2RlbD1mZC5TZWFyY2gudGFza0xpc3RUeXBlIG5hbWU9YWNjZXNzVHlwZSBpZD10YXNrTGlzdFR5cGUzIGF1dG9jb21wbGV0ZT1vZmY+IEFueTwvbGFiZWw+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTAgbXQtMlwiPjxsYWJlbCBjbGFzcz1cImNvbC0yNCBweC0wXCIgZm9yPXRhc2tEZWZJZD5GaWx0ZXIgbGlzdCBieSB0YXNrPC9sYWJlbD48ZGl2IGNsYXNzPVwiY29sLTI0IHB4LTBcIj48a3QtZHJvcGRvd24tc3RhbmRhcmQgbmctaWY9XCJ0ZHMuaXNDYWNoZWRbXFwndGFza0RlZmluaXRpb25MaXN0XFwnXSAmJiB0ZHMudGFza0RlZmluaXRpb25MaXN0Lmxlbmd0aCA+IDBcIiBuZy1tb2RlbD1mZC5TZWFyY2gudGFza0RlZklkcyBzZWxlY3RlZC1pdGVtcz1mZC5TZWFyY2gudGFza0RlZklkcyBpcy1tdWx0aXBsZT10cnVlIG5hbWU9dGFza3t7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1yZXF1aXJlZD1mYWxzZSBkcm9wZG93bi1pdGVtcz1sb2NhbFZhcnMudGFza0RlZkxpc3QgZHJvcGRvd24taWQ9XCJcXCd0YXNrXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgcGFyZW50LWZvcm0taWQ9XCJcXCd0YXNrXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgdGFza1xcJ1wiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTAgbXQtMlwiPjxsYWJlbCBjbGFzcz1cImNvbC0yNCBweC0wXCIgZm9yPXRhc2tTdGF0dXM+RmlsdGVyIGxpc3QgYnkgdGFzayBzdGF0dXM8L2xhYmVsPjxkaXYgY2xhc3M9XCJjb2wtMjQgcHgtMFwiPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1pZj1cImxvY2FsVmFycy50YXNrU3RhdHVzZXMubGVuZ3RoPjBcIiBuZy1tb2RlbD1mZC5TZWFyY2gudGFza1N0YXR1cyBzZWxlY3RlZC1pdGVtcz1mZC5TZWFyY2gudGFza1N0YXR1cyBpcy1tdWx0aXBsZT10cnVlIG5hbWU9dGFza1N0YXR1c3t7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1yZXF1aXJlZD1mYWxzZSBkcm9wZG93bi1pdGVtcz1sb2NhbFZhcnMudGFza1N0YXR1c2VzIGRyb3Bkb3duLWlkPVwiXFwndGFza1N0YXR1c1xcJytmZC5QcmVzZW50YXRpb25JZFwiIHBhcmVudC1mb3JtLWlkPVwiXFwndGFza1N0YXR1c1xcJytmZC5QcmVzZW50YXRpb25JZFwiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IHRhc2sgc3RhdHVzXFwnXCI+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBtdC0zIHAtMiBib3JkZXIgYm9yZGVyLXByaW1hcnlcIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gdGV4dC1wcmltYXJ5IGJnLXdoaXRlIHB4LTIgbXQtbjNcIj5EZWZpbmUgcGVybWlzc2lvbnM8L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTI0IG10LTJcIj48ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGJ0bi1ncm91cC1zbSBidG4tZ3JvdXAtdG9nZ2xlXCIgZGF0YS10b2dnbGU9YnV0dG9ucz48bGFiZWwgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4tdG9nZ2xlXCIgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5DdXJyZW50VXNlcn1cIiBuZy1jbGljaz1cImZkLlNlYXJjaC5DdXJyZW50VXNlcj10cnVlXCI+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT1hY2Nlc3NUeXBlIG5nLWNoZWNrZWQ9ZmQuU2VhcmNoLmN1cnJlbnRVc2VyIG5nLW1vZGVsPWZkLlNlYXJjaC5jdXJyZW50VXNlciBpZD1hY2Nlc3NUeXBlMSBhdXRvY29tcGxldGU9b2ZmPiBDdXJyZW50IHVzZXI8L2xhYmVsPiA8bGFiZWwgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4tdG9nZ2xlXCIgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOiFmZC5TZWFyY2guQ3VycmVudFVzZXJ9XCIgbmctY2xpY2s9XCJmZC5TZWFyY2guQ3VycmVudFVzZXI9ZmFsc2VcIj48aW5wdXQgdHlwZT1yYWRpbyBuZy1jaGVja2VkPSFmZC5TZWFyY2guQ3VycmVudFVzZXIgbmctbW9kZWw9ZmQuU2VhcmNoLkN1cnJlbnRVc2VyIG5hbWU9YWNjZXNzVHlwZSBpZD1hY2Nlc3NUeXBlMiBhdXRvY29tcGxldGU9b2ZmPiBTZWxlY3RlZCB1c2VycyBhbmQgZ3JvdXBzPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBtdC0yXCIgbmctc2hvdz0hZmQuU2VhcmNoLmN1cnJlbnRVc2VyPjxkaXYgY2xhc3M9Y29sLTI0PjxkaXYga3QtdXNlcnMtZ3JvdXBzLXNlbGVjdCBzZWxlY3RlZC11c2Vycz1mZC5TZWFyY2guVXNlcnMgc2VsZWN0ZWQtZ3JvdXBzPWZkLlNlYXJjaC5Hcm91cHMgaGVhZGVyLWxhYmVsPWZkLlNlYXJjaC5oZWFkZXJMYWJlbCB1c2Vycy1sYWJlbD1mZC5TZWFyY2gudXNlcnNMYWJlbCBncm91cHMtbGFiZWw9ZmQuU2VhcmNoLmdyb3Vwc0xhYmVsPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tNZXNzYWdlLmh0bWwnLCc8ZGl2IGNsYXNzPXdpZGdldC1oZWFkIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1hY3RpdmUgbS0yIHNoYWRvd1xcJzpsb2NhbFZhcnMuYWN0aW9uQnV0dG9uUHJvcHM+MH1cIj48ZGl2IG5nLWlmPVwiZ3NydmMuZ2V0Rm9ybVZpZXdUeXBlKCk9PTEgfHwgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTFcIj48ZGl2IGNsYXNzPVwicm93IGJnLWxpZ2h0IG0tMCBwLTAgbWItMVwiIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1oZWFkLWFjdGl2ZVxcJzpsb2NhbFZhcnMuYWN0aW9uQnV0dG9uUHJvcHM+MCxcXCdiZy1saWdodFxcJzpsb2NhbFZhcnMuYWN0aW9uQnV0dG9uUHJvcHM9PTB9XCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxpIGNsYXNzPVwiZmFyIGZhLWNvbW1lbnQtYWx0IG14LTJcIj48L2k+PGxhYmVsPlRhc2sgbWVzc2FnZSAoe3s6OmZkLlByZXNlbnRhdGlvbklkfX0pPC9sYWJlbD4gPGEgaHJlZiB0aXRsZT1zb3J0IG5nLWNsYXNzPVwie1xcJ3dpZGdldC1wcm9wXFwnOmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCBsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZH1cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCB7e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZSB3aWRnZXQtcHJvcFwiPjxpIGNsYXNzPVwie3tncmlkVHlwZX19LWVsZW1lbnQtZHJhZy1oYW5kbGUgZmFzIGZhLWdyaXAtdmVydGljYWxcIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgbXktYXV0byBwLTBcIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwibG9jYWxWYXJzLnNob3dNZXNzYWdlRGVmaW5pdGlvbj10cnVlXCIgY2xhc3M9XCJmbG9hdC1yaWdodCBidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4teHNcIj48aSBjbGFzcz1cImZhIGZhLXBsdXMgbXItMlwiPjwvaT48c3Bhbj5EZWZpbmUgbWVzc2FnZTwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGRpdiBrdC10YXNrLWRyb3Bkb3duMj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLnNob3dNZXNzYWdlRGVmaW5pdGlvbiAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MVwiIGNsYXNzPXAtMj48ZGl2IGt0LWZvcm0tZWxlbWVudC1wcm9wZXJ0aWVzIGZkPWZkIGxvY2FsLXZhcnM9bG9jYWxWYXJzPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sIG5nLWlmPVwiZ3NydmMuZ2V0Rm9ybVZpZXdUeXBlKCk9PTIgJiYgKHRhc2tEZWZpbml0aW9uLnRhc2tJbml0aWF0ZUluc3RhbmNlLlN0YXR1cy5OYW1lPT1cXCdyZWFkeVxcJyB8fCB0YXNrRGVmaW5pdGlvbi50YXNrSW5pdGlhdGVJbnN0YW5jZS5TdGF0dXMuTmFtZT09XFwnY2xhaW1cXCcpICYmIGxvY2FsVmFycy5mb3JtVHlwZT09XFwnaVxcJyAmJiAhZmQuUGFyYW1ldGVycy5BbHdheXNTaG93XCI+PGRpdiBuZy1iaW5kLWh0bWw9bG9jYWxWYXJzLlJlc3BvbnNlTXNnPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sIG5nLWlmPVwiZ3NydmMuZ2V0Rm9ybVZpZXdUeXBlKCk9PTIgJiYgdGFza0RlZmluaXRpb24udGFza0V4ZWN1dGVJbnN0YW5jZS5TdGF0dXMuTmFtZT09XFwnY29tcGxldGVkXFwnICYmIGxvY2FsVmFycy5mb3JtVHlwZT09XFwnZVxcJyAmJiAhZmQuUGFyYW1ldGVycy5BbHdheXNTaG93XCI+PGRpdiBuZy1iaW5kLWh0bWw9bG9jYWxWYXJzLlJlc3BvbnNlTXNnPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sIG5nLWlmPWZkLlBhcmFtZXRlcnMuQWx3YXlzU2hvdz48ZGl2IG5nLWJpbmQtaHRtbD1sb2NhbFZhcnMuUmVzcG9uc2VNc2c+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza01lc3NhZ2VQcm9wZXJ0aWVzLmh0bWwnLCc8ZGl2PjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9XCJsb2NhbFZhcnMuc2hvd01lc3NhZ2VEZWZpbml0aW9uPWZhbHNlXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4teHNcIj48aSBjbGFzcz1cImZhIGZhLXRpbWVzIG1yLTJcIj48L2k+PHNwYW4+Y2xvc2U8L3NwYW4+PC9idXR0b24+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveFwiPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IGlkPWNiQWx3YXlzU2hvd3t7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkFsd2F5c1Nob3c+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPWNiQWx3YXlzU2hvd3t7ZmQuUHJlc2VudGF0aW9uSWR9fT5BbHdheXMgc2hvdyBtZXNzYWdlPC9sYWJlbD48L2Rpdj48ZGl2IHRydW1ib3d5Zy1uZyBuZy1tb2RlbD1mZC5SZXNwb25zZU1zZyBwbGFjZWhvbGRlcj1cIkVudGVyIG1lc3NhZ2VcIiBlZGl0b3ItY29uZmlnPVwie2F1dG9ncm93OiB0cnVlLCBidG5zOiBbIFxcJ2ZvcmVDb2xvclxcJywgXFwnYmFja0NvbG9yXFwnLFxcJ2JvbGRcXCcsXFwnaXRhbGljXFwnLFxcJ3VuZGVybGluZVxcJyxcXCdzdHJpa2V0aHJvdWdoXFwnLFxcJ3xcXCcsXFwncmVtb3ZlZm9ybWF0XFwnLFxcJ3ZpZXdIVE1MXFwnLF19XCI+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza1Byb2NEaXJlY3RpdmUuaHRtbCcsJzxkaXYgbmctaWY9XCJsb2NhbFZhcnMuc2VsZWN0ZWRUYXNrcy5sZW5ndGg+MCAmJiAhbG9jYWxWYXJzLmlubGluZVRhc2tEZWZpbml0aW9uLmlubGluZUluaXRpYXRlRm9ybUxvYWRlZFwiPjxidXR0b24gbmctcmVwZWF0PVwidGFzayBpbiBsb2NhbFZhcnMuc2VsZWN0ZWRUYXNrcyB0cmFjayBieSB0YXNrLmlkXCIgdHlwZT1idXR0b24gbmctY2xpY2s9bG9jYWxWYXJzLlN0YXJ0VGFzayh0YXNrLmlkLDAsbG9jYWxWYXJzLnByZXZpb3VzVGFzaykgY2xhc3M9XCJidG4ge3t0YXNrLmJ0bkNsYXNzfX0gcC0xIG1sLTJcIj48aSBjbGFzcz17e3Rhc2suaWNvbn19PjwvaT4ge3t0YXNrLmJ0bkxhYmVsfX08L2J1dHRvbj48L2Rpdj48aDMgbmctaWY9XCJsb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb24uc3RhdHVzPT00MDNcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlclwiPnt7bG9jYWxWYXJzLmlubGluZVRhc2sudGFza1Byb2NSZXNwb25zZS5tc2d9fTwvaDM+PGRpdiBuZy1pZj1cImxvY2FsVmFycy5pbmxpbmVUYXNrRGVmaW5pdGlvbi5wcm9jX3R5cGU9PTFcIj48ZGl2IGt0LXRhc2stcHJvYy1saXN0PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJsb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb24ucHJvY190eXBlPT0yXCI+PGRpdiBrdC10YXNrLXByb2MtaW5pdGlhdGUgdGFzay1kZWZpbml0aW9uPWxvY2FsVmFycy5pbmxpbmVUYXNrRGVmaW5pdGlvbiBkYXNoYm9hcmQ9bG9jYWxWYXJzLmlubGluZVRhc2sgcmVzb3VyY2UtZGVmaW5pdGlvbj1sb2NhbFZhcnMuaW5saW5lVGFzay5yZXNvdXJjZURlZmluaXRpb24gbG9jYWwtdmFycz1sb2NhbFZhcnM+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImxvY2FsVmFycy5pbmxpbmVUYXNrRGVmaW5pdGlvbi5wcm9jX3R5cGU9PTNcIj48ZGl2IGt0LXRhc2stcHJvYy1leGVjdXRlIHRhc2stZGVmaW5pdGlvbj1sb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb24gZGFzaGJvYXJkPWxvY2FsVmFycy5pbmxpbmVUYXNrIHJlc291cmNlLWRlZmluaXRpb249bG9jYWxWYXJzLmlubGluZVRhc2sucmVzb3VyY2VEZWZpbml0aW9uIHRhc2stZXhlY3V0ZS1pbnN0YW5jZT1sb2NhbFZhcnMuaW5saW5lVGFza0RlZmluaXRpb24udGFza0V4ZWN1dGVJbnN0YW5jZSB0YXNrLWluaXRpYXRlLWluc3RhbmNlPWxvY2FsVmFycy5pbmxpbmVUYXNrRGVmaW5pdGlvbi50YXNrSW5pdGlhdGVJbnN0YW5jZSBsb2NhbC12YXJzPWxvY2FsVmFycz48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPWZhbHNlIGNsYXNzPWJ1aWx0T25LYXRhbHlvPjxpbWcgc3JjPS9pbWcvZmF2aWNvbi5pY28+IDxhIGhyZWY9aHR0cHM6Ly93d3cua2F0YWx5by5jb20gY2xhc3M9c21hbGw+QnVpbHQgb24gS0FUQUxZTzwvYT48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrUHJvY0V4ZWN1dGUuaHRtbCcsJzxkaXYgaWQ9a3RUYXNrUHJvY0V4ZWN1dGUgbmctY2xhc3M9XCJ7XFwnbXQtMCBtYi0zXFwnOmxvY2FsVmFycy5PcGVuVGFza1R5cGUhPVxcJ25ld1BhZ2VcXCcsXFwnY2FyZCBtdC0xXFwnOmxvY2FsVmFycy5PcGVuVGFza1R5cGU9PVxcJ25ld1BhZ2VcXCd9XCI+PGZvcm0gbmFtZT1mb3JtYSBjbGFzcz1mb3JtLWhvcml6b250YWwgbmctaW5pdD1zZXRGb3JtKGZvcm1hKSByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2IGNsYXNzIG5nLWhpZGU9OjpyZXNvdXJjZURlZmluaXRpb24uUGFyYW1ldGVycy5IaWRlSGVhZGVyPjxkaXYgY2xhc3M9XCJyb3cgbS0wIGJvcmRlci1ib3R0b21cIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXktYXV0b1wiIG5nLXNob3c9Ojpsb2NhbFZhcnMuU2hvd1JldHVybkJ0bj48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYm9yZGVyLTAgYnRuLXhzXCIgdHlwZT1idXR0b24gbmctY2xpY2s9cmV0dXJuVG9QcmV2aW91c1Rhc2soKT48aSBjbGFzcz1cImZhcyBmYS1hbmdsZS1sZWZ0IG1yLTFcIj48L2k+e3s6OmZkLlBhcmFtZXRlcnNMYW5nLlJldHVybkJ0bkxhYmVsfX08L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXktYXV0b1wiIG5nLXNob3c9Ojpsb2NhbFZhcnMuU2hvd0Nsb3NlQnRuPjxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFuZ2VyIGJvcmRlci0wIGJ0bi14c1wiIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLkNhbmNlbENsaWNrZWQoKT48aSBjbGFzcz1cImZhIGZhLXRpbWVzIG1yLTFcIj48L2k+e3s6OmZkLlBhcmFtZXRlcnNMYW5nLkNsb3NlQnRuTGFiZWx9fTwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgbS1hdXRvIHRleHQtY2VudGVyXCI+PHNwYW4gY2xhc3M9aDU+e3s6OnJlc291cmNlRGVmaW5pdGlvbi5TdWJqZWN0fX08L3NwYW4+IDxzcGFuIG5nLWlmPVwidGFza0V4ZWN1dGVJbnN0YW5jZS5sZW5ndGg+MFwiIGNsYXNzPVwiaDYgdGV4dC1tdXRlZCBtbC0zXCI+KCBpZCA9IHt7Ojp0YXNrRXhlY3V0ZUluc3RhbmNlWzBdLmlkfX0gKTwvc3Bhbj4gPHNwYW4gbmctc2hvdz1cInRhc2tFeGVjdXRlSW5zdGFuY2UuU3RhdHVzLk5hbWU9PVxcJ2NvbXBsZXRlZFxcJ1wiIGNsYXNzPVwibWwtMyBoNiB0ZXh0LXdhcm5pbmdcIj5UYXNrIGlzIGNvbXBsZXRlZCE8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHRleHQtcmlnaHRcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGJ0bi1zbVwiIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIGRhdGEtdGFyZ2V0PSNpc0NvbGxhcHNlZDNJZHt7Ojp0YXNrRGVmaW5pdGlvbi50cmFuc2FjdGlvbl9pZH19IGFyaWEtZXhwYW5kZWQ9dHJ1ZSBhcmlhLWNvbnRyb2xzPWlzQ29sbGFwc2VkM0lke3s6OnRhc2tEZWZpbml0aW9uLnRyYW5zYWN0aW9uX2lkfX0gbmctY2xpY2s9bFZhcnMuY2hhbmdlSXNDb2xsYXBzZWQzKCk+PHNwYW4gbmctY2xhc3M9XCJ7XFwnZmEgZmEtY2hldnJvbi1kb3duXFwnOiBsVmFycy5pc0NvbGxhcHNlZDM9PWZhbHNlLFxcJ2ZhIGZhLWNoZXZyb24tdXBcXCc6IGxWYXJzLmlzQ29sbGFwc2VkMyB9XCI+PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJtLTAgbWItMVwiIG5nLWlmPVwidGFza0luaXRpYXRlSW5zdGFuY2VbMF0uU3RhdHVzLk5hbWU9PVxcJ3JlYWR5XFwnICYmIHRhc2tFeGVjdXRlSW5zdGFuY2UubGVuZ3RoPT0wXCI+PGRpdiBjbGFzcz1cInAtMSBib3JkZXItYm90dG9tIHNoYWRvdy1zbVwiPjxidXR0b24gbmctY2xpY2s9XCJFeGVjdXRlVGFza0FjdGlvbihcXCdjbGFpbVxcJylcIiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi14c1wiPjxzcGFuIGNsYXNzPVwiZmFyIGZhLWhhbmQtcm9ja1wiPjwvc3Bhbj48c3BhbiBjbGFzcz1tbC0xPkNsYWltIHRhc2s8L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQgbS0wIG1iLTFcIiBuZy1pZj1mYWxzZT48ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgcC0xXCI+PGRpdiBuZy1zaG93PVwidGFza0V4ZWN1dGVJbnN0YW5jZS5TdGF0dXMuTmFtZSE9XFwnY29tcGxldGVkXFwnXCIgY2xhc3M9Y29udHJvbC1ncm91cD48c3Bhbj5UYXNrIGluZm88L3NwYW4+IDxidXR0b24gbmctaWY9XCJ0YXNrSW5pdGlhdGVJbnN0YW5jZVswXS5TdGF0dXMuTmFtZT09XFwncmVhZHlcXCcgJiYgdGFza0V4ZWN1dGVJbnN0YW5jZS5sZW5ndGg9PTBcIiBuZy1jbGljaz1cIkV4ZWN1dGVUYXNrQWN0aW9uKFxcJ2NsYWltXFwnKVwiIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodFwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtaGFuZC1ncmFiLW8gbXItMlwiPjwvc3Bhbj4gQ2xhaW0gdGFzazwvYnV0dG9uPiA8YnV0dG9uIG5nLWlmPVwidGFza0V4ZWN1dGVJbnN0YW5jZSE9dW5kZWZpbmVkICYmIHRhc2tFeGVjdXRlSW5zdGFuY2VbMF0uU3RhdHVzLk5hbWUhPVxcJ3JlYWR5XFwnICYmICF0YXNrRGVmaW5pdGlvbi5BdXRvU3RhcnRcIiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHRcIj48c3BhbiBjbGFzcz1cImZhIGZhLXBsYXkgbXItMlwiPjwvc3Bhbj4gU3RhcnQgdGFzazwvYnV0dG9uPiA8YnV0dG9uIG5nLWNsaWNrPVwiRXhlY3V0ZVRhc2tBY3Rpb24oXFwnT25Ib2xkXFwnKVwiIG5nLWlmPVwidGFza0V4ZWN1dGVJbnN0YW5jZSE9dW5kZWZpbmVkICYmIHRhc2tFeGVjdXRlSW5zdGFuY2UubGVuZ3RoPjAgJiYgdGFza0V4ZWN1dGVJbnN0YW5jZVswXS5TdGF0dXMuTmFtZSE9XFwncmVhZHlcXCdcIiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHRcIj48c3BhbiBjbGFzcz1cImZhIGZhLXBhdXNlIG1yLTJcIj48L3NwYW4+IFBhdXNlIHRhc2s8L2J1dHRvbj4gPGJ1dHRvbiBuZy1jbGljaz1cIkV4ZWN1dGVUYXNrQWN0aW9uKFxcJ0luUHJvZ3Jlc3NcXCcpXCIgbmctaWY9XCJ0YXNrRXhlY3V0ZUluc3RhbmNlIT11bmRlZmluZWQgJiYgdGFza0V4ZWN1dGVJbnN0YW5jZS5sZW5ndGg+MCAmJiB0YXNrRXhlY3V0ZUluc3RhbmNlWzBdLlN0YXR1cy5OYW1lIT1cXCdyZWFkeVxcJ1wiIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodFwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtcmVmcmVzaCBtci0yXCI+PC9zcGFuPiBSZXN1bWUgdGFzazwvYnV0dG9uPiA8YnV0dG9uIG5nLWlmPVwidGFza0V4ZWN1dGVJbnN0YW5jZSE9dW5kZWZpbmVkICYmIHRhc2tFeGVjdXRlSW5zdGFuY2VbMF0uU3RhdHVzLk5hbWUhPVxcJ3JlYWR5XFwnICYmIHRhc2tEZWZpbml0aW9uLkNhbkRlbGVnYXRlXCIgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1oYW5kLW8tcmlnaHQgbXItMlwiPjwvc3Bhbj4gRGVsZWdhdGUgdGFzazwvYnV0dG9uPiA8YnV0dG9uIG5nLWlmPVwidGFza0V4ZWN1dGVJbnN0YW5jZSE9dW5kZWZpbmVkICYmIHRhc2tFeGVjdXRlSW5zdGFuY2VbMF0uU3RhdHVzLk5hbWUhPVxcJ3JlYWR5XFwnICYmIHRhc2tEZWZpbml0aW9uLkNhblJlbGVhc2VcIiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1jbG9zZSBtci0yXCI+PC9zcGFuPiBSZWxlYXNlIHRhc2s8L2J1dHRvbj4gPGJ1dHRvbiBuZy1pZj1mYWxzZSBjbGFzcz1cImJ0biBidG4tbGluayBmbG9hdC1yaWdodFwiIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwiaXNDb2xsYXBzZWRUYXNrRGV0YWlscyA9ICFpc0NvbGxhcHNlZFRhc2tEZXRhaWxzXCIgZGF0YS10b2dnbGU9Y29sbGFwc2UgZGF0YS10YXJnZXQ9I2lzQ29sbGFwc2VkVGFza0RldGFpbHN7ezo6dGFza0luaXRpYXRlSW5zdGFuY2VbMF0uaWR9fXt7Ojp0YXNrRXhlY3V0ZUluc3RhbmNlWzBdLmlkfX0gcm9sZT1idXR0b24gYXJpYS1leHBhbmRlZD10cnVlIGFyaWEtY29udHJvbHM9aXNDb2xsYXBzZWRUYXNrRGV0YWlsc3t7Ojp0YXNrSW5pdGlhdGVJbnN0YW5jZVswXS5pZH19e3s6OnRhc2tFeGVjdXRlSW5zdGFuY2VbMF0uaWR9fT48c3BhbiBuZy1jbGFzcz1cIntcXCdmYSBmYS1jaGV2cm9uLWRvd25cXCc6IGlzQ29sbGFwc2VkVGFza0RldGFpbHMsXFwnZmEgZmEtY2hldnJvbi11cFxcJzogIWlzQ29sbGFwc2VkVGFza0RldGFpbHMgfVwiPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48YnV0dG9uIG5nLXNob3c9XCJ0YXNrRXhlY3V0ZUluc3RhbmNlLlN0YXR1cy5OYW1lPT1cXCdjb21wbGV0ZWRcXCdcIiBjbGFzcz1cImJ0biBidG4tbGluayBmbG9hdC1yaWdodFwiIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwiaXNDb2xsYXBzZWRUYXNrRGV0YWlscyA9ICFpc0NvbGxhcHNlZFRhc2tEZXRhaWxzXCIgZGF0YS10b2dnbGU9Y29sbGFwc2UgZGF0YS10YXJnZXQ9I2lzQ29sbGFwc2VkVGFza0RldGFpbHN7e3Rhc2tJbml0aWF0ZUluc3RhbmNlWzBdLmlkfX17e3Rhc2tFeGVjdXRlSW5zdGFuY2VbMF0uaWR9fSByb2xlPWJ1dHRvbiBhcmlhLWV4cGFuZGVkPWZhbHNlIGFyaWEtY29udHJvbHM9aXNDb2xsYXBzZWRUYXNrRGV0YWlsc3t7dGFza0luaXRpYXRlSW5zdGFuY2VbMF0uaWR9fXt7dGFza0V4ZWN1dGVJbnN0YW5jZVswXS5pZH19PjxzcGFuIG5nLWNsYXNzPVwie1xcJ2ZhIGZhLWNoZXZyb24tZG93blxcJzogaXNDb2xsYXBzZWRUYXNrRGV0YWlscyxcXCdmYSBmYS1jaGV2cm9uLXVwXFwnOiAhaXNDb2xsYXBzZWRUYXNrRGV0YWlscyB9XCI+PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgbmctaWY9ZmFsc2UgY2xhc3M9Y29sbGFwc2UgaWQ9aXNDb2xsYXBzZWRUYXNrRGV0YWlsc3t7Ojp0YXNrSW5pdGlhdGVJbnN0YW5jZVswXS5pZH19e3s6OnRhc2tFeGVjdXRlSW5zdGFuY2VbMF0uaWR9fT48ZGl2IGt0LXRhc2stZGV0YWlscyB0LWluaXQ9Ojp0YXNrSW5pdGlhdGVJbnN0YW5jZVswXSB0LWV4ZT06OnRhc2tFeGVjdXRlSW5zdGFuY2VbMF0gdC1uYW1lPTo6cmVzb3VyY2VEZWZpbml0aW9uLm5hbWU+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbGxhcHNlIHNob3dcIiBpZD1pc0NvbGxhcHNlZDNJZHt7dGFza0RlZmluaXRpb24udHJhbnNhY3Rpb25faWR9fT48ZGl2IGNsYXNzPXAtMD48ZGl2IGt0LWdyaWQgZ3JpZC10eXBlPTo6Z3JpZHN0ZXJUeXBlIHJlc291cmNlLWZvcm0tbG9hZGVkPWxvY2FsVmFycy5pbml0aWF0ZUZvcm1Mb2FkZWQgcmVzb3VyY2UtZGVmaW5pdGlvbj06OnRhc2tEZWZpbml0aW9uIGZvcm0tcGFyYW1zPTo6cmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMgZm9ybS1kYXRhPWRhc2hib2FyZC5kYXRhIHBhcmVudD06OmRhc2hib2FyZC53aWRnZXRzIGFsbC1jb2x1bW5zPTo6ZGFzaGJvYXJkLndpZGdldHMgY2xhc3M9a3RHcmlkIGhpZGUtcHJvY2Vzc2luZy1hbmltYXRpb249dHJ1ZT48L2Rpdj48L2Rpdj48L2Rpdj48L2Zvcm0+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza1Byb2NJbml0aWF0ZS5odG1sJywnPGRpdiBpZD1rdFRhc2tQcm9jSW5pdGlhdGUgbmctc3R5bGU9XCJ7XFwnei1pbmRleFxcJzoge3RydWU6MixmYWxzZToxfVtsb2NhbFZhcnMuT3BlblRhc2tUeXBlPT1cXCdpbmxpbmVcXCddfVwiIG5nLWNsYXNzPVwie1xcJ2JvcmRlciByb3VuZGVkIGJnLXdoaXRlIG10LTFcXCc6IXJlc291cmNlRGVmaW5pdGlvbi5QYXJhbWV0ZXJzLkhpZGVIZWFkZXIsXFwncG9zaXRpb24tYWJzb2x1dGUgdy0xMDAgc2hhZG93XFwnOmxvY2FsVmFycy5PcGVuVGFza1R5cGU9PVxcJ2lubGluZVxcJ31cIiBuZy1pZj1sb2NhbFZhcnMuc2hvd1Rhc2s+PGZvcm0gbmctc3VibWl0PWxvY2FsVmFycy5Jbml0aWF0ZVRhc2soZm9ybWEpIG5hbWU9Zm9ybWEgY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYgY2xhc3MgbmctY2xhc3M9XCJ7XFwnYmctbGlnaHRcXCc6bG9jYWxWYXJzLk9wZW5UYXNrVHlwZT09XFwnaW5saW5lXFwnfVwiIG5nLWhpZGU9cmVzb3VyY2VEZWZpbml0aW9uLlBhcmFtZXRlcnMuSGlkZUhlYWRlcj48ZGl2IGNsYXNzPVwicm93IG0tMCBib3JkZXItYm90dG9tXCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIG15LWF1dG9cIiBuZy1zaG93PWxvY2FsVmFycy5TaG93UmV0dXJuQnRuPjxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCBidG4teHNcIiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1yZXR1cm5Ub1ByZXZpb3VzVGFzaygpPjxpIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLWxlZnQgbXItMVwiPjwvaT5SZXR1cm48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIG0tYXV0byB0ZXh0LWNlbnRlclwiPjxzcGFuIGNsYXNzPWg1Pnt7OjpyZXNvdXJjZURlZmluaXRpb24uc3ViamVjdH19PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byB0ZXh0LXJpZ2h0XCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGluayBidG4tc21cIiBkYXRhLXRvZ2dsZT1jb2xsYXBzZSBkYXRhLXRhcmdldD0jaXNDb2xsYXBzZWQzSWRpc0NvbGxhcHNlZDNJZHt7bG9jYWxWYXJzLmlubGluZVRhc2tEZWZpbml0aW9uLnRyYW5zYWN0aW9uX2lkfX0gYXJpYS1leHBhbmRlZD10cnVlIGFyaWEtY29udHJvbHM9aXNDb2xsYXBzZWQzSWR7e2xvY2FsVmFycy5pbmxpbmVUYXNrRGVmaW5pdGlvbi50cmFuc2FjdGlvbl9pZH19IG5nLWNsaWNrPVwibG9jYWxWYXJzLmlzQ29sbGFwc2VkMyA9ICFsb2NhbFZhcnMuaXNDb2xsYXBzZWQzXCI+PHNwYW4gbmctY2xhc3M9XCJ7XFwnZmEgZmEtY2hldnJvbi11cFxcJzogIWxvY2FsVmFycy5pc0NvbGxhcHNlZDMsXFwnZmEgZmEtY2hldnJvbi1kb3duXFwnOiBsb2NhbFZhcnMuaXNDb2xsYXBzZWQzIH1cIj48L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb2xsYXBzZSBuZy1jbGFzcz1cIntcXCdzaG93XFwnOmxvY2FsVmFycy5pc0NvbGxhcHNlZDN9XCIgaWQ9aXNDb2xsYXBzZWQzSWR7e2xvY2FsVmFycy5pbmxpbmVUYXNrRGVmaW5pdGlvbi50cmFuc2FjdGlvbl9pZH19PjxkaXYgY2xhc3MgbmctaWY9XCIhdGFza0RlZmluaXRpb24uQXV0b0Fzc2lnbiAmJiByZXNvdXJjZURlZmluaXRpb24ucmVsYXRlZD09MFwiPjxkaXYgY2xhc3M+UG90ZW50aWFsIG93bmVycyA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwicmVzb3VyY2VEZWZpbml0aW9uLmlzQ29sbGFwc2VkID0gIXJlc291cmNlRGVmaW5pdGlvbi5pc0NvbGxhcHNlZFwiPjxzcGFuIG5nLWNsYXNzPVwie1xcJ2ZhIGZhLWNoZXZyb24tZG93blxcJzogcmVzb3VyY2VEZWZpbml0aW9uLmlzQ29sbGFwc2VkLFxcJ2ZhIGZhLWNoZXZyb24tdXBcXCc6ICFyZXNvdXJjZURlZmluaXRpb24uaXNDb2xsYXBzZWQgfVwiPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IHVpYi1jb2xsYXBzZT1yZXNvdXJjZURlZmluaXRpb24uaXNDb2xsYXBzZWQgY2xhc3M9Y2FyZC1ib2R5PjxkaXYgY2xhc3M9XFwncm93XCJcXCc+PGRpdiBjbGFzcz1jb2wtbGctMTI+PGRpdiBjbGFzcz1jYXJkPjxkaXYgY2xhc3M9Y2FyZC1oZWFkZXI+VXNlcnMgPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cInJlc291cmNlRGVmaW5pdGlvbi5pc0NvbGxhcHNlZDEgPSAhcmVzb3VyY2VEZWZpbml0aW9uLmlzQ29sbGFwc2VkMVwiPjxzcGFuIG5nLWNsYXNzPVwie1xcJ2ZhIGZhLWNoZXZyb24tZG93blxcJzogcmVzb3VyY2VEZWZpbml0aW9uLmlzQ29sbGFwc2VkMSxcXCdmYSBmYS1jaGV2cm9uLXVwXFwnOiAhcmVzb3VyY2VEZWZpbml0aW9uLmlzQ29sbGFwc2VkMSB9XCI+PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgdWliLWNvbGxhcHNlPXJlc291cmNlRGVmaW5pdGlvbi5pc0NvbGxhcHNlZDEgY2xhc3M9Y2FyZC1ib2R5PjxkaXYga3Qtc2VsZWN0LXVzZXJzIHNlbGVjdGVkLWl0ZW1zPXBvdGVudGlhbE93bmVycy5wb3RlbnRpYWxPd25lcnNVc2Vycz48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0xMj48ZGl2IGNsYXNzPWNhcmQ+PGRpdiBjbGFzcz1jYXJkLWhlYWRlcj5Hcm91cHMgPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cInJlc291cmNlRGVmaW5pdGlvbi5pc0NvbGxhcHNlZDIgPSAhcmVzb3VyY2VEZWZpbml0aW9uLmlzQ29sbGFwc2VkMlwiPjxzcGFuIG5nLWNsYXNzPVwie1xcJ2ZhIGZhLWNoZXZyb24tZG93blxcJzogcmVzb3VyY2VEZWZpbml0aW9uLmlzQ29sbGFwc2VkMixcXCdmYSBmYS1jaGV2cm9uLXVwXFwnOiAhcmVzb3VyY2VEZWZpbml0aW9uLmlzQ29sbGFwc2VkMiB9XCI+PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgdWliLWNvbGxhcHNlPXJlc291cmNlRGVmaW5pdGlvbi5pc0NvbGxhcHNlZDIgY2xhc3M9Y2FyZC1ib2R5PjxkaXYga3Qtc2VsZWN0LWdyb3VwcyBzZWxlY3RlZC1pdGVtcz1wb3RlbnRpYWxPd25lcnMucG90ZW50aWFsT3duZXJzR3JvdXBzPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M+PGRpdiBrdC1ncmlkIGdyaWQtdHlwZT06OmdyaWRzdGVyVHlwZSByZXNvdXJjZS1mb3JtLWxvYWRlZD1sb2NhbFZhcnMuaW5pdGlhdGVGb3JtTG9hZGVkIHJlc291cmNlLWRlZmluaXRpb249Ojp0YXNrRGVmaW5pdGlvbiBmb3JtLXBhcmFtcz06OnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zIGhpZGUtcHJvY2Vzc2luZy1hbmltYXRpb249dHJ1ZSBmb3JtLWRhdGE9ZGFzaGJvYXJkLmRhdGEgcGFyZW50PTo6ZGFzaGJvYXJkLndpZGdldHMgYWxsLWNvbHVtbnM9OjpkYXNoYm9hcmQud2lkZ2V0cyBjbGFzcz1rdEdyaWQ+PC9kaXY+PGRpdiBuZy1pZj1lcnJvck1zZyBuZy1iaW5kLWh0bWw9ZXJyb3JNc2cgY2xhc3M9XCJwLTQgbXQtMVwiPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJlb3NSZXNwb25zZSE9bnVsbCAmJiBlb3NSZXNwb25zZSE9dW5kZWZpbmVkXCIgY2xhc3M9XCJwLTQgbXQtMVwiPjxkaXY+PGEgaHJlZiBuZy1jbGljaz1cInNob3dUcmFuc2FjdGlvbkRldGFpbHM9IXNob3dUcmFuc2FjdGlvbkRldGFpbHNcIj5CbG9ja2NoYWluIHRyYW5zYWN0aW9uIGRldGFpbHM8L2E+PC9kaXY+PGRpdiBuZy1zaG93PXNob3dUcmFuc2FjdGlvbkRldGFpbHM+PHByZT57ezo6ZW9zUmVzcG9uc2V9fTwvcHJlPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJlb3NSZXNwb25zZTIhPW51bGwgJiYgZW9zUmVzcG9uc2UyIT11bmRlZmluZWRcIiBjbGFzcz1cInAtNCBtdC0xXCI+PGRpdj48YSBocmVmIG5nLWNsaWNrPVwic2hvd1JlY29yZERldGFpbHM9IXNob3dSZWNvcmREZXRhaWxzXCI+QmxvY2tjaGFpbiByZWNvcmQ8L2E+PC9kaXY+PHByZSBuZy1zaG93PXNob3dSZWNvcmREZXRhaWxzPnt7Ojplb3NSZXNwb25zZTJ9fTwvcHJlPjwvZGl2PjxkaXYgY2xhc3M9bS0xIG5nLWlmPWZhbHNlPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCIgbmctaWY9XCJyZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTJcIj48YnV0dG9uIHR5cGU9c3VibWl0IG5nLWlmPSFsb2NhbFZhcnMudGFza0luaXRpYXRlZCBjbGFzcz1cImJ0biB7e3Jlc291cmNlRGVmaW5pdGlvbi5pbml0VGFza0J0bkRlZi5pbml0VGFza0J0blN0eWxlfX1cIj48c3BhbiBjbGFzcz1cInt7cmVzb3VyY2VEZWZpbml0aW9uLmluaXRUYXNrQnRuRGVmLmluaXRUYXNrQnRuSWNvbn19IG1yLTJcIj48L3NwYW4+e3tyZXNvdXJjZURlZmluaXRpb24uaW5pdFRhc2tCdG5EZWYuaW5pdFRhc2tCdG5UeHR9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWlmPSFsb2NhbFZhcnMudGFza0luaXRpYXRlZCBuZy1jbGljaz1sb2NhbFZhcnMuQ2FuY2VsQ2xpY2tlZCgpIGNsYXNzPVwiYnRuIHt7cmVzb3VyY2VEZWZpbml0aW9uLmluaXRUYXNrQnRuRGVmLmNhbmNlbEJ0blN0eWxlfX0gbWwtMlwiPjxzcGFuIGNsYXNzPVwie3tyZXNvdXJjZURlZmluaXRpb24uaW5pdFRhc2tCdG5EZWYuY2FuY2VsQnRuSWNvbn19IG1yLTJcIj48L3NwYW4+e3tyZXNvdXJjZURlZmluaXRpb24uaW5pdFRhc2tCdG5EZWYuY2FuY2VsQnRuVHh0fX08L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1pZj1cImxvY2FsVmFycy50YXNrSW5pdGlhdGVkICYmIGxvY2FsVmFycy5PcGVuVGFza1R5cGU9PVxcJ2lubGluZVxcJ1wiIG5nLWNsaWNrPWxvY2FsVmFycy5DYW5jZWxDbGlja2VkKCkgY2xhc3M9XCJidG4ge3tyZXNvdXJjZURlZmluaXRpb24uaW5pdFRhc2tCdG5EZWYuY2FuY2VsQnRuU3R5bGV9fSBtbC0yXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1hcnJvdy1jaXJjbGUtbGVmdCBtci0yXCI+PC9zcGFuPkdvIGJhY2s8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1pZj1cImxvY2FsVmFycy50YXNrSW5pdGlhdGVkICYmIGxvY2FsVmFycy5PcGVuVGFza1R5cGU9PVxcJ2lubGluZVxcJ1wiIG5nLWNsaWNrPWxvY2FsVmFycy5DYW5jZWxDbGlja2VkKCkgY2xhc3M9XCJidG4ge3tyZXNvdXJjZURlZmluaXRpb24uaW5pdFRhc2tCdG5EZWYuY2FuY2VsQnRuU3R5bGV9fSBtbC0yXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS10aW1lcyBtci0yXCI+PC9zcGFuPkNsb3NlIHRhc2s8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1pZj1cImxvY2FsVmFycy50YXNrSW5pdGlhdGVkICYmICFsb2NhbFZhcnMuZnJvbU91dGNvbWVcIiBuZy1jbGljaz1sb2NhbFZhcnMuU3RhcnROZXdUYXNrKCkgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc3VjY2VzcyBtbC0yXCI+PHNwYW4gY2xhc3M9XCJ7e3Jlc291cmNlRGVmaW5pdGlvbi5pbml0VGFza0J0bkRlZi5uZXdCdG5JY29ufX0gbXItMlwiPjwvc3Bhbj5OZXcge3tyZXNvdXJjZURlZmluaXRpb24ubmFtZX19IHt7cmVzb3VyY2VEZWZpbml0aW9uLmluaXRUYXNrQnRuRGVmLm5ld0J0blR4dH19PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JtPjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tQcm9jTGlzdC5odG1sJywnPGRpdiBjbGFzcz1cInJvdyBtYXJnaW4wXCI+PGRpdiBjbGFzcz1mbG9hdC1yaWdodCBuZy1zaG93PVwiZm9ybVBhcmFtcy5mb3JWaWV3VHlwZSE9MlwiPjxhIHRpdGxlPXNvcnQgY2xhc3M9e3tncmlkVHlwZX19LWVsZW1lbnQtZHJhZy1oYW5kbGU+PGkgY2xhc3M9XCJ7e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZSBmYSBmYS1zb3J0XCI+PC9pPjwvYT4gPGEgdGl0bGU9XCJIaWRlIGZpZWxkXCIgbmctY2xpY2s9cmVtb3ZlRmllbGQoJGluZGV4KT48aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPjwvYT48L2Rpdj48ZGl2IG5nLXNob3c9XCJmZC5TaG93U2VhcmNoRm9ybSB8fCBmb3JtUGFyYW1zLmZvclZpZXdUeXBlIT0yXCIgY2xhc3M9XCJib3hzaGFkb3cgc29ydC1ib3hcIj48aDQgY2xhc3M9dGV4dC1jZW50ZXI+e3tmZC5wbGFjZWhvbGRlcn19PC9oND48ZGl2IG5nLWlmPSFmb3JtUGFyYW1zLmZvcm1Mb2NrZWQgY2xhc3M9Y29sLXNtLTEyPjxkaXYgY2xhc3M9Y2hlY2tib3g+PGxhYmVsPjxpbnB1dCB0eXBlPWNoZWNrYm94IG5nLW1vZGVsPWZkLkF1dG9TZWFyY2g+IEF1dG8gc2VhcmNoPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPWNoZWNrYm94PjxsYWJlbD48aW5wdXQgdHlwZT1jaGVja2JveCBuZy1tb2RlbD1mZC5TaG93U2VhcmNoRm9ybT4gU2hvdyBzZWFyY2ggZm9ybTwvbGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1yb3c+PGRpdiBjbGFzcz1jb2wtc20tND48ZGl2IGNsYXNzPXJhZGlvPjxsYWJlbD48aW5wdXQgdHlwZT1yYWRpbyBuZy1tb2RlbD1mZC5TZWFyY2gudGFza0xpc3RUeXBlIHZhbHVlPWNsYWltIG5hbWU9bGlzdFRhc2tUeXBle3tmZC5QcmVzZW50YXRpb25JZH19IGNoZWNrZWQ+IENsYWltPC9sYWJlbD4gPGxhYmVsPjxpbnB1dCB0eXBlPXJhZGlvIG5nLW1vZGVsPWZkLlNlYXJjaC50YXNrTGlzdFR5cGUgdmFsdWU9ZXhlY3V0ZSBuYW1lPWxpc3RUYXNrVHlwZXt7ZmQuUHJlc2VudGF0aW9uSWR9fT4gRXhlY3V0ZTwvbGFiZWw+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1yb3c+PGxhYmVsIGNsYXNzPWNvbC1zbS0xIGZvcj10YXNrRGVmSWQ+VGFzazwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtc20tNT48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS50YXNrRGVmSWR7e2ZkLnByZXNlbnRhdGlvbklkfX0uJHRvdWNoZWQpICYmIGZvcm0udGFza0RlZklke3tmZC5wcmVzZW50YXRpb25JZH19LiRpbnZhbGlkIH1cIj48dWktc2VsZWN0IG5nLW1vZGVsPWZkLnNlYXJjaC50YXNrRGVmSWRzIHVpLXNlbGVjdC1tdWx0aXBsZS1saXN0IG5nLWRpc2FibGVkPWRpc2FibGVkIG5hbWU9dGFza0RlZklke3tmZC5wcmVzZW50YXRpb25JZH19IG5nLXJlcXVpcmVkPWZhbHNlIHJlc2V0LXNlYXJjaC1pbnB1dD1mYWxzZT48dWktc2VsZWN0LW1hdGNoIGNsYXNzPXVpLXNlbGVjdC1tYXRjaCBwbGFjZWhvbGRlcj1cIlNlYXJjaCBvciBzZWxlY3QgdGFzayBkZWZpbml0aW9uLi4uXCI+PHNwYW4+e3skc2VsZWN0LnNlbGVjdGVkLm5hbWV9fSA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmtcIiBuZy1jbGljaz1cImNsZWFyKCRldmVudCwgJHNlbGVjdClcIj48aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPjwvYT48L3NwYW4+PC91aS1zZWxlY3QtbWF0Y2g+PHVpLXNlbGVjdC1jaG9pY2VzIGNsYXNzPXVpLXNlbGVjdC1jaG9pY2VzIHJlcGVhdD1cInRkIGluICh0YXNrRGVmTGlzdCB8IGZpbHRlcjogeyBuYW1lOiAkc2VsZWN0LnNlYXJjaCB9KSB0cmFjayBieSB0ZC5pZFwiIHJlZnJlc2g9cmVmcmVzaFJlc3VsdHMoJHNlbGVjdCkgcmVmcmVzaC1kZWxheT0wPjxzcGFuPnt7dGQubmFtZX19PC9zcGFuPjwvdWktc2VsZWN0LWNob2ljZXM+PC91aS1zZWxlY3Q+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS50YXNrRGVmSWR7e2ZkLnByZXNlbnRhdGlvbklkfX0uJHRvdWNoZWQpICYmIGZvcm0udGFza0RlZklke3tmZC5wcmVzZW50YXRpb25JZH19LiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5TZWxlY3QgdGFzazwvcD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXJvdz48bGFiZWwgY2xhc3M9Y29sLXNtLTEgZm9yPXRhc2tTdGF0dXM+VGFzayBzdGF0dXM8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLXNtLTU+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0udGFza1N0YXR1c3t7ZmQucHJlc2VudGF0aW9uSWR9fS4kdG91Y2hlZCkgJiYgZm9ybS50YXNrU3RhdHVze3tmZC5wcmVzZW50YXRpb25JZH19LiRpbnZhbGlkIH1cIj48dWktc2VsZWN0IG5nLW1vZGVsPWZkLlNlYXJjaC50YXNrU3RhdHVzIHVpLXNlbGVjdC1tdWx0aXBsZS1saXN0IG5nLWRpc2FibGVkPWRpc2FibGVkIG5hbWU9dGFza1N0YXR1c3t7ZmQucHJlc2VudGF0aW9uSWR9fSBuZy1yZXF1aXJlZD1mYWxzZSByZXNldC1zZWFyY2gtaW5wdXQ9ZmFsc2U+PHVpLXNlbGVjdC1tYXRjaCBjbGFzcz11aS1zZWxlY3QtbWF0Y2ggcGxhY2Vob2xkZXI9XCJTZWFyY2ggb3Igc2VsZWN0IHRhc2sgc3RhdHVzLi4uXCI+PHNwYW4+e3skc2VsZWN0LnNlbGVjdGVkLm5hbWV9fSA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmtcIiBuZy1jbGljaz1cImNsZWFyKCRldmVudCwgJHNlbGVjdClcIj48aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPjwvYT48L3NwYW4+PC91aS1zZWxlY3QtbWF0Y2g+PHVpLXNlbGVjdC1jaG9pY2VzIGNsYXNzPXVpLXNlbGVjdC1jaG9pY2VzIHJlcGVhdD1cInRzIGluICh0YXNrU3RhdHVzZXMgfCBmaWx0ZXI6IHsgbmFtZTogJHNlbGVjdC5zZWFyY2ggfSkgdHJhY2sgYnkgdHMuaWRcIiByZWZyZXNoPXJlZnJlc2hSZXN1bHRzKCRzZWxlY3QpIHJlZnJlc2gtZGVsYXk9MD48c3Bhbj57e3RzLm5hbWV9fTwvc3Bhbj48L3VpLXNlbGVjdC1jaG9pY2VzPjwvdWktc2VsZWN0PjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0udGFza1N0YXR1c3t7ZmQucHJlc2VudGF0aW9uSWR9fS4kdG91Y2hlZCkgJiYgZm9ybS50YXNrU3RhdHVze3tmZC5wcmVzZW50YXRpb25JZH19LiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5TZWxlY3QgdGFzayBzdGF0dXM8L3A+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1yb3c+PGxhYmVsIGNsYXNzPWNvbC1sZy02IGZvcj1jdXJyZW50VXNlcj5DdXJyZW50IHVzZXI8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTEwPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPWNoZWNrYm94LXpvb20tbGFyZ2UgbmctbW9kZWw9ZmQuc2VhcmNoLmN1cnJlbnRVc2VyIG5hbWU9Y3VycmVudFVzZXIgbmctcmVxdWlyZWQ9ZmFsc2U+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1yb3c+PGRpdiBjbGFzcz1jb2wtc20tMTI+PGRpdiBrdC11c2Vycy1ncm91cHMtc2VsZWN0IHNlbGVjdGVkLXVzZXJzPWZkLnNlYXJjaC5Vc2VycyBzZWxlY3RlZC1ncm91cHM9ZmQuc2VhcmNoLkdyb3VwcyBoZWFkZXItbGFiZWw9ZmQuc2VhcmNoLmhlYWRlckxhYmVsIHVzZXJzLWxhYmVsPWZkLnNlYXJjaC51c2Vyc0xhYmVsIGdyb3Vwcy1sYWJlbD1mZC5zZWFyY2guZ3JvdXBzTGFiZWw+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cInB0bC50b3RhbENvdW50IT0xXCIgY2xhc3M9c29ydC1ib3g+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz10aGlzV2lkZ2V0LmdldFRhc2tFeGVjdXRlRGF0YSh0YXNrX2luaXRpYXRlX2lkLHRhc2tfZXhlY3V0ZV9pZCkgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFyayBidG4tc21cIiBuZy1kaXNhYmxlZD0hdGFza1NlbGVjdGVkPjxzcGFuIGNsYXNzPVwiZmFzIGZhLWNvZ3NcIj48L3NwYW4+IERldGFpbHM8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1wdGwucGFnZUNoYW5nZWQoKSBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kYXJrIGJ0bi1zbVwiPjxzcGFuIGNsYXNzPVwiZmFzIGZhLXN5bmNcIj48L3NwYW4+IFJlZnJlc2ggZGF0YTwvYnV0dG9uPjwvZGl2PjxkaXYgbmctaWY9XCJwdGwudG90YWxDb3VudCE9MVwiPjxkaXYgdWktZ3JpZD1ncmlkT3B0aW9ucyB1aS1ncmlkLXNlbGVjdGlvbiB1aS1ncmlkLXJlc2l6ZS1jb2x1bW5zIHVpLWdyaWQtcGFnaW5hdGlvbj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMSBwLTBcIj48ZGl2IGNsYXNzPVwiY29sIHBsLTBcIj48dWwgdWliLXBhZ2luYXRpb24gYm91bmRhcnktbGlua3M9dHJ1ZSBtYXgtc2l6ZT0xMCBpdGVtcy1wZXItcGFnZT1wdGwucGFnZVNpemUgZm9yY2UtZWxsaXBzZXM9dHJ1ZSB0b3RhbC1pdGVtcz1wdGwudG90YWxDb3VudCBuZy1tb2RlbD1wdGwuY3VycmVudFBhZ2UgY2xhc3M9XCJkLWlubGluZS1mbGV4IHBhZ2luYXRpb24gcGFnaW5hdGlvbi1zbSBtLTBcIiBwcmV2aW91cy10ZXh0PSZsc2FxdW87IG5nLWNoYW5nZT1wdGwucGFnZUNoYW5nZWQoKSBuZXh0LXRleHQ9JnJzYXF1bzsgZmlyc3QtdGV4dD0mbGFxdW87IGxhc3QtdGV4dD0mcmFxdW87PjwvdWw+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy1hdXRvIHAtMVwiPjxzZWxlY3QgY2xhc3M9aW5wdXQtc20gbmctY2hhbmdlPXB0bC5wYWdlQ2hhbmdlZCgpIG5nLW1vZGVsPXB0bC5wYWdlU2l6ZT48b3B0aW9uIG5nLXJlcGVhdD1cInBzIGluIGdyaWRPcHRpb25zLnBhZ2luYXRpb25QYWdlU2l6ZXMgdHJhY2sgYnkgcHNcIiBuZy1zZWxlY3RlZD1cInB0bC5wYWdlU2l6ZT09cHNcIiBuZy12YWx1ZT1wcz57e3BzfX08L29wdGlvbj48L3NlbGVjdD48c3BhbiBjbGFzcz1cIm1sLTIgc21hbGxcIj5pdGVtcyBwZXIgcGFnZSAmbmJzcCZuYnNwIHwgJm5ic3AmbmJzcCBQYWdlOiB7e3B0bC5jdXJyZW50UGFnZX19IC8ge3twdGwubnVtUGFnZXN9fSAmbmJzcCZuYnNwIHwgJm5ic3AmbmJzcCB7e3B0bC5wYWdlU2l6ZSpwdGwuY3VycmVudFBhZ2UrMS1wdGwucGFnZVNpemV9fSAtIHt7cHRsLnBhZ2VTaXplKnB0bC5jdXJyZW50UGFnZT5wdGwudG90YWxDb3VudCA/IHB0bC50b3RhbENvdW50IDogcHRsLnBhZ2VTaXplKnB0bC5jdXJyZW50UGFnZX19IG9mIHt7cHRsLnRvdGFsQ291bnR9fSBpdGVtczwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrU2VhcmNoLmh0bWwnLCc8ZGl2PjxsYWJlbD57e2ZkLnBsYWNlaG9sZGVyfX08L2xhYmVsPjxkaXYgY2xhc3M9Y29udHJvbC1ncm91cD48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodFwiIG5nLWRpc2FibGVkPSFyZXNvdXJjZVNlbGVjdGVkIG5nLWNsaWNrPWdldEZvcm1SZXNvdXJjZSgpPjxzcGFuIGNsYXNzPVwiZmEgZmEtc2VhcmNoXCI+PC9zcGFuPiBHZXQgc2VhcmNoIGZvcm08L2J1dHRvbj48L2Rpdj48ZGl2IHVpLWdyaWQ9Z3JpZE9wdGlvbnMgdWktZ3JpZC1zZWxlY3Rpb24gdWktZ3JpZC1yZXNpemUtY29sdW1ucyBjbGFzcz1teUdyaWQgbmctaWY9IXNlYXJjaEZvcm1Eb3dubG9hZGVkPjwvZGl2PjxkaXYgY2xhc3M9Y29sLXNtLTIgbmctc2hvdz0haW5wdXRBcnJheS5sb2NrZWQ+PGRpdiBjbGFzcz1yb3c+PGEgdGl0bGU9c29ydCBhcy1zb3J0YWJsZS1pdGVtLWhhbmRsZT48aSBjbGFzcz1cImZhIGZhLXNvcnRcIj48L2k+PC9hPiA8YSBzdHlsZT1kaXNwbGF5OmlubGluZS1ibG9jayB1aWItcG9wb3Zlci10ZW1wbGF0ZT1cIlxcJ3Rhc2tzZWFyY2hwcm9wZXJ0aWVzLmh0bWxcXCdcIiBwb3BvdmVyLXRyaWdnZXI9b3V0c2lkZUNsaWNrIHBvcG92ZXItYXBwZW5kLXRvLWJvZHk9dHJ1ZSBwb3BvdmVyLXBsYWNlbWVudD1yaWdodC10b3A+PGkgY2xhc3M9XCJmYSBmYS1jYXJldC1zcXVhcmUtby1yaWdodFwiPjwvaT48L2E+IDxhIHN0eWxlPWRpc3BsYXk6aW5saW5lLWJsb2NrIHRpdGxlPVwiSGlkZSBmaWVsZFwiIG5nLXNob3c9IWZkLnNhdmVkIG5nLWNsaWNrPXJlbW92ZUZpZWxkKCRpbmRleCk+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2E+PC9kaXY+PC9kaXY+PHNjcmlwdCBpZD10YXNrc2VhcmNocHJvcGVydGllcy5odG1sIHR5cGU9dGV4dC9uZy10ZW1wbGF0ZT48ZGl2IGNsYXNzPVwiYm94LWhlYWRlci1idG5zIGZsb2F0LXJpZ2h0XCIgPiA8bGFiZWw+TGFiZWwgPC9sYWJlbD4gPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuZy1tb2RlbD1cImZkLnBsYWNlaG9sZGVyXCIgLz4gPGxhYmVsPkVycm9yIG1zZyA8L2xhYmVsPiA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5nLW1vZGVsPVwiZmQuZXJyb3JNc2dcIiAvPiA8bGFiZWw+U2VhcmNoVGV4dCA8L2xhYmVsPiA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5nLW1vZGVsPVwiZmQuc2VhcmNoVGV4dFwiIC8+IDwvZGl2Pjwvc2NyaXB0PjxkaXY+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHRcIiBuZy1oaWRlPSFzZWFyY2hGb3JtRG93bmxvYWRlZCBuZy1jbGljaz1cInNlYXJjaEZvcm1Eb3dubG9hZGVkPSFzZWFyY2hGb3JtRG93bmxvYWRlZFwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtc2VhcmNoXCI+PC9zcGFuPiBTaG93IHJlc291cmNlczwvYnV0dG9uPjwvZGl2PjxkaXYgZ3JpZHN0ZXI9Z3JpZHN0ZXJPcHRzPjx1bD48bGkgZ3JpZHN0ZXItaXRlbT13aWRnZXQgbmctcmVwZWF0PVwid2lkZ2V0IGluIGRhc2hib2FyZC53aWRnZXRzXCIgc3R5bGU9ei1pbmRleDphdXRvPjxkaXYgY2xhc3M9Ym94PjxkaXYgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO3dpZHRoOiAxMDAlO2JhY2tncm91bmQtY29sb3I6I2VlZVwiPjxkaXYgY2xhc3M9Ym94LWhlYWRlciBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jaztib3JkZXI6MXB4IHNvbGlkICNjY2NcIj48aSBjbGFzcz1cImZhIGZhLWhhbmQtcGFwZXItbyBkcmFnLWhhbmRsZS1mb3JtXCIgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2tcIj48L2k+PC9kaXY+PGRpdiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jaztiYWNrZ3JvdW5kLWNvbG9yOiNlZWVcIj57eyB3aWRnZXQubmFtZSB9fTwvZGl2PjxkaXYgY2xhc3M9ZmxvYXQtcmlnaHQgc3R5bGU9bWFyZ2luLXJpZ2h0OjZweD48YSB0aXRsZT1cIlJlbW92ZSB3aWRnZXRcIiBuZy1zaG93PXdpZGdldC5sb2NrZWQgbmctY2xpY2s9bG9jaygkaW5kZXgpPjxpIGNsYXNzPVwiZmEgZmEtbG9ja1wiIHN0eWxlPWNvbG9yOmJsYWNrPjwvaT48L2E+IDxhIHRpdGxlPVwiUmVtb3ZlIHdpZGdldFwiIG5nLXNob3c9IXdpZGdldC5sb2NrZWQgbmctY2xpY2s9bG9jaygkaW5kZXgpPjxpIGNsYXNzPVwiZmEgZmEtdW5sb2NrLWFsdFwiPjwvaT48L2E+IDxhIHVpYi1wb3BvdmVyLXRlbXBsYXRlPVwiXFwndG9vbGJveC5odG1sXFwnXCIgcG9wb3Zlci10cmlnZ2VyPW91dHNpZGVDbGljayBwb3BvdmVyLWFwcGVuZC10by1ib2R5PXRydWUgcG9wb3Zlci1wbGFjZW1lbnQ9cmlnaHQtdG9wPjxpIGNsYXNzPVwiZmEgZmEtcGx1cy1zcXVhcmVcIiBuZy1jbGFzcz1cIntcXCdjb2xvcjpibGFja1xcJzogd2lkZ2V0LmxvY2tlZH1cIj48L2k+PC9hPiA8YSB0aXRsZT1cIlJlbW92ZSB3aWRnZXRcIiBuZy1jbGljaz1cIiF3aWRnZXQubG9ja2VkICYmIHJlbW92ZSgkaW5kZXgpXCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiIG5nLWNsYXNzPVwie1xcJ2Rpc2FibGVkXFwnOiB3aWRnZXQubG9ja2VkfVwiPjwvaT48L2E+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1ib3gtY29udGVudD48ZGl2IGt0LWZvcm1sYXlvdXQgaW5wdXQtYXJyYXk9d2lkZ2V0PjwvZGl2PjxzY3JpcHQgaWQ9dG9vbGJveC5odG1sIHR5cGU9dGV4dC9uZy10ZW1wbGF0ZT48ZGl2IG5nLWlmPVwid2lkZ2V0LmxvY2tlZFwiID5VbmxvY2sgd2lkZ2V0ITwvZGl2PiA8ZGl2IG5nLWlmPVwiIXdpZGdldC5sb2NrZWRcIiBrdC10b29sYm94IC8+PC9zY3JpcHQ+PC9kaXY+PC9kaXY+PC9saT48L3VsPjwvZGl2PjxkaXY+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHRcIiBuZy1oaWRlPSFzZWFyY2hGb3JtRG93bmxvYWRlZCBuZy1jbGljaz1nZXRSZXNvdXJjZURhdGFGaWx0ZXJlZCgpPjxzcGFuIGNsYXNzPVwiZmEgZmEtZ2xvYmVcIj48L3NwYW4+IEdldCByZXNvdXJjZXMgZGF0YTwvYnV0dG9uPjwvZGl2PjxkaXYgdWktZ3JpZD1ncmlkT3B0aW9uc1Jlc291cmNlRGF0YSB1aS1ncmlkLXNlbGVjdGlvbiB1aS1ncmlkLXJlc2l6ZS1jb2x1bW5zIGNsYXNzPW15R3JpZCBuZy1zaG93PXNlYXJjaEZvcm1Eb3dubG9hZGVkPjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tUb29sYm94Lmh0bWwnLCc8ZGl2IGNsYXNzPVwibm9zZWxlY3QgY29tcG9uZW50LWxpYnJhcnlcIj48ZGl2IHN0eWxlPVwid2lkdGg6MjQwcHg7bWFyZ2luOiBhdXRvO1wiIGNsYXNzPVwibWItMiB0ZXh0LWNlbnRlclwiPjxkaXYgY2xhc3M9c21hbGwgc3R5bGU9XCJ3aWR0aDo4MCU7bWFyZ2luOiBhdXRvO1wiPlRvIGJ1aWxkIHRhc2ssIGRyYWcgJmFtcDsgZHJvcCBjb21wb25lbnRzIGZyb20gdG9vbGJveCBiZWxvdzwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJnc3J2Yy5nZXRGb3JtVmlld1R5cGUoKT09MVwiIGlkPXRhc2stdG9vbGJveCBjbGFzcz1cImxpc3QtY29tcG9uZW50LWxpYnJhcnkgbXItMSBtYi00XCIgZHJhZ3VsYS1zY29wZT0kcm9vdCBkcmFndWxhPVwiXFwnYmFnLXRhc2tcXCdcIiBkcmFndWxhLW1vZGVsPXRhc2tUb29sYm94SXRlbXMgbmctbW9kZWw9dGFza1Rvb2xib3hJdGVtcz48ZGl2IG5nLXJlcGVhdD1cInRvb2xib3hJdGVtIGluIHRhc2tUb29sYm94SXRlbXMgdHJhY2sgYnkgdG9vbGJveEl0ZW0uaWRcIiB0aXRsZT1cIkRyYWcgbWVcIiBuZy1jbGljaz1zZXRDb2xsYXBzZSh0b29sYm94SXRlbS5Ub29sYm94R3JvdXAsdG9vbGJveEl0ZW0uRWxlbWVudFR5cGUpIG5nLWNsYXNzPVwie1xcJ2l0ZW0gdGFzay1lbGVtZW50LWRyYWctaGFuZGxlXFwnOnRvb2xib3hJdGVtLkVsZW1lbnRUeXBlIT1cXCd0b29sYm94Z3JvdXBcXCd9XCIgbmctaGlkZT1cInRvb2xib3hJdGVtLkhpZGVGcm9tVG9vbGJveCB8fCAoY29sbGFwc2VkW3Rvb2xib3hJdGVtLlRvb2xib3hHcm91cF0gJiYgdG9vbGJveEl0ZW0uRWxlbWVudFR5cGUhPVxcJ3Rvb2xib3hncm91cFxcJylcIj48ZGl2IHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiIG5nLWlmPVwidG9vbGJveEl0ZW0uRWxlbWVudFR5cGU9PVxcJ3Rvb2xib3hncm91cFxcJ1wiIGNsYXNzPVwiYm9yZGVyLWJvdHRvbSBteS0yXCI+PGkgbmctY2xhc3M9XCJ7XFwnZmEgZmEtYW5nbGUtZG93biBtci0xXFwnOmNvbGxhcHNlZFt0b29sYm94SXRlbS5Ub29sYm94R3JvdXBdLFxcJ2ZhIGZhLWFuZ2xlLXVwIG1yLTFcXCc6IWNvbGxhcHNlZFt0b29sYm94SXRlbS5Ub29sYm94R3JvdXBdfVwiPjwvaT4gPHNwYW4gY2xhc3M9Ym9sZD57e3Rvb2xib3hJdGVtLlRvb2xib3hHcm91cH19PC9zcGFuPjwvZGl2PjxzcGFuIG5nLWlmPVwidG9vbGJveEl0ZW0uRWxlbWVudFR5cGUhPVxcJ3Rvb2xib3hncm91cFxcJ1wiIGNsYXNzPVwidGFzay1lbGVtZW50LWRyYWctaGFuZGxlIGljb24tbXV0ZWRcIiBuZy1jbGFzcz10b29sYm94SXRlbS5GYWNzcz48L3NwYW4+IDxzcGFuIG5nLWlmPVwidG9vbGJveEl0ZW0uRWxlbWVudFR5cGUhPVxcJ3Rvb2xib3hncm91cFxcJ1wiIGNsYXNzPVwidGFzay1lbGVtZW50LWRyYWctaGFuZGxlIG14LTFcIj57e3Rvb2xib3hJdGVtLkxhYmVsfX08L3NwYW4+IDxpIG5nLWlmPVwidG9vbGJveEl0ZW0uRWxlbWVudFR5cGUhPVxcJ3Rvb2xib3hncm91cFxcJ1wiIGNsYXNzPVwidGFzay1lbGVtZW50LWRyYWctaGFuZGxlIGhhbmRsZXIgZmFzIGZhLWdyaXAtdmVydGljYWwgdGV4dC1kYXJrIG1yLTFcIiBzdHlsZT1vcGFjaXR5OjAuMj48L2k+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImdzcnZjLmdldEZvcm1WaWV3VHlwZSgpIT0xXCIgY2xhc3M9XCJsaXN0LWNvbXBvbmVudC1saWJyYXJ5IG1iLTRcIj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrVXBkYXRlTXVsdGlwbGVSZXNvdXJjZXMuaHRtbCcsJzxkaXY+PGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLWluZm9cIiBuZy1pZj0haW5wdXRBcnJheS5sb2NrZWQ+PGRpdiBjbGFzcz1wYW5lbC1oZWFkaW5nPjxsYWJlbD57e2ZkLnBsYWNlaG9sZGVyfX08L2xhYmVsPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodFwiIG5nLWNsaWNrPVwiaXNDb2xsYXBzZWRNYXBwZXI9IWlzQ29sbGFwc2VkTWFwcGVyXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1kYXRhYmFzZVwiPjwvc3Bhbj4gU2VsZWN0IGRhdGFzZXQ8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHRcIiBuZy1jbGljaz1zZXRSZWFkT25seShkYXNoYm9hcmQud2lkZ2V0c1swXSx0cnVlKT48c3BhbiBjbGFzcz1cImZhIGZhLWJhblwiPjwvc3Bhbj4gTWFyayBhbGwgcmVhZCBvbmx5PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCIgbmctY2xpY2s9c2V0UmVhZE9ubHkoZGFzaGJvYXJkLndpZGdldHNbMF0sZmFsc2UpPjxzcGFuIGNsYXNzPVwiZmEgZmEtcGVuY2lsXCI+PC9zcGFuPiBDbGVhciByZWFkIG9ubHk8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHRcIiBuZy1jbGljaz1zZXRSZXF1aXJlZChkYXNoYm9hcmQud2lkZ2V0c1swXSxmYWxzZSk+PHNwYW4gY2xhc3M9XCJmYSBmYS1jaXJjbGUtb1wiPjwvc3Bhbj4gTWFyayBhbGwgZmllbGRzIG5vdCByZXF1aXJlZDwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodFwiIG5nLWNsaWNrPXNldFJlcXVpcmVkKGRhc2hib2FyZC53aWRnZXRzWzBdLHRydWUpPjxzcGFuIGNsYXNzPVwiZmEgZmEtY2hlY2stY2lyY2xlLW9cIj48L3NwYW4+IE1hcmsgYWxsIGZpZWxkcyByZXF1aXJlZDwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodFwiIG5nLWNsaWNrPVwic2V0RmllbGQoZGFzaGJvYXJkLndpZGdldHNbMF0sXFwnbm9VcGRhdGVcXCcsZmFsc2UpXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1wZW5jaWxcIj48L3NwYW4+IFVwZGF0ZSBhbGwgZmllbGRzPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCIgbmctY2xpY2s9XCJzZXRGaWVsZChkYXNoYm9hcmQud2lkZ2V0c1swXSxcXCdub1VwZGF0ZVxcJyx0cnVlKVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L3NwYW4+IERvblxcJ3QgdXBkYXRlIGFueSBmaWVsZDwvYnV0dG9uPjxkaXYgY2xhc3M9ZmxvYXQtcmlnaHQgbmctc2hvdz0haW5wdXRBcnJheS5sb2NrZWQ+PGEgdGl0bGU9c29ydCBjbGFzcz1zb3J0LWhhbmRsZT48aSBjbGFzcz1cImZhIGZhLXNvcnRcIj48L2k+PC9hPiA8YSBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9ja1wiIHVpYi1wb3BvdmVyLXRlbXBsYXRlPVwiXFwnbXVwZGF0ZXByb3BlcnRpZXMuaHRtbFxcJ1wiIHBvcG92ZXItdHJpZ2dlcj1vdXRzaWRlQ2xpY2sgcG9wb3Zlci1hcHBlbmQtdG8tYm9keT10cnVlIHBvcG92ZXItcGxhY2VtZW50PWxlZnQtdG9wPjxpIGNsYXNzPVwiZmEgZmEtY2FyZXQtc3F1YXJlLW8tcmlnaHRcIj48L2k+PC9hPiA8YSBocmVmIHRpdGxlPUludGVyZmFjZSBuZy1jbGljaz1vcGVuV2lkZ2V0Q29ubmVjdG9yKCk+PGkgY2xhc3M9XCJmYSBmYS1wbHVnXCIgc3R5bGU9Y29sb3I6cmVkPjwvaT48L2E+IDxhIHRpdGxlPVwiSGlkZSBmaWVsZFwiIG5nLWNsaWNrPXJlbW92ZUZpZWxkKCRpbmRleCk+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2E+PC9kaXY+PGJyPjxsYWJlbD5Tb3VyY2U6IHt7c2VsZWN0ZWRSZXNvdXJjZUl0ZW0uc3JjX3R5cGVfdGV4dH19PC9sYWJlbD48YnI+PGxhYmVsPkRhdGFzZXQ6IHt7c2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWR9fTwvbGFiZWw+PC9kaXY+PGRpdiB1aWItY29sbGFwc2U9IWlzQ29sbGFwc2VkTWFwcGVyPjxkaXYga3QtZGF0YXNldC1tYXBwZXI+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1mZC5zaG93V2lkZ2V0Q29ubmVjdG9yPjxkaXYgY2xhc3M9bW9kYWwtaGVhZGVyPjxoMyBjbGFzcz1tb2RhbC10aXRsZT57e2hlYWRsaW5lfX08L2gzPjxoNT57e2ZkLmxpc3RPZkNvbm5lY3RvcnN9fTwvaDU+PC9kaXY+PGRpdiBjbGFzcz1tb2RhbC1ib2R5Pjx0YWJsZSBuZy1yZXBlYXQ9XCJzZWxlY3RlZEZpbGVDb25uZWN0b3IgaW4gZmQubGlzdE9mQ29ubmVjdG9ycyB0cmFjayBieSAkaW5kZXhcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6cmdiYSgxMzYsIDE3NSwgMTEsIDAuMTIpXCIgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zbVwiPjx0aGVhZD48dHI+PHRoIHN0eWxlPXdpZHRoOjgwJT5XaWRnZXQ6IHt7c2VsZWN0ZWRGaWxlQ29ubmVjdG9yLm5hbWV9fSAoe3tzZWxlY3RlZEZpbGVDb25uZWN0b3Iud2lkZ2V0SWR9fSkgRGF0YXNldDoge3tzZWxlY3RlZEZpbGVDb25uZWN0b3IucGFyZW50RGF0YXNldE5hbWV9fSAoe3tzZWxlY3RlZEZpbGVDb25uZWN0b3IuZGF0YXNldElkfX0pPC90aD48dGggc3R5bGU9d2lkdGg6MjAlPlNlbGVjdDwvdGg+PC90cj48L3RoZWFkPjx0Ym9keT48dHIgbmctcmVwZWF0PVwiREVJbGlzdCBpbiBzZWxlY3RlZEZpbGVDb25uZWN0b3IuREVJIHRyYWNrIGJ5ICRpbmRleFwiPjx0ZD57e0RFSWxpc3QubmFtZX19PC90ZD48dGQ+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmctbW9kZWw9REVJbGlzdC52YWx1ZT48L3RkPjx0ZCBuZy1pZj1cIkRFSWxpc3QucGFyYW1zIT11bmRlZmluZWRcIj48dWktc2VsZWN0IG5nLW1vZGVsPURFSWxpc3QucGFyYW1zLnNlbGVjdGVkSXRlbSBvbi1zZWxlY3Q9XCJvblNlbGVjdENhbGxiYWNrKCRpdGVtLCAkbW9kZWwpXCIgbmctZGlzYWJsZWQ9ZGlzYWJsZWQgbmFtZT1zZWxlY3REYXRhc2V0e3tmZC5pdGVtSWR9fSBuZy1yZXF1aXJlZD1mYWxzZSByZXNldC1zZWFyY2gtaW5wdXQ9ZmFsc2U+PHVpLXNlbGVjdC1tYXRjaCBjbGFzcz11aS1zZWxlY3QtbWF0Y2ggcGxhY2Vob2xkZXI9XCJTZWFyY2ggb3Igc2VsZWN0IHBhcmFtZXRlci4uLlwiPjxzcGFuPnt7JHNlbGVjdC5zZWxlY3RlZC5uYW1lfX0gPGEgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saW5rXCIgbmctY2xpY2s9XCJjbGVhcigkZXZlbnQsICRzZWxlY3QpXCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2E+PC9zcGFuPjwvdWktc2VsZWN0LW1hdGNoPjx1aS1zZWxlY3QtY2hvaWNlcyBjbGFzcz11aS1zZWxlY3QtY2hvaWNlcyByZXBlYXQ9XCJwSXRlbSBpbiAoREVJbGlzdC5wYXJhbXMubGlzdCB8IGZpbHRlcjogeyBuYW1lOiAkc2VsZWN0LnNlYXJjaCB9KSB0cmFjayBieSBwSXRlbS5pZFwiIHJlZnJlc2g+PHNwYW4+e3twSXRlbS5uYW1lfX0gKHt7cEl0ZW0uaWR9fSk8L3NwYW4+PC91aS1zZWxlY3QtY2hvaWNlcz48L3VpLXNlbGVjdD48L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvZGl2PjxkaXYgY2xhc3M9bW9kYWwtZm9vdGVyPjxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1va1dpZGdldENvbm5lY3RvcigpPk9LPC9idXR0b24+IDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXdhcm5pbmdcIiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1jYW5jZWxXaWRnZXRDb25uZWN0b3IoKT5DYW5jZWw8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPW11cGRhdGVwcm9wZXJ0aWVzLmh0bWwgdHlwZT10ZXh0L25nLXRlbXBsYXRlPjxkaXY+IDxkaXYgY2xhc3M9XCJib3gtaGVhZGVyLWJ0bnMgZmxvYXQtcmlnaHRcIiA+IDwvZGl2PiA8bGFiZWw+TGFiZWwgPC9sYWJlbD4gPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuZy1tb2RlbD1cImZkLnBsYWNlaG9sZGVyXCIgLz4gPGxhYmVsPkVycm9yIG1zZyA8L2xhYmVsPiA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5nLW1vZGVsPVwiZmQuZXJyb3JNc2dcIiAvPiA8bGFiZWw+U2VhcmNoVGV4dCA8L2xhYmVsPiA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5nLW1vZGVsPVwiZmQuc2VhcmNoVGV4dFwiIC8+IDxkaXYgY2xhc3M9XCJjaGVja2JveFwiPiA8bGFiZWw+IDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuZy1tb2RlbD1cImZkLmF1dG9TZWFyY2hcIiA+IEF1dG8gc2VhcmNoIDwvbGFiZWw+IDwvZGl2PiA8ZGl2IGNsYXNzPVwiY2hlY2tib3hcIj4gPGxhYmVsPiA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmctbW9kZWw9XCJmZC5zaG93U2VhcmNoRm9ybVwiID4gU2hvdyBzZWFyY2ggZm9ybSA8L2xhYmVsPiA8L2Rpdj4gPC9kaXY+PC9zY3JpcHQ+PGRpdiBuZy1pZj1cImZkLnNob3dTZWFyY2hGb3JtIHx8ICFpbnB1dEFycmF5LmxvY2tlZFwiPjxkaXYgY2xhc3M9XCJiZy1pbmZvIHRleHQtd2hpdGVcIj5TZWFyY2ggZm9ybSA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCIgbmctY2xpY2s9XCJmZC5jb2xsYXBzZVNlYXJjaEZvcm0gPSAhZmQuY29sbGFwc2VTZWFyY2hGb3JtXCI+PHNwYW4gbmctY2xhc3M9XCJ7XFwnZmEgZmEtcGx1cy1zcXVhcmVcXCc6IGZkLmNvbGxhcHNlU2VhcmNoRm9ybSxcXCdmYSBmYS1taW51cy1zcXVhcmVcXCc6ICFmZC5jb2xsYXBzZVNlYXJjaEZvcm0gfVwiPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPXNvcnQtYm94IHVpYi1jb2xsYXBzZT1mZC5jb2xsYXBzZVNlYXJjaEZvcm0+PGRpdiBrdC1ncmlkIGdyaWQtdHlwZT1ncmlkc3RlclR5cGUgZm9ybS1wYXJhbXM9Zm9ybVBhcmFtcyBwYXJlbnQ9ZGFzaGJvYXJkLndpZGdldHNGaWx0ZXIgYWxsLWNvbHVtbnM9ZGFzaGJvYXJkLndpZGdldHNGaWx0ZXIgY2xhc3M9a3RHcmlkPjwvZGl2PjwvZGl2PjxkaXY+PGhyPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCIgbmctY2xpY2s9Z2V0UmVzb3VyY2VEYXRhRmlsdGVyZWQoKT48c3BhbiBjbGFzcz1cImZhIGZhLXNlYXJjaFwiPjwvc3Bhbj4gR2V0IGRhdGE8L2J1dHRvbj48aHI+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1kYXRhRG93bmxvYWRpbmc+PGg0PkxvYWRpbmcgZGF0YS4uLjwvaDQ+PC9kaXY+PGRpdiBjbGFzcz1wYW5lbC1kZWZhdWx0IG5nLWlmPXJlc291cmNlRGF0YURvd25sb2FkZWQ+PGRpdiBjbGFzcz1wYW5lbC1oZWFkaW5nPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWluZm9cIiBuZy1jbGljaz1nZXRGb3JtUmVzb3VyY2VXaXRoRGF0YSgpPjxzcGFuIGNsYXNzPVwiZmEgZmEtcGVuY2lsXCI+PC9zcGFuPiBFZGl0IHNlbGVjdGVkIHJlY29yZHM8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1pZj1cImRhc2hib2FyZC53aWRnZXRzLmxlbmd0aD4wICYmIHVwZGF0ZUZvcm1Mb2FkZWRcIiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIG5nLWNsaWNrPXNhdmVEYXRhc2V0UmVjb3Jkc011bHRpcGxlKCk+PHNwYW4gY2xhc3M9XCJmYSBmYS1zYXZlXCI+PC9zcGFuPiBTYXZlIGNoYW5nZXM8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1pZj1cImRhc2hib2FyZC53aWRnZXRzLmxlbmd0aD4wICYmIHVwZGF0ZUZvcm1Mb2FkZWRcIiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCIgbmctY2xpY2s9XCJkYXNoYm9hcmQud2lkZ2V0cy5sZW5ndGg9MFwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L3NwYW4+IENhbmNlbCBjaGFuZ2VzPC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBrdC1ncmlkIGdyaWQtdHlwZT1ncmlkc3RlclR5cGUgZm9ybS1wYXJhbXM9Zm9ybVBhcmFtcyBwYXJlbnQ9d2lkZ2V0cyBhbGwtY29sdW1ucz13aWRnZXRzIGNsYXNzPVwia3RHcmlkIGJveHNoYWRvd1wiIG5nLXJlcGVhdD1cIndpZGdldHMgaW4gZGFzaGJvYXJkLndpZGdldHMgdHJhY2sgYnkgJGluZGV4XCIgbmctc2hvdz11cGRhdGVGb3JtTG9hZGVkPjwvZGl2PjxkaXYgdWktZ3JpZD1ncmlkT3B0aW9uc1Jlc291cmNlRGF0YSB1aS1ncmlkLXNlbGVjdGlvbiB1aS1ncmlkLXJlc2l6ZS1jb2x1bW5zIHVpLWdyaWQtbW92ZS1jb2x1bW5zIHVpLWdyaWQtc2F2ZS1zdGF0ZSBjbGFzcz1teUdyaWQgbmctaWY9cmVzb3VyY2VEYXRhRG93bmxvYWRlZD48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrVXBkYXRlUmVzb3VyY2UuaHRtbCcsJzxkaXYgY2xhc3M9XCJ3aWRnZXQtaGVhZCBtLTFcIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtYWN0aXZlIG0tMiBzaGFkb3dcXCc6ZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPjAsXFwnbS0wIGJvcmRlci0wXFwnOihmZC5SZWxhdGVkPT1udWxsIHx8IGZkLlJlbGF0ZWQ9PXVuZGVmaW5lZCkgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTJ9XCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgcC0wIG1iLTEgYmctbGlnaHRcIiBuZy1pZj1cImZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xXCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxpIGNsYXNzPVwiZmEgZmEtZ2xvYmUgbXgtMlwiPjwvaT48bGFiZWw+VXBkYXRlIHJlc291cmNlIHJlY29yZCAoe3tmZC5QcmVzZW50YXRpb25JZH19KTwvbGFiZWw+IDxhIGhyZWYgdGl0bGU9c29ydCBuZy1jbGFzcz1cIntcXCd3aWRnZXQtcHJvcFxcJzpmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT11bmRlZmluZWR9XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnkgYm9yZGVyLTAge3tncmlkVHlwZX19LWVsZW1lbnQtZHJhZy1oYW5kbGUgd2lkZ2V0LXByb3BcIj48aSBjbGFzcz1cInt7Z3JpZFR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIGZhcyBmYS1ncmlwLXZlcnRpY2FsXCI+PC9pPjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIHRleHQtcmlnaHQgbXktYXV0b1wiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9ZmQubG9jYWxWYXJzLnNob3dQcm9wZXJ0aWVzKDEpIG5nLWNsYXNzPVwie1xcJ2J0bi13YXJuaW5nXFwnOmZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCE9XFwnXFwnICYmIGZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCE9dW5kZWZpbmVkLCBcXCdidG4tb3V0bGluZS1wcmltYXJ5IG5vLWJvcmRlclxcJzpmZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQ9PVxcJ1xcJyB8fCBmZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQ9PXVuZGVmaW5lZH1cIiBjbGFzcz1cImJ0biBidG4teHNcIj48c3BhbiBuZy1pZj1cImZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCE9XFwnXFwnICYmIGZkLmxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCE9dW5kZWZpbmVkXCI+e3tmZC5QYXJhbWV0ZXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkfX08L3NwYW4+IDxzcGFuIG5nLWlmPVwiZmQuUGFyYW1ldGVycy5TZWxlY3RlZFJlc291cmNlVHlwZSAmJiAoZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkPT1cXCdcXCcgfHwgZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkPT11bmRlZmluZWQpXCI+U2VsZWN0IHt7ZmQuUGFyYW1ldGVycy5TZWxlY3RlZFJlc291cmNlVHlwZX19PC9zcGFuPiA8c3BhbiBuZy1pZj1cIiFmZC5QYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlICYmIChmZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQ9PVxcJ1xcJyB8fCBmZC5sb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQ9PXVuZGVmaW5lZClcIj5TZWxlY3QgcmVzb3VyY2U8L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiIG5nLWlmPVwiZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT1cXCdcXCcgJiYgZmQubG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT11bmRlZmluZWRcIj48YSBocmVmIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYm9yZGVyLTAgYnRuLXNtXCIgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LXByb3BcXCc6ZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wIHx8IGZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkfVwiIHRpdGxlPVwiU2hvdy9oaWRlIHByb3BlcnRpZXNcIiBuZy1jbGljaz1mZC5sb2NhbFZhcnMuc2hvd1Byb3BlcnRpZXMoMix0cnVlKT48aSBjbGFzcz1cImZhcyBmYS1jb2dcIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48ZGl2IGt0LXRhc2stZHJvcGRvd24+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MVwiIGZkPWZkIGxvY2FsLXZhcnM9ZmQubG9jYWxWYXJzIGt0LWRhdGFzZXQtbWFwcGVyPjwvZGl2PjxkaXYgbmctc2hvdz1cIiFmZC5sb2NhbFZhcnMuZm9ybUxvYWRlZCAmJiAoZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0yIHx8IGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yKVwiIGFuaW1hdGlvbi10eXBlPVwiXFwnZm9ybVxcJ1wiIGt0LXByb2Nlc3NpbmctYW5pbWF0aW9uLXRpbWVsaW5lIHNob3ctbXNnPWZhbHNlIG1lc3NhZ2U9XCJMb2FkaW5nIGZvcm0uLi5cIj48L2Rpdj48ZGl2IG5nLXNob3c9XCJmZC5sb2NhbFZhcnMuZm9ybUxvYWRlZCAmJiAoZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0yIHx8IGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yKVwiPjxkaXYgY2xhc3M9XCJtdC0xIHAtMiB0ZXh0LXByaW1hcnlcIiBuZy1pZj1cImZkLmxvY2FsVmFycy5mb3JtTG9hZGVkICYmIGZkLmxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQubGVuZ3RoPT0wXCI+Rm9ybSBpcyBub3QgZGVmaW5lZCBvciBlbXB0eTwvZGl2PjxkaXYga3QtZ3JpZCBncmlkLXR5cGU9ZmQubG9jYWxWYXJzLmdyaWRzdGVyVHlwZSByZXNvdXJjZS1mb3JtLWxvYWRlZD1mZC5sb2NhbFZhcnMuZm9ybUxvYWRlZCBwYXJlbnQtZGF0YXNldC1kZWYtaWQ9ZmQuUGFyZW50RGF0YXNldERlZklkIGRhdGFzZXQtcmVjb3JkLWlkPWZkLmxvY2FsVmFycy5kYXRhc2V0UmVjb3JkSWQgcmVzb3VyY2UtZGVmaW5pdGlvbj1yZXNvdXJjZURlZmluaXRpb24gZm9ybS1wYXJhbXM9ZmQubG9jYWxWYXJzLmZvcm1QYXJhbXMgZm9ybS1wYXJhbXMtcGFyZW50PWZvcm1QYXJhbXMgZm9ybS1kYXRhPWZvcm1EYXRhW2ZkLlV1aWRSZWZdIHBhcmVudD1mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMgYWxsLWNvbHVtbnM9ZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzIHBhcmFtcz1mZC5QYXJhbWV0ZXJzIGNsYXNzPWt0R3JpZD48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIG1iLTJcIj48ZGl2IG5nLWlmPWZkLlBhcmFtZXRlcnMuU2hvd1VwZGF0ZUJ1dHRvbj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgdGl0bGU9XCJVcGRhdGUgZGF0YXNldCByZWNvcmRcIj48aSBjbGFzcz1cImZhIGZhLXNhdmVcIj48L2k+IHt7ZmQuU2VhcmNoVGV4dH19PC9idXR0b24+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlBvcHVsYXRlTWV0aG9kPT1cXCdNXFwnXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIHRpdGxlPVwiR2V0IGRhdGFzZXQgcmVjb3JkXCI+PGkgY2xhc3M9XCJmYSBmYS1jb2dcIj48L2k+IDxzcGFuPnt7ZmQuUGFyYW1ldGVyc0xhbmcuR2V0UmVjb3JkQnRuTGFiZWx9fTwvc3Bhbj4gPHNwYW4gbmctaWY9IWZkLlBhcmFtZXRlcnNMYW5nLkdldFJlY29yZEJ0bkxhYmVsPkdldCBSZWNvcmQ8L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm1vZGFsIGZhZGVcIiByb2xlPWRpYWxvZyBhcmlhLWxhYmVsbGVkYnk9ZGF0YXNldE1hcHBlck1vZGFsIGlkPWRhdGFzZXRNYXBwZXJNb2RhbHt7ZmQuUHJlc2VudGF0aW9uSWR9fSBhcmlhLWhpZGRlbj1mYWxzZT48ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWxnXCIgcm9sZT1kb2N1bWVudD48ZGl2IGNsYXNzPW1vZGFsLWNvbnRlbnQ+PGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBweS0xXCI+PGRpdiBjbGFzcz1cIm1vZGFsLXRpdGxlIGZudDEyIGNvbCBteC0wIG15LTJcIj48c3Bhbj5EZWZpbmUgZGF0YXNldCBtYXBwaW5nPC9zcGFuPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPWNsb3NlIGRhdGEtZGlzbWlzcz1tb2RhbCBhcmlhLWxhYmVsPUNsb3NlPjxzcGFuIGFyaWEtaGlkZGVuPXRydWU+XFx4RDc8L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1tb2RhbC1ib2R5PjxkaXYga3QtZGF0YXNldC10by1kYXRhc2V0LW1hcHBlcj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwibW9kYWwgZmFkZVwiIHJvbGU9ZGlhbG9nIHRhYmluZGV4PS0xIGFyaWEtbGFiZWxsZWRieT1kYXRhc2V0TWFwcGVyUGFyZW50TW9kYWwgaWQ9ZGF0YXNldE1hcHBlclBhcmVudE1vZGFse3tmZC5QcmVzZW50YXRpb25JZH19IGFyaWEtaGlkZGVuPXRydWU+PGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1sZ1wiIHJvbGU9ZG9jdW1lbnQ+PGRpdiBjbGFzcz1tb2RhbC1jb250ZW50PjxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcHktMVwiPjxkaXYgY2xhc3M9XCJtb2RhbC10aXRsZSBmbnQxMiBjb2wgbXgtMCBteS0yXCI+PHNwYW4+UGFyZW50IGRhdGFzZXQgc2V0dXA8L3NwYW4+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9Y2xvc2UgZGF0YS1kaXNtaXNzPW1vZGFsIGFyaWEtbGFiZWw9Q2xvc2U+PHNwYW4gYXJpYS1oaWRkZW49dHJ1ZT5cXHhENzwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPW1vZGFsLWJvZHk+PGRpdiBrdC1kYXRhc2V0LW1hcHBlci1wYXJlbnQ+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm1vZGFsIGZhZGVcIiByb2xlPWRpYWxvZyBhcmlhLWxhYmVsbGVkYnk9bWFzc1Byb3BlcnR5VXBkYXRlIGlkPW1hc3NQcm9wZXJ0eVVwZGF0ZXt7ZmQuUHJlc2VudGF0aW9uSWR9fSBhcmlhLWhpZGRlbj1mYWxzZT48ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWxnXCIgcm9sZT1kb2N1bWVudD48ZGl2IGNsYXNzPW1vZGFsLWNvbnRlbnQ+PGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBweS0xXCI+PGRpdiBjbGFzcz1cIm1vZGFsLXRpdGxlIGZudDEyIGNvbCBteC0wIG15LTJcIj48c3Bhbj5NYXNzIFByb3BlcnR5IFVwZGF0ZTwvc3Bhbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1jbG9zZSBkYXRhLWRpc21pc3M9bW9kYWwgYXJpYS1sYWJlbD1DbG9zZT48c3BhbiBhcmlhLWhpZGRlbj10cnVlPlxceEQ3PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9bW9kYWwtYm9keT48ZGl2IGt0LW1hc3MtcHJvcGVydHktdXBkYXRlLXNlbGVjdD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrVXBkYXRlUmVzb3VyY2VFeGUuaHRtbCcsJzxkaXYgY2xhc3M9d2lkZ2V0LWhlYWQ+PGRpdiBuZy1zaG93PSFmZC5sb2NhbFZhcnMuZm9ybUxvYWRlZCBhbmltYXRpb24tdHlwZT1cIlxcJ2Zvcm1cXCdcIiBrdC1wcm9jZXNzaW5nLWFuaW1hdGlvbi10aW1lbGluZSBzaG93LW1zZz1mYWxzZSBtZXNzYWdlPVwiTG9hZGluZyBmb3JtLi4uXCI+PC9kaXY+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5mb3JtTG9hZGVkICYmIChmZC5sb2NhbFZhcnMuZGF0YURvd25sb2FkZWQgfHwgZmQuUG9wdWxhdGVNZXRob2Q9PVxcJ01cXCcpXCI+PGRpdiBrdC1ncmlkIGdyaWQtdHlwZT06OmZkLmxvY2FsVmFycy5ncmlkc3RlclR5cGUgcmVzb3VyY2UtZm9ybS1sb2FkZWQ9ZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQgcGFyZW50LXJlc291cmNlLWRlZi1pZD1mZC5QYXJlbnRSZXNvdXJjZURlZklkIHJlc291cmNlLXJlY29yZC1pZD1mZC5sb2NhbFZhcnMucmVzb3VyY2VSZWNvcmRJZCByZXNvdXJjZS1kZWZpbml0aW9uPTo6cmVzb3VyY2VEZWZpbml0aW9uIGZvcm0tcGFyYW1zPTo6ZmQubG9jYWxWYXJzLmZvcm1QYXJhbXMgZm9ybS1wYXJhbXMtcGFyZW50PTo6Zm9ybVBhcmFtcyBmb3JtLWRhdGE9Zm9ybURhdGFbZmQuVXVpZFJlZl0gcGFyZW50PTo6ZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzIGFsbC1jb2x1bW5zPTo6ZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzIGNsYXNzPWt0R3JpZD48L2Rpdj48ZGl2IGNsYXNzPXRleHQtcmlnaHQgbmctaWY9ZmQuUGFyYW1ldGVycy5TaG93QXVkaXRJbmZvPjxkaXYgY2xhc3M9c21hbGw+PHNwYW4gbmctYmluZD1mZC5sb2NhbFZhcnMuQ3JlYXRlZEJ5TGFiZWw+PC9zcGFuPjwvZGl2PjxkaXYgbmctaWY9ZmQubG9jYWxWYXJzLkhhc0NoYW5nZWRCeSBjbGFzcz1zbWFsbD48c3BhbiBuZy1iaW5kPWZkLmxvY2FsVmFycy5DaGFuZ2VkQnlMYWJlbD48L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCBteS0yXCI+PGRpdiBuZy1pZj1mZC5QYXJhbWV0ZXJzLlNob3dVcGRhdGVCdXR0b24+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIHRpdGxlPVwiVXBkYXRlIGRhdGFzZXQgcmVjb3JkXCIgbmctY2xpY2s9UHJvY2Vzc0Zvcm0oKT48aSBjbGFzcz1cImZhIGZhLXNhdmVcIj48L2k+IHt7ZmQuU2VhcmNoVGV4dH19PC9idXR0b24+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlBvcHVsYXRlTWV0aG9kPT1cXCdNXFwnXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIHRpdGxlPVwiR2V0IGRhdGFzZXQgcmVjb3JkXCIgbmctY2xpY2s9ZmQubG9jYWxWYXJzLkdldFJlY29yZEZpbHRlcihmb3JtRGF0YVtmZC5VdWlkUmVmXSk+PGkgY2xhc3M9XCJmYSBmYS1jb2dcIj48L2k+IDxzcGFuPnt7ZmQuUGFyYW1ldGVyc0xhbmcuR2V0UmVjb3JkQnRuTGFiZWx9fTwvc3Bhbj4gPHNwYW4gbmctaWY9IWZkLlBhcmFtZXRlcnNMYW5nLkdldFJlY29yZEJ0bkxhYmVsPkdldCBSZWNvcmQ8L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza1VwZGF0ZVJlc291cmNlUHJvcGVydGllcy5odG1sJywnPGRpdiBjbGFzcz1wLTE+PGRpdiBrdC1wcm9wZXJ0eS1oZWFkZXI+PC9kaXY+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MlwiIGNsYXNzPW0tMD48ZGl2IGNsYXNzPjxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWRcIj5MYWJlbDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgbmctbW9kZWw9ZmQuTGFiZWw+IDxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWRcIj5FcnJvciBtc2c8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLkVycm9yTXNnPiA8bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkXCI+U2VhcmNoVGV4dDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgbmctbW9kZWw9ZmQuU2VhcmNoVGV4dD48ZGl2IGNsYXNzPjxsYWJlbCBjbGFzcz1rdC1jaGVja2JveC1sYWJlbCBmb3I9Y2JIaWRlVXBkYXRlQnV0dG9ue3tmZC5QcmVzZW50YXRpb25JZH19PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPWNiSGlkZVVwZGF0ZUJ1dHRvbnt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlNob3dVcGRhdGVCdXR0b24gbmctY2hlY2tlZD1mZC5QYXJhbWV0ZXJzLlNob3dVcGRhdGVCdXR0b24+IFNob3cgdXBkYXRlIGJ1dHRvbjwvbGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm1iLTIgY29sLWxnLTI0IHB4LTBcIiBuZy1pZj1cImZkLkF1dG9TZWFyY2ggfHwgZmQuUG9wdWxhdGVNZXRob2Q9PVxcJ0FcXCdcIj48bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkXCI+VXBkYXRlIHJlY29yZCBjb25kaXRpb248L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuVXBkYXRlUmVjb3JkQ29uZGl0aW9uPjwvZGl2PjxkaXYgY2xhc3M9bXQtMj48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWwgZm9yPWNiTXVsdGlsaW5le3tmZC5QcmVzZW50YXRpb25JZH19PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPWNiTXVsdGlsaW5le3tmZC5QcmVzZW50YXRpb25JZH19IG5nLW1vZGVsPWZkLk11bHRpbGluZSBuZy1jaGVja2VkPWZkLk11bHRpbGluZT4gVXBkYXRlIG11bHRpcGxlIHJlY29yZHM8L2xhYmVsPjwvZGl2PjxkaXYgbmctaWY9ZmQuTXVsdGlsaW5lIGNsYXNzPW10LTI+PGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZFwiPk1heCBpdGVtczwvbGFiZWw+IDxpbnB1dCB0eXBlPW51bWJlciBtaW49MCBtYXg9MTAwMCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLk1heEl0ZW1zPiA8bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkXCI+QWRkIGJ1dHRvbiBsYWJlbDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVyc0xhbmcuQWRkUmVjTGFiZWw+IDxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWRcIj5SZW1vdmUgYnV0dG9uIGxhYmVsPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzTGFuZy5SZW1vdmVSZWNMYWJlbD48L2Rpdj48ZGl2IGNsYXNzPW10LTM+PHNwYW4gY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkIG10LTFcIj5EZWZpbmUgbWVzc2FnZSB3aGVuIHJlY29yZCBpcyB1cGRhdGVkPC9zcGFuPiA8dGV4dGFyZWEgbmctbW9kZWw9ZmQuUmVzcG9uc2VNc2cgcGxhY2Vob2xkZXI9XCJFbnRlciBtZXNzYWdlXCIgbmFtZT1yZXNwb25zZU1zZyBjbGFzcz1mb3JtLWNvbnRyb2w+XFxyXFxuXFx0XFx0XFx0ICAgIFxcclxcblxcdFxcdDwvdGV4dGFyZWE+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBweC0wXCI+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveCBteS0yXCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgaWQ9Y2JTaG93QXVkaXRJbmZve3tmZC5QcmVzZW50YXRpb25JZH19IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuU2hvd0F1ZGl0SW5mbz4gPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgbGFiZWwteHNcIiBmb3I9Y2JTaG93QXVkaXRJbmZve3tmZC5QcmVzZW50YXRpb25JZH19PlNob3cgYXVkaXQgaW5mbzwvbGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBweC0wXCI+PGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZFwiPkNyZWF0ZWQgYnkgdGV4dDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVyc0xhbmcuQ3JlYXRlZEJ5VGVtcGxhdGU+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBweC0wXCI+PGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZFwiPkNoYW5nZWQgYnkgdGV4dDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVyc0xhbmcuQ2hhbmdlZEJ5VGVtcGxhdGU+PC9kaXY+PGRpdiBrdC13aWRnZXQtZGF0YS1zb3VyY2UtZGVmPjwvZGl2PjxkaXYgaWRkPVBMQUNFSE9MREVSUFJPUEVSVElFUyBrdC1wcm9jLXBoLXByb3BlcnR5PjwvZGl2PjxkaXYga3QtZmllbGQtYWR2YW5jZWQtcHJvcGVydGllcz48L2Rpdj48ZGl2IGNsYXNzPW15LTQgbmctaWY9JHJvb3QuZ2xvYmFscy5jdXJyZW50VXNlci51ZXAuUGFyYW1zLmJldGFGZWF0dXJlcz48ZGl2IGNsYXNzPVwiYm9yZGVyLWJvdHRvbSBtYi0yXCI+VXBkYXRlIHByb2Nlc3MgZmxvdzwvZGl2PjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9ZmQubG9jYWxWYXJzLmFkZEFjdGlvbigpIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGJ0bi14c1wiPjxpIGNsYXNzPVwiZmEgZmEtcGx1cyBtci0yXCI+PC9pPiA8c3BhbiBjbGFzcz1zbWFsbD5BZGQgYWN0aW9uPC9zcGFuPjwvYnV0dG9uPjxkaXYgbmctcmVwZWF0PVwiYWN0aW9uIGluIGZkLlBhcmFtZXRlcnMuZmxvd0FjdGlvbnMgdHJhY2sgYnkgJGluZGV4XCIgY2xhc3M9cC0yPjxkaXYgY2xhc3M9XCJib3JkZXItYm90dG9tIHRleHQtY2VudGVyIGJvbGQgbWItMlwiPkFjdGlvbiB7eyRpbmRleCsxfX0uPC9kaXY+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveCBteS0yXCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgaWQ9Y2JGbG93Tm9Db25kaXRpb257e2ZkLlByZXNlbnRhdGlvbklkfX17eyRpbmRleH19IG5nLW1vZGVsPWFjdGlvbi5Ob0NvbmRpdGlvbj4gPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgbGFiZWwteHNcIiBmb3I9Y2JGbG93Tm9Db25kaXRpb257e2ZkLlByZXNlbnRhdGlvbklkfX17eyRpbmRleH19PlVuY29uZGl0aW9uYWw8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3MgbmctaWY9IWFjdGlvbi5Ob0NvbmRpdGlvbj48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+Q29uZGl0aW9uPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1hY3Rpb24uQ29uZGl0aW9uPjwvZGl2PjxkaXYgY2xhc3M+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPlVwZGF0ZSB2YWx1ZXM8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWFjdGlvbi5WYWx1ZXM+PC9kaXY+PGRpdiBjbGFzcz1teS0yPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9ZmQubG9jYWxWYXJzLmRlbEFjdGlvbigkaW5kZXgpIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhbmdlciBidG4teHNcIj48aSBjbGFzcz1cImZhIGZhLW1pbnVzIG1yLTJcIj48L2k+IDxzcGFuIGNsYXNzPXNtYWxsPlJlbW92ZTwvc3Bhbj48L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1mZC5sb2NhbFZhcnMuaW5zZXJ0QWN0aW9uKCRpbmRleCkgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4teHNcIj48aSBjbGFzcz1cImZhIGZhLWFycm93LXVwIG1yLTJcIj48L2k+IDxzcGFuIGNsYXNzPXNtYWxsPkluc2VydCBiZWZvcmU8L3NwYW4+PC9idXR0b24+IDxidXR0b24gbmctaWY9XCJmZC5QYXJhbWV0ZXJzLmFjdGlvbnMubGVuZ3RoLTEhPSRpbmRleFwiIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5pbnNlcnRBY3Rpb24oJGluZGV4KzEpIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYnRuLXhzXCI+PGkgY2xhc3M9XCJmYSBmYS1hcnJvdy1kb3duIG1yLTJcIj48L2k+IDxzcGFuIGNsYXNzPXNtYWxsPkluc2VydCBhZnRlcjwvc3Bhbj48L2J1dHRvbj4gPGJ1dHRvbiBuZy1pZj1cImV2ZW50LmFjdGlvbnMubGVuZ3RoLTE9PSRpbmRleFwiIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5hZGRBY3Rpb24oKSBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi14c1wiPjxpIGNsYXNzPVwiZmEgZmEtcGx1cyBtci0yXCI+PC9pPiA8c3BhbiBjbGFzcz1zbWFsbD5BZGQgYWN0aW9uPC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTNcIiBrdC1kYXRhc2V0LW1hcHBlci1wYXJlbnQgY2xhc3M+PC9kaXY+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09NFwiIGt0LWRhdGFzZXQtdG8tZGF0YXNldC1tYXBwZXIgY2xhc3M+PC9kaXY+PGRpdiBuZy1pZj1cImZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSA+IDBcIj48ZGl2IGNsYXNzPVwibXktMiB0ZXh0LWNlbnRlclwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJ3LTEwMCBidG4gYnRuLXhzIGJ0bi1wcmltYXJ5XCIgZGF0YS10b2dnbGU9bW9kYWwgZGF0YS10YXJnZXQ9I2RhdGFzZXRNYXBwZXJNb2RhbHt7ZmQuUHJlc2VudGF0aW9uSWR9fT48c3Bhbj5Db3B5IGRhdGEgZnJvbSBvdGhlciBkYXRhc2V0czwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwibXktMiB0ZXh0LWNlbnRlclwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJ3LTEwMCBidG4gYnRuLXhzIGJ0bi1wcmltYXJ5XCIgZGF0YS10b2dnbGU9bW9kYWwgZGF0YS10YXJnZXQ9I2RhdGFzZXRNYXBwZXJQYXJlbnRNb2RhbHt7ZmQuUHJlc2VudGF0aW9uSWR9fT48c3Bhbj5EZWZpbmUgcGFyZW50IGRhdGFzZXQ8L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1cIm15LTIgdGV4dC1jZW50ZXJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi14cyBidG4tcHJpbWFyeVwiIGRhdGEtdG9nZ2xlPW1vZGFsIGRhdGEtdGFyZ2V0PSNtYXNzUHJvcGVydHlVcGRhdGV7e2ZkLlByZXNlbnRhdGlvbklkfX0+PHNwYW4+TWFzcyB1cGRhdGU8L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza1ZpZXdQZGYuaHRtbCcsJzxkaXYgY2xhc3M9XCJtYi0xIHdpZGdldC1oZWFkXCIgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LWFjdGl2ZVxcJzpsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU+MCxcXCdtLTAgYm9yZGVyLTBcXCc6KGZkLlJlbGF0ZWQ9PW51bGwgfHwgZmQuUmVsYXRlZD09dW5kZWZpbmVkKSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09Mn1cIj48ZGl2IGNsYXNzPVwicm93IG0tMCBwLTAgYmctbGlnaHRcIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtaGVhZC1hY3RpdmVcXCc6bG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPjAsXFwnYmctbGlnaHRcXCc6bG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wfVwiIG5nLWlmPVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTFcIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wIGJnLWdyYXktMTAwXCI+PGkgY2xhc3M9XCJmYSBmYS1maWxlLXBkZiBteC0yXCI+PC9pPjxsYWJlbD5WaWV3IERhdGFzZXQgYXMgcGRmKHt7ZmQuUHJlc2VudGF0aW9uSWR9fSk8L2xhYmVsPiA8YSBocmVmIHRpdGxlPXNvcnQgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LXByb3BcXCc6bG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wIHx8IGxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkfVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIHt7Z3JpZFR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIHdpZGdldC1wcm9wXCI+PGkgY2xhc3M9XCJ7e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZSBmYXMgZmEtZ3JpcC12ZXJ0aWNhbFwiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LXJpZ2h0IG15LWF1dG9cIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWxvY2FsVmFycy5zaG93UHJvcGVydGllcygxKSBuZy1jbGFzcz1cIntcXCdidG4td2FybmluZ1xcJzpsb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPVxcJ1xcJyAmJiBsb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPXVuZGVmaW5lZCwgXFwnYnRuLW91dGxpbmUtcHJpbWFyeSBuby1ib3JkZXJcXCc6bG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkPT1cXCdcXCcgfHwgbG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkPT11bmRlZmluZWR9XCIgY2xhc3M9XCJidG4gYnRuLXhzXCI+PHNwYW4gbmctaWY9XCJsb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPVxcJ1xcJyAmJiBsb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPXVuZGVmaW5lZFwiPnt7bG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkfX08L3NwYW4+IDxzcGFuIG5nLWlmPVwibG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkPT1cXCdcXCcgfHwgbG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkPT11bmRlZmluZWRcIj5TZWxlY3QgZGF0YXNldDwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCIgbmctaWY9XCJsb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPVxcJ1xcJyAmJiBsb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPXVuZGVmaW5lZFwiPjxhIGhyZWYgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCBidG4tc21cIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtcHJvcFxcJzpsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgbG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT11bmRlZmluZWR9XCIgdGl0bGU9XCJTaG93L2hpZGUgcHJvcGVydGllc1wiIG5nLWNsaWNrPWxvY2FsVmFycy5zaG93UHJvcGVydGllcygyKT48aSBjbGFzcz1cImZhcyBmYS1jb2dcIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48ZGl2IGNsYXNzPVwiZHJvcGRvd24gZC1pbmxpbmUtYmxvY2tcIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtcHJvcFxcJzpsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgbG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT11bmRlZmluZWR9XCI+PGEgaHJlZiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kYW5nZXIgYm9yZGVyLTAgYnRuLXNtXCIgdGl0bGU9XCJSZW1vdmUgZmllbGRcIiBpZD1kcm9wZG93bk1lbnVCdXR0b24gZGF0YS10b2dnbGU9ZHJvcGRvd24gYXJpYS1oYXNwb3B1cD10cnVlIGFyaWEtZXhwYW5kZWQ9ZmFsc2U+PGkgY2xhc3M9XCJmYSBmYS10cmFzaFwiPjwvaT48L2E+PGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgc2hhZG93IHAtMCBkcm9wZG93bi1tYXgtY29udGVudC13aWR0aFwiIGFyaWEtbGFiZWxsZWRieT1kcm9wZG93bk1lbnVCdXR0b24+PGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHAtMCBweC0xIGJnLWxpZ2h0XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1leGNsYW1hdGlvbi10cmlhbmdsZSB0ZXh0LWRhbmdlclwiPjxzcGFuIGNsYXNzPVwibWwtMiBzbWFsbFwiPkRlbGV0ZSB3aWRnZXQgY29uZmlybWF0aW9uPC9zcGFuPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPW0tMT48ZGl2IGNsYXNzPVwibS0xIHNtYWxsIGJvbGQgdGV4dC1kYXJrXCI+Q2xpY2sgQ29uZmlybSB0byBkZWxldGUgd2lkZ2V0ITwvZGl2PjxkaXYgbmctaWY9ZmFsc2UgY2xhc3M9XCJtbC0xIHNtYWxsIHRleHQtZGFya1wiPlRoaXMgYWN0aW9uIG1heSByZXN1bHQgaW4gYSBsb3NzIG9mIGRhdGEhPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1wLTE+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4teHMgYnRuLWRhbmdlclwiIHRpdGxlPUNvbmZpcm0gbmctY2xpY2s9cmVtb3ZlRmllbGQoJGluZGV4KT5Db25maXJtIDxpIGNsYXNzPVwibWwtMiBmYSBmYS1jaGVja1wiPjwvaT48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLmlzQ29sbGFwc2VkTWFwcGVyPT1mYWxzZSB8fCBsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU+MCAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MVwiIGNsYXNzPVwicC0yIG1iLTJcIj48ZGl2IGt0LWZvcm0tZWxlbWVudC1wcm9wZXJ0aWVzIGZkPWZkIGxvY2FsLXZhcnM9bG9jYWxWYXJzPjwvZGl2PjwvZGl2PjxkaXYgbmctc2hvdz1cIihmZC5TaG93U2VhcmNoRm9ybSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MikgfHwgKGxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MiAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSlcIiBjbGFzcz48ZGl2IGNsYXNzPVwicC0wIGJvcmRlci1ib3R0b21cIj48ZGl2IGNsYXNzPVwicm93IG0tMCBwLTEgYmctcHJpbWFyeS1saWdodCB0ZXh0LXByaW1hcnlcIj48ZGl2IGNsYXNzPWNvbD48aSBjbGFzcz1cImZhIGZhLXNlYXJjaFwiPjwvaT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcHgtMFwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4teHNcIiBkYXRhLXRvZ2dsZT1jb2xsYXBzZSBkYXRhLXRhcmdldD0jaXNDb2xsYXBzZUlke3s6OmZkLmlkfX0gYXJpYS1leHBhbmRlZD17e2xWYXJzLmlzQ29sbGFwc2VkfX0gYXJpYS1jb250cm9scz1pc0NvbGxhcHNlZElke3s6OmZkLmlkfX0gbmctY2xpY2s9XCJsVmFycy5pc0NvbGxhcHNlZCA9ICFsVmFycy5pc0NvbGxhcHNlZFwiPjxzcGFuIG5nLWNsYXNzPVwie1xcJ2ZhIGZhLW1pbnVzXFwnOiAhbFZhcnMuaXNDb2xsYXBzZWQsXFwnZmEgZmEtcGx1c1xcJzogbFZhcnMuaXNDb2xsYXBzZWQgfVwiPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sbGFwc2Ugc2hvd1wiIGlkPWlzQ29sbGFwc2VJZHt7OjpmZC5pZH19PjxkaXYgbmctaWY9XCIhbG9jYWxWYXJzLmZvcm1Mb2FkZWQgJiYgbG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0yXCIgY2xhc3M9XCJyb3cgbS0wIGJvcmRlci0wXCIga3QtcHJvY2Vzc2luZy1hbmltYXRpb24tdGltZWxpbmUgYW5pbWF0aW9uLXR5cGU9Zm9ybSBzaG93LW1zZz1mYWxzZSBtZXNzYWdlPVwiTG9hZGluZyBmb3JtLi4uXCI+PC9kaXY+PGRpdiBuZy1pZj1cIihsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTIgfHwgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTIpXCI+PGRpdiBjbGFzcz1cIm10LTEgcC0yIHRleHQtcHJpbWFyeVwiIG5nLWlmPVwibG9jYWxWYXJzLmZvcm1Mb2FkZWQgJiYgbG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzLmxheW91dC5sZW5ndGg9PTBcIj48c3BhbiBjbGFzcz1tci0zPkZvcm0gaXMgbm90IGRlZmluZWQgb3IgZW1wdHk8L3NwYW4+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiB0aXRsZT1Db25maXJtIG5nLWNsaWNrPWxvY2FsVmFycy5nZXRGb3JtUmVzb3VyY2VPcmlnaW5hbCgpPlJlbG9hZCBkYXRhc2V0IGZyb20gPGkgY2xhc3M9XCJtbC0yIGZhcyBmYS1zeW5jXCI+PC9pPjwvYnV0dG9uPjwvZGl2PjxkaXYga3QtZ3JpZCBncmlkLXR5cGU9bG9jYWxWYXJzLmdyaWRzdGVyVHlwZSBzaG93LXNlYXJjaC1maWx0ZXJzPWxvY2FsVmFycy5zaG93U2VhcmNoRmlsdGVycyByZXNvdXJjZS1mb3JtLWxvYWRlZD1sb2NhbFZhcnMuZm9ybUxvYWRlZCBwYXJlbnQtZGF0YXNldC1kZWYtaWQ9ZmQuUGFyZW50RGF0YXNldERlZklkIGRhdGFzZXQtcmVjb3JkLWlkPWxvY2FsVmFycy5kYXRhc2V0UmVjb3JkSWQgcmVzb3VyY2UtZGVmaW5pdGlvbj10YXNrRGVmaW5pdGlvbiBmb3JtLXBhcmFtcz1sb2NhbFZhcnMuZm9ybVBhcmFtcyBmb3JtLXBhcmFtcy1wYXJlbnQ9Zm9ybVBhcmFtcyBmb3JtLWRhdGE9Zm9ybURhdGFbZmQuUHJlc2VudGF0aW9uSWRdIHBhcmVudD1sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMgYWxsLWNvbHVtbnM9bG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzIGNsYXNzPWt0R3JpZD48L2Rpdj48L2Rpdj48ZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wIG10LTJcIj48ZGl2IG5nLWlmPWZkLlBhcmFtZXRlcnMuU2hvd0dldERhdGFCdXR0b24gY2xhc3M9XCJjb2wtYXV0byBteS1hdXRvXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi1zbVwiIG5nLWNsaWNrPWxvY2FsVmFycy5HZXREYXRhc2V0RGF0YUNsaWNrKCk+PGkgbmctaWY9XCIoZmQuU2hvd1NlYXJjaEZvcm0gJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTIpIHx8IChsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTIgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEpXCIgY2xhc3M9XCJmYSBmYS1kYXRhYmFzZVwiPjwvaT4gPHNwYW4gbmctaWY9XCIoZmQuU2hvd1NlYXJjaEZvcm0gJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTIpIHx8IChsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTIgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEpXCI+e3tmZC5QYXJhbWV0ZXJzTGFuZy5HZXREYXRhQnRuTGFiZWx9fTwvc3Bhbj4gPGkgbmctaWY9XCIoIWZkLlNob3dTZWFyY2hGb3JtICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yKVwiIGNsYXNzPVwiZmFzIGZhLXN5bmNcIj48L2k+IDxzcGFuIG5nLWlmPVwiKCFmZC5TaG93U2VhcmNoRm9ybSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MilcIj57e2ZkLlBhcmFtZXRlcnNMYW5nLkdldERhdGFCdG5MYWJlbH19PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgbXktYXV0b1wiIG5nLXN0eWxlPVwie1xcJ3Zpc2liaWxpdHlcXCc6IChsb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRlZCAmJiBsb2NhbFZhcnMuZ3JpZEFwaS5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRSb3dzKCkubGVuZ3RoPjAgJiYgKGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yIHx8IChmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBsb2NhbFZhcnMuZGF0YXNldG1hcHBlclR5cGU9PTUpKSkgPyBcXCd2aXNpYmxlXFwnOlxcJ2hpZGRlblxcJ31cIj48ZGl2IGt0LWluaXRpYXRlLXRhc2std2lkZ2V0IG5nLWlmPVwibG9jYWxWYXJzLmdyaWRBcGkuc2VsZWN0aW9uLmdldFNlbGVjdGVkUm93cygpLmxlbmd0aD4wXCI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTFcIj48ZGl2IGNsYXNzPVwiY29sIHRleHQtcmlnaHRcIiBuZy1pZj1cImZvcm1EZWZpbml0aW9uICYmIGZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZT09XFwndGFibGVcXCcgJiYgbG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0yICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xXCI+PGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1sb2NhbFZhcnMuc2F2ZUdyaWRTdGF0ZSgpPlNhdmUgZ3JpZCBzdGF0ZTwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmZC5QYXJhbWV0ZXJzLlByZXNlbnRhdGlvblR5cGU9PVxcJ3RhYmxlXFwnXCI+PGRpdiBjbGFzcz1cImNhcmQgYm9yZGVyLTAgbXQtMSBwLTIgdGV4dC1wcmltYXJ5XCIgbmctaWY9XCJsb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YS5sZW5ndGg9PTAgJiYgIWZkLmluaXRpYWxMb2FkXCI+e3tmZC5QYXJhbWV0ZXJzTGFuZy5Ob0RhdGFNc2d9fTwvZGl2PjxkaXYgY2xhc3M9XCJjYXJkIGJvcmRlci0wIG10LTFcIiBzdHlsZT1taW4taGVpZ2h0OjQ5NXB4IG5nLXNob3c9XCIoKGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yICYmIChsb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRpbmcgfHwgbG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEubGVuZ3RoPjApKSB8fCAoZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgbG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0yKSlcIj48ZGl2IG5nLWlmPVwiKChmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MiAmJiAobG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkaW5nIHx8IGxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5kYXRhLmxlbmd0aD4wKSkgfHwgKGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xICYmIGxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MikpXCI+PGRpdiBuZy1zaG93PWxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGluZyBuZy1jbGFzcz1cIntcXCdwcm9jZXNzaW5nLW92ZXJsYXlcXCc6IGxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGluZyB9XCIga3QtcHJvY2Vzc2luZy1hbmltYXRpb24tdGltZWxpbmUgYW5pbWF0aW9uLXR5cGU9XCJcXCd0YWJsZVxcJ1wiIHNob3ctbXNnPWZhbHNlIG1lc3NhZ2U9XCJMb2FkaW5nIGRhdGFcIj48L2Rpdj48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmRhdGEubGVuZ3RoPjAgfHwgKGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xICYmIGxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MilcIiB1aS1ncmlkPWxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YSB1aS1ncmlkLXNlbGVjdGlvbiB1aS1ncmlkLXJlc2l6ZS1jb2x1bW5zIHVpLWdyaWQtbW92ZS1jb2x1bW5zIHVpLWdyaWQtc2F2ZS1zdGF0ZSB1aS1ncmlkLXBhZ2luYXRpb24gdWktZ3JpZC1ncm91cGluZyBjbGFzcz1teUdyaWQ+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1mYWxzZSBuZy1zaG93PVwiKGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yIHx8IChmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTIpKSAmJiBsb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuZGF0YS5sZW5ndGg+MFwiIGNsYXNzPVwicm93IG0tMSBwLTBcIj48ZGl2IGNsYXNzPVwiY29sIHBsLTBcIj48dWwgdWliLXBhZ2luYXRpb24gYm91bmRhcnktbGlua3M9dHJ1ZSBtYXgtc2l6ZT0xMCBpdGVtcy1wZXItcGFnZT1sb2NhbFZhcnMucGFnZVNpemUgZm9yY2UtZWxsaXBzZXM9dHJ1ZSB0b3RhbC1pdGVtcz1sb2NhbFZhcnMudG90YWxDb3VudCBuZy1tb2RlbD1sb2NhbFZhcnMuY3VycmVudFBhZ2UgY2xhc3M9XCJkLWlubGluZS1mbGV4IHBhZ2luYXRpb24gcGFnaW5hdGlvbi1zbSBtLTBcIiBwcmV2aW91cy10ZXh0PSZsc2FxdW87IG5nLWNoYW5nZT1sb2NhbFZhcnMucGFnZUNoYW5nZWQoKSBuZXh0LXRleHQ9JnJzYXF1bzsgZmlyc3QtdGV4dD0mbGFxdW87IGxhc3QtdGV4dD0mcmFxdW87PjwvdWw+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy1hdXRvIHAtMVwiPjxzZWxlY3QgY2xhc3M9aW5wdXQtc20gbmctY2hhbmdlPWxvY2FsVmFycy5wYWdlQ2hhbmdlZCgpIG5nLW1vZGVsPWxvY2FsVmFycy5wYWdlU2l6ZT48b3B0aW9uIG5nLXJlcGVhdD1cInBzIGluIGxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5wYWdpbmF0aW9uUGFnZVNpemVzIHRyYWNrIGJ5IHBzXCIgbmctc2VsZWN0ZWQ9XCJsb2NhbFZhcnMucGFnZVNpemU9PXBzXCIgbmctdmFsdWU9cHM+e3twc319PC9vcHRpb24+PC9zZWxlY3Q+PHNwYW4gY2xhc3M9XCJzbWFsbCBtbC0yXCI+aXRlbXMgcGVyIHBhZ2U8L3NwYW4+IDxzcGFuIGNsYXNzPVwic21hbGwgbWwtMlwiPnw8L3NwYW4+IDxzcGFuIGNsYXNzPVwic21hbGwgbWwtMlwiPlBhZ2U6IHt7bG9jYWxWYXJzLmN1cnJlbnRQYWdlfX0gLyB7e2xvY2FsVmFycy5udW1QYWdlc319PC9zcGFuPjxzcGFuIGNsYXNzPVwic21hbGwgbWwtMlwiPnw8L3NwYW4+IDxzcGFuIGNsYXNzPVwic21hbGwgbWwtMlwiPnt7bG9jYWxWYXJzLnBhZ2VTaXplKmxvY2FsVmFycy5jdXJyZW50UGFnZSsxLWxvY2FsVmFycy5wYWdlU2l6ZX19IC0ge3tsb2NhbFZhcnMucGFnZVNpemUqbG9jYWxWYXJzLmN1cnJlbnRQYWdlPmxvY2FsVmFycy50b3RhbENvdW50ID8gbG9jYWxWYXJzLnRvdGFsQ291bnQgOiBsb2NhbFZhcnMucGFnZVNpemUqbG9jYWxWYXJzLmN1cnJlbnRQYWdlfX0gb2Yge3tsb2NhbFZhcnMudG90YWxDb3VudH19IGl0ZW1zPC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJsb2NhbFZhcnMucmVzb3VyY2VEYXRhRG93bmxvYWRlZCAmJiBsb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEuY29sdW1uRGVmcy5sZW5ndGg+MCAmJiBsb2NhbFZhcnMuZ3JpZEFwaS5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRSb3dzKCkubGVuZ3RoPjBcIj48ZGl2IG5nLWlmPWZhbHNlIGNsYXNzPVwicm93IG0tMCBwLTFcIj48ZGl2IGNsYXNzPWNvbC1hdXRvPjxkaXYgbmctaWY9XCJyZWxhdGVkRGF0YXNldC5maWVsZFR5cGU9PVxcJ3Jlc291cmNlXFwnIHx8IHJlbGF0ZWREYXRhc2V0LmZpZWxkVHlwZT09XFwncmVzb3VyY2VMaW5rXFwnXCIgbmctcmVwZWF0PVwicmVsYXRlZERhdGFzZXQgaW4gbG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmNvbHVtbkRlZnMgdHJhY2sgYnkgJGluZGV4XCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1sb2NhbFZhcnMuZ2V0RGF0YXNldFJlbGF0ZWRSZWNvcmRzKHJlbGF0ZWREYXRhc2V0LnJlbGF0ZWREYXRhc2V0SWQsbG9jYWxWYXJzLnNlbGVjdGVkRGF0YXNldFJlY29yZElkLHJlbGF0ZWREYXRhc2V0Lm1vZGVsSWQpIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnlcIj57e3JlbGF0ZWREYXRhc2V0LmRpc3BsYXlOYW1lfX08L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbCBuZy1pZj1cImxvY2FsVmFycy5zaG93R3JpZCAmJiBsb2NhbFZhcnMuZ3JpZEFwaS5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRSb3dzKCkubGVuZ3RoPjAgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTJcIj48ZGl2IGlkPWdyaWQzIHVpLWdyaWQ9bG9jYWxWYXJzLmdyaWRPcHRpb25zUmVsYXRlZCB1aS1ncmlkLW1vdmUtY29sdW1ucyB1aS1ncmlkLXNhdmUtc3RhdGUgdWktZ3JpZC1hdXRvLXJlc2l6ZSB1aS1ncmlkLWdyb3VwaW5nIHVpLWdyaWQtc2VsZWN0aW9uIHVpLWdyaWQtcmVzaXplLWNvbHVtbnMgY2xhc3M9bXlHcmlkPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tWaWV3UGRmUHJvcGVydGllcy5odG1sJywnPGRpdiBjbGFzcz1wLTE+PGRpdiBuZy1pZj1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MVwiIGZkPWZkIGxvY2FsLXZhcnM9bG9jYWxWYXJzIGt0LWRhdGFzZXQtbWFwcGVyPjwvZGl2PjxkaXYgbmctaWY9XCJsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU+MVwiIGNsYXNzPVwiYnRuLWdyb3VwIGJ0bi1ncm91cC10b2dnbGUgdy0xMDBcIiBkYXRhLXRvZ2dsZT1idXR0b25zPjxsYWJlbCBuZy1jbGljaz1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT0yXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IGFjdGl2ZVwiPjxzcGFuIGNsYXNzPVwiZmFzIGZhLW5ld3NwYXBlciBtci0yXCI+PC9zcGFuPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9ZGF0YXNldE1hcHBlclR5cGV7e2ZkLlByZXNlbnRhdGlvbklkfX0gaWQ9b3B0aW9uNCBhdXRvY29tcGxldGU9b2ZmPiBDdXN0b21pemUgZm9ybTwvbGFiZWw+IDxsYWJlbCBuZy1jbGljaz1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT01XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1jb2cgbXItMlwiPjwvc3Bhbj4gPGlucHV0IHR5cGU9cmFkaW8gbmFtZT1kYXRhc2V0TWFwcGVyVHlwZXt7ZmQuUHJlc2VudGF0aW9uSWR9fSBpZD1vcHRpb24xIGF1dG9jb21wbGV0ZT1vZmYgY2hlY2tlZD4gUHJvcGVydGllczwvbGFiZWw+IDxsYWJlbCBuZy1jbGljaz1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT0zXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCI+PHNwYW4gY2xhc3M9XCJmYXMgZmEtcm9ja2V0IG1yLTJcIj48L3NwYW4+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT1kYXRhc2V0TWFwcGVyVHlwZXt7ZmQuUHJlc2VudGF0aW9uSWR9fSBpZD1vcHRpb24zIGF1dG9jb21wbGV0ZT1vZmY+IFRhc2sgYWN0aW9uczwvbGFiZWw+PC9kaXY+PGRpdiBuZy1pZj1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09NVwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wIHAtMlwiPjxkaXYgY2xhc3M9XCJjb2wtMTIgbWItMlwiPjxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWRcIj5MYWJlbDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgbmctbW9kZWw9ZmQuTGFiZWw+IDxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWRcIj5FcnJvciBtc2c8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLkVycm9yTXNnPiA8bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkXCI+U2VhcmNoIGhlYWRlciB0ZXh0PC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1mZC5TZWFyY2hUZXh0PiA8bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkXCI+Tm8gZGF0YSBtZXNzYWdlPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzTGFuZy5Ob0RhdGFNc2c+PC9kaXY+PGRpdiBjbGFzcz1jb2wtMTI+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveCBtci0zXCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgaWQ9Y2JSZXF1aXJlZHt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1tb2RlbD1mZC5SZXF1aXJlZD4gPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgbGFiZWwteHNcIiBmb3I9Y2JSZXF1aXJlZHt7ZmQuUHJlc2VudGF0aW9uSWR9fT5SZXF1aXJlZDwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveCBtci0zXCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgaWQ9Y2JBdXRvU2VhcmNoIG5nLW1vZGVsPWZkLkF1dG9TZWFyY2g+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPWNiQXV0b1NlYXJjaD5BdXRvIHNlYXJjaDwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveCBtci0zXCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5TaG93R2V0RGF0YUJ1dHRvbiBpZD1jYlNob3dHZXREYXRhQnV0dG9ue3tmZC5QcmVzZW50YXRpb25JZH19PiA8bGFiZWwgY2xhc3M9XCJjdXN0b20tY29udHJvbC1sYWJlbCBsYWJlbC14c1wiIGZvcj1jYlNob3dHZXREYXRhQnV0dG9ue3tmZC5QcmVzZW50YXRpb25JZH19PlNob3cgR2V0IGRhdGEgYnV0dG9uPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLWNoZWNrYm94IG1yLTNcIj48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1jdXN0b20tY29udHJvbC1pbnB1dCBuZy1tb2RlbD1mZC5TaG93U2VhcmNoRm9ybSBuZy1jbGljaz1sb2NhbFZhcnMuc2hvd0hpZGVTZWFyY2hGb3JtKCkgaWQ9Y2JTaG93U2VhcmNoRm9ybT4gPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgbGFiZWwteHNcIiBmb3I9Y2JTaG93U2VhcmNoRm9ybT5TaG93IHNlYXJjaCBmb3JtPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLWNoZWNrYm94IG1yLTNcIj48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1jdXN0b20tY29udHJvbC1pbnB1dCBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlNlYXJjaEZvcm1Db2xsYXBzZWQgaWQ9Y2JTZWFyY2hGb3JtQ29sbGFwc2VkPiA8bGFiZWwgY2xhc3M9XCJjdXN0b20tY29udHJvbC1sYWJlbCBsYWJlbC14c1wiIGZvcj1jYlNlYXJjaEZvcm1Db2xsYXBzZWQ+U2VhcmNoIGZvcm0gY29sbGFwc2VkPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLWNoZWNrYm94IG1yLTNcIj48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1jdXN0b20tY29udHJvbC1pbnB1dCBpZD1jYk11bHRpbGluZSBuZy1tb2RlbD1mZC5NdWx0aWxpbmU+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPWNiTXVsdGlsaW5lPlNlbGVjdCBtdWx0aXBsZSByZWNvcmRzPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLWNoZWNrYm94IG1yLTNcIj48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1jdXN0b20tY29udHJvbC1pbnB1dCBpZD1jYkFsbFJlY29yZHMgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5Eb3dubG9hZEFsbFJlY29yZHM+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPWNiQWxsUmVjb3Jkcz5Eb3dubG9hZCBhbGwgcmVjb3JkczwvbGFiZWw+PC9kaXY+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkRlcGVuZGVudCBmaWVsZCBJZDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5EZXBlbmRlbnRGaWVsZElkPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+RGVwZW5kZW50IGZpZWxkIHR5cGU8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuRGVwZW5kZW50RmllbGRUeXBlPjxkaXYgY2xhc3M9XCJjdXN0b20tY29udHJvbCBjdXN0b20tY2hlY2tib3ggbXItM1wiPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IGlkPWNiQ2xpZW50U2lkZUZpbHRlciBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkNsaWVudFNpZGVGaWx0ZXI+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPWNiQ2xpZW50U2lkZUZpbHRlcj5DbGllbnQgc2lkZSBmaWx0ZXJpbmc8L2xhYmVsPjwvZGl2PjxkaXY+PGRpdj48dT5FdmVudHM8L3U+PC9kaXY+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkV2ZW50IGFjdGlvbjwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5FdmVudEFjdGlvbj4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkV2ZW50IHNvdXJjZSB0eXBlPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkV2ZW50U291cmNlVHlwZT4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkV2ZW50IHNvdXJjZSB3aWRnZXQgSWQ8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuRXZlbnRTb3VyY2VJZD4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkV2ZW50IG5hbWU8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuRXZlbnROYW1lPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgYnRuLWdyb3VwLXRvZ2dsZSB3LTEwMFwiIGRhdGEtdG9nZ2xlPWJ1dHRvbnM+PGxhYmVsIG5nLWNsaWNrPVwiZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlPVxcJ3RhYmxlXFwnXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCIgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZT09XFwndGFibGVcXCd9XCI+PHNwYW4gY2xhc3M9XCJmYXMgZmEtdGFibGUgbXItMlwiPjwvc3Bhbj4gPGlucHV0IHR5cGU9cmFkaW8gbmFtZT1wcmVzZW50YXRpb250eXBlIGlkPXBUeXBlMSBhdXRvY29tcGxldGU9b2ZmIGNoZWNrZWQ+IFRhYmxlPC9sYWJlbD4gPGxhYmVsIG5nLWNsaWNrPVwiZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlPVxcJ2Ryb3Bkb3duXFwnO2xvY2FsVmFycy5nZXRGb3JtRmllbGRzKCk7XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCIgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlBhcmFtZXRlcnMuUHJlc2VudGF0aW9uVHlwZT09XFwnZHJvcGRvd25cXCd9XCI+PHNwYW4gY2xhc3M9XCJmYXIgZmEtY2FyZXQtc3F1YXJlLWRvd24gbXItMlwiPjwvc3Bhbj48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXByZXNlbnRhdGlvbnR5cGUgaWQ9cFR5cGUyIGF1dG9jb21wbGV0ZT1vZmY+IERyb3Bkb3duPC9sYWJlbD4gPGxhYmVsIG5nLWNsaWNrPVwiZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlPVxcJ2NhcmRcXCdcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuUGFyYW1ldGVycy5QcmVzZW50YXRpb25UeXBlPT1cXCdjYXJkXFwnfVwiPjxzcGFuIGNsYXNzPVwiZmFyIGZhLWlkLWNhcmQgbXItMlwiPjwvc3Bhbj48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXByZXNlbnRhdGlvbnR5cGUgaWQ9cFR5cGUzIGF1dG9jb21wbGV0ZT1vZmY+IENhcmQ8L2xhYmVsPjwvZGl2PjxkaXYgbmctaWY9XCJmZC5QYXJhbWV0ZXJzLlByZXNlbnRhdGlvblR5cGU9PVxcJ3RhYmxlXFwnXCIgY2xhc3M9XCJjb2wtMjQgcC0yXCI+PGRpdiBjbGFzcz1cImNvbC0yNCBtYi0yXCI+PGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZFwiPkJ1dHRvbiBsYWJlbDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVyc0xhbmcuR2V0RGF0YUJ0bkxhYmVsPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmZC5QYXJhbWV0ZXJzLlByZXNlbnRhdGlvblR5cGU9PVxcJ2Ryb3Bkb3duXFwnXCIgY2xhc3M9XCJjb2wtMjQgcC0yXCI+PGRpdiBjbGFzcz1teS1hdXRvPjxsYWJlbCBjbGFzcz1cIm1hcmdpbkw1IGZvcm0tY29udHJvbC1sYWJlbCBuby1ib3JkZXJcIiBmb3I9e3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19IG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlclxcJyA6IChpbm5lckZvcm17e2ZkLkl0ZW1JZH19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19LiRpbnZhbGlkfVwiPlNlbGVjdCBmaWVsZHM8L2xhYmVsPjwvZGl2PjxrdC1kcm9wZG93biBuZy1tb2RlbD1mZC5OYW1lRmllbGQgc2VsZWN0ZWQtaXRlbXM9ZmQuTmFtZUZpZWxkIGlzLW11bHRpcGxlPXRydWUgbmFtZT1OYW1lRmllbGR7e2ZkLlByZXNlbnRhdGlvbklkfX0gZHJvcGRvd24taXRlbXM9bG9jYWxWYXJzLlByZXNlbnRhdGlvbkVsZW1lbnRzIGRyb3Bkb3duLWlkPVwiXFwnTmFtZUZpZWxkXFwnK2ZkLlByZXNlbnRhdGlvbklkXCIgcGFyZW50LWZvcm0taWQ9XCJcXCdpbm5lckZvcm1OYW1lRmllbGRcXCcrZmQuUHJlc2VudGF0aW9uSWRcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCBkYXRhc2V0IGZpZWxkc1xcJ1wiPjwva3QtZHJvcGRvd24+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09M1wiIGNsYXNzPVwicm93IG0tMCBwLTJcIj48ZGl2IGt0LWluaXRpYXRlLXRhc2std2lkZ2V0IGNsYXNzPWNvbC0yND48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrVmlld1Jlc291cmNlLmh0bWwnLCc8ZGl2IGNsYXNzPXdpZGdldC1oZWFkIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1hY3RpdmUgbS0yIHNoYWRvd1xcJzpmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU+MCxcXCdtLTAgYm9yZGVyLTBcXCc6KGZkLlJlbGF0ZWQ9PW51bGwgfHwgZmQuUmVsYXRlZD09dW5kZWZpbmVkKSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09Mn1cIj48ZGl2IGNsYXNzPVwicm93IG0tMCBwLTAgbWItMVwiIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1oZWFkLWFjdGl2ZVxcJzpmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU+MCxcXCdiZy1saWdodFxcJzpmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTB9XCIgbmctaWY9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MVwiPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48aSBjbGFzcz1cImZhIGZhLWV5ZSBteC0yXCI+PC9pPjxsYWJlbCB0aXRsZT1mZC5VdWlkUmVmPlZpZXcgZGF0YXNldCByZWNvcmQgKHt7ZmQuUHJlc2VudGF0aW9uSWR9fSk8L2xhYmVsPiA8YSBocmVmIHRpdGxlPXNvcnQgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LXByb3BcXCc6ZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wIHx8IGZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkfVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIHt7Z3JpZFR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIHdpZGdldC1wcm9wXCI+PGkgY2xhc3M9XCJ7e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZSBmYXMgZmEtZ3JpcC12ZXJ0aWNhbFwiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LXJpZ2h0IG15LWF1dG9cIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5zaG93UHJvcGVydGllcygxLGZhbHNlKSBuZy1jbGFzcz1cIntcXCdidG4td2FybmluZ1xcJzpmZC5QYXJhbWV0ZXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT1cXCdcXCcgJiYgZmQuUGFyYW1ldGVycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCE9dW5kZWZpbmVkLCBcXCdidG4tb3V0bGluZS1wcmltYXJ5IG5vLWJvcmRlclxcJzpmZC5QYXJhbWV0ZXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkPT1cXCdcXCcgfHwgZmQuUGFyYW1ldGVycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZD09dW5kZWZpbmVkfVwiIGNsYXNzPVwiYnRuIGJ0bi14c1wiPjxzcGFuIG5nLWlmPVwiZmQuUGFyYW1ldGVycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCE9XFwnXFwnICYmIGZkLlBhcmFtZXRlcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPXVuZGVmaW5lZFwiPnt7ZmQuUGFyYW1ldGVycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZH19PC9zcGFuPiA8c3BhbiBuZy1pZj1cImZkLlBhcmFtZXRlcnMuU2VsZWN0ZWRSZXNvdXJjZVR5cGUgJiYgKGZkLlBhcmFtZXRlcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQ9PVxcJ1xcJyB8fCBmZC5QYXJhbWV0ZXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkPT11bmRlZmluZWQpXCI+U2VsZWN0IHt7ZmQuUGFyYW1ldGVycy5TZWxlY3RlZFJlc291cmNlVHlwZX19PC9zcGFuPiA8c3BhbiBuZy1pZj1cIiFmZC5QYXJhbWV0ZXJzLlNlbGVjdGVkUmVzb3VyY2VUeXBlICYmIChmZC5QYXJhbWV0ZXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkPT1cXCdcXCcgfHwgZmQuUGFyYW1ldGVycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZD09dW5kZWZpbmVkKVwiPlNlbGVjdCByZXNvdXJjZTwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCIgbmctaWY9XCJmZC5QYXJhbWV0ZXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT1cXCdcXCcgJiYgZmQuUGFyYW1ldGVycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCE9dW5kZWZpbmVkXCI+PGEgaHJlZiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIGJ0bi1zbVwiIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1wcm9wXFwnOmZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCBmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZH1cIiB0aXRsZT1cIlNob3cvaGlkZSBwcm9wZXJ0aWVzXCIgbmctY2xpY2s9ZmQubG9jYWxWYXJzLnNob3dQcm9wZXJ0aWVzKDIsdHJ1ZSk+PGkgY2xhc3M9XCJmYXMgZmEtY29nXCI+PC9pPjwvYT4gPGEgbmctaWY9ZmFsc2UgaHJlZiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zdWNjZXNzIGJvcmRlci0wIGJ0bi1zbVwiIHRpdGxlPVwiU2hvdy9oaWRlIGZvcm1cIiBuZy1jbGljaz1cImZkLmxvY2FsVmFycy5zaG93Rm9ybT0hZmQubG9jYWxWYXJzLnNob3dGb3JtXCI+PGkgbmctY2xhc3M9XCJ7XFwnZmFzIGZhLWV5ZS1zbGFzaFxcJzohZmQubG9jYWxWYXJzLnNob3dGb3JtLFxcJ2ZhcyBmYS1leWVcXCc6ZmQubG9jYWxWYXJzLnNob3dGb3JtfVwiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxkaXYga3QtdGFzay1kcm9wZG93bj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwiZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0xXCIgZmQ9ZmQgbG9jYWwtdmFycz1mZC5sb2NhbFZhcnMga3QtZGF0YXNldC1tYXBwZXI+PC9kaXY+PGRpdiBuZy1pZj1cIiFmZC5sb2NhbFZhcnMuZm9ybUxvYWRlZCAmJiAoZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0yIHx8IGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yKVwiIGFuaW1hdGlvbi10eXBlPVwiXFwnZm9ybVxcJ1wiIGt0LXByb2Nlc3NpbmctYW5pbWF0aW9uLXRpbWVsaW5lIHNob3ctbXNnPWZhbHNlIG1lc3NhZ2U9XCJMb2FkaW5nIGZvcm0uLi5cIj48L2Rpdj48ZGl2IG5nLWlmPVwiZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQgJiYgKGZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MiB8fCBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MilcIj48ZGl2IG5nLWlmPVwiZmQuUG9wdWxhdGVNZXRob2Q9PVxcJ01cXCdcIiBjbGFzcz1tLTI+PGRpdiBjbGFzcz1cInAtMCB0ZXh0LWNlbnRlclwiPjxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiIHJvbGU9Z3JvdXAgYXJpYS1sYWJlbD1cIkZvcm0gdHlwZVwiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9XCJmZC5sb2NhbFZhcnMuU2hvd0Zvcm1UeXBlPVxcJ2RhdGFcXCdcIiBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQubG9jYWxWYXJzLlNob3dGb3JtVHlwZT09XFwnZGF0YVxcJ31cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeVwiPkRhdGEgZm9ybTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwiZmQubG9jYWxWYXJzLlNob3dGb3JtVHlwZT1cXCdzZWFyY2hcXCdcIiBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQubG9jYWxWYXJzLlNob3dGb3JtVHlwZT09XFwnc2VhcmNoXFwnfVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5XCI+U2VhcmNoIGZvcm08L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwibXQtMSBwLTIgdGV4dC1wcmltYXJ5XCIgbmctaWY9XCJmZC5sb2NhbFZhcnMuZm9ybUxvYWRlZCAmJiBmZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0Lmxlbmd0aD09MFwiPkZvcm0gaXMgbm90IGRlZmluZWQgb3IgZW1wdHk8L2Rpdj48ZGl2IG5nLXNob3c9XCJmZC5sb2NhbFZhcnMuU2hvd0Zvcm1UeXBlPT1cXCdkYXRhXFwnXCIga3QtZ3JpZCBncmlkLXR5cGU9ZmQubG9jYWxWYXJzLmdyaWRzdGVyVHlwZSByZXNvdXJjZS1mb3JtLWxvYWRlZD1mZC5sb2NhbFZhcnMuZm9ybUxvYWRlZCBwYXJlbnQtcmVzb3VyY2UtZGVmLWlkPWZkLlBhcmVudERhdGFzZXREZWZJZCByZXNvdXJjZS1yZWNvcmQtaWQ9ZmQubG9jYWxWYXJzLmRhdGFzZXRSZWNvcmRJZCByZXNvdXJjZS1kZWZpbml0aW9uPXJlc291cmNlRGVmaW5pdGlvbiBmb3JtLXBhcmFtcz1mZC5sb2NhbFZhcnMuZm9ybVBhcmFtcyBmb3JtLXBhcmFtcy1wYXJlbnQ9Zm9ybVBhcmFtcyBmb3JtLWRhdGE9XCJmb3JtRGF0YVtmZC5VdWlkUmVmXVtcXCdkYXRhXFwnXVwiIHBhcmVudD1mZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMgYWxsLWNvbHVtbnM9ZmQubG9jYWxWYXJzLmRhc2hib2FyZC53aWRnZXRzIHBhcmFtcz1mZC5QYXJhbWV0ZXJzIGNsYXNzPWt0R3JpZD48L2Rpdj48ZGl2IG5nLXNob3c9XCJmZC5sb2NhbFZhcnMuU2hvd0Zvcm1UeXBlPT1cXCdzZWFyY2hcXCdcIiBrdC1ncmlkIGdyaWQtdHlwZT1mZC5sb2NhbFZhcnMuZ3JpZHN0ZXJUeXBlIHJlc291cmNlLWZvcm0tbG9hZGVkPWZkLmxvY2FsVmFycy5zZWFyY2hGb3JtTG9hZGVkIHBhcmVudC1yZXNvdXJjZS1kZWYtaWQ9MCByZXNvdXJjZS1yZWNvcmQtaWQ9MCByZXNvdXJjZS1kZWZpbml0aW9uPXJlc291cmNlRGVmaW5pdGlvbiBmb3JtLXBhcmFtcz1mZC5sb2NhbFZhcnMuZm9ybVBhcmFtcyBmb3JtLXBhcmFtcy1wYXJlbnQ9Zm9ybVBhcmFtcyBmb3JtLWRhdGE9XCJmb3JtRGF0YVtmZC5VdWlkUmVmXVtcXCdzZWFyY2hcXCddXCIgcGFyZW50PWZkLmxvY2FsVmFycy5kYXNoYm9hcmQuc2VlYXJjaEZvcm0gYWxsLWNvbHVtbnM9ZmQubG9jYWxWYXJzLmRhc2hib2FyZC5zZWFyY2hGb3JtIHBhcmFtcz1mZC5QYXJhbWV0ZXJzIGNsYXNzPWt0R3JpZD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwibW9kYWwgZmFkZVwiIHJvbGU9ZGlhbG9nIGFyaWEtbGFiZWxsZWRieT1kYXRhc2V0TWFwcGVyTW9kYWwgaWQ9ZGF0YXNldE1hcHBlck1vZGFse3tmZC5QcmVzZW50YXRpb25JZH19IGFyaWEtaGlkZGVuPWZhbHNlPjxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtbGdcIiByb2xlPWRvY3VtZW50PjxkaXYgY2xhc3M9bW9kYWwtY29udGVudD48ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHB5LTFcIj48ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGUgZm50MTIgY29sIG14LTAgbXktMlwiPjxzcGFuPkRlZmluZSBkYXRhc2V0IG1hcHBpbmc8L3NwYW4+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9Y2xvc2UgZGF0YS1kaXNtaXNzPW1vZGFsIGFyaWEtbGFiZWw9Q2xvc2U+PHNwYW4gYXJpYS1oaWRkZW49dHJ1ZT5cXHhENzwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPW1vZGFsLWJvZHk+PGRpdiBrdC1kYXRhc2V0LXRvLWRhdGFzZXQtbWFwcGVyPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJtb2RhbCBmYWRlXCIgcm9sZT1kaWFsb2cgdGFiaW5kZXg9LTEgYXJpYS1sYWJlbGxlZGJ5PWRhdGFzZXRNYXBwZXJQYXJlbnRNb2RhbCBpZD1kYXRhc2V0TWFwcGVyUGFyZW50TW9kYWx7e2ZkLlByZXNlbnRhdGlvbklkfX0gYXJpYS1oaWRkZW49ZmFsc2U+PGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1sZ1wiIHJvbGU9ZG9jdW1lbnQ+PGRpdiBjbGFzcz1tb2RhbC1jb250ZW50PjxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcHktMVwiPjxkaXYgY2xhc3M9XCJtb2RhbC10aXRsZSBmbnQxMiBjb2wgbXgtMCBteS0yXCI+PHNwYW4+UGFyZW50IGRhdGFzZXQgc2V0dXA8L3NwYW4+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9Y2xvc2UgZGF0YS1kaXNtaXNzPW1vZGFsIGFyaWEtbGFiZWw9Q2xvc2U+PHNwYW4gYXJpYS1oaWRkZW49dHJ1ZT5cXHhENzwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPW1vZGFsLWJvZHk+PGRpdiBrdC1kYXRhc2V0LW1hcHBlci1wYXJlbnQ+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm1vZGFsIGZhZGVcIiByb2xlPWRpYWxvZyBhcmlhLWxhYmVsbGVkYnk9bWFzc1Byb3BlcnR5VXBkYXRlIGlkPW1hc3NQcm9wZXJ0eVVwZGF0ZXt7ZmQuUHJlc2VudGF0aW9uSWR9fSBhcmlhLWhpZGRlbj1mYWxzZT48ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWxnXCIgcm9sZT1kb2N1bWVudD48ZGl2IGNsYXNzPW1vZGFsLWNvbnRlbnQ+PGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBweS0xXCI+PGRpdiBjbGFzcz1cIm1vZGFsLXRpdGxlIGZudDEyIGNvbCBteC0wIG15LTJcIj48c3Bhbj5NYXNzIFByb3BlcnR5IFVwZGF0ZTwvc3Bhbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1jbG9zZSBkYXRhLWRpc21pc3M9bW9kYWwgYXJpYS1sYWJlbD1DbG9zZT48c3BhbiBhcmlhLWhpZGRlbj10cnVlPlxceEQ3PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9bW9kYWwtYm9keT48ZGl2IGt0LW1hc3MtcHJvcGVydHktdXBkYXRlLXNlbGVjdD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUYXNrVmlld1Jlc291cmNlRXhlLmh0bWwnLCc8ZGl2IGlkZD1rdFRhc2tWaWV3UmVzb3VyY2VFeGUgY2xhc3M9d2lkZ2V0LWhlYWQ+PGRpdiBuZy1pZj0hZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQgYW5pbWF0aW9uLXR5cGU9XCJcXCdmb3JtXFwnXCIga3QtcHJvY2Vzc2luZy1hbmltYXRpb24tdGltZWxpbmUgc2hvdy1tc2c9ZmFsc2UgbWVzc2FnZT1cIkxvYWRpbmcgZm9ybS4uLlwiPjwvZGl2PjxkaXYgbmctaWY9XCIoZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQgJiYgZmQubG9jYWxWYXJzLmRhdGFEb3dubG9hZGVkKSB8fCAoZmQuUG9wdWxhdGVNZXRob2Q9PVxcJ01cXCcgJiYgZmQubG9jYWxWYXJzLnNlYXJjaEZvcm1Mb2FkZWQpXCI+PGRpdiBjbGFzcz1cIm0tMiB0ZXh0LXJpZ2h0XCIgbmctaWY9ZmQubG9jYWxWYXJzLnJlc291cmNlV2lkZ2V0RGVmaW5pdGlvbi5Jc0Jsb2NrY2hhaW4+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1pZj1mZC5zaG93VHJhbnNhY3Rpb24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saW5rIG1yLTNcIiBuZy1jbGljaz1cImZkLnNob3dUcmFuc2FjdGlvbj1mYWxzZVwiPkhpZGUgdHJhbnNhY3Rpb248L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBtci0zXCIgbmctY2xpY2s9ZmQuZ2V0X3RyYW5zYWN0aW9uKCk+R2V0IHRyYW5zYWN0aW9uPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnlcIiBuZy1jbGljaz1mZC52ZXJpZnlfYmxvY2tjaGFpbl9kYXRhKCk+VmVyaWZ5IGRhdGE8L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPXAtMiBuZy1pZj1cImZkLlBvcHVsYXRlTWV0aG9kPT1cXCdNXFwnXCIgbmctc2hvdz1mZC5TaG93U2VhcmNoRm9ybT48ZGl2IGNsYXNzPVwibXktMiB0ZXh0LWNlbnRlciBib3JkZXItYm90dG9tIGg2XCIgbmctYmluZD1cImZkLlBhcmFtZXRlcnNMYW5nLlNlYXJjaEZvcm1IZWFkZXIgfHwgXFwnU2VhcmNoIGZvcm1cXCdcIj48L2Rpdj48ZGl2IGt0LWdyaWQgZ3JpZC10eXBlPTo6ZmQubG9jYWxWYXJzLmdyaWRzdGVyVHlwZSByZXNvdXJjZS1mb3JtLWxvYWRlZD1mZC5sb2NhbFZhcnMuc2VhcmNoRm9ybUxvYWRlZCBwYXJlbnQtcmVzb3VyY2UtZGVmLWlkPTAgcmVzb3VyY2UtcmVjb3JkLWlkPTAgcGFyZW50LXdpZGdldD06OmZkLlV1aWRSZWYgcmVzb3VyY2UtZGVmaW5pdGlvbj06OnJlc291cmNlRGVmaW5pdGlvbiBmb3JtLXBhcmFtcz06OmZkLmxvY2FsVmFycy5mb3JtUGFyYW1zIGZvcm0tcGFyYW1zLXBhcmVudD06OmZvcm1QYXJhbXMgZm9ybS1kYXRhPVwiZm9ybURhdGFbZmQuVXVpZFJlZitcXCctc2VhcmNoXFwnXVwiIHBhcmVudD06OmZkLmxvY2FsVmFycy5kYXNoYm9hcmQuc2VhcmNoRm9ybSBhbGwtY29sdW1ucz06OmZkLmxvY2FsVmFycy5kYXNoYm9hcmQuc2VhcmNoRm9ybSBjbGFzcz1cImt0R3JpZCBtYi0xXCI+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCBtYi0yIGJvcmRlci1ib3R0b21cIj48ZGl2IGNsYXNzPW15LTI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIHRpdGxlPVwiR2V0IGRhdGFzZXQgcmVjb3JkXCIgbmctY2xpY2s9ZmQubG9jYWxWYXJzLkdldFJlY29yZCgpPjxpIGNsYXNzPVwiZmEgZmEtY29nXCI+PC9pPiA8c3Bhbj57e2ZkLlBhcmFtZXRlcnNMYW5nLkdldFJlY29yZEJ0bkxhYmVsfX08L3NwYW4+IDxzcGFuIG5nLWlmPSFmZC5QYXJhbWV0ZXJzTGFuZy5HZXRSZWNvcmRCdG5MYWJlbD5HZXQgUmVjb3JkPC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTI0IG5nLWlmPWZkLnNob3dUcmFuc2FjdGlvbj48cHJlPnt7ZmQuQmxvY2tDaGFpblRyYW5zYWN0aW9ufX08L3ByZT48L2Rpdj48ZGl2IG5nLWlmPVwiZm9ybURhdGFbZmQuVXVpZFJlZl0ubGVuZ3RoPjBcIiBrdC1ncmlkIGdyaWQtdHlwZT06OmZkLmxvY2FsVmFycy5ncmlkc3RlclR5cGUgcmVzb3VyY2UtZm9ybS1sb2FkZWQ9ZmQubG9jYWxWYXJzLmZvcm1Mb2FkZWQgcGFyZW50LXJlc291cmNlLWRlZi1pZD06OmZkLlBhcmVudFJlc291cmNlRGVmSWQgcmVzb3VyY2UtcmVjb3JkLWlkPWZkLmxvY2FsVmFycy5yZXNvdXJjZVJlY29yZElkIHBhcmVudC13aWRnZXQ9OjpmZC5VdWlkUmVmIHJlc291cmNlLWRlZmluaXRpb249OjpyZXNvdXJjZURlZmluaXRpb24gZm9ybS1wYXJhbXM9OjpmZC5sb2NhbFZhcnMuZm9ybVBhcmFtcyBmb3JtLXBhcmFtcy1wYXJlbnQ9Ojpmb3JtUGFyYW1zIGZvcm0tZGF0YT1mb3JtRGF0YVtmZC5VdWlkUmVmXSBwYXJlbnQ9OjpmZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMgYWxsLWNvbHVtbnM9OjpmZC5sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMgY2xhc3M9a3RHcmlkPjwvZGl2PjxkaXYgY2xhc3M9XCJ2aWV3LXBhZ2VyIHRleHQtY2VudGVyXCIgbmctaWY9XCJmZC5Qb3B1bGF0ZU1ldGhvZD09XFwnTVxcJyAmJiBmZC5sb2NhbFZhcnMuaXNNdWx0aXBsZVJlY29yZHNcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5IG1yLTNcIiBuZy1kaXNhYmxlZD1cImZkLmxvY2FsVmFycy5jdXJyZW50UmVjb3JkSW5kZXg9PTBcIiBuZy1jbGljaz1mZC5sb2NhbFZhcnMuR2V0Rm9ybUFycmF5KC0xKT48aSBjbGFzcz1cImZhIGZhLWFycm93LWxlZnRcIj48L2k+PC9idXR0b24+IDxzcGFuIGNsYXNzPVwiaDYgYm9sZFwiIG5nLWJpbmQ9XCJmZC5sb2NhbFZhcnMuY3VycmVudFJlY29yZEluZGV4KzErXFwnIC8gXFwnK2ZkLmxvY2FsVmFycy5yZWNvcmRzQXJyYXkubGVuZ3RoXCI+PC9zcGFuPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5IG1sLTNcIiBuZy1kaXNhYmxlZD1cImZkLmxvY2FsVmFycy5jdXJyZW50UmVjb3JkSW5kZXg9PWZkLmxvY2FsVmFycy5yZWNvcmRzQXJyYXkubGVuZ3RoLTFcIiBuZy1jbGljaz1mZC5sb2NhbFZhcnMuR2V0Rm9ybUFycmF5KDEpPjxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctcmlnaHRcIj48L2k+PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz10ZXh0LXJpZ2h0IG5nLWlmPWZkLlBhcmFtZXRlcnMuU2hvd0F1ZGl0SW5mbz48ZGl2IGNsYXNzPXNtYWxsPjxzcGFuIG5nLWJpbmQ9ZmQubG9jYWxWYXJzLkNyZWF0ZWRCeUxhYmVsPjwvc3Bhbj48L2Rpdj48ZGl2IG5nLWlmPWZkLmxvY2FsVmFycy5IYXNDaGFuZ2VkQnkgY2xhc3M9c21hbGw+PHNwYW4gbmctYmluZD1mZC5sb2NhbFZhcnMuQ2hhbmdlZEJ5TGFiZWw+PC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRhc2tWaWV3UmVzb3VyY2VQcm9wZXJ0aWVzLmh0bWwnLCc8ZGl2IGNsYXNzPjxkaXYga3QtcHJvcGVydHktaGVhZGVyPjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBweC0wXCI+PGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZFwiPkxhYmVsPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1mZC5MYWJlbD4gPGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZFwiPkVycm9yIG1zZzwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgbmctbW9kZWw9ZmQuRXJyb3JNc2c+IDxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWRcIj5TZWFyY2hUZXh0PC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1mZC5TZWFyY2hUZXh0PjwvZGl2PjxkaXYgbmctaWY9XCJmZC5Qb3B1bGF0ZU1ldGhvZD09XFwnTVxcJ1wiPjxkaXYgY2xhc3M9bWItMj48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWwgZm9yPWNiQXV0b1NlYXJjaHt7ZmQuUHJlc2VudGF0aW9uSWR9fT48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCIgbmFtZT1jYkF1dG9TZWFyY2h7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQuQXV0b1NlYXJjaCBuZy1jaGVja2VkPWZkLkF1dG9TZWFyY2g+IEZldGNoIGRhdGEgb24gcGFnZSBsb2FkPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPW1iLTI+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYlNob3dTZWFyY2hGb3Jte3tmZC5QcmVzZW50YXRpb25JZH19PjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIiBuYW1lPWNiU2hvd1NlYXJjaEZvcm17e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctbW9kZWw9ZmQuU2hvd1NlYXJjaEZvcm0gbmctY2hlY2tlZD1mZC5TaG93U2VhcmNoRm9ybT4gU2hvdyBzZWFyY2ggZm9ybTwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1tYi0yPjxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWRcIj5TZWFyY2ggZm9ybSBoZWFkZXI8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnNMYW5nLlNlYXJjaEZvcm1IZWFkZXI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm1iLTIgY29sLWxnLTI0IHB4LTBcIiBuZy1pZj1cImZkLkF1dG9TZWFyY2ggfHwgZmQuUG9wdWxhdGVNZXRob2Q9PVxcJ0FcXCdcIj48bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkXCI+RmV0Y2ggZGF0YSBjb25kaXRpb248L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuRmV0Y2hDb25kaXRpb24+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBweC0wXCI+PGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZFwiPlJlc291cmNlSWQgSXRlbUlkPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlJlc291cmNlSWRJdGVtSWQ+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveCBteS0yXCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgaWQ9Y2JSZWxvYWREYXRhe3tmZC5QcmVzZW50YXRpb25JZH19IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuUmVmcmVzaE9uSWRDaGFuZ2U+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPWNiUmVsb2FkRGF0YXt7ZmQuUHJlc2VudGF0aW9uSWR9fT5SZWxvYWQgZGF0YSB3aGVuIGlkIGNoYW5nZXM8L2xhYmVsPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcHgtMFwiPjxkaXYgY2xhc3M9XCJjdXN0b20tY29udHJvbCBjdXN0b20tY2hlY2tib3ggbXktMlwiPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IGlkPWNiU2hvd0F1ZGl0SW5mb3t7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlNob3dBdWRpdEluZm8+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPWNiU2hvd0F1ZGl0SW5mb3t7ZmQuUHJlc2VudGF0aW9uSWR9fT5TaG93IGF1ZGl0IGluZm88L2xhYmVsPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcHgtMFwiPjxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWRcIj5DcmVhdGVkIGJ5IHRleHQ8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnNMYW5nLkNyZWF0ZWRCeVRlbXBsYXRlPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcHgtMFwiPjxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWRcIj5DaGFuZ2VkIGJ5IHRleHQ8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnNMYW5nLkNoYW5nZWRCeVRlbXBsYXRlPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMjQgcC0wIG10LTNcIj48c3BhbiBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWQgbXQtMVwiPk1lc3NhZ2UgYWZ0ZXIgc3VjY2Vzc2Z1bCBwcm9jZXNzaW5nPC9zcGFuPiA8dGV4dGFyZWEgbmctbW9kZWw9ZmQuUmVzcG9uc2VNc2cgcGxhY2Vob2xkZXI9XCJFbnRlciBtZXNzYWdlXCIgbmFtZT1yZXNwb25zZU1zZyBjbGFzcz1mb3JtLWNvbnRyb2w+XFxyXFxuXFx0XFx0XFx0ICAgIFxcclxcblxcdFxcdDwvdGV4dGFyZWE+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZkLlBvcHVsYXRlTWV0aG9kPT1cXCdNXFwnICYmICRyb290Lmdsb2JhbHMuY3VycmVudFVzZXIudWVwLlBhcmFtcy5iZXRhRmVhdHVyZXNcIj48ZGl2IG5nLWNsaWNrPVwiZmQubG9jYWxWYXJzLnNob3dTZWFyY2hGb3JtRGVwID0gIWZkLmxvY2FsVmFycy5zaG93U2VhcmNoRm9ybURlcFwiIGNsYXNzPVwiZXhwYW5kLXByb3BlcnR5LXBhbmVsIHRhZyBib3JkZXItYm90dG9tIGJvcmRlci1zdWNjZXNzIG15LTEgcHktMVwiIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIGhyZWY9I3NlYXJjaEZvcm1EZXAgcm9sZT1idXR0b24gYXJpYS1leHBhbmRlZD1mYWxzZSBhcmlhLWNvbnRyb2xzPXNlYXJjaEZvcm1EZXA+PHNwYW4gY2xhc3M9XCJjb2wgcC0wXCI+RGVmaW5lIFxcJ1NlYXJjaFxcJyBkZXBlbmRlbmNpZXM8L3NwYW4+IDxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1zaG93PWZkLmxvY2FsVmFycy5zaG93U2VhcmNoRm9ybURlcCBjbGFzcz1cImZhcyBmYS1hbmdsZS1kb3duXCI+PC9pPiA8aSBzdHlsZT1cImZvbnQtc2l6ZTogbGFyZ2U7XCIgbmctc2hvdz0hZmQubG9jYWxWYXJzLnNob3dTZWFyY2hGb3JtRGVwIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLXVwXCI+PC9pPjwvZGl2PjxkaXYgaWQ9c2VhcmNoRm9ybURlcCBjbGFzcz1cImNvbGxhcHNlIG0tMCBtdC0yXCI+PGRpdiBjbGFzcz1teS0yPjxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWRcIj5XaWRnZXQgSWQ8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLmxvY2FsVmFycy5EZXBTZWFyY2hXaWRnZXRJZD48ZGl2IGNsYXNzPW10LTE+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4teHMgYnRuLW91dGxpbmUtcHJpbWFyeVwiIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5hZGRXaWRnZXREZXAoKT48c3BhbiBjbGFzcz1cImZhIGZhLXBsdXNcIj48L3NwYW4+QWRkIHdpZGdldDwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9cC0xIG5nLXJlcGVhdD1cImRlcEVsZW1lbnQgaW4gZmQuUGFyYW1ldGVycy5TZWFyY2hGb3JtRGVwZW5kZW5jaWVzXCI+PGRpdiBjbGFzcz1teS0xPjxzcGFuPnt7JGluZGV4KzF9fS4ge3tkZXBFbGVtZW50LndpZGdldH19PC9zcGFuPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1vdXRsaW5lLWRhbmdlciBtbC0yXCIgbmctY2xpY2s9ZmQubG9jYWxWYXJzLnJlbW92ZVdpZGdldERlcCgkaW5kZXgpPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBrdC13aWRnZXQtZGF0YS1zb3VyY2UtZGVmPjwvZGl2PjxkaXYgaWRkPVBMQUNFSE9MREVSUFJPUEVSVElFUyBrdC1wcm9jLXBoLXByb3BlcnR5PjwvZGl2PjxkaXYga3QtZmllbGQtYWR2YW5jZWQtcHJvcGVydGllcz48L2Rpdj48ZGl2IGNsYXNzPVwibXktMiB0ZXh0LWNlbnRlclwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJ3LTEwMCBidG4gYnRuLXhzIGJ0bi1wcmltYXJ5XCIgZGF0YS10b2dnbGU9bW9kYWwgZGF0YS10YXJnZXQ9I2RhdGFzZXRNYXBwZXJNb2RhbHt7ZmQuUHJlc2VudGF0aW9uSWR9fT48c3Bhbj5Db3B5IGRhdGEgZnJvbSBvdGhlciBkYXRhc2V0czwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwibXktMiB0ZXh0LWNlbnRlclwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJ3LTEwMCBidG4gYnRuLXhzIGJ0bi1wcmltYXJ5XCIgZGF0YS10b2dnbGU9bW9kYWwgZGF0YS10YXJnZXQ9I2RhdGFzZXRNYXBwZXJQYXJlbnRNb2RhbHt7ZmQuUHJlc2VudGF0aW9uSWR9fT48c3Bhbj5EZWZpbmUgcGFyZW50IGRhdGFzZXQ8L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1cIm15LTIgdGV4dC1jZW50ZXJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi14cyBidG4tcHJpbWFyeVwiIGRhdGEtdG9nZ2xlPW1vZGFsIGRhdGEtdGFyZ2V0PSNtYXNzUHJvcGVydHlVcGRhdGV7e2ZkLlByZXNlbnRhdGlvbklkfX0+PHNwYW4+TWFzcyB1cGRhdGU8L3NwYW4+PC9idXR0b24+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGFza1dpZGdldC5odG1sJywnPGRpdiBrdC10YXNrLXByb2MtZGlyZWN0aXZlIGZkPWZkIGxvY2FsLXZhcnM9bG9jYWxWYXJzIHRhc2stZGVmaW5pdGlvbj1sb2NhbFZhcnMudGFza0RlZmluaXRpb24gbmctaGlkZT1cImdzcnZjLmdldE9wZW5UYXNrVHlwZSgpPT1cXCduZXdQYWdlXFwnXCIgbmctaWY9IWxvY2FsVmFycy5SZWxvYWRUYXNrPjwvZGl2PjxkaXYgbmctaWY9XCJnc3J2Yy5nZXRPcGVuVGFza1R5cGUoKT09XFwnbmV3UGFnZVxcJ1wiIG5nLWluaXQ9b3BlblRhc2tJbk5ld1BhZ2UoKT48ZGl2IGNsYXNzPWNvbGxhcHNlIG5nLWNsYXNzPVwie1xcJ3Nob3dcXCc6Z3NydmMuZ2V0T3BlblRhc2tUeXBlKCk9PVxcJ25ld1BhZ2VcXCd9XCI+PGRpdiBrdC10YXNrLXByb2MtZGlyZWN0aXZlIGZkPWZkIGxvY2FsLXZhcnM9b3BlbmVkVGFza0luTmV3UGFnZS5sb2NhbFZhcnMgdGFzay1kZWZpbml0aW9uPW9wZW5lZFRhc2tJbk5ld1BhZ2UudGFza0RlZmluaXRpb24+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGV4dGJveC5odG1sJywnPG5nLWZvcm0gY2xhc3MgbmFtZT1cImlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX1cIiBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZFxcJyA6IChpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJHRvdWNoZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJGRpcnR5KSAmJiBpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kaW52YWxpZCxcXCdpcy12YWxpZFxcJyA6IChpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJHRvdWNoZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJGRpcnR5KSAmJiBpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kdmFsaWR9XCIgbm92YWxpZGF0ZT48ZGl2IGNsYXNzPVwicm93IHBiLTEgbS0wIGRhdGFzZXQtaXRlbVwiIG5nLWlmPVwiZmQuU2hvd0ZpZWxkIHx8IChmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MilcIiBuZy1jbGFzcz1cIntcXCdiZy1ncmF5LTIwIGJvcmRlciBzaGFkb3dcXCc6Zm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTIgJiYgZmQ9PWdzcnZjLmdldFNlbGVjdGVkRmQoKSAmJiBnc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKX1cIj48ZGl2IG5nLWhpZGU9XCIoZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGU9PTIgfHwgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTIpICYmIGZkLlBhcmFtZXRlcnMuSGlkZUxhYmVsXCIgc3R5bGU9e3tmZC5sYWJlbEFsaWdufX0gY2xhc3M9e3tmZC5ncmlkQ2xhc3NMYWJlbH19IG5nLWNsYXNzPVwie1xcJ2NvbC1hdXRvXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZX1cIj48bGFiZWwga3Qtc3R5bGUtYXR0cmlidXRlIGZkPWZkIHN0eWxlLXR5cGU9XCJcXCdsYWJlbFxcJ1wiIHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVMYWJlbH19IGZvcj1cInt7ZmQuTmFtZX19e3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fVwiIGNsYXNzPVwicC0wIG1hcmdpbkw1IGZvcm0tY29udHJvbC1sYWJlbCBuby1ib3JkZXIgYWxpZ24tbWlkZGxlXCIgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kaW52YWxpZCxcXCdjdXN0b20tZWwtbGF5b3V0LXN0eWxlXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MX1cIj57e2ZkLkxhYmVsfX0gPHNwYW4gY2xhc3M9XCJtbC0yIGJhZGdlIGJhZGdlLWluZm9cIiBuZy1pZj0hZmQuU2hvd0ZpZWxkPmhpZGRlbjwvc3Bhbj48L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9XCJ7e2ZkLmdyaWRDbGFzc0VsZW1lbnR9fSBteS1hdXRvXCI+PGRpdiBuZy1jbGFzcz1cIntcXCdjdXN0b20tZWwtbGF5b3V0LXN0eWxlIGNvbC1hdXRvXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSxcXCdjb2wtYXV0b1xcJzogZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlIT0xfVwiIG5nLWlmPVwiIWZkLk11bHRpbGluZSAmJiAhZmQuUmVhZE9ubHlcIj48ZGl2IGNsYXNzPjxpbnB1dCBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2VsZW1lbnRcXCdcIiBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlRWxlbWVudH19IHR5cGU9dGV4dCB0YWJpbmRleD17e2lucHV0QXJyYXkuVGFiSW5kZXh9fSBuZy1wYXR0ZXJuPWZkLlBhcmFtZXRlcnMuUmVnZXggbmctbW9kZWw9Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSBuZy1jaGFuZ2U9bG9jYWxWYXJzLnJlZnJlc2hTZWFyY2hWYWx1ZSgpIG5nLXJlcXVpcmVkPWZkLlJlcXVpcmVkIHBsYWNlaG9sZGVyPXt7ZmQuU2VhcmNoVGV4dH19IG5hbWU9XCJ7e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX1cIiBjbGFzcz1mb3JtLWNvbnRyb2wgbmctbW9kZWwtb3B0aW9ucz1cInsgZGVib3VuY2U6IDI1MCB9XCIgbmctYmx1cj1vbl9ibHVyX2FjdGlvbigpIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlciBpcy1pbnZhbGlkXFwnIDogKGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJGludmFsaWQgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPTF9XCI+PHAgbmctaGlkZT1cImZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xXCIgbmctY2xhc3M9XCJ7XFwnaW52YWxpZC10b29sdGlwIHJpZ2h0LTBcXCc6ZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PVxcJ3Rvb2x0aXBcXCcgfHwgZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PXVuZGVmaW5lZCxcXCdpbnZhbGlkLWZlZWRiYWNrXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCdmZWVkYmFja1xcJ31cIj57e2ZkLkVycm9yTXNnfX08L3A+PC9kaXY+PC9kaXY+PGRpdiBuZy1jbGFzcz1cIntcXCdjb2wtYXV0b1xcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemV9XCIgbmctaWY9XCJmZC5NdWx0aWxpbmUgJiYgIWZkLlJlYWRPbmx5XCI+PGRpdiBjbGFzcz48dGV4dGFyZWEga3Qtc3R5bGUtYXR0cmlidXRlIGZkPWZkIHN0eWxlLXR5cGU9XCJcXCdlbGVtZW50XFwnXCIgc3R5bGU9e3tmZC5jdXN0b21TdHlsZUVsZW1lbnR9fTsgdGFiaW5kZXg9e3tpbnB1dEFycmF5LlRhYkluZGV4fX0gcm93cz17e2ZkLlBhcmFtZXRlcnMuTnVtYmVyUm93c319IG5nLW1vZGVsPWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0gbmctY2hhbmdlPVwiZmQuU2hvd1NlYXJjaEZvcm0/cmVmcmVzaFNlYXJjaFZhbHVlKCk6ZmQuU2VhcmNoPW51bGxcIiBuZy1yZXF1aXJlZD1mZC5SZXF1aXJlZCBwbGFjZWhvbGRlcj17e2ZkLlNlYXJjaFRleHR9fSBuYW1lPVwie3tmZC5OYW1lfX17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19XCIgbmctbW9kZWwtb3B0aW9ucz1cInsgZGVib3VuY2U6IDI1MCB9XCIgbmctYmx1cj1vbl9ibHVyX2FjdGlvbigpIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlciBpcy1pbnZhbGlkXFwnIDogKGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJGludmFsaWQgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPTF9XCIgY2xhc3M9Zm9ybS1jb250cm9sPlxcclxcblxcdFxcdCAgICA8L3RleHRhcmVhPjxwIG5nLWhpZGU9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MVwiIG5nLWNsYXNzPVwie1xcJ2ludmFsaWQtdG9vbHRpcCByaWdodC0wXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCd0b29sdGlwXFwnIHx8IGZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT11bmRlZmluZWQsXFwnaW52YWxpZC1mZWVkYmFja1xcJzpmZC5QYXJhbWV0ZXJzLkVycm9yTXNnVHlwZT09XFwnZmVlZGJhY2tcXCd9XCI+e3tmZC5FcnJvck1zZ319PC9wPjwvZGl2PjwvZGl2PjxkaXYga3Qtc3R5bGUtYXR0cmlidXRlIGZkPWZkIHN0eWxlLXR5cGU9XCJcXCdlbGVtZW50XFwnXCIgbmctaWY9ZmQuUmVhZE9ubHkgbmctY2xhc3M9XCJ7XFwnY3VzdG9tLWVsLWxheW91dC1zdHlsZSBjb2wtYXV0b1xcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEsXFwnY29sLWF1dG9cXCc6IGZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSE9MX1cIiBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlRWxlbWVudH19PjxkaXYgY2xhc3M9XCJtYi0wIGJvcmRlciBwLTEgcm91bmRlZFwiIHN0eWxlPVwibWluLWhlaWdodDogMzVweDtcIj57e2Zvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV19fTwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9XCJ2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudFwiIGNsYXNzPVwiYmx1ZS1kcm9wZG93biByb3VuZGVkIHNoYWRvd1wiPjxkaXYgY2xhc3M9XCJlbGVtZW50LXByb3BlcnRpZXMtYnRucyBiZy1wcmltYXJ5IHJvdW5kZWQgc2hhZG93XCIgbmctaWY9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSAmJiBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZSE9MlwiPjxzcGFuIGNsYXNzPVwibGFiZWwgbGFiZWwteHMgdGV4dC13aGl0ZSBteC0xIGJvbGRcIj57e2ZkLk5hbWV9fTwvc3Bhbj4gPGEgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIHByb3AtYnRuIGVsZW1lbnQtZHJhZy1oYW5kbGVcIiB0aXRsZT1tb3ZlIGhyZWY+PGkgY2xhc3M9XCJmYSBmYS1ncmlwLXZlcnRpY2FsIGVsZW1lbnQtZHJhZy1oYW5kbGVcIj48L2k+PC9hPiA8YSBuZy1jbGljaz1cImZkLlNob3dGaWVsZD0hZmQuU2hvd0ZpZWxkXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIGJvcmRlci0wIHByb3AtYnRuXCIgdGl0bGU9c2hvd2hpZGUgaHJlZj48aSBuZy1jbGFzcz1cIntcXCdmYSBmYS1leWVcXCc6IGZkLlNob3dGaWVsZCwgXFwnZmEgZmEtZXllLXNsYXNoXFwnOiAhZmQuU2hvd0ZpZWxkfVwiPjwvaT48L2E+IDxhIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi14cyBwcm9wLWJ0blwiIGhyZWYgdGl0bGU9XCJGaWVsZCBwcm9wZXJ0aWVzXCIgZGF0YS10b2dnbGU9dG9vbHRpcCBkYXRhLXBsYWNlbWVudD10b3AgbmctY2xpY2s9c2hvd1Byb3BlcnRpZXMoJGV2ZW50KT48aSBjbGFzcz1cImZhIGZhLWNvZ1wiPjwvaT48L2E+IDxhIG5nLWlmPWdzcnZjLnNob3dGaWx0ZXIobXlzY29wZSkgaWQ9c2VhcmNoLWZpbHRlci17e2ZkLlByZXNlbnRhdGlvbklkfX0gZGF0YS10b2dnbGU9ZHJvcGRvd24gYXJpYS1oYXNwb3B1cD10cnVlIGFyaWEtZXhwYW5kZWQ9ZmFsc2UgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIHByb3AtYnRuXCIgaHJlZj48aSBjbGFzcz1cImZhIGZhLWZpbHRlciBtci0xIHt7ZmQuU2VhcmNoLmljb259fSBtci0xXCIgdGl0bGU9XCJGaWx0ZXIgOiB7e2ZkLlNlYXJjaC5uYW1lfX1cIj48L2k+e3tmZC5TZWFyY2gubmFtZX19PC9hPjxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IHNoYWRvdyBwLTAgZHJvcGRvd24tbWF4LWNvbnRlbnQtd2lkdGhcIiBzdHlsZT1cIm1pbi13aWR0aDowcHggIWltcG9ydGFudFwiIGFyaWEtbGFiZWxsZWRieT1zZWFyY2gtZmlsdGVyLXt7ZmQuUHJlc2VudGF0aW9uSWR9fT48ZGl2IGNsYXNzPWJ0bi1ncm91cC12ZXJ0aWNhbCByb2xlPWdyb3VwIGFyaWEtbGFiZWw9XCJTZWFyY2ggZmlsdGVyXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG0tc20gYnRuLWxpZ2h0XCIgbmctY2xpY2s9YXBwbHlUZXh0RmlsdGVycygwKSBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuU2VhcmNoLmZpbHRlcj09XFwnYmVnaW5zXFwnfVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1yaWdodFwiPjwvc3Bhbj4ge3tmZC5sb2NhbFZhcnMuc2VhcmNoWzBdLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseVRleHRGaWx0ZXJzKDEpIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpmZC5TZWFyY2guZmlsdGVyPT1cXCdjb250YWluc1xcJ31cIj48c3BhbiBjbGFzcz1cImZhIGZhLWV4cGFuZFwiPjwvc3Bhbj4ge3tmZC5sb2NhbFZhcnMuc2VhcmNoWzFdLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseVRleHRGaWx0ZXJzKDIpIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpmZC5TZWFyY2guZmlsdGVyPT1cXCdlbmRzXFwnfVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1sZWZ0XCI+PC9zcGFuPiB7e2ZkLmxvY2FsVmFycy5zZWFyY2hbMl0ubmFtZX19PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5VGV4dEZpbHRlcnMoMykgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ2VxXFwnfVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtYmFyc1wiPjwvc3Bhbj4ge3tmZC5sb2NhbFZhcnMuc2VhcmNoWzNdLm5hbWV9fTwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvbmctZm9ybT4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUZXh0Ym94RXhlLmh0bWwnLCc8ZGl2IG5nLWZvcm09aW5uZXJGb3Jte3tmZC5JdGVtSWR9fSBjbGFzcz1cInJvdyBtLTAgbXQtMSBkYXRhc2V0LWl0ZW1cIiBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZFxcJyA6IChpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0ue3s6OmZkLk5hbWV9fXt7OjpmZC5JdGVtSWR9fS4kdG91Y2hlZCB8fCBpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0ue3s6OmZkLk5hbWV9fXt7OjpmZC5JdGVtSWR9fS4kZGlydHkpICYmIGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS57ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19LiRpbnZhbGlkLFxcJ2lzLXZhbGlkXFwnIDogKGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS57ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19LiR0b3VjaGVkIHx8IGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS57ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19LiRkaXJ0eSkgJiYgaW5uZXJGb3Jte3s6OmZkLkl0ZW1JZH19Lnt7OjpmZC5OYW1lfX17ezo6ZmQuSXRlbUlkfX0uJHZhbGlkfVwiIG5nLWlmPTo6ZmQuU2hvd0ZpZWxkPjxkaXYgbmctaGlkZT06OmZkLlBhcmFtZXRlcnMuSGlkZUxhYmVsIGNsYXNzPXt7ZmQuZ3JpZENsYXNzTGFiZWx9fSBzdHlsZT17e2ZkLmxhYmVsQWxpZ259fSBuZy1jbGFzcz1cIntcXCdjb2wtYXV0b1xcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemV9XCI+PGxhYmVsIGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnbGFiZWxcXCdcIiBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlTGFiZWx9fSBjbGFzcz1cIm1hcmdpbkw1IGZvcm0tY29udHJvbC1sYWJlbCBuby1ib3JkZXIgYWxpZ24tbWlkZGxlXCIgZm9yPXt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fSBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiAoaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17e2ZkLkl0ZW1JZH19LiRpbnZhbGlkLFxcJ2N1c3RvbS1lbC1sYXlvdXQtc3R5bGVcXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xfVwiPnt7ZmQuTGFiZWx9fTwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1cInt7ZmQuZ3JpZENsYXNzRWxlbWVudH19IG15LWF1dG9cIj48ZGl2IG5nLWNsYXNzPVwie1xcJ2N1c3RvbS1lbC1sYXlvdXQtc3R5bGUgY29sLWF1dG9cXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xLFxcJ2NvbC1hdXRvXFwnOiBmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPTF9XCIgbmctaWY9XCIhZmQuTXVsdGlsaW5lICYmICFmZC5SZWFkT25seVwiPjxkaXYgY2xhc3M+PGlucHV0IGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnZWxlbWVudFxcJ1wiIHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVFbGVtZW50fX0gdHlwZT10ZXh0IHRhYmluZGV4PXt7aW5wdXRBcnJheS5UYWJJbmRleH19IG5nLXBhdHRlcm49OjpmZC5QYXJhbWV0ZXJzLlJlZ2V4IG5nLW1vZGVsPWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0gbmctY2hhbmdlPWxvY2FsVmFycy5yZWZyZXNoU2VhcmNoVmFsdWUoKSBuZy1yZXF1aXJlZD06OmZkLlJlcXVpcmVkIHBsYWNlaG9sZGVyPXt7OjpmZC5TZWFyY2hUZXh0fX0gbmFtZT17ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19IGNsYXNzPWZvcm0tY29udHJvbCB0aXRsZT17e2Zvcm1EYXRhWzBdLmZvcm1EYXRhQmxvY2tjaGFpblswXVtmZC5GaWVsZE5hbWVdfX0gbmctbW9kZWwtb3B0aW9ucz1cInsgZGVib3VuY2U6IDI1MCB9XCIgbmctYmx1cj1vbl9ibHVyX2FjdGlvbigpIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlciBpcy1pbnZhbGlkXFwnIDogKGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS57ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0ue3s6OmZkLk5hbWV9fXt7OjpmZC5JdGVtSWR9fS4kaW52YWxpZCB9XCI+PHAgY2xhc3M9bm9wcmludCBuZy1jbGFzcz1cIntcXCdpbnZhbGlkLXRvb2x0aXAgcmlnaHQtMFxcJzpmZC5QYXJhbWV0ZXJzLkVycm9yTXNnVHlwZT09XFwndG9vbHRpcFxcJyB8fCBmZC5QYXJhbWV0ZXJzLkVycm9yTXNnVHlwZT09dW5kZWZpbmVkLFxcJ2ludmFsaWQtZmVlZGJhY2tcXCc6ZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PVxcJ2ZlZWRiYWNrXFwnfVwiPnt7OjpmZC5FcnJvck1zZ319PC9wPjwvZGl2PjwvZGl2PjxkaXYgbmctY2xhc3M9XCJ7XFwnY3VzdG9tLWVsLWxheW91dC1zdHlsZSBjb2wtYXV0b1xcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEsXFwnY29sLWF1dG9cXCc6IGZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSE9MX1cIiBuZy1pZj1cImZkLk11bHRpbGluZSAmJiAhZmQuUmVhZE9ubHlcIj48ZGl2IGNsYXNzPjx0ZXh0YXJlYSBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2VsZW1lbnRcXCdcIiBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlRWxlbWVudH19IHRhYmluZGV4PXt7OjppbnB1dEFycmF5LlRhYkluZGV4fX0gcm93cz17ezo6ZmQuUGFyYW1ldGVycy5OdW1iZXJSb3dzfX0gbmctbW9kZWw9Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSBuZy1jaGFuZ2U9XCJmZC5TaG93U2VhcmNoRm9ybT9yZWZyZXNoU2VhcmNoVmFsdWUoKTpmZC5TZWFyY2g9bnVsbFwiIG5nLXJlcXVpcmVkPTo6ZmQuUmVxdWlyZWQgcGxhY2Vob2xkZXI9e3s6OmZkLlNlYXJjaFRleHR9fSBuYW1lPXt7OjpmZC5OYW1lfX17ezo6ZmQuSXRlbUlkfX0gbmctbW9kZWwtb3B0aW9ucz1cInsgZGVib3VuY2U6IDI1MCB9XCIgbmctYmx1cj1vbl9ibHVyX2FjdGlvbigpIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlciBpcy1pbnZhbGlkXFwnIDogKGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS57ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0ue3s6OmZkLk5hbWV9fXt7OjpmZC5JdGVtSWR9fS4kaW52YWxpZCB9XCIgY2xhc3M9Zm9ybS1jb250cm9sPlxcblxcdFxcdCAgICA8L3RleHRhcmVhPjxwIGNsYXNzPW5vcHJpbnQgbmctY2xhc3M9XCJ7XFwnaW52YWxpZC10b29sdGlwIHJpZ2h0LTBcXCc6ZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PVxcJ3Rvb2x0aXBcXCcgfHwgZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PXVuZGVmaW5lZCxcXCdpbnZhbGlkLWZlZWRiYWNrXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCdmZWVkYmFja1xcJ31cIj57ezo6ZmQuRXJyb3JNc2d9fTwvcD48L2Rpdj48L2Rpdj48ZGl2IGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnZWxlbWVudFxcJ1wiIG5nLWlmPWZkLlJlYWRPbmx5IG5nLWNsYXNzPVwie1xcJ2N1c3RvbS1lbC1sYXlvdXQtc3R5bGUgY29sLWF1dG9cXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xLFxcJ2NvbC1hdXRvXFwnOiBmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPTF9XCIgc3R5bGU9e3tmZC5jdXN0b21TdHlsZUVsZW1lbnR9fT48ZGl2IHRpdGxlPXt7Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXX19IG5nLWNsYXNzPVwie1xcJ2Zvcm0tY29udHJvbFxcJzpmZC5QYXJhbWV0ZXJzLkJvcmRlckZvclJlYWRPbmx5fVwiIGNsYXNzPW1iLTE+e3tmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdfX08L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiZHJvcGxlZnQgZWxlbWVudC1wcm9wZXJ0aWVzLWJ0bnMgYmctcHJpbWFyeSByb3VuZGVkIHNoYWRvdyBub3ByaW50XCIgbmctaWY9OjpzaG93U2VhcmNoRmlsdGVycz48YSBpZD1zZWFyY2gtZmlsdGVyLXt7OjpmZC5JdGVtSWR9fSBkYXRhLXRvZ2dsZT1kcm9wZG93biBhcmlhLWhhc3BvcHVwPXRydWUgYXJpYS1leHBhbmRlZD1mYWxzZSB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4teHMgcHJvcC1idG5cIiBocmVmPjxpIGNsYXNzPVwiZmEgZmEtZmlsdGVyIHt7ZmQuU2VhcmNoLmljb259fSBtci0xXCIgdGl0bGU9XCJGaWx0ZXIgOiB7e2ZkLlNlYXJjaC5uYW1lfX1cIj48L2k+e3tmZC5TZWFyY2gubmFtZX19PC9hPjxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IHNoYWRvdyBwLTAgZHJvcGRvd24tbWF4LWNvbnRlbnQtd2lkdGhcIiBzdHlsZT1cIm1pbi13aWR0aDowcHggIWltcG9ydGFudFwiIGFyaWEtbGFiZWxsZWRieT1zZWFyY2gtZmlsdGVyLXt7OjpmZC5JdGVtSWR9fT48ZGl2IG5nLWlmPWZkLmxvY2FsVmFycy5maWx0ZXJSZWFkeSBjbGFzcz1idG4tZ3JvdXAtdmVydGljYWwgcm9sZT1ncm91cCBhcmlhLWxhYmVsPVwiU2VhcmNoIGZpbHRlclwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5VGV4dEZpbHRlcnMoMCkgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ2JlZ2luc1xcJ31cIj48c3BhbiBjbGFzcz1cImZhIGZhLWNoZXZyb24tcmlnaHRcIj48L3NwYW4+IHt7OjpmZC5sb2NhbFZhcnMuc2VhcmNoWzBdLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseVRleHRGaWx0ZXJzKDEpIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpmZC5TZWFyY2guZmlsdGVyPT1cXCdjb250YWluc1xcJ31cIj48c3BhbiBjbGFzcz1cImZhIGZhLWV4cGFuZFwiPjwvc3Bhbj4ge3s6OmZkLmxvY2FsVmFycy5zZWFyY2hbMV0ubmFtZX19PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWFwcGx5VGV4dEZpbHRlcnMoMikgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ2VuZHNcXCd9XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1jaGV2cm9uLWxlZnRcIj48L3NwYW4+IHt7OjpmZC5sb2NhbFZhcnMuc2VhcmNoWzJdLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseVRleHRGaWx0ZXJzKDMpIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpmZC5TZWFyY2guZmlsdGVyPT1cXCdlcVxcJ31cIj48c3BhbiBjbGFzcz1cImZhIGZhLWJhcnNcIj48L3NwYW4+IHt7OjpmZC5sb2NhbFZhcnMuc2VhcmNoWzNdLm5hbWV9fTwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRleHRib3hQcm9wZXJ0aWVzLmh0bWwnLCc8ZGl2IGNsYXNzPXB4LTE+PGRpdiBrdC1wcm9wZXJ0eS1oZWFkZXI+PC9kaXY+PGRpdiBrdC1maWVsZC1iYXNpYy1wcm9wZXJ0aWVzPjwvZGl2PjxkaXYga3QtZmllbGQtZXh0ZW5kZWQtcHJvcGVydGllcz48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUaW1lLmh0bWwnLCc8ZGl2IG5nLWZvcm09aW5uZXJGb3Jte3tmZC5JdGVtSWR9fSBjbGFzcz1cInJvdyBwYi0xIG0tMCBmb3JtLWdyb3VwIG1iLTEgZGF0YXNldC1pdGVtXCIgbmctaWY9XCJmZC5TaG93RmllbGQgfHwgKGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xICYmIGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlIT0yKVwiPjxkaXYgbmctaGlkZT1cIihmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZT09MiB8fCBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MikgJiYgZmQuUGFyYW1ldGVycy5IaWRlTGFiZWxcIiBzdHlsZT17e2ZkLmxhYmVsQWxpZ259fSBjbGFzcz17e2ZkLmdyaWRDbGFzc0xhYmVsfX0gbmctY2xhc3M9XCJ7XFwnY29sLWF1dG9cXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplfVwiPjxsYWJlbCBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2xhYmVsXFwnXCIgc3R5bGU9e3tmZC5jdXN0b21TdHlsZUxhYmVsfX0gZm9yPVwie3tmZC5OYW1lfX17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19XCIgY2xhc3M9XCJwLTAgbWFyZ2luTDUgZm9ybS1jb250cm9sLWxhYmVsIG5vLWJvcmRlciBhbGlnbi1taWRkbGVcIiBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiAoaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiRpbnZhbGlkLFxcJ2N1c3RvbS1lbC1sYXlvdXQtc3R5bGVcXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xfVwiPnt7ZmQuTGFiZWx9fTwvbGFiZWw+PC9kaXY+PGRpdiBzdHlsZT17e2ZkLmxhYmVsQWxpZ259fSBjbGFzcz17e2ZkLmdyaWRDbGFzc0VsZW1lbnR9fSBuZy1jbGFzcz1cIntcXCdjb2wtYXV0b1xcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemV9XCI+PGRpdiBuZy1pZj0hZmQuUmVhZE9ubHkgY2xhc3M+PGlucHV0IGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBtaW49e3tmZC5NYXh9fSBrdC10aW1lLXBhcnNlciBtYXg9e3tmZC5NaW59fSBzdGVwPXt7ZmQuU3RlcH19IHN0eWxlLXR5cGU9XCJcXCdlbGVtZW50XFwnXCIgc3R5bGU9e3tmZC5jdXN0b21TdHlsZUVsZW1lbnR9fSB0eXBlPXRpbWUgY2xhc3M9Zm9ybS1jb250cm9sIGFyaWEtZGVzY3JpYmVkYnk9XCJ0aW1le3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fVwiIG5nLWNsYXNzPVwie1xcJ3RleHQtZGFuZ2VyIGlzLWludmFsaWRcXCc6IChpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiRpbnZhbGlkfVwiIHBsYWNlaG9sZGVyPXt7ZmQuUGFyYW1ldGVyc0xhbmcuZm9ybWF0MS5uYW1lfX0gbmctbW9kZWw9Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSBuZy1jaGFuZ2U9ZmQub25fY2hhbmdlX2FjdGlvbigpIG5hbWU9XCJ7e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX1cIiBuZy1yZXF1aXJlZD1mZC5SZXF1aXJlZCBjbG9zZS10ZXh0PUNsb3NlPjxwIGNsYXNzPW5vcHJpbnQgbmctY2xhc3M9XCJ7XFwnaW52YWxpZC10b29sdGlwIHJpZ2h0LTBcXCc6ZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PVxcJ3Rvb2x0aXBcXCcgfHwgZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PXVuZGVmaW5lZCxcXCdpbnZhbGlkLWZlZWRiYWNrXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCdmZWVkYmFja1xcJ31cIj57e2ZkLkVycm9yTXNnfX08L3A+PC9kaXY+PGRpdiBuZy1pZj1mZC5SZWFkT25seSBzdHlsZT1cIm1pbi13aWR0aDogMTUwcHggIWltcG9ydGFudFwiPjxkaXYgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbWItMVwiPnt7Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSB8IGRhdGU6IGZkLmxvY2FsVmFycy5mb3JtYXQubmFtZX19PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImVsZW1lbnQtcHJvcGVydGllcy1idG5zIGJnLXByaW1hcnkgcm91bmRlZCBzaGFkb3dcIiBuZy1pZj1cImZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xICYmIGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlIT0yXCI+PHNwYW4gY2xhc3M9XCJsYWJlbCBsYWJlbC14cyB0ZXh0LXdoaXRlIG1sLTEgYm9sZFwiPnt7ZmQuTmFtZX19PC9zcGFuPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi14cyBwcm9wLWJ0biBlbGVtZW50LWRyYWctaGFuZGxlXCIgdGl0bGU9c29ydD48aSBjbGFzcz1cImVsZW1lbnQtZHJhZy1oYW5kbGUgZmEgZmEtZ3JpcC12ZXJ0aWNhbFwiPjwvaT48L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4teHMgcHJvcC1idG5cIiB0aXRsZT1cIkZpZWxkIHByb3BlcnRpZXNcIiBuZy1jbGljaz1zaG93UHJvcGVydGllcygpPjxpIGNsYXNzPVwiZmEgZmEtY29nXCI+PC9pPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFRpbWVFeGUuaHRtbCcsJzxkaXYgbmctZm9ybT1pbm5lckZvcm17e2ZkLkl0ZW1JZH19IGNsYXNzPVwicm93IHBiLTEgbS0wIGZvcm0tZ3JvdXAgbWItMSBkYXRhc2V0LWl0ZW1cIiBuZy1pZj1cImZkLlNob3dGaWVsZCB8fCAoZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTIpXCI+PGRpdiBuZy1oaWRlPVwiKGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlPT0yIHx8IGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yKSAmJiBmZC5QYXJhbWV0ZXJzLkhpZGVMYWJlbFwiIHN0eWxlPXt7ZmQubGFiZWxBbGlnbn19IGNsYXNzPXt7ZmQuZ3JpZENsYXNzTGFiZWx9fSBuZy1jbGFzcz1cIntcXCdjb2wtYXV0b1xcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemV9XCI+PGxhYmVsIGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnbGFiZWxcXCdcIiBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlTGFiZWx9fSBmb3I9e3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19IGNsYXNzPVwicC0wIG1hcmdpbkw1IGZvcm0tY29udHJvbC1sYWJlbCBuby1ib3JkZXIgYWxpZ24tbWlkZGxlXCIgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZH19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS4kaW52YWxpZCxcXCdjdXN0b20tZWwtbGF5b3V0LXN0eWxlXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MX1cIj57e2ZkLkxhYmVsfX08L2xhYmVsPjwvZGl2PjxkaXYgc3R5bGU9e3tmZC5sYWJlbEFsaWdufX0gY2xhc3M9e3tmZC5ncmlkQ2xhc3NFbGVtZW50fX0gbmctY2xhc3M9XCJ7XFwnY29sLWF1dG9cXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplfVwiPjxkaXYgbmctaWY9IWZkLlJlYWRPbmx5IGNsYXNzPjxpbnB1dCBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgbWluPXt7ZmQuTWF4fX0ga3QtdGltZS1wYXJzZXIgbWF4PXt7ZmQuTWlufX0gc3RlcD17e2ZkLlN0ZXB9fSBzdHlsZS10eXBlPVwiXFwnZWxlbWVudFxcJ1wiIHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVFbGVtZW50fX0gdHlwZT10aW1lIGNsYXNzPWZvcm0tY29udHJvbCBhcmlhLWRlc2NyaWJlZGJ5PXRpbWV7e2ZkLkl0ZW1JZH19IG5nLWNsYXNzPVwie1xcJ3RleHQtZGFuZ2VyIGlzLWludmFsaWRcXCc6IChpbm5lckZvcm17e2ZkLkl0ZW1JZH19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19LiRpbnZhbGlkfVwiIHBsYWNlaG9sZGVyPXt7ZmQuUGFyYW1ldGVyc0xhbmcuZm9ybWF0MS5uYW1lfX0gbmctbW9kZWw9Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSBuZy1jaGFuZ2U9ZmQub25fY2hhbmdlX2FjdGlvbigpIG5hbWU9e3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19IG5nLXJlcXVpcmVkPWZkLlJlcXVpcmVkIGNsb3NlLXRleHQ9Q2xvc2U+PHAgY2xhc3M9bm9wcmludCBuZy1jbGFzcz1cIntcXCdpbnZhbGlkLXRvb2x0aXAgcmlnaHQtMFxcJzpmZC5QYXJhbWV0ZXJzLkVycm9yTXNnVHlwZT09XFwndG9vbHRpcFxcJyB8fCBmZC5QYXJhbWV0ZXJzLkVycm9yTXNnVHlwZT09dW5kZWZpbmVkLFxcJ2ludmFsaWQtZmVlZGJhY2tcXCc6ZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PVxcJ2ZlZWRiYWNrXFwnfVwiPnt7ZmQuRXJyb3JNc2d9fTwvcD48L2Rpdj48ZGl2IG5nLWlmPWZkLlJlYWRPbmx5IHN0eWxlPVwibWluLXdpZHRoOiAxNTBweCAhaW1wb3J0YW50XCI+PGRpdiBuZy1jbGFzcz1cIntcXCdmb3JtLWNvbnRyb2xcXCc6ZmQuUGFyYW1ldGVycy5Cb3JkZXJGb3JSZWFkT25seX1cIj57e2Zvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0gfCBkYXRlOiBmZC5sb2NhbFZhcnMuZm9ybWF0Lm5hbWV9fTwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJkcm9wbGVmdCBlbGVtZW50LXByb3BlcnRpZXMtYnRucyBiZy1wcmltYXJ5IHJvdW5kZWQgc2hhZG93IG5vcHJpbnRcIiBuZy1pZj06OnNob3dTZWFyY2hGaWx0ZXJzPjxhIGlkPXNlYXJjaC1maWx0ZXIte3s6OmZkLkl0ZW1JZH19IGRhdGEtdG9nZ2xlPWRyb3Bkb3duIGFyaWEtaGFzcG9wdXA9dHJ1ZSBhcmlhLWV4cGFuZGVkPWZhbHNlIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi14cyBwcm9wLWJ0blwiIGhyZWY+PGkgY2xhc3M9XCJmYSBmYS1maWx0ZXIge3tmZC5TZWFyY2guaWNvbn19IG1yLTFcIiB0aXRsZT1cIkZpbHRlciA6IHt7ZmQuU2VhcmNoLm5hbWV9fVwiPjwvaT57e2ZkLlNlYXJjaC5uYW1lfX08L2E+PGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgc2hhZG93IHAtMCBkcm9wZG93bi1tYXgtY29udGVudC13aWR0aFwiIHN0eWxlPVwibWluLXdpZHRoOjBweCAhaW1wb3J0YW50XCIgYXJpYS1sYWJlbGxlZGJ5PXNlYXJjaC1maWx0ZXIte3s6OmZkLkl0ZW1JZH19PjxkaXYgY2xhc3M9YnRuLWdyb3VwLXZlcnRpY2FsIHJvbGU9Z3JvdXAgYXJpYS1sYWJlbD1cIlNlYXJjaCBmaWx0ZXJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseVRpbWVGaWx0ZXJzKDApIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpmZC5TZWFyY2guZmlsdGVyPT1cXCdndFxcJ31cIj48c3BhbiBjbGFzcz17e3NlYXJjaFswXS5pY29ufX0+PC9zcGFuPiB7ezo6c2VhcmNoWzBdLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseVRpbWVGaWx0ZXJzKDEpIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpmZC5TZWFyY2guZmlsdGVyPT1cXCdsdFxcJ31cIj48c3BhbiBjbGFzcz17e3NlYXJjaFsxXS5pY29ufX0+PC9zcGFuPiB7ezo6c2VhcmNoWzFdLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseVRpbWVGaWx0ZXJzKDIpIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpmZC5TZWFyY2guZmlsdGVyPT1cXCdlcVxcJ31cIj48c3BhbiBjbGFzcz17e3NlYXJjaFsyXS5pY29ufX0+PC9zcGFuPiB7ezo6c2VhcmNoWzJdLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIG5nLWlmPWZhbHNlIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1hcHBseVRpbWVGaWx0ZXJzKDMpIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpmZC5TZWFyY2guZmlsdGVyPT1cXCdiZXR3ZWVuXFwnfVwiPjxzcGFuIGNsYXNzPXt7c2VhcmNoWzNdLmljb259fT48L3NwYW4+IHt7OjpzZWFyY2hbM10ubmFtZX19PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VGltZVByb3BlcnRpZXMuaHRtbCcsJzxkaXYgY2xhc3M9cC0xPjxkaXYga3QtcHJvcGVydHktaGVhZGVyPjwvZGl2PjxkaXYgbmctY2xpY2s9XCJsb2NhbFZhcnMuc2hvd0Jhc2ljID0gIWxvY2FsVmFycy5zaG93QmFzaWNcIiBjbGFzcz1cImV4cGFuZC1wcm9wZXJ0eS1wYW5lbCB0YWcgYm9yZGVyLWJvdHRvbSBib3JkZXItc3VjY2VzcyBteS0xIHB5LTFcIiBkYXRhLXRvZ2dsZT1jb2xsYXBzZSBocmVmPSNtYWluUHJvcGVydHlQYW5lbCByb2xlPWJ1dHRvbiBhcmlhLWV4cGFuZGVkPXRydWUgYXJpYS1jb250cm9scz1tYWluUHJvcGVydHlQYW5lbD48c3BhbiBjbGFzcz1cImNvbCBwLTBcIj5CQVNJQzwvc3Bhbj4gPGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLXNob3c9bG9jYWxWYXJzLnNob3dCYXNpYyBjbGFzcz1cImZhcyBmYS1hbmdsZS1kb3duXCI+PC9pPiA8aSBzdHlsZT1cImZvbnQtc2l6ZTogbGFyZ2U7XCIgbmctc2hvdz0hbG9jYWxWYXJzLnNob3dCYXNpYyBjbGFzcz1cImZhcyBmYS1hbmdsZS11cFwiPjwvaT48L2Rpdj48ZGl2IGNsYXNzPVwibWItNCBjb2xsYXBzZSBzaG93XCIgaWQ9bWFpblByb3BlcnR5UGFuZWw+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkxhYmVsPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5MYWJlbD4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkVycm9yIG1zZzwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuRXJyb3JNc2c+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5TZWxlY3QgZm9ybWF0PC9sYWJlbD48dWktc2VsZWN0IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnNMYW5nLmZvcm1hdDEgc2l6ZXhzPXRydWUgbmFtZT10aW1lRm9ybWF0TGlzdCByZXNldC1zZWFyY2gtaW5wdXQ9dHJ1ZT48dWktc2VsZWN0LW1hdGNoIGFsbG93LWNsZWFyPXRydWUgY2xhc3M9dWktc2VsZWN0LW1hdGNoIHBsYWNlaG9sZGVyPVwiU2VhcmNoIG9yIHNlbGVjdCB0aW1lIGZvcm1hdC4uLlwiPjxzcGFuIGNsYXNzPXAtMD57eyRzZWxlY3Quc2VsZWN0ZWQubmFtZX19PC9zcGFuPjwvdWktc2VsZWN0LW1hdGNoPjx1aS1zZWxlY3QtY2hvaWNlcyBjbGFzcz11aS1zZWxlY3QtY2hvaWNlcyByZXBlYXQ9XCJ0ZiBpbiAoZmQudGltZUZvcm1hdExpc3QgfCBmaWx0ZXI6IHsgbmFtZTogJHNlbGVjdC5zZWFyY2ggfSkgdHJhY2sgYnkgdGYuaWRcIiByZWZyZXNoPXJlZnJlc2hSZXN1bHRzKCRzZWxlY3QpIHJlZnJlc2gtZGVsYXk9MD48c3Bhbj57e3RmLm5hbWV9fTwvc3Bhbj48L3VpLXNlbGVjdC1jaG9pY2VzPjwvdWktc2VsZWN0PjwvZGl2PjxkaXYga3QtZmllbGQtZXh0ZW5kZWQtcHJvcGVydGllcz48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RUb29sYm94Lmh0bWwnLCc8ZGl2IGNsYXNzPVwicHItMSBub3NlbGVjdCBjb21wb25lbnQtbGlicmFyeVwiPjxkaXYgY2xhc3M9aGVscGVyIHN0eWxlPVwib3BhY2l0eTogMC41O1wiPjxwIGNsYXNzPVwic21hbGwgdGV4dC1jZW50ZXIgdGV4dC1tdXRlZCBtLTJcIj5UbyBidWlsZCB7e2dyaWRzdGVyVHlwZX19IGRyYWcgJmFtcDsgZHJvcCBjb21wb25lbnRzIGZyb20gdG9vbGJveDwvcD48L2Rpdj48ZGl2IGlkPXJlc291cmNlLXRvb2xib3ggY2xhc3M9XCJsaXN0LWNvbXBvbmVudC1saWJyYXJ5IG1iLTRcIiBkcmFndWxhLXNjb3BlPSRyb290IGRyYWd1bGE9XCJcXCdiYWcte3tncmlkc3RlclR5cGV9fVxcJ1wiIGRyYWd1bGEtbW9kZWw9dG9vbGJveEl0ZW1zIG5nLW1vZGVsPXRvb2xib3hJdGVtcz48ZGl2IG5nLXJlcGVhdD1cInRvb2xib3hJdGVtIGluIHRvb2xib3hJdGVtcyB0cmFjayBieSB0b29sYm94SXRlbS5pZFwiIHRpdGxlPVwiRHJhZyBtZVwiIG5nLWNsaWNrPXNldENvbGxhcHNlKHRvb2xib3hJdGVtLlRvb2xib3hHcm91cCx0b29sYm94SXRlbS5FbGVtZW50VHlwZSkgbmctY2xhc3M9XCJ7XFwnaXRlbSBlbGVtZW50LWRyYWctaGFuZGxlXFwnOnRvb2xib3hJdGVtLkVsZW1lbnRUeXBlIT1cXCd0b29sYm94Z3JvdXBcXCd9XCIgbmctaGlkZT1cInRvb2xib3hJdGVtLkhpZGVGcm9tVG9vbGJveCB8fCAoY29sbGFwc2VkW3Rvb2xib3hJdGVtLlRvb2xib3hHcm91cF0gJiYgdG9vbGJveEl0ZW0uRWxlbWVudFR5cGUhPVxcJ3Rvb2xib3hncm91cFxcJylcIj48ZGl2IHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiIG5nLWlmPVwidG9vbGJveEl0ZW0uRWxlbWVudFR5cGU9PVxcJ3Rvb2xib3hncm91cFxcJ1wiIGNsYXNzPVwiYm9yZGVyLWJvdHRvbSBteS0yXCI+PHNwYW4gY2xhc3M9Ym9sZD57e3Rvb2xib3hJdGVtLlRvb2xib3hHcm91cH19PC9zcGFuPiA8aSBuZy1jbGFzcz1cIntcXCdmYXMgZmEtYW5nbGUtZG93biBmbG9hdC1yaWdodFxcJzpjb2xsYXBzZWRbdG9vbGJveEl0ZW0uVG9vbGJveEdyb3VwXSxcXCdmYSBmYS1hbmdsZS11cCBmbG9hdC1yaWdodFxcJzohY29sbGFwc2VkW3Rvb2xib3hJdGVtLlRvb2xib3hHcm91cF19XCI+PC9pPjwvZGl2PjxzcGFuIG5nLWlmPVwidG9vbGJveEl0ZW0uRWxlbWVudFR5cGUhPVxcJ3Rvb2xib3hncm91cFxcJ1wiIGNsYXNzPVwiZWxlbWVudC1kcmFnLWhhbmRsZSBpY29uLW11dGVkXCIgbmctY2xhc3M9dG9vbGJveEl0ZW0uRmFjc3M+PC9zcGFuPiA8c3BhbiBuZy1pZj1cInRvb2xib3hJdGVtLkVsZW1lbnRUeXBlIT1cXCd0b29sYm94Z3JvdXBcXCdcIiBjbGFzcz1cImVsZW1lbnQtZHJhZy1oYW5kbGUgbXgtMVwiPnt7dG9vbGJveEl0ZW0uTGFiZWx9fTwvc3Bhbj4gPGkgbmctaWY9XCJ0b29sYm94SXRlbS5FbGVtZW50VHlwZSE9XFwndG9vbGJveGdyb3VwXFwnXCIgY2xhc3M9XCJlbGVtZW50LWRyYWctaGFuZGxlIGhhbmRsZXIgZmFzIGZhLWdyaXAtdmVydGljYWwgdGV4dC1kYXJrIG1yLTFcIiBzdHlsZT1vcGFjaXR5OjAuMj48L2k+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VHJlZVZpZXcuaHRtbCcsJzxkaXYgY2xhc3M9d2lkZ2V0LWhlYWQgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LWFjdGl2ZSBtLTIgc2hhZG93XFwnOmxvY2FsVmFycy5hY3Rpb25CdXR0b25Qcm9wc1tmZC5QcmVzZW50YXRpb25JZF0+MH1cIj48ZGl2IG5nLWlmPVwiZ3NydmMuZ2V0Rm9ybVZpZXdUeXBlKCk9PTEgfHwgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTFcIj48ZGl2IGNsYXNzPVwicm93IG0tMCBwLTAgbWItMSBiZy1saWdodFwiIHRpdGxlPVwiSUQ6ICh7e2ZkLlByZXNlbnRhdGlvbklkfX1cIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtaGVhZC1hY3RpdmVcXCc6bG9jYWxWYXJzLmFjdGlvbkJ1dHRvblByb3BzW2ZkLlByZXNlbnRhdGlvbklkXT4wLFxcJ2JnLWxpZ2h0XFwnOmxvY2FsVmFycy5hY3Rpb25CdXR0b25Qcm9wc1tmZC5QcmVzZW50YXRpb25JZF09PTB9XCI+PGRpdiBjbGFzcz1cIm14LTIgY29sLWF1dG8gcC0wXCI+PHN2ZyB3aWR0aD0yNCBoZWlnaHQ9MjQgdmVyc2lvbj0xLjEgdmlld2JveD1cIjAgMCAxMi43IDEyLjdcIiB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zz48ZyBzdHJva2U9IzAwMD48ZyBmaWxsPSNmZGZmZmYgc3Ryb2tlLWxpbmVjYXA9cm91bmQ+PHJlY3QgeD0xLjcxMDggeT0xLjMgd2lkdGg9My40ODgxIGhlaWdodD0yLjcwOTcgc3RvcC1jb2xvcj0jMDAwMDAwIHN0cm9rZS13aWR0aD0uNjc1PjwvcmVjdD48cmVjdCB4PTYuNzk0NSB5PTguNyB3aWR0aD0zLjQ4ODEgaGVpZ2h0PTIuNzA5NyBzdG9wLWNvbG9yPSMwMDAwMDAgc3Ryb2tlLXdpZHRoPS42NzUxNT48L3JlY3Q+PHJlY3QgeD02LjcyMDMgeT00LjQgd2lkdGg9My40ODgxIGhlaWdodD0yLjcwOTcgc3RvcC1jb2xvcj0jMDAwMDAwIHN0cm9rZS13aWR0aD0uNjc1MTU+PC9yZWN0PjwvZz48ZyBmaWxsPW5vbmUgc3Ryb2tlLXdpZHRoPS41NjkzOD48cGF0aCBkPVwibTMuMzA2NCAzLjk3OSAwLjA3NDIxNSA2LjMzNTNcIj48L3BhdGg+PHBhdGggZD1cIm0zLjE1OCAxMC4xMzggMy43MDUgMC4wMTQ2OVwiPjwvcGF0aD48cGF0aCBkPVwibTMuMjY5MyA2LjAwMTQgMy4zMDI2LTAuMDA1MzNcIj48L3BhdGg+PC9nPjwvZz48L3N2Zz48bGFiZWw+VHJlZVZpZXcgPHNwYW4gbmctc2hvdz1mZC5QcmVzZW50YXRpb25JZD4oe3sgZmQuUHJlc2VudGF0aW9uSWR9fSk8L3NwYW4+PC9sYWJlbD4gPGEgaHJlZiB0aXRsZT1zb3J0IG5nLWNsYXNzPVwie1xcJ3dpZGdldC1wcm9wXFwnOmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCBsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZH1cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCB7e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZSB3aWRnZXQtcHJvcFwiPjxpIGNsYXNzPVwie3tncmlkVHlwZX19LWVsZW1lbnQtZHJhZy1oYW5kbGUgZmFzIGZhLWdyaXAtdmVydGljYWxcIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgdGV4dC1yaWdodCBteS1hdXRvXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4teHNcIiBuZy1jbGFzcz1cIntcXCdidG4td2FybmluZ1xcJzpsb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQsXFwnYnRuLWdyYXktNTBcXCc6bG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlIT0xfVwiIG5nLWNsaWNrPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPTFcIj48c3BhbiBuZy1pZj0hbG9jYWxWYXJzLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkPjxzcGFuIGNsYXNzPVwiZmEgZmEtZGF0YWJhc2UgbXItMVwiPjwvc3Bhbj4gU2VsZWN0IGRhdGFzZXQ8L3NwYW4+IDxzcGFuIG5nLWlmPWxvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCBjbGFzcz1cImZhIGZhLWRhdGFiYXNlXCI+PC9zcGFuPiB7e2xvY2FsVmFycy5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZH19PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIG15LWF1dG8gcC0wXCI+PGEgaHJlZiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIGJ0bi1zbVwiIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1wcm9wXFwnOmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCBsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZH1cIiB0aXRsZT1cIlNob3cvaGlkZSBwcm9wZXJ0aWVzXCIgbmctY2xpY2s9bG9jYWxWYXJzLnRvZ2dsZVByb3BlcnRpZXMoKT48aSBjbGFzcz1cImZhcyBmYS1jb2dcIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48ZGl2IGNsYXNzPVwiZHJvcGRvd24gZC1pbmxpbmUtYmxvY2tcIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtcHJvcFxcJzpsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgbG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT11bmRlZmluZWR9XCI+PGEgaHJlZiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kYW5nZXIgYm9yZGVyLTAgYnRuLXNtXCIgdGl0bGU9XCJSZW1vdmUgZmllbGRcIiBpZD1kcm9wZG93bk1lbnVCdXR0b24gZGF0YS10b2dnbGU9ZHJvcGRvd24gYXJpYS1oYXNwb3B1cD10cnVlIGFyaWEtZXhwYW5kZWQ9ZmFsc2U+PGkgY2xhc3M9XCJmYSBmYS10cmFzaC1hbHRcIj48L2k+PC9hPjxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IHNoYWRvdyBwLTAgZHJvcGRvd24tbWF4LWNvbnRlbnQtd2lkdGhcIiBhcmlhLWxhYmVsbGVkYnk9ZHJvcGRvd25NZW51QnV0dG9uPjxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBwLTAgcHgtMSBiZy1saWdodFwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtZXhjbGFtYXRpb24tdHJpYW5nbGUgdGV4dC1kYW5nZXJcIj48c3BhbiBjbGFzcz1cIm1sLTIgc21hbGxcIj5EZWxldGUgd2lkZ2V0IGNvbmZpcm1hdGlvbjwvc3Bhbj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1tLTE+PGRpdiBjbGFzcz1cIm0tMSBzbWFsbCBib2xkIHRleHQtZGFya1wiPkNsaWNrIENvbmZpcm0gdG8gZGVsZXRlIHdpZGdldCE8L2Rpdj48ZGl2IG5nLWlmPWZhbHNlIGNsYXNzPVwibWwtMSBzbWFsbCB0ZXh0LWRhcmtcIj5UaGlzIGFjdGlvbiBtYXkgcmVzdWx0IGluIGEgbG9zcyBvZiBkYXRhITwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cC0xPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1kYW5nZXJcIiB0aXRsZT1Db25maXJtIG5nLWNsaWNrPXJlbW92ZUZpZWxkKCRpbmRleCk+Q29uZmlybSA8aSBjbGFzcz1cIm1sLTIgZmEgZmEtY2hlY2tcIj48L2k+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cIihmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSB8fCBnc3J2Yy5nZXRGb3JtVmlld1R5cGUoKT09MSlcIiBjbGFzcz48ZGl2PjxkaXYgbmctaWY9XCJsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU+MCAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MVwiIGNsYXNzPVwiY2FyZCBtdC0yIG1iLTIgcm91bmRlZC0wXCI+PGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHAtMCBwbC0yIHByLTJcIj48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPjBcIiBjbGFzcz1cInRleHQtd2hpdGUgcC0yIG1iLTJcIj48ZGl2IGt0LWZvcm0tZWxlbWVudC1wcm9wZXJ0aWVzIGZkPWZkIGxvY2FsLXZhcnM9bG9jYWxWYXJzPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctc2hvdz1cIihmZC5TaG93U2VhcmNoRm9ybSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MikgfHwgKGxvY2FsVmFycy5zaG93Rm9ybSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSlcIj48ZGl2IGNsYXNzPVwiY2FyZCBib3JkZXItMFwiPjxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBwLTFcIj48ZGl2IGNsYXNzPWNvbnRyb2wtZ3JvdXA+PGkgY2xhc3M9XCJmYSBmYS1zZWFyY2hcIj48L2k+IDxzcGFuIGNsYXNzPVwibWwtMiBwLTFcIj5TZWFyY2ggZm9ybTwvc3Bhbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGluayBmbG9hdC1yaWdodFwiIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIGRhdGEtdGFyZ2V0PSNpc0NvbGxhcHNlSWR7e2ZkLmlkfX0gYXJpYS1leHBhbmRlZD10cnVlIGFyaWEtY29udHJvbHM9aXNDb2xsYXBzZWRJZHt7ZmQuaWR9fSBuZy1jbGljaz1cImxvY2FsVmFycy5pc0NvbGxhcHNlZCA9ICFsb2NhbFZhcnMuaXNDb2xsYXBzZWRcIj48c3BhbiBuZy1jbGFzcz1cIntcXCdmYSBmYS1wbHVzLXNxdWFyZVxcJzogbG9jYWxWYXJzLmlzQ29sbGFwc2VkLFxcJ2ZhIGZhLW1pbnVzLXNxdWFyZVxcJzogIWxvY2FsVmFycy5pc0NvbGxhcHNlZCB9XCI+PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2xsYXBzZSBzaG93XCIgaWQ9aXNDb2xsYXBzZUlke3tmZC5pZH19PjxkaXYga3QtZ3JpZCBncmlkLXR5cGU9bG9jYWxWYXJzLmdyaWRzdGVyVHlwZSBzaG93LXNlYXJjaC1maWx0ZXJzPWxvY2FsVmFycy5zaG93U2VhcmNoRmlsdGVycyBwYXJlbnQtcmVzb3VyY2UtZGVmLWlkPWZkLlBhcmVudERhdGFzZXREZWZJZCByZXNvdXJjZS1yZWNvcmQtaWQ9bG9jYWxWYXJzLmRhdGFzZXRSZWNvcmRJZCByZXNvdXJjZS1kZWZpbml0aW9uPXRhc2tEZWZpbml0aW9uIHBhcmVudD1sb2NhbFZhcnMuZGFzaGJvYXJkLndpZGdldHMgZm9ybS1kYXRhPWZvcm1EYXRhW2ZkLlByZXNlbnRhdGlvbklkXSBmb3JtLXBhcmFtcz1mb3JtUGFyYW1zIGZvcm0tcGFyYW1zLXBhcmVudD1mb3JtUGFyYW1zUGFyZW50IGFsbC1jb2x1bW5zPWxvY2FsVmFycy5kYXNoYm9hcmQud2lkZ2V0cyBjbGFzcz1rdEdyaWQ+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInAtMiBib3JkZXItdG9wXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgbmctY2xpY2s9XCJsb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZT1mZC5SZWxhdGVkO2xvY2FsVmFycy5nZXRSZXNvdXJjZUNvbHVtbnModHJ1ZSlcIj48c3BhbiBjbGFzcz1cImZhIGZhLWRhdGFiYXNlXCI+PC9zcGFuPiBHZXQgZGF0YTwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCIoIWZkLlNob3dTZWFyY2hGb3JtICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yKVwiIGNsYXNzPVwiY2FyZC1oZWFkZXIgcC0yIGJvcmRlci10b3BcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1pbmZvXCIgbmctY2xpY2s9XCJsb2NhbFZhcnMuc2VsZWN0ZWRSZXNvdXJjZT1mZC5SZWxhdGVkO2xvY2FsVmFycy5nZXRSZXNvdXJjZUNvbHVtbnModHJ1ZSlcIj48c3BhbiBjbGFzcz1cImZhcyBmYS1zeW5jXCI+PC9zcGFuPiBSZWZyZXNoIGRhdGE8L2J1dHRvbj48L2Rpdj48ZGl2IG5nLWlmPVwiKGxvY2FsVmFycy5yZXNvdXJjZURhdGFEb3dubG9hZGVkICYmIGxvY2FsVmFycy5ncmlkQXBpLnNlbGVjdGlvbi5nZXRTZWxlY3RlZFJvd3MoKS5sZW5ndGg+MCAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MikgfHwgKGxvY2FsVmFycy5zaG93Rm9ybSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSlcIj48ZGl2IGt0LWluaXRpYXRlLXRhc2std2lkZ2V0PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCIhbG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkZWQgJiYgbG9jYWxWYXJzLnNob3dGb3JtXCIga3QtcHJvY2Vzc2luZy1hbmltYXRpb24gc2hvdy1tc2c9dHJ1ZSBtZXNzYWdlPVwiTG9hZGluZyBkYXRhLi4uXCI+PC9kaXY+PGRpdiBuZy1pZj1cImxvY2FsVmFycy5zaG93Rm9ybSB8fCBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MlwiPjxkaXYgdWktZ3JpZD1sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZXNvdXJjZURhdGEgdWktZ3JpZC1zZWxlY3Rpb24gdWktZ3JpZC1yZXNpemUtY29sdW1ucyB1aS1ncmlkLW1vdmUtY29sdW1ucyB1aS1ncmlkLXNhdmUtc3RhdGUgdWktZ3JpZC1wYWdpbmF0aW9uIHVpLWdyaWQtZ3JvdXBpbmcgdWktZ3JpZC1leHBvcnRlciBjbGFzcz1teUdyaWQ+PC9kaXY+PC9kaXY+PGRpdiBuZy1zaG93PVwibG9jYWxWYXJzLnNob3dGb3JtIHx8IGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yXCIgY2xhc3M9XCJ3ZWxsLWN1c3RvbSBiZy13aGl0ZSByb3cgbS0wIHAtMFwiPjxkaXYgY2xhc3M9XCJjb2wgcGwtMFwiPjx1bCB1aWItcGFnaW5hdGlvbiBib3VuZGFyeS1saW5rcz10cnVlIG1heC1zaXplPTEwIGl0ZW1zLXBlci1wYWdlPWxvY2FsVmFycy5wYWdlU2l6ZSBmb3JjZS1lbGxpcHNlcz10cnVlIHRvdGFsLWl0ZW1zPWxvY2FsVmFycy50b3RhbENvdW50IG5nLW1vZGVsPWxvY2FsVmFycy5jdXJyZW50UGFnZSBjbGFzcz1cImQtaW5saW5lLWZsZXggcGFnaW5hdGlvbiBwYWdpbmF0aW9uLXNtIG0tMFwiIHByZXZpb3VzLXRleHQ9JmxzYXF1bzsgbmctY2hhbmdlPWxvY2FsVmFycy5wYWdlQ2hhbmdlZCgpIG5leHQtdGV4dD0mcnNhcXVvOyBmaXJzdC10ZXh0PSZsYXF1bzsgbGFzdC10ZXh0PSZyYXF1bzs+PC91bD48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLWF1dG8gYmctbGlnaHQgcC0xXCI+PHNlbGVjdCBjbGFzcz1pbnB1dC1zbSBuZy1jaGFuZ2U9bG9jYWxWYXJzLnBhZ2VDaGFuZ2VkKCkgbmctbW9kZWw9bG9jYWxWYXJzLnBhZ2VTaXplPjxvcHRpb24gbmctcmVwZWF0PVwicHMgaW4gbG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLnBhZ2luYXRpb25QYWdlU2l6ZXMgdHJhY2sgYnkgcHNcIiBuZy1zZWxlY3RlZD1cImxvY2FsVmFycy5wYWdlU2l6ZT09cHNcIiBuZy12YWx1ZT1wcz57e3BzfX08L29wdGlvbj48L3NlbGVjdD5pdGVtcyBwZXIgcGFnZSAmbmJzcCZuYnNwIHwgJm5ic3AmbmJzcCBQYWdlOiB7e2xvY2FsVmFycy5jdXJyZW50UGFnZX19IC8ge3tsb2NhbFZhcnMubnVtUGFnZXN9fSAmbmJzcCZuYnNwIHwgJm5ic3AmbmJzcCB7e2xvY2FsVmFycy5wYWdlU2l6ZSpsb2NhbFZhcnMuY3VycmVudFBhZ2UrMS1sb2NhbFZhcnMucGFnZVNpemV9fSAtIHt7bG9jYWxWYXJzLnBhZ2VTaXplKmxvY2FsVmFycy5jdXJyZW50UGFnZT5sb2NhbFZhcnMudG90YWxDb3VudCA/IGxvY2FsVmFycy50b3RhbENvdW50IDogbG9jYWxWYXJzLnBhZ2VTaXplKmxvY2FsVmFycy5jdXJyZW50UGFnZX19IG9mIHt7bG9jYWxWYXJzLnRvdGFsQ291bnR9fSBpdGVtczwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmb3JtRGVmaW5pdGlvbiAmJiBsb2NhbFZhcnMuc2hvd0Zvcm0gJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTFcIj48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgdHlwZT1idXR0b24gbmctY2xpY2s9bG9jYWxWYXJzLnNhdmVHcmlkU3RhdGUoKT5TYXZlIGdyaWQgc3RhdGU8L2J1dHRvbj48L2Rpdj48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLnJlc291cmNlRGF0YURvd25sb2FkZWQgJiYgbG9jYWxWYXJzLmdyaWRPcHRpb25zUmVzb3VyY2VEYXRhLmNvbHVtbkRlZnMubGVuZ3RoPjAgJiYgbG9jYWxWYXJzLmdyaWRBcGkuc2VsZWN0aW9uLmdldFNlbGVjdGVkUm93cygpLmxlbmd0aD4wXCI+PGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHAtMVwiPjxkaXYgY2xhc3M9bWwtMz48YnV0dG9uIG5nLWlmPVwicmVsYXRlZERhdGFzZXQuZmllbGRUeXBlPT1cXCdyZXNvdXJjZVxcJyB8fCByZWxhdGVkRGF0YXNldC5maWVsZFR5cGU9PVxcJ3Jlc291cmNlTGlua1xcJ1wiIG5nLXJlcGVhdD1cInJlbGF0ZWREYXRhc2V0IGluIGxvY2FsVmFycy5ncmlkT3B0aW9uc1Jlc291cmNlRGF0YS5jb2x1bW5EZWZzIHRyYWNrIGJ5ICRpbmRleFwiIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWxvY2FsVmFycy5nZXREYXRhc2V0UmVsYXRlZFJlY29yZHMocmVsYXRlZERhdGFzZXQucmVsYXRlZERhdGFzZXRJZCxsb2NhbFZhcnMuc2VsZWN0ZWREYXRhc2V0UmVjb3JkSWQscmVsYXRlZERhdGFzZXQubW9kZWxJZCkgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBtci0yXCI+e3tyZWxhdGVkRGF0YXNldC5kaXNwbGF5TmFtZX19PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGZsb2F0LXJpZ2h0XCIgbmctY2xpY2s9XCJsb2NhbFZhcnMuc2hvd0dyaWQ9IWxvY2FsVmFycy5zaG93R3JpZFwiPjxpIG5nLWNsYXNzPVwie1xcJ2ZhIGZhLXBsdXNcXCc6IWxvY2FsVmFycy5zaG93R3JpZCxcXCdmYSBmYS1taW51c1xcJzpsb2NhbFZhcnMuc2hvd0dyaWR9XCI+PC9pPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLW1kLTEyIG5nLWlmPVwibG9jYWxWYXJzLnNob3dHcmlkICYmIGxvY2FsVmFycy5ncmlkQXBpLnNlbGVjdGlvbi5nZXRTZWxlY3RlZFJvd3MoKS5sZW5ndGg+MCAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MlwiPjxkaXYgaWQ9Z3JpZDMgdWktZ3JpZD1sb2NhbFZhcnMuZ3JpZE9wdGlvbnNSZWxhdGVkIHVpLWdyaWQtbW92ZS1jb2x1bW5zIHVpLWdyaWQtc2F2ZS1zdGF0ZSB1aS1ncmlkLWF1dG8tcmVzaXplIHVpLWdyaWQtZ3JvdXBpbmcgdWktZ3JpZC1zZWxlY3Rpb24gdWktZ3JpZC1yZXNpemUtY29sdW1ucyBjbGFzcz1teUdyaWQ+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImdzcnZjLmdldEZvcm1WaWV3VHlwZSgpPT0yXCI+PGRpdj48ZGl2IGNsYXNzPWNvbCBuZy1pZj1cImZkLnNlbGVjdGVkQnV0dG9ucy5sZW5ndGg+MFwiPjxkaXYgY2xhc3M9XCJteS0xIHRleHQte3tmZC5QYXJhbWV0ZXJzLlRleHRBbGlnbn19XCI+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VHJlZVZpZXdQcm9wZXJ0aWVzLmh0bWwnLCc8c3R5bGU+XFxuLmJsdWVCb3JkZXIge1xcbiAgICBib3JkZXItYm90dG9tOiBzb2xpZCBibHVlO1xcbn1cXG5cXG48L3N0eWxlPjxkaXYgY2xhc3M9cC0xPjxkaXYgbmctaWY9XCJsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTFcIiBmZD1mZCBsb2NhbC12YXJzPWxvY2FsVmFycyBrdC1kYXRhc2V0LW1hcHBlcj48L2Rpdj48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPjFcIj48ZGl2IHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIHJvdW5kZWQtMFwiIG5nLWNsYXNzPVwie1xcJ2JsdWVCb3JkZXJcXCc6bG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0yLFxcJ2J0bi1ncmF5LTUwXFwnOmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSE9Mn1cIiBuZy1jbGljaz1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT0yXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1jb2dcIj48L3NwYW4+IFByb3BlcnRpZXM8L2Rpdj48ZGl2IHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIHJvdW5kZWQtMFwiIG5nLWNsYXNzPVwie1xcJ2JsdWVCb3JkZXJcXCc6bG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0zLFxcJ2J0bi1ncmF5LTUwXFwnOmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZSE9M31cIiBuZy1jbGljaz1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT0zXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1kYXRhYmFzZVwiPjwvc3Bhbj4gRGVmaW5lIHBhcmVudCBkYXRhc2V0PC9kaXY+PGRpdiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biByb3VuZGVkLTBcIiBuZy1jbGFzcz1cIntcXCdibHVlQm9yZGVyXFwnOmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09NCxcXCdidG4tZ3JheS01MFxcJzpsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGUhPTR9XCIgbmctY2xpY2s9XCJsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9NFwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtY29weVwiPjwvc3Bhbj4gQ29weSBkYXRhIGZyb20gb3RoZXIgZGF0YXNldHM8L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0yXCIgY2xhc3M9XCJ0ZXh0LWRhcmsgcC0yXCI+PGRpdiBjbGFzcz1cImJveC1oZWFkZXItYnRucyBmbG9hdC1yaWdodFwiPjwvZGl2PjxsYWJlbD5MYWJlbDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9Zm9ybS1jb250cm9sIG5nLW1vZGVsPWZkLkxhYmVsPiA8bGFiZWw+RXJyb3IgbXNnPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1mb3JtLWNvbnRyb2wgbmctbW9kZWw9ZmQuRXJyb3JNc2c+IDxsYWJlbD5TZWFyY2hUZXh0PC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1mb3JtLWNvbnRyb2wgbmctbW9kZWw9ZmQuU2VhcmNoVGV4dD48ZGl2IGNsYXNzPWNoZWNrYm94PjxsYWJlbD48aW5wdXQgdHlwZT1jaGVja2JveCBuZy1tb2RlbD1mZC5BdXRvU2VhcmNoPiBBdXRvIHNlYXJjaDwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1jaGVja2JveD48bGFiZWw+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmctbW9kZWw9ZmQuU2hvd1NlYXJjaEZvcm0gbmctY2xpY2s9bG9jYWxWYXJzLnNob3dIaWRlU2VhcmNoRm9ybSgpPiBTaG93IHNlYXJjaCBmb3JtPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPWNoZWNrYm94PjxsYWJlbD48aW5wdXQgdHlwZT1jaGVja2JveCBuZy1tb2RlbD1mZC5NdWx0aWxpbmU+IEVuYWJsZSBzZWxlY3Rpb24gb2YgbXVsdGlwbGUgcmVjb3JkczwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1jaGVja2JveD48bGFiZWw+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmctbW9kZWw9ZmQuSW5saW5lVGFzaz4gU3RhcnQgdGFzayBpbmxpbmU8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9Y2hlY2tib3g+PGxhYmVsPjxpbnB1dCB0eXBlPWNoZWNrYm94IG5nLWNsaWNrPWZkLlNob3dUYXNrTGlzdCgpIG5nLW1vZGVsPWZkLkFueVRhc2s+IFN0YXJ0IGFueSB0YXNrPC9sYWJlbD48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0zXCIga3QtZGF0YXNldC1tYXBwZXItcGFyZW50IGNsYXNzPXRleHQtZGFyaz48L2Rpdj48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT00XCIga3QtZGF0YXNldC10by1kYXRhc2V0LW1hcHBlciBjbGFzcz1cInAtMiB0ZXh0LWRhcmtcIj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RVcGxvYWRlci5odG1sJywnPGRpdiBjbGFzcz1cIndpZGdldC1oZWFkIHJvdW5kZWQtMFwiIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1hY3RpdmUgbS0yIHNoYWRvd1xcJzpsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU+MH1cIj48ZGl2IGNsYXNzPVwicm93IG0tMCBtYi0xIHAtMFwiIG5nLWlmPVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTFcIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtaGVhZC1hY3RpdmVcXCc6bG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPjAsXFwnYmctbGlnaHRcXCc6bG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wfVwiPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48aSBjbGFzcz1cImZhIGZhLXVwbG9hZCBteC0yXCI+PC9pPjxsYWJlbD5GaWxlIHVwbG9hZCAoe3s6OmZkLlByZXNlbnRhdGlvbklkfX0pPC9sYWJlbD4gPGEgaHJlZiB0aXRsZT1zb3J0IG5nLWNsYXNzPVwie1xcJ3dpZGdldC1wcm9wXFwnOmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCBsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZH1cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCB7e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZSB3aWRnZXQtcHJvcFwiPjxpIGNsYXNzPVwie3tncmlkVHlwZX19LWVsZW1lbnQtZHJhZy1oYW5kbGUgZmFzIGZhLWdyaXAtdmVydGljYWxcIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgdGV4dC1yaWdodCBteS1hdXRvXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1sb2NhbFZhcnMub3BlbkZpbGVDb25uZWN0b3IoKSBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi14c1wiPjxzcGFuIG5nLXNob3c9XCJmZC50SXRlbVZhbHVlLmxlbmd0aD09MFwiPjxpIGNsYXNzPVwiZmEgZmEtcGx1Z1wiPjwvaT4gU2VsZWN0IGludGVyZmFjZTwvc3Bhbj4gPHNwYW4gbmctc2hvdz1cImZkLnRJdGVtVmFsdWUubGVuZ3RoPjBcIj48aSBjbGFzcz1cImZhIGZhLXBsdWcgZmEtcm90YXRlLTkwXCI+PC9pPiBDb25uZWN0ZWQgdG8ge3tmZC50SXRlbVZhbHVlLmxlbmd0aH19IHJlc291cmNlPC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48YSBocmVmIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYm9yZGVyLTAgYnRuLXNtXCIgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LXByb3BcXCc6bG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wIHx8IGxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkfVwiIHRpdGxlPVwiU2hvdy9oaWRlIHByb3BlcnRpZXNcIiBuZy1jbGljaz1sb2NhbFZhcnMuc2hvd1Byb3BlcnRpZXMoMik+PGkgY2xhc3M9XCJmYXMgZmEtY29nXCI+PC9pPjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGRpdiBjbGFzcz1cImRyb3Bkb3duIGQtaW5saW5lLWJsb2NrXCIgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LXByb3BcXCc6bG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wIHx8IGxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkfVwiPjxhIGhyZWYgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFuZ2VyIGJvcmRlci0wIGJ0bi1zbVwiIHRpdGxlPVwiUmVtb3ZlIGZpZWxkXCIgaWQ9ZHJvcGRvd25NZW51QnV0dG9uIGRhdGEtdG9nZ2xlPWRyb3Bkb3duIGFyaWEtaGFzcG9wdXA9dHJ1ZSBhcmlhLWV4cGFuZGVkPWZhbHNlPjxpIGNsYXNzPVwiZmEgZmEtdHJhc2hcIj48L2k+PC9hPjxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IHNoYWRvdyBwLTAgZHJvcGRvd24tbWF4LWNvbnRlbnQtd2lkdGhcIiBhcmlhLWxhYmVsbGVkYnk9ZHJvcGRvd25NZW51QnV0dG9uPjxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBwLTAgcHgtMSBiZy1saWdodFwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtZXhjbGFtYXRpb24tdHJpYW5nbGUgdGV4dC1kYW5nZXJcIj48c3BhbiBjbGFzcz1cIm1sLTIgc21hbGxcIj5EZWxldGUgd2lkZ2V0IGNvbmZpcm1hdGlvbjwvc3Bhbj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1tLTE+PGRpdiBjbGFzcz1cIm0tMSBzbWFsbCBib2xkIHRleHQtZGFya1wiPkNsaWNrIENvbmZpcm0gdG8gZGVsZXRlIHdpZGdldCE8L2Rpdj48ZGl2IG5nLWlmPWZhbHNlIGNsYXNzPVwibWwtMSBzbWFsbCB0ZXh0LWRhcmtcIj5UaGlzIGFjdGlvbiBtYXkgcmVzdWx0IGluIGEgbG9zcyBvZiBkYXRhITwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cC0xPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1kYW5nZXJcIiB0aXRsZT1Db25maXJtIG5nLWNsaWNrPXJlbW92ZUZpZWxkKCRpbmRleCk+Q29uZmlybSA8aSBjbGFzcz1cIm1sLTIgZmEgZmEtY2hlY2tcIj48L2k+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT4wICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xXCIgY2xhc3M9cC0yPjxkaXYga3QtZm9ybS1lbGVtZW50LXByb3BlcnRpZXMgZmQ9ZmQgbG9jYWwtdmFycz1sb2NhbFZhcnM+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJnLWxpZ2h0IHAtMCBweC0xIHJhZGlvdXMtMFwiIG5nLXNob3c9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSE9MVwiPnt7ZmQuTmFtZX19PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQtYm9keSBweC0xIHJhZGlvdXMtMFwiIG5nLXNob3c9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSE9MVwiPjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1mb3JtPXVwbG9hZGVyRm9ybT48ZGl2PjxpbnB1dCB0eXBlPWZpbGUgbmFtZT1tb2pmaWxlIGNsYXNzPWZpbGVFbGVtZW50IG5nLW1vZGVsPWZkLmZpbGVzIHZhbGlkZmlsZT48L2Rpdj48ZGl2IG5nLXJlcGVhdD1cImZpbGUgaW4gZmlsZXNcIiBpbmRleD0kaW5kZXggY2xhc3M9bXQtMT48aHI+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPWNvbD48ZGl2IGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgbXktYXV0b1wiPjxzcGFuIGNsYXNzPW1yLTI+e3skaW5kZXgrMX19LiB7e2ZpbGUubmFtZX19PC9zcGFuPiA8c3BhbiBjbGFzcz1tci0yPih7eyAoZmlsZS5zaXplLzEwMDApLnRvRml4ZWQoMikgfX0ga2IpPC9zcGFuPjwvZGl2Pjxwcm9ncmVzcyBjbGFzcz1tdC0yIHZhbHVlPXt7ZmlsZS5sb2FkZWR9fSBtYXg9e3tmaWxlLnNpemV9fT48L3Byb2dyZXNzPjxpIG5nLXNob3c9XCJmaWxlLnVwbG9hZFN1Y2Nlc3MgfHwgZmlsZS51cGxvYWRFcnJvclwiIHRpdGxlPVwiRmlsZSB1cGxvYWQgY29tcGxldGVkXCIgY2xhc3M9XCJmYSBmYS11cGxvYWQgdGV4dC1wcmltYXJ5IGZhLWxnIG1sLTNcIj48L2k+IDxpIG5nLXNob3c9ZmlsZS51cGxvYWRTdWNjZXNzIHRpdGxlPVN1Y2Nlc3MgY2xhc3M9XCJmYSBmYS1jaGVjay1jaXJjbGUgdGV4dC1zdWNjZXNzIGZhLWxnIG1sLTNcIj48L2k+IDxpIG5nLXNob3c9ZmlsZS51cGxvYWRFcnJvciB0aXRsZT1FcnJvciBjbGFzcz1cImZhIGZhLXRpbWVzLWNpcmNsZSB0ZXh0LWRhbmdlciBmYS1sZyBtbC0zXCI+PC9pPiA8YSBuZy1zaG93PWZpbGUubWV0YVN1Y2Nlc3MgbmctY2xpY2s9b3Blbk1vZGFsRmlsZU1ldGFkYXRhKCRpbmRleCkgaHJlZj48aSBuZy1zaG93PVwiKGZpbGUubWV0YVN1Y2Nlc3MgfHwgZmlsZS5tZXRhRXJyb3IpICYmICFmaWxlLm5vTWV0YVwiIHRpdGxlPVwiRmlsZSBtZXRhZGF0YSB1cGxvYWRcIiBjbGFzcz1cImZhIGZhLWxpc3QtYWx0IGZhLWxnIG1sLTNcIj48L2k+PC9hPiA8aSBuZy1zaG93PVwiZmlsZS5tZXRhU3VjY2VzcyAmJiAhZmlsZS5ub01ldGFcIiB0aXRsZT1TdWNjZXNzIGNsYXNzPVwiZmEgZmEtY2hlY2stY2lyY2xlIHRleHQtc3VjY2VzcyBmYS1sZyBtbC0zXCI+PC9pPiA8aSBuZy1zaG93PWZpbGUubWV0YUVycm9yIHRpdGxlPUVycm9yIGNsYXNzPVwiZmEgZmEtdGltZXMtY2lyY2xlIHRleHQtZGFuZ2VyIGZhLWxnXCI+PC9pPiA8c3BhbiBuZy1oaWRlPWZpbGUudXBsb2FkU3VjY2Vzcz57e2ZpbGUuc3RhdHVzfX08L3NwYW4+IDxzcGFuIG5nLWhpZGU9ZmlsZS5tZXRhU3VjY2Vzcz57e2ZpbGUubWV0YVN0YXR1c319PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Y29sLTYgbmctaWY9ZmFsc2UgbmctaGlkZT1maWxlLnVwbG9hZFN1Y2Nlc3M+PHVpLXNlbGVjdCBuZy1tb2RlbD1zZWxlY3RlZFJlc291cmNlIG9uLXNlbGVjdD1vblNlbGVjdEZpbGVUeXBlKCRpdGVtLCRpbmRleCkgbmctZGlzYWJsZWQ9ZGlzYWJsZWQgbmFtZT1GaWxlVHlwZXt7JGluZGV4fX0gcmVzZXQtc2VhcmNoLWlucHV0PWZhbHNlPjx1aS1zZWxlY3QtbWF0Y2ggY2xhc3M9dWktc2VsZWN0LW1hdGNoIHBsYWNlaG9sZGVyPXt7ZmQuTGFiZWx9fT48c3Bhbj57eyRzZWxlY3Quc2VsZWN0ZWQucmVzb3VyY2VkZWZsYW5nX3NldFswXS5OYW1lfX08L3NwYW4+IDxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGluayBmbG9hdC1yaWdodFwiIG5nLWNsaWNrPVwiY2xlYXIoJGV2ZW50LCAkc2VsZWN0KVwiPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+PC9hPjwvdWktc2VsZWN0LW1hdGNoPjx1aS1zZWxlY3QtY2hvaWNlcyBjbGFzcz11aS1zZWxlY3QtY2hvaWNlcyByZXBlYXQ9XCJmZiBpbiAobGlzdE9mRmlsZVR5cGVzfCBmaWx0ZXI6IHsgaWQ6ICRzZWxlY3Quc2VhcmNoIH0pIHRyYWNrIGJ5IGZmLmlkXCIgcmVmcmVzaD1yZWZyZXNoUmVzdWx0cygkc2VsZWN0KSByZWZyZXNoLWRlbGF5PTA+PHNwYW4+e3tmZi5yZXNvdXJjZWRlZmxhbmdfc2V0WzBdLk5hbWV9fTwvc3Bhbj48L3VpLXNlbGVjdC1jaG9pY2VzPjwvdWktc2VsZWN0PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBteS1hdXRvXCIgbmctaGlkZT1maWxlLnVwbG9hZFN1Y2Nlc3M+PGEgaHJlZiBjbGFzcz1kLWlubGluZS1ibG9jayBuZy1jbGljaz1cInNob3dGaWxlTWV0YURhdGE9IXNob3dGaWxlTWV0YURhdGFcIj48aSBuZy1zaG93PXNob3dGaWxlTWV0YURhdGEgY2xhc3M9XCJmYSBmYS1saXN0LWFsdCBmYS1sZ1wiPjwvaT48L2E+IDxidXR0b24gbmctY2xpY2s9YnRuX3JlbW92ZSgkaW5kZXgsZmlsZSkgaHJlZiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kYW5nZXIgYnRuLXhzXCIgdGl0bGU9XCJSZW1vdmUgZnJvbSBsaXN0IHRvIGJlIHVwbG9hZGVkXCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lcyBtci0yXCI+PC9pPlJlbW92ZSBmaWxlPC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1zaG93RmlsZU1ldGFEYXRhPjxkaXY+PGRpdiBrdC1ncmlkIGdyaWQtdHlwZT1ncmlkc3RlclR5cGUgZm9ybS1wYXJhbXM9cmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMgcGFyZW50PWZkLmZpbGVzWyRpbmRleF0uZGFzaGJvYXJkLndpZGdldHMgYWxsLWNvbHVtbnM9ZmQuZmlsZXNbJGluZGV4XS5kYXNoYm9hcmQud2lkZ2V0cyBjbGFzcz1rdEdyaWQ+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGJyPjxkaXYgY2xhc3M9cm93PjxkaXYgY2xhc3M9Y29sLTI0PjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCIgbmctZGlzYWJsZWQ9aXNTYXZpbmcgbmctaWY9XCJmZC51cGxvYWRSZWFkeSAmJiAhZmQuUmVhZE9ubHlcIiBuZy1jbGljaz1idG5fdXBsb2FkKCk+VXBsb2FkPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi14cyBmbG9hdC1yaWdodFwiIG5nLWlmPVwiKCFmZC5SZWFkT25seSkgJiYgKGZkLmZpbGVzLmxlbmd0aD4wKVwiIG5nLWNsaWNrPWJ0bl9jbGVhbigpPlJlbW92ZSBhbGw8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPWZpbGVoZWxwZXIuaHRtbCB0eXBlPXRleHQvbmctdGVtcGxhdGU+PGRpdj4gPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPiA8aDMgY2xhc3M9XCJtb2RhbC10aXRsZVwiPnt7aGVhZGxpbmV9fTwvaDM+IDwvZGl2PiA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPiA8ZGl2IGt0LWdyaWQgZ3JpZC10eXBlPVwiZ3JpZHN0ZXJUeXBlXCIgZm9ybS1wYXJhbXM9XCJyZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtc1wiIHBhcmVudD1cImZkLmZpbGVzW2ZpbGVJbmRleF0uZGFzaGJvYXJkLndpZGdldHNcIiBhbGwtY29sdW1ucz1cImZkLmZpbGVzW2ZpbGVJbmRleF0uZGFzaGJvYXJkLndpZGdldHNcIiBjbGFzcz1cImt0R3JpZFwiPjwvZGl2PiA8L2Rpdj4gPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlciB0ZXh0LXJpZ2h0XCI+IDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXdhcm5pbmdcIiB0eXBlPVwiYnV0dG9uXCIgbmctY2xpY2s9XCJjYW5jZWxNb2RhbCgpXCI+Q2FuY2VsPC9idXR0b24+IDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgbmctY2xpY2s9XCJva01vZGFsKClcIj5PSzwvYnV0dG9uPiA8L2Rpdj4gPC9kaXY+PC9zY3JpcHQ+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VXBsb2FkZXJQcm9wZXJ0aWVzLmh0bWwnLCc8ZGl2IGNsYXNzPXAtMT48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0xXCI+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wIGJvcmRlciBzaGFkb3ctc21cIj48ZGl2IGNsYXNzPVwicHgtMSBiZy1saWdodFwiPkZpbGUgdXBsb2FkIHdpZGdldCAoe3tmZC5QcmVzZW50YXRpb25JZH19KTwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgcC0wXCI+PGRpdiBjbGFzcz1cInJvdyBtLTBcIiBuZy1yZXBlYXQ9XCJzZWxlY3RlZEZpbGVDb25uZWN0b3IgaW4gZmQubGlzdE9mQ29ubmVjdG9yc1wiPjxkaXYgY2xhc3M9XCJjb2wtNCBwLTAgbWItMlwiPjxkaXYgY2xhc3M9aC0xMDAgbmctcmVwZWF0PVwiREVJbGlzdCBpbiBzZWxlY3RlZEZpbGVDb25uZWN0b3IuREVJXCI+PGRpdiBuZy1pZj1ERUlsaXN0LnZhbHVlIG5nLWNsYXNzPVwie1xcJ2gtNTBcXCc6JGluZGV4PjAsXFwnaC03NVxcJzokaW5kZXg9PTB9XCIgc3R5bGU9XCJib3JkZXItYm90dG9tOiAzcHggc29saWRcIiBjbGFzcz1ib3JkZXItc3VjY2Vzcz48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTIwIHAtMCBib3JkZXIgc2hhZG93LXNtIG1iLTJcIj48ZGl2IG5nLXJlcGVhdD1cIkRFSWxpc3QgaW4gc2VsZWN0ZWRGaWxlQ29ubmVjdG9yLkRFSVwiPjxkaXYgbmctaWY9XCIkaW5kZXg9PTBcIiBjbGFzcz1cImNvbC1hdXRvIGJnLWxpZ2h0IHB4LTJcIj57e3NlbGVjdGVkRmlsZUNvbm5lY3Rvci5kaXNwbGF5TmFtZX19ICh7e3NlbGVjdGVkRmlsZUNvbm5lY3Rvci53aWRnZXRJZH19KSBEYXRhc2V0OiB7e3NlbGVjdGVkRmlsZUNvbm5lY3Rvci5kYXRhc2V0SWR9fTwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMCBteS1hdXRvXCIgbmctY2xhc3M9XCJ7XFwnbWwtbjIgbXItMlxcJzpERUlsaXN0LnZhbHVlfVwiPjxpIGNsYXNzPVwiZmEgZmEtcGx1Z1wiIG5nLWNsYXNzPVwie1xcJ3RleHQtc3VjY2VzcyBmYS1yb3RhdGUtOTBcXCc6REVJbGlzdC52YWx1ZSxcXCd0ZXh0LWRhbmdlclxcJzohREVJbGlzdC52YWx1ZX1cIj48L2k+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIGN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveCBtbC0yXCIgfVwiPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IGlkPWNiREVJe3tzZWxlY3RlZEZpbGVDb25uZWN0b3IubG9jYWxXaWRnZXRJZH19e3tERUlsaXN0Lm5hbWV9fSBuZy1tb2RlbD1ERUlsaXN0LnZhbHVlPiA8bGFiZWwgY2xhc3M9XCJjdXN0b20tY29udHJvbC1sYWJlbCBsYWJlbC14c1wiIGZvcj1jYkRFSXt7c2VsZWN0ZWRGaWxlQ29ubmVjdG9yLmxvY2FsV2lkZ2V0SWR9fXt7REVJbGlzdC5uYW1lfX0+e3tERUlsaXN0LmRpc3BsYXlOYW1lfX0gKHt7REVJbGlzdC5uYW1lfX0pPC9sYWJlbD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBteS0yXCI+PGRpdiBjbGFzcz1cImNvbCBwLTAgdGV4dC1yaWdodFwiPjxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtd2FybmluZyBidG4tc21cIiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1sb2NhbFZhcnMuY2FuY2VsRmlsZUNvbm5lY3RvcigpPkNhbmNlbDwvYnV0dG9uPiA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYnRuLXNtXCIgdHlwZT1idXR0b24gbmctY2xpY2s9bG9jYWxWYXJzLm9rRmlsZUNvbm5lY3RvcigpPkNvbmZpcm08L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0yXCIgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1jb2wtMTI+PGRpdiBjbGFzcz1teS0yPjxsYWJlbD5IZWFkZXIgdGl0bGU8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLk5hbWU+PC9kaXY+PGRpdiBjbGFzcz1teS0yPjxsYWJlbD5FcnJvciBtc2c8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLkVycm9yTXNnPjwvZGl2PjxkaXYgY2xhc3M9bXktMj48bGFiZWw+TWluLiBmaWxlcyByZXF1aXJlZDwvbGFiZWw+IDxpbnB1dCB0eXBlPW51bWJlciBtaW49MCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5NZXRhRGF0YVswXS5taW4gbmctaW5pdD1cImZkLk1ldGFEYXRhWzBdLm1pbj0wXCI+PC9kaXY+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveCBteS0yXCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgaWQ9Y2JSZWFkT25seSBuZy1tb2RlbD1mZC5SZWFkT25seT4gPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgbGFiZWwteHNcIiBmb3I9Y2JSZWFkT25seT5EbyBOT1QgYWxsb3cgbWFudWFsIHVwbG9hZDwvbGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb2wtMTI+PGxhYmVsPkFkZCBGaWxlIHR5cGU6PC9sYWJlbD48dWktc2VsZWN0IG5nLW1vZGVsPXNlbGVjdGVkRmlsZXMgb24tc2VsZWN0PVwib25TZWxlY3RDYWxsYmFjazIoJGl0ZW0sICRtb2RlbCwkaW5kZXgpXCIgbmctZGlzYWJsZWQ9ZGlzYWJsZWQgbmFtZT17e2ZkLk5hbWV9fSBuZy1yZXF1aXJlZD17e2ZkLlJlcXVpcmVkfX0gcmVzZXQtc2VhcmNoLWlucHV0PWZhbHNlPjx1aS1zZWxlY3QtbWF0Y2ggY2xhc3M9dWktc2VsZWN0LW1hdGNoIHBsYWNlaG9sZGVyPXt7ZmQuTGFiZWx9fT48c3Bhbj57eyRzZWxlY3Quc2VsZWN0ZWQucmVzb3VyY2VkZWZsYW5nX3NldFswXS5OYW1lfX08L3NwYW4+IDxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGluayBmbG9hdC1yaWdodFwiIG5nLWNsaWNrPVwiY2xlYXIoJGV2ZW50LCAkc2VsZWN0KVwiPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+PC9hPjwvdWktc2VsZWN0LW1hdGNoPjx1aS1zZWxlY3QtY2hvaWNlcyBjbGFzcz11aS1zZWxlY3QtY2hvaWNlcyByZXBlYXQ9XCJmZiBpbiAobGlzdE9mRmlsZVR5cGVzfCBmaWx0ZXI6IHsgaWQ6ICRzZWxlY3Quc2VhcmNoIH0pIHRyYWNrIGJ5IGZmLmlkXCIgcmVmcmVzaD1yZWZyZXNoUmVzdWx0cygkc2VsZWN0KSByZWZyZXNoLWRlbGF5PTA+PHNwYW4+e3tmZi5yZXNvdXJjZWRlZmxhbmdfc2V0WzBdLk5hbWV9fTwvc3Bhbj48L3VpLXNlbGVjdC1jaG9pY2VzPjwvdWktc2VsZWN0PjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4teHMgbXktMVwiIG5nLWNsaWNrPWFkZFJ1bGVEZWZpbml0aW9uKGZkLmZpbGV0eXBlLGZkLm1pbixmZC5tYXgsZmQubWluVG90YWwpPjxpIGNsYXNzPVwiZmEgZmEtcGx1c1wiPjwvaT4gQWRkPC9idXR0b24+PGRpdiBuZy1zaG93PWZkLk1ldGFEYXRhLmxlbmd0aD48dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zbVwiIHN0eWxlPVwiZm9udC1zaXplOiAxMnB4O1wiPjx0aGVhZD48dHI+PHRoPkZpbGVUeXBlPC90aD48dGg+TWluPC90aD48dGg+TWF4PC90aD48L3RyPjwvdGhlYWQ+PHRib2R5Pjx0ciBuZy1yZXBlYXQ9XCJydWwgaW4gZmQuTWV0YURhdGFcIiBuZy1pZj1cIiRpbmRleCA+IDBcIj48dGQ+PHVsIHN0eWxlPWxpc3Qtc3R5bGU6bm9uZTtwYWRkaW5nLWxlZnQ6MD48bGkgbmctcmVwZWF0PVwiaXRlbSBpbiAobGlzdE9mRmlsZVR5cGVzIHwgZmlsdGVyOiB7IGlkOiBydWwubmFtZSB9KSB0cmFjayBieSAkaW5kZXhcIj57eyBpdGVtLnJlc291cmNlZGVmbGFuZ19zZXRbMF0uTmFtZSB9fTwvbGk+PC91bD48L3RkPjx0ZD48aW5wdXQgdHlwZT1udW1iZXIgbWluPTAgbmctbW9kZWw9cnVsLm1pbiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48L3RkPjx0ZD48aW5wdXQgdHlwZT1udW1iZXIgbWluPTAgbmctbW9kZWw9cnVsLm1heCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48L3RkPjx0ZD48YSB0aXRsZT1SZW1vdmUgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFuZ2VyIGJvcmRlci0wXCIgbmctY2xpY2s9cmVtb3ZlKCRpbmRleCk+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2E+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RVcGxvYWRGaWxlLmh0bWwnLCc8ZGl2IGNsYXNzPXdpZGdldC1oZWFkIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1hY3RpdmUgbS0yIHNoYWRvd1xcJzpmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU+MH1cIj48ZGl2IGNsYXNzPVwicm93IG0tMCBtYi0xIHAtMCBiZy1saWdodFwiIG5nLWlmPVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTFcIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtaGVhZC1hY3RpdmVcXCc6ZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPjAsXFwnYmctbGlnaHRcXCc6ZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wfVwiPjxkaXYgY2xhc3M9XCJjb2wgcC0wXCI+PGkgY2xhc3M9XCJmYSBmYS11cGxvYWQgbXgtMlwiPjwvaT48bGFiZWw+VXBsb2FkIGZpbGUgKHt7ZmQuUHJlc2VudGF0aW9uSWR9fSk8L2xhYmVsPiA8YSBocmVmIHRpdGxlPXNvcnQgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LXByb3BcXCc6ZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0wIHx8IGZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkfVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIHt7Z3JpZFR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIHdpZGdldC1wcm9wXCI+PGkgY2xhc3M9XCJ7e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZSBmYXMgZmEtZ3JpcC12ZXJ0aWNhbFwiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxhIGhyZWYgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCBidG4tc21cIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtcHJvcFxcJzpmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT11bmRlZmluZWR9XCIgdGl0bGU9XCJTaG93L2hpZGUgcHJvcGVydGllc1wiIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5zaG93UHJvcGVydGllcygyLHRydWUpPjxpIGNsYXNzPVwiZmFzIGZhLWNvZ1wiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxkaXYga3QtdGFzay1kcm9wZG93bj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLXNob3c9XCIoZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTEgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPTEgJiYgIWZkLlBhcmFtZXRlcnMuSGlkZUxhYmVsKSB8fCBmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTJcIiBzdHlsZT17e2ZkLmxhYmVsQWxpZ259fSBjbGFzcz1cInAtMCB7e2ZkLmdyaWRDbGFzc0xhYmVsfX1cIiBuZy1jbGFzcz1cIntcXCdjb2wtYXV0b1xcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemV9XCI+PGxhYmVsIGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnbGFiZWxcXCdcIiBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlTGFiZWx9fSBmb3I9e3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19IGNsYXNzPVwicC0wIG1hcmdpbkw1IGZvcm0tY29udHJvbC1sYWJlbCBuby1ib3JkZXIgYWxpZ24tbWlkZGxlXCIgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZH19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS4kaW52YWxpZCxcXCdjdXN0b20tZWwtbGF5b3V0LXN0eWxlXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MX1cIj57e2ZkLkxhYmVsfX08L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9XCJ7e2ZkLmdyaWRDbGFzc0VsZW1lbnR9fSBteS1hdXRvIHAtMFwiPjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1mb3JtPXVwbG9hZEZpbGVGb3Jte3tmZC5QcmVzZW50YXRpb25JZH19IG5nLXNob3c9XCIoZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTEgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUhPTEpIHx8IGZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MlwiPjxkaXYgbmctaWY9XCIoZmQubG9jYWxWYXJzLlNob3dVcGxvYWRGaWxlICYmIGZkLlBhcmFtZXRlcnMuU2hvd1Jlc2V0QnV0dG9uKSB8fCAhZmQuUGFyYW1ldGVycy5TaG93UmVzZXRCdXR0b25cIiBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2VsZW1lbnRcXCdcIiBuZy1jbGFzcz1cIntcXCdjdXN0b20tZWwtbGF5b3V0LXN0eWxlIGNvbC1hdXRvXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSxcXCdjb2wtYXV0b1xcJzogZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlIT0xfVwiIHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVFbGVtZW50fX0gY2xhc3M9XCJib3JkZXIgcC00IHJvdW5kZWRcIj48ZGl2IGNsYXNzPVwibXktMiBweC0yIGg1IHBvc2l0aW9uLWFic29sdXRlXCIgc3R5bGU9XCJ3aWR0aDogY2FsYygxMDAlIC0gNDhweCk7IHRleHQtYWxpZ246IGNlbnRlcjsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAyNHB4XCI+PGkgY2xhc3M9XCJmYSBmYS1maWxlLXVwbG9hZFwiIHN0eWxlPWZvbnQtc2l6ZToxMDBweDtjb2xvcjojY2FkN2Y4PjwvaT4gPHNwYW4gY2xhc3M9Zm9udC13ZWlnaHQtYm9sZCBzdHlsZT1mb250LXNpemU6MjRweDtjb2xvcjojMmM2MGY1Pnt7ZmQuU2VhcmNoVGV4dH19PC9zcGFuPiA8c3BhbiBjbGFzcz1mb250LXdlaWdodC1ib2xkIHN0eWxlPWZvbnQtc2l6ZToyNHB4O2NvbG9yOiMyYzYwZjUgbmctaWY9XCJmZC5TZWFyY2hUZXh0PT09dW5kZWZpbmVkIHx8IGZkLlNlYXJjaFRleHQ9PT1cXCdcXCdcIj5vciBkcmFnIGFuZCBkcm9wIGZpbGVzIGJlbGxvdzwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPXVwbG9hZC1hcmVhPjxpbnB1dCBpZD1maWxlV2lkZ2V0e3tmZC5QcmVzZW50YXRpb25JZH19IG11bHRpcGxlIHR5cGU9ZmlsZSBuYW1lPW1vamZpbGUgY2xhc3M9XCJmaWxlRWxlbWVudCBvcmlnaW5hbC11cGxvYWQgdy0xMDAgcC00XCIgbmctbW9kZWw9ZmQubG9jYWxWYXJzLmZpbGVzIHZhbGlkZmlsZSBzdHlsZT1vcGFjaXR5OjA+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cIihmZC5sb2NhbFZhcnMuU2hvd1VwbG9hZEZpbGUgJiYgZmQuUGFyYW1ldGVycy5TaG93UmVzZXRCdXR0b24pIHx8ICFmZC5QYXJhbWV0ZXJzLlNob3dSZXNldEJ1dHRvblwiIHN0eWxlPXRleHQtYWxpZ246Y2VudGVyO21hcmdpbi10b3A6MjRweDs+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5XCIgbmctY2xpY2s9ZmQuYWRkRmlsZXNDbGljaygpPjxzcGFuPnt7ZmQuUGFyYW1ldGVyc0xhbmcuQnV0dG9uTGFiZWx9fTwvc3Bhbj48c3BhbiBuZy1pZj1cImZkLlBhcmFtZXRlcnNMYW5nLkJ1dHRvbkxhYmVsPT09dW5kZWZpbmVkIHx8IGZkLlBhcmFtZXRlcnNMYW5nLkJ1dHRvbkxhYmVsPT09XFwnXFwnXCI+U2VsZWN0IGZpbGVzPC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgaWRkPWVycm9yc0FyZWEgY2xhc3M9XCJtdC00IGQtZmxleCBmbGV4LWNvbHVtbiByb3ctZ2FwLThcIiBuZy1zaG93PXVwbG9hZEZpbGVGb3Jte3tmZC5QcmVzZW50YXRpb25JZH19LiRpbnZhbGlkIHN0eWxlPVwiZm9udC1zaXplOiAxNnB4OyBsaW5lLWhlaWdodDogMjRweDtcIj48ZGl2IG5nLXNob3c9XCJ1cGxvYWRGaWxlRm9ybXt7ZmQuUHJlc2VudGF0aW9uSWR9fS4kZXJyb3IuVG9vTWFueUZpbGVzIHx8IHVwbG9hZEZpbGVGb3Jte3tmZC5QcmVzZW50YXRpb25JZH19LiRlcnJvci5Ob3RFbm91Z2hGaWxlc1wiIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIHJvdy1nYXAtMTIgYmctZGFuZ2VyLTEwIGJvcmRlciBib3JkZXItZGFuZ2VyIHJvdW5kZWQgY29sLWF1dG8gcHgtNCBweS0xMlwiPjxkaXYgY2xhc3M9XCJkLWZsZXggY29sLWdhcC0yNFwiPjxpIGNsYXNzPVwiZmEgZmEtZXhjbGFtYXRpb24tY2lyY2xlIHRleHQtZGFuZ2VyXCIgc3R5bGU9XCJmb250LXNpemU6IDIwcHg7XCI+PC9pPiA8c3BhbiBjbGFzcz1cInRleHQtZGFyayBmb250LXdlaWdodC1ib2xkIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPnt7IGZkLkVycm9yTXNnIH19PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgbmctc2hvdz11cGxvYWRGaWxlRm9ybXt7ZmQuUHJlc2VudGF0aW9uSWR9fS4kZXJyb3IucmVxdWlyZWQgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gcm93LWdhcC0xMiBiZy1pbmZvLTIwIGJvcmRlciBib3JkZXItaW5mbyByb3VuZGVkIGNvbC1hdXRvIHB4LTQgcHktMTJcIj48ZGl2IGNsYXNzPVwiZC1mbGV4IGNvbC1nYXAtMjRcIj48aSBjbGFzcz1cImZhIGZhLWJlbGwgdGV4dC1pbmZvXCIgc3R5bGU9XCJmb250LXNpemU6IDIwcHg7XCI+PC9pPiA8c3BhbiBjbGFzcz1cInRleHQtZGFyayBmb250LXdlaWdodC1ib2xkIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPnt7IGZkLlBhcmFtZXRlcnNMYW5nLkVycm9yTm9NZXRhZGF0YSB8fCBcXCdCZWZvcmUgdXBsb2FkLCBhbGwgZGF0YSBmcm9tIHRoZSBmb3JtIG11c3QgYmUgZW50ZXJlZCFcXCcgfX08L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBzdHlsZT1cImRpc3BsYXk6Z3JpZDsgZ2FwOjRweDsgbWFyZ2luLXRvcDoyNHB4XCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgdXBsb2FkLWFicy1jb250YWluZXJcIj48ZGl2IGNsYXNzPVwiY29sLTI0IHJvdy11cGxvYWQgcHgtMCByb3VuZGVkXCIgc3R5bGU9YmFja2dyb3VuZC1jb2xvcjojY2FkN2Y4PjxkaXYgaWRkPWhlYWRlciBjbGFzcz1teS1hdXRvPjxidXR0b24gdHlwZT1idXR0b24gbmctaWY9ZmQubG9jYWxWYXJzLmhpZGVBbGwgY2xhc3M9XCJidG4gcC0wIGJvcmRlci0wIGJ0bi1saW5rIHRleHQtZGFya1wiIG5nLWNsaWNrPVwiZmQubG9jYWxWYXJzLmhpZGVBbGw9IWZkLmxvY2FsVmFycy5oaWRlQWxsO2ZkLmxvY2FsVmFycy5zaG93QWxsKHRydWUpXCI+PGkgY2xhc3M9XCJmYSBmYS1hbmdsZS11cFwiIHN0eWxlPVwiZm9udC1zaXplOjEuMjVyZW07cGFkZGluZzo2cHggMTJweFwiPjwvaT48L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1pZj0hZmQubG9jYWxWYXJzLmhpZGVBbGwgY2xhc3M9XCJidG4gcC0wIGJvcmRlci0wIGJ0bi1saW5rIHRleHQtZGFya1wiIG5nLWNsaWNrPVwiZmQubG9jYWxWYXJzLmhpZGVBbGw9IWZkLmxvY2FsVmFycy5oaWRlQWxsO2ZkLmxvY2FsVmFycy5zaG93QWxsKGZhbHNlKVwiPjxpIGNsYXNzPVwiZmEgZmEtYW5nbGUtZG93blwiIHN0eWxlPVwiZm9udC1zaXplOjEuMjVyZW07cGFkZGluZzo2cHggMTJweFwiPjwvaT48L2J1dHRvbj48L2Rpdj48c3BhbiBjbGFzcz1cImNvbC11cGxvYWQgbXktYXV0byBmb250LXdlaWdodC1ib2xkXCI+e3tmZC5QYXJhbWV0ZXJzLkZpbGVOYW1lTGFiZWwgfHwgXFwnTmFtZVxcJ319PC9zcGFuPiA8c3BhbiBjbGFzcz1cImNvbC11cGxvYWQgbXktYXV0byBmb250LXdlaWdodC1ib2xkIHVwbG9hZC1jb2wtb3B0aW9uYWxcIj57e2ZkLlBhcmFtZXRlcnMuRmlsZVR5cGVMYWJlbCB8fCBcXCdUeXBlXFwnfX08L3NwYW4+IDxzcGFuIGNsYXNzPVwiY29sLXVwbG9hZCBteS1hdXRvIGZvbnQtd2VpZ2h0LWJvbGRcIj57e2ZkLlBhcmFtZXRlcnMuRmlsZVNpemVMYWJlbCB8fCBcXCdTaXplXFwnfX08L3NwYW4+IDxzcGFuIGNsYXNzPVwiY29sLXVwbG9hZCBteS1hdXRvIGZvbnQtd2VpZ2h0LWJvbGRcIj57e2ZkLlBhcmFtZXRlcnMuRmlsZVN0YXR1c0xhYmVsIHx8IFxcJ1N0YXR1c1xcJ319PC9zcGFuPjxkaXYgY2xhc3M9XCJ1cGxvYWQtZGVsZXRlLWNvbnRhaW5lciBteS1hdXRvXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGluayBmb250LXdlaWdodC1ib2xkIHRleHQtZGFuZ2VyIHRleHQtcmlnaHQgcC0wIHVwbG9hZC1kZWxldGUtdGV4dFwiIHN0eWxlPXRleHQtZGVjb3JhdGlvbjpub25lIG5nLWlmPVwiZmQubG9jYWxWYXJzLmZpbGVzLmxlbmd0aD4wXCIgbmctY2xpY2s9YnRuX2NsZWFuKCk+PHNwYW4gbmctaWY9XCJmZC5QYXJhbWV0ZXJzTGFuZy5SZW1vdmVBbGxCdXR0b25MYWJlbCE9PXVuZGVmaW5lZFwiPnt7ZmQuUGFyYW1ldGVyc0xhbmcuUmVtb3ZlQWxsQnV0dG9uTGFiZWx9fTwvc3Bhbj4gPHNwYW4gbmctaWY9XCJmZC5QYXJhbWV0ZXJzTGFuZy5SZW1vdmVBbGxCdXR0b25MYWJlbD09PXVuZGVmaW5lZFwiPlJlbW92ZSBhbGw8L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb2wtbGctMjQgbmctaWY9XCJyZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uICYmIGZkLnNlbGVjdGVkUnVsZUluZGV4IT09bnVsbCAmJiBmZC5zZWxlY3RlZFJ1bGVJbmRleCE9PXVuZGVmaW5lZFwiPjxkaXYga3QtZ3JpZCBncmlkLXR5cGU9ZmQuUGFyYW1ldGVycy5ydWxlc1tmZC5zZWxlY3RlZFJ1bGVJbmRleF0uZ3JpZHN0ZXJUeXBlIHJlc291cmNlLWZvcm0tbG9hZGVkPWZkLlBhcmFtZXRlcnMucnVsZXNbZmQuc2VsZWN0ZWRSdWxlSW5kZXhdLmZvcm1Mb2FkZWQgcGFyZW50LXJlc291cmNlLWRlZi1pZD0wIHJlc291cmNlLXJlY29yZC1pZD0wIHJlc291cmNlLWRlZmluaXRpb249ZmQubG9jYWxWYXJzLnJlc291cmNlRGVmaW5pdGlvbiBmb3JtLXBhcmFtcy1wYXJlbnQ9ZmQubG9jYWxWYXJzLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zIGZvcm0tcGFyYW1zPWZkLlBhcmFtZXRlcnMucnVsZXNbZmQuc2VsZWN0ZWRSdWxlSW5kZXhdLmZvcm1QYXJhbXMgZm9ybS1kYXRhPWZkLlBhcmFtZXRlcnMucnVsZXNbZmQuc2VsZWN0ZWRSdWxlSW5kZXhdLmZvcm1EYXRhIHBhcmVudD1mZC5Mb2FkZWRGb3JtIGFsbC1jb2x1bW5zPWZkLkxvYWRlZEZvcm0gY2xhc3M9a3RHcmlkPjwvZGl2PjwvZGl2PjxkaXYgbmctcmVwZWF0PVwiZmlsZSBpbiBmZC5sb2NhbFZhcnMuZmlsZXNcIiBpbmRleD0kaW5kZXggY2xhc3M9XCJtdC0xIGJvcmRlciByb3VuZGVkIHVwbG9hZC1hYnMtY29udGFpbmVyXCI+PGRpdiBjbGFzcz1cInJvdy11cGxvYWQgbS0wIHB4LTBcIj48ZGl2IHN0eWxlPVwiZ3JpZC1jb2x1bW4tc3RhcnQ6IDFcIiBuZy1pZj1cIihmaWxlLmZpbGVUeXBlU2VsZWN0ZWQgfHwgIWZkLnNob3dGaWxlU2VsZWN0KSAmJiAhZmQuUGFyYW1ldGVycy5WZXJpZnlPbmx5ICYmICFmZC5QYXJhbWV0ZXJzLk5vTWV0YVwiIGNsYXNzPW15LWF1dG8+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1zaG93PWZpbGUuaGlkZUZvcm0gY2xhc3M9XCJidG4gcC0wIGJvcmRlci0wIGJ0bi1saW5rIHRleHQtZGFya1wiIG5nLWNsaWNrPVwiZmlsZS5oaWRlRm9ybT0hZmlsZS5oaWRlRm9ybVwiPjxpIGNsYXNzPVwiZmEgZmEtYW5nbGUtZG93blwiIHN0eWxlPVwiZm9udC1zaXplOjEuMjVyZW07cGFkZGluZzo2cHggMTJweFwiPjwvaT48L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1zaG93PSFmaWxlLmhpZGVGb3JtIGNsYXNzPVwiYnRuIHAtMCBib3JkZXItMCBidG4tbGluayB0ZXh0LWRhcmtcIiBuZy1jbGljaz1cImZpbGUuaGlkZUZvcm09IWZpbGUuaGlkZUZvcm1cIj48aSBjbGFzcz1cImZhIGZhLWFuZ2xlLXVwXCIgc3R5bGU9XCJmb250LXNpemU6MS4yNXJlbTtwYWRkaW5nOjZweCAxMnB4XCI+PC9pPjwvYnV0dG9uPjwvZGl2PjxzcGFuIHN0eWxlPVwiZ3JpZC1jb2x1bW4tc3RhcnQ6IDI7b3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XCIgY2xhc3M9XCJjb2wtdXBsb2FkIG15LWF1dG9cIj57e2ZpbGUubmFtZX19PC9zcGFuPiA8c3BhbiBzdHlsZT1cImdyaWQtY29sdW1uLXN0YXJ0OiAzXCIgY2xhc3M9XCJjb2wtdXBsb2FkIG15LWF1dG8gdXBsb2FkLWNvbC1vcHRpb25hbFwiPnt7IGZpbGUubmFtZS5zcGxpdChcIi5cIikucG9wKCkgfX08L3NwYW4+IDxzcGFuIHN0eWxlPVwiZ3JpZC1jb2x1bW4tc3RhcnQ6IDRcIiBjbGFzcz1cImNvbC11cGxvYWQgbXktYXV0b1wiPnt7IChmaWxlLnNpemUvMTAwMCkudG9GaXhlZCgyKSB9fSA8Yj5rYjwvYj48L3NwYW4+PGRpdiBjbGFzcz1cImNvbC1hdXRvIG15LWF1dG9cIiBuZy1pZj1mZC5QYXJhbWV0ZXJzLlZlcmlmeU9ubHkgbmctaGlkZT1maWxlLnVwbG9hZFN1Y2Nlc3M+PGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1maWxlLmZpbGVWZXJpZmljYXRpb25JZD48L2Rpdj48ZGl2IHN0eWxlPVwiZ3JpZC1jb2x1bW4tc3RhcnQ6IDVcIiBjbGFzcz1teS1hdXRvPjxwcm9ncmVzcyBzdHlsZT13aWR0aDoxMDAlIHZhbHVlPXt7ZmlsZS5sb2FkZWR9fSBtYXg9e3tmaWxlLnNpemV9fT48L3Byb2dyZXNzPjxpIG5nLXNob3c9XCJmaWxlLnVwbG9hZFN1Y2Nlc3MgfHwgZmlsZS51cGxvYWRFcnJvclwiIHRpdGxlPVwiRmlsZSB1cGxvYWQgY29tcGxldGVkXCIgY2xhc3M9XCJmYSBmYS11cGxvYWQgdGV4dC1wcmltYXJ5IGZhLWxnXCI+PC9pPiA8aSBuZy1zaG93PWZpbGUudXBsb2FkU3VjY2VzcyB0aXRsZT1TdWNjZXNzIGNsYXNzPVwiZmEgZmEtY2hlY2stY2lyY2xlIHRleHQtc3VjY2Vzc1wiPjwvaT4gPGkgbmctc2hvdz1maWxlLnVwbG9hZEVycm9yIHRpdGxlPUVycm9yIGNsYXNzPVwiZmEgZmEtdGltZXMtY2lyY2xlIHRleHQtZGFuZ2VyXCI+PC9pPiA8YSBuZy1zaG93PWZpbGUubWV0YVN1Y2Nlc3MgbmctY2xpY2s9b3Blbk1vZGFsRmlsZU1ldGFkYXRhKCRpbmRleCkgaHJlZj48aSBuZy1zaG93PVwiKGZpbGUubWV0YVN1Y2Nlc3MgfHwgZmlsZS5tZXRhRXJyb3IpICYmICFmaWxlLm5vTWV0YVwiIHRpdGxlPVwiRmlsZSBtZXRhZGF0YSB1cGxvYWRcIiBjbGFzcz1cImZhIGZhLWxpc3QtYWx0IGZhLWxnXCI+PC9pPjwvYT4gPGkgbmctc2hvdz1cImZpbGUubWV0YVN1Y2Nlc3MgJiYgIWZpbGUubm9NZXRhXCIgdGl0bGU9U3VjY2VzcyBjbGFzcz1cImZhIGZhLWNoZWNrLWNpcmNsZSB0ZXh0LXN1Y2Nlc3NcIj48L2k+IDxpIG5nLXNob3c9ZmlsZS5tZXRhRXJyb3IgdGl0bGU9RXJyb3IgY2xhc3M9XCJmYSBmYS10aW1lcy1jaXJjbGUgdGV4dC1kYW5nZXJcIj48L2k+IDxzcGFuIG5nLWhpZGU9ZmlsZS51cGxvYWRTdWNjZXNzPnt7ZmlsZS5zdGF0dXN9fTwvc3Bhbj48aWZyYW1lIG5nLWlmPVwiZmlsZS5tZXRhU3VjY2Vzcz09ZmFsc2VcIiBzdHlsZT1cImJvcmRlcjpub25lO21pbi13aWR0aDogMzVyZW07d2lkdGg6MTAwJTtvdmVyZmxvdzogYXV0bztvdmVyZmxvdy1jbGlwLW1hcmdpbjogdW5zZXQ7XCIgc3JjZG9jPVwie3sgY29udmVydFRvSHRtbChmaWxlLm1ldGFTdGF0dXMpIH19XCI+PC9pZnJhbWU+PC9kaXY+PGRpdiBzdHlsZT1cImdyaWQtY29sdW1uLXN0YXJ0OiA2XCIgY2xhc3M9XCJjb2wtYXV0byBteS1hdXRvIHVwbG9hZC1kZWxldGUtY29udGFpbmVyXCIgbmctaGlkZT1maWxlLnVwbG9hZFN1Y2Nlc3M+PGJ1dHRvbiBuZy1jbGljaz1idG5fcmVtb3ZlKCRpbmRleCxmaWxlKSB0eXBlPWJ1dHRvbiBocmVmIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHVwbG9hZC1kZWxldGUtdGV4dCBmb250LXdlaWdodC1ib2xkIHRleHQtZGFuZ2VyIHAtMCB0ZXh0LXJpZ2h0XCIgdGl0bGU9XCJSZW1vdmUgZnJvbSBsaXN0IHRvIGJlIHVwbG9hZGVkXCIgc3R5bGU9dGV4dC1kZWNvcmF0aW9uOm5vbmU+PHNwYW4gbmctaWY9XCJmZC5QYXJhbWV0ZXJzTGFuZy5SZW1vdmVCdXR0b25MYWJlbCE9PXVuZGVmaW5lZFwiPnt7ZmQuUGFyYW1ldGVyc0xhbmcuUmVtb3ZlQnV0dG9uTGFiZWx9fTwvc3Bhbj4gPHNwYW4gbmctaWY9XCJmZC5QYXJhbWV0ZXJzTGFuZy5SZW1vdmVCdXR0b25MYWJlbD09PXVuZGVmaW5lZFwiPlJlbW92ZSBmaWxlPC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBteS1hdXRvXCIgbmctc2hvdz1maWxlLnVwbG9hZFN1Y2Nlc3M+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTBcIiBuZy1zaG93PVwiKGZpbGUuZmlsZVR5cGVTZWxlY3RlZCB8fCAhZmQuc2hvd0ZpbGVTZWxlY3QpICYmICFmZC5QYXJhbWV0ZXJzLlZlcmlmeU9ubHkgJiYgIWZkLlBhcmFtZXRlcnMuTm9NZXRhXCIgbmctaGlkZT1maWxlLmhpZGVGb3JtPjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxkaXYga3QtZ3JpZCBncmlkLXR5cGU9ZmlsZS5ncmlkc3RlclR5cGUgcmVzb3VyY2UtZm9ybS1sb2FkZWQ9ZmlsZS5mb3JtTG9hZGVkIHBhcmVudC1yZXNvdXJjZS1kZWYtaWQ9ZmlsZS5QYXJlbnREYXRhc2V0RGVmSWQgcmVzb3VyY2UtcmVjb3JkLWlkPWZpbGUuZGF0YXNldFJlY29yZElkIHJlc291cmNlLWRlZmluaXRpb249dGFza0RlZmluaXRpb24gZm9ybS1wYXJhbXMtcGFyZW50PWZpbGUuZm9ybVBhcmFtcyBmb3JtLXBhcmFtcz1maWxlLmZvcm1QYXJhbXMgZm9ybS1kYXRhPWZpbGUuZGFzaGJvYXJkLmZvcm1EYXRhIHBhcmVudD1maWxlLmRhc2hib2FyZC53aWRnZXRzIGFsbC1jb2x1bW5zPWZpbGUuZGFzaGJvYXJkLndpZGdldHMgY2xhc3M9a3RHcmlkPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmaWxlLmVvc1Jlc3BvbnNlIT1udWxsICYmIGZpbGUuZW9zUmVzcG9uc2UhPXVuZGVmaW5lZCAmJiAhZmQuUGFyYW1ldGVycy5WZXJpZnlPbmx5XCIgY2xhc3M9XCJwLTEgbXQtMVwiPjxkaXY+PGEgaHJlZiBuZy1jbGljaz1cInNob3dUcmFuc2FjdGlvbkRldGFpbHM9IXNob3dUcmFuc2FjdGlvbkRldGFpbHNcIj5CbG9ja2NoYWluIHRyYW5zYWN0aW9uIGRldGFpbHM8L2E+PC9kaXY+PGRpdiBuZy1zaG93PXNob3dUcmFuc2FjdGlvbkRldGFpbHM+PHByZT57ezo6ZmlsZS5lb3NSZXNwb25zZX19PC9wcmU+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImZpbGUuZW9zUmVzcG9uc2UyIT1udWxsICYmIGZpbGUuZW9zUmVzcG9uc2UyIT11bmRlZmluZWQgJiYgZmQuUGFyYW1ldGVycy5WZXJpZnlPbmx5ICYmIGZpbGUuZmlsZUZvdW5kXCIgY2xhc3M9XCJwLTEgbXQtMVwiPjxzcGFuIG5nLWlmPVwiZmlsZS5maWxlSGFzaD09ZmlsZS5ibG9ja2NoYWluSGFzaFwiIGNsYXNzPXRleHQtc3VjY2Vzcz5GaWxlIGhhc2ggaXMgYSBwZXJmZWN0IG1hdGNoIHRvIHRoZSBoYXNoIHN0b3JlZCBvbiBibG9ja2NoYWluITwvc3Bhbj4gPHNwYW4gbmctaWY9XCJmaWxlLmZpbGVIYXNoIT1maWxlLmJsb2NrY2hhaW5IYXNoXCIgY2xhc3M9dGV4dC1kYW5nZXI+RmlsZSBoYXNoIGRvZXMgbm90IG1hdGNoIHRvIHRoZSBoYXNoIHN0b3JlZCBvbiBibG9ja2NoYWluITwvc3Bhbj48L2Rpdj48ZGl2IG5nLWlmPVwiZmlsZS5lb3NSZXNwb25zZTIhPW51bGwgJiYgZmlsZS5lb3NSZXNwb25zZTIhPXVuZGVmaW5lZFwiIGNsYXNzPVwicC0xIG10LTFcIj48ZGl2PjxhIGhyZWYgbmctY2xpY2s9XCJzaG93UmVjb3JkRGV0YWlscz0hc2hvd1JlY29yZERldGFpbHNcIj5CbG9ja2NoYWluIHJlY29yZDwvYT48L2Rpdj48cHJlIG5nLXNob3c9c2hvd1JlY29yZERldGFpbHM+e3s6OmZpbGUuZW9zUmVzcG9uc2UyfX08L3ByZT48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXJvdz48ZGl2IGNsYXNzPVwiY29sLTI0IHRleHQtcmlnaHRcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG10LTRcIiBuZy1kaXNhYmxlZD1pc1NhdmluZyBuZy1pZj1cIihmZC51cGxvYWRSZWFkeSAmJiAhZmQuUmVhZE9ubHkgJiYgKGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0yIHx8IGZvcm1QYXJhbXNQYXJlbnQuZm9ybVZpZXdUeXBlPT0yKSkgfHwgZmQubG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPT0yXCIgbmctY2xpY2s9YnRuX3VwbG9hZCgpPjxzcGFuIG5nLWlmPVwiZmQuUGFyYW1ldGVyc0xhbmcuVXBsb2FkQnV0dG9uTGFiZWwhPT11bmRlZmluZWRcIj57e2ZkLlBhcmFtZXRlcnNMYW5nLlVwbG9hZEJ1dHRvbkxhYmVsfX08L3NwYW4+IDxzcGFuIG5nLWlmPVwiZmQuUGFyYW1ldGVyc0xhbmcuVXBsb2FkQnV0dG9uTGFiZWw9PT11bmRlZmluZWRcIj5VcGxvYWQ8L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1yb3cgbmctaWY9XCIhZmQubG9jYWxWYXJzLlNob3dVcGxvYWRGaWxlICYmIGZkLlBhcmFtZXRlcnMuU2hvd1Jlc2V0QnV0dG9uXCI+PGRpdiBjbGFzcz1cImNvbC0yNCB0ZXh0LXJpZ2h0XCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtdC00XCIgbmctZGlzYWJsZWQ9aXNTYXZpbmcgbmctaWY9XCIoZmQudXBsb2FkUmVhZHkgJiYgIWZkLlJlYWRPbmx5ICYmIChmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MiB8fCBmb3JtUGFyYW1zUGFyZW50LmZvcm1WaWV3VHlwZT09MikpIHx8IGZkLmxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MlwiIG5nLWNsaWNrPWJ0bl91cGxvYWQoKT48c3BhbiBuZy1pZj1cImZkLlBhcmFtZXRlcnNMYW5nLlVwbG9hZEJ1dHRvbkxhYmVsIT09dW5kZWZpbmVkXCI+e3tmZC5QYXJhbWV0ZXJzTGFuZy5VcGxvYWRCdXR0b25MYWJlbH19PC9zcGFuPiA8c3BhbiBuZy1pZj1cImZkLlBhcmFtZXRlcnNMYW5nLlVwbG9hZEJ1dHRvbkxhYmVsPT09dW5kZWZpbmVkXCI+VXBsb2FkPC9zcGFuPjwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG10LTQgbWwtMlwiIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5SZXNldFVwbG9hZCgpPjxzcGFuIG5nLWlmPVwiZmQuUGFyYW1ldGVyc0xhbmcuUmVzZXRCdXR0b25MYWJlbCE9PXVuZGVmaW5lZFwiPnt7ZmQuUGFyYW1ldGVyc0xhbmcuUmVzZXRCdXR0b25MYWJlbH19PC9zcGFuPiA8c3BhbiBuZy1pZj1cImZkLlBhcmFtZXRlcnNMYW5nLlJlc2V0QnV0dG9uTGFiZWw9PT11bmRlZmluZWRcIj5SZXNldDwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwibW9kYWwgZmFkZVwiIHJvbGU9ZGlhbG9nIHRhYmluZGV4PS0xIGFyaWEtbGFiZWxsZWRieT1kYXRhc2V0TWFwcGVyUGFyZW50TW9kYWwgaWQ9ZGF0YXNldE1hcHBlclBhcmVudE1vZGFse3tmZC5QcmVzZW50YXRpb25JZH19IGFyaWEtaGlkZGVuPXRydWU+PGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1sZ1wiIHJvbGU9ZG9jdW1lbnQ+PGRpdiBjbGFzcz1tb2RhbC1jb250ZW50PjxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcHktMVwiPjxkaXYgY2xhc3M9XCJtb2RhbC10aXRsZSBmbnQxMiBjb2wgbXgtMCBteS0yXCI+PHNwYW4+UGFyZW50IGRhdGFzZXQgc2V0dXA8L3NwYW4+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9Y2xvc2UgZGF0YS1kaXNtaXNzPW1vZGFsIGFyaWEtbGFiZWw9Q2xvc2U+PHNwYW4gYXJpYS1oaWRkZW49dHJ1ZT5cXHhENzwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPW1vZGFsLWJvZHk+PGRpdiBrdC1kYXRhc2V0LW1hcHBlci1wYXJlbnQ+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VXBsb2FkRmlsZVByb3BlcnRpZXMuaHRtbCcsJzxkaXYgY2xhc3M9cC0xPjxkaXYgbmctaWY9XCJmZC5sb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTJcIiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGt0LXByb3BlcnR5LWhlYWRlcj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0yND48ZGl2IG5nLWZvcm09Zm9ybUZpbGVUeXBlPjxsYWJlbD5BZGQgRmlsZSB0eXBlOjwvbGFiZWw+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLW1vZGVsPWZkLmZpbGV0eXBlIHNlbGVjdGVkLWl0ZW1zPWZkLmZpbGV0eXBlIG9uLXNlbGVjdC1mbj1mZC5vblNlbGVjdENhbGxiYWNrMihpdGVtLG1vZGVsKSBpcy1tdWx0aXBsZT1mYWxzZSBuYW1lPWZpbGVUeXBlIG5nLXJlcXVpcmVkPWZhbHNlIGRyb3Bkb3duLWl0ZW1zPWZkLmxpc3RPZkZpbGVUeXBlcyBkcm9wZG93bi1pZD1cIlxcJ2ZpbGVUeXBlXFwnXCIgcGFyZW50LWZvcm0taWQ9XCJcXCdmb3JtRmlsZVR5cGVcXCdcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCBmaWxlIHR5cGVcXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4teHMgbXktMVwiIG5nLWNsaWNrPWZkLmFkZFJ1bGVEZWZpbml0aW9uKGZkLnNlbGVjdGVkRmlsZU5hbWUsZmQubWluLGZkLm1heCxmZC5taW5Ub3RhbCk+PGkgY2xhc3M9XCJmYSBmYS1wbHVzXCI+PC9pPiBBZGQ8L2J1dHRvbj48ZGl2IG5nLXNob3c9ZmQuUGFyYW1ldGVycy5ydWxlcy5sZW5ndGg+PHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtc21cIiBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDtcIj48dGhlYWQ+PHRyPjx0aCBjb2xzcGFuPTI+RmlsZSB0eXBlPC90aD48dGg+TWluPC90aD48dGg+TWF4PC90aD48L3RyPjwvdGhlYWQ+PHRib2R5Pjx0ciBuZy1yZXBlYXQ9XCJydWwgaW4gZmQuUGFyYW1ldGVycy5ydWxlc1wiPjx0ZCBjb2xzcGFuPTI+PHVsIHN0eWxlPWxpc3Qtc3R5bGU6bm9uZTtwYWRkaW5nLWxlZnQ6MD48bGk+e3sgcnVsLmZpbGVUeXBlLm5hbWUgfX0gKHt7IHJ1bC5maWxlVHlwZS5pZCB9fSk8L2xpPjwvdWw+PC90ZD48dGQ+PGlucHV0IHR5cGU9bnVtYmVyIG1pbj0wIG5nLW1vZGVsPXJ1bC5taW4gY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+PC90ZD48dGQ+PGlucHV0IHR5cGU9bnVtYmVyIG1pbj0wIG5nLW1vZGVsPXJ1bC5tYXggY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCI+PC90ZD48dGQ+PGJ1dHRvbiB0eXBlPWJ1dHRvbiB0aXRsZT1cIkxvYWQgZm9ybVwiIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tcHJpbWFyeVwiIG5nLWNsaWNrPWZkLmxvYWRGb3JtKCRpbmRleCk+PGkgY2xhc3M9XCJmYSBmYS1uZXdzcGFwZXItb1wiPjwvaT4gTG9hZCBmb3JtPC9idXR0b24+PC90ZD48dGQ+PGEgdGl0bGU9UmVtb3ZlIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tb3V0bGluZS1kYW5nZXIgYm9yZGVyLTBcIiBuZy1jbGljaz1mZC5yZW1vdmUoJGluZGV4KT48aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPjwvYT48L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvZGl2PjxkaXYgY2xhc3M9XCJteS0yIHRleHQtY2VudGVyXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cInctMTAwIGJ0biBidG4teHMgYnRuLXByaW1hcnlcIiBkYXRhLXRvZ2dsZT1tb2RhbCBkYXRhLXRhcmdldD0jZGF0YXNldE1hcHBlclBhcmVudE1vZGFse3tmZC5QcmVzZW50YXRpb25JZH19PjxzcGFuPkRlZmluZSBwYXJlbnQgZGF0YXNldDwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPW1iLTI+PGxhYmVsIGNsYXNzPXRleHQtbXV0ZWQ+SGVhZGVyIHRpdGxlPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5MYWJlbD48L2Rpdj48ZGl2IGNsYXNzPW1iLTI+PGxhYmVsIGNsYXNzPXRleHQtbXV0ZWQ+VXBsb2FkIGJ1dHRvbiBsYWJlbDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVyc0xhbmcuVXBsb2FkQnV0dG9uTGFiZWw+PC9kaXY+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWw+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuU2hvd1Jlc2V0QnV0dG9uIG5nLWNoZWNrZWQ9ZmQuUGFyYW1ldGVycy5TaG93UmVzZXRCdXR0b24+IFNob3cgcmVzZXQgYnV0dG9uPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPW1iLTI+PGxhYmVsIGNsYXNzPXRleHQtbXV0ZWQ+UmVzZXQgYnV0dG9uIGxhYmVsPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzTGFuZy5SZXNldEJ1dHRvbkxhYmVsPjwvZGl2PjxkaXYgY2xhc3M9bWItMj48bGFiZWwgY2xhc3M9dGV4dC1tdXRlZD5EZWZhdWx0IGVycm9yIG1zZzwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuRXJyb3JNc2c+PC9kaXY+PGRpdiBjbGFzcz1tYi0yPjxsYWJlbCBjbGFzcz10ZXh0LW11dGVkPkVycm9yIG1zZyAtIG1pbmltdW0gZmlsZXMgcmVxdWlyZW1lbnQ8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuRXJyb3JOb3RFbm91Z2hGaWxlcz48L2Rpdj48ZGl2IGNsYXNzPW1iLTI+PGxhYmVsIGNsYXNzPXRleHQtbXV0ZWQ+RXJyb3IgbXNnIC0gbWF4aW11bSBmaWxlcyBsaW1pdDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5FcnJvclRvb01hbnlGaWxlcz48L2Rpdj48ZGl2IGNsYXNzPW1iLTI+PGxhYmVsIGNsYXNzPXRleHQtbXV0ZWQ+RXJyb3IgbXNnIC0gbWV0YWRhdGEgbXVzdCBiZSBlbnRlcmVkPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkVycm9yTm9NZXRhZGF0YT48L2Rpdj48ZGl2IGNsYXNzPW1iLTI+PGxhYmVsIGNsYXNzPXRleHQtbXV0ZWQ+QnV0dG9uIGxhYmVsPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzTGFuZy5CdXR0b25MYWJlbD48L2Rpdj48ZGl2IGNsYXNzPW1iLTI+PGxhYmVsIGNsYXNzPXRleHQtbXV0ZWQ+RHJvcCBhcmVhIGxhYmVsPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5TZWFyY2hUZXh0PjwvZGl2PjxkaXYgY2xhc3M9bWItMj48bGFiZWwgY2xhc3M9dGV4dC1tdXRlZD5SZW1vdmUgYnV0dG9uIGxhYmVsPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzTGFuZy5SZW1vdmVCdXR0b25MYWJlbD48L2Rpdj48ZGl2IGNsYXNzPW1iLTI+PGxhYmVsIGNsYXNzPXRleHQtbXV0ZWQ+UmVtb3ZlIGFsbCBidXR0b24gbGFiZWw8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnNMYW5nLlJlbW92ZUFsbEJ1dHRvbkxhYmVsPjwvZGl2PjxkaXYgY2xhc3M9bWItMj48bGFiZWwgY2xhc3M9dGV4dC1tdXRlZD5GaWxlIG5hbWUgbGFiZWw8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuRmlsZU5hbWVMYWJlbD48L2Rpdj48ZGl2IGNsYXNzPW1iLTI+PGxhYmVsIGNsYXNzPXRleHQtbXV0ZWQ+RmlsZSB0eXBlIGxhYmVsPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkZpbGVUeXBlTGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1tYi0yPjxsYWJlbCBjbGFzcz10ZXh0LW11dGVkPkZpbGUgc2l6ZSBsYWJlbDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5GaWxlU2l6ZUxhYmVsPjwvZGl2PjxkaXYgY2xhc3M9bWItMj48bGFiZWwgY2xhc3M9dGV4dC1tdXRlZD5GaWxlIHN0YXR1cyBsYWJlbDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5GaWxlU3RhdHVzTGFiZWw+PC9kaXY+PGRpdiBuZy1pZj1mYWxzZT48bGFiZWw+TWluLiBmaWxlcyByZXF1aXJlZDwvbGFiZWw+IDxpbnB1dCB0eXBlPW51bWJlciBtaW49MCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5NZXRhRGF0YVswXS5taW4gbmctaW5pdD1cImZkLk1ldGFEYXRhWzBdLm1pbj0wXCI+PC9kaXY+PGRpdj48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWwgZm9yPWNiUmVhZE9ubHl7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JSZWFkT25seXt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1tb2RlbD1mZC5SZWFkT25seSBuZy1jaGVja2VkPWZkLlJlYWRPbmx5PiBQcmV2ZW50IG1hbnVhbCB1cGxvYWQ8L2xhYmVsPjwvZGl2PjxkaXY+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYlZlcmlmeU9ubHl7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JWZXJpZnlPbmx5e3tmZC5QcmVzZW50YXRpb25JZH19IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuVmVyaWZ5T25seSBuZy1jaGVja2VkPWZkLlBhcmFtZXRlcnMuVmVyaWZ5T25seT4gT25seSB2ZXJpZnkgZmlsZXM8L2xhYmVsPjwvZGl2PjxkaXY+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsIGZvcj1jYk5vTWV0YXt7ZmQuUHJlc2VudGF0aW9uSWR9fT48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cImt0LWNoZWNrYm94LXByb3BlcnRpZXMgbXktMiBtci0yXCIgbmFtZT1jYk5vTWV0YXt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLk5vTWV0YSBuZy1jaGVja2VkPWZkLlBhcmFtZXRlcnMuTm9NZXRhPiBEbyBOT1Qgc2VuZCBtZXRhIGRhdGEgd2l0aCB1cGxvYWQ8L2xhYmVsPjwvZGl2PjxkaXYga3QtZmllbGQtc2l6ZS1wcm9wZXJ0eT48L2Rpdj48ZGl2IGt0LWZpZWxkLXN0eWxlLXByb3BlcnR5PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFVzZXIuaHRtbCcsJzxkaXYgY2xhc3M9XCJyb3cgbS0wIGZvcm0tZ3JvdXAgbXQtMSBkYXRhc2V0LWl0ZW1cIiBuZy1pZj1cImZkLlNob3dGaWVsZCB8fCAoZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTIpXCIgbmctZm9ybT1cImlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX1cIiBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiAoaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kaW52YWxpZCxcXCdiZy1ncmF5LTIwIGJvcmRlclxcJzpmZD09Z3NydmMuZ2V0U2VsZWN0ZWRGZCgpICYmIGdzcnZjLmdldEZpZWxkUHJvcGVydGllc09wZW5lZCgpIH1cIj48ZGl2IG5nLWhpZGU9XCIoZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGU9PTIgfHwgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTIpICYmIGZkLlBhcmFtZXRlcnMuSGlkZUxhYmVsXCIgc3R5bGU9e3tmZC5sYWJlbEFsaWdufX0gY2xhc3M9e3tmZC5ncmlkQ2xhc3NMYWJlbH19IG5nLWNsYXNzPVwie1xcJ2NvbC1hdXRvXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZX1cIj48bGFiZWwga3Qtc3R5bGUtYXR0cmlidXRlIGZkPWZkIHN0eWxlLXR5cGU9XCJcXCdsYWJlbFxcJ1wiIHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVMYWJlbH19IGZvcj1cInt7ZmQuTmFtZX19e3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fVwiIGNsYXNzPVwicC0wIG1hcmdpbkw1IGZvcm0tY29udHJvbC1sYWJlbCBuby1ib3JkZXIgYWxpZ24tbWlkZGxlXCIgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS4kaW52YWxpZCxcXCdjdXN0b20tZWwtbGF5b3V0LXN0eWxlXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MX1cIj57e2ZkLkxhYmVsfX08L2xhYmVsPiA8aSBuZy1pZj1mb3JtRGF0YVswXS5mb3JtRGF0YUJsb2NrY2hhaW5bMF0gbmctY2xhc3M9XCJ7XFwnZmEgZmEtY2hlY2sgdGV4dC1zdWNjZXNzXFwnOiBmb3JtRGF0YVswXS5mb3JtRGF0YUJsb2NrY2hhaW5bMF1bZmQuRmllbGROYW1lXT09Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXSxcXCdmYSBmYS10aW1lcyB0ZXh0LWRhbmdlclxcJzpmb3JtRGF0YVswXS5mb3JtRGF0YUJsb2NrY2hhaW5bMF1bZmQuRmllbGROYW1lXSE9Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXX1cIj48L2k+PC9kaXY+PGRpdiBjbGFzcz1cInt7ZmQuZ3JpZENsYXNzRWxlbWVudH19IG15LWF1dG9cIj48ZGl2IHRpdGxlPXt7Zm9ybURhdGFbMF0uZm9ybURhdGFCbG9ja2NoYWluWzBdW2ZkLkZpZWxkTmFtZV19fSBuZy1jbGFzcz1cIntcXCdjdXN0b20tZWwtbGF5b3V0LXN0eWxlIGNvbC1hdXRvXFwnOmZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSxcXCdjb2wtYXV0b1xcJzogZmQuUGFyYW1ldGVycy5DdXN0b21TaXplICYmIGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlIT0xfVwiIG5nLWlmPVwiIWZkLlJlYWRPbmx5ICYmIHVzZXJzTG9hZGVkXCI+PHNlbGVjdCBjbGFzcz1mb3JtLWNvbnRyb2wgbmFtZT1cInt7OjpmZC5OYW1lfX17ezo6ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX1cIiBuZy1jaGFuZ2U9c2VsZWN0aW9uX2NoYW5nZWQoKSBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2VsZW1lbnRcXCdcIiBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZFxcJyA6IChpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiRpbnZhbGlkIH1cIiBuZy1yZXF1aXJlZD1mZC5SZXF1aXJlZCBuZy1tb2RlbD1zZWxlY3RlZFVzciBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlRWxlbWVudH19PjxvcHRpb24gdmFsdWUgc2VsZWN0ZWQgZGlzYWJsZWQgY2xhc3M9dGV4dC1saWdodD57e2ZkLlNlYXJjaFRleHR9fTwvb3B0aW9uPjxvcHRpb24gbmctaWY9IWZkLlJlcXVpcmVkIHZhbHVlPW51bGw+PC9vcHRpb24+PG9wdGlvbiBuZy1yZXBlYXQ9XCIoaWQsdmFsKSBpbiA6OnVzZXJMaXN0IHRyYWNrIGJ5IGlkXCIgbmctdmFsdWU9Ojp2YWwgY2xhc3M9cC0xPnt7dmFsLm5hbWV9fTwvb3B0aW9uPjwvc2VsZWN0PjxwIG5nLWlmPWZvcm1EYXRhIG5nLWNsYXNzPVwie1xcJ2ludmFsaWQtdG9vbHRpcCByaWdodC0wIG10LW4yIG1yLTNcXCc6ZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PVxcJ3Rvb2x0aXBcXCcgfHwgZmQuUGFyYW1ldGVycy5FcnJvck1zZ1R5cGU9PXVuZGVmaW5lZCxcXCdpbnZhbGlkLWZlZWRiYWNrXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCdmZWVkYmFja1xcJyxcXCdkLWJsb2NrXFwnOihpbm5lckZvcm17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWQucmVwbGFjZUFsbChcXCctXFwnLFxcJ1xcJyl9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZC5yZXBsYWNlQWxsKFxcJy1cXCcsXFwnXFwnKX19LiRpbnZhbGlkfVwiPnt7ZmQuRXJyb3JNc2d9fTwvcD48L2Rpdj48ZGl2IG5nLWlmPWZkLlJlYWRPbmx5IGt0LXN0eWxlLWF0dHJpYnV0ZSBmZD1mZCBzdHlsZS10eXBlPVwiXFwnZWxlbWVudFxcJ1wiIHN0eWxlPXt7ZmQuY3VzdG9tU3R5bGVFbGVtZW50fX0+PGRpdiBuZy1jbGFzcz1cIntcXCdmb3JtLWNvbnRyb2xcXCc6ZmQuUGFyYW1ldGVycy5Cb3JkZXJGb3JSZWFkT25seX1cIj57e3NlbGVjdGVkVXNyLmZpcnN0X25hbWV9fSB7e3NlbGVjdGVkVXNyLmxhc3RfbmFtZX19IC0ge3tzZWxlY3RlZFVzci51c2VybmFtZX19PC9kaXY+PC9kaXY+PGRpdiBzdHlsZT1cInZpc2liaWxpdHk6dmlzaWJsZSAhaW1wb3J0YW50XCIgY2xhc3M9XCJibHVlLWRyb3Bkb3duIHJvdW5kZWQgc2hhZG93XCI+PGRpdiBjbGFzcz1cImVsZW1lbnQtcHJvcGVydGllcy1idG5zIHJvdW5kZWQgYmctcHJpbWFyeVwiIG5nLWlmPVwiZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgJiYgZm9ybVBhcmFtc1BhcmVudC5mb3JtVmlld1R5cGUhPTJcIj48c3BhbiBjbGFzcz1cImxhYmVsIGxhYmVsLXhzIHRleHQtd2hpdGUgbXgtMSBib2xkXCI+e3tmZC5OYW1lfX0gZmllbGQ8L3NwYW4+IDxhIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi14cyBwcm9wLWJ0biBlbGVtZW50LWRyYWctaGFuZGxlXCIgdGl0bGU9bW92ZSBocmVmPjxpIGNsYXNzPVwiZWxlbWVudC1kcmFnLWhhbmRsZSBmYSBmYS1ncmlwLXZlcnRpY2FsXCI+PC9pPjwvYT4gPGEgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXhzIHByb3AtYnRuXCIgaHJlZiB0aXRsZT1cIkZpZWxkIHByb3BlcnRpZXNcIiBkYXRhLXRvZ2dsZT10b29sdGlwIGRhdGEtcGxhY2VtZW50PXRvcCBuZy1jbGljaz1zaG93UHJvcGVydGllcygkZXZlbnQpPjxpIGNsYXNzPVwiZmEgZmEtY29nXCI+PC9pPjwvYT48YSBuZy1pZj1zaG93U2VhcmNoRmlsdGVycyBpZD1zZWFyY2gtZmlsdGVyLXt7ZmQuUHJlc2VudGF0aW9uSWR9fSBkYXRhLXRvZ2dsZT1kcm9wZG93biBhcmlhLWhhc3BvcHVwPXRydWUgYXJpYS1leHBhbmRlZD1mYWxzZSB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4teHMgcHJvcC1idG5cIiBocmVmPjxpIGNsYXNzPVwiZmEgZmEtZmlsdGVyIG1yLTFcIiB0aXRsZT1cIkZpbHRlciA6IHt7ZmQuU2VhcmNoLm5hbWV9fVwiPjwvaT57e2ZkLlNlYXJjaC5uYW1lfX08L2E+PGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgc2hhZG93IHAtMCBkcm9wZG93bi1tYXgtY29udGVudC13aWR0aFwiIHN0eWxlPVwibWluLXdpZHRoOjBweCAhaW1wb3J0YW50XCIgYXJpYS1sYWJlbGxlZGJ5PXNlYXJjaC1maWx0ZXIte3tmZC5QcmVzZW50YXRpb25JZH19PjxkaXYgY2xhc3M9YnRuLWdyb3VwLXZlcnRpY2FsIHJvbGU9Z3JvdXAgYXJpYS1sYWJlbD1cIlNlYXJjaCBmaWx0ZXJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1mZC5hcHBseUxpc3RGaWx0ZXJzKDApIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpmZC5TZWFyY2guZmlsdGVyPT1cXCdvbmxpc3RcXCd9XCI+PHNwYW4gY2xhc3M9e3tmZC5zZWFyY2hMaXN0WzBdLmljb259fT48L3NwYW4+IHt7ZmQuc2VhcmNoTGlzdFswXS5uYW1lfX08L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG0tc20gYnRuLWxpZ2h0XCIgbmctY2xpY2s9ZmQuYXBwbHlMaXN0RmlsdGVycygxKSBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6ZmQuU2VhcmNoLmZpbHRlcj09XFwnbm90b25saXN0XFwnfVwiPjxzcGFuIGNsYXNzPXt7ZmQuc2VhcmNoTGlzdFsxXS5pY29ufX0+PC9zcGFuPiB7e2ZkLnNlYXJjaExpc3RbMV0ubmFtZX19PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcyBhcmlhLWxhYmVsbGVkYnk9XCJtYXNzLXByb3BlcnR5LXt7ZmQuSXRlbUlkLnJlcGxhY2VBbGwoXFwnLVxcJyxcXCdcXCcpfX1cIiBrdC1tYXNzLXVwZGF0ZS1wcm9wZXJ0aWVzPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJ7e2ZkLmdyaWRDbGFzc0VsZW1lbnR9fSBteS1hdXRvXCIgbmctaWY9ZmQuU2hvd0RldGFpbHM+PGRpdiBjbGFzcz1yb3c+PGRpdiBuZy1jbGFzcz1jb2xMZW5ndGhbZmQuTGFiZWxMZW5ndGgtMV0gY2xhc3M9XCJwYWRkaW5nMCB0ZXh0LWxlZnRcIj48bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbm8tYm9yZGVyXCI+Rmlyc3QgbmFtZTwvbGFiZWw+PC9kaXY+PGRpdiBuZy1jbGFzcz1jb2xMZW5ndGhbMTEtZmQuTGFiZWxMZW5ndGhdIGNsYXNzPXRleHQtbGVmdD48bGFiZWwgY2xhc3M9Zm9ybS1jb250cm9sPnt7c2VsZWN0ZWRVc3IuZmlyc3RfbmFtZX19PC9sYWJlbD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXJvdz48ZGl2IG5nLWNsYXNzPWNvbExlbmd0aFtmZC5MYWJlbExlbmd0aC0xXSBjbGFzcz1cInBhZGRpbmcwIHRleHQtbGVmdFwiPjxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbCBuby1ib3JkZXJcIj5MYXN0IG5hbWU8L2xhYmVsPjwvZGl2PjxkaXYgbmctY2xhc3M9Y29sTGVuZ3RoWzExLWZkLkxhYmVsTGVuZ3RoXSBjbGFzcz10ZXh0LWxlZnQ+PGxhYmVsIGNsYXNzPWZvcm0tY29udHJvbD57e3NlbGVjdGVkVXNyLmxhc3RfbmFtZX19PC9sYWJlbD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXJvdz48ZGl2IG5nLWNsYXNzPWNvbExlbmd0aFtmZC5MYWJlbExlbmd0aC0xXSBjbGFzcz1cInBhZGRpbmcwIHRleHQtbGVmdFwiPjxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbCBuby1ib3JkZXJcIj5Vc2VybmFtZTwvbGFiZWw+PC9kaXY+PGRpdiBuZy1jbGFzcz1jb2xMZW5ndGhbMTEtZmQuTGFiZWxMZW5ndGhdIGNsYXNzPXRleHQtbGVmdD48bGFiZWwgY2xhc3M9Zm9ybS1jb250cm9sPnt7c2VsZWN0ZWRVc3IudXNlcm5hbWV9fTwvbGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1yb3c+PGRpdiBuZy1jbGFzcz1jb2xMZW5ndGhbZmQuTGFiZWxMZW5ndGgtMV0gY2xhc3M9XCJwYWRkaW5nMCB0ZXh0LWxlZnRcIj48bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbm8tYm9yZGVyXCI+RS1tYWlsPC9sYWJlbD48L2Rpdj48ZGl2IG5nLWNsYXNzPWNvbExlbmd0aFsxMS1mZC5MYWJlbExlbmd0aF0gY2xhc3M9dGV4dC1sZWZ0PjxsYWJlbCBjbGFzcz1mb3JtLWNvbnRyb2w+e3tzZWxlY3RlZFVzci5lbWFpbH19PC9sYWJlbD48L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IGlkPXVzZXJzZWFyY2hwcm9wZXJ0aWVzLmh0bWwgdHlwZT10ZXh0L25nLXRlbXBsYXRlPjxkaXY+IDxsYWJlbD5DaG9vc2UgZmlsdGVyIG1ldGhvZDwvbGFiZWw+IDxkaXYgY2FsbD1cInJvd1wiPiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cIm9uTGlzdFwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBuZy1iaW5kaW5nXCIgbmctY2xpY2s9XCJmZC5hcHBseUxpc3RGaWx0ZXJzKDApXCI+IDxzcGFuIGNsYXNzPVwiZmEgZmEtYmFyc1wiPjwvc3Bhbj4gT24gbGlzdDwvYnV0dG9uPiA8L2Rpdj4gPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJub3RPbkxJc3RcIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbmctYmluZGluZ1wiIG5nLWNsaWNrPVwiZmQuYXBwbHlMaXN0RmlsdGVycygxKVwiPiA8c3BhbiBjbGFzcz1cImZhIGZhLWV4cGFuZFwiPjwvc3Bhbj4gTm90IG9uIGxpc3Q8L2J1dHRvbj4gPC9kaXY+PC9zY3JpcHQ+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VXNlckV4ZS5odG1sJywnPGRpdiBjbGFzcz1cInJvdyBtLTAgbXQtMSBkYXRhc2V0LWl0ZW1cIiBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZFxcJyA6IChpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0ue3s6OmZkLk5hbWV9fXt7OjpmZC5JdGVtSWR9fS4kdG91Y2hlZCB8fCBpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0ue3s6OmZkLk5hbWV9fXt7OjpmZC5JdGVtSWR9fS4kZGlydHkpICYmIGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS57ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19LiRpbnZhbGlkLFxcJ2lzLXZhbGlkXFwnIDogKGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS57ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19LiR0b3VjaGVkIHx8IGlubmVyRm9ybXt7OjpmZC5JdGVtSWR9fS57ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19LiRkaXJ0eSkgJiYgaW5uZXJGb3Jte3s6OmZkLkl0ZW1JZH19Lnt7OjpmZC5OYW1lfX17ezo6ZmQuSXRlbUlkfX0uJHZhbGlkfVwiIG5nLWlmPTo6ZmQuU2hvd0ZpZWxkPjxkaXYgbmctaGlkZT1mZC5QYXJhbWV0ZXJzLkhpZGVMYWJlbCBzdHlsZT17e2ZkLmxhYmVsQWxpZ259fSBjbGFzcz17e2ZkLmdyaWRDbGFzc0xhYmVsfX0gbmctY2xhc3M9XCJ7XFwnY29sLWF1dG9cXCc6ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplfVwiPjxsYWJlbCBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2xhYmVsXFwnXCIgc3R5bGU9e3tmZC5jdXN0b21TdHlsZUxhYmVsfX0gZm9yPXt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fSBjbGFzcz1cInAtMCBtYXJnaW5MNSBmb3JtLWNvbnRyb2wtbGFiZWwgbm8tYm9yZGVyIGFsaWduLW1pZGRsZVwiIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlclxcJyA6IChpbm5lckZvcm17e2ZkLkl0ZW1JZH19LiRzdWJtaXR0ZWQgfHwgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkfX0uJHRvdWNoZWQpICYmIGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0uJGludmFsaWQsXFwnY3VzdG9tLWVsLWxheW91dC1zdHlsZVxcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTF9XCI+e3tmZC5MYWJlbH19PC9sYWJlbD4gPGkgbmctaWY9Zm9ybURhdGFbMF0uZm9ybURhdGFCbG9ja2NoYWluWzBdIG5nLWNsYXNzPVwie1xcJ2ZhIGZhLWNoZWNrIHRleHQtc3VjY2Vzc1xcJzogZm9ybURhdGFbMF0uZm9ybURhdGFCbG9ja2NoYWluWzBdW2ZkLkZpZWxkTmFtZV09PWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0sXFwnZmEgZmEtdGltZXMgdGV4dC1kYW5nZXJcXCc6Zm9ybURhdGFbMF0uZm9ybURhdGFCbG9ja2NoYWluWzBdW2ZkLkZpZWxkTmFtZV0hPWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV19XCI+PC9pPjwvZGl2PjxkaXYgY2xhc3M9XCJ7e2ZkLmdyaWRDbGFzc0VsZW1lbnR9fSBteS1hdXRvXCI+PGRpdiB0aXRsZT17e2Zvcm1EYXRhWzBdLmZvcm1EYXRhQmxvY2tjaGFpblswXVtmZC5GaWVsZE5hbWVdfX0gbmctY2xhc3M9XCJ7XFwnY3VzdG9tLWVsLWxheW91dC1zdHlsZSBjb2wtYXV0b1xcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUsXFwnY29sLWF1dG9cXCc6IGZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZX1cIiBuZy1pZj1cIiFmZC5SZWFkT25seSAmJiB1c2Vyc0xvYWRlZFwiPjxkaXYgbmctZm9ybT1pbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0gbmctY2xhc3M9XCJ7XFwnaXMtdmFsaWRcXCcgOiAoaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19LiR0b3VjaGVkIHx8IGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19LiRkaXJ0eSkgJiYgaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS57e2ZkLk5hbWV9fXt7ZmQuSXRlbUlkfX0uJHZhbGlkfVwiPjxkaXYgbmctaWY9IWZkLk11bHRpbGluZSBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2VsZW1lbnRcXCdcIj48c2VsZWN0IGNsYXNzPWZvcm0tY29udHJvbCBuYW1lPXt7OjpmZC5OYW1lfX17ezo6ZmQuSXRlbUlkfX0gc3R5bGU9e3tmZC5jdXN0b21TdHlsZUVsZW1lbnR9fSBuZy1tb2RlbC1vcHRpb25zPVwieyBhbGxvd0ludmFsaWQ6IHRydWUgfVwiIG5nLWNsYXNzPVwie1xcJ3RleHQtcGxhY2Vob2xkZXJcXCc6Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXT09PXVuZGVmaW5lZCB8fCBmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdPT09XFwnXFwnLFxcJ2JvcmRlci1kYW5nZXIgaXMtaW52YWxpZFxcJyA6IChpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0uJHN1Ym1pdHRlZCB8fCBpbm5lckZvcm17ezo6ZmQuSXRlbUlkfX0ue3s6OmZkLk5hbWV9fXt7OjpmZC5JdGVtSWR9fS4kdG91Y2hlZCkgJiYgaW5uZXJGb3Jte3s6OmZkLkl0ZW1JZH19Lnt7OjpmZC5OYW1lfX17ezo6ZmQuSXRlbUlkfX0uJGludmFsaWQgfVwiIG5nLXJlcXVpcmVkPWZkLlJlcXVpcmVkIG5nLW1vZGVsPWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0+PG9wdGlvbiBuZy1pZj1mZC5SZXF1aXJlZCB2YWx1ZSBkaXNhYmxlZCBuZy1zZWxlY3RlZD1mZC5ub1ZhbHVlPnt7ZmQuU2VhcmNoVGV4dH19PC9vcHRpb24+PG9wdGlvbiBjbGFzcz10ZXh0LXBsYWNlaG9sZGVyIG5nLWlmPSFmZC5SZXF1aXJlZCB2YWx1ZSBuZy1zZWxlY3RlZD1mZC5ub1ZhbHVlPnt7ZmQuU2VhcmNoVGV4dH19PC9vcHRpb24+PG9wdGlvbiBuZy1yZXBlYXQ9XCIoaWQsdmFsKSBpbiA6OnVzZXJMaXN0IHwgZmlsdGVyOiBzZWFyY2guc2VhcmNoRmlsdGVyIHRyYWNrIGJ5IGlkXCIgbmctdmFsdWU9Ojp2YWwgbmctc3R5bGU9XCIoaWQhPXVuZGVmaW5lZCAmJiB7XFwnY29sb3JcXCc6IFxcJyMyNjMxNERcXCd9KSB8fCAoaWQ9PXVuZGVmaW5lZCAmJiB7XFwnY29sb3JcXCc6IFxcJyNCNkJBQzNcXCd9KVwiIGNsYXNzPXAtMT57ezo6dmFsLm5hbWV9fTwvb3B0aW9uPjwvc2VsZWN0PjwvZGl2PjxrdC1kcm9wZG93bi1tdWx0aXBsZSBuZy1pZj1mZC5NdWx0aWxpbmUgZmllbGQtZWxlbWVudD1mZCBuZy1tb2RlbD1mb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdIHNlbGVjdGVkLWl0ZW1zPWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0gbmFtZT17ezo6ZmQuTmFtZX19e3s6OmZkLkl0ZW1JZH19IG5nLXJlcXVpcmVkPWZkLlJlcXVpcmVkIHJlcXVpcmVkLWZpZWxkPWZkLlJlcXVpcmVkIGRyb3Bkb3duLWl0ZW1zPXVzZXJMaXN0IGRyb3Bkb3duLWlkPWZkLk5hbWUrZmQuSXRlbUlkIHBhcmVudC1mb3JtLWlkPVwiXFwnaW5uZXJGb3JtXFwnK2ZkLkl0ZW1JZFwiIHNlYXJjaC10ZXh0PWZkLlNlYXJjaFRleHQ+PC9rdC1kcm9wZG93bi1tdWx0aXBsZT48cCBuZy1pZj1mb3JtRGF0YSBuZy1jbGFzcz1cIntcXCdpbnZhbGlkLXRvb2x0aXAgcmlnaHQtMCBtdC1uMiBtci0zXFwnOmZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT1cXCd0b29sdGlwXFwnIHx8IGZkLlBhcmFtZXRlcnMuRXJyb3JNc2dUeXBlPT11bmRlZmluZWQsXFwnaW52YWxpZC1mZWVkYmFja1xcJzpmZC5QYXJhbWV0ZXJzLkVycm9yTXNnVHlwZT09XFwnZmVlZGJhY2tcXCcsXFwnZC1ibG9ja1xcJzooaW5uZXJGb3Jte3tmZC5JdGVtSWR9fS4kc3VibWl0dGVkIHx8IGlubmVyRm9ybXt7ZmQuSXRlbUlkfX0ue3tmZC5OYW1lfX17e2ZkLkl0ZW1JZH19LiR0b3VjaGVkKSAmJiBpbm5lckZvcm17e2ZkLkl0ZW1JZH19Lnt7ZmQuTmFtZX19e3tmZC5JdGVtSWR9fS4kaW52YWxpZH1cIj57e2ZkLkVycm9yTXNnfX08L3A+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1mZC5SZWFkT25seSBrdC1zdHlsZS1hdHRyaWJ1dGUgZmQ9ZmQgc3R5bGUtdHlwZT1cIlxcJ2VsZW1lbnRcXCdcIiBzdHlsZT17e2ZkLmN1c3RvbVN0eWxlRWxlbWVudH19PjxkaXYgbmctY2xhc3M9XCJ7XFwnZm9ybS1jb250cm9sXFwnOmZkLlBhcmFtZXRlcnMuQm9yZGVyRm9yUmVhZE9ubHl9XCI+PHNwYW4gbmctaWY9XCJmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdLmZpcnN0X25hbWUgJiYgIWZvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZStcXCcubmFtZVxcJ11cIj57e2Zvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0uZmlyc3RfbmFtZX19IHt7Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXS5sYXN0X25hbWV9fSAoe3tmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdLnVzZXJuYW1lfX0pPC9zcGFuPiA8c3BhbiBuZy1pZj1cIjo6Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lK1xcJy5uYW1lXFwnXVwiPnt7Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lK1xcJy5uYW1lXFwnXX19PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJ7e2ZkLmdyaWRDbGFzc0VsZW1lbnR9fSBteS1hdXRvXCIgbmctaWY9ZmQuU2hvd0RldGFpbHM+PGRpdiBjbGFzcz1yb3c+PGRpdiBuZy1jbGFzcz1jb2xMZW5ndGhbZmQuTGFiZWxMZW5ndGgtMV0gY2xhc3M9XCJwYWRkaW5nMCB0ZXh0LWxlZnRcIj48bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbm8tYm9yZGVyXCI+Rmlyc3QgbmFtZTwvbGFiZWw+PC9kaXY+PGRpdiBuZy1jbGFzcz1jb2xMZW5ndGhbMTEtZmQuTGFiZWxMZW5ndGhdIGNsYXNzPXRleHQtbGVmdD48bGFiZWwgY2xhc3M9Zm9ybS1jb250cm9sPnt7Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXS5maXJzdF9uYW1lfX08L2xhYmVsPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cm93PjxkaXYgbmctY2xhc3M9Y29sTGVuZ3RoW2ZkLkxhYmVsTGVuZ3RoLTFdIGNsYXNzPVwicGFkZGluZzAgdGV4dC1sZWZ0XCI+PGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sIG5vLWJvcmRlclwiPkxhc3QgbmFtZTwvbGFiZWw+PC9kaXY+PGRpdiBuZy1jbGFzcz1jb2xMZW5ndGhbMTEtZmQuTGFiZWxMZW5ndGhdIGNsYXNzPXRleHQtbGVmdD48bGFiZWwgY2xhc3M9Zm9ybS1jb250cm9sPnt7Zm9ybURhdGFbMF1bZmQuRmllbGROYW1lXS5sYXN0X25hbWV9fTwvbGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1yb3c+PGRpdiBuZy1jbGFzcz1jb2xMZW5ndGhbZmQuTGFiZWxMZW5ndGgtMV0gY2xhc3M9XCJwYWRkaW5nMCB0ZXh0LWxlZnRcIj48bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbm8tYm9yZGVyXCI+VXNlcm5hbWU8L2xhYmVsPjwvZGl2PjxkaXYgbmctY2xhc3M9Y29sTGVuZ3RoWzExLWZkLkxhYmVsTGVuZ3RoXSBjbGFzcz10ZXh0LWxlZnQ+PGxhYmVsIGNsYXNzPWZvcm0tY29udHJvbD57e2Zvcm1EYXRhWzBdW2ZkLkZpZWxkTmFtZV0udXNlcm5hbWV9fTwvbGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1yb3c+PGRpdiBuZy1jbGFzcz1jb2xMZW5ndGhbZmQuTGFiZWxMZW5ndGgtMV0gY2xhc3M9XCJwYWRkaW5nMCB0ZXh0LWxlZnRcIj48bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbm8tYm9yZGVyXCI+RS1tYWlsPC9sYWJlbD48L2Rpdj48ZGl2IG5nLWNsYXNzPWNvbExlbmd0aFsxMS1mZC5MYWJlbExlbmd0aF0gY2xhc3M9dGV4dC1sZWZ0PjxsYWJlbCBjbGFzcz1mb3JtLWNvbnRyb2w+e3tmb3JtRGF0YVswXVtmZC5GaWVsZE5hbWVdLmVtYWlsfX08L2xhYmVsPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9XCJ2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudFwiIGNsYXNzPVwiYmx1ZS1kcm9wZG93biByb3VuZGVkIHNoYWRvd1wiPjxkaXYgY2xhc3M9XCJkcm9wbGVmdCBlbGVtZW50LXByb3BlcnRpZXMtYnRucyBiZy1wcmltYXJ5IHJvdW5kZWQgc2hhZG93IG5vcHJpbnRcIiBuZy1pZj06OnNob3dTZWFyY2hGaWx0ZXJzPjxhIGlkPXNlYXJjaC1maWx0ZXIte3tmZC5QcmVzZW50YXRpb25JZH19IGRhdGEtdG9nZ2xlPWRyb3Bkb3duIGFyaWEtaGFzcG9wdXA9dHJ1ZSBhcmlhLWV4cGFuZGVkPWZhbHNlIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi14cyBwcm9wLWJ0blwiIGhyZWY+PGkgY2xhc3M9XCJmYSBmYS1maWx0ZXIgbXItMVwiIHRpdGxlPVwiRmlsdGVyIDoge3tmZC5TZWFyY2gubmFtZX19XCI+PC9pPnt7ZmQuU2VhcmNoLm5hbWV9fTwvYT48ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBzaGFkb3cgcC0wIGRyb3Bkb3duLW1heC1jb250ZW50LXdpZHRoXCIgc3R5bGU9XCJtaW4td2lkdGg6MHB4ICFpbXBvcnRhbnRcIiBhcmlhLWxhYmVsbGVkYnk9c2VhcmNoLWZpbHRlci17e2ZkLlByZXNlbnRhdGlvbklkfX0+PGRpdiBjbGFzcz1idG4tZ3JvdXAtdmVydGljYWwgcm9sZT1ncm91cCBhcmlhLWxhYmVsPVwiU2VhcmNoIGZpbHRlclwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRtLXNtIGJ0bi1saWdodFwiIG5nLWNsaWNrPWZkLmFwcGx5TGlzdEZpbHRlcnMoMCkgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmZkLlNlYXJjaC5maWx0ZXI9PVxcJ29ubGlzdFxcJ31cIj48c3BhbiBjbGFzcz17e2ZkLnNlYXJjaExpc3RbMF0uaWNvbn19Pjwvc3Bhbj4ge3tmZC5zZWFyY2hMaXN0WzBdLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bS1zbSBidG4tbGlnaHRcIiBuZy1jbGljaz1mZC5hcHBseUxpc3RGaWx0ZXJzKDEpIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpmZC5TZWFyY2guZmlsdGVyPT1cXCdub3Rvbmxpc3RcXCd9XCI+PHNwYW4gY2xhc3M9e3tmZC5zZWFyY2hMaXN0WzFdLmljb259fT48L3NwYW4+IHt7ZmQuc2VhcmNoTGlzdFsxXS5uYW1lfX08L2J1dHRvbj48L2Rpdj4uPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VXNlclByb3BlcnRpZXMuaHRtbCcsJzxkaXYgY2xhc3M9cC0xPjxkaXYga3QtcHJvcGVydHktaGVhZGVyPjwvZGl2PjxkaXYgbmctY2xpY2s9XCJsb2NhbFZhcnMuc2hvd0Jhc2ljID0gIWxvY2FsVmFycy5zaG93QmFzaWNcIiBjbGFzcz1cImV4cGFuZC1wcm9wZXJ0eS1wYW5lbCB0YWcgYm9yZGVyLWJvdHRvbSBib3JkZXItc3VjY2VzcyBteS0xIHB5LTFcIiBkYXRhLXRvZ2dsZT1jb2xsYXBzZSBocmVmPSNtYWluUHJvcGVydHlQYW5lbCByb2xlPWJ1dHRvbiBhcmlhLWV4cGFuZGVkPXRydWUgYXJpYS1jb250cm9scz1tYWluUHJvcGVydHlQYW5lbD48c3BhbiBjbGFzcz1cImNvbCBwLTBcIj5CQVNJQzwvc3Bhbj4gPGkgc3R5bGU9XCJmb250LXNpemU6IGxhcmdlO1wiIG5nLXNob3c9bG9jYWxWYXJzLnNob3dCYXNpYyBjbGFzcz1cImZhcyBmYS1hbmdsZS1kb3duXCI+PC9pPiA8aSBzdHlsZT1cImZvbnQtc2l6ZTogbGFyZ2U7XCIgbmctc2hvdz0hbG9jYWxWYXJzLnNob3dCYXNpYyBjbGFzcz1cImZhcyBmYS1hbmdsZS11cFwiPjwvaT48L2Rpdj48ZGl2IGNsYXNzPVwibWItMiBjb2xsYXBzZSBzaG93XCIgaWQ9bWFpblByb3BlcnR5UGFuZWw+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1yYWRpb1wiPjxpbnB1dCB0eXBlPXJhZGlvIGlkPXBvcHVsYXRlVHlwZTEgY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgbmctbW9kZWw9ZmQuUG9wdWxhdGVUeXBlIHZhbHVlPTEgbmFtZT1wb3B1bGF0ZVR5cGUgbmctY2hlY2tlZD1cImZkLlBvcHVsYXRlVHlwZT09MVwiPiA8bGFiZWwgY2xhc3M9XCJjdXN0b20tY29udHJvbC1sYWJlbCBsYWJlbC14c1wiIGZvcj1wb3B1bGF0ZVR5cGUxPk1hbnVhbDwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1yYWRpb1wiPjxpbnB1dCB0eXBlPXJhZGlvIGlkPXBvcHVsYXRlVHlwZTIgY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgbmctbW9kZWw9ZmQuUG9wdWxhdGVUeXBlIHZhbHVlPTIgbmFtZT1wb3B1bGF0ZVR5cGUgbmctY2xpY2s9c2V0Q3VycmVudFVzZXIoKSBuZy1jaGVja2VkPVwiZmQuUG9wdWxhdGVUeXBlPT0yXCI+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPXBvcHVsYXRlVHlwZTI+Q3VycmVudCB1c2VyPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLWNoZWNrYm94XCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgaWQ9Y2JTaG93RGV0YWlscyBuZy1tb2RlbD1mZC5TaG93RGV0YWlscz4gPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgbGFiZWwteHNcIiBmb3I9Y2JTaG93RGV0YWlscz5TaG93IGRldGFpbHM8L2xhYmVsPjwvZGl2PjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5MYWJlbDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuTGFiZWw+IDxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5FcnJvciBtc2c8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLkVycm9yTXNnPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+U2VhcmNoVGV4dDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuU2VhcmNoVGV4dD4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkRpc3BsYXkgbmFtZTwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5EaXNwbGF5TmFtZT48ZGl2IHN0eWxlPVwiZ3JpZC1jb2x1bW46IDEgLyBzcGFuIDE7XCIgY2xhc3M9c2VsZWN0UmVzb3VyY2UgbmctZm9ybT1mb3JtUmVzb3VyY2V7e2l0ZW0uaWR9fT48bGFiZWwgY2xhc3M9dGV4dC1tdXRlZCBmb3I9cmVzb3VyY2VJZD5TZWxlY3QgdW5pcXVlIHVzZXIgaWRlbnRpZmllcjwvbGFiZWw+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLW1vZGVsPWl0ZW0udGFzayBuZy1pZj1yZXNvdXJjZXNMb2FkZWQgc2VsZWN0ZWQtaXRlbXM9aXRlbS50YXNrIGlzLW11bHRpcGxlPWZhbHNlIG5hbWU9cmVzb3VyY2VJZCBuZy1yZXF1aXJlZD10cnVlIGRyb3Bkb3duLWl0ZW1zPXJlc291cmNlTGlzdCBkcm9wZG93bi1pZD1cIlxcJ3Jlc291cmNlTGlzdFxcJytpdGVtLmlkXCIgcGFyZW50LWZvcm0taWQ9XCJcXCdmb3JtUmVzb3VyY2VcXCcraXRlbS5pZFwiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IHRhc2tcXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjwvZGl2PjxkaXYga3QtY29kZXMtZHJvcGRvd24gc2l6ZS14cz10cnVlIHNlYXJjaC10ZXh0PVwiU2VsZWN0IHVuaXF1ZSB1c2VyIGlkZW50aWZpZXJcIiBsYWJlbD1cIlVuaXF1ZSBpZGVudGlmaWVyXCIgdmFsdWUtbGVuZ3RoPWNvbC0yNCBjb2RlLW5hbWU9dW5pcXVlaWRzIHNlbGVjdGVkLWNvZGUtaWQ9ZmQuVW5pcXVlSWQ+PC9kaXY+PC9kaXY+PGRpdiBrdC1maWVsZC1leHRlbmRlZC1wcm9wZXJ0aWVzPjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFVzZXJzR3JvdXBzU2VsZWN0Lmh0bWwnLCc8ZGl2IGlkPWt0VXNlcnNHcm91cHNTZWxlY3QgY2xhc3M9XCJib3JkZXIgcm91bmRlZC10b3BcIj48ZGl2IGNsYXNzPVwibS0wIHBiLTEgYmctbGlnaHQgcm93XCI+PGRpdiBjbGFzcz1cImJvbGQgY29sIG15LWF1dG9cIj57e2hlYWRlckxhYmVsfX08L2Rpdj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBjb2wtYXV0b1wiIG5nLWNsaWNrPVwiaXNDb2xsYXBzZWRVc2Vyc0dyb3VwcyA9ICFpc0NvbGxhcHNlZFVzZXJzR3JvdXBzXCI+PHNwYW4gbmctY2xhc3M9XCJ7XFwnZmFzIGZhLWFuZ2xlLXVwXFwnOiBpc0NvbGxhcHNlZFVzZXJzR3JvdXBzLFxcJ2ZhcyBmYS1hbmdsZS1kb3duXFwnOiAhaXNDb2xsYXBzZWRVc2Vyc0dyb3VwcyB9XCI+PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgdWliLWNvbGxhcHNlPWlzQ29sbGFwc2VkVXNlcnNHcm91cHMgY2xhc3M9cC0yPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0xMiBwbC0wXCI+PGRpdiBjbGFzcz1cInAtMSBib3JkZXIgcm91bmRlZCBzaGFkb3ctc21cIj48ZGl2IGNsYXNzPXB5LTI+PGkgY2xhc3M9XCJmYSBmYS11c2VyXCI+PC9pPiB7e3VzZXJzTGFiZWx9fSA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBmbG9hdC1yaWdodCBwLTBcIiBuZy1jbGljaz1cImlzQ29sbGFwc2VkVXNlcnMgPSAhaXNDb2xsYXBzZWRVc2Vyc1wiPjxzcGFuIG5nLWNsYXNzPVwie1xcJ2ZhcyBmYS1hbmdsZS1kb3duXFwnOiBpc0NvbGxhcHNlZFVzZXJzLFxcJ2ZhcyBmYS1hbmdsZS1yaWdodFxcJzogIWlzQ29sbGFwc2VkVXNlcnMgfVwiPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IHVpYi1jb2xsYXBzZT1pc0NvbGxhcHNlZFVzZXJzIGNsYXNzPXAtMT48ZGl2IGt0LXNlbGVjdC11c2Vycz48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTEyIHByLTBcIj48ZGl2IGNsYXNzPVwicC0xIGJvcmRlciByb3VuZGVkIHNoYWRvdy1zbVwiPjxkaXYgY2xhc3M9cHktMj48aSBjbGFzcz1cImZhIGZhLXVzZXJzXCI+PC9pPiB7e2dyb3Vwc0xhYmVsfX0gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gZmxvYXQtcmlnaHQgcC0wXCIgbmctY2xpY2s9XCJpc0NvbGxhcHNlZEdyb3VwcyA9ICFpc0NvbGxhcHNlZEdyb3Vwc1wiPjxzcGFuIG5nLWNsYXNzPVwie1xcJ2ZhcyBmYS1hbmdsZS1kb3duXFwnOiBpc0NvbGxhcHNlZEdyb3VwcyxcXCdmYXMgZmEtYW5nbGUtcmlnaHRcXCc6ICFpc0NvbGxhcHNlZEdyb3VwcyB9XCI+PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgdWliLWNvbGxhcHNlPWlzQ29sbGFwc2VkR3JvdXBzIGNsYXNzPXAtMT48ZGl2IGt0LXNlbGVjdC1ncm91cHM+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0VmlkZW8uaHRtbCcsJzxkaXYgY2xhc3M9d2lkZ2V0LWhlYWQgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LWFjdGl2ZSBtLTIgc2hhZG93XFwnOmZkPT1nc3J2Yy5nZXRTZWxlY3RlZEZkKCkgJiYgZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzT3BlbmVkKCl9XCI+PGRpdiBuZy1pZj1cImdzcnZjLmdldEZvcm1WaWV3VHlwZSgpPT0xIHx8IGZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xXCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgcC0wIG1iLTFcIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtaGVhZC1hY3RpdmVcXCc6ZmQ9PWdzcnZjLmdldFNlbGVjdGVkRmQoKSAmJiBnc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKSxcXCdiZy1saWdodFxcJzohZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzT3BlbmVkKCl9XCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxpIGNsYXNzPVwiZmFzIGZhLXZpZGVvIG14LTJcIj48L2k+PGxhYmVsPlZpZGVvICh7e2ZkLlByZXNlbnRhdGlvbklkfX0pPC9sYWJlbD4gPGEgaHJlZiB0aXRsZT1zb3J0IGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIHt7Z3JpZFR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIHdpZGdldC1wcm9wXCI+PGkgY2xhc3M9XCJ7e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZSBmYXMgZmEtZ3JpcC12ZXJ0aWNhbFwiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LXJpZ2h0IG15LWF1dG8gcC0wXCI+PGEgaHJlZiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIGJ0bi1zbSB3aWRnZXQtcHJvcFwiIHRpdGxlPVwiU2hvdy9oaWRlIHZpZGVvXCIgbmctY2xpY2s9XCJmZC5sb2NhbFZhcnMuaGlkZVZpZGVvPSFmZC5sb2NhbFZhcnMuaGlkZVZpZGVvXCI+PGkgbmctaWY9IWZkLmxvY2FsVmFycy5oaWRlVmlkZW8gY2xhc3M9XCJmYXMgZmEtZXllXCI+PC9pPiA8aSBuZy1pZj1mZC5sb2NhbFZhcnMuaGlkZVZpZGVvIGNsYXNzPVwiZmFzIGZhLWV5ZS1zbGFzaFwiPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIG15LWF1dG8gcC0wXCI+PGEgaHJlZiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJvcmRlci0wIGJ0bi1zbSB3aWRnZXQtcHJvcFwiIHRpdGxlPVwiU2hvdyBwcm9wZXJ0aWVzXCIgbmctY2xpY2s9Z3NydmMuc2V0RmllbGRQcm9wZXJ0aWVzKGZkKT48aSBjbGFzcz1cImZhcyBmYS1jb2dcIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48ZGl2IGt0LXRhc2stZHJvcGRvd24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cIiFmZC5sb2NhbFZhcnMuaGlkZVZpZGVvICYmICghZmQuUGFyYW1ldGVycy5VcmwgfHwgIWZkLlBhcmFtZXRlcnMuVmlkZW9JZClcIiBjbGFzcz12aWRlb1BsYWNlaG9sZGVye3tmZC5VdWlkUmVmfX0+UGxhY2Vob2xkZXIgLSBlbWJlZGRlZCB2aWRlbyB3aWxsIGFwcGVhciBoZXJlPC9kaXY+PGRpdiBuZy1pZj1cIiFmZC5sb2NhbFZhcnMuaGlkZVZpZGVvICYmIGZkLlBhcmFtZXRlcnMuVXJsICYmIGZkLlBhcmFtZXRlcnMuVmlkZW9JZFwiIG5nLWNsYXNzPVwie1xcJ3RleHQtY2VudGVyXFwnOmZkLlBhcmFtZXRlcnMuSW1hZ2VBbGlnbj09XFwnY2VudGVyXFwnLFxcJ3RleHQtbGVmdFxcJzpmZC5QYXJhbWV0ZXJzLkltYWdlQWxpZ249PVxcJ2xlZnRcXCcsXFwndGV4dC1yaWdodFxcJzpmZC5QYXJhbWV0ZXJzLkltYWdlQWxpZ249PVxcJ3JpZ2h0XFwnLFxcJ3ZpZGVvV3JhcEN1c3RvbVxcJzpmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemUsXFwndmlkZW9XcmFwXFwnOiFmZC5QYXJhbWV0ZXJzLkN1c3RvbVNpemV9XCI+PGlmcmFtZSBpZD15dHBsYXllcnt7ZmQuVXVpZFJlZn19IHR5cGU9dGV4dC9odG1sIHNyYz17e3ZpZGVvU3JjfX0gZnJhbWVib3JkZXI9MCBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+PC9kaXY+PC9kaXY+PHN0eWxlPlxcclxcblxcdFxcdC52aWRlb1dyYXB7XFxyXFxuXFx0XFx0XFx0cG9zaXRpb246IHJlbGF0aXZlO1xcclxcblxcdFxcdFxcdHBhZGRpbmctYm90dG9tOiA1Ni4yNSU7XFxyXFxuXFx0XFx0XFx0aGVpZ2h0OiAwO1xcclxcblxcdFxcdH1cXHJcXG5cXHRcXHQudmlkZW9XcmFwIGlmcmFtZXtcXHJcXG5cXHRcXHRcXHRwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuXFx0XFx0XFx0dG9wOjA7XFxyXFxuICBcXHRcXHRcXHRsZWZ0OjA7XFxyXFxuICBcXHRcXHRcXHR3aWR0aDoxMDAlOyBcXHJcXG4gIFxcdFxcdFxcdGhlaWdodDoxMDAlO1xcclxcblxcclxcblxcdFxcdH1cXHJcXG5cXHRcXHQudmlkZW9XcmFwQ3VzdG9te1xcclxcblxcdFxcdFxcdG92ZXJmbG93OiBhdXRvO1xcclxcblxcclxcblxcdFxcdH1cXHJcXG5cXHRcXHQudmlkZW9XcmFwQ3VzdG9tIGlmcmFtZXtcXHJcXG5cXHRcXHRcXHR3aWR0aDoge3tmZC5QYXJhbWV0ZXJzLldpZHRofX1weDtcXHJcXG5cXHRcXHRcXHRoZWlnaHQ6IHt7ZmQuUGFyYW1ldGVycy5IZWlnaHR9fXB4O1xcclxcblxcclxcblxcdFxcdH1cXHJcXG5cXHRcXHQudmlkZW9QbGFjZWhvbGRlcnt7ZmQuVXVpZFJlZn19e1xcclxcblxcdFxcdFxcdGJvcmRlcjogM3B4IGRhc2hlZCAjRTdFOUVDICFpbXBvcnRhbnQ7XFxyXFxuICAgIFxcdFxcdHBhZGRpbmc6IDAuNXJlbTtcXHJcXG4gICAgXFx0XFx0bWFyZ2luOiAwLjI1cmVtO1xcclxcbiAgICBcXHRcXHR0ZXh0LWFsaWduOiBjZW50ZXI7XFxyXFxuICAgXFx0IFxcdGZvbnQtc2l6ZTogbWVkaXVtO1xcclxcbiB9XFxyXFxuXFx0PC9zdHlsZT4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RWaWRlb1Byb3BlcnRpZXMuaHRtbCcsJzxkaXYgY2xhc3M9cC0xPjxkaXYgY2xhc3M9XCJleHBhbmQtcHJvcGVydHktcGFuZWwgdGFnXCIgZGF0YS10b2dnbGU9Y29sbGFwc2UgaHJlZj0jbWFpblByb3BlcnR5UGFuZWwgcm9sZT1idXR0b24gYXJpYS1leHBhbmRlZD10cnVlIGFyaWEtY29udHJvbHM9bWFpblByb3BlcnR5UGFuZWw+TWFpbiB2aWRlbyBwcm9wZXJ0aWVzPHN2ZyBjbGFzcz1zZXR0aW5ncyB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyB3aWR0aD0yNCBoZWlnaHQ9MjQgdmlld2JveD1cIjAgMCAyNCAyNFwiPjxwYXRoIGZpbGw9bm9uZSBkPVwiTTAgMGgyNHYyNEgwVjB6XCI+PC9wYXRoPjxwYXRoIG9wYWNpdHk9LjMgZD1cIk0xOS4yOCA4LjZsLS43LTEuMjEtMS4yNy41MS0xLjA2LjQzLS45MS0uN2MtLjM5LS4zLS44LS41NC0xLjIzLS43MWwtMS4wNi0uNDMtLjE2LTEuMTNMMTIuNyA0aC0xLjRsLS4xOSAxLjM1LS4xNiAxLjEzLTEuMDYuNDRjLS40MS4xNy0uODIuNDEtMS4yNS43M2wtLjkuNjgtMS4wNS0uNDItMS4yNy0uNTItLjcgMS4yMSAxLjA4Ljg0Ljg5LjctLjE0IDEuMTNjLS4wMy4zLS4wNS41My0uMDUuNzNzLjAyLjQzLjA1LjczbC4xNCAxLjEzLS44OS43LTEuMDguODQuNyAxLjIxIDEuMjctLjUxIDEuMDYtLjQzLjkxLjdjLjM5LjMuOC41NCAxLjIzLjcxbDEuMDYuNDMuMTYgMS4xMy4xOSAxLjM2aDEuMzlsLjE5LTEuMzUuMTYtMS4xMyAxLjA2LS40M2MuNDEtLjE3LjgyLS40MSAxLjI1LS43M2wuOS0uNjggMS4wNC40MiAxLjI3LjUxLjctMS4yMS0xLjA4LS44NC0uODktLjcuMTQtMS4xM2MuMDQtLjMxLjA1LS41Mi4wNS0uNzMgMC0uMjEtLjAyLS40My0uMDUtLjczbC0uMTQtMS4xMy44OS0uNyAxLjEtLjg0ek0xMiAxNmMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNCA0IDEuNzkgNCA0LTEuNzkgNC00IDR6XCI+PC9wYXRoPjxwYXRoIGQ9XCJNMTkuNDMgMTIuOThjLjA0LS4zMi4wNy0uNjQuMDctLjk4IDAtLjM0LS4wMy0uNjYtLjA3LS45OGwyLjExLTEuNjVjLjE5LS4xNS4yNC0uNDIuMTItLjY0bC0yLTMuNDZjLS4wOS0uMTYtLjI2LS4yNS0uNDQtLjI1LS4wNiAwLS4xMi4wMS0uMTcuMDNsLTIuNDkgMWMtLjUyLS40LTEuMDgtLjczLTEuNjktLjk4bC0uMzgtMi42NUMxNC40NiAyLjE4IDE0LjI1IDIgMTQgMmgtNGMtLjI1IDAtLjQ2LjE4LS40OS40MmwtLjM4IDIuNjVjLS42MS4yNS0xLjE3LjU5LTEuNjkuOThsLTIuNDktMWMtLjA2LS4wMi0uMTItLjAzLS4xOC0uMDMtLjE3IDAtLjM0LjA5LS40My4yNWwtMiAzLjQ2Yy0uMTMuMjItLjA3LjQ5LjEyLjY0bDIuMTEgMS42NWMtLjA0LjMyLS4wNy42NS0uMDcuOThzLjAzLjY2LjA3Ljk4bC0yLjExIDEuNjVjLS4xOS4xNS0uMjQuNDItLjEyLjY0bDIgMy40NmMuMDkuMTYuMjYuMjUuNDQuMjUuMDYgMCAuMTItLjAxLjE3LS4wM2wyLjQ5LTFjLjUyLjQgMS4wOC43MyAxLjY5Ljk4bC4zOCAyLjY1Yy4wMy4yNC4yNC40Mi40OS40Mmg0Yy4yNSAwIC40Ni0uMTguNDktLjQybC4zOC0yLjY1Yy42MS0uMjUgMS4xNy0uNTkgMS42OS0uOThsMi40OSAxYy4wNi4wMi4xMi4wMy4xOC4wMy4xNyAwIC4zNC0uMDkuNDMtLjI1bDItMy40NmMuMTItLjIyLjA3LS40OS0uMTItLjY0bC0yLjExLTEuNjV6bS0xLjk4LTEuNzFjLjA0LjMxLjA1LjUyLjA1LjczIDAgLjIxLS4wMi40My0uMDUuNzNsLS4xNCAxLjEzLjg5LjcgMS4wOC44NC0uNyAxLjIxLTEuMjctLjUxLTEuMDQtLjQyLS45LjY4Yy0uNDMuMzItLjg0LjU2LTEuMjUuNzNsLTEuMDYuNDMtLjE2IDEuMTMtLjIgMS4zNWgtMS40bC0uMTktMS4zNS0uMTYtMS4xMy0xLjA2LS40M2MtLjQzLS4xOC0uODMtLjQxLTEuMjMtLjcxbC0uOTEtLjctMS4wNi40My0xLjI3LjUxLS43LTEuMjEgMS4wOC0uODQuODktLjctLjE0LTEuMTNjLS4wMy0uMzEtLjA1LS41NC0uMDUtLjc0cy4wMi0uNDMuMDUtLjczbC4xNC0xLjEzLS44OS0uNy0xLjA4LS44NC43LTEuMjEgMS4yNy41MSAxLjA0LjQyLjktLjY4Yy40My0uMzIuODQtLjU2IDEuMjUtLjczbDEuMDYtLjQzLjE2LTEuMTMuMi0xLjM1aDEuMzlsLjE5IDEuMzUuMTYgMS4xMyAxLjA2LjQzYy40My4xOC44My40MSAxLjIzLjcxbC45MS43IDEuMDYtLjQzIDEuMjctLjUxLjcgMS4yMS0xLjA3Ljg1LS44OS43LjE0IDEuMTN6TTEyIDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyelwiPjwvcGF0aD48L3N2Zz48L2Rpdj48ZGl2IGNsYXNzPVwibWItNCBjb2xsYXBzZSBzaG93XCIgaWQ9bWFpblByb3BlcnR5UGFuZWw+PGRpdj48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+PGI+SUQ6PC9iPiB7e2ZkLlByZXNlbnRhdGlvbklkfX08L2xhYmVsPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+PGI+VHlwZTo8L2I+IHt7ZmQuRWxlbWVudFR5cGV9fTwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTAgbXQtMVwiPjxkaXYgY2xhc3M9Y29sPjxsYWJlbD5WaWRlbyBVUkw8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IG5nLWNoYW5nZT1mZC5sb2NhbFZhcnMuc2V0VmlkZW9TcmMoKSBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLlVybD4gPGxhYmVsPlZpZGVvIElkPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBuZy1jaGFuZ2U9ZmQubG9jYWxWYXJzLnNldFZpZGVvU3JjKCkgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5WaWRlb0lkPiA8bGFiZWw+VmlkZW8gb3JpZ2luPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBuZy1jaGFuZ2U9ZmQubG9jYWxWYXJzLnNldFZpZGVvU3JjKCkgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5PcmlnaW4+PGRpdiBjbGFzcz1cImNvbC1hdXRvIGN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveFwiPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IGlkPWNiQ3VzdG9tU2l6ZXt7ZmQuVXVpZFJlZn19IG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuQ3VzdG9tU2l6ZT4gPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgbGFiZWwteHNcIiBmb3I9Y2JDdXN0b21TaXple3tmZC5VdWlkUmVmfX0+Q3VzdG9tIHNpemU8L2xhYmVsPjwvZGl2PjxkaXYgbmctaWY9ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplPjxsYWJlbD5WaWRlbyB3aWR0aDwvbGFiZWw+IDxpbnB1dCB0eXBlPW51bWJlciBtaW49MCBtYXg9NTAwMCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLldpZHRoPiA8bGFiZWw+VmlkZW8gaGVpZ2h0PC9sYWJlbD4gPGlucHV0IHR5cGU9bnVtYmVyIG1pbj0wIG1heD01MDAwIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuSGVpZ2h0PjwvZGl2PjxkaXYgY2xhc3MgbmctaWY9ZmQuUGFyYW1ldGVycy5DdXN0b21TaXplPjxkaXYgY2xhc3M9XCJtYi0xIHNtYWxsIGJvbGRcIj5BbGlnbiB2aWRlbzwvZGl2PjxkaXYgY2xhc3M9YnRuLWdyb3VwPjxsYWJlbCBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBidG4teHNcIiBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkltYWdlQWxpZ24gdWliLWJ0bi1yYWRpbz1cIlxcJ2xlZnRcXCdcIiB1bmNoZWNrYWJsZT5MZWZ0IDxzcGFuIGNsYXNzPVwiZmEgZmEtYWxpZ24tbGVmdFwiPjwvc3Bhbj48L2xhYmVsPiA8bGFiZWwgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgYnRuLXhzXCIgbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5JbWFnZUFsaWduIHVpYi1idG4tcmFkaW89XCJcXCdjZW50ZXJcXCdcIiB1bmNoZWNrYWJsZT5NaWRkbGUgPHNwYW4gY2xhc3M9XCJmYSBmYS1hbGlnbi1jZW50ZXJcIj48L3NwYW4+PC9sYWJlbD4gPGxhYmVsIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIGJ0bi14c1wiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuSW1hZ2VBbGlnbiB1aWItYnRuLXJhZGlvPVwiXFwncmlnaHRcXCdcIiB1aWItdW5jaGVja2FibGU9dW5jaGVja2FibGU+UmlnaHQgPHNwYW4gY2xhc3M9XCJmYSBmYS1hbGlnbi1yaWdodFwiPjwvc3Bhbj48L2xhYmVsPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBjdXN0b20tY29udHJvbCBjdXN0b20tY2hlY2tib3hcIj48aW5wdXQgdHlwZT1jaGVja2JveCBuZy1jaGFuZ2U9ZmQubG9jYWxWYXJzLnNldFZpZGVvU3JjKCkgY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgaWQ9Y2JBdXRve3tmZC5VdWlkUmVmfX0gbmctbW9kZWw9ZmQuUGFyYW1ldGVycy5BdXRvUGxheT4gPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgbGFiZWwteHNcIiBmb3I9Y2JBdXRve3tmZC5VdWlkUmVmfX0+QXV0b3BsYXk8L2xhYmVsPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFdlYjNXYWxsZXQuaHRtbCcsJzxkaXYgY2xhc3M9d2lkZ2V0LWhlYWQgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LWFjdGl2ZSBtLTIgc2hhZG93XFwnOmZkLmRhdGFzZXRNYXBwZXJUeXBlPjAsXFwnbS0wIGJvcmRlci0wXFwnOihmZC5SZWxhdGVkPT1udWxsIHx8IGZkLlJlbGF0ZWQ9PXVuZGVmaW5lZCkgJiYgZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTJ9XCI+PGRpdiBjbGFzcz1cInJvdyBiZy1saWdodCBtLTAgcC0wIG1iLTFcIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtaGVhZC1hY3RpdmVcXCc6ZmQuZGF0YXNldE1hcHBlclR5cGU+MCxcXCdiZy1saWdodFxcJzpmZC5kYXRhc2V0TWFwcGVyVHlwZT09MH1cIiBuZy1pZj1cImZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xXCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMCBiZy1ncmF5LTEwMFwiPjxpIGNsYXNzPVwiZmEgZmEtd2FsbGV0IG14LTJcIj48L2k+PGxhYmVsPldlYjMgd2FsbGV0ICh7e2ZkLlByZXNlbnRhdGlvbklkfX0pICh7e2ZkLkxvY2FsSWR9fSk8L2xhYmVsPiA8YSBocmVmIHRpdGxlPXNvcnQgbmctY2xhc3M9XCJ7XFwnd2lkZ2V0LXByb3BcXCc6ZmQuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgZmQuZGF0YXNldE1hcHBlclR5cGU9PXVuZGVmaW5lZH1cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCB7e2dyaWRUeXBlfX0tZWxlbWVudC1kcmFnLWhhbmRsZSB3aWRnZXQtcHJvcFwiPjxpIGNsYXNzPVwie3tncmlkVHlwZX19LWVsZW1lbnQtZHJhZy1oYW5kbGUgZmFzIGZhLWdyaXAtdmVydGljYWxcIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgcC0wXCI+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCBwLTBcIiBuZy1pZj1cImZkLnNlbGVjdGVkUmVzb3VyY2VJdGVtLm5hbWVfY29uZmlybWVkIT1cXCdcXCcgJiYgZmQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPXVuZGVmaW5lZFwiPjxhIGhyZWYgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCBidG4tc21cIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtcHJvcFxcJzpmZC5kYXRhc2V0TWFwcGVyVHlwZT09MCB8fCBmZC5kYXRhc2V0TWFwcGVyVHlwZT09dW5kZWZpbmVkfVwiIHRpdGxlPVwiU2hvdy9oaWRlIHByb3BlcnRpZXNcIiBuZy1jbGljaz1mZC5zaG93UHJvcGVydGllcygyKT48aSBjbGFzcz1cImZhcyBmYS1jb2dcIj48L2k+PC9hPiA8YSBuZy1pZj1mYWxzZSBocmVmIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXN1Y2Nlc3MgYm9yZGVyLTAgYnRuLXNtXCIgdGl0bGU9XCJTaG93L2hpZGUgZm9ybVwiIG5nLWNsaWNrPVwiZmQuc2hvd0Zvcm09IWZkLnNob3dGb3JtXCI+PGkgbmctY2xhc3M9XCJ7XFwnZmFzIGZhLWV5ZS1zbGFzaFxcJzohZmQuc2hvd0Zvcm0sXFwnZmFzIGZhLWV5ZVxcJzpmZC5zaG93Rm9ybX1cIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48ZGl2IGt0LXRhc2stZHJvcGRvd24yPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cC0zIG5nLWlmPVwiZmQuZGF0YXNldE1hcHBlclR5cGU+MFwiPjxkaXYgY2xhc3M9bWItMj48ZGl2IGt0LWZvcm0tZWxlbWVudC1wcm9wZXJ0aWVzIGZkPWZkIGxvY2FsLXZhcnM9ZmQ+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1wLTM+PGRpdiBjbGFzcz1cInJvdyByb3VuZGVkIHAtMiBtLTAgbXktMlwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgdGV4dC1jZW50ZXJcIiBuZy1pZj1mZC5jb25uZWN0aW5nVG9XYWxsZXQ+PGRpdiBrdC1wcm9jZXNzaW5nLWFuaW1hdGlvbiBzaG93LW1zZz10cnVlIG1lc3NhZ2U9XCJDb25uZWN0aW5nIHRvIHdhbGxldFwiPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmZC53ZWIzQ29ubmVjdGVkICYmICFmZC5jb25uZWN0aW5nVG9XYWxsZXRcIiBjbGFzcz1cImNvbC1sZy0yNCBwLTBcIj48ZGl2IGNsYXNzPVwicm93IG0tMCBoNlwiPjxkaXYgY2xhc3M9Y29sPjxkaXYgY2xhc3M9XCJib2xkIHRleHQtZGFyayBteS0yXCI+Q09OTkVDVEVEIEFERFJFU1M8L2Rpdj48c3BhbiBzdHlsZT1jb2xvcjojNzk4MDkyIGNsYXNzPVwibXktMiBib2xkIGQtbm9uZSBkLXNtLWJsb2NrIGQtbWQtYmxvY2tcIj57e2ZkLmV0aF9hZGRyZXNzfX08L3NwYW4+IDxzcGFuIHN0eWxlPWNvbG9yOiM3OTgwOTIgY2xhc3M9XCJteS0yIHNtYWxsIGQtYmxvY2sgZC1zbS1ub25lIGQtbWQtbm9uZVwiPnt7ZmQuZXRoX2FkZHJlc3N9fTwvc3Bhbj4gPGlucHV0IGlkPXdlYjN7e2ZkLlByZXNlbnRhdGlvbklkfX0gdHlwZT1oaWRkZW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWRhcmtcIiBuZy1jbGljaz1cImZkLnNob3dEZXRhaWxzPSFmZC5zaG93RGV0YWlsc1wiPjxpIGNsYXNzPVwiZmEgZmEtY29nXCI+PC9pPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9ZmQuc2hvd0RldGFpbHMgY2xhc3M9XCJ0ZXh0LWluZm8gcm93IG0tMCBoNlwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcHktMlwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wXCIgbmctY2xpY2s9ZmQuY29weVRvQ2xpcGJvYXJkKGZkLmV0aF9hZGRyZXNzKT48c3Bhbj5Db3B5IGFkZHJlc3M8L3NwYW4+IDxpIGNsYXNzPVwiZmEgZmEtY29weSBtbC0xXCI+PC9pPjwvYnV0dG9uPiA8c3BhbiBuZy1jbGFzcz1cIntcXCd2aXNpYmlsaXR5LXZpc2libGVcXCc6ZmQuY29weUFkZHJlc3MsXFwndmlzaWJpbGl0eS1oaWRkZW5cXCc6IWZkLmNvcHlBZGRyZXNzfVwiIGNsYXNzPVwidGV4dC1wcmltYXJ5IHNtYWxsIG1sLTFcIj5Db3BpZWQhPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcHktMlwiPjxzcGFuPkNvbm5lY3RlZCB0byAmbmJzcDwvc3Bhbj48c3BhbiBjbGFzcz1ib2xkPnt7ZmQuY29ubmVjdGVkX25ldHdvcmt9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHB5LTJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tZGFya1wiIG5nLWNsaWNrPWZkLmRpc2Nvbm5lY3RXYWxsZXQoKT5EaXNjb25uZWN0IHdhbGxldDwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCIhZmQud2ViM0Nvbm5lY3RlZCAmJiAhZmQuY29ubmVjdGluZ1RvV2FsbGV0XCI+PGRpdj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgbmctY2xpY2s9ZmQuY29ubmVjdFdlYjNXYWxsZXQoKT48aSBjbGFzcz1cImZhIGZhLXdhbGxldCBtci0yXCI+PC9pPjxzcGFuPkNvbm5lY3Qgd2FsbGV0PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXY+PHNwYW4gY2xhc3M9XCJzbWFsbCB0ZXh0LWRhbmdlclwiPnt7ZmQuZXJyb3JfbXNnfX08L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0V2ViM1dhbGxldFByb3BlcnRpZXMuaHRtbCcsJzxkaXYgY2xhc3M9cC0xPjxkaXYgbmctaWY9XCJsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTFcIiBmZD1mZCBsb2NhbC12YXJzPWxvY2FsVmFycyBrdC1kYXRhc2V0LW1hcHBlcj48L2Rpdj48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPjFcIiBjbGFzcz1cImJ0bi1ncm91cCBidG4tZ3JvdXAtdG9nZ2xlIHctMTAwXCIgZGF0YS10b2dnbGU9YnV0dG9ucz48bGFiZWwgbmctY2xpY2s9XCJsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9MlwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeSBhY3RpdmVcIj48c3BhbiBjbGFzcz1cImZhIGZhLWNvZ1wiPjwvc3Bhbj4gPGlucHV0IHR5cGU9cmFkaW8gbmFtZT1mb3JtdHlwZSBpZD1vcHRpb24xIGF1dG9jb21wbGV0ZT1vZmY+IEZvcm0gcHJvcGVydGllczwvbGFiZWw+IDxsYWJlbCBuZy1jbGljaz1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT0zXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1kYXRhYmFzZVwiPjwvc3Bhbj48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPWZvcm10eXBlIGlkPW9wdGlvbjIgYXV0b2NvbXBsZXRlPW9mZj4gQ29udHJhY3QgcHJvcGVydGllczwvbGFiZWw+PC9kaXY+PGRpdiBuZy1pZj1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09M1wiIGNsYXNzPVwicm93IG0tMCBwLTJcIj48ZGl2IGNsYXNzPWNvbC0yND48bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkXCI+TGFiZWw8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLkxhYmVsPiA8bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkXCI+RXJyb3IgbXNnPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1mZC5FcnJvck1zZz4gPGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZFwiPlNlYXJjaFRleHQ8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLlNlYXJjaFRleHQ+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWwgZm9yPWNiUmVhZE9ubHl7e2ZkLlByZXNlbnRhdGlvbklkfX0+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiIG5hbWU9Y2JBdXRvTG9hZHt7ZmQuUHJlc2VudGF0aW9uSWR9fSBuZy1tb2RlbD1mZC5QYXJhbWV0ZXJzLkF1dG9Mb2FkIG5nLWNoZWNrZWQ9ZmQuUGFyYW1ldGVycy5BdXRvTG9hZD4gQXV0byBsb2FkIGNvbnRyYWN0PC9sYWJlbD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgna3RkaXJlY3RpdmV0ZW1wbGF0ZXMva3RXaWRnZXREYXRhU291cmNlRGVmLmh0bWwnLCc8ZGl2IGNsYXNzPW1iLTI+PGRpdiBuZy1jbGljaz1cImZkLmxvY2FsVmFycy5zaG93RGF0YVNvdXJjZSA9ICFmZC5sb2NhbFZhcnMuc2hvd0RhdGFTb3VyY2VcIiBjbGFzcz1cImV4cGFuZC1wcm9wZXJ0eS1wYW5lbCB0YWcgYm9yZGVyLWJvdHRvbSBib3JkZXItc3VjY2VzcyBteS0xIHB5LTFcIiBkYXRhLXRvZ2dsZT1jb2xsYXBzZSBocmVmPSNkYXRhU291cmNlUHJvcGVydGllcyByb2xlPWJ1dHRvbiBhcmlhLWV4cGFuZGVkPWZhbHNlIGFyaWEtY29udHJvbHM9ZGF0YVNvdXJjZVByb3BlcnRpZXM+PHNwYW4gY2xhc3M9XCJjb2wgcC0wXCI+RGF0YSBzb3VyY2VzPC9zcGFuPjxpIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZTtcIiBuZy1oaWRlPWZkLmxvY2FsVmFycy5zaG93RGF0YVNvdXJjZSBjbGFzcz1cImZhcyBmYS1hbmdsZS1kb3duXCI+PC9pPiA8aSBzdHlsZT1cImZvbnQtc2l6ZTogbGFyZ2U7XCIgbmctaGlkZT0hZmQubG9jYWxWYXJzLnNob3dEYXRhU291cmNlIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLXVwXCI+PC9pPjwvZGl2PjxkaXYgaWQ9ZGF0YVNvdXJjZVByb3BlcnRpZXMgY2xhc3M9XCJjb2xsYXBzZSBtLTAgbXQtMlwiPjxkaXY+PGRpdiBjbGFzcz1tdC0yIG5nLWZvcm09XCJcXCdmb3JtUmVzb3VyY2VcXCcrcmVzb3VyY2UuUGFyYW1ldGVycy5kYXRhc2V0LmlkXCI+PGxhYmVsIGNsYXNzPVwicGwtMCB0ZXh0LW11dGVkXCIgZm9yPXdpZGdldElke3tmZC5QcmVzZW50YXRpb25JZH19X3t7JGluZGV4fX0+VGFyZ2V0IHdpZGdldDwvbGFiZWw+PHNwYW4gY2xhc3M9XCJtbC0yIHRleHQtbXV0ZWRcIiBuZy1pZj0hYnRuQWN0aW9uLndpZGdldFJlZk9iaiBuZy1iaW5kPWJ0bkFjdGlvbi53aWRnZXRSZWY+PC9zcGFuPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1tb2RlbD1mZC5sb2NhbFZhcnMud2lkZ2V0UmVmT2JqIG9uLXNlbGVjdC1mbj1mZC5sb2NhbFZhcnMub25TZWxlY3RXaWRnZXRDYWxsYmFjayhpdGVtLG1vZGVsKSBzZWxlY3RlZC1pdGVtcz1mZC5sb2NhbFZhcnMud2lkZ2V0UmVmT2JqIGlzLW11bHRpcGxlPWZhbHNlIG5hbWU9d2lkZ2V0SWR7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctcmVxdWlyZWQ9ZmFsc2UgZHJvcGRvd24taXRlbXM9ZmQubG9jYWxWYXJzLndkZXMud2lkZ2V0UmVnaXN0cnlMaXN0W2ZkLmxvY2FsVmFycy5yZXNvdXJjZURlZmluaXRpb24udWlkXSBkcm9wZG93bi1pZD1cIlxcJ3dpZGdldExpc3RcXCcrcmVzb3VyY2UuUGFyYW1ldGVycy5kYXRhc2V0LmlkXCIgcGFyZW50LWZvcm0taWQ9XCJcXCdmb3JtUmVzb3VyY2VcXCcrcmVzb3VyY2UuUGFyYW1ldGVycy5kYXRhc2V0LmlkXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3Qgd2lkZ2V0XFwnXCI+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48L2Rpdj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi14cyBidG4tcHJpbWFyeVwiIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5hZGREYXRhU291cmNlKGZkLmxvY2FsVmFycy53aWRnZXRSZWZPYmopPjxzcGFuPkFkZCB3aWRnZXQgdG8gc291cmNlczwvc3Bhbj48L2J1dHRvbj48ZGl2IG5nLXJlcGVhdD1cImRzIGluIGZkLlBhcmFtZXRlcnMuRGF0YVNvdXJjZXNcIiBzdHlsZT1cImJvcmRlcjogMXB4IHNvbGlkIGdyYXk7cGFkZGluZzogNXB4O2JhY2tncm91bmQtY29sb3I6ICNmZmY7bWFyZ2luLXRvcDogNXB4O1wiPjxkaXYgbmctYmluZD1cIlxcJ1NvdXJjZSBcXCcrKCRpbmRleCsxKStcXCcuIFxcJytkcy53aWRnZXROYW1lXCI+PC9kaXY+PGRpdiBuZy1iaW5kPVwiXFwnU291cmNlIG5hbWU6IFxcJytkcy5zcmNOYW1lXCI+PC9kaXY+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cInctMTAwIGJ0biBidG4teHMgYnRuLWRhbmdlclwiIG5nLWNsaWNrPWZkLmxvY2FsVmFycy5kZWxEYXRhU291cmNlKCRpbmRleCk+PHNwYW4+RGVsZXRlIGRhdGEgc291cmNlIHt7JGluZGV4KzF9fTwvc3Bhbj4gPGkgY2xhc3M9XCJtbC0yIGZhIGZhLXRyYXNoXCI+PC9pPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCdrdGRpcmVjdGl2ZXRlbXBsYXRlcy9rdFdpZGdldEZvclRhc2tQcm9wZXJ0aWVzLmh0bWwnLCc8c2NyaXB0IGlkPXdpZGdldGZvcnRhc2twcm9wZXJ0aWVzLmh0bWwgdHlwZT10ZXh0L25nLXRlbXBsYXRlPjxkaXYgPiA8ZGl2IGNsYXNzPVwiY2hlY2tib3hcIj4gPGxhYmVsPiA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmctbW9kZWw9XCJmZC51c2VEZWZhdWx0XCI+IFVzZSBkZWZhdWx0IHZhbHVlIDwvbGFiZWw+IDwvZGl2PiA8ZGl2IGNsYXNzPVwiY2hlY2tib3hcIj4gPGxhYmVsPiA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmctbW9kZWw9XCJmZC5zaG93RmllbGRcIj4gU2hvdyBmaWVsZCA8L2xhYmVsPiA8L2Rpdj4gPGRpdiBjbGFzcz1cImNoZWNrYm94XCI+IDxsYWJlbD4gPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5nLWNsaWNrPVwic2V0U3lzdGVtRGF0ZSgpXCIgbmctbW9kZWw9XCJmZC51c2VTeXN0ZW1EYXRlXCI+IFBvcHVsYXRlIHdpdGggc3lzdGVtIGRhdGUvdGltZSA8L2xhYmVsPiA8L2Rpdj4gPC9kaXY+PC9zY3JpcHQ+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0V2lkZ2V0VG9vbGJveC5odG1sJywnPGRpdiBjbGFzcz1cIm5vc2VsZWN0IGNvbXBvbmVudC1saWJyYXJ5XCI+PGRpdiBpZD13aXphcmQgc3R5bGU9XCJ3aWR0aDoyNDBweDttYXJnaW46IGF1dG87XCIgY2xhc3M9XCJtYi0yIHRleHQtY2VudGVyXCI+PGRpdiBjbGFzcz1zbWFsbCBzdHlsZT1cIndpZHRoOjgwJTttYXJnaW46IGF1dG87XCI+VG8gYnVpbGQge3tncmlkc3RlclR5cGV9fSwgZHJhZyAmYW1wOyBkcm9wIGNvbXBvbmVudHMgZnJvbSB0b29sYm94IGJlbG93PC9kaXY+PC9kaXY+PGRpdiBpZD17e2dyaWRzdGVyVHlwZX19LXRvb2xib3ggY2xhc3M9XCJsaXN0LWNvbXBvbmVudC1saWJyYXJ5IG1yLTEgbWItNFwiIGRyYWd1bGEtc2NvcGU9JHJvb3QgZHJhZ3VsYT1cIlxcJ3t7ZHJhZ3VsYV9iYWd9fVxcJ1wiIGRyYWd1bGEtbW9kZWw9d2lkZ2V0VG9vbGJveEl0ZW1zIG5nLW1vZGVsPXdpZGdldFRvb2xib3hJdGVtcz48ZGl2IG5nLXJlcGVhdD1cInRvb2xib3hJdGVtIGluIHdpZGdldFRvb2xib3hJdGVtcyB0cmFjayBieSB0b29sYm94SXRlbS5pZFwiIHRpdGxlPVwiRHJhZyBtZVwiIG5nLWNsaWNrPXNldENvbGxhcHNlKHRvb2xib3hJdGVtLlRvb2xib3hHcm91cCx0b29sYm94SXRlbS5FbGVtZW50VHlwZSkgbmctY2xhc3M9XCJ7XFwne3tub3RfdG9vbGJveF9ncm91cF9jbGFzc319XFwnOnRvb2xib3hJdGVtLkVsZW1lbnRUeXBlIT1cXCd0b29sYm94Z3JvdXBcXCd9XCIgbmctaGlkZT1cInRvb2xib3hJdGVtLkhpZGVGcm9tVG9vbGJveCB8fCAoY29sbGFwc2VkW3Rvb2xib3hJdGVtLlRvb2xib3hHcm91cF0gJiYgdG9vbGJveEl0ZW0uRWxlbWVudFR5cGUhPVxcJ3Rvb2xib3hncm91cFxcJylcIj48ZGl2IHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiIG5nLWlmPVwidG9vbGJveEl0ZW0uRWxlbWVudFR5cGU9PVxcJ3Rvb2xib3hncm91cFxcJ1wiIGNsYXNzPVwiYm9yZGVyLWJvdHRvbSBteS0yXCI+PGkgbmctY2xhc3M9XCJ7XFwnZmEgZmEtYW5nbGUtZG93biBtci0xXFwnOmNvbGxhcHNlZFt0b29sYm94SXRlbS5Ub29sYm94R3JvdXBdLFxcJ2ZhIGZhLWFuZ2xlLXVwIG1yLTFcXCc6IWNvbGxhcHNlZFt0b29sYm94SXRlbS5Ub29sYm94R3JvdXBdfVwiPjwvaT4gPHNwYW4gY2xhc3M9Ym9sZD57e3Rvb2xib3hJdGVtLlRvb2xib3hHcm91cH19PC9zcGFuPjwvZGl2PjxzcGFuIG5nLWlmPVwidG9vbGJveEl0ZW0uRWxlbWVudFR5cGUhPVxcJ3Rvb2xib3hncm91cFxcJ1wiIGNsYXNzPVwie3tncmlkc3RlclR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIGljb24tbXV0ZWRcIiBuZy1jbGFzcz10b29sYm94SXRlbS5GYWNzcz48L3NwYW4+IDxzcGFuIG5nLWlmPVwidG9vbGJveEl0ZW0uRWxlbWVudFR5cGUhPVxcJ3Rvb2xib3hncm91cFxcJ1wiIGNsYXNzPVwie3tncmlkc3RlclR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIG14LTFcIj57e3Rvb2xib3hJdGVtLkxhYmVsfX08L3NwYW4+IDxpIG5nLWlmPVwidG9vbGJveEl0ZW0uRWxlbWVudFR5cGUhPVxcJ3Rvb2xib3hncm91cFxcJ1wiIGNsYXNzPVwie3tncmlkc3RlclR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIGhhbmRsZXIgZmFzIGZhLWdyaXAtdmVydGljYWwgdGV4dC1kYXJrIG1yLTFcIiBzdHlsZT1vcGFjaXR5OjAuMj48L2k+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0V3JpdGVTbWFydENvbnRyYWN0Lmh0bWwnLCc8ZGl2IGNsYXNzPXdpZGdldC1oZWFkIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1hY3RpdmUgbS0yIHNoYWRvd1xcJzpsb2NhbFZhcnNXaWRnZXQuZGF0YXNldE1hcHBlclR5cGU+MCxcXCdtLTAgYm9yZGVyLTBcXCc6KGZkLlJlbGF0ZWQ9PW51bGwgfHwgZmQuUmVsYXRlZD09dW5kZWZpbmVkKSAmJiBmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09Mn1cIj48ZGl2IGNsYXNzPVwicm93IG0tMCBwLTAgbWItMVwiIG5nLWNsYXNzPVwie1xcJ3dpZGdldC1oZWFkLWFjdGl2ZVxcJzpsb2NhbFZhcnNXaWRnZXQuZGF0YXNldE1hcHBlclR5cGU+MCxcXCdiZy1saWdodFxcJzpsb2NhbFZhcnNXaWRnZXQuZGF0YXNldE1hcHBlclR5cGU9PTB9XCIgbmctaWY9XCJmb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MVwiPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48aSBjbGFzcz1cImZhIGZhLWNvZGUgbXgtMlwiPjwvaT48bGFiZWw+V3JpdGUgc21hcnQgY29udHJhY3QgKHt7ZmQuUHJlc2VudGF0aW9uSWR9fSkgKHt7ZmQuTG9jYWxJZH19KTwvbGFiZWw+IDxhIGhyZWYgdGl0bGU9c29ydCBuZy1jbGFzcz1cIntcXCd3aWRnZXQtcHJvcFxcJzpsb2NhbFZhcnNXaWRnZXQuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgbG9jYWxWYXJzV2lkZ2V0LmRhdGFzZXRNYXBwZXJUeXBlPT11bmRlZmluZWR9XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnkgYm9yZGVyLTAge3tncmlkVHlwZX19LWVsZW1lbnQtZHJhZy1oYW5kbGUgd2lkZ2V0LXByb3BcIj48aSBjbGFzcz1cInt7Z3JpZFR5cGV9fS1lbGVtZW50LWRyYWctaGFuZGxlIGZhcyBmYS1ncmlwLXZlcnRpY2FsXCI+PC9pPjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIHRleHQtcmlnaHQgbXktYXV0b1wiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9bG9jYWxWYXJzV2lkZ2V0LnNob3dQcm9wZXJ0aWVzKDEpIG5nLWNsYXNzPVwie1xcJ2J0bi13YXJuaW5nXFwnOmxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCE9XFwnXFwnICYmIGxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCE9dW5kZWZpbmVkLCBcXCdidG4tb3V0bGluZS1wcmltYXJ5IG5vLWJvcmRlclxcJzpsb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQ9PVxcJ1xcJyB8fCBsb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQ9PXVuZGVmaW5lZH1cIiBjbGFzcz1cImJ0biBidG4teHNcIj48c3BhbiBuZy1pZj1cImxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCE9XFwnXFwnICYmIGxvY2FsVmFyc1dpZGdldC5zZWxlY3RlZFJlc291cmNlSXRlbS5uYW1lX2NvbmZpcm1lZCE9dW5kZWZpbmVkXCI+e3tsb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWR9fTwvc3Bhbj4gPHNwYW4gbmctaWY9XCJsb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQ9PVxcJ1xcJyB8fCBsb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQ9PXVuZGVmaW5lZFwiPlNlbGVjdCBzbWFydCBjb250cmFjdDwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCIgbmctaWY9XCJsb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPVxcJ1xcJyAmJiBsb2NhbFZhcnNXaWRnZXQuc2VsZWN0ZWRSZXNvdXJjZUl0ZW0ubmFtZV9jb25maXJtZWQhPXVuZGVmaW5lZFwiPjxhIGhyZWYgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBib3JkZXItMCBidG4tc21cIiBuZy1jbGFzcz1cIntcXCd3aWRnZXQtcHJvcFxcJzpsb2NhbFZhcnNXaWRnZXQuZGF0YXNldE1hcHBlclR5cGU9PTAgfHwgbG9jYWxWYXJzV2lkZ2V0LmRhdGFzZXRNYXBwZXJUeXBlPT11bmRlZmluZWR9XCIgdGl0bGU9XCJTaG93L2hpZGUgcHJvcGVydGllc1wiIG5nLWNsaWNrPWxvY2FsVmFyc1dpZGdldC5zaG93UHJvcGVydGllcygyKT48aSBjbGFzcz1cImZhcyBmYS1jb2dcIj48L2k+PC9hPiA8YSBuZy1pZj1mYWxzZSBocmVmIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXN1Y2Nlc3MgYm9yZGVyLTAgYnRuLXNtXCIgdGl0bGU9XCJTaG93L2hpZGUgZm9ybVwiIG5nLWNsaWNrPVwibG9jYWxWYXJzV2lkZ2V0LnNob3dGb3JtPSFsb2NhbFZhcnNXaWRnZXQuc2hvd0Zvcm1cIj48aSBuZy1jbGFzcz1cIntcXCdmYXMgZmEtZXllLXNsYXNoXFwnOiFsb2NhbFZhcnNXaWRnZXQuc2hvd0Zvcm0sXFwnZmFzIGZhLWV5ZVxcJzpsb2NhbFZhcnNXaWRnZXQuc2hvd0Zvcm19XCI+PC9pPjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGRpdiBrdC10YXNrLWRyb3Bkb3duMj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXAtMz48ZGl2IG5nLWlmPVwibG9jYWxWYXJzV2lkZ2V0LmRhdGFzZXRNYXBwZXJUeXBlPjBcIiBjbGFzcz1tYi0yPjxkaXYga3QtZm9ybS1lbGVtZW50LXByb3BlcnRpZXMgZmQ9ZmQgbG9jYWwtdmFycz1sb2NhbFZhcnNXaWRnZXQ+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj0kcm9vdC5nbG9iYWxzLmN1cnJlbnRVc2VyLndlYjNDb25uZWN0ZWQgY2xhc3M9XCJyb3cgbS0wIG15LTRcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTggdGV4dC1jZW50ZXIgbWItMlwiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9XCJmZC5TaG93VGFiPTE7ZmQuZ2V0TXlTdGFraW5ncygpXCIgbmctY2xhc3M9XCJ7XFwnYnRuLXByaW1hcnlcXCc6IGZkLlNob3dUYWI9PTEsXFwnYnRuLWxpZ2h0XFwnOiBmZC5TaG93VGFiIT0xfVwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCB3LTc1XCI+PGkgY2xhc3M9XCJmYXMgZmEtaGFuZC1ob2xkaW5nLXVzZCBtci0yXCI+PC9pPk15IHN0YWtpbmdzPC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy04IHRleHQtY2VudGVyIG1iLTJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwiZmQub3BlblN0YWtlU2NyZWVuKFxcJ0tUTFlPXFwnKVwiIG5nLWNsYXNzPVwie1xcJ2J0bi1wcmltYXJ5XFwnOmZkLlNob3dUYWI9PTIsXFwnYnRuLWxpZ2h0XFwnOmZkLlNob3dUYWIhPTJ9XCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IHctNzVcIj48aW1nIGNsYXNzIHNyYz0vaW1nL2Zhdmljb24uaWNvPiBTdGFrZSBLVExZTzwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctOCB0ZXh0LWNlbnRlciBtYi0yXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cImZkLm9wZW5TdGFrZVNjcmVlbihcXCdCTkZcXCcpXCIgbmctY2xhc3M9XCJ7XFwnYnRuLXByaW1hcnlcXCc6ZmQuU2hvd1RhYj09MyxcXCdidG4tbGlnaHRcXCc6ZmQuU2hvd1RhYiE9M31cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgdy03NVwiPjxpbWcgY2xhc3Mgd2lkdGg9OCUgc3JjPS9pbWcvYm5mX2dyZXkucG5nPiBTdGFrZSBCTkY8L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPSRyb290Lmdsb2JhbHMuY3VycmVudFVzZXIud2ViM0Nvbm5lY3RlZD48ZGl2IG5nLWlmPVwiZmQuU2hvd1RhYj09MVwiIGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgdGV4dC1saWdodCB0ZXh0LWNlbnRlclwiIG5nLWlmPVwiZmQubXlTdGFrZXMubGVuZ3RoPT0wICYmIGZkLmFmdGVyUXVlcnlcIj48ZGl2PjxpIGNsYXNzPVwiZmFyIGZhLWZvbGRlci1vcGVuIGZhLTR4XCI+PC9pPjwvZGl2PjxzcGFuIGNsYXNzPVwiaDUgbXQtMVwiPllvdSBoYXZlblxcJ3Qgc3Rha2VkIGFueSB0b2tlbnMhPC9zcGFuPjwvZGl2PjxkaXYgbmctcmVwZWF0PVwic3Rha2UgaW4gZmQubXlTdGFrZXMgdHJhY2sgYnkgJGluZGV4XCIgY2xhc3M9XCJjb2wtbGctMTIgY29sLXNtLTI0IHAtMVwiPjxkaXYgc3R5bGU9Y29sb3I6IzI2MzE0ZDtiYWNrZ3JvdW5kLWNvbG9yOiNlZmYxZjMgY2xhc3M9XCJyb3VuZGVkIHAtM1wiPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PGRpdj48c3BhbiBjbGFzcz1ib2xkPlN0YWtlZDwvc3Bhbj48L2Rpdj48c3BhbiBjbGFzcz1cImJvbGQgbXItMiBoNFwiIG5nLWJpbmQ9ZmQuZm9ybWF0TnVtYmVyKHN0YWtlLmFtb3VudCk+PC9zcGFuPiA8c3BhbiBjbGFzcz1cImJvbGQgbXItMiBoNFwiIG5nLWJpbmQ9ZmQuZ2V0VG9rZW5UaWNrZXIoc3Rha2UudG9rZW4pPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHAtMCBteS0yXCI+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPWNvbC1sZy0xMj48c3BhbiBuZy1jbGFzcyBjbGFzcz1ib2xkPlN0YWtpbmcgc3RhcnRlZCBvbjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0xMj48c3BhbiBjbGFzcz57e2ZkLmZvcm1hdERhdGUoc3Rha2UuY3JlYXRlZEF0KX19PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcC0wIG15LTJcIj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9Y29sLWxnLTEyPjxkaXYgbmctaWY9ZmQuaXNSZWxlYXNlZChzdGFrZSk+PHNwYW4gY2xhc3M9XCJib2xkIHRleHQtc3VjY2Vzc1wiPlN0YWtpbmcgZW5kZWQgb248L3NwYW4+PC9kaXY+PGRpdiBuZy1pZj0hZmQuaXNSZWxlYXNlZChzdGFrZSk+PHNwYW4gY2xhc3M9XCJib2xkIHRleHQtd2FybmluZ1wiPlN0YWtpbmcgZW5kcyBvbjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0xMj48ZGl2PjxzcGFuIG5nLWNsYXNzPVwie1xcJ3RleHQtc3VjY2Vzc1xcJzpmZC5pc1JlbGVhc2VkKHN0YWtlKSxcXCd0ZXh0LXdhcm5pbmdcXCc6IWZkLmlzUmVsZWFzZWQoc3Rha2UpfVwiPnt7ZmQuZm9ybWF0RGF0ZShzdGFrZS5zdGFrZUVuZCl9fTwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBteS0yXCIgbmctaWY9IXN0YWtlLnJlZGVlbWVkPjxkaXYgY2xhc3M9Y29sLWxnLTEyIG5nLWlmPWZkLmlzUmVsZWFzZWQoc3Rha2UpPjxkaXY+PHNwYW4gY2xhc3M9dGV4dC1zdWNjZXNzPllvdSBjYW4gcmVkZWVtPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMTIgYm9sZFwiIG5nLWlmPWZkLmlzUmVsZWFzZWQoc3Rha2UpPjxkaXY+PGRpdj48c3BhbiBuZy1iaW5kPVwiZmQuZ2V0QW1vdW50KHN0YWtlLnRva2VuLFxcJ0tUTFlPXFwnLHN0YWtlLmFtb3VudCxzdGFrZS5yZXdhcmRBbXQxKVwiPjwvc3Bhbj4gPHNwYW4+S1RMWU88L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBuZy1iaW5kPVwiZmQuZ2V0QW1vdW50KHN0YWtlLnRva2VuLFxcJ0JORlxcJyxzdGFrZS5hbW91bnQsc3Rha2UucmV3YXJkQW10MilcIj48L3NwYW4+IDxzcGFuPkJORjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBteS0yXCIgbmctaWY9IWZkLmlzUmVsZWFzZWQoc3Rha2UpPjxkaXYgY2xhc3M9Y29sLWxnLTEyPjxkaXYgbmctaWY9IXN0YWtlLnJlZGVlbWVkPjxzcGFuIGNsYXNzPWJvbGQ+V2hlbiBzdGFraW5nIGVuZHMgeW91IGNhbiByZWRlZW08L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb2wtbGctMTI+PGRpdj48c3BhbiBuZy1iaW5kPVwiZmQuZ2V0QW1vdW50KHN0YWtlLnRva2VuLFxcJ0tUTFlPXFwnLHN0YWtlLmFtb3VudCxzdGFrZS5yZXdhcmRBbXQxKVwiPjwvc3Bhbj4gPHNwYW4+S1RMWU88L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBuZy1iaW5kPVwiZmQuZ2V0QW1vdW50KHN0YWtlLnRva2VuLFxcJ0JORlxcJyxzdGFrZS5hbW91bnQsc3Rha2UucmV3YXJkQW10MilcIj48L3NwYW4+IDxzcGFuPkJORjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBteS0yXCIgbmctaWY9c3Rha2UucmVkZWVtZWQ+PGRpdiBjbGFzcz1jb2wtbGctMTI+PGRpdj48c3BhbiBjbGFzcz1cImJvbGQgdGV4dC1zdWNjZXNzXCI+UmVkZWVtZWQgb248L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb2wtbGctMTI+PHNwYW4gY2xhc3M9dGV4dC1zdWNjZXNzPnt7ZmQuZm9ybWF0RGF0ZShzdGFrZS5yZWRlZW1lZEF0KX19PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wIG15LTJcIiBuZy1pZj1zdGFrZS5yZWRlZW1lZD48ZGl2IGNsYXNzPWNvbC1sZy0xMj48ZGl2IG5nLWlmPVwic3Rha2Uuc3Rha2VFbmQ8PXN0YWtlLnJlZGVlbWVkQXRcIj48c3BhbiBjbGFzcz5Zb3UgaGF2ZSByZWRlZW1lZDwvc3Bhbj48L2Rpdj48ZGl2IG5nLWlmPVwic3Rha2Uuc3Rha2VFbmQ+c3Rha2UucmVkZWVtZWRBdFwiPjxzcGFuIGNsYXNzPllvdSBoYXZlIHJlZGVlbWVkIGVhcmx5PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMTIgYm9sZFwiPjxkaXYgbmctaWY9XCJzdGFrZS5zdGFrZUVuZDw9c3Rha2UucmVkZWVtZWRBdFwiPjxzcGFuIG5nLWJpbmQ9XCJmZC5nZXRBbW91bnQoc3Rha2UudG9rZW4sXFwnS1RMWU9cXCcsc3Rha2UuYW1vdW50LHN0YWtlLnJld2FyZEFtdDEpXCI+PC9zcGFuPiA8c3Bhbj5LVExZTzwvc3Bhbj48L2Rpdj48ZGl2IG5nLWlmPVwic3Rha2Uuc3Rha2VFbmQ8PXN0YWtlLnJlZGVlbWVkQXRcIj48c3BhbiBuZy1iaW5kPVwiZmQuZ2V0QW1vdW50KHN0YWtlLnRva2VuLFxcJ0JORlxcJyxzdGFrZS5hbW91bnQsc3Rha2UucmV3YXJkQW10MilcIj48L3NwYW4+IDxzcGFuPkJORjwvc3Bhbj48L2Rpdj48ZGl2IG5nLWlmPVwic3Rha2Uuc3Rha2VFbmQ+c3Rha2UucmVkZWVtZWRBdFwiPjxzcGFuIG5nLWJpbmQ9ZmQuZm9ybWF0TnVtYmVyKHN0YWtlLmFtb3VudCk+PC9zcGFuPiA8c3BhbiBuZy1iaW5kPWZkLmdldFRva2VuVGlja2VyKHN0YWtlLnRva2VuKT48L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHAtMCBtYi0yXCI+PGJ1dHRvbiBuZy1pZj1cInN0YWtlLnN0YWtlRW5kPD1mZC5jdXJyZW50RGF0ZSAmJiAhc3Rha2UucmVkZWVtZWRcIiB0eXBlPWJ1dHRvbiBuZy1kaXNhYmxlZD1cImZkLm1zZ3NbJGluZGV4XS5wZW5kaW5nIHx8IGZkLm1zZ3NbJGluZGV4XS5zdGF0dXNcIiBuZy1jbGljaz1mZC5SZWRlZW0oZmFsc2UsJGluZGV4KSBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnkgY29sLWxnLTI0XCI+UmVkZWVtIG5vdzwvYnV0dG9uPjxkaXYgbmctaWY9XCJzdGFrZS5zdGFrZUVuZD5mZC5jdXJyZW50RGF0ZSAmJiAhc3Rha2UucmVkZWVtZWRcIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWRpc2FibGVkPVwiZmQubXNnc1skaW5kZXhdLnBlbmRpbmcgfHwgZmQubXNnc1skaW5kZXhdLnN0YXR1c1wiIG5nLWNsaWNrPWZkLlJlZGVlbSh0cnVlLCRpbmRleCkgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IGNvbC1sZy0yNFwiPlJlZGVlbSBlYXJseTwvYnV0dG9uPiA8c3BhbiBjbGFzcz1cInNtYWxsIHRleHQtZGFuZ2VyXCI+SWYgeW91IHJlZGVlbSBlYXJseSB5b3Ugd2lsbCBub3QgcmVjZWl2ZSB0aGUgcmV3YXJkcyE8L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBwLTAgbXQtMlwiPjxkaXYgbmctaWY9ZmQubXNnc1skaW5kZXhdLnRyYW5zYWN0aW9uSGFzaCBjbGFzcz1cInJvdyBib3JkZXItdG9wIHB5LTIgbS0wIG10LTNcIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PHNwYW4gY2xhc3M9XCJib2xkIG1yLTNcIj5UcmFuc2FjdGlvbiBzdWJtaXR0ZWQ8L3NwYW4+IDxhIGhyZWY9aHR0cHM6Ly9ldGhlcnNjYW4uaW8vdHgve3tmZC5tc2dzWyRpbmRleF0udHJhbnNhY3Rpb25IYXNofX0gdGFyZ2V0PV9ibGFuaz5WaWV3IG9uIGV0aGVyc2NhbjwvYT48ZGl2IGNsYXNzPVwidGV4dC1icmVhayB0ZXh0LXdyYXBcIj57e2ZkLm1zZ3NbJGluZGV4XS50cmFuc2FjdGlvbkhhc2h9fTwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9ZmQubXNnc1skaW5kZXhdLnBlbmRpbmcgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBwLTAgdGV4dC13YXJuaW5nIGJvbGRcIj5QZW5kaW5nIHRyYW5zYWN0aW9uLi4uPC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1mZC5tc2dzWyRpbmRleF0uY29uZmlybWF0aW9uIGNsYXNzPVwicm93IG0tMCBtdC0yXCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMCBtci0yXCI+PHNwYW4gY2xhc3M+VHJhbnNhY3Rpb24gY29tcGxldGVkPC9zcGFuPiA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWluZm9cIj57e2ZkLm1zZ3NbJGluZGV4XS5jb25maXJtYXRpb259fSBibG9jayBjb25maXJtYXRpb25zPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgcC0wXCI+PHNwYW4gY2xhc3M+U3RhdHVzPC9zcGFuPiA8c3BhbiBjbGFzcz1cIm1sLTEgYmFkZ2UgYmFkZ2Utc3VjY2Vzc1wiIG5nLWlmPWZkLm1zZ3NbJGluZGV4XS5zdGF0dXM+U3VjY2Vzczwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJtbC0xIGJhZGdlIGJhZGdlLWRhbmdlclwiIG5nLWlmPSFmZC5tc2dzWyRpbmRleF0uc3RhdHVzPkVycm9yPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9ZmQubXNnc1skaW5kZXhdLmVycm9yTWVzc2FnZSBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHAtMCB0ZXh0LWRhbmdlclwiPkVycm9yOiB7e2ZkLm1zZ3NbJGluZGV4XS5lcnJvck1lc3NhZ2V9fTwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJmZC5TaG93VGFiPT0yIHx8IGZkLlNob3dUYWI9PTNcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNlZmYxZjM7XCIgY2xhc3M9XCJyb3cgcC0zIHJvdW5kZWQgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0xMiBjb2wteHMtMjQgY29sLXNtLTI0IHAtMFwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wIG15LTNcIj48ZGl2IG5nLWlmPWZkLmFwcHJvdmFsT3BlbiBjbGFzcz1teS0yPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9XCJmZC5hcHByb3ZhbE9wZW49ZmFsc2VcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHAtMCBweS0xXCI+PGkgY2xhc3M9XCJmYSBmYS1hcnJvdy1sZWZ0IG1yLTFcIj48L2k+UmV0dXJuIHRvIHN0YWtpbmc8L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHRleHQtY2VudGVyIHAtMCBteS0yXCI+PHNwYW4gY2xhc3M9aDU+WW91ciByZW1haW5pbmcgbGltaXQgaXM8L3NwYW4+PGRpdiBjbGFzcz1cImJvbGQgYmctd2hpdGUgcC0yIHJvdW5kZWRcIj57e2ZkLnJlbWFpblN0YWtlTGltaXRQcmludH19IHt7ZmQuY3VycmVudFRva2VuVGlja2VyfX08L2Rpdj48ZGl2IG5nLWlmPWZhbHNlPjxsYWJlbCBjbGFzcz10ZXh0LW11dGVkPlJlbWFpbmluZyBzdGFrZSBsaW1pdDwvbGFiZWw+IHt7ZmQubWF4U3Rha2VMaW1pdFByaW50fX08c3Bhbj48L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1mZC5hcHByb3ZhbE9wZW4gY2xhc3M9XCJjb2wtbGctMjQgdGV4dC1jZW50ZXIgcC0wIG15LTJcIj48c3BhbiBjbGFzcz1oNT5Zb3VyIGFsbG93YW5jZSBpczwvc3Bhbj48ZGl2IGNsYXNzPVwiYm9sZCBiZy13aGl0ZSBwLTIgcm91bmRlZFwiPnt7ZmQuYWxsb3dhbmNlfX0ge3tmZC5jdXJyZW50VG9rZW5UaWNrZXJ9fTwvZGl2PjwvZGl2PjxkaXYgbmctaWY9ZmQuYXBwcm92YWxPcGVuIGNsYXNzPVwiY29sLWxnLTI0IHAtMCBtdC0yXCI+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PHNwYW4gY2xhc3M9XCJ0ZXh0LXByaW1hcnkgYm9sZCBoNVwiPkFsbG93YW5jZSBhbW91bnQ8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LXJpZ2h0IHAtMFwiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9ZmQuc2V0TWF4QWxsb3dhbmNlKCkgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wXCI+TWF4PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1mZC5hcHByb3ZhbE9wZW4gY2xhc3M9XCJjb2wtbGctMjQgcC0wXCI+PGRpdiBuZy1pZj1mZC5hcHByb3ZhbE9wZW4gY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbCBwLTBcIj48aW5wdXQgdHlwZT10ZXh0IG1pbj0wIG5nLXJlcXVpcmVkPXRydWUgc3R5bGU9XCJmb250LXNpemU6IHgtbGFyZ2U7YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnRcIiBjbGFzcz1mb3JtLWNvbnRyb2wgcGxhY2Vob2xkZXI9MC4wMCBuZy1tb2RlbD1mZC5BcHByb3ZlQW1vdW50PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9ZmQuYXBwcm92YWxPcGVuIGNsYXNzPVwiY29sLWxnLTI0IHAtMCBteS0yXCI+PGRpdiBuZy1pZj1mZC5hcHByb3ZhbE9wZW4gY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBwLTAgbXQtMlwiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9ZmQuc2V0QWxsb3dhbmNlKCkgbmctZGlzYWJsZWQ9XCJmZC5BcHByb3ZlQW1vdW50PT11bmRlZmluZWRcIiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyB3LTEwMFwiPkFwcHJvdmUgYWxsb3dhbmNlPC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj0hZmQuYXBwcm92YWxPcGVuIGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTAgcHktMVwiPjxzcGFuIGNsYXNzPVwidGV4dC1wcmltYXJ5IGJvbGQgaDZcIj5BbW91bnQ8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LXJpZ2h0IHAtMCBweS0xXCI+PHNwYW4gY2xhc3M9bXItMT5BbGxvd2FuY2UgaXM8L3NwYW4+IDxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9XCJmZC5hcHByb3ZhbE9wZW49dHJ1ZVwiIHRpdGxlPVwiQ2xpY2sgdG8gc2V0IGFsbG93YW5jZVwiIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tb3V0bGluZS1zdWNjZXNzIHAtMVwiPjxzcGFuIGNsYXNzPW1yLTE+e3tmZC5hbGxvd2FuY2V9fTwvc3Bhbj48c3Bhbj57e2ZkLmN1cnJlbnRUb2tlblRpY2tlcn19PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9IWZkLmFwcHJvdmFsT3BlbiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sIHAtMFwiPjxpbnB1dCB0eXBlPXRleHQgbWluPTAgc3R5bGU9XCJmb250LXNpemU6IHgtbGFyZ2U7YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnRcIiBjbGFzcz1mb3JtLWNvbnRyb2wgcGxhY2Vob2xkZXI9MC4wMCBuZy1tb2RlbD1mZC5TdGFrZUFtb3VudD48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPSFmZC5hcHByb3ZhbE9wZW4gY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbCBwLTAgbXQtMlwiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9ZmQuc3Rha2UoKSBjbGFzcz1cImJ0biBidG4tbGcgYnRuLXN1Y2Nlc3Mgdy03NVwiPlN0YWtlPC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9ZmQuc2V0TWF4KCkgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wIHB5LTFcIj5NYXg8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPWZkLmFwcHJvdmFsT3BlbiBjbGFzcz1cImNvbC1sZy0yNCBwLTBcIj48ZGl2IG5nLWlmPWZkLnRyYW5zYWN0aW9uSGFzaDEgY2xhc3M9XCJyb3cgYm9yZGVyLXRvcCBweS0yIG0tMCBtdC0zXCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPjxzcGFuIGNsYXNzPVwiYm9sZCBtci0yXCI+VHJhbnNhY3Rpb24gc3VibWl0dGVkPC9zcGFuPiA8YSBocmVmPWh0dHBzOi8vZXRoZXJzY2FuLmlvL3R4L3t7ZmQudHJhbnNhY3Rpb25IYXNoMX19IHRhcmdldD1fYmxhbms+VmlldyBvbiBldGhlcnNjYW48L2E+PGRpdiBjbGFzcz1cInRleHQtYnJlYWsgdGV4dC13cmFwXCI+e3tmZC50cmFuc2FjdGlvbkhhc2gxfX08L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPWZkLnBlbmRpbmcxIGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcC0wIHRleHQtd2FybmluZyBib2xkXCI+UGVuZGluZyB0cmFuc2FjdGlvbi4uLjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9ZmQuY29uZmlybWF0aW9uMSBjbGFzcz1cInJvdyBtLTAgbXQtMlwiPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTAgbXItMlwiPjxzcGFuIGNsYXNzPlRyYW5zYWN0aW9uIGNvbXBsZXRlZDwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1pbmZvXCI+e3tmZC5jb25maXJtYXRpb24xfX0gYmxvY2sgY29uZmlybWF0aW9uczwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIHAtMFwiPjxzcGFuIGNsYXNzPlN0YXR1czwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJtbC0xIGJhZGdlIGJhZGdlLXN1Y2Nlc3NcIiBuZy1pZj1mZC5zdGF0dXMxPlN1Y2Nlc3M8L3NwYW4+IDxzcGFuIGNsYXNzPVwibWwtMSBiYWRnZSBiYWRnZS1kYW5nZXJcIiBuZy1pZj0hZmQuc3RhdHVzMT5FcnJvcjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPWZkLmVycm9yTWVzc2FnZTEgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBwLTAgdGV4dC1kYW5nZXJcIj5FcnJvcjoge3tmZC5lcnJvck1lc3NhZ2UxfX08L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPSFmZC5hcHByb3ZhbE9wZW4gY2xhc3M9XCJjb2wtbGctMjQgcC0wXCI+PGRpdiBuZy1pZj1mZC50cmFuc2FjdGlvbkhhc2gyIGNsYXNzPVwicm93IGJvcmRlci10b3AgcHktMiBtLTAgbXQtM1wiPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48c3BhbiBjbGFzcz1cImJvbGQgbXItMlwiPlRyYW5zYWN0aW9uIHN1Ym1pdHRlZDwvc3Bhbj4gPGEgaHJlZj1odHRwczovL2V0aGVyc2Nhbi5pby90eC97e2ZkLnRyYW5zYWN0aW9uSGFzaDJ9fSB0YXJnZXQ9X2JsYW5rPlZpZXcgb24gZXRoZXJzY2FuPC9hPjxkaXYgY2xhc3M9XCJ0ZXh0LWJyZWFrIHRleHQtd3JhcFwiPnt7ZmQudHJhbnNhY3Rpb25IYXNoMn19PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1mZC5wZW5kaW5nMiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHAtMCB0ZXh0LXdhcm5pbmcgYm9sZFwiPlBlbmRpbmcgdHJhbnNhY3Rpb24uLi48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPWZkLmNvbmZpcm1hdGlvbjIgY2xhc3M9XCJyb3cgbS0wIG10LTJcIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wIG1yLTJcIj48c3BhbiBjbGFzcz5UcmFuc2FjdGlvbiBjb21wbGV0ZWQ8L3NwYW4+IDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtaW5mb1wiPnt7ZmQuY29uZmlybWF0aW9uMn19IGJsb2NrIGNvbmZpcm1hdGlvbnM8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCBwLTBcIj48c3BhbiBjbGFzcz5TdGF0dXM8L3NwYW4+IDxzcGFuIGNsYXNzPVwibWwtMSBiYWRnZSBiYWRnZS1zdWNjZXNzXCIgbmctaWY9ZmQuc3RhdHVzMj5TdWNjZXNzPC9zcGFuPiA8c3BhbiBjbGFzcz1cIm1sLTEgYmFkZ2UgYmFkZ2UtZGFuZ2VyXCIgbmctaWY9IWZkLnN0YXR1czI+RXJyb3I8L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1mZC5lcnJvck1lc3NhZ2UyIGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcC0wIHRleHQtZGFuZ2VyXCI+RXJyb3I6IHt7ZmQuZXJyb3JNZXNzYWdlMn19PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL2t0V3JpdGVTbWFydENvbnRyYWN0UHJvcGVydGllcy5odG1sJywnPGRpdiBjbGFzcz1wLTE+PGRpdiBuZy1pZj1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT09MVwiIGZkPWZkIGxvY2FsLXZhcnM9bG9jYWxWYXJzIGt0LWRhdGFzZXQtbWFwcGVyPjwvZGl2PjxkaXYgbmctaWY9XCJsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU+MVwiIGNsYXNzPVwiYnRuLWdyb3VwIGJ0bi1ncm91cC10b2dnbGUgdy0xMDBcIiBkYXRhLXRvZ2dsZT1idXR0b25zPjxsYWJlbCBuZy1jbGljaz1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT01XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IGFjdGl2ZVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtY29nXCI+PC9zcGFuPiA8aW5wdXQgdHlwZT1yYWRpbyBuYW1lPWZvcm10eXBlIGlkPW9wdGlvbjEgYXV0b2NvbXBsZXRlPW9mZj4gQ29udHJhY3QgcHJvcGVydGllczwvbGFiZWw+IDxsYWJlbCBuZy1jbGljaz1cImxvY2FsVmFycy5kYXRhc2V0TWFwcGVyVHlwZT0zXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1kYXRhYmFzZVwiPjwvc3Bhbj48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPWZvcm10eXBlIGlkPW9wdGlvbjIgYXV0b2NvbXBsZXRlPW9mZj4gYWJjPC9sYWJlbD4gPGxhYmVsIG5nLWNsaWNrPVwibG9jYWxWYXJzLmRhdGFzZXRNYXBwZXJUeXBlPTRcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIj48c3BhbiBjbGFzcz1cImZhIGZhLWNvcHlcIj48L3NwYW4+IDxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9Zm9ybXR5cGUgaWQ9b3B0aW9uMyBhdXRvY29tcGxldGU9b2ZmPiB4eXo8L2xhYmVsPjwvZGl2PjxkaXYgbmctaWY9XCJsb2NhbFZhcnMuZGF0YXNldE1hcHBlclR5cGU9PTVcIiBjbGFzcz1cInJvdyBtLTAgcC0yXCI+PGRpdiBjbGFzcz1jb2wtMjQ+PGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZFwiPkxhYmVsPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1mZC5MYWJlbD4gPGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZFwiPkVycm9yIG1zZzwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgbmctbW9kZWw9ZmQuRXJyb3JNc2c+IDxsYWJlbCBjbGFzcz1cImxhYmVsIHRleHQtbXV0ZWRcIj5TZWFyY2hUZXh0PC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbD1mZC5TZWFyY2hUZXh0PiA8bGFiZWwgY2xhc3M9XCJsYWJlbCB0ZXh0LW11dGVkXCI+RnVuY3Rpb248L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIG5nLW1vZGVsPWZkLlBhcmFtZXRlcnMuRnVuY3Rpb24+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0xMiBtdC0xXCI+PGRpdiBjbGFzcz1tYi0yPjxzcGFuIGNsYXNzPVwiYm9sZCBzbWFsbCBib3JkZXItYm90dG9tIGJvcmRlci1pbmZvIHAtMSB0ZXh0LWluZm9cIj5Db250cmFjdCBkYXRhc2V0PC9zcGFuPjwvZGl2PjxkaXYgbmctcmVwZWF0PVwiZGF0YXNldCBpbiBmZC5yZXNvdXJjZS5QYXJhbWV0ZXJzLkRhdGFzZXRzIHRyYWNrIGJ5ICRpbmRleFwiIGNsYXNzPXAtMj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWZkLmxvYWRCbG9ja2NoYWluRGF0YXNldERlZmluaXRpb24oZGF0YXNldCkgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLWluZm8gbXktMlwiPnt7ZGF0YXNldC5EYXRhc2V0TmFtZX19PC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0xMiBtdC0xXCI+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJ2t0ZGlyZWN0aXZldGVtcGxhdGVzL3Byb2Nlc3NpbmcuaHRtbCcsJzxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwLTIgYm9yZGVyLTEgcHJvY2Vzc2luZy1zdHlsZVwiIG5nLXNob3c9c2hvd01zZz48ZGl2IGNsYXNzPXNwaW5uZXItc3RkPjxkaXYgY2xhc3M9XCJyZWN0MSBtbC0xXCI+PC9kaXY+PGRpdiBjbGFzcz1cInJlY3QyIG1sLTFcIj48L2Rpdj48ZGl2IGNsYXNzPVwicmVjdDMgbWwtMVwiPjwvZGl2PjxkaXYgY2xhc3M9XCJyZWN0NCBtbC0xXCI+PC9kaXY+PGRpdiBjbGFzcz1cInJlY3Q1IG1sLTFcIj48L2Rpdj48L2Rpdj48ZGl2PjxoNT57eyBtZXNzYWdlIH19PC9oNT48L2Rpdj48L2Rpdj4nKTt9XSk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJYWDA9IiwiLyoqXHJcbiAqIEthdGFseW8gYXBpIGNsYXNzIChrdC1hcGkuanMpIGltcGxlbWVudHMgUkVTVCBmdW5jdGlvbmFsaXR5IGluIEthdGFseW8gcGxhdGZvcm0gdXNpbmcgZmV0Y2hcclxuICogQGxpY2Vuc2UgTUlUIFxyXG4gKiBAYnVpbGQ6IDIwMjEtMTItMTRcclxuICogQHZlcnNpb24gMC4xXHJcbiAqIGh0dHBzOi8vZ2l0bGFiLmNvbS9rYXRhbHlvL2t0LWFwaVxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjEgS2F0YWx5b1xyXG4qKi9cclxuXHJcbiAndXNlIHN0cmljdCc7XHJcbiBcclxuICAgICAgICBcclxuICAgICAgICAgIC8qKlxyXG4gICAgICAgICAqIENsYXNzIEthdGFseW9BcGkgaXMgYSBjbGFzcyB3aGVyZSBhbGwgcGFyYW1ldGVycyBmb3IgZmV0Y2ggY2FsbHMgYXJlIGRlZmluZWRcclxuICAgICAgICAgKiBAc2luY2UgMC4xXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgXHJcbiAgICAgICAgY2xhc3MgS2F0YWx5b0FwaU1haW4ge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgY29uc3RydWN0b3IoYXBpVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hcGlVcmwgPSB3aW5kb3cuX2Vudi5hcGlVcmxcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKGFwaVR5cGUpICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFwaVR5cGU9PVwiZGphbmdvXCIpICB0aGlzLmFwaVVybCA9IHdpbmRvdy5fZW52LmFwaVVybFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChhcGlUeXBlPT1cImZhc3RcIikgIHRoaXMuYXBpVXJsID0gd2luZG93Ll9lbnYuZmFzdEFwaVVybFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5LYXRhbHlvQXBpQ2xhc3MgPSBuZXcgS2F0YWx5b0FwaVRva2VuQXV0aCgpOyAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLkthdGFseW9BcGlDbGFzcy5zZXRBcGlVcmwodGhpcy5hcGlVcmwpXHJcblxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGFkZF9hdXRoX3Rva2VuKGNzcmZfdG9rZW4sYXV0aF9kYXRhKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICB0aGlzLkthdGFseW9BcGlDbGFzcyA9IG5ldyBLYXRhbHlvQXBpVG9rZW5BdXRoKGNzcmZfdG9rZW4sYXV0aF9kYXRhKTsgXHJcbiAgICAgICAgICAgICB0aGlzLkthdGFseW9BcGlDbGFzcy5zZXRBcGlVcmwodGhpcy5hcGlVcmwpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGFkZF9hdXRoX3Nzbyhjc3JmX3Rva2VuKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICB0aGlzLkthdGFseW9BcGlDbGFzcyA9IG5ldyBLYXRhbHlvQXBpU3NvKGNzcmZfdG9rZW4pO1xyXG4gICAgICAgICAgICAgdGhpcy5LYXRhbHlvQXBpQ2xhc3Muc2V0QXBpVXJsKHRoaXMuYXBpVXJsKSAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBDbGFzcyBLYXRhbHlvQXBpU3NvIGlzIGEgY2xhc3MgZm9yIHNlbmRpbmcgZmV0Y2ggdXNpbmcgc3NvXHJcbiAgICAgICAgICogQHNpbmNlIDAuMVxyXG4gICAgICAgICAqIEBtZXRob2QgYWRkX2hlYWRlciBpcyB1c2VkIHRvIGFkZCBuZXcgaGVhZGVyc1xyXG4gICAgICAgICAqIEBtZXRob2Qgc2VuZCBpcyB1c2VkIHRvIHNlbmQgdGhlIGNhbGwgdG8gdGhlIHNlcnZlciBcclxuICAgICAgICAgKi9cclxuICAgICAgICBcclxuICAgICAgICBjbGFzcyBLYXRhbHlvQXBpU3NvIHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNvbnN0cnVjdG9yKGNzcmZfdG9rZW4pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXJsID0gJyc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1ldGhvZCA9ICdHRVQnO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hcGlVcmw9JydcclxuICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVycz17fTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3NyZiA9IGNzcmZfdG9rZW5cclxuICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyc1snWC1DU1JGVG9rZW4nXSA9IGNzcmZfdG9rZW47XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddPSAnYXBwbGljYXRpb24vanNvbic7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgYWRkX2hlYWRlcihoZWFkZXIpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgIHRoaXMuaGVhZGVycy5wdXNoKGhlYWRlcik7IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNldF9oZWFkZXIoaGVhZGVyLGhlYWRlcl92YWx1ZSlcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJzW2hlYWRlcl09IGhlYWRlcl92YWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHNldEFwaVVybChhcGlVcmwpIHtcclxuICAgICAgICAgICAgICAgdGhpcy5hcGlVcmw9YXBpVXJsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZ2V0Q3NyZigpIHtcclxuICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3NyZlxyXG4gICAgICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgIHNldENzcmYoY3NyZl90b2tlbikge1xyXG4gICAgICAgICAgICAgICB0aGlzLmNzcmY9Y3NyZl90b2tlblxyXG4gICAgICAgICAgICAgICB0aGlzLmhlYWRlcnNbJ1gtQ1NSRlRva2VuJ10gPSBjc3JmX3Rva2VuO1xyXG4gICAgICAgICAgICB9ICAgICAgICAgICBcclxuICAgICAgICAgICAgc2VuZCgpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhc3luYyBnZXQodXJsKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdXJsPXRoaXMuYXBpVXJsICsgdXJsICAgIFxyXG4gICAgICAgICAgICAgIHJldHVybiBmZXRjaCh1cmwse1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHRoaXMuaGVhZGVycyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSB0aGUgcmVzcG9uc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOjQ5OSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c6ZXJyb3IubWVzc2FnZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBlcnJvci5zdGFja1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGFzeW5jIHBvc3QodXJsLHBvc3RfZGF0YSkgXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHVybD10aGlzLmFwaVVybCArIHVybFxyXG4gICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZldGNoKHVybCx7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogdGhpcy5oZWFkZXJzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWRlbnRpYWxzOiAnaW5jbHVkZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkocG9zdF9kYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgdGhlIHJlc3BvbnNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czo0OTksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnOmVycm9yLm1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZXJyb3Iuc3RhY2tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICBhc3luYyBmYWtlX3Bvc3QoZXJyX2NvZGUpIC8vU0lNVUxBVEVcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdXJsID0gXCJodHRwczovL2h0dHBzdGF0LnVzL1wiKyBlcnJfY29kZSAgIFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZldGNoKHVybCx7ICBoZWFkZXJzOiB0aGlzLmhlYWRlcnMsICBtZXRob2Q6ICdHRVQnLCAgIH0pXHJcbiAgICAgICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7ICAgICAgICByZXR1cm4gcmVzcG9uc2U7ICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6NDk5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZzplcnJvci5tZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGVycm9yLnN0YWNrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGFzeW5jIHB1dCh1cmwscHV0X2RhdGEpIFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB1cmw9dGhpcy5hcGlVcmwgKyB1cmwgICBcclxuICAgICAgICAgICAgICAgIHJldHVybiBmZXRjaCh1cmwse1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHRoaXMuaGVhZGVycyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQVVQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHB1dF9kYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgdGhlIHJlc3BvbnNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOjQ5OSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c6ZXJyb3IubWVzc2FnZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBlcnJvci5zdGFja1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYXN5bmMgc2VuZCh1cmwsbWV0aG9kLHBvc3RfZGF0YSlcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHVybD10aGlzLmFwaVVybCArIHVybFxyXG4gICAgICAgICAgICAgIHJldHVybiBmZXRjaCh1cmwse1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogdGhpcy5oZWFkZXJzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBtZXRob2QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShwb3N0X2RhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSB0aGUgcmVzcG9uc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6NDk5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZzplcnJvci5tZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGVycm9yLnN0YWNrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBDbGFzcyBLYXRhbHlvQXBpVG9rZW5BdXRoIGlzIGEgY2xhc3MgZm9yIHNlbmRpbmcgZmV0Y2ggdXNpbmcgVG9rZW4gYXV0aFxyXG4gICAgICAgICAqIEBzaW5jZSAwLjFcclxuICAgICAgICAgKiBAbWV0aG9kIGFkZF9oZWFkZXIgaXMgdXNlZCB0byBhZGQgbmV3IGhlYWRlcnNcclxuICAgICAgICAgKiBAbWV0aG9kIHNlbmQgaXMgdXNlZCB0byBzZW5kIHRoZSBjYWxsIHRvIHRoZSBzZXJ2ZXIgXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgXHJcbiAgICAgICAgY2xhc3MgS2F0YWx5b0FwaVRva2VuQXV0aCB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBjb25zdHJ1Y3Rvcihjc3JmX3Rva2VuLGF1dGhfZGF0YSwgYXBpVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cmwgPSAnJztcclxuICAgICAgICAgICAgICAgIHRoaXMubWV0aG9kID0gJ0dFVCc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhlYWRlcnM9e307XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFwaVVybD0nJ1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jc3JmID0gY3NyZl90b2tlblxyXG4gICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJzWydYLUNTUkZUb2tlbiddID0gY3NyZl90b2tlbjtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyc1snQXV0aG9yaXphdGlvbiddID0gYXV0aF9kYXRhO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJzWydDb250ZW50LVR5cGUnXT0gJ2FwcGxpY2F0aW9uL2pzb24nO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgIHNldEFwaVVybChhcGlVcmwpIHtcclxuICAgICAgICAgICAgICAgdGhpcy5hcGlVcmw9YXBpVXJsXHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgc3RhdGljIHJlY3Vyc2l2ZURlbGV0ZUdhcmJhZ2UgKG9iaiwgIHBhdGNoRGF0YSkgICAgICB7IC8vICByZWN1cnNpdmVseSBwYXRjaGluZyBkYXNoYm9hcmQgb2JqZWN0XHJcbiAgICAgICAgICAgICAgICB2YXIgbyA9IHt9O1xyXG4gICAgICAgICAgICAgICAgaWYgKG9iaikgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChcclxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihrZXkpIHsgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAodHlwZW9mKG9ialtrZXldKSA9PT0gJ29iamVjdCcpICYmIG9ialtrZXldICAgKSB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jb250YWluZXIgbGV2ZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIChrZXkgPT09ICdjb2Rlc0RlZmluaXRpb25MaXN0JykgfHwgKGtleSA9PT0ncHVibGlzaGVkUmVzb3VyY2VMaXN0JykgfHwgKGtleT09PSdyZXNvdXJjZUxpc3QnKSB8fCAoa2V5PT09J2RhdGFzZXRMaXN0UGFyZW50JykgfHwgKGtleT09J2xvY2FsVmFycycpIHx8IChrZXk9PSd0YWdMaXN0JykgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvYmpba2V5XVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAgICBLYXRhbHlvQXBpVG9rZW5BdXRoLnJlY3Vyc2l2ZURlbGV0ZUdhcmJhZ2Uob2JqW2tleV0sICBwYXRjaERhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAgLy8gbGVhZiBsZXZlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkgPT0gJ25lc3RvJyApIHsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9bJ2lkJ109IG9ialtrZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIDsgIFxyXG4gICAgICAgICAgICAgICAgLy9pZiAoT2JqZWN0LmtleXMobykubGVuZ3RoID4gMCkgLi5kbyBzb21vZXRoaW5nIHdpdGggbyAgIFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICBzdGF0aWMgY2xvbmVXaXRoRGVsZXRlKG9iaikge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2YgKG9iaikgIT09ICdvYmplY3QnIHx8ICdpc0FjdGl2ZUNsb25lJyBpbiBvYmogfHwgIG9iaiBpbnN0YW5jZW9mIEZpbGUpICByZXR1cm4gb2JqO1xyXG4gICAgICAgICAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIERhdGUgKVxyXG4gICAgICAgICAgICAgICAgICAgLy8gdmFyIHRlbXAgPSBuZXcgb2JqLmNvbnN0cnVjdG9yKCk7IC8vb3IgbmV3IERhdGUob2JqKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IG5ldyBEYXRlKG9iai5nZXRUaW1lKCkpIFxyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIHZhciB0ZW1wID0gb2JqLmNvbnN0cnVjdG9yKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIG9iaikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggKG9ialtrZXldIGluc3RhbmNlb2YgRnVuY3Rpb24pIHx8IChrZXkgPT09ICdjb2Rlc0RlZmluaXRpb25MaXN0JykgfHwgKGtleSA9PT0ncHVibGlzaGVkUmVzb3VyY2VMaXN0JykgfHwgKGtleT09PSdyZXNvdXJjZUxpc3QnKSB8fCAoa2V5PT09J2RhdGFzZXRMaXN0UGFyZW50JykgfHwgKGtleT09J2xvY2FsVmFycycpIHx8IChrZXk9PSd0YWdMaXN0JykgIHx8IChrZXk9PSdsVmFycycpIHx8IChrZXk9PSdnc3J2YycpICAgKSAgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2tpcCBmdW5jdGlvbnMgLCBsaXN0cywgTE9DQUxWQVJTXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpbJ2lzQWN0aXZlQ2xvbmUnXSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wW2tleV0gPSBLYXRhbHlvQXBpVG9rZW5BdXRoLmNsb25lV2l0aERlbGV0ZShvYmpba2V5XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgb2JqWydpc0FjdGl2ZUNsb25lJ107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGVtcDtcclxuICAgICAgICAgICAgfVxyXG4gICBcclxuICAgIFxyXG4gICAgICAgICAgICBcclxuICAgIFxyXG4gICAgICAgICAgICBhZGRfaGVhZGVyKGhlYWRlcilcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmV4dGVuZCh0aGlzLmhlYWRlcnMsaGVhZGVyKTsgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHNldF9oZWFkZXIoaGVhZGVyLGhlYWRlcl92YWx1ZSlcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJzW2hlYWRlcl09IGhlYWRlcl92YWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBnZXRDc3JmKCkge1xyXG4gICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jc3JmXHJcbiAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgICAgc2V0Q3NyZihjc3JmX3Rva2VuKSB7XHJcbiAgICAgICAgICAgICAgIHRoaXMuY3NyZj1jc3JmX3Rva2VuXHJcbiAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyc1snWC1DU1JGVG9rZW4nXSA9IGNzcmZfdG9rZW47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYXN5bmMgZ2V0KHVybClcclxuICAgICAgICAgICAge1xyXG5cclxuICAgICAgICAgICAgICB1cmw9dGhpcy5hcGlVcmwgK3VybCAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgcmV0dXJuIGZldGNoKHVybCx7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogdGhpcy5oZWFkZXJzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIHRoZSByZXNwb25zZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6NDk5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZzplcnJvci5tZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGVycm9yLnN0YWNrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgYXN5bmMgcG9zdCh1cmwscG9zdF9kYXRhKSBcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAvLyBkZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgdXJsPXRoaXMuYXBpVXJsICt1cmwgXHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdmFyIG5ld19wb3N0X2RhdGE9S2F0YWx5b0FwaVRva2VuQXV0aC5jbG9uZVdpdGhEZWxldGUocG9zdF9kYXRhKVxyXG4gICAgICAgICAgICAgICAgLy92YXIgbmV3X3Bvc3RfZGF0YSA9IGFuZ3VsYXIuY29weSAocG9zdF9kYXRhKVxyXG4gICAgICAgICAgICAgICAgLy9LYXRhbHlvQXBpVG9rZW5BdXRoLnJlY3Vyc2l2ZURlbGV0ZUdhcmJhZ2UobmV3X3Bvc3RfZGF0YSwgbnVsbClcclxuICAgICAgICAgICAgICAgIHJldHVybiBmZXRjaCh1cmwse1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHRoaXMuaGVhZGVycyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVkZW50aWFsczogJ2luY2x1ZGUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KG5ld19wb3N0X2RhdGEgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgdGhlIHJlc3BvbnNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czo0OTksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnOmVycm9yLm1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZXJyb3Iuc3RhY2tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgIGFzeW5jIGZha2VfcG9zdChlcnJfY29kZSkgLy9TSU1VTEFURVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdXJsID0gXCJodHRwczovL2h0dHBzdGF0LnVzL1wiKyBlcnJfY29kZSAgIFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZldGNoKHVybCx7ICBoZWFkZXJzOiB0aGlzLmhlYWRlcnMsICAgIG1ldGhvZDogJ0dFVCcsICAgfSlcclxuICAgICAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHsgICAgICAgIHJldHVybiByZXNwb25zZTsgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czo0OTksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnOmVycm9yLm1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZXJyb3Iuc3RhY2tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgYXN5bmMgcHV0KHVybCxwdXRfZGF0YSkgXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHVybD10aGlzLmFwaVVybCArIHVybCAgICAgXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmV0Y2godXJsLHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUFVUJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShwdXRfZGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIHRoZSByZXNwb25zZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6NDk5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZzplcnJvci5tZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGVycm9yLnN0YWNrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgYXN5bmMgc2VuZCh1cmwsbWV0aG9kLHBvc3RfZGF0YSlcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHVybD10aGlzLmFwaVVybCArIHVybCBcclxuICAgICAgICAgICAgICByZXR1cm4gZmV0Y2godXJsLHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHRoaXMuaGVhZGVycyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkocG9zdF9kYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgdGhlIHJlc3BvbnNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6NDk5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZzplcnJvci5tZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGVycm9yLnN0YWNrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9O1xyXG4gICAgIFxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIGZuIGZvciBpbml0aWFsaXppbmcgS2F0YWx5b0FwaSBDbGFzcyByZXR1cm5zIEthdGFseW9BcGkgb2JqZWN0IGJhc2VkIG9uIGF1dGhfdHlwZVxyXG4gICAgICAgICAqICBAc2luY2UgMC4xXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdmFyIEthdGFseW9BcGkgPSAoZnVuY3Rpb24oKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxldCBhcGkgPSBuZXcgS2F0YWx5b0FwaU1haW4oKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgcmV0dXJuIGFwaTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBleHBvcnQgZGVmYXVsdCBLYXRhbHlvQXBpOyIsIi8qKlxyXG4gKiBLYXRhbHlvIHN0YXRlIG1hbmFnZXIgKGt0LXN0YXRlLW1hbmFnZXIuanMpIGltcGxlbWVudHMgb2JzZXJ2ZXIgcGF0dGVybiBpbiBpbW11dGFibGUgbWFubmVyIHRvIG1hbmFnZSBzdGF0ZSBpbiBLYXRhbHlvIHBsYXRmb3JtXHJcbiAqIEBsaWNlbnNlIE1JVCBcclxuICogQGJ1aWxkOiAyMDE5LTEyLTE0XHJcbiAqIEB2ZXJzaW9uIDAuMVxyXG4gKiBodHRwczovL2dpdGxhYi5jb20va2F0YWx5by9rdC1zdGF0ZS1tYW5hZ2VyXHJcbiAqIENvcHlyaWdodCAoYykgMjAxOSBLYXRhbHlvXHJcbioqL1xyXG5cclxuICd1c2Ugc3RyaWN0JztcclxuIFxyXG4gICAgICAgIFxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIENsYXNzIFN1YmplY3RDb2xsZWN0aW9uIGlzIGEgY29sbGVjdGlvbiBjbGFzcyBmb3IgU3ViamVjdHMgYW5kIGNvbnRhaW5zIGFsbCBzdWJqZWN0cyBpbiB0aGUgYXBwbGljYXRpb25cclxuICAgICAgICAgKiBAc2luY2UgMC4xXHJcbiAgICAgICAgICogQG1ldGhvZCBhZGRTdWJqZWN0IGlzIHVzZWQgdG8gYWRkIG5ldyBzdWJqZWN0IHRvIGNvbGxlY3Rpb25cclxuICAgICAgICAgKiBAbWV0aG9kIGNyZWF0ZVN1YmplY3QgaXMgdXNlZCB0byBjcmVhdGUgbmV3IGluc3RhbmNlIG9mIHN1YmplY3QgY2xhc3MgIFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIFxyXG4gICAgICAgIGNsYXNzIFN1YmplY3RDb2xsZWN0aW9uIHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdWJqZWN0cyA9IHt9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nU3Vic2NyaXB0aW9ucyA9IHt9OyAvL2R1ZSB0byBhc3luY2hyb25vdXMgbmF0dXJlIG9mIGphdmFzY3JpcHQgb2JzZXJ2ZXJzIG1heSBzZW5kIHN1YnNjcmlwdGlvbiByZXF1ZXN0cyBiZWZvcmUgc3ViamVjdCBpcyBjcmVhdGVkXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBhZGRTdWJqZWN0KHN1YmplY3QpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBsZXQgbXNnID0nJyxzdGF0dXM9J29rJztcclxuICAgICAgICAgICAgICBpZiAoc3ViamVjdC5uYW1lIGluIHRoaXMuc3ViamVjdHMpXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3ViamVjdHNbc3ViamVjdC5uYW1lXSE9PXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBtc2cgPSAnU3ViamVjdCAnK3N1YmplY3QubmFtZSsnIGFsbHJlYWR5IGV4aXN0cyEnO1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9ICdub2snO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7J21zZyc6bXNnLCdzdGF0dXMnOnN0YXR1cywnc3ViamVjdCc6dGhpcy5zdWJqZWN0cyBbc3ViamVjdC5uYW1lXX07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc3ViamVjdHMgW3N1YmplY3QubmFtZV0gPSBzdWJqZWN0O1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnBlbmRpbmdTdWJzY3JpcHRpb25zW3N1YmplY3QubmFtZV0hPXVuZGVmaW5lZCkgdGhpcy5wcm9jZXNzUGVuZGluZ1N1YnNjcmlwdGlvbnMoc3ViamVjdC5uYW1lKTtcclxuICAgICAgICAgICAgICByZXR1cm4geydtc2cnOm1zZywnc3RhdHVzJzpzdGF0dXMsJ3N1YmplY3QnOnRoaXMuc3ViamVjdHMgW3N1YmplY3QubmFtZV19O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBwcm9jZXNzUGVuZGluZ1N1YnNjcmlwdGlvbnMoc3ViamVjdE5hbWUpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGxldCBzdWI7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpPTA7aTx0aGlzLnBlbmRpbmdTdWJzY3JpcHRpb25zW3N1YmplY3ROYW1lXS5sZW5ndGg7aSsrKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHN1YiA9IHRoaXMucGVuZGluZ1N1YnNjcmlwdGlvbnNbc3ViamVjdE5hbWVdW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vc3Vic2NyaWJlKG5hbWUsYWN0aW9uLG5vdGlmeUZuLG92ZXJyaWRlKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3ViamVjdHNbc3ViamVjdE5hbWVdLnN1YnNjcmliZShzdWIub2JzZXJ2ZXIsc3ViLmFjdGlvbixzdWIuZGF0YSxzdWIub3ZlcnJpZGUpOyAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhZGRQZW5kaW5nT2JzZXJ2ZXJTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgbGV0IG1zZyA9Jycsc3RhdHVzPSdvayc7XHJcbiAgICAgICAgICAgICAgaWYgKHN1YnNjcmlwdGlvbi5zdWJqZWN0IGluIHRoaXMucGVuZGluZ1N1YnNjcmlwdGlvbnMpXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGVuZGluZ1N1YnNjcmlwdGlvbnNbc3Vic2NyaXB0aW9uLnN1YmplY3RdPT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wZW5kaW5nU3Vic2NyaXB0aW9uc1tzdWJzY3JpcHRpb24uc3ViamVjdF1bc3Vic2NyaXB0aW9uLm9ic2VydmVyXSE9IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICdQZW5kaW5nIHN1YnNjcmlwdGlvbiBmb3IgJytzdWJzY3JpcHRpb24uc3ViamVjdCsnIGFuZCBvYnNlcnZlciAnK3N1YnNjcmlwdGlvbi5vYnNlcnZlcisnIGFsbHJlYWR5IGV4aXN0cyEnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSAnbm9rJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsnbXNnJzptc2csJ3N0YXR1cyc6c3RhdHVzLCdzdWJqZWN0Jzp0aGlzLnBlbmRpbmdTdWJzY3JpcHRpb25zW3N1YnNjcmlwdGlvbi5zdWJqZWN0XX07XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdTdWJzY3JpcHRpb25zW3N1YnNjcmlwdGlvbi5zdWJqZWN0XSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nU3Vic2NyaXB0aW9uc1tzdWJzY3JpcHRpb24uc3ViamVjdF0gPSBbXTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdTdWJzY3JpcHRpb25zW3N1YnNjcmlwdGlvbi5zdWJqZWN0XS5wdXNoKHN1YnNjcmlwdGlvbik7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgcmV0dXJuIHsnbXNnJzptc2csJ3N0YXR1cyc6c3RhdHVzLCdzdWJqZWN0Jzp0aGlzLnBlbmRpbmdTdWJzY3JpcHRpb25zIFtzdWJzY3JpcHRpb24uc3ViamVjdF19O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgKiBmbiBmb3IgY3JlYXRpbmcgU3ViamVjdHMgYW5kIGFkZGluZyB0aGVtIHRvIGNvbGxlY3Rpb25cclxuICAgICAgICAgICAgKiAgQHNpbmNlIDAuMVxyXG4gICAgICAgICAgICAqIEBwYXJhbSBuYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBzdWJqZWN0IFxyXG4gICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBjcmVhdGVTdWJqZWN0IChuYW1lLHN0YXRlX29iamVjdClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbGV0IG5ld1N1YmplY3QgPSBuZXcgU3ViamVjdChuYW1lLHN0YXRlX29iamVjdCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgYXNSZXQgPSB0aGlzLmFkZFN1YmplY3QobmV3U3ViamVjdCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXNSZXQ7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgKiBmbiBmb3IgZ2V0dGluZyBTdWJqZWN0cyBhbmQgYWRkaW5nIHRoZW0gdG8gY29sbGVjdGlvblxyXG4gICAgICAgICAgICAqICBAc2luY2UgMC4xXHJcbiAgICAgICAgICAgICogQHBhcmFtIG5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIHN1YmplY3QgXHJcbiAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGdldFN1YmplY3QgKG5hbWUpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGxldCBzdWJqZWN0ID0gdGhpcy5zdWJqZWN0c1tuYW1lXTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBzdWJqZWN0O1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICogZm4gZm9yIGFkZGluZyBhY3Rpb25zIHRvIFN1YmplY3RzIGFuZCBhZGRpbmcgdGhlbSB0byBjb2xsZWN0aW9uXHJcbiAgICAgICAgICAgICogIEBzaW5jZSAwLjFcclxuICAgICAgICAgICAgKiBAcGFyYW0gc3ViamVjdE5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIHN1YmplY3QgXHJcbiAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGFkZEFjdGlvbiAoc3ViamVjdE5hbWUsYWN0aW9uTmFtZSxhY3Rpb25GbilcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3ViamVjdHNbc3ViamVjdE5hbWVdPT09dW5kZWZpbmVkKSByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgIGxldCBuZXdBY3Rpb24gPSBuZXcgQWN0aW9uKGFjdGlvbk5hbWUsYWN0aW9uRm4pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdWJqZWN0c1tzdWJqZWN0TmFtZV0uYWN0aW9uc1thY3Rpb25OYW1lXT1uZXdBY3Rpb24uZ2V0QWN0aW9uO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ld0FjdGlvbjtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgKiBmbiBmb3IgZ2V0dGluZyBjdXJyZW50IHN0YXRlIG9mIFN1YmplY3RzXHJcbiAgICAgICAgICAgICogIEBzaW5jZSAwLjFcclxuICAgICAgICAgICAgKiBAcGFyYW0gbmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgc3ViamVjdCBcclxuICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgZ2V0U3RhdGUgKG5hbWUpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGxldCBtc2c9XCJcIixzdGF0dXM9XCJcIjtcclxuICAgICAgICAgICAgICAgIGxldCBzdWJqZWN0ID0gdGhpcy5zdWJqZWN0c1tuYW1lXTtcclxuICAgICAgICAgICAgICAgIGlmIChzdWJqZWN0PT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbXNnPVwiU3ViamVjdCAnXCIrbmFtZStcIicgaXMgdW5kZWZpbmVkIVwiO1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cz1cIm5va1wiO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7J21zZyc6bXNnLCdzdGF0dXMnOnN0YXR1c307XHJcbiAgICAgICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBzdGF0ZSA9IHN1YmplY3QuZ2V0U3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgbXNnPVwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzPVwib2tcIjtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geydtc2cnOm1zZywnc3RhdHVzJzpzdGF0dXMsJ3N0YXRlJzpzdGF0ZX07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICBcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQ2xhc3MgU3ViamVjdCBpcyB1c2VkIHRvIHN0b3JlIGRpZmZlcmVudCBzdWJqZWN0cyBpZSBzdG9yZXNcclxuICAgICAgICAgKiBAc2luY2UgMC4xXHJcbiAgICAgICAgICogQHBhcmFtIG5hbWUgaXMgdW5pcXVlIG5hbWUgb2QgdGhlIHN1YmplY3RcclxuICAgICAgICAgKiBAdmFyIG9ic2VydmVycyBpcyBhIGNvbGxlY3Rpb25zIG9mIG9ic2VydmVycyBzdWJzY3JpYmVkIHRvIHRoaXMgc3ViamVjdFxyXG4gICAgICAgICAqIEB2YXIgc3RhdGUgaXMgdXNlZCB0byBzdG9yZSB0aGUgc3RhdGVzIG9mIHRoZSBzdWJqZWN0XHJcbiAgICAgICAgICogQHZhciBhY3Rpb25zIGlzIGEgY29sbGVjdGlvbiBvZiBhY3Rpb25zIHRoYXQgY24gYmUgZXhlY3V0ZWQgb24gdGhpcyBzdWJqZWN0XHJcbiAgICAgICAgICogQHZhciBjdXJlbnRTdGF0ZSBpcyBpbmRleCBvZiB0aGUgY3VycmVudCBzdGF0ZVxyXG4gICAgICAgICAqIEBtZXRob2Qgc3Vic2NyaWJlIGlzIHVzZWQgYnkgb2JzZXJ2ZXJzIHRvIHN1YnNjcmliZSB0byB0aGlzIHN1YmplY3RcclxuICAgICAgICAgKiBAbWV0aG9kIGdldFN0YXRlIHJldHVybiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgc3ViamVjdFxyXG4gICAgICAgICAqIEBtZXRob2QgZXhlY3V0ZUFjdGlvbiBleGVjdXRlcyBhY3Rpb24gb24gdGhlIHN1YmplY3RcclxuICAgICAgICAgKiBAbWV0aG9kIHVuZG8gcmV2ZXJ0cyB0byBwcmV2aW91cyBzdGF0ZVxyXG4gICAgICAgICAqIEBtZXRob2QgcmVkb1xyXG4gICAgICAgICAqIEBtZXRob2Qgbm90aWZ5T2JzZXJ2ZXJzIGlzIHVzZWQgdG8gbm90aWZ5IGFsbCBvYnNlcnZlcnMgb24gc3RhdGUgY2hhbmdlc1xyXG4gICAgICAgICAqICovXHJcbiAgICAgICAgXHJcbiAgICAgICAgY2xhc3MgU3ViamVjdCB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBjb25zdHJ1Y3RvcihuYW1lLHN0YXRlLGFjdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9ic2VydmVycyA9IHt9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMgPSBbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFN0YXRlSW5kZXggPSAtMTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEZ1bGxTdGF0ZSA9IHN0YXRlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGFjdGlvbnM9PT11bmRlZmluZWQpIHRoaXMuYWN0aW9ucz17fTtcclxuICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5hY3Rpb25zID0gYWN0aW9ucztcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBzdWJzY3JpYmUobmFtZSxhY3Rpb24sbm90aWZ5Rm4sb3ZlcnJpZGUpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBsZXQgbXNnID0nU3Vic2NyaXB0aW9uIHN1Y2Nlc3NmdWwnLHN0YXR1cz0nb2snO1xyXG4gICAgICAgICAgICAgIGxldCBvYnNlcnZlciA9IHt9O1xyXG4gICAgICAgICAgICAgIGlmIChvdmVycmlkZSA9PSB1bmRlZmluZWQpIG92ZXJyaWRlPWZhbHNlO1xyXG4gICAgICAgICAgICAgIGlmIChuYW1lIGluIHRoaXMub2JzZXJ2ZXJzKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9ic2VydmVyc1tuYW1lXSE9PXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0aGlzLm9ic2VydmVyc1tuYW1lXS5hY3Rpb25zW2FjdGlvbl0gIT09IHVuZGVmaW5lZCAmJiAhb3ZlcnJpZGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gJ09ic2VydmVyIHdpdGggbmFtZSAnK25hbWUrJyBpcyBhbHJlYWR5IHN1YnNjcmliZWQgZm9yIGFjdGlvbiAnK2FjdGlvbisnISc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9ICdub2snO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geydtc2cnOm1zZywnc3RhdHVzJzpzdGF0dXN9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSBpZiAoIHRoaXMub2JzZXJ2ZXJzW25hbWVdLmFjdGlvbnNbYWN0aW9uXSAhPT0gdW5kZWZpbmVkICYmIG92ZXJyaWRlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICdPYnNlcnZlciB3aXRoIG5hbWUgJytuYW1lKycgaXMgYWxyZWFkeSBzdWJzY3JpYmVkIGZvciBhY3Rpb24gJythY3Rpb24rJyEgT3ZlcnJpZGUgZXhlY3V0ZWQhJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gJ29rJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vYnNlcnZlcnNbbmFtZV0uYWN0aW9uc1thY3Rpb25dPSB7J25vdGlmeUZuJzpub3RpZnlGbn07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7J21zZyc6bXNnLCdzdGF0dXMnOnN0YXR1c307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vYnNlcnZlcnNbbmFtZV0uYWN0aW9uc1thY3Rpb25dPSB7J25vdGlmeUZuJzpub3RpZnlGbn07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG9ic2VydmVyLm5hbWUgPSBuYW1lO1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuYWN0aW9ucyA9IHt9O1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuYWN0aW9uc1thY3Rpb25dID0geydub3RpZnlGbic6bm90aWZ5Rm59O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vYnNlcnZlcnNbbmFtZV0gPSBvYnNlcnZlcjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHsnbXNnJzptc2csJ3N0YXR1cyc6c3RhdHVzfTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgc3Vic2NyaWJlKG5hbWUsYWN0aW9uLG5vdGlmeUZuLG92ZXJyaWRlLG5vdGlmeUZuUGFyYW1zKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgbGV0IG1zZyA9J1N1YnNjcmlwdGlvbiBzdWNjZXNzZnVsJyxzdGF0dXM9J29rJztcclxuICAgICAgICAgICAgICBsZXQgb2JzZXJ2ZXIgPSB7fTtcclxuICAgICAgICAgICAgICBpZiAob3ZlcnJpZGUgPT0gdW5kZWZpbmVkKSBvdmVycmlkZT1mYWxzZTtcclxuICAgICAgICAgICAgICBpZiAobmFtZSBpbiB0aGlzLm9ic2VydmVycylcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vYnNlcnZlcnNbbmFtZV0hPT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdGhpcy5vYnNlcnZlcnNbbmFtZV0uYWN0aW9uc1thY3Rpb25dICE9PSB1bmRlZmluZWQgJiYgIW92ZXJyaWRlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICdPYnNlcnZlciB3aXRoIG5hbWUgJytuYW1lKycgaXMgYWxyZWFkeSBzdWJzY3JpYmVkIGZvciBhY3Rpb24gJythY3Rpb24rJyEnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSAnbm9rJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsnbXNnJzptc2csJ3N0YXR1cyc6c3RhdHVzfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYgKCB0aGlzLm9ic2VydmVyc1tuYW1lXS5hY3Rpb25zW2FjdGlvbl0gIT09IHVuZGVmaW5lZCAmJiBvdmVycmlkZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAnT2JzZXJ2ZXIgd2l0aCBuYW1lICcrbmFtZSsnIGlzIGFscmVhZHkgc3Vic2NyaWJlZCBmb3IgYWN0aW9uICcrYWN0aW9uKychIE92ZXJyaWRlIGV4ZWN1dGVkISc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9ICdvayc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXJzW25hbWVdLmFjdGlvbnNbYWN0aW9uXT0geydub3RpZnlGbic6bm90aWZ5Rm4sJ25vdGlmeUZuUGFyYW1zJzpub3RpZnlGblBhcmFtc307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7J21zZyc6bXNnLCdzdGF0dXMnOnN0YXR1c307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vYnNlcnZlcnNbbmFtZV0uYWN0aW9uc1thY3Rpb25dPSB7J25vdGlmeUZuJzpub3RpZnlGbiwnbm90aWZ5Rm5QYXJhbXMnOm5vdGlmeUZuUGFyYW1zfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmFtZSA9IG5hbWU7XHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5hY3Rpb25zID0ge307XHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5hY3Rpb25zW2FjdGlvbl0gPSB7J25vdGlmeUZuJzpub3RpZnlGbiwnbm90aWZ5Rm5QYXJhbXMnOm5vdGlmeUZuUGFyYW1zfTtcclxuICAgICAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXJzW25hbWVdID0gb2JzZXJ2ZXI7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHJldHVybiB7J21zZyc6bXNnLCdzdGF0dXMnOnN0YXR1c307XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHNldCBzZXRTdGF0ZUNoYW5nZXMobmV3U3RhdGUpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFN0YXRlSW5kZXgrKztcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRTdGF0ZUluZGV4PDApIHRoaXMuY3VycmVudFN0YXRlSW5kZXg9MDtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLnNwbGljZSh0aGlzLmN1cnJlbnRTdGF0ZUluZGV4LDAsbmV3U3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50RnVsbFN0YXRlPW5ld1N0YXRlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBnZXQgZ2V0U3RhdGVDaGFuZ2VzKClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVDaGFuZ2VzW3RoaXMuY3VycmVudFN0YXRlSW5kZXhdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNldCBzZXRTdGF0ZShuZXdTdGF0ZSlcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRGdWxsU3RhdGU9bmV3U3RhdGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZ2V0IGdldFN0YXRlKClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudEZ1bGxTdGF0ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBnZXQgZ2V0Q3VycmVudFN0YXRlSW5kZXgoKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50U3RhdGVJbmRleDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzZXQgc2V0Q3VycmVudFN0YXRlSW5kZXgoaW5kZXgpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFN0YXRlSW5kZXg9aW5kZXg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYWRkQWN0aW9uKGFjdGlvbilcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hY3Rpb25zW2FjdGlvbi5uYW1lXSA9IGFjdGlvbjtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGV4ZWN1dGVBY3Rpb24oYWN0aW9uTmFtZSxkYXRhKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYWN0aW9uTmFtZSBpbiB0aGlzLmFjdGlvbnMpIHRoaXMuYWN0aW9uc1thY3Rpb25OYW1lXS5leGVjdXRlQWN0aW9uKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdW5kbygpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRTdGF0ZUluZGV4PjApXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RhdGVJbmRleC0tO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5T2JzZXJ2ZXJzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFN0YXRlSW5kZXg7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVkbygpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRTdGF0ZUluZGV4IDwgdGhpcy5zdGF0ZUNoYW5nZXMubGVuZ3RoLTEpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RhdGVJbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5T2JzZXJ2ZXJzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFN0YXRlSW5kZXg7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbm90aWZ5T2JzZXJ2ZXJzKClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IG9ic2VydmVyIGluIHRoaXMub2JzZXJ2ZXJzKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9ic2VydmVyc1tvYnNlcnZlcl0hPT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGFjdGlvbiBpbiB0aGlzLm9ic2VydmVyc1tvYnNlcnZlcl0uYWN0aW9ucylcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGlvbi5ub3RpZnlGbiE9PXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24ubm90aWZ5Rm4oe3NlbmRlcjp0aGlzLm5hbWUsc3RhdGU6dGhpcy5zdGF0ZUNoYW5nZXNbdGhpcy5jdXJyZW50U3RhdGVJbmRleF19KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIG5vdGlmeU9ic2VydmVycyhhY3Rpb24pXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBvYnNlcnZlciBpbiB0aGlzLm9ic2VydmVycykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9ic2VydmVyc1tvYnNlcnZlcl0hPT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0ZUNoYW5nZXNbdGhpcy5jdXJyZW50U3RhdGVJbmRleF0gPT09IHVuZGVmaW5lZCkgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0aGlzLnN0YXRlQ2hhbmdlc1t0aGlzLmN1cnJlbnRTdGF0ZUluZGV4XSBpcyB1bmRlZmluZWRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3Rpb24gaW4gdGhpcy5vYnNlcnZlcnNbb2JzZXJ2ZXJdLmFjdGlvbnMpICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9ic2VydmVyc1tvYnNlcnZlcl0uYWN0aW9uc1thY3Rpb25dLm5vdGlmeUZuIT09dW5kZWZpbmVkKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9ic2VydmVyc1tvYnNlcnZlcl0uYWN0aW9uc1thY3Rpb25dLm5vdGlmeUZuKCB7c2VuZGVyOnRoaXMubmFtZSxzdGF0ZTp0aGlzLnN0YXRlQ2hhbmdlc1t0aGlzLmN1cnJlbnRTdGF0ZUluZGV4XSwgYWN0aW9uOmFjdGlvbixpbnB1dFBhcmFtczp0aGlzLm9ic2VydmVyc1tvYnNlcnZlcl0uYWN0aW9uc1thY3Rpb25dLm5vdGlmeUZuUGFyYW1zfSApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQ2xhc3MgQWN0aW9uIGlzIHVzZWQgdG8gZGVmaW5lIGFjdGlvbnMgdG8gYmUgZXhlY3V0ZWQgb24gU3ViamVjdHNcclxuICAgICAgICAgKiBAc2luY2UgMC4xIFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIFxyXG4gICAgICAgIGNsYXNzIEFjdGlvbiB7XHJcbiAgICAgICAgICAgIGNvbnN0cnVjdG9yKG5hbWUsZm5BY3Rpb24sZm5BY3Rpb25QYXJhbXMpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmFtZSA9IG5hbWVcclxuICAgICAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUFjdGlvbiA9IGZuQWN0aW9uXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGlvblBhcmFtcyA9IGZuQWN0aW9uUGFyYW1zXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZ2V0IGdldEFjdGlvbigpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7J2FjdGlvbic6dGhpcy5uYW1lLCdleGVjdXRlQWN0aW9uJzp0aGlzLmV4ZWN1dGVBY3Rpb24sJ2FjdGlvblBhcmFtcyc6dGhpcy5hY3Rpb25QYXJhbXMgfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICAgLyoqXHJcbiAgICAgICAgICogZm4gZm9yIGluaXRpYWxpemluZyBTdWJqZWN0Q29sbGVjdGlvbiByZXR1cm4gU3ViamVjdENvbGxlY3Rpb24gb2JqZWN0XHJcbiAgICAgICAgICogIEBzaW5jZSAwLjFcclxuICAgICAgICAgKi9cclxuICAgICAgICB2YXIgS2F0YWx5b1N0YXRlTWFuYWdlciA9IChmdW5jdGlvbigpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdmFyIHN1YmplY3RDb2xsZWN0aW9uID0gbmV3IFN1YmplY3RDb2xsZWN0aW9uKCk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHJldHVybiBzdWJqZWN0Q29sbGVjdGlvbjtcclxuICAgICAgICB9KTtcclxuICAgICAgICBleHBvcnQgZGVmYXVsdCBLYXRhbHlvU3RhdGVNYW5hZ2VyOyIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogS2F0YWx5b1N0YXRlTWFuYWdlciAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbid1c2Ugc3RyaWN0JztcclxuXHJcbmltcG9ydCBrc20gZnJvbSAnLi4vMDAwM19saWJzL2t0LXN0YXRlLW1hbmFnZXIuanMnO1xyXG5pbXBvcnQgYXBpIGZyb20gJy4uLzAwMDNfbGlicy9rdC1hcGkuanMnOyBcclxuXHJcbmNsYXNzIFJlc3RBcGlTZXJ2aWNlIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigkcSwkY29va2llcyAsJGxvY2F0aW9uLCAkcm9vdFNjb3BlKXtcclxuICAgICAgICAgICB0aGlzLmFwaSA9IGFwaSgpO1xyXG4gICAgICAgICAgIHRoaXMuY2FjaGUgPSB7fTtcclxuICAgICAgICAgICB0aGlzLiRjb29raWVzID0gJGNvb2tpZXNcclxuICAgICAgICAgICB0aGlzLiRxID0gJHE7XHJcblx0XHQgICB0aGlzLiRsb2NhdGlvbiA9ICRsb2NhdGlvbjtcclxuXHRcdCAgIHRoaXMuJHJvb3RTY29wZT0kcm9vdFNjb3BlO1xyXG4gICAgfVxyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAvLyAgc3RhdGljICRpbmplY3QgPSBbJyRxJywnJHJvb3RTY29wZScsJ1Jlc3RBcGlTZXJ2aWNlJ107XHJcbiAgICBcclxuICAgIGFkZF9hcGlfY2xhc3NlcyhhdXRoX3R5cGUsY3NyZl90b2tlbixhdXRoX2RhdGEpIHtcclxuICAgICAgICAgaWYgKGF1dGhfdHlwZT09PSd0b2tlbicpICB0aGlzLmFwaS5hZGRfYXV0aF90b2tlbihjc3JmX3Rva2VuLGF1dGhfZGF0YSk7XHJcbiAgICAgICAgIGVsc2UgIHRoaXMuYXBpLmFkZF9hdXRoX3Nzbyhjc3JmX3Rva2VuKTsgIFxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIGFzeW5jIHBvc3QodXJsLHBvc3RfZGF0YSkge1xyXG4gICAgXHJcblx0XHRsZXQgZW52X2Zyb21fdXJsID0gdGhpcy4kbG9jYXRpb24uc2VhcmNoKCkuZW52IFxyXG5cdFx0XHJcbiAgICAgICAgdXJsKz0gdXJsLmluZGV4T2YoJz8nKSA+PSAwID8gICcmJyA6ICc/J1xyXG4gICAgICAgIC8vdXJsKz0gXCJlbnY9XCIgKyBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwiZW52aXJvbm1lbnRcIilcclxuICAgICAgICB1cmwrPSBcImVudj1cIiArIGVudl9mcm9tX3VybCBcclxuXHRcdFxyXG4gICAgICAgIGxldCB0bXA9dGhpcy4kY29va2llcy5nZXRPYmplY3QoJ2Vudmlyb25tZW50Jyk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IGNzcmZfdG9rZW49dGhpcy4kY29va2llcy5nZXQoJ2NzcmZ0b2tlbicpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICh0aGlzLmFwaS5LYXRhbHlvQXBpQ2xhc3MuZ2V0Q3NyZigpPT09dW5kZWZpbmVkKSB0aGlzLmFwaS5LYXRhbHlvQXBpQ2xhc3Muc2V0Q3NyZihjc3JmX3Rva2VuKVxyXG4gICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IHRoaXMuYXBpLkthdGFseW9BcGlDbGFzcy5wb3N0KHVybCAsIHBvc3RfZGF0YSlcclxuICAgICAgICBcclxuICAgICAgICAvL2xldCByZXNwb25zZSA9IGF3YWl0IHRoaXMuYXBpLkthdGFseW9BcGlDbGFzcy5mYWtlX3Bvc3QoXCI0MTNcIikgLy8gU2ltdWxhdGUgNDEzIGVycm9yIG1lc3NhZ2VcclxuICAgICAgICBsZXQgcmVzcDIgPSBudWxsXHJcbiAgICAgICAgbGV0IGNvbnRlbnRUeXBlID0gcmVzcG9uc2U/LmhlYWRlcnM/LmdldCgnQ29udGVudC1UeXBlJylcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAoY29udGVudFR5cGU9PT0ndGV4dC9odG1sJyB8fCBjb250ZW50VHlwZT09PSd0ZXh0L3BsYWluJykgICBcclxuICAgICAgICAgICAgICAgIHJlc3AyID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpXHJcbiAgICAgICAgICAgIGVsc2UgIGlmIChjb250ZW50VHlwZT09PSdhcHBsaWNhdGlvbi9qc29uJykgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcDIgPSBhd2FpdCByZXNwb25zZS5qc29uKClcclxuICAgICAgICAgICAgZWxzZSByZXR1cm4gcmVzcG9uc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIH0gY2F0Y2ggKGVycikgeyAvKmlnbm9yZSBlcnJvcnMqL31cclxuICAgXHJcbiAgICAgICAgcmV0dXJuIHsgICBkYXRhOiByZXNwMixcclxuICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzXHJcbiAgICAgICAgICAgICAgICAgfVxyXG4gIFxyXG4gICAgfVxyXG4gIFxyXG4gICAgYXN5bmMgcHV0KHVybCxwdXRfZGF0YSkge1xyXG4gICAgICAgICByZXR1cm4gdGhpcy5hcGkuS2F0YWx5b0FwaUNsYXNzLnB1dCh1cmwscHV0X2RhdGEpLnRoZW4ocmVzcG9uc2U9PntcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICAgfSlcclxuICAgIH1cclxuICBcclxuICAgIGFzeW5jIGdldCAodXJsLCB1c2VDYWNoZT1mYWxzZSwgYWNjZXB0T2xkZXJUaGFuPTEwMDAwKSB7IFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICB2YXIgZ290b1NlcnZlciA9IGZhbHNlOyBcclxuICAgICAgICBcclxuXHRcdCBsZXQgZW52XyA9IHRoaXMuJGxvY2F0aW9uLnNlYXJjaCgpPy5lbnYgID8/ICB0aGlzLiRyb290U2NvcGUuZ2xvYmFscz8uY3VycmVudEVudiAvL1VSTCBlbnYgb3ZlcnJpZGVzIGdsb2JhbCBlbnYgXHJcblx0XHRcdFxyXG4gICAgICAgICBsZXQgdG1wPXRoaXMuJGNvb2tpZXMuZ2V0T2JqZWN0KCdlbnZpcm9ubWVudCcpO1xyXG4gICAgICAgICB1cmwrPSB1cmwuaW5kZXhPZignPycpID49IDAgPyAgJyYnIDogJz8nXHJcbiAgICAgICAgIC8vIHVybCs9IFwiZW52PVwiICsgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcImVudmlyb25tZW50XCIpXHJcblx0XHQgdXJsKz0gXCJlbnY9XCIgKyBlbnZfXHJcblxyXG4gICAgICAgICBsZXQgY3NyZl90b2tlbj10aGlzLiRjb29raWVzLmdldCgnY3NyZnRva2VuJyk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgIGlmICh0aGlzLmFwaS5LYXRhbHlvQXBpQ2xhc3MuZ2V0Q3NyZigpPT09dW5kZWZpbmVkKSB0aGlzLmFwaS5LYXRhbHlvQXBpQ2xhc3Muc2V0Q3NyZihjc3JmX3Rva2VuKVxyXG5cclxuICAgICAgICAvL2lmICh0aGlzPy5jYWNoZVt1cmxdPy5sYXN0RG93bmxvYWRUaW1lKSB7IFxyXG4gICAgICAgIC8vICAgIGlmIChEYXRlLm5vdygpIC0gdGhpcy5jYWNoZVt1cmxdLmxhc3REb3dubG9hZFRpbWUgPiBhY2NlcHRPbGRlclRoYW4pICB1c2VDYWNoZSA9IGZhbHNlOyAgICAgICAgIFxyXG4gICAgICAgLy8gfSBcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAvL2RlYnVnZ2VyIC8vYXN5bmMgZ2V0ICAgICAgXHJcbiAgICAgICAgIGlmICh1cmw9PXVuZGVmaW5lZCB8fCB1cmw9PW51bGwpICB7IFxyXG4gICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdVUkwgaXMgbm90IGRlZmluZWQnLHN0YXR1czo0MDB9KTsgICBcclxuICAgICAgICAgfSAgZWxzZSAgXHJcbiAgICAgICAgIHsgXHJcbiAgICAgICAgICAgIGlmICh1c2VDYWNoZSkgXHJcbiAgICAgICAgICAgIHsgXHJcbiBcclxuICAgICAgICAgICAgICAgaWYgKHRoaXMuY2FjaGVbdXJsXSAhPT11bmRlZmluZWQpIFxyXG4gICAgICAgICAgICAgICB7IFxyXG4gICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jYWNoZVt1cmxdLmRvd25sb2FkZWQgKXsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6ICBhbmd1bGFyLmNvcHkodGhpcy5jYWNoZVt1cmxdLmRhdGEpLHN0YXR1czoyMDB9KTsgXHJcbiAgICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuY2FjaGVbdXJsXS5kb3dubG9hZEluUHJvZ3Jlc3MpICB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgLy93aGVuIGFscmVkYXkgZG93bmxvYWQgaW4gcHJvZ3Jlc3MgcmV0dXJuIHByb21pc2Ugb2YgdGhlIGZpcnN0IGNvbm5lY3Rpb24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNhY2hlW3VybF0ucHJvbWlzZXNbICB0aGlzLmNhY2hlW3VybF0ucHJvbWlzZXMubGVuZ3RoLTEgXSAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICBlbHNlIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWNoZVt1cmxdID0ge2RhdGE6W10sZG93bmxvYWRlZDpmYWxzZSxkb3dubG9hZEluUHJvZ3Jlc3M6dHJ1ZX07IFxyXG4gICAgICAgICAgICAgICAgICAgIGdvdG9TZXJ2ZXI9dHJ1ZTsgIFxyXG4gICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgfWVsc2UgIFxyXG4gICAgICAgICAgICB7IFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZVt1cmxdID0ge2RhdGE6W10sZG93bmxvYWRlZDpmYWxzZSxkb3dubG9hZEluUHJvZ3Jlc3M6dHJ1ZX07IFxyXG4gICAgICAgICAgICAgICAgZ290b1NlcnZlcj10cnVlOyBcclxuICAgICAgICAgICAgfSBcclxuICAgICAgICAgfSAgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICBpZiAoZ290b1NlcnZlcikgXHJcbiAgICAgICAgICB7IFxyXG4gICAgICAgICAgICB2YXIgaW5zdGFuY2UgPSB0aGlzOyBcclxuICAgICAgICAgICAgaWYgKHRoaXMuY2FjaGVbdXJsXS5wcm9taXNlcz09dW5kZWZpbmVkKSAgICAgdGhpcy5jYWNoZVt1cmxdLnByb21pc2VzID0gW107IFxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLmNhY2hlW3VybF0ucHJvbWlzZXMucHVzaChkZWZlcnJlZC5wcm9taXNlKSBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLmFwaS5LYXRhbHlvQXBpQ2xhc3MuZ2V0KHVybCkudGhlbiggYXN5bmMgcmVzcG9uc2UgPT57IFxyXG4gICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IG51bGwgXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRlbnRUeXBlID0gcmVzcG9uc2U/LmhlYWRlcnM/LmdldCgnQ29udGVudC1UeXBlJykgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50VHlwZT09PSd0ZXh0L2h0bWwnIHx8IGNvbnRlbnRUeXBlPT09J3RleHQvcGxhaW4nKSAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlICBpZiAoY29udGVudFR5cGU9PT0nYXBwbGljYXRpb24vanNvbicpICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uub2spIHsgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jYWNoZVt1cmxdLmRhdGEgPSBkYXRhOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmNhY2hlW3VybF0uZG93bmxvYWRlZCA9IHRydWU7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY2FjaGVbdXJsXS5kb3dubG9hZEluUHJvZ3Jlc3M9ZmFsc2U7ICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jYWNoZVt1cmxdLmxhc3REb3dubG9hZFRpbWUgPSBEYXRlLm5vdygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IGRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAvL25vdCBvayBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmNhY2hlW3VybF0uZG93bmxvYWRJblByb2dyZXNzPWZhbHNlOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7bXNnOmRhdGEsIHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgfSk7ICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9IFxyXG4gICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTsgXHJcblxyXG4gICAgfTtcclxuICAgICAgICBcclxuICBcclxuICAgIGFzeW5jIGdldF9maWxlICh1cmwpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgIHZhciBodHRwX21ldGhvZD1cIkdFVFwiOyBcclxuICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgICAgdmFyIGluc3RhbmNlID0gdGhpcztcclxuICAgICAgICB1cmwrPSB1cmwuaW5kZXhPZignPycpID49IDAgPyAgJyYnIDogJz8nXHJcbiAgICAgICAgdXJsKz0gXCJlbnY9XCIgKyBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwiZW52aXJvbm1lbnRcIilcclxuXHJcbiAgICAgICAgbGV0IGNzcmZfdG9rZW49dGhpcy4kY29va2llcy5nZXQoJ2NzcmZ0b2tlbicpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICh0aGlzLmFwaS5LYXRhbHlvQXBpQ2xhc3MuZ2V0Q3NyZigpPT09dW5kZWZpbmVkKSB0aGlzLmFwaS5LYXRhbHlvQXBpQ2xhc3Muc2V0Q3NyZihjc3JmX3Rva2VuKVxyXG5cclxuICAgICAgICB0aGlzLmFwaS5LYXRhbHlvQXBpQ2xhc3MuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmJsb2IoKS50aGVuKCBkYXRhID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IGRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKCBkYXRhID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICB9O1xyXG4gICAgICAgIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gICAgYXN5bmMgc2VuZCh1cmwsbWV0aG9kLHBvc3RfZGF0YSkge1xyXG4gICAgXHJcbiAgICAgICAgbGV0IGVudl8gPSB0aGlzLiRsb2NhdGlvbi5zZWFyY2goKT8uZW52ICA/PyAgdGhpcy4kcm9vdFNjb3BlLmdsb2JhbHM/LmN1cnJlbnRFbnYgLy9VUkwgZW52IG92ZXJyaWRlcyBnbG9iYWwgZW52IFxyXG4gICAgICAgICAgICBcclxuICAgICAgICBsZXQgdG1wPXRoaXMuJGNvb2tpZXMuZ2V0T2JqZWN0KCdlbnZpcm9ubWVudCcpO1xyXG4gICAgICAgIHVybCs9IHVybC5pbmRleE9mKCc/JykgPj0gMCA/ICAnJicgOiAnPydcclxuICAgICAgICAvLyB1cmwrPSBcImVudj1cIiArIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJlbnZpcm9ubWVudFwiKVxyXG4gICAgICAgIHVybCs9IFwiZW52PVwiICsgZW52X1xyXG5cclxuICAgICAgICBsZXQgY3NyZl90b2tlbj10aGlzLiRjb29raWVzLmdldCgnY3NyZnRva2VuJyk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHRoaXMuYXBpLkthdGFseW9BcGlDbGFzcy5nZXRDc3JmKCk9PT11bmRlZmluZWQpIHRoaXMuYXBpLkthdGFseW9BcGlDbGFzcy5zZXRDc3JmKGNzcmZfdG9rZW4pXHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5LYXRhbHlvQXBpQ2xhc3Muc2VuZCh1cmwsbWV0aG9kLHBvc3RfZGF0YSkudGhlbihyZXNwb25zZT0+e1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIFxyXG4gICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgIHNldF9oZWFkZXIoaGVhZGVyLGhlYWRlcl92YWx1ZSkge1xyXG4gICAgICAgICB0aGlzLmFwaS5LYXRhbHlvQXBpQ2xhc3Muc2V0X2hlYWRlcihoZWFkZXIsaGVhZGVyX3ZhbHVlKTsgXHJcbiAgICB9XHJcbiAgICAgIFxyXG4gICAgc2VuZCh1cmwsbWV0aG9kLHBvc3RfZGF0YSl7XHJcbiAgICAgICAgXHJcbiAgICAgICBcclxuICAgICAgICBsZXQgZW52XyA9IHRoaXMuJGxvY2F0aW9uLnNlYXJjaCgpPy5lbnYgID8/ICB0aGlzLiRyb290U2NvcGUuZ2xvYmFscz8uY3VycmVudEVudiAvL1VSTCBlbnYgb3ZlcnJpZGVzIGdsb2JhbCBlbnYgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIGxldCB0bXA9dGhpcy4kY29va2llcy5nZXRPYmplY3QoJ2Vudmlyb25tZW50Jyk7XHJcbiAgICAgICAgdXJsKz0gdXJsLmluZGV4T2YoJz8nKSA+PSAwID8gICcmJyA6ICc/J1xyXG4gICAgICAgIC8vIHVybCs9IFwiZW52PVwiICsgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcImVudmlyb25tZW50XCIpXHJcbiAgICAgICAgdXJsKz0gXCJlbnY9XCIgKyBlbnZfXHJcblxyXG4gICAgICAgIGxldCBjc3JmX3Rva2VuPXRoaXMuJGNvb2tpZXMuZ2V0KCdjc3JmdG9rZW4nKTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAodGhpcy5hcGkuS2F0YWx5b0FwaUNsYXNzLmdldENzcmYoKT09PXVuZGVmaW5lZCkgdGhpcy5hcGkuS2F0YWx5b0FwaUNsYXNzLnNldENzcmYoY3NyZl90b2tlbilcclxuXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5LYXRhbHlvQXBpQ2xhc3Muc2VuZCh1cmwsbWV0aG9kLHBvc3RfZGF0YSk7IFxyXG4gICAgfVxyXG4gICAgIFxyXG59XHJcbiBleHBvcnQgZGVmYXVsdCBSZXN0QXBpU2VydmljZTsiLCIndXNlIHN0cmljdCc7XHJcblxyXG5jbGFzcyBBdXRoZW50aWNhdGlvblNlcnZpY2V7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3RydWN0b3IoJGNvb2tpZXMsICRyb290U2NvcGUsICR0aW1lb3V0LCRxLCRzdGF0ZSxNZW51U2VydmljZSxDbGVhclNlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxSZXN0QXBpU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy4kY29va2llcz0kY29va2llcztcclxuICAgICAgICAgICAgICAgIHRoaXMuJHJvb3RTY29wZT0kcm9vdFNjb3BlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy4kdGltZW91dCA9ICR0aW1lb3V0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5DbGVhclNlcnZpY2U9Q2xlYXJTZXJ2aWNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy4kcT0kcTtcclxuICAgICAgICAgICAgICAgIHRoaXMuJHN0YXRlPSRzdGF0ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuTWVudVNlcnZpY2U9TWVudVNlcnZpY2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLk1lc3NhZ2luZ1NlcnZpY2UgPSBNZXNzYWdpbmdTZXJ2aWNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZSA9IFJlc3RBcGlTZXJ2aWNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5SZXNvdXJjZXNEYXRhU2VydmljZSA9IFJlc291cmNlc0RhdGFTZXJ2aWNlO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgc3RhdGljICRpbmplY3QgPSBbJyRjb29raWVzJywgJyRyb290U2NvcGUnLCAnJHRpbWVvdXQnLCckcScsJyRzdGF0ZScsJ01lbnVTZXJ2aWNlJywgJ0NsZWFyU2VydmljZScsJ01lc3NhZ2luZ1NlcnZpY2UnLCdSZXN0QXBpU2VydmljZScsJ1Jlc291cmNlc0RhdGFTZXJ2aWNlJ107XHJcblxyXG4gICAgICAgIC8vIFJlcXVlc3RpbmcgcGFzc3dvcmQgcmVzZXQgLCBzZXJ2ZXIgd2lsbCBzZW5kIGUtbWFpbCB0byByZXF1ZXN0ZXJcclxuICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgICAgUmVxdWVzdFBzd1Jlc2V0IChlbWFpbCwgY2FsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgdXJsID0gJy4uL2FwaS9jaGFuZ2UtcGFzc3dvcmQtcmVxdWVzdC8nO1xyXG4gICAgICAgICAgICAgICAgbGV0IGNzcmZfdG9rZW4gPSB0aGlzLiRjb29raWVzLmdldCgnY3NyZnRva2VuJyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zdF9kYXRhID0geyAnZW1haWwnOiBlbWFpbCB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmFkZF9hcGlfY2xhc3NlcyhcInRva2VuXCIsY3NyZl90b2tlbik7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwscG9zdF9kYXRhKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXNwb25zZS5qc29uKCkudGhlbihkYXRhPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWVzc2FnZT0nJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzPT09MjAwKSBzdWNjZXNzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIG1lc3NhZ2UgPSAnRS1tYWlsIG5vdCBpbiBkYXRhYmFzZSEnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwID0geydkYXRhJzpyZXNwb25zZS5kYXRhLCdtZXNzYWdlJzptZXNzYWdlLCdzdGF0dXMnOnJlc3BvbnNlLnN0YXR1cywnc3VjY2Vzcyc6c3VjY2Vzc31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXNwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAvLyB9KTtcclxuICAgICAgICAgICBcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgIC8vICAgICAgICAgICBnZXQgT3JnYW5pc2F0aW9uIHNjaGVtYXNcclxuICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICAgICAgICBnZXRPcmdTY2hlbWFzIChvcmdJZCwgY2FjaGluZz1mYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHVybD0nLi4vYXBpL2dldC1vcmctc2NoZW1hcy8nK29yZ0lkKycvJztcclxuICAgICAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgICAgICAgICAgICAgIHZhciBpbnN0YW5jZSA9IHRoaXM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwsIGNhY2hpbmcpLnRoZW4ocmVzcG9uc2UgPT57ICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkgeyAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsIHN0YXR1czogcmVzcG9uc2UuZGF0YS5zdGF0dXN9KSAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHtkYXRhOnJlc3BvbnNlLmRhdGEgLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuXHRcdFxyXG5cdFx0XHJcblx0XHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgIC8vICAgICAgICAgICBnZXQgZW52aXJvbmVtbmV0IGluZm8gc3RhdGlzdGljc1xyXG5cdCAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gICAgICAgIGdldEVudkluZm8gKG9yZ0lkLCBjYWNoaW5nPWZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdXJsPScuLi9hcGkvZ2V0LWVudi1pbmZvLycrb3JnSWQrJy8nO1xyXG4gICAgICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGluc3RhbmNlID0gdGhpcztcclxuICAgICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCwgY2FjaGluZykudGhlbihyZXNwb25zZSA9PnsgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7ICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSwgc3RhdHVzOiByZXNwb25zZS5kYXRhLnN0YXR1c30pICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe2RhdGE6cmVzcG9uc2UuZGF0YSAsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9O1xyXG5cdFx0XHJcblx0XHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgIC8vICAgICAgICAgICBnZXQgZW52aXJvbmVtbmV0IGluZm8gc3RhdGlzdGljc1xyXG5cdCAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gICAgICAgIGdldFVzZXJJbmZvIChvcmdJZCwgY2FjaGluZz1mYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHVybD0nLi4vYXBpL2dldC11c2VyLWluZm8vJytvcmdJZCsnLyc7XHJcblx0XHRcdFx0Ly9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGluc3RhbmNlID0gdGhpcztcclxuICAgICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCwgY2FjaGluZykudGhlbihyZXNwb25zZSA9PnsgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7ICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSwgc3RhdHVzOiByZXNwb25zZS5kYXRhLnN0YXR1c30pICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe2RhdGE6cmVzcG9uc2UubXNnLmRldGFpbCwgc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIFBhc3N3b3JkIHJlc2V0IGZ1bmN0aW9uXHJcbiAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgIFBzd1Jlc2V0ICh1c2VybmFtZSx1c2VySWQsIHBhc3N3b3JkMSwgcGFzc3dvcmQyLGRpZ2VzdCwgY2FsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IHVybCA9ICcuLi9hcGkvY2hhbmdlLXBhc3N3b3JkLyc7XHJcbiAgICAgICAgICAgICAgICBsZXQgY3NyZl90b2tlbiA9IHRoaXMuJGNvb2tpZXMuZ2V0KCdjc3JmdG9rZW4nKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3N0X2RhdGEgPSB7J3VzZXJuYW1lJzp1c2VybmFtZSwndXNlcl9pZCc6dXNlcklkLCdwYXNzd29yZDEnOnBhc3N3b3JkMSwncGFzc3dvcmQyJzpwYXNzd29yZDIsJ2RpZ2VzdCc6IGRpZ2VzdCAsJ3R5cGUnOjB9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5hZGRfYXBpX2NsYXNzZXMoXCJ0b2tlblwiLGNzcmZfdG9rZW4pO1xyXG4gICAgICAgICAgICAgICAgLy9QT1NULCBzZW5kIHBhc3N3b3JkMSwgcGFzc3dvcmQyLCBkaWdlc3QsIHVzZXJfaWRcclxuICAgICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwscG9zdF9kYXRhKS50aGVuKHJlc3BvbnNlID0+e1xyXG5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWVzc2FnZT0nJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cz09PTIwMClcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY2hhbmdlLXBhc3N3b3JkIHN1Y2Nlc3MgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gcmVzcG9uc2UuZGF0YS5tc2dcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBtZXNzYWdlID0gcmVzcG9uc2UuZGF0YS5tc2dcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwID0geydkYXRhJzpyZXNwb25zZS5kYXRhLCdtZXNzYWdlJzptZXNzYWdlLCdzdGF0dXMnOnJlc3BvbnNlLnN0YXR1cywnc3VjY2Vzcyc6c3VjY2Vzc31cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzcCk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICBcclxuIFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIC8vICAgICAgICAgICBDaGFuZ2UgcGFzc3dvcmQgd2l0aCBhdXRoXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICBDaGFuZ2VQYXNzd29yZFdpdGhBdXRoKGNQYXNzLG5QYXNzKXtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IHVybCA9ICcuLi9hcGkvY2hhbmdlLXBhc3N3b3JkLXdpdGgtYXV0aC8nO1xyXG4gICAgICAgICAgICAgICAgbGV0IGNzcmZfdG9rZW4gPSB0aGlzLiRjb29raWVzLmdldCgnY3NyZnRva2VuJyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zdF9kYXRhID0geyBwYXNzd29yZDE6IGNQYXNzLCBwYXNzd29yZDI6blBhc3N9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5hZGRfYXBpX2NsYXNzZXMoXCJ0b2tlblwiLGNzcmZfdG9rZW4sdGhpcy4kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIuYXV0aGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwscG9zdF9kYXRhKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cz09PTIwMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzcG9uc2UuanNvbigpLnRoZW4oZGF0YT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlPScnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdWNjZXNzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcCA9IHsnZGF0YSc6cmVzcG9uc2UuZGF0YSwnbWVzc2FnZSc6bWVzc2FnZSwnc3RhdHVzJzpyZXNwb25zZS5zdGF0dXMsJ3N1Y2Nlc3MnOnN1Y2Nlc3N9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZShyZXNwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlICAgeyAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN1Y2Nlc3MyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWVzc2FnZTIgPSAnQ2hhbmdlIHBhc3N3b3JkIGZhaWxlZCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcDIgPSB7J2RhdGEnOnt9LCdtZXNzYWdlJzptZXNzYWdlMiwnc3RhdHVzJzpyZXNwb25zZS5zdGF0dXMsJ3N1Y2Nlc3MnOnN1Y2Nlc3MyfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHJlc3AyKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZVxyXG4gICAgICAgICAgICAgICAgXHJcbiBcclxuICAgICAgICB9XHJcbiAgICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgIENoYW5nZSBwYXNzd29yZFxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICAgIENoYW5nZVBhc3N3b3JkKGNQYXNzLG5QYXNzLGNhbGxiYWNrKXtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IHVybCA9ICcuLi9hcGkvY2hhbmdlLXBhc3N3b3JkLyc7XHJcbiAgICAgICAgICAgICAgICBsZXQgY3NyZl90b2tlbiA9IHRoaXMuJGNvb2tpZXMuZ2V0KCdjc3JmdG9rZW4nKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3N0X2RhdGEgPSB7IHBhc3N3b3JkMTogY1Bhc3MsIHBhc3N3b3JkMjpuUGFzcyxkaWdlc3Q6JycsdXNlcl9pZDowLHR5cGU6MX07XHJcbiAgICAgICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmFkZF9hcGlfY2xhc3NlcyhcInRva2VuXCIsY3NyZl90b2tlbik7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwscG9zdF9kYXRhKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzPT09MjAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXNwb25zZS5qc29uKCkudGhlbihkYXRhPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2U9Jyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN1Y2Nlc3MgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwID0geydkYXRhJzpyZXNwb25zZS5kYXRhLCdtZXNzYWdlJzptZXNzYWdlLCdzdGF0dXMnOnJlc3BvbnNlLnN0YXR1cywnc3VjY2Vzcyc6c3VjY2Vzc31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXNwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdWNjZXNzMSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UxID0gJ0NoYW5nZSBwYXNzd29yZCBmYWlsZWQnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3AxID0geydkYXRhJzp7fSwnbWVzc2FnZSc6bWVzc2FnZTEsJ3N0YXR1cyc6cmVzcG9uc2Uuc3RhdHVzLCdzdWNjZXNzJzpzdWNjZXNzMX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3AxKTsgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBcclxuIFxyXG4gICAgICAgIH1cclxuICAgICAgICBDaGVja1Bhc3NDaGFuZ2VSZXF1ZXN0IChkaWdlc3QsIGNhbGxiYWNrKSB7XHJcbiBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHt9O1xyXG4gICAgICAgICAgICAvKiBVc2UgdGhpcyBmb3IgcmVhbCBhdXRoZW50aWNhdGlvblxyXG4gICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IHVybCA9ICcuLi9hcGkvY2hlY2stY2hhbmdlLXBhc3N3b3JkLyc7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zdF9kYXRhID0geyAnZGlnZXN0JzogZGlnZXN0IH07XHJcbiAgICAgICAgICAgICAgICBsZXQgY3NyZl90b2tlbiA9IHRoaXMuJGNvb2tpZXMuZ2V0KCdjc3JmdG9rZW4nKTsgXHJcbiAgICAgICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmFkZF9hcGlfY2xhc3NlcyhcInRva2VuXCIsY3NyZl90b2tlbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsLHBvc3RfZGF0YSkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlPScnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcCA9IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzPT0yMDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3Jlc3BvbnNlLmpzb24oKS50aGVuKGRhdGE9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzPT09MjAwKSBzdWNjZXNzID0gdHJ1ZTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIG1lc3NhZ2UgPSAnQ2hlY2sgZmFpbGVkJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcCA9IHsnZGF0YSc6cmVzcG9uc2UuZGF0YSwnbWVzc2FnZSc6bWVzc2FnZSwnc3RhdHVzJzpyZXNwb25zZS5zdGF0dXMsJ3N1Y2Nlc3MnOnN1Y2Nlc3N9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy99KTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzPT09MjAwKSBzdWNjZXNzID0gdHJ1ZTsgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBtZXNzYWdlID0gJ0NoZWNrIGZhaWxlZCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcCA9IHsnbWVzc2FnZSc6bWVzc2FnZSwnc3RhdHVzJzpyZXNwb25zZS5zdGF0dXMsJ3N1Y2Nlc3MnOnN1Y2Nlc3N9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICBcclxuICAgICAgICB9O1xyXG4gICAgICAgIExvZ2luICh1c2VybmFtZSwgcGFzc3dvcmQsIGNhbGxiYWNrKSB7XHJcbiBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHt9O1xyXG4gICAgICAgICAgICAvKiBVc2UgdGhpcyBmb3IgcmVhbCBhdXRoZW50aWNhdGlvblxyXG4gICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IHVybCA9ICcuLi9hcGkvbG9naW4vJztcclxuICAgICAgICAgICAgICAgIGxldCBjc3JmX3Rva2VuID0gdGhpcy4kY29va2llcy5nZXQoJ2NzcmZ0b2tlbicpOyBcclxuICAgICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuYWRkX2FwaV9jbGFzc2VzKFwidG9rZW5cIixjc3JmX3Rva2VuKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3N0X2RhdGEgPSB7IHVzZXJuYW1lOiB1c2VybmFtZSwgcGFzc3dvcmQ6IHBhc3N3b3JkIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwscG9zdF9kYXRhKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2U9Jyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXM9PTIwMClcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vcmVzcG9uc2UuanNvbigpLnRoZW4oZGF0YT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXM9PT0yMDApIHN1Y2Nlc3MgPSB0cnVlOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgbWVzc2FnZSA9ICdMb2dpbiBmYWlsZWQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3AgPSB7J2RhdGEnOnJlc3BvbnNlLmRhdGEsJ21lc3NhZ2UnOm1lc3NhZ2UsJ3N0YXR1cyc6cmVzcG9uc2Uuc3RhdHVzLCdzdWNjZXNzJzpzdWNjZXNzfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3ApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfSk7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cz09PTIwMCkgc3VjY2VzcyA9IHRydWU7ICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBtZXNzYWdlID0gJ0xvZ2luIGZhaWxlZCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwID0geydtZXNzYWdlJzptZXNzYWdlLCdzdGF0dXMnOnJlc3BvbnNlLnN0YXR1cywnc3VjY2Vzcyc6c3VjY2Vzc31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXNwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgTG9naW5Tc29GZXRjaCAoY2FsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IHVybCA9ICcuLi9hcGkvbG9naW4tc3NvLyc7XHJcbiAgICAgICAgICAgICAgICBsZXQgY3NyZl90b2tlbiA9IHRoaXMuJGNvb2tpZXMuZ2V0KCdjc3JmdG9rZW4nKTsgXHJcbiAgICAgICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmFkZF9hcGlfY2xhc3NlcyhcInNzb1wiLGNzcmZfdG9rZW4pO1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc3BvbnNlLmpzb24oKS50aGVuKGRhdGE9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXM9PT0yMDApIHN1Y2Nlc3MgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwID0geydkYXRhJzpyZXNwb25zZS5kYXRhLCdzdGF0dXMnOnJlc3BvbnNlLnN0YXR1cywnc3VjY2Vzcyc6c3VjY2Vzc31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXNwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy99KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICAgIExvZ291dCAoY2FsbGJhY2spIHtcclxuIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGxldCB1cmwgPSAnYXBpL2xvZ291dC8nO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2U9Jyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cz09PTIwMCkgc3VjY2VzcyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBtZXNzYWdlID0gJ0xvZ291dCBmYWlsZWQnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwID0geydtZXNzYWdlJzptZXNzYWdlLCdzdGF0dXMnOnJlc3BvbnNlLnN0YXR1cywnc3VjY2Vzcyc6c3VjY2Vzc31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXNwKTtcclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICBcclxuIFxyXG4gICAgICAgIH07XHJcbiAgXHJcblx0XHRcclxuICAgICAgICBTZXRDcmVkZW50aWFscyAodXNlciwgdXNlcm5hbWUsIHBhc3N3b3JkLHNldENvb2tpZSkgeyAgICAgICAvLyBzZXQgZ2xvYmFsIFwiY3VycmVudCB1c2VyXCIgIGFuZCBjb29raWUgXHJcbiAgICAgICAgICAgIHZhciBhdXRoZGF0YSA9IFwiVG9rZW4gXCIgK3VzZXIudG9rZW47XHJcbiAgICAgICAgICAgIC8vdmFyIGF1dGhkYXRhID0gXCJCZWFyZXIgXCIgK3VzZXIuYWNjZXNzX3Rva2VuOyAvLyBUT0RPIC0gZW5hYmxlIGZvciBmYXN0YXBpIGVuZHBvaW50IChmYXN0IGFwaSB3aWxsIHJldHVybiB1c2VyLmFjY2Vzc190b2tlbiBhcyBqd3QpXHJcbiAgICBcclxuXHRcdFx0aWYgKCF0aGlzLiRyb290U2NvcGUuZ2xvYmFscykgdGhpcy4kcm9vdFNjb3BlLmdsb2JhbHMgPSB7fVxyXG5cdFx0XHQvL2RlYnVnZ2VyXHJcblx0XHRcdFxyXG5cdFx0XHR0aGlzLiRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlcj0ge1xyXG4gICAgICAgICAgICAgICAgdXNlcmlkIDogdXNlci51c2VyaWQsXHJcbiAgICAgICAgICAgICAgICBmaXJzdF9uYW1lOiB1c2VyLmZpcnN0X25hbWUsXHJcbiAgICAgICAgICAgICAgICBsYXN0X25hbWUgOiB1c2VyLmxhc3RfbmFtZSxcclxuICAgICAgICAgICAgICAgIGVtYWlsOiB1c2VyLmVtYWlsLFxyXG4gICAgICAgICAgICAgICAgdXNlcm5hbWU6IHVzZXIudXNlcm5hbWUsXHJcbiAgICAgICAgICAgICAgICBpc19zdXBlcnVzZXI6dXNlci5pc19zdXBlcnVzZXIsXHJcbiAgICAgICAgICAgICAgICBsYXN0X2xvZ2luOnVzZXIubGFzdF9sb2dpbixcclxuICAgICAgICAgICAgICAgIGF1dGhkYXRhOiBhdXRoZGF0YSxcclxuICAgICAgICAgICAgICAgIGF1dGhfdHlwZTogdXNlci5hdXRoX3R5cGUsXHJcbiAgICAgICAgICAgICAgICBsYW5nOiB1c2VyPy5sYW5nPy5pZCxcclxuICAgICAgICAgICAgICAgIGxhbmdPYmogOiB1c2VyLmxhbmcsXHJcbiAgICAgICAgICAgICAgICBwYWdlczpbXSxcclxuICAgICAgICAgICAgICAgIHBhZ2VzTG9hZGVkOmZhbHNlLFxyXG4gICAgICAgICAgICAgICAgbmF2QmFyczpbXSxcclxuICAgICAgICAgICAgICAgIG5hdmJhckxvYWRlZDpmYWxzZSxcclxuICAgICAgICAgICAgICAgIGNNZW51czp7fSxcclxuICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbjp1c2VyLm9yZ2FuaXNhdGlvbixcclxuICAgICAgICAgICAgICAgIGdyb3Vwczp1c2VyLmdyb3VwcyxcclxuICAgICAgICAgICAgICAgIHVlcDp1c2VyLnVlcCxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgLy8gdGhpcy4kaHR0cC5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnQXV0aG9yaXphdGlvbiddID0gJ0Jhc2ljICcgKyBhdXRoZGF0YTsgLy8ganNoaW50IGlnbm9yZTpsaW5lXHJcbiAgICAgICAgICAgLy8gdGhpcy4kaHR0cC5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnQXV0aG9yaXphdGlvbiddID0gYXV0aGRhdGE7IC8vIGpzaGludCBpZ25vcmU6bGluZVxyXG5cdFx0ICAgXHJcbiAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2Uuc2V0X2hlYWRlcignQXV0aG9yaXphdGlvbicsYXV0aGRhdGEpO1xyXG5cdFx0XHQvL2xldCBlbnYgPSB7fVxyXG5cdFx0XHQvL2Vudlt1c2VyLm9yZ2FuaXNhdGlvbi5pZF0gPSAgdXNlci51ZXAuZGVmYXVsdGVudiBcclxuXHRcdFx0Ly9lbnZbdXNlci5vcmdhbmlzYXRpb24uaWRdID0gIHRoaXMuJHJvb3RTY29wZS5nbG9iYWxzPy5jdXJyZW50RW52ID8/IHVzZXIudWVwLmRlZmF1bHRlbnYgXHJcblx0XHRcdFxyXG5cdFx0XHR0aGlzLiRjb29raWVzLnB1dE9iamVjdCgnY3VycmVudFVzZXInLCAge1xyXG4gICAgICAgICAgICAgICAgICAgIHVzZXJpZCA6IHVzZXIudXNlcmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lOiB1c2VyLnVzZXJuYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGZpcnN0X25hbWU6IHVzZXIuZmlyc3RfbmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBsYXN0X25hbWUgOiB1c2VyLmxhc3RfbmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBsYXN0X2xvZ2luOnVzZXIubGFzdF9sb2dpbixcclxuICAgICAgICAgICAgICAgICAgICBpc19zdXBlcnVzZXI6dXNlci5pc19zdXBlcnVzZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0aGRhdGE6IGF1dGhkYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgIGF1dGhfdHlwZTogdXNlci5hdXRoX3R5cGUsXHJcbiAgICAgICAgICAgICAgICAgICAgbGFuZzogdXNlcj8ubGFuZz8uaWQsIFxyXG5cdFx0XHRcdFx0bGFuZ09iajogeyBpZDogdXNlcj8ubGFuZz8uaWQsIE5hbWU6IHVzZXI/Lmxhbmc/Lk5hbWUsIENvZGU6dXNlcj8ubGFuZz8uQ29kZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHVlcDp7UGFyYW1zOntPbmJvYXJkaW5nOnVzZXIudWVwPy5QYXJhbXM/Lk9uYm9hcmRpbmd9fSxcclxuICAgICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbjogeyBpZDogdXNlci5vcmdhbmlzYXRpb24uaWQgfSxcclxuXHRcdFx0XHQgICAvL2VudjogZW52XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgIH07XHJcblxyXG5cclxuICAgICAgIFNldFVlcCAodWVwKSB7IFx0ICAgXHJcbiAgICAgICAgICAgIHRoaXMuJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLnVlcD0gdWVwXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICB9O1xyXG5cdFx0XHJcblx0XHRcclxuICAgICAgICBTZXRDcmVkZW50aWFsc1NzbyAodXNlcikge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICB2YXIgYXV0aGRhdGEgPSBcIlwiO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuJHJvb3RTY29wZS5nbG9iYWxzKSB0aGlzLiRyb290U2NvcGUuZ2xvYmFscyA9IHt9XHJcblx0XHRcdHRoaXMuJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdXNlcmlkIDogdXNlci51c2VyaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RfbmFtZTogdXNlci5maXJzdF9uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhc3RfbmFtZSA6IHVzZXIubGFzdF9uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiB1c2VyLmVtYWlsLFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lOiB1c2VyLnVzZXJuYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGlzX3N1cGVydXNlcjp1c2VyLmlzX3N1cGVydXNlcixcclxuICAgICAgICAgICAgICAgICAgICBsYXN0X2xvZ2luOnVzZXIubGFzdF9sb2dpbixcclxuICAgICAgICAgICAgICAgICAgICBhdXRoZGF0YTogYXV0aGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0aF90eXBlOiB1c2VyLmF1dGhfdHlwZSxcclxuICAgICAgICAgICAgICAgICAgICBsYW5nOiB1c2VyPy5sYW5nPy5pZCxcclxuICAgICAgICAgICAgICAgICAgICBsYW5nT2JqIDogdXNlci5sYW5nLFxyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VzOltdLFxyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VzTG9hZGVkOmZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIG5hdkJhcnM6W10sXHJcbiAgICAgICAgICAgICAgICAgICAgbmF2YmFyTG9hZGVkOmZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGNNZW51czp7fSxcclxuICAgICAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb246dXNlci5vcmdhbmlzYXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOnVzZXIuZ3JvdXBzLFxyXG4gICAgICAgICAgICAgICAgICAgIHVlcDp1c2VyLnVlcCxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy90aGlzLiRodHRwLmRlZmF1bHRzLmhlYWRlcnMuY29tbW9uWydBdXRob3JpemF0aW9uJ10gPSBhdXRoZGF0YTsgLy8ganNoaW50IGlnbm9yZTpsaW5lXHJcbiAgICAgICAgICAgICAgICBsZXQgY3NyZl90b2tlbiA9IHRoaXMuJGNvb2tpZXMuZ2V0KCdjc3JmdG9rZW4nKTsgXHJcbiAgICAgICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmFkZF9hcGlfY2xhc3NlcyhcInRva2VuXCIsY3NyZl90b2tlbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLiRjb29raWVzLnB1dE9iamVjdCgnY3VycmVudFVzZXInLCAge1xyXG4gICAgICAgICAgICAgICAgICAgIHVzZXJpZCA6IHVzZXIudXNlcmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lOiB1c2VyLnVzZXJuYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGZpcnN0X25hbWU6IHVzZXIuZmlyc3RfbmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBsYXN0X25hbWUgOiB1c2VyLmxhc3RfbmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudHM6IHVzZXIuZW52aXJvbm1lbnRzLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhc3RfbG9naW46dXNlci5sYXN0X2xvZ2luLFxyXG4gICAgICAgICAgICAgICAgICAgIGlzX3N1cGVydXNlcjp1c2VyLmlzX3N1cGVydXNlcixcclxuICAgICAgICAgICAgICAgICAgICBhdXRoZGF0YTogYXV0aGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0aF90eXBlOiB1c2VyLmF1dGhfdHlwZSxcclxuICAgICAgICAgICAgICAgICAgICBsYW5nOiB1c2VyPy5sYW5nPy5pZCwgXHJcbiAgICAgICAgICAgICAgICAgICAgbGFuZ09iajogeyBpZDogdXNlcj8ubGFuZz8uaWQsIE5hbWU6IHVzZXI/Lmxhbmc/Lk5hbWUsIENvZGU6dXNlcj8ubGFuZz8uQ29kZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHVlcDp7UGFyYW1zOntPbmJvYXJkaW5nOnVzZXIudWVwPy5QYXJhbXM/Lk9uYm9hcmRpbmd9fSxcclxuICAgICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbjogeyBpZDogdXNlci5vcmdhbmlzYXRpb24uaWQgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBVcGRhdGVBdXRoVG9rZW4odG9rZW4pXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbGV0IGF1dGhkYXRhID0gXCJUb2tlbiBcIiArdG9rZW47XHJcbiAgICAgICAgICAgICAgICB0aGlzLiRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5hdXRoZGF0YT1hdXRoZGF0YTtcclxuICAgICAgICAgICAgICAgIC8vdGhpcy4kaHR0cC5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnQXV0aG9yaXphdGlvbiddID0gYXV0aGRhdGE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnNldF9oZWFkZXIoJ0F1dGhvcml6YXRpb24nLGF1dGhkYXRhKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuJGNvb2tpZXMucHV0T2JqZWN0KCdnbG9iYWxzJywgdGhpcy4kcm9vdFNjb3BlLmdsb2JhbHMpO1xyXG4gICAgICAgIH0gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIFNldE1lbnVzRm9yQXBwKGFwcCkgXHJcblx0XHR7XHJcbiAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgICAgICAgICAgdGhpcy4kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubmF2QmFycyA9IFtdO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5NZW51U2VydmljZS5zZXRTZWxlY3RlZEFwcChhcHApO1xyXG4gICAgICAgICAgICBsZXQgaW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgICAgICAgICBsZXQgdHlwZT0nMCdcclxuICAgICAgICAgICAgbGV0IG1lbnVfaWQgPSBhcHAudWlkXHJcbiAgICAgICAgICAgIGxldCBtX3Zlcj0wXHJcbiAgICAgICAgICAgIGxldCBtZW51ID0gdGhpcy5maW5kTGlua0Z1bGwoJ2FwcC1tZW51JyxhcHApXHJcbiAgICAgICAgICAgIG1lbnVfaWQgPSBtZW51Py5SZXNvdXJjZTJcclxuICAgICAgICAgICAgaWYgKG1lbnU/LlZlcnNpb24hPXVuZGVmaW5lZCkgbV92ZXIgPSBtZW51LlZlcnNpb25cclxuXHJcbiAgICAgICAgICAgIGlmIChhcHAuYXBwX3R5cGU9PSdleHRlcm5hbCcpIHR5cGU9J2UnXHJcbiAgICAgICAgICAgIHRoaXMuTWVudVNlcnZpY2UucmVzZXRDdXJyZW50TWVudVdpdGhQcm9wcygpXHJcbiAgICAgICAgICAgIGlmIChtZW51X2lkIT11bmRlZmluZWQpICAge1xyXG5cdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgdGhpcy5NZW51U2VydmljZS5nZXRNZW51c0V4ZShtZW51X2lkLHR5cGUsbV92ZXIpLnRoZW4oXHJcblx0XHRcdFx0XHRmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXBOYXZiYXJJdGVtcyA9IGluc3RhbmNlLk1lbnVTZXJ2aWNlLmdldE5hdmJhcnNGcm9tTWVudXMoaW5zdGFuY2UuJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmcsdHlwZSxmYWxzZSxtZW51X2lkLG1fdmVyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWVudV9sb2FkZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVtcE5hdmJhckl0ZW1zPy5sZW5ndGg+MCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyIC8vICBTZXRNZW51c0ZvckFwcFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRpbnN0YW5jZS5NZW51U2VydmljZS5uYXZiYXJJdGVtcy5zcGxpY2UoMCwgaW5zdGFuY2UuTWVudVNlcnZpY2UubmF2YmFySXRlbXMubGVuZ3RoKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aW5zdGFuY2UuTWVudVNlcnZpY2UubmF2YmFySXRlbXMucHVzaCguLi50ZW1wTmF2YmFySXRlbXMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaW5zdGFuY2UuTWVudVNlcnZpY2UubmF2YmFySXRlbXMgPSAgdGVtcE5hdmJhckl0ZW1zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLk1lbnVTZXJ2aWNlLmN1cnJlbnRBcHAgPSBpbnN0YW5jZS4kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudEFwcCAgPSB7ICB1aWQ6YXBwLnVpZCwgdW5pcXVlSWQ6IGFwcC51bmlxdWVJZCwgaWQ6YXBwLmlkICwgbmFtZTogYXBwLk5hbWUgLCBtZW51SWQ6IHRlbXBOYXZiYXJJdGVtc1swXS5zX21lbnVzX1Jlc291cmNlRGVmVWlkIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUhPSdlJykgaW5zdGFuY2UuTWVudVNlcnZpY2Uuc2V0Q3VycmVudE1lbnVXaXRoUHJvcHModHlwZSxtZW51X2lkLG1fdmVyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51X2xvYWRlZCA9IHRydWVcclxuICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBOYXZiYXJJdGVtcz1bXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5NZW51U2VydmljZS5uYXZiYXJJdGVtcyA9ICB0ZW1wTmF2YmFySXRlbXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiTWVudSBub3Qgc2V0IGZvciBhcHBsaWNhdGlvbiAjXCIrYXBwLk5hbWUsJ2luZm8nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLm5hdmJhckxvYWRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZShtZW51X2xvYWRlZCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfWVsc2UgLy9cIk1lbnUgbm90IGZvdW5kIGZvciBhcHBsaWNhdGlvbiBcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgLy9pbnN0YW5jZS5NZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoXCJNZW51IG5vdCBmb3VuZCBmb3IgYXBwbGljYXRpb24gI1wiK2FwcC5OYW1lLCd3YXJuaW5nJylcclxuICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTsgXHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICBTZXROYXZiYXJzKCkgeyBcclxuICAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgICAgICAgbGV0IGluc3RhbmNlID0gdGhpcztcclxuICAgICAgICAgICB0aGlzLk1lbnVTZXJ2aWNlLmdldE5hdmJhcih0aGlzLiRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubmF2QmFycyA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUubmF2YmFyPSRzY29wZS5nZXRMaW5rTmF2YmFyKCRzdGF0ZS5jdXJyZW50Lm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuTWVudVNlcnZpY2UuZ2VuZXJhdGVDaGlsZHJlbk5hdmJhclJpZ2h0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubmF2YmFyTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRjb29raWVzLnB1dCgnZ2xvYmFscycsICRyb290U2NvcGUuZ2xvYmFscyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICRzY29wZS5nZXRNZW51c0ZvclBhZ2UoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7IFxyXG4gICAgICAgIH1cclxuICBcclxuIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgKioqKioqKioqKioqKioqKiogRmluayBsaW5rIGZyb20gYXBwIHJlY29yZCoqKioqKioqKioqKioqKioqKlxyXG4gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAgICAgICBcclxuICBmaW5kTGluayA9IGZ1bmN0aW9uIChsaW5rX3R5cGUsYXBwKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpPTA7aTxhcHA/LlJlc291cmNlRXh0ZW5kZWQ/Lmxlbmd0aDtpKyspIFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXBwLlJlc291cmNlRXh0ZW5kZWRbaV0uTGlua1R5cGU9PWxpbmtfdHlwZSkgcmV0dXJuIGFwcC5SZXNvdXJjZUV4dGVuZGVkW2ldLlJlc291cmNlMjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICBmaW5kTGlua0Z1bGwgPSBmdW5jdGlvbiAobGlua190eXBlLGFwcCkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wO2k8YXBwPy5SZXNvdXJjZUV4dGVuZGVkPy5sZW5ndGg7aSsrKSBcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFwcC5SZXNvdXJjZUV4dGVuZGVkW2ldLkxpbmtUeXBlPT1saW5rX3R5cGUpIHJldHVybiBhcHAuUmVzb3VyY2VFeHRlbmRlZFtpXVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gICBcclxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKiogTG9hZCBhcHBsaWNhdGlvbiBmaXJzdCBwYWdlKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovICBcclxuICAgIGxvYWRGaXJzdFBhZ2UgPSBmdW5jdGlvbiAoc3RhdGVOYW1lLHBhcmFtcyxhcHAsbWVudV9sb2FkZWQpIHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIGxldCBpbnN0YW5jZT10aGlzOyAgICAgICAgIFxyXG4gICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaW5zdGFuY2UuTWVudVNlcnZpY2Uuc2V0U2VsZWN0ZWRBcHAoYXBwLHN0YXRlTmFtZSxwYXJhbXMpO1xyXG4gICAgICAgICAgaWYgKHN0YXRlTmFtZSE9PXVuZGVmaW5lZCAmJiBzdGF0ZU5hbWUhPT1udWxsICYmIHN0YXRlTmFtZS50cmltKCkhPT1cIlwiKVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgaWYgKG1lbnVfbG9hZGVkKSB7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5NZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoJyMnK2FwcC5OYW1lKycgbGF1bmNoZWQgc3VjY2Vzc2Z1bHkhJywnaW5mbycpO1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlICBpbnN0YW5jZS5NZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoJyMnK2FwcC5OYW1lKycgYXBwbGljYXRpb24gaXMgbm90IGZ1bGx5IGxhdW5jaGVkIScsJ3dhcm5pbmcnKTsgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIC8qaWYgKHBhcmFtcy5wYWdlaWQ9PXVuZGVmaW5lZCB8fCBwYXJhbXMucGFnZWlkID09IG51bGwgfHwgcGFyYW1zLnBhZ2VpZC50cmltKCk9PScnKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwYWdlSWQgPSBpbnN0YW5jZS5maW5kTGluayhcImRlZmF1bHQtcGFnZVwiLGFwcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnBhZ2VpZCA9IHBhZ2VJZFxyXG4gICAgICAgICAgICAgICAgfSovXHJcbiAgICAgICAgICAgICAgaWYgKHBhcmFtc1snYXBwX3JlZiddPT11bmRlZmluZWQpIHBhcmFtc1snYXBwX3JlZiddID0gYXBwLnVpZFxyXG5cdFx0XHQgIC8vaWYgKHBhcmFtc1snZW52J109PXVuZGVmaW5lZCkgcGFyYW1zWydlbnYnXSA9IHRoaXMuJHJvb3RTY29wZT8uZ2xvYmFscz8uY3VycmVudEVudiBcclxuXHRcdFx0ICBcclxuICAgICAgICAgICAgICBpbnN0YW5jZS4kc3RhdGUuZ28oc3RhdGVOYW1lLHBhcmFtcyx7IGxvY2F0aW9uOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgIGluc3RhbmNlLk1lbnVTZXJ2aWNlLnNldFNlbGVjdGVkQXBwTWVudVdpdGhQYXJhbXMoc3RhdGVOYW1lLHBhcmFtcylcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vbG9hZCBkZWZhdWx0IHBhZ2VcclxuICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGxldCBwYWdlSWQgPSBpbnN0YW5jZS5maW5kTGluayhcImRlZmF1bHQtcGFnZVwiLGFwcCk7XHJcblx0XHRcdFxyXG4gICAgICAgICAgICBpZiAocGFnZUlkIT1udWxsICYmIHBhZ2VJZCE9dW5kZWZpbmVkICYmIGFwcC5hcHBfdHlwZT09J2ludGVybmFsJylcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZBbGwocGFnZUlkKS50aGVuKGZ1bmN0aW9uKGRhdGExKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBhZ2UgPSBkYXRhMS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIGlmIChtZW51X2xvYWRlZCkgaW5zdGFuY2UuTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCcjJythcHAuTmFtZSsnIGxhdW5jaGVkIHN1Y2Nlc3NmdWx5IScsJ2luZm8nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICBlbHNlICBpbnN0YW5jZS5NZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoJyMnK2FwcC5OYW1lKycgYXBwbGljYXRpb24gaXMgbm90IGZ1bGx5IGxhdW5jaGVkIScsJ3dhcm5pbmcnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFnZS5SZXNvdXJjZUV4dGVuZGVkPy5UYXJnZXQhPXVuZGVmaW5lZCkgaW5zdGFuY2UuJHN0YXRlLmdvKHBhZ2UuUmVzb3VyY2VFeHRlbmRlZC5UYXJnZXQgICx7IHBhcmFtZXRlcnM6IHBhcmFtcywgcGFnZWlkOiBwYWdlLnVpZCwgYXBwX3JlZjphcHAudWlkfSlcclxuICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGluc3RhbmNlLiRzdGF0ZS5nbyhcImFwcC5uYXZiYXIuaG9tZVwiICAseyBwYXJhbWV0ZXJzOiBwYXJhbXMsIHBhZ2VpZDogcGFnZUlkLCBhcHBfcmVmOmFwcC51aWQgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IxKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLk1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvcjEubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChwYWdlSWQhPW51bGwgJiYgcGFnZUlkIT11bmRlZmluZWQgJiYgYXBwLmFwcF90eXBlPT0nZXh0ZXJuYWwnKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLlJlc291cmNlc0RhdGFTZXJ2aWNlLkdldFB1YmxpY1B1Ymxpc2hlZFJlc291cmNlKHBhZ2VJZCkudGhlbihmdW5jdGlvbihkYXRhMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBwYWdlID0gZGF0YTEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVudV9sb2FkZWQpIGluc3RhbmNlLk1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnIycrYXBwLk5hbWUrJyBsYXVuY2hlZCBzdWNjZXNzZnVseSEnLCdpbmZvJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAgaW5zdGFuY2UuTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCcjJythcHAuTmFtZSsnIGFwcGxpY2F0aW9uIGlzIG5vdCBmdWxseSBsYXVuY2hlZCEnLCd3YXJuaW5nJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhZ2UuUmVzb3VyY2VFeHRlbmRlZD8uVGFyZ2V0IT11bmRlZmluZWQpIGluc3RhbmNlLiRzdGF0ZS5nbyhwYWdlLlJlc291cmNlRXh0ZW5kZWQuVGFyZ2V0ICAseyBwYXJhbWV0ZXJzOiBwYXJhbXMsIHBhZ2VpZDogcGFnZUlkLCBhcHBfcmVmOmFwcC51aWR9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaW5zdGFuY2UuJHN0YXRlLmdvKFwiYXBwLm5hdmJhci5ob21lXCIgICx7IHBhcmFtZXRlcnM6IHBhcmFtcywgcGFnZWlkOiBwYWdlSWQsIGFwcF9yZWY6YXBwLnVpZH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IxKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLk1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvcjEubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGVsc2UgXHJcbiAgICAgICAgICAgIHsgICBcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLiRzdGF0ZS5nbygnYXBwLm5hdmJhci5ob21lJyAgLHthcHBfcmVmOmFwcC51aWR9KTsgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5NZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoJyMnK2FwcC5OYW1lKycgYXBwbGljYXRpb24gaXMgbm90IGZ1bGx5IGxhdW5jaGVkISBEZWZhdWx0IHBhZ2UgaXMgbm90IGRlZmluZWQnLCd3YXJuaW5nJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgICAgIFxyXG4gICB9OyAgICAgXHJcbiAgIFxyXG4gICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqIExvYWQgYXBwbGljYXRpb24gKioqKioqKioqKioqKioqKioqXHJcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAgXHJcbiAgIGxvYWRBcHAgKHN0YXRlTmFtZSxwYXJhbXMsYXBwSWQpe1xyXG4gICAgICBcclxuICAgICAgbGV0IGluc3RhbmNlPSB0aGlzO1xyXG4gICAgICBsZXQgcXMgPSBpbnN0YW5jZS4kcS5kZWZlcigpXHJcbiAgICAgIHRoaXMuUmVzb3VyY2VzRGF0YVNlcnZpY2UubG9hZEFwcChhcHBJZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCBhcHAgPSBkYXRhLmRhdGE7XHJcblx0XHRcdGluc3RhbmNlLiRyb290U2NvcGUuZ2xvYmFscy5hcHAgPSBhcHAuc3Vic2NyaXB0aW9uc1xyXG5cclxuICAgICAgICAgICAgIHFzLnJlc29sdmUoYXBwKVxyXG4gICAgICAgICAgIFxyXG4gICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICBxcy5yZWplY3QoZXJyb3IpXHJcbiAgICAgICAgICAgIC8vaW5zdGFuY2UuTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yMSwnZXJyb3InKTsgIFxyXG4gICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIHFzLnByb21pc2VcclxuICAgIH07XHJcbiAgICBcclxuICAgICAgICBDbGVhckNyZWRlbnRpYWxzICgpIHtcclxuICAgICAgICAgICAvLyBsZXQgYXV0aF90eXBlID0gdGhpcy4kcm9vdFNjb3BlLmdsb2JhbHM/LmN1cnJlbnRVc2VyPy5hdXRoX3R5cGU7XHJcbiAgICAgICAgICAgLy8gdGhpcy4kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIgPSB7bGFuZzonZW4tR0InLGF1dGhfdHlwZTphdXRoX3R5cGUsSW50ZXJjZXB0b3JJc0FjdGl2ZSA6IHRydWV9O1xyXG4gICAgICAgICAgICB0aGlzLiRjb29raWVzLnJlbW92ZSgnZ2xvYmFscycpO1xyXG4gICAgICAgICAgICAvL3RoaXMuJGh0dHAuZGVmYXVsdHMuaGVhZGVycy5jb21tb24uQXV0aG9yaXphdGlvbiA9ICcnO1xyXG4gICAgICAgICAgICB0aGlzLkNsZWFyU2VydmljZS5DbGVhcigpO1xyXG4gICAgICAgICAgICB0aGlzLk1lc3NhZ2luZ1NlcnZpY2UuY2xlYXJBbGxNZXNzYWdlcygpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgIFxyXG4gIH1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEF1dGhlbnRpY2F0aW9uU2VydmljZTtcclxuXHJcbmNsYXNzIFVzZXJTZXJ2aWNlIHtcclxuICAgICAgICBcclxuICAgICAgICBjb25zdHJ1Y3RvcigkcSxSZXN0QXBpU2VydmljZSwkcm9vdFNjb3BlKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXNlcnM9e307XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwcyA9e307XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50X2NhbGw9MDtcclxuICAgICAgICAgICAgICAgIHRoaXMuJHEgPSRxO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZT1SZXN0QXBpU2VydmljZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuJHJvb3RTY29wZT0kcm9vdFNjb3BlO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHN0YXRpYyAkaW5qZWN0ID0gWyckcScsJ1Jlc3RBcGlTZXJ2aWNlJywnJHJvb3RTY29wZSddO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGdldFVzZXJzR3JvdXBzIChhdXRoX3R5cGUpIHtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB2YXIgZGF0YUZvdW5kPWZhbHNlOyAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKGF1dGhfdHlwZT09XCJ1c2Vyc1wiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVzZXJzW3RoaXMuJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLm9yZ2FuaXNhdGlvbj8uaWRdPy5sZW5ndGg+MCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFGb3VuZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IGFuZ3VsYXIuY29weSh0aGlzLnVzZXJzW3RoaXMuJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLm9yZ2FuaXNhdGlvbj8uaWRdKSwgc3RhdHVzOiAyMDB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICBcclxuICAgICAgICAgICAgICAgIGlmIChhdXRoX3R5cGU9PVwiZ3JvdXBzXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmdyb3Vwc1t0aGlzLiRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5vcmdhbmlzYXRpb24/LmlkXT8ubGVuZ3RoPjApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhRm91bmQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiBhbmd1bGFyLmNvcHkodGhpcy5ncm91cHNbdGhpcy4kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIub3JnYW5pc2F0aW9uPy5pZF0pLCBzdGF0dXM6IDIwMH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGFGb3VuZClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGluc3RhbmNlID0gdGhpczsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gJy4uL2FwaS8nK2F1dGhfdHlwZSsnLyc7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCwgdHJ1ZSkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRoX3R5cGU9PVwidXNlcnNcIikgICAgaW5zdGFuY2UudXNlcnNbaW5zdGFuY2UuJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLm9yZ2FuaXNhdGlvbj8uaWRdID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dGhfdHlwZT09XCJncm91cHNcIikgICAgaW5zdGFuY2UuZ3JvdXBzW2luc3RhbmNlLiRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5vcmdhbmlzYXRpb24/LmlkXSA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoIHsnZGF0YSc6YW5ndWxhci5jb3B5KHJlc3BvbnNlLmRhdGEpLCdzdGF0dXMnOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCAoeydkYXRhJzpyZXNwb25zZSwnc3RhdHVzJzpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGdldEdyb3Vwc0V4dGVuZGVkICgpIHtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgdXJsID0gJy4uL2FwaS9ncm91cHNleHRlbmRlZC8nO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTpyZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7ZGF0YTogcmVzcG9uc2UsIHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG5cclxuICAgICAgICBnZXRHcm91cHNTZWN1cml0eSgpIHtcclxuICAgICAgICBcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgbGV0IHVybCA9ICcuLi9hcGkvZ3JvdXBzc2VjdXJpdHkvJztcclxuICAgICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTpyZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7ZGF0YTogcmVzcG9uc2UuZGF0YSwgc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH1cclxuXHRcdFxyXG5cdFx0Z2V0VXNlcnNTZWN1cml0eSgpIHtcclxuICAgICAgICBcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgbGV0IHVybCA9ICcuLi9hcGkvdXNlcnNzZWN1cml0eS8nO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOnJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHtkYXRhOiByZXNwb25zZS5kYXRhLCBzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICBcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzYXZlR3JvdXBzU2VjdXJpdHkocmVjb3JkKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7ICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IHVybCA9ICcuLi9hcGkvZ3JvdXBzc2VjdXJpdHkvJztcclxuXHRcdFx0XHRsZXQgcG9zdF9kYXRhID0geydyZWNvcmQnOiByZWNvcmR9XHJcbiAgICAgICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsLCBwb3N0X2RhdGEpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6cmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe2RhdGE6IHJlc3BvbnNlLmRhdGEsIHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBnZXRVc2Vyc0V4dGVuZGVkICgpIHtcclxuICAgICAgICBcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgbGV0IHVybCA9ICcuLi9hcGkvdXNlcnNleHRlbmRlZC8nO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6cmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7ZGF0YTogcmVzcG9uc2UuZGF0YSwgc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuIFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2F2ZVVzZXJFeHRlbmRlZCAob25ib2FyZGluZ1N0YXR1cykge1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7ICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBsZXQgdXJsID0gJy4uL2FwaS91c2Vyc2V4dGVuZGVkLyc7XHJcbiAgICAgICAgICAgIGxldCBwb3N0X2RhdGEgPSB7J29uYm9hcmRpbmcnOm9uYm9hcmRpbmdTdGF0dXN9XHJcbiAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwscG9zdF9kYXRhKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOnJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHtkYXRhOiByZXNwb25zZS5kYXRhLCBzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIFxyXG4gICAgICAgZ2V0VXNlck9iamVjdEJ5SWQgKHVzZXJJZCl7XHJcbiAgICAgICAgXHJcbiAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgICBcclxuICAgICAgICBpZiAodXNlcklkPT1udWxsKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHVzZXJJZD1cIlwiO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnVzZXJzLmxlbmd0aD09MClcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aGlzLmNvdW50X2NhbGwrKztcclxuICAgICAgICAgIGlmICh0aGlzLmNvdW50X2NhbGw8MSlcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBnZXRVc2Vyc0dyb3VwcygndXNlcnMnKS50aGVuKGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgdmFyIHBvcyA9IHRoaXMudXNlcnMubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQudG9TdHJpbmcoKTsgfSkuaW5kZXhPZih1c2VySWQudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgICAgaWYgKHBvcz49MClcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHRoaXMudXNlcnNbcG9zXSk7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfSBlbHNlICBkZWZlcnJlZC5yZXNvbHZlKG51bGwpOyAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICAgICAgdmFyIHBvcyA9IHRoaXMudXNlcnMubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQudG9TdHJpbmcoKTsgfSkuaW5kZXhPZih1c2VySWQudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIGlmIChwb3M+PTApXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHRoaXMudXNlcnNbcG9zXSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBkZWZlcnJlZC5yZXNvbHZlKG51bGwpOyAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgICAgIFxyXG4gICAgfTtcclxuICAgIFxyXG4gICAgICAgZ2V0R3JvdXBPYmplY3RCeUlkIChncm91cElkKXtcclxuICAgICAgICBcclxuICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgICAgIFxyXG4gICAgICAgIGlmIChncm91cElkPT1udWxsKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGdyb3VwSWQ9XCJcIjtcclxuICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5ncm91cHMubGVuZ3RoPT0wKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRoaXMuY291bnRfY2FsbCsrO1xyXG4gICAgICAgICAgaWYgKHRoaXMuY291bnRfY2FsbDwxKVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHNlcnZpY2UuZ2V0VXNlcnNHcm91cHMoJ2dyb3VwcycpLnRoZW4oZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICB2YXIgcG9zID0gdGhpcy5ncm91cHMubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQudG9TdHJpbmcoKTsgfSkuaW5kZXhPZihncm91cElkLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICAgIGlmIChwb3M+PTApXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh0aGlzLmdyb3Vwc1twb3NdKTtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB9IGVsc2UgIGRlZmVycmVkLnJlc29sdmUobnVsbCk7ICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgcG9zID0gdGhpcy5ncm91cHMubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQudG9TdHJpbmcoKTsgfSkuaW5kZXhPZihncm91cElkLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICBpZiAocG9zPj0wKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh0aGlzLmdyb3Vwc1twb3NdKTtcclxuICAgICAgICAgICAgfSBlbHNlIGRlZmVycmVkLnJlc29sdmUobnVsbCk7ICAgICBcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgICAgXHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgU0FWRSBHcm91cFxyXG4gIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gICAgICAgIFNhdmVHcm91cCAoZ3JvdXApIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiUE9TVFwiO1xyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL3NhdmUtZ3JvdXAvJztcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgICAgICAgIHZhciBpbnN0YW5jZT10aGlzO1xyXG4gICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxncm91cCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5ncm91cHM9IHJlc3BvbnNlLmRhdGEuZ3JvdXBzOyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLmRhdGEuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe2RhdGE6cmVzcG9uc2UuZGF0YSAsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdCAgLy8gICAgICAgICAgIEV4ZWN1dGUgYWN0aW9ucyAoc2V0IGVudmlyb25tZW50IHZhcmlhYmxlcy4uLilcclxuICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICAgICAgICBFeGVjdXRlQWN0aW9ucyAodXNlcikge1xyXG4gICAgICAgICAgICAgICAgbGV0IHVybD0nLi4vYXBpL2V4ZWN1dGUtYWN0aW9ucy8nO1xyXG4gICAgICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGluc3RhbmNlID0gdGhpcztcclxuICAgICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwsdXNlcikudGhlbihyZXNwb25zZSA9PnsgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnVzZXJzPXJlc3BvbnNlLmRhdGEudXNlcnM7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSwgbXNnOnJlc3BvbnNlLmRhdGEubXNnLCBzdGF0dXM6IHJlc3BvbnNlLmRhdGEuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHtkYXRhOnJlc3BvbnNlLmRhdGEsbXNnOnJlc3BvbnNlLmRhdGEubXNnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBTQVZFIFVzZXJcclxuICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICAgICAgICBTYXZlVXNlciAodXNlcikge1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCB1cmw9Jy4uL2FwaS9zYXZlLXVzZXIvJztcclxuICAgICAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgICAgICAgICAgICAgIHZhciBpbnN0YW5jZSA9IHRoaXM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsLHVzZXIpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS51c2Vycz1yZXNwb25zZS5kYXRhLnVzZXJzOyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsIG1zZzpyZXNwb25zZS5kYXRhLm1zZywgc3RhdHVzOiByZXNwb25zZS5kYXRhLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7ZGF0YTpyZXNwb25zZS5kYXRhLG1zZzpyZXNwb25zZS5kYXRhLm1zZyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIC8vICAgICAgICAgICByZXNldCBwYXNzIHJlcXVlc3QgVXNlclxyXG4gICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gICAgICAgIFJlc2V0UGFzc3dvcmQgKHVzZXJfaWQpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgdXJsPScuLi9hcGkvcmVzZXQtcGFzc3dvcmQtcmVxdWVzdC8nK3VzZXJfaWQrJy8nO1xyXG4gICAgICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGluc3RhbmNlID0gdGhpcztcclxuICAgICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSwgc3RhdHVzOiByZXNwb25zZS5kYXRhLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7ZGF0YTpyZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICBDaGVja1Jlc2V0UmVxdWVzdCA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGxldCB1cmwgPSAnLi4vYXBpL2NoZWNrLWNoYW5nZS1wYXNzd29yZC8nO1xyXG4gICAgICAgICAgICAgICAgbGV0IGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpXHJcbiAgICAgICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsLHsnc2lnbnVwa2V5Jzokc2NvcGUuc2lnbnVwa2V5fSkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLCBzdGF0dXM6IHJlc3BvbnNlLmRhdGEuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7ZGF0YTpyZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdHJldHVybiBkZWZlcnJlZC5wcm9taXNlOyAgICAgICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgIH07XHJcblx0XHRcclxuXHRcdEpvaW5JbnZpdGF0b24gPSBmdW5jdGlvbihwb3N0X2RhdGEpe1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgdXJsID0gJy4uL2FwaS9qb2luLWludml0YXRpb24vJztcclxuICAgICAgICAgICAgICAgIGxldCBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKVxyXG4gICAgICAgICAgICAgICAgaWYgKHBvc3RfZGF0YT09dW5kZWZpbmVkKSBwb3N0X2RhdGE9e31cclxuICAgICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwscG9zdF9kYXRhKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe21zZzogcmVzcG9uc2UuZGF0YSwgc3RhdHVzOiByZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6cmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcblxyXG5cclxuXHJcblxyXG59XHJcblxyXG5leHBvcnQge1VzZXJTZXJ2aWNlfTsgICBcclxuICAgXHJcbmNsYXNzIEJhc2U2NCB7XHJcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXHJcbiAgICAgICAgY29uc3RydWN0b3IoKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRoaXMua2V5U3RyID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89JzsgICAgXHJcbiAgICAgICAgfVxyXG4gICAgXHJcbiAgXHJcbiAgXHJcbiAgICAgICAgZW5jb2RlIChpbnB1dCkge1xyXG4gICAgICAgICAgICB2YXIgb3V0cHV0ID0gXCJcIjtcclxuICAgICAgICAgICAgdmFyIGNocjEsIGNocjIsIGNocjMgPSBcIlwiO1xyXG4gICAgICAgICAgICB2YXIgZW5jMSwgZW5jMiwgZW5jMywgZW5jNCA9IFwiXCI7XHJcbiAgICAgICAgICAgIHZhciBpID0gMDtcclxuICBcclxuICAgICAgICAgICAgZG8ge1xyXG4gICAgICAgICAgICAgICAgY2hyMSA9IGlucHV0LmNoYXJDb2RlQXQoaSsrKTtcclxuICAgICAgICAgICAgICAgIGNocjIgPSBpbnB1dC5jaGFyQ29kZUF0KGkrKyk7XHJcbiAgICAgICAgICAgICAgICBjaHIzID0gaW5wdXQuY2hhckNvZGVBdChpKyspO1xyXG4gIFxyXG4gICAgICAgICAgICAgICAgZW5jMSA9IGNocjEgPj4gMjtcclxuICAgICAgICAgICAgICAgIGVuYzIgPSAoKGNocjEgJiAzKSA8PCA0KSB8IChjaHIyID4+IDQpO1xyXG4gICAgICAgICAgICAgICAgZW5jMyA9ICgoY2hyMiAmIDE1KSA8PCAyKSB8IChjaHIzID4+IDYpO1xyXG4gICAgICAgICAgICAgICAgZW5jNCA9IGNocjMgJiA2MztcclxuICBcclxuICAgICAgICAgICAgICAgIGlmIChpc05hTihjaHIyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVuYzMgPSBlbmM0ID0gNjQ7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzTmFOKGNocjMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW5jNCA9IDY0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0ICtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmtleVN0ci5jaGFyQXQoZW5jMSkgK1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMua2V5U3RyLmNoYXJBdChlbmMyKSArXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5rZXlTdHIuY2hhckF0KGVuYzMpICtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmtleVN0ci5jaGFyQXQoZW5jNCk7XHJcbiAgICAgICAgICAgICAgICBjaHIxID0gY2hyMiA9IGNocjMgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgZW5jMSA9IGVuYzIgPSBlbmMzID0gZW5jNCA9IFwiXCI7XHJcbiAgICAgICAgICAgIH0gd2hpbGUgKGkgPCBpbnB1dC5sZW5ndGgpO1xyXG4gIFxyXG4gICAgICAgICAgICByZXR1cm4gb3V0cHV0O1xyXG4gICAgICAgIH1cclxuICBcclxuICAgICAgICBkZWNvZGUgKGlucHV0KSB7XHJcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSBcIlwiO1xyXG4gICAgICAgICAgICB2YXIgY2hyMSwgY2hyMiwgY2hyMyA9IFwiXCI7XHJcbiAgICAgICAgICAgIHZhciBlbmMxLCBlbmMyLCBlbmMzLCBlbmM0ID0gXCJcIjtcclxuICAgICAgICAgICAgdmFyIGkgPSAwO1xyXG4gIFxyXG4gICAgICAgICAgICAvLyByZW1vdmUgYWxsIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IEEtWiwgYS16LCAwLTksICssIC8sIG9yID1cclxuICAgICAgICAgICAgdmFyIGJhc2U2NHRlc3QgPSAvW15BLVphLXowLTlcXCtcXC9cXD1dL2c7XHJcbiAgICAgICAgICAgIGlmIChiYXNlNjR0ZXN0LmV4ZWMoaW5wdXQpKSB7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cuYWxlcnQoXCJUaGVyZSB3ZXJlIGludmFsaWQgYmFzZTY0IGNoYXJhY3RlcnMgaW4gdGhlIGlucHV0IHRleHQuXFxuXCIgK1xyXG4gICAgICAgICAgICAgICAgICAgIFwiVmFsaWQgYmFzZTY0IGNoYXJhY3RlcnMgYXJlIEEtWiwgYS16LCAwLTksICcrJywgJy8nLGFuZCAnPSdcXG5cIiArXHJcbiAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3QgZXJyb3JzIGluIGRlY29kaW5nLlwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoL1teQS1aYS16MC05XFwrXFwvXFw9XS9nLCBcIlwiKTtcclxuICBcclxuICAgICAgICAgICAgZG8ge1xyXG4gICAgICAgICAgICAgICAgZW5jMSA9IHRoaXMua2V5U3RyLmluZGV4T2YoaW5wdXQuY2hhckF0KGkrKykpO1xyXG4gICAgICAgICAgICAgICAgZW5jMiA9IHRoaXMua2V5U3RyLmluZGV4T2YoaW5wdXQuY2hhckF0KGkrKykpO1xyXG4gICAgICAgICAgICAgICAgZW5jMyA9IHRoaXMua2V5U3RyLmluZGV4T2YoaW5wdXQuY2hhckF0KGkrKykpO1xyXG4gICAgICAgICAgICAgICAgZW5jNCA9IHRoaXMua2V5U3RyLmluZGV4T2YoaW5wdXQuY2hhckF0KGkrKykpO1xyXG4gIFxyXG4gICAgICAgICAgICAgICAgY2hyMSA9IChlbmMxIDw8IDIpIHwgKGVuYzIgPj4gNCk7XHJcbiAgICAgICAgICAgICAgICBjaHIyID0gKChlbmMyICYgMTUpIDw8IDQpIHwgKGVuYzMgPj4gMik7XHJcbiAgICAgICAgICAgICAgICBjaHIzID0gKChlbmMzICYgMykgPDwgNikgfCBlbmM0O1xyXG4gIFxyXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0ICsgU3RyaW5nLmZyb21DaGFyQ29kZShjaHIxKTtcclxuICBcclxuICAgICAgICAgICAgICAgIGlmIChlbmMzICE9IDY0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0ICsgU3RyaW5nLmZyb21DaGFyQ29kZShjaHIyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChlbmM0ICE9IDY0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0ICsgU3RyaW5nLmZyb21DaGFyQ29kZShjaHIzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgICAgICAgIGNocjEgPSBjaHIyID0gY2hyMyA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICBlbmMxID0gZW5jMiA9IGVuYzMgPSBlbmM0ID0gXCJcIjtcclxuICBcclxuICAgICAgICAgICAgfSB3aGlsZSAoaSA8IGlucHV0Lmxlbmd0aCk7XHJcbiAgXHJcbiAgICAgICAgICAgIHJldHVybiBvdXRwdXQ7XHJcbiAgICAgICAgfVxyXG59XHJcblxyXG4vL2V4cG9ydCBCYXNlNjQ7XHJcblxyXG4vKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xyXG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIENvZGVzU2VydmljZSAtIEVTNiBtb2R1bGUgKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4ndXNlIHN0cmljdCc7XHJcblxyXG5jbGFzcyBDb2Rlc1NlcnZpY2V7XHJcbiAgIFxyXG4gICAgXHJcbiAgIGNvbnN0cnVjdG9yICgkcSwkcm9vdFNjb3BlLFJlc3RBcGlTZXJ2aWNlKSB7XHJcbiAgICAgXHJcbiAgICAgIHRoaXMubGlzdE9mQ29kZXNCeUlkPXt9O1xyXG4gICAgICB0aGlzLmxpc3RPZkNvZGVzQnlOYW1lPXt9O1xyXG4gICAgICB0aGlzLmxpc3RPZlByb21pc2VzPXt9O1xyXG4gICAgICB0aGlzLmNvZGVzTGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLmdldHRpbmdDb2RlTGlzdCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLiRxPSRxO1xyXG4gICAgICB0aGlzLiRyb290U2NvcGUgPSRyb290U2NvcGU7IFxyXG4gICAgICAgdGhpcy5SZXN0QXBpU2VydmljZSA9IFJlc3RBcGlTZXJ2aWNlO1xyXG4gICAgfVxyXG5cclxuICAgc3RhdGljICRpbmplY3QgPSBbJyRxJywnJHJvb3RTY29wZScsJ1Jlc3RBcGlTZXJ2aWNlJ107XHJcblxyXG4gICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgZ2V0Q29kZXNEZXRhaWxPYmplY3RCeU5hbWVcclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuIFxyXG4gIGdldENvZGVzRGV0YWlsT2JqZWN0QnlOYW1lIChjb2RlX2hlYWRfbmFtZSxjb2RlX25hbWVfaWQsbGFuZyxieVZhbHVlKSB7XHJcbiAgXHJcbiAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7ICAgICAgICAgICAgICAgICAgICBcclxuICAgIGlmIChieVZhbHVlPT11bmRlZmluZWQpIGJ5VmFsdWU9ZmFsc2U7XHJcbiAgXHJcbiAgICBpZiAodGhpcy5saXN0T2ZDb2Rlc0J5TmFtZVtjb2RlX2hlYWRfbmFtZStsYW5nXSE9IHVuZGVmaW5lZClcclxuICAgICAge1xyXG4gICAgICAgIGZvciAodmFyIGk9MDtpPHRoaXMubGlzdE9mQ29kZXNCeU5hbWVbY29kZV9oZWFkX25hbWUrbGFuZ10uY29kZXNMaXN0Lmxlbmd0aDtpKyspXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaWYgKGJ5VmFsdWUpXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICBpZiAodGhpcy5saXN0T2ZDb2Rlc0J5TmFtZVtjb2RlX2hlYWRfbmFtZStsYW5nXS5jb2Rlc0xpc3RbaV0udmFsdWU9PWNvZGVfbmFtZV9pZCkgZGVmZXJyZWQucmVzb2x2ZSh0aGlzLmxpc3RPZkNvZGVzQnlOYW1lW2NvZGVfaGVhZF9uYW1lK2xhbmddLmNvZGVzTGlzdFtpXSk7XHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICBpZiAodGhpcy5saXN0T2ZDb2Rlc0J5TmFtZVtjb2RlX2hlYWRfbmFtZStsYW5nXS5jb2Rlc0xpc3RbaV0uaWQ9PWNvZGVfbmFtZV9pZCkgZGVmZXJyZWQucmVzb2x2ZSh0aGlzLmxpc3RPZkNvZGVzQnlOYW1lW2NvZGVfaGVhZF9uYW1lK2xhbmddLmNvZGVzTGlzdFtpXSk7IFxyXG4gICAgICAgICAgICB9ICAgICAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIGVsc2VcclxuICAgIHtcclxuICAgICAgXHJcbiAgICAgICB0aGlzLmdldENvZGVzQnlOYW1lKGNvZGVfaGVhZF9uYW1lLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIGZvciAodmFyIGo9MDtqPHRoaXMubGlzdE9mQ29kZXNCeU5hbWVbY29kZV9oZWFkX25hbWUrbGFuZ10uY29kZXNMaXN0Lmxlbmd0aDtqKyspXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIGlmIChieVZhbHVlKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxpc3RPZkNvZGVzQnlOYW1lW2NvZGVfaGVhZF9uYW1lK2xhbmddLmNvZGVzTGlzdFtqXS52YWx1ZT09Y29kZV9uYW1lX2lkKSAgZGVmZXJyZWQucmVzb2x2ZSh0aGlzLmxpc3RPZkNvZGVzQnlOYW1lW2NvZGVfaGVhZF9uYW1lK2xhbmddLmNvZGVzTGlzdFtqXSk7XHJcbiAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgaWYgKHRoaXMubGlzdE9mQ29kZXNCeU5hbWVbY29kZV9oZWFkX25hbWUrbGFuZ10uY29kZXNMaXN0W2pdLmlkPT1jb2RlX25hbWVfaWQpICBkZWZlcnJlZC5yZXNvbHZlKHRoaXMubGlzdE9mQ29kZXNCeU5hbWVbY29kZV9oZWFkX25hbWUrbGFuZ10uY29kZXNMaXN0W2pdKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgaW1wbGVtZW50IGxhdGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICBcclxuICAgIH1cclxuICBcclxuICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICB9O1xyXG4gIFxyXG4gIFxyXG5cclxuXHRnZXRDb2RlcyAoY29kZV9pZCxsYW5ndWFnZSl7XHJcbiAgICAgICAgdmFyIGNvZGVJbmRleD0tMTtcclxuICAgICAgICBpZiAoY29kZV9pZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgICAgICAgICAvL2lmICghdGhpcy5saXN0T2ZDb2Rlc0J5SWQuaGFzT3duUHJvcGVydHkoY29kZV9pZC50b1N0cmluZygpK2xhbmd1YWdlKSkge1xyXG5cdFx0XHRpZiAodHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHVybCA9ICcuLi9hcGkvZ2V0LWNvZGVzLWRldGFpbC1ieWlkbGFuZy8nKyBjb2RlX2lkKycvJytsYW5ndWFnZSsnLyc7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmV0cml2ZWRMaXN0ID0ge3VuaXF1ZV9pZDogY29kZV9pZC50b1N0cmluZygpK2xhbmd1YWdlLCBpZDogY29kZV9pZCxsYW5nOiBsYW5ndWFnZSwgY29kZXNMaXN0OiByZXNwb25zZS5kYXRhfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0T2ZDb2Rlc0J5SWRbY29kZV9pZC50b1N0cmluZygpK2xhbmd1YWdlXSA9IHJldHJpdmVkTGlzdDsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiBhbmd1bGFyLmNvcHkodGhpcy5saXN0T2ZDb2Rlc0J5SWRbY29kZV9pZC50b1N0cmluZygpK2xhbmd1YWdlXS5jb2Rlc0xpc3QpLCBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1c30pOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7ZGF0YTpyZXNwb25zZS5kYXRhLCBzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7IC8vVE9ETyAtIGNoZWNrIGlmIHRoaXMgbmVlZHMgdG8gYmUgbXNnOiByZXNwb25zZS5tc2dcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICBcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IGFuZ3VsYXIuY29weSh0aGlzLmxpc3RPZkNvZGVzQnlJZFtjb2RlX2lkLnRvU3RyaW5nKCkrbGFuZ3VhZ2VdLmNvZGVzTGlzdCksc3RhdHVzOjIwMH0pO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHRcclxuICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG5cdCB9O1xyXG4gICAgIFxyXG4gICAgIFxyXG4gICAgIC8vTUlHT1IgTk9WSVxyXG4gICAgICBnZXRDb2Rlc0J5TmFtZSAoY29kZV9uYW1lLGxhbmd1YWdlKXsgICAgICAgICAgICAgXHJcbiAgICAgICAgIGlmIChjb2RlX25hbWUgIT0gdW5kZWZpbmVkKSB7XHJcbiBcclxuICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmxpc3RPZkNvZGVzQnlOYW1lLmhhc093blByb3BlcnR5KGNvZGVfbmFtZStsYW5ndWFnZSkpICBcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdmFyICB1cmwgPSAnLi4vYXBpL2dldC1jb2Rlcy1ieS1uYW1lLycrIGNvZGVfbmFtZSsnLycrbGFuZ3VhZ2UrJy8nOyBcclxuICAgICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCwgdHJ1ZSkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXRyaXZlZExpc3QgPSB7dW5pcXVlX2lkOiBjb2RlX25hbWUrbGFuZ3VhZ2UsIG5hbWU6IGNvZGVfbmFtZSxsYW5nOiBsYW5ndWFnZSwgY29kZXNMaXN0OiByZXNwb25zZS5kYXRhfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0T2ZDb2Rlc0J5TmFtZVtjb2RlX25hbWUrbGFuZ3VhZ2VdID0gcmV0cml2ZWRMaXN0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiB0aGlzLmxpc3RPZkNvZGVzQnlOYW1lW2NvZGVfbmFtZStsYW5ndWFnZV0uY29kZXNMaXN0ICwgc3RhdHVzOiByZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe2RhdGE6cmVzcG9uc2UuZGF0YSwgc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOy8vVE9ETyAtIGNoZWNrIGlmIHRoaXMgbmVlZHMgdG8gYmUgbXNnOiByZXNwb25zZS5tc2dcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogdGhpcy5saXN0T2ZDb2Rlc0J5TmFtZVtjb2RlX25hbWUrbGFuZ3VhZ2VdLmNvZGVzTGlzdCxzdGF0dXM6MjAwfSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgfTtcclxuICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICB9OyAgICBcclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgICAgXHJcblx0Z2V0Q29kZXNWYWx1ZSAoY29kZV9pZCxsYW5ndWFnZSxjb2RlSXRlbSx0eXBlKXtcclxuICAgICB2YXIgbGlzdE9mQ29kZXMgPSB7fVxyXG4gICAgIHZhciByZXR2YWw9Y29kZUl0ZW07XHJcbiAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7ICAgIFxyXG4gICAgIGdldENvZGVzKGNvZGVfaWQsbGFuZ3VhZ2UpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzPT0yMDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RPZkNvZGVzID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8bGlzdE9mQ29kZXMubGVuZ3RoO2krKylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGU9PTEpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpc3RPZkNvZGVzW2ldLmlkID09IGNvZGVJdGVtKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBsaXN0T2ZDb2Rlc1tpXS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGlzdE9mQ29kZXNbaV0udmFsdWUgPT0gY29kZUl0ZW0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IGxpc3RPZkNvZGVzW2ldLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUocmV0dmFsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgIH0pO1xyXG4gICAgIC8vcmV0dXJuIHJldHZhbDtcclxuICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICBcclxuICAgIFxyXG4gIH1cclxuXHRnZXRDb2Rlc1ZhbHVlQnlOYW1lIChjb2RlX25hbWUsbGFuZ3VhZ2UsY29kZUl0ZW0sdHlwZSl7XHJcbiAgICAgdmFyIGxpc3RPZkNvZGVzID0ge31cclxuICAgICB2YXIgcmV0dmFsPWNvZGVJdGVtO1xyXG4gICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyAgICBcclxuICAgICB0aGlzLmdldENvZGVzQnlOYW1lKGNvZGVfbmFtZSxsYW5ndWFnZSkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXM9PTIwMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdE9mQ29kZXMgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxsaXN0T2ZDb2Rlcy5sZW5ndGg7aSsrKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZT09MSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaXN0T2ZDb2Rlc1tpXS5pZCA9PSBjb2RlSXRlbSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gbGlzdE9mQ29kZXNbaV0ubmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpc3RPZkNvZGVzW2ldLnZhbHVlID09IGNvZGVJdGVtKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBsaXN0T2ZDb2Rlc1tpXS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHJldHZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICB9KTtcclxuICAgICAvL3JldHVybiByZXR2YWw7XHJcbiAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgXHJcbiAgICBcclxuICB9XHJcbiAgICBcclxuXHRnZXRDb2Rlc0hlYWRMYW5nIChpZCwgbGFuZyl7XHJcbiAgICBcclxuXHRcdHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuXHRcdFxyXG5cdFx0ICBsZXQgdXJsID0gJy4uL2FwaS9nZXQtY29kZWhlYWQtbGFuZy8nK2lkKycvJyArIGxhbmcgKyAnLyc7XHJcblx0XHRcdFx0XHQgXHJcblx0XHQgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuXHRcdFx0XHQgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdCBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOmRhdGEsIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzfSk7XHJcblx0XHRcdFx0XHQgICBcclxuXHRcdFx0XHQgIH0gZWxzZSB7XHJcblx0XHRcdFx0XHQgIGRlZmVycmVkLnJlamVjdCh7ZGF0YTp7bXNnOlwiRG93bmxvYWQgZmFpbGVkICEgXCIrcmVzcG9uc2Uuc3RhdHVzfSwgc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG5cdFx0XHRcdCAgfVxyXG5cdFx0XHRcdCAgICAgICAgIFxyXG4gICAgICB9KTtcclxuICBcclxuICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gIH1cclxuICBcclxuICBDb2Rlc1Bvc3QgKGNvZGVIZWFkKXtcclxuICAgIFxyXG4gICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgbGV0IGxhbmc9dGhpcy4kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZ1xyXG4gICAgbGV0IHVybCA9ICcuLi9hcGkvY29kZXMvJytsYW5nKycvJztcclxuICAgIFxyXG4gICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxjb2RlSGVhZCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ZXJyb3IsIHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gIH1cclxuICBDb2Rlc1B1dCAoY29kZUhlYWQpe1xyXG4gICAgXHJcbiAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgbGV0IGxhbmc9dGhpcy4kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZ1xyXG4gICAgbGV0IHVybCA9ICcuLi9hcGkvY29kZXMvJytsYW5nKycvJztcclxuICAgIFxyXG4gICAgdGhpcy5SZXN0QXBpU2VydmljZS5wdXQodXJsLGNvZGVIZWFkKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEpIHtcclxuICAgICAgICAgICAgICAgICByZXNwb25zZS5qc29uKCkudGhlbihkYXRhPT57XHJcbiAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6ZGF0YSwgc3RhdHVzOiByZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzpkYXRhLCBzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgfSk7XHJcbiAgXHJcbiAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICB9XHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgIENvZGVzR2V0IChsYW5nKXtcclxuICAgIFxyXG4gICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgbGV0IHVybCA9ICcuLi9hcGkvY29kZXMvJytsYW5nKycvJztcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOnJlc3BvbnNlLmRhdGEsIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzfSk7XHJcblxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7ZGF0YTp7bXNnOlwiRG93bmxvYWQgZmFpbGVkICAtPiBDb2Rlc0dldCAgISBcIityZXNwb25zZS5zdGF0dXN9LCBzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gIH1cclxuICBcclxuICAgQ29kZXNHZXRCeUlkIChpZCxsYW5nKXtcclxuICAgIFxyXG4gICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgIGxldCB1cmwgPSAnLi4vYXBpL2NvZGVzLWhlYWQvJytpZCsnLycrbGFuZysnLyc7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOnJlc3BvbnNlLmRhdGEsIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe2RhdGE6e21zZzpcIkRvd25sb2FkIGZhaWxlZCAgLT4gQ29kZXNHZXRCeUlkICAhIFwiK3Jlc3BvbnNlLnN0YXR1c30sIHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICB9KTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgfVxyXG4gICBcclxuICBDb2Rlc0xpc3QgKCl7XHJcbiAgICBcclxuICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgICB2YXIgbGFuZz10aGlzLiRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG5cclxuICAgICAgaWYgKHRoaXMuY29kZXNMaXN0Lmxlbmd0aD09MClcclxuICAgICAge1xyXG4gICAgICAgIHRoaXMuZ2V0dGluZ0NvZGVMaXN0ID0gdHJ1ZTtcclxuICAgICAgICBsZXQgdXJsID0gJy4uL2FwaS9jb2Rlcy1saXN0LycrbGFuZysnLyc7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29kZXNMaXN0ID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldHRpbmdDb2RlTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHRoaXMuY29kZXNMaXN0LCBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgZWxzZSAgZGVmZXJyZWQucmVqZWN0KHtkYXRhOnttc2c6XCJEb3dubG9hZCBmYWlsZWQgIC0+IENvZGVzTGlzdCAgISBcIityZXNwb25zZS5zdGF0dXN9LCBzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgIH0pO1xyXG4gICAgICAgXHJcbiAgICAgIH0gZWxzZSAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogdGhpcy5jb2Rlc0xpc3QsIHN0YXR1czogMjAwfSk7XHJcbiAgICBcclxuICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgfVxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gICBDb2Rlc0RldGFpbHNMaXN0IChpZCl7XHJcbiAgICBcclxuICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgXHJcbiAgICAgIHZhciBsYW5nPXRoaXMuJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgIGxldCB1cmwgPSAnLi4vYXBpL2NvZGVzLWRldGFpbC1saXN0LycraWQrJy8nK2xhbmcrJy8nO1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLCBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHtkYXRhOnttc2c6XCJEb3dubG9hZCBmYWlsZWQgIC0+IENvZGVzRGV0YWlsc0xpc3QgICEgXCIrcmVzcG9uc2Uuc3RhdHVzfSwgc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gIH1cclxuICBcclxuICBcclxuICAgYWRkVXBkYXRlQ29kZXNEZXRhaWxzICh0eXBlLGNvZGVzRGV0YWlsTGFuZyl7XHJcbiAgICBcclxuICAgIC8vZGVidWdnZXJcclxuICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgIHZhciB1cmwgPSAnLi4vYXBpL3NhdmUtY29kZXMtZGV0YWlsLyc7XHJcbiAgICB2YXIgaHR0cF9tZXRob2Q9XCJcIjtcclxuICAgIGlmICh0eXBlPT1cIk5ld1wiKSB7XHJcbiAgICAgICAgICAgIC8vY29kZVxyXG4gICAgICAgICAgICBodHRwX21ldGhvZD1cIlBPU1RcIjsgICAgIFxyXG4gICAgfSBlbHNlIHsgXHJcbiAgICAgIHZhciBpZD0gY29kZXNEZXRhaWxMYW5nLmlkO1xyXG4gICAgICBodHRwX21ldGhvZD1cIlBVVFwiO1xyXG4gICAgICB1cmw9dXJsK2lkKycvJztcclxuICAgIH1cclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5zZW5kKHVybCxodHRwX21ldGhvZCxjb2Rlc0RldGFpbExhbmcpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMSAmJiB0eXBlPT1cIk5ld1wiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7bXNnOlwiTmV3IGNvZGUgaXRlbSBjcmVhdGVkIHN1Y2Nlc3NmdWx5ICFcIixzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgfWVsc2UgaWYgKHJlc3BvbnNlLnN0YXR1cz09MjAwICYmIHR5cGU9PVwiRWRpdFwiKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBFZGl0IHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe21zZzpcIkNvZGUgaXRlbSBjaGFuZ2VkIHN1Y2Nlc3NmdWx5IVwiLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAgICAgIC8vIGlmIG5vdCBzdWNjZXNzZnVsLCBiaW5kIGVycm9ycyB0byBlcnJvciB2YXJpYWJsZXNcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzpcIlNhdmUgZmFpbGVkICEgXCIrcmVzcG9uc2Uuc3RhdHVzLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICB9XHJcbiAgXHJcbiAgIHNhdmVDb2Rlc0RldGFpbHMgKGNvZGVIZWFkSWQsY29kZXNEZXRhaWxzLGxhbmcpe1xyXG4gICAgXHJcbiAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgICAgIHZhciB1cmwgPSAnLi4vYXBpL3NhdmUtY29kZXMtZGV0YWlsLyc7XHJcbiAgICAgICAgICBcclxuICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJQT1NUXCI7XHJcbiAgICAgICAgdXJsPXVybCtjb2RlSGVhZElkKycvJytsYW5nKycvJztcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgdmFyIGluc3RhbmNlID0gdGhpcztcclxuICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2Uuc2VuZCh1cmwsaHR0cF9tZXRob2QsY29kZXNEZXRhaWxzKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKGRhdGE9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9yZWZyZXNoIHNwZWNpZmljIGNvZGVzIGxpc3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29kZV9uYW1lID0gZGF0YS5kYXRhLmNvZGVfaGVhZF9uYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGVfbmFtZT09dW5kZWZpbmVkIHx8IGNvZGVfbmFtZT09bnVsbCkgY29kZV9uYW1lPScnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmxpc3RPZkNvZGVzQnlJZFtjb2RlSGVhZElkLnRvU3RyaW5nKCkrbGFuZ10gPSB7aWQ6Y29kZUhlYWRJZCx1bmlxdWVfaWQ6Y29kZUhlYWRJZCtsYW5nLGxhbmc6bGFuZyxjb2Rlc0xpc3Q6ZGF0YS5kYXRhLmNvZGVzTGlzdH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UubGlzdE9mQ29kZXNCeU5hbWVbY29kZV9uYW1lLnRvU3RyaW5nKCkrbGFuZ10gPSB7bmFtZTpjb2RlX25hbWUsdW5pcXVlX2lkOmNvZGVfbmFtZS50b1N0cmluZygpK2xhbmcsbGFuZzpsYW5nLGNvZGVzTGlzdDpkYXRhLmRhdGEuY29kZXNMaXN0fTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOmFuZ3VsYXIuY29weShkYXRhLmRhdGEuY29kZSksbXNnOmRhdGEubXNnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBub3Qgc3VjY2Vzc2Z1bCwgYmluZCBlcnJvcnMgdG8gZXJyb3IgdmFyaWFibGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzpkYXRhLm1zZyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gIH1cclxuICBcclxuXHJcbiAgIGdldEFsbENvZGVzQW5kRGV0YWlscyAoKXsgICAvLyBNSUdPUiBOT1ZPXHJcbiAgICBcclxuICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgICAgICBsZXQgdXJsID0gJy4uL2FwaS9nZXQtY29kZXMtZGV0YWlsLyc7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzPT09MjAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOnJlc3BvbnNlLmRhdGEsIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzfSk7XHJcblxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7ZGF0YTp7bXNnOlwiRG93bmxvYWQgZmFpbGVkICAtPiBnZXRBbGxDb2Rlc0FuZERldGFpbHMgICEgXCIrcmVzcG9uc2Uuc3RhdHVzfSwgc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgIH0pO1xyXG4gICAgICBcclxuICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICB9XHJcbiAgIFxyXG4gICBcclxuICAgZ2V0Q29kZXNEZXRhaWxzIChpZCxsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmcgKXtcclxuICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IHVybCA9ICcuLi9hcGkvZ2V0LWNvZGVzLWRldGFpbC1ieWNvZGVpZGxhbmcvJytpZCsnLycrbGFuZysnLyc7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzPT09MjAxKSB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6cmVzcG9uc2UuZGF0YSwgc3RhdHVzOiByZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7ZGF0YTp7bXNnOlwiRG93bmxvYWQgZmFpbGVkICAtPiBnZXRDb2Rlc0RldGFpbHMgICEgXCIrcmVzcG9uc2Uuc3RhdHVzfSwgc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgIH0pO1xyXG4gICAgICAgICBcclxuICAgICAgIFxyXG4gICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgfSAgICAgICAgICAgICAgXHJcblx0IFxyXG4gICAgIFxyXG4gICAgZ2V0SGFyZENvZGVzIChjb2RlSWQpeyAgXHJcblx0XHRcdHZhciBwb3MgPSB0aGlzLmxpc3RPZkNvZGVzQnlJZC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZihjb2RlSWQpO1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5saXN0T2ZDb2Rlc0J5SWRbcG9zXS5jb2Rlc0xpc3Q7XHJcblx0XHQgIH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IENvZGVzU2VydmljZTsiLCIndXNlIHN0cmljdCc7XG4vKlxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXhjZXB0aW9uSGFuZGxlcntcblxuICAgIGNvbnN0cnVjdG9yICgkZGVsZWdhdGUsTWVzc2FnaW5nU2VydmljZSxleGNlcHRpb24sY2F1c2UpXG4gICAge1xuICAgICAgIFxuICAgICAgICB0aGlzLk1lc3NhZ2luZ1NlcnZpY2UgPSBNZXNzYWdpbmdTZXJ2aWNlO1xuICAgICAgICB0aGlzLiRkZWxlZ2F0ZSA9ICRkZWxlZ2F0ZTtcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gJyc7XG4gICAgICAgIHRoaXMuc3RhY2s9Jyc7XG4gICAgICAgIFxuICAgIH1cbiAgICBcbiAgICBzdGF0aWMgJGluamVjdCA9IFsnJGRlbGVnYXRlJywnTWVzc2FnaW5nU2VydmljZScsJ2V4Y2VwdGlvbicsJ2NhdXNlJ107XG4gICAgXG4gICAgc3RhdGljIFByb2Nlc3NEZWNvcmF0b3IoZXhjZXB0aW9uLGNhdXNlKVxuICAgIHtcbiAgICAgICAgaWYgKHR5cGVvZihleGNlcHRpb24pIT0nc3RyaW5nJylcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZiAoJ21lc3NhZ2UnIGluIGV4Y2VwdGlvbil7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlID0gZXhjZXB0aW9uLm1lc3NhZ2UgKyAnIChjYXVzZWQgYnkgJyArIGNhdXNlICsgJyknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nY2F1c2VkIGJ5ICcgKyBjYXVzZTsgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGlmICgnc3RhY2snIGluIGV4Y2VwdGlvbil7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFjayA9IGV4Y2VwdGlvbi5zdGFjayArICcgKGNhdXNlZCBieSAnICsgY2F1c2UgKyAnKSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZT1leGNlcHRpb24rJyBjYXVzZWQgYnkgJyArIGNhdXNlO1xuICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMuJGRlbGVnYXRlKGV4Y2VwdGlvbiwgY2F1c2UpO1xuICAgICAgICAgICAgIFxuICAgICAgICAgICAgdGhpcy5NZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2VGcm9tQ3VzdG9tKHRoaXMubWVzc2FnZSx0aGlzLnN0YWNrLCdlcnJvcicsJ2Zyb250ZW5kJyk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHJldHVybiBuZXcgZXhjZXB0aW9uSGFuZGxlcigkZGVsZWdhdGUsTWVzc2FnaW5nU2VydmljZSxleGNlcHRpb24sY2F1c2UpO1xuICAgIH1cblxuLy8uZGVjb3JhdG9yKCckZXhjZXB0aW9uSGFuZGxlcicsWyckZGVsZWdhdGUnLCdNZXNzYWdpbmdTZXJ2aWNlJyxmdW5jdGlvbigkZGVsZWdhdGUsTWVzc2FnaW5nU2VydmljZSkge1xuIFxuICBcblxufTtcbiovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBleGNlcHRpb25IYW5kbGVyKCRkZWxlZ2F0ZSxNZXNzYWdpbmdTZXJ2aWNlKXtcblxuICAgIHJldHVybiBmdW5jdGlvbiAoZXhjZXB0aW9uLGNhdXNlKVxuICAgIHtcblxuICAgICAgICB2YXIgbWVzc2FnZSA9ICcnO1xuICAgICAgICB2YXIgc3RhY2s9Jyc7XG4gICAgICAgIGlmICh0eXBlb2YoZXhjZXB0aW9uKSE9J3N0cmluZycpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWYgKCdtZXNzYWdlJyBpbiBleGNlcHRpb24pe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBleGNlcHRpb24ubWVzc2FnZSArICcgKGNhdXNlZCBieSAnICsgY2F1c2UgKyAnKSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBtZXNzYWdlPSdjYXVzZWQgYnkgJyArIGNhdXNlOyBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgaWYgKCdzdGFjaycgaW4gZXhjZXB0aW9uKXtcbiAgICAgICAgICAgICAgICBzdGFjayA9IGV4Y2VwdGlvbi5zdGFjayArICcgKGNhdXNlZCBieSAnICsgY2F1c2UgKyAnKSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U9ZXhjZXB0aW9uKycgY2F1c2VkIGJ5ICcgKyBjYXVzZTtcbiAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICAkZGVsZWdhdGUoZXhjZXB0aW9uLCBjYXVzZSk7XG4gICAgICAgICAgICAgXG4gICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2VGcm9tQ3VzdG9tKG1lc3NhZ2Usc3RhY2ssJ2Vycm9yJywnZnJvbnRlbmQnKTtcbiAgICAgICAgICAgIFxuICAgIH1cbn07XG4vLy5kZWNvcmF0b3IoJyRleGNlcHRpb25IYW5kbGVyJyxbJyRkZWxlZ2F0ZScsJ01lc3NhZ2luZ1NlcnZpY2UnLGZ1bmN0aW9uKCRkZWxlZ2F0ZSxNZXNzYWdpbmdTZXJ2aWNlKSB7XG5cbmV4Y2VwdGlvbkhhbmRsZXIuJGluamVjdCA9IFsnJGRlbGVnYXRlJywnTWVzc2FnaW5nU2VydmljZSddO1xuICBcblxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBHcmlkc3RlclNlcnZpY2UgKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4ndXNlIHN0cmljdCc7XHJcblxyXG5jbGFzcyBHcmlkc3RlclNlcnZpY2V7XHJcblxyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoJHEsJHJvb3RTY29wZSxNZXNzYWdpbmdTZXJ2aWNlLEthdGFseW9TdGF0ZU1hbmFnZXIsZHJhZ3VsYVNlcnZpY2UsJHRpbWVvdXQpXHJcbiAge1xyXG4gICAgdmFyIG1lPXRoaXNcclxuICAgIHRoaXMuZGVsZXRlRWxlbWVudCA9IHRoaXMuZGVsZXRlRWxlbWVudC5iaW5kKHRoaXMpO1xyXG4gICAgIHRoaXMuc2V0Q29uZmlybURlbGV0ZUVsZW1lbnQgPSB0aGlzLnNldENvbmZpcm1EZWxldGVFbGVtZW50LmJpbmQodGhpcyk7XHJcbiAgICAgIHRoaXMuZ2V0Q29uZmlybURlbGV0ZUVsZW1lbnQgPSB0aGlzLmdldENvbmZpcm1EZWxldGVFbGVtZW50LmJpbmQodGhpcyk7XHJcbiAgICAgICB0aGlzLmNoYW5nZUNvbmZpcm1EZWxldGVFbGVtZW50ID0gdGhpcy5jaGFuZ2VDb25maXJtRGVsZXRlRWxlbWVudC5iaW5kKHRoaXMpO1xyXG4gXHJcbiBcclxuICAgIHRoaXMuJHEgPSAkcTtcclxuICAgIHRoaXMuJHJvb3RTY29wZSA9ICRyb290U2NvcGU7XHJcbiAgICB0aGlzLk1lc3NhZ2luZ1NlcnZpY2UgPSBNZXNzYWdpbmdTZXJ2aWNlO1xyXG4gICAgdGhpcy5kcmFndWxhU2VydmljZSA9IGRyYWd1bGFTZXJ2aWNlOyBcclxuICAgIHRoaXMua3NtID0gS2F0YWx5b1N0YXRlTWFuYWdlcjtcclxuICAgIHRoaXMuJHRpbWVvdXQgPSAkdGltZW91dDtcclxuICAgIHRoaXMuc2hvd0Zvb3Rlcj1mYWxzZTtcclxuICAgIHRoaXMuZm9ybUxvY2tlZD1mYWxzZTtcclxuICAgIHRoaXMuZm9ybVZpZXdUeXBlPTE7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmllbGQ9e307XHJcbiAgICB0aGlzLnNlbGVjdGVkRmllbGRQYXJlbnQ9e1xyXG4gICAgICAgIGNvdW50QWN0aXZlOiAwXHJcbiAgICB9O1xyXG4gICAgdGhpcy5wcm9wZXJ0aWVzT3BlbmVkPWZhbHNlO1xyXG4gICAgdGhpcy5idG5TZWxlY3RlZEZpZWxkPW51bGw7XHJcbiAgICB0aGlzLmNvbmZpcm1EZWxldGVFbGVtZW50PWZhbHNlO1xyXG4gICAgdGhpcy5uYXZiYXJIZWlnaHQ9MDtcclxuICAgIHRoaXMud2lkZ2V0VG9vbGJveEl0ZW1zPXt9XHJcbiAgICB0aGlzLndpZGdldFRvb2xib3hMb2FkZWQ9e31cclxuICAgIHRoaXMucGFyZW50UmVzb3VyY2U9e31cclxuICAgIHRoaXMudG9vbGJveEl0ZW1zPVtdO1xyXG4gICAgdGhpcy50YXNrVG9vbGJveEl0ZW1zPVtdO1xyXG4gICAgdGhpcy5kcmFndWxhQ29udGFpbmVycz17fTtcclxuICAgIHRoaXMudGFza1Rvb2xib3hMb2FkZWQ9ZmFsc2U7XHJcbiAgICB0aGlzLnNob3dPdmVybGF5ID0gZmFsc2U7XHJcbiAgICB0aGlzLmRyYWd1bGFTZXR1cENvbXBsZXRlZD17fTtcclxuICAgIHRoaXMuZm9ybVZpZXdUeXBlQ291bnRlclRhc2sgPSAwO1xyXG4gICAgdGhpcy5mb3JtVmlld1R5cGVDb3VudGVyRHMgPSAwO1xyXG4gICAgdGhpcy50YXNrT3BlbmVkSW5OZXdQYWdlPWZhbHNlO1xyXG4gICAgdGhpcy5vcGVuVGFza1R5cGU9XCJjdXJyZW50XCI7XHJcbiAgICB0aGlzLmJvZHlCZ0NvbG9yPVwiXCJcclxuICAgIHRoaXMucmVzb3VyY2VGb3JtVmVyc2lvbj17fVxyXG4gICAgdGhpcy5jb3B5VXVpZD1mYWxzZVxyXG4gICAgdGhpcy50YXNrRGF0YUluTmV3UGFnZSA9IHsnbG9jYWxWYXJzJzpudWxsLCd0YXNrRGVmaW5pdGlvbic6bnVsbH07XHJcbiAgICB0aGlzLnBhZ2VUb29sYm94SXRlbXM9W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aWQ6MSxMYWJlbDonU3RhcnQgdGFzayB3aWRnZXQnLFR5cGU6J2luaXQnLEVsZW1lbnRUeXBlOidpbml0JyxGYWNzczonZmEgZmEtcm9ja2V0JyxQcmVzZW50YXRpb25JZDpudWxsLExvY2tlZDpmYWxzZSxQcmVzZW50YXRpb25MYW5nSWQ6bnVsbCxJdGVtSWQ6IG51bGwsd0l0ZW1WYWx1ZTogbnVsbCxUYWJJbmRleDoxMDAsY29sOiAwLHJvdzogMCxTaXplWTogNSxTaXplWDogMTIsIEl0ZW1WYWx1ZTogbnVsbCxTYXZlZDogZmFsc2UsUmVxdWlyZWQ6IHRydWUsUmVsYXRlZDogbnVsbCxTZWFyY2hUZXh0Om51bGwsIE5hbWU6ICdTdGFydCB0YXNrJyxDb2RlSWQ6IDAscG9wdWxhdGVUeXBlOiBudWxsLFN0YXR1czonQWN0aXZlJyxwYXJlbnRFbGVtZW50SWQ6IG51bGwsRXJyb3JNc2c6J0VudGVyICcsRGJ0eXBlOlwibm9uZVwifSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lkOjIsTGFiZWw6J0V4ZWN1dGUgdGFzayB3aWRnZXQnLFR5cGU6J3RsaXN0JyxFbGVtZW50VHlwZTondGxpc3QnLEZhY3NzOidmYSBmYS1jb2cnLFByZXNlbnRhdGlvbklkOm51bGwsUHJlc2VudGF0aW9uTGFuZ0lkOm51bGwsTG9ja2VkOmZhbHNlLEl0ZW1JZDogbnVsbCwgSXRlbVZhbHVlOiBudWxsLFNhdmVkOiBmYWxzZSxSZXF1aXJlZDogdHJ1ZSxSZWxhdGVkOiBudWxsLFNpemVYOiA2LFNlYXJjaFRleHQ6IG51bGwsIE5hbWU6ICdXaWRnZXQnLENvZGVJZDogMCxwb3B1bGF0ZVR5cGU6IG51bGwscGFyZW50RWxlbWVudElkOiBudWxsLEVycm9yTXNnOidFbnRlciBlcnJvciBtZXNzYWdlJyxTdGF0dXM6J0FjdGl2ZScsRGJ0eXBlOlwibm9uZVwiLFRhYkluZGV4OjEwMH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpZDozLExhYmVsOidIZWFkZXInLFR5cGU6J2hlYWRlcicsRWxlbWVudFR5cGU6J2hlYWRlcicsRmFjc3M6J2ZhIGZhLWhlYWRlcicsUHJlc2VudGF0aW9uSWQ6bnVsbCwgUHJlc2VudGF0aW9uTGFuZ0lkOm51bGwsRm9ybVR5cGU6JycsU2hvd0ZpZWxkOnRydWUsICBVc2VEZWZhdWx0OmZhbHNlLCBJdGVtSWQ6IG51bGwsIHNJdGVtVmFsdWU6IG51bGwsSXRlbVZhbHVlOiBudWxsLFNhdmVkOiBmYWxzZSxSZXF1aXJlZDogdHJ1ZSxSZWxhdGVkOiBudWxsLFNlYXJjaFRleHQ6IG51bGwsIERidHlwZTpcIm5vbmVcIixOYW1lOiAnSGVhZGVyICcsQ29kZUlkOiAwLFN0YXR1czonQWN0aXZlJyxFcnJvck1zZzonRW50ZXInfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xyXG4gICAgdGhpcy5jb2x1bW4gPSB7aWQ6bnVsbCxPcmRlcjoyLERpcmVjdGl2ZU5hbWU6J2t0R3JpZENvbHVtbicsQW5ndWxhckRpcmVjdGl2ZU5hbWU6J2t0LWdyaWQtY29sdW1uJyxIaWRlRnJvbVRvb2xib3g6dHJ1ZSxMYWJlbDonV2lkZ2V0JyxUeXBlOidnY29sJyxFbGVtZW50VHlwZTonZ2NvbCcsRmFjc3M6J2ZhIGZhLWNvbHVtbnMnLFByZXNlbnRhdGlvbklkOm51bGwsUHJlc2VudGF0aW9uTGFuZ0lkOm51bGwsTG9ja2VkOmZhbHNlLEl0ZW1JZDogbnVsbCwgSXRlbVZhbHVlOiBudWxsLFNhdmVkOiBmYWxzZSxSZXF1aXJlZDogdHJ1ZSxSZWxhdGVkOiBudWxsLFNpemVYOiAyNCxTZWFyY2hUZXh0OiBudWxsLCBOYW1lOiAnTGF5b3V0IGNvbHVtbicsQ29kZUlkOiAwLFBvcHVsYXRlVHlwZTogbnVsbCxQYXJlbnRFbGVtZW50SWQ6IG51bGwsRXJyb3JNc2c6J0VudGVyIGVycm9yIG1lc3NhZ2UnLERidHlwZTpcIm5vbmVcIixUYWJJbmRleDoxMDAsU2hvd0ZpZWxkOnRydWUsU3RhdHVzOidBY3RpdmUnLGxheW91dDpbXX07XHJcbiBcclxuICAgIHRoaXMucm93ID0gIHtpZDpudWxsLE9yZGVyOjEsRGlyZWN0aXZlTmFtZTona3RHcmlkUm93JyxBbmd1bGFyRGlyZWN0aXZlTmFtZTona3QtZ3JpZC1yb3cnLExhYmVsOidMYXlvdXQgY29udGFpbmVyJyxUeXBlOidyb3cnLEVsZW1lbnRUeXBlOidyb3cnLEZhY3NzOidmYSBmYS10aC1sYXJnZScsUHJlc2VudGF0aW9uSWQ6bnVsbCxMb2NrZWQ6ZmFsc2UsUHJlc2VudGF0aW9uTGFuZ0lkOm51bGwsSXRlbUlkOiBudWxsLHdJdGVtVmFsdWU6IG51bGwsVGFiSW5kZXg6MTAwLENvbDogMCxSb3c6IDAsU2l6ZVk6IDI0LFNpemVYOiAyNCwgSXRlbVZhbHVlOiBudWxsLFNhdmVkOiBmYWxzZSxSZXF1aXJlZDogdHJ1ZSxSZWxhdGVkOiBudWxsLFNlYXJjaFRleHQ6IG51bGwsIE5hbWU6ICdMYXlvdXQgY29udGFpbmVyJyxDb2RlSWQ6IDAsUG9wdWxhdGVUeXBlOiBudWxsLFBhcmVudEVsZW1lbnRJZDogbnVsbCxTaG93RmllbGQ6dHJ1ZSxFcnJvck1zZzonRW50ZXIgZXJyb3IgbWVzc2FnZScsU3RhdHVzOidBY3RpdmUnLERidHlwZTpcIm5vbmVcIixsYXlvdXQ6dGhpcy5nZXRFbXB0eUNvbHVtbigpfTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgXHJcbiAgICB0aGlzLm1lbnVfaXRlbV9pbml0aWFsID0ge2lkOm51bGwsT3JkZXI6MCxEaXJlY3RpdmVOYW1lOidrdE1lbnVJdGVtRHJvcERvd24nLEFuZ3VsYXJEaXJlY3RpdmVOYW1lOidrdC1tZW51LWl0ZW0tZHJvcGRvd24nLEhpZGVGcm9tVG9vbGJveDp0cnVlLExhYmVsOidOYXZiYXIgZHJvcGRvd24nLFR5cGU6J25hdmJhcmRkJyxFbGVtZW50VHlwZTonbmF2YmFyZGQnLEZhY3NzOidmYSBmYS1jb2x1bW5zJyxQcmVzZW50YXRpb25JZDpudWxsLFByZXNlbnRhdGlvbkxhbmdJZDpudWxsLExvY2tlZDpmYWxzZSxJdGVtSWQ6IG51bGwsIEl0ZW1WYWx1ZTogbnVsbCxTYXZlZDogZmFsc2UsUmVxdWlyZWQ6IHRydWUsUmVsYXRlZDogbnVsbCxTaXplWDogMjQsU2VhcmNoVGV4dDogbnVsbCwgTmFtZTogJ05hdmJhciBkcm9wZG93bicsQ29kZUlkOiAwLFBvcHVsYXRlVHlwZTogJ25hdmJhcnJpZ2h0JyxQYXJlbnRFbGVtZW50SWQ6IG51bGwsRXJyb3JNc2c6J0VudGVyIGVycm9yIG1lc3NhZ2UnLERidHlwZTpcIm5vbmVcIixQYXJhbXM6e0ljb246J2ZhIGZhLWNvZyd9LFRhYkluZGV4OjEwMCxTaG93RmllbGQ6dHJ1ZSxTdGF0dXM6J0FjdGl2ZScsbGF5b3V0OltdfTtcclxuICAgXHJcbiAgIFxyXG4gXHJcbiAgICAgXHJcbiAgXHJcbiAgXHJcbiAgICBcclxuICB9XHJcbiAgc3RhdGljICRpbmplY3QgPSBbJyRxJywnJHJvb3RTY29wZScsJ01lc3NhZ2luZ1NlcnZpY2UnLCdLYXRhbHlvU3RhdGVNYW5hZ2VyJywnZHJhZ3VsYVNlcnZpY2UnLCckdGltZW91dCddO1xyXG5cclxuXHJcblx0c2hvd0ZpbHRlciA9ICAoc291cmNlU2NvcGUpID0+ICB7XHJcblx0XHRcdFx0XHRsZXQgZm9ybWRhdGFsZW5ndGggPSBPYmplY3Qua2V5cyhzb3VyY2VTY29wZS5mb3JtRGF0YVswXSkubGVuZ3RoXHJcblx0XHRcdFx0XHRsZXQgZ3JpZFR5cGU9IHNvdXJjZVNjb3BlLmdyaWRUeXBlIC8vJCgkMCkuc2NvcGUoKS5ncmlkVHlwZSA6ICdkYXRhc2V0J1xyXG5cdFx0XHRcdFx0bGV0IHNmID0gc291cmNlU2NvcGUuc2VhcmNoRmlsdGVyIC8vc2VhcmNoRmlsdGVyOj0geyAgICBcIjQ0OTg4XCI6IHt9fVxyXG5cdFx0XHRcdFx0cmV0dXJuIChzb3VyY2VTY29wZS5zaG93U2VhcmNoRmlsdGVycyB8fCBzb3VyY2VTY29wZS5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSlcclxuXHR9XHJcblx0XHRcdFx0XHJcbiBcclxuICAgIGNvcHlUb0NsaXBib2FyZCh0ZXh0KXtcclxuICAgICAgXHJcbiAgICAgIHRoaXMuY29weVV1aWQgPSB0cnVlO1xyXG4gICAgICBsZXQgaW5zdGFuY2UgPSB0aGlzXHJcbiAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpLnRoZW4oIFxyXG4gICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGluc3RhbmNlLiR0aW1lb3V0KGZ1bmN0aW9uKCl7aW5zdGFuY2UuY29weVV1aWQgPSBmYWxzZTt9LDEwMDApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgICgpID0+IHsgICAgLyogY2xpcGJvYXJkIHdyaXRlIGZhaWxlZCAqL1xyXG4gICAgICAgICAgICAgIGluc3RhbmNlLk1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnQ29weSB0byBjbGlwYm9hcmQgZmFpbGVkJywnZXJyb3InKTtcclxuICAgICAgICAgICAgICBpbnN0YW5jZS4kdGltZW91dChmdW5jdGlvbigpe2luc3RhbmNlLmNvcHlVdWlkID0gZmFsc2U7fSwxMDAwKTtcclxuICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgIH0gXHJcbiAgICBzZXRCb2R5QmdDb2xvcihjb2xvcilcclxuICAge1xyXG4gICAgICB0aGlzLmJvZHlCZ0NvbG9yID0gJ2JhY2tncm91bmQtY29sb3I6Jytjb2xvcisnICFpbXBvcnRhbnQ7JztcclxuICAgfTsgIFxyXG4gICAgcmVzZXRCb2R5QmdDb2xvcigpXHJcbiAgIHtcclxuICAgICAgdGhpcy5ib2R5QmdDb2xvciA9ICcnO1xyXG4gICB9O1xyXG5cclxuXHJcblx0XHJcblx0XHRcdFx0XHJcbiAgIHNob3dIaWRlRm9vdGVyICh2YWwpXHJcbiAgIHtcclxuICAgICAgdGhpcy5zaG93Rm9vdGVyID0gdmFsO1xyXG4gICB9O1xyXG4gXHJcbiAgIHNldE92ZXJsYXkgKHZhbClcclxuICAge1xyXG4gICAgICB0aGlzLnNob3dPdmVybGF5ID0gdmFsO1xyXG4gICB9O1xyXG4gICBcclxuICAgICBnZXRPdmVybGF5ICgpXHJcbiAgIHtcclxuICAgIHJldHVybiB0aGlzLnNob3dPdmVybGF5O1xyXG4gICB9O1xyXG4gICBzZXROYXZiYXJIZWlnaHQgKHZhbClcclxuICAge1xyXG4gICAgdGhpcy5uYXZiYXJIZWlnaHQ9dmFsOyAgXHJcbiAgIH07XHJcbiAgIGdldFBhZGRpbmdGb3JCb2R5ICgpXHJcbiAgIHtcclxuICAgIHJldHVybiB7J3BhZGRpbmctdG9wJzoodGhpcy5uYXZiYXJIZWlnaHQtOCkrJ3B4J307IFxyXG4gICB9O1xyXG4gICAgZ2V0VG9wRm9yU3RpY2t5IChvZmZzZXQsaW1wb3J0YW50KVxyXG4gICAgXHJcbiAgIHtcclxuICAgIHZhciBzdHlsZSA9ICh0aGlzLm5hdmJhckhlaWdodCtvZmZzZXQpKydweCc7XHJcbiAgICBpZiAoaW1wb3J0YW50KSBzdHlsZSA9IHN0eWxlICsgJyAhaW1wb3J0YW50JztcclxuICAgIHJldHVybiB7J3RvcCc6c3R5bGV9O1xyXG4gIFxyXG4gICB9O1xyXG4gICAgY2FsY1RvcEZvckV4dGVuZGVkUHJvcGVydGllcyhlbGVtZW50KVxyXG4gICAge1xyXG4gICAgICBcclxuICAgICAgdmFyIG9mZnNldFRvcCA9IGVsZW1lbnQub2Zmc2V0VG9wO1xyXG4gICAgICBcclxuICAgICAgcmV0dXJuIHsndG9wJzoob2Zmc2V0VG9wKSsncHgnfTsgXHJcbiAgICAgIFxyXG4gICAgfTtcclxuICBcclxuICAgIFxyXG4gICBcclxuICBnZXRFbXB0eUNvbHVtbiAoKXtcclxuICAgICAgXHJcbiAgICAgdmFyIGVtcHR5Q29sdW1uID0gW2FuZ3VsYXIuY29weSh0aGlzLmNvbHVtbildO1xyXG4gICAgIGVtcHR5Q29sdW1uWzBdLmlkPTE7XHJcbiAgICAgcmV0dXJuIGVtcHR5Q29sdW1uO1xyXG4gIH07XHJcbiAgXHJcbiAgIFxyXG4gICAgZ2V0T3BlblRhc2tJbk5ld1BhZ2UgKClcclxuICAge1xyXG4gICAgIHJldHVybiB0aGlzLnRhc2tPcGVuZWRJbk5ld1BhZ2U7IFxyXG4gICB9O1xyXG4gICAgc2V0T3BlblRhc2tJbk5ld1BhZ2UgKHRhc2tPcGVuZWQpXHJcbiAgIHtcclxuICAgIHRoaXMudGFza09wZW5lZEluTmV3UGFnZT10YXNrT3BlbmVkO1xyXG4gICAgaWYgKCF0YXNrT3BlbmVkKSB0aGlzLm9wZW5UYXNrVHlwZT1cIlwiO1xyXG4gICB9O1xyXG4gICBcclxuICAgIGdldE9wZW5UYXNrVHlwZSAoKVxyXG4gICB7XHJcbiAgICAgcmV0dXJuIHRoaXMub3BlblRhc2tUeXBlOyBcclxuICAgfTtcclxuICAgIHNldE9wZW5UYXNrVHlwZSAob3BlblRhc2tUeXBlKVxyXG4gICB7XHJcbiAgICB0aGlzLm9wZW5UYXNrVHlwZT1vcGVuVGFza1R5cGU7ICBcclxuICAgfTtcclxuICAgZ2V0VGFza0RhdGFJbk5ld1BhZ2UgKCl7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudGFza0RhdGFJbk5ld1BhZ2U7ICBcclxuICAgfTtcclxuICAgc2V0VGFza0RhdGFJbk5ld1BhZ2UgKHRhc2tEYXRhT3BlbmVkKXtcclxuXHJcbiAgICB0aGlzLnRhc2tEYXRhSW5OZXdQYWdlPXRhc2tEYXRhT3BlbmVkOyAgXHJcbiAgIH07XHJcbiAgIGdldFRvb2xib3hUdGVtcyAoKVxyXG4gICB7XHJcbiAgICByZXR1cm4gdGhpcy50b29sYm94SXRlbXM7ICBcclxuICAgfTtcclxuICBcclxuICAgIHNldFRvb2xib3hJdGVtcyAod2lkZ2V0cyx0b29sYm94VHlwZSlcclxuXHJcbiAgIHtcclxuICAgIGlmICghdG9vbGJveFR5cGUpIHRvb2xib3hUeXBlPSdkYXRhc2V0VG9vbEJveCdcclxuICAgIHRoaXMudG9vbGJveEl0ZW1zID0gd2lkZ2V0cztcclxuICAgIGxldCB3aWRnZXQgPSB7aWQ6bnVsbH1cclxuICAgIGlmICh3aWRnZXRzLmxlbmd0aD4wKSB3aWRnZXQgPSB3aWRnZXRzWzBdXHJcbiAgICAvL2dldCByb3cgYW5kIGNvbHVtblxyXG4gICAgdGhpcy5rc20uZXhlY3V0ZUFjdGlvbih0b29sYm94VHlwZSxcInRvb2xib3hMb2FkZWRcIix7d2lkZ2V0X2lkOndpZGdldC5pZCxzdGF0ZTp0cnVlfSk7ICBcclxuICAgfTtcclxuICAgIGdldFRhc2tUb29sYm94VHRlbXMgKClcclxuICAge1xyXG4gICAgcmV0dXJuIHRoaXMudGFza1Rvb2xib3hJdGVtczsgIFxyXG4gICB9O1xyXG4gICAgIGdldFdpZGdldFRvb2xib3hJdGVtcyAocmVzb3VyY2VfdHlwZSlcclxuICAge1xyXG5cclxuICAgIGlmICh0aGlzLndpZGdldFRvb2xib3hJdGVtc1tyZXNvdXJjZV90eXBlXT09PXVuZGVmaW5lZCkgdGhpcy53aWRnZXRUb29sYm94SXRlbXNbcmVzb3VyY2VfdHlwZV09W11cclxuXHJcbiAgICByZXR1cm4gdGhpcy53aWRnZXRUb29sYm94SXRlbXNbcmVzb3VyY2VfdHlwZV07ICBcclxuICAgfTtcclxuICAgc2V0V2lkZ2V0VG9vbGJveEl0ZW1zICh3aWRnZXRzLHJlc291cmNlX3R5cGUpXHJcbiAgIHtcclxuICAgIFxyXG4gICAgbGV0IHdpZGdldCA9IHtpZDpudWxsfVxyXG4gICAgaWYgKHdpZGdldHMubGVuZ3RoPjApIHdpZGdldCA9IHdpZGdldHNbMF1cclxuICAgIHRoaXMud2lkZ2V0VG9vbGJveEl0ZW1zW3Jlc291cmNlX3R5cGVdID0gd2lkZ2V0cztcclxuICAgIHRoaXMua3NtLmV4ZWN1dGVBY3Rpb24ocmVzb3VyY2VfdHlwZStcIlRvb2xCb3hcIixcInRvb2xib3hMb2FkZWRcIix7d2lkZ2V0X2lkOndpZGdldC5pZCxzdGF0ZTp0cnVlfSk7ICBcclxuICAgfTtcclxuXHJcbiAgIHNldFRhc2tUb29sYm94SXRlbXMgKHdpZGdldHMpXHJcbiAgIHtcclxuICAgIHRoaXMudGFza1Rvb2xib3hJdGVtcyA9IHdpZGdldHM7XHJcbiAgICBsZXQgd2lkZ2V0ID0ge2lkOm51bGx9XHJcbiAgICBpZiAod2lkZ2V0cy5sZW5ndGg+MCkgd2lkZ2V0ID0gd2lkZ2V0c1swXVxyXG4gICAgdGhpcy5rc20uZXhlY3V0ZUFjdGlvbihcInRhc2tUb29sQm94XCIsXCJ0b29sYm94TG9hZGVkXCIse3dpZGdldF9pZDp3aWRnZXQuaWQsc3RhdGU6dHJ1ZX0pOyAgXHJcbiAgIH07XHJcbiAgIGdldFRvb2xib3hUZW1wbGF0ZSAoKVxyXG4gICB7XHJcbiAgICAvL2RlYnVnZ2VyXHJcbiAgICByZXR1cm4gdGhpcy50b29sYm94VGVtcGxhdGU7ICBcclxuICAgfTtcclxuICAgIGdldFRhc2tUb29sYm94VGVtcGxhdGUgKClcclxuICAge1xyXG4gICAgcmV0dXJuIHRoaXMudGFza1Rvb2xib3hUZW1wbGF0ZTsgIFxyXG4gICB9O1xyXG4gIFxyXG4gIC8qICAgICAgICAgICAgICAgICBcclxuICBSZWdpc3RlckRhdGFzZXRXaWRnZXQgICh3aWRnZXQpXHJcbiAge1xyXG4gICAgdmFyIHBvcyA9IHRoaXMudG9vbGJveEl0ZW1zLm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLkVsZW1lbnRUeXBlOyB9KS5pbmRleE9mKHdpZGdldC5FbGVtZW50VHlwZSk7XHJcbiAgICB2YXIgaW5zZXJ0ID0gZmFsc2U7XHJcbiAgICBpZiAocG9zPDApXHJcbiAgICB7XHJcbiAgICAgIHdpZGdldC5pZD10aGlzLnRvb2xib3hJdGVtcy5sZW5ndGgrMTtcclxuICAgICAgXHJcbiAgICAgIGZvciAodmFyIGo9MDtqPHRoaXMudG9vbGJveEl0ZW1zLmxlbmd0aDtqKyspXHJcbiAgICAgIHtcclxuICAgICAgaWYgKHdpZGdldC5PcmRlcjx0aGlzLnRvb2xib3hJdGVtc1tqXS5PcmRlcilcclxuICAgICAge1xyXG4gICAgICAgIHRoaXMudG9vbGJveEl0ZW1zLnNwbGljZShqLDAsd2lkZ2V0KTtcclxuICAgICAgICBpbnNlcnQgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoIWluc2VydClcclxuICAgICAgXHJcbiAgICAgIHtcclxuICAgICAgIFxyXG4gICAgICAgIHRoaXMudG9vbGJveEl0ZW1zLnB1c2god2lkZ2V0KTtcclxuICAgICAgICB0aGlzLmtzbS5leGVjdXRlQWN0aW9uKFwiZGF0YXNldFRvb2xCb3hcIixcInRvb2xib3hMb2FkZWRcIix7d2lkZ2V0X2lkOndpZGdldC5pZCxzdGF0ZTp0cnVlfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgIHtcclxuICAgICAgdGhpcy5NZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoJ0R1cGxpY2F0ZSByZWdpc3RyYXRpb24gZXJyb3IgZm9yIGRhdGFzZXQgd2lkZ2V0ICcrd2lkZ2V0LkVsZW1lbnRUeXBlKycgaW4gZGlyZWN0aXZlIC0gJyt3aWRnZXQuRGlyZWN0aXZlTmFtZSwnZXJyb3InKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgIFxyXG4gIH07XHJcbiAgXHJcbiAgICBSZWdpc3RlclRhc2tXaWRnZXQgICh3aWRnZXQpXHJcbiAge1xyXG4gICAgdmFyIHBvcyA9IHRoaXMudGFza1Rvb2xib3hJdGVtcy5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5FbGVtZW50VHlwZTsgfSkuaW5kZXhPZih3aWRnZXQuRWxlbWVudFR5cGUpO1xyXG4gICAgdmFyIGluc2VydCA9IGZhbHNlO1xyXG4gICAgaWYgKHBvczwwKVxyXG4gICAge1xyXG4gICAgICB3aWRnZXQuaWQ9dGhpcy50YXNrVG9vbGJveEl0ZW1zLmxlbmd0aCsxO1xyXG4gICAgICAgZm9yICh2YXIgaj0wO2o8dGhpcy50YXNrVG9vbGJveEl0ZW1zLmxlbmd0aDtqKyspXHJcbiAgICAgIHtcclxuICAgICAgaWYgKHdpZGdldC5PcmRlcjx0aGlzLnRhc2tUb29sYm94SXRlbXNbal0uT3JkZXIpXHJcbiAgICAgIHtcclxuICAgICAgICB0aGlzLnRhc2tUb29sYm94SXRlbXMuc3BsaWNlKGosMCx3aWRnZXQpO1xyXG4gICAgICAgIGluc2VydCA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICghaW5zZXJ0KVxyXG4gICAgICB7XHJcbiAgICAgICAgdGhpcy50YXNrVG9vbGJveEl0ZW1zLnB1c2god2lkZ2V0KTtcclxuICAgICAgICB0aGlzLmtzbS5leGVjdXRlQWN0aW9uKFwidGFza1Rvb2xCb3hcIixcInRvb2xib3hMb2FkZWRcIix7d2lkZ2V0X2lkOndpZGdldC5pZCxzdGF0ZTp0cnVlfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgIHtcclxuICAgICAgdGhpcy5NZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoJ0R1cGxpY2F0ZSByZWdpc3RyYXRpb24gZXJyb3IgZm9yIHRhc2sgd2lkZ2V0ICcrd2lkZ2V0LkVsZW1lbnRUeXBlKycgaW4gZGlyZWN0aXZlIC0gJyt3aWRnZXQuRGlyZWN0aXZlTmFtZSwnZXJyb3InKTtcclxuICAgIH1cclxuICAgIFxyXG4gIH07XHJcbiAgKi9cclxuICAgIEdldEVsZW1lbnRQcm9wZXJ0aWVzVGVtcGxhdGUgIChFbGVtZW50VHlwZSlcclxuICB7XHJcbiAgICAgdmFyIHBvcyA9IHRoaXMudG9vbGJveEl0ZW1zLm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLkVsZW1lbnRUeXBlOyB9KS5pbmRleE9mKEVsZW1lbnRUeXBlKTtcclxuICAgICBpZiAocG9zPDApXHJcbiAgICB7XHJcbiAgICAgICB0aGlzLk1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnRWxlbWVudCBwcm9wZXJ0aWVzIGVycm9yIC0gJytFbGVtZW50VHlwZSsnIG5vdCBmb3VuZCEnLCdlcnJvcicpO1xyXG4gICAgICAgcmV0dXJuICcnO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIFxyXG4gICAgICByZXR1cm4gdGhpcy50b29sYm94SXRlbXNbcG9zXS5EaXJlY3RpdmVOYW1lO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgXHJcbiAgXHJcbiAgZ2V0Rm9ybUxvY2tTdGF0dXMgKCl7XHJcbiAgICAgIHJldHVybiB0aGlzLmZvcm1Mb2NrZWQ7XHJcbiAgfVxyXG4gICBzZXRGb3JtTG9ja1N0YXR1cyAoaUZvcm1Mb2NrU3RhdHVzKXtcclxuICAgICAgdGhpcy5mb3JtTG9ja2VkPWlGb3JtTG9ja1N0YXR1cztcclxuICB9XHJcbiAgXHJcbiAgZ2V0RW1wdHlSb3cgKCl7XHJcbiAgICAgIFxyXG4gICAgIHZhciBlbXB0eVJvdyA9ICBbXHJcblx0XHRcdFx0XHR0aGlzLmdldFRvb2xib3hJdGVtc0J5SWQoMCldO1xyXG4gICAgIHJldHVybiBlbXB0eVJvdztcclxuICB9XHJcblxyXG5nZXRFbXB0eVJvd1dpdGhJZCAoZm9ybUxheW91dCl7XHJcbiAgICAgIFxyXG4gICAgIHZhciBlbXB0eVJvdyA9IGFuZ3VsYXIuY29weSh0aGlzLnJvdyk7XHJcbiAgICAgICAgIGVtcHR5Um93LmlkID0gdGhpcy5nZXROZXdFbGVtZW50SWQoZm9ybUxheW91dCkrMTtcclxuICAgICAgICAgZW1wdHlSb3cubGF5b3V0ID0gIFthbmd1bGFyLmNvcHkodGhpcy5nZXRFbXB0eUNvbHVtbldpdGhJZChmb3JtTGF5b3V0KSldO1xyXG4gICAgIHJldHVybiBlbXB0eVJvdztcclxuICB9XHJcbiBcclxuICBcclxuICBnZXRFbXB0eUNvbHVtbldpdGhJZCAoZm9ybUxheW91dCl7XHJcbiAgICAgIFxyXG4gICAgIHZhciBlbXB0eUNvbHVtbiA9IGFuZ3VsYXIuY29weSh0aGlzLmNvbHVtbilcclxuICAgICAgICAgZW1wdHlDb2x1bW4uaWQgPSB0aGlzLmdldE5ld0VsZW1lbnRJZChmb3JtTGF5b3V0KSsxO1xyXG4gICAgIHJldHVybiBlbXB0eUNvbHVtbjtcclxuICB9XHJcbiBcclxuICBcclxuICBnZXRFbXB0eURhdGFzZXRGb3JtICgpe1xyXG4gICAgIFxyXG4gICAgIHZhciByb3cgPSAgYW5ndWxhci5jb3B5KHRoaXMucm93KTtcclxuICAgICByb3cuaWQ9MTtcclxuICAgICB2YXIgZW1wdHlEYXRhc2V0Rm9ybSA9IFtyb3ddO1xyXG4gICAgICAgICBlbXB0eURhdGFzZXRGb3JtWzBdLmxheW91dCA9ICBhbmd1bGFyLmNvcHkodGhpcy5nZXRDb2x1bW5XaXRoRGF0YXNldElkKCkpO1xyXG4gICAgIHJldHVybiBlbXB0eURhdGFzZXRGb3JtO1xyXG4gIH1cclxuICBcclxuICBnZXRFbXB0eVRhc2tGb3JtICgpe1xyXG4gICAgICBcclxuICAgICB2YXIgZW1wdHlEYXRhc2V0Rm9ybSA9IFthbmd1bGFyLmNvcHkodGhpcy5yb3cpXTtcclxuICAgICBlbXB0eURhdGFzZXRGb3JtWzBdLmlkPTE7XHJcbiAgICAgZW1wdHlEYXRhc2V0Rm9ybVswXS5sYXlvdXQgPSAgYW5ndWxhci5jb3B5KHRoaXMuZ2V0RW1wdHlDb2x1bW4oKSk7XHJcbiAgICAgcmV0dXJuIGVtcHR5RGF0YXNldEZvcm07XHJcbiAgfVxyXG4gIFxyXG4gICBnZXRFbXB0eUFwcGxpY2F0aW9uTWVudSAoKXtcclxuICAgICBcclxuICAgICB2YXIgcm93ID0gIGFuZ3VsYXIuY29weSh0aGlzLnJvdyk7XHJcbiAgICAgcm93LmlkPTE7XHJcbiAgICAgdmFyIGVtcHR5QXBwbGljYXRpb25NZW51ID0gW3Jvd107XHJcbiAgICAgICAgIGVtcHR5QXBwbGljYXRpb25NZW51WzBdLmxheW91dCA9ICBbYW5ndWxhci5jb3B5KHRoaXMuZ2V0SW5pdGlhbE1lbnUoKSldO1xyXG4gICAgIHJldHVybiBlbXB0eUFwcGxpY2F0aW9uTWVudTtcclxuICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICBnZXRDb2x1bW5XaXRoRGF0YXNldElkICgpe1xyXG4gICAgICBcclxuICAgICBsZXQgY29sdW1uID0gYW5ndWxhci5jb3B5KHRoaXMuZ2V0RW1wdHlDb2x1bW4oKSk7XHJcbiAgICAgLy92YXIgcmVzb3VyY2VfaWQgPSBhbmd1bGFyLmNvcHkodGhpcy50b29sYm94VGVtcGxhdGVbMl0pO1xyXG4gICAgIC8vcmVzb3VyY2VfaWQuaWQ9Y29sdW1uWzBdLmxheW91dC5sZW5ndGgrMTtcclxuICAgICAvL2NvbHVtblswXS5sYXlvdXQgPSBbcmVzb3VyY2VfaWRdO1xyXG4gICAgIHJldHVybiBjb2x1bW47XHJcbiAgfVxyXG4gIFxyXG4gICAgZ2V0Q29sdW1uV2l0aEluaXRpYWxNZW51ICgpe1xyXG4gICAgICBcclxuICAgICAvL3ZhciBjb2x1bW4gPSBhbmd1bGFyLmNvcHkodGhpcy5nZXRFbXB0eUNvbHVtbigpKTtcclxuICAgICBsZXQgbWVudV9pdGVtID0gYW5ndWxhci5jb3B5KHRoaXMubWVudV9pdGVtX2luaXRpYWwpO1xyXG4gICAgIC8vbWVudV9pdGVtLmlkPWNvbHVtblswXS5sYXlvdXQubGVuZ3RoKzE7XHJcbiAgICAgbWVudV9pdGVtLmlkPTE7XHJcbiAgICAgLy9jb2x1bW5bMF0ubGF5b3V0ID0gW21lbnVfaXRlbV07XHJcbiAgICAgcmV0dXJuIG1lbnVfaXRlbTtcclxuICB9XHJcbiAgXHJcbiAgZ2V0SW5pdGlhbE1lbnUgKCl7XHJcbiAgICAgIFxyXG4gICAgIC8vdmFyIGNvbHVtbiA9IGFuZ3VsYXIuY29weSh0aGlzLmdldEVtcHR5Q29sdW1uKCkpO1xyXG4gICAgIGxldCBtZW51X2l0ZW0gPSB7c19tZW51c19NZW51VHlwZToyLHNfbWVudXNfTmFtZTonU2V0dGluZ3MnLG5hbWU6J1NldHRpbmdzJyxzX21lbnVzX0FjdGl2ZTp0cnVlLFBhcmFtczp7Tm9TaWRlTWVudTp0cnVlfSxzX21lbnVzX0ljb246J2ZhIGZhLWNvZyd9O1xyXG4gICAgIC8vbWVudV9pdGVtLmlkPWNvbHVtblswXS5sYXlvdXQubGVuZ3RoKzE7XHJcbiAgICAgLy9tZW51X2l0ZW0uaWQ9MTtcclxuICAgICAvL2NvbHVtblswXS5sYXlvdXQgPSBbbWVudV9pdGVtXTtcclxuICAgICByZXR1cm4gbWVudV9pdGVtO1xyXG4gIH1cclxuXHJcbiAgIGdldE5ld0VsZW1lbnRJZCAoZm9ybUxheW91dCl7XHJcbiAgICBcclxuICAgICAgdmFyIHRtcF9tYXg9MCxtYXg9MDtcclxuICAgICAgZm9yICh2YXIgaT0wO2k8IGZvcm1MYXlvdXQubGVuZ3RoO2krKylcclxuICAgICAge1xyXG4gICAgICAgIGlmIChcImxheW91dFwiIGluIGZvcm1MYXlvdXRbaV0pXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaWYgKGZvcm1MYXlvdXRbaV0ubGF5b3V0Lmxlbmd0aD4wKXtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICB0bXBfbWF4ID0gdGhpcy5nZXROZXdFbGVtZW50SWQoZm9ybUxheW91dFtpXS5sYXlvdXQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXCJpZFwiIGluIGZvcm1MYXlvdXRbaV0pXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZihmb3JtTGF5b3V0W2ldLmlkPnRtcF9tYXgpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0bXBfbWF4ID0gZm9ybUxheW91dFtpXS5pZDsgIFxyXG4gICAgICAgICAgICB9ICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0bXBfbWF4Pm1heClcclxuICAgICAgICB7XHJcbiAgICAgICAgICBtYXg9dG1wX21heDtcclxuICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgIFxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAvL21heCsrO1xyXG4gICAgICBcclxuICAgICAgcmV0dXJuIG1heDtcclxuICB9XHJcbiBQcm9jZXNzV2lkZ2V0cyAod2lkZ2V0cyl7XHJcbiAgICAgIFxyXG4gICAgIHZhciBsV2lkZ2V0cyA9IFtdO1xyXG4gICAgIGZvciAodmFyIGk9MDtpPHdpZGdldHMubGVuZ3RoO2krKyl7XHJcbiAgICAgIGlmICh3aWRnZXRzW2ldLlNob3dGaWVsZCkge1xyXG4gICAgICAgIGxXaWRnZXRzLnB1c2god2lkZ2V0c1tpXSk7XHJcbiAgICAgIH1cclxuICAgICB9XHJcbiAgICAgcmV0dXJuIGxXaWRnZXRzO1xyXG4gIH1cclxuIFxyXG4gIFxyXG4gIGdldFRvb2xib3hJdGVtcyAoKXtcclxuICBcclxuICAgICAgIFxyXG4gICAgcmV0dXJuIHRoaXMudG9vbGJveEl0ZW1zO1xyXG4gIH1cclxuICBcclxuICBnZXRUYXNrVG9vbGJveEl0ZW1zICgpe1xyXG4gIFxyXG4gICAgICAgXHJcbiAgICByZXR1cm4gdGhpcy50YXNrVG9vbGJveEl0ZW1zO1xyXG4gIH1cclxuICAgIGdldFBhZ2VUb29sYm94SXRlbXMgKCl7XHJcbiAgXHJcbiAgICAgICBcclxuICAgIHJldHVybiB0aGlzLnBhZ2VUb29sYm94SXRlbXM7XHJcbiAgfVxyXG4gICAgXHJcbiAgZ2V0VGFza1Rvb2xib3hJdGVtc0J5SWQgKGlkKXtcclxuICBcclxuICAgICAgIFxyXG4gICAgcmV0dXJuIHRoaXMudGFza1Rvb2xib3hJdGVtc1tpZF07XHJcbiAgfVxyXG4gIFxyXG4gIGdldFRvb2xib3hJdGVtc0J5SWQgKGlkKXtcclxuICBcclxuICAgICAgIFxyXG4gICAgcmV0dXJuIHRoaXMudG9vbGJveEl0ZW1zW2lkXTtcclxuICB9XHJcbiAgXHJcbiAgZ2V0VGFza1Rvb2xib3hJdGVtcyAoKXtcclxuICAgICAgICAgICAgICAgXHJcbiAgIFxyXG4gICAgcmV0dXJuIHRoaXMudGFza1Rvb2xib3hJdGVtcztcclxuICB9XHJcbiBcclxuIFxyXG5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQgKCl7XHJcbiAgXHJcbiAgICAgICBcclxuICAgIHJldHVybiB0aGlzLnByb3BlcnRpZXNPcGVuZWQ7XHJcbiAgfVxyXG5zZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQgKHZhbHVlKXtcclxuICBcclxuICAgICAgIFxyXG4gICB0aGlzLnByb3BlcnRpZXNPcGVuZWQ9dmFsdWU7XHJcbiAgIFxyXG4gIH0gXHJcbiBnZXRGaWVsZFByb3BlcnRpZXMgICgpe1xyXG4gIFxyXG4gICAgICAgXHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEZpZWxkO1xyXG4gIH1cclxuXHJcbiAgIGdldEZpZWxkUGFyZW50ICAoKXtcclxuICBcclxuICAgICAgIFxyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRGaWVsZFBhcmVudDtcclxuICB9XHJcbiAgXHJcbiAgIGdldFNlbGVjdGVkSXRlbUlkICAoKXtcclxuICBcclxuICAgICAgIFxyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRGaWVsZC5JdGVtSWQ7XHJcbiAgfVxyXG4gIFxyXG4gICBnZXRTZWxlY3RlZEZkICAoKXtcclxuICBcclxuICAgICAgIFxyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRGaWVsZDtcclxuICB9XHJcbiBcclxuIHNldEZpZWxkUHJvcGVydGllczEgKGZpZWxkLHBhcmVudCl7IFxyXG4gICBcclxuICAgLy90aGlzLnNlbGVjdGVkRmllbGQgPSBudWxsO1xyXG5cclxuICBcclxuICAgIHRoaXMucHJvcGVydGllc09wZW5lZD10cnVlO1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpZWxkPWZpZWxkO1xyXG5cdFxyXG4gICAgdGhpcy5zZWxlY3RlZEZpZWxkUGFyZW50ID0gcGFyZW50O1xyXG4gICAgaWYgKHBhcmVudCA9PSB1bmRlZmluZWQpIFxyXG4gICAgICAgIHJldHVybiBudWxsICAvLyBwYXJlbnQgaXMgb25seSBhcHBsaWNhYmxlIHRvIFJPVywgb3RoZXJ3aXNlIHdlIGRvbnQgY2FyZVxyXG4gICAgaWYgKCdsYXlvdXQnIGluIHRoaXMuc2VsZWN0ZWRGaWVsZFBhcmVudClcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRmllbGRQYXJlbnQuY291bnRBY3RpdmUgID0gIHRoaXMuc2VsZWN0ZWRGaWVsZFBhcmVudC5sYXlvdXQucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGl0ZW0pIHtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKGl0ZW0uU3RhdHVzPT0nQWN0aXZlJylcclxuICAgICAgICAgICAgfSwgMCk7ICAgICAgIFxyXG4gIH1cclxuXHJcbiBzZXRGaWVsZFByb3BlcnRpZXMgKGZpZWxkLHBhcmVudCl7IFxyXG4gICBcclxuICAgXHJcbiAgIGlmICh0aGlzLnNlbGVjdGVkRmllbGQgPT0gZmllbGQgJiYgdGhpcy5wcm9wZXJ0aWVzT3BlbmVkICYmIHRoaXMuc2VsZWN0ZWRGaWVsZFBhcmVudCA9PSBwYXJlbnQpXHJcbiAgICAgICAgcmV0dXJuIC8vIHJldHVybiBpZiBhbHJlYWR5IG9wZW5lZFxyXG4gICBcclxuICAgdGhpcy5zZWxlY3RlZEZpZWxkUGFyZW50ID0gcGFyZW50O1xyXG4gICB2YXIgaW5zdGFuY2UgPSB0aGlzO1xyXG4gICB0aGlzLnByb3BlcnRpZXNPcGVuZWQ9ZmFsc2U7ICAgXHJcbiAgIHRoaXMuJHRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG4gICAgIGluc3RhbmNlLnByb3BlcnRpZXNPcGVuZWQ9dHJ1ZTtcclxuICAgIGluc3RhbmNlLnNlbGVjdGVkRmllbGQ9ZmllbGQ7XHJcbiAgICAvL2RlYnVnZ2VyIC8vc2V0RmllbGRQcm9wZXJ0aWVzXHJcbiAgICBpbnN0YW5jZS5zZWxlY3RlZEZpZWxkUGFyZW50ID0gcGFyZW50O1xyXG4gICAgaWYgKHBhcmVudCA9PSB1bmRlZmluZWQpIFxyXG4gICAgICAgIHJldHVybiBudWxsICAvLyBwYXJlbnQgaXMgb25seSBhcHBsaWNhYmxlIHRvIFJPVywgb3RoZXJ3aXNlIHdlIGRvbnQgY2FyZVxyXG4gICAgaWYgKCdsYXlvdXQnIGluIGluc3RhbmNlLnNlbGVjdGVkRmllbGRQYXJlbnQpXHJcbiAgICAgICAgaW5zdGFuY2Uuc2VsZWN0ZWRGaWVsZFBhcmVudC5jb3VudEFjdGl2ZSAgPSAgaW5zdGFuY2Uuc2VsZWN0ZWRGaWVsZFBhcmVudC5sYXlvdXQucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGl0ZW0pIHtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKGl0ZW0uU3RhdHVzPT0nQWN0aXZlJylcclxuICAgICAgICAgICAgfSwgMCk7ICAgICAgIFxyXG4gIFxyXG4gICB9KVxyXG4gIH1cclxuIFxyXG4gZ2V0Rm9ybVZpZXdUeXBlICAoKXtcclxuICBcclxuICAgICAgIFxyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVZpZXdUeXBlO1xyXG4gIH1cclxuXHJcbiAgIHNldEZvcm1WaWV3VHlwZSAgKGZvcm1WaWV3VHlwZSl7XHJcbiAgXHJcbiAgICAgICBcclxuICAgIHRoaXMuZm9ybVZpZXdUeXBlPWZvcm1WaWV3VHlwZTtcclxuICAgIGlmIChmb3JtVmlld1R5cGUgPT0gNClcclxuICAgIHtcclxuICAgICAgdGhpcy5mb3JtVmlld1R5cGVDb3VudGVyVGFzaz0wO1xyXG4gICAgICB0aGlzLmZvcm1WaWV3VHlwZUNvdW50ZXJEcz0wO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gXHJcblxyXG4gIHNldFJlc291cmNlRm9ybVZlcnNpb24gIChpZCx2ZXJzaW9uKXtcclxuICBcclxuICAgIGlmICh0aGlzLnJlc291cmNlRm9ybVZlcnNpb25baWRdPT09dW5kZWZpbmVkKSB0aGlzLnJlc291cmNlRm9ybVZlcnNpb25baWRdPXt9ICAgXHJcbiAgICBpZiAodmVyc2lvbi5WZXJzaW9uIT11bmRlZmluZWQpIHRoaXMucmVzb3VyY2VGb3JtVmVyc2lvbltpZF0uVmVyc2lvbj12ZXJzaW9uLlZlcnNpb25cclxuICAgIGlmICh2ZXJzaW9uLk5ld1ZlcnNpb24hPXVuZGVmaW5lZCkgdGhpcy5yZXNvdXJjZUZvcm1WZXJzaW9uW2lkXS5OZXdWZXJzaW9uPXZlcnNpb24uTmV3VmVyc2lvblxyXG4gICAgaWYgKHZlcnNpb24uUHVibGlzaGVkIT11bmRlZmluZWQpIHRoaXMucmVzb3VyY2VGb3JtVmVyc2lvbltpZF0uUHVibGlzaGVkPXZlcnNpb24uUHVibGlzaGVkXHJcbiAgICAgICAgIFxyXG4gICBcclxuICB9O1xyXG4gIFxyXG4gIHNldFRhc2tGb3JtVmVyc2lvbiAgKGlkLHZlcnNpb24pe1xyXG4gIFxyXG4gICAgdGhpcy5zZXRSZXNvdXJjZUZvcm1WZXJzaW9uKGlkLHZlcnNpb24pXHJcbiAgICAgICAgIFxyXG4gICBcclxuICB9O1xyXG5cclxuICBnZXRSZXNvdXJjZUZvcm1WZXJzaW9uICAoaWQpe1xyXG4gIFxyXG4gICAgICAgXHJcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZUZvcm1WZXJzaW9uW2lkXVxyXG4gICBcclxuICB9O1xyXG4gIFxyXG4gIGFkZEZvcm1WaWV3VHlwZUNvdW50ZXJUYXNrICAodmFsKXtcclxuICAgICAgdGhpcy5mb3JtVmlld1R5cGVDb3VudGVyVGFzays9dmFsO1xyXG4gIH07XHJcblxyXG4gIFxyXG4gIGFkZEZvcm1WaWV3VHlwZUNvdW50ZXJEcyAgKHZhbCl7XHJcbiAgICAgIHRoaXMuZm9ybVZpZXdUeXBlQ291bnRlckRzKz12YWw7XHJcbiAgfTsgIFxyXG5cclxuIGNoYW5nZUNvbmZpcm1EZWxldGVFbGVtZW50ICgpe1xyXG4gIFxyXG4gICAgICAgXHJcbiAgICB0aGlzLmNvbmZpcm1EZWxldGVFbGVtZW50PSF0aGlzLmNvbmZpcm1EZWxldGVFbGVtZW50O1xyXG4gfTtcclxuIFxyXG4gZ2V0Q29uZmlybURlbGV0ZUVsZW1lbnQgKCl7XHJcbiAgXHJcbiAgICAgICBcclxuICAgIHJldHVybiB0aGlzLmNvbmZpcm1EZWxldGVFbGVtZW50O1xyXG4gfTtcclxuXHJcbiBzZXRDb25maXJtRGVsZXRlRWxlbWVudCAodmFsdWUpe1xyXG4gIFxyXG4gICAgICAgXHJcbiAgICB0aGlzLmNvbmZpcm1EZWxldGVFbGVtZW50PXZhbHVlO1xyXG4gfTtcclxuIFxyXG4gIFxyXG4gZGVsZXRlRWxlbWVudCAgKGl0ZW0peyAgLy8gSVRFTSBjYW4gYmUgdXNlZCBpbiBmdXR1cmUgdG8gY291bnQgZGVsZXRlZCBlbGVtZW50c1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhbHNlID09ICgnbGF5b3V0JyBpbiBpdGVtKSApeyAvLyBlbGVtZW50IGlzICBub3QgY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkLlN0YXR1cz1cIkRlbGV0ZWRcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmllbGQ9e307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wZXJ0aWVzT3BlbmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maXJtRGVsZXRlRWxlbWVudD1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmllbGRQYXJlbnQuY291bnRBY3RpdmUtLTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlICB7IC8vY29udGFpbmVyIGVsZW1lbnRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggKHRoaXMuc2VsZWN0ZWRGaWVsZC5FbGVtZW50VHlwZT09J3RhYnMnIHx8IHRoaXMuc2VsZWN0ZWRGaWVsZC5FbGVtZW50VHlwZT09J3JvdycpICAgJiYgdGhpcy5zZWxlY3RlZEZpZWxkUGFyZW50LmNvdW50QWN0aXZlPT0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZC5TdGF0dXM9XCJEZWxldGVkXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZD17fTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wZXJ0aWVzT3BlbmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybURlbGV0ZUVsZW1lbnQ9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZFBhcmVudC5jb3VudEFjdGl2ZS0tO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRGaWVsZC5FbGVtZW50VHlwZT09J2djb2wnICYmIHRoaXMuc2VsZWN0ZWRGaWVsZFBhcmVudC5jb3VudEFjdGl2ZT09MSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5NZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoJ0Nhbm5vdCBkZWxldGUgbGFzdCBjb2x1bW4gaW4gcm93LCBkZWxldGUgcm93IGluc3RlYWQgIScsJ2Vycm9yJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlICBpZiAodGhpcy5zZWxlY3RlZEZpZWxkUGFyZW50LmNvdW50QWN0aXZlID4gMSkgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkLlN0YXR1cz1cIkRlbGV0ZWRcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkPXt9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BlcnRpZXNPcGVuZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maXJtRGVsZXRlRWxlbWVudD1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkUGFyZW50LmNvdW50QWN0aXZlLS07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5NZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoJ0RlbGV0ZSBmYWlsZWQsIGVsZW1lbnQgaXMgbm90IGVtcHR5IScsJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgfTtcclxuIFxyXG4gIFNldFRhc2tUb29sYm94TG9hZGVkICh2YWwpXHJcbiAgIHtcclxuICAgIHRoaXMudGFza1Rvb2xib3hMb2FkZWQ9dmFsOyBcclxuICAgXHJcbiAgIH07XHJcblxyXG4gICBTZXRXaWRnZXRUb29sYm94TG9hZGVkICh2YWwscmVzb3VyY2VfdHlwZSlcclxuICAge1xyXG4gICAgdGhpcy53aWRnZXRUb29sYm94TG9hZGVkW3Jlc291cmNlX3R5cGVdPXZhbDsgXHJcbiAgIFxyXG4gICB9O1xyXG4gICBcclxuICAgICBHZXRUYXNrVG9vbGJveExvYWRlZCAoKVxyXG4gICB7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrVG9vbGJveExvYWRlZDsgXHJcbiAgIFxyXG4gICB9O1xyXG4gXHJcbiAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuIC8vICAgICAgICAgIERyYWcgQW5kIERyb3AgZHJhZ3VsYXIgLSBub3QgdXNlZFxyXG4gLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuIC8qXHJcbiB0aGlzLnNldHVwRHJhZ3VsYXIgKG1vZGVsLGNvbnRhaW5lcixuYW1lc3BhY2UsaGFuZGxlQ2xhc3MscmV2T25TcGlsbClcclxuIFxyXG4ge1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ3VsYXJTZXJ2aWNlKGNvbnRhaW5lcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZVNwYWNlOiBuYW1lc3BhY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jb3B5OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL21pcnJvcjogJ3Nob3ctYm9yZGVyJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmVydE9uU3BpbGw6IHJldk9uU3BpbGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyc01vZGVsOiBtb2RlbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RpcmVjdGlvbjondmVydGljYWwnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZXM6IGZ1bmN0aW9uIChlbCwgY29udGFpbmVyLCBoYW5kbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZS5jbGFzc0xpc3QuY29udGFpbnMoaGFuZGxlQ2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgXHJcbiAgfVxyXG4qL1xyXG4gXHJcbiAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gLy8gICAgICAgIGRlc3Ryb3kgZHJhZ3VsYVxyXG4gLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuIGRlc3Ryb3lEcmFndWxhIChkcmFndWxhX2JhZylcclxue1xyXG4gICAgdmFyIGJhZyA9IHRoaXMuZHJhZ3VsYVNlcnZpY2UuZmluZCh0aGlzLiRyb290U2NvcGUsIGRyYWd1bGFfYmFnKTtcclxuICAgICBpZiAoYmFnKSB7XHJcbiAgICAgLy8gdmFyIGRyYWtlID0gYmFnLmRyYWtlO1xyXG4gICAgIC8vIGRyYWtlLmNvbnRhaW5lcnMubGVuZ3RoID0gMDtcclxuICAgICAvLyBkcmFrZS5tb2RlbHMubGVuZ3RoID0gMDtcclxuICAgICB0aGlzLmRyYWd1bGFTZXJ2aWNlLmRlc3Ryb3kodGhpcy4kcm9vdFNjb3BlLCBkcmFndWxhX2JhZyk7ICAgICAgICAgXHJcbiAgICAgIH1cclxufTtcclxuIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAvLyAgICAgICAgaW5pdGlhbCBkcmFndWxhIHNldHVwXHJcbiAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gc2V0dXBEcmFndWxhIChkcmFndWxhX2JhZyxzb3VyY2VfY29udGFpbmVyLGRyYWdfaGFuZGxlKVxyXG57XHJcbiAvLyBpZiAoIXRoaXMuZHJhZ3VsYVNldHVwQ29tcGxldGVkW2RyYWd1bGFfYmFnXSlcclxuIC8vIHtcclxuICAgIC8vZGVzdHJveSBkcmFndWxhIGlmIGV4aXN0c1xyXG4gICBcclxuICAgICAgdmFyIGJhZyA9IHRoaXMuZHJhZ3VsYVNlcnZpY2UuZmluZCh0aGlzLiRyb290U2NvcGUsIGRyYWd1bGFfYmFnKTtcclxuICAgICAgaWYgKCFiYWcpIHtcclxuICAgICAgICAgLy8gICB0aGlzLmRyYWd1bGFTZXJ2aWNlLmRlc3Ryb3kodGhpcy4kcm9vdFNjb3BlLCBkcmFndWxhX2JhZykgICAgICAgICBcclxuICAgICBcclxuICAgICAgXHJcbiAgICAgICAgIHRoaXMuZHJhZ3VsYVNlcnZpY2Uub3B0aW9ucyh0aGlzLiRyb290U2NvcGUsIGRyYWd1bGFfYmFnLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmVydE9uU3BpbGw6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZU9uU3BpbGw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5OmZ1bmN0aW9uIChlbCxzb3VyY2Upe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5pZD09c291cmNlX2NvbnRhaW5lcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdHM6ZnVuY3Rpb24gKGVsLHRhcmdldCwgc291cmNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0LmlkIT1zb3VyY2VfY29udGFpbmVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlczogZnVuY3Rpb24gKGVsLCBjb250YWluZXIsIGhhbmRsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZS5jbGFzc0xpc3QuY29udGFpbnMoZHJhZ19oYW5kbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAvLyAgdGhpcy5kcmFndWxhU2V0dXBDb21wbGV0ZWRbZHJhZ3VsYV9iYWddID0gdHJ1ZTsgICBcclxufTtcclxuXHJcbiAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuIC8vICAgICAgICByZWdpc3RlciBkcmFndWxhIGNvbnRhaW5lcnNcclxuIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiByZWdpc3RlckRyYWd1bGFDb250YWluZXIgKHRhc2tJZCxmb3JtVHlwZSxiYWcsY29udGFpbmVyKVxyXG57XHJcbiAgdmFyIGJhZyA9IHRoaXMuZHJhZ3VsYUNvbnRhaW5lcnNbYmFnXTtcclxuICBpZiAoYmFnPT11bmRlZmluZWQpXHJcbiAge1xyXG4gICBcclxuICAgXHJcbiAgfVxyXG4gIHZhciBjb250YWluZXJzID0gdGhpcy5kcmFndWxhQ29udGFpbmVyc1tiYWddW3Rhc2tJZCtmb3JtVHlwZV07XHJcbiAgLy9pZiAoY29udGFpbmVycyA9PXVuZGVmaW5lZClcclxufTtcclxuIFxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IEdyaWRzdGVyU2VydmljZTsiLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBQcm9jZXNzaW5nU2VydmljZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbmNsYXNzIFByb2Nlc3NpbmdJbnRlcmNlcHRvcntcbiBcbiBcbiAgY29uc3RydWN0b3IoJHJvb3RTY29wZSwkcSxQUk9DRVNTSU5HX0NPTlNUKVxuICB7XG4gICAgICB2YXIgaW5zdGFuY2UgPSB0aGlzO1xuICAgICAgdGhpcy4kcm9vdFNjb3BlID0kcm9vdFNjb3BlO1xuICAgICAgdGhpcy4kcSA9ICRxO1xuICAgICAgdGhpcy5QUk9DRVNTSU5HX0NPTlNUID0gUFJPQ0VTU0lOR19DT05TVDtcbiAgICAgIFxuICAgICAgICB0aGlzLnJlcXVlc3QgPSAoY29uZmlnKSA9PiB7XG4gICAgICAgIC8vIGRvIHNvbWV0aGluZyBvbiBzdWNjZXNzXG4gICAgICAgICAgaWYgKHRoaXMuJHJvb3RTY29wZS5nbG9iYWxzLkludGVyY2VwdG9ySXNBY3RpdmUpXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGhpcy4kcm9vdFNjb3BlLiRicm9hZGNhc3QodGhpcy5QUk9DRVNTSU5HX0NPTlNULl9TVEFSVF9SRVFVRVNUXyxjb25maWcudXJsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgdGhpcy5yZXF1ZXN0RXJyb3IgPSAoY29uZmlnKSA9PiB7XG4gICAgICAgIC8vIGRvIHNvbWV0aGluZyBvbiBlcnJvclxuICAgICAgICBcbiAgICAgICAgICBpZiAoY29uZmlnIT11bmRlZmluZWQpXG4gICAgICAgICB7XG4gICAgICAgICAgIGlmICh0aGlzLiRyb290U2NvcGUuZ2xvYmFscy5JbnRlcmNlcHRvcklzQWN0aXZlKVxuICAgICAgICAgICB7XG4gICAgICAgICAgICAgdGhpcy4kcm9vdFNjb3BlLiRicm9hZGNhc3QodGhpcy5QUk9DRVNTSU5HX0NPTlNULl9FTkRfUkVRVUVTVF8sY29uZmlnLnVybCk7XG4gICAgICAgICAgIH1cbiAgICAgICAgIH1cbiAgICAgICAgIHJldHVybiB0aGlzLiRxLnJlamVjdChjb25maWcpO1xuICAgICAgICB9O1xuICBcbiAgICAgICAgLy8gb3B0aW9uYWwgbWV0aG9kXG4gICAgICAgIHRoaXMucmVzcG9uc2UgPSAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgLy8gZG8gc29tZXRoaW5nIG9uIHN1Y2Nlc3NcbiAgICAgICAgaWYgKHRoaXMuJHJvb3RTY29wZS5nbG9iYWxzLkludGVyY2VwdG9ySXNBY3RpdmUpXG4gICAgICAgIHtcbiAgICAgICAgICB0aGlzLiRyb290U2NvcGUuJGJyb2FkY2FzdCh0aGlzLlBST0NFU1NJTkdfQ09OU1QuX0VORF9SRVFVRVNUXyxyZXNwb25zZS5jb25maWcudXJsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgIH07XG4gIFxuICAgICAgICAvLyBvcHRpb25hbCBtZXRob2RcbiAgICAgICAgdGhpcy5yZXNwb25zZUVycm9yID0gKHJlamVjdGlvbikgPT4ge1xuICAgICAgICAvLyBkbyBzb21ldGhpbmcgb24gZXJyb3JcbiAgICAgICAgICBpZiAocmVqZWN0aW9uIT11bmRlZmluZWQpXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWYgKHJlamVjdGlvbi5jb25maWchPXVuZGVmaW5lZClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuJHJvb3RTY29wZS5nbG9iYWxzLkludGVyY2VwdG9ySXNBY3RpdmUpXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRyb290U2NvcGUuJGJyb2FkY2FzdCh0aGlzLlBST0NFU1NJTkdfQ09OU1QuX0VORF9SRVFVRVNUXyxyZWplY3Rpb24uY29uZmlnLnVybCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMuJHEucmVqZWN0KHJlamVjdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgXG4gIH1cbiAgXG4gICBzdGF0aWMgJGluamVjdCA9IFsnJHJvb3RTY29wZScsJyRxJywnUFJPQ0VTU0lOR19DT05TVCddO1xuICAgIFxuICAgICAgc3RhdGljIFByb2Nlc3NpbmdJbnRlcmNlcHRvclNlcnZpY2UoJHJvb3RTY29wZSwkcSxQUk9DRVNTSU5HX0NPTlNUKXsgLy9cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9jZXNzaW5nSW50ZXJjZXB0b3IoJHJvb3RTY29wZSwkcSxQUk9DRVNTSU5HX0NPTlNUKTsgLy8kcm9vdFNjb3BlLCRxLFBST0NFU1NJTkdfQ09OU1RcbiAgICAgIH1cbiAgIFxufVxuIFxuZXhwb3J0IGRlZmF1bHQgUHJvY2Vzc2luZ0ludGVyY2VwdG9yO1xuXG5cbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIEF1dGhJbnRlcmNlcHRvciAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbmNsYXNzIEF1dGhJbnRlcmNlcHRvcntcbiBcbiAgY29uc3RydWN0b3IoJHEsJGxvY2F0aW9uLCRjb29raWVzLCRyb290U2NvcGUpXG4gIHtcbiAgICBcbiAgICAgXG4gICAgICB0aGlzLiRxID0kcTtcbiAgICAgIHRoaXMuJGxvY2F0aW9uID0kbG9jYXRpb247XG4gICAgICB0aGlzLiRjb29raWVzID0gJGNvb2tpZXM7XG4gICAgICB0aGlzLiRyb290U2NvcGUgPSAkcm9vdFNjb3BlO1xuICAgICAgLy90aGlzLk1lc3NhZ2luZ1NlcnZpY2UgPSBNZXNzYWdpbmdTZXJ2aWNlO1xuICAgICAgICAvLyBvcHRpb25hbCBtZXRob2RcbiAgICAgICAvKiB0aGlzLnJlc3BvbnNlID0gKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgLy8gZG8gc29tZXRoaW5nIG9uIHN1Y2Nlc3NcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgIH07XG4gICAgICAgICovXG4gICAgICAgIHRoaXMucmVzcG9uc2VFcnJvciA9IChyZWplY3Rpb24pID0+IHtcbiAgICAgICAgLy8gcmVkaXJlY3QgdG8gbG9naW4gcGFnZSBpZiBub3QgYXV0aGVudGljYXRlZFxuICAgICAgICAgIGlmIChyZWplY3Rpb24hPXVuZGVmaW5lZClcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZiAocmVqZWN0aW9uLmNvbmZpZyE9dW5kZWZpbmVkKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZiAocmVqZWN0aW9uLnN0YXR1cyA9PTQwMSlcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRoaXMuJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyID0ge2xhbmc6J2VuLUdCJyxJbnRlcmNlcHRvcklzQWN0aXZlIDogdHJ1ZX07XG4gICAgICAgICAgICAgICAgdGhpcy4kY29va2llcy5yZW1vdmUoJ2dsb2JhbHMnKTtcbiAgICAgICAgICAgICAgICAvL3JlamVjdGlvbi5jb25maWcuaGVhZGVycy5BdXRob3JpemF0aW9uID0gXCJcIjtcbiAgICAgICAgICAgICAgICAvL3RoaXMuTWVzc2FnaW5nU2VydmljZS5jbGVhckFsbE1lc3NhZ2VzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy4kbG9jYXRpb24ucGF0aCgnL2xvZ2luJyk7XG4gICAgICAgICAgICAgIH0gZWxzZSByZXR1cm4gdGhpcy4kcS5yZWplY3QocmVqZWN0aW9uKTtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXG4gICAgICAgICAgfVxuICAgICAgICAgXG4gICAgICAgIH1cbiAgXG4gICAgICAgXG4gIH1cbiAgXG4gICBzdGF0aWMgJGluamVjdCA9IFsnJHEnLCckbG9jYXRpb24nLCckY29va2llcycsJyRyb290U2NvcGUnXTtcbiAgICBcbiAgICAgIHN0YXRpYyBBdXRoSW50ZXJjZXB0b3JTZXJ2aWNlKCRxLCRsb2NhdGlvbiwkY29va2llcywkcm9vdFNjb3BlKXsgXG4gICAgICAgIHJldHVybiBuZXcgQXV0aEludGVyY2VwdG9yKCRxLCRsb2NhdGlvbiwkY29va2llcywkcm9vdFNjb3BlKTsgXG4gICAgICB9XG4gICBcbn1cbiBcbmV4cG9ydCB7QXV0aEludGVyY2VwdG9yfTsiLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIE1lbnVTZXJ2aWNlIEZBQ1RPUlkgKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4ndXNlIHN0cmljdCc7XHJcblxyXG5jbGFzcyBNZW51U2VydmljZXtcclxuICAgXHJcbiAgICBcclxuICAgY29uc3RydWN0b3IgKCR0aW1lb3V0LCRxLCRyb290U2NvcGUsJGNvb2tpZXMsJHN0YXRlLENvZGVzU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlLFVzZXJTZXJ2aWNlLFJlc3RBcGlTZXJ2aWNlKSB7XHJcbiAgIFxyXG5cdCAgXHJcblx0Ly9cdCAgXHJcblx0Ly8gdGVzdGluZyBvYmplY3QgY2hhbmdlcyB3aXRoIFByb3h5IGhhbmRsZXJzICBcclxuXHQvLyAgXHJcbiAgIGNvbnN0IGhhbmRsZXIgPSB7IFx0ICBcclxuXHRcdHNldCh0YXJnZXQsIHByb3AsIHZhbHVlKSAge1xyXG5cdFx0XHQgICBjb25zb2xlLmxvZyhgbmF2YmFySXRlbXMgY2hhbmdlZCAke3Byb3B9IGZyb20gJHt0YXJnZXRbcHJvcF19IHRvICR7dmFsdWV9YCk7XHJcblx0XHRcdFx0dGFyZ2V0W3Byb3BdID0gdmFsdWU7XHJcblx0XHRcdFx0cmV0dXJuIHRydWVcclxuXHRcdCAgfSxcclxuXHRcdCAgIGdldCh0YXJnZXQsIGtleSkge1xyXG5cdFx0XHRcdHJldHVybiB0YXJnZXRba2V5XTtcclxuXHRcdFx0ICB9XHJcblx0fTtcclxuXHJcblx0XHJcbiAgICAgIHRoaXMubWVudUxpc3QgPSB7fTtcclxuICAgICAgdGhpcy5tZW51c1VzZXIgPSB7fTtcclxuICAgICAgdGhpcy5wYWdlTGlzdCA9IHt9O1xyXG4gICAgICB0aGlzLm5hdmJhciA9IHt9O1xyXG4gICAgICB0aGlzLm5hdmJhckl0ZW1zID0gW107IFxyXG4gICAgICAvL3RoaXMubmF2YmFySXRlbXMgPSAgbmV3IFByb3h5KCBbXSwgaGFuZGxlcik7XHQgIFxyXG4gICAgICB0aGlzLnNpZGVtZW51cyA9IHt9O1xyXG4gICAgICB0aGlzLmN1cnJlbnRNZW51ID0ge307XHJcbiAgICAgIHRoaXMuY3VycmVudE5hdmJhcklkPW51bGw7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2VJZD1udWxsO1xyXG4gICAgICB0aGlzLmN1cnJlbnRUYXJnZXQ9bnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFNpZGVNZW51SWQ9bnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEFwcD1udWxsO1xyXG4gICAgICB0aGlzLmN1cnJlbnRBcHA9bnVsbDtcclxuICAgICAgdGhpcy5jdXJyZW50RW52PW51bGw7XHJcbiAgICAgIHRoaXMuYXBwU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5lZGl0TW9kZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmxvYWRpbmdNZW51ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2lkZU1lbnVMYXJnZT10cnVlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkTmF2YmFyID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFNpZGVNZW51ID0gbnVsbDtcclxuICAgICAgdGhpcy5uYXZiYXJTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNpZGVNZW51U2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy4kdGltZW91dD0kdGltZW91dDtcclxuICAgICAgdGhpcy4kcT0kcTtcclxuICAgICAgdGhpcy4kcm9vdFNjb3BlID0kcm9vdFNjb3BlOyBcclxuICAgICAgdGhpcy5Db2Rlc1NlcnZpY2UgPSBDb2Rlc1NlcnZpY2U7XHJcbiAgICAgIHRoaXMuVXNlclNlcnZpY2UgPSBVc2VyU2VydmljZTtcclxuICAgICAgdGhpcy5SZXNvdXJjZXNEYXRhU2VydmljZSA9IFJlc291cmNlc0RhdGFTZXJ2aWNlOyBcclxuICAgICAgdGhpcy5NZXNzYWdpbmdTZXJ2aWNlID0gTWVzc2FnaW5nU2VydmljZTsgXHJcbiAgICAgIHRoaXMuJGNvb2tpZXMgPSAkY29va2llcztcclxuICAgICAgdGhpcy4kc3RhdGUgPSAkc3RhdGU7XHJcbiAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UgPSBSZXN0QXBpU2VydmljZTtcclxuICAgICAgdGhpcy5zaWRlTWVudVZpc2libGU9ZmFsc2VcclxuICAgICAgdGhpcy5zaWRlTWVudT17fVxyXG4gICAgICB0aGlzLnB1YmxpY1BhZ2U9ZmFsc2VcclxuICAgICAgdGhpcy5EZWZhdWx0TWVudT1bXVxyXG4gICAgfVxyXG5cclxuICAgc3RhdGljICRpbmplY3QgPSBbJyR0aW1lb3V0JywnJHEnLCckcm9vdFNjb3BlJywnJGNvb2tpZXMnLCckc3RhdGUnLCdDb2Rlc1NlcnZpY2UnLCdSZXNvdXJjZXNEYXRhU2VydmljZScsJ01lc3NhZ2luZ1NlcnZpY2UnLCdVc2VyU2VydmljZScsJ1Jlc3RBcGlTZXJ2aWNlJ107XHJcbiAgIFxyXG5cclxuICAgc2V0RGVmYXVsdE1lbnUoKVxyXG4gICB7XHJcbiAgICB0aGlzLkRlZmF1bHRNZW51ID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgXCJzX21lbnVzX2lkXCI6IDIyOCxcclxuICAgICAgICAgICAgXCJzX21lbnVzX05hbWVcIjogXCJQZXJtaXNzaW9uc1wiLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfTWVudVR5cGVcIjogMSxcclxuICAgICAgICAgICAgXCJzX21lbnVzX1BhcmFtc1wiOiB7XHJcbiAgICAgICAgICAgICAgICBcInBhZ2VpZFwiOiBcIjFfODZcIixcclxuICAgICAgICAgICAgICAgIFwicGFnZXN0YXRlXCI6IFwiYXBwLm5hdmJhci5hcHBzZXR0aW5nc1wiXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIFwic19tZW51c19QYXJlbnRJdGVtXCI6IDIwMCxcclxuICAgICAgICAgICAgXCJzX21lbnVzX0ljb25cIjogXCJmYXMgZmEtbG9ja1wiLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfTmF2YmFyXCI6IDIwMCxcclxuICAgICAgICAgICAgXCJzX21lbnVzX09yZGVyXCI6IDEsXHJcbiAgICAgICAgICAgIFwic19tZW51c19BY3RpdmVcIjogdHJ1ZSxcclxuICAgICAgICAgICAgXCJzX21lbnVzX1RhcmdldFBhZ2VfaWRcIjogMTYsXHJcbiAgICAgICAgICAgIFwic19tZW51c19NZW51UG9zaXRpb25cIjogXCJzaWRlbWVudVwiLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfUmVzb3VyY2VEZWZJZF9pZFwiOiAzNTksXHJcbiAgICAgICAgICAgIFwic19tZW51c19UYXJnZXRcIjogXCIxXzg2XCIsXHJcbiAgICAgICAgICAgIFwic19tZW51c191aWRcIjogbnVsbCxcclxuICAgICAgICAgICAgXCJzX21lbnVzX2d1aWRcIjogbnVsbCxcclxuICAgICAgICAgICAgXCJzX3BhZ2VzX2lkXCI6IDU2LFxyXG4gICAgICAgICAgICBcInNfcGFnZXNfVGFyZ2V0XCI6IFwiYXBwLm5hdmJhci5hcHBzZXR0aW5nc1wiLFxyXG4gICAgICAgICAgICBcInNfcGFnZXNfUGFyYW1zXCI6IG51bGwsXHJcbiAgICAgICAgICAgIFwic19wYWdlc19SZXNvdXJjZURlZklkX2lkXCI6IDg2LFxyXG4gICAgICAgICAgICBcInNfcGFnZXNfUGFnZVR5cGVfaWRcIjogMTE2LFxyXG4gICAgICAgICAgICBcInNfcmVzb3VyY2VkZWZfaWRcIjogMzU5LFxyXG4gICAgICAgICAgICBcInNfcmVzb3VyY2VkZWZfUmVzb3VyY2VUeXBlX2lkXCI6IDcsXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl9PcmdhbmlzYXRpb25faWRcIjogMSxcclxuICAgICAgICAgICAgXCJzX3Jlc291cmNlZGVmX1BhcmFtZXRlcnNcIjoge30sXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl9SZXNvdXJjZVN1YlR5cGVcIjogXCJzdGFuZGFyZFwiLFxyXG4gICAgICAgICAgICBcInNfcmVzb3VyY2VkZWZfQWN0aXZlXCI6IHRydWUsXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl91aWRcIjogXCIxXzM1OVwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICBcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIFwic19tZW51c19pZFwiOiAyMDgsXHJcbiAgICAgICAgICAgIFwic19tZW51c19OYW1lXCI6IFwiVXNlcnNcIixcclxuICAgICAgICAgICAgXCJzX21lbnVzX01lbnVUeXBlXCI6IDEsXHJcbiAgICAgICAgICAgIFwic19tZW51c19QYXJhbXNcIjoge1xyXG4gICAgICAgICAgICAgICAgXCJwYWdlaWRcIjogXCIxXzg2XCIsXHJcbiAgICAgICAgICAgICAgICBcInBhZ2VzdGF0ZVwiOiBcImFwcC5uYXZiYXIudXNlcnNcIlxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBcInNfbWVudXNfUGFyZW50SXRlbVwiOiAyMDAsXHJcbiAgICAgICAgICAgIFwic19tZW51c19JY29uXCI6IFwiZmFyIGZhLXVzZXJcIixcclxuICAgICAgICAgICAgXCJzX21lbnVzX05hdmJhclwiOiAyMDAsXHJcbiAgICAgICAgICAgIFwic19tZW51c19PcmRlclwiOiAxLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfQWN0aXZlXCI6IHRydWUsXHJcbiAgICAgICAgICAgIFwic19tZW51c19UYXJnZXRQYWdlX2lkXCI6IDU2LFxyXG4gICAgICAgICAgICBcInNfbWVudXNfTWVudVBvc2l0aW9uXCI6IFwic2lkZW1lbnVcIixcclxuICAgICAgICAgICAgXCJzX21lbnVzX1Jlc291cmNlRGVmSWRfaWRcIjogMzU5LFxyXG4gICAgICAgICAgICBcInNfbWVudXNfVGFyZ2V0XCI6IFwiMV84NlwiLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfdWlkXCI6IG51bGwsXHJcbiAgICAgICAgICAgIFwic19tZW51c19ndWlkXCI6IG51bGwsXHJcbiAgICAgICAgICAgIFwic19wYWdlc19pZFwiOiA1NixcclxuICAgICAgICAgICAgXCJzX3BhZ2VzX1RhcmdldFwiOiBcImFwcC5uYXZiYXIudXNlcnNcIixcclxuICAgICAgICAgICAgXCJzX3BhZ2VzX1BhcmFtc1wiOiBudWxsLFxyXG4gICAgICAgICAgICBcInNfcGFnZXNfUmVzb3VyY2VEZWZJZF9pZFwiOiA4NixcclxuICAgICAgICAgICAgXCJzX3BhZ2VzX1BhZ2VUeXBlX2lkXCI6IDExNixcclxuICAgICAgICAgICAgXCJzX3Jlc291cmNlZGVmX2lkXCI6IDM1OSxcclxuICAgICAgICAgICAgXCJzX3Jlc291cmNlZGVmX1Jlc291cmNlVHlwZV9pZFwiOiA3LFxyXG4gICAgICAgICAgICBcInNfcmVzb3VyY2VkZWZfT3JnYW5pc2F0aW9uX2lkXCI6IDEsXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl9QYXJhbWV0ZXJzXCI6IHt9LFxyXG4gICAgICAgICAgICBcInNfcmVzb3VyY2VkZWZfUmVzb3VyY2VTdWJUeXBlXCI6IFwic3RhbmRhcmRcIixcclxuICAgICAgICAgICAgXCJzX3Jlc291cmNlZGVmX0FjdGl2ZVwiOiB0cnVlLFxyXG4gICAgICAgICAgICBcInNfcmVzb3VyY2VkZWZfdWlkXCI6IFwiMV8zNTlcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgXCJzX21lbnVzX2lkXCI6IDIxMyxcclxuICAgICAgICAgICAgXCJzX21lbnVzX05hbWVcIjogXCJDb2RlcyBkZWZpbml0aW9uXCIsXHJcbiAgICAgICAgICAgIFwic19tZW51c19NZW51VHlwZVwiOiAxLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfUGFyYW1zXCI6IHtcclxuICAgICAgICAgICAgICAgIFwicGFnZWlkXCI6IFwiMV8zNjFcIlxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBcInNfbWVudXNfUGFyZW50SXRlbVwiOiAyMTIsXHJcbiAgICAgICAgICAgIFwic19tZW51c19DcmVhdGVkRGF0ZVRpbWVcIjogXCIyMDIyLTAzLTEwVDE0OjA0OjI0LjY4MTQzMVpcIixcclxuICAgICAgICAgICAgXCJzX21lbnVzX0NoYW5nZWREYXRlVGltZVwiOiBcIjIwMjItMDMtMTFUMTc6MTI6MjUuNTIzMzY3WlwiLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfQ2hhbmdlZEJ5X2lkXCI6IDEsXHJcbiAgICAgICAgICAgIFwic19tZW51c19DcmVhdGVkQnlfaWRcIjogMSxcclxuICAgICAgICAgICAgXCJzX21lbnVzX0ljb25cIjogXCJmYSBmYS1nbG9iZVwiLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfTmF2YmFyXCI6IDIxMixcclxuICAgICAgICAgICAgXCJzX21lbnVzX09yZGVyXCI6IDEsXHJcbiAgICAgICAgICAgIFwic19tZW51c19BY3RpdmVcIjogdHJ1ZSxcclxuICAgICAgICAgICAgXCJzX21lbnVzX1RhcmdldFBhZ2VfaWRcIjogNTgsXHJcbiAgICAgICAgICAgIFwic19tZW51c19NZW51UG9zaXRpb25cIjogXCJzaWRlbWVudVwiLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfQWx3YXlzTmV3XCI6IG51bGwsXHJcbiAgICAgICAgICAgIFwic19tZW51c19SZXNvdXJjZURlZklkX2lkXCI6IDM1OSxcclxuICAgICAgICAgICAgXCJzX21lbnVzX1RhcmdldFwiOiBcIjFfMzYxXCIsXHJcbiAgICAgICAgICAgIFwic19tZW51c19WZXJzaW9uRnJvbVwiOiAxLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfVmVyc2lvblRvXCI6IDEsXHJcbiAgICAgICAgICAgIFwic19tZW51c19Xb3JrVmVyc2lvblwiOiAxLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfdWlkXCI6IG51bGwsXHJcbiAgICAgICAgICAgIFwic19tZW51c19ndWlkXCI6IG51bGwsXHJcbiAgICAgICAgICAgIFwic19wYWdlc19pZFwiOiA1OCxcclxuICAgICAgICAgICAgXCJzX3BhZ2VzX1RhcmdldFwiOiBcImFwcC5uYXZiYXIuY29kZXMubGlzdFwiLFxyXG4gICAgICAgICAgICBcInNfcGFnZXNfUGFyYW1zXCI6IG51bGwsXHJcbiAgICAgICAgICAgIFwic19wYWdlc19SZXNvdXJjZURlZklkX2lkXCI6IDM2MSxcclxuICAgICAgICAgICAgXCJzX3BhZ2VzX0NoYW5nZWRCeV9pZFwiOiBudWxsLFxyXG4gICAgICAgICAgICBcInNfcGFnZXNfQ2hhbmdlZERhdGVUaW1lXCI6IG51bGwsXHJcbiAgICAgICAgICAgIFwic19wYWdlc19DcmVhdGVkQnlfaWRcIjogbnVsbCxcclxuICAgICAgICAgICAgXCJzX3BhZ2VzX0NyZWF0ZWREYXRlVGltZVwiOiBudWxsLFxyXG4gICAgICAgICAgICBcInNfcGFnZXNfUGFnZVR5cGVfaWRcIjogMTE2LFxyXG4gICAgICAgICAgICBcInNfcmVzb3VyY2VkZWZfaWRcIjogMzU5LFxyXG4gICAgICAgICAgICBcInNfcmVzb3VyY2VkZWZfU3RhdHVzX2lkXCI6IDE3LFxyXG4gICAgICAgICAgICBcInNfcmVzb3VyY2VkZWZfUHJpdmF0ZVwiOiBmYWxzZSxcclxuICAgICAgICAgICAgXCJzX3Jlc291cmNlZGVmX1Jlc291cmNlVHlwZV9pZFwiOiA3LFxyXG4gICAgICAgICAgICBcInNfcmVzb3VyY2VkZWZfT3JnYW5pc2F0aW9uX2lkXCI6IDEsXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl9QdWJsaXNoZWRcIjogdHJ1ZSxcclxuICAgICAgICAgICAgXCJzX3Jlc291cmNlZGVmX0Zvcm1EZWZpbmVkXCI6IGZhbHNlLFxyXG4gICAgICAgICAgICBcInNfcmVzb3VyY2VkZWZfQ2hhbmdlZEJ5X2lkXCI6IG51bGwsXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl9DaGFuZ2VkRGF0ZVRpbWVcIjogbnVsbCxcclxuICAgICAgICAgICAgXCJzX3Jlc291cmNlZGVmX0NyZWF0ZWRCeV9pZFwiOiAxLFxyXG4gICAgICAgICAgICBcInNfcmVzb3VyY2VkZWZfQ3JlYXRlZERhdGVUaW1lXCI6IFwiMjAyMi0wMy0wN1QwOToxNzoyOS4zODkwMjlaXCIsXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl9Jc0Jsb2NrY2hhaW5cIjogbnVsbCxcclxuICAgICAgICAgICAgXCJzX3Jlc291cmNlZGVmX05ld1ZlcnNpb25cIjogMSxcclxuICAgICAgICAgICAgXCJzX3Jlc291cmNlZGVmX1BhcmFtZXRlcnNcIjoge30sXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl9WZXJzaW9uXCI6IDEsXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl9SZXNvdXJjZVN1YlR5cGVcIjogXCJzdGFuZGFyZFwiLFxyXG4gICAgICAgICAgICBcInNfcmVzb3VyY2VkZWZfQWN0aXZlXCI6IHRydWUsXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl91aWRcIjogXCIxXzM1OVwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIFwic19tZW51c19pZFwiOiAyMzAsXHJcbiAgICAgICAgICAgIFwic19tZW51c19OYW1lXCI6IFwiSG9tZSBwYWdlXCIsXHJcbiAgICAgICAgICAgIFwic19tZW51c19NZW51VHlwZVwiOiAxLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfUGFyYW1zXCI6IHtcclxuICAgICAgICAgICAgICAgIFwicGFnZWlkXCI6IFwiMV82NlwiLFxyXG4gICAgICAgICAgICAgICAgXCJwYWdlc3RhdGVcIjogXCJhcHAubmF2YmFyLmhvbWVcIlxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBcInNfbWVudXNfUGFyZW50SXRlbVwiOiAyMzAsXHJcbiAgICAgICAgICAgIFwic19tZW51c19JY29uXCI6IFwiZmEgZmEtaG9tZVwiLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfTmF2YmFyXCI6IDIzMCxcclxuICAgICAgICAgICAgXCJzX21lbnVzX09yZGVyXCI6IDEsXHJcbiAgICAgICAgICAgIFwic19tZW51c19BY3RpdmVcIjogdHJ1ZSxcclxuICAgICAgICAgICAgXCJzX21lbnVzX1RhcmdldFBhZ2VfaWRcIjogMixcclxuICAgICAgICAgICAgXCJzX21lbnVzX01lbnVQb3NpdGlvblwiOiBcIm5hdmJhclwiLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfQWx3YXlzTmV3XCI6IG51bGwsXHJcbiAgICAgICAgICAgIFwic19tZW51c19SZXNvdXJjZURlZklkX2lkXCI6IDM1OSxcclxuICAgICAgICAgICAgXCJzX21lbnVzX1RhcmdldFwiOiBcIjFfNjZcIixcclxuICAgICAgICAgICAgXCJzX21lbnVzX3VpZFwiOiBudWxsLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfZ3VpZFwiOiBudWxsLFxyXG4gICAgICAgICAgICBcInNfcGFnZXNfaWRcIjogMixcclxuICAgICAgICAgICAgXCJzX3BhZ2VzX1RhcmdldFwiOiBcImFwcC5uYXZiYXIuaG9tZVwiLFxyXG4gICAgICAgICAgICBcInNfcGFnZXNfUGFyYW1zXCI6IG51bGwsXHJcbiAgICAgICAgICAgIFwic19wYWdlc19SZXNvdXJjZURlZklkX2lkXCI6IDY2LFxyXG4gICAgICAgICAgICBcInNfcGFnZXNfUGFnZVR5cGVfaWRcIjogMTE2LFxyXG4gICAgICAgICAgICBcInNfcmVzb3VyY2VkZWZfaWRcIjogMzU5LFxyXG4gICAgICAgICAgICBcInNfcmVzb3VyY2VkZWZfUmVzb3VyY2VUeXBlX2lkXCI6IDcsXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl9PcmdhbmlzYXRpb25faWRcIjogMSxcclxuICAgICAgICAgICAgXCJzX3Jlc291cmNlZGVmX1BhcmFtZXRlcnNcIjoge30sXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl9WZXJzaW9uXCI6IDEsXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl9SZXNvdXJjZVN1YlR5cGVcIjogXCJzdGFuZGFyZFwiLFxyXG4gICAgICAgICAgICBcInNfcmVzb3VyY2VkZWZfQWN0aXZlXCI6IHRydWUsXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl91aWRcIjogXCIxXzM1OVwiXHJcbiAgICAgICAgfSxcclxuICAgICAgIFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgXCJzX21lbnVzX2lkXCI6IDIwNyxcclxuICAgICAgICAgICAgXCJzX21lbnVzX05hbWVcIjogXCJHcm91cHNcIixcclxuICAgICAgICAgICAgXCJzX21lbnVzX01lbnVUeXBlXCI6IDEsXHJcbiAgICAgICAgICAgIFwic19tZW51c19QYXJhbXNcIjoge1xyXG4gICAgICAgICAgICAgICAgXCJwYWdlaWRcIjogXCIxXzg1XCIsXHJcbiAgICAgICAgICAgICAgICBcInBhZ2VzdGF0ZVwiOiBcImFwcC5uYXZiYXIuZ3JvdXBzXCJcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXCJzX21lbnVzX1BhcmVudEl0ZW1cIjogMjAwLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfSWNvblwiOiBcImZhcyBmYS11c2Vyc1wiLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfTmF2YmFyXCI6IDIwMCxcclxuICAgICAgICAgICAgXCJzX21lbnVzX09yZGVyXCI6IDIsXHJcbiAgICAgICAgICAgIFwic19tZW51c19BY3RpdmVcIjogdHJ1ZSxcclxuICAgICAgICAgICAgXCJzX21lbnVzX1RhcmdldFBhZ2VfaWRcIjogNTMsXHJcbiAgICAgICAgICAgIFwic19tZW51c19NZW51UG9zaXRpb25cIjogXCJzaWRlbWVudVwiLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfQWx3YXlzTmV3XCI6IG51bGwsXHJcbiAgICAgICAgICAgIFwic19tZW51c19SZXNvdXJjZURlZklkX2lkXCI6IDM1OSxcclxuICAgICAgICAgICAgXCJzX21lbnVzX1RhcmdldFwiOiBcIjFfODVcIixcclxuICAgICAgICAgICAgXCJzX21lbnVzX1ZlcnNpb25Gcm9tXCI6IDEsXHJcbiAgICAgICAgICAgIFwic19tZW51c19WZXJzaW9uVG9cIjogMSxcclxuICAgICAgICAgICAgXCJzX21lbnVzX1dvcmtWZXJzaW9uXCI6IDEsXHJcbiAgICAgICAgICAgIFwic19tZW51c191aWRcIjogbnVsbCxcclxuICAgICAgICAgICAgXCJzX21lbnVzX2d1aWRcIjogbnVsbCxcclxuICAgICAgICAgICAgXCJzX3BhZ2VzX2lkXCI6IDUzLFxyXG4gICAgICAgICAgICBcInNfcGFnZXNfVGFyZ2V0XCI6IFwiYXBwLm5hdmJhci5ncm91cHNcIixcclxuICAgICAgICAgICAgXCJzX3BhZ2VzX1BhcmFtc1wiOiBudWxsLFxyXG4gICAgICAgICAgICBcInNfcGFnZXNfUmVzb3VyY2VEZWZJZF9pZFwiOiA4NSxcclxuICAgICAgICAgICAgXCJzX3BhZ2VzX1BhZ2VUeXBlX2lkXCI6IDExNixcclxuICAgICAgICAgICAgXCJzX3Jlc291cmNlZGVmX2lkXCI6IDM1OSxcclxuICAgICAgICAgICAgXCJzX3Jlc291cmNlZGVmX1Jlc291cmNlVHlwZV9pZFwiOiA3LFxyXG4gICAgICAgICAgICBcInNfcmVzb3VyY2VkZWZfT3JnYW5pc2F0aW9uX2lkXCI6IDEsXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl9QYXJhbWV0ZXJzXCI6IHt9LFxyXG4gICAgICAgICAgICBcInNfcmVzb3VyY2VkZWZfUmVzb3VyY2VTdWJUeXBlXCI6IFwic3RhbmRhcmRcIixcclxuICAgICAgICAgICAgXCJzX3Jlc291cmNlZGVmX0FjdGl2ZVwiOiB0cnVlLFxyXG4gICAgICAgICAgICBcInNfcmVzb3VyY2VkZWZfdWlkXCI6IFwiMV8zNTlcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgIFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgXCJzX21lbnVzX2lkXCI6IDIxMCxcclxuICAgICAgICAgICAgXCJzX21lbnVzX05hbWVcIjogXCJDb2Rlc1wiLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfTWVudVR5cGVcIjogMSxcclxuICAgICAgICAgICAgXCJzX21lbnVzX1BhcmFtc1wiOiB7XHJcbiAgICAgICAgICAgICAgICBcInBhZ2VpZFwiOiBcIjFfMzYxXCIsXHJcbiAgICAgICAgICAgICAgICBcInBhZ2VzdGF0ZVwiOiBcImFwcC5uYXZiYXIuY29kZXMubGlzdFwiXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIFwic19tZW51c19QYXJlbnRJdGVtXCI6IDIwMCxcclxuICAgICAgICAgICAgXCJzX21lbnVzX0ljb25cIjogXCJmYXMgZmEtYmFyY29kZVwiLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfTmF2YmFyXCI6IDIwMCxcclxuICAgICAgICAgICAgXCJzX21lbnVzX09yZGVyXCI6IDMsXHJcbiAgICAgICAgICAgIFwic19tZW51c19BY3RpdmVcIjogdHJ1ZSxcclxuICAgICAgICAgICAgXCJzX21lbnVzX1RhcmdldFBhZ2VfaWRcIjogNTgsXHJcbiAgICAgICAgICAgIFwic19tZW51c19NZW51UG9zaXRpb25cIjogXCJzaWRlbWVudVwiLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfQWx3YXlzTmV3XCI6IG51bGwsXHJcbiAgICAgICAgICAgIFwic19tZW51c19SZXNvdXJjZURlZklkX2lkXCI6IDM1OSxcclxuICAgICAgICAgICAgXCJzX21lbnVzX1RhcmdldFwiOiBcIjFfMzYxXCIsXHJcbiAgICAgICAgICAgIFwic19tZW51c191aWRcIjogbnVsbCxcclxuICAgICAgICAgICAgXCJzX21lbnVzX2d1aWRcIjogbnVsbCxcclxuICAgICAgICAgICAgXCJzX3BhZ2VzX2lkXCI6IDU4LFxyXG4gICAgICAgICAgICBcInNfcGFnZXNfVGFyZ2V0XCI6IFwiYXBwLm5hdmJhci5jb2Rlcy5saXN0XCIsXHJcbiAgICAgICAgICAgIFwic19wYWdlc19QYXJhbXNcIjogbnVsbCxcclxuICAgICAgICAgICAgXCJzX3BhZ2VzX1Jlc291cmNlRGVmSWRfaWRcIjogMzYxLFxyXG4gICAgICAgICAgICBcInNfcGFnZXNfQ2hhbmdlZEJ5X2lkXCI6IG51bGwsXHJcbiAgICAgICAgICAgIFwic19wYWdlc19DaGFuZ2VkRGF0ZVRpbWVcIjogbnVsbCxcclxuICAgICAgICAgICAgXCJzX3BhZ2VzX0NyZWF0ZWRCeV9pZFwiOiBudWxsLFxyXG4gICAgICAgICAgICBcInNfcGFnZXNfQ3JlYXRlZERhdGVUaW1lXCI6IG51bGwsXHJcbiAgICAgICAgICAgIFwic19wYWdlc19QYWdlVHlwZV9pZFwiOiAxMTYsXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl9pZFwiOiAzNTksXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl9TdGF0dXNfaWRcIjogMTcsXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl9Qcml2YXRlXCI6IGZhbHNlLFxyXG4gICAgICAgICAgICBcInNfcmVzb3VyY2VkZWZfUmVzb3VyY2VUeXBlX2lkXCI6IDcsXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl9PcmdhbmlzYXRpb25faWRcIjogMSxcclxuICAgICAgICAgICAgXCJzX3Jlc291cmNlZGVmX05ld1ZlcnNpb25cIjogMSxcclxuICAgICAgICAgICAgXCJzX3Jlc291cmNlZGVmX1BhcmFtZXRlcnNcIjoge30sXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl9SZXNvdXJjZVN1YlR5cGVcIjogXCJzdGFuZGFyZFwiLFxyXG4gICAgICAgICAgICBcInNfcmVzb3VyY2VkZWZfQWN0aXZlXCI6IHRydWUsXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl91aWRcIjogXCIxXzM1OVwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIFwic19tZW51c19pZFwiOiAyMDAsXHJcbiAgICAgICAgICAgIFwic19tZW51c19OYW1lXCI6IFwiU2V0dGluZ3NcIixcclxuICAgICAgICAgICAgXCJzX21lbnVzX01lbnVUeXBlXCI6IDIsXHJcbiAgICAgICAgICAgIFwic19tZW51c19QYXJhbXNcIjoge1xyXG4gICAgICAgICAgICAgICAgXCJwYWdlaWRcIjogbnVsbFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBcInNfbWVudXNfUGFyZW50SXRlbVwiOiAyMDAsXHJcbiAgICAgICAgICAgIFwic19tZW51c19JY29uXCI6IFwiZmFzIGZhLWNvZ1wiLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfTmF2YmFyXCI6IDIwMCxcclxuICAgICAgICAgICAgXCJzX21lbnVzX09yZGVyXCI6IDUsXHJcbiAgICAgICAgICAgIFwic19tZW51c19BY3RpdmVcIjogdHJ1ZSxcclxuICAgICAgICAgICAgXCJzX21lbnVzX1RhcmdldFBhZ2VfaWRcIjogMjEsXHJcbiAgICAgICAgICAgIFwic19tZW51c19NZW51UG9zaXRpb25cIjogXCJuYXZiYXJyaWdodFwiLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfUmVzb3VyY2VEZWZJZF9pZFwiOiAzNTksXHJcbiAgICAgICAgICAgIFwic19tZW51c19UYXJnZXRcIjogbnVsbCxcclxuICAgICAgICAgICAgXCJzX21lbnVzX3VpZFwiOiBudWxsLFxyXG4gICAgICAgICAgICBcInNfbWVudXNfZ3VpZFwiOiBudWxsLFxyXG4gICAgICAgICAgICBcInNfcGFnZXNfaWRcIjogMjEsXHJcbiAgICAgICAgICAgIFwic19wYWdlc19UYXJnZXRcIjogXCJhcHAubG9naW5cIixcclxuICAgICAgICAgICAgXCJzX3BhZ2VzX1BhcmFtc1wiOiBudWxsLFxyXG4gICAgICAgICAgICBcInNfcGFnZXNfUmVzb3VyY2VEZWZJZF9pZFwiOiA2NSxcclxuICAgICAgICAgICAgXCJzX3BhZ2VzX1BhZ2VUeXBlX2lkXCI6IG51bGwsXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl9pZFwiOiAzNTksXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl9TdGF0dXNfaWRcIjogMTcsXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl9Qcml2YXRlXCI6IGZhbHNlLFxyXG4gICAgICAgICAgICBcInNfcmVzb3VyY2VkZWZfUmVzb3VyY2VUeXBlX2lkXCI6IDcsXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl9PcmdhbmlzYXRpb25faWRcIjogMSxcclxuICAgICAgICAgICAgXCJzX3Jlc291cmNlZGVmX1BhcmFtZXRlcnNcIjoge30sXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl9WZXJzaW9uXCI6IDEsXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl9SZXNvdXJjZVN1YlR5cGVcIjogXCJzdGFuZGFyZFwiLFxyXG4gICAgICAgICAgICBcInNfcmVzb3VyY2VkZWZfQWN0aXZlXCI6IHRydWUsXHJcbiAgICAgICAgICAgIFwic19yZXNvdXJjZWRlZl91aWRcIjogXCIxXzM1OVwiXHJcbiAgICAgICAgfVxyXG4gICAgXVxyXG4gICB9XHJcblxyXG4gICBjbGVhckRlZmF1bHRNZW51KClcclxuICAge1xyXG4gICAgICAgIHRoaXMuRGVmYXVsdE1lbnU9W11cclxuICAgfVxyXG4gICBcclxuICAgbG9hZERlZmF1bHRNZW51KG92ZXIpXHJcbiAgIHsgICAgXHJcbiAgICAgICAgaWYgKHRoaXMubmF2YmFySXRlbXMubGVuZ3RoPT0wIHx8IG92ZXIpIHsgICBcclxuICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0TWVudSgpXHJcbiAgICAgICAgICAgIGlmICghdGhpcy5tZW51TGlzdFsnMF8wXzAnXT8ubWVudXMpIHRoaXMubWVudUxpc3RbJzBfMF8wJ10gPSB7bWVudXM6dGhpcy5EZWZhdWx0TWVudX1cclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50TWVudSA9IHRoaXMubWVudUxpc3RbJzBfMF8wJ10gXHJcbiAgICAgICAgICAgLy8gdGhpcy5uYXZiYXJJdGVtcyA9IHRoaXMuZ2V0TmF2YmFyc0Zyb21NZW51cygwLDAsdHJ1ZSwwLDApIFxyXG5cdFx0XHR0aGlzLnNldE5hdmJhckl0ZW1zV2l0aCh0aGlzLmdldE5hdmJhcnNGcm9tTWVudXMoMCwwLHRydWUsMCwwKSApXHJcbiAgICAgICAgfVxyXG4gICB9XHJcbiAgIFxyXG4gICBzZXROYXZiYXJJdGVtc1dpdGgobmV3SXRlbXMpIFxyXG4gICB7XHJcblx0ICAgIHRoaXMubmF2YmFySXRlbXMgPSBuZXdJdGVtc1xyXG4gICB9XHJcbiAgIFxyXG4gICBzZXRTaWRlTWVudShtZW51X2lkLG1lbnVfdmVyc2lvbixtZW51cyxwYXJhbXMpXHJcbiAgIHtcclxuICAgICAgaWYgKHRoaXMuc2lkZU1lbnUuaWQgIT0gbWVudV9pZCB8fCB0aGlzLnNpZGVNZW51LnZlcnNpb24gIT0gbWVudV92ZXJzaW9uKXtcclxuICAgICAgICB0aGlzLnNpZGVNZW51LmlkPW1lbnVfaWRcclxuICAgICAgICB0aGlzLnNpZGVNZW51LnZlcnNpb249bWVudV92ZXJzaW9uXHJcbiAgICAgICAgdGhpcy5zaWRlTWVudS5tZW51cyA9IG1lbnVzXHJcbiAgICAgICAgdGhpcy5zaWRlTWVudS5wYXJhbXMgPSBwYXJhbXMgIFxyXG4gICAgICB9XHJcbiAgIH0gXHJcblxyXG4gICAgY2xlYXJTaWRlTWVudSgpIHsgXHJcbiAgICAgICB0aGlzLnNpZGVNZW51PXt9XHJcbiAgIH0gXHJcblxyXG4gICAgc2V0UHVibGljUGFnZSh2YWwpIHsgXHJcbiAgICAgICB0aGlzLnB1YmxpY1BhZ2U9dmFsXHJcbiAgIH0gXHJcbiAgICByZXNldFB1YmxpY1BhZ2UoKSB7IFxyXG4gICAgICAgdGhpcy5wdWJsaWNQYWdlPWZhbHNlXHJcbiAgIH0gXHJcbiAgIFxyXG4gICAgc2V0U2lkZU1lbnVWaXNpYmlsaXR5KHZpc2libGUpe1xyXG4gICAgIHRoaXMuc2lkZU1lbnVWaXNpYmxlPXZpc2libGUgIFxyXG4gICB9OyBcclxuICAgXHJcbiAgIGdldFNpZGVNZW51VmlzaWJpbGl0eSgpe1xyXG4gICAgIHJldHVybiB0aGlzLnNpZGVNZW51VmlzaWJsZSAgXHJcbiAgIH07IFxyXG4gICAgXHJcblx0dG9nZ2xlU2lkZU1lbnVWaXNpYmlsaXR5KCkge1xyXG4gICAgIHRoaXMuc2lkZU1lbnVWaXNpYmxlPSF0aGlzLnNpZGVNZW51VmlzaWJsZSAgXHJcbiAgIH07IFxyXG4gXHJcblxyXG4gICBnZXRNZW51RWRpdE1vZGUgKCl7XHJcbiAgIHJldHVybiB0aGlzLmVkaXRNb2RlO1xyXG4gICB9XHJcblxyXG4gICBnZXRTaWRlTWVudVNpemUoICl7XHJcbiAgIHJldHVybiB0aGlzLnNpZGVNZW51TGFyZ2U7IFxyXG4gICB9IFxyXG4gXHJcbiAgIGNoYW5nZVNpZGVNZW51U2l6ZSAoKXtcclxuICAgICAgdGhpcy5zaWRlTWVudUxhcmdlPSF0aGlzLnNpZGVNZW51TGFyZ2U7XHJcbiAgIH0gXHJcblxyXG4gICBzZXRNZW51RWRpdE1vZGUgKG1vZGVWYWx1ZSl7XHJcbiAgICAgIHRoaXMuZWRpdE1vZGU9bW9kZVZhbHVlOyAgXHJcbiAgICAgIHRoaXMubmF2YmFyU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zaWRlTWVudVNlbGVjdGVkID0gZmFsc2U7XHJcbiAgIH1cclxuIFxyXG4gIGdldFNlbGVjdGVkTmF2YmFyKCl7XHJcbiAgIHJldHVybiB0aGlzLnNlbGVjdGVkTmF2YmFyO1xyXG4gfVxyXG4gXHJcbiAgY2hlY2tJZkFjdGl2ZSA9IGZ1bmN0aW9uKG5pKVxyXG4gIHtcclxuICAgICAgIHJldHVybiAgbmkuc19tZW51c19QYXJhbXMucGFnZXN0YXRlPT10aGlzLmN1cnJlbnRUYXJnZXQgJiYgKG5pLnNfbWVudXNfVGFyZ2V0PT10aGlzLmN1cnJlbnRQYWdlSWQgfHwgbmkuc19tZW51c19QYXJhbXMucGFnZXN0YXRlIT0nYXBwLm5hdmJhci52cGFnZScpXHJcbiAgfSAgIFxyXG4gIFxyXG4gICAgZ2V0Q3VycmVudE5hdmJhcklkICgpeyAgICBcclxuICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE5hdmJhcklkO1xyXG5cdCB9O1xyXG4gICAgICBcclxuXHQgIFxyXG4gIFxyXG4gIHNldEN1cnJlbnROYXZiYXJJZCAobmF2YmFySWQsbGFuZ3VhZ2Upe1xyXG4gICAgICAgICBcclxuICAgICAgICAgaWYgKCF0aGlzLm5hdmJhclNlbGVjdGVkIHx8IHRoaXMuc2lkZU1lbnVTZWxlY3RlZCkgdGhpcy5sb2FkaW5nTWVudT10cnVlOyBcclxuICAgICAgICAgdGhpcy5jdXJyZW50TmF2YmFySWQ9bmF2YmFySWQ7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICB0aGlzLnNpZGVNZW51U2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgdGhpcy5zZWxlY3RlZFNpZGVNZW51SWQgPSBudWxsO1xyXG4gICAgICAgICBpZiAodGhpcy5jdXJyZW50TmF2YmFySWQhPW51bGwpIHRoaXMubmF2YmFyU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICBcclxuICAgICAgICAgXHJcbiAgICAgICAgIHZhciB0eXBlPTA7XHJcbiAgICAgICAgIGlmICh0aGlzLmVkaXRNb2RlKSB0eXBlPTE7XHJcbiAgICAgICAgIHRoaXMuc2V0Q3VycmVudE5hdmJhck9iamVjdEJ5SWQobGFuZ3VhZ2UsdHlwZSk7XHJcbiAgICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICAgdGhpcy4kdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICBzZWxmLmxvYWRpbmdNZW51PWZhbHNlO1xyXG4gICAgICAgICB9KTtcclxuXHR9XHJcblxyXG4gICAgdXBkYXRlTmF2YmFyU2VsZWN0ZWRTaWRlTWVudSAoKVxyXG5cdHsgICAgIFxyXG4gICAgICAgICBsZXQgaSxqOyAgICBcclxuICAgICAgICAgZm9yIChpPTA7aTx0aGlzLm5hdmJhckl0ZW1zLmxlbmd0aDtpKyspXHJcbiAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgaWYgKHRoaXMubmF2YmFySXRlbXNbaV0uc19tZW51c19pZCA9PSB0aGlzLnNlbGVjdGVkU2lkZU1lbnUuc19tZW51c19OYXZiYXIpXHJcbiAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgZm9yIChqPTA7ajx0aGlzLm5hdmJhckl0ZW1zW2ldLlNpZGVNZW51cy5sZW5ndGg7aisrKVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hdmJhckl0ZW1zW2ldLlNpZGVNZW51c1tqXS5zX21lbnVzX2lkID09IHRoaXMuc2VsZWN0ZWRTaWRlTWVudUlkKVxyXG4gICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdmJhckl0ZW1zW2ldLlNpZGVNZW51c1tqXSA9IHRoaXMuc2VsZWN0ZWRTaWRlTWVudTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgIH1cclxuICAgICAgICBcclxuXHRcdH1cclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICBzZXRTZWxlY3RlZE5hdmJhciAobmF2YmFyKXtcclxuICAgICAgICAgXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5hdmJhcj1uYXZiYXI7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TmF2YmFySWQ9bmF2YmFyPy5zX21lbnVzX2lkO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFRhcmdldD1uYXZiYXI/LnNfcGFnZXNfVGFyZ2V0O1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2VJZD1uYXZiYXI/LnNfbWVudXNfVGFyZ2V0X2lkO1xyXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRTaWRlbWVudShudWxsKTsgICAgICAgICAgICAgICBcclxuICAgICAgICBcclxuXHRcdH1cclxuXHJcbiAgICBzZXRTZWxlY3RlZEFwcE1lbnUgKHRhcmdldCxwYWdlX2lkKXtcclxuICAgICAgICAgXHJcbiAgICAgICAgdGhpcy5jdXJyZW50VGFyZ2V0PXRhcmdldDtcclxuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlSWQ9cGFnZV9pZDsgICAgICAgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgICBzZXRTZWxlY3RlZEFwcE1lbnVXaXRoUGFyYW1zICh0YXJnZXQscGFyYW1zKXtcclxuICAgICAgICAgXHJcbiAgICAgICAgdGhpcy5jdXJyZW50VGFyZ2V0PXRhcmdldDtcclxuICAgICAgICBpZiAocGFyYW1zPy5wYWdlaWQhPXVuZGVmaW5lZCkgdGhpcy5jdXJyZW50UGFnZUlkPXBhcmFtcz8ucGFnZWlkOyAgICAgICAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICB9XHJcbiAgICAgIFxyXG4gICAgICB1cGRhdGVTZWxlY3RlZE5hdmJhciAoKXtcclxuICAgICAgICAgXHJcbiAgICAgICAgIGxldCBpO1xyXG4gICAgICAgICBmb3IgKGk9MDtpPHRoaXMubmF2YmFySXRlbXMubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICBpZiAodGhpcy5uYXZiYXJJdGVtc1tpXS5zX21lbnVzX2lkID09IHRoaXMuc2VsZWN0ZWROYXZiYXIuc19tZW51c19pZClcclxuICAgICAgICAgICAgICAgeyAgXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZiYXJJdGVtc1tpXT0gdGhpcy5zZWxlY3RlZE5hdmJhcjtcclxuICAgICAgICAgICAgICAgICAgICBicmVhazsgXHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgfSAgICBcclxuXHR9XHJcbiAgICAgIFxyXG4gICAgIHNldERlbGV0ZSAobmF2YmFySWQsaW5kZXgpe1xyXG4gICAgICAgICBcclxuICAgICAgICAgdGhpcy5uYXZiYXJJdGVtc1tpbmRleF0uZGVsZXRlPSB0cnVlO1xyXG4gICAgICAgICBpZiAodGhpcy5uYXZiYXJJdGVtc1tpXS5zX21lbnVzX2lkID09PSBudWxsKSB0aGlzLm5hdmJhckl0ZW1zW2ldLnNwbGljZShpbmRleCwxKTtcclxuICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGZvciAoaT0wO2k8dGhpcy5uYXZiYXJJdGVtcy5sZW5ndGg7aSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hdmJhckl0ZW1zW2ldLnNfbWVudXNfaWQgPT0gbmF2YmFySWQpXHJcbiAgICAgICAgICAgICAgICAgIHsgIFxyXG4gICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdmJhckl0ZW1zW2ldLmRlbGV0ZT0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyBcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgIH1cclxuXHR9XHJcbiAgICAgIFxyXG4gICAgICBhZGROZXdTaWRlTWVudVRvTmF2YmFyKHNpZGVNZW51KXtcclxuICAgICAgICAgXHJcbiAgICAgICAgIGxldCBpOyAgICBcclxuICAgICAgICAgZm9yIChpPTA7aTx0aGlzLm5hdmJhckl0ZW1zLmxlbmd0aDtpKyspXHJcbiAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgaWYgKHRoaXMubmF2YmFySXRlbXNbaV0uc19tZW51c19pZCA9PSB0aGlzLmN1cnJlbnROYXZiYXJJZClcclxuICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZiYXJJdGVtc1tpXS5TaWRlTWVudXMucHVzaCAoc2lkZU1lbnUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgIH1cclxuICAgICAgICBcclxuXHRcdH1cclxuICAgICAgICBcclxuICAgc2V0U2VsZWN0ZWRTaWRlbWVudSAobWVudUlkKXtcclxuICAgICAgXHJcbiAgICAgIGlmICh0aGlzLm5hdmJhclNlbGVjdGVkICYmICF0aGlzLnNpZGVNZW51U2VsZWN0ZWQpIHRoaXMubG9hZGluZ01lbnU9dHJ1ZTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFNpZGVNZW51SWQ9bWVudUlkO1xyXG4gICAgICB0aGlzLm5hdmJhclNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgIGlmIChtZW51SWQhPW51bGwpIFxyXG4gICAgICAgICAgdGhpcy5zaWRlTWVudVNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgZWxzZSBcclxuICAgICAgICAgIHRoaXMuc2lkZU1lbnVTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNldEN1cnJlbnRTaWRlTWVudU9iamVjdEJ5SWQoKTtcclxuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgICB0aGlzLiR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgc2VsZi5sb2FkaW5nTWVudT1mYWxzZTtcclxuICAgICAgfSk7XHJcbiB9XHJcbiBcclxuICAgIHNldFNlbGVjdGVkQXBwIChhcHAsc3RhdGVOYW1lLHBhcmFtcyl7XHJcbiAgICBcclxuXHJcbiAgICAgdGhpcy5zZWxlY3RlZEFwcD1hcHA7XHJcbiAgICAgdGhpcy5hcHBTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgaWYgKHN0YXRlTmFtZSE9PXVuZGVmaW5lZCkgdGhpcy5jdXJyZW50VGFyZ2V0PXN0YXRlTmFtZVxyXG4gICAgIGlmIChwYXJhbXM/LnBhZ2VpZCE9PXVuZGVmaW5lZCkgdGhpcy5jdXJyZW50UGFnZUlkPXBhcmFtcz8ucGFnZWlkXHJcbiAgICAgICAgXHJcbiAgICB9O1xyXG4gICAgXHJcblxyXG4gICAgIGlzQXBwU2VsZWN0ZWQgKCl7ICBcclxuXHRcdHJldHVybiB0aGlzLmFwcFNlbGVjdGVkO1xyXG4gICAgfTtcclxuIFxyXG5cclxuXHRnZXRPcmdTY2hlbWFzIChvcmdJZCkge1xyXG4gICAgICAgICBsZXQgdXJsPScuLi9hcGkvZ2V0LW9yZy1zY2hlbWFzLycrb3JnSWQrJy8nO1xyXG4gICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgICAgIHZhciBpbnN0YW5jZSA9IHRoaXM7XHJcbiAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCwgdHJ1ZSkudGhlbihyZXNwb25zZSA9PnsgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHsgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsIHN0YXR1czogcmVzcG9uc2UuZGF0YS5zdGF0dXN9KSAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7ZGF0YTpyZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgIH07XHJcbiAgICAgIFxyXG5cdCAgXHJcblx0XHJcblx0Z2V0Y3VycmVudEVudigpXHJcblx0e1xyXG5cdFx0aWYgKCF0aGlzLiRyb290U2NvcGUuZ2xvYmFscz8uZW52aXJvbm1lbnRzKSBcdFxyXG5cdFx0XHRyZXR1cm5cdFxyXG5cdFx0cmV0dXJuIHRoaXMuJHJvb3RTY29wZS5nbG9iYWxzPy5lbnZpcm9ubWVudHM/Llt0aGlzLiRyb290U2NvcGU/Lmdsb2JhbHM/LmN1cnJlbnRFbnZdXHJcbiAgXHJcblx0fVxyXG5cdFxyXG5cclxuICAgZ2V0U2VsZWN0ZWRTaWRlbWVudSAoKXtcclxuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRTaWRlTWVudTtcclxuICBcclxuIH1cclxuICBnZXRMb2FkaW5nTWVudSAoKXtcclxuICAgICAgcmV0dXJuIHRoaXMubG9hZGluZ01lbnU7XHJcbiAgXHJcbiB9XHJcbiAgXHJcbiAgICAgICBcclxuICAgIFxyXG4gICAgZ2V0VXNlcnNHcm91cHNGb3JNZW51IChtZW51SWQsbGFuZ3VhZ2Upe1xyXG4gICAgICBcclxuICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgICAgbGV0IHVybCA9ICcuLi9hcGkvZ2V0LXVzZXJzLWdyb3Vwcy1tZW51cy8nK21lbnVJZCsnLycrbGFuZ3VhZ2UrJy8nO1xyXG4gICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXM9PT0yMDApIGRlZmVycmVkLnJlc29sdmUocmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZGVmZXJyZWQucmVqZWN0KHJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgfSk7XHJcbiAgICAgICBcclxuICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG5cdH07XHJcblx0XHQgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgXHJcbiAgICBQcm9jZXNzTWVudUNsaWNrIChtZW51SWQpe1xyXG4gICAgLy9kZWJ1Z2dlclxyXG4gICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgICBsZXQgdXJsID0gJy4uL2FwaS9wcm9jZXNzLW1lbnUtY2xpY2svJyttZW51SWQrJy8nO1xyXG4gICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzPT09MjAwKSBkZWZlcnJlZC5yZXNvbHZlKHJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGRlZmVycmVkLnJlamVjdChyZXNwb25zZS5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgIFxyXG4gICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcblx0XHQgIH07XHJcbiAgIFxyXG4gIFxyXG4gICAgICAgICAgIFxyXG4gICAgXHJcbiAgICBcclxuICAgIHNhdmVNZW51T3JkZXIgKGxhbmd1YWdlLHR5cGUsYXBwSWQpe1xyXG4gICAgICBcclxuICAgICAgIFxyXG4gICAgICAgdmFyIG1lbnU7XHJcbiAgICAgICBpZiAoYXBwSWQ9PXVuZGVmaW5lZCkgYXBwSWQ9XCIwXCI7XHJcbiAgICAgICBcclxuICAgICAgIGlmICh0eXBlPT0wKSBtZW51ID0gdGhpcy5uYXZiYXJJdGVtcztcclxuICAgICAgIGVsc2UgbWVudSA9IHRoaXMuc2VsZWN0ZWROYXZiYXIuU2lkZU1lbnVzO1xyXG4gICAgICAgXHJcbiAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgICBcclxuICAgICAgICAgbGV0IHVybCA9ICcuLi9hcGkvc2F2ZS1tZW51LW9yZGVyLycrbGFuZ3VhZ2UrJy8nO1xyXG4gICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsLG1lbnUpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiBcclxuICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzPT09MjAwIHx8IHJlc3BvbnNlLnN0YXR1cz09PTIwMSkgZGVmZXJyZWQucmVzb2x2ZShyZXNwb25zZS5kYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICBlbHNlIGRlZmVycmVkLnJlamVjdChyZXNwb25zZS5kYXRhKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICB9KTtcclxuICAgICAgIFxyXG4gICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcblx0XHQgIH07XHJcbiAgIFxyXG4gICBcclxuICAgIFxyXG4gICBzYXZlRnVsbEFwcE1lbnUgKHJlc291cmNlSWQsbmF2YmFySXRlbXNMZWZ0LG5hdmJhckl0ZW1zUmlnaHQsIHNpZGVNZW51SXRlbXMsZGVzY3JpcHRpb24sdmVyKXtcclxuICAgICAgXHJcbiAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgICAgaWYgKHJlc291cmNlSWQgPT0gdW5kZWZpbmVkIHx8IHJlc291cmNlSWQ9PTAgfHwgcmVzb3VyY2VJZD09bnVsbCkgZGVmZXJyZWQucmVqZWN0KFwiTWVudSBpZCBpcyBcIityZXNvdXJjZUlkK1wiIVwiKTtcclxuICAgICAgaWYgKHZlcj09dW5kZWZpbmVkKSB2ZXI9MVxyXG4gICAgICBpZiAoZGVzY3JpcHRpb249PXVuZGVmaW5lZCkgZGVzY3JpcHRpb249J3YxJ1xyXG4gICAgICAgICBsZXQgdXJsID0gICcuLi9hcGkvc2F2ZS1mdWxsLW1lbnUvJztcclxuICAgICAgICAgbGV0IHBvc3RfZGF0YT17J3Jlc291cmNlJzpyZXNvdXJjZUlkLCduYXZiYXJJdGVtc0xlZnQnOm5hdmJhckl0ZW1zTGVmdCwnbmF2YmFySXRlbXNSaWdodCc6bmF2YmFySXRlbXNSaWdodCwnc2lkZU1lbnVJdGVtcyc6c2lkZU1lbnVJdGVtcywgJ2Rlc2MnOmRlc2NyaXB0aW9uLCd2ZXJzaW9uJzp2ZXJ9O1xyXG4gICAgICAgICBcclxuICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxwb3N0X2RhdGEpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXM9PT0yMDAgfHxyZXNwb25zZS5zdGF0dXM9PT0yMDEgKSBkZWZlcnJlZC5yZXNvbHZlKHJlc3BvbnNlLmRhdGEpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZGVmZXJyZWQucmVqZWN0KHJlc3BvbnNlLmRhdGEpOyAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcblx0fTtcclxuICAgXHJcbiAgXHJcbiAgICBcclxuICAgIHNhdmVIb21lUGFnZSAoaG9tZVBhZ2VQcm9wcyl7XHJcbiAgICAgIFxyXG4gICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgICAgIGxldCB1cmwgPSAgJy4uL2FwaS9zYXZlLWhvbWUtcGFnZS8nO1xyXG4gICAgICAgICAvL2xldCBwb3N0X2RhdGE9eydyZXNvdXJjZSc6cmVzb3VyY2VJZCwnbmF2YmFySXRlbXNMZWZ0JzpuYXZiYXJJdGVtc0xlZnQsJ25hdmJhckl0ZW1zUmlnaHQnOm5hdmJhckl0ZW1zUmlnaHR9O1xyXG4gICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsLGhvbWVQYWdlUHJvcHMpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXM9PT0yMDAgfHwgcmVzcG9uc2Uuc3RhdHVzPT09MjAxKSBkZWZlcnJlZC5yZXNvbHZlKGRhdGEpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZGVmZXJyZWQucmVqZWN0KGRhdGEpOyAgICAgICAgICAgICAgICBcclxuICAgICAgICAgfSk7XHJcbiAgICAgICAgIFxyXG5cdFx0XHRcclxuICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG5cdFx0ICB9O1xyXG4gICAgICBcdFx0ICBcclxuICAgICAgICAgICAgICAgXHRcdCAgXHJcbiBcclxuICAgIENsZWFyICgpeyAgICBcclxuICAgIFx0XHJcbiAgICAgICAgdGhpcy5zZXROYXZiYXJJdGVtc1dpdGgoW10pXHJcbiAgICAgICBcclxuICAgICAgICB0aGlzLm1lbnVMaXN0ID0ge307XHJcbiAgICAgICAgdGhpcy5tZW51c1VzZXIgPSB7fTtcclxuICAgICAgICB0aGlzLnBhZ2VMaXN0ID0ge307XHJcbiAgICAgICAgdGhpcy5uYXZiYXIgPSB7fTtcclxuICAgICAgICB0aGlzLm5hdmJhckl0ZW1zID0gW107IFxyXG4gICAgICAgIHRoaXMuc2lkZW1lbnVzID0ge307XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TWVudSA9IHt9O1xyXG4gICAgICAgIHRoaXMuY3VycmVudE5hdmJhcklkPW51bGw7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZUlkPW51bGw7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50VGFyZ2V0PW51bGw7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50QXBwPW51bGw7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNpZGVNZW51SWQ9bnVsbDtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQXBwPW51bGw7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RW52PW51bGw7XHJcbiAgICAgICAgdGhpcy5hcHBTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZWRpdE1vZGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmxvYWRpbmdNZW51ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaWRlTWVudUxhcmdlPXRydWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5hdmJhciA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNpZGVNZW51ID0gbnVsbDtcclxuICAgICAgICB0aGlzLm5hdmJhclNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaWRlTWVudVNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaWRlTWVudVZpc2libGU9ZmFsc2VcclxuICAgICAgICB0aGlzLnNpZGVNZW51PXt9XHJcbiAgICAgICAgdGhpcy5wdWJsaWNQYWdlPWZhbHNlXHJcbiAgICAgICAgdGhpcy5EZWZhdWx0TWVudT1bXVxyXG4gICAgICAgXHJcblx0IH07XHJcbiAgICAgICAgXHJcbiAgICBcclxuICAgIGdldE1lbnVzIChsYW5ndWFnZSx0eXBlLHJlZnJlc2gsYXBwSWQsdmVyc2lvbil7XHJcbiAgICAgIC8vTUlHT1IgVE9ETyAtIFBPU0VCTk8gVVNFUkUgSSBHUlVQRSBTS0lOVVRJIEEgTUFLTlVUSSBTQSBHRVQtTUVOVVMgREEgU0UgU01BTkpJIEJST0ogU0VLTkRJXHJcbiAgICAgIFxyXG4gICAgICAgdmFyIGluc3RhbmNlID0gdGhpcztcclxuICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgICAgIHZhciBsX3JlZnJlc2ggPSByZWZyZXNoO1xyXG4gICAgICAgaWYgKGxfcmVmcmVzaD09dW5kZWZpbmVkKSBsX3JlZnJlc2ggPSBmYWxzZTtcclxuICAgICAgIGlmIChhcHBJZD09dW5kZWZpbmVkKSBhcHBJZCA9IFwiMFwiO1xyXG4gICAgICAgIGlmICh2ZXJzaW9uPT11bmRlZmluZWQpIHZlcnNpb24gPSBcIjBcIjtcclxuICAgICAgIHZhciB1cmwgPSAgJy4uL2FwaS9nZXQtbWVudXMvJytsYW5ndWFnZSsnLycrdHlwZSsnLycrYXBwSWQrJy8nK3ZlcnNpb24rJy8nXHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgIGlmICh0aGlzLm1lbnVMaXN0WycnICsgbGFuZ3VhZ2UgKyB0eXBlICsgYXBwSWRdID09IHVuZGVmaW5lZCB8fCBsX3JlZnJlc2gpe1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXM9PT0yMDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZS5tZW51TGlzdFsnJytsYW5ndWFnZSt0eXBlK2FwcElkXSE9dW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLm1lbnVMaXN0WycnICsgbGFuZ3VhZ2UgKyB0eXBlICsgYXBwSWRdLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLm1lbnVMaXN0WycnICsgbGFuZ3VhZ2UgKyB0eXBlICsgYXBwSWRdID0gcmVzcG9uc2UuZGF0YS5tZW51cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZGVmZXJyZWQucmVqZWN0KHJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICB9KTtcclxuICAgICAgICAgICBcclxuICAgICAgfWVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh0aGlzLm1lbnVMaXN0WycnICsgbGFuZ3VhZ2UgKyB0eXBlICsgYXBwSWRdLCAyMDApO1xyXG4gICAgICB9XHJcblx0XHJcbiAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuXHR9O1xyXG4gICAgICAgICAgIFxyXG4gICAgXHJcbiAgICBnZXRNZW51c0V4ZSAobWVudUlkLHR5cGUsdmVyc2lvbixyZWZyZXNoKXtcclxuICAgICAgLy9NSUdPUiBUT0RPIC0gUE9TRUJOTyBVU0VSRSBJIEdSVVBFIFNLSU5VVEkgQSBNQUtOVVRJIFNBIEdFVC1NRU5VUyBEQSBTRSBTTUFOSkkgQlJPSiBTRUtORElcclxuICAgICAgXHJcbiAgICAgICB2YXIgaW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgICAgdmFyIGxfcmVmcmVzaCA9IHJlZnJlc2g7XHJcbiAgICAgICBpZiAobF9yZWZyZXNoPT11bmRlZmluZWQpIGxfcmVmcmVzaCA9IGZhbHNlO1xyXG4gICAgICAgaWYgKHZlcnNpb249PXVuZGVmaW5lZCkgdmVyc2lvbiA9IFwiMFwiO1xyXG4gICAgICAgdmFyIHVybCA9ICAnLi4vYXBpL2dldC1tZW51cy1leGUvJyttZW51SWQrJy8nK3R5cGUrJy8nK3ZlcnNpb24rJy8nXHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgIGlmICh0aGlzLm1lbnVMaXN0W3R5cGUrJ18nK21lbnVJZCsnXycrdmVyc2lvbl0gPT0gdW5kZWZpbmVkIHx8IGxfcmVmcmVzaCl7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cz09PTIwMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlLm1lbnVMaXN0W3R5cGUrJ18nK21lbnVJZCsnXycrdmVyc2lvbl0hPXVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5tZW51TGlzdFt0eXBlKydfJyttZW51SWQrJ18nK3ZlcnNpb25dLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLm1lbnVMaXN0W3R5cGUrJ18nK21lbnVJZCsnXycrdmVyc2lvbl0gPSByZXNwb25zZS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUocmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBkZWZlcnJlZC5yZWplY3QocmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgIH0pO1xyXG4gICAgICAgICAgIFxyXG4gICAgICB9ZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHRoaXMubWVudUxpc3RbdHlwZSsnXycrbWVudUlkKydfJyt2ZXJzaW9uXSwgMjAwKTtcclxuICAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07XHJcblx0XHJcblx0XHJcbiBzZXRDdXJyZW50TWVudSAoKVxyXG4ge1xyXG4gICBsZXQgaW5zdGFuY2UgPSB0aGlzXHJcbiAgICAgIHRoaXMuUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZBbGwoaW5zdGFuY2UuY3VycmVudEFwcC5tZW51SWQpLnRoZW4oXHJcblx0ICBmdW5jdGlvbihkYXRhKSB7ICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY3VycmVudE1lbnUgPSBkYXRhLmRhdGE7XHJcbiAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLk1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgIH0pO1xyXG4gICB9XHJcblxyXG5cclxuICAgIHJlc2V0Q3VycmVudE1lbnVXaXRoUHJvcHMgKClcclxuICAgeyAgICBcclxuICAgICAgICB0aGlzLmN1cnJlbnRNZW51ID0ge1BhcmFtZXRlcnM6e319IFxyXG4gICB9XHJcblxyXG4gICBzZXRDdXJyZW50TWVudVdpdGhQcm9wcyAodHlwZSxtZW51SWQsdmVyc2lvbilcclxuICAgeyAgICBcclxuICAgICAgICB0aGlzLmN1cnJlbnRNZW51ID0ge1BhcmFtZXRlcnM6dGhpcy5tZW51TGlzdFt0eXBlKydfJyttZW51SWQrJ18nK3ZlcnNpb25dLnByb3BlcnRpZXN9IFxyXG4gICB9XHJcblx0XHJcblx0XHJcbiAgICBnZXROYXZiYXJzRnJvbU1lbnVzIChsYW5ndWFnZSx0eXBlLHJlZnJlc2gscmVzb3VyY2VJZCx2ZXJzaW9uKVxyXG5cdHtcclxuICAgICAgXHJcbiAgICAgICAgaWYgKHJlc291cmNlSWQ9PXVuZGVmaW5lZCkgcmVzb3VyY2VJZD1cIjBcIjtcclxuICAgICAgICBpZiAodmVyc2lvbj09dW5kZWZpbmVkKSB2ZXJzaW9uPVwiMFwiO1xyXG4gICAgICBcclxuICAgICAgaWYgKHRoaXMubmF2YmFyW3R5cGUrJ18nK3Jlc291cmNlSWQrJ18nK3ZlcnNpb25dPT11bmRlZmluZWQgfHwgcmVmcmVzaCl7XHJcbiAgICAgXHJcbiAgICAgIHZhciBwb3M9LTE7XHJcbiAgICAgIFxyXG4gICAgIFxyXG4gICAgICAgXHJcbiAgICAgIGlmICh0aGlzLm1lbnVMaXN0W3R5cGUrJ18nK3Jlc291cmNlSWQrJ18nK3ZlcnNpb25dPT11bmRlZmluZWQpXHJcbiAgICAgIHtcclxuICAgICAgXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgXHJcbiAgICAgIH1cclxuICAgICBcclxuICAgICAgIHRoaXMubmF2YmFyW3R5cGUrJ18nK3Jlc291cmNlSWQrJ18nK3ZlcnNpb25dID0gW107XHJcbiAgICAgICB0aGlzLnNpZGVtZW51c1t0eXBlKydfJytyZXNvdXJjZUlkKydfJyt2ZXJzaW9uXSA9IFtdO1xyXG4gICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgZm9yICh2YXIgaT0wO2k8dGhpcy5tZW51TGlzdFt0eXBlKydfJytyZXNvdXJjZUlkKydfJyt2ZXJzaW9uXS5tZW51cy5sZW5ndGg7aSsrKVxyXG4gICAgICAge1xyXG4gICAgICAgICAgaWYgKHRoaXMubWVudUxpc3RbdHlwZSsnXycrcmVzb3VyY2VJZCsnXycrdmVyc2lvbl0ubWVudXNbaV0uc19tZW51c19NZW51UG9zaXRpb24hPXVuZGVmaW5lZCl7XHJcbiAgICAgICAgICAgICAgIGlmICh0aGlzLm1lbnVMaXN0W3R5cGUrJ18nK3Jlc291cmNlSWQrJ18nK3ZlcnNpb25dLm1lbnVzW2ldLnNfbWVudXNfTWVudVBvc2l0aW9uLmlkIT11bmRlZmluZWQpICBcclxuICAgICAgICAgICAgICAgICAgIHRoaXMubWVudUxpc3RbdHlwZSsnXycrcmVzb3VyY2VJZCsnXycrdmVyc2lvbl0ubWVudXNbaV0uc19tZW51c19NZW51UG9zaXRpb24gPSB0aGlzLm1lbnVMaXN0W3R5cGUrJ18nK3Jlc291cmNlSWQrJ18nK3ZlcnNpb25dLm1lbnVzW2ldLnNfbWVudXNfTWVudVBvc2l0aW9uLmlkIC8vTUlHT1IgLSB0ZW1wb3Jhcnkgd2hlbiBtZW51cG9zaXRpb24gaXMgb2JqZWN0ICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgaWYgKHRoaXMubWVudUxpc3RbdHlwZSsnXycrcmVzb3VyY2VJZCsnXycrdmVyc2lvbl0ubWVudXNbaV0uc19tZW51c19NZW51UG9zaXRpb24uc3Vic3RyKDAsNik9PVwibmF2YmFyXCIpXHJcbiAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIHBvcyA9dGhpcy5uYXZiYXJbdHlwZSsnXycrcmVzb3VyY2VJZCsnXycrdmVyc2lvbl0ubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuc19tZW51c19pZDsgfSkuaW5kZXhPZih0aGlzLm1lbnVMaXN0W3R5cGUrJ18nK3Jlc291cmNlSWQrJ18nK3ZlcnNpb25dLm1lbnVzW2ldLnNfbWVudXNfaWQpO1xyXG4gICAgICAgICAgICAgICAgIGlmIChwb3M8MCkgdGhpcy5uYXZiYXJbdHlwZSsnXycrcmVzb3VyY2VJZCsnXycrdmVyc2lvbl0ucHVzaCh0aGlzLm1lbnVMaXN0W3R5cGUrJ18nK3Jlc291cmNlSWQrJ18nK3ZlcnNpb25dLm1lbnVzW2ldKTtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIH1lbHNlIGlmICh0aGlzLm1lbnVMaXN0W3R5cGUrJ18nK3Jlc291cmNlSWQrJ18nK3ZlcnNpb25dLm1lbnVzW2ldLnNfbWVudXNfTWVudVBvc2l0aW9uPT1cInNpZGVtZW51XCIpXHJcbiAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIHBvcyA9dGhpcy5zaWRlbWVudXNbdHlwZSsnXycrcmVzb3VyY2VJZCsnXycrdmVyc2lvbl0ubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuc19tZW51c19pZDsgfSkuaW5kZXhPZih0aGlzLm1lbnVMaXN0W3R5cGUrJ18nK3Jlc291cmNlSWQrJ18nK3ZlcnNpb25dLm1lbnVzW2ldLnNfbWVudXNfaWQpO1xyXG4gICAgICAgICAgICAgICAgICBpZiAocG9zPDApIHRoaXMuc2lkZW1lbnVzW3R5cGUrJ18nK3Jlc291cmNlSWQrJ18nK3ZlcnNpb25dLnB1c2godGhpcy5tZW51TGlzdFt0eXBlKydfJytyZXNvdXJjZUlkKydfJyt2ZXJzaW9uXS5tZW51c1tpXSk7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAvL2dldCBNZW51c1xyXG4gICAgXHJcbiAgICAgIFxyXG4gICAgZm9yICh2YXIgaj0wO2o8dGhpcy5uYXZiYXJbdHlwZSsnXycrcmVzb3VyY2VJZCsnXycrdmVyc2lvbl0ubGVuZ3RoO2orKylcclxuICAgIHtcclxuICAgICAgICAgZm9yICh2YXIgaz0wO2s8dGhpcy5zaWRlbWVudXNbdHlwZSsnXycrcmVzb3VyY2VJZCsnXycrdmVyc2lvbl0ubGVuZ3RoO2srKylcclxuICAgICAgIHtcclxuICAgICAgICBpZiAodGhpcy5uYXZiYXJbdHlwZSsnXycrcmVzb3VyY2VJZCsnXycrdmVyc2lvbl1bal0uc19tZW51c19pZD09dGhpcy5zaWRlbWVudXNbdHlwZSsnXycrcmVzb3VyY2VJZCsnXycrdmVyc2lvbl1ba10uc19tZW51c19OYXZiYXIpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaWYgKHRoaXMubmF2YmFyW3R5cGUrJ18nK3Jlc291cmNlSWQrJ18nK3ZlcnNpb25dW2pdLlNpZGVNZW51cyA9PXVuZGVmaW5lZCkgdGhpcy5uYXZiYXJbdHlwZSsnXycrcmVzb3VyY2VJZCsnXycrdmVyc2lvbl1bal0uU2lkZU1lbnVzID0gW107XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHBvcyA9dGhpcy5uYXZiYXJbdHlwZSsnXycrcmVzb3VyY2VJZCsnXycrdmVyc2lvbl1bal0uU2lkZU1lbnVzLm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLnNfbWVudXNfaWQ7IH0pLmluZGV4T2YodGhpcy5zaWRlbWVudXNbdHlwZSsnXycrcmVzb3VyY2VJZCsnXycrdmVyc2lvbl1ba10uc19tZW51c19pZCk7XHJcbiAgICAgICAgICBpZiAocG9zPDApIHRoaXMubmF2YmFyW3R5cGUrJ18nK3Jlc291cmNlSWQrJ18nK3ZlcnNpb25dW2pdLlNpZGVNZW51cy5wdXNoKHRoaXMuc2lkZW1lbnVzW3R5cGUrJ18nK3Jlc291cmNlSWQrJ18nK3ZlcnNpb25dW2tdKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgIH1cclxuICAgIH1cclxuICAgICAgXHJcbiB9XHJcbiAgICAgIGlmICh0aGlzLm5hdmJhclt0eXBlKydfJytyZXNvdXJjZUlkKydfJyt2ZXJzaW9uXS5sZW5ndGg9PTApIHRoaXMubmF2YmFyW3R5cGUrJ18nK3Jlc291cmNlSWQrJ18nK3ZlcnNpb25dID0gbnVsbDtcclxuICAgICAgcmV0dXJuIHRoaXMubmF2YmFyW3R5cGUrJ18nK3Jlc291cmNlSWQrJ18nK3ZlcnNpb25dO1xyXG59O1xyXG5cclxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKiBSRUZSRVNIIE1FTlVTICoqKioqKioqKioqKioqKioqKi8gIFxyXG5cdFxyXG4gICByZWZyZXNoTWVudXMgKGxhbmd1YWdlLHR5cGUsYXBwSWQpe1xyXG4gICAgXHJcbiAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICB2YXIgaW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgXHJcbiAgICB0aGlzLmdldE1lbnVzKGxhbmd1YWdlLHR5cGUsdHJ1ZSxhcHBJZCkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgdmFyIGxfbmF2YmFyID0gaW5zdGFuY2UuZ2V0TmF2YmFyc0Zyb21NZW51cyhsYW5ndWFnZSx0eXBlLHRydWUsYXBwSWQpO1xyXG4gICAgICAgICAgICAgICAgICBpbnN0YW5jZS5uYXZiYXJJdGVtcyA9IGxfbmF2YmFyO1xyXG4gICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKGxfbmF2YmFyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICB9KTtcclxuICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTsgICAgIFxyXG4gICAgXHJcbiAgICB9O1xyXG5cclxuICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKiBHRVQgTkFWQkFSUyBGUk9NIE1FTlUgTElTVCAqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gIFxyXG4gICAgZ2V0TmF2YmFycyAobGFuZ3VhZ2Upe1xyXG4gICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgIHZhciBsX25hdmJhcjtcclxuICAgICAgdmFyIHR5cGU9MDtcclxuICAgICAgdmFyIGFwcElkPVwiMFwiO1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEFwcCE9dW5kZWZpbmVkKVxyXG4gICAgICB7XHJcbiAgICAgICAgYXBwSWQgPSB0aGlzLnNlbGVjdGVkQXBwLmlkO1xyXG4gICAgICAgIGlmIChhcHBJZCE9XCIwXCIgJiYgYXBwSWQhPXVuZGVmaW5lZCkgdHlwZT0yO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciBpbnN0YW5jZSA9IHRoaXM7XHJcbiAgICAgIGlmICghdGhpcy5lZGl0TW9kZSlcclxuICAgICAge1xyXG4gICAgICAgXHJcbiAgICAgICAgaWYgKHRoaXMubmF2YmFyWycnK2xhbmd1YWdlK3R5cGUrYXBwSWRdPT11bmRlZmluZWQgfHwgdGhpcy5uYXZiYXJbJycrbGFuZ3VhZ2UrdHlwZSthcHBJZF09PW51bGwpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgIHRoaXMuZ2V0TWVudXMobGFuZ3VhZ2UsdHlwZSxmYWxzZSxhcHBJZCkudGhlbihmdW5jdGlvbiAoZGF0YSkgeyAgXHJcbiAgICAgICAgICAgICAgICAgIGxfbmF2YmFyID0gaW5zdGFuY2UuZ2V0TmF2YmFyc0Zyb21NZW51cyhsYW5ndWFnZSx0eXBlLGZhbHNlLGFwcElkKTtcclxuICAgICAgICAgICAgICAgICAgLy9pbnN0YW5jZS5uYXZiYXJJdGVtcyA9IGxfbmF2YmFyO1xyXG5cdFx0XHRcdCAgaW5zdGFuY2Uuc2V0TmF2YmFySXRlbXNXaXRoKGxfbmF2YmFyKVxyXG4gICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKGxfbmF2YmFyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblx0XHRcdH0pOyBcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxfbmF2YmFyID0gdGhpcy5nZXROYXZiYXJzRnJvbU1lbnVzKGxhbmd1YWdlLHR5cGUsZmFsc2UsYXBwSWQpO1xyXG4gICAgICAgICAgICAvL3RoaXMubmF2YmFySXRlbXMgPSBsX25hdmJhcjtcclxuXHRcdFx0dGhpcy5zZXROYXZiYXJJdGVtc1dpdGgobF9uYXZiYXIpXHJcbiAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUobF9uYXZiYXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHsgICAgIFxyXG5cdFx0XHR0eXBlPTE7XHJcblx0XHRcdGlmICh0aGlzLm5hdmJhclsnJytsYW5ndWFnZSt0eXBlK2FwcElkXT09dW5kZWZpbmVkIHx8IHRoaXMubmF2YmFyWycnK2xhbmd1YWdlK3R5cGUrYXBwSWRdPT1udWxsKSB7XHJcblx0XHRcdCAgIHRoaXMuZ2V0TWVudXMobGFuZ3VhZ2UsdHlwZSxmYWxzZSxhcHBJZCkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG5cdFx0XHRcdFx0ICBsX25hdmJhciA9IGluc3RhbmNlLmdldE5hdmJhcnNGcm9tTWVudXMobGFuZ3VhZ2UsdHlwZSxmYWxzZSxhcHBJZCk7XHJcblx0XHRcdFx0XHQgIGluc3RhbmNlLm5hdmJhckl0ZW1zID0gbF9uYXZiYXI7XHJcblx0XHRcdFx0XHQgIGRlZmVycmVkLnJlc29sdmUobF9uYXZiYXIpO1xyXG5cdFx0XHRcdH0pXHJcblx0XHRcdCAgXHJcblx0XHRcdH0gZWxzZVxyXG5cdFx0XHR7XHJcblx0XHRcdCAgIGxfbmF2YmFyID0gdGhpcy5nZXROYXZiYXJzRnJvbU1lbnVzKGxhbmd1YWdlLHR5cGUsZmFsc2UsYXBwSWQpO1x0ICAgXHJcblx0XHRcdCAgIC8vdGhpcy5uYXZiYXJJdGVtcyA9IGxfbmF2YmFyO1xyXG5cdFx0XHQgICB0aGlzLnNldE5hdmJhckl0ZW1zV2l0aChsX25hdmJhcilcclxuXHRcdFx0ICAgZGVmZXJyZWQucmVzb2x2ZShsX25hdmJhcik7XHJcblx0XHRcdCAgXHJcblx0XHRcdH0gICAgICBcclxuICAgICAgfVxyXG4gICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICB9O1xyXG5cdFxyXG5cdC8vLy8vLy8vLy8vL1xyXG4gICBTZXRQYWdlcygpIHtcclxuICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgICAgICAgICB2YXIgaW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgICAgICAgICB0aGlzLmdldFBhZ2VzRm9yVXNlcih0aGlzLiRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIucGFnZXM9ZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIucGFnZXNMb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5yZXNvbHZlKHRydWUpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7IFxyXG4gICAgICAgIH1cclxuIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKiogU0VUIE1FTlVTICoqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gICBTZXRNZW51cygpIHtcclxuICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgICAgICAgICB2YXIgaW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgICAgICAgICB0aGlzLmdldE1lbnVzKHRoaXMuJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmcsMCkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubmF2QmFycyA9IGluc3RhbmNlLmdldE5hdmJhcnNGcm9tTWVudXMoaW5zdGFuY2UuJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmcsMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pbnN0YW5jZS5nZW5lcmF0ZUNoaWxkcmVuTmF2YmFyUmlnaHQoMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pbnN0YW5jZS5idWlsZERyb3Bkb3duTWVudSgwLDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLiRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5uYXZiYXJMb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5yZXNvbHZlKHRydWUpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7IFxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqIFNFVCBNRU5VUyBPTiBBVVRIIE9SIFBBR0UgTE9BRCAqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuICBMb2FkTWVudXMgKHNjb3BlKSB7XHJcbiAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgIHZhciBpbnN0YW5jZSA9IHRoaXM7XHJcbiAgICAgdGhpcy5TZXRNZW51cygpLnRoZW4oZnVuY3Rpb24oZGF0YSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5TZXRQYWdlcygpLnRoZW4oZnVuY3Rpb24oZGF0YSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4kdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLiRyb290U2NvcGUuZ2xvYmFscy5JbnRlcmNlcHRvcklzQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNjb3BlLmFjdGl2aXR5LmFjdGl2aXR5TWVzc2FnZSA9IGluc3RhbmNlLlByb2Nlc3NpbmdTZXJ2aWNlLnNldEFjdGl2aXR5TXNnKCcnKTsgb3ZvIG9ka29tZW50aXJhdGkga2FkIHNlIG1pZ3JpcmEgUHJvY2Vzc2luZ1NlcnZpY2UgRVM2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZyA9IGluc3RhbmNlLiRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXRlTmFtZSA9ICdhcHAubmF2YmFyLmhvbWUnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXRlVGVtcCA9IGluc3RhbmNlLiRjb29raWVzLmdldE9iamVjdCgnbGFzdFRvU3RhdGUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXJhbXNUZW1wID0gaW5zdGFuY2UuJGNvb2tpZXMuZ2V0T2JqZWN0KCdsYXN0VG9QYXJhbXMnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuYXZiYXI9aW5zdGFuY2UuZ2V0TmF2YmFyQnlUYXJnZXROYW1lKHN0YXRlTmFtZSxsYW5nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXJhbXMgPSB7J25hdmJhcl9pZCc6bmF2YmFyfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRlZmF1bHRfcGFnZSA9IGluc3RhbmNlLiRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci51ZXA/LlBhcmFtcz8uRGVmYXVsdFBhZ2VVcmk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGVmYXVsdF9wYXJhbXMgPSBpbnN0YW5jZS4kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIudWVwPy5QYXJhbXM/LkRlZmF1bHRQYWdlUGFyYW1zO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdF9wYWdlIT11bmRlZmluZWQpIHN0YXRlTmFtZT1kZWZhdWx0X3BhZ2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdF9wYXJhbXMhPXVuZGVmaW5lZCkgcGFyYW1zPWRlZmF1bHRfcGFyYW1zO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVUZW1wIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZVRlbXAubmFtZSE9XCJhcHAubG9naW5cIiAmJiBzdGF0ZVRlbXAubmFtZSE9XCJhcHAuc3NvXCIgJiYgc3RhdGVUZW1wLm5hbWUhPVwiYXBwLmxvZ291dFwiICYmIHN0YXRlVGVtcC5uYW1lIT1cImFwcC5vdGhlcndpc2VcIiAmJiBzdGF0ZVRlbXAubmFtZSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVOYW1lPXN0YXRlVGVtcC5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtc1RlbXA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLiRzdGF0ZS5nbyhzdGF0ZU5hbWUscGFyYW1zKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsgZGVmZXJyZWQucmVqZWN0KCdMb2FkTWVudXMgZnVuY3Rpb24gLT4gU2V0IHBhZ2VzIGVycm9yJyk7fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgfWVsc2V7IGRlZmVycmVkLnJlamVjdCgnTG9hZE1lbnVzIGZ1bmN0aW9uIC0+IFNldCBtZW51cyBlcnJvcicpO31cclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTsgXHJcbiAgfVxyXG4gICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqIEdFTkVSQVRFIENISUxEUkVOIFJJR0hUIFNJREUgTUVOVSAqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuICAgXHJcbiAgZ2VuZXJhdGVDaGlsZHJlbk5hdmJhclJpZ2h0ICgpIHtcclxuICBcclxuICAgICAgICB2YXIgcGFyZW50O1xyXG4gICAgICAgIHRoaXMuJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmNNZW51cyA9IHt9O1xyXG4gICAgICAgIGlmICh0aGlzLiRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5uYXZCYXJzIT11bmRlZmluZWQgJiYgdGhpcy4kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubmF2QmFycyE9bnVsbClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHRoaXMuJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLm5hdkJhcnMubGVuZ3RoO2krKylcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHBhcmVudCA9IHRoaXMuJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLm5hdkJhcnNbaV0uc19tZW51c19QYXJlbnRJdGVtO1xyXG4gICAgICAgICAgICAgIGlmIChwYXJlbnQgIT0gdW5kZWZpbmVkICYmIHBhcmVudCAhPSBudWxsKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmNNZW51c1twYXJlbnRdPT11bmRlZmluZWQpe1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLiRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5jTWVudXNbcGFyZW50XT1bXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmNNZW51c1twYXJlbnRdLnB1c2goYW5ndWxhci5jb3B5KHRoaXMuJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLm5hdkJhcnNbaV0pKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgLy9yZXR1cm4gY01lbnVzO1xyXG4gICB9O1xyXG4gICAgXHJcbiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqIEdFVCBNRU5VUyBGT1IgTkFWQkFSICoqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAgICAgXHJcbiAgXHJcbiBnZXRNZW51c0Zvck5hdmJhciAobmF2YmFySWQsbGFuZ3VhZ2UsdHlwZSxhcHBJZCl7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciBtZW51cyA9IFtdO1xyXG4gICAgICAgICAgaWYgKHR5cGU9PXVuZGVmaW5lZCkgdHlwZT0wO1xyXG4gICAgICAgICAgaWYgKGFwcElkPT11bmRlZmluZWQpIGFwcElkPVwiMFwiO1xyXG4gICAgICAgICAgaWYgKG5hdmJhcklkICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLm5hdmJhclsnJytsYW5ndWFnZSt0eXBlK2FwcElkXSE9dW5kZWZpbmVkKXtcclxuICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wO2o8dGhpcy5uYXZiYXJbJycrbGFuZ3VhZ2UrdHlwZSthcHBJZF0ubGVuZ3RoO2orKylcclxuICAgICAgICAgICAgICAgICAge1x0ICBcclxuICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hdmJhclsnJytsYW5ndWFnZSt0eXBlK2FwcElkXVtqXS5zX21lbnVzX2lkID09IG5hdmJhcklkKVxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZW51cyA9IGFuZ3VsYXIuY29weSh0aGlzLm5hdmJhclsnJytsYW5ndWFnZSt0eXBlK2FwcElkXVtqXS5TaWRlTWVudXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHJldHVybiBtZW51cztcclxuICAgICAgICAgXHJcblx0XHQgIH07XHJcbiAgIFxyXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKiogTkVXIFNpZGVtZW51ICoqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gICAgICBuZXdTaWRlTWVudSAobGFuZykge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgdmFyIG9yZGVyID0gMDtcclxuICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWROYXZiYXIuU2lkZU1lbnVzIT11bmRlZmluZWQpIG9yZGVyID0gdGhpcy5zZWxlY3RlZE5hdmJhci5TaWRlTWVudXMubGVuZ3RoO1xyXG4gICAgICAgXHJcbiAgICAgICAgIHZhciBpbnN0YW5jZSA9IHRoaXM7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIHZhciAgbWVudV9wb3NpdGlvbiA9ICdzaWRlbWVudSc7XHJcblxyXG5cclxuICAgICAgICAgICAgaW5zdGFuY2Uuc2VsZWN0ZWRTaWRlTWVudSA9IHtzX21lbnVzX2lkOm51bGwsc19tZW51c19OYW1lOidOZXcgbWVudSBpdGVtJyxVc2VyczpbXSxHcm91cHM6W10sc19tZW51c19UYXJnZXRQYWdlOm51bGwsc19tZW51c19BbHdheXNOZXc6ZmFsc2Usc19tZW51c19UYXJnZXQ6bnVsbCxzX21lbnVzX1BhcmVudEl0ZW06bnVsbCxzX21lbnVzX01lbnVUeXBlOjEsc19tZW51c19QYXJhbXM6IHt9LHNfbWVudXNfT3JkZXI6b3JkZXIsc19tZW51c19NZW51UG9zaXRpb246bWVudV9wb3NpdGlvbixzX21lbnVzX05hdmJhcjppbnN0YW5jZS5jdXJyZW50TmF2YmFySWR9O1xyXG4gICAgICAgICAgICAvLyAkc2NvcGUuc2VsZWN0ZWRTaWRlTWVudS5QYXJhbXMgPSB7cGFnZWlkOn1cclxuICAgICAgICAgICAgaW5zdGFuY2Uuc2VsZWN0ZWRTaWRlTWVudS5oZWFkZXJMYWJlbD1cIlNlbGVjdCB1c2Vycy9ncm91cHMgdGhhdCB3aWxsIGhhdmUgYWNjZXNzIHRvIHRoaXMgbWVudSBpdGVtXCI7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLnNlbGVjdGVkU2lkZU1lbnUudXNlcnNMYWJlbD1cIlVzZXJzXCI7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLnNlbGVjdGVkU2lkZU1lbnUuZ3JvdXBzTGFiZWw9XCJHcm91cHNcIjtcclxuICAgICAgICAgICAgaW5zdGFuY2Uuc2VsZWN0ZWRTaWRlTWVudS5wYWdlRHJvcGRvd25OYXZiYXIgPSB7cGxhY2Vob2xkZXI6ICdTZWxlY3QgcGFnZS4uLicsIGxhYmVsOidQYWdlJyxuYW1lOidwYWdlcycsIHNlbGVjdGVkSXRlbTppbnN0YW5jZS5zZWxlY3RlZFNpZGVNZW51LlRhcmdldFBhZ2UgLFxyXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdDp0cnVlLGhpZGVMYWJlbDpmYWxzZSxzaXplWHM6ZmFsc2UsZHJvcGRvd25TaXplOidjb2wtbGctMTYnLGNvbHVtblNpemVMYWJlbDonY29sLWxnLTI0J307XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgaW5zdGFuY2Uuc2VsZWN0ZWRTaWRlTWVudS50YXNrRHJvcGRvd25OYXZiYXIgPSB7cGxhY2Vob2xkZXI6ICdTZWxlY3QgdGFzay4uLicsIGxhYmVsOidUYXNrJyxuYW1lOid0YXNrcycsIHNlbGVjdGVkSXRlbTogaW5zdGFuY2Uuc2VsZWN0ZWRTaWRlTWVudS5UYXJnZXRUYXNrLFxyXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdDp0cnVlLGhpZGVMYWJlbDpmYWxzZSxzaXplWHM6ZmFsc2UsZHJvcGRvd25TaXplOidjb2wtbGctMTYnLGNvbHVtblNpemVMYWJlbDonY29sLWxnLTI0J307XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGluc3RhbmNlLnNpZGVNZW51U2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5uYXZiYXJTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgXHJcbiAgIFxyXG4gICB9XHJcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKiBORVcgTmF2YmFyICoqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAgICAgXHJcbiAgICBuZXdOYXZiYXIgKGxhbmcscG9zaXRpb24pIHtcclxuICAgICAgICBcclxuICAgICAgIHZhciBvcmRlciA9IDA7XHJcbiAgICAgICBpZiAodGhpcy5uYXZiYXJbbGFuZysnMTAnXSE9dW5kZWZpbmVkKSBvcmRlcj10aGlzLm5hdmJhcltsYW5nKycxMCddLmxlbmd0aCsxO1xyXG4gICAgICAgaWYgKHBvc2l0aW9uPT11bmRlZmluZWQpIHBvc2l0aW9uPSduYXZiYXInO1xyXG4gICAgICAgdmFyIGluc3RhbmNlID0gdGhpcztcclxuICAgICAgIHRoaXMuY3VycmVudE5hdmJhcklkID0gMDtcclxuICAgICAgIHRoaXMuQ29kZXNTZXJ2aWNlLmdldENvZGVzRGV0YWlsT2JqZWN0QnlOYW1lKCdtZW51dHlwZXMnLHBvc2l0aW9uLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICBcclxuICAgICAgICB7XHJcbiAgICAgICAgdmFyICBtZW51X3Bvc2l0aW9uID0gZGF0YTtcclxuICAgICAgICBcclxuICAgICAgICBpbnN0YW5jZS5zZWxlY3RlZE5hdmJhciA9IHtzX21lbnVzX05hbWU6J05ldyBuYXZiYXIgaXRlbScsVXNlcnM6W10sR3JvdXBzOltdLHNfbWVudXNfVGFyZ2V0UGFnZTpudWxsLHNfbWVudXNfQWx3YXlzTmV3OmZhbHNlLHNfbWVudXNfVGFyZ2V0Om51bGwsc19tZW51c19NZW51VHlwZToyLHNfbWVudXNfTWVudVBvc2l0aW9uOm1lbnVfcG9zaXRpb24sc19tZW51c19QYXJlbnRJdGVtOm51bGwsc19tZW51c19QYXJhbXM6IHtwYWdlaWQ6ICBudWxsfSxzX21lbnVzX09yZGVyOm9yZGVyLHNfbWVudXNfTmF2YmFyOm51bGx9O1xyXG4gICAgICAgIGluc3RhbmNlLnNlbGVjdGVkTmF2YmFyLmhlYWRlckxhYmVsPVwiU2VsZWN0IHVzZXJzL2dyb3VwcyB0aGF0IHdpbGwgaGF2ZSBhY2Nlc3MgdG8gaW5zdGFuY2UgbmF2aWdhdGlvbiBiYXJcIjtcclxuICAgICAgICBpbnN0YW5jZS5zZWxlY3RlZE5hdmJhci51c2Vyc0xhYmVsPVwiVXNlcnNcIjtcclxuICAgICAgICBpbnN0YW5jZS5zZWxlY3RlZE5hdmJhci5ncm91cHNMYWJlbD1cIkdyb3Vwc1wiO1xyXG4gICAgICAgIGluc3RhbmNlLnNlbGVjdGVkTmF2YmFyLnBhZ2VEcm9wZG93bk5hdmJhciA9IHtwbGFjZWhvbGRlcjogJ1NlbGVjdCBwYWdlLi4uJywgbGFiZWw6J1BhZ2UnLG5hbWU6J3BhZ2VzJywgc2VsZWN0ZWRJdGVtOmluc3RhbmNlLnNlbGVjdGVkTmF2YmFyLlRhcmdldFBhZ2UgLFxyXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdDp0cnVlLGhpZGVMYWJlbDpmYWxzZSxkcm9wZG93blNpemU6J2NvbC1sZy0xNicsY29sdW1uU2l6ZUxhYmVsOidjb2wtbGctMjQnfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIGluc3RhbmNlLnNlbGVjdGVkTmF2YmFyLnRhc2tEcm9wZG93bk5hdmJhciA9IHtwbGFjZWhvbGRlcjogJ1NlbGVjdCB0YXNrLi4uJywgbGFiZWw6J1Rhc2snLG5hbWU6J3Rhc2tzJywgc2VsZWN0ZWRJdGVtOiBpbnN0YW5jZS5zZWxlY3RlZE5hdmJhci5UYXJnZXRUYXNrLFxyXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdDp0cnVlLGhpZGVMYWJlbDpmYWxzZSxkcm9wZG93blNpemU6J2NvbC1sZy0xNicsY29sdW1uU2l6ZUxhYmVsOidjb2wtbGctMjQnfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIGluc3RhbmNlLnNlbGVjdGVkTmF2YmFyLm1lbnVUeXBlRHJvcGRvd25OYXZiYXIgPSB7cGxhY2Vob2xkZXI6J1NlbGVjdCBtZW51IHBvc2l0aW9uLi4uJyxsYWJlbDonTWVudSBwb3NpdGlvbicsbmFtZTonTWVudXBvc2l0aW9uJyxzZWxlY3RlZEl0ZW06aW5zdGFuY2Uuc2VsZWN0ZWROYXZiYXIuTWVudVR5cGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdDp0cnVlLGhpZGVMYWJlbDpmYWxzZSxyb3Bkb3duU2l6ZTonY29sLWxnLTE2Jyxjb2x1bW5TaXplTGFiZWw6J2NvbC1sZy0yNCd9OyBcclxuICAgICBcclxuICAgICAgICBpbnN0YW5jZS5uYXZiYXJTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgaW5zdGFuY2Uuc2lkZU1lbnVTZWxlY3RlZCA9IGZhbHNlOyAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5NZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoXCJDb2RlIG5hbWUgZm9yIG5hdmJhciBub3QgZm91bmRcIiwnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICBcclxuICAgfVxyXG4gICBcclxuICAgXHJcbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqIFNFVCBTaWRlTWVudSBvcmRlciAqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gIFxyXG4gICAgc2V0U2lkZW1lbnVPcmRlciAobGFuZ3VhZ2Upe1xyXG4gICAgIFxyXG4gICAgICAgICAgZm9yICh2YXIgaT0wO2k8dGhpcy5uYXZiYXJbbGFuZ3VhZ2UrJzEwJ10ubGVuZ3RoO2krKylcclxuICAgICAgICAgIHtcdCAgXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMubmF2YmFyW2xhbmd1YWdlKycxMCddW2ldLmlkID09IHRoaXMuY3VycmVudE5hdmJhcklkKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5uYXZiYXJbbGFuZ3VhZ2UrJzEwJ11baV0uU2lkZU1lbnVzID0gdGhpcy5zZWxlY3RlZE5hdmJhci5TaWRlTWVudXM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5hdmJhckl0ZW1zW2ldLlNpZGVNZW51cyA9IHRoaXMuc2VsZWN0ZWROYXZiYXIuU2lkZU1lbnVzO1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgIH07XHJcbiBcclxuICBcclxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKiogU0VUIFNpZGVNZW51IGFmdGVyIHNhdmUgKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovICBcclxuICAgIHNldFNpZGVtZW51IChsYW5ndWFnZSl7XHJcbiAgICAgXHJcbiAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLm5hdmJhcltsYW5ndWFnZSsnMTAnXS5sZW5ndGg7aSsrKVxyXG4gICAgICAgICAge1x0ICBcclxuICAgICAgICAgICAgICBpZiAodGhpcy5uYXZiYXJbbGFuZ3VhZ2UrJzEwJ11baV0uc19tZW51c19pZCA9PSB0aGlzLmN1cnJlbnROYXZiYXJJZClcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMubmF2YmFyW2xhbmd1YWdlKycxMCddW2ldLlNpZGVNZW51cyA9IHRoaXMuc2VsZWN0ZWROYXZiYXIuU2lkZU1lbnVzO1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wO2o8dGhpcy5zZWxlY3RlZE5hdmJhci5TaWRlTWVudXMubGVuZ3RoO2orKylcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWROYXZiYXIuU2lkZU1lbnVzW2pdLnNfbWVudXNfaWQ9PXRoaXMuc2VsZWN0ZWRTaWRlTWVudS5zX21lbnVzX2lkKVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5hdmJhci5TaWRlTWVudXNbal0gPSB0aGlzLnNlbGVjdGVkU2lkZU1lbnU7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICBcclxuICAgICAgXHJcbiAgICB9O1xyXG4gICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKiogU0VUIFNpZGVNZW51IG9yZGVyICoqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAgXHJcbiAgICBzZXROYXZiYXJPcmRlciAobmV3TmF2YmFyLGxhbmcpe1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLm5hdmJhcltsYW5ndWFnZSsnMTAnXSA9IG5ld05hdmJhclxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAvL292byBuaWplIGRvYnJvIC0gdHJlYmEgY2lqZWxpIGFycmF5IHJhemJhY2F0aVxyXG4gICAgICAgICAgZm9yICh2YXIgaj0wO2o8dGhpcy5uYXZiYXJbbGFuZ3VhZ2UrJzAwJ10ubGVuZ3RoO2orKylcclxuICAgICAgICAgIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLm5hdmJhcltsYW5ndWFnZSsnMTAnXS5sZW5ndGg7aSsrKVxyXG4gICAgICAgICAgICB7XHQgIFxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLm5hdmJhcltsYW5ndWFnZSsnMTAnXVtpXS5zX21lbnVzX2lkID09IHRoaXMubmF2YmFyW2xhbmd1YWdlKycwMCddW2pdLnNfbWVudXNfaWQpXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5hdmJhcltsYW5ndWFnZSsnMDAnXVtqXS5zX21lbnVzX09yZGVyID0gdGhpcy5uYXZiYXJbbGFuZ3VhZ2UrJzEwJ11baV0uc19tZW51c19PcmRlciBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICAgIFxyXG4gICAgIFxyXG4gICAgICAgICBcclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgfTtcclxuXHJcblxyXG5cclxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAqKioqKioqKioqKioqKioqKiBTRVQgU2lkZU1lbnUgb3JkZXIgKioqKioqKioqKioqKioqKioqXHJcbiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gIFxyXG4gICAgcmVzZXROYXZiYXIgKCl7IFxyXG4gICAgICAgIC8vdGhpcy5uYXZiYXJJdGVtcyA9IFtdO1xyXG5cdFx0dGhpcy5zZXROYXZiYXJJdGVtc1dpdGgoW10pICAgXHJcbiAgICB9XHJcbiAgICBcclxuXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqIEdFVCBSRVNPVVJDRSBERUYgSUQgQlkgUEFHRUlEICoqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAgICAgXHJcbiAgXHJcbiBnZXRSZXNvdXJjZURlZklkQnlQYWdlSWQgKHBhZ2VpZCxsYW5ndWFnZSl7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmIChwYWdlaWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMucGFnZUxpc3RbcGFnZWlkK2xhbmd1YWdlXSE9dW5kZWZpbmVkKXtcclxuXHRcdFx0XHQgIFxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhZ2VMaXN0W3BhZ2VpZCtsYW5ndWFnZV0uUmVzb3VyY2VEZWZJZDtcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cdFxyXG4gICAgICAgICBcclxuXHRcdCAgfTtcclxuXHRcclxuICAgICAgICAgICBcclxuXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqIEdFVCBBbGwgUGFnZXMqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gICAgIFxyXG4gIFxyXG4gR2V0QWxsUGFnZXMgKCl7XHJcbiAgICAgICB2YXIgcGFnZXM9W107XHJcbiAgICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5wYWdlTGlzdCkge1xyXG4gICAgICAgICBwYWdlcy5wdXNoKHRoaXMucGFnZUxpc3Rba2V5XSk7XHJcbiAgICAgICB9XHJcbiAgICAgICBcclxuICAgICAgIHJldHVybiBwYWdlcztcclxuXHRcdCAgfTtcclxuICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgIGdldElmTmF2YmFyU2VsZWN0ZWQgKCl7XHJcbiAgICAgIFxyXG4gICAgICAgIHJldHVybiAgdGhpcy5uYXZiYXJTZWxlY3RlZDtcclxuICAgIFxyXG4gICAgICBcclxuICAgICAgfTsgXHJcblxyXG4gICAgICAgICAgICBcclxuICBnZXRJZlNpZGVNZW51U2VsZWN0ZWQgKCl7XHJcbiAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgcmV0dXJuICB0aGlzLnNpZGVNZW51U2VsZWN0ZWQ7XHJcbiAgICAgIFxyXG4gIH07XHJcblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKiBHRVQgTUVOVVMgRk9SIFBBR0UgQlkgTkFNRSAqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gIFxyXG4gICAgZ2V0TWVudXNGb3JQYWdlQnlOYW1lIChwYWdlbmFtZSxsYW5ndWFnZSl7XHJcbiAgICAgIFxyXG4gICAgICB2YXIgbWVudXM9W107XHJcbiAgICAgZm9yICh2YXIga2V5IGluIHRoaXMucGFnZUxpc3QpIHtcclxuICAgICAgIFxyXG4gICAgICBpZiAodGhpcy5wYWdlTGlzdFtrZXldLlRhcmdldD09cGFnZW5hbWUpICBtZW51cyA9ICB0aGlzLnBhZ2VMaXN0W2tleV0uTWVudXM7XHJcbiAgICAgXHJcbiAgICAgICAgICAgXHJcblx0XHQgIH1cclxuICAgICAgcmV0dXJuIG1lbnVzO1xyXG4gICAgfTtcclxuICBcclxuIFx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKiBHRVQgUEFHRSBCeSBJZCAqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gICAgIFxyXG4gIFxyXG4gZ2V0UGFnZUJ5UmVzb3VyY2VJZCAocGFnZWlkLGxhbmd1YWdlKXtcclxuICAgICAgXHJcbiAgICBcclxuICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMucGFnZUxpc3QpIHtcclxuICAgICAgIGlmIChrZXkuaW5kZXhPZihsYW5ndWFnZSkgIT09IC0xKVxyXG4gICAgICAge1xyXG4gICAgICAgICAgaWYgKHRoaXMucGFnZUxpc3Rba2V5XS5SZXNvdXJjZURlZklkLmlkPT1wYWdlaWQpICByZXR1cm4gYW5ndWxhci5jb3B5KHRoaXMucGFnZUxpc3Rba2V5XSk7XHJcbiAgICAgICB9XHJcbiAgICAgICAgICAgXHJcblx0XHQgIH1cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIFxyXG4gfVxyXG4gIFxyXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKiBTRVQgTkFWQkFSIEJZIElEICoqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAgXHJcbiAgICBzZXRDdXJyZW50TmF2YmFyT2JqZWN0QnlJZCAobGFuZ3VhZ2UsdHlwZSl7XHJcbiAgICAgIFxyXG4gICAgIGlmICh0eXBlPT11bmRlZmluZWQpIHR5cGU9MDtcclxuICAgICB2YXIgYXBwSWQ9XCIwXCI7XHJcbiAgICAgaWYgKHRoaXMuc2VsZWN0ZWRBcHAhPSB1bmRlZmluZWQpIGFwcElkPXRoaXMuc2VsZWN0ZWRBcHAuaWQ7XHJcbiAgICAgaWYgKGFwcElkIT1cIjBcIiAmJiBhcHBJZCE9dW5kZWZpbmVkKVxyXG4gICAgIHtcclxuICAgICAgdHlwZT0yO1xyXG4gICAgIH1lbHNlIGlmIChhcHBJZD09dW5kZWZpbmVkKVxyXG4gICAgIHtcclxuICAgICAgYXBwSWQ9XCIwXCI7XHJcbiAgICAgfVxyXG4gICAgIGlmICh0aGlzLm5hdmJhclsnJytsYW5ndWFnZSt0eXBlK2FwcElkXT09dW5kZWZpbmVkKVxyXG4gICAgICB7XHJcbiAgICAgICAgICB0aGlzLmdldE5hdmJhcnNGcm9tTWVudXMobGFuZ3VhZ2UsdHlwZSxmYWxzZSxhcHBJZCk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICB0aGlzLnNlbGVjdGVkTmF2YmFyPW51bGw7XHJcbiAgICAgIGlmICh0aGlzLm5hdmJhclsnJytsYW5ndWFnZSt0eXBlK2FwcElkXSE9dW5kZWZpbmVkKVxyXG4gICAgICB7XHJcbiAgICAgICAgICBmb3IgKHZhciBqPTA7ajx0aGlzLm5hdmJhclsnJytsYW5ndWFnZSt0eXBlK2FwcElkXS5sZW5ndGg7aisrKVxyXG4gICAgICAgICAge1x0ICBcclxuICAgICAgICAgICAgICBpZiAodGhpcy5uYXZiYXJbJycrbGFuZ3VhZ2UrdHlwZSthcHBJZF1bal0uc19tZW51c19pZCA9PSB0aGlzLmN1cnJlbnROYXZiYXJJZClcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTmF2YmFyPSBhbmd1bGFyLmNvcHkodGhpcy5uYXZiYXJbJycrbGFuZ3VhZ2UrdHlwZSthcHBJZF1bal0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5hdmJhci5oZWFkZXJMYWJlbD1cIlNlbGVjdCB1c2Vycy9ncm91cHMgdGhhdCB3aWxsIGhhdmUgYWNjZXNzIHRvIHRoaXMgbmF2aWdhdGlvbiBiYXJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROYXZiYXIudXNlcnNMYWJlbD1cIlVzZXJzXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTmF2YmFyLmdyb3Vwc0xhYmVsPVwiR3JvdXBzXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTmF2YmFyLnBhZ2VEcm9wZG93bk5hdmJhciA9IHtwbGFjZWhvbGRlcjogJ1NlbGVjdCBwYWdlLi4uJywgbGFiZWw6J1BhZ2UnLG5hbWU6J3BhZ2VzJywgc2VsZWN0ZWRJdGVtOnRoaXMuc2VsZWN0ZWROYXZiYXIuVGFyZ2V0UGFnZSAsXHJcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0OnRydWUsaGlkZUxhYmVsOmZhbHNlLGRyb3Bkb3duU2l6ZTonY29sLWxnLTE2Jyxjb2x1bW5TaXplTGFiZWw6J2NvbC1sZy0yNCd9O1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTmF2YmFyLnRhc2tEcm9wZG93bk5hdmJhciA9IHtwbGFjZWhvbGRlcjogJ1NlbGVjdCB0YXNrLi4uJywgbGFiZWw6J1Rhc2snLG5hbWU6J3Rhc2tzJywgc2VsZWN0ZWRJdGVtOiB0aGlzLnNlbGVjdGVkTmF2YmFyLlRhcmdldFRhc2ssXHJcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0OnRydWUsaGlkZUxhYmVsOmZhbHNlLGRyb3Bkb3duU2l6ZTonY29sLWxnLTE2Jyxjb2x1bW5TaXplTGFiZWw6J2NvbC1sZy0yNCd9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTmF2YmFyLm1lbnVUeXBlRHJvcGRvd25OYXZiYXIgPSB7cGxhY2Vob2xkZXI6J1NlbGVjdCBtZW51IHBvc2l0aW9uLi4uJyxsYWJlbDonTWVudSBwb3MuJyxuYW1lOidNZW51cG9zaXRpb25zJyxzZWxlY3RlZEl0ZW06dGhpcy5zZWxlY3RlZE5hdmJhci5NZW51VHlwZSxcclxuICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0OnRydWUsaGlkZUxhYmVsOmZhbHNlLGRyb3Bkb3duU2l6ZTonY29sLWxnLTE2Jyxjb2x1bW5TaXplTGFiZWw6J2NvbC1sZy0yNCd9OyBcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgfSAgICAgICBcclxuICAgICBcclxuICAgIH07XHJcbiAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKiBTRVQgU0lERU1FTlUgQlkgSUQgKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovICBcclxuICAgIHNldEN1cnJlbnRTaWRlTWVudU9iamVjdEJ5SWQgKCl7XHJcbiAgICAgIFxyXG4gICAgIFxyXG4gICAgICAgaWYgKHRoaXMuc2VsZWN0ZWROYXZiYXIhPXVuZGVmaW5lZClcclxuICAgICAgIHtcclxuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTmF2YmFyLlNpZGVNZW51cyE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBmb3IgICh2YXIgaT0wO2k8dGhpcy5zZWxlY3RlZE5hdmJhci5TaWRlTWVudXMubGVuZ3RoO2krKylcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAgKHRoaXMuc2VsZWN0ZWROYXZiYXIuU2lkZU1lbnVzW2ldLnNfbWVudXNfaWQ9PXRoaXMuc2VsZWN0ZWRTaWRlTWVudUlkKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFNpZGVNZW51PWFuZ3VsYXIuY29weSh0aGlzLnNlbGVjdGVkTmF2YmFyLlNpZGVNZW51c1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkU2lkZU1lbnUuaGVhZGVyTGFiZWw9XCJTZWxlY3QgdXNlcnMvZ3JvdXBzIHRoYXQgd2lsbCBoYXZlIGFjY2VzcyB0byB0aGlzIG1lbnUgaXRlbVwiO1xyXG4gICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFNpZGVNZW51LnVzZXJzTGFiZWw9XCJVc2Vyc1wiO1xyXG4gICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFNpZGVNZW51Lmdyb3Vwc0xhYmVsPVwiR3JvdXBzXCI7XHJcbiAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkU2lkZU1lbnUucGFnZURyb3Bkb3duTmF2YmFyID0ge3BsYWNlaG9sZGVyOiAnU2VsZWN0IHBhZ2UuLi4nLCBsYWJlbDonUGFnZScsbmFtZToncGFnZXMnLCBzZWxlY3RlZEl0ZW06dGhpcy5zZWxlY3RlZFNpZGVNZW51LlRhcmdldFBhZ2UgLFxyXG4gICAgICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQ6dHJ1ZSxoaWRlTGFiZWw6ZmFsc2Usc2l6ZVhzOmZhbHNlLGRyb3Bkb3duU2l6ZTonY29sLWxnLTE2Jyxjb2x1bW5TaXplTGFiZWw6J2NvbC1sZy0yNCd9O1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFNpZGVNZW51LnRhc2tEcm9wZG93bk5hdmJhciA9IHtwbGFjZWhvbGRlcjogJ1NlbGVjdCB0YXNrLi4uJywgbGFiZWw6J1Rhc2snLG5hbWU6J3Rhc2tzJywgc2VsZWN0ZWRJdGVtOiB0aGlzLnNlbGVjdGVkU2lkZU1lbnUuVGFyZ2V0VGFzayxcclxuICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0OnRydWUsaGlkZUxhYmVsOmZhbHNlLHNpemVYczpmYWxzZSxkcm9wZG93blNpemU6J2NvbC1sZy0xNicsY29sdW1uU2l6ZUxhYmVsOidjb2wtbGctMjQnfTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAgICAgIFxyXG4gICAgfTtcclxuICAgIFxyXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKiogR0VUIE5BVkJBUiBCWSBJRCAqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gIFxyXG4gICAgZ2V0TmF2YmFyQnlJZCAobGFuZ3VhZ2UsdHlwZSxhcHBJZCl7XHJcbiAgICAgIFxyXG4gICAgIGlmICh0eXBlPT11bmRlZmluZWQpIHR5cGU9MDtcclxuICAgICBpZiAoYXBwSWQ9PXVuZGVmaW5lZCkgYXBwSWQ9MDtcclxuICAgICBpZiAodGhpcy5uYXZiYXJbJycrbGFuZ3VhZ2UrdHlwZSthcHBJZF09PXVuZGVmaW5lZClcclxuICAgICAge1xyXG4gICAgICAgICAgdGhpcy5nZXROYXZiYXJzRnJvbU1lbnVzKGxhbmd1YWdlLHR5cGUsZmFsc2UsYXBwSWQpO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBmb3IgKHZhciBqPTA7ajx0aGlzLm5hdmJhclsnJytsYW5ndWFnZSt0eXBlK2FwcElkXS5sZW5ndGg7aisrKVxyXG4gICAgICB7XHQgIFxyXG4gICAgICAgICAgaWYgKHRoaXMubmF2YmFyWycnK2xhbmd1YWdlK3R5cGUrYXBwSWRdW2pdLnNfbWVudXNfaWQgPT0gdGhpcy5jdXJyZW50TmF2YmFySWQpXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5hdmJhcj1udWxsO1xyXG4gICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5hdmJhcj0gdGhpcy5uYXZiYXJbbGFuZ3VhZ2UrdHlwZV1bal1cclxuICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROYXZiYXIuaGVhZGVyTGFiZWw9XCJTZWxlY3QgdXNlcnMvZ3JvdXBzIHRoYXQgd2lsbCBoYXZlIGFjY2VzcyB0byB0aGlzIG5hdmlnYXRpb24gYmFyXCI7XHJcbiAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTmF2YmFyLnVzZXJzTGFiZWw9XCJVc2Vyc1wiO1xyXG4gICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5hdmJhci5ncm91cHNMYWJlbD1cIkdyb3Vwc1wiO1xyXG4gICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5hdmJhci5wYWdlRHJvcGRvd25OYXZiYXIgPSB7cGxhY2Vob2xkZXI6J1NlbGVjdCBwYWdlLi4uJyxsYWJlbDonUGFnZScsbmFtZToncGFnZXMnLHNlbGVjdGVkSXRlbTogdGhpcy5zZWxlY3RlZE5hdmJhci5UYXJnZXRQYWdlLFxyXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdDp0cnVlLGhpZGVMYWJlbDpmYWxzZSxkcm9wZG93blNpemU6J2NvbC1sZy0xNicsY29sdW1uU2l6ZUxhYmVsOidjb2wtbGctMjQnfTtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTmF2YmFyLm1lbnVUeXBlRHJvcGRvd25OYXZiYXIgPSB7cGxhY2Vob2xkZXI6J1NlbGVjdCBtZW51IHBvc2l0aW9uLi4uJyxsYWJlbDonTWVudSBwb3NpdGlvbicsbmFtZTonTWVudXR5cGVzJyxzZWxlY3RlZEl0ZW06dGhpcy5zZWxlY3RlZE5hdmJhci5NZW51VHlwZSxcclxuICAgICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQ6dHJ1ZSxoaWRlTGFiZWw6ZmFsc2UsZHJvcGRvd25TaXplOidjb2wtbGctMTYnLGNvbHVtblNpemVMYWJlbDonY29sLWxnLTI0J307IFxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICByZXR1cm4gIHRoaXMuc2VsZWN0ZWROYXZiYXI7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICB9ICAgICAgICAgXHJcbiAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG5cclxuIFxyXG4gICAgXHJcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKiBHRVQgU0lERU1FTlUgQlkgSUQgKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovICBcclxuICAgIGdldFNpZGVNZW51QnlJZCAobWVudUlkLGxhbmd1YWdlLHR5cGUpe1xyXG4gICAgICBcclxuICAgICAgaWYgKHR5cGU9PXVuZGVmaW5lZCkgdHlwZT0wO1xyXG4gICAgICBmb3IgKHZhciBqPTA7ajx0aGlzLnNpZGVtZW51c1tsYW5ndWFnZSt0eXBlXS5sZW5ndGg7aisrKVxyXG4gICAgICB7XHQgIFxyXG4gICAgICAgICAgaWYgKHRoaXMuc2lkZW1lbnVzW2xhbmd1YWdlK3R5cGVdW2pdLnNfbWVudXNfaWQgPT0gbWVudUlkKVxyXG4gICAgICAgICAge3NfbWVudXNfXHJcbiAgICAgICAgICAgcmV0dXJuIHRoaXMuc2lkZW1lbnVzW2xhbmd1YWdlK3R5cGVdW2pdO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgfSAgICAgICAgIFxyXG4gICAgIHJldHVybiBudWxsO1xyXG4gICAgfTsgICAgXHJcblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKiBHRVQgTkFWQkFSICoqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAgICAgXHJcbiAgXHJcbiBnZXROYXZiYXIgKGxhbmd1YWdlKXtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKHRoaXMubmF2YmFyW2xhbmd1YWdlXT09dW5kZWZpbmVkKXtcclxuXHRcdFx0XHQgIC8vaWYgIG5vdCBmb3VuZCAtIGRvd25sb2FkXHJcbiAgICAgICAgICAgICAgIGxldCB1cmwgPSAnLi4vYXBpL2dldC1uYXZiYXIvJytsYW5ndWFnZSsnLyc7XHJcbiAgICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PnsgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cz09PTIwMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZiYXJbbGFuZ3VhZ2VdID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUodGhpcy5uYXZiYXJbbGFuZ3VhZ2VdKTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGRlZmVycmVkLnJlamVjdChyZXNwb25zZS5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgfSk7XHJcbiAgICBcdFx0XHRcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUodGhpcy5uYXZiYXJbbGFuZ3VhZ2VdKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuXHRcclxuICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG5cdFx0ICB9O1xyXG5cdFx0ICBcdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICoqKioqKioqKioqKioqKioqIEdFVCBOQVZCQVIgQlkgVEFSR0VUIE5BTUUgKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAgICAgXHJcbiAgXHJcbiBnZXROYXZiYXJCeVRhcmdldE5hbWUgKHRhcmdldEluLGxhbmd1YWdlLHR5cGUsYXBwSWQpe1xyXG5cclxuICAgICAgIHZhciBuYXZiYXJfaWQ9MDtcclxuICAgICAgIHZhciB0YXJnZXQ9bnVsbDtcclxuICAgICAgIFxyXG4gICAgICAgaWYgKHR5cGU9PXVuZGVmaW5lZCkgdHlwZT0wO1xyXG4gICAgICAgaWYgKGFwcElkPT11bmRlZmluZWQpIGFwcElkPTA7XHJcbiAgICAgICBpZiAodGhpcy5lZGl0TW9kZSkgdHlwZT0xO1xyXG4gICAgICAgaWYgKHRoaXMubWVudUxpc3RbJycrbGFuZ3VhZ2UrdHlwZSthcHBJZF09PXVuZGVmaW5lZCkgcmV0dXJuIDA7XHJcbiAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLm1lbnVMaXN0WycnK2xhbmd1YWdlK3R5cGUrYXBwSWRdLmxlbmd0aDtpKyspXHJcbiAgICAgICB7XHJcbiAgICAgICAgaWYgKHRoaXMubWVudUxpc3RbJycrbGFuZ3VhZ2UrdHlwZSthcHBJZF1baV0uc19tZW51c19NZW51VHlwZT09MSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICBpZiAodGhpcy5tZW51TGlzdFsnJytsYW5ndWFnZSt0eXBlK2FwcElkXVtpXS5zX3BhZ2VzX1RhcmdldCE9dW5kZWZpbmVkICYmIHRoaXMubWVudUxpc3RbJycrbGFuZ3VhZ2UrdHlwZSthcHBJZF1baV0uc19wYWdlc19UYXJnZXQhPW51bGwpXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRhcmdldD10aGlzLm1lbnVMaXN0WycnK2xhbmd1YWdlK3R5cGUrYXBwSWRdW2ldLnNfcGFnZXNfVGFyZ2V0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgIGlmICh0aGlzLm1lbnVMaXN0WycnK2xhbmd1YWdlK3R5cGUrYXBwSWRdW2ldLlRhcmdldFRhc2shPXVuZGVmaW5lZCAmJiB0aGlzLm1lbnVMaXN0WycnK2xhbmd1YWdlK3R5cGUrYXBwSWRdW2ldLlRhcmdldFRhc2shPW51bGwpXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRhcmdldD10aGlzLm1lbnVMaXN0WycnK2xhbmd1YWdlK3R5cGUrYXBwSWRdW2ldLlRhcmdldFRhc2suVGFyZ2V0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAgIGlmICh0YXJnZXQhPW51bGwpXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICBpZiAodGFyZ2V0PT10YXJnZXRJbilcclxuICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgIG5hdmJhcl9pZCA9ICB0aGlzLm1lbnVMaXN0WycnK2xhbmd1YWdlK3R5cGUrYXBwSWRdW2ldLnNfbWVudXNfTmF2YmFyO1xyXG4gICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICByZXR1cm4gbmF2YmFyX2lkO1xyXG4gICAgfTtcclxuICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKiBGVU5DVElPTlMgTk9UIFVTRUQgISEhISEhISEhISEhICoqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFxyXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gICBcclxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqIEdFVCBNRU5VUyBGT1IgUEFHRSAqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gICAgIFxyXG4gIFxyXG4gZ2V0TWVudXNGb3JQYWdlIChwYWdlaWQsbGFuZ3VhZ2Upe1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgIHZhciBpbnN0YW5jZSA9IHRoaXM7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICBpZiAocGFnZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7ICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLm1lbnVMaXN0W3BhZ2UrbGFuZ3VhZ2VdPT11bmRlZmluZWQpe1xyXG5cdFx0XHRcdCAgLy9pZiAgbm90IGZvdW5kIC0gZG93bmxvYWRcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIGxldCB1cmwgPSAnLi4vYXBpL2dldC1tZW51cy1mb3ItcGFnZS8nKyBwYWdlKycvJytsYW5ndWFnZSsnLyc7XHJcbiAgICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXM9PT0yMDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHJlc3BvbnNlLmRhdGEubGVuZ3RoO2krKylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UubWVudUxpc3RbcmVzcG9uc2UuZGF0YVtpXS5UYXJnZXQrbGFuZ3VhZ2VdPXJlc3BvbnNlLmRhdGFbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2UubWVudUxpc3RbcGFnZStsYW5ndWFnZV0hPXVuZGVmaW5lZCkgZGVmZXJyZWQucmVzb2x2ZSh0aGlzLm1lbnVMaXN0W3BhZ2UrbGFuZ3VhZ2VdLk1lbnVzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBkZWZlcnJlZC5yZXNvbHZlKFtdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3QocmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIC8vICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICBcdFxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh0aGlzLm1lbnVMaXN0W3BhZ2UrbGFuZ3VhZ2VdLk1lbnVzLCAyMDApO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgfTtcclxuXHRcclxuICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcblx0fTtcclxuXHRcdCAgXHJcblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKiBHRVQgTUVOVVMgRk9SIFVTRVIgKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovICAgICBcclxuICBcclxuIGdldE1lbnVzRm9yVXNlciAocGFnZSxsYW5ndWFnZSl7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciBtZW51SW5kZXg9LTE7XHJcbiAgICAgICAgICBpZiAocGFnZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7ICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIHZhciBwb3NMYW5nID0gbWVudUxpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUubGFuZzsgfSkuaW5kZXhPZihsYW5ndWFnZSk7XHJcbiAgICAgICAgICAgICAgaWYgKHBvc0xhbmc8MCl7XHJcblx0XHRcdFx0ICAvL2lmICBub3QgZm91bmQgLSBkb3dubG9hZFxyXG5cdFx0XHRcclxuICAgICAgICAgICAgICAgbGV0IHVybCA9ICcuLi9hcGkvZ2V0LW1lbnVzLWZvci1wYWdlLycrIHBhZ2UrJy8nK2xhbmd1YWdlKycvJztcclxuICAgICAgICAgICAgICAgbGV0IGluc3RhbmNlID0gdGhpcztcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzPT09MjAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJldHJpdmVkTGlzdCA9IHtsYW5nOiBsYW5ndWFnZSwgbWVudUxpc3Q6IHJlc3BvbnNlLmRhdGF9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zTGFuZz49MClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLm1lbnVMaXN0W3Bvc0xhbmddLm1lbnVMaXN0PSByZXNwb25zZS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVJbmRleD1wb3NMYW5nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudUxpc3QucHVzaChyZXRyaXZlZExpc3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVJbmRleD1tZW51TGlzdC5sZW5ndGgtMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUodGhpcy5tZW51TGlzdFttZW51SW5kZXhdLm1lbnVMaXN0KTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGRlZmVycmVkLnJlamVjdChyZXNwb25zZS5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgIFxyXG5cdFx0XHRcdFxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbWVudUluZGV4PXBvc0xhbmc7XHJcbiAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHRoaXMubWVudUxpc3RbbWVudUluZGV4XS5tZW51TGlzdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgfTtcclxuXHRcclxuICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcblx0XHR9O1xyXG5cdFx0ICBcclxuXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqIEdFVCBQQUdFUyBGT1IgVVNFUiAqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAgICAgXHJcbiAgXHJcbiBnZXRQYWdlc0ZvclVzZXIgKGxhbmd1YWdlKXtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgICAgICAgICAgIHZhciBpbnN0YW5jZSA9IHRoaXM7XHJcbiAgICAgICAgICAgICAgaWYgKGFuZ3VsYXIuZXF1YWxzKHRoaXMucGFnZUxpc3Qse30pKXtcclxuXHRcdFx0XHQgIC8vaWYgIG5vdCBmb3VuZCAtIGRvd25sb2FkXHJcbiAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSAnLi4vYXBpL2dldC1wYWdlcy1mb3ItdXNlci8nK2xhbmd1YWdlKycvJztcclxuICAgICAgICAgICAgICAgICAgbGV0IGluc3RhbmNlID0gdGhpcztcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXM9PT0yMDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxyZXNwb25zZS5kYXRhLmxlbmd0aDtpKyspXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UucGFnZUxpc3RbcmVzcG9uc2UuZGF0YVtpXS5pZCtsYW5ndWFnZV09cmVzcG9uc2UuZGF0YVtpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKGluc3RhbmNlLnBhZ2VMaXN0KTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGRlZmVycmVkLnJlamVjdChyZXNwb25zZS5kYXRhKTtcclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICBcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoaW5zdGFuY2UucGFnZUxpc3QpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuXHRcclxuICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG5cdFx0fTtcclxuXHRcclxuICBcdFx0XHJcblxyXG5cclxuXHRcdFxyXG4gICAgZ2V0TmF2YmFyc0Zyb21QYWdlTGlzdCAobGFuZ3VhZ2UpXHJcblx0e1xyXG4gICAgICBcclxuICAgICAgaWYgKHRoaXMubmF2YmFyW2xhbmd1YWdlXSkgICByZXR1cm4gdGhpcy5uYXZiYXJbbGFuZ3VhZ2VdO1xyXG5cclxuICAgICAgdGhpcy5uYXZiYXJbbGFuZ3VhZ2VdID0gW107XHJcbiAgICAgIHRoaXMuc2lkZW1lbnVzW2xhbmd1YWdlXSA9IFtdXHJcbiAgICAgIHZhciBwb3M9LTE7XHJcblx0ICAgXHJcblx0ICBmb3IgKHZhciBrZXkgaW4gdGhpcy5wYWdlTGlzdCkge1xyXG4gICAgICBcclxuXHRcdFx0Zm9yICh2YXIgaT0wO2k8dGhpcy5wYWdlTGlzdFtrZXldLk1lbnVzLmxlbmd0aDtpKyspe1xyXG5cdFx0XHQgIGlmICh0aGlzLnBhZ2VMaXN0W2tleV0uTWVudXNbaV0uc19tZW51c19NZW51UG9zaXRpb24uc3Vic3RyKDAsNik9PVwibmF2YmFyXCIpXHJcblx0XHRcdCAge1xyXG5cdFx0XHQgIFxyXG5cdFx0XHRcdHBvcyA9dGhpcy5uYXZiYXJbbGFuZ3VhZ2VdLm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLnNfbWVudXNfaWQ7IH0pLmluZGV4T2YodGhpcy5wYWdlTGlzdFtrZXldLk1lbnVzW2ldLnNfbWVudXNfaWQpO1xyXG5cdFx0XHRcdGlmIChwb3M8MCkgdGhpcy5uYXZiYXJbbGFuZ3VhZ2VdLnB1c2godGhpcy5wYWdlTGlzdFtrZXldLk1lbnVzW2ldKTtcclxuXHRcdFx0ICBcclxuXHRcdFx0IH0gZWxzZSBpZiAodGhpcy5wYWdlTGlzdFtrZXldLk1lbnVzW2ldLnNfbWVudXNfTWVudVBvc2l0aW9uPT1cInNpZGVtZW51XCIpIHtcclxuXHRcdFx0XHQgcG9zID10aGlzLnNpZGVtZW51c1tsYW5ndWFnZV0ubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuc19tZW51c19pZDsgfSkuaW5kZXhPZih0aGlzLnBhZ2VMaXN0W2tleV0uTWVudXNbaV0uc19tZW51c19pZCk7XHJcblx0XHRcdFx0IGlmIChwb3M8MCkgdGhpcy5zaWRlbWVudXNbbGFuZ3VhZ2VdLnB1c2godGhpcy5wYWdlTGlzdFtrZXldLk1lbnVzW2ldKTtcclxuXHRcdFx0ICB9XHJcblx0XHRcdCAgIFxyXG5cdFx0XHR9XHJcbiAgICAgIFxyXG5cdH0vL2ZvclxyXG4gICAgICBcclxuXHQvL2dldCBNZW51cyBcclxuXHRmb3IgKHZhciBqPTA7ajx0aGlzLm5hdmJhcltsYW5ndWFnZV0ubGVuZ3RoO2orKyl7XHJcblx0XHRmb3IgKHZhciBrPTA7azx0aGlzLnNpZGVtZW51c1tsYW5ndWFnZV0ubGVuZ3RoO2srKyl7XHJcblx0XHRcdGlmICh0aGlzLm5hdmJhcltsYW5ndWFnZV1bal0uc19tZW51c19pZD09dGhpcy5zaWRlbWVudXNbbGFuZ3VhZ2VdW2tdLnNfbWVudXNfTmF2YmFyKXtcclxuXHRcdFx0ICBpZiAodGhpcy5uYXZiYXJbbGFuZ3VhZ2VdW2pdLlNpZGVNZW51cyA9PXVuZGVmaW5lZCkgdGhpcy5uYXZiYXJbbGFuZ3VhZ2VdW2pdLlNpZGVNZW51cyA9IFtdOyAgXHJcblx0XHRcdCAgcG9zID10aGlzLm5hdmJhcltsYW5ndWFnZV1bal0uU2lkZU1lbnVzLm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLnNfbWVudXNfaWQ7IH0pLmluZGV4T2YodGhpcy5zaWRlbWVudXNbbGFuZ3VhZ2VdW2tdLnNfbWVudXNfaWQpO1xyXG5cdFx0XHQgIGlmIChwb3M8MCkgdGhpcy5uYXZiYXJbbGFuZ3VhZ2VdW2pdLlNpZGVNZW51cy5wdXNoKHRoaXMuc2lkZW1lbnVzW2xhbmd1YWdlXVtrXSk7IFxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG4gICAgICBcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLm5hdmJhcltsYW5ndWFnZV07XHJcblx0fVxyXG5cclxuIFxyXG5cdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKiogR0VUIE1FTlVTIEZPUiBQQUdFIEJZIElEICoqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAgICAgXHJcbiAgXHJcbiBnZXRNZW51c0ZvclBhZ2VCeUlkIChwYWdlaWQsbGFuZ3VhZ2Upe1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZiAocGFnZWlkICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnBhZ2VMaXN0W3BhZ2VpZCtsYW5ndWFnZV0hPXVuZGVmaW5lZCl7XHJcblx0XHRcdFx0ICBcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYWdlTGlzdFtwYWdlaWQrbGFuZ3VhZ2VdLk1lbnVzO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgIHJldHVybiBudWxsIDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cdFxyXG4gICAgICAgICBcclxuXHRcdCAgfTtcclxuXHRcclxuIFx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKiBHRVQgUEFHRSBOQVZCQVIgKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovICAgICBcclxuICBcclxuIGdldFBhZ2VOYXZiYXIgKHBhZ2VpZCxsYW5ndWFnZSl7XHJcbiAgICAgIFxyXG4gICAgICBpZiAodGhpcy5wYWdlTGlzdFtwYWdlaWQrbGFuZ3VhZ2VdIT11bmRlZmluZWQpICByZXR1cm4gdGhpcy5wYWdlTGlzdFtwYWdlaWQrbGFuZ3VhZ2VdLk5hdmJhcjtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICBcclxuICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgICAgICBcclxufTtcclxuXHRcdCAgXHJcblxyXG4gXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqIEdFVCBQQUdFIE5BVkJBUiBCWSBOQU1FICoqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAgICAgXHJcbiAgXHJcbiAgIGdldFBhZ2VOYXZiYXJCeU5hbWUgKHBhZ2VuYW1lLGxhbmd1YWdlKXtcclxuICAgICAgXHJcbiAgICAgIHZhciBuYXZiYXI9MDtcclxuICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMucGFnZUxpc3QpIHtcclxuICAgICAgIFxyXG4gICAgICBpZiAodGhpcy5wYWdlTGlzdFtrZXldLlRhcmdldD09cGFnZW5hbWUpICBuYXZiYXIgPSAgdGhpcy5wYWdlTGlzdFtrZXldLk5hdmJhcjtcclxuICAgICBcclxuICAgICAgICAgICBcclxuXHRcdH1cclxuICAgICAgcmV0dXJuIG5hdmJhcjtcclxuICAgIH07ICBcclxuICAgXHJcbn1cclxuXHJcbmV4cG9ydCB7TWVudVNlcnZpY2V9O1xyXG5cclxuY2xhc3MgQ2xlYXJTZXJ2aWNle1xyXG4gICBjb25zdHJ1Y3RvcihNZW51U2VydmljZSwkY29va2llcywkcm9vdFNjb3BlKVxyXG4gICB7XHJcbiAgICAgIHRoaXMuTWVudVNlcnZpY2U9TWVudVNlcnZpY2U7XHJcbiAgICAgIHRoaXMuJGNvb2tpZXM9JGNvb2tpZXM7XHJcbiAgICAgIHRoaXMuJHJvb3RTY29wZSA9ICRyb290U2NvcGVcclxuICAgfVxyXG4gICBzdGF0aWMgJGluamVjdCA9IFsnTWVudVNlcnZpY2UnLCckY29va2llcycsJyRyb290U2NvcGUnXTtcclxuIFxyXG5cclxuIFxyXG4gICAgQ2xlYXIoKVxyXG4gICAge1xyXG4gICAgICB0aGlzLk1lbnVTZXJ2aWNlLkNsZWFyKCk7XHJcbiAgICAgIHRoaXMuJGNvb2tpZXMucmVtb3ZlKCdsYXN0VG9TdGF0ZScpXHJcbiAgICAgIHRoaXMuJGNvb2tpZXMucmVtb3ZlKCdsYXN0VG9QYXJhbXMnKVxyXG4gICAgICB0aGlzLiRjb29raWVzLnJlbW92ZSgnY3VycmVudFVzZXInKVxyXG4gICAgICB0aGlzLiRjb29raWVzLnJlbW92ZSgnZW52aXJvbm1lbnQnKVxyXG4gICAgICB0aGlzLiRyb290U2NvcGUuZ2xvYmFscz17fVxyXG4gICAgfVxyXG5cclxuIH07XHJcbiBleHBvcnQge0NsZWFyU2VydmljZX07IiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBNZXNzYWdpbmdTZXJ2aWNlIEZBQ1RPUlkgKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4ndXNlIHN0cmljdCc7XHJcblxyXG5jbGFzcyBNZXNzYWdpbmdTZXJ2aWNlICB7XHJcbiBcclxuICAgICAgIGNvbnN0cnVjdG9yICgkaW5qZWN0b3IpeyAvL3JlcGxhY2UgJHRpbWVvdXQgd2l0aCBzZXRUSW1lb3V0IGFmdGVyIG1vdmUgdG8gdnVlanNcclxuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzID0gW107XHJcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlID0ge307XHJcbiAgICAgICAgICAgICAgdGhpcy5oaWRkZW5NZXNzYWdlcz1bXTtcclxuICAgICAgICAgICAgICB0aGlzLnNob3dfbWVzc2FnZXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLiRpbmplY3RvciA9ICRpbmplY3RvcjtcclxuICAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHN0YXRpYyAkaW5qZWN0ID0gWyckaW5qZWN0b3InXTtcclxuICAgICAgIFxyXG4gICAgIGFkZE1lc3NhZ2UgIChtc2csdHlwZSkgXHJcbiAgICAgeyAgICAgICBcclxuICAgICAgICAgICAgLy9kZWJ1Z2dlciAvL01lc3NhZ2luZ1NlcnZpY2VcclxuICAgICAgICAgICAgdmFyIGNvdW50PTA7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZSA9IHt9O1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tZXNzYWdlcy5sZW5ndGggPCAxMDApIHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlLm1lc3NhZ2UgPSBtc2c7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG1zZz09XCJzdHJpbmdcIikgICB0aGlzLm1lc3NhZ2UubWVzc2FnZSA9IHsnbWVzc2FnZSc6bXNnfTsgICBcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbXNnPT1cIm9iamVjdFwiKSAgIHRoaXMubWVzc2FnZS5tZXNzYWdlID0geydtZXNzYWdlJzpKU09OLnN0cmluZ2lmeShtc2cpfTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlLnNob3c9dHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZS50eXBlPXR5cGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2Uuc3JjPSd1bmtub3duJztcclxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZS5kdD1uZXcgRGF0ZSgpLnRvTG9jYWxlU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzLnVuc2hpZnQodGhpcy5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd19tZXNzYWdlcyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzWzBdLmNvdW50ID0gdGhpcy5tZXNzYWdlcy5sZW5ndGhcclxuICAgICAgICAgICAgICAgIGNvdW50ID0gIHRoaXMubWVzc2FnZXMubGVuZ3RoXHJcblx0XHRcdFx0XHJcblx0XHRcdFx0aWYgKHRoaXMubWVzc2FnZS50eXBlIT0nc3VjY2VzcycgJiYgdGhpcy5tZXNzYWdlLnR5cGUhPSdpbmZvJykge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2cobXNnKVxyXG5cdFx0XHRcdFx0Ly9kZWJ1Z2dlclxyXG5cdFx0XHRcdH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdmFyICR0aW1lb3V0ID0gJHRpbWVvdXQgfHwgdGhpcy4kaW5qZWN0b3IuZ2V0KCckdGltZW91dCcpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGluc3RhbmNlID0gdGhpcztcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1lc3NhZ2UudHlwZSE9J2Vycm9yJykgXHJcbiAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0wO2k8aW5zdGFuY2UubWVzc2FnZXMubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlLm1lc3NhZ2VzW2ldLmNvdW50ID09IGNvdW50KSAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5oaWRkZW5NZXNzYWdlcy5wdXNoKGFuZ3VsYXIuY29weShpbnN0YW5jZS5tZXNzYWdlc1tpXSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5tZXNzYWdlcy5zcGxpY2UoaSwxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0sNTAwMCk7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gXHJcbiAgICAgYWRkTWVzc2FnZUZyb21DdXN0b20gKG1zZyxzdGFjayx0eXBlLHNyYykge1xyXG4gICAgICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgICAgIHZhciBjb3VudD0wO1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSB7fTtcclxuICAgICAgICAgICAgdmFyIGluc3RhbmNlID0gdGhpcztcclxuICAgICAgICAgICAgaWYgKHRoaXMubWVzc2FnZXMubGVuZ3RoPDEwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlLm1lc3NhZ2UgPSBtc2c7XHJcbiAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbXNnPT1cInN0cmluZ1wiKSAgdGhpcy5tZXNzYWdlLm1lc3NhZ2UgPSB7J21lc3NhZ2UnOm1zZ307ICBcclxuICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBtc2c9PVwib2JqZWN0XCIpIHRoaXMubWVzc2FnZS5tZXNzYWdlID0geydtZXNzYWdlJzpKU09OLnN0cmluZ2lmeShtc2cpfTtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZS5zdGFjayA9IHN0YWNrOyBcclxuICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzdGFjaz09XCJzdHJpbmdcIikgdGhpcy5tZXNzYWdlLm1lc3NhZ2UgPSB7J3N0YWNrJzpzdGFja307XHJcbiAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc3RhY2s9PVwib2JqZWN0XCIpIHRoaXMubWVzc2FnZS5tZXNzYWdlID0geydzdGFjayc6SlNPTi5zdHJpbmdpZnkoc3RhY2spfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZS5zaG93PXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZS50eXBlPXR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZS5zcmM9c3JjO1xyXG4gICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2UuZHQ9bmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzLnVuc2hpZnQodGhpcy5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93X21lc3NhZ2VzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlc1swXS5jb3VudCA9IHRoaXMubWVzc2FnZXMubGVuZ3RoXHJcbiAgICAgICAgICAgICAgICAgICAgIGNvdW50ID0gdGhpcy5tZXNzYWdlcy5sZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIHZhciAkdGltZW91dCA9ICR0aW1lb3V0IHx8IHRoaXMuJGluamVjdG9yLmdldCgnJHRpbWVvdXQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWVzc2FnZS50eXBlIT0nZXJyb3InKSAgXHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0wO2k8aW5zdGFuY2UubWVzc2FnZXMubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlLm1lc3NhZ2VzW2ldLmNvdW50ID09IGNvdW50KSAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmhpZGRlbk1lc3NhZ2VzLnB1c2goYW5ndWxhci5jb3B5KGluc3RhbmNlLm1lc3NhZ2VzW2ldKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLm1lc3NhZ2VzLnNwbGljZShpLDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LDUwMDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgfVxyXG4gICAgIFxyXG4gICAgIGNoZWNrRm9yVmlzaWJsZU1lc3NhZ2VzICAoKVxyXG4gICAgIHtcclxuICAgICAgICAgICB2YXIgdmlzaWJpbGl0eT0wO1xyXG4gICAgICAgICAgIGZvcih2YXIgaT0wO2k8dGhpcy5tZXNzYWdlcy5sZW5ndGg7aSsrKSAgeyBcclxuICAgICAgICAgICAgaWYgKHRoaXMubWVzc2FnZXNbaV0uc2hvdykgdmlzaWJpbGl0eSsrO1xyXG4gICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHZpc2liaWxpdHk7XHJcbiAgICAgIFxyXG4gICAgfTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgZ2V0TWVzc2FnZXMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZXM7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICAgIGhpZGVNZXNzYWdlcyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLm1lc3NhZ2VzLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VzW2ldLnNob3cgPSBmYWxzZTtcclxuICAgICAgICAgICB9XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgIHRoaXMuc2hvd19tZXNzYWdlcyA9IGZhbHNlO1xyXG4gXHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICAgcmVtb3ZlQWxsTWVzc2FnZXMgPSBmdW5jdGlvbiAoKSBcclxuICAgICAgICAge1xyXG4gICAgICAgICBcclxuICAgICAgICAgICAgICB2YXIgaW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgICAgICAgICAgIHZhciAkdGltZW91dCA9ICR0aW1lb3V0IHx8IHRoaXMuJGluamVjdG9yLmdldCgnJHRpbWVvdXQnKTtcclxuICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxpbnN0YW5jZS5tZXNzYWdlcy5sZW5ndGg7aSsrKSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5oaWRkZW5NZXNzYWdlcy5wdXNoKGFuZ3VsYXIuY29weShpbnN0YW5jZS5tZXNzYWdlc1tpXSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5tZXNzYWdlcy5sZW5ndGg9MDtcclxuICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2Uuc2hvd19tZXNzYWdlcyA9IGZhbHNlO1xyXG4gICAgICAgICAgfSk7XHJcbiBcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJlbW92ZU1lc3NhZ2UgPSBmdW5jdGlvbiAoaWQpIFxyXG4gICAgICAgIHtcclxuICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgaW5zdGFuY2UgPSB0aGlzOyAgIFxyXG4gICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICB0aGlzLmhpZGRlbk1lc3NhZ2VzLnB1c2goYW5ndWxhci5jb3B5KGluc3RhbmNlLm1lc3NhZ2VzW2lkXSkpO1xyXG4gICAgICAgICAgICAgIGluc3RhbmNlLm1lc3NhZ2VzLnNwbGljZShpZCwxKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICBcclxuICAgICAgICB9O1xyXG4gICAgICBcclxuICAgICAgZ2V0TWVzc2FnZVZpc2liaWxpdHkgPSBmdW5jdGlvbiAoKSBcclxuICAgICAgeyBcclxuICAgICAgICAgICByZXR1cm4gdGhpcy5zaG93X21lc3NhZ2VzO1xyXG4gICAgICAgICBcclxuICAgICAgICB9O1xyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgIGNsZWFyQWxsTWVzc2FnZXMgPSBmdW5jdGlvbiAobXNnLHR5cGUpXHJcbiAgICAgIHtcclxuICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXMubGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICB9XHJcbiB9XHJcbiBcclxuIGV4cG9ydCBkZWZhdWx0IE1lc3NhZ2luZ1NlcnZpY2U7IiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogUHJvY2Vzc2luZ1NlcnZpY2UgKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4ndXNlIHN0cmljdCc7XG5cbmNsYXNzIFByb2Nlc3NpbmdTZXJ2aWNle1xuXG4gIGNvbnN0cnVjdG9yKClcbiAge1xuICAgIHRoaXMuc2hvd1Byb2Nlc3NpbmcgPWZhbHNlO1xuICAgIHRoaXMuYWN0aXZpdHlNZXNzYWdlID0gXCJcIjtcbiAgICAgICAgXG4gIH1cbiAgICAgc2hvd0FjdGl2aXR5ICAgKG1zZykge1xuICAgICAgICAgIHJldHVybiAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMuYWN0aXZpdHlNZXNzYWdlID0gbXNnO1xuICAgICAgICAgICAgdGhpcy5zaG93UHJvY2Vzc2luZz10cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvd1Byb2Nlc3Npbmc7XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgIH0pO1xuICAgICAgICAgXG4gICAgICAgIH07XG4gICAgICAgIFxuICAgICAgICBzaG93QWN0aXZpdHlOb01zZyAgKCkge1xuICAgICAgICAgIHJldHVybiAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMuc2hvd1Byb2Nlc3Npbmc9dHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNob3dQcm9jZXNzaW5nO1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICB9KTtcbiAgICAgICAgIFxuICAgICAgICB9O1xuICAgICAgICBcbiAgICAgICAgc2V0QWN0aXZpdHlNc2cgIChtc2cpIHtcbiAgICAgICAgXG4gICAgICAgICAgICB0aGlzLmFjdGl2aXR5TWVzc2FnZSA9IG1zZztcbiAgICAgICAgIFxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZpdHlNZXNzYWdlO1xuICAgICAgICAgICAgLy90aGlzLm1lc3NhZ2Uuc2hvd1Byb2Nlc3NpbmcgPSBzaG93O1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICB9O1xuICAgICAgICAgXG4gICAgICAgXG4gICAgICAgIGhpZGVBY3Rpdml0eSAoKSB7XG4gICAgICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2aXR5TWVzc2FnZSA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1Byb2Nlc3Npbmc9ZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvd1Byb2Nlc3Npbmc7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9LCAxMDAwKTsgLy8gbWVzc2FnZSB3aWxsIGJlIHZpc2libGUgYXQgbGVhc3QgMSBzZWNcbiAgICAgICAgfTtcbn1cbiBleHBvcnQgZGVmYXVsdCBQcm9jZXNzaW5nU2VydmljZTsiLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFJlc291cmNlc0RhdGFTZXJ2aWNlICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuJ3VzZSBzdHJpY3QnO1xyXG5cclxuLy9pbXBvcnQge2t0QWRqdXN0Q29udGVudFRvTmF2YmFyfSBmcm9tICcuLi8wMDAxX2RpcmVjdGl2ZXMvYW5ndWxhckpTL2J1aWxkL2t0ZGlyZWN0aXZlcy5qcyc7XHJcblxyXG5jbGFzcyBSZXNvdXJjZXNEYXRhU2VydmljZXtcclxuXHJcbiAgY29uc3RydWN0b3IoJGh0dHAsJHEsJHJvb3RTY29wZSxNZXNzYWdpbmdTZXJ2aWNlLFJlc3RBcGlTZXJ2aWNlKVxyXG4gIHtcclxuICAgdGhpcy5jYWNoZSA9IHt9OyAvL3RoaXMgc2hvdWxkIGdvIGludG8gc3RhdGUgbWFuYWdlclxyXG4gICAgdGhpcy4kaHR0cCA9JGh0dHA7XHJcbiAgICB0aGlzLiRxID0gJHE7XHJcbiAgICB0aGlzLiRyb290U2NvcGUgPSAkcm9vdFNjb3BlO1xyXG4gICAgdGhpcy5NZXNzYWdpbmdTZXJ2aWNlID0gTWVzc2FnaW5nU2VydmljZTtcclxuICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UgPVJlc3RBcGlTZXJ2aWNlO1xyXG4gIH1cclxuIFxyXG4gICBzdGF0aWMgJGluamVjdCA9IFsnJGh0dHAnLCckcScsJyRyb290U2NvcGUnLCdNZXNzYWdpbmdTZXJ2aWNlJywnUmVzdEFwaVNlcnZpY2UnXTtcclxuIFxyXG4gICAgXHJcblx0U2F2ZVJlc291cmNlRGVmICAocmVzb3VyY2UpIHtcclxuICAgICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiXCI7XHJcbiAgICAgICAgICB2YXIgdXJsPScuLi9hcGkvc2F2ZS1yZXNvdXJjZS1kZWYvJzsgIFxyXG4gICAgICAgICAgaWYgKHJlc291cmNlLlJlc291cmNlRGVmSWQhPT11bmRlZmluZWQpXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgcmVzb3VyY2UuUmVzb3VyY2VEZWZJZC5PcmdhbmlzYXRpb249IDE7XHJcbiAgICAgICAgICAgICAgcmVzb3VyY2UuUmVzb3VyY2VEZWZJZC5Qcml2YXRlPSBmYWxzZTtcclxuICAgICAgICAgICAgICByZXNvdXJjZS5MYW5nID0gdGhpcy4kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZ09iajtcclxuICAgICAgICAgICAgICByZXNvdXJjZS5WZXJzaW9uPSAxO1xyXG4gICAgICAgICAgICAgIHJlc291cmNlLlJlc291cmNlRGVmSWQuVGFibGVDcmVhdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgcmVzb3VyY2UuUmVzb3VyY2VEZWZJZC5Gb3JtRGVmaW5lZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgaHR0cF9tZXRob2Q9XCJQT1NUXCI7XHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxyZXNvdXJjZSkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxKSB7ICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLCBtc2c6J1Jlc291cmNlIGRlZmluaXRpb24gc2F2ZWQgc3VjY2Vzc2Z1bHkgIScsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzonU2F2ZSByZXNvdXJjZSBkZWZpbml0aW9uIGVycm9yIChmbiBTYXZlUmVzb3VyY2VEZWYpIC0tPiBzdGF0dXMgPSAnK3Jlc3BvbnNlLnN0YXR1cysnIHN0YXR1c1RleHQgPSAnK3Jlc3BvbnNlLnN0YXR1c1RleHQrJyAnK3Jlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTsgIFxyXG4gXHJcbiBcclxuICAgIFNhdmVSZXNvdXJjZURlZjIgIChyZXNvdXJjZSkgeyAvL1JlbW92aW5nIGZyb20gY2xpZW50IHBvc3QgYWxsIHJlZmVyZW5jZXMgdG8gICdSZXNvdXJjZURlZklkJyBcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIlwiO1xyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL3NhdmUtcmVzb3VyY2UtZGVmMi8nOyAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgaHR0cF9tZXRob2Q9XCJQT1NUXCI7XHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxyZXNvdXJjZSkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEpIHsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLG1zZzonUmVzb3VyY2UgZGVmaW5pdGlvbiBzYXZlZCBzdWNjZXNzZnVseSAhJyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAgLy8gZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cz09NDAzKSBkZWZlcnJlZC5yZWplY3Qoe21zZzogcmVzcG9uc2UuZGF0YSsnID0+IFNhdmUgcmVzb3VyY2UgZGVmaW5pdGlvbiBmYWlsZWQgISA9PiBTYXZlUmVzb3VyY2VEZWYyJyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBkZWZlcnJlZC5yZWplY3Qoe21zZzonU2F2ZSByZXNvdXJjZSBkZWYgZmFpbGVkICEgLS0+IFNhdmVSZXNvdXJjZURlZjInLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9OyAgXHJcbiBcclxuIFxyXG4gLy8gTkVXIE1BUFBJTkdTIFxyXG4gICAgIHB1dE1hcHBpbmdzIChuYW1lLHJlc291cmNlRGVmSWQsbWFwcGluZ3NEYXRhLGZpbGVGaWVsZHMpIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiUE9TVFwiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9wdXQtbWFwcGluZ3MtbmV3LycrcmVzb3VyY2VEZWZJZCsnLyc7XHJcbiAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICBsZXQgcG9zdF9kYXRhPSB7J3Jlc291cmNlRGVmSWQnOnJlc291cmNlRGVmSWQsJ21hcHBpbmdzRGF0YSc6bWFwcGluZ3NEYXRhLCduYW1lJzpuYW1lLCdmaWxlRmllbGRzJzpmaWxlRmllbGRzfTtcclxuICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxwb3N0X2RhdGEpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J1NhdmUgbWFwcGluZyBmYWlsZWQgISAtLT4gcHV0TWFwcGluZ3MnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgLy8gVVBEQVRFIE1BUFBJTkdTIFxyXG4gICAgIHB1dE1hcHBpbmdzV2l0aElkIChuYW1lLHJlc291cmNlRGVmSWQsaWQsbWFwcGluZ3NEYXRhLGZpbGVGaWVsZHMpIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiUE9TVFwiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9wdXQtbWFwcGluZ3MvJytyZXNvdXJjZURlZklkKycvJytpZCsnLyc7XHJcbiAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICBsZXQgcG9zdF9kYXRhPSB7J21hcHBpbmdzSWQnOmlkLCdyZXNvdXJjZURlZklkJzpyZXNvdXJjZURlZklkLCdtYXBwaW5nc0RhdGEnOm1hcHBpbmdzRGF0YSwnbmFtZSc6bmFtZSwnZmlsZUZpZWxkcyc6ZmlsZUZpZWxkc307XHJcbiAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwscG9zdF9kYXRhKS50aGVuKHJlc3BvbnNlID0+e1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDEpIHsgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J1NhdmUgbWFwcGluZyBmYWlsZWQgISAtLT4gcHV0TWFwcGluZ3NXaXRoSWQnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICB9OyAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAvLyBHRVQtTUFQUElOR1MgTElTVFxyXG4gICAgIGdldE1hcHBpbmdzTGlzdCAocmVzb3VyY2VEZWZJZCkge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgdXJsPScuLi9hcGkvZ2V0LW1hcHBpbmdzLWxpc3QvJytyZXNvdXJjZURlZklkKycvJztcclxuICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBub3Qgc3VjY2Vzc2Z1bCwgYmluZCBlcnJvcnMgdG8gZXJyb3IgdmFyaWFibGVzIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzonR2V0IG1hcHBpbmcgZmFpbGVkICEgLS0+IGdldE1hcHBpbmdzTGlzdCcsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAvLyB9KTsgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgfTsgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICAvLyBHRVQtTUFQUElOR1MgXHJcbiAgICAgZ2V0TWFwcGluZ3MgKGlkKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIkdFVFwiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9nZXQtbWFwcGluZ3MvJytpZCsnLyc7XHJcbiAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLG1zZzpkYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBub3Qgc3VjY2Vzc2Z1bCwgYmluZCBlcnJvcnMgdG8gZXJyb3IgdmFyaWFibGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J0dldCBtYXBwaW5nIGZhaWxlZCAhIC0tPiBnZXRNYXBwaW5ncycsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy99KTsgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgfTsgICAgICAgIFxyXG4vLyBNSUdPUiBFTkRcclxuIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBodHRwIGxvY2FsaG9zdDo4MDgwL2FwaS9zYXZlLXJlc291cmNlLWRlZi9cIixcclxuXHQvLyAgICAgICAgICAgR0VUIFJFU09VUkNFUyBERUYgIC0tLS0tLS0tLSAgTUlHT1JcclxuXHRcclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBnZXRSZXNvdXJjZXMgICgpIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiR0VUXCI7XHJcbiAgICAgICAgICB2YXIgdXJsPScuLi9hcGkvZ2V0LXJlc291cmNlLWRlZi8nO1xyXG4gICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuXHRcdCAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhICwgbXNnOiByZXNwb25zZS5kYXRhLCBzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgbm90IHN1Y2Nlc3NmdWwsIGJpbmQgZXJyb3JzIHRvIGVycm9yIHZhcmlhYmxlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOidHZXQgcmVzb3VyY2UgZGVmIGZhaWxlZCAhIC0tPiBnZXRSZXNvdXJjZXMnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vfSk7ICAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07XHJcblxyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIGh0dHAgbG9jYWxob3N0OjgwODAvYXBpL3NhdmUtcmVzb3VyY2UtZGVmL1wiLFxyXG4gICAgLy8gICAgICAgICAgIEdFVCBSRVNPVVJDRVMgREVGICAtLS0tLS0tLS0gIE1JR09SXHJcbiAgICBcclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gIGdldEV4aXN0aW5nUmVzb3VyY2VSZWxhdGlvbnNoaXBzICAocmVzb3VyY2VJZCwgZ2V0UGFyZW50cykge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjtcclxuIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2dldC1leGlzdGluZy1yZXNvdXJjZS1yZWxhdGlvbnNoaXBzLycrcmVzb3VyY2VJZCsnLyc7XHJcblx0XHQgIGlmIChnZXRQYXJlbnRzKVx0dXJsPScuLi9hcGkvZ2V0LWV4aXN0aW5nLXJlc291cmNlLXJlbGF0aW9uc2hpcHMvJytyZXNvdXJjZUlkKycvJyArIGdldFBhcmVudHMgKyAnLyc7XHJcblx0XHRcdFx0XHQgIFxyXG4gICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSAsIG1zZzogcmVzcG9uc2UuZGF0YSwgc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIG5vdCBzdWNjZXNzZnVsLCBiaW5kIGVycm9ycyB0byBlcnJvciB2YXJpYWJsZXNcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzonR2V0IGV4aXN0aW5nIHJlc291cmNlIHJlbGF0aW9uc2hpcHMgZmFpbGVkICEgLS0+IGdldEV4aXN0aW5nUGFyZW50Rm9yUmVzb3VyY2UnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vfSk7ICAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07XHJcblx0XHRcclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgU0FWRSBQQUdFIERFRlxyXG5cdFxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gIHNhdmVQYWdlRGVmICAocGFnZSxsYW5nLHN0eXBlKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIlBPU1RcIjtcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9zYXZlLXBhZ2UtZGVmLycrbGFuZysnLyc7XHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG5cdFx0ICBcclxuICAgICAgICAgICBsZXQgcG9zdF9kYXRhPSB7cmVzb3VyY2U6cGFnZSxzYXZlX3R5cGU6c3R5cGV9O1xyXG4gICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsLHBvc3RfZGF0YSkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZSAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOidTYXZlIHBhZ2VkIGRlZiBmYWlsZWQgISAtLT4gc2F2ZVBhZ2VEZWYnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuXHRcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgU0FWRSBSRVNPVVJDRVMgREVGIEFMTFxyXG5cdFxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gIHNhdmVSZXNvdXJjZURlZkFsbCAgKHJlc291cmNlKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIlBVVFwiO1xyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL3Jlc291cmNlLWRlZi1hbGwvJytyZXNvdXJjZS5pZCsnLyc7XHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG5cdFx0ICBcclxuICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnB1dCh1cmwscmVzb3VyY2UpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICByZXNwb25zZS5qc29uKCkudGhlbihkYXRhPT57XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMCAgfHwgIHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgbm90IHN1Y2Nlc3NmdWwsIGJpbmQgZXJyb3JzIHRvIGVycm9yIHZhcmlhYmxlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOidTYXZlIHJlc291cmNlIGRlZiBmYWlsZWQgISAtLT4gc2F2ZVJlc291cmNlRGVmQWxsJyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTsgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcblx0XHRcclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBTQVZFIFJFU09VUkNFUyBERUYgQUxMIC0gTkVXICEhIVxyXG5cdFxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgXHJcbiAgICAgICAgICBzYXZlUmVzb3VyY2VEZWZBbGxOZXcgIChyZXNvdXJjZSkge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJQVVRcIjtcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9yZXNvdXJjZS1kZWYtYWxsLW5ldy8nK3Jlc291cmNlLmlkKycvJztcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICAvL2RlYnVnZ2VyXHJcblx0XHQgIFxyXG4gICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wdXQodXJsLHJlc291cmNlKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuanNvbigpLnRoZW4oZGF0YT0+e1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiBkYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBub3Qgc3VjY2Vzc2Z1bCwgYmluZCBlcnJvcnMgdG8gZXJyb3IgdmFyaWFibGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J1NhdmUgcmVzb3VyY2UgZGVmIG5ldyBmYWlsZWQgISAtLT4gc2F2ZVJlc291cmNlRGVmQWxsTmV3JyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTsgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICB9O1xyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIFNBVkUgUkVTT1VSQ0VTIERFRiBQQVJBTUVURVJTXHJcblx0XHJcblx0Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgc2F2ZVJlc291cmNlRGVmUGFyYW1ldGVycyAgKHJlc291cmNlX2lkLHBhcmFtZXRlcnMpIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiUE9TVFwiO1xyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL3NhdmUtcmVzb3VyY2UtZGVmLXBhcmFtZXRlcnMvJytyZXNvdXJjZV9pZCsnLyc7XHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG5cdFx0ICBcclxuICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwscGFyYW1ldGVycykudGhlbihyZXNwb25zZSA9PntcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwICB8fHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7bXNnOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH0pOyAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J1NhdmUgZXJyb3IgKGZuIHNhdmVSZXNvdXJjZURlZlBhcmFtZXRlcnMpIC0tPiBzdGF0dXMgPSAnK3Jlc3BvbnNlLnN0YXR1cysnIHN0YXR1c1RleHQgPSAnK3Jlc3BvbnNlLnN0YXR1c1RleHQrJyAnK2RhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07XHJcblx0XHRcclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBTRU5EIE5PVElGSUNBVElPTlxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gICAgc2VuZE5vdGlmaWNhdGlvbiAgKG5vdGlmaWNhdGlvbikge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJQT1NUXCI7XHJcbiAgICAgICAgICB2YXIgdXJsPScuLi9hcGkvc2VuZC1ub3RpZmljYXRpb24vJytub3RpZmljYXRpb24uaWQrJy8nO1xyXG4gICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuXHRcdCAgXHJcbiAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsLG5vdGlmaWNhdGlvbikudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZSAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IGRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIG5vdCBzdWNjZXNzZnVsLCBiaW5kIGVycm9ycyB0byBlcnJvciB2YXJpYWJsZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J1NhdmUgbm90aWZpY2F0aW9uZmFpbGVkICEgLS0+IHNlbmROb3RpZmljYXRpb24nLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICB9O1xyXG5cdFx0XHRcdFxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBcclxuXHQvLyAgICAgICAgICAgR0VUIFJFU09VUkNFUyBERUYgQUxMXHJcblx0XHJcblx0Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgZ2V0UmVzb3VyY2VEZWZBbGwgIChyZXNvdXJjZUlkKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIkdFVFwiO1xyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL3Jlc291cmNlLWRlZi1hbGwvJytyZXNvdXJjZUlkKycvJztcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcblx0XHQgIFxyXG4gICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSkgeyAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBub3Qgc3VjY2Vzc2Z1bCwgYmluZCBlcnJvcnMgdG8gZXJyb3IgdmFyaWFibGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOidHZXQgcmVzb3VyY2UgZGVmIGZhaWxlZCAhIC0tPiBnZXRSZXNvdXJjZURlZkFsbCcsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICB9O1xyXG5cdFx0XHJcbiBcclxuICAgXHJcbiAgICAgZ2V0UmVzb3VyY2VGb3JtICAocmVzb3VyY2VJZCxmb3JtVHlwZSxsYW5nLHZlcnNpb24pIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjtcclxuICAgICAgICAgaWYgKHZlcnNpb249PT11bmRlZmluZWQpIHZlcnNpb249MFxyXG4gICAgICAgICB2YXIgdXJsPScuLi9hcGkvZ2V0LXJlc291cmNlLWZvcm0vJysgcmVzb3VyY2VJZCArJy8nK2Zvcm1UeXBlKycvJytsYW5nKycvJyt2ZXJzaW9uKycvJztcclxuICAgICAgICAgdmFyIGluZGV4ID0gcmVzb3VyY2VJZCArICdfJyArIGZvcm1UeXBlICsgJ18nICsgbGFuZyBcclxuICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgICAgIFxyXG4gICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwICAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZSAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIG5vdCBzdWNjZXNzZnVsLCBiaW5kIGVycm9ycyB0byBlcnJvciB2YXJpYWJsZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J0dldCByZXNvdXJjZSBmb3JtIGZhaWxlZCAhIC0tPiBnZXRSZXNvdXJjZUZvcm0nK3Jlc3BvbnNlLm1zZyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICAgXHJcbiAgICAgfVxyXG4gICAgIFxyXG4gICAgICAgXHJcbiAgIFxyXG4gIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBHRVQgUkVTT1VSQ0UgTU9ERUwgRk9SIERFUExPWU1FTlQgXHJcblx0Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgZ2V0UmVzb3VyY2VNb2RlbEZvckRlcGxveW1lbnQgIChyZXNvdXJjZUlkLHZlcnNpb24sbGFuZykge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjtcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9nZXQtcmVzb3VyY2UtbW9kZWwtZm9yLWRlcGxveW1lbnQvJysgcmVzb3VyY2VJZCArJy8nK3ZlcnNpb24gKycvJytsYW5nKycvJztcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4oXHJcbiAgICAgICAgICAgICAgIHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLmxlbmd0aD09MCkgcmVzcG9uc2Uuc3RhdHVzID09PSA0MDRcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwICApIHsgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZSAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J0dldCByZXNvdXJjZSBmb3IgZGVwbG95bWVudCBmYWlsZWQgISAtLT4gZ2V0UmVzb3VyY2VNb2RlbEZvckRlcGxveW1lbnQnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgICAgICB9LCBcclxuICAgICAgICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOidHZXQgcmVzb3VyY2UgZm9yIGRlcGxveW1lbnQgZmFpbGVkICEgLS0+IGdldFJlc291cmNlTW9kZWxGb3JEZXBsb3ltZW50JyxzdGF0dXM6ZXJyLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07XHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBGT1JNIEZJRUxEU1xyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gIGdldEZvcm1GaWVsZHMgIChyZXNvdXJjZUlkLGxhbmcsdmVyc2lvbikge1xyXG4gICAgXHJcbiAgICAgIHZhciBodHRwX21ldGhvZD1cIkdFVFwiO1xyXG4gICAgICAgaWYgKHZlcnNpb24gPT09IHVuZGVmaW5lZCkgdmVyc2lvbiA9IDBcclxuICAgICAgdmFyIHVybD0nLi4vYXBpL2dldC1mb3JtLWZpZWxkcy8nKyByZXNvdXJjZUlkICsnLycrbGFuZysnLycrdmVyc2lvbisnLyc7XHJcbiAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgICAgdmFyIGdvdG9TZXJ2ZXI9ZmFsc2U7XHJcbiAgICAgICAgcmVzb3VyY2VJZCA9IHJlc291cmNlSWQudG9TdHJpbmcoKVxyXG4gICAgICBpZiAodGhpcy5jYWNoZVsnZ2V0Rm9ybUZpZWxkcyddICE9PXVuZGVmaW5lZClcclxuICAgICAge1xyXG4gICAgICAgICBpZih0aGlzLmNhY2hlLmdldEZvcm1GaWVsZHNbcmVzb3VyY2VJZCtsYW5nXSAhPT11bmRlZmluZWQpXHJcbiAgICAgICAgIHtcclxuICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogIHRoaXMuY2FjaGUuZ2V0Rm9ybUZpZWxkc1tyZXNvdXJjZUlkK2xhbmddLHN0YXR1czoyMDB9KTtcclxuICAgICAgICAgfVxyXG4gICAgICAgICBlbHNlXHJcbiAgICAgICAgIHtcclxuICAgICAgICAgICB0aGlzLmNhY2hlWydnZXRGb3JtRmllbGRzJ11bcmVzb3VyY2VJZCtsYW5nXSA9IHt9O1xyXG4gICAgICAgICAgIGdvdG9TZXJ2ZXI9dHJ1ZTsgXHJcbiAgICAgICAgIH1cclxuICAgICAgfSBlbHNlXHJcbiAgICAgIHtcclxuICAgICAgICAgdGhpcy5jYWNoZVsnZ2V0Rm9ybUZpZWxkcyddID0ge307XHJcbiAgICAgICAgIHRoaXMuY2FjaGVbJ2dldEZvcm1GaWVsZHMnXVtyZXNvdXJjZUlkK2xhbmddID0ge307XHJcbiAgICAgICAgIGdvdG9TZXJ2ZXI9dHJ1ZTtcclxuICAgICAgfSAgXHJcbiAgICAgICBpZiAoZ290b1NlcnZlcilcclxuICAgICAgIHtcclxuICAgICAgICAgIHZhciBpbnN0YW5jZSA9IHRoaXM7XHJcbiAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgICB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jYWNoZVsnZ2V0Rm9ybUZpZWxkcyddW3Jlc291cmNlSWQrbGFuZ10gPSByZXNwb25zZS5kYXRhOyAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J0dldCBmb3JtIGZpZWxkcyBmYWlsZWQgISAtLT4gZ2V0Rm9ybUZpZWxkcycsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy99KTsgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgfTtcclxuICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgR0VUIEZPUk0gRklFTERTIEJZIFRZUEVcclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBnZXRGb3JtRmllbGRzQnlUeXBlICAocmVzb3VyY2VJZCxyZWxhdGVkSWQsZWxlbWVudFR5cGUsbGFuZykge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2dldC1mb3JtLWZpZWxkcy1ieS10eXBlLycrIHJlc291cmNlSWQgKycvJysgcmVsYXRlZElkICsnLycrZWxlbWVudFR5cGUrJy8nK2xhbmcrJy8nO1xyXG4gICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyAgIFxyXG4gICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwICAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLCBzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgbm90IHN1Y2Nlc3NmdWwsIGJpbmQgZXJyb3JzIHRvIGVycm9yIHZhcmlhYmxlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOidHZXQgZm9ybSBmaWVsZHMgZmFpbGVkICEgLS0+IGdldEZvcm1GaWVsZHNCeVR5cGUnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgLy8gfSk7ICAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07XHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBSRVNPVVJDRSBEQVRBIExJU1RcclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBnZXRSZXNvdXJjZURhdGFMaXN0ICAocmVzb3VyY2VJZCxwcmVzZW50YXRpb25JZCxsYW5nLHNlYXJjaCxmb3JtLGZyb21DYWNoZSkge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZiAoZnJvbUNhY2hlPT11bmRlZmluZWQpICBmcm9tQ2FjaGU9ZmFsc2U7XHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJQT1NUXCI7XHJcbiAgICAgICAgICBpZiAoZm9ybT09dW5kZWZpbmVkKSBmb3JtPVtdO1xyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2dldC1yZXNvdXJjZS1kYXRhLWxpc3QvJysgcmVzb3VyY2VJZCArJy8nKyBwcmVzZW50YXRpb25JZCArJy8nK2xhbmcrJy8nO1xyXG4gICAgICAgICAgdXJsID0gdXJsKyc/cGFnZT0xJnBhZ2Vfc2l6ZT0xMDAwMCc7XHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgICAgICB2YXIgZ290b1NlcnZlcj1mYWxzZTtcclxuICAgICAgICAgIGlmIChyZXNvdXJjZUlkPT11bmRlZmluZWQgfHwgcmVzb3VyY2VJZD09bnVsbClcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdSZXNvdXJjZSBpZCBpcyBub3QgZGVmaW5lZC4gRWxlbWVudCBpZCA9ICcrcHJlc2VudGF0aW9uSWQsc3RhdHVzOjQwMH0pOyAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgIGlmICh0aGlzLmNhY2hlWydnZXRSZXNvdXJjZURhdGFMaXN0J10gIT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIGlmKHRoaXMuY2FjaGUuZ2V0UmVzb3VyY2VEYXRhTGlzdFtyZXNvdXJjZUlkKydfJytwcmVzZW50YXRpb25JZCtsYW5nXSAhPT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2FjaGUuZ2V0UmVzb3VyY2VEYXRhTGlzdFtyZXNvdXJjZUlkKydfJytwcmVzZW50YXRpb25JZCtsYW5nXS5kb3dubG9hZGVkICYmIChzZWFyY2g9PT1cIlwiIHx8IHNlYXJjaD09e30gfHwgc2VhcmNoPT1be31dIHx8IGZyb21DYWNoZSkpXHJcbiAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6ICB0aGlzLmNhY2hlLmdldFJlc291cmNlRGF0YUxpc3RbcmVzb3VyY2VJZCsnXycrcHJlc2VudGF0aW9uSWQrbGFuZ10uZGF0YSxzdGF0dXM6MjAwfSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWNoZVsnZ2V0UmVzb3VyY2VEYXRhTGlzdCddW3Jlc291cmNlSWQrJ18nK3ByZXNlbnRhdGlvbklkK2xhbmddID0ge2RhdGE6W10sZG93bmxvYWRlZDpmYWxzZX07XHJcbiAgICAgICAgICAgICAgICAgICAgZ290b1NlcnZlcj10cnVlOyBcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICB9IGVsc2VcclxuICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNhY2hlWydnZXRSZXNvdXJjZURhdGFMaXN0J10gPSB7fTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jYWNoZVsnZ2V0UmVzb3VyY2VEYXRhTGlzdCddW3Jlc291cmNlSWQrJ18nK3ByZXNlbnRhdGlvbklkK2xhbmddID0ge2RhdGE6W10sZG93bmxvYWRlZDpmYWxzZX07XHJcbiAgICAgICAgICAgICAgICAgIGdvdG9TZXJ2ZXI9dHJ1ZTtcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgaWYgKHNlYXJjaCE9PVwiXCIpXHJcbiAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgZ290b1NlcnZlcj10cnVlO1xyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZ290b1NlcnZlcikge1xyXG4gICAgICAgICAgICB2YXIgaW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgICAgICAgICBsZXQgcG9zdF9kYXRhID0geydmaWx0ZXInOnNlYXJjaCwnZm9ybSc6Zm9ybX07XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsLHBvc3RfZGF0YSkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgICB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWFyY2ggPT09XCJcIiB8fCBzZWFyY2g9PXt9IHx8IHNlYXJjaD09W3t9XSB8fCBmcm9tQ2FjaGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmNhY2hlWydnZXRSZXNvdXJjZURhdGFMaXN0J11bcmVzb3VyY2VJZCsnXycrcHJlc2VudGF0aW9uSWQrbGFuZ10uZGF0YSA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jYWNoZVsnZ2V0UmVzb3VyY2VEYXRhTGlzdCddW3Jlc291cmNlSWQrJ18nK3ByZXNlbnRhdGlvbklkK2xhbmddLmRvd25sb2FkZWQgPSB0cnVlOyAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOnJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBHRVQgUkVTT1VSQ0UgREFUQSBMSVNUIEFMTFxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gIGdldFJlc291cmNlRGF0YUxpc3RBbGwgIChyZXNvdXJjZUlkLHByZXNlbnRhdGlvbklkLGxhbmcsZnJvbUNhY2hlLGNhbGxiYWNrLHBvc3RfZGF0YSkge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZiAoZnJvbUNhY2hlPT11bmRlZmluZWQpICBmcm9tQ2FjaGU9ZmFsc2U7XHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjtcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9nZXQtcmVzb3VyY2UtZGF0YS1saXN0LWFsbC8nKyByZXNvdXJjZUlkICsnLycrIHByZXNlbnRhdGlvbklkICsnLycrbGFuZysnLyc7XHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgICAgICB2YXIgZ290b1NlcnZlcj1mYWxzZTtcclxuICAgICAgICAgIGlmIChyZXNvdXJjZUlkPT11bmRlZmluZWQgfHwgcmVzb3VyY2VJZD09bnVsbClcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdSZXNvdXJjZSBpZCBpcyBub3QgZGVmaW5lZC4gRWxlbWVudCBpZCA9ICcrcHJlc2VudGF0aW9uSWQsc3RhdHVzOjQwMH0pOyAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgIGlmICh0aGlzLmNhY2hlWydnZXRSZXNvdXJjZURhdGFMaXN0QWxsJ10gIT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIGlmKHRoaXMuY2FjaGUuZ2V0UmVzb3VyY2VEYXRhTGlzdEFsbFtyZXNvdXJjZUlkKydfJytsYW5nKydfJytwcmVzZW50YXRpb25JZF0gIT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNhY2hlLmdldFJlc291cmNlRGF0YUxpc3RBbGxbcmVzb3VyY2VJZCsnXycrbGFuZysnXycrcHJlc2VudGF0aW9uSWRdLmRvd25sb2FkZWQgJiYgZnJvbUNhY2hlKVxyXG4gICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiAgdGhpcy5jYWNoZS5nZXRSZXNvdXJjZURhdGFMaXN0QWxsW3Jlc291cmNlSWQrJ18nK2xhbmcrJ18nK3ByZXNlbnRhdGlvbklkXS5kYXRhLHN0YXR1czoyMDB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jYWNoZS5nZXRSZXNvdXJjZURhdGFMaXN0QWxsW3Jlc291cmNlSWQrJ18nK2xhbmcrJ18nK3ByZXNlbnRhdGlvbklkXS5kb3dubG9hZEluUHJvZ3Jlc3MpXHJcbiAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2FjaGUuZ2V0UmVzb3VyY2VEYXRhTGlzdEFsbFtyZXNvdXJjZUlkKydfJytsYW5nKydfJytwcmVzZW50YXRpb25JZF0uY2FsbEJhY2tzID09IHVuZGVmaW5lZCkgdGhpcy5jYWNoZS5nZXRSZXNvdXJjZURhdGFMaXN0QWxsW3Jlc291cmNlSWQrJ18nK2xhbmcrJ18nK3ByZXNlbnRhdGlvbklkXS5jYWxsQmFja3MgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FjaGUuZ2V0UmVzb3VyY2VEYXRhTGlzdEFsbFtyZXNvdXJjZUlkKydfJytsYW5nKydfJytwcmVzZW50YXRpb25JZF0uY2FsbEJhY2tzLnB1c2goY2FsbGJhY2spOyBcclxuICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVbJ2dldFJlc291cmNlRGF0YUxpc3RBbGwnXVtyZXNvdXJjZUlkKydfJytsYW5nKydfJytwcmVzZW50YXRpb25JZF0gPSB7ZGF0YTpbXSxkb3dubG9hZGVkOmZhbHNlLGRvd25sb2FkSW5Qcm9ncmVzczp0cnVlfTtcclxuICAgICAgICAgICAgICAgICAgICBnb3RvU2VydmVyPXRydWU7IFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIH0gZWxzZVxyXG4gICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVbJ2dldFJlc291cmNlRGF0YUxpc3RBbGwnXSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNhY2hlWydnZXRSZXNvdXJjZURhdGFMaXN0QWxsJ11bcmVzb3VyY2VJZCsnXycrbGFuZysnXycrcHJlc2VudGF0aW9uSWRdID0ge2RhdGE6W10sZG93bmxvYWRlZDpmYWxzZSxkb3dubG9hZEluUHJvZ3Jlc3M6dHJ1ZX07XHJcbiAgICAgICAgICAgICAgICAgIGdvdG9TZXJ2ZXI9dHJ1ZTtcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChnb3RvU2VydmVyKVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIHZhciBpbnN0YW5jZSA9IHRoaXM7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNhY2hlLmdldFJlc291cmNlRGF0YUxpc3RBbGxbcmVzb3VyY2VJZCsnXycrbGFuZysnXycrcHJlc2VudGF0aW9uSWRdLmNhbGxCYWNrcz09dW5kZWZpbmVkKSB0aGlzLmNhY2hlLmdldFJlc291cmNlRGF0YUxpc3RBbGxbcmVzb3VyY2VJZCsnXycrbGFuZysnXycrcHJlc2VudGF0aW9uSWRdLmNhbGxCYWNrcyA9IFtdO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxwb3N0X2RhdGEpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwICAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY2FjaGVbJ2dldFJlc291cmNlRGF0YUxpc3RBbGwnXVtyZXNvdXJjZUlkKydfJytsYW5nKydfJytwcmVzZW50YXRpb25JZF0uZGF0YSA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jYWNoZVsnZ2V0UmVzb3VyY2VEYXRhTGlzdEFsbCddW3Jlc291cmNlSWQrJ18nK2xhbmcrJ18nK3ByZXNlbnRhdGlvbklkXS5kb3dubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3NlbmQgY2FsbGJhY2sgdG8gaW5mb3JtIGRhdGEgaXMgYXZhaWxhYmxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpPTA7aTwgaW5zdGFuY2UuY2FjaGUuZ2V0UmVzb3VyY2VEYXRhTGlzdEFsbFtyZXNvdXJjZUlkKydfJytsYW5nKydfJytwcmVzZW50YXRpb25JZF0uY2FsbEJhY2tzLmxlbmd0aDtpKyspXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY2FjaGUuZ2V0UmVzb3VyY2VEYXRhTGlzdEFsbFtyZXNvdXJjZUlkKydfJytsYW5nKydfJytwcmVzZW50YXRpb25JZF0uY2FsbEJhY2tzW2ldKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmNhY2hlLmdldFJlc291cmNlRGF0YUxpc3RBbGxbcmVzb3VyY2VJZCsnXycrbGFuZysnXycrcHJlc2VudGF0aW9uSWRdLmNhbGxCYWNrcz1bXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmNhY2hlLmdldFJlc291cmNlRGF0YUxpc3RBbGxbcmVzb3VyY2VJZCsnXycrbGFuZysnXycrcHJlc2VudGF0aW9uSWRdLmRvd25sb2FkSW5Qcm9ncmVzcz1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmNhY2hlLmdldFJlc291cmNlRGF0YUxpc3RBbGxbcmVzb3VyY2VJZCsnXycrbGFuZysnXycrcHJlc2VudGF0aW9uSWRdLmRvd25sb2FkSW5Qcm9ncmVzcz1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6cmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvL30pOyAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBSRVNPVVJDRSBEQVRBIFBBTkRBUyBcclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBnZXRSZXNvdXJjZURhdGFQYW5kYXMgIChyZXNvdXJjZUlkLHByZXNlbnRhdGlvbklkLGxhbmcsZnJvbUNhY2hlLGNhbGxiYWNrKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmIChmcm9tQ2FjaGU9PXVuZGVmaW5lZCkgIGZyb21DYWNoZT1mYWxzZTtcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIkdFVFwiO1xyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2dldC1yZXNvdXJjZS1kYXRhLXBhbmRhcy8nKyByZXNvdXJjZUlkICsnLycrIHByZXNlbnRhdGlvbklkICsnLycrbGFuZysnLyc7XHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgICAgICB2YXIgZ290b1NlcnZlcj1mYWxzZTtcclxuICAgICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICAgIGlmIChyZXNvdXJjZUlkPT11bmRlZmluZWQgfHwgcmVzb3VyY2VJZD09bnVsbCkge1xyXG4gICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ1Jlc291cmNlIGlkIGlzIG5vdCBkZWZpbmVkLiBFbGVtZW50IGlkID0gJytwcmVzZW50YXRpb25JZCxzdGF0dXM6NDAwfSk7ICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgIGlmICh0aGlzLmNhY2hlWydnZXRSZXNvdXJjZURhdGFQYW5kYXMnXSAhPT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgaWYodGhpcy5jYWNoZS5nZXRSZXNvdXJjZURhdGFQYW5kYXNbcmVzb3VyY2VJZCsnXycrbGFuZ10gIT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNhY2hlLmdldFJlc291cmNlRGF0YVBhbmRhc1tyZXNvdXJjZUlkKydfJytsYW5nXS5kb3dubG9hZGVkICYmIGZyb21DYWNoZSkgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogIHRoaXMuY2FjaGUuZ2V0UmVzb3VyY2VEYXRhUGFuZGFzW3Jlc291cmNlSWQrJ18nK2xhbmddLmRhdGEsc3RhdHVzOjIwMH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmNhY2hlLmdldFJlc291cmNlRGF0YVBhbmRhc1tyZXNvdXJjZUlkKydfJytsYW5nXS5kb3dubG9hZEluUHJvZ3Jlc3MpXHJcbiAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2FjaGUuZ2V0UmVzb3VyY2VEYXRhUGFuZGFzW3Jlc291cmNlSWQrJ18nK2xhbmddLmNhbGxCYWNrcyA9PSB1bmRlZmluZWQpIHRoaXMuY2FjaGUuZ2V0UmVzb3VyY2VEYXRhUGFuZGFzW3Jlc291cmNlSWQrJ18nK2xhbmddLmNhbGxCYWNrcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhY2hlLmdldFJlc291cmNlRGF0YVBhbmRhc1tyZXNvdXJjZUlkKydfJytsYW5nXS5jYWxsQmFja3MucHVzaChjYWxsYmFjayk7IFxyXG4gICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWNoZVsnZ2V0UmVzb3VyY2VEYXRhUGFuZGFzJ11bcmVzb3VyY2VJZCsnXycrbGFuZ10gPSB7ZGF0YTpbXSxkb3dubG9hZGVkOmZhbHNlLGRvd25sb2FkSW5Qcm9ncmVzczp0cnVlfTtcclxuICAgICAgICAgICAgICAgICAgICBnb3RvU2VydmVyPXRydWU7IFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVbJ2dldFJlc291cmNlRGF0YVBhbmRhcyddID0ge307XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVbJ2dldFJlc291cmNlRGF0YVBhbmRhcyddW3Jlc291cmNlSWQrJ18nK2xhbmddID0ge2RhdGE6W10sZG93bmxvYWRlZDpmYWxzZSxkb3dubG9hZEluUHJvZ3Jlc3M6dHJ1ZX07XHJcbiAgICAgICAgICAgICAgICAgIGdvdG9TZXJ2ZXI9dHJ1ZTtcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZ290b1NlcnZlcikge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIHZhciBpbnN0YW5jZSA9IHRoaXM7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNhY2hlLmdldFJlc291cmNlRGF0YVBhbmRhc1tyZXNvdXJjZUlkKydfJytsYW5nXS5jYWxsQmFja3M9PXVuZGVmaW5lZCkgdGhpcy5jYWNoZS5nZXRSZXNvdXJjZURhdGFQYW5kYXNbcmVzb3VyY2VJZCsnXycrbGFuZ10uY2FsbEJhY2tzID0gW107XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY2FjaGVbJ2dldFJlc291cmNlRGF0YVBhbmRhcyddW3Jlc291cmNlSWQrJ18nK2xhbmddLmRhdGEgPSByZXNwb25zZS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY2FjaGVbJ2dldFJlc291cmNlRGF0YVBhbmRhcyddW3Jlc291cmNlSWQrJ18nK2xhbmddLmRvd25sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2VuZCBjYWxsYmFjayB0byBpbmZvcm0gZGF0YSBpcyBhdmFpbGFibGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGk9MDtpPCBpbnN0YW5jZS5jYWNoZS5nZXRSZXNvdXJjZURhdGFQYW5kYXNbcmVzb3VyY2VJZCsnXycrbGFuZ10uY2FsbEJhY2tzLmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jYWNoZS5nZXRSZXNvdXJjZURhdGFQYW5kYXNbcmVzb3VyY2VJZCsnXycrbGFuZ10uY2FsbEJhY2tzW2ldKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY2FjaGUuZ2V0UmVzb3VyY2VEYXRhUGFuZGFzW3Jlc291cmNlSWQrJ18nK2xhbmddLmNhbGxCYWNrcz1bXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmNhY2hlLmdldFJlc291cmNlRGF0YVBhbmRhc1tyZXNvdXJjZUlkKydfJytsYW5nXS5kb3dubG9hZEluUHJvZ3Jlc3M9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLCBzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY2FjaGUuZ2V0UmVzb3VyY2VEYXRhUGFuZGFzW3Jlc291cmNlSWQrJ18nK2xhbmddLmRvd25sb2FkSW5Qcm9ncmVzcz1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6cmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvL30pOyAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgfTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgR0VUIFJFU09VUkNFIEZPUk0gREVGSU5JVElPTlxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gIGdldFJlc291cmNlRm9ybVdpdGhEYXRhICAocmVzb3VyY2VEZWZJZCxyZXNvdXJjZUlkLGZvcm1UeXBlLGxhbmcpIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiR0VUXCI7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9nZXQtcmVzb3VyY2UtZm9ybS13aXRoLWRhdGEvJysgcmVzb3VyY2VEZWZJZCArJy8nKyByZXNvdXJjZUlkICsnLycrZm9ybVR5cGUrJy8nK2xhbmcrJy8nO1xyXG4gICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyAgIFxyXG4gICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBub3Qgc3VjY2Vzc2Z1bCwgYmluZCBlcnJvcnMgdG8gZXJyb3IgdmFyaWFibGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J0dldCByZXNvdXJjZSBmb3JtIGZhaWxlZCAhIC0tPiBnZXRSZXNvdXJjZUZvcm1XaXRoRGF0YScsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vICB9KTsgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICB9O1xyXG4gIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBHRVQgUkVTT1VSQ0UgRk9STSBFWFRFTkRFRFxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gIGdldFJlc291cmNlRm9ybUV4dGVuZGVkICAocmVzb3VyY2VJZCx0YXNrRGVmSWQsZm9ybVR5cGUscGFyZW50SWQsb3ZlcnJpZGVUeXBlLGxhbmcpIHtcclxuICAgIFxyXG4gICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjtcclxuICAgICAgICAgIFxyXG4gICAgICB2YXIgdXJsPScuLi9hcGkvZ2V0LXJlc291cmNlLWZvcm0tZXh0ZW5kZWQvJysgcmVzb3VyY2VJZCArJy8nK3Rhc2tEZWZJZCsnLycrZm9ybVR5cGUrJy8nK3BhcmVudElkKycvJytvdmVycmlkZVR5cGUrJy8nK2xhbmcrJy8nO1xyXG4gICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgXHJcbiAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgLy8gaWYgbm90IHN1Y2Nlc3NmdWwsIGJpbmQgZXJyb3JzIHRvIGVycm9yIHZhcmlhYmxlc1xyXG4gICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzonR2V0IHJlc291cmNlIGZvcm0gZXh0ZW5kZWQgZmFpbGVkICEgLS0+IGdldFJlc291cmNlRm9ybUV4dGVuZGVkJyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAvL30pOyAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICB9O1xyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBSRVNPVVJDRSBGT1JNIEVYVEVOREVEIFdJVGggREFUQVxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgXHJcbiAgZ2V0UmVzb3VyY2VGb3JtRXh0ZW5kZWRXaXRoRGF0YSAgKHJlc291cmNlSWQsdGFza0luaXRpYXRlSWQsdGFza0V4ZWN1dGVJZCxwb3B1bGF0ZVR5cGUscGFyZW50SWQscGFyZW50SW5pdGlhdGVJZCxwcmV2VGFza0V4ZUlkLGZvcm1UeXBlLHdpZGdldFR5cGUscmVzb3VyY2VSZWNvcmRJZCxvdmVycmlkZVR5cGUsbGFuZykge1xyXG4gICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjtcclxuICAgICAgICAgIC8vZGVidWdnZXIgIC8vZ2V0UmVzb3VyY2VGb3JtRXh0ZW5kZWRXaXRoRGF0YShyZXNvdXJjZUlkLHRhc2tJbml0aWF0ZUlkLHRhc2tFeGVjdXRlSWQscG9wdWxhdGVUeXBlLHBhcmVudElkLHBhcmVudEluaXRpYXRlSWQscHJldlRhc2tFeGVJZCxmb3JtVHlwZSx3aWRnZXRUeXBlLHJlc291cmNlUmVjb3JkSWQsb3ZlcnJpZGVUeXBlLGxhbmcpIHtcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9nZXQtcmVzb3VyY2UtZm9ybS1leHRlbmRlZC13aXRoLWRhdGEvJysgcmVzb3VyY2VJZCArJy8nK3Rhc2tJbml0aWF0ZUlkKycvJyt0YXNrRXhlY3V0ZUlkKycvJytwb3B1bGF0ZVR5cGUrJy8nK3BhcmVudElkKycvJytwYXJlbnRJbml0aWF0ZUlkKycvJytwcmV2VGFza0V4ZUlkKycvJytmb3JtVHlwZSsnLycrd2lkZ2V0VHlwZSsnLycrcmVzb3VyY2VSZWNvcmRJZCsnLycrb3ZlcnJpZGVUeXBlKycvJytsYW5nKycvJztcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYgKHJlc291cmNlSWQgPT1udWxsIHx8IHJlc291cmNlSWQgPT11bmRlZmluZWQpXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOlwiSW52YWxpZCBBUEkgcGFyYW1zIGluIGZ1bmN0aW9uIFJlc291cmNlRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VGb3JtRXh0ZW5kZWRXaXRoRGF0YSAtLT4gcmVzb3VyY2VJZCBpcyBudWxsIG9yIHVuZGVmaW5lZFwiLHN0YXR1czo0MDB9KTsgXHJcbiAgICAgICAgICAgIHZhciBnb3RvU2VydmVyPWZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgXHJcbiAgICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIG5vdCBzdWNjZXNzZnVsLCBiaW5kIGVycm9ycyB0byBlcnJvciB2YXJpYWJsZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1zZz1cIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEubXNnIT11bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IHJlc3BvbnNlLmRhdGEubXNnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSByZXNwb25zZS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzonR2V0IHJlc291cmNlIGZvcm0gZXh0ZW5kZWQgd2l0aCBkYXRhIGZhaWxlZCAhIC0tPiBnZXRSZXNvdXJjZUZvcm1FeHRlbmRlZFdpdGhEYXRhIC0tPiAnK21zZywgc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAvLyB9KTsgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgfTtcclxuICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBSRVNPVVJDRSBGT1JNIEVYVEVOREVEIE1VTFRJUExFXHJcblx0Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgZ2V0UmVzb3VyY2VGb3JtRXh0ZW5kZWRNdWx0aXBsZSAgKHJlc291cmNlSWQsdGFza0RlZklkLGZvcm1UeXBlLHBhcmVudElkLG92ZXJyaWRlVHlwZXMsbGFuZykge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJQT1NUXCI7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9nZXQtcmVzb3VyY2UtZm9ybS1leHRlbmRlZC1tdWx0aXBsZS8nKyByZXNvdXJjZUlkICsnLycrdGFza0RlZklkKycvJytmb3JtVHlwZSsnLycrcGFyZW50SWQrJy8nK2xhbmcrJy8nO1xyXG4gICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxvdmVycmlkZVR5cGVzKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J0dldCByZXNvdXJjZSBmb3JtIGV4dGVuZGVkIG11bHRpcGxlIGZhaWxlZCAhIC0tPiBnZXRSZXNvdXJjZUZvcm1FeHRlbmRlZE11bHRpcGxlJyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIC8vIH0pOyAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICB9OyAgICAgICAgICAgXHJcbiAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBHRVQgUkVTT1VSQ0UgRk9STSBFWFRFTkRFRCBNVUxUSVBMRVxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gIGdldFJlc291cmNlRm9ybUV4dGVuZGVkV2l0aERhdGFNdWx0aXBsZSAocmVzb3VyY2VJZCx0YXNrSW5pdGlhdGVJZCx0YXNrRXhlY3V0ZUlkLHBvcHVsYXRlVHlwZSxwYXJlbnRJZCxwYXJlbnRJbml0aWF0ZUlkLHByZXZUYXNrRXhlSWQsZm9ybVR5cGUsd2lkZ2V0VHlwZSxyZXNvdXJjZVJlY29yZElkcyxvdmVycmlkZVR5cGUsZmlsdGVyLHBhcmVudERhdGFzZXREZWZJZCxybWRJZCxsYW5nKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIlBPU1RcIjtcclxuICAgICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9nZXQtcmVzb3VyY2UtZm9ybS1leHRlbmRlZC13aXRoLWRhdGEtbXVsdGlwbGUvJysgcmVzb3VyY2VJZCArJy8nK3Rhc2tJbml0aWF0ZUlkKycvJyt0YXNrRXhlY3V0ZUlkKycvJytwb3B1bGF0ZVR5cGUrJy8nK3BhcmVudElkKycvJytwYXJlbnRJbml0aWF0ZUlkKycvJytwcmV2VGFza0V4ZUlkKycvJytmb3JtVHlwZSsnLycrd2lkZ2V0VHlwZSsnLycrcmVzb3VyY2VSZWNvcmRJZHMrJy8nK292ZXJyaWRlVHlwZSsnLycrcGFyZW50RGF0YXNldERlZklkKycvJytybWRJZCsnLycrbGFuZysnLyc7XHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7ICAgXHJcbiAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsLGZpbHRlcikudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgLy8gcmVzcG9uc2UuanNvbigpLnRoZW4oZGF0YT0+e1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J0dldCByZXNvdXJjZSBmb3JtIGV4dGVuZGVkIG11bHRpcGxlIHdpdGggZGF0YSBmYWlsZWQgISAtLT4gZ2V0UmVzb3VyY2VGb3JtRXh0ZW5kZWRXaXRoRGF0YU11bHRpcGxlJyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIC8vIH0pOyAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07ICAgICAgICAgICBcclxuICBcclxuICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBSRVNPVVJDRSBGT1JNIEVYVEVOREVEIE1VTFRJUExFXHJcblx0Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiBnZXRSZXNvdXJjZUZvcm1BZGRNdWx0aXBsZSAocmVzb3VyY2VJZCx0YXNrSW5pdGlhdGVJZCx0YXNrRXhlY3V0ZUlkLHBhcmVudElkLHBhcmVudEluaXRpYXRlSWQscHJldlRhc2tFeGVJZCxmb3JtVHlwZSx3aWRnZXRUeXBlLG92ZXJyaWRlVHlwZSxmaWx0ZXIsbGFuZykge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJQT1NUXCI7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9nZXQtcmVzb3VyY2UtZm9ybS1hZGQtbXVsdGlwbGUvJysgcmVzb3VyY2VJZCArJy8nK3Rhc2tJbml0aWF0ZUlkKycvJyt0YXNrRXhlY3V0ZUlkKycvJytwYXJlbnRJZCsnLycrcGFyZW50SW5pdGlhdGVJZCsnLycrcHJldlRhc2tFeGVJZCsnLycrZm9ybVR5cGUrJy8nK3dpZGdldFR5cGUrJy8nK292ZXJyaWRlVHlwZSsnLycrbGFuZysnLyc7XHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwsZmlsdGVyKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAvLyByZXNwb25zZS5qc29uKCkudGhlbihkYXRhPT57XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzonR2V0IHJlc291cmNlIGZvcm0gYWRkIG11bHRpcGxlIGZhaWxlZCAhIC0tPiBnZXRSZXNvdXJjZUZvcm1BZGRNdWx0aXBsZScsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vICB9KTsgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07ICAgICAgICAgICBcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgU0FWRSBEQVRBU0VUIFJFQ09SRFMgTVVMVElQTEVcclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBzYXZlRGF0YXNldFJlY29yZHNNdWx0aXBsZSAgKHJlc291cmNlSWQsZm9ybSkge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJQT1NUXCI7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9zYXZlLWRhdGFzZXQtcmVjb3Jkcy1tdWx0aXBsZS8nKyByZXNvdXJjZUlkICsnLyc7XHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7ICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxmb3JtKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAvLyByZXNwb25zZS5qc29uKCkudGhlbihkYXRhPT57XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHttc2c6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOidTYXZlIGRhdGFzZXQgcmVjb3JkIG11bHRpcGxlIGZhaWxlZCAhIC0tPiBzYXZlRGF0YXNldFJlY29yZHNNdWx0aXBsZScrIHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgLy8gICB9KTsgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgXHJcbiAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07ICAgICAgICAgICBcclxuICBcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgR0VUIFJFU09VUkNFIERFRklOSVRJT04gTElTVFxyXG4gICAgLy9cclxuICAgIC8vICAgICAgICAgICBjYWxsZWQgYnk6IHJlc291cmNlRm9ybUN0cmwgLCBcclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICAgICAgXHJcbiBnZXRSZXNvdXJjZURlZiAobGFuZyl7XHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgICAgIFxyXG4gICAgICAgbGV0IHVybCA9ICcuLi9hcGkvZ2V0LXJlc291cmNlLWRlZi1ieWxhbmcvJytsYW5nKycvJztcclxuICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3RoaXMuY2FjaGUuZ2V0UmVzb3VyY2VEZWZbbGFuZ10gPSByZXNwb25zZS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgbm90IHN1Y2Nlc3NmdWwsIGJpbmQgZXJyb3JzIHRvIGVycm9yIHZhcmlhYmxlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzonR2V0IHJlc291cmNlIGRlZiBmYWlsZWQgISAtLT4gZ2V0UmVzb3VyY2VEZWYnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vfSk7ICAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIFxyXG4gICAgICAgIC8vfSAgICAgXHJcbiAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICB9XHJcbiAgICBcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgR0VUIFJFU09VUkNFIERFRklOSVRJT04gTElTVFxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgICAgICBcclxuIGdldFJlc291cmNlRGVmRmlsdGVyZWQgKG5ld19wYWdlLHBhZ2Vfc2l6ZSxmaWx0ZXIsbGFuZyl7XHJcbiAgICAgIFxyXG4gICAgICB2YXIgaHR0cF9tZXRob2Q9XCJQT1NUXCI7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2dldC1yZXNvdXJjZS1kZWYtYnlsYW5nLWZpbHRlcmVkLycrbGFuZysnLyc7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmIChuZXdfcGFnZSE9XCJcIiAmJiBuZXdfcGFnZSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB1cmwgPSB1cmwrJz9wYWdlPScrbmV3X3BhZ2U7XHJcbiAgICAgICAgICAgIGlmIChwYWdlX3NpemUhPVwiXCIgJiYgcGFnZV9zaXplIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgdXJsID0gdXJsKycmcGFnZV9zaXplPScrcGFnZV9zaXplO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgICBcclxuICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwsZmlsdGVyKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J0dldCByZXNvdXJjZSBkZWYgZmFpbGVkICEgLS0+IGdldFJlc291cmNlRGVmRmlsdGVyZWQnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgfVxyXG4gICAgICAgICAgICAgXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBSRVNPVVJDRSBERUZJTklUSU9OIExJU1QgQlkgVFlQRVxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgICAgICBcclxuIGdldFJlc291cmNlRGVmQnlUeXBlIChsYW5nLHR5cGUpe1xyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgICBcclxuICAgICAgdmFyIGdvdG9TZXJ2ZXI9ZmFsc2U7XHJcbiAgICAgIGlmICh0aGlzLmNhY2hlWydnZXRSZXNvdXJjZURlZkJ5VHlwZSddICE9PXVuZGVmaW5lZClcclxuICAgICAge1xyXG4gICAgICAgICBpZih0aGlzLmNhY2hlLmdldFJlc291cmNlRGVmQnlUeXBlW2xhbmcrdHlwZV0gIT09dW5kZWZpbmVkKVxyXG4gICAgICAgICB7XHJcbiAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6ICB0aGlzLmNhY2hlLmdldFJlc291cmNlRGVmQnlUeXBlW2xhbmcrdHlwZV0sc3RhdHVzOjIwMH0pO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIGVsc2VcclxuICAgICAgICAge1xyXG4gICAgICAgICAgIHRoaXMuY2FjaGVbJ2dldFJlc291cmNlRGVmQnlUeXBlJ11bbGFuZyt0eXBlXSA9IHt9O1xyXG4gICAgICAgICAgIGdvdG9TZXJ2ZXI9dHJ1ZTsgXHJcbiAgICAgICAgIH1cclxuICAgICAgfSBlbHNlXHJcbiAgICAgIHtcclxuICAgICAgICAgdGhpcy5jYWNoZVsnZ2V0UmVzb3VyY2VEZWZCeVR5cGUnXSA9IHt9O1xyXG4gICAgICAgICB0aGlzLmNhY2hlWydnZXRSZXNvdXJjZURlZkJ5VHlwZSddW2xhbmcrdHlwZV0gPSB7fTtcclxuICAgICAgICAgZ290b1NlcnZlcj10cnVlO1xyXG4gICAgICB9ICBcclxuICAgICAgaWYgKGdvdG9TZXJ2ZXIpXHJcbiAgICAgIHsgXHJcbiAgICAgICAgIHZhciBpbnN0YW5jZSA9IHRoaXM7XHJcbiAgICAgICAgIGxldCB1cmwgPScuLi9hcGkvZ2V0LXJlc291cmNlLWRlZi1ieWxhbmctYnl0eXBlLycrbGFuZysnLycrdHlwZSsnLyc7XHJcbiAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY2FjaGVbJ2dldFJlc291cmNlRGVmQnlUeXBlJ11bbGFuZyt0eXBlXSA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzonR2V0IHJlc291cmNlIGRlZiBmYWlsZWQgISAtLT4gZ2V0UmVzb3VyY2VEZWZCeVR5cGUnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICBcclxuICAgICAgfSAgICAgICAgICBcclxuICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07XHJcbiAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBSRVNPVVJDRSBERUZJTklUSU9OIEJZIFRZUEUgUEFHSU5BVEVEXHJcblx0Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgICAgIFxyXG4gZ2V0UmVzb3VyY2VEZWZCeUxhbmdCeVR5cGVQYWdpbmF0ZWQgKGxhbmcsdHlwZSx1cmxfbmV4dCx1cmxfcHJldixuZXdfcGFnZSxwYWdlX3NpemUpe1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgdXJsID0gJy4uL2FwaS9nZXQtcmVzb3VyY2UtZGVmLWJ5bGFuZy1ieXR5cGUtcGFnaW5hdGVkLycrbGFuZysnLycrdHlwZSsnLyc7XHJcbiAgICAgICAgICBpZiAobmV3X3BhZ2UhPVwiXCIgJiYgbmV3X3BhZ2UhPXVuZGVmaW5lZClcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdXJsID0gdXJsKyc/cGFnZT0nK25ld19wYWdlO1xyXG4gICAgICAgICAgICBpZiAocGFnZV9zaXplIT1cIlwiICYmIHBhZ2Vfc2l6ZSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHVybCA9IHVybCsnJnBhZ2Vfc2l6ZT0nK3BhZ2Vfc2l6ZTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgICAgXHJcbiAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J0dldCByZXNvdXJjZSBkZWYgYnkgbGFuZyBmYWlsZWQgISAtLT4gZ2V0UmVzb3VyY2VEZWZCeUxhbmdCeVR5cGVQYWdpbmF0ZWQnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vfSk7ICAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgIFxyXG4gICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH1cclxuICAgIFxyXG4gLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBSRUxBVEVEIERBVEFTRVQgRk9SIFdpZGdldFxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIGdldFJlbGF0ZWREYXRhc2V0Rm9yV2lkZ2V0KGRhdGFzZXRJZCxsYW5nKXtcclxuIFxyXG4gIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgICAgICBsZXQgdXJsID0gJy4uL2FwaS9nZXQtcmVsYXRlZC1kYXRhc2V0LWZvcndpZGdldC8nK2RhdGFzZXRJZCsnLycrbGFuZysnLyc7XHJcbiAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J1JlbGF0ZWQgRGF0YXNldCBkZWZpbml0aW9uIGRvd25sb2FkIGVycm9yIC0tPiBnZXRSZWxhdGVkRGF0YXNldEZvcldpZGdldCcsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAvLyB9KTsgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIFxyXG4gICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuIFxyXG4gfVxyXG4gIFxyXG4gIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBHRVQgUkVTT1VSQ0UgREVGSU5JVElPTiBMSVNUIEJZIFRZUEVcclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuIGdldFJlc291cmNlRGVmQnlUeXBlRm9yV2lkZ2V0IChsYW5nLHR5cGUpe1xyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgICAgbGV0IHVybCA9ICcuLi9hcGkvZ2V0LXJlc291cmNlLWRlZi1ieXR5cGUtZm9yd2lkZ2V0LycrbGFuZysnLycrdHlwZSsnLyc7XHJcbiAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzonR2V0IHJlc291cmNlIGRlZiBieSB0eXBlIGVycm9yIC0tPiBnZXRSZXNvdXJjZURlZkJ5VHlwZUZvcldpZGdldCcsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy99KTsgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICB9IFxyXG4gICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgR0VUIFJFU09VUkNFIERFRklOSVRJT04gTElTVCBCWSBUWVBFIEZPUiBEUk9QRE9XTlxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgICAgICBcclxuIGdldFJlc291cmNlRGVmTGlzdEJ5VHlwZSAobGFuZyx0eXBlKVxyXG4geyBcclxuICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyAgXHJcbiAgICAgIGxldCB1cmwgPSAnLi4vYXBpL2dldC1yZXNvdXJjZS1kZWYtbGlzdC1ieWxhbmctYnl0eXBlLycrbGFuZysnLycrdHlwZSsnLyc7XHJcbiAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCwgZmFsc2UpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J0dldCByZXNvdXJjZSBkZWYgbGlzdCBieSB0eXBlIGVycm9yIC0tPiBnZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgXHJcbiAgICAgICBcclxuICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH1cclxuXHJcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBHRVQgUkVTT1VSQ0UgREVGSU5JVElPTiBMSVNUIEJZIFRZUEUgV0lUSCBGSUxURVIgRk9SIERST1BET1dOXHJcblx0Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgICAgIFxyXG4gZ2V0UmVzb3VyY2VEZWZMaXN0QnlUeXBlRmlsdGVyIChsYW5nLHR5cGUsc2VhcmNoLHNlbGVjdGVkUmVzb3VyY2Upe1xyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgICAgdmFyIGdvdG9TZXJ2ZXI9ZmFsc2U7XHJcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRSZXNvdXJjZT09dW5kZWZpbmVkIHx8IHNlbGVjdGVkUmVzb3VyY2U9PW51bGwpXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiAnUmVzb3VyY2UgaXMgbm90IGRlZmluZWQhJyxzdGF0dXM6NDAwfSk7ICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICBpZiAodGhpcy5jYWNoZVsnZ2V0UmVzb3VyY2VEZWZMaXN0QnlUeXBlRmlsdGVyJ10gIT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIGlmKHRoaXMuY2FjaGUuZ2V0UmVzb3VyY2VEZWZMaXN0QnlUeXBlRmlsdGVyW2xhbmcrJ18nK3R5cGUrJ18nK3NlbGVjdGVkUmVzb3VyY2VdICE9PXVuZGVmaW5lZCAmJiAoc2VhcmNoPT09XCJcIiB8fCBzZWFyY2g9PT11bmRlZmluZWQpKVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6ICB0aGlzLmNhY2hlLmdldFJlc291cmNlRGVmTGlzdEJ5VHlwZUZpbHRlcltsYW5nKydfJyt0eXBlKydfJytzZWxlY3RlZFJlc291cmNlXSxzdGF0dXM6MjAwfSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWNoZVsnZ2V0UmVzb3VyY2VEZWZMaXN0QnlUeXBlRmlsdGVyJ11bbGFuZysnXycrdHlwZSsnXycrc2VsZWN0ZWRSZXNvdXJjZV0gPSB7fTtcclxuICAgICAgICAgICAgICAgICAgICBnb3RvU2VydmVyPXRydWU7IFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIH0gZWxzZVxyXG4gICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVbJ2dldFJlc291cmNlRGVmTGlzdEJ5VHlwZUZpbHRlciddID0ge307XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVbJ2dldFJlc291cmNlRGVmTGlzdEJ5VHlwZUZpbHRlciddW2xhbmcrJ18nK3R5cGUrJ18nK3NlbGVjdGVkUmVzb3VyY2VdID0ge307XHJcbiAgICAgICAgICAgICAgICAgIGdvdG9TZXJ2ZXI9dHJ1ZTtcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgaWYgKHNlYXJjaCE9PVwiXCIgJiYgc2VhcmNoIT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIGdvdG9TZXJ2ZXI9dHJ1ZTtcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGdvdG9TZXJ2ZXIpXHJcbiAgICAgICAgICB7Ki9cclxuICAgICAgICAgICAgIHZhciBpbnN0YW5jZSA9IHRoaXM7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgbGV0IHVybCA9ICcuLi9hcGkvZ2V0LXJlc291cmNlLWRlZi1saXN0LWJ5bGFuZy1ieXR5cGUtZmlsdGVyLycrbGFuZysnLycrdHlwZSsnLycrc2VsZWN0ZWRSZXNvdXJjZSsnLyc7XHJcbiAgICAgICAgICAgIGxldCBwb3N0X2RhdGEgPSB7J3NlYXJjaCc6c2VhcmNofTtcclxuICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxwb3N0X2RhdGEpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICAvL3Jlc3BvbnNlLmpzb24oKS50aGVuKGRhdGE9PntcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaW5zdGFuY2UuY2FjaGVbJ2dldFJlc291cmNlRGVmTGlzdEJ5VHlwZUZpbHRlciddW2xhbmcrJ18nK3R5cGUrJ18nK3NlbGVjdGVkUmVzb3VyY2VdID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOidHZXQgcmVzb3VyY2UgZGVmIGxpc3QgYnkgdHlwZSBlcnJvciAtLT4gZ2V0UmVzb3VyY2VEZWZMaXN0QnlUeXBlRmlsdGVyJyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIC8vIH0pOyAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH0gICAgXHJcbiAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgICAgICAgIFxyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAvLyAgICAgICAgICAgR0VUIFJFU09VUkNFIERFRklOSVRJT04gTElTVCBGT1IgRVhJU1RJTkcgUkVMQVRJT05TSElQU1xyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgICAgIFxyXG4gZ2V0RXhpc3RpbmdSZXNvdXJjZVJlbGF0aW9uc2hpcCAocmVzb3VyY2VJZCl7XHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgICBcclxuICAgICAgICAgIGlmIChyZXNvdXJjZUlkPT11bmRlZmluZWQgfHwgcmVzb3VyY2VJZD09bnVsbClcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdJbnZhbGlkIHJlc291cmNlIGlkIScsc3RhdHVzOjQwMH0pOyAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgIHZhciBpbnN0YW5jZSA9IHRoaXM7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgbGV0IHVybCA9ICcuLi9hcGkvZ2V0LWV4aXN0aW5nLXJlc291cmNlLXJlbGF0aW9uc2hpcHMvJytyZXNvdXJjZUlkKycvJztcclxuICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzonR2V0IGV4aXN0aW5nIHJlc291cmNlIHJlbGF0aW9uaGlwcyBlcnJvciAtLT4gZ2V0RXhpc3RpbmdSZXNvdXJjZVJlbGF0aW9uc2hpcCcsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH0gICAgXHJcbiAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgR0VUIFJFU09VUkNFIERFRklOSVRJT04gTElTVCBCWSBUWVBFIEFORCBVU0VSXHJcblx0Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgICAgIFxyXG4gZ2V0UmVzb3VyY2VEZWZMaXN0QnlMYW5nQnlUeXBlVXNlciAobGFuZyx0eXBlLHVzZXIpe1xyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgICBsZXQgdXJsID0gJy4uL2FwaS9nZXQtcmVzb3VyY2UtZGVmLWxpc3QtYnlsYW5nLWJ5dHlwZS11c2VyLycrbGFuZysnLycrdHlwZSsnLycrdXNlcisnLyc7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J0dldCByZXNvdXJjZSBkZWYgbGlzdCBieSB0eXBlIGJ5IHVzZXIgZXJyb3IgLS0+IGdldFJlc291cmNlRGVmTGlzdEJ5TGFuZ0J5VHlwZVVzZXInLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgLy8gfSk7ICAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH0gICAgXHJcbiAgIFxyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG5cdC8vICAgICAgICAgICBCbG9ja2NoYWluIEFQSSBjYWxsc1xyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIGdldEJsb2NrY2hhaW5EYXRhc2V0UmVjb3Jkc1xyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgICAgICBcclxuIGdldEJsb2NrY2hhaW5EYXRhc2V0UmVjb3JkcyAoZGF0YXNldF9pZCxkYXRhc2V0X25hbWUsY29udHJhY3QsbGltaXQscF9rZXksbGFuZyl7XHJcbiAgICAgIFxyXG4gICAgICAgIGxldCB1cmw9Jy4uL2FwaS9nZXQtYmxvY2tjaGFpbi1kYXRhc2V0LXJlY29yZHMvJztcclxuICAgICAgIFxyXG4gICAgICAgIGxldCBwb3N0X2RhdGEgPSB7XCJyZXNvdXJjZV9pZFwiOmRhdGFzZXRfaWQsXCJkYXRhc2V0XCI6ZGF0YXNldF9uYW1lLFwiY29udHJhY3RcIjpjb250cmFjdCxcImxpbWl0XCI6bGltaXQsXCJwX2tleVwiOnBfa2V5LFwibGFuZ3VhZ2VcIjpsYW5nfSAgXHJcbiAgICAgICAgbGV0IGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwscG9zdF9kYXRhKS50aGVuKHJlc3BvbnNlID0+e1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7ICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzonRXJyb3IgLS0+IGdldEJsb2NrY2hhaW5EYXRhc2V0UmVjb3Jkcycsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiBcclxuICAgICAgICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH1cclxuICBcclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBnZXRCbG9ja2NoYWluRGF0YXNldFJlY29yZHNcclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICAgICAgXHJcbiBleGVjdXRlQmxvY2tjaGFpbkZ1bmN0aW9uIChjb250cmFjdCxmdW5jdGlvbl9uYW1lLHBhcmFtcyl7XHJcbiAgICAgIFxyXG4gICAgICAgIGxldCB1cmw9Jy4uL2FwaS9leGVjdXRlLWJsb2NrY2hhaW4tZnVuY3Rpb24vJztcclxuICAgICAgIFxyXG4gICAgICAgIGxldCBwb3N0X2RhdGEgPSB7XCJjb250cmFjdFwiOmNvbnRyYWN0LFwiZnVuY3Rpb25cIjpmdW5jdGlvbl9uYW1lLFwicGFyYW1zXCI6cGFyYW1zfSAgXHJcbiAgICAgICAgbGV0IGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwscG9zdF9kYXRhKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgLy9yZXNwb25zZS5qc29uKCkudGhlbihkYXRhPT57XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzonRXJyb3IgLS0+IGV4ZWN1dGVCbG9ja2NoYWluRnVuY3Rpb24nLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyAgfSk7ICAgIFxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgXHJcbiAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBnZXRCbG9ja2NoYWluRGF0YXNldFJlY29yZHNcclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICAgICAgXHJcbiBnZXRCbG9ja2NoYWluVHJhbnNhY3Rpb24gKHRyYW5zYWN0aW9uX2lkLGJsb2NrX251bV9oaW50KXtcclxuICAgICAgXHJcbiAgICAgICAgbGV0IHVybD0nLi4vYXBpL2dldC1ibG9ja2NoYWluLXRyYW5zYWN0aW9uLyc7XHJcbiAgICAgICBcclxuICAgICAgICBsZXQgcG9zdF9kYXRhID0ge1widHJhbnNhY3Rpb25faWRcIjp0cmFuc2FjdGlvbl9pZCxcImJsb2NrX251bV9oaW50XCI6YmxvY2tfbnVtX2hpbnR9ICBcclxuICAgICAgICBsZXQgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7ICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxwb3N0X2RhdGEpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICAvL3Jlc3BvbnNlLmpzb24oKS50aGVuKGRhdGE9PntcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J0Vycm9yIC0tPiBnZXRCbG9ja2NoYWluVHJhbnNhY3Rpb24nLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vfSk7ICAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH0gICAgXHJcbiAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICByZWFkQmxvY2tjaGFpbkNvbnRyYWN0UHVibGljVmFyc1xyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgICAgICBcclxuIHJlYWRCbG9ja2NoYWluVmFycyAoY29udHJhY3QsYWJpKXtcclxuICAgICAgXHJcbiAgICAgICAgbGV0IHVybD0nLi4vYXBpL2dldC1jb250cmFjdC1wdWJsaWMtdmFycy8nO1xyXG4gICAgICAgXHJcbiAgICAgICAgbGV0IHBvc3RfZGF0YSA9IHtcImNvbnRyYWN0XCI6Y29udHJhY3QsXCJhYmlcIjphYml9ICBcclxuICAgICAgICBsZXQgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7ICAgXHJcbiAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxwb3N0X2RhdGEpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgIC8vIHJlc3BvbnNlLmpzb24oKS50aGVuKGRhdGE9PntcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2UgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzonRXJyb3IgLS0+IHJlYWRCbG9ja2NoYWluVmFycycsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vICB9KTsgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH1cclxuICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBSRVNPVVJDRSBERUZJTklUSU9OIExJU1QgQlkgVFlQRSBBTkQgVVNFUlxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgICAgICBcclxuIGdldFJlc291cmNlRGVmQnlMYW5nQnlUeXBlVXNlclBhZ2luYXRlZCAobGFuZyx0eXBlLHVybF9uZXh0LHVybF9wcmV2LG5ld19wYWdlLHBhZ2Vfc2l6ZSl7XHJcbiAgICAgIFxyXG4gICAgICB2YXIgdXJsPScuLi9hcGkvZ2V0LXJlc291cmNlLWRlZi1ieWxhbmctYnl0eXBlLXVzZXIvJytsYW5nKycvJyt0eXBlKycvJztcclxuICAgICAgIGlmIChuZXdfcGFnZSE9XCJcIiAmJiBuZXdfcGFnZSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB1cmwgPSB1cmwrJz9wYWdlPScrbmV3X3BhZ2U7XHJcbiAgICAgICAgICAgIGlmIChwYWdlX3NpemUhPVwiXCIgJiYgcGFnZV9zaXplIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgdXJsID0gdXJsKycmcGFnZV9zaXplPScrcGFnZV9zaXplO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOidHZXQgcmVzb3VyY2UgZGVmIGZhaWxlZCAtLT4gZ2V0UmVzb3VyY2VEZWZCeUxhbmdCeVR5cGVVc2VyUGFnaW5hdGVkJyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8gIH0pOyAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICBcclxuICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH0gICAgXHJcbiAgIFxyXG4gIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBTWU5DIERBVEFCQVNFIC0gQ1JFQVRFIE9SIEFMVEVSIFRBQkxFXHJcblx0Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgc3luY2RiICAocmVzb3VyY2VJZCx2ZXJzaW9uKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIlBPU1RcIjtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL3N5bmNkYi1yZXNvdXJjZS1mb3JtLycrcmVzb3VyY2VJZCsnLycrdmVyc2lvbisnLyc7XHJcbiAgICAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHttc2c6ICdEYXRhYmFzZSBzeW5jaHJvbmlzYXRpb24gc3VjY2Vzc2Z1bCAhJyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7bXNnOiAnRGF0YWJhc2Ugc3luY2hyb25pc2F0aW9uIG5vdCBuZWVkZWQgIScsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ0RhdGFiYXNlIHN5bmNocm9uaXNhdGlvbiBmYWlsZWQhICcsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBTQVZFIFJFU09VUkNFIEZPUk0gXHJcblx0Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgICAgIFxyXG4gICAgICAgIHNhdmVSZXNvdXJjZUZvcm0gICh3aWRnZXRzLHJlc291cmNlSWQsZm9ybVR5cGUsZGVzYykge1xyXG4gICAgXHJcbiAgICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIlBPU1RcIjtcclxuICAgICAgICAgICAgdmFyIGxhbmc9dGhpcy4kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgdmFyIHVybD0nLi4vYXBpL3NhdmUtcmVzb3VyY2UtZm9ybS8nK2Zvcm1UeXBlKycvJytyZXNvdXJjZUlkKycvJytsYW5nKycvJztcclxuICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgICAgICAgICBpZiAoZGVzYz09dW5kZWZpbmVkKSBkZXNjPScnXHJcbiAgICAgICAgICAgIC8vdmFyIGluc3RhbmNlPXRoaXM7XHJcbiAgICAgICAgICAgIGxldCBwb3N0X2RhdGEgPSB7Zm9ybTp3aWRnZXRzLGRlc2NyaXB0aW9uOmRlc2N9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsLHBvc3RfZGF0YSkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgIC8vcmVzcG9uc2UuanNvbigpLnRoZW4oZGF0YT0+e1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5zdGFuY2UuY2FjaGUuZ2V0UmVzb3VyY2VGb3JtW3Jlc291cmNlSWQgKydfJytmb3JtVHlwZSsnXycrbGFuZ10ud2lkZ2V0cz1kYXRhLmZvcm1EYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLG1zZzpyZXNwb25zZS5kYXRhLm1zZyx2ZXJzaW9uOnJlc3BvbnNlLmRhdGEudmVyc2lvbix1cGRhdGVGb3JtOnJlc3BvbnNlLmRhdGEudXBkYXRlRm9ybSxtc2dUeXBlOnJlc3BvbnNlLmRhdGEubXNnVHlwZSxuZXdfaXRlbXM6cmVzcG9uc2UuZGF0YS5uZXdfaXRlbXMsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdTYXZlIGRhdGFzZXQgZm9ybSBmYWlsZWQgKGZ1bmN0aW9uIHNhdmVSZXNvdXJjZUZvcm0pIC0tPiAnKyByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgLy8gfSk7ICAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcbiAgIFxyXG4vKk1JR09SICAgICBcclxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vICAgICAgICAgICBHRVQgRklMRVMgREFUQVxyXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuXmFwaS8gXmZpbGVzLyg/UDxpZD4uKykvJCBbbmFtZT0nRmlsZXMtbGlzdCddXHJcbiovXHJcblx0Z2V0RmlsZXNEYXRhICAod2lkZ2V0SWQsZmlsZURlZklkLGRhdGFzZXREZWZJZCxkYXRhc2V0UmVjb3JkSWQpIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiR0VUXCI7XHJcbiAgICAgICAgICBcclxuXHRcdCAgdmFyIHVybD0nLi4vYXBpL2ZpbGVzLycrd2lkZ2V0SWQrJy8nK2ZpbGVEZWZJZCsnLycrZGF0YXNldERlZklkKycvJytkYXRhc2V0UmVjb3JkSWQrJy8nO1xyXG5cdFx0ICBcclxuICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ0dldCBmaWxlcyBkYXRhIGZhaWxlZCAhIC0tPiBnZXRGaWxlc0RhdGEnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyAgfSk7ICAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcblx0XHRcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgRE9XTkxPQUQgRklMRVxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gIGRvd25sb2FkRmlsZSAgKHJlc291cmNlSWQsZmlsZUlkKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIkdFVFwiO1xyXG4gICAgICAgICAgLy9kZWJ1Z2dlciAvL2Rvd25sb2FkRmlsZVxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2Rvd25sb2FkLWZpbGUvJytyZXNvdXJjZUlkKycvJytmaWxlSWQrJy8nO1xyXG4gICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXRfZmlsZSh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ0ZpbGUgZG93bmxvYWQgZmFpbGVkICEgLS0+IGRvd25sb2FkRmlsZScsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07XHRcdCAgICAgICAgXHJcbiAgXHJcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vICAgICAgICAgICBJTVBPUlQgIFJFU09VUkNFXHJcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgIFxyXG4gIGltcG9ydFJlc291cmNlICAoZmlsZUlkLCByZXNvdXJjZUlkLCBtYXBwaW5nc0lkKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIkdFVFwiO1xyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2ltcG9ydC1yZXNvdXJjZS8nK2ZpbGVJZCsnLycrcmVzb3VyY2VJZCsnLycrbWFwcGluZ3NJZCsnLyc7XHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdJbXBvcnQgcmVzb3VyY2UgZmFpbGVkICEgLS0+IGltcG9ydFJlc291cmNlJyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIC8vIH0pOyAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07XHRcdFxyXG4gICAgICAgIFxyXG5cclxuIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBHRVQgUkVTT1VSQ0UgREFUQVxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gIGdldFJlc291cmNlRGF0YSAgKHJlc291cmNlSWQsdGFza0lkLGZvcm1UeXBlLGxhbmcpIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiR0VUXCI7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9nZXQtcmVzb3VyY2UtZGF0YS8nK3Jlc291cmNlSWQrJy8nK3Rhc2tJZCsnLycrZm9ybVR5cGUrJy8nK2xhbmcrJy8nO1xyXG4gICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YS5kYXRhLGNvbHVtbnNEZWY6IGRhdGEuY29sdW1uc0RlZixzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ0dldCByZXNvdXJjZSBkYXRhIGZhaWxlZCAhIC0tPiBnZXRSZXNvdXJjZURhdGEnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgLy8gfSk7ICAgIFxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9O1xyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAvLyAgICAgICAgICAgR0VUIERBVEFTRVQgUkVDT1JEXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBnZXREYXRhc2V0RGF0YSAgKHJlc291cmNlSWQsZmlsdGVyLHJlc291cmNlVmVyc2lvbikge1xyXG5cclxuICAgICAgICBpZiAoIXJlc291cmNlVmVyc2lvbikgcmVzb3VyY2VWZXJzaW9uID0gMFxyXG5cclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9nZXQtZGF0YXNldC1kYXRhLycrcmVzb3VyY2VJZCsnLycrcmVzb3VyY2VWZXJzaW9uKycvJztcclxuICAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxmaWx0ZXIpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7ICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdHZXQgZGF0YXNldCByZWNvcmQgZmFpbGVkIChmbiBnZXREYXRhc2V0UmVjb3JkKSBzdGF0dXMgPSAnK3Jlc3BvbnNlLnN0YXR1cysnIHN0YXR1c1RleHQgPSAnK3Jlc3BvbnNlLnN0YXR1c1RleHQsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuXHRcdFxyXG5cdFx0XHJcblx0XHQgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAvLyAgICAgICAgICAgR0VUIERBVEFTRVQgUkVDT1JEUyBTSU1QTEVcclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gIGdldERhdGFzZXREYXRhU2ltcGxlICAocmVzb3VyY2VJZCxmaWx0ZXIpIHtcclxuXHJcbiAgICAgICAgICB2YXIgdXJsPScuLi9hcGkvZ2V0LWRhdGFzZXQtZGF0YS1zaW1wbGUvJytyZXNvdXJjZUlkKycvJztcclxuICAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxmaWx0ZXIpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7ICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdHZXQgZGF0YXNldCByZWNvcmQgZmFpbGVkIChmbiBnZXREYXRhc2V0UmVjb3JkKSBzdGF0dXMgPSAnK3Jlc3BvbnNlLnN0YXR1cysnIHN0YXR1c1RleHQgPSAnK3Jlc3BvbnNlLnN0YXR1c1RleHQsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgR0VUIFJFU09VUkNFIERBVEEgUEFHSU5BVEVEXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgZ2V0UmVzb3VyY2VEYXRhUGFnaW5hdGVkICAocmVzb3VyY2VJZCx1cmxfbmV4dCx1cmxfcHJldixuZXdfcGFnZSxwYWdlX3NpemUpIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiR0VUXCI7XHJcbiAgICAgICAgICAgIHZhciBsYW5nPXRoaXMuJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7ICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2dldC1yZXNvdXJjZS1kYXRhLXBhZ2luYXRlZC8nK3Jlc291cmNlSWQrJy8nK2xhbmcrJy8nO1xyXG5cclxuICAgICAgICAgIGlmIChuZXdfcGFnZSE9XCJcIiAmJiBuZXdfcGFnZSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB1cmwgPSB1cmwrJz9wYWdlPScrbmV3X3BhZ2U7XHJcbiAgICAgICAgICAgIGlmIChwYWdlX3NpemUhPVwiXCIgJiYgcGFnZV9zaXplIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgdXJsID0gdXJsKycmcGFnZV9zaXplPScrcGFnZV9zaXplO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICBcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ0dldCByZXNvdXJjZSBkYXRhIGZhaWxlZCAhIC0tPiBnZXRSZXNvdXJjZURhdGFQYWdpbmF0ZWQnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBSRVNPVVJDRSBEQVRBIFBBR0lOQVRFRCBGSUxURVJcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBnZXRSZXNvdXJjZURhdGFQYWdpbmF0ZWRGaWx0ZXIgIChyZXNvdXJjZUlkLHVybF9uZXh0LHVybF9wcmV2LG5ld19wYWdlLHBhZ2Vfc2l6ZSxsYW5nLGZpbHRlcixmb3JtX2xheW91dCxjb2x1bW5zX2Zvcl9xdWVyeSkge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJQT1NUXCI7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgdXJsPScuLi9hcGkvZ2V0LXJlc291cmNlLWRhdGEtcGFnaW5hdGVkLWZpbHRlci8nK3Jlc291cmNlSWQrJy8nK2xhbmcrJy8nO1xyXG5cclxuICAgICAgICAgIGlmIChuZXdfcGFnZSE9XCJcIiAmJiBuZXdfcGFnZSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB1cmwgPSB1cmwrJz9wYWdlPScrbmV3X3BhZ2U7XHJcbiAgICAgICAgICAgIGlmIChwYWdlX3NpemUhPVwiXCIgJiYgcGFnZV9zaXplIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgdXJsID0gdXJsKycmcGFnZV9zaXplPScrcGFnZV9zaXplO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICBcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICBsZXQgcG9zdF9kYXRhID0geydmaWx0ZXInOmZpbHRlciwnZm9ybSc6Zm9ybV9sYXlvdXQsJ2NvbHVtbnMnOmNvbHVtbnNfZm9yX3F1ZXJ5fTtcclxuICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsLHBvc3RfZGF0YSkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7IC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdHZXQgcmVzb3VyY2UgZGF0YSBmaWx0ZXIgZmFpbGVkICEgLS0+IGdldFJlc291cmNlRGF0YVBhZ2luYXRlZEZpbHRlcicsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICBcclxuICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBSRVNPVVJDRSBEQVRBIFBBR0lOQVRFRCBGSUxURVJcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBnZXRSZXNvdXJjZURhdGFQYWdpbmF0ZWRBdXRvICAocmVzb3VyY2VJZCx1cmxfbmV4dCx1cmxfcHJldixuZXdfcGFnZSxwYWdlX3NpemUsbGFuZyxwcmVzZW50YXRpb25JZCx0YXNrSW5zdGFuY2VJZCxmb3JtVHlwZSkge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9nZXQtcmVzb3VyY2UtZGF0YS1wYWdpbmF0ZWQtYXV0by8nK3Jlc291cmNlSWQrJy8nK3ByZXNlbnRhdGlvbklkKycvJyt0YXNrSW5zdGFuY2VJZCsnLycrZm9ybVR5cGUrJy8nK2xhbmcrJy8nO1xyXG5cclxuICAgICAgICAgIGlmIChuZXdfcGFnZSE9XCJcIiAmJiBuZXdfcGFnZSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB1cmwgPSB1cmwrJz9wYWdlPScrbmV3X3BhZ2U7XHJcbiAgICAgICAgICAgIGlmIChwYWdlX3NpemUhPVwiXCIgJiYgcGFnZV9zaXplIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgdXJsID0gdXJsKycmcGFnZV9zaXplPScrcGFnZV9zaXplO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICBcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiAnR2V0IHJlc291cmNlIGRhdGEgYXV0byBmYWlsZWQgISAtLT4gZ2V0UmVzb3VyY2VEYXRhUGFnaW5hdGVkQXV0bycsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy99KTsgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFxyXG4gLy8gICAgICAgICAgIEdFVCBSRVNPVVJDRSBDT0xVTU5TIFxyXG4gIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgICBcclxuICBnZXRSZXNvdXJjZUNvbHVtbnMgIChyZXNvdXJjZUlkLHJlc291cmNlVHlwZSxsYW5nLHZlcnNpb24pIHsgXHJcbiAgICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjsgXHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7ICBcclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2dldC1yZXNvdXJjZS1jb2x1bW5zLycrcmVzb3VyY2VJZCsnLycrcmVzb3VyY2VUeXBlKycvJytsYW5nKycvJyt2ZXJzaW9uKycvJzsgXHJcbiBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PnsgXHJcbiAgICAgICAgICAgICAgICAgXHJcbiBcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ0dldCByZXNvdXJjZSBjb2x1bW5zIGZhaWxlZCAoZ2V0UmVzb3VyY2VDb2x1bW5zKSwnICsgcmVzcG9uc2UubXNnICAsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgLy8gIH0pOyAgICAgXHJcbiAgICAgICAgICAgIH0pOyBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgIFxyXG4gICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlOyBcclxuXHJcbiAgICB9O1xyXG4gIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBHRVQgUkVTT1VSQ0UgREFUQVxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gIGdldFJlc291cmNlRGF0YU1vZGVsICAocmVzb3VyY2VJZCx0YXNrSWQsbW9kZWxJZCxmb3JtVHlwZSxsYW5nKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIkdFVFwiO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgdXJsPScuLi9hcGkvZ2V0LXJlc291cmNlLWRhdGEtbW9kZWwvJytyZXNvdXJjZUlkKycvJyt0YXNrSWQrJy8nK21vZGVsSWQrJy8nK2Zvcm1UeXBlKycvJytsYW5nKycvJztcclxuICAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEuZGF0YSxjb2x1bW5zRGVmOiByZXNwb25zZS5kYXRhLmNvbHVtbnNEZWYgLCBzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ0dldCByZXNvdXJjZSBkYXRhIG1vZGVsIGZhaWxlZCAhIC0tPiBnZXRSZXNvdXJjZURhdGFNb2RlbCcsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAvLyB9KTsgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgR0VUIFJFU09VUkNFIERBVEEgRklMVEVSRURcclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBnZXRSZXNvdXJjZURhdGFGaWx0ZXJlZCAgKHJlc291cmNlSWQsdGFza0lkLGZvcm1UeXBlLGxhbmcsZmlsdGVyKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIlBPU1RcIjtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2dldC1yZXNvdXJjZS1kYXRhLWZpbHRlcmVkLycrcmVzb3VyY2VJZCsnLycrdGFza0lkKycvJytmb3JtVHlwZSsnLycrbGFuZysnLyc7XHJcbiAgICAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICBsZXQgcG9zdF9kYXRhID0gZmlsdGVyO1xyXG4gICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwscG9zdF9kYXRhKS50aGVuKHJlc3BvbnNlID0+e1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLmRhdGEsY29sdW1uc0RlZjogcmVzcG9uc2UuZGF0YS5jb2x1bW5zRGVmLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiAnR2V0IHJlc291cmNlIGRhdGEgZmlsdGVyIGZhaWxlZCAhIC0tPiBnZXRSZXNvdXJjZURhdGFGaWx0ZXJlZCcsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuIFxyXG4gLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBSRVNPVVJDRSBEQVRBIERJUkVDVCBGSUxURVIgXHJcbiAgICAvLyAgY2FsbGVkIGJ5OiAga3RSZXNvdXJjZSBDVFJMIC0gICRzY29wZS5mZC5nZXREYXRhc2V0RGF0YUZvclNtYXJ0VGFibGUoKSBcclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBnZXRSZXNvdXJjZURhdGFEaXJlY3RGaWx0ZXIgIChyZXNvdXJjZUlkLGZpbHRlcixjb2x1bW5zX2Zvcl9zZWxlY3QpIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiUE9TVFwiO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgdXJsPScuLi9hcGkvZ2V0LXJlc291cmNlLWRhdGEtZGlyZWN0LWZpbHRlci8nK3Jlc291cmNlSWQrJy8nO1xyXG4gICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICBsZXQgcG9zdF9kYXRhID0geydzZWFyY2hfZmlsdGVyJzpmaWx0ZXIsJ2NvbHVtbnMnOmNvbHVtbnNfZm9yX3NlbGVjdH1cclxuICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsLHBvc3RfZGF0YSkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7IC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2UgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLmRhdGEsIHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdHZXQgcmVzb3VyY2UgZGF0YSBkaXJlY3QgZmlsdGVyIGZhaWxlZCAhIC0tPiBnZXRSZXNvdXJjZURhdGFEaXJlY3RGaWx0ZXInLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07XHJcbiBcclxuIFxyXG4gIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBHRVQgUkVTT1VSQ0UgREFUQSBSRUxBVEVEXHJcblx0Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgZ2V0UmVzb3VyY2VEYXRhUmVsYXRlZCAgKGRhdGFzZXRJZCxyZWNvcmRJZCxyZWxhdGVkSWQsdGFza0lkLG1vZGVsSWQsZm9ybVR5cGUsbGFuZykge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJQT1NUXCI7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9nZXQtcmVzb3VyY2UtZGF0YS1yZWxhdGVkLycrZGF0YXNldElkKycvJytyZWNvcmRJZCsnLycrcmVsYXRlZElkKycvJyt0YXNrSWQrJy8nK21vZGVsSWQrJy8nK2Zvcm1UeXBlKycvJytsYW5nKycvJztcclxuICAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHsvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLmRhdGEsY29sdW1uc0RlZjogcmVzcG9uc2UuZGF0YS5jb2x1bW5zRGVmLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiAnR2V0IHJlc291cmNlIGRhdGEgcmVsYXRlZCBmYWlsZWQgISAtLT4gZ2V0UmVzb3VyY2VEYXRhUmVsYXRlZCcsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuICBcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgR0VUIFJFU09VUkNFIERBVEEgV0lUSCBSRUxBVEVEXHJcblx0Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgZ2V0UmVzb3VyY2VEYXRhTTJtICh3aWRnZXRJZCxkYXRhc2V0SWQscmVsYXRlZElkLHJlY29yZElkKSB7XHJcbiAgICBcclxuICAgICAgICAgICAgbGV0IGh0dHBfbWV0aG9kPVwiUE9TVFwiO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCB1cmw9Jy4uL2FwaS9nZXQtcmVzb3VyY2UtZGF0YS1tMm0vJyt3aWRnZXRJZCsnLycrZGF0YXNldElkKycvJytyZWxhdGVkSWQrJy8nK3JlY29yZElkKycvJztcclxuICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuICAgICAgICAgXHJcbiAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEuZGF0YSxjb2x1bW5zRGVmOiByZXNwb25zZS5kYXRhLmNvbHVtbnNEZWYsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ0dldCByZXNvdXJjZSBkYXRhIG0ybSBmYWlsZWQgISAtLT4gZ2V0UmVzb3VyY2VEYXRhTTJtJyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAvLyAgICAgICAgICAgR0VUIFJFU09VUkNFIERBVEEgV0lUSCBSRUxBVEVEXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBnZXRSZXNvdXJjZURhdGFNMm1GaWx0ZXIgKHdpZGdldElkLGRhdGFzZXRJZCxyZWxhdGVkSWQscmVjb3JkSWQsZmlsdGVyLGZvcm0pIHtcclxuICAgIFxyXG4gICAgICAgICAgICBsZXQgaHR0cF9tZXRob2Q9XCJQT1NUXCI7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgbGV0IHVybD0nLi4vYXBpL2dldC1yZXNvdXJjZS1kYXRhLW0ybS8nK3dpZGdldElkKycvJytkYXRhc2V0SWQrJy8nK3JlbGF0ZWRJZCsnLycrcmVjb3JkSWQrJy8nO1xyXG4gICAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gdW5kZWZpbmVkKSBmaWx0ZXIgPSB7fVxyXG4gICAgICAgICAgICBpZiAoZm9ybSA9PT0gdW5kZWZpbmVkKSBmb3JtID0gW11cclxuXHJcbiAgICAgICAgICAgIGxldCBwb3N0X2RhdGEgPSB7J2ZpbHRlcl9kYXRhJzpmaWx0ZXIsJ2Zvcm1fZGF0YSc6Zm9ybX1cclxuICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsLHBvc3RfZGF0YSkudGhlbihyZXNwb25zZSA9PntcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2FuYWx5dGljczogcmVzcG9uc2UuZGF0YS5BbmFseXRpY3MsIGRhdGE6IHJlc3BvbnNlLmRhdGEuZGF0YSxjb2x1bW5zRGVmOiByZXNwb25zZS5kYXRhLmNvbHVtbnNEZWYsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ0dldCByZXNvdXJjZSBkYXRhIG0ybSBmYWlsZWQgISAtLT4gZ2V0UmVzb3VyY2VEYXRhTTJtJyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuICAgICAgICAgICBcclxuICBcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgR0VUIERBVEFTRVQgTUFQUElORyBIRUFEXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgZ2V0TWFwcGluZ1BhY2thZ2VzICAoZnJvbURzLHRvRHMsbGFuZykge1xyXG4gICAgXHJcbiAgICAgICAgIGlmIChmcm9tRHM9PXVuZGVmaW5lZCkgZnJvbURzPTA7XHJcbiAgICAgICAgIGlmICh0b0RzPT11bmRlZmluZWQpIHRvRHM9MDtcclxuICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2dldC1kYXRhc2V0LW1hcHBpbmctaGVhZC8nK2Zyb21EcysnLycrdG9EcysnLycrbGFuZysnLyc7XHJcbiAgICAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdHZXQgbWFwcGluZyBwYWNrYWdlcyBmYWlsZWQgISAtLT4gZ2V0TWFwcGluZ1BhY2thZ2VzJyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIC8vIH0pOyAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9O1xyXG4gICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgR0VUIERBVEFTRVQgVFJBTlNGT1JNIEhFQURcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBnZXRUcmFuc2Zvcm1QYWNrYWdlcyAgKGxhbmcpIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiR0VUXCI7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9nZXQtZGF0YXNldC10cmFuc2Zvcm0taGVhZC8nK2xhbmcrJy8nO1xyXG4gICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhICwgc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdHZXQgdHJhbnNmb3JtIHBhY2thZ2VzIGZhaWxlZCAhIC0tPiBnZXRUcmFuc2Zvcm1QYWNrYWdlcycrIHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAvLyB9KTsgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuICAgXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBSRVNPVVJDRSBGSUVMRFNcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBnZXRSZXNvdXJjZUZpZWxkcyAgKHJlc291cmNlSWQsbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nICkge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjtcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9nZXQtcmVzb3VyY2UtZmllbGRzLycrcmVzb3VyY2VJZCsnLycrbGFuZysnLyc7XHJcbiAgICAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2UgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEgLCBzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ0dldCByZXNvdXJjZSBmaWVsZHMgZmFpbGVkICEgLS0+IGdldFJlc291cmNlRmllbGRzJysgcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIC8vIH0pOyAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07ICAgICBcclxuICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBEQVRBU0VUIE1BUFBJTkdTXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgZ2V0RGF0YXNldE1hcHBpbmdzICAobWFwcGluZ0lkLGxhbmcpIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiR0VUXCI7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9nZXQtZGF0YXNldC1tYXBwaW5nLWRldGFpbC8nK21hcHBpbmdJZCsnLycrbGFuZysnLyc7XHJcbiAgICAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdHZXQgZGF0YXNldCBtYXBwaW5ncyBmYWlsZWQgISAtLT4gZ2V0RGF0YXNldE1hcHBpbmdzJysgcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8gIH0pOyAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9OyAgICAgXHJcbiAgICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBEQVRBU0VUIE1BUFBJTkdTXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgc2F2ZURhdGFzZXRNYXBwaW5nRGV0YWlscyAgKG1hcHBpbmdzLG1hcHBpbmdJZCkge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJQT1NUXCI7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9zYXZlLWRhdGFzZXQtbWFwcGluZy1kZXRhaWxzLycrbWFwcGluZ0lkKycvJztcclxuICAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwsbWFwcGluZ3MpLnRoZW4ocmVzcG9uc2UgPT57XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHsgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ1NhdmUgZGF0YXNldCBtYXBwaW5ncyBmYWlsZWQgISAtLT4gc2F2ZURhdGFzZXRNYXBwaW5nRGV0YWlscycrIHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTsgICAgIFxyXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gICAgICAgIFNBVkUgREFUQVNFVCBNQVBQSU5HIEhFQURcclxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgc2F2ZURhdGFzZXRNYXBwaW5nSGVhZCAgKG1hcHBpbmdzLG1hcHBpbmdJZCxsYW5nKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIlBPU1RcIjtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL3NhdmUtZGF0YXNldC1tYXBwaW5nLWhlYWQvJyttYXBwaW5nSWQrJy8nK2xhbmcrJy8nO1xyXG4gICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxtYXBwaW5ncykudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7IC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiAnU2F2ZSBkYXRhc2V0IG1hcHBpbmdzIGhlYWQgZmFpbGVkICEgLS0+IHNhdmVEYXRhc2V0TWFwcGluZ0hlYWQnKyByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9OyBcclxuIFxyXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gICAgICAgIFNBVkUgVFJBTlNGT1JNIEhFQURcclxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgc2F2ZURhdGFzZXRUcmFuc2Zvcm1IZWFkICAodHJhbnNmb3Jtcyx0cmFuc2Zvcm1JZCxsYW5nKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIlBPU1RcIjtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL3NhdmUtZGF0YXNldC10cmFuc2Zvcm0taGVhZC8nK3RyYW5zZm9ybUlkKycvJytsYW5nKycvJztcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwsdHJhbnNmb3JtcykudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7IC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdTYXZlIGRhdGFzZXQgdHJhbnNmb3JtIGhlYWQgZmFpbGVkICEgLS0+IHNhdmVEYXRhc2V0VHJhbnNmb3JtSGVhZCcrIHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTsgIFxyXG4gICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgR0VUIFRSQU5TRk9STSBGSUVMRFNcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBnZXRUcmFuc2Zvcm1GaWVsZHMgICh0cmFuc2Zvcm1JZCkge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2dldC1kYXRhc2V0LXRyYW5zZm9ybS1kZXRhaWxzLycrdHJhbnNmb3JtSWQrJy8nO1xyXG4gICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSAsIHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiAnR2V0IHRyYW5zZm9ybSBmaWVsZHMgZmFpbGVkICEgLS0+IGdldFRyYW5zZm9ybUZpZWxkcycrIHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vICB9KTsgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9O1xyXG4gICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBTQVZFIFRSQU5TRk9STSBGSUVMRFNcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBzYXZlVHJhbnNmb3JtRmllbGRzICAodHJhbnNmb3JtYXRpb25zLHRyYW5zZm9ybUlkKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIlBPU1RcIjtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL3NhdmUtZGF0YXNldC10cmFuc2Zvcm0tZGV0YWlscy8nK3RyYW5zZm9ybUlkKycvJztcclxuICAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCx0cmFuc2Zvcm1hdGlvbnMpLnRoZW4ocmVzcG9uc2UgPT57XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ1NhdmUgdHJhbnNmb3JtIGZpZWxkcyBmYWlsZWQgISAtLT4gc2F2ZVRyYW5zZm9ybUZpZWxkcycrIHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9OyAgICAgXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBJbml0aXRhdGUgd2lkZ2V0c1xyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gIGdldEZvcm1XaWRnZXRzICAocmVzb3VyY2VfaWQsdGFza19pZCxwcmVzZW50YXRpb25faWQsdHlwZSxsYW5nLHZlcnNpb24pIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiR0VUXCI7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmIChwcmVzZW50YXRpb25faWQ9PXVuZGVmaW5lZCB8fCBwcmVzZW50YXRpb25faWQ9PW51bGwpIHByZXNlbnRhdGlvbl9pZD0wO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgdXJsPScuLi9hcGkvZ2V0LWZvcm0td2lkZ2V0cy8nK3Jlc291cmNlX2lkKycvJyt0YXNrX2lkKycvJytwcmVzZW50YXRpb25faWQrJy8nK3R5cGUrJy8nK2xhbmcrJy8nK3ZlcnNpb24rJy8nO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiAnR2V0IGZvcm0gd2lkZ2V0cyBmYWlsZWQgISAtLT4gZ2V0Rm9ybVdpZGdldHMnKyByZXNwb25zZS5kYXRhLCBzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIC8vIH0pOyAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9O1xyXG4gIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBTQVZFIFJFU09VUkNFIERBVEFcclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBzYXZlUmVzb3VyY2VEYXRhICAocmVzb3VyY2VJZCxyZXNvdXJjZURhdGEpIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiUE9TVFwiO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgdXJsPScuLi9hcGkvc2F2ZS1yZXNvdXJjZS1kYXRhLycrcmVzb3VyY2VJZCsnLyc7XHJcbiAgICAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxyZXNvdXJjZURhdGEpLnRoZW4ocmVzcG9uc2UgPT57XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHttc2c6ICdOZXcgcmVjb3JkIHNhdmVkIHN1Y2Nlc3NmdWxseSAhJyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ1NhdmUgcmVjb3JkIGZhaWxlZCAhIC0tPiBzYXZlUmVzb3VyY2VEYXRhJyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcbiAgICBcclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBTQVZFIFJFU09VUkNFIERBVEFcclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBkZWxldGVEYXRhc2V0UmVjb3JkICAocmVzb3VyY2VEZWZJZCxyZXNvdXJjZUlkKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIlBPU1RcIjtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2RlbGV0ZS1kYXRhc2V0LXJlY29yZC8nK3Jlc291cmNlRGVmSWQrJy8nK3Jlc291cmNlSWQrJy8nO1xyXG4gICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkgeyAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLCBtc2c6IHJlc3BvbnNlLmRhdGEubXNnLCBzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ0RlbGV0ZSByZWNvcmQgZmFpbGVkICEgLS0+IGRlbGV0ZURhdGFzZXRSZWNvcmQnKyByZXNwb25zZS5kYXRhLm1zZywgc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuICAgIFxyXG4gICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBSRVNPVVJDRSBQQVJBTVNcclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICAgIEdldFJlc291cmNlUGFyYW1zICAoKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIkdFVFwiO1xyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2dldC1yZXNvdXJjZS1wYXJhbXMvJztcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiBcclxuICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHsgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdHZXQgcmVzb3VyY2UgcGFyYW1zIGZhaWxlZCAhIC0tPiBHZXRSZXNvdXJjZVBhcmFtcycgKyByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIGZ1bmN0aW9uIEdldFB1Ymxpc2hlZFJlc291cmNlc1xyXG4gICAgICAgIFxyXG4gICAgICAgIEdldFB1Ymxpc2hlZFJlc291cmNlcyAgKHJlc291cmNlSWQsIHJlc291cmNlVHlwZT0nYWxsJykge1xyXG4gICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9wdWJsaXNoZWQtcmVzb3VyY2VzLycrcmVzb3VyY2VJZCsnLycgKyByZXNvdXJjZVR5cGUgKyAnLyc7XHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gXHJcbiAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7ICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiAnR2V0IHB1Ymxpc2hlZCByZXNvdXJjZXMgZmFpbGVkICEgJyArIHJlc3BvbnNlLm1zZywgc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcblx0XHQgICAgICAgIFxyXG4gICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIEdldFJlc291cmNlQWNjZXNzICAoYXBwKSB7XHJcblx0XHRcdC8vZGVidWdnZXJcclxuICAgICAgICAgIGxldCBpZCA9IGFwcC51aWQgPyBhcHAudWlkIDogMFxyXG5cdFx0ICBsZXQgdmVyID0gYXBwLnZlcnNpb24gPyBhcHAudmVyc2lvbjogMFxyXG5cdFx0XHQgXHJcblx0XHRcdCBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9nZXQtcmVzb3VyY2UtYWNjZXNzLycrIGlkICsnLycgKyB2ZXIgKyAnLyc7XHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gXHJcbiAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7ICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiAnR2V0IHB1Ymxpc2hlZCByZXNvdXJjZXMgZmFpbGVkISAnICsgcmVzcG9uc2UubXNnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICBcclxuXHRcdCAgU2F2ZVJlc291cmNlQWNjZXNzICAocmVzb3VyY2UsIHBvc3RfZGF0YSkgXHJcblx0XHQgIHtcclxuXHRcdFx0ICBsZXQgcmVzSWQgPSAgcmVzb3VyY2UudWlkID8gIHJlc291cmNlLnVpZCA6IDBcclxuXHRcdFx0ICB2YXIgdXJsPScuLi9hcGkvc2F2ZS1yZXNvdXJjZS1hY2Nlc3MvJysgcmVzSWQgKycvJyArIHJlc291cmNlLnZlcnNpb24gKyAnLycgO1xyXG5cdFx0XHQgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcblx0IFxyXG5cdFx0XHRcdHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwsIHBvc3RfZGF0YSkudGhlbihyZXNwb25zZSA9PntcclxuXHRcdFx0XHRcdFx0aWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkgeyAgICAgICBcclxuXHRcdFx0XHRcdFx0XHRkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgIFxyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdGRlZmVycmVkLnJlamVjdCh7bXNnOiAnU2F2ZVJlc291cmNlQWNjZXNzIGZhaWxlZCAhIC0gJyArIHJlc3BvbnNlLmRhdGEsIHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG5cdFx0XHRcdFx0XHR9ICAgXHJcblx0XHRcdFx0fSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9XHJcblx0XHJcblx0XHJcblx0ICBTYXZlTWVudUFjY2VzcyAgKHJlc291cmNlLCBwb3N0X2RhdGEpIFxyXG5cdFx0ICB7XHJcblx0XHRcdCAgbGV0IHJlc0lkID0gIHJlc291cmNlLnVpZCA/ICByZXNvdXJjZS51aWQgOiAwXHJcblx0XHRcdCAgdmFyIHVybD0nLi4vYXBpL3NhdmUtbWVudS1hY2Nlc3MvJysgcmVzSWQgKycvJyArIHJlc291cmNlLnZlcnNpb24gKyAnLycgO1xyXG5cdFx0XHQgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcblx0IFxyXG5cdFx0XHRcdHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwsIHBvc3RfZGF0YSkudGhlbihyZXNwb25zZSA9PntcclxuXHRcdFx0XHRcdFx0aWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkgeyAgICAgICBcclxuXHRcdFx0XHRcdFx0XHRkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgIFxyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdGRlZmVycmVkLnJlamVjdCh7bXNnOiAnU2F2ZVJlc291cmNlQWNjZXNzIGZhaWxlZCAhIC0gJyArIHJlc3BvbnNlLmRhdGEsIHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG5cdFx0XHRcdFx0XHR9ICAgXHJcblx0XHRcdFx0fSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcblx0XHRcdFxyXG4gICAgICAgIC8vIGZ1bmN0aW9uIEdldFB1Ymxpc2hlZFJlc291cmNlc0J5VHlwZSAgICAgIFxyXG4gICAgICAgIEdldFB1Ymxpc2hlZFJlc291cmNlc0J5VHlwZSAgKHJlc291cmNlVHlwZSxwdWJsaXNoVHlwZSwgdXNlQ2FjaGU9dHJ1ZSkge1xyXG4gICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9nZXQtcHVibGlzaGVkLXJlc291cmNlcy8nK3Jlc291cmNlVHlwZSsnLycgKyBwdWJsaXNoVHlwZSArICcvJztcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiBcclxuICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsLCB1c2VDYWNoZSkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7ICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiAnR2V0IHB1Ymxpc2hlZCByZXNvdXJjZXMgZmFpbGVkICEgKEdldFB1Ymxpc2hlZFJlc291cmNlc0J5VHlwZSknICsgcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgIC8vIGZ1bmN0aW9uIEdldFB1Ymxpc2hlZFJlc291cmNlc1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vR2V0UHVibGlzaGVkUmVzb3VyY2VzQnlSZXNvdXJjZURlZlxyXG5cclxuICAgICAgICBHZXRQdWJsaXNoZWRSZXNvdXJjZXNCeVR5cGVJZCAgKHJlc291cmNlX2lkLHJlc291cmNlX3R5cGUpIHtcclxuICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgdXJsPScuLi9hcGkvZ2V0LXB1Ymxpc2hlZC1yZXNvdXJjZXMtYnktdHlwZS1pZC8nK3Jlc291cmNlX2lkKycvJyArIHJlc291cmNlX3R5cGUgKyAnLyc7XHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gXHJcbiAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7ICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiAnR2V0IHB1Ymxpc2hlZCByZXNvdXJjZXMgZmFpbGVkICEgKEdldFB1Ymxpc2hlZFJlc291cmNlc0J5VHlwZUlkKScgKyByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBHZXRQdWJsaXNoZWRSZXNvdXJjZUJ5SWQgIChwdWJsaXNoX2lkKSB7XHJcbiAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2dldC1wdWJsaXNoZWQtcmVzb3VyY2UtYnktaWQvJytwdWJsaXNoX2lkKycvJ1xyXG4gICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuIFxyXG4gICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkgeyAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ0dldCBwdWJsaXNoZWQgcmVzb3VyY2UgYnkgaWQgZmFpbGVkICEgKEdldFB1Ymxpc2hlZFJlc291cmNlc0J5SWQpJyArIHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgICBHZXRQdWJsaXNoZWRSZXNvdXJjZVZlcnNpb24gIChyZXNvdXJjZV9pZCxwdWJsaXNoX3R5cGUsdmVyLGVudlR5cGUpIHtcclxuICAgIFxyXG4gICAgICAgICAgaWYgKHZlcj09dW5kZWZpbmVkKSB2ZXI9MFxyXG4gICAgICAgICAgaWYgKCFlbnZUeXBlKSBlbnZUeXBlPSdkZXYnXHJcbiAgICAgICAgICB2YXIgdXJsPScuLi9hcGkvZ2V0LXB1Ymxpc2hlZC1yZXNvdXJjZS12ZXJzaW9uLycrcmVzb3VyY2VfaWQrJy8nK3B1Ymxpc2hfdHlwZSsnLycrZW52VHlwZSsnLycrdmVyKycvJ1xyXG4gICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuICAgICAgICAgIFxyXG4gXHJcbiAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7ICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiAnR2V0IHB1Ymxpc2hlZCByZXNvdXJjZSB2ZXJzaW9uIGZhaWxlZCAhIChHZXRQdWJsaXNoZWRSZXNvdXJjZVZlcnNpb24pJyArIHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIEdldFB1YmxpY1B1Ymxpc2hlZFJlc291cmNlICAocmVzb3VyY2VfaWQsdmVyKSB7XHJcbiAgICBcclxuICAgICAgICAgIGlmICh2ZXI9PXVuZGVmaW5lZCkgdmVyPTFcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9nZXQtcHVibGljLXB1Ymxpc2hlZC1yZXNvdXJjZS8nK3Jlc291cmNlX2lkKycvJyt2ZXIrJy8nXHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgXHJcbiBcclxuICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHsgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdHZXQgcHVibGljIHB1Ymxpc2hlZCByZXNvdXJjZSBmYWlsZWQgISAoR2V0UHVibGlzaGVkUHVibGljUmVzb3VyY2UpJyArIHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgICAgIEdldFB1Ymxpc2hlZFB1YmxpY1Jlc291cmNlc0J5VHlwZSAgKHB1Ymxpc2hfdHlwZSkge1xyXG4gICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9nZXQtcHVibGlzaGVkLXB1YmxpYy1yZXNvdXJjZS1ieS10eXBlLycrcHVibGlzaF90eXBlKycvJ1xyXG4gICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuICAgICAgICAgIFxyXG4gXHJcbiAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7ICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiAnR2V0IHB1YmxpYyBwdWJsaXNoZWQgcmVzb3VyY2VzIGJ5IHR5cGUgZmFpbGVkICEgKEdldFB1Ymxpc2hlZFB1YmxpY1Jlc291cmNlc0J5VHlwZSBGbiknICsgcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuXHJcblxyXG4gICAgICAgIGxvYWRBcHAgIChhcHBfaWQsdmVyc2lvbikge1xyXG5cclxuICAgICAgICAgICAgaWYgKHZlcnNpb249PXVuZGVmaW5lZCkgdmVyc2lvbiA9IDBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9sb2FkLWFwcC8nK2FwcF9pZCsnLycrdmVyc2lvbisnLydcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICBcclxuIFxyXG4gICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkgeyAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ0xvYWQgYXBwbGljYXRpb24gZmFpbGVkICEgKGxvYWRBcHApIC0tPiAnICsgcmVzcG9uc2UubXNnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBQdWJsaXNoUmVzb3VyY2UgIChyZXNvdXJjZUlkLHJlc291cmNlVmVyc2lvbixwdWJsaXNoRGVzYyxwdWJsaXNoVHlwZSkge1xyXG4gICAgXHJcbiAgICAgICAgICAgIGlmIChwdWJsaXNoRGVzYyA9PSB1bmRlZmluZWQpIHB1Ymxpc2hEZXNjPScnXHJcbiAgICAgICAgICAgIGxldCB1cmw9Jy4uL2FwaS9wdWJsaXNoZWQtcmVzb3VyY2VzLycrcmVzb3VyY2VJZCsnLycrcHVibGlzaFR5cGUrJy8nO1xyXG4gICAgICAgICAgICBsZXQgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgICBsZXQgcHVibGlzaCA9IHsnUmVzb3VyY2VJZCc6cmVzb3VyY2VJZCwnVmVyc2lvbic6cmVzb3VyY2VWZXJzaW9uLCdEZXNjcmlwdGlvbic6JycrIHB1Ymxpc2hEZXNjfVxyXG4gXHJcbiAgICBcclxuICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxwdWJsaXNoKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHsgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe21zZzogcmVzcG9uc2UuZGF0YS5tc2csc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdQdWJsaXNoIHJlc291cmNlIGZhaWxlZCAhIChQdWJsaXNoUmVzb3VyY2UpJyArIHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGdldEV4dGVybmFsUmVzb3VyY2VJbmZvICAocmVzb3VyY2VfaWQpIHtcclxuXHJcbiAgICAgICAgICBsZXQgdXJsPScuLi9hcGkvZ2V0LWV4dGVybmFsLXJlc291cmNlLWluZm8vJytyZXNvdXJjZV9pZCsnLydcclxuICAgICAgICAgIGxldCBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHsgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdHZXQgZXh0ZXJuYWwgcmVzb3VyY2UgaW5mbyBmYWlsZWQgISAoZ2V0RXh0ZXJuYWxSZXNvdXJjZUluZm8pIC0tPiAnICsgcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBHRVQgUkVTT1VSQ0UgU1VCU0NSSVBUSU9OU1xyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gIEdldFJlc291cmNlU3Vic2NyaXB0aW9ucyAgKHN1YnNjcmlwdGlvblR5cGUpIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiR0VUXCI7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9yZXNvdXJjZS1zdWJzY3JpcHRpb25zLycrc3Vic2NyaXB0aW9uVHlwZSsnLyc7XHJcbiAgICAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ0dldCByZXNvdXJjZSBzdWJzY3JpcHRpb25zIGZhaWxlZCAhIC0tPiBHZXRSZXNvdXJjZVN1YnNjcmlwdGlvbnMnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuICAgICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAvLyAgICAgICAgICAgR0VUIFdJREdFVCAgVE9PTEJPWFxyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgR2V0V2lkZ2V0VG9vbGJveCAgKHJlc291cmNlVHlwZSkge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2dldC13aWRnZXQtdG9vbGJveC8nK3Jlc291cmNlVHlwZSsnLyc7XHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIGRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiAnR2V0IHdpZGdldCB0b29sYm94IGZhaWxlZCAhIC0tPiBHZXRXaWRnZXRUb29sYm94JytkYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgLy8gICAgICAgICAgIEdFVCBXSURHRVQgIFRPT0xCT1hcclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gIERlbGV0ZUNoaWxkUmVsYXRpb25zaGlwICAocHJlc2VudGF0aW9uSWQscGFyZW50RGVmSWQscGFyZW50UmVjb3JkaWQsY2hpbGRSZWNvcmRJZCkge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2RlbGV0ZS1jaGlsZC1yZWxhdGlvbnNoaXAvJytwcmVzZW50YXRpb25JZCsnLycrcGFyZW50RGVmSWQrJy8nK3BhcmVudFJlY29yZGlkKycvJytjaGlsZFJlY29yZElkKycvJztcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdEZWxldGUgY2hpbGQgcmVsYXRpb25zaGlwIGZhaWxlZCAhIC0tPiBEZWxldGVDaGlsZFJlbGF0aW9uc2hpcCcrZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9O1xyXG4gICAgXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIC8vICAgICAgICAgICBTRVQgTkVXIFJFU09SVUNFIFZFUlNJT05cclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gICAgU2V0TmV3UmVzb3VyY2VWZXJzaW9uICAocmVzb3VyY2VJZCkge1xyXG4gICAgXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgdXJsPScuLi9hcGkvc2V0LW5ldy1yZXNvdXJjZS12ZXJzaW9uLycrcmVzb3VyY2VJZCsnLydcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdTZXQgbmV3IHZlcnNpb24gZmFpbGVkICEgLS0+IFNldE5ld1Jlc291cmNlVmVyc2lvbicrcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07XHJcbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgKioqKioqKioqKioqKioqKiogUFJPQ0VTUyBXSURHRVRTICAqKioqKioqKioqKioqKioqKipcclxuICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAgICAgXHJcbiAgcHJvY2Vzc1dpZGdldHMgIChyZXNvdXJjZUlkLHJlc291cmNlRGF0YSxyZXNvdXJjZUluc3RhbmNlLHBhZ2VWZXJzaW9uKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIlBPU1RcIjtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYgKHJlc291cmNlSWQhPXVuZGVmaW5lZCAmJiByZXNvdXJjZUluc3RhbmNlIT11bmRlZmluZWQpXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICB2YXIgdXJsPScuLi9hcGkvcHJvY2Vzcy13aWRnZXRzLycrcmVzb3VyY2VJZCsnLycrcmVzb3VyY2VJbnN0YW5jZSsnLycrcGFnZVZlcnNpb24rJy8nO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICBsZXQgcG9zdF9kYXRhPSB7J3Jlc291cmNlRGF0YSc6cmVzb3VyY2VEYXRhfSA7XHJcbiAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwscG9zdF9kYXRhKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RlZmVycmVkLnJlamVjdCh7bXNnOidQcm9jZXNzIHdpZGdldHMgZXJyb3IhICAnK3Jlc3BvbnNlLnN0YXR1cysnIHN0YXR1c1RleHQgPSAnK3Jlc3BvbnNlLnN0YXR1c1RleHQrJyAnKyByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgIFxyXG5cdFx0XHRcdFx0XHRkZWZlcnJlZC5yZWplY3Qoe21zZzogcmVzcG9uc2UuZGF0YSwgc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1x0XHRcdFx0XHRcdFx0IFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIE1BTkFHRSBSRVNPVVJDRSBTVUJTQ1JJUFRJT05TXHJcblx0Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgTWFuYWdlUmVzb3VyY2VTdWJzY3JpcHRpb25zICAocmVzb3VyY2Usc3Vic2NyaXB0aW9uVHlwZSxhY3Rpb25UeXBlKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIlBPU1RcIjtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL3Jlc291cmNlLXN1YnNjcmlwdGlvbnMvJytzdWJzY3JpcHRpb25UeXBlKycvJztcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICBsZXQgcG9zdF9kYXRhID0geyAncmVzb3VyY2UnOiByZXNvdXJjZSwnYWN0aW9uJzphY3Rpb25UeXBlfTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxwb3N0X2RhdGEpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHsgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdNYW5hZ2UgcmVzb3VyY2Ugc3Vic2NyaXB0aW9ucyBmYWlsZWQgISAtLT4gTWFuYWdlUmVzb3VyY2VTdWJzY3JpcHRpb25zJysgcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgc2F2ZSBhcHBsaWNhdGlvbiBtZW51XHJcblx0Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgc2F2ZVJlc291cmNlTGlua3MgKHJsaW5rKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIlBPU1RcIjtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL3NhdmUtcmVzb3VyY2UtbGlua3MvJztcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICBsZXQgcG9zdF9kYXRhID0gcmxpbms7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwscG9zdF9kYXRhKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHsgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdTYXZlIHJlc291cmNlIGxpbmtzIGZhaWxlZCAhIC0tPiBzYXZlUmVzb3VyY2VMaW5rcycrcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcblxyXG4gIHNhdmVBcHBsaWNhdGlvbiAoYXBwKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIlBPU1RcIjtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL3NhdmUtYXBwbGljYXRpb24vJztcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICBsZXQgcG9zdF9kYXRhID0gYXBwO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsLHBvc3RfZGF0YSkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7IC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiAnU2F2ZSBhcHBsaWNhdGlvbiBmYWlsZWQgISAtLT4gc2F2ZUFwcGxpY2F0aW9uJytyZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAvLyAgICAgICAgICAgcHVibGlzaCBhcHBsaWNhdGlvblxyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgcHVibGlzaEFwcGxpY2F0aW9uIChhcHBJZCx2ZXJzaW9uKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIkdFVFwiO1xyXG4gICAgICAgICAgaWYgKCF2ZXJzaW9uKSB2ZXJzaW9uPTBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9wdWJsaXNoLWFwcGxpY2F0aW9uLycrYXBwSWQrJy8nK3ZlcnNpb24rJy8nO1xyXG4gICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuXHJcbiAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdQdWJsaXNoIGFwcGxpY2F0aW9uIGZhaWxlZCAhIC0tPiBwdWJsaXNoQXBwbGljYXRpb24nK3Jlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9O1xyXG5cclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgLy8gICAgICAgICAgIHNhdmUgYXBwbGljYXRpb24gbWVudVxyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgcHVibGlzaDJQcm9kIChyZXNvdXJjZXMpIHtcclxuICAgIFxyXG4gICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJQT1NUXCI7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9wdWJsaXNoLTItcHJvZC8nO1xyXG4gICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuICAgICAgICAgIGxldCBwb3N0X2RhdGEgPSByZXNvdXJjZXM7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwscG9zdF9kYXRhKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHsgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdQdWJsaXNoIDIgcHJvZCBmYWlsZWQgISAtLT4gcHVibGlzaDJQcm9kJytyZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuXHJcblxyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAvLyAgICAgICAgICAgcHVibGlzaCBwdWJsaWMgcmVzb3VyY2VcclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gIHB1Ymxpc2hQdWJsaWNSZXNvdXJjZSAocmVzb3VyY2VJZCxyZXNvdXJjZVR5cGUsdmVyc2lvbixwdWJsaXNoKSB7XHJcbiAgICBcclxuICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiUE9TVFwiO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgdXJsPScuLi9hcGkvcHVibGlzaC1wdWJsaWMtcmVzb3VyY2UvJytyZXNvdXJjZUlkKycvJytyZXNvdXJjZVR5cGUrJy8nK3ZlcnNpb24rJy8nO1xyXG4gICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuICAgICAgICAgIGxldCBwb3N0X2RhdGEgPSBwdWJsaXNoO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsLHBvc3RfZGF0YSkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEgKSB7IC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiAnUHVibGlzaCBwdWJsaWMgcmVzb3VyY2UgZmFpbGVkICEgLS0+IHB1Ymxpc2hQdWJsaWNSZXNvdXJjZSBGbiAtLT4gJytyZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgLy8gICAgICAgICAgIGFkZCByZXNvdXJjZSByZWNvcmRcclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gICAgYWRkUmVzb3VyY2VSZWNvcmQgKHJlc291cmNlSWQscHJlc2VudGF0aW9uSWQscmVzb3VyY2UsdmVyc2lvbixyaW5zdGFuY2UscHJpbnN0YW5jZSkge1xyXG4gICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHZlcnNpb249PXVuZGVmaW5lZCkgdmVyc2lvbj0wXHJcbiAgICAgICAgaWYgKHJpbnN0YW5jZT09dW5kZWZpbmVkKSByaW5zdGFuY2U9MFxyXG4gICAgICAgIGlmIChwcmluc3RhbmNlPT11bmRlZmluZWQpIHByaW5zdGFuY2U9MFxyXG5cclxuICAgICAgICBsZXQgdXJsPScuLi9hcGkva3QtdGFzay1hZGQtcmVzb3VyY2UvJytyZXNvdXJjZUlkKycvJytwcmVzZW50YXRpb25JZCsnLycrdmVyc2lvbisnLycrcmluc3RhbmNlKycvJytwcmluc3RhbmNlKycvJ1xyXG4gICAgICAgIGxldCBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgbGV0IHBvc3RfZGF0YSA9IHJlc291cmNlO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxwb3N0X2RhdGEpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkgeyAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ0FkZCByZWNvcmQgZmFpbGVkICEgJytyZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgfTtcclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgLy8gICAgICAgICAgIGFkZCByZXNvdXJjZSByZWNvcmRcclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gICAgdXBkYXRlUmVzb3VyY2VSZWNvcmQgKHJlc291cmNlSWQscHJlc2VudGF0aW9uSWQscmVzb3VyY2UsdmVyc2lvbikge1xyXG4gICAgXHJcbiAgICAgICAgbGV0IHVybD0nLi4vYXBpL2t0LXRhc2stdXBkYXRlLXJlc291cmNlLycrcmVzb3VyY2VJZCsnLycrcHJlc2VudGF0aW9uSWQrJy8nXHJcbiAgICAgICAgaWYgKHZlcnNpb24hPXVuZGVmaW5lZCkgdXJsKz12ZXJzaW9uKycvJ1xyXG4gICAgICAgIGxldCBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgbGV0IHBvc3RfZGF0YSA9IHJlc291cmNlO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxwb3N0X2RhdGEpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkgeyAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ1VwZGF0ZSByZXNvdXJjZSByZWNvcmQgZmFpbGVkICEgLS0+IHVwZGF0ZVJlc291cmNlUmVjb3JkJytyZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgLy8gICAgICAgICAgIGFkZCByZXNvdXJjZSByZWNvcmRcclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gICAgcHJvY2Vzc1Iyck1hcHBpbmcgKHdpZGdldElkLHJlc291cmNlSWQscmVzb3VyY2VWZXJzaW9uLG1hcHBpbmdzLGZpbHRlcl9kYXRhLHJlc291cmNlSW5zdGFuY2VJZCxwcmV2UmVzb3VyY2VJZCkge1xyXG4gICAgXHJcbiAgICAgICAgbGV0IHVybD0nLi4vYXBpL3Byb2Nlc3MtcjJyLW1hcHBpbmcvJyt3aWRnZXRJZCsnLycrcmVzb3VyY2VJZCsnLycrcmVzb3VyY2VWZXJzaW9uKycvJ1xyXG4gICAgICAgIGxldCBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgaWYgKHJlc291cmNlSW5zdGFuY2VJZD09dW5kZWZpbmVkKSByZXNvdXJjZUluc3RhbmNlSWQ9MFxyXG4gICAgICAgIGlmIChwcmV2UmVzb3VyY2VJZD09dW5kZWZpbmVkKSBwcmV2UmVzb3VyY2VJZD0wXHJcbiAgICAgICAgdXJsID0gdXJsK3Jlc291cmNlSW5zdGFuY2VJZCsnLycrcHJldlJlc291cmNlSWQrJy8nXHJcbiAgICAgICAgbGV0IHBvc3RfZGF0YSA9IHsnbWFwcGluZ3MnOm1hcHBpbmdzLCdmaWx0ZXInOmZpbHRlcl9kYXRhfTtcclxuICAgICAgICAgIFxyXG4gICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwscG9zdF9kYXRhKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHsgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdQcm9jZXNzIHJlc291cmNlIDIgcmVzb3VyY2UgbWFwcGluZyBmYWlsZWQgISAtLT4gcHJvY2Vzc1Iyck1hcHBpbmcnK3Jlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICB9KTtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICB9O1xyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAvLyAgICAgICAgICAgb3BlbiBzZWN1cmVkIHBhZ2VcclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gIG9wZW5TZWN1cmVkUGFnZSAocGFnZUlkLCBwYWdlVmVyc2lvbiAsIHBhZ2VfaW5zdGFuY2UscHJldl9yZXNvdXJjZV9pZCkge1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChwYWdlX2luc3RhbmNlPT11bmRlZmluZWQpIHBhZ2VfaW5zdGFuY2U9MFxyXG4gICAgICAgIGlmIChwcmV2X3Jlc291cmNlX2lkPT11bmRlZmluZWQpIHByZXZfcmVzb3VyY2VfaWQ9MFxyXG4gICAgICAgIGxldCB1cmw9Jy4uL2FwaS9vcGVuLXNlY3VyZWQtcGFnZS8nK3BhZ2VJZCArICcvJyArIHBhZ2VWZXJzaW9uICsnLycrcGFnZV9pbnN0YW5jZSsnLycrcHJldl9yZXNvdXJjZV9pZCsnLyc7XHJcbiAgICAgICAgbGV0IGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuXHJcbiAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiByZXNwb25zZS5tc2csc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIC8vICAgICAgICAgICBvcGVuIHB1YmxpYyBwYWdlXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBvcGVuUHVibGljUGFnZSAob3JnSWQscGFnZUlkLHBhZ2VWZXJzaW9uLHBhZ2VfaW5zdGFuY2UscHJldl9yZXNvdXJjZV9pZCkge1xyXG4gICAgXHJcbiAgICAgICAgIFxyXG4gICAgICAgXHJcbiAgICAgICAgbGV0IGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuICAgICAgICBpZiAocGFnZVZlcnNpb249PXVuZGVmaW5lZCkgcGFnZVZlcnNpb249MFxyXG4gICAgICAgIGlmIChwYWdlX2luc3RhbmNlPT11bmRlZmluZWQpIHBhZ2VfaW5zdGFuY2U9MFxyXG4gICAgICAgIGlmIChwcmV2X3Jlc291cmNlX2lkPT11bmRlZmluZWQpIHByZXZfcmVzb3VyY2VfaWQ9MFxyXG5cclxuICAgICAgICBsZXQgdXJsPScuLi9hcGkvb3Blbi1wdWJsaWMtcGFnZS8nK29yZ0lkKycvJytwYWdlSWQrJy8nKyBwYWdlVmVyc2lvbiArJy8nK3BhZ2VfaW5zdGFuY2UrJy8nK3ByZXZfcmVzb3VyY2VfaWQrJy8nO1xyXG5cclxuICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6IHJlc3BvbnNlLm1zZyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAvLyAgICAgICAgICAgb3BlbiBwdWJsaWMgcGFnZVxyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgb3BlblNhYXNQYWdlIChlbnZJZCxleGVVc2VySWQscGFnZUlkLHBhZ2VWZXJzaW9uLHBhZ2VfaW5zdGFuY2UscHJldl9yZXNvdXJjZV9pZCkge1xyXG4gICAgXHJcbiAgICAgICAgIFxyXG4gICAgICAgXHJcbiAgICAgICAgbGV0IGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuICAgICAgICBpZiAocGFnZVZlcnNpb249PXVuZGVmaW5lZCkgcGFnZVZlcnNpb249MFxyXG4gICAgICAgIGlmIChwYWdlX2luc3RhbmNlPT11bmRlZmluZWQpIHBhZ2VfaW5zdGFuY2U9MFxyXG4gICAgICAgIGlmIChwcmV2X3Jlc291cmNlX2lkPT11bmRlZmluZWQpIHByZXZfcmVzb3VyY2VfaWQ9MFxyXG5cclxuICAgICAgICBsZXQgdXJsPScuLi9hcGkvb3Blbi1zYWFzLXBhZ2UvJytlbnZJZCsnLycrZXhlVXNlcklkKycvJytwYWdlSWQrJy8nKyBwYWdlVmVyc2lvbiArJy8nK3BhZ2VfaW5zdGFuY2UrJy8nK3ByZXZfcmVzb3VyY2VfaWQrJy8nO1xyXG5cclxuICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6IHJlc3BvbnNlLm1zZyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIC8vICAgICAgICAgICBwcmVwYXJlUHVibGlzaDJQcm9kXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBwcmVwYXJlUHVibGlzaDJQcm9kIChyZXNvdXJjZUlkLHJlc291cmNlVHlwZSx2ZXJzaW9uKSB7XHJcbiAgICBcclxuICAgICAgICAgXHJcbiAgICAgICAgICBsZXQgdXJsPScuLi9hcGkvcHJlcGFyZS1wdWJsaXNoLTItcHJvZC8nK3Jlc291cmNlSWQrJy8nK3Jlc291cmNlVHlwZSsnLycrdmVyc2lvbisnLyc7XHJcbiAgICAgICAgICBsZXQgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG5cclxuICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiByZXNwb25zZS5tc2csc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9O1xyXG5cclxuIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgLy8gICAgICAgICAgIHByZXBhcmVQdWJsaXNoMlByb2RcclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gIEluc3RhbGxSZXNvdXJjZSAocHVibGlzaElkLHJlc291cmNlSWQscmVzb3VyY2VUeXBlKSB7XHJcbiAgICBcclxuICAgICAgICAgXHJcbiAgICAgICAgICBsZXQgdXJsPScuLi9hcGkvaW5zdGFsbC1yZXNvdXJjZS8nK3B1Ymxpc2hJZCsnLycrcmVzb3VyY2VJZCsnLycrcmVzb3VyY2VUeXBlKycvJztcclxuICAgICAgICAgIGxldCBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcblxyXG4gICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6IHJlc3BvbnNlLm1zZyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcblxyXG5cclxuICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBNQU5BR0UgUkVTT1VSQ0UgU1VCU0NSSVBUSU9OU1xyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gIENhbGxBcGlHZW5lcmljICAoZW5kX3BvaW50LGh0dHBfbWV0aG9kLGlfZGF0YSkge1xyXG4gICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5zZW5kKGVuZF9wb2ludCxodHRwX21ldGhvZCxpX2RhdGEpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICByZXNwb25zZS5qc29uKCkudGhlbihkYXRhPT57XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IGRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7ZGF0YTogZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTsgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICBwcmVwYXJlUmVzb3VyY2VXaWRnZXREYXRhICAocm93cyxyZXNvdXJjZVJlY29yZElkKVxyXG4gICAge1xyXG4gICAgICBcclxuICAgICAgdmFyIHJlc291cmNlRGF0YSA9IHt9O1xyXG4gICAgICB2YXIgdmFsdWU9XCJcIixmaWVsZElkPVwiXCI7XHJcbiAgICAgIGlmIChyZXNvdXJjZVJlY29yZElkPjApXHJcbiAgICAgIHtcclxuICAgICAgICByZXNvdXJjZURhdGFbJ2lkJ10gPSB7dHlwZToncmVzb3VyY2VJZCcsIHZhbHVlOiByZXNvdXJjZVJlY29yZElkfTtcclxuICAgICAgfVxyXG4gICAgIGZvciAodmFyIGk9MDtpPHJvd3MubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgIGlmICgnbGF5b3V0JyBpbiByb3dzW2ldKVxyXG4gICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7ajxyb3dzW2ldLmxheW91dC5sZW5ndGg7aisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCdsYXlvdXQnIGluIHJvd3NbaV0ubGF5b3V0W2pdKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbD0wO2w8cm93c1tpXS5sYXlvdXRbal0ubGF5b3V0Lmxlbmd0aDtsKyspIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYocm93c1tpXS5sYXlvdXRbal0ubGF5b3V0W2xdLnR5cGU9PSdyZXNvdXJjZWlkJyAmJiByb3dzW2ldLmxheW91dFtqXS5sYXlvdXRbbF0uc0l0ZW1WYWx1ZSE9bnVsbCAmJiByZXNvdXJjZVJlY29yZElkPT0tMSlcclxuICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZURhdGFbJ2lkJ10gPSB7dHlwZToncmVzb3VyY2VJZCcsIHZhbHVlOiByb3dzW2ldLmxheW91dFtqXS5sYXlvdXRbbF0uc0l0ZW1WYWx1ZX07ICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKChyb3dzW2ldLmxheW91dFtqXS5sYXlvdXRbbF0uSXRlbUlkIT1udWxsICYmIHJvd3NbaV0ubGF5b3V0W2pdLmxheW91dFtsXS5zSXRlbVZhbHVlIT11bmRlZmluZWQgJiYgcm93c1tpXS5sYXlvdXRbal0ubGF5b3V0W2xdLnNJdGVtVmFsdWUhPW51bGwgJiYgIXJvd3NbaV0ubGF5b3V0W2pdLmxheW91dFtsXS5ub1VwZGF0ZSkgfHwgKHJvd3NbaV0ubGF5b3V0W2pdLmxheW91dFtsXS5JdGVtSWQhPW51bGwgJiYgcm93c1tpXS5sYXlvdXRbal0ubGF5b3V0W2xdLnR5cGU9PSdyZXNvdXJjZScpKVxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgZmllbGRJZD0nRmllbGQnK3Jvd3NbaV0ubGF5b3V0W2pdLmxheW91dFtsXS5JdGVtSWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSByb3dzW2ldLmxheW91dFtqXS5sYXlvdXRbbF0uc0l0ZW1WYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICBpZiAocm93c1tpXS5sYXlvdXRbal0ubGF5b3V0W2xdLkRidHlwZT09J2ZvcmVpZ25rZXlkZWZpbml0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkSWQ9ZmllbGRJZCsnX2lkJzsvL2NvZGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocm93c1tpXS5sYXlvdXRbal0ubGF5b3V0W2xdLnR5cGU9PSd1c2VyJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHJvd3NbaV0ubGF5b3V0W2pdLmxheW91dFtsXS5zSXRlbVZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocm93c1tpXS5sYXlvdXRbal0ubGF5b3V0W2xdLnNJdGVtVmFsdWUhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSByb3dzW2ldLmxheW91dFtqXS5sYXlvdXRbbF0uc0l0ZW1WYWx1ZS5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlIT1cIlwiICAmJiB2YWx1ZSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlRGF0YVtmaWVsZElkXSA9IHt0eXBlOnJvd3NbaV0ubGF5b3V0W2pdLmxheW91dFtsXS50eXBlLCB2YWx1ZTogdmFsdWUgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYocm93c1tpXS5sYXlvdXRbal0ubGF5b3V0W2xdLnR5cGU9PSdyZXNvdXJjZScpXHJcbiAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlRGF0YVtmaWVsZElkXT17dHlwZTpyb3dzW2ldLmxheW91dFtqXS5sYXlvdXRbbF0udHlwZSx2YWx1ZTp7cmVzb3VyY2VEZWZJZDogcm93c1tpXS5sYXlvdXRbal0ubGF5b3V0W2xdLlJlbGF0ZWQscmVzb3VyY2VJZDpyb3dzW2ldLmxheW91dFtqXS5sYXlvdXRbbF0uVmFsdWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZihyb3dzW2ldLmxheW91dFtqXS5sYXlvdXRbbF0udHlwZT09J2RhdGUnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJvd3NbaV0ubGF5b3V0W2pdLmxheW91dFtsXS51c2VTeXN0ZW1EYXRlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VEYXRhW2ZpZWxkSWRdPXt0eXBlOidzeXN0ZW1kYXRlJyx2YWx1ZTpyb3dzW2ldLmxheW91dFtqXS5sYXlvdXRbbF0uc0l0ZW1WYWx1ZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZURhdGFbZmllbGRJZF09e3R5cGU6cm93c1tpXS5sYXlvdXRbal0ubGF5b3V0W2xdLnR5cGUsdmFsdWU6cm93c1tpXS5sYXlvdXRbal0ubGF5b3V0W2xdLnNJdGVtVmFsdWV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSE9XCJcIiAmJiB2YWx1ZSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlRGF0YVtmaWVsZElkXSA9IHt0eXBlOnJvd3NbaV0ubGF5b3V0W2pdLmxheW91dFtsXS50eXBlLCB2YWx1ZTogdmFsdWUgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlRGF0YTtcclxuICAgICAgXHJcbiAgICB9O1xyXG5cclxuICAvKk1JR09SICAgICBcclxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vICAgICAgICAgICBHRVQgRklMRVMgREFUQVxyXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuXmFwaS8gXmZpbGVzLyg/UDxpZD4uKykvJCBbbmFtZT0nRmlsZXMtbGlzdCddXHJcbiovXHJcblx0Z2V0RmlsZXNEYXRhMSAgKHJlc291cmNlSWQsbGFuZykge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjtcclxuICAgICAgICAgIFxyXG5cdFx0ICB2YXIgdXJsPScuLi9hcGkvZmlsZXMvJytyZXNvdXJjZUlkKycvJztcclxuXHRcdCAgXHJcbiAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ0dldCBmaWxlcyBkYXRhIGZhaWxlZCAhIC0tPiBnZXRGaWxlc0RhdGExJyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvL30pOyAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcblx0XHRcclxuXHRcdC8vIE1JR09SIFNUQVJUXHJcblxyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIE1JR09SIC0gVVBEQVRFIEZJTEUgREFUQVxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgZmlsZU1ldGFVcGRhdGUgKGZpbGVJZCxmaWxlTWV0YURlZklkLHB1Ymxpc2hJZCx0YXNrSW5zdGFuY2VJZCxwcmV2VGFza0lkLHBhcmVudERhdGFzZXREZWZJZCxwYXJlbnREYXRhc2V0SWQsZmlsZVJlc291cmNlRGF0YSxmZCxwYWdlX2lkKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIlBPU1RcIjtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2ZpbGUtbWV0YS1kYXRhLXVwZGF0ZS8nO1xyXG4gICAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgICAgICAgIGlmIChwcmV2VGFza0lkPT11bmRlZmluZWQpIHByZXZUYXNrSWQ9MDtcclxuICAgICAgICAgICAgbGV0IHBvc3RfZGF0YSA9IHsnZmlsZUlkJzpmaWxlSWQsJ2ZpbGVNZXRhRGVmSWQnOmZpbGVNZXRhRGVmSWQsJ3B1Ymxpc2hJZCc6cHVibGlzaElkLCd0YXNrSW5zdGFuY2VJZCc6dGFza0luc3RhbmNlSWQsJ3ByZXZUYXNrSWQnOnByZXZUYXNrSWQsJ3BhcmVudERhdGFzZXREZWZJZCc6cGFyZW50RGF0YXNldERlZklkLCdwYXJlbnREYXRhc2V0SWQnOnBhcmVudERhdGFzZXRJZCwnZmlsZVJlc291cmNlRGF0YSc6ZmlsZVJlc291cmNlRGF0YSwnZmQnOmZkLCdwYWdlSWQnOnBhZ2VfaWR9O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxwb3N0X2RhdGEpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzonRmlsZSBtZXRhZGF0YSB1cGRhdGUgZXJyb3IgKGZuIGZpbGVNZXRhVXBkYXRlKSAtLT4gc3RhdHVzID0gJytyZXNwb25zZS5zdGF0dXMrJyBzdGF0dXNUZXh0ID0gJytyZXNwb25zZS5zdGF0dXNUZXh0KycgJysgcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcbiAgICAgICBcclxuLy8gTUlHT1IgRU5EXHJcblxyXG5cdGdldENvZGVzIChjb2RlX2lkLGxhbmd1YWdlKXtcclxuICAgICAgICAgICAgIHZhciBjb2RlSW5kZXg9LTE7XHJcbiAgICAgICAgICAgICBpZiAoY29kZV9pZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7ICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIHZhciBwb3MgPSBsaXN0T2ZDb2Rlc0J5SWQubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUudW5pcXVlX2lkOyB9KS5pbmRleE9mKGNvZGVfaWQrbGFuZ3VhZ2UpO1xyXG4gICAgICAgICAgICAgIGxldCB1cmwgPSAnLi4vYXBpL2dldC1jb2Rlcy1kZXRhaWwtYnlpZGxhbmcvJysgY29kZV9pZCsnLycrbGFuZ3VhZ2UrJy8nO1xyXG4gICAgICAgICAgICAgIGlmIChwb3M8MCl7XHJcblx0XHRcdFx0ICAvL2lmICBub3QgZm91bmQgLSBkb3dubG9hZFxyXG4gICAgICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsLCB0cnVlKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmV0cml2ZWRMaXN0ID0ge3VuaXF1ZV9pZDogY29kZV9pZCtsYW5ndWFnZSwgaWQ6IGNvZGVfaWQsbGFuZzogbGFuZ3VhZ2UsIGNvZGVMaXN0OiByZXNwb25zZS5kYXRhfTtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgIFx0XHRcdFx0XHQgIGxpc3RPZkNvZGVzQnlJZC5wdXNoKHJldHJpdmVkTGlzdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlSW5kZXg9bGlzdE9mQ29kZXNCeUlkLmxlbmd0aC0xO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZShsaXN0T2ZDb2Rlc0J5SWRbY29kZUluZGV4XS5jb2RlTGlzdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3QocmVzcG9uc2UuZGF0YSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgLy8gfSk7ICAgIFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgIFxyXG5cdFx0XHRcdFxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb2RlSW5kZXg9cG9zO1xyXG4gICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZShsaXN0T2ZDb2Rlc0J5SWRbY29kZUluZGV4XS5jb2RlTGlzdCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG5cdFxyXG4gICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcblx0XHR9O1xyXG5cdFx0ICBcclxuXHJcbn1cclxuIGV4cG9ydCBkZWZhdWx0IFJlc291cmNlc0RhdGFTZXJ2aWNlOyIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogU2V0dGluZ3NTZXJ2aWNlIC0gRVM2IG1vZHVsZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbid1c2Ugc3RyaWN0JztcclxuXHJcbmNsYXNzIFNldHRpbmdzU2VydmljZXtcclxuICAgXHJcbiAgICBcclxuICAgY29uc3RydWN0b3IgKCRxLCRyb290U2NvcGUsUmVzdEFwaVNlcnZpY2UpIHtcclxuICAgICBcclxuICAgICBcclxuICAgICAgdGhpcy5SZXN0QXBpU2VydmljZSA9IFJlc3RBcGlTZXJ2aWNlO1xyXG4gICAgICB0aGlzLiRxPSRxO1xyXG4gICAgICB0aGlzLiRyb290U2NvcGUgPSRyb290U2NvcGU7IFxyXG4gICAgICB0aGlzLmhlbHBQYWdlcz17fVxyXG5cclxuICAgIH1cclxuXHJcbiAgIHN0YXRpYyAkaW5qZWN0ID0gWyckcScsJyRyb290U2NvcGUnLCdSZXN0QXBpU2VydmljZSddO1xyXG4gICAgIFxyXG4gICBnZXRPcmdhbmlzYXRpb25JbmZvIChvcmdhbmlzYXRpb25JZCl7XHJcbiAgICAgXHJcbiAgICAgIGlmIChvcmdhbmlzYXRpb25JZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgIHZhciBpbnN0YW5jZT10aGlzO1xyXG4gICAgICAgICBcclxuICAgICAgICAgbGV0IHVybCA9ICcuLi9hcGkvb3JnYW5pc2F0aW9ucy8nK29yZ2FuaXNhdGlvbklkKycvJztcclxuICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cz09PTIwMCkgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSAsIHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBkZWZlcnJlZC5yZWplY3Qoe2RhdGE6IGRhdGEgLCBzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICB9KTsgICBcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogdGhpcy5saXN0T2ZDb2Rlc0J5TmFtZVtjb2RlX25hbWUrbGFuZ3VhZ2VdLmNvZGVzTGlzdCxzdGF0dXM6MjAwfSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgIH1cclxuICAgICBcclxuXHQgXHJcbiAgIHNhdmVPcmdhbmlzYXRpb25JbmZvIChvcmdhbmlzYXRpb24sIGV4dGVuZGVkPXt9IClcclxuICAge1xyXG4gICAgICBcclxuXHQgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICBpZiAob3JnYW5pc2F0aW9uLmlkICE9IHVuZGVmaW5lZCkgeyAgICBcclxuXHRcdGxldCB1cmwgPSAnLi4vYXBpL29yZ2FuaXNhdGlvbnMvJytvcmdhbmlzYXRpb24uaWQrJy8nO1xyXG5cdFx0dGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxvcmdhbmlzYXRpb24pLnRoZW4ocmVzcG9uc2UgPT57XHRcclxuXHRcdFx0XHRpZiAocmVzcG9uc2Uuc3RhdHVzPT09MjAwKSBkZWZlcnJlZC5yZXNvbHZlKHttc2c6IHJlc3BvbnNlPy5kYXRhPy5tc2cgLCBzdGF0dXM6cmVzcG9uc2U/LnN0YXR1c30pO1xyXG5cdFx0XHRcdCBlbHNlIGRlZmVycmVkLnJlamVjdCh7ZGF0YTogcmVzcG9uc2U/LmRhdGEgLCBzdGF0dXM6cmVzcG9uc2U/LnN0YXR1c30pO1x0XHRcdFx0ICBcdFx0XHJcblx0XHR9KTtcclxuICAgICAgICAgIFxyXG4gICAgICB9IGVsc2UgeyAgIFxyXG4gICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ0Vycm9yID0gPiBNaXNzaW5nIG9yZ2FuaXNhdGlvbiBpZCcsIHN0YXR1czo0MDB9KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgfSBcclxuXHJcbiAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgLy8gICAgICAgICAgIGdldENyZWRpdHNcclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gICAgZ2V0Q3JlZGl0cyAoYmFsYW5jZVR5cGUpe1xyXG4gICAgIFxyXG4gICAgICAgIGlmIChiYWxhbmNlVHlwZSA9PSB1bmRlZmluZWQpICBiYWxhbmNlVHlwZT0ndXNlcidcclxuICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7ICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICB2YXIgaW5zdGFuY2U9dGhpcztcclxuICAgICAgICAgXHJcbiAgICAgICAgbGV0IHVybCA9ICcuLi9hcGkvZ2V0LWNyZWRpdHMvJytiYWxhbmNlVHlwZSsnLyc7XHJcbiAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cz09PTIwMCkgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSAsIHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBkZWZlcnJlZC5yZWplY3Qoe2RhdGE6IGRhdGEgLCBzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgXHJcbiAgICAgXHJcbiAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgfVxyXG4gICAgIGdldEhlbHBQYWdlIChoZWxwSWQpe1xyXG4gICAgIFxyXG4gICAgICAgIGlmICghaGVscElkKSAgaGVscElkPSdtYWluJ1xyXG4gICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgIHZhciBpbnN0YW5jZT10aGlzO1xyXG4gICAgICAgICBcclxuICAgICAgICBsZXQgdXJsID0gJy4uL2FwaS9nZXQtaGVscC1wYWdlLycraGVscElkKycvJztcclxuICAgICAgICBpZiAoIXRoaXMuaGVscFBhZ2VzW2hlbHBJZF0pIHtcclxuICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXM9PT0yMDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWxwUGFnZXNbaGVscElkXSA9IHJlc3BvbnNlLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHRoaXMuaGVscFBhZ2VzW2hlbHBJZF0gLCBzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZGVmZXJyZWQucmVqZWN0KHtkYXRhOiByZXNwb25zZS5kYXRhICwgc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIH0pO1xyXG4gICAgICBcclxuICAgICAgICB9IGVsc2UgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogdGhpcy5oZWxwUGFnZXNbaGVscElkXSAsIHN0YXR1czoyMDB9KTtcclxuXHJcbiAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgfVxyXG5cclxuICAgICBHZW5lcmF0ZUFwaUtleXMgKGFwaV91c2VyKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgICBcclxuICAgICAgICAgICAgICAgICAgICAgdmFyIGluc3RhbmNlID0gdGhpcztcclxuICAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9ICcuLi9hcGkvZ2VuZXJhdGUtYXBpLWtleXMvJztcclxuICAgICAgICAgICAgICAgICAgICAgbGV0IHBvc3RfZGF0YSA9IHsnYXBpX2lkJzphcGlfdXNlcn07XHJcbiAgICAgICAgICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwscG9zdF9kYXRhKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cz09PTIwMCkgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTpyZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGRlZmVycmVkLnJlamVjdCh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuIFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgR2V0S3R5bG9CYWxhbmNlIChhZGRyZXNzKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSAnLi4vYXBpL2dldC1rdGx5by1iYWxhbmNlLyc7XHJcbiAgICAgICAgICAgICAgICAgICAgIGxldCBwb3N0X2RhdGEgPSB7YWRkcmVzc307XHJcbiAgICAgICAgICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwscG9zdF9kYXRhKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXM9PT0yMDApIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6cmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGRlZmVycmVkLnJlamVjdCh7ZGF0YTpyZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gXHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICBTYXZlQmxvY2tjaGFpbkFjY291bnQgKGFkZHJlc3MpIHtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyAgIFxyXG4gICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gJy4uL2FwaS9zYXZlLWV0aC1hY2NvdW50Lyc7XHJcbiAgICAgICAgICAgICAgICAgICAgIGxldCBwb3N0X2RhdGEgPSB7YWRkcmVzc307XHJcbiAgICAgICAgICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwscG9zdF9kYXRhKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzPT09MjAwKSBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOnJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBkZWZlcnJlZC5yZWplY3Qoe2RhdGE6cmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiBcclxuICAgICAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBTZXR0aW5nc1NlcnZpY2U7IiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBLYXRhbHlvU3RhdGVNYW5hZ2VyICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuJ3VzZSBzdHJpY3QnO1xyXG5cclxuaW1wb3J0IGtzbSBmcm9tICcuLi8wMDAzX2xpYnMva3Qtc3RhdGUtbWFuYWdlci5qcyc7IFxyXG5cclxuY2xhc3MgS2F0YWx5b1N0YXRlTWFuYWdlclNlcnZpY2V7XHJcblxyXG4gIGNvbnN0cnVjdG9yKClcclxuICB7XHJcbiAgICAgXHJcbiAgICAgICB0aGlzLnNtQ29sbGVjdGlvbiA9IGtzbSgpO1xyXG4gIH1cclxuXHJcbiAgYWRkU3ViamVjdCAobmFtZSxzdGF0ZV9vYmplY3QpXHJcbiAge1xyXG4gICAgbGV0IHN1YmplY3QgPSB0aGlzLnNtQ29sbGVjdGlvbi5jcmVhdGVTdWJqZWN0KG5hbWUsc3RhdGVfb2JqZWN0KTtcclxuICAgIC8vdmFyIHN0YXR1cyA9IHNlcnZpY2Uuc21Db2xsZWN0aW9uLmFkZFN1YmplY3Qoc3ViamVjdCk7XHJcbiAgICByZXR1cm4gc3ViamVjdDtcclxuICB9O1xyXG4gIFxyXG4gICBnZXRTdGF0ZSAobmFtZSlcclxuICB7XHJcbiAgICBsZXQgc3RhdGUgPSB0aGlzLnNtQ29sbGVjdGlvbi5nZXRTdGF0ZShuYW1lKTtcclxuICAgIC8vdmFyIHN0YXR1cyA9IHNlcnZpY2Uuc21Db2xsZWN0aW9uLmFkZFN1YmplY3Qoc3ViamVjdCk7XHJcbiAgICByZXR1cm4gc3RhdGU7XHJcbiAgfTtcclxuICBcclxuICBhZGRBY3Rpb24gKHN1YmplY3ROYW1lLGFjdGlvbk5hbWUsZm5Ub0NhbGwpXHJcbiAge1xyXG4gICAgbGV0IGFjdGlvbiA9IHRoaXMuc21Db2xsZWN0aW9uLmFkZEFjdGlvbihzdWJqZWN0TmFtZSxhY3Rpb25OYW1lLGZuVG9DYWxsKTtcclxuICAgIC8vdmFyIHN0YXR1cyA9IHNlcnZpY2Uuc21Db2xsZWN0aW9uLmFkZFN1YmplY3Qoc3ViamVjdCk7XHJcbiAgICByZXR1cm4gYWN0aW9uO1xyXG4gIH07XHJcbiBcclxuICBnZXRTdWJqZWN0IChzdWJqZWN0TmFtZSlcclxuICB7XHJcbiAgICBcclxuICAgIFxyXG4gICAgbGV0IHN1YmplY3QgPSB0aGlzLnNtQ29sbGVjdGlvbi5nZXRTdWJqZWN0KHN1YmplY3ROYW1lKTtcclxuICAgIFxyXG4gICAgcmV0dXJuIHN1YmplY3Q7XHJcbiAgfTtcclxuICBcclxuICBleGVjdXRlQWN0aW9uIChzdWJqZWN0TmFtZSxhY3Rpb25OYW1lLGRhdGEpXHJcbiAge1xyXG4gICAgXHJcbiAgICBsZXQgYWN0aW9uO1xyXG4gICAgbGV0IHN1YmplY3QgPSB0aGlzLnNtQ29sbGVjdGlvbi5nZXRTdWJqZWN0KHN1YmplY3ROYW1lKTtcclxuICAgIFxyXG4gICAgaWYgKHN1YmplY3QhPT11bmRlZmluZWQpXHJcbiAgICB7XHJcbiAgICAgICBhY3Rpb24gPSBzdWJqZWN0LmV4ZWN1dGVBY3Rpb24oYWN0aW9uTmFtZSxkYXRhKTtcclxuICAgIH1cclxuICAgXHJcbiAgICAvL3ZhciBzdGF0dXMgPSBzZXJ2aWNlLnNtQ29sbGVjdGlvbi5hZGRTdWJqZWN0KHN1YmplY3QpO1xyXG4gICAgcmV0dXJuIGFjdGlvbjtcclxuICB9O1xyXG4gIHN1YnNjcmliZSAoc3ViamVjdE5hbWUsb2JzZXJ2ZXJOYW1lLGFjdGlvbk5hbWUsZGF0YSxvdmVycmlkZSlcclxuICB7XHJcbiAgICBcclxuICAgIGxldCBhY3Rpb24sb2JzZXJ2ZXI7XHJcbiAgICBsZXQgc3ViamVjdCA9IHRoaXMuc21Db2xsZWN0aW9uLmdldFN1YmplY3Qoc3ViamVjdE5hbWUpO1xyXG4gICAgXHJcbiAgICBpZiAoc3ViamVjdCE9PXVuZGVmaW5lZClcclxuICAgIHtcclxuICAgICAgIG9ic2VydmVyID0gc3ViamVjdC5zdWJzY3JpYmUob2JzZXJ2ZXJOYW1lLGFjdGlvbk5hbWUsZGF0YSxvdmVycmlkZSk7XHJcbiAgICB9ZWxzZVxyXG4gICAge1xyXG4gICAgIGxldCBzdWJzY3JpcHRpb24gPSB7J3N1YmplY3QnOnN1YmplY3ROYW1lLCdvYnNlcnZlcic6b2JzZXJ2ZXJOYW1lLCdhY3Rpb24nOmFjdGlvbk5hbWUsJ2RhdGEnOmRhdGEsJ292ZXJyaWRlJzpvdmVycmlkZX07XHJcbiAgICAgbGV0IHBlbmRpbmcgPSB0aGlzLnNtQ29sbGVjdGlvbi5hZGRQZW5kaW5nT2JzZXJ2ZXJTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uKTtcclxuICAgICByZXR1cm4gcGVuZGluZztcclxuICAgIH1cclxuICAgXHJcbiAgICAvL3ZhciBzdGF0dXMgPSBzZXJ2aWNlLnNtQ29sbGVjdGlvbi5hZGRTdWJqZWN0KHN1YmplY3QpO1xyXG4gICAgcmV0dXJuIG9ic2VydmVyO1xyXG4gIH07IFxyXG5cclxuICBzdWJzY3JpYmVXaXRoUGFyYW1zIChzdWJqZWN0TmFtZSxvYnNlcnZlck5hbWUsYWN0aW9uTmFtZSxkYXRhLG92ZXJyaWRlLGlucHV0UGFyYW1zKVxyXG4gIHtcclxuICAgIFxyXG4gICAgbGV0IGFjdGlvbixvYnNlcnZlcjtcclxuICAgIGxldCBzdWJqZWN0ID0gdGhpcy5zbUNvbGxlY3Rpb24uZ2V0U3ViamVjdChzdWJqZWN0TmFtZSk7XHJcbiAgICBcclxuICAgIGlmIChzdWJqZWN0IT09dW5kZWZpbmVkKVxyXG4gICAge1xyXG4gICAgICAgb2JzZXJ2ZXIgPSBzdWJqZWN0LnN1YnNjcmliZShvYnNlcnZlck5hbWUsYWN0aW9uTmFtZSxkYXRhLG92ZXJyaWRlLGlucHV0UGFyYW1zKTtcclxuICAgIH1lbHNlXHJcbiAgICB7XHJcbiAgICAgbGV0IHN1YnNjcmlwdGlvbiA9IHsnc3ViamVjdCc6c3ViamVjdE5hbWUsJ29ic2VydmVyJzpvYnNlcnZlck5hbWUsJ2FjdGlvbic6YWN0aW9uTmFtZSwnZGF0YSc6ZGF0YSwnaW5wdXRQYXJhbXMnOmlucHV0UGFyYW1zLCdvdmVycmlkZSc6b3ZlcnJpZGV9O1xyXG4gICAgIGxldCBwZW5kaW5nID0gdGhpcy5zbUNvbGxlY3Rpb24uYWRkUGVuZGluZ09ic2VydmVyU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbik7XHJcbiAgICAgcmV0dXJuIHBlbmRpbmc7XHJcbiAgICB9XHJcbiAgIFxyXG4gICAgLy92YXIgc3RhdHVzID0gc2VydmljZS5zbUNvbGxlY3Rpb24uYWRkU3ViamVjdChzdWJqZWN0KTtcclxuICAgIHJldHVybiBvYnNlcnZlcjtcclxuICB9OyBcclxuICB1bmRvX3JlZG8gKHN1YmplY3ROYW1lLGFjdGlvblR5cGUpXHJcbiAge1xyXG4gICAgbGV0IGN1cnJlbnRJbmRleCA9IC0xO1xyXG4gICAgbGV0IHN1YmplY3QgPSB0aGlzLnNtQ29sbGVjdGlvbi5nZXRTdWJqZWN0KHN1YmplY3ROYW1lKTtcclxuICAgIGlmIChzdWJqZWN0IT09dW5kZWZpbmVkKVxyXG4gICAge1xyXG4gICAgICBpZiAoYWN0aW9uVHlwZSA9PT0gJ3VuZG8nKSBjdXJyZW50SW5kZXg9IHN1YmplY3QudW5kbygpO1xyXG4gICAgICBpZiAoYWN0aW9uVHlwZSA9PT0gJ3JlZG8nKSBjdXJyZW50SW5kZXg9IHN1YmplY3QucmVkbygpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGN1cnJlbnRJbmRleDtcclxuICB9O1xyXG59XHJcbiBleHBvcnQgZGVmYXVsdCBLYXRhbHlvU3RhdGVNYW5hZ2VyU2VydmljZTsiLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFRhc2tEYXRhU2VydmljZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbid1c2Ugc3RyaWN0JztcclxuXHJcbmNsYXNzIFRhc2tEYXRhU2VydmljZXtcclxuXHJcbiAgY29uc3RydWN0b3IoJHEsJHJvb3RTY29wZSxNZXNzYWdpbmdTZXJ2aWNlLFJlc3RBcGlTZXJ2aWNlKVxyXG4gIHtcclxuICAgICAgdGhpcy5jYWNoZSA9IHt9O1xyXG4gICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlID0gUmVzdEFwaVNlcnZpY2U7XHJcbiAgICAgIHRoaXMuJHE9JHE7XHJcbiAgICAgIHRoaXMuJHJvb3RTY29wZSA9JHJvb3RTY29wZTtcclxuICAgICAgdGhpcy5NZXNzYWdpbmdTZXJ2aWNlID1NZXNzYWdpbmdTZXJ2aWNlO1xyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgICAgXHJcbiAgfVxyXG4gICAgc3RhdGljICRpbmplY3QgPSBbJyRxJywnJHJvb3RTY29wZScsJ01lc3NhZ2luZ1NlcnZpY2UnLCdSZXN0QXBpU2VydmljZSddO1xyXG4gXHJcbiAgICBcclxuXHQgIEdldFRhc2tQYXJhbWV0ZXJzICh0YXNrSWQpIHtcclxuICAgICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiXCI7XHJcbiAgICAgICAgICB2YXIgdXJsPScuLi9hcGkvdGFzay1wYXJhbWV0ZXJzLWJ5cmVzb3VyY2VpZC8nO1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICBcclxuICAgICAgICAgIGh0dHBfbWV0aG9kPVwiR0VUXCI7XHJcbiAgICAgICAgICBpZiAodGFza0lkIT11bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdXJsPXVybCt0YXNrSWQrJy8nO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7ICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHJlc3BvbnNlLmRhdGEpOyAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzpcIkRhdGEgZG93bmxvYWQgZmFpbGVkIC0tPiBHZXRUYXNrUGFyYW1ldGVycyBcIityZXNwb25zZS5zdGF0dXMsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcj0+e1xyXG4gICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOlwiR2V0VGFza1BhcmFtZXRlcnM6XCIrZXJyb3IubXNnLHN0YXR1czplcnJvci5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9OyAgXHJcbiAgXHJcbiAgXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIFNBVkUgVEFTSyBQQVJBTUVUUlNcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBTYXZlVGFza1BhcmFtZXRlcnMgICh0YXNrSWQsdGFza1BhcmFtZXRlcnMpIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiUE9TVFwiO1xyXG4gICAgICAgICAgdmFyIHRhc2tJZExvY2FsPVwiXCI7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmICh0YXNrSWQhPXVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAvL2NvZGVcclxuICAgICAgICAgICAgdGFza0lkTG9jYWw9dGFza0lkK1wiL1wiO1xyXG4gICAgICAgICAgICBodHRwX21ldGhvZD1cIlBVVFwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS90YXNrLXBhcmFtZXRlcnMvJyt0YXNrSWRMb2NhbDtcclxuICAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5zZW5kKHVybCxodHRwX21ldGhvZCx0YXNrUGFyYW1ldGVycykudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuanNvbigpLnRoZW4oZGF0YT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZShkYXRhKTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgeyAgLy8gaWYgbm90IHN1Y2Nlc3NmdWwsIGJpbmQgZXJyb3JzIHRvIGVycm9yIHZhcmlhYmxlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbXNnX3ZhciA9ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5tc2c9PXVuZGVmaW5lZCkgbXNnX3Zhcj0nRXJyb3Igc2F2aW5nIHRhc2sgcGFyYW1ldGVycyAoU2F2ZVRhc2tQYXJhbWV0ZXJzKSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgbXNnX3ZhciA9IHJlc3BvbnNlLm1zZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzptc2dfdmFyLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9O1xyXG4gXHJcbiAgXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBPVVRDT01FIERFRklOSVRJT05cclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBHZXRPdXRjb21lRGVmaW5pdGlvbiAgKG91dGNvbWVEZWZpbml0aW9uSWQsbGFuZykge1xyXG4gICAgXHJcbiAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiR0VUXCI7XHJcbiAgICAgICAgICBcclxuICAgICAgICB2YXIgdXJsPScuLi9hcGkvdGFzay1vdXRjb21lLWRlZmluaXRpb24vJytvdXRjb21lRGVmaW5pdGlvbklkKycvJytsYW5nKycvJztcclxuICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgICBcclxuICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnNlbmQodXJsLGh0dHBfbWV0aG9kLGNvZGVzRGV0YWlsTGFuZykudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKGRhdGE9PntcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKGRhdGEpOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIGlmIG5vdCBzdWNjZXNzZnVsLCBiaW5kIGVycm9ycyB0byBlcnJvciB2YXJpYWJsZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6XCJEYXRhIGRvd25sb2FkIGZhaWxlZCAtLT4gR2V0T3V0Y29tZURlZmluaXRpb24gXCIrcmVzcG9uc2Uuc3RhdHVzLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pOyAgICBcclxuICAgICAgICB9KTsgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgfTtcclxuICAgXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIFNBVkUgT1VUQ09NRSBERUZJTklUSU9OXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgU2F2ZU91dGNvbWVEZWZpbml0aW9uICAob3V0Y29tZV9oZWFkKSB7XHJcbiAgICBcclxuICAgICAgICB2YXIgaWQ9MDtcclxuXHJcbiAgICAgICAgaWYgKG91dGNvbWVfaGVhZC5pZCE9bnVsbCAmJiBvdXRjb21lX2hlYWQuaWQhPXVuZGVmaW5lZCkgaWQgPSBvdXRjb21lX2hlYWQuaWQ7XHJcbiAgICAgICAgdmFyIHVybD0nLi4vYXBpL3Rhc2stb3V0Y29tZS1kZWZpbml0aW9uLycraWQrJy8nK291dGNvbWVfaGVhZC5MYW5nKycvJztcclxuICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgICBcclxuICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsLG91dGNvbWVfaGVhZCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzonU2F2ZSBvdXRjb21lIGRlZmluaXRpb24gZmFpbGVkICEnLCBzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgIH0pO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgfTtcclxuICAgXHJcbiAgICAgICAgICAgICAgICBcclxuIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBHRVQgVEFTSyBPVVRDT01FUyBERUZJTklUSU9OU1xyXG4gIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gICAgR2V0VGFza091dGNvbWVzRGVmICAobGFuZykge1xyXG4gICAgXHJcbiAgICAgICAgdmFyIHVybD0nLi4vYXBpL2dldC10YXNrLW91dGNvbWVzLWRlZi8nK2xhbmcrJy8nO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6cmVzcG9uc2UuZGF0YSxtc2c6J1Rhc2sgb3V0Y29tZXMgc2F2ZWQgc3VjY2Vzc2Z1bGx5ICEgJytyZXNwb25zZS5zdGF0dXMrJyAnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J0dldCB0YXNrIG91dGNvbWVzIGRlZiBmYWlsZWQgISAtLT4gR2V0VGFza091dGNvbWVzRGVmJyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICB9KTtcclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07XHJcbiAgIFxyXG4gLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBUQVNLIE9VVENPTUVTXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgR2V0VGFza091dGNvbWVzICAodGFza0lkLGNvZGVJZCxsYW5nKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIkdFVFwiO1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2dldC10YXNrLW91dGNvbWVzLWRldGFpbHMvJztcclxuICAgICAgICAgIHZhciB0YXNrSWRMb2NhbD1cIlwiO1xyXG4gICAgICAgICAgIGlmICh0YXNrSWQhPXVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAvL2NvZGVcclxuICAgICAgICAgICAgdGFza0lkTG9jYWw9dGFza0lkK1wiL1wiK2NvZGVJZCtcIi9cIitsYW5nK1wiL1wiO1xyXG4gICAgICAgICAgICB1cmwgPSB1cmwrdGFza0lkTG9jYWw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6cmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOidHZXQgdGFzayBvdXRjb21lcyBmYWlsZWQgISAtLT4gR2V0VGFza091dGNvbWVzJyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgfTsgICAgXHJcbiAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgU0FWRSBUQVNLIE9VVENPTUVTXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgU2F2ZVRhc2tPdXRjb21lcyAgKHRhc2tJZCxoYXNPdXRjb21lcyxvdXRjb21lcyxsYW5nKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIlBPU1RcIjtcclxuXHJcbiAgICAgICAgICBpZiAodGFza0lkPT11bmRlZmluZWQpIFxyXG4gICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOidTYXZlIHRhc2sgb3V0Y29tZXMgZmFpbGVkOiB0YXNrSUQgdW5kZWZpbmVkJywgc3RhdHVzOjUwMH0pO1xyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9zYXZlLXRhc2stb3V0Y29tZXMvJyt0YXNrSWQrJy8nK2xhbmcrJy8nO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgbGV0IHBvc3RfZGF0YSA9IHsnb3V0Y29tZXMnOm91dGNvbWVzLCdoYXNPdXRjb21lcyc6aGFzT3V0Y29tZXN9OyAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwscG9zdF9kYXRhKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLG1zZzonVGFzayBvdXRjb21lcyBzYXZlZCBzdWNjZXNzZnVsbHkgISAnLCBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J1NhdmUgdGFzayBvdXRjb21lc291dGNvbWUgIGZhaWxlZCAhIC0tPiBTYXZlVGFza091dGNvbWVzJywgc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgfSAgICAgXHJcbiAgICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBTQVZFIFRBU0sgU1RBVFVTRVNcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBTYXZlVGFza1N0YXR1c2VzICAodGFza0lkLGNvZGVzQWN0aW9ucyxjb2RlTmFtZSkge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJQT1NUXCI7XHJcbiAgICAgICAgICB2YXIgcGFyYW1ldGVycz1cIlwiO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZiAodGFza0lkIT11bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgLy9jb2RlXHJcbiAgICAgICAgICAgIHBhcmFtZXRlcnM9dGFza0lkK1wiL1wiK2NvZGVOYW1lKycvJztcclxuICAgICAgICAgICAvLyBodHRwX21ldGhvZD1cIlBPU1RcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgdXJsPScuLi9hcGkvc2F2ZS10YXNrLWNvZGVzLWFjdGlvbnMvJytwYXJhbWV0ZXJzO1xyXG4gICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCBwb3N0X2RhdGEgPSBjb2Rlc0FjdGlvbnM7ICAgICBcclxuICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxwb3N0X2RhdGEpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOnJlc3BvbnNlLmRhdGEsIG1zZzonVGFzayBzdGF0dXNlcyBzYXZlZCBzdWNjZXNzZnVsbHkgISAnLCBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J1NhdmUgdGFzayBzdGF0dXMgIGZhaWxlZCAhIC0tPiBTYXZlVGFza1N0YXR1c2VzJywgc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIFNBVkUgVEFTSyBBU1NJR05NRU5UU1xyXG4gIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gIFNhdmVUYXNrQXNzaWdubWVudHMgICh0YXNrQXNzaWdubWVudHMsdGFza0lkLHNlbGZBc3NpZ25lZCxwdWJsaWNUYXNrLHVuaXF1ZU5hbWUsYXNzaWduVHlwZSx0YXNrVHlwZSkge1xyXG4gICAgXHJcbiAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiUE9TVFwiO1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIHZhciB1cmw9Jy4uL2FwaS9zYXZlLXRhc2stYXNzaWdubWVudHMvJyt0YXNrSWQrJy8nK2Fzc2lnblR5cGUrJy8nO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuICAgICAgICAgIFxyXG4gICAgICAgIGxldCBwb3N0X2RhdGEgPSB7J3RhJzp0YXNrQXNzaWdubWVudHMsJ1NlbGZBc3NpZ25lZCc6c2VsZkFzc2lnbmVkLCdQdWJsaWNUYXNrJzpwdWJsaWNUYXNrLCdVbmlxdWVOYW1lJzp1bmlxdWVOYW1lLCd0YXNrVHlwZSc6dGFza1R5cGV9OyAgICAgXHJcbiAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxwb3N0X2RhdGEpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHttc2c6cmVzcG9uc2UuZGF0YS5tc2csIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzpyZXNwb25zZS5kYXRhLm1zZywgc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBUQVNLIEVYRUNVVEUgREFUQVxyXG4gIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gIEdldFRhc2tFeGVjdXRlRGF0YSAgKHRhc2tJbnN0YW5jZUlkLGxhbmcpIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2dldC10YXNrLWV4ZWN1dGUtZGF0YS8nO1xyXG4gICAgICAgICAgdmFyIHRhc2tJZExvY2FsPVwiXCI7XHJcbiAgICAgICAgICBpZiAodGFza0luc3RhbmNlSWQhPXVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAvL2NvZGVcclxuICAgICAgICAgICAgdGFza0lkTG9jYWw9dGFza0luc3RhbmNlSWQrXCIvXCIrbGFuZytcIi9cIjtcclxuICAgICAgICAgICAgdXJsID0gdXJsK3Rhc2tJZExvY2FsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxKSB7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzpcIkdldCB0YXNrIGV4ZWN1dGUgZGF0YSBmYWlsZWQhIC0tPiBHZXRUYXNrRXhlY3V0ZURhdGFcIiwgc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgfTtcclxuICAgICAgXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBUQVNLIEFTU0lHTk1FTlRTXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgR2V0VGFza0Fzc2lnbm1lbnRzICAodGFza0lkKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIkdFVFwiO1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL3Rhc2stYXNzaWdubWVudC1ieXJlc291cmNlaWQvJztcclxuICAgICAgICAgIHZhciB0YXNrSWRMb2NhbD1cIlwiO1xyXG4gICAgICAgICAgIGlmICh0YXNrSWQhPXVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAvL2NvZGVcclxuICAgICAgICAgICAgdGFza0lkTG9jYWw9dGFza0lkK1wiL1wiO1xyXG4gICAgICAgICAgICB1cmwgPSB1cmwrdGFza0lkTG9jYWw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSkge1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6XCJHZXQgdGFzayBhc3NpZ25tZW50cyBmYWlsZWQhIC0tPiBHZXRUYXNrQXNzaWdubWVudHNcIiwgc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAvL30pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICB9O1xyXG5cclxuIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBHRVQgVEFTSyBPVVRDT01FU1xyXG4gIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gIEdldFRhc2tDb2Rlc0FjdGlvbnNCeUlkICAodGFza0lkLGxhbmcsY29kZUlkKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIkdFVFwiO1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2dldC10YXNrLWNvZGVzLWFjdGlvbnMtYnlpZC8nO1xyXG4gICAgICAgICAgdmFyIHRhc2tJZExvY2FsPVwiXCI7XHJcbiAgICAgICAgICAgaWYgKHRhc2tJZCE9dW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIC8vY29kZVxyXG4gICAgICAgICAgICB0YXNrSWRMb2NhbD10YXNrSWQrXCIvXCIrbGFuZytcIi9cIitjb2RlSWQrXCIvXCI7XHJcbiAgICAgICAgICAgIHVybCA9IHVybCt0YXNrSWRMb2NhbDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEpIHtcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOlwiR2V0IHRhc2sgY29kZXMgYWN0aW9ucyBmYWlsZWQhIC0tPiBHZXRUYXNrQ29kZXNBY3Rpb25zQnlJZFwiLCBzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07XHJcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBHRVQgQ09ERVMgQUNUSU9OIEJZIE5BTUVcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBHZXRUYXNrQ29kZXNBY3Rpb25zQnlOYW1lICAodGFza0lkLGxhbmcsY29kZU5hbWUpIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiR0VUXCI7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgdXJsPScuLi9hcGkvZ2V0LXRhc2stY29kZXMtYWN0aW9ucy1ieW5hbWUvJztcclxuICAgICAgICAgIHZhciB0YXNrSWRMb2NhbD1cIlwiO1xyXG4gICAgICAgICAgIGlmICh0YXNrSWQhPXVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAvL2NvZGVcclxuICAgICAgICAgICAgdGFza0lkTG9jYWw9dGFza0lkK1wiL1wiK2xhbmcrXCIvXCIrY29kZU5hbWUrXCIvXCI7XHJcbiAgICAgICAgICAgIHVybCA9IHVybCArIHRhc2tJZExvY2FsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4oXHJcbiAgICAgICAgICByZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7ICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ0dldCB0YXNrIGNvZGVzIGFjdGlvbnMgZmFpbGVkICEgLS0+IEdldFRhc2tDb2Rlc0FjdGlvbnNCeU5hbWUnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I9PntcclxuICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ0dldCB0YXNrIGNvZGVzIGFjdGlvbnMgZmFpbGVkICEgLS0+IEdldFRhc2tDb2Rlc0FjdGlvbnNCeU5hbWUnLHN0YXR1czplcnJvci5zdGF0dXN9KTsgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICB9O1xyXG4gICAgICAgIFxyXG4gIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBHRVQgSU5JVElBVEVEIFRBU0tTXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgZ2V0SW5pdGlhdGVkVGFza3MgICh0eXBlLGZpbHRlcikge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIGxhbmc9dGhpcy4kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2dldC1pbml0aWF0ZWQtdGFza3MvJyt0eXBlKycvJytmaWx0ZXIrJy8nK2xhbmcrJy8nO1xyXG4gICAgICAgICBcclxuICAgICAgICAgIC8vY29uc29sZS5sb2cobmV3IERhdGUoKSk7ICAgICAgICBcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdHZXQgaW5pdGlhdGVkIHRhc2tzIGZhaWxlZCAhIC0tPiBnZXRJbml0aWF0ZWRUYXNrcycsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vfSk7ICAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07XHJcbiAgXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBJTklUSUFURUQgVEFTSyBQQUdJTkFURURcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBnZXRJbml0aWF0ZWRUYXNrc1BhZ2luYXRlZCAgKHR5cGUsZmlsdGVyLHVybF9uZXh0LHVybF9wcmV2LG5ld19wYWdlLHBhZ2Vfc2l6ZSkge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIGxhbmc9dGhpcy4kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2dldC1pbml0aWF0ZWQtdGFza3MvJyt0eXBlKycvJytmaWx0ZXIrJy8nK2xhbmcrJy8nO1xyXG4gICAgICAgICAgaWYgKG5ld19wYWdlIT1cIlwiICYmIG5ld19wYWdlIT11bmRlZmluZWQpXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHVybCA9IHVybCsnP3BhZ2U9JytuZXdfcGFnZVxyXG4gICAgICAgICAgICBpZiAocGFnZV9zaXplIT1cIlwiICYmIHBhZ2Vfc2l6ZSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHVybCA9IHVybCsnJnBhZ2Vfc2l6ZT0nK3BhZ2Vfc2l6ZVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICBcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgYmluZCBzdWNjZXNzIG1lc3NhZ2UgdG8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiAnR2V0IGluaXRpYXRlZCB0YXNrcyBmYWlsZWQgISAtLT4gZ2V0SW5pdGlhdGVkVGFza3NQYWdpbmF0ZWQnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL30pOyAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07XHJcbiAgICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBHRVQgSU5JVElBVEVEIFRBU0sgUEFHSU5BVEVEIEZJTFRFUkVEXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgZ2V0SW5pdGlhdGVkVGFza3NQYWdpbmF0ZWRGaWx0ZXJlZCAgKHR5cGUsZmlsdGVyLHVybF9uZXh0LHVybF9wcmV2LG5ld19wYWdlLHBhZ2Vfc2l6ZSxmX2ZpbHRlcikge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJQT1NUXCI7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciBsYW5nPXRoaXMuJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9nZXQtaW5pdGlhdGVkLXRhc2tzLWZpbHRlcmVkLycrdHlwZSsnLycrZmlsdGVyKycvJytsYW5nKycvJztcclxuICAgICAgICAgIGlmIChuZXdfcGFnZSE9XCJcIiAmJiBuZXdfcGFnZSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB1cmwgPSB1cmwrJz9wYWdlPScrbmV3X3BhZ2VcclxuICAgICAgICAgICAgaWYgKHBhZ2Vfc2l6ZSE9XCJcIiAmJiBwYWdlX3NpemUhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICB1cmwgPSB1cmwrJyZwYWdlX3NpemU9JytwYWdlX3NpemVcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgXHJcbiAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxmX2ZpbHRlcikudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcclxuICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gIFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICBcclxuICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgfTtcclxuICBcclxuICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKiBQUkUtSU5JVElUQVRFIFRBU0sgICoqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAgICAgXHJcbiAgcHJlSW5pdGlhdGVUYXNrICAodGFza0lkLHByZXZUYXNrLGxhbmcscHJldlRhc2tQYWNrYWdlKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIlBPU1RcIjtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9wcmUtaW5pdGlhdGUtdGFzay8nK3Rhc2tJZCsnLycrcHJldlRhc2srJy8nK2xhbmcrJy8nO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBsZXQgcG9zdF9kYXRhPSB7J3B0cCc6cHJldlRhc2tQYWNrYWdlfTtcclxuICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCxwb3N0X2RhdGEpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOidQcmUgaW5pdGlhdGUgdGFzayBmYWlsZWQgISAtLT4gcHJlSW5pdGlhdGVUYXNrJyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07XHJcbiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqIElOSVRJVEFURSBUQVNLICAqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gICAgIFxyXG4gIEluaXRpYXRlVGFzayAgKHRhc2tJZCx0cmFuc2FjdGlvbklkLHRhc2tEYXRhLHBvdGVudGlhbE93bmVycyxkYXRhc2V0SWQsZGF0YXNldFJlY29yZElkLGxhbmcpIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiUE9TVFwiO1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2luaXRpYXRlLXRhc2svJyt0YXNrSWQrJy8nK3RyYW5zYWN0aW9uSWQrJy8nK2RhdGFzZXRJZCsnLycrZGF0YXNldFJlY29yZElkKycvJzsgXHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBsZXQgcG9zdF9kYXRhID0gIHsndGFza0RhdGEnOnRhc2tEYXRhLCdwb3RlbnRpYWxPd25lcnMnOnBvdGVudGlhbE93bmVyc307XHJcbiAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsLHBvc3RfZGF0YSkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J0luaXRpYXRlIHRhc2sgZXJyb3IgKGZuIEluaXRpYXRlVGFzaykgLS0+IHN0YXR1cyA9ICcrcmVzcG9uc2Uuc3RhdHVzKycgc3RhdHVzVGV4dCA9ICcrcmVzcG9uc2Uuc3RhdHVzVGV4dCsnICcrIHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICB9O1xyXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKiogUFJFLUVYRUNVVEUgVEFTSyAgKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovICAgICBcclxuICBwcmVFeGVjdXRlVGFzayAgKHRhc2tJbml0aWF0ZUlkLHRhc2tFeGVjdXRlSWQsbGFuZykge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9wcmUtZXhlY3V0ZS10YXNrLycrdGFza0luaXRpYXRlSWQrJy8nK3Rhc2tFeGVjdXRlSWQrJy8nK2xhbmcrJy8nO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J1ByZS1leGVjdXRlIHRhc2sgZmFpbGVkICEgLS0+IHByZUV4ZWN1dGVUYXNrJyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIC8vIH0pOyAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgLy8gICAgICAgICAgIEdFVCBUQVNLIFZJRVcgUkVTT1VSQ0UgXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICAgIEdldFRhc2tWaWV3UmVzb3VyY2UgICh3aWRnZXRJZCxwYWdlSWQsdGFza0RlZklkLHRhc2tJbnN0YW5jZUlkLHJlc291cmNlSW5zdGFuY2VJZCxmb3JtVHlwZSxkYXRhc2V0RGVmSWQsZGF0YXNldFJlY29yZElkLHJlc291cmNlVmVyc2lvbikge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjtcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9nZXQtdGFzay12aWV3LXJlc291cmNlLycrd2lkZ2V0SWQrJy8nK3BhZ2VJZCsnLycrdGFza0RlZklkKycvJyt0YXNrSW5zdGFuY2VJZCsnLycrcmVzb3VyY2VJbnN0YW5jZUlkKycvJytmb3JtVHlwZSsnLycrZGF0YXNldERlZklkKycvJytkYXRhc2V0UmVjb3JkSWQrJy8nK3Jlc291cmNlVmVyc2lvbisnLyc7XHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gXHJcbiAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHsgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdHZXQgdGFzayB2aWV3IHJlc291cmNlICEgLS0+IEdldFRhc2tWaWV3UmVzb3VyY2UnICsgcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAvLyAgICAgICAgICAgR0VUIFRBU0sgVklFVyBSRVNPVVJDRSBcclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gICAgR2V0VGFza1VwZGF0ZVJlc291cmNlICAod2lkZ2V0SWQscGFnZUlkLHRhc2tEZWZJZCx0YXNrSW5zdGFuY2VJZCxyZXNvdXJjZUluc3RhbmNlSWQsZm9ybVR5cGUsZGF0YXNldERlZklkLGRhdGFzZXRSZWNvcmRJZCxyZXNvdXJjZVZlcnNpb24pIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiR0VUXCI7XHJcbiAgICAgICAgICB2YXIgdXJsPScuLi9hcGkvZ2V0LXRhc2stdXBkYXRlLXJlc291cmNlLycrd2lkZ2V0SWQrJy8nK3BhZ2VJZCsnLycrdGFza0RlZklkKycvJyt0YXNrSW5zdGFuY2VJZCsnLycrcmVzb3VyY2VJbnN0YW5jZUlkKycvJytmb3JtVHlwZSsnLycrZGF0YXNldERlZklkKycvJytkYXRhc2V0UmVjb3JkSWQrJy8nK3Jlc291cmNlVmVyc2lvbisnLyc7XHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gXHJcbiAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHsgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdHZXQgdGFzayB1cGRhdGUgcmVzb3VyY2UgISAtLT4gR2V0VGFza1VwZGF0ZVJlc291cmNlJyArIHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcblxyXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKiogRVhFQ1VURSBUQVNLIEFDVElPTiAgKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovICAgICBcclxuICBFeGVjdXRlVGFza0FjdGlvbiAgKHRhc2tJbml0aWF0ZUlkLHRhc2tFeGVjdXRlSWQsYWN0aW9uLGxhbmcsZm9yR3JvdXApIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiUE9TVFwiO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZiAoZm9yR3JvdXA9PW51bGwgfHwgZm9yR3JvdXA9PXVuZGVmaW5lZCB8fCBmb3JHcm91cD09XCJcIikgZm9yR3JvdXA9MDsgXHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgdXJsPScuLi9hcGkvdGFzay1zdGF0dXMtYWN0aW9uLycrdGFza0luaXRpYXRlSWQrJy8nK3Rhc2tFeGVjdXRlSWQrJy8nK2FjdGlvbisnLycrbGFuZysnLycrZm9yR3JvdXArJy8nO1xyXG4gICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzpyZXNwb25zZS5kYXRhLm1zZyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqIEVYRUNVVEUgVEFTSyAgKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovICAgICBcclxuICBleGVjdXRlVGFzayAgKHRhc2tJZCx0YXNrRGF0YSxvdXRjb21lSWQsbGFuZykge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJQT1NUXCI7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmICh0YXNrSWQhPXVuZGVmaW5lZClcclxuICAgICAgICAgIHtcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9leGVjdXRlLXRhc2svJyt0YXNrSWQrJy8nK2xhbmcrJy8nO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICBsZXQgcG9zdF9kYXRhPSB7J3Rhc2tEYXRhJzp0YXNrRGF0YSwnb3V0Y29tZSc6b3V0Y29tZUlkfSA7XHJcbiAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwscG9zdF9kYXRhKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzonRXhlY3V0ZSB0YXNrIGVycm9yIChmbiBleGVjdXRlVGFzaykgLS0+IHN0YXR1cyA9ICcrcmVzcG9uc2Uuc3RhdHVzKycgc3RhdHVzVGV4dCA9ICcrcmVzcG9uc2Uuc3RhdHVzVGV4dCsnICcrIHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKiBQUk9DRVNTIFRBU0sgICoqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAgICAgXHJcbiAgUHJvY2Vzc1Rhc2sgIChpdGVtSWQsb3V0Y29tZUlkLGxhbmcsaWRUeXBlLHByZXZpb3VzVGFza0lkKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIlBPU1RcIjtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYgKGlkVHlwZT09dW5kZWZpbmVkIHx8IGlkVHlwZT09bnVsbCB8fCBpZFR5cGU9PVwiXCIpIGlkVHlwZT0nbSc7XHJcbiAgICAgICAgICBpZiAocHJldmlvdXNUYXNrSWQ9PXVuZGVmaW5lZCB8fCBwcmV2aW91c1Rhc2tJZD09bnVsbCB8fCBwcmV2aW91c1Rhc2tJZD09XCJcIikgcHJldmlvdXNUYXNrSWQ9MDtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9wcm9jZXNzLXRhc2svJytpdGVtSWQrJy8nK291dGNvbWVJZCsnLycraWRUeXBlKycvJytwcmV2aW91c1Rhc2tJZCsnLycrbGFuZysnLyc7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6IHJlc3BvbnNlLmRhdGEubXNnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgfTtcclxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqIFNUQVJUIFRBU0sgICoqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAgICAgXHJcbiAgU3RhcnRUYXNrICAodGFza0lkLG91dGNvbWVJZCxwcmV2aW91c1Rhc2tJZCkge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjtcclxuICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9zdGFydC10YXNrLycrdGFza0lkKycvJytvdXRjb21lSWQrJy8nK3ByZXZpb3VzVGFza0lkKycvJztcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgXHJcbiAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsLGZhbHNlKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEhPW51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGRlZmVycmVkLnJlamVjdCh7bXNnOiByZXNwb25zZS5tc2csc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogcmVzcG9uc2UubXNnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfSk7ICAgIFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3IgPT57XHJcbiAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdChlcnJvci5tc2cpOyAgICBcclxuICAgICAgICB9KTtcclxuICAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9O1xyXG4gICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqIFNBVkUgVEFTSyBGT1JNIERBVEEgKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovICAgICBcclxuICAgIHNhdmVUYXNrRm9ybURhdGEgICh0YXNrSWQsdGFza0RhdGEpIHtcclxuICAgIFxyXG4gICAgICAgIHZhciBodHRwX21ldGhvZD1cIlBPU1RcIjtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgdmFyIHVybD0nLi4vYXBpL3NhdmUtdGFzay1mb3JtLWRhdGEvJyt0YXNrSWQrJy8nO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCx0YXNrRGF0YSkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICBcclxuICAgICAgIFxyXG4gICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICB9O1xyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIFNBVkUgVEFTSyBGT1JNIEJVVFRPTlMgXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgU2F2ZVRhc2tCdG5zICAodGFza0J0bnMsdGFza0lkLGxhbmcpIHtcclxuXHJcbiAgICAgICAgICB2YXIgIGh0dHBfbWV0aG9kPVwiUE9TVFwiO1xyXG4gICAgIFxyXG4gICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL3NhdmUtdGFzay1idG5zLycrdGFza0lkKycvJytsYW5nKycvJztcclxuICAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwsdGFza0J0bnMpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7bXNnOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgfTtcclxuICAgICAgICAgICBcclxuICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKiBTQVZFIFRBU0sgVE8gUkVTT1VSQ0UgKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovICAgICBcclxuICBzYXZlVGFza1RvUmVzb3VyY2UgICh0YXNrRXhlY3V0ZUlkLGRhdGFzZXREZWZJZCxkYXRhc2V0UmVjb3JkSWQscHJlc2VudGF0aW9uSWQpIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiUE9TVFwiO1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL3NhdmUtdGFzay10by1yZXNvdXJjZS8nK3Rhc2tFeGVjdXRlSWQrJy8nK2RhdGFzZXREZWZJZCsnLycrZGF0YXNldFJlY29yZElkKycvJytwcmVzZW50YXRpb25JZCsnLyc7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgfTtcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgR0VUIFdJREdFVCBERVBFTkRFTkNJRVNcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBnZXRXaWRnZXREZXBlbmRlbmNpZXMgICh0YXNrRGVmSWQscHJlc2VudGF0aW9uSWQsZm9ybVR5cGUpIHtcclxuICAgIFxyXG4gICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2dldC13aWRnZXQtZGVwZW5kZW5jaWVzLycrdGFza0RlZklkKycvJytwcmVzZW50YXRpb25JZCsnLycrZm9ybVR5cGUrJy8nO1xyXG4gICAgICAgIFxyXG4gICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICB2YXIgZ290b1NlcnZlciA9IGZhbHNlO1xyXG4gICAgICAgICBpZiAodGhpcy5jYWNoZVsnZ2V0V2lkZ2V0RGVwZW5kZW5jaWVzJ10gIT09dW5kZWZpbmVkKVxyXG4gICAgICAgICB7XHJcbiAgICAgICAgIGlmKHRoaXMuY2FjaGUuZ2V0V2lkZ2V0RGVwZW5kZW5jaWVzW3Rhc2tEZWZJZCsnXycrcHJlc2VudGF0aW9uSWQrJ18nK2Zvcm1UeXBlXSAhPT11bmRlZmluZWQpXHJcbiAgICAgICAgIHtcclxuICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogIHRoaXMuY2FjaGUuZ2V0V2lkZ2V0RGVwZW5kZW5jaWVzW3Rhc2tEZWZJZCsnXycrcHJlc2VudGF0aW9uSWQrJ18nK2Zvcm1UeXBlXSxzdGF0dXM6MjAwfSk7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgZWxzZVxyXG4gICAgICAgICB7XHJcbiAgICAgICAgICAgdGhpcy5jYWNoZVsnZ2V0V2lkZ2V0RGVwZW5kZW5jaWVzJ11bdGFza0RlZklkKydfJytwcmVzZW50YXRpb25JZCsnXycrZm9ybVR5cGVdID0ge307XHJcbiAgICAgICAgICAgZ290b1NlcnZlcj10cnVlOyBcclxuICAgICAgICAgfVxyXG4gICAgICB9IGVsc2VcclxuICAgICAge1xyXG4gICAgICAgICB0aGlzLmNhY2hlWydnZXRXaWRnZXREZXBlbmRlbmNpZXMnXSA9IHt9O1xyXG4gICAgICAgICB0aGlzLmNhY2hlWydnZXRXaWRnZXREZXBlbmRlbmNpZXMnXVt0YXNrRGVmSWQrJ18nK3ByZXNlbnRhdGlvbklkKydfJytmb3JtVHlwZV0gPSB7fTtcclxuICAgICAgICAgZ290b1NlcnZlcj10cnVlO1xyXG4gICAgICB9ICBcclxuICAgICAgaWYgKGdvdG9TZXJ2ZXIpXHJcbiAgICAgIHtcclxuICAgICAgICAgICAgdmFyIGluc3RhbmNlID0gdGhpcztcclxuXHJcbiAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY2FjaGUuZ2V0V2lkZ2V0RGVwZW5kZW5jaWVzW3Rhc2tEZWZJZCsnXycrcHJlc2VudGF0aW9uSWQrJ18nK2Zvcm1UeXBlXSA9IHJlc3BvbnNlLmRhdGE7ICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgbm90IHN1Y2Nlc3NmdWwsIGJpbmQgZXJyb3JzIHRvIGVycm9yIHZhcmlhYmxlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH0pOyAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07XHJcblxyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEV4ZWN1dGUgdGFzayBkYXRhc2V0IGxpc3RcclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICAga3RUYXNrRGF0YXNldExpc3QgKHJlc291cmNlSWQscHJlc2VudGF0aW9uSWQscGFyZW50RGVmSWQsdWlkLHZlcnNpb24scmVzb3VyY2VWZXJzaW9uKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIkdFVFwiOyAgXHJcbiAgICAgICAgICB2YXIgdXJsPScuLi9hcGkva3QtdGFzay1kYXRhc2V0LWxpc3QvJysgcmVzb3VyY2VJZCArJy8nK3ByZXNlbnRhdGlvbklkKycvJytwYXJlbnREZWZJZCsnLycrdWlkKycvJyt2ZXJzaW9uKycvJytyZXNvdXJjZVZlcnNpb24rJy8nO1xyXG4gICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+eyAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzogJ2t0LXRhc2stZGF0YXNldC1saXN0IGVycm9yICEgLS0+IGt0VGFza0RhdGFzZXRMaXN0JyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgLy8gICAgICAgICAgIEV4ZWN1dGUgdGFzayBkYXRhc2V0IGxpc3RcclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gICBrdFRhc2tEYXRhc2V0TGlzdEZpbHRlciAocmVzb3VyY2VJZCxwcmVzZW50YXRpb25JZCxwYXJlbnREZWZJZCxmaWx0ZXIsZm9ybV9sYXlvdXQsY29sdW1uc19mb3JfcXVlcnksdWlkLHZlcixyZXNvdXJjZVZlcnNpb24sY2hpbGQpIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiR0VUXCI7ICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9rdC10YXNrLWRhdGFzZXQtbGlzdC8nKyByZXNvdXJjZUlkICsnLycrcHJlc2VudGF0aW9uSWQrJy8nK3BhcmVudERlZklkKycvJyt1aWQrJy8nK3ZlcisnLycrcmVzb3VyY2VWZXJzaW9uKycvJztcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgICAgICAgICBsZXQgcG9zdF9kYXRhID0geydmaWx0ZXInOmZpbHRlciwnZm9ybSc6Zm9ybV9sYXlvdXQsJ2NvbHVtbnMnOmNvbHVtbnNfZm9yX3F1ZXJ5fTtcclxuICAgICAgICAgICBpZiAoY2hpbGQhPXVuZGVmaW5lZCkgcG9zdF9kYXRhLmNoaWxkID0gY2hpbGRcclxuICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsLHBvc3RfZGF0YSkudGhlbihyZXNwb25zZSA9PnsgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdrdC10YXNrLWRhdGFzZXQtbGlzdCBmaWx0ZXIgZXJyb3IgISAtLT4ga3RUYXNrRGF0YXNldExpc3RGaWx0ZXInLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gICAgICAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICB9O1xyXG4gIFxyXG4gICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICAgIC8vICAgICAgICAgICBFeGVjdXRlIHRhc2sgIHZpZXcgY2hhcnRcclxuICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICAgICAgIGt0VGFza1ZpZXdDaGFydCAocmVzb3VyY2VJZCxwcmVzZW50YXRpb25JZCx0YXNrSWQsZm9ybVR5cGUsbGFuZykge1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIkdFVFwiOyAgXHJcbiAgICAgICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2t0LXRhc2stdmlldy1jaGFydC8nKyByZXNvdXJjZUlkICsnLycrcHJlc2VudGF0aW9uSWQrJy8nK3Rhc2tJZCsnLycrZm9ybVR5cGUrJy8nK2xhbmcrJy8nO1xyXG4gICAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+eyAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6ICdrdC10YXNrLXZpZXctY2hhcnQgZXJyb3IgIScsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICAgICAgfTtcclxuICBcclxuICBcclxuICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEV4ZWN1dGUgdGFzayBnZXQgcmVzb3VyY2UgZGF0YSBQQU5EQVNcclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICAga3RHZXRSZXNvdXJjZURhdGFQYW5kYXMgKHJlc291cmNlSWQscHJlc2VudGF0aW9uSWQsdGFza0lkLGZvcm1UeXBlLGxhbmcpIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiR0VUXCI7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9nZXQtcmVzb3VyY2UtZGF0YS1wYW5kYXMvJysgcmVzb3VyY2VJZCArJy8nK3ByZXNlbnRhdGlvbklkKycvJyt0YXNrSWQrJy8nK2Zvcm1UeXBlKycvJytsYW5nKycvJztcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHsgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiByZXNwb25zZS5tc2cgIHx8ICdnZXQtcmVzb3VyY2UtZGF0YS1wYW5kYXMgZXJyb3IgIScgICxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIFxyXG4gICAgICBcclxuICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKiogU0VUIEZPUk0gRklFTEQgKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovICBcclxuICAgIHNldEZpZWxkIChmb3JtLG5hbWUsdmFsdWUpXHJcbiAgICAge1xyXG4gICAgIFx0IGlmIChmb3JtIT11bmRlZmluZWQpe1xyXG4gICAgICAgICAgICBcdGZvcih2YXIgaT0wO2k8Zm9ybS5sZW5ndGg7aSsrKSB7IFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChuYW1lIGluIGZvcm1baV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGZvcm1baV1bbmFtZV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCdsYXlvdXQnIGluIGZvcm1baV0pICB7ICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEZpZWxkKGZvcm1baV0ubGF5b3V0LG5hbWUsdmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlICAgIGlmICgnRm9ybURlZicgaW4gZm9ybVtpXSkgIHsgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RmllbGQoZm9ybVtpXS5Gb3JtRGVmLG5hbWUsdmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gZ2V0RmllbGRzIC0gcmV0dXJucyBzcGVjaWZpYyBwcm9wZXJ0aWVzIGZyb20gdGhlIGZvcm0gKGFjdHVhbGx5IHByb3BlcnR5IHBhcmVudCAtIHVzZWQgYXMgYSBwb2ludGVyKVxyXG5cclxuICAgICAgICBnZXRGaWVsZHMgKGZvcm0sIHByb3BlcnRpZXMpIFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0ge31cclxuICAgICAgICAgICAgZm9yICh2YXIgeD0wOyB4IDwgcHJvcGVydGllcy5sZW5ndGg7eCsrKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHRbcHJvcGVydGllc1t4XV0gPSBbXSAgXHQvL3ZhciByZXN1bHQ9eyAnUmVxdWlyZWQnIDogW10sICdSZWFkT25seScgOiBbXSAgfTsgLy8gcmVzdWx0IHNob3VsZCAgYmUgbGlrZSB0aGlzXHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgXHRcclxuICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICB2YXIgZ2V0RmllbGRzUmVjICA9IGZ1bmN0aW9uKGZvcm0pIHsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgZm9yKHZhciBpPTA7aSA8IGZvcm0ubGVuZ3RoO2krKykgXHJcbiAgICAgICAgICAgICAgICAgIHsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICBmb3IodmFyIGo9MDsgaiA8IHByb3BlcnRpZXMubGVuZ3RoO2orKykgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllc1tqXSBpbiBmb3JtW2ldKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W3Byb3BlcnRpZXNbal1dLnB1c2goIGZvcm1baV0gKVxyXG4gICAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCdsYXlvdXQnIGluIGZvcm1baV0pICAgZ2V0RmllbGRzUmVjKGZvcm1baV0ubGF5b3V0KTsgICAgICBcclxuICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGZvcm0hPXVuZGVmaW5lZCkgZ2V0RmllbGRzUmVjKGZvcm0pXHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHRcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKiogU0FWRSBHUklEIFNUQVRFICoqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAgICAgXHJcbiAgc2F2ZUdyaWRTdGF0ZSAgKHRhc2tEZWZJZCxwcmVzZW50YXRpb25JZCxzdGF0ZSxsYW5nKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIlBPU1RcIjtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9zYXZlLWdyaWQtc3RhdGUvJyt0YXNrRGVmSWQrJy8nK3ByZXNlbnRhdGlvbklkKycvJytsYW5nKycvJztcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsLHN0YXRlKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07XHJcblx0Z2V0Q29kZXMgKGNvZGVfaWQsbGFuZ3VhZ2Upe1xyXG4gICAgICAgICAgICAgdmFyIGNvZGVJbmRleD0tMTtcclxuICAgICAgICAgICAgIGlmIChjb2RlX2lkICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgdmFyIHBvcyA9IGxpc3RPZkNvZGVzQnlJZC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS51bmlxdWVfaWQ7IH0pLmluZGV4T2YoY29kZV9pZCtsYW5ndWFnZSk7XHJcbiAgICAgICAgICAgICAgaWYgKHBvczwwKXtcclxuXHRcdFx0XHQgIC8vaWYgIG5vdCBmb3VuZCAtIGRvd25sb2FkXHJcbiAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSAnLi4vYXBpL2dldC1jb2Rlcy1kZXRhaWwtYnlpZGxhbmcvJysgY29kZV9pZCsnLycrbGFuZ3VhZ2UrJy8nO1xyXG4gICAgICAgICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsLHRydWUpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXRyaXZlZExpc3QgPSB7dW5pcXVlX2lkOiBjb2RlX2lkK2xhbmd1YWdlLCBpZDogY29kZV9pZCxsYW5nOiBsYW5ndWFnZSwgY29kZUxpc3Q6IHJlc3BvbnNlLmRhdGF9O1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdE9mQ29kZXNCeUlkLnB1c2gocmV0cml2ZWRMaXN0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVJbmRleD1saXN0T2ZDb2Rlc0J5SWQubGVuZ3RoLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKGxpc3RPZkNvZGVzQnlJZFtjb2RlSW5kZXhdLmNvZGVMaXN0LCByZXNwb25zZS5zdGF0dXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHJlc3BvbnNlLmRhdGEpOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICBcdFx0XHRcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29kZUluZGV4PXBvcztcclxuICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUobGlzdE9mQ29kZXNCeUlkW2NvZGVJbmRleF0uY29kZUxpc3QsIDIwMCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG5cdFxyXG4gICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcblx0XHQgIH07XHJcblx0XHQgXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFRhc2tEYXRhU2VydmljZTtcclxuXHJcbmV4cG9ydCBjbGFzcyBQdWJsaWNUYXNrRGF0YVNlcnZpY2Uge1xyXG4gXHJcbiBjb25zdHJ1Y3RvcihSZXN0QXBpU2VydmljZSwkcSwkcm9vdFNjb3BlLE1lc3NhZ2luZ1NlcnZpY2UpXHJcbiAge1xyXG4gICAgICB0aGlzLmNhY2hlID0ge307XHJcbiAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UgPSBSZXN0QXBpU2VydmljZTtcclxuICAgICAgdGhpcy4kcT0kcTtcclxuICAgICAgdGhpcy4kcm9vdFNjb3BlID0kcm9vdFNjb3BlO1xyXG4gICAgICB0aGlzLk1lc3NhZ2luZ1NlcnZpY2UgPU1lc3NhZ2luZ1NlcnZpY2U7XHJcbiAgICAgICAgXHJcbiAgfVxyXG4gICAgc3RhdGljICRpbmplY3QgPSBbJ1Jlc3RBcGlTZXJ2aWNlJywnJHEnLCckcm9vdFNjb3BlJywnTWVzc2FnaW5nU2VydmljZSddXHJcbiBcclxuICAgIFxyXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKiBTVEFSVCBUQVNLICAqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gICAgIFxyXG4gICBTdGFydFRhc2sgIChvcmdhbmlzYXRpb25JZCx0YXNrTmFtZSx0YXNrSWQsb3V0Y29tZUlkLHByZXZpb3VzVGFza0lkKSB7XHJcbiAgICBcclxuICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiR0VUXCI7XHJcbiAgICAgXHJcbiAgICAgIHZhciB1cmw9Jy4uL2FwaS9zdGFydC1wdWJsaWMtdGFzay8nK29yZ2FuaXNhdGlvbklkKycvJyt0YXNrTmFtZSsnLycrdGFza0lkKycvJytvdXRjb21lSWQrJy8nK3ByZXZpb3VzVGFza0lkKycvJztcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgIFxyXG4gICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsLGZhbHNlKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3NmdWwsIGJpbmQgc3VjY2VzcyBtZXNzYWdlIHRvIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgbm90IHN1Y2Nlc3NmdWwsIGJpbmQgZXJyb3JzIHRvIGVycm9yIHZhcmlhYmxlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOnJlc3BvbnNlLm1zZyxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgXHJcbiAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICB9O1xyXG4gICAgXHJcbiAgIEdldFRhc2tQYXJhbWV0ZXJzICAodGFza0lkKSB7XHJcbiAgICAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIlwiO1xyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL3Rhc2stcGFyYW1ldGVycy1ieXJlc291cmNlaWQvJztcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgXHJcbiAgICAgICAgICBodHRwX21ldGhvZD1cIkdFVFwiO1xyXG4gICAgICAgICAgaWYgKHRhc2tJZCE9dW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHVybD11cmwrdGFza0lkKycvJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICByZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzonR2V0IHRhc2sgcGFyYW1ldGVycyBmYWlsZWQgISAtLT4gR2V0VGFza1BhcmFtZXRlcnMnLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgICAgICB9LCAgXHJcbiAgICAgICAgICAgICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOlwiRGF0YSBkb3dubG9hZCBmYWlsZWQgLS0+IEdldFRhc2tQYXJhbWV0ZXJzIFwiK2Vycm9yLnN0YXR1cyxzdGF0dXM6ZXJyb3Iuc3RhdHVzfSk7XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07ICBcclxuICBcclxuIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBHRVQgVEFTSyBPVVRDT01FU1xyXG4gIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gIEdldFRhc2tPdXRjb21lcyAgKHRhc2tJZCxjb2RlSWQsbGFuZykge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9nZXQtdGFzay1vdXRjb21lcy1kZXRhaWxzLyc7XHJcbiAgICAgICAgICB2YXIgdGFza0lkTG9jYWw9XCJcIjtcclxuICAgICAgICAgICBpZiAodGFza0lkIT11bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgLy9jb2RlXHJcbiAgICAgICAgICAgIHRhc2tJZExvY2FsPXRhc2tJZCtcIi9cIitjb2RlSWQrXCIvXCIrbGFuZytcIi9cIjtcclxuICAgICAgICAgICAgIHVybCA9IHVybCArIHRhc2tJZExvY2FsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzonR2V0IHRhc2sgb3V0Y29tZXMgZmFpbGVkICEgLS0+IEdldFRhc2tPdXRjb21lcycsIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07ICAgIFxyXG5cclxuICAgICAgICAgICAgICAgXHJcbiAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBHRVQgVEFTSyBFWEVDVVRFIERBVEFcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICBHZXRUYXNrRXhlY3V0ZURhdGEgICh0YXNrSW5zdGFuY2VJZCxsYW5nKSB7XHJcbiAgICBcclxuICAgICAgICAgIHZhciBodHRwX21ldGhvZD1cIkdFVFwiO1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2dldC10YXNrLWV4ZWN1dGUtZGF0YS8nO1xyXG4gICAgICAgICAgdmFyIHRhc2tJZExvY2FsPVwiXCI7XHJcbiAgICAgICAgICAgaWYgKHRhc2tJbnN0YW5jZUlkIT11bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgLy9jb2RlXHJcbiAgICAgICAgICAgIHRhc2tJZExvY2FsPXRhc2tJbnN0YW5jZUlkK1wiL1wiK2xhbmcrXCIvXCI7XHJcbiAgICAgICAgICAgIHVybCA9IHVybCArIHRhc2tJZExvY2FsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOidHZXQgdGFzayBleGVjdXRlIGRhdGEgZmFpbGVkICEgLS0+IEdldFRhc2tFeGVjdXRlRGF0YScsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7ICAgIFxyXG4gICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuICAgICAgXHJcbiBcclxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqIFBSRS1JTklUSVRBVEUgVEFTSyAgKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovICAgICBcclxuICBwcmVJbml0aWF0ZVRhc2sgICh0YXNrSWQscHJldlRhc2ssbGFuZyxwcmV2VGFza1BhY2thZ2UpIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiUE9TVFwiO1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL3ByZS1pbml0aWF0ZS10YXNrLycrdGFza0lkKycvJytwcmV2VGFzaysnLycrbGFuZysnLyc7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTsgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGxldCBwb3N0X2RhdGE9IHsncHRwJzpwcmV2VGFza1BhY2thZ2V9O1xyXG4gICAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsLHBvc3RfZGF0YSkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6J1ByZSBpbml0aWF0ZSB0YXNrIGZhaWxlZCAhIC0tPiBwcmVJbml0aWF0ZVRhc2snLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH07XHJcbiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqIElOSVRJVEFURSBUQVNLICAqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gICAgIFxyXG4gIEluaXRpYXRlVGFzayAgKHRhc2tJZCx0cmFuc2FjdGlvbklkLHRhc2tEYXRhLHBvdGVudGlhbE93bmVycyxkYXRhc2V0SWQsZGF0YXNldFJlY29yZElkLGxhbmcpIHtcclxuICAgIFxyXG4gICAgICAgICAgdmFyIGh0dHBfbWV0aG9kPVwiUE9TVFwiO1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIHVybD0nLi4vYXBpL2luaXRpYXRlLXRhc2svJyt0YXNrSWQrJy8nK3RyYW5zYWN0aW9uSWQrJy8nK2RhdGFzZXRJZCsnLycrZGF0YXNldFJlY29yZElkKycvJzsgXHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBsZXQgcG9zdF9kYXRhID0gIHsndGFza0RhdGEnOnRhc2tEYXRhLCdwb3RlbnRpYWxPd25lcnMnOnBvdGVudGlhbE93bmVyc307XHJcbiAgICAgICAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsLHBvc3RfZGF0YSkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gaWYgbm90IHN1Y2Nlc3NmdWwsIGJpbmQgZXJyb3JzIHRvIGVycm9yIHZhcmlhYmxlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbXNnPScnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLm1zZz09IHVuZGVmaW5lZCkgbXNnID0gcmVzcG9uc2UuZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIG1zZyA9IHJlc3BvbnNlLmRhdGEuZGF0YS5tc2c7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiBtc2csc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICB9O1xyXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKiogUFJFLUVYRUNVVEUgVEFTSyAgKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovICAgICBcclxuICBwcmVFeGVjdXRlVGFzayAgKHRhc2tJbml0aWF0ZUlkLHRhc2tFeGVjdXRlSWQsbGFuZykge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJHRVRcIjtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9wcmUtZXhlY3V0ZS10YXNrLycrdGFza0luaXRpYXRlSWQrJy8nK3Rhc2tFeGVjdXRlSWQrJy8nK2xhbmcrJy8nO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXQodXJsKS50aGVuKHJlc3BvbnNlID0+e1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogcmVzcG9uc2UuZGF0YSxzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOidQcmUtZXhlY3V0ZSB0YXNrIGZhaWxlZCAhIC0tPiBwcmVFeGVjdXRlVGFzaycsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgICAgIH07XHJcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKiBFWEVDVVRFIFRBU0sgQUNUSU9OICAqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gICAgIFxyXG4gIEV4ZWN1dGVUYXNrQWN0aW9uICAodGFza0luaXRpYXRlSWQsdGFza0V4ZWN1dGVJZCxhY3Rpb24sbGFuZyxmb3JHcm91cCkge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJQT1NUXCI7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmIChmb3JHcm91cD09bnVsbCB8fCBmb3JHcm91cD09dW5kZWZpbmVkIHx8IGZvckdyb3VwPT1cIlwiKSBmb3JHcm91cD0wOyBcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS90YXNrLXN0YXR1cy1hY3Rpb24vJyt0YXNrSW5pdGlhdGVJZCsnLycrdGFza0V4ZWN1dGVJZCsnLycrYWN0aW9uKycvJytsYW5nKycvJytmb3JHcm91cCsnLyc7XHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy5SZXN0QXBpU2VydmljZS5wb3N0KHVybCkudGhlbihyZXNwb25zZSA9PntcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KHttc2c6IHJlc3BvbnNlLmRhdGEubXNnLCBzdGF0dXM6cmVzcG9uc2Uuc3RhdHVzfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9ICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICAgICAgfTtcclxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdCoqKioqKioqKioqKioqKioqIEVYRUNVVEUgVEFTSyAgKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovICAgICBcclxuICBleGVjdXRlVGFzayAgKHRhc2tJZCx0YXNrRGF0YSxvdXRjb21lSWQsbGFuZykge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJQT1NUXCI7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmICh0YXNrSWQhPXVuZGVmaW5lZClcclxuICAgICAgICAgIHtcclxuICAgICAgICAgIHZhciB1cmw9Jy4uL2FwaS9leGVjdXRlLXRhc2svJyt0YXNrSWQrJy8nK2xhbmcrJy8nO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICBsZXQgcG9zdF9kYXRhPSB7J3Rhc2tEYXRhJzp0YXNrRGF0YSwnb3V0Y29tZSc6b3V0Y29tZUlkfSA7XHJcbiAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwscG9zdF9kYXRhKS50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHtkYXRhOiByZXNwb25zZS5kYXRhLHN0YXR1czpyZXNwb25zZS5zdGF0dXN9KTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3Qoe21zZzonRXhlY3V0ZSB0YXNrIGZhaWxlZCAhIC0tPiBleGVjdXRlVGFzaycsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0KioqKioqKioqKioqKioqKiogUFJPQ0VTUyBUQVNLICAqKioqKioqKioqKioqKioqKipcclxuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gICAgIFxyXG4gIFByb2Nlc3NUYXNrICAoaXRlbUlkLG91dGNvbWVJZCxsYW5nLGlkVHlwZSxwcmV2aW91c1Rhc2tJZCkge1xyXG4gICAgXHJcbiAgICAgICAgICB2YXIgaHR0cF9tZXRob2Q9XCJQT1NUXCI7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmIChpZFR5cGU9PXVuZGVmaW5lZCB8fCBpZFR5cGU9PW51bGwgfHwgaWRUeXBlPT1cIlwiKSBpZFR5cGU9J20nO1xyXG4gICAgICAgICAgaWYgKHByZXZpb3VzVGFza0lkPT11bmRlZmluZWQgfHwgcHJldmlvdXNUYXNrSWQ9PW51bGwgfHwgcHJldmlvdXNUYXNrSWQ9PVwiXCIpIHByZXZpb3VzVGFza0lkPTA7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgdXJsPScuLi9hcGkvcHJvY2Vzcy10YXNrLycraXRlbUlkKycvJytvdXRjb21lSWQrJy8nK2lkVHlwZSsnLycrcHJldmlvdXNUYXNrSWQrJy8nK2xhbmcrJy8nO1xyXG4gICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpOyBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoe2RhdGE6IHJlc3BvbnNlLmRhdGEsc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdCh7bXNnOiByZXNwb25zZS5kYXRhLm1zZywgc3RhdHVzOnJlc3BvbnNlLnN0YXR1c30pOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFRhc2tEZWZpbml0aW9uU2VydmljZXtcclxuXHJcbiBjb25zdHJ1Y3RvcigkcSwgJHJvb3RTY29wZSxNZXNzYWdpbmdTZXJ2aWNlLEthdGFseW9TdGF0ZU1hbmFnZXIsIFJlc291cmNlc0RhdGFTZXJ2aWNlKVxyXG4gIHtcclxuICAgICAgdGhpcy4kcT0kcTtcclxuICAgICAgdGhpcy4kcm9vdFNjb3BlID0kcm9vdFNjb3BlO1xyXG4gICAgICB0aGlzLk1lc3NhZ2luZ1NlcnZpY2UgPU1lc3NhZ2luZ1NlcnZpY2U7XHJcbiAgICAgIHRoaXMua3NtID1LYXRhbHlvU3RhdGVNYW5hZ2VyO1xyXG4gICAgICB0aGlzLnJkcyA9IFJlc291cmNlc0RhdGFTZXJ2aWNlXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYXNrPXt9O1xyXG4gICAgICB0aGlzLmRlZmluaXRpb25TY29wZT1udWxsO1xyXG4gICAgICB0aGlzLnNjb3BlPW51bGw7XHJcbiAgICAgIHRoaXMudGFzaz1udWxsO1xyXG4gICAgICB0aGlzLnNob3dUYXNrSW5pdGlhdG9ycyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNob3dUYXNrT3duZXJzID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd1Rhc2tTdGF0dXMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zaG93VGFza0Zvcm0gPSBcImlcIjtcclxuICAgICAgdGhpcy5zdGF0dXNUcmFuc2l0aW9uU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zaG93QWN0aW9ucz1bZmFsc2UsZmFsc2UsZmFsc2VdO1xyXG4gICAgICAvL3RoaXMubGFuZz10aGlzLiRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nOyAgICAgIFxyXG4gICAgICB0aGlzLmxhbmcgPSAxO1xyXG4gICAgICB0aGlzLmlzQ2FjaGVkID0ge1xyXG4gICAgICAgICAgJ3Rhc2tEZWZpbml0aW9uTGlzdCc6IGZhbHNlXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50YXNrRGVmaW5pdGlvbkxpc3QgPSBbXVxyXG4gICAgICBcclxuICAgICAgIC8qdGhpcy5yZHMuZ2V0UmVzb3VyY2VEZWZMaXN0QnlUeXBlKHRoaXMubGFuZywndGFzaycpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YXNrRGVmaW5pdGlvbkxpc3QgPSByZXNwb25zZS5kYXRhOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDYWNoZWRbJ3Rhc2tEZWZpbml0aW9uTGlzdCddPXRydWUgXHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgIH0pOyovXHJcbiAgICAgICAgXHJcbiAgICAgIFxyXG4gIH1cclxuICBcclxuIHN0YXRpYyAkaW5qZWN0ID0gWyckcScsJyRyb290U2NvcGUnLCdNZXNzYWdpbmdTZXJ2aWNlJywnS2F0YWx5b1N0YXRlTWFuYWdlcicsJ1Jlc291cmNlc0RhdGFTZXJ2aWNlJ11cclxuIFxyXG4gICAgICAgICBcclxuICAgICBnZXRUYXNrRGVmaW5pdGlvbkxpc3QgKCkge1xyXG4gICAgICAgIFxyXG4gICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7IFxyXG4gICAgICAgICB2YXIgbWUgPSB0aGlzICBcclxuICAgICAgICAgaWYgKHRoaXMuaXNDYWNoZWRbJ3Rhc2tEZWZpbml0aW9uTGlzdCddKSAgXHJcbiAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRhc2tEZWZpbml0aW9uTGlzdFxyXG4gICAgICAgICBcclxuICAgICAgICB0aGlzLnJkcy5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUodGhpcy5sYW5nLCd0YXNrJykudGhlbiggICAgICAgICAgICBcclxuICAgICAgICAgXHRmdW5jdGlvbihyZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG5cdFx0XHRcdFx0XHRcdCBtZS50YXNrRGVmaW5pdGlvbkxpc3QgPSByZXNwb25zZS5kYXRhOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWUuaXNDYWNoZWRbJ3Rhc2tEZWZpbml0aW9uTGlzdCddPXRydWUgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoIG1lLnRhc2tEZWZpbml0aW9uTGlzdCk7ICAgXHJcbiAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7fSk7ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgfSAgKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcblxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIFxyXG4gICAgXHJcbiAgICBTZXRTZWxlY3RlZFRhc2sgKHRhc2spIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYXNrID0gdGFzaztcclxuICAgICAgICBpZiAodGhpcy5zY29wZSE9dW5kZWZpbmVkKSB0aGlzLnNjb3BlLiRlbWl0KCdUYXNrRGVmaW5pdGlvbkxvYWRlZCcsbnVsbCk7XHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICBTZXRTY29wZUZvclNlbGVjdGVkVGFzayAgKHNjb3BlKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICB0aGlzLnNjb3BlID0gc2NvcGU7XHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICAgU2V0U2NvcGVGb3JEZWZpbml0aW9uICAoc2NvcGUpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgIHRoaXMuZGVmaW5pdGlvblNjb3BlID0gc2NvcGU7XHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICAgR2V0U2VsZWN0ZWRUYXNrICAodGFzaykge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRUYXNrO1xyXG4gICAgfTtcclxuICAgIFxyXG4gICAgIHNob3dUYXNrT3duZXJzRm4gKHR5cGUpe1xyXG4gICAgIHJldHVybiB0aGlzLnNob3dUYXNrT3duZXJzO1xyXG4gICAgIH07XHJcbiAgICAgc2hvd1Rhc2tJbml0aWF0b3JzRm4gKHR5cGUpe1xyXG4gICAgIHJldHVybiB0aGlzLnNob3dUYXNrSW5pdGlhdG9ycztcclxuICAgICB9O1xyXG4gICAgIHNob3dUYXNrU3RhdHVzRm4gKHR5cGUpe1xyXG4gICAgIHJldHVybiB0aGlzLnNob3dUYXNrU3RhdHVzO1xyXG4gICAgIH07XHJcbiBzaG93SGlkZVRhc2tSb2xlcyh0eXBlKXtcclxuICAgIFxyXG4gICAgICAgIGlmICh0eXBlPT0wKXtcclxuICAgICAgICAgIHRoaXMuc2hvd1Rhc2tJbml0aWF0b3JzID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1Rhc2tPd25lcnMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1Rhc2tTdGF0dXMgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGU9PTEpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGhpcy5zaG93VGFza0luaXRpYXRvcnMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1Rhc2tPd25lcnMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zaG93VGFza1N0YXR1cyA9IGZhbHNlO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgICBpZiAodHlwZT09MilcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aGlzLnNob3dUYXNrSW5pdGlhdG9ycyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zaG93VGFza1N0YXR1cyA9IGZhbHNlO1xyXG4gICAgICAgICAgLy9vdm8gdmlkamV0aSBrYWtvIHJpamXFoWl0aVxyXG4gICAgICAgICAgdGhpcy5kZWZpbml0aW9uU2NvcGUuY2xlYXJUYXNrQXNzaWdubWVudHMoKTtcclxuICAgICAgICAgIHRoaXMuZGVmaW5pdGlvblNjb3BlLmdldFRhc2tBc3NpZ25tZW50cygpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgIGlmICh0eXBlPT0zKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1Rhc2tPd25lcnMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1Rhc2tTdGF0dXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLmRlZmluaXRpb25TY29wZS5jbGVhclRhc2tBc3NpZ25tZW50cygpO1xyXG4gICAgICAgICBcclxuICAgICAgICAgIHRoaXMuZGVmaW5pdGlvblNjb3BlLnByb2Nlc3NUYXNrQXNzaWdubWVudHMoYW5ndWxhci5jb3B5KHRoaXMuZGVmaW5pdGlvblNjb3BlLnRhc2tBc3NpZ25tZW50c09yaWdpbmFsKSk7XHJcbiAgICAgICAgICB0aGlzLnRhc2s9YW5ndWxhci5jb3B5KHRoaXMuZGVmaW5pdGlvblNjb3BlLnRhc2tPcmlnaW5hbCk7XHJcbiAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zaG93VGFza0Zvcm09Jyc7XHJcbiAgICAgICAgdGhpcy5zdGF0dXNUcmFuc2l0aW9uU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dBY3Rpb25zLmZpbGwoZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuZGVmaW5pdGlvblNjb3BlLnNlbGVjdGVkRGVmaW5lZEFjdGlvbnMgPSAtMTtcclxuICB9O1xyXG4gIFxyXG4gICAgc2hvd0hpZGVUYXNrU3RhdHVzZXMoaW5kZXgsc3RhdGUpe1xyXG4gICAgIFxyXG4gICAgIHRoaXMuc2hvd1Rhc2tTdGF0dXM9ZmFsc2U7XHJcbiAgICAgdGhpcy5kZWZpbml0aW9uU2NvcGUuc2VsZWN0ZWREZWZpbmVkQWN0aW9ucz1pbmRleDtcclxuICAgICB0aGlzLnNob3dBY3Rpb25zLmZpbGwoZmFsc2UpO1xyXG4gICAgIHRoaXMuc2hvd0FjdGlvbnNbaW5kZXhdPXN0YXRlO1xyXG4gICAgIHRoaXMuc2hvd1Rhc2tTdGF0dXM9c3RhdGU7XHJcbiAgICAgdGhpcy5zaG93VGFza0luaXRpYXRvcnMgPSBmYWxzZTtcclxuICAgICB0aGlzLnNob3dUYXNrT3duZXJzID0gZmFsc2U7XHJcbiAgICAgdGhpcy5kZWZpbml0aW9uU2NvcGUuc3RhdHVzVHJhbnNpdGlvblNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgdGhpcy5zaG93VGFza0Zvcm09Jyc7XHJcbiAgXHJcbiAgICBcclxuICAgICBcclxuICAgICBpZiAoaW5kZXg9PTApXHJcbiAgICAge1xyXG4gICAgICB0aGlzLmdldFRhc2tTdGF0dXNBY3Rpb25zKFwiY3JlYXRlZFwiLFwiY3JlYXRlZFwiLGluZGV4LHN0YXRlKVxyXG4gICAgICBcclxuICAgICB9ZWxzZXtcclxuICAgICAgICBpZiAodGhpcy5kZWZpbml0aW9uU2NvcGUubG9hZGluZ0FjdGlvbnMubG9hZGluZz09dW5kZWZpbmVkKSB0aGlzLmRlZmluaXRpb25TY29wZS5sb2FkaW5nQWN0aW9ucz17bG9hZGluZzpmYWxzZX07XHJcbiAgICAgICAgZWxzZSB0aGlzLmRlZmluaXRpb25TY29wZS5sb2FkaW5nQWN0aW9ucy5sb2FkaW5nPWZhbHNlO1xyXG4gICAgIFxyXG4gICAgIH1cclxuICAgIFxyXG4gIH07XHJcbiAgXHJcbiAgc2hvd0hpZGVUYXNrRm9ybShmb3JtVHlwZSl7IC8vIGRlZmF1bHQgZm9ybSB0eXBlPWVcclxuICAgICBcclxuICAgICB0aGlzLnNob3dUYXNrRm9ybT1mb3JtVHlwZTtcclxuICAgICB0aGlzLnNob3dUYXNrSW5pdGlhdG9ycyA9IGZhbHNlO1xyXG4gICAgIHRoaXMuc2hvd1Rhc2tPd25lcnMgPSBmYWxzZTtcclxuICAgICB0aGlzLnNob3dUYXNrU3RhdHVzPWZhbHNlO1xyXG4gICAgIHRoaXMuc2hvd0FjdGlvbnMuZmlsbChmYWxzZSk7XHJcbiAgICAgdGhpcy5kZWZpbml0aW9uU2NvcGUuc2VsZWN0ZWREZWZpbmVkQWN0aW9ucyA9IC0xO1xyXG4gICAgIC8vdGhpcy5rc20uZXhlY3V0ZUFjdGlvbihcInRhc2tUb29sQm94XCIsXCJ0b29sYm94UmVsb2FkXCIsdHJ1ZSk7XHJcbiAgfTtcclxuICBzaG93VGFza0Zvcm1GbiAoKXtcclxuICAgICByZXR1cm4gdGhpcy5zaG93VGFza0Zvcm07XHJcbiAgfTtcclxuICBcclxuICBnZXRTZWxlY3RlZEFjdGlvbkZuICgpe1xyXG4gICAgIHJldHVybiB0aGlzLmRlZmluaXRpb25TY29wZS5zZWxlY3RlZERlZmluZWRBY3Rpb25zO1xyXG4gIH07XHJcblxyXG4gIGdldFNlbGVjdGVkVHJhbnNpdGlvbiAoKXtcclxuICAgICByZXR1cm4gdGhpcy5kZWZpbml0aW9uU2NvcGUuY29kZXNBY3Rpb25zLnNlbGVjdGVkVHJhbnNpdGlvbjtcclxuICB9O1xyXG4gICAgXHJcbiAgZ2V0VHJhbnNpdGlvbkFjdGlvbnNDb3VudCh0cmFuc2l0aW9uKXtcclxuXHJcbiAgICBpZiAodGhpcy5kZWZpbml0aW9uU2NvcGUuY29kZXNBY3Rpb25zLnRyYW5zaXRpb25MaXN0PT09dW5kZWZpbmVkIHx8IHRoaXMuZGVmaW5pdGlvblNjb3BlLmNvZGVzQWN0aW9ucy50cmFuc2l0aW9uTGlzdFt0cmFuc2l0aW9uXT09PXVuZGVmaW5lZCkgIHJldHVybiAnJztcclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmluaXRpb25TY29wZS5jb2Rlc0FjdGlvbnMudHJhbnNpdGlvbkxpc3RbdHJhbnNpdGlvbl07XHJcbiAgICAgICB9XHJcbiAgICBcclxuICAgIH07XHJcblxyXG4gIGdldFRhc2tTdGF0dXNBY3Rpb25zKHRhc2tTdGF0dXNGcm9tLHRhc2tTdGF0dXNUbyx0cmFuc2l0aW9uLHN0YXRlKXtcclxuICAgIFxyXG4gICAgLy9pZiAoJHNjb3BlLmxvYWRpbmdBY3Rpb25zLmxvYWRpbmc9PXVuZGVmaW5lZCkgJHNjb3BlLmxvYWRpbmdBY3Rpb25zPXtsb2FkaW5nOnRydWV9O1xyXG4gICAgLy9lbHNlICRzY29wZS5sb2FkaW5nQWN0aW9ucy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuZGVmaW5pdGlvblNjb3BlLnRhc2tTdGF0dXNGcm9tID0ge25hbWU6bnVsbCxpZDpudWxsLHZhbHVlOm51bGx9O1xyXG4gICAgdGhpcy5kZWZpbml0aW9uU2NvcGUudGFza1N0YXR1c1RvID0ge25hbWU6bnVsbCxpZDpudWxsLHZhbHVlOm51bGx9O1xyXG4gICAgdGhpcy5kZWZpbml0aW9uU2NvcGUudGFza1N0YXR1c0Zyb20ubmFtZT10YXNrU3RhdHVzRnJvbTtcclxuICAgIHRoaXMuZGVmaW5pdGlvblNjb3BlLnRhc2tTdGF0dXNUby5uYW1lPXRhc2tTdGF0dXNUbztcclxuICAgIHRoaXMuZGVmaW5pdGlvblNjb3BlLnN0YXR1c1RyYW5zaXRpb25TZWxlY3RlZCA9IHRydWU7XHJcbiAgICB0aGlzLmRlZmluaXRpb25TY29wZS5jb2Rlc0FjdGlvbnMuc2VsZWN0ZWRUcmFuc2l0aW9uID0gdHJhbnNpdGlvbjtcclxuICAgXHJcbiAgICAvLyRzY29wZS5jb2Rlc0FjdGlvbnMuY29kZXNBY3Rpb25zTGlzdC5sZW5ndGg9MDtcclxuICAgICAgIFxyXG4gICAgICAgIHZhciBwb3MgPSB0aGlzLmRlZmluaXRpb25TY29wZS50YXNrU3RhdHVzZXMubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUudmFsdWU7IH0pLmluZGV4T2YodGhpcy5kZWZpbml0aW9uU2NvcGUudGFza1N0YXR1c0Zyb20ubmFtZSk7XHJcbiAgICAgICAgaWYgKHBvcz4tMSkge1xyXG4gICAgICAgICAgdGhpcy5kZWZpbml0aW9uU2NvcGUudGFza1N0YXR1c0Zyb20uaWQgPSB0aGlzLmRlZmluaXRpb25TY29wZS50YXNrU3RhdHVzZXNbcG9zXS5pZDtcclxuICAgICAgICAgIHRoaXMuZGVmaW5pdGlvblNjb3BlLnRhc2tTdGF0dXNGcm9tLnZhbHVlID0gdGhpcy5kZWZpbml0aW9uU2NvcGUudGFza1N0YXR1c2VzW3Bvc10ubmFtZTtcclxuICAgICAgICB9IFxyXG4gIFxyXG4gICAgICAgIHBvcyA9IHRoaXMuZGVmaW5pdGlvblNjb3BlLnRhc2tTdGF0dXNlcy5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS52YWx1ZTsgfSkuaW5kZXhPZih0aGlzLmRlZmluaXRpb25TY29wZS50YXNrU3RhdHVzVG8ubmFtZSk7XHJcbiAgICAgICAgaWYgKHBvcz4tMSkge1xyXG4gICAgICAgICAgdGhpcy5kZWZpbml0aW9uU2NvcGUudGFza1N0YXR1c1RvLmlkID0gdGhpcy5kZWZpbml0aW9uU2NvcGUudGFza1N0YXR1c2VzW3Bvc10uaWQ7XHJcbiAgICAgICAgICB0aGlzLmRlZmluaXRpb25TY29wZS50YXNrU3RhdHVzVG8udmFsdWUgPSB0aGlzLmRlZmluaXRpb25TY29wZS50YXNrU3RhdHVzZXNbcG9zXS5uYW1lO1xyXG4gICAgICAgIH1cclxuICAgIFxyXG4gICAgICAgIHRoaXMuc2hvd1Rhc2tJbml0aWF0b3JzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93VGFza093bmVycyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd1Rhc2tTdGF0dXM9c3RhdGU7XHJcbiAgICBcclxuICAgICAgICBpZiAoIXN0YXRlKSAgdGhpcy50YXNrPWFuZ3VsYXIuY29weSh0aGlzLnRhc2tPcmlnaW5hbCk7XHJcbiAgICBcclxuICAgfTtcclxuICAgXHJcblxyXG4gXHJcbiB9XHJcblxyXG5leHBvcnQgY2xhc3MgVGFza1Byb2NTZXJ2aWNlIHtcclxuIFxyXG4gY29uc3RydWN0b3IgICgkcSwkcm9vdFNjb3BlLE1lc3NhZ2luZ1NlcnZpY2UsVGFza0RhdGFTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLiRxPSRxO1xyXG4gICAgdGhpcy4kcm9vdFNjb3BlID0kcm9vdFNjb3BlO1xyXG4gICAgdGhpcy5NZXNzYWdpbmdTZXJ2aWNlID1NZXNzYWdpbmdTZXJ2aWNlO1xyXG4gICAgdGhpcy5UYXNrRGF0YVNlcnZpY2UgPVRhc2tEYXRhU2VydmljZTtcclxuICAgICAgXHJcbiAgICB0aGlzLnRhc2tQcm9jT3JpZ2luYWw9e307XHJcbiAgICB0aGlzLnRhc2tEYXRhT3JpZ2luYWw9e307XHJcbiB9XHJcbiBcclxuICBzdGF0aWMgJGluamVjdCA9IFsnJHEnLCckcm9vdFNjb3BlJywnTWVzc2FnaW5nU2VydmljZScsJ1Rhc2tEYXRhU2VydmljZSddO1xyXG4gICAgXHJcbiAgICBQcm9jZXNzVGFzayAgKG1lbnVJZCxvdXRjb21lSWQsbGFuZyxpbml0VHlwZSxwcmV2aW91c1Rhc2tJZCkge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgIHZhciBkZWZlcnJlZCA9IHRoaXMuJHEuZGVmZXIoKTtcclxuICAgICAgICAgaWYgKGluaXRUeXBlPT11bmRlZmluZWQgfHwgaW5pdFR5cGU9PW51bGwgfHwgaW5pdFR5cGU9PVwiXCIpIGluaXRUeXBlPSdtJztcclxuICAgICAgICAgaWYgKHByZXZpb3VzVGFza0lkPT11bmRlZmluZWQgfHwgcHJldmlvdXNUYXNrSWQ9PW51bGwgfHwgcHJldmlvdXNUYXNrSWQ9PVwiXCIpIHByZXZpb3VzVGFza0lkPTA7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICBpZiAodGhpcy50YXNrUHJvY09yaWdpbmFsW21lbnVJZCtsYW5nK2luaXRUeXBlK3ByZXZpb3VzVGFza0lkXSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICB7XHJcbiAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoYW5ndWxhci5jb3B5KHRoaXMudGFza1Byb2NPcmlnaW5hbFttZW51SWQrbGFuZytpbml0VHlwZStwcmV2aW91c1Rhc2tJZF0pKTsgXHJcbiAgICAgICAgIH1cclxuICAgICAgICAgZWxzZVxyXG4gICAgICAgICB7XHJcbiAgICAgICAgICB2YXIgaW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgICAgICAgICBUYXNrRGF0YVNlcnZpY2UuUHJvY2Vzc1Rhc2sobWVudUlkLG91dGNvbWVJZCxsYW5nLGluaXRUeXBlLHByZXZpb3VzVGFza0lkKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS50YXNrUHJvY09yaWdpbmFsW21lbnVJZCtsYW5nK2luaXRUeXBlK3ByZXZpb3VzVGFza0lkXSA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKGFuZ3VsYXIuY29weShpbnN0YW5jZS50YXNrUHJvY09yaWdpbmFsW21lbnVJZCtsYW5nK2luaXRUeXBlK3ByZXZpb3VzVGFza0lkXSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kZWZlcnJlZC5yZXNvbHZlKGRhdGEpOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVqZWN0KGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XHJcbiAgICB9XHJcbiAgICBcclxuICAgICBTdGFydFRhc2sgICh0YXNrSWQsb3V0Y29tZUlkLHByZXZpb3VzVGFza0lkKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgdmFyIGRlZmVycmVkID0gdGhpcy4kcS5kZWZlcigpO1xyXG4gICAgICAgICBpZiAob3V0Y29tZUlkPT11bmRlZmluZWQgfHwgb3V0Y29tZUlkPT1udWxsIHx8IG91dGNvbWVJZD09XCJcIikgb3V0Y29tZUlkPTA7XHJcbiAgICAgICAgIGlmIChwcmV2aW91c1Rhc2tJZD09dW5kZWZpbmVkIHx8IHByZXZpb3VzVGFza0lkPT1udWxsIHx8IHByZXZpb3VzVGFza0lkPT1cIlwiKSBwcmV2aW91c1Rhc2tJZD0wO1xyXG4gICAgICAgICBcclxuICAgICAgICAgaWYgKHRoaXMudGFza0RhdGFPcmlnaW5hbFt0YXNrSWQrb3V0Y29tZUlkK3ByZXZpb3VzVGFza0lkXSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICB7XHJcbiAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoYW5ndWxhci5jb3B5KHRoaXMudGFza0RhdGFPcmlnaW5hbFt0YXNrSWQrb3V0Y29tZUlkK3ByZXZpb3VzVGFza0lkXSkpOyBcclxuICAgICAgICAgfVxyXG4gICAgICAgICBlbHNlXHJcbiAgICAgICAgIHtcclxuICAgICAgICAgIHZhciBpbnN0YW5jZSA9IHRoaXM7XHJcbiAgICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5TdGFydFRhc2sodGFza0lkLG91dGNvbWVJZCxwcmV2aW91c1Rhc2tJZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UudGFza0RhdGFPcmlnaW5hbFt0YXNrSWQrb3V0Y29tZUlkK3ByZXZpb3VzVGFza0lkXSA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKGFuZ3VsYXIuY29weShpbnN0YW5jZS50YXNrRGF0YU9yaWdpbmFsW3Rhc2tJZCtvdXRjb21lSWQrcHJldmlvdXNUYXNrSWRdKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RlZmVycmVkLnJlc29sdmUoZGF0YSk7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3QoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICBcclxuICAgIENvbXBsZXRlU3RhcnRGb3JtICAodGFza0lkLHRhc2tUcmFuc2FjdGlvbklkKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH1cclxuICAgIENvbXBsZXRlVGFzayAgKHRhc2tFeGVjdXRlSWQpIHtcclxuICAgICAgICAgIFxyXG4gICAgICB2YXIgZGVmZXJyZWQgPSB0aGlzLiRxLmRlZmVyKCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH1cclxuICAgIFxyXG4gfSIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogdXRpbGl0eVNlcnZpY2UgLSBFUzYgbW9kdWxlICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuJ3VzZSBzdHJpY3QnO1xyXG5cclxuY2xhc3MgVXRpbGl0eVNlcnZpY2Uge1xyXG4gICBcclxuICAgIFxyXG4gIFxyXG4gICBjb25zdHJ1Y3RvciAoJHdpbmRvdykge1xyXG4gICAgdGhpcy53ID0gJHdpbmRvd1xyXG4gICAgfVxyXG5cclxuICAgdXVpZHY0KCkge1xyXG4gICAgICByZXR1cm4gJ3h4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCcucmVwbGFjZSgvW3h5XS9nLCBmdW5jdGlvbihjKSB7XHJcbiAgICAgICAgdmFyIHIgPSBNYXRoLnJhbmRvbSgpICogMTYgfCAwLCB2ID0gYyA9PSAneCcgPyByIDogKHIgJiAweDMgfCAweDgpO1xyXG4gICAgICAgIHJldHVybiB2LnRvU3RyaW5nKDE2KTtcclxuICAgICAgfSk7XHJcbiAgIH1cclxuICAgXHJcbiAgIHV1aWROb3coKSB7XHJcbiAgICAgIHJldHVybiAneHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4Jy5yZXBsYWNlKC9beHldL2csIGZ1bmN0aW9uKGMpIHtcclxuICAgICAgICB2YXIgciA9IE1hdGgucmFuZG9tKCkgKiAxNiB8IDAsIHYgPSBjID09ICd4JyA/IHIgOiAociAmIDB4MyB8IDB4OCk7XHJcbiAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcoMTYpKyctJytEYXRlLm5vdygpO1xyXG4gICAgICB9KTtcclxuICAgfVxyXG4gICBcclxuICAgXHJcbiAgY2xvbmUob2JqKSB7ICAvLyBqYXZhc2NyaXB0IG9iamVjdCBjbG9uaW5nIChyZXBsYWNlbWVudCBmb3IgYW5ndWxhci5jb3B5KVxyXG4gICAgbGV0IGluc3RhbmNlID0gdGhpc1xyXG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2YgKG9iaikgIT09ICdvYmplY3QnIHx8ICdpc0FjdGl2ZUNsb25lJyBpbiBvYmopXHJcbiAgICAgICAgcmV0dXJuIG9iajtcclxuXHJcbiAgICBpZiAob2JqIGluc3RhbmNlb2YgRGF0ZSlcclxuICAgICAgICB2YXIgdGVtcCA9IG5ldyBvYmouY29uc3RydWN0b3IoKTsgLy9vciBuZXcgRGF0ZShvYmopO1xyXG4gICAgZWxzZVxyXG4gICAgICAgIHZhciB0ZW1wID0gb2JqLmNvbnN0cnVjdG9yKCk7XHJcblxyXG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xyXG4gICAgICAgIGlmIChrZXk9PSdnc3J2YycpIGNvbnRpbnVlIC8vIHNraXBwaW5nIGFuZ3VsYXIgb2JqZWN0cyEhXHJcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcclxuICAgICAgICAgICAgb2JqWydpc0FjdGl2ZUNsb25lJ10gPSBudWxsO1xyXG4gICAgICAgICAgICB0ZW1wW2tleV0gPSBpbnN0YW5jZS5jbG9uZShvYmpba2V5XSk7XHJcbiAgICAgICAgICAgIGRlbGV0ZSBvYmpbJ2lzQWN0aXZlQ2xvbmUnXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGVtcDtcclxuICAgfVxyXG5cclxuICAgIHN1YnNjcmliZV8yX2V2ZW50cyhyZXNvdXJjZV9pZCxtZSxldmVudHMsc2tvcCxrc20pIHsgIC8vIGNhbGxlZCBieSB0aGUgd2lkZ2V0cyB0aGF0IGhhdmUgZXZlbnRzIGZvciBwcm9jZXNzaW5nXHJcbiAgICBcclxuICAgICAgICBmb3IgKGxldCBpPTA7aTxldmVudHMubGVuZ3RoO2krKylcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIC8vc3Vic2NyaWJlIHRvIGV2ZW50XHJcbiAgICAgICAgICAgIGtzbS5zdWJzY3JpYmVXaXRoUGFyYW1zKHJlc291cmNlX2lkKyctJytldmVudHNbaV0uRXZlbnRXaWRnZXRJZCxtZSxldmVudHNbaV0uRXZlbnROYW1lLHNrb3BbZXZlbnRzW2ldLkV2ZW50Rm5dLGV2ZW50c1tpXS5hY3Rpb25zLGV2ZW50c1tpXS5JbnB1dFBhcmFtcylcclxuICAgICAgICB9XHJcbiAgICB9XHJcblx0XHJcblx0XHJcbiAgICBjaGVja19jb25kaXRpb24ob3BlcmF0b3IsdmFsLHJlcyl7XHJcblxyXG4gICAgICAgIGxldCBjb25kaXRpb24gPSBmYWxzZVxyXG5cclxuICAgICAgICBpZiAob3BlcmF0b3I9PSc9JyAmJiByZXM9PXZhbCkgY29uZGl0aW9uPXRydWUgXHJcbiAgICAgICAgZWxzZSBpZiAob3BlcmF0b3I9PSc+PScgJiYgcmVzPj12YWwpIGNvbmRpdGlvbj10cnVlXHJcbiAgICAgICAgZWxzZSBpZiAob3BlcmF0b3I9PSc8PScgJiYgcmVzPD12YWwpIGNvbmRpdGlvbj10cnVlXHJcbiAgICAgICAgZWxzZSBpZiAob3BlcmF0b3I9PSc+JyAmJiByZXM+dmFsKSBjb25kaXRpb249dHJ1ZVxyXG4gICAgICAgIGVsc2UgaWYgKG9wZXJhdG9yPT0nPCcgJiYgcmVzPHZhbCkgY29uZGl0aW9uPXRydWVcclxuXHJcbiAgICAgICAgcmV0dXJuIGNvbmRpdGlvblxyXG4gICAgfVxyXG5cclxuICAgIHJlc2V0X2NvbXBsZXRpb24gPSBmdW5jdGlvbihldmVudHMpXHJcbiAgICB7XHJcbiAgICAgICBmb3IgKGxldCBpPTA7aTxldmVudHMubGVuZ3RoO2krKykgeyAgICAgICAgICBcclxuICAgICAgICAgICBmb3IgKGxldCBqPTA7ajxldmVudHNbaV0uYWN0aW9ucy5sZW5ndGg7aisrKSB7XHJcbiAgICAgICAgICAgICAgZXZlbnRzW2ldLmFjdGlvbnNbal0uY29tcGxldGVkID0gZmFsc2UgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICBcclxuICAgIH1cclxuXHJcbiAgICBjaGVja19pZl9jb21wbGV0ZWQgPSBmdW5jdGlvbihldmVudHMpXHJcbiAgICB7XHJcbiAgICAgICBsZXQgY29tcGxldGVkID0gZmFsc2VcclxuICAgICAgIGZvciAobGV0IGk9MDtpPGV2ZW50cy5sZW5ndGg7aSsrKSB7ICAgICAgICAgIFxyXG4gICAgICAgICAgIGZvciAobGV0IGo9MDtqPGV2ZW50c1tpXS5hY3Rpb25zLmxlbmd0aDtqKyspIHtcclxuICAgICAgICAgICAgICBjb21wbGV0ZWQgPSBldmVudHNbaV0uYWN0aW9uc1tqXS5jb21wbGV0ZWQgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIHJldHVybiBjb21wbGV0ZWQgXHJcbiAgICB9XHJcbiAgICBcclxuICAgICBwcm9jZXNzX2V2ZW50cyA9IGZ1bmN0aW9uKHBhZ2Vfc3RhdGVfaWQsdmFsdWVTdGF0ZSxkYXRhLGV2ZW50cyxrc20sbmV3Um91bmQpXHJcbiAgICAge1xyXG4gICAgICAgIGlmIChuZXdSb3VuZD09PXVuZGVmaW5lZCkgbmV3Um91bmQ9dHJ1ZVxyXG4gICAgICAgIGZvciAobGV0IGk9MDtpPGV2ZW50cy5sZW5ndGg7aSsrKSB7ICAgICAgICAgIFxyXG4gICAgICAgICAgIGZvciAobGV0IGo9MDtqPGV2ZW50c1tpXS5hY3Rpb25zLmxlbmd0aDtqKyspIHsgICAvL2V4ZWN1dGUgYWN0aW9uc1xyXG4gICAgICAgICAgICAgICAgaWYgKG5ld1JvdW5kICYmIGk9PTAgJiYgaj09MCkgZXZlbnRzW2ldLmFjdGlvbnNbal0uY29tcGxldGVkID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50c1tpXS5hY3Rpb25zW2pdLmNvbXBsZXRlZCkge1xyXG5cdFx0XHRcdFx0XHRpZiAoZXZlbnRzW2ldLmFjdGlvbnNbal0uRGVwZW5kc09uPjApe1xyXG5cdFx0XHRcdFx0XHRcdC8vY2hlY2sgaWYgZGVwZW5kZW5kZW50IGFjdGlvbiBpcyBjb21wbGV0ZWRcclxuXHRcdFx0XHRcdFx0XHRpZiAoZXZlbnRzW2ldLmFjdGlvbnNbZXZlbnRzW2ldLmFjdGlvbnNbal0uRGVwZW5kc09uLTFdLmNvbXBsZXRlZCl7XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0bGV0IGNvbmRpdGlvbiA9IEpTT04ucGFyc2UoZXZlbnRzW2ldLmFjdGlvbnNbal0uQ29uZGl0aW9uKVxyXG5cclxuXHRcdFx0XHRcdFx0XHRcdGxldCByZXMsZXhlY3V0ZV9hY3Rpb25cclxuXHRcdFx0XHRcdFx0XHRcdGZvciAobGV0IGs9MDtrPGNvbmRpdGlvbi5sZW5ndGg7aysrKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0cmVzID0gZXZlbnRzW2ldLmFjdGlvbnNbY29uZGl0aW9uW2tdLmFjdGlvbi0xXS5yZXN1bHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZXhlY3V0ZV9hY3Rpb24gPSB0aGlzLmNoZWNrX2NvbmRpdGlvbihjb25kaXRpb25ba10ub3BlcmF0b3IsY29uZGl0aW9uW2tdLnJlc3VsdCxyZXMpXHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdGlmIChleGVjdXRlX2FjdGlvbikgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtzbS5leGVjdXRlQWN0aW9uKHBhZ2Vfc3RhdGVfaWQrJy0nK2V2ZW50c1tpXS5hY3Rpb25zW2pdLldpZGdldElkLGV2ZW50c1tpXS5hY3Rpb25zW2pdLkFjdGlvbk5hbWUse2V2ZW50X2luZGV4OmksYWN0aW9uX2luZGV4OmosaW5fZGF0YTp7aW5fcGFyYW1zOmV2ZW50c1tpXS5hY3Rpb25zW2pdLklucHV0UGFyYW1zLGV2ZW50X2RhdGE6ZGF0YX19KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRzW2ldLmFjdGlvbnNbal0uY29tcGxldGVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHQga3NtLmV4ZWN1dGVBY3Rpb24ocGFnZV9zdGF0ZV9pZCsnLScrZXZlbnRzW2ldLmFjdGlvbnNbal0uV2lkZ2V0SWQsZXZlbnRzW2ldLmFjdGlvbnNbal0uQWN0aW9uTmFtZSx7ZXZlbnRfaW5kZXg6aSxhY3Rpb25faW5kZXg6aixpbl9kYXRhOntpbl9wYXJhbXM6ZXZlbnRzW2ldLmFjdGlvbnNbal0uSW5wdXRQYXJhbXMsZXZlbnRfZGF0YTpkYXRhfX0pXHJcblx0XHRcdFx0XHRcdCAgICAgZXZlbnRzW2ldLmFjdGlvbnNbal0uY29tcGxldGVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICB2YWx1ZVN0YXRlPy5zdWJqZWN0Py5ub3RpZnlPYnNlcnZlcnMoXCJwcm9jZXNzRXZlbnRzXCIpIC8vbm90aWZ5XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuY2hlY2tfaWZfY29tcGxldGVkKGV2ZW50cykpIHRoaXMucmVzZXRfY29tcGxldGlvbihldmVudHMpXHJcbiAgICB9XHJcblx0XHJcblx0XHJcblx0ICAgIGdldFNvcnRNZXRob2QgPSBmdW5jdGlvbigpIC8vdW5pdmVyc2FsIHNvcnQgLSB1c2FnZTogYXJyYXkuc29ydCggZ2V0U29ydE1ldGhvZChbJ2FwcmljZScsICdkcHJpb3JpdHknLCAnZG5hbWUnXSkpICAtIGJlZ2luaW5nIHdpdGggYShzY2VuZGluZykgb3IgZChlc2NlbmRpbmcpXHJcblx0XHR7ICAgIFxyXG4gICAgICAgICAgICAgIHZhciBfYXJncyA9IGFyZ3VtZW50c1swXVxyXG5cdFx0XHQgIHZhciBfbGFuZ0NvZGUgPSBhcmd1bWVudHM/LlsxXSB8fCAnZW4tR0InXHJcbiAgICAgICAgICAgICAgXHJcblx0XHRcdCAgcmV0dXJuIGZ1bmN0aW9uKGEsIGIpe1xyXG4gICAgICAgICAgICAgICAgICBmb3IodmFyIHggb2YgX2FyZ3Mpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBheCxieCwgY3ggO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF4ID0gYVt4LnN1YnN0cmluZygxKV0gICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBieCA9IGJbeC5zdWJzdHJpbmcoMSldXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF4PT1udWxsIHx8IGF4ID09IHVuZGVmaW5lZCkgICAgcmV0dXJuIDEgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChieD09bnVsbCB8fCBieCA9PSB1bmRlZmluZWQpICAgIHJldHVybiAtMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChheCA9PSBieCkgY29udGludWUgXHRcclxuXHRcdFx0ICB9ICAgY2F0Y2ggKGVycm9yKSB7XHJcblx0XHRcdFx0XHQgY29uc29sZS5lcnJvcihlcnJvcilcclxuXHRcdFx0XHR9XHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoeC5zdWJzdHJpbmcoMCwxKSA9PSBcImRcIikge2N4ID0gYXg7IGF4ID0gYng7IGJ4ID0gY3g7fSAvL3N3aXRjaCB3aGVuICdkZXNjZW5kaW5nJyBzb3J0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGF4ID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXM9IGF4LmxvY2FsZUNvbXBhcmUoYngsIF9sYW5nQ29kZSwge3NlbnNpdGl2aXR5OiAnYmFzZSd9KVxyXG5cdFx0XHRcdFx0XHQgLy92YXIgbGFuZ0NvZGUgPSAkcm9vdFNjb3BlLmdsb2JhbHM/LmN1cnJlbnRVc2VyPy5sYW5nT2JqPy5Db2RlID8/ICdlbi1HQidcclxuICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXMgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuICBheCA8IGJ4ID8gLTEgOiAxXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9ICBcclxuICAgICAgICAgfVxyXG5cdFxyXG5cdFxyXG59Ly9VVElMSVRZXHJcblxyXG5leHBvcnQgZGVmYXVsdCBVdGlsaXR5U2VydmljZTsiLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UgcyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbid1c2Ugc3RyaWN0JztcclxuXHJcbmNsYXNzIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2V7XHJcblx0XHJcblx0Y29uc3RydWN0b3IoJHJvb3RTY29wZSwgTWVzc2FnaW5nU2VydmljZSkge1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuJHJvb3RTY29wZT0kcm9vdFNjb3BlO1xyXG5cdFx0XHRcdHRoaXMud2lkZ2V0Q291bnRlciA9IDA7XHJcblx0XHRcdFx0dGhpcy5tYXhXaWRnZXRJZD0wO1xyXG5cdFx0XHRcdHRoaXMudGFza1dpZGdldFJlZ2lzdHJ5PXt9O1xyXG4gICAgICAgIHRoaXMud2lkZ2V0UmVnaXN0cnlMaXN0PXt9O1xyXG5cdFx0XHRcdHRoaXMuc2VhcmNoUmVnaXN0cnk9W107XHJcblx0XHRcdFx0dGhpcy50YXNrSUQ9W107XHJcbiAgICAgICAgICAgICAgICB0aGlzLk1lc3NhZ2luZ1NlcnZpY2U9TWVzc2FnaW5nU2VydmljZTtcclxuICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgc3RhdGljICRpbmplY3QgPSBbJyRyb290U2NvcGUnLCdNZXNzYWdpbmdTZXJ2aWNlJ107XHJcblxyXG4gIFxyXG5cclxuICAgLy9vdnUgZnVua2NpanUgcG96aXZhIHdpZGdldFxyXG5cdHNldEFjdGlvblN0YXR1cyAodGFza0lELHdpZGdldElELGFjdGlvbixzdGF0dXMpIHsgIC8vIFN0byByYWRpbSBzIHRhc2tJRCA/P1xyXG5cclxuXHQgIC8vdSB0YXNrV2lkZ2V0UmVnaXN0cnkgdSB3aWRnZXRpZCBpIGFjdGlvbiBzdGF2aSBzdGF0dXMgICAgICAgLy8gIGFjdGlvbnM6IFt7bmFtZTonUHJlcGFyZURhdGEnLHN0YXR1czpmYWxzZX1dXHJcblx0ICAgXHR0aGlzLnRhc2tXaWRnZXRSZWdpc3RyeVt3aWRnZXRJRC0xXS5hY3Rpb25zW2FjdGlvbl09c3RhdHVzIFxyXG5cdFxyXG5cdFx0dmFyIGZpbmlzaGVkQ291bnRlcj0wO1xyXG5cdFx0Zm9yICh2YXIgaT0wO2k8dGhpcy53aWRnZXRDb3VudGVyO2krKykge1xyXG5cdFx0XHRpZiAodGhpcy50YXNrV2lkZ2V0UmVnaXN0cnlbaV0uYWN0aW9uc1snUHJlcGFyZURhdGEnXT09dHJ1ZSkgZmluaXNoZWRDb3VudGVyKytcdFx0XHJcblx0XHR9XHJcblx0ICAgXHJcblx0ICAgLy9wcm9sYXppbSBrcm96IHJlZ2lzdHJ5IGkgZ2xlZGFtIHByZXBhcmVkYXRhIGRhIGxpIHN1IHN2aSBhY3Rpb25pIHRydWUgemEgdGFqIHRhc2tpZCBcclxuXHRcdGlmIChmaW5pc2hlZENvdW50ZXI9PXRoaXMud2lkZ2V0Q291bnRlcikgIHRoaXMuJHJvb3RTY29wZS4kYnJvYWRjYXN0KCdQcmVwYXJlRGF0YUFsbFdpZGdldHNGaW5pc2hlZCcpO1xyXG5cdFx0XHRcdFxyXG5cdFx0dGhpcy4kcm9vdFNjb3BlLiRicm9hZGNhc3QoJ1ByZXBhcmVEYXRhQWxsV2lkZ2V0c0ZpbmlzaGVkJyk7XHJcblxyXG4gICAgIH1cclxuXHJcblxyXG4gICAgcmVnaXN0ZXJUYXNrICh0YXNrRGVmSWQpIHtcclxuXHQgICB2YXIgdGFza0lkID0gdGhpcy4kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIudXNlcmlkICsgdGFza0RlZklkICsgRGF0ZS5ub3coKVxyXG5cdFx0dGhpcy50YXNrSUQucHVzaCh0YXNrSWQpO1xyXG5cdFx0Ly90YXNrV2lkZ2V0UmVnaXN0cnk9W107XHJcblx0XHR0aGlzLiRyb290U2NvcGUuJGJyb2FkY2FzdCgnSW5pdGlhdGVUYXNrJyx0YXNrSWQpOyAvL01JR09SIC0gb2JhdmlqZXN0aSB3aWRnZXRlIGRhIHNhbSBpbmljaXJhbyB0YXNrIChkYSBzZSBwcmlwcmVtZSkgLSBORSBSQURJIVxyXG5cdFx0cmV0dXJuIHRhc2tJZDtcclxufVxyXG4gIHJlZ2lzdGVyV2lkZ2V0ICh3aWRnZXREZWZpbml0aW9uKVxyXG4gIHtcclxuICAgICAgbGV0IGV4aXN0cz1mYWxzZTtcclxuICAgICAgbGV0IGxvY2FsSWQ9JzAnO1xyXG4gICAgICBsZXQgcGFnZUlkID0gd2lkZ2V0RGVmaW5pdGlvbi5wYXJlbnRSZXNvdXJjZUlkXHJcblxyXG4gICAgICBpZiAodGhpcy50YXNrV2lkZ2V0UmVnaXN0cnlbcGFnZUlkXT09dW5kZWZpbmVkKSB0aGlzLnRhc2tXaWRnZXRSZWdpc3RyeVtwYWdlSWRdPVtdXHJcbiAgICAgIGlmICh0aGlzLndpZGdldFJlZ2lzdHJ5TGlzdFtwYWdlSWRdPT11bmRlZmluZWQpIHRoaXMud2lkZ2V0UmVnaXN0cnlMaXN0W3BhZ2VJZF09W10gIFxyXG5cdFx0XHQvL3Rlc3QgLSAgZm9yIGV4aXN0aW5nIHdpZGdldGlkICAgXHJcblx0XHRcdGlmICh3aWRnZXREZWZpbml0aW9uLndpZGdldElkIT1udWxsICYmIHdpZGdldERlZmluaXRpb24ud2lkZ2V0SWQhPXVuZGVmaW5lZCAmJiBwYWdlSWQhPXVuZGVmaW5lZClcclxuXHRcdFx0e1xyXG5cdFx0XHRcdGxvY2FsSWQgPSB3aWRnZXREZWZpbml0aW9uLndpZGdldElkOyBcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRpZiAobG9jYWxJZCE9JzAnKVxyXG5cdFx0XHRcdHtcdFx0XHRcdFxyXG5cdFx0XHRcdFx0Zm9yICh2YXIgaT0wO2k8dGhpcy50YXNrV2lkZ2V0UmVnaXN0cnlbcGFnZUlkXS5sZW5ndGg7aSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMudGFza1dpZGdldFJlZ2lzdHJ5W3BhZ2VJZF1baV0ud2lkZ2V0SWQ9PXdpZGdldERlZmluaXRpb24ud2lkZ2V0SWQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0ICBleGlzdHM9dHJ1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0ICB0aGlzLnRhc2tXaWRnZXRSZWdpc3RyeVtwYWdlSWRdW2ldPXdpZGdldERlZmluaXRpb247Ly9yZWZyZXNoIHdpZGdldCBkYXRhXHJcblx0XHRcdFx0XHRcdFx0XHRcdCAgLy90aGlzLndpZGdldENvdW50ZXI9dGhpcy50YXNrV2lkZ2V0UmVnaXN0cnlbaV0ubG9jYWxXaWRnZXRJZDtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdCAgLy9jb25zb2xlLmxvZygnd2lkZ2V0IHNhIGlzdGltIHByZXNlbnRhdGlvbklEIHZlYyBwb3N0b2ppISB3aWRnZXRpZD0nICsgd2lkZ2V0RGVmaW5pdGlvbi53aWRnZXRJZCk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdCAgLy9jb25zb2xlLmxvZygnd2lkZ2V0IGZvciBVdWlkUmVmIGFscmVhZHkgZXhpc3RzIScpO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0vL2ZvclxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0fSAgXHJcblxyXG4gICAgICAgaWYgKCFleGlzdHMpIHtcclxuICAgICAgICAgIHRoaXMud2lkZ2V0Q291bnRlcj10aGlzLnRhc2tXaWRnZXRSZWdpc3RyeVtwYWdlSWRdLmxlbmd0aCsxO1xyXG4gICAgICAgICAgIHdpZGdldERlZmluaXRpb24ubG9jYWxXaWRnZXRJZCA9IGxvY2FsSWQ7XHJcbiAgICAgICAgICAgd2lkZ2V0RGVmaW5pdGlvbi5pZD13aWRnZXREZWZpbml0aW9uLndpZGdldElkXHJcbiAgICAgICAgICAgd2lkZ2V0RGVmaW5pdGlvbi5uYW1lID0gd2lkZ2V0RGVmaW5pdGlvbi53aWRnZXRMYWJlbCsnICgnK3dpZGdldERlZmluaXRpb24ud2lkZ2V0SWQrJyknXHJcblx0XHQgICAgICAgLy8gd2lkZ2V0RGVmaW5pdGlvbi53aWRnZXRJZCA9IGxvY2FsSWQ7IFxyXG4gICAgICAgICAgdGhpcy50YXNrV2lkZ2V0UmVnaXN0cnlbcGFnZUlkXS5wdXNoKHdpZGdldERlZmluaXRpb24pO1xyXG4gICAgICAgICAgdGhpcy53aWRnZXRSZWdpc3RyeUxpc3RbcGFnZUlkXS5wdXNoKHtpZDp3aWRnZXREZWZpbml0aW9uLmlkLG5hbWU6d2lkZ2V0RGVmaW5pdGlvbi5uYW1lLGFjdGlvbnM6d2lkZ2V0RGVmaW5pdGlvbi5hY3Rpb25zfSlcclxuICAgICAgIH1cclxuICAgICAgIFxyXG4gICAgICBcclxuICAgIH1cclxuICAgICByZXR1cm4gbG9jYWxJZDtcclxuICB9O1xyXG5cclxuICBkZVJlZ2lzdGVyV2lkZ2V0IChsb2NhbElkLHBhZ2VJZClcclxuICB7XHJcbiAgICBsZXQgZm91bmQ9ZmFsc2VcclxuICAgIGlmIChwYWdlSWQhPXVuZGVmaW5lZClcclxuICAgIHtcclxuICAgICBcdGZvciAodmFyIGk9MDtpPHRoaXMudGFza1dpZGdldFJlZ2lzdHJ5W3BhZ2VJZF0ubGVuZ3RoO2krKylcclxuICAgICBcdHtcclxuICAgICAgXHRpZiAodGhpcy50YXNrV2lkZ2V0UmVnaXN0cnlbcGFnZUlkXVtpXS5sb2NhbFdpZGdldElkPT1sb2NhbElkKVxyXG4gICAgICBcdHtcclxuICAgICAgICAgICAgICBmb3VuZD10cnVlXHJcbiAgICAgICAgXHRcdHRoaXMudGFza1dpZGdldFJlZ2lzdHJ5W3BhZ2VJZF0uc3BsaWNlKGksMSk7XHJcbiAgICAgICAgXHJcbiAgICAgIFx0fVxyXG4gICAgIFx0fVxyXG4gICAgICBpZiAoIWZvdW5kKSAgdGhpcy5NZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoJ1dpZGdldCB3aXRoIGxvY2FsSWQgJyArIGxvY2FsSWQgKyAnIG5vdCBmb3VuZCEnLCdlcnJvcicpOyAgXHJcbiAgICB9XHJcbiAgfVxyXG4gICBcclxuICAgXHJcbiBkZVJlZ2lzdGVyQWxsV2lkZ2V0cyAocGFnZUlkKVxyXG5cdCAge1xyXG4gICAgICBpZiAocGFnZUlkIT11bmRlZmluZWQpXHJcbiAgICAgIHtcclxuXHRcdCAgICB0aGlzLnRhc2tXaWRnZXRSZWdpc3RyeVtwYWdlSWRdLnNwbGljZSgwLHRoaXMudGFza1dpZGdldFJlZ2lzdHJ5Lmxlbmd0aCk7XHJcblx0XHQgICAgdGhpcy53aWRnZXRDb3VudGVyPTA7XHJcbiAgICAgIH1cclxuICB9XHJcbiBcclxuXHJcbiAgXHJcbmdldFJlZ2lzdGVyZWRXaWRnZXRzICgpICAvL01JR09SIE5PVk9cclxuICB7XHJcbiAgIHZhciB0bXA9YW5ndWxhci5jb3B5KHRoaXMudGFza1dpZGdldFJlZ2lzdHJ5KTtcclxuICAgcmV0dXJuIHRtcDtcclxuICB9XHJcbiBnZXRMb2NhbFdpZGdldElkIChzZXJ2ZXJXaWRnZXRJZCxwYWdlSWQpICAvL01JR09SIC0gdnJhY2EgbG9jYWx3aWRnZXRpZCBha28gbXUgZGFzIHNlcnZlcndpZGdldFxyXG5cdCAge1xyXG5cdFx0aWYgKHNlcnZlcldpZGdldElkIT11bmRlZmluZWQgJiYgc2VydmVyV2lkZ2V0SWQhPScnKSB7XHJcblx0XHQgIGZvciAodmFyIGk9MDtpPHRoaXMudGFza1dpZGdldFJlZ2lzdHJ5W3BhZ2VJZF0ubGVuZ3RoO2krKykge1xyXG4gICAgICAgIGlmIChzZXJ2ZXJXaWRnZXRJZD09dGhpcy50YXNrV2lkZ2V0UmVnaXN0cnlbcGFnZUlkXVtpXS53aWRnZXRJZCkgIHJldHVybiBpO1x0ICAgXHJcbiAgICAgIH1cclxuXHQgIH1cclxuICAgIGVsc2V7ICAgICAgXHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG4gICAgXHJcbiB9XHJcbiBcclxuIGdldFJlZ2lzdGVyZWRJbnRlcmZhY2VzKHdpZGdldElEKSAgLy9NSUdPUiBOT1ZPIC0gam9zIHNlIG5lIGtvcmlzdGlcclxuICB7XHJcbiAgIC8vVE9ET1xyXG4gIGlmICh3aWRnZXRJRCE9dW5kZWZpbmVkKSB7XHJcblx0ICBmb3IgKHZhciBpPTA7aTx0aGlzLndpZGdldENvdW50ZXI7aSsrKSB7XHJcblx0XHRpZiAod2lkZ2V0SUQ9PXRoaXMudGFza1dpZGdldFJlZ2lzdHJ5W2ldLndpZGdldElkKSAgIHJldHVybiB0aGlzLnRhc2tXaWRnZXRSZWdpc3RyeVtpXS5ERUlcdFx0ICAgXHJcblx0fVxyXG4gIH1cclxuICB9IFxyXG4gICAgXHJcbiAgc2V0RGF0YSAoZGF0YSlcclxuICB7XHJcbiAgIFxyXG4gIFxyXG5cdFx0ICAgLy9zZXQgZGF0YVxyXG5cdFx0ICBcclxuICAgICAgIHZhciB3aWRnZXRJZCA9IGRhdGEud2lkZ2V0SWQ7IC8vaXBhayB0cmViYSBzZXJ2ZXJza2kgLSBpbWEgcHJvYmxlbWEgcyBzeW5jIGFzeW5jIG9kbm9zbm8gcmVkb3NsaWplZG9tIHJlZ2lzdHJhY2lqZSB3aWRnZXRhXHJcbiAgICAgICB2YXIgcGFnZUlkID0gZGF0YS5wYXJlbnRSZXNvdXJjZUlkO1xyXG4gICAgICAgdmFyIHdpZGdldEluZGV4PSB0aGlzLmdldExvY2FsV2lkZ2V0SWQod2lkZ2V0SWQscGFnZUlkKTtcclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICBpZiAod2lkZ2V0SWQhPScnKVxyXG4gICAgICAge1xyXG4gICAgICAgICAgZm9yICh2YXIgaT0wO2k8ZGF0YS5ERUkubGVuZ3RoO2krKylcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICB2YXIgbmFtZSA9IGRhdGEuREVJW2ldLm5hbWVcclxuICAgICAgICAgICB2YXIgdmFsdWUgPSBkYXRhLkRFSVtpXS52YWx1ZVxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgIGlmICAodGhpcy50YXNrV2lkZ2V0UmVnaXN0cnlbcGFnZUlkXVt3aWRnZXRJbmRleF0hPXVuZGVmaW5lZClcclxuICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgaWYgICh0aGlzLnRhc2tXaWRnZXRSZWdpc3RyeVtwYWdlSWRdW3dpZGdldEluZGV4XS5ERUkhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wO2o8dGhpcy50YXNrV2lkZ2V0UmVnaXN0cnlbcGFnZUlkXVt3aWRnZXRJbmRleF0uREVJLmxlbmd0aDtqKyspXHJcbiAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50YXNrV2lkZ2V0UmVnaXN0cnlbcGFnZUlkXVt3aWRnZXRJbmRleF0uREVJW2pdLm5hbWUgPT0gbmFtZSlcclxuICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50YXNrV2lkZ2V0UmVnaXN0cnlbcGFnZUlkXVt3aWRnZXRJbmRleF0uREVJW2pdLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy9vdm8gamUgYmlvIGJ1ZyAtIHByZXN0YWxvIGplIHJhZGl0aVxyXG4gICAgICAgICAgIC8vdGFza1dpZGdldFJlZ2lzdHJ5W2xvY2FsV2lkZ2V0SWQtMV0uREVJLltuYW1lXSA9IHZhbHVlOyAvL1RPRE8gIEdSRVNLQSAtIGJpbG8gamUgV2lkZ2V0Q291bnRlciB1bWplc3RvIHdpZGdldGlkIC0gdmlkamV0aSBzdG8gc2UgcHJvbWplbmlsb1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgIHRoaXMuJHJvb3RTY29wZS4kYnJvYWRjYXN0KCdFdmVudCcrd2lkZ2V0SWQrbmFtZSx2YWx1ZSk7IFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgfVxyXG4gICAgICAvL2Jyb2FkY2FzdCB0byBsaXN0ZW5lcnMgXHJcblx0XHQvL2NvbnNvbGUubG9nKCdCcm9hZGNhc3RhbSBFdmVudCAnK3dpZGdldElkK2VsZW1lbnQrJyByZXNvdXJjZWRlZj0nK3ZhbHVlLnJlc291cmNlSWQrJyByZXNvdXJjZUlEPScrdmFsdWUucmVzb3VyY2VSZWNvcmRJZClcdDsgIFxyXG4gICAgIFxyXG5cdFx0ICBcclxuXHRcdCAgIC8vdGhpcy4kcm9vdFNjb3BlLiRicm9hZGNhc3QoJ0V2ZW50Jyt3aWRnZXRJZCtlbGVtZW50LHZhbHVlLkRFSX0pOyAgLy9ucHIgRXZlbnQyMzRSZXNvdXJjZWlkLHZhbHVlPTNcclxuXHRcdFxyXG5cdFxyXG4gICAgXHJcbiAgICB9XHJcbiAgICBnZXREYXRhICh3aWRnZXRJZCxlbGVtZW50LHZhbHVlKVxyXG4gIHtcclxuICAgXHJcbiAgIC8vZmluZCBkYXRhXHJcbiAgIHJldHVybiB0aGlzLnRhc2tXaWRnZXRSZWdpc3RyeVt0aGlzLndpZGdldENvdW50ZXItMV1bZWxlbWVudF1cclxuICAgIFxyXG4gIH1cclxuXHJcblxyXG5nZXREYXRhQnlXaWRnZXRJZCAodGFza19leGVfaWQsdGFza19pbml0aWF0ZV9pZCxwcmV2X3Rhc2tfaWQsd2lkZ2V0SWQsZWxlbWVudClcclxuICB7XHJcbiAgICB2YXIgdGFza0V4ZUlkID0gXCJcIix0YXNrSW5pdElkPVwiXCIscHJldlRhc2tJZD1cIlwiLHRhc2tXaWRnZXQ9XCJcIixuYW1lPVwiXCI7XHJcbiAgIGlmICh0YXNrX2V4ZV9pZD09dW5kZWZpbmVkKSB0YXNrX2V4ZV9pZD1cIlwiO1xyXG4gICAgaWYgKHByZXZfdGFza19pZD09dW5kZWZpbmVkKSBwcmV2X3Rhc2tfaWQ9XCJcIjtcclxuICAgaWYgKHRhc2tfaW5pdGlhdGVfaWQ9PXVuZGVmaW5lZCkgdGFza19pbml0aWF0ZV9pZD1cIlwiO1xyXG4gICBpZiAod2lkZ2V0SWQ9PXVuZGVmaW5lZCkgd2lkZ2V0SWQ9XCJcIjtcclxuICAgaWYgKGVsZW1lbnQ9PXVuZGVmaW5lZCkgZWxlbWVudD1cIlwiO1xyXG4gICB2YXIgd2lkZ2V0Rm91bmQ9ZmFsc2U7XHJcbiAgIGZvciAodmFyIGk9MDtpPHRoaXMudGFza1dpZGdldFJlZ2lzdHJ5Lmxlbmd0aDtpKyspXHJcbiAgIHtcclxuICAgICB0YXNrRXhlSWQgPSB0aGlzLnRhc2tXaWRnZXRSZWdpc3RyeVtpXS50YXNrX2V4ZWN1dGVfaWQ7XHJcbiAgICAgdGFza0luaXRJZCA9IHRoaXMudGFza1dpZGdldFJlZ2lzdHJ5W2ldLnRhc2tfaW5pdGlhdGVfaWQ7XHJcbiAgICAgcHJldlRhc2tJZCA9IHRoaXMudGFza1dpZGdldFJlZ2lzdHJ5W2ldLnByZXZfdGFza19pZDtcclxuICAgICBpZiAodGFza0V4ZUlkPT11bmRlZmluZWQpIHt0YXNrRXhlSWQ9XCJcIjt9XHJcbiAgICAgaWYgKHRhc2tJbml0SWQ9PXVuZGVmaW5lZCkge3Rhc2tJbml0SWQ9XCJcIjt9XHJcbiAgICAgaWYgKHByZXZUYXNrSWQ9PXVuZGVmaW5lZCkge3ByZXZUYXNrSWQ9XCJcIjt9XHJcbiAgICAgdGFza1dpZGdldCA9IHRoaXMudGFza1dpZGdldFJlZ2lzdHJ5W2ldLndpZGdldElkO1xyXG4gICAgIC8vbmFtZSA9IHRoaXMudGFza1dpZGdldFJlZ2lzdHJ5W2ldLm5hbWU7XHJcbiAgICAgaWYgKHRhc2tXaWRnZXQ9PXVuZGVmaW5lZCkge3Rhc2tXaWRnZXQ9XCJcIjt9XHJcbiAgICAgIHdpZGdldEZvdW5kPWZhbHNlO1xyXG4gICAgaWYgICh0YXNrX2V4ZV9pZCE9XCJcIilcclxuICAgIHtcclxuICAgIFxyXG4gICAgICBpZiAodGFza0V4ZUlkLnRvU3RyaW5nKCkgPT0gdGFza19leGVfaWQudG9TdHJpbmcoKSlcclxuICAgICAge1xyXG4gICAgICAgIHdpZGdldEZvdW5kPXRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICAodGFza19pbml0aWF0ZV9pZCE9XCJcIilcclxuICAgIHtcclxuICAgIFxyXG4gICAgICBpZiAodGFza0luaXRJZC50b1N0cmluZygpID09IHRhc2tfaW5pdGlhdGVfaWQudG9TdHJpbmcoKSlcclxuICAgICAge1xyXG4gICAgICAgIHdpZGdldEZvdW5kPXRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgIGlmICAocHJldl90YXNrX2lkIT1cIlwiKVxyXG4gICAge1xyXG4gICAgXHJcbiAgICAgIGlmIChwcmV2VGFza0lkLnRvU3RyaW5nKCkgPT0gcHJldl90YXNrX2lkLnRvU3RyaW5nKCkpXHJcbiAgICAgIHtcclxuICAgICAgICB3aWRnZXRGb3VuZD10cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmKHdpZGdldEZvdW5kICYmIHRhc2tXaWRnZXQudG9TdHJpbmcoKT09d2lkZ2V0SWQudG9TdHJpbmcoKSlcclxuICAgIHtcclxuICAgICAgZm9yKCB2YXIgaj0wO2o8dGhpcy50YXNrV2lkZ2V0UmVnaXN0cnlbaV0uREVJLmxlbmd0aDtqKyspXHJcbiAgICAgIHtcclxuICAgICAgICBpZiAodGhpcy50YXNrV2lkZ2V0UmVnaXN0cnlbaV0uREVJW2pdLm5hbWU9PWVsZW1lbnQpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMudGFza1dpZGdldFJlZ2lzdHJ5W2ldLkRFSVtqXS52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICB9XHJcbiAgICBcclxuICAgfVxyXG4gICAvL2ZpbmQgZGF0YVxyXG4gICByZXR1cm4gMDtcclxuICAgIFxyXG4gIH1cclxuICBcclxuICAgZ2V0RGF0YUJ5V2lkZ2V0SWRPbmx5ICh3aWRnZXRJZCxlbGVtZW50KVxyXG4gIHtcclxuICAgIHZhciAgdGFza1dpZGdldD1cIlwiLG5hbWU9XCJcIjtcclxuICAgaWYgKHdpZGdldElkPT11bmRlZmluZWQpIHdpZGdldElkPVwiXCI7XHJcbiAgIGlmIChlbGVtZW50PT11bmRlZmluZWQpIGVsZW1lbnQ9XCJcIjtcclxuICAgdmFyIHdpZGdldEZvdW5kPWZhbHNlO1xyXG4gICBmb3IgKHZhciBpPTA7aTx0aGlzLnRhc2tXaWRnZXRSZWdpc3RyeS5sZW5ndGg7aSsrKVxyXG4gICB7XHJcbiAgICBcclxuICAgICB0YXNrV2lkZ2V0ID0gdGhpcy50YXNrV2lkZ2V0UmVnaXN0cnlbaV0ud2lkZ2V0SWQ7XHJcbiAgICAgLy9uYW1lID0gdGhpcy50YXNrV2lkZ2V0UmVnaXN0cnlbaV0ubmFtZTtcclxuICAgIGlmICh0YXNrV2lkZ2V0PT11bmRlZmluZWQpIHt0YXNrV2lkZ2V0PVwiXCI7fVxyXG4gICAgaWYgKHRhc2tXaWRnZXQudG9TdHJpbmcoKT09d2lkZ2V0SWQudG9TdHJpbmcoKSlcclxuICAgIHtcclxuICAgICAgZm9yKCB2YXIgaj0wO2o8dGhpcy50YXNrV2lkZ2V0UmVnaXN0cnlbaV0uREVJLmxlbmd0aDtqKyspXHJcbiAgICAgIHtcclxuICAgICAgICBpZiAodGhpcy50YXNrV2lkZ2V0UmVnaXN0cnlbaV0uREVJW2pdLm5hbWU9PWVsZW1lbnQpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMudGFza1dpZGdldFJlZ2lzdHJ5W2ldLkRFSVtqXS52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICB9XHJcbiAgICBcclxuICAgfVxyXG4gICAvL2ZpbmQgZGF0YVxyXG4gICByZXR1cm4gMDtcclxuICAgIFxyXG4gIH07XHJcbiAgXHJcbiAgIHJlZ2lzdGVyU2VhcmNoIChzZWFyY2hEZWZpbml0aW9uKVxyXG4gIHtcclxuICAgICAgICB2YXIgZXhpc3RzPWZhbHNlO1xyXG4gICAgICAgXHJcbiAgICAgICAgZm9yICh2YXIgaT0wO2k8dGhpcy5zZWFyY2hSZWdpc3RyeS5sZW5ndGg7aSsrKSB7XHJcbiAgICAgICAgICAvL3Rlc3QgLSAgdWtvbGlrbyB2ZWMgcG9zdG9qaSB3aWRnZXRpZCAgIFxyXG4gICAgICAgICBpZiAoc2VhcmNoRGVmaW5pdGlvbi53aWRnZXRJZCE9bnVsbCAmJiBzZWFyY2hEZWZpbml0aW9uLndpZGdldElkIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoUmVnaXN0cnlbaV0ud2lkZ2V0SWQ9PXNlYXJjaERlZmluaXRpb24ud2lkZ2V0SWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RzPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoUmVnaXN0cnlbaV09c2VhcmNoRGVmaW5pdGlvbjsvL29zdmplxb5pIHMgbm92aW0gcG9kYWNpbWFcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAgfS8vZm9yXHJcbiAgICAgICAgIFxyXG4gICAgICAgaWYgKCFleGlzdHMpIHtcclxuICAgIFxyXG4gICAgICAgICAgIHRoaXMuc2VhcmNoUmVnaXN0cnkucHVzaChzZWFyY2hEZWZpbml0aW9uKTtcclxuICAgICAgIH1cclxuICAgICAgIFxyXG4gICAgICAgcmV0dXJuIGV4aXN0cztcclxuICB9XHJcbiAgICBzZXRTZWFyY2ggKHdpZGdldElkLHRhc2tFeGVjdXRlSWQpXHJcbiAge1xyXG4gICAgICAgXHJcbiAgICAgICBcclxuICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLnNlYXJjaFJlZ2lzdHJ5Lmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgIC8vdGVzdCAtICB1a29saWtvIHZlYyBwb3N0b2ppIHdpZGdldGlkICAgXHJcbiAgICAgICAgIGlmICh3aWRnZXRJZCE9bnVsbCAmJiB3aWRnZXRJZCE9dW5kZWZpbmVkICYmIHRhc2tFeGVjdXRlSWQhPW51bGwgJiYgdGFza0V4ZWN1dGVJZCE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaFJlZ2lzdHJ5W2ldLnRhc2tFeGVjdXRlSWQ9PXRhc2tFeGVjdXRlSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcih2YXIgaj0wO2o8dGhpcy5zZWFyY2hSZWdpc3RyeVtpXS5jaGlsZFdpZGdldHMubGVuZ3RoO2orKylcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaFJlZ2lzdHJ5W2ldLmNoaWxkV2lkZ2V0c1tqXS53aWRnZXRJZD09d2lkZ2V0SWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hSZWdpc3RyeVtpXS5jaGlsZFdpZGdldHNbal0ucHJvY2Vzc2VkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRyb290U2NvcGUuJGJyb2FkY2FzdCgnU2VhcmNoRm9ybVJlYWR5Jyt0YXNrRXhlY3V0ZUlkK3RoaXMuc2VhcmNoUmVnaXN0cnlbaV0ud2lkZ2V0SWQsdGhpcy5zZWFyY2hSZWdpc3RyeVtpXS5jaGlsZFdpZGdldHNbal0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgIH1cclxuICAgICAgXHJcbiAgICAgICB9Ly9mb3JcclxuICAgICAgIFxyXG4gIH1cclxuICBcclxuICBnZXRTZWFyY2ggKHRhc2tFeGVjdXRlSWQsd2lkZ2V0SWQpXHJcbiAge1xyXG4gICAgICAgIFxyXG4gICAgICAgIGZvciAodmFyIGk9MDtpPHRoaXMuc2VhcmNoUmVnaXN0cnkubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgLy90ZXN0IC0gIHVrb2xpa28gdmVjIHBvc3Rvamkgd2lkZ2V0aWQgICBcclxuICAgICAgICAgaWYgKHdpZGdldElkIT1udWxsICYmIHdpZGdldElkIT11bmRlZmluZWQgJiYgdGFza0V4ZWN1dGVJZCE9bnVsbCAmJiB0YXNrRXhlY3V0ZUlkIT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoUmVnaXN0cnlbaV0ud2lkZ2V0SWQ9PXdpZGdldElkICYmIHRoaXMuc2VhcmNoUmVnaXN0cnlbaV0udGFza0V4ZWN1dGVJZD09dGFza0V4ZWN1dGVJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlYXJjaFJlZ2lzdHJ5W2ldOyAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgIH1cclxuICAgICAgXHJcbiAgICAgICB9Ly9mb3JcclxuICAgICAgICAgXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICAgIGdldFByZXZUYXNrRGF0YSAodGFza19leGVfaWQpXHJcbiAge1xyXG5cdHZhciByZXRfdmFsdWU9W107XHJcbiAgICBpZiAodGFza19leGVfaWQ9PXVuZGVmaW5lZCkgcmV0dXJuIDA7XHJcbiAgIFxyXG4gICBmb3IgKHZhciBpPTA7aTx0aGlzLnRhc2tXaWRnZXRSZWdpc3RyeS5sZW5ndGg7aSsrKVxyXG4gICB7XHJcbiAgICAgdmFyIHRhc2tFeGVJZCA9IHRoaXMudGFza1dpZGdldFJlZ2lzdHJ5W2ldLnRhc2tfZXhlY3V0ZV9pZDtcclxuICAgICBpZiAodGFza0V4ZUlkPT11bmRlZmluZWQpIHt0YXNrRXhlSWQ9XCJcIjt9XHJcbiAgICAgXHJcbiAgICBpZiAodGFza0V4ZUlkLnRvU3RyaW5nKCkgPT0gdGFza19leGVfaWQudG9TdHJpbmcoKSlcclxuICAgIHtcclxuICAgICAgXHJcbiAgICAgIHJldF92YWx1ZS5wdXNoKHRoaXMudGFza1dpZGdldFJlZ2lzdHJ5W2ldKTtcclxuICAgIH1cclxuICAgIFxyXG4gICB9XHJcbiAgIC8vZmluZCBkYXRhXHJcbiAgIHJldHVybiByZXRfdmFsdWU7XHJcbiAgICBcclxuICB9XHJcbiAgZ2V0UHJldlJlc291cmNlRGF0YSAodGFza19leGVfaWQscmVzb3VyY2VfaWQscHJldl9yZXNvdXJjZV9pZClcclxuICB7XHJcbiAgdmFyIHJldF92YWx1ZT1bXTtcclxuICBsZXQgcmlkLCByZXNvdXJjZUlkLHJfdHlwZVxyXG4gIGlmICh0YXNrX2V4ZV9pZCE9dW5kZWZpbmVkICYmIHRhc2tfZXhlX2lkIT0wKSBcclxuICAgIHtcclxuICAgICAgcmlkPXRhc2tfZXhlX2lkXHJcbiAgICAgIHJfdHlwZT0ndGFzaydcclxuICAgIH1cclxuICBlbHNlIGlmIChyZXNvdXJjZV9pZCE9dW5kZWZpbmVkICYmIHJlc291cmNlX2lkIT0wKSBcclxuICB7XHJcbiAgICByaWQ9cmVzb3VyY2VfaWRcclxuICAgIHJfdHlwZT0ncGFnZSdcclxuICB9XHJcbiAgZWxzZSByZXR1cm4gMFxyXG4gICBcclxuICAgZm9yIChsZXQgaT0wO2k8dGhpcy50YXNrV2lkZ2V0UmVnaXN0cnlbcHJldl9yZXNvdXJjZV9pZF0ubGVuZ3RoO2krKylcclxuICAge1xyXG4gICAgaWYgKHJfdHlwZT09J3Rhc2snKSByZXNvdXJjZUlkID0gdGhpcy50YXNrV2lkZ2V0UmVnaXN0cnlbcHJldl9yZXNvdXJjZV9pZF1baV0udGFza19leGVjdXRlX2lkXHJcbiAgICBlbHNlIHJlc291cmNlSWQgPSB0aGlzLnRhc2tXaWRnZXRSZWdpc3RyeVtwcmV2X3Jlc291cmNlX2lkXVtpXS5yZXNvdXJjZV9pZFxyXG4gICAgXHJcbiAgICBpZiAocmVzb3VyY2VJZD09dW5kZWZpbmVkKSByZXNvdXJjZUlkPScnXHJcbiAgICAgXHJcbiAgICBpZiAocmVzb3VyY2VJZC50b1N0cmluZygpID09IHJpZC50b1N0cmluZygpKVxyXG4gICAge1xyXG4gICAgICBcclxuICAgICAgcmV0X3ZhbHVlLnB1c2godGhpcy50YXNrV2lkZ2V0UmVnaXN0cnlbcHJldl9yZXNvdXJjZV9pZF1baV0pO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgIH1cclxuICAgLy9maW5kIGRhdGFcclxuICAgcmV0dXJuIHJldF92YWx1ZTtcclxuICAgIFxyXG4gIH1cclxuICBnZXRQcmV2aW91c1Rhc2tXaWRnZXQgIChwcmV2X3Rhc2tfaWQpXHJcbiAgICB7XHJcbiAgICAgIHZhciBwVGFza0RhdGEgPSB0aGlzLmdldFByZXZUYXNrRGF0YShwcmV2X3Rhc2tfaWQpO1xyXG4gICAgICAgICAgICB2YXIgZGF0YXNldElkPTAsZGF0YXNldFJlY29yZElkPTA7XHJcbiAgICAgICAgICAgIGlmIChwVGFza0RhdGEuREVJIT11bmRlZmluZWQgJiYgcFRhc2tEYXRhLkRFSSE9bnVsbClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxwVGFza0RhdGEuREVJLmxlbmd0aDtpKyspXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBpZiAocFRhc2tEYXRhLkRFSVtpXS5uYW1lPT1cImRhdGFzZXRMaXN0UmVjb3JkSWRcIilcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpZiAocFRhc2tEYXRhLkRFSVtpXS52YWx1ZSE9dW5kZWZpbmVkICYmIHBUYXNrRGF0YS5ERUlbaV0udmFsdWUhPW51bGwpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIGZvciAodmFyIGo9MDtqPHBUYXNrRGF0YS5ERUlbaV0udmFsdWUubGVuZ3RoO2orKylcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgaWYgKHBUYXNrRGF0YS5ERUlbaV0udmFsdWVbal0ubmFtZT09XCJyZXNvdXJjZUlkXCIgJiYgcFRhc2tEYXRhLkRFSVtpXS52YWx1ZVtqXS52YWx1ZSE9dW5kZWZpbmVkKSBkYXRhc2V0SWQ9cFRhc2tEYXRhLkRFSVtpXS52YWx1ZVtqXS52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgIGlmIChwVGFza0RhdGEuREVJW2ldLnZhbHVlW2pdLm5hbWU9PVwicmVzb3VyY2VSZWNvcmRJZFwiICYmIHBUYXNrRGF0YS5ERUlbaV0udmFsdWVbal0udmFsdWUhPXVuZGVmaW5lZCkgZGF0YXNldFJlY29yZElkPXBUYXNrRGF0YS5ERUlbaV0udmFsdWVbal0udmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICByZXR1cm4geydkYXRhc2V0SWQnOmRhdGFzZXRJZCwnZGF0YXNldFJlY29yZElkJzpkYXRhc2V0UmVjb3JkSWR9O1xyXG4gICAgfTtcclxuICAgZ2V0VGFza0lEICgpXHJcbiAge1xyXG4gICAgXHJcbiAgICByZXR1cm4gdGhpcy50YXNrSUQ7XHJcbiAgICBcclxuICB9XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlOyIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFdpZGdldFJlZ2lzdGVyU2VydmljZSBGQUNUT1JZICoqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuJ3VzZSBzdHJpY3QnO1xuXG4vL2V4YW1wbGUgb2YgZW1pdHRlclxuY2xhc3MgRXZlbnRFbWl0dGVyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5ldmVudHMgPSB7fTtcbiAgfVxuICBvbihldmVudCwgbGlzdGVuZXIpIHtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5ldmVudHNbZXZlbnRdICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgIHRoaXMuZXZlbnRzW2V2ZW50XSA9IFtdO1xuICAgICAgfVxuICAgICAgdGhpcy5ldmVudHNbZXZlbnRdLnB1c2gobGlzdGVuZXIpO1xuICAgICAgcmV0dXJuICgpID0+IHRoaXMucmVtb3ZlTGlzdGVuZXIoZXZlbnQsIGxpc3RlbmVyKTtcbiAgfVxuICByZW1vdmVMaXN0ZW5lcihldmVudCwgbGlzdGVuZXIpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuZXZlbnRzW2V2ZW50XSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5ldmVudHNbZXZlbnRdLmluZGV4T2YobGlzdGVuZXIpO1xuICAgICAgICBpZiAoaWR4ID4gLTEpIHtcbiAgICAgICAgICB0aGlzLmV2ZW50c1tldmVudF0uc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgIH1cbiAgICB9XG4gIH1cbiAgZW1pdChldmVudCwgLi4uYXJncykge1xuICAgIGlmICh0eXBlb2YgdGhpcy5ldmVudHNbZXZlbnRdID09PSAnb2JqZWN0Jykge1xuICAgICAgdGhpcy5ldmVudHNbZXZlbnRdLmZvckVhY2gobGlzdGVuZXIgPT4gbGlzdGVuZXIuYXBwbHkodGhpcywgYXJncykpO1xuICAgIH1cbiAgfVxuICBvbmNlKGV2ZW50LCBsaXN0ZW5lcikge1xuICAgIGNvbnN0IHJlbW92ZSA9IHRoaXMub24oZXZlbnQsICguLi5hcmdzKSA9PiB7XG4gICAgICAgIHJlbW92ZSgpO1xuICAgICAgICBsaXN0ZW5lci5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9KTtcbiAgfVxufTtcblxuY2xhc3MgV2lkZ2V0UmVnaXN0ZXJTZXJ2aWNle1xuXHRcbiAgXHRjb25zdHJ1Y3Rvcigkcm9vdFNjb3BlLEdyaWRzdGVyU2VydmljZSwkaW5qZWN0b3IpIHtcbiAgICAgICAgICAgICAgIFxuXG4gICAgICAgICAgICB0aGlzLiRyb290U2NvcGU9JHJvb3RTY29wZTtcbiAgICAgICAgICAgIHRoaXMuR3JpZHN0ZXJTZXJ2aWNlID0gR3JpZHN0ZXJTZXJ2aWNlO1xuICAgICAgICAgICAgdGhpcy4kaW5qZWN0b3IgPSAkaW5qZWN0b3I7ICAgXG4gICAgICAgICAgICB0aGlzLnRvb2xib3hMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudGFza1Rvb2xib3hMb2FkZWQ9ZmFsc2U7XG4gICAgICAgICAgICBHcmlkc3RlclNlcnZpY2UuU2V0VGFza1Rvb2xib3hMb2FkZWQoZmFsc2UpOyAgICBcbiAgICAgICAgICAgXG4gICAgICAgIFxuICAgIH1cbiAgICAgICAgXG4gICAgc3RhdGljICRpbmplY3QgPSBbJyRyb290U2NvcGUnLCdHcmlkc3RlclNlcnZpY2UnLCckaW5qZWN0b3InXTsvLywnTWVudVNlcnZpY2UnXTsgLy9hZGQgQ2xlYXJTZXJ2aWNlICdDbGVhclNlcnZpY2UnLFxuXG4gIFxuICBcbiAgXG4gXG4gIExpc3RlblRvRXZlbnRzKClcbiAge1xuXHR2YXIgaW5zdGFuY2UgPSB0aGlzO1xuXHR0aGlzLiRyb290U2NvcGUuJG9uKCdSZWdpc3RlckRhdGFzZXRXaWRnZXRzJyxmdW5jdGlvbihldmVudCwgZGF0YSl7XG4gICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS50b29sYm94TG9hZGVkKSBpbnN0YW5jZS5SZWdpc3RlckRhdGFzZXRXaWRnZXRzKCk7XG4gICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgaW5zdGFuY2UudG9vbGJveExvYWRlZD10cnVlO1xuICAgIH0pO1xuXHRcdFx0ICBcbiAgICB0aGlzLiRyb290U2NvcGUuJG9uKCdSZWdpc3RlclRhc2tXaWRnZXRzJyxmdW5jdGlvbihldmVudCwgZGF0YSl7XG4gIFxuICAgICAgICAgICAgICAgICAgICBpZiAoIWluc3RhbmNlLnRhc2tUb29sYm94TG9hZGVkKSAgICBpbnN0YW5jZS5SZWdpc3RlclRhc2tXaWRnZXRzKCk7XG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnRhc2tUb29sYm94TG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuR3JpZHN0ZXJTZXJ2aWNlLlNldFRhc2tUb29sYm94TG9hZGVkKHRydWUpOyAgICBcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgfSk7XG4gIH1cbiAgRW1pdFJlZ2lzdGVyV2lkZ2V0RXZlbnQgKClcbiAge1xuICAgIHZhciBmO1xuICAgIHZhciBpbnN0YW5jZSA9IHRoaXM7XG4gICAgaWYgKCF0aGlzLnRvb2xib3hMb2FkZWQgJiYgIXRoaXMudGFza1Rvb2xib3hMb2FkZWQpXG4gICAgeyBcbiAgICAgIGFuZ3VsYXIubW9kdWxlKCdLYXRhbHlvRGlyZWN0aXZlU2VydmljZXMnKVsnX2ludm9rZVF1ZXVlJ10uZm9yRWFjaChmdW5jdGlvbih2YWx1ZSl7IFxuICAgICAgICBmID0gIGluc3RhbmNlLiRpbmplY3Rvci5nZXQodmFsdWVbMl1bMF0pO1xuICAgICAgfSk7XG4gICAgfSAgXG5cbiAgdGhpcy4kcm9vdFNjb3BlLiRlbWl0KCdSZWdpc3RlckRhdGFzZXRXaWRnZXRzJyxudWxsKTtcbiAgfTtcblxuICBFbWl0UmVnaXN0ZXJUYXNrV2lkZ2V0RXZlbnQgKClcbiAge1xuICAgIHZhciBmO1xuICAgIHZhciBpbnN0YW5jZSA9IHRoaXM7XG4gICAgIGlmICghdGhpcy50b29sYm94TG9hZGVkICYmICF0aGlzLnRhc2tUb29sYm94TG9hZGVkKVxuICAgIHsgXG4gICAgICBhbmd1bGFyLm1vZHVsZSgnS2F0YWx5b0RpcmVjdGl2ZVNlcnZpY2VzJylbJ19pbnZva2VRdWV1ZSddLmZvckVhY2goZnVuY3Rpb24odmFsdWUpeyBcbiAgICAgIGYgPSAgaW5zdGFuY2UuJGluamVjdG9yLmdldCh2YWx1ZVsyXVswXSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy4kcm9vdFNjb3BlLiRlbWl0KCdSZWdpc3RlclRhc2tXaWRnZXRzJyxudWxsKTtcbiAgfTtcbiAgXG4gIFJlZ2lzdGVyRGF0YXNldFdpZGdldHMgKClcbiAgXG4gIHtcbiAgICB2YXIgdG9vbGJveEl0ZW07XG4gIFxuICAgIHZhciB0b29sYm94VGVtcGxhdGUgPXRoaXMuR3JpZHN0ZXJTZXJ2aWNlLmdldFRvb2xib3hUZW1wbGF0ZSgpO1xuICAgIFxuICAgIGZvciAodmFyIGk9MDtpPHRvb2xib3hUZW1wbGF0ZS5sZW5ndGg7aSsrKVxuICAgIHtcbiAgICAgIHRvb2xib3hJdGVtID0gdG9vbGJveFRlbXBsYXRlW2ldO1xuICAgICAgdGhpcy5Hcmlkc3RlclNlcnZpY2UuUmVnaXN0ZXJEYXRhc2V0V2lkZ2V0KHRvb2xib3hJdGVtKTtcbiAgICB9ICBcbiAgfTtcbiBcbiBcbiAgUmVnaXN0ZXJUYXNrV2lkZ2V0cyAoKVxuICBcbiAge1xuICAgIHZhciB0YXNrVG9vbGJveEl0ZW07XG4gICAgdmFyIHRhc2tUb29sYm94VGVtcGxhdGU9dGhpcy5Hcmlkc3RlclNlcnZpY2UuZ2V0VGFza1Rvb2xib3hUZW1wbGF0ZSgpO1xuICBcbiAgICBmb3IgKHZhciBpPTA7aTx0YXNrVG9vbGJveFRlbXBsYXRlLmxlbmd0aDtpKyspXG4gICAge1xuICAgICAgdGFza1Rvb2xib3hJdGVtID0gdGFza1Rvb2xib3hUZW1wbGF0ZVtpXTtcbiAgICAgIHRoaXMuR3JpZHN0ZXJTZXJ2aWNlLlJlZ2lzdGVyVGFza1dpZGdldCh0YXNrVG9vbGJveEl0ZW0pO1xuICAgIH1cbiAgXG4gICAgXG4gIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRSZWdpc3RlclNlcnZpY2U7IiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgIEthdGFseW8gZnJvbSAnLi9pbmRleC5qcyc7XG4vL2ltcG9ydCB0ZW1wbGF0ZUNhY2hlIGZyb20gJy9zdGF0aWMvbW9kdWxlcy8wMDAxX21vZHVsZXMvY3RybHMvYnVpbGQvYW5ndWxhclRlbXBsYXRlcy9rdHJvdXRldGVtcGxhdGVzLmpzJztcbmltcG9ydCB0ZW1wbGF0ZUNhY2hlIGZyb20gJy4uLy4uL2N0cmxzL2J1aWxkL2FuZ3VsYXJUZW1wbGF0ZXMva3Ryb3V0ZXRlbXBsYXRlcy5qcyc7XG5pbXBvcnQgdGVtcGxhdGVDYWNoZURpciBmcm9tICcuLi8uLi8uLi8wMDAwX2NvbW1vbi8wMDAxX2RpcmVjdGl2ZXMvYW5ndWxhclRlbXBsYXRlcy9idWlsZC9rdGRpcmVjdGl2ZXRlbXBsYXRlcy5qcyc7XG5cbmFuZ3VsYXIuYm9vdHN0cmFwKGRvY3VtZW50LCBbS2F0YWx5b10pO1xuIiwibW9kdWxlLmV4cG9ydHM9e1xyXG5cImhyLUhSXCI6IHtcdFx0XHJcblx0XCJjaGFuZ2VQYXNzd29yZEJ1dHRvblwiOiBcIlByb21qZW5pIGxvemlua3VcIixcclxuXHRcImNoYW5nZVBhc3N3b3JkVHlwZVwiOiBcImV4dGVybmFsXCIsXHJcblx0XCJjaGVja2RSZXF1ZXN0TXNnXCI6IFwiUHJvdmplcmEgdSB0aWpla3UuLi5cIixcclxuXHRcImNvbmZpcm1OZXdQYXNzd29yZExhYmVsXCI6IFwiUG90dnJkYSBub3ZlIGxvemlua2VcIixcclxuXHRcImNvbmZpcm1QYXNzd29yZEVycm9yXCI6IFwiTG96aW5rZSBtb3JhanUgYml0aSBpZGVudGnEjW5lXCIsXHJcblx0XCJkYXRhTG9hZGluZ1RleHRcIjogXCIgIFByaWphdmEgdSB0aWpla3UuLi5cIixcclxuXHRcImdvdG9Mb2dpbkxpbmtcIjogXCJQb3ZyYXRhayBuYSBzdHJhbmljdSB6YSBwcmlqYXZ1XCIsXHJcblx0XCJnb3RvTG9naW5UZXh0XCI6IFwiUG92cmF0YWsgbmFcIixcclxuXHRcImludmFsaWRSZXF1ZXN0TXNnXCI6IFwiTmVpc3ByYXZhbiB6YWh0amV2XCIsXHJcblx0XCJsb2dpbkJ1dHRvblwiOiBcIlByaWphdmFcIixcclxuXHRcImxvZ2luRXJyb3JNc2dcIjogXCJOZXVzcGplxaFhbiBwb2t1xaFhaiBwcmlqYXZlXCIsXHJcblx0XCJsb2dpbk1zZ1wiOiBcIlByaWphdmEgdSB0aWpla3UuLi5cIixcclxuXHRcImxvZ291dE1zZzFcIjogXCJQcmlqYXZhXCIsXHJcblx0XCJsb2dvdXRNc2cyXCI6IFwiUHJpamF2YVwiLFxyXG5cdFwibG9nb3V0UGFnZUxvZ2luTGlua1wiOiBcIlByaWphdmFcIixcclxuXHRcIm5ld0NoYW5nZVBhc3NFcnJvclwiOiBcIk9iYXZlemFuIHVub3MgbG96aW5rZVwiLFxyXG5cdFwibmV3UGFzc3dvcmRMYWJlbFwiOiBcIk5vdmEgbG96aW5rYVwiLFxyXG5cdFwicGFnZUhlYWRlclwiOiBcIkFkbWluaXN0cmFjaWphIGtvcmlzbmlrYVwiLFxyXG5cdFwibG9naW5QYWdlSGVhZGVyXCI6IFwiUHJpamF2YSB1IHN1c3RhdlwiLFxyXG5cdFwicGFzc3dvcmRcIjogXCJMb3ppbmthXCIsXHJcblx0XCJwYXNzd29yZEVycm9yXCI6IFwiT2JhdmV6YW4gdW5vcyBsb3ppbmtlXCIsXHJcblx0XCJwcm9jZXNzaW5nTGFiZWxcIjogXCJPYnJhZGEgdSB0aWpla3UuLi5cIixcclxuXHRcInJlc2V0UGFzc3dvcmRMYWJlbFwiOiBcIlByb21qZW5hIGxvemlua2VcIixcclxuXHRcInVwc01zZ1wiOiBcIlVwcyFcIixcclxuXHRcInVzZXJuYW1lXCI6IFwiS29yaXNuacSNa28gaW1lXCIsXHJcblx0XCJ1c2VybmFtZUVycm9yXCI6IFwiT2JhdmV6YW4gdW5vcyBrb3Jpc25pxI1rb2cgaW1lbmFcIixcclxuICAgIFwiY2FuY2VsQnV0dG9ubGFiZWxcIjogXCJPZHVzdGFuaVwiLFxyXG4gICAgXCJjaGFuZ2VQYXNzd29yZEJ1dHRvblwiOiBcIlByb21qZW5pIGxvemlua3VcIixcclxuICAgIFwiY2hhbmdlUGFzc3dvcmRIZWFkZXJcIjogXCJQcm9tamVuYSBsb3ppbmtlXCIsXHJcbiAgICBcImNvbmZpcm1OZXdQYXNzd29yZExhYmVsXCI6IFwiUG90dnJkYSBub3ZlIGxvemlua2VcIixcclxuICAgIFwiY29uZmlybVBhc3NFcnJvclwiOiBcIkxvemlua2UgbW9yYWp1IGJpdGkgaXN0ZVwiLFxyXG4gICAgXCJjb3B5QnV0dG9ubGFiZWxcIjogXCJLb3BpcmFqIHBvdmV6bmljdSB6YSByZXNldCBsb3ppbmtlXCIsXHJcbiAgICBcImNvcHlNc2dcIjogXCJLb3BpcmFubyFcIixcclxuICAgIFwiY3VycmVudFBhc3NFcnJvclwiOiBcIlVub3MgdHJlbnV0bmUgbG96aW5rZSBqZSBvYmF2ZXphblwiLFxyXG4gICAgXCJjdXJyZW50UGFzc3dvcmRMYWJlbFwiOiBcIlRyZW51dG5hIGxvemlua2FcIixcclxuICAgIFwiZWRpdEJ1dHRvbkxhYmVsXCI6IFwiSXptamVuaVwiLFxyXG4gICAgXCJlZGl0VXNlckhlYWRlclwiOiBcIlBvZGFjaSBvIGtvcmlzbmlrdVwiLFxyXG4gICAgXCJlbWFpbFwiOiBcIkUtbWFpbFwiLFxyXG4gICAgXCJlbWFpbEVycm9yXCI6IFwiVXBpxaFpdGUgZS1tYWlsXCIsXHJcbiAgICBcImZpcnN0TmFtZUVycm9yXCI6IFwiVXBpxaFpdGUgaW1lXCIsXHJcbiAgICBcImZpcnN0X25hbWVcIjogXCJJbWVcIixcclxuICAgIFwiZ3JvdXBzXCI6IFwiR3J1cGVcIixcclxuICAgIFwibGFzdExvZ2luTGFiZWxcIjogXCJEYXR1bSB6YWRuamVnIGxvZ2lyYW5qYVwiLFxyXG4gICAgXCJsYXN0TmFtZUVycm9yXCI6IFwiVXBpxaFpdGUgcHJlemltZVwiLFxyXG4gICAgXCJsYXN0X25hbWVcIjogXCJQcmV6aW1lXCIsXHJcbiAgICBcImxvYWRVc2Vyc01zZ1wiOiBcIlXEjWl0YXZhbmplIGtvcmlzbmlrYSB1IHRpamVrdS4uLlwiLFxyXG4gICAgXCJteURldGFpbHNQYWdlSGVhZGVyXCI6IFwiTW9qaSBrb3Jpc25pxI1raSBwb2RhY2lcIixcclxuICAgIFwibmV3UGFzc0Vycm9yXCI6IFwiVW5lc2l0ZSBpc3ByYXZudSBsb3ppbmt1IChtaW5pbWFsbm8gOCB6bmFrb3ZhIG9kIGtvamloIGJhcmVtIDEgYnJvaiwgMSBtYWxvLCAxIHZlbGlrbyBzbG92byBpIDEgc3BlY2lqYWxuaSB6bmFrKVwiLFxyXG4gICAgXCJuZXdQYXNzd29yZExhYmVsXCI6IFwiTm92YSBsb3ppbmthXCIsXHJcbiAgICBcIm5ld1VzZXJCdG5MYWJlbFwiOiBcIk5vdmkga29yaXNuaWtcIixcclxuICAgIFwibmV3VXNlckhlYWRlclwiOiBcIk5vdmkga29yaXNuaWtcIixcclxuICAgIFwicGFzc3dvcmRcIjogXCJMb3ppbmthXCIsXHJcbiAgICBcInBhc3N3b3JkRXJyb3JcIjogXCJVcGnFoWl0ZSBsb3ppbmt1XCIsXHJcbiAgICBcInJlc2V0QnV0dG9ubGFiZWxcIjogXCJSZXNldCBsb3ppbmtlXCIsXHJcbiAgICBcInNhdmVCdXR0b25sYWJlbFwiOiBcIlNuaW1pIHByb21qZW5lXCIsXHJcbiAgICBcInNlYXJjaEdyb3Vwc1RleHRcIjogXCJPZGFiZXJpdGUgZ3J1cGUuLi5cIixcclxuICAgIFwic2VhcmNoTGFiZWxcIjogXCJUcmHFvmkga29yaXNuaWtlLi4uXCIsXHJcbiAgICBcInN1cGVyVXNlckxhYmVsXCI6IFwiQWRtaW5pc3RyYXRvclwiLFxyXG4gICAgXCJ1c2VyTGlzdEdyb3Vwc0hlYWRlclwiOiBcIkdydXBlXCIsXHJcbiAgICBcInVzZXJMaXN0VXNlcm5hbWVIZWFkZXJcIjogXCJLb3Jpc25pxI1rbyBpbWVcIixcclxuICAgIFwidXNlcm5hbWVcIjogXCJLb3Jpc25pxI1rbyBpbWVcIixcclxuICAgIFwidXNlcm5hbWVFcnJvclwiOiBcIlVwacWhaXRlIGtvcmlzbmnEjWtvIGltZVwiLFxyXG5cdFwidXNlckFkdmFuY2VkU2V0dGluZ3NcIjogXCJLb3Jpc25pxI1rZSBwb3N0YXZrZVwiLFxyXG5cdFwic2F2ZVwiIDogXCJTbmltaVwiLFxyXG5cdFwiYWRkRGF0YXNldFwiOiBcIkRvZGFqXCIsXHJcblx0XCJwb3BvdmVyXCI6IHtcclxuXHRcdFx0XCJuZXdyZXNvdXJjZS1wYWdlXCI6IFwiQ3JlYXRlIHlvdXIgZmlyc3QgcGFnZSFcIixcclxuXHRcdFx0XCJuZXdyZXNvdXJjZS1kYXRhc2V0XCI6IFwiWW91IHNob3VkIGNyZWF0ZSBkYXRhc2V0IGlmIHlvdSB3YW50IHRvIHN0b3JlIGRhdGEgaW4geW91ciBhcHBsaWNhdGlvbiEgXCIsXHJcblx0XHRcdFwiYXBwLm5hdmJhci5yZXNvdXJjZXMubmV3XCI6IFwiQ2xpY2sgaGVyZSB0byBjcmVhdGUgbmV3IHJlc291cmNlIVwiLFxyXG5cdFx0XHRcIndpZGdldC10b29sYm94XCI6IFwiRHJhZyBhbmQgZHJvcCBjb21wb25lbnRzIGZyb20gdG9vbGJveCBiZWxvd1wiLFxyXG5cdFx0XHRcImFkZC1hY3Rpb24tYnV0dG9uXCI6IFwiQ2xpY2sgaGVyZSB0byBhZGQgYWN0aW9uXCJcclxuXHRcdH1cclxuXHR9LFxyXG5cImVuLUdCXCI6IHtcclxuXHRcdFwiY2FuY2VsQnV0dG9ubGFiZWxcIjogXCJDYW5jZWxcIixcclxuXHRcdFwiY2hhbmdlUGFzc3dvcmRCdXR0b25cIjogXCJDaGFuZ2UgUGFzc3dvcmRcIixcclxuXHRcdFwiY2hhbmdlUGFzc3dvcmRIZWFkZXJcIjogXCJDaGFuZ2UgUGFzc3dvcmRcIixcclxuXHRcdFwiY2hhbmdlUGFzc3dvcmRUeXBlXCI6IFwiZXh0ZXJuYWxcIixcclxuXHRcdFwiY2hlY2tkUmVxdWVzdE1zZ1wiOiBcIkNoZWNrIGluIHByb2dyZXNzLi4uXCIsXHJcblx0XHRcImNvbmZpcm1OZXdQYXNzd29yZExhYmVsXCI6IFwiQ29uZmlybSBOZXcgUGFzc3dvcmRcIixcclxuXHRcdFwiY29uZmlybVBhc3NFcnJvclwiOiBcIlBhc3N3b3JkcyBtdXN0IG1hdGNoXCIsXHJcblx0XHRcImNvbmZpcm1QYXNzd29yZEVycm9yXCI6IFwiUGFzc3dvcmRzIG11c3QgYmUgaWRlbnRpY2FsXCIsXHJcblx0XHRcImNvcHlCdXR0b25sYWJlbFwiOiBcIkNvcHkgUmVzZXQgUGFzc3dvcmQgTGlua1wiLFxyXG5cdFx0XCJjb3B5TXNnXCI6IFwiQ29waWVkIVwiLFxyXG5cdFx0XCJjdXJyZW50UGFzc0Vycm9yXCI6IFwiQ3VycmVudCBwYXNzd29yZCBpcyByZXF1aXJlZFwiLFxyXG5cdFx0XCJjdXJyZW50UGFzc3dvcmRMYWJlbFwiOiBcIkN1cnJlbnQgUGFzc3dvcmRcIixcclxuXHRcdFwiZGF0YUxvYWRpbmdUZXh0XCI6IFwiRGF0YSBsb2FkaW5nLCBsb2dpbiBpbiBwcm9ncmVzcy4uLlwiLFxyXG5cdFx0XCJlZGl0QnV0dG9uTGFiZWxcIjogXCJFZGl0XCIsXHJcblx0XHRcImVkaXRVc2VySGVhZGVyXCI6IFwiVXNlciBJbmZvcm1hdGlvblwiLFxyXG5cdFx0XCJlbWFpbFwiOiBcIkUtbWFpbFwiLFxyXG5cdFx0XCJlbWFpbEVycm9yXCI6IFwiRW50ZXIgYW4gZS1tYWlsXCIsXHJcblx0XHRcImZpcnN0TmFtZUVycm9yXCI6IFwiRW50ZXIgYSBmaXJzdCBuYW1lXCIsXHJcblx0XHRcImZpcnN0X25hbWVcIjogXCJGaXJzdCBOYW1lXCIsXHJcblx0XHRcImdvdG9Mb2dpbkxpbmtcIjogXCJCYWNrIHRvIHRoZSBsb2dpbiBwYWdlXCIsXHJcblx0XHRcImdvdG9Mb2dpblRleHRcIjogXCJCYWNrIHRvXCIsXHJcblx0XHRcImdyb3Vwc1wiOiBcIkdyb3Vwc1wiLFxyXG5cdFx0XCJpbnZhbGlkUmVxdWVzdE1zZ1wiOiBcIkludmFsaWQgcmVxdWVzdFwiLFxyXG5cdFx0XCJsYXN0TG9naW5MYWJlbFwiOiBcIkxhc3QgbG9naW5cIixcclxuXHRcdFwibGFzdE5hbWVFcnJvclwiOiBcIkVudGVyIGEgbGFzdCBuYW1lXCIsXHJcblx0XHRcImxhc3RfbmFtZVwiOiBcIkxhc3QgTmFtZVwiLFxyXG5cdFx0XCJsb2FkVXNlcnNNc2dcIjogXCJMb2FkaW5nIHVzZXJzIGluIHByb2dyZXNzLi4uXCIsXHJcblx0XHRcImxvYWRVc2Vyc01zZ1wiOiBcIkxvYWRpbmcgdXNlcnMuLi5cIixcclxuXHRcdFwibG9naW5CdXR0b25cIjogXCJMb2dpblwiLFxyXG5cdFx0XCJsb2dpbkVycm9yTXNnXCI6IFwiVW5zdWNjZXNzZnVsIGxvZ2luIGF0dGVtcHRcIixcclxuXHRcdFwibG9naW5Nc2dcIjogXCJMb2dpbiBpbiBwcm9ncmVzcy4uLlwiLFxyXG5cdFx0XCJsb2dvdXRNc2cxXCI6IFwiWW91IGFyZSBsb2dnZWQgb3V0LiBUbyBsb2cgaW4sIGNsaWNrIFwiLFxyXG5cdFx0XCJsb2dvdXRNc2cyXCI6IFwiTG9naW5cIixcclxuXHRcdFwibG9nb3V0UGFnZUxvZ2luTGlua1wiOiBcIkxvZ2luXCIsXHJcblx0XHRcIm15RGV0YWlsc1BhZ2VIZWFkZXJcIjogXCJNeSBVc2VyIERhdGFcIixcclxuXHRcdFwibmV3Q2hhbmdlUGFzc0Vycm9yXCI6IFwiUmVxdWlyZWQgZW50cnkgb2YgcGFzc3dvcmRcIixcclxuXHRcdFwibmV3UGFzc0Vycm9yXCI6IFwiRW50ZXIgYSB2YWxpZCBwYXNzd29yZCAoYXQgbGVhc3QgOCBjaGFyYWN0ZXJzLCBpbmNsdWRpbmcgMSBudW1iZXIsIDEgbG93ZXJjYXNlIGxldHRlciwgMSB1cHBlcmNhc2UgbGV0dGVyLCBhbmQgMSBzcGVjaWFsIGNoYXJhY3RlcilcIixcclxuXHRcdFwibmV3UGFzc3dvcmRMYWJlbFwiOiBcIk5ldyBQYXNzd29yZFwiLFxyXG5cdFx0XCJuZXdVc2VyQnRuTGFiZWxcIjogXCJOZXcgVXNlclwiLFxyXG5cdFx0XCJuZXdVc2VySGVhZGVyXCI6IFwiTmV3IFVzZXJcIixcclxuXHRcdFwibG9naW5QYWdlSGVhZGVyXCI6IFwiTG9naW4gdG8gdGhlIHN5c3RlbVwiLFxyXG5cdFx0XCJwYWdlSGVhZGVyXCI6IFwiVXNlciBBZG1pbmlzdHJhdGlvblwiLFxyXG5cdFx0XCJwYXNzd29yZFwiOiBcIlBhc3N3b3JkXCIsXHJcblx0XHRcInBhc3N3b3JkRXJyb3JcIjogXCJSZXF1aXJlZCBlbnRyeSBvZiBwYXNzd29yZFwiLFxyXG5cdFx0XCJwcm9jZXNzaW5nTGFiZWxcIjogXCJQcm9jZXNzaW5nIGluIHByb2dyZXNzLi4uXCIsXHJcblx0XHRcInJlc2V0QnV0dG9ubGFiZWxcIjogXCJSZXNldCBQYXNzd29yZFwiLFxyXG5cdFx0XCJyZXNldFBhc3N3b3JkTGFiZWxcIjogXCJDaGFuZ2UgcGFzc3dvcmRcIixcclxuXHRcdFwic2F2ZUJ1dHRvbmxhYmVsXCI6IFwiU2F2ZSBDaGFuZ2VzXCIsXHJcblx0XHRcInNlYXJjaEdyb3Vwc1RleHRcIjogXCJTZWxlY3QgZ3JvdXBzLi4uXCIsXHJcblx0XHRcInNlYXJjaExhYmVsXCI6IFwiU2VhcmNoIHVzZXJzLi4uXCIsXHJcblx0XHRcInNlYXJjaFJlc291cmNlXCI6IFwiU2VhcmNoIHJlc291cmNlLi4uXCIsXHJcblx0XHRcInN1cGVyVXNlckxhYmVsXCI6IFwiQWRtaW5pc3RyYXRvclwiLFxyXG5cdFx0XCJzdXBlclVzZXJMYWJlbFwiOiBcIlN1cGVyIFVzZXJcIixcclxuXHRcdFwidXBzTXNnXCI6IFwiT29wcyFcIixcclxuXHRcdFwidXNlckxpc3RHcm91cHNIZWFkZXJcIjogXCJHcm91cHNcIixcclxuXHRcdFwidXNlckxpc3RVc2VybmFtZUhlYWRlclwiOiBcIlVzZXJuYW1lXCIsXHJcblx0XHRcInVzZXJuYW1lXCI6IFwiVXNlcm5hbWVcIixcclxuXHRcdFwidXNlcm5hbWVFcnJvclwiOiBcIlJlcXVpcmVkIGVudHJ5IG9mIHVzZXJuYW1lXCIsXHJcblx0XHRcInVzZXJBZHZhbmNlZFNldHRpbmdzXCI6IFwiQWRkaXRpb25hbCB1c2VyIHByb3BlcnRpZXNcIixcclxuXHRcdFwic2F2ZVwiIDogXCJTYXZlXCIsXHJcblx0XHRcImFwcGxpY2F0aW9uTWVudVwiOiBcIkFwcGxpY2F0aW9uIG1lbnVcIixcclxuXHRcdFwiYWRkRGF0YXNldFwiOiBcIkFzc2lnbiBkYXRhc2V0XCIsXHJcblx0XHRcInBvcG92ZXJcIjoge1xyXG5cdFx0XHRcIm5ld3Jlc291cmNlLXBhZ2VcIjogXCJDcmVhdGUgeW91ciBmaXJzdCBwYWdlIVwiLFxyXG5cdFx0XHRcIm5ld3Jlc291cmNlLWRhdGFzZXRcIjogXCJZb3Ugc2hvdWQgY3JlYXRlIGRhdGFzZXQgaWYgeW91IHdhbnQgdG8gc3RvcmUgZGF0YSBpbiB5b3VyIGFwcGxpY2F0aW9uISBcIixcclxuXHRcdFx0XCJhcHAubmF2YmFyLnJlc291cmNlcy5uZXdcIjogXCJDbGljayBoZXJlIHRvIGNyZWF0ZSBuZXcgcmVzb3VyY2UhXCIsXHJcblx0XHRcdFwid2lkZ2V0LXRvb2xib3hcIjogXCJEcmFnIGFuZCBkcm9wIGNvbXBvbmVudHMgZnJvbSB0b29sYm94IGJlbG93XCIsXHJcblx0XHRcdFwic2VsZWN0LW1lbnVcIjogXCJTZWxlY3QgYXBwbGljYXRpb24gbWVudSBieSBjbGlja2luZyBoZXJlIVwiLFxyXG5cdFx0XHRcInNlbGVjdC1kZWZhdWx0LXBhZ2VcIjogXCJEZWZhdWx0IHBhZ2UgaXMgbm90IHNlbGVjdGVkLiBQbGVhc2Ugc2VsZWN0IGl0IGJ5IGNsaWNraW5nIGhlcmUhXCIsXHJcblx0XHRcdFwiYWRkLWFjdGlvbi1idXR0b25cIjogXCJDbGljayBoZXJlIHRvIGFkZCBhY3Rpb25cIlxyXG5cdFx0fVxyXG59LFxyXG5cImNvbmZpZ1wiOiB7XHJcblx0XHRcImhvbWVwYWdldGVtcGxhdGVcIjogXCIvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL2FwcF9ob21lLmh0bWxcIixcclxuXHRcdFwiZGVwbG95ZGlyXCI6IFwiL2J1aWxkZXJcIixcclxuXHRcdFwicHJldmlld19wYWdlX3BhdGhcIjogXCIvbi92cGFnZS9cIixcclxuXHRcdFwia3RseW9fbG9nb19pbWdcIjpcIi9pbWcvS2F0YWx5b19maW5hbF9hcXVhLnBuZ1wiLFxyXG5cdFx0XCJjb21tdW5pdHlfaW1nXCI6XCIvaW1nL2thdGFseW9fY29tbXVuaXR5LnBuZ1wiLFxyXG5cdFx0XCJtZW51X2xvZ29faW1nXCI6XCIvaW1nL0thdGFseW9fZmluYWxfYXF1YV93aGl0ZS5wbmdcIixcclxuXHRcdFwiYXBwX3VybFwiOlwiP2FwcF9yZWYmdGFiJmVudlwiXHJcblx0fVxyXG59IiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxuYW5ndWxhci5tb2R1bGUoJ2FuZ3VsYXJqcy1kcmFndWxhJyxbXSk7XHJcblxyXG4vL2ltcG9ydCAnbmdWdWUnO1xyXG5cclxuaW1wb3J0IGthdGFseW9DdHJscyBmcm9tICcuL2thdGFseW9DdHJscy5qcyc7XHJcbmltcG9ydCBpbmRleEpzb24gZnJvbSAnLi9pbmRleC5qc29uJy8vd2l0aCB7dHlwZTogJ2pzb24nfTtcclxuXHJcblxyXG5pbXBvcnQgKiBhcyBrYXRhbHlvRGlyZWN0aXZlcyBmcm9tICcuLi8uLi8uLi8wMDAwX2NvbW1vbi8wMDAxX2RpcmVjdGl2ZXMvYW5ndWxhckpTL2J1aWxkL2t0ZGlyZWN0aXZlcy5qcyc7XHJcblxyXG5pbXBvcnQgKiBhcyB3aWRnZXRTZXJ2aWNlcyBmcm9tICcuLi8uLi8uLi8wMDAwX2NvbW1vbi8wMDAyX3NlcnZpY2VzL2FuZ3VsYXJKUy9idWlsZC9zZXJ2aWNlcy5qcyc7XHJcblxyXG5pbXBvcnQgQXV0aGVudGljYXRpb25TZXJ2aWNlLHtVc2VyU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vMDAwMF9jb21tb24vMDAwNF9tb2R1bGVzL2F1dGhNb2R1bGUuanMnO1xyXG5pbXBvcnQge01lbnVTZXJ2aWNlLENsZWFyU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vMDAwMF9jb21tb24vMDAwNF9tb2R1bGVzL21lbnVNb2R1bGUuanMnO1xyXG5pbXBvcnQgQ29kZXNTZXJ2aWNlIGZyb20gJy4uLy4uLy4uLzAwMDBfY29tbW9uLzAwMDRfbW9kdWxlcy9jb2Rlc01vZHVsZS5qcyc7XHJcbmltcG9ydCBTZXR0aW5nc1NlcnZpY2UgZnJvbSAnLi4vLi4vLi4vMDAwMF9jb21tb24vMDAwNF9tb2R1bGVzL3NldHRpbmdzTW9kdWxlLmpzJztcclxuaW1wb3J0IE1lc3NhZ2luZ1NlcnZpY2UgZnJvbSAnLi4vLi4vLi4vMDAwMF9jb21tb24vMDAwNF9tb2R1bGVzL21lc3NhZ2luZ01vZHVsZS5qcyc7XHJcbmltcG9ydCBLYXRhbHlvU3RhdGVNYW5hZ2VyIGZyb20gJy4uLy4uLy4uLzAwMDBfY29tbW9uLzAwMDRfbW9kdWxlcy9zdGF0ZU1hbmFnZXJNb2R1bGUuanMnO1xyXG5pbXBvcnQgUHJvY2Vzc2luZ1NlcnZpY2UgZnJvbSAnLi4vLi4vLi4vMDAwMF9jb21tb24vMDAwNF9tb2R1bGVzL3Byb2Nlc3NpbmdNb2R1bGUuanMnO1xyXG5pbXBvcnQgUmVzb3VyY2VzRGF0YVNlcnZpY2UgZnJvbSAnLi4vLi4vLi4vMDAwMF9jb21tb24vMDAwNF9tb2R1bGVzL3Jlc291cmNlc0RhdGFNb2R1bGUuanMnO1xyXG5pbXBvcnQgVGFza0RhdGFTZXJ2aWNlLHtQdWJsaWNUYXNrRGF0YVNlcnZpY2UsVGFza0RlZmluaXRpb25TZXJ2aWNlLFRhc2tQcm9jU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vMDAwMF9jb21tb24vMDAwNF9tb2R1bGVzL3Rhc2tzRGF0YU1vZHVsZS5qcyc7XHJcbmltcG9ydCBHcmlkc3RlclNlcnZpY2UgZnJvbSAnLi4vLi4vLi4vMDAwMF9jb21tb24vMDAwNF9tb2R1bGVzL2dyaWRzdGVyTW9kdWxlLmpzJztcclxuaW1wb3J0IFJlc3RBcGlTZXJ2aWNlIGZyb20gJy4uLy4uLy4uLzAwMDBfY29tbW9uLzAwMDRfbW9kdWxlcy9hcGlNb2R1bGUuanMnO1xyXG5pbXBvcnQgV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZSBmcm9tICcuLi8uLi8uLi8wMDAwX2NvbW1vbi8wMDA0X21vZHVsZXMvd2lkZ2V0RGF0YUV4Y2hhbmdlTW9kdWxlLmpzJztcclxuaW1wb3J0IFdpZGdldFJlZ2lzdGVyU2VydmljZSBmcm9tICcuLi8uLi8uLi8wMDAwX2NvbW1vbi8wMDA0X21vZHVsZXMvd2lkZ2V0UmVnaXN0ZXJNb2R1bGUuanMnO1xyXG5pbXBvcnQgVXRpbGl0eVNlcnZpY2UgZnJvbSAnLi4vLi4vLi4vMDAwMF9jb21tb24vMDAwNF9tb2R1bGVzL3V0aWxpdHlNb2R1bGUuanMnO1xyXG5pbXBvcnQgUHJvY2Vzc2luZ0ludGVyY2VwdG9yIGZyb20gJy4uLy4uLy4uLzAwMDBfY29tbW9uLzAwMDRfbW9kdWxlcy9pbnRlcmNlcHRvck1vZHVsZS5qcyc7XHJcbmltcG9ydCB7QXV0aEludGVyY2VwdG9yfSBmcm9tICcuLi8uLi8uLi8wMDAwX2NvbW1vbi8wMDA0X21vZHVsZXMvaW50ZXJjZXB0b3JNb2R1bGUuanMnO1xyXG5pbXBvcnQgZXhjZXB0aW9uSGFuZGxlciBmcm9tICcuLi8uLi8uLi8wMDAwX2NvbW1vbi8wMDA0X21vZHVsZXMvZXJyb3JNb2R1bGUuanMnO1xyXG5cclxudmFyIGtkcyA9IGFuZ3VsYXIubW9kdWxlKCdLYXRhbHlvRGlyZWN0aXZlU2VydmljZXMnLFtdKTtcclxuXHJcbmFuZ3VsYXIuZm9yRWFjaCh3aWRnZXRTZXJ2aWNlcywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xyXG4gIGtkcy5zZXJ2aWNlKGtleSx2YWx1ZSk7XHJcbiB9KTtcclxuXHJcbnZhciBjZWggPSBhbmd1bGFyLm1vZHVsZSgnQ3VzdG9tRXJyb3JIYW5kbGVyJyxbXSk7XHJcbmNlaC5kZWNvcmF0b3IoJyRleGNlcHRpb25IYW5kbGVyJyxleGNlcHRpb25IYW5kbGVyKTtcclxuXHJcblxyXG52YXIgYXBwTW9kdWxlTmFtZSA9ICdLYXRhbHlvJztcclxuXHJcbnZhciBhcHAgPSBhbmd1bGFyLm1vZHVsZShhcHBNb2R1bGVOYW1lLCBbXHJcbiAgICBrYXRhbHlvQ3RybHMsXHJcbiAgICAnY29sb3JwaWNrZXInLFxyXG4gICAgJ0thdGFseW9EaXJlY3RpdmVTZXJ2aWNlcycsXHJcbiAgICAnQ3VzdG9tRXJyb3JIYW5kbGVyJyxcclxuICAgICd1aS5yb3V0ZXInLFxyXG4gICAgJ3VpLmdyaWQnLFxyXG4gICAgJ3VpLmJvb3RzdHJhcCcsXHJcbiAgICAnbmdBbmltYXRlJyxcclxuICAgICd1aS5ncmlkLnBhZ2luYXRpb24nLFxyXG4gICAgJ3VpLmdyaWQuc2VsZWN0aW9uJyxcclxuICAgICd1aS5ncmlkLnJlc2l6ZUNvbHVtbnMnLFxyXG4gICAgJ3VpLmdyaWQuYXV0b1Jlc2l6ZScsXHJcbiAgICAndWkuZ3JpZC5ncm91cGluZycgLFxyXG4gICAgJ3VpLmdyaWQubW92ZUNvbHVtbnMnLFxyXG4gICAgJ3VpLmdyaWQuc2F2ZVN0YXRlJyxcclxuICAgICd1aS5ncmlkLmV4cG9ydGVyJyxcclxuICAgICd1aS5ncmlkLmVkaXQnLFxyXG4gICAgJ25nQ29va2llcycsXHJcbiAgICAndWkuc2VsZWN0JyxcclxuICAgICduZ1Nhbml0aXplJyxcclxuICAgICd1aS51cGxvYWRlcicsXHJcbiAgICAnbmdGaWxlVXBsb2FkJyxcclxuICAgICdkcmFndWxhck1vZHVsZScsXHJcbiAgICBhbmd1bGFyRHJhZ3VsYShhbmd1bGFyKSxcclxuICAgICd2Y1JlY2FwdGNoYScsXHJcbiAgICAndHJ1bWJvd3lnLW5nJyxcclxuICAgICdjaGFydC5qcycsXHJcbiAgICAnc21hcnQtdGFibGUnLFxyXG4gICAgJ2xyRHJhZ05Ecm9wJ1xyXG5dKVxyXG4uc2VydmljZSgnQXV0aGVudGljYXRpb25TZXJ2aWNlJyxBdXRoZW50aWNhdGlvblNlcnZpY2UpXHJcbi5zZXJ2aWNlKCdNZW51U2VydmljZScsTWVudVNlcnZpY2UpXHJcbi5zZXJ2aWNlKCdDbGVhclNlcnZpY2UnLENsZWFyU2VydmljZSlcclxuLnNlcnZpY2UoJ0NvZGVzU2VydmljZScsQ29kZXNTZXJ2aWNlKVxyXG4uc2VydmljZSgnU2V0dGluZ3NTZXJ2aWNlJyxTZXR0aW5nc1NlcnZpY2UpXHJcbi5zZXJ2aWNlKCdNZXNzYWdpbmdTZXJ2aWNlJyxNZXNzYWdpbmdTZXJ2aWNlKVxyXG4uc2VydmljZSgnS2F0YWx5b1N0YXRlTWFuYWdlcicsS2F0YWx5b1N0YXRlTWFuYWdlcilcclxuLnNlcnZpY2UoJ1Byb2Nlc3NpbmdTZXJ2aWNlJyxQcm9jZXNzaW5nU2VydmljZSlcclxuLnNlcnZpY2UoJ1Jlc291cmNlc0RhdGFTZXJ2aWNlJyxSZXNvdXJjZXNEYXRhU2VydmljZSlcclxuLnNlcnZpY2UoJ1Rhc2tEYXRhU2VydmljZScsVGFza0RhdGFTZXJ2aWNlKVxyXG4uc2VydmljZSgnUHVibGljVGFza0RhdGFTZXJ2aWNlJyxQdWJsaWNUYXNrRGF0YVNlcnZpY2UpXHJcbi5zZXJ2aWNlKCdUYXNrRGVmaW5pdGlvblNlcnZpY2UnLFRhc2tEZWZpbml0aW9uU2VydmljZSlcclxuLnNlcnZpY2UoJ1Rhc2tQcm9jU2VydmljZScsVGFza1Byb2NTZXJ2aWNlKVxyXG4uc2VydmljZSgnR3JpZHN0ZXJTZXJ2aWNlJyxHcmlkc3RlclNlcnZpY2UpXHJcbi5zZXJ2aWNlKCdSZXN0QXBpU2VydmljZScsUmVzdEFwaVNlcnZpY2UpXHJcbi5zZXJ2aWNlKCdVc2VyU2VydmljZScsVXNlclNlcnZpY2UpXHJcbi5zZXJ2aWNlKCdXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlJyxXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlKVxyXG4uc2VydmljZSgnV2lkZ2V0UmVnaXN0ZXJTZXJ2aWNlJyxXaWRnZXRSZWdpc3RlclNlcnZpY2UpXHJcbi5zZXJ2aWNlKCdVdGlsaXR5U2VydmljZScsVXRpbGl0eVNlcnZpY2UpXHJcbi5jb25maWcoWyckcHJvdmlkZScsJyRodHRwUHJvdmlkZXInLCckbG9jYXRpb25Qcm92aWRlcicsZnVuY3Rpb24gKCRwcm92aWRlLCAkaHR0cFByb3ZpZGVyLCRsb2NhdGlvblByb3ZpZGVyKSB7XHJcbiAgJGh0dHBQcm92aWRlci5pbnRlcmNlcHRvcnMucHVzaChQcm9jZXNzaW5nSW50ZXJjZXB0b3IuUHJvY2Vzc2luZ0ludGVyY2VwdG9yU2VydmljZSk7XHJcbiAgJGh0dHBQcm92aWRlci5pbnRlcmNlcHRvcnMucHVzaChBdXRoSW50ZXJjZXB0b3IuQXV0aEludGVyY2VwdG9yU2VydmljZSk7XHJcbiAgJGxvY2F0aW9uUHJvdmlkZXIuaHRtbDVNb2RlKHRydWUpO1xyXG59XSk7XHJcblxyXG5hbmd1bGFyLmZvckVhY2goa2F0YWx5b0RpcmVjdGl2ZXMsIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcclxuICBhcHAuZGlyZWN0aXZlKGtleSx2YWx1ZSk7XHJcbn0pO1xyXG5cclxuLy9pbXBvcnQgdnVlIGNvbXBvbmVudHMgLSBmaW5kIGEgZ2VuZXJpYyB3YXlcclxuLy9hcHAudmFsdWUoJ2t0LXRpbWUnLGt0VGltZSk7XHJcblxyXG5cclxuZXhwb3J0IGRlZmF1bHQgYXBwTW9kdWxlTmFtZTtcclxuXHJcbmFwcC5jb25zdGFudCgnUFJPQ0VTU0lOR19DT05TVCcsIHsnX1NUQVJUX1JFUVVFU1RfJzonX1NUQVJUX1JFUVVFU1RfJywnX0VORF9SRVFVRVNUXyc6ICdfRU5EX1JFUVVFU1RfJ30pO1xyXG5cclxuYXBwLmNvbnN0YW50KCdDT0RFU19DT05TVCcsIHsnX1BPUFVMQVRFX1RZUEVfJzp7MTE6J0N1cnJlbnQgdGFzayBpbml0aWF0ZSBmb3JtJywxMjonQ3VycmVudCB0YXNrIGV4ZWN1dGUgZm9ybScsMjE6J1ByZXZpb3VzIHRhc2sgaW5pdGlhdGUgZm9ybScsMjI6J1ByZXZpb3VzIHRhc2sgZXhlY3V0ZSBmb3JtJywzOidGaXhlZCByZXNvdXJjZSd9LFxyXG4gICAgICAgICAgICAgICdfUE9QVUxBVEVfVFlQRV9ORVdfJzp7MTonRml4ZWQgZGF0YXNldCcsMjonRGF0YXNldCByZWNvcmQgZnJvbSB0aGlzIHRhc2snLDM6J0RhdGFzZXQgcmVjb3JkIGZyb20gcHJldmlvdXMgdGFzayd9fSk7XHJcblxyXG5hcHAuZmlsdGVyKCdnZXRDb2RlJywgZnVuY3Rpb24gKCkge1xyXG4gIHJldHVybiBmdW5jdGlvbiAoaW5wdXQpIHtcclxuICAgICAgXHJcbiAgICAgIGlmIChpbnB1dCE9bnVsbCkge1xyXG4gICAgIFxyXG4gICAgICAgICAgaWYgKGlucHV0LnRyaW0oKSE9XCJcIikge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgY2xlYW5JbnB1dD1pbnB1dC5zcGxpdCgnXFwnJykuam9pbignXCInKTtcclxuICAgICAgICAgIHZhciBpbnB1dE9iaj17fTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaW5wdXRPYmogPSBhbmd1bGFyLmZyb21Kc29uKGNsZWFuSW5wdXQpO1xyXG4gICAgICAgICAgcmV0dXJuIGlucHV0T2JqLm5hbWU7XHJcbiAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICByZXR1cm4gaW5wdXQ7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICB9ZWxzZVxyXG4gICAgICB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIGlucHV0O1xyXG4gICAgICAgIFxyXG4gICAgICB9XHJcbiAgICB9O1xyXG59KTtcclxuXHJcbmFwcC5maWx0ZXIoJ2dldFVzZXInLFsnVXNlclNlcnZpY2UnLCBmdW5jdGlvbiAoVXNlclNlcnZpY2UpIHtcclxuICB2YXIgY2FjaGUgPSB7fTtcclxuICBcclxuICBmdW5jdGlvbiBnZXRVc2VyKGlucHV0KSB7XHJcbiAgICAgIFxyXG4gICAgIC8vIGlmIChjYWNoZVsndXNlcicraW5wdXRdKSB7XHJcbiAgICAgICAvLyByZXR1cm4gY2FjaGVbJ3VzZXInK2lucHV0XS5uYW1lO1xyXG4gICAgIC8vIH1lbHNlXHJcbiAgICAgLy8ge1xyXG4gICAgICAgIGlmIChpbnB1dCE9dW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHZhciB1c2VyX29iaj1udWxsO1xyXG4gICAgICAgICAgVXNlclNlcnZpY2UuZ2V0VXNlck9iamVjdEJ5SWQoaW5wdXQpLnRoZW4oZnVuY3Rpb24gKGRhdGEpe1xyXG4gICAgICAgICAgICB1c2VyX29iaiA9IGRhdGE7XHJcbiAgICAgICAgICAgIGlmICh1c2VyX29iaiE9bnVsbCkgeyAgICAgICAgICAgICBcclxuICAgICAgICAgICAgIHJldHVybiAgdXNlcl9vYmoubmFtZTsgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTsgXHJcbiAgICAgICAgIFxyXG4gICAgICAgICAvLyBlbHNlXHJcbiAgICAgICAgICAvL3tcclxuICAgICAgICAgIC8vICBnZXRVc2VyKGlucHV0KTtcclxuICAgICAgICAgLy8gfVxyXG4gICAgICBcclxuICAgICAgICB9XHJcbiAgICAgIC8vfVxyXG4gICAgICBcclxuICAgIH07XHJcbiAgICBnZXRVc2VyLiRzdGF0ZWZ1bCA9IHRydWU7XHJcbiAgICByZXR1cm4gZ2V0VXNlcjtcclxuICAgIFxyXG59XSk7XHJcblxyXG5hcHAuZmlsdGVyKCdnZXRDb2RlQnlJZCcsWyckcm9vdFNjb3BlJywnQ29kZXNTZXJ2aWNlJywgZnVuY3Rpb24gKCRyb290U2NvcGUsQ29kZXNTZXJ2aWNlKSB7XHJcbiAgdmFyIGNhY2hlID0ge31cclxuICBcclxuICBmdW5jdGlvbiBnZXRDb2RlQnlJZCAoaW5wdXQsZW50aXR5KVxyXG4gIHtcclxuICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICBpZiAoY2FjaGVbbGFuZytlbnRpdHkraW5wdXRdKSB7XHJcbiAgICAgICAgLy9jb2RlXHJcbiAgICAgICAgcmV0dXJuIGNhY2hlW2xhbmcrZW50aXR5K2lucHV0XTtcclxuICAgICAgfVxyXG4gICAgICBjYWNoZVtsYW5nK2VudGl0eStpbnB1dF0gPSdmZXRjaGluZyBjb2Rlcy4uLic7XHJcbiAgICAgICAgaWYgKGVudGl0eSE9dW5kZWZpbmVkICYmIGlucHV0IT11bmRlZmluZWQpIHtcclxuICAgIFxyXG4gICAgICAgICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzVmFsdWUoZW50aXR5LGxhbmcsaW5wdXQsMSkudGhlbihmdW5jdGlvbiAoZGF0YSl7XHJcbiAgICBcclxuICAgICAgICAgICAgY2FjaGVbbGFuZytlbnRpdHkraW5wdXRdID0gZGF0YTtcclxuICAgICAgICAgIH0pOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfSBlbHNle1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgY2FjaGVbbGFuZytlbnRpdHkraW5wdXRdID0nJztcclxuICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgfTtcclxuICAgIGdldENvZGVCeUlkLiRzdGF0ZWZ1bCA9IHRydWU7XHJcbiAgICByZXR1cm4gZ2V0Q29kZUJ5SWQ7XHJcbiAgICBcclxufV0pO1xyXG5cclxuYXBwLmZpbHRlcignZ2V0Q29kZUJ5TmFtZScsWyckcm9vdFNjb3BlJywnQ29kZXNTZXJ2aWNlJywgZnVuY3Rpb24gKCRyb290U2NvcGUsQ29kZXNTZXJ2aWNlKSB7XHJcbiAgIHZhciBjYWNoZSA9IHt9XHJcbiAgZnVuY3Rpb24gZ2V0Q29kZUJ5TmFtZSAoaW5wdXQsZW50aXR5KSB7XHJcbiAgICBcclxuICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICBpZiAoY2FjaGVbbGFuZytlbnRpdHkraW5wdXRdKSB7XHJcbiAgICAgICAgLy9jb2RlXHJcbiAgICAgICAgcmV0dXJuIGNhY2hlW2xhbmcrZW50aXR5K2lucHV0XTtcclxuICAgICAgfVxyXG4gICAgICBjYWNoZVtsYW5nK2VudGl0eStpbnB1dF0gPSdmZXRjaGluZyBjb2Rlcy4uLic7XHJcbiAgICAgIGlmIChlbnRpdHkhPXVuZGVmaW5lZCAmJiBpbnB1dCE9dW5kZWZpbmVkKSB7XHJcbiAgICBcclxuICAgICAgXHJcbiAgICAgICAgIENvZGVzU2VydmljZS5nZXRDb2Rlc1ZhbHVlQnlOYW1lKGVudGl0eSxsYW5nLGlucHV0LDIpLnRoZW4oZnVuY3Rpb24gKGRhdGEpe1xyXG4gICAgXHJcbiAgICAgICAgICAgIGNhY2hlW2xhbmcrZW50aXR5K2lucHV0XSA9IGRhdGE7XHJcbiAgICAgICAgIH0pOyBcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICBjYWNoZVtsYW5nK2VudGl0eStpbnB1dF0gPScnO1xyXG4gICAgICAgIH1cclxuICAgICBcclxuXHJcbiAgICAgICAgIFxyXG4gICAgfTtcclxuICAgIGdldENvZGVCeU5hbWUuJHN0YXRlZnVsID0gdHJ1ZTtcclxuICAgIHJldHVybiBnZXRDb2RlQnlOYW1lO1xyXG59XSk7XHJcblxyXG5cclxuYXBwLmNvbmZpZyhbJyRwcm92aWRlJywnJHN0YXRlUHJvdmlkZXInLCAnJHVybFJvdXRlclByb3ZpZGVyJywnJGxvY2F0aW9uUHJvdmlkZXInLCckaHR0cFByb3ZpZGVyJywnJGNvbnRyb2xsZXJQcm92aWRlcicsJyRjb21waWxlUHJvdmlkZXInLCckZmlsdGVyUHJvdmlkZXInLFxyXG4gICAgICAgICAgICBmdW5jdGlvbigkcHJvdmlkZSwkc3RhdGVQcm92aWRlciwgJHVybFJvdXRlclByb3ZpZGVyLCRsb2NhdGlvblByb3ZpZGVyLCRodHRwUHJvdmlkZXIsJGNvbnRyb2xsZXJQcm92aWRlciwkY29tcGlsZVByb3ZpZGVyLCRmaWx0ZXJQcm92aWRlcikge1xyXG4gICBcclxuICAgICAgYXBwLnJlZ2lzdGVyID0ge1xyXG4gICAgICBjb250cm9sbGVyOiAkY29udHJvbGxlclByb3ZpZGVyLnJlZ2lzdGVyLFxyXG4gICAgICBkaXJlY3RpdmU6ICRjb21waWxlUHJvdmlkZXIuZGlyZWN0aXZlLFxyXG4gICAgICBmaWx0ZXI6ICRmaWx0ZXJQcm92aWRlci5yZWdpc3RlcixcclxuICAgICAgZmFjdG9yeTogJHByb3ZpZGUuZmFjdG9yeSxcclxuICAgICAgc2VydmljZTogJHByb3ZpZGUuc2VydmljZVxyXG4gICAgfTtcclxuICAgIFxyXG4gICAgJGh0dHBQcm92aWRlci5kZWZhdWx0cy54c3JmQ29va2llTmFtZSA9ICdjc3JmdG9rZW4nO1xyXG4gICAgJGh0dHBQcm92aWRlci5kZWZhdWx0cy54c3JmSGVhZGVyTmFtZSA9ICdYLUNTUkZUb2tlbic7XHJcblxyXG4gIFxyXG4gICAvLyR1cmxSb3V0ZXJQcm92aWRlci5vdGhlcndpc2UoXCJhcHAub3RoZXJ3aXNlXCIpOyBcclxuICAgLy8kbG9jYXRpb25Qcm92aWRlci5oYXNoUHJlZml4KFwiXCIpO1xyXG4gICAvLy5odG1sNU1vZGUodHJ1ZSlcclxuICAgXHJcbiAgJHN0YXRlUHJvdmlkZXJcclxuICAgIC5zdGF0ZSgnYXBwJywge1xyXG4gICAgICAgICAgIGFic3RyYWN0OiB0cnVlLFxyXG4gICAgICAgICAgIC8vdXJsOicvYnVpbGRlcj9hcHBfcmVmJnRhYiZlbnYnLFxyXG4gICAgICAgICAgIHVybDogaW5kZXhKc29uLmNvbmZpZy5hcHBfdXJsLFxyXG4gICAgICAgICAgdGVtcGxhdGU6IFwiPGRpdiB1aS12aWV3PjwvZGl2PlwiLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIHJlcXVpcmVMb2dpbjogdHJ1ZSAvLyB0aGlzIHByb3BlcnR5IHdpbGwgYXBwbHkgdG8gYWxsIGNoaWxkcmVuIG9mICdhcHAnXHJcbiAgICAgICAgICAgIH0sICBcclxuICB9KVxyXG4uc3RhdGUoJ2FwcC5tZW51Jywge1xyXG4gICAgICAgICAgICB1cmw6Jy9tJyxcclxuICAgICAgICAgICBhYnN0cmFjdDogdHJ1ZSxcclxuICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICAgICdoZWFkZXJAJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9uYXZiYXIuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICAvLyBjb250cm9sbGVyOiAnaG9tZU5hdmJhckN0cmwnXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgJ2NvbnRlbnRAJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9sYXlvdXQuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgLy9jb250cm9sbGVyOiAnaG9tZUNvbnRlbnRDdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgJ2Zvb3RlckAnOiB7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvZm9vdGVyLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAvLyBjb250cm9sbGVyOiAnaG9tZUN0cmwnIFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSkgXHJcbi5zdGF0ZSgnYXBwLm5vbWVudScsIHtcclxuICAgICAgICAgICAgdXJsOicvbm0nLCAgICAgICAgICAgXHJcbiAgICAgICAgICAgYWJzdHJhY3Q6IHRydWUsXHJcbiAgICAgICAgICAgIHZpZXdzOlxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAnY29udGVudEAnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL2xheW91dC5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgJ2Zvb3RlckAnOiB7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvZm9vdGVyLmh0bWwnLFxyXG4gICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9XHJcbn0pXHJcblxyXG4uc3RhdGUoJ2FwcC5uYXZiYXInLCB7XHJcbiAgICAgICAgICAgIHVybDonL24nLFxyXG4gICAgICAgICAgIGFic3RyYWN0OiB0cnVlLFxyXG4gICAgICAgICAgICB2aWV3czoge1xyXG4gICAgICAgICAgICAgICAgJ2hlYWRlckAnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL25hdmJhci5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgIC8vIGNvbnRyb2xsZXI6ICdob21lTmF2YmFyQ3RybCdcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAnY29udGVudEAnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL2xheW91dC5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgICAvL2NvbnRyb2xsZXI6ICdob21lQ29udGVudEN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAnZm9vdGVyQCc6IHtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9mb290ZXIuaHRtbCcsXHJcbiAgICAgICAgICAgICAgIC8vIGNvbnRyb2xsZXI6ICdob21lQ3RybCcgXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG5cclxuLnN0YXRlKCdhcHAubm9tZW51Lm9uYm9hcmRpbmcnLCB7XHJcbiAgICAgICAgICAgIHVybDonL29uYm9hcmRpbmcnLFxyXG4gICAgICAgICAgICAgIHZpZXdzOiB7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICdjb250ZW50Uic6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvb25ib2FyZGluZy5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnb25ib2FyZGluZ0N0cmwnLCBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgLyogICAnbWVudSc6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAzX3Jlc291cmNlcy9hbmd1bGFyVGVtcGxhdGVzL2hvbWVNZW51Lmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ21lbnVDdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sKi8gICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxufSlcclxuLnN0YXRlKCdhcHAubmF2YmFyLmhvbWUnLCB7XHJcbiAgICAgICAgICAgIHVybDonLycsXHJcbiAgICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgJ2NvbnRlbnRSJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9ob21lLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdob21lQ3RybCcsIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAvKiAgICdtZW51Jzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDNfcmVzb3VyY2VzL2FuZ3VsYXJUZW1wbGF0ZXMvaG9tZU1lbnUuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnbWVudUN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSwqLyAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9KVxyXG4uc3RhdGUoJ2FwcC5uYXZiYXIuYXBwc2V0dGluZ3MnLCB7XHJcbiAgICAgICAgICAgIHVybDonL3NldHRpbmdzJyxcclxuICAgICAgICAgICAgICB2aWV3czoge1xyXG4gICAgICAgICAgICAgICAnY29udGVudFInOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL2FwcHNldHRpbmdzLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdhcHBTZXR0aW5nc0N0cmwnLCBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgLyogICAnbWVudSc6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAzX3Jlc291cmNlcy9hbmd1bGFyVGVtcGxhdGVzL2hvbWVNZW51Lmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ21lbnVDdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sKi8gICBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH0pXHJcbi5zdGF0ZSgnYXBwLm5hdmJhci5tYXJrZXQnLCB7XHJcbiAgICAgICAgICAgIHVybDonL21hcmtldCcsXHJcbiAgICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgJ2NvbnRlbnRSJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9tYXJrZXQuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ21hcmtldEN0cmwnLCBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgLyogICAnbWVudSc6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAzX3Jlc291cmNlcy9hbmd1bGFyVGVtcGxhdGVzL2hvbWVNZW51Lmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ21lbnVDdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sKi8gICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfSlcclxuLnN0YXRlKCdhcHAubmF2YmFyLmhvbWUuZGFzaGJvYXJkJywge1xyXG4gICAgICAgICAgICB1cmw6Jy9kYXNoYm9hcmQnLFxyXG4gICAgICAgICAgICB2aWV3czoge1xyXG4gICAgICAgICAgICAgICdjb250ZW50Uic6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAzX3Jlc291cmNlcy9hbmd1bGFyVGVtcGxhdGVzL2hvbWVEYXNoYm9hcmQuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ2hvbWVEYXNoYm9hcmRDdHJsJyBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KSBcclxuLnN0YXRlKCdhcHAubWVudS5yZXNvdXJjZXMnLCB7XHJcbiAgICAgICAgICAgICAgYWJzdHJhY3Q6IHRydWUsXHJcbiAgICAgICAgICAgICAgdXJsOicvcmVzb3VyY2VzJyxcclxuICAgICAgICAgICAgICB2aWV3czoge1xyXG4gICAgICAgICAgICAgICAgJ2NvbnRlbnRAJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9sYXlvdXQuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0gICAgICAgICAgICAgXHJcbiAgICAgICAgfSlcclxuLnN0YXRlKCdhcHAubmF2YmFyLnJlc291cmNlcycsIHtcclxuICAgICAgICAgICAgICBhYnN0cmFjdDogdHJ1ZSxcclxuICAgICAgICAgICAgICB1cmw6Jy9yZXNvdXJjZXMnLFxyXG4gICAgICAgICAgICAgIHZpZXdzOiB7XHJcbiAgICAgICAgICAgICAgLyogICdoZWFkZXJAJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9uYXZiYXIuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICAvLyBjb250cm9sbGVyOiAnaG9tZU5hdmJhckN0cmwnXHJcbiAgICAgICAgICAgICAgICB9LCovXHJcbiAgICAgICAgICAgICAgICAnY29udGVudEAnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL2xheW91dC5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgICAvL2NvbnRyb2xsZXI6ICdyZXNvdXJjZVVuaWZpZWRDdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAnZm9vdGVyQCc6IHtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9mb290ZXIuaHRtbCcsXHJcbiAgICAgICAgICAgICAgIC8vIGNvbnRyb2xsZXI6ICdsb2dpbkN0cmwnIFxyXG4gICAgICAgICAgICB9LCovXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgIH0pXHJcbi5zdGF0ZSgnYXBwLm5hdmJhci5yZXNvdXJjZXMuaW1wb3J0Jywge1xyXG4gICAgICAgICAgICAgdXJsOicvaW1wb3J0LzpyZXNvdXJjZV9pZC86aWQnLFxyXG4gICAgICAgICAgICAgIHZpZXdzOiB7XHJcbiAgICAgICAgICAgICAgICAgJ2NvbnRlbnRSJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDNfcmVzb3VyY2VzL2FuZ3VsYXJUZW1wbGF0ZXMvaW1wb3J0RGF0YS5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnaW1wb3J0RGF0YUN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICByZXNvdXJjZV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGlkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBtZW51X2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgbmF2YmFyX2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHNpZGVtZW51X2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH1cclxuIH0pXHJcbiAuc3RhdGUoJ2FwcC5uYXZiYXIucmVzb3VyY2VzLmxpc3QnLCB7XHJcbiAgICAgICAgICAgdXJsOicnLFxyXG4gICAgICAgICAgICAgIHZpZXdzOiB7XHJcbiAgICAgICAgICAgICAgICAgJ2NvbnRlbnRSJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDNfcmVzb3VyY2VzL2FuZ3VsYXJUZW1wbGF0ZXMvcmVzb3VyY2VMaXN0Lmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdyZXNvdXJjZUxpc3RDdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgLyonbWVudSc6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvbWVudS5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdtZW51Q3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LCovICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIG5hdmJhcl9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzaWRlbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICByZXNvdXJjZV90eXBlOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHJlc291cmNlX25hbWU6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcGFnZWlkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH1cclxufSlcclxuIC5zdGF0ZSgnYXBwLm5hdmJhci5yZXNvdXJjZXMubmV3Jywge1xyXG4gICAgICAgICAgIHVybDonL25ldycsXHJcbiAgICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICAgICAnY29udGVudFInOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwM19yZXNvdXJjZXMvYW5ndWxhclRlbXBsYXRlcy9uZXdSZXNvdXJjZS5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICduZXdSZXNvdXJjZUN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgIGZyb21fcmVzb3VyY2U6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICBuYXZiYXJfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc2lkZW1lbnVfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VfdHlwZToge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBwYWdlaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFxyXG59KVxyXG4gLnN0YXRlKCdhcHAubmF2YmFyLnJlc291cmNlcy5lZGl0Jywge1xyXG4gICAgICAgICAgIHVybDonL2VkaXQvOmlkJyxcclxuICAgICAgICAgICAgICB2aWV3czoge1xyXG4gICAgICAgICAgICAgICAgICdjb250ZW50Uic6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAzX3Jlc291cmNlcy9hbmd1bGFyVGVtcGxhdGVzL2VkaXRSZXNvdXJjZS5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdlZGl0UmVzb3VyY2VDdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgLyonbWVudSc6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvbWVudS5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdtZW51Q3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LCovXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgIGlkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHByZXZfc3RhdGU6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICBuYXZiYXJfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc2lkZW1lbnVfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH1cclxufSlcclxuIC5zdGF0ZSgnYXBwLm5hdmJhci5yZXNvdXJjZXMudmlldycsIHtcclxuICAgICAgICAgICB1cmw6Jy92aWV3LzppZCcsXHJcbiAgICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICAgICAnY29udGVudFInOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwM19yZXNvdXJjZXMvYW5ndWxhclRlbXBsYXRlcy92aWV3UmVzb3VyY2UuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAndmlld1Jlc291cmNlQ3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcHJldl9zdGF0ZTp7XHJcbiAgICAgICAgICAgICAgICAgdmFsdWU6JycsIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHJlc291cmNlX3R5cGU6e1xyXG4gICAgICAgICAgICAgICAgIHZhbHVlOicnLCBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbn0pIFxyXG4uc3RhdGUoJ2FwcC5uYXZiYXIucmVzb3VyY2VzLmZvcm0nLCB7XHJcbiAgICAgICAgICAgdXJsOicvZm9ybS86aWQnLFxyXG4gICAgICAgICAgICAgIHZpZXdzOiB7XHJcbiAgICAgICBcclxuICAgICAgICAgICAgICAgICAnY29udGVudFInOiB7XHJcbiAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDNfcmVzb3VyY2VzL2FuZ3VsYXJUZW1wbGF0ZXMvcmVzb3VyY2VGb3JtLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAncmVzb3VyY2VGb3JtQ3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgIC8qJ21lbnUnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL3Rvb2xib3guaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ3Rvb2xib3hDdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sKi9cclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIG5hdmJhcl9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzaWRlbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzdWJUeXBlU2VsZWN0ZWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICByZXR1cm5TdGF0ZToge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG59KSBcclxuLnN0YXRlKCdhcHAubmF2YmFyLnJlc291cmNlcy5mb3JtLXZ1ZScsIHtcclxuICAgICAgICAgICB1cmw6Jy9mb3JtLXZ1ZS86aWQnLFxyXG5cclxuICAgICAgICAgICAgICB2aWV3czoge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgJ2NvbnRlbnRSJzoge1xyXG4gICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAzX3Jlc291cmNlcy9hbmd1bGFyVGVtcGxhdGVzL3Jlc291cmNlRm9ybVZ1ZS5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ3Jlc291cmNlRm9ybUNvbXBvbmVudCcgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgLyogJ21lbnUnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwM19yZXNvdXJjZXMvYW5ndWxhclRlbXBsYXRlcy90b29sYm94VnVlLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICd0b29sYm94Q29tcG9uZW50JyBcclxuICAgICAgICAgICAgICAgIH0sKi9cclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIG5hdmJhcl9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzaWRlbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfSkgXHJcblxyXG4uc3RhdGUoJ2FwcC5uYXZiYXIucmVzb3VyY2VzLm1hcHBpbmdzJywge1xyXG4gICAgICAgICAgIHVybDonL21hcHBpbmdzLzppZCcsXHJcbiAgICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICAgICAnY29udGVudFInOiB7XHJcbiAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDNfcmVzb3VyY2VzL2FuZ3VsYXJUZW1wbGF0ZXMvbWFwcGluZ3NGb3JtLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnbWFwcGluZ3NGb3JtQ3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgIC8qJ21lbnUnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL21lbnUuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnbWVudUN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSwqL1xyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICBpZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICBtZW51X2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgbmF2YmFyX2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHNpZGVtZW51X2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gLnN0YXRlKCdhcHAubmF2YmFyLnJlc291cmNlcy5kYXRhJywge1xyXG4gICAgICAgICAgIHVybDonL3JkYXRhLzppZCcsXHJcblxyXG4gICAgICAgICAgICAgIHZpZXdzOiB7XHJcbiAgICAgICAgICAgICAgICAgJ2NvbnRlbnRSJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDNfcmVzb3VyY2VzL2FuZ3VsYXJUZW1wbGF0ZXMvcmVzb3VyY2VEYXRhLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdyZXNvdXJjZURhdGFDdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgLyonbWVudSc6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvbWVudS5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdtZW51Q3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LCovICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgIGlkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIG1lbnVfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICBuYXZiYXJfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc2lkZW1lbnVfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAuc3RhdGUoJ2FwcC5uYXZiYXIucmVzb3VyY2VzLmRhdGEtcmVjb3JkJywge1xyXG4gICAgICAgICAgIHVybDonL2RhdGEtcmVjb3JkLzpyZXNvdXJjZV9pZC86aWQnLFxyXG5cclxuICAgICAgICAgICAgICB2aWV3czoge1xyXG4gICAgICAgICAgICAgICAgICdjb250ZW50Uic6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAzX3Jlc291cmNlcy9hbmd1bGFyVGVtcGxhdGVzL3Jlc291cmNlRGF0YVJlY29yZC5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAncmVzb3VyY2VEYXRhUmVjb3JkQ3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgIC8qJ21lbnUnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL21lbnUuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnbWVudUN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSwqLyAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICByZXNvdXJjZV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBpZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBtZW51X2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gIC5zdGF0ZSgnYXBwLm5hdmJhci5yZXNvdXJjZXMuZGF0YXNldC10cmFuc2Zvcm0nLCB7XHJcbiAgICAgICAgICAgdXJsOicvZGF0YXNldC10cmFuc2Zvcm0nLFxyXG5cclxuICAgICAgICAgICAgICB2aWV3czoge1xyXG4gICAgICAgICAgICAgICAgICdjb250ZW50Uic6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAzX3Jlc291cmNlcy9hbmd1bGFyVGVtcGxhdGVzL2RhdGFzZXRUcmFuc2Zvcm0uaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ2RhdGFzZXRUcmFuc2Zvcm1DdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgLyonbWVudSc6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvbWVudS5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdtZW51Q3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LCovICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIG1lbnVfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICBuYXZiYXJfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc2lkZW1lbnVfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgIH0pXHJcbiAgLnN0YXRlKCdhcHAubmF2YmFyLnJlc291cmNlcy5tYXBwaW5nLWRlZicsIHtcclxuICAgICAgICAgICB1cmw6Jy9tYXBwaW5nLWRlZi86aWQnLFxyXG5cclxuICAgICAgICAgICAgICB2aWV3czoge1xyXG4gICAgICAgICAgICAgICAgICdjb250ZW50Uic6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAzX3Jlc291cmNlcy9hbmd1bGFyVGVtcGxhdGVzL21hcHBpbmdEZWZpbml0aW9uLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdtYXBwaW5nRGVmaW5pdGlvbkN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAvKidtZW51Jzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9tZW51Lmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ21lbnVDdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sKi8gICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBcclxuICAgICAgICB9KVxyXG4uc3RhdGUoJ2FwcC5uYXZiYXIucmVzb3VyY2VzLmFwcGxpY2F0aW9uLWRlZmluaXRpb24nLCB7IFx0XHRcdFxyXG4gICAgICAgICAgICAgdXJsOicvYXBwbGljYXRpb24tZGVmaW5pdGlvbi86aWQnLFxyXG4gICAgICAgICAgICAgIHZpZXdzOiB7XHJcbiAgICAgICAgICAgICAgICAgJ2NvbnRlbnRSJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDNfcmVzb3VyY2VzL2FuZ3VsYXJUZW1wbGF0ZXMvYXBwbGljYXRpb25EZWZpbml0aW9uLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdhcHBsaWNhdGlvbkRlZmluaXRpb25DdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgbmF2YmFyX2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHNpZGVtZW51X2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGlkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBcclxuIH0pXHJcbi5zdGF0ZSgnYXBwLm5hdmJhci5yZXNvdXJjZXMuYXBwLW1lbnUtZGVmaW5pdGlvbicsIHsgXHRcdFx0XHJcbiAgICAgICAgICAgICB1cmw6Jy9hcHAtbWVudS1kZWZpbml0aW9uLzppZCcsXHJcbiAgICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICAgICAnY29udGVudFInOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwM19yZXNvdXJjZXMvYW5ndWxhclRlbXBsYXRlcy9hcHBNZW51RGVmaW5pdGlvbi5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnYXBwTWVudURlZmluaXRpb25DdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGZyb21BcHBsaWNhdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gfSlcclxuLnN0YXRlKCdhcHAubmF2YmFyLnJlc291cmNlcy5pbnRlZ3JhdGlvbi1kZWZpbml0aW9uJywgeyBcdFx0XHRcclxuICAgICAgICAgICAgIHVybDonL2ludGVncmF0aW9uLWRlZmluaXRpb24vOmlkJyxcclxuICAgICAgICAgICAgICB2aWV3czoge1xyXG4gICAgICAgICAgICAgICAgICdjb250ZW50Uic6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAzX3Jlc291cmNlcy9hbmd1bGFyVGVtcGxhdGVzL2ludGVncmF0aW9uRGVmaW5pdGlvbi5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnaW50ZWdyYXRpb25EZWZpbml0aW9uQ3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgIG5hdmJhcl9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzaWRlbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBpZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgXHJcbiB9KVxyXG4uc3RhdGUoJ2FwcC5uYXZiYXIucmVzb3VyY2VzLm5vdGlmaWNhdGlvbi1kZWZpbml0aW9uJywgeyBcdFx0XHRcclxuICAgICAgICAgICAgIHVybDonL25vdGlmaWNhdGlvbi1kZWZpbml0aW9uLzppZCcsXHJcbiAgICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICAgICAnY29udGVudFInOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwM19yZXNvdXJjZXMvYW5ndWxhclRlbXBsYXRlcy9ub3RpZmljYXRpb25EZWZpbml0aW9uLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdub3RpZmljYXRpb25EZWZpbml0aW9uQ3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgIG5hdmJhcl9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzaWRlbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBpZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgXHJcbiB9KVxyXG4uc3RhdGUoJ2FwcC5uYXZiYXIucmVzb3VyY2VzLnRva2VuLWRlZmluaXRpb24nLCB7IFx0XHRcdFxyXG4gICAgICAgICAgICAgdXJsOicvdG9rZW4tZGVmaW5pdGlvbi86aWQnLFxyXG4gICAgICAgICAgICAgIHZpZXdzOiB7XHJcbiAgICAgICAgICAgICAgICAgJ2NvbnRlbnRSJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDNfcmVzb3VyY2VzL2FuZ3VsYXJUZW1wbGF0ZXMvdG9rZW5EZWZpbml0aW9uVnVlLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICd0b2tlbkRlZmluaXRpb25DdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBcclxuIH0pXHJcbi5zdGF0ZSgnYXBwLm5hdmJhci5yZXNvdXJjZXMuc21hcnQtY29udHJhY3QtZGVmaW5pdGlvbicsIHsgXHRcdFx0XHJcbiAgICAgICAgICAgICB1cmw6Jy9zbWFydC1jb250cmFjdC1kZWZpbml0aW9uLzppZCcsXHJcbiAgICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICAgICAnY29udGVudFInOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwM19yZXNvdXJjZXMvYW5ndWxhclRlbXBsYXRlcy9zbWFydENvbnRyYWN0RGVmaW5pdGlvbi5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnc21hcnRDb250cmFjdERlZmluaXRpb25DdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gfSlcclxuICAuc3RhdGUoJ2FwcC5uYXZiYXIucmVzb3VyY2VzLnBhZ2VzJywge1xyXG4gICAgICAgICAgICAgdXJsOicvcGFnZXMnLFxyXG4gICAgICAgICAgICAgIHZpZXdzOiB7XHJcbiAgICAgICAgICAgICAgICAgJ2NvbnRlbnRSJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDNfcmVzb3VyY2VzL2FuZ3VsYXJUZW1wbGF0ZXMvcGFnZXMuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ3BhZ2VzQ3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgIC8qJ21lbnUnOiB7XHJcbiAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvbWVudS5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdtZW51Q3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LCovICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICBuYXZiYXJfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc2lkZW1lbnVfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG4gfSlcclxuLnN0YXRlKCdhcHAubmF2YmFyLnJlc291cmNlcy5wYWdlcy1mb3JtJywge1xyXG4gICAgICAgICAgICAgdXJsOicvcGFnZXMtZm9ybS86aWQnLFxyXG4gICAgICAgICAgICAgIHZpZXdzOiB7XHJcbiAgICAgICAgICAgICAgICAgJ2NvbnRlbnRSJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDNfcmVzb3VyY2VzL2FuZ3VsYXJUZW1wbGF0ZXMvcGFnZXNGb3JtLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdwYWdlc0Zvcm1DdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgLyonbWVudSc6IHtcclxuICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9tZW51Lmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ21lbnVDdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sKi8gICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICBpZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgcHJldl9zdGF0ZToge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgbmF2YmFyX2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBzaWRlbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiB9KVxyXG4uc3RhdGUoJ2FwcC5uYXZiYXIucmVzb3VyY2VzLnBhZ2VzLWRlZmluaXRpb24nLCB7XHJcbiAgICAgICAgICAgICB1cmw6Jy9wYWdlcy1kZWZpbml0aW9uLzppZCcsXHJcbiAgICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICAgICAnY29udGVudFInOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwM19yZXNvdXJjZXMvYW5ndWxhclRlbXBsYXRlcy9wYWdlc0RlZmluaXRpb24uaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ3BhZ2VzRGVmaW5pdGlvbkN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICBpZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBuYXZiYXJfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICBwcmV2X3N0YXRlOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH1cclxuIH0pXHJcbi5zdGF0ZSgnYXBwLm5hdmJhci5yZXNvdXJjZXMubWVudXMtZGVmaW5pdGlvbicsIHtcclxuICAgICAgICAgICAgIHVybDonL21lbnVzLWRlZmluaXRpb24nLFxyXG4gICAgICAgICAgICAgIHZpZXdzOiB7XHJcbiAgICAgICAgICAgICAgICAgJ2NvbnRlbnRSJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDNfcmVzb3VyY2VzL2FuZ3VsYXJUZW1wbGF0ZXMvbWVudXNEZWZpbml0aW9uLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdtZW51c0RlZmluaXRpb25DdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgLyonbWVudSc6IHtcclxuICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9tZW51Lmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ21lbnVDdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sKi8gICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICBpZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIG5hdmJhcl9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzaWRlbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gfSlcclxuIC5zdGF0ZSgnYXBwLm5hdmJhci5jb2RlcycsIHtcclxuICAgIHVybDogJy9jb2RlcycsXHJcblxyXG4gICAgYWJzdHJhY3Q6IHRydWUsXHJcbiAgICAgIFxyXG4gICAgLyp2aWV3czoge1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgJ21lbnUnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL21lbnUuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnbWVudUN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBcclxuICAgICB9LCovXHJcbiAgICAgXHJcbiAgICAgXHJcbiAgfSlcclxuLnN0YXRlKCdhcHAubmF2YmFyLmNvZGVzLmxpc3QnLCB7XHJcbiAgICB1cmw6ICcnLFxyXG5cclxuICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICAgICdjb250ZW50UkBhcHAubmF2YmFyJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDRfc2V0dGluZ3MvYW5ndWxhclRlbXBsYXRlcy9jb2Rlc0RhdGEuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ2NvZGVzRGF0YUN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgIH0sXHJcbiAgICAgICAgLyogICAgICAgICAgLyonbWVudSc6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvbWVudS5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdtZW51Q3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LCovXHJcbiAgICAgIFxyXG4gICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgIG1lbnVfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICBuYXZiYXJfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc2lkZW1lbnVfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICBcclxuICB9KVxyXG4gICAgLnN0YXRlKCdhcHAubmF2YmFyLmNvZGVzLmRldGFpbHMnLCB7XHJcbiAgICB1cmw6ICcvZGV0YWlscycsXHJcblxyXG4gICAgICAgIHZpZXdzOiB7XHJcbiAgICAgICAgICAgICAgICAgJ2NvbnRlbnRSQGFwcC5uYXZiYXInOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwNF9zZXR0aW5ncy9hbmd1bGFyVGVtcGxhdGVzL2NvZGVzRGV0YWlscy5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ2NvZGVzRGV0YWlsc0N0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgLyogJ21lbnUnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwNF9zZXR0aW5ncy9hbmd1bGFyVGVtcGxhdGVzL2NvZGVzTWVudS5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdtZW51Q3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LCovICAgXHJcbiAgICAgIH0sXHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgIGlkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICBtZW51X2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgbmF2YmFyX2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHNpZGVtZW51X2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgXHJcbiAgIFxyXG4gIH0pXHJcbiAgICBcclxuLnN0YXRlKCdhcHAubmF2YmFyLmNvZGVzLm5ldycsIHtcclxuICAgIHVybDogJy9uZXcnLFxyXG5cclxuICAgICAgICB2aWV3czoge1xyXG4gICAgICAgICAgICAgICAgICdjb250ZW50UkBhcHAubmF2YmFyJzoge1xyXG4gICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDA0X3NldHRpbmdzL2FuZ3VsYXJUZW1wbGF0ZXMvY29kZXNOZXcuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdjb2Rlc05ld0N0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgLyogJ21lbnUnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwNF9zZXR0aW5ncy9hbmd1bGFyVGVtcGxhdGVzL2NvZGVzTWVudS5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdtZW51Q3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LCovICAgXHJcbiAgICAgIH0sXHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgIGlkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICBtZW51X2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgbmF2YmFyX2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHNpZGVtZW51X2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgXHJcbiAgIFxyXG4gIH0pXHJcbiAgIFxyXG4gLypcclxuLnN0YXRlKCdhcHAubmF2YmFyLmNvZGVzLmVkaXQnLCB7XHJcbiAgICB1cmw6ICcvZWRpdC86aWQnLFxyXG5cclxuICAgICAgICB2aWV3czoge1xyXG4gICAgICAgICAgICAgICAgICdjb250ZW50UkBhcHAubmF2YmFyJzoge1xyXG4gICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDA0X3NldHRpbmdzL2FuZ3VsYXJUZW1wbGF0ZXMvY29kZXNFZGl0Lmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnY29kZXNFZGl0Q3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LCAgIFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgIGlkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIG5hdmJhcl9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzaWRlbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgIFxyXG4gICBcclxuICB9KVxyXG4gICovXHJcblxyXG5cclxuLnN0YXRlKCdhcHAubmF2YmFyLnVzZXInLCB7XHJcbiAgICB1cmw6ICcvdXNlcicsXHJcblxyXG4gICAgYWJzdHJhY3Q6IHRydWUsXHJcbiAgICAgIFxyXG4gICAgLyp2aWV3czoge1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgJ21lbnUnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL21lbnUuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnbWVudUN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBcclxuICAgICB9LCovXHJcbiAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgIG1lbnVfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICBuYXZiYXJfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc2lkZW1lbnVfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICBcclxuICAgXHJcbiAgfSlcclxuIC5zdGF0ZSgnYXBwLm5hdmJhci51c2VyLmRldGFpbHMnLCB7XHJcbiAgICB1cmw6ICcvZGV0YWlscycsXHJcblxyXG4gICAgICAgIHZpZXdzOiB7XHJcbiAgICAgICAgICAgICAgICAgJ2NvbnRlbnRSQGFwcC5uYXZiYXInOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwNF9zZXR0aW5ncy9hbmd1bGFyVGVtcGxhdGVzL3VzZXJEZXRhaWxzLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAndXNlckRldGFpbHNDdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgIC8qICdtZW51Jzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDRfc2V0dGluZ3MvYW5ndWxhclRlbXBsYXRlcy9jb2Rlc01lbnUuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnbWVudUN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSwqLyAgIFxyXG4gICAgICB9LFxyXG4gICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICBpZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIG5hdmJhcl9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzaWRlbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgIFxyXG4gICBcclxuICB9KVxyXG4uc3RhdGUoJ2FwcC5uYXZiYXIuZ3JvdXBzJywge1xyXG4gICAgICAgICAgIHVybDonL2dyb3VwcycsXHJcblxyXG4gICAgICAgICAgICAgIHZpZXdzOiB7XHJcbiAgICAgICAgICAgICAgICAgJ2NvbnRlbnRSJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDRfc2V0dGluZ3MvYW5ndWxhclRlbXBsYXRlcy9ncm91cHNEZWZpbml0aW9uLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdncm91cHNDdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgLyonbWVudSc6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvbWVudS5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdtZW51Q3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LCovICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgIG1lbnVfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICBuYXZiYXJfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc2lkZW1lbnVfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbi5zdGF0ZSgnYXBwLm5hdmJhci51c2VycycsIHtcclxuICAgICAgICAgICB1cmw6Jy91c2VycycsXHJcbiAgICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICAgICAnY29udGVudFInOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwNF9zZXR0aW5ncy9hbmd1bGFyVGVtcGxhdGVzL3VzZXJzRGVmaW5pdGlvbi5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAndXNlcnNEZWZpbml0aW9uQ3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LCAgICAgICAgXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICBpZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICBtZW51X2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgbmF2YmFyX2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHNpZGVtZW51X2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4uc3RhdGUoJ2FwcC5uYXZiYXIudXNlcnNzZWN1cml0eScsIHtcclxuICAgICAgICAgICB1cmw6Jy9zZWN1cml0eScsXHJcbiAgICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICAgICAnY29udGVudFInOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwNF9zZXR0aW5ncy9hbmd1bGFyVGVtcGxhdGVzL3VzZXJzU2VjdXJpdHkuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ3VzZXJzU2VjdXJpdHlDdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sICAgICAgICBcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgIGlkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgIG1lbnVfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIG5hdmJhcl9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHNpZGVtZW51X2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbi5zdGF0ZSgnYXBwLm1lbnUudGFza3MnLCB7XHJcbiAgICB1cmw6ICcvdGFza3MnLFxyXG4gICAgYWJzdHJhY3Q6dHJ1ZSxcclxuICAgICAgICB2aWV3czoge1xyXG4gICAgICAgICAgICAgICAgICdjb250ZW50QCc6IHtcclxuICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL2xheW91dC5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgLy9jb250cm9sbGVyOiAndGFza0xpc3RDdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgLyogICdtZW51Jzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDRfc2V0dGluZ3MvYW5ndWxhclRlbXBsYXRlcy9jb2Rlc01lbnUuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnbWVudUN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICovXHJcbiAgICAgIH0sXHJcbiAgICAgIFxyXG4gICBcclxuICB9KVxyXG4uc3RhdGUoJ2FwcC5uYXZiYXIudGFza3MnLCB7XHJcbiAgICB1cmw6ICcvdGFza3MnLFxyXG4gICAgYWJzdHJhY3Q6dHJ1ZSxcclxuICAgICAgICB2aWV3czoge1xyXG4gICAgICAgICAgICAgICAgICdjb250ZW50QCc6IHtcclxuICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL2xheW91dC5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgLy9jb250cm9sbGVyOiAndGFza0xpc3RDdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgLyogICdtZW51Jzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDRfc2V0dGluZ3MvYW5ndWxhclRlbXBsYXRlcy9jb2Rlc01lbnUuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnbWVudUN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICovXHJcbiAgICAgIH0sXHJcbiAgICAgIFxyXG4gICBcclxuICB9KVxyXG4uc3RhdGUoJ2FwcC5uYXZiYXIudGFza3MubGlzdCcsIHtcclxuICAgICAgICAgICB1cmw6Jy8nLFxyXG5cclxuICAgICAgICAgICAgICB2aWV3czoge1xyXG4gICAgICAgICAgICAgICAgICdjb250ZW50Uic6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDA1X3Rhc2tzL2FuZ3VsYXJUZW1wbGF0ZXMvdGFza3NMaXN0Lmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICd0YXNrTGlzdEN0cmwnIFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgLyogJ21lbnUnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL21lbnUuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnbWVudUN0cmwnIFxyXG4gICAgICAgICAgICAgICAgICB9LCovXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIG5hdmJhcl9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzaWRlbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgXHJcbn0pXHJcbi5zdGF0ZSgnYXBwLm5hdmJhci50YXNrcy5mb3JtJywge1xyXG4gICAgICAgICAgIHVybDonL2Zvcm0vOmZvcm1UeXBlLzppZCcsXHJcblxyXG4gICAgICAgICAgICAgIHZpZXdzOiB7XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgJ2NvbnRlbnRSJzoge1xyXG4gICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDA1X3Rhc2tzL2FuZ3VsYXJUZW1wbGF0ZXMvdGFza3NGb3JtLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAndGFza0Zvcm1DdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgJ21lbnUnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL3Rhc2t0b29sYm94Lmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ3Rhc2tUb29sYm94Q3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICBpZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmb3JtVHlwZToge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIG1lbnVfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICBuYXZiYXJfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc2lkZW1lbnVfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcmVzb3VyY2U6e3ZhbHVlOiB7fX0sXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfSkgXHJcbi5zdGF0ZSgnYXBwLm5hdmJhci50YXNrcy5uZXcnLCB7XHJcbiAgICAgICAgICAgdXJsOicvbmV3JyxcclxuXHJcbiAgICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICAgICAnY29udGVudFInOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwNV90YXNrcy9hbmd1bGFyVGVtcGxhdGVzL3Rhc2tzTmV3Lmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICd0YXNrTmV3Q3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgLyonbWVudSc6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvbWVudS5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdtZW51Q3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LCovICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICBpZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIG5hdmJhcl9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzaWRlbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9XHJcbn0pXHJcbi5zdGF0ZSgnYXBwLm5hdmJhci50YXNrcy5kZWZpbml0aW9uJywge1xyXG4gICAgICAgICAgIHVybDonL2RlZmluaXRpb24vOmlkJyxcclxuXHJcbiAgICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICAgICAnY29udGVudFInOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwNV90YXNrcy9hbmd1bGFyVGVtcGxhdGVzL3Rhc2tzRGVmaW5pdGlvbi5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAndGFza0RlZmluaXRpb25DdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8qICAgICAnbWVudSc6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDA1X3Rhc2tzL2FuZ3VsYXJUZW1wbGF0ZXMvdGFza3NEZWZpbml0aW9uTGlzdC5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICd0YXNrRGVmaW5pdGlvbkxpc3RDdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sICAgXHJcbiAgICAgICAgICAqLyAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICBpZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRhYl9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIG5hdmJhcl9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzaWRlbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9XHJcbn0pXHJcbi5zdGF0ZSgnYXBwLm5hdmJhci50YXNrcy5kZWZpbml0aW9uMicsIHtcclxuICAgICAgICAgICB1cmw6Jy9kZWZpbml0aW9uMi86aWQnLFxyXG5cclxuICAgICAgICAgICAgICB2aWV3czoge1xyXG4gICAgICAgICAgICAgICAgICdjb250ZW50Uic6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDA1X3Rhc2tzL2FuZ3VsYXJUZW1wbGF0ZXMvdGFza3NEZWZpbml0aW9uRGV0YWlsZWQuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ3Rhc2tEZWZpbml0aW9uQ3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgIC8qJ21lbnUnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL21lbnUuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnbWVudUN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSwqLyAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgIGlkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGFiX2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICBtZW51X2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgbmF2YmFyX2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHNpZGVtZW51X2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH1cclxufSlcclxuLnN0YXRlKCdhcHAubmF2YmFyLnRhc2tzLmluaXRpYXRlLWxpc3QnLCB7XHJcbiAgICAgICAgICAgdXJsOicvaW5pdGlhdGUtbGlzdCcsXHJcblxyXG4gICAgICAgICAgICAgIHZpZXdzOiB7XHJcbiAgICAgICAgICAgICAgICAgJ2NvbnRlbnRSJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDVfdGFza3MvYW5ndWxhclRlbXBsYXRlcy90YXNrc0luaXRpYXRlTGlzdC5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAndGFza0luaXRpYXRlTGlzdEN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAvKidtZW51Jzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9tZW51Lmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ21lbnVDdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sKi9cclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBuYXZiYXJfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc2lkZW1lbnVfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxufSlcclxuLnN0YXRlKCdhcHAubmF2YmFyLnRhc2tzLmV4ZWN1dGUtbGlzdCcsIHtcclxuICAgICAgICAgICB1cmw6Jy9leGVjdXRlLWxpc3QnLFxyXG5cclxuICAgICAgICAgICAgICB2aWV3czoge1xyXG4gICAgICAgICAgICAgICAgICdjb250ZW50Uic6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDA1X3Rhc2tzL2FuZ3VsYXJUZW1wbGF0ZXMvdGFza3NFeGVjdXRlTGlzdC5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAndGFza0V4ZWN1dGVMaXN0Q3RybCcgXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgJ21lbnUnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL21lbnUuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnbWVudUN0cmwnIFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSwgIFxyXG4gICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICBuYXZiYXJJZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIG5hdmJhcl9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzaWRlbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG59KVxyXG4uc3RhdGUoJ2FwcC5uYXZiYXIudGFza3MucHJvYycsIHtcclxuICAgICAgICAgICB1cmw6Jy9wcm9jLzppZCcsXHJcblxyXG4gICAgICAgICAgICAgIHZpZXdzOiB7XHJcbiAgICAgICAgICAgICAgICAgJ2NvbnRlbnRSJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDVfdGFza3MvYW5ndWxhclRlbXBsYXRlcy90YXNrc1Byb2MuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ3Rhc2tQcm9jQ3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICdtZW51Jzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9tZW51Lmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdtZW51Q3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LCAgIFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgIGlkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGZyb21TdGF0ZU5hbWU6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZnJvbVN0YXRlUGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHByZXZfdGFza19leGVjdXRlX2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHByZXZfdGFza19wYWNrYWdlOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIG91dGNvbWVfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcHJlc2VudGF0aW9uX2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICBpbml0X3R5cGU6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgbmF2YmFyX2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHNpZGVtZW51X2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG59KVxyXG4uc3RhdGUoJ2FwcC5uYXZiYXIudGFza3MuaW5pdGlhdGUnLCB7XHJcbiAgICAgICAgICAgdXJsOicvaW5pdGlhdGUvOmlkLzpwcmV2X3Rhc2tfZXhlY3V0ZV9pZC86b3V0Y29tZV9pZC86cHJlc2VudGF0aW9uX2lkJyxcclxuXHJcbiAgICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICAgICAnY29udGVudFInOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwNV90YXNrcy9hbmd1bGFyVGVtcGxhdGVzL3Rhc2tzSW5pdGlhdGUuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ3Rhc2tJbml0aWF0ZUN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAnbWVudSc6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvbWVudS5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnbWVudUN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSwgICBcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICBpZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmcm9tU3RhdGVOYW1lOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGZyb21TdGF0ZVBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBwcmV2X3Rhc2tfZXhlY3V0ZV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBwcmV2X3Rhc2tfcGFja2FnZToge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBvdXRjb21lX2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHByZXNlbnRhdGlvbl9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIG1lbnVfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbn0pXHJcbi5zdGF0ZSgnYXBwLm5hdmJhci50YXNrcy5leGVjdXRlJywge1xyXG4gICAgICAgICAgIHVybDonL2V4ZWN1dGUvOmlkLzp0YXNrX2luaXRpYXRlX2lkLzp0YXNrX2V4ZWN1dGVfaWQnLFxyXG5cclxuICAgICAgICAgICAgICB2aWV3czoge1xyXG4gICAgICAgICAgICAgICAgICdjb250ZW50Uic6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDA1X3Rhc2tzL2FuZ3VsYXJUZW1wbGF0ZXMvdGFza3NFeGVjdXRlLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICd0YXNrRXhlY3V0ZUN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAnbWVudSc6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvbWVudS5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnbWVudUN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSwgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICBpZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmcm9tU3RhdGVOYW1lOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGZyb21TdGF0ZVBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRhc2tfaW5pdGlhdGVfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgIHRhc2tfZXhlY3V0ZV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBwcmV2X3Rhc2tfcGFja2FnZToge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmb3JfZ3JvdXA6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICBtZW51X2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgbmF2YmFyX2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHNpZGVtZW51X2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG59KVxyXG4uc3RhdGUoJ2FwcC5uYXZiYXIudGFza3MuY2xhaW0nLCB7XHJcbiAgICAgICAgICAgdXJsOicvY2xhaW0nLFxyXG5cclxuICAgICAgICAgICAgICB2aWV3czoge1xyXG4gICAgICAgICAgICAgICAgICdjb250ZW50Uic6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDA1X3Rhc2tzL2FuZ3VsYXJUZW1wbGF0ZXMvdGFza3NFeGVjdXRlTGlzdC5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAndGFza0V4ZWN1dGVMaXN0Q3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICdtZW51Jzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9tZW51Lmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdtZW51Q3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LCAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBuYXZiYXJfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc2lkZW1lbnVfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfVxyXG59KVxyXG5cclxuLnN0YXRlKCdhcHAubmF2YmFyLnRhc2tzLm91dGNvbWUtZGVmaW5pdGlvbicsIHtcclxuICAgICAgICAgICB1cmw6Jy9vdXRjb21lLWRlZmluaXRpb24vOmlkJyxcclxuXHJcbiAgICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICAgICAnY29udGVudFInOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwNV90YXNrcy9hbmd1bGFyVGVtcGxhdGVzL3Rhc2tzT3V0Y29tZURlZmluaXRpb24uaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ3Rhc2tPdXRjb21lRGVmaW5pdGlvbkN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAnbWVudSc6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvbWVudS5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnbWVudUN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSwgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICBpZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmcm9tU3RhdGVOYW1lOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGZyb21TdGF0ZVBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICBtZW51X2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgbmF2YmFyX2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHNpZGVtZW51X2lkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG59KVxyXG4uc3RhdGUoJ2FwcC5uYXZiYXIub3JnYW5pc2F0aW9uJywge1xyXG4gICAgICAgICAgIHVybDonL29yZ2FuaXNhdGlvbicsXHJcblxyXG4gICAgICAgICAgICAgIHZpZXdzOiB7XHJcbiAgICAgICAgICAgICAgICAgJ2NvbnRlbnRSJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDRfc2V0dGluZ3MvYW5ndWxhclRlbXBsYXRlcy9vcmdhbmlzYXRpb24uaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ29yZ2FuaXNhdGlvbkN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAvKidtZW51Jzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9tZW51Lmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ21lbnVDdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sKi8gICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICBpZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICBuYXZiYXJfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc2lkZW1lbnVfaWQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbi5zdGF0ZSgnYXBwLm5hdmJhci5jb21tdW5pdHknLCB7XHJcbiAgICAgICAgICAgdXJsOicvY29tbXVuaXR5JyxcclxuXHJcbiAgICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICAgICAnY29udGVudFInOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwNF9zZXR0aW5ncy9hbmd1bGFyVGVtcGxhdGVzL2NvbW11bml0eS5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnb3JnYW5pc2F0aW9uQ3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgIC8qJ21lbnUnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL21lbnUuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnbWVudUN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSwqLyAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgIGlkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgIG5hdmJhcl9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzaWRlbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuXHJcbi5zdGF0ZSgnYXBwLm5hdmJhci5tZW51LWNyZWF0ZScsIHtcclxuICAgICAgICAgICB1cmw6Jy9tZW51LWNyZWF0ZScsXHJcbiAgICAgICAgICAgYWJzdHJhY3Q6dHJ1ZSxcclxuXHJcbiAgICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICAgICAnY29udGVudEAnOiB7XHJcbiAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9sYXlvdXQuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgIC8vY29udHJvbGxlcjogJ3Rhc2tMaXN0Q3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfVxyXG59KVxyXG4uc3RhdGUoJ2FwcC5uYXZiYXIubWVudS1jcmVhdGUubmF2YmFyJywge1xyXG4gICAgICAgICAgIHVybDonL21lbnUtY3JlYXRlL25hdmJhcicsXHJcbiAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICAgICAnY29udGVudFInOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwNF9zZXR0aW5ncy9hbmd1bGFyVGVtcGxhdGVzL2NyZWF0ZU5hdmJhci5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnb3JnYW5pc2F0aW9uQ3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgIC8qJ21lbnUnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL21lbnUuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnbWVudUN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSwqLyAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICBpZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIG5hdmJhcl9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzaWRlbWVudV9pZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9XHJcbn0pXHJcbi5zdGF0ZSgnYXBwLm5hdmJhci52cGFnZScsIHtcclxuICAgICAgICAgICB1cmw6Jy92cGFnZS86cGFnZWlkLzp2ZXJzaW9uP3JpbnN0YW5jZScsXHJcbiAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICAgICAnY29udGVudFInOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwNl92cGFnZS9hbmd1bGFyVGVtcGxhdGVzL3ZwYWdlLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICd2cGFnZUN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIC8qICdtZW51Jzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9tZW51Lmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdtZW51Q3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LCAgKi8gXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgcGFnZWlkOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgdmVyc2lvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnMCcsXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbn0pXHJcbi5zdGF0ZSgnYXBwLm5hdmJhci5wdWJsaWMtdnBhZ2UnLCB7XHJcbiAgICAgICAgICAgdXJsOicvcHZwYWdlLzpvcmdpZC86dmVyc2lvbi86cGFnZWlkP3JpbnN0YW5jZScsXHJcbiAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICAgICAnY29udGVudFInOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwNl92cGFnZS9hbmd1bGFyVGVtcGxhdGVzL3ZwYWdlLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICd2cGFnZUN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIC8qICdtZW51Jzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9tZW51Lmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdtZW51Q3RybCcgXHJcbiAgICAgICAgICAgICAgICB9LCAgKi8gXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgcGFnZWlkOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHZlcnNpb246IHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgb3JnaWQ6IHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcGFyYW1ldGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlTG9naW46IGZhbHNlIC8vIGNoYW5nZSBkZWZhdWx0IHZhbHVlIGZyb20gJ2FwcCdcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfVxyXG59KVxyXG4uc3RhdGUoJ2FwcC5uYXZiYXIuc2VsZWN0ZW52aXJvbm1lbnQnLCB7XHJcbiAgICAgICAgICAgIHVybDonL3NlbGVjdGVudi86dHlwZScsXHJcbiAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICAgICAnY29udGVudFInOiB7XHJcbiAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAyX2F1dGgvYW5ndWxhclRlbXBsYXRlcy9zZWxlY3RlbnZpcm9ubWVudC5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnc2VsZWN0ZW52aXJvbm1lbnRDdHJsJyBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgdHlwZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgXHJcblxyXG59KSBcclxuLnN0YXRlKCdhcHAuc2lnbnVwJywge1xyXG4gICAgICAgICAgICB1cmw6Jy9zaWdudXAnLFxyXG5cclxuICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgIC8qICAnaGVhZGVyQCc6IHtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDJfYXV0aC9hbmd1bGFyVGVtcGxhdGVzL3NpbXBsZWhlYWRlci5odG1sJyxcclxuICAgICAgICAgICAgICAgLy8gY29udHJvbGxlcjogJ3NpbXBsZWhlYWRlckNvbnRyb2xsZXInXHJcbiAgICAgICAgICAgIH0sKi9cclxuICAgICAgICAgICAgJ2NvbnRlbnRAJzoge1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL3NpZ251cC5odG1sJyxcclxuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdzaWdudXBDdHJsJyBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAvKiAnZm9vdGVyQCc6IHtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9mb290ZXIuaHRtbCcsXHJcbiAgICAgICAgICAgICAgIC8vIGNvbnRyb2xsZXI6ICdsb2dpbkN0cmwnIFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICovXHJcbiAgICAgICAgfSxcclxuICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICByZXF1aXJlTG9naW46IGZhbHNlIC8vIGNoYW5nZSBkZWZhdWx0IHZhbHVlIGZyb20gJ2FwcCdcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgIH0pXHJcbi5zdGF0ZSgnYXBwLnJlZ2lzdGVyJywge1xyXG4gICAgICAgICAgICB1cmw6Jy9yZWdpc3Rlci86c2lnbnVwaWQnLFxyXG5cclxuICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAvKiAnaGVhZGVyQCc6IHtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDJfYXV0aC9hbmd1bGFyVGVtcGxhdGVzL3NpbXBsZWhlYWRlci5odG1sJyxcclxuICAgICAgICAgICAgICAgLy8gY29udHJvbGxlcjogJ3NpbXBsZWhlYWRlckNvbnRyb2xsZXInXHJcbiAgICAgICAgICAgIH0sKi9cclxuICAgICAgICAgICAgJ2NvbnRlbnRAJzoge1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL3JlZ2lzdGVyLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ3JlZ2lzdGVyQ3RybCcgXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICdmb290ZXJAJzoge1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL2Zvb3Rlci5odG1sJyxcclxuICAgICAgICAgICAgICAgLy8gY29udHJvbGxlcjogJ2xvZ2luQ3RybCcgXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICBzaWdudXBpZDoge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9LFxyXG4gICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIHJlcXVpcmVMb2dpbjogZmFsc2UgLy8gY2hhbmdlIGRlZmF1bHQgdmFsdWUgZnJvbSAnYXBwJ1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgfSkgXHJcbi5zdGF0ZSgnYXBwLnVucmVnaXN0ZXInLCB7XHJcbiAgICAgICAgICAgIHVybDonL3VucmVnaXN0ZXIvOnNpZ251cGlkJyxcclxuXHJcbiAgICAgICAgICAgIHZpZXdzOiB7XHJcbiAgICAgICAgICAgLyogJ2hlYWRlckAnOiB7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAyX2F1dGgvYW5ndWxhclRlbXBsYXRlcy9zaW1wbGVoZWFkZXIuaHRtbCcsXHJcbiAgICAgICAgICAgICAgIC8vIGNvbnRyb2xsZXI6ICdzaW1wbGVoZWFkZXJDb250cm9sbGVyJ1xyXG4gICAgICAgICAgICB9LCovXHJcbiAgICAgICAgICAgICdjb250ZW50QCc6IHtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy91bnJlZ2lzdGVyLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ3VucmVnaXN0ZXJDdHJsJyBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgJ2Zvb3RlckAnOiB7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvZm9vdGVyLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAvLyBjb250cm9sbGVyOiAnbG9naW5DdHJsJyBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgIHNpZ251cGlkOiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgcmVxdWlyZUxvZ2luOiBmYWxzZSAvLyBjaGFuZ2UgZGVmYXVsdCB2YWx1ZSBmcm9tICdhcHAnXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICB9KSBcclxuLnN0YXRlKCdhcHAubm9tZW51LnB1YmxpY3Rhc2tzJywge1xyXG4gICAgICAgICAgIHVybDonL3B1YmxpYy86b3JnX2lkLzp0YXNrX25hbWUnLFxyXG4gICAgICAgICAgIHZpZXdzOiB7ICBcclxuICAgICAgICAgICAgICAgJ2NvbnRlbnRSJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDVfdGFza3MvYW5ndWxhclRlbXBsYXRlcy90YXNrc1B1YmxpY0V4ZWN1dGUuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ3Rhc2tQdWJsaWNDdHJsJyxcclxuICAgICAgICAgICAgICAgIH0sICAgXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICBvcmdfaWQ6IHtcclxuICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0YXNrX25hbWU6IHtcclxuICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0YXNrX2lkOiB7XHJcbiAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfSAgICAgICAgICAgIFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgcmVxdWlyZUxvZ2luOiBmYWxzZSAvLyBjaGFuZ2UgZGVmYXVsdCB2YWx1ZSBmcm9tICdhcHAnXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxufSlcclxuXHJcblxyXG4uc3RhdGUoJ2FwcC5pbmRleCcsIHtcclxuIFxyXG4gLy8gcmVkaXJlY3RUbzogKCkgPT4gXCJhcHAubmF2YmFyLmhvbWVcIixcclxuIC8vIGRhdGE6IHtcclxuICAgICAgICAgICBcclxuIC8vICAgcmVxdWlyZUxvZ2luOiB0cnVlIC8vIGNoYW5nZSBkZWZhdWx0IHZhbHVlIGZyb20gJ2FwcCdcclxuICAgICAgICAgICAgXHJcbiAgLy99ICBcclxuICAgdXJsOicvJyxcclxuICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgLyonaGVhZGVyQCc6IHtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDJfYXV0aC9hbmd1bGFyVGVtcGxhdGVzL3NpbXBsZWhlYWRlci5odG1sJyxcclxuICAgICAgICAgICAgfSwqL1xyXG4gICAgICAgICAgICAnY29udGVudEAnOiB7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4SnNvbi5jb25maWcuaG9tZXBhZ2V0ZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnY2hhbmdlUGFzc3dvcmRSZXF1ZXN0Q3RybCcgXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICdmb290ZXJAJzoge1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL2Zvb3Rlci5odG1sJyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICBcclxuICAgICAgICB9LFxyXG4gICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgIHJlcXVpcmVMb2dpbjogZmFsc2UgLy8gY2hhbmdlIGRlZmF1bHQgdmFsdWUgZnJvbSAnYXBwJ1xyXG4gICAgICAgICAgICAgIH0gIFxyXG59KVxyXG4uc3RhdGUoJ2FwcC5jaGFuZ2VwYXNzcmVxdWVzdCcsIHtcclxuICAgICAgICAgICAgdXJsOicvY2hhbmdlcGFzc3JlcXVlc3QnLFxyXG4gICAgICAgICAgICB2aWV3czoge1xyXG4gICAgICAgICAgICAnaGVhZGVyQCc6IHtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDJfYXV0aC9hbmd1bGFyVGVtcGxhdGVzL3NpbXBsZWhlYWRlci5odG1sJyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgJ2NvbnRlbnRAJzoge1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMl9hdXRoL2FuZ3VsYXJUZW1wbGF0ZXMvY2hhbmdlUGFzc3dvcmRSZXF1ZXN0Lmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ2NoYW5nZVBhc3N3b3JkUmVxdWVzdEN0cmwnIFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAnZm9vdGVyQCc6IHtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9mb290ZXIuaHRtbCcsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgfSxcclxuICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICByZXF1aXJlTG9naW46IGZhbHNlIC8vIGNoYW5nZSBkZWZhdWx0IHZhbHVlIGZyb20gJ2FwcCdcclxuICAgICAgICAgICAgICB9ICBcclxufSkgXHJcbi5zdGF0ZSgnYXBwLmNoYW5nZXBhc3MnLCB7XHJcbiAgICAgICAgICAgIHVybDonL2NoYW5nZXBhc3MvOmRpZ2VzdCcsXHJcbiAgICAgICAgICAgIHZpZXdzOiB7XHJcbiAgICAgICAgICAgICAgICAnaGVhZGVyQCc6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAyX2F1dGgvYW5ndWxhclRlbXBsYXRlcy9zaW1wbGVoZWFkZXIuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgJ2NvbnRlbnRAJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDJfYXV0aC9hbmd1bGFyVGVtcGxhdGVzL2NoYW5nZVBhc3N3b3JkLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdjaGFuZ2VQYXNzd29yZEN0cmwnIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICdmb290ZXJAJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9mb290ZXIuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlnZXN0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlTG9naW46IGZhbHNlIC8vIGNoYW5nZSBkZWZhdWx0IHZhbHVlIGZyb20gJ2FwcCdcclxuICAgICAgICAgICAgICAgICAgICAgIH0gIFxyXG59KSBcclxuLnN0YXRlKCdhcHAubG9naW4nLCB7XHJcbiAgICAgICAgICAgIHVybDonL2xvZ2luJyxcclxuICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgJ2hlYWRlckAnOiB7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAyX2F1dGgvYW5ndWxhclRlbXBsYXRlcy9zaW1wbGVoZWFkZXIuaHRtbCcsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICdjb250ZW50QCc6IHtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDJfYXV0aC9hbmd1bGFyVGVtcGxhdGVzL2xvZ2luLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ2xvZ2luQ3RybCcgXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICdmb290ZXJAJzoge1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL2Zvb3Rlci5odG1sJyxcclxuICAgICAgICAgICAgfSwgICBcclxuICAgICAgICB9LFxyXG4gICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybl91cmw6IHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0sIFxyXG4gICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgIHJlcXVpcmVMb2dpbjogZmFsc2UgLy8gY2hhbmdlIGRlZmF1bHQgdmFsdWUgZnJvbSAnYXBwJ1xyXG4gICAgICAgICAgICAgIH0gIFxyXG59KSBcclxuLnN0YXRlKCdhcHAuc2VsZWN0ZW52aXJvbm1lbnQnLCB7XHJcbiAgICAgICAgICAgIHVybDonL3NlbGVjdGVudicsXHJcbiAgICAgICAgICAgIHZpZXdzOiB7XHJcbiAgICAgICAgICAgICdoZWFkZXJAJzoge1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMl9hdXRoL2FuZ3VsYXJUZW1wbGF0ZXMvc2ltcGxlaGVhZGVyLmh0bWwnLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAnY29udGVudEAnOiB7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAyX2F1dGgvYW5ndWxhclRlbXBsYXRlcy9zZWxlY3RlbnZpcm9ubWVudC5odG1sJyxcclxuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdzZWxlY3RlbnZpcm9ubWVudEN0cmwnIFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAnZm9vdGVyQCc6IHtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9mb290ZXIuaHRtbCcsIFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgcmVxdWlyZUxvZ2luOiB0cnVlIC8vIGNoYW5nZSBkZWZhdWx0IHZhbHVlIGZyb20gJ2FwcCcgIFxyXG4gICAgICAgIH0gIFxyXG59KSBcclxuLnN0YXRlKCdhcHAubG9nb3V0Jywge1xyXG4gICAgdXJsOiAnL2xvZ291dCcsXHJcblxyXG4gICAgICB2aWV3czoge1xyXG4gICAgICAgICAgICAgICAgJ2hlYWRlckAnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMl9hdXRoL2FuZ3VsYXJUZW1wbGF0ZXMvc2ltcGxlaGVhZGVyLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgLy8gY29udHJvbGxlcjogJ3NpbXBsZWhlYWRlckNvbnRyb2xsZXInXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgJ2NvbnRlbnRAJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDJfYXV0aC9hbmd1bGFyVGVtcGxhdGVzL2xvZ2dlZF9vdXQuaHRtbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcjogJ2xvZ291dEN0cmwnXHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgXHJcbiAgICBkYXRhOiB7XHJcbiAgICAgIHJlcXVpcmVMb2dpbjogZmFsc2VcclxuICAgIH1cclxufSlcclxuLnN0YXRlKCdhcHAuc3NvJywge1xyXG4gICAgICAgICAgICB1cmw6Jy9zc28nLFxyXG5cclxuICAgICAgICAgICAgdmlld3M6IHtcclxuICAgICAgICAgICAgJ2hlYWRlckAnOiB7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAyX2F1dGgvYW5ndWxhclRlbXBsYXRlcy9zaW1wbGVoZWFkZXIuaHRtbCcsXHJcbiAgICAgICAgICAgICAgIC8vIGNvbnRyb2xsZXI6ICdzaW1wbGVoZWFkZXJDb250cm9sbGVyJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAnY29udGVudEAnOiB7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZVVybDogJy8wMDAyX2F1dGgvYW5ndWxhclRlbXBsYXRlcy9zc28uaHRtbCcsXHJcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnc3NvQ3RybCcgXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICdmb290ZXJAJzoge1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL2Zvb3Rlci5odG1sJyxcclxuICAgICAgICAgICAgICAgLy8gY29udHJvbGxlcjogJ2xvZ2luQ3RybCcgXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgICAgIGlzX2xkYXA6IHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgfSxcclxuICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgICByZXF1aXJlTG9naW46IGZhbHNlIC8vIGNoYW5nZSBkZWZhdWx0IHZhbHVlIGZyb20gJ2FwcCdcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfSAgXHJcbn0pIFxyXG4uc3RhdGUoXCJhcHAub3RoZXJ3aXNlXCIsIHtcclxuICAgIHVybDogXCIqcGF0aFwiLFxyXG4gICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICAgICdoZWFkZXJAJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDJfYXV0aC9hbmd1bGFyVGVtcGxhdGVzL3NpbXBsZWhlYWRlci5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAnY29udGVudEAnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL2Vycm9yX25vdF9mb3VuZC5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnZXJyb3JOb3RGb3VuZEN0cmwnXHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICBcclxuICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgcmVxdWlyZUxvZ2luOiBmYWxzZSAgIFxyXG4gICAgICAgICAgICB9XHJcbn0pLnN0YXRlKFwiYXBwLmVycm9yXCIsIHtcclxuICAgIHVybDogXCIqcGF0aFwiLFxyXG4gICAgdmlld3M6IHtcclxuICAgICAgICAgICAgICAgICdoZWFkZXJAJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVXJsOiAnLzAwMDJfYXV0aC9hbmd1bGFyVGVtcGxhdGVzL3NpbXBsZWhlYWRlci5odG1sJyxcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAnY29udGVudEAnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVVcmw6ICcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL2Vycm9yLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdlcnJvckN0cmwnXHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgfSxcclxuXHQgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgICBtc2c6IHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgXHJcbiAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIHJlcXVpcmVMb2dpbjogZmFsc2UgICBcclxuICAgICAgICAgICAgfVxyXG59KSAgXHJcblxyXG59XSk7XHJcblxyXG5hcHAucnVuKFsnJHJvb3RTY29wZScsJyRzdGF0ZScsICckY29va2llcycsJyRsb2NhdGlvbicsJyR0aW1lb3V0JywnUmVzdEFwaVNlcnZpY2UnLCdBdXRoZW50aWNhdGlvblNlcnZpY2UnLCdNZW51U2VydmljZScsJ01lc3NhZ2luZ1NlcnZpY2UnLFxyXG4gICAgZnVuY3Rpb24gKCRyb290U2NvcGUsJHN0YXRlLCRjb29raWVzLCAkbG9jYXRpb24sJHRpbWVvdXQsUmVzdEFwaVNlcnZpY2UsQXV0aGVudGljYXRpb25TZXJ2aWNlLE1lbnVTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UpIFxyXG4gICAgeyAgXHJcbiAgICAgICAgaWYgKCRyb290U2NvcGUuZ2xvYmFscz09PXVuZGVmaW5lZCkgJHJvb3RTY29wZS5nbG9iYWxzPXt9XHJcbiAgICAgICAgdmFyIGxhc3RGcm9tU3RhdGUsIGxhc3RUb1N0YXRlLCByZXF1aXJlTG9naW4sIGVudiwgZGVmYXVsdGVudiAsIGFwcF9yZWZcclxuICAgICAgICBcclxuICAgICAgICBsZXQgdXNlcmlkID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgndXNlcicpXHJcbiAgICAgICAgbGV0IGNVc2VyID0gJGNvb2tpZXMuZ2V0T2JqZWN0KCdjdXJyZW50VXNlcicpIHx8IG51bGw7IFxyXG4gICAgICAgIGlmIChjVXNlcikgJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyID0gY1VzZXJcclxuICAgICAgICBlbHNlIGlmICh1c2VyaWQpICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlciA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odXNlcmlkKSlcclxuXHQgICAgICBcclxuXHRcdFxyXG4gICAgICAgIGlmICgkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIpIHtcclxuICAgICAgICAgICAgICBpZiAoJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmF1dGhkYXRhLnN1YnN0cmluZygwLDUpPT09J1Rva2VuJykge1xyXG4gICAgICAgICAgICAgICAgUmVzdEFwaVNlcnZpY2UuYWRkX2FwaV9jbGFzc2VzKCd0b2tlbicsJGNvb2tpZXMuZ2V0KCdjc3JmdG9rZW4nKSwkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIuYXV0aGRhdGEpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBcclxuICAgICAgICAgICAgICAgICAgUmVzdEFwaVNlcnZpY2UuYWRkX2FwaV9jbGFzc2VzKCdzc28nLCRjb29raWVzLmdldCgnY3NyZnRva2VuJykpOyAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgJHJvb3RTY29wZS5nbG9iYWxzID0ge2N1cnJlbnRVc2VyOntsYW5nOidlbi1HQid9fTtcclxuICAgICAgICAgICAgICBSZXN0QXBpU2VydmljZS5hZGRfYXBpX2NsYXNzZXMoJ3NzbycsJGNvb2tpZXMuZ2V0KCdjc3JmdG9rZW4nKSk7XHJcbiAgICAgICAgfVxyXG4gICAgIFxyXG5cdCBcclxuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0IFxyXG4gICAgICAgICRyb290U2NvcGUuJG9uKCckc3RhdGVDaGFuZ2VTdGFydCcsIGZ1bmN0aW9uIChldix0b1N0YXRlLHRvUGFyYW1zLGZyb21TdGF0ZSxmcm9tUGFyYW1zKSAvLyB3aGVuIHN0YXRlIHRyYW5zaXRpb24gc3RhcnRzIVxyXG5cdFx0eyBcclxuICAgICAgaWYgKCEkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIpXHJcbiAgICAgIHtcclxuICAgICAgICBsZXQgdXNlcmlkID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgndXNlcicpXHJcbiAgICAgICAgbGV0IGNVc2VyID0gJGNvb2tpZXMuZ2V0T2JqZWN0KCdjdXJyZW50VXNlcicpIHx8IG51bGw7IFxyXG4gICAgICAgIGlmIChjVXNlcikgJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyID0gY1VzZXJcclxuICAgICAgICBlbHNlIGlmICh1c2VyaWQpICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlciA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odXNlcmlkKSlcclxuICAgICAgfVxyXG5cdFx0XHQkcm9vdFNjb3BlLmdsb2JhbHMudG9TdGF0ZSA9IHRvU3RhdGVcclxuXHRcdFx0cmVxdWlyZUxvZ2luID0gdG9TdGF0ZS5kYXRhPy5yZXF1aXJlTG9naW4gPz8gdHJ1ZTsgIFxyXG5cdFx0XHQvL2RlYnVnZ2VyXHJcblx0XHRcclxuXHRcdFx0Ly8gU1lOQ0hST05JWkUgRU5WIGJldHdlZW4gZ2xvYmFscyBhbmQgcGFyYW1zXHJcblx0XHRcdGlmICgkbG9jYXRpb24uc2VhcmNoKCkuZW52ICkgXHRcclxuXHRcdFx0XHQkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudEVudiA9ICRsb2NhdGlvbi5zZWFyY2goKS5lbnZcdC8vb3ZlcnJpZGUgY3VyZW50RU5WIHdpdGggVVJMIGVudlx0XHJcblx0XHRcdGlmICh0b1BhcmFtc1snZW52J10gKSAvL3NldCBjdXJyZW50RU5WIGlmIHdlIGhhdmUgdG9QYXJhbXNbJ2VudiddXHJcblx0XHRcdFx0JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRFbnYgPSB0b1BhcmFtc1snZW52J10gXHJcblx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdHRvUGFyYW1zWydlbnYnXSA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50RW52IFxyXG5cdFx0XHR9XHJcblx0XHRcdFxyXG5cdFx0XHRpZiAoJHJvb3RTY29wZS5nbG9iYWxzPy5jdXJyZW50RW52ICYmICRyb290U2NvcGUuZ2xvYmFscz8uY3VycmVudFVzZXI/LnVlcD8uZGVmYXVsdGVudiAmJiAkcm9vdFNjb3BlLmdsb2JhbHM/LmVudmlyb25tZW50cykge1xyXG5cdFx0XHRcdC8vY2hlY2sgIGlmIHVzZXIgZG9lcyBub3QgYmVsb25nIHRvIGN1cnJlbnQgZW52IVxyXG5cdFx0XHRcdC8vZGVidWdnZXJcclxuXHRcdFx0XHRpZiAoJHJvb3RTY29wZS5nbG9iYWxzPy5lbnZpcm9ubWVudHM/Llskcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudEVudl0gPT0gdW5kZWZpbmVkICkgeyAvL3Jlc2V0IGVudiB0byBkZWZhdWx0XHJcblx0XHRcdFx0XHR0b1BhcmFtc1snZW52J10gPSAkcm9vdFNjb3BlLmdsb2JhbHM/LmN1cnJlbnRVc2VyPy51ZXA/LmRlZmF1bHRlbnYgXHJcblx0XHRcdFx0XHQkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudEVudiA9ICRyb290U2NvcGUuZ2xvYmFscz8uY3VycmVudFVzZXI/LnVlcD8uZGVmYXVsdGVudiBcclxuXHRcdFx0XHRcdCRsb2NhdGlvbi5zZWFyY2goeydlbnYnOiAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIudWVwLmRlZmF1bHRlbnYgfSlcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0XHJcblx0XHRcdC8vZXhpdCB3aGVuIGluIGV4Y2x1ZGVkIHN0YXRlIFxyXG5cdFx0XHRjb25zdCBleGNsdWRlZFN0YXRlcyA9IFtcImFwcC5ub21lbnUub25ib2FyZGluZ1wiLCBcImFwcC5lcnJvclwiLCBcImFwcC5zaWdudXBcIiwgXCJhcHAucmVnaXN0ZXJcIiwgXCJhcHAuaW5kZXhcIiwgXCJhcHAubG9naW5cIiwgXCJhcHAuc3NvXCIsIFwiYXBwLmxvZ291dFwiLCBcImFwcC5vdGhlcndpc2VcIiwgXCJhcHAubm9tZW51LnB1YmxpY3Rhc2tzXCIsIFwiYXBwLmNoYW5nZXBhc3NcIiwgXCJhcHAuY2hhbmdlcGFzc3JlcXVlc3RcIl1cclxuXHRcdFx0aWYgKGV4Y2x1ZGVkU3RhdGVzLmluY2x1ZGVzKHRvU3RhdGUubmFtZSkpIFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGFwcF9yZWYgPSBudWxsXHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcblxyXG4gICAgICBpZiAodG9TdGF0ZS5uYW1lPT0nYXBwLmxvZ2luJyB8fCB0b1N0YXRlLm5hbWU9PSdhcHAubG9nb3V0JykgYXBwX3JlZj1udWxsXHJcblxyXG5cdFx0XHRjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcblx0XHRcdGNvbnN0IGV4cGlyZXNWYWx1ZSA9IG5ldyBEYXRlKHRvZGF5KTtcclxuXHRcdFx0ZXhwaXJlc1ZhbHVlLnNldE1pbnV0ZXModG9kYXkuZ2V0TWludXRlcygpICsgMTApO1xyXG5cclxuXHRcdFx0JGNvb2tpZXMucHV0T2JqZWN0KCdsYXN0VG9TdGF0ZScsIHRvU3RhdGUsIHsnZXhwaXJlcyc6IGV4cGlyZXNWYWx1ZX0pO1xyXG5cdFx0XHQkY29va2llcy5wdXRPYmplY3QoJ2xhc3RUb1BhcmFtcycsIHRvUGFyYW1zLCB7J2V4cGlyZXMnOiBleHBpcmVzVmFsdWV9KTtcclxuICAgICAgXHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2xhc3RUb1N0YXRlJyxKU09OLnN0cmluZ2lmeSh0b1N0YXRlKSlcclxuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnbGFzdFRvUGFyYW1zJyxKU09OLnN0cmluZ2lmeSh0b1BhcmFtcykpXHJcblx0XHRcdFxyXG4gICAgICBpZiAoJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyPy51c2VybmFtZSkgeyAvL2lmIHVzZXIgaXMgbG9nZ2VkXHJcblx0XHRcdFx0bGFzdEZyb21TdGF0ZSA9IGZyb21TdGF0ZTtcclxuXHRcdFx0XHRsYXN0VG9TdGF0ZSA9IHRvU3RhdGU7XHJcblx0XHRcdFx0Ly9kZWJ1Z2dlclxyXG5cclxuXHRcdFx0XHRpZiAoJGxvY2F0aW9uLnNlYXJjaCgpLmFwcF9yZWYgKSBcclxuXHRcdFx0XHRcdFx0YXBwX3JlZiA9ICRsb2NhdGlvbi5zZWFyY2goKS5hcHBfcmVmIFxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdCAgICBpZiAoIE1lbnVTZXJ2aWNlLm5hdmJhckl0ZW1zLmxlbmd0aD09MCApXHQgTWVudVNlcnZpY2UubG9hZERlZmF1bHRNZW51KCAhIWFwcF9yZWYgKVxyXG5cclxuXHRcdFx0XHQkcm9vdFNjb3BlLmdsb2JhbHMuSW50ZXJjZXB0b3JJc0FjdGl2ZSA9IHRydWU7XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0IGlmICggJHJvb3RTY29wZS5nbG9iYWxzPy5jdXJyZW50VXNlcj8udWVwPy5pZCA9PSB1bmRlZmluZWQpIHsgLy8gaWYgd2UgaGF2ZSB1c2VyIElEIGJ1dCBubyBleHRlbmRlZFxyXG5cdFx0XHRcdFx0XHRldi5wcmV2ZW50RGVmYXVsdCgpOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgQXV0aGVudGljYXRpb25TZXJ2aWNlLmdldFVzZXJJbmZvKCRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlcj8ub3JnYW5pc2F0aW9uLmlkKVxyXG5cdFx0XHRcdFx0XHQgICAudGhlbiggKHJlc3BvbnNlKSA9PiB7ICBcclxuXHRcdFx0XHRcdFx0XHRcdCAgQXV0aGVudGljYXRpb25TZXJ2aWNlLlNldENyZWRlbnRpYWxzKHJlc3BvbnNlLmRhdGEudXNlcikgXHJcblx0XHRcdFx0XHRcdFx0XHQgIGlmIChyZXNwb25zZS5kYXRhLmVudmlyb25tZW50cykgICBcclxuXHRcdFx0XHRcdFx0XHRcdFx0ICAkcm9vdFNjb3BlLmdsb2JhbHMuZW52aXJvbm1lbnRzID0gcmVzcG9uc2UuZGF0YS5lbnZpcm9ubWVudHMucmVkdWNlKChhY2MsIG9iaikgPT4gIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjW29iai5pZC50b1N0cmluZygpXSA9IG9iajtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwge30pOyAgXHJcblx0XHRcdFx0XHRcdFx0XHQgICRzdGF0ZS5nbyh0b1N0YXRlLm5hbWUsIHRvUGFyYW1zKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT57XHJcblx0XHRcdFx0XHRcdFx0XHQkc3RhdGUuZ28oXCJhcHAuZXJyb3JcIiwge21zZzogJ1NlcnZlciBlcnJvcjogJyArIGVycm9yLm1zZyAgfSlcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdCAgIH0pLmZpbmFsbHkoKCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0IC8vJHN0YXRlLmdvKHRvU3RhdGUubmFtZSwgdG9QYXJhbXMpOy8vIG92ZGplIGplIG1vxb5kYSB2ZcSHIGthc25vXHJcblx0XHRcdFx0XHRcdCAgIH0pO1xyXG5cdFx0XHRcdFx0XHQvLyRzdGF0ZS5nbyh0b1N0YXRlLm5hbWUsIHRvUGFyYW1zKTsgLy9UT0RPIC0gc3Rhdml0aSBvdmRqZSB1bWplc3RvIGdvcmUgPz8/P1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gXHJcblx0XHRcdFx0fSBcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBpZiAoISRyb290U2NvcGUuZ2xvYmFscy5lbnZpbmZvKSB7IC8vIHdoZW4gRU5WIGNoYW5nZWQgZ2V0IGZyb20gZW52aW5mbyBzdGF0aXN0aWNzIGZyb20gc2VydmVyIC0gVE9ETyAgLSBjb3JyZWN0IHRvIGdldCBwcm9wZXIgZW52IGZyb20gc2VydmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHRcdFx0XHRcdEF1dGhlbnRpY2F0aW9uU2VydmljZS5nZXRFbnZJbmZvKCRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlcj8ub3JnYW5pc2F0aW9uLmlkKVxyXG5cdFx0XHRcdFx0XHQgICAudGhlbiggKHJlc3BvbnNlKSA9PiB7IFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQkcm9vdFNjb3BlLmdsb2JhbHMuZW52aW5mbyA9IHJlc3BvbnNlLmRhdGFcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0ICB9KS5jYXRjaChlcnJvciA9PntcclxuXHRcdFx0XHRcdFx0XHRcdGFsZXJ0KGVycm9yLm1lc3NhZ2UpXHQgIFxyXG5cdFx0XHRcdFx0XHQgICB9KS5maW5hbGx5KCgpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdCAkc3RhdGUuZ28odG9TdGF0ZS5uYW1lLCB0b1BhcmFtcyk7XHJcblx0XHRcdFx0XHRcdCAgIH0pO1xyXG5cdFx0XHRcdFx0XHQvLyRzdGF0ZS5nbyh0b1N0YXRlLm5hbWUsIHRvUGFyYW1zKTsgLy9UT0RPIC0gc3Rhdml0aSBvdmRqZSB1bWplc3RvIGdvcmU/Pz8/XHJcblx0XHRcdFx0XHRcdHJldHVybiBcclxuICAgICAgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdCAgXHJcbiAgICAgICAgICAgICAgICAgIGlmICghICRyb290U2NvcGUuZ2xvYmFscz8uZW52aXJvbm1lbnRzKSB7IC8vIHdoZW4gRU5WIGNoYW5nZWQgZ2V0IGZyb20gZW52aW5mbyBzdGF0aXN0aWNzIGZyb20gc2VydmVyIC0gVE9ETyAgbW92ZSB0aGlzIGluIGxvYWRBUFAgPz8gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0XHRcdFx0XHRBdXRoZW50aWNhdGlvblNlcnZpY2UuZ2V0T3JnU2NoZW1hcygkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXI/Lm9yZ2FuaXNhdGlvbi5pZClcclxuXHRcdFx0XHRcdFx0XHQudGhlbigocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEpICAkcm9vdFNjb3BlLmdsb2JhbHMuZW52aXJvbm1lbnRzID0gcmVzcG9uc2UuZGF0YS5yZWR1Y2UoKGFjYywgb2JqKSA9PiAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nbb2JqLmlkLnRvU3RyaW5nKCldID0gb2JqO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7fSk7ICAgIFxyXG5cdFx0XHRcdFx0XHRcdH0pLmNhdGNoKGVycm9yID0+e1xyXG5cdFx0XHRcdFx0XHRcdFx0YWxlcnQoZXJyb3IubWVzc2FnZSlcdCAgXHJcblx0XHRcdFx0XHRcdFx0fSkuZmluYWxseSgoKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHQgJHN0YXRlLmdvKHRvU3RhdGUubmFtZSwgdG9QYXJhbXMpO1xyXG5cdFx0XHRcdFx0XHRcdH0pO1x0XHJcblx0XHRcdFx0XHRcdC8vJHN0YXRlLmdvKHRvU3RhdGUubmFtZSwgdG9QYXJhbXMpOyAvL1RPRE8gLSBzdGF2aXRpIG92ZGplIHVtamVzdG8gZ29yZSA/Pz8/XHJcblx0XHRcdFx0XHRcdHJldHVyblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdC8vICoqKioqKioqKioqKioqKioqKioqKipcclxuXHRcdFx0XHQvLyBUT0RPIC0gbW96ZGEgYmkgdHJlYmFsbyBuYXByYXZpdGkgZGEgb3ZkamUgZG/EkWUgc2FtbyBrYWQgc3UgemF2csWhaWxlIHN2ZSBnb3JuamUgYXNpbmtyb25lIHJhZG5qZSA/PyAgKCRzdGF0ZS5nbyBpeiBmaW5hbGx5IHByZWJhY2l0aSBwcmlqZSAncmV0dXJuJylcclxuXHRcdFx0XHQvLyAqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdGlmIChhcHBfcmVmICYmICFNZW51U2VydmljZS5pc0FwcFNlbGVjdGVkKCkgKSB7IC8vIGlmIGFwcCBpcyBzZWxlY3RlZCwgYnV0IG1lbnUgaXMgbm90ID8/XHJcblx0XHRcdFx0XHR0b1BhcmFtcyA9IHRvUGFyYW1zID8/IHt9O1xyXG5cdFx0XHRcdFx0dG9QYXJhbXNbJ2FwcF9yZWYnXSA9IGFwcF9yZWY7XHJcblxyXG5cdFx0XHRcdFx0QXV0aGVudGljYXRpb25TZXJ2aWNlLmxvYWRBcHAodG9TdGF0ZS5uYW1lLCB0b1BhcmFtcywgYXBwX3JlZilcclxuXHRcdFx0XHRcdFx0LnRoZW4oKGRhdGEpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRsZXQgbGFwcCA9IGRhdGE/LnN1YnNjcmlwdGlvbnNcclxuXHRcdFx0XHRcdFx0XHQvL0F1dGhlbnRpY2F0aW9uU2VydmljZS5TZXRDcmVkZW50aWFscyhkYXRhPy51c2VyKSAvLyBtaWdvciBjb21tZW50ZWRcclxuXHRcdFx0XHRcdFx0XHRBdXRoZW50aWNhdGlvblNlcnZpY2UuU2V0VWVwKGRhdGE/LnVzZXI/LnVlcClcdFxyXG5cdFx0XHRcdFx0XHRcdGlmICghbGFwcCkgXHR0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIGxvYWRpbmcgYXBwbGljYXRpb24gaWQgPScgKyBhcHBfcmVmKTtcclxuXHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuIEF1dGhlbnRpY2F0aW9uU2VydmljZS5TZXRNZW51c0ZvckFwcChsYXBwKVxyXG5cdFx0XHRcdFx0XHRcdFx0LnRoZW4oKG1lbnVMb2FkZWQpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIEF1dGhlbnRpY2F0aW9uU2VydmljZS5sb2FkRmlyc3RQYWdlKHRvU3RhdGUubmFtZSwgdG9QYXJhbXMsIGxhcHAsIG1lbnVMb2FkZWQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHRcdC8qLmNhdGNoKChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2cgfHwgZXJyb3IubWVzc2FnZSwgJ2Vycm9yJyk7XHJcblx0XHRcdFx0XHRcdFx0dG9QYXJhbXNbJ2FwcF9yZWYnXSA9IHVuZGVmaW5lZFxyXG5cdFx0XHRcdFx0XHRcdC8vJHN0YXRlLmdvKHRvU3RhdGUubmFtZSwgdG9QYXJhbXMpO1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly8kc3RhdGUuZ28oXCJhcHAuZXJyb3JcIiwge21zZzogJ1NlcnZlciBlcnJvcjogJyArIGVycm9yLm1zZyAgfSkgLy9tYXliZSB0aGlzIGluc3RlYWQgb2YgdXBwZXIgP1xyXG5cdFx0XHRcdFx0XHR9KTsqL1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRNZW51U2VydmljZS5zZXRTZWxlY3RlZEFwcE1lbnVXaXRoUGFyYW1zKHRvU3RhdGUubmFtZSwgdG9QYXJhbXMpO1xyXG5cdFx0XHRcdFx0Ly8kc3RhdGUuZ28odG9TdGF0ZS5uYW1lLCB0b1BhcmFtcyk7XHJcblx0XHRcdFx0fVx0XHRcclxuXHRcdFx0XHRcclxuXHRcdFx0fSBlbHNlIHsgLy8gVVNFUiBkb2VzIG5vdCBleGlzdCBvciBpcyBlbXB0eSFcclxuXHRcdFx0XHRpZiAoIXJlcXVpcmVMb2dpbikge1xyXG5cdFx0XHRcdFx0Ly8gbG9naW4gbm90IHJlcXVpcmVkIGZvciBQVUJMSUMgcGFnZXNcclxuXHRcdFx0XHRcdGxhc3RGcm9tU3RhdGUgPSBmcm9tU3RhdGU7XHJcblx0XHRcdFx0XHRsYXN0VG9TdGF0ZSA9IHRvU3RhdGU7XHJcblx0XHRcdFx0XHQkcm9vdFNjb3BlLmdsb2JhbHMuSW50ZXJjZXB0b3JJc0FjdGl2ZSA9IHRydWU7XHJcblx0XHRcdFx0XHRNZW51U2VydmljZS5zZXRTZWxlY3RlZEFwcE1lbnVXaXRoUGFyYW1zKHRvU3RhdGUubmFtZSwgdG9QYXJhbXMpO1xyXG5cdFx0XHRcdFx0JHN0YXRlLmdvKHRvU3RhdGUubmFtZSwgdG9QYXJhbXMpOyAvL1RPRE8gLSB2aWRqZXRpIGRhIGxpIG92byB1b3BjZSB0cmViYSBpbGkgY2Ugb3RpY2kgc2FtIHBvIHNlYmkgbmEgdGFqIHN0YXRlXHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdC8vIGxvZ2luIGlzIHJlcXVpcmVkIC0gZ28gdG8gbG9naW4gcGFnZVxyXG5cdFx0XHRcdFx0ZXYucHJldmVudERlZmF1bHQoKTtcclxuXHRcdFx0XHRcdHRvUGFyYW1zID0gdG9QYXJhbXMgPz8ge307XHJcblx0XHRcdFx0XHRsZXQgcGFyYW1zID0gYW5ndWxhci5jb3B5KHRvUGFyYW1zKTtcclxuXHRcdFx0XHRcdHBhcmFtc1sncmV0dXJuX3VybF9uYW1lJ10gPSB0b1N0YXRlLm5hbWU7XHJcblx0XHRcdFx0XHR0b1BhcmFtc1sncmV0dXJuX3VybCddID0gcGFyYW1zO1xyXG5cdFx0XHRcdFx0JHN0YXRlLmdvKCdhcHAubG9naW4nLCB0b1BhcmFtcyk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcbiAgICAgICBcclxuICAgICAgICAgfSk7Ly9vblN0YXRlQ2hhbmdlLy9cclxuICAgICAgICBcclxuICAgIH1dKTtcclxuXHJcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcblxyXG5cclxuaW1wb3J0IGluZGV4SnNvbiBmcm9tICcuL2luZGV4Lmpzb24nLy93aXRoIHt0eXBlOiAnanNvbid9O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXBwQ29udHJvbGxlciAoJHNjb3BlLCRyb290U2NvcGUsJGNvb2tpZXMsICR3aW5kb3csJGxvY2F0aW9uLCRzdGF0ZSxHcmlkc3RlclNlcnZpY2UsTWVudVNlcnZpY2UsUmVzb3VyY2VzRGF0YVNlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxBdXRoZW50aWNhdGlvblNlcnZpY2UsS2F0YWx5b1N0YXRlTWFuYWdlcikgeyAgICAgICBcclxuICAgICAgICAkc2NvcGUuQ1RSTD0nYXBwQ29udHJvbGxlcic7IC8vYWN0aXZlIGR1cmluZyBMT0dJTiBwaGFzZSBhbmQgaW1taWRpYXRlbHkgYWZ0ZXIgYXBwLnJ1biAhXHJcbiAgICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlO1xyXG4gICAgICAgICRzY29wZS5tZW51X3NlcnZpY2UgPSBNZW51U2VydmljZTtcclxuXHRcdCRzY29wZS5rc20gPSBLYXRhbHlvU3RhdGVNYW5hZ2VyOyBcclxuXHRcdGlmICghJHJvb3RTY29wZS5nbG9iYWxzPy5jdXJyZW50VXNlcj8ubmFtZSlcclxuXHRcdFx0XHQkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIgPSAkY29va2llcy5nZXRPYmplY3QoJ2N1cnJlbnRVc2VyJykgfHwgbnVsbDsgXHJcblx0XHRcclxuICAgICAgICAkc2NvcGUuYWN0aXZpdHkgPSB7IGFjdGl2aXR5TWVzc2FnZSA6IFwiXCIgfTsgXHJcbiAgICAgICAgJHNjb3BlLmFjID0geyAgICAgIGFsZXJ0cyA6IFtdICAgICAgIH07IFxyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5jdXJyZW50U3RhdGUgPSAkc3RhdGUuY3VycmVudC5uYW1lO1xyXG5cclxuICAgICAgICAkc2NvcGUuc2hvd05hdmJhciA9IHRydWU7XHJcbiAgICAgICAgJHNjb3BlLnNob3dTaWRlTWVudSA9IGZhbHNlO1xyXG5cdFx0XHJcbiAgICAgICAgbGV0IG1lbnVWaXNpYmlsaXR5PSAkc2NvcGUua3NtLmFkZFN1YmplY3QoIFwibWVudVZpc2liaWxpdHlcIiwgbnVsbCk7XHJcbiAgICAgICAgbGV0IG1lbnVWaXNpYmlsaXR5TmFtZSA9IG1lbnVWaXNpYmlsaXR5LnN1YmplY3QubmFtZTtcclxuXHJcbiAgICAgICAgbGV0IGRlcGVuZGVudF9maWVsZCA9IFwiYXBwQ3RybFwiXHJcbiAgICAgICAgbGV0IG9ic2VydmVyID0gJHNjb3BlLmtzbS5zdWJzY3JpYmUobWVudVZpc2liaWxpdHlOYW1lLGRlcGVuZGVudF9maWVsZCxcIm1lbnVWaXNpYmlsaXR5Q2hhbmdlZFwiLG1lbnVfdmlzaWJpbGl0eV9wcm9jZXNzKTtcclxuICAgICAgICBsZXQgc3RhdGUgPSAkc2NvcGUua3NtLmdldFN0YXRlKG1lbnVWaXNpYmlsaXR5TmFtZSk7XHJcbiAgICAgICAgaWYgKHN0YXRlLnN0YXR1cz09XCJva1wiICYmIHN0YXRlLnN0YXRlIT09bnVsbCkgbWVudV92aXNpYmlsaXR5X3Byb2Nlc3Moc3RhdGUuc3RhdGUpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0bGV0IGxhbmdDb2RlID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyPy5sYW5nT2JqPy5Db2RlID8/ICdlbi1HQidcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdCRzY29wZS5wYWdlTGFiZWxzID0gaW5kZXhKc29uW2xhbmdDb2RlXVxyXG5cdFx0JHNjb3BlLmNvbmZpZyA9IGluZGV4SnNvblsnY29uZmlnJ11cclxuXHRcdFxyXG5cdFx0XHJcblx0XHQkc2NvcGUubWVyZ2VPYmplY3RzID0gKC4uLm9iamVjdHMpID0+XHJcblx0XHRcdG9iamVjdHMucmVkdWNlKChhY2MsIGN1cikgPT4gKHsgLi4uYWNjLCAuLi5jdXIgfSkpO1xyXG5cdFx0XHRcclxuICAgICAgICAkc2NvcGUuc2hvd0FjdGl2aXR5ID0gZnVuY3Rpb24gKG1zZykge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgIFxyXG4gICAgICAgICAgICAgICRzY29wZS5hY3Rpdml0eS5hY3Rpdml0eU1lc3NhZ2UgPSBtc2c7ICAgXHJcbiAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG5cdFx0XHJcblx0XHJcbiAgICAgICAgZnVuY3Rpb24gbWVudV92aXNpYmlsaXR5X3Byb2Nlc3MgKGRhdGEpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnNob3dOYXZiYXIgPSBkYXRhPy5zdGF0ZT8ubmF2YmFyID8/ICRzY29wZS5zaG93TmF2YmFyXHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YT8uc3RhdGU/LnNpZGVNZW51IT09dW5kZWZpbmVkKSAgJHNjb3BlLnNob3dTaWRlTWVudSA9IGRhdGEuc3RhdGUuc2lkZU1lbnVcclxuICAgICAgICAgICAgICAgIGVsc2UgJHNjb3BlLnNob3dTaWRlTWVudSA9IGZhbHNlXHJcbiAgICAgICAgfVxyXG5cdFx0XHJcblx0XHRcclxuICAgICAgICAkc2NvcGUuY2hlY2tJZkFjdGl2ZSA9IGZ1bmN0aW9uKG5pKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICByZXR1cm4gIG5pLnNfbWVudXNfUGFyYW1zLnBhZ2VzdGF0ZT09JHNjb3BlLm1lbnVfc2VydmljZS5jdXJyZW50VGFyZ2V0ICYmIChuaS5zX21lbnVzX1RhcmdldD09JHNjb3BlLm1lbnVfc2VydmljZS5jdXJyZW50UGFnZUlkIHx8IG5pLnNfbWVudXNfUGFyYW1zLnBhZ2VzdGF0ZSE9J2FwcC5uYXZiYXIudnBhZ2UnKVxyXG4gICAgICAgIH1cclxuXHRcdFx0XHJcblx0XHRcdFxyXG4gICAgICAgICRzY29wZS5tdWx0aVNlbGVjdEtleVVwRG93biA9IGZ1bmN0aW9uIChldixpZCkgXHJcblx0XHR7XHJcbiAgICAgICAgICB2YXIgY29kZSA9IGV2LmtleUNvZGUgfHwgZXYud2hpY2g7XHJcbiAgICAgICAgICB2YXIga2V5ID0gZXYua2V5O1xyXG4gICAgICAgICAgdmFyIGVsZW09JHdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XHJcbiAgICAgICAgICBpZiAoKGtleT09PSdwJyB8fCBrZXk9PT0nUCcgfHwga2V5PT09J2InIHx8IGtleT09PSdCJykgJiYgZXYuY3RybEtleSkge1xyXG4gICAgICAgICAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICRzY29wZS4kYnJvYWRjYXN0KFwiQ3RybFBCUHJlc3NlZFwiLGtleSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAvKiBpZiAoY29kZT09MTMpe1xyXG4gICAgICAgICAgICAgICAgLy9zZWxlY3QgZWxlbWVudCBpbiBmb2N1cyAgICBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy9rZXl1cFxyXG4gICAgICAgICAgICAgIGlmIChjb2RlPT0zOCl7ICAvL21vdmUgZm9jdXMgdG8gbmV4dCBlbGVtZW50XHJcbiAgICAgICAgICAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICBlbGVtLm5leHQoKS5mb2N1cygpOyBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy9rZXlkb3duXHJcbiAgICAgICAgICAgICAgaWYgKGNvZGU9PTQwKXsvL21vdmUgZm9jdXMgdG8gcHJldmlvdXMgZWxlbWVudCAgIFxyXG4gICAgICAgICAgICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICAgZWxlbS5wcmV2aW91cygpLmZvY3VzKCk7IFxyXG4gICAgICAgICAgICAgIH0gICovXHJcbiAgICAgICAgfVxyXG4gICAgICAgXHJcbn07XHJcblxyXG5cclxuYXBwQ29udHJvbGxlci4kaW5qZWN0ID0gWyckc2NvcGUnLCckcm9vdFNjb3BlJywnJGNvb2tpZXMnLCAnJHdpbmRvdycsJyRsb2NhdGlvbicsJyRzdGF0ZScsJ0dyaWRzdGVyU2VydmljZScsJ01lbnVTZXJ2aWNlJywnUmVzb3VyY2VzRGF0YVNlcnZpY2UnLCdNZXNzYWdpbmdTZXJ2aWNlJywnQXV0aGVudGljYXRpb25TZXJ2aWNlJywnS2F0YWx5b1N0YXRlTWFuYWdlciddO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGhvbWVOYXZiYXJDdHJsKCRzY29wZSwkcm9vdFNjb3BlLCRzdGF0ZSkge1xyXG4gICAgICAgIC8vJHNjb3BlLm5hdmJhciA9IFwiL3N0YXRpYy9tb2R1bGVzLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9uYXZiYXIuaHRtbFwiO1xyXG4gICAgICAgJHNjb3BlLkNUUkw9J2hvbWVOYXZiYXJDdHJsJztcclxuICAgIH07XHJcblxyXG5ob21lTmF2YmFyQ3RybC4kaW5qZWN0ID0gWyckc2NvcGUnLCckcm9vdFNjb3BlJywnJHN0YXRlJ107XHJcbiAgICBcclxuZXhwb3J0IGZ1bmN0aW9uIGVycm9yTm90Rm91bmRDdHJsICgkc2NvcGUsJHJvb3RTY29wZSwkc3RhdGUsJHN0YXRlUGFyYW1zKSB7XHJcbiAgICAgICAgLy8kc2NvcGUubmF2YmFyID0gXCIvc3RhdGljL21vZHVsZXMvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL25hdmJhci5odG1sXCI7XHJcbiAgICAgICAgLy8kc2NvcGUucHJldmlvdXNQYWdlPSRzdGF0ZVBhcmFtcy5mcm9tU3RhdGU7XHJcbiAgICAgICAgJHNjb3BlLnBhcmFtcyA9ICRzdGF0ZS5wYXJhbXM7XHJcbiAgICAgICAgJHNjb3BlLkNUUkw9J2Vycm9yTm90Rm91bmRDdHJsJztcclxufTtcclxuXHJcbmVycm9yTm90Rm91bmRDdHJsLiRpbmplY3QgPSBbJyRzY29wZScsJyRyb290U2NvcGUnLCckc3RhdGUnLCckc3RhdGVQYXJhbXMnXTtcclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZXJyb3JDdHJsICgkc2NvcGUsJHJvb3RTY29wZSwkc3RhdGUsJHN0YXRlUGFyYW1zKSB7XHJcbiAgICAgXHJcbiAgICAgICAgJHNjb3BlLnBhcmFtcyA9ICRzdGF0ZS5wYXJhbXM7XHJcblx0XHQvL2RlYnVnZ2VyXHJcblx0XHRpZiAoJHNjb3BlLnBhcmFtcz8ubXNnKSB7ICAgXHJcblx0XHRcdGlmICh0eXBlb2YgJHNjb3BlLnBhcmFtcy5tc2cgPT09ICdzdHJpbmcnKVxyXG5cdFx0XHRcdFx0JHNjb3BlLm1zZyA9ICRzY29wZS5wYXJhbXMubXNnXHJcblx0XHRcdGlmICh0eXBlb2YgJHNjb3BlLnBhcmFtcy5tc2cgPT09ICdvYmplY3QnKVxyXG5cdFx0XHRcdFx0JHNjb3BlLm1zZyA9IEpTT04uc3RyaW5naWZ5KCRzY29wZS5wYXJhbXMubXNnKVxyXG5cdFx0fVxyXG4gICAgICAgICRzY29wZS5DVFJMPSdlcnJvckN0cmwnO1xyXG59O1xyXG5cclxuZXJyb3JDdHJsLiRpbmplY3QgPSBbJyRzY29wZScsJyRyb290U2NvcGUnLCckc3RhdGUnLCckc3RhdGVQYXJhbXMnXTtcclxuXHJcblxyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBob21lQ3RybCgkc2NvcGUsICRyb290U2NvcGUsJHN0YXRlLCRjb29raWVzLCRsb2NhdGlvbixLYXRhbHlvU3RhdGVNYW5hZ2VyLFByb2Nlc3NpbmdTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsQ29kZXNTZXJ2aWNlLEF1dGhlbnRpY2F0aW9uU2VydmljZSxNZW51U2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSxUYXNrRGF0YVNlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlLFNldHRpbmdzU2VydmljZSwkdGltZW91dCwkc3RhdGVQYXJhbXMpe1xyXG4gICAgICAgIFxyXG4gICAgIFxyXG4gICAgICAgICRzY29wZS5DVFJMPSdob21lQ3RybCc7XHJcbiAgICAgICAgJHJvb3RTY29wZS5oZWFkVGl0bGUgPVwiS2F0YWx5byB8IEhvbWVcIjtcclxuICAgICAgICAkc2NvcGUuY3VycmVudFN0YXRlPSRzdGF0ZS5jdXJyZW50Lm5hbWU7XHJcbiAgICAgICAgJHNjb3BlLnNlbGVjdGVkQXBwID0geyduYW1lJzonJ31cclxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzID0ge307XHJcbiAgICAgICAgJHNjb3BlLmZkPXt9O1xyXG4gICAgICAgICRzY29wZS50YXNrRGVmaW5pdGlvbj17fTtcclxuICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICRzY29wZS5jdXJyZW50VXNlckZpcnN0TmFtZT0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXI/LmZpcnN0X25hbWU7XHJcbiAgICAgICAgJHNjb3BlLmV4dGVuZGVkVXNlciA9IGFuZ3VsYXIuY29weSgkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIudWVwKTtcclxuICAgICAgICAkc2NvcGUucmVzb3VyY2U9e307XHJcbiAgICAgICAgJHNjb3BlLnJlc291cmNlX3BhZ2Vfc2l6ZT0xMjtcclxuICAgICAgICAkc2NvcGUuaXNfc3VwZXJ1c2VyID0gICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5pc19zdXBlcnVzZXI7XHJcbiAgICAgICAgJHNjb3BlLmFwcExpc3RQYXJhbWV0ZXJzPXtpTnVtYmVyOjh9XHJcbiAgICAgICAgaWYgKCRzY29wZS5leHRlbmRlZFVzZXI9PXVuZGVmaW5lZCkgJHNjb3BlLmV4dGVuZGVkVXNlciA9IHt9O1xyXG5cclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUubWVudV9zZXJ2aWNlID0gTWVudVNlcnZpY2U7XHJcblx0JHNjb3BlLm1lbnVfc2VydmljZS5jbGVhclNpZGVNZW51KClcclxuICAgICAgICBsZXQgYXBwX3JlZiA9ICRsb2NhdGlvbi5zZWFyY2goKS5hcHBfcmVmIFxyXG4gICAgXHJcblx0XHRcdFxyXG4gICAgICAgIC8vJHNjb3BlLm1lbnVfc2VydmljZS5sb2FkRGVmYXVsdE1lbnUoICEhYXBwX3JlZiApXHJcblx0XHJcblx0XHQkc2NvcGUuZ2V0Q3VycmVudEVudkRhdGEgPSBmdW5jdGlvbigpe1xyXG5cdFx0XHRyZXR1cm4gJHJvb3RTY29wZT8uZ2xvYmFscz8uZW52aXJvbm1lbnRzWyRyb290U2NvcGU/Lmdsb2JhbHM/LmN1cnJlbnRFbnZdXHJcblx0XHR9XHJcblx0XHRcclxuXHJcblx0XHRpZiAoJHN0YXRlUGFyYW1zLmVudikge1xyXG5cdFx0XHQvL2RlYnVnZ2VyXHJcblx0XHRcdHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oXCJlbnZpcm9ubWVudFwiLCAkc3RhdGVQYXJhbXMuZW52ICApXHJcblx0XHRcdCRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50RW52ID0gICRzdGF0ZVBhcmFtcy5lbnYgXHJcblx0XHR9XHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmdzcnZjPUdyaWRzdGVyU2VydmljZTtcclxuICAgICAgICAkc2NvcGUuZ3NydmMucmVzZXRCb2R5QmdDb2xvcigpIFxyXG4gICAgICAgICRzY29wZS5wYXJhbXM9e3Nob3dBcHBMaXN0OjEsc3Vic2NyaWJpbmc6ZmFsc2V9O1xyXG4gICAgICAgIGxldCB0YWI9ICRsb2NhdGlvbi5zZWFyY2goKS50YWJcclxuICAgICAgICBpZiAodGFiIT11bmRlZmluZWQpICAkc2NvcGUucGFyYW1zLnNob3dBcHBMaXN0ID0gdGFiXHJcbiAgICAgICAgLy9jb25uZWN0IHRvIG1ldGFtYXNrXHJcbiAgICAgICBcclxuICAgICAgICAkc2NvcGUubGlua1dlYjNXYWxsZXQgPSBmdW5jdGlvbigpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmJhbGFuY2U9XCJcIjtcclxuICAgICAgICAgICAgICAgICRzY29wZS5iYWxhbmNlX2t0bHlvPVwiXCI7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUua3RseW9fYmFsYW5jZV9vayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmt0bHlvX2JhbGFuY2VfbXNnID0gXCJcIjtcclxuICAgICAgICAgICAgICAgICRzY29wZS5ldGhfYWRkcmVzcz1udWxsO1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5mZC5ldGhfYWRkcmVzcyE9bnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5rdGx5b0FkZHJlc3NDb25uZWN0ZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgd2VpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYjMuZXRoLmdldEJhbGFuY2UoJHNjb3BlLmZkLmV0aF9hZGRyZXNzLCBmdW5jdGlvbiAoZXJyb3IsIHdlaSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJhbGFuY2UgPSB3ZWIzLnV0aWxzLmZyb21XZWkod2VpLCAnZXRoZXInKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5iYWxhbmNlID0gYmFsYW5jZSArIFwiIEVUSFwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0b2tlbkFkZHJlc3MgPSBcIjB4MjRFMzc5NDYwNUM4NEU1ODBFRUE0OTcyNzM4RDYzM0U4YTcxMjdjOFwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0b2tlbkFCSSA9IFt7XCJpbnB1dHNcIjpbXSxcInN0YXRlTXV0YWJpbGl0eVwiOlwibm9ucGF5YWJsZVwiLFwidHlwZVwiOlwiY29uc3RydWN0b3JcIn0se1wiYW5vbnltb3VzXCI6ZmFsc2UsXCJpbnB1dHNcIjpbe1wiaW5kZXhlZFwiOnRydWUsXCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcIm93bmVyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImluZGV4ZWRcIjp0cnVlLFwiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJzcGVuZGVyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwidmFsdWVcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwiQXBwcm92YWxcIixcInR5cGVcIjpcImV2ZW50XCJ9LHtcImFub255bW91c1wiOmZhbHNlLFwiaW5wdXRzXCI6W3tcImluZGV4ZWRcIjp0cnVlLFwiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJwcmV2aW91c093bmVyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImluZGV4ZWRcIjp0cnVlLFwiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJuZXdPd25lclwiLFwidHlwZVwiOlwiYWRkcmVzc1wifV0sXCJuYW1lXCI6XCJPd25lcnNoaXBUcmFuc2ZlcnJlZFwiLFwidHlwZVwiOlwiZXZlbnRcIn0se1wiYW5vbnltb3VzXCI6ZmFsc2UsXCJpbnB1dHNcIjpbe1wiaW5kZXhlZFwiOnRydWUsXCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcImZyb21cIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW5kZXhlZFwiOnRydWUsXCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInRvXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImluZGV4ZWRcIjpmYWxzZSxcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwidmFsdWVcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwiVHJhbnNmZXJcIixcInR5cGVcIjpcImV2ZW50XCJ9LHtcImlucHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcIm93bmVyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwic3BlbmRlclwiLFwidHlwZVwiOlwiYWRkcmVzc1wifV0sXCJuYW1lXCI6XCJhbGxvd2FuY2VcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJ2aWV3XCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJzcGVuZGVyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiYW1vdW50XCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcImFwcHJvdmVcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJib29sXCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcImJvb2xcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJub25wYXlhYmxlXCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJhY2NvdW50XCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9XSxcIm5hbWVcIjpcImJhbGFuY2VPZlwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcInVpbnQyNTZcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwiZGVjaW1hbHNcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50OFwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50OFwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcInZpZXdcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcInNwZW5kZXJcIixcInR5cGVcIjpcImFkZHJlc3NcIn0se1wiaW50ZXJuYWxUeXBlXCI6XCJ1aW50MjU2XCIsXCJuYW1lXCI6XCJzdWJ0cmFjdGVkVmFsdWVcIixcInR5cGVcIjpcInVpbnQyNTZcIn1dLFwibmFtZVwiOlwiZGVjcmVhc2VBbGxvd2FuY2VcIixcIm91dHB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJib29sXCIsXCJuYW1lXCI6XCJcIixcInR5cGVcIjpcImJvb2xcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJub25wYXlhYmxlXCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbe1wiaW50ZXJuYWxUeXBlXCI6XCJhZGRyZXNzXCIsXCJuYW1lXCI6XCJzcGVuZGVyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiYWRkZWRWYWx1ZVwiLFwidHlwZVwiOlwidWludDI1NlwifV0sXCJuYW1lXCI6XCJpbmNyZWFzZUFsbG93YW5jZVwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImJvb2xcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwiYm9vbFwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcIm5vbnBheWFibGVcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOltdLFwibmFtZVwiOlwibmFtZVwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcInN0cmluZ1wiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJzdHJpbmdcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJ2aWV3XCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbXSxcIm5hbWVcIjpcIm93bmVyXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W10sXCJuYW1lXCI6XCJyZW5vdW5jZU93bmVyc2hpcFwiLFwib3V0cHV0c1wiOltdLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJub25wYXlhYmxlXCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbXSxcIm5hbWVcIjpcInN5bWJvbFwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcInN0cmluZ1wiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJzdHJpbmdcIn1dLFwic3RhdGVNdXRhYmlsaXR5XCI6XCJ2aWV3XCIsXCJ0eXBlXCI6XCJmdW5jdGlvblwifSx7XCJpbnB1dHNcIjpbXSxcIm5hbWVcIjpcInRvdGFsU3VwcGx5XCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwidmlld1wiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwicmVjaXBpZW50XCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiYW1vdW50XCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcInRyYW5zZmVyXCIsXCJvdXRwdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYm9vbFwiLFwibmFtZVwiOlwiXCIsXCJ0eXBlXCI6XCJib29sXCJ9XSxcInN0YXRlTXV0YWJpbGl0eVwiOlwibm9ucGF5YWJsZVwiLFwidHlwZVwiOlwiZnVuY3Rpb25cIn0se1wiaW5wdXRzXCI6W3tcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwic2VuZGVyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImludGVybmFsVHlwZVwiOlwiYWRkcmVzc1wiLFwibmFtZVwiOlwicmVjaXBpZW50XCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9LHtcImludGVybmFsVHlwZVwiOlwidWludDI1NlwiLFwibmFtZVwiOlwiYW1vdW50XCIsXCJ0eXBlXCI6XCJ1aW50MjU2XCJ9XSxcIm5hbWVcIjpcInRyYW5zZmVyRnJvbVwiLFwib3V0cHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImJvb2xcIixcIm5hbWVcIjpcIlwiLFwidHlwZVwiOlwiYm9vbFwifV0sXCJzdGF0ZU11dGFiaWxpdHlcIjpcIm5vbnBheWFibGVcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9LHtcImlucHV0c1wiOlt7XCJpbnRlcm5hbFR5cGVcIjpcImFkZHJlc3NcIixcIm5hbWVcIjpcIm5ld093bmVyXCIsXCJ0eXBlXCI6XCJhZGRyZXNzXCJ9XSxcIm5hbWVcIjpcInRyYW5zZmVyT3duZXJzaGlwXCIsXCJvdXRwdXRzXCI6W10sXCJzdGF0ZU11dGFiaWxpdHlcIjpcIm5vbnBheWFibGVcIixcInR5cGVcIjpcImZ1bmN0aW9uXCJ9XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0b2tlbkluc3QgPSBuZXcgd2ViMy5ldGguQ29udHJhY3QodG9rZW5BQkksdG9rZW5BZGRyZXNzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbkluc3QubWV0aG9kcy5iYWxhbmNlT2YoJHNjb3BlLmZkLmV0aF9hZGRyZXNzKS5jYWxsKCkudGhlbihmdW5jdGlvbiAoYmFsX3Jhdykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJhbCA9IHdlYjMudXRpbHMuZnJvbVdlaShiYWxfcmF3LCAnZXRoZXInKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYWw8MTAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUua3RseW9fYmFsYW5jZV9vayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUua3RseW9fYmFsYW5jZV9tc2cgPSBcIkluc3VmZmljaWVudCBiYWxhbmNlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSAkc2NvcGUua3RseW9fYmFsYW5jZV9vayA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWwgPSBwYXJzZUZsb2F0KGJhbCkudG9Mb2NhbGVTdHJpbmcobmF2aWdhdG9yLmxhbmd1YWdlLHttaW5pbXVtRnJhY3Rpb25EaWdpdHM6NCxtYXhpbXVtRnJhY3Rpb25EaWdpdHM6NH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuYmFsYW5jZV9rdGx5byA9IGJhbCsgXCIgS1RMWU9cIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9ICAgICBcclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUuZ2V0S3RseW9CYWwgPSBmdW5jdGlvbigpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgLy92YXIgdG9rZW5BZGRyZXNzID0gXCIweDI0RTM3OTQ2MDVDODRFNTgwRUVBNDk3MjczOEQ2MzNFOGE3MTI3YzhcIjtcclxuICAgICAgICAgICAgICAgIHZhciBldGhfYWRkcmVzcyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5vcmdhbmlzYXRpb24uRVRIQWNjb3VudDtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy9cIjB4YzMwYzUyM2E4ZWVlMTBlMzZiZWI3YTZkMDdjNjM2ZTAyNzYyY2IyN1wiO1xyXG4gICAgICAgICAgICAgICAgaWYgKGV0aF9hZGRyZXNzPT1udWxsIHx8IGV0aF9hZGRyZXNzLnRyaW0oKT09XCJcIilcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubm9LdGx5b0FkZHJlc3M9dHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxpbmtlZEJsb2NrY2hhaW5BZGRyZXNzPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5ldGhfYWRkcmVzcyA9IGV0aF9hZGRyZXNzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5nc1NlcnZpY2UuR2V0S3R5bG9CYWxhbmNlKGV0aF9hZGRyZXNzKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJhbCA9IGRhdGEuZGF0YS5iYWxhbmNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci51ZXAua3RseW9fYmxvY2sgPSBkYXRhLmRhdGEuYmxvY2tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIudWVwLmt0bHlvX2JhbGFuY2UgPSBiYWxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFsID0gYmFsLnRvTG9jYWxlU3RyaW5nKG5hdmlnYXRvci5sYW5ndWFnZSx7bWluaW11bUZyYWN0aW9uRGlnaXRzOjQsbWF4aW11bUZyYWN0aW9uRGlnaXRzOjR9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuYmFsYW5jZV9rdGx5byA9YmFsK1wiIEtUTFlPXCIgO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5ibG9ja19rdGx5byA9IFwiKGF0IGJsb2NrIFwiK2RhdGEuZGF0YS5ibG9jaysgXCIpXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmJhbGFuY2UgPSBkYXRhLmRhdGEuYmFsYW5jZV9ldGggKyBcIiBFVEggKGF0IGJsb2NrIFwiK2RhdGEuZGF0YS5ibG9ja19ldGgrIFwiKVwiIDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuYmFsYW5jZUNoZWNrZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29va2llcy5wdXRPYmplY3QoJ2N1cnJlbnRVc2VyJywkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLm1hcEt0bHlvQmFsID0gZnVuY3Rpb24oKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgICAgIC8vdmFyIHRva2VuQWRkcmVzcyA9IFwiMHgyNEUzNzk0NjA1Qzg0RTU4MEVFQTQ5NzI3MzhENjMzRThhNzEyN2M4XCI7XHJcbiAgICAgICAgICAgICAgICB2YXIgZXRoX2FkZHJlc3MgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIub3JnYW5pc2F0aW9uLkVUSEFjY291bnQ7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy9cIjB4YzMwYzUyM2E4ZWVlMTBlMzZiZWI3YTZkMDdjNjM2ZTAyNzYyY2IyN1wiO1xyXG4gICAgICAgICAgICAgICAgaWYgKGV0aF9hZGRyZXNzPT1udWxsIHx8IGV0aF9hZGRyZXNzLnRyaW0oKT09XCJcIilcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubm9LdGx5b0FkZHJlc3M9dHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAvLyAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5saW5rZWRCbG9ja2NoYWluQWRkcmVzcz10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mZC5ldGhfYWRkcmVzcyA9IGV0aF9hZGRyZXNzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5iYWxhbmNlX2t0bHlvID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLnVlcC5rdGx5b19iYWxhbmNlPy50b0xvY2FsZVN0cmluZyhuYXZpZ2F0b3IubGFuZ3VhZ2Use21pbmltdW1GcmFjdGlvbkRpZ2l0czo0LG1heGltdW1GcmFjdGlvbkRpZ2l0czo0fSkrXCIgS1RMWU9cIiA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmJhbGFuY2Vfa3RseW9fbnVtID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLnVlcC5rdGx5b19iYWxhbmNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5ibG9ja19rdGx5byA9IFwiKGF0IGJsb2NrIFwiKyRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci51ZXAua3RseW9fYmxvY2s/LnRvTG9jYWxlU3RyaW5nKG5hdmlnYXRvci5sYW5ndWFnZSx7bWluaW11bUZyYWN0aW9uRGlnaXRzOjAsbWF4aW11bUZyYWN0aW9uRGlnaXRzOjB9KSsgXCIpXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmJhbGFuY2VDaGVja2VkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5iYWxhbmNlX2t0bHlvX251bT49MTAwKSAkc2NvcGUua3RseW9fYmFsYW5jZV9vayA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5rdGx5b19iYWxhbmNlX29rID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUua3RseW9fYmFsYW5jZV9tc2cgPSBcIkluc3VmZmljaWVudCBiYWxhbmNlIVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5nc1NlcnZpY2UuR2V0S3R5bG9CYWxhbmNlKGV0aF9hZGRyZXNzKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJhbCA9IGRhdGEuZGF0YS5iYWxhbmNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5iYWxhbmNlX2t0bHlvID1iYWwrXCIgS1RMWU9cIiA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmJsb2NrX2t0bHlvID0gXCIoYXQgYmxvY2sgXCIrZGF0YS5kYXRhLmJsb2NrKyBcIilcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuYmFsYW5jZSA9IGRhdGEuZGF0YS5iYWxhbmNlX2V0aCArIFwiIEVUSCAoYXQgYmxvY2sgXCIrZGF0YS5kYXRhLmJsb2NrX2V0aCsgXCIpXCIgO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5iYWxhbmNlQ2hlY2tlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vJHNjb3BlLmdldEt0bHlvQmFsKCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCRzY29wZS5leHRlbmRlZFVzZXIudXNlX2Jsb2NrY2hhaW4pICRzY29wZS5tYXBLdGx5b0JhbCgpOyBcclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUuJHdhdGNoKFwiZmQud2ViM0Nvbm5lY3RlZFwiLGZ1bmN0aW9uKG5ld1ZhbHVlLG9sZFZhbHVlKXtcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZmQuZXRoX2FkZHJlc3MhPW51bGwgJiYgISRzY29wZS5saW5rZWRCbG9ja2NoYWluQWRkcmVzcykgJHNjb3BlLmxpbmtXZWIzV2FsbGV0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgICRzY29wZS5jaGFuZ2VXZWIzV2FsbGV0TGlua1N0YXR1cyA9IGZ1bmN0aW9uKHN0YXR1cylcclxuICAgICAgICB7XHJcbiAgICAgICAgICAkc2NvcGUubGlua2VkQmxvY2tjaGFpbkFkZHJlc3M9c3RhdHVzO1xyXG4gICAgICAgICAgJHNjb3BlLmZkLndlYjNDb25uZWN0ZWQ9c3RhdHVzO1xyXG4gICAgICAgICAgJHNjb3BlLmZkLmV0aF9hZGRyZXNzPW51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5vcGVuZWRUYXNrSW5OZXdQYWdlPXtsb2NhbFZhcnM6bnVsbCx0YXNrRGVmaW5pdGlvbjpudWxsfTtcclxuICAgIFxyXG4gICAgICAgICRzY29wZS5vcGVuVGFza0luTmV3UGFnZT1mdW5jdGlvbigpe1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLm9wZW5lZFRhc2tJbk5ld1BhZ2UgPSAkc2NvcGUuZ3NydmMuZ2V0VGFza0RhdGFJbk5ld1BhZ2UoKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5zYXZlQmxvY2tjaGFpbkFjY291bnQ9ZnVuY3Rpb24oKXtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIFNldHRpbmdzU2VydmljZS5TYXZlQmxvY2tjaGFpbkFjY291bnQoJHNjb3BlLmZkLmV0aF9hZGRyZXNzKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEuZGF0YSwnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTWVudVNlcnZpY2UuTG9hZE1lbnVzKCRzY29wZSkudGhlbihmdW5jdGlvbiAoKSB7IH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5vcmdhbmlzYXRpb24uRVRIQWNjb3VudCA9ICRzY29wZS5mZC5ldGhfYWRkcmVzc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdldEt0bHlvQmFsKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmt0bHlvQWRkcmVzc0Nvbm5lY3RlZD1mYWxzZTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLmRhdGEsJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgIH0pOyAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzLmxvYWRlZFRhc2tzPVtdO1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5leHRlbmRlZFVzZXIudGFza0RlZmluaXRpb25zID0gW107XHJcbiAgICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAkc2NvcGUuTG9hZFRhc2tzID0gZnVuY3Rpb24oKVxyXG4gICAgICB7XHJcbiAgICAgICAgaWYgKCRzY29wZS5leHRlbmRlZFVzZXIuVGFza0xpc3RIb21lIT11bmRlZmluZWQpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5sb2FkZWRUYXNrcy5sZW5ndGggPSAwO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8JHNjb3BlLmV4dGVuZGVkVXNlci5UYXNrTGlzdEhvbWUubGVuZ3RoO2krKylcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbG9jYWxWYXJzID0geydpc0lubGluZVRhc2snOiRzY29wZS5sb2NhbFZhcnMuaXNJbmxpbmVUYXNrLCd0YXNrSW5kZXgnOiRzY29wZS5sb2NhbFZhcnMubG9hZGVkVGFza3MubGVuZ3RoLCdsb2FkVGFza0RpcmVjdCcgOiB0cnVlLCd0YXNrSWQnOiRzY29wZS5leHRlbmRlZFVzZXIuVGFza0xpc3RIb21lW2ldLmlkLCdvdXRjb21lSWQnOjAsJ3ByZXZpb3VzVGFzayc6MH07XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5sb2FkZWRUYXNrcy5wdXNoKHsndGFza0lkJzokc2NvcGUuZXh0ZW5kZWRVc2VyLlRhc2tMaXN0SG9tZVtpXS5pZCwnb3V0Y29tZUlkJzowLCdwcmV2aW91c1Rhc2snOjAsJ2xvY2FsVmFycyc6bG9jYWxWYXJzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIC8vJHNjb3BlLkxvYWRUYXNrcygpO1xyXG4gICAgICAgIC8vZ2V0IGFwcHNcclxuICAgICAgICAkc2NvcGUuZ2V0QXBwcyA9IGZ1bmN0aW9uKClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuYXBwTGlzdExvYWRpbmc9dHJ1ZTtcclxuICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLkdldFJlc291cmNlU3Vic2NyaXB0aW9ucygnYXBwbGljYXRpb24nKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5hcHBMaXN0TG9hZGluZz1mYWxzZTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuYXBwTGlzdCA9ZGF0YS5kYXRhO1xyXG5cclxuICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuYXBwTGlzdExvYWRpbmc9ZmFsc2U7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUuZ2V0TXlBcHBzID0gZnVuY3Rpb24oKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UmVzb3VyY2VTdWJzY3JpcHRpb25zKCdhcHBsaWNhdGlvbicpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5hcHBMaXN0ID1kYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUuZ2V0VW5zdWJzY3JpYmVkQXBwc0ZpbHRlcmVkID0gZnVuY3Rpb24oc3RhcnQsZW5kKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UmVzb3VyY2VTdWJzY3JpcHRpb25zKCdhcHBsaWNhdGlvbicpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5hcHBMaXN0ID1kYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAvKlxyXG4gICAgICAgICAkc2NvcGUuZ2V0QWxsQXBwcyA9IGZ1bmN0aW9uKClcclxuICAgICAgICB7XHJcbiAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkJ5VHlwZShsYW5nLCdhcHBsaWNhdGlvbicpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5hcHBMaXN0RnVsbCA9ZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgfSovXHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmdldEFwcHMoKTtcclxuICAgICAgICBcclxuICAgICAgICAgJHNjb3BlLmxvYWRBcHAgPSBmdW5jdGlvbihhcHApXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgICBhcHAubG9hZGluZ0FwcD10cnVlXHJcbiAgICAgICAgICAgICAgIC8vZ2V0IGFwcGxpY2F0aW9uIHBhcmFtcyBhbmQgbG9hZCBtZW51c1xyXG5cdFx0XHRcdCRyb290U2NvcGUuZ2xvYmFscy5hcHAgPSBhcHBcclxuICAgICAgICAgICAgICAgQXV0aGVudGljYXRpb25TZXJ2aWNlLlNldE1lbnVzRm9yQXBwKGFwcCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgLy9sb2FkIGRlZmF1bHQgcGFnZVxyXG4gICAgICAgICAgICAgICAgICAgJHNjb3BlLmdldERlZmF1bHRQYWdlKGFwcCxkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpXHJcbiAgICAgICAgICAgICAgICAgIGFwcC5sb2FkaW5nQXBwPWZhbHNlXHJcbiAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5maW5kTGluayA9IGZ1bmN0aW9uIChsaW5rX3R5cGUsYXBwKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpPTA7aTxhcHAuUmVzb3VyY2VFeHRlbmRlZC5sZW5ndGg7aSsrKSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXBwLlJlc291cmNlRXh0ZW5kZWRbaV0uTGlua1R5cGU9PWxpbmtfdHlwZSkgcmV0dXJuIGFwcC5SZXNvdXJjZUV4dGVuZGVkW2ldLlJlc291cmNlMjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJHNjb3BlLmZpbmRMaW5rQWxsID0gZnVuY3Rpb24gKGxpbmtfdHlwZSxhcHApIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGk9MDtpPGFwcC5SZXNvdXJjZUV4dGVuZGVkLmxlbmd0aDtpKyspICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcHAuUmVzb3VyY2VFeHRlbmRlZFtpXS5MaW5rVHlwZT09bGlua190eXBlKSByZXR1cm4gYXBwLlJlc291cmNlRXh0ZW5kZWRbaV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgIFxyXG4gICAgICAgICRzY29wZS5nZXREZWZhdWx0UGFnZSA9IGZ1bmN0aW9uIChpYXBwLG1lbnVfbG9hZGVkKSBcclxuXHRcdHtcclxuICAgICAgICAgICAgICAgIGxldCBwYWdlSWQscGFnZSxkZWZhdWx0X3BhZ2VfdmVyc2lvblxyXG5cdFx0XHJcbiAgICAgICAgICAgICAgICBpZiAoaWFwcC51bmlxdWVJZCA9PSAna3RseW9fYnVpbGRlcicpIHsvL01JR09SXHRcclxuICAgICAgICAgICAgICAgIC8vaWYgKGlhcHAuYXBwX3R5cGU9PSdleHRlcm5hbCcpIHsgLy9NSUdPUiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlhcHAuUmVzb3VyY2VFeHRlbmRlZCE9dW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZUlkID0gJHNjb3BlLmZpbmRMaW5rKFwiZGVmYXVsdC1wYWdlXCIsaWFwcClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGFnZUFsbCA9ICRzY29wZS5maW5kTGlua0FsbChcImRlZmF1bHQtcGFnZVwiLGlhcHApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF9wYWdlX3ZlcnNpb24gPSBwYWdlQWxsPy5WZXJzaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWZhdWx0X3BhZ2VfdmVyc2lvbiB8fCAhcGFnZUFsbD8uU2VsZWN0VmVyc2lvbkRpcmVjdCkgZGVmYXVsdF9wYWdlX3ZlcnNpb24gPSAwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhZ2VJZD09PXVuZGVmaW5lZCB8fCBwYWdlSWQ9PT1udWxsKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdEZWZhdWx0IHBhZ2UgaXMgbm90IHNldCEnLCdpbmZvJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCcjJytpYXBwLk5hbWUrJyBhcHBsaWNhdGlvbiBpcyBub3QgZnVsbHkgbGF1bmNoZWQhJywnd2FybmluZycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlhcHAubG9hZGluZ0FwcD1mYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ICBlbHNlICB7ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UHVibGljUHVibGlzaGVkUmVzb3VyY2UocGFnZUlkKS50aGVuKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGFnZSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWVudV9sb2FkZWQgfHwgcGFnZS5kZWZpbml0aW9uPy5UYXJnZXQ9PXVuZGVmaW5lZCkgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnIycraWFwcC5OYW1lKycgYXBwbGljYXRpb24gaXMgbm90IGZ1bGx5IGxhdW5jaGVkIScsJ3dhcm5pbmcnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCcjJytpYXBwLk5hbWUrJyBhcHBsaWNhdGlvbiBsYXVuY2hlZCBzdWNjZXNzZnVseSEnLCdpbmZvJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYWdlLmRlZmluaXRpb24/LlRhcmdldCE9PXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZGVmYXVsdF9wYWdlX3ZlcnNpb24gfHwgIXBhZ2VBbGw/LlNlbGVjdFZlcnNpb25EaXJlY3QpIGRlZmF1bHRfcGFnZV92ZXJzaW9uID0gMFxyXG5cdFx0XHRcdFx0ICRzdGF0ZS5nbyhwYWdlLmRlZmluaXRpb24uVGFyZ2V0ICAseyB2ZXJzaW9uOmRlZmF1bHRfcGFnZV92ZXJzaW9uLHBhZ2VpZDogcGFnZUlkLCBhcHBfcmVmOmlhcHAudWlkfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdEZWZhdWx0IHBhZ2Ugbm90IGxvYWRlZCAtIHRhcmdldCBwYWdlIGRlZmluaXRpb24gZXJyb3IhJywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlhcHAubG9hZGluZ0FwcD1mYWxzZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYXBwLmxvYWRpbmdBcHA9ZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgIGVsc2UgeyBcdC8vICB3aGVuIEFQUF9UWVBFID09IElOVEVSTkFMXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpYXBwLlJlc291cmNlRXh0ZW5kZWQhPXVuZGVmaW5lZCkgcGFnZSA9ICRzY29wZS5maW5kTGlua0FsbChcImRlZmF1bHQtcGFnZVwiLGlhcHApOyAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhZ2U9PT11bmRlZmluZWQgfHwgcGFnZT09PW51bGwpeyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdEZWZhdWx0IHBhZ2UgaXMgbm90IHNldCEnLCdpbmZvJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCcjJytpYXBwLk5hbWUrJyBhcHBsaWNhdGlvbiBpcyBub3QgZnVsbHkgbGF1bmNoZWQhJywnd2FybmluZycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlhcHAubG9hZGluZ0FwcD1mYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLkdldFB1Ymxpc2hlZFJlc291cmNlVmVyc2lvbihwYWdlLlJlc291cmNlMiwnZm9ybScscGFnZS5WZXJzaW9uKS50aGVuKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGFnZVB1YiA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYWdlUHViPT0gbnVsbCB8fCBwYWdlUHViPT11bmRlZmluZWQgfHwgT2JqZWN0LmtleXMocGFnZVB1YikubGVuZ3RoPT0wIHx8IHBhZ2VQdWIuRGVmaW5pdGlvbj09dW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnRXJyb3IgbG9hZGluZyBhcHBsaWNhdGlvbiAjJytpYXBwLk5hbWUgKycgPT4gUGFnZSBkZWZpbml0aW9uIG5vdCBmb3VuZCBmb3IgcGFnZS1pZD0nK3BhZ2UuUmVzb3VyY2UyKycsIHZlcnNpb249JytwYWdlLlZlcnNpb24sJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1lbnVfbG9hZGVkKSAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCcjJytpYXBwLk5hbWUrJyBhcHBsaWNhdGlvbiBpcyBub3QgZnVsbHkgbGF1bmNoZWQhJywnd2FybmluZycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnIycraWFwcC5OYW1lKycgYXBwbGljYXRpb24gbGF1bmNoZWQgc3VjY2Vzc2Z1bHkhJywnaW5mbycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X3BhZ2VfdmVyc2lvbiA9IHBhZ2UuVmVyc2lvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRlZmF1bHRfcGFnZV92ZXJzaW9uIHx8ICFwYWdlPy5TZWxlY3RWZXJzaW9uRGlyZWN0KSBkZWZhdWx0X3BhZ2VfdmVyc2lvbiA9IDBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXRlLmdvKHBhZ2VQdWIuRGVmaW5pdGlvbj8uUmVzb3VyY2VFeHRlbmRlZD8uVGFyZ2V0ICAseyBwYWdlaWQ6IHBhZ2VQdWIuRGVmaW5pdGlvbj8udWlkLHZlcnNpb246ZGVmYXVsdF9wYWdlX3ZlcnNpb24sIGFwcF9yZWY6aWFwcC51aWQsdGFiOiRzY29wZS5wYXJhbXMuc2hvd0FwcExpc3R9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWFwcC5sb2FkaW5nQXBwPWZhbHNlIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9LGZ1bmN0aW9uKGVycm9yKXsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYXBwLmxvYWRpbmdBcHA9ZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cdFx0XHRcdH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkJ5VHlwZShsYW5nLCdhcHBsaWNhdGlvbicpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5hcHBMaXN0RnVsbCA9ZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAkc2NvcGUuc3Vic2NyaWJlX3Vuc3Vic2NyaWJlID0gZnVuY3Rpb24oYXBwLGluZGV4LHN1Yl90eXBlKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGFwcC5zdWJzY3JpYmluZz10cnVlO1xyXG4gICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuTWFuYWdlUmVzb3VyY2VTdWJzY3JpcHRpb25zKGFwcCwnYXBwbGljYXRpb24tJythcHAuYXBwX3R5cGUsc3ViX3R5cGUpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwLnN1YnNjcmliaW5nPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5hcHBMaXN0W2luZGV4XS5TdWJJZD1kYXRhLmRhdGEuZGF0YS5TdWJJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuYXBwTGlzdFtpbmRleF0uQWN0aXZlU3ViPWRhdGEuZGF0YS5kYXRhLkFjdGl2ZVN1YjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLmRhdGFbJ21zZyddIT11bmRlZmluZWQpIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5kYXRhLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IuZGF0YSwnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwLnN1YnNjcmliaW5nPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgICRzY29wZS5nZXRBcHBsaWNhdGlvbnMgPSBmdW5jdGlvbihwYWdlTnVtYmVyLHBhZ2VTaXplKXtcclxuICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZV9wYWdlX3NpemUgPSBwYWdlU2l6ZTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZUxvYWRpbmc9dHJ1ZTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB2YXIgZmlsdGVyPSRzY29wZS5yZXNvdXJjZTtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUudG90YWxDb3VudD4wKXtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5jZWlsKCRzY29wZS50b3RhbENvdW50L3BhZ2VTaXplKTxuZXdQYWdlKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG5ld1BhZ2UgPSBNYXRoLmNlaWwoJHNjb3BlLnRvdGFsQ291bnQvcGFnZVNpemUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0QXBwc0ZpbHRlcmVkQnlTdWJTdGF0dXMocGFnZU51bWJlcixwYWdlU2l6ZSxmaWx0ZXIsc3ViX3N0YXR1cyxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZpcnN0UXVlcnk9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuYXBwTGlzdFVuc3Vic2NyaWJlZCA9IGRhdGEuZGF0YS5yZXN1bHRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5uZXh0UGFnZSA9IGRhdGEuZGF0YS5uZXh0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5wcmV2aW91c1BhZ2UgPSBkYXRhLmRhdGEucHJldmlvdXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRvdGFsSXRlbUNvdW50PWRhdGEuZGF0YS5jb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY3VycmVudFBhZ2U9cGFnZU51bWJlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubnVtYmVyT2ZQYWdlcyA9IE1hdGguY2VpbCgkc2NvcGUudG90YWxJdGVtQ291bnQvcGFnZVNpemUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoJHNjb3BlLnRvdGFsSXRlbUNvdW50PD1wYWdlU2l6ZSAmJiAkc2NvcGUucmVzb3VyY2VEYXRhLmxlbmd0aD4wKSB8fCAkc2NvcGUudG90YWxJdGVtQ291bnQ9PTApICRzY29wZS5oaWRlQnRuTW9yZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAkc2NvcGUuaGlkZUJ0bk1vcmU9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlTG9hZGluZz1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VMb2FkaW5nPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgJHNjb3BlLmxvYWRNb3JlQXBwbGljYXRpb25zID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZV9wYWdlX3NpemUgPSAkc2NvcGUucmVzb3VyY2VfcGFnZV9zaXplKzEyO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmdldEFwcGxpY2F0aW9ucygxLCRzY29wZS5yZXNvdXJjZV9wYWdlX3NpemUpOyAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmdldFJlc291cmNlRGVmID0gZnVuY3Rpb24ocGFnZU51bWJlcixwYWdlU2l6ZSl7XHJcbiAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VfcGFnZV9zaXplID0gcGFnZVNpemU7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VMb2FkaW5nPXRydWU7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdmFyIGZpbHRlcj0kc2NvcGUucmVzb3VyY2U7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnRvdGFsQ291bnQ+MCl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguY2VpbCgkc2NvcGUudG90YWxDb3VudC9wYWdlU2l6ZSk8bmV3UGFnZSlcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXdQYWdlID0gTWF0aC5jZWlsKCRzY29wZS50b3RhbENvdW50L3BhZ2VTaXplKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmRmlsdGVyZWQocGFnZU51bWJlcixwYWdlU2l6ZSxmaWx0ZXIsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5maXJzdFF1ZXJ5PXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGF0YSA9IGRhdGEuZGF0YS5yZXN1bHRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5uZXh0UGFnZSA9IGRhdGEuZGF0YS5uZXh0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5wcmV2aW91c1BhZ2UgPSBkYXRhLmRhdGEucHJldmlvdXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRvdGFsSXRlbUNvdW50PWRhdGEuZGF0YS5jb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY3VycmVudFBhZ2U9cGFnZU51bWJlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubnVtYmVyT2ZQYWdlcyA9IE1hdGguY2VpbCgkc2NvcGUudG90YWxJdGVtQ291bnQvcGFnZVNpemUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoJHNjb3BlLnRvdGFsSXRlbUNvdW50PD1wYWdlU2l6ZSAmJiAkc2NvcGUucmVzb3VyY2VEYXRhLmxlbmd0aD4wKSB8fCAkc2NvcGUudG90YWxJdGVtQ291bnQ9PTApICRzY29wZS5oaWRlQnRuTW9yZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAkc2NvcGUuaGlkZUJ0bk1vcmU9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlTG9hZGluZz1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VMb2FkaW5nPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgJHNjb3BlLmxvYWRNb3JlUmVzb3VyY2UgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlX3BhZ2Vfc2l6ZSA9ICRzY29wZS5yZXNvdXJjZV9wYWdlX3NpemUrMTI7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZ2V0UmVzb3VyY2VEZWYoMSwkc2NvcGUucmVzb3VyY2VfcGFnZV9zaXplKTsgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgICRzY29wZS5zYXZlSG9tZVBhZ2UgPSBmdW5jdGlvbigpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgTWVudVNlcnZpY2Uuc2F2ZUhvbWVQYWdlKCRzY29wZS5leHRlbmRlZFVzZXIpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLnVlcCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICRjb29raWVzLnB1dCgnZ2xvYmFscycsICRyb290U2NvcGUuZ2xvYmFscyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZXh0ZW5kZWRVc2VyID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLnVlcDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5Mb2FkVGFza3MoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIFxyXG5cclxuICAgICAgICBpZiAoJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLnVlcD8uUGFyYW1zPy5PbmJvYXJkaW5nIT0nY29tcGxldGVkJyAmJiAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIudWVwPy5QYXJhbXM/Lk9uYm9hcmRpbmchPSdzdG9wcGVkT25DbGllbnQnKSAkc3RhdGUuZ28oXCJhcHAubm9tZW51Lm9uYm9hcmRpbmdcIix7YXBwX3JlZjp1bmRlZmluZWR9KVxyXG4gICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmTGlzdEJ5VHlwZShsYW5nLCd0YXNrJykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgKi9cclxuICAgICAgICBcclxuICAgIH1cclxuICAgIFxyXG5ob21lQ3RybC4kaW5qZWN0ID0gWyckc2NvcGUnLCAnJHJvb3RTY29wZScsJyRzdGF0ZScsJyRjb29raWVzJywnJGxvY2F0aW9uJywnS2F0YWx5b1N0YXRlTWFuYWdlcicsJ1Byb2Nlc3NpbmdTZXJ2aWNlJywnTWVzc2FnaW5nU2VydmljZScsJ0NvZGVzU2VydmljZScsJ0F1dGhlbnRpY2F0aW9uU2VydmljZScsJ01lbnVTZXJ2aWNlJywnUmVzb3VyY2VzRGF0YVNlcnZpY2UnLCdUYXNrRGF0YVNlcnZpY2UnLCdHcmlkc3RlclNlcnZpY2UnLCdTZXR0aW5nc1NlcnZpY2UnLCckdGltZW91dCcsJyRzdGF0ZVBhcmFtcyddO1xyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtYXJrZXRDdHJsKCRzY29wZSwgJHJvb3RTY29wZSwkc3RhdGUsJGNvb2tpZXMsJGxvY2F0aW9uLEthdGFseW9TdGF0ZU1hbmFnZXIsUHJvY2Vzc2luZ1NlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxDb2Rlc1NlcnZpY2UsQXV0aGVudGljYXRpb25TZXJ2aWNlLE1lbnVTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLFRhc2tEYXRhU2VydmljZSxHcmlkc3RlclNlcnZpY2UsU2V0dGluZ3NTZXJ2aWNlLCR0aW1lb3V0LCRzdGF0ZVBhcmFtcyl7XHJcbiAgICAgICAgXHJcbiAgICAgXHJcbiAgICAgICAgJHNjb3BlLkNUUkw9J21hcmtldEN0cmwnO1xyXG4gICAgICAgICRyb290U2NvcGUuaGVhZFRpdGxlID1cIkthdGFseW8gfCBNYXJrZXRwbGFjZVwiO1xyXG4gICAgICAgICRzY29wZS5jdXJyZW50U3RhdGU9JHN0YXRlLmN1cnJlbnQubmFtZTtcclxuICAgICAgICAkc2NvcGUuc2VsZWN0ZWRBcHAgPSB7J25hbWUnOicnfVxyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMgPSB7fTtcclxuICAgICAgICAkc2NvcGUuZmQ9e307XHJcbiAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uPXt9O1xyXG4gICAgICAgIHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgJHNjb3BlLmN1cnJlbnRVc2VyRmlyc3ROYW1lPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlcj8uZmlyc3RfbmFtZTtcclxuICAgICAgICAkc2NvcGUuZXh0ZW5kZWRVc2VyID0gYW5ndWxhci5jb3B5KCRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci51ZXApO1xyXG4gICAgICAgICRzY29wZS5yZXNvdXJjZT17fTtcclxuICAgICAgICAkc2NvcGUucmVzb3VyY2VfcGFnZV9zaXplPTEyO1xyXG4gICAgICAgICRzY29wZS5pc19zdXBlcnVzZXIgPSAgJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmlzX3N1cGVydXNlcjtcclxuICAgICAgICAkc2NvcGUuYXBwTGlzdFBhcmFtZXRlcnM9e2lOdW1iZXI6OH1cclxuICAgICAgICBpZiAoJHNjb3BlLmV4dGVuZGVkVXNlcj09dW5kZWZpbmVkKSAkc2NvcGUuZXh0ZW5kZWRVc2VyID0ge307XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCEkc2NvcGUucGFyYW1zKSAkc2NvcGUucGFyYW1zPXt9XHJcblxyXG4gICAgICAgICRzY29wZS5wYXJhbXMuc2hvd0FwcExpc3Q9MVxyXG4gICAgICAgICRzY29wZS5tZW51X3NlcnZpY2UgPSBNZW51U2VydmljZTtcclxuICAgICAgICAkc2NvcGUubWVudV9zZXJ2aWNlLmNsZWFyU2lkZU1lbnUoKSBcclxuXHJcblx0XHQkc2NvcGUuc2hvd01hbmlmZXN0ID0gZnVuY3Rpb24gKHBfdHlwZSkge1xyXG5cdFx0XHRcdCQoJyNtYW5pZmVzdCcpLm1vZGFsKCdzaG93JylcclxuXHRcdFx0XHQkc2NvcGUubW9kYWxBY3Rpb249J21haW5mZXN0J1xyXG5cdFx0XHRcdC8vJHNjb3BlLmJ1aWxkQXBwTWFuaWZlc3QoKVxyXG5cdFx0fVxyXG5cdFx0XHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmdldEN1cnJlbnRFbnZEYXRhID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRyb290U2NvcGU/Lmdsb2JhbHM/LmVudmlyb25tZW50c1skcm9vdFNjb3BlPy5nbG9iYWxzPy5jdXJyZW50RW52XVxyXG4gICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICBpZiAoJHN0YXRlUGFyYW1zLmVudikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oXCJlbnZpcm9ubWVudFwiLCAkc3RhdGVQYXJhbXMuZW52ICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50RW52ID0gICRzdGF0ZVBhcmFtcy5lbnYgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5nc3J2Yz1Hcmlkc3RlclNlcnZpY2U7XHJcbiAgICAgICAgJHNjb3BlLmdzcnZjLnJlc2V0Qm9keUJnQ29sb3IoKSBcclxuXHJcbiAgICAgICAgLy9nZXQgYXBwc1xyXG4gICAgICAgICRzY29wZS5nZXRBcHBzID0gZnVuY3Rpb24oKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5hcHBMaXN0TG9hZGluZz10cnVlO1xyXG4gICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UHVibGlzaGVkUHVibGljUmVzb3VyY2VzQnlUeXBlKCdhcHAtbWFuaWZlc3QnKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5hcHBMaXN0TG9hZGluZz1mYWxzZTsgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuYXBwTGlzdCA9ZGF0YS5kYXRhO1xyXG5cclxuICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuYXBwTGlzdExvYWRpbmc9ZmFsc2U7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuXHRcdFxyXG5cdC8vXHRhcHBMaXN0OiBpbnN0YWxsZWQ6IFtdXHJcblx0XHQvL1x0XHRuZXc6IEFycmF5KDEpXHJcbiAgICAgICAgXHJcbiAgICAgICBcclxuICAgICAgICAkc2NvcGUuZ2V0QXBwcygpO1xyXG4gICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmFwcE1hbmlmZXN0PVtdXHJcbiAgICAgICAgJHNjb3BlLmdldEFwcE1hbmlmZXN0ID0gZnVuY3Rpb24gKHJlc291cmNlVWlkKSB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubWFuaWZlc3RMb2FkaW5nID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmFwcE1hbmlmZXN0Lmxlbmd0aD0wXHJcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5HZXRQdWJsaXNoZWRSZXNvdXJjZVZlcnNpb24ocmVzb3VyY2VVaWQsJ2FwcC1tYW5pZmVzdCcsMCwncHVibGljJykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm1hbmlmZXN0TG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkQXBwPWRhdGEuZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5hcHBNYW5pZmVzdD1kYXRhLmRhdGE/LmRlZmluaXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucGFyYW1zLnNlbGVjdGVkVGFiPTFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5tYW5pZmVzdExvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICBcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICAgJHNjb3BlLnNob3dJbnN0YWxsID0gZnVuY3Rpb24oYXBwKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgICAvL2RlYnVnZ2VyXHJcblx0XHRcdCAgICRzY29wZS5wYXJhbXMuc2VsZWN0ZWRBcHA9YXBwXHJcbiAgICAgICAgICAgICAgICRzY29wZS5wYXJhbXMuc2hvd0FwcExpc3Q9M1xyXG4gICAgICAgICAgICAgICAkc2NvcGUuZ2V0QXBwTWFuaWZlc3QoYXBwLnVpZClcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfTtcclxuXHRcdFxyXG4gICAgICAgICRzY29wZS5yZXNvdXJjZUluc3RhbGxlZCA9IHt9XHJcblxyXG4gICAgICAgICRzY29wZS5pbnN0YWxsUmVzb3VyY2UgPSBmdW5jdGlvbigpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgICAkc2NvcGUuaW5zdGFsbGluZ1Jlc291cmNlID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuSW5zdGFsbFJlc291cmNlKCRzY29wZS5zZWxlY3RlZEFwcC5pZCwkc2NvcGUuc2VsZWN0ZWRBcHAudWlkLCdhcHBsaWNhdGlvbicpLnRoZW4oXHJcblx0XHRcdFx0XHRmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmluc3RhbGxpbmdSZXNvdXJjZSA9IGZhbHNlXHJcblx0XHRcdFx0XHRcdFx0XHQkKCcjbWFuaWZlc3QnKS5tb2RhbCgnaGlkZScpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlSW5zdGFsbGVkWyRzY29wZS5zZWxlY3RlZEFwcC51aWRdPXRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5kYXRhLCdzdWNjZXNzJyk7XHJcblx0XHRcdFx0XHRcdFx0XHQkc2NvcGUuZ2V0QXBwcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5pbnN0YWxsaW5nUmVzb3VyY2UgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfTtcclxuXHJcblxyXG5cclxuICAgICAgICBcclxuICAgIH1cclxuICAgICAgICBcclxuZXhwb3J0IGZ1bmN0aW9uIG9uYm9hcmRpbmdDdHJsICgkc2NvcGUsICRyb290U2NvcGUsJHN0YXRlLCRjb29raWVzLE1lc3NhZ2luZ1NlcnZpY2UsTWVudVNlcnZpY2UsVXNlclNlcnZpY2UsJHRpbWVvdXQsJHN0YXRlUGFyYW1zKXtcclxuXHJcbiAgICAgICAgJHNjb3BlLkNUUkw9J29uYm9hcmRpbmdDdHJsJztcclxuICAgICAgICAkcm9vdFNjb3BlLmhlYWRUaXRsZSA9XCJLYXRhbHlvIHwgT25ib2FyZGluZ1wiO1xyXG4gICAgICAgICRzY29wZS5jdXJyZW50U3RhdGU9JHN0YXRlLmN1cnJlbnQubmFtZTtcclxuICAgICAgICAkc2NvcGUuc2VsZWN0ZWRBcHAgPSB7J25hbWUnOicnfVxyXG4gICAgICAgICRzY29wZS5jdXJyZW50VXNlckZpcnN0TmFtZT0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXI/LmZpcnN0X25hbWU7XHJcbiAgICAgICAgLy8kc2NvcGUuZXh0ZW5kZWRVc2VyID0gYW5ndWxhci5jb3B5KCRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci51ZXApXHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLm1lbnVfc2VydmljZSA9IE1lbnVTZXJ2aWNlICAgIFxyXG4gICAgICAgICRzY29wZS5tZW51X3NlcnZpY2UuY2xlYXJTaWRlTWVudSgpXHJcbiAgXHJcblxyXG4gICAgICAgICRzY29wZS5vcGVuUHJvY2Vzcz0gZnVuY3Rpb24gKGV2dCxvcmRlck51bWJlcikge1xyXG4gICAgICAgICAgICAvLyBHZXQgYWxsIGVsZW1lbnRzIHdpdGggY2xhc3M9XCJvbmJvYXJkLWdyaWRcIiBhbmQgaGlkZSB0aGVtXHJcbiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIub25ib2FyZC1ncmlkXCIpLmZvckVhY2goKGNvbnRlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIC8vIEdldCBhbGwgZWxlbWVudHMgd2l0aCBjbGFzcz1cImRvdFwiIGFuZCByZW1vdmUgXCJkb3QtYWN0aXZlXCIgY2xhc3MgZnJvbSB0aGVtLlxyXG4gICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLmRvdFwiKS5mb3JFYWNoKChjb250ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb250ZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJkb3QtYWN0aXZlXCIpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIC8vIFNob3cgdGhlIGN1cnJlbnQgdGFiLCBhbmQgYWRkIGFuIFwiZG90LWFjdGl2ZVwiIGNsYXNzIHRvIHRoZSBkb3R0ZXIuXHJcbiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG9yZGVyTnVtYmVyKS5zdHlsZS5kaXNwbGF5ID0gXCJncmlkXCI7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkb3QnICsgb3JkZXJOdW1iZXIpLmNsYXNzTGlzdC5hZGQoXCJkb3QtYWN0aXZlXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmNsb3NlUHJvY2Vzcz1mdW5jdGlvbiAoc3RhdHVzLGdvdG9TZXJ2ZXIpIHsvLyBMYXN0IGJ1dHRvbiBjbG9zZXMgdGhlIHdob2xlIHByb2Nlc3MuXHJcbiAgICAgICAgICAgIFxyXG5cdFx0XHRpZiAoISAkcm9vdFNjb3BlLmdsb2JhbHM/LmN1cnJlbnRVc2VyPy51c2VyaWQpICAkc3RhdGUuZ28oJ2FwcC5uYXZiYXIuaG9tZScpXHRcdFxyXG5cdFx0XHRcclxuICAgICAgICAgICAgLy8gdXBkYXRlIG9uYm9hcmRpbmcgc3RhdHVzIHRvIGZpbmlzaFxyXG4gICAgICAgICAgICBpZiAgKCRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci51ZXA9PXVuZGVmaW5lZCkgICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci51ZXA9e31cclxuICAgICAgICAgICAgaWYgICgkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIudWVwLlBhcmFtcz09dW5kZWZpbmVkKSAgJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLnVlcC5QYXJhbXM9e31cclxuICAgICAgICAgICAgJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLnVlcC5QYXJhbXMuT25ib2FyZGluZz1zdGF0dXNcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgLy9Ub0RvIC0gc2VuZCBvbmJvYXJkaW5nIHN0YXR1cyB0byBzZXJ2ZXIgXHJcbiAgICAgICAgICAgIGlmIChnb3RvU2VydmVyKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFVzZXJTZXJ2aWNlLnNhdmVVc2VyRXh0ZW5kZWQoc3RhdHVzKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgLy9wdXQgb2JqZWN0IGluIGNvb2tpZVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkY29va2llcy5wdXRPYmplY3QoJ2N1cnJlbnRVc2VyJywgIHtcclxuICAgICAgICAgICAgICAgICAgICB1c2VyaWQgOiAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIudXNlcmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lOiAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIudXNlcm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RfbmFtZTogJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmZpcnN0X25hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgbGFzdF9uYW1lIDogJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhc3RfbmFtZSxcclxuICAgICAgICAgICAgICAgICAgIC8vIGVudmlyb25tZW50czogJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmVudmlyb25tZW50cyxcclxuICAgICAgICAgICAgICAgICAgICBsYXN0X2xvZ2luOiRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYXN0X2xvZ2luLFxyXG4gICAgICAgICAgICAgICAgICAgIGlzX3N1cGVydXNlcjokcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIuaXNfc3VwZXJ1c2VyLFxyXG4gICAgICAgICAgICAgICAgICAgIGF1dGhkYXRhOiAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIuYXV0aGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0aF90eXBlOiAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIuYXV0aF90eXBlLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhbmc6ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhbmdPYmo6ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nT2JqLFxyXG4gICAgICAgICAgICAgICAgICAgIHVlcDp7UGFyYW1zOntPbmJvYXJkaW5nOiRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci51ZXAuUGFyYW1zLk9uYm9hcmRpbmd9fSxcclxuICAgICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbjoge2lkOiRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5vcmdhbmlzYXRpb24uaWR9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAkc3RhdGUuZ28oJ2FwcC5uYXZiYXIuaG9tZScpXHJcbiAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgfSBlbHNlICAkc3RhdGUuZ28oJ2FwcC5uYXZiYXIuaG9tZScpXHJcbiAgICAgICAgICAgIC8vZ28gdG8gaG9tZSBwYWdlXHJcbiAgICAgICAgICAgXHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUuZGlzcGxheVByb2Nlc3M9ZnVuY3Rpb24gKGRpc3BsYXkpIHtcclxuICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIub25ib2FyZGluZy1jb250YWluZXJcIikuZm9yRWFjaCgoY29udGVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29udGVudC5zdHlsZS5kaXNwbGF5ID0gZGlzcGxheTtcclxuICAgICAgICAgICAgfSk7IFxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBEb24ndCBzaG93IGFnYWluIGRvdWJsZSBjaGVjay5cclxuICAgICAgICAkc2NvcGUuZG9udFNob3c9ZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAkc2NvcGUuZGlzcGxheVByb2Nlc3MoJ25vbmUnKVxyXG4gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm5vU2hvd1wiKS5zdHlsZS5kaXNwbGF5ID0gXCJncmlkXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBVbmRvIGNsb3NlcyB0aGUgd2hvbGUgbW9kYWwuXHJcbiAgICAgICAgJHNjb3BlLnJlb3BlblByb2Nlc3MgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICRzY29wZS5kaXNwbGF5UHJvY2VzcygnYmxvY2snKVxyXG4gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm5vU2hvd1wiKS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBDbG9zZSBhbmQgZG9uJ3Qgc2hvdyBhZ2FpblxyXG4gICAgICAgICRzY29wZS5kb250U2hvd1RydWUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgJHNjb3BlLmNsb3NlUHJvY2VzcygnY29tcGxldGVkJyx0cnVlKVxyXG4gICAgICAgIH1cclxuICAgICBcclxufVxyXG5cclxuXHJcbiBvbmJvYXJkaW5nQ3RybC4kaW5qZWN0ID0gWyckc2NvcGUnLCAnJHJvb3RTY29wZScsJyRzdGF0ZScsJyRjb29raWVzJywnTWVzc2FnaW5nU2VydmljZScsJ01lbnVTZXJ2aWNlJywnVXNlclNlcnZpY2UnLCckdGltZW91dCcsJyRzdGF0ZVBhcmFtcyddO1xyXG5cclxuIFxyXG4gZXhwb3J0IGZ1bmN0aW9uIGRlbW9DdHJsICgkc2NvcGUsICRyb290U2NvcGUsJHN0YXRlLCRjb29raWVzLEthdGFseW9TdGF0ZU1hbmFnZXIsUHJvY2Vzc2luZ1NlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxDb2Rlc1NlcnZpY2UsQXV0aGVudGljYXRpb25TZXJ2aWNlLE1lbnVTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLFRhc2tEYXRhU2VydmljZSxHcmlkc3RlclNlcnZpY2UsJHRpbWVvdXQsJHN0YXRlUGFyYW1zKXtcclxuXHJcbiAgICAgICAgJHNjb3BlLkNUUkw9J2RlbW9DdHJsJztcclxuICAgICAgICAkcm9vdFNjb3BlLmhlYWRUaXRsZSA9XCJLYXRhbHlvIHwgRGVtb1wiO1xyXG4gICAgICAgICRzY29wZS5jdXJyZW50U3RhdGU9JHN0YXRlLmN1cnJlbnQubmFtZTtcclxuICAgICAgICAvL0xvZ2luXHJcbn1cclxuXHJcblxyXG4gZGVtb0N0cmwuJGluamVjdCA9IFsnJHNjb3BlJywgJyRyb290U2NvcGUnLCckc3RhdGUnLCckY29va2llcycsJ0thdGFseW9TdGF0ZU1hbmFnZXInLCdQcm9jZXNzaW5nU2VydmljZScsJ01lc3NhZ2luZ1NlcnZpY2UnLCdDb2Rlc1NlcnZpY2UnLCdBdXRoZW50aWNhdGlvblNlcnZpY2UnLCdNZW51U2VydmljZScsJ1Jlc291cmNlc0RhdGFTZXJ2aWNlJywnVGFza0RhdGFTZXJ2aWNlJywnR3JpZHN0ZXJTZXJ2aWNlJywnJHRpbWVvdXQnLCckc3RhdGVQYXJhbXMnXTtcclxuXHJcbiBcclxuZXhwb3J0IGZ1bmN0aW9uIG5hdmJhckN0cmwoJHNjb3BlLCRyb290U2NvcGUsJHN0YXRlLFJlc291cmNlc0RhdGFTZXJ2aWNlLENvZGVzU2VydmljZSxNZW51U2VydmljZSwkc3RhdGVQYXJhbXMsJGNvb2tpZXMsJHRpbWVvdXQsTWVzc2FnaW5nU2VydmljZSl7XHJcblxyXG5cclxuICAgICAgICAkc2NvcGUuQ1RSTD0nbmF2YmFyQ3RybCc7XHJcbiAgICAgICAgJHNjb3BlLm1lbnVfc2VydmljZSA9IE1lbnVTZXJ2aWNlO1xyXG4gICAgICAgICRzY29wZS5tZW51cz0ge2VkaXRNb2RlOiAkc2NvcGUubWVudV9zZXJ2aWNlLmdldE1lbnVFZGl0TW9kZSgpfTtcclxuICAgICAgICAkc2NvcGUubG9nb3V0TG9hZGVkPWZhbHNlO1xyXG4gICAgICAgICRzY29wZS5uYXZiYXJMb2FkZWQ9dHJ1ZTtcclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUuY01lbnVzPVtdO1xyXG4gICAgICAgICRzY29wZS5pc19zdXBlcnVzZXIgPSAgJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmlzX3N1cGVydXNlcjtcclxuICAgICAgICAkc2NvcGUuY3VycmVudFBhZ2UgPSAkc3RhdGUuY3VycmVudC5uYW1lO1xyXG4gICAgICAgICRzY29wZS5jdXJyZW50TmF2YmFySWQgPSAkc3RhdGVQYXJhbXMubmF2YmFyX2lkO1xyXG4gICAgICAgICRzY29wZS5tZW51cy5jdXJyZW50U2lkZU1lbnVJZCA9ICRzdGF0ZVBhcmFtcy5zaWRlbWVudV9pZDtcclxuICAgICAgICB2YXIgbGFuZyA9ICAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAkc2NvcGUuZGVwbG95ZGlyID0gaW5kZXhKc29uWydjb25maWcnXVsnZGVwbG95ZGlyJ11cclxuXHJcbiAgICAgICAgJHNjb3BlLmdldE5hdmJhckl0ZW1zID0gZnVuY3Rpb24obGFuZylcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgJHNjb3BlLm1lbnVfc2VydmljZS5nZXROYXZiYXJzKGxhbmcpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmN1cnJlbnROYXZiYXJJZD09dW5kZWZpbmVkIHx8IGlzTmFOKCRzY29wZS5jdXJyZW50TmF2YmFySWQpIHx8ICRzY29wZS5jdXJyZW50TmF2YmFySWQ9PT0wIHx8ICRzY29wZS5jdXJyZW50TmF2YmFySWQ9PT1cIlwiKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuY3VycmVudE5hdmJhcklkID0gJHNjb3BlLmdldExpbmtOYXZiYXJCeU5hbWUoJHNjb3BlLmN1cnJlbnRQYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLm1lbnVfc2VydmljZS5nZXRNZW51RWRpdE1vZGUoKSlcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICRzY29wZS5zZXRFZGl0TmF2YmFyKCRzY29wZS5jdXJyZW50RWRpdE5hdmJhcklkKTtcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICRzY29wZS5zZXROYXZiYXIoJHNjb3BlLmN1cnJlbnROYXZiYXJJZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgIFxyXG4gICAgIFxyXG4gICAgICAgXHJcbiAgICAgICAvL2dldCBuYXZiYXJJZCBieSBwYWdlIGlkXHJcbiAgICAgICAkc2NvcGUuZ2V0TGlua05hdmJhciA9IGZ1bmN0aW9uKHBhZ2VpZCkge1xyXG4gICAgICBcclxuICAgICAgICAgIHJldHVybiAgJHNjb3BlLm1lbnVfc2VydmljZS5nZXRQYWdlTmF2YmFyKHBhZ2VpZCxsYW5nKTtcclxuICAgIFxyXG4gICAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICAkc2NvcGUuTG9hZExvZ291dCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIC8vJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2dvdXRMb2FkZWQ9dHJ1ZTtcclxuICAgICAgIC8vIH0sMTAwMCk7XHJcbiAgICAgICAgfTtcclxuICAgICAgLy9nZXQgbmF2YmFySWQgYnkgc3RhdGUgbmFtZVxyXG4gICAgICAkc2NvcGUuZ2V0TGlua05hdmJhckJ5TmFtZSA9IGZ1bmN0aW9uKGN1cnJlbnRTdGF0ZU5hbWUpIHtcclxuICAgICAgXHJcbiAgICAgICAgICByZXR1cm4gICRzY29wZS5tZW51X3NlcnZpY2UuZ2V0TmF2YmFyQnlUYXJnZXROYW1lKGN1cnJlbnRTdGF0ZU5hbWUsbGFuZyk7XHJcbiAgICBcclxuICAgICAgfTtcclxuICAgICBcclxuICAgICAgXHJcbiAgICAkc2NvcGUuc2V0U2lkZU1lbnUgPSBmdW5jdGlvbihtZW51SWQpIHsgICAgIFxyXG4gICAgICAkc2NvcGUubWVudV9zZXJ2aWNlLnNldFNlbGVjdGVkU2lkZW1lbnUobWVudUlkKSA7XHJcbiAgICAgIC8vJHNjb3BlLmN1cnJlbnRTaWRlTWVudUlkPW1lbnVJZDtcclxuICAgIH07XHJcbiAgICAgIFxyXG4gICAgICAvL1NFVCBjdXJyZW50IG5hdmJhcklkIGZvciBlZGl0TW9kZT1mYWxzZVxyXG4gICAgICAkc2NvcGUuc2V0TmF2YmFyID0gZnVuY3Rpb24obmF2YmFySWQpIHtcclxuICAgICAgICAkc2NvcGUuY3VycmVudE5hdmJhcklkID0gbmF2YmFySWQ7XHJcbiAgICAgICAgJHNjb3BlLm1lbnVfc2VydmljZS5zZXRDdXJyZW50TmF2YmFySWQoJHNjb3BlLmN1cnJlbnROYXZiYXJJZCxsYW5nKTtcclxuICAgICAgICBcclxuICAgICAgICAvL0dFVCBjaGlsZCBtZW51c1xyXG4gICAgICAgICRzY29wZS5jTWVudXMgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIuY01lbnVzO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICgkc2NvcGUubWVudXMuY3VycmVudFNpZGVNZW51SWQ+MCkgJHNjb3BlLnNldFNpZGVNZW51KCRzY29wZS5tZW51cy5jdXJyZW50U2lkZU1lbnVJZCk7XHJcbiAgICAgIC8vICAkc2NvcGUuZ2V0TWVudXNGb3JOYXZiYXIoKTtcclxuICAgICAgfTtcclxuICAgIFxyXG4gICAgLy9HRVQgbmF2YmFyIGRlZmluaXRpb24gZGV0YWlsc1xyXG4gICAgJHNjb3BlLmdldE5hdmJhckRldGFpbHMgPSBmdW5jdGlvbihuYXZiYXJJZCxpbmRleCkge1xyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgICAkc2NvcGUuY3VycmVudEVkaXROYXZiYXJJbmRleD1pbmRleDtcclxuICAgICAgJHNjb3BlLnNldEVkaXROYXZiYXIobmF2YmFySWQpO1xyXG4gICAgICBcclxuICAgICAgICAgICAvL25hdmJhckl0ZW0uVXNlcnNcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgfVxyXG4gICAgICBcclxuICAgICAgLy9TRVQgY3VycmVudCBuYXZiYXJJZCBmb3IgZWRpdE1vZGU9dHJ1ZVxyXG4gICAgJHNjb3BlLnNldEVkaXROYXZiYXIgPSBmdW5jdGlvbihuYXZiYXJJZCkge1xyXG4gICAgICAkc2NvcGUubWVudV9zZXJ2aWNlLm5hdmJhclNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgJHNjb3BlLmN1cnJlbnRFZGl0TmF2YmFySWQgPSBuYXZiYXJJZDtcclxuICAgICAgICAkc2NvcGUubWVudV9zZXJ2aWNlLnNldEN1cnJlbnROYXZiYXJJZChuYXZiYXJJZCxsYW5nKTtcclxuICAgICAgIFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgICAgXHJcbiAgICAgLy9nZW5lcmF0ZSBjaGlsZHJlbiBuYXZiYXIgcmlnaHRcclxuICAgICAgICAgICAgICBcclxuICAgICAkc2NvcGUuY2hlY2tJZkxhc3QgPSBmdW5jdGlvbigpIHtcclxuICAgICBcclxuICAgICAgdmFyIHJ2YWw9dHJ1ZTtcclxuICAgICAvLyBpZiAoJHNjb3BlLm1lbnVfc2VydmljZS5uYXZiYXJJdGVtcyAhPSB1bmRlZmluZWQpIFxyXG4gICAgICAgICAgZm9yICh2YXIgaT0kc2NvcGUuY3VycmVudEVkaXROYXZiYXJJbmRleCsxOyBpPCRzY29wZS5tZW51X3NlcnZpY2U/Lm5hdmJhckl0ZW1zPy5sZW5ndGggO2krKylcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICBpZiAoJHNjb3BlLm1lbnVfc2VydmljZS5uYXZiYXJJdGVtc1skc2NvcGUuY3VycmVudEVkaXROYXZiYXJJbmRleF0uc19tZW51c19NZW51UG9zaXRpb24uaWQ9PSRzY29wZS5tZW51X3NlcnZpY2UubmF2YmFySXRlbXNbaV0uc19tZW51c19NZW51UG9zaXRpb24uaWQpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBydmFsPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgcmV0dXJuIHJ2YWw7XHJcbiAgICAgXHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICAgJHNjb3BlLmNoZWNrSWZGaXJzdCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgIFxyXG4gICAgICB2YXIgcnZhbD10cnVlO1xyXG4gICAgICBpZiAoJHNjb3BlLmN1cnJlbnRFZGl0TmF2YmFySW5kZXg9PTApIHJldHVybiBydmFsO1xyXG4gICAgICBmb3IgKHZhciBpPSRzY29wZS5jdXJyZW50RWRpdE5hdmJhckluZGV4LTE7aT49MDtpLS0pXHJcbiAgICAgIHtcclxuICAgICAgIGlmICgkc2NvcGUubWVudV9zZXJ2aWNlLm5hdmJhckl0ZW1zWyRzY29wZS5jdXJyZW50RWRpdE5hdmJhckluZGV4XS5zX21lbnVzX01lbnVQb3NpdGlvbi5pZD09JHNjb3BlLm1lbnVfc2VydmljZS5uYXZiYXJJdGVtc1tpXS5zX21lbnVzX01lbnVQb3NpdGlvbi5pZClcclxuICAgICAgICB7XHJcbiAgICAgICAgICBydmFsPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgIHJldHVybiBydmFsO1xyXG4gICAgIFxyXG4gICAgfTtcclxuICAgICAgXHJcbiAgICAkc2NvcGUubW92ZU5hdmJhckxlZnQgPSBmdW5jdGlvbigpIHtcclxuICAgICBcclxuICAgICAgdmFyIGVsZW1lbnQxID0gICRzY29wZS5tZW51X3NlcnZpY2UubmF2YmFySXRlbXNbJHNjb3BlLmN1cnJlbnRFZGl0TmF2YmFySW5kZXhdO1xyXG4gICAgICB2YXIgbmV3SW5kZXg9JHNjb3BlLmN1cnJlbnRFZGl0TmF2YmFySW5kZXgtMTtcclxuICAgICAgd2hpbGUgKCRzY29wZS5tZW51X3NlcnZpY2UubmF2YmFySXRlbXNbJHNjb3BlLmN1cnJlbnRFZGl0TmF2YmFySW5kZXhdLnNfbWVudXNfTWVudVBvc2l0aW9uLmlkIT0kc2NvcGUubWVudV9zZXJ2aWNlLm5hdmJhckl0ZW1zW25ld0luZGV4XS5zX21lbnVzX01lbnVQb3NpdGlvbi5pZCAmJiBuZXdJbmRleD4wKVxyXG4gICAgICB7XHJcbiAgICAgICAgbmV3SW5kZXg9bmV3SW5kZXgtMTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgJHNjb3BlLm1lbnVfc2VydmljZS5uYXZiYXJJdGVtcy5zcGxpY2UoJHNjb3BlLmN1cnJlbnRFZGl0TmF2YmFySW5kZXgsIDEpO1xyXG4gICAgICAkc2NvcGUubWVudV9zZXJ2aWNlLm5hdmJhckl0ZW1zLnNwbGljZShuZXdJbmRleCwgMCwgZWxlbWVudDEpO1xyXG4gICAgICAkc2NvcGUuY3VycmVudEVkaXROYXZiYXJJbmRleCA9IG5ld0luZGV4O1xyXG4gICAgIFxyXG4gICAgfTtcclxuICAgICRzY29wZS5tb3ZlTmF2YmFyUmlnaHQgPSBmdW5jdGlvbigpIHtcclxuICAgICBcclxuICAgICAgdmFyIGVsZW1lbnQyID0gICRzY29wZS5tZW51X3NlcnZpY2UubmF2YmFySXRlbXNbJHNjb3BlLmN1cnJlbnRFZGl0TmF2YmFySW5kZXhdO1xyXG4gICAgICB2YXIgbmV3SW5kZXg9JHNjb3BlLmN1cnJlbnRFZGl0TmF2YmFySW5kZXgrMTtcclxuICAgICAgd2hpbGUgKCRzY29wZS5tZW51X3NlcnZpY2UubmF2YmFySXRlbXNbJHNjb3BlLmN1cnJlbnRFZGl0TmF2YmFySW5kZXhdLnNfbWVudXNfTWVudVBvc2l0aW9uLmlkIT0kc2NvcGUubWVudV9zZXJ2aWNlLm5hdmJhckl0ZW1zW25ld0luZGV4XS5zX21lbnVzX01lbnVQb3NpdGlvbi5pZCAmJiBuZXdJbmRleDwkc2NvcGUubWVudV9zZXJ2aWNlLm5hdmJhckl0ZW1zLmxlbmd0aC0xKVxyXG4gICAgICB7XHJcbiAgICAgICAgbmV3SW5kZXg9bmV3SW5kZXgrMTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgJHNjb3BlLm1lbnVfc2VydmljZS5uYXZiYXJJdGVtcy5zcGxpY2UoJHNjb3BlLmN1cnJlbnRFZGl0TmF2YmFySW5kZXgsIDEpO1xyXG4gICAgICAkc2NvcGUubWVudV9zZXJ2aWNlLm5hdmJhckl0ZW1zLnNwbGljZShuZXdJbmRleCwgMCwgZWxlbWVudDIpO1xyXG4gICAgICAkc2NvcGUuY3VycmVudEVkaXROYXZiYXJJbmRleCA9IG5ld0luZGV4O1xyXG4gICAgfTtcclxuICAgIFxyXG4gICAgICAkc2NvcGUuc2V0TmF2YmFyQWN0aXZlID0gZnVuY3Rpb24obmF2YmFySWQpIHtcclxuICAgICAgaWYgKCRzY29wZS5uYXZiYXJMb2FkZWQpXHJcbiAgICAgIHtcclxuICAgICAgXHJcbiAgICAgIHJldHVybiBuYXZiYXJJZD09JHNjb3BlLmN1cnJlbnROYXZiYXJJZCA/IFwiYWN0aXZlXCIgOiBcIlwiO1xyXG4gICAgICB9ZWxzZSAkc2NvcGUuc2V0TmF2YmFyQWN0aXZlKG5hdmJhcklkKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgICAgJHNjb3BlLm5ld05hdmJhciA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgJHNjb3BlLmN1cnJlbnRFZGl0TmF2YmFySWQgPSAwO1xyXG4gICAgICAgICAgICRzY29wZS5tZW51X3NlcnZpY2UubmV3TmF2YmFyKGxhbmcsJ25hdmJhcicpO1xyXG4gICAgICAgfTsgICAgICAgICAgICBcclxuICAgIFxyXG4gICAgICAgICRzY29wZS5uZXdDaGlsZE5hdmJhciA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgJHNjb3BlLmN1cnJlbnRFZGl0TmF2YmFySWQgPSAwO1xyXG4gICAgICAgICAgICRzY29wZS5tZW51X3NlcnZpY2UubmV3TmF2YmFyKGxhbmcsJ25hdmJhcnJpZ2h0YycpO1xyXG4gICAgICAgfTsgXHJcbiAgICBcclxuICAgICRzY29wZS5hY3RpdmVMaW5rRWRpdE5hdmJhciA9IGZ1bmN0aW9uKG5hdmJhcikge1xyXG4gICAgICAkc2NvcGUubmF2YmFyRWRpdCA9IG51bGw7XHJcbiAgICAgIGlmICgkc2NvcGUubmF2YmFyTG9hZGVkKVxyXG4gICAgICB7XHJcbiAgICAgIGlmICgkc2NvcGUuY3VycmVudEVkaXROYXZiYXJJZCE9dW5kZWZpbmVkICYmICRzY29wZS5jdXJyZW50RWRpdE5hdmJhcklkIT1udWxsKVxyXG4gICAgICB7XHJcbiAgICAgICAgJHNjb3BlLm5hdmJhckVkaXQgPSAkc2NvcGUuY3VycmVudEVkaXROYXZiYXJJZDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbmF2YmFyPT0kc2NvcGUubmF2YmFyRWRpdCA/IFwiYWN0aXZlXCIgOiBcIlwiO1xyXG4gICAgICB9ZWxzZSAkc2NvcGUuYWN0aXZlTGlua0VkaXROYXZiYXIobmF2YmFyKTtcclxuICAgIH07XHJcbiAgICBcclxuICAgICAgICAkc2NvcGUuc2F2ZU5hdmJhck9yZGVyID0gZnVuY3Rpb24oKVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm1lbnVfc2VydmljZS5zYXZlTWVudU9yZGVyKGxhbmcsMCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfTsgXHJcbiAgICBcclxuICAgICRzY29wZS5nb3RvU3RhdGU9ZnVuY3Rpb24obmFtZSxwYXJhbXMpXHJcbiAgICB7XHJcbiAgICAgICRzdGF0ZS5nbyhuYW1lLHtuYXZiYXJJZDogcGFyYW1zfSk7XHJcbiAgICAgIFxyXG4gICAgfTtcclxuXHJcbn1cclxuXHJcbm5hdmJhckN0cmwuJGluamVjdCA9IFsnJHNjb3BlJywgJyRyb290U2NvcGUnLCckc3RhdGUnLCdSZXNvdXJjZXNEYXRhU2VydmljZScsJ0NvZGVzU2VydmljZScsJ01lbnVTZXJ2aWNlJywnJHN0YXRlUGFyYW1zJywnJGNvb2tpZXMnLCckdGltZW91dCcsJ01lc3NhZ2luZ1NlcnZpY2UnXTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtZW51Q3RybCgkc2NvcGUsJHJvb3RTY29wZSwkc3RhdGUsQ29kZXNTZXJ2aWNlLE1lbnVTZXJ2aWNlLCRzdGF0ZVBhcmFtcywkY29va2llcyxNZXNzYWdpbmdTZXJ2aWNlKVxyXG57XHJcbiBcclxuICAgICAgICAkc2NvcGUuQ1RSTD0nbWVudUN0cmwnO1xyXG4gICAgICAgICRzY29wZS5tZW51X3NlcnZpY2UgPSBNZW51U2VydmljZTtcclxuICAgICAgICAkc2NvcGUubWVudXM9e2N1cnJlbnRTaWRlTWVudUlkIDogJHN0YXRlUGFyYW1zLnNpZGVtZW51X2lkfTtcclxuICAgICAgICB2YXIgbGFuZyA9ICAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAkc2NvcGUuYWN0aXZlTGlua1NpZGVtZW51ID0gZnVuY3Rpb24obikge1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgcmV0dXJuICgkc3RhdGUuY3VycmVudC5uYW1lLmluZGV4T2Yobik+PTAgPyBcImFjdGl2ZVwiIDogXCJcIik7XHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICAkc2NvcGUuc2V0U2lkZU1lbnUgPSBmdW5jdGlvbihtZW51SWQpIHtcclxuICAgICAgIFxyXG4gICAgICAgICRzY29wZS5tZW51X3NlcnZpY2Uuc2V0U2VsZWN0ZWRTaWRlbWVudShtZW51SWQpIDtcclxuICAgICAgICAkc2NvcGUubWVudXMuY3VycmVudFNpZGVNZW51SWQ9bWVudUlkO1xyXG4gICAgICB9O1xyXG4gICAgICBcclxuXHJcbiAgICAgIC8vR0VUIHNpZGUgbWVudSBkZWZpbml0aW9uIGRldGFpbHNcclxuICAgICAgJHNjb3BlLmdldFNpZGVNZW51RGV0YWlscyA9IGZ1bmN0aW9uKHNpZGVtZW51SWQsaW5kZXgpIHtcclxuICAgICAgICRzY29wZS5jdXJyZW50RWRpdFNpZGVNZW51SW5kZXg9aW5kZXg7XHJcbiAgICAgICAkc2NvcGUuY3VycmVudEVkaXRTaWRlTWVudUlkID0gc2lkZW1lbnVJZDtcclxuICAgICAgICRzY29wZS5zZXRTaWRlTWVudShzaWRlbWVudUlkKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgJHNjb3BlLm1vdmVNZW51VXAgPSBmdW5jdGlvbigpIHtcclxuICAgICAgIFxyXG4gICAgICAgIHZhciBlbGVtZW50ID0gJHNjb3BlLm1lbnVfc2VydmljZS5zZWxlY3RlZE5hdmJhci5TaWRlTWVudXNbICRzY29wZS5jdXJyZW50RWRpdFNpZGVNZW51SW5kZXhdO1xyXG4gICAgICAgICRzY29wZS5tZW51X3NlcnZpY2Uuc2VsZWN0ZWROYXZiYXIuU2lkZU1lbnVzLnNwbGljZSggJHNjb3BlLmN1cnJlbnRFZGl0U2lkZU1lbnVJbmRleCwgMSk7XHJcbiAgICAgICAgJHNjb3BlLm1lbnVfc2VydmljZS5zZWxlY3RlZE5hdmJhci5TaWRlTWVudXMuc3BsaWNlKCAkc2NvcGUuY3VycmVudEVkaXRTaWRlTWVudUluZGV4LTEsIDAsIGVsZW1lbnQpO1xyXG4gICAgICAgJHNjb3BlLmN1cnJlbnRFZGl0U2lkZU1lbnVJbmRleC0tO1xyXG4gICAgICB9XHJcbiAgICAgICRzY29wZS5tb3ZlTWVudURvd24gPSBmdW5jdGlvbigpIHtcclxuICAgICAgIFxyXG4gICAgICAgIHZhciBlbGVtZW50ID0gJHNjb3BlLm1lbnVfc2VydmljZS5zZWxlY3RlZE5hdmJhci5TaWRlTWVudXNbICRzY29wZS5jdXJyZW50RWRpdFNpZGVNZW51SW5kZXhdO1xyXG4gICAgICAgICRzY29wZS5tZW51X3NlcnZpY2Uuc2VsZWN0ZWROYXZiYXIuU2lkZU1lbnVzLnNwbGljZSggJHNjb3BlLmN1cnJlbnRFZGl0U2lkZU1lbnVJbmRleCwgMSk7XHJcbiAgICAgICAgJHNjb3BlLm1lbnVfc2VydmljZS5zZWxlY3RlZE5hdmJhci5TaWRlTWVudXMuc3BsaWNlKCAkc2NvcGUuY3VycmVudEVkaXRTaWRlTWVudUluZGV4KzEsIDAsIGVsZW1lbnQpO1xyXG4gICAgICAgJHNjb3BlLmN1cnJlbnRFZGl0U2lkZU1lbnVJbmRleCsrO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAgICAkc2NvcGUubmV3U2lkZU1lbnUgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgJHNjb3BlLmN1cnJlbnRFZGl0U2lkZU1lbnVJZCA9IDA7XHJcbiAgICAgICAgICAgICAkc2NvcGUubWVudV9zZXJ2aWNlLm5ld1NpZGVNZW51KGxhbmcpO1xyXG4gICAgICAgICB9OyBcclxuICAgICAgIFxyXG4gICAgICAgJHNjb3BlLnNhdmVNZW51T3JkZXIgPSBmdW5jdGlvbigpXHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5tZW51X3NlcnZpY2Uuc2F2ZU1lbnVPcmRlcihsYW5nLDEpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5tZW51X3NlcnZpY2Uuc2V0U2lkZW1lbnVPcmRlcihsYW5nKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgXHJcbiAgICAgICAkc2NvcGUuYWN0aXZlTGlua1NpZGVCeU1lbnVJZCA9IGZ1bmN0aW9uKG1lbnVJdGVtKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgcmV0dXJuICgkc2NvcGUubWVudXMuY3VycmVudFNpZGVNZW51SWQ9PW1lbnVJdGVtLnNfbWVudXNfaWQgPyB0cnVlIDogZmFsc2UpO1xyXG4gICAgICAgICBcclxuICAgICAgfTtcclxuICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICRzY29wZS5hY3RpdmVMaW5rU2lkZUVkaXRCeVBhcmFtcyA9IGZ1bmN0aW9uKHBhcmFtcyxtZW51SXRlbSkge1xyXG4gICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICByZXR1cm4gKCRzY29wZS5jdXJyZW50RWRpdFNpZGVNZW51SWQ9PW1lbnVJdGVtLnNfbWVudXNfaWQgPyB0cnVlIDogZmFsc2UpO1xyXG4gICAgICBcclxuICAgICAgICAgXHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgICAgaWYgKCRzY29wZS5zaWRlTWVudUlkIT11bmRlZmluZWQgJiYgJHNjb3BlLnNpZGVNZW51SWQhPVwiXCIgJiYgJHNjb3BlLnNpZGVNZW51SWQhPW51bGwpXHJcbiAgICAgIHtcclxuICAgICAgICAkc2NvcGUuc2V0U2lkZU1lbnUoJHNjb3BlLnNpZGVNZW51SWQpO1xyXG4gICAgICB9XHJcblxyXG5cclxuIH1cclxuIFxyXG4gbWVudUN0cmwuJGluamVjdCA9IFsnJHNjb3BlJywgJyRyb290U2NvcGUnLCckc3RhdGUnLCdDb2Rlc1NlcnZpY2UnLCdNZW51U2VydmljZScsJyRzdGF0ZVBhcmFtcycsJyRjb29raWVzJywnTWVzc2FnaW5nU2VydmljZSddO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHRvb2xib3hDdHJsICgkc2NvcGUsR3JpZHN0ZXJTZXJ2aWNlKSB7XHJcbiAgICAgICAgICRzY29wZS5DVFJMPSd0b29sYm94Q3RybCc7XHJcbiAgICAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2U7XHJcbn1cclxudG9vbGJveEN0cmwuJGluamVjdCA9Wyckc2NvcGUnLCdHcmlkc3RlclNlcnZpY2UnXTtcclxuZXhwb3J0IGZ1bmN0aW9uIHRhc2tUb29sYm94Q3RybCAoJHNjb3BlLEdyaWRzdGVyU2VydmljZSkge1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5DVFJMPSd0YXNrVG9vbGJveEN0cmwnO1xyXG4gICAgICAgICRzY29wZS5nc3J2YyA9IEdyaWRzdGVyU2VydmljZTtcclxuICAgICAgIFxyXG59XHJcbnRhc2tUb29sYm94Q3RybC4kaW5qZWN0ID0gWyckc2NvcGUnLCdHcmlkc3RlclNlcnZpY2UnXTsgICBcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzaWdudXBDdHJsKCRzY29wZSwkaHR0cCwkcm9vdFNjb3BlLCRzdGF0ZSwkdGltZW91dCx2Y1JlY2FwdGNoYVNlcnZpY2UsUmVzdEFwaVNlcnZpY2UpIHtcclxuICAgICAgICBcclxuICAgICAgICRzY29wZS5DVFJMPSdzaWdudXBDdHJsJztcclxuICAgICAgICRyb290U2NvcGUuaGVhZFRpdGxlID1cIkthdGFseW8gfCBTaWduIHVwXCI7XHJcbiAgICAgICAkc2NvcGUuc2lnbnVwU3VjY2VzcyA9IGZhbHNlO1xyXG4gICAgICAgJHNjb3BlLmhpZGVFcnJvcj1cIlwiO1xyXG4gICAgICAgdmFyIHdpZGdldElkO1xyXG4gICAgICAgICAkc2NvcGUuc2lnbnVwID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8gdmFyIGxhbmd1YWdlID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgLy9pZiAobGFuZ3VhZ2UgPT0gdW5kZWZpbmVkKSBsYW5ndWFnZT1cImVuLUdCXCI7XHJcbiAgICAgICAgICAgdmFyIGxhbmd1YWdlID0gXCJlbi1HQlwiO1xyXG4gICAgICAgICAgICRzY29wZS5kYXRhTG9hZGluZz10cnVlO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICBsZXQgdXJsID0gJy4uL2FwaS9zaWdudXAvJztcclxuICAgICAgICAgICAgICAgIFJlc3RBcGlTZXJ2aWNlLnBvc3QodXJsLHsnZW1haWwnOiRzY29wZS5lbWFpbCwnY2FwdGNoYVJlc3BvbnNlJzokc2NvcGUuY2FwdGNoYVJlc3BvbnNlfSkudGhlbihcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNpZ251cFN1Y2Nlc3MgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2lnbnVwU3VjY2VzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lcnJvck1zZz0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2Y1JlY2FwdGNoYVNlcnZpY2UucmVsb2FkKHdpZGdldElkKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmNoZWNraW5nU2lnbnVwPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zaWdudXBDaGVja0RvbmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5kYXRhTG9hZGluZz1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9LGVycm9yPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhdGFMb2FkaW5nPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zaWdudXBTdWNjZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmVycm9yTXNnPWVycm9yO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZjUmVjYXB0Y2hhU2VydmljZS5yZWxvYWQod2lkZ2V0SWQpOyAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSk7IFxyXG4gICAgXHJcbiAgICAgICAgIH07XHJcblxyXG4gICAgICAgICBcclxuICAgICAgICAgICRzY29wZS4gb25XaWRnZXRDcmVhdGUgPSBmdW5jdGlvbihfd2lkZ2V0SWQpe1xyXG4gICAgICAgICAgICAgICAgd2lkZ2V0SWQgPSBfd2lkZ2V0SWQ7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICRzY29wZS5oaWRlRXJyb3IgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAkc2NvcGUuZXJyb3JNc2c9XCJcIjtcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBcclxuICAgIH1cclxuXHJcbiBzaWdudXBDdHJsLiRpbmplY3QgPSAgIFsnJHNjb3BlJywnJGh0dHAnLCAnJHJvb3RTY29wZScsJyRzdGF0ZScsJyR0aW1lb3V0JywndmNSZWNhcHRjaGFTZXJ2aWNlJywnUmVzdEFwaVNlcnZpY2UnXTtcclxuIFxyXG4gXHJcbiBcclxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQ3RybCgkc2NvcGUsJGNvb2tpZXMsICRsb2NhdGlvbiwgJGh0dHAsJHJvb3RTY29wZSwkdGltZW91dCwkc3RhdGUsJHN0YXRlUGFyYW1zLEF1dGhlbnRpY2F0aW9uU2VydmljZSxSZXN0QXBpU2VydmljZSxNZW51U2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLkNUUkxOQU1FPSdyZWdpc3RlckN0cmwnO1xyXG4gICAgICAgICRyb290U2NvcGUuaGVhZFRpdGxlID1cIkthdGFseW8gfCBSZWdpc3RlciB8IE9uYm9hcmRpbmdcIjtcclxuICAgICAgICBcclxuICAgICAgICAvL2dldCBkYXRhIGZyb20gaGFzaCBhbmQgZW1haWxcclxuICAgICAgICAkc2NvcGUuc2lnbnVwa2V5PSRzdGF0ZVBhcmFtcy5zaWdudXBpZDtcclxuICAgICAgICAkc2NvcGUuSW52YWxpZFJlcXVlc3Q9ZmFsc2U7XHJcbiAgICAgICAgJHNjb3BlLmNoZWNraW5nU2lnbnVwPXRydWU7XHJcbiAgICAgICAgJHNjb3BlLnNpZ251cE9LPWZhbHNlO1xyXG4gICAgICAgICRzY29wZS5zaWdudXBDaGVja0RvbmU9ZmFsc2U7XHJcbiAgICAgICAgJHNjb3BlLmNoZWNraW5nRU9TQWNjb3VudCA9IGZhbHNlO1xyXG4gICAgICAgICRzY29wZS5yZWdpc3Rlcj17fTtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgcGFyYW1zID0gJHN0YXRlUGFyYW1zXHJcbiAgICAgICAgcGFyYW1zLmVudj11bmRlZmluZWRcclxuXHJcbiAgICAgICAgQXV0aGVudGljYXRpb25TZXJ2aWNlLkNsZWFyQ3JlZGVudGlhbHMoKVxyXG5cclxuICAgICAgICAkc2NvcGUucmVnaXN0ZXIub3JnYW5pc2F0aW9uX3R5cGU9XCJQZXJzb25hbFwiO1xyXG4gICAgICAgICRzY29wZS5yZWdpc3Rlci5zaWdudXBfa2V5PSRzY29wZS5zaWdudXBrZXk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdmFyIHdlYWtSZWd1bGFyRXhwID0gbmV3IFJlZ0V4cChcIl4oPz0uKlthLXpdKXwoPz0uKltBLVpdKXwoPz0uKlswLTldKXwoPz0uKlshQCNcXCQlXFxeJlxcKlxcXCJcXChcXClcXD1cXD9cXCtcXCc8Pjs6LFxcLVxcLl8vXFxcXFxcXFxdKSg/PS57OCx9KVwiKTsgICBcclxuICAgICAgICB2YXIgbWlkUmVndWxhckV4cCA9IG5ldyBSZWdFeHAoXCJeKCg/PS4qW2Etel0pKD89LipbQS1aXSkpfCgoPz0uKlthLXpdKSg/PS4qWzAtOV0pKSg/PS4qWyFAI1xcJCVcXF4mXFwqXFxcIlxcKFxcKVxcPVxcP1xcK1xcJzw+OzosXFwtXFwuXy9cXFxcXFxcXF0pKD89Lns4LH0pXCIpOyAgICAgICAgICAgXHJcbiAgICAgICAgdmFyIHN0cm9uZ1JlZ3VsYXJFeHAgPSBuZXcgUmVnRXhwKFwiXig/PS4qW2Etel0pKD89LipbQS1aXSkoPz0uKlswLTldKSg/PS4qWyFAI1xcJCVcXF4mXFwqXFxcIlxcKFxcKVxcPVxcP1xcK1xcJzw+OzosXFwtXFwuXy9cXFxcXFxcXF0pKD89Lns4LH0pXCIpOyAgXHJcbiAgICAgICBcclxuICAgICAgICAkc2NvcGUuY2hlY2tQYXNzd29yZCA9IGZ1bmN0aW9uKGVsZW1lbnQpXHJcbiAgICAgICAgeyAgXHJcbiAgICAgICAgICBpZiAoIXN0cm9uZ1JlZ3VsYXJFeHAudGVzdChlbGVtZW50LiRtb2RlbFZhbHVlKSkgZWxlbWVudC4kc2V0VmFsaWRpdHkoXCJyZXF1aXJlZFwiLGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICBcclxuXHQgICBcclxuICAgICAgICAkc2NvcGUuY2hlY2tTaWdudXAgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICBsZXQgdXJsID0gJy4uL2FwaS9jaGVjay1zaWdudXAvJztcclxuICAgICAgICAgICAgUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwseydzaWdudXBrZXknOiRzY29wZS5zaWdudXBrZXl9KVxyXG5cdFx0XHQudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zaWdudXBPSyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jaGVja2luZ1NpZ251cD1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNpZ251cENoZWNrRG9uZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgfSkgIFxyXG4gICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zaWdudXBPSyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY2hlY2tpbmdTaWdudXA9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zaWdudXBDaGVja0RvbmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuSW52YWxpZFJlcXVlc3QgPSB0cnVlOyAgXHJcblx0XHQgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhKSAgJHNjb3BlLmVycm9yTXNnID0gcmVzcG9uc2UuZGF0YSAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pICBcclxuICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgIH0sKGVycm9yKSA9PiB7XHJcblx0XHRcdCR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNpZ251cE9LID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmNoZWNraW5nU2lnbnVwPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zaWdudXBDaGVja0RvbmUgPSB0cnVlO1xyXG5cdFx0XHR9KVxyXG5cdCAgICAgICB9KVxyXG5cdFx0XHRcclxuXHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUuZm5fcmVnaXN0ZXIgPSBmdW5jdGlvbih2YWxpZCl7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICghdmFsaWQpIHJldHVyblxyXG5cclxuICAgICAgICAgICAgICAgICRzY29wZS5kYXRhTG9hZGluZyA9IHRydWVcclxuICAgICAgICAgICAgICAgIGxldCB1cmwgPSAnLi4vYXBpL3JlZ2lzdGVyLyc7XHJcbiAgICAgICAgICAgICAgICBSZXN0QXBpU2VydmljZS5wb3N0KHVybCwkc2NvcGUucmVnaXN0ZXIpLnRoZW4ocmVzcG9uc2UgPT57XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8kdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkgeyAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlXHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0IC8vc2V0IHVzZXIgaW5mb1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIgPSByZXNwb25zZS5kYXRhLmRhdGFcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFwiZW52aXJvbm1lbnRcIiwgJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLnVlcC5kZWZhdWx0ZW52ICApXHJcblx0XHRcdFx0XHRcdFx0XHRcdC8vJGxvY2F0aW9uLnNlYXJjaCh7J2Vudic6ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci51ZXAuZGVmYXVsdGVudiB9KVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQkc3RhdGUucGFyYW1zLmVudiA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci51ZXAuZGVmYXVsdGVudlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhdGUudHJhbnNpdGlvblRvKCRzdGF0ZS5jdXJyZW50Lm5hbWUsICRzdGF0ZS5wYXJhbXMsIHsgbm90aWZ5OiBmYWxzZSwgICBsb2NhdGlvbjoncmVwbGFjZScsIGluaGVyaXQ6dHJ1ZX0pXHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRBdXRoZW50aWNhdGlvblNlcnZpY2UuU2V0Q3JlZGVudGlhbHMocmVzcG9uc2UuZGF0YS5kYXRhLCAkc2NvcGUucmVnaXN0ZXIudXNlcm5hbWUsJHNjb3BlLnJlZ2lzdGVyLnBhc3N3b3JkKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdEF1dGhlbnRpY2F0aW9uU2VydmljZS5nZXRPcmdTY2hlbWFzKCRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlcj8ub3JnYW5pc2F0aW9uLmlkKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQudGhlbihyZXNwb25zZTIgPT4ge1x0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAocmVzcG9uc2UyLmRhdGEpIFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCRyb290U2NvcGUuZ2xvYmFscy5lbnZpcm9ubWVudHMgPSByZXNwb25zZTIuZGF0YS5yZWR1Y2UoKGFjYywgb2JqKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFjY1tvYmouaWQudG9TdHJpbmcoKV0gPSBvYmo7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBhY2M7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sIHt9KTtcdFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShyZXNwb25zZS5kYXRhLm1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhdGFMb2FkaW5nID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhdGUuZ28oXCJhcHAubmF2YmFyLmhvbWVcIiwge2VudjogJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLnVlcC5kZWZhdWx0ZW52IH0pOyAvL2dvIHRvIGhvbWUgcGFnZSAgICAgICAgICBcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQsKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZXJyb3JNc2cgPSBlcnJvci5kYXRhOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5kYXRhLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhdGFMb2FkaW5nID0gZmFsc2UgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAgLy9yZXNwb25zZSBub3QgMjAwIVxyXG5cdFx0XHRcdFx0XHRcdFx0IFxyXG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCRzY29wZS5lcnJvck1zZyA9IHJlc3BvbnNlLmRhdGE7IFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly9NZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UocmVzcG9uc2UuZGF0YSwnZXJyb3InKTsgLy9ubyBtZXNzYWdlIHdpZGdldCBoZXJlIGF2YWlsYWJsZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHNjb3BlLmRhdGFMb2FkaW5nID0gZmFsc2UgIFxyXG5cdFx0XHRcdFx0XHRcdCAgIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcclxuXHQgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cdFx0ICAgICAgLy99KTsgLy90aW1lb3V0IVxyXG5cdFx0fSk7XHJcbiBcdFx0XHQgIFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCRzY29wZS5zaWdudXBrZXk9PXVuZGVmaW5lZCB8fCAkc2NvcGUuc2lnbnVwa2V5PT1cIlwiKSB7XHJcbiAgICAgICAgICAkc2NvcGUuc2lnbnVwQ2hlY2tEb25lID0gdHJ1ZTtcclxuICAgICAgICAgICRzY29wZS5jaGVja2luZ1NpZ251cD1mYWxzZTtcclxuICAgICAgICBcclxuICAgICAgICB9ZWxzZSAkc2NvcGUuY2hlY2tTaWdudXAoKTsgXHJcblxyXG4gICAgICAgIFxyXG4gICAgXHJcblx0XHRcdFx0XHJcbiAgICAgICAkc2NvcGUuY29udmVydE1lbW9yeSA9IGZ1bmN0aW9uKHNpemVJbkJ5dGVzKXtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICB2YXIgY29udmVydGVkTWVtb3J5PXtzaXplOjAsdW5pdDonJ307XHJcbiAgICAgICAgICAgICBpZiAoc2l6ZUluQnl0ZXM9PTApXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBjb252ZXJ0ZWRNZW1vcnkuc2l6ZT1zaXplSW5CeXRlcztcclxuICAgICAgICAgICAgICBjb252ZXJ0ZWRNZW1vcnkudW5pdCA9IFwiXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoKHNpemVJbkJ5dGVzLzEwMjQpPDAuNSlcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGNvbnZlcnRlZE1lbW9yeS5zaXplPXNpemVJbkJ5dGVzO1xyXG4gICAgICAgICAgICAgIGNvbnZlcnRlZE1lbW9yeS51bml0ID0gXCJCeXRlc1wiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSBpZiAoKHNpemVJbkJ5dGVzLzEwMjQpPDEwMjQpXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgY29udmVydGVkTWVtb3J5LnNpemU9KHNpemVJbkJ5dGVzLzEwMjQpLnRvRml4ZWQoMik7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgY29udmVydGVkTWVtb3J5LnVuaXQgPVwiS0JcIjtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIGlmIChzaXplSW5CeXRlcy8xMDI0PDEwMjQqMTAyNClcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJ0ZWRNZW1vcnkuc2l6ZT0oc2l6ZUluQnl0ZXMvMTAyNC8xMDI0KS50b0ZpeGVkKDIpO1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGNvbnZlcnRlZE1lbW9yeS51bml0ID1cIk1CXCI7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJ0ZWRNZW1vcnkuc2l6ZT0oc2l6ZUluQnl0ZXMvMTAyNC8xMDI0LzEwMjQpLnRvRml4ZWQoMik7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgY29udmVydGVkTWVtb3J5LnVuaXQgPVwiR0JcIjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZE1lbW9yeTtcclxuICAgICAgICB9OyBcclxuICAgXHJcbiAgXHJcblx0JHNjb3BlLmNvbnZlcnRUaW1lID0gZnVuY3Rpb24gKHNpemVJbk1pY3JvU2VjKSB7XHJcblxyXG5cdFx0dmFyIGNvbnZlcnRlZFRpbWUgPSB7IHNpemU6IDAsIHVuaXQ6ICcnIH07XHJcblx0XHRpZiAoc2l6ZUluTWljcm9TZWMgPT0gMCkge1xyXG5cdFx0XHRjb252ZXJ0ZWRUaW1lLnNpemUgPSBzaXplSW5NaWNyb1NlYztcclxuXHRcdFx0Y29udmVydGVkVGltZS51bml0ID0gXCJcIjtcclxuXHRcdH1cclxuXHRcdGVsc2UgaWYgKChzaXplSW5NaWNyb1NlYyAvIDEwMDApIDwgMC4wMSkge1xyXG5cdFx0XHRjb252ZXJ0ZWRUaW1lLnNpemUgPSBzaXplSW5NaWNyb1NlYztcclxuXHRcdFx0Y29udmVydGVkVGltZS51bml0ID0gXCJtaWNyb3NlY1wiO1xyXG5cdFx0fVxyXG5cdFx0ZWxzZSBpZiAoKHNpemVJbk1pY3JvU2VjIC8gMTAwMCkgPCAxMDAwKSB7XHJcblx0XHRcdGNvbnZlcnRlZFRpbWUuc2l6ZSA9IChzaXplSW5NaWNyb1NlYyAvIDEwMDApLnRvRml4ZWQoMik7XHJcblx0XHRcdGNvbnZlcnRlZFRpbWUudW5pdCA9IFwibXNcIjtcclxuXHRcdH1cclxuXHRcdGVsc2UgaWYgKHNpemVJbk1pY3JvU2VjIC8gMTAwMCAvIDEwMDAgPCAxMDAwKSB7XHJcblx0XHRcdGNvbnZlcnRlZFRpbWUuc2l6ZSA9IChzaXplSW5NaWNyb1NlYyAvIDEwMDAgLyAxMDAwKS50b0ZpeGVkKDIpO1xyXG5cdFx0XHRjb252ZXJ0ZWRUaW1lLnVuaXQgPSBcInNcIjtcclxuXHRcdH1cclxuXHRcdGVsc2UgaWYgKHNpemVJbk1pY3JvU2VjIC8gMTAwMCAvIDEwMDAgLyA2MCA8IDYwKSB7XHJcblx0XHRcdGNvbnZlcnRlZFRpbWUuc2l6ZSA9IChzaXplSW5NaWNyb1NlYyAvIDEwMDAgLyAxMDAwIC8gNjApLnRvRml4ZWQoMik7XHJcblx0XHRcdGNvbnZlcnRlZFRpbWUudW5pdCA9IFwibWluXCI7XHJcblx0XHR9XHJcblx0XHRlbHNlIHtcclxuXHRcdFx0Y29udmVydGVkVGltZS5zaXplID0gKHNpemVJbk1pY3JvU2VjIC8gMTAwMCAvIDEwMDAgLyA2MCAvIDYwKS50b0ZpeGVkKDIpO1xyXG5cdFx0XHRjb252ZXJ0ZWRUaW1lLnVuaXQgPSBcImhcIjtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gY29udmVydGVkVGltZTtcclxuXHR9OyAgICBcclxuICAgICAgICAgIFxyXG59XHJcbiAgICBcclxucmVnaXN0ZXJDdHJsLiRpbmplY3QgPSBbJyRzY29wZScsJyRjb29raWVzJywgJyRsb2NhdGlvbicsICckaHR0cCcsICckcm9vdFNjb3BlJywnJHRpbWVvdXQnLCckc3RhdGUnLCckc3RhdGVQYXJhbXMnLCdBdXRoZW50aWNhdGlvblNlcnZpY2UnLCdSZXN0QXBpU2VydmljZScsJ01lbnVTZXJ2aWNlJywnTWVzc2FnaW5nU2VydmljZSddO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHVucmVnaXN0ZXJDdHJsKCRzY29wZSwkY29va2llcywgJGxvY2F0aW9uLCRodHRwLCRyb290U2NvcGUsJHRpbWVvdXQsJHN0YXRlLCRzdGF0ZVBhcmFtcyxBdXRoZW50aWNhdGlvblNlcnZpY2UsUmVzdEFwaVNlcnZpY2UsTWVudVNlcnZpY2UsTWVzc2FnaW5nU2VydmljZSkge1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5DVFJMTkFNRT0ndW5yZWdpc3RlckN0cmwnO1xyXG4gICAgICAgICRyb290U2NvcGUuaGVhZFRpdGxlID1cIkthdGFseW8gfCBVbnJlZ2lzdGVyIHwgT25ib2FyZGluZ1wiO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vZ2V0IGRhdGEgZnJvbSBoYXNoIGFuZCBlbWFpbFxyXG4gICAgICAgICRzY29wZS5zaWdudXBrZXk9JHN0YXRlUGFyYW1zLnNpZ251cGlkO1xyXG4gICAgICAgICRzY29wZS5JbnZhbGlkUmVxdWVzdD1mYWxzZTtcclxuICAgICAgICAkc2NvcGUuY2hlY2tpbmdTaWdudXA9dHJ1ZTtcclxuICAgICAgICAkc2NvcGUuc2lnbnVwT0s9ZmFsc2U7XHJcbiAgICAgICAgJHNjb3BlLnNpZ251cENoZWNrRG9uZT1mYWxzZTtcclxuICAgICAgICAkc2NvcGUuY2hlY2tpbmdFT1NBY2NvdW50ID0gZmFsc2U7XHJcbiAgICAgICAgJHNjb3BlLnJlZ2lzdGVyPXt9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBwYXJhbXMgPSAkc3RhdGVQYXJhbXNcclxuICAgICAgICBwYXJhbXMuZW52PXVuZGVmaW5lZFxyXG5cclxuICAgICAgICBBdXRoZW50aWNhdGlvblNlcnZpY2UuQ2xlYXJDcmVkZW50aWFscygpXHJcblxyXG4gICAgICAgICRzY29wZS5yZWdpc3Rlci5vcmdhbmlzYXRpb25fdHlwZT1cIlBlcnNvbmFsXCI7XHJcbiAgICAgICAgJHNjb3BlLnJlZ2lzdGVyLnNpZ251cF9rZXk9JHNjb3BlLnNpZ251cGtleTtcclxuICAgICAgICBcclxuICAgICAgICAgICBcclxuICAgICAgICAkc2NvcGUuY2hlY2tTaWdudXAgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICBsZXQgdXJsID0gJy4uL2FwaS9jaGVjay1zaWdudXAvJztcclxuICAgICAgICAgICAgUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwseydzaWdudXBrZXknOiRzY29wZS5zaWdudXBrZXksJ3R5cGUnOid1bnJlZ2lzdGVyJ30pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+e1xyXG4gICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXsgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNpZ251cE9LID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmNoZWNraW5nU2lnbnVwPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2lnbnVwQ2hlY2tEb25lID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICB9KSAgXHJcbiAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNpZ251cE9LID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jaGVja2luZ1NpZ251cD1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNpZ251cENoZWNrRG9uZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5JbnZhbGlkUmVxdWVzdCA9IHRydWU7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEpICAkc2NvcGUuZXJyb3JNc2cgPSByZXNwb25zZS5kYXRhICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgIFxyXG4gICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgfSwoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2lnbnVwT0sgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY2hlY2tpbmdTaWdudXA9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNpZ251cENoZWNrRG9uZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5nb3RvX3JlZ2lzdHJhdGlvbj0gZnVuY3Rpb24oKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAkc3RhdGUuZ28oXCJhcHAucmVnaXN0ZXJcIiwge3NpZ251cGlkOiAkc2NvcGUuc2lnbnVwa2V5IH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJHNjb3BlLmZuX3VucmVnaXN0ZXIgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5kYXRhTG9hZGluZyA9IHRydWVcclxuICAgICAgICAgICAgICAgIGxldCB1cmwgPSAnLi4vYXBpL3VucmVnaXN0ZXIvJ1xyXG4gICAgICAgICAgICAgICAgUmVzdEFwaVNlcnZpY2UucG9zdCh1cmwsJHNjb3BlLnNpZ251cGtleSkudGhlbihyZXNwb25zZSA9PntcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkgeyAvLyBpZiBzdWNjZXNzZnVsLCBiaW5kIHN1Y2Nlc3MgbWVzc2FnZSB0byBtZXNzYWdlICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhdGFMb2FkaW5nID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXRNc2cgPSByZXNwb25zZS5kYXRhOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudW5yZWdpc3Rlck9rID0gdHJ1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAvL3RpbWVvdXQhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgIC8vcmVzcG9uc2Ugbm90IDIwMCFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmVycm9yTXNnID0gcmVzcG9uc2UuZGF0YTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShyZXNwb25zZS5kYXRhLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGF0YUxvYWRpbmcgPSBmYWxzZSAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBpZiAoJHNjb3BlLnNpZ251cGtleT09dW5kZWZpbmVkIHx8ICRzY29wZS5zaWdudXBrZXk9PVwiXCIpIHtcclxuICAgICAgICAgICRzY29wZS5zaWdudXBDaGVja0RvbmUgPSB0cnVlO1xyXG4gICAgICAgICAgJHNjb3BlLmNoZWNraW5nU2lnbnVwPWZhbHNlO1xyXG4gICAgICAgIFxyXG4gICAgICAgIH1lbHNlICRzY29wZS5jaGVja1NpZ251cCgpOyBcclxuXHJcbiAgICAgICAgXHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgXHJcbn1cclxuICAgIFxyXG51bnJlZ2lzdGVyQ3RybC4kaW5qZWN0ID0gWyckc2NvcGUnLCckY29va2llcycsICckbG9jYXRpb24nLCAnJGh0dHAnLCckcm9vdFNjb3BlJywnJHRpbWVvdXQnLCckc3RhdGUnLCckc3RhdGVQYXJhbXMnLCdBdXRoZW50aWNhdGlvblNlcnZpY2UnLCdSZXN0QXBpU2VydmljZScsJ01lbnVTZXJ2aWNlJywnTWVzc2FnaW5nU2VydmljZSddO1xyXG4gXHJcbmV4cG9ydCBmdW5jdGlvbiBhcHBTZXR0aW5nc0N0cmwoJHNjb3BlLCAkcm9vdFNjb3BlLCRzdGF0ZSwkY29va2llcywkbG9jYXRpb24sS2F0YWx5b1N0YXRlTWFuYWdlcixQcm9jZXNzaW5nU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlLENvZGVzU2VydmljZSxBdXRoZW50aWNhdGlvblNlcnZpY2UsTWVudVNlcnZpY2UsUmVzb3VyY2VzRGF0YVNlcnZpY2UsVGFza0RhdGFTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSxTZXR0aW5nc1NlcnZpY2UsJHRpbWVvdXQsJHN0YXRlUGFyYW1zKXtcclxuICAgICAgICBcclxuICAgICAvL2RlYnVnZ2VyXHJcblx0XHQkc2NvcGUubmV3Z3JvdXA9e31cclxuICAgICAgICAkc2NvcGUuQ1RSTD0nYXBwU2V0dGluZ3NDdHJsJztcclxuICAgICAgICAkcm9vdFNjb3BlLmhlYWRUaXRsZSA9XCJLYXRhbHlvIHwgU2V0dGluZ3NcIjtcclxuICAgICAgICAkc2NvcGUuY3VycmVudFN0YXRlPSRzdGF0ZS5jdXJyZW50Lm5hbWU7XHJcbiAgICAgICAgJHNjb3BlLmFwcCA9IHsnbmFtZSc6Jyd9XHJcbiAgICAgICAgJHNjb3BlLmxvY2FsVmFycyA9IHt9O1xyXG5cclxuICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG5cclxuICAgICAgICAkc2NvcGUucmVzb3VyY2U9e307XHJcbiAgICAgICAgJHNjb3BlLnJlc291cmNlX3BhZ2Vfc2l6ZT0xMjtcclxuXHRcdCRzY29wZS5sb2NhbFZhcnMuc2hvd0xpc3Q9MVxyXG5cdFx0XHRcdFx0XHJcblx0XHQkc2NvcGUuYWxsX2dyb3Vwcz17fSAvLyBob2xkaW5nIGFsbCBncm91cHMgZm91bmRcclxuXHRcdCRzY29wZS5hbGxfcGFnZV9ncm91cHM9e31cclxuXHRcdCRzY29wZS5hbGxfbWVudV9ncm91cHM9e30gLy8gaG9sZGluZyBhbGwgbWVudSBncm91cHMgZm91bmRcdFx0XHRcdFx0XHJcblx0XHQkc2NvcGUuYWxsY2hlY2tlZD17fSAvLyBjaGVjayBhbGwgZ3JvdXBzIFxyXG5cdFx0JHNjb3BlLnBhZ2VEaWN0PSB7fVx0XHRcclxuXHRcdCRzY29wZS5tZW51RGljdD0ge31cdFx0XHJcblx0XHQkc2NvcGUucmVzb3VyY2VEaWN0PSB7fVxyXG5cclxuXHRcdC8vZGVmYXVsdCBpcyBwYWdlXHJcblx0XHQkc2NvcGUucmVzb3VyY2VEaWN0PSRzY29wZS5wYWdlRGljdFxyXG5cdFx0JHNjb3BlLmFsbF9ncm91cHMgPSAgJHNjb3BlLmFsbF9wYWdlX2dyb3Vwc1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5tZW51X3NlcnZpY2UgPSBNZW51U2VydmljZTtcclxuXHRcdCRzY29wZS5tZW51X3NlcnZpY2UuY2xlYXJTaWRlTWVudSgpXHJcbiAgICAgICAgbGV0IGFwcF9yZWYgPSAkbG9jYXRpb24uc2VhcmNoKCkuYXBwX3JlZiBcclxuICAgICAgICBsZXQgb3ZlciA9IGZhbHNlXHJcbiAgICAgICAgaWYgKCFhcHBfcmVmKSBvdmVyPXRydWVcclxuICAgICAgICAkc2NvcGUubWVudV9zZXJ2aWNlLmxvYWREZWZhdWx0TWVudShvdmVyKVxyXG5cdFx0XHRcclxuXHRcclxuXHRcdCRzY29wZS5zaG93ID0gZnVuY3Rpb24od2hhdCkvLyBnZXQtbWVudXMvKD9QPGxhbmc+LispLyg/UDxpdHlwZT4uKykvKD9QPGFwcElkPi4rKS8oP1A8dmVyc2lvbj4uKylcclxuXHRcdHtcclxuXHRcdFx0aWYgKHdoYXQ9PSdwYWdlJykge1xyXG5cdFx0XHQgICRzY29wZS5sb2NhbFZhcnMuc2hvd0xpc3Q9MVxyXG5cdFx0XHQgICRzY29wZS5yZXNvdXJjZURpY3QgPSAkc2NvcGUucGFnZURpY3RcclxuXHRcdFx0ICAkc2NvcGUuYWxsX2dyb3VwcyA9ICAkc2NvcGUuYWxsX3BhZ2VfZ3JvdXBzXHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmICh3aGF0PT0nYWRtaW4nKSB7XHJcblx0XHRcdCAgJHNjb3BlLmxvY2FsVmFycy5zaG93TGlzdD0yXHQgXHJcblx0XHRcdH1cclxuXHRcdFx0XHJcblx0XHRcdGlmICh3aGF0PT0nbWVudScpIHtcclxuXHRcdFx0ICAkc2NvcGUubG9jYWxWYXJzLnNob3dMaXN0PTNcclxuXHRcdFx0ICAkc2NvcGUucmVzb3VyY2VEaWN0ID0gJHNjb3BlLm1lbnVEaWN0XHJcblx0XHRcdCAgJHNjb3BlLmFsbF9ncm91cHMgPSAgJHNjb3BlLmFsbF9tZW51X2dyb3Vwc1xyXG5cdFx0XHR9IFxyXG5cdFx0fVxyXG5cdCAgXHJcblx0XHQgICAgXHJcbiAgICAgICRzY29wZS5zYXZlQXBwbGljYXRpb24gPSBmdW5jdGlvbiAoaXNGb3JtVmFsaWQpIFxyXG5cdCAge1xyXG4gICAgICAgIGxldCBhcHBfZGF0YSA9IHthcHBJZDogJHNjb3BlLmFwcC51aWQsIHR5cGU6ICdhZG1pbnMnLCBhZG1pbnM6IHt1c2VyczogJHNjb3BlLmxvY2FsVmFycy5hZG1pblVzZXJzLCBncm91cHM6ICRzY29wZS5sb2NhbFZhcnMuYWRtaW5Hcm91cHN9LCB2ZXJzaW9uOiAkc2NvcGUuYXBwLnZlcnNpb259XHJcblx0XHRpZiAoaXNGb3JtVmFsaWQpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnNhdmluZ0FwcCA9IHRydWVcclxuICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLnNhdmVBcHBsaWNhdGlvbihhcHBfZGF0YSkudGhlbihcclxuXHRcdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIHsgICAgICAgICAgICAgXHJcblx0XHRcdFx0XHRcdCRzY29wZS5zYXZpbmdBcHAgPSBmYWxzZSAgXHJcblx0XHRcdFx0XHRcdE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEubXNnLCdzdWNjZXNzJyk7XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZnVuY3Rpb24oZXJyb3Ipe1xyXG5cdFx0XHRcdFx0XHQkc2NvcGUuc2F2aW5nQXBwID0gZmFsc2VcclxuXHRcdFx0XHRcdFx0TWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuXHRcdFx0XHRcdH0pXHJcbiAgICAgICBcclxuICAgICAgICB9IGVsc2UgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdBcHAgZGVzY3JpcHRpb24gaXMgbWFuZGF0b3J5IScsJ2Vycm9yJyk7ICAgICAgICBcclxuXHJcbiAgICAgIH07XHJcblx0ICBcclxuICAgICAgXHJcblx0XHJcblx0XHQkc2NvcGUuZ2V0Q3VycmVudEVudkRhdGEgPSBmdW5jdGlvbigpe1xyXG5cdFx0XHRyZXR1cm4gJHJvb3RTY29wZT8uZ2xvYmFscz8uZW52aXJvbm1lbnRzWyRyb290U2NvcGU/Lmdsb2JhbHM/LmN1cnJlbnRFbnZdXHJcblx0XHR9XHJcblx0XHRcclxuXHRcdGlmICgkc3RhdGVQYXJhbXMuZW52KSB7XHJcblx0XHRcdHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oXCJlbnZpcm9ubWVudFwiLCAkc3RhdGVQYXJhbXMuZW52ICApXHJcblx0XHRcdCRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50RW52ID0gICRzdGF0ZVBhcmFtcy5lbnYgXHJcblx0XHR9XHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmdzcnZjPUdyaWRzdGVyU2VydmljZTtcclxuICAgICAgICAkc2NvcGUuZ3NydmMucmVzZXRCb2R5QmdDb2xvcigpIFxyXG4gICAgICAgICRzY29wZS5wYXJhbXM9e3Nob3dBcHBMaXN0OjEsc3Vic2NyaWJpbmc6ZmFsc2V9O1xyXG4gICAgICAgIGxldCB0YWI9ICRsb2NhdGlvbi5zZWFyY2goKS50YWJcclxuICAgICAgICBpZiAodGFiIT11bmRlZmluZWQpICAkc2NvcGUucGFyYW1zLnNob3dBcHBMaXN0ID0gdGFiXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgIFxyXG5cdFx0JHNjb3BlLmlucHV0Y2hhbmdlZCA9IGZ1bmN0aW9uKGl0ZW0sIGcpXHJcblx0XHR7XHJcblx0XHRcdGl0ZW1bZy5naWRdLmdpZD1nLmdpZFxyXG5cdFx0XHRpdGVtW2cuZ2lkXS5nbmFtZT1nLmduYW1lXHJcblx0XHRcdFxyXG5cdFx0fVxyXG5cdCAgXHJcblx0XHQkc2NvcGUuYWRkR3JvdXAgPSBmdW5jdGlvbihuZXdncm91cClcclxuXHRcdHtcclxuXHRcdFx0Ly8nMyc6IHsnJGNoZWNrZWQnOiBUcnVlLCAnJHJlc291cmNlaWQnOiAyMSwgJ2dpZCc6IDMsICdnbmFtZSc6ICdqb3NqZWRuYWxhbmcnXHJcblx0XHRcdCRzY29wZS5zaG93UmVzb3VyY2VMaXN0PWZhbHNlXHJcblx0XHRcdFxyXG5cdFx0XHQkc2NvcGUuYWxsX2dyb3Vwc1tuZXdncm91cC51aWRdPSAge2dpZDogbmV3Z3JvdXAudWlkLCBnbmFtZTogbmV3Z3JvdXAubmFtZX1cclxuXHRcdFx0XHJcblx0XHRcdGZvciAoY29uc3QgW2tleSwgcmVzb3VyY2VdIG9mIE9iamVjdC5lbnRyaWVzKCRzY29wZS5yZXNvdXJjZURpY3QpKSB7XHJcblx0XHRcdFx0XHRpZiAodHlwZW9mIHJlc291cmNlID09PSAnb2JqZWN0JyAmJiByZXNvdXJjZSAhPT0gbnVsbCkge1xyXG5cdFx0XHRcdFx0XHRyZXNvdXJjZVtuZXdncm91cC51aWRdPSB7ICckY2hlY2tlZCc6IG51bGwsICdnaWQnOiBuZXdncm91cC51aWQsICdnbmFtZSc6IG5ld2dyb3VwLm5hbWUgfVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdCAkdGltZW91dChmdW5jdGlvbigpeyRzY29wZS5zaG93UmVzb3VyY2VMaXN0PXRydWUgfSlcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0XHJcbiAgICAgICAgJHNjb3BlLmdldEFwcHMgPSBmdW5jdGlvbigpLy8gVVNFRFxyXG4gICAgICAgIHtcclxuXHRcdFx0Ly9kZWJ1Z2dlclxyXG4gICAgICAgICAgJHNjb3BlLmFwcExpc3RMb2FkaW5nPXRydWU7XHJcbiAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5HZXRSZXNvdXJjZVN1YnNjcmlwdGlvbnMoJ2FwcGxpY2F0aW9uJykudGhlbihmdW5jdGlvbiAoZGF0YSkgeyAgICAgICBcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmFwcExpc3RMb2FkaW5nPWZhbHNlOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5hcHBMaXN0ID1kYXRhLmRhdGE7XHJcbiAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmFwcExpc3RMb2FkaW5nPWZhbHNlOyBcclxuICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmdldE15QXBwcyA9IGZ1bmN0aW9uKClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLkdldFJlc291cmNlU3Vic2NyaXB0aW9ucygnYXBwbGljYXRpb24nKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7ICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuYXBwTGlzdCA9ZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUuZ2V0VW5zdWJzY3JpYmVkQXBwc0ZpbHRlcmVkID0gZnVuY3Rpb24oc3RhcnQsZW5kKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UmVzb3VyY2VTdWJzY3JpcHRpb25zKCdhcHBsaWNhdGlvbicpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHsgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuYXBwTGlzdCA9ZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuIFxyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5nZXRBcHBzKCk7XHJcblx0XHQkc2NvcGUuc2hvd1Jlc291cmNlTGlzdCA9IGZhbHNlXHJcblxyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5maW5kTGluayA9IGZ1bmN0aW9uIChsaW5rX3R5cGUsYXBwKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpPTA7aTxhcHAuUmVzb3VyY2VFeHRlbmRlZC5sZW5ndGg7aSsrKSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXBwLlJlc291cmNlRXh0ZW5kZWRbaV0uTGlua1R5cGU9PWxpbmtfdHlwZSkgcmV0dXJuIGFwcC5SZXNvdXJjZUV4dGVuZGVkW2ldLlJlc291cmNlMjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJHNjb3BlLmZpbmRMaW5rQWxsID0gZnVuY3Rpb24gKGxpbmtfdHlwZSxhcHApIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGk9MDtpPGFwcC5SZXNvdXJjZUV4dGVuZGVkLmxlbmd0aDtpKyspICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcHAuUmVzb3VyY2VFeHRlbmRlZFtpXS5MaW5rVHlwZT09bGlua190eXBlKSByZXR1cm4gYXBwLlJlc291cmNlRXh0ZW5kZWRbaV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgIFxyXG4gICAgXHJcblxyXG4gICAgICAgICRzY29wZS5nZXRBcHBsaWNhdGlvbnMgPSBmdW5jdGlvbihwYWdlTnVtYmVyLHBhZ2VTaXplKXsgXHJcblx0XHRcclxuICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZV9wYWdlX3NpemUgPSBwYWdlU2l6ZTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZUxvYWRpbmc9dHJ1ZTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB2YXIgZmlsdGVyPSRzY29wZS5yZXNvdXJjZTtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUudG90YWxDb3VudD4wKXtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5jZWlsKCRzY29wZS50b3RhbENvdW50L3BhZ2VTaXplKTxuZXdQYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXdQYWdlID0gTWF0aC5jZWlsKCRzY29wZS50b3RhbENvdW50L3BhZ2VTaXplKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldEFwcHNGaWx0ZXJlZEJ5U3ViU3RhdHVzKHBhZ2VOdW1iZXIscGFnZVNpemUsZmlsdGVyLHN1Yl9zdGF0dXMsbGFuZykudGhlbihcclxuXHRcdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmlyc3RRdWVyeT10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5hcHBMaXN0VW5zdWJzY3JpYmVkID0gZGF0YS5kYXRhLnJlc3VsdHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm5leHRQYWdlID0gZGF0YS5kYXRhLm5leHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnByZXZpb3VzUGFnZSA9IGRhdGEuZGF0YS5wcmV2aW91cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudG90YWxJdGVtQ291bnQ9ZGF0YS5kYXRhLmNvdW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jdXJyZW50UGFnZT1wYWdlTnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5udW1iZXJPZlBhZ2VzID0gTWF0aC5jZWlsKCRzY29wZS50b3RhbEl0ZW1Db3VudC9wYWdlU2l6ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgkc2NvcGUudG90YWxJdGVtQ291bnQ8PXBhZ2VTaXplICYmICRzY29wZS5yZXNvdXJjZURhdGEubGVuZ3RoPjApIHx8ICRzY29wZS50b3RhbEl0ZW1Db3VudD09MCkgJHNjb3BlLmhpZGVCdG5Nb3JlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlICRzY29wZS5oaWRlQnRuTW9yZT1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VMb2FkaW5nPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZUxvYWRpbmc9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfTtcclxuXHRcdFxyXG5cdFx0XHJcbiAgICAgICAgJHNjb3BlLmxvYWRNb3JlQXBwbGljYXRpb25zID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZV9wYWdlX3NpemUgPSAkc2NvcGUucmVzb3VyY2VfcGFnZV9zaXplKzEyO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmdldEFwcGxpY2F0aW9ucygxLCRzY29wZS5yZXNvdXJjZV9wYWdlX3NpemUpOyAgICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5nZXRSZXNvdXJjZURlZiA9IGZ1bmN0aW9uKHBhZ2VOdW1iZXIscGFnZVNpemUpe1xyXG4gICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZV9wYWdlX3NpemUgPSBwYWdlU2l6ZTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZUxvYWRpbmc9dHJ1ZTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB2YXIgZmlsdGVyPSRzY29wZS5yZXNvdXJjZTtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUudG90YWxDb3VudD4wKXtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5jZWlsKCRzY29wZS50b3RhbENvdW50L3BhZ2VTaXplKTxuZXdQYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXdQYWdlID0gTWF0aC5jZWlsKCRzY29wZS50b3RhbENvdW50L3BhZ2VTaXplKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmRmlsdGVyZWQocGFnZU51bWJlcixwYWdlU2l6ZSxmaWx0ZXIsbGFuZykudGhlbihcclxuXHRcdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmlyc3RRdWVyeT10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZURhdGEgPSBkYXRhLmRhdGEucmVzdWx0cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubmV4dFBhZ2UgPSBkYXRhLmRhdGEubmV4dDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucHJldmlvdXNQYWdlID0gZGF0YS5kYXRhLnByZXZpb3VzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50b3RhbEl0ZW1Db3VudD1kYXRhLmRhdGEuY291bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmN1cnJlbnRQYWdlPXBhZ2VOdW1iZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm51bWJlck9mUGFnZXMgPSBNYXRoLmNlaWwoJHNjb3BlLnRvdGFsSXRlbUNvdW50L3BhZ2VTaXplKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCRzY29wZS50b3RhbEl0ZW1Db3VudDw9cGFnZVNpemUgJiYgJHNjb3BlLnJlc291cmNlRGF0YS5sZW5ndGg+MCkgfHwgJHNjb3BlLnRvdGFsSXRlbUNvdW50PT0wKSAkc2NvcGUuaGlkZUJ0bk1vcmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgJHNjb3BlLmhpZGVCdG5Nb3JlPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZUxvYWRpbmc9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VMb2FkaW5nPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcblx0XHRcclxuXHRcdFxyXG4gICAgICAgICRzY29wZS5sb2FkTW9yZVJlc291cmNlID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZV9wYWdlX3NpemUgPSAkc2NvcGUucmVzb3VyY2VfcGFnZV9zaXplKzEyO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmdldFJlc291cmNlRGVmKDEsJHNjb3BlLnJlc291cmNlX3BhZ2Vfc2l6ZSk7ICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuXHRcdFxyXG5cdFx0XHJcbiAgICAgICAgJHNjb3BlLlNhdmVSZXNvdXJjZUFjY2VzcyA9IGZ1bmN0aW9uKClcclxuICAgICAgICB7IFxyXG5cdFx0XHQvL3JlbW92ZSBlbnRyaWVzIHdpdGggXCJjaGVja2VkPSBudWxsXCJcclxuXHRcdFx0Zm9yIChsZXQga2V5IGluICRzY29wZS5yZXNvdXJjZURpY3QpIHtcclxuXHRcdFx0XHRpZiAoJHNjb3BlLnJlc291cmNlRGljdC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcblx0XHRcdFx0XHRsZXQgZW50cnkgPSAkc2NvcGUucmVzb3VyY2VEaWN0W2tleV07XHJcblx0XHRcdFx0XHRmb3IgKGxldCBzdWJLZXkgaW4gZW50cnkpIHtcclxuXHRcdFx0XHRcdFx0aWYgKGVudHJ5W3N1YktleV1bXCIkY2hlY2tlZFwiXSA9PSBudWxsICYmIGVudHJ5W3N1YktleV1bJyRyZXNvdXJjZWlkJ10pIHtcclxuXHRcdFx0XHRcdFx0XHRkZWxldGUgZW50cnlbc3ViS2V5XTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aWYgKGVudHJ5Wyd1c2VyQ2FuV3JpdGUnXT09ZmFsc2UpIHtcclxuXHRcdFx0XHRcdFx0Ly9kZWJ1Z2dlciAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dMaXN0PTFcclxuXHRcdFx0XHRcdFx0ZGVsZXRlICRzY29wZS5yZXNvdXJjZURpY3Rba2V5XVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cclxuXHRcdGlmICgkc2NvcGUubG9jYWxWYXJzLnNob3dMaXN0PT0xKSAvL3NhdmluZyBhZG1pbi1ncm91cHNcclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuU2F2ZVJlc291cmNlQWNjZXNzKCRzY29wZS5hcHAsICRzY29wZS5yZXNvdXJjZURpY3QpLnRoZW4oXHJcblx0XHRcdFx0ZnVuY3Rpb24ocmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoJ0luc2VydGVkOicgICsgcmVzcG9uc2UuZGF0YS5pbnNlcnRlZC5sZW5ndGggKyAnLCBVcGRhdGVkOicgKyByZXNwb25zZS5kYXRhLnVwZGF0ZWQubGVuZ3RoICsgJyBpdGVtcycsJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICB9KVxyXG5cdFx0XHJcblx0XHRpZiAoJHNjb3BlLmxvY2FsVmFycy5zaG93TGlzdD09MykgLy9zYXZpbmcgbWVudS1ncm91cHNcclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuU2F2ZU1lbnVBY2Nlc3MoJHNjb3BlLmFwcCwgJHNjb3BlLnJlc291cmNlRGljdCkudGhlbihcclxuXHRcdFx0XHRmdW5jdGlvbihyZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnSW5zZXJ0ZWQ6JyAgKyByZXNwb25zZS5kYXRhLmluc2VydGVkLmxlbmd0aCArICcsIFVwZGF0ZWQ6JyArIHJlc3BvbnNlLmRhdGEudXBkYXRlZC5sZW5ndGggKyAnIGl0ZW1zJywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgIH0pXHJcblx0XHRcdCBcclxuXHRcdFx0IFxyXG4gICAgICAgIH1cclxuXHRcdFxyXG5cdFx0XHJcblx0XHQkc2NvcGUucmVsb2FkUGFnZSA9IGZ1bmN0aW9uKClcclxuXHRcdHtcclxuXHRcdFx0JHNjb3BlLnNlbGVjdGVkQXBwPW51bGxcclxuXHRcdFx0JHN0YXRlLnJlbG9hZCgpXHRcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0JHNjb3BlLmFsbENoYW5nZWQgPSBmdW5jdGlvbihnKVxyXG5cdFx0e1x0XHRcclxuXHRcdFx0Zm9yIChjb25zdCBba2V5LCByZXNvdXJjZV0gb2YgT2JqZWN0LmVudHJpZXMoJHNjb3BlLnJlc291cmNlRGljdCkpIHtcclxuXHRcdFx0XHRcdGlmIChyZXNvdXJjZVtnLmdpZF0gJiYgICRzY29wZS5hbGxjaGVja2VkW2cuZ2lkXSE9dW5kZWZpbmVkKSAgcmVzb3VyY2VbZy5naWRdLiRjaGVja2VkID0gJHNjb3BlLmFsbGNoZWNrZWRbZy5naWRdXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0XHJcblx0XHRcclxuXHRcdCRzY29wZS5sb2FkQXBwU2V0dGluZ3MgPSAgZnVuY3Rpb24oYXBwKVxyXG5cdFx0e1x0XHJcblx0XHRcdCBSZXNvdXJjZXNEYXRhU2VydmljZS5HZXRSZXNvdXJjZUFjY2VzcyhhcHApLnRoZW4oXHJcblx0XHRcdCBcclxuXHRcdFx0XHRyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxICkgeyBcclxuXHRcdFx0XHRcdFx0JHNjb3BlLmFwcCA9IGFwcFxyXG4gICAgICAgICAgICAgICAgICAgICAgIFx0JHNjb3BlLnJlc291cmNlTGlzdD0gcmVzcG9uc2UuZGF0YS5hY2Nlc3NfcmVjb3Jkc1x0XHJcblx0XHRcdFx0XHRcdCRzY29wZS5sb2NhbFZhcnMuYWRtaW5Vc2Vycz0gcmVzcG9uc2UuZGF0YS5hZG1pbl91c2Vyc1xyXG5cdFx0XHRcdFx0XHQkc2NvcGUubG9jYWxWYXJzLmFkbWluR3JvdXBzPSByZXNwb25zZS5kYXRhLmFkbWluX2dyb3Vwc1xyXG5cdFx0XHRcdFx0XHQkc2NvcGUuYWxsR3JvdXBzID0gcmVzcG9uc2UuZGF0YS5hbGxncm91cHNcclxuXHRcdFx0XHRcdFx0JHNjb3BlLnNob3dSZXNvdXJjZUxpc3QgPSB0cnVlXHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHQvL2RlYnVnZ2VyXHJcblx0XHRcdFx0XHRcdGZvciAoY29uc3QgaXRlbSBvZiAgYXBwLlJlc291cmNlRXh0ZW5kZWQgKSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKGl0ZW0uTGlua1R5cGU9PSdhcHAtbWVudScpICAkc2NvcGUubG9jYWxWYXJzLmFwcE1lbnUgPSB7aWQ6IGl0ZW0uUmVzb3VyY2UyLCB2ZXJzaW9uOiBpdGVtLlZlcnNpb259XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0Zm9yIChjb25zdCBba2V5LCByZXNvdXJjZV0gb2YgT2JqZWN0LmVudHJpZXMoJHNjb3BlLnJlc291cmNlTGlzdCkpIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAocmVzb3VyY2UuaXRlbVN1YlR5cGU9PVwibWVudVwiKSAkc2NvcGUubG9jYWxWYXJzLmFwcE1lbnUgPSB7ICdpZCc6a2V5LCd2ZXJzaW9uJzpyZXNvdXJjZS52ZXJzaW9ufVxyXG5cdFx0XHRcdFx0XHRcdGlmIChyZXNvdXJjZS5pdGVtU3ViVHlwZSE9XCJwYWdlXCIpIGRlbGV0ZSAkc2NvcGUucmVzb3VyY2VMaXN0W2tleV0gLy9kZWxldGUgbm9uIHBhZ2VzXHJcblx0XHRcdFx0XHRcdFx0aWYgKHJlc291cmNlLnZlcnNpb249PW51bGwpIGRlbGV0ZSAkc2NvcGUucmVzb3VyY2VMaXN0W2tleV0gLy9kZWxldGUgaWYgdmVyc2lvbiBpcyBudWxsIChmb3IgZXhhbXAuIEhvbWUgcGFnZSkgVE9ETyAtIGZpbmQgYW5vdGhlciB3YXkgdG8gZGV0ZWN0IGhvbWUgcGFnZVxyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgW2dpZCwgYWNjZXNzXSBvZiBPYmplY3QuZW50cmllcyhyZXNvdXJjZS4kYWNjZXNzKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQkc2NvcGUuYWxsX3BhZ2VfZ3JvdXBzW2dpZF09IHsgJ2dpZCc6Z2lkLCAnZ25hbWUnOiBhY2Nlc3MuJGdyb3VwX25hbWUgfVxyXG5cdFx0XHRcdFx0XHRcdH1cdFxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHQvL2NyZWF0ZSByZXNvdXJjZSBkaWN0XHJcblx0XHRcdFx0XHRcdGZvciAoY29uc3QgW2tleSwgaXRlbV0gb2YgT2JqZWN0LmVudHJpZXMoJHNjb3BlLnJlc291cmNlTGlzdCkpIHtcclxuXHRcdFx0XHRcdFx0XHQvL2NyZWF0ZSBlbXB0eSByZXNvdXJjZSBvYmplY3QgaWYgdW5kZWZpbmVkXHJcblx0XHRcdFx0XHRcdFx0aWYgKCRzY29wZS5yZXNvdXJjZURpY3Q/LltpdGVtLmlkXT09dW5kZWZpbmVkKSB7XHRcclxuXHRcdFx0XHRcdFx0XHRcdCRzY29wZS5yZXNvdXJjZURpY3RbaXRlbS5pZF09e31cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IFtncm91cF9pZCwgcmVzb3VyY2VdIG9mIE9iamVjdC5lbnRyaWVzKCRzY29wZS5hbGxfcGFnZV9ncm91cHMpKSB7Ly9hZGQgYWxsIGdyb3Vwc1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCRzY29wZS5yZXNvdXJjZURpY3RbaXRlbS5pZF1bZ3JvdXBfaWRdID0ge1x0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnJGNoZWNrZWQnOiBpdGVtLiRhY2Nlc3M/Lltncm91cF9pZF0/LmUgLCAnJHJlc291cmNlaWQnOiBpdGVtLmlkLCAnZ2lkJzogcmVzb3VyY2UuZ2lkLCBcdCdnbmFtZSc6IHJlc291cmNlLmduYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHQkc2NvcGUucmVzb3VyY2VEaWN0W2l0ZW0uaWRdWyduYW1lJ109IGl0ZW0uaXRlbU5hbWVcclxuXHRcdFx0XHRcdFx0XHQkc2NvcGUucmVzb3VyY2VEaWN0W2l0ZW0uaWRdWyd0eXBlJ109IGl0ZW0uaXRlbVN1YlR5cGVcclxuXHRcdFx0XHRcdFx0XHQkc2NvcGUucmVzb3VyY2VEaWN0W2l0ZW0uaWRdWyd1c2VyQ2FuV3JpdGUnXT0gaXRlbS4kdXNlckNhbldyaXRlID8/IHRydWVcclxuXHRcdFx0XHRcdFx0XHQkc2NvcGUucmVzb3VyY2VEaWN0W2l0ZW0uaWRdWyckcmVzb3VyY2VfdmVyc2lvbiddPSBpdGVtLnZlcnNpb25cclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdC8vIGdldE1lbnVzRXhlIChtZW51SWQsdHlwZSx2ZXJzaW9uLHJlZnJlc2gpe1xyXG5cdFx0XHRcdFx0XHRcdCRzY29wZS5tZW51X3NlcnZpY2UuZ2V0TWVudXNFeGUgKCRzY29wZS5sb2NhbFZhcnMuYXBwTWVudS5pZCwnYScsICRzY29wZS5sb2NhbFZhcnMuYXBwTWVudS52ZXJzaW9uLGZhbHNlKS50aGVuKCBcclxuXHRcdFx0XHRcdFx0XHRcdChkYXRhKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0JHNjb3BlLm1lbnVMaXN0PSBkYXRhLm1lbnVzXHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgIGl0ZW0gb2YgJHNjb3BlLm1lbnVMaXN0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkc2NvcGUuYWxsX21lbnVfZ3JvdXBzW2l0ZW0uYXV0aF9ncm91cF91aWRdPSB7ICdnaWQnOml0ZW0uYXV0aF9ncm91cF91aWQsICdnbmFtZSc6IGl0ZW0uYXV0aF9ncm91cF9uYW1lfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdC8vY3JlYXRlIHJlc291cmNlIGRpY3RcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBpdGVtIG9mICRzY29wZS5tZW51TGlzdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgkc2NvcGUubWVudURpY3Q/LltpdGVtLnNfbWVudXNfaWRdPT11bmRlZmluZWQpIFx0JHNjb3BlLm1lbnVEaWN0W2l0ZW0uc19tZW51c19pZF09e31cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBbZ3JvdXBfdWlkLCByZXNvdXJjZV0gb2YgT2JqZWN0LmVudHJpZXMoJHNjb3BlLmFsbF9tZW51X2dyb3VwcykpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vYWRkIGFsbCBncm91cHNcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgkc2NvcGUubWVudURpY3RbaXRlbS5zX21lbnVzX2lkXVtncm91cF91aWRdPT11bmRlZmluZWQpIFx0JHNjb3BlLm1lbnVEaWN0W2l0ZW0uc19tZW51c19pZF1bZ3JvdXBfdWlkXSA9IHtcdCckY2hlY2tlZCc6IG51bGwgLCAnJHJlc291cmNlaWQnOiBpdGVtLnNfbWVudXNfaWQsICdnaWQnOiByZXNvdXJjZS5naWQsIFx0J2duYW1lJzogcmVzb3VyY2UuZ25hbWVcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoaXRlbS5hdXRoX2dyb3VwX3VpZD09Z3JvdXBfdWlkKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCRzY29wZS5tZW51RGljdFtpdGVtLnNfbWVudXNfaWRdW2dyb3VwX3VpZF1bJyRjaGVja2VkJ10gPSB0cnVlXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCRzY29wZS5tZW51RGljdFtpdGVtLnNfbWVudXNfaWRdWyduYW1lJ109IGl0ZW0uc19tZW51c19OYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHNjb3BlLm1lbnVEaWN0W2l0ZW0uc19tZW51c19pZF1bJ3R5cGUnXT0gaXRlbS5zX21lbnVzX01lbnVUeXBlXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8kc2NvcGUubWVudURpY3RbaXRlbS5zX21lbnVzX2lkXVsndXNlckNhbldyaXRlJ109IGl0ZW0/LiR1c2VyQ2FuV3JpdGUgPz8gdHJ1ZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCRzY29wZS5tZW51RGljdFtpdGVtLnNfbWVudXNfaWRdWyd1c2VyQ2FuV3JpdGUnXT0gdHJ1ZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vJHNjb3BlLm1lbnVEaWN0W2l0ZW0uaWRdWyckcmVzb3VyY2VfdmVyc2lvbiddPSBpdGVtLnZlcnNpb25cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnR2V0IHJlc291cmNlcyBpbiBtYW5pZmVzdCEnLCAnaW5mbycpOyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgXHJcblx0XHRcdFx0XHRcclxuICAgICAgICAgICAgICAgIH0sIFxyXG5cdFx0XHRcdGVycm9yID0+IHtcclxuXHRcdFx0XHRcdCAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyBcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0KTtcclxuXHR9XHJcblxyXG4gICAgICAgIFxyXG5cclxuICAgXHJcbiAgICAgICAgXHJcbn1cclxuICAgIFxyXG5hcHBTZXR0aW5nc0N0cmwuJGluamVjdCA9IFsnJHNjb3BlJywgJyRyb290U2NvcGUnLCckc3RhdGUnLCckY29va2llcycsJyRsb2NhdGlvbicsJ0thdGFseW9TdGF0ZU1hbmFnZXInLCdQcm9jZXNzaW5nU2VydmljZScsJ01lc3NhZ2luZ1NlcnZpY2UnLCdDb2Rlc1NlcnZpY2UnLCdBdXRoZW50aWNhdGlvblNlcnZpY2UnLCdNZW51U2VydmljZScsJ1Jlc291cmNlc0RhdGFTZXJ2aWNlJywnVGFza0RhdGFTZXJ2aWNlJywnR3JpZHN0ZXJTZXJ2aWNlJywnU2V0dGluZ3NTZXJ2aWNlJywnJHRpbWVvdXQnLCckc3RhdGVQYXJhbXMnXTtcclxuXHJcbiAiLCIndXNlIHN0cmljdCc7XHJcblxyXG5pbXBvcnQgYXBwQ29udHJvbGxlcix7YXBwU2V0dGluZ3NDdHJsLCBob21lTmF2YmFyQ3RybCxlcnJvck5vdEZvdW5kQ3RybCxlcnJvckN0cmwsaG9tZUN0cmwsb25ib2FyZGluZ0N0cmwsc2lnbnVwQ3RybCxyZWdpc3RlckN0cmwsdW5yZWdpc3RlckN0cmwsbmF2YmFyQ3RybCxtZW51Q3RybCx0b29sYm94Q3RybCx0YXNrVG9vbGJveEN0cmwsbWFya2V0Q3RybH0gZnJvbSAnLi9pbmRleEN0cmxzLmpzJztcclxuaW1wb3J0IGxvZ2luQ3RybCx7c2VsZWN0ZW52aXJvbm1lbnRDdHJsLHNzb0N0cmwsbG9nb3V0Q3RybCxjaGFuZ2VQYXNzd29yZFJlcXVlc3RDdHJsLGNoYW5nZVBhc3N3b3JkQ3RybH0gZnJvbSAnLi4vLi4vMDAwMl9hdXRoL2FuZ3VsYXJKUy9hdXRoQ3RybHMuanMnO1xyXG5pbXBvcnQgaW1wb3J0RGF0YUN0cmwse2RhdGFzZXRUcmFuc2Zvcm1DdHJsLHJlc291cmNlRm9ybUN0cmwscmVzb3VyY2VEYXRhQ3RybCxyZXNvdXJjZURhdGFSZWNvcmRDdHJsLG5ld1Jlc291cmNlQ3RybCxlZGl0UmVzb3VyY2VDdHJsLHZpZXdSZXNvdXJjZUN0cmwscmVzb3VyY2VMaXN0Q3RybCxtZW51c0RlZmluaXRpb25DdHJsLGludGVncmF0aW9uRGVmaW5pdGlvbkN0cmwsYXBwbGljYXRpb25EZWZpbml0aW9uQ3RybCxub3RpZmljYXRpb25EZWZpbml0aW9uQ3RybCx0b2tlbkRlZmluaXRpb25DdHJsLHNtYXJ0Q29udHJhY3REZWZpbml0aW9uQ3RybCxhcHBNZW51RGVmaW5pdGlvbkN0cmwscmVzb3VyY2VGb3JtQ29tcG9uZW50LHRvb2xib3hDb21wb25lbnQscGFnZXNDdHJsLHBhZ2VzRGVmaW5pdGlvbkN0cmwsbWFwcGluZ0RlZmluaXRpb25DdHJsLG1hcHBpbmdzRm9ybUN0cmwsZm9ybURlZmluaXRpb25DdHJsfSBmcm9tICcuLi8uLi8wMDAzX3Jlc291cmNlcy9hbmd1bGFySlMvcmVzb3VyY2VzQ3RybHMuanMnO1xyXG5pbXBvcnQgY29kZXNEYXRhQ3RybCx7dXNlcnNTZWN1cml0eUN0cmwsY29kZXNEZXRhaWxzQ3RybCxjb2Rlc05ld0N0cmwsdXNlckRldGFpbHNDdHJsLHVzZXJzRGVmaW5pdGlvbkN0cmwsZ3JvdXBzQ3RybCxvcmdhbmlzYXRpb25DdHJsfSBmcm9tICcuLi8uLi8wMDA0X3NldHRpbmdzL2FuZ3VsYXJKUy9zZXR0aW5nc0N0cmxzLmpzJztcclxuaW1wb3J0IHRhc2tMaXN0Q3RybCx7dGFza0Zvcm1DdHJsLHRhc2tEZWZpbml0aW9uQ3RybCx0YXNrRGVmaW5pdGlvbkxpc3RDdHJsLHRhc2tJbml0aWF0ZUxpc3RDdHJsLHRhc2tQcm9jQ3RybCx0YXNrUHVibGljQ3RybCx0YXNrSW5pdGlhdGVDdHJsLHRhc2tFeGVjdXRlQ3RybCx0YXNrRXhlY3V0ZUxpc3RDdHJsfSBmcm9tICcuLi8uLi8wMDA1X3Rhc2tzL2FuZ3VsYXJKUy90YXNrc0N0cmxzLmpzJztcclxuaW1wb3J0IHt2cGFnZUN0cmx9IGZyb20gJy4uLy4uLzAwMDZfdnBhZ2UvYW5ndWxhckpTL3ZwYWdlQ3RybHMuanMnO1xyXG5cclxudmFyIG1vZHVsZUN0cmxzPSdLYXRhbHlvQ3RybHMnO1xyXG5cclxudmFyIG1vZHVsZSA9IGFuZ3VsYXIubW9kdWxlKG1vZHVsZUN0cmxzLCBbXSk7XHJcblxyXG5tb2R1bGVcclxuLmNvbnRyb2xsZXIoJ3NlbGVjdGVudmlyb25tZW50Q3RybCcsc2VsZWN0ZW52aXJvbm1lbnRDdHJsKVxyXG4uY29udHJvbGxlcignYXBwQ29udHJvbGxlcicsYXBwQ29udHJvbGxlcilcclxuLmNvbnRyb2xsZXIoJ2hvbWVOYXZiYXJDdHJsJyxob21lTmF2YmFyQ3RybClcclxuLmNvbnRyb2xsZXIoJ2Vycm9yTm90Rm91bmRDdHJsJyxlcnJvck5vdEZvdW5kQ3RybClcclxuLmNvbnRyb2xsZXIoJ2Vycm9yQ3RybCcsZXJyb3JDdHJsKVxyXG4uY29udHJvbGxlcignaG9tZUN0cmwnLGhvbWVDdHJsKVxyXG4uY29udHJvbGxlcignb25ib2FyZGluZ0N0cmwnLG9uYm9hcmRpbmdDdHJsKVxyXG4uY29udHJvbGxlcignc2lnbnVwQ3RybCcsc2lnbnVwQ3RybClcclxuLmNvbnRyb2xsZXIoJ3JlZ2lzdGVyQ3RybCcscmVnaXN0ZXJDdHJsKVxyXG4uY29udHJvbGxlcigndW5yZWdpc3RlckN0cmwnLHVucmVnaXN0ZXJDdHJsKVxyXG4uY29udHJvbGxlcignYXBwU2V0dGluZ3NDdHJsJyxhcHBTZXR0aW5nc0N0cmwpXHJcbi5jb250cm9sbGVyKCduYXZiYXJDdHJsJyxuYXZiYXJDdHJsKVxyXG4uY29udHJvbGxlcignbWVudUN0cmwnLG1lbnVDdHJsKVxyXG4uY29udHJvbGxlcignbWVudXNEZWZpbml0aW9uQ3RybCcsbWVudXNEZWZpbml0aW9uQ3RybClcclxuLmNvbnRyb2xsZXIoJ3Rvb2xib3hDdHJsJyx0b29sYm94Q3RybClcclxuLmNvbnRyb2xsZXIoJ3Rvb2xib3hDb21wb25lbnQnLHRvb2xib3hDb21wb25lbnQpXHJcbi5jb250cm9sbGVyKCd0YXNrVG9vbGJveEN0cmwnLHRhc2tUb29sYm94Q3RybClcclxuLmNvbnRyb2xsZXIoJ2xvZ2luQ3RybCcsbG9naW5DdHJsKVxyXG4uY29udHJvbGxlcignc3NvQ3RybCcsc3NvQ3RybClcclxuLmNvbnRyb2xsZXIoJ2NoYW5nZVBhc3N3b3JkUmVxdWVzdEN0cmwnLGNoYW5nZVBhc3N3b3JkUmVxdWVzdEN0cmwpXHJcbi5jb250cm9sbGVyKCdjaGFuZ2VQYXNzd29yZEN0cmwnLGNoYW5nZVBhc3N3b3JkQ3RybClcclxuLmNvbnRyb2xsZXIoJ21hcHBpbmdzRm9ybUN0cmwnLCBtYXBwaW5nc0Zvcm1DdHJsKVxyXG4uY29udHJvbGxlcignbG9nb3V0Q3RybCcsbG9nb3V0Q3RybClcclxuLmNvbnRyb2xsZXIoJ2ltcG9ydERhdGFDdHJsJyxpbXBvcnREYXRhQ3RybClcclxuLmNvbnRyb2xsZXIoJ2RhdGFzZXRUcmFuc2Zvcm1DdHJsJyxkYXRhc2V0VHJhbnNmb3JtQ3RybClcclxuLmNvbnRyb2xsZXIoJ3Jlc291cmNlRm9ybUN0cmwnLHJlc291cmNlRm9ybUN0cmwpXHJcbi5jb250cm9sbGVyKCdyZXNvdXJjZURhdGFDdHJsJyxyZXNvdXJjZURhdGFDdHJsKVxyXG4uY29udHJvbGxlcigncmVzb3VyY2VEYXRhUmVjb3JkQ3RybCcscmVzb3VyY2VEYXRhUmVjb3JkQ3RybClcclxuLmNvbnRyb2xsZXIoJ3Jlc291cmNlRm9ybUNvbXBvbmVudCcscmVzb3VyY2VGb3JtQ29tcG9uZW50KVxyXG4uY29udHJvbGxlcigncmVzb3VyY2VMaXN0Q3RybCcscmVzb3VyY2VMaXN0Q3RybClcclxuLmNvbnRyb2xsZXIoJ25ld1Jlc291cmNlQ3RybCcsbmV3UmVzb3VyY2VDdHJsKVxyXG4uY29udHJvbGxlcignZWRpdFJlc291cmNlQ3RybCcsZWRpdFJlc291cmNlQ3RybClcclxuLmNvbnRyb2xsZXIoJ3ZpZXdSZXNvdXJjZUN0cmwnLHZpZXdSZXNvdXJjZUN0cmwpXHJcbi5jb250cm9sbGVyKCdwYWdlc0N0cmwnLHBhZ2VzQ3RybClcclxuLmNvbnRyb2xsZXIoJ3BhZ2VzRGVmaW5pdGlvbkN0cmwnLHBhZ2VzRGVmaW5pdGlvbkN0cmwpXHJcbi5jb250cm9sbGVyKCdhcHBsaWNhdGlvbkRlZmluaXRpb25DdHJsJyxhcHBsaWNhdGlvbkRlZmluaXRpb25DdHJsKVxyXG4uY29udHJvbGxlcignbm90aWZpY2F0aW9uRGVmaW5pdGlvbkN0cmwnLG5vdGlmaWNhdGlvbkRlZmluaXRpb25DdHJsKVxyXG4uY29udHJvbGxlcigndG9rZW5EZWZpbml0aW9uQ3RybCcsdG9rZW5EZWZpbml0aW9uQ3RybClcclxuLmNvbnRyb2xsZXIoJ3NtYXJ0Q29udHJhY3REZWZpbml0aW9uQ3RybCcsc21hcnRDb250cmFjdERlZmluaXRpb25DdHJsKVxyXG4uY29udHJvbGxlcignY29kZXNEYXRhQ3RybCcsY29kZXNEYXRhQ3RybClcclxuLmNvbnRyb2xsZXIoJ2NvZGVzRGV0YWlsc0N0cmwnLGNvZGVzRGV0YWlsc0N0cmwpXHJcbi5jb250cm9sbGVyKCdjb2Rlc05ld0N0cmwnLGNvZGVzTmV3Q3RybClcclxuLmNvbnRyb2xsZXIoJ21hcmtldEN0cmwnLG1hcmtldEN0cmwpXHJcbi5jb250cm9sbGVyKCd1c2VyRGV0YWlsc0N0cmwnLHVzZXJEZXRhaWxzQ3RybClcclxuLmNvbnRyb2xsZXIoJ3VzZXJzU2VjdXJpdHlDdHJsJyx1c2Vyc1NlY3VyaXR5Q3RybClcclxuLmNvbnRyb2xsZXIoJ3VzZXJzRGVmaW5pdGlvbkN0cmwnLHVzZXJzRGVmaW5pdGlvbkN0cmwpXHJcbi5jb250cm9sbGVyKCdncm91cHNDdHJsJyxncm91cHNDdHJsKVxyXG4uY29udHJvbGxlcignb3JnYW5pc2F0aW9uQ3RybCcsb3JnYW5pc2F0aW9uQ3RybClcclxuLmNvbnRyb2xsZXIoJ3Rhc2tMaXN0Q3RybCcsdGFza0xpc3RDdHJsKVxyXG4uY29udHJvbGxlcigndGFza0Zvcm1DdHJsJyx0YXNrRm9ybUN0cmwpXHJcbi5jb250cm9sbGVyKCd0YXNrRGVmaW5pdGlvbkN0cmwnLHRhc2tEZWZpbml0aW9uQ3RybClcclxuLmNvbnRyb2xsZXIoJ3Rhc2tEZWZpbml0aW9uTGlzdEN0cmwnLHRhc2tEZWZpbml0aW9uTGlzdEN0cmwpXHJcbi5jb250cm9sbGVyKCd0YXNrSW5pdGlhdGVMaXN0Q3RybCcsdGFza0luaXRpYXRlTGlzdEN0cmwpXHJcbi5jb250cm9sbGVyKCd0YXNrUHJvY0N0cmwnLHRhc2tQcm9jQ3RybClcclxuLmNvbnRyb2xsZXIoJ3Rhc2tQdWJsaWNDdHJsJyx0YXNrUHVibGljQ3RybClcclxuLmNvbnRyb2xsZXIoJ3Rhc2tJbml0aWF0ZUN0cmwnLHRhc2tJbml0aWF0ZUN0cmwpXHJcbi5jb250cm9sbGVyKCd0YXNrRXhlY3V0ZUN0cmwnLHRhc2tFeGVjdXRlQ3RybClcclxuLmNvbnRyb2xsZXIoJ3Rhc2tFeGVjdXRlTGlzdEN0cmwnLHRhc2tFeGVjdXRlTGlzdEN0cmwpXHJcbi5jb250cm9sbGVyKCdpbnRlZ3JhdGlvbkRlZmluaXRpb25DdHJsJyxpbnRlZ3JhdGlvbkRlZmluaXRpb25DdHJsKVxyXG4uY29udHJvbGxlcignYXBwTWVudURlZmluaXRpb25DdHJsJyxhcHBNZW51RGVmaW5pdGlvbkN0cmwpXHJcbi5jb250cm9sbGVyKCdtYXBwaW5nRGVmaW5pdGlvbkN0cmwnLG1hcHBpbmdEZWZpbml0aW9uQ3RybClcclxuLmNvbnRyb2xsZXIoJ2Zvcm1EZWZpbml0aW9uQ3RybCcsZm9ybURlZmluaXRpb25DdHJsKVxyXG4uY29udHJvbGxlcigndnBhZ2VDdHJsJyx2cGFnZUN0cmwpXHJcbjtcclxuXHJcblxyXG5leHBvcnQgZGVmYXVsdCBtb2R1bGVDdHJsczsiLCIndXNlIHN0cmljdCc7XHJcbi8qaW1wb3J0IGF1dGhKc29uIGZyb20gJy4vYXV0aC5qc29uJyBhc3NlcnQge3R5cGU6ICdqc29uJ307Ki9cclxuaW1wb3J0IGluZGV4SnNvbiBmcm9tICcuLy4uLy4uLzAwMDFfaW5kZXgvYW5ndWxhckpzL2luZGV4Lmpzb24nIC8vd2l0aCB7dHlwZTogJ2pzb24nfTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjaGFuZ2VQYXNzd29yZEN0cmwgKCRzY29wZSwgJHJvb3RTY29wZSwgJHN0YXRlLCRjb29raWVzLCR0aW1lb3V0LEF1dGhlbnRpY2F0aW9uU2VydmljZSxNZW51U2VydmljZSwkc3RhdGVQYXJhbXMsJGxvY2F0aW9uKSB7XHJcbiAgICAgICBcclxuICAgICRzY29wZS5DVFJMTkFNRT0nY2hhbmdlUGFzc3dvcmRDdHJsJztcclxuICAgIGxldCB0b3VjaGVkPVtmYWxzZSxmYWxzZV1cclxuICAgIEF1dGhlbnRpY2F0aW9uU2VydmljZS5DbGVhckNyZWRlbnRpYWxzKCk7XHJcbiAgICAkc2NvcGUuc2lnbnVwa2V5ID0gJHN0YXRlUGFyYW1zLmRpZ2VzdFxyXG5cclxuICAgICRzY29wZS5jcD17dXNlcm5hbWUgOiBcIlwiLCBwYXNzd29yZDEgOiBcIlwiLHBhc3N3b3JkMiA6IFwiXCJ9XHJcbiAgICBcclxuICAgIGxldCBsYW5nID0gJGxvY2F0aW9uLnNlYXJjaCgpLmxhbmdcclxuICAgIGlmIChsYW5nPT09dW5kZWZpbmVkKSBsYW5nID0nZW4tR0InXHJcbiAgICBcclxuICAgICRzY29wZS5wYWdlTGFiZWxzID0gaW5kZXhKc29uW2xhbmddXHJcblxyXG4gICAgJHNjb3BlLkNoZWNrQ2hhbmdlUmVxdWVzdCA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgQXV0aGVudGljYXRpb25TZXJ2aWNlLkNoZWNrUGFzc0NoYW5nZVJlcXVlc3QoJHNjb3BlLnNpZ251cGtleSxmdW5jdGlvbihyZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jaGVja0RpZ2VzdE9rID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS51c2VySWQgPSByZXNwb25zZS5kYXRhLnVzZXJfaWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jaGVja0RpZ2VzdE9rID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY2hlY2tEb25lID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICBcclxuICAgICAgICB9O1xyXG5cclxuICAgICRzY29wZS5DaGVja0NoYW5nZVJlcXVlc3QoKVxyXG5cclxuICAgICAkc2NvcGUuY2hlY2tVc2VybmFtZVZhbGlkaXR5PWZ1bmN0aW9uKCkgeyBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5jcC51c2VybmFtZT09PScnIHx8ICRzY29wZS5jcC51c2VybmFtZT09PXVuZGVmaW5lZCkgJHNjb3BlLnVzZXJuYW1lSW52YWxpZD10cnVlXHJcbiAgICAgICAgICAgIGVsc2UgJHNjb3BlLnVzZXJuYW1lSW52YWxpZD1mYWxzZVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgJHNjb3BlLmhpZGVFcnJvcj1mdW5jdGlvbigpIHsgXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgICRzY29wZS5lcnJvck1zZz1cIlwiXHJcbiAgICAgICAgfVxyXG5cclxuICAgICRzY29wZS5jaGVja1Bhc3N3b3JkVmFsaWRpdHkxPWZ1bmN0aW9uKCkgeyBcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmNwLnBhc3N3b3JkMT09PScnIHx8ICRzY29wZS5jcC5wYXNzd29yZDE9PT11bmRlZmluZWQpICRzY29wZS5wYXNzd29yZEludmFsaWQxPXRydWVcclxuICAgICAgICAgICAgZWxzZSAkc2NvcGUucGFzc3dvcmRJbnZhbGlkMT1mYWxzZVxyXG4gICAgICAgIH1cclxuICAgICAgJHNjb3BlLmNoZWNrUGFzc3dvcmRWYWxpZGl0eTI9ZnVuY3Rpb24oKSB7IFxyXG4gICAgICAgICAgICAgLy90b3VjaGVkW2ldPXRydWUgICAgICAgXHJcbiAgICAgICAgICAgICAvL2lmICh0aGlzLnBhc3N3b3JkW2ldPT0nJyB8fCB0aGlzLnBhc3N3b3JkW2ldPT11bmRlZmluZWQgfHwgdGhpcy5wYXNzd29yZFtpXT09bnVsbCkgdGhpcy5wYXNzd29yZEludmFsaWRbaV09IHRydWU7XHJcbiAgICAgICAgICAgICAvL2Vsc2UgdGhpcy5wYXNzd29yZEludmFsaWRbaV09ZmFsc2U7XHJcbiAgICAgICAgICAgICAvL2lmICghdGhpcy5wYXNzd29yZFtpXSAmJiB0b3VjaGVkW2ldPT10cnVlXHJcbiAgICAgICAgICAgICAvL3Bhc3N3b3JkcyBtdXN0IG1hdGNoXHJcbiAgICAgICAgICAgICBpZiAoJHNjb3BlLmNwLnBhc3N3b3JkMSE9PSRzY29wZS5jcC5wYXNzd29yZDIpICRzY29wZS5wYXNzd29yZEludmFsaWQyPXRydWVcclxuICAgICAgICAgICAgICBlbHNlICRzY29wZS5wYXNzd29yZEludmFsaWQyPWZhbHNlXHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgJHNjb3BlLlJlc2V0UGFzc3dvcmQ9ZnVuY3Rpb24odXNlcm5hbWUsdXNlcklkLHBhc3N3b3JkMSxwYXNzd29yZDIsZGlnZXN0KSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICRzY29wZS5kYXRhTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgICAgICAgQXV0aGVudGljYXRpb25TZXJ2aWNlLlBzd1Jlc2V0KHVzZXJuYW1lLHVzZXJJZCxwYXNzd29yZDEscGFzc3dvcmQyLGRpZ2VzdCwgZnVuY3Rpb24ocmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUucGFzc3dvcmRDaGFuZ2VTdWNjZXNzPXRydWVcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc3VjY2Vzc01zZyA9IHJlc3BvbnNlLm1lc3NhZ2U7XHJcbiAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5lcnJvck1zZyA9IHJlc3BvbnNlLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucGFzc3dvcmRDaGFuZ2VTdWNjZXNzPWZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuZGF0YUxvYWRpbmcgPSBmYWxzZTtcclxuXHJcblxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgXHJcbiAgfVxyXG5cclxuY2hhbmdlUGFzc3dvcmRDdHJsLiRpbmplY3Q9Wyckc2NvcGUnLCAnJHJvb3RTY29wZScsICckc3RhdGUnLCckY29va2llcycsJyR0aW1lb3V0JywnQXV0aGVudGljYXRpb25TZXJ2aWNlJywnTWVudVNlcnZpY2UnLCckc3RhdGVQYXJhbXMnLCckbG9jYXRpb24nXTtcclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2hhbmdlUGFzc3dvcmRSZXF1ZXN0Q3RybCAoJHNjb3BlLCAkcm9vdFNjb3BlLCAkc3RhdGUsJGNvb2tpZXMsJHRpbWVvdXQsQXV0aGVudGljYXRpb25TZXJ2aWNlLE1lbnVTZXJ2aWNlKSB7XHJcbiAgICAgICBcclxuICAgICRzY29wZS5DVFJMTkFNRT0nY2hhbmdlUGFzc3dvcmRSZXF1ZXN0Q3RybCc7XHJcbiAgICBBdXRoZW50aWNhdGlvblNlcnZpY2UuQ2xlYXJDcmVkZW50aWFscygpO1xyXG4gICAgXHJcbiAgICAkc2NvcGUucmVnPSAvXigoW148PigpXFxbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31dKXwoKFthLXpBLVpcXC0wLTldK1xcLikrW2EtekEtWl17MiwyNH0pKSQvXHJcbiAgICAkc2NvcGUuc2lnbnVwU3VjY2Vzcz0gZmFsc2VcclxuICAgICRzY29wZS5lcnJvck1zZz0gJydcclxuICAgICRzY29wZS5kYXRhTG9hZGluZz0gZmFsc2VcclxuICAgICRzY29wZS5lbWFpbEludmFsaWQ9ZmFsc2VcclxuICAgICRzY29wZS5lbWFpbD0nJ1xyXG4gICBcclxuXHJcbiAgICAgICAgICRzY29wZS5pc0VtYWlsVmFsaWQgPSBmdW5jdGlvbiAgKCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoJHNjb3BlLmVtYWlsID09IFwiXCIpPyBcIlwiIDogKCRzY29wZS5yZWcudGVzdCgkc2NvcGUuZW1haWwpKSA/ICdpcy12YWxpZCcgOiAnaXMtaW52YWxpZCc7XHJcbiAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICRzY29wZS5jaGVja0VtYWlsVmFsaWRpdHkgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgJHNjb3BlLmVycm9yTXNnPScnXHJcbiAgICAgICAgICAgaWYgKCRzY29wZS5lbWFpbD09JycgfHwgJHNjb3BlLmVtYWlsPT11bmRlZmluZWQgfHwgJHNjb3BlLmVtYWlsPT1udWxsKSAkc2NvcGUuZW1haWxJbnZhbGlkPSB0cnVlO1xyXG4gICAgICAgICAgIGVsc2UgJHNjb3BlLmVtYWlsSW52YWxpZD1mYWxzZTsgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgJHNjb3BlLnJlcXVlc3RDaGcgPSBmdW5jdGlvbihldikgXHJcbiAgICAgICAgICB7IFxyXG4gICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpXHJcbiAgICAgICAgICAgIEF1dGhlbnRpY2F0aW9uU2VydmljZS5SZXF1ZXN0UHN3UmVzZXQoJHNjb3BlLmVtYWlsLCBmdW5jdGlvbihyZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgIGlmKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2lnbnVwU3VjY2Vzcz10cnVlXHJcbiAgICAgICAgICAgICAgfSBlbHNlIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmVycm9yTXNnID0gcmVzcG9uc2UubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGF0YUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSAvL2xvZ2luXHJcbiAgICAgICAgXHJcbiAgICBcclxuICAgICRzY29wZS52YWxpZGl0eSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuICRzY29wZS5yZWcudGVzdCgkc2NvcGUuZW1haWwpXHJcbiAgICAgIFxyXG4gICAgfVxyXG4gICAgXHJcbiAgIFxyXG4gICAgICBcclxufVxyXG5cclxuICBjaGFuZ2VQYXNzd29yZFJlcXVlc3RDdHJsLiRpbmplY3Q9Wyckc2NvcGUnLCAnJHJvb3RTY29wZScsICckc3RhdGUnLCckY29va2llcycsJyR0aW1lb3V0JywnQXV0aGVudGljYXRpb25TZXJ2aWNlJywnTWVudVNlcnZpY2UnXTtcclxuXHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsb2dpbkN0cmwgKCRzY29wZSwgJHJvb3RTY29wZSwgJHN0YXRlLCRjb29raWVzLE1lc3NhZ2luZ1NlcnZpY2UsQXV0aGVudGljYXRpb25TZXJ2aWNlLE1lbnVTZXJ2aWNlLCRsb2NhdGlvbiwkdGltZW91dCkge1xyXG4gICAgXHJcbiAgICBBdXRoZW50aWNhdGlvblNlcnZpY2UuQ2xlYXJDcmVkZW50aWFscygpO1xyXG4gICAgbGV0IGxhbmcgPSAkbG9jYXRpb24uc2VhcmNoKCkubGFuZ1xyXG4gICAgaWYgKGxhbmc9PT11bmRlZmluZWQpIGxhbmcgPSdlbi1HQidcclxuICAgICRzY29wZS5wYWdlTGFiZWxzID0gaW5kZXhKc29uW2xhbmddXHJcbiAgICAkc2NvcGUuQ1RSTD0nbG9naW5DdHJsJ1xyXG4gICAgJHNjb3BlLmNvbmZpZyA9IGluZGV4SnNvblsnY29uZmlnJ10gXHJcbiAgXHJcbiAgICAkc2NvcGUuZXJyb3JNc2c9ICcnXHJcbiAgICAkc2NvcGUuZGF0YUxvYWRpbmc9IGZhbHNlXHJcbiAgICAkc2NvcGUudXNlcm5hbWVJbnZhbGlkPWZhbHNlXHJcbiAgICAkc2NvcGUucGFzc3dvcmRJbnZhbGlkPWZhbHNlXHJcbiAgICAkc2NvcGUuZmlyc3RUaW1lPXRydWVcclxuICAgICRzY29wZS51c2VybmFtZT0nJ1xyXG4gICAgJHNjb3BlLnBhc3N3b3JkPScnXHJcbiAgICAkc2NvcGUucXVlcnlfaGFzaD0nJyBcclxuICAgICRzY29wZS5kYXRhTG9hZGluZ1RleHQ9XCI8c3BhbiBjbGFzcz0nZmEgZmEtaG91cmdsYXNzIG1yLTInPjwvc3Bhbj5cIiArICRzY29wZS5wYWdlTGFiZWxzPy5kYXRhTG9hZGluZ1RleHQgfHwgXCI8c3BhbiBjbGFzcz0nZmEgZmEtaG91cmdsYXNzJz48L3NwYW4+IExvZ2dpbmcgaW4uLi5cIlxyXG4gICAgXHJcblxyXG5cclxuICAgIGZ1bmN0aW9uICBjaGVja1VzZXJuYW1lVmFsaWRpdHkoKSB7XHJcbiAgICAgICAgIGlmICgkc2NvcGUudXNlcm5hbWU9PScnIHx8ICRzY29wZS51c2VybmFtZT09dW5kZWZpbmVkIHx8ICRzY29wZS51c2VybmFtZT09bnVsbCkgICRzY29wZS51c2VybmFtZUludmFsaWQ9IHRydWU7XHJcbiAgICAgICAgIGVsc2UgJHNjb3BlLnVzZXJuYW1lSW52YWxpZD1mYWxzZTsgXHJcbiAgICAgICAgfVxyXG4gICAgXHJcbiAgICBmdW5jdGlvbiBjaGVja1Bhc3N3b3JkVmFsaWRpdHkoKSB7XHJcbiAgICAgICAgIGlmICghJHNjb3BlLmZpcnN0VGltZSAmJiAkc2NvcGUucGFzc3dvcmQ9PScnIHx8ICRzY29wZS5wYXNzd29yZD09dW5kZWZpbmVkIHx8ICRzY29wZS5wYXNzd29yZD09bnVsbCkgICRzY29wZS5wYXNzd29yZEludmFsaWQ9IHRydWU7XHJcbiAgICAgICAgIGVsc2UgJHNjb3BlLnBhc3N3b3JkSW52YWxpZD1mYWxzZTtcclxuICAgICAgICAgJHNjb3BlLmZpcnN0VGltZT1mYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAkc2NvcGUubG9naW4gPSBmdW5jdGlvbihldikge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgZXYucHJldmVudERlZmF1bHQoKVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLmZpcnN0VGltZT1mYWxzZTtcclxuICAgICAgICAgICAgY2hlY2tVc2VybmFtZVZhbGlkaXR5KClcclxuICAgICAgICAgICAgY2hlY2tQYXNzd29yZFZhbGlkaXR5KClcclxuICAgICAgICAgICAgaWYgKCRzY29wZS51c2VybmFtZUludmFsaWQgfHwgJHNjb3BlLnBhc3N3b3JkSW52YWxpZCkgcmV0dXJuO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLmRhdGFMb2FkaW5nPXRydWU7XHJcbiAgICAgICAgICAgIEF1dGhlbnRpY2F0aW9uU2VydmljZS5Mb2dpbigkc2NvcGUudXNlcm5hbWUsICRzY29wZS5wYXNzd29yZCwgZnVuY3Rpb24ocmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHsgXHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5lbnZpcm9ubWVudHMpXHJcbiAgICAgICAgICAgICAgICAgICRyb290U2NvcGUuZ2xvYmFscy5lbnZpcm9ubWVudHMgPSByZXNwb25zZS5kYXRhLmVudmlyb25tZW50cy5yZWR1Y2UoKGFjYywgb2JqKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBhY2Nbb2JqLmlkLnRvU3RyaW5nKCldID0gb2JqO1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYzt9LCB7fSk7IFxyXG4gICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgQXV0aGVudGljYXRpb25TZXJ2aWNlLlNldENyZWRlbnRpYWxzKHJlc3BvbnNlLmRhdGEsICRzY29wZS51c2VybmFtZSwkc2NvcGUucGFzc3dvcmQpO1xyXG4gICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgICAgICB2YXIgZGVmYXVsdF9wYWdlID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLnVlcD8uUGFyYW1zPy5EZWZhdWx0UGFnZVVyaTtcclxuICAgICAgICAgICAgICAgICAgbGV0IHBhcmFtcyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci51ZXA/LlBhcmFtcz8uRGVmYXVsdFBhZ2VQYXJhbXM7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBkZWZhdWx0X2FwcCA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5vcmdhbmlzYXRpb24/LkRlZmF1bHRBcHBcclxuICAgICAgICAgIFxyXG4gICAgICBcclxuICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcz09dW5kZWZpbmVkKSBwYXJhbXMgPSBPYmplY3QuYXNzaWduKHt9LCAkc3RhdGUucGFyYW1zKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgIGxldCBzdGF0ZU5hbWUgPSAnYXBwLm5hdmJhci5ob21lJyAgICBcclxuICAgICAgICAgICAgICAgICAgbGV0IHJldHVybl91cmwgPSAkc3RhdGUucGFyYW1zWydyZXR1cm5fdXJsJ11cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0X3BhZ2UhPXVuZGVmaW5lZCkgc3RhdGVOYW1lPWRlZmF1bHRfcGFnZVxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgaWYgKHJldHVybl91cmw/LnJldHVybl91cmxfbmFtZSE9dW5kZWZpbmVkKSAgIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZU5hbWUgPSByZXR1cm5fdXJsLnJldHVybl91cmxfbmFtZVxyXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcyA9IHJldHVybl91cmxcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgIGlmICggcmVzcG9uc2UuZGF0YT8udWVwPy5kZWZhdWx0ZW52ICkgeyAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgZGVmYXVsdEVudiA9ICByZXNwb25zZS5kYXRhPy51ZXA/LmRlZmF1bHRlbnYudG9TdHJpbmcoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCEkcm9vdFNjb3BlLmdsb2JhbHM/LmN1cnJlbnRFbnYpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRFbnYgPSBkZWZhdWx0RW52IC8vIGZvbGxvd2luZyBBUEkgY2FsbHMgbXVzdCBoYXZlIGdsb2JhbCBFTlZcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGlmICAoISRsb2NhdGlvbi5zZWFyY2goKS5lbnYgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kbG9jYXRpb24uc2VhcmNoKHsnZW52JzogZGVmYXVsdEVudn0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXRlLnBhcmFtcy5lbnY9ZGVmYXVsdEVudlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0ZS50cmFuc2l0aW9uVG8oJHN0YXRlLmN1cnJlbnQubmFtZSwkc3RhdGUucGFyYW1zLCB7IG5vdGlmeTogZmFsc2UsICAgbG9jYXRpb246J3JlcGxhY2UnLCBpbmhlcml0OnRydWV9KSBcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAvLyAgc2VsZWN0RW52aXJvbm1lbnQgaWYgdGhlcmUgaXMgbm8gRGVmYXVsdCB1c2VyIEVOViAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlTmFtZSA9ICdhcHAuc2VsZWN0ZW52aXJvbm1lbnQnICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0ZS5nbyhzdGF0ZU5hbWUsIHBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdF9hcHApIHsgLy9jdXJyZW50IG9ubHkgIEFEUklBIGhhcyBkZWZhdWx0X0FwcFxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBhcHBfcmVmID0gJGxvY2F0aW9uLnNlYXJjaCgpLmFwcF9yZWYgID8/ICAgJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyPy5vcmdhbmlzYXRpb24/LkRlZmF1bHRBcHBcclxuICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgQXV0aGVudGljYXRpb25TZXJ2aWNlLmxvYWRBcHAoXCJcIiwgeydlbnZpcm9ubWVudCc6IGRlZmF1bHRFbnZ9LCBhcHBfcmVmKS50aGVuKGZ1bmN0aW9uKGRhdGEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGxhcHAgPSBkYXRhPy5zdWJzY3JpcHRpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICBBdXRoZW50aWNhdGlvblNlcnZpY2UuU2V0Q3JlZGVudGlhbHMoZGF0YT8udXNlcilcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXBwIT1udWxsKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRoZW50aWNhdGlvblNlcnZpY2UuU2V0TWVudXNGb3JBcHAobGFwcCkudGhlbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhlbnRpY2F0aW9uU2VydmljZS5sb2FkRmlyc3RQYWdlKHN0YXRlTmFtZSxwYXJhbXMsbGFwcCxkYXRhKSAvL3RvZG8gLSBvdmRqZSB1IHBhcmFtcyBuZW1hIHRyZW51dG5pIEVOViAhIVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IyKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yMiwnZXJyb3InKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0ZS5nbyh0b1N0YXRlLm5hbWUsdG9QYXJhbXMpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdFcnJvciBsb2FkaW5nIGFwcGxpY2F0aW9uIGlkID0nK2FwcF9yZWYsJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0ZS5nbyh0b1N0YXRlLm5hbWUsdG9QYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXM9PTQwNSkgICRzdGF0ZS5nbygnYXBwLm5hdmJhci5ob21lJyx7fSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbmF2YmFyPU1lbnVTZXJ2aWNlLmdldE5hdmJhckJ5VGFyZ2V0TmFtZShzdGF0ZU5hbWUsbGFuZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcz09dW5kZWZpbmVkKSBwYXJhbXM9eydlbnZpcm9ubWVudCc6IGRlZmF1bHRFbnZ9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXRlLmdvKHN0YXRlTmFtZSxwYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHsgICAgICAgLy8gd2hlbiByZXNwb25zZSBpcyBub3Qgc3VjY2VzcyAgICAgIFxyXG4gICAgICAgICAgICAgICRzY29wZS5lcnJvck1zZyA9ICRzY29wZS5sb2dpbkVycm9yTXNnO1xyXG4gICAgICAgICAgICAgICRzY29wZS5kYXRhTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAkdGltZW91dCggKCk9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKHJlc3BvbnNlLm1lc3NhZ2UsJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gLy9sb2dpblxyXG5cdCAgXHJcblx0ICRzY29wZS5jaGVja0VudGVyS2V5ID0gZnVuY3Rpb24oZXZlbnQpIHtcclxuXHRcdCAgaWYgKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiIHx8IGV2ZW50LmtleUNvZGUgPT09IDEzKSB7XHJcblx0XHRcdCRzY29wZS5sb2dpbihldmVudCk7IC8vIENhbGwgdGhlIGxvZ2luIGZ1bmN0aW9uXHJcblx0XHQgIH1cclxuXHR9XHJcblx0ICBcclxuICAgIH0vL0xvZ2luQ3RybFxyXG4gICBcclxuICAgICBcclxuIFxyXG4gIFxyXG5cclxuLy8gIGxvZ2luQ3RybC4kaW5qZWN0PVsnJHNjb3BlJywgJyRyb290U2NvcGUnLCckc3RhdGUnLCckY29va2llcycsJ01lc3NhZ2luZ1NlcnZpY2UnLCdBdXRoZW50aWNhdGlvblNlcnZpY2UnLCdNZW51U2VydmljZScsJyRsb2NhdGlvbicsJyR0aW1lb3V0J107XHJcbmV4cG9ydCBmdW5jdGlvbiBzc29DdHJsICgkc2NvcGUsICRyb290U2NvcGUsICRzdGF0ZSwkY29va2llcyxBdXRoZW50aWNhdGlvblNlcnZpY2UsTWVudVNlcnZpY2UsJGxvY2F0aW9uKSB7XHJcbiAgICBcclxuICAgIEF1dGhlbnRpY2F0aW9uU2VydmljZS5DbGVhckNyZWRlbnRpYWxzKCk7XHJcblxyXG4gICAgICBcclxuICAgIFxyXG4gICAgXHJcbiAgICBcclxuICAgICAgICAgICR3c2NvcGUuZXJyb3JNc2c9ICcnLFxyXG4gICAgICAgICAgJHNjb3BlLmRhdGFMb2FkaW5nPSBmYWxzZSxcclxuICAgXHJcbiAgICAgICAkc2NvcGUuIGxvZ2luU3NvID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAkc2NvcGUuZGF0YUxvYWRpbmc9dHJ1ZTtcclxuICAgICAgICAgIEF1dGhlbnRpY2F0aW9uU2VydmljZS5Mb2dpblNzb0ZldGNoKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XHJcbiAgICAgIFxyXG4gICAgICAgICAgICBpZihyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIEF1dGhlbnRpY2F0aW9uU2VydmljZS5TZXRDcmVkZW50aWFsc1NzbyhyZXNwb25zZS5kYXRhLCBudWxsLG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuZGF0YUxvYWRpbmc9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAvL2xvYWQgbWVudXNcclxuICAgICAgICAgICAgICAgIHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICAgICB2YXIgZGVmYXVsdF9wYWdlID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLnVlcD8uUGFyYW1zPy5EZWZhdWx0UGFnZVVyaTtcclxuICAgICAgICAgICAgICAgIHZhciBwYXJhbXMgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIudWVwPy5QYXJhbXM/LkRlZmF1bHRQYWdlUGFyYW1zO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB2YXIgc3RhdGVOYW1lID0gJ2FwcC5uYXZiYXIuaG9tZSc7ICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0X3BhZ2UhPXVuZGVmaW5lZCkgc3RhdGVOYW1lPWRlZmF1bHRfcGFnZTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBpZiAocGFyYW1zPT11bmRlZmluZWQpIHBhcmFtcz17fTtcclxuICAgICAgICAgICAgICAgICRzdGF0ZS5nbyhzdGF0ZU5hbWUscGFyYW1zKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5lcnJvck1zZyA9IHJlc3BvbnNlLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZGF0YUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9XHJcblxyXG4gIH0gXHJcbiAgICAgIFxyXG4gXHJcbiAgIFxyXG4gIFxyXG4gICAgICBcclxuXHJcblxyXG4gIHNzb0N0cmwuJGluamVjdD1bJyRzY29wZScsICckcm9vdFNjb3BlJywgJyRzdGF0ZScsJyRjb29raWVzJywnQXV0aGVudGljYXRpb25TZXJ2aWNlJywnTWVudVNlcnZpY2UnLCckbG9jYXRpb24nXTtcclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9nb3V0Q3RybCAoJHNjb3BlLCRyb290U2NvcGUsICRsb2NhdGlvbiwgICRzdGF0ZSwgR3JpZHN0ZXJTZXJ2aWNlLEF1dGhlbnRpY2F0aW9uU2VydmljZSwgTWVudVNlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxQcm9jZXNzaW5nU2VydmljZSkge1xyXG5cclxuICAgICAgJHNjb3BlLkNUUkw9J2xvZ291dEN0cmwnO1xyXG4gICAgICAkc2NvcGUuYWM9e1xyXG4gICAgICAgICBhbGVydHMgOiBbXVxyXG4gICAgICAgICB9O1xyXG4gICAgICBsZXQgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHM/LmN1cnJlbnRVc2VyPy5sYW5nID8/ICdlbi1HQidcclxuICAgICAgJHNjb3BlLnBhZ2VMYWJlbHMgPSBpbmRleEpzb25bbGFuZ11cclxuICAgICAgXHJcbiAgICAgICRzY29wZS5nc3J2YyA9IEdyaWRzdGVyU2VydmljZVxyXG4gICAgICAkc2NvcGUuZ3NydmMucmVzZXRCb2R5QmdDb2xvcigpIFxyXG4gICAgICBcclxuICAgICAgJHNjb3BlLm1lbnVfc2VydmljZSA9IE1lbnVTZXJ2aWNlICAgIFxyXG4gICAgICAkc2NvcGUubWVudV9zZXJ2aWNlLmNsZWFyU2lkZU1lbnUoKVxyXG4gICAgICAkc2NvcGUuY29uZmlnID0gaW5kZXhKc29uWydjb25maWcnXVxyXG4gICAgICBcclxuICAgICAgQXV0aGVudGljYXRpb25TZXJ2aWNlLkxvZ291dChmdW5jdGlvbihyZXNwb25zZSkge1xyXG4gICAgICAgICAkc2NvcGUuYWN0aXZpdHkuYWN0aXZpdHlNZXNzYWdlID0gUHJvY2Vzc2luZ1NlcnZpY2Uuc2V0QWN0aXZpdHlNc2coJ0xvZ2dpbmcgb3V0Li4uJyk7XHJcbiAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgQXV0aGVudGljYXRpb25TZXJ2aWNlLkNsZWFyQ3JlZGVudGlhbHMoKTsgXHJcbiAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5jbGVhckFsbE1lc3NhZ2VzKCk7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgJHNjb3BlLmFjdGl2aXR5LmFjdGl2aXR5TWVzc2FnZSA9IFByb2Nlc3NpbmdTZXJ2aWNlLnNldEFjdGl2aXR5TXNnKCcnKTtcclxuICAgICAgICAgfSBlbHNlIFxyXG4gICAgICAgICAgICAgJHNjb3BlLmVycm9yTXNnID0gcmVzcG9uc2UubWVzc2FnZTtcclxuICAgICAgIFxyXG4gICAgICB9KTtcclxuICAgIFxyXG4gICAgICAkc2NvcGUubG9naW5fcGFnZSA9IGZ1bmN0aW9uKCkgXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBsZXQgYXV0aF90eXBlID0gJHJvb3RTY29wZS5nbG9iYWxzPy5jdXJyZW50VXNlcj8uYXV0aF90eXBlO1xyXG4gICAgICAgICAgICBpZiAoYXV0aF90eXBlPT09J3NzbycpIFxyXG4gICAgICAgICAgICAgICAgJHN0YXRlLmdvKCdhcHAuc3NvJyk7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAge1xyXG5cdFx0XHRcdCAgICAgJGxvY2F0aW9uLnNlYXJjaCgnYXBwX3JlZicsIG51bGwpXHJcblx0XHRcdFx0XHQgICAkbG9jYXRpb24uc2VhcmNoKCdlbnYnLCBudWxsKVxyXG5cdFx0XHRcdFx0ICAgJGxvY2F0aW9uLnNlYXJjaCgndGFiJywgbnVsbClcclxuICAgICAgICAgICAgICRsb2NhdGlvbi51cmwoJy9sb2dpbicpXHJcblx0XHRcdFx0XHQgICAvLyRzdGF0ZS5nbygnYXBwLmxvZ2luJyk7IFxyXG5cclxuXHRcdFx0XHRcdCB9XHJcbiAgICAgICAgICAgICAgIFxyXG5cdFx0fVxyXG59O1xyXG5cclxubG9nb3V0Q3RybC4kaW5qZWN0PVsnJHNjb3BlJywgJyRyb290U2NvcGUnLCckbG9jYXRpb24nLCAnJHN0YXRlJywnR3JpZHN0ZXJTZXJ2aWNlJywnQXV0aGVudGljYXRpb25TZXJ2aWNlJywnTWVudVNlcnZpY2UnLCdNZXNzYWdpbmdTZXJ2aWNlJywnUHJvY2Vzc2luZ1NlcnZpY2UnXTtcclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0ZW52aXJvbm1lbnRDdHJsICgkc2NvcGUsJHJvb3RTY29wZSwgJHN0YXRlLCAkY29va2llcywgQXV0aGVudGljYXRpb25TZXJ2aWNlLE1lbnVTZXJ2aWNlLCRsb2NhdGlvbiwkdGltZW91dCwgVXNlclNlcnZpY2UsIE1lc3NhZ2luZ1NlcnZpY2UsUHJvY2Vzc2luZ1NlcnZpY2UpIHtcclxuXHJcbiAgICAgICRzY29wZS5DVFJMPSdzZWxlY3RlbnZpcm9ubWVudEN0cmwnO1xyXG4gICAgICAkc2NvcGUuYWMgPSB7ICBhbGVydHMgOiBbXSB9O1xyXG4gICAgICAkc2NvcGUuYWN0aW9uVHlwZSA9ICRzdGF0ZS5wYXJhbXMudHlwZVxyXG4gICAgICBsZXQgbGFuZz0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmdcclxuICAgICAgJHNjb3BlLnBhZ2VMYWJlbHMgPSBpbmRleEpzb25bbGFuZ11cclxuICAgICAgXHJcbiAgICAgICRzY29wZS5tZW51X3NlcnZpY2UgPSBNZW51U2VydmljZSAgICBcclxuICAgICAgJHNjb3BlLm1lbnVfc2VydmljZS5jbGVhclNpZGVNZW51KClcclxuXHJcblxyXG5cdCRzY29wZS5nZXRVc2VyRW52aXJvbm1lbnRzID0gZnVuY3Rpb24oKSAvLyBVc2VkIGluIFwic2VsZWN0ZW52XCIgcGFnZVxyXG5cdHtcclxuXHRcdCAgaWYgKCEgJHJvb3RTY29wZS5nbG9iYWxzPy5lbnZpcm9ubWVudHMpIHsgLy8gd2hlbiBFTlYgY2hhbmdlZCBnZXQgZnJvbSBlbnZpbmZvIHN0YXRpc3RpY3MgZnJvbSBzZXJ2ZXIgLSBUT0RPICBtb3ZlIHRoaXMgaW4gbG9hZEFQUCA/PyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhlbnRpY2F0aW9uU2VydmljZS5nZXRPcmdTY2hlbWFzKCRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlcj8ub3JnYW5pc2F0aW9uLmlkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhKSAgJHJvb3RTY29wZS5nbG9iYWxzLmVudmlyb25tZW50cyA9IHJlc3BvbnNlLmRhdGEucmVkdWNlKChhY2MsIG9iaikgPT4gIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjW29iai5pZC50b1N0cmluZygpXSA9IG9iajtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwge30pOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRyb290U2NvcGUuZ2xvYmFscz8uZW52aXJvbm1lbnRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIFxyXG4gICAgICAgICB9IGVsc2UgcmV0dXJuICRyb290U2NvcGUuZ2xvYmFscz8uZW52aXJvbm1lbnRzXHJcblx0fVxyXG5cdFxyXG5cdFxyXG5cclxuICAgIFxyXG5cdCRzY29wZS5nb1RvRW52ID0gZnVuY3Rpb24od2hlcmV0bykgXHJcbiAgICAgIHsgICAgICAgXHJcbiAgICAgICAgbGV0IGFjdGlvbnMgPSB7ICBcdCdhY3Rpb25zJzogeyBcclxuXHRcdFx0XHRcdCAnc2V0JzogIFx0XHQgeyAgJ2RlZmF1bHRFbnYnOiB3aGVyZXRvLCAgfVxyXG4gICAgICAgICB9fVxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICgkc2NvcGUuYWN0aW9uVHlwZSA9PSAnY2hhbmdlJykge1xyXG5cdFx0XHQvL2RlYnVnZ2VyXHJcbiAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oXCJlbnZpcm9ubWVudFwiLCB3aGVyZXRvLmlkICApXHJcblx0XHRcdCRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50RW52ID0gIHdoZXJldG8uaWRcdCAgIFxyXG4gICAgICAgICAgICBNZW51U2VydmljZS5yZXNldE5hdmJhcigpXHJcbiAgICAgICAgICAgICRsb2NhdGlvbi5zZWFyY2goJ2FwcF9yZWYnLCBudWxsKVxyXG4gXHRcdFx0JHN0YXRlLmdvKCdhcHAubmF2YmFyLmhvbWUnLHsnYXBwX3JlZic6IG51bGwsICdlbnYnOndoZXJldG8uaWR9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cdFx0XHRVc2VyU2VydmljZS5FeGVjdXRlQWN0aW9ucyhhY3Rpb25zKS50aGVuKFxyXG5cdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIHsgICAgICBcclxuXHRcdFx0XHRcdE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEubXNnLCdzdWNjZXNzJyk7ICAgICAgICAgICBcclxuXHRcdFx0XHR9LGZ1bmN0aW9uKGVycm9yKXtcclxuXHRcdFx0XHRcdE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5kYXRhLm1zZywnZXJyb3InKTtcclxuXHRcdFx0fSkgIFxyXG4gICAgICAgICAgXHJcblx0XHRcdHZhciBkZWZhdWx0X3BhZ2UgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIudWVwPy5QYXJhbXM/LkRlZmF1bHRQYWdlVXJpO1xyXG5cdFx0XHR2YXIgcGFyYW1zID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLnVlcD8uUGFyYW1zPy5EZWZhdWx0UGFnZVBhcmFtcztcclxuXHRcdFx0aWYgKHBhcmFtcyA9PSB1bmRlZmluZWQpXHQgcGFyYW1zPXt9XHJcblxyXG5cdFx0XHRwYXJhbXNbJ3NjaGVtYSddID0gd2hlcmV0by5pZFxyXG5cclxuXHRcdFx0bGV0IGRlZmF1bHRfYXBwID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLm9yZ2FuaXNhdGlvbj8uRGVmYXVsdEFwcFxyXG5cclxuXHRcdFx0dmFyIHN0YXRlTmFtZSA9ICdhcHAubmF2YmFyLmhvbWUnICAgXHJcblx0XHRcdGlmIChkZWZhdWx0X3BhZ2UhPXVuZGVmaW5lZCkgc3RhdGVOYW1lPWRlZmF1bHRfcGFnZSAgXHJcblxyXG5cdFx0XHRzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFwiZW52aXJvbm1lbnRcIiwgd2hlcmV0by5pZCAgKVxyXG5cdFx0XHQkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudEVudiA9ICB3aGVyZXRvLmlkXHJcblxyXG5cdFx0XHRpZiAoZGVmYXVsdF9hcHApIHtcclxuICAgICAgICAgICAgICAgIGxldCBhcHBfcmVmID0gJGxvY2F0aW9uLnNlYXJjaCgpLmFwcF9yZWY7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXBwX3JlZj09PXVuZGVmaW5lZCkgICBhcHBfcmVmID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyPy5vcmdhbmlzYXRpb24/LkRlZmF1bHRBcHBcclxuICAgICAgICAgICAgICAgIEF1dGhlbnRpY2F0aW9uU2VydmljZS5sb2FkQXBwKFwiXCIsIHsnZW52aXJvbm1lbnQnOiB3aGVyZXRvLmlkfSwgYXBwX3JlZik7XHJcblx0XHRcdH0gZWxzZSBcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdmFyIG5hdmJhcj1NZW51U2VydmljZS5nZXROYXZiYXJCeVRhcmdldE5hbWUoc3RhdGVOYW1lLGxhbmcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhcmFtcz09dW5kZWZpbmVkKSBwYXJhbXM9e307ICBcclxuICAgICAgICAgICAgICAgICRzdGF0ZS5nbyhzdGF0ZU5hbWUscGFyYW1zKTtcclxuICAgICAgICAgICAgfSAgICBcclxuICAgICAgICB9XHJcbiAgICAgIH0vL2dvVG9FbnYgZnVuYy8vXHJcblx0ICBcclxuXHJcblxyXG4gICAgICAgICAgIFxyXG59O1xyXG5cclxuXHJcblxyXG4iLCIndXNlIHN0cmljdCc7XHJcblxyXG5pbXBvcnQgaW5kZXhKc29uIGZyb20gJy4vLi4vLi4vMDAwMV9pbmRleC9hbmd1bGFySnMvaW5kZXguanNvbicvL3dpdGgge3R5cGU6ICdqc29uJ307XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbXBvcnREYXRhQ3RybCAoJGNvb2tpZXMsdWlVcGxvYWRlciwkZWxlbWVudCwkc2NvcGUsICRyb290U2NvcGUsICRsb2NhdGlvbiwgJHRpbWVvdXQsQXV0aGVudGljYXRpb25TZXJ2aWNlLFByb2Nlc3NpbmdTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLENvZGVzU2VydmljZSwkc3RhdGVQYXJhbXMpIHtcclxuICAgICAgICAgICAgXHJcblx0XHQkc2NvcGUuQ1RSTE5BTUU9J2ltcG9ydERhdGFDdHJsJztcclxuICAgICAgICAkc2NvcGUucmVzb3VyY2VJZD0kc3RhdGVQYXJhbXMucmVzb3VyY2VfaWQ7XHJcbiAgICAgICAgJHNjb3BlLnNob3dHcmlkPXRydWU7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdWlVcGxvYWRlci5jcmVhdGVVcGxvYWRlcigxKTsvL01JR09SIFRPRE8gIC0gb3ZvIGplIGJpbG8ga29kIG1lbmUsIG5lIHpuYW0gZGEgbGkgc2kgdG8gaXpiYWNpbyBpbGkgbmUgdHJlYmEgdmnFoWVcclxuICAgICAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2VcclxuICAgICAgICAkc2NvcGUuZ3NydmMucmVzZXRCb2R5QmdDb2xvcigpICAgXHJcbiAgICBcclxuICAgICAgICAkc2NvcGUuZ3JpZE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIGVuYWJsZUdyaWRNZW51OiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93R3JpZEZvb3RlcjogdHJ1ZSxcclxuICAgICAgICAgICAgLy9zaG93Q29sdW1uRm9vdGVyOiB0cnVlLFxyXG4gICAgICAgICAgICBlbmFibGVSb3dTZWxlY3Rpb246IHRydWUsXHJcbiAgICAgICAgICAgICAgICBtdWx0aVNlbGVjdDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBlbmFibGVIb3Jpem9udGFsU2Nyb2xsYmFyIDogMCwgXHJcbiAgICAgICAgICAgICAgICBlbmFibGVWZXJ0aWNhbFNjcm9sbGJhciA6IDIsXHJcbiAgICAgICAgICAgICAgICAvL2VuYWJsZUZpbHRlcmluZzogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGVuYWJsZVJvd0hlYWRlclNlbGVjdGlvbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGVuYWJsZUNvbHVtblJlc2l6aW5nOiB0cnVlLFxyXG4gICAgICAgICAgICB1c2VFeHRlcm5hbFBhZ2luYXRpb246IHRydWUsXHJcbiAgICAgICAgICAgIHBhZ2luYXRpb25QYWdlU2l6ZXM6IFs1LCAxMCwgNTAsMTAwLDIwMCw1MDAsMTAwMF0sXHJcbiAgICAgICAgICAgIGVuYWJsZVBhZ2luYXRpb25Db250cm9sczogZmFsc2UsXHJcbiAgICAgICAgfVxyXG4gIC8qICAgJHNjb3BlLmdyaWRPcHRpb25zLmNvbHVtbkRlZnMgPSBbICAgIHsgbmFtZTonaWQnLCB3aWR0aDo1MCB9LCAgICB7IG5hbWU6J25hbWUnIH0sICBdOyovXHJcbiAgXHJcbiAgICAgJHNjb3BlLmdyaWRPcHRpb25zLm9uUmVnaXN0ZXJBcGkgPSBmdW5jdGlvbiAoZ3JpZEFwaSkge1xyXG4gICAgICAgIC8vc2V0IGdyaWRBcGkgb24gc2NvcGVcclxuICAgICAgICAkc2NvcGUuZ3JpZEFwaSA9IGdyaWRBcGk7XHJcbiAgICAgICAgICBncmlkQXBpLnNlbGVjdGlvbi5vbi5yb3dTZWxlY3Rpb25DaGFuZ2VkKCRzY29wZSxmdW5jdGlvbihyb3cpe1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICRzY29wZS5pc1NlbGVjdGVkPXJvdy5pc1NlbGVjdGVkO1xyXG4gICAgICAgICAgICAvLyRzY29wZS5zaG93R3JpZD1mYWxzZTtcclxuICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkSWQgPSByb3cuZW50aXR5LmlkO1xyXG4gICAgICAgICAgICAvLyRzY29wZS5zZWxlY3RlZFRhc2tPYmplY3QgPSByb3cuZW50aXR5O1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgfVxyXG4gICAgIFxyXG5cdFxyXG5cdFx0JHNjb3BlLmFuaW1hdGlvbnNFbmFibGVkID0gdHJ1ZTtcdCBcclxuXHRcdHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcblx0XHR2YXIgdHlwZT1cImZpbGVcIjsgXHJcblx0XHQgdmFyIG91dF9maWVsZHMgPSBbJ3Jlc291cmNlSWQnXTtcclxuICAgICAgICAgdmFyIGVsZW1lbnQgPSAkZWxlbWVudFswXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmaWxlRWxlbWVudCcpO1xyXG5cdFx0ICRzY29wZS5maWxlcyA9IFtdO1xyXG5cdFxyXG5cdFx0IHVpVXBsb2FkZXIucmVtb3ZlQWxsKDEpOyAvL01JR09SIFRFTVAtIFRSRUJBIG5la2FrbyBvYnJpc2F0aSBpbmljaWphbG5lIGZhamxvdmUga29kIHJlaWdzdHJhY2lqYSBhbGkgb3ZkamUgbmUgcmFkaSAhISFcclxuXHJcblx0XHQgIC8vR0VUIE1BQVBJTkdMSVNUICAgICAgICAgXHJcbiAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRNYXBwaW5nc0xpc3QoJHNjb3BlLnJlc291cmNlSWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgLy9NZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3JpZE9wdGlvbnMuZGF0YSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgZWxlbWVudFswXS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbihlKSB7XHJcblx0XHRcdCR0aW1lb3V0KGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRcdCAgdmFyIGZpbGVzID0gZS50YXJnZXQuZmlsZXM7XHJcbiAgICAgICAgICAgICAgICAgIHVpVXBsb2FkZXIuYWRkRmlsZXMoZmlsZXMsMSk7XHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmZpbGVzID0gdWlVcGxvYWRlci5nZXRGaWxlcygxKTsgIFxyXG5cdFx0XHRcdCAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cdFx0XHRcdFxyXG4gICAgICAgICAgICB2YXIgZmlsZUNvdW50ZXIgPSAwO1xyXG5cdFx0XHQgICAgICAgICAgXHJcblx0XHRcdCRzY29wZS5idG5fcmVtb3ZlID0gZnVuY3Rpb24oaW5kZXgsZmlsZSkge1x0XHJcbiAgICAgICAgICAgICAgICAgICAgJGxvZy5pbmZvKCdkZWxldGluZz0nICsgZmlsZSk7XHJcblx0XHRcdFx0XHR2YXIgcz0kc2NvcGU7XHJcblx0XHRcdFx0XHR2YXIgZj1mb3JtQ3RybDtcclxuICAgICAgICAgICAgICAgICAgICAgdWlVcGxvYWRlci5yZW1vdmVGaWxlKGZpbGUsMSk7XHJcblx0XHRcdFx0XHQgdmFyIGVycj0kc2NvcGUudGVzdFJ1bGVzKCk7XHJcblx0XHRcdFx0XHRcclxuICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgJHNjb3BlLmJ0bl9jbGVhbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHVpVXBsb2FkZXIucmVtb3ZlQWxsKDEpO1xyXG4gICAgICAgICAgICAgfTtcclxuXHJcblx0XHRcdFxyXG5cdFx0XHQvLyBGVU5DVElPTiAtIE9OX1NFTEVDVF9GSUxFVFlQRSBcclxuXHRcdFx0Ly8gTkFLT04gxaBUTyBTRSBaQSBQT0pFRElOQcSMTkkgRklMRSBPREFCRVJFIEZJTEUtVFlQRSAgLS0+ICRzY29wZS5yZXNvdXJjZUlkXHJcblx0XHRcdFx0XHRcclxuXHRcdFx0JHNjb3BlLm9uU2VsZWN0RmlsZVR5cGUgPSBmdW5jdGlvbiAoaXRlbSxmaWxlSW5kZXgpe1xyXG5cdFx0XHRcdFx0XHR2YXIgc2VsZWN0ZWRGaWxlVHlwZUlkPWl0ZW0uaWQ7XHJcblx0XHRcdFx0XHRcdCRzY29wZS5yZXNvdXJjZUlkPXNlbGVjdGVkRmlsZVR5cGVJZDtcclxuXHRcdFx0XHRcdFx0ICRzY29wZS5pc1Jlc291cmNlU2VsZWN0ZWQ9dHJ1ZTtcclxuXHRcdFx0ICAgICAgICAgICAgIGlmICgkc2NvcGUuZmlsZXNbZmlsZUluZGV4XS5maWxlUmVzb3VyY2VJRCE9c2VsZWN0ZWRGaWxlVHlwZUlkKSB7XHJcblx0XHRcdCAgICAgICAgICAgICAgJHNjb3BlLmZpbGVzW2ZpbGVJbmRleF0uZmlsZVJlc291cmNlSUQgPSBzZWxlY3RlZEZpbGVUeXBlSWQ7XHJcblx0XHRcdCAgICAgICAgICAgICAgJHNjb3BlLmZpbGVzW2ZpbGVJbmRleF0uZm9ybUxvYWRlZCA9IGZhbHNlO1xyXG5cdFx0XHQgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKFwib25TZWxlY3RGaWxlVHlwZSA6XCIgKyBzZWxlY3RlZEZpbGVUeXBlSWQpO1xyXG5cdFx0XHJcblx0XHRcdFx0XHRcdCRzY29wZS5maWxlSW5kZXg9ZmlsZUluZGV4O1xyXG5cdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHJcblx0XHRcdH0vL29uU2VsZWN0RmlsZVR5cGVcclxuXHRcdFx0XHJcblx0XHRcdFxyXG5cdFx0XHQkc2NvcGUuaW1wb3J0RGF0YSA9ZnVuY3Rpb24gKGZpbGVTZXJ2ZXJJZCkge1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdHZhciBpPWZpbGVTZXJ2ZXJJZDtcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdH1cclxuXHJcblxyXG4gICAgICAgICAgICAvL0ZBS0UgQVBJIC0gb3ZhaiBpbXBvcnRyZXNvdXJjZSBkb2xqZSBqZSBzYW1vIHphIHRlc3RpcmFuamUgaW1wb3J0YSBpeiBmaWxlYSAodmV6YW4gemEgVEVTVCBJTVBPUlQgYnV0dG9uKVxyXG4gICAgICAgICAgICAkc2NvcGUuaW1wb3J0VGVzdCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuaW1wb3J0UmVzb3VyY2UoMTE3LCAgICAgMjU3LCAgICAxNykudGhlbiggLy8gYXJndW1lbnRpIHN1IGZpbGUuc2VydmVySWQsICRzdGF0ZVBhcmFtcy5yZXNvdXJjZV9pZCwgJHNjb3BlLnNlbGVjdGVkSWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5saXN0T2ZGaWxlVHlwZXMgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdJbXBvcnRlZCBkYXRhIGZyb21lIGZpbGUgJysgZGF0YS5kYXRhLmZpbGVJZCArIFwiIHVzaW5nIG1hcHBpbmcgXCIgKyAkc2NvcGUuc2VsZWN0ZWRJZCwnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcblx0XHRcdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdFx0XHQvLyBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0VVBMT0FEIEFORCBJTVBPUlQgRklMRVxyXG5cdFx0JHNjb3BlLmJ0bl91cGxvYWQgPSBmdW5jdGlvbigpIHtcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdHZhciBjc3JmX3Rva2VuID0gJGNvb2tpZXMuZ2V0KCdjc3JmdG9rZW4nKTsgXHJcblx0XHRcdFx0XHRcclxuXHRcdFx0Ly8gWkEgc3Zha2kgRkFKTCBwb2plZGluYcSNbm8gIVxyXG5cdFx0XHR1aVVwbG9hZGVyLnN0YXJ0VXBsb2FkKDEseyAgXHJcblx0XHRcdFx0XHRcdHVybDonYXBpL2ZpbGUtdXBsb2FkLycsIFxyXG5cdFx0XHRcdFx0XHRoZWFkZXJzOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdCdYLUNTUkZUb2tlbicgOiBjc3JmX3Rva2VuICxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiB0aGlzLiRyb290Lmdsb2JhbHMuY3VycmVudFVzZXIuYXV0aGRhdGFcclxuXHRcdFx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRcdGNvbmN1cnJlbmN5OiAzLFxyXG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgIC8vIHUgZGF0YSBwdW5pbW8gcG9kYXRrZSB2ZXphbmUgemEgZmFqbCAtIGZpbGVUeXBlICwgSUQgcmVzdXJzYVxyXG5cdFx0XHRcdFx0XHRkYXRhOiB7cmVzb3VyY2VfZGVmX2lkOiRzY29wZS5yZXNvdXJjZUlkLHJlc291cmNlX2lkOjB9LCAvL0hBUkRDT0RJUkFOIFJFU09VUkNFX0lEID0gMCBcclxuXHRcdFx0XHRcdFx0b25Qcm9ncmVzczogZnVuY3Rpb24oZmlsZSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyRsb2cuaW5mbyhmaWxlLm5hbWUgKyAnPScgKyBmaWxlLmh1bWFuU2l6ZSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdCAkdGltZW91dChmdW5jdGlvbigpIHsgZmlsZS5zdGF0dXM9J1VwbG9hZGluZy4uLic7IH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdG9uQ29tcGxldGVkOiBmdW5jdGlvbihmaWxlLCByZXNwb25zZSxzdGF0dXMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdC8vJGxvZy5pbmZvKGZpbGUgKyAncmVzcG9uc2UnICsgcmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZGVidWdnZXJcclxuXHRcdFx0XHRcdFx0XHRcdHJlc3BvbnNlPUpTT04ucGFyc2UocmVzcG9uc2UpOyAvL2NvbnZlcnRpcmFtIHN0cmluZyB1IEpTT04gb2JqZWt0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzPT0yMDEpIHsgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOQUtPTiDFoFRPIFNNTyBVU1BKRVNOTyBVUExPQURBTEkgRklMRSBQT1pJVkFNTyBJTVBPUlRSRVNPVVJDRSAuLi5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZpbGUuc2VydmVySWQ9cmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdVcGxvYWRlZCBmaWxlICcrZmlsZS5zZXJ2ZXJJZCwnc3VjY2VzcycpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRpbWVvdXQoZnVuY3Rpb24oKSB7IGZpbGUudXBsb2FkU3VjY2Vzcz10cnVlOyAgfSk7XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZmlsZS5yZXNvdXJjZURhdGE9e307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pbXBvcnQgcmVzb3VyY2UgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuaW1wb3J0UmVzb3VyY2UoZmlsZS5zZXJ2ZXJJZCwkc3RhdGVQYXJhbXMucmVzb3VyY2VfaWQsJHNjb3BlLnNlbGVjdGVkSWQpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubGlzdE9mRmlsZVR5cGVzID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnSW1wb3J0ZWQgZGF0YSBmcm9tZSBmaWxlICcrZmlsZS5zZXJ2ZXJJZCArIFwiIHVzaW5nIG1hcHBpbmcgXCIgKyAkc2NvcGUuc2VsZWN0ZWRJZCwnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gUFJJUFJFTUEgJHNjb3BlLnJlc291cmNlRGF0YSAgWkEgVVBMT0FEIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGZpbGUuZGFzaGJvYXJkIT11bmRlZmluZWQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICB2YXIgZmllbGRJZD1cIlwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIHZhciBzYz0kc2NvcGU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCBmaWxlQ291bnRlcisrO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBpZiAoJHNjb3BlLmZpbGVzLmxlbmd0aCA9PSBmaWxlQ291bnRlcil7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAvLyAgJHJvb3RTY29wZS4kYnJvYWRjYXN0KCdJbml0aWF0ZVRhc2tGaWxlc1VwbG9hZGVkJyx7J3Jlc291cmNlX2lkJzokc2NvcGUubGlua2VkUmVzb3VyY2VJZCwncmVzb3VyY2VfZGVmX2lkJzogJHNjb3BlLmxpbmtlZFJlc291cmNlRGVmSWR9KVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgLy99XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cclxuXHRcdFx0XHRcdFx0XHRcdH0vL2lmXHJcblx0XHRcdFx0XHRcdFx0XHRlbHNlIHsgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly9pZiBmaWxlIHVwbG9hZCBlcnJvclxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCR0aW1lb3V0KGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCBmaWxlLnVwbG9hZEVycm9yPXRydWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0IGZpbGUuc3RhdHVzPXJlc3BvbnNlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1x0XHRcdFx0XHQgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHR9IC8vb25fY29tcGxldGVkXHJcblx0XHRcdFx0XHRcdH0pIC8vc3RhcnRVcGxvYWRcclxuXHRcdFx0XHRcdFxyXG5cdFx0fTsgLy8gRlVOQ1RJT04gYnRuX3VwbG9hZFxyXG5cdFx0XHRcdFx0IFx0XHQgXHJcblx0XHRSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkJ5VHlwZShsYW5nLHR5cGUpLnRoZW4oXHJcblx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24oZGF0YSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICRzY29wZS5saXN0T2ZGaWxlVHlwZXMgPSBkYXRhLmRhdGE7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCBcclxuXHRcdFx0XHRcdFx0XHRcdH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0TWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuXHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdCAvKiBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZihsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuXHRcdFx0XHRcdFx0XHRcdCAkc2NvcGUubGlzdE9mUmVzb3VyY2VEZWZzID0gZGF0YS5kYXRhOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ki9cclxuICAgICBcclxuICAgICAgICBcclxuXHQgIHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzQnlOYW1lKCdyZXNvdXJjZXR5cGUnLGxhbmcpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZVR5cGVMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIENvZGVzU2VydmljZS5nZXRDb2Rlc0J5TmFtZSgnY29kZXN0YXR1cycsbGFuZykudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZVN0YXR1c0xpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzQnlOYW1lKCdfUkVTT1VSQ0VfR1JPVVBfJyxsYW5nKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlR3JvdXBMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICBcclxuICAgICAgJHNjb3BlLm5ld1Jlc291cmNlID0gZnVuY3Rpb24gKGlzVmFsaWQpIHtcclxuICAgICAgICAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLlNhdmVSZXNvdXJjZURlZigpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoXCJTYXZlIGZhaWxlZCAtIHBsZWFzZSBlbnRlciBhbGwgcmVxdWlyZWQgZGF0YSFcIiwnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiBcclxuICAgICAgIFxyXG4gICAgICBcclxufS8vLi4uaW1wb3J0RGF0YUN0cmxcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkYXRhc2V0VHJhbnNmb3JtQ3RybCAoJHNjb3BlLCAkcm9vdFNjb3BlLCAkbG9jYXRpb24sICR0aW1lb3V0LEF1dGhlbnRpY2F0aW9uU2VydmljZSxQcm9jZXNzaW5nU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSxDb2Rlc1NlcnZpY2UsVXNlclNlcnZpY2UsZHJhZ3VsYXJTZXJ2aWNlKSB7XHJcbiAgICBcclxuICAgICRzY29wZS5DVFJMPSdkYXRhc2V0VHJhbnNmb3JtQ3RybCc7XHJcbiAgICAkc2NvcGUuZGF0YXNldERpY3Q9e31cclxuXHQkc2NvcGUucHVibGlzaGVkRm9ybXM9e31cclxuICAgIFxyXG4gICAgJHNjb3BlLmdyaWRPcHRpb25zMSA9IHtcclxuICAgICAgICBjb2x1bW5EZWZzOiBbXHJcbiAgICAgICAgIHsgbmFtZTogJ2lkJywgZGlzcGxheU5hbWU6ICdJRCcsIHR5cGU6ICdudW1iZXInLCB3aWR0aDonNyUnLGVuYWJsZUhpZGluZzogZmFsc2UsIHZpc2libGU6IHRydWUgfSxcclxuICAgICAgICAgeyBuYW1lOiAnbmFtZScsIGRpc3BsYXlOYW1lOiAnTWFwcGluZyBuYW1lJ30sXHJcbiAgICAgICAgIHsgbmFtZTogJ2RhdGFzZXQxbmFtZScsIGRpc3BsYXlOYW1lOiAnRGF0YXNldCAxJyB9LFxyXG4gICAgICAgICB7IG5hbWU6ICdkYXRhc2V0Mm5hbWUnLCBkaXNwbGF5TmFtZTogJ0RhdGFzZXQgMicgfSxcclxuICAgICAgICAgeyBuYW1lOiAnbWFwcGluZ3R5cGUnLCBkaXNwbGF5TmFtZTogJ01hcHBpbmcgdHlwZScgfSxcclxuICAgICAgICAgXSxcclxuICAgICAgICAgIGVuYWJsZUdyaWRNZW51OiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93R3JpZEZvb3RlcjogZmFsc2UsXHJcbiAgICAgICAgICAgIHNob3dDb2x1bW5Gb290ZXI6IHRydWUsXHJcbiAgICAgICAgICAgIGVuYWJsZVJvd1NlbGVjdGlvbjogdHJ1ZSxcclxuICAgICAgICAgICBtdWx0aVNlbGVjdDogZmFsc2UsXHJcbiAgICAgICAgICAgZW5hYmxlSG9yaXpvbnRhbFNjcm9sbGJhciA6IDIsIFxyXG4gICAgICAgICAgZW5hYmxlVmVydGljYWxTY3JvbGxiYXIgOiAyLFxyXG4gICAgICAgICAgIGVuYWJsZUZpbHRlcmluZzogdHJ1ZSxcclxuICAgICAgICAgICBlbmFibGVSb3dIZWFkZXJTZWxlY3Rpb246IHRydWUsXHJcbiAgICAgICAgICAgZW5hYmxlQ29sdW1uUmVzaXppbmc6IHRydWUsXHJcbiAgICAgICAgIC8qICAgcGFnaW5hdGlvblBhZ2VTaXplczogWzUsIDEwLCAyMCwgNTAsIDEwMF0sICAgcGFnaW5hdGlvblBhZ2VTaXplOiA1LCAgIGVuYWJsZVNlbGVjdEFsbDogZmFsc2UsICAgZW5hYmxlQ2VsbEVkaXQ6IGZhbHNlKi8gIFxyXG4gICAgICAgfVxyXG4gICBcclxuICAgICRzY29wZS5ncmlkT3B0aW9uczIgPSB7XHJcbiAgICAgICAgY29sdW1uRGVmczogW1xyXG4gICAgICAgICB7IG5hbWU6ICdpZCcsIGRpc3BsYXlOYW1lOiAnSUQnLCB0eXBlOiAnbnVtYmVyJywgd2lkdGg6JzclJyxlbmFibGVIaWRpbmc6IGZhbHNlLCB2aXNpYmxlOiB0cnVlIH0sXHJcbiAgICAgICAgIHsgbmFtZTogJ3RyYW5zZm9ybV9uYW1lJywgZGlzcGxheU5hbWU6ICdUcmFuc2Zvcm0gbmFtZSd9LFxyXG4gICAgICAgICB7IG5hbWU6ICduYW1lJywgZGlzcGxheU5hbWU6ICdUcmFuc2Zvcm0gbGFiZWwnfSxcclxuICAgICAgICAgeyBuYW1lOiAnZmllbGRfdHlwZTEubmFtZScsIGRpc3BsYXlOYW1lOiAnRmllbGQgMSB0eXBlJyB9LFxyXG4gICAgICAgICB7IG5hbWU6ICdmaWVsZF90eXBlMi5uYW1lJywgZGlzcGxheU5hbWU6ICdGaWVsZCAyIHR5cGUgJyB9LFxyXG4gICAgICAgICBdLFxyXG4gICAgICAgIGVuYWJsZUdyaWRNZW51OiB0cnVlLFxyXG4gICAgICAgIHNob3dHcmlkRm9vdGVyOiBmYWxzZSxcclxuICAgICAgICBzaG93Q29sdW1uRm9vdGVyOiB0cnVlLFxyXG4gICAgICAgIGVuYWJsZVJvd1NlbGVjdGlvbjogdHJ1ZSxcclxuICAgICAgIG11bHRpU2VsZWN0OiBmYWxzZSxcclxuICAgICAgIGVuYWJsZUhvcml6b250YWxTY3JvbGxiYXIgOiAyLCBcclxuICAgICAgZW5hYmxlVmVydGljYWxTY3JvbGxiYXIgOiAyLFxyXG4gICAgICAgZW5hYmxlRmlsdGVyaW5nOiB0cnVlLFxyXG4gICAgICAgZW5hYmxlUm93SGVhZGVyU2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgICAgZW5hYmxlQ29sdW1uUmVzaXppbmc6IHRydWUsXHJcbiAgICAgLyogIHBhZ2luYXRpb25QYWdlU2l6ZXM6IFs1LCAxMCwgMjAsIDUwLCAxMDBdLCAgICAgICAgIHBhZ2luYXRpb25QYWdlU2l6ZTogNSwgICAgICAgZW5hYmxlU2VsZWN0QWxsOiBmYWxzZSwgICAgICAgZW5hYmxlQ2VsbEVkaXQ6IGZhbHNlKi8gIFxyXG4gICB9XHJcbiAgIFxyXG4gICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2VcclxuICAgJHNjb3BlLmdzcnZjLnJlc2V0Qm9keUJnQ29sb3IoKSAgIFxyXG4gICAgXHJcbiAgICRzY29wZS5yZW1vdmVJdGVtPSAgKHBpbmRleCxpbmRleCkgPT4gJHNjb3BlLmRhdGFzZXQyRmllbGRzW3BpbmRleF0uZmllbGRzLnNwbGljZShpbmRleCwxKTtcclxuICAgJHNjb3BlLnJlbW92ZUl0ZW1GMj0gIChwaW5kZXgsaW5kZXgpID0+ICRzY29wZS5kYXRhc2V0MkZpZWxkc1twaW5kZXhdLmZpZWxkczIuc3BsaWNlKGluZGV4LDEpO1xyXG4gICAgICAgXHJcbiAgIHZhciBkcmFrZTtcclxuICAgXHJcbiAgICAgJHNjb3BlLnNldHVwRHJhZ3VsYXIgPSBmdW5jdGlvbihkcmFndWxhckNvbnRhaW5lck1vZGVscyxkcmFndWxhckNvbnRhaW5lckNsYXNzZXMsY29weSxuYW1lc3BhY2VzKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udGFpbmVycz1bXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9MDtpPGRyYWd1bGFyQ29udGFpbmVyQ2xhc3Nlcy5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShkcmFndWxhckNvbnRhaW5lckNsYXNzZXNbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcnMucHVzaChjb250YWluZXJbMF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFrZSA9IGRyYWd1bGFyU2VydmljZShjb250YWluZXJzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlOm5hbWVzcGFjZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2ZXJ0T25TcGlsbDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weTogY29weSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJzTW9kZWw6IGRyYWd1bGFyQ29udGFpbmVyTW9kZWxzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZXM6IGZ1bmN0aW9uIChlbCwgY29udGFpbmVyLCBoYW5kbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZS5jbGFzc0xpc3QuY29udGFpbnMoXCJlbGVtZW50LWRyYWctaGFuZGxlXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgJHNjb3BlLnNldHVwUmVzb3VyY2VzRHJhZ3VsYXIgPSBmdW5jdGlvbiAocmVzb3VyY2VpZCx0eXBlKSB7XHJcblx0XHQvLyBnZXQgRklFTERTIGZvciBkYXRhc2V0MVxyXG5cdFx0UmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UHVibGlzaGVkUmVzb3VyY2VCeUlkKHJlc291cmNlaWQpLnRoZW4oXHJcblx0XHRcdFx0ZnVuY3Rpb24gKGRhdGEpIHtcclxuXHRcdFx0XHRcdC8vZGVidWdnZXJcclxuXHRcdFx0XHRcdCBpZiAodHlwZT09MSl7IC8vID09MSAoREFUQVNFVDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGF0YXNldDFGaWVsZHMgPSBkYXRhLmRhdGEuRGVmaW5pdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZXR1cERyYWd1bGFyKFskc2NvcGUuZGF0YXNldDFGaWVsZHNdLFsnZGF0YXNldDFDb250YWluZXInXSx0cnVlLCdkYXRhc2V0MScpOyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgfSAgZWxzZSB7ICAvLyAgPD4xICggREFUQVNFVDIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGF0YXNldDJGaWVsZHMgPSBkYXRhLmRhdGEuRGVmaW5pdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkcmFndWxhckNvbnRhaW5lckNsYXNzZXM9W107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZHJhZ3VsYXJDb250YWluZXJNb2RlbHMgPSBbXTsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IodmFyIGk9MDtpPCRzY29wZS5kYXRhc2V0MkZpZWxkcy5sZW5ndGg7aSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5kYXRhc2V0MkZpZWxkc1tpXS5maWVsZHM9PXVuZGVmaW5lZCkgJHNjb3BlLmRhdGFzZXQyRmllbGRzW2ldWydmaWVsZHMnXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ3VsYXJDb250YWluZXJNb2RlbHMucHVzaCgkc2NvcGUuZGF0YXNldDJGaWVsZHNbaV0uZmllbGRzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWd1bGFyQ29udGFpbmVyQ2xhc3Nlcy5wdXNoKCdleGFtcGxlUm93JytpKTsgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNldHVwRHJhZ3VsYXIoZHJhZ3VsYXJDb250YWluZXJNb2RlbHMsZHJhZ3VsYXJDb250YWluZXJDbGFzc2VzLGZhbHNlLCdkYXRhc2V0MicpO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICB9KVxyXG5cdFx0XHRcdFx0XHJcbiAgICAgICAgfSBcclxuICAgICAgICBcclxuXHRcdFxyXG5cdFx0JHNjb3BlLkdldFB1Ymxpc2hlZFJlc291cmNlQnlJZCA9IGZ1bmN0aW9uKGRhdGFzZXQxb3IyRmllbGRzLCByZXMpIFxyXG5cdFx0e1xyXG5cdFx0XHR2YXIgcmVzXHJcblx0XHRcdGlmIChkYXRhc2V0MW9yMkZpZWxkcyA9PSAnZGF0YXNldDFGaWVsZHMnKSAgcmVzID0gJHNjb3BlLm1hcHBpbmdGaWVsZHNbJ2RhdGFzZXQxJ10/LnZlcnNpb25cclxuXHRcdFx0aWYgKGRhdGFzZXQxb3IyRmllbGRzID09ICdkYXRhc2V0MkZpZWxkcycpICByZXMgPSAkc2NvcGUubWFwcGluZ0ZpZWxkc1snZGF0YXNldDInXT8udmVyc2lvblxyXG5cdFx0XHRcclxuICAgICAgICAgaWYgKHJlcyAmJiByZXMubGVuZ3RoPjApIFxyXG5cdFx0XHQgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UHVibGlzaGVkUmVzb3VyY2VCeUlkKHJlcy5pZCkudGhlbihcclxuXHRcdFx0XHRmdW5jdGlvbiAoZGF0YSkge1xyXG5cdFx0XHRcdFx0aWYgKGRhdGFzZXQxb3IyRmllbGRzPT0nZGF0YXNldDFGaWVsZHMnKSB7XHJcblx0XHRcdFx0XHRcdCAkc2NvcGVbJ2RhdGFzZXQxRmllbGRzJ10gPSBkYXRhLmRhdGEuRGVmaW5pdGlvbjsgXHJcblx0XHRcdFx0XHRcdCAkc2NvcGUuc2V0dXBEcmFndWxhcihbJHNjb3BlWydkYXRhc2V0MUZpZWxkcyddXSxbJ2RhdGFzZXQxQ29udGFpbmVyJ10sdHJ1ZSwnZGF0YXNldDEnKTsgXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRpZiAoZGF0YXNldDFvcjJGaWVsZHM9PSdkYXRhc2V0MkZpZWxkcycpIHtcclxuXHRcdFx0XHRcdFx0ICAkc2NvcGVbJ2RhdGFzZXQyRmllbGRzJ10gPSBkYXRhLmRhdGEuRGVmaW5pdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZHJhZ3VsYXJDb250YWluZXJDbGFzc2VzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRyYWd1bGFyQ29udGFpbmVyTW9kZWxzID0gW107ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IodmFyIGk9MDtpPCRzY29wZS5kYXRhc2V0MkZpZWxkcy5sZW5ndGg7aSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5kYXRhc2V0MkZpZWxkc1tpXS5maWVsZHM9PXVuZGVmaW5lZCkgJHNjb3BlLmRhdGFzZXQyRmllbGRzW2ldWydmaWVsZHMnXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ3VsYXJDb250YWluZXJNb2RlbHMucHVzaCgkc2NvcGUuZGF0YXNldDJGaWVsZHNbaV0uZmllbGRzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWd1bGFyQ29udGFpbmVyQ2xhc3Nlcy5wdXNoKCdleGFtcGxlUm93JytpKTsgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZXR1cERyYWd1bGFyKGRyYWd1bGFyQ29udGFpbmVyTW9kZWxzLGRyYWd1bGFyQ29udGFpbmVyQ2xhc3NlcyxmYWxzZSwnZGF0YXNldDInKTtcclxuXHRcdFx0XHRcdFx0ICAvLyRzY29wZS5zZXR1cERyYWd1bGFyKFskc2NvcGVbJ2RhdGFzZXQyRmllbGRzJ11dLFsnZGF0YXNldDJDb250YWluZXInXSx0cnVlLCdkYXRhc2V0MicpO1xyXG5cdFx0XHRcdFx0IH1cdCBcclxuICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblx0XHR9XHRcclxuICAgICRzY29wZS5nZXRUcmFuc2Zvcm1GaWVsZHMgPSBmdW5jdGlvbiAodHJhbnNmb3JtSWQsZmllbGQxLGZpZWxkMikge1xyXG5cdFx0Ly9nZXQgRklFTERTIGZvciB0cmFuc2Zvcm1cclxuICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0VHJhbnNmb3JtRmllbGRzKHRyYW5zZm9ybUlkLGZpZWxkMSxmaWVsZDIpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG5cdFx0XHQgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGU9PTEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhdGFzZXQxRmllbGRzID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNldHVwRHJhZ3VsYXIoWyRzY29wZS5kYXRhc2V0MUZpZWxkc10sWydkYXRhc2V0MUNvbnRhaW5lciddKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGF0YXNldDJGaWVsZHMgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZHJhZ3VsYXJDb250YWluZXJDbGFzc2VzPVtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRyYWd1bGFyQ29udGFpbmVyTW9kZWxzID0gW107ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKHZhciBpPTA7aTwkc2NvcGUuZGF0YXNldDJGaWVsZHMubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ3VsYXJDb250YWluZXJNb2RlbHMucHVzaCgkc2NvcGUuZGF0YXNldDJGaWVsZHNbaV0uZmllbGRzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWd1bGFyQ29udGFpbmVyQ2xhc3Nlcy5wdXNoKCdleGFtcGxlUm93JytpKTsgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZXR1cERyYWd1bGFyKGRyYWd1bGFyQ29udGFpbmVyTW9kZWxzLGRyYWd1bGFyQ29udGFpbmVyQ2xhc3Nlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAkc2NvcGUuZ3JpZE9wdGlvbnMxLm9uUmVnaXN0ZXJBcGkgPSBmdW5jdGlvbiAoZ3JpZEFwaSkge1xyXG4gICAgICAgICRzY29wZS5ncmlkQXBpID0gZ3JpZEFwaTtcclxuXHRcdFxyXG4gICAgICAgIGdyaWRBcGkuc2VsZWN0aW9uLm9uLnJvd1NlbGVjdGlvbkNoYW5nZWQoJHNjb3BlLGZ1bmN0aW9uKHJvdylcclxuXHRcdHtcclxuICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlU2VsZWN0ZWQ9cm93LmlzU2VsZWN0ZWQ7XHJcbiAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZFJlc291cmNlID0gcm93LmVudGl0eS5pZDtcclxuICAgICAgICAgICAgaWYgKGRyYWtlIT11bmRlZmluZWQpICBkcmFrZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUuZGF0YXNldDFGaWVsZHMhPXVuZGVmaW5lZCkgJHNjb3BlLmRhdGFzZXQxRmllbGRzLmxlbmd0aD0wO1xyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmRhdGFzZXQyRmllbGRzIT11bmRlZmluZWQpICRzY29wZS5kYXRhc2V0MkZpZWxkcy5sZW5ndGg9MDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VTZWxlY3RlZCkgIHtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHQgICBSZXNvdXJjZXNEYXRhU2VydmljZS5HZXRQdWJsaXNoZWRSZXNvdXJjZXNCeVR5cGVJZChyb3cuZW50aXR5LmRhdGFzZXQxdWlkICwnZm9ybScpXHJcblx0XHRcdFx0ICAgLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHsgICAgICAgXHJcblx0XHRcdFx0XHRcdCRzY29wZS5wdWJsaXNoZWRGb3Jtc1snZGF0YXNldDEnXSA9IGRhdGEuZGF0YTtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIFJlc291cmNlc0RhdGFTZXJ2aWNlLkdldFB1Ymxpc2hlZFJlc291cmNlc0J5VHlwZUlkKHJvdy5lbnRpdHkuZGF0YXNldDJ1aWQgLCdmb3JtJylcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0ICAgLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHsgLy8gIFB1bmkgbWFwcGluZyBzdHJ1a3R1cnUgemEgQVBJIHBveml2XHJcblx0XHRcdFx0XHQgICBcclxuXHRcdFx0XHRcdCAgIFxyXG5cdFx0XHRcdFx0ICAgJHNjb3BlLnRtcE1hcHBpbmdGaWVsZHM9e31cclxuXHRcdFx0XHRcdCAgICRzY29wZS5wdWJsaXNoZWRGb3Jtc1snZGF0YXNldDInXSA9IGRhdGEuZGF0YTtcclxuXHRcdFx0XHRcdCAgIFxyXG5cdFx0XHRcdFx0ICAgJHNjb3BlLnNldHVwUmVzb3VyY2VzRHJhZ3VsYXIocm93LmVudGl0eS5kYXRhc2V0MSwxKTtcclxuXHRcdFx0XHRcdCAgICRzY29wZS5nZXREYXRhc2V0TWFwcGluZ3Mocm93LmVudGl0eS5pZClcclxuXHJcblx0XHRcdFx0XHQgICAkc2NvcGUudG1wTWFwcGluZ0ZpZWxkcy5tYXBwaW5nTmFtZT0gcm93LmVudGl0eS5uYW1lOyAgXHJcblx0XHRcdFx0XHQgICAkc2NvcGUudG1wTWFwcGluZ0ZpZWxkcy5tYXBwaW5nRGlzcGxheU5hbWUgPSByb3cuZW50aXR5LmRpc3BsYXluYW1lXHJcblx0XHRcdFx0XHQgICAkc2NvcGUudG1wTWFwcGluZ0ZpZWxkcy5kYXRhc2V0MT0ge2lkOnJvdy5lbnRpdHkuZGF0YXNldDF1aWQsICBuYW1lOiByb3cuZW50aXR5LmRhdGFzZXQxbmFtZX07XHJcblx0XHRcdFx0XHQgICAkc2NvcGUudG1wTWFwcGluZ0ZpZWxkcy5kYXRhc2V0MS52ZXJzaW9uID0geyBpZDogcm93LmVudGl0eS5kYXRhc2V0MSAsIFJlc291cmNlRGVmVWlkOiByb3cuZW50aXR5LmRhdGFzZXQxdWlkICB9XHJcblx0XHRcdFx0XHQgICAgXHJcblx0XHRcdFx0XHQgICAkc2NvcGUudG1wTWFwcGluZ0ZpZWxkcy5kYXRhc2V0Mj0ge2lkOnJvdy5lbnRpdHkuZGF0YXNldDJ1aWQsIG5hbWU6IHJvdy5lbnRpdHkuZGF0YXNldDJuYW1lfTtcclxuXHRcdFx0XHRcdCAgICRzY29wZS50bXBNYXBwaW5nRmllbGRzLmRhdGFzZXQyLnZlcnNpb24gPSB7IGlkOnJvdy5lbnRpdHkuZGF0YXNldDIgLCBSZXNvdXJjZURlZlVpZDogcm93LmVudGl0eS5kYXRhc2V0MnVpZCB9XHJcblx0XHRcdFx0XHQgICBcclxuXHRcdFx0XHRcdCAgICRzY29wZS50bXBNYXBwaW5nRmllbGRzLm1hcHBpbmdUeXBlID0geyBpZDogJHNjb3BlLm1hcDJjb2RlRGljdFtyb3cuZW50aXR5Lm1hcHBpbmd0eXBlXSB9XHJcblx0XHRcdFx0XHQgICAkc2NvcGUubWFwcGluZ0ZpZWxkcyA9ICAkc2NvcGUudG1wTWFwcGluZ0ZpZWxkc1xyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHQgICB9KS5jYXRjaCggZnVuY3Rpb24oZXJyb3IpIHtcclxuXHRcdFx0XHRcdCAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG5cdFx0XHRcdCAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSAge1xyXG4gICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZERhdGFzZXQxID0geyB9O1xyXG4gICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZERhdGFzZXQyID0geyB9OyBcclxuICAgICAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgfVxyXG4gICAgIFxyXG4gICAkc2NvcGUuZ3JpZE9wdGlvbnMyLm9uUmVnaXN0ZXJBcGkgPSBmdW5jdGlvbiAoZ3JpZEFwaSkge1xyXG5cclxuICAgICAgICAkc2NvcGUuZ3JpZEFwaTIgPSBncmlkQXBpO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgZ3JpZEFwaS5zZWxlY3Rpb24ub24ucm93U2VsZWN0aW9uQ2hhbmdlZChcclxuXHRcdFx0XHJcblx0XHRcdCRzY29wZSxmdW5jdGlvbihyb3cpIHtcclxuXHJcblx0XHRcdFx0XHJcblx0XHRcdFxyXG5cdFx0XHRcdCAkc2NvcGUudHJhbnNmb3JtU2VsZWN0ZWQ9cm93LmlzU2VsZWN0ZWQ7XHJcblx0XHRcdFx0JHNjb3BlLnNlbGVjdGVkVHJhbnNmb3JtID0gcm93LmVudGl0eS5pZDtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRpZiAoJHNjb3BlLnRyYW5zZm9ybVBhY2thZ2UhPXVuZGVmaW5lZCkgJHNjb3BlLnRyYW5zZm9ybVBhY2thZ2UubGVuZ3RoPTA7XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0aWYgKCRzY29wZS50cmFuc2Zvcm1TZWxlY3RlZCkgeyAgICAgICAgICAgICAgICBcclxuXHRcdFx0XHQgICRzY29wZS5nZXRUcmFuc2Zvcm1GaWVsZHMocm93LmVudGl0eS5pZCk7IFxyXG5cdFx0XHRcdFx0Ly9maXggdGhpcyB3aXRoIGNvcnJlY3QgZmllbGRzIFRvRG9cclxuXHRcdFx0XHRcdC8vZGVidWdnZXJcclxuXHRcdFx0XHQgICRzY29wZS5zZWxlY3RlZERhdGFzZXQxID0ge2lkOnJvdy5lbnRpdHkuZmllbGRfdHlwZTEsbmFtZTogcm93LmVudGl0eS5maWVsZF90eXBlMX07XHJcblx0XHRcdFx0ICAkc2NvcGUuc2VsZWN0ZWREYXRhc2V0MiA9IHtpZDpyb3cuZW50aXR5LmZpZWxkX3R5cGUyLG5hbWU6IHJvdy5lbnRpdHkuZmllbGRfdHlwZTJ9O1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0ICAkc2NvcGUudG1wVHJhbnNmb3JtUGFja2FnZT17fVxyXG5cdFx0XHRcdCAgJHNjb3BlLnRtcFRyYW5zZm9ybVBhY2thZ2UuZmllbGRUeXBlMT0kc2NvcGUuc2VsZWN0ZWREYXRhc2V0MTtcclxuXHRcdFx0XHQgICRzY29wZS50bXBUcmFuc2Zvcm1QYWNrYWdlLmZpZWxkVHlwZTI9JHNjb3BlLnNlbGVjdGVkRGF0YXNldDI7XHJcblx0XHRcdFx0ICAkc2NvcGUudG1wVHJhbnNmb3JtUGFja2FnZS50cmFuc2Zvcm1EaXNwbGF5TmFtZT1yb3cuZW50aXR5Lm5hbWVcclxuXHRcdFx0XHQgICRzY29wZS50bXBUcmFuc2Zvcm1QYWNrYWdlLnRyYW5zZm9ybU5hbWU9cm93LmVudGl0eS50cmFuc2Zvcm1fbmFtZTsgXHJcblx0XHRcdFx0IGNvbnNvbGUubG9nKCRzY29wZS50bXBUcmFuc2Zvcm1QYWNrYWdlKTsgXHJcblxyXG5cclxuXHRcdFx0XHQgXHJcblx0XHRcdFx0IH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgIH1cclxuICAgXHJcbiAgICRzY29wZS5nZXRNYXBwaW5nUGFja2FnZXMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICBcclxuICAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZzsgICAgICAgIFxyXG4gICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRNYXBwaW5nUGFja2FnZXMoMCwwLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IG1hcEl0ZW0gb2YgZGF0YS5kYXRhKSB7ICAgLy9hcHBlbmQgRGF0YXNldE5hbWVzIHRvIG1hcHBpbmdzIGRhdGEgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZGF0YXNldERpY3RbbWFwSXRlbS5kYXRhc2V0MV0pICAgbWFwSXRlbS5kYXRhc2V0MW5hbWUgPSAkc2NvcGUuZGF0YXNldERpY3RbbWFwSXRlbS5kYXRhc2V0MV0gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuZGF0YXNldERpY3RbbWFwSXRlbS5kYXRhc2V0Ml0pICBtYXBJdGVtLmRhdGFzZXQybmFtZSA9ICRzY29wZS5kYXRhc2V0RGljdFttYXBJdGVtLmRhdGFzZXQyXSBcclxuICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgJHNjb3BlLmdyaWRPcHRpb25zMS5kYXRhID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9OyAgXHJcbiAgICBcclxuICAgICRzY29wZS5nZXREYXRhc2V0TWFwcGluZ3MgPSBmdW5jdGlvbiAoZGF0YXNldElkKSB7XHJcbiAgICBcclxuICAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgXHJcbiAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldERhdGFzZXRNYXBwaW5ncyhkYXRhc2V0SWQsbGFuZykudGhlbihcclxuXHRcdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIHsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5kYXRhc2V0MkZpZWxkcyA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3RyZWJhIGRyYWd1bGlyYXRpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkcmFndWxhckNvbnRhaW5lckNsYXNzZXM9W107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkcmFndWxhckNvbnRhaW5lck1vZGVscyA9IFtdOyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKHZhciBpPTA7aTwkc2NvcGUuZGF0YXNldDJGaWVsZHMubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ3VsYXJDb250YWluZXJNb2RlbHMucHVzaCgkc2NvcGUuZGF0YXNldDJGaWVsZHNbaV0uZmllbGRzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWd1bGFyQ29udGFpbmVyQ2xhc3Nlcy5wdXNoKCdleGFtcGxlUm93JytpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWd1bGFyQ29udGFpbmVyTW9kZWxzLnB1c2goJHNjb3BlLmRhdGFzZXQyRmllbGRzW2ldLmZpZWxkczIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ3VsYXJDb250YWluZXJDbGFzc2VzLnB1c2goJ2V4YW1wbGVSb3dGaWVsZHMyJytpKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZXR1cERyYWd1bGFyKGRyYWd1bGFyQ29udGFpbmVyTW9kZWxzLGRyYWd1bGFyQ29udGFpbmVyQ2xhc3Nlcyk7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9OyAgXHJcbiAgICBcclxuICAgICRzY29wZS5nZXRUcmFuc2Zvcm1GaWVsZHMgPSBmdW5jdGlvbiAodHJhbnNmb3JtSWQpIHtcclxuICAgIFxyXG4gICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRUcmFuc2Zvcm1GaWVsZHModHJhbnNmb3JtSWQpLnRoZW4oXHJcblx0XHRcdFx0ZnVuY3Rpb24oZGF0YSkgeyAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50cmFuc2Zvcm1GaWVsZHMgPSBkYXRhLmRhdGE7ICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07ICBcclxuICAgIFxyXG4gICAgXHJcbiAgICAvLyBQT1BVTkkgTElTVFUgREVGSU5JQ0lKQSBPRCBSRVNVUlNBIChSRVNPVVJDRVMgTElTVClcclxuXHQkc2NvcGUuZ2V0RGF0YXNldHMgPSBmdW5jdGlvbigpICB7XHJcblx0XHRcdHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUobGFuZywnZGF0YXNldCcpLnRoZW4oXHJcblx0XHRcdFx0XHRmdW5jdGlvbihkYXRhKSB7XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0JHNjb3BlLmRhdGFzZXRMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiAkc2NvcGUuZGF0YXNldExpc3QpICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5kYXRhc2V0RGljdFtpdGVtLmlkXSA9IGl0ZW0ubmFtZSAvLyBjcmVhdGUgZGljdGlvbmFyeSBmcm9tIGRhdGFzZXRMaXN0XHJcblx0XHRcdFx0XHR9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgfSk7XHJcblx0fVxyXG4gICAgXHJcbiAgICAgJHNjb3BlLnNob3dNYXBwaW5nRGF0YSA9IGZ1bmN0aW9uIChzZWxlY3RlZFJlc291cmNlKSB7XHJcbiAgICAgICAgIGlmIChzZWxlY3RlZFJlc291cmNlPT1mYWxzZSB8fCBzZWxlY3RlZFJlc291cmNlPT11bmRlZmluZWQpIFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAgJHNjb3BlLm1hcHBpbmdGaWVsZHM9e307XHJcbiAgICAgICAgICAgICAkc2NvcGUuc2F2ZURhdGFzZXRNYXBwaW5nSGVhZFN0YXR1cz0nY3JlYXRlTWFwcGluZydcclxuICAgICAgICAgIH0gZWxzZSAgIHtcclxuICAgICAgICAgICAgICAkc2NvcGUuc2F2ZURhdGFzZXRNYXBwaW5nSGVhZFN0YXR1cz0ndXBkYXRlTWFwcGluZydcclxuICAgICAgICAgICAgICAkc2NvcGUubWFwcGluZ0ZpZWxkcz0gJHNjb3BlLnRtcE1hcHBpbmdGaWVsZHM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICB9O1xyXG4gICAgICAgICAgXHJcbiAgICAgJHNjb3BlLnNob3dUcmFuc2Zvcm1EYXRhID0gZnVuY3Rpb24gKHNlbGVjdGVkUmVzb3VyY2UpIHtcclxuICAgICAgICAgXHJcbiAgICAgICAgIGlmIChzZWxlY3RlZFJlc291cmNlKSAge1xyXG4gICAgICAgICAgICAgICRzY29wZS5zYXZlRGF0YXNldFRyYW5zZm9ybUhlYWRTdGF0dXM9J3VwZGF0ZVRyYW5zZm9ybSdcclxuICAgICAgICAgICAgICAkc2NvcGUudHJhbnNmb3JtUGFja2FnZT0gJHNjb3BlLnRtcFRyYW5zZm9ybVBhY2thZ2U7XHJcbiAgICAgICAgICB9ICBlbHNlIFxyXG4gICAgICAgICAgeyAgLy9jcmVhdGUgbmV3XHJcbiAgICAgICAgICAgICAkc2NvcGUudHJhbnNmb3JtUGFja2FnZT17fTtcclxuICAgICAgICAgICAgICRzY29wZS5zYXZlRGF0YXNldFRyYW5zZm9ybUhlYWRTdGF0dXM9J2NyZWF0ZVRyYW5zZm9ybSdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAvLyAkc2NvcGUuZ2V0RGF0YXNldHMoKTsvL3B1bmkgZGF0YXNldExpc3RcclxuICAgICAgICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzQnlOYW1lKCdldWl1JyxsYW5nKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRyYW5zZm9ybUxpc3QgPSBkYXRhLmRhdGE7ICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgXHJcbiAgICAgfTtcdFx0XHRcdCAgXHJcbiAgICBcclxuICAgIFxyXG4gICAgICRzY29wZS5hZGRUcmFuc2Zvcm1GaWVsZCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgXHJcbiAgICAgICAkc2NvcGUudHJhbnNmb3JtRmllbGRzLnB1c2goe2lkOm51bGwsVHJhbnNmb3JtYXRpb25IZWFkSWQ6e0ZpZWxkVHlwZTE6e05hbWU6J3RleHQnfSxGaWVsZFR5cGUyOntOYW1lOid1c2VyJ319fSlcclxuICAgICB9O1xyXG4gICAgIFxyXG4gICAgIFxyXG4gICAgICAgJHNjb3BlLnNhdmVUcmFuc2Zvcm1GaWVsZHMgPSBmdW5jdGlvbiAoKSB7IFxyXG5cdFx0XHRSZXNvdXJjZXNEYXRhU2VydmljZS5zYXZlVHJhbnNmb3JtRmllbGRzKCRzY29wZS50cmFuc2Zvcm1GaWVsZHMsJHNjb3BlLnNlbGVjdGVkVHJhbnNmb3JtKS50aGVuKFxyXG5cdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50cmFuc2Zvcm1GaWVsZHMgPSBkYXRhLmRhdGEuZGF0YTsgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEubXNnLCdzdWNjZXNzJyk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5kYXRhLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAkc2NvcGUuc2F2ZURhdGFzZXRNYXBwaW5nRGV0YWlscyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgXHJcbiAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLnNhdmVEYXRhc2V0TWFwcGluZ0RldGFpbHMoJHNjb3BlLmRhdGFzZXQyRmllbGRzLCRzY29wZS5zZWxlY3RlZFJlc291cmNlKS50aGVuKFxyXG5cdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIHsgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5kYXRhLm1zZywnc3VjY2VzcycpOyAgXHJcbiAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLmRhdGEubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9OyAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAkc2NvcGUuc2F2ZURhdGFzZXRNYXBwaW5nSGVhZCA9IGZ1bmN0aW9uIChzZWxlY3RlZFJlc291cmNlKSB7Ly91bGF6OiAkc2NvcGUubWFwcGluZ0ZpZWxkcywkc2NvcGUuc2VsZWN0ZWRSZXNvdXJjZSlcclxuICAgICAgIFxyXG4gICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5zYXZlRGF0YXNldE1hcHBpbmdIZWFkKCRzY29wZS5tYXBwaW5nRmllbGRzLHNlbGVjdGVkUmVzb3VyY2UsbGFuZykudGhlbihcclxuXHRcdFx0XHRmdW5jdGlvbihkYXRhKSB7ICBcclxuXHRcdFx0XHRcdFx0ICAkc2NvcGUuZ2V0TWFwcGluZ1BhY2thZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5kYXRhLm1zZywnc3VjY2VzcycpO1xyXG5cdFx0XHRcdFx0XHQgLy9kZWJ1Z2dlclxyXG5cdFx0XHRcdFx0XHQgJHNjb3BlLnNlbGVjdGVkUmVzb3VyY2U9ZGF0YS5kYXRhLmRhdGFcclxuXHRcdFx0XHRcdFx0IC8vJHNjb3BlLnNlbGVjdGVkUmVzb3VyY2U9bnVsbFxyXG5cdFx0XHRcdFx0XHQgJHNjb3BlLnJlc291cmNlU2VsZWN0ZWQ9ZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zYXZlRGF0YXNldE1hcHBpbmdIZWFkU3RhdHVzPSdDYW5jZWxPckluaXQnXHJcbiAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNhdmVEYXRhc2V0TWFwcGluZ0hlYWRTdGF0dXM9J0NhbmNlbE9ySW5pdCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAkc2NvcGUuZ2V0TWFwcGluZ1BhY2thZ2VzKCk7XHJcbiAgICAgICAgfTsgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5jYW5jZWxNYXBwaW5nID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAkc2NvcGUuc2F2ZURhdGFzZXRNYXBwaW5nSGVhZFN0YXR1cz0nQ2FuY2VsT3JJbml0JztcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJHNjb3BlLnNhdmVEYXRhc2V0TWFwcGluZ0hlYWRTdGF0dXMpO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgICAgICRzY29wZS5jYW5jZWxUcmFuc2Zvcm0gID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAkc2NvcGUuc2F2ZURhdGFzZXRUcmFuc2Zvcm1IZWFkU3RhdHVzPSdDYW5jZWxPckluaXQnO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygkc2NvcGUuc2F2ZURhdGFzZXRUcmFuc2Zvcm1IZWFkU3RhdHVzKTtcclxuICAgICAgICAgfSBcclxuXHJcbiAgICAgICAgIFxyXG4gICAgICAgICRzY29wZS5zYXZlRGF0YXNldFRyYW5zZm9ybUhlYWQgPSBmdW5jdGlvbiAoc2VsZWN0ZWRSZXNvdXJjZSkge1xyXG4gICAgICAgICBcclxuXHRcdFx0UmVzb3VyY2VzRGF0YVNlcnZpY2Uuc2F2ZURhdGFzZXRUcmFuc2Zvcm1IZWFkKCRzY29wZS50cmFuc2Zvcm1QYWNrYWdlLHNlbGVjdGVkUmVzb3VyY2UsbGFuZykudGhlbihcclxuXHRcdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIHsgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5kYXRhLm1zZywnc3VjY2VzcycpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2F2ZURhdGFzZXRUcmFuc2Zvcm1IZWFkU3RhdHVzPSdDYW5jZWxPckluaXQnXHJcbiAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2F2ZURhdGFzZXRUcmFuc2Zvcm1IZWFkU3RhdHVzPSdDYW5jZWxPckluaXQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgJHNjb3BlLmdldFRyYW5zZm9ybVBhY2thZ2VzKCk7XHJcbiAgICAgICAgfTsgIFxyXG4gICAgICAgIFxyXG5cclxuICAgICAgICAgXHJcbiAgICBcclxuICAgICAgICAkc2NvcGUuZ2V0VHJhbnNmb3JtUGFja2FnZXMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICBcclxuICAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgXHJcbiAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFRyYW5zZm9ybVBhY2thZ2VzKGxhbmcpLnRoZW4oXHJcblx0XHRcdFx0ZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3JpZE9wdGlvbnMyLmRhdGEgPSBkYXRhLmRhdGE7ICBcclxuICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07ICBcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICRzY29wZS5nZXRVc2VycyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICBVc2VyU2VydmljZS5nZXRVc2Vyc0dyb3VwcygndXNlcnMnKS50aGVuKGZ1bmN0aW9uKGRhdGEpe1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUudXNlckxpc3QgPSBkYXRhLmRhdGE7ICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgICAgICBcclxuICAgICAgICAgJHNjb3BlLmdldENvZGVzRGV0YWlscyA9IGZ1bmN0aW9uKGNvZGVJZCkvLyBUT0RPIHphbWplbml0aSBvc3RhbGUgZ2V0Q29kZXNEZXRhaWxzIHNhIG92aW0gamVkbm9zdGF2bmltXHJcblx0XHQge1xyXG4gICAgICAgICAgICAgICRzY29wZS5jb2Rlc0RldGFpbHM9W107IFxyXG4gICAgICAgICAgICAgICBDb2Rlc1NlcnZpY2UuZ2V0Q29kZXNEZXRhaWxzKGNvZGVJZCxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY29kZXNEZXRhaWxzID0gZGF0YS5kYXRhOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcblx0XHQgIC8vIE1JR09SIC0gQWRkZWQgdmVyc2lvbmluZ1xyXG5cdCAgICAkc2NvcGUub25OZXdNYXBwaW5nU2VsZWN0Q2FsbGJhY2s9ZnVuY3Rpb24oaXRlbSwgc2VsZWN0ZWREYXRhc2V0KVxyXG4gICAgICAgIHtcclxuXHRcdCAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLkdldFB1Ymxpc2hlZFJlc291cmNlc0J5VHlwZUlkKGl0ZW0uaWQsJ2Zvcm0nKS50aGVuKFxyXG5cdFx0XHRcdFx0ZnVuY3Rpb24gKGRhdGEpIHsgICAgICAgXHJcblx0XHRcdFx0XHRcdCRzY29wZS5wdWJsaXNoZWRGb3Jtc1tzZWxlY3RlZERhdGFzZXRdID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cdFx0fVxyXG5cdFx0XHJcblxyXG4gICAgICAgICAgLy8gIFNFTEVDVCBGSUVMRFMgQ0FMTEJBQ0tTXHJcbiAgICAgICAgICAkc2NvcGUub25TZWxlY3RGaWVsZDEgPSBmdW5jdGlvbiAoaXRlbSl7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRyYW5zZm9ybVBhY2thZ2UuZGF0YXNldDE9bnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS50cmFuc2Zvcm1QYWNrYWdlLmRhdGFzZXQxRmllbGQ9bnVsbFxyXG4gICAgICAgICAgICAgICAgICBcdCRzY29wZS5zZWxlY3RlZEZpZWxkMT1pdGVtICAgICAgXHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICRzY29wZS5vblNlbGVjdEZpZWxkMiA9IGZ1bmN0aW9uIChpdGVtKXtcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS50cmFuc2Zvcm1QYWNrYWdlLmRhdGFzZXQyPW51bGxcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUudHJhbnNmb3JtUGFja2FnZS5kYXRhc2V0MkZpZWxkPW51bGw7XHJcbiAgICAgICAgICAgICAgICAgIFx0JHNjb3BlLnNlbGVjdGVkRmllbGQyPWl0ZW0gICBcclxuXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgLy8gICBUUkFOU0ZPUk0gQ0FMTEJBQ0tTXHJcbiAgICAgICAgICAkc2NvcGUub25TZWxlY3REYXRhc2V0MT0gZnVuY3Rpb24gKGl0ZW0pe1xyXG4gICAgICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRmllbGRzKGl0ZW0uaWQsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmllbGQxcmVzb3VyY2VzID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyBcclxuICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAkc2NvcGUub25TZWxlY3REYXRhc2V0MiA9IGZ1bmN0aW9uIChpdGVtKXtcclxuICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRmllbGRzKGl0ZW0uaWQsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZpZWxkMnJlc291cmNlcyA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy8qKioqKioqKioqKioqKioqICBpbmljaWphbGl6YWNpamEgKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgXHJcbiAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgIGlmICgkc2NvcGUubWFwcGluZ0ZpZWxkcz09PXVuZGVmaW5lZCkgXHJcblx0XHRcdFx0JHNjb3BlLm1hcHBpbmdGaWVsZHM9eyBkYXRhc2V0MToge30sIGRhdGFzZXQyOiB7fSB9O1xyXG4gICAgICBpZiAoJHNjb3BlLnRyYW5zZm9ybVBhY2thZ2U9PT11bmRlZmluZWQpIFxyXG5cdFx0XHQkc2NvcGUudHJhbnNmb3JtUGFja2FnZT17IFBhcmFtczp7fSB9O1xyXG4gICAgICBcclxuICAgICAgJHNjb3BlLmdldERhdGFzZXRzKCk7Ly9wdW5pIGRhdGFzZXRMaXN0XHJcbiAgICAgXHJcbiAgICAgICRzY29wZS5nZXRVc2VycygpO1xyXG5cdCAgXHJcblx0ICAkc2NvcGUubWFwMmNvZGVEaWN0ID17fVxyXG4gICAgICBDb2Rlc1NlcnZpY2UuZ2V0Q29kZXNCeU5hbWUoJ2RtdCcsbGFuZykudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgJHNjb3BlLmNvZGVMaXN0ID0gZGF0YS5kYXRhO1xyXG5cdFx0XHQgZGF0YS5kYXRhLmZvckVhY2goIChpdGVtLGluZGV4KSA9PlxyXG5cdFx0XHRcdCAkc2NvcGUubWFwMmNvZGVEaWN0W2l0ZW0udmFsdWVdID0gaXRlbS5pZFxyXG5cdFx0XHRcdCBcclxuXHRcdFx0IClcclxuICAgICAgfSk7IFxyXG4gICAgICAkc2NvcGUuZ2V0Q29kZXNEZXRhaWxzKDY5KTsvLzY5IGplIGlkIG9kIGRhdGFfdHJhbnNmb3JtIGtvZG92YSAtIG5lIG1vxb5lIG92YWtvLCBqZXIgaWQgb3Zpc2kgbyBzZXJ2ZXJ1LiBUcmViYSBieSBjb2RlIG5hbWVcclxuXHJcbiAgICAgICRzY29wZS5zYXZlRGF0YXNldE1hcHBpbmdIZWFkU3RhdHVzPSdDYW5jZWxPckluaXQnO1xyXG4gICAgICAkc2NvcGUuc2F2ZURhdGFzZXRUcmFuc2Zvcm1IZWFkU3RhdHVzPSdDYW5jZWxPckluaXQnO1xyXG4gICAgICAkc2NvcGUuZ2V0TWFwcGluZ1BhY2thZ2VzKCk7XHJcbiAgICAgICRzY29wZS5nZXRUcmFuc2Zvcm1QYWNrYWdlcygpO1xyXG4gICAgICBcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAvLy8vLy8vLyBLUkFKIERBVEFTRVRUUkFOU0ZPUk0gQ1RSTCAvLy8vLy8vLy8vL1xyXG5cclxuXHJcbiBleHBvcnQgZnVuY3Rpb24gbWFwcGluZ0RlZmluaXRpb25DdHJsICgkc2NvcGUsICRyb290U2NvcGUsICRsb2NhdGlvbiwgJHN0YXRlLCR0aW1lb3V0LEF1dGhlbnRpY2F0aW9uU2VydmljZSxQcm9jZXNzaW5nU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSxDb2Rlc1NlcnZpY2UsVXNlclNlcnZpY2UsZHJhZ3VsYXJTZXJ2aWNlKSB7XHJcbiAgICBcclxuICAgICRzY29wZS5DVFJMPSdtYXBwaW5nRGVmaW5pdGlvbkN0cmwnO1xyXG4gICAgJHNjb3BlLmRhdGFzZXREaWN0PXt9XHJcbiAgICAkc2NvcGUucHVibGlzaGVkRm9ybXM9e31cclxuICAgIFxyXG4gICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2VcclxuICAgJHNjb3BlLmdzcnZjLnJlc2V0Qm9keUJnQ29sb3IoKSAgIFxyXG4gICAgXHJcbiAgICRzY29wZS5yZW1vdmVJdGVtPSAgKHBpbmRleCxpbmRleCkgPT4gJHNjb3BlLmRhdGFzZXQyRmllbGRzW3BpbmRleF0uZmllbGRzLnNwbGljZShpbmRleCwxKTtcclxuICAgJHNjb3BlLnJlbW92ZUl0ZW1GMj0gIChwaW5kZXgsaW5kZXgpID0+ICRzY29wZS5kYXRhc2V0MkZpZWxkc1twaW5kZXhdLmZpZWxkczIuc3BsaWNlKGluZGV4LDEpO1xyXG4gICAgICAgXHJcbiAgIHZhciBkcmFrZTtcclxuICAgJHNjb3BlLnJlc291cmNlSWQgPSAkc3RhdGUucGFyYW1zPy5pZFxyXG4gICAgJHNjb3BlLmdldFJlc291cmNlQWxsID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLmxvYWRpbmdSZXNvdXJjZT10cnVlXHJcbiAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmQWxsKCRzY29wZS5yZXNvdXJjZUlkKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9hZGluZ1Jlc291cmNlPWZhbHNlIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLm1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UucmVzb3VyY2VEZWZEb3dubG9hZGVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5zZXRSZXNvdXJjZUZvcm1WZXJzaW9uKCRzY29wZS5yZXNvdXJjZS51aWQsJHNjb3BlLnJlc291cmNlKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubWFwcEhlYWQgPSAkc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VFeHRlbmRlZD8uTWFwcGluZ0hlYWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlLlJlc291cmNlRXh0ZW5kZWQ/Lk1hcHBpbmdJZCAhPXVuZGVmaW5lZCkgJHNjb3BlLmdldFJlc291cmNlRmllbGRzKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvYWRpbmdSZXNvdXJjZT1mYWxzZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH07ICAgICAgXHJcbiAgICAgJHNjb3BlLnNldFJlc291cmNlVmVyc2lvbiA9IGZ1bmN0aW9uKHR5cGUpe1xyXG4gICAgICAgIGlmICh0eXBlPT0xKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgbGV0IHBvcyA9ICRzY29wZS5wdWJsaXNoZWRGb3Jtcy5kYXRhc2V0MS5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZC50b1N0cmluZygpOyB9KS5pbmRleE9mKCRzY29wZS5tYXBwSGVhZD8uRGF0YXNldDEudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIGlmIChwb3M+PTApIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubWFwcGluZ0ZpZWxkcy5kYXRhc2V0MS52ZXJzaW9uID0gJHNjb3BlLnB1Ymxpc2hlZEZvcm1zLmRhdGFzZXQxW3Bvc11cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgIH1lbHNle1xyXG5cclxuICAgICAgICAgICAgbGV0IHBvczIgPSAkc2NvcGUucHVibGlzaGVkRm9ybXMuZGF0YXNldDIubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQudG9TdHJpbmcoKTsgfSkuaW5kZXhPZigkc2NvcGUubWFwcEhlYWQ/LkRhdGFzZXQyLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICBpZiAocG9zMj49MCkge1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5tYXBwaW5nRmllbGRzLmRhdGFzZXQyLnZlcnNpb24gPSAkc2NvcGUucHVibGlzaGVkRm9ybXMuZGF0YXNldDJbcG9zMl1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0gICAgICAgICAgXHJcbiAgICAkc2NvcGUuZ2V0UmVzb3VyY2VGaWVsZHM9ZnVuY3Rpb24oKXtcclxuXHJcbiAgICAgICAgJHNjb3BlLm1hcHBpbmdGaWVsZHMuZGF0YXNldDEudmVyc2lvbj17fVxyXG4gICAgICAgICRzY29wZS5tYXBwaW5nRmllbGRzLmRhdGFzZXQyLnZlcnNpb249e31cclxuICAgIFxyXG4gICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UHVibGlzaGVkUmVzb3VyY2VzQnlUeXBlSWQoJHNjb3BlLm1hcHBIZWFkLkRhdGFzZXQxdWlkICwnZm9ybScpXHJcbiAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoZGF0YSkgeyAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hlZEZvcm1zWydkYXRhc2V0MSddID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UHVibGlzaGVkUmVzb3VyY2VzQnlUeXBlSWQoJHNjb3BlLm1hcHBIZWFkLkRhdGFzZXQydWlkICwnZm9ybScpXHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChkYXRhKSB7IC8vICBQdW5pIG1hcHBpbmcgc3RydWt0dXJ1IHphIEFQSSBwb3ppdlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50bXBNYXBwaW5nRmllbGRzPXt9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hlZEZvcm1zWydkYXRhc2V0MiddID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZXR1cFJlc291cmNlc0RyYWd1bGFyKCRzY29wZS5tYXBwSGVhZC5EYXRhc2V0MSwxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ2V0RGF0YXNldE1hcHBpbmdzKCRzY29wZS5tYXBwSGVhZC5pZClcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50bXBNYXBwaW5nRmllbGRzLmRhdGFzZXQxPSB7aWQ6JHNjb3BlLm1hcHBIZWFkLkRhdGFzZXQxdWlkLCAgbmFtZTogJHNjb3BlLm1hcHBIZWFkLkRhdGFzZXQxTmFtZX07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRtcE1hcHBpbmdGaWVsZHMuZGF0YXNldDI9IHtpZDokc2NvcGUubWFwcEhlYWQuRGF0YXNldDJ1aWQsIG5hbWU6ICRzY29wZS5tYXBwSGVhZC5EYXRhc2V0Mk5hbWV9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5tYXBwaW5nRmllbGRzID0gICRzY29wZS50bXBNYXBwaW5nRmllbGRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNldFJlc291cmNlVmVyc2lvbigxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZXRSZXNvdXJjZVZlcnNpb24oMilcclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goIGZ1bmN0aW9uKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgXHJcbiAgICB9XHJcbiAgICAkc2NvcGUuc2V0dXBEcmFndWxhciA9IGZ1bmN0aW9uKGRyYWd1bGFyQ29udGFpbmVyTW9kZWxzLGRyYWd1bGFyQ29udGFpbmVyQ2xhc3Nlcyxjb3B5LG5hbWVzcGFjZXMpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250YWluZXJzPVtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0wO2k8ZHJhZ3VsYXJDb250YWluZXJDbGFzc2VzLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGRyYWd1bGFyQ29udGFpbmVyQ2xhc3Nlc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVycy5wdXNoKGNvbnRhaW5lclswXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWtlID0gZHJhZ3VsYXJTZXJ2aWNlKGNvbnRhaW5lcnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2U6bmFtZXNwYWNlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZlcnRPblNwaWxsOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5OiBjb3B5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcnNNb2RlbDogZHJhZ3VsYXJDb250YWluZXJNb2RlbHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlczogZnVuY3Rpb24gKGVsLCBjb250YWluZXIsIGhhbmRsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlLmNsYXNzTGlzdC5jb250YWlucyhcImVsZW1lbnQtZHJhZy1oYW5kbGVcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAkc2NvcGUuc2V0dXBSZXNvdXJjZXNEcmFndWxhciA9IGZ1bmN0aW9uIChyZXNvdXJjZWlkLHR5cGUpIHtcclxuICAgICAgICAvLyBnZXQgRklFTERTIGZvciBkYXRhc2V0MVxyXG4gICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLkdldFB1Ymxpc2hlZFJlc291cmNlQnlJZChyZXNvdXJjZWlkKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlPT0xKXsgLy8gPT0xIChEQVRBU0VUMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5kYXRhc2V0MUZpZWxkcyA9IGRhdGEuZGF0YS5EZWZpbml0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNldHVwRHJhZ3VsYXIoWyRzY29wZS5kYXRhc2V0MUZpZWxkc10sWydkYXRhc2V0MUNvbnRhaW5lciddLHRydWUsJ2RhdGFzZXQxJyk7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICB9ICBlbHNlIHsgIC8vICA8PjEgKCBEQVRBU0VUMilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5kYXRhc2V0MkZpZWxkcyA9IGRhdGEuZGF0YS5EZWZpbml0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRyYWd1bGFyQ29udGFpbmVyQ2xhc3Nlcz1bXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkcmFndWxhckNvbnRhaW5lck1vZGVscyA9IFtdOyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcih2YXIgaT0wO2k8JHNjb3BlLmRhdGFzZXQyRmllbGRzLmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmRhdGFzZXQyRmllbGRzW2ldLmZpZWxkcz09dW5kZWZpbmVkKSAkc2NvcGUuZGF0YXNldDJGaWVsZHNbaV1bJ2ZpZWxkcyddID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFndWxhckNvbnRhaW5lck1vZGVscy5wdXNoKCRzY29wZS5kYXRhc2V0MkZpZWxkc1tpXS5maWVsZHMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ3VsYXJDb250YWluZXJDbGFzc2VzLnB1c2goJ2V4YW1wbGVSb3cnK2kpOyAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2V0dXBEcmFndWxhcihkcmFndWxhckNvbnRhaW5lck1vZGVscyxkcmFndWxhckNvbnRhaW5lckNsYXNzZXMsZmFsc2UsJ2RhdGFzZXQyJyk7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfSBcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUuR2V0UHVibGlzaGVkUmVzb3VyY2VCeUlkID0gZnVuY3Rpb24oZGF0YXNldDFvcjJGaWVsZHMsIHJlcykgXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB2YXIgcmVzXHJcbiAgICAgICAgICAgIGlmIChkYXRhc2V0MW9yMkZpZWxkcyA9PSAnZGF0YXNldDFGaWVsZHMnKSAgcmVzID0gJHNjb3BlLm1hcHBpbmdGaWVsZHNbJ2RhdGFzZXQxJ10/LnZlcnNpb25cclxuICAgICAgICAgICAgaWYgKGRhdGFzZXQxb3IyRmllbGRzID09ICdkYXRhc2V0MkZpZWxkcycpICByZXMgPSAkc2NvcGUubWFwcGluZ0ZpZWxkc1snZGF0YXNldDInXT8udmVyc2lvblxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgaWYgKHJlcy5pZCAmJiAkc2NvcGUubWFwcEhlYWQuaWQpIFxyXG4gICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UHVibGlzaGVkUmVzb3VyY2VCeUlkKHJlcy5pZCkudGhlbihcclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFzZXQxb3IyRmllbGRzPT0nZGF0YXNldDFGaWVsZHMnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGVbJ2RhdGFzZXQxRmllbGRzJ10gPSBkYXRhLmRhdGEuRGVmaW5pdGlvbjsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2V0dXBEcmFndWxhcihbJHNjb3BlWydkYXRhc2V0MUZpZWxkcyddXSxbJ2RhdGFzZXQxQ29udGFpbmVyJ10sdHJ1ZSwnZGF0YXNldDEnKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhc2V0MW9yMkZpZWxkcz09J2RhdGFzZXQyRmllbGRzJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZVsnZGF0YXNldDJGaWVsZHMnXSA9IGRhdGEuZGF0YS5EZWZpbml0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkcmFndWxhckNvbnRhaW5lckNsYXNzZXMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZHJhZ3VsYXJDb250YWluZXJNb2RlbHMgPSBbXTsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcih2YXIgaT0wO2k8JHNjb3BlLmRhdGFzZXQyRmllbGRzLmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmRhdGFzZXQyRmllbGRzW2ldLmZpZWxkcz09dW5kZWZpbmVkKSAkc2NvcGUuZGF0YXNldDJGaWVsZHNbaV1bJ2ZpZWxkcyddID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFndWxhckNvbnRhaW5lck1vZGVscy5wdXNoKCRzY29wZS5kYXRhc2V0MkZpZWxkc1tpXS5maWVsZHMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ3VsYXJDb250YWluZXJDbGFzc2VzLnB1c2goJ2V4YW1wbGVSb3cnK2kpOyAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNldHVwRHJhZ3VsYXIoZHJhZ3VsYXJDb250YWluZXJNb2RlbHMsZHJhZ3VsYXJDb250YWluZXJDbGFzc2VzLGZhbHNlLCdkYXRhc2V0MicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLnNldHVwRHJhZ3VsYXIoWyRzY29wZVsnZGF0YXNldDJGaWVsZHMnXV0sWydkYXRhc2V0MkNvbnRhaW5lciddLHRydWUsJ2RhdGFzZXQyJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSAgIFxyXG4gICAgJHNjb3BlLm9uQ2hhbmdlUmVzb3VyY2VWZXJzaW9uID0gZnVuY3Rpb24oZGF0YXNldDFvcjIpIFxyXG4gICAge1xyXG4gICAgICAgIGlmICgkc2NvcGVbZGF0YXNldDFvcjJdKSAkc2NvcGVbZGF0YXNldDFvcjJdLmxlbmd0aD0wXHJcbiAgICB9ICAgXHJcbiAgICAkc2NvcGUuZ2V0RGF0YXNldE1hcHBpbmdzID0gZnVuY3Rpb24gKGRhdGFzZXRJZCkge1xyXG4gICAgXHJcbiAgICAgICAgIHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXREYXRhc2V0TWFwcGluZ3MoZGF0YXNldElkLGxhbmcpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZGF0YSkgeyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhdGFzZXQyRmllbGRzID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdHJlYmEgZHJhZ3VsaXJhdGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRyYWd1bGFyQ29udGFpbmVyQ2xhc3Nlcz1bXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRyYWd1bGFyQ29udGFpbmVyTW9kZWxzID0gW107ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IodmFyIGk9MDtpPCRzY29wZS5kYXRhc2V0MkZpZWxkcy5sZW5ndGg7aSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFndWxhckNvbnRhaW5lck1vZGVscy5wdXNoKCRzY29wZS5kYXRhc2V0MkZpZWxkc1tpXS5maWVsZHMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ3VsYXJDb250YWluZXJDbGFzc2VzLnB1c2goJ2V4YW1wbGVSb3cnK2kpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ3VsYXJDb250YWluZXJNb2RlbHMucHVzaCgkc2NvcGUuZGF0YXNldDJGaWVsZHNbaV0uZmllbGRzMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFndWxhckNvbnRhaW5lckNsYXNzZXMucHVzaCgnZXhhbXBsZVJvd0ZpZWxkczInK2kpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNldHVwRHJhZ3VsYXIoZHJhZ3VsYXJDb250YWluZXJNb2RlbHMsZHJhZ3VsYXJDb250YWluZXJDbGFzc2VzKTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07ICBcclxuICAgIFxyXG4gICAgLy8gUE9QVU5JIExJU1RVIERFRklOSUNJSkEgT0QgUkVTVVJTQSAoUkVTT1VSQ0VTIExJU1QpXHJcbiAgICAkc2NvcGUuZ2V0RGF0YXNldHMgPSBmdW5jdGlvbigpICB7XHJcbiAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUobGFuZywnZGF0YXNldCcpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZGF0YSkgeyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhdGFzZXRMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiAkc2NvcGUuZGF0YXNldExpc3QpICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5kYXRhc2V0RGljdFtpdGVtLmlkXSA9IGl0ZW0ubmFtZSAvLyBjcmVhdGUgZGljdGlvbmFyeSBmcm9tIGRhdGFzZXRMaXN0XHJcbiAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgICRzY29wZS5zYXZlRGF0YXNldE1hcHBpbmdIZWFkID0gZnVuY3Rpb24gKCkgey8vdWxhejogJHNjb3BlLm1hcHBpbmdGaWVsZHMsJHNjb3BlLnNlbGVjdGVkUmVzb3VyY2UpXHJcbiAgICAgICAgbGV0IG1hcHBJZFxyXG4gICAgICAgIGlmICgkc2NvcGUubWFwcEhlYWQ/LmlkPT11bmRlZmluZWQpIG1hcHBJZCA9IDBcclxuICAgICAgICBlbHNlIG1hcHBJZCA9ICRzY29wZS5tYXBwSGVhZC5pZFxyXG4gICAgICAgICAgICAkc2NvcGUubWFwcGluZ0ZpZWxkcy5pZD0kc2NvcGUucmVzb3VyY2VJZFxyXG4gICAgICAgICRzY29wZS5zYXZpbmdIZWFkID0gdHJ1ZVxyXG4gICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLnNhdmVEYXRhc2V0TWFwcGluZ0hlYWQoJHNjb3BlLm1hcHBpbmdGaWVsZHMsbWFwcElkLGxhbmcpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICBmdW5jdGlvbihkYXRhKSB7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNhdmluZ0hlYWQ9ZmFsc2UgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkID0gZGF0YS5kYXRhLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkLlZlcnNpb24hPXVuZGVmaW5lZCkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZS5WZXJzaW9uID0gJHNjb3BlLnJlc291cmNlLlJlc291cmNlRXh0ZW5kZWQuVmVyc2lvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkLlB1Ymxpc2hlZCE9dW5kZWZpbmVkKSAkc2NvcGUucmVzb3VyY2UuUHVibGlzaGVkID0gJHNjb3BlLnJlc291cmNlLlJlc291cmNlRXh0ZW5kZWQuUHVibGlzaGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0UmVzb3VyY2VGb3JtVmVyc2lvbigkc2NvcGUucmVzb3VyY2UudWlkLCRzY29wZS5yZXNvdXJjZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubWFwcEhlYWQgPSAkc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VFeHRlbmRlZD8uTWFwcGluZ0hlYWQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nZXRSZXNvdXJjZUZpZWxkcygpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2F2aW5nSGVhZD1mYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgfTsgIFxyXG5cclxuICAgICRzY29wZS5zYXZlRGF0YXNldE1hcHBpbmdEZXRhaWxzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICBcclxuICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2Uuc2F2ZURhdGFzZXRNYXBwaW5nRGV0YWlscygkc2NvcGUuZGF0YXNldDJGaWVsZHMsJHNjb3BlLm1hcHBIZWFkPy5pZCkudGhlbihcclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGRhdGEpIHsgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5kYXRhLm1zZywnc3VjY2VzcycpOyAgXHJcbiAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLmRhdGEubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9OyAgXHJcbiAgICAgICAgXHJcbiAgICBcclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUuY2FuY2VsTWFwcGluZyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgJHNjb3BlLnNhdmVEYXRhc2V0TWFwcGluZ0hlYWRTdGF0dXM9J0NhbmNlbE9ySW5pdCc7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCRzY29wZS5zYXZlRGF0YXNldE1hcHBpbmdIZWFkU3RhdHVzKTtcclxuICAgICAgICAgfVxyXG4gXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vIE1JR09SIC0gQWRkZWQgdmVyc2lvbmluZ1xyXG4gICAgICAgICRzY29wZS5vbk5ld01hcHBpbmdTZWxlY3RDYWxsYmFjaz1mdW5jdGlvbihpdGVtLCBzZWxlY3RlZERhdGFzZXQpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAkc2NvcGUuZ2V0UHVibGlzaGVkUmVzb3VyY2VzKGl0ZW0uaWQsc2VsZWN0ZWREYXRhc2V0KVxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmRhdGFzZXQxRmllbGRzIT11bmRlZmluZWQpICRzY29wZS5kYXRhc2V0MUZpZWxkcy5sZW5ndGg9MDtcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5kYXRhc2V0MkZpZWxkcyE9dW5kZWZpbmVkKSAkc2NvcGUuZGF0YXNldDJGaWVsZHMubGVuZ3RoPTA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5nZXRQdWJsaXNoZWRSZXNvdXJjZXM9ZnVuY3Rpb24oaXRlbUlkLHNlbGVjdGVkRGF0YXNldCl7XHJcblxyXG4gICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UHVibGlzaGVkUmVzb3VyY2VzQnlUeXBlSWQoaXRlbUlkLCdmb3JtJykudGhlbihcclxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoZGF0YSkgeyAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hlZEZvcm1zW3NlbGVjdGVkRGF0YXNldF0gPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZERhdGFzZXQ9PSdkYXRhc2V0MScpICRzY29wZS5zZXRSZXNvdXJjZVZlcnNpb24oMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAkc2NvcGUuc2V0UmVzb3VyY2VWZXJzaW9uKDIpXHJcblxyXG4gICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICAgIC8vICBTRUxFQ1QgRklFTERTIENBTExCQUNLU1xyXG4gICAgICAgICAgJHNjb3BlLm9uU2VsZWN0RmllbGQxID0gZnVuY3Rpb24gKGl0ZW0pe1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS50cmFuc2Zvcm1QYWNrYWdlLmRhdGFzZXQxPW51bGxcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUudHJhbnNmb3JtUGFja2FnZS5kYXRhc2V0MUZpZWxkPW51bGxcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRGaWVsZDE9aXRlbSAgICAgIFxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAkc2NvcGUub25TZWxlY3RGaWVsZDIgPSBmdW5jdGlvbiAoaXRlbSl7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUudHJhbnNmb3JtUGFja2FnZS5kYXRhc2V0Mj1udWxsXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRyYW5zZm9ybVBhY2thZ2UuZGF0YXNldDJGaWVsZD1udWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZEZpZWxkMj1pdGVtICAgXHJcblxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIC8vICAgVFJBTlNGT1JNIENBTExCQUNLU1xyXG4gICAgICAgICAgJHNjb3BlLm9uU2VsZWN0RGF0YXNldDE9IGZ1bmN0aW9uIChpdGVtKXtcclxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZUZpZWxkcyhpdGVtLmlkLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkgeyAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZpZWxkMXJlc291cmNlcyA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgJHNjb3BlLm9uU2VsZWN0RGF0YXNldDIgPSBmdW5jdGlvbiAoaXRlbSl7XHJcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZUZpZWxkcyhpdGVtLmlkLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkgeyAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5maWVsZDJyZXNvdXJjZXMgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIC8vKioqKioqKioqKioqKioqKiAgaW5pY2lqYWxpemFjaWphICoqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgIFxyXG4gICBcclxuICAgICAgICAgICAgXHJcbiAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICBpZiAoJHNjb3BlLm1hcHBpbmdGaWVsZHM9PT11bmRlZmluZWQpIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLm1hcHBpbmdGaWVsZHM9eyBkYXRhc2V0MToge30sIGRhdGFzZXQyOiB7fSB9O1xyXG4gICAgICBpZiAoJHNjb3BlLnRyYW5zZm9ybVBhY2thZ2U9PT11bmRlZmluZWQpIFxyXG4gICAgICAgICAgICAkc2NvcGUudHJhbnNmb3JtUGFja2FnZT17IFBhcmFtczp7fSB9O1xyXG4gICAgICBcclxuICAgICAgJHNjb3BlLmdldERhdGFzZXRzKCk7Ly9wdW5pIGRhdGFzZXRMaXN0XHJcblxyXG4gICAgICBcclxuICAgICAgJHNjb3BlLm1hcDJjb2RlRGljdCA9e31cclxuICAgICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzQnlOYW1lKCdkbXQnLGxhbmcpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICRzY29wZS5jb2RlTGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgIGRhdGEuZGF0YS5mb3JFYWNoKCAoaXRlbSxpbmRleCkgPT5cclxuICAgICAgICAgICAgICAgICAkc2NvcGUubWFwMmNvZGVEaWN0W2l0ZW0udmFsdWVdID0gaXRlbS5pZFxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgKVxyXG4gICAgICB9KTsgXHJcbiAgICAgICRzY29wZS5yZXR1cm5Ub1ByZXZpb3VzUGFnZSA9IGZ1bmN0aW9uKClcclxuICAgICAge1xyXG4gICAgICAgICAgICAgICAgbGV0IHByZXZfc3RhdGU9XCJcIjtcclxuICAgICAgICAgICAgICAgIGlmICgkc3RhdGUucGFyYW1zLnByZXZfc3RhdGUhPVwiXCIgJiYgJHN0YXRlLnBhcmFtcy5wcmV2X3N0YXRlIT11bmRlZmluZWQpIHByZXZfc3RhdGUgPSAkc3RhdGUucGFyYW1zLnByZXZfc3RhdGU7XHJcbiAgICAgICAgICAgICAgICBlbHNlIHByZXZfc3RhdGUgPSBcImFwcC5uYXZiYXIuaG9tZVwiO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc3RhdGUuZ28ocHJldl9zdGF0ZSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8kc2NvcGUuZ2V0Q29kZXNEZXRhaWxzKDY5KTsvLzY5IGplIGlkIG9kIGRhdGFfdHJhbnNmb3JtIGtvZG92YSAtIG5lIG1vxb5lIG92YWtvLCBqZXIgaWQgb3Zpc2kgbyBzZXJ2ZXJ1LiBUcmViYSBieSBjb2RlIG5hbWVcclxuXHJcbiAgICAgICRzY29wZS5zYXZlRGF0YXNldE1hcHBpbmdIZWFkU3RhdHVzPSdDYW5jZWxPckluaXQnO1xyXG4gICAgICAkc2NvcGUuc2F2ZURhdGFzZXRUcmFuc2Zvcm1IZWFkU3RhdHVzPSdDYW5jZWxPckluaXQnO1xyXG4gICAgIC8vICRzY29wZS5nZXRNYXBwaW5nUGFja2FnZXMoKTtcclxuICAgICAkc2NvcGUuZ2V0UmVzb3VyY2VBbGwoKVxyXG4gICAgICBcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAvLy8vLy8vLyBFTkQgbWFwcGluZyBkZWZpbml0aW9uIENUUkwgLy8vLy8vLy8vLy9cclxuICAgIFxyXG5leHBvcnQgZnVuY3Rpb24gbmV3UmVzb3VyY2VDdHJsICgkc2NvcGUsICRyb290U2NvcGUsICRsb2NhdGlvbiwgJHRpbWVvdXQsQXV0aGVudGljYXRpb25TZXJ2aWNlLFByb2Nlc3NpbmdTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLENvZGVzU2VydmljZSxNZW51U2VydmljZSwkc3RhdGVQYXJhbXMpIHtcclxuIFxyXG4gICAgICAkc2NvcGUuQ1RSTD0nbmV3UmVzb3VyY2VDdHJsJztcclxuICAgICAgJHNjb3BlLnNlbGVjdGVkSXRlbXM9W107XHJcbiAgICAgICRzY29wZS5yZXNvdXJjZT17fTtcclxuICAgICAgJHNjb3BlLnJlc291cmNlX3R5cGVfZmlsdGVyPSRzdGF0ZVBhcmFtcy5yZXNvdXJjZV90eXBlO1xyXG4gICAgICAkc2NvcGUuc2F2ZVN1Y2Nlc3MyID0gZmFsc2VcclxuXHQgICRzY29wZS5yb290c2NvcGUgPSAkcm9vdFNjb3BlXHJcbiAgICAgIFxyXG5cdCAgJHNjb3BlLnNob3dtZSA9IGZ1bmN0aW9uIChyZXNvdXJjZXR5cGUpIHtcclxuXHRcdCAgc3dpdGNoKHJlc291cmNldHlwZSkge1xyXG5cdFx0XHQgIGNhc2UgJ3BhZ2UnOlxyXG5cdFx0XHRcdHJldHVybiB0cnVlIC8vYWx3YXlzIHNob3dcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0ICBjYXNlICdhcHBsaWNhdGlvbic6IC8vc2hvdyBpZiB3ZSBoYXZlIHBhZ2VcclxuXHRcdFx0XHRpZiAoICRzY29wZS5yb290c2NvcGUuZ2xvYmFscy5lbnZpbmZvLnBhZ2U+MCkgcmV0dXJuIHRydWUgXHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdCAgY2FzZSAnZGF0YXNldCc6XHJcblx0XHRcdFx0aWYgKCAgJHNjb3BlLnJvb3RzY29wZS5nbG9iYWxzLmVudmluZm8ucGFnZT4wICYmIFxyXG5cdFx0XHRcdFx0ICAkc2NvcGUucm9vdHNjb3BlLmdsb2JhbHMuZW52aW5mby5hcHBsaWNhdGlvbj4wICkgcmV0dXJuIHRydWVcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0ICBkZWZhdWx0OlxyXG5cdFx0XHRcdGlmICggXHQkc2NvcGUucm9vdHNjb3BlLmdsb2JhbHMuZW52aW5mby5kYXRhc2V0PjAgJiZcclxuXHRcdFx0XHRcdFx0JHNjb3BlLnJvb3RzY29wZS5nbG9iYWxzLmVudmluZm8ucGFnZT4wICYmIFxyXG5cdFx0XHRcdFx0XHQkc2NvcGUucm9vdHNjb3BlLmdsb2JhbHMuZW52aW5mby5hcHBsaWNhdGlvbj4wIFxyXG5cdFx0XHRcdCkgcmV0dXJuIHRydWVcclxuXHRcdFx0fVx0XHJcblx0XHJcblx0XHQgIHJldHVybiBmYWxzZVxyXG5cdCAgfVxyXG5cdCAgXHJcbiAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAkc2NvcGUuc2VsZWN0ZWRSZXNvdXJjZVR5cGU9e1ZhbHVlOmZhbHNlLCBIaWRlQmFjazpmYWxzZX07XHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlXHJcbiAgICAgICAgJHNjb3BlLm1lbnVfc2VydmljZSA9IE1lbnVTZXJ2aWNlXHJcbiAgICAgICAgJHNjb3BlLm1lbnVfc2VydmljZS5jbGVhclNpZGVNZW51KClcclxuICAgICAgICAkc2NvcGUuZ3NydmMucmVzZXRCb2R5QmdDb2xvcigpICAgXHJcbiAgICAgICBcclxuICAgICAgICAkc2NvcGUuc2F2ZVJlc291cmNlRGVmID0gZnVuY3Rpb24gKGlzVmFsaWQpIFxyXG4gICAgICAgIHsgXHJcbiAgICAgICAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuU2F2ZVJlc291cmNlRGVmMigkc2NvcGUucmVzb3VyY2UpXHJcbiAgICAgICAgICAgIC50aGVuKCAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGRhdGEpIHsgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXR1cz09PTIwMCAgfHwgZGF0YS5zdGF0dXM9PT0yMDEgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShcIlJlc291cmNlIHNhdmVkIHN1Y2Nlc3NmdWx5XCIsJ3N1Y2Nlc3MnKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zYXZlU3VjY2VzczIgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAsZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7IFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5zYXZlU3VjY2VzczIgICA9IGZhbHNlICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICB9KTsgICAgXHJcbiAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICBcclxuICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiUGxlYXNlIGVudGVyIHJlcXVpcmVkIGRhdGFcIiwnd2FybmluZycpOyBcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgIFxyXG4gICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLkdldFJlc291cmNlUGFyYW1zKCkudGhlbihmdW5jdGlvbiAoZGF0YSkgeyAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZVR5cGVMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VTdGF0dXNMaXN0IT11bmRlZmluZWQpICRzY29wZS5maWx0ZXJSZXNvdXJjZXMoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBDb2Rlc1NlcnZpY2UuZ2V0Q29kZXNCeU5hbWUoJ2NvZGVzdGF0dXMnLGxhbmcpXHJcbiAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZVN0YXR1c0xpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgIC8vIFNldHRpbmcgcmVzb3VyY2UgdG8gQUNUSVZFIHN0YXRlID09XHR7aWQ6IDE3LCB2YWx1ZTogJ2EnLCBuYW1lOiAnQWN0aXZlJywgYWN0aXZlOiB0cnVlLCBwYXJhbXM6IG51bGx9XHJcbiAgICAgICAgICAgICAgICAgICAgIHZhciBwb3MgPSAkc2NvcGUucmVzb3VyY2VTdGF0dXNMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLnZhbHVlOyB9KS5pbmRleE9mKFwiYVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcz49MCkge1xyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuU3RhdHVzID0gJHNjb3BlLnJlc291cmNlU3RhdHVzTGlzdFtwb3NdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZVR5cGVMaXN0IT11bmRlZmluZWQpICRzY29wZS5maWx0ZXJSZXNvdXJjZXMoKTtcclxuICAgICAgICAgICB9KTtcclxuICAgICAgICBcclxuICAgICAgICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzQnlOYW1lKCdfUkVTT1VSQ0VfR1JPVVBfJyxsYW5nKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlR3JvdXBMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgIFxyXG4gICAgICAgICRzY29wZS5yZXNvdXJjZVR5cGVTZWxlY3RlZCA9IGZ1bmN0aW9uIChyZXNvdXJjZVR5cGUpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICB2YXIgcG9zID0gJHNjb3BlLnJlc291cmNlVHlwZUxpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuUmVzb3VyY2VDb2RlOyB9KS5pbmRleE9mKHJlc291cmNlVHlwZSk7XHJcbiAgICAgICAgICAgIGlmIChwb3M+PTApIHtcclxuICAgICAgICAgICAgICAvL2RlYnVnZ2VyIC8vbmV3UmVzb3VyY2VDdHJsXHJcbiAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlLlJlc291cmNlVHlwZT0gJHNjb3BlLnJlc291cmNlVHlwZUxpc3RbcG9zXTtcclxuICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycz17fTtcclxuICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRSZXNvdXJjZVR5cGUuVmFsdWU9dHJ1ZTtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlLlJlc291cmNlVHlwZS5SZXNvdXJjZUNvZGUgPT0gJ3BhZ2UnKVxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzLm5hdmJhcj0gdHJ1ZSAvL3Nob3cgQXBwbGljYXRpb24gbWVudSBvbiBwYWdlc1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGlmIChyZXNvdXJjZVR5cGUgIT0gJ2RhdGFzZXQnKSBcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLnN1YlR5cGVTZWxlY3RlZCA9IHRydWU7Ly8gc2tpcCBzdWJtZW51IGZvciBvdGhlciB0eXBlcyAobm90IGRhdGFzZXRzKVxyXG4gICAgICAgICAgICAgIGVsc2UgICB7XHJcblx0XHRcdFx0IC8vICRzY29wZS5zdWJUeXBlU2VsZWN0ZWQgPSBmYWxzZTtcclxuXHRcdFx0XHQgICAkc2NvcGUuc3ViVHlwZVNlbGVjdGVkID0gdHJ1ZTsvLyBUT0RPIC0gdGVtcG9yYXJ5IHNraXAgZGF0YXNldCBzdWJtZW51IC0gYWxsb3dpbmcgb25seSAxIHR5cGUgb2YgZGF0YXNldHNcclxuXHRcdFx0XHQgICAkc2NvcGUucmVzb3VyY2VzdWJUeXBlU2VsZWN0ZWQoJ3N0YW5kYXJkJyk7Ly8gVE9ETyAtIHRlbXBvcmFyeSBza2lwIGRhdGFzZXQgc3VibWVudSAtIGFsbG93aW5nIG9ubHkgMSB0eXBlIG9mIGRhdGFzZXRzXHJcblx0XHRcdCAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgfTtcclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgICAgICAgJHNjb3BlLnJlc291cmNlc3ViVHlwZVNlbGVjdGVkID0gZnVuY3Rpb24gKHJlc291cmNlU3ViVHlwZSkge1xyXG4gXHJcbiAgICAgICAgICAgJHNjb3BlLnN1YlR5cGVTZWxlY3RlZCA9IHJlc291cmNlU3ViVHlwZVxyXG4gICAgICAgICAgICRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZVN1YlR5cGUgPSByZXNvdXJjZVN1YlR5cGVcclxuICAgICAgICAgICBpZiAocmVzb3VyY2VTdWJUeXBlPT0nc3RhbmRhcmQnKSB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycy5leHREYXRhU291cmNlVHlwZSA9IHtpZDoxLG5hbWU6IFwiRGF0YWJhc2UgVGFibGVcIn1cclxuICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnMgPT11bmRlZmluZWQgfHwgICRzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzPT1udWxsKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzID0ge2V4dERhdGFTb3VyY2VQYXJhbXM6e2Zvcm1GaWVsZHNMaXN0OltdfSB9OyAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSBlbHNlXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnMuZXh0RGF0YVNvdXJjZVBhcmFtcyA9PSB1bmRlZmluZWQgfHwgdmFsdWUgPT0gZmFsc2UpICB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycy5leHREYXRhU291cmNlUGFyYW1zPXsgZm9ybUZpZWxkc0xpc3Q6W10gfTsgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB9IGVsc2UgICRzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzLmV4dERhdGFTb3VyY2VQYXJhbXMuZm9ybUZpZWxkc0xpc3QubGVuZ3RoPTA7ICAgICAgXHJcbiAgICAgICAgICAgICAgICB9ICBcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgJHNjb3BlLm5ld1Jlc291cmNlID0gZnVuY3Rpb24gKGlzVmFsaWQpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgIGlmIChpc1ZhbGlkKSB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuU2F2ZVJlc291cmNlRGVmKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShcIlNhdmUgZmFpbGVkIC0gcGxlYXNlIGVudGVyIGFsbCByZXF1aXJlZCBkYXRhIVwiLCdlcnJvcicpOyAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgICAkc2NvcGUuc2V0SW1tdXRhYmxlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICBpZiAoISRzY29wZS5zYXZlU3VjY2VzcykgJHNjb3BlLnJlc291cmNlLklzQmxvY2tjaGFpbiA9ICEkc2NvcGUucmVzb3VyY2UuSXNCbG9ja2NoYWluO1xyXG4gICAgICAgIH07XHJcblxyXG4gXHJcblxyXG4gICAgICAgICRzY29wZS5TYXZlUmVzb3VyY2VEZWYgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgLy9jYWxsIG5ldyByZXNvdXJjZSBmcm9tIHNlcnZpY2VcclxuICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgICAgICRzY29wZS5zYXZpbmdSZXNvdXJjZT10cnVlXHJcbiAgICAgICAgICAgICRzY29wZS5hY3Rpdml0eS5hY3Rpdml0eU1lc3NhZ2UgPSBQcm9jZXNzaW5nU2VydmljZS5zZXRBY3Rpdml0eU1zZygnU2F2aW5nIHJlc291cmNlICcrJHNjb3BlLnJlc291cmNlLk5hbWUpO1xyXG4gICAgICAgICBcclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuU2F2ZVJlc291cmNlRGVmMigkc2NvcGUucmVzb3VyY2UpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLm1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2F2ZVN1Y2Nlc3M9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlID0gZGF0YS5kYXRhXHJcblx0XHRcdFx0XHRcdFx0ICBcclxuXHRcdFx0XHRcdFx0XHQgICRyb290U2NvcGUuZ2xvYmFscy5lbnZpbmZvWyRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUNvZGVdPSRyb290U2NvcGUuZ2xvYmFscy5lbnZpbmZvWyAkc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VDb2RlXSsxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2F2aW5nUmVzb3VyY2U9ZmFsc2UgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2F2ZVN1Y2Nlc3M9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2F2aW5nUmVzb3VyY2U9ZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07ICBcclxuICAgICBcclxuICAgICAgICAkc2NvcGUuZmlsdGVyUmVzb3VyY2VzID0gZnVuY3Rpb24oKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VfdHlwZV9maWx0ZXIhPVwiXCIpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZFJlc291cmNlVHlwZS5WYWx1ZT10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRSZXNvdXJjZVR5cGUuSGlkZUJhY2s9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlVHlwZVNlbGVjdGVkKCRzY29wZS5yZXNvdXJjZV90eXBlX2ZpbHRlcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICBcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdmlld1Jlc291cmNlQ3RybCAoJHNjb3BlLCAkcm9vdFNjb3BlLCAkc3RhdGUsICR0aW1lb3V0LE1lc3NhZ2luZ1NlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLENvZGVzU2VydmljZSxNZW51U2VydmljZSkge1xyXG4gIFxyXG4gICAgICAgXHJcbiAgICAgICAgJHNjb3BlLnJlc291cmNlSWQ9JHN0YXRlLnBhcmFtcy5pZDtcclxuICAgICAgICAkc2NvcGUucmVzb3VyY2VfdHlwZT0kc3RhdGUucGFyYW1zLnJlc291cmNlX3R5cGU7XHJcbiAgICAgICAgJHNjb3BlLkNUUkw9J3ZpZXdSZXNvdXJjZUN0cmwnO1xyXG4gICAgICAgICRzY29wZS5zZWxlY3RlZEl0ZW1zPVtdO1xyXG4gICAgICAgICRzY29wZS5tZW51X3NlcnZpY2UgPSBNZW51U2VydmljZVxyXG4gICAgICAgICRzY29wZS5tZW51X3NlcnZpY2UuY2xlYXJTaWRlTWVudSgpXHJcbiAgICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlXHJcbiAgICAgICAgJHNjb3BlLmdzcnZjLnJlc2V0Qm9keUJnQ29sb3IoKSAgIFxyXG4gICAgXHJcbiAgICAgICAgLy8kc2NvcGUuc2hvd1JldHVybkxpbmsgPSAkc3RhdGUucGFyYW1zLnByZXZfc3RhdGUucGFyYW1zLnNob3dSZXR1cm5MaW5rOyAgICAgIFxyXG4gICAgICAgIHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgXHJcbiAgICAgICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzQnlOYW1lKCdjb2Rlc3RhdHVzJyxsYW5nKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlU3RhdHVzTGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUuZ2V0UmVzb3VyY2VBbGwgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZBbGwoJHNjb3BlLnJlc291cmNlSWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9OyAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5nZXRSZXNvdXJjZUluZm8gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0RXh0ZXJuYWxSZXNvdXJjZUluZm8oJHNjb3BlLnJlc291cmNlSWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfTsgICAgICBcclxuICAgICAgICBcclxuXHJcbiAgICAgICAgJHNjb3BlLmdldFJlc291cmNlSW5mbygkc2NvcGUucmVzb3VyY2VJZCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLnJldHVyblRvUHJldmlvdXNQYWdlID0gZnVuY3Rpb24oKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGxldCBwcmV2X3N0YXRlPVwiXCI7XHJcbiAgICAgICAgICAgICAgICBpZiAoJHN0YXRlLnBhcmFtcy5wcmV2X3N0YXRlIT1cIlwiICYmICRzdGF0ZS5wYXJhbXMucHJldl9zdGF0ZSE9dW5kZWZpbmVkKSBwcmV2X3N0YXRlID0gJHN0YXRlLnBhcmFtcy5wcmV2X3N0YXRlO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBwcmV2X3N0YXRlID0gXCJhcHAubmF2YmFyLmhvbWVcIjtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHN0YXRlLmdvKHByZXZfc3RhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxufVxyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBlZGl0UmVzb3VyY2VDdHJsICgkc2NvcGUsICRyb290U2NvcGUsICRzdGF0ZSwgJHRpbWVvdXQsTWVzc2FnaW5nU2VydmljZSxHcmlkc3RlclNlcnZpY2UsUmVzb3VyY2VzRGF0YVNlcnZpY2UsQ29kZXNTZXJ2aWNlLE1lbnVTZXJ2aWNlKSB7XHJcbiAgXHJcbiAgICAgICBcclxuICAgICAgICAkc2NvcGUucmVzb3VyY2VJZD0kc3RhdGUucGFyYW1zLmlkO1xyXG4gICAgICAgICRzY29wZS5DVFJMPSdlZGl0UmVzb3VyY2VDdHJsJztcclxuICAgICAgICAkc2NvcGUuc2VsZWN0ZWRJdGVtcz1bXTtcclxuICAgICAgLy8kc2NvcGUuc2VsZWN0ZWRJdGVtPXt9O1xyXG4gICAgICAgICRzY29wZS5tZW51X3NlcnZpY2UgPSBNZW51U2VydmljZVxyXG4gICAgICAgICRzY29wZS5tZW51X3NlcnZpY2UuY2xlYXJTaWRlTWVudSgpXHJcbiAgICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlXHJcbiAgICAgICAgJHNjb3BlLmdzcnZjLnJlc2V0Qm9keUJnQ29sb3IoKSAgIFxyXG4gICAgXHJcbiAgICAgICAgJHNjb3BlLnNob3dSZXR1cm5MaW5rID0gJHN0YXRlLnBhcmFtcy5wcmV2X3N0YXRlLnBhcmFtcz8uc2hvd1JldHVybkxpbms7ICAgICAgXHJcbiAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzQnlOYW1lKCdyZXNvdXJjZXR5cGUnLGxhbmcpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZVR5cGVMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIFxyXG4gICAgICAgIENvZGVzU2VydmljZS5nZXRDb2Rlc0J5TmFtZSgnY29kZXN0YXR1cycsbGFuZykudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZVN0YXR1c0xpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgIENvZGVzU2VydmljZS5nZXRDb2Rlc0J5TmFtZSgnX0FQUFNfJyxsYW5nKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VUYWdzTGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICBcclxuICAgICAgICAgJHNjb3BlLmdldFJlc291cmNlQWxsID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmQWxsKCRzY29wZS5yZXNvdXJjZUlkKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLm1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07ICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAkc2NvcGUuZ2V0UmVzb3VyY2VBbGwoKTtcclxuICAgICAgIFxyXG4gICAgICAgICAkc2NvcGUuc2V0SW1tdXRhYmxlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICghJHNjb3BlLnNhdmVTdWNjZXNzKSAgJHNjb3BlLnJlc291cmNlLklzQmxvY2tjaGFpbiA9ICEkc2NvcGUucmVzb3VyY2UuSXNCbG9ja2NoYWluO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgICRzY29wZS5yZXR1cm5Ub1ByZXZpb3VzUGFnZSA9IGZ1bmN0aW9uKClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc3RhdGUuZ28oJHN0YXRlLnBhcmFtcy5wcmV2X3N0YXRlLnN0YXRlLCRzdGF0ZS5wYXJhbXMucHJldl9zdGF0ZS5wYXJhbXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAgXHJcbiAgICAgICAgIFxyXG4gICAgICAgICAkc2NvcGUuc2F2ZVJlc291cmNlRGVmID0gZnVuY3Rpb24gKGlzVmFsaWQpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYgKGlzVmFsaWQpXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLnNhdmVSZXNvdXJjZURlZkFsbCgkc2NvcGUucmVzb3VyY2UpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXM9PT0yMDAgfHwgZGF0YS5zdGF0dXM9PT0yMDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShcIlJlc291cmNlIHNhdmVkIHN1Y2Nlc3NmdWx5XCIsJ3N1Y2Nlc3MnKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiUGxlYXNlIGVudGVyIHJlcXVpcmVkIGRhdGFcIiwnd2FybmluZycpOyBcclxuICAgICAgICAgIH1cclxuICAgICAgICB9OyAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgXHJcbiAgICAgIFxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhcHBsaWNhdGlvbkRlZmluaXRpb25DdHJsICgkc2NvcGUsICRyb290U2NvcGUsICRsb2NhdGlvbiwgJHRpbWVvdXQsQXV0aGVudGljYXRpb25TZXJ2aWNlLFByb2Nlc3NpbmdTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsUmVzb3VyY2VzRGF0YVNlcnZpY2UsVXRpbGl0eVNlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlLEthdGFseW9TdGF0ZU1hbmFnZXIsTWVudVNlcnZpY2UsJHN0YXRlUGFyYW1zLCRzdGF0ZSkge1xyXG4gICAgICAgXHJcbiAgICAkc2NvcGUucmVzb3VyY2VJZD0kc3RhdGVQYXJhbXMuaWQ7XHJcbiAgICAkc2NvcGUuQ1RSTE5BTUU9J2FwcGxpY2F0aW9uRGVmaW5pdGlvbkN0cmwnO1xyXG4gICAgJHNjb3BlLnBhZ2VTdGF0ZT17IHNlbGVjdGVkUGFnZToge30sIHNlbGVjdGVkTWVudToge30gfTtcclxuICAgICRzY29wZS5nc3J2YyA9IEdyaWRzdGVyU2VydmljZVxyXG4gICAgJHNjb3BlLmdzcnZjLnJlc2V0Qm9keUJnQ29sb3IoKVxyXG4gICAgJHNjb3BlLm1lbnVfc2VydmljZSA9IE1lbnVTZXJ2aWNlXHJcbiAgICAkc2NvcGUubWVudV9zZXJ2aWNlLmNsZWFyU2lkZU1lbnUoKSAgIFxyXG4gICAgJHNjb3BlLnNlbGVjdGVkVGFiPTFcclxuICAgICRzY29wZS5rc20gPSBLYXRhbHlvU3RhdGVNYW5hZ2VyO1xyXG4gICAgJHNjb3BlLmxvY2FsVmFycz17fVxyXG5cdCRzY29wZS5wYWdlTGFiZWxzID0gJHJvb3RTY29wZT8uZ2xvYmFscz8ucGFnZUxhYmVsc1xyXG5cdHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcblx0IFxyXG5cdFxyXG5cdCRzY29wZS5vcGVuU2VsZWN0TWVudSA9IGZ1bmN0aW9uKGEpIHtcclxuXHRcdCRzY29wZS5wYWdlU3RhdGUuc2VsZWN0TWVudSA9IHRydWVcclxuXHR9XHJcblxyXG5cdFxyXG5cdCRzY29wZS5vbmNoZWNrID0gZnVuY3Rpb24oKSB7XHJcblx0Ly9kZWJ1Z2dlclxyXG5cdFx0aWYgKCRzY29wZS5wYWdlU3RhdGUuc2VsZWN0ZWRNZW51LlNlbGVjdFZlcnNpb25EaXJlY3Q9PWZhbHNlKSBcclxuXHRcdFx0XHQkc2NvcGUucGFnZVN0YXRlLnNlbGVjdGVkTWVudS5zZWxlY3RlZFB1Ymxpc2hlZFJlc291cmNlPW51bGxcclxuXHR9XHJcblx0XHJcblx0XHJcbiAgICBpZiAoJGxvY2F0aW9uLnNlYXJjaCgpLnBhZ2Vfc3RhdGUhPXVuZGVmaW5lZCkge1xyXG4gICAgICAgIHZhciBwYWdlX3N0YXRlID0gJGxvY2F0aW9uLnNlYXJjaCgpLnBhZ2Vfc3RhdGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhciB1dWlkID0gVXRpbGl0eVNlcnZpY2UudXVpZHY0KCk7IC8vZ2VuZXJhdGUgZ3VpZFxyXG4gICAgfVxyXG4gICAgICAgXHJcbiAgICAgIFxyXG4gICAgJHNjb3BlLmV4aXN0aW5nTWVudSA9IGZ1bmN0aW9uICgpIFxyXG5cdHtcclxuICAgICAgICAkc2NvcGUucGFnZVN0YXRlLnNlbGVjdGVkTWVudU9wdGlvbiA9IFwiZXhpc3RpbmdcIjtcclxuICAgIH1cclxuICAgICAgIFxyXG4gICAgICBcclxuICAgIC8vZ2V0IG1lbnVzXHJcbiAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUobGFuZywnbWVudScpLnRoZW4oXHJcblx0XHRmdW5jdGlvbihkYXRhKSB7XHRcdFx0XHRcdFx0XHRcdFxyXG4gICAgICAgICAgICAkc2NvcGUubWVudUxpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICRzY29wZS5nZXRSZXNvdXJjZUFsbCgpO1xyXG5cdFx0XHQkc2NvcGUubG9jYWxWYXJzLm1lbnVzZG93bmxvYWRlZD10cnVlXHRcdFx0XHRcdCBcclxuICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICB9KTtcclxuICAgICAgICBcclxuICAgIFxyXG5cdC8vZ2V0IHBhZ2VzXHJcbiAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUobGFuZywncGFnZScpLnRoZW4oXHJcblx0ZnVuY3Rpb24oZGF0YSkge1x0XHRcdFx0XHRcdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnBhZ2VMaXN0ID0gZGF0YS5kYXRhO1xyXG5cdFx0XHRcdCRzY29wZS5sb2NhbFZhcnMucGFnZXNkb3dubG9hZGVkPXRydWVcdFx0XHRcdFx0XHRcdFx0IFxyXG4gICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcblx0fSk7XHJcblxyXG5cclxuICAgICRzY29wZS5nZXRfcHVibGlzaGVkX2FwcHMgPSBmdW5jdGlvbigpXHJcblx0eyAgICAgICAgICAgICBcclxuXHRcdFx0XHJcbiAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UHVibGlzaGVkUmVzb3VyY2VzKCRzY29wZS5yZXNvdXJjZUlkLCAnYXBwbGljYXRpb24nKS50aGVuKFxyXG5cdFx0XHRmdW5jdGlvbiAoZGF0YSkgeyAgXHRcdFxyXG5cdFx0XHQgICAkc2NvcGUucHVibGlzaGVkUmVzb3VyY2VzID0gZGF0YS5kYXRhO1xyXG5cdFx0XHQgICAkc2NvcGUubG9jYWxWYXJzLnB1Ymxpc2hyZXNvdXJjZXNkb3dubG9hZGVkPXRydWVcclxuXHRcdFx0fSk7XHJcblx0XHRcdFxyXG5cdFx0LypcdFxyXG5cdFx0UmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UHVibGlzaGVkUmVzb3VyY2VzQnlUeXBlSWQoJHNjb3BlLnJlc291cmNlSWQsJ2FwcGxpY2F0aW9uJykudGhlbihcclxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoZGF0YSkgeyBcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdCRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZXMgPSBkYXRhLmRhdGE7XHJcblx0XHRcdFx0XHRcdCRzY29wZS5sb2NhbFZhcnMucHVibGlzaHJlc291cmNlc2Rvd25sb2FkZWQ9dHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgICBcclxuICAgICAgICB9KSovXHJcbiAgICB9XHJcbiAgICBcclxuICAgICRzY29wZS5nZXRfcHVibGlzaGVkX2FwcHMoKVxyXG4gICAgXHJcbiAgICAkc2NvcGUuc2VsZWN0TWVudSA9IGZ1bmN0aW9uIChtZW51KSB7XHJcbiAgICAgICAgJHNjb3BlLnBhZ2VTdGF0ZS5zZWxlY3RlZE1lbnUgPSBtZW51O1xyXG4gICAgICAgICRzY29wZS5wYWdlU3RhdGUuc2VsZWN0ZWRNZW51T3B0aW9uID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICRzY29wZS5wYWdlU3RhdGUuc2F2ZUVuYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICRzY29wZS5wYWdlU3RhdGUuc2VsZWN0TWVudSA9ZmFsc2U7XHJcbiAgICAgICAgaWYgKCRzY29wZS5wYWdlU3RhdGUuc2VsZWN0ZWRNZW51Py5TZWxlY3RWZXJzaW9uRGlyZWN0KXtcclxuICAgICAgICAgICAgJHNjb3BlLmdldFB1Ymxpc2hlZFJlc291cmNlcygkc2NvcGUucGFnZVN0YXRlLnNlbGVjdGVkTWVudSwnYXBwLW1lbnUnKVxyXG4gICAgICAgIH0gICBcclxuICAgIH1cclxuXHJcblxyXG4gICAgJHNjb3BlLlByZXBhcmVQdWJsaXNoMlByb2QgPSBmdW5jdGlvbigpIC8vVE9ETyAtIHZpZGpldGkgY2VtdSBvdm8gc2x1emkgLCBkYSBsaSBzZSAkc2NvcGUucHVibGlzaGVkUmVzb3VyY2Uga29yaXN0aSBuZWdkamUgPz9cclxuICAgIHtcclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UucHJlcGFyZVB1Ymxpc2gyUHJvZCgkc2NvcGUucmVzb3VyY2VJZCwkc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VDb2RlLCRzY29wZS5yZXNvdXJjZS5WZXJzaW9uKS50aGVuKFxyXG5cdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIHsgICAgICAgICAgICAgICAgICAgICBcclxuXHRcdFx0XHRcdCRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZSA9IGRhdGEuZGF0YTtcclxuXHRcdFx0XHRcdCRzY29wZS5sb2NhbFZhcnMucHJlcGFyZVB1Ymxpc2gyUHJvZCA9IHRydWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cdFx0XHRcdH0sZnVuY3Rpb24oZXJyb3IpeyAgICAgICAgICAgICAgICAgICAgICAgXHJcblx0XHRcdFx0XHRNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAkc2NvcGUuUHVibGlzaDJQcm9kID0gZnVuY3Rpb24oKSAvL0FQUCBjb250cm9sZXJcclxuICAgIHtcclxuICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hpbmdBcHA9dHJ1ZVxyXG4gICAgICAgICAgICBsZXQgcmVzb3VyY2VzID0gW3t1aWQ6JHNjb3BlLnJlc291cmNlSWQsaXRlbVN1YlR5cGU6JHNjb3BlLnJlc291cmNlLlJlc291cmNlQ29kZSx2ZXJzaW9uOiAgJHNjb3BlLmdzcnZjLnJlc291cmNlRm9ybVZlcnNpb25bJHNjb3BlLnJlc291cmNlLnVpZF0/LlZlcnNpb24gfV1cclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UucHVibGlzaDJQcm9kKHJlc291cmNlcykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5kYXRhLm1zZyxkYXRhLmRhdGEubXNnX3R5cGUpOyAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucHVibGlzaGluZ0FwcD1mYWxzZVxyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZT09dW5kZWZpbmVkKSAkc2NvcGUucHVibGlzaGVkUmVzb3VyY2U9e31cclxuICAgICAgICAgICAgICAgICRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZS5QdWJsaXNoZWQgPSBkYXRhPy5kYXRhPy5QdWJsaXNoZWRcclxuICAgICAgICAgICAgICAgICRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZS5QdWJsaXNoZWRCeSA9IGRhdGE/LmRhdGE/LlB1Ymxpc2hlZEJ5XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucHVibGlzaGVkUmVzb3VyY2UuVmVyc2lvbiA9ICBkYXRhPy5kYXRhPy5WZXJzaW9uXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMucmVzb3VyY2VGb3JtVmVyc2lvblskc2NvcGUucmVzb3VyY2UudWlkXS5WZXJzaW9uID0gJHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlLlZlcnNpb25cclxuICAgICAgICAgICAgICAgICRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZS5QdWJsaXNoZWRWZXJzaW9uID0gIGRhdGE/LmRhdGE/LlB1Ymxpc2hlZFZlcnNpb25cclxuICAgICAgICAgICAgICAgICRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZS5EYXRlVGltZSA9ICBkYXRhPy5kYXRhPy5EYXRlVGltZVxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlLkNoYW5nZWREYXRlVGltZSA9IGRhdGE/LmRhdGE/LkNoYW5nZWREYXRlVGltZVxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlLkNoYW5nZWRCeSA9IGRhdGE/LmRhdGE/LkNoYW5nZWRCeVxyXG5cdFx0XHRcdCQoJyNtYW5pZmVzdCcpLm1vZGFsKCdoaWRlJylcclxuXHRcdFx0XHQkc2NvcGUuc2hvd1B1Ymxpc2gyTWFya2V0KCRzY29wZS5yZXNvdXJjZSkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucHVibGlzaGluZ0FwcD1mYWxzZSAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgJHNjb3BlLnNlbGVjdGVkUmVzb3VyY2VzID0gW11cclxuICAgICRzY29wZS5wYWdlU3RhdGUuc2VsZWN0QWxsUmVzb3VyY2VzID0gZmFsc2VcclxuICAgICAgICBcclxuXHJcbiAgICAkc2NvcGUuc2VsZWN0UmVzb3VyY2UyUHVibGlzaCA9IGZ1bmN0aW9uIChyZXNvdXJjZSxpc0FsbCkge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgbGV0IHBvcyA9ICRzY29wZS5zZWxlY3RlZFJlc291cmNlcy5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZihyZXNvdXJjZS5pZClcclxuICAgICAgICAgICAgaWYgKCFpc0FsbCkgIHsgIFxyXG4gICAgICAgICAgICAgICAgaWYgKHBvcz49MCkge1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZFJlc291cmNlcy5zcGxpY2UocG9zLDEpXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2Uuc2VsZWN0ZWQgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlLnNlbGVjdGVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRSZXNvdXJjZXMucHVzaChyZXNvdXJjZSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJlc291cmNlLnNlbGVjdGVkID0gISRzY29wZS5wYWdlU3RhdGUuc2VsZWN0QWxsUmVzb3VyY2VzXHJcbiAgICAgICAgICAgICAgICBpZiAoISRzY29wZS5wYWdlU3RhdGUuc2VsZWN0QWxsUmVzb3VyY2VzKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChwb3M8MCkgJHNjb3BlLnNlbGVjdGVkUmVzb3VyY2VzLnB1c2gocmVzb3VyY2UpICBcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICBlbHNlIFxyXG5cdFx0XHRcdFx0aWYgKHBvcz49MCkgJHNjb3BlLnNlbGVjdGVkUmVzb3VyY2VzLnNwbGljZShwb3MsMSlcclxuICAgICAgICAgICAgfSAgICAgIFxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICAkc2NvcGUuc2VsZWN0QWxsNFB1Ymxpc2ggPSBmdW5jdGlvbiAoaXRlbVR5cGUpIFxyXG5cdFx0IHtcclxuICAgICAgICAgXHJcbiAgICAgICAgICAgZm9yIChsZXQgaT0wO2k8JHNjb3BlLmFwcE1hbmlmZXN0Lmxlbmd0aDtpKyspeyBcclxuXHRcdFx0XHRpZiAoJHNjb3BlLmFwcE1hbmlmZXN0W2ldLml0ZW1UeXBlPT1pdGVtVHlwZSkgXHJcblx0XHRcdFx0XHQkc2NvcGUuc2VsZWN0UmVzb3VyY2UyUHVibGlzaCgkc2NvcGUuYXBwTWFuaWZlc3RbaV0sdHJ1ZSlcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgJHNjb3BlLnNlbGVjdFBhZ2UgPSBmdW5jdGlvbiAocGFnZSkge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLnBhZ2VTdGF0ZS5zZWxlY3RlZFBhZ2UgPSBwYWdlO1xyXG4gICAgICAgICAgICAkc2NvcGUucGFnZVN0YXRlLnNlbGVjdERlZmF1bHRQYWdlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUucGFnZVN0YXRlLnNlbGVjdGVkUGFnZT8uU2VsZWN0VmVyc2lvbkRpcmVjdClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmdldFB1Ymxpc2hlZFJlc291cmNlcygkc2NvcGUucGFnZVN0YXRlLnNlbGVjdGVkUGFnZSwnZm9ybScpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgfSAgXHJcblxyXG4gICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0SGVscFBhZ2UgPSBmdW5jdGlvbiAocGFnZSkge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLnBhZ2VTdGF0ZS5oZWxwUGFnZSA9IHBhZ2U7XHJcbiAgICAgICAgICAgICRzY29wZS5wYWdlU3RhdGUuc2VsZWN0SGVscFBhZ2UgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5wYWdlU3RhdGUuaGVscFBhZ2U/LlNlbGVjdFZlcnNpb25EaXJlY3QpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5nZXRQdWJsaXNoZWRSZXNvdXJjZXMoJHNjb3BlLnBhZ2VTdGF0ZS5oZWxwUGFnZSwnZm9ybScpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgfSAgIFxyXG4gICAgICAgICAkc2NvcGUuZ2V0UmVzb3VyY2VBbGwgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZBbGwoJHNjb3BlLnJlc291cmNlSWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlLnJlc291cmNlRGVmRG93bmxvYWRlZCA9IHRydWVcclxuXHRcdFx0XHRcdFx0XHQgICRzY29wZS5sb2NhbFZhcnMucmVzb3VyY2VkZWZkb3dubG9hZGVkPXRydWVcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZS5hZG1pbkhlYWRlckxhYmVsID0gJ0FwcCBwZXJtaXNzaW9ucydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1lbnUgPSAkc2NvcGUuZmluZExpbmsoXCJhcHAtbWVudVwiLCRzY29wZS5tZW51TGlzdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RNZW51KG1lbnUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGVmYXVsdFBhZ2UgPSAkc2NvcGUuZmluZExpbmsoXCJkZWZhdWx0LXBhZ2VcIiwkc2NvcGUucGFnZUxpc3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0UGFnZShkZWZhdWx0UGFnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoZWxwUGFnZSA9ICRzY29wZS5maW5kTGluayhcImhlbHAtcGFnZVwiLCRzY29wZS5wYWdlTGlzdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RIZWxwUGFnZShoZWxwUGFnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5zZXRSZXNvdXJjZUZvcm1WZXJzaW9uKCRzY29wZS5yZXNvdXJjZS51aWQsJHNjb3BlLnJlc291cmNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLlByZXBhcmVQdWJsaXNoMlByb2QoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfTtcclxuXHRcdFxyXG5cdFx0XHJcbiAgICAgICAgJHNjb3BlLmZpbmRMaW5rID0gZnVuY3Rpb24obGlua190eXBlLHJlc291cmNlTGlzdClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcmVzb3VyY2UyLHJfaXRlbTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGk9MDtpPCRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkPy5sZW5ndGg7aSsrKSBcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkW2ldLkxpbmtUeXBlPT1saW5rX3R5cGUpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJfaXRlbSA9ICRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkW2ldXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2UyPSRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkW2ldLlJlc291cmNlMjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zID0gcmVzb3VyY2VMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKHJlc291cmNlMik7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHBvcz49MCkgcmV0dXJuIHsgLi4ucl9pdGVtICwuLi5yZXNvdXJjZUxpc3RbcG9zXSB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHJldHVybiBudWxsO1xyXG4gICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuXHRcdCRzY29wZS5uZXdNZW51ID0gZnVuY3Rpb24gKCkgXHJcblx0XHR7XHJcblx0XHRcdCRzdGF0ZS5nbyhcImFwcC5uYXZiYXIucmVzb3VyY2VzLm5ld1wiLHtyZXNvdXJjZV90eXBlOidtZW51JyxyZXR1cm5fcGFnZTp7J2lkJzokc2NvcGUucmVzb3VyY2UudWlkLCdwYWdlJzonYXBwLm5hdmJhci5yZXNvdXJjZXMuYXBwbGljYXRpb24tZGVmaW5pdGlvbid9fSkgICAgICAgIFxyXG5cdFx0fTtcclxuXHQgICBcclxuXHQgICBcclxuICAgICAgICAkc2NvcGUuZmluZExpbmtJbmRleCA9IGZ1bmN0aW9uKGxpbmtfdHlwZSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDtpPCRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkLmxlbmd0aDtpKyspICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VFeHRlbmRlZFtpXS5MaW5rVHlwZT09bGlua190eXBlKSByZXR1cm4gaTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgfVxyXG5cdFx0XHJcblx0XHQkc2NvcGUuZmluZExpbmtJZCA9IGZ1bmN0aW9uKCBsaW5rX3R5cGUsIHdoZXJldG9sb29rKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaT0wO2k8d2hlcmV0b2xvb2subGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2hlcmV0b2xvb2tbaV0uTGlua1R5cGU9PWxpbmtfdHlwZSkgcmV0dXJuIHdoZXJldG9sb29rW2ldPy5pZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIFxyXG4gICAgXHJcbiAgICAgICRzY29wZS5zYXZlQXBwbGljYXRpb24gPSBmdW5jdGlvbiAoaXNGb3JtVmFsaWQpIFxyXG5cdCAge1xyXG5cdFx0bGV0IGxpbmtfaWQxID0gJHNjb3BlLmZpbmRMaW5rSWQoXCJhcHAtbWVudVwiLCAkc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VFeHRlbmRlZClcclxuXHRcdGxldCBsaW5rX2lkMiA9ICRzY29wZS5maW5kTGlua0lkKFwiZGVmYXVsdC1wYWdlXCIsICRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkKVxyXG5cclxuXHRcdCRzY29wZS5wYWdlU3RhdGUuc2VsZWN0ZWRNZW51ID0gJHNjb3BlLnBhZ2VTdGF0ZS5zZWxlY3RlZE1lbnUgPz8geyBpZDogbnVsbCB9XHJcblx0XHQkc2NvcGUucGFnZVN0YXRlLnNlbGVjdGVkUGFnZSA9ICRzY29wZS5wYWdlU3RhdGUuc2VsZWN0ZWRQYWdlID8/IHsgaWQ6IG51bGwgfVxyXG5cdFx0XHJcbiAgICAgICAgJHNjb3BlLnJMaW5rcyA9IFtdXHJcbiAgICAgICAgaWYgKCEkc2NvcGUucGFnZVN0YXRlLnNlbGVjdGVkTWVudT8uU2VsZWN0VmVyc2lvbkRpcmVjdCkgJHNjb3BlLnBhZ2VTdGF0ZS5zZWxlY3RlZE1lbnUuU2VsZWN0VmVyc2lvbkRpcmVjdCA9IGZhbHNlXHJcbiAgICAgICAgaWYgKCEkc2NvcGUucGFnZVN0YXRlLnNlbGVjdGVkUGFnZT8uU2VsZWN0VmVyc2lvbkRpcmVjdCkgJHNjb3BlLnBhZ2VTdGF0ZS5zZWxlY3RlZFBhZ2UuU2VsZWN0VmVyc2lvbkRpcmVjdCA9IGZhbHNlXHJcbiAgICAgICAgaWYgKCRzY29wZS5wYWdlU3RhdGUuc2VsZWN0ZWRNZW51LmlkKSBcclxuICAgICAgICAgICAgICAgICRzY29wZS5yTGlua3MucHVzaCh7J2lkJzpsaW5rX2lkMSwnUmVzb3VyY2UxJzokc2NvcGUucmVzb3VyY2VJZCwnUmVzb3VyY2UyJzokc2NvcGUucGFnZVN0YXRlLnNlbGVjdGVkTWVudS5pZCwnTGlua1R5cGUnOidhcHAtbWVudScsJ1NlbGVjdFZlcnNpb25EaXJlY3QnOiRzY29wZS5wYWdlU3RhdGUuc2VsZWN0ZWRNZW51Py5TZWxlY3RWZXJzaW9uRGlyZWN0LCdwdWJsaXNoZWRSZXNvdXJjZSc6JHNjb3BlLnBhZ2VTdGF0ZS5zZWxlY3RlZE1lbnU/LnNlbGVjdGVkUHVibGlzaGVkUmVzb3VyY2UsJ1ZlcnNpb24nOiRzY29wZS5wYWdlU3RhdGUuc2VsZWN0ZWRNZW51Py5zZWxlY3RlZFB1Ymxpc2hlZFJlc291cmNlPy5WZXJzaW9ufSlcclxuICAgICAgICBcclxuXHRcdGlmICgkc2NvcGUucGFnZVN0YXRlLnNlbGVjdGVkUGFnZT8uaWQpXHJcbiAgICAgICAgICAgICRzY29wZS5yTGlua3MucHVzaCh7J2lkJzpsaW5rX2lkMiwnUmVzb3VyY2UxJzokc2NvcGUucmVzb3VyY2VJZCwnUmVzb3VyY2UyJzokc2NvcGUucGFnZVN0YXRlLnNlbGVjdGVkUGFnZS5pZCwnTGlua1R5cGUnOidkZWZhdWx0LXBhZ2UnLCdTZWxlY3RWZXJzaW9uRGlyZWN0Jzokc2NvcGUucGFnZVN0YXRlLnNlbGVjdGVkUGFnZT8uU2VsZWN0VmVyc2lvbkRpcmVjdCwncHVibGlzaGVkUmVzb3VyY2UnOiRzY29wZS5wYWdlU3RhdGUuc2VsZWN0ZWRQYWdlPy5zZWxlY3RlZFB1Ymxpc2hlZFJlc291cmNlLCdWZXJzaW9uJzokc2NvcGUucGFnZVN0YXRlLnNlbGVjdGVkUGFnZT8uc2VsZWN0ZWRQdWJsaXNoZWRSZXNvdXJjZT8uVmVyc2lvbn0pXHJcblxyXG4gICAgICAgIGlmICgkc2NvcGUucGFnZVN0YXRlLmhlbHBQYWdlPy5pZClcclxuICAgICAgICAgICAgJHNjb3BlLnJMaW5rcy5wdXNoKHsnaWQnOmxpbmtfaWQyLCdSZXNvdXJjZTEnOiRzY29wZS5yZXNvdXJjZUlkLCdSZXNvdXJjZTInOiRzY29wZS5wYWdlU3RhdGUuaGVscFBhZ2UuaWQsJ0xpbmtUeXBlJzonaGVscC1wYWdlJywnU2VsZWN0VmVyc2lvbkRpcmVjdCc6JHNjb3BlLnBhZ2VTdGF0ZS5oZWxwUGFnZT8uU2VsZWN0VmVyc2lvbkRpcmVjdCwncHVibGlzaGVkUmVzb3VyY2UnOiRzY29wZS5wYWdlU3RhdGUuaGVscFBhZ2U/LnNlbGVjdGVkUHVibGlzaGVkUmVzb3VyY2UsJ1ZlcnNpb24nOiRzY29wZS5wYWdlU3RhdGUuaGVscFBhZ2U/LnNlbGVjdGVkUHVibGlzaGVkUmVzb3VyY2U/LlZlcnNpb259KVxyXG5cclxuXHJcbiAgICAgICAgbGV0IGFwcF9kYXRhID0ge2FwcElkOiRzY29wZS5yZXNvdXJjZS51aWQsdmVyc2lvbjokc2NvcGUucmVzb3VyY2UuTmV3VmVyc2lvbixkZXNjOiRzY29wZS5sb2NhbFZhcnMubmV3RGVzY3JpcHRpb24sckxpbmtzOiRzY29wZS5yTGlua3N9XHJcbiAgICAgICAgaWYgKGlzRm9ybVZhbGlkKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5yTGlua3MubGVuZ3RoKXtcclxuICAgICAgICAgICAgICAgICRzY29wZS5zYXZpbmdBcHAgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5zYXZlQXBwbGljYXRpb24oYXBwX2RhdGEpLnRoZW4oXHJcblx0XHRcdFx0XHRmdW5jdGlvbihkYXRhKSB7ICAgICAgICAgICAgIFxyXG5cdFx0XHRcdFx0XHQkc2NvcGUuc2F2aW5nQXBwID0gZmFsc2UgIFxyXG5cdFx0XHRcdFx0XHQkKCcjYXBwU2F2ZU1vZGFsJykubW9kYWwoJ2hpZGUnKVx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5kYXRhLm1zZywnc3VjY2VzcycpO1xyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0JHNjb3BlLmdzcnZjLnJlc291cmNlRm9ybVZlcnNpb25bJHNjb3BlLnJlc291cmNlLnVpZF0gPSBkYXRhLmRhdGEuZGF0YVxyXG5cdFx0XHRcdFx0XHQkc2NvcGUucmVzb3VyY2U9ZGF0YS5kYXRhLmRhdGFcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmdW5jdGlvbihlcnJvcil7XHJcblx0XHRcdFx0XHRcdCRzY29wZS5zYXZpbmdBcHAgPSBmYWxzZVxyXG5cdFx0XHRcdFx0XHRNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG5cdFx0XHRcdFx0fSlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnUGxlYXNlIHNlbGVjdCBhcHBsaWNhdGlvbiBtZW51IG9yIGRlZmF1bHQgcGFnZSB0byBzYXZlIScsJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuc2F2aW5nQXBwID0gZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoJ0FwcCBkZXNjcmlwdGlvbiBpcyBtYW5kYXRvcnkhJywnZXJyb3InKTsgICAgICAgIFxyXG5cclxuICAgICAgfTtcclxuXHQgIFxyXG4gICAgICBcclxuXHQgICRzY29wZS5uZXdWZXJzaW9uID0gZnVuY3Rpb24oKVxyXG4gICAgICAge1xyXG4gICAgICAgICAgICRzY29wZS5jcmVhdGluZ05ld1ZlcnNpb249dHJ1ZVxyXG5cclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuU2V0TmV3UmVzb3VyY2VWZXJzaW9uKCRzY29wZS5yZXNvdXJjZS51aWQpXHJcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzPT0yMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlLk5ld1ZlcnNpb24gPSBkYXRhLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlLlB1Ymxpc2hlZD1mYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0UmVzb3VyY2VGb3JtVmVyc2lvbigkc2NvcGUucmVzb3VyY2UudWlkLCRzY29wZS5yZXNvdXJjZS5OZXdWZXJzaW9uKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEuZGF0YSwnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuXHRcdFx0XHRcdCRzY29wZS5jcmVhdGluZ05ld1ZlcnNpb249ZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuaGFzQ2hhbmdlcz1mYWxzZVxyXG4gICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jcmVhdGluZ05ld1ZlcnNpb249ZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgfVxyXG5cclxuICAgICRzY29wZS5zaG93TW9kYWwgPSBmdW5jdGlvbiAocF90eXBlKSB7XHJcbiAgICAgICAgICAgICQoJyNhcHBTYXZlTW9kYWwnKS5tb2RhbCgnc2hvdycpXHJcbiAgICAgICAgICAgICRzY29wZS5tb2RhbEFjdGlvbj1wX3R5cGVcclxuICAgICAgICAgICAgJHNjb3BlLm5ld1B1Ymxpc2hWZXJzaW9uID0gJHNjb3BlLnJlc291cmNlLk5ld1ZlcnNpb25cclxuXHJcbiAgICB9XHJcblx0XHJcblx0XHJcblx0JHNjb3BlLnNob3dNYW5pZmVzdCA9IGZ1bmN0aW9uIChwX3R5cGUsIGVsZW1lbnQ9IHt9KSB7XHJcblx0XHQvL2RlYnVnZ2VyXHJcbiAgICAgICAgICAgICQoJyNtYW5pZmVzdCcpLm1vZGFsKCdzaG93JylcclxuXHRcdFx0aWYgKGVsZW1lbnQpICRzY29wZS5tb2RhbCA9IHtyZXNvdXJjZTogZWxlbWVudH1cclxuICAgICAgICAgICAgJHNjb3BlLm1vZGFsQWN0aW9uPXBfdHlwZVxyXG5cdFx0XHQkc2NvcGUuYnVpbGRBcHBNYW5pZmVzdCgpXHJcbiAgICB9XHJcblx0XHJcblx0XHJcblx0JHNjb3BlLnNob3dQdWJsaXNoMk1hcmtldCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XHJcbiAgICAgICAgICAgICQoJyNwdWJsaXNoMm1hcmtldCcpLm1vZGFsKCdzaG93JylcclxuICAgICAgICAgICAgJHNjb3BlLm1vZGFsQWN0aW9uPSdwdWJsaXNoMm1hcmtldCdcclxuXHRcdFx0JHNjb3BlLm1vZGFsID0ge3Jlc291cmNlIDogZWxlbWVudCB9XHJcblx0XHRcdCRzY29wZS5idWlsZEFwcE1hbmlmZXN0KClcclxuICAgIH1cclxuXHRcclxuXHQgJHNjb3BlLmhpZGVNb2RhbCA9IGZ1bmN0aW9uICh3aGljaCkge1xyXG4gICAgICAgICAgICAkKHdoaWNoKS5tb2RhbCgnaGlkZScpXHJcbiAgICB9XHJcblx0XHJcbiAgICAkc2NvcGUuZ2V0UHVibGlzaGVkUmVzb3VyY2VzID0gZnVuY3Rpb24ocmVzb3VyY2UsIHB1Ymxpc2hUeXBlKXtcclxuICAgICAgICBcclxuXHRpZiAoISByZXNvdXJjZT8uaWQpIHJldHVyblx0XHJcblxyXG5cdFJlc291cmNlc0RhdGFTZXJ2aWNlLkdldFB1Ymxpc2hlZFJlc291cmNlc0J5VHlwZUlkKHJlc291cmNlLmlkLHB1Ymxpc2hUeXBlKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChkYXRhKSB7IFx0XHRcdFx0XHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5zZWxlY3RlZFJlc291cmNlc1B1Ymxpc2hlZExpc3Q9PXVuZGVmaW5lZCkgJHNjb3BlLnNlbGVjdGVkUmVzb3VyY2VzUHVibGlzaGVkTGlzdD17fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRSZXNvdXJjZXNQdWJsaXNoZWRMaXN0W3Jlc291cmNlLmlkXSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wdWJsaXNoZWRyZXNvdXJjZXNkb3dubG9hZGVkPXRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmlsbCAnc2VsZWN0IHZlcnNpb24nIG9wdGlvbnMgdG8gaGF2ZSBib3RoIGlkIGFuZCBuYW1lIChmb3IgYWxyZWFkeSBzYXZlZCBkYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzb3VyY2UuU2VsZWN0VmVyc2lvbkRpcmVjdCl7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHVibGlzaGVkTGlzdCA9ICRzY29wZS5zZWxlY3RlZFJlc291cmNlc1B1Ymxpc2hlZExpc3RbcmVzb3VyY2UuaWRdIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaXNoZWRMaXN0LmZvckVhY2goIChpdGVtKT0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLlZlcnNpb24gPT0gcmVzb3VyY2U/LlZlcnNpb24pIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlLnNlbGVjdGVkUHVibGlzaGVkUmVzb3VyY2UgPSBpdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgICBcclxuICAgICAgICB9KVxyXG5cclxuICAgIH1cclxuXHJcbiAgICAkc2NvcGUucHVibGlzaEFwcGxpY2F0aW9uID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAkc2NvcGUucHVibGlzaGluZ0FwcCA9IHRydWU7XHJcbiAgICAgICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuUHVibGlzaFJlc291cmNlKCRzY29wZS5yZXNvdXJjZUlkLCRzY29wZS5yZXNvdXJjZS5OZXdWZXJzaW9uLCdwdWJsaXNoIHRvIFBST0QnLCdhcHBsaWNhdGlvbicpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kKCcjZGF0YXNldFB1Ymxpc2gnKS5tb2RhbCgnaGlkZScpOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hpbmdBcHAgPSBmYWxzZTsgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSAsZnVuY3Rpb24oZXJyb3IpeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hpbmdBcHAgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgIH1cclxuXHJcbiAgICAkc2NvcGUuYXBwTWFuaWZlc3Q9W10gIFxyXG5cdFxyXG4gICAgJHNjb3BlLmJ1aWxkQXBwTWFuaWZlc3QgPSBmdW5jdGlvbiAoKSBcclxuXHR7XHJcblx0XHQvL2RlYnVnZ2VyXHJcbiAgICAgICAgJHNjb3BlLmJ1aWxkaW5nQXBwID0gdHJ1ZVxyXG4gICAgICAgICRzY29wZS5hcHBNYW5pZmVzdC5sZW5ndGg9MFxyXG4gICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLnB1Ymxpc2hBcHBsaWNhdGlvbigkc2NvcGUucmVzb3VyY2VJZCwkc2NvcGUucmVzb3VyY2UuTmV3VmVyc2lvbikudGhlbihcclxuXHRcdFx0XHRmdW5jdGlvbihkYXRhKSB7ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmJ1aWxkaW5nQXBwID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuYXBwTWFuaWZlc3Q9ZGF0YS5kYXRhPy5tYW5pZmVzdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZWFkeVRvUHVibGlzaCA9IGRhdGEuZGF0YT8ucmVhZHlfdG9fcHVibGlzaFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5idWlsZGluZ0FwcCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgICAgIFxyXG4gICAgICAgIH0pXHJcbiAgICAgIFxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAgJHNjb3BlLnB1Ymxpc2hQdWJsaWNSZXNvdXJjZSA9IGZ1bmN0aW9uIChtb2RhbFJlc291cmNlKSBcclxuXHQge1xyXG4gICAgICAgICRzY29wZS5zYXZpbmdNYW5pZmVzdCA9IHRydWVcclxuXHRcdGxldCB2ZXJzaW9uID0gJHNjb3BlLnJlc291cmNlLk5ld1ZlcnNpb25cclxuXHRcdGlmIChtb2RhbFJlc291cmNlPy5WZXJzaW9uKSBcdHZlcnNpb24gPSBtb2RhbFJlc291cmNlLlZlcnNpb25cdFxyXG4gICAgICAgIGxldCBwdWJsaXNoID0ge3B1Ymxpc2h0eXBlOidhcHAtbWFuaWZlc3QnLGVudnR5cGU6J0FMTCcsaW5zdGFsbDp0cnVlLGRlZmluaXRpb246JHNjb3BlLmFwcE1hbmlmZXN0fVxyXG5cdFxyXG4gICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLnB1Ymxpc2hQdWJsaWNSZXNvdXJjZSgkc2NvcGUucmVzb3VyY2VJZCwkc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VDb2RlLCB2ZXJzaW9uICxwdWJsaXNoKS50aGVuKFxyXG5cdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNhdmluZ01hbmlmZXN0ID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNhdmluZ01hbmlmZXN0ID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgICAgIFxyXG4gICAgICAgICAgICAgICAgIH0pLmZpbmFsbHkoICgpID0+IHtcclxuXHRcdFx0XHRcdCAkKCcjcHVibGlzaDJtYXJrZXQnKS5tb2RhbCgnaGlkZScpXHJcblx0XHRcdFx0XHQgICQoJyNtYW5pZmVzdCcpLm1vZGFsKCdoaWRlJylcclxuXHRcdFx0XHQgfSlcclxuICAgICAgXHJcbiAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5yZXR1cm5Ub1ByZXZpb3VzUGFnZSA9IGZ1bmN0aW9uKClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcGFnZSA9IFwiYXBwLm5hdmJhci5yZXNvdXJjZXMubGlzdFwiO1xyXG4gICAgICAgICAgICAgICAgLy9sZXQgbmF2YmFyID0gTWVudVNlcnZpY2UuZ2V0UGFnZU5hdmJhckJ5TmFtZShwYWdlKTtcclxuICAgICAgICAgICAgICAgICRzdGF0ZS5nbyhwYWdlLHt9KTtcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgXHJcbiAgICB9XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYXBwTWVudURlZmluaXRpb25DdHJsICgkc2NvcGUsICRyb290U2NvcGUsICRsb2NhdGlvbiwgJHRpbWVvdXQsQXV0aGVudGljYXRpb25TZXJ2aWNlLFByb2Nlc3NpbmdTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsUmVzb3VyY2VzRGF0YVNlcnZpY2UsQ29kZXNTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSxNZW51U2VydmljZSwkc3RhdGVQYXJhbXMsJHN0YXRlKSB7XHJcbiAgXHJcbiAgICAgICBcclxuICAgICRzY29wZS5yZXNvdXJjZUlkPSRzdGF0ZVBhcmFtcy5pZDtcclxuICAgICRzY29wZS5DVFJMTkFNRT0nYXBwTWVudURlZmluaXRpb25DdHJsJztcclxuICAgICRzY29wZS5zZWxlY3RlZEl0ZW1zPVtdO1xyXG4gICAgJHNjb3BlLm1lbnVMb2FkZWQgPSBmYWxzZTtcclxuICAgICRzY29wZS5tZW51X3NlcnZpY2UgPSBNZW51U2VydmljZVxyXG4gICAgJHNjb3BlLm1lbnVfc2VydmljZS5jbGVhclNpZGVNZW51KClcclxuICAgIFxyXG4gICAgJHNjb3BlLmxvY2FsVmFycyA9IHt0YXNrTGlzdDpbXX07XHJcbiAgICAkc2NvcGUubG9jYWxWYXJzLmhpZGVCdG5zPXRydWU7XHJcbiAgICAkc2NvcGUubG9jYWxWYXJzLnNob3dEZWxldGU9dHJ1ZTtcclxuICAgIHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2VcclxuICAgICAkc2NvcGUuZ3NydmMucmVzZXRCb2R5QmdDb2xvcigpICAgXHJcbiAgICAgIC8qICBDb2Rlc1NlcnZpY2UuZ2V0Q29kZXNCeU5hbWUoJ3Jlc291cmNldHlwZScsbGFuZykudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VUeXBlTGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICBcclxuICAgICAgICBDb2Rlc1NlcnZpY2UuZ2V0Q29kZXNCeU5hbWUoJ2NvZGVzdGF0dXMnLGxhbmcpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VTdGF0dXNMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIFxyXG4gICAgICAgICovXHJcblx0XHRcclxuICAgICAgICAgJHNjb3BlLmdldFJlc291cmNlQWxsID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmQWxsKCRzY29wZS5yZXNvdXJjZUlkKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlLnJlc291cmNlRGVmRG93bmxvYWRlZCA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZS5hZG1pbkhlYWRlckxhYmVsID0gJ0FwcCBtZW51IHBlcm1pc3Npb25zJ1xyXG5cdFx0XHRcdFx0XHRcdCRzY29wZS5nc3J2Yy5zZXRSZXNvdXJjZUZvcm1WZXJzaW9uKCRzY29wZS5yZXNvdXJjZS51aWQse1ZlcnNpb246JHNjb3BlLnJlc291cmNlLlZlcnNpb24sUHVibGlzaGVkOiRzY29wZS5yZXNvdXJjZS5QdWJsaXNoZWQsTmV3VmVyc2lvbjokc2NvcGUucmVzb3VyY2UuTmV3VmVyc2lvbn0pXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5QcmVwYXJlUHVibGlzaDJQcm9kKClcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubWVudUxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9OyAgICAgIFxyXG4gICAgICAgXHJcbiAgICAgICBcclxuICAgICAgIFxyXG4gICAgICAgICRzY29wZS5yZXR1cm5Ub1ByZXZpb3VzUGFnZSA9IGZ1bmN0aW9uKClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcGFnZSA9IFwiYXBwLm5hdmJhci5yZXNvdXJjZXMubGlzdFwiO1xyXG4gICAgICAgICAgICAgICAgJHN0YXRlLmdvKHBhZ2Use30pO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5zaG93TW9kYWwgPSBmdW5jdGlvbiAocF90eXBlKSB7XHJcbiAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICQoJyNtZW51UHVibGlzaCcpLm1vZGFsKCdzaG93Jyk7IFxyXG4gICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLm1vZGFsQWN0aW9uPXBfdHlwZVxyXG4gICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLm5ld1B1Ymxpc2hWZXJzaW9uID0gJHNjb3BlLnJlc291cmNlLk5ld1ZlcnNpb25cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICRzY29wZS5QcmVwYXJlUHVibGlzaDJQcm9kID0gZnVuY3Rpb24oKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UucHJlcGFyZVB1Ymxpc2gyUHJvZCgkc2NvcGUucmVzb3VyY2VJZCwkc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VDb2RlLCRzY29wZS5yZXNvdXJjZS5WZXJzaW9uKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICAkc2NvcGUuUHVibGlzaDJQcm9kID0gZnVuY3Rpb24oKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hpbmdEYXRhc2V0PXRydWVcclxuICAgICAgICAgICAgLy9pZiAoISRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZT8uVmVyc2lvbikgJHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlLlB1Ymxpc2hlZFZlcnNpb24gPSAkc2NvcGUuZ3NydmMucmVzb3VyY2VGb3JtVmVyc2lvblskc2NvcGUucmVzb3VyY2UudWlkXS5WZXJzaW9uXHJcbiAgICAgICAgICAgIGxldCByZXNvdXJjZXMgPSBbe3VpZDokc2NvcGUucmVzb3VyY2VJZCxpdGVtU3ViVHlwZTokc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VDb2RlLHZlcnNpb246ICRzY29wZS5nc3J2Yy5yZXNvdXJjZUZvcm1WZXJzaW9uWyRzY29wZS5yZXNvdXJjZS51aWRdLlZlcnNpb24gIH1dIC8vJHNjb3BlLmdzcnZjLnJlc291cmNlRm9ybVZlcnNpb25bJHNjb3BlLnJlc291cmNlLnVpZF0/LlZlcnNpb25cclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UucHVibGlzaDJQcm9kKHJlc291cmNlcykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEubXNnLCdzdWNjZXNzJyk7IFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlLlB1Ymxpc2hlZCA9IGRhdGEuZGF0YS5QdWJsaXNoZWRcclxuICAgICAgICAgICAgICAgICRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZS5EZXBsb3llZCA9IGRhdGEuZGF0YS5EZXBsb3llZFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlLlZlcnNpb24gPSBkYXRhLmRhdGEuVmVyc2lvblxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnJlc291cmNlRm9ybVZlcnNpb25bJHNjb3BlLnJlc291cmNlLnVpZF0uVmVyc2lvbiA9ICRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZS5WZXJzaW9uXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucHVibGlzaGVkUmVzb3VyY2UuUHVibGlzaGVkVmVyc2lvbiA9ICBkYXRhPy5kYXRhPy5QdWJsaXNoZWRWZXJzaW9uXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucHVibGlzaGVkUmVzb3VyY2UuRGF0ZVRpbWUgPSBkYXRhLmRhdGEuRGF0ZVRpbWVcclxuICAgICAgICAgICAgICAgICRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZS5QdWJsaXNoZWRCeSA9IGRhdGEuZGF0YS5QdWJsaXNoZWRCeVxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlLkNoYW5nZWREYXRlVGltZSA9IGRhdGEuZGF0YS5DaGFuZ2VkRGF0ZVRpbWVcclxuICAgICAgICAgICAgICAgICRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZS5DaGFuZ2VkQnkgPSBkYXRhLmRhdGEuQ2hhbmdlZEJ5XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucHVibGlzaGVkUmVzb3VyY2UuY291bnQgPSAwIFxyXG4gICAgICAgICAgICAgICAvLyAkc2NvcGUucHVibGlzaGVkUmVzb3VyY2Uucm1kID0gZGF0YS5kYXRhLnJtZFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hpbmdEYXRhc2V0PWZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICRzY29wZS5wdWJsaXNoaW5nRGF0YXNldD1mYWxzZSAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICRzY29wZS5nZXRSZXNvdXJjZUFsbCgpO1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMudXBkYXRlUmVzb3VyY2UgPSBmdW5jdGlvbihyZXNvdXJjZSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZT1yZXNvdXJjZVxyXG4gICAgICAgIH1cclxuICAgICAgICAkc2NvcGUuc2F2ZVJlc291cmNlRGVmID0gZnVuY3Rpb24gKGZvcm1hKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgaWYgKGZvcm1hLiR2YWxpZClcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLlNhdmVSZXNvdXJjZURlZjIoJHNjb3BlLnJlc291cmNlKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXR1cz09PTIwMCB8fCBkYXRhLnN0YXR1cz09MjAxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEubXNnLCdzdWNjZXNzJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoXCJQbGVhc2UgZW50ZXIgcmVxdWlyZWQgZGF0YVwiLCd3YXJuaW5nJyk7IFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfTsgXHJcblxyXG4gICAgXHJcbiAgIFxyXG4gICAgXHJcbiAgICBcclxuICAgICAgXHJcbiAgICB9XHJcbmV4cG9ydCBmdW5jdGlvbiBpbnRlZ3JhdGlvbkRlZmluaXRpb25DdHJsICgkc2NvcGUsICRyb290U2NvcGUsICRsb2NhdGlvbiwgJHN0YXRlLCAkdGltZW91dCxBdXRoZW50aWNhdGlvblNlcnZpY2UsUHJvY2Vzc2luZ1NlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSxDb2Rlc1NlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlLE1lbnVTZXJ2aWNlLCRzdGF0ZVBhcmFtcykge1xyXG4gIFxyXG4gICAgICAgXHJcbiAgICAkc2NvcGUucmVzb3VyY2VJZD0kc3RhdGVQYXJhbXMuaWQ7XHJcbiAgICAkc2NvcGUuQ1RSTE5BTUU9J2ludGVncmF0aW9uRGVmaW5pdGlvbkN0cmwnO1xyXG4gICAgJHNjb3BlLnNlbGVjdGVkSXRlbXM9W107XHJcbiAgICAkc2NvcGUuZGFzaGJvYXJkID0ge307XHJcbiAgICAkc2NvcGUuZGFzaGJvYXJkLndpZGdldHNSaWdodD17fTtcclxuICAgICRzY29wZS5sb2NhbFZhcnMgPSB7dGFza0xpc3Q6W119O1xyXG4gICAgJHNjb3BlLmdzcnZjPUdyaWRzdGVyU2VydmljZVxyXG4gICAgJHNjb3BlLmdzcnZjLnJlc2V0Qm9keUJnQ29sb3IoKVxyXG4gICAgJHNjb3BlLm1lbnVfc2VydmljZSA9IE1lbnVTZXJ2aWNlXHJcbiAgICAkc2NvcGUubWVudV9zZXJ2aWNlLmNsZWFyU2lkZU1lbnUoKSAgIFxyXG4gICAgXHJcbiAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgIFxyXG4gICAgICAgIENvZGVzU2VydmljZS5nZXRDb2Rlc0J5TmFtZSgncmVzb3VyY2V0eXBlJyxsYW5nKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgIC8vZGVidWdnZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlVHlwZUxpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzQnlOYW1lKCdjb2Rlc3RhdHVzJyxsYW5nKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlU3RhdHVzTGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAgJHNjb3BlLmdldFJlc291cmNlQWxsID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmQWxsKCRzY29wZS5yZXNvdXJjZUlkKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLm1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07ICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAkc2NvcGUuZ2V0UmVzb3VyY2VBbGwoKTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAgJHNjb3BlLmdldFJlc291cmNlRGVmaW5pdGlvbiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZBbGwoJHNjb3BlLnJlc291cmNlSWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnMgPT1udWxsIHx8ICBhbmd1bGFyLmVxdWFscygge30sICRzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzKSApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzID0ge25hdmJhcjp0cnVlLHNpZGVNZW51OnRydWUscGFnZUdyaWRJdGVtczpbe2lkOjF9XSxncmlkOntOb09mUm93czpudWxsLE5vT2ZDb2x1bW5zOm51bGwsUm93R2FwOm51bGwsQ29sdW1uR2FwOm51bGx9fSAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucGFnZURvd25sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuQnVpbGRHcmlkKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUobGFuZywnZGF0YXNldCcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZUxpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZXNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgfSk7ICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAgJHNjb3BlLnNhdmVSZXNvdXJjZURlZiA9IGZ1bmN0aW9uIChpc1ZhbGlkKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmIChpc1ZhbGlkKVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5zYXZlUmVzb3VyY2VEZWZBbGxOZXcoJHNjb3BlLnJlc291cmNlKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXM9PT0yMDAgIHx8IGRhdGEuc3RhdHVzPT09MjAxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoXCJJbnRlZ3JhdGlvbiBzYXZlZCBzdWNjZXNzZnVseVwiLCdzdWNjZXNzJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfWVsc2VcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShcIlBsZWFzZSBlbnRlciByZXF1aXJlZCBkYXRhXCIsJ3dhcm5pbmcnKTsgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTsgICAgICBcclxuICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLnJldHVyblRvUHJldmlvdXNQYWdlID0gZnVuY3Rpb24oKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGxldCBwYWdlID0gXCJhcHAubmF2YmFyLnJlc291cmNlcy5saXN0XCI7XHJcbiAgICAgICAgICAgICAgICAvL2xldCBuYXZiYXIgPSBNZW51U2VydmljZS5nZXRQYWdlTmF2YmFyQnlOYW1lKHBhZ2UpO1xyXG4gICAgICAgICAgICAgICAgJHN0YXRlLmdvKHBhZ2Use30pO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgXHJcbiAgICAgICAkc2NvcGUuZ2V0SW50ZWdyYXRpb24gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgJHNjb3BlLmludGVncmF0aW9uTG9hZGVkPWZhbHNlO1xyXG4gICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VGb3JtKCRzY29wZS5yZXNvdXJjZUlkLCdpJyxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhLndpZGdldHMubGVuZ3RoPjApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzUmlnaHQ9e2xheW91dDpkYXRhLmRhdGEud2lkZ2V0c307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzUmlnaHQubGF5b3V0ID0gR3JpZHN0ZXJTZXJ2aWNlLmdldEVtcHR5QXBwbGljYXRpb25NZW51KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kYXRhc2V0Rm9ybVN0YXRlLnN1YmplY3Quc2V0U3RhdGU9JHNjb3BlLmRhc2hib2FyZC53aWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZURlZmluaXRpb249IGRhdGEuZGF0YS5yZXNvdXJjZURlZmluaXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmludGVncmF0aW9uTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgXHJcbiAgICAgIH07XHJcbiAgICAgICBcclxuICAgICRzY29wZS5nZXRJbnRlZ3JhdGlvbigpO1xyXG4gICAgICBcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gc21hcnRDb250cmFjdERlZmluaXRpb25DdHJsICgkc2NvcGUsICRyb290U2NvcGUsICRsb2NhdGlvbiwgJHRpbWVvdXQsTWVzc2FnaW5nU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSxDb2Rlc1NlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlLE1lbnVTZXJ2aWNlLCRzdGF0ZVBhcmFtcywkc3RhdGUpIHtcclxuICBcclxuICAgICAgIFxyXG4gICAgJHNjb3BlLnJlc291cmNlSWQ9JHN0YXRlUGFyYW1zLmlkO1xyXG4gICAgJHNjb3BlLkNUUkw9J3NtYXJ0Q29udHJhY3REZWZpbml0aW9uQ3RybCc7XHJcbiAgICAkc2NvcGUuc2VsZWN0ZWRJdGVtcz1bXTtcclxuICAgIFxyXG4gICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlXHJcbiAgICAkc2NvcGUuZ3NydmMucmVzZXRCb2R5QmdDb2xvcigpICAgXHJcbiAgICAkc2NvcGUubWVudV9zZXJ2aWNlID0gTWVudVNlcnZpY2VcclxuICAgICRzY29wZS5tZW51X3NlcnZpY2UuY2xlYXJTaWRlTWVudSgpXHJcbiAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmTGlzdEJ5VHlwZSgkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZywnZGF0YXNldCcpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGRhdGEpIHtcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHQkc2NvcGUuZGF0YXNldExpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICxmdW5jdGlvbihlcnJvcil7ICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKVx0fVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8qXHJcbiAgICAgICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzQnlOYW1lKCd1c2VydGFncycsbGFuZykudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50YWdMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50YWdMaXN0MSA9IGFuZ3VsYXIuY29weSgkc2NvcGUudGFnTGlzdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhZ0xpc3QyID0gYW5ndWxhci5jb3B5KCRzY29wZS50YWdMaXN0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICBcclxuICAgICAgICBDb2Rlc1NlcnZpY2UuZ2V0Q29kZXNCeU5hbWUoJ2NvZGVzdGF0dXMnLGxhbmcpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VTdGF0dXNMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIFxyXG4gICAgICAgICovXHJcbiAgICAgICAgICRzY29wZS5uZXdGdW5jdGlvbiA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnMuRnVuY3Rpb25zPT11bmRlZmluZWQpICRzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzLkZ1bmN0aW9ucyA9IFtdO1xyXG4gICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycy5GdW5jdGlvbnMucHVzaCh7fSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICAgJHNjb3BlLm5ld0Jsb2NrY2hhaW5EYXRhc2V0ID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycy5EYXRhc2V0cz09dW5kZWZpbmVkKSAkc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycy5EYXRhc2V0cyA9IFtdO1xyXG4gICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycy5EYXRhc2V0cy5wdXNoKHt9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5nZXRSZXNvdXJjZUFsbCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkFsbCgkc2NvcGUucmVzb3VyY2VJZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07ICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAkc2NvcGUuZ2V0UmVzb3VyY2VBbGwoKTtcclxuICAgICAgIFxyXG4gICAgICAgICAkc2NvcGUuc2F2ZVJlc291cmNlUGFyYW1ldGVycyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLnNhdmVSZXNvdXJjZURlZlBhcmFtZXRlcnMoJHNjb3BlLnJlc291cmNlSWQsJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnMpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXM9PT0yMDAgIHx8IGRhdGEuc3RhdHVzPT09MjAxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5kYXRhLCdzdWNjZXNzJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IuZGF0YSwnZXJyb3InKTsgIFxyXG4gICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICBcclxufVxyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB0b2tlbkRlZmluaXRpb25DdHJsICgkc2NvcGUsICRyb290U2NvcGUsICRsb2NhdGlvbiwgJHRpbWVvdXQsTWVzc2FnaW5nU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSxDb2Rlc1NlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlLE1lbnVTZXJ2aWNlLCRzdGF0ZVBhcmFtcywkc3RhdGUpIHtcclxuICBcclxuICAgICAgIFxyXG4gICAgJHNjb3BlLnJlc291cmNlSWQ9JHN0YXRlUGFyYW1zLmlkO1xyXG4gICAgJHNjb3BlLkNUUkw9J3Rva2VuRGVmaW5pdGlvbkN0cmwnO1xyXG4gICAgJHNjb3BlLnNlbGVjdGVkSXRlbXM9W107XHJcbiAgICBsZXQgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG5cclxuICAgIGxldCB0b2tlbkRlZiA9IFZ1ZS5jcmVhdGVBcHAoVG9rZW5EZWZpbml0aW9uKTtcclxuICAgICRzY29wZS5nc3J2YyA9IEdyaWRzdGVyU2VydmljZVxyXG4gICAgJHNjb3BlLmdzcnZjLnJlc2V0Qm9keUJnQ29sb3IoKVxyXG4gICAgJHNjb3BlLm1lbnVfc2VydmljZSA9IE1lbnVTZXJ2aWNlXHJcbiAgICAkc2NvcGUubWVudV9zZXJ2aWNlLmNsZWFyU2lkZU1lbnUoKVxyXG5cclxuICAgIHRva2VuRGVmLm1vdW50KFwiI3Rva2VuRGVmaW5pdGlvbkNvbXBvbmVudFwiKTtcclxuICAgICAgIFxyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBub3RpZmljYXRpb25EZWZpbml0aW9uQ3RybCAoJHNjb3BlLCAkcm9vdFNjb3BlLCAkbG9jYXRpb24sICR0aW1lb3V0LE1lc3NhZ2luZ1NlcnZpY2UsUmVzb3VyY2VzRGF0YVNlcnZpY2UsQ29kZXNTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSxNZW51U2VydmljZSwkc3RhdGVQYXJhbXMsJHN0YXRlKSB7XHJcbiAgXHJcbiAgICAgICBcclxuICAgICRzY29wZS5yZXNvdXJjZUlkPSRzdGF0ZVBhcmFtcy5pZDtcclxuICAgICRzY29wZS5DVFJMPSdub3RpZmljYXRpb25EZWZpbml0aW9uQ3RybCc7XHJcbiAgICAkc2NvcGUuc2VsZWN0ZWRJdGVtcz1bXTtcclxuICAgIFxyXG4gICAgJHNjb3BlLm1lbnVfc2VydmljZSA9IE1lbnVTZXJ2aWNlXHJcbiAgICAkc2NvcGUubWVudV9zZXJ2aWNlLmNsZWFyU2lkZU1lbnUoKVxyXG4gICAgJHNjb3BlLnJldHVyblRvUHJldmlvdXNQYWdlID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgJHN0YXRlLmdvKFwiYXBwLm5hdmJhci5yZXNvdXJjZXMubGlzdFwiLHt9KTtcclxuICAgICB9XHJcbiAgICAgICAgXHJcbiBcclxuICAgXHJcbiAgICAgICAvLyRzdGF0ZS5nbyhcImFwcC5uYXZiYXIuY29kZXMubmV3XCIse2lkOiRzY29wZS5yZXNvdXJjZUlkLHJldHVyblN0YXRlOntMYWJlbDonUmV0dXJuIHRvIG5vdGlmaWNhdGlvbiBkZWZpbml0aW9uJyxzdGF0ZTokc3RhdGUuY3VycmVudCxwYXJhbXM6e2lkOiRzY29wZS5yZXNvdXJjZUlkfX19KTtcclxuICAgICBcclxuICAgICAgICBcclxuICAgICAgIFxyXG4gICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICBcclxuICAgICAgICBDb2Rlc1NlcnZpY2UuZ2V0Q29kZXNCeU5hbWUoJ3VzZXJ0YWdzJyxsYW5nKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhZ0xpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhZ0xpc3RVc2VycyA9IGFuZ3VsYXIuY29weSgkc2NvcGUudGFnTGlzdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhZ0xpc3RHcm91cHMgPSBhbmd1bGFyLmNvcHkoJHNjb3BlLnRhZ0xpc3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50YWdMaXN0MSA9IGFuZ3VsYXIuY29weSgkc2NvcGUudGFnTGlzdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhZ0xpc3QyID0gYW5ndWxhci5jb3B5KCRzY29wZS50YWdMaXN0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICBcclxuICAgICAgICBDb2Rlc1NlcnZpY2UuZ2V0Q29kZXNCeU5hbWUoJ2NvZGVzdGF0dXMnLGxhbmcpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VTdGF0dXNMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5zZXRFbWFpbFBhcmFtcyA9IGZ1bmN0aW9uKClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIHZhciBwb3MgPSAkc2NvcGUudGFnTGlzdDEubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnMuRW1haWxTdWJqZWN0RmllbGQuaWQpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChwb3M+PTApe1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycy5FbWFpbFN1YmplY3RGaWVsZD0kc2NvcGUudGFnTGlzdDFbcG9zXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHBvcyA9ICRzY29wZS50YWdMaXN0Mi5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZigkc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycy5FbWFpbE1lc3NhZ2VGaWVsZC5pZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHBvcz49MCl7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzLkVtYWlsTWVzc2FnZUZpZWxkPSRzY29wZS50YWdMaXN0Mltwb3NdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSBcclxuICAgICAgICB9XHJcbiAgICAgICAgJHNjb3BlLmdldFJlc291cmNlQWxsID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmQWxsKCRzY29wZS5yZXNvdXJjZUlkKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLm1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZUxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycz09PW51bGwgfHwgJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnM9PT11bmRlZmluZWQpICRzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzPXt9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnMuU2VuZEVtYWlsKSAkc2NvcGUuc2V0RW1haWxQYXJhbXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfTsgICAgICBcclxuICAgICAgICBcclxuICAgICAgICRzY29wZS5nZXRSZXNvdXJjZUFsbCgpO1xyXG4gICAgICAgXHJcbiAgICAgICAgJHNjb3BlLkdvdG9NZXNzYWdlRGVmID0gZnVuY3Rpb24oKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAkc3RhdGUuZ28oXCJhcHAubmF2YmFyLnJlc291cmNlcy5mb3JtXCIse2lkOiRzY29wZS5yZXNvdXJjZUlkLHJldHVyblN0YXRlOntMYWJlbDonUmV0dXJuIHRvIG5vdGlmaWNhdGlvbiBkZWZpbml0aW9uJyxzdGF0ZTokc3RhdGUuY3VycmVudCxwYXJhbXM6e2lkOiRzY29wZS5yZXNvdXJjZUlkfX19KTtcclxuICAgICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAgICAkc2NvcGUuc2F2ZVJlc291cmNlUGFyYW1ldGVycyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLnNhdmVSZXNvdXJjZURlZlBhcmFtZXRlcnMoJHNjb3BlLnJlc291cmNlSWQsJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnMpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXM9PT0yMDAgIHx8IGRhdGEuc3RhdHVzPT09MjAxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIC8qXHJcbiAgICAgIFxyXG4gICAgICAgJHNjb3BlLmdldE5vdGlmaWNhdGlvbkZvcm09IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAkc2NvcGUubWVudUxvYWRlZD1mYWxzZTtcclxuICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VGb3JtKCRzY29wZS5yZXNvdXJjZUlkLCdpJyxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhLndpZGdldHMubGVuZ3RoPjApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzUmlnaHQ9e2xheW91dDpkYXRhLmRhdGEud2lkZ2V0c307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzUmlnaHQubGF5b3V0ID0gR3JpZHN0ZXJTZXJ2aWNlLmdldEVtcHR5QXBwbGljYXRpb25NZW51KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kYXRhc2V0Rm9ybVN0YXRlLnN1YmplY3Quc2V0U3RhdGU9JHNjb3BlLmRhc2hib2FyZC53aWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZURlZmluaXRpb249IGRhdGEuZGF0YS5yZXNvdXJjZURlZmluaXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm1lbnVMb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICBcclxuICAgICAgfTtcclxuICAgICBcclxuICAgICAgICAkc2NvcGUuZ2V0Tm90aWZpY2F0aW9uRm9ybSgpO1xyXG4gICAgKi9cclxuICAgIH1cclxuXHJcbi8vaW1wb3J0IGt0X3JkIGZyb20gJy4uLy4uLy4uLzAwMDBfY29tbW9uLzAwMDFfY29tcG9uZW50cy92dWUva3QtcmVzb3VyY2UtZGVmaW5pdGlvbi52dWUnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG5vdGlmaWNhdGlvbkRlZmluaXRpb25Db21wb25lbnQgKFJlc291cmNlc0RhdGFTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsJHN0YXRlUGFyYW1zKSB7XHJcbiAgXHJcbiAgICBcclxuICAgICAgICB2YXIgcmVzb3VyY2U7XHJcbiAgICAgICAgdmFyIHJlc291cmNlSWQ9JHN0YXRlUGFyYW1zLmlkO1xyXG4gICAgICAgIC8vIGdldCBub3RpZmljYXRpb24gZGV0YWlscyBoZXJlXHJcbiAgICAgICAgXHJcbiAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZBbGwocmVzb3VyY2VJZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHJlc291cmNlID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgIGxldCB2dWVOb3RpZmljYXRpb25EZWYgPSAgbmV3IFZ1ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsOiAnI25vdGlmaWNhdGlvbkRlZmluaXRpb25Db21wb25lbnQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2U6IHJlc291cmNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZHM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVOb3RpZmljYXRpb246ZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3VudGVkKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50czoge1xyXG4gIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2t0LXJlc291cmNlLWRlZmluaXRpb24nOiBrdF9yZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgfSk7XHJcbiBcclxuICAgIH1cclxuXHRcclxuXHRcclxuZXhwb3J0IGZ1bmN0aW9uIHJlc291cmNlTGlzdEN0cmwgKCRzY29wZSwgJHJvb3RTY29wZSwgQXV0aGVudGljYXRpb25TZXJ2aWNlLENvZGVzU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSxVc2VyU2VydmljZSxLYXRhbHlvU3RhdGVNYW5hZ2VyLHVpR3JpZENvbnN0YW50cyxNZXNzYWdpbmdTZXJ2aWNlLE1lbnVTZXJ2aWNlLCR0aW1lb3V0LCRzdGF0ZSwkc3RhdGVQYXJhbXMsJHEpIHtcclxuXHJcbiAgICAkc2NvcGUuQ1RSTD0ncmVzb3VyY2VMaXN0Q3RybCc7XHJcblxyXG4gICAgJHNjb3BlLm1lbnVfc2VydmljZSA9IE1lbnVTZXJ2aWNlXHJcbiAgICAkc2NvcGUubWVudV9zZXJ2aWNlLmNsZWFyU2lkZU1lbnUoKVxyXG5cclxuICAgICRzY29wZS5wYWdpbmF0aW9uT3B0aW9ucyA9IHtcclxuICAgICAgICBwYWdlTnVtYmVyOiAxLFxyXG4gICAgICAgIHBhZ2VTaXplOiAxMCxcclxuICAgICAgICBzb3J0OiBudWxsXHJcbiAgICB9O1xyXG5cdFxyXG5cdCRzY29wZS5zdGF0dXNMaXN0ID0gWyB7aWQ6MSAsbmFtZTogJ0FjdGl2ZSd9LCB7aWQ6MiwgbmFtZTogJ0Rpc2FibGVkJ31dXHJcblx0XHJcblx0JHNjb3BlLnRlc3RmbiA9IGZ1bmN0aW9uKGEsYil7XHJcblx0XHRjb25zb2xlLmxvZyhhKVxyXG5cdFx0Ly9kZWJ1Z2dlclxyXG5cdFx0XHJcblx0fVxyXG5cdFxyXG5cdCRzY29wZS5zaG93RW52SW5mb0NvdW50ID0gZnVuY3Rpb24oKSB7XHJcblx0XHRsZXQgY2M9MFxyXG5cdFx0aWYgKCRyb290U2NvcGUuZ2xvYmFscy5lbnZpbmZvKSB7XHJcblx0XHRcdFx0Zm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoJHJvb3RTY29wZS5nbG9iYWxzLmVudmluZm8gXHQpKSB7XHJcblx0XHRcdFx0XHRcdCAgY29uc29sZS5sb2coYCR7a2V5fTogJHt2YWx1ZX1gKTtcclxuXHRcdFx0XHRcdFx0ICBjYz1jYyt2YWx1ZVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRcclxuXHRcdH0gZWxzZSByZXR1cm4gMFxyXG5cdFx0cmV0dXJuIGNjXHJcblx0fVxyXG5cdFxyXG4gICAgJHNjb3BlLnBhZ2VTdGF0ZSA9IHtcclxuXHRcdHJlbWVtYmVyU2VhcmNoOiB0cnVlLCBcclxuXHRcdHJlc291cmNlOiB7XHJcblx0XHRcdFN0YXR1czogW3tpZDoxICxuYW1lOiAnQWN0aXZlJ31dIFxyXG5cdFx0XHR9XHJcblx0fVxyXG5cdFxyXG4gICAgJHNjb3BlLnJlc3VsdHMgPSB7fTtcclxuICAgICRzY29wZS5maWx0ZXIgPSB7J3Jlc291cmNlX3R5cGUnOiRzdGF0ZVBhcmFtcy5yZXNvdXJjZV90eXBlLCduYW1lJzokc3RhdGVQYXJhbXMucmVzb3VyY2VfbmFtZX07XHJcbiAgICAkc2NvcGUuYWN0aW9uRGVmPSBbe2lkOjEsYnRuTGFiZWw6J0VkaXQgcmVzb3VyY2UnLGJ0bkNsYXNzOididG4tb3V0bGluZS1wcmltYXJ5JyxpY29uOidmYSBmYS1lZGl0J31dIFxyXG4gICAgJHNjb3BlLnNtUGFyYW1zID0ge1V1aWRSZWY6MX1cclxuICAgICRzY29wZS5yZXNvdXJjZVRhYmxlQ29sdW1ucyA9ICAgW1xyXG4gICAgICAgIHsgbmFtZTogJ25pZCcsIGRpc3BsYXlOYW1lOiAnSUQnLCB0eXBlOiAnbnVtYmVyJywgd2lkdGg6JzElJyxlbmFibGVIaWRpbmc6IGZhbHNlLCB2aXNpYmxlOiB0cnVlIH0sXHJcbiAgICAgICAgeyBuYW1lOiAnaWQnLCBkaXNwbGF5TmFtZTogJ0dVSUQnfSxcclxuICAgICAgICB7IG5hbWU6IFwiUmVzb3VyY2VUeXBlLlJlc291cmNlTmFtZVwiLCB3aWR0aDonMSUnLGRpc3BsYXlOYW1lOiAnVHlwZScsIHR5cGU6J2JhZGdlJyB9LFxyXG4gICAgICAgIHsgbmFtZTogXCJyZXNvdXJjZWRlZmxhbmdfc2V0WzBdLk5hbWVcIiwgZGlzcGxheU5hbWU6ICdSZXNvdXJjZSBuYW1lJ30sXHJcbiAgICAgICAgeyBuYW1lOiBcInJlc291cmNlZGVmbGFuZ19zZXRbMF0uU3ViamVjdFwiLCBkaXNwbGF5TmFtZTogJ1Jlc291cmNlIHN1YmplY3QnIH0sXHJcbiAgICAgICAgeyBuYW1lOiBcInJlc291cmNlZGVmbGFuZ19zZXRbMF0uRGVzY3JpcHRpb25cIiwgZGlzcGxheU5hbWU6ICdSZXNvdXJjZSBkZXNjcmlwdGlvbicgfSxcclxuICAgICAgIC8vIHsgbmFtZTogXCJyZXNvdXJjZWRlZmxhbmdfc2V0WzBdLkxhbmcubmFtZVwiLCBkaXNwbGF5TmFtZTogJ0xhbmd1YWdlJ30sXHJcbiAgICAgICAgeyBuYW1lOiBcIkFjdGl2ZVwiLCBkaXNwbGF5TmFtZTogJ0FjdGl2ZScsd2lkdGg6JzElJyx0eXBlOidib29sJ30sXHJcbiAgICAgICAgLyogeyBuYW1lOiBcImFjdFwiLCBkaXNwbGF5TmFtZTogJyd9LCAvL3NwZWNpYWwgYWN0aW9ucyBjb2x1bW4qL1xyXG4gICAgICAgICBdO1xyXG4gICBcclxuICAgICAgICAkc2NvcGUua3NtID0gS2F0YWx5b1N0YXRlTWFuYWdlcjtcclxuICAgIFxyXG4gICAgICAgIGxldCByZXNvdXJjZUxpc3RTdGF0ZT0gJHNjb3BlLmtzbS5hZGRTdWJqZWN0KCRzY29wZS5DVFJMLCRzY29wZS5yZXNvdXJjZSk7XHJcbiAgICAgICAgbGV0IHJlc291cmNlTGlzdFN0YXRlTmFtZSA9IHJlc291cmNlTGlzdFN0YXRlLnN1YmplY3QubmFtZTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAocmVzb3VyY2VMaXN0U3RhdGUuc3ViamVjdC5nZXRTdGF0ZSE9dW5kZWZpbmVkKSAkc2NvcGUucGFnZVN0YXRlID1yZXNvdXJjZUxpc3RTdGF0ZS5zdWJqZWN0LmdldFN0YXRlO1xyXG4gICAgICAgIGlmICgkc2NvcGUucGFnZVN0YXRlPy5yZW1lbWJlclNlYXJjaClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UgPSAkc2NvcGUucGFnZVN0YXRlLnJlc291cmNlO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmN1cnJlbnRQYWdlPSRzY29wZS5wYWdlU3RhdGUuY3VycmVudFBhZ2U7XHRcclxuICAgICAgICAgICAgICAgICRzY29wZS5yZXN1bHRzLnBhZ2VTaXplID0gJHNjb3BlLnBhZ2VTdGF0ZS5wYWdlU2l6ZTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlPT11bmRlZmluZWQpICRzY29wZS5yZXNvdXJjZT17fTtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgc2VhcmNoX3NhdmVkID0gZnVuY3Rpb24oZGF0YSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgcmVzb3VyY2VMaXN0U3RhdGUuc3ViamVjdC5zZXRTdGF0ZUNoYW5nZXMgPSBkYXRhO1xyXG4gICAgICAgICAgIHJlc291cmNlTGlzdFN0YXRlLnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKCk7ICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgbGV0IGFjdGlvbl9zZWFyY2hfc2F2ZWQgPSAkc2NvcGUua3NtLmFkZEFjdGlvbihyZXNvdXJjZUxpc3RTdGF0ZU5hbWUsXCJyZXNvdXJjZUxpc3RTZWFyY2hcIixzZWFyY2hfc2F2ZWQpO1xyXG4gICAgICAgICBcclxuICAgICRzY29wZS5yZXNvdXJjZVNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICBcclxuICAgICRzY29wZS51cGRhdGVTdGF0ZSA9IGZ1bmN0aW9uKClcclxuICAgIHtcclxuICAgICAgIC8vICRzY29wZS5wYWdlU3RhdGUucmVtZW1iZXJTZWFyY2g9ISRzY29wZS5wYWdlU3RhdGUucmVtZW1iZXJTZWFyY2g7XHJcbiAgICAgICAgJHNjb3BlLnBhZ2VTdGF0ZS5yZXNvdXJjZSA9ICRzY29wZS5yZXNvdXJjZTtcclxuICAgICAgICAkc2NvcGUucGFnZVN0YXRlLmN1cnJlbnRQYWdlID0gJHNjb3BlLmN1cnJlbnRQYWdlO1xyXG4gICAgICAgICRzY29wZS5wYWdlU3RhdGUucGFnZVNpemUgPSAkc2NvcGUucmVzdWx0cy5wYWdlU2l6ZTtcclxuICAgICAgICAkc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24ocmVzb3VyY2VMaXN0U3RhdGVOYW1lLFwicmVzb3VyY2VMaXN0U2VhcmNoXCIsJHNjb3BlLnBhZ2VTdGF0ZSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICB9ICBcclxuICAgXHJcbiAgICAkc2NvcGUucm93U2VsZWN0aW9uQ2hhbmdlZCA9IGZ1bmN0aW9uKGl0ZW0pe1xyXG4gICAgICAgIC8vZGVidWdnZXIgLy9yb3dTZWxlY3Rpb25DaGFuZ2VkXHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLnJlc291cmNlU2VsZWN0ZWQ9aXRlbS5pc1NlbGVjdGVkO1xyXG4gICAgICAgICRzY29wZS5zZWxlY3RlZFJlc291cmNlID0gaXRlbS5pZDtcclxuICAgICAgICAkc2NvcGUuc2VsZWN0ZWRSZXNvdXJjZVR5cGUgPSBpdGVtLlJlc291cmNlVHlwZS5SZXNvdXJjZU5hbWU7XHJcbiAgICAgICAgJHNjb3BlLnJlc291cmNlSWNvblNlbGVjdGVkPWl0ZW0uUmVzb3VyY2VUeXBlLlBhcmFtZXRlcnMuSWNvbjtcclxuICAgICAgICAkc2NvcGUucmVzb3VyY2VEZXRhaWxzU3RhdGU9aXRlbS5SZXNvdXJjZVR5cGUuUGFyYW1ldGVycy5EZWZpbml0aW9uUGFnZTtcclxuICAgICAgICAkc2NvcGUucmVzb3VyY2VEZXRhaWxzUGFyYW1zPXtpZDokc2NvcGUuc2VsZWN0ZWRSZXNvdXJjZX07ICAgICAgXHJcbiAgICB9O1xyXG4gICAgICAgICAgXHJcbiAgICAgJHNjb3BlLnJlc291cmNlSWNvblNlbGVjdGVkID0gXCJnbG9iZVwiO1xyXG4gICAgICRzY29wZS5zZWxlY3RlZFJlc291cmNlVHlwZT1cIlJlc291cmNlXCI7XHJcbiAgICAgJHNjb3BlLnJlc291cmNlRGV0YWlsc0xpbms9XCJhcHAubmF2YmFyLnJlc291cmNlcy5saXN0XCI7XHJcbiAgICAgJHNjb3BlLmFkdmFuY2VkU2VhcmNoPWZhbHNlO1xyXG4gICAgIFxyXG4gICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgXHJcbiAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0UmVzb3VyY2VQYXJhbXMoKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VUeXBlTGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VTdGF0dXNMaXN0IT11bmRlZmluZWQpICRzY29wZS5maWx0ZXJSZXNvdXJjZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICRzY29wZS5SZXNvdXJjZVNlYXJjaCgpOyAgICAgXHJcbiAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICBDb2Rlc1NlcnZpY2UuZ2V0Q29kZXNCeU5hbWUoJ19BUFBTXycsbGFuZykudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZVRhZ3NMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyBcclxuIFxyXG5cclxuICAgICAkc2NvcGUuZ290b1N0YXRlID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAkc3RhdGUuZ28oJHNjb3BlLnJlc291cmNlRGV0YWlsc1N0YXRlLCRzY29wZS5yZXNvdXJjZURldGFpbHNQYXJhbXMpO1xyXG4gICAgIH07XHJcbiBcclxuIFxyXG4gICAgICAgICRzY29wZS5yZXNvdXJjZUxvYWRpbmc9ZmFsc2U7XHJcbiAgICAgICAgJHNjb3BlLnNob3dUYWJsZUFjdGlvbnM9dHJ1ZTtcclxuIFxyXG4gICAgICAgICRzY29wZS5wcm9jZXNzVGFibGVBY3Rpb24gPSBmdW5jdGlvbihpdGVtLGFjdGlvbklkKXtcclxuICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZURldGFpbHNTdGF0ZT1pdGVtLlJlc291cmNlVHlwZS5QYXJhbWV0ZXJzLkRlZmluaXRpb25QYWdlO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGV0YWlsc1BhcmFtcz17aWQ6aXRlbS51aWR9O1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmdvdG9TdGF0ZSgpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAkc2NvcGUuZ2V0UmVzb3VyY2VEZWYgPSBmdW5jdGlvbihwYWdlTnVtYmVyLHBhZ2VTaXplKXsvL0NhbGxlZCBieSBzbWFydCB0YWJsZVxyXG4gICAgICAgXHJcbiAgICAgICAgbGV0IGRlZmVycmVkID0gJHEuZGVmZXIoKTsgICAgXHJcbiAgICAgICAgJHNjb3BlLnJlc291cmNlTG9hZGluZz10cnVlO1xyXG4gICAgICAgIC8vZGVidWdnZXIgLy9nZXRSZXNvdXJjZURlZlxyXG4gICBcclxuICAgICAgICB2YXIgZmlsdGVyPSRzY29wZS5yZXNvdXJjZTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAocGFnZU51bWJlcj09dW5kZWZpbmVkKSBwYWdlTnVtYmVyID0gJHNjb3BlLnBhZ2luYXRpb25PcHRpb25zLnBhZ2VOdW1iZXI7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHBhZ2VTaXplPT11bmRlZmluZWQpIHBhZ2VTaXplID0gJHNjb3BlLnBhZ2luYXRpb25PcHRpb25zLnBhZ2VTaXplO1xyXG4gICAgICAgICBcclxuICAgICAgICBpZiAoJHNjb3BlLnRvdGFsQ291bnQ+MCl7XHJcbiAgICAgICAgICAgIGlmIChNYXRoLmNlaWwoJHNjb3BlLnRvdGFsQ291bnQvcGFnZVNpemUpPG5ld1BhZ2UpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBuZXdQYWdlID0gTWF0aC5jZWlsKCRzY29wZS50b3RhbENvdW50L3BhZ2VTaXplKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICB9XHJcbiAgICAgICAgICRzY29wZS5wYWdlU3RhdGUucmVzb3VyY2UgPSAkc2NvcGUucmVzb3VyY2U7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICBpZiAoJHNjb3BlLmZpcnN0UXVlcnkpXHJcbiAgICAgICAgIHtcclxuICAgICAgICAgICRzY29wZS5wYWdlU3RhdGUuY3VycmVudFBhZ2UgPSBwYWdlTnVtYmVyO1xyXG4gICAgICAgICAgJHNjb3BlLnBhZ2VTdGF0ZS5wYWdlU2l6ZSA9IHBhZ2VTaXplOyAgICAgICAgICAgXHJcbiAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucGFnZVN0YXRlLnJlbWVtYmVyU2VhcmNoKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlPy5jdXJyZW50UGFnZSA9PSAxKSBcdFx0JHNjb3BlLnBhZ2VTdGF0ZS5jdXJyZW50UGFnZSA9ICRzY29wZS5jdXJyZW50UGFnZTsgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZT8ucGFnZVN0YXRlPy5jdXJyZW50UGFnZSkgXHRwYWdlTnVtYmVyID0gJHNjb3BlLnBhZ2VTdGF0ZS5jdXJyZW50UGFnZTtcdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlPy5wYWdlU3RhdGU/LnBhZ2VTaXplKSBcdHBhZ2VTaXplID0gJHNjb3BlLnBhZ2VTdGF0ZS5wYWdlU2l6ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbihyZXNvdXJjZUxpc3RTdGF0ZU5hbWUsXCJyZXNvdXJjZUxpc3RTZWFyY2hcIiwkc2NvcGUucGFnZVN0YXRlKTtcclxuICAgICAgICBcclxuICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmRmlsdGVyZWQocGFnZU51bWJlcixwYWdlU2l6ZSxmaWx0ZXIsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZpcnN0UXVlcnk9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VUYWJsZURhdGEgPSBkYXRhLmRhdGEucmVzdWx0cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRzY29wZS5ncmlkT3B0aW9ucy5kYXRhID0gZGF0YS5kYXRhLnJlc3VsdHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc3VsdHMgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc3VsdHMuY29sdW1ucz0kc2NvcGUucmVzb3VyY2VUYWJsZUNvbHVtbnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm5leHRQYWdlID0gZGF0YS5kYXRhLm5leHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnByZXZpb3VzUGFnZSA9IGRhdGEuZGF0YS5wcmV2aW91cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucGFnaW5hdGlvbk9wdGlvbnMudG90YWxJdGVtQ291bnQ9ZGF0YS5kYXRhLmNvdW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jdXJyZW50UGFnZT1wYWdlTnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5wYWdpbmF0aW9uT3B0aW9ucy5udW1iZXJPZlBhZ2VzID0gTWF0aC5jZWlsKCRzY29wZS5wYWdpbmF0aW9uT3B0aW9ucy50b3RhbEl0ZW1Db3VudC9wYWdlU2l6ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc3VsdHMucGFnZVNpemUgPSBwYWdlU2l6ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzdWx0cy5udW1iZXJPZlBhZ2VzID0gJHNjb3BlLnBhZ2luYXRpb25PcHRpb25zLm51bWJlck9mUGFnZXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAkc2NvcGUuZ3JpZE9wdGlvbnMudG90YWxJdGVtcz0kc2NvcGUudG90YWxDb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogJHNjb3BlLnJlc3VsdHN9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlTG9hZGluZz1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VMb2FkaW5nPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcclxuICAgICAgfTtcclxuICAgICAgICBcclxuICAgIFxyXG4gICAgLy9maWxsIGdyaWQgd2l0aCByZXNvdXJjZSBkZWZcclxuICAgICRzY29wZS5nZXRSZXNvdXJjZUxpc3QgPSBmdW5jdGlvbihuZXdQYWdlLHBhZ2VTaXplKXtcclxuICAgICAgICAkc2NvcGUuZ2V0UmVzb3VyY2VEZWYobmV3UGFnZSxwYWdlU2l6ZSk7XHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICAgJHNjb3BlLlJlc291cmNlU2VhcmNoID0gZnVuY3Rpb24ocGFnZSl7XHJcbiAgICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICAkc2NvcGUuc2VhcmNoSW5pdGlhdGVkPWZhbHNlO1xyXG4gICAgICAgICRzY29wZS5wYWdpbmF0aW9uT3B0aW9ucy50b3RhbEl0ZW1Db3VudD0wO1xyXG4gICAgICAgIGlmIChwYWdlIT11bmRlZmluZWQpICRzY29wZS5jdXJyZW50UGFnZT1wYWdlO1xyXG4gICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICRzY29wZS5zZWFyY2hJbml0aWF0ZWQ9dHJ1ZTtcclxuICAgICAgICB9KTtcclxuICAgICB9O1xyXG4gICAgIFxyXG4gICAgICRzY29wZS5wYWdlQ2hhbmdlZCA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICRzY29wZS5nZXRSZXNvdXJjZURlZigkc2NvcGUubmV4dFBhZ2UsJHNjb3BlLnByZXZpb3VzUGFnZSwkc2NvcGUuY3VycmVudFBhZ2UsJHNjb3BlLnBhZ2VTaXplLnBhZ2VTaXplKTtcclxuICAgIH07XHJcbiAgICBcclxuICAgIFxyXG4gICAgXHJcbiAgICB9XHJcblxyXG4vL1x0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyAgICAgICAgICAgUkVTT1VSQ0UgREFUQSBDT05UUk9MRVIgXHJcbi8vXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVzb3VyY2VEYXRhQ3RybCAoJHNjb3BlLCAkcm9vdFNjb3BlLCB1aUdyaWRDb25zdGFudHMsQ29kZXNTZXJ2aWNlLEF1dGhlbnRpY2F0aW9uU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSxQcm9jZXNzaW5nU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlLFVzZXJTZXJ2aWNlLCRzdGF0ZVBhcmFtcywkdGltZW91dCkge1xyXG5cdCAgIFxyXG4gICAgICAgJHNjb3BlLkNUUkw9J3Jlc291cmNlRGF0YUN0cmwnO1xyXG4gICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICBcclxuICAgICRzY29wZS5ncmlkT3B0aW9ucyA9IHtcclxuICAgICAgLy8gIGNvbHVtbkRlZnM6IGNvbERlZnMsXHJcbiAgICAgICBlbmFibGVHcmlkTWVudTogdHJ1ZSxcclxuICAgICAgIHNob3dHcmlkRm9vdGVyOiB0cnVlLFxyXG4gICAgICAgc2hvd0NvbHVtbkZvb3RlcjogdHJ1ZSxcclxuICAgICAgIGVuYWJsZVJvd1NlbGVjdGlvbjogdHJ1ZSxcclxuICAgICAgIG11bHRpU2VsZWN0OiBmYWxzZSxcclxuICAgICAgIGVuYWJsZUhvcml6b250YWxTY3JvbGxiYXIgOiAyLCBcclxuICAgICAgIG5hYmxlVmVydGljYWxTY3JvbGxiYXIgOiAyLFxyXG4gICAgICAgZW5hYmxlRmlsdGVyaW5nOiB0cnVlLFxyXG4gICAgICAgZW5hYmxlUm93SGVhZGVyU2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgICAgZW5hYmxlQ29sdW1uUmVzaXppbmc6IHRydWUsXHJcbiAgICAgICB1c2VFeHRlcm5hbFBhZ2luYXRpb246IHRydWUsXHJcbiAgICAgICBwYWdpbmF0aW9uUGFnZVNpemVzOiBbMTAsIDI1LCA1MCwxMDAsMjAwLDUwMCwxMDAwXSxcclxuICAgICAgZW5hYmxlUGFnaW5hdGlvbkNvbnRyb2xzOiBmYWxzZSxcclxuICAgICAgLy9wYWdpbmF0aW9uUGFnZVNpemU6IDEwLFxyXG4gICAgICAvL3VzZUV4dGVybmFsU29ydGluZyA6IHRydWUsXHJcbiAgICAgIC8vdXNlRXh0ZXJuYWxGaWx0ZXJpbmc6IHRydWUsXHJcbiAgICAgIC8vIG1pblJvd3NUb1Nob3cgOiAzXHJcbiAgICB9XHJcblxyXG4gIHZhciBwYWdpbmF0aW9uT3B0aW9ucyA9IHtcclxuICAgIHBhZ2VOdW1iZXI6IDEsXHJcbiAgICBwYWdlU2l6ZTogMTAsXHJcbiAgICBzb3J0OiBudWxsXHJcbiAgICB9O1xyXG4gXHJcbiAgIFxyXG4gICAgJHNjb3BlLmdyaWRPcHRpb25zUmVsYXRlZCA9IHtcclxuICAgICAgLy8gIGNvbHVtbkRlZnM6IGNvbERlZnMsXHJcbiAgICAgICBlbmFibGVHcmlkTWVudTogdHJ1ZSxcclxuICAgICAgIHNob3dHcmlkRm9vdGVyOiB0cnVlLFxyXG4gICAgICAgc2hvd0NvbHVtbkZvb3RlcjogdHJ1ZSxcclxuICAgICAgIGVuYWJsZVJvd1NlbGVjdGlvbjogdHJ1ZSxcclxuICAgICAgIG11bHRpU2VsZWN0OiBmYWxzZSxcclxuICAgICAgIGVuYWJsZUhvcml6b250YWxTY3JvbGxiYXIgOiAyLCBcclxuICAgICAgIG5hYmxlVmVydGljYWxTY3JvbGxiYXIgOiAyLFxyXG4gICAgICAgZW5hYmxlRmlsdGVyaW5nOiB0cnVlLFxyXG4gICAgICAgZW5hYmxlUm93SGVhZGVyU2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgICAgZW5hYmxlQ29sdW1uUmVzaXppbmc6IHRydWUsXHJcbiAgICAgIC8vZXhwb3J0ZXJDc3ZGaWxlbmFtZTogJ215RmlsZS5jc3YnLFxyXG4gICAgIC8qIFxyXG4gICAgICAgIHBhZ2luYXRpb25QYWdlU2l6ZXM6IFs1LCAxMCwgMjAsIDUwLCAxMDBdLFxyXG4gICAgICAgICBwYWdpbmF0aW9uUGFnZVNpemU6IDUsXHJcbiAgICAgICBlbmFibGVTZWxlY3RBbGw6IGZhbHNlLFxyXG4gICAgICAgZW5hYmxlQ2VsbEVkaXQ6IGZhbHNlKi9cclxuICAgICAgXHJcbiAgIH1cclxuICAgXHJcbiAgIFxyXG4gICAkc2NvcGUucmVzb3VyY2VJZD0kc3RhdGVQYXJhbXMuaWQ7XHJcbiAgICRzY29wZS5kYXRhPVtdO1xyXG4gICAkc2NvcGUuZ3JpZE9wdGlvbnMuZGF0YSA9ICRzY29wZS5kYXRhOyAgIFxyXG4gICAgICAgIFxyXG4gICAkc2NvcGUuZ2V0Q29kZUJ5SWQ9IGZ1bmN0aW9uIChpbnB1dCxlbnRpdHkpIHtcclxuICAgIFxyXG4gICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzVmFsdWUoZW50aXR5LGxhbmcsaW5wdXQsMSkudGhlbihmdW5jdGlvbiAoZGF0YSl7XHJcbiAgICBcclxuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICAgICAgICB9KTtcclxuICAgfTtcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgR0VUIFJFU09VUkNFIERBVEFcclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICAkc2NvcGUuZ2V0UmVzb3VyY2VEYXRhID0gZnVuY3Rpb24gKHVybE5leHQsdXJsUHJldixuZXdQYWdlLHBhZ2VTaXplKSB7XHJcbiAgICBcclxuICAgICAgICAgJHNjb3BlLmFjdGl2aXR5LmFjdGl2aXR5TWVzc2FnZSA9IFByb2Nlc3NpbmdTZXJ2aWNlLnNldEFjdGl2aXR5TXNnKCdEb3dubG9hZGluZyByZXNvdXJjZSBkYXRhIGZvciAnKyRzY29wZS5yZXNvdXJjZUlkKTtcclxuICAgICAgXHJcbiAgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChNYXRoLmNlaWwoJHNjb3BlLnRvdGFsQ291bnQvcGFnZVNpemUpPG5ld1BhZ2UpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmV3UGFnZSA9IE1hdGguY2VpbCgkc2NvcGUudG90YWxDb3VudC9wYWdlU2l6ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICBcclxuICAgICAgICAvLyBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURhdGFQYWdpbmF0ZWQoJHNjb3BlLnJlc291cmNlSWQsdXJsTmV4dCx1cmxQcmV2LG5ld1BhZ2UscGFnZVNpemUpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGF0YVBhZ2luYXRlZEZpbHRlcigkc2NvcGUucmVzb3VyY2VJZCx1cmxOZXh0LHVybFByZXYsbmV3UGFnZSxwYWdlU2l6ZSxsYW5nLFtdLCBbXSkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGF0YSA9ICBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5ncmlkT3B0aW9ucy5kYXRhID0gJHNjb3BlLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5uZXh0UGFnZSA9IGRhdGEuZGF0YS5uZXh0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucHJldmlvdXNQYWdlID0gZGF0YS5kYXRhLnByZXZpb3VzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudG90YWxDb3VudD1kYXRhLmRhdGEuY291bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jdXJyZW50UGFnZT1uZXdQYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubnVtUGFnZXMgPSBNYXRoLmNlaWwoJHNjb3BlLnRvdGFsQ291bnQvcGFnZVNpemUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucGFnZVNpemUgPSBwYWdlU2l6ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUudG90YWxDb3VudD4wICYmICRzY29wZS5jdXJyZW50UGFnZT09MCkgJHNjb3BlLmN1cnJlbnRQYWdlPTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5udW1QYWdlcyA9IE1hdGguY2VpbCgkc2NvcGUudG90YWxDb3VudC9wYWdlU2l6ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudG90YWxJdGVtcz0kc2NvcGUudG90YWxDb3VudDsgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG5cclxuXHJcbiAkc2NvcGUucGFnZUNoYW5nZWQgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICRzY29wZS5nZXRSZXNvdXJjZURhdGEoJHNjb3BlLm5leHRQYWdlLCRzY29wZS5wcmV2aW91c1BhZ2UsJHNjb3BlLmN1cnJlbnRQYWdlLCRzY29wZS5wYWdlU2l6ZSk7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgXHJcbiAgICAkc2NvcGUuZ3JpZE9wdGlvbnMub25SZWdpc3RlckFwaSA9IGZ1bmN0aW9uIChncmlkQXBpKSB7XHJcbiAgICAgICAgLy9zZXQgZ3JpZEFwaSBvbiBzY29wZVxyXG4gICAgICAgICRzY29wZS5ncmlkQXBpID0gZ3JpZEFwaTtcclxuICAgICAgICAgZ3JpZEFwaS5zZWxlY3Rpb24ub24ucm93U2VsZWN0aW9uQ2hhbmdlZCgkc2NvcGUsZnVuY3Rpb24ocm93KXtcclxuICAgICAgIFxyXG4gICAgICAgICAgJHNjb3BlLnJlc291cmNlUmVjb3JkU2VsZWN0ZWQ9cm93LmlzU2VsZWN0ZWQ7XHJcbiAgICAgICBcclxuICAgICAgICAgICBpZihyb3cuaXNTZWxlY3RlZCl7XHJcbiAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkUmVjb3JkSWQ9cm93LmVudGl0eS5pZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgIFxyXG4gICAgIFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vZXh0ZXJuYWwgcGFnaW5hdGlvblxyXG4gICAgICAgIGdyaWRBcGkucGFnaW5hdGlvbi5vbi5wYWdpbmF0aW9uQ2hhbmdlZCgkc2NvcGUsIGZ1bmN0aW9uIChuZXdQYWdlLCBwYWdlU2l6ZSkge1xyXG4gICAgICAgICAgICBwYWdpbmF0aW9uT3B0aW9ucy5wYWdlTnVtYmVyID0gbmV3UGFnZTtcclxuICAgICAgICAgICAgcGFnaW5hdGlvbk9wdGlvbnMucGFnZVNpemUgPSBwYWdlU2l6ZTtcclxuICAgICAgICAgICAgJHNjb3BlLmdldFJlc291cmNlRGF0YSgkc2NvcGUubmV4dFBhZ2UsJHNjb3BlLnByZXZpb3VzUGFnZSxuZXdQYWdlLHBhZ2VTaXplKTtcclxuICAgICAgICB9KTtcclxuICAgICB9O1xyXG4gXHJcblxyXG4gICAgICAgIFxyXG4gIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBHRVQgUkVTT1VSQ0UgQ09MVU1OU1xyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gICRzY29wZS5nZXRSZXNvdXJjZUNvbHVtbnMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlQ29sdW1ucygkc2NvcGUucmVzb3VyY2VJZCwwLFwiaVwiLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmdyaWRPcHRpb25zLmNvbHVtbkRlZnMgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyICAvL2dldFJlc291cmNlQ29sdW1ucyAvL3NtYXJ0dGFibGVcclxuICAgICAgICAgICAgICAgICRzY29wZS5nZXRSZXNvdXJjZURhdGEoJHNjb3BlLm5leHRQYWdlLCRzY29wZS5wcmV2aW91c1BhZ2UscGFnaW5hdGlvbk9wdGlvbnMucGFnZU51bWJlcixwYWdpbmF0aW9uT3B0aW9ucy5wYWdlU2l6ZSk7ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLm1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgfVxyXG4gLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIEdFVCBEQVRBU0VUIFJFTEFURUQgUkVDT1JEU1xyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gICRzY29wZS5nZXREYXRhc2V0UmVsYXRlZFJlY29yZHMgPSBmdW5jdGlvbiAocmVsYXRlZERhdGFzZXRJZCxyZWNvcmRJZCkge1xyXG4gIFxyXG4gIFxyXG4gICAgICAgICB2YXIgbGFuZyA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgIFxyXG4gICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURhdGFSZWxhdGVkKCRzY29wZS5yZXNvdXJjZUlkLHJlY29yZElkLHJlbGF0ZWREYXRhc2V0SWQsMCxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5ncmlkT3B0aW9uc1JlbGF0ZWQuZGF0YSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5ncmlkT3B0aW9uc1JlbGF0ZWQuY29sdW1uRGVmcyA9IGRhdGEuY29sdW1uc0RlZjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgR0VUIERBVEFTRVQgU0lOR0xFIFJFQ09SRFxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gICRzY29wZS5nZXREYXRhc2V0U2luZ2xlUmVjb3JkID0gZnVuY3Rpb24gKHJlbGF0ZWREYXRhc2V0SWQscmVjb3JkSWQpIHtcclxuICBcclxuICBcclxuICAgICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICBcclxuICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEYXRhRGlyZWN0RmlsdGVyKHJlbGF0ZWREYXRhc2V0SWQsMCxsYW5nLHtpZDogcmVjb3JkSWR9KS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5ncmlkT3B0aW9uc1JlbGF0ZWQuZGF0YSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5ncmlkT3B0aW9uc1JlbGF0ZWQuY29sdW1uRGVmcyA9IGRhdGEuY29sdW1uc0RlZjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLm1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VJZCAhPSB1bmRlZmluZWQpXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgVXNlclNlcnZpY2UuZ2V0VXNlcnNHcm91cHMoJ3VzZXJzJykudGhlbihmdW5jdGlvbiAoZGF0YSl7XHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLmdldFJlc291cmNlQ29sdW1ucygpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuLy8gT1ZPIEpFIEtPRCBNRU5FIEJJTE8gYSBuZW1hcyB0aSAtIFZJREpFVEkgTUlHT1IgVE9ETyAtIHZpZGpldGkgdHJlYmEgbGlcclxuICAgICRzY29wZS5ncmlkT3B0aW9ucy5vblJlZ2lzdGVyQXBpID0gZnVuY3Rpb24gKGdyaWRBcGkpIHtcclxuICAgICAgICAvL3NldCBncmlkQXBpIG9uIHNjb3BlXHJcbiAgICAgICAgJHNjb3BlLmdyaWRBcGkgPSBncmlkQXBpO1xyXG4gICAgICAgICBncmlkQXBpLnNlbGVjdGlvbi5vbi5yb3dTZWxlY3Rpb25DaGFuZ2VkKCRzY29wZSxmdW5jdGlvbihyb3cpe1xyXG4gICAgICAgXHJcbiAgICAgICAgICAkc2NvcGUucmVzb3VyY2VSZWNvcmRTZWxlY3RlZD1yb3cuaXNTZWxlY3RlZFxyXG4gICAgICAgXHJcbiAgICAgICAgICAgaWYocm93LmlzU2VsZWN0ZWQpe1xyXG4gICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZFJlY29yZElkPXJvdy5lbnRpdHkuaWRcclxuICAgICAgICAgICAgfVxyXG4gICAgIFxyXG4gICAgIFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICRzY29wZS5ncmlkT3B0aW9ucy5kYXRhID0gJHNjb3BlLmRhdGE7XHJcblx0IFxyXG5cdCBcclxuXHQgXHJcblx0ICRzY29wZS5vcGVuU2V0dGluZ3MgPSBmdW5jdGlvbih3aWRnZXQpIHtcclxuXHRcdCBjb25zb2xlLmxvZyhcIm9wZW5zZXR0aW5ncyFcIik7XHJcblx0XHRcdFxyXG5cdFx0fTtcclxuICAgICBcclxuICAgIH1cclxuXHJcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyAgICAgICAgICByZXNvdXJjZU1BUFBJTkdTIGN0cmwgXHJcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5leHBvcnQgZnVuY3Rpb24gbWFwcGluZ3NGb3JtQ3RybCAoJHNjb3BlLCAkcm9vdFNjb3BlLCBBdXRoZW50aWNhdGlvblNlcnZpY2UsUmVzb3VyY2VzRGF0YVNlcnZpY2UsUHJvY2Vzc2luZ1NlcnZpY2UsTWVzc2FnaW5nU2VydmljZSwkc3RhdGVQYXJhbXMsJHRpbWVvdXQsR3JpZHN0ZXJTZXJ2aWNlLCRlbGVtZW50LGRyYWd1bGFyU2VydmljZSkge1xyXG4gICAgICAkc2NvcGUuQ1RSTD0nbWFwcGluZ3NGb3JtQ3RybCc7XHJcbiAgICAgICRzY29wZS5yZXNvdXJjZUlkPSRzdGF0ZVBhcmFtcy5pZDtcclxuICAgICAgJHNjb3BlLmZvcm1Mb2FkZWQgPSBmYWxzZTtcclxuICAgICAgJHNjb3BlLmdyaWRzdGVyVHlwZSA9XCJkYXRhc2V0XCI7XHJcbiAgICAgICRzY29wZS5kYXNoYm9hcmQ9IHt3aWRnZXRzOntsYXlvdXQ6W119fTtcclxuICAgICRzY29wZS5nc3J2YyA9IEdyaWRzdGVyU2VydmljZVxyXG4gICAgJHNjb3BlLmdzcnZjLnJlc2V0Qm9keUJnQ29sb3IoKVxyXG4gICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzID0gR3JpZHN0ZXJTZXJ2aWNlLmdldEVtcHR5RGF0YXNldEZvcm0oKTtcclxuICAgICAgXHJcbiAgICAgIC8vIFNFTEVDVEVEIFJFU09VUkNFIENBTExCQUNLU1xyXG4gICAgICAgICRzY29wZS5vblNlbGVjdERhdGFzZXQ9IGZ1bmN0aW9uIChpdGVtKXtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VGaWVsZHMoaXRlbS5pZCxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHsgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5maWVsZFJlc291cmNlcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5kYXRhLmZvckVhY2goIGRmaWVsZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmllbGRSZXNvdXJjZXMucHVzaCggIHsgJ2lkJzogZGZpZWxkLmlkLCAnZGJ0eXBlJzpkZmllbGQuRGJ0eXBlLCAnRmllbGROYW1lJzogZGZpZWxkLkZpZWxkTmFtZSwgJ0ZpZWxkVHlwZSc6IGRmaWVsZC5GaWVsZFR5cGUsJ1Jlc291cmNlRGVmSWQnOmRmaWVsZC5SZXNvdXJjZURlZklkIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgIFxyXG4gICAgIC8vRG9kYW8gZnVua2NpanUgZ2V0VHJhbnNmb3JtRmllbGRzIGplciBvdmEgZHJ1Z2Egc2EgMyBhcmd1bWVudGEgbmUgcmFkaSgkc2NvcGUuZ2V0VHJhbnNmb3JtRmllbGRzID0gZnVuY3Rpb24gKHRyYW5zZm9ybUlkLGZpZWxkMSxmaWVsZDIpIClcclxuXHQgJHNjb3BlLmdldFRyYW5zZm9ybUZpZWxkcyA9IGZ1bmN0aW9uICh0cmFuc2Zvcm1JZCkge1xyXG4gICAgXHJcbiAgICAgICAgIHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRUcmFuc2Zvcm1GaWVsZHModHJhbnNmb3JtSWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRyYW5zZm9ybUZpZWxkcyA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07ICBcclxuICAgICAgICBcclxuICAgICB2YXIgZmlsZWVsPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXlmaWxlJyk7XHJcbiAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICBmaWxlZWwuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24oZSkge1xyXG4gICBcclxuICAgICAgICAgIC8vYWZ0ZXIgZmlsZSBpcyBwaWNrZWQgd2UgcHJvY2VzcyBpdHMgY29udGVudFxyXG4gICAgICAgICAgdmFyIGZpbGVzID0gZS50YXJnZXQuZmlsZXM7XHJcbiAgICAgICAgICBpZiAoZmlsZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgIHZhciByID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgICAgICAgICAgICAgci5vbmxvYWQgPSBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudHMgPSBlLnRhcmdldC5yZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmlsZUNvbnRlbnQgPSBjb250ZW50cztcclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpIHsgJHNjb3BlLmV4dHJhY3RGaWVsZHNGcm9tRmlsZSgpOyB9KTsgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICByLnJlYWRBc1RleHQoZmlsZXNbMF0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBhcHBseSBjaGFuZ2VzIHRvIGFuZ3VsYXIgd2l0aCAkdGltZW91dFxyXG5cdFx0XHQkdGltZW91dChmdW5jdGlvbigpIHsgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5zaG93R3JpZD1mYWxzZTtcclxuICAgICAgICAkc2NvcGUuZ3JpZE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIGVuYWJsZUdyaWRNZW51OiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93R3JpZEZvb3RlcjogdHJ1ZSxcclxuICAgICAgICAgICAgLy9zaG93Q29sdW1uRm9vdGVyOiB0cnVlLFxyXG4gICAgICAgICAgICBlbmFibGVSb3dTZWxlY3Rpb246IHRydWUsXHJcbiAgICAgICAgICAgICAgICBtdWx0aVNlbGVjdDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBlbmFibGVIb3Jpem9udGFsU2Nyb2xsYmFyIDogMCwgXHJcbiAgICAgICAgICAgICAgICBlbmFibGVWZXJ0aWNhbFNjcm9sbGJhciA6IDIsXHJcbiAgICAgICAgICAgICAgICAvL2VuYWJsZUZpbHRlcmluZzogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGVuYWJsZVJvd0hlYWRlclNlbGVjdGlvbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGVuYWJsZUNvbHVtblJlc2l6aW5nOiB0cnVlLFxyXG4gICAgICAgICAgIC8vIHVzZUV4dGVybmFsUGFnaW5hdGlvbjogdHJ1ZSxcclxuICAgICAgICAgICAgcGFnaW5hdGlvblBhZ2VTaXplczogWzUsMTAsIDI1LCA1MCwxMDAsMjAwLDUwMF0sXHJcbiAgICAgICAgICAgIGVuYWJsZVBhZ2luYXRpb25Db250cm9sczogdHJ1ZSxcclxuICAgIH1cclxuICAgIFxyXG4gICAgICRzY29wZS5ncmlkT3B0aW9ucy5jb2x1bW5EZWZzID0gW1xyXG4gICAgeyBuYW1lOidpZCcsIHdpZHRoOjUwIH0sXHJcbiAgICB7IG5hbWU6J25hbWUnIH0sXHJcbiAgXTtcclxuXHJcbiAvKiBrT0QgTUVORSBKRSBPVkRKRSBWRUxJS0kgS09NQUQgS09KSSBQVU5JIEdSSURPUFRJT05TMiAtIE5FIFpOQU0gREEgTEkgdG8gdHJlYmEgZXZvIGdhIGtvbWVudGlyYW5vZyovXHJcbiAgICAgIC8vIFRSQU5TRlJPTSBHUklEXHJcbiAgICAgICRzY29wZS5ncmlkT3B0aW9uczIgPSB7XHJcbiAgICAgICAgICAgIGNvbHVtbkRlZnM6IFtcclxuICAgICAgICAgICAgIHsgbmFtZTogJ2lkJywgZGlzcGxheU5hbWU6ICdUcmFuc2Zvcm0gSUQnLCB0eXBlOiAnbnVtYmVyJywgd2lkdGg6JzE1JScsZW5hYmxlSGlkaW5nOiBmYWxzZSwgdmlzaWJsZTogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgeyBuYW1lOiAndHJhbnNmb3JtX25hbWUnLCBkaXNwbGF5TmFtZTogJ1RyYW5zZm9ybSB1bmlxdWUgbmFtZSd9LFxyXG4gICAgICAgICAgICAgeyBuYW1lOiAnbmFtZScsIGRpc3BsYXlOYW1lOiAnVHJhbnNmb3JtIGRpc3BsYXkgbmFtZSd9LFxyXG4gICAgICAgICAgICAgeyBuYW1lOiAnZmllbGRfdHlwZTEubmFtZScsIGRpc3BsYXlOYW1lOiAnRmllbGQgMSB0eXBlJyB9LFxyXG4gICAgICAgICAgICAgeyBuYW1lOiAnZmllbGRfdHlwZTIubmFtZScsIGRpc3BsYXlOYW1lOiAnRmllbGQgMiB0eXBlICcgfSxcclxuICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICBlbmFibGVHcmlkTWVudTogdHJ1ZSxcclxuICAgICAgICAgICAgc2hvd0dyaWRGb290ZXI6IHRydWUsXHJcbiAgICAgICAgc2hvd0NvbHVtbkZvb3RlcjogdHJ1ZSxcclxuICAgICAgICAgICAgZW5hYmxlUm93U2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgICAgICAgIG11bHRpU2VsZWN0OiBmYWxzZSxcclxuICAgICAgICAgICBlbmFibGVIb3Jpem9udGFsU2Nyb2xsYmFyIDogMiwgXHJcbiAgICAgICAgICBlbmFibGVWZXJ0aWNhbFNjcm9sbGJhciA6IDIsXHJcbiAgICAgICAgICAgZW5hYmxlRmlsdGVyaW5nOiB0cnVlLFxyXG4gICAgICAgICAgIGVuYWJsZVJvd0hlYWRlclNlbGVjdGlvbjogdHJ1ZSxcclxuICAgICAgICAgICBlbmFibGVDb2x1bW5SZXNpemluZzogdHJ1ZSxcclxuICAgICAgIH1cclxuICAgICAgIFxyXG4gICAgICAgJHNjb3BlLmdyaWRPcHRpb25zMi5vblJlZ2lzdGVyQXBpID0gZnVuY3Rpb24gKGdyaWRBcGkpIHtcclxuICAgICAgICAkc2NvcGUuZ3JpZEFwaTIgPSBncmlkQXBpO1xyXG4gICAgICAgICAgZ3JpZEFwaS5zZWxlY3Rpb24ub24ucm93U2VsZWN0aW9uQ2hhbmdlZCgkc2NvcGUsZnVuY3Rpb24ocm93KXtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAkc2NvcGUudHJhbnNmb3JtU2VsZWN0ZWQ9cm93LmlzU2VsZWN0ZWQ7XHJcbiAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZFRyYW5zZm9ybSA9IHJvdy5lbnRpdHkuaWQ7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUudHJhbnNmb3JtRmllbGRzIT11bmRlZmluZWQpICRzY29wZS50cmFuc2Zvcm1GaWVsZHMubGVuZ3RoPTA7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLnRyYW5zZm9ybVNlbGVjdGVkKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAkc2NvcGUuZ2V0VHJhbnNmb3JtRmllbGRzKHJvdy5lbnRpdHkuaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICB9XHJcblxyXG4gICAgIC8va2FkIHNlIHNlbGVrdGlyYSBtYXBwaW5nIG5hIGdyaWR1IFxyXG4gICAgICRzY29wZS5ncmlkT3B0aW9ucy5vblJlZ2lzdGVyQXBpID0gZnVuY3Rpb24gKGdyaWRBcGkpIHtcclxuICAgICAgICAgJHNjb3BlLmdyaWRBcGkgPSBncmlkQXBpO1xyXG4gICAgIFxyXG4gICAgICAgICBncmlkQXBpLnNlbGVjdGlvbi5vbi5yb3dTZWxlY3Rpb25DaGFuZ2VkKFxyXG5cdFx0IFxyXG5cdFx0ICRzY29wZSxmdW5jdGlvbihyb3cpe1xyXG4gICAgICAgICAgICAgJHNjb3BlLmlzU2VsZWN0ZWQ9cm93LmlzU2VsZWN0ZWQ7XHJcbiAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRJZCA9IHJvdy5lbnRpdHkuaWQ7XHJcbiAgICAgICAgICAgICAkc2NvcGUubWFwcGluZ05hbWUgPSByb3cuZW50aXR5Lm5hbWU7XHJcbiAgICAgICAgICAgICAkc2NvcGUuaXRlbXMubGVuZ3RoPTA7IC8vdmlkamV0aSBkYSBsaSB0cmViYVxyXG4gICAgICAgICAgICAgJHNjb3BlLml0ZW1zPUpTT04ucGFyc2Uocm93LmVudGl0eS5maWxlRmllbGRzLnJlcGxhY2UoLycvZyxcIlxcXCJcIikpO1xyXG4gICAgICAgICAgICAgJHNjb3BlLml0ZW1zMi5sZW5ndGg9MDsvL3ZpZGpldGkgZGEgbGkgdHJlYmFcclxuICAgICAgICAgICAgICRzY29wZS5pdGVtczI9SlNPTi5wYXJzZShyb3cuZW50aXR5LnJlc291cmNlTWFwcGluZy5yZXBsYWNlKC8nL2csXCJcXFwiXCIpKTtcclxuICAgICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgLy8gZHJhZ3VsYXIgaXRlbXMyXHJcbiAgICAgICAgICAgICAgICAgIHZhciBkcmFndWxhckNvbnRhaW5lckNsYXNzZXM9W107XHJcbiAgICAgICAgICAgICAgICAgIHZhciBkcmFndWxhckNvbnRhaW5lck1vZGVscyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICBmb3IodmFyIGk9MDtpPCRzY29wZS5pdGVtczIubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFndWxhckNvbnRhaW5lck1vZGVscy5wdXNoKCRzY29wZS5pdGVtczJbaV0uY2VsbHMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFndWxhckNvbnRhaW5lckNsYXNzZXMucHVzaCgnZXhhbXBsZVJvd3MnK2kpOyAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAkc2NvcGUuc2V0dXBEcmFndWxhcjQoZHJhZ3VsYXJDb250YWluZXJNb2RlbHMsZHJhZ3VsYXJDb250YWluZXJDbGFzc2VzLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIC8vZHJhZ3VsYXIgaXRlbXNcclxuICAgICAgICAgICAgICAgdmFyIGRyYWd1bGFyQ29udGFpbmVyQ2xhc3Nlcz1bXTtcclxuICAgICAgICAgICAgICAgdmFyIGRyYWd1bGFyQ29udGFpbmVyTW9kZWxzID0gW107ICAgIFxyXG4gICAgICAgICAgICAgICBmb3IodmFyIGk9MDtpPCRzY29wZS5pdGVtcy5sZW5ndGg7aSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFndWxhckNvbnRhaW5lck1vZGVscy5wdXNoKCRzY29wZS5pdGVtc1tpXS5jZWxscyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFndWxhckNvbnRhaW5lckNsYXNzZXMucHVzaCgnZXhhbXBsZVJvdycraSk7ICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICRzY29wZS5zZXR1cERyYWd1bGFyNChkcmFndWxhckNvbnRhaW5lck1vZGVscyxkcmFndWxhckNvbnRhaW5lckNsYXNzZXMsIGZhbHNlKTtcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICBcclxuICAgICAgICAgIH0pOy8vb24ucm93U2VsZWN0aW9uQ2hhbmdlZFxyXG4gICAgIH1cclxuICAgICBcclxuICAgICBcclxuICAgICBcclxuICAgICAgICAgJHNjb3BlLnJlY3Vyc2l2ZVRyYXZlcnNlICA9IGZ1bmN0aW9uIChvYmosICBwYXRjaERhdGEpICAgICAgeyAvLyAgcmVjdXJzaXZlbHkgcGF0Y2hpbmcgZGFzaGJvYXJkIG9iamVjdFxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHZhciBvID0ge307XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICAob2JqICYmIG9iai5oYXNPd25Qcm9wZXJ0eSgnRmllbGRUeXBlJykpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoRGF0YS5wdXNoKHtjZWxsczpbXSxuYW1lOm9iai5OYW1lLGl0ZW1JRDpvYmouSXRlbUlkLHByZXNlbnRhdGlvbklkOm9iai5QcmVzZW50YXRpb25JZCxwbGFjZWhvbGRlcjpvYmouUGxhY2Vob2xkZXJ9KTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKG9iaikgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChcclxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihrZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAodHlwZW9mKG9ialtrZXldKSA9PT0gJ29iamVjdCcpICYmIG9ialtrZXldICAgKSB7ICAvL2NvbnRhaW5lciBsZXZlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pZiAoICAoa2V5ID09PSAnY29kZXNEZWZpbml0aW9uTGlzdCcpIHx8IChrZXkgPT09J3B1Ymxpc2hlZFJlc291cmNlTGlzdCcpIHx8IChrZXk9PT0ncmVzb3VyY2VMaXN0JykgfHwgKGtleT09PSdkYXRhc2V0TGlzdFBhcmVudCcpIHx8IChrZXk9PSdsb2NhbFZhcnMnKSB8fCAoa2V5PT0ndGFnTGlzdCcpICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVjdXJzaXZlVHJhdmVyc2Uob2JqW2tleV0sICBwYXRjaERhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAgIC8vIGxlYWYgbGV2ZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ID09ICduZXN0bycgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb1snaWQnXT0gb2JqW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgOyBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy9pZiAoT2JqZWN0LmtleXMobykubGVuZ3RoID4gMCkgLi5kbyBzb21vZXRoaW5nIHdpdGggbyAgIFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmZpbGxJdGVtczIgPSBmdW5jdGlvbiAoc291cmNlRGFzaGJvYXJkKSB7XHJcbiAgICAgICAgICAgLy8gUHJlcGFyZSBSZXNvdXJjZSBmaWVsZHMgZm9yIGRyYWcmZHJvcCAgXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgdmFyIHJlcz1bXVxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAkc2NvcGUucmVjdXJzaXZlVHJhdmVyc2Uoc291cmNlRGFzaGJvYXJkLCAgcmVzKVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLml0ZW1zMiA9IHJlc1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIC8qIHZhciB0bXA9W107XHJcbiAgICAgICAgICAgZm9yICh2YXIgdyA9IDAgO3cgPCAgJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzLmxlbmd0aDsgIHcrKykgXHJcbiAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IDA7ICBsPCAkc2NvcGUuZGFzaGJvYXJkLndpZGdldHNbd10ubGF5b3V0Lmxlbmd0aDsgbCsrKSBcclxuICAgICAgICAgICAgICBmb3IgKHZhciBsbCA9IDA7ICBsbDwgJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzW3ddLmxheW91dFtsXS5sYXlvdXQubGVuZ3RoOyBsbCsrKSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJHNjb3BlLmRhc2hib2FyZDIud2lkZ2V0c1t3XS5sYXlvdXRbbF0ubGF5b3V0W2xsXSk7XHJcbiAgICAgICAgICAgICAgICAgIHRtcC5wdXNoKCRzY29wZS5kYXNoYm9hcmQud2lkZ2V0c1t3XS5sYXlvdXRbbF0ubGF5b3V0W2xsXSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGZvcih2YXIgaT0wO2k8dG1wLmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgICAgICAgICAkc2NvcGUuaXRlbXMyLnB1c2goe2NlbGxzOltdLG5hbWU6dG1wW2ldLk5hbWUsaXRlbUlEOnRtcFtpXS5JdGVtSWQscHJlc2VudGF0aW9uSWQ6dG1wW2ldLlByZXNlbnRhdGlvbklkLHBsYWNlaG9sZGVyOnRtcFtpXS5QbGFjZWhvbGRlcn0pOyAgICAgICAgXHJcbiAgICAgICAgICAgICAgIH0gXHJcbiovXHJcblxyXG5cclxuICAgICAgICAgICAgICAgLy8gZHJhZ3VsYXIgaXRlbXMyXHJcbiAgICAgICAgICAgICAgIHZhciBkcmFndWxhckNvbnRhaW5lckNsYXNzZXM9W107XHJcbiAgICAgICAgICAgICAgIHZhciBkcmFndWxhckNvbnRhaW5lck1vZGVscyA9IFtdO1xyXG4gICAgICAgICAgICAgIGZvcih2YXIgaT0wO2k8JHNjb3BlLml0ZW1zMi5sZW5ndGg7aSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ3VsYXJDb250YWluZXJNb2RlbHMucHVzaCgkc2NvcGUuaXRlbXMyW2ldLmNlbGxzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFndWxhckNvbnRhaW5lckNsYXNzZXMucHVzaCgnZXhhbXBsZVJvd3MnK2kpOyAgICAgICAgIFxyXG4gICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgJHNjb3BlLnNldHVwRHJhZ3VsYXI0KGRyYWd1bGFyQ29udGFpbmVyTW9kZWxzLGRyYWd1bGFyQ29udGFpbmVyQ2xhc3NlcywgZmFsc2UpO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgfSAvL2VuZF9mdW50aW9uXHJcbiAgICAgIFxyXG4gICAgICAgICRzY29wZS5zZXR1cERyYWd1bGFyNCA9IGZ1bmN0aW9uKGRyYWd1bGFyQ29udGFpbmVyTW9kZWxzLGRyYWd1bGFyQ29udGFpbmVyQ2xhc3NlcywgaXNDb3B5T24pe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250YWluZXJzPVtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0wO2k8ZHJhZ3VsYXJDb250YWluZXJDbGFzc2VzLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGRyYWd1bGFyQ29udGFpbmVyQ2xhc3Nlc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVycy5wdXNoKGNvbnRhaW5lclswXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWd1bGFyU2VydmljZShjb250YWluZXJzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXM6IHsgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2U6J3NoYXJlZCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2ZXJ0T25TcGlsbDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weTogaXNDb3B5T24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyc01vZGVsOiBkcmFndWxhckNvbnRhaW5lck1vZGVscywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVzOiBmdW5jdGlvbiAoZWwsIGNvbnRhaW5lciwgaGFuZGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGUuY2xhc3NMaXN0LmNvbnRhaW5zKFwiZWxlbWVudC1kcmFnLWhhbmRsZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICBcclxuICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUoJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmcsJ2RhdGFzZXQnKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihkYXRhKSB7XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0JHNjb3BlLmRhdGFzZXRMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAsZnVuY3Rpb24oZXJyb3IpeyAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJylcdH1cclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRNYXBwaW5nc0xpc3QoJHNjb3BlLnJlc291cmNlSWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdyaWRPcHRpb25zLmRhdGEgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgICRzY29wZS5pdGVtcyA9IFtcclxuICAgICAgICAgICAgeyBjZWxsczogW10sXHJcbiAgICAgICAgICAgICAgbmFtZTonRklMRV9JVEVNUycgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgIF07XHJcbiAgICAgICBcclxuICAgICAgIFxyXG4gICAgICAgXHJcbiAgICAgICAgJHNjb3BlLml0ZW1zMiA9IFtcclxuICAgICAgIF07XHJcbiAgICAgIFxyXG4gICAgICAgICRzY29wZS50cmFuc2Zvcm1JdGVtcyA9IFtcclxuICAgICAgICAgICAgeyBjZWxsczogW10sXHJcbiAgICAgICAgICAgICAgbmFtZTonVFJBTlNGT1JNUycgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgIF07XHJcbiAgICAgICBcclxuICAgICAgJHNjb3BlLmZpbGVGaWVsZHM9W107XHJcbiAgICBcclxuICAgICAgLy8gVSBOVUxUSSBzdGF2aSBwb2xqYSBvZCBmYWpsYSAoZmllbGRzKVxyXG4gICAgICBmb3IodmFyIGk9MDtpPCRzY29wZS5maWxlRmllbGRzLmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5pdGVtc1swXS5jZWxscy5wdXNoKHtuYW1lOiRzY29wZS5maWxlRmllbGRzW2ldfSk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgICAvL2RyYWd1bGFyIGl0ZW1zXHJcbiAgICAgICB2YXIgZHJhZ3VsYXJDb250YWluZXJDbGFzc2VzPVtdO1xyXG4gICAgICAgdmFyIGRyYWd1bGFyQ29udGFpbmVyTW9kZWxzID0gW107ICAgIFxyXG4gICAgICAgZm9yKHZhciBpPTA7aTwkc2NvcGUuaXRlbXMubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGRyYWd1bGFyQ29udGFpbmVyTW9kZWxzLnB1c2goJHNjb3BlLml0ZW1zW2ldLmNlbGxzKTtcclxuICAgICAgICAgICAgICAgICAgICBkcmFndWxhckNvbnRhaW5lckNsYXNzZXMucHVzaCgnZXhhbXBsZVJvdycraSk7ICAgICAgICAgXHJcbiAgICAgICB9XHJcbiAgICAgICAgJHNjb3BlLnNldHVwRHJhZ3VsYXI0KGRyYWd1bGFyQ29udGFpbmVyTW9kZWxzLGRyYWd1bGFyQ29udGFpbmVyQ2xhc3NlcywgZmFsc2UpO1xyXG4gICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgIFxyXG4gICAgICAkc2NvcGUuZ2V0UmVzb3VyY2VGb3JtID0gZnVuY3Rpb24gKCkgey8vaW4gbWFwcGluZ3NGb3JtQ3RybFxyXG4gICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRm9ybSgkc2NvcGUucmVzb3VyY2VJZCwnaScsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmRhdGEud2lkZ2V0cy5sZW5ndGg+MClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGFzaGJvYXJkLndpZGdldHM9ZGF0YS5kYXRhLndpZGdldHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbj0gZGF0YS5kYXRhLnJlc291cmNlRGVmaW5pdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZmlsbEl0ZW1zMigkc2NvcGUuZGFzaGJvYXJkLndpZGdldHMpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICBEcmFnIEFuZCBEcm9wIGRyYWd1bGFyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udGFpbmVyID0gJGVsZW1lbnQuY2hpbGRyZW4oKS5lcSgwKS5jaGlsZHJlbigpLmVxKDIpLmNoaWxkcmVuKCksIHdpZGdldHMgPSAkc2NvcGUuZGFzaGJvYXJkLndpZGdldHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNjb3BlLndpZGdldEhhbmRsZSA9IHNjb3BlLnNldEhhbmRsZSgnb3V0ZXInKTsgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ3VsYXJTZXJ2aWNlKGNvbnRhaW5lcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZVNwYWNlOiAncm93LWxheW91dCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jb3B5OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL21pcnJvcjogJ3Nob3ctYm9yZGVyJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmVydE9uU3BpbGw6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyc01vZGVsOiB3aWRnZXRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZGlyZWN0aW9uOid2ZXJ0aWNhbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlczogZnVuY3Rpb24gKGVsLCBjb250YWluZXIsIGhhbmRsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlLmNsYXNzTGlzdC5jb250YWlucyhcInJvdy1cIiskc2NvcGUuZ3JpZHN0ZXJUeXBlK1wiLWhhbmRsZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCkgeyRzY29wZS5mb3JtTG9hZGVkPXRydWU7fSwxMDAwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgIH07XHJcbiAgXHJcbiAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VJZCAhPSB1bmRlZmluZWQpXHJcbiAgICAgIHtcclxuICAgICAgICAkc2NvcGUuZ2V0UmVzb3VyY2VGb3JtKCk7XHJcbiAgICAgICAgLy9NSUdPUiAtIGtvZCBkb2xqZSBuZSBwb3B1bmphdmEgc3ZhIHBvbGphIHZlxIcgc2FtbyByZXNvdXJjZUlELHRyZWJhIGdhIHZhbGpkYSBuZWdkamUgZHJ1Z2RqZSB1YmFjaXRpICBcclxuICAgICAgfVxyXG4gICAgICBcclxuXHJcbiAgICAgICAgJHNjb3BlLnNhdmVNYXBwaW5ncyA9IGZ1bmN0aW9uIChtYXBJZCkge1xyXG4gICAgICAgICAgIGlmIChtYXBJZD09dW5kZWZpbmVkKSBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoJ01hcHBpbmcgbm90IHNlbGVjdGVkIScsJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgaWYgKG1hcElkPT0nTmV3JykgeyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UucHV0TWFwcGluZ3MoJHNjb3BlLm1hcHBpbmdOYW1lLCRzY29wZS5yZXNvdXJjZUlkLCRzY29wZS5pdGVtczIsJHNjb3BlLml0ZW1zKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLm1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNob3dEZXRhaWxzPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlZnJlc2hNYXBwaW5nc0xpc3QoKTtcclxuICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgIH0vL2lmIFxyXG4gICAgICAgICBlbHNlICBSZXNvdXJjZXNEYXRhU2VydmljZS5wdXRNYXBwaW5nc1dpdGhJZCgkc2NvcGUubWFwcGluZ05hbWUsJHNjb3BlLnJlc291cmNlSWQsIG1hcElkLCAkc2NvcGUuaXRlbXMyLCRzY29wZS5pdGVtcykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICRzY29wZS5zaG93RGV0YWlscz1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICRzY29wZS5yZWZyZXNoTWFwcGluZ3NMaXN0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBcclxuICAgICAgIC8vICAkc2NvcGUucmVmcmVzaE1hcHBpbmdzTGlzdCgpO1xyXG4gICAgICAgICBcclxuICAgICAgICB9IC8vc2F2ZU1hcHBpbmdzX0VORFxyXG4gICAgICAgIFxyXG4gIFxyXG4gICAgJHNjb3BlLnJlZnJlc2hNYXBwaW5nc0xpc3QgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgIC8vcmVmcmVzaCBNQVBJTkdMSVNUICAgICAgIFxyXG4gICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0TWFwcGluZ3NMaXN0KCRzY29wZS5yZXNvdXJjZUlkKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3JpZE9wdGlvbnMuZGF0YSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICB9KTsgXHJcbiAgICB9XHJcbiAgICAgIFxyXG4gICAgJHNjb3BlLmV4dHJhY3RGaWVsZHNGcm9tRmlsZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgIGNvbnNvbGUubG9nKCRzY29wZS5maWxlQ29udGVudCk7ICBcclxuICAgICAgICAgICAgJHNjb3BlLml0ZW1zWzBdLmNlbGxzLmxlbmd0aD0wO1xyXG5cclxuICAgICAgICAgICAgdmFyIGxpbmVzID0gJHNjb3BlLmZpbGVDb250ZW50LnNwbGl0KCdcXG4nKTtcclxuICAgICAgICAgICAgJHNjb3BlLmZpbGVGaWVsZHMgPSBsaW5lc1swXS5zcGxpdCgvWzssXSsvKSAvL0N1cnJlbnRseSBzcGxpdHRpbmcgb24gOyBhbmQgLFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgIGZvcih2YXIgaT0wO2k8ICRzY29wZS5maWxlRmllbGRzLmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgICAgICAgICAgIHZhciB0bXA9JHNjb3BlLmZpbGVGaWVsZHNbaV07XHJcbiAgICAgICAgICAgICAgICAgICBpZiAodG1wLmNoYXJDb2RlQXQodG1wLmxlbmd0aC0xKT09MTApICB0bXA9dG1wLnN1YnN0cmluZygwLHRtcC5sZW5ndGgtMSkgLy9tYWtuaSBDUiBpbGkgTEZcclxuICAgICAgICAgICAgICAgICAgIGlmICh0bXAuY2hhckNvZGVBdCh0bXAubGVuZ3RoLTEpPT0xMykgIHRtcD10bXAuc3Vic3RyaW5nKDAsdG1wLmxlbmd0aC0xKSAvL21ha25pIENSIGlsaSBMRlxyXG4gICAgICAgICAgICAgICAgICAgaWYgICgodG1wW3RtcC5sZW5ndGgtMV09PSdcIicpICYmICh0bXBbMF09PSdcIicpKSB0bXA9dG1wLnN1YnN0cmluZygxLHRtcC5sZW5ndGgtMSk7Ly9tYWtuaSBuYXZvZG5pa2UgYWtvIGloIGltYVxyXG4gICAgICAgICAgICAgICAgICAgJHNjb3BlLml0ZW1zWzBdLmNlbGxzLnB1c2goe25hbWU6IHRtcH0pOyAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygkc2NvcGUuZmlsZUZpZWxkcyk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgfSAgICBcclxuICAgICBcclxuICAgIFxyXG4gICAgJHNjb3BlLm1hcHBpbmcgPSBmdW5jdGlvbiAobWFwcGVkUmVzb3VyY2UpIHtcclxuICAgIFxyXG4gICAgICAgICAgIC8vJHNjb3BlLmFjdGl2aXR5LmFjdGl2aXR5TWVzc2FnZSA9IFByb2Nlc3NpbmdTZXJ2aWNlLnNldEFjdGl2aXR5TXNnKCdTeW5jaW5nIGRhdGFiYXNlIGZvciAnKyRzY29wZS5yZXNvdXJjZUlkKTtcclxuICAgICAgICAgY29uc29sZS5sb2cobWFwcGVkUmVzb3VyY2UpO1xyXG4gICAgICAgICBcclxuICAgICAgICAgLy9vdm8gZG9samUgamUgb2Jzb2xldGUgamVyIMSHZSBzZSBwdW5pdGkgbmEgcG/EjWV0a3UgcHJpa2F6YSBmb3JtZVxyXG4gICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRm9ybShtYXBwZWRSZXNvdXJjZSwnaScsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhc2hib2FyZDI9W107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmRhdGEud2lkZ2V0cy5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGFzaGJvYXJkMi53aWRnZXRzPWRhdGEuZGF0YS53aWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0bXA9W107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdyA9IDAgO3cgPCAgJHNjb3BlLmRhc2hib2FyZDIud2lkZ2V0cy5sZW5ndGg7ICB3KyspIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGwgPSAwOyAgbDwgJHNjb3BlLmRhc2hib2FyZDIud2lkZ2V0c1t3XS5sYXlvdXQubGVuZ3RoOyBsKyspIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGxsID0gMDsgIGxsPCAkc2NvcGUuZGFzaGJvYXJkMi53aWRnZXRzW3ddLmxheW91dFtsXS5sYXlvdXQubGVuZ3RoOyBsbCsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJHNjb3BlLmRhc2hib2FyZDIud2lkZ2V0c1t3XS5sYXlvdXRbbF0ubGF5b3V0W2xsXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcC5wdXNoKCRzY29wZS5kYXNoYm9hcmQyLndpZGdldHNbd10ubGF5b3V0W2xdLmxheW91dFtsbF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9rcmVpcmF0aSBpdGVtczIgaXogdG1wIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcih2YXIgaT0wO2k8dG1wLmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuaXRlbXMyLnB1c2goe2NlbGxzOltdLG5hbWU6dG1wW2ldLm5hbWUsaXRlbUlEOnRtcFtpXS5pdGVtSUQscHJlc2VudGF0aW9uSWQ6dG1wW2ldLnByZXNlbnRhdGlvbklkfSk7ICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9wb3p2YXRpIGRyYWd1bGFyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZHJhZ3VsYXJDb250YWluZXJDbGFzc2VzPVtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZHJhZ3VsYXJDb250YWluZXJNb2RlbHMgPSBbXTtcclxuICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKHZhciBpPTA7aTwkc2NvcGUuaXRlbXMyLmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFndWxhckNvbnRhaW5lck1vZGVscy5wdXNoKCRzY29wZS5pdGVtczJbaV0uY2VsbHMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWd1bGFyQ29udGFpbmVyQ2xhc3Nlcy5wdXNoKCdleGFtcGxlUm93cycraSk7ICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNldHVwRHJhZ3VsYXI0KGRyYWd1bGFyQ29udGFpbmVyTW9kZWxzLGRyYWd1bGFyQ29udGFpbmVyQ2xhc3NlcywgZmFsc2UpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTUlHT1IgLSBvdm8gaXNwb2QgbmlzYW0gc2lndXJhbiBkYSB0cmViYSEhISEgVklESkVUSSEhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbjI9IGRhdGEuZGF0YS5yZXNvdXJjZURlZmluaXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9ICRlbGVtZW50LmNoaWxkcmVuKCkuZXEoMCkuY2hpbGRyZW4oKS5lcSgyKS5jaGlsZHJlbigpLCB3aWRnZXRzID0gJHNjb3BlLmRhc2hib2FyZDIud2lkZ2V0cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2NvcGUud2lkZ2V0SGFuZGxlID0gc2NvcGUuc2V0SGFuZGxlKCdvdXRlcicpOyAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFndWxhclNlcnZpY2UoY29udGFpbmVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lU3BhY2U6ICdyb3ctbGF5b3V0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvcHk6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nlczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbWlycm9yOiAnc2hvdy1ib3JkZXInXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2ZXJ0T25TcGlsbDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJzTW9kZWw6IHdpZGdldHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kaXJlY3Rpb246J3ZlcnRpY2FsJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVzOiBmdW5jdGlvbiAoZWwsIGNvbnRhaW5lciwgaGFuZGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGUuY2xhc3NMaXN0LmNvbnRhaW5zKFwicm93LVwiKyRzY29wZS5ncmlkc3RlclR5cGUrXCItaGFuZGxlXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKSB7JHNjb3BlLmZvcm1Mb2FkZWQ9dHJ1ZTt9LDEwMDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLnB1dE1hcHBpbmdzKCRzY29wZS5tYXBwaW5nTmFtZSwgJHNjb3BlLnJlc291cmNlSWQsJHNjb3BlLml0ZW1zMiwkc2NvcGUuaXRlbXMpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIFxyXG4gICAgICAgfTsgLy8kc2NvcGUubWFwcGluZygpX0VORCAgICBcclxuXHJcbiAgICAgICAgXHJcbiAgICAvLyAgR2V0IHRyYW5zZm9ybSBwYWNrYWdlcyBmcm9tIHNlcnZlciBhbmQgcHJlcGFyZSBkcmFnJmRyb3AgKHRyYW5zZm9ybUl0ZW1zKVxyXG4gICAgICRzY29wZS5nZXRUcmFuc2Zvcm1QYWNrYWdlcyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgIHZhciBsYW5nID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcblxyXG4gICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0VHJhbnNmb3JtUGFja2FnZXMobGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5ncmlkT3B0aW9uczIuZGF0YSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50cmFuc2Zvcm1JdGVtc1swXS5jZWxscy5sZW5ndGg9MDtcclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZGVidWdnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcih2YXIgaT0wO2k8IGRhdGEuZGF0YS5sZW5ndGg7aSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcmFtczJKU09OPXt9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmRhdGFbaV0uUGFyYW1zKSB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMySlNPTj1KU09OLnBhcnNlKGRhdGEuZGF0YVtpXS5QYXJhbXMucmVwbGFjZSgvJy9nLFwiXFxcIlwiKSk7ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50cmFuc2Zvcm1JdGVtc1swXS5jZWxscy5wdXNoKHtuYW1lOiBkYXRhLmRhdGFbaV0uVHJhbnNmb3JtTmFtZSx0eXBlOidUUkFOU0ZPUk0nLCBwYXJhbXM6IHBhcmFtczJKU09OfSk7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRyYWd1bGFyQ29udGFpbmVyQ2xhc3Nlcz1bXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkcmFndWxhckNvbnRhaW5lck1vZGVscyA9IFtdOyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcih2YXIgaT0wO2k8JHNjb3BlLnRyYW5zZm9ybUl0ZW1zLmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWd1bGFyQ29udGFpbmVyTW9kZWxzLnB1c2goJHNjb3BlLnRyYW5zZm9ybUl0ZW1zW2ldLmNlbGxzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWd1bGFyQ29udGFpbmVyQ2xhc3Nlcy5wdXNoKCdleGFtcGxlUm93eicraSk7ICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZXR1cERyYWd1bGFyNChkcmFndWxhckNvbnRhaW5lck1vZGVscyxkcmFndWxhckNvbnRhaW5lckNsYXNzZXMsdHJ1ZSk7XHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07ICBcclxuICAgIFxyXG4gICAgIFxyXG4gICAgXHJcbiAgICAgICRzY29wZS5nZXRUcmFuc2Zvcm1QYWNrYWdlcygpOyAvL01JR09SIFRPRE8gLSB2aWRqZXRpIGRhIGxpIG92ZGplIGlsaSBuZWdkamUgZHJ1Z2Ugc3Rhdml0aVxyXG5cclxuICAgICAgICAgXHJcbn0vL3Jlc291cmNlTUFQUElOR1Njb250cm9sZXJcclxuIFxyXG4gXHJcblxyXG4vL2ltcG9ydCBrdFRvb2xib3ggZnJvbSAnLi4vZm9ybS9jb21wb25lbnRzL2t0LXRvb2xib3gudnVlJztcclxuIFxyXG5leHBvcnQgZnVuY3Rpb24gdG9vbGJveENvbXBvbmVudCAoKSB7XHJcbiAgICAgICAgXHJcbiAgICBsZXQgdnVlVG9vbGJveCA9ICBuZXcgVnVlKHtcclxuICAgICAgICBlbDogJyN0b29sYm94JyxcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgIGNvbXBvbmVudHM6IHtcclxuICAgICAgICAgICAgICAgLy8gJ2t0LXRvb2xib3gnOiBrdFRvb2xib3gsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgIFxyXG4gICAgICAgIGNyZWF0ZWQ6IGZ1bmN0aW9uKCl7XHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgICAgIFxyXG4gICAgICAgIH1cclxuICB9KTtcclxuICAgICAgICBcclxufVxyXG5cclxuXHQgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgcmVzb3VyY2VGb3JtQ29tcG9uZW50IC0gdnVlanMgdmVyc2lvblxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuXHJcbmltcG9ydCBHcmlkc3RlclNlcnZpY2UgZnJvbSAnLi4vLi4vLi4vMDAwMF9jb21tb24vMDAwNF9tb2R1bGVzL2dyaWRzdGVyTW9kdWxlLmpzJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByZXNvdXJjZUZvcm1Db21wb25lbnQgKCRyb290U2NvcGUsIEthdGFseW9TdGF0ZU1hbmFnZXIsUmVzb3VyY2VzRGF0YVNlcnZpY2UsTWVzc2FnaW5nU2VydmljZSwkc3RhdGVQYXJhbXMpXHJcbntcclxuICAgICAgICB2YXIgcmVzb3VyY2VJZD0kc3RhdGVQYXJhbXMuaWQ7XHJcbiAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IHZ1ZVJlc291cmNlRm9ybSA9ICBuZXcgVnVlKHtcclxuICAgICAgICBlbDogJyNyZXNvdXJjZUZvcm0nLFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIHJlc291cmNlSWQ6IHJlc291cmNlSWQsXHJcbiAgICAgICAgICByZXNvdXJjZToge30sXHJcbiAgICAgICAgICByZXNvdXJjZUxvYWRlZCA6ZmFsc2UsXHJcbiAgICAgICAgICBsYW5nOiBsYW5nLFxyXG4gICAgICAgICAgZm9ybUxvYWRlZDogZmFsc2UsXHJcbiAgICAgICAgICBkYXNoYm9hcmQ6IHt3aWRnZXRzOntsYXlvdXQ6W119fSxcclxuICAgICAgICAgIHJlc291cmNlRGVmaW5pdGlvbjoge2Zvcm1QYXJhbXM6e2Zvcm1WaWV3VHlwZTpudWxsfX0sXHJcbiAgICAgICAgICBjdXJyZW50U3RhdGVJbmRleDowLFxyXG4gICAgICAgICAgZGF0YXNldERlcGxveTp7fSxcclxuICAgICAgICB9LFxyXG4gICAgICBtZXRob2RzOiB7XHJcbiAgICAgICAgICAgICAgICBnZXRSZXNvdXJjZUZvcm0gOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2bSA9IHRoaXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUxvYWRlZD1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZUZvcm0odGhpcy5yZXNvdXJjZUlkLCdpJyx0aGlzLmxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWYgKGRhdGEuZGF0YS53aWRnZXRzLnRvcF9yb3dzLmxlbmd0aD4wKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmRhdGEud2lkZ2V0cy5sZW5ndGg+MClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICRzY29wZS5kYXNoYm9hcmQud2lkZ2V0cz17bGF5b3V0OmRhdGEuZGF0YS53aWRnZXRzLnRvcF9yb3dzfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bS5kYXNoYm9hcmQud2lkZ2V0cz17bGF5b3V0OmRhdGEuZGF0YS53aWRnZXRzfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSB2bS5kYXNoYm9hcmQud2lkZ2V0cz17bGF5b3V0IDogR3JpZHN0ZXJTZXJ2aWNlLmdldEVtcHR5RGF0YXNldEZvcm0oKX07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kYXRhc2V0Rm9ybVN0YXRlLnN1YmplY3Quc2V0U3RhdGU9JHNjb3BlLmRhc2hib2FyZC53aWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2V0IHN0YXRlIGhlcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bS5yZXNvdXJjZURlZmluaXRpb249IGRhdGEuZGF0YS5yZXNvdXJjZURlZmluaXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zID0ge2Zvcm1WaWV3VHlwZToxLGZvcm1Mb2NrZWQ6dHJ1ZX07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9Hcmlkc3Rlck1vZHVsZS5zZXRGb3JtVmlld1R5cGUoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm0uZm9ybUxvYWRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB1bmRvOmZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZtID0gdGhpcztcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgcmVkbzpmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgIGxldCB2bSA9IHRoaXM7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzaG93RGF0YXNldERlcGxveTpmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgIGxldCB2bSA9IHRoaXM7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBkZXBsb3lUb0RiOmZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZtID0gdGhpcztcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIFNob3dGb3JtVmlldzpmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgIGxldCB2bSA9IHRoaXM7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzYXZlUmVzb3VyY2VGb3JtOmZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZtID0gdGhpcztcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICBcclxuICAgIH0sXHJcbiAgICBjb21wdXRlZDoge1xyXG4gICAgICAgIFxyXG4gICAgICAgIGdldFRvcEZvclN0aWNreTpmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgcmV0dXJuIEdyaWRzdGVyU2VydmljZS5nZXRUb3BGb3JTdGlja3koMCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIGNvbXBvbmVudHM6IHtcclxuICAgICAgICAgICAgICAgLy8gJ2t0LXJlc291cmNlLWRlZmluaXRpb24nOiBrdF9yZCxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICBjcmVhdGVkOiBmdW5jdGlvbigpe1xyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgICAgdmFyIHZtID0gdGhpcztcclxuICAgICAgICBpZiAodGhpcy5yZXNvdXJjZUlkICE9IHVuZGVmaW5lZClcclxuICAgICAgICB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZBbGwodGhpcy5yZXNvdXJjZUlkKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdm0ucmVzb3VyY2UgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICB2bS5yZXNvdXJjZUxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5nZXRSZXNvdXJjZUZvcm0oKTtcclxuICAgICAgICBcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy9pbXBvcnQge0F1dGhlbnRpY2F0aW9uQ2xhc3MsTG9naW59IGZyb20gJy4vYXV0aE1vZHVsZSc7XHJcbiAgICAgIFxyXG4gICAgfVxyXG4gICAgXHJcbiAgfSk7XHJcbiAgICAgIFxyXG59XHJcblxyXG5cclxuXHQgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgXHJcbiAgICAvLyAgIHNlYXJjaGluZyBkYXNoYm9hcmQgZm9yIFwicmVsYXRlZHJtZFwiIHBhcmVudHMgKGZpbGVzLCByZXNvdXJjZXMpXHJcbiAgICBcclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbiAgIGV4cG9ydCBmdW5jdGlvbiBnZXRQYXJlbnRzIChvYmosIG91dHB1dExpc3QpICAvL2ZpbmQgcmVjdXJzaXZlbHlcclxuICAge1xyXG4gICAgICAgIGxldCBvID0ge307XHJcbiAgICAgICAgdmFyIHBhcmVudFdpZGdldCA9IHt9O1xyXG4gICAgICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcclxuICAgICAgICAgICAgaWYgKCAodHlwZW9mKG9ialtrZXldKSA9PT0gJ29iamVjdCcpICYmIG9ialtrZXldICAmJiBrZXkgIT0gJ05hbWVGaWVsZCcgJiYga2V5ICE9ICdQYXJhbWV0ZXJzJyAmJiBrZXkgIT0gJyBHcmlkU3RhdGUnKSAgeyAvL0RvIE5PVCBwYXJzZSBpbnRvICdOYW1lRmllbGQnIGFuZCBcIlBhcmFtZXRlcnMnIFxyXG4gICAgICAgICAgICAgICAgICAgIGdldFBhcmVudHMob2JqW2tleV0sIG91dHB1dExpc3QpXHJcbiAgICAgICAgICAgIH0gICBlbHNlIHsgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICBpZiAoIFsnUmVsYXRlZFJtZCcsICdEaXJlY3RpdmVOYW1lJywgJ0xhYmVsJywgJ0ZpZWxkTmFtZScgLCAnUmVzb3VyY2VNb2RlbERlZmluaXRpb25JZCcgLCdFbGVtZW50VHlwZScsJ0l0ZW1JZCcsICdSZXNvdXJjZURlZklkJyAsICdQcmVzZW50YXRpb25JZCddLmluY2x1ZGVzKGtleSkgICkgeyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ba2V5XT0gb2JqW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFdpZGdldD1vYmpcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSA7IFxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhvKS5sZW5ndGggPiAwIFxyXG4gICAgICAgICAgICAmJiBvWydFbGVtZW50VHlwZSddPT0ncmVzb3VyY2UnKSAge1xyXG4gICAgICAgICAgICAgICAgb1snd2lkZ2V0J109cGFyZW50V2lkZ2V0XHJcbiAgICAgICAgICAgICAgICBvdXRwdXRMaXN0LnB1c2gocGFyZW50V2lkZ2V0KSBcclxuICAgICAgICB9XHJcbiAgICB9OyBcclxuICAgIFxyXG5cdCAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICBnZXRGaWVsZE5hbWVzRnJvbU9iamVjdFxyXG4gICAgLy9cclxuICAgIC8vIGZpbmQgRmllbGROYW1lcyBpbiBnaXZlbiBEYXNoYm9hcmQgb2JqZWN0IHJlY3Vyc2l2ZWx5IFxyXG4gICAgIC8vIGZpZWxkc0xpc3QgIGlzIHJldHVybiB2YXJpYWJsZSBcclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbiAgIGV4cG9ydCBmdW5jdGlvbiBnZXRGaWVsZE5hbWVzRnJvbU9iamVjdCAob2JqLCBmaWVsZHNMaXN0KSAgIC8vIGZpbmQgRmllbGROYW1lcyBpbiBnaXZlbiBEYXNoYm9hcmQgb2JqZWN0IHJlY3Vyc2l2ZWx5ICBcclxuICAge1xyXG4gICAgICAgIGxldCBvID0ge307XHJcbiAgICAgICAgdmFyIHBhcmVudFdpZGdldCA9IHt9O1xyXG4gICAgICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcclxuICAgICAgICAgICAgaWYgKCAodHlwZW9mKG9ialtrZXldKSA9PT0gJ29iamVjdCcpICYmIG9ialtrZXldICBcclxuICAgICAgICAgICAgICAgICAgICAmJiBrZXkgIT0gJ05hbWVGaWVsZCcpICAgLy9EbyBOT1QgcGFyc2UgaW50byAnTmFtZUZpZWxkJyAgKHdlIG5lZWQgaXQgYXMgaXQgaXMpXHJcbiAgICAgICAgICAgIHsgXHJcbiAgICAgICAgICAgICAgIGdldEZpZWxkTmFtZXNGcm9tT2JqZWN0KG9ialtrZXldLCBmaWVsZHNMaXN0KVxyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICBlbHNlIHsgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBbJ0RpcmVjdGl2ZU5hbWUnLCAnTGFiZWwnLCAnRmllbGROYW1lJyAsICdSZXNvdXJjZU1vZGVsRGVmaW5pdGlvbklkJyAsJ0VsZW1lbnRUeXBlJywnSXRlbUlkJywgJ1Jlc291cmNlRGVmSWQnICwgJ1ByZXNlbnRhdGlvbklkJ10uaW5jbHVkZXMoa2V5KSAgKSB7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgb1trZXldPSBvYmpba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50V2lkZ2V0PW9ialxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBrZXkgPT0gJ05hbWVGaWVsZCcgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmpba2V5XSkgKSBvW2tleV09IG9ialtrZXldWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIG9ba2V5XT0gb2JqW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgfSAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSkgOyBcclxuICAgICAgICBcclxuICAgICAgICBpZiAoT2JqZWN0LmtleXMobykubGVuZ3RoID4gMCAmJiAhKFsna3RHcmlkUm93Jywna3RHcmlkQ29sdW1uJ10uaW5jbHVkZXMob1snRGlyZWN0aXZlTmFtZSddICkgKSkgXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgb1snd2lkZ2V0J109cGFyZW50V2lkZ2V0XHJcbiAgICAgICAgICAgICAgICBmaWVsZHNMaXN0LnB1c2gobykgXHJcbiAgICAgICAgfVxyXG4gICAgfTsgXHJcblxyXG5cclxuXHQgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgcmVzb3VyY2VGb3JtQ3RybCAtIGFuZ3VsYXJKcyB2ZXJzaW9uXHJcblx0Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVzb3VyY2VGb3JtQ3RybCAoJHNjb3BlLCAkcm9vdFNjb3BlLCBBdXRoZW50aWNhdGlvblNlcnZpY2UsS2F0YWx5b1N0YXRlTWFuYWdlcixSZXNvdXJjZXNEYXRhU2VydmljZSxDb2Rlc1NlcnZpY2UsUHJvY2Vzc2luZ1NlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxXaWRnZXRSZWdpc3RlclNlcnZpY2UsJHN0YXRlUGFyYW1zLCR0aW1lb3V0LEdyaWRzdGVyU2VydmljZSxNZW51U2VydmljZSwkZWxlbWVudCxkcmFndWxhU2VydmljZSwkc3RhdGUpXHJcbnsgICAgICBcclxuICAgIFxyXG4gICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlOyAgXHJcbiAgICAkc2NvcGUua3NtID0gS2F0YWx5b1N0YXRlTWFuYWdlcjtcclxuICAgICRzY29wZS5sb2NhbFZhcnMgPSB7ICAgZ3NydmM6JHNjb3BlLmdzcnZjLCBQcm9wZXJ0aWVzU2l6ZTonc3RhbmRhcmQnfTtcclxuICAgICRzY29wZS5mb3JtVmFycyA9IHsgIH07XHJcbiAgICAkc2NvcGUucmVzb3VyY2UgPSB7fVxyXG4gICAgJHNjb3BlLnBhcmVudFJlc291cmNlcz1bXVxyXG4gICAgJHNjb3BlLkNUUkw9J3Jlc291cmNlRm9ybUN0cmwnO1xyXG4gICAgJHNjb3BlLmZvcm1Mb2FkZWQgPSBmYWxzZTtcclxuICAgICRzY29wZS5ncmlkc3RlclR5cGUgPVwiZGF0YXNldFwiO1xyXG4gICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAkc2NvcGUucmVzb3VyY2VJZD0kc3RhdGVQYXJhbXMuaWQ7XHJcbiAgICAkc2NvcGUuU2F2ZWRCdXROb3REZXBsb3llZCA9IGZhbHNlXHJcbiAgICAkc2NvcGUuaXNDb2xsYXBzZWRWZXJIaXN0b3J5ID0gdHJ1ZVxyXG4gICAgJHNjb3BlLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZXMgPSBbXVxyXG4gICAgJHNjb3BlLnJldHVyblN0YXRlPSRzdGF0ZVBhcmFtcy5yZXR1cm5TdGF0ZVxyXG4gICAgJHNjb3BlLmRhdGFzZXREZXBsb3k9W11cclxuICAgICRzY29wZS5kYXRhc2V0RGVwbG95Q29scz1bXHJcblx0XHR7bGFiZWw6J0lEJyxuYW1lOidpZCcsbGVuOjEsdHlwZTonaWQnfSxcclxuXHRcdHtsYWJlbDonRmllbGQgbmFtZScsbmFtZTonbGFiZWwnLGxlbjozfSxcclxuXHRcdHtsYWJlbDonRmllbGQgdHlwZScsbmFtZTonZGJ0eXBlJyxsZW46Mn0sXHJcblx0XHR7bGFiZWw6J1RhYmxlIGNvbHVtbicsbmFtZTonZmllbGQnLGxlbjo0fSxcclxuXHRcdHtsYWJlbDonTWF4IGxlbicsbmFtZTonbWF4TGVuZ3RoJyxsZW46MX0sXHJcblx0XHR7bGFiZWw6J1JlcXVpcmVkJyxuYW1lOidyZXF1aXJlZCcsdHlwZTonYm9vbCcsbGVuOjJ9LFxyXG5cdFx0e2xhYmVsOidEZXBsb3llZCcsbmFtZTonZGVwbG95ZWQnLHR5cGU6J2Jvb2wnLGxlbjoyfSxcclxuXHRcdHtsYWJlbDonU3RhdHVzJyxuYW1lOidzdGF0dXMnLGxlbjoyfSxcclxuXHRcdHtsYWJlbDonQWN0aW9uJyxuYW1lOidkZXBsb3lBY3Rpb24nLGxlbjoxLHR5cGU6J21hcHBpbmcnfSxcclxuXHRcdHtsYWJlbDonVmVyc2lvbicsbmFtZTondmVyc2lvbicsbGVuOjJ9LFxyXG5cdFx0e2xhYmVsOidEZXBsb3llZCB2ZXJzaW9uJyxuYW1lOidkZXBsb3llZFZlcnNpb24nLGxlbjoyfVxyXG4gICAgXVxyXG5cclxuICAgICRzY29wZS5kZXBsb3lBY3Rpb25NYXBwaW5ncz17J0EnOidBZGQnLCdDJzonQ2hhbmdlJywnRCc6J0RlbGV0ZScsJ04nOidObyBjaGFuZ2UnfVxyXG5cclxuICAgICRzY29wZS5nc3J2Yy5yZXNldEJvZHlCZ0NvbG9yKClcclxuICAgICRzY29wZS5tZW51X3NlcnZpY2UgPSBNZW51U2VydmljZVxyXG4gICAgJHNjb3BlLm1lbnVfc2VydmljZS5jbGVhclNpZGVNZW51KClcclxuXHJcbiAgICBpZiAoJHNjb3BlLnJldHVyblN0YXRlPT09dW5kZWZpbmVkIHx8ICRzY29wZS5yZXR1cm5TdGF0ZT09PScnKVxyXG4gICAge1xyXG5cclxuICAgICAgICRzY29wZS5yZXR1cm5TdGF0ZT17c3RhdGU6e25hbWU6J2FwcC5uYXZiYXIucmVzb3VyY2VzLmxpc3QnfSxMYWJlbDonUmV0dXJuIHRvIHJlc291cmNlIGxpc3QnLHBhcmFtczp7fX0gXHJcbiAgICB9XHJcbiAgICAkc2NvcGUucmVzb3VyY2VEZWYgPSB7UmVzb3VyY2VEZWZJZF9pZDogJHNjb3BlLnJlc291cmNlSWQsZm9ybV9kZWZpbml0aW9uIDogdHJ1ZX1cclxuICAgICAgXHJcbiAgICBsZXQgbWFzc1VwZGF0ZVN0YXRlPSAkc2NvcGUua3NtLmFkZFN1YmplY3QoJ21hc3NVcGRhdGVTdGF0ZScsbnVsbCk7XHJcbiAgICBsZXQgbWFzc1VwZGF0ZVN0YXRlTmFtZSA9IG1hc3NVcGRhdGVTdGF0ZS5zdWJqZWN0Lm5hbWU7XHJcbiAgICAkc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24obWFzc1VwZGF0ZVN0YXRlTmFtZSxcIm1hc3NVcGRhdGVDaGFuZ2VkXCIsIHtBY3RpdmU6ZmFsc2UsSXRlbTpudWxsfSk7IFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgJHNjb3BlLmdldF9wdWJsaXNoZWRfcmVzb3VyY2VfZm9ybXM9ZnVuY3Rpb24oKXsgICAgICAgICAgICAgICBcclxuICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5HZXRQdWJsaXNoZWRSZXNvdXJjZXMoJHNjb3BlLnJlc291cmNlSWQpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHsgICAgICAgXHJcbiAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZXMgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAkc2NvcGUuZ2V0X3B1Ymxpc2hlZF9yZXNvdXJjZV9mb3JtcygpO1xyXG4gICAgJHRpbWVvdXQoZnVuY3Rpb24oKSB7ICAgJHNjb3BlLmRlZmluaXRpb25UeXBlID0gJ2Zvcm0nOyAgICAgICAgIH0pO1xyXG4gICAgXHJcbiAgICAvKlxyXG4gICAgICRzY29wZS4kd2F0Y2goJ2Rhc2hib2FyZC53aWRnZXRzLmxheW91dCcsZnVuY3Rpb24obmV3VmFsdWUsb2xkVmFsdWUpeyBcclxuICAgICAgICBjb25zb2xlLmxvZyhcInByb21qZW5hIVwiKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKG5ld1ZhbHVlKVxyXG4gICAgIH0sdHJ1ZSlcclxuICAgICAgICAgXHJcbiAgICAqL1xyXG5cclxuICAgICRzY29wZS5sb2NhbFZhcnMuQ2hhbmdlUHJvcGVydGllc1NpemUgPSBmdW5jdGlvbigpXHJcbiAgICB7XHJcbiAgICAgICBsZXQgcHJvcEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwicHJvcGVydGllc0NvbnRhaW5lclwiKTtcclxuICAgICAgICBcclxuICAgICAgICRzY29wZS5wcm9wZXJ0aWVzVG9wID0gXCJcIjtcclxuICAgICAgIFxyXG4gICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5Qcm9wZXJ0aWVzU2l6ZT09J3N0YW5kYXJkJylcclxuICAgICAge1xyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMuUHJvcGVydGllc1NpemUgPSAnbGFyZ2UnO1xyXG4gICAgICAgJHNjb3BlLnByb3BlcnRpZXNUb3AgPSAkc2NvcGUuZ3NydmMuY2FsY1RvcEZvckV4dGVuZGVkUHJvcGVydGllcyhwcm9wRWxlbWVudFswXSk7IFxyXG4gICAgICBcclxuICAgICAgfVxyXG4gICAgICBlbHNlICRzY29wZS5sb2NhbFZhcnMuUHJvcGVydGllc1NpemU9J3N0YW5kYXJkJztcclxuICAgIH1cclxuICAgXHJcbiAgIFxyXG4gICBcclxuICAgICRzY29wZS5QcmVwYXJlUHVibGlzaDJQcm9kID0gZnVuY3Rpb24oKVxyXG4gICAge1xyXG4gICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLnByZXBhcmVQdWJsaXNoMlByb2QoJHNjb3BlLnJlc291cmNlSWQsJHNjb3BlLnJlc291cmNlLlJlc291cmNlQ29kZSwkc2NvcGUucmVzb3VyY2UuVmVyc2lvbikudGhlbihcclxuXHRcdFx0ZnVuY3Rpb24oZGF0YSkgeyAgICAgICAgICAgICAgIFxyXG5cdFx0XHRcdCRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZSA9IGRhdGEuZGF0YTtcclxuXHRcdFx0XHQvKlxyXG5cdFx0XHRcdGlmICgkc2NvcGUucHVibGlzaGVkUmVzb3VyY2U/LnJtZCkgeyBcclxuXHRcdFx0XHRcdCRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZS5ybWQuZm9yRWFjaCggaXRlbSA9PiB7XHRcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0fSovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblx0XHRcdH0sZnVuY3Rpb24oZXJyb3Ipe1x0XHRcdCAgXHJcblx0XHRcdFx0TWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG5cdFx0XHR9KTtcclxuICAgIH1cclxuXHJcbiAgICAkc2NvcGUuUHVibGlzaDJQcm9kID0gZnVuY3Rpb24oKVxyXG4gICAge1xyXG4gICAgICAgICRzY29wZS5wdWJsaXNoaW5nRGF0YXNldD10cnVlXHJcbiAgICAgICAgbGV0IHJlc291cmNlcyA9IFt7dWlkOiRzY29wZS5yZXNvdXJjZUlkLGl0ZW1TdWJUeXBlOiRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUNvZGUsdmVyc2lvbjokc2NvcGUucmVzb3VyY2UuVmVyc2lvbiB9XVxyXG4gICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLnB1Ymxpc2gyUHJvZChyZXNvdXJjZXMpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEubXNnLCdzdWNjZXNzJyk7IFxyXG4gICAgICAgICAgICAkc2NvcGUucHVibGlzaGVkUmVzb3VyY2UuUHVibGlzaGVkID0gZGF0YS5kYXRhLlB1Ymxpc2hlZFxyXG4gICAgICAgICAgICAkc2NvcGUucHVibGlzaGVkUmVzb3VyY2UuRGVwbG95ZWQgPSBkYXRhLmRhdGEuRGVwbG95ZWRcclxuICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlLlZlcnNpb24gPSBkYXRhLmRhdGEuVmVyc2lvblxyXG4gICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuVmVyc2lvbj0kc2NvcGUucHVibGlzaGVkUmVzb3VyY2UuVmVyc2lvblxyXG4gICAgICAgICAgICAkc2NvcGUucHVibGlzaGVkUmVzb3VyY2UuUHVibGlzaGVkVmVyc2lvbiA9ICBkYXRhPy5kYXRhPy5QdWJsaXNoZWRWZXJzaW9uXHJcbiAgICAgICAgICAgICRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZS5EYXRlVGltZSA9IGRhdGEuZGF0YS5EYXRlVGltZVxyXG4gICAgICAgICAgICAkc2NvcGUucHVibGlzaGVkUmVzb3VyY2UuUHVibGlzaGVkQnkgPSBkYXRhLmRhdGEuUHVibGlzaGVkQnlcclxuICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlLkNoYW5nZWREYXRlVGltZSA9IGRhdGEuZGF0YS5DaGFuZ2VkRGF0ZVRpbWVcclxuICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlLkNoYW5nZWRCeSA9IGRhdGEuZGF0YS5DaGFuZ2VkQnlcclxuICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlLmNvdW50ID0gMCBcclxuICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlLnJtZCA9IGRhdGEuZGF0YS5ybWRcclxuICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hpbmdEYXRhc2V0PWZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAkc2NvcGUucHVibGlzaGluZ0RhdGFzZXQ9ZmFsc2UgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIFxyXG5cclxuICAgIGxldCBkYXRhc2V0Zm9ybV9jaGFuZ2VkID0gZnVuY3Rpb24oZGF0YSlcclxuICAgIHtcclxuICAgICAgICBkYXRhc2V0Rm9ybVN0YXRlLnN1YmplY3Quc2V0U3RhdGVDaGFuZ2VzID0gZGF0YTtcclxuICAgICAgICBcclxuICAgICAgICBjdXJyZW50SW5kZXggPSBkYXRhc2V0Rm9ybVN0YXRlLnN1YmplY3QuZ2V0Q3VycmVudFN0YXRlSW5kZXg7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleDwwKSB1bmRvPWZhbHNlO1xyXG4gICAgICAgIGVsc2UgdW5kbyA9IHRydWU7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleD09ZGF0YXNldEZvcm1TdGF0ZS5zdWJqZWN0LnN0YXRlQ2hhbmdlcy5sZW5ndGgtMSkgcmVkbz1mYWxzZTtcclxuICAgICAgICBlbHNlIHJlZG89dHJ1ZTtcclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUuY3VycmVudFN0YXRlSW5kZXggPXsndW5kbyc6dW5kbyAsJ3JlZG8nOnJlZG99OyBcclxuICAgICAgICBcclxuICAgICAgICBkYXRhc2V0Rm9ybVN0YXRlLnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKCk7XHJcbiAgICAgICAgXHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICBsZXQgZGF0YXNldGZvcm1fdW5kbyA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICB7XHJcbiAgICAgICAgICAgICAgICB1bmRvSW5kZXggPSBkYXRhc2V0Rm9ybVN0YXRlLnN1YmplY3QuZ2V0Q3VycmVudFN0YXRlSW5kZXg7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHVuZG9JbmRleC0tO1xyXG4gICAgICAgICAgICAgICAgaWYgKHVuZG9JbmRleDwwKSB1bmRvPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgZWxzZSB1bmRvID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKHVuZG9JbmRleD09ZGF0YXNldEZvcm1TdGF0ZS5zdWJqZWN0LnN0YXRlQ2hhbmdlcy5sZW5ndGgtMSkgcmVkbz1mYWxzZTtcclxuICAgICAgICAgICAgICAgIGVsc2UgcmVkbz10cnVlO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmN1cnJlbnRTdGF0ZUluZGV4ID17J3VuZG8nOnVuZG8gLCdyZWRvJzpyZWRvfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgZGF0YXNldEZvcm1TdGF0ZS5zdWJqZWN0Lm5vdGlmeU9ic2VydmVycyhcInVuZG9EYXRhc2V0Rm9ybUNoYW5nZVwiKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgfTtcclxuICAgIFxyXG4gICAgICBsZXQgZGF0YXNldGZvcm1fdW5kb19kb25lID0gZnVuY3Rpb24oZGF0YSlcclxuICAgIHtcclxuIFxyXG4gICAgICAgICAgICAgICAgY3VycmVudEluZGV4ID0gZGF0YXNldEZvcm1TdGF0ZS5zdWJqZWN0LmdldEN1cnJlbnRTdGF0ZUluZGV4O1xyXG4gICAgICAgICAgICAgICAgY3VycmVudEluZGV4LS07XHJcbiAgICAgICAgICAgICAgICBkYXRhc2V0Rm9ybVN0YXRlLnN1YmplY3Quc2V0Q3VycmVudFN0YXRlSW5kZXggPSBjdXJyZW50SW5kZXg7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgfTtcclxuICAgIFxyXG4gICAgdmFyIGRhdGFzZXRmb3JtX3JlZG8gPSBmdW5jdGlvbihkYXRhKVxyXG4gICAge1xyXG5cclxuICAgICAgICAgICAgICAgIGN1cnJlbnRJbmRleCA9IGRhdGFzZXRGb3JtU3RhdGUuc3ViamVjdC5nZXRDdXJyZW50U3RhdGVJbmRleDtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRJbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgZGF0YXNldEZvcm1TdGF0ZS5zdWJqZWN0LnNldEN1cnJlbnRTdGF0ZUluZGV4ID0gY3VycmVudEluZGV4O1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudEluZGV4PDApIHVuZG89ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBlbHNlIHVuZG8gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudEluZGV4PT1kYXRhc2V0Rm9ybVN0YXRlLnN1YmplY3Quc3RhdGVDaGFuZ2VzLmxlbmd0aC0xKSByZWRvPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgZWxzZSByZWRvPXRydWU7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5jdXJyZW50U3RhdGVJbmRleCA9eyd1bmRvJzp1bmRvICwncmVkbyc6cmVkb307XHJcbiAgICAgICAgICAgICAgICBkYXRhc2V0Rm9ybVN0YXRlLnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKFwicmVkb0RhdGFzZXRGb3JtQ2hhbmdlXCIpO1xyXG4gICAgfTtcclxuICAgICAgXHJcblxyXG4gICAgXHJcbiAgICAkc2NvcGUudW5kb1JlZG9DaGFuZ2VzID0gZnVuY3Rpb24oYWN0aW9uVHlwZSlcclxuICAgIHtcclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24oZGF0YXNldEZvcm1TdGF0ZU5hbWUsYWN0aW9uVHlwZStcIkRhdGFzZXRGb3JtQ2hhbmdlXCIpO1xyXG4gICAgICAgICRzY29wZS5zaG93SGlkZVByb3BlcnRpZXMoZmFsc2UpO1xyXG4gICAgICAgIFxyXG4gICAgfTtcclxuICAgIFxyXG4gICAgICBcclxuICAgICRzY29wZS5zaG93SGlkZVByb3BlcnRpZXMgPSBmdW5jdGlvbih2YWx1ZSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0RmllbGRQcm9wZXJ0aWVzT3BlbmVkKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLnNob3dGaWVsZFByb3BlcnRpZXM9JHNjb3BlLmdzcnZjLmdldEZpZWxkUHJvcGVydGllc09wZW5lZCgpO1xyXG4gICAgICAgICAgICAgICAgIC8vIGlmICh2YWx1ZSkgJHNjb3BlLmdzcnZjLnNldFByb3BlcnRpZXNQb3NpdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcblxyXG4gICBcclxuICAgICAgICRzY29wZS5TaG93Rm9ybVZpZXcgPSBmdW5jdGlvbih2aWV3SWQsbG9ja2VkKVxyXG4gICAgICB7XHJcbiAgICAgICBcclxuICAgICAgICAkc2NvcGUucmVzb3VyY2UuZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9dmlld0lkO1xyXG4gICAgICAgICRzY29wZS5yZXNvdXJjZS5mb3JtUGFyYW1zLmZvcm1Mb2NrZWQgPSBsb2NrZWQ7XHJcbiAgICAgICAgJHNjb3BlLmdzcnZjLnNldEZvcm1WaWV3VHlwZSgkc2NvcGUucmVzb3VyY2UuZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUpO1xyXG4gICAgICAgIFxyXG4gICAgICB9O1xyXG4gICAgICBcclxuICAgICAgIENvZGVzU2VydmljZS5nZXRDb2Rlc0J5TmFtZSgncmVzb3VyY2V0eXBlJyxsYW5nKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAvL2RlYnVnZ2VyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZVR5cGVMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIFxyXG4gICAgICAgIENvZGVzU2VydmljZS5nZXRDb2Rlc0J5TmFtZSgnY29kZXN0YXR1cycsbGFuZykudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZVN0YXR1c0xpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnN0YXR1c2VzRG93bmxvYWRlZD0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICBcclxuICBcclxuICBcclxuICAgICRzY29wZS5nZXRSZXNvdXJjZURlZmluaXRpb24gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZBbGwoJHNjb3BlLnJlc291cmNlSWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZURlZkRvd25sb2FkZWQ9dHJ1ZVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZ2V0IHJlc291cmNlIHB1Ymxpc2hlZCBpbmZvIChmcm9tIFBST0QgaW5zdGFuY2UpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuUHJlcGFyZVB1Ymxpc2gyUHJvZCgpXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0V2lkZ2V0VG9vbGJveCgkc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VDb2RlKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5zZXRXaWRnZXRUb29sYm94SXRlbXMoZGF0YS5kYXRhLCRzY29wZS5ncmlkc3RlclR5cGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ2V0UmVzb3VyY2VGb3JtKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgfSk7XHJcbiAgICB9OyAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vJHNjb3BlLmdldFJlc291cmNlRGVmaW5pdGlvbigpO1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS4kb24oJ0N0cmxQQlByZXNzZWQnLGZ1bmN0aW9uKGV2ZW50LGRhdGEpe1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGxldCBrZXk9ZGF0YTtcclxuICAgICAgICAgICAgICAgIGlmIChrZXk9PSdiJyB8fCBrZXk9PSdCJylcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlIT0xKSAkc2NvcGUuU2hvd0Zvcm1WaWV3KDEpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChrZXk9PSdwJyB8fCBrZXk9PSdQJylcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlIT0yKSAkc2NvcGUuU2hvd0Zvcm1WaWV3KDIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICB9KTsgICAgIFxyXG4gICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmdldElubmVySHRtbCA9IGZ1bmN0aW9uKClcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgICAgIC8vJHNjb3BlLmlubmVySHRtbCAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXZba3QtZ3JpZF0nKS5pbm5lckhUTUw7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuRm9ybURlZiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdltrdC1ncmlkXScpLmlubmVySFRNTDtcclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2W2t0LWdyaWRdJykuaW5uZXJIVE1MKTtcclxuICAgICAgICAgICAgICAgIC8vJHNjb3BlLmlubmVySHRtbCA9IGVsZW07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUuc2V0SW1tdXRhYmxlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgaWYgKCEkc2NvcGUuc2F2ZVN1Y2Nlc3MpICRzY29wZS5yZXNvdXJjZS5Jc0Jsb2NrY2hhaW4gPSAhJHNjb3BlLnJlc291cmNlLklzQmxvY2tjaGFpbjtcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5EYXRhc2V0RGF0YSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IHBhcmFtcz17aWQ6JHNjb3BlLnJlc291cmNlSWR9O1xyXG4gICAgICAgICAgICAgICAgJHN0YXRlLmdvKFwiYXBwLm5hdmJhci5yZXNvdXJjZXMuZGF0YVwiLHBhcmFtcylcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICAgJHNjb3BlLmV4aXN0aW5nUmVsYXRpb25zaGlwcyA9IFtdXHJcbiAgICAgICAgICRzY29wZS5leGlzdGluZ1JlbGF0aW9uc2hpcHNDb3B5PVtdXHJcblx0XHQgXHJcblx0XHQgXHJcblx0XHQgXHJcbiAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqIEdFVCBDSElMRC9QQVJFTlQgUkVMQVRJT05TSElQUyAqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gICBcclxuICAgICAgICAkc2NvcGUuZ2V0RXhpc3RpbmdSZXNvdXJjZXMgPSBmdW5jdGlvbihnZXRQYXJlbnQ9ZmFsc2UpICB7XHJcbiBcclxuICAgICAgICAgICAgJHNjb3BlLmV4aXN0aW5nUmVsYXRpb25zaGlwcy5sZW5ndGg9MFxyXG4gICAgICAgICAgICAkc2NvcGUuUmVsYXRlZExvYWRlZD1mYWxzZVxyXG4gICAgICAgICAgICAvL2RlYnVnZ2VyICAgXHJcbiAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldEV4aXN0aW5nUmVzb3VyY2VSZWxhdGlvbnNoaXBzKCRzY29wZS5yZXNvdXJjZUlkLCBnZXRQYXJlbnQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZXhpc3RpbmdSZWxhdGlvbnNoaXBzID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmV4aXN0aW5nUmVsYXRpb25zaGlwc0NvcHkgPSBhbmd1bGFyLmNvcHkoJHNjb3BlLmV4aXN0aW5nUmVsYXRpb25zaGlwcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5SZWxhdGVkTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgXHJcbiAgICAgICB9OyAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICRzY29wZS5nZXRFeGlzdGluZ1Jlc291cmNlcygpXHJcblxyXG4gICAgICAgICRzY29wZS5jaGVja0Ryb3BwZWRDaGlsZHJlbiA9IGZ1bmN0aW9uKGNoaWxkKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCBpdGVtID0gJHNjb3BlLmV4aXN0aW5nUmVsYXRpb25zaGlwcy5maW5kKGVsZW1lbnQgPT4gZWxlbWVudC5pZCA9PSBjaGlsZC5pZClcclxuXHJcbiAgICAgICAgICAgIGlmIChpdGVtID09IHVuZGVmaW5lZCkgcmV0dXJuIHRydWVcclxuICAgICAgICAgICAgZWxzZSByZXR1cm4gZmFsc2VcclxuICAgICAgICB9O1xyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgICRzY29wZS5zYXZlUmVzb3VyY2VEZWYgPSBmdW5jdGlvbiAoaXNWYWxpZClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICAgaWYgKGlzVmFsaWQpICB7XHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuU2F2ZVJlc291cmNlRGVmMiAoJHNjb3BlLnJlc291cmNlKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihkYXRhKSB7ICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzPT09MjAwIHx8IGRhdGEuc3RhdHVzPT09MjAxICkgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShcIlJlc291cmNlIHNhdmVkIHN1Y2Nlc3NmdWx5XCIsJ3N1Y2Nlc3MnKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7ICBcclxuICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShcIlBsZWFzZSBlbnRlciByZXF1aXJlZCBkYXRhXCIsJ3dhcm5pbmcnKTsgXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH07ICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgJHNjb3BlLlNldERlZmluaXRpb25UeXBlID0gZnVuY3Rpb24odmFsdWUpIC8vVE9ET1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgJHNjb3BlLmRlZmluaXRpb25UeXBlPXZhbHVlO1xyXG4gICAgICAgICAgICBpZiAodmFsdWU9PSdkYXRhc291cmNlJykgJHNjb3BlLkVkaXREYXRhc2V0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5jbGVhclJlc291cmNlUGFyYW1ldGVycyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICBcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzID09dW5kZWZpbmVkIHx8ICAkc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycz09bnVsbClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycyA9IHtleHREYXRhU291cmNlUGFyYW1zOntmb3JtRmllbGRzTGlzdDpbXX0gfTsgICAgICBcclxuICAgICAgICAgICAgICAgIH0gZWxzZVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzLmV4dERhdGFTb3VyY2VQYXJhbXMgPT0gdW5kZWZpbmVkIHx8IHZhbHVlID09IGZhbHNlKSAgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnMuZXh0RGF0YVNvdXJjZVBhcmFtcz17IGZvcm1GaWVsZHNMaXN0OltdIH07ICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlICAkc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycy5leHREYXRhU291cmNlUGFyYW1zLmZvcm1GaWVsZHNMaXN0Lmxlbmd0aD0wOyAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAkc2NvcGUuRWRpdERhdGFzZXQgPSBmdW5jdGlvbih2YWx1ZSkgLy9UT0RPXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdmFyIGxvY2FsRmllbGRzTGlzdD1bXSBcclxuICAgICAgICAgICAgICAgICBpZiAoICRzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzPy5leHREYXRhU291cmNlUGFyYW1zPy5mb3JtRmllbGRzTGlzdCkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldEZpZWxkTmFtZXNGcm9tT2JqZWN0KCRzY29wZS5kYXNoYm9hcmQsICAgJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnMuZXh0RGF0YVNvdXJjZVBhcmFtcy5mb3JtRmllbGRzTGlzdCk7ICAgICAgICAgICAgXHJcbiAgICAgICB9O1xyXG4gICAgICAgXHJcbiAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAkc2NvcGUuJHdhdGNoKCdnc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKScsZnVuY3Rpb24obmV3VmFsdWUsb2xkVmFsdWUpe1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGlmIChuZXdWYWx1ZSE9b2xkVmFsdWUpXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRGaWVsZD0kc2NvcGUuZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzKCk7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAkc2NvcGUuc2hvd0ZpZWxkUHJvcGVydGllcyA9ICRzY29wZS5nc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZWZyZXNoUHJvcGVydGllcyAmJiAkc2NvcGUuc2hvd0ZpZWxkUHJvcGVydGllcylcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRGaWVsZD0kc2NvcGUuZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzKCk7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucmVmcmVzaFByb3BlcnRpZXM9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgIFxyXG4gICAgICAgJHNjb3BlLiR3YXRjaCgnZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzKCknLGZ1bmN0aW9uKG5ld1ZhbHVlLG9sZFZhbHVlKXtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBpZiAobmV3VmFsdWUhPW9sZFZhbHVlKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkRmllbGQ9JHNjb3BlLmdzcnZjLmdldEZpZWxkUHJvcGVydGllcygpO1xyXG4gICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLlByb3BlcnRpZXNTaXplID0nc3RhbmRhcmQnO1xyXG4gICAgICAgICAgICAgICAkc2NvcGUuc2hvd0ZpZWxkUHJvcGVydGllcyA9ICRzY29wZS5nc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIGlmICgkc2NvcGUucmVmcmVzaFByb3BlcnRpZXMgJiYgJHNjb3BlLnNob3dGaWVsZFByb3BlcnRpZXMpXHJcbiAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZEZpZWxkPSRzY29wZS5nc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXMoKTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5yZWZyZXNoUHJvcGVydGllcz1mYWxzZTtcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgICAgIFxyXG4gICAgICAkc2NvcGUuZ2V0UmVzb3VyY2VGb3JtID0gZnVuY3Rpb24gKCkgLy9pbiByZXNvdXJjZUZvcm1DdHJsXHJcbiAgICAgIHtcclxuICAgICAgICAgICRzY29wZS5mb3JtTG9hZGVkPWZhbHNlO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZUZvcm0oJHNjb3BlLnJlc291cmNlSWQsJ2knLGxhbmcpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICBmdW5jdGlvbihkYXRhKSAgICB7XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZT0gZGF0YS5kYXRhLnJlc291cmNlRGVmaW5pdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YT8uZGF0YT8ud2lkZ2V0cyAmJiBkYXRhLmRhdGEud2lkZ2V0cy5sZW5ndGg+MCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzPXtsYXlvdXQ6ZGF0YS5kYXRhLndpZGdldHN9O1xyXG4gICAgICAgICAgICAgICAgICAgICB9IGVsc2UgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGFzaGJvYXJkLndpZGdldHM9e2xheW91dCA6ICRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkLkRlZmF1bHRGb3JtfTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAvL2dldCByZXNvdXJjZSBwdWJsaXNoZWQgaW5mbyAoZnJvbSBQUk9EIGluc3RhbmNlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLlByZXBhcmVQdWJsaXNoMlByb2QoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jaGVjayBpZiBoYXMgc29tZXRoaW5nIGZvciBkZXBsb3ltZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2hvd1B1Ymxpc2goZmFsc2UpXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0V2lkZ2V0VG9vbGJveCgkc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VDb2RlKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5zZXRXaWRnZXRUb29sYm94SXRlbXMoZGF0YS5kYXRhLCRzY29wZS5ncmlkc3RlclR5cGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGdldFBhcmVudHMoICAkc2NvcGUuZGFzaGJvYXJkLndpZGdldHMgLCAgJHNjb3BlLnBhcmVudFJlc291cmNlcylcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBkYXRhc2V0Rm9ybVN0YXRlLnN1YmplY3Quc2V0U3RhdGU9JHNjb3BlLmRhc2hib2FyZC53aWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZS5mb3JtUGFyYW1zID0ge2Zvcm1WaWV3VHlwZToxLGZvcm1Mb2NrZWQ6dHJ1ZX07ICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuYWRtaW5IZWFkZXJMYWJlbD1cIlNlbGVjdCBcIiskc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VDb2RlK1wiIGFkbWluaXN0cmF0b3JzXCI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0Rm9ybVZpZXdUeXBlKCRzY29wZS5yZXNvdXJjZS5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KCBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vaWYgKCEkc2NvcGUucmVzb3VyY2UuUHVibGlzaGVkICYmICRzY29wZS5yZXNvdXJjZS5WZXJzaW9uPT0kc2NvcGUucmVzb3VyY2UuTmV3VmVyc2lvbikgICAgJHNjb3BlLnNob3dQdWJsaXNoKGZhbHNlKVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICBcclxuICAgICAgfTtcclxuICBcclxuICAgICRzY29wZS5nZXRSZXNvdXJjZUZvcm0oKTtcclxuXHJcbiAgJHNjb3BlLmdldERlcGxveUFjdGlvbiA9IGZ1bmN0aW9uKGFjdGlvbilcclxuICBcclxuICAgIHtcclxuICAgIHZhciBkZXBsb3lBY3Rpb25NYXBwaW5ncz17J0EnOidBZGQnLCdDJzonQ2hhbmdlJywnRCc6J0RlbGV0ZScsJ04nOidObyBjaGFuZ2UnfTtcclxuICAgIHJldHVybiBkZXBsb3lBY3Rpb25NYXBwaW5nc1thY3Rpb25dO1xyXG4gICAgfTtcclxuXHJcbiAgICAkc2NvcGUubmV3VmVyc2lvbiA9IGZ1bmN0aW9uKClcclxuICBcclxuICAgIHtcclxuICAgICAgICAkc2NvcGUuY3JlYXRpbmdOZXdWZXJzaW9uPXRydWVcclxuXHJcbiAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuU2V0TmV3UmVzb3VyY2VWZXJzaW9uKCRzY29wZS5yZXNvdXJjZUlkKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXR1cz09MjAwKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuTmV3VmVyc2lvbiA9IGRhdGEuZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZS5QdWJsaXNoZWQ9ZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZSBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5kYXRhLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5jcmVhdGluZ05ld1ZlcnNpb249ZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuaGFzQ2hhbmdlcz1mYWxzZVxyXG4gICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jcmVhdGluZ05ld1ZlcnNpb249ZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgfTtcclxuXHJcblxyXG4gICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBTQVZFIFJFU09VUkNFIEZPUk0gREVGSU5JVElPTlxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gICRzY29wZS5zYXZlUmVzb3VyY2VGb3JtID0gZnVuY3Rpb24gKHZhbCkge1xyXG4gICAgICRzY29wZS5zYXZpbmdGb3JtID0gdHJ1ZTsgLy9kaXNhYmxlIHNhdmUgYnV0dG9uXHJcbiAgICAgJHNjb3BlLmZvcm1Mb2FkZWQ9ZmFsc2U7IFxyXG4gICAgICRzY29wZS5zaG93SGlkZVByb3BlcnRpZXMoZmFsc2UpO1xyXG4gICAgIC8vIEZpcnN0IHNhdmUgdGhlIGZvcm1cclxuXHJcbiAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLnNhdmVSZXNvdXJjZUZvcm0oJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCwkc2NvcGUucmVzb3VyY2VJZCwnaScsJHNjb3BlLmxvY2FsVmFycy5uZXdEZXNjcmlwdGlvbilcclxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmRhdGEuZm9ybURhdGEubGVuZ3RoPjApICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzPXtsYXlvdXQ6ZGF0YS5kYXRhLmZvcm1EYXRhfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuRm9ybVZlcnNpb24gPSBkYXRhLmRhdGEuZm9ybV92ZXJzaW9uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZS5WZXJzaW9uID0gZGF0YS5kYXRhLnZlcnNpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmhhc0NoYW5nZXM9ZGF0YS5kYXRhLmhhc19jaGFuZ2VzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGVmaW5pdGlvblR5cGUgPSB2YWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLm1zZyxkYXRhLm1zZ1R5cGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNhdmluZ0Zvcm0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybUxvYWRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNob3dQdWJsaXNoKClcclxuICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zYXZpbmdGb3JtID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybUxvYWRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICB9O1xyXG5cclxuICAgICAkc2NvcGUuc2hvd01vZGFsID0gZnVuY3Rpb24gKHBfdHlwZSkge1xyXG4gICAgICAgLy9QT1NUIHB1Ymxpc2gtcmVzb3VyY2UgLCByZXNvdXJjZV9pZCwgdmVyc2lvbiBpIGRlc2NyaXB0aW9uXHJcbiAgICAgICAgLy8kc2NvcGUuc2F2ZU1vZGFsPXRydWU7XHJcbiAgICAgICAgJCgnI2RhdGFzZXRQdWJsaXNoJykubW9kYWwoJ3Nob3cnKTsgXHJcbiAgICAgICAgJHNjb3BlLm1vZGFsQWN0aW9uPXBfdHlwZVxyXG4gICAgICAgICRzY29wZS5uZXdQdWJsaXNoVmVyc2lvbiA9ICRzY29wZS5yZXNvdXJjZS5WZXJzaW9uXHJcbiAgICB9XHJcbiAgIFxyXG4gICBcclxuICAgXHJcbiAgICRzY29wZS5zaG93UHVibGlzaCA9IGZ1bmN0aW9uICh2YWwpIHtcclxuICAgICAgIC8vUE9TVCBwdWJsaXNoLXJlc291cmNlICwgcmVzb3VyY2VfaWQsIHZlcnNpb24gaSBkZXNjcmlwdGlvblxyXG4gICAgICAgJHNjb3BlLm1vZGFsQWN0aW9uPSdwdWJsaXNoJ1xyXG4gICAgICAgJHNjb3BlLmRhdGFzZXREZXBsb3kubGVuZ3RoPTBcclxuICAgICAgIGlmICh2YWw9PXVuZGVmaW5lZCkgdmFsID0gdHJ1ZVxyXG4gICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZU1vZGVsRm9yRGVwbG95bWVudCgkc2NvcGUucmVzb3VyY2VJZCwkc2NvcGUucmVzb3VyY2UuVmVyc2lvbixsYW5nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGF0YXNldERlcGxveSA9IGRhdGEuZGF0YTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHNjb3BlLmRhdGFzZXREZXBsb3kuZm9yRWFjaCggKGUpID0+IGUuZGJ0eXBlID0gZS5kYnR5cGUucmVwbGFjZSgnZGVmaW5pdGlvbicsJycpKVx0XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyIC8vZ2V0UmVzb3VyY2VNb2RlbEZvckRlcGxveW1lbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5kYXRhc2V0RGVwbG95Lmxlbmd0aD09MCAmJiAkc2NvcGUuaGFzQ2hhbmdlcykgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHNjb3BlLnJlc291cmNlLlB1Ymxpc2hlZCA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJHNjb3BlLmRhdGFzZXREZXBsb3kubGVuZ3RoPjApIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCRzY29wZS5yZXNvdXJjZS5QdWJsaXNoZWQgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubmV3UHVibGlzaFZlcnNpb24gPSAkc2NvcGUucmVzb3VyY2UuTmV3VmVyc2lvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsIHx8ICRzY29wZS5kYXRhc2V0RGVwbG95Lmxlbmd0aCkgJCgnI2RhdGFzZXRQdWJsaXNoJykubW9kYWwoJ3Nob3cnKTsgICAgIFxyXG5cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXM9OTA0KSBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoJ05vdGhpbmcgdG8gZGVwbG95JywnaW5mbycpOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgIH1cclxuXHJcbiAgXHJcbiAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgLy8gICAgICAgICAgIFB1Ymxpc2ggcmVzb3VyY2VcclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgIFxyXG4gICRzY29wZS5zYXZlX3Jlc291cmNlID0gZnVuY3Rpb24gKGZvcm1WYWxpZCkge1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBwdWJsaXNoX3R5cGU9J2Zvcm0nXHJcbiAgICAgICAgaWYgKGZvcm1WYWxpZCkge1xyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLm1vZGFsQWN0aW9uPT0nc2F2ZScpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5zYXZlUmVzb3VyY2VGb3JtKHB1Ymxpc2hfdHlwZSlcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICRzY29wZS5wdWJsaXNoaW5nRm9ybSA9IHRydWU7XHJcbiAgICAgICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuUHVibGlzaFJlc291cmNlKCRzY29wZS5yZXNvdXJjZUlkLCRzY29wZS5yZXNvdXJjZS5WZXJzaW9uLCRzY29wZS5sb2NhbFZhcnMubmV3RGVzY3JpcHRpb24scHVibGlzaF90eXBlKVxyXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJCgnI2RhdGFzZXRQdWJsaXNoJykubW9kYWwoJ2hpZGUnKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5wdWJsaXNoaW5nRm9ybSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuUHVibGlzaGVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ2V0X3B1Ymxpc2hlZF9yZXNvdXJjZV9mb3JtcygpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5QcmVwYXJlUHVibGlzaDJQcm9kKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhdGFzZXREZXBsb3kgPSBbXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjZGF0YXNldFB1Ymxpc2gnKS5tb2RhbCgnaGlkZScpOyAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9UT0RPIC0gU0tJTlVUSSBQT05PVk5PIFBVQkxJU0hFRCBSRVNPVVJDRVNcclxuICAgICAgICAgICAgICAgICAgICB9ICxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucHVibGlzaGluZ0Zvcm0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgIH1cclxuICAgICAgICAgICAgJHNjb3BlLmFjdGl2aXR5LmFjdGl2aXR5TWVzc2FnZSA9IFByb2Nlc3NpbmdTZXJ2aWNlLnNldEFjdGl2aXR5TXNnKFwiXCIpO1xyXG4gICAgICAgIH1cclxuICB9O1xyXG4gIFxyXG4gICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgU0FWRSBSRVNPVVJDRSBGT1JNIERFRklOSVRJT05cclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICAgIC8qXHJcbiAgJHNjb3BlLnNhdmVSZXNvdXJjZUZvcm0gPSBmdW5jdGlvbiAoaXNWYWxpZCkge1xyXG4gICAgIFxyXG4gICAgICAgICAkc2NvcGUuYWN0aXZpdHkuYWN0aXZpdHlNZXNzYWdlID0gUHJvY2Vzc2luZ1NlcnZpY2Uuc2V0QWN0aXZpdHlNc2coJ1NhdmluZyByZXNvdXJjZSBmb3JtIGZvciAnKyRzY29wZS5yZXNvdXJjZUlkKTtcclxuICAgICAgICAgJHNjb3BlLnNhdmluZ0Zvcm0gPSB0cnVlOyAvL2Rpc2FibGUgc2F2ZSBidXR0b25cclxuICAgICAgICAgXHJcbiAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLnNhdmVSZXNvdXJjZUZvcm0oJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCwkc2NvcGUucmVzb3VyY2VJZCwnaScpXHJcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlciAgICAgIC8vUmVzb3VyY2VzRGF0YVNlcnZpY2Uuc2F2ZVJlc291cmNlRm9ybShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhLmZvcm1EYXRhLmxlbmd0aD4wKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5kYXNoYm9hcmQud2lkZ2V0cz17bGF5b3V0OmRhdGEuZGF0YS5mb3JtRGF0YX07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZS5WZXJzaW9uID0gZGF0YS52ZXJzaW9uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuRm9ybVZlcnNpb24gPSBkYXRhLmZvcm1fdmVyc2lvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlLlB1Ymxpc2hlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLm1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zYXZpbmdGb3JtID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNob3dIaWRlUHJvcGVydGllcyhmYWxzZSk7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNhdmluZ0Zvcm0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgJHNjb3BlLmFjdGl2aXR5LmFjdGl2aXR5TWVzc2FnZSA9IFByb2Nlc3NpbmdTZXJ2aWNlLnNldEFjdGl2aXR5TXNnKFwiXCIpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgKi9cclxuICAgICAgICBcclxuICAgICAgJHNjb3BlLmNsb3NlRGF0YXNldERlcGxveSA9IGZ1bmN0aW9uIChpc3ZhbGlkKSB7XHJcbiAgICAgICAgICRzY29wZS5TYXZlZEJ1dE5vdERlcGxveWVkID0gdHJ1ZVxyXG4gICAgICAgICAkKCcjZGF0YXNldERlcGxveScpLm1vZGFsKCdoaWRlJyk7IFxyXG4gICAgICAgIC8vJHNjb3BlLnNhdmVSZXNvdXJjZUZvcm0oaXN2YWxpZCk7XHJcbiAgICAgICAgICAgICAgXHJcbiAgIFxyXG4gICB9XHJcbiAgIFxyXG4gICAgICAgJHNjb3BlLmNvbXBpbGVkYj1mdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgJCgnI2RhdGFzZXREZXBsb3knKS5tb2RhbCgnc2hvdycpOyBcclxuXHJcbiAgICAgICB9IFxyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblx0Ly8gICAgICAgICAgIFNZTkMgREFUQUJBU0UgLSBDUkVBVEUgT1IgQUxURVIgVEFCTEVcclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICAkc2NvcGUuc3luY2RiID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIC8vZGVidWdnZXIgLy9zeW5jZGJcclxuICAgICAgICAkc2NvcGUuYWN0aXZpdHkuYWN0aXZpdHlNZXNzYWdlID0gUHJvY2Vzc2luZ1NlcnZpY2Uuc2V0QWN0aXZpdHlNc2coJ1N5bmNpbmcgZGF0YWJhc2UgZm9yICcrJHNjb3BlLnJlc291cmNlSWQpO1xyXG4gICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2UuRm9ybVZlcnNpb249PT11bmRlZmluZWQgfHwgJHNjb3BlLnJlc291cmNlLkZvcm1WZXJzaW9uPT09bnVsbCkgJHNjb3BlLnJlc291cmNlLkZvcm1WZXJzaW9uPTFcclxuICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5zeW5jZGIoJHNjb3BlLnJlc291cmNlSWQsJHNjb3BlLnJlc291cmNlLkZvcm1WZXJzaW9uKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuU2F2ZWRCdXROb3REZXBsb3llZCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLm1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjZGF0YXNldERlcGxveScpLm1vZGFsKCdoaWRlJyk7IFxyXG4gICAgICAgICAgICAgICAgfSAsZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAkc2NvcGUuYWN0aXZpdHkuYWN0aXZpdHlNZXNzYWdlID0gUHJvY2Vzc2luZ1NlcnZpY2Uuc2V0QWN0aXZpdHlNc2coXCJcIik7XHJcbiAgfTtcclxuXHJcblxyXG4gICAkc2NvcGUucmV0dXJuVG9QcmV2aW91c1BhZ2UgPSBmdW5jdGlvbigpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbGV0IHBhZ2UgPSAkc2NvcGUucmV0dXJuU3RhdGUuc3RhdGUubmFtZVxyXG4gICAgICAgICAgICAgICAgLy9sZXQgbmF2YmFyID0gTWVudVNlcnZpY2UuZ2V0UGFnZU5hdmJhckJ5TmFtZShwYWdlKTtcclxuICAgICAgICAgICAgICAgICRzdGF0ZS5nbyhwYWdlLCRzY29wZS5yZXR1cm5TdGF0ZS5wYXJhbXMpO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gIFxyXG4gICAvLyAqKioqKioqKioqKiAgIGt0Rm9ybVJlc291cmNlIElOSVQgKioqKioqKioqKioqKioqKioqXHJcbiAgIFxyXG5cclxuICAgICAgJHNjb3BlLmV4dERhdGFTb3VyY2VUeXBlTGlzdCA9IFt7aWQ6MSxuYW1lOiAnRGF0YWJhc2UgVGFibGUnfSx7aWQ6MiwgbmFtZTogJ0FQSSd9LCB7aWQ6MywgbmFtZTogJ1NtYXJ0Q29udHJhY3QnfV1cclxuICAgICAgJHNjb3BlLmNsZWFyUmVzb3VyY2VQYXJhbWV0ZXJzKClcclxuICAgICAgXHJcbiAgICAgIGlmICgkc3RhdGVQYXJhbXMuc3ViVHlwZVNlbGVjdGVkID09ICdzdGFuZGFyZCcpIHtcclxuICAgICAgICAgIC8vc29tZXRoaW5nXHJcbiAgICAgIH1cclxuICAgICBcclxuICAgICAgJHNjb3BlLmRhdGFGb3JHcmlkUmVhZHkgPSBmYWxzZTtcclxuICAgICAgJHNjb3BlLmVkaXREYXRhc2V0PWZhbHNlO1xyXG4gICAgICAkc2NvcGUuZGFzaGJvYXJkPXt9O1xyXG4gICAgIFxyXG4gICAgICAkc2NvcGUuZ3NydmMuZGVzdHJveURyYWd1bGEoJ2JhZy1kYXRhc2V0Jyk7XHJcbiAgICAgICRzY29wZS5nc3J2Yy5kZXN0cm95RHJhZ3VsYSgnYmFnLWNvbHVtbnMnKTtcclxuICAgICAgJHNjb3BlLmdzcnZjLmRlc3Ryb3lEcmFndWxhKCdiYWctcm93cy0nKyRzY29wZS5ncmlkc3RlclR5cGUpO1xyXG4gICAgIC8vV2lkZ2V0UmVnaXN0ZXJTZXJ2aWNlLlJlZ2lzdGVyRGF0YXNldFdpZGdldHMoKTtcclxuICAgICAgICBcclxuICAgICAgJHNjb3BlLnNob3dGaWVsZFByb3BlcnRpZXM9ZmFsc2U7XHJcbiAgICAgIFxyXG4gICAgICAvL3JlZ2lzdGVyIHRvIHN0YXRlIG1hbmFnZXJcclxuICAgICAgXHJcbiAgICBcclxuICAgIGxldCBkYXRhc2V0Rm9ybVN0YXRlPSAkc2NvcGUua3NtLmFkZFN1YmplY3QoJ2RhdGFzZXRGb3JtU3RhdGUnKyRzY29wZS5yZXNvdXJjZUlkLCRzY29wZS5kYXNoYm9hcmQud2lkZ2V0cyk7XHJcbiAgICBsZXQgZGF0YXNldEZvcm1TdGF0ZU5hbWUgPSBkYXRhc2V0Rm9ybVN0YXRlLnN1YmplY3QubmFtZTtcclxuICAgIC8vbGV0IGRhdGFzZXRGb3JtQ2hhbmdlc0xvZyA9ICRzY29wZS5rc20uYWRkU3ViamVjdCgnZGF0YXNldEZvcm1DaGFuZ2VzTG9nJyskc2NvcGUucmVzb3VyY2VJZCxcIlwiKTtcclxuICAgIGxldCB1bmRvLHJlZG8sY3VycmVudEluZGV4LHVuZG9JbmRleDsgIFxyXG4gICAgXHJcbiAgICBjdXJyZW50SW5kZXggPWRhdGFzZXRGb3JtU3RhdGUuc3ViamVjdC5nZXRDdXJyZW50U3RhdGVJbmRleDtcclxuICAgICAgICBcclxuICAgIGlmIChjdXJyZW50SW5kZXg8MCkgdW5kbz1mYWxzZTtcclxuICAgIGVsc2UgdW5kbyA9IHRydWU7XHJcbiAgICBpZiAoY3VycmVudEluZGV4PT1kYXRhc2V0Rm9ybVN0YXRlLnN1YmplY3Quc3RhdGVDaGFuZ2VzLmxlbmd0aC0xKSByZWRvPWZhbHNlO1xyXG4gICAgZWxzZSByZWRvPXRydWU7XHJcbiAgICBcclxuICAgIFxyXG4gICAgbGV0IGFjdGlvbl9kYXRhc2Vmb3JtX2NoYW5nZWQgPSAkc2NvcGUua3NtLmFkZEFjdGlvbihkYXRhc2V0Rm9ybVN0YXRlTmFtZSxcImRhdGFzZXRGb3JtQ2hhbmdlZFwiLGRhdGFzZXRmb3JtX2NoYW5nZWQpO1xyXG4gICAgbGV0IGFjdGlvbl91bmRvID0gJHNjb3BlLmtzbS5hZGRBY3Rpb24oZGF0YXNldEZvcm1TdGF0ZU5hbWUsXCJ1bmRvRGF0YXNldEZvcm1DaGFuZ2VcIixkYXRhc2V0Zm9ybV91bmRvKTsgICBcclxuICAgIGxldCBhY3Rpb25fcmVkbyA9ICRzY29wZS5rc20uYWRkQWN0aW9uKGRhdGFzZXRGb3JtU3RhdGVOYW1lLFwicmVkb0RhdGFzZXRGb3JtQ2hhbmdlXCIsZGF0YXNldGZvcm1fcmVkbyk7XHJcbiAgICBsZXQgYWN0aW9uX3VuZG9Eb25lID0gJHNjb3BlLmtzbS5hZGRBY3Rpb24oZGF0YXNldEZvcm1TdGF0ZU5hbWUsXCJ1bmRvRGF0YXNldEZvcm1DaGFuZ2VEb25lXCIsZGF0YXNldGZvcm1fdW5kb19kb25lKTtcclxuICAgIC8vbGV0IGFjdGlvbl9yZWRvRG9uZSA9ICRzY29wZS5rc20uYWRkQWN0aW9uKGRhdGFzZXRGb3JtU3RhdGVOYW1lLFwicmVkb0RhdGFzZXRGb3JtQ2hhbmdlRG9uZVwiLGRhdGFzZXRmb3JtX3JlZG9fZG9uZSk7XHJcbiAgICBcclxuICAgIFxyXG4gICAgIFxyXG4gICAgICBcclxuICAgICAgICAkc2NvcGUuc2hvd0dyaWQ9ZmFsc2U7XHJcbiAgICAgICAgJHNjb3BlLmdyaWRPcHRpb25zID0ge1xyXG4gICAgICAgICAgICBlbmFibGVHcmlkTWVudTogdHJ1ZSxcclxuICAgICAgICAgICAgc2hvd0dyaWRGb290ZXI6IHRydWUsXHJcbiAgICAgICAgICAgIC8vc2hvd0NvbHVtbkZvb3RlcjogdHJ1ZSxcclxuICAgICAgICAgICAgZW5hYmxlUm93U2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgbXVsdGlTZWxlY3Q6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZW5hYmxlSG9yaXpvbnRhbFNjcm9sbGJhciA6IDAsIFxyXG4gICAgICAgICAgICAgICAgZW5hYmxlVmVydGljYWxTY3JvbGxiYXIgOiAyLFxyXG4gICAgICAgICAgICAgICAgLy9lbmFibGVGaWx0ZXJpbmc6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBlbmFibGVSb3dIZWFkZXJTZWxlY3Rpb246IHRydWUsXHJcbiAgICAgICAgICAgICAgICBlbmFibGVDb2x1bW5SZXNpemluZzogdHJ1ZSxcclxuICAgICAgICAgICAvLyB1c2VFeHRlcm5hbFBhZ2luYXRpb246IHRydWUsXHJcbiAgICAgICAgICAgIHBhZ2luYXRpb25QYWdlU2l6ZXM6IFs1LDEwLCAyNSwgNTAsMTAwLDIwMCw1MDBdLFxyXG4gICAgICAgICAgICBlbmFibGVQYWdpbmF0aW9uQ29udHJvbHM6IHRydWUsXHJcbiAgICB9XHJcbiAgICBcclxuICAgICAkc2NvcGUuZ3JpZE9wdGlvbnMuY29sdW1uRGVmcyA9IFtcclxuICAgICAgICAgICAgeyBuYW1lOidpZCcsIHdpZHRoOjUwIH0sXHJcbiAgICAgICAgICAgIHsgbmFtZTonbmFtZScgfSxcclxuICAgICAgICBdO1xyXG4gICAgICAgIFxyXG4gICAgICRzY29wZS5jdXJyZW50U3RhdGVJbmRleCA9eyd1bmRvJzp1bmRvICwncmVkbyc6cmVkb307XHJcbiAgICBcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1EZWZpbml0aW9uQ3RybCAoJHNjb3BlLCAkcm9vdFNjb3BlLCBBdXRoZW50aWNhdGlvblNlcnZpY2UsS2F0YWx5b1N0YXRlTWFuYWdlcixSZXNvdXJjZXNEYXRhU2VydmljZSxDb2Rlc1NlcnZpY2UsUHJvY2Vzc2luZ1NlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxXaWRnZXRSZWdpc3RlclNlcnZpY2UsJHN0YXRlUGFyYW1zLCR0aW1lb3V0LEdyaWRzdGVyU2VydmljZSxNZW51U2VydmljZSwkZWxlbWVudCxkcmFndWxhU2VydmljZSwkc3RhdGUpXHJcbnsgICAgICBcclxuICAgIFxyXG4gICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlOyAgXHJcbiAgICAkc2NvcGUua3NtID0gS2F0YWx5b1N0YXRlTWFuYWdlcjtcclxuICAgICRzY29wZS5sb2NhbFZhcnMgPSB7ICAgZ3NydmM6JHNjb3BlLmdzcnZjLCBQcm9wZXJ0aWVzU2l6ZTonc3RhbmRhcmQnfTtcclxuICAgICRzY29wZS5mb3JtVmFycyA9IHsgIH07XHJcbiAgICAkc2NvcGUucmVzb3VyY2UgPSB7fVxyXG4gICAgJHNjb3BlLnBhcmVudFJlc291cmNlcz1bXVxyXG4gICAgJHNjb3BlLkNUUkw9J2Zvcm1EZWZpbml0aW9uQ3RybCc7XHJcbiAgICAkc2NvcGUuZm9ybUxvYWRlZCA9IGZhbHNlO1xyXG4gICAgJHNjb3BlLmdyaWRzdGVyVHlwZSA9XCJmb3JtXCI7IC8vZGF0YXNldFxyXG4gICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAkc2NvcGUucmVzb3VyY2VJZD0kc3RhdGVQYXJhbXMuaWQ7XHJcbiAgICAkc2NvcGUuU2F2ZWRCdXROb3REZXBsb3llZCA9IGZhbHNlXHJcbiAgICAkc2NvcGUuaXNDb2xsYXBzZWRWZXJIaXN0b3J5ID0gdHJ1ZVxyXG4gICAgJHNjb3BlLmxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZXMgPSBbXVxyXG4gICAgJHNjb3BlLnJldHVyblN0YXRlPSRzdGF0ZVBhcmFtcy5yZXR1cm5TdGF0ZVxyXG4gIFxyXG4gICAgJHNjb3BlLmdzcnZjLnJlc2V0Qm9keUJnQ29sb3IoKVxyXG4gICAgJHNjb3BlLm1lbnVfc2VydmljZSA9IE1lbnVTZXJ2aWNlXHJcbiAgICAkc2NvcGUubWVudV9zZXJ2aWNlLmNsZWFyU2lkZU1lbnUoKVxyXG5cclxuICAgIGlmICgkc2NvcGUucmV0dXJuU3RhdGU9PT11bmRlZmluZWQgfHwgJHNjb3BlLnJldHVyblN0YXRlPT09JycpXHJcbiAgICB7XHJcblxyXG4gICAgICAgJHNjb3BlLnJldHVyblN0YXRlPXtzdGF0ZTp7bmFtZTonYXBwLm5hdmJhci5yZXNvdXJjZXMubGlzdCd9LExhYmVsOidSZXR1cm4gdG8gcmVzb3VyY2UgbGlzdCcscGFyYW1zOnt9fSBcclxuICAgIH1cclxuICAgICRzY29wZS5yZXNvdXJjZURlZiA9IHtSZXNvdXJjZURlZklkX2lkOiAkc2NvcGUucmVzb3VyY2VJZCxmb3JtX2RlZmluaXRpb24gOiB0cnVlfVxyXG4gICAgICBcclxuICAgIGxldCBtYXNzVXBkYXRlU3RhdGU9ICRzY29wZS5rc20uYWRkU3ViamVjdCgnbWFzc1VwZGF0ZVN0YXRlJyxudWxsKTtcclxuICAgIGxldCBtYXNzVXBkYXRlU3RhdGVOYW1lID0gbWFzc1VwZGF0ZVN0YXRlLnN1YmplY3QubmFtZTtcclxuICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbihtYXNzVXBkYXRlU3RhdGVOYW1lLFwibWFzc1VwZGF0ZUNoYW5nZWRcIiwge0FjdGl2ZTpmYWxzZSxJdGVtOm51bGx9KTsgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAkc2NvcGUuZ2V0X3B1Ymxpc2hlZF9yZXNvdXJjZV9mb3Jtcz1mdW5jdGlvbigpeyAgICAgICAgICAgICAgIFxyXG4gICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLkdldFB1Ymxpc2hlZFJlc291cmNlcygkc2NvcGUucmVzb3VyY2VJZCkudGhlbihmdW5jdGlvbiAoZGF0YSkgeyAgICAgICBcclxuICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnB1Ymxpc2hlZFJlc291cmNlcyA9IGRhdGEuZGF0YTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgICRzY29wZS5nZXRfcHVibGlzaGVkX3Jlc291cmNlX2Zvcm1zKCk7XHJcbiAgICAkdGltZW91dChmdW5jdGlvbigpIHsgICAkc2NvcGUuZGVmaW5pdGlvblR5cGUgPSAnZm9ybSc7ICAgICAgICAgfSk7XHJcbiAgICBcclxuXHJcbiAgICAkc2NvcGUud2lkZ2V0UHJvcGVydHlIaWRlTWFwPXtnZW5lcmFsOnRydWUsZGF0YVZhbGlkYXRpb246dHJ1ZX1cclxuICAgXHJcbiAgICAkc2NvcGUubG9jYWxWYXJzLkNoYW5nZVByb3BlcnRpZXNTaXplID0gZnVuY3Rpb24oKVxyXG4gICAge1xyXG4gICAgICAgbGV0IHByb3BFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInByb3BlcnRpZXNDb250YWluZXJcIik7XHJcbiAgICAgICAgXHJcbiAgICAgICAkc2NvcGUucHJvcGVydGllc1RvcCA9IFwiXCI7XHJcbiAgICAgICBcclxuICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMuUHJvcGVydGllc1NpemU9PSdzdGFuZGFyZCcpXHJcbiAgICAgIHtcclxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzLlByb3BlcnRpZXNTaXplID0gJ2xhcmdlJztcclxuICAgICAgICRzY29wZS5wcm9wZXJ0aWVzVG9wID0gJHNjb3BlLmdzcnZjLmNhbGNUb3BGb3JFeHRlbmRlZFByb3BlcnRpZXMocHJvcEVsZW1lbnRbMF0pOyBcclxuICAgICAgXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSAkc2NvcGUubG9jYWxWYXJzLlByb3BlcnRpZXNTaXplPSdzdGFuZGFyZCc7XHJcbiAgICB9XHJcbiAgIFxyXG4gICBcclxuICAgXHJcbiAgICAkc2NvcGUuUHJlcGFyZVB1Ymxpc2gyUHJvZCA9IGZ1bmN0aW9uKClcclxuICAgIHtcclxuICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5wcmVwYXJlUHVibGlzaDJQcm9kKCRzY29wZS5yZXNvdXJjZUlkLCRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUNvZGUsJHNjb3BlLnJlc291cmNlLlZlcnNpb24pLnRoZW4oXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uKGRhdGEpIHsgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlPy5ybWQpIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlLnJtZC5mb3JFYWNoKCBpdGVtID0+IHsgXHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH0qLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgJHNjb3BlLlB1Ymxpc2gyUHJvZCA9IGZ1bmN0aW9uKClcclxuICAgIHtcclxuICAgICAgICAkc2NvcGUucHVibGlzaGluZ0RhdGFzZXQ9dHJ1ZVxyXG4gICAgICAgIGxldCByZXNvdXJjZXMgPSBbe3VpZDokc2NvcGUucmVzb3VyY2VJZCxpdGVtU3ViVHlwZTokc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VDb2RlLHZlcnNpb246JHNjb3BlLnJlc291cmNlLlZlcnNpb24gfV1cclxuICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5wdWJsaXNoMlByb2QocmVzb3VyY2VzKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5kYXRhLm1zZywnc3VjY2VzcycpOyBcclxuICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlLlB1Ymxpc2hlZCA9IGRhdGEuZGF0YS5QdWJsaXNoZWRcclxuICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlLkRlcGxveWVkID0gZGF0YS5kYXRhLkRlcGxveWVkXHJcbiAgICAgICAgICAgICRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZS5WZXJzaW9uID0gZGF0YS5kYXRhLlZlcnNpb25cclxuICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlLlZlcnNpb249JHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlLlZlcnNpb25cclxuICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlLlB1Ymxpc2hlZFZlcnNpb24gPSAgZGF0YT8uZGF0YT8uUHVibGlzaGVkVmVyc2lvblxyXG4gICAgICAgICAgICAkc2NvcGUucHVibGlzaGVkUmVzb3VyY2UuRGF0ZVRpbWUgPSBkYXRhLmRhdGEuRGF0ZVRpbWVcclxuICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlLlB1Ymxpc2hlZEJ5ID0gZGF0YS5kYXRhLlB1Ymxpc2hlZEJ5XHJcbiAgICAgICAgICAgICRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZS5DaGFuZ2VkRGF0ZVRpbWUgPSBkYXRhLmRhdGEuQ2hhbmdlZERhdGVUaW1lXHJcbiAgICAgICAgICAgICRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZS5DaGFuZ2VkQnkgPSBkYXRhLmRhdGEuQ2hhbmdlZEJ5XHJcbiAgICAgICAgICAgICRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZS5jb3VudCA9IDAgXHJcbiAgICAgICAgICAgICRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZS5ybWQgPSBkYXRhLmRhdGEucm1kXHJcbiAgICAgICAgICAgICRzY29wZS5wdWJsaXNoaW5nRGF0YXNldD1mYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hpbmdEYXRhc2V0PWZhbHNlICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBcclxuXHJcbiAgICAgICAgIFxyXG4gICAgJHNjb3BlLnNob3dIaWRlUHJvcGVydGllcyA9IGZ1bmN0aW9uKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5zZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuc2hvd0ZpZWxkUHJvcGVydGllcz0kc2NvcGUuZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzT3BlbmVkKCk7XHJcbiAgICAgICAgICAgICAgICAgLy8gaWYgKHZhbHVlKSAkc2NvcGUuZ3NydmMuc2V0UHJvcGVydGllc1Bvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG5cclxuXHJcbiAgIFxyXG4gICAgICAgJHNjb3BlLlNob3dGb3JtVmlldyA9IGZ1bmN0aW9uKHZpZXdJZCxsb2NrZWQpXHJcbiAgICAgIHtcclxuICAgICAgIFxyXG4gICAgICAgICRzY29wZS5yZXNvdXJjZS5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT12aWV3SWQ7XHJcbiAgICAgICAgJHNjb3BlLnJlc291cmNlLmZvcm1QYXJhbXMuZm9ybUxvY2tlZCA9IGxvY2tlZDtcclxuICAgICAgICAkc2NvcGUuZ3NydmMuc2V0Rm9ybVZpZXdUeXBlKCRzY29wZS5yZXNvdXJjZS5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSk7XHJcbiAgICAgICAgXHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzQnlOYW1lKCdyZXNvdXJjZXR5cGUnLGxhbmcpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgIC8vZGVidWdnZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlVHlwZUxpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzQnlOYW1lKCdjb2Rlc3RhdHVzJyxsYW5nKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlU3RhdHVzTGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc3RhdHVzZXNEb3dubG9hZGVkPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gIFxyXG4gIFxyXG4gIFxyXG4gICAgJHNjb3BlLmdldFJlc291cmNlRGVmaW5pdGlvbiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkFsbCgkc2NvcGUucmVzb3VyY2VJZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLm1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlLndpZGdldFByb3BlcnR5SGlkZU1hcCA9ICRzY29wZS53aWRnZXRQcm9wZXJ0eUhpZGVNYXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZURlZkRvd25sb2FkZWQ9dHJ1ZVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZ2V0IHJlc291cmNlIHB1Ymxpc2hlZCBpbmZvIChmcm9tIFBST0QgaW5zdGFuY2UpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuUHJlcGFyZVB1Ymxpc2gyUHJvZCgpXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuR2V0V2lkZ2V0VG9vbGJveCgkc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VDb2RlKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5zZXRXaWRnZXRUb29sYm94SXRlbXMoZGF0YS5kYXRhLCRzY29wZS5ncmlkc3RlclR5cGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ2V0UmVzb3VyY2VGb3JtKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgfSk7XHJcbiAgICB9OyAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vJHNjb3BlLmdldFJlc291cmNlRGVmaW5pdGlvbigpO1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS4kb24oJ0N0cmxQQlByZXNzZWQnLGZ1bmN0aW9uKGV2ZW50LGRhdGEpe1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGxldCBrZXk9ZGF0YTtcclxuICAgICAgICAgICAgICAgIGlmIChrZXk9PSdiJyB8fCBrZXk9PSdCJylcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlIT0xKSAkc2NvcGUuU2hvd0Zvcm1WaWV3KDEpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChrZXk9PSdwJyB8fCBrZXk9PSdQJylcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlIT0yKSAkc2NvcGUuU2hvd0Zvcm1WaWV3KDIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICB9KTsgICAgIFxyXG4gICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmdldElubmVySHRtbCA9IGZ1bmN0aW9uKClcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgICAgIC8vJHNjb3BlLmlubmVySHRtbCAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXZba3QtZ3JpZF0nKS5pbm5lckhUTUw7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuRm9ybURlZiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdltrdC1ncmlkXScpLmlubmVySFRNTDtcclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2W2t0LWdyaWRdJykuaW5uZXJIVE1MKTtcclxuICAgICAgICAgICAgICAgIC8vJHNjb3BlLmlubmVySHRtbCA9IGVsZW07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICBcclxuICAgICAgICBcclxuICAgICBcclxuXHJcbiAgICAgICAgICRzY29wZS5leGlzdGluZ1JlbGF0aW9uc2hpcHMgPSBbXVxyXG4gICAgICAgICAkc2NvcGUuZXhpc3RpbmdSZWxhdGlvbnNoaXBzQ29weT1bXVxyXG4gICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbiAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKiBHRVQgQ0hJTEQgUkVMQVRJT05TSElQUyAqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbiAgICAgICAkc2NvcGUuZ2V0RXhpc3RpbmdSZXNvdXJjZXMgPSBmdW5jdGlvbigpICB7XHJcblxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLmV4aXN0aW5nUmVsYXRpb25zaGlwcy5sZW5ndGg9MFxyXG4gICAgICAgICAgICAkc2NvcGUuUmVsYXRlZExvYWRlZD1mYWxzZVxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldEV4aXN0aW5nUmVzb3VyY2VSZWxhdGlvbnNoaXBzKCRzY29wZS5yZXNvdXJjZUlkKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmV4aXN0aW5nUmVsYXRpb25zaGlwcyA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5leGlzdGluZ1JlbGF0aW9uc2hpcHNDb3B5ID0gYW5ndWxhci5jb3B5KCRzY29wZS5leGlzdGluZ1JlbGF0aW9uc2hpcHMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuUmVsYXRlZExvYWRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gIFxyXG4gICAgICAgfTsgICAgXHJcbiAgICAgICAgICBcclxuICAgXHJcbiAgICAgIFxyXG4gICAgICAgICRzY29wZS5zYXZlUmVzb3VyY2VEZWYgPSBmdW5jdGlvbiAoaXNWYWxpZClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICAgaWYgKGlzVmFsaWQpICB7XHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuU2F2ZVJlc291cmNlRGVmMiAoJHNjb3BlLnJlc291cmNlKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihkYXRhKSB7ICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzPT09MjAwIHx8IGRhdGEuc3RhdHVzPT09MjAxICkgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShcIlJlc291cmNlIHNhdmVkIHN1Y2Nlc3NmdWx5XCIsJ3N1Y2Nlc3MnKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7ICBcclxuICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShcIlBsZWFzZSBlbnRlciByZXF1aXJlZCBkYXRhXCIsJ3dhcm5pbmcnKTsgXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH07ICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5jbGVhclJlc291cmNlUGFyYW1ldGVycyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICBcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzID09dW5kZWZpbmVkIHx8ICAkc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycz09bnVsbClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycyA9IHtleHREYXRhU291cmNlUGFyYW1zOntmb3JtRmllbGRzTGlzdDpbXX0gfTsgICAgICBcclxuICAgICAgICAgICAgICAgIH0gZWxzZVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzLmV4dERhdGFTb3VyY2VQYXJhbXMgPT0gdW5kZWZpbmVkIHx8IHZhbHVlID09IGZhbHNlKSAgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnMuZXh0RGF0YVNvdXJjZVBhcmFtcz17IGZvcm1GaWVsZHNMaXN0OltdIH07ICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlICAkc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycy5leHREYXRhU291cmNlUGFyYW1zLmZvcm1GaWVsZHNMaXN0Lmxlbmd0aD0wOyAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAkc2NvcGUuRWRpdERhdGFzZXQgPSBmdW5jdGlvbih2YWx1ZSkgLy9UT0RPXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdmFyIGxvY2FsRmllbGRzTGlzdD1bXSBcclxuICAgICAgICAgICAgICAgICBpZiAoICRzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzPy5leHREYXRhU291cmNlUGFyYW1zPy5mb3JtRmllbGRzTGlzdCkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldEZpZWxkTmFtZXNGcm9tT2JqZWN0KCRzY29wZS5kYXNoYm9hcmQsICAgJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnMuZXh0RGF0YVNvdXJjZVBhcmFtcy5mb3JtRmllbGRzTGlzdCk7ICAgICAgICAgICAgXHJcbiAgICAgICB9O1xyXG4gICAgICAgXHJcbiAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAkc2NvcGUuJHdhdGNoKCdnc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKScsZnVuY3Rpb24obmV3VmFsdWUsb2xkVmFsdWUpe1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGlmIChuZXdWYWx1ZSE9b2xkVmFsdWUpXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRGaWVsZD0kc2NvcGUuZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzKCk7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAkc2NvcGUuc2hvd0ZpZWxkUHJvcGVydGllcyA9ICRzY29wZS5nc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZWZyZXNoUHJvcGVydGllcyAmJiAkc2NvcGUuc2hvd0ZpZWxkUHJvcGVydGllcylcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRGaWVsZD0kc2NvcGUuZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzKCk7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucmVmcmVzaFByb3BlcnRpZXM9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgIFxyXG4gICAgICAgJHNjb3BlLiR3YXRjaCgnZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzKCknLGZ1bmN0aW9uKG5ld1ZhbHVlLG9sZFZhbHVlKXtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBpZiAobmV3VmFsdWUhPW9sZFZhbHVlKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkRmllbGQ9JHNjb3BlLmdzcnZjLmdldEZpZWxkUHJvcGVydGllcygpO1xyXG4gICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLlByb3BlcnRpZXNTaXplID0nc3RhbmRhcmQnO1xyXG4gICAgICAgICAgICAgICAkc2NvcGUuc2hvd0ZpZWxkUHJvcGVydGllcyA9ICRzY29wZS5nc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIGlmICgkc2NvcGUucmVmcmVzaFByb3BlcnRpZXMgJiYgJHNjb3BlLnNob3dGaWVsZFByb3BlcnRpZXMpXHJcbiAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZEZpZWxkPSRzY29wZS5nc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXMoKTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5yZWZyZXNoUHJvcGVydGllcz1mYWxzZTtcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgICAgIFxyXG4gICAgICAkc2NvcGUuZ2V0UmVzb3VyY2VGb3JtID0gZnVuY3Rpb24gKCkgLy9pbiByZXNvdXJjZUZvcm1DdHJsXHJcbiAgICAgIHtcclxuICAgICAgICAgICRzY29wZS5mb3JtTG9hZGVkPWZhbHNlO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZUZvcm0oJHNjb3BlLnJlc291cmNlSWQsJ2knLGxhbmcpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICBmdW5jdGlvbihkYXRhKSAgICB7XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlPSBkYXRhLmRhdGEucmVzb3VyY2VEZWZpbml0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlLndpZGdldFByb3BlcnR5SGlkZU1hcCA9ICRzY29wZS53aWRnZXRQcm9wZXJ0eUhpZGVNYXBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YT8uZGF0YT8ud2lkZ2V0cyAmJiBkYXRhLmRhdGEud2lkZ2V0cy5sZW5ndGg+MCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzPXtsYXlvdXQ6ZGF0YS5kYXRhLndpZGdldHN9O1xyXG4gICAgICAgICAgICAgICAgICAgICB9IGVsc2UgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGFzaGJvYXJkLndpZGdldHM9e2xheW91dCA6ICRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkLkRlZmF1bHRGb3JtfTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAvL2dldCByZXNvdXJjZSBwdWJsaXNoZWQgaW5mbyAoZnJvbSBQUk9EIGluc3RhbmNlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLlByZXBhcmVQdWJsaXNoMlByb2QoKVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLkdldFdpZGdldFRvb2xib3goJHNjb3BlLnJlc291cmNlLlJlc291cmNlQ29kZSkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0V2lkZ2V0VG9vbGJveEl0ZW1zKGRhdGEuZGF0YSwkc2NvcGUuZ3JpZHN0ZXJUeXBlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICBcclxuIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZS5mb3JtUGFyYW1zID0ge2Zvcm1WaWV3VHlwZToxLGZvcm1Mb2NrZWQ6dHJ1ZX07ICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuYWRtaW5IZWFkZXJMYWJlbD1cIlNlbGVjdCBcIiskc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VDb2RlK1wiIGFkbWluaXN0cmF0b3JzXCI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0Rm9ybVZpZXdUeXBlKCRzY29wZS5yZXNvdXJjZS5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KCBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vaWYgKCEkc2NvcGUucmVzb3VyY2UuUHVibGlzaGVkICYmICRzY29wZS5yZXNvdXJjZS5WZXJzaW9uPT0kc2NvcGUucmVzb3VyY2UuTmV3VmVyc2lvbikgICAgJHNjb3BlLnNob3dQdWJsaXNoKGZhbHNlKVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICBcclxuICAgICAgfTtcclxuICBcclxuICAgICRzY29wZS5nZXRSZXNvdXJjZUZvcm0oKTtcclxuXHJcblxyXG5cclxuICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIC8vICAgICAgICAgICBTQVZFIFJFU09VUkNFIEZPUk0gREVGSU5JVElPTlxyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgJHNjb3BlLnNhdmVSZXNvdXJjZUZvcm0gPSBmdW5jdGlvbiAodmFsKSB7XHJcbiAgICAgJHNjb3BlLnNhdmluZ0Zvcm0gPSB0cnVlOyAvL2Rpc2FibGUgc2F2ZSBidXR0b25cclxuICAgICAkc2NvcGUuZm9ybUxvYWRlZD1mYWxzZTsgXHJcbiAgICAgJHNjb3BlLnNob3dIaWRlUHJvcGVydGllcyhmYWxzZSk7XHJcbiAgICAgLy8gRmlyc3Qgc2F2ZSB0aGUgZm9ybVxyXG5cclxuICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2Uuc2F2ZVJlc291cmNlRm9ybSgkc2NvcGUuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0LCRzY29wZS5yZXNvdXJjZUlkLCdpJywkc2NvcGUubG9jYWxWYXJzLm5ld0Rlc2NyaXB0aW9uKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuZGF0YS5mb3JtRGF0YS5sZW5ndGg+MCkgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGFzaGJvYXJkLndpZGdldHM9e2xheW91dDpkYXRhLmRhdGEuZm9ybURhdGF9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZS5Gb3JtVmVyc2lvbiA9IGRhdGEuZGF0YS5mb3JtX3ZlcnNpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlLlZlcnNpb24gPSBkYXRhLmRhdGEudmVyc2lvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuaGFzQ2hhbmdlcz1kYXRhLmRhdGEuaGFzX2NoYW5nZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5kZWZpbml0aW9uVHlwZSA9IHZhbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEubXNnLGRhdGEubXNnVHlwZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2F2aW5nRm9ybSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjZGF0YXNldFB1Ymxpc2gnKS5tb2RhbCgnaGlkZScpOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNhdmluZ0Zvcm0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtTG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gIH07XHJcblxyXG4gICAgICRzY29wZS5zaG93TW9kYWwgPSBmdW5jdGlvbiAocF90eXBlKSB7XHJcbiAgICAgICAvL1BPU1QgcHVibGlzaC1yZXNvdXJjZSAsIHJlc291cmNlX2lkLCB2ZXJzaW9uIGkgZGVzY3JpcHRpb25cclxuICAgICAgICAvLyRzY29wZS5zYXZlTW9kYWw9dHJ1ZTtcclxuICAgICAgICAkKCcjZGF0YXNldFB1Ymxpc2gnKS5tb2RhbCgnc2hvdycpOyBcclxuICAgICAgICAkc2NvcGUubW9kYWxBY3Rpb249cF90eXBlXHJcbiAgICAgICAgJHNjb3BlLm5ld1B1Ymxpc2hWZXJzaW9uID0gJHNjb3BlLnJlc291cmNlLlZlcnNpb25cclxuICAgIH1cclxuICAgXHJcbiAgIFxyXG4gICBcclxuICBcclxuICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAvLyAgICAgICAgICAgUHVibGlzaCByZXNvdXJjZVxyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgJHNjb3BlLnNhdmVfcmVzb3VyY2UgPSBmdW5jdGlvbiAoZm9ybVZhbGlkKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IHB1Ymxpc2hfdHlwZT0nZm9ybSdcclxuICAgICAgICBpZiAoZm9ybVZhbGlkKSB7XHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUubW9kYWxBY3Rpb249PSdzYXZlJylcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnNhdmVSZXNvdXJjZUZvcm0ocHVibGlzaF90eXBlKVxyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hpbmdGb3JtID0gdHJ1ZTtcclxuICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5QdWJsaXNoUmVzb3VyY2UoJHNjb3BlLnJlc291cmNlSWQsJHNjb3BlLnJlc291cmNlLlZlcnNpb24sJHNjb3BlLmxvY2FsVmFycy5uZXdEZXNjcmlwdGlvbixwdWJsaXNoX3R5cGUpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kKCcjZGF0YXNldFB1Ymxpc2gnKS5tb2RhbCgnaGlkZScpOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hpbmdGb3JtID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZS5QdWJsaXNoZWQgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nZXRfcHVibGlzaGVkX3Jlc291cmNlX2Zvcm1zKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLlByZXBhcmVQdWJsaXNoMlByb2QoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGF0YXNldERlcGxveSA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNkYXRhc2V0UHVibGlzaCcpLm1vZGFsKCdoaWRlJyk7ICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1RPRE8gLSBTS0lOVVRJIFBPTk9WTk8gUFVCTElTSEVEIFJFU09VUkNFU1xyXG4gICAgICAgICAgICAgICAgICAgIH0gLGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5wdWJsaXNoaW5nRm9ybSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAkc2NvcGUuYWN0aXZpdHkuYWN0aXZpdHlNZXNzYWdlID0gUHJvY2Vzc2luZ1NlcnZpY2Uuc2V0QWN0aXZpdHlNc2coXCJcIik7XHJcbiAgICAgICAgfVxyXG4gIH07XHJcbiAgXHJcbiAgXHJcblxyXG4gICAkc2NvcGUucmV0dXJuVG9QcmV2aW91c1BhZ2UgPSBmdW5jdGlvbigpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbGV0IHBhZ2UgPSAkc2NvcGUucmV0dXJuU3RhdGUuc3RhdGUubmFtZVxyXG4gICAgICAgICAgICAgICAgLy9sZXQgbmF2YmFyID0gTWVudVNlcnZpY2UuZ2V0UGFnZU5hdmJhckJ5TmFtZShwYWdlKTtcclxuICAgICAgICAgICAgICAgICRzdGF0ZS5nbyhwYWdlLCRzY29wZS5yZXR1cm5TdGF0ZS5wYXJhbXMpO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gIFxyXG4gICAvLyAqKioqKioqKioqKiAgIGt0Rm9ybVJlc291cmNlIElOSVQgKioqKioqKioqKioqKioqKioqXHJcbiAgIFxyXG5cclxuICAgICBcclxuICAgICAgJHNjb3BlLmRhdGFGb3JHcmlkUmVhZHkgPSBmYWxzZTtcclxuICAgICAgJHNjb3BlLmVkaXREYXRhc2V0PWZhbHNlO1xyXG4gICAgICAkc2NvcGUuZGFzaGJvYXJkPXt9O1xyXG4gICAgIFxyXG4gICAgICAkc2NvcGUuZ3NydmMuZGVzdHJveURyYWd1bGEoJ2JhZy1mb3JtJyk7XHJcbiAgICAgICRzY29wZS5nc3J2Yy5kZXN0cm95RHJhZ3VsYSgnYmFnLWNvbHVtbnMnKTtcclxuICAgICAgJHNjb3BlLmdzcnZjLmRlc3Ryb3lEcmFndWxhKCdiYWctcm93cy0nKyRzY29wZS5ncmlkc3RlclR5cGUpO1xyXG4gICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAkc2NvcGUuc2hvd0ZpZWxkUHJvcGVydGllcz1mYWxzZTtcclxuICAgXHJcbiAgICBcclxufVxyXG4gICAgICAgIFxyXG4gICAgXHJcbiAgICBcclxuZXhwb3J0IGZ1bmN0aW9uIHJlc291cmNlRGF0YVJlY29yZEN0cmwgKCRzY29wZSwkdGltZW91dCAsJHJvb3RTY29wZSwgQXV0aGVudGljYXRpb25TZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLFByb2Nlc3NpbmdTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsJHN0YXRlUGFyYW1zLEdyaWRzdGVyU2VydmljZSkge1xyXG4gICAgXHJcbiAgICAgICRzY29wZS5yZXNvdXJjZUlkPSRzdGF0ZVBhcmFtcy5yZXNvdXJjZV9pZDtcclxuICAgICAgJHNjb3BlLnJlY29yZF9pZD0kc3RhdGVQYXJhbXMuaWQ7XHJcbiAgICAgICRzY29wZS5DVFJMPSdyZXNvdXJjZURhdGFSZWNvcmRDdHJsJztcclxuICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbiA9IHsnUmVzb3VyY2VEZWZJZF9pZCc6JHNjb3BlLnJlc291cmNlSWR9O1xyXG4gICAgICAkc2NvcGUuZm9ybURhdGE9W3t9XTtcclxuICAgICAgJHNjb3BlLmdyaWRzdGVyVHlwZT1cInJlc291cmNlXCI7XHJcblxyXG4gICAgICAkc2NvcGUuZGFzaGJvYXJkID0ge1xyXG5cdFx0XHRcdGlkOiAnMScsXHJcblx0XHRcdFx0bmFtZTogJ0hvbWUnLFxyXG5cdFx0XHRcdHdpZGdldHM6IEdyaWRzdGVyU2VydmljZS5nZXRFbXB0eURhdGFzZXRGb3JtKClcclxuXHRcdFx0XHR9IDtcclxuIFxyXG4gICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICBcclxuICAgICAgJHNjb3BlLmdldFJlc291cmNlRm9ybSA9IGZ1bmN0aW9uICgpIHsvLyBpbiByZXNvdXJjZURhdGFSZWNvcmRDdHJsXHJcbiAgICAgIC8vZGVidWdnZXJcclxuICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VGb3JtKCRzY29wZS5yZXNvdXJjZUlkLCdpJyxsYW5nLCRzY29wZS5yZXNvdXJjZURlZmluaXRvbi5yZXNvdXJjZVR5cGUpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQ9ZGF0YS5kYXRhLndpZGdldHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbj0gZGF0YS5kYXRhLnJlc291cmNlRGVmaW5pdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZS5mb3JtUGFyYW1zID0ge2Zvcm1WaWV3VHlwZToxfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybUxvYWRlZD10cnVlO1xyXG4gICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgfTtcclxuXHJcbiAgJHNjb3BlLmdldFJlc291cmNlRm9ybVdpdGhEYXRhID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZUZvcm1XaXRoRGF0YSgkc2NvcGUucmVzb3VyY2VJZCwkc2NvcGUucmVjb3JkX2lkLCdpJyxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0PWRhdGEuZGF0YS53aWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5mb3JtRGF0YSA9IGRhdGEuZGF0YS5mb3JtX2RhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbj0gZGF0YS5kYXRhLnJlc291cmNlRGVmaW5pdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZS5mb3JtUGFyYW1zID0ge2Zvcm1WaWV3VHlwZToxfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybUxvYWRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgfTtcclxuICAgICAgXHJcbiAgaWYgKCRzY29wZS5yZWNvcmRfaWQ9PVwiXCIpXHJcbiAgICB7XHJcbiAgICAgICRzY29wZS5hY3Rpb24gPSBcIkNyZWF0ZVwiO1xyXG4gICAgICBcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgIHtcclxuICAgICAgXHJcbiAgICAgICRzY29wZS5hY3Rpb24gPSBcIlVwZGF0ZVwiO1xyXG4gICAgICBcclxuICAgIH1cclxuICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZUlkICE9IHVuZGVmaW5lZCAmJiAkc2NvcGUuYWN0aW9uID09IFwiQ3JlYXRlXCIpXHJcbiAgICAgIHtcclxuICAgICAgICAkc2NvcGUuZ2V0UmVzb3VyY2VGb3JtKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoJHNjb3BlLnJlY29yZF9pZCAhPSB1bmRlZmluZWQpXHJcbiAgICAgIHtcclxuICAgICAgJHNjb3BlLmdldFJlc291cmNlRm9ybVdpdGhEYXRhKCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgIH1cclxuICAgIFxyXG4gICAgICAkc2NvcGUuc2F2ZVJlc291cmNlRGF0YSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICRzY29wZS5hY3Rpdml0eS5hY3Rpdml0eU1lc3NhZ2UgPSBQcm9jZXNzaW5nU2VydmljZS5zZXRBY3Rpdml0eU1zZyhcIlNhdmluZyByZWNvcmQgZm9yIFwiKyRzY29wZS5yZXNvdXJjZUlkKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgLy8kc2NvcGUucmVzb3VyY2VEYXRhID0gUmVzb3VyY2VzRGF0YVNlcnZpY2UucHJlcGFyZVJlc291cmNlV2lkZ2V0RGF0YSgkc2NvcGUuZGFzaGJvYXJkMS53aWRnZXRzKTtcclxuICAgICAgICAgIFxyXG5cclxuICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLnNhdmVSZXNvdXJjZURhdGEoJHNjb3BlLnJlc291cmNlSWQsJHNjb3BlLmZvcm1EYXRhKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmFjdGl2aXR5LmFjdGl2aXR5TWVzc2FnZSA9IFByb2Nlc3NpbmdTZXJ2aWNlLnNldEFjdGl2aXR5TXNnKFwiXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgJHNjb3BlLmRlbGV0ZVNlbGVjdGVkUmVjb3JkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgXHJcbiAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5kZWxldGVEYXRhc2V0UmVjb3JkKCRzY29wZS5yZXNvdXJjZUlkLCRzY29wZS5yZWNvcmRfaWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07ICBcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbmV4cG9ydCBmdW5jdGlvbiBwYWdlc0N0cmwgKCRzY29wZSwgJHJvb3RTY29wZSwkc3RhdGUsUmVzb3VyY2VzRGF0YVNlcnZpY2UsVXNlclNlcnZpY2UsdWlHcmlkQ29uc3RhbnRzLE1lc3NhZ2luZ1NlcnZpY2UsJHRpbWVvdXQpIHtcclxuICAgIFxyXG4gJHNjb3BlLkNUUkw9J3BhZ2VzQ3RybCc7XHJcbiAkc2NvcGUubmF2YmFyX2lkPSRzdGF0ZS5wYXJhbXMubmF2YmFyX2lkO1xyXG4gICAgICAgICRzY29wZS5wcmV2aW91c1N0YXRlID0ge3N0YXRlOiRzdGF0ZS5jdXJyZW50Lm5hbWUscGFyYW1zOntuYXZiYXJfaWQ6JHNjb3BlLm5hdmJhcl9pZCxzaWRlbWVudV9pZDokc3RhdGUucGFyYW1zLnNpZGVtZW51X2lkfX07XHJcbiAgICAgICAgLy9HZXQgZGF0YSBmcm9tIHNlcnZlclxyXG4gICAgJHNjb3BlLmdyaWRPcHRpb25zID0ge1xyXG4gICAgICAgIGNvbHVtbkRlZnM6IFtcclxuICAgICAgICAgeyBuYW1lOiAnaWQnLCBkaXNwbGF5TmFtZTogJ0lEJywgYWdncmVnYXRpb25UeXBlOiB1aUdyaWRDb25zdGFudHMuYWdncmVnYXRpb25UeXBlcy5tYVgsdHlwZTogJ251bWJlcicsIHdpZHRoOic1JScsZW5hYmxlSGlkaW5nOiBmYWxzZSwgdmlzaWJsZTogdHJ1ZSB9LFxyXG4gICAgICAgICB7IG5hbWU6ICdyZXNvdXJjZWRlZmxhbmdfc2V0WzBdLk5hbWUnLCBkaXNwbGF5TmFtZTogJ1BhZ2UgbmFtZSd9LFxyXG4gICAgICAgICB7IG5hbWU6ICdyZXNvdXJjZWRlZmxhbmdfc2V0WzBdLlN1YmplY3QnLCBkaXNwbGF5TmFtZTogJ1BhZ2Ugc3ViamVjdCcgfSxcclxuICAgICAgICAgeyBuYW1lOiAncmVzb3VyY2VkZWZsYW5nX3NldFswXS5EZXNjcmlwdGlvbicsIGRpc3BsYXlOYW1lOiAnUGFnZSBkZXNjcmlwdGlvbicgfSxcclxuICAgICAgIC8vICB7IG5hbWU6ICdyZXNvdXJjZWRlZmxhbmdfc2V0WzBdLkxhbmcubmFtZScsIGRpc3BsYXlOYW1lOiAnTGFuZ3VhZ2UnfSxcclxuICAgICAgICAvLyB7IG5hbWU6ICdSZXNvdXJjZVR5cGUuQ29kZXNEZXRhaWxMYW5nWzBdLlZhbHVlJywgZGlzcGxheU5hbWU6ICdUYXNrIHR5cGUnIH0sXHJcbiAgICAgICAgIHsgbmFtZTogJ0NyZWF0ZWREYXRlVGltZScsIGRpc3BsYXlOYW1lOiAnRGF0ZSBjcmVhdGVkJyxlbmFibGVIaWRpbmc6IGZhbHNlLHR5cGU6ICdkYXRlJywgY2VsbEZpbHRlcjogJ2RhdGU6XFwnZGQuTU0ueXl5eSBISDpNTTpzczpzc3NcXCcnIH0sXHJcbiAgICAgICAgIHsgbmFtZTogJ2NyZWF0ZWRCeS5uYW1lJywgZGlzcGxheU5hbWU6ICdDcmVhdGVkIGJ5J30sXHJcbiAgICAgICAgIHsgbmFtZTogJ1N0YXR1cy5Db2Rlc0RldGFpbExhbmdbMF0uVmFsdWUnLCBkaXNwbGF5TmFtZTogJ1N0YXR1cyd9LFxyXG4gICAgICAgICBdLFxyXG4gICAgICBlbmFibGVHcmlkTWVudTogdHJ1ZSxcclxuICAgICAgICBzaG93R3JpZEZvb3RlcjogdHJ1ZSxcclxuICAgIHNob3dDb2x1bW5Gb290ZXI6IHRydWUsXHJcbiAgICAgICAgZW5hYmxlUm93U2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgICAgbXVsdGlTZWxlY3Q6IGZhbHNlLFxyXG4gICAgICAgZW5hYmxlSG9yaXpvbnRhbFNjcm9sbGJhciA6IDAsIFxyXG4gICAgICBlbmFibGVWZXJ0aWNhbFNjcm9sbGJhciA6IDIsXHJcbiAgICAgICBlbmFibGVGaWx0ZXJpbmc6IHRydWUsXHJcbiAgICAgICBlbmFibGVSb3dIZWFkZXJTZWxlY3Rpb246IHRydWUsXHJcbiAgICAgICBlbmFibGVDb2x1bW5SZXNpemluZzogdHJ1ZSxcclxuICAgICAvKiBcclxuICAgICAgICBwYWdpbmF0aW9uUGFnZVNpemVzOiBbNSwgMTAsIDIwLCA1MCwgMTAwXSxcclxuICAgICAgICAgcGFnaW5hdGlvblBhZ2VTaXplOiA1LFxyXG4gICAgICAgZW5hYmxlU2VsZWN0QWxsOiBmYWxzZSxcclxuICAgICAgIFxyXG4gICAgICAgXHJcbiAgICAgICBlbmFibGVDZWxsRWRpdDogZmFsc2UqL1xyXG4gICAgICBcclxuICAgfVxyXG4gICBcclxuICAgXHJcblxyXG4gICAgJHNjb3BlLmdyaWRPcHRpb25zLm9uUmVnaXN0ZXJBcGkgPSBmdW5jdGlvbiAoZ3JpZEFwaSkge1xyXG4gICAgICAgIC8vc2V0IGdyaWRBcGkgb24gc2NvcGVcclxuICAgICAgICAkc2NvcGUuZ3JpZEFwaSA9IGdyaWRBcGk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICBncmlkQXBpLnNlbGVjdGlvbi5vbi5yb3dTZWxlY3Rpb25DaGFuZ2VkKCRzY29wZSxmdW5jdGlvbihyb3cpe1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICRzY29wZS5wYWdlU2VsZWN0ZWQ9cm93LmlzU2VsZWN0ZWQ7XHJcbiAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZFBhZ2UgPSByb3cuZW50aXR5LmlkO1xyXG4gICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRQYWdlT2JqZWN0ID0gcm93LmVudGl0eTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgIH1cclxuICAgXHJcbiAgIFxyXG4gICBcclxuICRzY29wZS5nZXRQYWdlRGVmID0gZnVuY3Rpb24oKXtcclxuICAgXHJcbiAgIFxyXG4gICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkJ5VHlwZShsYW5nLCdwYWdlJykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5ncmlkT3B0aW9ucy5kYXRhID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgfTtcclxuICAgICAgICBcclxuICAgIFxyXG4gICAgLy9uYXB1bmkgZ3JpZCBzIGRlZmluaWNpamFtYSByZXN1cnNhXHJcbiAgICAkc2NvcGUuZ2V0UGFnZURlZigpO1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICBcclxuICAgIFxyXG4gICAgfVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHBhZ2VzRGVmaW5pdGlvbkN0cmwgKCRzY29wZSwgJHJvb3RTY29wZSwkc3RhdGUsJGxvY2F0aW9uLENvZGVzU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSxVc2VyU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlLE1lbnVTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSwkdGltZW91dCkge1xyXG5cclxuICAgICAgICAkc2NvcGUuQ1RSTD0ncGFnZXNEZWZpbml0aW9uQ3RybCc7XHJcbiAgICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlXHJcbiAgICAgICAgJHNjb3BlLmRhc2hib2FyZCA9IHt3aWRnZXRzOiRzY29wZS5nc3J2Yy5nZXRFbXB0eVRhc2tGb3JtKCl9XHJcbiAgICAgICAgJHNjb3BlLnJlc291cmNlSWQ9JHN0YXRlLnBhcmFtcy5pZDtcclxuICAgICAgICAkc2NvcGUuZ3JpZD17fTtcclxuICAgICAgICAkc2NvcGUubmF2YmFyX2lkPSRzdGF0ZS5wYXJhbXMubmF2YmFyX2lkO1xyXG4gICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICRzY29wZS51c2VyX2lzX2FkbWluID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmlzX3N1cGVydXNlcjtcclxuICAgICAgICAkc2NvcGUuc2VsZWN0ZWRUYWI9MTtcclxuICAgICAgICAkc2NvcGUucHJldmlvdXNTdGF0ZSA9IHtzdGF0ZTokc3RhdGUuY3VycmVudC5uYW1lLHBhcmFtczp7aWQ6JHNjb3BlLnBhZ2VpZCxuYXZiYXJfaWQ6JHNjb3BlLm5hdmJhcl9pZCxzaG93UmV0dXJuTGluazp0cnVlfX07XHJcbiAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbj17Zm9ybV9kZWZpbml0aW9uOnRydWV9XHJcbiAgICAgICAgJHNjb3BlLmdyaWRzdGVyVHlwZT0ncGFnZSdcclxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzPXt9O1xyXG4gICAgICAgIC8vJHNjb3BlLm9yZ2FuaXNhdGlvbl9pZCA9ICAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIudWVwLk9yZ2FuaXNhdGlvblxyXG5cdFx0JHNjb3BlLm9yZ2FuaXNhdGlvbl9pZCA9ICAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXI/Lm9yZ2FuaXNhdGlvbj8uaWRcclxuICAgICAgICAkc2NvcGUuZ3NydmMucmVzZXRCb2R5QmdDb2xvcigpXHJcbiAgICAgICAgJHNjb3BlLnByZXZpZXdQYWdlUGF0aCA9IGluZGV4SnNvblsnY29uZmlnJ11bJ3ByZXZpZXdfcGFnZV9wYXRoJ11cclxuXHJcbiAgICAgICAgJHNjb3BlLm1lbnVfc2VydmljZSA9IE1lbnVTZXJ2aWNlXHJcbiAgICAgICAgJHNjb3BlLm1lbnVfc2VydmljZS5jbGVhclNpZGVNZW51KClcclxuICAgICAgICAkc2NvcGUuZW52X2lkID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRFbnZcclxuICAgICAgICAvKlxyXG5cdFx0JHRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgJCgnW2RhdGEtdG9nZ2xlPVwidG9vbHRpcG1cIl0nKS5wb3BvdmVyKCdzaG93JylcclxuICAgICAgICB9KTtcclxuIFxyXG4gICAgICAgIFxyXG4gICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICQoJ1tkYXRhLXRvZ2dsZT1cInRvb2x0aXBtXCJdJykucG9wb3ZlcignaGlkZScpXHJcbiAgICAgICAgfSw1MDAwKTtcclxuXHRcdCovXHJcblx0XHRpZiAoJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFBhZ2VNZW51KSB7XHJcblx0XHR9XHJcbiAgICAgICBcclxuXHQgICAgICAgICBcclxuICAgICAgICAkc2NvcGUuZmluZExpbmtJbmRleCA9IGZ1bmN0aW9uKCBsaW5rX3R5cGUsIHdoZXJldG9sb29rKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaT0wO2k8d2hlcmV0b2xvb2subGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2hlcmV0b2xvb2tbaV0uTGlua1R5cGU9PWxpbmtfdHlwZSkgcmV0dXJuIGk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgIH1cclxuXHRcdFxyXG5cdFx0JHNjb3BlLmZpbmRMaW5rSWQgPSBmdW5jdGlvbiggbGlua190eXBlLCB3aGVyZXRvbG9vaylcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDtpPHdoZXJldG9sb29rLmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdoZXJldG9sb29rW2ldLkxpbmtUeXBlPT1saW5rX3R5cGUpIHJldHVybiB3aGVyZXRvbG9va1tpXT8uaWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cdFx0XHJcbiAgICAgICAgICRzY29wZS5vcGVuUHJldmlld1BhZ2UgPSBmdW5jdGlvbigpXHJcbiAgICAgICAgeyAgIFxyXG4gICAgICAgICAgICBsZXQgcGFnZV9pZFxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnMuUHVibGljUGFnZSkgcGFnZV9pZCA9ICRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkLlVuaXF1ZVVybFxyXG4gICAgICAgICAgICBlbHNlIHBhZ2VfaWQgPSAkc2NvcGUucmVzb3VyY2UudWlkXHJcblxyXG4gICAgICAgICAgIGxldCBlbnZfZnJvbV91cmwgPSAkbG9jYXRpb24uc2VhcmNoKCkuZW52IFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgIGxldCB1cmwgPSAkc2NvcGUucHJldmlld1BhZ2VQYXRoK3BhZ2VfaWQrJy8nKyRzY29wZS5nc3J2Yy5yZXNvdXJjZUZvcm1WZXJzaW9uWyRzY29wZS5yZXNvdXJjZS51aWRdLk5ld1ZlcnNpb24rJz9yaW5zdGFuY2U9MCZlbnY9JytlbnZfZnJvbV91cmxcclxuXHJcbiAgICAgICAgICAgd2luZG93Lm9wZW4odXJsLCdfYmxhbmsnKVxyXG5cclxuICAgICAgICB9XHJcblxyXG5cdCAgICAkc2NvcGUucHJldmlld1BhZ2VMaW5rID0gZnVuY3Rpb24oKVxyXG4gICAgICAgIHsgICBcclxuICAgICAgICAgICAgbGV0IHBhZ2VfaWRcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzLlB1YmxpY1BhZ2UpIHBhZ2VfaWQgPSAkc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VFeHRlbmRlZC5VbmlxdWVVcmxcclxuICAgICAgICAgICAgZWxzZSBwYWdlX2lkID0gJHNjb3BlLnJlc291cmNlLnVpZFxyXG5cclxuICAgICAgICAgICBsZXQgZW52X2Zyb21fdXJsID0gJGxvY2F0aW9uLnNlYXJjaCgpLmVudiBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICByZXR1cm4gXCIvdnBhZ2UvXCIrcGFnZV9pZCsnLycrJHNjb3BlLmdzcnZjLnJlc291cmNlRm9ybVZlcnNpb25bJHNjb3BlLnJlc291cmNlLnVpZF0uTmV3VmVyc2lvbisnP3JpbnN0YW5jZT0wJmVudj0nK2Vudl9mcm9tX3VybFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJHNjb3BlLnByZXZpZXdQYWdlUGFyYW1zID0gZnVuY3Rpb24oKVxyXG4gICAgICAgIHsgICBcclxuICAgICAgICAgICAgbGV0IHBhZ2VfaWRcclxuICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzLlB1YmxpY1BhZ2UpIHBhZ2VfaWQgPSAkc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VFeHRlbmRlZC5VbmlxdWVVcmxcclxuICAgICAgICAgICAgZWxzZSBwYWdlX2lkID0gJHNjb3BlLnJlc291cmNlLnVpZFxyXG5cclxuICAgICAgICAgICAvLyAkc2NvcGUucHJldmlld1BhZ2VQYXJhbXMgPSB7cGFnZWlkOiBwYWdlX2lkLGFwcF9yZWY6dW5kZWZpbmVkLG9yZ2lkOiRzY29wZS5vcmdhbmlzYXRpb25faWQsdmVyc2lvbjokc2NvcGUuZ3NydmMucmVzb3VyY2VGb3JtVmVyc2lvblskc2NvcGUucmVzb3VyY2UudWlkXS5OZXdWZXJzaW9uLHJpbnN0YW5jZTowfVxyXG4gICAgICAgICAgICByZXR1cm4ge3BhZ2VpZDogcGFnZV9pZCxhcHBfcmVmOnVuZGVmaW5lZCxvcmdpZDokc2NvcGUub3JnYW5pc2F0aW9uX2lkLHZlcnNpb246JHNjb3BlLmdzcnZjLnJlc291cmNlRm9ybVZlcnNpb25bJHNjb3BlLnJlc291cmNlLnVpZF0uTmV3VmVyc2lvbixyaW5zdGFuY2U6MH1cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcblxyXG5cdCAgICRzY29wZS5zYXZlQXBwbGljYXRpb24yID0gZnVuY3Rpb24gKGlzRm9ybVZhbGlkKSBcclxuXHQgICB7XHJcblx0XHJcblx0XHRsZXQgbGlua19pZDEgPSAkc2NvcGUuZmluZExpbmtJZChcInBhZ2UtbWVudVwiLCAkc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VFeHRlbmRlZC5ybGlua3MpO1xyXG5cdFx0bGV0IGxpbmtfaWQyID0gJHNjb3BlLmZpbmRMaW5rSWQoXCJkZWZhdWx0LXBhZ2VcIiwgJHNjb3BlLnJlc291cmNlLlJlc291cmNlRXh0ZW5kZWQucmxpbmtzKTtcclxuXHJcblx0XHQkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUGFnZU1lbnUgPSAkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUGFnZU1lbnUgPz8geyBpZDogbnVsbCB9XHJcblx0XHQkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUGFnZSA9ICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRQYWdlID8/IHsgaWQ6IG51bGwgfVxyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMuaGVscFBhZ2UgPSAkc2NvcGUubG9jYWxWYXJzLmhlbHBQYWdlID8/IHsgaWQ6IG51bGwgfVxyXG4gICAgICAgIFxyXG5cdFx0JHNjb3BlLnJMaW5rcyA9IFtdXHJcbiAgICAgICAgaWYgKCRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRQYWdlTWVudS5pZCkgXHJcbiAgICAgICAgICAgICRzY29wZS5yTGlua3MucHVzaCh7J2lkJzpsaW5rX2lkMSxcclxuXHRcdFx0XHRcdFx0XHRcdCdSZXNvdXJjZTEnOiRzY29wZS5yZXNvdXJjZUlkLFxyXG5cdFx0XHRcdFx0XHRcdFx0J1Jlc291cmNlMic6JHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFBhZ2VNZW51LmlkLFxyXG5cdFx0XHRcdFx0XHRcdFx0J0xpbmtUeXBlJzoncGFnZS1tZW51JyxcclxuXHRcdFx0XHRcdFx0XHRcdCdTZWxlY3RWZXJzaW9uRGlyZWN0Jzokc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUGFnZU1lbnU/LlNlbGVjdFZlcnNpb25EaXJlY3QsXHJcblx0XHRcdFx0XHRcdFx0XHQncHVibGlzaGVkUmVzb3VyY2UnOiRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRQYWdlTWVudT8uc2VsZWN0ZWRQdWJsaXNoZWRSZXNvdXJjZSxcclxuXHRcdFx0XHRcdFx0XHRcdCdWZXJzaW9uJzokc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUGFnZU1lbnU/LnNlbGVjdGVkUHVibGlzaGVkUmVzb3VyY2U/LlZlcnNpb259KVxyXG5cdFx0XHRcclxuICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFBhZ2UuaWQpXHJcbiAgICAgICAgICAgICRzY29wZS5yTGlua3MucHVzaCh7J2lkJzpsaW5rX2lkMixcclxuXHRcdFx0XHRcdFx0XHRcdCdSZXNvdXJjZTEnOiRzY29wZS5yZXNvdXJjZUlkLFxyXG5cdFx0XHRcdFx0XHRcdFx0J1Jlc291cmNlMic6JHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFBhZ2UuaWQsXHJcblx0XHRcdFx0XHRcdFx0XHQnTGlua1R5cGUnOidkZWZhdWx0LXBhZ2UnLFxyXG5cdFx0XHRcdFx0XHRcdFx0J1NlbGVjdFZlcnNpb25EaXJlY3QnOiRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRQYWdlPy5TZWxlY3RWZXJzaW9uRGlyZWN0LFxyXG5cdFx0XHRcdFx0XHRcdFx0J3B1Ymxpc2hlZFJlc291cmNlJzokc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUGFnZT8uc2VsZWN0ZWRQdWJsaXNoZWRSZXNvdXJjZSxcclxuXHRcdFx0XHRcdFx0XHRcdCdWZXJzaW9uJzokc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUGFnZT8uc2VsZWN0ZWRQdWJsaXNoZWRSZXNvdXJjZT8uVmVyc2lvbn0pXHJcblxyXG4gICAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzLmhlbHBQYWdlLmlkKVxyXG4gICAgICAgICAgICAkc2NvcGUuckxpbmtzLnB1c2goeydpZCc6bGlua19pZDIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Jlc291cmNlMSc6JHNjb3BlLnJlc291cmNlSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Jlc291cmNlMic6JHNjb3BlLmxvY2FsVmFycy5oZWxwUGFnZS5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTGlua1R5cGUnOidoZWxwLXBhZ2UnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTZWxlY3RWZXJzaW9uRGlyZWN0Jzokc2NvcGUubG9jYWxWYXJzLmhlbHBQYWdlPy5TZWxlY3RWZXJzaW9uRGlyZWN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwdWJsaXNoZWRSZXNvdXJjZSc6JHNjb3BlLmxvY2FsVmFycy5oZWxwUGFnZT8uc2VsZWN0ZWRQdWJsaXNoZWRSZXNvdXJjZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVmVyc2lvbic6JHNjb3BlLmxvY2FsVmFycy5oZWxwUGFnZT8uc2VsZWN0ZWRQdWJsaXNoZWRSZXNvdXJjZT8uVmVyc2lvbn0pXHJcbiAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgIGxldCBhcHBfZGF0YSA9IHthcHBJZDokc2NvcGUucmVzb3VyY2UudWlkLCB2ZXJzaW9uOiRzY29wZS5yZXNvdXJjZS5OZXdWZXJzaW9uLCBkZXNjOiRzY29wZS5sb2NhbFZhcnMubmV3RGVzY3JpcHRpb24sIHJMaW5rczokc2NvcGUuckxpbmtzfVxyXG4gICAgICAgIGlmIChpc0Zvcm1WYWxpZCl7XHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUuckxpbmtzLmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuc2F2aW5nQXBwID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2Uuc2F2ZUFwcGxpY2F0aW9uMihhcHBfZGF0YSkudGhlbihcclxuXHRcdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIHsgICAgICAgXHJcblx0XHRcdFx0XHRcdCRzY29wZS5zYXZpbmdBcHAgPSBmYWxzZSAgIFxyXG5cdFx0XHRcdFx0XHRNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5kYXRhLm1zZywnc3VjY2VzcycpO1xyXG5cdFx0XHRcdFx0XHQkc2NvcGUuZ3NydmMucmVzb3VyY2VGb3JtVmVyc2lvblskc2NvcGUucmVzb3VyY2UudWlkXSA9IGRhdGEuZGF0YS5kYXRhXHJcblx0XHRcdFx0XHRcdCRzY29wZS5yZXNvdXJjZT1kYXRhLmRhdGEuZGF0YSBcclxuXHRcdFx0XHRcdH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG5cdFx0XHRcdFx0XHQkc2NvcGUuc2F2aW5nQXBwID0gZmFsc2VcclxuXHRcdFx0XHRcdFx0TWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0gIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdQbGVhc2Ugc2VsZWN0IGFwcGxpY2F0aW9uIG1lbnUgb3IgZGVmYXVsdCBwYWdlIHRvIHNhdmUhJywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5zYXZpbmdBcHAgPSBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnQXBwIGRlc2NyaXB0aW9uIGlzIG1hbmRhdG9yeSEnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgfTtcclxuXHJcbiAgICAkc2NvcGUuZ2V0UHVibGlzaGVkUmVzb3VyY2VzID0gZnVuY3Rpb24ocmVzb3VyY2UscHVibGlzaFR5cGUpe1xyXG5cdFxyXG4gICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLkdldFB1Ymxpc2hlZFJlc291cmNlc0J5VHlwZUlkKHJlc291cmNlLmlkLHB1Ymxpc2hUeXBlKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChkYXRhKSB7ICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnNlbGVjdGVkUmVzb3VyY2VzUHVibGlzaGVkTGlzdD09dW5kZWZpbmVkKSAkc2NvcGUuc2VsZWN0ZWRSZXNvdXJjZXNQdWJsaXNoZWRMaXN0PXt9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuc2VsZWN0ZWRSZXNvdXJjZXNQdWJsaXNoZWRMaXN0PT11bmRlZmluZWQpICRzY29wZS5zZWxlY3RlZFJlc291cmNlc1B1Ymxpc2hlZExpc3Q9e31cclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkUmVzb3VyY2VzUHVibGlzaGVkTGlzdFtyZXNvdXJjZS5pZF0gPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBmaWxsICdzZWxlY3QgdmVyc2lvbicgb3B0aW9ucyB0byBoYXZlIGJvdGggaWQgYW5kIG5hbWUgKGZvciBhbHJlYWR5IHNhdmVkIGRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNvdXJjZS5TZWxlY3RWZXJzaW9uRGlyZWN0KXsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwdWJsaXNoZWRMaXN0ID0gJHNjb3BlLnNlbGVjdGVkUmVzb3VyY2VzUHVibGlzaGVkTGlzdFtyZXNvdXJjZS5pZF0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlZExpc3QuZm9yRWFjaCggKGl0ZW0pPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uVmVyc2lvbiA9PSByZXNvdXJjZT8uVmVyc2lvbikgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb3VyY2Uuc2VsZWN0ZWRQdWJsaXNoZWRSZXNvdXJjZSA9IGl0ZW1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUGFnZU1lbnUuc2VsZWN0ZWRQdWJsaXNoZWRSZXNvdXJjZSA9IGl0ZW0gLy9UT0RPICAtIHBvcHJhdml0aSBkYSByYWRpIGkgYmV6IHRvZ2FcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgIFxyXG4gICAgICAgICAgICB9KTtcclxuXHR9XHJcblxyXG4gICAgICAgICRzY29wZS5wYWdlVHlwZUxpc3QgPSBbe2lkOjEsbmFtZTonU3lzdGVtIHBhZ2UnLHZhbHVlOidzeXN0ZW0nfSx7aWQ6MixuYW1lOidVc2VyIHBhZ2UnLHZhbHVlOid1c2VyJ31dXHJcblxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIC8qXHJcbiAgICAgICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzQnlOYW1lKCdwYWdldHlwZXMnLGxhbmcpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5wYWdlVHlwZUxpc3QgPSBkYXRhLmRhdGE7XHJcblx0XHRcdFx0ICAvL25hcHVuaSBncmlkIHMgZGVmaW5pY2lqYW1hIHJlc3Vyc2FcclxuXHRcdFx0XHRcclxuICAgICAgICB9KTtcclxuICAgICAgICAqL1xyXG4gICAgICAgIFxyXG4gICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUobGFuZywncGFnZW1lbnUnKS50aGVuKFxyXG5cdFx0XHRcdFx0XHRmdW5jdGlvbihkYXRhKSB7XHQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnBhZ2VNZW51TGlzdCA9IFt7aWQ6MCwgbmFtZTogJ05vIG1lbnUgc2VsZWN0ZWQnfV0uY29uY2F0KGRhdGEuZGF0YSlcclxuXHRcdFx0XHQgXHJcblx0XHRcdFx0XHRcdFx0fSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcblx0XHQgfSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLkdldFJlc291cmNlUGFyYW1zKCkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZVR5cGVMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZVR5cGVzTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgZm9ybV9zYXZlZCA9IGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURlZmluaXRpb25TdGF0ZS5zdWJqZWN0LnNldFN0YXRlQ2hhbmdlcyA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EZWZpbml0aW9uU3RhdGUuc3ViamVjdC5ub3RpZnlPYnNlcnZlcnMoXCJmb3JtU2F2ZWRcIik7XHJcblxyXG4gICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICBsZXQgZm9ybURlZmluaXRpb25TdGF0ZSxmb3JtRGVmaW5pdGlvblN0YXRlTmFtZTsgICBcclxuICAgICAgICBmb3JtRGVmaW5pdGlvblN0YXRlPSAkc2NvcGUua3NtLmFkZFN1YmplY3QoJ2Zvcm1EZWZpbml0aW9uU3RhdGUnKyRzY29wZS5yZXNvdXJjZUlkKydpJyxudWxsKTtcclxuICAgICAgICBmb3JtRGVmaW5pdGlvblN0YXRlTmFtZSA9IGZvcm1EZWZpbml0aW9uU3RhdGUuc3ViamVjdC5uYW1lO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgbGV0IGFjdGlvbl92YWx1ZV9jaGFuZ2VkID0gJHNjb3BlLmtzbS5hZGRBY3Rpb24oZm9ybURlZmluaXRpb25TdGF0ZU5hbWUsXCJmb3JtU2F2ZWRcIixmb3JtX3NhdmVkKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5QcmVwYXJlUHVibGlzaDJQcm9kID0gZnVuY3Rpb24oKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UucHJlcGFyZVB1Ymxpc2gyUHJvZCgkc2NvcGUucmVzb3VyY2VJZCwkc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VDb2RlLCRzY29wZS5yZXNvdXJjZS5WZXJzaW9uKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICRzY29wZS5QdWJsaXNoMlByb2QgPSBmdW5jdGlvbigpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAkc2NvcGUucHVibGlzaGluZ0RhdGFzZXQ9dHJ1ZVxyXG4gICAgICAgICAgICBsZXQgcmVzb3VyY2VzID0gW3t1aWQ6JHNjb3BlLnJlc291cmNlSWQsaXRlbVN1YlR5cGU6JHNjb3BlLnJlc291cmNlLlJlc291cmNlQ29kZSx2ZXJzaW9uOiAkc2NvcGUuZ3NydmMucmVzb3VyY2VGb3JtVmVyc2lvblskc2NvcGUucmVzb3VyY2UudWlkXT8uVmVyc2lvbiB9XVxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlPT11bmRlZmluZWQpICRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZT17fVxyXG4gICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5wdWJsaXNoMlByb2QocmVzb3VyY2VzKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEuZGF0YS5tc2csJ3N1Y2Nlc3MnKTsgXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucHVibGlzaGVkUmVzb3VyY2UuUHVibGlzaGVkID0gZGF0YS5kYXRhLlB1Ymxpc2hlZFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlLkRlcGxveWVkID0gZGF0YS5kYXRhLkRlcGxveWVkXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucHVibGlzaGVkUmVzb3VyY2UuVmVyc2lvbiA9IGRhdGEuZGF0YS5WZXJzaW9uXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucHVibGlzaGVkUmVzb3VyY2UuUHVibGlzaGVkVmVyc2lvbiA9ICBkYXRhPy5kYXRhPy5QdWJsaXNoZWRWZXJzaW9uXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucHVibGlzaGVkUmVzb3VyY2UuRGF0ZVRpbWUgPSBkYXRhLmRhdGEuRGF0ZVRpbWVcclxuICAgICAgICAgICAgICAgICRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZS5QdWJsaXNoZWRCeSA9IGRhdGEuZGF0YS5QdWJsaXNoZWRCeVxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlLkNoYW5nZWREYXRlVGltZSA9IGRhdGEuZGF0YS5DaGFuZ2VkRGF0ZVRpbWVcclxuICAgICAgICAgICAgICAgICRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZS5DaGFuZ2VkQnkgPSBkYXRhLmRhdGEuQ2hhbmdlZEJ5XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUucHVibGlzaGVkUmVzb3VyY2UuY291bnQgPSAwIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hlZFJlc291cmNlLnJtZCA9IGRhdGEuZGF0YS5ybWRcclxuICAgICAgICAgICAgICAgICRzY29wZS5wdWJsaXNoaW5nRGF0YXNldD1mYWxzZVxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnJlc291cmNlRm9ybVZlcnNpb25bJHNjb3BlLnJlc291cmNlLnVpZF0gPSBkYXRhLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnB1Ymxpc2hpbmdEYXRhc2V0PWZhbHNlICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgJHNjb3BlLmdldFJlc291cmNlRm9ybSA9IGZ1bmN0aW9uICgpIHsvLyBpbiBwYWdlc0RlZmluaXRpb25DdHJsXHJcblxyXG4gICAgICAgXHJcbiAgICAgICAgJHNjb3BlLnBhZ2VEb3dubG9hZGVkPXRydWU7XHJcbiAgICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgICAvKlxyXG4gICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VGb3JtKCRzY29wZS5yZXNvdXJjZUlkLCdpJyxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YT8uZGF0YT8ud2lkZ2V0cyAmJiBkYXRhLmRhdGEud2lkZ2V0cy5sZW5ndGg+MCkgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzPXtsYXlvdXQ6ZGF0YS5kYXRhLndpZGdldHN9O1xyXG4gICAgICAgICAgICAgICAgICAgICB9IGVsc2UgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGFzaGJvYXJkLndpZGdldHM9e2xheW91dCA6IEdyaWRzdGVyU2VydmljZS5nZXRFbXB0eVRhc2tGb3JtKCl9O1xyXG4gICBcclxuICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbj0gZGF0YS5kYXRhLnJlc291cmNlRGVmaW5pdGlvbjsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuZm9ybVBhcmFtcyA9IHtmb3JtVmlld1R5cGU6MSxmb3JtTG9ja2VkOnRydWV9O1xyXG4gICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1fZGVmaW5pdGlvbiA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX3R5cGU9J2knXHJcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VEZWZJZF9pZCA9ICRzY29wZS5yZXNvdXJjZUlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmFkbWluSGVhZGVyTGFiZWw9XCJTZWxlY3QgXCIrJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZUNvZGUrXCIgYWRtaW5pc3RyYXRvcnNcIjsgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0Rm9ybVZpZXdUeXBlKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucGFnZURvd25sb2FkZWQgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgXHJcbiAgICAgIH07XHJcblxyXG4gICAgICAgJHNjb3BlLnNhdmVQYWdlRm9ybSA9IGZ1bmN0aW9uICgpIHtcclxuXHJcbiAgICAgICAgICAgICAgICRzY29wZS5zYXZpbmdGb3JtID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2Uuc2F2ZVJlc291cmNlRm9ybSgkc2NvcGUuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0LCRzY29wZS5yZXNvdXJjZUlkLCdpJykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEubXNnLGRhdGEubXNnVHlwZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuRm9ybVZlcnNpb24gPSBkYXRhLnZlcnNpb247XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuZGF0YS5mb3JtRGF0YS5sZW5ndGg+MCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5kYXNoYm9hcmQud2lkZ2V0cz17bGF5b3V0OmRhdGEuZGF0YS5mb3JtRGF0YX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24oZm9ybURlZmluaXRpb25TdGF0ZU5hbWUsXCJmb3JtU2F2ZWRcIixkYXRhLm5ld19pdGVtcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2F2aW5nRm9ybSA9IGZhbHNlO1xyXG4gICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2F2aW5nRm9ybSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgJHNjb3BlLnNldFBhZ2VEZWYgPSBmdW5jdGlvbigpe1xyXG4gICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlLmhlYWRlckxhYmVsPVwiUGFnZSBwZXJtaXNzaW9uc1wiO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlLnVzZXJzTGFiZWw9XCJVc2Vyc1wiO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlLmdyb3Vwc0xhYmVsPVwiR3JvdXBzXCI7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VFeHRlbmRlZC5QYWdlVHlwZSE9IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkLlBhZ2VUeXBlLnZhbHVlPT1cInVzZXJcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkLlRhcmdldCA9IFwiYXBwLm5hdmJhci52cGFnZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycy5QdWJsaWNQYWdlKSAkc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VFeHRlbmRlZC5UYXJnZXQgPSBcImFwcC5uYXZiYXIucHVibGljLXZwYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuZGlzYWJsZWRUYXJnZXQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUucGFnZS5UYXJnZXQgPSBcImFwcC5uYXZiYXIudnBhZ2VcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuZGlzYWJsZWRUYXJnZXQgPSBmYWxzZTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcG9zID0gJHNjb3BlLnBhZ2VUeXBlTGlzdC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS52YWx1ZTsgfSkuaW5kZXhPZihcInVzZXJcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3M+PTApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VFeHRlbmRlZC5QYWdlVHlwZSA9ICRzY29wZS5wYWdlVHlwZUxpc3RbcG9zXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VFeHRlbmRlZC5UYXJnZXQgPSBcImFwcC5uYXZiYXIudnBhZ2VcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnMuUHVibGljUGFnZSkgJHNjb3BlLnJlc291cmNlLlJlc291cmNlRXh0ZW5kZWQuVGFyZ2V0ID0gXCJhcHAubmF2YmFyLnB1YmxpYy12cGFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlLmRpc2FibGVkVGFyZ2V0ID0gdHJ1ZTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2F2ZVBhZ2VEZWYoJHNjb3BlLnJlc291cmNlLCdpbmZvJylcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgXHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICAgJHNjb3BlLmdldFJlc291cmNlRGVmaW5pdGlvbiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZBbGwoJHNjb3BlLnJlc291cmNlSWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZSA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZS5yZXNvdXJjZURlZkRvd25sb2FkZWQgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZS5hZG1pbkhlYWRlckxhYmVsID0gJ1BhZ2UgcGVybWlzc2lvbnMnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycz8uQWNjZXNzVXNlcnM9PXVuZGVmaW5lZCkgJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnMuQWNjZXNzVXNlcnM9W11cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycz8uQWNjZXNzR3JvdXBzPT11bmRlZmluZWQpICRzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzLkFjY2Vzc0dyb3Vwcz1bXVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnNldFJlc291cmNlRm9ybVZlcnNpb24oJHNjb3BlLnJlc291cmNlLnVpZCx7VmVyc2lvbjokc2NvcGUucmVzb3VyY2UuVmVyc2lvbixQdWJsaXNoZWQ6JHNjb3BlLnJlc291cmNlLlB1Ymxpc2hlZCxOZXdWZXJzaW9uOiRzY29wZS5yZXNvdXJjZS5OZXdWZXJzaW9ufSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLlByZXBhcmVQdWJsaXNoMlByb2QoKSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLkdldFdpZGdldFRvb2xib3goJHNjb3BlLnJlc291cmNlLlJlc291cmNlQ29kZSkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0V2lkZ2V0VG9vbGJveEl0ZW1zKGRhdGEuZGF0YSwkc2NvcGUuZ3JpZHN0ZXJUeXBlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdldFJlc291cmNlRm9ybSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNldFBhZ2VEZWYoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgLypcclxuICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUobGFuZywndGFzaycpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZUxpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZXNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICB9KTsgICAgICAgIFxyXG4gICAgICAgICovXHJcbiAgICAgICAgJHNjb3BlLmdldFJlc291cmNlRGVmaW5pdGlvbigpO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAkc2NvcGUuc2F2ZVJlc291cmNlRGVmID0gZnVuY3Rpb24gKGlzVmFsaWQpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYgKGlzVmFsaWQpXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLnNhdmVSZXNvdXJjZURlZkFsbE5ldygkc2NvcGUucmVzb3VyY2UpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXM9PT0yMDAgIHx8IGRhdGEuc3RhdHVzPT09MjAxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoXCJQYWdlIHNhdmVkIHN1Y2Nlc3NmdWx5XCIsJ3N1Y2Nlc3MnKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiUGxlYXNlIGVudGVyIHJlcXVpcmVkIGRhdGFcIiwnd2FybmluZycpOyBcclxuICAgICAgICAgIH1cclxuICAgICAgICB9OyAgICAgIFxyXG4gICAgICBcclxuICAgICAgICAkc2NvcGUuc2hvd0hpZGVQcm9wZXJ0aWVzID0gZnVuY3Rpb24odmFsdWUpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0RmllbGRQcm9wZXJ0aWVzT3BlbmVkKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLnNob3dGaWVsZFByb3BlcnRpZXM9JHNjb3BlLmdzcnZjLmdldEZpZWxkUHJvcGVydGllc09wZW5lZCgpO1xyXG4gICAgICAgXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgJHNjb3BlLnNob3dIaWRlUHJvcGVydGllcyhmYWxzZSlcclxuXHJcbiAgICAgICAgJHNjb3BlLiR3YXRjaCgnZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzKCknLGZ1bmN0aW9uKG5ld1ZhbHVlLG9sZFZhbHVlKXtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWUhPW9sZFZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkRmllbGQ9JHNjb3BlLmdzcnZjLmdldEZpZWxkUHJvcGVydGllcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2hvd0ZpZWxkUHJvcGVydGllcyA9ICRzY29wZS5nc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgJHNjb3BlLnJldHVyblRvUHJldmlvdXNQYWdlID0gZnVuY3Rpb24oKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGxldCBwYWdlID0gXCJhcHAubmF2YmFyLnJlc291cmNlcy5saXN0XCI7XHJcbiAgICAgICAgICAgICAgICAvL2xldCBuYXZiYXIgPSBNZW51U2VydmljZS5nZXRQYWdlTmF2YmFyQnlOYW1lKHBhZ2UpO1xyXG4gICAgICAgICAgICAgICAgJHN0YXRlLmdvKHBhZ2Use30pO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgXHJcbiAgICAgICAgJHNjb3BlLnNhdmVQYWdlRGVmID0gZnVuY3Rpb24odmFsaWQsc2F2ZV90eXBlKXtcclxuICAgICAgICAgICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICAgICAgICAgIGlmICh2YWxpZClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2Uuc2F2ZVBhZ2VEZWYoJHNjb3BlLnJlc291cmNlLGxhbmcsc2F2ZV90eXBlKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEuZGF0YSwnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5zYXZlUGFnZU1lbnUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgICBsZXQgbGlua19pZDE9bnVsbFxyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlLlJlc291cmNlRXh0ZW5kZWQucmxpbmtzWzBdICYmICRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkLnJsaW5rc1swXS5pZCApICBsaW5rX2lkMSA9ICRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkLnJsaW5rc1swXS5pZDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICRzY29wZS5yTGlua3M9W3snaWQnOmxpbmtfaWQxLFxyXG5cdFx0XHRcdFx0XHQnUmVzb3VyY2UxJzokc2NvcGUucmVzb3VyY2UudWlkLFxyXG5cdFx0XHRcdFx0XHQnUmVzb3VyY2UyJzokc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUGFnZU1lbnUuaWQsXHJcblx0XHRcdFx0XHRcdCdMaW5rVHlwZSc6J3BhZ2UtbWVudScsXHJcblx0XHRcdFx0XHRcdCdTZWxlY3RWZXJzaW9uRGlyZWN0Jzokc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUGFnZU1lbnU/LlNlbGVjdFZlcnNpb25EaXJlY3QsXHJcblx0XHRcdFx0XHRcdH1dO1xyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0aWYgKCRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRQYWdlTWVudT8uU2VsZWN0VmVyc2lvbkRpcmVjdCkge1xyXG5cdFx0XHRcdFx0JHNjb3BlLnJMaW5rc1swXS5wdWJsaXNoZWRSZXNvdXJjZSA9ICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRQYWdlTWVudT8uc2VsZWN0ZWRQdWJsaXNoZWRSZXNvdXJjZVxyXG5cdFx0XHRcdFx0JHNjb3BlLnJMaW5rc1swXS5WZXJzaW9uID0gJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFBhZ2VNZW51Py5zZWxlY3RlZFB1Ymxpc2hlZFJlc291cmNlPy5WZXJzaW9uXHRcclxuXHRcdFx0fVxyXG5cdFx0XHRcclxuXHRcdFx0XHJcblx0XHRcdFxyXG4gICAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLnNhdmVSZXNvdXJjZUxpbmtzKCRzY29wZS5yTGlua3MpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEubXNnLCdzdWNjZXNzJyk7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLmRhdGEubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgXHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG5cdCAgXHJcblx0ICBcclxuICAgICRzY29wZS5uZXdWZXJzaW9uID0gZnVuY3Rpb24oKVxyXG4gICAge1xyXG4gICAgICAgICRzY29wZS5jcmVhdGluZ05ld1ZlcnNpb249dHJ1ZVxyXG5cclxuICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5TZXROZXdSZXNvdXJjZVZlcnNpb24oJHNjb3BlLnJlc291cmNlLmlkKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXR1cz09MjAwKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuTmV3VmVyc2lvbiA9IGRhdGEuZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZS5QdWJsaXNoZWQ9ZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZSBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5kYXRhLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5jcmVhdGluZ05ld1ZlcnNpb249ZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuaGFzQ2hhbmdlcz1mYWxzZVxyXG4gICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jcmVhdGluZ05ld1ZlcnNpb249ZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgfTtcclxuXHJcbiAgICAgICAgJHNjb3BlLnNob3dNb2RhbCA9IGZ1bmN0aW9uIChwX3R5cGUpIHtcclxuICAgICAgICAgICAgJCgnI3BhZ2VQdWJsaXNoJykubW9kYWwoJ3Nob3cnKVxyXG4gICAgICAgICAgICAkc2NvcGUubW9kYWxBY3Rpb249cF90eXBlXHJcbiAgICAgICAgICAgICRzY29wZS5uZXdQdWJsaXNoVmVyc2lvbiA9ICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uTmV3VmVyc2lvblxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAkc2NvcGUucGFnZUdyaWRJdGVtc1ByZXZpZXcgPSBbXTtcclxuICAgICAgXHJcbiAgICAgICRzY29wZS5jYWxjUm93U2l6ZSA9IGZ1bmN0aW9uKHJlYnVpbGRHcmlkKVxyXG4gICAgICB7XHJcbiAgICAgICAgJHNjb3BlLnJvd1NpemVzPVwiXCI7XHJcbiAgICAgICAgZm9yIChsZXQgaT0wO2k8JHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnMuZ3JpZC5Ob09mUm93cztpKyspIHtcclxuICAgICAgICAgLy8kc2NvcGUucm93U2l6ZXMgPSAkc2NvcGUucm93U2l6ZXMrXCIgYXV0b1wiO1xyXG4gICAgICAgICAgJHNjb3BlLnJvd1NpemVzID0gJHNjb3BlLnJvd1NpemVzKyBcIm1pbm1heCgwLDFmcilcIjsgLy9UT0RPIC0gemJvZyBvdmVyZmxvd2EgdGFibGljZSB1IGdyaWR1LCB2aWRqZXRpIG5lZ2F0aXZuZSBlZmVrdGVcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHJlYnVpbGRHcmlkKSAkc2NvcGUucmVidWlsZEdyaWQoKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAkc2NvcGUuY2FsY0NvbHVtblNpemUgPSBmdW5jdGlvbihyZWJ1aWxkR3JpZClcclxuICAgICAge1xyXG4gICAgICAgICRzY29wZS5jb2x1bW5TaXplcz1cIlwiO1xyXG4gICAgICAgIGZvciAobGV0IGk9MDtpPCRzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzLmdyaWQuTm9PZkNvbHVtbnM7aSsrKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIC8vICRzY29wZS5jb2x1bW5TaXplcyA9ICRzY29wZS5jb2x1bW5TaXplcytcIiBhdXRvXCI7XHJcbiAgICAgICAgICAkc2NvcGUuY29sdW1uU2l6ZXMgPSAkc2NvcGUuY29sdW1uU2l6ZXMrXCJtaW5tYXgoMCwxZnIpXCI7Ly9UT0RPIC0gemJvZyBvdmVyZmxvd2EgdGFibGljZSB1IGdyaWR1LCB2aWRqZXRpIG5lZ2F0aXZuZSBlZmVrdGVcclxuICAgICAgICB9ICAgIFxyXG4gICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICAgaWYgKHJlYnVpbGRHcmlkKSAkc2NvcGUucmVidWlsZEdyaWQoKTsgXHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgJHNjb3BlLkJ1aWxkR3JpZCA9IGZ1bmN0aW9uKGxvYWRGcm9tREIpXHJcbiAgICAgICB7XHJcbiAgICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICAvKiAkc2NvcGUucGFnZUdyaWRJdGVtc1ByZXZpZXcubGVuZ3RoPTA7XHJcbiAgICAgICAgIGxldCBpdGVtTGVuZ3RoID0gJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnMuZ3JpZC5Ob09mUm93cyokc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycy5ncmlkLk5vT2ZDb2x1bW5zO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICBmb3IgKGxldCBqPTA7ajxpdGVtTGVuZ3RoO2orKykge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnBhZ2VHcmlkSXRlbXNQcmV2aWV3LnB1c2goe2lkOmorMX0pO1xyXG4gICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgaWYgKGxvYWRGcm9tREIgPT0gZmFsc2UpIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLkJ1aWxkR3JpZDIoKTtcclxuICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUucmVidWlsZEdyaWQgPSBmdW5jdGlvbigpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycy5wYWdlR3JpZEl0ZW1zPT11bmRlZmluZWQpICRzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzLnBhZ2VHcmlkSXRlbXM9W107XHJcbiAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzLnBhZ2VHcmlkSXRlbXMubGVuZ3RoPTA7XHJcbiAgICAgICAgICAgIGxldCBpdGVtTGVuZ3RoID0gJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnMuZ3JpZC5Ob09mUm93cyokc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycy5ncmlkLk5vT2ZDb2x1bW5zO1xyXG4gICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnMucGFnZUdyaWRJdGVtcy5sZW5ndGg+IGl0ZW1MZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdEYXRhIGxvc3MgZXJyb3IgJywnZXJyb3InKTsgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSAge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaj0wO2o8aXRlbUxlbmd0aDtqKyspIHtcclxuICAgICAgICAgICAgICAgICAgIC8vaWYgKGo9PTApIFxyXG4gICAgICAgICAgICAgICAgICAgICAvLyAgJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnMucGFnZUdyaWRJdGVtcy5wdXNoKHtpZDpqKzEsbGF5b3V0OnRydWV9KTsgXHJcbiAgICAgICAgICAgICAgICAgIC8vIGVsc2UgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnMucGFnZUdyaWRJdGVtcy5wdXNoKHtpZDpqKzEsbGF5b3V0OmZhbHNlfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycy5wYWdlR3JpZEl0ZW1zLnB1c2goe2lkOmorMSxsYXlvdXQ6ZmFsc2V9KTsgLy9NSUdPUiBUT0RPIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICBcclxuICAgICAgICAkc2NvcGUuQ3JlYXRlRGVsZXRlTGF5b3V0Qm94ID0gZnVuY3Rpb24oYWN0aW9uLGluZGV4KVxyXG4gICAgICAgIHtcclxuICAgICAgICAkc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycy5wYWdlR3JpZEl0ZW1zW2luZGV4XS5sYXlvdXQ9YWN0aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgJHNjb3BlLlBhZ2VUeXBlQ2hhbmdlZCA9IGZ1bmN0aW9uKGl0ZW0sbW9kZWwpe1xyXG4gICAgICAgXHJcbiAgICAgICAgICAgIGlmIChpdGVtLnZhbHVlPT1cInVzZXJcIikgIHtcclxuICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VFeHRlbmRlZC5UYXJnZXQgPSBcImFwcC5uYXZiYXIudnBhZ2VcIjtcclxuICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuZGlzYWJsZWRUYXJnZXQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9ZWxzZSB7XHJcbiAgICAgICAgICAgICAgLy8kc2NvcGUucGFnZS5UYXJnZXQgPSBcImFwcC5uYXZiYXIudnBhZ2VcIjtcclxuICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2UuZGlzYWJsZWRUYXJnZXQgPSBmYWxzZTsgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgfTsgIFxyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgJHNjb3BlLmxvYWRTZWxlY3RlZFBhZ2UgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICAvL3doZW4gcGFnZU1lbnUgJiBybGlua3MgYXJlIGRvd25sb2FkZWQgZnJvbSBzZXJ2ZXJcclxuXHRcclxuICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5sb2FkZWRTZWxlY3RlZFBhZ2UgPSB0cnVlXHJcblxyXG5cdFx0ICAgXHJcblx0XHQgICAvL3NlbGVjdGVkUmVzb3VyY2VzUHVibGlzaGVkTGlzdFtsb2NhbFZhcnMuc2VsZWN0ZWRQYWdlTWVudS5pZF1cclxuICAgICAgICBcclxuXHRcdC8vZGVidWdnZXJcclxuICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFBhZ2VNZW51ID0gJHNjb3BlLmxvY2FsVmFycy5wYWdlTWVudUxpc3QuZmlsdGVyKCBpdGVtID0+IGl0ZW0uaWQgPT0gJHNjb3BlLnJlc291cmNlLlJlc291cmNlRXh0ZW5kZWQucmxpbmtzWzBdLlJlc291cmNlMiApWzBdO1xyXG5cdFx0ICRzY29wZS5sb2NhbFZhcnMuc2VsZWN0ZWRQYWdlTWVudS5TZWxlY3RWZXJzaW9uRGlyZWN0ID0gJHNjb3BlLnJlc291cmNlLlJlc291cmNlRXh0ZW5kZWQucmxpbmtzWzBdLlJlc291cmNlMl9WZXJzaW9uID8gdHJ1ZSA6IGZhbHNlXHJcblx0XHQgIFxyXG5cdFx0IGlmICgkc2NvcGUubG9jYWxWYXJzLnNlbGVjdGVkUGFnZU1lbnUuaWQpIHtcclxuXHRcdFx0ICRzY29wZS5nZXRQdWJsaXNoZWRSZXNvdXJjZXMoJHNjb3BlLmxvY2FsVmFycy5zZWxlY3RlZFBhZ2VNZW51LCdhbGwnKVxyXG5cdFx0IH1cclxuXHRcdCAvL3Njb3BlKCkubG9jYWxWYXJzLnNlbGVjdGVkUGFnZU1lbnUuc2VsZWN0ZWRQdWJsaXNoZWRSZXNvdXJjZVxyXG4gICAgIH1cclxuICAgICBcclxuICBcclxuICAgICAgICAgXHJcbiAgICBcclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwYWdlc0Zvcm1DdHJsICgkc2NvcGUsICRyb290U2NvcGUsIGRyYWd1bGFyU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSxVc2VyU2VydmljZSxHcmlkc3RlclNlcnZpY2UsUHJvY2Vzc2luZ1NlcnZpY2UsTWVzc2FnaW5nU2VydmljZSwkdGltZW91dCwkc3RhdGVQYXJhbXMsJGVsZW1lbnQpIHtcclxuICAgIFxyXG4gICAgICAgICRzY29wZS5DVFJMPSdwYWdlc0Zvcm1DdHJsJztcclxuICAgICAgICAkc2NvcGUuZ3JpZHN0ZXJUeXBlID1cInBhZ2VcIjtcclxuXHJcbiAgICAgICAgJHNjb3BlLnJlc291cmNlSWQ9JHN0YXRlUGFyYW1zLmlkO1xyXG4gICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICRzY29wZS5kYXNoYm9hcmQud2lkZ2V0cyA9IEdyaWRzdGVyU2VydmljZS5nZXRFbXB0eVRhc2tGb3JtKCk7XHJcbiAgICAgICAgJHNjb3BlLmZvcm1EZWZpbml0aW9uPXRydWU7XHJcbiAgICAgICAgJHNjb3BlLmdzcnZjPUdyaWRzdGVyU2VydmljZVxyXG4gICAgICAgICRzY29wZS5nc3J2Yy5yZXNldEJvZHlCZ0NvbG9yKClcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUuZ2V0UmVzb3VyY2VGb3JtID0gZnVuY3Rpb24gKCkgey8vIGluIHBhZ2VzRm9ybUN0cmxcclxuICAgICAgICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VGb3JtKCRzY29wZS5yZXNvdXJjZUlkLCdpJyxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhLndpZGdldHMubGVuZ3RoPjApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5kYXNoYm9hcmQud2lkZ2V0cz1kYXRhLmRhdGEud2lkZ2V0cztcclxuICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uPSBkYXRhLmRhdGEucmVzb3VyY2VEZWZpbml0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgIERyYWcgQW5kIERyb3AgZHJhZ3VsYXJcclxuICAgICAgICAgICAgICAgICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9ICRlbGVtZW50LmNoaWxkcmVuKCkuZXEoMCkuY2hpbGRyZW4oKS5lcSgyKS5jaGlsZHJlbigpLmVxKDApLCB3aWRnZXRzID0gJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzOyAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFndWxhclNlcnZpY2UoY29udGFpbmVyWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVTcGFjZTogJ3Jvdy1sYXlvdXQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiB7IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmVydE9uU3BpbGw6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcnNNb2RlbDogd2lkZ2V0cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlczogZnVuY3Rpb24gKGVsLCBjb250YWluZXIsIGhhbmRsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZS5jbGFzc0xpc3QuY29udGFpbnMoXCJyb3ctXCIrJHNjb3BlLmdyaWRzdGVyVHlwZStcIi1oYW5kbGVcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpIHskc2NvcGUuZm9ybUxvYWRlZD10cnVlO30sMTAwMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICB9O1xyXG4gIFxyXG4gICAgICBpZiAoJHNjb3BlLnJlc291cmNlSWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgJHNjb3BlLmdldFJlc291cmNlRm9ybSgpOyAgXHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgLy8gICAgICAgICAgIFNBVkUgUEFHRSBGT1JNIERFRklOSVRJT05cclxuICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgXHJcbiAgICAkc2NvcGUuc2F2ZVBhZ2VGb3JtID0gZnVuY3Rpb24gKGlzVmFsaWQpIHtcclxuICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgIC8vY29kZVxyXG4gICAgXHJcbiAgICAgICAgICRzY29wZS5hY3Rpdml0eS5hY3Rpdml0eU1lc3NhZ2UgPSBQcm9jZXNzaW5nU2VydmljZS5zZXRBY3Rpdml0eU1zZygnU2F2aW5nIGZvcm0gZm9yIHBhZ2UnKyRzY29wZS5yZXNvdXJjZUlkKTtcclxuICAgICAgICAgXHJcbiAgICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLnNhdmVSZXNvdXJjZUZvcm0oJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzLCRzY29wZS5yZXNvdXJjZUlkLCdpJykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGFzaGJvYXJkLndpZGdldHMgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgJHNjb3BlLmFjdGl2aXR5LmFjdGl2aXR5TWVzc2FnZSA9IFByb2Nlc3NpbmdTZXJ2aWNlLnNldEFjdGl2aXR5TXNnKFwiXCIpO1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICBcclxuICAgIFxyXG4gICAgfVxyXG4gICAgXHJcbmV4cG9ydCBmdW5jdGlvbiBtZW51c0RlZmluaXRpb25DdHJsICgkc2NvcGUsICRyb290U2NvcGUsJHN0YXRlLCBkcmFndWxhclNlcnZpY2UsUmVzb3VyY2VzRGF0YVNlcnZpY2UsTWVudVNlcnZpY2UsQ29kZXNTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSxQcm9jZXNzaW5nU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlLCR0aW1lb3V0LCRzdGF0ZVBhcmFtcywkZWxlbWVudCkge1xyXG4gIFxyXG4gICAgXHJcbiAgICAgIFxyXG4gICAgICAkc2NvcGUuQ1RSTD0nbWVudXNEZWZpbml0aW9uQ3RybCc7XHJcbiAgICAgICRzY29wZS5tZW51X3NlcnZpY2U9TWVudVNlcnZpY2U7XHJcbiAgICAgICRzY29wZS5tZW51cz0ge2VkaXRNb2RlOiAkc2NvcGUubWVudV9zZXJ2aWNlLmdldE1lbnVFZGl0TW9kZSgpLHNob3dOYXZiYXI6JHNjb3BlLm1lbnVfc2VydmljZS5uYXZiYXJTZWxlY3RlZCxzaG93U2lkZU1lbnU6JHNjb3BlLm1lbnVfc2VydmljZS5zaWRlTWVudVNlbGVjdGVkfTtcclxuICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgIFxyXG4gICAgICAkc2NvcGUubWVudV9zZXJ2aWNlLmNsZWFyU2lkZU1lbnUoKVxyXG5cclxuICAgICAgJHNjb3BlLmxvY2FsVmFycz17bWFudWFsUGFnZVNlbGVjdDp0cnVlfTtcclxuICAgICAgJHNjb3BlLmNoYW5nZUVkaXRNb2RlID0gZnVuY3Rpb24oKXtcclxuICAgIFxyXG4gICAgXHJcbiAgICAgICAgICRzY29wZS5tZW51cy5lZGl0TW9kZSA9ICEkc2NvcGUubWVudXMuZWRpdE1vZGU7XHJcbiAgICAgICAgICRzY29wZS5tZW51X3NlcnZpY2Uuc2V0TWVudUVkaXRNb2RlKCRzY29wZS5tZW51cy5lZGl0TW9kZSk7XHJcbiAgICAgICAgIGlmICgkc2NvcGUubWVudXMuZWRpdE1vZGUpICRzY29wZS5tZW51X3NlcnZpY2Uuc2V0Q3VycmVudE5hdmJhcklkKG51bGwsbGFuZyk7XHJcbiAgICAgICAgIGVsc2UgJHNjb3BlLm1lbnVfc2VydmljZS5yZWZyZXNoTWVudXMobGFuZywwKS50aGVuKGZ1bmN0aW9uKGRhdGEpe1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAvLyAkc2NvcGUuc2hvd05hdmJhcj0hJHNjb3BlLnNob3dOYXZiYXI7XHJcbiAgICAgIH1cclxuICAgICAgJHNjb3BlLmluaXRNZW51ID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAkc2NvcGUubWVudXMuZWRpdE1vZGU9ICAkc2NvcGUubWVudV9zZXJ2aWNlLmdldE1lbnVFZGl0TW9kZSgpO1xyXG4gIFxyXG4gICAgICB9XHJcbiAgICAgICAgXHJcbiBcclxuICAgICAgLy90d28td2F5IGJpbmRpbmcgd2l0aCB0aGUgc2VydmljZSAtIG5vdCB3b3JraW5nIGxpa2UgdGhhdFxyXG4gICAgIFxyXG4gICAgICAkc2NvcGUuc2VsZWN0ZWROYXZiYXI9JHNjb3BlLm1lbnVfc2VydmljZS5zZWxlY3RlZE5hdmJhcjtcclxuICAgICAgLy9tYWtlIHN1cmUgdGhlIG5hdmJhcnMgYXJlIGxvYWRlZCAgICAgICAgICAgICAgIFxyXG4gICAgICAkc2NvcGUubWVudV9zZXJ2aWNlLmdldE1lbnVzKGxhbmcsMSkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfSk7XHJcbiAgICAgXHJcbiAgICAgICAgJHNjb3BlLiR3YXRjaCgnbWVudV9zZXJ2aWNlLmxvYWRpbmdNZW51JyxmdW5jdGlvbihuZXdWYWx1ZSxvbGRWYWx1ZSl7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZSE9b2xkVmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvYWRpbmdNZW51PSRzY29wZS5tZW51X3NlcnZpY2UuZ2V0TG9hZGluZ01lbnUoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICB9KTsgICAgIFxyXG4gICAgIFxyXG5cclxuICAgICRzY29wZS5QcmVwYXJlUHVibGlzaDJQcm9kID0gZnVuY3Rpb24oKVxyXG4gICAge1xyXG4gICAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLnByZXBhcmVQdWJsaXNoMlByb2QoJHNjb3BlLnJlc291cmNlSWQsJHNjb3BlLnJlc291cmNlLlZlcnNpb24pLnRoZW4oXHJcblx0XHRcdGZ1bmN0aW9uKGRhdGEpIHsgICAgICAgICAgICAgICAgICAgIFxyXG5cdFx0XHRcdCRzY29wZS5wdWJsaXNoZWRSZXNvdXJjZSA9IGRhdGEuZGF0YTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblx0XHRcdH0sZnVuY3Rpb24oZXJyb3IpeyAgICAgICAgICAgICAgICAgICAgIFxyXG5cdFx0XHRcdE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgJHNjb3BlLlByZXBhcmVQdWJsaXNoMlByb2QoKVxyXG5cclxuICAgICRzY29wZS5uZXdDaGlsZE5hdmJhciA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICBpZiAoJHNjb3BlLmNNZW51cz09dW5kZWZpbmVkKSAkc2NvcGUuY01lbnVzPVtdO1xyXG4gICAgICAkc2NvcGUuc2VsZWN0ZWROYXZiYXIgPSB7VXNlcnM6W10sR3JvdXBzOltdLFRhcmdldDpudWxsLFBhcmVudEl0ZW06bnVsbCxQYXJhbXM6IHtwYWdlaWQ6ICAkc2NvcGUuc2VsZWN0ZWRQYWdlSWR9LE9yZGVyOiRzY29wZS5jTWVudXNbJHNjb3BlLmN1cnJlbnROYXZiYXJJZF0ubGVuZ3RoKzEsTWVudVR5cGU6Q29kZXNTZXJ2aWNlLmdldENvZGVzRGV0YWlsT2JqZWN0QnlOYW1lKCdtZW51dHlwZXMnLCduYXZiYXJyaWdodGMnLGxhbmcpLE5hdmJhcjokc2NvcGUuY3VycmVudE5hdmJhcklkfTtcclxuICAgICAgICRzY29wZS5jTWVudXNbJHNjb3BlLmN1cnJlbnROYXZiYXJJZF0ucHVzaCgkc2NvcGUuc2VsZWN0ZWROYXZiYXIpO1xyXG4gICAgICBcclxuICAgfSAgXHJcbiAgICBcclxufVxyXG5cclxuXHJcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcblxyXG5cclxuLy9pbXBvcnQgdXNlckRlZmluaXRpb25Kc29uIGZyb20gJy4vdXNlcnNEZWZpbml0aW9uLmpzb24nIGFzc2VydCB7dHlwZTogJ2pzb24nfTtcclxuLy9pbXBvcnQgZGljdCBmcm9tICcuL2RpY3QuanNvbicgYXNzZXJ0IHt0eXBlOiAnanNvbid9O1xyXG5pbXBvcnQgaW5kZXhKc29uIGZyb20gJy4vLi4vLi4vMDAwMV9pbmRleC9hbmd1bGFySnMvaW5kZXguanNvbicvL3dpdGgge3R5cGU6ICdqc29uJ307XHJcblxyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29kZXNEYXRhQ3RybCAoJHNjb3BlLCAkc3RhdGVQYXJhbXMsJHN0YXRlLCRyb290U2NvcGUsdWlHcmlkQ29uc3RhbnRzLFByb2Nlc3NpbmdTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsQ29kZXNTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSxNZW51U2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSwgJHEsICR0aW1lb3V0LEthdGFseW9TdGF0ZU1hbmFnZXIpIHtcclxuICAgIFxyXG4gICAgJHNjb3BlLkNUUkxOQU1FPSdjb2Rlc0RhdGFDdHJsJztcclxuICAgICRzY29wZS5pc0NvbGxhcHNlZCAgPSBmYWxzZTtcclxuICAgICRzY29wZS5wYWdlU3RhdGU9e30gLy9NSUdPUiAtIHNhbW8gZGEgcHJvcmFkaSBHRVRSRVNPVUNFREVGXHJcbiAgICAkc2NvcGUucGFnaW5hdGlvbk9wdGlvbnM9e30vL01JR09SIC0gc2FtbyBkYSBwcm9yYWRpIEdFVFJFU09VQ0VERUZcclxuICAgICRzY29wZS5zaG93VGFibGVBY3Rpb25zPXRydWU7Ly8gTmVlZGVkIGJ5IFNtYXJ0VGFibGVcclxuICAgICRzY29wZS5hY3Rpb25EZWY9IFt7aWQ6MSxidG5MYWJlbDonRWRpdCBjb2RlJyxidG5DbGFzczonYnRuLW91dGxpbmUtcHJpbWFyeScsaWNvbjonZmEgZmEtZWRpdCd9XSBcclxuICAgICRzY29wZS5zbVBhcmFtcyA9IHtVdWlkUmVmOjF9XHJcbiAgICAkc2NvcGUuY29kZUlkPTA7XHJcbiAgICAkc2NvcGUuc2VhcmNoSW5pdGlhdGVkID0gdHJ1ZVxyXG4gICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2VcclxuICAgICRzY29wZS5nc3J2Yy5yZXNldEJvZHlCZ0NvbG9yKCkgICAgIFxyXG4gICAgJHNjb3BlLm1lbnVfc2VydmljZSA9IE1lbnVTZXJ2aWNlICAgIFxyXG4gICAgJHNjb3BlLm1lbnVfc2VydmljZS5jbGVhclNpZGVNZW51KClcclxuICAgIGxldCBtZW51VmlzaWJpbGl0eT0gJHNjb3BlLmtzbS5hZGRTdWJqZWN0KFwibWVudVZpc2liaWxpdHlcIixudWxsKTtcclxuICAgIGxldCBtZW51VmlzaWJpbGl0eU5hbWUgPSBtZW51VmlzaWJpbGl0eS5zdWJqZWN0Lm5hbWU7XHJcbiAgICAkc2NvcGUua3NtID0gS2F0YWx5b1N0YXRlTWFuYWdlciAgICAgXHJcbiAgICAkc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24obWVudVZpc2liaWxpdHlOYW1lLG1lbnVWaXNpYmlsaXR5TmFtZStcIkNoYW5nZWRcIiwge3N0YXRlOntzaWRlTWVudTpmYWxzZX19KTtcclxuICAgIFxyXG5cdCAgJHNjb3BlLmNvZGVUeXBlTGlzdCA9IFt7aWQ6MSxuYW1lOidTeXN0ZW0nfSx7aWQ6MixuYW1lOidVc2VyJ31dXHJcblxyXG4gICAgJHNjb3BlLmNvbHVtbkRlZnMgPSBbLy8gTmVlZGVkIGJ5IFNtYXJ0VGFibGVcclxuICAgICAgICAge25hbWU6ICdpZCcsIGRpc3BsYXlOYW1lOiAnSUQnLCB0eXBlOiAnbnVtYmVyJ30sXHJcbiAgICAgICAgIHtuYW1lOiAnQ29kZU5hbWUnLCBkaXNwbGF5TmFtZTogJ0NvZGUgbmFtZScsIHR5cGU6ICdzdHJpbmcnfSxcclxuICAgICAgICAge25hbWU6ICdDb2RlSGVhZE5hbWUnLCBkaXNwbGF5TmFtZTogJ0NvZGUgdW5pcXVlIGlkZW50aWZpZXInLCAgdHlwZTogJ3N0cmluZyd9LFxyXG4gICAgICAgICB7bmFtZTogJ0Rlc2NyaXB0aW9uJywgZGlzcGxheU5hbWU6ICdDb2RlIGRlc2NyaXB0aW9uJywgIHR5cGU6ICdzdHJpbmcnfSxcclxuICAgICAgICAge25hbWU6ICdBY3RpdmUnLCBkaXNwbGF5TmFtZTogJ0FjdGl2ZScsIHR5cGU6ICdib29sJ30sXHJcbiAgICAgICAgIHtuYW1lOiAnQ29kZVR5cGUubmFtZScsIGRpc3BsYXlOYW1lOiAnQ29kZSBUeXBlJywgIHR5cGU6ICdudW1iZXInfSxcclxuICAgICAgIC8vICB7bmFtZTogJ1ZlcnNpb24nLCBkaXNwbGF5TmFtZTogJ1ZlcnNpb24nLCB0eXBlOiAnc3RyaW5nJ30sXHJcbiAgICAgICAgLy8ge25hbWU6ICdMYW5nJywgZGlzcGxheU5hbWU6ICdMYW5ndWFnZScsICB0eXBlOiAnc3RyaW5nJ31cclxuICAgICAgICBdXHJcbiBcclxuICAgICRzY29wZS5SZXNvdXJjZVNlYXJjaCA9IGZ1bmN0aW9uKHBhZ2Upe1xyXG4gICAgICAgICAgICAkc2NvcGUuc2VhcmNoSW5pdGlhdGVkPWZhbHNlO1xyXG4gICAgICAgICAgICAkc2NvcGUucGFnaW5hdGlvbk9wdGlvbnMudG90YWxJdGVtQ291bnQ9MDtcclxuICAgICAgICAgICAgaWYgKHBhZ2UhPXVuZGVmaW5lZCkgJHNjb3BlLmN1cnJlbnRQYWdlPXBhZ2U7IFxyXG4gICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnNlYXJjaEluaXRpYXRlZD10cnVlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICB9O1xyXG4gICAgIFxyXG4gICAgICAgJHNjb3BlLmdvdG9NZXNzYWdlRGVmID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgJHN0YXRlLmdvKFwiYXBwLm5hdmJhci5jb2Rlcy5uZXdcIix7aWQ6JHNjb3BlLnJlc291cmNlSWQscmV0dXJuU3RhdGU6e0xhYmVsOidSZXR1cm4gdG8gbm90aWZpY2F0aW9uIGRlZmluaXRpb24nLHN0YXRlOiRzdGF0ZS5jdXJyZW50LHBhcmFtczp7aWQ6JHNjb3BlLnJlc291cmNlSWR9fX0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICRzY29wZS5wcm9jZXNzVGFibGVBY3Rpb24gPSBmdW5jdGlvbihyb3csYWN0aW9uSWQpXHJcbiAgICAgICAgIHsgICAvLyBOZWVkZWQgYnkgU21hcnRUYWJsZSAtIG9uIEVESVQgUk9XIHNlbGVjdGlvblxyXG4gICAgICAgICAgIC8vIGRlYnVnZ2VyXHJcbiAgICAgICAgICAgICRzY29wZS5jb2RlSWQgPSByb3cuaWRcclxuICAgICAgICAgICAgJHNjb3BlLmNvZGVTZWxlY3RlZD10cnVlO1xyXG4gICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRDb2RlPSByb3cuaWRcclxuICAgICAgICAgICAgJHNjb3BlLkNvZGVIZWFkID0ge31cclxuICAgICAgICAgICAgJHNjb3BlLmNvZGVzTGlzdCA9IFtdXHJcbiAgICAgICAgICAgICRzY29wZS5jb2Rlc0RldGFpbHMgPSBbXVxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICRzY29wZS5jb2RlU2VsZWN0ZWQ9cm93LmlzU2VsZWN0ZWQgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkQ29kZSA9IHJvdy5pZDtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZENvZGVMYW5nID0gcm93Lkxhbmc7ICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLkNvZGVIZWFkID0ge0NvZGVOYW1lOiByb3cuQ29kZU5hbWUsQ29kZXNIZWFkSWQ6IHJvdy5pZCxEZXNjcmlwdGlvbjpyb3cuRGVzY3JpcHRpb24sTGFuZzpyb3cuTGFuZ307XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAkc2NvcGUuZ2V0Q29kZXNEZXRhaWxzKCRzY29wZS5zZWxlY3RlZENvZGUsICRzY29wZS5Db2RlSGVhZC5Db2RlTmFtZSlcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIENvZGVzU2VydmljZS5Db2Rlc0dldEJ5SWQoJHNjb3BlLnNlbGVjdGVkQ29kZSxsYW5nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbihkYXRhKSB7ICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuQ29kZUhlYWQgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgXHJcbiAgICAgICAgfTtcclxuICAgIFxyXG5cclxuICAgICAgIFxyXG4gICAgICRzY29wZS5nZXRDb2Rlc0ZpbHRlcmVkID0gZnVuY3Rpb24ocGFnZU51bWJlcixwYWdlU2l6ZSxmaWx0ZXIsIGxhbmcpIHsvLyBOZWVkZWQgYnkgU21hcnRUYWJsZVxyXG4gICAgICAgICAgbGV0IGRlZmVycmVkID0gJHEuZGVmZXIoKTtcclxuICAgICAgICAgXHJcbiAgICAgICAgIC8vIGlmICgkc2NvcGUuZGF0YTEgPT0gdW5kZWZpbmVkKSBcclxuICAgICAgICAvLyAge1xyXG4gICAgICAgICAgICAgICAgQ29kZXNTZXJ2aWNlLkNvZGVzR2V0KGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXI/Lk5hbWU/LnRyaW0oKS5sZW5ndGg+MCkgIC8vZmlsdGVyIGJ5IFNlYXJjaCBxdWVyeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGF0YTEgID0gZGF0YS5kYXRhLmZpbHRlcihpdGVtID0+ICBpdGVtPy5Db2RlTmFtZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXIuTmFtZT8udG9Mb3dlckNhc2UoKSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGF0YTEgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRvdGFsQ291bnQgPSAkc2NvcGUuZGF0YTEubGVuZ3RoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnBhZ2luYXRpb25PcHRpb25zLnRvdGFsSXRlbUNvdW50ICA9JHNjb3BlLmRhdGExLmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdGFydEF0ID0gKHBhZ2VOdW1iZXIgLSAxKSAqICBwYWdlU2l6ZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3RGF0YSA9ICAkc2NvcGUuZGF0YTEuc2xpY2Uoc3RhcnRBdCAsIE1hdGgubWluKCBwYWdlTnVtYmVyICogcGFnZVNpemUsICAkc2NvcGUudG90YWxDb3VudCkgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoIHtzdGF0dXM6IDIwMCwgZGF0YTpuZXdEYXRhLCB0b3RhbENvdW50OiAkc2NvcGUudG90YWxDb3VudH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAvLyB9IGVsc2UgZGVmZXJyZWQucmVzb2x2ZSggJHNjb3BlLmRhdGExKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7ICAgICAgIFxyXG4gICAgICAgICBcclxuICAgICB9XHJcbiAgICBcclxuICAgICBcclxuICAgICRzY29wZS5nZXRSZXNvdXJjZURlZiA9IGZ1bmN0aW9uIChwYWdlTnVtYmVyLHBhZ2VTaXplKSB7Ly8gQ2FsbGVkIGJ5IFNtYXJ0VGFibGVcclxuICAgICAgIFxyXG4gICAgICAgIGxldCBkZWZlcnJlZCA9ICRxLmRlZmVyKCk7ICAgIFxyXG4gICAgICAgICRzY29wZS5yZXNvdXJjZUxvYWRpbmc9dHJ1ZTtcclxuICAgICAgICB2YXIgZmlsdGVyPSRzY29wZS5yZXNvdXJjZTtcclxuICAgICAgICAvL2RlYnVnZ2VyIC8vZ2V0UmVzb3VyY2VEZWZcclxuICAgICAgICBcclxuICAgICAgICBpZiAocGFnZU51bWJlcj09dW5kZWZpbmVkKSBwYWdlTnVtYmVyID0gJHNjb3BlLnBhZ2luYXRpb25PcHRpb25zLnBhZ2VOdW1iZXI7XHJcbiAgICAgICAgaWYgKHBhZ2VTaXplPT11bmRlZmluZWQpIHBhZ2VTaXplID0gJHNjb3BlLnBhZ2luYXRpb25PcHRpb25zLnBhZ2VTaXplO1xyXG4gICAgICAgIGlmICgkc2NvcGUudG90YWxDb3VudD4wKXtcclxuICAgICAgICAgICAgaWYgKE1hdGguY2VpbCgkc2NvcGUudG90YWxDb3VudC9wYWdlU2l6ZSkgPCBwYWdlU2l6ZSkge1xyXG4gICAgICAgICAgICAgIGxldCBuZXdQYWdlID0gTWF0aC5jZWlsKCRzY29wZS50b3RhbENvdW50L3BhZ2VTaXplKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICB9XHJcbiAgICAgICAgICRzY29wZS5wYWdlU3RhdGUucmVzb3VyY2UgPSAkc2NvcGUucmVzb3VyY2U7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICBpZiAoJHNjb3BlLmZpcnN0UXVlcnkpIHtcclxuICAgICAgICAgICRzY29wZS5wYWdlU3RhdGUuY3VycmVudFBhZ2UgPSBwYWdlTnVtYmVyO1xyXG4gICAgICAgICAgJHNjb3BlLnBhZ2VTdGF0ZS5wYWdlU2l6ZSA9IHBhZ2VTaXplOyAgICAgICAgICAgXHJcbiAgICAgICAgIH0gZWxzZSAge1xyXG4gICAgICAgICAgICAgICAgaWYgKCRzY29wZS5wYWdlU3RhdGUucmVtZW1iZXJTZWFyY2gpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS5jdXJyZW50UGFnZSA9PSAxKSAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5wYWdlU3RhdGUuY3VycmVudFBhZ2UgPSAkc2NvcGUuY3VycmVudFBhZ2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZU51bWJlciA9ICRzY29wZS5wYWdlU3RhdGUuY3VycmVudFBhZ2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VTaXplID0gJHNjb3BlLnBhZ2VTdGF0ZS5wYWdlU2l6ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgICAvLyAkc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24ocmVzb3VyY2VMaXN0U3RhdGVOYW1lLFwicmVzb3VyY2VMaXN0U2VhcmNoXCIsJHNjb3BlLnBhZ2VTdGF0ZSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICRzY29wZS5nZXRDb2Rlc0ZpbHRlcmVkIChwYWdlTnVtYmVyLHBhZ2VTaXplLGZpbHRlcixsYW5nKS50aGVuKCBcclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5maXJzdFF1ZXJ5PXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlVGFibGVEYXRhID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbmV3RGF0YSA9IHt9XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3RGF0YS5yZXN1bHRzID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUucGFnaW5hdGlvbk9wdGlvbnMudG90YWxJdGVtQ291bnQgPSByZXNwb25zZS50b3RhbENvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8kc2NvcGUubmV4dFBhZ2UgPSBkYXRhLmRhdGEubmV4dDtcclxuICAgICAgICAgICAgICAgICAgICAvLyRzY29wZS5wcmV2aW91c1BhZ2UgPSBkYXRhLmRhdGEucHJldmlvdXM7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmN1cnJlbnRQYWdlPXBhZ2VOdW1iZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnBhZ2luYXRpb25PcHRpb25zLm51bWJlck9mUGFnZXMgPSBNYXRoLmNlaWwoJHNjb3BlLnBhZ2luYXRpb25PcHRpb25zLnRvdGFsSXRlbUNvdW50L3BhZ2VTaXplKTtcclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3RGF0YS5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld0RhdGEubnVtYmVyT2ZQYWdlcyA9ICRzY29wZS5wYWdpbmF0aW9uT3B0aW9ucy5udW1iZXJPZlBhZ2VzO1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld0RhdGEuY29sdW1ucyA9ICRzY29wZS5jb2x1bW5EZWZzO1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld0RhdGEuY291bnQgPSByZXNwb25zZS50b3RhbENvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh7ZGF0YTogbmV3RGF0YSB9KTtcclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZUxvYWRpbmc9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAsIGZ1bmN0aW9uIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoIHtkYXRhOiBuZXdEYXRhIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgfTsgLy8gLS0tZ2V0UmVzb3VyY2VERWYgLS0tXHJcbiAgICAgIFxyXG4gICBcclxuICAgIENvZGVzU2VydmljZS5nZXRDb2Rlc0J5TmFtZSgnbGFuZ3VhZ2VzJyxsYW5nKVxyXG5cdFx0LnRoZW4oIChkYXRhKSA9PiAge1xyXG4gICAgICAgICAgICAvL2RlYnVnZ2VyXHJcbiAgICAgICAgICAgICRzY29wZS5jb2RlTGFuZ3VhZ2VMaXN0ID0gZGF0YS5kYXRhOyB9KTtcclxuXHRcdFxyXG4vKlx0XHRcclxuICAgIENvZGVzU2VydmljZS5nZXRDb2Rlc0J5TmFtZSgnX0NPREVfVFlQRV9MSVNUXycsbGFuZylcclxuXHRcdC50aGVuKCAoZGF0YSkgPT57ICRzY29wZS5jb2RlVHlwZUxpc3QgPSBkYXRhLmRhdGE7IH0pO1xyXG4gICAgIENvZGVzU2VydmljZS5nZXRDb2Rlc0J5TmFtZSgnY29kZXN0YXR1cycsbGFuZylcclxuXHRcdC50aGVuKCAoZGF0YSkgPT4geyAgJHNjb3BlLmNvZGVTdGF0dXNMaXN0ID0gZGF0YS5kYXRhOyB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICBcclxuICAgICBcclxuICAgIFxyXG4gICAgJHNjb3BlLnNldERpcmVjdGl2ZUZuID0gZnVuY3Rpb24oZGlyZWN0aXZlRm4pIHsgLy8gZGlyZWN0aXZlRm4gPT0gZ2V0Q29kZXNEZXRhaWxzKClcclxuICAgICAgICAvL2RlYnVnZ2VyIC8vc2V0RGlyZWN0aXZlRm4gXHJcbiAgICAgICAgJHNjb3BlLmRpcmVjdGl2ZUZuID0gZGlyZWN0aXZlRm47XHJcbiAgICB9O1xyXG5cclxuICAgICAkc2NvcGUuaXNDb2xsYXBzZWRFZGl0SXRlbSA9IGZhbHNlO1xyXG4gICAgIFxyXG4gICAgIFxyXG4gICAgJHNjb3BlLmVkaXRDb2RlSXRlbSA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy9wb3B1bGF0ZSBmcm9tIGdyaWRcclxuICAgICAgICAkc2NvcGUuY29kZUl0ZW1IZWFkZXI9e1RleHQ6ICdFZGl0IGNvZGUgaXRlbScsVHlwZTonRWRpdCd9O1xyXG4gICAgICAgICBpZiAoJHNjb3BlLkNvZGVzRGV0YWlsTGFuZy5MYW5nPT11bmRlZmluZWQpIHtcclxuICAgICAgICAgIC8vY29kZVxyXG4gICAgICAgICAgICRzY29wZS5Db2Rlc0RldGFpbExhbmcuTGFuZz0kc2NvcGUuQ29kZUhlYWRMYW5nLkxhbmc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICAkc2NvcGUuQ29kZXNEZXRhaWxMYW5nLkNyZWF0ZWRCeT1udWxsO1xyXG4gICAgICAgICAkc2NvcGUuQ29kZXNEZXRhaWxMYW5nLkNoYW5nZWRCeT1udWxsO1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5pc0NvbGxhcHNlZEVkaXRJdGVtID0gISRzY29wZS5pc0NvbGxhcHNlZEVkaXRJdGVtO1xyXG4gICAgICAgICAgICBcclxuICAgIH1cclxuICAgIFxyXG4gICRzY29wZS5Db2Rlc0RldGFpbCA9IHtjb2Rlc2RldGFpbGxhbmdfc2V0OiBbXX07XHJcbiAgJHNjb3BlLkNvZGVzRGV0YWlsTGFuZyA9e0NvZGVzRGV0YWlsSWQ6e319OyBcclxuICBcclxuICBcclxuICAgICAgJHNjb3BlLm5ld0NvZGVJdGVtID0gZnVuY3Rpb24oKXtcclxuICAgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLmNvZGVJdGVtSGVhZGVyPXtUZXh0OiAnTmV3IGNvZGUgaXRlbScsVHlwZTonTmV3J307XHJcbiAgICAgICAgICAgIC8vcG9wdWxhdGUgZnJvbSBncmlkXHJcbiAgICAgICAgICAgICRzY29wZS5pc0NvbGxhcHNlZEVkaXRJdGVtID0gISRzY29wZS5pc0NvbGxhcHNlZEVkaXRJdGVtO1xyXG4gICAgICAgICAgICAkc2NvcGUuQ29kZXNEZXRhaWxMYW5nLmlkPXVuZGVmaW5lZDtcclxuICAgICAgICAgICAgJHNjb3BlLkNvZGVzRGV0YWlsTGFuZy5MYW5nPSRzY29wZS5Db2RlSGVhZExhbmcuTGFuZztcclxuICAgICAgICAgICAgJHNjb3BlLkNvZGVzRGV0YWlsTGFuZy5Db2Rlc0RldGFpbElkLkNvZGVzSGVhZElkPSRzY29wZS5Db2RlSGVhZExhbmcuQ29kZXNIZWFkSWQ7XHJcbiAgICAgICAgfVxyXG4gICAgIFxyXG4gICAgJHNjb3BlLmVkaXRDb2RlTGFuZyA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgLy9wb3B1bGF0ZSBmcm9tIGdyaWRcclxuICAgICAgICAkc2NvcGUuaXNDb2xsYXBzZWRFZGl0TGFuZyA9ICEkc2NvcGUuaXNDb2xsYXBzZWRFZGl0TGFuZyBcclxuICAgIH1cclxuICAgICBcclxuICAgICRzY29wZS5zYXZlQ29kZUxhbmcgPSBmdW5jdGlvbihpZCkge1xyXG4gICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICAgICAgJHNjb3BlLmlzQ29sbGFwc2VkRWRpdExhbmcgPSAhJHNjb3BlLmlzQ29sbGFwc2VkRWRpdExhbmdcclxuICAgICAgIFxyXG4gICAgICAgICAgICBDb2Rlc1NlcnZpY2UuQ29kZXNQb3N0KCRzY29wZS5Db2RlSGVhZCkudGhlbihmdW5jdGlvbihkYXRhKSB7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhdGExID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLmdyaWRPcHRpb25zMS5kYXRhID0gJHNjb3BlLmRhdGExO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICBcclxuICAgIH1cclxuICAgICBcclxuICAgICRzY29wZS5nZXRMaXN0T2ZDb2RlcyA9IGZ1bmN0aW9uKCl7XHJcblxyXG4gICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICBDb2Rlc1NlcnZpY2UuQ29kZXNHZXQobGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhdGExID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICRzY29wZS5ncmlkT3B0aW9uczEuZGF0YSA9ICRzY29wZS5kYXRhMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICBcclxuICAgIH1cclxuICAgIFxyXG4gXHJcbiAgICAkc2NvcGUuZ2V0TGlzdE9mQ29kZXMoKTtcclxuICAgIFxyXG4gICAgXHJcbiAgICAgXHJcbiAgICAgICRzY29wZS5zYXZlQ29kZUl0ZW0gPSBmdW5jdGlvbiAoaXNWYWxpZCkge1xyXG4gICAgICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgICAgICAgIC8vdmFyIGNvZGVzU3RhdHVzID0gQ09ERVNfTElTVC5fQ09ERV9TVEFUVVNfTElTVF87XHJcbiAgICAgICAgICAgICRzY29wZS5Db2Rlc0RldGFpbExhbmcuQ29kZXNEZXRhaWxJZC5TdGF0dXMgPSAnQWN0aXZlJztcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIENvZGVzU2VydmljZS5hZGRVcGRhdGVDb2Rlc0RldGFpbHMoJHNjb3BlLmNvZGVJdGVtSGVhZGVyLlR5cGUsJHNjb3BlLkNvZGVzRGV0YWlsTGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIFxyXG5leHBvcnQgZnVuY3Rpb24gY29kZXNEZXRhaWxzQ3RybCAoJHNjb3BlLCAkcm9vdFNjb3BlLHVpR3JpZENvbnN0YW50cyxHcmlkc3RlclNlcnZpY2UsTWVudVNlcnZpY2UsQ29kZXNTZXJ2aWNlLEthdGFseW9TdGF0ZU1hbmFnZXIpIHtcclxuICAgIFxyXG4gICAgICAgJHNjb3BlLkNUUkxOQU1FPSdjb2Rlc0RldGFpbHNDdHJsJztcclxuICAgICAgICAvL0dldCBkYXRhIGZyb20gc2VydmVyXHJcbiAgICAgICAgdmFyIGNvbERlZnMgPSBbXHJcbiAgICAgICAgIHsgbmFtZTogJ2lkJywgZGlzcGxheU5hbWU6ICdJRCcsIGFnZ3JlZ2F0aW9uVHlwZTogdWlHcmlkQ29uc3RhbnRzLmFnZ3JlZ2F0aW9uVHlwZXMubWF4LHR5cGU6ICdudW1iZXInLCB3aWR0aDonNSUnLGVuYWJsZUhpZGluZzogZmFsc2UsIHZpc2libGU6IHRydWUgfSxcclxuICAgICAgICAgeyBuYW1lOiAnQ29kZU5hbWUnLCBkaXNwbGF5TmFtZTogJ0NvZGUgbmFtZSd9LFxyXG4gICAgICAgICB7IG5hbWU6ICdEZXNjcmlwdGlvbicsIGRpc3BsYXlOYW1lOiAnQ29kZSBkZXNjcmlwdGlvbicgfSxcclxuICAgICAgICAgeyBuYW1lOiAnU3RhdHVzJywgZGlzcGxheU5hbWU6ICdTdGF0dXMnfSxcclxuICAgICAgICAgeyBuYW1lOiAnTGFuZycsIGRpc3BsYXlOYW1lOiAnTGFuZ3VhZ2UnLGNlbGxGaWx0ZXI6XCJnZXRDb2RlQnlOYW1lOiAnbGFuZ3VhZ2VzJ1wifSxcclxuICAgICAgICAgXTtcclxuICAgICAgICAgXHJcbiAgICAgJHNjb3BlLnBhZ2luYXRpb25PcHRpb25zID0ge1xyXG4gICAgICAgIHBhZ2VOdW1iZXI6IDEsXHJcbiAgICAgICAgcGFnZVNpemU6IDEwLFxyXG4gICAgICAgIHNvcnQ6IG51bGxcclxuICAgIH07XHJcbiAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2VcclxuICAgICRzY29wZS5nc3J2Yy5yZXNldEJvZHlCZ0NvbG9yKCkgICBcclxuXHJcblxyXG4gICAgJHNjb3BlLm1lbnVfc2VydmljZSA9IE1lbnVTZXJ2aWNlICAgIFxyXG4gICAgJHNjb3BlLm1lbnVfc2VydmljZS5jbGVhclNpZGVNZW51KClcclxuXHJcbiAgICBsZXQgbWVudVZpc2liaWxpdHk9ICRzY29wZS5rc20uYWRkU3ViamVjdChcIm1lbnVWaXNpYmlsaXR5XCIsbnVsbCk7XHJcbiAgICBsZXQgbWVudVZpc2liaWxpdHlOYW1lID0gbWVudVZpc2liaWxpdHkuc3ViamVjdC5uYW1lO1xyXG4gICAgJHNjb3BlLmtzbSA9IEthdGFseW9TdGF0ZU1hbmFnZXIgICAgIFxyXG4gICAgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKG1lbnVWaXNpYmlsaXR5TmFtZSxtZW51VmlzaWJpbGl0eU5hbWUrXCJDaGFuZ2VkXCIsIHtzdGF0ZTp7c2lkZU1lbnU6ZmFsc2V9fSk7XHJcbiAgICBcclxuXHJcbiAgICAkc2NvcGUuZ3JpZE9wdGlvbnMgPSB7XHJcbiAgICAgICAgY29sdW1uRGVmczogY29sRGVmcyxcclxuICAgICAgZW5hYmxlR3JpZE1lbnU6IHRydWUsXHJcbiAgICAgICAgc2hvd0dyaWRGb290ZXI6IHRydWUsXHJcbiAgICBzaG93Q29sdW1uRm9vdGVyOiB0cnVlLFxyXG4gICAgICAgIGVuYWJsZVJvd1NlbGVjdGlvbjogdHJ1ZSxcclxuICAgICAgIG11bHRpU2VsZWN0OiBmYWxzZSxcclxuICAgICAgIGVuYWJsZUhvcml6b250YWxTY3JvbGxiYXIgOiAwLCBcclxuICAgICAgZW5hYmxlVmVydGljYWxTY3JvbGxiYXIgOiAyLFxyXG4gICAgICAgZW5hYmxlRmlsdGVyaW5nOiB0cnVlLFxyXG4gICAgICAgZW5hYmxlUm93SGVhZGVyU2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgICAgZW5hYmxlQ29sdW1uUmVzaXppbmc6IHRydWUsXHJcbiAgICAgLyogXHJcbiAgICAgICAgcGFnaW5hdGlvblBhZ2VTaXplczogWzUsIDEwLCAyMCwgNTAsIDEwMF0sXHJcbiAgICAgICAgIHBhZ2luYXRpb25QYWdlU2l6ZTogNSxcclxuICAgICAgIGVuYWJsZVNlbGVjdEFsbDogZmFsc2UsXHJcbiAgICAgICBcclxuICAgICAgXHJcbiAgICAgICBcclxuICAgICAgIGVuYWJsZUNlbGxFZGl0OiBmYWxzZSovXHJcbiAgICAgIFxyXG4gICB9XHJcbiAgIFxyXG5cclxuICAgICRzY29wZS5ncmlkT3B0aW9ucy5vblJlZ2lzdGVyQXBpID0gZnVuY3Rpb24gKGdyaWRBcGkpIHtcclxuICAgICAgICAvL3NldCBncmlkQXBpIG9uIHNjb3BlXHJcbiAgICAgICAgJHNjb3BlLmdyaWRBcGkgPSBncmlkQXBpO1xyXG4gICAgICAgIGdyaWRBcGkuc2VsZWN0aW9uLm9uLnJvd1NlbGVjdGlvbkNoYW5nZWQoJHNjb3BlLGZ1bmN0aW9uKHJvdyl7XHJcbiAgICAgICAgICAgIC8vZGVidWdnZXJcclxuICAgICAgICAgICAgJHNjb3BlLmNvZGVTZWxlY3RlZD1yb3cuaXNTZWxlY3RlZFxyXG4gICAgICAgICAgICB9KTtcclxuICAgIFxyXG4gICAgIH1cclxuICAgIFxyXG4gICAgJHNjb3BlLmdldExpc3RPZkNvZGVzID0gZnVuY3Rpb24oKXtcclxuICAgICAgXHJcbiAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICBDb2Rlc1NlcnZpY2UuQ29kZXNHZXQobGFuZylcclxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oZGF0YSkgeyBcclxuICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhdGEgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5ncmlkT3B0aW9ucy5kYXRhID0gJHNjb3BlLmRhdGE7XHJcbiAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgXHJcbiAgICB9XHJcbiAgICBcclxuICAgIGdldExpc3RPZkNvZGVzKCk7XHJcbiAgXHJcbiAgICBcclxuICAgICBcclxuICAgIH1cclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29kZXNOZXdDdHJsICgkc2NvcGUsICRyb290U2NvcGUsdWlHcmlkQ29uc3RhbnRzLFByb2Nlc3NpbmdTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlLE1lbnVTZXJ2aWNlLENvZGVzU2VydmljZSxLYXRhbHlvU3RhdGVNYW5hZ2VyKSB7XHJcbiAgICBcclxuXHQkc2NvcGUuY29kZVR5cGVMaXN0ID0gW3tpZDoxLG5hbWU6J1N5c3RlbSd9LHtpZDoyLG5hbWU6J1VzZXInfV1cclxuICAgICRzY29wZS5Db2RlSGVhZCA9IHsgQWN0aXZlOiB0cnVlLCBDb2Rlc0hlYWRMYW5nOltdLCBDb2RlVHlwZTogJHNjb3BlLmNvZGVUeXBlTGlzdFsxXSB9O1xyXG4gICAgJHNjb3BlLkNUUkxOQU1FPSdjb2Rlc05ld0N0cmwnO1xyXG4gICAgJHNjb3BlLmFjdGl2aXR5LmFjdGl2aXR5TWVzc2FnZSA9IFByb2Nlc3NpbmdTZXJ2aWNlLnNldEFjdGl2aXR5TXNnKCdQcm9jZXNzaW5nIHJlcXVlc3QnKTtcclxuXHJcbiAgICBcclxuICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlXHJcbiAgICAkc2NvcGUuZ3NydmMucmVzZXRCb2R5QmdDb2xvcigpICAgXHJcbiAgICAkc2NvcGUuY29kZXNMaXN0PVtdXHJcblxyXG4gICAgJHNjb3BlLm1lbnVfc2VydmljZSA9IE1lbnVTZXJ2aWNlICAgIFxyXG4gICAgJHNjb3BlLm1lbnVfc2VydmljZS5jbGVhclNpZGVNZW51KClcclxuXHJcbiAgICBsZXQgbWVudVZpc2liaWxpdHk9ICRzY29wZS5rc20uYWRkU3ViamVjdChcIm1lbnVWaXNpYmlsaXR5XCIsbnVsbCk7XHJcbiAgICBsZXQgbWVudVZpc2liaWxpdHlOYW1lID0gbWVudVZpc2liaWxpdHkuc3ViamVjdC5uYW1lO1xyXG4gICAgJHNjb3BlLmtzbSA9IEthdGFseW9TdGF0ZU1hbmFnZXIgICAgIFxyXG4gICAgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKG1lbnVWaXNpYmlsaXR5TmFtZSxtZW51VmlzaWJpbGl0eU5hbWUrXCJDaGFuZ2VkXCIsIHtzdGF0ZTp7c2lkZU1lbnU6ZmFsc2V9fSk7XHJcbiAgICAgICAgXHJcbiAgXHJcbiAgICAkc2NvcGUuY29kZVR5cGVMaXN0RG93bmxvYWRlZD10cnVlO1xyXG4gXHJcbiAgICAkc2NvcGUuc2F2ZU5ld0NvZGUgPSBmdW5jdGlvbiAoaXNWYWxpZCkge1xyXG5cclxuICAgICAgICAgLy9kZWJ1Z2dlclxyXG4gICAgICAgICAgaWYgKGlzVmFsaWQpIHtcclxuICAgIFxyXG4gICAgICAgICAgICAkc2NvcGUuQ29kZUhlYWQuVmVyc2lvbj0xO1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBDb2Rlc1NlcnZpY2UuQ29kZXNQb3N0KCRzY29wZS5Db2RlSGVhZCkudGhlbihmdW5jdGlvbihkYXRhKSB7ICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEuZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuQ29kZUhlYWQuaWQ9ZGF0YS5kYXRhLmRhdGE7ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgXHJcbiB9XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvZGVzRWRpdEN0cmwgKCRzY29wZSwgJHJvb3RTY29wZSx1aUdyaWRDb25zdGFudHMsUHJvY2Vzc2luZ1NlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxHcmlkc3RlclNlcnZpY2UsTWVudVNlcnZpY2UsQ29kZXNTZXJ2aWNlLCRzdGF0ZVBhcmFtcyxLYXRhbHlvU3RhdGVNYW5hZ2VyKSB7XHJcbiAgICBcclxuICAgICAkc2NvcGUuQ1RSTE5BTUU9J2NvZGVzRWRpdEN0cmwnO1xyXG4gICAgXHJcbiAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuXHJcbiAgICAkc2NvcGUuYWN0aXZpdHkuYWN0aXZpdHlNZXNzYWdlID0gUHJvY2Vzc2luZ1NlcnZpY2Uuc2V0QWN0aXZpdHlNc2coJ1Byb2Nlc3NpbmcgcmVxdWVzdCcpO1xyXG4gICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlXHJcbiAgICAkc2NvcGUuZ3NydmMucmVzZXRCb2R5QmdDb2xvcigpICAgIFxyXG5cclxuICAgICRzY29wZS5tZW51X3NlcnZpY2UgPSBNZW51U2VydmljZSAgICBcclxuICAgICRzY29wZS5tZW51X3NlcnZpY2UuY2xlYXJTaWRlTWVudSgpXHJcblxyXG4gICAgbGV0IG1lbnVWaXNpYmlsaXR5PSAkc2NvcGUua3NtLmFkZFN1YmplY3QoXCJtZW51VmlzaWJpbGl0eVwiLG51bGwpO1xyXG4gICAgbGV0IG1lbnVWaXNpYmlsaXR5TmFtZSA9IG1lbnVWaXNpYmlsaXR5LnN1YmplY3QubmFtZTtcclxuICAgICRzY29wZS5rc20gPSBLYXRhbHlvU3RhdGVNYW5hZ2VyICAgICBcclxuICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbihtZW51VmlzaWJpbGl0eU5hbWUsbWVudVZpc2liaWxpdHlOYW1lK1wiQ2hhbmdlZFwiLCB7c3RhdGU6e3NpZGVNZW51OmZhbHNlfX0pO1xyXG4gICAgXHJcbiAgICAkc2NvcGUuY29kZVR5cGVMaXN0ID0gW3tpZDoxLG5hbWU6J1N5c3RlbSd9LHtpZDoyLG5hbWU6J1VzZXInfV1cclxuICAgICRzY29wZS5jb2RlVHlwZUxpc3REb3dubG9hZGVkPXRydWU7XHJcblxyXG4gICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzQnlOYW1lKCdsYW5ndWFnZXMnLGxhbmcpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY29kZUxhbmd1YWdlTGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgIC8qXHJcbiAgICBDb2Rlc1NlcnZpY2UuZ2V0Q29kZXNCeU5hbWUoJ19DT0RFX1RZUEVfTElTVF8nLGxhbmcpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY29kZVR5cGVMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgIFxyXG4gICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzQnlOYW1lKCdjb2Rlc3RhdHVzJyxsYW5nKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmNvZGVTdGF0dXNMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgKi9cclxuICAgICRzY29wZS5jb2RlSWQgPSAkc3RhdGVQYXJhbXMuaWQ7XHJcbiAgICBcclxuICAgICAkc2NvcGUuZ2V0Q29kZSA9IGZ1bmN0aW9uIChjb2RlaWQpIHtcclxuICAgICAgXHJcbiAgICAgICBcclxuICAgICAgIENvZGVzU2VydmljZS5Db2Rlc0dldEJ5SWQoJHNjb3BlLmNvZGVJZCxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuQ29kZUhlYWQgPSBkYXRhLmRhdGFbMF07XHJcbiAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgXHJcbiAgICAgfVxyXG4gICAgIFxyXG4gICAgICRzY29wZS5nZXRDb2RlKCRzY29wZS5jb2RlSWQpO1xyXG4gICAgIFxyXG4gICAgICAkc2NvcGUuY2xlYXIgPSBmdW5jdGlvbihldmVudCwgc2VsZWN0KVxyXG4gICAgICBcclxuICAgICAge1xyXG4gICAgICAgIHNlbGVjdC5zZWxlY3RlZCA9IG51bGw7XHJcbiAgICAgICAgXHJcbiAgICAgIH1cclxuICAgICRzY29wZS5zYXZlQ29kZSA9IGZ1bmN0aW9uIChpc1ZhbGlkKSB7XHJcblxyXG4gICAgICAgICAvL2RlYnVnZ2VyXHJcblxyXG4gICAgICAgICAgaWYgKGlzVmFsaWQpIHtcclxuICAgICAgICAgICAgJHNjb3BlLmFjdGl2aXR5LmFjdGl2aXR5TWVzc2FnZSA9IFByb2Nlc3NpbmdTZXJ2aWNlLnNldEFjdGl2aXR5TXNnKCdTYXZpbmcgY29kZSAnKyRzY29wZS5Db2RlSGVhZC5Db2Rlc0hlYWRMYW5nWzBdLkNvZGVOYW1lKTtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgQ29kZXNTZXJ2aWNlLkNvZGVzUG9zdCgkc2NvcGUuQ29kZUhlYWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEsJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICBcclxuICAgIH1cclxuICAgIFxyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB1c2VyRGV0YWlsc0N0cmwgKCRzY29wZSwgJHJvb3RTY29wZSwgJGxvY2F0aW9uLCAkdGltZW91dCxBdXRoZW50aWNhdGlvblNlcnZpY2UsUHJvY2Vzc2luZ1NlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxHcmlkc3RlclNlcnZpY2UsTWVudVNlcnZpY2UsQ29kZXNTZXJ2aWNlLEthdGFseW9TdGF0ZU1hbmFnZXIpIHtcclxuICAgIFxyXG4gICAgJHNjb3BlLkNUUkxOQU1FPSd1c2VyRGV0YWlsc0N0cmwnO1xyXG4gICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7ICAgIFxyXG5cdHZhciBsYW5nQ29kZSA9ICRyb290U2NvcGUuZ2xvYmFscz8uY3VycmVudFVzZXI/LmxhbmdPYmo/LkNvZGUgPz8gJ2VuLUdCJ1x0XHJcbiAgICAkc2NvcGUuc3Ryb25nUGFzc1JlZ2V4ID1cIl4oPz0uKlthLXpdKSg/PS4qW0EtWl0pKD89LipbMC05XSkoPz0uKlshQCMlJjw+OzosXy8nXFxcIlxcJFxcXFxzXFwqXFwoXFwpXFw9XFw/XFwrXFxeXFwuXFwtXSkuezgsfSRcIjtcclxuXHJcbiAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2VcclxuICAgICRzY29wZS5nc3J2Yy5yZXNldEJvZHlCZ0NvbG9yKCkgICBcclxuXHJcblxyXG4gICAgJHNjb3BlLm1lbnVfc2VydmljZSA9IE1lbnVTZXJ2aWNlICAgIFxyXG4gICAgJHNjb3BlLm1lbnVfc2VydmljZS5jbGVhclNpZGVNZW51KClcclxuXHJcbiAgICBsZXQgbWVudVZpc2liaWxpdHk9ICRzY29wZS5rc20uYWRkU3ViamVjdChcIm1lbnVWaXNpYmlsaXR5XCIsbnVsbCk7XHJcbiAgICBsZXQgbWVudVZpc2liaWxpdHlOYW1lID0gbWVudVZpc2liaWxpdHkuc3ViamVjdC5uYW1lO1xyXG4gICAgJHNjb3BlLmtzbSA9IEthdGFseW9TdGF0ZU1hbmFnZXIgICAgIFxyXG4gICAgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKG1lbnVWaXNpYmlsaXR5TmFtZSxtZW51VmlzaWJpbGl0eU5hbWUrXCJDaGFuZ2VkXCIsIHtzdGF0ZTp7c2lkZU1lbnU6ZmFsc2V9fSk7XHJcbiAgICBcclxuXHJcbiAgICAkc2NvcGUucGFnZUxhYmVscyA9IGluZGV4SnNvbltsYW5nQ29kZV1cclxuXHRcclxuXHQvL2RlYnVnZ2VyXHJcblxyXG4gICAgJHNjb3BlLnZhbGlkYXRlX3Bhc3MyID0gZnVuY3Rpb24gKGZvcm0pIHtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoZm9ybS5wYXNzMS4kdmFsaWQgJiYgJHNjb3BlLnBhc3MxIT0kc2NvcGUucGFzczIpIGZvcm0ucGFzczIuJHNldFZhbGlkaXR5KCdwYXNzMicsZmFsc2UpO1xyXG4gICAgICAgIGVsc2UgaWYgKGZvcm0ucGFzczEuJHZhbGlkICYmICRzY29wZS5wYXNzMT09JHNjb3BlLnBhc3MyKSBmb3JtLnBhc3MyLiRzZXRWYWxpZGl0eSgncGFzczInLHRydWUpO1xyXG4gICAgICAgIGVsc2UgZm9ybS5wYXNzMi4kc2V0VmFsaWRpdHkoJ3Bhc3MyJyxmYWxzZSk7XHJcbiAgICB9O1xyXG4gICAgICBcclxuICAgICRzY29wZS51c2VyID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyO1xyXG5cclxuICAgICRzY29wZS5jaGFuZ2VfcGFzc3dvcmQgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICBcclxuICAgICAgICBBdXRoZW50aWNhdGlvblNlcnZpY2UuQ2hhbmdlUGFzc3dvcmRXaXRoQXV0aCgkc2NvcGUuY3VycmVudFBhc3MsJHNjb3BlLnBhc3MxKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKHJlc3BvbnNlLmRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgQXV0aGVudGljYXRpb25TZXJ2aWNlLlVwZGF0ZUF1dGhUb2tlbihyZXNwb25zZS5kYXRhLnRva2VuKTtcclxuICAgICAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShyZXNwb25zZS5tZXNzYWdlLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tZXNzYWdlLCdlcnJvcicpO1xyXG5cclxuICAgICAgICAgICAgfSlcclxuXHJcbiAgICB9O1xyXG4gICAgICAgXHJcbiAgICAgIFxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdXNlcnNEZWZpbml0aW9uQ3RybCAoJHNjb3BlLCAkcm9vdFNjb3BlLCAkdGltZW91dCxTZXR0aW5nc1NlcnZpY2UsIFVzZXJTZXJ2aWNlLCBBdXRoZW50aWNhdGlvblNlcnZpY2UsIFJlc291cmNlc0RhdGFTZXJ2aWNlLCBNZXNzYWdpbmdTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSxNZW51U2VydmljZSxDb2Rlc1NlcnZpY2UsS2F0YWx5b1N0YXRlTWFuYWdlcikge1xyXG4gICAgXHJcbiAgICAkc2NvcGUuQ1RSTE5BTUU9J3VzZXJzRGVmaW5pdGlvbkN0cmwnO1xyXG5cdCRzY29wZS5sb2NhbFZhcnMgPSB7fVxyXG4gICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7IFxyXG5cdHZhciBsYW5nQ29kZSA9ICRyb290U2NvcGUuZ2xvYmFscz8uY3VycmVudFVzZXI/LmxhbmdPYmo/LkNvZGUgPz8gJ2VuLUdCJ1xyXG5cdGlmICgkcm9vdFNjb3BlLmdsb2JhbHM/LmVudmlyb25tZW50cykgXHJcblx0XHRcdCRyb290U2NvcGUuZ2xvYmFscy5lbnZpcm9ubWVudHMubGVuZ3RoPTAgLy9tdXN0IHJlc2V0IHRoaXMgZm9yIHdhdGNoZXJcclxuXHRcclxuICAgICRzY29wZS5pbnZpdGVVc2VyT2JqPXt9XHJcblx0XHJcblx0JHNjb3BlLnNlbGVjdGVkVXNlckNvcHk9e31cclxuICAgIFxyXG5cdCRzY29wZS5wYWdlTGFiZWxzID0gaW5kZXhKc29uW2xhbmdDb2RlXVxyXG5cdFxyXG4gICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlXHJcbiAgICAkc2NvcGUuZ3NydmMucmVzZXRCb2R5QmdDb2xvcigpICAgXHJcblxyXG5cclxuLy8gYWR2YW5jZWRVc2VyUHJvcExpc3QudmFsdWUgPSBnZXRDdXJyZW50VXNlci52YWx1ZS5lbnZpcm9ubWVudHNbYXBwbGljYXRpb25TdG9yZS5jdXJyZW50RW52XT8uUGFyYW1ldGVycz8uQWR2YW5jZWRVc2VyUHJvcGVydGllc0RlZlxyXG5cclxuXHJcbiAgICAkc2NvcGUubWVudV9zZXJ2aWNlID0gTWVudVNlcnZpY2UgICAgXHJcbiAgICAkc2NvcGUubWVudV9zZXJ2aWNlLmNsZWFyU2lkZU1lbnUoKVxyXG5cclxuICAgIGxldCBtZW51VmlzaWJpbGl0eT0gJHNjb3BlLmtzbS5hZGRTdWJqZWN0KFwibWVudVZpc2liaWxpdHlcIixudWxsKTtcclxuICAgIGxldCBtZW51VmlzaWJpbGl0eU5hbWUgPSBtZW51VmlzaWJpbGl0eS5zdWJqZWN0Lm5hbWU7XHJcbiAgICBcclxuICAgICRzY29wZS5rc20gPSBLYXRhbHlvU3RhdGVNYW5hZ2VyIFxyXG4gICAgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKG1lbnVWaXNpYmlsaXR5TmFtZSxtZW51VmlzaWJpbGl0eU5hbWUrXCJDaGFuZ2VkXCIsIHtzdGF0ZTp7c2lkZU1lbnU6ZmFsc2V9fSk7XHJcblx0JHNjb3BlLmRhdGFzZXRGaWVsZHNMaXN0PXt9XHJcblx0XHJcblx0XHRcdFxyXG5cdCRzY29wZS5nZXRPcmdTY2hlbWFzID0gZnVuY3Rpb24oKVxyXG5cdHtcclxuXHRcdGxldCBjYWNoaW5nPXRydWVcclxuXHRcdGlmICgkcm9vdFNjb3BlPy5nbG9iYWxzPy5lbnZpcm9ubWVudHMpIFxyXG5cdFx0XHRcdFx0cmV0dXJuICRyb290U2NvcGUuZ2xvYmFscy5lbnZpcm9ubWVudHNcclxuXHJcblx0XHJcblxyXG5cdFx0aWYgKCRzY29wZT8uZW52aXJvbm1lbnRzID09IHVuZGVmaW5lZClcclxuXHRcdFx0XHJcblx0XHQgICAgICAgQXV0aGVudGljYXRpb25TZXJ2aWNlLmdldE9yZ1NjaGVtYXMoJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyPy5vcmdhbmlzYXRpb24uaWQsIGNhY2hpbmcpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XHJcblx0XHRcdFx0XHQvL2RlYnVnZ2VyXHJcblx0XHRcdFx0XHRpZiAocmVzcG9uc2UuZGF0YSkgXHJcblx0XHRcdFx0XHRcdFx0JHJvb3RTY29wZS5nbG9iYWxzLmVudmlyb25tZW50cyA9IHJlc3BvbnNlLmRhdGEucmVkdWNlKChhY2MsIG9iaikgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgYWNjW29iai5pZC50b1N0cmluZygpXSA9IG9iajtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIHJldHVybiBhY2M7XHJcblx0XHRcdFx0XHRcdFx0fSwge30pO1x0XHRcdCAgXHRcdCBcdCAgXHJcblx0XHRcdCAgfSlcclxuXHR9XHJcblx0XHJcblx0JHNjb3BlLm9uU2VsZWN0UmVzb3VyY2VDYWxsYmFjayA9IGZ1bmN0aW9uKGRhdGFzZXQsIG1vZGVsKXtcclxuXHRcdC8vZGVidWdnZXJcclxuXHRcdGxldCBpdGVtPWRhdGFzZXQuc2VsZWN0ZWRJdGVtXHJcblx0XHRpdGVtWydzZWxlY3RlZEZpZWxkJ109e31cclxuXHRcdGl0ZW1bJ3Jlc291cmNlSWQnXT1pdGVtWydpZCddXHJcblx0XHQvL2RlbGV0ZSBpdGVtWydpZCddXHJcblx0XHRpdGVtWydVc2VySWRGaWVsZCddPVwiXCJcclxuXHRcdGxldCBwb3MgPSAkc2NvcGUucmVzb3VyY2VMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkIH0pLmluZGV4T2YoaXRlbS5yZXNvdXJjZUlkKTtcclxuXHRcdGRhdGFzZXQuc2VsZWN0ZWRJdGVtPSAkc2NvcGUucmVzb3VyY2VMaXN0W3Bvc11cclxuXHRcdGRhdGFzZXQuc2VsZWN0ZWRGaWVsZCA9IHt9XHJcblx0XHRcdFx0XHRcclxuXHRcdFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRmllbGRzIChpdGVtLnJlc291cmNlSWQgLGxhbmcgICkudGhlbiggKHJlc3ApPT4geyBcclxuXHRcdFx0XHRcdHJlc3AuZGF0YSA9IHJlc3AuZGF0YS5maWx0ZXIgKCAgKGl0ZW0pID0+IGl0ZW0uZ2VuZXJpY3R5cGU9PVwidXNlclwiKVxyXG5cdFx0XHRcdCAgJHNjb3BlLmRhdGFzZXRGaWVsZHNMaXN0W2l0ZW0ucmVzb3VyY2VJZF0gPSByZXNwLmRhdGFcdFx0XHRcdFx0XHJcblx0XHR9KVx0XHRcdFx0XHRcdFx0XHJcblx0fVxyXG5cdFxyXG5cclxuXHJcbiAgICAkc2NvcGUuZ2V0T3JnYW5pc2F0aW9uSW5mbyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBTZXR0aW5nc1NlcnZpY2UuZ2V0T3JnYW5pc2F0aW9uSW5mbygkc2NvcGUub3JnYW5pc2F0aW9uSWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICRzY29wZS5vcmdhbmlzYXRpb24gPSBkYXRhLmRhdGE7ICAgICAgICAgICBcclxuICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXsgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5kYXRhLm1zZywnZXJyb3InKTtcclxuICAgICAgICB9KTtcclxuICAgIFxyXG4gICAgfTtcclxuXHRcclxuXHRcdCBcclxuXHRcdCRzY29wZS5zYXZlQWR2YW5jZWRVc2VyUGFyYW1zID0gYXN5bmMgZnVuY3Rpb24oKSBcclxuXHRcdHtcclxuXHRcdFx0Ly9kZWJ1Z2dlclxyXG5cdFx0XHRsZXQgcmVzcCA9IGF3YWl0ICBTZXR0aW5nc1NlcnZpY2UuZ2V0T3JnYW5pc2F0aW9uSW5mbygkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXI/Lm9yZ2FuaXNhdGlvbi5pZClcclxuXHRcdCAgICBsZXQgb3JnID0gcmVzcC5kYXRhOyBcclxuXHRcdFx0aWYgKG9yZy5QYXJhbWV0ZXJzPT11bmRlZmluZWQpIG9yZy5QYXJhbWV0ZXJzPXt9XHJcblx0XHRcdC8vbGV0IG9yZyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyPy5vcmdhbmlzYXRpb24pKSAvL0NMT05FXHJcblx0XHRcdGxldCBjbGVhbkxpc3QgPSBbXVxyXG5cdFx0XHQkc2NvcGUuYWR2YW5jZWRVc2VyUHJvcExpc3QuZm9yRWFjaCggKGl0ZW0pID0+IHtcclxuXHRcdFx0XHRpZiAoaXRlbT8uc2VsZWN0ZWRGaWVsZD8uaWQgICYmICBpdGVtPy5zZWxlY3RlZEl0ZW0/LmlkICYmICFpdGVtPy5pc0RlbGV0ZWQpIHtcclxuXHRcdFx0XHRcdGxldCBVc2VySWRGaWVsZCA9IFwiRmllbGRcIiArIGl0ZW0uc2VsZWN0ZWRGaWVsZC5pZCAgKyBcIl9cIiArIG9yZy5pZFxyXG5cdFx0XHRcdFx0Y2xlYW5MaXN0LnB1c2goIFxyXG5cdFx0XHRcdFx0eydVc2VySWRGaWVsZCc6IFVzZXJJZEZpZWxkLCBcclxuXHRcdFx0XHRcdCdyZXNvdXJjZUlkJzppdGVtLnNlbGVjdGVkSXRlbS5pZCwgXHJcblx0XHRcdFx0XHQncmVxdWlyZWQnOiBpdGVtLnJlcXVpcmVkLFxyXG5cdFx0XHRcdFx0J2FkdmFuY2VkVXNlclByb3BFcnJvck1lc3NhZ2UnOiBpdGVtLmFkdmFuY2VkVXNlclByb3BFcnJvck1lc3NhZ2UsIFxyXG5cdFx0XHRcdFx0J2FkdmFuY2VkVXNlclByb3BFcnJvclBhZ2UnIDogaXRlbS5hZHZhbmNlZFVzZXJQcm9wRXJyb3JQYWdlXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdH1cdFx0XHRcdFx0XHJcblx0XHRcdH0pXHJcblx0XHRcdFxyXG5cdFx0XHRpZiAoY2xlYW5MaXN0Lmxlbmd0aD09MCkge1xyXG5cdFx0XHRcdE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnTm8gZGF0YSB0byBzYXZlIScsJ2luZm8nKTtcclxuXHRcdFx0XHRyZXR1cm5cclxuXHRcdFx0fVxyXG5cdFx0XHRcclxuXHRcdFx0XHJcblx0XHRcdG9yZy5QYXJhbWV0ZXJzLkFkdmFuY2VkVXNlclByb3BlcnRpZXNEZWYgPSBjbGVhbkxpc3QgLy9BbHRlcm5hdGl2ZSB3YXkuIDIucGFyYW0gaW4gZnVuLmNhbGwgY2FuIGJlIG9ic29sZXRlXHJcblxyXG5cdFx0ICAgIFNldHRpbmdzU2VydmljZS5zYXZlT3JnYW5pc2F0aW9uSW5mbyAob3JnKS50aGVuKFxyXG5cdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIHsgICAgICAgICAgICAgICBcclxuXHRcdFx0XHQgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKCdTYXZlZCEnLCdzdWNjZXNzJyk7ICAgICAgICAgICAgICAgICAgICAgXHJcblx0XHRcdFx0fSxmdW5jdGlvbihlcnJvcil7ICAgIFxyXG5cdFx0XHRcdCAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubWVzc2FnZSwnZXJyb3InKTtcclxuXHRcdCAgIH0pO1xyXG5cdFx0fVxyXG5cdFxyXG5cdFxyXG5cdCRzY29wZS5yZW1vdmVEYXRhc2V0ID0gZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuXHRcdGl0ZW0uaXNEZWxldGVkPXRydWVcdFxyXG5cdFx0XHJcblx0fVxyXG5cdFxyXG5cdCRzY29wZS5hZGREYXRhc2V0ID0gZnVuY3Rpb24oKXtcclxuXHRcdFxyXG5cdFx0aWYgKCEkc2NvcGUuYWR2YW5jZWRVc2VyUHJvcExpc3QpICRzY29wZS5hZHZhbmNlZFVzZXJQcm9wTGlzdD1bXVxyXG5cdFx0JHNjb3BlLmFkdmFuY2VkVXNlclByb3BMaXN0LnB1c2goIHtcclxuXHRcdFx0c2VsZWN0ZWRGaWVsZDoge30sXHJcblx0XHRcdHNlbGVjdGVkSXRlbToge31cclxuXHRcdH0pXHJcblx0fVxyXG5cdFxyXG5cdCRzY29wZS5nZXRPcmdTY2hlbWFzKClcclxuXHRcclxuXHQkc2NvcGUuJHdhdGNoKGZ1bmN0aW9uKCkgeyAvL3dhaXRpbmcgZm9yIE1lbnUgY29udHJvbGxlciB0byBmaWxsLWluIGdsb2JhbHNcclxuXHRcdCAgcmV0dXJuICRyb290U2NvcGUuZ2xvYmFscy5lbnZpcm9ubWVudHN9LCBcclxuXHRcdCAgYXN5bmMgZnVuY3Rpb24oIG5ld1ZhbHVlLCBvbGRWYWx1ZSkge1xyXG5cdFx0XHQgIFxyXG5cdFx0XHQgIC8vIGFkdmFuY2VkVXNlclByb3BMaXN0LnZhbHVlID0gZ2V0Q3VycmVudFVzZXIudmFsdWUuZW52aXJvbm1lbnRzW2FwcGxpY2F0aW9uU3RvcmUuY3VycmVudEVudl0/LlBhcmFtZXRlcnM/LkFkdmFuY2VkVXNlclByb3BlcnRpZXNEZWZcclxuXHJcblx0XHRcdCAgLy9jdXJyZW50VXNlci5vcmdhbmlzYXRpb24uUGFyYW1ldGVycy5BZHZhbmNlZFVzZXJQcm9wZXJ0aWVzRGVmWzBdLlVzZXJJZEZpZWxkXHJcblx0XHRcdFx0aWYgKG5ld1ZhbHVlICYmICEkc2NvcGUuYWR2YW5jZWRVc2VyUHJvcExpc3QgICkgIHtcclxuXHRcdFx0XHRcdFx0Ly9pZiAgKG5ld1ZhbHVlICYmIG9sZFZhbHVlICYmIE9iamVjdC5rZXlzKG5ld1ZhbHVlKS5sZW5ndGggPT0gT2JqZWN0LmtleXMob2xkVmFsdWUpLmxlbmd0aCApIHJldHVybiAvL2lmIG5vIGNoYW5nZXMgaW4gZW52aXJvbm1lbnRzXHJcblx0XHRcdFx0XHRcdCRzY29wZS5yZXNvdXJjZUxpc3QgPSBhd2FpdCAkc2NvcGUuZ2V0UmVzb3VyY2VzTGlzdCgpXHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHQvL29ubHkgaWYgbmV3RGF0YSBleGlzdHMgYW5kIGFkdmFuY2VkVXNlclByb3BMaXN0IGlzIGVtcHR5XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHQvLyRzY29wZS5hZHZhbmNlZFVzZXJQcm9wTGlzdCA9ICRyb290U2NvcGUuZ2xvYmFscy5lbnZpcm9ubWVudHNbJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRFbnZdPy5QYXJhbWV0ZXJzPy5BZHZhbmNlZFVzZXJQcm9wZXJ0aWVzRGVmXHJcblx0XHRcdFx0XHRcdCRzY29wZS5hZHZhbmNlZFVzZXJQcm9wTGlzdCA9ICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5vcmdhbmlzYXRpb24uUGFyYW1ldGVycy5BZHZhbmNlZFVzZXJQcm9wZXJ0aWVzRGVmXHJcblxyXG5cdFx0XHRcdFx0XHRpZiAoJHNjb3BlLmFkdmFuY2VkVXNlclByb3BMaXN0KSBcclxuXHRcdFx0XHRcdFx0XHRcdCRzY29wZS5hZHZhbmNlZFVzZXJQcm9wTGlzdC5mb3JFYWNoICggKGl0ZW0pID0+IFxyXG5cdFx0XHRcdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgcG9zID0gJHNjb3BlLnJlc291cmNlTGlzdC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZCB9KS5pbmRleE9mKGl0ZW0ucmVzb3VyY2VJZCk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGl0ZW0uc2VsZWN0ZWRJdGVtID0gJHNjb3BlLnJlc291cmNlTGlzdFtwb3NdXHJcblx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZUZpZWxkcyAoaXRlbS5yZXNvdXJjZUlkICxsYW5nICApXHJcblx0XHRcdFx0XHRcdFx0XHRcdC50aGVuKCAocmVzcCk9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgLy9kZWJ1Z2dlclxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIHJlc3AuZGF0YSA9IHJlc3AuZGF0YS5maWx0ZXIgKCAgKGl0ZW0pID0+IGl0ZW0uZ2VuZXJpY3R5cGU9PVwidXNlclwiKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICRzY29wZS5kYXRhc2V0RmllbGRzTGlzdFtpdGVtLnJlc291cmNlSWRdID0gcmVzcC5kYXRhXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgbGV0IGlkID0gTnVtYmVyKGl0ZW0uVXNlcklkRmllbGQuc3Vic3RyaW5nKDUpLnNwbGl0KFwiX1wiKVswXSlcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBsZXQgcG9zID0gcmVzcC5kYXRhLm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkIH0pLmluZGV4T2YoaWQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIGlmIChwb3M+PTApIGl0ZW0uc2VsZWN0ZWRGaWVsZCA9IHJlc3AuZGF0YVtwb3NdXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHR9XHJcblx0fSk7XHJcblxyXG5cdFxyXG5cdCRzY29wZS5wcmVwYXJlU2VsZWN0ZWQgPSBmdW5jdGlvbiAoKXtcclxuXHRcdCAgIC8vVE9ET1xyXG5cdH1cclxuXHJcbiAgICBDb2Rlc1NlcnZpY2UuZ2V0Q29kZXNCeU5hbWUoJ2xhbmd1YWdlcycsbGFuZykudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jb2RlTGFuZ3VhZ2VMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgfSk7XHJcbiAgICAgICAgXHJcblx0XHRcclxuXHQvLyBQT1BVTkkgTElTVFUgREVGSU5JQ0lKQSBPRCBSRVNVUlNBIChSRVNPVVJDRVMgTElTVClcclxuICAgICRzY29wZS5nZXRSZXNvdXJjZXNMaXN0ID0gYXN5bmMgZnVuY3Rpb24oKSAgXHJcblx0e1xyXG4gICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZUxpc3Q9PXVuZGVmaW5lZCkgJHNjb3BlLnJlc291cmNlTGlzdD1bXTtcclxuICAgICAgIHJldHVybiBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkxpc3RCeVR5cGUobGFuZywnZGF0YXNldCcpLnRoZW4oXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uKGRhdGEpIHsgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIHJldHVybiAgZGF0YS5kYXRhOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICBcclxuICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgIH0pO1xyXG4gICAgfVxyXG5cdFxyXG5cdFxyXG5cclxuICAgICRzY29wZS5nZXRHcm91cHMgPSBmdW5jdGlvbiAoKVxyXG5cdHtcclxuICAgICAgICAgIFVzZXJTZXJ2aWNlLmdldFVzZXJzR3JvdXBzKCdncm91cHMnKS50aGVuKGZ1bmN0aW9uKGRhdGEpe1xyXG4gICAgICAgICAgJHNjb3BlLmdyb3VwTGlzdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICRzY29wZS5ncm91cHNEb3dubG9hZGVkID0gdHJ1ZTtcclxuXHRcdFx0XHR9KTtcclxuXHJcbiAgICB9O1xyXG5cdFx0XHJcbiAgICAgICAgJHNjb3BlLmdldEdyb3VwcygpO1xyXG5cdFx0XHJcbiAgICAgICAgJHNjb3BlLmVkaXRVc2VyID0gZnVuY3Rpb24gKHVzZXIsaW5kZXgpIHsgIFxyXG4gICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRVc2VyID0gdXNlciAgXHJcblx0XHRcdCRzY29wZS5zZWxlY3RlZFVzZXJDb3B5W2luZGV4XSA9IGFuZ3VsYXIuY29weSh1c2VyKTsgXHJcbiAgICAgICAgICAgICRzY29wZS5uZXdVc2VyPWZhbHNlO1xyXG4gICAgICAgICAgICAkc2NvcGUuc2hvd1VzZXJEZXRhaWxzPXRydWU7XHJcbiAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZEluZGV4PWluZGV4O1xyXG4gICAgICAgIH07XHJcblx0XHRcclxuXHRcdFxyXG4gICAgICAgXHJcbiAgICAgICAgJHNjb3BlLnNob3dVc2VyRGV0YWlsc0ZuID0gZnVuY3Rpb24gKHNob3cpIHsgIFxyXG4gICAgICAgICAgIC8vZGVidWdnZXJcclxuXHRcdFx0aWYgKHNob3c9PWZhbHNlICYmICRzY29wZS5zZWxlY3RlZEluZGV4ID49IDApIHtcclxuXHRcdFx0XHQkc2NvcGUudXNlcnNbJHNjb3BlLnNlbGVjdGVkSW5kZXhdID0gJHNjb3BlLnNlbGVjdGVkVXNlckNvcHlbJHNjb3BlLnNlbGVjdGVkSW5kZXhdIFxyXG5cdFx0XHR9XHJcblx0XHRcclxuXHRcdFx0JHNjb3BlLnNob3dVc2VyRGV0YWlscz1zaG93O1xyXG4gICAgICAgICAgICAkc2NvcGUubmV3VXNlciA9IG51bGw7XHJcbiAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZFVzZXIgPSBudWxsO1xyXG4gICAgICAgICAgICAkc2NvcGUuYWN0aW9uVHlwZT1udWxsXHJcblx0XHRcdCRzY29wZS5zZWxlY3RlZEluZGV4ID0gbnVsbFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIFxyXG4gICAgICAgJHNjb3BlLmdldFVzZXJzRXh0ZW5kZWQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICBVc2VyU2VydmljZS5nZXRVc2Vyc0V4dGVuZGVkKCkudGhlbihmdW5jdGlvbihkYXRhKXtcclxuICAgICAgICAgICRzY29wZS51c2VycyA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICRzY29wZS51c2Vyc0xvYWRlZD10cnVlXHJcblx0XHRcdFx0fSk7XHJcblxyXG4gICAgICAgIH07XHJcblx0XHRcdFx0Ly8kc2NvcGUuZ2V0VXNlcnMoKTtcclxuICAgICAgICAkc2NvcGUuZ2V0VXNlcnNFeHRlbmRlZCgpO1xyXG4gICAgICBcclxuICAgICAgICRzY29wZS5uZXdVc2VyRnVuYyA9IGZ1bmN0aW9uIChmb3JtKSB7XHJcbiAgICAgICAgICAkc2NvcGUubmV3VXNlcj10cnVlO1xyXG4gICAgICAgICAgJHNjb3BlLmFjdGlvblR5cGU9MVxyXG4gICAgICAgICAgJHNjb3BlLnNob3dVc2VyRGV0YWlscz10cnVlO1xyXG4gICAgICAgICAgJHNjb3BlLnNlbGVjdGVkVXNlciA9IHsnVXNlcklkJzpudWxsLCdMYW5nJzpudWxsfTtcclxuICAgICAgICAgIGlmIChmb3JtIT11bmRlZmluZWQpXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGZvcm0uJHNldFByaXN0aW5lKCk7XHJcbiAgICAgICAgICAgIGlmIChmb3JtLnVzZXJuYW1lIT11bmRlZmluZWQpIGZvcm0udXNlcm5hbWUuJHNldFVudG91Y2hlZCgpO1xyXG4gICAgICAgICAgICAvL2Zvcm0ucGFzc3dvcmQuJHNldFVudG91Y2hlZCgpO1xyXG4gICAgICAgICAgICBpZiAoZm9ybS5maXJzdF9uYW1lIT11bmRlZmluZWQpIGZvcm0uZmlyc3RfbmFtZS4kc2V0VW50b3VjaGVkKCk7XHJcbiAgICAgICAgICAgIGlmIChmb3JtLmxhc3RfbmFtZSE9dW5kZWZpbmVkKSBmb3JtLmxhc3RfbmFtZS4kc2V0VW50b3VjaGVkKCk7XHJcbiAgICAgICAgICAgIGlmIChmb3JtLmVtYWlsIT11bmRlZmluZWQpIGZvcm0uZW1haWwuJHNldFVudG91Y2hlZCgpO1xyXG4gICAgICAgICAgICBpZiAoZm9ybS5sYW5nIT11bmRlZmluZWQpIGZvcm0ubGFuZy4kc2V0VW50b3VjaGVkKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICB9O1xyXG5cclxuICAgICRzY29wZS5pbnZpdGVVc2VyRnVuYyA9IGZ1bmN0aW9uIChmb3JtKSB7XHJcbiAgICAgICAgICAkc2NvcGUuaW52aXRlVXNlcj10cnVlO1xyXG4gICAgICAgICAgJHNjb3BlLmFjdGlvblR5cGU9MFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmIChmb3JtIT11bmRlZmluZWQpXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGZvcm0uJHNldFByaXN0aW5lKCk7XHJcbiAgICAgICAgICAgIGlmIChmb3JtLmVtYWlsIT11bmRlZmluZWQpIGZvcm0uZW1haWwuJHNldFVudG91Y2hlZCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgfTtcclxuICAgICAgICAkc2NvcGUuc2VuZEludml0YXRpb24gPSBmdW5jdGlvbiAoZm9ybSkge1xyXG4gICAgICAgICAgZm9ybS4kc2V0U3VibWl0dGVkKClcclxuICAgICAgICAgIGlmIChmb3JtLmVtYWlsLiR2YWxpZCAmJiBmb3JtLmdyb3Vwcy4kdmFsaWQpXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFVzZXJTZXJ2aWNlLkpvaW5JbnZpdGF0b24oJHNjb3BlLmludml0ZVVzZXJPYmopLnRoZW4oZnVuY3Rpb24oZGF0YSl7XHJcbiAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcblxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9ZWxzZSBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoJ1BsZWFzZSBlbnRlciB2YWxpZCBlLW1haWwhJywnd2FybmluZycpO1xyXG4gICAgICAgfTtcclxuICAgICAgIFxyXG4gICAgICAgICRzY29wZS5SZXNldFBhc3N3b3JkID0gZnVuY3Rpb24gKHVzZXJfaWQpIHtcclxuICAgICAgICAgIFVzZXJTZXJ2aWNlLlJlc2V0UGFzc3dvcmQodXNlcl9pZCkudGhlbihmdW5jdGlvbihkYXRhKXtcclxuICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZFVzZXIucmVzZXRQYXNzd29yZFJlZiA9IGRhdGEuZGF0YS5kaWdlc3Q7XHJcbiAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5kYXRhLm1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLmRhdGEubXNnLCdlcnJvcicpO1xyXG5cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgICAgJHNjb3BlLkNvcHlSZXNldFBhc3N3b3JkTGluayA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBsZXQgcGFzc19yZXNldF9saW5rID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbitcIi9jaGFuZ2VwYXNzL1wiKyRzY29wZS5zZWxlY3RlZFVzZXIucmVzZXRQYXNzd29yZFJlZlxyXG5cclxuICAgICAgICAgICAgICRzY29wZS5jb3B5UGFzc1Jlc2V0TGluayA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHBhc3NfcmVzZXRfbGluaykudGhlbiggXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lb3V0KGZ1bmN0aW9uKCl7JHNjb3BlLmNvcHlQYXNzUmVzZXRMaW5rID0gZmFsc2U7fSwxMDAwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4geyAgICAvKiBjbGlwYm9hcmQgd3JpdGUgZmFpbGVkICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoJ0NvcHkgdG8gY2xpcGJvYXJkIGZhaWxlZCcsJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyRzY29wZS5jb3B5UGFzc1Jlc2V0TGluayA9IGZhbHNlO30sMTAwMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgJHNjb3BlLnNhdmVVc2VyID0gZnVuY3Rpb24gKGlzVmFsaWQpIHsgICAgIFxyXG4gICAgICAgICAgIGlmIChpc1ZhbGlkKSAgIFxyXG4gICAgICAgICAgICAgICAgVXNlclNlcnZpY2UuU2F2ZVVzZXIoJHNjb3BlLnNlbGVjdGVkVXNlcikudGhlbihcclxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihkYXRhKSB7ICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZFVzZXI9ZGF0YS5kYXRhLnVzZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLm5ld1VzZXIpIHsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnVzZXJzLnB1c2goJHNjb3BlLnNlbGVjdGVkVXNlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm5ld1VzZXI9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS51c2Vyc1skc2NvcGUuc2VsZWN0ZWRJbmRleF0gPSAkc2NvcGUuc2VsZWN0ZWRVc2VyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5kYXRhLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICB9O1xyXG4gICAgICAgXHJcbiAgICAgIFxyXG4gICAgfVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdyb3Vwc0N0cmwgKCRzY29wZSwgJHJvb3RTY29wZSwgJHRpbWVvdXQsVXNlclNlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxHcmlkc3RlclNlcnZpY2UsTWVudVNlcnZpY2UsQ29kZXNTZXJ2aWNlLEthdGFseW9TdGF0ZU1hbmFnZXIpIHtcclxuICAgIFxyXG4gICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nOyBcclxuICAgICAkc2NvcGUuQ1RSTE5BTUU9J2dyb3Vwc0N0cmwnO1xyXG4gICBcdCAgIFxyXG4gICAgXHJcblx0Ly9kZWJ1Z2dlclxyXG4gICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlXHJcbiAgICAkc2NvcGUuZ3NydmMucmVzZXRCb2R5QmdDb2xvcigpICAgICAgIFxyXG5cclxuXHJcbiAgICAkc2NvcGUubWVudV9zZXJ2aWNlID0gTWVudVNlcnZpY2UgICAgXHJcbiAgICAkc2NvcGUubWVudV9zZXJ2aWNlLmNsZWFyU2lkZU1lbnUoKVxyXG5cclxuICAgIGxldCBtZW51VmlzaWJpbGl0eT0gJHNjb3BlLmtzbS5hZGRTdWJqZWN0KFwibWVudVZpc2liaWxpdHlcIixudWxsKTtcclxuICAgIGxldCBtZW51VmlzaWJpbGl0eU5hbWUgPSBtZW51VmlzaWJpbGl0eS5zdWJqZWN0Lm5hbWU7XHJcbiAgICAkc2NvcGUua3NtID0gS2F0YWx5b1N0YXRlTWFuYWdlciAgICAgXHJcbiAgICAkc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24obWVudVZpc2liaWxpdHlOYW1lLG1lbnVWaXNpYmlsaXR5TmFtZStcIkNoYW5nZWRcIiwge3N0YXRlOntzaWRlTWVudTpmYWxzZX19KTtcclxuICAgIFxyXG5cclxuICAgIC8qXHJcbiAgICBDb2Rlc1NlcnZpY2UuZ2V0Q29kZXNCeU5hbWUoJ2xhbmd1YWdlcycsbGFuZykudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jb2RlTGFuZ3VhZ2VMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgfSk7XHJcbiAgICAgICovICBcclxuICAgICAgICRzY29wZS5uZXdHcm91cCA9IHtHcm91cElkOm51bGx9O1xyXG4gICAgICAgICRzY29wZS5lZGl0R3JvdXAgPSBmdW5jdGlvbiAoZ3JvdXAsaW5kZXgpIHsgIFxyXG4gICAgICAgICAgLy8kc2NvcGUuc2VsZWN0ZWRHcm91cCA9IGFuZ3VsYXIuY29weShncm91cCk7XHJcblx0XHQgICRzY29wZS5zZWxlY3RlZEdyb3VwID0gZ3JvdXBcclxuICAgICAgICAgICRzY29wZS5pc1Nob3dOZXdHcm91cD1mYWxzZTtcclxuXHRcdCRzY29wZS5zZWxlY3RlZEluZGV4PWluZGV4O1xyXG4gICAgICAgIFx0XHR9O1xyXG5cclxuICAgICAgICAgJHNjb3BlLmRlc2VsZWN0R3JvdXAgPSBmdW5jdGlvbiAoKSB7ICBcclxuICAgICAgICAgICAgJHNjb3BlLm5ld0dyb3VwID0ge0dyb3VwSWQ6bnVsbH1cclxuICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkR3JvdXAgPSBudWxsXHJcbiAgICAgICAgICAgICRzY29wZS5pc1Nob3dOZXdHcm91cD1mYWxzZVxyXG5cclxuXHRcdH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLnNob3dOZXdHcm91cCA9IGZ1bmN0aW9uIChmb3JtKSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoZm9ybSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBmb3JtLiRzZXRQcmlzdGluZSgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGZvcm0uZ3JvdXBOYW1lIT11bmRlZmluZWQpIGZvcm0uZ3JvdXBOYW1lLiRzZXRVbnRvdWNoZWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICRzY29wZS5pc1Nob3dOZXdHcm91cD10cnVlO1xyXG4gICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgJHNjb3BlLmdldFVzZXJzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgVXNlclNlcnZpY2UuZ2V0VXNlcnNHcm91cHMoJ3VzZXJzJykudGhlbihmdW5jdGlvbihkYXRhKXtcclxuICAgICAgICAgICRzY29wZS51c2VyTGlzdCA9IGRhdGEuZGF0YTtcclxuXHRcdFx0XHR9KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgICAkc2NvcGUuZ3JvdXBzTG9hZGVkPWZhbHNlXHJcbiAgICAgICAkc2NvcGUuZ2V0R3JvdXBzRXh0ZW5kZWQgPSBmdW5jdGlvbiAoKSB7XHJcblxyXG4gICAgICAgICAgVXNlclNlcnZpY2UuZ2V0R3JvdXBzRXh0ZW5kZWQoKS50aGVuKGZ1bmN0aW9uKGRhdGEpe1xyXG4gICAgICAgICAgJHNjb3BlLmdyb3VwcyA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAkc2NvcGUuZ3JvdXBzTG9hZGVkPXRydWVcclxuXHJcblxyXG5cdFx0XHRcdH0sXHJcbiAgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1zZ1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5tc2cgfHwgZXJyb3IuZGF0YT8ubXNnKXtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLm1zZykgbXNnID0gZXJyb3IubXNnXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLmRhdGE/Lm1zZykgbXNnID0gZXJyb3IuZGF0YS5tc2dcclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZSBtc2cgPSBlcnJvclxyXG5cclxuICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IuZGF0YS5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuXHJcbiAgICAgICBcclxuICAgICAgIFxyXG4gICAgICAgIC8vRXhlY3V0ZSB0aGlzXHJcbiAgICAgICAgJHNjb3BlLmdldFVzZXJzKCk7XHJcbiAgICAgICAgJHNjb3BlLmdldEdyb3Vwc0V4dGVuZGVkKCk7IFxyXG5cclxuICAgIFxyXG4gICAgXHJcbiAgICAgICRzY29wZS5zYXZlR3JvdXAgPSBmdW5jdGlvbiAoc2VsZWN0ZWRHcm91cCxpc1ZhbGlkKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgIFVzZXJTZXJ2aWNlLlNhdmVHcm91cChzZWxlY3RlZEdyb3VwKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5kYXRhLm1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZEdyb3VwPWRhdGEuZGF0YS5ncm91cDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRHcm91cC5pZCA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRHcm91cC5Hcm91cElkLmlkPSRzY29wZS5zZWxlY3RlZEdyb3VwLmlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkR3JvdXAuaWQ9JHNjb3BlLnNlbGVjdGVkR3JvdXA/LmVpZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3JvdXBzLnB1c2goc2VsZWN0ZWRHcm91cCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3JvdXBzWyRzY29wZS5zZWxlY3RlZEluZGV4XSA9IHNlbGVjdGVkR3JvdXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRlc2VsZWN0R3JvdXAoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLmRhdGEubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgIH07XHJcbiAgICAgICBcclxuICAgICAgXHJcbiAgICB9XHJcblxyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB1c2Vyc1NlY3VyaXR5Q3RybCAoJHNjb3BlLCAkcm9vdFNjb3BlLCAkdGltZW91dCxVc2VyU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlLEdyaWRzdGVyU2VydmljZSxDb2Rlc1NlcnZpY2UsS2F0YWx5b1N0YXRlTWFuYWdlcixSZXNvdXJjZXNEYXRhU2VydmljZSkgXHJcbntcclxuICAgIFxyXG4gICAgJHNjb3BlLkNUUkxOQU1FPSd1c2Vyc1NlY3VyaXR5Q3RybCc7XHJcbiAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZzsgXHJcblx0dmFyIGxhbmdDb2RlID0gJHJvb3RTY29wZS5nbG9iYWxzPy5jdXJyZW50VXNlcj8ubGFuZ09iaj8uQ29kZSA/PyAnZW4tR0InXHRcclxuICAgICAgICAgICAgICAgICBcclxuICAgIC8vJHNjb3BlLmxhYmVsID1kaWN0W2xhbmddXHJcblx0JHNjb3BlLmxhYmVsID0gaW5kZXhKc29uW2xhbmdDb2RlXVxyXG5cdCRzY29wZS51c2VyRmlsdGVyPScnXHJcblx0JHNjb3BlLmdyb3VwRmlsdGVyPScnXHJcblx0JHNjb3BlLmdyb3Vwc2VjdXJpdHlEaWN0PXt9XHJcblx0JHNjb3BlLmdyb3Vwc2VjdXJpdHlMaXN0PVtdXHJcblx0JHNjb3BlLnVzZXJzZWN1cml0eURpY3Q9e31cclxuXHQkc2NvcGUudXNlcnNlY3VyaXR5TGlzdD1bXVxyXG5cclxuICAgICRzY29wZS5nc3J2YyA9IEdyaWRzdGVyU2VydmljZVxyXG4gICAgJHNjb3BlLmdzcnZjLnJlc2V0Qm9keUJnQ29sb3IoKSAgXHJcblxyXG5cclxuICAgIGxldCBtZW51VmlzaWJpbGl0eT0gJHNjb3BlLmtzbS5hZGRTdWJqZWN0KFwibWVudVZpc2liaWxpdHlcIixudWxsKTtcclxuICAgIGxldCBtZW51VmlzaWJpbGl0eU5hbWUgPSBtZW51VmlzaWJpbGl0eS5zdWJqZWN0Lm5hbWU7XHJcbiAgICBcclxuICAgICRzY29wZS5rc20gPSBLYXRhbHlvU3RhdGVNYW5hZ2VyIFxyXG4gICAgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKG1lbnVWaXNpYmlsaXR5TmFtZSxtZW51VmlzaWJpbGl0eU5hbWUrXCJDaGFuZ2VkXCIsIHtzdGF0ZTp7c2lkZU1lbnU6ZmFsc2V9fSk7XHJcblxyXG4gICAgICAgIFxyXG4gICAgJHNjb3BlLmdldEdyb3VwcyA9ICBhc3luYyBmdW5jdGlvbiAoKSBcclxuXHR7XHJcblx0XHQgJHNjb3BlLmdyb3Vwc0Rvd25sb2FkZWQgPSBmYWxzZTtcclxuICAgICAgICAgbGV0IGRhdGEgPSBhd2FpdCBVc2VyU2VydmljZS5nZXRVc2Vyc0dyb3VwcygnZ3JvdXBzJylcclxuXHRcdCRzY29wZS5ncm91cExpc3QgPSBkYXRhLmRhdGFcclxuXHRcdCRzY29wZS5ncm91cE5hbWUgPSB7fVxyXG5cdFx0ICRzY29wZS5ncm91cExpc3QuZm9yRWFjaCggaXRlbSA9PiB7XHJcblx0XHRcdFx0ICAkc2NvcGUuZ3JvdXBOYW1lW2l0ZW0uaWRdID0gaXRlbS5uYW1lXHJcblx0XHR9KVxyXG5cclxuXHRcdC8vJHNjb3BlLmdldEdyb3Vwc1NlY3VyaXR5KClcclxuICAgIH07XHJcblx0XHJcblx0ICRzY29wZS5nZXRVc2Vycz0gIGFzeW5jIGZ1bmN0aW9uICgpIFxyXG57XHJcblx0XHQgJHNjb3BlLnVzZXJzRG93bmxvYWRlZCA9IGZhbHNlO1xyXG4gICAgICAgICBsZXQgZGF0YSA9IGF3YWl0IFVzZXJTZXJ2aWNlLmdldFVzZXJzR3JvdXBzKCd1c2VycycpXHJcblx0XHQkc2NvcGUudXNlckxpc3QgPSBkYXRhLmRhdGE7XHJcblx0XHQkc2NvcGUudXNlck5hbWUgPSB7fVxyXG5cdFx0IGRhdGEuZGF0YS5mb3JFYWNoKCBpdGVtID0+IHtcclxuXHRcdFx0XHQgICRzY29wZS51c2VyTmFtZVtpdGVtLmlkXSA9IGl0ZW0ubmFtZVxyXG5cdFx0XHQgIH0pXHJcblx0XHJcblx0XHQvLyAkc2NvcGUuZ2V0VXNlcnNTZWN1cml0eSgpXHJcblxyXG4gICAgfTtcclxuXHRcdFx0XHQgXHJcblx0XHJcblx0XHJcblx0ICRzY29wZS5zYXZlVXNlcnNHcm91cHNTZWN1cml0eT0gZnVuY3Rpb24gKHJlY29yZCxpbmRleCkgeyAgXHJcblxyXG5cdFx0ICBVc2VyU2VydmljZS5zYXZlR3JvdXBzU2VjdXJpdHkocmVjb3JkKS50aGVuKGZ1bmN0aW9uKGRhdGEpe1xyXG5cdFx0XHRcclxuXHRcdCAgfSlcclxuICAgICB9O1xyXG5cdFx0XHJcblx0XHRcdFxyXG5cdFx0XHRcclxuXHRcdCRzY29wZS5jaGFuZ2VkRmlsdGVyID0gZnVuY3Rpb24oKSB7XHJcblxyXG5cdFx0XHRcdCRzY29wZS5saXN0UmVhZHk9ZmFsc2VcclxuXHRcdFx0XHQkc2NvcGUuZ3JvdXBzZWN1cml0eUxpc3QubGVuZ3RoPTBcclxuXHRcdFx0XHRmb3IgKGNvbnN0IFtrZXksIGl0ZW1dIG9mIE9iamVjdC5lbnRyaWVzKCRzY29wZS5ncm91cHNlY3VyaXR5RGljdCkpIHtcclxuXHRcdFx0XHRcdCAgaWYgKGl0ZW0gJiYgaXRlbS5yZXNvdXJjZWRlZl9uYW1lLmluY2x1ZGVzKCRzY29wZS51c2VyRmlsdGVyKSkgJHNjb3BlLmdyb3Vwc2VjdXJpdHlMaXN0LnB1c2goaXRlbSlcclxuXHRcdFx0XHQgIH1cclxuXHRcdFxyXG5cdFx0XHRcdCR0aW1lb3V0KCBmdW5jdGlvbigpeyRzY29wZS5saXN0UmVhZHk9dHJ1ZX0gKVxyXG5cclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0XHRcclxuXHQkc2NvcGUuZ2V0R3JvdXBzU2VjdXJpdHlEaWN0ID0gYXN5bmMgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgbGV0IGRhdGEgPSBhd2FpdCBVc2VyU2VydmljZS5nZXRHcm91cHNTZWN1cml0eSgpXHJcblxyXG5cdFx0ICAvL2ZpcnN0IGNyZWF0ZSBkaWN0aW9uYXJ5IHdpdGggcmVzb3VyY2VzICBoYXZpbmcgZWFjaCBcImFjY2Vzc1wiIGxpc3Qgb2YgZ3JvdXAgb2JqZWN0c1xyXG5cdFx0ICBkYXRhLmRhdGEuZm9yRWFjaCggaXRlbSA9PiB7XHJcblx0XHRcdCAgaWYgKCAkc2NvcGUuZ3JvdXBOYW1lPy5baXRlbS5ncm91cF9pZF0pIFxyXG5cdFx0XHRcdFx0aXRlbVsnZ3JvdXBfbmFtZSddID0gJHNjb3BlLmdyb3VwTmFtZT8uW2l0ZW0uZ3JvdXBfaWRdXHJcblx0XHRcdCAgaWYgICggJHNjb3BlLmdyb3Vwc2VjdXJpdHlEaWN0W2l0ZW0ucmVzb3VyY2VkZWZ1aWRdID09IHVuZGVmaW5lZCkgLy9maXJzdCB0aW1lXHJcblx0XHRcdFx0XHQkc2NvcGUuZ3JvdXBzZWN1cml0eURpY3RbaXRlbS5yZXNvdXJjZWRlZnVpZF0gPSB7XHJcblx0XHRcdFx0XHRcdFx0cmVzb3VyY2VkZWZ1aWQ6IGl0ZW0ucmVzb3VyY2VkZWZ1aWQsXHJcblx0XHRcdFx0XHRcdFx0dmVyc2lvbjogaXRlbS52ZXJzaW9uLCBcclxuXHRcdFx0XHRcdFx0XHRyZXNvdXJjZWRlZl9uYW1lOiBpdGVtLnJlc291cmNlZGVmX25hbWUsIFxyXG5cdFx0XHRcdFx0XHRcdGdyb3VwczogW3tpZDogaXRlbS5ncm91cF9pZCwgbmFtZTogaXRlbS5ncm91cF9uYW1lfV0gLFxyXG5cdFx0XHRcdFx0XHRcdHVzZXJzOiBbXVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0ICBlbHNlIFxyXG5cdFx0XHRcdCAgJHNjb3BlLmdyb3Vwc2VjdXJpdHlEaWN0W2l0ZW0ucmVzb3VyY2VkZWZ1aWRdLmdyb3Vwcy5wdXNoKHtpZDogaXRlbS5ncm91cF9pZCwgbmFtZTogaXRlbS5ncm91cF9uYW1lfSlcclxuXHRcdCAgfSlcclxuXHRcdCAgXHJcblx0XHQgIFxyXG5cdFx0ICAvLyRzY29wZS5jaGFuZ2VkRmlsdGVyKClcclxuXHRcdCAgLy8kc2NvcGUuZ3JvdXBzRG93bmxvYWRlZCA9IHRydWU7XHQgICAgXHJcblx0XHJcbiAgICB9O1xyXG5cdFxyXG5cdFxyXG5cdFx0JHNjb3BlLmdldFVzZXJzU2VjdXJpdHlEaWN0ID0gYXN5bmMgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgbGV0IGRhdGEgPSBhd2FpdCBVc2VyU2VydmljZS5nZXRVc2Vyc1NlY3VyaXR5KClcclxuXHJcblx0XHQgIC8vZmlyc3QgY3JlYXRlIGRpY3Rpb25hcnkgd2l0aCByZXNvdXJjZXMgIGhhdmluZyBlYWNoIFwiYWNjZXNzXCIgbGlzdCBvZiBncm91cCBvYmplY3RzXHJcblx0XHQgIGRhdGEuZGF0YS5mb3JFYWNoKCBpdGVtID0+IHtcclxuXHRcdFx0ICBpZiAoICRzY29wZS51c2VyTmFtZT8uW2l0ZW0udXNlcl9pZF0pIFxyXG5cdFx0XHRcdFx0aXRlbVsndXNlcl9uYW1lJ10gPSAkc2NvcGUudXNlck5hbWU/LltpdGVtLnVzZXJfaWRdXHJcblx0XHRcdCAgaWYgICggJHNjb3BlLmdyb3Vwc2VjdXJpdHlEaWN0W2l0ZW0ucmVzb3VyY2VkZWZ1aWRdID09IHVuZGVmaW5lZCkgIC8vb25seSByZWxldmFudCBkYXRhIGlzIGtlcHRcclxuXHRcdFx0XHQgXHJcblx0XHRcdFx0XHQkc2NvcGUuZ3JvdXBzZWN1cml0eURpY3RbaXRlbS5yZXNvdXJjZWRlZnVpZF0gPSB7XHJcblx0XHRcdFx0XHRcdFx0cmVzb3VyY2VkZWZ1aWQ6IGl0ZW0ucmVzb3VyY2VkZWZ1aWQsXHJcblx0XHRcdFx0XHRcdFx0dmVyc2lvbjogaXRlbS52ZXJzaW9uLCBcclxuXHRcdFx0XHRcdFx0XHRyZXNvdXJjZWRlZl9uYW1lOiBpdGVtLnJlc291cmNlZGVmX25hbWUsIFxyXG5cdFx0XHRcdFx0XHRcdHVzZXJzOiBbe2lkOiBpdGVtLnVzZXJfaWQsIG5hbWU6IGl0ZW0udXNlcl9uYW1lfV0gLFxyXG5cdFx0XHRcdFx0XHRcdGdyb3VwczogW11cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdCAgZWxzZSBcclxuXHRcdFx0XHQgICRzY29wZS5ncm91cHNlY3VyaXR5RGljdFtpdGVtLnJlc291cmNlZGVmdWlkXS51c2Vycy5wdXNoKHtpZDogaXRlbS51c2VyX2lkLCBuYW1lOiBpdGVtLnVzZXJfbmFtZX0pXHJcblx0XHQgIH0pXHJcblx0XHQgXHJcblx0XHQgIC8vJHNjb3BlLmNoYW5nZWRGaWx0ZXIoKVxyXG5cdFx0IC8vICRzY29wZS51c2Vyc0Rvd25sb2FkZWQgPSB0cnVlO1x0ICAgIFxyXG4gICAgfTtcclxuXHRcclxuXHQvLyBQcm9taXNlIGNoYWluaW5nXHJcblx0JHNjb3BlLmdldEdyb3VwcygpLnRoZW4oIChkYXRhKSA9PiBcclxuXHQkc2NvcGUuZ2V0VXNlcnMoKSkudGhlbiggKGRhdGEpID0+XHJcblx0JHNjb3BlLmdldFVzZXJzU2VjdXJpdHlEaWN0KCkpLnRoZW4oIChkYXRhKSA9PlxyXG5cdCRzY29wZS5nZXRHcm91cHNTZWN1cml0eURpY3QoKSkudGhlbiAoKGRhdGEpID0+IHtcclxuXHRcdC8vZGVidWdnZXJcclxuXHRcdCAvL2NvbnZlcnQgZGljdCB0byBsaXN0ICBcclxuXHRcdCAgZm9yIChjb25zdCBpdGVtIGluICRzY29wZS5ncm91cHNlY3VyaXR5RGljdCkge1xyXG5cdFx0XHQgICRzY29wZS5ncm91cHNlY3VyaXR5TGlzdC5wdXNoKCRzY29wZS5ncm91cHNlY3VyaXR5RGljdFtpdGVtXSlcclxuXHRcdCAgfVxyXG5cdFx0ICAkc2NvcGUuY2hhbmdlZEZpbHRlcigpXHJcblx0XHQgICRzY29wZS5ncm91cHNEb3dubG9hZGVkID0gdHJ1ZTtcdFxyXG5cdFxyXG5cdH0pXHJcbiAgICAgICBcclxuICAgICAgXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBvcmdhbmlzYXRpb25DdHJsICgkc2NvcGUsICRyb290U2NvcGUsICRsb2NhdGlvbiwgJHRpbWVvdXQsU2V0dGluZ3NTZXJ2aWNlLENvZGVzU2VydmljZSxHcmlkc3RlclNlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxLYXRhbHlvU3RhdGVNYW5hZ2VyKSB7XHJcbiAgICBcclxuICBcclxuICAgICRzY29wZS5DVFJMTkFNRT0nb3JnYW5pc2F0aW9uQ3RybCc7XHJcbiAgICAkc2NvcGUub3JnYW5pc2F0aW9uSWQgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIub3JnYW5pc2F0aW9uLmlkO1xyXG4gICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZ09iai5pZDtcclxuICAgIC8vZ2V0IGFsbCBjb2Rlc1xyXG4gICAgICBcclxuICAgIC8vc3RhdHVzXHJcbiAgIC8qIENvZGVzU2VydmljZS5nZXRDb2Rlc0J5TmFtZSgnY29kZXN0YXR1cycsbGFuZykudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICRzY29wZS5zdGF0dXNMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgfSk7XHJcbiAgICAgKi8gXHJcbiAgICAkc2NvcGUuZ3NydmMgPSBHcmlkc3RlclNlcnZpY2VcclxuICAgICRzY29wZS5nc3J2Yy5yZXNldEJvZHlCZ0NvbG9yKClcclxuICAgICRzY29wZS5zaG93VGFiID0gMTtcclxuICAgIFxyXG4gICAgbGV0IG1lbnVWaXNpYmlsaXR5PSAkc2NvcGUua3NtLmFkZFN1YmplY3QoXCJtZW51VmlzaWJpbGl0eVwiLG51bGwpO1xyXG4gICAgbGV0IG1lbnVWaXNpYmlsaXR5TmFtZSA9IG1lbnVWaXNpYmlsaXR5LnN1YmplY3QubmFtZTtcclxuICAgICRzY29wZS5rc20gPSBLYXRhbHlvU3RhdGVNYW5hZ2VyICAgICBcclxuICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbihtZW51VmlzaWJpbGl0eU5hbWUsbWVudVZpc2liaWxpdHlOYW1lK1wiQ2hhbmdlZFwiLCB7c3RhdGU6e3NpZGVNZW51OmZhbHNlfX0pO1xyXG4gICAgXHJcbiAgICAkc2NvcGUuZ2V0T3JnYW5pc2F0aW9uSW5mbyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBcclxuICAgICAgICBTZXR0aW5nc1NlcnZpY2UuZ2V0T3JnYW5pc2F0aW9uSW5mbygkc2NvcGUub3JnYW5pc2F0aW9uSWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAkc2NvcGUub3JnYW5pc2F0aW9uID0gZGF0YS5kYXRhO1xyXG5cclxuICAgICAgICAgICAgJHNjb3BlLmdldENyZWRpdHMoJ29yZycpXHJcbiAgICAgICAgICAgICAvL2NvdW50cnlcclxuICAgICAgICAgICAvKiBDb2Rlc1NlcnZpY2UuZ2V0Q29kZXNCeU5hbWUoJ2NvdW50cmllcycsbGFuZykudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmNvdW50cnlMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmNvdW50cnlMaXN0LnVuc2hpZnQoe2lkOm51bGx9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgIFxyXG4gICAgICAgICAgICAvL2luZHVzdHJ5XHJcbiAgICAgICAgICAgIENvZGVzU2VydmljZS5nZXRDb2Rlc0J5TmFtZSgnaW5kdXN0cnknLGxhbmcpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5pbmR1c3RyeUxpc3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuaW5kdXN0cnlMaXN0LnVuc2hpZnQoe2lkOm51bGx9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICovICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5kYXRhLm1zZywnZXJyb3InKTtcclxuICAgICAgICB9KTtcclxuICAgIFxyXG4gICAgfTtcclxuXHJcbiAgICAkc2NvcGUuZ2V0Q3JlZGl0cyA9IGZ1bmN0aW9uIChiYWxhbmNlVHlwZSkge1xyXG4gICAgICAgIFxyXG4gICAgICAgIFNldHRpbmdzU2VydmljZS5nZXRDcmVkaXRzKGJhbGFuY2VUeXBlKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLmJhbGFuY2VzID0gZGF0YS5kYXRhPy5iYWxhbmNlcztcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICRzY29wZS50cmFucyA9IGRhdGEuZGF0YT8udHJhbnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLmRhdGEubXNnLCdlcnJvcicpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgXHJcbiAgICB9O1xyXG4gICAgJHNjb3BlLmZvcm1hdE51bWJlciA9IGZ1bmN0aW9uKG51bWJlcilcclxuICAgIHtcclxuICAgICAgICByZXR1cm4gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KG51bWJlcilcclxuICAgIH1cclxuICAgICRzY29wZS5HZW5lcmF0ZUFwaUtleXMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgbGV0IGFwaV9pZDtcclxuICAgICAgICBpZiAoJHNjb3BlLm9yZ2FuaXNhdGlvbi5BcGlVc2VyID09IG51bGwpIGFwaV9pZCA9ICRzY29wZS5vcmdhbmlzYXRpb24uQXBpVXNlcjtcclxuICAgICAgICBlbHNlIGFwaV9pZCA9ICRzY29wZS5vcmdhbmlzYXRpb24uQXBpVXNlci51c2VybmFtZTtcclxuICAgICAgICBTZXR0aW5nc1NlcnZpY2UuR2VuZXJhdGVBcGlLZXlzKGFwaV9pZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICRzY29wZS5hcGlfaWQgPSBkYXRhLmRhdGEuYXBpX2lkO1xyXG4gICAgICAgICAgICAkc2NvcGUuYXBpX2tleSA9IGRhdGEuZGF0YS5hcGlfa2V5O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEuZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICB9KTtcclxuICAgIFxyXG4gICAgfTtcclxuXHJcbiAgICAgJHNjb3BlLmdldE9yZ2FuaXNhdGlvbkluZm8oKTtcclxuICAgICBcclxuICAgICRzY29wZS5zYXZlT3JnYW5pc2F0aW9uID0gZnVuY3Rpb24gKGlzVmFsaWQpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgIGlmIChpc1ZhbGlkKSB7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgXHJcbiAgICAgICAgICAgIFNldHRpbmdzU2VydmljZS5zYXZlT3JnYW5pc2F0aW9uSW5mbygkc2NvcGUub3JnYW5pc2F0aW9uKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhPy5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yPy5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgICAgIFxyXG59OyIsIid1c2Ugc3RyaWN0JztcclxuXHJcbi8qXHJcbmltcG9ydCBLYXRhbHlvQ3RybHMgZnJvbSAnLi4vLi4vMDAwMV9pbmRleC9hbmd1bGFySlMva2F0YWx5b0N0cmxzLmpzJztcclxudmFyIG1vZHVsZU5hbWU9J3Rhc2tzQ3RybHMnO1xyXG5leHBvcnQgZGVmYXVsdCBtb2R1bGVOYW1lO1xyXG5cclxudmFyIG1vZHVsZSA9IGFuZ3VsYXIubW9kdWxlKCdLYXRhbHlvQ3RybHMnLEthdGFseW9DdHJscyk7XHJcbiovXHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0YXNrTGlzdEN0cmwgKCRzY29wZSwgJHJvb3RTY29wZSwgQXV0aGVudGljYXRpb25TZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLHVpR3JpZENvbnN0YW50cyxNZXNzYWdpbmdTZXJ2aWNlLCR0aW1lb3V0KSB7XHJcbiAgICBcclxuICAgICAgICAkc2NvcGUuQ1JUUkxOQU1FPSd0YXNrTGlzdEN0cmwnO1xyXG4gICAgICAgICBcclxuICAgICAgICAvL0dldCBkYXRhIGZyb20gc2VydmVyXHJcbiAgICAkc2NvcGUuZ3JpZE9wdGlvbnMgPSB7XHJcbiAgICAgICBjb2x1bW5EZWZzOiBbXHJcbiAgICAgICB7IG5hbWU6ICdpZCcsIGRpc3BsYXlOYW1lOiAnSUQnLCB0eXBlOiAnbnVtYmVyJywgd2lkdGg6JzUlJyxlbmFibGVIaWRpbmc6IGZhbHNlLCB2aXNpYmxlOiB0cnVlIH0sXHJcbiAgICAgICB7IG5hbWU6ICdyZXNvdXJjZWRlZmxhbmdfc2V0WzBdLk5hbWUnLCBkaXNwbGF5TmFtZTogJ1Rhc2sgbmFtZSd9LFxyXG4gICAgICAgeyBuYW1lOiAncmVzb3VyY2VkZWZsYW5nX3NldFswXS5TdWJqZWN0JywgZGlzcGxheU5hbWU6ICdUYXNrIHN1YmplY3QnIH0sXHJcbiAgICAgICB7IG5hbWU6ICdyZXNvdXJjZWRlZmxhbmdfc2V0WzBdLkRlc2NyaXB0aW9uJywgZGlzcGxheU5hbWU6ICdUYXNrIGRlc2NyaXB0aW9uJyB9LFxyXG4gICAgICAgLy8gIHsgbmFtZTogJ3Jlc291cmNlZGVmbGFuZ19zZXRbMF0uTGFuZy5uYW1lJywgZGlzcGxheU5hbWU6ICdMYW5ndWFnZSd9LFxyXG4gICAgICAgIC8vIHsgbmFtZTogJ1Jlc291cmNlVHlwZS5Db2Rlc0RldGFpbExhbmdbMF0uVmFsdWUnLCBkaXNwbGF5TmFtZTogJ1Rhc2sgdHlwZScgfSxcclxuICAgICAgICAvLyB7IG5hbWU6ICdDcmVhdGVkRGF0ZVRpbWUnLCBkaXNwbGF5TmFtZTogJ0RhdGUgY3JlYXRlZCcsZW5hYmxlSGlkaW5nOiBmYWxzZSx0eXBlOiAnZGF0ZScsIGNlbGxGaWx0ZXI6ICdkYXRlOlxcJ2RkLk1NLnl5eXkgSEg6TU06c3M6c3NzXFwnJyB9LFxyXG4gICAgICAgIC8vIHsgbmFtZTogJ0NyZWF0ZWRCeS5uYW1lJywgZGlzcGxheU5hbWU6ICdDcmVhdGVkIGJ5J30sXHJcbiAgICAgICB7IG5hbWU6ICdTdGF0dXMuQ29kZXNEZXRhaWxMYW5nWzBdLlZhbHVlJywgZGlzcGxheU5hbWU6ICdTdGF0dXMnfSxcclxuICAgICAgIF0sXHJcbiAgICAgICBlbmFibGVHcmlkTWVudTogdHJ1ZSxcclxuICAgICAgIHNob3dHcmlkRm9vdGVyOiB0cnVlLFxyXG4gICAgICAgc2hvd0NvbHVtbkZvb3RlcjogdHJ1ZSwgXHJcbiAgICAgICBtdWx0aVNlbGVjdDogZmFsc2UsXHJcbiAgICAgICBlbmFibGVIb3Jpem9udGFsU2Nyb2xsYmFyIDogMCwgXHJcbiAgICAgICBlbmFibGVWZXJ0aWNhbFNjcm9sbGJhciA6IDIsXHJcbiAgICAgICBlbmFibGVGaWx0ZXJpbmc6IHRydWUsXHJcbiAgICAgICBlbmFibGVSb3dIZWFkZXJTZWxlY3Rpb246IGZhbHNlLFxyXG4gICAgICAgZW5hYmxlQ29sdW1uUmVzaXppbmc6IHRydWUsXHJcbiAgICAgICB1c2VFeHRlcm5hbFBhZ2luYXRpb246IHRydWUsXHJcbiAgICAgICBwYWdpbmF0aW9uUGFnZVNpemVzOiBbNSwgMTAsIDIwLCA1MCwgMTAwLDIwMCw1MDAsMTAwMF0sXHJcbiAgICAgICBlbmFibGVQYWdpbmF0aW9uQ29udHJvbHM6IGZhbHNlLFxyXG4gICAgICBcclxuICAgfTtcclxuICAgXHJcbiAgICAgIHZhciBwYWdpbmF0aW9uT3B0aW9ucyA9IHtcclxuICAgICAgICBwYWdlTnVtYmVyOiAxLFxyXG4gICAgICAgIHBhZ2VTaXplOiAxMCxcclxuICAgICAgICBzb3J0OiBudWxsXHJcbiAgICAgIH07IFxyXG5cclxuXHJcbiAgICAkc2NvcGUuZ3JpZE9wdGlvbnMub25SZWdpc3RlckFwaSA9IGZ1bmN0aW9uIChncmlkQXBpKSB7XHJcbiAgICAgICAgLy9zZXQgZ3JpZEFwaSBvbiBzY29wZVxyXG4gICAgICAgICRzY29wZS5ncmlkQXBpID0gZ3JpZEFwaTtcclxuICAgICAgICBcclxuICAgICAgICAgIGdyaWRBcGkuc2VsZWN0aW9uLm9uLnJvd1NlbGVjdGlvbkNoYW5nZWQoJHNjb3BlLGZ1bmN0aW9uKHJvdyl7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLnRhc2tTZWxlY3RlZD1yb3cuaXNTZWxlY3RlZDtcclxuICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkVGFzayA9IHJvdy5lbnRpdHkuaWQ7XHJcbiAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZFRhc2tPYmplY3QgPSByb3cuZW50aXR5O1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgfVxyXG4gICBcclxuICAgXHJcbiAgIFxyXG4gJHNjb3BlLmdldFRhc2tEZWYgPSBmdW5jdGlvbih1cmxfbmV4dCx1cmxfcHJldixuZXdfcGFnZSxwYWdlX3NpemUpe1xyXG4gICBcclxuICAgXHJcbiAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgIFxyXG4gICAgaWYgKG5ld19wYWdlPT11bmRlZmluZWQpIG5ld19wYWdlID0gcGFnaW5hdGlvbk9wdGlvbnMucGFnZU51bWJlcjtcclxuICAgIFxyXG4gICAgaWYgKHBhZ2Vfc2l6ZT09dW5kZWZpbmVkKSBwYWdlX3NpemUgPSBwYWdpbmF0aW9uT3B0aW9ucy5wYWdlU2l6ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICBpZiAoTWF0aC5jZWlsKCRzY29wZS50b3RhbENvdW50L3BhZ2Vfc2l6ZSk8bmV3X3BhZ2UpXHJcbiAgICB7XHJcbiAgICAgIG5ld19wYWdlID0gTWF0aC5jZWlsKCRzY29wZS50b3RhbENvdW50L3BhZ2Vfc2l6ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgXHJcbiAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZURlZkJ5TGFuZ0J5VHlwZVBhZ2luYXRlZChsYW5nLFwidGFza1wiLHVybF9uZXh0LHVybF9wcmV2LG5ld19wYWdlLHBhZ2Vfc2l6ZSkudGhlbihmdW5jdGlvbihkYXRhKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdyaWRPcHRpb25zLmRhdGEgPSBkYXRhLmRhdGEucmVzdWx0cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5uZXh0UGFnZSA9IGRhdGEuZGF0YS5uZXh0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnByZXZpb3VzUGFnZSA9IGRhdGEuZGF0YS5wcmV2aW91cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50b3RhbENvdW50PWRhdGEuZGF0YS5jb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jdXJyZW50UGFnZT1uZXdfcGFnZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5udW1QYWdlcyA9IE1hdGguY2VpbCgkc2NvcGUudG90YWxDb3VudC9wYWdlX3NpemUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnBhZ2VTaXplID0gcGFnZV9zaXplO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdyaWRPcHRpb25zLnRvdGFsSXRlbXM9JHNjb3BlLnRvdGFsQ291bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza3NMb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tzTG9hZGVkPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgJHNjb3BlLnBhZ2VDaGFuZ2VkID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAkc2NvcGUuZ2V0VGFza0RlZigkc2NvcGUubmV4dFBhZ2UsJHNjb3BlLnByZXZpb3VzUGFnZSwkc2NvcGUuY3VycmVudFBhZ2UsJHNjb3BlLnBhZ2VTaXplKTtcclxuICAgICAgfTtcclxuICAgICAgXHJcbiAgICAvL25hcHVuaSBncmlkIHMgZGVmaW5pY2lqYW1hIHJlc3Vyc2FcclxuICAgICRzY29wZS5wYWdlQ2hhbmdlZCgpO1xyXG4gICAgXHJcbiAgICAgICBcclxuICAgIFxyXG4gICAgfVxyXG5leHBvcnQgZnVuY3Rpb24gdGFza0Zvcm1DdHJsICgkdGltZW91dCwkc2NvcGUsICRyb290U2NvcGUsIEF1dGhlbnRpY2F0aW9uU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSxUYXNrRGF0YVNlcnZpY2UsUHJvY2Vzc2luZ1NlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxXaWRnZXRSZWdpc3RlclNlcnZpY2UsJHN0YXRlUGFyYW1zLEdyaWRzdGVyU2VydmljZSxkcmFndWxhU2VydmljZSwkZWxlbWVudCxXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlKSB7XHJcbiAgICBcclxuICAgICAgLy9jb25zb2xlLmxvZyhcInJlc291cmNlRm9ybUN0cmwgc2NvcGU6XCIgKyAkc2NvcGUuJGlkKVxyXG4gICAgICAkc2NvcGUucmVzb3VyY2VPYmplY3QgPSAkc3RhdGVQYXJhbXMucmVzb3VyY2U7XHJcbiAgICAgICRzY29wZS5mb3JtTG9hZGVkID0gZmFsc2U7XHJcbiAgICAgICRzY29wZS5yZXNvdXJjZUlkPSRzdGF0ZVBhcmFtcy5pZDtcclxuICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlO1xyXG4gICAgICAkc2NvcGUuc2hvd0ZpZWxkUHJvcGVydGllcyA9IGZhbHNlO1xyXG4gICAgICAkc2NvcGUuQ1RSTE5BTUU9J3Rhc2tGb3JtQ3RybCc7XHJcbiAgICAgXHJcbiAgICAgICRzY29wZS5mb3JtVHlwZT0gJHN0YXRlUGFyYW1zLmZvcm1UeXBlO1xyXG4gICAgICBcclxuICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uID0ge1Jlc291cmNlRGVmSWRfaWQ6JHNjb3BlLnJlc291cmNlSWR9O1xyXG4gICAgICAkc2NvcGUudGFza0RlZmluaXRpb24uZm9ybV90eXBlPSRzY29wZS5mb3JtVHlwZTtcclxuICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLmZvcm1fZGVmaW5pdGlvbj10cnVlO1xyXG4gICAgICAkc2NvcGUuZ3JpZHN0ZXJUeXBlPVwidGFza1wiO1xyXG4gICAgICBcclxuICAgICAgLy8kcm9vdFNjb3BlLiRlbWl0KCdSZWdpc3RlclRhc2tXaWRnZXRzJyxudWxsKTtcclxuICAgICAgXHJcbiAgICAgIFdpZGdldFJlZ2lzdGVyU2VydmljZS5FbWl0UmVnaXN0ZXJUYXNrV2lkZ2V0RXZlbnQoKTtcclxuICAgICAgXHJcbiAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UuZGVSZWdpc3RlckFsbFdpZGdldHMoKTtcdFxyXG4gICAgICBcclxuICAgICAgJHNjb3BlLmhpZGVUYWJJbmRleCA9IHRydWU7XHJcbiAgICAgICRzY29wZS5vdXRjb21lcyA9IHtvdXRjb21lQ29kZXNEZXRhaWxzOltdfTtcclxuICAgICAgJHNjb3BlLm91dGNvbWVzLnNlbGVjdGVkT3V0Y29tZUluZGV4PS0xO1xyXG4gICAgICAkc2NvcGUuZGFzaGJvYXJkID17d2lkZ2V0czp7bGF5b3V0OiBHcmlkc3RlclNlcnZpY2UuZ2V0RW1wdHlUYXNrRm9ybSgpLGRhdGE6e319fTtcclxuICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAvLyRzY29wZS5kYXNoYm9hcmQud2lkZ2V0cz1Hcmlkc3RlclNlcnZpY2UuUHJvY2Vzc1dpZGdldHMoJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzT3JpZ2luYWwpO1xyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgICRzY29wZS5Gb3JtTG9ja1VubG9jayA9IGZ1bmN0aW9uKClcclxuICAgICAge1xyXG4gICAgICAgICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtTG9ja2VkPSEkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybUxvY2tlZDtcclxuICAgICAgXHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICAgJHNjb3BlLlNob3dGb3JtVmlldyA9IGZ1bmN0aW9uKHZpZXdJZCxsb2NrZWQpXHJcbiAgICAgIHtcclxuXHJcbiAgICAgICAgICAgIHZhciBiYWcgPSBkcmFndWxhU2VydmljZS5maW5kKCRyb290U2NvcGUsICdiYWctdGFzaycpO1xyXG4gICAgICAgICAgICBpZiAoYmFnKSB7XHJcbiAgICAgICAgICAgIGRyYWd1bGFTZXJ2aWNlLmRlc3Ryb3koJHJvb3RTY29wZSwgJ2JhZy10YXNrJylcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgYmFnID0gZHJhZ3VsYVNlcnZpY2UuZmluZCgkcm9vdFNjb3BlLCAnYmFnLWRhdGFzZXQnKTtcclxuICAgICAgICAgICAgaWYgKGJhZykge1xyXG4gICAgICAgICAgICBkcmFndWxhU2VydmljZS5kZXN0cm95KCRyb290U2NvcGUsICdiYWctZGF0YXNldCcpXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT12aWV3SWQ7XHJcbiAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtTG9ja2VkID0gbG9ja2VkO1xyXG4gICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0Rm9ybVZpZXdUeXBlKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUpO1xyXG4gICAgICAgIFxyXG4gICAgICB9O1xyXG4gICAgIFxyXG4gICAgIFxyXG4gICAgIC8vICRzY29wZS4kd2F0Y2goJ3Rhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc1VzZXJzLkFzc2lnbmVlTGlzdCcsZnVuY3Rpb24obmV3VmFsdWUsb2xkVmFsdWUpeyBcclxuICAgICAgLy8gICAgICAgIC8vIHdhdGNoIHRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc1VzZXJzLkFzc2lnbmVlTGlzdFxyXG4gICAgICAvLyAgICAgIH0pO1xyXG4gICAgICBcclxuICAgICAgICAkc2NvcGUuc2hvd0hpZGVQcm9wZXJ0aWVzID0gZnVuY3Rpb24odmFsdWUpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5nc3J2Yy5zZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAkc2NvcGUuc2hvd0ZpZWxkUHJvcGVydGllcz0kc2NvcGUuZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzT3BlbmVkKCk7XHJcbiAgICAgICBcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICAkc2NvcGUuJHdhdGNoKCdnc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKScsZnVuY3Rpb24obmV3VmFsdWUsb2xkVmFsdWUpe1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGlmIChuZXdWYWx1ZSE9b2xkVmFsdWUpXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRGaWVsZD0kc2NvcGUuZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzKCk7XHJcbiAgICAgICAgICAgICAgICRzY29wZS5zaG93RmllbGRQcm9wZXJ0aWVzID0gJHNjb3BlLmdzcnZjLmdldEZpZWxkUHJvcGVydGllc09wZW5lZCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgICAgICRzY29wZS4kd2F0Y2goJ2dzcnZjLmdldEZpZWxkUHJvcGVydGllcygpJyxmdW5jdGlvbihuZXdWYWx1ZSxvbGRWYWx1ZSl7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlIT1vbGRWYWx1ZSlcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZEZpZWxkPSRzY29wZS5nc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXMoKTtcclxuICAgICAgICAgICAgICAgJHNjb3BlLnNob3dGaWVsZFByb3BlcnRpZXMgPSAkc2NvcGUuZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzT3BlbmVkKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgJHNjb3BlLmdldFRhc2tQYXJhbWV0ZXJzID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5HZXRUYXNrUGFyYW1ldGVycygkc2NvcGUucmVzb3VyY2VJZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICRzY29wZS5hYy5hbGVydHMgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuZGF0YS5sZW5ndGg+MCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50YXNrRGVmaW5pdGlvbiA9IGRhdGEuZGF0YVswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLmZvcm1fdHlwZT0kc2NvcGUuZm9ybVR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50YXNrRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb249dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkc2NvcGUudGFza0RlZmluaXRpb24uSW5maW5pdGVUYXNrKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2dldCBUYXNrIE91dGNvbWVzIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgkc2NvcGUudGFza0RlZmluaXRpb24uVGFza091dGNvbWVIZWFkSWQgPT0gbnVsbCB8fCAkc2NvcGUudGFza0RlZmluaXRpb24uVGFza091dGNvbWVIZWFkSWQ9PXVuZGVmaW5lZClcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAkc2NvcGUudGFza0RlZmluaXRpb24uVGFza091dGNvbWVIZWFkSWQ9MDsgLy92aWRqZXRpIGRhIGxpIG92byB0cmViYSBNSUdPUlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0ICAgXHJcblx0XHRcdFx0XHRcdFx0XHQgICBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvL1Rhc2tEYXRhU2VydmljZS5HZXRUYXNrQ29kZXNBY3Rpb25zQnlJZCgkc2NvcGUucmVzb3VyY2VJZCxsYW5nLCRzY29wZS50YXNrRGVmaW5pdGlvbi5UYXNrT3V0Y29tZUhlYWRJZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0VGFza0RhdGFTZXJ2aWNlLkdldFRhc2tPdXRjb21lcygkc2NvcGUucmVzb3VyY2VJZCwkc2NvcGUudGFza0RlZmluaXRpb24uVGFza091dGNvbWVIZWFkSWQsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7ICAgICAgICAgICAgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAkc2NvcGUub3V0Y29tZXMub3V0Y29tZUNvZGVzRGV0YWlscyA9IGRhdGEuZGF0YTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIC8vcHJpa2F6aSBkZWZhdWx0bm8gZGV0YWxqZSBvZCBwcnZvZ1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgaWYgKCRzY29wZS5vdXRjb21lcy5vdXRjb21lQ29kZXNEZXRhaWxzLmxlbmd0aD4wKSAgICRzY29wZS5jbGlja2VkT3V0Y29tZSA9ICRzY29wZS5vdXRjb21lcy5vdXRjb21lQ29kZXNEZXRhaWxzWzBdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgfTtcclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAkc2NvcGUuZ2V0UmVzb3VyY2VGb3JtID0gZnVuY3Rpb24gKGFmdGVyU2F2ZSxhZnRlclNhdmVNc2cscmVmcmVzaCkge1xyXG4gICAgICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5nZXRSZXNvdXJjZUZvcm0oJHNjb3BlLnJlc291cmNlSWQsJHNjb3BlLmZvcm1UeXBlLGxhbmcscmVmcmVzaCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmRhdGEud2lkZ2V0cy5sZW5ndGg+MClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5kYXNoYm9hcmQud2lkZ2V0cy5sYXlvdXQ9ZGF0YS5kYXRhLndpZGdldHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZURlZmluaXRpb249IGRhdGEuZGF0YS5yZXNvdXJjZURlZmluaXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zPXtmb3JtVmlld1R5cGU6Mixmb3JtTG9ja2VkOmZhbHNlfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0Rm9ybUxvY2tTdGF0dXMoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ3NydmMuc2V0Rm9ybVZpZXdUeXBlKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUpO1xyXG4gICAgICAgIFxyXG4gICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuaW1wb3J0YW50RmllbGRzID0gICRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZ2V0RmllbGRzKCRzY29wZS5sb2NhbFZhcnNXaWRnZXQuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0LCBbJ1JlcXVpcmVkJywgJ1JlYWRPbmx5J10pOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzID0gR3JpZHN0ZXJTZXJ2aWNlLlByb2Nlc3NXaWRnZXRzKCRzY29wZS5kYXNoYm9hcmQud2lkZ2V0c09yaWdpbmFsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZm9ybUxvYWRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhZnRlclNhdmUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGFmdGVyU2F2ZU1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgfTtcclxuICBcclxuICAgICBcclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgU0FWRSBUQVNLIEZPUk0gREVGSU5JVElPTlxyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuICAkc2NvcGUuc2F2ZVRhc2tGb3JtID0gZnVuY3Rpb24gKCkge1xyXG4gICAgLy9pZiAoaXNWYWxpZCkge1xyXG4gICAgICAvL2NvZGVcclxuICAgICAgICAgXHJcbiAgICAgICAgICRzY29wZS5hY3Rpdml0eS5hY3Rpdml0eU1lc3NhZ2UgPSBQcm9jZXNzaW5nU2VydmljZS5zZXRBY3Rpdml0eU1zZygnU2F2aW5nIHRhc2sgZm9ybSBmb3IgJyskc2NvcGUucmVzb3VyY2VJZCk7XHJcbiAgICAgICAgICRzY29wZS5mb3JtTG9hZGVkPWZhbHNlOyAgICAgICBcclxuICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2Uuc2F2ZVJlc291cmNlRm9ybSgkc2NvcGUuZGFzaGJvYXJkLndpZGdldHMubGF5b3V0LCRzY29wZS5yZXNvdXJjZUlkLCRzY29wZS5mb3JtVHlwZSkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAkc2NvcGUuZGFzaGJvYXJkLndpZGdldHMgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5nZXRSZXNvdXJjZUZvcm0odHJ1ZSxkYXRhLm1zZyx0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAvLyAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgU0FWRSBUQVNLIEJVVFRPTlNcclxuXHQvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICBcclxuICAkc2NvcGUuc2F2ZVRhc2tCdG5zID0gZnVuY3Rpb24gKCkge1xyXG4gXHJcbiAgICBcclxuICAgICAgICAgLy8kc2NvcGUuYWN0aXZpdHkuYWN0aXZpdHlNZXNzYWdlID0gUHJvY2Vzc2luZ1NlcnZpY2Uuc2V0QWN0aXZpdHlNc2coJ1NhdmluZyB0YXNrIGJ0bnMgZm9yICcrJHNjb3BlLnJlc291cmNlSWQpO1xyXG4gICAgICAgICBcclxuICAgICAgICAgVGFza0RhdGFTZXJ2aWNlLlNhdmVUYXNrQnRucygkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmluaXRUYXNrQnRuRGVmLCRzY29wZS5yZXNvdXJjZUlkLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiBcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHQvLyAgICAgICAgICAgU0FWRSBUQVNLIE9VVENPTUVTXHJcblx0Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgIFxyXG4gICAgICAkc2NvcGUuc2F2ZVRhc2tPdXRjb21lcyA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgIFxyXG5cdFx0Ly9jaGVjayBmb3IgZXJyb3JzXHJcblx0XHR2YXIgc2F2ZVRhc2tPdXRjb21lc0Vycm9ycz1bXTtcclxuICAgIGlmICghJHNjb3BlLnRhc2tEZWZpbml0aW9uLkluZmluaXRlVGFzaylcclxuXHRcdHtcclxuICAgICAgZm9yKHZhciBpPTA7aTwkc2NvcGUub3V0Y29tZXMub3V0Y29tZUNvZGVzRGV0YWlscy5sZW5ndGg7aSsrKXtcclxuICAgICAgICBpZiBcdCgkc2NvcGUub3V0Y29tZXMub3V0Y29tZUNvZGVzRGV0YWlsc1tpXS5vdXRjb21lTmFtZT09bnVsbCkgc2F2ZVRhc2tPdXRjb21lc0Vycm9ycy5wdXNoKCdPdXRjb21lIG5hbWUgbXVzdCBiZSBkZWZpbmVkIScpO1xyXG4gICAgICAgIC8vaWYgXHQoJHNjb3BlLm91dGNvbWVzLm91dGNvbWVDb2Rlc0RldGFpbHNbaV0uYWN0aW9ucy5sZW5ndGg9PTApIHNhdmVUYXNrT3V0Y29tZXNFcnJvcnMucHVzaCgnT3V0Y29tZSBhY3Rpb24gbXVzdCBiZSBkZWZpbmVkIScpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICgkc2NvcGUub3V0Y29tZXMub3V0Y29tZUNvZGVzRGV0YWlscy5sZW5ndGg9PTApIHtcdHNhdmVUYXNrT3V0Y29tZXNFcnJvcnMucHVzaChcIk91dGNvbWUgbXVzdCBiZSBkZWZpbmVkIVwiKTt9O1xyXG4gICAgfVxyXG4gICAgaWYgKHNhdmVUYXNrT3V0Y29tZXNFcnJvcnMubGVuZ3RoPjApIFxyXG5cdFx0XHRNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2Uoc2F2ZVRhc2tPdXRjb21lc0Vycm9ycywnZXJyb3InKSAvL01lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnTm8gb3V0Y29tZXMgZGVmaW5lZCEnLCdlcnJvcicpO31cclxuXHRcdGVsc2UgXHJcblx0XHR7XHJcblx0XHRcclxuXHRcdFx0dmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcblx0XHRcdFxyXG5cdFx0XHQvL2FrbyBuZSBwb3N0b2ppIG91dGNvbWVIZWFkIGEgaW1hIHBvZGF0YWthIG9uZGEga3JlaXJhbW8gbm92aSBvdXRjb21lSGVhZCBcclxuXHRcdFx0aWYgKCgkc2NvcGUudGFza0RlZmluaXRpb24uVGFza091dGNvbWVIZWFkSWQgPT0gbnVsbCB8fCAkc2NvcGUudGFza0RlZmluaXRpb24uVGFza091dGNvbWVIZWFkSWQ9PXVuZGVmaW5lZCB8fCAkc2NvcGUudGFza0RlZmluaXRpb24uVGFza091dGNvbWVIZWFkSWQ9PTApICYmICEkc2NvcGUudGFza0RlZmluaXRpb24uSW5maW5pdGVUYXNrKVxyXG5cdFx0XHR7XHJcblx0XHRcdCAgIGlmICgkc2NvcGUub3V0Y29tZXMub3V0Y29tZUNvZGVzRGV0YWlscy5sZW5ndGg+MCkge1xyXG5cdFx0XHQgICBcclxuXHRcdFx0XHQgICRzY29wZS5PdXRjb21lSGVhZCA9IHtBY3RpdmU6dHJ1ZSxpZDpudWxsfTtcclxuXHRcdFx0XHQgICRzY29wZS5PdXRjb21lSGVhZC5MYW5nID0gbGFuZztcclxuXHRcdFx0XHQgICRzY29wZS5PdXRjb21lSGVhZC5PdXRjb21lTmFtZT0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLm5hbWU7XHJcblx0XHRcdFx0ICAkc2NvcGUuT3V0Y29tZUhlYWQuTmFtZT0kc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLm5hbWU7XHJcbiAgICAgICAgICAgXHJcblx0XHRcdFx0ICBUYXNrRGF0YVNlcnZpY2UuU2F2ZU91dGNvbWVEZWZpbml0aW9uKCRzY29wZS5PdXRjb21lSGVhZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcblx0XHRcdFx0XHRcdCAgXHJcblx0XHRcdFx0XHRcdCAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLlRhc2tPdXRjb21lSGVhZElkPWRhdGEuZGF0YS5kYXRhLmlkO1xyXG5cdFx0XHRcdFx0XHQgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEubXNnLCdzdWNjZXNzJyk7ICAgICBcclxuXHRcdFx0XHRcdFx0ICAkc2NvcGUuc2F2ZVRhc2tPdXRjb21lc0ZpbmFsaXplKCk7XHJcblx0XHRcdFx0XHQgICBcclxuXHRcdFx0XHQgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICAgICAgICAgICAgICAgICBcclxuXHRcdFx0XHRcdFx0TWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuXHRcdFx0XHRcdH0pOyBcclxuICAgICAgICAgfVxyXG5cclxuXHRcdCAgfSAgLy9ha28gdmXEhyBwb3N0b2ppIG91dGNvbWVoZWFkIG9uZGEgc2FtbyBzbmltYW1vIG91dGNvbWUgXHJcblx0XHQgIGVsc2UgICRzY29wZS5zYXZlVGFza091dGNvbWVzRmluYWxpemUoKTtcclxuICAgICAgIH1cclxuXHQgICB9XHJcblx0ICBcclxuXHQgIFxyXG5cdCAgICRzY29wZS5zYXZlVGFza091dGNvbWVzRmluYWxpemUgPSBmdW5jdGlvbigpe1xyXG5cdFx0ICAgXHJcblx0XHQgICBcdHZhciBvdXRjb21lcyA9IHtvdXRjb21lSWQ6JHNjb3BlLnRhc2tEZWZpbml0aW9uLlRhc2tPdXRjb21lSGVhZElkLGRlZmF1bHRPdXRjb21lSWQ6JHNjb3BlLnRhc2tEZWZpbml0aW9uLkRlZmF1bHRPdXRjb21lSWQsb3V0Y29tZXM6JHNjb3BlLm91dGNvbWVzLm91dGNvbWVDb2Rlc0RldGFpbHN9O1xyXG5cclxuXHRcdFx0VGFza0RhdGFTZXJ2aWNlLlNhdmVUYXNrT3V0Y29tZXMoJHNjb3BlLnJlc291cmNlSWQsISRzY29wZS50YXNrRGVmaW5pdGlvbi5JbmZpbml0ZVRhc2ssb3V0Y29tZXMsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUub3V0Y29tZXMub3V0Y29tZUNvZGVzRGV0YWlscyA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5vdXRjb21lcy5zZWxlY3RlZE91dGNvbWVJbmRleD0tMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLm1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHRcdFx0XHRcdFx0XHQgIFxyXG5cdCAgIH1cclxuXHQgICBcclxuXHQgICBcclxuICAgIFxyXG4gICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cdC8vICAgICAgICAgICBDQUxMIEZVTkNUSU9OUyBGT1IgRkVUQ0hJTkcgVEFTSyBGT1JNLCBQQVJBTUVURVJTLCBPVVRDT01FU1xyXG5cdC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICBcclxuICAgICBpZiAoJHNjb3BlLnJlc291cmNlSWQgIT0gdW5kZWZpbmVkKVxyXG4gICAgICB7XHJcbiAgICAgICAgJHNjb3BlLmdldFJlc291cmNlRm9ybSgpO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAgJHNjb3BlLmdldFRhc2tQYXJhbWV0ZXJzKCk7XHJcbiAgICAgICBcclxuICAgIFxyXG4gICBcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gdGFza0RlZmluaXRpb25DdHJsICgkc2NvcGUsICRyb290U2NvcGUsJHRpbWVvdXQsdWlHcmlkQ29uc3RhbnRzLFByb2Nlc3NpbmdTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsR3JpZHN0ZXJTZXJ2aWNlLENvZGVzU2VydmljZSwkc3RhdGVQYXJhbXMsVGFza0RhdGFTZXJ2aWNlLFRhc2tEZWZpbml0aW9uU2VydmljZSxSZXNvdXJjZXNEYXRhU2VydmljZSwkc3RhdGUsZHJhZ3VsYVNlcnZpY2UsS2F0YWx5b1N0YXRlTWFuYWdlcikge1xyXG4gICAgICBcclxuICAgICAgJHNjb3BlLmlzX3N1cGVydXNlciA9ICAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIuaXNfc3VwZXJ1c2VyO1xyXG4gICAgICAvLyRzY29wZS5vcmdhbmlzYXRpb25faWQgPSAgJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLnVlcC5PcmdhbmlzYXRpb247XHJcblx0ICAkc2NvcGUub3JnYW5pc2F0aW9uX2lkID0gICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlcj8ub3JnYW5pc2F0aW9uPy5pZFxyXG4gICAgICBcclxuICAgICAgJHNjb3BlLkNUUkxOQU1FPSd0YXNrRGVmaW5pdGlvbkN0cmwnO1xyXG4gICAgICAvLyAgLy90YXNrRGVmaW5pdGlvbkN0cmxcclxuICAgICAgXHJcbiAgICAgICRzY29wZS50YXNrSWQ9cGFyc2VJbnQoJHN0YXRlUGFyYW1zLmlkLnNwbGl0KFwiX1wiKVswXSkgICAgIFxyXG4gICAgICAkc2NvcGUudGFza1VpZD0kc3RhdGVQYXJhbXMuaWQ7XHJcbiAgICAgICBcclxuICAgICAgIFxyXG4gICAgICAkc2NvcGUudGRzPVRhc2tEZWZpbml0aW9uU2VydmljZTtcclxuICAgICAgJHNjb3BlLmdzcnZjID0gR3JpZHN0ZXJTZXJ2aWNlO1xyXG4gICAgICAkc2NvcGUuZmlyc3REb3dubG9hZEFzc2lnbm1lbnRzID0gZmFsc2U7XHJcbiAgICAgICRzY29wZS5sb2NhbFZhcnMgPSB7fTtcclxuICAgICAgJHNjb3BlLmxvY2FsVmFycy5nc3J2YyA9IEdyaWRzdGVyU2VydmljZTtcclxuICAgICAgJHNjb3BlLmxvY2FsVmFycy5yZWxvYWRUb29sYm94ID0gZmFsc2U7XHJcbiAgICAgIC8vJHNjb3BlLmdzcnZjLmRlc3Ryb3lEcmFndWxhKCdiYWctcmVzb3VyY2UnKTtcclxuICAgICAgLy8kc2NvcGUuZ3NydmMuZGVzdHJveURyYWd1bGEoJ2JhZy10YXNrJyk7XHJcbiAgICAgICRzY29wZS5rc20gPSBLYXRhbHlvU3RhdGVNYW5hZ2VyO1xyXG4gICAgICAkc2NvcGUudGRzLlNldFNjb3BlRm9yRGVmaW5pdGlvbigkc2NvcGUpO1xyXG4gICAgICAkc2NvcGUuZ3NydmMucmVzZXRCb2R5QmdDb2xvcigpICAgXHJcbiAgICBcclxuICAgICAgJHNjb3BlLmxvYWRpbmdBY3Rpb25zPXtsb2FkaW5nOmZhbHNlfTsgIFxyXG4gICAgICAkc2NvcGUuY2hlY2tsaXN0ID0ge2Zvcm06dHJ1ZSxhc3NpZ246ZmFsc2Usb3V0Y29tZXM6ZmFsc2Usc3RhdHVzOnRydWUscGFyYW1zOmZhbHNlfTtcclxuICAgICAgJHNjb3BlLm91dGNvbWVzID0ge291dGNvbWVDb2Rlc0RldGFpbHM6W119O1xyXG4gICAgICAkc2NvcGUuY29kZXNBY3Rpb25zID0ge2NvZGVzQWN0aW9uc0xpc3Q6W10sY29kZXNBY3Rpb25zTGlzdE9yaWdpbmFsOltdfTtcclxuICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uPXt9O1xyXG4gICAgICAkc2NvcGUudGFzaz17fTtcclxuICAgICAgdmFyIGxhbmcgPSAkcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICBcclxuICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLlRhc2tUeXBlT2JqZWN0PXt9O1xyXG4gICAgICAkc2NvcGUudGFza0RlZmluaXRpb24uTm9MaW1pdCA9IGZhbHNlO1xyXG4gICAgICAkc2NvcGUudGFza0RlZmluaXRpb24uTWF4QWN0dWFsT3duZXJzID0gMDtcclxuICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLkF1dG9TdGFydCA9IGZhbHNlO1xyXG4gICAgICAkc2NvcGUudGFza0RlZmluaXRpb24uQXV0b0NsYWltID0gdHJ1ZTtcclxuICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLkF1dG9Bc3NpZ24gPSB0cnVlO1xyXG4gICAgICAkc2NvcGUudGFza0RlZmluaXRpb24uQXV0b0luaXRpYXRlID0gdHJ1ZTtcclxuICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLkF1dG9FeGVjdXRlID0gZmFsc2U7XHJcbiAgICAgICRzY29wZS50YXNrRGVmaW5pdGlvbi5TZWxmQXNzaWduZWQgPSB0cnVlO1xyXG4gICAgICAkc2NvcGUudGFza0RlZmluaXRpb24uQ2FuRGVsZWdhdGUgPSBmYWxzZTtcclxuICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLkNhbkhvbGQgPSBmYWxzZTtcclxuICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLkNhblJlbGVhc2UgPSBmYWxzZTtcclxuICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLkluZmluaXRlVGFzayA9IGZhbHNlO1xyXG4gICAgICAkc2NvcGUudGFza0RlZmluaXRpb24uUHVibGljVGFzayA9IGZhbHNlO1xyXG4gICAgICAkc2NvcGUudGFza0RlZmluaXRpb24uQXNzaWduVHlwZU93bmVyID0gJ3MnXHJcbiAgICAgICRzY29wZS50YXNrRGVmaW5pdGlvbi5Bc3NpZ25UeXBlSW5pdGlhdG9yPSdhJ1xyXG4gICAgICAkc2NvcGUudGFza0RlZmluaXRpb24uU2V0dXBBc3NpZ25tZW50cz10cnVlXHJcbiAgICAgICRzY29wZS50YXNrRGVmaW5pdGlvbi5SZXNvdXJjZURlZklkID0gJHNjb3BlLnRhc2tJZDtcclxuICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLlJlc291cmNlRGVmVWlkID0gJHNjb3BlLnRhc2tVaWQ7XHJcbiAgICAgICRzY29wZS50YXNrRGVmaW5pdGlvbi5VbmlxdWVOYW1lID0gJHNjb3BlLnRhc2tJZDtcclxuICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLk9yZ2FuaXNhdGlvbklkID0gMTtcclxuICAgICAgLy8kc2NvcGUudGFza0RlZmluaXRpb24uQ3JlYXRlZEJ5ID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLnVzZXJpZDtcclxuICAgICAgLy8kc2NvcGUudGFza0RlZmluaXRpb24uQ2hhbmdlZEJ5ID0gJHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLnVzZXJpZDtcclxuICAgICAgLy8kc2NvcGUudGFza0RlZmluaXRpb24uVmVyc2lvbkZyb20gPSAxO1xyXG4gICAgICAvLyRzY29wZS50YXNrRGVmaW5pdGlvbi5WZXJzaW9uVG8gPSAxO1xyXG4gICAgICAkc2NvcGUudGFza0RlZmluaXRpb24uVGFza091dGNvbWVDb2RlSWQgPSBudWxsO1xyXG4gICAgICAkc2NvcGUudGFza0RlZmluaXRpb24uRGVmYXVsdE91dGNvbWVJZCA9IG51bGw7XHJcbiAgICAgICRzY29wZS50YXNrU3RhdHVzRnJvbT17J2lkJzpudWxsLCduYW1lJzpudWxsfTtcclxuICAgICAgJHNjb3BlLnRhc2tTdGF0dXNUbz17J2lkJzpudWxsLCduYW1lJzpudWxsfTtcclxuICAgICAvLyAkc2NvcGUudGFza1R5cGVMaXN0PVtdO1xyXG4gICAgICRzY29wZS50YXNrRGVmaW5pdGlvbi5QYXJhbWV0ZXJzID0ge307XHJcbiAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLmZvcm1fZGVmaW5pdGlvbj10cnVlO1xyXG4gICAgICRzY29wZS50YXNrRGVmaW5pdGlvbi5mb3JtUGFyYW1zPXtmb3JtVmlld1R5cGU6MSxzaG93R3JpZE5hdmlnYXRpb246ZmFsc2V9OyBcclxuXHJcbiAgICAgXHJcbiAgICAgICRyb290U2NvcGUubWFya0FsbCA9IHtcclxuICAgICAgICAgIHJlYWRPbmx5OiBmYWxzZSxcclxuICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZVxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgICAgLy8gJHNjb3BlLiR3YXRjaCgndGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzVXNlcnMuQXNzaWduZWVMaXN0JyxmdW5jdGlvbihuZXdWYWx1ZSxvbGRWYWx1ZSl7ICAgIFxyXG4gICAgICAgICAgLy8gIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgJHNjb3BlLmxvY2FsVmFycy5pbml0VGFza1R5cGVTZWxlY3Rpb24gPSBmdW5jdGlvbiAoKVxyXG4gICAgICB7XHJcbiAgICAgICAgIGxldCBhPSAkc2NvcGUudGFza1R5cGVMaXN0LmZpbmQoIGUgPT4gZS5pZCA9PSAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLlRhc2tUeXBlKSAgICAgICAgICAgICBcclxuICAgICAgICAgICRzY29wZS50YXNrRGVmaW5pdGlvbi5UYXNrVHlwZU9iamVjdCA9IGFcclxuICAgICAgfVxyXG4gICAgICAkc2NvcGUubG9jYWxWYXJzLm1hcmtBbGwgPSBmdW5jdGlvbih3aGF0KXtcclxuICAgICAgICAgICRyb290U2NvcGUubWFya0FsbFt3aGF0XSA9IHRydWVcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0RmllbGRzID0gZnVuY3Rpb24oZm9ybSxyZXF1aXJlZEZpZWxkcyxtc2cpXHJcbiAgICAgIHtcclxuICAgICAgICAgbGV0IHJlc3VsdFByb3BlcnRpZXMgPSAgVGFza0RhdGFTZXJ2aWNlLmdldEZpZWxkcyhmb3JtLCByZXF1aXJlZEZpZWxkcyk7XHJcbiAgICAgICAgIGlmIChtc2cpIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShtc2csJ2luZm8nKTtcclxuICAgICAgICAgcmV0dXJuIHJlc3VsdFByb3BlcnRpZXNcclxuICAgICAgfTsgXHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgICAkc2NvcGUuY2xlYXJUYXNrQXNzaWdubWVudHMgPSBmdW5jdGlvbigpXHJcbiAgICAge1xyXG4gICAgICAgIC8vICAvL2NsZWFyVGFza0Fzc2lnbm1lbnRzXHJcbiAgICAgICAgICRzY29wZS50YXNrQXNzaWdubWVudHMgPSB7XHJcbiAgICAgICAgICAgIHBvdGVudGlhbE93bmVyc1VzZXJzOntcclxuICAgICAgICAgICAgICAgICAgQXNzaWduZWVMaXN0OltdLFxyXG4gICAgICAgICAgICAgICAgICBBc3NpZ25UeXBlOlwiYVwiXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgcG90ZW50aWFsT3duZXJzR3JvdXBzOiB7XHJcbiAgICAgICAgICAgICAgIEFzc2lnbmVlTGlzdDpbXSxcclxuICAgICAgICAgICAgICAgQXNzaWduVHlwZTpcImFcIlxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHRhc2tJbml0aWF0b3JzVXNlcnM6e1xyXG4gICAgICAgICAgICAgIEFzc2lnbmVlTGlzdDpbXSxcclxuICAgICAgICAgICAgICAgIEFzc2lnblR5cGU6XCJhXCJcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB0YXNrSW5pdGlhdG9yc0dyb3Vwczp7XHJcbiAgICAgICAgICAgICAgIEFzc2lnbmVlTGlzdDpbXSxcclxuICAgICAgICAgICAgICAgQXNzaWduVHlwZTpcImFcIlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICBcclxuICAgICB9XHJcbiAgICAgXHJcbiAgICAgICRzY29wZS5jbGVhclRhc2tBc3NpZ25tZW50cygpO1xyXG4gICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAkc2NvcGUudGFza0RlZmluaXRpb24uQXNzaWduVHlwZUFkbWluPVwiXCI7XHJcbiAgICAgICBcclxuXHJcbiAgICAgICAgdmFyIGZvcm1fY2hhbmdlZCA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAkc2NvcGUudGRzLnNob3dIaWRlVGFza0Zvcm0oJycpO1xyXG4gICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyRzY29wZS50ZHMuc2hvd0hpZGVUYXNrRm9ybShkYXRhKTt9LDMwMClcclxuICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgbGV0IHRhc2tEZWZpbml0aW9uU3RhdGU9ICRzY29wZS5rc20uYWRkU3ViamVjdCgndGFza0RlZmluaXRpb25TdGF0ZScrJHNjb3BlLnRhc2tJZCxudWxsKTtcclxuICAgICAgICBsZXQgdGFza0RlZmluaXRpb25TdGF0ZU5hbWUgPSB0YXNrRGVmaW5pdGlvblN0YXRlLnN1YmplY3QubmFtZTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBsZXQgYWN0aW9uX2Zvcm1fY2hhbmdlZCA9ICRzY29wZS5rc20uYWRkQWN0aW9uKHRhc2tEZWZpbml0aW9uU3RhdGVOYW1lLFwiZm9ybVR5cGVDaGFuZ2VkXCIsZm9ybV9jaGFuZ2VkKTtcclxuXHJcbiAgICAgICAgLy9wb3B1bGF0ZSBkcm9wZG93blxyXG4gICAgICAgIENvZGVzU2VydmljZS5nZXRDb2Rlc0J5TmFtZSgnX1RBU0tfVFlQRV8nLGxhbmcpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhLmxlbmd0aD4wKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza1R5cGVMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tUeXBlTGlzdCA9IFt7aWQ6MSxuYW1lOidTaW5nbGUgaW5zdGFuY2UnfSx7aWQ6MixuYW1lOidNdWx0aXBsZSBpbnN0YW5jZSd9XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgXHJcblxyXG4gICAgICAgICBDb2Rlc1NlcnZpY2UuZ2V0Q29kZXNCeU5hbWUoJ2NvZGVzdGF0dXMnLGxhbmcpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VTdGF0dXNMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICBDb2Rlc1NlcnZpY2UuZ2V0Q29kZXNCeU5hbWUoJ19BUFBTXycsbGFuZykudGhlbihmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZVRhZ3NMaXN0ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gIFxyXG4gICRzY29wZS5zZXRBdXRvRXhlY3V0ZT0gZnVuY3Rpb24oKXtcclxuICAgIFxyXG4gICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLkF1dG9FeGVjdXRlPSEkc2NvcGUudGFza0RlZmluaXRpb24uQXV0b0V4ZWN1dGU7XHJcbiAgICBpZiAgKCRzY29wZS50YXNrRGVmaW5pdGlvbi5BdXRvRXhlY3V0ZSlcclxuICAgIHtcclxuICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLlNlbGZBc3NpZ25lZD10cnVlO1xyXG4gICAgICAkc2NvcGUudGFza0RlZmluaXRpb24uSW5maW5pdGVUYXNrPWZhbHNlO1xyXG4gICAgfS8vZWxzZVxyXG4gICAvLyB7XHJcbiAgICAvLyAgICAgJHNjb3BlLnRhc2s9YW5ndWxhci5jb3B5KCRzY29wZS50YXNrT3JpZ2luYWwpO1xyXG4gICAvLyB9XHJcbiAgfTsgIFxyXG4gIFxyXG4gICAgJHNjb3BlLmxvY2FsVmFycy5zZXRBdXRvSW5pdGlhdGU9IGZ1bmN0aW9uKCl7XHJcbiAgICBcclxuICAgIFxyXG4gICAgICBpZiAoJHNjb3BlLnRhc2tEZWZpbml0aW9uLkF1dG9Jbml0aWF0ZT09PXVuZGVmaW5lZCkgJHNjb3BlLnRhc2tEZWZpbml0aW9uLkF1dG9Jbml0aWF0ZT10cnVlXHJcbiAgICAgIGVsc2UgJHNjb3BlLnRhc2tEZWZpbml0aW9uLkF1dG9Jbml0aWF0ZSA9ICEkc2NvcGUudGFza0RlZmluaXRpb24uQXV0b0luaXRpYXRlXHJcbiAgICAgICRzY29wZS5sb2NhbFZhcnMuc2F2ZVRhc2tQYXJhbWV0ZXJzKClcclxuICAgICAgICBcclxuICAgIH07XHJcblxyXG4gICBcclxuICAkc2NvcGUuZ2V0QWN0aW9ucz0gZnVuY3Rpb24oKXtcclxuICBcclxuICAgICRzY29wZS5zaG93QWN0aW9uc0xpc3QgPSB0cnVlO1xyXG4gICAgXHJcbiAgfTsgIFxyXG5cclxuICAkc2NvcGUuc2VsZWN0UHJldmlvdXNUYXNrVXNlcj0gZnVuY3Rpb24ocHJldmlvdXNUYXNrVXNlclR5cGUpe1xyXG4gICAgXHJcbiAgICAgICRzY29wZS50YXNrRGVmaW5pdGlvbi5QdWJsaWNUYXNrPWZhbHNlO1xyXG4gICAgXHJcbiAgICAgIGlmIChwcmV2aW91c1Rhc2tVc2VyVHlwZSE9XCJpXCIgJiYgcHJldmlvdXNUYXNrVXNlclR5cGUhPVwib1wiKVxyXG4gICAgICB7XHJcbiAgICAgICAgXHJcbiAgICAgIH1cclxuICAgICAgJHNjb3BlLnRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc1VzZXJzLkFzc2lnblR5cGUgPXByZXZpb3VzVGFza1VzZXJUeXBlO1xyXG4gICAgICAkc2NvcGUudGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzR3JvdXBzLkFzc2lnblR5cGUgPSBwcmV2aW91c1Rhc2tVc2VyVHlwZTtcclxuICBcclxuICB9O1xyXG4gIFxyXG4gICAgJHNjb3BlLnNlbGVjdFByZXZpb3VzVGFza0Zvck93bmVyVXNlcj0gZnVuY3Rpb24ocHJldmlvdXNUYXNrVXNlclR5cGUpe1xyXG4gICAgXHJcbiAgICAgICRzY29wZS50YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZT1wcmV2aW91c1Rhc2tVc2VyVHlwZTtcclxuICAgICAgICRzY29wZS50YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzR3JvdXBzLkFzc2lnblR5cGU9cHJldmlvdXNUYXNrVXNlclR5cGU7XHJcbiAgICAgICBpZiAocHJldmlvdXNUYXNrVXNlclR5cGU9PVwic1wiIClcclxuICAgICAge1xyXG4gICAgICAgICRzY29wZS50YXNrRGVmaW5pdGlvbi5TZWxmQXNzaWduZWQ9dHJ1ZTtcclxuICAgICAgfWVsc2VcclxuICAgICAge1xyXG4gICAgICAgICAkc2NvcGUudGFza0RlZmluaXRpb24uU2VsZkFzc2lnbmVkPWZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBpZiAocHJldmlvdXNUYXNrVXNlclR5cGU9PVwiZFwiIHx8IHByZXZpb3VzVGFza1VzZXJUeXBlPT1cInNcIilcclxuICAgICAge1xyXG4gICAgICAgICRzY29wZS5zZXRUYXNrVHlwZSgnb25laW5zdGFuY2UnKTtcclxuICAgICAgfVxyXG4gICAgXHJcbiAgfTtcclxuICBcclxuICAkc2NvcGUuc2hvd0hpZGVQcmV2aW91c1Rhc2sgPSBmdW5jdGlvbigpXHJcbiAge1xyXG4gICAgICBpZiAoISRzY29wZS50YXNrQXNzaWdubWVudHMuc2hvd1ByZXZpb3VzVGFzaykgICRzY29wZS50YXNrQXNzaWdubWVudHMuc2hvd1ByZXZpb3VzVGFzaz0hJHNjb3BlLnRhc2tBc3NpZ25tZW50cy5zaG93UHJldmlvdXNUYXNrO1xyXG4gICAgICBlbHNlIGlmICgkc2NvcGUudGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzVXNlcnMuQXNzaWduVHlwZSE9J2knICYmICRzY29wZS50YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNVc2Vycy5Bc3NpZ25UeXBlIT0nbycgJiYgJHNjb3BlLnRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc1VzZXJzLkFzc2lnblR5cGUhPXVuZGVmaW5lZClcclxuICAgICAge1xyXG4gICAgICAkc2NvcGUudGFza0Fzc2lnbm1lbnRzLnNob3dQcmV2aW91c1Rhc2s9ISRzY29wZS50YXNrQXNzaWdubWVudHMuc2hvd1ByZXZpb3VzVGFzaztcclxuICAgICAgfSAgXHJcbiAgfTtcclxuICBcclxuICAkc2NvcGUuc2hvd0hpZGVQcmV2aW91c1Rhc2tGb3JPd25lciA9IGZ1bmN0aW9uKClcclxuICB7XHJcbiAgICAgIGlmICghJHNjb3BlLnRhc2tBc3NpZ25tZW50cy5zaG93UHJldmlvdXNUYXNrRm9yT3duZXIpICAkc2NvcGUudGFza0Fzc2lnbm1lbnRzLnNob3dQcmV2aW91c1Rhc2tGb3JPd25lcj0hJHNjb3BlLnRhc2tBc3NpZ25tZW50cy5zaG93UHJldmlvdXNUYXNrRm9yT3duZXI7XHJcbiAgICAgIGVsc2UgaWYgKCRzY29wZS50YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZSE9J2knICYmICRzY29wZS50YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZSE9J28nICYmICRzY29wZS50YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZSE9dW5kZWZpbmVkKVxyXG4gICAgICB7XHJcbiAgICAgICRzY29wZS50YXNrQXNzaWdubWVudHMuc2hvd1ByZXZpb3VzVGFza0Zvck93bmVyPSEkc2NvcGUudGFza0Fzc2lnbm1lbnRzLnNob3dQcmV2aW91c1Rhc2tGb3JPd25lcjtcclxuICAgICAgfSAgXHJcbiAgfTtcclxuICBcclxuICAkc2NvcGUuY2hhbmdlSW5pdEFzc2lnblR5cGVVc2VyID0gZnVuY3Rpb24oc2VsZWN0aW9uKVxyXG4gIHtcclxuICAgICAgaWYgKHNlbGVjdGlvbikgeyRzY29wZS50YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNVc2Vycy5Bc3NpZ25UeXBlPXNlbGVjdGlvbn0gXHJcbiAgICAgIGVsc2UgICAgIHtcclxuICAgICAgICBpZiAoJHNjb3BlLnRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc1VzZXJzLkFzc2lnblR5cGU9PSdhJylcclxuICAgICAgICB7XHJcbiAgICAgICAgICAkc2NvcGUudGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzVXNlcnMuQXNzaWduVHlwZT0nZSc7XHJcbiAgICAgICAgfWVsc2UgJHNjb3BlLnRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc1VzZXJzLkFzc2lnblR5cGU9J2EnO1xyXG4gICAgICB9IFxyXG4gIH07XHJcbiAgXHJcbiAgXHJcbiAgICAkc2NvcGUuY2hhbmdlSW5pdEFzc2lnblR5cGVHcm91cCA9IGZ1bmN0aW9uKHNlbGVjdGlvbilcclxuICB7XHJcbiAgICAgIGlmIChzZWxlY3Rpb24pIHskc2NvcGUudGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzR3JvdXBzLkFzc2lnblR5cGU9c2VsZWN0aW9uIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKCRzY29wZS50YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNHcm91cHMuQXNzaWduVHlwZT09J2EnKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICRzY29wZS50YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNHcm91cHMuQXNzaWduVHlwZT0nZSc7XHJcbiAgICAgICAgfWVsc2UgJHNjb3BlLnRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc0dyb3Vwcy5Bc3NpZ25UeXBlPSdhJztcclxuICAgICAgfSAgIFxyXG4gIH07XHJcbiAgXHJcbiAgXHJcbiAgICAkc2NvcGUuY2hhbmdlT3duZXJBc3NpZ25UeXBlVXNlciA9IGZ1bmN0aW9uKHNlbGVjdGlvbilcclxuICB7XHJcbiAgICAgIGlmIChzZWxlY3Rpb24pIHskc2NvcGUudGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc1VzZXJzLkFzc2lnblR5cGU9c2VsZWN0aW9uIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKCRzY29wZS50YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZT09J2EnKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICRzY29wZS50YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZT0nZSc7XHJcbiAgICAgICAgfWVsc2UgJHNjb3BlLnRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNVc2Vycy5Bc3NpZ25UeXBlPSdhJztcclxuICAgICAgfVxyXG4gIH07XHJcbiAgXHJcbiAgXHJcbiAgICAkc2NvcGUuY2hhbmdlT3duZXJBc3NpZ25UeXBlR3JvdXAgPSBmdW5jdGlvbihzZWxlY3Rpb24pXHJcbiAge1xyXG4gICAgICBpZiAoc2VsZWN0aW9uKSB7JHNjb3BlLnRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNHcm91cHMuQXNzaWduVHlwZT1zZWxlY3Rpb259XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICgkc2NvcGUudGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc0dyb3Vwcy5Bc3NpZ25UeXBlPT0nYScpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgJHNjb3BlLnRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNHcm91cHMuQXNzaWduVHlwZT0nZSc7XHJcbiAgICAgICAgfWVsc2UgJHNjb3BlLnRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNHcm91cHMuQXNzaWduVHlwZT0nYSc7XHJcbiAgICAgIH0gIFxyXG4gIH07XHJcbiAgXHJcbiAgLy9nZXQgY29kZXMgYnkgbmFtZVxyXG4gICAkc2NvcGUuR2V0Q29kZXNCeU5hbWUgPSBmdW5jdGlvbigpXHJcbiAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgQ29kZXNTZXJ2aWNlLmdldENvZGVzQnlOYW1lKFwidGFza3N0YXR1c2VzXCIsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tTdGF0dXNlcyA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICBcclxuICAgIH07XHJcbiAgJHNjb3BlLkdldENvZGVzQnlOYW1lKCk7XHJcbiAgXHJcbiAgLy9zZXQgdGFzayB0eXBlXHJcbiAgICAkc2NvcGUuc2V0VGFza1R5cGUgPSBmdW5jdGlvbih0YXNrVHlwZU5hbWUpXHJcbiAgICB7XHJcbiAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLlRhc2tUeXBlT2JqZWN0Lk5hbWU9dGFza1R5cGVOYW1lO1xyXG4gXHJcbiAgICAgICAgdmFyIHBvcyA9ICRzY29wZS50YXNrVHlwZUxpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUudmFsdWU7IH0pLmluZGV4T2YodGFza1R5cGVOYW1lKTtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBpZiAocG9zPj0wKXtcclxuICAgICAgICAgICAgICAgICRzY29wZS50YXNrRGVmaW5pdGlvbi5UYXNrVHlwZSA9ICRzY29wZS50YXNrVHlwZUxpc3RbcG9zXS5pZDtcclxuICAgICAgICAgICAgICAgICAkc2NvcGUudGFza0RlZmluaXRpb24uVGFza1R5cGVPYmplY3QuaWQ9JHNjb3BlLnRhc2tUeXBlTGlzdFtwb3NdLmlkO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgIFxyXG4gICAgICAgICBcclxuICAgIH07XHJcbiAgXHJcblxyXG4gICAgXHJcbiAgICAkc2NvcGUubG9jYWxWYXJzLmdldFRhc2tQYXJhbWV0ZXJzID0gZnVuY3Rpb24oKVxyXG4gICAge1xyXG4gICAgICAgIFRhc2tEYXRhU2VydmljZS5HZXRUYXNrUGFyYW1ldGVycygkc2NvcGUudGFza1VpZCkudGhlbihcclxuICAgICAgICAgICAgZnVuY3Rpb24oZGF0YSkgICB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aD4wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnByb2Nlc3NUYXNrRGVmaW5pdGlvbihkYXRhWzBdKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBDb2Rlc1NlcnZpY2UuZ2V0Q29kZXNEZXRhaWxPYmplY3RCeU5hbWUoJ19UQVNLX1RZUEVfJywnb25laW5zdGFuY2UnLGxhbmcsdHJ1ZSkudGhlbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihkYXRhQ29kZXMpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50YXNrRGVmaW5pdGlvbi5UYXNrVHlwZSA9IGRhdGFDb2Rlcy5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNhdmVUYXNrUGFyYW1ldGVycyh0cnVlKTsgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSAgIHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXM9PT05MDQpICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBDb2Rlc1NlcnZpY2UuZ2V0Q29kZXNEZXRhaWxPYmplY3RCeU5hbWUoJ19UQVNLX1RZUEVfJywnb25laW5zdGFuY2UnLGxhbmcsdHJ1ZSkudGhlbihmdW5jdGlvbihkYXRhQ29kZXMpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50YXNrRGVmaW5pdGlvbi5UYXNrVHlwZSA9IGRhdGFDb2Rlcy5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnNhdmVUYXNrUGFyYW1ldGVycyh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ2V0UmVzb3VyY2VEZWZpbml0aW9uKCRzY29wZS50YXNrRGVmaW5pdGlvbi5SZXNvdXJjZURlZlVpZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAkc2NvcGUucHJvY2Vzc1Rhc2tEZWZpbml0aW9uPWZ1bmN0aW9uICh0YXNrUGFyYW1ldGVycykgXHJcbiAgICB7XHJcbiAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uID0gdGFza1BhcmFtZXRlcnM7XHJcbiAgICAgICAgJHNjb3BlLnByZXR0eVRhc2sgPSBKU09OLnN0cmluZ2lmeSgkc2NvcGUudGFza0RlZmluaXRpb24sbnVsbCwyKTsgIFxyXG4gICAgICAgICRzY29wZS50YXNrUGFyYW1ldGVyc0lkID0gJHNjb3BlLnRhc2tJZDtcclxuICAgICAgICBpZiAoJHNjb3BlLnRhc2tEZWZpbml0aW9uLlBhcmFtZXRlcnM9PW51bGwpIFxyXG4gICAgICAgICAgICAkc2NvcGUudGFza0RlZmluaXRpb24uUGFyYW1ldGVycz17QXV0b0xvYWRFeGVGb3JtOmZhbHNlLFJlc3RhcnRUYXNrOmZhbHNlfTtcclxuXHJcbiAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLmZvcm1fZGVmaW5pdGlvbj10cnVlO1xyXG5cclxuICAgICAgICBcclxuICAgICAgICAkc2NvcGUuY2xlYXJUYXNrQXNzaWdubWVudHMoKTsgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICgkc2NvcGUudGFza0RlZmluaXRpb24uQXNzaWduVHlwZU93bmVyKVxyXG4gICAgICAgICAgICAkc2NvcGUudGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc1VzZXJzLkFzc2lnblR5cGUgPSAkc2NvcGUudGFza0RlZmluaXRpb24uQXNzaWduVHlwZU93bmVyO1xyXG4gICAgICAgIGlmICgkc2NvcGUudGFza0RlZmluaXRpb24uQXNzaWduVHlwZUluaXRpYXRvcilcclxuICAgICAgICAgICAgJHNjb3BlLnRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc1VzZXJzLkFzc2lnblR5cGUgPSAkc2NvcGUudGFza0RlZmluaXRpb24uQXNzaWduVHlwZUluaXRpYXRvcjtcclxuICAgICAgICBpZiAoJHNjb3BlLnRhc2tEZWZpbml0aW9uLkFzc2lnblR5cGVPd25lckdyb3VwKSBcclxuICAgICAgICAgICAgJHNjb3BlLnRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNHcm91cHMuQXNzaWduVHlwZSA9ICRzY29wZS50YXNrRGVmaW5pdGlvbi5Bc3NpZ25UeXBlT3duZXJHcm91cDtcclxuICAgICAgICBpZiAoJHNjb3BlLnRhc2tEZWZpbml0aW9uLkFzc2lnblR5cGVJbml0aWF0b3JHcm91cClcclxuICAgICAgICAgICAgICAgICRzY29wZS50YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNHcm91cHMuQXNzaWduVHlwZSA9ICRzY29wZS50YXNrRGVmaW5pdGlvbi5Bc3NpZ25UeXBlSW5pdGlhdG9yR3JvdXA7XHJcbiAgICAgICAgXHJcbiAgICAgICAgJHNjb3BlLmdldFJlc291cmNlRGVmaW5pdGlvbigkc2NvcGUudGFza0RlZmluaXRpb24uUmVzb3VyY2VEZWZVaWQpO1xyXG4gICAgICAgICRzY29wZS50YXNrRGVmaW5pdGlvbi5mb3JtUGFyYW1zPXtmb3JtTG9ja2VkOnRydWUsZm9ybVZpZXdUeXBlOjEsc2hvd0dyaWROYXZpZ2F0aW9uOmZhbHNlfTsgICAgICAgIFxyXG4gICAgICAgICRzY29wZS50YXNrRGVmaW5pdGlvbi5mb3JtX3R5cGU9JHNjb3BlLnRkcy5zaG93VGFza0Zvcm1GbigpICAgICAgIFxyXG4gICAgICAgICRzY29wZS50YXNrT3JpZ2luYWwgPSBhbmd1bGFyLmNvcHkoJHNjb3BlLnRhc2tEZWZpbml0aW9uKTtcclxuICAgICAgICAkc2NvcGUudGRzLlNldFNlbGVjdGVkVGFzaygkc2NvcGUudGFza0RlZmluaXRpb24pO1xyXG4gICAgICAgICRzY29wZS5sb2NhbFZhcnMuZ2V0UmVzb3VyY2VGb3JtKCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgXHJcbiAgICAkc2NvcGUuc2F2ZVRhc2tEZWYgPSBmdW5jdGlvbiAoaXNWYWxpZCkge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgICAgIC8vIFJlc291cmNlc0RhdGFTZXJ2aWNlLnNhdmVSZXNvdXJjZURlZkFsbCgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuU2F2ZVJlc291cmNlRGVmMiAoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbikudGhlbihcclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGRhdGEpIHsgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzPT09MjAwIHx8IGRhdGEuc3RhdHVzPT09MjAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiVGFzayBwcm9wZXJ0aWVzIHNhdmVkIHN1Y2Nlc3NmdWx5XCIsJ3N1Y2Nlc3MnKTsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH0gZWxzZSB7ICBcclxuICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKFwiUGxlYXNlIGVudGVyIHJlcXVpcmVkIGRhdGFcIiwnd2FybmluZycpOyBcclxuICAgICAgICAgIH1cclxuICAgIH07ICAgICAgICAgXHJcbiAgICAkc2NvcGUuRWRpdFRhc2sgPSBmdW5jdGlvbih2YWx1ZSlcclxuICAgIHtcclxuICAgICAgICAgICAgICAkc2NvcGUuZWRpdFRhc2s9dmFsdWU7XHJcbiAgICAgICAgICAgICAgaWYgKHZhbHVlKSAgJHNjb3BlLmdldFJlc291cmNlRGVmaW5pdGlvbigkc2NvcGUudGFza0RlZmluaXRpb24uUmVzb3VyY2VEZWZVaWQpO1xyXG4gICAgfTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAvL2dldCByZXNvdXJjZSBkZWZcclxuICAgICAgJHNjb3BlLmdldFJlc291cmNlRGVmaW5pdGlvbiA9IGZ1bmN0aW9uKHJlc291cmNlRGVmSWQpe1xyXG4gICAgICBcclxuICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZBbGwocmVzb3VyY2VEZWZJZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5tc2csJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbiA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmRG93bmxvYWRlZCA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zPXtmb3JtTG9ja2VkOnRydWUsZm9ybVZpZXdUeXBlOjEsc2hvd0dyaWROYXZpZ2F0aW9uOmZhbHNlfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnNldFRhc2tGb3JtVmVyc2lvbigkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmlkKyRzY29wZS50YXNrRGVmaW5pdGlvbi5mb3JtX3R5cGUse1ZlcnNpb246JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5WZXJzaW9uLFB1Ymxpc2hlZDokc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlB1Ymxpc2hlZCxOZXdWZXJzaW9uOiRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uTmV3VmVyc2lvbn0pOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgIC8vc2F2ZSB0YXNrIHBhcmFtZXRlcnNcclxuICAgICRzY29wZS5sb2NhbFZhcnMuc2F2ZVRhc2tQYXJhbWV0ZXJzID0gZnVuY3Rpb24oaXNJbml0aWFsKXtcclxuICAgICAgICBcclxuICAgICAgICBUYXNrRGF0YVNlcnZpY2UuU2F2ZVRhc2tQYXJhbWV0ZXJzKCRzY29wZS50YXNrRGVmaW5pdGlvbi5pZCwkc2NvcGUudGFza0RlZmluaXRpb24pLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5pdGlhbCkgJHNjb3BlLnByb2Nlc3NUYXNrRGVmaW5pdGlvbihkYXRhLmRhdGEpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgJHNjb3BlLnRhc2tEZWZpbml0aW9uPWRhdGEuZGF0YSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICBcclxuICAgIH07XHJcbiAgICAgICAgIFxyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAvL2dldCB0YXNrIGFzc2lnbm1lbnRzXHJcbiAgICAkc2NvcGUuZ2V0VGFza0Fzc2lnbm1lbnRzID0gZnVuY3Rpb24oKXtcclxuICAgICAgICBpZiAoJHNjb3BlLnRhc2tJZCE9PXVuZGVmaW5lZClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGlmICghJHNjb3BlLnRhc2tBc3NpZ25tZW50c0Rvd25sb2FkZWQpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5HZXRUYXNrQXNzaWdubWVudHMoJHNjb3BlLnRhc2tJZCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS50YXNrQXNzaWdubWVudHNPcmlnaW5hbCA9IGFuZ3VsYXIuY29weShkYXRhLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5wcm9jZXNzVGFza0Fzc2lnbm1lbnRzKGRhdGEuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tBc3NpZ25tZW50c0Rvd25sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5maXJzdERvd25sb2FkQXNzaWdubWVudHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICAge1xyXG4gICAgICAgICAgICAkc2NvcGUucHJvY2Vzc1Rhc2tBc3NpZ25tZW50cygkc2NvcGUudGFza0Fzc2lnbm1lbnRzT3JpZ2luYWwpOyAvL01JR09SIFRPRE8gLSB2aWRqZXRpIGQgYWxpIG92byBvZGtvbWVudGlyYXRpIGlsaSBzdGFcclxuICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZSgnVGFzayBpZCAodGFza0lkKSBpcyB1bmRlZmluZWQnLCdlcnJvcicpO1xyXG4gICAgfTtcclxuICAgIFxyXG4gICAgLy9zYXZlIHRhc2sgc3RhdHVzIGFjdGlvbnNcclxuICAgICRzY29wZS5zYXZlVGFza1N0YXR1c2VzID0gZnVuY3Rpb24oKXtcclxuICAgICAgaWYgKCRzY29wZS5jb2Rlc0FjdGlvbnMuY29kZXNBY3Rpb25zTGlzdFskc2NvcGUuY29kZXNBY3Rpb25zLnNlbGVjdGVkQWN0aW9uSW5kZXhdID09IG51bGwpICRzY29wZS5jb2Rlc0FjdGlvbnMuY29kZXNBY3Rpb25zTGlzdFskc2NvcGUuY29kZXNBY3Rpb25zLnNlbGVjdGVkQWN0aW9uSW5kZXhdID0ge307XHJcblxyXG4gICAgICAgIFRhc2tEYXRhU2VydmljZS5TYXZlVGFza1N0YXR1c2VzKCRzY29wZS50YXNrSWQsWyRzY29wZS5jb2Rlc0FjdGlvbnMuY29kZXNBY3Rpb25zTGlzdFskc2NvcGUuY29kZXNBY3Rpb25zLnNlbGVjdGVkQWN0aW9uSW5kZXhdXSwndGFza3N0YXR1c2VzJykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLm1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICAvL3NhdmUgdGFzayBhc3NpZ25tZW50c1xyXG4gICAgJHNjb3BlLnNhdmVUYXNrQXNzaWdubWVudHMgPSBmdW5jdGlvbihhc3NpZ25UeXBlKXtcclxuICAgICAgIFxyXG4gICAgICAgIFRhc2tEYXRhU2VydmljZS5TYXZlVGFza0Fzc2lnbm1lbnRzKCRzY29wZS5wcmVwYXJlVGFza0Fzc2lnbm1lbnRzKCRzY29wZS50YXNrQXNzaWdubWVudHMsYXNzaWduVHlwZSksJHNjb3BlLnRhc2tJZCwkc2NvcGUudGFza0RlZmluaXRpb24uU2VsZkFzc2lnbmVkLCRzY29wZS50YXNrRGVmaW5pdGlvbi5QdWJsaWNUYXNrLCRzY29wZS50YXNrRGVmaW5pdGlvbi5VbmlxdWVOYW1lLGFzc2lnblR5cGUsJHNjb3BlLnRhc2tEZWZpbml0aW9uLlRhc2tUeXBlKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICBcclxuICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICRzY29wZS5zaG93VGFza0luaXRpYXRvcnMgPSBmYWxzZTtcclxuICAgICAgICAgICAgJHNjb3BlLnNob3dUYXNrT3duZXJzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmIChhc3NpZ25UeXBlPT09MCkgJHNjb3BlLnRhc2tEZWZpbml0aW9uLlRhc2tJbml0aWF0b3JzU2F2ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZiAoYXNzaWduVHlwZT09PTEpICRzY29wZS50YXNrRGVmaW5pdGlvbi5Qb3RlbnRpYWxPd25lcnNTYXZlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICRzY29wZS50YXNrQXNzaWdubWVudHNEb3dubG9hZGVkID0gZmFsc2U7IFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICBcclxuICAgIH07XHJcbiAgICBcclxuICAgICRzY29wZS5wcm9jZXNzVGFza0Fzc2lnbm1lbnRzID0gZnVuY3Rpb24odGFza0Fzc2lnbm1lbnRzKXsgLy9NSUdPUiBUT0RPICAtIE92YSBmdW5rY2lqYSBzZSBwb2tyZcSHZSBpIHUgQlVJTEQgbW9kdSAhISAgRGEgbGkgdHJlYmE/P1xyXG4gICAgICBcclxuICAgICBcclxuICAgICAgICAvLyAgICAgSW5pdGlhbGl6ZSB0YXNrQXNzaWdtZW50cyBpZiB1bmRlZmluZWQgIVxyXG4gICAgICAgIGlmICh0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMgPT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICB0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMgPSB7QXNzaWduZWVMaXN0IDogW119O1xyXG4gICAgIFxyXG4gICAgICAgIGlmICh0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzR3JvdXBzID09PXVuZGVmaW5lZClcclxuICAgICAgICAgICAgdGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc0dyb3VwcyA9IHtBc3NpZ25lZUxpc3QgOiBbXX07XHJcbiBcclxuICAgICAgICBpZiAodGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzVXNlcnMgPT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICB0YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNVc2VycyA9IHtBc3NpZ25lZUxpc3QgOiBbXX07XHJcblxyXG4gICAgICAgIGlmICh0YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNHcm91cHMgPT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICB0YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNHcm91cHMgPSB7QXNzaWduZWVMaXN0IDogW119O1xyXG5cclxuICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgIFxyXG5cclxuICAgICAgXHJcbiAgICAgICBcclxuICAgICAgIC8vICRzY29wZS5jbGVhclRhc2tBc3NpZ25tZW50cygpOy8vbWlnb3IgLSDEjWluaSBtaSBzZSBkYSBqZSBvdm8gcGplc25payBodGlvIHJlxIdpIHVtamVzdG8gZ29ybmplZ1xyXG4gICAgICAgIFxyXG4gICAgICAgIHZhciB1c2VycyA9IHRhc2tBc3NpZ25tZW50cy51c2VycztcclxuICAgICAgICB2YXIgZ3JvdXBzID0gdGFza0Fzc2lnbm1lbnRzLmdyb3VwcztcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgIGlmICh0YXNrQXNzaWdubWVudHMudGFza0RlZmluaXRpb24hPT1udWxsICYmIHRhc2tBc3NpZ25tZW50cy50YXNrRGVmaW5pdGlvbiE9PXVuZGVmaW5lZClcclxuICAgICAgICB7XHJcbiAgICAgICAgICBpZiAodGFza0Fzc2lnbm1lbnRzLnRhc2tEZWZpbml0aW9uLkFzc2lnblR5cGVPd25lcikgICAgJHNjb3BlLnRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNVc2Vycy5Bc3NpZ25UeXBlID0gdGFza0Fzc2lnbm1lbnRzLnRhc2tEZWZpbml0aW9uLkFzc2lnblR5cGVPd25lcjtcclxuICAgICAgICAgIGlmICh0YXNrQXNzaWdubWVudHMudGFza0RlZmluaXRpb24uVW5pcXVlSWQpICAgJHNjb3BlLnRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNVc2Vycy5VbmlxdWVJZCA9IHRhc2tBc3NpZ25tZW50cy50YXNrRGVmaW5pdGlvbi5VbmlxdWVJZDtcclxuICAgICAgICAgIGlmICh0YXNrQXNzaWdubWVudHMudGFza0RlZmluaXRpb24uQXNzaWduVHlwZUluaXRpYXRvcikgICAgJHNjb3BlLnRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc1VzZXJzLkFzc2lnblR5cGUgPSB0YXNrQXNzaWdubWVudHMudGFza0RlZmluaXRpb24uQXNzaWduVHlwZUluaXRpYXRvcjtcclxuICAgICAgICAgIGlmICggdGFza0Fzc2lnbm1lbnRzLnRhc2tEZWZpbml0aW9uLkFzc2lnblR5cGVPd25lckdyb3VwKSAgICAkc2NvcGUudGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc0dyb3Vwcy5Bc3NpZ25UeXBlID0gdGFza0Fzc2lnbm1lbnRzLnRhc2tEZWZpbml0aW9uLkFzc2lnblR5cGVPd25lckdyb3VwO1xyXG4gICAgICAgICAgaWYgKCB0YXNrQXNzaWdubWVudHMudGFza0RlZmluaXRpb24uVW5pcXVlSWRHcm91cCkgICAgJHNjb3BlLnRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNHcm91cHMuVW5pcXVlSWQgPSB0YXNrQXNzaWdubWVudHMudGFza0RlZmluaXRpb24uVW5pcXVlSWRHcm91cDtcclxuICAgICAgICAgIGlmICh0YXNrQXNzaWdubWVudHMudGFza0RlZmluaXRpb24uQXNzaWduVHlwZUluaXRpYXRvckdyb3VwKSAgICAkc2NvcGUudGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzR3JvdXBzLkFzc2lnblR5cGUgPSB0YXNrQXNzaWdubWVudHMudGFza0RlZmluaXRpb24uQXNzaWduVHlwZUluaXRpYXRvckdyb3VwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgIFxyXG4gICAgICAgIHZhciBwb3M7ICBcclxuICAgICAgICBmb3IgKHZhciBpPTA7aTx1c2Vycy5sZW5ndGg7aSsrKSAgeyAgIFxyXG4gICAgICAgICAgaWYgKHVzZXJzW2ldLkFzc2lnbkdyb3VwPT0ncG90ZW50aWFsT3duZXJzJykge1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBpZiAoJHNjb3BlLnRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNVc2Vycy5Bc3NpZ25lZUxpc3Q9PT11bmRlZmluZWQpIFxyXG4gICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNVc2Vycy5Bc3NpZ25lZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIHBvcyA9ICRzY29wZS50YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduZWVMaXN0Lm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLmlkOyB9KS5pbmRleE9mKHVzZXJzW2ldLkFzc2lnbmVlSWQuaWQpO1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgaWYgKHBvczwwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNVc2Vycy5Bc3NpZ25lZUxpc3QucHVzaCh1c2Vyc1tpXS5Bc3NpZ25lZUlkKTtcclxuXHJcbiAgICAgICAgICAgICAgICRzY29wZS50YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuU3ViQXNzaWduVHlwZSA9IHVzZXJzW2ldLkFzc2lnblR5cGU7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICB9IGVsc2UgXHJcbiAgICAgICAgICAgICAgICB7IC8vIE5PVCBwb3RlbnRpYWwgb3duZXJzXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS50YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNVc2Vycy5Bc3NpZ25lZUxpc3Q9PT11bmRlZmluZWQpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzVXNlcnMuQXNzaWduZWVMaXN0ID0gW107XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIHBvcyA9ICRzY29wZS50YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNVc2Vycy5Bc3NpZ25lZUxpc3QubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YodXNlcnNbaV0uQXNzaWduZWVJZC5pZCk7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIGlmIChwb3M8MClcclxuICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNVc2Vycy5Bc3NpZ25lZUxpc3QucHVzaCh1c2Vyc1tpXS5Bc3NpZ25lZUlkKTtcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAkc2NvcGUudGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzVXNlcnMuQXNzaWduVHlwZSA9IHVzZXJzW2ldLkFzc2lnblR5cGU7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgfS8vZm9yXHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgZm9yICh2YXIgaj0wO2o8Z3JvdXBzLmxlbmd0aDtqKyspICAgeyAgICBcclxuICAgICAgICAgIGlmIChncm91cHNbal0uQXNzaWduR3JvdXA9PSdwb3RlbnRpYWxPd25lcnMnKSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBpZiAoJHNjb3BlLnRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNHcm91cHMuQXNzaWduZWVMaXN0PT09dW5kZWZpbmVkKSBcclxuICAgICAgICAgICAgICAgICAgICRzY29wZS50YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzR3JvdXBzLkFzc2lnbmVlTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgcG9zID0gJHNjb3BlLnRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNHcm91cHMuQXNzaWduZWVMaXN0Lm1hcChcclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuaWQ7IH0pLmluZGV4T2YoZ3JvdXBzW2pdLkFzc2lnbmVlSWQuaWQpO1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgaWYgKHBvczwwKVxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS50YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzR3JvdXBzLkFzc2lnbmVlTGlzdC5wdXNoKGdyb3Vwc1tqXS5Bc3NpZ25lZUlkKTtcclxuXHJcbiAgICAgICAgICAgICAgICRzY29wZS50YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzR3JvdXBzLkFzc2lnblR5cGU9Z3JvdXBzW2pdLkFzc2lnblR5cGU7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgIGlmICgkc2NvcGUudGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzR3JvdXBzLkFzc2lnbmVlTGlzdD09PXVuZGVmaW5lZCkgXHJcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS50YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNHcm91cHMuQXNzaWduZWVMaXN0ID0gW107IFxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBwb3MgPSAkc2NvcGUudGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzR3JvdXBzLkFzc2lnbmVlTGlzdC5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfSkuaW5kZXhPZihncm91cHNbal0uQXNzaWduZWVJZC5pZCk7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBpZiAocG9zPDApXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc0dyb3Vwcy5Bc3NpZ25lZUxpc3QucHVzaChncm91cHNbal0uQXNzaWduZWVJZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICRzY29wZS50YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNHcm91cHMuQXNzaWduVHlwZT1ncm91cHNbal0uQXNzaWduVHlwZTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgfS8vZm9yXHJcbiAgICB9O1xyXG4gICAgIFxyXG4gICAgJHNjb3BlLnByZXBhcmVUYXNrQXNzaWdubWVudHMgPSBmdW5jdGlvbih0YXNrQXNzaWdubWVudHMsYXNzaWduVHlwZSl7XHJcbiAgICAgIFxyXG4gICAgICAgIHZhciBsVGFza0Fzc2lnbm1lbnRzID0ge307XHJcbiAgICAgICAgbFRhc2tBc3NpZ25tZW50cy51c2VycyA9IHt9O1xyXG4gICAgICAgIGxUYXNrQXNzaWdubWVudHMuZ3JvdXBzID0ge307XHJcbiAgXHJcbiAgICAgICAgbFRhc2tBc3NpZ25tZW50cy51c2Vycy5saXN0ID0gW107XHJcbiAgICAgICAgbFRhc2tBc3NpZ25tZW50cy5ncm91cHMubGlzdCA9IFtdO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxUYXNrQXNzaWdubWVudHMudXNlcnMucG9Bc3NpZ25UeXBlPSB0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZTtcclxuICAgICAgICBsVGFza0Fzc2lnbm1lbnRzLnVzZXJzLnBvVW5pcXVlSWQ9dGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc1VzZXJzLlVuaXF1ZUlkO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxUYXNrQXNzaWdubWVudHMudXNlcnMudGlBc3NpZ25UeXBlPSAgdGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzVXNlcnMuQXNzaWduVHlwZTtcclxuICAgICAgICBsVGFza0Fzc2lnbm1lbnRzLmdyb3Vwcy50aUFzc2lnblR5cGU9ICB0YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNHcm91cHMuQXNzaWduVHlwZTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICB2YXIgcG90ZW50aWFsT3duZXJzVXNlcnMgPSAkc2NvcGUudGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc1VzZXJzLkFzc2lnbmVlTGlzdDtcclxuICAgICAgICB2YXIgdGFza0luaXRpYXRvcnNVc2VycyA9ICAkc2NvcGUudGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzVXNlcnMuQXNzaWduZWVMaXN0O1xyXG4gICAgICAgIFxyXG4gICAgICAgIHZhciBwb3RlbnRpYWxPd25lcnNHcm91cHMgPSAkc2NvcGUudGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc0dyb3Vwcy5Bc3NpZ25lZUxpc3Q7XHJcbiAgICAgICAgdmFyIHRhc2tJbml0aWF0b3JzR3JvdXBzID0gICRzY29wZS50YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNHcm91cHMuQXNzaWduZWVMaXN0O1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChwb3RlbnRpYWxPd25lcnNVc2Vycz09PXVuZGVmaW5lZCkgcG90ZW50aWFsT3duZXJzVXNlcnMgPSBbXTtcclxuICAgICAgICBpZiAodGFza0luaXRpYXRvcnNVc2Vycz09PXVuZGVmaW5lZCkgdGFza0luaXRpYXRvcnNVc2VycyA9IFtdO1xyXG4gICAgICAgIGlmIChwb3RlbnRpYWxPd25lcnNHcm91cHM9PT11bmRlZmluZWQpIHBvdGVudGlhbE93bmVyc0dyb3VwcyA9IFtdO1xyXG4gICAgICAgIGlmICh0YXNrSW5pdGlhdG9yc0dyb3Vwcz09PXVuZGVmaW5lZCkgdGFza0luaXRpYXRvcnNHcm91cHMgPSBbXTtcclxuICAgICAgICB2YXIgdXNlckl0ZW09e307XHJcbiAgICAgICAgdmFyIGkgPSAwO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHVzZXJJdGVtLlRhc2tEZWZJZD0kc2NvcGUudGFza0lkO1xyXG4gICAgICAgIHVzZXJJdGVtLkNyZWF0ZWRCeT0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIudXNlcmlkO1xyXG4gICAgICAgIHVzZXJJdGVtLkNoYW5nZWRCeT0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIudXNlcmlkO1xyXG4gICAgICAgIHVzZXJJdGVtLkNyZWF0ZWREYXRlVGltZT1uZXcgRGF0ZSgpO1xyXG4gICAgICBcclxuICAgICAgICB1c2VySXRlbS5WZXJzaW9uRnJvbSA9IDE7XHJcbiAgICAgICAgdXNlckl0ZW0uVmVyc2lvblRvID0gMTtcclxuICAgICAgICAvL3VzZXJJdGVtLkFzc2lnblR5cGU9cG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoYXNzaWduVHlwZT09PTApXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBmb3IgKGk9MDtpPHRhc2tJbml0aWF0b3JzVXNlcnMubGVuZ3RoO2krKykgXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgeyAgIFxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB1c2VySXRlbS5Bc3NpZ25lZUlkPSB0YXNrSW5pdGlhdG9yc1VzZXJzW2ldLmlkO1xyXG4gICAgICAgICAgICAgICAgdXNlckl0ZW0uQXNzaWduR3JvdXAgPSAndGFza0luaXRpYXRvcnMnO1xyXG4gICAgICAgICAgICAgICAgdXNlckl0ZW0uQXNzaWduVHlwZSA9ICRzY29wZS50YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNVc2Vycy5Bc3NpZ25UeXBlO1xyXG4gICAgICAgICAgICAgICAgbFRhc2tBc3NpZ25tZW50cy51c2Vycy5saXN0LnB1c2goYW5ndWxhci5jb3B5KHVzZXJJdGVtKSk7ICAgICAgICBcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgIH1cclxuICAgICAgICAgICAgIGZvciAoaT0wO2k8dGFza0luaXRpYXRvcnNHcm91cHMubGVuZ3RoO2krKykgXHJcbiAgICAgICAgICAgeyAgIFxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIHVzZXJJdGVtLkFzc2lnbmVlSWQ9IHRhc2tJbml0aWF0b3JzR3JvdXBzW2ldLmlkO1xyXG4gICAgICAgICAgICAgICB1c2VySXRlbS5Bc3NpZ25Hcm91cCA9ICd0YXNrSW5pdGlhdG9ycyc7XHJcbiAgICAgICAgICAgICAgIHVzZXJJdGVtLkFzc2lnblR5cGUgPSAkc2NvcGUudGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzR3JvdXBzLkFzc2lnblR5cGU7XHJcbiAgICAgICAgICAgICAgIGxUYXNrQXNzaWdubWVudHMuZ3JvdXBzLmxpc3QucHVzaChhbmd1bGFyLmNvcHkodXNlckl0ZW0pKTtcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGFzc2lnblR5cGU9PT0xKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGZvciAoaT0wO2k8cG90ZW50aWFsT3duZXJzVXNlcnMubGVuZ3RoO2krKykgXHJcbiAgICAgICAgICAgeyAgIFxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB1c2VySXRlbS5Bc3NpZ25lZUlkID0gcG90ZW50aWFsT3duZXJzVXNlcnNbaV0uaWQ7XHJcbiAgICAgICAgICAgICAgICB1c2VySXRlbS5Bc3NpZ25Hcm91cCA9ICdwb3RlbnRpYWxPd25lcnMnO1xyXG4gICAgICAgICAgICAgICAgdXNlckl0ZW0uQXNzaWduVHlwZSA9ICRzY29wZS50YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbFRhc2tBc3NpZ25tZW50cy51c2Vycy5saXN0LnB1c2goYW5ndWxhci5jb3B5KHVzZXJJdGVtKSk7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICB9XHJcbiAgICAgICAgICAgZm9yIChpPTA7aTxwb3RlbnRpYWxPd25lcnNHcm91cHMubGVuZ3RoO2krKykgXHJcbiAgICAgICAgICAgeyAgIFxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB1c2VySXRlbS5Bc3NpZ25lZUlkPSBwb3RlbnRpYWxPd25lcnNHcm91cHNbaV0uaWQ7XHJcbiAgICAgICAgICAgICAgICB1c2VySXRlbS5Bc3NpZ25Hcm91cCA9ICdwb3RlbnRpYWxPd25lcnMnO1xyXG4gICAgICAgICAgICAgICAgdXNlckl0ZW0uQXNzaWduVHlwZSA9ICRzY29wZS50YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzR3JvdXBzLkFzc2lnblR5cGU7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbFRhc2tBc3NpZ25tZW50cy5ncm91cHMubGlzdC5wdXNoKGFuZ3VsYXIuY29weSh1c2VySXRlbSkpO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgXHJcbiAgXHJcbiAgICAgICAgcmV0dXJuIGxUYXNrQXNzaWdubWVudHM7XHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICAkc2NvcGUucmV0dXJuVG9QcmV2aW91c1BhZ2UgPSBmdW5jdGlvbigpXHJcbiAgICB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcGFnZSA9IFwiYXBwLm5hdmJhci5yZXNvdXJjZXMubGlzdFwiO1xyXG4gICAgICAgICAgICAgICAgLy9sZXQgbmF2YmFyID0gTWVudVNlcnZpY2UuZ2V0UGFnZU5hdmJhckJ5TmFtZShwYWdlKTtcclxuICAgICAgICAgICAgICAgICRzdGF0ZS5nbyhwYWdlLHt9KTtcclxuICAgICAgICAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgICRzY29wZS5zaG93SGlkZVByb3BlcnRpZXMgPSBmdW5jdGlvbih2YWx1ZSlcclxuICAgIHtcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnNldEZpZWxkUHJvcGVydGllc09wZW5lZCh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICRzY29wZS5zaG93RmllbGRQcm9wZXJ0aWVzPSRzY29wZS5nc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKTtcclxuICAgICAgIFxyXG4gICAgfTtcclxuICAgXHJcbiAgICAvKlxyXG4gICAgICRzY29wZS4kd2F0Y2goJ3Rkcy5zaG93VGFza093bmVyc0ZuKCknLGZ1bmN0aW9uKG5ld1ZhbHVlLG9sZFZhbHVlKXtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICBpZiAobmV3VmFsdWUhPW9sZFZhbHVlKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgJHNjb3BlLmdldFRhc2tBc3NpZ25tZW50cygpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgKi9cclxuICAgICRzY29wZS4kd2F0Y2goJ2dzcnZjLmdldEZpZWxkUHJvcGVydGllcygpJyxmdW5jdGlvbihuZXdWYWx1ZSxvbGRWYWx1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlIT1vbGRWYWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZEZpZWxkPSRzY29wZS5nc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNob3dGaWVsZFByb3BlcnRpZXMgPSAkc2NvcGUuZ3NydmMuZ2V0RmllbGRQcm9wZXJ0aWVzT3BlbmVkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAgIFxyXG4gICAgaWYgKCRzY29wZS50YXNrSWQhPXVuZGVmaW5lZCkge1xyXG4gICAgICAgICRzY29wZS50ZHMuc2hvd0hpZGVUYXNrRm9ybSgnZScpO1xyXG4gICAgfVxyXG5cclxuICAgICAgJHNjb3BlLnN0YXRlTmFtZT0kc3RhdGUuY3VycmVudC5uYW1lO1xyXG4gICAgICAkc2NvcGUuc3RhdGVQYXJhbXMgPSAkc3RhdGUuY3VycmVudC5wYXJhbXM7XHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgICAgIFxyXG4gICAgfVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHRhc2tEZWZpbml0aW9uTGlzdEN0cmwgKCRzY29wZSwgJHJvb3RTY29wZSwkdGltZW91dCx1aUdyaWRDb25zdGFudHMsUHJvY2Vzc2luZ1NlcnZpY2UsTWVzc2FnaW5nU2VydmljZSxNZW51U2VydmljZSwkc3RhdGVQYXJhbXMsR3JpZHN0ZXJTZXJ2aWNlLFRhc2tEYXRhU2VydmljZSxUYXNrRGVmaW5pdGlvblNlcnZpY2UsV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZSwkc3RhdGUsJGNvb2tpZXMpIHtcclxuICAgJHNjb3BlLkNUUkxOQU1FPSd0YXNrRGVmaW5pdGlvbkxpc3RDdHJsJztcclxuICAgJHNjb3BlLnRkcyA9IFRhc2tEZWZpbml0aW9uU2VydmljZTtcclxuICAgJHNjb3BlLnRkcy5TZXRTY29wZUZvclNlbGVjdGVkVGFzaygkc2NvcGUpO1xyXG4gICBcclxuICAgICRzY29wZS5nZXRTZWxlY3RlZFRhc2sgPSBmdW5jdGlvbigpXHJcbiAgICBcclxuICAgIHtcclxuICAgICAgJHNjb3BlLnRhc2sgPSBUYXNrRGVmaW5pdGlvblNlcnZpY2UuR2V0U2VsZWN0ZWRUYXNrKCk7XHJcbiAgICAgIFxyXG4gICAgfTtcclxuICAgICRzY29wZS4kb24oJ1Rhc2tEZWZpbml0aW9uTG9hZGVkJyxmdW5jdGlvbihldmVudCxkYXRhKXtcclxuICAgICAgICAgICAgICAgICAgJHNjb3BlLmdldFNlbGVjdGVkVGFzaygpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgXHJcbiAgICAgIFxyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiB0YXNrSW5pdGlhdGVMaXN0Q3RybCAoJHNjb3BlLCAkcm9vdFNjb3BlLHVpR3JpZENvbnN0YW50cyxQcm9jZXNzaW5nU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlLFJlc291cmNlc0RhdGFTZXJ2aWNlLFRhc2tEYXRhU2VydmljZSwkc3RhdGUsJHN0YXRlUGFyYW1zKSB7XHJcbiAgICBcclxuICAgICAkc2NvcGUuaXNfc3VwZXJ1c2VyID0gICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5pc19zdXBlcnVzZXI7XHJcbiAgICRzY29wZS5DVFJMTkFNRT0ndGFza0luaXRpYXRlTGlzdEN0cmwnO1xyXG4gICAgJHNjb3BlLnNlbGVjdGVkUmVzb3VyY2VHcm91cD0kc3RhdGVQYXJhbXMucmVzb3VyY2VfZ3JvdXBfaWQ7XHJcbiAgICBcclxuICAgICRzY29wZS5hY3RpdmVMaW5rID0gZnVuY3Rpb24obikge1xyXG4gICAgICByZXR1cm4gKCRzdGF0ZS5jdXJyZW50Lm5hbWUuaW5kZXhPZihuKT49MCA/IFwiYWN0aXZlXCIgOiBcIlwiKTsgICBcclxuICAgIH1cclxuXHJcbiAgICAkc2NvcGUuZ3JpZE9wdGlvbnMgPSB7XHJcbiAgICAgICAgY29sdW1uRGVmczogW1xyXG4gICAgICAgICB7IG5hbWU6ICdpZCcsIGRpc3BsYXlOYW1lOiAnSUQnLCBhZ2dyZWdhdGlvblR5cGU6IHVpR3JpZENvbnN0YW50cy5hZ2dyZWdhdGlvblR5cGVzLmF2Zyx0eXBlOiAnbnVtYmVyJywgd2lkdGg6JzUlJyxlbmFibGVIaWRpbmc6IGZhbHNlLCB2aXNpYmxlOiB0cnVlIH0sXHJcbiAgICAgICAgIHsgbmFtZTogJ3Jlc291cmNlZGVmbGFuZ19zZXRbMF0uTmFtZScsIGRpc3BsYXlOYW1lOiAnVGFzayBuYW1lJ30sXHJcbiAgICAgICAgIHsgbmFtZTogJ3Jlc291cmNlZGVmbGFuZ19zZXRbMF0uU3ViamVjdCcsIGRpc3BsYXlOYW1lOiAnVGFzayBzdWJqZWN0JyB9LFxyXG4gICAgICAgICB7IG5hbWU6ICdyZXNvdXJjZWRlZmxhbmdfc2V0WzBdLkRlc2NyaXB0aW9uJywgZGlzcGxheU5hbWU6ICdUYXNrIGRlc2NyaXB0aW9uJyB9LFxyXG4gICAgICAgIC8vIHsgbmFtZTogJ3Jlc291cmNlZGVmbGFuZ19zZXRbMF0uTGFuZy5uYW1lJywgZGlzcGxheU5hbWU6ICdMYW5ndWFnZSd9LFxyXG4gICAgICAgICAvL3sgbmFtZTogJ1Jlc291cmNlVHlwZS5Db2Rlc0RldGFpbExhbmdbMF0uVmFsdWUnLCBkaXNwbGF5TmFtZTogJ1Rhc2sgdHlwZScgfSxcclxuICAgICAgICAgeyBuYW1lOiAnU3RhdHVzLkNvZGVzRGV0YWlsTGFuZ1swXS5WYWx1ZScsIGRpc3BsYXlOYW1lOiAnU3RhdHVzJ30sXHJcbiAgICAgICAgXHJcbiAgICAgICAgIF0sXHJcblx0XHRlbmFibGVHcmlkTWVudTogdHJ1ZSxcclxuICAgIHNob3dHcmlkRm9vdGVyOiB0cnVlLFxyXG5cdFx0c2hvd0NvbHVtbkZvb3RlcjogdHJ1ZSxcclxuICAgIGVuYWJsZVJvd1NlbGVjdGlvbjogdHJ1ZSxcclxuXHRcdG11bHRpU2VsZWN0OiBmYWxzZSxcclxuXHRcdGVuYWJsZUhvcml6b250YWxTY3JvbGxiYXIgOiAwLCBcclxuXHRcdGVuYWJsZVZlcnRpY2FsU2Nyb2xsYmFyIDogMixcclxuXHRcdGVuYWJsZUZpbHRlcmluZzogdHJ1ZSxcclxuXHRcdGVuYWJsZVJvd0hlYWRlclNlbGVjdGlvbjogdHJ1ZSxcclxuXHRcdGVuYWJsZUNvbHVtblJlc2l6aW5nOiB0cnVlLFxyXG4gICAvLyBtaW5Sb3dzVG9TaG93IDogM1xyXG4gICB9XHJcbiAgIFxyXG4gICAkc2NvcGUuY3VycmVudFN0YXRlTmFtZT0kc3RhdGUuY3VycmVudC5uYW1lO1xyXG4gICAkc2NvcGUuY3VycmVudFN0YXRlUGFyYW1zPSRzdGF0ZS5wYXJhbXM7XHJcbiAgIFxyXG4gICAgICRzY29wZS5ncmlkT3B0aW9ucy5vblJlZ2lzdGVyQXBpID0gZnVuY3Rpb24gKGdyaWRBcGkpIHtcclxuICAgICAgICAkc2NvcGUuZ3JpZEFwaSA9IGdyaWRBcGk7XHJcbiAgICAgICAgZ3JpZEFwaS5zZWxlY3Rpb24ub24ucm93U2VsZWN0aW9uQ2hhbmdlZCgkc2NvcGUsZnVuY3Rpb24ocm93KXtcclxuICAgICAgICAgJHNjb3BlLnRhc2tTZWxlY3RlZD1yb3cuaXNTZWxlY3RlZDtcclxuICAgICAgIFxyXG4gICAgICAgICBpZihyb3cuaXNTZWxlY3RlZCl7XHJcbiAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkVGFzaz1yb3cuZW50aXR5LmlkO1xyXG4gICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkVGFza09iamVjdCA9IHJvdy5lbnRpdHk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTsgICAgIFxyXG4gICAgIH1cclxuIFxyXG4gXHJcbiAgICBcclxuICAgICRzY29wZS5Jbml0aXRhdGVBbGxMaXN0ID0gZnVuY3Rpb24oKXtcclxuICAgICAgXHJcbiAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICBcclxuICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZCeVR5cGUobGFuZywndGFzaycpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdyaWRPcHRpb25zLmRhdGEgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAgICAgXHJcbiAgICBcclxuICAgIC8vbmFwdW5pIGdyaWQgcyBkZWZpbmljaWphbWEgcmVzdXJzYVxyXG4gICAgJHNjb3BlLkluaXRpdGF0ZUFsbExpc3QoKTtcclxuICAgICAkc2NvcGUuSW5pdGlhdGVUYXNrID0gZnVuY3Rpb24gKHRhc2tEZWZJZCl7XHJcbiAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhdGUuZ28oJ2FwcC5uYXZiYXIudGFza3MucHJvYycse2lkOiB0YXNrRGVmSWQsZnJvbVN0YXRlTmFtZTokc3RhdGUuY3VycmVudC5uYW1lLGZyb21TdGF0ZVBhcmFtczokc3RhdGUucGFyYW1zLG91dGNvbWVfaWQ6MCxwcmV2X3Rhc2tfZXhlY3V0ZV9pZDokc2NvcGUudGFza0V4ZWN1dGVJZCxtZW51X3R5cGU6XCJ0XCJ9KTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICBcclxuICAgICAkc2NvcGUuSW5pdGl0YXRlTXlMaXN0ID0gZnVuY3Rpb24oKXtcclxuICAgICAgXHJcbiAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICB2YXIgdXNlcj0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIudXNlcmlkO1xyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgIFJlc291cmNlc0RhdGFTZXJ2aWNlLmdldFJlc291cmNlRGVmTGlzdEJ5TGFuZ0J5VHlwZVVzZXIobGFuZywndGFzaycsdXNlcikudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRzY29wZS5ncmlkT3B0aW9ucy5kYXRhID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm15SW5pdGlhdGVUYXNrTGlzdCA9IGRhdGEuZGF0YS5yZXN1bHRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgIH07ICAgXHJcbiAgICBcclxuICAgICRzY29wZS5Jbml0aXRhdGVNeUxpc3QoKTtcclxuICAgICBcclxuICAgIH1cclxuZXhwb3J0IGZ1bmN0aW9uIHRhc2tQcm9jQ3RybCAoJHNjb3BlLCAkcm9vdFNjb3BlLCR0aW1lb3V0LHVpR3JpZENvbnN0YW50cyxQcm9jZXNzaW5nU2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlLE1lbnVTZXJ2aWNlLCRzdGF0ZVBhcmFtcyxHcmlkc3RlclNlcnZpY2UsVGFza0RhdGFTZXJ2aWNlLFRhc2tQcm9jU2VydmljZSxXaWRnZXREYXRhRXhjaGFuZ2VTZXJ2aWNlLCRzdGF0ZSwkY29va2llcykge1xyXG4gICAgXHJcbiAgICAkc2NvcGUuZ3NydmM9R3JpZHN0ZXJTZXJ2aWNlO1xyXG4gICAgJHNjb3BlLmZkPXt9O1xyXG4gICAgJHNjb3BlLm9wZW5lZFRhc2tJbk5ld1BhZ2U9e2xvY2FsVmFyczpudWxsLHRhc2tEZWZpbml0aW9uOm51bGx9O1xyXG4gICAgLy8gJHNjb3BlLmxvY2FsVmFycz17fTtcclxuICAgIC8vICRzY29wZS50YXNrRGVmaW5pdGlvbj17fTtcclxuICAgICRzY29wZS5nc3J2Yy5zZXRPcGVuVGFza1R5cGUoXCJjdXJyZW50XCIpO1xyXG4gICBcclxuICAgICRzY29wZS5vcGVuVGFza0luTmV3UGFnZT1mdW5jdGlvbigpe1xyXG4gICAgICAgIFxyXG4gICAgICAgICRzY29wZS5vcGVuZWRUYXNrSW5OZXdQYWdlID0gJHNjb3BlLmdzcnZjLmdldFRhc2tEYXRhSW5OZXdQYWdlKCk7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICAvLyRzY29wZS5nc3J2Yy5kZXN0cm95RHJhZ3VsYSgnYmFnLXJlc291cmNlJyk7XHJcbiAgICAvLyRzY29wZS5nc3J2Yy5kZXN0cm95RHJhZ3VsYSgnYmFnLXRhc2snKTtcclxuICAgICAgXHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIHRhc2tQdWJsaWNDdHJsICgkc2NvcGUsICRyb290U2NvcGUsJHRpbWVvdXQsdWlHcmlkQ29uc3RhbnRzLFByb2Nlc3NpbmdTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsTWVudVNlcnZpY2UsJHN0YXRlUGFyYW1zLEdyaWRzdGVyU2VydmljZSxUYXNrRGF0YVNlcnZpY2UsVGFza1Byb2NTZXJ2aWNlLFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UsJHN0YXRlLCRjb29raWVzKSB7XHJcbiAgICBcclxuICAgIGxldCBvcmdfaWQgPSAkc3RhdGUucGFyYW1zLm9yZ19pZDtcclxuICAgIGxldCB0YXNrX25hbWUgPSAkc3RhdGUucGFyYW1zLnRhc2tfbmFtZTtcclxuICAgIGxldCB0YXNrX2lkID0gJHN0YXRlLnBhcmFtcy50YXNrX2lkO1xyXG4gICAgJHJvb3RTY29wZS5oZWFkVGl0bGUgPVwiS2F0YWx5byB8IFwiK3Rhc2tfbmFtZTtcclxuICAgICRzY29wZS5DVFJMTkFNRT0ndGFza1B1YmxpY0N0cmwnO1xyXG4gICAgJHNjb3BlLmxvY2FsVmFycz17fTtcclxuICAgICRzY29wZS5sb2NhbFZhcnMucHVibGljVGFzaz10cnVlO1xyXG4gICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uPXt9O1xyXG4gICAgJHNjb3BlLmxvY2FsVmFycy5wdWJsaWNUYXNrTmFtZSA9IHRhc2tfbmFtZTtcclxuICAgIFxyXG4gICAgJHNjb3BlLmxvY2FsVmFycy5wdWJsaWNUYXNrSWQgPSB0YXNrX2lkO1xyXG4gICAgJHNjb3BlLmxvY2FsVmFycy5vcmdhbmlzYXRpb25JZCA9IG9yZ19pZDtcclxuICAgICAgXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB0YXNrSW5pdGlhdGVDdHJsICgkc2NvcGUsICRyb290U2NvcGUsJHRpbWVvdXQsdWlHcmlkQ29uc3RhbnRzLFByb2Nlc3NpbmdTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsJHN0YXRlUGFyYW1zLEdyaWRzdGVyU2VydmljZSxUYXNrRGF0YVNlcnZpY2UsV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZSwkc3RhdGUsJGNvb2tpZXMpIHtcclxuICAgICAgJHNjb3BlLkNUUkxOQU1FPSd0YXNrSW5pdGlhdGVDdHJsJztcclxuICAgICAkc2NvcGUuaW5pdGlhdGVGb3JtTG9hZGVkPWZhbHNlO1xyXG4gICAgICAkc2NvcGUuaXNTYXZpbmc9ZmFsc2U7XHJcbiAgICAgICRzY29wZS50YXNrRGVmSWQ9JHN0YXRlUGFyYW1zLmlkO1xyXG4gICAgICAkc2NvcGUucHJldmlvdXNUYXNrPSRzdGF0ZVBhcmFtcy5wcmV2X3Rhc2tfZXhlY3V0ZV9pZDtcclxuICAgICAgJHNjb3BlLnByZXZpb3VzVGFza091dGNvbWVJZD0kc3RhdGVQYXJhbXMub3V0Y29tZV9pZDtcclxuICAgICAgJHNjb3BlLnByZXZpb3VzVGFza1BhY2thZ2U9JHN0YXRlUGFyYW1zLnByZXZfdGFza19wYWNrYWdlOyBcclxuICAgICAgJHNjb3BlLmdyaWRzdGVyVHlwZT1cInRhc2tcIjtcclxuICAgICAgJHNjb3BlLmdyaWRzdGVyT3B0cyA9IEdyaWRzdGVyU2VydmljZS5nZXRHcmlkc3Rlck9wdGlvbnMoKTtcclxuICAgICAgJHNjb3BlLnNob3dTZWFyY2hGaWx0ZXJzPWZhbHNlOyAgICAgIFxyXG4gICAgICAkc2NvcGUuZGFzaGJvYXJkLndpZGdldHMgPSBbXTtcclxuICAgICAgJHNjb3BlLmRhc2hib2FyZC5kYXRhID0ge307XHJcbiAgICAgIFxyXG4gICAgICAkc2NvcGUuYmFja0Nsb3NlSWNvbiA9IFwiZmEgZmEtY2xvc2VcIjtcclxuICAgICAgJHNjb3BlLmNhbmNlbEJhY2tCdG5UeHQgPSBcIkNhbmNlbFwiO1xyXG4gICAgICBcclxuICAgICAgJHNjb3BlLmZyb21TdGF0ZU5hbWU9JHN0YXRlUGFyYW1zLmZyb21TdGF0ZU5hbWU7XHJcbiAgICAgICRzY29wZS5mcm9tU3RhdGVQYXJhbXM9JHN0YXRlUGFyYW1zLmZyb21TdGF0ZVBhcmFtcztcclxuICAgICAgJHNjb3BlLmNvb2tpZUZyb21TdGF0ZU5hbWU9JGNvb2tpZXMuZ2V0T2JqZWN0KCdpbml0aWF0ZVRhc2tGcm9tU3RhdGVOYW1lJyk7XHJcbiAgICAgICRzY29wZS5jb29raWVGcm9tU3RhdGVQYXJhbXM9JGNvb2tpZXMuZ2V0T2JqZWN0KCdpbml0aWF0ZVRhc2tGcm9tU3RhdGVQYXJhbXMnKTtcclxuICAgICAgJHNjb3BlLm5vQmFja2J1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAkc2NvcGUuYmFja0J0bkZyb21Db29raWU9ZmFsc2U7XHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgIGlmICgkc2NvcGUuZnJvbVN0YXRlTmFtZT09dW5kZWZpbmVkIHx8ICRzY29wZS5mcm9tU3RhdGVOYW1lPT1cIlwiKVxyXG4gICAgICB7XHJcbiAgICAgICAgICBpZiAoJHNjb3BlLmNvb2tpZUZyb21TdGF0ZU5hbWU9PXVuZGVmaW5lZCB8fCAkc2NvcGUuY29va2llRnJvbVN0YXRlTmFtZT09XCJcIilcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJHNjb3BlLm5vQmFja0J1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAkc2NvcGUuZnJvbVN0YXRlTmFtZSA9ICAkc2NvcGUuY29va2llRnJvbVN0YXRlTmFtZTtcclxuICAgICAgICAgICAgJHNjb3BlLmJhY2tCdG5Gcm9tQ29va2llID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICAkY29va2llcy5wdXRPYmplY3QoJ2luaXRpYXRlVGFza0Zyb21TdGF0ZU5hbWUnLCRzY29wZS5mcm9tU3RhdGVOYW1lKTtcclxuICAgICAgICBcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgaWYgKCRzY29wZS5mcm9tU3RhdGVQYXJhbXM9PXVuZGVmaW5lZClcclxuICAgICAge1xyXG4gICAgICAgICAgaWYgKCRzY29wZS5jb29raWVGcm9tU3RhdGVQYXJhbXMhPXVuZGVmaW5lZClcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBpZiAoJHNjb3BlLmJhY2tCdG5Gcm9tQ29va2llKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mcm9tU3RhdGVQYXJhbXMgPSAgJHNjb3BlLmNvb2tpZUZyb21TdGF0ZVBhcmFtcztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgfWVsc2UgaWYgKCRzY29wZS5jb29raWVGcm9tU3RhdGVQYXJhbXM9PXVuZGVmaW5lZClcclxuICAgICAge1xyXG4gICAgICAgICRjb29raWVzLnB1dE9iamVjdCgnaW5pdGlhdGVUYXNrRnJvbVN0YXRlUGFyYW1zJywkc2NvcGUuZnJvbVN0YXRlUGFyYW1zKTtcclxuICAgICAgICBcclxuICAgICAgfWVsc2VcclxuICAgICAge1xyXG4gICAgICAgICAgaWYgKCRzY29wZS5iYWNrQnRuRnJvbUNvb2tpZSlcclxuICAgICAgICAgIHtcclxuICAgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLmZyb21TdGF0ZVBhcmFtcyA9ICAkc2NvcGUuY29va2llRnJvbVN0YXRlUGFyYW1zO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgfWVsc2VcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAkY29va2llcy5wdXRPYmplY3QoJ2luaXRpYXRlVGFza0Zyb21TdGF0ZVBhcmFtcycsJHNjb3BlLmZyb21TdGF0ZVBhcmFtcyk7ICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgICAgIGlmICgkc2NvcGUucHJldmlvdXNUYXNrPT11bmRlZmluZWQgfHwgJHNjb3BlLnByZXZpb3VzVGFzaz09XCJcIilcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAvLyAkc3RhdGUuZ28oKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICRzY29wZS5wcmV2aW91c1Rhc2sgPSAwO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgJHNjb3BlLnBvdGVudGlhbE93bmVycyA9IHt9O1xyXG4gICAgICBcclxuICAgICAvLyAkc2NvcGUucG90ZW50aWFsT3duZXJzVXNlcnM9W107XHJcbiAgICAgIC8vJHNjb3BlLnBvdGVudGlhbE93bmVyc0dyb3Vwcz1bXTsgICAgIFxyXG4gICAgICBcclxuICAgIC8vIElMSiAyMi4xMi4yMDE4IGNhbid0IGRlcmVnaXN0ZXIgLSBkZXJlZ2lzdGVyIHByZXYgdGFzayB3aGljaCBpcyBuZWVkZWQgICBcclxuICAgIC8vV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5kZVJlZ2lzdGVyQWxsV2lkZ2V0cygpO1x0Ly9NaWdvciAtIGRlcmVnaXN0ZXJpbmcgdGFza3dpZGdldFJlZ2lzdHJ5IFxyXG5cclxuICAgICAgJHNjb3BlLmxvY2FsVGFza0lkPVdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UucmVnaXN0ZXJUYXNrKCRzY29wZS50YXNrRGVmSWQpO1xyXG4gICAgICBcclxuICAgICAkc2NvcGUudGFza0RlZmluaXRpb24gPXt9O1xyXG4gICAgICAkc2NvcGUucG90ZW50aWFsT3duZXJzLnBvdGVudGlhbE93bmVyc1VzZXJzID0gW107XHJcbiAgICAgICRzY29wZS5wb3RlbnRpYWxPd25lcnMucG90ZW50aWFsT3duZXJzR3JvdXBzID0gW107XHJcbiAgICAgIFxyXG4gICAgICAgICAkc2NvcGUuRm9ybUxvY2tVbmxvY2sgPSBmdW5jdGlvbigpXHJcbiAgICAgIHtcclxuICAgICAgICAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybUxvY2tlZD0hJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1Mb2NrZWQ7XHJcblxyXG4gICAgICAgIC8qXHJcbiAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybUxvY2tlZCkge1xyXG4gICAgICAgICAgICAkc2NvcGUuZGFzaGJvYXJkLndpZGdldHM9R3JpZHN0ZXJTZXJ2aWNlLlByb2Nlc3NXaWRnZXRzKCRzY29wZS5kYXNoYm9hcmQud2lkZ2V0c09yaWdpbmFsKTtcclxuICAgICAgICB9ZWxzZVxyXG4gICAgICAgIHtcclxuICAgICAgICAgJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzID0gJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzT3JpZ2luYWw7XHJcbiAgICAgICAgXHJcbiAgICAgICAgIH1cclxuICAgICAgICAqL1xyXG4gICAgICB9O1xyXG4gICAgICBcclxuICAgICAgJHNjb3BlLlByZUluaXRpYXRlVGFzayA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAkc2NvcGUudGFza0luaXRpYXRlSWQ9MDtcclxuICAgICAgICAgICRzY29wZS50YXNrRXhlY3V0ZUlkPTA7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgXHJcbiAgICAgICAgVGFza0RhdGFTZXJ2aWNlLnByZUluaXRpYXRlVGFzaygkc2NvcGUudGFza0RlZklkLCRzY29wZS5wcmV2aW91c1Rhc2ssbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uID0gZGF0YS5kYXRhLnRhc2tkZWZbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLnByZXZfdGFza19pZCA9ICRzY29wZS5wcmV2aW91c1Rhc2s7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLmZvcm1fdHlwZT1cImlcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza0RlZmluaXRpb24uc291cmNlX3R5cGUgPSAkc3RhdGVQYXJhbXMuc3JjX3R5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uLnRhc2tGb3JtTG9hZGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS50YXNrRGVmaW5pdGlvbi5BdXRvSW5pdGlhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuQXV0b0luaXRpYXRlVGFzaygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5kYXNoYm9hcmQuZGF0YT0gZGF0YS5kYXRhLmZvcm1fZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbj1kYXRhLmRhdGEucmVzb3VyY2VEZWZpbml0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGFzaGJvYXJkLndpZGdldHM9IGRhdGEuZGF0YS53aWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcz17Zm9ybUxvY2tlZDp0cnVlLGZvcm1WaWV3VHlwZToyfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpeyRzY29wZS5pbml0aWF0ZUZvcm1Mb2FkZWQgPSB0cnVlO30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaWYgKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGFzaGJvYXJkLndpZGdldHM9R3JpZHN0ZXJTZXJ2aWNlLlByb2Nlc3NXaWRnZXRzKCRzY29wZS5kYXNoYm9hcmQud2lkZ2V0c09yaWdpbmFsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGFzaGJvYXJkLndpZGdldHMgPSAkc2NvcGUuZGFzaGJvYXJkLndpZGdldHNPcmlnaW5hbDtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ki9cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJHN0YXRlLmdvKCdhcHAubmF2YmFyLnRhc2tzLmluaXRpYXRlJyx7aWQ6ICRzY29wZS50YXNrRGVmSWQsZnJvbVN0YXRlTmFtZTokc3RhdGUuY3VycmVudC5uYW1lLGZyb21TdGF0ZVBhcmFtczokc3RhdGUucGFyYW1zLHByZXY6JHNjb3BlLnRhc2tFeGVjdXRlSWR9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgfTtcclxuICAgICAgXHJcbiAgICAgICRzY29wZS5DYW5jZWxDbGlja2VkID0gZnVuY3Rpb24oKXtcclxuICAgICAgICBcclxuICAgICAgICAkc3RhdGUuZ28oICRzY29wZS5mcm9tU3RhdGVOYW1lLCAkc2NvcGUuZnJvbVN0YXRlUGFyYW1zKTtcclxuICAgICAgXHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICAgJHNjb3BlLkF1dG9Jbml0aWF0ZVRhc2sgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAgIC8vICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgIHZhciBwYXJlbnREYXRhc2V0PSRzY29wZS5nZXRQcmV2aW91c1Rhc2tXaWRnZXQoKTtcclxuICAgICAgICBcclxuICAgICAgICBUYXNrRGF0YVNlcnZpY2UuaW5pdGlhdGVUYXNrKCRzY29wZS50YXNrRGVmSWQsJHNjb3BlLnByZXZpb3VzVGFzaywkc2NvcGUucHJldmlvdXNUYXNrT3V0Y29tZUlkLFtdLCRzY29wZS5wb3RlbnRpYWxPd25lcnMscGFyZW50RGF0YXNldFsnZGF0YXNldElkJ10scGFyZW50RGF0YXNldFsnZGF0YXNldFJlY29yZElkJ10sbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhLnRhc2tFeGVjdXRlSW5zdGFuY2UubGVuZ3RoPjApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tfaW5pdGlhdGVfaWQgPSBkYXRhLmRhdGEudGFza0V4ZWN1dGVJbnN0YW5jZS5UYXNrSW5pdGlhdGVJZC5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tfZXhlY3V0ZV9pZCA9IGRhdGEuZGF0YS50YXNrRXhlY3V0ZUluc3RhbmNlLmlkOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5kYXRhLnRhc2tJbml0aWF0ZUluc3RhbmNlLmxlbmd0aD4wKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50YXNrX2luaXRpYXRlX2lkID0gZGF0YS5kYXRhLnRhc2tJbml0aWF0ZUluc3RhbmNlLmlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza19leGVjdXRlX2lkID0gMDsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhdGUuZ28oJ2FwcC5uYXZiYXIudGFza3MuZXhlY3V0ZScse2lkOiAkc2NvcGUudGFza0RlZklkLHRhc2tfaW5pdGlhdGVfaWQ6JHNjb3BlLnRhc2tfaW5pdGlhdGVfaWQsdGFza19leGVjdXRlX2lkOiRzY29wZS50YXNrX2V4ZWN1dGVfaWQsZnJvbVN0YXRlTmFtZTokc2NvcGUuZnJvbVN0YXRlTmFtZSxmcm9tU3RhdGVQYXJhbXM6JHNjb3BlLmZyb21TdGF0ZVBhcmFtcyxwcmV2X3Rhc2tfcGFja2FnZTokc2NvcGUucHJldmlvdXNUYXNrUGFja2FnZSxwcmV2OiRzY29wZS50YXNrRXhlY3V0ZUlkfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAvLyB9XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgICAkc2NvcGUuSW5pdGlhdGVUYXNrID0gZnVuY3Rpb24oZm9ybSl7XHJcbiAgICAgICAgdmFyIGYgPSAkc2NvcGUuZm9ybWE7XHJcbiAgICAgICAgaWYgKGZvcm0uJHN1Ym1pdHRlZCkgJHNjb3BlLnNldFN1Ym1pdHRlZChmb3JtKTtcclxuICAgICAgICBpZiAoZm9ybS4kdmFsaWQpIHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vdmFyIGluaXRpYXRlRGF0YT17fTtcclxuICAgICAgICAgICAgJHJvb3RTY29wZS4kYnJvYWRjYXN0KCdQcm9jZXNzVGFza1dpZGdldHMnLHt9KTsgLy9zdmkgd2lkZ2V0aSBzbHVzYWp1IG92YWogZXZlbnRcclxuICAgICAgICAgICAgJHNjb3BlLmlzU2F2aW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgIHZhciBwYXJlbnREYXRhc2V0PSRzY29wZS5nZXRQcmV2aW91c1Rhc2tXaWRnZXQoKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5pbml0aWF0ZVRhc2soJHNjb3BlLnRhc2tEZWZJZCwkc2NvcGUucHJldmlvdXNUYXNrLCRzY29wZS5wcmV2aW91c1Rhc2tPdXRjb21lSWQsJHNjb3BlLmRhc2hib2FyZC5kYXRhLCRzY29wZS5wb3RlbnRpYWxPd25lcnMscGFyZW50RGF0YXNldFsnZGF0YXNldElkJ10scGFyZW50RGF0YXNldFsnZGF0YXNldFJlY29yZElkJ10sbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblx0XHRcdFx0XHRcdFx0XHQvL3RyZWJhbSBkb2JpdGkgb2Qgc3ZpaCB3aWRnZXRhIGluZm9ybWFjaWplIGtvamUgbWkgdHJlYmFqdSBucHIgcmVzdW9yY2VJRCB1IHJldF92YWx1ZSAtIGFycmF5IFxyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gd2lkZ2V0aSBzbHVzYWp1ICdJbml0aWF0ZVRhc2tQb3N0UHJvY2VzcycgaSBvbmRhIG1vcmFqdSBzYSBTRVREQVRBIGJyb2FkY2FzdGkgemEgc3J1Z2Ugd2lkZ2V0ZSBucHIgcmVzb3VyY2VpZCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLmRhdGEubXNnLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm9vdFNjb3BlLiRicm9hZGNhc3QoJ0luaXRpYXRlVGFza1Bvc3RQcm9jZXNzJyxkYXRhLmRhdGEucmV0X3ZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vb3ZvIHRyZWJhIHN0YXZpdGkgdSBldmVudCBJbml0aWF0ZVRhc2tQb3N0UHJvY2Vzc0ZpbmlzaGVkICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuYmFja0Nsb3NlSWNvbiA9IFwiZmEgZmEtYXJyb3ctY2lyY2xlLWxlZnRcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jYW5jZWxCYWNrQnRuVHh0ID0gXCJHbyBiYWNrXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza0luaXRpYXRlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICRzY29wZS5pc1NhdmluZyA9IGZhbHNlOyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuaXNTYXZpbmcgPSBmYWxzZTsgIFxyXG5cdFx0XHRcdFx0XHRcclxuICAgICAgICAgLy8gfSk7XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHJcbiAgICAgICAgICB9IC8vIGlmIChpc1ZhbGlkKVxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoXCJQbGVhc2UgZW50ZXIgcmVxdWlyZWQgZGF0YVwiLCd3YXJuaW5nJyk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICAgICAvLyBcclxuICAgICBcclxuICAgICBcclxuICAgICRzY29wZS5nZXRQcmV2aW91c1Rhc2tXaWRnZXQgID0gZnVuY3Rpb24oKVxyXG4gICAge1xyXG4gICAgICB2YXIgcFRhc2tEYXRhID0gV2lkZ2V0RGF0YUV4Y2hhbmdlU2VydmljZS5nZXRQcmV2VGFza0RhdGEoJHNjb3BlLnRhc2tEZWZpbml0aW9uLnByZXZfdGFza19pZCk7XHJcbiAgICAgICAgICAgIHZhciBkYXRhc2V0SWQ9MCxkYXRhc2V0UmVjb3JkSWQ9MDtcclxuICAgICAgICAgICAgaWYgKHBUYXNrRGF0YS5ERUkhPXVuZGVmaW5lZCAmJiBwVGFza0RhdGEuREVJIT1udWxsKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHBUYXNrRGF0YS5ERUkubGVuZ3RoO2krKylcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGlmIChwVGFza0RhdGEuREVJW2ldLm5hbWU9PVwiZGF0YXNldExpc3RSZWNvcmRJZFwiKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlmIChwVGFza0RhdGEuREVJW2ldLnZhbHVlIT11bmRlZmluZWQgJiYgcFRhc2tEYXRhLkRFSVtpXS52YWx1ZSE9bnVsbClcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wO2o8cFRhc2tEYXRhLkRFSVtpXS52YWx1ZS5sZW5ndGg7aisrKVxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICBpZiAocFRhc2tEYXRhLkRFSVtpXS52YWx1ZVtqXS5uYW1lPT1cInJlc291cmNlSWRcIiAmJiBwVGFza0RhdGEuREVJW2ldLnZhbHVlW2pdLnZhbHVlIT11bmRlZmluZWQpIGRhdGFzZXRJZD1wVGFza0RhdGEuREVJW2ldLnZhbHVlW2pdLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgaWYgKHBUYXNrRGF0YS5ERUlbaV0udmFsdWVbal0ubmFtZT09XCJyZXNvdXJjZVJlY29yZElkXCIgJiYgcFRhc2tEYXRhLkRFSVtpXS52YWx1ZVtqXS52YWx1ZSE9dW5kZWZpbmVkKSBkYXRhc2V0UmVjb3JkSWQ9cFRhc2tEYXRhLkRFSVtpXS52YWx1ZVtqXS52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgIHJldHVybiB7J2RhdGFzZXRJZCc6ZGF0YXNldElkLCdkYXRhc2V0UmVjb3JkSWQnOmRhdGFzZXRSZWNvcmRJZH07XHJcbiAgICB9O1xyXG5cclxuICAgICAkc2NvcGUuc2V0U3VibWl0dGVkID0gZnVuY3Rpb24gKGZvcm0pIHtcclxuICAgICAgICBmb3JtLiRzZXRTdWJtaXR0ZWQoKTtcclxuICAgICAgICBhbmd1bGFyLmZvckVhY2goZm9ybSwgZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgICAgIGlmKGl0ZW0gJiYgaXRlbS4kJHBhcmVudEZvcm0gPT09IGZvcm0gJiYgaXRlbS4kc2V0U3VibWl0dGVkKSB7XHJcbiAgICAgICAgICAgICRzY29wZS5zZXRTdWJtaXR0ZWQoaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn0gXHJcbiAgICAgIC8vZ2V0IGZvcm0gICBcclxuICAgICAgJHNjb3BlLlByZUluaXRpYXRlVGFzaygpO1xyXG4gICAgIFxyXG4gICAgIFxyXG4gICAgICBcclxuICAgIH1cclxuZXhwb3J0IGZ1bmN0aW9uIHRhc2tFeGVjdXRlQ3RybCAoJHNjb3BlLCAkcm9vdFNjb3BlLFByb2Nlc3NpbmdTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsVGFza0RhdGFTZXJ2aWNlLCRzdGF0ZVBhcmFtcyxHcmlkc3RlclNlcnZpY2UsJHRpbWVvdXQsJHN0YXRlLFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UsJGNvb2tpZXMpIHtcclxuICAgICAkc2NvcGUuQ1RSTE5BTUU9J3Rhc2tFeGVjdXRlQ3RybCc7XHJcbiAgICAgIGlmICgkc2NvcGUubG9jYWxWYXJzPT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnM9e307XHJcbiAgICAgICRzY29wZS5leGVjdXRlVGFza0RhdGFMb2FkZWQ9ZmFsc2U7XHJcbiAgICAgICRzY29wZS50YXNrX2luaXRpYXRlX2lkPSRzdGF0ZVBhcmFtcy50YXNrX2luaXRpYXRlX2lkO1xyXG4gICAgICAkc2NvcGUudGFza19leGVjdXRlX2lkPSRzdGF0ZVBhcmFtcy50YXNrX2V4ZWN1dGVfaWQ7XHJcbiAgICAgICRzY29wZS5mb3JHcm91cCA9ICRzdGF0ZVBhcmFtcy5mb3JfZ3JvdXA7XHJcbiAgICAgIFdpZGdldERhdGFFeGNoYW5nZVNlcnZpY2UuZGVSZWdpc3RlckFsbFdpZGdldHMoKTsvL01JR09SIFRPRE8gLSBkb2RhbyBvdm8gYWxpIGdkamUgamUgcmVnaXN0ZXJUQVNLIGkgZGEgbGkgdHJlYmEgb3ZkamU/Pz8/XHJcblx0XHJcbiAgICAgICRzY29wZS5mcm9tU3RhdGVOYW1lPSRzdGF0ZVBhcmFtcy5mcm9tU3RhdGVOYW1lO1xyXG4gICAgICAkc2NvcGUuZnJvbVN0YXRlUGFyYW1zPSRzdGF0ZVBhcmFtcy5mcm9tU3RhdGVQYXJhbXM7XHJcbiAgICAgICRzY29wZS5jb29raWVGcm9tU3RhdGVOYW1lPSRjb29raWVzLmdldE9iamVjdCgnZXhlY3V0ZVRhc2tGcm9tU3RhdGVOYW1lJyk7XHJcbiAgICAgICRzY29wZS5jb29raWVGcm9tU3RhdGVQYXJhbXM9JGNvb2tpZXMuZ2V0T2JqZWN0KCdleGVjdXRlVGFza0Zyb21TdGF0ZVBhcmFtcycpO1xyXG4gICAgICAkc2NvcGUubm9CYWNrYnV0dG9uID0gZmFsc2U7XHJcbiAgICAgICRzY29wZS5iYWNrQnRuRnJvbUNvb2tpZT1mYWxzZTtcclxuICAgICAgXHJcbiAgICAgICRzY29wZS5kYXNoYm9hcmQgPSB7IHdpZGdldHMgOiB7fSwgZGF0YSA6IHt9IH07XHJcbiAgICAgIFxyXG4gICAgICBpZiAoJHNjb3BlLmZyb21TdGF0ZU5hbWU9PXVuZGVmaW5lZCB8fCAkc2NvcGUuZnJvbVN0YXRlTmFtZT09XCJcIilcclxuICAgICAge1xyXG4gICAgICAgICAgaWYgKCRzY29wZS5jb29raWVGcm9tU3RhdGVOYW1lPT11bmRlZmluZWQgfHwgJHNjb3BlLmNvb2tpZUZyb21TdGF0ZU5hbWU9PVwiXCIpXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICRzY29wZS5ub0JhY2tCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgICAgfWVsc2VcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJHNjb3BlLmZyb21TdGF0ZU5hbWUgPSAgJHNjb3BlLmNvb2tpZUZyb21TdGF0ZU5hbWU7XHJcbiAgICAgICAgICAgICRzY29wZS5iYWNrQnRuRnJvbUNvb2tpZSA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgJGNvb2tpZXMucHV0T2JqZWN0KCdleGVjdXRlVGFza0Zyb21TdGF0ZU5hbWUnLCRzY29wZS5mcm9tU3RhdGVOYW1lKTtcclxuICAgICAgICBcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgaWYgKCRzY29wZS5mcm9tU3RhdGVQYXJhbXM9PXVuZGVmaW5lZClcclxuICAgICAge1xyXG4gICAgICAgICAgaWYgKCRzY29wZS5jb29raWVGcm9tU3RhdGVQYXJhbXMhPXVuZGVmaW5lZClcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBpZiAoJHNjb3BlLmJhY2tCdG5Gcm9tQ29va2llKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5mcm9tU3RhdGVQYXJhbXMgPSAgJHNjb3BlLmNvb2tpZUZyb21TdGF0ZVBhcmFtcztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgfWVsc2UgaWYgKCRzY29wZS5jb29raWVGcm9tU3RhdGVQYXJhbXM9PXVuZGVmaW5lZClcclxuICAgICAge1xyXG4gICAgICAgICRjb29raWVzLnB1dE9iamVjdCgnZXhlY3V0ZVRhc2tGcm9tU3RhdGVQYXJhbXMnLCRzY29wZS5mcm9tU3RhdGVQYXJhbXMpO1xyXG4gICAgICAgIFxyXG4gICAgICB9ZWxzZVxyXG4gICAgICB7XHJcbiAgICAgICAgICBpZiAoJHNjb3BlLmJhY2tCdG5Gcm9tQ29va2llKVxyXG4gICAgICAgICAge1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAkc2NvcGUuZnJvbVN0YXRlUGFyYW1zID0gICRzY29wZS5jb29raWVGcm9tU3RhdGVQYXJhbXM7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICB9ZWxzZVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAgICRjb29raWVzLnB1dE9iamVjdCgnZXhlY3V0ZVRhc2tGcm9tU3RhdGVQYXJhbXMnLCRzY29wZS5mcm9tU3RhdGVQYXJhbXMpOyAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgJHNjb3BlLmdyaWRzdGVyVHlwZT1cInRhc2tcIjtcclxuICAgICAgLy8kc2NvcGUuZ3JpZHN0ZXJFeGVGb3JtT3B0cyA9IEdyaWRzdGVyU2VydmljZS5nZXRHcmlkc3Rlck9wdGlvbnMoKTtcclxuICAgICAgJHNjb3BlLmZvcm1UeXBlPVwiZVwiO1xyXG4gICAgIFxyXG4gICAgICAkc2NvcGUuaXNDb2xsYXBzZWRUYXNrRGV0YWlscz10cnVlO1xyXG4gICAgICBcclxuICAgICAgICAkc2NvcGUuRm9ybUxvY2tVbmxvY2sgPSBmdW5jdGlvbigpXHJcbiAgICAgIHtcclxuICAgICAgICAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybUxvY2tlZD0hJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zLmZvcm1Mb2NrZWQ7XHJcbiAgICAgIC8qXHJcbiAgICAgICAgaWYgKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybUxvY2tlZCkge1xyXG4gICAgICAgICAgICAkc2NvcGUuZGFzaGJvYXJkLndpZGdldHM9R3JpZHN0ZXJTZXJ2aWNlLlByb2Nlc3NXaWRnZXRzKCRzY29wZS5kYXNoYm9hcmQud2lkZ2V0c09yaWdpbmFsKTtcclxuICAgICAgICB9ZWxzZVxyXG4gICAgICAgIHtcclxuICAgICAgICAgJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzID0gJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzT3JpZ2luYWw7XHJcbiAgICAgICAgXHJcbiAgICAgICAgIH1cclxuICAgICAgICAqL1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAkc2NvcGUuZ29CYWNrID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhdGUuZ28oJHNjb3BlLmZyb21TdGF0ZU5hbWUsJHNjb3BlLmZyb21TdGF0ZVBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgfVxyXG4gICAgICAkc2NvcGUuZ2V0VGFza0V4ZWN1dGVEYXRhID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUudGFza19pbml0aWF0ZV9pZD09PVwiXCIpIHtcclxuICAgICAgICAgICAgICAkc2NvcGUudGFza19pbml0aWF0ZV9pZCA9IDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIGlmICgkc2NvcGUudGFza19leGVjdXRlX2lkPT09XCJcIikge1xyXG4gICAgICAgICAgICAgICRzY29wZS50YXNrX2V4ZWN1dGVfaWQgPSAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5wcmVFeGVjdXRlVGFzaygkc2NvcGUudGFza19pbml0aWF0ZV9pZCwkc2NvcGUudGFza19leGVjdXRlX2lkLGxhbmcpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZURlZmluaXRpb249IGRhdGEuZGF0YS5yZXNvdXJjZURlZmluaXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tEZWZpbml0aW9uID0gZGF0YS5kYXRhLnRhc2tkZWZbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS50YXNrRGVmaW5pdGlvbiE9dW5kZWZpbmVkKSAkc2NvcGUudGFza0RlZmluaXRpb24uaW5saW5lX3Rhc2s9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhc2hib2FyZC53aWRnZXRzLmxheW91dCA9IGRhdGEuZGF0YS53aWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5kYXNoYm9hcmQuZGF0YSA9IGRhdGEuZGF0YS5mb3JtX2RhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tJbml0aWF0ZUluc3RhbmNlID0gZGF0YS5kYXRhLnRhc2tJbml0aWF0ZUluc3RhbmNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza0V4ZWN1dGVJbnN0YW5jZSA9IGRhdGEuZGF0YS50YXNrRXhlY3V0ZUluc3RhbmNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcz17Zm9ybUxvY2tlZDp0cnVlLGZvcm1WaWV3VHlwZToyfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGhpc1dpZGdldD17cmVzb3VyY2VEZWZpbml0aW9uOiAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLHRhc2tJbml0aWF0ZUluc3RhbmNlOiAkc2NvcGUudGFza0luaXRpYXRlSW5zdGFuY2UsdGFza0V4ZWN1dGVJbnN0YW5jZTogJHNjb3BlLnRhc2tFeGVjdXRlSW5zdGFuY2V9OyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnRhc2tEZWZpbml0aW9uPT11bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza0RlZmluaXRpb249e307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnRhc2tFeGVjdXRlSW5zdGFuY2UhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS50YXNrRXhlY3V0ZUluc3RhbmNlLmxlbmd0aD4wKSAkc2NvcGUudGFza0RlZmluaXRpb24udGFza19leGVjdXRlX2lkID0gJHNjb3BlLnRhc2tFeGVjdXRlSW5zdGFuY2VbMF0uaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAkc2NvcGUudGFza0RlZmluaXRpb24udGFza19leGVjdXRlX2lkID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS50YXNrSW5pdGlhdGVJbnN0YW5jZSE9dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnRhc2tJbml0aWF0ZUluc3RhbmNlLmxlbmd0aD4wKSAkc2NvcGUudGFza0RlZmluaXRpb24udGFza19pbml0aWF0ZV9pZCA9ICRzY29wZS50YXNrSW5pdGlhdGVJbnN0YW5jZVswXS5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAkc2NvcGUudGFza0RlZmluaXRpb24udGFza19pbml0aWF0ZV9pZD0wO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza0RlZmluaXRpb24uZm9ybV90eXBlPVwiZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnRhc2tEZWZpbml0aW9uLlRhc2tPdXRjb21lSGVhZElkX2lkPT11bmRlZmluZWQgfHwgJHNjb3BlLnRhc2tEZWZpbml0aW9uLlRhc2tPdXRjb21lSGVhZElkX2lkPT1udWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUudGFza0RlZmluaXRpb24uVGFza091dGNvbWVIZWFkSWRfaWQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFza0RhdGFTZXJ2aWNlLkdldFRhc2tPdXRjb21lcygkc2NvcGUudGFza0RlZmluaXRpb24uUmVzb3VyY2VEZWZJZF9pZCwkc2NvcGUudGFza0RlZmluaXRpb24uVGFza091dGNvbWVIZWFkSWRfaWQsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy50YXNrT3V0Y29tZXMgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5PcGVuVGFza1R5cGU9XCJuZXdQYWdlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5leGVjdXRlVGFza0RhdGFMb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5pbml0aWF0ZUZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgLyogICBcclxuICAgICAgICAgICAgVGFza0RhdGFTZXJ2aWNlLkdldFRhc2tFeGVjdXRlRGF0YSgkc2NvcGUudGFza0luc3RhbmNlSWQsbGFuZykudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICRzY29wZS5hYy5hbGVydHMgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50YXNrSW5zdGFuY2UgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAqLyAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgfTtcclxuICAgICAgJHNjb3BlLkV4ZWN1dGVUYXNrQWN0aW9uID0gZnVuY3Rpb24oYWN0aW9uKXtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5FeGVjdXRlVGFza0FjdGlvbigkc2NvcGUudGFza19pbml0aWF0ZV9pZCwkc2NvcGUudGFza19leGVjdXRlX2lkLGFjdGlvbixsYW5nLCRzY29wZS5mb3JHcm91cCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tJbml0aWF0ZUluc3RhbmNlID1kYXRhLmRhdGEuZGF0YS50YXNrSW5pdGlhdGVJbnN0YW5jZVswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tFeGVjdXRlSW5zdGFuY2UgPWRhdGEuZGF0YS5kYXRhLnRhc2tFeGVjdXRlSW5zdGFuY2VbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnRhc2tfZXhlY3V0ZV9pZD09MCAmJiAgJHNjb3BlLnRhc2tFeGVjdXRlSW5zdGFuY2UhPXVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhdGUuZ28oJ2FwcC5uYXZiYXIudGFza3MuZXhlY3V0ZScse2lkOiAkc2NvcGUudGFza0RlZmluaXRpb24uaWQsdGFza19pbml0aWF0ZV9pZDowLHRhc2tfZXhlY3V0ZV9pZDokc2NvcGUudGFza0V4ZWN1dGVJbnN0YW5jZS5pZCxmcm9tU3RhdGVOYW1lOiRzdGF0ZS5jdXJyZW50Lm5hbWUsZnJvbVN0YXRlUGFyYW1zOiRzdGF0ZS5wYXJhbXMscHJldjokc2NvcGUudGFza0V4ZWN1dGVJZH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5kYXRhLm1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgICAkc2NvcGUuZ2V0VGFza0V4ZWN1dGVEYXRhKCk7XHJcbiAgICAgIFxyXG4gICAgICAgJHNjb3BlLiRvbignRXhlY3V0ZVRhc2snKyRzY29wZS50YXNrX2V4ZWN1dGVfaWQsZnVuY3Rpb24oZXZlbnQsZGF0YSl7XHJcbiAgICAgICAgICAgICAgJHNjb3BlLkV4ZWN1dGVUYXNrKGRhdGEuZm9ybSxkYXRhLm91dGNvbWVJZCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICAgJHNjb3BlLiRvbignRXhlY3V0ZVRhc2tQb3N0UHJvY2VzcycsZnVuY3Rpb24oZXZlbnQsZGF0YSl7XHJcbiAgICAgICAgICAgICAgJHNjb3BlLmdldFRhc2tFeGVjdXRlRGF0YSgpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIFxyXG4gICAgICAgICAkc2NvcGUuJG9uKCdSZWZyZXNoRGF0YScsZnVuY3Rpb24oZXZlbnQsZGF0YSl7XHJcbiAgICAgICAgICAgICAgJHNjb3BlLmdldFRhc2tFeGVjdXRlRGF0YSgpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIFxyXG4gICAgICAkc2NvcGUuRXhlY3V0ZVRhc2sgPSBmdW5jdGlvbihmb3JtLG91dGNvbWVJZCl7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIC8vJHJvb3RTY29wZS4kYnJvYWRjYXN0KCdQcm9jZXNzVGFza1dpZGdldHMnLHt9KTtcclxuICAgICAgICAgICAgIGlmIChmb3JtLiRzdWJtaXR0ZWQpICRzY29wZS5zZXRTdWJtaXR0ZWQoZm9ybSk7XHJcbiAgICAgICAgICAgICAgaWYgKGZvcm0uJHZhbGlkKSB7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgVGFza0RhdGFTZXJ2aWNlLmV4ZWN1dGVUYXNrKCRzY29wZS50YXNrX2V4ZWN1dGVfaWQsJHNjb3BlLmRhc2hib2FyZC5kYXRhLG91dGNvbWVJZCxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5kYXRhLm1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkcm9vdFNjb3BlLiRicm9hZGNhc3QoJ0V4ZWN1dGVUYXNrUG9zdFByb2Nlc3MnLGRhdGEuZGF0YS5yZXRfdmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpOyAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB9KTtcclxuICAgXHRcdFx0XHRcclxuICAgICAgICAgIH0gLy8gaWYgKGlzVmFsaWQpXHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShcIlBsZWFzZSBlbnRlciByZXF1aXJlZCBkYXRhXCIsJ3dhcm5pbmcnKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgICAgIC8vIFxyXG4gICAgIFxyXG4gICAgICRzY29wZS5zZXRTdWJtaXR0ZWQgPSBmdW5jdGlvbiAoZm9ybSkge1xyXG4gICAgICAgIGZvcm0uJHNldFN1Ym1pdHRlZCgpO1xyXG4gICAgICAgIGFuZ3VsYXIuZm9yRWFjaChmb3JtLCBmdW5jdGlvbihpdGVtKSB7XHJcbiAgICAgICAgaWYoaXRlbSAmJiBpdGVtLiQkcGFyZW50Rm9ybSA9PT0gZm9ybSAmJiBpdGVtLiRzZXRTdWJtaXR0ZWQpIHtcclxuICAgICAgICAgICAgJHNjb3BlLnNldFN1Ym1pdHRlZChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufSBcclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgfVxyXG5leHBvcnQgZnVuY3Rpb24gdGFza0V4ZWN1dGVMaXN0Q3RybCAoJHNjb3BlLCAkcm9vdFNjb3BlLFByb2Nlc3NpbmdTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsVGFza0RhdGFTZXJ2aWNlLCRzdGF0ZSwkdGltZW91dCkge1xyXG4kc2NvcGUuQ1RSTE5BTUU9J3Rhc2tFeGVjdXRlTGlzdEN0cmwnO1xyXG4gICAgXHJcbiAgICAkc2NvcGUuc3RhdGVOYW1lPSRzdGF0ZS5jdXJyZW50Lm5hbWU7XHJcbiAgICAkc2NvcGUuc3RhdGVQYXJhbXMgPSAkc3RhdGUuY3VycmVudC5wYXJhbXM7XHJcbiAgICBcclxuICAgICAkc2NvcGUuaXNfc3VwZXJ1c2VyID0gICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5pc19zdXBlcnVzZXI7XHJcbiAgIFxyXG4gICAgJHNjb3BlLmdyaWRPcHRpb25zID0ge1xyXG4gICAgZW5hYmxlR3JpZE1lbnU6IHRydWUsXHJcbiAgICAvL3Nob3dHcmlkRm9vdGVyOiB0cnVlLFxyXG5cdFx0Ly9zaG93Q29sdW1uRm9vdGVyOiB0cnVlLFxyXG4gICAgZW5hYmxlUm93U2VsZWN0aW9uOiB0cnVlLFxyXG5cdFx0bXVsdGlTZWxlY3Q6IGZhbHNlLFxyXG5cdFx0ZW5hYmxlSG9yaXpvbnRhbFNjcm9sbGJhciA6IDAsIFxyXG5cdFx0ZW5hYmxlVmVydGljYWxTY3JvbGxiYXIgOiAyLFxyXG5cdFx0Ly9lbmFibGVGaWx0ZXJpbmc6IHRydWUsXHJcblx0XHRlbmFibGVSb3dIZWFkZXJTZWxlY3Rpb246IHRydWUsXHJcblx0XHRlbmFibGVDb2x1bW5SZXNpemluZzogdHJ1ZSxcclxuICAgIHVzZUV4dGVybmFsUGFnaW5hdGlvbjogdHJ1ZSxcclxuICAgIHBhZ2luYXRpb25QYWdlU2l6ZXM6IFs1LDEwLCAyMCwgNTAsMTAwLDIwMCw1MDAsMTAwMF0sXHJcbiAgICBlbmFibGVQYWdpbmF0aW9uQ29udHJvbHM6IGZhbHNlLFxyXG4gICAgLy9wYWdpbmF0aW9uUGFnZVNpemU6IDEwLFxyXG4gICAgLy91c2VFeHRlcm5hbFNvcnRpbmcgOiB0cnVlLFxyXG4gICAgLy91c2VFeHRlcm5hbEZpbHRlcmluZzogdHJ1ZSxcclxuICAgLy8gbWluUm93c1RvU2hvdyA6IDNcclxuICAgfVxyXG5cclxuICB2YXIgcGFnaW5hdGlvbk9wdGlvbnMgPSB7XHJcbiAgICBwYWdlTnVtYmVyOiAxLFxyXG4gICAgcGFnZVNpemU6IDEwLFxyXG4gICAgc29ydDogbnVsbFxyXG4gICAgfTtcclxuICAgIFxyXG4gICAgdmFyIGNvbHVtbkRlZnNJbml0aWF0ZSA9IFtcclxuICAgICAgICAgeyBuYW1lOiAnVGFza0luaXRpYXRpb25JZC5pZCcsIGRpc3BsYXlOYW1lOiAnSUQnLCB0eXBlOiAnbnVtYmVyJywgd2lkdGg6JzUlJyxlbmFibGVIaWRpbmc6IGZhbHNlLCB2aXNpYmxlOiB0cnVlIH0sXHJcbiAgICAgICAgIHsgbmFtZTogJ1Rhc2tJbml0aWF0aW9uSWQuSW5pdGlhdG9ySWQubmFtZScsIGRpc3BsYXlOYW1lOiAnU3RhcnRlZCBieSd9LFxyXG4gICAgICAgICB7IG5hbWU6ICdUYXNrSW5pdGlhdGlvbklkLlN0YXR1cy5Db2Rlc0RldGFpbExhbmdbMF0uVmFsdWUnLCBkaXNwbGF5TmFtZTogJ1Rhc2sgc3RhdHVzJyB9LFxyXG4gICAgICAgICB7IG5hbWU6ICdUYXNrSW5pdGlhdGlvbklkLlJlc291cmNlZGVmLnJlc291cmNlZGVmbGFuZ19zZXRbMF0uTmFtZScsIGRpc3BsYXlOYW1lOiAnVGFzayBuYW1lJyB9LFxyXG4gICAgICAgICB7IG5hbWU6ICdUYXNrSW5pdGlhdGlvbklkLlJlc291cmNlZGVmLnJlc291cmNlZGVmbGFuZ19zZXRbMF0uRGVzY3JpcHRpb24nLCBkaXNwbGF5TmFtZTogJ1Rhc2sgZGVzY3JpcHRpb24nIH0sXHJcbiAgICAgICAgIHsgbmFtZTogJ1Rhc2tJbml0aWF0aW9uSWQuUmVzb3VyY2VkZWYuaWQnLCBkaXNwbGF5TmFtZTogJ1Rhc2sgZGVmIGlkJyxlbmFibGVIaWRpbmc6IGZhbHNlLHZpc2libGU6IGZhbHNlIH0sXHJcbiAgICAgICAgIHsgbmFtZTogJ1Rhc2tJbml0aWF0aW9uSWQuQ3JlYXRlZERhdGVUaW1lJywgZGlzcGxheU5hbWU6ICdEYXRlIGNyZWF0ZWQnLGVuYWJsZUhpZGluZzogZmFsc2UsdHlwZTogJ2RhdGUnLCBjZWxsRmlsdGVyOiAnZGF0ZTpcXCdkZC5NTS55eXl5IEhIOm1tOnNzOnNzc1xcJycgfSxcclxuICAgICAgICAgeyBuYW1lOiAnVGFza0luaXRpYXRpb25JZC5DcmVhdGVkQnkubmFtZScsIGRpc3BsYXlOYW1lOiAnQ3JlYXRlZCBieSd9LFxyXG4gICAgICAgICB7IG5hbWU6ICdGb3JHcm91cC5uYW1lJywgZGlzcGxheU5hbWU6ICdGb3IgZ3JvdXAnfSxcclxuICAgICAgICAgXTtcclxuICAgIFxyXG4gICB2YXIgY29sdW1uRGVmc0V4ZWN1dGUgPSBbXHJcbiAgICAgICAgIHsgbmFtZTogJ2lkJywgZGlzcGxheU5hbWU6ICdUYXNrIEV4ZWN1dGUgSUQnLCB0eXBlOiAnbnVtYmVyJywgd2lkdGg6JzEwJScsZW5hYmxlSGlkaW5nOiBmYWxzZSwgdmlzaWJsZTogdHJ1ZSB9LFxyXG4gICAgICAgICB7IG5hbWU6ICdyZXNvdXJjZWRlZi5yZXNvdXJjZWRlZmxhbmdfc2V0WzBdLk5hbWUnLCBkaXNwbGF5TmFtZTogJ1Rhc2sgbmFtZScgfSxcclxuICAgICAgICAgeyBuYW1lOiAncmVzb3VyY2VkZWYucmVzb3VyY2VkZWZsYW5nX3NldFswXS5EZXNjcmlwdGlvbicsIGRpc3BsYXlOYW1lOiAnVGFzayBkZXNjcmlwdGlvbicgfSxcclxuICAgICAgICAgeyBuYW1lOiAnYWN0dWFsT3duZXIubmFtZScsIGRpc3BsYXlOYW1lOiAnVGFzayBPd25lcid9LFxyXG4gICAgICAgICB7IG5hbWU6ICdzdGF0dXMuQ29kZXNEZXRhaWxMYW5nWzBdLlZhbHVlJywgZGlzcGxheU5hbWU6ICdUYXNrIHN0YXR1cycgfSxcclxuICAgICAgICAgeyBuYW1lOiAnVGFza091dGNvbWVDb2RlSXRlbUlkLk5hbWUnLCBkaXNwbGF5TmFtZTogJ1Rhc2sgb3V0Y29tZScgfSxcclxuICAgICAgICAgeyBuYW1lOiAncmVzb3VyY2VkZWYuaWQnLCBkaXNwbGF5TmFtZTogJ1Rhc2sgZGVmIGlkJyxlbmFibGVIaWRpbmc6IGZhbHNlLHZpc2libGU6IGZhbHNlIH0sXHJcbiAgICAgICAgIHsgbmFtZTogJ0NyZWF0ZWREYXRlVGltZScsIGRpc3BsYXlOYW1lOiAnRGF0ZSBjcmVhdGVkJyxlbmFibGVIaWRpbmc6IGZhbHNlLHR5cGU6ICdkYXRlJywgY2VsbEZpbHRlcjogJ2RhdGU6XFwnZGQuTU0ueXl5eSBISDptbTpzczpzc3NcXCcnIH0sXHJcbiAgICAgICAgIHsgbmFtZTogJ2NyZWF0ZWRCeS5uYW1lJywgZGlzcGxheU5hbWU6ICdDcmVhdGVkIGJ5J30sXHJcbiAgICAgICAgIF07ICAgXHJcbiAgIFxyXG4gICAkc2NvcGUudGFza0V4ZWN1dGVJZCA9IDA7XHJcbiAgICRzY29wZS50YXNrSW5pdGlhdGVJZCA9IDA7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgJHNjb3BlLnR5cGUgPSBcImNsYWltXCI7XHJcbiAgICBpZiAoJHN0YXRlLmN1cnJlbnQubmFtZSA9PVwiYXBwLm5hdmJhci50YXNrcy5jbGFpbVwiKVxyXG4gICAge1xyXG4gICAgICAkc2NvcGUuZ3JpZE9wdGlvbnMuY29sdW1uRGVmcyA9IGNvbHVtbkRlZnNJbml0aWF0ZTtcclxuICAgICAgXHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICB7XHJcbiAgICAgIFxyXG4gICAgICAkc2NvcGUuZ3JpZE9wdGlvbnMuY29sdW1uRGVmcyA9IGNvbHVtbkRlZnNFeGVjdXRlO1xyXG4gICAgICAkc2NvcGUudHlwZSA9IFwiZXhlY3V0ZVwiO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAgJHNjb3BlLmdyaWRPcHRpb25zLm9uUmVnaXN0ZXJBcGkgPSBmdW5jdGlvbiAoZ3JpZEFwaSkge1xyXG4gICAgICAgICRzY29wZS5ncmlkQXBpID0gZ3JpZEFwaTtcclxuICAgICAgICBncmlkQXBpLnNlbGVjdGlvbi5vbi5yb3dTZWxlY3Rpb25DaGFuZ2VkKCRzY29wZSxmdW5jdGlvbihyb3cpe1xyXG4gICAgICAgICAkc2NvcGUudGFza1NlbGVjdGVkPXJvdy5pc1NlbGVjdGVkXHJcbiAgICAgICBcclxuICAgICAgICAgaWYocm93LmlzU2VsZWN0ZWQpe1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGlmICgkc2NvcGUudHlwZSA9PSBcImNsYWltXCIpXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkVGFzaz1yb3cuZW50aXR5LlRhc2tJbml0aWF0aW9uSWQuaWRcclxuICAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRUYXNrRGVmSWQ9cm93LmVudGl0eS5UYXNrSW5pdGlhdGlvbklkLlJlc291cmNlZGVmLmlkXHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkVGFza09iamVjdCA9IHJvdy5lbnRpdHkuVGFza0luaXRpYXRpb25JZDtcclxuICAgICAgICAgICAgICAgICAkc2NvcGUudGFza0luaXRpYXRlSWQgPSAkc2NvcGUuc2VsZWN0ZWRUYXNrO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZFRhc2s9cm93LmVudGl0eS5pZFxyXG4gICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZFRhc2tEZWZJZD1yb3cuZW50aXR5LnJlc291cmNlZGVmLmlkXHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLnNlbGVjdGVkVGFza09iamVjdCA9IHJvdy5lbnRpdHk7XHJcbiAgICAgICAgICAgICAgICAgJHNjb3BlLnRhc2tFeGVjdXRlSWQgPSAkc2NvcGUuc2VsZWN0ZWRUYXNrO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy9leHRlcm5hbCBwYWdpbmF0aW9uXHJcbiAgICAgIGdyaWRBcGkucGFnaW5hdGlvbi5vbi5wYWdpbmF0aW9uQ2hhbmdlZCgkc2NvcGUsIGZ1bmN0aW9uIChuZXdQYWdlLCBwYWdlU2l6ZSkge1xyXG4gICAgICAgICAgcGFnaW5hdGlvbk9wdGlvbnMucGFnZU51bWJlciA9IG5ld1BhZ2U7XHJcbiAgICAgICAgICBwYWdpbmF0aW9uT3B0aW9ucy5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xyXG4gICAgICAgICAgJHNjb3BlLkV4ZWN1dGVBbGxMaXN0UGFnaW5hdGVkKCRzY29wZS50eXBlLDEsZmFsc2UsXCJcIiwkc2NvcGUubmV4dFBhZ2UsJHNjb3BlLnByZXZpb3VzUGFnZSxuZXdQYWdlLHBhZ2VTaXplKTtcclxuICAgICAgfSk7XHJcbiAgICAgIFxyXG4gICAgICAgZ3JpZEFwaS5jb3JlLm9uLmZpbHRlckNoYW5nZWQoJHNjb3BlLCBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAvLyBTZXQgc29tZSBzY29wZSB2YXJpYWJsZSB0aGF0IGJvdGggbGlzdHMgdXNlIGZvciBmaWx0ZXJpbmdcclxuICAgICAgICAgIC8vICRzY29wZS5zb21lRmlsdGVyVmFsdWVCb3RoTGlzdHNMb29rQXQgPSAuLi4uLi5cclxuICAgICAgIH0pO1xyXG5cclxuICAgICAgXHJcbiAgICAgfVxyXG4gICAgICBcclxuICAgICAgXHJcbiBcclxuICAgICRzY29wZS5DbGFpbVNlbGVjdGVkID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgIHZhciBmb3JHcm91cCA9ICRzY29wZS5zZWxlY3RlZFRhc2tPYmplY3QuZm9yZ3JvdXBbMF0uRm9yR3JvdXA7XHJcbiAgICAgICAgICAgICBUYXNrRGF0YVNlcnZpY2UuRXhlY3V0ZVRhc2tBY3Rpb24oJHNjb3BlLnNlbGVjdGVkVGFzaywwLCdjbGFpbScsbGFuZyxmb3JHcm91cCkudGhlbihmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vcmVmcmVzaCBsaXN0ZSB0YXNrLW92YSB6YSBjbGFpbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuRXhlY3V0ZUFsbExpc3QoJHNjb3BlLnR5cGUsMSx0cnVlLGRhdGEuZGF0YS5tc2cpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICB9IFxyXG4gICAgXHJcbiAgICAkc2NvcGUuRXhlY3V0ZUFsbExpc3QgPSBmdW5jdGlvbih0eXBlLGZpbHRlcixhZnRlckNsYWltLG1zZ0FmdGVyKXtcclxuICAgICAgXHJcbiAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICBcclxuICAgICAgVGFza0RhdGFTZXJ2aWNlLmdldEluaXRpYXRlZFRhc2tzKHR5cGUsZmlsdGVyKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5ncmlkT3B0aW9ucy5kYXRhID0gZGF0YS5kYXRhLnJlc3VsdHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhZnRlckNsYWltKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKG1zZ0FmdGVyLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAgICAgJHNjb3BlLkV4ZWN1dGVBbGxMaXN0UGFnaW5hdGVkID0gZnVuY3Rpb24odHlwZSxmaWx0ZXIsYWZ0ZXJDbGFpbSxtc2dBZnRlcix1cmxOZXh0LHVybFByZXYsbmV3UGFnZSxwYWdlU2l6ZSl7XHJcbiAgICAgIFxyXG4gICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgXHJcbiAgICAgIGlmIChNYXRoLmNlaWwoJHNjb3BlLnRvdGFsQ291bnQvcGFnZVNpemUpPG5ld1BhZ2UpXHJcbiAgICAgIHtcclxuICAgICAgICBuZXdQYWdlID0gTWF0aC5jZWlsKCRzY29wZS50b3RhbENvdW50L3BhZ2VTaXplKTtcclxuICAgICAgfVxyXG4gICAgICBUYXNrRGF0YVNlcnZpY2UuZ2V0SW5pdGlhdGVkVGFza3NQYWdpbmF0ZWQodHlwZSxmaWx0ZXIsdXJsTmV4dCx1cmxQcmV2LG5ld1BhZ2UscGFnZVNpemUpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdyaWRPcHRpb25zLmRhdGEgPSBkYXRhLmRhdGEucmVzdWx0cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5uZXh0UGFnZSA9IGRhdGEuZGF0YS5uZXh0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnByZXZpb3VzUGFnZSA9IGRhdGEuZGF0YS5wcmV2aW91cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS50b3RhbENvdW50PWRhdGEuZGF0YS5jb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5jdXJyZW50UGFnZT1uZXdQYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm51bVBhZ2VzID0gTWF0aC5jZWlsKCRzY29wZS50b3RhbENvdW50L3BhZ2VTaXplKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdyaWRPcHRpb25zLnRvdGFsSXRlbXM9JHNjb3BlLnRvdGFsQ291bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhZnRlckNsYWltKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKG1zZ0FmdGVyLCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZXJyb3IubXNnLCdlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgICAkc2NvcGUucGFnZUNoYW5nZWQgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgICRzY29wZS5FeGVjdXRlQWxsTGlzdFBhZ2luYXRlZCgkc2NvcGUudHlwZSwxLGZhbHNlLFwiXCIsJHNjb3BlLm5leHRQYWdlLCRzY29wZS5wcmV2aW91c1BhZ2UsJHNjb3BlLmN1cnJlbnRQYWdlLCRzY29wZS5wYWdlU2l6ZSk7XHJcbiAgICAgICAgIH0gICAgICAgIFxyXG4gICAgLy9uYXB1bmkgZ3JpZCBzIGRlZmluaWNpamFtYSByZXN1cnNhXHJcbiAgICAgLy8kc2NvcGUuY3VycmVudFBhZ2UgPSAgcGFnaW5hdGlvbk9wdGlvbnMucGFnZU51bWJlcjtcclxuICAgICAvLyRzY29wZS5wYWdlU2l6ZSA9IHBhZ2luYXRpb25PcHRpb25zLnBhZ2VTaXplO1xyXG4gICAgICBcclxuICAgICAkc2NvcGUuRXhlY3V0ZUFsbExpc3RQYWdpbmF0ZWQoJHNjb3BlLnR5cGUsMSxmYWxzZSxcIlwiLFwiXCIsXCJcIixwYWdpbmF0aW9uT3B0aW9ucy5wYWdlTnVtYmVyLHBhZ2luYXRpb25PcHRpb25zLnBhZ2VTaXplKTtcclxuICAgICBcclxuICAgICAkc2NvcGUuRXhlY3V0ZUxpc3RQcmVQYWdpbmF0ZWQgPSBmdW5jdGlvbihsaXN0RmlsdGVyKXtcclxuICAgICAgICAgICAgJHNjb3BlLkV4ZWN1dGVBbGxMaXN0UGFnaW5hdGVkKCRzY29wZS50eXBlLGxpc3RGaWx0ZXIsZmFsc2UsXCJcIixcIlwiLFwiXCIscGFnaW5hdGlvbk9wdGlvbnMucGFnZU51bWJlcixwYWdpbmF0aW9uT3B0aW9ucy5wYWdlU2l6ZSk7XHJcbiAgICAgICAgIH0gICBcclxuICAgIFxyXG4gICAgICBcclxuICAgIH1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB0YXNrT3V0Y29tZURlZmluaXRpb25DdHJsICgkc2NvcGUsICRyb290U2NvcGUsdWlHcmlkQ29uc3RhbnRzLFByb2Nlc3NpbmdTZXJ2aWNlLE1lc3NhZ2luZ1NlcnZpY2UsJHN0YXRlUGFyYW1zLFRhc2tEYXRhU2VydmljZSwkY29va2llcywkc3RhdGUpIHtcclxuICAgIFxyXG4gICAgICAkc2NvcGUuQ1RSTE5BTUU9J3Rhc2tPdXRjb21lRGVmaW5pdGlvbkN0cmwnO1xyXG4gICAgICBcclxuICAgICAgJHNjb3BlLmZyb21TdGF0ZU5hbWU9JHN0YXRlUGFyYW1zLmZyb21TdGF0ZU5hbWU7XHJcbiAgICAgICRzY29wZS5mcm9tU3RhdGVQYXJhbXM9JHN0YXRlUGFyYW1zLmZyb21TdGF0ZVBhcmFtcztcclxuICAgICAgJHNjb3BlLmNvb2tpZUZyb21TdGF0ZU5hbWU9JGNvb2tpZXMuZ2V0T2JqZWN0KCdvdXRjb21lRGVmaW5pdGlvbkZyb21TdGF0ZU5hbWUnKTtcclxuICAgICAgJHNjb3BlLmNvb2tpZUZyb21TdGF0ZVBhcmFtcz0kY29va2llcy5nZXRPYmplY3QoJ291dGNvbWVEZWZpbml0aW9uRnJvbVN0YXRlUGFyYW1zJyk7XHJcbiAgICAgICRzY29wZS5ub0JhY2tidXR0b24gPSBmYWxzZTtcclxuICAgICAgJHNjb3BlLmJhY2tCdG5Gcm9tQ29va2llPWZhbHNlO1xyXG4gICAgICBcclxuICAgICAgaWYgKCRzY29wZS5mcm9tU3RhdGVOYW1lPT11bmRlZmluZWQgfHwgJHNjb3BlLmZyb21TdGF0ZU5hbWU9PVwiXCIpXHJcbiAgICAgIHtcclxuICAgICAgICAgIGlmICgkc2NvcGUuY29va2llRnJvbVN0YXRlTmFtZT09dW5kZWZpbmVkIHx8ICRzY29wZS5jb29raWVGcm9tU3RhdGVOYW1lPT1cIlwiKVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAkc2NvcGUubm9CYWNrQnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICAgIH1lbHNlXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICRzY29wZS5mcm9tU3RhdGVOYW1lID0gICRzY29wZS5jb29raWVGcm9tU3RhdGVOYW1lO1xyXG4gICAgICAgICAgICAkc2NvcGUuYmFja0J0bkZyb21Db29raWUgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgICRjb29raWVzLnB1dE9iamVjdCgnb3V0Y29tZURlZmluaXRpb25Gcm9tU3RhdGVOYW1lJywkc2NvcGUuZnJvbVN0YXRlTmFtZSk7XHJcbiAgICAgICAgXHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIGlmICgkc2NvcGUuZnJvbVN0YXRlUGFyYW1zPT11bmRlZmluZWQpXHJcbiAgICAgIHtcclxuICAgICAgICAgIGlmICgkc2NvcGUuY29va2llRnJvbVN0YXRlUGFyYW1zIT11bmRlZmluZWQpXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgaWYgKCRzY29wZS5iYWNrQnRuRnJvbUNvb2tpZSlcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZnJvbVN0YXRlUGFyYW1zID0gICRzY29wZS5jb29raWVGcm9tU3RhdGVQYXJhbXM7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgIH1lbHNlIGlmICgkc2NvcGUuY29va2llRnJvbVN0YXRlUGFyYW1zPT11bmRlZmluZWQpXHJcbiAgICAgIHtcclxuICAgICAgICAkY29va2llcy5wdXRPYmplY3QoJ291dGNvbWVEZWZpbml0aW9uRnJvbVN0YXRlUGFyYW1zJywkc2NvcGUuZnJvbVN0YXRlUGFyYW1zKTtcclxuICAgICAgICBcclxuICAgICAgfWVsc2VcclxuICAgICAge1xyXG4gICAgICAgICAgaWYgKCRzY29wZS5iYWNrQnRuRnJvbUNvb2tpZSlcclxuICAgICAgICAgIHtcclxuICAgICAgICBcclxuICAgICAgICAgICAgJHNjb3BlLmZyb21TdGF0ZVBhcmFtcyA9ICAkc2NvcGUuY29va2llRnJvbVN0YXRlUGFyYW1zO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgfWVsc2VcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAkY29va2llcy5wdXRPYmplY3QoJ291dGNvbWVEZWZpbml0aW9uRnJvbVN0YXRlUGFyYW1zJywkc2NvcGUuZnJvbVN0YXRlUGFyYW1zKTsgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIFxyXG4gICAgICAkc2NvcGUuZ29CYWNrID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhdGUuZ28oJHNjb3BlLmZyb21TdGF0ZU5hbWUsJHNjb3BlLmZyb21TdGF0ZVBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgfVxyXG4gICBcclxuICAgICRzY29wZS5PdXRjb21lSGVhZCA9IHtBY3RpdmU6dHJ1ZSxpZDpudWxsfTtcclxuICAgICRzY29wZS5vdXRjb21lRGVmaW5pdGlvbklkID0gJHN0YXRlUGFyYW1zLmlkO1xyXG4gICAgXHJcbiAgICBcclxuICAgICAkc2NvcGUuZ2V0T3V0Y29tZURlZmluaXRpb24gPSBmdW5jdGlvbihvdXRjb21lRGVmaW5pdGlvbklkLGxhbmcpe1xyXG4gICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICBUYXNrRGF0YVNlcnZpY2UuR2V0T3V0Y29tZURlZmluaXRpb24ob3V0Y29tZURlZmluaXRpb25JZCxsYW5nKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgIFxyXG4gICAgICAgICAgICAgICAvL01lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShkYXRhLm1zZywnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgJHNjb3BlLk91dGNvbWVIZWFkPWRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgfSxmdW5jdGlvbihlcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgIFxyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgJHNjb3BlLnNhdmVPdXRjb21lRGVmaW5pdGlvbiA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICB2YXIgbGFuZz0kcm9vdFNjb3BlLmdsb2JhbHMuY3VycmVudFVzZXIubGFuZztcclxuICAgICAgICAgICRzY29wZS5PdXRjb21lSGVhZC5MYW5nID0gbGFuZztcclxuICAgICAgICAgIC8vaWYgKCRzY29wZS5PdXRjb21lSGVhZC5pZD09dW5kZWZpbmVkKSAkc2NvcGUuT3V0Y29tZUhlYWQuaWQ9MDtcclxuICAgICAgICAgIFRhc2tEYXRhU2VydmljZS5TYXZlT3V0Y29tZURlZmluaXRpb24oJHNjb3BlLk91dGNvbWVIZWFkKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgIFxyXG4gICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5kYXRhLm1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAvLyRzY29wZS5PdXRjb21lSGVhZD1kYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgIFxyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgaWYgKCRzY29wZS5vdXRjb21lRGVmaW5pdGlvbklkIT1cIlwiICYmICRzY29wZS5vdXRjb21lRGVmaW5pdGlvbklkIT11bmRlZmluZWQpXHJcbiAgICB7XHJcbiAgICAgIHZhciBsYW5nPSRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50VXNlci5sYW5nO1xyXG4gICAgICAkc2NvcGUuZ2V0T3V0Y29tZURlZmluaXRpb24oJHNjb3BlLm91dGNvbWVEZWZpbml0aW9uSWQsbGFuZyk7XHJcbiAgICAgIFxyXG4gICAgfVxyXG4gICAgICBcclxuICAgIFxyXG59XHJcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB2cGFnZUN0cmwoJHNjb3BlLCAkcm9vdFNjb3BlLCAkbG9jYXRpb24sS2F0YWx5b1N0YXRlTWFuYWdlcixSZXNvdXJjZXNEYXRhU2VydmljZSxVdGlsaXR5U2VydmljZSxNZXNzYWdpbmdTZXJ2aWNlLEF1dGhlbnRpY2F0aW9uU2VydmljZSwkdGltZW91dCwkc3RhdGVQYXJhbXMsR3JpZHN0ZXJTZXJ2aWNlLCRlbGVtZW50LGRyYWd1bGFyU2VydmljZSxNZW51U2VydmljZSwkc3RhdGUpIHtcclxuICAgIFxyXG4gICAgJHNjb3BlLmdyaWRzdGVyVHlwZSA9XCJwYWdlXCI7XHJcbiAgICAkc2NvcGUuQ1RSTE5BTUU9J3ZwYWdlQ3RybCc7XHJcblxyXG4gICAgdmFyIHBhZ2VfaWQ9JHN0YXRlUGFyYW1zLnBhZ2VpZDtcclxuICAgIGxldCBvcmdfaWQ9JHN0YXRlUGFyYW1zLm9yZ2lkO1xyXG5cdFxyXG4gICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAkc2NvcGUucmVzb3VyY2VJZCA9IHBhZ2VfaWQ7XHJcbiAgICAkc2NvcGUub3JnSWQgPSBvcmdfaWQ7XHJcblx0JHNjb3BlLnBhZ2VfdmVyc2lvbiA9ICRzdGF0ZVBhcmFtcy52ZXJzaW9uO1xyXG5cdFxyXG4gICAgJHNjb3BlLmxvY2FsVmFycz17cGFnZV9zdGF0ZTp7fX07XHJcblx0XHJcbiAgICBpZiAoJHN0YXRlUGFyYW1zLnBhcmFtZXRlcnMhPXVuZGVmaW5lZCAmJiAkc3RhdGVQYXJhbXMucGFyYW1ldGVycyE9XCJcIikgICAgJHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlID0ge307XHJcbiAgICAgICAgIFxyXG4gICAgJHNjb3BlLmZvcm1SZW5kZXJpbmdDb21wbGV0ZWQ9ZmFsc2U7XHJcbiAgICAkc2NvcGUua3NtID0gS2F0YWx5b1N0YXRlTWFuYWdlcjtcclxuICAgICRzY29wZS5nc3J2YyA9IEdyaWRzdGVyU2VydmljZVxyXG4gICAgJHNjb3BlLm1lbnVfc2VydmljZSA9IE1lbnVTZXJ2aWNlXHJcblxyXG4gICAgJHNjb3BlLmdzcnZjLnNldEZvcm1WaWV3VHlwZSgyKVxyXG4gICAgJHNjb3BlLm1lbnVfc2VydmljZS5yZXNldFB1YmxpY1BhZ2UoKVxyXG5cclxuICAgIGxldCBwYWdlVmFsdWVTdGF0ZVxyXG4gICAgbGV0IHBhZ2VWYWx1ZVN0YXRlTmFtZSBcclxuICAgIGxldCBwcm9jZXNzV2lkZ2V0c1N0YXRlTmFtZSxwcm9jZXNzV2lkZ2V0c1N0YXRlXHJcbiAgICBsZXQgbWVudVZpc2liaWxpdHk9ICRzY29wZS5rc20uYWRkU3ViamVjdChcIm1lbnVWaXNpYmlsaXR5XCIsJHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlPy5QYXJhbWV0ZXJzKTtcclxuICAgIGxldCBtZW51VmlzaWJpbGl0eU5hbWUgPSBtZW51VmlzaWJpbGl0eS5zdWJqZWN0Lm5hbWU7XHJcblxyXG4gICAgbGV0IHBhZ2VfdmFsdWVfY2hhbmdlZCA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICB7XHJcbiAgICAgICAgcGFnZVZhbHVlU3RhdGUuc3ViamVjdC5zZXRTdGF0ZUNoYW5nZXMgPSBkYXRhO1xyXG4gICAgICAgIHBhZ2VWYWx1ZVN0YXRlLnN1YmplY3Qubm90aWZ5T2JzZXJ2ZXJzKFwicGFnZVZhbHVlQ2hhbmdlZFwiKTtcclxuICAgIH07XHJcbiAgICBcclxuICAgIGxldCBtZW51X3Zpc2liaWxpdHlfY2hhbmdlZCA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICB7XHJcbiAgICAgICAgIG1lbnVWaXNpYmlsaXR5LnN1YmplY3Quc2V0U3RhdGVDaGFuZ2VzID0gZGF0YTtcclxuICAgICAgICAgbWVudVZpc2liaWxpdHkuc3ViamVjdC5ub3RpZnlPYnNlcnZlcnMoXCJtZW51VmlzaWJpbGl0eUNoYW5nZWRcIik7XHJcbiAgICB9O1xyXG5cclxuICAgIGxldCBtZW51X3Zpc2liaWxpdHlfYWN0aW9uID0gJHNjb3BlLmtzbS5hZGRBY3Rpb24obWVudVZpc2liaWxpdHlOYW1lLG1lbnVWaXNpYmlsaXR5TmFtZStcIkNoYW5nZWRcIixtZW51X3Zpc2liaWxpdHlfY2hhbmdlZCk7XHJcbiAgICAgICAgXHJcblx0XHRcclxuICAgICRzY29wZS5zZXRQYWdlU3RhdGUgPSBmdW5jdGlvbiAoKSBcclxuXHR7IFxyXG4gICAgICAgICAgICBsZXQgYWN0aW9uX3BhZ2VfdmFsdWVfY2hhbmdlZFxyXG5cclxuICAgICAgICAgICAgaWYgKCRzdGF0ZVBhcmFtcy5wYXJhbWV0ZXJzLnBhZ2Vfc3RhdGVfaWQhPXVuZGVmaW5lZCAmJiAkc3RhdGVQYXJhbXMucGFyYW1ldGVycy5wYWdlX3N0YXRlX2lkLnRyaW0oKSE9XCJcIiAmJiAkc3RhdGVQYXJhbXMucGFyYW1ldGVycy51c2Vfc3RhdGUpIHtcclxuICAgICAgICAgICAgICAgIC8vbG9hZCBzdGF0ZSBkaXJlY3RseSBmcm9tIHBhcmFtc1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLnBhZ2Vfc3RhdGVfaWQgPSAkc3RhdGVQYXJhbXMucGFyYW1ldGVycy5wYWdlX3N0YXRlX2lkO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLnByZXZfcGFnZV9zdGF0ZV9pZCA9ICRzdGF0ZVBhcmFtcy5wYXJhbWV0ZXJzLnByZXZfcGFnZV9zdGF0ZV9pZFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLnByZXZpb3VzVGFzayA9ICRzdGF0ZVBhcmFtcy5wYXJhbWV0ZXJzLnByZXZfdGFza1xyXG4gICAgICAgICAgICAgICAgcGFnZVZhbHVlU3RhdGUgID0gJHNjb3BlLmtzbS5hZGRTdWJqZWN0KCRzdGF0ZVBhcmFtcy5wYXJhbWV0ZXJzLnBhZ2Vfc3RhdGVfaWQsJHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlKTtcclxuICAgICAgICAgICAgICAgIHBhZ2VWYWx1ZVN0YXRlTmFtZSA9IHBhZ2VWYWx1ZVN0YXRlLnN1YmplY3QubmFtZVxyXG5cdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgaWYgKHBhZ2VWYWx1ZVN0YXRlLnN0YXR1cz09PSdvaycpIFxyXG5cdFx0XHRcdFx0YWN0aW9uX3BhZ2VfdmFsdWVfY2hhbmdlZCA9ICRzY29wZS5rc20uYWRkQWN0aW9uKHBhZ2VWYWx1ZVN0YXRlTmFtZSxcInBhZ2VWYWx1ZUNoYW5nZWRcIixwYWdlX3ZhbHVlX2NoYW5nZWQpO1xyXG5cclxuICAgICAgICAgICAgfSBlbHNlIGlmICgkc3RhdGVQYXJhbXMucGFyYW1ldGVycy51c2Vfc3RhdGUgfHwgJHN0YXRlUGFyYW1zLnBhcmFtZXRlcnM/LnVzZV9zdGF0ZT09PXVuZGVmaW5lZCAmJiAkc3RhdGVQYXJhbXMucGFyYW1ldGVycy5wYWdlX3N0YXRlX2lkIT09dW5kZWZpbmVkKVxyXG4gICAgICAgICAgICB7ICAgXHJcbiAgICAgICAgICAgICAgICBwYWdlVmFsdWVTdGF0ZSAgPSAkc2NvcGUua3NtLmFkZFN1YmplY3QoJHN0YXRlUGFyYW1zLnBhcmFtZXRlcnMucGFnZV9zdGF0ZV9pZCxudWxsKTtcclxuICAgICAgICAgICAgICAgIHBhZ2VWYWx1ZVN0YXRlTmFtZSA9IHBhZ2VWYWx1ZVN0YXRlLnN1YmplY3QubmFtZVxyXG4gICAgICAgICAgICAgICAgaWYgKHBhZ2VWYWx1ZVN0YXRlLnN0YXR1cz09PSdvaycpIFxyXG5cdFx0XHRcdFx0YWN0aW9uX3BhZ2VfdmFsdWVfY2hhbmdlZCA9ICRzY29wZS5rc20uYWRkQWN0aW9uKHBhZ2VWYWx1ZVN0YXRlTmFtZSxcInBhZ2VWYWx1ZUNoYW5nZWRcIixwYWdlX3ZhbHVlX2NoYW5nZWQpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAocGFnZVZhbHVlU3RhdGUuc3ViamVjdC5jdXJyZW50U3RhdGVJbmRleD49MCl7IC8vbG9hZCBsYXN0IHN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlID0gcGFnZVZhbHVlU3RhdGUuc3ViamVjdC5nZXRTdGF0ZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9jcmVhdGUgbmV3IHN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgLy9nZW5lcmF0ZSBndWlkXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHV1aWQgPSBVdGlsaXR5U2VydmljZS51dWlkdjQoKTtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUucGFnZV9zdGF0ZV9pZCA9ICRzdGF0ZS5jdXJyZW50Lm5hbWUrXCItXCIrcGFnZV9pZCtcIi1cIit1dWlkO1xyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5wcmV2X3BhZ2Vfc3RhdGVfaWQgPSAkc3RhdGVQYXJhbXMucGFyYW1ldGVycy5wcmV2X3BhZ2Vfc3RhdGVfaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLnByZXZpb3VzVGFzayA9ICRzdGF0ZVBhcmFtcy5wYXJhbWV0ZXJzLnByZXZfdGFza1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VWYWx1ZVN0YXRlICA9ICRzY29wZS5rc20uYWRkU3ViamVjdCgkc2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUucGFnZV9zdGF0ZV9pZCxudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlVmFsdWVTdGF0ZU5hbWUgPSBwYWdlVmFsdWVTdGF0ZS5zdWJqZWN0Lm5hbWVcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhZ2VWYWx1ZVN0YXRlLnN0YXR1cz09PSdvaycpXHJcblx0XHRcdFx0XHRcdGFjdGlvbl9wYWdlX3ZhbHVlX2NoYW5nZWQgPSAkc2NvcGUua3NtLmFkZEFjdGlvbihwYWdlVmFsdWVTdGF0ZU5hbWUsXCJwYWdlVmFsdWVDaGFuZ2VkXCIscGFnZV92YWx1ZV9jaGFuZ2VkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbihwYWdlVmFsdWVTdGF0ZU5hbWUsXCJwYWdlVmFsdWVDaGFuZ2VkXCIsICRzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAvL2NyZWF0ZSBuZXcgc3RhdGVcclxuICAgICAgICAgICAgICAgIC8vZ2VuZXJhdGUgZ3VpZFxyXG4gICAgICAgICAgICAgICAgbGV0IHV1aWQgPSBVdGlsaXR5U2VydmljZS51dWlkdjQoKTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5wYWdlX3N0YXRlX2lkID0gJHN0YXRlLmN1cnJlbnQubmFtZStcIi1cIitwYWdlX2lkK1wiLVwiK3V1aWQ7XHJcbiAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUucHJldl9wYWdlX3N0YXRlX2lkID0gJHN0YXRlUGFyYW1zLnBhcmFtZXRlcnMucHJldl9wYWdlX3N0YXRlX2lkO1xyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLnByZXZpb3VzVGFzayA9ICRzdGF0ZVBhcmFtcy5wYXJhbWV0ZXJzLnByZXZfdGFza1xyXG4gICAgICAgICAgICAgICAgcGFnZVZhbHVlU3RhdGUgID0gJHNjb3BlLmtzbS5hZGRTdWJqZWN0KCRzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5wYWdlX3N0YXRlX2lkLG51bGwpXHJcbiAgICAgICAgICAgICAgICBwYWdlVmFsdWVTdGF0ZU5hbWUgPSBwYWdlVmFsdWVTdGF0ZS5zdWJqZWN0Lm5hbWVcclxuICAgICAgICAgICAgICAgIGlmIChwYWdlVmFsdWVTdGF0ZS5zdGF0dXM9PT0nb2snKSBcclxuXHRcdFx0XHRcdGFjdGlvbl9wYWdlX3ZhbHVlX2NoYW5nZWQgPSAkc2NvcGUua3NtLmFkZEFjdGlvbihwYWdlVmFsdWVTdGF0ZU5hbWUsXCJwYWdlVmFsdWVDaGFuZ2VkXCIscGFnZV92YWx1ZV9jaGFuZ2VkKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKHBhZ2VWYWx1ZVN0YXRlTmFtZSxcInBhZ2VWYWx1ZUNoYW5nZWRcIiwgJHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWQ9JHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLnBhZ2Vfc3RhdGVfaWRcclxuICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wcmV2X3BhZ2Vfc3RhdGVfaWQ9JHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLnByZXZfcGFnZV9zdGF0ZV9pZFxyXG4gICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnBhZ2VJZD0gJHNjb3BlLnJlc291cmNlSWRcclxuICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wYWdlX2luc3RhbmNlX2lkPSAkc2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUucGFnZV9pbnN0YW5jZV9pZFxyXG4gICAgICAgICAgICAkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLnByZXZfcGFnZV9pZD0kc2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUucHJldmlvdXNUYXNrPy5wYWdlSWRcclxuICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5wcmV2X3BhZ2VfaW5zdGFuY2VfaWQ9JHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLnByZXZpb3VzVGFzaz8ucGFnZV9pbnN0YW5jZV9pZFxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAkc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24obWVudVZpc2liaWxpdHlOYW1lLG1lbnVWaXNpYmlsaXR5TmFtZStcIkNoYW5nZWRcIiwgJHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLlBhcmFtZXRlcnMpO1xyXG4gICAgICAgICAgICAkc2NvcGUuc2V0UHJvY2Vzc1dpZGdldEV2ZW50KClcclxuICAgIH0vL3NldFBhZ2VTdGF0ZUZOXHJcblxyXG5cclxuICAgIGxldCB3aWRnZXRzX3Byb2Nlc3NlZCA9IGZ1bmN0aW9uKGRhdGEpXHJcbiAgICB7XHJcbiAgICAgICAgICAgICAgICBwcm9jZXNzV2lkZ2V0c1N0YXRlLnN1YmplY3Quc2V0U3RhdGVDaGFuZ2VzID0gZGF0YTtcclxuICAgICAgICAgICAgICAgIHByb2Nlc3NXaWRnZXRzU3RhdGUuc3ViamVjdC5ub3RpZnlPYnNlcnZlcnMoXCJ3aWRnZXRzX3Byb2Nlc3NlZFwiKTtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICB9XHJcbiAgICAgICAgICAgICBcclxuXHJcbiAgICAkc2NvcGUuZ2V0UmVzb3VyY2VGb3JtID0gZnVuY3Rpb24gKCkgXHJcblx0eyAgICAgXHJcbiAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VGb3JtKCRzY29wZS5yZXNvdXJjZUlkLCdpJyxsYW5nKS50aGVuKFxyXG5cdFx0XHRcdGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhLndpZGdldHMubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhc2hib2FyZCA9IHt3aWRnZXRzOntsYXlvdXQ6ZGF0YS5kYXRhLndpZGdldHN9LGRhdGE6e319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQkc2NvcGUuZGFzaGJvYXJkPXt3aWRnZXRzIDoge2xheW91dDpHcmlkc3RlclNlcnZpY2UuZ2V0RW1wdHlUYXNrRm9ybSgpfSxkYXRhOnt9fTsgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblx0XHRcdFx0XHRcdFx0XHQkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uPSBkYXRhLmRhdGEucmVzb3VyY2VEZWZpbml0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcyA9IHtmb3JtVmlld1R5cGU6Mn1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdzcnZjLnNldEZvcm1WaWV3VHlwZSgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uID0gZmFsc2VcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnNldFBhZ2VTdGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlBhcmFtZXRlcnMuc2V0QmdDb2xvcikgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHNjb3BlLmdzcnZjLnNldEJvZHlCZ0NvbG9yKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUGFyYW1ldGVycy5iZ0NvbG9yKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgJHNjb3BlLmdzcnZjLnJlc2V0Qm9keUJnQ29sb3IoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5wYWdlTG9hZGVkPXRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5QYXJhbWV0ZXJzTGFuZz09PXVuZGVmaW5lZCkgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5QYXJhbWV0ZXJzTGFuZz17SW52YWxpZEZvcm1NZXNzYWdlOidQbGVhc2UgY29ycmVjdCBpbnZhbGlkIGVudHJpZXMnfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUGFyYW1ldGVyc0xhbmcuSW52YWxpZEZvcm1NZXNzYWdlPT09dW5kZWZpbmVkKSBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlBhcmFtZXRlcnNMYW5nLkludmFsaWRGb3JtTWVzc2FnZSA9IFwiUGxlYXNlIGNvcnJlY3QgaW52YWxpZCBlbnRyaWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUucGFnZUxvYWRlZD10cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgfTtcclxuXHQgIFxyXG4gICAgJHNjb3BlLmdldFJlc291cmNlRGVmaW5pdGlvbiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2UuZ2V0UmVzb3VyY2VEZWZBbGwoJHNjb3BlLnJlc291cmNlSWQpLnRoZW4oXHJcblx0XHRcdFx0XHRmdW5jdGlvbihkYXRhKSB7ICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnM9PW51bGwpIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnMgPSB7bmF2YmFyOnRydWUsc2lkZU1lbnU6dHJ1ZSxwYWdlR3JpZEl0ZW1zOlt7aWQ6MX1dLGdyaWQ6e05vT2ZSb3dzOm51bGwsTm9PZkNvbHVtbnM6bnVsbCxSb3dHYXA6bnVsbCxDb2x1bW5HYXA6bnVsbH19ICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0XHRcdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUgPSAkc2NvcGUucmVzb3VyY2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5wYWdlX2luc3RhbmNlX2lkID0gJHNjb3BlLnBhZ2VfaW5zdGFuY2VfaWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmxvY2FsVmFycy5zaWRlTWVudXMgPSAkc2NvcGUucmVzb3VyY2UuUmVzb3VyY2VFeHRlbmRlZD8ucGFnZV9tZW51XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5zaWRlTWVudXMgPT09IHVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycy5zaWRlTWVudXMgPSBbXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5zaWRlTWVudXMubGVuZ3RoPjApICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLlBhcmFtZXRlcnM9PXVuZGVmaW5lZClcdCAkc2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUuUGFyYW1ldGVycz17fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5QYXJhbWV0ZXJzLnNpZGVNZW51ID0gdHJ1ZSAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmdldFJlc291cmNlRm9ybSgpXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICBcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcblxyXG5cclxuICAgICAgICAkc2NvcGUuc2V0UHJvY2Vzc1dpZGdldEV2ZW50PWZ1bmN0aW9uKClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgICRzY29wZS4kb24oJ1Byb2Nlc3NXaWRnZXRzJyskc2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUucGFnZV9zdGF0ZV9pZCwgIFxyXG5cdFx0XHRcdGZ1bmN0aW9uKGV2ZW50LGRhdGEpeyAgICAgIFxyXG5cdFx0XHRcdFx0bGV0IGZvcm0gPSAkc2NvcGVbJ2Zvcm0nKyRzY29wZS5yZXNvdXJjZUlkXVxyXG5cdFx0XHRcdFx0Zm9ybS4kc2V0U3VibWl0dGVkKClcclxuXHRcdFx0XHRcdCRzY29wZS5sb2NhbFZhcnMuUHJvY2Vzc1dpZGdldHMoZm9ybSxkYXRhLmFjdGlvbl9pbmRleCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgcHJvY2Vzc1dpZGdldHNTdGF0ZU5hbWU9IFwicHJvY2Vzc1dpZGdldHNTdGF0ZU5hbWVcIiskc2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUucGFnZV9zdGF0ZV9pZDtcclxuICAgICAgICAgICAgcHJvY2Vzc1dpZGdldHNTdGF0ZT0gJHNjb3BlLmtzbS5hZGRTdWJqZWN0KHByb2Nlc3NXaWRnZXRzU3RhdGVOYW1lLCRzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5wYWdlX3N0YXRlX2lkKTtcclxuICAgICAgICAgICAgbGV0IGFjdGlvbl93aWRnZXRzX3Byb2Nlc3NlZCA9ICRzY29wZS5rc20uYWRkQWN0aW9uKHByb2Nlc3NXaWRnZXRzU3RhdGVOYW1lLFwid2lkZ2V0c19wcm9jZXNzZWRcIix3aWRnZXRzX3Byb2Nlc3NlZCk7XHJcbiAgICAgICAgfSBcclxuXHJcblx0XHRcclxuICAgICAgICAkc2NvcGUubG9jYWxWYXJzLlByb2Nlc3NXaWRnZXRzID0gZnVuY3Rpb24oZm9ybSxhY3Rpb25faWR4KVxyXG5cdFx0e1xyXG4gICAgICAgICAgICAgdmFyIGxhbmc9JHJvb3RTY29wZS5nbG9iYWxzLmN1cnJlbnRVc2VyLmxhbmc7XHJcbiAgICAgICAgICAgICBpZiAoZm9ybS4kdmFsaWQpIHsgIFxyXG5cdFx0XHRcdFJlc291cmNlc0RhdGFTZXJ2aWNlLnByb2Nlc3NXaWRnZXRzKCRzY29wZS5yZXNvdXJjZUlkLCRzY29wZS5kYXNoYm9hcmQuZGF0YSwkc2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUucGFnZV9pbnN0YW5jZV9pZCwkc2NvcGUucGFnZV92ZXJzaW9uKS50aGVuKFxyXG5cdFx0XHRcdFx0ZnVuY3Rpb24oZGF0YSkgeyAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhPy5kYXRhPy5tc2chPT1cIlwiKSBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoZGF0YS5kYXRhLm1zZywnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgJHJvb3RTY29wZS4kYnJvYWRjYXN0KCdQcm9jZXNzV2lkZ2V0UG9zdFByb2Nlc3MnKyRzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5wYWdlX3N0YXRlX2lkLGRhdGEuZGF0YS5yZXRfdmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmtzbS5leGVjdXRlQWN0aW9uKHByb2Nlc3NXaWRnZXRzU3RhdGVOYW1lLFwid2lkZ2V0c19wcm9jZXNzZWRcIix7cGFnZV9pZDokc2NvcGUucmVzb3VyY2VJZCxhY3Rpb246J3Byb2N3aWRnZXRzJywnYWN0aW9uX2luZGV4JzphY3Rpb25faWR4fSk7XHJcbiAgICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oZXJyb3IpeyAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5rc20uZXhlY3V0ZUFjdGlvbihwcm9jZXNzV2lkZ2V0c1N0YXRlTmFtZSxcIndpZGdldHNfcHJvY2Vzc2VkXCIse3BhZ2VfaWQ6JHNjb3BlLnJlc291cmNlSWQsYWN0aW9uOidwcm9jd2lkZ2V0cycsJ2FjdGlvbl9pbmRleCc6YWN0aW9uX2lkeCwnZXJyb3InOnRydWV9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgIH0gLy8gaWYgKGlzVmFsaWQpXHJcbiAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAkc2NvcGUua3NtLmV4ZWN1dGVBY3Rpb24ocHJvY2Vzc1dpZGdldHNTdGF0ZU5hbWUsXCJ3aWRnZXRzX3Byb2Nlc3NlZFwiLHtwYWdlX2lkOiRzY29wZS5yZXNvdXJjZUlkLGFjdGlvbjoncHJvY3dpZGdldHMnLCdhY3Rpb25faW5kZXgnOmFjdGlvbl9pZHgsJ2Vycm9yJzp0cnVlfSk7ICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICBNZXNzYWdpbmdTZXJ2aWNlLmFkZE1lc3NhZ2UoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5QYXJhbWV0ZXJzTGFuZy5JbnZhbGlkRm9ybU1lc3NhZ2UsJ3dhcm5pbmcnKTsgIFxyXG4gICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgfTsgIFxyXG5cdFx0XHQgXHJcbiAgICAvKlxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvcHN0YXRlJywgKGUpID0+IHsgIC8vIG9uIGJyb3dzZXIgXCJCYWNrXCIgY2xpY2tcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7ICAgXHJcbiAgICAgICAgbGV0IHBhZ2VfaW5zdGFuY2UgPSAkbG9jYXRpb24uc2VhcmNoKCkucmluc3RhbmNlXHJcbiAgICAgICAgaWYocGFnZV9pbnN0YW5jZS50b1N0cmluZygpPT1cIjBcIikgeyAvLyBpZiBpbml0aWFsIGxvYWQgXHJcbiAgICAgICAgICAvL3dpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShudWxsLCBudWxsLCBudWxsKTsgLy8gUHJldmVudCBhZGRpbmcgY3VycmVudCBVUkwgdG8gSGlzdG9yeSBBUElcclxuICAgICAgICAgIHdpbmRvdy5oaXN0b3J5LmdvKC0yKVxyXG4gICAgICAgIH1lbHNlIHdpbmRvdy5oaXN0b3J5LmJhY2soKVxyXG4gICAgXHJcbiAgICAgIH0pO1xyXG4gICAgKi9cclxuICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICRzY29wZS5vcGVuU2VjdXJlZFBhZ2UgPSBmdW5jdGlvbihwYWdlSWQsIHBhZ2VWZXJzaW9uKVxyXG5cdHsgICBcclxuICAgICAgICBsZXQgcGFnZV9pbnN0YW5jZSA9ICRsb2NhdGlvbi5zZWFyY2goKS5yaW5zdGFuY2VcclxuXHJcbiAgICAgICAgUmVzb3VyY2VzRGF0YVNlcnZpY2Uub3BlblNlY3VyZWRQYWdlKHBhZ2VJZCwgcGFnZVZlcnNpb24sIHBhZ2VfaW5zdGFuY2UpLnRoZW4oXHJcblx0XHRcclxuXHRcdFx0ZnVuY3Rpb24oZGF0YSkgeyAgICAgICBcclxuXHRcdFx0XHQvL3NldCBwYWdlIGluc3RhbmNlXHJcblx0XHRcdFx0JHNjb3BlLnBhZ2VfaW5zdGFuY2VfaWQgPSBkYXRhPy5kYXRhPy5pbnN0YW5jZT8uaWRcclxuXHRcdFx0XHQkc3RhdGUucGFyYW1zLnJpbnN0YW5jZSA9ICRzY29wZS5wYWdlX2luc3RhbmNlX2lkXHJcblx0XHRcdFx0JHNjb3BlLnJlc291cmNlID0gZGF0YT8uZGF0YT8ucGFyYW1zO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdGlmIChwYWdlX2luc3RhbmNlPy50b1N0cmluZygpPT1cIjBcIikgLy8gbWlqZW5qYSBVUkwgYmV6IHp2YW5qYSBrb250cm9sZXJhXHJcblx0XHRcdFx0XHRcdCRzdGF0ZS50cmFuc2l0aW9uVG8oJHN0YXRlLmN1cnJlbnQubmFtZSwgJHN0YXRlLnBhcmFtcywgeyBub3RpZnk6IGZhbHNlLCAgIGxvY2F0aW9uOidyZXBsYWNlJywgaW5oZXJpdDp0cnVlfSlcclxuXHRcdFx0XHRpZiAoJHNjb3BlLnJlc291cmNlLlBhcmFtZXRlcnM9PW51bGwpIHsgIFxyXG5cdFx0XHRcdFx0XHQkc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycyA9IHtuYXZiYXI6dHJ1ZSxzaWRlTWVudTp0cnVlLHBhZ2VHcmlkSXRlbXM6W3tpZDoxfV0sZ3JpZDp7Tm9PZlJvd3M6bnVsbCxOb09mQ29sdW1uczpudWxsLFJvd0dhcDpudWxsLENvbHVtbkdhcDpudWxsfX0gICAgICAgXHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdCRzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZSA9ICRzY29wZS5yZXNvdXJjZTtcclxuXHRcdFx0XHQkc2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUucGFnZV9pbnN0YW5jZV9pZCA9ICRzY29wZS5wYWdlX2luc3RhbmNlX2lkXHJcblxyXG5cdFx0XHRcdC8vIGhlcmUgZ2V0IHBhZ2UgbWVudSBleGVcclxuXHRcdFx0XHRsZXQgdHlwZSA9IDFcclxuXHRcdFx0XHRsZXQgbWVudV9pZCA9ICRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkPy5ybGlua3NbMF0/LlJlc291cmNlMlxyXG5cdFx0XHRcdGxldCBtX3ZlciA9ICRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkPy5ybGlua3NbMF0/LlJlc291cmNlMl9WZXJzaW9uID8/IDBcclxuXHJcblx0XHRcdFx0JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbj0gJHNjb3BlLnJlc291cmNlIC8vZGF0YS5kYXRhLnJlc291cmNlRGVmaW5pdGlvbjtcclxuXHJcblx0XHRcdFx0JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zID0ge2Zvcm1WaWV3VHlwZToyfVxyXG5cclxuXHRcdFx0XHQkc2NvcGUuZ3NydmMuc2V0Rm9ybVZpZXdUeXBlKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcy5mb3JtVmlld1R5cGUpXHJcblx0XHRcdFx0JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5mb3JtX2RlZmluaXRpb24gPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5FeGVWZXJzaW9uID0gcGFnZVZlcnNpb25cclxuXHRcdFx0XHRpZiAoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5QYXJhbWV0ZXJzLnNldEJnQ29sb3IpIFx0JHNjb3BlLmdzcnZjLnNldEJvZHlCZ0NvbG9yKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUGFyYW1ldGVycy5iZ0NvbG9yKVxyXG5cdFx0XHRcdGVsc2UgJHNjb3BlLmdzcnZjLnJlc2V0Qm9keUJnQ29sb3IoKVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmIChtZW51X2lkIT11bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBNZW51U2VydmljZS5nZXRNZW51c0V4ZShtZW51X2lkLHR5cGUsbV92ZXIpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChkYXRhbSkgeyAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5tZW51X3NlcnZpY2Uuc2V0U2lkZU1lbnUobWVudV9pZCxtX3ZlcixkYXRhbS5tZW51cyxkYXRhbS5wcm9wZXJ0aWVzKSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLm1lbnVfc2VydmljZS5zaWRlTWVudS5tZW51cy5sZW5ndGg+MCkgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLlBhcmFtZXRlcnM9PXVuZGVmaW5lZCkgJHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlLlBhcmFtZXRlcnM9e31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUuUGFyYW1ldGVycy5zaWRlTWVudSA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZXRQYWdlU3RhdGUoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLnBhZ2VMb2FkZWQ9dHJ1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlICB7XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubWVudV9zZXJ2aWNlLmNsZWFyU2lkZU1lbnUoKVxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5zZXRQYWdlU3RhdGUoKVxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5wYWdlTG9hZGVkPXRydWVcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcblx0XHRcdFx0XHJcblxyXG5cdFx0XHRcdGlmIChkYXRhLmRhdGEuZm9ybS5sZW5ndGg+MClcclxuXHRcdFx0XHRcdCAkc2NvcGUuZGFzaGJvYXJkID0ge3dpZGdldHM6e2xheW91dDpkYXRhLmRhdGEuZm9ybX0sZGF0YTp7fX1cclxuXHRcdFx0XHQgZWxzZSBcclxuXHRcdFx0XHRcdCRzY29wZS5kYXNoYm9hcmQ9e3dpZGdldHMgOiB7bGF5b3V0OkdyaWRzdGVyU2VydmljZS5nZXRFbXB0eVRhc2tGb3JtKCl9LGRhdGE6e319OyAgICAgICAgICBcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRcclxuXHRcdFx0XHJcblx0XHRcdFx0XHJcbiAgICAgICAgICAgIGlmICgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlBhcmFtZXRlcnNMYW5nPT09dW5kZWZpbmVkKSBcclxuXHRcdFx0XHRcdCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUGFyYW1ldGVyc0xhbmc9e0ludmFsaWRGb3JtTWVzc2FnZTonUGxlYXNlIGNvcnJlY3QgaW52YWxpZCBlbnRyaWVzJ31cclxuICAgICAgICAgICAgZWxzZSBpZiAoJHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5QYXJhbWV0ZXJzTGFuZy5JbnZhbGlkRm9ybU1lc3NhZ2U9PT11bmRlZmluZWQpIFxyXG5cdFx0XHRcdFx0JHNjb3BlLnJlc291cmNlRGVmaW5pdGlvbi5QYXJhbWV0ZXJzTGFuZy5JbnZhbGlkRm9ybU1lc3NhZ2UgPSBcIlBsZWFzZSBjb3JyZWN0IGludmFsaWQgZW50cmllc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgJHNjb3BlLmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgJHNjb3BlLnVuYXV0aG9yaXNlZCA9IHRydWU7ICBcclxuICAgICAgICAgICAgJHNjb3BlLnBhZ2VMb2FkZWQ9dHJ1ZSAgICBcclxuICAgICAgICAgICAgJHN0YXRlLnBhcmFtcy5yaW5zdGFuY2UgPSB1bmRlZmluZWRcclxuXHJcbiAgICAgICAgICAgIGlmIChwYWdlX2luc3RhbmNlPy50b1N0cmluZygpPT1cIjBcIikgXHJcblx0XHRcdFx0XHQkc3RhdGUudHJhbnNpdGlvblRvKCAkc3RhdGUuY3VycmVudC5uYW1lLCAkc3RhdGUucGFyYW1zLCAgeyBub3RpZnk6IGZhbHNlLCAgIGxvY2F0aW9uOidyZXBsYWNlJywgaW5oZXJpdDp0cnVlfSkgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIE1lc3NhZ2luZ1NlcnZpY2UuYWRkTWVzc2FnZShlcnJvci5tc2csJ2Vycm9yJyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcblxyXG4gICAgICRzY29wZS5vcGVuUHVibGljUGFnZSA9IGZ1bmN0aW9uKG9yZ0lkLHBhZ2VJZCwgcGFnZVZlcnNpb24pXHJcblx0IHtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgcGFnZV9pbnN0YW5jZSA9ICRsb2NhdGlvbi5zZWFyY2goKS5yaW5zdGFuY2VcclxuXHJcbiAgICAgICAgbGV0IHNjaGVtYW5hbWUgPSAkbG9jYXRpb24uc2VhcmNoKCkuZW52XHJcblxyXG4gICAgICAgIGlmIChzY2hlbWFuYW1lKSB7ICAgICBcclxuICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcImVudmlyb25tZW50XCIsIHNjaGVtYW5hbWUpXHJcbiAgICAgICAgICAgICRyb290U2NvcGUuZ2xvYmFscy5jdXJyZW50RW52ID0gIHNjaGVtYW5hbWVcclxuICAgICAgICB9IGVsc2UgJHN0YXRlLmdvKFwiYXBwLm90aGVyd2lzZVwiKVxyXG5cclxuICAgICAgICAkc2NvcGUubWVudV9zZXJ2aWNlLnNldFB1YmxpY1BhZ2UodHJ1ZSlcclxuICAgICAgICBSZXNvdXJjZXNEYXRhU2VydmljZS5vcGVuUHVibGljUGFnZShvcmdJZCxwYWdlSWQsIHBhZ2VWZXJzaW9uLCBwYWdlX2luc3RhbmNlKS50aGVuKFxyXG5cdFx0XHRmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgIFxyXG5cdFx0XHRcdC8vc2V0IHBhZ2UgaW5zdGFuY2VcclxuXHRcdFx0XHQkc2NvcGUucGFnZV9pbnN0YW5jZV9pZCA9IGRhdGE/LmRhdGE/Lmluc3RhbmNlPy5pZFxyXG5cdFx0XHRcdCRzdGF0ZS5wYXJhbXMucmluc3RhbmNlID0gJHNjb3BlLnBhZ2VfaW5zdGFuY2VfaWRcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRpZiAocGFnZV9pbnN0YW5jZT8udG9TdHJpbmcoKT09XCIwXCIpIC8vIG1pamVuamEgVVJMIGJleiB6dmFuamEga29udHJvbGVyYVxyXG5cdFx0XHRcdFx0XHQkc3RhdGUudHJhbnNpdGlvblRvKCRzdGF0ZS5jdXJyZW50Lm5hbWUsICRzdGF0ZS5wYXJhbXMsIHsgbm90aWZ5OiBmYWxzZSwgICBsb2NhdGlvbjoncmVwbGFjZScsIGluaGVyaXQ6dHJ1ZX0pXHJcblx0XHRcdFx0JHNjb3BlLnJlc291cmNlID0gZGF0YT8uZGF0YT8ucGFyYW1zO1xyXG5cdFx0XHRcdGlmICgkc2NvcGUucmVzb3VyY2UuUGFyYW1ldGVycz09bnVsbCkgeyAgXHJcblx0XHRcdFx0XHRcdCRzY29wZS5yZXNvdXJjZS5QYXJhbWV0ZXJzID0ge25hdmJhcjp0cnVlLHNpZGVNZW51OnRydWUscGFnZUdyaWRJdGVtczpbe2lkOjF9XSxncmlkOntOb09mUm93czpudWxsLE5vT2ZDb2x1bW5zOm51bGwsUm93R2FwOm51bGwsQ29sdW1uR2FwOm51bGx9fSAgICAgICBcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0JHNjb3BlLmxvY2FsVmFycy5wYWdlX3N0YXRlID0gJHNjb3BlLnJlc291cmNlO1xyXG5cdFx0XHRcdCRzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5wYWdlX2luc3RhbmNlX2lkID0gJHNjb3BlLnBhZ2VfaW5zdGFuY2VfaWRcclxuXHJcblx0XHRcdFx0JHNjb3BlLnJlc291cmNlSWQgPSAkc2NvcGUucmVzb3VyY2UudWlkXHJcblx0XHRcclxuXHRcdFx0XHRsZXQgdHlwZSA9IDFcclxuXHRcdFx0XHRsZXQgbWVudV9pZCA9ICRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkPy5ybGlua3NbMF0/LlJlc291cmNlMlxyXG5cdFx0XHRcdGxldCBtX3ZlciA9ICRzY29wZS5yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkPy5ybGlua3NbMF0/LlJlc291cmNlMl9WZXJzaW9uID8/IDBcclxuXHJcblx0XHRcdFx0QXV0aGVudGljYXRpb25TZXJ2aWNlLlNldENyZWRlbnRpYWxzKGRhdGEuZGF0YS5hcGlfdXNlcixkYXRhLmRhdGEuYXBpX3VzZXI/LnVzZXJuYW1lLCBcIlwiLGZhbHNlKTtcclxuXHRcdFx0ICBcclxuXHRcdFx0ICBcclxuXHRcdFx0XHQkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uPSAkc2NvcGUucmVzb3VyY2UgLy9kYXRhLmRhdGEucmVzb3VyY2VEZWZpbml0aW9uO1xyXG5cdFx0XHRcdCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcyA9IHtmb3JtVmlld1R5cGU6Mn1cclxuXHJcblx0XHRcdFx0JHNjb3BlLmdzcnZjLnNldEZvcm1WaWV3VHlwZSgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlKVxyXG5cdFx0XHRcdCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uZm9ybV9kZWZpbml0aW9uID0gZmFsc2VcclxuXHJcblx0XHRcdFx0aWYgKCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUGFyYW1ldGVycy5zZXRCZ0NvbG9yKSBcclxuXHRcdFx0XHRcdCRzY29wZS5nc3J2Yy5zZXRCb2R5QmdDb2xvcigkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlBhcmFtZXRlcnMuYmdDb2xvcilcclxuXHRcdFx0XHRlbHNlICRzY29wZS5nc3J2Yy5yZXNldEJvZHlCZ0NvbG9yKClcclxuXHJcblx0XHRcdFx0XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0aWYgKGRhdGEuZGF0YS5mb3JtLmxlbmd0aD4wKVxyXG5cdFx0XHRcdFx0ICRzY29wZS5kYXNoYm9hcmQgPSB7d2lkZ2V0czp7bGF5b3V0OmRhdGEuZGF0YS5mb3JtfSxkYXRhOnt9fVxyXG5cdFx0XHRcdGVsc2UgXHJcblx0XHRcdFx0XHQkc2NvcGUuZGFzaGJvYXJkPXt3aWRnZXRzIDoge2xheW91dDpHcmlkc3RlclNlcnZpY2UuZ2V0RW1wdHlUYXNrRm9ybSgpfSxkYXRhOnt9fTsgICAgICAgICAgXHJcblxyXG5cdFx0XHRcdCRzY29wZS5wYWdlTG9hZGVkPXRydWVcclxuICAgICAgICAgICAgXHJcblx0XHRcdFx0aWYgKG1lbnVfaWQhPXVuZGVmaW5lZCkge1xyXG5cdFx0XHRcdFx0TWVudVNlcnZpY2UuZ2V0TWVudXNFeGUobWVudV9pZCx0eXBlLG1fdmVyKS50aGVuKFxyXG5cdFx0XHRcdFx0XHRmdW5jdGlvbiAoZGF0YW0pIHsgICAgICAgICAgICAgICAgIFxyXG5cdFx0XHRcdFx0XHRcdCRzY29wZS5tZW51X3NlcnZpY2Uuc2V0U2lkZU1lbnUobWVudV9pZCxtX3ZlcixkYXRhbS5tZW51cyxkYXRhbS5wcm9wZXJ0aWVzKVxyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdGlmICgkc2NvcGUubWVudV9zZXJ2aWNlLnNpZGVNZW51Lm1lbnVzLmxlbmd0aD4wKSAge1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCRzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5QYXJhbWV0ZXJzPT11bmRlZmluZWQpICRzY29wZS5sb2NhbFZhcnMucGFnZV9zdGF0ZS5QYXJhbWV0ZXJzPXt9XHJcblx0XHRcdFx0XHRcdFx0XHQkc2NvcGUubG9jYWxWYXJzLnBhZ2Vfc3RhdGUuUGFyYW1ldGVycy5zaWRlTWVudSA9IHRydWVcclxuXHRcdFx0XHRcdFx0XHR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2V0UGFnZVN0YXRlKCkgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHRcdCAgXHJcblx0XHRcdFx0XHRcdH0pXHJcblxyXG5cdFx0XHRcdH0gZWxzZSBcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUubWVudV9zZXJ2aWNlLmNsZWFyU2lkZU1lbnUoKVxyXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5zZXRQYWdlU3RhdGUoKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgIFxyXG5cdFx0XHRcdGlmICgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlBhcmFtZXRlcnNMYW5nPT09dW5kZWZpbmVkKSBcclxuXHRcdFx0XHRcdCRzY29wZS5yZXNvdXJjZURlZmluaXRpb24uUGFyYW1ldGVyc0xhbmc9e0ludmFsaWRGb3JtTWVzc2FnZTonUGxlYXNlIGNvcnJlY3QgaW52YWxpZCBlbnRyaWVzJ31cclxuXHRcdFx0XHRlbHNlIGlmICgkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlBhcmFtZXRlcnNMYW5nLkludmFsaWRGb3JtTWVzc2FnZT09PXVuZGVmaW5lZCkgXHJcblx0XHRcdFx0XHQkc2NvcGUucmVzb3VyY2VEZWZpbml0aW9uLlBhcmFtZXRlcnNMYW5nLkludmFsaWRGb3JtTWVzc2FnZSA9IFwiUGxlYXNlIGNvcnJlY3QgaW52YWxpZCBlbnRyaWVzXCJcdFx0XHRcdFx0XHQgICBcclxuICAgICBcclxuICAgICAgICB9LGZ1bmN0aW9uKGVycm9yKXtcclxuICAgICAgICAgICAgJHNjb3BlLmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgJHNjb3BlLnVuYXV0aG9yaXNlZCA9IHRydWU7ICBcclxuICAgICAgICAgICAgJHNjb3BlLnBhZ2VMb2FkZWQ9dHJ1ZSAgICBcclxuICAgICAgICAgICAgJHN0YXRlLnBhcmFtcy5yaW5zdGFuY2UgPSB1bmRlZmluZWRcclxuICAgICAgICAgICAgaWYgKHBhZ2VfaW5zdGFuY2U/LnRvU3RyaW5nKCk9PVwiMFwiKSBcclxuXHRcdFx0XHQkc3RhdGUudHJhbnNpdGlvblRvKCRzdGF0ZS5jdXJyZW50Lm5hbWUsICRzdGF0ZS5wYXJhbXMsICB7IG5vdGlmeTogZmFsc2UsICAgbG9jYXRpb246J3JlcGxhY2UnLCBpbmhlcml0OnRydWV9KSAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgTWVzc2FnaW5nU2VydmljZS5hZGRNZXNzYWdlKGVycm9yLm1zZywnZXJyb3InKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCRzY29wZS5yZXNvdXJjZUlkICE9IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgaWYgKCRzdGF0ZS5jdXJyZW50Lm5hbWU9PSdhcHAubmF2YmFyLnZwYWdlJykgJHNjb3BlLm9wZW5TZWN1cmVkUGFnZSgkc2NvcGUucmVzb3VyY2VJZCwgJHNjb3BlLnBhZ2VfdmVyc2lvbik7XHJcbiAgICAgICAgZWxzZSBpZiAoJHN0YXRlLmN1cnJlbnQubmFtZT09J2FwcC5uYXZiYXIucHVibGljLXZwYWdlJykgJHNjb3BlLm9wZW5QdWJsaWNQYWdlKCRzY29wZS5vcmdJZCwkc2NvcGUucmVzb3VyY2VJZCwgJHNjb3BlLnBhZ2VfdmVyc2lvbik7XHJcbiAgICAgIH0gZWxzZXtcclxuICAgICAgICAgJHNjb3BlLmZvcm1Mb2FkZWQ9dHJ1ZTtcclxuICAgICAgICAgJHNjb3BlLnVuYXV0aG9yaXNlZCA9IHRydWU7ICAgIFxyXG4gICAgfVxyXG5cclxuICAgIFxyXG59XHJcbiIsImV4cG9ydCBkZWZhdWx0IGFuZ3VsYXIubW9kdWxlKCdLYXRhbHlvJykucnVuKFsnJHRlbXBsYXRlQ2FjaGUnLCBmdW5jdGlvbigkdGVtcGxhdGVDYWNoZSkgeyR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9hcHBzZXR0aW5ncy5odG1sJywnPGRpdiBhcHBzZXR0aW5ncyBjbGFzcz1yb3c+PGRpdiBuZy1pZj1zaG93UmVzb3VyY2VMaXN0IGNsYXNzPWNvbC0yND48ZGl2IGNsYXNzPXRleHQtcHJpbWFyeT48YSB0aXRsZT1cIkhvbWUgcGFnZVwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCIgY2xhc3M9XCJmbnQ5IHRleHQtY2VudGVyXCI+PGkgY2xhc3M9XCJmYXMgZmEtcmVwbHlcIj48L2k+IDxzcGFuIG5nLWNsaWNrPXJlbG9hZFBhZ2UoKSBjbGFzcz1cInB4LTEgbmctYmluZGluZ1wiIG5nLWNsYXNzPVwie1xcJ2hpZGUtb24tbW9iaWxlXFwnOiBuaS5zX21lbnVzX1BhcmFtcy5oaWRlVGV4dE9uU21hbGxTY3J9XCIgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwO1wiPmJhY2s8L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJmbnQxMiBteS0yIHRleHQtY2VudGVyXCI+QWNjZXNzIHBlcm1pc3Npb25zIGZvciBcXCd7eyBhcHAuTmFtZSB9fVxcJzwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbXQtMVwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgYm9yZGVyLWJvdHRvbVwiPjxkaXYgY2xhc3M9XCJyb3cgbXQtMVwiPjxkaXYgY2xhc3M9Y29sPjx1bCBjbGFzcz1cIm5hdiBuYXYtdGFicyBib3JkZXItMCBzaW1wbGUtdGFic1wiIGlkPW15QXBwc1RhYiByb2xlPXRhYmxpc3Q+PGxpIGNsYXNzPVwibmF2LWl0ZW0gYm9sZFwiPjxhIGNsYXNzPW5hdi1saW5rIG5nLWNsaWNrPVwic2hvdyhcXCdwYWdlXFwnKVwiIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZSBzaG93XFwnOmxvY2FsVmFycy5zaG93TGlzdD09MX1cIiBocmVmIGlkPWFsbF90YWIgZGF0YS10b2dnbGU9dGFiIHJvbGU9dGFiIGFyaWEtY29udHJvbHM9YWxsX2FwcHMgYXJpYS1zZWxlY3RlZD10cnVlPlBhZ2UgYWNjZXNzPC9hPjwvbGk+PGxpIGNsYXNzPVwibmF2LWl0ZW0gYm9sZFwiPjxhIGNsYXNzPW5hdi1saW5rIG5nLWNsaWNrPVwic2hvdyhcXCdtZW51XFwnKVwiIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZSBzaG93XFwnOmxvY2FsVmFycy5zaG93TGlzdD09M31cIiBocmVmIGlkPWFsbF90YWIgZGF0YS10b2dnbGU9dGFiIHJvbGU9dGFiIGFyaWEtY29udHJvbHM9YWxsX2FwcHMgYXJpYS1zZWxlY3RlZD10cnVlPk1lbnUgYWNjZXNzPC9hPjwvbGk+PGxpIGNsYXNzPVwibmF2LWl0ZW0gYm9sZFwiPjxhIGNsYXNzPW5hdi1saW5rIGlkPW15X3RhYiBuZy1jbGljaz1cInNob3coXFwnYWRtaW5cXCcpXCIgbmctY2xhc3M9XCJ7XFwnYWN0aXZlIHNob3dcXCc6IGxvY2FsVmFycy5zaG93TGlzdD09Mn1cIiBocmVmIGRhdGEtdG9nZ2xlPXRhYiByb2xlPXRhYiBhcmlhLWNvbnRyb2xzPW15X2FwcHMgYXJpYS1zZWxlY3RlZD1mYWxzZT5BZG1pbiBzZXR0aW5nczwvYT48L2xpPjwvdWw+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGZvcm0gbmFtZT1hcHBzZXR0aW5nczIgY2xhc3M9XCJjb2wtbGctMTQgcGwtMCBwdC0zXCIgbmctaWY9XCJsb2NhbFZhcnMuc2hvd0xpc3Q9PTJcIj48ZGl2IGNsYXNzPWNvbC1sZy0yND48ZGl2IGt0LXVzZXJzLWdyb3Vwcy1zZWxlY3QgbmctaWY9XCJ0cnVlIHx8IHJlc291cmNlLnJlc291cmNlRGVmRG93bmxvYWRlZFwiIHNlbGVjdGVkLXVzZXJzPWxvY2FsVmFycy5hZG1pblVzZXJzIHNlbGVjdGVkLWdyb3Vwcz1sb2NhbFZhcnMuYWRtaW5Hcm91cHMgaGVhZGVyLWxhYmVsPXJlc291cmNlLmFkbWluSGVhZGVyTGFiZWwgdXNlcnMtbGFiZWw9XCJcXCdBZG1pbiB1c2Vyc1xcJ1wiIGdyb3Vwcy1sYWJlbD1cIlxcJ0FkbWluIGdyb3Vwc1xcJ1wiIGNsYXNzPWNvbD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0yND48ZGl2IGNsYXNzPWNvbD48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPXNhdmVBcHBsaWNhdGlvbih0cnVlKSBpZD1zYXZlUmVzb3VyY2VCdG4gbmctZGlzYWJsZWQ9Zm9ybS4kaW52YWxpZCBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBteS0yXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1zYXZlIG1yLTJcIj48L3NwYW4+U2F2ZTwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZm9ybT48ZGl2IG5nLWlmPVwibG9jYWxWYXJzLnNob3dMaXN0PT0xIHx8IGxvY2FsVmFycy5zaG93TGlzdD09M1wiIGNsYXNzPWNvbC0yND48Zm9ybSBjbGFzcz1cInJvdyBteS00XCIgbmFtZT1hcHBzZXR0aW5ncz48ZGl2IGNsYXNzPWNvbC00PjxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1pZj1hbGxHcm91cHMgbmctbW9kZWw9bG9jYWxWYXJzLm5ld2dyb3VwIHNlbGVjdGVkLWl0ZW1zPWxvY2FsVmFycy5uZXdncm91cCBpcy1tdWx0aXBsZT1mYWxzZSBuYW1lPXRhc2t7e2ZkLlByZXNlbnRhdGlvbklkfX0gbmctcmVxdWlyZWQ9ZmFsc2UgZHJvcGRvd24taXRlbXM9YWxsR3JvdXBzIGRyb3Bkb3duLWlkPVwiXFwndGFza1xcJytmZC5QcmVzZW50YXRpb25JZFwiIHBhcmVudC1mb3JtLWlkPVwiXFwnYXBwc2V0dGluZ3NcXCdcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCBncm91cFxcJ1wiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PC9kaXY+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnkgYm9yZGVyLXByaW1hcnlcIiBuZy1jbGljaz1hZGRHcm91cChsb2NhbFZhcnMubmV3Z3JvdXApPkFkZCBncm91cDwvYnV0dG9uPjwvZm9ybT48ZGl2IGNsYXNzPXJvdz48ZGl2IGNsYXNzPVwiY29sLTYgbWItMiBib2xkIGJvcmRlci1ib3R0b21cIj5SZXNvdXJjZTwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMiBtYi0yIGJvbGQgYm9yZGVyLWJvdHRvbVwiPlZlcnNpb248L2Rpdj48ZGl2IGNsYXNzPVwiY29sIG1iLTIgYm9sZCBib3JkZXItYm90dG9tXCIgbmctcmVwZWF0PVwiZyBpbiBhbGxfZ3JvdXBzXCI+e3tnLmduYW1lIH19PC9kaXY+PGhyPjwvZGl2PjxkaXYgY2xhc3M9cm93IG5nLXJlcGVhdD1cIihrZXksaXRlbSkgaW4gcmVzb3VyY2VEaWN0XCI+PGRpdiBjbGFzcz1cImNvbC02IGJvbGRcIj57e2l0ZW0ubmFtZX19ICh7eyBrZXl9fSk8L2Rpdj48ZGl2IGNsYXNzPWNvbC0yPnt7aXRlbS4kcmVzb3VyY2VfdmVyc2lvbn19PC9kaXY+PGRpdiBjbGFzcz1jb2wgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcIiBuZy1yZXBlYXQ9XCJnIGluIGFsbF9ncm91cHNcIj48aW5wdXQgbmctY2hhbmdlPVwiaW5wdXRjaGFuZ2VkKGl0ZW0sIGcpXCIgbmctZGlzYWJsZWQ9IWl0ZW0udXNlckNhbldyaXRlIHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJteS0xIG1yLTJcIiBzdHlsZT1cInRyYW5zZm9ybTogc2NhbGUoMS4xKTtcIiBuYW1lPWNiSGlkZUhlYWRlciBuZy1tb2RlbD1pdGVtW2cuZ2lkXS4kY2hlY2tlZCBuZy1jaGVja2VkPWl0ZW1bZy5naWRdLiRjaGVja2VkPjwvZGl2Pjxocj48L2Rpdj48ZGl2IGNsYXNzPXJvdz48ZGl2IGNsYXNzPVwiY29sLTYgYm9yZGVyLXRvcCBib2xkXCI+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0yIGJvcmRlci10b3AgcHktMiBib2xkXCI+QUxMPC9kaXY+PGRpdiBjbGFzcz1cImNvbCBib3JkZXItdG9wIHB5LTJcIiBuZy1yZXBlYXQ9XCJnIGluIGFsbF9ncm91cHNcIj48aW5wdXQgbmctY2hhbmdlPWFsbENoYW5nZWQoZykgdHlwZT1jaGVja2JveCBjbGFzcz1cIm15LTEgbXItMlwiIHN0eWxlPVwidHJhbnNmb3JtOiBzY2FsZSgxLjIpO1wiIG5hbWU9Y2JIaWRlSGVhZGVyIG5nLW1vZGVsPWFsbGNoZWNrZWRbZy5naWRdIG5nLWNoZWNrZWQ9YWxsY2hlY2tlZFtnLmdpZF0+PC9kaXY+PGhyPjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LXN0YXJ0IHRleHQtcHJpbWFyeVwiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9U2F2ZVJlc291cmNlQWNjZXNzKCkgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgbWwtMlwiPlNhdmU8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPSFzaG93UmVzb3VyY2VMaXN0IGNsYXNzPVwiY29sLWxnLTIwIG0tYXV0byBib3JkZXIgcm91bmRlZCBiZy13aGl0ZVwiPjxkaXYgY2xhc3M9XCJyb3cgbS0yXCI+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PGRpdiBjbGFzcz1cInJvdyBtdC0xXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBib3JkZXItYm90dG9tXCI+PGRpdiBjbGFzcz1cInJvdyBtdC0xXCI+PGRpdiBjbGFzcz1cImNvbCBwLTBcIj48dWwgY2xhc3M9XCJuYXYgbmF2LXRhYnMgYm9yZGVyLTAgc2ltcGxlLXRhYnNcIiBpZD1teUFwcHNUYWIgcm9sZT10YWJsaXN0PjxsaSBjbGFzcz1cIm5hdi1pdGVtIGJvbGRcIj48YSBjbGFzcz1uYXYtbGluayBuZy1jbGljaz1cInBhcmFtcy5zaG93QXBwTGlzdD0xXCIgbmctY2xhc3M9XCJ7XFwnYWN0aXZlIHNob3dcXCc6cGFyYW1zLnNob3dBcHBMaXN0PT0xfVwiIGhyZWYgaWQ9YWxsX3RhYiBkYXRhLXRvZ2dsZT10YWIgcm9sZT10YWIgYXJpYS1jb250cm9scz1hbGxfYXBwcyBhcmlhLXNlbGVjdGVkPXRydWU+TXkgYXBwczwvYT48L2xpPjwvdWw+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cInBhcmFtcy5zaG93QXBwTGlzdD09MVwiIGNsYXNzPVwicm93IG15LTRcIj48ZGl2IGlkPWxvYWRpbmdBcHBzIG5nLXNob3c9YXBwTGlzdExvYWRpbmcga3QtcHJvY2Vzc2luZy1hbmltYXRpb24tdGltZWxpbmUgYW5pbWF0aW9uLXR5cGU9XCJcXCdjYXJkXFwnXCIgc2hvdy1tc2c9ZmFsc2UgbWVzc2FnZSBwYXJhbXM9YXBwTGlzdFBhcmFtZXRlcnMgY2xhc3M9dy0xMDA+PC9kaXY+PGRpdiBuZy1yZXBlYXQ9XCJhcHAgaW4gYXBwTGlzdCB0cmFjayBieSBhcHAuaWRcIiBuZy1oaWRlPWFwcExpc3RMb2FkaW5nIGNsYXNzPVwiY29sLWxnLTYgY29sLXNtLTEyIGNvbC14cy0yNCBwLTFcIj48ZGl2IGNsYXNzPVwic2hhZG93LXNtIGJvcmRlciByb3VuZGVkXCIgc3R5bGU9XCJwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6IDEwMCU7XCI+PGRpdiBzdHlsZT1cImhlaWdodDogMTAwJTtcIj48ZGl2IGNsYXNzPVwicC0xIHRleHQtbGVmdCBteS1hdXRvXCI+PGRpdiBjbGFzcz1cInJvdyBteC0xXCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHB4LTFcIj48YSBjbGFzcz1cInNtYWxsIGJvbGRcIiB1aS1zcmVmPVwiYXBwLm5hdmJhci5yZXNvdXJjZXMudmlldyh7aWQ6YXBwLnVpZCxwcmV2X3N0YXRlOlxcJ2FwcC5uYXZiYXIuaG9tZVxcJyx0YWI6cGFyYW1zLnNob3dBcHBMaXN0LHJlc291cmNlX3R5cGU6YXBwLmFwcF90eXBlfSlcIj5JbmZvPC9hPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtLTJcIj48L2Rpdj48ZGl2IGNsYXNzPW15LTM+PGRpdiBjbGFzcz10ZXh0LWNlbnRlcj48c3BhbiBuZy1pZj1cImFwcC5sb2FkaW5nQXBwIT10cnVlXCIgY2xhc3M9aDUgc3R5bGU9XCJmb250LXdlaWdodDogYm9sZDtjb2xvcjojNmY3ZWM3XCI+e3thcHAuTmFtZX19PC9zcGFuPjxicj48c3BhbiBuZy1pZj1cImFwcC5sb2FkaW5nQXBwIT10cnVlXCIgY2xhc3M9c21hbGw+dnt7YXBwLnZlcnNpb259fTwvc3Bhbj48ZGl2IG5nLWlmPVwiYXBwLmxvYWRpbmdBcHA9PXRydWVcIiBjbGFzcz1oNT48ZGl2IGNsYXNzPWxvYWRlcj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcGItMlwiPjxzcGFuIG5nLWlmPVwiYXBwLmxvYWRpbmdBcHAhPXRydWVcIiBjbGFzcz1cInNtYWxsIGJvbGRcIj5DcmVhdGVkIGJ5IHt7YXBwLk9yZ05hbWV9fTwvc3Bhbj4gPHNwYW4gbmctaWY9XCJhcHAubG9hZGluZ0FwcD09dHJ1ZVwiIGNsYXNzPXNtYWxsPlN0YXJ0aW5nIHt7YXBwLk5hbWV9fS4uLjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicHgtMiB3LTEwMFwiIHN0eWxlPVwidG9wOiAtNDBweDtwb3NpdGlvbjogcmVsYXRpdmU7bWFyZ2luLWxlZnQ6IGF1dG87bWFyZ2luLXJpZ2h0OiBhdXRvO3dpZHRoOiA0MCU7XCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1kaXNhYmxlZD1cImFwcC5sb2FkaW5nQXBwPT10cnVlXCIgY2xhc3M9XCJidG4gYnRuLXNtIHctMTAwXCIgbmctY2xhc3M9XCJ7XFwnYnRuLXByaW1hcnlcXCc6YXBwLk5hbWU9PVxcJ0thdGFseW8gYnVpbGRlclxcJyxcXCdidG4tc3VjY2Vzc1xcJzphcHAuTmFtZSE9XFwnS2F0YWx5byBidWlsZGVyXFwnfVwiIG5nLWNsaWNrPWxvYWRBcHBTZXR0aW5ncyhhcHApPjxzcGFuIGNsYXNzPW0tMiBzdHlsZT1cImNvbG9yOiB3aGl0ZTtcIiBuZy1iaW5kPVwiXFwnRWRpdFxcJ1wiPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMlwiPjxkaXYgY2xhc3M9XCJjb2wtMjQgdGV4dC1jZW50ZXJcIiBuZy1pZj1cImFwcExpc3QubGVuZ3RoPT0wXCI+PGkgY2xhc3M9XCJmYSBmYS1taW51cy1jaXJjbGUgZmEtNHggdGV4dC1wcmltYXJ5XCI+PC9pPjxkaXYgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgaDQgbXQtM1wiPlRoZXJlIGFyZSBubyBhcHBsaWNhdGlvbnMgaW4geW91ciBvcmdhbmlzYXRpb24hPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PHN0eWxlPlxcclxcbi5ib3JkZXIge1xcclxcbiAgYm9yZGVyOiAxcHggc29saWQgI2M2Y2JkMiAhaW1wb3J0YW50OyBcXHJcXG59IFxcclxcbi5mb3JtLWNvbnRyb2wge1xcclxcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjOTA5NTlkXFxyXFxufVxcclxcbjwvc3R5bGU+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvYXBwX2hvbWUuaHRtbCcsJzxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcC0wXCI+PHN0eWxlPlxcclxcblxcclxcbmJvZHkge1xcclxcbiAgICBtYXJnaW46IDA7XFxyXFxuICAgIGZvbnQtZmFtaWx5OiBcIklCTSBQbGV4IFNhbnNcIixzYW5zLXNlcmlmO1xcclxcbiAgICBmb250LXNpemU6IC45M3JlbTtcXHJcXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcXHJcXG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcXHJcXG4gICAgY29sb3I6IHJnYmEoMTQsMjYsNTcsMC45KTtcXHJcXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcXHJcXG4gICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcclxcbiAgICBwYWRkaW5nOjAgIWltcG9ydGFudDtcXHJcXG59XFxyXFxuLm1vYmlsZS1uYXYge1xcclxcbiAgICBwb3NpdGlvbjogZml4ZWQ7XFxyXFxuICAgIHRvcDogMDtcXHJcXG4gICAgYm90dG9tOiAwO1xcclxcbiAgICBsZWZ0OiAwO1xcclxcbiAgICByaWdodDogMDtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXHJcXG4gICAgcGFkZGluZzogMjBweCA4JTtcXHJcXG4gICAgei1pbmRleDogMTA7XFxyXFxufVxcclxcbi5tb2JpbGUtbmF2IC5uYXYgLm5hdi1pdGVtIHtcXHJcXG4gICAgZGlzcGxheTogYmxvY2s7XFxyXFxuICAgIHdpZHRoOiAxMDAlO1xcclxcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xcclxcbn1cXHJcXG4ubW9iaWxlLW5hdiAubmF2IC5uYXYtbGluayB7XFxyXFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXHJcXG4gICAgY29sb3I6IHJnYmEoMTQsIDI2LCA1NywgMC45KTtcXHJcXG4gICAgZm9udC1zaXplOiAuOTNyZW07XFxyXFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxyXFxuICAgIHBhZGRpbmctbGVmdDogMDtcXHJcXG59XFxyXFxuLm1vYmlsZS1uYXYgLm5hdiAubmF2LWxpbms6aG92ZXIge1xcclxcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcXHJcXG59XFxyXFxuLm1vYmlsZS1uYXYgLmxvZ28ge1xcclxcbiAgICBmb250LXdlaWdodDogNzAwO1xcclxcbiAgICBmb250LXNpemU6IDI0cHg7XFxyXFxuICAgIGNvbG9yOiAjMEUxQTM5O1xcclxcbn1cXHJcXG4ubW9iaWxlLW5hdiAubmF2aWNvbiB7XFxyXFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gICAgdG9wOiAyNXB4O1xcclxcbiAgICByaWdodDogOCU7XFxyXFxufVxcclxcbi5tYWluLWhlYWRlciB7XFxyXFxuICAgIG1heC13aWR0aDogMTQ0MHB4O1xcclxcbiAgICBtYXJnaW46IDAgYXV0bztcXHJcXG4gICAgcGFkZGluZzogNDRweDtcXHJcXG4gICAgZGlzcGxheTogZmxleDtcXHJcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcclxcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xcclxcbn1cXHJcXG5cXHJcXG4ubWFpbi1oZWFkZXIgLmxvZ28ge1xcclxcbiAgICBmb250LXdlaWdodDogNzAwO1xcclxcbiAgICBmb250LXNpemU6IDI0cHg7XFxyXFxuICAgIGNvbG9yOiAjMEUxQTM5XFxyXFxufVxcclxcblxcclxcbi5tYWluLWhlYWRlciAubmF2IC5uYXYtbGluayB7XFxyXFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcclxcbiAgICBmb250LXdlaWdodDogNTAwO1xcclxcbiAgICBmb250LXNpemU6IDE2cHg7XFxyXFxuICAgIGxldHRlci1zcGFjaW5nOiAwLjAxZW07XFxyXFxuICAgIGNvbG9yOiAjMEUxQTM5O1xcclxcbiAgICBwYWRkaW5nOiAxcmVtXFxyXFxufVxcclxcblxcclxcbi5tYWluLWhlYWRlciAubmF2IC5uYXYtbGluazpob3ZlciB7XFxyXFxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lXFxyXFxufVxcclxcblxcclxcbi5tYWluLWhlYWRlciAubmF2aWNvbiB7XFxyXFxuICAgIGRpc3BsYXk6IG5vbmVcXHJcXG59XFxyXFxuXFxyXFxuQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7XFxyXFxuICAgIC5tYWluLWhlYWRlciB7XFxyXFxuICAgICAgICBwYWRkaW5nOjIwcHggOCVcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAubWFpbi1oZWFkZXIgLm5hdiwubWFpbi1oZWFkZXIgLmNvbnRhY3Qge1xcclxcbiAgICAgICAgZGlzcGxheTogbm9uZVxcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC5tYWluLWhlYWRlciAubmF2aWNvbiB7XFxyXFxuICAgICAgICBkaXNwbGF5OiBibG9ja1xcclxcbiAgICB9XFxyXFxuICAuc2VjdGlvbi1pbnRybyB7XFxyXFxuICAgIG1heC13aWR0aDogMTQ0MHB4O1xcclxcbiAgICBtYXJnaW46IDAgYXV0bztcXHJcXG4gICAgcGFkZGluZy10b3A6IDEydnc7XFxyXFxuICB9XFxyXFxuXFxyXFxuICAuc2VjdGlvbi1pbnRybyAuaDEsLnNlY3Rpb24taW50cm8gLmgyIHtcXHJcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxyXFxuICAgIG1hcmdpbi1yaWdodDogYXV0bztcXHJcXG4gICAgbWF4LXdpZHRoOiA4NTBweFxcclxcbiAgfVxcclxcbn1cXHJcXG5cXHJcXG5AbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHtcXHJcXG4gICAgLnNlY3Rpb24ge1xcclxcbiAgICAgICAgcGFkZGluZy1sZWZ0OjglO1xcclxcbiAgICAgICAgcGFkZGluZy1yaWdodDogOCVcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAuc2VjdGlvbiAuY29udGFpbmVyIHtcXHJcXG4gICAgICAgIHBhZGRpbmc6IDBcXHJcXG4gICAgfVxcclxcbn1cXHJcXG5cXHJcXG4uc2VjdGlvbi1pbnRybyB7XFxyXFxuICAgIG1heC13aWR0aDogMTQ0MHB4O1xcclxcbiAgICBtYXJnaW46IDAgYXV0bztcXHJcXG4gICAgcGFkZGluZy10b3A6IDEydnc7XFxyXFxuICAgIG1hcmdpbi1ib3R0b206IDV2dztcXHJcXG59XFxyXFxuXFxyXFxuLnNlY3Rpb24taW50cm8gLmgxLC5zZWN0aW9uLWludHJvIC5oMiB7XFxyXFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcclxcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XFxyXFxuICAgIG1heC13aWR0aDogODUwcHhcXHJcXG59XFxyXFxuXFxyXFxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XFxyXFxuICAuc2VjdGlvbi1pbnRybyB7XFxyXFxuICAgICAgICBwYWRkaW5nLXRvcDo0cmVtO1xcclxcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xcclxcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA0NHB4O1xcclxcbiAgICAgICAgcGFkZGluZy1yaWdodDogNDRweFxcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC5zZWN0aW9uLWludHJvIC5jb250YWluZXIge1xcclxcbiAgICAgICAgcGFkZGluZzogMFxcclxcbiAgICB9XFxyXFxufVxcclxcblxcclxcbi5zZWN0aW9uLXRpdGxlIHtcXHJcXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxyXFxuICAgIGxldHRlci1zcGFjaW5nOiAwLjMyZW07XFxyXFxuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XFxyXFxuICAgIGNvbG9yOiAjMEUxQTM5O1xcclxcbiAgICBwYWRkaW5nLWJvdHRvbTogNXJlbVxcclxcbn1cXHJcXG5cXHJcXG5AbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHtcXHJcXG4gIC5zZWN0aW9uLXRpdGxlIHtcXHJcXG4gICAgICAgIHBhZGRpbmctYm90dG9tOjEydnc7XFxyXFxuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xcclxcbiAgICAgICAgZm9udC1zaXplOiAxMnB4XFxyXFxuICAgIH1cXHJcXG4gICAgXFxyXFxuICAgIC5tb2JpbGUtbmF2IC5uYXYge1xcclxcbiAgICAgICAgbWFyZ2luLXRvcDogMnJlbTtcXHJcXG4gICAgfVxcclxcblxcclxcbn1cXHJcXG5cXHJcXG4uZGlzcGxheS0xIHtcXHJcXG4gICAgZm9udC1zaXplOiA0LjEzcmVtO1xcclxcbiAgICBmb250LXdlaWdodDogNzAwO1xcclxcbiAgICBsaW5lLWhlaWdodDogMS4yXFxyXFxufVxcclxcblxcclxcbkBtZWRpYSAobWF4LXdpZHRoOiAxMjAwcHgpIHtcXHJcXG4gICAgLmRpc3BsYXktMSB7XFxyXFxuICAgICAgICBmb250LXNpemU6Y2FsYygxLjUzOHJlbSArIDMuNDU2dncpXFxyXFxuICAgIH1cXHJcXG59XFxyXFxuXFxyXFxuLmRpc3BsYXktMiB7XFxyXFxuICAgIGZvbnQtc2l6ZTogMy4yNnJlbTtcXHJcXG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcXHJcXG4gICAgbGluZS1oZWlnaHQ6IDEuMlxcclxcbn1cXHJcXG5cXHJcXG5AbWVkaWEgKG1heC13aWR0aDogMTIwMHB4KSB7XFxyXFxuICAgIC5kaXNwbGF5LTIge1xcclxcbiAgICAgICAgZm9udC1zaXplOmNhbGMoMS40NTFyZW0gKyAyLjQxMnZ3KVxcclxcbiAgICB9XFxyXFxufVxcclxcblxcclxcbi5kaXNwbGF5LTMge1xcclxcbiAgICBmb250LXNpemU6IDQuNXJlbTtcXHJcXG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcXHJcXG4gICAgbGluZS1oZWlnaHQ6IDEuMlxcclxcbn1cXHJcXG5cXHJcXG5AbWVkaWEgKG1heC13aWR0aDogMTIwMHB4KSB7XFxyXFxuICAgIC5kaXNwbGF5LTMge1xcclxcbiAgICAgICAgZm9udC1zaXplOmNhbGMoMS41NzVyZW0gKyAzLjl2dylcXHJcXG4gICAgfVxcclxcbn1cXHJcXG5cXHJcXG4uZGlzcGxheS00IHtcXHJcXG4gICAgZm9udC1zaXplOiAzLjVyZW07XFxyXFxuICAgIGZvbnQtd2VpZ2h0OiAzMDA7XFxyXFxuICAgIGxpbmUtaGVpZ2h0OiAxLjJcXHJcXG59XFxyXFxuXFxyXFxuQG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkge1xcclxcbiAgICAuZGlzcGxheS00IHtcXHJcXG4gICAgICAgIGZvbnQtc2l6ZTpjYWxjKDEuNDc1cmVtICsgMi43dncpXFxyXFxuICAgIH1cXHJcXG59XFxyXFxuXFxyXFxuXFxyXFxuQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7XFxyXFxuICAgIC5kaXNwbGF5LTEge1xcclxcbiAgICAgICAgZm9udC1zaXplOmNhbGMoMS41MzhyZW0gKyAxLjQ1NnZ3KVxcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC5oMiB7XFxyXFxuICAgICAgICBmb250LXNpemU6IGNhbGMoMXJlbSArIC4yODU2dncpXFxyXFxuICAgIH1cXHJcXG59XFxyXFxuXFxyXFxuLmgxLC5oMyB7XFxyXFxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XFxyXFxuICAgIGNvbG9yOiAjMEUxQTM5XFxyXFxufVxcclxcblxcclxcbi5oMiB7XFxyXFxuICAgIGxpbmUtaGVpZ2h0OiAxNjAlXFxyXFxufVxcclxcblxcclxcbi5idG4ge1xcclxcbiAgICBib3JkZXItcmFkaXVzOiAxMDBweDtcXHJcXG4gICAgcGFkZGluZzogLjc1cmVtIDJyZW1cXHJcXG59XFxyXFxuXFxyXFxuLmJ0bi5idG4tcHJpbWFyeSB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMzMDJDRTVcXHJcXG59XFxyXFxuLmZvbnQtd2VpZ2h0LW5vcm1hbCB7XFxyXFxuICAgIGZvbnQtd2VpZ2h0OiA0MDAgIWltcG9ydGFudFxcclxcbn1cXHJcXG5cXHJcXG4gLmluZm8tYmxvY2sge1xcclxcbiAgICBkaXNwbGF5OiBmbGV4O1xcclxcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcXHJcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXHJcXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcXHJcXG4gICAgbWF4LXdpZHRoOiA4NTBweDtcXHJcXG4gICAgbWluLWhlaWdodDogODBweDtcXHJcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxyXFxuICAgIG1hcmdpbi1yaWdodDogYXV0bztcXHJcXG4gICAgYmFja2dyb3VuZDogI0ZGRkZGRjtcXHJcXG4gICAgYm94LXNoYWRvdzogMHB4IDEwcHggMThweCAtM3B4IHJnYmEoMTQsMjYsNTcsMC4xKSwwcHggLTRweCA4cHggLTJweCByZ2JhKDE0LDI2LDU3LDAuMDUpO1xcclxcbiAgICBib3JkZXItcmFkaXVzOiA2MnB4O1xcclxcbiAgICBwYWRkaW5nOiAxcmVtIDEuODc1cmVtXFxyXFxufVxcclxcblxcclxcbiAuaW5mby1ibG9jayAuaDUge1xcclxcbiAgICBtYXJnaW4tYm90dG9tOiAuMjVyZW1cXHJcXG59XFxyXFxuXFxyXFxuIC5pbmZvLWJsb2NrIC5pY29uIHtcXHJcXG4gICAgd2lkdGg6IDQwcHg7XFxyXFxuICAgIG1hcmdpbi1yaWdodDogMS41cmVtXFxyXFxufVxcclxcblxcclxcbiAuaW5mby1ibG9jayAuYnRuIHtcXHJcXG4gICAgbWluLXdpZHRoOiAxNDBweDtcXHJcXG4gICAgcGFkZGluZzogMC43NXJlbSAxcmVtO1xcclxcbiAgICBtYXJnaW4tbGVmdDogMXJlbVxcclxcbn1cXHJcXG5cXHJcXG5AbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHtcXHJcXG4gICAgIC5pbmZvLWJsb2NrIHtcXHJcXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOmNvbHVtbjtcXHJcXG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcclxcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcXHJcXG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XFxyXFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE0LDI2LDU3LDAuMDIpO1xcclxcbiAgICAgICAgcGFkZGluZzogMXJlbSA4JSAycmVtO1xcclxcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC05JTtcXHJcXG4gICAgICAgIG1hcmdpbi1yaWdodDogLTklXFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgIC5pbmZvLWJsb2NrIC5pY29uIHtcXHJcXG4gICAgICAgIHdpZHRoOiAzMnB4O1xcclxcbiAgICAgICAgcGFkZGluZzogMDtcXHJcXG4gICAgICAgIG1hcmdpbi1ib3R0b206IC41cmVtXFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgIC5pbmZvLWJsb2NrIC5idG4ge1xcclxcbiAgICAgICAgbWFyZ2luLXRvcDogMS41cmVtO1xcclxcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDBcXHJcXG4gICAgfVxcclxcbn1cXHJcXG5AbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHtcXHJcXG4gICAgLmlsbHVzdHJhdGlvbi13cmFwIHtcXHJcXG4gICAgICAgIG1hcmdpbi1sZWZ0Oi0yMHB4O1xcclxcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMjBweDtcXHJcXG4gICAgICAgIHBhZGRpbmctdG9wOiAydnc7XFxyXFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTJ2d1xcclxcbiAgICB9XFxyXFxufVxcclxcbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xcclxcbiAgICAuaGVybyAuaGVyby1yb3cge1xcclxcbiAgICAgICAgYWxpZ24taXRlbXM6Y2VudGVyO1xcclxcbiAgICAgICAgbWFyZ2luLXRvcDogNHJlbVxcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC5oZXJvIC5pbGx1c3RyYXRpb24td3JhcCB7XFxyXFxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDRyZW1cXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAuaGVybyAuaW5mby1ibG9jayB7XFxyXFxuICAgICAgICBtYXJnaW4tbGVmdDogMFxcclxcbiAgICB9XFxyXFxufVxcclxcblxcclxcblxcclxcbi5tYWluLWZvb3RlciB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMxOTFmMmU7XFxyXFxuICAgIGNvbG9yOiAjZmZmO1xcclxcbiAgICBwYWRkaW5nLXRvcDogMTB2dztcXHJcXG59XFxyXFxuXFxyXFxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XFxyXFxuICAgIC5tYWluLWZvb3RlciB7XFxyXFxuICAgICAgICBwYWRkaW5nLXRvcDo1dnc7XFxyXFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogNXZ3XFxyXFxuICAgICAgICAgbWFyZ2luLXRvcDogNXZ3O1xcclxcbiAgICB9XFxyXFxufVxcclxcblxcclxcbi5tYWluLWZvb3RlciAuc2VjdGlvbi10aXRsZSB7XFxyXFxuICAgIHBhZGRpbmctYm90dG9tOiAycmVtXFxyXFxufVxcclxcblxcclxcbi5tYWluLWZvb3RlciAuY29udGFpbmVyIHtcXHJcXG4gICAgbWF4LXdpZHRoOiAxNDQwcHg7XFxyXFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcclxcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG9cXHJcXG59XFxyXFxuXFxyXFxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XFxyXFxuICAgIC5tYWluLWZvb3RlciAuY29udGFpbmVyIHtcXHJcXG4gICAgICAgIHBhZGRpbmctbGVmdDo0NHB4O1xcclxcbiAgICAgICAgcGFkZGluZy1yaWdodDogNDRweFxcclxcbiAgICB9XFxyXFxufVxcclxcblxcclxcbi5tYWluLWZvb3RlciAuZm9ybSAuZm9ybS1ncm91cCB7XFxyXFxuICAgIG1hcmdpbi1ib3R0b206IDFyZW1cXHJcXG59XFxyXFxuXFxyXFxuLm1haW4tZm9vdGVyIC5mb3JtIGxhYmVsIHtcXHJcXG4gICAgbWFyZ2luLWJvdHRvbTogLjVyZW07XFxyXFxuICAgIG1hcmdpbi1sZWZ0OiA0cHg7XFxyXFxuICAgIGZvbnQtc2l6ZTogLjkzcmVtXFxyXFxufVxcclxcblxcclxcbi5tYWluLWZvb3RlciAuZm9ybSAuZm9ybS1jb250cm9sIHtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxyXFxuICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjEpO1xcclxcbiAgICBjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjkpO1xcclxcbiAgICBwYWRkaW5nLXRvcDogMS41cmVtO1xcclxcbiAgICBwYWRkaW5nLWJvdHRvbTogMS41cmVtXFxyXFxufVxcclxcblxcclxcbi5tYWluLWZvb3RlciAuZm9ybSAuZm9ybS1jb250cm9sOjpwbGFjZWhvbGRlciB7XFxyXFxuICAgIGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuMylcXHJcXG59XFxyXFxuXFxyXFxuLm1haW4tZm9vdGVyIC5mb3JtIC5mb3JtLWNvbnRyb2w6aG92ZXIge1xcclxcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMC4yNSk7XFxyXFxuICAgIGJveC1zaGFkb3c6IG5vbmVcXHJcXG59XFxyXFxuXFxyXFxuLm1haW4tZm9vdGVyIC5mb3JtIC5mb3JtLWNvbnRyb2w6Zm9jdXMsLm1haW4tZm9vdGVyIC5mb3JtIC5mb3JtLWNvbnRyb2w6YWN0aXZlIHtcXHJcXG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuNSk7XFxyXFxuICAgIGJveC1zaGFkb3c6IG5vbmVcXHJcXG59XFxyXFxuXFxyXFxuLm1haW4tZm9vdGVyIC5mb3JtIC5jdGEge1xcclxcbiAgICBkaXNwbGF5OiBmbGV4O1xcclxcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kXFxyXFxufVxcclxcblxcclxcbi5tYWluLWZvb3RlciAuZm9ybSAuY3RhIC5idG4ge1xcclxcbiAgICBib3JkZXItcmFkaXVzOiA2cHg7XFxyXFxuICAgIGJvcmRlcjogMDtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzNiMzhkOVxcclxcbn1cXHJcXG5cXHJcXG5AbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHtcXHJcXG4gICAgLm1haW4tZm9vdGVyIC5mb3JtIC5jdGEgLmJ0biB7XFxyXFxuICAgICAgICBkaXNwbGF5OmJsb2NrO1xcclxcbiAgICAgICAgd2lkdGg6IDEwMCVcXHJcXG4gICAgfVxcclxcbn1cXHJcXG5cXHJcXG4ubWFpbi1mb290ZXIgLmZvcm0gLmN0YSAuYnRuIC5mYSB7XFxyXFxuICAgIG1hcmdpbi1yaWdodDogLjVyZW1cXHJcXG59XFxyXFxuXFxyXFxuLm1haW4tZm9vdGVyIC5uYXYge1xcclxcbiAgICBtYXJnaW4tdG9wOiA0cmVtXFxyXFxufVxcclxcblxcclxcbi5tYWluLWZvb3RlciAubmF2IC5uYXYtaXRlbSB7XFxyXFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcclxcbiAgICB3aWR0aDogMTAwJTtcXHJcXG4gICAgbWFyZ2luLWJvdHRvbTogMS4zNXJlbVxcclxcbn1cXHJcXG5cXHJcXG5AbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHtcXHJcXG4gICAgLm1haW4tZm9vdGVyIC5uYXYgLm5hdi1pdGVtIHtcXHJcXG4gICAgICAgIG1hcmdpbi1ib3R0b206LjVyZW1cXHJcXG4gICAgfVxcclxcbn1cXHJcXG5cXHJcXG4ubWFpbi1mb290ZXIgLm5hdiAubmF2LWxpbmsge1xcclxcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICAgIGNvbG9yOiAjZmZmO1xcclxcbiAgICBmb250LXNpemU6IC45M3JlbTtcXHJcXG4gICAgcGFkZGluZy1sZWZ0OiAwO1xcclxcbiAgICBvcGFjaXR5OiAuNVxcclxcbn1cXHJcXG5cXHJcXG4ubWFpbi1mb290ZXIgLm5hdiAubmF2LWxpbms6aG92ZXIge1xcclxcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcXHJcXG4gICAgb3BhY2l0eTogMVxcclxcbn1cXHJcXG5cXHJcXG4ubWFpbi1mb290ZXIgLnNvY2lhbC1pY29ucyB7XFxyXFxuICAgIG1hcmdpbi10b3A6IDEuNXJlbTtcXHJcXG4gICAgZGlzcGxheTogZmxleFxcclxcbn1cXHJcXG5cXHJcXG4ubWFpbi1mb290ZXIgLnNvY2lhbC1pY29ucyBhIHtcXHJcXG4gICAgd2lkdGg6IDI1JTtcXHJcXG4gICAgb3BhY2l0eTogLjVcXHJcXG59XFxyXFxuXFxyXFxuLm1haW4tZm9vdGVyIC5zb2NpYWwtaWNvbnMgYSAuZmEge1xcclxcbiAgICBjb2xvcjogI2ZmZjtcXHJcXG4gICAgZm9udC1zaXplOiAyNHB4XFxyXFxufVxcclxcblxcclxcbi5tYWluLWZvb3RlciAuc29jaWFsLWljb25zIGE6aG92ZXIge1xcclxcbiAgICBvcGFjaXR5OiAxXFxyXFxufVxcclxcbiAuYWN0aW9uLWJhciB7XFxyXFxuICAgIHRleHQtYWxpZ246IGNlbnRlclxcclxcbn1cXHJcXG5cXHJcXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcXHJcXG4gICAgIC5hY3Rpb24tYmFyIHtcXHJcXG4gICAgICAgIHBhZGRpbmctYm90dG9tOjRyZW1cXHJcXG4gICAgfVxcclxcbn1cXHJcXG59XFxyXFxuXFxyXFxuIDwvc3R5bGU+PGRpdiBjbGFzcz1cIm1vYmlsZS1uYXYgZC1ub25lXCI+PGEgaHJlZj1cIi9cIiBjbGFzcz1sb2dvPmthdGFseW88L2E+PHVsIGlkPW15TGlua3MgY2xhc3M9bmF2PjxsaSBjbGFzcz1uYXYtaXRlbT48YSBjbGFzcz1cIm5hdi1saW5rIHNjcm9sbFwiIGhyZWY9aHR0cHM6Ly93d3cua2F0YWx5by5jb20vI2ZlYXR1cmVzPkZlYXR1cmVzPC9hPjwvbGk+PGxpIGNsYXNzPW5hdi1pdGVtPjxhIGNsYXNzPVwibmF2LWxpbmsgc2Nyb2xsXCIgaHJlZj1odHRwczovL3d3dy5rYXRhbHlvLmNvbS8jYmxvY2tjaGFpbj5CbG9ja2NoYWluPC9hPjwvbGk+PGxpIGNsYXNzPW5hdi1pdGVtPjxhIGNsYXNzPVwibmF2LWxpbmsgc2Nyb2xsXCIgaHJlZj1odHRwczovL2RlZmkua2F0YWx5by5jb20+V2ViMzwvYT48L2xpPjxsaSBjbGFzcz1uYXYtaXRlbT48YSBjbGFzcz1cIm5hdi1saW5rIHNjcm9sbFwiIGhyZWY9aHR0cHM6Ly93d3cua2F0YWx5by5jb20vI2hvdy1pdC13b3Jrcz5Ib3cgaXQgd29ya3M8L2E+PC9saT48bGkgY2xhc3M9bmF2LWl0ZW0+PGEgY2xhc3M9XCJuYXYtbGluayBzY3JvbGxcIiBocmVmPWh0dHBzOi8vd3d3LmthdGFseW8uY29tLyN1c2UtY2FzZXM+VXNlIENhc2VzPC9hPjwvbGk+PGxpIGNsYXNzPW5hdi1pdGVtPjxhIGNsYXNzPVwibmF2LWxpbmsgc2Nyb2xsXCIgaHJlZj1odHRwczovL3d3dy5rYXRhbHlvLmNvbS90ZWxvcz5UZWxvczwvYT48L2xpPjxsaSBzdHlsZT1kaXNwbGF5Om5vbmUgY2xhc3M9bmF2LWl0ZW0+PGEgY2xhc3M9XCJuYXYtbGluayBzY3JvbGxcIiBocmVmPSNmb290ZXI+QWJvdXQgVXM8L2E+PC9saT48bGkgc3R5bGU9ZGlzcGxheTpub25lIGNsYXNzPW5hdi1pdGVtPjxhIGNsYXNzPW5hdi1saW5rIGhyZWY9Iz5TdGFydCBCdWlsZGluZzwvYT48L2xpPjxsaSBzdHlsZT1kaXNwbGF5Om5vbmUgY2xhc3M9bmF2LWl0ZW0+PGEgY2xhc3M9bmF2LWxpbmsgaHJlZj0jPlNjaGVkdWxlIGEgRGVtbzwvYT48L2xpPjxsaSBjbGFzcz1uYXYtaXRlbT48YSBjbGFzcz1cIm5hdi1saW5rIHNjcm9sbFwiIGhyZWY9I2Zvb3Rlcj5Db250YWN0IHVzPC9hPjwvbGk+PGxpIGNsYXNzPW5hdi1pdGVtPjxhIGNsYXNzPW5hdi1saW5rIGhyZWY9L3NpZ251cD5TaWduIHVwPC9hPjwvbGk+PC91bD48ZGl2IGNsYXNzPVwibmF2aWNvbiBqcy10b2dnbGUtbW9iaWxlLW5hdlwiPjxhIGNsYXNzPWhhbWJ1cmdlciBocmVmPWphdmFzY3JpcHQ6dm9pZCgwKTs+PHN2ZyB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyB3aWR0aD0yNCBoZWlnaHQ9MjQgdmlld2JveD1cIjAgMCAyNCAyNFwiIGZpbGw9bm9uZSBzdHJva2U9Y3VycmVudENvbG9yIHN0cm9rZS13aWR0aD0yIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS1saW5lam9pbj1yb3VuZCBjbGFzcz1cImZlYXRoZXIgZmVhdGhlci1tZW51XCI+PGxpbmUgeDE9MyB5MT0xMiB4Mj0yMSB5Mj0xMj48L2xpbmU+PGxpbmUgeDE9MyB5MT02IHgyPTIxIHkyPTY+PC9saW5lPjxsaW5lIHgxPTMgeTE9MTggeDI9MjEgeTI9MTg+PC9saW5lPjwvc3ZnPjwvYT48L2Rpdj48L2Rpdj48aGVhZGVyIGlkPWhlYWRlckFwcCBjbGFzcz1tYWluLWhlYWRlcj48ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPjxpbWcgd2lkdGg9MjAwIGxvYWRpbmc9bGF6eSBzcmM9e3tjb25maWcuZGVwbG95ZGlyfX17e2NvbmZpZy5rdGx5b19sb2dvX2ltZ319PjwvZGl2Pjx1bCBpZD1teUxpbmtzIGNsYXNzPW5hdj48bGkgY2xhc3M9bmF2LWl0ZW0+PGEgY2xhc3M9XCJuYXYtbGluayBzY3JvbGxcIiBocmVmPWh0dHBzOi8vd3d3LmthdGFseW8uY29tLyNmZWF0dXJlcz5GZWF0dXJlczwvYT48L2xpPjxsaSBjbGFzcz1uYXYtaXRlbT48YSBjbGFzcz1cIm5hdi1saW5rIHNjcm9sbFwiIGhyZWY9aHR0cHM6Ly93d3cua2F0YWx5by5jb20vI2Jsb2NrY2hhaW4+V2ViMzwvYT48L2xpPjxsaSBjbGFzcz1uYXYtaXRlbT48YSBjbGFzcz1cIm5hdi1saW5rIHNjcm9sbFwiIGhyZWY9aHR0cHM6Ly93d3cua2F0YWx5by5jb20vI2hvdy1pdC13b3Jrcz5Ib3cgaXQgd29ya3M8L2E+PC9saT48bGkgY2xhc3M9bmF2LWl0ZW0+PGEgY2xhc3M9XCJuYXYtbGluayBzY3JvbGxcIiBocmVmPWh0dHBzOi8vd3d3LmthdGFseW8uY29tLyN1c2UtY2FzZXM+VXNlIENhc2VzPC9hPjwvbGk+PGxpIGNsYXNzPW5hdi1pdGVtPjxhIGNsYXNzPVwibmF2LWxpbmsgc2Nyb2xsXCIgdWktc3JlZj1hcHAubG9naW4+TG9naW48L2E+PC9saT48bGkgY2xhc3M9XCJuYXYtaXRlbSBteS1hdXRvXCI+PGEgb25jbGljaz1cInJldHVybiBndGFnX3JlcG9ydF9jb252ZXJzaW9uKFxcJ2h0dHBzOi8vY29tbXVuaXR5LmthdGFseW8uY29tL3NpZ251cFxcJyk7XCIgaHJlZj0vc2lnbnVwIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCI+U2lnbiB1cDwvYT48L2xpPjwvdWw+PGRpdiBjbGFzcz1cIm5hdmljb24ganMtdG9nZ2xlLW1vYmlsZS1uYXZcIj48YSBjbGFzcz1oYW1idXJnZXIgaHJlZj1qYXZhc2NyaXB0OnZvaWQoMCk7PjxzdmcgeG1sbnM9aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcgd2lkdGg9MjQgaGVpZ2h0PTI0IHZpZXdib3g9XCIwIDAgMjQgMjRcIiBmaWxsPW5vbmUgc3Ryb2tlPWN1cnJlbnRDb2xvciBzdHJva2Utd2lkdGg9MiBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49cm91bmQgY2xhc3M9XCJmZWF0aGVyIGZlYXRoZXItbWVudVwiPjxsaW5lIHgxPTMgeTE9MTIgeDI9MjEgeTI9MTI+PC9saW5lPjxsaW5lIHgxPTMgeTE9NiB4Mj0yMSB5Mj02PjwvbGluZT48bGluZSB4MT0zIHkxPTE4IHgyPTIxIHkyPTE4PjwvbGluZT48L3N2Zz48L2E+PC9kaXY+PC9oZWFkZXI+PHNlY3Rpb24gY2xhc3M9XCJzZWN0aW9uIGhlcm9cIj48ZGl2IGNsYXNzPXNlY3Rpb24taW50cm8+PGRpdiBjbGFzcz1jb250YWluZXI+PGRpdiBjbGFzcz1cInJvdyBuby1ndXR0ZXJzIGhlcm8tcm93IGZsZXgtY29sdW1uLXJldmVyc2UgZmxleC1tZC1yb3dcIj48ZGl2IGNsYXNzPVwiY29sLTI0IGNvbC1tZC0xMiB0ZXh0LWxlZnRcIj48aDEgY2xhc3M9XCJkaXNwbGF5LTEgdGV4dC1ibGFja1wiPldlbGNvbWUgdG8gS2F0YWx5byBjb21tdW5pdHkhPC9oMT48aDQgY2xhc3M9XCJmb250LXdlaWdodC1ub3JtYWwgbWItMVwiPkEgcGxhY2Ugd2hlcmUgY2l0aXplbiBkZXZlbG9wZXJzIHR1cm4gaWRlYXMgaW50byByZWFsaXR5LjwvaDQ+PGg0IGNsYXNzPVwiZm9udC13ZWlnaHQtbm9ybWFsIG1iLTVcIj5Kb2luIHRoZSBuby1jb2RlIHJldm9sdXRpb24gYW5kIGJ1aWxkIGFwcGxpY2F0aW9ucyB3aXRob3V0IHdyaXRpbmcgYSBzaW5nbGUgbGluZSBvZiBjb2RlLjwvaDQ+PGRpdiBjbGFzcz1cImluZm8tYmxvY2sgZC1ub25lIGQteGwtZmxleFwiPjxkaXYgY2xhc3M9aWNvbj48c3ZnIHdpZHRoPTY0IGhlaWdodD02NCB2aWV3Ym94PVwiMCAwIDMyIDMyXCIgZmlsbD1ub25lIHhtbG5zPWh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIGNsYXNzPWljb24+PHBhdGggZD1cIk0xOS4zMDQ3IDE3LjgyODFDMjEuMTAxNiAxNi41NzgxIDIyIDE0Ljg3ODkgMjIgMTIuNzMwNUMyMiAxMS4wMTE3IDIxLjM4NDggOS41MzcxMSAyMC4xNTQzIDguMzA2NjNDMTguOTIzOCA3LjA3NjE3IDE3LjQ0OTIgNi40NjA5MyAxNS43MzA1IDYuNDYwOTNDMTQuMDExNyA2LjQ2MDkzIDEyLjUzNzEgNy4wNzYxNyAxMS4zMDY2IDguMzA2NjNDMTAuMDc2MiA5LjUzNzEgOS40NjA5NCAxMS4wMTE3IDkuNDYwOTQgMTIuNzMwNUM5LjQ2MDk0IDE0Ljg3ODkgMTAuMzU5NCAxNi41NzgxIDEyLjE1NjIgMTcuODI4MUwxMy4yMTA5IDE4LjU4OThWMjEuNDYwOUgxOC4yNVYxOC41ODk4TDE5LjMwNDcgMTcuODI4MVpNOS41MTk1MyA2LjU3ODEyQzExLjIzODMgNC44NTkzNyAxMy4zMDg2IDQgMTUuNzMwNSA0QzE4LjE1MjMgNCAyMC4yMTI5IDQuODQ5NjEgMjEuOTEyMSA2LjU0ODgzQzIzLjYxMTMgOC4yNDgwNSAyNC40NjA5IDEwLjMwODYgMjQuNDYwOSAxMi43MzA1QzI0LjQ2MDkgMTUuNzc3MyAyMy4yMTA5IDE4LjE2MDIgMjAuNzEwOSAxOS44Nzg5VjIyLjc1QzIwLjcxMDkgMjMuMTAxNiAyMC41OTM3IDIzLjM5NDUgMjAuMzU5NCAyMy42Mjg5QzIwLjEyNSAyMy44NjMzIDE5LjgzMiAyMy45ODA1IDE5LjQ4MDUgMjMuOTgwNUgxMS45ODA1QzExLjYyODkgMjMuOTgwNSAxMS4zMzU5IDIzLjg2MzMgMTEuMTAxNiAyMy42Mjg5QzEwLjg2NzIgMjMuMzk0NSAxMC43NSAyMy4xMDE2IDEwLjc1IDIyLjc1VjE5Ljg3ODlDOC4yNSAxOC4xNjAyIDcgMTUuNzc3NCA3IDEyLjczMDVDNyAxMC4zMDg2IDcuODM5ODQgOC4yNTc4MiA5LjUxOTUzIDYuNTc4MTNMOS41MTk1MyA2LjU3ODEyWk0xMS45ODA1IDI3LjczMDRWMjYuNUgxOS40ODA1VjI3LjczMDRDMTkuNDgwNSAyOC4wODIgMTkuMzYzMyAyOC4zNzUgMTkuMTI4OSAyOC42MDkzQzE4Ljg5NDUgMjguODQzNyAxOC42MDE2IDI4Ljk2MDkgMTguMjUgMjguOTYwOUgxMy4yMTA5QzEyLjg1OTQgMjguOTYwOSAxMi41NjY0IDI4Ljg0MzcgMTIuMzMyIDI4LjYwOTNDMTIuMDk3NyAyOC4zNzUgMTEuOTgwNSAyOC4wODIgMTEuOTgwNSAyNy43MzA0SDExLjk4MDVaXCIgZmlsbD0jMzAyQ0U1PjwvcGF0aD48L3N2Zz48L2Rpdj48ZGl2PjxzdHJvbmc+SWYgeW91IGFyZSBhIGNpdGl6ZW4gZGV2ZWxvcGVyIHdpdGggYSBwYXNzaW9uIGZvciBXZWIzIHRyeSBpdCBub3chPC9zdHJvbmc+PGJyPlNpZ25pbmcgdXAgdG8gS2F0YWx5byBjb21tdW5pdHkgaXMgZnJlZSBhbmQgYWx3YXlzIHdpbGwgYmUhPC9kaXY+PGEgb25jbGljaz1cInJldHVybiBndGFnX3JlcG9ydF9jb252ZXJzaW9uKFxcJ2h0dHBzOi8vY29tbXVuaXR5LmthdGFseW8uY29tL3NpZ251cFxcJyk7XCIgaHJlZj0vc2lnbnVwIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCI+U2lnbiB1cCBub3chPC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJpbmZvLWJsb2NrIG10LTQgdGV4dC1jZW50ZXJcIj48ZGl2PjxzdHJvbmcgY2xhc3M9bXItND5BbHJlYWR5IGhhdmUgYW4gYWNjb3VudD88L3N0cm9uZz4gPGEgb25jbGljaz1cInJldHVybiBndGFnX3JlcG9ydF9jb252ZXJzaW9uKFxcJ2h0dHBzOi8vY29tbXVuaXR5LmthdGFseW8uY29tL3NpZ251cFxcJyk7XCIgdWktc3JlZj1hcHAubG9naW4gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIj5Mb2dpbjwvYT48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTI0IGNvbC1tZC0xMlwiPjxkaXYgY2xhc3M9aWxsdXN0cmF0aW9uLXdyYXA+PGltZyBjbGFzcz1pbWctZmx1aWQgc3JjPXt7Y29uZmlnLmRlcGxveWRpcn19e3tjb25maWcuY29tbXVuaXR5X2ltZ319IGFsdD1cIk1haW4gaW1hZ2Uga2F0YWx5byBjb21tdW5pdHlcIj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiaW5mby1ibG9jayBkLWZsZXggZC14bC1ub25lXCI+PGRpdiBjbGFzcz1pY29uPjxzdmcgd2lkdGg9NjQgaGVpZ2h0PTY0IHZpZXdib3g9XCIwIDAgMzIgMzJcIiBmaWxsPW5vbmUgeG1sbnM9aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcgY2xhc3M9aWNvbj48cGF0aCBkPVwiTTE5LjMwNDcgMTcuODI4MUMyMS4xMDE2IDE2LjU3ODEgMjIgMTQuODc4OSAyMiAxMi43MzA1QzIyIDExLjAxMTcgMjEuMzg0OCA5LjUzNzExIDIwLjE1NDMgOC4zMDY2M0MxOC45MjM4IDcuMDc2MTcgMTcuNDQ5MiA2LjQ2MDkzIDE1LjczMDUgNi40NjA5M0MxNC4wMTE3IDYuNDYwOTMgMTIuNTM3MSA3LjA3NjE3IDExLjMwNjYgOC4zMDY2M0MxMC4wNzYyIDkuNTM3MSA5LjQ2MDk0IDExLjAxMTcgOS40NjA5NCAxMi43MzA1QzkuNDYwOTQgMTQuODc4OSAxMC4zNTk0IDE2LjU3ODEgMTIuMTU2MiAxNy44MjgxTDEzLjIxMDkgMTguNTg5OFYyMS40NjA5SDE4LjI1VjE4LjU4OThMMTkuMzA0NyAxNy44MjgxWk05LjUxOTUzIDYuNTc4MTJDMTEuMjM4MyA0Ljg1OTM3IDEzLjMwODYgNCAxNS43MzA1IDRDMTguMTUyMyA0IDIwLjIxMjkgNC44NDk2MSAyMS45MTIxIDYuNTQ4ODNDMjMuNjExMyA4LjI0ODA1IDI0LjQ2MDkgMTAuMzA4NiAyNC40NjA5IDEyLjczMDVDMjQuNDYwOSAxNS43NzczIDIzLjIxMDkgMTguMTYwMiAyMC43MTA5IDE5Ljg3ODlWMjIuNzVDMjAuNzEwOSAyMy4xMDE2IDIwLjU5MzcgMjMuMzk0NSAyMC4zNTk0IDIzLjYyODlDMjAuMTI1IDIzLjg2MzMgMTkuODMyIDIzLjk4MDUgMTkuNDgwNSAyMy45ODA1SDExLjk4MDVDMTEuNjI4OSAyMy45ODA1IDExLjMzNTkgMjMuODYzMyAxMS4xMDE2IDIzLjYyODlDMTAuODY3MiAyMy4zOTQ1IDEwLjc1IDIzLjEwMTYgMTAuNzUgMjIuNzVWMTkuODc4OUM4LjI1IDE4LjE2MDIgNyAxNS43Nzc0IDcgMTIuNzMwNUM3IDEwLjMwODYgNy44Mzk4NCA4LjI1NzgyIDkuNTE5NTMgNi41NzgxM0w5LjUxOTUzIDYuNTc4MTJaTTExLjk4MDUgMjcuNzMwNFYyNi41SDE5LjQ4MDVWMjcuNzMwNEMxOS40ODA1IDI4LjA4MiAxOS4zNjMzIDI4LjM3NSAxOS4xMjg5IDI4LjYwOTNDMTguODk0NSAyOC44NDM3IDE4LjYwMTYgMjguOTYwOSAxOC4yNSAyOC45NjA5SDEzLjIxMDlDMTIuODU5NCAyOC45NjA5IDEyLjU2NjQgMjguODQzNyAxMi4zMzIgMjguNjA5M0MxMi4wOTc3IDI4LjM3NSAxMS45ODA1IDI4LjA4MiAxMS45ODA1IDI3LjczMDRIMTEuOTgwNVpcIiBmaWxsPSMzMDJDRTU+PC9wYXRoPjwvc3ZnPjwvZGl2PjxkaXY+PHN0cm9uZz5JZiB5b3UgYXJlIGEgY2l0aXplbiBkZXZlbG9wZXIgd2l0aCBhIHBhc3Npb24gZm9yIFdlYjMgdHJ5IGl0IG5vdyE8L3N0cm9uZz48YnI+U2lnbnVwIG5vdyEgU2lnbmluZyB1cCB0byBLYXRhbHlvIGNvbW11bml0eSBpcyBmcmVlIGFuZCBhbHdheXMgd2lsbCBiZSE8L2Rpdj48YSBocmVmPS9zaWdudXAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIj5TaWduIHVwIG5vdyE8L2E+PC9kaXY+PC9kaXY+PC9kaXY+PC9zZWN0aW9uPjxmb290ZXIgaWQ9Zm9vdGVyIGNsYXNzPVwibWFpbi1mb290ZXIgbWItbjVcIj48ZGl2IGNsYXNzPXNlY3Rpb24+PGRpdiBjbGFzcz1cImNvbnRhaW5lciBuby1ndXR0ZXJzXCI+PGRpdiBjbGFzcz1yb3c+PGRpdiBjbGFzcz1cImNvbC1tZC0xNCBjb2wteGwtMTNcIj48ZGl2IGNsYXNzPVwic2VjdGlvbi10aXRsZSB0ZXh0LXN1Y2Nlc3NcIj5Db250YWN0IFVzPC9kaXY+PGZvcm0gaWQ9c2VuZC1tc2ctZm9ybSBtZXRob2Q9UE9TVCBjbGFzcz1mb3JtPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWNzcmZtaWRkbGV3YXJldG9rZW4gdmFsdWU9SHRob0dKQWN4eExINzY0Tm53STJselBxUnYzTk5mcFo4MXBLZVg4TDRkTm92Z3dhNHBuZldTVEtxanIzS1RKaT48ZGl2IGNsYXNzPWZvcm0tZ3JvdXA+PGxhYmVsIGZvcj1GdWxsTmFtZT5OYW1lPC9sYWJlbD4gPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbFwiIHR5cGU9dGV4dCBuYW1lPW5hbWUgaWQ9RnVsbE5hbWUgcGxhY2Vob2xkZXI9XCJFbnRlciBmdWxsIG5hbWVcIj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXA+PGxhYmVsIGZvcj1JbnB1dEVtYWlsPkVtYWlsIGFkZHJlc3M8L2xhYmVsPiA8aW5wdXQgdHlwZT1lbWFpbCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2xcIiBpZD1JbnB1dEVtYWlsIG5hbWU9ZW1haWwgYXJpYS1kZXNjcmliZWRieT1lbWFpbEhlbHAgcGxhY2Vob2xkZXI9XCJFbnRlciBlbWFpbCBhZGRyZXNzXCI+IDxzbWFsbCBpZD1lbWFpbEhlbHAgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1saWdodFwiIHN0eWxlPVwib3BhY2l0eTogLjM7IG1hcmdpbi1sZWZ0OiA0cHg7XCI+V2VcXCdsbCBuZXZlciBzaGFyZSB5b3VyIGVtYWlsIHdpdGggYW55b25lIGVsc2UuPC9zbWFsbD48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXA+PGxhYmVsIGZvcj1NZXNzYWdlPk1lc3NhZ2U8L2xhYmVsPiA8dGV4dGFyZWEgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sXCIgaWQ9TWVzc2FnZSBuYW1lPW1lc3NhZ2Ugcm93cz02IHBsYWNlaG9sZGVyPVwiRW50ZXIgbWVzc2FnZVwiPjwvdGV4dGFyZWE+PC9kaXY+PGRpdiBjbGFzcz1jdGE+PGJ1dHRvbiB0eXBlPXN1Ym1pdCBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tbGcgbWItNSBkLWlubGluZS1ibG9ja1wiPjxzdmcgd2lkdGg9MjQgYXJpYS1oaWRkZW49dHJ1ZSBmb2N1c2FibGU9ZmFsc2UgZGF0YS1wcmVmaXg9ZmFiIGRhdGEtaWNvbj10ZWxlZ3JhbS1wbGFuZSBjbGFzcz1cInN2Zy1pbmxpbmUtLWZhIGZhLXRlbGVncmFtLXBsYW5lIGZhLXctMTRcIiByb2xlPWltZyB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyB2aWV3Ym94PVwiMCAwIDQ0OCA1MTJcIj48cGF0aCBmaWxsPWN1cnJlbnRDb2xvciBkPVwiTTQ0Ni43IDk4LjZsLTY3LjYgMzE4LjhjLTUuMSAyMi41LTE4LjQgMjguMS0zNy4zIDE3LjVsLTEwMy03NS45LTQ5LjcgNDcuOGMtNS41IDUuNS0xMC4xIDEwLjEtMjAuNyAxMC4xbDcuNC0xMDQuOSAxOTAuOS0xNzIuNWM4LjMtNy40LTEuOC0xMS41LTEyLjktNC4xTDExNy44IDI4NCAxNi4yIDI1Mi4yYy0yMi4xLTYuOS0yMi41LTIyLjEgNC42LTMyLjdMNDE4LjIgNjYuNGMxOC40LTYuOSAzNC41IDQuMSAyOC41IDMyLjJ6XCI+PC9wYXRoPjwvc3ZnPjxzcGFuIGNsYXNzPW1sLTI+U2VuZCBtZXNzYWdlPC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgaWQ9c3Bpbm5lciBjbGFzcz1cImxvYWRlciBzcGlubmVyXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPjwvZGl2PjxiIGlkPXNwaW5uZXJUeHQgY2xhc3M9c3Bpbm5lciBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IGNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IGRpc3BsYXk6IG5vbmU7XCI+Jm5ic3A7Jm5ic3A7IFNlbmRpbmcgbWVzc2FnZS4uLjwvYj48ZGl2IGlkPXJlc3VsdHM+PC9kaXY+PC9mb3JtPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbWQtOCBvZmZzZXQtbWQtMiBvZmZzZXQteGwtM1wiPjx1bCBjbGFzcz1uYXY+PGxpIGNsYXNzPW5hdi1pdGVtPjxhIGhyZWY9I2hlYWRlciBjbGFzcz1cIm5hdi1saW5rIHNjcm9sbFwiPkhvbWU8L2E+PC9saT48bGkgY2xhc3M9bmF2LWl0ZW0+PGEgaHJlZj1odHRwczovL3d3dy5rYXRhbHlvLmNvbS8jZmVhdHVyZXMgY2xhc3M9XCJuYXYtbGluayBzY3JvbGxcIj5GZWF0dXJlczwvYT48L2xpPjxsaSBjbGFzcz1uYXYtaXRlbT48YSBocmVmPWh0dHBzOi8vd3d3LmthdGFseW8uY29tLyNibG9ja2NoYWluIGNsYXNzPVwibmF2LWxpbmsgc2Nyb2xsXCI+V2ViMzwvYT48L2xpPjxsaSBjbGFzcz1uYXYtaXRlbT48YSBocmVmPWh0dHBzOi8vd3d3LmthdGFseW8uY29tLyNob3ctaXQtd29ya3MgY2xhc3M9XCJuYXYtbGluayBzY3JvbGxcIj5Ib3cgaXQgd29ya3M8L2E+PC9saT48bGkgY2xhc3M9bmF2LWl0ZW0+PGEgaHJlZj1odHRwczovL3d3dy5rYXRhbHlvLmNvbS8jdXNlLWNhc2VzIGNsYXNzPVwibmF2LWxpbmsgc2Nyb2xsXCI+VXNlIENhc2VzPC9hPjwvbGk+PGxpIGNsYXNzPW5hdi1pdGVtPjxhIGhyZWY9L25tL3B1YmxpYy8xL3ByaXZhY3kgY2xhc3M9bmF2LWxpbms+UHJpdmFjeSBwb2xpY3k8L2E+PC9saT48bGkgY2xhc3M9bmF2LWl0ZW0+PGEgaHJlZj0vbm0vcHVibGljLzEvdGVybXMgY2xhc3M9bmF2LWxpbms+VGVybXMgJmFtcDsgY29uZGl0aW9uczwvYT48L2xpPjxsaSBjbGFzcz1uYXYtaXRlbT48YSBocmVmPVwiamF2YXNjcmlwdDpzaG93Q29va2llKFxcJ25vbmVcXCcsIFxcJ2Jsb2NrXFwnLCBcXCdub25lXFwnKTtcIiBjbGFzcz1uYXYtbGluaz5Db29raWUgY29udHJvbDwvYT48L2xpPjwvdWw+PGRpdiBjbGFzcz1zb2NpYWwtaWNvbnM+PGRpdiBjbGFzcz1cImNvbCBwLTBcIj48YSBocmVmPW1haWx0bzppbmZvKGF0KWthdGFseW8uY29tIHRpdGxlPWUtbWFpbD48c3ZnIHdpZHRoPTI0IGFyaWEtaGlkZGVuPXRydWUgZm9jdXNhYmxlPWZhbHNlIGRhdGEtcHJlZml4PWZhcyBkYXRhLWljb249ZW52ZWxvcGUgY2xhc3M9XCJzdmctaW5saW5lLS1mYSBmYS1lbnZlbG9wZSBmYS13LTE2XCIgcm9sZT1pbWcgeG1sbnM9aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcgdmlld2JveD1cIjAgMCA1MTIgNTEyXCI+PHBhdGggZmlsbD1jdXJyZW50Q29sb3IgZD1cIk01MDIuMyAxOTAuOGMzLjktMy4xIDkuNy0uMiA5LjcgNC43VjQwMGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTk1LjZjMC01IDUuNy03LjggOS43LTQuNyAyMi40IDE3LjQgNTIuMSAzOS41IDE1NC4xIDExMy42IDIxLjEgMTUuNCA1Ni43IDQ3LjggOTIuMiA0Ny42IDM1LjcuMyA3Mi0zMi44IDkyLjMtNDcuNiAxMDItNzQuMSAxMzEuNi05Ni4zIDE1NC0xMTMuN3pNMjU2IDMyMGMyMy4yLjQgNTYuNi0yOS4yIDczLjQtNDEuNCAxMzIuNy05Ni4zIDE0Mi44LTEwNC43IDE3My40LTEyOC43IDUuOC00LjUgOS4yLTExLjUgOS4yLTE4Ljl2LTE5YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjE5YzAgNy40IDMuNCAxNC4zIDkuMiAxOC45IDMwLjYgMjMuOSA0MC43IDMyLjQgMTczLjQgMTI4LjcgMTYuOCAxMi4yIDUwLjIgNDEuOCA3My40IDQxLjR6XCI+PC9wYXRoPjwvc3ZnPjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIHAtMFwiPjxhIGhyZWY9XCJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tcGFueS9rYXRhbHlvL1wiIHRpdGxlPWxpbmtlZGluPjxzdmcgd2lkdGg9MjQgYXJpYS1oaWRkZW49dHJ1ZSBmb2N1c2FibGU9ZmFsc2UgZGF0YS1wcmVmaXg9ZmFiIGRhdGEtaWNvbj1saW5rZWRpbiBjbGFzcz1cInN2Zy1pbmxpbmUtLWZhIGZhLWxpbmtlZGluIGZhLXctMTRcIiByb2xlPWltZyB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyB2aWV3Ym94PVwiMCAwIDQ0OCA1MTJcIj48cGF0aCBmaWxsPWN1cnJlbnRDb2xvciBkPVwiTTQxNiAzMkgzMS45QzE0LjMgMzIgMCA0Ni41IDAgNjQuM3YzODMuNEMwIDQ2NS41IDE0LjMgNDgwIDMxLjkgNDgwSDQxNmMxNy42IDAgMzItMTQuNSAzMi0zMi4zVjY0LjNjMC0xNy44LTE0LjQtMzIuMy0zMi0zMi4zek0xMzUuNCA0MTZINjlWMjAyLjJoNjYuNVY0MTZ6bS0zMy4yLTI0M2MtMjEuMyAwLTM4LjUtMTcuMy0zOC41LTM4LjVTODAuOSA5NiAxMDIuMiA5NmMyMS4yIDAgMzguNSAxNy4zIDM4LjUgMzguNSAwIDIxLjMtMTcuMiAzOC41LTM4LjUgMzguNXptMjgyLjEgMjQzaC02Ni40VjMxMmMwLTI0LjgtLjUtNTYuNy0zNC41LTU2LjctMzQuNiAwLTM5LjkgMjctMzkuOSA1NC45VjQxNmgtNjYuNFYyMDIuMmg2My43djI5LjJoLjljOC45LTE2LjggMzAuNi0zNC41IDYyLjktMzQuNSA2Ny4yIDAgNzkuNyA0NC4zIDc5LjcgMTAxLjlWNDE2elwiPjwvcGF0aD48L3N2Zz48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCBwLTBcIj48YSBocmVmPWh0dHBzOi8vdHdpdHRlci5jb20va2F0YWx5byB0aXRsZT10d2l0dGVyPjxzdmcgd2lkdGg9MjQgYXJpYS1oaWRkZW49dHJ1ZSBmb2N1c2FibGU9ZmFsc2UgZGF0YS1wcmVmaXg9ZmFiIGRhdGEtaWNvbj10d2l0dGVyLXNxdWFyZSBjbGFzcz1cInN2Zy1pbmxpbmUtLWZhIGZhLXR3aXR0ZXItc3F1YXJlIGZhLXctMTRcIiByb2xlPWltZyB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyB2aWV3Ym94PVwiMCAwIDQ0OCA1MTJcIj48cGF0aCBmaWxsPWN1cnJlbnRDb2xvciBkPVwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS00OC45IDE1OC44Yy4yIDIuOC4yIDUuNy4yIDguNSAwIDg2LjctNjYgMTg2LjYtMTg2LjYgMTg2LjYtMzcuMiAwLTcxLjctMTAuOC0xMDAuNy0yOS40IDUuMy42IDEwLjQuOCAxNS44LjggMzAuNyAwIDU4LjktMTAuNCA4MS40LTI4LTI4LjgtLjYtNTMtMTkuNS02MS4zLTQ1LjUgMTAuMSAxLjUgMTkuMiAxLjUgMjkuNi0xLjItMzAtNi4xLTUyLjUtMzIuNS01Mi41LTY0LjR2LS44YzguNyA0LjkgMTguOSA3LjkgMjkuNiA4LjNhNjUuNDQ3IDY1LjQ0NyAwIDAgMS0yOS4yLTU0LjZjMC0xMi4yIDMuMi0yMy40IDguOS0zMy4xIDMyLjMgMzkuOCA4MC44IDY1LjggMTM1LjIgNjguNi05LjMtNDQuNSAyNC04MC42IDY0LTgwLjYgMTguOSAwIDM1LjkgNy45IDQ3LjkgMjAuNyAxNC44LTIuOCAyOS04LjMgNDEuNi0xNS44LTQuOSAxNS4yLTE1LjIgMjgtMjguOCAzNi4xIDEzLjItMS40IDI2LTUuMSAzNy44LTEwLjItOC45IDEzLjEtMjAuMSAyNC43LTMyLjkgMzR6XCI+PC9wYXRoPjwvc3ZnPjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIHAtMFwiPjxhIGhyZWY9aHR0cHM6Ly90Lm1lL2thdGFseW8gdGl0bGU9dGVsZWdyYW0+PHN2ZyB3aWR0aD0yNCBhcmlhLWhpZGRlbj10cnVlIGZvY3VzYWJsZT1mYWxzZSBkYXRhLXByZWZpeD1mYWIgZGF0YS1pY29uPXRlbGVncmFtLXBsYW5lIGNsYXNzPVwic3ZnLWlubGluZS0tZmEgZmEtdGVsZWdyYW0tcGxhbmUgZmEtdy0xNFwiIHJvbGU9aW1nIHhtbG5zPWh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIHZpZXdib3g9XCIwIDAgNDQ4IDUxMlwiPjxwYXRoIGZpbGw9Y3VycmVudENvbG9yIGQ9XCJNNDQ2LjcgOTguNmwtNjcuNiAzMTguOGMtNS4xIDIyLjUtMTguNCAyOC4xLTM3LjMgMTcuNWwtMTAzLTc1LjktNDkuNyA0Ny44Yy01LjUgNS41LTEwLjEgMTAuMS0yMC43IDEwLjFsNy40LTEwNC45IDE5MC45LTE3Mi41YzguMy03LjQtMS44LTExLjUtMTIuOS00LjFMMTE3LjggMjg0IDE2LjIgMjUyLjJjLTIyLjEtNi45LTIyLjUtMjIuMSA0LjYtMzIuN0w0MTguMiA2Ni40YzE4LjQtNi45IDM0LjUgNC4xIDI4LjUgMzIuMnpcIj48L3BhdGg+PC9zdmc+PC9hPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pjxocj48ZGl2IGNsYXNzPWFjdGlvbi1iYXI+PHNwYW4+Q29weXJpZ2h0IFxceEE5IEthdGFseW8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9zcGFuPjwvZGl2PjwvZm9vdGVyPjwvZGl2PjxzY3JpcHQ+XFxyXFxuICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe1xcclxcbiAgXFxyXFxuICBcXHJcXG4gICQoIFwiLmhhbWJ1cmdlclwiICkub24oIFwiY2xpY2tcIiwgZnVuY3Rpb24oKSB7XFxyXFxuICAgICAgICAkKCBcIi5tb2JpbGUtbmF2XCIgKS50b2dnbGVDbGFzcyggXCJkLW5vbmVcIiwgMTAwMCApO1xcclxcbiAgICAvKlxcclxcbiAgICB2YXIgeCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibXlMaW5rc1wiKTtcXHJcXG4gICAgaWYgKHguc3R5bGUuZGlzcGxheSA9PT0gXCJibG9ja1wiKSB7XFxyXFxuICAgICAgeC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XFxyXFxuICAgIH0gZWxzZSB7XFxyXFxuICAgICAgeC5zdHlsZS5kaXNwbGF5ID0gXCJibG9ja1wiO1xcclxcbiAgICB9Ki9cXHJcXG4gICAgICB9KTtcXHJcXG4gICQoIFwiLm1vYmlsZS1uYXYgLnNjcm9sbFwiICkub24oIFwiY2xpY2tcIiwgZnVuY3Rpb24oKSB7XFxyXFxuICAgICAgICAkKCBcIi5tb2JpbGUtbmF2XCIgKS5hZGRDbGFzcyggXCJkLW5vbmVcIiwgMTAwMCApO1xcclxcbiAgICAgIH0pO1xcclxcbiAgICAkKFxcJ1tkYXRhLXRvZ2dsZT1cInRvb2x0aXBcIl1cXCcpLnRvb2x0aXAoKTtcXHJcXG4gICAgXFxyXFxuICAkKFxcJy5zcGlubmVyXFwnKS5oaWRlKCk7ICBcXHJcXG4gICAkKFxcJyNzZW5kLW1zZy1mb3JtXFwnKS5vbihcXCdzdWJtaXRcXCcsIGZ1bmN0aW9uKGV2ZW50KXtcXHJcXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xcclxcbiAgICAgLy8gY29uc29sZS5sb2coXCJmb3JtIHN1Ym1pdHRlZCFcIikgIC8vIHNhbml0eSBjaGVja1xcclxcbiAgICAgdmFyIGVycm9yID0gZmFsc2U7XFxyXFxuICAgICAvL2NoZWNrIGlmIGFsbCBmaWVsZHMgYXJlIHBvcHVsYXRlZFxcclxcbiAgICBcXHJcXG4gICAgIC8vY2hlY2sgaWYgZS1tYWlsIGlzIG9rXFxyXFxuICAgICBpZiAoJChcXCcjRnVsbE5hbWVcXCcpLnZhbCgpLnRyaW0oKT09XCJcIilcXHJcXG4gICAgIHtcXHJcXG4gICAgICBlcnJvciA9IHRydWU7XFxyXFxuICAgICAgJChcXCcjcmVzdWx0c1xcJykuaHRtbChcIjxkaXYgY2xhc3M9XFwnYWxlcnQgYWxlcnQtd2FybmluZyBhbGVydC1kaXNtaXNzaWJsZVxcJyByb2xlPVxcJ2FsZXJ0XFwnPlBsZWFzZSBlbnRlciB5b3VyIG5hbWUgPGJ1dHRvbiB0eXBlPVxcJ2J1dHRvblxcJyBjbGFzcz1cXCdjbG9zZVxcJyBkYXRhLWRpc21pc3M9XFwnYWxlcnRcXCcgYXJpYS1sYWJlbD1cXCdDbG9zZVxcJz48c3BhbiBhcmlhLWhpZGRlbj1cXCd0cnVlXFwnPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+PC9kaXY+XCIpO1xcclxcbiAgICAgIFxcclxcbiAgICAgfVxcclxcbiAgICAgaWYgKCQoXFwnI0lucHV0RW1haWxcXCcpLnZhbCgpLnRyaW0oKT09XCJcIiAmJiAhZXJyb3IpXFxyXFxuICAgICB7XFxyXFxuICAgICAgZXJyb3IgPSB0cnVlO1xcclxcbiAgICAgICQoXFwnI3Jlc3VsdHNcXCcpLmh0bWwoXCI8ZGl2IGNsYXNzPVxcJ2FsZXJ0IGFsZXJ0LXdhcm5pbmcgYWxlcnQtZGlzbWlzc2libGVcXCcgcm9sZT1cXCdhbGVydFxcJz5QbGVhc2UgZW50ZXIgeW91ciBlbWFpbCA8YnV0dG9uIHR5cGU9XFwnYnV0dG9uXFwnIGNsYXNzPVxcJ2Nsb3NlXFwnIGRhdGEtZGlzbWlzcz1cXCdhbGVydFxcJyBhcmlhLWxhYmVsPVxcJ0Nsb3NlXFwnPjxzcGFuIGFyaWEtaGlkZGVuPVxcJ3RydWVcXCc+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj48L2Rpdj5cIik7XFxyXFxuICAgICAgXFxyXFxuICAgICB9XFxyXFxuICAgICAgaWYgKCQoXFwnI01lc3NhZ2VcXCcpLnZhbCgpLnRyaW0oKT09XCJcIiAmJiAhZXJyb3IpXFxyXFxuICAgICB7XFxyXFxuICAgICAgZXJyb3IgPSB0cnVlO1xcclxcbiAgICAgICQoXFwnI3Jlc3VsdHNcXCcpLmh0bWwoXCI8ZGl2IGNsYXNzPVxcJ2FsZXJ0IGFsZXJ0LXdhcm5pbmcgYWxlcnQtZGlzbWlzc2libGVcXCcgcm9sZT1cXCdhbGVydFxcJz5QbGVhc2UgZW50ZXIgbWVzc2FnZSA8YnV0dG9uIHR5cGU9XFwnYnV0dG9uXFwnIGNsYXNzPVxcJ2Nsb3NlXFwnIGRhdGEtZGlzbWlzcz1cXCdhbGVydFxcJyBhcmlhLWxhYmVsPVxcJ0Nsb3NlXFwnPjxzcGFuIGFyaWEtaGlkZGVuPVxcJ3RydWVcXCc+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj48L2Rpdj5cIik7XFxyXFxuICAgICAgXFxyXFxuICAgICB9XFxyXFxuICAgICBpZiAoIWVycm9yKSBzZW5kX21zZygpO1xcclxcbiAgICB9KTtcXHJcXG4gICBcXHJcXG4gICAvLyBBSkFYIGZvciBwb3N0aW5nXFxyXFxuZnVuY3Rpb24gc2VuZF9tc2coKSB7XFxyXFxuICAgIC8vY29uc29sZS5sb2coXCJjcmVhdGUgcG9zdCBpcyB3b3JraW5nIVwiKSAvLyBzYW5pdHkgY2hlY2tcXHJcXG4gICAgICQoXFwnI3NwaW5uZXJcXCcpLnNob3coKTtcXHJcXG4gICAgJC5hamF4KHtcXHJcXG4gICAgICAgIHVybCA6IFwiaHR0cHM6Ly9jb21tdW5pdHktYXBpLmthdGFseW8uY29tL2FwaS9zZW5kX21zZy9cIiwgLy8gdGhlIGVuZHBvaW50IC0gY2hhbmdlIHRoaXMgdG8gdGFzayBhdCBzb21lIHBvaW50XFxyXFxuICAgICAgICB0eXBlIDogXCJQT1NUXCIsIC8vIGh0dHAgbWV0aG9kXFxyXFxuICAgICAgICBkYXRhIDogeyBuYW1lIDogJChcXCcjRnVsbE5hbWVcXCcpLnZhbCgpLCBlbWFpbDogJChcXCcjSW5wdXRFbWFpbFxcJykudmFsKCksbXNnOiAkKFxcJyNNZXNzYWdlXFwnKS52YWwoKX0sIC8vIGRhdGEgc2VudCB3aXRoIHRoZSBwb3N0IHJlcXVlc3RcXHJcXG5cXHJcXG4gICAgICAgIC8vIGhhbmRsZSBhIHN1Y2Nlc3NmdWwgcmVzcG9uc2VcXHJcXG4gICAgICAgIHN1Y2Nlc3MgOiBmdW5jdGlvbihqc29uKSB7XFxyXFxuICAgICAgICAgICAgJChcXCcjRnVsbE5hbWVcXCcpLnZhbChcXCdcXCcpOyAvLyByZW1vdmUgdGhlIHZhbHVlIGZyb20gdGhlIGlucHV0XFxyXFxuICAgICAgICAgICAgJChcXCcjSW5wdXRFbWFpbFxcJykudmFsKFxcJ1xcJyk7IC8vIHJlbW92ZSB0aGUgdmFsdWUgZnJvbSB0aGUgaW5wdXRcXHJcXG4gICAgICAgICAgICAkKFxcJyNNZXNzYWdlXFwnKS52YWwoXFwnXFwnKTsgLy8gcmVtb3ZlIHRoZSB2YWx1ZSBmcm9tIHRoZSBpbnB1dFxcclxcbiAgICAgICAgICAgICQoXFwnLnNwaW5uZXJcXCcpLmhpZGUoKTsgICAgIFxcclxcbiAgICAgICAgICAgICQoXFwnI3Jlc3VsdHNcXCcpLmh0bWwoXCI8ZGl2IGNsYXNzPVxcJ2FsZXJ0IGFsZXJ0LXN1Y2Nlc3MgYWxlcnQtZGlzbWlzc2libGVcXCcgcm9sZT1cXCdhbGVydFxcJz5cIitqc29uLnJlc3VsdCsgXCI8YnV0dG9uIHR5cGU9XFwnYnV0dG9uXFwnIGNsYXNzPVxcJ2Nsb3NlXFwnIGRhdGEtZGlzbWlzcz1cXCdhbGVydFxcJyBhcmlhLWxhYmVsPVxcJ0Nsb3NlXFwnPjxzcGFuIGFyaWEtaGlkZGVuPVxcJ3RydWVcXCc+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj48L2Rpdj5cIik7XFxyXFxuICAgICAgXFxyXFxuICAgICAgICB9LFxcclxcblxcclxcbiAgICAgICAgLy8gaGFuZGxlIGEgbm9uLXN1Y2Nlc3NmdWwgcmVzcG9uc2VcXHJcXG4gICAgICAgIGVycm9yIDogZnVuY3Rpb24oeGhyLGVycm1zZyxlcnIpIHtcXHJcXG4gICAgICAgICAgICAkKFxcJy5zcGlubmVyXFwnKS5oaWRlKCk7XFxyXFxuICAgICAgICAgICAgJChcXCcjcmVzdWx0c1xcJykuaHRtbChcIjxkaXYgY2xhc3M9XFwnYWxlcnQgYWxlcnQtZGFuZ2VyIGFsZXJ0LWRpc21pc3NpYmxlXFwnIHJvbGU9XFwnYWxlcnRcXCc+T29wcyEgV2UgaGF2ZSBlbmNvdW50ZXJlZCBhbiBlcnJvcjogXCIrZXJybXNnK1xcclxcbiAgICAgICAgICAgICAgICBcIiAgPGJ1dHRvbiB0eXBlPVxcJ2J1dHRvblxcJyBjbGFzcz1cXCdjbG9zZVxcJyBkYXRhLWRpc21pc3M9XFwnYWxlcnRcXCcgYXJpYS1sYWJlbD1cXCdDbG9zZVxcJz48c3BhbiBhcmlhLWhpZGRlbj1cXCd0cnVlXFwnPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+PC9kaXY+XCIpOyAvLyBhZGQgdGhlIGVycm9yIHRvIHRoZSBkb21cXHJcXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKHhoci5zdGF0dXMgKyBcIjogXCIgKyB4aHIucmVzcG9uc2VUZXh0KTsgLy8gcHJvdmlkZSBhIGJpdCBtb3JlIGluZm8gYWJvdXQgdGhlIGVycm9yIHRvIHRoZSBjb25zb2xlXFxyXFxuICAgICAgICB9XFxyXFxuICAgIH0pO1xcclxcbn07XFxyXFxuXFxyXFxuJChmdW5jdGlvbigpIHtcXHJcXG5cXHJcXG4gIGZ1bmN0aW9uIGNsaWNrSGFtYnVyZ2VyKCkge1xcclxcbiAgICB2YXIgeCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibXlMaW5rc1wiKTtcXHJcXG4gICAgaWYgKHguc3R5bGUuZGlzcGxheSA9PT0gXCJibG9ja1wiKSB7XFxyXFxuICAgIHguc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xcclxcbiAgICB9IGVsc2Uge1xcclxcbiAgICB4LnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG4gIFxcclxcbiAgXFxyXFxuICAgLy8gVmFuaWxsYSBKYXZhU2NyaXB0IFNjcm9sbCB0byBBbmNob3JcXHJcXG4gICAgLy8gQCBodHRwczovL3BlcmlzaGFibGVwcmVzcy5jb20vdmFuaWxsYS1qYXZhc2NyaXB0LXNjcm9sbC1hbmNob3IvXFxyXFxuICAgXFxyXFxuICAgIGZ1bmN0aW9uIHNjcm9sbFRvKCkge1xcclxcbiAgICAgIGNvbnN0IGxpbmtzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcXCcuc2Nyb2xsXFwnKTtcXHJcXG4gICAgICBsaW5rcy5mb3JFYWNoKGVhY2ggPT4gKGVhY2gub25jbGljayA9IHNjcm9sbEFuY2hvcnMpKTtcXHJcXG4gICAgfVxcclxcbiAgICBmdW5jdGlvbiBzY3JvbGxBbmNob3JzKGUsIHJlc3BvbmQgPSBudWxsKSB7XFxyXFxuICAgICAgY29uc3QgZGlzdGFuY2VUb1RvcCA9IGVsID0+IE1hdGguZmxvb3IoZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wKTtcXHJcXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XFxyXFxuICAgICAgdmFyIHRhcmdldElEID0gKHJlc3BvbmQpID8gcmVzcG9uZC5nZXRBdHRyaWJ1dGUoXFwnaHJlZlxcJykgOiB0aGlzLmdldEF0dHJpYnV0ZShcXCdocmVmXFwnKTtcXHJcXG4gICAgICBjb25zdCB0YXJnZXRBbmNob3IgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldElEKTtcXHJcXG4gICAgICBpZiAoIXRhcmdldEFuY2hvcikgcmV0dXJuO1xcclxcbiAgICAgIGNvbnN0IG9yaWdpbmFsVG9wID0gZGlzdGFuY2VUb1RvcCh0YXJnZXRBbmNob3IpO1xcclxcbiAgICAgIHdpbmRvdy5zY3JvbGxCeSh7IHRvcDogb3JpZ2luYWxUb3AsIGxlZnQ6IDAsIGJlaGF2aW9yOiBcXCdzbW9vdGhcXCcgfSk7XFxyXFxuICAgICAgY29uc3QgY2hlY2tJZkRvbmUgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHtcXHJcXG4gICAgICAgIGNvbnN0IGF0Qm90dG9tID0gd2luZG93LmlubmVySGVpZ2h0ICsgd2luZG93LnBhZ2VZT2Zmc2V0ID49IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0IC0gMjtcXHJcXG4gICAgICAgIGlmIChkaXN0YW5jZVRvVG9wKHRhcmdldEFuY2hvcikgPT09IDAgfHwgYXRCb3R0b20pIHtcXHJcXG4gICAgICAgICAgdGFyZ2V0QW5jaG9yLnRhYkluZGV4ID0gXFwnLTFcXCc7XFxyXFxuICAgICAgICAgIHRhcmdldEFuY2hvci5mb2N1cygpO1xcclxcbiAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoXFwnXFwnLCBcXCdcXCcsIHRhcmdldElEKTtcXHJcXG4gICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lmRG9uZSk7XFxyXFxuICAgICAgfVxcclxcbiAgICAgIH0sIDEwMCk7XFxyXFxuICAgIH1cXHJcXG4gIFxcclxcbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGdldHMgY29va2llIHdpdGggYSBnaXZlbiBuYW1lXFxyXFxuICAgIGZ1bmN0aW9uIGdldENvb2tpZShuYW1lKSB7XFxyXFxuICAgICAgICB2YXIgY29va2llVmFsdWUgPSBudWxsO1xcclxcbiAgICAgICAgaWYgKGRvY3VtZW50LmNvb2tpZSAmJiBkb2N1bWVudC5jb29raWUgIT0gXFwnXFwnKSB7XFxyXFxuICAgICAgICAgICAgdmFyIGNvb2tpZXMgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoXFwnO1xcJyk7XFxyXFxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb29raWVzLmxlbmd0aDsgaSsrKSB7XFxyXFxuICAgICAgICAgICAgICAgIHZhciBjb29raWUgPSBqUXVlcnkudHJpbShjb29raWVzW2ldKTtcXHJcXG4gICAgICAgICAgICAgICAgLy8gRG9lcyB0aGlzIGNvb2tpZSBzdHJpbmcgYmVnaW4gd2l0aCB0aGUgbmFtZSB3ZSB3YW50P1xcclxcbiAgICAgICAgICAgICAgICBpZiAoY29va2llLnN1YnN0cmluZygwLCBuYW1lLmxlbmd0aCArIDEpID09IChuYW1lICsgXFwnPVxcJykpIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGNvb2tpZVZhbHVlID0gZGVjb2RlVVJJQ29tcG9uZW50KGNvb2tpZS5zdWJzdHJpbmcobmFtZS5sZW5ndGggKyAxKSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXHJcXG4gICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgIH1cXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgIHJldHVybiBjb29raWVWYWx1ZTtcXHJcXG4gICAgfVxcclxcbiAgICB2YXIgY3NyZnRva2VuID0gZ2V0Q29va2llKFxcJ2NzcmZ0b2tlblxcJyk7XFxyXFxuXFxyXFxuICAgIC8qXFxyXFxuICAgIFRoZSBmdW5jdGlvbnMgYmVsb3cgd2lsbCBjcmVhdGUgYSBoZWFkZXIgd2l0aCBjc3JmdG9rZW5cXHJcXG4gICAgKi9cXHJcXG5cXHJcXG4gICAgZnVuY3Rpb24gY3NyZlNhZmVNZXRob2QobWV0aG9kKSB7XFxyXFxuICAgICAgICAvLyB0aGVzZSBIVFRQIG1ldGhvZHMgZG8gbm90IHJlcXVpcmUgQ1NSRiBwcm90ZWN0aW9uXFxyXFxuICAgICAgICByZXR1cm4gKC9eKEdFVHxIRUFEfE9QVElPTlN8VFJBQ0UpJC8udGVzdChtZXRob2QpKTtcXHJcXG4gICAgfVxcclxcbiAgICBmdW5jdGlvbiBzYW1lT3JpZ2luKHVybCkge1xcclxcbiAgICAgICAgLy8gdGVzdCB0aGF0IGEgZ2l2ZW4gdXJsIGlzIGEgc2FtZS1vcmlnaW4gVVJMXFxyXFxuICAgICAgICAvLyB1cmwgY291bGQgYmUgcmVsYXRpdmUgb3Igc2NoZW1lIHJlbGF0aXZlIG9yIGFic29sdXRlXFxyXFxuICAgICAgICB2YXIgaG9zdCA9IGRvY3VtZW50LmxvY2F0aW9uLmhvc3Q7IC8vIGhvc3QgKyBwb3J0XFxyXFxuICAgICAgICB2YXIgcHJvdG9jb2wgPSBkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbDtcXHJcXG4gICAgICAgIHZhciBzcl9vcmlnaW4gPSBcXCcvL1xcJyArIGhvc3Q7XFxyXFxuICAgICAgICB2YXIgb3JpZ2luID0gcHJvdG9jb2wgKyBzcl9vcmlnaW47XFxyXFxuICAgICAgICAvLyBBbGxvdyBhYnNvbHV0ZSBvciBzY2hlbWUgcmVsYXRpdmUgVVJMcyB0byBzYW1lIG9yaWdpblxcclxcbiAgICAgICAgcmV0dXJuICh1cmwgPT0gb3JpZ2luIHx8IHVybC5zbGljZSgwLCBvcmlnaW4ubGVuZ3RoICsgMSkgPT0gb3JpZ2luICsgXFwnL1xcJykgfHxcXHJcXG4gICAgICAgICAgICAodXJsID09IHNyX29yaWdpbiB8fCB1cmwuc2xpY2UoMCwgc3Jfb3JpZ2luLmxlbmd0aCArIDEpID09IHNyX29yaWdpbiArIFxcJy9cXCcpIHx8XFxyXFxuICAgICAgICAgICAgLy8gb3IgYW55IG90aGVyIFVSTCB0aGF0IGlzblxcJ3Qgc2NoZW1lIHJlbGF0aXZlIG9yIGFic29sdXRlIGkuZSByZWxhdGl2ZS5cXHJcXG4gICAgICAgICAgICAhKC9eKFxcXFwvXFxcXC98aHR0cDp8aHR0cHM6KS4qLy50ZXN0KHVybCkpO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgICQuYWpheFNldHVwKHtcXHJcXG4gICAgICAgIGJlZm9yZVNlbmQ6IGZ1bmN0aW9uKHhociwgc2V0dGluZ3MpIHtcXHJcXG4gICAgICAgICAgICBpZiAoIWNzcmZTYWZlTWV0aG9kKHNldHRpbmdzLnR5cGUpICYmIHNhbWVPcmlnaW4oc2V0dGluZ3MudXJsKSkge1xcclxcbiAgICAgICAgICAgICAgICAvLyBTZW5kIHRoZSB0b2tlbiB0byBzYW1lLW9yaWdpbiwgcmVsYXRpdmUgVVJMcyBvbmx5LlxcclxcbiAgICAgICAgICAgICAgICAvLyBTZW5kIHRoZSB0b2tlbiBvbmx5IGlmIHRoZSBtZXRob2Qgd2FycmFudHMgQ1NSRiBwcm90ZWN0aW9uXFxyXFxuICAgICAgICAgICAgICAgIC8vIFVzaW5nIHRoZSBDU1JGVG9rZW4gdmFsdWUgYWNxdWlyZWQgZWFybGllclxcclxcbiAgICAgICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihcIlgtQ1NSRlRva2VuXCIsIGNzcmZ0b2tlbik7XFxyXFxuICAgICAgICAgICAgfVxcclxcbiAgICAgICAgfVxcclxcbiAgICB9KTtcXHJcXG5cXHJcXG59KTtcXHJcXG59KTtcXHJcXG4gIDwvc2NyaXB0PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL2FwcF9ob21lX2FkcmlhLmh0bWwnLCc8ZGl2IGNsYXNzPWt2YXppYm9keT48c3R5bGU+XFxyXFxuXFxyXFxuICAgICAgICAqIHtcXHJcXG4gICAgICAgICAgICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7XFxyXFxuICAgICAgICAgICAgY29sb3I6ICMyNjMwNEM7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICBkaXYua3Zhemlib2R5IHtcXHJcXG4gICAgICAgICAgICBtYXJnaW46IDA7XFxyXFxuICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcXHJcXG4gICAgICAgICAgICBwYWRkaW5nOiA0OHB4IDEyJSAyNHB4IDEyJTtcXHJcXG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcXHJcXG4gICAgICAgICAgICBnYXA6IDQ4cHg7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICBzZWN0aW9uIHtcXHJcXG4gICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xcclxcbiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcXHJcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcclxcbiAgICAgICAgICAgIGp1c3RpZnktaXRlbXM6IGNlbnRlcjtcXHJcXG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcXHJcXG4gICAgICAgICAgICBnYXA6IDEyMHB4O1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgLm5vd3JhcCB7XFxyXFxuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIGhlYWRlciB7XFxyXFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcXHJcXG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIGltZy5rYXRhbHlvIHtcXHJcXG4gICAgICAgICAgICB3aWR0aDogMTUlO1xcclxcbiAgICAgICAgICAgIG1heC13aWR0aDoyNTBweDtcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIGEge1xcclxcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXHJcXG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxyXFxuICAgICAgICAgICAgY29sb3I6ICNGRkY7XFxyXFxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzMwMkNFNTtcXHJcXG4gICAgICAgICAgICBwYWRkaW5nOiA4cHggMTZweDtcXHJcXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XFxyXFxuICAgICAgICAgICAgd2lkdGg6IGZpdC1jb250ZW50O1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgYTpob3ZlciB7XFxyXFxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzE5MTVDMztcXHJcXG4gICAgICAgICAgICBjb2xvcjogI0ZGRjtcXHJcXG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICBhOmFjdGl2ZSwgYTpmb2N1cyB7XFxyXFxuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzMwMmNlNTtcXHJcXG4gICAgICAgICAgICBjb2xvcjogI0ZGRjtcXHJcXG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICBoMSB7XFxyXFxuICAgICAgICAgICAgZm9udC1zaXplOiA0OHB4O1xcclxcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcclxcbiAgICAgICAgICAgIG1hcmdpbjogMDtcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIHAge1xcclxcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjRweDtcXHJcXG4gICAgICAgICAgICBtYXJnaW46IDA7XFxyXFxuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lO1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgcC5kcnVnaSB7XFxyXFxuICAgICAgICAgICAgZm9udC1zaXplOiAyMHB4OztcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIGRpdiB7XFxyXFxuICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcXHJcXG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcXHJcXG4gICAgICAgICAgICBnYXA6IDE2cHg7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICBwLmgyIHtcXHJcXG4gICAgICAgICAgICBmb250LXNpemU6IDM2cHggIWltcG9ydGFudDtcXHJcXG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50O1xcclxcbiAgICAgICAgICAgIG1hcmdpbjogMDtcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIC5xdWVzdGlvbiB7XFxyXFxuICAgICAgICAgICAganVzdGlmeS1zZWxmOiBzdGFydDtcXHJcXG4gICAgICAgICAgICB3aWR0aDogNzAlO1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgZGl2IC5idXR0biB7XFxyXFxuICAgICAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xcclxcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3RhcnQgIWltcG9ydGFudDtcXHJcXG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIGltZy5hdG9tcG5nIHtcXHJcXG4gICAgICAgICAgICB3aWR0aDogNTAlO1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xcclxcblxcclxcbiAgICAgICAgICAgIGRpdi5rdmF6aWJvZHkge1xcclxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAyNHB4IDgwcHggNDhweCA4MHB4O1xcclxcbiAgICAgICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICAgICBpbWcge1xcclxcbiAgICAgICAgICAgICAgICB3aWR0aDogNTAlO1xcclxcbiAgICAgICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICAgICBzZWN0aW9uIHtcXHJcXG4gICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XFxyXFxuICAgICAgICAgICAgICAgIGdhcDogNDhweDtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAgICAgLmZpcnN0IHtcXHJcXG4gICAgICAgICAgICAgICAgZ3JpZC1yb3ctc3RhcnQ6IDI7XFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgICAgIC5zZWNvbmQge1xcclxcbiAgICAgICAgICAgICAgICBncmlkLXJvdy1zdGFydDogMjtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAgICAgLnF1ZXN0aW9uIHtcXHJcXG4gICAgICAgICAgICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAgICAgaW1nLmthdGFseW8ge1xcclxcbiAgICAgICAgICAgICAgICB3aWR0aDogMjUlO1xcclxcbiAgICAgICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1NDVweCkge1xcclxcblxcclxcbiAgICAgICAgICAgIGRpdi5rdmF6aWJvZHkge1xcclxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMnB4IDM2cHggMjRweCAzNnB4O1xcclxcbiAgICAgICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICAgICBpbWcge1xcclxcbiAgICAgICAgICAgICAgICB3aWR0aDogNzUlO1xcclxcbiAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICBcXHJcXG4gICAgICAgICAgICBzZWN0aW9uIHtcXHJcXG4gICAgICAgICAgICAgICAgZ2FwOiA2MHB4O1xcclxcbiAgICAgICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICAgICBoMSB7XFxyXFxuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogNDJweDtcXHJcXG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xcclxcbiAgICAgICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICAgICBwIHtcXHJcXG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xcclxcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgICAgIHAuaDIge1xcclxcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDM2cHggIWltcG9ydGFudDtcXHJcXG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xcclxcbiAgICAgICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICAgICBpbWcua2F0YWx5byB7XFxyXFxuICAgICAgICAgICAgICAgIHdpZHRoOiA0MCU7XFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgICAgIGRpdiAuYnV0dG4ge1xcclxcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7XFxyXFxuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICA8L3N0eWxlPjxoZWFkZXI+PGltZyBzcmM9L2ltZy9LYXRhbHlvX2ZpbmFsX2FxdWEucG5nIGFsdD1cIkthdGFseW8gbm8tY29kZVwiIGNsYXNzPWthdGFseW8+PC9oZWFkZXI+PHNlY3Rpb24+PGRpdiBjbGFzcz1maXJzdD48aDE+RG9icm9kb1xcdTAxNjFsaSBuYSBLYXRhbHlvIDxzcGFuIGNsYXNzPW5vd3JhcD5uby1jb2RlPC9zcGFuPiBwbGF0Zm9ybXUuPC9oMT48cD5WYVxcdTAxNjFlIG1qZXN0byB6YSBkaWdpdGFsbnUgdHJhbnNmb3JtYWNpanUgaSBqZWRub3N0YXZudSBhdXRvbWF0aXphY2lqdSB2YVxcdTAxNjFlZyBwb3Nsb3ZhbmphLjwvcD48ZGl2IGNsYXNzPWJ1dHRuPjxhIGhyZWY9XCJodHRwczovL2thdGFseW8uaHIvXCI+U2F6bmFqdGUgdmlcXHUwMTYxZTwvYT48L2Rpdj48L2Rpdj48aW1nIHNyYz0vaW1nL2F0b20yLnBuZyBhbHQ9XCJJbHVzdHJhY2lqYSBhdG9tYVwiIGNsYXNzPWF0b21wbmc+PC9zZWN0aW9uPjxzZWN0aW9uPjxpbWcgc3JjPS9pbWcvZHJ1Z2Ffc2xpa2EucG5nIGFsdD1JbHVzdHJhY2lqYSBjbGFzcz1xdWVzdGlvbj48ZGl2IGNsYXNzPXNlY29uZD48cCBjbGFzcz1oMj5UcmFcXHUwMTdFaXRlIGFwbGlrYWNpanUgQWRyaWEgZmxlZXQgbWFuYWdlbWVudD88L3A+PHAgY2xhc3M9ZHJ1Z2k+QWRyaWEgZmxlZXQgbWFuYWdlbWVudCBqZSB2YVxcdTAxNjEgcHJ2aSBrb3JhayB1IGRpZ2l0YWxub2ogdHJhbnNmb3JtYWNpamkuPGJyPlphIHByaWphdnUgdSBBZHJpYSBmbGVldCBtYW5hZ2VtZW50IHByaXRpc25pdGUgZ3VtYiBQcmlqYXZhLjwvcD48ZGl2IGNsYXNzPWJ1dHRuPjxhIGhyZWY9L2xvZ2luPlByaWphdmE8L2E+PC9kaXY+PC9kaXY+PC9zZWN0aW9uPjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL2NvbnRlbnQuaHRtbCcsJzxkaXYgY2xhc3M9Y29sLWxnLTI0PjxkaXYgaWQ9YWxlcnQgY2xhc3M9YXBwLW1zZy1jb250YWluZXIgYXBwLW1lc3NhZ2VzIG1lc3NhZ2UtbGlzdD1hYy5hbGVydHM+PC9kaXY+PGRpdiBjbGFzcz1cImZpeGVkLXRvcCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiIHN0eWxlPVwiei1pbmRleDoyMDMwO21hcmdpbjogYXV0b1wiPjxkaXYgY2xhc3Mga3QtYWN0aXZpdHkgbWVzc2FnZT1cIlxcJ1Byb2Nlc3NpbmcgcmVxdWVzdC4uLlxcJ1wiPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9c2hvd1NpZGVNZW51IG5nLWNsYXNzPVwie1xcJ2NvbC1sZy00IHAtMCBwbC0xIHB0LTNcXCc6bWVudV9zZXJ2aWNlLmdldFNpZGVNZW51U2l6ZSgpLFxcJ2NvbC1hdXRvIHAtMCBwbC0xIHB0LTNcXCc6IW1lbnVfc2VydmljZS5nZXRTaWRlTWVudVNpemUoKX1cIj48ZGl2IGNsYXNzPVwic3RpY2t5IG1lbnUtc3RpY2t5LXBvc1wiIG5nLXN0eWxlPWdzcnZjLmdldFRvcEZvclN0aWNreSg1KSB1aS12aWV3PW1lbnU+PC9kaXY+PC9kaXY+PGRpdiBpZD1jb250ZW50IHVpLXZpZXc9Y29udGVudFI+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvZXJyb3IuaHRtbCcsJzxkaXYgY2xhc3M9XCJjb2wtbGctMjQgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj48ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcC00IHctNTBcIj48ZGl2IHN0eWxlPVwiZm9udC1mYW1pbHk6IFJvYm90bzsgZm9udC1zaXplOiA0MHB4OyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6IzE5YTNiODsgdGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW4tYm90dG9tOiAzcmVtO1wiPk9vb3BzITwvZGl2PjxkaXYgbmctaWY9ZXJyb3JNc2cgY2xhc3M9XCJ0ZXh0LWNlbnRlciBhbGVydCBhbGVydC1kYW5nZXJcIj48aDQ+e3tlcnJvck1zZ319PC9oND48L2Rpdj48ZGl2IGNsYXNzPXRleHQtY2VudGVyPjxpIGNsYXNzPVwiZmEgZmEtZXhjbGFtYXRpb24tdHJpYW5nbGUgZmEtMnggbXItMyB0ZXh0LWRhbmdlclwiPjwvaT4gPHNwYW4gY2xhc3M9XCJoMyB0ZXh0LWRhbmdlclwiPnt7bXNnfX08L3NwYW4+PGJyPjxicj48L2Rpdj48ZGl2IGNsYXNzPXRleHQtZGFyayBzdHlsZT1cIm1hcmdpbi10b3A6IDUlO1wiPjxzcGFuIGNsYXNzPVwiaDUgbXgtNFwiPkdvIHRvIDxhIHVpLXNyZWY9YXBwLmxvZ2luPmxvZ2luIHBhZ2U8L2E+PC9zcGFuPiA8c3BhbiBjbGFzcz1cImg1IG14LTRcIj5WaXNpdCBvdXIgPGEgaHJlZj1odHRwczovL3d3dy5rYXRhbHlvLmNvbT53ZWJzaXRlPC9hPjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9lcnJvcl9ub3RfZm91bmQuaHRtbCcsJzxkaXYgY2xhc3M9XCJjb2wtbGctMjQgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj48ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcC00IHctNTBcIj48aW1nIHNyYz0vYnVpbGRlci9pbWcvNDA0LnBuZyBzdHlsZT1cIndpZHRoOiBjYWxjKDIwMHB4ICsgMzAlICk7IG1hcmdpbi10b3A6MTAlO1wiPjxkaXYgc3R5bGU9XCJmb250LWZhbWlseTogUm9ib3RvOyBmb250LXNpemU6IDQwcHg7IGZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjojMTlhM2I4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi1ib3R0b206IDNyZW07XCI+T29vcHMhPC9kaXY+PGRpdiBuZy1pZj1lcnJvck1zZyBjbGFzcz1cInRleHQtY2VudGVyIGFsZXJ0IGFsZXJ0LWRhbmdlclwiPjxoND57e2Vycm9yTXNnfX08L2g0PjwvZGl2PjxkaXYgY2xhc3M9dGV4dC1jZW50ZXI+PGkgY2xhc3M9XCJmYSBmYS1leGNsYW1hdGlvbi10cmlhbmdsZSBmYS0yeCBtci0zIHRleHQtZGFuZ2VyXCI+PC9pPiA8c3BhbiBjbGFzcz1cImgzIHRleHQtZGFuZ2VyXCI+WW91IG11c3QgaGF2ZSB0YWtlbiB0aGUgd3JvbmcgdHVybiBzb21ld2hlcmUuPC9zcGFuPjxicj48YnI+PHNwYW4gY2xhc3M9XCJoMyBtdC0yXCI+UGF0aCB7e3BhcmFtcy5wYXRofX0gZG9lcyBub3QgZXhpc3QhPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9dGV4dC1kYXJrIHN0eWxlPVwibWFyZ2luLXRvcDogNSU7XCI+PHNwYW4gY2xhc3M9XCJoNCBteC00XCI+PGEgdWktc3JlZj1hcHAuc2lnbnVwPlNpZ24gdXA8L2E+IGZvciBLYXRhbHlvPC9zcGFuPiA8c3BhbiBjbGFzcz1cImg0IG14LTRcIj5HbyB0byA8YSB1aS1zcmVmPWFwcC5sb2dpbj5sb2dpbiBwYWdlPC9hPjwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJoNCBteC00XCI+VmlzaXQgb3VyIDxhIGhyZWY9aHR0cHM6Ly93d3cua2F0YWx5by5jb20+d2Vic2l0ZTwvYT48L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvZm9vdGVyLmh0bWwnLCc8ZGl2IGNsYXNzPVwicm93IGZvb3RlciBib3JkZXItdG9wXCIgbmctaWY9ZmFsc2U+PGRpdiBjbGFzcz1jb2wtbGctMjQgXCI+PGRpdiBjbGFzcz1cImQtaW5saW5lLWJsb2NrIGJnLXdoaXRlIHJvdW5kZWQgcHgtMVwiPjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL2hvbWUuaHRtbCcsJzxkaXYgY2xhc3M+PGRpdiBrdC1oZWxwLWNlbnRlciBoZWxwLWlkPVwiXFwnZ2V0c3RhcnRlZFxcJ1wiPjwvZGl2PjxkaXYgY2xhc3M9cm93PjxkaXYgbmctaWY9IWV4dGVuZGVkVXNlci51c2VfYmxvY2tjaGFpbiBjbGFzcz1cImNvbC1sZy0yNCBtLWF1dG9cIj48ZGl2IGNsYXNzPVwiaDMgYm9sZCB0ZXh0LWNlbnRlciBtLTNcIiBzdHlsZT1cImNvbG9yOiAjNzA3MDcwXCI+V2VsY29tZSB7e2N1cnJlbnRVc2VyRmlyc3ROYW1lfX0hPC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1leHRlbmRlZFVzZXIudXNlX2Jsb2NrY2hhaW4gY2xhc3M9XCJjb2wtbGctMjQgbS1hdXRvXCI+PGRpdiBjbGFzcz1cImgzIGJvbGQgdGV4dC1jZW50ZXIgbXktM1wiIHN0eWxlPVwiY29sb3I6ICM3MDcwNzBcIj5XZWxjb21lIHt7Y3VycmVudFVzZXJGaXJzdE5hbWV9fSE8L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBteS00XCIgbmctaWY9aXNfc3VwZXJ1c2VyPjxkaXYgY2xhc3M9XCJjb2wtbGctMTYgbS1hdXRvIGJvcmRlciByb3VuZGVkIGJnLXdoaXRlIHAtMyB0ZXh0LWNlbnRlclwiPjxkaXYgbmctaWY9bGlua2VkQmxvY2tjaGFpbkFkZHJlc3M+PGRpdiBuZy1pZj0hYmFsYW5jZUNoZWNrZWQ+PGRpdiBrdC1wcm9jZXNzaW5nLWFuaW1hdGlvbiBzaG93LW1zZz10cnVlIG1lc3NhZ2U9XCJDaGVja2luZyBiYWxhbmNlXCI+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1iYWxhbmNlQ2hlY2tlZD48ZGl2IGNsYXNzPWg2IHN0eWxlPVwiY29sb3I6IHNsYXRlZ3JleTtcIj48c3BhbiBjbGFzcz1cImJvbGQgbXItMlwiPkNPTk5FQ1RFRCBBRERSRVNTOjwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJib2xkIHRleHQtcHJpbWFyeVwiPnt7ZmQuZXRoX2FkZHJlc3N9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPWg1IHN0eWxlPVwiY29sb3I6IHNsYXRlZ3JleTtcIj48c3BhbiBjbGFzcz1ib2xkPnt7YmFsYW5jZV9rdGx5b319PC9zcGFuPiA8c3BhbiBjbGFzcz1zbWFsbD57e2Jsb2NrX2t0bHlvfX08L3NwYW4+PC9kaXY+PGkgY2xhc3M9XCJmYSBmYS1jaGVjay1jaXJjbGUgZmEtM3ggdGV4dC1zdWNjZXNzXCIgdGl0bGU9XCJCbG9ja2NoYWluIGZlYXR1cmVzIGFyZSBlbmFibGVkIVwiIG5nLWlmPWt0bHlvX2JhbGFuY2Vfb2s+PC9pPjxkaXYgbmctaWY9IWt0bHlvX2JhbGFuY2Vfb2s+PGkgdGl0bGU9XCJCbG9ja2NoYWluIGZlYXR1cmVzIGFyZSBkaXNhYmxlZCFcIiBjbGFzcz1cImZhIGZhLXRpbWVzIGZhLTN4IHRleHQtZGFuZ2VyXCI+PC9pPjxkaXYgY2xhc3M9XCJtbC0yIHRleHQtZGFuZ2VyIGJvbGRcIj57e2t0bHlvX2JhbGFuY2VfbXNnfX08L2Rpdj48ZGl2IGNsYXNzPVwic21hbGwgdGV4dC1kYXJrXCI+VG8gYWNjZXNzIEthdGFseW9cXCdzIHdlYjMgZmVhdHVyZXMgeW91IG11c3QgY29ubmVjdCBFdGhlcmV1bSBhZGRyZXNzIHdpdGggYSBtaW5pbXVtIGJhbGFuY2Ugb2YgMTAwIEtUTFlPITwvZGl2PjxzcGFuIGNsYXNzPVwic21hbGwgdGV4dC1kYXJrIG1yLTJcIj5QbGVhc2UgdHJhbnNmZXIgS1RMWU8gdG8gc2VsZWN0ZWQgYWRkcmVzcyBvcjwvc3Bhbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeVwiIG5nLWNsaWNrPWNoYW5nZVdlYjNXYWxsZXRMaW5rU3RhdHVzKGZhbHNlKT5DaGFuZ2UgS1RMWU8gYWRkcmVzczwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9IWxpbmtlZEJsb2NrY2hhaW5BZGRyZXNzPjxkaXYga3Qtd2ViMy13YWxsZXQ+PC9kaXY+PGRpdiBjbGFzcz1cIm14LTQgdGV4dC1sZWZ0XCI+PHNwYW4gY2xhc3M9XCJzbWFsbCB0ZXh0LWRhcmtcIj5UbyBhY2Nlc3MgS2F0YWx5b1xcJ3Mgd2ViMyBmZWF0dXJlcyB5b3UgbXVzdCBjb25uZWN0IEV0aGVyZXVtIGFkZHJlc3Mgd2l0aCBhIG1pbmltdW0gYmFsYW5jZSBvZiAxMDAgS1RMWU8hPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJib3JkZXItdG9wIG15LTQgcHktNFwiIG5nLWlmPVwiZmQud2ViM0Nvbm5lY3RlZCAmJiBrdGx5b0FkZHJlc3NDb25uZWN0ZWRcIj48ZGl2PjxkaXYgY2xhc3M9aDY+PHNwYW4gY2xhc3M9Ym9sZD5Db25uZWN0ZWQgYWRkcmVzczo8L3NwYW4+IHt7ZmQuZXRoX2FkZHJlc3N9fTwvZGl2PjxkaXYgY2xhc3M9aDU+PHNwYW4gY2xhc3M9XCJib2xkIHRleHQtcHJpbWFyeVwiPnt7YmFsYW5jZV9rdGx5b319PC9zcGFuPiA8aSBjbGFzcz1cIm1sLTIgZmEgZmEtY2hlY2stY2lyY2xlIHRleHQtc3VjY2Vzc1wiIG5nLWlmPWt0bHlvX2JhbGFuY2Vfb2s+PC9pPiA8c3BhbiBjbGFzcz1cIm1sLTIgc21hbGwgdGV4dC1kYW5nZXJcIiBuZy1pZj0ha3RseW9fYmFsYW5jZV9vaz4oe3trdGx5b19iYWxhbmNlX21zZ319KTwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPXNhdmluZ1dlYjNMaW5rPjxkaXYga3QtcHJvY2Vzc2luZy1hbmltYXRpb24gc2hvdy1tc2c9dHJ1ZSBtZXNzYWdlPVwiU2F2aW5nIG9yZ2FuaXNhdGlvbiBhZGRyZXNzXCI+PC9kaXY+PC9kaXY+PGRpdj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWRpc2FibGVkPSFrdGx5b19iYWxhbmNlX29rIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXN1Y2Nlc3NcIiBuZy1jbGljaz1zYXZlQmxvY2tjaGFpbkFjY291bnQoKT48aSBjbGFzcz1cIm1yLTIgZmEgZmEtc2F2ZVwiPjwvaT5TYXZlIGNvbm5lY3RlZCBhZGRyZXNzPC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz48ZGl2IGNsYXNzPVwiY29sLWxnLTIwIG0tYXV0byBib3JkZXIgcm91bmRlZCBiZy13aGl0ZVwiPjxkaXYgY2xhc3M9XCJyb3cgbS0yXCI+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PGRpdiBjbGFzcz1cInJvdyBtdC0xXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBib3JkZXItYm90dG9tXCI+PGRpdiBjbGFzcz1cInJvdyBtdC0xXCI+PGRpdiBjbGFzcz1cImNvbCBwLTBcIj48dWwgY2xhc3M9XCJuYXYgbmF2LXRhYnMgYm9yZGVyLTAgc2ltcGxlLXRhYnNcIiBpZD1teUFwcHNUYWIgcm9sZT10YWJsaXN0PjxsaSBjbGFzcz1cIm5hdi1pdGVtIGJvbGRcIj48YSBjbGFzcz1uYXYtbGluayBuZy1jbGljaz1cInBhcmFtcy5zaG93QXBwTGlzdD0xXCIgbmctY2xhc3M9XCJ7XFwnYWN0aXZlIHNob3dcXCc6cGFyYW1zLnNob3dBcHBMaXN0PT0xfVwiIGhyZWYgaWQ9YWxsX3RhYiBkYXRhLXRvZ2dsZT10YWIgcm9sZT10YWIgYXJpYS1jb250cm9scz1hbGxfYXBwcyBhcmlhLXNlbGVjdGVkPXRydWU+TXkgYXBwczwvYT48L2xpPjxsaSBjbGFzcz1cIm5hdi1pdGVtIGJvbGRcIj48YSBjbGFzcz1uYXYtbGluayBpZD1teV90YWIgbmctY2xhc3M9XCJ7XFwnYWN0aXZlIHNob3dcXCc6cGFyYW1zLnNob3dBcHBMaXN0PT0yfVwiIG5nLWNsaWNrPVwicGFyYW1zLnNob3dBcHBMaXN0PTJcIiBocmVmIGRhdGEtdG9nZ2xlPXRhYiByb2xlPXRhYiBhcmlhLWNvbnRyb2xzPW15X2FwcHMgYXJpYS1zZWxlY3RlZD1mYWxzZT5BbGwgYXBwczwvYT48L2xpPjwvdWw+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cInBhcmFtcy5zaG93QXBwTGlzdD09MVwiIGNsYXNzPVwicm93IG15LTRcIj48ZGl2IGlkPWxvYWRpbmdBcHBzIG5nLXNob3c9YXBwTGlzdExvYWRpbmcga3QtcHJvY2Vzc2luZy1hbmltYXRpb24tdGltZWxpbmUgYW5pbWF0aW9uLXR5cGU9XCJcXCdjYXJkXFwnXCIgc2hvdy1tc2c9ZmFsc2UgbWVzc2FnZSBwYXJhbXM9YXBwTGlzdFBhcmFtZXRlcnMgY2xhc3M9dy0xMDA+PC9kaXY+PGRpdiBuZy1oaWRlPWFwcExpc3RMb2FkaW5nIG5nLXJlcGVhdD1cImFwcCBpbiBhcHBMaXN0IHRyYWNrIGJ5IGFwcC5pZFwiIGNsYXNzPVwiY29sLWxnLTYgY29sLXNtLTEyIGNvbC14cy0yNCBwLTFcIiBuZy1pZj1hcHAuQWN0aXZlU3ViPjxkaXYgY2xhc3M9XCJzaGFkb3ctc20gYm9yZGVyIHJvdW5kZWRcIiBzdHlsZT1cInBvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDogMTAwJTtcIj48ZGl2IHN0eWxlPVwiaGVpZ2h0OiAxMDAlO1wiPjxkaXYgY2xhc3M9XCJwLTEgdGV4dC1sZWZ0IG15LWF1dG9cIj48ZGl2IGNsYXNzPVwicm93IG14LTFcIj48ZGl2IGNsYXNzPVwiY29sIHB4LTBcIj48YSBuZy1pZj1cIiFhcHAuc3Vic2NyaWJpbmcgJiYgYXBwLk5hbWUhPVxcJ0thdGFseW8gYnVpbGRlclxcJ1wiIGNsYXNzPXNtYWxsIGhyZWYgbmctY2xpY2s9XCJzdWJzY3JpYmVfdW5zdWJzY3JpYmUoYXBwLCRpbmRleCxcXCd1bnN1YnNjcmliZVxcJylcIj5VbnN1YnNjcmliZTwvYT4gPHNwYW4gbmctaWY9YXBwLnN1YnNjcmliaW5nIGNsYXNzPVwic21hbGwgdGV4dC1wcmltYXJ5XCI+PGkgY2xhc3M9XCJmYSBmYS1jb2cgZmEtc3BpbiBtci0xXCI+PC9pPlVuc3Vic2NyaWJpbmcuLi48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHB4LTFcIj48YSBjbGFzcz1cInNtYWxsIGJvbGRcIiB1aS1zcmVmPVwiYXBwLm5hdmJhci5yZXNvdXJjZXMudmlldyh7aWQ6YXBwLnVpZCxwcmV2X3N0YXRlOlxcJ2FwcC5uYXZiYXIuaG9tZVxcJyx0YWI6cGFyYW1zLnNob3dBcHBMaXN0LHJlc291cmNlX3R5cGU6YXBwLmFwcF90eXBlfSlcIj5JbmZvPC9hPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtLTJcIj48L2Rpdj48ZGl2IGNsYXNzPW15LTM+PGRpdiBjbGFzcz10ZXh0LWNlbnRlcj48c3BhbiBuZy1pZj1cImFwcC5sb2FkaW5nQXBwIT10cnVlXCIgY2xhc3M9aDUgc3R5bGU9XCJmb250LXdlaWdodDogYm9sZDtjb2xvcjojNmY3ZWM3XCI+e3thcHAuTmFtZX19PC9zcGFuPjxicj48c3BhbiBuZy1pZj1cImFwcC5sb2FkaW5nQXBwIT10cnVlXCIgY2xhc3M9c21hbGw+dnt7YXBwLnZlcnNpb259fTwvc3Bhbj48ZGl2IG5nLWlmPVwiYXBwLmxvYWRpbmdBcHA9PXRydWVcIiBjbGFzcz1oNT48ZGl2IGNsYXNzPWxvYWRlcj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcGItMlwiPjxzcGFuIG5nLWlmPVwiYXBwLmxvYWRpbmdBcHAhPXRydWVcIiBjbGFzcz1cInNtYWxsIGJvbGRcIj5DcmVhdGVkIGJ5IHt7YXBwLk9yZ05hbWV9fTwvc3Bhbj4gPHNwYW4gbmctaWY9XCJhcHAubG9hZGluZ0FwcD09dHJ1ZVwiIGNsYXNzPXNtYWxsPlN0YXJ0aW5nIHt7YXBwLk5hbWV9fS4uLjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicHgtMiB3LTEwMFwiIHN0eWxlPVwidG9wOiAtNDBweDtwb3NpdGlvbjogcmVsYXRpdmU7bWFyZ2luLWxlZnQ6IGF1dG87bWFyZ2luLXJpZ2h0OiBhdXRvO3dpZHRoOiA0MCU7XCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1kaXNhYmxlZD1cImFwcC5sb2FkaW5nQXBwPT10cnVlXCIgY2xhc3M9XCJidG4gYnRuLXNtIHctMTAwXCIgbmctY2xhc3M9XCJ7XFwnYnRuLXByaW1hcnlcXCc6YXBwLk5hbWU9PVxcJ0thdGFseW8gYnVpbGRlclxcJyxcXCdidG4tc3VjY2Vzc1xcJzphcHAuTmFtZSE9XFwnS2F0YWx5byBidWlsZGVyXFwnfVwiIG5nLWNsaWNrPWxvYWRBcHAoYXBwKT48aSBjbGFzcz1cImZhIGZhLXJvY2tldCBtdC0xIHt7YXBwLlBhcmFtcy5JY29ufX1cIiBzdHlsZT1jb2xvcjp3aGl0ZT48L2k+IDxzcGFuIGNsYXNzPW0tMiBzdHlsZT1cImNvbG9yOiB3aGl0ZTtcIiBuZy1iaW5kPVwiYXBwLlBhcmFtcy5CdG5MYWJlbCB8fCBcXCdTdGFydFxcJ1wiPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwicGFyYW1zLnNob3dBcHBMaXN0PT0yXCIgY2xhc3M9XCJyb3cgbXktNFwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgbWItNFwiPjxkaXY+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1yZXNvdXJjZS5OYW1lIG5nLWNoYW5nZT1zZWFyY2hBcHBsaWNhdGlvbnMoMSwxMikgbmctbW9kZWwtb3B0aW9ucz17ZGVib3VuY2U6MTAwMH0gY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLWxnIHNoYWRvdy1zbSBwci01XCIgc3R5bGU9Zm9udC1zaXplOjFyZW0gaWQ9TmFtZSBuYW1lPU5hbWUgcGxhY2Vob2xkZXI9XCJCcm93c2UgYXBwbGljYXRpb25zXCI+IDxpIG5nLWlmPSFyZXNvdXJjZUxvYWRpbmcgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHJpZ2h0OiAwOyBtYXJnaW4tcmlnaHQ6IDI1cHg7bWFyZ2luLXRvcDogLTI2cHg7XCIgY2xhc3M9XCJmYSBmYS1zZWFyY2ggdGV4dC1pbmZvXCI+PC9pPjxkaXYgbmctaWY9cmVzb3VyY2VMb2FkaW5nIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyByaWdodDogMDsgbWFyZ2luLXJpZ2h0OiAyNXB4O21hcmdpbi10b3A6IC0zNXB4O1wiIGNsYXNzPWxvYWRlcj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGlkPWxvYWRpbmdBcHBzIG5nLXNob3c9YXBwTGlzdExvYWRpbmcga3QtcHJvY2Vzc2luZy1hbmltYXRpb24tdGltZWxpbmUgYW5pbWF0aW9uLXR5cGU9XCJcXCdjYXJkXFwnXCIgc2hvdy1tc2c9ZmFsc2UgbWVzc2FnZSBwYXJhbXM9YXBwTGlzdFBhcmFtZXRlcnMgY2xhc3M9dy0xMDA+PC9kaXY+PGRpdiBuZy1oaWRlPWFwcExpc3RMb2FkaW5nIG5nLXJlcGVhdD1cImFwcCBpbiBhcHBMaXN0IHRyYWNrIGJ5IGFwcC5pZFwiIGNsYXNzPVwiY29sLWxnLTYgY29sLXNtLTEyIGNvbC14cy0yNCBwLTFcIiBuZy1pZj0hYXBwLkFjdGl2ZVN1YiBuZy1zaG93PVwiKFthcHAuTmFtZV0gfCBmaWx0ZXI6cmVzb3VyY2UuTmFtZSkubGVuZ3RoXCI+PGRpdiBjbGFzcz1cInNoYWRvdy1zbSBib3JkZXIgcm91bmRlZFwiIHN0eWxlPVwicG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0OiAxMDAlO1wiPjxkaXYgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7XCI+PGRpdiBjbGFzcz1cInAtMSB0ZXh0LWxlZnQgbXktYXV0b1wiPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbCBteC0yIHB4LTAgdGV4dC1yaWdodFwiPjxhIGNsYXNzPVwic21hbGwgYm9sZFwiIHVpLXNyZWY9XCJhcHAubmF2YmFyLnJlc291cmNlcy52aWV3KHtpZDphcHAudWlkLHByZXZfc3RhdGU6XFwnYXBwLm5hdmJhci5ob21lXFwnLHRhYjpwYXJhbXMuc2hvd0FwcExpc3QscmVzb3VyY2VfdHlwZTphcHAuYXBwX3R5cGV9KVwiPkluZm88L2E+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImZudDEwIHRleHQtY2VudGVyIG10LTJcIj48c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkO2NvbG9yOiM1YTY3YTdcIj57e2FwcC5OYW1lfX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz10ZXh0LWNlbnRlcj48c3BhbiBuZy1pZj1cImFwcC5zdWJzY3JpYmluZyE9dHJ1ZVwiIGNsYXNzPXNtYWxsPnZ7e2FwcC52ZXJzaW9ufX08L3NwYW4+PGRpdiBuZy1pZj1cImFwcC5zdWJzY3JpYmluZz09dHJ1ZVwiIGNsYXNzPWg1PjxkaXYgY2xhc3M9bG9hZGVyPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtYi00IG10LTJcIj48c3BhbiBjbGFzcz1cInNtYWxsIG11dGVkXCI+Q3JlYXRlZCBieSB7e2FwcC5PcmdOYW1lfX08L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1weC0yIHN0eWxlPVwidG9wOiAtNDBweDtwb3NpdGlvbjogcmVsYXRpdmU7d2lkdGg6IDEwMCU7XCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4taW5mbyBidG4tc20gdy0xMDBcIiBuZy1jbGljaz1cInN1YnNjcmliZV91bnN1YnNjcmliZShhcHAsJGluZGV4LFxcJ3N1YnNjcmliZVxcJylcIj48c3BhbiBuZy1pZj0hYXBwLnN1YnNjcmliaW5nPlN1YnNjcmliZSA8c3BhbiBuZy1pZj1hcHAuc3Vic2NyaWJpbmc+PGkgY2xhc3M9XCJmYSBmYS1jb2cgZmEtc3BpbiBtci0xXCI+PC9pPlN1YnNjcmliaW5nLi4uPC9zcGFuPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IG0tYXV0byB0ZXh0LWNlbnRlclwiIG5nLWlmPVwicmVzb3VyY2VEYXRhLmxlbmd0aD09MCAmJiBmaXJzdFF1ZXJ5XCI+PGkgY2xhc3M9XCJmYXIgZmEtZm9sZGVyLW9wZW4gZmEtNHggdGV4dC1zdWNjZXNzXCI+PC9pPjxkaXYgY2xhc3M9XCJ0ZXh0LXN1Y2Nlc3MgaDRcIj5ObyBhcHBsaWNhdGlvbnMgZm91bmQhPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBweC0xIHRleHQtY2VudGVyIG15LTRcIiBuZy1pZj1cIiFoaWRlQnRuTW9yZSAmJiBmaXJzdFF1ZXJ5XCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IGNvbC1sZy0xMiBjb2wteHMtMjQgYm9yZGVyLXByaW1hcnlcIiBuZy1jbGljaz1sb2FkTW9yZVJlc291cmNlKCk+PGkgbmctaWY9IXJlc291cmNlTG9hZGluZyBjbGFzcz1cImZhIGZhLXBsdXNcIj48L2k+IDxzcGFuIG5nLWlmPSFyZXNvdXJjZUxvYWRpbmcgY2xhc3M9bWwtMj5Mb2FkIG1vcmU8L3NwYW4+IDxzcGFuIG5nLWlmPXJlc291cmNlTG9hZGluZyBjbGFzcz1cImxvYWRlciBtbC0zXCI+PC9zcGFuPiA8c3BhbiBuZy1pZj1yZXNvdXJjZUxvYWRpbmc+TG9hZGluZy4uLjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMlwiIG5nLWlmPVwicGFyYW1zLnNob3dBcHBMaXN0PT0xXCI+PGRpdiBjbGFzcz1cImNvbC0yNCB0ZXh0LWNlbnRlclwiIG5nLWlmPVwiYXBwTGlzdC5sZW5ndGg9PTBcIj48aSBjbGFzcz1cImZhIGZhLW1pbnVzLWNpcmNsZSBmYS00eCB0ZXh0LXdhcm5pbmdcIj48L2k+PGRpdiBjbGFzcz1cInRleHQtd2FybmluZyBoNCBtdC0zXCI+Tm8gc3Vic2NyaWJlZCBhcHBsaWNhdGlvbnMgZm91bmQhPC9kaXY+PGRpdiBjbGFzcz1cInRleHQtZGFyayBoNiBib2xkIG10LTNcIj5DbGljayBvbiA8YSBocmVmIG5nLWNsaWNrPVwicGFyYW1zLnNob3dBcHBMaXN0PTJcIiBjbGFzcz1weC0xPkFsbCBhcHBzPC9hPiB0byBzdWJzY3JpYmUgdG8gYXBwbGljYXRpb25zPC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTJcIiBuZy1pZj1cInBhcmFtcy5zaG93QXBwTGlzdD09MlwiPjxkaXYgY2xhc3M9XCJjb2wtMjQgdGV4dC1jZW50ZXJcIiBuZy1pZj1cImFwcExpc3QubGVuZ3RoPT0wXCI+PGkgY2xhc3M9XCJmYSBmYS1taW51cy1jaXJjbGUgZmEtNHggdGV4dC1wcmltYXJ5XCI+PC9pPjxkaXYgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgaDQgbXQtM1wiPlRoZXJlIGFyZSBubyBhcHBsaWNhdGlvbnMgaW4geW91ciBvcmdhbmlzYXRpb24hPC9kaXY+PGRpdiBuZy1pZj1cImdldEN1cnJlbnRFbnZEYXRhKCkuc2NoZW1hdHlwZT09XFwnREVWXFwnXCIgY2xhc3M9XCJ0ZXh0LWRhcmsgaDYgbXQtM1wiPkl0XFwncyB0aW1lIHRvIDxhIHVpLXNyZWY9XCJhcHAubmF2YmFyLnJlc291cmNlcy5uZXcoe3Jlc291cmNlX3R5cGU6XFwnYXBwbGljYXRpb25cXCd9KVwiIGNsYXNzPXB4LTE+Q3JlYXRlIG5ldyBhcHBsaWNhdGlvbjwvYT48L2Rpdj48ZGl2IG5nLWlmPVwiZ2V0Q3VycmVudEVudkRhdGEoKS5zY2hlbWF0eXBlPT1cXCdQUk9EXFwnXCIgY2xhc3M9XCJ0ZXh0LWRhcmsgaDYgbXQtM1wiPjxzcGFuPkNsaWNrIDxhIHVpLXNyZWY9XCJhcHAubmF2YmFyLnNlbGVjdGVudmlyb25tZW50KHt0eXBlOlxcJ2NoYW5nZVxcJ30pXCI+PGkgY2xhc3M9XCJmYSBmYS1nbG9iZSBteC0xXCI+PC9pPjwvYT4gdG8gc3dpdGNoIHRvIGRldmVsb3BtZW50IGVudmlyb25tZW50IGFuZCB3aXRoIDxiPkthdGFseW8gYnVpbGRlcjwvYj4gY3JlYXRlIHlvdXIgZmlyc3QgYXBwbGljYXRpb24hPC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxzdHlsZT5cXHJcXG4uYm9yZGVyIHtcXHJcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNjNmNiZDIgIWltcG9ydGFudDsgXFxyXFxuICB9XFxyXFxuICBcXHJcXG4gIFxcclxcbiAgLmZvcm0tY29udHJvbCB7XFxyXFxuXFxyXFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICM5MDk1OWRcXHJcXG5cXHR9XFxyXFxuPC9zdHlsZT4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9ob21lX3YxLmh0bWwnLCc8ZGl2IGNsYXNzPVwibXgtNCBteS0yXCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgbXQtMyBjYXJkXCI+PGRpdiBjbGFzcz1cInAtMiBjb2xcIj48cCBuZy1zaG93PVwiZXh0ZW5kZWRVc2VyLlBhcmFtcy5PbmJvYXJkaW5nPT1cXCdDb21wbGV0ZWRcXCdcIiBzdHlsZT1cImZvbnQ6IDIwcHggSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBjb2xvcjogIzEwNzg5NjtcIj48Yj5IaSB7eyBjdXJyZW50VXNlckZpcnN0TmFtZX19ICwgZ29vZCB0byBzZWUgeW91IGJhY2shPC9iPiA8YSBjbGFzcz1mbG9hdC1yaWdodCBocmVmIG5nLWNsaWNrPVwiZXh0ZW5kZWRVc2VyLnNob3dDdXN0b21Ib21lPSFleHRlbmRlZFVzZXIuc2hvd0N1c3RvbUhvbWU7XCI+PGkgbmctaWY9IWV4dGVuZGVkVXNlci5zaG93Q3VzdG9tSG9tZSBjbGFzcz1cImZhIGZhLWxvY2tcIj48L2k+PGkgbmctaWY9ZXh0ZW5kZWRVc2VyLnNob3dDdXN0b21Ib21lIGNsYXNzPVwiZmEgZmEtdW5sb2NrXCI+PC9pPjwvYT48L3A+PGRpdiBuZy1zaG93PVwiZXh0ZW5kZWRVc2VyLlBhcmFtcy5PbmJvYXJkaW5nIT1cXCdDb21wbGV0ZWRcXCdcIj48ZGl2IGNsYXNzPVwiY29sLTI0IHRleHQtY2VudGVyXCI+PHAgY2xhc3Mgc3R5bGU9XCJmb250OiAzNnB4IElCTSBTYW5zIFBsZXgsIHNhbnMtc2VyaWY7IGNvbG9yOiAjMTA3ODk2O1wiPjxiPldlbGNvbWUgdG8gS2F0YWx5byE8L2I+PC9wPjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHRleHQtY2VudGVyXCI+PGltZyB3aWR0aD01MCUgc3JjPS9zdGF0aWMvaW1nL3Jlc291cmNlX2R1ZGUucG5nPjwvZGl2PjxkaXYgY2xhc3M9Y29sIHN0eWxlPVwiZm9udDogMTZweCBJQk0gU2FucyBQbGV4LCBzYW5zLXNlcmlmOyBjb2xvcjogIzEwNzg5NjtcIj48cCBzdHlsZT1cImZvbnQ6IDI0cHggSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBjb2xvcjogIzEwNzg5NjtcIj5CcmluZyBpbiB0aGUgcmVzb3VyY2VzITwvcD48cD5JdFxcJ3MgYWx3YXlzIGdvb2QgdG8gc3RhcnQgd2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZSBtYWluIGNvbmNlcHQgZm9yIGJ1aWxkaW5nIGFwcGxpY2F0aW9ucyB3aXRoIEthdGFseW8hPC9wPjxwPlNheSBoZWxsbyB0byA8Yj5SRVNPVVJDRVM8L2I+LCB0aGUgbWFpbiBidWlsZGluZyBibG9ja3Mgb2YgS2F0YWx5byBwbGF0Zm9ybS48L3A+PHA+WW91IHdpbGwgZGVmaW5lLCBzZXR1cCBhbmQgaW50ZWdyYXRlIG1hbnkgZGlmZmVyZW50IHJlc291cmNlcyB0byBidWlsZCBhbGwgdGhlIHByZXR0eSBmZWF0dXJlcyBvZiB5b3VyIGFwcGxpY2F0aW9ucy48L3A+PHA+RGF0YXNldHMsIHRhc2tzLCBub3RpZmljYXRpb25zIG9yIGZpbGVzIGFyZSBqdXN0IGEgZmV3IG9mIHRoZSByZXNvdXJjZSB0eXBlcyBhdmFpbGFibGUgYW5kIGV2ZW4gYW4gYXBwbGljYXRpb24gaXRzZWxmIGlzIGEgcmVzb3VyY2UuIDxhIGhyZWY9L2xlYXJuLXJlc291cmNlcz4oTGVhcm4gbW9yZSBhYm91dCByZXNvdXJjZXMpPC9hPjwvcD48cCBzdHlsZT1cImZvbnQ6IDIwcHggSUJNIFNhbnMgUGxleCwgc2Fucy1zZXJpZjsgY29sb3I6ICMxMDc4OTY7XCI+RW5vdWdoIHRhbGssIGxldHMgc3RhcnQgYnVpbGRpbmcgYW5kIHRoZSBiZXN0IHdheSB0byBzdGFydCBpcyB0byBjcmVhdGUgeW91ciBmaXJzdCByZXNvdXJjZSwgYSBicmFuZCBuZXcgYXBwbGljYXRpb24hPC9wPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctc2hvdz1cIiFleHRlbmRlZFVzZXIuSGlkZUN1c3RvbWl6ZUhvbWV8fCBleHRlbmRlZFVzZXIuc2hvd0N1c3RvbUhvbWVcIiBjbGFzcz1jb2wtbGctMjQgc3R5bGU9YmFja2dyb3VuZC1jb2xvcjojZWVmMWZhPjxkaXYgY2xhc3M9XCJtdC0xIHRleHQtY2VudGVyXCI+PHAgbmctc2hvdz1cIiFleHRlbmRlZFVzZXIuSGlkZUN1c3RvbWl6ZUhvbWUgfHwgZXh0ZW5kZWRVc2VyLnNob3dDdXN0b21Ib21lXCIgY2xhc3Mgc3R5bGU9XCJmb250OiAxNnB4IEhlbHZldGljYSwgc2Fucy1zZXJpZjsgY29sb3I6ICM4OTk5YzY7XCI+WW91IGNhbiBjdXN0b21pemUgeW91ciBob21lIHBhZ2UgdG8gZml0IHlvdXIgbmVlZHMgYnkgY2xpY2tpbmcgb24gYSBsb2NrIGFib3ZlITwvcD48ZGl2IG5nLWlmPWV4dGVuZGVkVXNlci5zaG93Q3VzdG9tSG9tZT48ZGl2IGNsYXNzPVwicm93IG0tMFwiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDFyZW07anVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGNvbG9yOiAjODk5OWM2XCI+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveFwiPjxpbnB1dCBuZy1jaGFuZ2U9c2F2ZUhvbWVQYWdlKCk7IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgbmctbW9kZWw9ZXh0ZW5kZWRVc2VyLkhpZGVDdXN0b21pemVIb21lIGlkPUhpZGVDdXN0b21pemVIb21lPiA8bGFiZWwgY2xhc3M9Y3VzdG9tLWNvbnRyb2wtbGFiZWwgc3R5bGU9XCJmb250OiAxNnB4IEhlbHZldGljYSwgc2Fucy1zZXJpZjsgY29sb3I6ICM4OTk5YzY7XCIgZm9yPUhpZGVDdXN0b21pemVIb21lPkdvdCBpdCAhIEhpZGUgdGhlIG1lc3NhZ2UhPC9sYWJlbD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBtdC0xXCI+PGRpdiBuZy1pZj0hZXh0ZW5kZWRVc2VyLkhpZGVDcmVhdGVSZXNvdXJjZUhvbWUgY2xhc3M9XCJjb2wgbXItMSBjYXJkXCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgcHktMVwiPjxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBjb2wtbGctOVwiPjxoNSBzdHlsZT1jb2xvcjojMTA3ODk2Oz5CdWlsZCBuZXcgYXBwbGljYXRpb248L2g1PjxpIGNsYXNzPVwiZmEgZmEtZ2xvYmUgZmEtNHhcIiBzdHlsZT1jb2xvcjojMTA3ODk2Oz48L2k+PC9kaXY+PGRpdiBjbGFzcz1jb2wtbGctMTU+PHA+SWYgeW91IHdhbnQgdG8gYnVpbGQgYSBuZXcgYXBwbGljYXRpb24gY2xpY2sgb24gQnVpbGQgbmV3IGFwcGxpY2F0aW9uIGJ1dHRvbjwvcD48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taW5mbyBtYi0yXCIgdWktc3JlZj1cImFwcC5uYXZiYXIucmVzb3VyY2VzLm5ldyh7XFwnbmF2YmFyX2lkXFwnOjksXFwnc2lkZW1lbnVfaWRcXCc6MTksXFwncmVzb3VyY2VfdHlwZVxcJzpcXCdhcHBsaWNhdGlvblxcJ30pXCI+QnVpbGQgbmV3IGFwcGxpY2F0aW9uPC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIG14LTEgbXktYXV0b1wiPjxoMyBzdHlsZT1jb2xvcjojMTA3ODk2Oz5PUjwvaDM+PC9kaXY+PGRpdiBuZy1pZj0hZXh0ZW5kZWRVc2VyLkhpZGVTZWFyY2hSZXNvdXJjZUhvbWUgY2xhc3M9XCJjb2wgbWwtMSBjYXJkXCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgcHktMVwiPjxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBjb2wtbGctOVwiPjxoNSBzdHlsZT1jb2xvcjojMTA3ODk2Oz5TZWFyY2ggYXBwbGljYXRpb25zPC9oNT48aSBjbGFzcz1cImZhIGZhLXNlYXJjaCBmYS00eFwiIHN0eWxlPWNvbG9yOiMxMDc4OTY+PC9pPjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTE1PjxwPklmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBleGlzdGluZyBhcHBsaWNhdGlvbnMgY2xpY2sgb24gU2VhcmNoIGFwcGxpY2F0aW9ucyBidXR0b248L3A+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWluZm8gbWItMlwiIHVpLXNyZWY9YXBwLm5hdmJhci5yZXNvdXJjZXMubGlzdD5TZWFyY2ggYXBwbGljYXRpb25zPC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IG5nLXNob3c9ZXh0ZW5kZWRVc2VyLnNob3dDdXN0b21Ib21lIGNsYXNzPVwiY29sLWxnLTI0IGNhcmRcIj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBjb2wtbGctMTZcIj48aDQgc3R5bGU9Y29sb3I6IzEwNzg5Njs+Q3VzdG9taXplIHlvdXIgaG9tZSBwYWdlPC9oND48aSBjbGFzcz1cImZhIGZhLXdyZW5jaCBmYS00eFwiIHN0eWxlPWNvbG9yOiMxMDc4OTY7PjwvaT48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0yMD48cD5UbyBjdXN0b21pemUgaG9tZSBwYWdlIGFkZCBhbnkgdGFzazwvcD48dWktc2VsZWN0IHVpLXNlbGVjdC1tdWx0aXBsZS1saXN0IG5nLW1vZGVsPWV4dGVuZGVkVXNlci5UYXNrTGlzdEhvbWUgb24tc2VsZWN0PXRhc2tTZWxlY3RlZCgkaXRlbSwkbW9kZWwpIG5nLWRpc2FibGVkPWRpc2FibGVkIG5hbWU9dGFza3MgbmctcmVxdWlyZWQ9ZmFsc2UgcmVzZXQtc2VhcmNoLWlucHV0PWZhbHNlPjx1aS1zZWxlY3QtbWF0Y2ggY2xhc3M9dWktc2VsZWN0LW1hdGNoIHBsYWNlaG9sZGVyPVwiU2VhcmNoIG9yIHNlbGVjdCB0YXNrLi4uXCI+PHNwYW4+e3skc2VsZWN0LnNlbGVjdGVkLm5hbWV9fSA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmtcIiBuZy1jbGljaz1cImNsZWFyKCRldmVudCwgJHNlbGVjdClcIj48aSBjbGFzcz1cImZhIGZhLXRpbWVzIGZsb2F0LXJpZ2h0XCI+PC9pPjwvYT48L3NwYW4+PC91aS1zZWxlY3QtbWF0Y2g+PHVpLXNlbGVjdC1jaG9pY2VzIGNsYXNzPXVpLXNlbGVjdC1jaG9pY2VzIHJlcGVhdD1cInRhc2sgaW4gKHRhc2tMaXN0IHwgZmlsdGVyOiB7IG5hbWU6ICRzZWxlY3Quc2VhcmNoIH0pIHRyYWNrIGJ5IHRhc2suaWRcIiByZWZyZXNoPXJlZnJlc2hSZXN1bHRzKCRzZWxlY3QpIHJlZnJlc2gtZGVsYXk9MD48c3Bhbj57eyB0YXNrLm5hbWUgfX08L3NwYW4+PC91aS1zZWxlY3QtY2hvaWNlcz48L3VpLXNlbGVjdD48ZGl2IGNsYXNzPVwicm93IG0tMCBwdC00XCI+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveFwiPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IG5nLW1vZGVsPWV4dGVuZGVkVXNlci5IaWRlQ3JlYXRlUmVzb3VyY2VIb21lIGlkPUhpZGVDcmVhdGVSZXNvdXJjZUhvbWU+IDxsYWJlbCBjbGFzcz1jdXN0b20tY29udHJvbC1sYWJlbCBmb3I9SGlkZUNyZWF0ZVJlc291cmNlSG9tZT5IaWRlIFxcJ0NyZWF0ZSBuZXcgcmVzb3VyY2VcXCc8L2xhYmVsPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wIHB0LTRcIj48ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLWNoZWNrYm94XCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgbmFtZT1IaWRlU2VhcmNoUmVzb3VyY2VIb21lIG5nLW1vZGVsPWV4dGVuZGVkVXNlci5IaWRlU2VhcmNoUmVzb3VyY2VIb21lIG5nLXJlcXVpcmVkPWZhbHNlIGlkPUhpZGVTZWFyY2hSZXNvdXJjZUhvbWU+IDxsYWJlbCBjbGFzcz1jdXN0b20tY29udHJvbC1sYWJlbCBmb3I9SGlkZVNlYXJjaFJlc291cmNlSG9tZT5IaWRlIFxcJ1NlYXJjaCByZXNvdXJjZXNcXCc8L2xhYmVsPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wIHB0LTRcIj48ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLWNoZWNrYm94XCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgbmFtZT1IaWRlQXBwc0hvbWUgbmctbW9kZWw9ZXh0ZW5kZWRVc2VyLkhpZGVBcHBzSG9tZSBuZy1yZXF1aXJlZD1mYWxzZSBpZD1IaWRlQXBwc0hvbWU+IDxsYWJlbCBjbGFzcz1jdXN0b20tY29udHJvbC1sYWJlbCBmb3I9SGlkZUFwcHNIb21lPkhpZGUgI0FwcHM8L2xhYmVsPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctOCBwdC0zIHBiLTNcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgbmctY2xpY2s9c2F2ZUhvbWVQYWdlKCk+PGkgY2xhc3M9XCJmYSBmYS1ob21lXCI+PC9pPiZuYnNwU2F2ZSBob21lIHBhZ2U8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG14LTQgbXQtMVwiIG5nLWlmPSFleHRlbmRlZFVzZXIuSGlkZUFwcHNIb21lPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgY2FyZFwiIHN0eWxlPWJhY2tncm91bmQtY29sb3I6I2VlZjFmYT48ZGl2IGNsYXNzPW10LTE+PHAgY2xhc3Mgc3R5bGU9XCJmb250OiAyMHB4IEhlbHZldGljYSwgc2Fucy1zZXJpZjsgY29sb3I6ICM4OTk5YzY7XCI+PGI+Q2hlY2sgb3V0IHRoZXNlICNBcHBzIHBvd2VyZWQgYnkgS2F0YWx5byE8L2I+PC9wPjxwIGNsYXNzIHN0eWxlPVwiZm9udDogMTRweCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGNvbG9yOiAjODk5OWM2O1wiPlRvIGNyZWF0ZSAjQXBwcyBpbiBLYXRhbHlvIGFsbCB5b3UgbmVlZCB0byBkbyBpcyBhc3NpZ24gI2hhc2h0YWdzIHRvIHRhc2tzLjwvcD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG14LTQgbXQtMVwiIG5nLWlmPSFleHRlbmRlZFVzZXIuSGlkZUFwcHNIb21lPjxkaXYgbmctcmVwZWF0PVwiYXBwIGluIGFwcExpc3QgdHJhY2sgYnkgYXBwLmlkXCIgY2xhc3M9XCJjb2wgcC0wIG0tMCBtdC0xXCIgbmctY2xhc3M9XCJ7XFwncHItMVxcJzphcHBMaXN0Lmxlbmd0aD4kaW5kZXgrMX1cIj48ZGl2IGNsYXNzPVwiY2FyZCBwLTEgdGV4dC1jZW50ZXJcIj48cCBjbGFzcyBzdHlsZT1cImZvbnQ6IDE2cHggSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1wiPjxiPiN7e2FwcC5uYW1lfX08L2I+PC9wPjxkaXY+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5XCIgbmctY2xpY2s9bG9hZEFwcChhcHApPjxpIGNsYXNzPVwiZmEgZmEtcm9ja2V0XCI+PC9pPjxzcGFuIGNsYXNzPW1sLTI+TGF1bmNoIHt7YXBwLm5hbWV9fTwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcHgtNFwiPjxkaXYgbmctaGlkZT1nc3J2Yy5nZXRPcGVuVGFza0luTmV3UGFnZSgpIG5nLXJlcGVhdD1cInRkIGluIGxvY2FsVmFycy5sb2FkZWRUYXNrcyB0cmFjayBieSB0ZC50YXNrSWRcIj48ZGl2IGt0LXRhc2stcHJvYy1kaXJlY3RpdmUgZmQ9ZmQgdGFzay1kZWZpbml0aW9uPXRhc2tEZWZpbml0aW9uIGxvY2FsLXZhcnM9dGQubG9jYWxWYXJzPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcHgtNFwiIG5nLWlmPWdzcnZjLmdldE9wZW5UYXNrSW5OZXdQYWdlKCkgbmctaW5pdD1vcGVuVGFza0luTmV3UGFnZSgpPjxkaXYgY2xhc3M9Y29sbGFwc2UgbmctY2xhc3M9XCJ7XFwnc2hvd1xcJzpnc3J2Yy5nZXRPcGVuVGFza0luTmV3UGFnZSgpfVwiPjxkaXYga3QtdGFzay1wcm9jLWRpcmVjdGl2ZSBmZD1mZCBsb2NhbC12YXJzPW9wZW5lZFRhc2tJbk5ld1BhZ2UubG9jYWxWYXJzIHRhc2stZGVmaW5pdGlvbj1vcGVuZWRUYXNrSW5OZXdQYWdlLnRhc2tEZWZpbml0aW9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL2hvdy1pdC13b3Jrcy5odG1sJywneyUgbG9hZCBzdGF0aWNmaWxlcyAlfTwhZG9jdHlwZSBodG1sPjxodG1sPjxoZWFkPjx0aXRsZT5LYXRhbHlvIHwgTmV4dCBnZW5lcmF0aW9uIFplcm8tY29kZSBwbGF0Zm9ybSBwb3dlcmVkIGJ5IEVPUyB8IEhvdyBpdCB3b3JrczwvdGl0bGU+PG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD1cInRleHQvaHRtbDsgY2hhcnNldD11dGYtOFwiPjxtZXRhIGl0ZW1wcm9wPW5hbWUgY29udGVudD1cIkthdGFseW8gfCBMb3ctY29kZSB8IEVPUyB8IEJsb2NrY2hhaW5cIj48bWV0YSBpdGVtcHJvcD1kZXNjcmlwdGlvbiBjb250ZW50PVwiS2F0YWx5byB8IExvdy1jb2RlIHwgWmVyby1jb2RlIHwgVGFzayBtYW5hZ2VtZW50IHwgQmxvY2tjaGFpbiB8IENsb3VkIHwgU2FhUyB8IEVPU1wiPjxsaW5rIHJlbD1cInNob3J0Y3V0IGljb25cIiB0eXBlPWltYWdlL3gtaWNvbiBocmVmPVwieyUgc3RhdGljIFxcJ2Zhdmljb24uaWNvXFwnICV9XCI+PGxpbmsgcmVsPXN0eWxlc2hlZXQgdHlwZT10ZXh0L2NzcyBocmVmPVwieyUgc3RhdGljIFxcJ0Nzcy9ib290c3RyYXAubWluLmNzc1xcJyAlfVwiPjxsaW5rIHJlbD1zdHlsZXNoZWV0IGhyZWY9aHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9mb250LWF3ZXNvbWUvNC41LjAvY3NzL2ZvbnQtYXdlc29tZS5taW4uY3NzPjxzY3JpcHQgdHlwZT10ZXh0L2phdmFzY3JpcHQ+XFxuICAgICAgICAgICAgXFxuICAgICAgICAgICAgICB2YXIgX2dhcSA9IF9nYXEgfHwgW107XFxuICAgICAgICAgICAgICBfZ2FxLnB1c2goW1xcJ19zZXRBY2NvdW50XFwnLCBcXCdVQS0yNzA2MzE3OC0xXFwnXSk7XFxuICAgICAgICAgICAgICBfZ2FxLnB1c2goW1xcJ190cmFja1BhZ2V2aWV3XFwnXSk7XFxuICAgICAgICAgICAgXFxuICAgICAgICAgICAgICAoZnVuY3Rpb24oKSB7XFxuICAgICAgICAgICAgICAgIHZhciBnYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXFwnc2NyaXB0XFwnKTsgZ2EudHlwZSA9IFxcJ3RleHQvamF2YXNjcmlwdFxcJzsgZ2EuYXN5bmMgPSB0cnVlO1xcbiAgICAgICAgICAgICAgICBnYS5zcmMgPSAoXFwnaHR0cHM6XFwnID09IGRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sID8gXFwnaHR0cHM6Ly9zc2xcXCcgOiBcXCdodHRwOi8vd3d3XFwnKSArIFxcJy5nb29nbGUtYW5hbHl0aWNzLmNvbS9nYS5qc1xcJztcXG4gICAgICAgICAgICAgICAgdmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcXCdzY3JpcHRcXCcpWzBdOyBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGdhLCBzKTtcXG4gICAgICAgICAgICAgIH0pKCk7XFxuXFxuICAgICAgICA8L3NjcmlwdD48c3R5bGU+XFxuICAgICAgICAgICAgLypib2R5IHsgcGFkZGluZzogMjBweDsgYmFja2dyb3VuZC1jb2xvcjojQTlEMEY1IDsgYmFja2dyb3VuZC1pbWFnZTogdXJsKFxcJy9zdGF0aWMvaW1hZ2VlZGl0XzlfNjU2MzY1NjI3Ny5wbmdcXCcpO29wYWNpdHk6IDAuOTtmaWx0ZXI6KG9wYWNpdHk9OTApfSovXFxuICAgICAgICAgICAgYm9keSB7IHBhZGRpbmc6IDIwcHg7IGJhY2tncm91bmQtY29sb3I6d2hpdGUgOyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXFwnL3N0YXRpYy9pbWFnZWVkaXRfOV82NTYzNjU2Mjc3LnBuZ1xcJyk7b3BhY2l0eTogMC45O2ZpbHRlcjoob3BhY2l0eT05MCl9XFxuICAgICAgICAgICAgLmNvbnRlbnR7fVxcbiAgICAgICAgICAgIGgxIHsgZm9udC1zaXplOiA1MHB4OyB9XFxuICAgICAgICAgICAgYm9keSB7IGZvbnQ6IDE2cHggSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBjb2xvcjogIzIyMjsgfVxcbiAgICAgICAgICAgIGFydGljbGUgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjYwcHg7IHRleHQtYWxpZ246IGxlZnQ7fVxcbiAgICAgICAgICAgIC5mY29sb3J7Y29sb3I6b3JhbmdlfVxcbiAgICAgICAgICAgIGEgeyBjb2xvcjogI2RjODEwMDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XFxuICAgICAgICAgICAgYTpob3ZlciB7IGNvbG9yOiAjMEIwQjYxOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cXG4gICAgICAgICAgIC8qIC5uYXZiYXItZGVmYXVsdCB7IHBhZGRpbmc6NXB4O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KCNlZWUsI2ZmZil9Ki9cXG4gICAgICAgICAgIC5uYXZiYXItZGVmYXVsdCB7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoI2VlZSwjZGRkKX1cXG4gICAgICAgICAgIC5pbWctY2VudGVyIHtcImRpc3BsYXk6YmxvY2s7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0bztcIn1cXG4gICAgICAgXFxuICAgICAgICAgICAvKmJhY2tncm91bmQtaW1hZ2U6IHVybChcXCcvc3RhdGljL0thdGFseW9fYmFja2dyb3VuZC5qcGdcXCcpfSAjZGM4MTAwKi9cXG4gICAgICAgICAgPC9zdHlsZT48L2hlYWQ+PGJvZHk+PG5hdiBjbGFzcz1cIm5hdmJhciBuYXZiYXItZGVmYXVsdCBuYXZiYXItZml4ZWQtdG9wXCI+PGRpdiBjbGFzcz1jb250YWluZXItZmx1aWQ+PGRpdiBjbGFzcz1uYXZiYXItaGVhZGVyPjxpbWcgd2lkdGg9MTUwIHNyYz0vc3RhdGljL0thdGFseW9fbmFtZV90cmFuc3BhcmVudC5wbmc+PC9kaXY+PHVsIGNsYXNzPVwibmF2IG5hdmJhci1uYXYgbmF2YmFyLXJpZ2h0XCI+PGxpPjxhIGhyZWY9L2xhbmRpbmc+PGkgY2xhc3M9XCJmYSBmYS1ob21lXCI+PC9pPiBIb21lPC9hPjwvbGk+PC91bD48L2Rpdj48L25hdj48ZGl2IGNsYXNzPWNvbnRlbnQ+PGFydGljbGU+PGgxIGNsYXNzPWZjb2xvcj5Ib3cgaXQgYWxsIHdvcmtzPC9oMT48YnI+PGRpdj5oNCBjbGFzcz1cInRhZ1wiPiZsdDtUaGUgbWlzc2lvbi8mZ3Q7PHA+S2F0YWx5byBpcyBvbiBhIG1pc3Npb24gdG8gZW1wb3dlciBwZW9wbGUgYW5kIHByb3ZpZGUgdGhlbSB3aXRoIHRoZSB0b29scyB0byBidWlsZCBlbnRlcnByaXNlIGdyYWRlIGFwcGxpY2F0aW9ucywgZXZlbiBpZiB0aGV5IGRvIG5vdCBoYXZlIHRoZSBuZWNlc3NhcnkgY29kaW5nIHNraWxscy4gV2h5IGFyZSB3ZSBkb2luZyB0aGlzIG9yIHdoYXQgcHJvYmxlbSBhcmUgd2UgdHJ5aW5nIHRvIHNvbHZlPyBUaGVyZSBpcyBzYXlpbmcgdGhhdCBzb2Z0d2FyZSBkZXZlbG9wZXJzIGFyZSBwZW9wbGUgd2l0aCBhIG1hZ2ljYWwgc2tpbGwgb2YgdHVybmluZyBjb2ZmZWUgaW50byBjb2RlLiBUaGUgZGVtYW5kIGZvciBuZXcgYXBwbGljYXRpb24gaXMgaHVnZSBhbmQgdGhlcmVcXCdzIGVpdGhlciBub3QgZW5vdWdoIGNvZmZlZSBvciBkZXZlbG9wZXJzIGluIHRoZSB3b3JsZCB0byBicmluZyBhbGwgaW5ub3ZhdGl2ZSBzb2x1dGlvbiB0byBsaWZlLiBLYXRhbHlvIGhhcyB0aGUgc29sdXRpb24gaW4gdGhlIGZvcm0gb2YgdGhlIG5leHQgZ2VuZXJhdGlvbiBsb3ctY29kZSBwbGF0Zm9ybSBwb3dlcmVkIGJ5IHRoZSBFT1MgYmxvY2tjaGFpbi48L3A+PGJyPjxoNCBjbGFzcz10YWc+Jmx0O1doYXQgaXMgZGlmZmVyZW50IGFib3V0IEthdGFseW8/LyZndDs8L2g0PjxwPkthdGFseW8gaXMgYnVpbHQgaW4gYSB3YXkgdG8gbWltaWMgcmVhbCBsaWZlIGFuZCBkZWxpdmVyIGF1dG9tYXRpb24gd2hlcmUgdGhlIHdvcmsgaXMgYmVpbmcgZG9uZS4gSW4gb3VyIGRhaWx5IGxpdmVzIHdlIHVzZSB2YXJpb3VzIHJlc291cmNlcyB0byBhY2hpZXZlIGRlc2lyZWQgcmVzdWx0cy4gRm9yIGV4YW1wbGUgcmVzb3VyY2VzIGxpa2UgcmF3IG1hdGVyaWFscyBvciBwYXJ0cyBhcmUgdXNlZCB0byBidWlsZCBhbGwga2luZCBvZiBwcm9kdWN0cy4gSW4gYSBzZXJ2aWNlcyBpbmR1c3RyeSB0aGluZ3MgYXJlIG5vdCBzbyB0YW5naWJsZSBob3dldmVyIGFsc28gdmFyaW91cyByZXNvdXJjZXMgYXJlIHVzZWQgdG8gcHJvdmlkZSBhIHNlcnZpY2UuIEZvciB0aGF0IHJlYXNvbiB0aGUgbWFpbiBidWlsZGluZyBibG9jayBvZiBLYXRhbHlvIHN5c3RlbSBpcyBhIHJlc291cmNlLiBUaGUgc3lzdGVtIHByb3ZpZGVzIHRoZSB0b29scyB0byBjcmVhdGUgYW5kIG1hbmFnZSBkaWZmZXJlbnQgdHlwZXMgb2YgcmVzb3VyY2VzIGxpa2UgZGF0YXNldHMsIGZpbGVzIG9yIG5vdGlmaWNhdGlvbnMgZm9yIGV4YW1wbGUuIFRoZXJlIGlzIGhvd2V2ZXIgYSBzcGVjaWFsIHR5cGUgb2YgYSByZXNvdXJjZSBhbmQgdGhhdCBpcyB3b3JrIGkuZS4gYSB0YXNrIHdoaWNoIGhhcyB0aGUgYWJpbGl0eSB0byB0cmFuc2Zvcm0gb3RoZXIgcmVzb3VyY2VzIGFuZCBlbmFibGUgY3JlYXRpb24gb2Ygd29ya2Zsb3dzLiBXaXRoIHRoaXMgc2ltcGxlIGNvbmNlcHQgcGVvcGxlIHdpdGggZGlmZmVyZW50IGJhY2tncm91bmRzIGFuZCBza2lsbHMgY2FuIGVhc2lseSBkZXNpZ24gYW5kIGRldmVsb3AgdmFyaW91cyBhcHBsaWNhdGlvbnMgd2l0aG91dCB3cml0aW5nIGEgc2luZ2xlIGxpbmUgb2YgY29kZS4gVGhpcyBhcHByb2FjaCB0YWtlcyBwcm9kdWN0aXZpdHkgdG8gYSBuZXcgbGV2ZWwgZXZlbiBmb3Igc29mdHdhcmUgZGV2ZWxvcGVycyBob3dldmVyIHRoZSBtYWluIGJlbmVmaXQgY29tZXMgZnJvbSBpbmNyZWFzaW5nIHRoZSBwb29sIG9mIHBlb3BsZSB0aGF0IGFyZSBhYmxlIHRvIGRlbGl2ZXIgbmV3IGZ1bmN0aW9uYWxpdHkgYW5kIGlkZWFzIHRvIGxpZmUuPC9wPjxicj48aDQgY2xhc3M9dGFnPiZsdDtXaHkgYmxvY2tjaGFpbj8vJmd0OzwvaDQ+PHA+QmxvY2tjaGFpbiBpcyB0aGUgbW9zdCBoeXBlZCB0ZWNobm9sb2d5IGluIHRoZSB3b3JsZCB0b2RheSBhbmQgc29tZSBhcmUgdHJ5aW5nIHRvIGFwcGx5IHRoZSBibG9ja2NoYWluIGFzIHRoZSBzb2x1dGlvbiB0byBldmVyeSBwcm9ibGVtLiBBdCBLYXRhbHlvIHdlIHN0cm9uZ2x5IGJlbGlldmUgdGhhdCBibG9ja2NoYWluIGlzIGEgcmV2b2x1dGlvbmFyeSB0ZWNobm9sb2d5IHRoYXQgd2lsbCB0cmFuc2Zvcm0gbWFueSBhc3BlY3RzIG9mIG91ciBsaXZlcyBpbiB0aGUgZnV0dXJlIGhvd2V2ZXIgaXQgY2FuIG5vdCBiZSBhcHBsaWVkIGFzIGEgc29sdXRpb24gdG8gZXZlcnkgcHJvYmxlbS4gV2l0aCB0aGF0IGJlaW5nIHNhaWQgS2F0YWx5byBpcyB1c2luZyBhIGJsb2NrY2hhaW4gdG8gaW50cm9kdWNlIGEgdG9rZW4gdGhhdCBpcyB1c2VkIHRvIGVuYWJsZSBhIHJld2FyZGluZyBzeXN0ZW0gYW5kIGVuYWJsZSBhbmQgZHJpdmUgYSBtYXJrZXRwbGFjZSB3aGVyZSBwZW9wbGUgY2FuIGJ1aWxkIHZhcmlvdXMgZmVhdHVyZXMgYW5kIHNlcnZpY2VzIG9uIHRoZSBwbGF0Zm9ybSBhbmQgYmUgcmV3YXJkZWQgaW4gdGhlIGZvcm0gb2YgS2F0YWx5byB0b2tlbi4gSW4gYWRkaXRpb24gdGhlIGJsb2NrY2hhaW4gaXMgdXNlZCB0byBlbmFibGUgYWR2YW5jZWQgZGF0YSBtYW5hZ2VtZW50IHNlcnZpY2VzIGxpa2UgZGF0YSBpbW11dGFiaWxpdHkuIFRoaXMgZXNzZW50aWFsbHkgbWVhbnMgdGhhdCBkYXRhIG1hbmFnZWQgaW4gdGhlIHN5c3RlbSBjYW4gYmUgdHJhY2tlZCBhbmQgbWFuYWdlZCBvbiB0aGUgYmxvY2tjaGFpbiBmb3IgY2FzZXMgd2hlcmUgZGF0YSBpbW11dGFsaXR5IGZlYXR1cmUgaXMgcmVxdWlyZWQgd2hpY2ggd2lsbCBlbmFibGVzIGEgbmV3IGxldmVsIG9mIGJvdGggdHJhbnNwYXJlbmN5IGFuZCBzZWN1cml0eSBvZiB0aGUgZGF0YS48L3A+PGJyPjxoNCBjbGFzcz10YWc+Jmx0O1doeSBFT1MgYmxvY2tjaGFpbj8vJmd0OzwvaDQ+PHA+RU9TIHdhcyB0aGUgYmxvY2tjaGFpbiB0ZWNobm9sb2d5IG9mIGNob2ljZSBkdWUgdG8gaXRcXCdzIDMuMCBmZWF0dXJlcyBob3dldmVyIHR3byBtYWluIGZlYXR1cmVzIHN0YW5kIG91dCBhbmQgdGhvc2UgYXJlIGhpZ2ggdHJhbnNhY3Rpb24gdGhyb3VnaHB1dCBhbmQgemVybyB0cmFuc2FjdGlvbiBmZWVzIGZvciB0aGUgZW5kIHVzZXJzLjwvcD48L2Rpdj48L2FydGljbGU+PC9kaXY+PC9ib2R5PjwvaHRtbD4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9sYW5kaW5nLmh0bWwnLCd7JSBsb2FkIHN0YXRpY2ZpbGVzICV9PCFkb2N0eXBlIGh0bWw+PGh0bWw+PGhlYWQ+PHRpdGxlPkthdGFseW8gfCBOZXh0IGdlbmVyYXRpb24gWmVyby1jb2RlIHBsYXRmb3JtIHBvd2VyZWQgYnkgRU9TPC90aXRsZT48bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04XCI+PG1ldGEgaXRlbXByb3A9bmFtZSBjb250ZW50PVwiS2F0YWx5byB8IExvdy1jb2RlIHwgRU9TIHwgQmxvY2tjaGFpblwiPjxtZXRhIGl0ZW1wcm9wPWRlc2NyaXB0aW9uIGNvbnRlbnQ9XCJLYXRhbHlvIHwgTG93LWNvZGUgfCBaZXJvLWNvZGUgfCBUYXNrIG1hbmFnZW1lbnQgfCBCbG9ja2NoYWluIHwgQ2xvdWQgfCBTYWFTIHwgRU9TXCI+PGxpbmsgcmVsPVwic2hvcnRjdXQgaWNvblwiIHR5cGU9aW1hZ2UveC1pY29uIGhyZWY9XCJ7JSBzdGF0aWMgXFwnaW1nL2Zhdmljb24uaWNvXFwnICV9XCI+PHNjcmlwdCBzcmM9XCJ7JSBzdGF0aWMgXFwnc2NyaXB0cy9qcXVlcnkubWluLmpzXFwnICV9XCI+PC9zY3JpcHQ+PHNjcmlwdCBzcmM9XCJ7JSBzdGF0aWMgXFwnc2NyaXB0cy9ib290c3RyYXAubWluLmpzXFwnICV9XCI+PC9zY3JpcHQ+PGxpbmsgcmVsPXN0eWxlc2hlZXQgdHlwZT10ZXh0L2NzcyBocmVmPVwieyUgc3RhdGljIFxcJ0Nzcy9ib290c3RyYXAubWluLmNzc1xcJyAlfVwiPjxsaW5rIHJlbD1zdHlsZXNoZWV0IHR5cGU9dGV4dC9jc3MgaHJlZj1cInslIHN0YXRpYyBcXCdDc3MvbWFpbi5jc3NcXCcgJX1cIj48bGluayByZWw9c3R5bGVzaGVldCB0eXBlPXRleHQvY3NzIGhyZWY9XCJ7JSBzdGF0aWMgXFwnQ3NzL25hdmJhci5jc3NcXCcgJX1cIj48c2NyaXB0IHR5cGU9dGV4dC9qYXZhc2NyaXB0PlxcclxcbiAgICAgICAgICAgIFxcclxcbiAgICAgICAgICAgICAgdmFyIF9nYXEgPSBfZ2FxIHx8IFtdO1xcclxcbiAgICAgICAgICAgICAgX2dhcS5wdXNoKFtcXCdfc2V0QWNjb3VudFxcJywgXFwnVUEtMjcwNjMxNzgtMVxcJ10pO1xcclxcbiAgICAgICAgICAgICAgX2dhcS5wdXNoKFtcXCdfdHJhY2tQYWdldmlld1xcJ10pO1xcclxcbiAgICAgICAgICAgIFxcclxcbiAgICAgICAgICAgICAgKGZ1bmN0aW9uKCkge1xcclxcbiAgICAgICAgICAgICAgICB2YXIgZ2EgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFxcJ3NjcmlwdFxcJyk7IGdhLnR5cGUgPSBcXCd0ZXh0L2phdmFzY3JpcHRcXCc7IGdhLmFzeW5jID0gdHJ1ZTtcXHJcXG4gICAgICAgICAgICAgICAgZ2Euc3JjID0gKFxcJ2h0dHBzOlxcJyA9PSBkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCA/IFxcJ2h0dHBzOi8vc3NsXFwnIDogXFwnaHR0cDovL3d3d1xcJykgKyBcXCcuZ29vZ2xlLWFuYWx5dGljcy5jb20vZ2EuanNcXCc7XFxyXFxuICAgICAgICAgICAgICAgIHZhciBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXFwnc2NyaXB0XFwnKVswXTsgcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShnYSwgcyk7XFxyXFxuICAgICAgICAgICAgICB9KSgpO1xcclxcblxcclxcbiAgICAgICAgPC9zY3JpcHQ+PC9oZWFkPjxib2R5PjxuYXYgY2xhc3M9XCJuYXZiYXIgbmF2YmFyLWN1c3RvbSBuYXZiYXItZml4ZWQtdG9wXCIgcm9sZT1uYXZpZ2F0aW9uPjxkaXYgY2xhc3M9Y29udGFpbmVyLWZsdWlkPjxkaXYgY2xhc3M9bmF2YmFyLWhlYWRlcj48aW1nIGNsYXNzPW5hdmJhcmltZyBzcmM9L3N0YXRpYy9pbWcvS2F0YWx5b19uYW1lX3RyYW5zcGFyZW50LnBuZz4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cIm5hdmJhci10b2dnbGUgcHVsbC1yaWdodFwiIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIGRhdGEtdGFyZ2V0PSNuYXZiYXItY29sbGFwc2UtMT48c3BhbiBjbGFzcz1zci1vbmx5PlRvZ2dsZSBuYXZpZ2F0aW9uPC9zcGFuPiA8c3BhbiBjbGFzcz1pY29uLWJhcj48L3NwYW4+IDxzcGFuIGNsYXNzPWljb24tYmFyPjwvc3Bhbj4gPHNwYW4gY2xhc3M9aWNvbi1iYXI+PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2xsYXBzZSBuYXZiYXItY29sbGFwc2VcIiBpZD1uYXZiYXItY29sbGFwc2UtMT48dWwgY2xhc3M9XCJuYXYgbmF2YmFyLW5hdiBuYXZiYXItcmlnaHRcIj48bGk+PGEgY2xhc3M9Zm50c2l6ZTEgaHJlZj0jaG9tZT5Ib21lPC9hPjwvbGk+PGxpPjxhIGNsYXNzPWZudHNpemUxIGhyZWY9I2NvbW11bml0eT5Db21tdW5pdHk8L2E+PC9saT48bGk+PGEgY2xhc3M9Zm50c2l6ZTEgaHJlZj0jdGVhbT5UZWFtPC9hPjwvbGk+PGxpPjxhIGNsYXNzPWZudHNpemUxIHN0eWxlPVwidG9wOiAwLjV2dztcIiBocmVmPSNmZWF0dXJlcz5GZWF0dXJlczwvYT48L2xpPjxsaT48YSBjbGFzcz1mbnRzaXplMSBocmVmPSNjb250YWN0PkNvbnRhY3Q8L2E+PC9saT48L3VsPjwvZGl2PjwvZGl2PjwvbmF2PjxkaXYgaWQ9aG9tZSBjbGFzcz1jb250ZW50PjxkaXYgY2xhc3M9XCJyb3cgbWFyZ2luMFwiIHN0eWxlPWhlaWdodDoxMDBweD48L2Rpdj48ZGl2IGlkPUJVSUxELUVBUk4gY2xhc3M9XCJyb3cgbWFyZ2luMFwiPjxkaXYgY2xhc3M9XCJjb2wteHMtMSBjb2wtbGctOCBjb2wtbWQtMiBmY29sb3IgdGl0bGVcIj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTUgY29sLWxnLTggY29sLW1kLTQgZmNvbG9yIHRpdGxlXCI+PGRpdj48ZGl2IGNsYXNzPWZudHNpemUyPkJ1aWxkIGFwcGxpY2F0aW9ucy48L2Rpdj48ZGl2IGNsYXNzPWZudHNpemUyPkVhcm4gcmV3YXJkcy48L2Rpdj48ZGl2IGNsYXNzPWZudHNpemUyPk5vIGNvZGluZy48L2Rpdj48L2Rpdj48ZGl2IHN0eWxlPW1hcmdpbi10b3A6MzBweD48ZGl2IHN0eWxlPW1hcmdpbi10b3A6MTBweD48YSBocmVmPSNmZWF0dXJlcyBjbGFzcz1cImZudHNpemUxIGJ0bi1sZWFybi1tb3JlXCI+TGVhcm4gbW9yZSAmbmJzcCAmIzEwMDk1PC9hPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtNSBjb2wtbGctMTAgY29sLW1kLTVcIiBzdHlsZT10b3A6MjBweD48aW1nIGNsYXNzPWltZy1yZXNwb25zaXZlIHN0eWxlPVwibWF4LXdpZHRoOiAxMjAlO1wiIHNyYz0vc3RhdGljL2ltZy9ob21lLW1haW4taW1hZ2UucG5nPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtMSBjb2wtbGctOCBjb2wtbWQtMSBmY29sb3IgdGl0bGVcIj48L2Rpdj48L2Rpdj48ZGl2IGlkPWNvbW11bml0eSBjbGFzcz1cInJvdyBtYXJnaW4wIHdoeS1kaWZmIGZjb2xvci1ibHVlXCIgc3R5bGU9XCJkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OiA4MHB4O1wiPjxkaXYgY2xhc3M9XCJjb2wteHMtMiBjb2wtbGctOCBjb2wtbWQtMlwiIHN0eWxlPVwidG9wOiA0dmg7XCI+PGltZyBjbGFzcz1pbWctcmVzcG9uc2l2ZSBzdHlsZT1cInBvc2l0aW9uOnJlbGF0aXZlO21heC13aWR0aDogMjB2bWluO1wiIHNyYz0vc3RhdGljL2ltZy9zaWdudXAtZHVkZS5wbmc+PC9kaXY+PGRpdiBpZD13ZWxjb21lIGNsYXNzPVwiY29sLXhzLTggY29sLW1kLTggY29sLWxnLTgwIGZudHNpemUyXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+PGRpdiBjbGFzcz1cImZjb2xvci1ibHVlIGZudHNpemUyXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMXZoO1wiPjxiPldlbGNvbWUgdG8gS2F0YWx5byE8L2I+PC9kaXY+PGRpdiBjbGFzcz1cImZjb2xvci1ibHVlIGZudHNpemUyXCI+S2F0YWx5byBpcyBhbiBvcGVuLXNvdXJjZSwgZGVjZW50cmFsaXNlZCwgY29tbXVuaXR5IGRyaXZlbiB6ZXJvLWNvZGUgKGFrYSBsb3ctY29kZSkgcGxhdGZvcm0gcG93ZXJlZCBieSB0aGUgRU9TIGJsb2NrY2hhaW4uPC9kaXY+PGEgaHJlZj1odHRwczovL2Vvcy5pbyB0aXRsZT1cIkxlYXJuIG1vcmUgYWJvdXQgRU9TXCI+PGltZyBoZWlnaHQ9NjQgc3JjPS9zdGF0aWMvaW1nL1BPV0VSRURfQllfRUlPU18yLnBuZz48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy0yIGNvbC1sZy04IGNvbC1tZC0yXCI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtYXJnaW4wXCIgc3R5bGU9aGVpZ2h0OjV2dz48L2Rpdj48ZGl2IGlkPUNSRUFUT1JTX0NPTlNVTUVSU18gY2xhc3M9XCJyb3cgbWFya2V0cGxhY2VcIiBzdHlsZT1cIm1hcmdpbjowcHg7dG9wOiAtN3Z3O1wiPjxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLWxnLTI0IGNvbC1tZC0xMiBmY29sb3JcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMDsgcGFkZGluZy1yaWdodDogMDtcIj48ZGl2IGNsYXNzPXJvdyBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDEwMHB4O21hcmdpbjowXCI+PGRpdiBjbGFzcz1cImNvbC14cy0xIGNvbC1sZy02IGNvbC1tZC0zXCI+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy0xMSBjb2wtbGctNyBjb2wtbWQtNyBwYWRkaW5nMFwiIHN0eWxlPVwibGVmdDogLTR2bWluO1wiPjxkaXYgY2xhc3M9cm93IHN0eWxlPjxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLWxnLTI0IGNvbC1tZC0xMiBwYWRkaW5nMFwiPjxkaXYgY2xhc3M9Zm50c2l6ZTIgXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLXRvcDoxMHB4O21hcmdpbi1ib3R0b206MTBweDtcIj5Ub2tlbiwgY29tbXVuaXR5IGFuZCBhIG1hcmtldHBsYWNlPC9kaXY+PGRpdiBjbGFzcz1cImZjb2xvciBmbnRzaXplMSB3ZWxsIHNoYWRvdy13ZWxsXCIgc3R5bGU+S2F0YWx5byB0b2tlbiBjcmVhdGVkIG9uIHRoZSBFT1MgYmxvY2tjaGFpbiBpcyBhIGZvcmNlIHRoYXQgd2lsbCBkcml2ZSB0aGUgY29tbXVuaXR5IEthdGFseW8gYWltcyB0byBidWlsZC4gV2hlbiB5b3Ugam9pbiB5b3UgZ2V0IGFjY2VzcyB0byB0aGUgemVyby1jb2RlIHBsYXRmb3JtIGxpa2Ugbm8gb3RoZXIgZW1wb3dlcmluZyBwZW9wbGUgdG8gY3JlYXRlIGFwcGxpY2F0aW9ucyB3aXRob3V0IHdyaXRpbmcgYSBzaW5nbGUgbGluZSBvZiBjb2RlLiBJZiB5b3UgY3JlYXRlIHNvbWV0aGluZyBncmVhdCB0aGF0IG90aGVyIG1lbWJlcnMgd2FudCB0byB1c2UgeW91IHNob3VsZCBnZXQgcmV3YXJkZWQgYW5kIHdpdGggS2F0YWx5byB5b3UgYWJzb2x1dGVseSBkbyBnZXQgcmV3YXJkZWQgaW4gdGhlIGZvcm0gb2YgS2F0YWx5byB0b2tlbi4gUmV3YXJkcyBhcmUgY29taW5nIGluIGFzIGxvbmcgYXMgdGhlIGFwcGxpY2F0aW9uIGlzIGJlaW5nIHVzZWQgYnkgb3RoZXIgb3JnYW5pc2F0aW9ucyBvciBpbmRpdmlkdWFscy4gSWYgeW91IGp1c3Qgd2FudCB0byB1c2UgYXBsaWNhdGlvbnMgYnVpbHQgYnkgb3RoZXIgbWVtYmVycyBvZiB0aGUgY29tbXVuaXR5IHlvdSBjYW4gZG8ganVzdCB0aGF0LiBXaGV0aGVyIHlvdVxcJ3JlIGEgQ3JlYXRvciBvciBhIENvbnN1bWVyIHlvdXIgam91cm5leSB3aXRoIEthdGFseW8gaGFzIDMgc2ltcGxlIHN0ZXBzIGFuZCBpdCBzdGFydHMgd2l0aCBzaWduaW5nIHVwLjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLWxnLTI0IGNvbC1tZC0xMiBwYWRkaW5nMFwiIHN0eWxlPVwibWFyZ2luLXRvcDogMzBweFwiPjxkaXYgY2xhc3M9cm93IGlkPXJvdzAgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMC41dnc7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Ym90dG9tO3BhZGRpbmctdG9wOjEwcHhcIj48ZGl2IGNsYXNzPVwiZm50Q3JlYXRvcnMgY29sLXhzLTYgY29sLWxnLTYgY29sLW1kLTZcIiBzdHlsZT1cInRleHQtYWxpZ246cmlnaHQ7dGV4dC1zaGFkb3c6IDFweCAxcHggMnB4ICMwMDAwMDA7XCI+PGRpdj5DcmVhdG9yczwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtMSBjb2wtbGctOCBjb2wtbWQtMVwiPjwvZGl2PjxkaXYgY2xhc3M9XCJmbnRDcmVhdG9ycyBjb2wteHMtNSBjb2wtbGctMTAgY29sLW1kLTVcIiBzdHlsZT1cInRleHQtYWxpZ246bGVmdDt0ZXh0LXNoYWRvdzogMXB4IDFweCAycHggIzAwMDAwMDtcIj48ZGl2PkNvbnN1bWVyczwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgZm50c2l6ZTFcIiBpZD1yb3cxIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDAuNXZ3O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtcIj48ZGl2IGNsYXNzPVwiY29sLXhzLTUgY29sLWxnLTEwIGNvbC1tZC01XCIgc3R5bGU9dGV4dC1hbGlnbjpyaWdodDs+PGRpdj5TdGVwIDE6IFNpZ24gdXA8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTEgY29sLWxnLTggY29sLW1kLTFcIiBzdHlsZT1cInBhZGRpbmc6IDBcIj48aW1nIGNsYXNzIHN0eWxlPVwiZGlzcGxheTogYmxvY2s7IG1heC13aWR0aDogODAlOyBoZWlnaHQ6IGF1dG87XCIgc3JjPS9zdGF0aWMvaW1nL3BlbmNpbC5wbmc+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy0xIGNvbC1sZy04IGNvbC1tZC0xXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDEuNXZ3XCI+PGltZyBzcmM9L3N0YXRpYy9pbWcvdmVydGljYWxyZWN0LnBuZyBzdHlsZT1oZWlnaHQ6M3Z3PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtMSBjb2wtbGctOCBjb2wtbWQtMVwiIHN0eWxlPVwicGFkZGluZzogMFwiPjxpbWcgY2xhc3Mgc3R5bGU9XCJkaXNwbGF5OiBibG9jazsgbWF4LXdpZHRoOiA4MCU7IGhlaWdodDogYXV0bztcIiBzcmM9L3N0YXRpYy9pbWcvcGVuY2lsLnBuZz48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTQgY29sLWxnLTggY29sLW1kLTRcIiBzdHlsZT10ZXh0LWFsaWduOmxlZnQ7PjxkaXY+U3RlcCAxOiBTaWduIHVwPC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBmbnRzaXplMVwiIGlkPXJvdzIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMC41dnc7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO1wiPjxkaXYgY2xhc3M9XCJjb2wteHMtNSBjb2wtbGctMTAgY29sLW1kLTVcIiBzdHlsZT10ZXh0LWFsaWduOnJpZ2h0O3BhZGRpbmctbGVmdDowPjxkaXY+U3RlcCAyOiBDcmVhdGUgYXBwbGljYXRpb25zPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy0xIGNvbC1sZy04IGNvbC1tZC0xXCIgc3R5bGU9XCJwYWRkaW5nOiAwXCI+PGltZyBjbGFzcyBzdHlsZT1cImRpc3BsYXk6IGJsb2NrOyBtYXgtd2lkdGg6IDgwJTsgaGVpZ2h0OiBhdXRvO1wiIHNyYz0vc3RhdGljL2ltZy9hcHBsaWNhdGlvbnMucG5nPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtMSBjb2wtbGctOCBjb2wtbWQtMVwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiAxLjV2dztcIj48aW1nIHNyYz0vc3RhdGljL2ltZy92ZXJ0aWNhbHJlY3QucG5nIHN0eWxlPWhlaWdodDozdnc+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy0xIGNvbC1sZy04IGNvbC1tZC0xXCIgc3R5bGU9XCJwYWRkaW5nOiAwXCI+PGltZyBjbGFzcyBzdHlsZT1cImRpc3BsYXk6IGJsb2NrOyBtYXgtd2lkdGg6IDgwJTsgaGVpZ2h0OiBhdXRvO1wiIHNyYz0vc3RhdGljL2ltZy9NYWduaWZ5aW5nX0dsYXNzLnBuZz48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTQgY29sLWxnLTggY29sLW1kLTRcIiBzdHlsZT10ZXh0LWFsaWduOmxlZnQ7PjxkaXY+U3RlcCAyOiBGaW5kIGFwcGxpY2F0aW9uczwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgZm50c2l6ZTFcIiBpZD1yb3czIHN0eWxlPWRpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcj48ZGl2IGNsYXNzPVwiY29sLXhzLTUgY29sLWxnLTEwIGNvbC1tZC01XCIgc3R5bGU9dGV4dC1hbGlnbjpyaWdodDtwYWRkaW5nLWxlZnQ6MD48ZGl2PlN0ZXAgMzogRWFybiByZXdhcmRzITwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtMSBjb2wtbGctOCBjb2wtbWQtMVwiIHN0eWxlPVwicGFkZGluZzogMFwiPjxpbWcgY2xhc3Mgc3R5bGU9XCJkaXNwbGF5OiBibG9jazsgbWF4LXdpZHRoOiA4MCU7IGhlaWdodDogYXV0bztcIiBzcmM9L3N0YXRpYy9pbWcvcHJlc2VudC5wbmc+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy0xIGNvbC1sZy04IGNvbC1tZC0xXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDEuNXZ3O1wiPjxpbWcgc3JjPS9zdGF0aWMvaW1nL3ZlcnRpY2FscmVjdC5wbmcgc3R5bGU9aGVpZ2h0OjN2dz48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTEgY29sLWxnLTggY29sLW1kLTFcIiBzdHlsZT1cInBhZGRpbmc6IDBcIj48aW1nIGNsYXNzIHN0eWxlPVwiZGlzcGxheTogYmxvY2s7IG1heC13aWR0aDogODAlOyBoZWlnaHQ6IGF1dG87XCIgc3JjPS9zdGF0aWMvaW1nL1N1aXRjYXNlXzIucG5nPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtNCBjb2wtbGctOCBjb2wtbWQtNFwiIHN0eWxlPXRleHQtYWxpZ246bGVmdDs+PGRpdj5TdGVwIDM6IFN0YXJ0IHdvcmtpbmchPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImhpZGRlbi14cyBjb2wteHMtMiBjb2wtbGctOCBjb2wtbWQtMiBwYWRkaW5nMFwiIHN0eWxlPVwibWFyZ2luLXRvcDogNTBweDtcIj48c3BhbiBjbGFzcz1kb3Q+PC9zcGFuPiA8c3BhbiBjbGFzcz1yaW5nPjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG1hcmdpbjBcIiBzdHlsZT1cImRpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW4tYm90dG9tOiA1MHB4O21hcmdpbi10b3A6NTBweFwiPjxkaXYgY2xhc3M9XCJoaWRkZW4teHMgY29sLWxnLTggY29sLW1kLTNcIj48c3BhbiBjbGFzcz1iaWdkb3Q+PC9zcGFuPiA8c3BhbiBjbGFzcz1kb3Q+PC9zcGFuPiA8c3BhbiBjbGFzcz1yaW5nPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwibWFyZ2luTGVmdFhzIGNvbC14cy02IGNvbC1sZy02IGNvbC1tZC0zXCIgc3R5bGU+PGRpdiBjbGFzcz1cImZjb2xvci1oYW5kIGZudHNpemUyXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMXZoXCI+Q29uc3VtZXJzPC9kaXY+PGRpdiBjbGFzcz1cImZjb2xvciBmbnRzaXplMSB3ZWxsIHNoYWRvdy13ZWxsXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMXZoO1wiPkFzIHRoZSBjb21tdW5pdHkgZ3Jvd3MgdGhlIGNvbnN1bWVycyB3aWxsIGhhdmUgYWNjZXNzIHRvIGEgcGxldGhvcmEgb2YgYXBwbGljYXRpb25zIGZvciBtYW55IGRpZmZlcmVudCBuZWVkcy4gVGhlIHJlYWwgc3RyZW5naHQgb2YgdGhlIHplcm8tY29kZSBwbGF0Zm9ybSBsaWtlIEthdGFseW8gaXMgc2hvd24gd2hlbiB0aGUgZXhpc3RpbmcgZnVuY3Rpb25hbGl0eSBpcyBub3QgZml0dGluZyBwZXJmZWN0bHkuIENoYW5nZXMgY2FuIGJlIGludHJvZHVjZWQgYXQgMTB4IHdoZW4gY29tcGFyZWQgdG8gdHJhZGl0aW9uYWwgcHJvZ3JhbW1pbmcgYW5kIGlmIHRoZSBvcmlnaW5hbCBDcmVhdG9yIGlzIG5vdCBhdmFpbGFibGUgdG8gaGVscCBzZXJ2aWNlcyBjYW4gYmUgcmVxdWVzdGVkIGZyb20gb3RoZXIgQ3JlYXRvcnMgaW4gdGhlIGNvbW11bml0eS4gQnV0IHdoZW4gQ29uc3VtZXJzIHNlZSBob3cgZWFzeSBpdCBpcyB0byBidWlsZCBmZWF0dXJlcyBpbiBLYXRhbHlvIHRoZXkgd2lsbCBzb29uIGJlY29tZSBDcmVhdG9ycyB0aGVtc2VsdmVzLjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtNiBjb2wtbGctNiBjb2wtbWQtNVwiPjxpbWcgY2xhc3M9aW1nLXJlc3BvbnNpdmUgc3R5bGUgc3JjPS9zdGF0aWMvaW1nL2NvbnN1bWVycy5wbmc+PC9kaXY+PGRpdiBjbGFzcz1cImhpZGRlbi14cyBjb2wtbGctOCBjb2wtbWQtMVwiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbWFyZ2luMFwiIHN0eWxlPVwiZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1ib3R0b206IDUwcHg7bWFyZ2luLXRvcDo1MHB4XCI+PGRpdiBjbGFzcz1cImhpZGRlbi14cyBjb2wtbGctOCBjb2wtbWQtMlwiPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtNiBjb2wtbGctNiBjb2wtbWQtNFwiIHN0eWxlPjxpbWcgY2xhc3M9aW1nLXJlc3BvbnNpdmUgc3R5bGU9XCJkaXNwbGF5OiBibG9jazsgbWFyZ2luLWxlZnQ6IGF1dG87bWFyZ2luLXJpZ2h0OiBhdXRvXCIgc3JjPS9zdGF0aWMvaW1nL2hvbWUtbWFpbi1pbWFnZS5wbmc+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy02IGNvbC1sZy0xMCBjb2wtbWQtM1wiIHN0eWxlPjxkaXYgY2xhc3M9XCJmY29sb3ItaGFuZCBmbnRzaXplMlwiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDF2aFwiPkNyZWF0b3JzPC9kaXY+PGRpdiBjbGFzcz1cImZjb2xvciBmbnRzaXplMSB3ZWxsIHNoYWRvdy13ZWxsXCIgc3R5bGU+Q3JlYXRvcnMgb2YgdGhlIGFwcHMgYXJlIGVxdWlwcGVkIHdpdGggYW4gZWFzeSB0byB1c2UgdmlzdWFsIHRvb2xzIHRoYXQgZW1wb3dlcnMgdGhlbSB0byBjcmVhdGUgYXBwbGljYXRpb25zIHdpdGhvdXQgd3JpdGluZyBhIHNpbmdsZSBsaW5lIG9mIGNvZGUuIFdpdGggc2ltcGxlIHlldCBwb3dlcmZ1bCB6ZXJvLWNvZGUgZW5naW5lIGJ1aWxkaW5nIGFwcHMgaXMgYSBicmVlemUuIEF0IHRoaXMgc3RhZ2UgS2F0YWx5byBpcyBiZXN0IHN1aXRlZCBmb3IgY3JlYXRpbmcgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBkYXRhIGNhcHR1cmUgYW5kIHdvcmtmbG93IGNhcGFiaWxpdGllcyBpbmNsdWRpbmcgY29sbGFib3JhdGlvbiBhbmQgbm90aWZpY2F0aW9uIGNhcGFiaWxpdGllcy4gT24gdG9wIG9mIHRoYXQgS2F0YWx5byBlbmFibGVzIGNyZWF0aW9uIG9mIHRva2VucyBhbmQgaW1tdXRhYmxlIGRhdGFzZXRzIHNlY3VyZWx5IHN0b3JlZCBvbiB0aGUgRU9TIGJsb2NrY2hhaW4uPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImhpZGRlbi14cyBjb2wtbGctOCBjb2wtbWQtMlwiPjxzcGFuIGNsYXNzPWRvdD48L3NwYW4+IDxzcGFuIGNsYXNzPXJpbmc+PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbWFyZ2luMFwiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDIwdnc7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1ib3R0b206IDUwcHg7bWFyZ2luLXRvcDo1MHB4XCI+PGRpdiBjbGFzcz1cImhpZGRlbi14cyBjb2wtbWQtNCBjb2wtbGctMjRcIj48ZGl2IGNsYXNzPXJvdyBzdHlsZT1tYXJnaW4tdG9wOjEwcHg7PjxkaXYgY2xhc3M9ZG90PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cm93IHN0eWxlPW1hcmdpbi10b3A6MTBweDs+PGRpdiBjbGFzcz1yaW5nPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cm93IHN0eWxlPW1hcmdpbi10b3A6MTBweDs+PGRpdiBjbGFzcz1iaWdkb3Q+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy01IGNvbC1tZC0zIGNvbC1sZy02XCIgc3R5bGU9dG9wOjYwcHg7PjxkaXYgY2xhc3M9XCJmY29sb3ItaGFuZCBmbnRzaXplMlwiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDF2aFwiPk1hcmtldHBsYWNlPC9kaXY+PGRpdiBjbGFzcz1cImZjb2xvciBmbnRzaXplMSB3ZWxsIHNoYWRvdy13ZWxsXCIgc3R5bGU+RmluYWxseSBjcmVhdG9ycyBhbmQgY29uc3VtZXJzIG1lZXQgaW4gdGhlIG1hcmtldHBsYWNlLiBNYXJrZXRwbGFjZSBpcyBlc3RhYmxpc2hlZCBieSBzZWVtaW5nbHkgaW50ZWdyYXRpbmcgS2F0YWx5byB0b2tlbiBpbnRvIHRoZSBwbGF0Zm9ybS4gVmFsdWUgaXMgZXhjaGFuZ2VkIGF1dG8tbWFnaWNhbGx5IHdpdGhvdXQgYW55IG5lZWQgZm9yIGludGVydmVudGlvbiBvZiB0aGUgcGFydGljaXBhbnRzLjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtNiBjb2wtbWQtNCBjb2wtbGctNlwiIHN0eWxlPXRvcDo4MHB4PjxpbWcgY2xhc3M9aW1nLXJlc3BvbnNpdmUgc3JjPS9zdGF0aWMvaW1nL3NpZ251cC5wbmc+PC9kaXY+PGRpdiBpZD1mZWF0dXJlcyBjbGFzcz1cImhpZGRlbi14cyBjb2wtbWQtMSBjb2wtbGctOFwiPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgaWQ9V2hhdF9pc19kaWZmZXJlbnQgY2xhc3M9XCJyb3cgbWFyZ2luMCBmZWF0dXJlcy1ib2R5IGZjb2xvci1ibHVlIGZudHNpemUxIHRleHQtY2VudGVyXCIgc3R5bGU+PGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtbGctMjQgY29sLW1kLTEyIG1hcmdpbjAgcGFkZGluZzBcIj48ZGl2IGNsYXNzPVwicm93IG1hcmdpbjAgZmNvbG9yLWJsdWUgZm50c2l6ZTEgdGV4dC1jZW50ZXJcIiBzdHlsZT1tYXJnaW4tdG9wOi0xNnZ3PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgY29sLW1kLTEyIGNvbC14cy0xMlwiIHN0eWxlPVwicGFkZGluZy1yaWdodDogMHB4OyBwYWRkaW5nLWxlZnQ6IDBweDtcIj48aW1nIGNsYXNzIHNyYz0vc3RhdGljL2ltZy9mZWF0dXJlcy10b3AucG5nIHN0eWxlPVwid2lkdGg6IDEwMCU7aGVpZ2h0OjYwcHhcIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG1hcmdpbjAgZm50c2l6ZTEgdGV4dC1jZW50ZXIgZmNvbG9yLWJsdWVcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtiYWNrZ3JvdW5kLWNvbG9yOndoaXRlXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBjb2wtbWQtMTIgY29sLXhzLTEyXCIgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OjBweDtwYWRkaW5nLWJvdHRvbTogMnZ3O1wiPjxkaXYgY2xhc3M9Zm50c2l6ZTIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcIj5XaHkgS2F0YWx5byB6ZXJvLWNvZGUgZW5naW5lID88L2Rpdj48ZGl2IHN0eWxlPVwiYm9yZGVyLWNvbG9yOiMwMDAwZmYzMztib3JkZXItd2lkdGg6IDFweDtib3JkZXItc3R5bGU6IHNvbGlkO3dpZHRoOiAxNWVtO21hcmdpbi1sZWZ0OiBhdXRvO21hcmdpbi1yaWdodDogYXV0bztcIj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGlkPVdZU0lXWUcgY2xhc3M9XCJyb3cgbWFyZ2luMFwiIHN0eWxlPWJhY2tncm91bmQtY29sb3I6d2hpdGU7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwPjxkaXYgY2xhc3M9XCJjb2wtbGctNiBocGFkZGluZyB2cGFkZGluZ1wiIHN0eWxlPWRpc3BsYXk6ZmxleDs+PGRpdiBjbGFzcz1zaGFkb3cgc3R5bGU+PGRpdiBjbGFzcz1cImNvbC1sZy02IGNvbC14cy0xMiBwYWRkaW5nMFwiIHN0eWxlPVwiYWxpZ24tc2VsZjogY2VudGVyO1wiPjxpbWcgY2xhc3M9aW1nLXJlc3BvbnNpdmUgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDEwcHg7bWFyZ2luOiBhdXRvO3dpZHRoOjEwMCVcIiBzcmM9L3N0YXRpYy9pbWcvd3lzaXd5Z19zbWFsbC5wbmc+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy02IGNvbC14cy0xMlwiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDEwcHg7XCI+PGRpdiBjbGFzcz1cImZjb2xvci1ibHVlIGZudHNpemUyIGQtbm9uZVwiIHN0eWxlPVwibGluZS1oZWlnaHQ6IDUwcHg7XCI+V1lTSVdZRzwvZGl2PjxkaXYgY2xhc3M9XCJmY29sb3ItYmx1ZSBmbnRzaXplMSB0ZXh0LWp1c3RpZnlcIj48Yj5XaGF0IFlvdSBTZWUgSXMgV2hhdCBZb3UgR2V0PC9iPiBpcyBvbmUgb2YgdGhlIG1haW4gcHJpbmNpcGxlcyBvZiBjcmVhdGluZyBhcHBsaWNhdGlvbnMgaW4gS2F0YWx5bzwvZGl2PjxkaXYgY2xhc3M9XCJmY29sb3ItYmx1ZSBmbnRzaXplMSB0ZXh0LWp1c3RpZnlcIj5JdCBpcyBvZiBjcml0aWNhbCBpbXBvcnRhbmNlIHRvIHByb3ZpZGUgaW5zdGFudCBmZWVkYmFjayB3aGVuIGJ1aWxkaW5nIGFwcGxpY2F0aW9uIGZlYXR1cmVzLiBLYXRhbHlvIGlzIHVzaW5nIFdoYXQgWW91IFNlZSBJcyBXaGF0IFlvdSBHZXQgYXBwcm9hY2ggd2hyZXZlciBhbmQgd2hlbmV2ZXIgdGhhdCBpcyBwb3NzaWJsZSBhbmQgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byBidWlsZCBjZXJ0YWluIGZ1bmN0aW9uYWxpdHkuIFdpdGggdGhpcyBhcHByb2FjaCB5b3UgaW1tZWRpYXRlbGx5IGtub3cgaG93IHdpbGwgc29tZSBmdW5jdGlvbmFsaXR5IHdpbGwgYmVoYXZlIGFuZCBub3QgZmluZCBvdXQgbGF0ZXIgdGhhdCBwYXJ0aWN1bGFyIGNoZWNrYm94IGNvbXBsZXRlbGx5IGNoYW5nZXMgdGhlIHdheSBkZXNpZ25lZCBmZWF0dXJlIHdvcmtzLjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctNiBocGFkZGluZyB2cGFkZGluZ1wiIHN0eWxlPWRpc3BsYXk6ZmxleDs+PGRpdiBjbGFzcz1zaGFkb3cgc3R5bGU+PGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtbGctNiBwYWRkaW5nMFwiIHN0eWxlPWFsaWduLXNlbGY6Y2VudGVyPjxpbWcgY2xhc3M9aW1nLXJlc3BvbnNpdmUgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDEwcHg7bWFyZ2luOiBhdXRvO3dpZHRoOjEwMCVcIiBzcmM9L3N0YXRpYy9pbWcvaml0X3NtYWxsLnBuZz48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1sZy02XCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMTBweDtcIj48ZGl2IGNsYXNzPVwiZmNvbG9yLWJsdWUgZm50c2l6ZTJcIiBzdHlsZT1cImxpbmUtaGVpZ2h0OiA1MHB4O1wiPkp1c3QgaW4gdGltZTwvZGl2PjxkaXYgY2xhc3M9XCJmY29sb3ItYmx1ZSBmbnRzaXplMSB0ZXh0LWp1c3RpZnlcIj5JbiB0b2RheXMgdm9sYXRpbGUgZW52aXJvbm1lbnQgdGhlIHRlY2hub2xvZ3kgbXVzdCBiZSBhbiBlbmFibGVyIGFuZCBub3QgdGhlIGJvdHRsZW5lY2suIFdpdGggaXRcXCdzIEpJVCAoSnVzdCBJbiBUaW1lKSBjYXBhYmlsaXRpZXMgeW91IGNhbiBjaGFuZ2UgdGhlIHdheSB0aGUgc3lzdGVtIHdvcmtzIHdoaWxlIHlvdVxcJ3JlIHdvcmtpbmcuIEluIG1hdHRlciBvZiBtaW51dGVzIGZ1bmN0aW9uYWxpdHkgY2FuIGJlIGFkanVzdGVkIHRvIGZ1bGx5IGZpdHMgdGhlIG5lZWRzIGFuZCBwcmV2ZW50IGlzc3VlcyBsYXRlciBkdWUgdG8gbWlzc2luZyBvciBwb29yIHF1YWxpdHkgb2YgdGhlIGNhcHR1cmVkIGRhdGEuPC9kaXY+PGRpdiBjbGFzcz1cImZjb2xvci1ibHVlIGZudHNpemUxXCI+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtYXJnaW4wXCIgc3R5bGU9YmFja2dyb3VuZC1jb2xvcjp3aGl0ZTtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA+PGRpdiBjbGFzcz1cImNvbC1sZy02IGhwYWRkaW5nIHZwYWRkaW5nXCIgc3R5bGU9ZGlzcGxheTpmbGV4Oz48ZGl2IGNsYXNzPXNoYWRvdyBzdHlsZT48ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1sZy02IHBhZGRpbmcwXCIgc3R5bGU9XCJhbGlnbi1zZWxmOiBjZW50ZXI7XCI+PGltZyBjbGFzcz1pbWctcmVzcG9uc2l2ZSBzdHlsZT1cInBhZGRpbmctbGVmdDogMTBweDttYXJnaW46IGF1dG87d2lkdGg6MTAwJVwiIHNyYz0vc3RhdGljL2ltZy9hdXRvbWF0ZWRfZGV2b3BzX3NtYWxsLnBuZz48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1sZy02XCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMTBweDtcIj48ZGl2IGNsYXNzPVwiZmNvbG9yLWJsdWUgZm50c2l6ZTIgZC1ub25lXCIgc3R5bGU9XCJsaW5lLWhlaWdodDogNTBweDtcIj5BdXRvbWF0ZWQgZGV2b3BzICYgdmVyc2lvbiBjb250cm9sPC9kaXY+PGRpdiBjbGFzcz1cImZjb2xvci1ibHVlIGZudHNpemUxIHRleHQtanVzdGlmeVwiPkRldm9wcyB3aXRoIEthdGFseW8gaXMgYSBicmVlemUuIFlvdSBhbHdheXMga25vdyB3aGF0IHZlcnNpb24gb2YgdGhlIHN5c3RlbSB5b3VcXCdyZSBvcGVyYXRpbmcgaW5jbHVkaW5nIGluLWJ1aWx0IHZlcnNpb24gY29udHJvbCBmb3IgcGxhdGZvcm0gYnVpbGRpbmcgYmxvY2tzIGxpa2UgcmVzb3VyY2VzIG9yIGZvcm1zLiBUaGUgcGxhZm9ybSBjb21lcyB3aXRoIGEgb3V0LW9mLXRoZS1ib3ggdGVzdCBlbnZpcm9ubWVudCB3aXRoIG9uZS1jbGljayBtaWdyYXRpb24gZnJvbSB0ZXN0IHRvIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQuPC9kaXY+PGRpdiBjbGFzcz1cImZjb2xvci1ibHVlIGZudHNpemUxXCI+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy02IGhwYWRkaW5nIHZwYWRkaW5nXCIgc3R5bGU9ZGlzcGxheTpmbGV4Oz48ZGl2IGNsYXNzPXNoYWRvdyBzdHlsZT48ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1sZy02IGNvbC1tZC01IHBhZGRpbmcwXCIgc3R5bGU9XCJhbGlnbi1zZWxmOiBjZW50ZXI7XCI+PGltZyBjbGFzcz1pbWctcmVzcG9uc2l2ZSBzdHlsZT1cInBhZGRpbmctbGVmdDogMTBweDttYXJnaW46IGF1dG87d2lkdGg6MTAwJVwiIHNyYz0vc3RhdGljL2ltZy9pbW11dGFibGVfc21hbGwucG5nPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLWxnLTYgY29sLW1kLTVcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAxMHB4O1wiPjxkaXYgY2xhc3M9XCJmY29sb3ItYmx1ZSBmbnRzaXplMiBkLW5vbmVcIiBzdHlsZT1cImxpbmUtaGVpZ2h0OiA1MHB4O1wiPkRhdGEgaW1tdXRhYmlsaXR5PC9kaXY+PGRpdiBjbGFzcz1cImZjb2xvci1ibHVlIGZudHNpemUxIHRleHQtanVzdGlmeVwiPlRydXN0IGluIGJ1c2luZXNzIGlzIGltcG9ydGFudCBob3dldmVyIGJ1aWxkaW5nIHRydXN0IHRha2VzIHRpbWUgYW5kIGVmZm9ydC4gV2l0aCBpdFxcJ3MgZGF0YSBpbW11dGFiaWxpdHkgZmVhdHVyZXMgS2F0YWx5byBjcmVhdGVzIHRydXN0IGJlZXR3ZW4gdHdvIHBhcnRpZXMgd2hlcmUgdHJ1c3QgZG9lc25cXCd0IGV4aXN0LiBEYXRhIGNhbiBiZSBzdG9yZWQgb3IgYW5jaG9yZWQgb24gdGhlIGJsb2NrY2hhaW4gdG8gbWFrZSBzdXJlIHRoYXQgbm9vbmUgaGFzIHRhbXBlcmVkIHdpdGggdGhlIGRhdGEgYW5kIHRvIGJlIGFibGUgdG8gdHJhY2sgdGhlIGNoYW5nZXMgd2l0aG91dCBhIHNocmVkIG9mIGEgZG91YnQuIFRvIGFjY29tcGxpc2ggdGhpcyBLYXRhbHlvIGludGVncmF0ZXMgd2l0aCBFT1MgdGhlIG1vc3QgcG93ZXJmdWwgYmxvY2tjaGFpbiBpbmZyYXN0cnVjdHVyZSBmb3IgYnVpbGRpbmcgZGVjZW50cmFsaXNlZCBhcHBsaWNhdGlvbnMuPC9kaXY+PGRpdiBjbGFzcz1cImZjb2xvci1ibHVlIGZudHNpemUxXCI+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBpZD1HQU1JRklDQVRJT04gY2xhc3M9XCJyb3cgbWFyZ2luMCBocGFkZGluZ1wiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDEwMHB4O2Rpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogY2VudGVyO1wiPjxkaXYgY2xhc3M9XCJjb2wtbGctNiB2cGFkZGluZyBzaGFkb3dcIiBzdHlsZT48ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1sZy02IHBhZGRpbmcwXCIgc3R5bGU9XCJhbGlnbi1zZWxmOiBjZW50ZXI7XCI+PGltZyBjbGFzcz1pbWctcmVzcG9uc2l2ZSBzdHlsZT1cInBhZGRpbmctbGVmdDogMTBweDtcIiBzcmM9L3N0YXRpYy9pbWcvZ2FtaWZpY2F0aW9uX3NtYWxsLnBuZz48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1sZy02XCI+PGRpdiBjbGFzcz1cImZjb2xvci1ibHVlIGZudHNpemUyXCIgc3R5bGU9XCJsaW5lLWhlaWdodDogNTBweDtcIj5HYW1pZmljYXRpb248L2Rpdj48ZGl2IGNsYXNzPVwiZmNvbG9yLWJsdWUgZm50c2l6ZTEgdGV4dC1qdXN0aWZ5XCI+V2l0aCBpdFxcJ3MgbG93LWNvZGUgY2FwYWJpbGl0aWVzIEthdGFseW8gZW1wb3dlcnMgaW5kaXZpZHVhbHMgYW5kIG9yZ2FuaXNhdGlvbnMgdG8gY3JlYXRlIGN1c3RvbSBnYW1pZmljYXRpb24gZmVhdHVyZXMgdGhhdCB3aWxsIGJlc3Qgc3VpdCB0aGVpciBuZWVkcyBidXQgd2l0aCB0aGUgS2F0YWx5byB0b2tlbiBnYW1pZmljYXRpb24gaXMgdGFrZW4gdG8gYSB3aG9sZSBuZXcgbGV2ZWwgd2hlcmUgeW91IGNhbiByZXdhcmQgcGVvcGxlIHdpdGggcmVhbCBhbmQgdGFuZ2libGUgdmFsdWUgd2hpY2ggd2l0aCBhZG9wdGlvbiB3aWxsIG9ubHkgaW5jcmVhc2UgaW4gdmFsdWUuPC9kaXY+PGRpdiBjbGFzcz1cImZjb2xvci1ibHVlIGZudHNpemUxXCI+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBpZD10ZWFtIGNsYXNzPVwicm93IG1hcmdpbjAgZm91bmRlcnMtZGl2IGZjb2xvci1ibHVlIHRleHQtY2VudGVyXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAtODBweDtcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHBhZGRpbmcwXCIgc3R5bGU+PGgxIGNsYXNzIHN0eWxlPVwicGFkZGluZy10b3A6IDEwcHg7IHBhZGRpbmctYm90dG9tOiAxMHB4XCI+TWVldCB0aGUgZm91bmRpbmcgdGVhbTwvaDE+PC9kaXY+PGRpdiBjbGFzcz1jb2wtbGctMjQgc3R5bGU+PGg0IGNsYXNzIHN0eWxlPVwibWFyZ2luLWJvdHRvbTo1MHB4OyBtYXJnaW4tbGVmdDogMTAwcHg7IG1hcmdpbi1yaWdodDogMTAwcHg7XCI+QXMgaW4gZXZlcnkgc3RhcnR1cCB3ZSBhbGwgd2VhciBtYW55IGhhdHMgYW5kIGRvIHdoYXRldmVyIGlzIHJlcXVpcmVkIGZyb20gb3VyIHZlbnR1cmUgYnV0IHdlIGRvIHRyeSB0byBzcGxpdCB0aGUgd29yayB0byBtYWtlIGl0IGFzIGVmZmljaWVudCBhcyBwb3NzaWJsZTwvaDQ+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy04IGNvbC1tZC0xMlwiIHN0eWxlPjxpbWcgaGVpZ2h0PTIwMCBzcmM9L3N0YXRpYy9pbWcvZm91bmRlci0xLnBuZz48ZGl2IHN0eWxlPVwibWFyZ2luLXRvcDogMTBweDtcIj5JZ29yPC9kaXY+PGRpdj5Dby1mb3VuZGVyPC9kaXY+PGEgaHJlZj1odHRwczovL3d3dy5saW5rZWRpbi5jb20vaW4vaWdvci1tb2NpbGFjLWI1MjEyMTE2YiB0YXJnZXQ9X2JsYW5rIHN0eWxlPXRleHQtZGVjb3JhdGlvbjpub25lPjxpbWcgaGVpZ2h0PTE2IHNyYz0vc3RhdGljL2ltZy9saW5rZWRpbi5wbmc+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctOCBjb2wtbWQtMTJcIiBzdHlsZT48aW1nIGhlaWdodD0yMDAgc3JjPS9zdGF0aWMvaW1nL2ZvdW5kZXItMy5wbmc+PGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7XCI+SXZpY2E8L2Rpdj48ZGl2PkNvLWZvdW5kZXI8L2Rpdj48YSBocmVmPVwiaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2luL2l2aWNhbGp1YmljaWMvXCIgdGFyZ2V0PV9ibGFuayBzdHlsZT10ZXh0LWRlY29yYXRpb246bm9uZT48aW1nIGhlaWdodD0xNiBzcmM9L3N0YXRpYy9pbWcvbGlua2VkaW4ucG5nPjwvYT4gPGEgaHJlZj1odHRwczovL3R3aXR0ZXIuY29tL2l2aWNhbGp1YmljaWMgdGFyZ2V0PV9ibGFuayBzdHlsZT10ZXh0LWRlY29yYXRpb246bm9uZT48aW1nIGhlaWdodD0xNiBzcmM9L3N0YXRpYy9pbWcvdHdpdHRlci5wbmc+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctOCBjb2wtbWQtMTJcIiBzdHlsZT48aW1nIGhlaWdodD0yMDAgc3JjPS9zdGF0aWMvaW1nL2ZvdW5kZXItMi5wbmc+PGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7XCI+RGFuaWVsPC9kaXY+PGRpdj5Dby1mb3VuZGVyPC9kaXY+PGEgaHJlZj1odHRwczovL3d3dy5saW5rZWRpbi5jb20vaW4vZGFuaWVsLXN0amVwYW5vdmljLTYyNGEyYTYgdGFyZ2V0PV9ibGFuayBzdHlsZT10ZXh0LWRlY29yYXRpb246bm9uZT48aW1nIGhlaWdodD0xNiBzcmM9L3N0YXRpYy9pbWcvbGlua2VkaW4ucG5nPjwvYT48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0yNCBzdHlsZT48aDQgY2xhc3Mgc3R5bGU9XCJtYXJnaW4tYm90dG9tOjUwcHg7IG1hcmdpbi1sZWZ0OiAxMDBweDsgbWFyZ2luLXJpZ2h0OiAxMDBweDtcIj48L2g0PjwvZGl2PjwvZGl2PjxkaXYgaWQ9T1BFTl9TT1VSQ0UgY2xhc3M9XCJyb3cgbWFyZ2luMFwiIHN0eWxlPVwicGFkZGluZy10b3A6IDIwcHg7XCI+PGRpdiBjbGFzcz1cImNvbC14cy0xIGNvbC1sZy02IGNvbC1tZC0xIHBhZGRpbmcwXCIgc3R5bGU+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy0xMCBjb2wtbGctOCBjb2wtbWQtOCBwYWRkaW5nMFwiIHN0eWxlPWRpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcj48ZGl2IGNsYXNzPVwiY29sLXhzLTIgY29sLWxnLTggY29sLW1kLTMgcGFkZGluZzBcIiBzdHlsZT48aW1nIGNsYXNzPWltZy1yZXNwb25zaXZlIHN0eWxlPWZsb2F0OnJpZ2h0OyBzcmM9L3N0YXRpYy9pbWcvb3Blbi1zb3VyY2UtbG9jay5wbmc+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy0xMCBjb2wtbGctOCBjb2wtbWQtOVwiIHN0eWxlPjxoMiBjbGFzcz10ZXh0LWxlZnQgc3R5bGU9Y29sb3I6d2hpdGU+T3BlbiBzb3VyY2U8L2gyPjxkaXYgY2xhc3M9XCJmbnRzaXplMSB0ZXh0LWxlZnRcIiBzdHlsZT1jb2xvcjp3aGl0ZT5XZSBmaXJtbHkgYmVsaWV2ZSBpbiBzaGFyaW5nIGtub3dsZWRnZSBhbmQgdGhhdCBpcyB3aHkgd2VcXCdyZSBidWlsZGluZyBvdXIgcGxhdGZvcm0gb24gb3BlbiBzb3VyY2UgdGVjaG9ub2xvZ3kgc3RhY2suPC9kaXY+PGRpdiBjbGFzcz1cImZudHNpemUxIHRleHQtbGVmdFwiIHN0eWxlPWNvbG9yOndoaXRlPkFuZ3VsYXIgSlMsIERqYW5nbyBSZXN0IEZyYW1ld29yaywgUG9zdGdyZVNRTC4gTmF0dXJhbGx5IG91ciBwbGF0Zm9ybSB3aWxsIGJlIGZ1bGx5IG9wZW4gc291cmNlIHNvIHRoYXQgZXZlcnlvbmUgY2FuIGdldCBpbnZvbHZlZCBhbmQgcGFydGljaXBhdGUgaW4gZGlnaXRhbCByZXZvbHV0aW9uIHRoYXQgS2F0YWx5byBwbGFucyB0byBiZSBhIGh1Z2UgcGFydCBvZi48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTIgY29sLWxnLTYgY29sLW1kLTMgcGFkZGluZzBcIiBzdHlsZT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTEgY29sLWxnLTYgcGFkZGluZzBcIiBzdHlsZT48L2Rpdj48L2Rpdj48ZGl2IGlkPUNMT1VEIGNsYXNzPVwicm93IG1hcmdpbjBcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDBweDtcIj48aW1nIGNsYXNzIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBoZWlnaHQ6IDEwMHB4O3dpZHRoOiAxMDAlO1wiIHNyYz0vc3RhdGljL2ltZy9mZWF0dXJlcy10b3AucG5nPjwvZGl2PjxkaXYgaWQ9Y29udGFjdCBjbGFzcz1cInJvdyBtYXJnaW4wXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1wiPjxkaXYgY2xhc3M9Y29sLWxnLTg+PGRpdiBjbGFzcz1cImNvbC14cy01IGNvbC1sZy02IGNvbC1tZC02XCIgc3R5bGU9XCJjb2xvcjp3aGl0ZTsgcGFkZGluZzogMDtcIj48aW1nIGNsYXNzPWltZy1yZXNwb25zaXZlIHNyYz0vc3RhdGljL2ltZy9kdWRlX2ludHJvX2NvcHlfMy5wbmc+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy03IGNvbC1sZy02IGNvbC1tZC02XCIgc3R5bGU9XCJ0ZXh0LWFsaWduOmxlZnQ7bWFyZ2luLWJvdHRvbTogMjBweDsgcGFkZGluZy1yaWdodDogMDtcIj48ZGl2IGNsYXNzPVwiZmNvbG9yLWJsdWUgZm50c2l6ZTJcIj5Db250YWN0IFVzPC9kaXY+PGRpdiBjbGFzcz1cImZjb2xvci1ibHVlIGZudHNpemUwXCIgc3R5bGU+SWYgeW91IHdvdWxkIGxpa2UgdG8gY29udGFjdCB1cywgdGhpcyBpcyB0aGUgd2F5PC9kaXY+PHA+PC9wPjxmb3JtPjxkaXYgY2xhc3M9Zm9ybS1ncm91cD48ZGl2IGNsYXNzPWZvcm0tZ3JvdXA+PGxhYmVsIGZvcj1GdWxsTmFtZT5OYW1lPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBjb250YWN0c2hhZG93XCIgaWQ9RnVsbE5hbWUgcGxhY2Vob2xkZXI9XCJFbnRlciBmdWxsIG5hbWVcIj48L2Rpdj48bGFiZWwgZm9yPUlucHV0RW1haWw+RW1haWwgYWRkcmVzczwvbGFiZWw+IDxpbnB1dCB0eXBlPWVtYWlsIGNsYXNzPVwiZm9ybS1jb250cm9sIGNvbnRhY3RzaGFkb3dcIiBpZD1JbnB1dEVtYWlsIGFyaWEtZGVzY3JpYmVkYnk9ZW1haWxIZWxwIHBsYWNlaG9sZGVyPVwiRW50ZXIgZW1haWxcIj4gPHNtYWxsIGlkPWVtYWlsSGVscCBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LW11dGVkXCI+V2VcXCdsbCBuZXZlciBzaGFyZSB5b3VyIGVtYWlsIHdpdGggYW55b25lIGVsc2UuPC9zbWFsbD48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXA+PGxhYmVsIGZvcj1NZXNzYWdlPk1lc3NhZ2U8L2xhYmVsPiA8dGV4dGFyZWEgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY29udGFjdHNoYWRvd1wiIGlkPU1lc3NhZ2Ugcm93cz0zPjwvdGV4dGFyZWE+PC9kaXY+PGJ1dHRvbiB0eXBlPXN1Ym1pdCBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiPlNlbmQgbWVzc2FnZTwvYnV0dG9uPjwvZm9ybT48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IHBhZGRpbmcwIG1hcmdpbjBcIiBzdHlsZT1cImhlaWdodDoxMHB4O2JhY2tncm91bmQtY29sb3I6d2hpdGU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjMDBmZjMzIDFweFwiPjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbWFyZ2luMFwiPjxuYXYgY2xhc3M9XCJuYXZiYXItY3VzdG9tIGNvbnRhaW5lci1mbHVpZFwiIHJvbGU9bmF2aWdhdGlvbiBzdHlsZT1cImJvcmRlci1ib3R0b206c29saWQgIzAwZmYzMyAxcHhcIj48ZGl2IGNsYXNzPWNvbC1sZy0yND48YSBjbGFzcz1zb2NpYWwtbGlua3MgaHJlZj1odHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tcGFueS9rYXRhbHlvPjxpbWcgc3JjPS9zdGF0aWMvaW1nL2xpbmtlZGluNjRfMS5wbmc+PC9hPiA8YSBjbGFzcz1zb2NpYWwtbGlua3MgaHJlZj1odHRwczovL3d3dy50d2l0dGVyLmNvbS9rYXRhbHlvPjxpbWcgc3JjPS9zdGF0aWMvaW1nL3R3aXR0ZXI2NC5wbmc+PC9hPiA8YSBjbGFzcz1zb2NpYWwtbGlua3MgaHJlZj1odHRwczovL3QubWUva2F0YWx5bz48aW1nIHNyYz0vc3RhdGljL2ltZy90ZWxlZ3JhbTY0LnBuZz48L2E+IDxhIGNsYXNzPXNvY2lhbC1saW5rcyBocmVmPW1haWx0bzppbmZvQGthdGFseW8uY29tPjxpbWcgc3JjPS9zdGF0aWMvaW1nL21haWw2NC5wbmc+PC9hPjwvZGl2PjwvbmF2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWQgdGV4dC1pbmZvXCI+Q29weXJpZ2h0ICZjb3B5OyBLYXRhbHlvLiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvZGl2PjwvZGl2PjwvYm9keT48L2h0bWw+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvbGFuZGluZ19vbGQuaHRtbCcsJ3slIGxvYWQgc3RhdGljZmlsZXMgJX08IWRvY3R5cGUgaHRtbD48aHRtbD48aGVhZD48dGl0bGU+S2F0YWx5byB8IE5leHQgZ2VuZXJhdGlvbiBaZXJvLWNvZGUgcGxhdGZvcm0gcG93ZXJlZCBieSBFT1M8L3RpdGxlPjxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9XCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLThcIj48bWV0YSBpdGVtcHJvcD1uYW1lIGNvbnRlbnQ9XCJLYXRhbHlvIHwgTG93LWNvZGUgfCBFT1MgfCBCbG9ja2NoYWluXCI+PG1ldGEgaXRlbXByb3A9ZGVzY3JpcHRpb24gY29udGVudD1cIkthdGFseW8gfCBMb3ctY29kZSB8IFplcm8tY29kZSB8IFRhc2sgbWFuYWdlbWVudCB8IEJsb2NrY2hhaW4gfCBDbG91ZCB8IFNhYVMgfCBFT1NcIj48bGluayByZWw9XCJzaG9ydGN1dCBpY29uXCIgdHlwZT1pbWFnZS94LWljb24gaHJlZj1cInslIHN0YXRpYyBcXCdpbWcvZmF2aWNvbi5pY29cXCcgJX1cIj48c2NyaXB0IHNyYz1cInslIHN0YXRpYyBcXCdtb2R1bGVzLzAwMDBfY29tbW9uLzAwMDNfbGlicy9qcXVlcnkubWluLmpzXFwnICV9XCI+PC9zY3JpcHQ+PHNjcmlwdCBzcmM9XCJ7JSBzdGF0aWMgXFwnbW9kdWxlcy8wMDAwX2NvbW1vbi8wMDAzX2xpYnMvYm9vdHN0cmFwLm1pbi5qc1xcJyAlfVwiPjwvc2NyaXB0PjxsaW5rIHJlbD1zdHlsZXNoZWV0IHR5cGU9dGV4dC9jc3MgaHJlZj1cInslIHN0YXRpYyBcXCdDc3MvYm9vdHN0cmFwLm1pbi5jc3NcXCcgJX1cIj48bGluayByZWw9c3R5bGVzaGVldCB0eXBlPXRleHQvY3NzIGhyZWY9XCJ7JSBzdGF0aWMgXFwnQ3NzL21haW4uY3NzXFwnICV9XCI+PGxpbmsgcmVsPXN0eWxlc2hlZXQgdHlwZT10ZXh0L2NzcyBocmVmPVwieyUgc3RhdGljIFxcJ0Nzcy9uYXZiYXIuY3NzXFwnICV9XCI+PHNjcmlwdCB0eXBlPXRleHQvamF2YXNjcmlwdD5cXG4gICAgICAgICAgICBcXG4gICAgICAgICAgICAgIHZhciBfZ2FxID0gX2dhcSB8fCBbXTtcXG4gICAgICAgICAgICAgIF9nYXEucHVzaChbXFwnX3NldEFjY291bnRcXCcsIFxcJ1VBLTI3MDYzMTc4LTFcXCddKTtcXG4gICAgICAgICAgICAgIF9nYXEucHVzaChbXFwnX3RyYWNrUGFnZXZpZXdcXCddKTtcXG4gICAgICAgICAgICBcXG4gICAgICAgICAgICAgIChmdW5jdGlvbigpIHtcXG4gICAgICAgICAgICAgICAgdmFyIGdhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcXCdzY3JpcHRcXCcpOyBnYS50eXBlID0gXFwndGV4dC9qYXZhc2NyaXB0XFwnOyBnYS5hc3luYyA9IHRydWU7XFxuICAgICAgICAgICAgICAgIGdhLnNyYyA9IChcXCdodHRwczpcXCcgPT0gZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wgPyBcXCdodHRwczovL3NzbFxcJyA6IFxcJ2h0dHA6Ly93d3dcXCcpICsgXFwnLmdvb2dsZS1hbmFseXRpY3MuY29tL2dhLmpzXFwnO1xcbiAgICAgICAgICAgICAgICB2YXIgcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFxcJ3NjcmlwdFxcJylbMF07IHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZ2EsIHMpO1xcbiAgICAgICAgICAgICAgfSkoKTtcXG5cXG4gICAgICAgIDwvc2NyaXB0PjwvaGVhZD48Ym9keT48bmF2IGNsYXNzPVwibmF2YmFyIG5hdmJhci1jdXN0b20gbmF2YmFyLWZpeGVkLXRvcFwiIHJvbGU9bmF2aWdhdGlvbj48ZGl2IGNsYXNzPWNvbnRhaW5lci1mbHVpZD48ZGl2IGNsYXNzPW5hdmJhci1oZWFkZXI+PGltZyB3aWR0aD0xNTAgc3JjPS9zdGF0aWMvaW1nL0thdGFseW9fbmFtZV90cmFuc3BhcmVudC5wbmc+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJuYXZiYXItdG9nZ2xlIGZsb2F0LXJpZ2h0XCIgZGF0YS10b2dnbGU9Y29sbGFwc2UgZGF0YS10YXJnZXQ9I25hdmJhci1jb2xsYXBzZS0xPjxzcGFuIGNsYXNzPXNyLW9ubHk+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+IDxzcGFuIGNsYXNzPWljb24tYmFyPjwvc3Bhbj4gPHNwYW4gY2xhc3M9aWNvbi1iYXI+PC9zcGFuPiA8c3BhbiBjbGFzcz1pY29uLWJhcj48L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1cImNvbGxhcHNlIG5hdmJhci1jb2xsYXBzZVwiIGlkPW5hdmJhci1jb2xsYXBzZS0xPjx1bCBjbGFzcz1cIm5hdiBuYXZiYXItbmF2IG5hdmJhci1yaWdodFwiPjxsaT48YSBocmVmPS9ob3ctaXQtd29ya3M+SG9tZTwvYT48L2xpPjxsaT48YSBocmVmPS9ob3ctaXQtd29ya3M+QWJvdXQgdXM8L2E+PC9saT48bGk+PGEgaHJlZj0vaG93LWl0LXdvcmtzPlRlYW08L2E+PC9saT48bGk+PGEgaHJlZj0vaG93LWl0LXdvcmtzPkNvbW11bml0eTwvYT48L2xpPjxsaT48YSBocmVmPS9ob3ctaXQtd29ya3M+Um9hZG1hcDwvYT48L2xpPjxsaT48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPWJ0bi1tZW51LWNscz5UcnkgaXQgTm93ISAmbmJzcCAmIzEwMDk1PC9idXR0b24+PC9saT48L3VsPjwvZGl2PjwvZGl2PjwvbmF2PjxkaXYgY2xhc3M9Y29udGVudD48ZGl2IGNsYXNzPXJvdyBzdHlsZT1tYXJnaW46MD48ZGl2IGNsYXNzPVwiY29sLWxnLTEwIGNvbC1tZC0xMiBmY29sb3IgdGl0bGVcIj48ZGl2PjxkaXY+QnVpbGQgYXBwbGljYXRpb25zLjwvZGl2PjxkaXY+RWFybiByZXdhcmRzLjwvZGl2PjxkaXY+Tm8gY29kaW5nLjwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjZTc3ODE4O3dpZHRoOjc1cHg7aGVpZ2h0OjVweDttYXJnaW4tdG9wOjYwcHg7XCI+PC9kaXY+PGRpdiBzdHlsZT1tYXJnaW4tdG9wOjUwcHg+PGg0PkthdGFseW8gaXMgdGhlIG5leHQtZ2VuZXJhdGlvbiBsb3ctY29kZSBwbGF0Zm9ybTwvaDQ+PC9kaXY+PGRpdiBzdHlsZT1tYXJnaW4tdG9wOjEwcHg+PHNwYW4gc3R5bGU9XCJmb250LXNpemU6IHNtYWxsXCI+cG93ZXJlZCBieTwvc3Bhbj4gPGEgc3R5bGU9bWFyZ2luLWxlZnQ6MTBweCB0aXRsZT1cIkJ5IGVvc2lvIGFuZCBibG9jay5vbmUgKGVvcy5pbykgW1B1YmxpYyBkb21haW5dLCB2aWEgV2lraW1lZGlhIENvbW1vbnNcIiBocmVmPWh0dHBzOi8vZW9zLmlvPjxpbWcgaGVpZ2h0PTMyIHNyYz0vc3RhdGljL2ltZy9Fb3Npb19sb2dvLnN2Zz48L2E+PGRpdiBzdHlsZT1tYXJnaW4tdG9wOjUwcHg+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1idG4tbGVhcm4tbW9yZT5MZWFybiBtb3JlICZuYnNwICYjMTAwOTU8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTcgY29sLW1kLTEyIHRpdGxlXCIgc3R5bGU9Y29sb3I6d2hpdGU7PjxpbWcgc3JjPS9zdGF0aWMvaW1nL2hvbWUtbWFpbi1pbWFnZS5wbmc+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyB3aHktZGlmZiBmY29sb3ItYmx1ZSB0ZXh0LWNlbnRlclwiIHN0eWxlPW1hcmdpbjowPjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxoMSBjbGFzcyBzdHlsZT1tYXJnaW4tdG9wOjI1MHB4PldlbGNvbWUgdG8gS2F0YWx5byAtIHRoZSBuZXh0IGdlbmVyYXRpb24gbG93LWNvZGUgcGxhdGZvcm08L2gxPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbWFya2V0cGxhY2VcIiBzdHlsZT1tYXJnaW46MD48ZGl2IGNsYXNzPXJvdyBzdHlsZT1tYXJnaW46MD48ZGl2IGNsYXNzPVwiY29sLWxnLTYgY29sLW1kLTEyXCI+PGltZyBoZWlnaHQ9MzUwIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO21hcmdpbi1sZWZ0Oi01MHB4O21hcmdpbi10b3A6IC0zMDBweDtcIiBzcmM9L3N0YXRpYy9pbWcvc2lnbnVwLWR1ZGUucG5nPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctNiBjb2wtbWQtMTIgdGV4dC1jZW50ZXJcIj48ZGl2IGNsYXNzPVwiZmNvbG9yLWhhbmQgZnNpemUtbGFyZ2VcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTttYXJnaW4tdG9wOiAtMTIwcHg7XCI+VGhpcyBpcyBLYXRhbHlvIGNvbW11bml0eTwvZGl2PjxkaXYgY2xhc3M9ZmNvbG9yIHN0eWxlPkthdGFseW8gaXMgYnVpbGRpbmcgYSBjb21tdW5pdHkgYW5kIGEgbWFya2V0cGxhY2UgZm9yIGNyZWF0b3JzIGFuZCBjb25zdW1lcnM8L2Rpdj48ZGl2IGNsYXNzPWZjb2xvciBzdHlsZT5Cb3RoIGNyZWF0b3JzIGFuZCBjb25zdW1lcnMgYSB3b3JraW5nIHdpdGggS2F0YWx5byB1c2luZyBhIHRocmVlIHNpbXBsZSBzdGVwczwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctNiBjb2wtbWQtMTJcIj48c3BhbiBjbGFzcz1kb3Q+PC9zcGFuPiA8c3BhbiBjbGFzcz1yaW5nPjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXJvdyBzdHlsZT1tYXJnaW46MDttYXJnaW4tdG9wOjIwMHB4Oz48ZGl2IGNsYXNzPVwiY29sLWxnLTggY29sLW1kLTEyXCI+PHNwYW4gY2xhc3M9ZG90Pjwvc3Bhbj4gPHNwYW4gY2xhc3M9cmluZz48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy04IGNvbC1tZC0xMlwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO3RvcDoxMDBweFwiPjxkaXYgY2xhc3M9XCJmY29sb3ItaGFuZCBmc2l6ZS1sYXJnZVwiPkNvbnN1bWVyczwvZGl2PjxkaXYgY2xhc3M9ZmNvbG9yIHN0eWxlPkNvbnN1bWVycyBhcmUgdXRpbGlzaW5nIHRoZSBwb3dlciBvZiBLYXRhbHlvIGNvbW11bml0eSBhbmQgbWFya2V0cGxhY2U8L2Rpdj48ZGl2IGNsYXNzPWZjb2xvciBzdHlsZT5TdGFydCB3b3JraW5nIGltbWVkaWF0ZWx5PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy02IGNvbC1tZC0xMlwiPjxpbWcgaGVpZ2h0PTM3NSBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTttYXJnaW4tbGVmdDogMTAwcHhcIiBzcmM9L3N0YXRpYy9pbWcvY29uc3VtZXJzLnBuZz48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IGZlYXR1cmVzLXRvcCBmY29sb3ItYmx1ZSB0ZXh0LWNlbnRlclwiIHN0eWxlPW1hcmdpbjowPjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxoMSBjbGFzcyBzdHlsZT1tYXJnaW4tdG9wOjI1MHB4O21hcmdpbi1ib3R0b206NTBweD5XaGF0IGlzIGRpZmZlcmVudCBhYm91dCBLYXRhbHlvPC9oMT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IGZlYXR1cmVzLWJvZHkgZmNvbG9yLWJsdWUgdGV4dC1jZW50ZXJcIiBzdHlsZT1tYXJnaW46MD48ZGl2IGNsYXNzPWNvbC1sZy0yND48ZGl2IGNsYXNzPVwiY29sLWxnLTYgY29sLW1kLTEyXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7dG9wOjEwMHB4XCI+PGRpdiBjbGFzcz1cImZjb2xvci1ibHVlIGZzaXplLWxhcmdlXCI+V1lTSVdZRzwvZGl2PjxkaXYgY2xhc3M9ZmNvbG9yLWJsdWUgc3R5bGU+V2hhdCBZb3UgU2VlIElzIFdoYXQgWW91IEdldCBpcyBvZiB0aGUgbWFpbiBwcmluY2lwbGVzIG9mIGNyZWF0aW5nIGFwcGxpY2F0aW9ucyBpbiBLYXRhbHlvPC9kaXY+PGRpdiBjbGFzcz1mY29sb3ItYmx1ZSBzdHlsZT5JdCBpcyBpbXBlcmF0aXZlIHRoYXQgeW91IGNhbiBpbW1lZGlhdGVsbHkgc2VlIHdoYXQgd2lsbCB5b3UgYXBwbGljYXRpb24gbG9vayBsaWtlIGFuZCBub3QgY2xpY2sgb24gdmFyaW91cyBib3hlcyBhbmQgbGF0ZXIgbGVhcm4gaXQgY2hhbmdlcyB0aGUgd2F5IHRoZSBhcHBsaWNhdGlvbnMgd29ya3MuPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy02IGNvbC1tZC0xMlwiPjxpbWcgaGVpZ2h0PTM3NSBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTttYXJnaW4tbGVmdDogMTAwcHhcIiBzcmM9L3N0YXRpYy9pbWcvY29uc3VtZXJzLnBuZz48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0yND48ZGl2IGNsYXNzPVwiY29sLWxnLTYgY29sLW1kLTEyXCI+PGltZyBoZWlnaHQ9Mzc1IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO21hcmdpbi1sZWZ0OiAxMDBweFwiIHNyYz0vc3RhdGljL2ltZy9jb25zdW1lcnMucG5nPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctNiBjb2wtbWQtMTJcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTt0b3A6MTAwcHhcIj48ZGl2IGNsYXNzPVwiZmNvbG9yLWJsdWUgZnNpemUtbGFyZ2VcIj5KSVQ8L2Rpdj48ZGl2IGNsYXNzPWZjb2xvci1ibHVlIHN0eWxlPk5ldyBkZW1hbmRzIGFyZSBUaGUgY3VzdG9tZXJzLCB0aGUgY29tcGV0aXRvcnMsIHRoZSBnb3Zlcm1lbnQgYW5kIHJlZ3VsYXRvcnMgYXJlIGFsbCBwcmVzc3VyaW5nIG9yZ2FuaXNhdGlvbnM8L2Rpdj48ZGl2IGNsYXNzPWZjb2xvci1ibHVlIHN0eWxlPkp1c3QgSW4gVGltZSBlbXBvd2VycyBwZW9wbGUgYW5kIG9yZ2FuaXNhdGlvbnMgdG8gYmUgYWdpbGUgYW5kIGNoYW5nZSB0aGUgd2F5IGFwcGxpY2F0aW9uIGlzIHdvcmtpbmcgZXZlbiBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgcHJvY2Vzcy48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IGZvdW5kZXJzLWRpdiBmY29sb3ItYmx1ZSB0ZXh0LWNlbnRlclwiIHN0eWxlPW1hcmdpbjowPjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxoMSBjbGFzcyBzdHlsZT1tYXJnaW4tdG9wOjE4MHB4O21hcmdpbi1ib3R0b206NTBweD5NZWV0IHRoZSBmb3VuZGluZyB0ZWFtPC9oMT48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0yND48aDQgY2xhc3Mgc3R5bGU9bWFyZ2luLWJvdHRvbTo1MHB4PkFzIGluIGV2ZXJ5IHN0YXJ0dXAgd2UgYWxsIHdlYXIgbWFueSBoYXRzIGFuZCBkbyB3aGF0ZXZlciBpcyByZXF1aXJlZCBmcm9tIG91ciB2ZW50dXJlIGJ1dCB3ZSBkbyB0cnkgdG8gc3BsaXQgdGhlIHdvcmsgdG8gbWFrZSBpdCBhcyBlZmZpY2llbnQgYXMgcG9zc2libGU8L2g0PjwvZGl2PjxkaXYgY2xhc3M9cm93IHN0eWxlPW1hcmdpbjowPjxkaXYgY2xhc3M9XCJjb2wtbGctOCBjb2wtbWQtMTJcIj48aW1nIGhlaWdodD0yMDAgc3JjPS9zdGF0aWMvaW1nL2ZvdW5kZXItMS5wbmc+PGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7XCI+SWdvcjwvZGl2PjxkaXY+Q28tZm91bmRlcjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctOCBjb2wtbWQtMTJcIj48aW1nIGhlaWdodD0yMDAgc3JjPS9zdGF0aWMvaW1nL2ZvdW5kZXItMi5wbmc+PGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7XCI+RGFuaWVsPC9kaXY+PGRpdj5Dby1mb3VuZGVyPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy04IGNvbC1tZC0xMlwiPjxpbWcgaGVpZ2h0PTIwMCBzcmM9L3N0YXRpYy9pbWcvZm91bmRlci0zLnBuZz48ZGl2IHN0eWxlPVwibWFyZ2luLXRvcDogMTBweDtcIj5JdmljYTwvZGl2PjxkaXY+Q28tZm91bmRlcjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgZm91bmRlcnMtYm90dG9tXCIgc3R5bGU9bWFyZ2luOjA+PGltZyBjbGFzcz1mbG9hdC1yaWdodCBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTt0b3A6NTBweFwiIGhlaWdodD0zMDAgc3JjPS9zdGF0aWMvaW1nL2R1ZGUtc2l0dGluZy5wbmc+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBjb250YWN0LXVzIGZjb2xvclwiIHN0eWxlPW1hcmdpbjowPjxkaXYgY2xhc3M9cm93IHN0eWxlPW1hcmdpbjowO21hcmdpbi10b3A6NTBweDttYXJnaW4tYm90dG9tOjUwcHg+PGRpdiBjbGFzcz1vcGVuLXNvdXJjZT48ZGl2IGNsYXNzPWNvbC1sZy0xMD48aW1nIGhlaWdodD0yMDAgY2xhc3M9ZmxvYXQtcmlnaHQgc3JjPS9zdGF0aWMvaW1nL29wZW4tc291cmNlLWxvY2sucG5nPjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTc+PGRpdiBjbGFzcz1mc2l6ZS1sYXJnZT5PcGVuIHNvdXJjZTwvZGl2PjxkaXYgY2xhc3M+V2UgZmlybWx5IGJlbGlldmUgaW4gc2hhcmluZyBrbm93bGVkZ2UgYW5kIHRoYXQgaXMgd2h5IHdlXFwncmUgYnVpbGRpbmcgb3VyIHBsYXRmb3JtIG9uIG9wZW4gc291cmNlIHRlY2hvbm9sb2d5IHN0YWNrLiBBbmd1bGFyIEpTLCBEamFuZ28gUmVzdCBGcmFtZXdvcmssIFBvc3RncmVzLiBOYXR1cmFsbHkgb3VyIHBsYXRmb3JtIHdpbGwgYmUgZnVsbHkgb3BlbiBzb3VyY2Ugc28gdGhhdCBldmVyeW9uZSBjYW4gZ2V0IGludm9sdmVkIGFuZCBwYXJ0aWNpcGF0ZSBpbiBkaWdpdGFsIHJldm9sdXRpb24gdGhhdCBLYXRhbHlvIHBsYW5zIHRvIGJlIGEgaHVnZSBwYXJ0IG9mLjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYm9keT48L2h0bWw+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvbGFuZGluZ19vbGQyLmh0bWwnLCd7JSBsb2FkIHN0YXRpY2ZpbGVzICV9PCFkb2N0eXBlIGh0bWw+PGh0bWw+PGhlYWQ+PHRpdGxlPkthdGFseW8gfCBOZXh0IGdlbmVyYXRpb24gWmVyby1jb2RlIHBsYXRmb3JtIHBvd2VyZWQgYnkgRU9TPC90aXRsZT48bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04XCI+PG1ldGEgaXRlbXByb3A9bmFtZSBjb250ZW50PVwiS2F0YWx5byB8IExvdy1jb2RlIHwgRU9TIHwgQmxvY2tjaGFpblwiPjxtZXRhIGl0ZW1wcm9wPWRlc2NyaXB0aW9uIGNvbnRlbnQ9XCJLYXRhbHlvIHwgTG93LWNvZGUgfCBaZXJvLWNvZGUgfCBUYXNrIG1hbmFnZW1lbnQgfCBCbG9ja2NoYWluIHwgQ2xvdWQgfCBTYWFTIHwgRU9TXCI+PGxpbmsgcmVsPVwic2hvcnRjdXQgaWNvblwiIHR5cGU9aW1hZ2UveC1pY29uIGhyZWY9XCJ7JSBzdGF0aWMgXFwnaW1nL2Zhdmljb24uaWNvXFwnICV9XCI+PHNjcmlwdCBzcmM9XCJ7JSBzdGF0aWMgXFwnbW9kdWxlcy8wMDAwX2NvbW1vbi8wMDAzX2xpYnMvanF1ZXJ5Lm1pbi5qc1xcJyAlfVwiPjwvc2NyaXB0PjxzY3JpcHQgc3JjPVwieyUgc3RhdGljIFxcJ21vZHVsZXMvMDAwMF9jb21tb24vMDAwM19saWJzL2Jvb3RzdHJhcC5taW4uanNcXCcgJX1cIj48L3NjcmlwdD48bGluayByZWw9c3R5bGVzaGVldCB0eXBlPXRleHQvY3NzIGhyZWY9XCJ7JSBzdGF0aWMgXFwnQ3NzL2Jvb3RzdHJhcC5taW4uY3NzXFwnICV9XCI+PGxpbmsgcmVsPXN0eWxlc2hlZXQgdHlwZT10ZXh0L2NzcyBocmVmPVwieyUgc3RhdGljIFxcJ0Nzcy9tYWluLmNzc1xcJyAlfVwiPjxsaW5rIHJlbD1zdHlsZXNoZWV0IHR5cGU9dGV4dC9jc3MgaHJlZj1cInslIHN0YXRpYyBcXCdDc3MvbmF2YmFyLmNzc1xcJyAlfVwiPjxzY3JpcHQgdHlwZT10ZXh0L2phdmFzY3JpcHQ+XFxuICAgICAgICAgICAgXFxuICAgICAgICAgICAgICB2YXIgX2dhcSA9IF9nYXEgfHwgW107XFxuICAgICAgICAgICAgICBfZ2FxLnB1c2goW1xcJ19zZXRBY2NvdW50XFwnLCBcXCdVQS0yNzA2MzE3OC0xXFwnXSk7XFxuICAgICAgICAgICAgICBfZ2FxLnB1c2goW1xcJ190cmFja1BhZ2V2aWV3XFwnXSk7XFxuICAgICAgICAgICAgXFxuICAgICAgICAgICAgICAoZnVuY3Rpb24oKSB7XFxuICAgICAgICAgICAgICAgIHZhciBnYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXFwnc2NyaXB0XFwnKTsgZ2EudHlwZSA9IFxcJ3RleHQvamF2YXNjcmlwdFxcJzsgZ2EuYXN5bmMgPSB0cnVlO1xcbiAgICAgICAgICAgICAgICBnYS5zcmMgPSAoXFwnaHR0cHM6XFwnID09IGRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sID8gXFwnaHR0cHM6Ly9zc2xcXCcgOiBcXCdodHRwOi8vd3d3XFwnKSArIFxcJy5nb29nbGUtYW5hbHl0aWNzLmNvbS9nYS5qc1xcJztcXG4gICAgICAgICAgICAgICAgdmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcXCdzY3JpcHRcXCcpWzBdOyBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGdhLCBzKTtcXG4gICAgICAgICAgICAgIH0pKCk7XFxuXFxuICAgICAgICA8L3NjcmlwdD48L2hlYWQ+PGJvZHk+PG5hdiBjbGFzcz1cIm5hdmJhciBuYXZiYXItY3VzdG9tIG5hdmJhci1maXhlZC10b3BcIiByb2xlPW5hdmlnYXRpb24+PGRpdiBjbGFzcz1jb250YWluZXItZmx1aWQ+PGRpdiBjbGFzcz1uYXZiYXItaGVhZGVyPjxpbWcgd2lkdGg9MTUwIHNyYz0vc3RhdGljL2ltZy9LYXRhbHlvX25hbWVfdHJhbnNwYXJlbnQucG5nPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwibmF2YmFyLXRvZ2dsZSBmbG9hdC1yaWdodFwiIGRhdGEtdG9nZ2xlPWNvbGxhcHNlIGRhdGEtdGFyZ2V0PSNuYXZiYXItY29sbGFwc2UtMT48c3BhbiBjbGFzcz1zci1vbmx5PlRvZ2dsZSBuYXZpZ2F0aW9uPC9zcGFuPiA8c3BhbiBjbGFzcz1pY29uLWJhcj48L3NwYW4+IDxzcGFuIGNsYXNzPWljb24tYmFyPjwvc3Bhbj4gPHNwYW4gY2xhc3M9aWNvbi1iYXI+PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2xsYXBzZSBuYXZiYXItY29sbGFwc2VcIiBpZD1uYXZiYXItY29sbGFwc2UtMT48dWwgY2xhc3M9XCJuYXYgbmF2YmFyLW5hdiBuYXZiYXItcmlnaHRcIj48bGk+PGEgaHJlZj0vaG93LWl0LXdvcmtzPkhvbWU8L2E+PC9saT48bGk+PGEgaHJlZj0vaG93LWl0LXdvcmtzPkFib3V0IHVzPC9hPjwvbGk+PGxpPjxhIGhyZWY9L2hvdy1pdC13b3Jrcz5UZWFtPC9hPjwvbGk+PGxpPjxhIGhyZWY9L2hvdy1pdC13b3Jrcz5Db21tdW5pdHk8L2E+PC9saT48bGk+PGEgaHJlZj0vaG93LWl0LXdvcmtzPlJvYWRtYXA8L2E+PC9saT48bGk+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1idG4tbWVudS1jbHM+VHJ5IGl0IE5vdyEgJm5ic3AgJiMxMDA5NTwvYnV0dG9uPjwvbGk+PC91bD48L2Rpdj48L2Rpdj48L25hdj48ZGl2IGNsYXNzPWNvbnRlbnQ+PGRpdiBjbGFzcz1yb3cgc3R5bGU9bWFyZ2luOjUwPjxkaXYgY2xhc3M9XCJjb2wteHMtNSBjb2wtbGctMTAgY29sLW1kLTEyIGZjb2xvciB0aXRsZVwiPjxkaXY+PGRpdj5CdWlsZCBhcHBsaWNhdGlvbnMuPC9kaXY+PGRpdj5FYXJuIHJld2FyZHMuPC9kaXY+PGRpdj5ObyBjb2RpbmcuPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1yY29ybmVyczE+PHNwYW4gc3R5bGU9XCJtYXJnaW46IGF1dG9cIj5wb3dlcmVkIGJ5PC9zcGFuPiA8aW1nIGNsYXNzPWNlbnRlciBzcmM9L3N0YXRpYy9pbWcvNjRweC1Fb3Npb19sb2dvLnN2Zy5wbmc+PC9kaXY+PGRpdiBzdHlsZT1tYXJnaW4tdG9wOjUwcHg+PGg0PkthdGFseW8gaXMgdGhlIG5leHQtZ2VuZXJhdGlvbiBsb3ctY29kZSBwbGF0Zm9ybTwvaDQ+PC9kaXY+PGRpdiBzdHlsZT1tYXJnaW4tdG9wOjEwcHg+PGRpdiBzdHlsZT1tYXJnaW4tdG9wOjEwcHg+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1idG4tbGVhcm4tbW9yZT5MZWFybiBtb3JlICZuYnNwICYjMTAwOTU8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTcgY29sLWxnLTcgY29sLW1kLTEyXCIgc3R5bGU9XCJjb2xvcjp3aGl0ZTtwYWRkaW5nLXRvcDogMTAwcHhcIj48aW1nIHNyYz0vc3RhdGljL2ltZy9ob21lLW1haW4taW1hZ2UucG5nPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgd2h5LWRpZmYgZmNvbG9yLWJsdWUgdGV4dC1jZW50ZXJcIiBzdHlsZT1tYXJnaW46MD48ZGl2IGNsYXNzPVwiY29seC14cy0xMiBjb2wtbGctMjRcIj48aDEgc3R5bGU9Zm9udC1zaXplOjM1MCU7bWFyZ2luLXRvcDozODBweD5XZWxjb21lIHRvIEthdGFseW8gLSB0aGUgbmV4dCBnZW5lcmF0aW9uIGxvdy1jb2RlIHBsYXRmb3JtPC9oMT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG1hcmtldHBsYWNlXCIgc3R5bGU9bWFyZ2luOjA+PGRpdiBjbGFzcz1yb3cgc3R5bGU9bWFyZ2luOjA+PGRpdiBjbGFzcz1cImNvbC14cy0zIGNvbC1sZy02IGNvbC1tZC0xMlwiPjxpbWcgaGVpZ2h0PTM1MCBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTttYXJnaW4tbGVmdDotNTBweDttYXJnaW4tdG9wOiAtMzAwcHg7XCIgc3JjPS9zdGF0aWMvaW1nL3NpZ251cC1kdWRlLnBuZz48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTYgY29sLWxnLTYgY29sLW1kLTEyIHRleHQtY2VudGVyXCI+PGRpdiBjbGFzcz1cImZjb2xvci1oYW5kIGZzaXplLWxhcmdlXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7bWFyZ2luLXRvcDogLTEyMHB4O1wiPlRoaXMgaXMgS2F0YWx5byBjb21tdW5pdHk8L2Rpdj48ZGl2IGNsYXNzPWZjb2xvciBzdHlsZT5LYXRhbHlvIGlzIGJ1aWxkaW5nIGEgY29tbXVuaXR5IGFuZCBhIG1hcmtldHBsYWNlIGZvciBjcmVhdG9ycyBhbmQgY29uc3VtZXJzPC9kaXY+PGRpdiBjbGFzcz1mY29sb3Igc3R5bGU+Qm90aCBjcmVhdG9ycyBhbmQgY29uc3VtZXJzIGEgd29ya2luZyB3aXRoIEthdGFseW8gdXNpbmcgYSB0aHJlZSBzaW1wbGUgc3RlcHM8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTMgY29sLWxnLTYgY29sLW1kLTEyXCI+PHNwYW4gY2xhc3M9ZG90Pjwvc3Bhbj4gPHNwYW4gY2xhc3M9cmluZz48L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1yb3cgc3R5bGU9bWFyZ2luOjA7bWFyZ2luLXRvcDoyMDBweDs+PGRpdiBjbGFzcz1cImNvbC14cy0yIGNvbC1sZy04IGNvbC1tZC0xMlwiPjxzcGFuIGNsYXNzPWJpZ2RvdD48L3NwYW4+IDxzcGFuIGNsYXNzPWRvdD48L3NwYW4+IDxzcGFuIGNsYXNzPXJpbmc+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtNCBjb2wtbGctOCBjb2wtbWQtMTJcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTt0b3A6MTAwcHg7cGFkZGluZy1ib3R0b206IDEwMHB4XCI+PGRpdiBjbGFzcz1cImZjb2xvci1oYW5kIGZzaXplLWxhcmdlXCI+Q29uc3VtZXJzPC9kaXY+PGRpdiBjbGFzcz1mY29sb3Igc3R5bGU+Q29uc3VtZXJzIGFyZSB1dGlsaXNpbmcgdGhlIHBvd2VyIG9mIEthdGFseW8gY29tbXVuaXR5IGFuZCBtYXJrZXRwbGFjZTwvZGl2PjxkaXYgY2xhc3M9ZmNvbG9yIHN0eWxlPlN0YXJ0IHdvcmtpbmcgaW1tZWRpYXRlbHk8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTYgY29sLWxnLTYgY29sLW1kLTEyXCI+PGltZyBoZWlnaHQ9Mzc1IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO21hcmdpbi1sZWZ0OiAxMDBweFwiIHNyYz0vc3RhdGljL2ltZy9jb25zdW1lcnMucG5nPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cm93IHN0eWxlPW1hcmdpbjowO21hcmdpbi10b3A6MHB4Oz48ZGl2IGNsYXNzPVwiY29sLXhzLTEgY29sLWxnLTggY29sLW1kLTFcIj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTcgY29sLWxnLTcgY29sLW1kLTEyXCI+PGltZyBoZWlnaHQ9Mzc1IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO21hcmdpbi1sZWZ0OjBweFwiIHNyYz0vc3RhdGljL2ltZy9ob21lLW1haW4taW1hZ2UucG5nPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtMyBjb2wtbGctNiBjb2wtbWQtMTJcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTt0b3A6MTAwcHg7cGFkZGluZy1ib3R0b206IDEwMHB4O1wiPjxkaXYgY2xhc3M9XCJmY29sb3ItaGFuZCBmc2l6ZS1sYXJnZVwiPkNyZWF0b3JzPC9kaXY+PGRpdiBjbGFzcz1mY29sb3Igc3R5bGU+Q3JlYXRvcnMgYXJlIHdvcmtpbmcgYW5kIGNyZWF0aW5nPC9kaXY+PGRpdiBjbGFzcz1mY29sb3Igc3R5bGU+U3RhcnQgd29ya2luZyBpbW1lZGlhdGVseTwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtMSBjb2wtbGctOCBjb2wtbWQtMTJcIj48c3BhbiBjbGFzcz1kb3Q+PC9zcGFuPiA8c3BhbiBjbGFzcz1yaW5nPjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXJvdyBzdHlsZT1tYXJnaW46MDttYXJnaW4tdG9wOjBweDs+PGRpdiBjbGFzcz1cImNvbC14cy0yIGNvbC1sZy04IGNvbC1tZC0xMlwiPjxkaXYgY2xhc3M9cm93IHN0eWxlPW1hcmdpbjowO21hcmdpbi10b3A6MTBweDs+PGRpdiBjbGFzcz1kb3Q+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1yb3cgc3R5bGU9bWFyZ2luOjA7bWFyZ2luLXRvcDoxMHB4Oz48ZGl2IGNsYXNzPXJpbmc+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1yb3cgc3R5bGU9bWFyZ2luOjA7bWFyZ2luLXRvcDoxMHB4Oz48ZGl2IGNsYXNzPWJpZ2RvdD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTQgY29sLWxnLTggY29sLW1kLTEyXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7dG9wOjEwMHB4O3BhZGRpbmctYm90dG9tOiAxMDBweFwiPjxkaXYgY2xhc3M9XCJmY29sb3ItaGFuZCBmc2l6ZS1sYXJnZVwiPk1hcmtldDwvZGl2PjxkaXYgY2xhc3M9ZmNvbG9yIHN0eWxlPk1hcmtldHBsYWNlIGVuYWJsZXMgYWxsIHBhcnRpY2lwYW50cyB0by4uLjwvZGl2PjxkaXYgY2xhc3M9ZmNvbG9yIHN0eWxlPlN0YXJ0IHdvcmtpbmcgaW1tZWRpYXRlbHk8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTYgY29sLWxnLTYgY29sLW1kLTEyXCI+PGltZyBoZWlnaHQ9Mzc1IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO21hcmdpbi1yaWdodDogNTBweFwiIHNyYz0vc3RhdGljL2ltZy9zaWdudXAucG5nPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgZmVhdHVyZXMtdG9wIGZjb2xvci1ibHVlIHRleHQtY2VudGVyXCIgc3R5bGU9bWFyZ2luOjA+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PGgxIGNsYXNzIHN0eWxlPW1hcmdpbi10b3A6MjUwcHg7bWFyZ2luLWJvdHRvbTo1MHB4PldoYXQgaXMgZGlmZmVyZW50IGFib3V0IEthdGFseW88L2gxPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgZmVhdHVyZXMtYm9keSBmY29sb3ItYmx1ZSB0ZXh0LWNlbnRlclwiIHN0eWxlPW1hcmdpbjowPjxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLWxnLTI0XCI+PGRpdiBjbGFzcz1cImNvbC14cy02IGNvbC1sZy02IGNvbC1tZC0xMlwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO3RvcDoxMDBweFwiPjxkaXYgY2xhc3M9XCJmY29sb3ItYmx1ZSBmc2l6ZS1sYXJnZVwiPldZU0lXWUc8L2Rpdj48ZGl2IGNsYXNzPWZjb2xvci1ibHVlIHN0eWxlPjxiPldoYXQgWW91IFNlZSBJcyBXaGF0IFlvdSBHZXQ8L2I+IGlzIG9mIHRoZSBtYWluIHByaW5jaXBsZXMgb2YgY3JlYXRpbmcgYXBwbGljYXRpb25zIGluIEthdGFseW88L2Rpdj48ZGl2IGNsYXNzPWZjb2xvci1ibHVlIHN0eWxlPkl0IGlzIGltcGVyYXRpdmUgdGhhdCB5b3UgY2FuIGltbWVkaWF0ZWxseSBzZWUgd2hhdCB3aWxsIHlvdSBhcHBsaWNhdGlvbiBsb29rIGxpa2UgYW5kIG5vdCBjbGljayBvbiB2YXJpb3VzIGJveGVzIGFuZCBsYXRlciBsZWFybiBpdCBjaGFuZ2VzIHRoZSB3YXkgdGhlIGFwcGxpY2F0aW9ucyB3b3Jrcy48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTYgY29sLWxnLTYgY29sLW1kLTEyXCI+PGltZyBoZWlnaHQ9Mzc1IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO21hcmdpbi1sZWZ0OiAxMDBweFwiIHNyYz0vc3RhdGljL2ltZy9Sb3VuZGVkX1JlY3RhbmdsZV8zX2NvcHkucG5nPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLWxnLTI0XCI+PGRpdiBjbGFzcz1cImNvbC14cy02IGNvbC1sZy02IGNvbC1tZC0xMlwiPjxpbWcgaGVpZ2h0PTM3NSBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTttYXJnaW4tbGVmdDogMTAwcHhcIiBzcmM9L3N0YXRpYy9pbWcvU2hhcGVfMjZfY29weS5wbmc+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy02IGNvbC1sZy02IGNvbC1tZC0xMlwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO3RvcDoxMDBweFwiPjxkaXYgY2xhc3M9XCJmY29sb3ItYmx1ZSBmc2l6ZS1sYXJnZVwiPkpJVDwvZGl2PjxkaXYgY2xhc3M9ZmNvbG9yLWJsdWUgc3R5bGU+TmV3IGRlbWFuZHMgYXJlIFRoZSBjdXN0b21lcnMsIHRoZSBjb21wZXRpdG9ycywgdGhlIGdvdmVybWVudCBhbmQgcmVndWxhdG9ycyBhcmUgYWxsIHByZXNzdXJpbmcgb3JnYW5pc2F0aW9uczwvZGl2PjxkaXYgY2xhc3M9ZmNvbG9yLWJsdWUgc3R5bGU+SnVzdCBJbiBUaW1lIGVtcG93ZXJzIHBlb3BsZSBhbmQgb3JnYW5pc2F0aW9ucyB0byBiZSBhZ2lsZSBhbmQgY2hhbmdlIHRoZSB3YXkgYXBwbGljYXRpb24gaXMgd29ya2luZyBldmVuIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIHRoZSBwcm9jZXNzLjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLWxnLTI0XCI+PGRpdiBjbGFzcz1cImNvbC14cy02IGNvbC1sZy02IGNvbC1tZC0xMlwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO3RvcDoxMDBweFwiPjxkaXYgY2xhc3M9XCJmY29sb3ItYmx1ZSBmc2l6ZS1sYXJnZVwiPkF1dG9tYXRlZCBkZXYtb3BzIGFuZCB2ZXJzaW9uIGNvbnRyb2w8L2Rpdj48ZGl2IGNsYXNzPWZjb2xvci1ibHVlIHN0eWxlPkF1dG9tYXRlZCBkZXYtb3BzIGFuZCB2ZXJzaW9uIGNvbnRyb2wgaXMgby4uPC9kaXY+PGRpdiBjbGFzcz1mY29sb3ItYmx1ZSBzdHlsZT5JdCBpcyBpbXBlcmF0aXZlIC4uLjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtNiBjb2wtbGctNiBjb2wtbWQtMTJcIj48aW1nIGhlaWdodD0zNzUgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7bWFyZ2luLWxlZnQ6IDEwMHB4XCIgc3JjPS9zdGF0aWMvaW1nL2F1dG9tYXRlZF9kZXZvcHMucG5nPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLWxnLTI0XCI+PGRpdiBjbGFzcz1cImNvbC14cy02IGNvbC1sZy02IGNvbC1tZC0xMlwiPjxpbWcgaGVpZ2h0PTM3NSBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTttYXJnaW4tbGVmdDogMTAwcHhcIiBzcmM9L3N0YXRpYy9pbWcvcG9pbnRpbmdfZHVkZV9jb3B5LnBuZz48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTYgY29sLWxnLTYgY29sLW1kLTEyXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7dG9wOjEwMHB4XCI+PGRpdiBjbGFzcz1cImZjb2xvci1ibHVlIGZzaXplLWxhcmdlXCI+SW1tdXRhYmxlPC9kaXY+PGRpdiBjbGFzcz1mY29sb3ItYmx1ZSBzdHlsZT5JbW11dGFibGUgZGF0YSBtYW5hZ2VtZW50IGlzIG5lZWRlZCB0by4uLjwvZGl2PjxkaXYgY2xhc3M9ZmNvbG9yLWJsdWUgc3R5bGU+U2VjdXJpdHkgaXMgdGhlIGtleS4uLjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLWxnLTI0XCI+PGRpdiBjbGFzcz1cImNvbC14cy02IGNvbC1sZy02IGNvbC1tZC0xMlwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO3RvcDoxMDBweFwiPjxkaXYgY2xhc3M9XCJmY29sb3ItYmx1ZSBmc2l6ZS1sYXJnZVwiPkdhbWlmaWNhdGlvbjwvZGl2PjxkaXYgY2xhc3M9ZmNvbG9yLWJsdWUgc3R5bGU+V29yayBpcyBhIGdhbWUuLi48L2Rpdj48ZGl2IGNsYXNzPWZjb2xvci1ibHVlIHN0eWxlPkdhbWlmaWNhdGlvbiBpcyAuLi48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTYgY29sLWxnLTYgY29sLW1kLTEyXCI+PGltZyBoZWlnaHQ9Mzc1IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO21hcmdpbi1sZWZ0OiAxMDBweFwiIHNyYz0vc3RhdGljL2ltZy9nYW1pZmljYXRpb24ucG5nPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgZm91bmRlcnMtZGl2IGZjb2xvci1ibHVlIHRleHQtY2VudGVyXCIgc3R5bGU9bWFyZ2luOjA+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PGgxIGNsYXNzIHN0eWxlPW1hcmdpbi10b3A6MTgwcHg7bWFyZ2luLWJvdHRvbTo1MHB4Pk1lZXQgdGhlIGZvdW5kaW5nIHRlYW08L2gxPjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxoNCBjbGFzcyBzdHlsZT1tYXJnaW4tYm90dG9tOjUwcHg+QXMgaW4gZXZlcnkgc3RhcnR1cCB3ZSBhbGwgd2VhciBtYW55IGhhdHMgYW5kIGRvIHdoYXRldmVyIGlzIHJlcXVpcmVkIGZyb20gb3VyIHZlbnR1cmUgYnV0IHdlIGRvIHRyeSB0byBzcGxpdCB0aGUgd29yayB0byBtYWtlIGl0IGFzIGVmZmljaWVudCBhcyBwb3NzaWJsZTwvaDQ+PC9kaXY+PGRpdiBjbGFzcz1yb3cgc3R5bGU9bWFyZ2luOjA+PGRpdiBjbGFzcz1cImNvbC1sZy04IGNvbC1tZC0xMlwiPjxpbWcgaGVpZ2h0PTIwMCBzcmM9L3N0YXRpYy9pbWcvZm91bmRlci0xLnBuZz48ZGl2IHN0eWxlPVwibWFyZ2luLXRvcDogMTBweDtcIj5JZ29yPC9kaXY+PGRpdj5Dby1mb3VuZGVyPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy04IGNvbC1tZC0xMlwiPjxpbWcgaGVpZ2h0PTIwMCBzcmM9L3N0YXRpYy9pbWcvZm91bmRlci0yLnBuZz48ZGl2IHN0eWxlPVwibWFyZ2luLXRvcDogMTBweDtcIj5EYW5pZWw8L2Rpdj48ZGl2PkNvLWZvdW5kZXI8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTggY29sLW1kLTEyXCI+PGltZyBoZWlnaHQ9MjAwIHNyYz0vc3RhdGljL2ltZy9mb3VuZGVyLTMucG5nPjxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAxMHB4O1wiPkl2aWNhPC9kaXY+PGRpdj5Dby1mb3VuZGVyPC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBmb3VuZGVycy1ib3R0b21cIiBzdHlsZT1tYXJnaW46MD48aW1nIGNsYXNzPWZsb2F0LXJpZ2h0IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO3RvcDo1MHB4XCIgaGVpZ2h0PTMwMCBzcmM9L3N0YXRpYy9pbWcvZHVkZS1zaXR0aW5nLnBuZz48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IGNvbnRhY3QtdXMgZmNvbG9yXCIgc3R5bGU9bWFyZ2luOjA+PGRpdiBjbGFzcz1yb3cgc3R5bGU9bWFyZ2luOjA7bWFyZ2luLXRvcDo1MHB4O21hcmdpbi1ib3R0b206NTBweD48ZGl2IGNsYXNzPW9wZW4tc291cmNlPjxkaXYgY2xhc3M9Y29sLWxnLTEwPjxpbWcgaGVpZ2h0PTIwMCBjbGFzcz1mbG9hdC1yaWdodCBzcmM9L3N0YXRpYy9pbWcvb3Blbi1zb3VyY2UtbG9jay5wbmc+PC9kaXY+PGRpdiBjbGFzcz1jb2wtbGctNz48ZGl2IGNsYXNzPWZzaXplLWxhcmdlPk9wZW4gc291cmNlPC9kaXY+PGRpdiBjbGFzcz5XZSBmaXJtbHkgYmVsaWV2ZSBpbiBzaGFyaW5nIGtub3dsZWRnZSBhbmQgdGhhdCBpcyB3aHkgd2VcXCdyZSBidWlsZGluZyBvdXIgcGxhdGZvcm0gb24gb3BlbiBzb3VyY2UgdGVjaG9ub2xvZ3kgc3RhY2suIEFuZ3VsYXIgSlMsIERqYW5nbyBSZXN0IEZyYW1ld29yaywgUG9zdGdyZXMuIE5hdHVyYWxseSBvdXIgcGxhdGZvcm0gd2lsbCBiZSBmdWxseSBvcGVuIHNvdXJjZSBzbyB0aGF0IGV2ZXJ5b25lIGNhbiBnZXQgaW52b2x2ZWQgYW5kIHBhcnRpY2lwYXRlIGluIGRpZ2l0YWwgcmV2b2x1dGlvbiB0aGF0IEthdGFseW8gcGxhbnMgdG8gYmUgYSBodWdlIHBhcnQgb2YuPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ib2R5PjwvaHRtbD4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9sYW5kaW5nX29sZDMuaHRtbCcsJ3slIGxvYWQgc3RhdGljZmlsZXMgJX08IWRvY3R5cGUgaHRtbD48aHRtbD48aGVhZD48dGl0bGU+S2F0YWx5byB8IE5leHQgZ2VuZXJhdGlvbiBaZXJvLWNvZGUgcGxhdGZvcm0gcG93ZXJlZCBieSBFT1M8L3RpdGxlPjxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9XCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLThcIj48bWV0YSBpdGVtcHJvcD1uYW1lIGNvbnRlbnQ9XCJLYXRhbHlvIHwgTG93LWNvZGUgfCBFT1MgfCBCbG9ja2NoYWluXCI+PG1ldGEgaXRlbXByb3A9ZGVzY3JpcHRpb24gY29udGVudD1cIkthdGFseW8gfCBMb3ctY29kZSB8IFplcm8tY29kZSB8IFRhc2sgbWFuYWdlbWVudCB8IEJsb2NrY2hhaW4gfCBDbG91ZCB8IFNhYVMgfCBFT1NcIj48bGluayByZWw9XCJzaG9ydGN1dCBpY29uXCIgdHlwZT1pbWFnZS94LWljb24gaHJlZj1cInslIHN0YXRpYyBcXCdpbWcvZmF2aWNvbi5pY29cXCcgJX1cIj48c2NyaXB0IHNyYz1cInslIHN0YXRpYyBcXCdtb2R1bGVzLzAwMDBfY29tbW9uLzAwMDNfbGlicy9qcXVlcnkubWluLmpzXFwnICV9XCI+PC9zY3JpcHQ+PHNjcmlwdCBzcmM9XCJ7JSBzdGF0aWMgXFwnbW9kdWxlcy8wMDAwX2NvbW1vbi8wMDAzX2xpYnMvYm9vdHN0cmFwLm1pbi5qc1xcJyAlfVwiPjwvc2NyaXB0PjxsaW5rIHJlbD1zdHlsZXNoZWV0IHR5cGU9dGV4dC9jc3MgaHJlZj1cInslIHN0YXRpYyBcXCdDc3MvYm9vdHN0cmFwLm1pbi5jc3NcXCcgJX1cIj48bGluayByZWw9c3R5bGVzaGVldCB0eXBlPXRleHQvY3NzIGhyZWY9XCJ7JSBzdGF0aWMgXFwnQ3NzL21haW4uY3NzXFwnICV9XCI+PGxpbmsgcmVsPXN0eWxlc2hlZXQgdHlwZT10ZXh0L2NzcyBocmVmPVwieyUgc3RhdGljIFxcJ0Nzcy9uYXZiYXIuY3NzXFwnICV9XCI+PHNjcmlwdCB0eXBlPXRleHQvamF2YXNjcmlwdD5cXG4gICAgICAgICAgICBcXG4gICAgICAgICAgICAgIHZhciBfZ2FxID0gX2dhcSB8fCBbXTtcXG4gICAgICAgICAgICAgIF9nYXEucHVzaChbXFwnX3NldEFjY291bnRcXCcsIFxcJ1VBLTI3MDYzMTc4LTFcXCddKTtcXG4gICAgICAgICAgICAgIF9nYXEucHVzaChbXFwnX3RyYWNrUGFnZXZpZXdcXCddKTtcXG4gICAgICAgICAgICBcXG4gICAgICAgICAgICAgIChmdW5jdGlvbigpIHtcXG4gICAgICAgICAgICAgICAgdmFyIGdhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcXCdzY3JpcHRcXCcpOyBnYS50eXBlID0gXFwndGV4dC9qYXZhc2NyaXB0XFwnOyBnYS5hc3luYyA9IHRydWU7XFxuICAgICAgICAgICAgICAgIGdhLnNyYyA9IChcXCdodHRwczpcXCcgPT0gZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wgPyBcXCdodHRwczovL3NzbFxcJyA6IFxcJ2h0dHA6Ly93d3dcXCcpICsgXFwnLmdvb2dsZS1hbmFseXRpY3MuY29tL2dhLmpzXFwnO1xcbiAgICAgICAgICAgICAgICB2YXIgcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFxcJ3NjcmlwdFxcJylbMF07IHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZ2EsIHMpO1xcbiAgICAgICAgICAgICAgfSkoKTtcXG5cXG4gICAgICAgIDwvc2NyaXB0PjwvaGVhZD48Ym9keT48bmF2IGNsYXNzPVwibmF2YmFyIG5hdmJhci1jdXN0b20gbmF2YmFyLWZpeGVkLXRvcFwiIHJvbGU9bmF2aWdhdGlvbj48ZGl2IGNsYXNzPWNvbnRhaW5lci1mbHVpZD48ZGl2IGNsYXNzPW5hdmJhci1oZWFkZXI+PGltZyBjbGFzcz1uYXZiYXJpbWcgc3JjPS9zdGF0aWMvaW1nL0thdGFseW9fbmFtZV90cmFuc3BhcmVudC5wbmc+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJuYXZiYXItdG9nZ2xlIGZsb2F0LXJpZ2h0XCIgZGF0YS10b2dnbGU9Y29sbGFwc2UgZGF0YS10YXJnZXQ9I25hdmJhci1jb2xsYXBzZS0xPjxzcGFuIGNsYXNzPXNyLW9ubHk+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+IDxzcGFuIGNsYXNzPWljb24tYmFyPjwvc3Bhbj4gPHNwYW4gY2xhc3M9aWNvbi1iYXI+PC9zcGFuPiA8c3BhbiBjbGFzcz1pY29uLWJhcj48L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1cImNvbGxhcHNlIG5hdmJhci1jb2xsYXBzZVwiIGlkPW5hdmJhci1jb2xsYXBzZS0xPjx1bCBjbGFzcz1cIm5hdiBuYXZiYXItbmF2IG5hdmJhci1yaWdodFwiPjxsaT48YSBjbGFzcz1mbnRzaXplMSBzdHlsZT1cInRvcDogMC41dnc7XCIgaHJlZj0vaG93LWl0LXdvcmtzPkhvbWU8L2E+PC9saT48bGk+PGEgY2xhc3M9Zm50c2l6ZTEgc3R5bGU9XCJ0b3A6IDAuNXZ3O1wiIGhyZWY9L2hvdy1pdC13b3Jrcz5BYm91dCB1czwvYT48L2xpPjxsaT48YSBjbGFzcz1mbnRzaXplMSBzdHlsZT1cInRvcDogMC41dnc7XCIgaHJlZj0vaG93LWl0LXdvcmtzPlRlYW08L2E+PC9saT48bGk+PGEgY2xhc3M9Zm50c2l6ZTEgc3R5bGU9XCJ0b3A6IDAuNXZ3O1wiIGhyZWY9L2hvdy1pdC13b3Jrcz5Db21tdW5pdHk8L2E+PC9saT48bGk+PGEgY2xhc3M9Zm50c2l6ZTEgc3R5bGU9XCJ0b3A6IDAuNXZ3O1wiIGhyZWY9L2hvdy1pdC13b3Jrcz5Sb2FkbWFwPC9hPjwvbGk+PGxpIHN0eWxlPVwicGFkZGluZy10b3A6IDVweDtcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiZm50c2l6ZTEgYnRuLW1lbnUtY2xzXCI+VHJ5IGl0IE5vdyEgJm5ic3AgJiMxMDA5NTwvYnV0dG9uPjwvbGk+PC91bD48L2Rpdj48L2Rpdj48L25hdj48ZGl2IGNsYXNzPWNvbnRlbnQ+PGRpdiBjbGFzcz1yb3cgc3R5bGU9aGVpZ2h0OjE0dnc+PC9kaXY+PGRpdiBjbGFzcz1yb3c+PGRpdiBjbGFzcz1cImNvbC14cy0yIGNvbC1sZy04IGNvbC1tZC0yIGZjb2xvciB0aXRsZVwiPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtNCBjb2wtbGctOCBjb2wtbWQtNCBmY29sb3IgdGl0bGVcIj48ZGl2PjxkaXYgY2xhc3M9Zm50c2l6ZTI+QnVpbGQgYXBwbGljYXRpb25zLjwvZGl2PjxkaXYgY2xhc3M9Zm50c2l6ZTI+RWFybiByZXdhcmRzLjwvZGl2PjxkaXYgY2xhc3M9Zm50c2l6ZTI+Tm8gY29kaW5nLjwvZGl2PjwvZGl2PjxkaXY+PGltZyBzdHlsZT1oZWlnaHQ6MTJ2bWluIHNyYz0vc3RhdGljL2ltZy9QT1dFUkVEX0JZX0VJT1MucG5nPjwvZGl2PjxkaXYgY2xhc3M9Zm50c2l6ZTAgc3R5bGU9bWFyZ2luLXRvcDo1MHB4PkthdGFseW8gaXMgdGhlIG5leHQtZ2VuZXJhdGlvbiBsb3ctY29kZSBwbGF0Zm9ybTwvZGl2PjxkaXYgc3R5bGU9bWFyZ2luLXRvcDoxMHB4PjxkaXYgc3R5bGU9bWFyZ2luLXRvcDoxMHB4PjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJmbnRzaXplMSBidG4tbGVhcm4tbW9yZVwiPkxlYXJuIG1vcmUgJm5ic3AgJiMxMDA5NTwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtNSBjb2wtbGctMTAgY29sLW1kLTVcIj48aW1nIGNsYXNzPWltZy1yZXNwb25zaXZlIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDIwcHg7XCIgc3JjPS9zdGF0aWMvaW1nL2hvbWUtbWFpbi1pbWFnZS1MUS5wbmc+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy0xIGNvbC1sZy04IGNvbC1tZC0xIGZjb2xvciB0aXRsZVwiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgd2h5LWRpZmYgZmNvbG9yLWJsdWVcIiBzdHlsZT1kaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7dG9wOjUwcHg+PGRpdiBjbGFzcz1cImNvbC14cy0yIGNvbC1sZy04IGNvbC1tZC0yXCIgc3R5bGU9XCJ0b3A6IDR2aDtcIj48aW1nIGNsYXNzPWltZy1yZXNwb25zaXZlIHN0eWxlPVwicG9zaXRpb246cmVsYXRpdmU7bWF4LXdpZHRoOiAyMHZtaW47XCIgc3JjPS9zdGF0aWMvaW1nL3NpZ251cC1kdWRlLnBuZz48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTggY29sLW1kLTggY29sLWxnLTggZm50c2l6ZTJcIiBzdHlsZT1cInBhZGRpbmctbGVmdDo4MHB4O3RleHQtYWxpZ246IGNlbnRlcjtcIj5XZWxjb21lIHRvIEthdGFseW8hPC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy0yIGNvbC1sZy04IGNvbC1tZC0yXCI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1yb3cgc3R5bGU9XCJoZWlnaHQ6IDEwcHg7XCI+PGRpdiBjbGFzcz1cImNvbC14cy0zIGNvbC1sZy02IGNvbC1tZC0zXCI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtYXJrZXRwbGFjZVwiPjxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLWxnLTI0IGNvbC1tZC0xMlwiPjxkaXYgY2xhc3M9cm93IHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMTAwcHg7XCI+PGRpdiBjbGFzcz1cImNvbC14cy0zIGNvbC1sZy02IGNvbC1tZC0zXCI+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy01IGNvbC1sZy0xMCBjb2wtbWQtNVwiIHN0eWxlPVwidG9wOiAtMnZtaW47IGxlZnQ6IC00dm1pbjtcIj48ZGl2IGNsYXNzPVwiZmNvbG9yLWhhbmQgZm50c2l6ZTJcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAxdmg7dGV4dC1zaGFkb3c6IDJweCAycHggNHB4ICMwMDAwMDA7XCI+VGhpcyBpcyBLYXRhbHlvIGNvbW11bml0eTwvZGl2PjxkaXYgY2xhc3M9XCJmY29sb3IgZm50c2l6ZTFcIj5LYXRhbHlvIGlzIGJ1aWxkaW5nIGEgY29tbXVuaXR5IGFuZCBhIG1hcmtldHBsYWNlIGZvciBjcmVhdG9ycyBhbmQgY29uc3VtZXJzPC9kaXY+PGRpdiBjbGFzcz1cImZjb2xvciBmbnRzaXplMVwiIHN0eWxlPkJvdGggY3JlYXRvcnMgYW5kIGNvbnN1bWVycyBhIHdvcmtpbmcgd2l0aCBLYXRhbHlvIHVzaW5nIGEgdGhyZWUgc2ltcGxlIHN0ZXBzPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy00IGNvbC1sZy04IGNvbC1tZC00XCI+PHNwYW4gY2xhc3M9ZG90Pjwvc3Bhbj4gPHNwYW4gY2xhc3M9cmluZz48L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1yb3cgc3R5bGU9XCJkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWJvdHRvbTogNTBweDtcIj48ZGl2IGNsYXNzPVwiY29sLXhzLTMgY29sLWxnLTYgY29sLW1kLTNcIj48c3BhbiBjbGFzcz1iaWdkb3Q+PC9zcGFuPiA8c3BhbiBjbGFzcz1kb3Q+PC9zcGFuPiA8c3BhbiBjbGFzcz1yaW5nPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTQgY29sLWxnLTYgY29sLW1kLTNcIiBzdHlsZT1cInRvcDogMXZoO1wiPjxkaXYgY2xhc3M9XCJmY29sb3ItaGFuZCBmbnRzaXplMlwiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDF2aFwiPkNvbnN1bWVyczwvZGl2PjxkaXYgY2xhc3M9XCJmY29sb3IgZm50c2l6ZTFcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAxdmg7dGV4dC1zaGFkb3c6IDJweCAycHggNHB4ICMwMDAwMDA7XCI+Q29uc3VtZXJzIGFyZSB1dGlsaXNpbmcgdGhlIHBvd2VyIG9mIEthdGFseW8gY29tbXVuaXR5IGFuZCBtYXJrZXRwbGFjZTwvZGl2PjxkaXYgY2xhc3M9XCJmY29sb3IgZm50c2l6ZTFcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAxdmg7dGV4dC1zaGFkb3c6IDJweCAycHggNHB4ICMwMDAwMDA7XCI+U3RhcnQgd29ya2luZyBpbW1lZGlhdGVseTwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtNCBjb2wtbGctMTAgY29sLW1kLTVcIj48aW1nIGNsYXNzPWltZy1yZXNwb25zaXZlIHN0eWxlIHNyYz0vc3RhdGljL2ltZy9jb25zdW1lcnMtTFEucG5nPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtMSBjb2wtbGctOCBjb2wtbWQtMVwiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cm93PjxkaXYgY2xhc3M9XCJjb2wteHMtMiBjb2wtbGctOCBjb2wtbWQtMlwiPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtNCBjb2wtbGctOCBjb2wtbWQtNFwiIHN0eWxlPjxpbWcgY2xhc3M9aW1nLXJlc3BvbnNpdmUgc3R5bGU9XCJkaXNwbGF5OiBibG9jazsgbWFyZ2luLWxlZnQ6IGF1dG87bWFyZ2luLXJpZ2h0OiBhdXRvXCIgc3JjPS9zdGF0aWMvaW1nL2hvbWUtbWFpbi1pbWFnZS1MUS5wbmc+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy0zIGNvbC1sZy02IGNvbC1tZC0zXCIgc3R5bGU9XCJ0b3A6NDBweDsgbGVmdDogLTIwcHhcIj48ZGl2IGNsYXNzPVwiZmNvbG9yLWhhbmQgZm50c2l6ZTJcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAxdmhcIj5DcmVhdG9yczwvZGl2PjxkaXYgY2xhc3M9XCJmY29sb3IgZm50c2l6ZTFcIiBzdHlsZT5DcmVhdG9ycyBhcmUgd29ya2luZyBhbmQgY3JlYXRpbmc8L2Rpdj48ZGl2IGNsYXNzPVwiZmNvbG9yIGZudHNpemUxXCIgc3R5bGU+U3RhcnQgd29ya2luZyBpbW1lZGlhdGVseTwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtMSBjb2wtbGctOCBjb2wtbWQtMlwiPjxzcGFuIGNsYXNzPWRvdD48L3NwYW4+IDxzcGFuIGNsYXNzPXJpbmc+PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cm93IHN0eWxlPVwicGFkZGluZy1ib3R0b206IDEwMHB4XCI+PGRpdiBjbGFzcz1cImNvbC14cy00IGNvbC1tZC00IGNvbC1sZy04XCI+PGRpdiBjbGFzcz1yb3cgc3R5bGU9bWFyZ2luOjA7bWFyZ2luLXRvcDoxMHB4Oz48ZGl2IGNsYXNzPWRvdD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXJvdyBzdHlsZT1tYXJnaW46MDttYXJnaW4tdG9wOjEwcHg7PjxkaXYgY2xhc3M9cmluZz48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXJvdyBzdHlsZT1tYXJnaW46MDttYXJnaW4tdG9wOjEwcHg7PjxkaXYgY2xhc3M9YmlnZG90PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtMyBjb2wtbWQtMyBjb2wtbGctNlwiIHN0eWxlPXRvcDoxNTBweDs+PGRpdiBjbGFzcz1cImZjb2xvci1oYW5kIGZudHNpemUyXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMXZoXCI+TWFya2V0PC9kaXY+PGRpdiBjbGFzcz1cImZjb2xvciBmbnRzaXplMVwiIHN0eWxlPk1hcmtldHBsYWNlIGVuYWJsZXMgYWxsIHBhcnRpY2lwYW50cyB0by4uLjwvZGl2PjxkaXYgY2xhc3M9XCJmY29sb3IgZm50c2l6ZTFcIiBzdHlsZT5TdGFydCB3b3JraW5nIGltbWVkaWF0ZWx5PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy00IGNvbC1tZC00IGNvbC1sZy04XCIgc3R5bGU9dG9wOjE1MHB4PjxpbWcgY2xhc3M9aW1nLXJlc3BvbnNpdmUgc3JjPS9zdGF0aWMvaW1nL3NpZ251cC5wbmc+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy0xIGNvbC1tZC0xIGNvbC1sZy04XCI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBmZWF0dXJlcy10b3AgZmNvbG9yLWJsdWUgZm50c2l6ZTEgdGV4dC1jZW50ZXJcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IGNvbC1tZC0xMiBjb2wteHMtMTJcIiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6MHB4OyB0b3A6IDEwMHB4XCI+PGltZyBjbGFzcz1pbWctcmVzcG9uc2l2ZSBzcmM9L3N0YXRpYy9pbWcvZmVhdHVyZXMtdG9wLnBuZz48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IGZlYXR1cmVzLWJvZHkgZmNvbG9yLWJsdWUgZm50c2l6ZTEgdGV4dC1jZW50ZXJcIj48ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1sZy0yNCBjb2wtbWQtMTJcIj48ZGl2IGNsYXNzPVwicm93IGZudHNpemUxIHRleHQtY2VudGVyIGZjb2xvci1ibHVlXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBjb2wtbWQtMTIgY29sLXhzLTEyXCIgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OjBweDtwYWRkaW5nLWJvdHRvbTogNTBweDtcIj48ZGl2IGNsYXNzPWZudHNpemUyIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XCI+V2hhdCBpcyBkaWZmZXJlbnQgYWJvdXQgS2F0YWx5bzwvZGl2PjxkaXYgc3R5bGU9XCJib3JkZXItY29sb3I6IzJjODVkZDtib3JkZXItd2lkdGg6IDFweDtib3JkZXItc3R5bGU6IHNvbGlkO3dpZHRoOiAyNSU7bWFyZ2luLWxlZnQ6IGF1dG87bWFyZ2luLXJpZ2h0OiBhdXRvO1wiPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cm93IHN0eWxlPWRpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjs+PGRpdiBjbGFzcz1cImNvbC14cy0yIGNvbC1sZy04IGNvbC1tZC0yXCI+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy00IGNvbC1sZy04IGNvbC1tZC00XCIgc3R5bGU9cGFkZGluZy1ib3R0b206MTAwcHg7dG9wOjUwcHg+PGRpdj48ZGl2IGNsYXNzPVwiZmNvbG9yLWJsdWUgZm50c2l6ZTJcIj5XWVNJV1lHPC9kaXY+PGRpdiBjbGFzcz1cImZjb2xvci1ibHVlIGZudHNpemUxXCI+PGI+V2hhdCBZb3UgU2VlIElzIFdoYXQgWW91IEdldDwvYj4gaXMgb2YgdGhlIG1haW4gcHJpbmNpcGxlcyBvZiBjcmVhdGluZyBhcHBsaWNhdGlvbnMgaW4gS2F0YWx5bzwvZGl2PjxkaXYgY2xhc3M9XCJmY29sb3ItYmx1ZSBmbnRzaXplMVwiPkl0IGlzIGltcGVyYXRpdmUgdGhhdCB5b3UgY2FuIGltbWVkaWF0ZWxseSBzZWUgd2hhdCB3aWxsIHlvdSBhcHBsaWNhdGlvbiBsb29rIGxpa2UgYW5kIG5vdCBjbGljayBvbiB2YXJpb3VzIGJveGVzIGFuZCBsYXRlciBsZWFybiBpdCBjaGFuZ2VzIHRoZSB3YXkgdGhlIGFwcGxpY2F0aW9ucyB3b3Jrcy48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTUgY29sLWxnLTEwIGNvbC1tZC01XCI+PGltZyBjbGFzcz1pbWctcmVzcG9uc2l2ZSBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMTBweDtcIiBzcmM9L3N0YXRpYy9pbWcvUm91bmRlZF9SZWN0YW5nbGVfM19jb3B5LnBuZz48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTEgY29sLWxnLTggY29sLW1kLTFcIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXJvdyBzdHlsZT1kaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7PjxkaXYgY2xhc3M9XCJjb2wteHMtMSBjb2wtbGctOCBjb2wtbWQtMVwiPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtNCBjb2wtbGctOCBjb2wtbWQtNFwiPjxpbWcgc3R5bGU9cGFkZGluZy10b3A6MTAwcHg7ZmxvYXQ6cmlnaHQgY2xhc3M9aW1nLXJlc3BvbnNpdmUgc3JjPS9zdGF0aWMvaW1nL1NoYXBlXzI2X2NvcHkucG5nPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtNSBjb2wtbGctMTAgY29sLW1kLTVcIj48ZGl2IGNsYXNzPVwiZmNvbG9yLWJsdWUgZm50c2l6ZTJcIj5KSVQ8L2Rpdj48ZGl2IGNsYXNzPWZjb2xvci1ibHVlIHN0eWxlPk5ldyBkZW1hbmRzIGFyZSBUaGUgY3VzdG9tZXJzLCB0aGUgY29tcGV0aXRvcnMsIHRoZSBnb3Zlcm1lbnQgYW5kIHJlZ3VsYXRvcnMgYXJlIGFsbCBwcmVzc3VyaW5nIG9yZ2FuaXNhdGlvbnM8L2Rpdj48ZGl2IGNsYXNzPWZjb2xvci1ibHVlIHN0eWxlPkp1c3QgSW4gVGltZSBlbXBvd2VycyBwZW9wbGUgYW5kIG9yZ2FuaXNhdGlvbnMgdG8gYmUgYWdpbGUgYW5kIGNoYW5nZSB0aGUgd2F5IGFwcGxpY2F0aW9uIGlzIHdvcmtpbmcgZXZlbiBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgcHJvY2Vzcy48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTIgY29sLWxnLTggY29sLW1kLTJcIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXJvdyBzdHlsZT1kaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7PjxkaXYgY2xhc3M9XCJjb2wteHMtMyBjb2wtbGctNiBjb2wtbWQtM1wiPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtNCBjb2wtbGctOCBjb2wtbWQtNFwiIHN0eWxlPVwidG9wOiA1MHB4O1wiPjxkaXYgY2xhc3M9XCJmY29sb3ItYmx1ZSBmbnRzaXplMlwiPkF1dG9tYXRlZCBERVZPUFM8L2Rpdj48ZGl2IGNsYXNzPVwiZmNvbG9yLWJsdWUgZm50c2l6ZTFcIj5BdXRvbWF0ZWQgZGV2LW9wcyBhbmQgdmVyc2lvbiBjb250cm9sIGlzIG8uLjwvZGl2PjxkaXYgY2xhc3M9XCJmY29sb3ItYmx1ZSBmbnRzaXplMVwiPkl0IGlzIGltcGVyYXRpdmUgLi4uPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy00IGNvbC1sZy04IGNvbC1tZC00XCIgc3R5bGU9dG9wOjUwcHg+PGltZyBjbGFzcz1pbWctcmVzcG9uc2l2ZSBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMjBweDtcIiBzcmM9L3N0YXRpYy9pbWcvYXV0b21hdGVkX2Rldm9wcy5wbmc+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy0xIGNvbC1sZy04IGNvbC1tZC0xXCI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1yb3cgc3R5bGU9ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOz48ZGl2IGNsYXNzPVwiY29sLXhzLTIgY29sLWxnLTggY29sLW1kLTJcIj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTQgY29sLWxnLTggY29sLW1kLTRcIiBzdHlsZT10b3A6MTAwcHg+PGltZyBjbGFzcz1pbWctcmVzcG9uc2l2ZSBzdHlsZT1mbG9hdDpyaWdodDttYXJnaW4tcmlnaHQ6LTIwcHggc3JjPS9zdGF0aWMvaW1nL3BvaW50aW5nX2R1ZGVfY29weS5wbmc+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy00IGNvbC1sZy04IGNvbC1tZC00XCIgc3R5bGU9dG9wOjUwcHg+PGRpdiBjbGFzcz1cImZjb2xvci1ibHVlIGZudHNpemUyXCI+SW1tdXRhYmxlPC9kaXY+PGRpdiBjbGFzcz1mY29sb3ItYmx1ZSBzdHlsZT5JbW11dGFibGUgZGF0YSBtYW5hZ2VtZW50IGlzIG5lZWRlZCB0by4uLjwvZGl2PjxkaXYgY2xhc3M9ZmNvbG9yLWJsdWUgc3R5bGU+U2VjdXJpdHkgaXMgdGhlIGtleS4uLjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtMiBjb2wtbGctOCBjb2wtbWQtMlwiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cm93IHN0eWxlPWRpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjs+PGRpdiBjbGFzcz1cImNvbC14cy0yIGNvbC1sZy04IGNvbC1tZC0yXCI+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy00IGNvbC1sZy04IGNvbC1tZC00XCIgc3R5bGU9dG9wOjEwMHB4PjxkaXYgY2xhc3M9XCJmY29sb3ItYmx1ZSBmc2l6ZS1sYXJnZVwiPkdhbWlmaWNhdGlvbjwvZGl2PjxkaXYgY2xhc3M9XCJmY29sb3ItYmx1ZSBmbnRzaXplMVwiPldvcmsgaXMgYSBnYW1lLi4uPC9kaXY+PGRpdiBjbGFzcz1cImZjb2xvci1ibHVlIGZudHNpemUxXCI+R2FtaWZpY2F0aW9uIGlzIC4uLjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtNSBjb2wtbGctMTAgY29sLW1kLTVcIiBzdHlsZT10b3A6MTAwcHg+PGltZyBjbGFzcz1pbWctcmVzcG9uc2l2ZSBzcmM9L3N0YXRpYy9pbWcvZ2FtaWZpY2F0aW9uLUxRLnBuZz48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTEgY29sLWxnLTggY29sLW1kLTFcIj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IGZvdW5kZXJzLWRpdiBmY29sb3ItYmx1ZSB0ZXh0LWNlbnRlclwiPjxkaXYgY2xhc3M9cm93PjxkaXYgY2xhc3M9Y29sLWxnLTI0IHN0eWxlPWhlaWdodDoxMDBweD48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0yNCBzdHlsZT10b3A6MjAwcHg+PGgxIGNsYXNzIHN0eWxlPk1lZXQgdGhlIGZvdW5kaW5nIHRlYW08L2gxPjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTI0IHN0eWxlPXRvcDoyMDBweD48aDQgY2xhc3Mgc3R5bGU9XCJtYXJnaW4tYm90dG9tOjUwcHg7IG1hcmdpbi1sZWZ0OiAxMDBweDsgbWFyZ2luLXJpZ2h0OiAxMDBweDtcIj5BcyBpbiBldmVyeSBzdGFydHVwIHdlIGFsbCB3ZWFyIG1hbnkgaGF0cyBhbmQgZG8gd2hhdGV2ZXIgaXMgcmVxdWlyZWQgZnJvbSBvdXIgdmVudHVyZSBidXQgd2UgZG8gdHJ5IHRvIHNwbGl0IHRoZSB3b3JrIHRvIG1ha2UgaXQgYXMgZWZmaWNpZW50IGFzIHBvc3NpYmxlPC9oND48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTggY29sLW1kLTEyXCIgc3R5bGU9dG9wOjIwMHB4PjxpbWcgaGVpZ2h0PTIwMCBzcmM9L3N0YXRpYy9pbWcvZm91bmRlci0xLnBuZz48ZGl2IHN0eWxlPVwibWFyZ2luLXRvcDogMTBweDtcIj5JZ29yPC9kaXY+PGRpdj5Dby1mb3VuZGVyPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy04IGNvbC1tZC0xMlwiIHN0eWxlPXRvcDoyMDBweD48aW1nIGhlaWdodD0yMDAgc3JjPS9zdGF0aWMvaW1nL2ZvdW5kZXItMi5wbmc+PGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7XCI+RGFuaWVsPC9kaXY+PGRpdj5Dby1mb3VuZGVyPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy04IGNvbC1tZC0xMlwiIHN0eWxlPXRvcDoyMDBweD48aW1nIGhlaWdodD0yMDAgc3JjPS9zdGF0aWMvaW1nL2ZvdW5kZXItMy5wbmc+PGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7XCI+SXZpY2E8L2Rpdj48ZGl2PkNvLWZvdW5kZXI8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1sZy0yNCBjb2wtbWQtMTJcIiBzdHlsZT10b3A6MjAwcHg+PGltZyBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTt3aWR0aDogMTAwJVwiIGhlaWdodD00MDAgc3JjPS9zdGF0aWMvaW1nL2NvbnRhY3QtbWlnb3IucG5nPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtMyBjb2wtbGctNiBjb2wtbWQtM1wiIHN0eWxlPXRvcDotMjgwcHg+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy0yIGNvbC1sZy04IGNvbC1tZC0yXCIgc3R5bGU9dG9wOi04MHB4PjxpbWcgaGVpZ2h0PTEwMCBzcmM9L3N0YXRpYy9pbWcvb3Blbi1zb3VyY2UtbG9jay5wbmc+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy00IGNvbC1sZy04IGNvbC1tZC00XCIgc3R5bGU9XCJ0b3A6LTkwcHg7bGVmdDogLTIwcHg7XCI+PGRpdiBjbGFzcz1cImZudHNpemUxIHRleHQtbGVmdFwiIHN0eWxlPWNvbG9yOndoaXRlPk9wZW4gc291cmNlPC9kaXY+PGRpdiBjbGFzcz1cImZudHNpemUwIHRleHQtbGVmdFwiIHN0eWxlPWNvbG9yOndoaXRlPldlIGZpcm1seSBiZWxpZXZlIGluIHNoYXJpbmcga25vd2xlZGdlIGFuZCB0aGF0IGlzIHdoeSB3ZVxcJ3JlIGJ1aWxkaW5nIG91ciBwbGF0Zm9ybSBvbiBvcGVuIHNvdXJjZSB0ZWNob25vbG9neSBzdGFjay48L2Rpdj48ZGl2IGNsYXNzPVwiZm50c2l6ZTAgdGV4dC1sZWZ0XCIgc3R5bGU9Y29sb3I6d2hpdGU+QW5ndWxhciBKUywgRGphbmdvIFJlc3QgRnJhbWV3b3JrLCBQb3N0Z3Jlcy4gTmF0dXJhbGx5IG91ciBwbGF0Zm9ybSB3aWxsIGJlIGZ1bGx5IG9wZW4gc291cmNlIHNvIHRoYXQgZXZlcnlvbmUgY2FuIGdldCBpbnZvbHZlZCBhbmQgcGFydGljaXBhdGUgaW4gZGlnaXRhbCByZXZvbHV0aW9uIHRoYXQgS2F0YWx5byBwbGFucyB0byBiZSBhIGh1Z2UgcGFydCBvZi48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTMgY29sLWxnLTYgY29sLW1kLTNcIiBzdHlsZT10b3A6LTIwMHB4PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtNSBjb2wtbGctMTAgY29sLW1kLTVcIiBzdHlsZT1jb2xvcjp3aGl0ZTs+PGltZyBjbGFzcz1pbWctcmVzcG9uc2l2ZSBzcmM9L3N0YXRpYy9pbWcvZHVkZV9pbnRyb19jb3B5XzMtTFEucG5nPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtNSBjb2wtbGctMTAgY29sLW1kLTVcIiBzdHlsZT10ZXh0LWFsaWduOmxlZnQ+PGRpdiBjbGFzcz1cImZjb2xvci1ibHVlIGZzaXplLWxhcmdlXCI+Q29udGFjdCBVczwvZGl2PjxkaXYgY2xhc3M9XCJmY29sb3ItYmx1ZSBmbnRzaXplMFwiIHN0eWxlPklmIHlvdSB3b3VsZCBsaWtlIHRvIGNvbnRhY3QgdXMsIHRoaXMgaXMgdGhlIHdheTwvZGl2PjxwPjwvcD48Zm9ybT48ZGl2IGNsYXNzPWZvcm0tZ3JvdXA+PGRpdiBjbGFzcz1mb3JtLWdyb3VwPjxsYWJlbCBmb3I9RnVsbE5hbWU+TmFtZTwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9Zm9ybS1jb250cm9sIGlkPUZ1bGxOYW1lIHBsYWNlaG9sZGVyPVwiRW50ZXIgZnVsbCBuYW1lXCI+PC9kaXY+PGxhYmVsIGZvcj1JbnB1dEVtYWlsPkVtYWlsIGFkZHJlc3M8L2xhYmVsPiA8aW5wdXQgdHlwZT1lbWFpbCBjbGFzcz1mb3JtLWNvbnRyb2wgaWQ9SW5wdXRFbWFpbCBhcmlhLWRlc2NyaWJlZGJ5PWVtYWlsSGVscCBwbGFjZWhvbGRlcj1cIkVudGVyIGVtYWlsXCI+IDxzbWFsbCBpZD1lbWFpbEhlbHAgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1tdXRlZFwiPldlXFwnbGwgbmV2ZXIgc2hhcmUgeW91ciBlbWFpbCB3aXRoIGFueW9uZSBlbHNlLjwvc21hbGw+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwPjxsYWJlbCBmb3I9TWVzc2FnZT5NZXNzYWdlPC9sYWJlbD4gPHRleHRhcmVhIGNsYXNzPWZvcm0tY29udHJvbCBpZD1NZXNzYWdlIHJvd3M9Mz48L3RleHRhcmVhPjwvZGl2PjxidXR0b24gdHlwZT1zdWJtaXQgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIj5TdWJtaXQ8L2J1dHRvbj48L2Zvcm0+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC14cy0yIGNvbC1sZy04IGNvbC1tZC0yXCIgc3R5bGU9Y29sb3I6d2hpdGU7PjwvZGl2PjwvZGl2PjwvZGl2PjwvYm9keT48L2h0bWw+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvbGF5b3V0Lmh0bWwnLCc8ZGl2IGlkPWFsZXJ0IGNsYXNzPWFwcC1tc2ctY29udGFpbmVyIGFwcC1tZXNzYWdlcyBtZXNzYWdlLWxpc3Q9YWMuYWxlcnRzPjwvZGl2PjxkaXYgY2xhc3M9cC0wIG5nLWNsYXNzPVwie1xcJ3NpZGUtbWVudS1oaWRkZW5cXCc6IW1lbnVfc2VydmljZS5nZXRTaWRlTWVudVNpemUoKSxcXCdzaWRlLW1lbnUtdmlzaWJsZSBcXCc6bWVudV9zZXJ2aWNlLmdldFNpZGVNZW51U2l6ZSgpfVwiIG5nLWlmPVwibWVudV9zZXJ2aWNlLnNpZGVNZW51Lm1lbnVzLmxlbmd0aD4wXCI+PGRpdiBrdC1wYWdlLW1lbnUtZXhlIGNsYXNzPXNpZGUtbWVudS1zdHlsZSBzaWRlLW1lbnVzPW1lbnVfc2VydmljZS5zaWRlTWVudS5tZW51cyBwYXJhbXM9bWVudV9zZXJ2aWNlLnNpZGVNZW51LnBhcmFtcz48L2Rpdj48L2Rpdj48ZGl2IHVpLXZpZXc9Y29udGVudFIgc3R5bGU9XCJvdmVyZmxvdy14OiBoaWRkZW47XCIgbmctY2xhc3M9XCJ7XFwncGFnZS1tZW51LXZpc2libGVcXCc6bWVudV9zZXJ2aWNlLnNpZGVNZW51Lm1lbnVzLmxlbmd0aD4wLFxcJ2NvbC0yNFxcJzohbWVudV9zZXJ2aWNlLnNpZGVNZW51Lm1lbnVzLmxlbmd0aCxcXCdjYXJkIG10LTJcXCc6bWVudV9zZXJ2aWNlLnNpZGVNZW51LnBhcmFtcy5TaG93Q2FyZH1cIj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDFfaW5kZXgvYW5ndWxhclRlbXBsYXRlcy9tYXJrZXQuaHRtbCcsJzxkaXYgY2xhc3M+PGRpdiBhcHBsaWNhdGlvbmluZm8gY2xhc3M9XCJyb3cgbS0wIG15LTRcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTIwIG0tYXV0byBib3JkZXIgcm91bmRlZCBiZy13aGl0ZVwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcC0yIHRleHQtY2VudGVyIGJvcmRlci1ib3R0b20gcHktMyBtYi00XCI+PHNwYW4gY2xhc3M9XCJmYXMgZm50MTIgZmEtc3RvcmUgdGV4dC1wcmltYXJ5IG0tMlwiPjwvc3Bhbj4gPHNwYW4gY2xhc3M9aDUgbmctYmluZD1cIm1hcmtldExhYmVscy5wYWdlSGVhZGVyIHx8IFxcJ0thdGFseW8gbWFya2V0cGxhY2VcXCdcIj48L3NwYW4+PC9kaXY+PGRpdiBuZy1pZj1cInBhcmFtcy5zaG93QXBwTGlzdCE9M1wiIGNsYXNzPVwicm93IG0tMCBtdC0xXCI+PGRpdiBjbGFzcz1cImNvbCBwLTBcIj48dWwgY2xhc3M9XCJuYXYgbmF2LXRhYnMgYm9yZGVyLTAgc2ltcGxlLXRhYnNcIiBpZD1uZXdBcHBzVGFiIHJvbGU9dGFibGlzdD48bGkgY2xhc3M9XCJuYXYtaXRlbSBib2xkXCI+PGEgY2xhc3M9bmF2LWxpbmsgbmctY2xpY2s9XCJwYXJhbXMuc2hvd0FwcExpc3Q9MVwiIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZSBzaG93XFwnOnBhcmFtcy5zaG93QXBwTGlzdD09MX1cIiBocmVmIGlkPWFsbF90YWIgZGF0YS10b2dnbGU9dGFiIHJvbGU9dGFiIGFyaWEtY29udHJvbHM9YWxsX2FwcHMgYXJpYS1zZWxlY3RlZD10cnVlPk5ldyBhcHBzPC9hPjwvbGk+PGxpIGNsYXNzPVwibmF2LWl0ZW0gYm9sZFwiPjxhIGNsYXNzPW5hdi1saW5rIGlkPW15X3RhYiBuZy1jbGFzcz1cIntcXCdhY3RpdmUgc2hvd1xcJzpwYXJhbXMuc2hvd0FwcExpc3Q9PTJ9XCIgbmctY2xpY2s9XCJwYXJhbXMuc2hvd0FwcExpc3Q9MlwiIGhyZWYgZGF0YS10b2dnbGU9dGFiIHJvbGU9dGFiIGFyaWEtY29udHJvbHM9bXlfYXBwcyBhcmlhLXNlbGVjdGVkPWZhbHNlPkluc3RhbGxlZCBhcHBzPC9hPjwvbGk+PC91bD48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwicGFyYW1zLnNob3dBcHBMaXN0PT0xXCIgY2xhc3M9XCJyb3cgbS0wIG15LTRcIj48ZGl2IGlkPWxvYWRpbmdBcHBzIG5nLXNob3c9YXBwTGlzdExvYWRpbmcga3QtcHJvY2Vzc2luZy1hbmltYXRpb24tdGltZWxpbmUgYW5pbWF0aW9uLXR5cGU9XCJcXCdjYXJkXFwnXCIgc2hvdy1tc2c9ZmFsc2UgbWVzc2FnZSBwYXJhbXM9YXBwTGlzdFBhcmFtZXRlcnMgY2xhc3M9dy0xMDA+PC9kaXY+PGRpdiBuZy1pZj1cIiFhcHBMaXN0TG9hZGluZyAmJiAhYXBwTGlzdC5uZXcubGVuZ3RoXCIgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlclwiPjxzcGFuIGNsYXNzPVwiZmEtc3RhY2sgZmEtNHhcIj48aSBjbGFzcz1cImZhIGZhLWxhcHRvcC1jb2RlIGZhLXN0YWNrLTF4XCI+PC9pPiA8aSBjbGFzcz1cImZhIGZhLWJhbiBmYS1zdGFjay0yeFwiIHN0eWxlPVwiY29sb3I6ICNmZjc2NWU0YVwiPjwvaT48L3NwYW4+PGRpdiBjbGFzcz1cImg0IG15LTIgdGV4dC1wcmltYXJ5XCI+Tm8gbmV3IGFwcHMgaW4gdGhlIG1hcmtldHBsYWNlITwvZGl2PjwvZGl2PjxkaXYgbmctaGlkZT1hcHBMaXN0TG9hZGluZyBuZy1pZj1hcHAuYWN0aXZlIG5nLXJlcGVhdD1cImFwcCBpbiBhcHBMaXN0Lm5ldyB0cmFjayBieSBhcHAuaWRcIiBjbGFzcz1cImNvbC1sZy02IGNvbC1zbS0xMiBjb2wteHMtMjQgcC0xXCI+PGRpdiBjbGFzcz1cInNoYWRvdy1zbSBib3JkZXIgcm91bmRlZFwiIHN0eWxlPVwicG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0OiAxMDAlO1wiPjxkaXYgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7XCI+PGRpdiBjbGFzcz1cInAtMSB0ZXh0LWxlZnQgbXktYXV0b1wiPjxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtLTJcIj48L2Rpdj48ZGl2IGNsYXNzPW15LTM+PGRpdiBjbGFzcz1cImg1IG1iLTAgdGV4dC1jZW50ZXJcIj48c3BhbiBuZy1pZj1cImFwcC5sb2FkaW5nQXBwIT10cnVlXCIgc3R5bGU9XCJmb250LXdlaWdodDogYm9sZDtjb2xvcjojNmY3ZWM3XCI+e3thcHAubmFtZX19PC9zcGFuPjxkaXYgbmctaWY9XCJhcHAubG9hZGluZ0FwcD09dHJ1ZVwiPjxkaXYgY2xhc3M9bG9hZGVyPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9dGV4dC1jZW50ZXI+PHNwYW4gbmctaWY9XCJhcHAubG9hZGluZ0FwcCE9dHJ1ZVwiIGNsYXNzPVwic21hbGwgYm9sZFwiPnYue3thcHAudmVyc2lvbn19PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwYi0yXCI+PHNwYW4gbmctaWY9XCJhcHAubG9hZGluZ0FwcCE9dHJ1ZVwiIGNsYXNzPVwic21hbGwgYm9sZFwiPkNyZWF0ZWQgYnkge3thcHAub3JnbmFtZX19PC9zcGFuPiA8c3BhbiBuZy1pZj1cImFwcC5sb2FkaW5nQXBwPT10cnVlXCIgY2xhc3M9c21hbGw+e3thcHAuaW5zdGFsbF90eXBlX2xvYWRlcn19IHt7YXBwLm5hbWV9fS4uLjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcGItMlwiPjxkaXYgbmctaWY9XCJhcHAubG9hZGluZ0FwcCE9dHJ1ZVwiIGNsYXNzPVwic21hbGwgYm9sZFwiPkRlc2NyaXB0aW9uOjwvZGl2PjxkaXYgbmctaWY9XCJhcHAubG9hZGluZ0FwcCE9dHJ1ZVwiIGNsYXNzPXNtYWxsPnt7YXBwLmRlc2NyaXB0aW9ufX08L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicHgtMiB3LTEwMFwiIHN0eWxlPVwidG9wOiAtNDBweDtwb3NpdGlvbjogcmVsYXRpdmU7bWFyZ2luLWxlZnQ6IGF1dG87bWFyZ2luLXJpZ2h0OiBhdXRvO3dpZHRoOiA0MCU7XCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1kaXNhYmxlZD1cImFwcC5sb2FkaW5nQXBwPT10cnVlXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBidG4tc20gdy0xMDBcIiBuZy1jbGljaz1zaG93SW5zdGFsbChhcHApPjxpIGNsYXNzPVwiZmEgZmEtd3JlbmNoIG10LTEge3thcHAucGFyYW1zLmljb259fVwiPjwvaT4gPHNwYW4gY2xhc3M9bS0yPnt7YXBwLmluc3RhbGxfdHlwZV9sYWJlbH19PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJwYXJhbXMuc2hvd0FwcExpc3Q9PTJcIiBjbGFzcz1cInJvdyBtLTAgbXktNFwiPjxkaXYgaWQ9bG9hZGluZ0FwcHMgbmctc2hvdz1hcHBMaXN0TG9hZGluZyBrdC1wcm9jZXNzaW5nLWFuaW1hdGlvbi10aW1lbGluZSBhbmltYXRpb24tdHlwZT1cIlxcJ2NhcmRcXCdcIiBzaG93LW1zZz1mYWxzZSBtZXNzYWdlIHBhcmFtcz1hcHBMaXN0UGFyYW1ldGVycyBjbGFzcz13LTEwMD48L2Rpdj48ZGl2IG5nLWlmPVwiIWFwcExpc3RMb2FkaW5nICYmICFhcHBMaXN0Lmluc3RhbGxlZC5sZW5ndGhcIiBjbGFzcz1cInctMTAwIHRleHQtY2VudGVyXCI+PHNwYW4gY2xhc3M9XCJmYS1zdGFjayBmYS00eFwiPjxpIGNsYXNzPVwiZmEgZmEtbGFwdG9wLWNvZGUgZmEtc3RhY2stMXhcIj48L2k+IDxpIGNsYXNzPVwiZmEgZmEtYmFuIGZhLXN0YWNrLTJ4XCIgc3R5bGU9Y29sb3I6I2ZmNzY1ZTRhPjwvaT48L3NwYW4+PGRpdiBjbGFzcz1cImg0IG15LTIgdGV4dC1wcmltYXJ5XCI+Tm90aGluZyBpcyBpbnN0YWxsZWQgaGVyZSE8L2Rpdj48ZGl2IGNsYXNzPVwibXktMSB0ZXh0LWdyYXlcIj5UbyBpbnN0YWxsIG5ldyBhcHBzIGdvIHRvIDxhIGhyZWYgbmctY2xpY2s9XCJwYXJhbXMuc2hvd0FwcExpc3Q9MVwiPk5ldyBhcHBzPC9hPjwvZGl2PjwvZGl2PjxkaXYgbmctaGlkZT1hcHBMaXN0TG9hZGluZyBuZy1yZXBlYXQ9XCJhcHAgaW4gYXBwTGlzdC5pbnN0YWxsZWQgdHJhY2sgYnkgYXBwLmlkXCIgY2xhc3M9XCJjb2wtbGctNiBjb2wtc20tMTIgY29sLXhzLTI0IHAtMVwiPjxkaXYgY2xhc3M9XCJzaGFkb3ctc20gYm9yZGVyIHJvdW5kZWRcIiBzdHlsZT1cInBvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDogMTAwJTtcIj48ZGl2IHN0eWxlPVwiaGVpZ2h0OiAxMDAlO1wiPjxkaXYgY2xhc3M9XCJwLTEgdGV4dC1sZWZ0IG15LWF1dG9cIj48ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbS0yXCI+PC9kaXY+PGRpdiBjbGFzcz1teS0zPjxkaXYgY2xhc3M9XCJoNSB0ZXh0LWNlbnRlclwiPjxzcGFuIG5nLWlmPVwiYXBwLmxvYWRpbmdBcHAhPXRydWVcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkO2NvbG9yOiM2ZjdlYzdcIj57e2FwcC5uYW1lfX08L3NwYW4+PGRpdiBuZy1pZj1cImFwcC5sb2FkaW5nQXBwPT10cnVlXCI+PGRpdiBjbGFzcz1sb2FkZXI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHBiLTJcIj48c3BhbiBuZy1pZj1cImFwcC5sb2FkaW5nQXBwIT10cnVlXCIgY2xhc3M9XCJzbWFsbCBib2xkXCI+SW5zdGFsbGVkOiB2e3thcHAuaW5zdGFsbF92ZXJzaW9ufX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHBiLTJcIj48c3BhbiBuZy1pZj1cImFwcC5sb2FkaW5nQXBwIT10cnVlXCIgY2xhc3M9XCJzbWFsbCBib2xkXCI+Q3JlYXRlZCBieSB7e2FwcC5vcmduYW1lfX08L3NwYW4+IDxzcGFuIG5nLWlmPVwiYXBwLmxvYWRpbmdBcHA9PXRydWVcIiBjbGFzcz1zbWFsbD57e2FwcC5pbnN0YWxsX3R5cGVfbG9hZGVyfX0ge3thcHAubmFtZX19Li4uPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwYi0yXCI+PGRpdiBuZy1pZj1cImFwcC5sb2FkaW5nQXBwIT10cnVlXCIgY2xhc3M9XCJzbWFsbCBib2xkXCI+RGVzY3JpcHRpb246PC9kaXY+PGRpdiBuZy1pZj1cImFwcC5sb2FkaW5nQXBwIT10cnVlXCIgY2xhc3M9c21hbGw+e3thcHAuZGVzY3JpcHRpb259fTwvZGl2PjwvZGl2PjxkaXYgbmctaWY9IWFwcC51cGdyYWRlX3ZlcnNpb24gY2xhc3M9dGV4dC1jZW50ZXI+PHNwYW4gY2xhc3M9XCJib2xkIHRleHQtc3VjY2Vzc1wiPlVwIHRvIGRhdGUgPGkgY2xhc3M9XCJtbC0xIGZhIGZhLWNoZWNrLWNpcmNsZVwiPjwvaT48L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImFwcC51cGdyYWRlX3ZlcnNpb24+MFwiIGNsYXNzPVwicHgtMiB3LTEwMFwiIHN0eWxlPVwidG9wOiAtNDBweDtwb3NpdGlvbjogcmVsYXRpdmU7bWFyZ2luLWxlZnQ6IGF1dG87bWFyZ2luLXJpZ2h0OiBhdXRvO3dpZHRoOiA0MCU7XCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1kaXNhYmxlZD1cImFwcC5sb2FkaW5nQXBwPT10cnVlXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBidG4tc20gdy0xMDBcIiBuZy1jbGljaz1pbnN0YWxsQXBwKGFwcCk+PGkgY2xhc3M9XCJmYSBmYS1jb2dzIG10LTEge3thcHAucGFyYW1zLmljb259fVwiPjwvaT4gPHNwYW4gY2xhc3M9bS0yPnt7YXBwLmluc3RhbGxfdHlwZV9sYWJlbH19IHRvIHYue3thcHAudXBncmFkZV92ZXJzaW9ufX08L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cInBhcmFtcy5zaG93QXBwTGlzdD09M1wiIGNsYXNzPVwicm93IG0tMCBteS00XCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCB0ZXh0LWxlZnQgbXktYXV0b1wiPjxhIGNsYXNzPXRleHQtcHJpbWFyeSBocmVmIHRpdGxlPUJhY2sgbmctY2xpY2s9XCJwYXJhbXMuc2hvd0FwcExpc3Q9MVwiPjxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tbGVmdCBtci0yXCI+PC9pPkJhY2s8L2E+PC9kaXY+PGRpdiBpbnN0YWxsY29udGVudCBjbGFzcz1cImNvbC1sZy0xNiBteC1hdXRvXCI+PGRpdiBjbGFzcz1cInJvdyBtdC00XCI+PGRpdiBsZWZ0LXNpZGUgY2xhc3M9Y29sLWxnLTEyPjxzcGFuIGNsYXNzPVwiaDQgYm9sZFwiPnt7c2VsZWN0ZWRBcHAubmFtZX19PC9zcGFuPjxkaXYgY2xhc3M+YnkgPHNwYW4gY2xhc3M9XCJtbC0xIGJvbGRcIj57e3BhcmFtcy5zZWxlY3RlZEFwcC5vcmduYW1lfX08L3NwYW4+PC9kaXY+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cIm15LTQgYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiIG5nLWNsaWNrPVwic2hvd01hbmlmZXN0KFxcJ21hbmlmZXN0XFwnKVwiPjxzcGFuPjxpIGNsYXNzPVwiZmFzIGZhLWRvd25sb2FkXCI+PC9pPiBJbnN0YWxsPC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgcmlnaHQtc2lkZSBjbGFzcz1jb2wtbGctMTI+PGRpdiBjbGFzcz1cImJvcmRlciBtdC0xXCIgc3R5bGU9XCJib3JkZXItcmFkaXVzOjEwcHg7aGVpZ2h0OiAxMDAlO1wiPjxkaXYgc3R5bGU9XCJib3JkZXItcmFkaXVzOiAxMHB4OyBtYXJnaW4tbGVmdDogMTBweDsgbWFyZ2luLXRvcDogMTBweDtjbGFzcz1cIiBib2xkXCI+PGRpdiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA3MDA7XCI+QXBwIGRlc2NyaXB0aW9uPC9kaXY+PGRpdiBjbGFzcz1tdC0zPnt7c2VsZWN0ZWRBcHAuZGVzY3JpcHRpb259fTwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pjxmb3JtIG5nLXN1Ym1pdD1cImFsZXJ0KFxcJ2tsamprXFwnKVwiIG5hbWU9bWFuaWZlc3QgY2xhc3M9XCJtb2RhbCBmYWRlIGJkLWV4YW1wbGUtbW9kYWwtbGdcIiBpZD1tYW5pZmVzdCB0YWJpbmRleD0tMSByb2xlPWRpYWxvZyBhcmlhLWxhYmVsbGVkYnk9bWFuaWZlc3QgYXJpYS1oaWRkZW49dHJ1ZT48ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLXhsXCIgcm9sZT1kb2N1bWVudD48ZGl2IGNsYXNzPW1vZGFsLWNvbnRlbnQ+PGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciB3LTEwMFwiPjxkaXYgY2xhc3M9dy0xMDA+PGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG0tMlwiPjxoNCBjbGFzcz1tb2RhbC10aXRsZSBpZD1leGFtcGxlTW9kYWxMb25nVGl0bGU+QXBsaWNhdGlvbiA8Yj57e3NlbGVjdGVkQXBwLm5hbWV9fTwvYj48L2g0PjxkaXYgY2xhc3M9XCJtb2RhbC10aXRsZSBmbnQ5XCIgaWQ9ZXhhbXBsZU1vZGFsTG9uZ1RpdGxlPiggdmVyc2lvbiB7e3NlbGVjdGVkQXBwLnZlcnNpb24gfX0gKTwvZGl2PjwvZGl2PjwvZGl2PjxkaXY+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1jbG9zZSBkYXRhLWRpc21pc3M9bW9kYWwgYXJpYS1sYWJlbD1DbG9zZT48c3BhbiBhcmlhLWhpZGRlbj10cnVlPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTAgcC0wIG1vZGFsLWJvZHlcIj48ZGl2IG1hbmlmZXN0IGNsYXNzPWNvbC0yND48ZGl2IG5nLXNob3c9bWFuaWZlc3RMb2FkaW5nIGt0LXByb2Nlc3NpbmctYW5pbWF0aW9uLXRpbWVsaW5lIGFuaW1hdGlvbi10eXBlPVwiXFwndGFibGVcXCdcIiBzaG93LW1zZz1mYWxzZSBtZXNzYWdlIHBhcmFtcz1hcHBMaXN0UGFyYW1ldGVycyBjbGFzcz13LTEwMD48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IG15LTMgdGV4dC1jZW50ZXJcIiBuZy1zaG93PVwiYXBwTWFuaWZlc3QubGVuZ3RoICYmICFtYW5pZmVzdExvYWRpbmdcIj48c3BhbiBjbGFzcz1wYi0xPjxhIGhyZWYgdGl0bGU9XCJMaXN0IG9mIHJlc291cmNlc1wiIGNsYXNzPVwibXItMiB0YWItaXRlbS1zZWxlY3RlZFwiIG5nLWNsYXNzPVwie1xcJ3RhYi1pdGVtLXNlbGVjdGVkXFwnOnBhcmFtcy5zZWxlY3RlZFRhYj09MSxcXCd0YWItaXRlbVxcJzpwYXJhbXMuc2VsZWN0ZWRUYWIhPTF9XCIgbmctY2xpY2s9XCJwYXJhbXMuc2VsZWN0ZWRUYWI9MVwiPlJlc291cmNlczwvYT4gPGEgaHJlZiB0aXRsZT1cIkxpc3Qgb2YgY29kZXNcIiBjbGFzcz1cIm1yLTIgdGFiLWl0ZW1cIiBuZy1jbGFzcz1cIntcXCd0YWItaXRlbS1zZWxlY3RlZFxcJzpwYXJhbXMuc2VsZWN0ZWRUYWI9PTIsXFwndGFiLWl0ZW1cXCc6cGFyYW1zLnNlbGVjdGVkVGFiIT0yfVwiIG5nLWNsaWNrPVwicGFyYW1zLnNlbGVjdGVkVGFiPTJcIj5Db2RlczwvYT48YSBocmVmIHRpdGxlPVwiTGlzdCBvZiBncm91cHNcIiBjbGFzcz1cIm1yLTIgdGFiLWl0ZW1cIiBuZy1jbGFzcz1cIntcXCd0YWItaXRlbS1zZWxlY3RlZFxcJzpwYXJhbXMuc2VsZWN0ZWRUYWI9PTMsXFwndGFiLWl0ZW1cXCc6cGFyYW1zLnNlbGVjdGVkVGFiIT0zfVwiIG5nLWNsaWNrPVwicGFyYW1zLnNlbGVjdGVkVGFiPTNcIj5Hcm91cHM8L2E+PC9zcGFuPjwvZGl2PjxkaXYgbmctaWY9YXBwTWFuaWZlc3QubGVuZ3RoIGNsYXNzPWNvbC1sZy0yND48ZGl2IHJlc291cmNlcyBjbGFzcz1cIm0tYXV0byBwLTNcIiBuZy1pZj1cImFwcE1hbmlmZXN0Lmxlbmd0aCAmJiBwYXJhbXMuc2VsZWN0ZWRUYWI9PTFcIj48ZGl2IGNsYXNzPVwicm93IG0tMCBib2xkIGJvcmRlci1ib3R0b21cIiBzdHlsZT1cImNvbG9yOndoaXRlO2JhY2tncm91bmQtY29sb3I6ICM1NTU1NTU7XCI+PGRpdiBjbGFzcz1jb2wtMj5pZDwvZGl2PjxkaXYgY2xhc3M9Y29sLTU+UmVzb3VyY2UgdHlwZTwvZGl2PjxkaXYgY2xhc3M9Y29sLTU+UmVzb3VyY2UgU3ViVHlwZTwvZGl2PjxkaXYgY2xhc3M9Y29sPk5hbWU8L2Rpdj48ZGl2IGNsYXNzPWNvbC0yPlZlcnNpb248L2Rpdj48L2Rpdj48ZGl2IHN0eWxlPW92ZXJmbG93LXk6YXV0bzttYXgtaGVpZ2h0OjMwcmVtPjxkaXYgbmctcmVwZWF0PVwicmVzb3VyY2UgaW4gYXBwTWFuaWZlc3RcIiBuZy1pZj1cInJlc291cmNlLml0ZW1UeXBlPT1cXCdyZXNvdXJjZVxcJ1wiIGNsYXNzPVwicm93IG0tMCBteS0xXCI+PGRpdiBjbGFzcz1jb2wtMj57e3Jlc291cmNlLmlkfX08L2Rpdj48ZGl2IGNsYXNzPWNvbC01Pnt7cmVzb3VyY2UuaXRlbVR5cGV9fTwvZGl2PjxkaXYgY2xhc3M9Y29sLTU+e3tyZXNvdXJjZS5pdGVtU3ViVHlwZX19PC9kaXY+PGRpdiBjbGFzcz1jb2w+e3tyZXNvdXJjZS5pdGVtTmFtZX19PC9kaXY+PGRpdiBjbGFzcz1jb2wtMj57e3Jlc291cmNlLnZlcnNpb259fTwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC0yXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiBuZy1pZj1zZWxlY3RlZFJlc291cmNlcy5sZW5ndGggbmctY2xpY2s9cHVibGlzaDJQcm9kKCk+PHNwYW4gbmctaWY9cHVibGlzaGluZ1Jlc291cmNlcz48aSBjbGFzcz1cImZhIGZhLXNwaW5uZXIgZmEtc3BpbiBtci0yXCI+PC9pPjwvc3Bhbj4gPHNwYW4gbmctaWY9cHVibGlzaGluZ1Jlc291cmNlcz5QdWJsaXNoaW5nLi4uPC9zcGFuPiA8c3BhbiBuZy1pZj0hcHVibGlzaGluZ1Jlc291cmNlcz48aSBjbGFzcz1cImZhIGZhLXVwbG9hZCBtci0yXCI+PC9pPjwvc3Bhbj4gPHNwYW4gbmctaWY9IXB1Ymxpc2hpbmdSZXNvdXJjZXM+UHVibGlzaCBzZWxlY3RlZCByZXNvdXJjZXMgMiBQUk9EPC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY29kZXMgY2xhc3M9XCJtLWF1dG8gdy03NSBweS0zXCIgbmctaWY9XCJhcHBNYW5pZmVzdC5sZW5ndGggJiYgcGFyYW1zLnNlbGVjdGVkVGFiPT0yXCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgYm9sZCBib3JkZXItYm90dG9tXCIgc3R5bGU9XCJjb2xvcjp3aGl0ZTtiYWNrZ3JvdW5kLWNvbG9yOiAjNTU1NTU1O1wiPjxkaXYgY2xhc3M9Y29sLTI+aWQ8L2Rpdj48ZGl2IGNsYXNzPWNvbD5uYW1lPC9kaXY+PC9kaXY+PGRpdiBzdHlsZT1vdmVyZmxvdy15OmF1dG87bWF4LWhlaWdodDozMHJlbT48ZGl2IG5nLXJlcGVhdD1cInJlc291cmNlIGluIGFwcE1hbmlmZXN0XCIgbmctaWY9XCJyZXNvdXJjZS5pdGVtVHlwZT09XFwnY29kZVxcJ1wiIGNsYXNzPVwicm93IG0tMCBteS0xXCI+PGRpdiBjbGFzcz1jb2wtMj57e3Jlc291cmNlLmlkfX08L2Rpdj48ZGl2IGNsYXNzPWNvbD57e3Jlc291cmNlLml0ZW1OYW1lfX08L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGdyb3VwcyBjbGFzcz1cIm0tYXV0byB3LTc1IHB5LTNcIiBuZy1pZj1cImFwcE1hbmlmZXN0Lmxlbmd0aCAmJiBwYXJhbXMuc2VsZWN0ZWRUYWI9PTNcIj48ZGl2IGNsYXNzPVwicm93IG0tMCBib2xkIGJvcmRlci1ib3R0b21cIiBzdHlsZT1cImNvbG9yOndoaXRlO2JhY2tncm91bmQtY29sb3I6ICM1NTU1NTU7XCI+PGRpdiBjbGFzcz1jb2wtMj5pZDwvZGl2PjxkaXYgY2xhc3M9Y29sPm5hbWU8L2Rpdj48L2Rpdj48ZGl2IHN0eWxlPW92ZXJmbG93LXk6YXV0bzttYXgtaGVpZ2h0OjMwcmVtPjxkaXYgbmctcmVwZWF0PVwicmVzb3VyY2UgaW4gYXBwTWFuaWZlc3RcIiBuZy1pZj1cInJlc291cmNlLml0ZW1UeXBlPT1cXCdncm91cFxcJ1wiIGNsYXNzPVwicm93IG0tMCBteS0xXCI+PGRpdiBjbGFzcz1jb2wtMj57e3Jlc291cmNlLmlkfX08L2Rpdj48ZGl2IGNsYXNzPWNvbD57e3Jlc291cmNlLml0ZW1OYW1lfX08L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgbS01XCIgbmctaWY9XCJhcHBNYW5pZmVzdC5sZW5ndGg9PTBcIj5QdWJsaXNoZWQgbWFuaWZlc3QgZm9yIGFwcGxpY2F0aW9uIGlzIG5vdCBmb3VuZCE8L2Rpdj48ZGl2IG5nLWlmPWFwcE1hbmlmZXN0Lmxlbmd0aCBjbGFzcz1cImNvbC1sZy0yNCBwLTQgbWItMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnktb3V0bGluZVwiIGRhdGEtZGlzbWlzcz1tb2RhbCBhcmlhLWxhYmVsPUNhbmNlbD48c3Bhbj5DYW5jZWw8L3NwYW4+PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBuZy1jbGljaz1pbnN0YWxsUmVzb3VyY2UoKT48c3BhbiBuZy1pZj1pbnN0YWxsaW5nUmVzb3VyY2U+PGkgY2xhc3M9XCJmYSBmYS1zcGlubmVyIGZhLXNwaW4gbXItMlwiPjwvaT48L3NwYW4+IDxzcGFuIG5nLWlmPWluc3RhbGxpbmdSZXNvdXJjZT5JbnN0YWxsaW5nLi4uPC9zcGFuPiA8c3BhbiBuZy1pZj0haW5zdGFsbGluZ1Jlc291cmNlPkluc3RhbGw8L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1cIm0tMiB0ZXh0LWNlbnRlciBjb2wtMjRcIj48YnV0dG9uIG5nLWNsaWNrPVwiaGlkZU1vZGFsKFxcJyNwdWJsaXNoMm1hcmtldFxcJylcIiBuZy1pZj1cIm1vZGFsQWN0aW9uPT1cXCdwdWJsaXNoMm1hcmtldFxcJ1wiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5LW91dGxpbmUgYnRuLWxnXCIgdHlwZT1idXR0b24+PHNwYW4+Tm88L3NwYW4+PC9idXR0b24+IDxidXR0b24gbmctaWY9XCJtb2RhbEFjdGlvbj09XFwncHVibGlzaDJtYXJrZXRcXCdcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tbGdcIiB0eXBlPXN1Ym1pdD48c3BhbiBuZy1pZj1zYXZpbmdBcHA+PGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lciBmYS1zcGluIG1yLTFcIj48L2k+PC9zcGFuPiA8c3BhbiBuZy1pZj1zYXZpbmdBcHA+UHVibGlzaGluZy4uLjwvc3Bhbj4gPHNwYW4gbmctaWY9IXNhdmluZ0FwcD5ZZXM8L3NwYW4+PC9idXR0b24+PGRpdiBjbGFzcz1cImg2IHRleHQtY2VudGVyIHRleHQtc3VjY2Vzc1wiIG5nLWlmPVwicmVzb3VyY2UuVmVyc2lvbiE9cmVzb3VyY2UuTmV3VmVyc2lvbiAmJiBtb2RhbEFjdGlvbj09XFwndmVyc2lvblxcJ1wiPjxpIGNsYXNzPVwiZmEgZmEtY2hlY2stY2lyY2xlIG1yLTJcIj48L2k+IFZlcnNpb24ge3tyZXNvdXJjZS5OZXdWZXJzaW9ufX0uIGNyZWF0ZWQgc3VjY2Vzc2Z1bHkhPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JtPjwvZGl2PjxzdHlsZT5cXHJcXG4uYm9yZGVyIHtcXHJcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNjNmNiZDIgIWltcG9ydGFudDsgXFxyXFxuICB9XFxyXFxuICBcXHJcXG4gIFxcclxcbiAgLmZvcm0tY29udHJvbCB7XFxyXFxuXFxyXFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICM5MDk1OWRcXHJcXG5cXHR9XFxyXFxuXFxyXFxuLnRhYi1pdGVtXFxyXFxue1xcclxcbiBjb2xvcjojMkM2MEU1O1xcclxcbiBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDtcXHJcXG4gdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcclxcbn1cXHJcXG4udGFiLWl0ZW06aG92ZXIsLnRhYi1pdGVtOmZvY3VzXFxyXFxue1xcclxcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJDNjBFNTtcXHJcXG4gIGNvbG9yOiNmZmZmZmY7ICBcXHJcXG59XFxyXFxuLnRhYi1pdGVtLXNlbGVjdGVkOmhvdmVyLC50YWItaXRlbS1zZWxlY3RlZDpmb2N1c1xcclxcbntcXHJcXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgXFxyXFxufVxcclxcbi50YWItaXRlbS1zZWxlY3RlZFxcclxcbntcXHJcXG4gICAgIGNvbG9yOiMyQzYwRTU7XFxyXFxuICAgICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDtcXHJcXG4gICAgIGJvcmRlci1ib3R0b206MnB4IHNvbGlkICMyQzYwRTU7XFxyXFxuICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxyXFxufVxcclxcbjwvc3R5bGU+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvbWVudS5odG1sJywnPGRpdiBpZGQ9bWVudS5odG1sIG5nLWlmPVwiKG1lbnVfc2VydmljZS5zZWxlY3RlZE5hdmJhci5TaWRlTWVudXMubGVuZ3RoPjAgfHwgbWVudV9zZXJ2aWNlLmdldE1lbnVFZGl0TW9kZSgpKSAmJiBzaG93U2lkZU1lbnVcIiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwicC0wIHNpZGVtZW51LWN1c3RvbSBjb2wtMjQgY29sLWxnXCI+PGRpdiBuZy1pZj0hbWVudV9zZXJ2aWNlLmdldE1lbnVFZGl0TW9kZSgpIGNsYXNzPVwicHQtMSBwYi0xXCI+PGRpdiBjbGFzcz1wLTA+PHVsIGNsYXNzPVwibmF2YmFyLW5hdiBzaWRlLW1lbnUtY29sb3JcIj48bGkgbmctcmVwZWF0PVwibWkgaW4gbWVudV9zZXJ2aWNlLnNlbGVjdGVkTmF2YmFyLlNpZGVNZW51cyB0cmFjayBieSBtaS5zX21lbnVzX2lkXCIgbmctc3dpdGNoPTo6bWkuc19tZW51c19NZW51UG9zaXRpb24gY2xhc3M9XCJuYXYtaXRlbSBwLTAgYm9yZGVyLTBcIiBuZy1jbGFzcz1cIntcXCd0ZXh0LWNlbnRlclxcJzohbWVudV9zZXJ2aWNlLmdldFNpZGVNZW51U2l6ZSgpLFxcJ2FjdGl2ZVxcJzptaS5zX21lbnVzX2lkPT1tZW51X3NlcnZpY2Uuc2VsZWN0ZWRTaWRlTWVudUlkfVwiPjxhIG5nLXN3aXRjaC13aGVuPXNpZGVtZW51IHRpdGxlPXt7OjptaS5zX21lbnVzX05hbWV9fSBjbGFzcz1cIm5hdi1saW5rLWN1c3RvbSBuYXYtbGluayBwYWRkaW5nNVwiIG5nLWNsaWNrPXNldFNpZGVNZW51KG1pLnNfbWVudXNfaWQpIHVpLXNyZWY9e3s6Om1pLnNfcGFnZXNfVGFyZ2V0fX0oOjptaS5zX21lbnVzX1BhcmFtcyk+PGkgbmctY2xhc3M9XCJ7XFwnZmEgZmEte3s6Om1pLnNfbWVudXNfSWNvbn19XFwnOm1lbnVfc2VydmljZS5nZXRTaWRlTWVudVNpemUoKSxcXCdmYSBmYS17ezo6bWkuc19tZW51c19JY29ufX0gZmEtbGcgdGV4dC1jZW50ZXJcXCc6IW1lbnVfc2VydmljZS5nZXRTaWRlTWVudVNpemUoKX1cIj48L2k+IDxzcGFuIG5nLWlmPW1lbnVfc2VydmljZS5nZXRTaWRlTWVudVNpemUoKSBjbGFzcz1tbC0yPnt7OjptaS5zX21lbnVzX05hbWV9fTwvc3Bhbj48L2E+PGRpdiBuZy1zd2l0Y2gtd2hlbj1zaWRlbWVudSBuZy1pZj1cIjo6bWkuc19tZW51c19NZW51VHlwZT09M1wiIGt0LXNpZGVtZW51LWNvbnRhaW5lcj48L2Rpdj48L2xpPjwvdWw+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cIm1lbnVfc2VydmljZS5nZXRNZW51RWRpdE1vZGUoKSAmJiBtZW51X3NlcnZpY2UuZ2V0Q3VycmVudE5hdmJhcklkKCk+MFwiIGNsYXNzPWNhcmQ+PGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHAtMVwiPjxzcGFuIHRpdGxlPVwiU2VsZWN0IG1lbnUgaXRlbSB0byBjaGFuZ2UgYW5kIHNvcnRcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWluZm8gcm91bmRlZCBtci0yIHRleHQtd2hpdGVcIj5FZGl0aW5nIHNpZGUgbWVudTwvc3Bhbj4gPGJ1dHRvbiBuZy1jbGljaz1zYXZlTWVudU9yZGVyKCkgdGl0bGU9XCJTYXZlIG1lbnUgb3JkZXJcIiBuZy1pZj1cIm1lbnVfc2VydmljZS5nZXRNZW51RWRpdE1vZGUoKSAmJiBtZW51X3NlcnZpY2Uuc2VsZWN0ZWROYXZiYXIuU2lkZU1lbnVzLmxlbmd0aD4xXCIgY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1zdWNjZXNzIGZsb2F0LXJpZ2h0XCI+PGkgY2xhc3M9XCJmYSBmYS1zYXZlXCI+PC9pPjwvYnV0dG9uPiA8YnV0dG9uIG5nLWNsaWNrPW1vdmVNZW51VXAoKSB0aXRsZT1cIk1vdmUgdXBcIiBuZy1pZj1tZW51X3NlcnZpY2UuZ2V0TWVudUVkaXRNb2RlKCkgbmctc3R5bGU9XCJ7XFwndmlzaWJpbGl0eVxcJzogY3VycmVudEVkaXRTaWRlTWVudUluZGV4PjAgP1xcJ3Zpc2libGVcXCc6XFwnaGlkZGVuXFwnfVwiIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4td2FybmluZyBmbG9hdC1yaWdodFwiPjxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctdXBcIj48L2k+PC9idXR0b24+IDxidXR0b24gbmctY2xpY2s9bW92ZU1lbnVEb3duKCkgdGl0bGU9XCJNb3ZlIGRvd25cIiBuZy1pZj1tZW51X3NlcnZpY2UuZ2V0TWVudUVkaXRNb2RlKCkgbmctc3R5bGU9XCJ7XFwndmlzaWJpbGl0eVxcJzogY3VycmVudEVkaXRTaWRlTWVudUluZGV4PG1lbnVfc2VydmljZS5zZWxlY3RlZE5hdmJhci5TaWRlTWVudXMubGVuZ3RoLTEgP1xcJ3Zpc2libGVcXCc6XFwnaGlkZGVuXFwnfVwiIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4taW5mbyBmbG9hdC1yaWdodFwiPjxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctZG93blwiPjwvaT48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPXAtMD48dWwgY2xhc3M9XCJuYXZiYXItbmF2IGxpc3QtZ3JvdXBcIj48bGkgbmctcmVwZWF0PVwibWkgaW4gbWVudV9zZXJ2aWNlLnNlbGVjdGVkTmF2YmFyLlNpZGVNZW51cyB0cmFjayBieSBtaS5zX21lbnVzX2lkXCIgY2xhc3M9XCJuYXYtaXRlbSBwLTAgYm9yZGVyLTBcIiBuZy1zd2l0Y2g9bWkuc19tZW51c19NZW51UG9zaXRpb24gbmctY2xhc3M9XCJ7XFwndGV4dC1jZW50ZXJcXCc6IW1lbnVfc2VydmljZS5nZXRTaWRlTWVudVNpemUoKSxcXCdhY3RpdmVcXCc6bWkuc19tZW51c19pZD09bWVudV9zZXJ2aWNlLnNlbGVjdGVkU2lkZU1lbnVJZH1cIj48YSBuZy1zd2l0Y2gtd2hlbj1zaWRlbWVudSBocmVmIGNsYXNzPVwibmF2LWxpbmsgcGFkZGluZzVcIiBuZy1jbGljaz1nZXRTaWRlTWVudURldGFpbHMobWkuc19tZW51c19pZCwkaW5kZXgpPjxpIGNsYXNzPVwiZmEgZmEte3ttaS5zX21lbnVzX0ljb259fVwiPiZuYnNwOyB7e21pLnNfbWVudXNfTmFtZX19PC9pPjwvYT48L2xpPjxsaSBjbGFzcz1cInRleHQtY2VudGVyIHAtMCBib3JkZXItMCBsaXN0LWdyb3VwLWl0ZW0gbGlzdC1ncm91cC1pdGVtLWFjdGlvblwiPjxhIGhyZWYgY2xhc3M9XCJuYXYtbGluayBwYWRkaW5nNVwiIG5nLWNsaWNrPW5ld1NpZGVNZW51KCk+PGkgY2xhc3M9XCJmYSBmYS1wbHVzXCI+PC9pPjwvYT48L2xpPjwvdWw+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbGctYXV0byBwLTAgdG9nZ2xlLXNpZGUtbWVudVwiIHRpdGxlPVwiRG91YmxlIGNsaWNrIHRvIHRvZ2dsZSBtZW51IHNpemVcIiBuZy1kYmxjbGljaz1tZW51X3NlcnZpY2UuY2hhbmdlU2lkZU1lbnVTaXplKCk+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvbmF2YmFyLmh0bWwnLCc8ZGl2IGlkPW5hdmJhci5odG1sIGNsYXNzPW5hdmJhckNvbnRhaW5lciBuZy1pZj1cInNob3dOYXZiYXIgfHwgc2hvd1NpZGVNZW51XCI+PG5hdiBjbGFzcz1cIm5hdmJhci1jdXN0b20gbmF2YmFyLWN1c3RvbS10b3AgbmF2YmFyLWN1c3RvbS1leHQtcCBweS0wXCIga3QtYWRqdXN0LWNvbnRlbnQtdG8tbmF2YmFyPjxhIGhyZWYgbmctaWY9c2hvd1NpZGVNZW51IHRpdGxlPVwiUGFnZSBtZW51XCIgbmctY2xpY2s9bWVudV9zZXJ2aWNlLnRvZ2dsZVNpZGVNZW51VmlzaWJpbGl0eSgpIGNsYXNzPVwibmF2LWxpbmsgbmF2LWxpbmstY3VzdG9tLXAgbmF2LWxpbmstc2lkZS1tZW51IHRleHQtY2VudGVyXCI+PGkgY2xhc3M9XCJmYSBmYS1iYXJzIG5hdi1saW5rLXNpZGUtbWVudVwiPjwvaT48L2E+IDxpbWcgdGl0bGU9XCJWZXJzaW9uOiAwLjkuNWJldGEsIEFwcGxpY2F0aW9uOiB7eyBtZW51X3NlcnZpY2UuY3VycmVudEFwcC5uYW1lfX0gKHt7IG1lbnVfc2VydmljZS5jdXJyZW50QXBwLnVpZH19KSwgTWVudToge3sgbWVudV9zZXJ2aWNlLmN1cnJlbnRhcHAubmF2YmFySWR9fVwiIHNyYz17e2NvbmZpZy5kZXBsb3lkaXJ9fXt7Y29uZmlnLm1lbnVfbG9nb19pbWd9fSBjbGFzcz1tci00IHdpZHRoPTgwdnc+PHVsIG5hdmJhcmxlZnQgbmctaWY9c2hvd05hdmJhciBjbGFzcz1cIm5hdmJhci1uYXYgbmF2YmFyLXRvcC11bCBuYXZiYXItdG9wLWxlZnQgbXItYXV0byBtYi0wXCI+PGxpIG5nLXJlcGVhdD1cIm5pIGluIG1lbnVfc2VydmljZS5uYXZiYXJJdGVtcyB0cmFjayBieSBuaS5zX21lbnVzX2lkXCIgbmctaWY9XCI6Om5pLnNfbWVudXNfTWVudVBvc2l0aW9uPT1cXCduYXZiYXJcXCcgJiYgKCFtZW51X3NlcnZpY2UucHVibGljUGFnZSB8fCBuaS5zX21lbnVzX1Nob3dQdWJsaWMpXCIgY2xhc3M9bmF2LWl0ZW0gbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOmNoZWNrSWZBY3RpdmUobmkpfVwiPjxhIHRpdGxlPXt7OjpuaS5zX21lbnVzX05hbWV9fSBuZy1jbGljaz1tZW51X3NlcnZpY2Uuc2V0U2VsZWN0ZWRBcHBNZW51KG5pLnNfbWVudXNfUGFyYW1zLnBhZ2VzdGF0ZSxuaS5zX21lbnVzX1RhcmdldCkgdWktc3JlZj1cInt7OjpuaS5zX21lbnVzX1BhcmFtcy5wYWdlc3RhdGV9fShtZXJnZU9iamVjdHMobmkuc19tZW51c19QYXJhbXMsIHsgdmVyc2lvbjogbmkuc19tZW51c19UYXJnZXRQYWdlVmVyc2lvbn0gKSlcIiBjbGFzcz1cIm5hdi1saW5rIG5hdi1saW5rLWN1c3RvbS1wIHRleHQtY2VudGVyXCI+PGkgbmctaWY9XCI6Om5pLnNfbWVudXNfSWNvbiE9bnVsbFwiIGNsYXNzPVwiZmEgZmEte3s6Om5pLnNfbWVudXNfSWNvbn19XCIgbmctY2xhc3M9XCJ7XFwnaGlkZS1vbi1tb2JpbGVcXCc6IG5pLnNfbWVudXNfUGFyYW1zLmhpZGVJY29uT25TbWFsbFNjcn1cIj48L2k+IDxzcGFuIGNsYXNzPXB4LTEgbmctY2xhc3M9XCJ7XFwnaGlkZS1vbi1tb2JpbGVcXCc6IG5pLnNfbWVudXNfUGFyYW1zLmhpZGVUZXh0T25TbWFsbFNjcn1cIiBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXA7XCI+e3s6Om5pLnNfbWVudXNfTmFtZX19PC9zcGFuPjwvYT48L2xpPjwvdWw+PHVsIG5hdmJhcnJpZ2h0IG5nLWlmPXNob3dOYXZiYXIgY2xhc3M9XCJuYXZiYXItbmF2IG5hdmJhci10b3AtdWwgbmF2YmFyLXRvcC1yaWdodCBuYXZiYXItY3VzdG9tLWV4dC1wIG1iLTBcIj48bGkgbmctaWY9IW1lbnVfc2VydmljZS5wdWJsaWNQYWdlIGNsYXNzPW5hdi1pdGVtIHRpdGxlPVwie3ttZW51X3NlcnZpY2UuZ2V0Y3VycmVudEVudigpLmRlc2NyaXB0aW9ufX0gKHt7bWVudV9zZXJ2aWNlLmdldGN1cnJlbnRFbnYoKS5pZH19KVwiIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzptZW51X3NlcnZpY2UuY3VycmVudFRhcmdldD09XFwnYXBwLm5hdmJhci5zZWxlY3RlbnZpcm9ubWVudFxcJ31cIj48YSBjbGFzcz1cIm5hdi1saW5rIG5hdi1saW5rLWN1c3RvbS1wIHRleHQtY2VudGVyXCIgdWktc3JlZj1cImFwcC5uYXZiYXIuc2VsZWN0ZW52aXJvbm1lbnQoe3R5cGU6XFwnY2hhbmdlXFwnfSlcIj48aSBjbGFzcz1cImZhIGZhLWdsb2JlXCI+PC9pPjwvYT48L2xpPjxsaSBuZy1pZj0hbWVudV9zZXJ2aWNlLnB1YmxpY1BhZ2UgY2xhc3M9bmF2LWl0ZW0gdGl0bGU9XCJ7eyRyb290Lmdsb2JhbHMuY3VycmVudFVzZXIuZmlyc3RfbmFtZX19IHt7JHJvb3QuZ2xvYmFscy5jdXJyZW50VXNlci5sYXN0X25hbWV9fVwiIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzptZW51X3NlcnZpY2UuY3VycmVudFRhcmdldD09XFwnYXBwLm5hdmJhci51c2VyLmRldGFpbHNcXCd9XCI+PGEgY2xhc3M9XCJuYXYtbGluayBuYXYtbGluay1jdXN0b20tcCB0ZXh0LWNlbnRlclwiIHVpLXNyZWY9YXBwLm5hdmJhci51c2VyLmRldGFpbHM+PGkgY2xhc3M9XCJmYSBmYS11c2VyXCI+PC9pPjwvYT48L2xpPjxsaSBuZy1yZXBlYXQ9XCJuaXIgaW4gbWVudV9zZXJ2aWNlLm5hdmJhckl0ZW1zIHRyYWNrIGJ5IG5pci5zX21lbnVzX2lkXCIgbmctaWY9XCI6Om5pci5zX21lbnVzX01lbnVQb3NpdGlvbj09XFwnbmF2YmFycmlnaHRcXCdcIiBjbGFzcz1uYXYtaXRlbSBuZy1jbGFzcz1cIntcXCdkcm9wZG93blxcJzpuaXIuc19tZW51c19NZW51UG9zaXRpb249PVxcJ25hdmJhcnJpZ2h0XFwnfVwiPjxhIGRhdGEtZGlzYWJsZWQ9dHJ1ZSBjbGFzcz1cIm5hdi1saW5rIG5hdi1saW5rLWN1c3RvbS1wIGRyb3Bkb3duLXRvZ2dsZVwiIGhyZWYgZGF0YS10b2dnbGU9ZHJvcGRvd24gaWQ9bmF2YmFyUmlnaHREcm9wZG93biBhcmlhLWhhc3BvcHVwPXRydWUgYXJpYS1leHBhbmRlZD1mYWxzZT48aSBjbGFzcz1cIm1yLTEge3tuaXIuc19tZW51c19JY29ufX1cIiBuZy1jbGFzcz1cIntcXCdoaWRlLW9uLW1vYmlsZVxcJzogbmlyLnNfbWVudXNfUGFyYW1zLmhpZGVJY29uT25TbWFsbFNjcn1cIj48L2k+IDxzcGFuIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDtcIiBuZy1iaW5kPTo6bmlyLnNfbWVudXNfTmFtZSBuZy1jbGFzcz1cIntcXCdoaWRlLW9uLW1vYmlsZVxcJzogbmlyLnNfbWVudXNfUGFyYW1zLmhpZGVUZXh0T25TbWFsbFNjcn1cIj48L3NwYW4+PC9hPjx1bCBjbGFzcz1cImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1yaWdodCByb3VuZGVkLTAgYm9yZGVyIGJvcmRlci10b3AtMCBwdC0wIHBiLTBcIiBhcmlhLWxhYmVsbGVkYnk9bmF2YmFyUmlnaHREcm9wZG93bj48bGkgY2xhc3M9bmF2LWl0ZW0gbmctcmVwZWF0PVwiY25yIGluIG5pci5TaWRlTWVudXMgdHJhY2sgYnkgY25yLnNfbWVudXNfaWRcIj48YSBuZy1pZj1cIjo6Y25yLnNfbWVudXNfTWVudVR5cGU9PTEgJiYgY25yLnNfbWVudXNfUGFyYW1zXCIgbmctY2xpY2s9bWVudV9zZXJ2aWNlLnNldFNlbGVjdGVkTmF2YmFyKG5pcikgdWktc3JlZj17ezo6Y25yLnNfbWVudXNfUGFyYW1zLnBhZ2VzdGF0ZX19IGNsYXNzPW5hdi1saW5rPjxpIG5nLWlmPVwiOjpjbnIuc19tZW51c19JY29uIT1udWxsXCIgc3R5bGU9XCJ3aWR0aDo0MHB4O3RleHQtYWxpZ246IGNlbnRlcjtcIiBjbGFzcz1cImZhIGZhLXt7OjpjbnIuc19tZW51c19JY29ufX1cIiBuZy1jbGFzcz1cIntcXCdoaWRlLW9uLW1vYmlsZVxcJzogbmkuc19tZW51c19QYXJhbXMuaGlkZUljb25PblNtYWxsU2NyfVwiPjwvaT4gPHNwYW4gY2xhc3M9cHgtMSBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXA7XCIgbmctY2xhc3M9XCJ7XFwnaGlkZS1vbi1tb2JpbGVcXCc6IG5pLnNfbWVudXNfUGFyYW1zLmhpZGVUZXh0T25TbWFsbFNjcn1cIj57ezo6Y25yLnNfbWVudXNfTmFtZX19PC9zcGFuPjwvYT4gPGEgbmctaWY9XCI6OmNuci5zX21lbnVzX01lbnVUeXBlPT0yXCIgdWktc3JlZj1cImFwcC5uYXZiYXIudGFza3MucHJvYyh7aWQ6e3s6OmNuci5zX21lbnVzX2lkfX0sbmF2YmFyX2lkOnt7OjpjbnIuc19tZW51c19OYXZiYXJ9fSxzaWRlbWVudV9pZDp7ezo6Y25yLnNfbWVudXNfaWR9fSxpbml0X3R5cGU6XFwnbVxcJ30pXCIgY2xhc3M9bmF2LWxpbms+PGkgbmctaWY9XCI6OmNuci5zX21lbnVzX0ljb24hPW51bGxcIiBzdHlsZT1cIndpZHRoOjQwcHg7dGV4dC1hbGlnbjogY2VudGVyO1wiIGNsYXNzPVwiZmEgZmEte3s6OmNuci5zX21lbnVzX0ljb259fVwiIG5nLWNsYXNzPVwie1xcJ2hpZGUtb24tbW9iaWxlXFwnOiBuaS5zX21lbnVzX1BhcmFtcy5oaWRlSWNvbk9uU21hbGxTY3J9XCI+PC9pPiA8c3BhbiBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXA7XCIgbmctYmluZD06OmNuci5zX21lbnVzX05hbWUgbmctY2xhc3M9XCJ7XFwnaGlkZS1vbi1tb2JpbGVcXCc6IG5pLnNfbWVudXNfUGFyYW1zLmhpZGVUZXh0T25TbWFsbFNjcn1cIj48L3NwYW4+PC9hPjwvbGk+PGxpIGNsYXNzPWRpdmlkZXI+PC9saT48bGkgbmctaWY9XCIhbG9nb3V0TG9hZGVkICYmICFtZW51X3NlcnZpY2UucHVibGljUGFnZVwiIG5nLWluaXQ9TG9hZExvZ291dCgpIGNsYXNzPW5hdi1pdGVtPjxhIGNsYXNzPW5hdi1saW5rIHVpLXNyZWY9YXBwLmxvZ291dD48aSBzdHlsZT1cIndpZHRoOjQwcHg7dGV4dC1hbGlnbjogY2VudGVyO1wiIGNsYXNzPVwiZmEgZmEtc2lnbi1vdXQtYWx0IG1yLTJcIj48L2k+PHNwYW4gbmctYmluZD1cInBhZ2VMYWJlbHMubG9nb3V0TWVudUxhYmVsIHx8IFxcJ0xvZ291dFxcJ1wiPjwvc3Bhbj48L2E+PC9saT48L3VsPjwvbGk+PC91bD48L25hdj48bmF2IG5nLWlmPXNob3dOYXZiYXIgY2xhc3M9XCJuYXZiYXItY3VzdG9tIG5hdmJhci1ib3R0b20gbmF2YmFyLWN1c3RvbS1leHQtcCBweS0wXCI+PHVsIGNsYXNzPVwibmF2YmFyLW5hdiBuYXZiYXItYm90dG9tLXVsIG1yLWF1dG8gbWItMFwiPjxsaSBuZy1pZj1cIm1lbnVfc2VydmljZS5uYXZiYXJJdGVtcy5sZW5ndGg9PTAgJiYgIW1lbnVfc2VydmljZS5wdWJsaWNQYWdlXCIgY2xhc3M9bmF2LWl0ZW0gbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOm1lbnVfc2VydmljZS5jdXJyZW50VGFyZ2V0PT1cXCdhcHAubmF2YmFyLmhvbWVcXCd9XCI+PGEgY2xhc3M9XCJuYXYtbGluayBuYXYtbGluay1jdXN0b20tcFwiIHVpLXNyZWY9YXBwLm5hdmJhci5ob21lPjxpIGNsYXNzPVwiZmEgZmEtaG9tZSBtci0yXCI+PC9pPkhvbWU8L2E+PC9saT48bGkgbmctcmVwZWF0PVwibmkgaW4gbWVudV9zZXJ2aWNlLm5hdmJhckl0ZW1zIHRyYWNrIGJ5IG5pLnNfbWVudXNfaWRcIiBuZy1pZj1cIm5pLnNfbWVudXNfTWVudVBvc2l0aW9uPT1cXCduYXZiYXJcXCdcIiBjbGFzcz1uYXYtaXRlbSBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6Y2hlY2tJZkFjdGl2ZShuaSl9XCI+PGEgdGl0bGU9e3s6Om5pLnNfbWVudXNfTmFtZX19IG5nLWNsaWNrPW1lbnVfc2VydmljZS5zZXRTZWxlY3RlZEFwcE1lbnUobmkuc19tZW51c19QYXJhbXMucGFnZXN0YXRlLG5pLnNfbWVudXNfVGFyZ2V0KSB1aS1zcmVmPVwie3s6Om5pLnNfbWVudXNfUGFyYW1zLnBhZ2VzdGF0ZX19KG1lcmdlT2JqZWN0cyhuaS5zX21lbnVzX1BhcmFtcywgeyB2ZXJzaW9uOiBuaS5zX21lbnVzX1RhcmdldFBhZ2VWZXJzaW9ufSApKVwiIGNsYXNzPVwibmF2LWxpbmsgbmF2LWxpbmstY3VzdG9tLXAgdGV4dC1jZW50ZXJcIj48aSBuZy1pZj1cIjo6bmkuc19tZW51c19JY29uIT1udWxsXCIgY2xhc3M9XCJmYSBmYS17ezo6bmkuc19tZW51c19JY29ufX1cIiBuZy1jbGFzcz1cIntcXCdoaWRlLW9uLW1vYmlsZVxcJzogbmkuc19tZW51c19QYXJhbXMuaGlkZUljb25PblNtYWxsU2NyfVwiPjwvaT4gPHNwYW4gY2xhc3M9cHgtMSBuZy1jbGFzcz1cIntcXCdoaWRlLW9uLW1vYmlsZVxcJzogbmkuc19tZW51c19QYXJhbXMuaGlkZVRleHRPblNtYWxsU2NyfVwiIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDtcIj57ezo6bmkuc19tZW51c19OYW1lfX08L3NwYW4+PC9hPjwvbGk+PC91bD48L25hdj48c3R5bGUgdHlwZT10ZXh0L2Nzcz5cXHJcXG4gICAgICAubmF2YmFyLWN1c3RvbS1leHQtcHtcXHJcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHt7bWVudV9zZXJ2aWNlLmN1cnJlbnRNZW51LlBhcmFtZXRlcnMuY3VzdG9tQmdDb2xvcn19ICFpbXBvcnRhbnQ7XFxyXFxuICAgICAgfVxcclxcbiAgICAgIFxcclxcblxcclxcbiAgICAgIC5uYXYtbGluay1jdXN0b20tcHtcXHJcXG5cXHRcXHRkaXNwbGF5OiBmbGV4O1xcclxcblxcdFxcdGFsaWduLWl0ZW1zOmNlbnRlcjtcXHJcXG4gICAgICAgIHt7bWVudV9zZXJ2aWNlLmN1cnJlbnRNZW51LlBhcmFtZXRlcnMuY3VzdG9tQ3NzfX1cXHJcXG4gICAgICB9XFxyXFxuXFxyXFxuICAgICAgLm5hdi1saW5rLWN1c3RvbS1wOmhvdmVyLC5uYXYtbGluay1jdXN0b20tcDpmb2N1c3tcXHJcXG4gICAgICAgIHt7bWVudV9zZXJ2aWNlLmN1cnJlbnRNZW51LlBhcmFtZXRlcnMuY3VzdG9tQ3NzSG92ZXJ9fVxcclxcbiAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAubmF2YmFyLWN1c3RvbSAubmF2YmFyLW5hdiBsaS5hY3RpdmUgPiBhLm5hdi1saW5rLWN1c3RvbS1wIHtcXHJcXG4gICAgICAgIHt7bWVudV9zZXJ2aWNlLmN1cnJlbnRNZW51LlBhcmFtZXRlcnMuY3VzdG9tQ3NzQWN0aXZlfX1cXHJcXG4gICAgICB9XFxyXFxuXFxyXFxuXFxyXFxuLm5hdi1saW5rLXNpZGUtbWVudXtcXHJcXG5cXHJcXG4gIGNvbG9yOiAjZTllOWU5O1xcclxcbn1cXHJcXG4gIFxcclxcbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xcclxcbiAubmF2LWxpbmstc2lkZS1tZW51IHtcXHJcXG4gICAgZGlzcGxheTogbm9uZTtcXHJcXG4gIH1cXHJcXG59XFxyXFxuXFxyXFxuIC5uYXZiYXItbmF2IC5uYXYtbGluayB7XFxyXFxuICAgIHBhZGRpbmctcmlnaHQ6IDEycHggIWltcG9ydGFudDtcXHJcXG4gICAgcGFkZGluZy1sZWZ0OiAxMnB4ICFpbXBvcnRhbnQ7XFxyXFxuICB9XFxyXFxuICBcXHJcXG4gICAuZHJvcGRvd24tbWVudSAgLm5hdi1saW5rIHtcXHJcXG4gICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50O1xcclxcbiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcXHJcXG4gIH1cXHJcXG4gIFxcclxcbiAgXFxyXFxuICAubmF2YmFyLWN1c3RvbS10b3Age1xcclxcblxcclxcbiAgICBwb3NpdGlvbjogZml4ZWQ7XFxyXFxuICAgIHRvcDogMDtcXHJcXG4gICAgcmlnaHQ6IDA7XFxyXFxuICAgIGxlZnQ6IDA7XFxyXFxuICAgIHotaW5kZXg6IDEwMzE7XFxyXFxuICAgIGRpc3BsYXk6IGZsZXg7XFxyXFxuICAgLyogZmxleC13cmFwOiB3cmFwOyovXFxyXFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxyXFxuICAgIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xcclxcbiAgLyogIGZsZXgtZGlyZWN0aW9uOiByb3c7Ki9cXHJcXG4gICAgZmxleC1mbG93OiByb3cgbm93cmFwO1xcclxcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XFxyXFxuICAgLyogIGJhY2tncm91bmQtY29sb3I6ICM1NTU1NTU7Ki9cXHJcXG4gICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xcclxcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xcclxcbiAgICAvKiBib3JkZXItYm90dG9tOiAycHggc29saWQgI2VmZWZlZjsgKi9cXHJcXG4gICAgYm9yZGVyLXRvcDogbm9uZTtcXHJcXG4gICAgbWluLWhlaWdodDogNDBweDtcXHJcXG4gIH1cXHJcXG5cXHJcXG4gIC5uYXZiYXItdG9wLXVse1xcclxcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxyXFxuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcXHJcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDA7XFxyXFxuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcXHJcXG4gICAgICBsaXN0LXN0eWxlOiBub25lO1xcclxcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtZXZlbmx5O1xcclxcbiAgICAgIGFsaWduLWl0ZW1zOiBlbmQ7XFxyXFxuXFxyXFxuICB9XFxyXFxuXFxyXFxuICAubmF2YmFyLWJvdHRvbSB7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6ICM1NTU1NTU7XFxyXFxuICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcXHJcXG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xcclxcbiAgICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDtcXHJcXG4gICAgcmlnaHQ6IDA7XFxyXFxuICAgIGJvdHRvbTogMDtcXHJcXG4gICAgbGVmdDogMDtcXHJcXG4gICAgei1pbmRleDogMTAzMDtcXHJcXG4gICAgcGFkZGluZzogMHB4O1xcclxcbiAgICBvdmVyZmxvdy14OiBzY3JvbGw7XFxyXFxuICB9XFxyXFxuICBcXHJcXG5cXHJcXG4gICAubmF2YmFyLWJvdHRvbS11bHtcXHJcXG4gICAgICBkaXNwbGF5OiBmbGV4O1xcclxcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XFxyXFxuICAgICAgcGFkZGluZy1sZWZ0OiAwO1xcclxcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XFxyXFxuICAgICAgbGlzdC1zdHlsZTogbm9uZTtcXHJcXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWV2ZW5seTtcXHJcXG4gICAgICB3aWR0aDogZml0LWNvbnRlbnQ7XFxyXFxuICAgICAgbWluLXdpZHRoOiAxMDAlO1xcclxcbiAgICAgIGFsaWduLWl0ZW1zOiBlbmQ7XFxyXFxuICB9XFxyXFxuICBcXHJcXG4gIFxcclxcbiAgICAubmF2YmFyLWJvdHRvbTo6LXdlYmtpdC1zY3JvbGxiYXIge1xcclxcbiAgICBoZWlnaHQ6IDA7XFxyXFxuICAgIHdpZHRoOiAwO1xcclxcbiAgfVxcclxcbiAgXFxyXFxuICAubmF2YmFyLWJvdHRvbTo6LW1vei1zY3JvbGxiYXIge1xcclxcbiAgICBoZWlnaHQ6IDA7XFxyXFxuICAgIHdpZHRoOiAwO1xcclxcbiAgfVxcclxcbiAgXFxyXFxuICAubmF2YmFyLWJvdHRvbTo6LW1zLXNjcm9sbGJhciB7XFxyXFxuICAgIGhlaWdodDogMDtcXHJcXG4gICAgd2lkdGg6IDA7XFxyXFxuICB9XFxyXFxuICBcXHJcXG4gIFxcclxcblxcclxcbiAgXFxyXFxuICBAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpXFxyXFxuICB7XFxyXFxuICAgIC5uYXZiYXItYm90dG9tIHtcXHJcXG4gICAgIGRpc3BsYXk6bm9uZTtcXHJcXG4gICAgIFxcclxcbiAgICB9XFxyXFxuICAgXFxyXFxuICB9XFxyXFxuQG1lZGlhIChtYXgtd2lkdGg6IDk5MnB4KVxcclxcbiAge1xcclxcbiAgICBcXHJcXG4gICAgLm5hdi1saW5rIHtcXHJcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXHJcXG4gICAgICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTtcXHJcXG4gIH1cXHJcXG4gXFxyXFxuICAgIC5uYXZiYXItdG9wLWxlZnQge1xcclxcbiAgICAgICAgZGlzcGxheTpub25lO1xcclxcbiAgICB9XFxyXFxuICAgICAubmF2YmFyLXRvcC1yaWdodCB7XFxyXFxuICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcclxcbiAgICAgICAgIHdpZHRoOiAxMDAlO1xcclxcbiAgICB9XFxyXFxuICAgICAubmF2YmFyLW5hdiAubmF2LWxpbmsge1xcclxcbiAgICAgICAgcGFkZGluZy1yaWdodDogNnB4ICFpbXBvcnRhbnQ7XFxyXFxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDZweCAhaW1wb3J0YW50O1xcclxcbiAgfVxcclxcbiAgXFxyXFxuICAubmF2YmFyLWN1c3RvbSAubmF2YmFyLW5hdiA+IGxpID4gYSB7XFxyXFxuICAgICAgXFxyXFxuICAgIGJvcmRlci1ib3R0b206IDVweCBzb2xpZCB0cmFuc3BhcmVudDsgXFxyXFxuICAgICBib3JkZXItdG9wOiA1cHggc29saWQgdHJhbnNwYXJlbnQ7XFxyXFxuXFx0IGZvbnQtc2l6ZTogbGFyZ2U7XFxyXFxuICAgfVxcclxcbiAgXFxyXFxuICAgIC5kcm9wZG93bi1tZW51LXJpZ2h0e1xcclxcbiAgICAgICAgICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDtcXHJcXG4gICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcXHJcXG4gICAgICAgICAgbGVmdDogLTg1dncgIWltcG9ydGFudDtcXHJcXG4gICAgICAgICAgdG9wOiA1MHB4ICFpbXBvcnRhbnQ7XFxyXFxuICAgICAgICAgIHBhZGRpbmc6IDEycHg7XFxyXFxuICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlYWVhZWEgIWltcG9ydGFudDtcXHJcXG4gICAgICAgICAgLypib3gtc2hhZG93OiAwIDAuNXJlbSAxcmVtIHJnYmEoMTQsIDI2LCA1NywgMC4xNSkgIWltcG9ydGFudDsqL1xcclxcbiAgICAgICAgICB3aWR0aDo4NXZ3O1xcclxcbiAgICAgICAgICBoZWlnaHQ6MTAwdmg7XFxyXFxuICAgICAgICAgIHotaW5kZXg6MTAzMjtcXHJcXG4gICAgICAgICAgdG9wOjAgIWltcG9ydGFudDtcXHJcXG4gICAgICAgICAgcGFkZGluZzoxMnB4ICFpbXBvcnRhbnQ7XFxyXFxuICAgICAgICAgIHRyYW5zZm9ybTpub25lICFpbXBvcnRhbnQ7XFxyXFxuICAgICAgICAgIG1hcmdpbi10b3A6MDtcXHJcXG4gICAgICAgICAgYm9yZGVyOm5vbmUgIWltcG9ydGFudDtcXHJcXG4gICAgICAgICAgdHJhbnNpdGlvbjpsZWZ0IDFzIGVhc2UgMHMgIWltcG9ydGFudDtcXHJcXG4gICAgICAgICAgZm9udC1zaXplOiAxLjVyZW0gIWltcG9ydGFudDtcXHJcXG4gICAgICAgICAgXFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG4gIDwvc3R5bGU+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvb25ib2FyZGluZy5odG1sJywnPHN0eWxlPlxcclxcbiAgICAgICAgKiB7XFxyXFxuICAgICAgICAgICAgZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgIFxcclxcbiAgICAgICAgLm9uYm9hcmQtZ3JpZCB7XFxyXFxuICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcXHJcXG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XFxyXFxuICAgICAgICAgICAgZ2FwOiA3MnB4O1xcclxcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcclxcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAub25ib2FyZGluZy1jb250YWluZXIge1xcclxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcXHJcXG4gICAgICAgICAgICB0b3A6IDUwJTtcXHJcXG4gICAgICAgICAgICBsZWZ0OiA1MCU7XFxyXFxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XFxyXFxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XFxyXFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgLmRvbnQtc2hvdy1jb250YWluZXIge1xcclxcbiAgICAgICAgICAgIHdpZHRoOiA0NDBweDtcXHJcXG4gICAgICAgICAgICBoZWlnaHQ6IDIwdmg7XFxyXFxuICAgICAgICAgICAgcGFkZGluZzogMjRweDtcXHJcXG4gICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xcclxcbiAgICAgICAgICAgIHBsYWNlLWNvbnRlbnQ6IGNlbnRlcjtcXHJcXG4gICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XFxyXFxuICAgICAgICAgICAgdG9wOiA1MCU7XFxyXFxuICAgICAgICAgICAgbGVmdDogNTAlO1xcclxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xcclxcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xcclxcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcXHJcXG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgLmRvbnQtc2hvdy1jb250YWluZXI+cCB7XFxyXFxuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgLm9uYm9hcmRpbmctaW5uZXIge1xcclxcbiAgICAgICAgICAgIHdpZHRoOiA2MHZ3O1xcclxcbiAgICAgICAgICAgIGhlaWdodDogNTV2aDtcXHJcXG4gICAgICAgICAgICBwYWRkaW5nOiAyNHB4O1xcclxcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiA4NHB4O1xcclxcbiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XFxyXFxuICAgICAgICAgICAgcGxhY2UtY29udGVudDogY2VudGVyO1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgLmRvbnQtc2hvdyB7XFxyXFxuICAgICAgICAgICAgY29sb3I6ICMyYzYwZTU7XFxyXFxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0Q1REZGQTtcXHJcXG4gICAgICAgICAgICBwYWRkaW5nOiAxMnB4O1xcclxcbiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XFxyXFxuICAgICAgICAgICAgcGxhY2UtY29udGVudDogY2VudGVyO1xcclxcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAgMCA4cHggOHB4O1xcclxcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XFxyXFxuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0Q1REZGQTtcXHJcXG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcXHJcXG4gICAgICAgICAgICBmb250LXNpemU6IDFyZW07XFxyXFxuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAuZG9udC1zaG93OmhvdmVyIHtcXHJcXG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICBzZWN0aW9uIHtcXHJcXG4gICAgICAgICAgICBncmlkLWNvbHVtbjogc3BhbiAxO1xcclxcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMjRweDtcXHJcXG5cXHRcXHRcXHRcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIGltZyB7XFxyXFxuICAgICAgICAgICAgZ3JpZC1jb2x1bW46IHNwYW4gMTtcXHJcXG4gICAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gOTZweCk7XFxyXFxuICAgICAgICAgICAgcGFkZGluZzogNDhweDtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgIGJvZHl7XFxyXFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzODNhNDkgIWltcG9ydGFudDtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgIC5kYXJrIHtcXHJcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzgzYTQ5O1xcclxcbiAgICAgICAgICAgIHdpZHRoOiAxMDB2dztcXHJcXG4gICAgICAgICAgIC8qIGhlaWdodDogMTAwdmg7Ki9cXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIC5idG4tcHJpbWFyeSB7XFxyXFxuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzJjNjBlNTtcXHJcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMmM2MGU1O1xcclxcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcXHJcXG4gICAgICAgICAgICBwYWRkaW5nOiA4cHggMTZweDtcXHJcXG4gICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XFxyXFxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XFxyXFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMy4ycHg7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAuYnRuLW91dGxpbmUtcHJpbWFyeSB7XFxyXFxuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0Q1REZGQTtcXHJcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXHJcXG4gICAgICAgICAgICBjb2xvcjogIzJjNjBlNTtcXHJcXG4gICAgICAgICAgICBwYWRkaW5nOiA4cHggMTZweDtcXHJcXG4gICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XFxyXFxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XFxyXFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMy4ycHg7XFxyXFxuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMnB4O1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgLmJ0bi1vdXRsaW5lLXByaW1hcnk6aG92ZXIge1xcclxcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMyYzYwZTU7XFxyXFxuICAgICAgICAgICAgYmFja2dyb3VuZDogIzJjNjBlNTtcXHJcXG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XFxyXFxuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgLmJ0bi1wcmltYXJ5OmhvdmVyIHtcXHJcXG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xcclxcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyYTU2YzY7XFxyXFxuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgLmRvdC1jb250YWluZXIge1xcclxcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XFxyXFxuICAgICAgICAgICAgZ2FwOiA0cHg7XFxyXFxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICAgICAgICAgIGJvdHRvbTogNjRweDtcXHJcXG4gICAgICAgICAgICBsZWZ0OiA1MCU7XFxyXFxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgLmRvdCB7XFxyXFxuICAgICAgICAgICAgd2lkdGg6IDhweDtcXHJcXG4gICAgICAgICAgICBoZWlnaHQ6IDhweDtcXHJcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRDVERkZBO1xcclxcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4O1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgLmRvdC1hY3RpdmUge1xcclxcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyYzYwZTU7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAub25ib2FyZGluZy1jb250YWluZXI+YnV0dG9uLmNsb3NlIHtcXHJcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXHJcXG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XFxyXFxuICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xcclxcbiAgICAgICAgICAgIHJpZ2h0OiAxMnB4O1xcclxcbiAgICAgICAgICAgIHRvcDogMTJweDtcXHJcXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAub25ib2FyZGluZy1jb250YWluZXI+YnV0dG9uLmNsb3NlOmhvdmVyIHtcXHJcXG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAuZC1mbGV4IHtcXHJcXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgLmp1c3RpZnktY29udGVudC1jZW50ZXIge1xcclxcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgLmJ1dHRvbi1jb250YWluZXIge1xcclxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gICAgICAgICAgICBib3R0b206IDEwMHB4O1xcclxcbiAgICAgICAgICAgIGxlZnQ6IDUwJTtcXHJcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XFxyXFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxNDQwcHgpIHtcXHJcXG5cXHJcXG4gICAgICAgICAgICBpbWcge1xcclxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xcclxcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAgICAgc2VjdGlvbiB7XFxyXFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMTJweDtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHtcXHJcXG5cXHJcXG4gICAgICAgICAgICAub25ib2FyZGluZy1pbm5lciB7XFxyXFxuICAgICAgICAgICAgICAgIGhlaWdodDogZml0LWNvbnRlbnQ7XFxyXFxuICAgICAgICAgICAgICAgIHdpZHRoOiA4MHZ3O1xcclxcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogODBweDtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAgICAgLmRvbnQtc2hvdy1jb250YWluZXIge1xcclxcbiAgICAgICAgICAgICAgICB3aWR0aDogODB2dztcXHJcXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBmaXQtY29udGVudDtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAgICAgLmRvdC1jb250YWluZXIge1xcclxcbiAgICAgICAgICAgICAgICBib3R0b206IDU2cHg7XFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgICAgIGltZyB7XFxyXFxuICAgICAgICAgICAgICAgIGdyaWQtYXJlYTogMSAvIDEgLyAyIC8gMztcXHJcXG4gICAgICAgICAgICAgICAgcGFkZGluZzogMTJweDtcXHJcXG4gICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoNjAlIC0gMjRweCk7XFxyXFxuICAgICAgICAgICAgICAgIGp1c3RpZnktc2VsZjogY2VudGVyO1xcclxcbiAgICAgICAgICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgICAgIHNlY3Rpb24ge1xcclxcbiAgICAgICAgICAgICAgICBncmlkLWFyZWE6IDIgLyAxIC8gMyAvIDM7XFxyXFxuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG4gICAgICAgICAgICAgICAgcGFkZGluZzogMDtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAgICAgc2VjdGlvbj5oMiB7XFxyXFxuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAgICAgc2VjdGlvbj5wIHtcXHJcXG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xcclxcbiAgICAgICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICAgICAuYnV0dG9uLWNvbnRhaW5lciB7XFxyXFxuICAgICAgICAgICAgICAgIGJvdHRvbTogODBweDtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcXHJcXG5cXHJcXG4gICAgICAgICAgICBpbWcge1xcclxcbiAgICAgICAgICAgICAgICB3aWR0aDogY2FsYyg4MCUgLSAyNHB4KTtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNDc1cHgpIHtcXHJcXG5cXHJcXG4gICAgICAgICAgICBpbWcge1xcclxcbiAgICAgICAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMjRweCk7XFxyXFxuICAgICAgICAgICAgfVxcclxcbiAgICAgICAgfVxcclxcbiAgICA8L3N0eWxlPjxkaXYgY2xhc3M9ZGFyaz48L2Rpdj48ZGl2IGNsYXNzPW9uYm9hcmRpbmctY29udGFpbmVyPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9Y2xvc2UgbmctY2xpY2s9XCJjbG9zZVByb2Nlc3MoXFwnc3RvcHBlZE9uQ2xpZW50XFwnKVwiPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+PC9idXR0b24+PGRpdiBjbGFzcz1vbmJvYXJkaW5nLWlubmVyPjxkaXYgaWQ9T25lIGNsYXNzPW9uYm9hcmQtZ3JpZCBzdHlsZT1cImRpc3BsYXk6IGdyaWQ7XCI+PHNlY3Rpb24+PGgyPldlbGNvbWUge3tjdXJyZW50VXNlckZpcnN0TmFtZX19ICE8L2gyPjxwIGNsYXNzPXB0LTM+VGhhbmtzIGZvciBqb2luaW5nIGFuIGFtYXppbmcgY29tbXVuaXR5IG9mIGNpdGl6ZW4gZGV2ZWxvcGVycyEgS2F0YWx5byB3aWxsIGVtcG93ZXIgeW91IHRvIGRlc2lnbiBhbmQgZGV2ZWxvcCBhd2Vzb21lIGFwcGxpY2F0aW9ucyB3aXRob3V0IHdyaXRpbmcgYSBzaW5nbGUgbGluZSBvZiBjb2RlITwvcD48L3NlY3Rpb24+PGltZyBsb2FkaW5nPWxhenkgc3JjPXt7Y29uZmlnLmRlcGxveWRpcn19L2ltZy9vbmJvYXJkaW5nL1dlbGNvbWUucG5nIGFsdD48ZGl2IGNsYXNzPWJ1dHRvbi1jb250YWluZXI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBpZD1kZWZhdWx0T3BlbiBjbGFzcz1idG4tcHJpbWFyeSBuZy1jbGljaz1cIm9wZW5Qcm9jZXNzKCRldmVudCwgXFwnVHdvXFwnKVwiPk5leHQ8L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGlkPVR3byBjbGFzcz1vbmJvYXJkLWdyaWQgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPjxzZWN0aW9uPjxoMj5Ib3cgaXQgYWxsIHdvcmtzPzwvaDI+PHAgY2xhc3M9cHQtMz5LYXRhbHlvIGlzIGEgY29tcG9uZW50IGJhc2VkIG5vLWNvZGUgcGxhdGZvcm0gZnJvbSB0b3AgdG8gYm90dG9tLiBSZXNvdXJjZSBpcyB0aGUgbmFtZSBvZiB0aGUgbWFpbiBidWlsZGluZyBibG9jayBhbmQgeW91IHdpbGwgdXNlIHZhcmlvdXMgcmVzb3VyY2VzIGluIGRpdmVyc2Ugd2F5cyB0byBidWlsZCBmdWxsIGJsb3duIGFwcGxpY2F0aW9ucy4gSXRcXHUyMDE5cyBzaW1wbGUsIGZhc3QgYW5kIHNjYWxhYmxlLjwvcD48L3NlY3Rpb24+PGltZyBsb2FkaW5nPWxhenkgc3JjPXt7Y29uZmlnLmRlcGxveWRpcn19L2ltZy9vbmJvYXJkaW5nL0NvbmNlcHQucG5nIGFsdD48ZGl2IGNsYXNzPWJ1dHRvbi1jb250YWluZXI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1idG4tb3V0bGluZS1wcmltYXJ5IG5nLWNsaWNrPVwib3BlblByb2Nlc3MoJGV2ZW50LCBcXCdPbmVcXCcpXCI+QmFjazwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPWJ0bi1wcmltYXJ5IG5nLWNsaWNrPVwib3BlblByb2Nlc3MoJGV2ZW50LCBcXCdUaHJlZVxcJylcIj5OZXh0PC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBpZD1UaHJlZSBjbGFzcz1vbmJvYXJkLWdyaWQgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPjxzZWN0aW9uPjxoMj5SZXNvdXJjZXM8L2gyPjxwIGNsYXNzPXB0LTM+QSBjb3JuZXJzdG9uZSBvZiB0aGUgS2F0YWx5byBwbGF0Zm9ybSBpcyB0aGUgcmVzb3VyY2UsIHNlcnZpbmcgYXMgYSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9jay5UaGluayBvZiBpdCBhcyBhIHB1enpsZSBwaWVjZTsgd2hlbiBjb21iaW5lZCwgdGhlc2UgcmVzb3VyY2VzIGNyZWF0ZSBhIGNvaGVzaXZlIGFuZCBjb21wbGV0ZSBwcm9kdWN0LiBWYXJpb3VzIHJlc291cmNlIHR5cGVzIHBsYXkgYSBjcnVjaWFsIHJvbGUgaW4gY29uc3RydWN0aW5nIGFwcGxpY2F0aW9ucyBvbiB0aGUgcGxhdGZvcm0sIGVuY29tcGFzc2luZyBkYXRhc2V0cywgZmlsZXMsIHBhZ2VzLCBtZW51cywgYW5kIGV2ZW4gdGhlIGFwcGxpY2F0aW9uIGl0c2VsZiwgd2hpY2ggaXMgZXNzZW50aWFsbHkgYW5vdGhlciB0eXBlIG9mIHJlc291cmNlLjwvcD48L3NlY3Rpb24+PGltZyBsb2FkaW5nPWxhenkgc3JjPXt7Y29uZmlnLmRlcGxveWRpcn19L2ltZy9vbmJvYXJkaW5nL1Jlc291cmNlcy5wbmcgYWx0PjxkaXYgY2xhc3M9YnV0dG9uLWNvbnRhaW5lcj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPWJ0bi1vdXRsaW5lLXByaW1hcnkgbmctY2xpY2s9XCJvcGVuUHJvY2VzcygkZXZlbnQsIFxcJ1R3b1xcJylcIj5CYWNrPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9YnRuLXByaW1hcnkgbmctY2xpY2s9XCJvcGVuUHJvY2VzcygkZXZlbnQsIFxcJ0ZvdXJcXCcpXCI+TmV4dDwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgaWQ9Rm91ciBjbGFzcz1vbmJvYXJkLWdyaWQgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPjxzZWN0aW9uPjxoMj5EYXRhc2V0PC9oMj48cCBjbGFzcz1wdC0zPkEgZGF0YXNldCBzZXJ2ZXMgYXMgYSByZXNvdXJjZSBmb3IgdGhlIHN0b3JhZ2UgYW5kIHJldHJpZXZhbCBvZiBkYXRhIHdpdGhpbiBhbiBhcHBsaWNhdGlvbi4gSXQgY2FuIGFjcXVpcmUgZGF0YSBmcm9tIHZhcmlvdXMgc291cmNlcywgaW5jbHVkaW5nIGEgZGF0YWJhc2UgdGFibGUsIGEgUkVTVCBBUEkgZW5kcG9pbnQsIG9yIGluZm9ybWF0aW9uIHN0b3JlZCBvbiBhIGJsb2NrY2hhaW4uIEFsbW9zdCBldmVyeSBvdGhlciByZXNvdXJjZSB3aXRoaW4gYW4gYXBwbGljYXRpb24gcmVsaWVzIG9uIGRhdGEgc291cmNlZCBmcm9tIGRhdGFzZXRzLCBmb3JtaW5nIGEgZnVuZGFtZW50YWwgbGluayBpbiB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgYXBwbGljYXRpb24uIFR5cGljYWxseSwgYSBzaW5nbGUgYXBwbGljYXRpb24gd2lsbCB1dGlsaXplIG11bHRpcGxlIGRhdGFzZXRzLjwvcD48L3NlY3Rpb24+PGltZyBsb2FkaW5nPWxhenkgc3JjPXt7Y29uZmlnLmRlcGxveWRpcn19L2ltZy9vbmJvYXJkaW5nL0RhdGFzZXQucG5nIGFsdD48ZGl2IGNsYXNzPWJ1dHRvbi1jb250YWluZXI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1idG4tb3V0bGluZS1wcmltYXJ5IG5nLWNsaWNrPVwib3BlblByb2Nlc3MoJGV2ZW50LCBcXCdUaHJlZVxcJylcIj5CYWNrPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9YnRuLXByaW1hcnkgbmctY2xpY2s9XCJvcGVuUHJvY2VzcygkZXZlbnQsIFxcJ0ZpdmVcXCcpXCI+TmV4dDwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgaWQ9Rml2ZSBjbGFzcz1vbmJvYXJkLWdyaWQgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPjxzZWN0aW9uPjxoMj5QYWdlPC9oMj48cCBjbGFzcz1wdC0zPkFuIGFwcGxpY2F0aW9uIGlzIGNvbXBvc2VkIG9mIG9uZSBvciBtb3JlIHBhZ2VzLCBlYWNoIHNlcnZpbmcgYXMgYSBtZWFucyBmb3IgdXNlcnMgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgYXBwbGljYXRpb24uIFR5cGljYWxseSwgYSBwYWdlIGluY2x1ZGVzIG9uZSBvciBtb3JlIGZvcm0gZWxlbWVudHMsIGNvbW1vbmx5IGtub3duIGFzIHdpZGdldHMuIFRoZXNlIHdpZGdldHMgYXJlIGRlc2lnbmVkIHRvIGVuYWJsZSB1c2VycyB0byBpbnB1dCwgdmlldywgb3IgdXBkYXRlIGRhdGEgd2l0aGluIHRoZSBhcHBsaWNhdGlvbi4gSW4gZXNzZW5jZSwgYSBwYWdlIGFjdHMgYXMgYSB1c2VyIGludGVyZmFjZSwgcHJvdmlkaW5nIGEgcGxhdGZvcm0gZm9yIHVzZXJzIHRvIGVuZ2FnZSB3aXRoIHRoZSBhcHBsaWNhdGlvbi48L3A+PC9zZWN0aW9uPjxpbWcgbG9hZGluZz1sYXp5IHNyYz17e2NvbmZpZy5kZXBsb3lkaXJ9fS9pbWcvb25ib2FyZGluZy9QYWdlLnBuZyBhbHQ+PGRpdiBjbGFzcz1idXR0b24tY29udGFpbmVyPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9YnRuLW91dGxpbmUtcHJpbWFyeSBuZy1jbGljaz1cIm9wZW5Qcm9jZXNzKCRldmVudCwgXFwnRm91clxcJylcIj5CYWNrPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9YnRuLXByaW1hcnkgbmctY2xpY2s9XCJvcGVuUHJvY2VzcygkZXZlbnQsIFxcJ1NpeFxcJylcIj5OZXh0PC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBpZD1TaXggY2xhc3M9b25ib2FyZC1ncmlkIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj48c2VjdGlvbj48aDI+TWVudTwvaDI+PHAgY2xhc3M9cHQtMz5UaGUgbWVudSBpcyB0aGUgcHJpbWFyeSBuYXZpZ2F0aW9uIHJlc291cmNlIGluIHRoZSBhcHBsaWNhdGlvbi4gVXNlcnMgY2FuIG5hdmlnYXRlIHRocm91Z2hvdXQgdGhlIGVudGlyZSBhcHBsaWNhdGlvbiB1c2luZyB0aGUgYXBwbGljYXRpb24gbWVudSwgd2hpbGUgc2lkZSBtZW51cyBhaWQgaW4gbmF2aWdhdGlvbiB3aXRoaW4gc3BlY2lmaWMgcGFnZXMgb2YgdGhlIGFwcGxpY2F0aW9uLiBVbmxpa2UgcGFnZSBtZW51cywgdGhlcmVcXHUyMDE5cyBvbmx5IG9uZSBhcHBsaWNhdGlvbiBtZW51IHBlciBhcHBsaWNhdGlvbi48L3A+PC9zZWN0aW9uPjxpbWcgbG9hZGluZz1sYXp5IHNyYz17e2NvbmZpZy5kZXBsb3lkaXJ9fS9pbWcvb25ib2FyZGluZy9NZW51LnBuZyBhbHQ+PGRpdiBjbGFzcz1idXR0b24tY29udGFpbmVyPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9YnRuLW91dGxpbmUtcHJpbWFyeSBuZy1jbGljaz1cIm9wZW5Qcm9jZXNzKCRldmVudCwgXFwnRml2ZVxcJylcIj5CYWNrPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9YnRuLXByaW1hcnkgbmctY2xpY2s9XCJvcGVuUHJvY2VzcygkZXZlbnQsIFxcJ1NldmVuXFwnKVwiPk5leHQ8L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGlkPVNldmVuIGNsYXNzPW9uYm9hcmQtZ3JpZCBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCI+PHNlY3Rpb24+PGgyPkFwcGxpY2F0aW9uPC9oMj48cCBjbGFzcz1wdC0zPkFuIGFwcGxpY2F0aW9uIGlzIGEgY29sbGVjdGlvbiBvZiByZXNvdXJjZXMgd29ya2luZyBpbiB1bmlzb24gdG8gb2ZmZXIgYSBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5IHRvIHVzZXJzLiBBcHBsaWNhdGlvbiBicmluZ3MgdG9nZXRoZXIgdmFyaW91cyByZXNvdXJjZXMgdG8gZW5zdXJlIHRoZXkgZnVuY3Rpb24gY29sbGVjdGl2ZWx5LCBwcmVzZW50aW5nIGEgY29uc29saWRhdGVkIHNvbHV0aW9uLjwvcD48L3NlY3Rpb24+PGltZyBsb2FkaW5nPWxhenkgc3JjPXt7Y29uZmlnLmRlcGxveWRpcn19L2ltZy9vbmJvYXJkaW5nL0FwcC5wbmcgYWx0PjxkaXYgY2xhc3M9YnV0dG9uLWNvbnRhaW5lcj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPWJ0bi1vdXRsaW5lLXByaW1hcnkgbmctY2xpY2s9XCJvcGVuUHJvY2VzcygkZXZlbnQsIFxcJ1NpeFxcJylcIj5CYWNrPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9YnRuLXByaW1hcnkgbmctY2xpY2s9XCJjbG9zZVByb2Nlc3MoXFwnY29tcGxldGVkXFwnLHRydWUpXCI+RmluaXNoPC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1kb3QtY29udGFpbmVyPjxkaXYgaWQ9ZG90T25lIGNsYXNzPVwiZG90IGRvdC1hY3RpdmVcIj48L2Rpdj48ZGl2IGlkPWRvdFR3byBjbGFzcz1kb3Q+PC9kaXY+PGRpdiBpZD1kb3RUaHJlZSBjbGFzcz1kb3Q+PC9kaXY+PGRpdiBpZD1kb3RGb3VyIGNsYXNzPWRvdD48L2Rpdj48ZGl2IGlkPWRvdEZpdmUgY2xhc3M9ZG90PjwvZGl2PjxkaXYgaWQ9ZG90U2l4IGNsYXNzPWRvdD48L2Rpdj48ZGl2IGlkPWRvdFNldmVuIGNsYXNzPWRvdD48L2Rpdj48L2Rpdj48L2Rpdj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPWRvbnQtc2hvdyBuZy1jbGljaz1kb250U2hvdygkZXZlbnQpPklcXCdtIHJlYWR5IHRvIHN0YXJ0LiBEb25cXCd0IHNob3cgdGhpcyB0dXRvcmlhbCBhbnkgbW9yZS48L2J1dHRvbj48L2Rpdj48ZGl2IGlkPW5vU2hvdyBjbGFzcz1kb250LXNob3ctY29udGFpbmVyPjxwPkFyZSB5b3Ugc3VyZSB5b3UgZG9uXFwndCB3YW50IHRvIHNlZSB0aGlzIHR1dG9yaWFsIGFnYWluPzwvcD48ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPWJ0bi1vdXRsaW5lLXByaW1hcnkgbmctY2xpY2s9cmVvcGVuUHJvY2VzcygkZXZlbnQpPk5vPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9YnRuLXByaW1hcnkgbmctY2xpY2s9ZG9udFNob3dUcnVlKCRldmVudCk+WWVzPC9idXR0b24+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvb25ib2FyZGluZ19vbGQuaHRtbCcsJzxkaXYgY2xhc3M9XCJteC00IG15LTJcIiBuZy1zaG93PWxvY2FsVmFycy5wYWdlTG9hZGVkPjxkaXYgY2xhc3M9XCJyb3cgbS0wIG10LTNcIiBuZy1zaG93PVwiZXh0ZW5kZWRVc2VyLlBhcmFtcy5PbmJvYXJkaW5nPT1cXCdBcHBDcmVhdGVcXCdcIj48ZGl2IGNsYXNzPVwicC0yIGNvbFwiPjxkaXY+PGRpdiBjbGFzcz1cImNvbC0yNCB0ZXh0LWNlbnRlclwiPjxwIGNsYXNzIHN0eWxlPVwiZm9udDogMzZweCBJQk0gU2FucyBQbGV4LCBzYW5zLXNlcmlmOyBjb2xvcjogIzEwNzg5NjtcIj48Yj5IaSB7eyBjdXJyZW50VXNlckZpcnN0TmFtZX19IGFuZCB3ZWxjb21lIHRvIEthdGFseW8hPC9iPjwvcD48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wtYXV0byB0ZXh0LWNlbnRlclwiPjxpbWcgd2lkdGg9NTAlIHNyYz0vc3RhdGljL2ltZy9yZXNvdXJjZV9kdWRlLnBuZz48L2Rpdj48ZGl2IGNsYXNzPWNvbCBzdHlsZT1cImZvbnQ6IDE2cHggSUJNIFNhbnMgUGxleCwgc2Fucy1zZXJpZjsgY29sb3I6ICMxMDc4OTY7XCI+PHAgc3R5bGU9XCJmb250OiAyNHB4IEhlbHZldGljYSwgc2Fucy1zZXJpZjsgY29sb3I6ICMxMDc4OTY7XCI+SGF2aW5nIHRoZSByaWdodCByZXNvdXJjZXMgZm9yIHRoZSBqb2IhIGlsaSBDb250aW51b3NseSBpbm5vdmF0ZSB3aXRoIHRoZSByaWdodCByZXNvdXJjZXMhIGlsaSBUbyBidWlsZCB0aGUgYXBwbGljYXRpb24gb2YgeW91ciBkcmVhbXMgeW91IG5lZWQgdGhlIHJpZ2h0IHJlc291cmNlcyE8L3A+PHA+SXRcXCdzIGFsd2F5cyBnb29kIHRvIHN0YXJ0IHdpdGggdGhlIGludHJvZHVjdGlvbiBvZiB0aGUgbWFpbiBjb25jZXB0IGZvciBidWlsZGluZyBhcHBsaWNhdGlvbnMgd2l0aCBLYXRhbHlvITwvcD48cD5TYXkgaGVsbG8gdG8gPGI+UkVTT1VSQ0VTPC9iPiwgdGhlIG1haW4gYnVpbGRpbmcgYmxvY2tzIG9mIEthdGFseW8gcGxhdGZvcm0uPC9wPjxwPllvdSB3aWxsIGRlZmluZSwgc2V0dXAgYW5kIGludGVncmF0ZSBtYW55IGRpZmZlcmVudCByZXNvdXJjZXMgdG8gYnVpbGQgYWxsIHRoZSBhd2Vzb21lIGZlYXR1cmVzIG9mIHlvdXIgYXBwbGljYXRpb25zLjwvcD48cD5EYXRhc2V0cywgdGFza3MsIG5vdGlmaWNhdGlvbnMgb3IgZmlsZXMgYXJlIGp1c3QgYSBmZXcgb2YgdGhlIHJlc291cmNlIHR5cGVzIGF2YWlsYWJsZSBhbmQgZXZlbiBhbiBhcHBsaWNhdGlvbiBpdHNlbGYgaXMgYSByZXNvdXJjZS4gPGEgaHJlZj0vbGVhcm4tcmVzb3VyY2VzPihMZWFybiBtb3JlIGFib3V0IHJlc291cmNlcyk8L2E+PC9wPjxwIHN0eWxlPVwiZm9udDogMjBweCBJQk0gU2FucyBQbGV4LCBzYW5zLXNlcmlmOyBjb2xvcjogIzEwNzg5NjtcIj5Fbm91Z2ggdGFsaywgbGV0cyBzdGFydCBidWlsZGluZyBhbmQgdGhlIGJlc3Qgd2F5IHRvIHN0YXJ0IGlzIHRvIGNyZWF0ZSB5b3VyIGZpcnN0IHJlc291cmNlLCBhIGJyYW5kIG5ldyBhcHBsaWNhdGlvbiE8L3A+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTAgbXQtMVwiIG5nLXNob3c9XCJleHRlbmRlZFVzZXIuUGFyYW1zLk9uYm9hcmRpbmc9PVxcJ0FwcENyZWF0ZVxcJ1wiPjxkaXYgY2xhc3M9XCJjb2wgbXItMSBjYXJkXCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgcHktMVwiPjxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBjb2wtbGctOVwiPjxoNSBzdHlsZT1jb2xvcjojMTA3ODk2Oz5CdWlsZCBuZXcgYXBwbGljYXRpb248L2g1PjxpIGNsYXNzPVwiZmFzIGZhLWxhcHRvcC1jb2RlIGZhLTR4XCIgc3R5bGU9Y29sb3I6IzEwNzg5Njs+PC9pPjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTE1PjxwPklmIHlvdSB3YW50IHRvIGJ1aWxkIGEgbmV3IGFwcGxpY2F0aW9uIGNsaWNrIG9uIEJ1aWxkIG5ldyBhcHBsaWNhdGlvbiBidXR0b248L3A+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWluZm8gbWItMlwiIHVpLXNyZWY9XCJhcHAubmF2YmFyLnJlc291cmNlcy5uZXcoe1xcJ25hdmJhcl9pZFxcJzo5LFxcJ3NpZGVtZW51X2lkXFwnOjE5LFxcJ3Jlc291cmNlX3R5cGVcXCc6XFwnYXBwbGljYXRpb25cXCd9KVwiPkJ1aWxkIG5ldyBhcHBsaWNhdGlvbjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBteC0xIG15LWF1dG9cIj48aDMgc3R5bGU9Y29sb3I6IzEwNzg5Njs+T1I8L2gzPjwvZGl2PjxkaXYgbmctaWY9IWV4dGVuZGVkVXNlci5IaWRlU2VhcmNoUmVzb3VyY2VIb21lIGNsYXNzPVwiY29sIG1sLTEgY2FyZFwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wIHB5LTFcIj48ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgY29sLWxnLTlcIj48aDUgc3R5bGU9Y29sb3I6IzEwNzg5Njs+U2VhcmNoIGFwcGxpY2F0aW9uczwvaDU+PGkgY2xhc3M9XCJmYSBmYS1zZWFyY2ggZmEtNHhcIiBzdHlsZT1jb2xvcjojMTA3ODk2PjwvaT48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0xNT48cD5JZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggZXhpc3RpbmcgYXBwbGljYXRpb25zIGNsaWNrIG9uIFNlYXJjaCBhcHBsaWNhdGlvbnMgYnV0dG9uPC9wPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pbmZvIG1iLTJcIiB1aS1zcmVmPVwiYXBwLm5hdmJhci5yZXNvdXJjZXMubGlzdCh7XFwnbmF2YmFyX2lkXFwnOjksXFwnc2lkZW1lbnVfaWRcXCc6MTgsXFwncmVzb3VyY2VfdHlwZVxcJzpcXCdhcHBsaWNhdGlvblxcJ30pXCIgKVwiPlNlYXJjaCBhcHBsaWNhdGlvbnM8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBtdC0zXCIgbmctc2hvdz1cImV4dGVuZGVkVXNlci5QYXJhbXMuT25ib2FyZGluZz09XFwnQXBwU2V0dXBcXCdcIj48ZGl2IGNsYXNzPVwicC0yIGNvbFwiPjxkaXY+PGRpdiBjbGFzcz1cImNvbC0yNCB0ZXh0LWNlbnRlclwiPjxwIGNsYXNzIHN0eWxlPVwiZm9udDogMzZweCBJQk0gU2FucyBQbGV4LCBzYW5zLXNlcmlmOyBjb2xvcjogIzEwNzg5NjtcIj48Yj5IaSB7eyBjdXJyZW50VXNlckZpcnN0TmFtZX19IGFuZCB3ZWxjb21lIHRvIEthdGFseW8hPC9iPjwvcD48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wtYXV0byB0ZXh0LWNlbnRlclwiPjxpbWcgd2lkdGg9NTAlIHNyYz0vc3RhdGljL2ltZy9yZXNvdXJjZV9kdWRlLnBuZz48L2Rpdj48ZGl2IGNsYXNzPWNvbCBzdHlsZT1cImZvbnQ6IDE2cHggSUJNIFNhbnMgUGxleCwgc2Fucy1zZXJpZjsgY29sb3I6ICMxMDc4OTY7XCI+PHAgc3R5bGU9XCJmb250OiAyNHB4IEhlbHZldGljYSwgc2Fucy1zZXJpZjsgY29sb3I6ICMxMDc4OTY7XCI+WW91XFwndmUgc3VjY2Vzc2Z1bHkgY3JlYXRlZCB5b3VyIGZpcnN0IGFwcGxpY2F0aW9uITwvcD48cCBzdHlsZT1cImZvbnQ6IDIwcHggSUJNIFNhbnMgUGxleCwgc2Fucy1zZXJpZjsgY29sb3I6ICMxMDc4OTY7XCI+Q29udGludWUgYnVpbGRpbmcgPGIgY2xhc3M9bXgtMT57e2FwcGxpY2F0aW9uX25hbWV9fTwvYj4gYnkgc2V0dGluZyB1cCBtZW51cyBhbmQgdGFza3MgdGhhdCB3aWxsIGJlIHBhcnQgb2YgeW91ciBhcHBsaWNhdGlvbiE8L3A+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeSBtYi0yXCIgdWktc3JlZj1cImFwcC5uYXZiYXIucmVzb3VyY2VzLmFwcGxpY2F0aW9uLWRlZmluaXRpb24oe1xcJ25hdmJhcl9pZFxcJzo5LFxcJ3NpZGVtZW51X2lkXFwnOjAsXFwnaWRcXCc6ZXh0ZW5kZWRVc2VyLlBhcmFtcy5PbmJvYXJkaW5nQXBwSWR9KVwiPlNldHVwIGFwcGxpY2F0aW9uIDxiIGNsYXNzPW14LTE+e3thcHBsaWNhdGlvbl9uYW1lfX08L2I+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvcmVnaXN0ZXIuaHRtbCcsJzxkaXYgY2xhc3M9Y29sLWxnLTI0PjxzdHlsZT5cXHJcXG4gICAgICAgICoge1xcclxcbiAgICAgICAgICAgIG1hcmdpbjogMDtcXHJcXG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xcclxcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjtcXHJcXG4gICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgLm1haW4tY29udGFpbmVyIHtcXHJcXG4gICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xcclxcbiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDI0LCAxZnIpO1xcclxcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICBoMSB7XFxyXFxuICAgICAgICAgICAgZm9udC1zaXplOiA2NHB4O1xcclxcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xcclxcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG4gICAgICAgICAgICBjb2xvcjogIzRDNEU1QztcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG5cXHJcXG4gICAgLm1zZy1ncmlkLWljb25cXHJcXG4gICAge1xcclxcbiAgICAgICAgZ3JpZC1jb2x1bW46IGF1dG8gLyBzcGFuIDI7XFxyXFxuICAgICAgICBwYWRkaW5nOiA2cHg7XFxyXFxuICAgICAgICBjb2xvcjogI2ZmZmZmZjtcXHJcXG4gICAgfVxcclxcblxcdFxcclxcblxcdFxcclxcbiAgICAgICAgaDIge1xcclxcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjRweDtcXHJcXG4gICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xcclxcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xcclxcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XFxyXFxuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xcclxcbiAgICAgICAgICAgIGNvbG9yOiAjNEM0RTVDO1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgI2xlZnQge1xcclxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcXHJcXG4gICAgICAgICAgICB0b3A6IDA7XFxyXFxuICAgICAgICAgICAgbGVmdDogMDtcXHJcXG4gICAgICAgICAgICB3aWR0aDogNjAlO1xcclxcbiAgICAgICAgICAgIHotaW5kZXg6IC0xO1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgI3JpZ2h0IHtcXHJcXG4gICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XFxyXFxuICAgICAgICAgICAgYm90dG9tOiAwO1xcclxcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xcclxcbiAgICAgICAgICAgIHdpZHRoOiA2MCU7XFxyXFxuICAgICAgICAgICAgei1pbmRleDogLTE7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAuY2xzLWZvcm0ge1xcclxcbiAgICAgICAgICAgIGdyaWQtYXJlYTogMSAvIDYgLyAyIC8gMjA7XFxyXFxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0U4RjZGODtcXHJcXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcclxcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxyXFxuICAgICAgICAgICAgcGFkZGluZzogNDhweCAyNHB4O1xcclxcbiAgICAgICAgICAgIGdhcDogNDhweDtcXHJcXG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXHJcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcclxcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDMycHg7XFxyXFxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDMyMHB4O1xcclxcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwdmg7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAuZm9ybS1jb250cm9sIHtcXHJcXG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcXHJcXG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcXHJcXG4gICAgICAgICAgICBwYWRkaW5nOiAwLjM3NXJlbSAwLjc1cmVtO1xcclxcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcXHJcXG4gICAgICAgICAgICAvKmZvbnQtd2VpZ2h0OiAkaW5wdXQtZm9udC13ZWlnaHQ7Ki9cXHJcXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS41O1xcclxcbiAgICAgICAgICAgIGNvbG9yOiAjMjYzMTREO1xcclxcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XFxyXFxuICAgICAgICAgICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcXHJcXG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjRTdFOUVDO1xcclxcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XFxyXFxuICAgICAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcXHJcXG4gICAgICAgICAgICAuZm9ybS1jb250cm9sIHtcXHJcXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAuZm9ybS1jb250cm9sOjotbXMtZXhwYW5kIHtcXHJcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXHJcXG4gICAgICAgICAgICBib3JkZXI6IDA7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAuZm9ybS1jb250cm9sOmZvY3VzIHtcXHJcXG4gICAgICAgICAgICBjb2xvcjogcmdiYSgxNCwgMjYsIDU3LCAwLjkpO1xcclxcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XFxyXFxuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjOWViNmYzO1xcclxcbiAgICAgICAgICAgIG91dGxpbmU6IDA7XFxyXFxuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4xNXJlbSByZ2JhKDQ0LCA5NiwgMjI5LCAwLjI1KTtcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIC5mb3JtLWNvbnRyb2w6OnBsYWNlaG9sZGVyIHtcXHJcXG4gICAgICAgICAgICBjb2xvcjogI0I3QkFDNDtcXHJcXG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgLmZvcm0tY29udHJvbDpkaXNhYmxlZCxcXHJcXG4gICAgICAgIC5mb3JtLWNvbnRyb2xbcmVhZG9ubHldIHtcXHJcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGM0Y1O1xcclxcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICBkaXYuaW5wdXQge1xcclxcbiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAuYnRuLW9uYm9hcmRpbmcge1xcclxcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XFxyXFxuICAgICAgICAgICAgZ2FwOiA4cHg7XFxyXFxuICAgICAgICAgICAgcGFkZGluZzogOHB4IDIwcHg7XFxyXFxuICAgICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xcclxcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcXHJcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMTdBMkI4O1xcclxcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMxN0EyQjg7XFxyXFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMy42cHg7XFxyXFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIC5idG4tb25ib2FyZGluZzpob3ZlciB7XFxyXFxuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgLmJ0bi1vbmJvYXJkaW5nPmkge1xcclxcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIGRpdi5pbm5lci1mb3JtIHtcXHJcXG4gICAgICAgICAgICB3aWR0aDogNjAlO1xcclxcbiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XFxyXFxuICAgICAgICAgICAgZ2FwOiAyNHB4O1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgLmltZy1wYWphamFjIHtcXHJcXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgICAgICAgICAgd2lkdGg6IDMyMHB4O1xcclxcbiAgICAgICAgICAgIHJpZ2h0OiAtMTAwcHg7XFxyXFxuICAgICAgICAgICAgdG9wOiAtMTkwcHg7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICBkaXYuaGVhZGVycyB7XFxyXFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcXHJcXG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcclxcbiAgICAgICAgICAgIGdhcDogMTJweDtcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxOTIwcHgpIHtcXHJcXG4gICAgICAgICAgICBoMSB7XFxyXFxuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogNTJweDtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAgICAgaDIge1xcclxcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDIwcHg7XFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgICAgIC5jbHMtZm9ybSB7XFxyXFxuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDE2MHB4O1xcclxcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xcclxcbiAgICAgICAgICAgICAgICBnYXA6IDI0cHg7XFxyXFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDQwcHggMjRweDtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAgICAgZGl2LmlubmVyLWZvcm0ge1xcclxcbiAgICAgICAgICAgICAgICBnYXA6IDE2cHg7XFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgICAgIC5pbWctcGFqYWphYyB7XFxyXFxuICAgICAgICAgICAgICAgIHdpZHRoOiAyMDBweDtcXHJcXG4gICAgICAgICAgICAgICAgcmlnaHQ6IC03MHB4O1xcclxcbiAgICAgICAgICAgICAgICB0b3A6IC0xMTZweDtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogMTI4MHB4KSB7XFxyXFxuICAgICAgICAgICAgaDEge1xcclxcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDQwcHg7XFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgICAgIGgyIHtcXHJcXG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xcclxcbiAgICAgICAgICAgIH1cXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA5OTFweCkge1xcclxcbiAgICAgICAgICAgIC5jbHMtZm9ybSB7XFxyXFxuICAgICAgICAgICAgICAgIGdyaWQtYXJlYTogMSAvIDMgLyAyIC8gMjNcXHJcXG4gICAgICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAgICAgaDEge1xcclxcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDMycHg7XFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgICAgIGgyIHtcXHJcXG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xcclxcbiAgICAgICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICAgICAjbGVmdCB7XFxyXFxuICAgICAgICAgICAgICAgIHdpZHRoOiA3MCU7XFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgICAgICNyaWdodCB7XFxyXFxuICAgICAgICAgICAgICAgIHdpZHRoOiA3MCU7XFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgICAgIC5pbWctcGFqYWphYyB7XFxyXFxuICAgICAgICAgICAgICAgIHdpZHRoOiAxODBweDtcXHJcXG4gICAgICAgICAgICAgICAgcmlnaHQ6IC01NXB4O1xcclxcbiAgICAgICAgICAgICAgICB0b3A6IC0xMDhweDtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAgICAgZGl2LmlubmVyLWZvcm0ge1xcclxcbiAgICAgICAgICAgICAgICB3aWR0aDogNzAlO1xcclxcbiAgICAgICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICAgICAuYnRuLW9uYm9hcmRpbmcge1xcclxcbiAgICAgICAgICAgICAgICBnYXA6IDhweDtcXHJcXG4gICAgICAgICAgICAgICAgcGFkZGluZzogOHB4IDE2cHg7XFxyXFxuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAgICAgLmJ0bi1vbmJvYXJkaW5nPmkge1xcclxcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XFxyXFxuICAgICAgICAgICAgfVxcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDcyMHB4KSB7XFxyXFxuICAgICAgICAgICAgLmltZy1wYWphamFjIHtcXHJcXG4gICAgICAgICAgICAgICAgd2lkdGg6IDE0MHB4O1xcclxcbiAgICAgICAgICAgICAgICByaWdodDogLTQwcHg7XFxyXFxuICAgICAgICAgICAgICAgIHRvcDogLTgwcHg7XFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgICAgIC5jbHMtZm9ybSB7XFxyXFxuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDE0MHB4O1xcclxcbiAgICAgICAgICAgIH1cXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1MDBweCkge1xcclxcbiAgICAgICAgICAgIC5jbHMtZm9ybSB7XFxyXFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDY0cHggMTZweCAxNnB4IDE2cHg7XFxyXFxuICAgICAgICAgICAgICAgIGdyaWQtYXJlYTogMSAvIDIgLyAyIC8gMjRcXHJcXG4gICAgICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAgICAgaDEge1xcclxcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDI4cHg7XFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgICAgIC5jbHMtZm9ybSB7XFxyXFxuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDEyMHB4O1xcclxcbiAgICAgICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICAgICAuaW1nLXBhamFqYWMge1xcclxcbiAgICAgICAgICAgICAgICByaWdodDogLTEwcHg7XFxyXFxuICAgICAgICAgICAgICAgIHRvcDogLTgwcHg7XFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgICAgICNsZWZ0IHtcXHJcXG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgICAgICNyaWdodCB7XFxyXFxuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xcclxcbiAgICAgICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICAgICBkaXYuaW5uZXItZm9ybSB7XFxyXFxuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xcclxcbiAgICAgICAgICAgIH1cXHJcXG4gICAgICAgIH1cXHJcXG48L3N0eWxlPjxkaXYgY2xhc3M9bWFpbi1ib2R5PjxzdmcgaWQ9bGVmdCB2aWV3Ym94PVwiMCAwIDEzNDkgODAyXCIgZmlsbD1ub25lIHhtbG5zPWh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnPjxwYXRoIGQ9XCJNNzgwIDExOUMxMDI1Ljk4IDEyNi4yMzQgMTM3NC4xMSA0NS45MDgxIDEzNDcuNDUgMC4wMDAxMjE5NDRMMC4wMDMyNDM5NCAwLjAwMDE4NzI1MkwwLjAwMzE3MzgzIDgwMkMzOC4yNjMxIDgwMiA4NS4wNDUxIDY4OS4xODUgMTI0LjAwMSAzODhDMTYyLjk1NiA4Ni44MTU0IDQ3Mi41MyAxMDkuOTU4IDc4MCAxMTlaXCIgZmlsbD0jMTdBMkI4IGZpbGwtb3BhY2l0eT0wLjE1PjwvcGF0aD48cGF0aCBkPVwiTTU3OS45OTQgOTBDNzU2Ljc5NCA5NS4yIDk4Ny42NjQgMzIuOTk5OCA5NjguNDk4IC0wLjAwMDE4MzIwM0wtMC4wMDI2OTYxOCAtMC4wMDAxNDU4MDJMLTAuMDAyNjg1NTUgNTc2LjVDMjcuNDk3MyA1NzYuNSAxNTQuOTk4IDUzMy40OTkgMTgyLjk5OCAzMTYuOTk5QzIxMC45OTggMTAwLjQ5OSAzNTguOTk0IDgzLjUgNTc5Ljk5NCA5MFpcIiBmaWxsPSMxN0EyQjggZmlsbC1vcGFjaXR5PTAuMz48L3BhdGg+PHBhdGggZD1cIk0xMDEgMjcyLjVDMTAxIDQ2MC45IDQ5LjE2NjcgNTkwLjgzMyAwIDYzN1YwSDg3NEM4NTIuODMzIDI5Ljk5OTkgNjk1LjUgMTMzLjUgNTIzIDEzMy41QzM1MC41IDEzMy41IDEwMSAzNyAxMDEgMjcyLjVaXCIgZmlsbD0jMTdBMkI4IGZpbGwtb3BhY2l0eT0wLjM+PC9wYXRoPjwvc3ZnPjxkaXYgY2xhc3M9bWFpbi1jb250YWluZXI+PGRpdiBuZy1pZj1cImNoZWNraW5nU2lnbnVwIHx8ICFzaWdudXBPS1wiIGNsYXNzPWNscy1mb3JtPjxpbWcgY2xhc3M9aW1nLXBhamFqYWMgc3JjPS9pbWcvb29wcy5wbmcgYWx0PjxkaXYgY2xhc3MgbmctaWY9XCJzaWdudXBDaGVja0RvbmUgJiYgIXNpZ251cE9LXCI+PGRpdiBjbGFzcz10ZXh0LWNlbnRlcj48aW1nIHNyYz0vaW1nL0thdGFseW9fZmluYWxfYXF1YS5wbmcgc3R5bGU9XCJ3aWR0aDogY2FsYyg2MHB4ICsgM3Z3KTsgbWFyZ2luLXRvcDoyMHB4O1wiPjxkaXYgc3R5bGU9XCJmb250LWZhbWlseTogUm9ib3RvOyBmb250LXNpemU6IDQwcHg7IGZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjojMTlhM2I4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi10b3A6IDNyZW07XCI+T29vcHMhPC9kaXY+PGRpdiBuZy1pZj1lcnJvck1zZyBjbGFzcz1jb2wtbGctMjQ+PGRpdiBjbGFzcz1cIm15LTIgdGV4dC1jZW50ZXIgdGV4dC1kYW5nZXJcIj48aDY+e3tlcnJvck1zZ319PC9oNj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXB0LTU+PGg2PjxhIHVpLXNyZWY9YXBwLnNpZ251cD5TaWduIHVwPC9hPiBmb3IgS2F0YWx5bzwvaDY+PGg2PkdvIHRvIDxhIHVpLXNyZWY9YXBwLmxvZ2luPmxvZ2luIHBhZ2U8L2E+PC9oNj48aDY+VmlzaXQgb3VyIDxhIGhyZWY9aHR0cHM6Ly93d3cua2F0YWx5by5jb20+d2Vic2l0ZTwvYT48L2g2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9Y2hlY2tpbmdTaWdudXAgY2xhc3M9dGV4dC1jZW50ZXI+PGRpdiBjbGFzcz1cImxvYWRlciBsb2FkZXItbGdcIj48L2Rpdj48ZGl2IGNsYXNzPW15LTI+PGRpdiBjbGFzcz1cInBhbmVsLXRpdGxlIHB4LTFcIiBzdHlsZT12ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y29sb3I6IzM0OThkYj48c3BhbiBjbGFzcz1oNT5DaGVja2luZyByZXF1ZXN0Li4uPC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pjxmb3JtIG5nLWlmPXNpZ251cE9LIG5nLXN1Ym1pdD1mbl9yZWdpc3Rlcihmb3JtLiR2YWxpZCkgbmFtZT1mb3JtIGNsYXNzPWNscy1mb3JtIG5vdmFsaWRhdGU+PGltZyBjbGFzcz1pbWctcGFqYWphYyBzcmM9L2ltZy9yZWdpc3Rlcl9lZ2dtYW5fc2l0dGluZy5wbmcgYWx0PjxkaXYgY2xhc3M9aGVhZGVycz48aDE+V2VsY29tZSBvbmJvYXJkIEthdGFseW8hPC9oMT48aDI+UGxlYXNlIGVudGVyIGJhc2ljIGluZm8gYW5kIHlvdVxcJ2xsIGJlIHVwIGFuZCBydW5uaW5nIGluIG5vIHRpbWUhPC9oMj48L2Rpdj48ZGl2IGNsYXNzPWlubmVyLWZvcm0+PGRpdiBuZy1pZj1cInJlZ2lzdGVyLm9yZ2FuaXNhdGlvbl90eXBlIT1cXCdQZXJzb25hbFxcJ1wiIGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGZvcm0ub3JnYW5pc2F0aW9uX25hbWUuJHRvdWNoZWQgfHwgZm9ybS5vcmdhbmlzYXRpb25fbmFtZS4kZGlydHkgfHwgZm9ybS4kc3VibWl0dGVkKSAmJiBmb3JtLm9yZ2FuaXNhdGlvbl9uYW1lLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9XCJtYi0xIGJvbGRcIiBmb3I9b3JnYW5pc2F0aW9uX25hbWU+T3JnYW5pc2F0aW9uIG5hbWU8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IG5nLXJlcXVpcmVkPVwicmVnaXN0ZXIub3JnYW5pc2F0aW9uX3R5cGUhPVxcJ1BlcnNvbmFsXFwnXCIgbmctbW9kZWw9cmVnaXN0ZXIub3JnYW5pc2F0aW9uX25hbWUgaWQ9b3JnYW5pc2F0aW9uX25hbWUgbmctY2xhc3M9XCJ7IFxcJ2JvcmRlci1kYW5nZXIgaXMtaW52YWxpZFxcJyA6IChmb3JtLm9yZ2FuaXNhdGlvbl9uYW1lLiR0b3VjaGVkIHx8IGZvcm0ub3JnYW5pc2F0aW9uX25hbWUuJGRpcnR5IHx8IGZvcm0uJHN1Ym1pdHRlZCkgJiYgZm9ybS5vcmdhbmlzYXRpb25fbmFtZS4kZXJyb3IucmVxdWlyZWQgfVwiIG5nLWRpc2FibGVkPWRhdGFMb2FkaW5nIGFyaWEtbGFiZWw9b3JnYW5pc2F0aW9uX25hbWUgY2xhc3M9Zm9ybS1jb250cm9sIG5hbWU9b3JnYW5pc2F0aW9uX25hbWUgcGxhY2Vob2xkZXI9XCJPcmdhbmlzYXRpb24gbmFtZVwiPiA8c3BhbiBuZy1zaG93PVwiKGZvcm0ub3JnYW5pc2F0aW9uX25hbWUuJHRvdWNoZWQgfHwgZm9ybS5vcmdhbmlzYXRpb25fbmFtZS4kZGlydHkgfHwgZm9ybS4kc3VibWl0dGVkKSAmJiBmb3JtLm9yZ2FuaXNhdGlvbl9uYW1lLiRlcnJvci5yZXF1aXJlZFwiIGNsYXNzPVwidGV4dC1kYW5nZXIgc21hbGxcIj5PcmdhbmlzYXRpb24gbmFtZSBpcyByZXF1aXJlZDwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGZvcm0uZm5hbWUuJHRvdWNoZWQgfHwgZm9ybS5mbmFtZS4kZGlydHkgfHwgZm9ybS4kc3VibWl0dGVkKSAmJiBmb3JtLmZuYW1lLiRlcnJvci5yZXF1aXJlZCB9XCI+PGxhYmVsIGNsYXNzPVwibWItMSBib2xkXCIgZm9yPWZuYW1lPkZpcnN0IG5hbWU8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPXJlZ2lzdGVyLmZuYW1lIG5nLWNsYXNzPVwieyBcXCdpcy1pbnZhbGlkXFwnIDogKGZvcm0uZm5hbWUuJHRvdWNoZWQgfHwgZm9ybS5mbmFtZS4kZGlydHkgfHwgZm9ybS4kc3VibWl0dGVkKSAmJiBmb3JtLmZuYW1lLiRlcnJvci5yZXF1aXJlZCB9XCIgbmctcmVxdWlyZWQ9dHJ1ZSBpZD1mbmFtZSBuZy1kaXNhYmxlZD1kYXRhTG9hZGluZyBhcmlhLWxhYmVsPWZuYW1lIGNsYXNzPWZvcm0tY29udHJvbCBuYW1lPWZuYW1lIHBsYWNlaG9sZGVyPVwiRmlyc3QgbmFtZVwiPiA8c3BhbiBuZy1zaG93PVwiKGZvcm0uZm5hbWUuJHRvdWNoZWQgfHwgZm9ybS5mbmFtZS4kZGlydHkgfHwgZm9ybS4kc3VibWl0dGVkKSAmJiBmb3JtLmZuYW1lLiRlcnJvci5yZXF1aXJlZFwiIGNsYXNzPVwidGV4dC1kYW5nZXIgc21hbGxcIj5GaXJzdCBuYW1lIGlzIHJlcXVpcmVkPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiAoZm9ybS5sbmFtZS4kdG91Y2hlZCB8fCBmb3JtLmxuYW1lLiRkaXJ0eSB8fCBmb3JtLiRzdWJtaXR0ZWQpICYmIGZvcm0ubG5hbWUuJGVycm9yLnJlcXVpcmVkIH1cIj48bGFiZWwgY2xhc3M9XCJtYi0xIGJvbGRcIiBmb3I9bG5hbWU+TGFzdCBuYW1lPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1yZWdpc3Rlci5sbmFtZSBpZD1sbmFtZSBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZFxcJyA6IChmb3JtLmxuYW1lLiR0b3VjaGVkIHx8IGZvcm0ubG5hbWUuJGRpcnR5IHx8IGZvcm0uJHN1Ym1pdHRlZCkgJiYgZm9ybS5sbmFtZS4kZXJyb3IucmVxdWlyZWQgfVwiIG5nLXJlcXVpcmVkPXRydWUgbmctZGlzYWJsZWQ9ZGF0YUxvYWRpbmcgYXJpYS1sYWJlbD1sbmFtZSBjbGFzcz1mb3JtLWNvbnRyb2wgbmFtZT1sbmFtZSBwbGFjZWhvbGRlcj1cIkxhc3QgbmFtZVwiPiA8c3BhbiBuZy1zaG93PVwiKGZvcm0ubG5hbWUuJHRvdWNoZWQgfHwgZm9ybS5sbmFtZS4kZGlydHkgfHwgZm9ybS4kc3VibWl0dGVkKSAmJiBmb3JtLmxuYW1lLiRpbnZhbGlkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlciBzbWFsbFwiPkxhc3QgbmFtZSBpcyByZXF1aXJlZDwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGZvcm0udXNlcm5hbWUuJHRvdWNoZWQgfHwgZm9ybS51c2VybmFtZS4kZGlydHkgfHwgZm9ybS4kc3VibWl0dGVkKSAmJiBmb3JtLnVzZXJuYW1lLiRlcnJvci5yZXF1aXJlZCB9XCI+PGxhYmVsIGNsYXNzPVwibWItMSBib2xkXCIgZm9yPXVzZXJuYW1lPlVzZXJuYW1lPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBuZy1yZXF1aXJlZD10cnVlIG5nLW1vZGVsPXJlZ2lzdGVyLnVzZXJuYW1lIGlkPXVzZXJuYW1lIG5nLWNsYXNzPVwieyBcXCdpcy1pbnZhbGlkXFwnIDogKGZvcm0udXNlcm5hbWUuJHRvdWNoZWQgfHwgZm9ybS51c2VybmFtZS4kZGlydHkgfHwgZm9ybS4kc3VibWl0dGVkKSAmJiBmb3JtLnVzZXJuYW1lLiRlcnJvci5yZXF1aXJlZCB9XCIgbmctZGlzYWJsZWQ9ZGF0YUxvYWRpbmcgYXJpYS1sYWJlbD1Vc2VybmFtZSBhcmlhLWRlc2NyaWJlZGJ5PWJhc2ljLWFkZG9uMSBjbGFzcz1mb3JtLWNvbnRyb2wgbmFtZT11c2VybmFtZSBwbGFjZWhvbGRlcj1Vc2VybmFtZT4gPHNwYW4gbmctc2hvdz1cIihmb3JtLnVzZXJuYW1lLiR0b3VjaGVkIHx8IGZvcm0udXNlcm5hbWUuJGRpcnR5IHx8IGZvcm0uJHN1Ym1pdHRlZCkgJiYgZm9ybS51c2VybmFtZS4kaW52YWxpZFwiIGNsYXNzPVwidGV4dC1kYW5nZXIgc21hbGxcIj5Vc2VybmFtZSBpcyByZXF1aXJlZDwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXA+PGxhYmVsIGNsYXNzPVwibWItMSBib2xkXCIgbmctY2xhc3M9XCJ7IFxcJ3RleHQtc3VjY2Vzc1xcJzooZm9ybS5wYXNzd29yZC4kZGlydHkgfHwgZm9ybS5wYXNzd29yZC4kdG91Y2hlZCB8fCBmb3JtLiRzdWJtaXR0ZWQpICYmIGZvcm0ucGFzc3dvcmQuJHZhbGlkLCBcXCd0ZXh0LWRhbmdlclxcJzogKGZvcm0ucGFzc3dvcmQuJGRpcnR5IHx8IGZvcm0ucGFzc3dvcmQuJHRvdWNoZWQgfHwgZm9ybS4kc3VibWl0dGVkKSAmJiBmb3JtLnBhc3N3b3JkLiRpbnZhbGlkfVwiIGZvcj1wYXNzd29yZD5QYXNzd29yZDwvbGFiZWw+IDxpIG5nLWlmPVwiKGZvcm0ucGFzc3dvcmQuJGRpcnR5IHx8IGZvcm0ucGFzc3dvcmQuJHRvdWNoZWQgfHwgZm9ybS4kc3VibWl0dGVkKSAmJiBmb3JtLnBhc3N3b3JkLiR2YWxpZFwiIGNsYXNzPVwiZmEgZmEtY2hlY2sgdGV4dC1zdWNjZXNzXCI+PC9pPiA8aW5wdXQgdHlwZT1wYXNzd29yZCBuZy1yZXF1aXJlZD10cnVlIG5nLW1vZGVsLW9wdGlvbnM9XCJ7IGRlYm91bmNlOiAxMDAwIH1cIiBuZy1jaGFuZ2U9Y2hlY2tQYXNzd29yZChmb3JtLnBhc3N3b3JkKSBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZFxcJyA6IChmb3JtLnBhc3N3b3JkLiR0b3VjaGVkIHx8IGZvcm0ucGFzc3dvcmQuJGRpcnR5IHx8IGZvcm0uJHN1Ym1pdHRlZCkgJiYgZm9ybS5wYXNzd29yZC4kaW52YWxpZH1cIiBuZy1tb2RlbD1yZWdpc3Rlci5wYXNzd29yZCBpZD1wYXNzd29yZCBuZy1kaXNhYmxlZD1kYXRhTG9hZGluZyBhcmlhLWxhYmVsPVBhc3N3b3JkIGNsYXNzPWZvcm0tY29udHJvbCBuYW1lPXBhc3N3b3JkIHBsYWNlaG9sZGVyPVBhc3N3b3JkPiA8c3BhbiBuZy1zaG93PVwiKGZvcm0ucGFzc3dvcmQuJGRpcnR5IHx8IGZvcm0ucGFzc3dvcmQuJHRvdWNoZWQgfHwgZm9ybS4kc3VibWl0dGVkKSAmJiBmb3JtLnBhc3N3b3JkLiRpbnZhbGlkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlciBzbWFsbFwiPlBsZWFzZSBlbnRlciBzdHJvbmcgcGFzc3dvcmQgKE1pbmltdW0gZWlnaHQgY2hhcmFjdGVycywgYXQgbGVhc3Qgb25lIHVwcGVyY2FzZSBsZXR0ZXIsIG9uZSBsb3dlcmNhc2UgbGV0dGVyLCBvbmUgbnVtYmVyIGFuZCBvbmUgc3BlY2lhbCBjaGFyYWN0ZXIpPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cD48bGFiZWwgY2xhc3M9XCJtYi0xIGJvbGRcIiBuZy1jbGFzcz1cInsgXFwndGV4dC1zdWNjZXNzXFwnOihmb3JtLmNvbmZpcm1QYXNzd29yZC4kZGlydHkgfHwgZm9ybS5jb25maXJtUGFzc3dvcmQuJHRvdWNoZWQgfHwgZm9ybS4kc3VibWl0dGVkKSAmJiBmb3JtLnBhc3N3b3JkLiR2YWxpZCAmJiByZWdpc3Rlci5wYXNzd29yZD09cmVnaXN0ZXIuY29uZmlybVBhc3N3b3JkICYmIHJlZ2lzdGVyLmNvbmZpcm1QYXNzd29yZCE9XFwnXFwnICYmIHJlZ2lzdGVyLmNvbmZpcm1QYXNzd29yZCE9dW5kZWZpbmVkLCBcXCd0ZXh0LWRhbmdlclxcJzogKGZvcm0uY29uZmlybVBhc3N3b3JkLiRkaXJ0eSB8fCBmb3JtLmNvbmZpcm1QYXNzd29yZC4kdG91Y2hlZCkgJiYgZm9ybS5wYXNzd29yZC4kdmFsaWQgJiYgcmVnaXN0ZXIucGFzc3dvcmQhPXJlZ2lzdGVyLmNvbmZpcm1QYXNzd29yZCAmJiBjb25maXJtUGFzc3dvcmQhPVxcJ1xcJ31cIiBmb3I9Y29uZmlybVBhc3N3b3JkPkNvbmZpcm0gcGFzc3dvcmQ8L2xhYmVsPiA8aSBuZy1pZj1cIihmb3JtLmNvbmZpcm1QYXNzd29yZC4kZGlydHkgfHwgZm9ybS5jb25maXJtUGFzc3dvcmQuJHRvdWNoZWQgfHwgZm9ybS4kc3VibWl0dGVkKSAmJiBmb3JtLnBhc3N3b3JkLiR2YWxpZCAmJiByZWdpc3Rlci5wYXNzd29yZD09cmVnaXN0ZXIuY29uZmlybVBhc3N3b3JkICYmIHJlZ2lzdGVyLmNvbmZpcm1QYXNzd29yZCE9XFwnXFwnICYmIHJlZ2lzdGVyLmNvbmZpcm1QYXNzd29yZCE9dW5kZWZpbmVkXCIgY2xhc3M9XCJmYSBmYS1jaGVjayB0ZXh0LXN1Y2Nlc3NcIj48L2k+IDxpbnB1dCB0eXBlPXBhc3N3b3JkIG5nLXJlcXVpcmVkPXRydWUgbmctbW9kZWw9cmVnaXN0ZXIuY29uZmlybVBhc3N3b3JkIGlkPWNvbmZpcm1QYXNzd29yZCBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZFxcJyA6IChmb3JtLmNvbmZpcm1QYXNzd29yZC4kdG91Y2hlZCB8fCBmb3JtLmNvbmZpcm1QYXNzd29yZC4kZGlydHkgfHwgZm9ybS4kc3VibWl0dGVkKSAmJiBmb3JtLnBhc3N3b3JkLiR2YWxpZCAmJiBmb3JtLmNvbmZpcm1QYXNzd29yZC4kaW52YWxpZH1cIiBuZy1kaXNhYmxlZD1kYXRhTG9hZGluZyBjbGFzcz1mb3JtLWNvbnRyb2wgbmFtZT1jb25maXJtUGFzc3dvcmQgcGxhY2Vob2xkZXI9XCJDb25maXJtIHBhc3N3b3JkXCI+PHNwYW4gbmctc2hvdz1cIihmb3JtLmNvbmZpcm1QYXNzd29yZC4kZGlydHkgfHwgZm9ybS5jb25maXJtUGFzc3dvcmQuJHRvdWNoZWQpICYmIGZvcm0ucGFzc3dvcmQuJHZhbGlkICYmIHJlZ2lzdGVyLnBhc3N3b3JkIT1yZWdpc3Rlci5jb25maXJtUGFzc3dvcmQgJiYgcmVnaXN0ZXIuY29uZmlybVBhc3N3b3JkIT1cXCdcXCcgJiYgcmVnaXN0ZXIuY29uZmlybVBhc3N3b3JkIT11bmRlZmluZWRcIiBjbGFzcz1cInRleHQtZGFuZ2VyIHNtYWxsXCI+UGFzc3dvcmRzIGRvblxcJ3QgbWF0Y2g8L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImVycm9yTXNnICYmIHNpZ251cENoZWNrRG9uZSAmJiBzaWdudXBPSyAmJiAhZGF0YUxvYWRpbmdcIiBjbGFzcz48ZGl2IGNsYXNzPVwibXktMiB0ZXh0LWNlbnRlciB0ZXh0LWRhbmdlclwiPjxoNT48aSBjbGFzcz1cImZhcyBmYS1leGNsYW1hdGlvbi10cmlhbmdsZVwiPjwvaT4gPGI+e3tlcnJvck1zZ319PC9iPjwvaDU+PC9kaXY+PC9kaXY+PGJ1dHRvbiBuZy1pZj0hZGF0YUxvYWRpbmcgdHlwZT1zdWJtaXQgY2xhc3M9YnRuLW9uYm9hcmRpbmc+PGkgY2xhc3M9XCJmYSBmYS1oYW5kc2hha2VcIj48L2k+IENvbXBsZXRlIG9uYm9hcmRpbmc8L2J1dHRvbj48ZGl2IG5nLWlmPWRhdGFMb2FkaW5nIGNsYXNzPVwibXktNCB0ZXh0LWNlbnRlclwiPjxkaXYgY2xhc3M9bG9hZGVyPjwvZGl2PjxiIGNsYXNzPVwicGFuZWwtdGl0bGUgbWwtMlwiIHN0eWxlPXZlcnRpY2FsLWFsaWduOm1pZGRsZTtjb2xvcjojMzQ5OGRiPlByb2Nlc3Npbmcgb25ib2FyZGluZy4uLjwvYj48L2Rpdj48L2Zvcm0+PC9kaXY+PHN2ZyBpZD1yaWdodCB2aWV3Ym94PVwiMCAwIDE0MDggNjEzXCIgZmlsbD1ub25lIHhtbG5zPWh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnPjxwYXRoIGQ9XCJNNjMxLjUgNDU2QzQ1NC43IDQ1MC44IDQ0OC44MzQgNTgwIDQ2OC4wMDEgNjEzSDE0MDhMMTQwOCAxMTRDMTM4MC41IDExNCAxMjgyIDE1Ny41IDEyNTQgMzc0QzEyMjYgNTkwLjUgODUyLjUgNDYyLjUgNjMxLjUgNDU2WlwiIGZpbGw9IzE3QTJCOCBmaWxsLW9wYWNpdHk9MC4zPjwvcGF0aD48cGF0aCBkPVwiTTU0NyA0NzkuNUMxMTAuNTYgNDcyLjY5OSAtMy44OTM2MSA1NTIuNDY4IDEuMDAwMzcgNjEzTDE0MDggNjEyLjk5OVYxLjQ5OTNDMTI5MC41NCAtMTYuNzg5MiAxMjI4IDIwMi4wMDEgMTIwNyAzMzQuNDk5QzExODYgNDY2Ljk5OCAxMDkyLjU1IDQ4OCA1NDcgNDc5LjVaXCIgZmlsbD0jMTdBMkI4IGZpbGwtb3BhY2l0eT0wLjE1PjwvcGF0aD48cGF0aCBkPVwiTTcyMS41IDUwMUM0MzkuMSA0OTYuNiAzNzQuODM0IDU3My44MzQgMzc4IDYxM0wxNDA4IDYxM1YxOTlDMTMzMiAxODcuMTY2IDExODAgMTkwLjcgMTE4MCAyOTkuNUMxMTgwIDQzNS41IDEwNzQuNSA1MDYuNSA3MjEuNSA1MDFaXCIgZmlsbD0jMTdBMkI4IGZpbGwtb3BhY2l0eT0wLjM+PC9wYXRoPjxwYXRoIGQ9XCJNNzIxLjUgNTAxQzQzOS4xIDQ5Ni42IDM3NC44MzQgNTczLjgzNCAzNzggNjEzTDE0MDggNjEzVjE5OUMxMzMyIDE4Ny4xNjYgMTE4MCAxOTAuNyAxMTgwIDI5OS41QzExODAgNDM1LjUgMTA3NC41IDUwNi41IDcyMS41IDUwMVpcIiBmaWxsPSMxN0EyQjggZmlsbC1vcGFjaXR5PTAuMz48L3BhdGg+PC9zdmc+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvcmVnaXN0ZXJfb2xkLmh0bWwnLCc8ZGl2IGNsYXNzPVwiY29sLWxnLTE0IG0tYXV0b1wiPjxmb3JtIG5nLXN1Ym1pdD1mbl9yZWdpc3Rlcihmb3JtLiR2YWxpZCkgbmFtZT1mb3JtIGNsYXNzPWZvcm0taG9yaXpvbnRhbCBub3ZhbGlkYXRlPjxkaXYgY2xhc3M9XCJjYXJkIG0tNFwiPjxkaXYgY2xhc3MgbmctaWY9XCJzaWdudXBDaGVja0RvbmUgJiYgIXNpZ251cE9LXCI+PGRpdiBjbGFzcz10ZXh0LWNlbnRlcj48aW1nIHNyYz0vaW1nL0thdGFseW9fZmluYWxfYXF1YS5wbmcgc3R5bGU9XCJ3aWR0aDogY2FsYyg2MHB4ICsgM3Z3KTsgbWFyZ2luLXRvcDoyMHB4O1wiPjxkaXYgc3R5bGU9XCJmb250LWZhbWlseTogUm9ib3RvOyBmb250LXNpemU6IDQwcHg7IGZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjojMTlhM2I4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi10b3A6IDNyZW07XCI+T29vcHMhPC9kaXY+PGRpdiBuZy1pZj1lcnJvck1zZyBjbGFzcz1jb2wtbGctMjQ+PGRpdiBjbGFzcz1cIm15LTIgdGV4dC1jZW50ZXIgdGV4dC1kYW5nZXJcIj48aDY+e3tlcnJvck1zZ319PC9oNj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXB0LTU+PGg2PjxhIHVpLXNyZWY9YXBwLnNpZ251cD5TaWduIHVwPC9hPiBmb3IgS2F0YWx5bzwvaDY+PGg2PkdvIHRvIDxhIHVpLXNyZWY9YXBwLmxvZ2luPmxvZ2luIHBhZ2U8L2E+PC9oNj48aDY+VmlzaXQgb3VyIDxhIGhyZWY9aHR0cHM6Ly93d3cua2F0YWx5by5jb20+d2Vic2l0ZTwvYT48L2g2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9Y2hlY2tpbmdTaWdudXAgY2xhc3M9dGV4dC1jZW50ZXI+PGRpdiBjbGFzcz1cImxvYWRlciBsb2FkZXItbGdcIj48L2Rpdj48ZGl2IGNsYXNzPW15LTI+PGRpdiBjbGFzcz1cInBhbmVsLXRpdGxlIHB4LTFcIiBzdHlsZT12ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y29sb3I6IzM0OThkYj48c3Bhbj5DaGVja2luZyByZXF1ZXN0Li4uPC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9c2lnbnVwT0sgY2xhc3M9XCJyb3VuZGVkIHRleHQtd2hpdGUgdGV4dC1jZW50ZXJcIiBzdHlsZT48aW1nIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogYXV0bztwb3NpdGlvbjogYWJzb2x1dGU7bGVmdDogMCU7XCIgc3JjPWltZy9lbGlwc2EucG5nPjxoMiBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IGF1dG87cG9zaXRpb246IGFic29sdXRlO2xlZnQ6IDAlO3RvcDoyMHB4XCIgY2xhc3M+V2VsY29tZSBvbmJvYXJkIEthdGFseW8hPC9oMj48ZGl2IGNsYXNzPW10LTM+PGg1IG5nLWlmPWZhbHNlIGNsYXNzPldlIGtub3cgeW91IGNhblxcJ3Qgd2FpdCB0byBzdGFydCBidWlsZGluZyE8L2g1PjxoNiBjbGFzcz5QbGVhc2UgZW50ZXIgYmFzaWMgaW5mbyBhbmQgeW91XFwnbGwgYmUgdXAgYW5kIHJ1bm5pbmcgaW4gbm8gdGltZSE8L2g2PjxkaXYgbmctaWY9ZmFsc2U+PGg2IGNsYXNzPXRleHQtcHJpbWFyeT48Yj5TdGVwIDIuPC9iPiBSZWdpc3RlciB5b3VyIEVPUyBhY2NvdW50IDxhIGhyZWYgbmctY2xpY2s9XCJzaG93RU9TPSFzaG93RU9TXCI+KFdoeSBkbyBJIG5lZWQgRU9TIGFjY291bnQ/KTwvYT48aDYgY2xhc3M9dGV4dC1pbmZvIG5nLWlmPXNob3dFT1M+WW91IG5lZWQgRU9TIGFjY291bnQgYmVjYXVzZSBLYXRhbHlvIHRva2VuIGlzIGJ1aWx0IG9uIEVPUyBibG9ja2NoYWluIDxhIGhyZWY9aHR0cDovL2Vvcy5pbyB0YXJnZXQ9X2JsYW5rPihsZWFybiBtb3JlIGFib3V0IEVPUyBibG9ja2NoYWluKTwvYT48L2g2PjxzcGFuIGNsYXNzPXRleHQtaW5mbyBuZy1pZj1zaG93RU9TPkRvblxcJ3QgaGF2ZSBhbiBFT1MgYWNjb3VudD8gRG9uXFwndCB3b3JyeSB5b3UgY2FuIHN0aWxsIHVzZSBLYXRhbHlvIGFuZCBhZGQgeW91ciBFT1MgYWNjb3VudCBsYXRlciBhdCBhbnkgdGltZS4gSG93ZXZlciB5b3Ugd2lsbCBuZWVkIGFuIEVPUyBhY2NvdW50IGlmIHlvdSB3YW50IGZ1bGwgY29udHJvbCBvZiB5b3VyIEthdGFseW8gdG9rZW5zITwvc3Bhbj48L2g2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wXCIgbmctaWY9c2lnbnVwT0s+PGRpdiBjbGFzcz1cIm9mZnNldC1sZy00IGNvbC1sZy0xNiBwLTQgcm91bmRlZCBiZy13aGl0ZVwiIHN0eWxlPW1hcmdpbi10b3A6M3JlbT48ZGl2IG5nLWlmPWZhbHNlIGNsYXNzPVwiYnRuLWdyb3VwIGJ0bi1ncm91cC10b2dnbGUgdy0xMDAgbWItMyBtYi1sZy01XCIgZGF0YS10b2dnbGU9YnV0dG9ucyBzdHlsZT1cImRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWV2ZW5seSAhaW1wb3J0YW50XCI+PGxhYmVsIG5nLWNsaWNrPVwicmVnaXN0ZXIub3JnYW5pc2F0aW9uX3R5cGU9XFwnUGVyc29uYWxcXCdcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIHN0eWxlPVwicGFkZGluZzowICFpbXBvcnRhbnQ7Ym94LXNoYWRvdzogMHB4IDZweCA4cHggIzg4ODg4ODZlO1wiPjxpbWcgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA5NyU7XCIgc3JjPWltZy9iYWxvb24ucG5nPiA8aW5wdXQgdHlwZT1yYWRpbyBuYW1lPW9yZ2FuaXNhdGlvbl90eXBlIGlkPW9yZ2FuaXNhdGlvbl90eXBlIGF1dG9jb21wbGV0ZT1vZmYgY2hlY2tlZD48L2xhYmVsPiA8bGFiZWwgbmctY2xpY2s9XCJyZWdpc3Rlci5vcmdhbmlzYXRpb25fdHlwZT1cXCdGb3JQcm9maXRcXCdcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBhY3RpdmVcIiBzdHlsZT1cInBhZGRpbmc6MCAhaW1wb3J0YW50O2JveC1zaGFkb3c6IDBweCA2cHggOHB4ICM4ODg4ODg2ZTtcIj48aW1nIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogOTclO1wiIHNyYz1pbWcvcm9ja2V0LnBuZz4gPGlucHV0IHR5cGU9cmFkaW8gbmFtZT1vcmdhbmlzYXRpb25fdHlwZSBpZD1vcmdhbmlzYXRpb25fdHlwZSBhdXRvY29tcGxldGU9b2ZmIGNoZWNrZWQ+PC9sYWJlbD4gPGxhYmVsIG5nLWNsaWNrPVwicmVnaXN0ZXIub3JnYW5pc2F0aW9uX3R5cGU9XFwnTm9uUHJvZml0XFwnXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBzdHlsZT1cInBhZGRpbmc6MCAhaW1wb3J0YW50O2JveC1zaGFkb3c6IDBweCA2cHggOHB4ICM4ODg4ODg2ZTtcIj48aW1nIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogOTclO1wiIHNyYz1pbWcvYWlycGxhbmUucG5nPiA8aW5wdXQgdHlwZT1yYWRpbyBuYW1lPW9yZ2FuaXNhdGlvbl90eXBlIGlkPW9yZ2FuaXNhdGlvbl90eXBlIGF1dG9jb21wbGV0ZT1vZmYgY2hlY2tlZD48L2xhYmVsPjwvZGl2PjxkaXYgbmctaWY9XCJyZWdpc3Rlci5vcmdhbmlzYXRpb25fdHlwZSE9XFwnUGVyc29uYWxcXCdcIiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlclxcJyA6IChmb3JtLm9yZ2FuaXNhdGlvbl9uYW1lLiR0b3VjaGVkIHx8IGZvcm0ub3JnYW5pc2F0aW9uX25hbWUuJGRpcnR5IHx8IGZvcm0uJHN1Ym1pdHRlZCkgJiYgZm9ybS5vcmdhbmlzYXRpb25fbmFtZS4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPVwibWItMSBib2xkXCIgZm9yPW9yZ2FuaXNhdGlvbl9uYW1lPk9yZ2FuaXNhdGlvbiBuYW1lPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBuZy1yZXF1aXJlZD1cInJlZ2lzdGVyLm9yZ2FuaXNhdGlvbl90eXBlIT1cXCdQZXJzb25hbFxcJ1wiIG5nLW1vZGVsPXJlZ2lzdGVyLm9yZ2FuaXNhdGlvbl9uYW1lIGlkPW9yZ2FuaXNhdGlvbl9uYW1lIG5nLWNsYXNzPVwieyBcXCdib3JkZXItZGFuZ2VyIGlzLWludmFsaWRcXCcgOiAoZm9ybS5vcmdhbmlzYXRpb25fbmFtZS4kdG91Y2hlZCB8fCBmb3JtLm9yZ2FuaXNhdGlvbl9uYW1lLiRkaXJ0eSB8fCBmb3JtLiRzdWJtaXR0ZWQpICYmIGZvcm0ub3JnYW5pc2F0aW9uX25hbWUuJGVycm9yLnJlcXVpcmVkIH1cIiBuZy1kaXNhYmxlZD1kYXRhTG9hZGluZyBhcmlhLWxhYmVsPW9yZ2FuaXNhdGlvbl9uYW1lIGNsYXNzPWZvcm0tY29udHJvbCBuYW1lPW9yZ2FuaXNhdGlvbl9uYW1lIHBsYWNlaG9sZGVyPVwiT3JnYW5pc2F0aW9uIG5hbWVcIj4gPHNwYW4gbmctc2hvdz1cIihmb3JtLm9yZ2FuaXNhdGlvbl9uYW1lLiR0b3VjaGVkIHx8IGZvcm0ub3JnYW5pc2F0aW9uX25hbWUuJGRpcnR5IHx8IGZvcm0uJHN1Ym1pdHRlZCkgJiYgZm9ybS5vcmdhbmlzYXRpb25fbmFtZS4kZXJyb3IucmVxdWlyZWRcIiBjbGFzcz1cInRleHQtZGFuZ2VyIHNtYWxsXCI+T3JnYW5pc2F0aW9uIG5hbWUgaXMgcmVxdWlyZWQ8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlclxcJyA6IChmb3JtLmZuYW1lLiR0b3VjaGVkIHx8IGZvcm0uZm5hbWUuJGRpcnR5IHx8IGZvcm0uJHN1Ym1pdHRlZCkgJiYgZm9ybS5mbmFtZS4kZXJyb3IucmVxdWlyZWQgfVwiPjxsYWJlbCBjbGFzcz1cIm1iLTEgYm9sZFwiIGZvcj1mbmFtZT5GaXJzdCBuYW1lPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1yZWdpc3Rlci5mbmFtZSBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZFxcJyA6IChmb3JtLmZuYW1lLiR0b3VjaGVkIHx8IGZvcm0uZm5hbWUuJGRpcnR5IHx8IGZvcm0uJHN1Ym1pdHRlZCkgJiYgZm9ybS5mbmFtZS4kZXJyb3IucmVxdWlyZWQgfVwiIG5nLXJlcXVpcmVkPXRydWUgaWQ9Zm5hbWUgbmctZGlzYWJsZWQ9ZGF0YUxvYWRpbmcgYXJpYS1sYWJlbD1mbmFtZSBjbGFzcz1mb3JtLWNvbnRyb2wgbmFtZT1mbmFtZSBwbGFjZWhvbGRlcj1cIkZpcnN0IG5hbWVcIj4gPHNwYW4gbmctc2hvdz1cIihmb3JtLmZuYW1lLiR0b3VjaGVkIHx8IGZvcm0uZm5hbWUuJGRpcnR5IHx8IGZvcm0uJHN1Ym1pdHRlZCkgJiYgZm9ybS5mbmFtZS4kZXJyb3IucmVxdWlyZWRcIiBjbGFzcz1cInRleHQtZGFuZ2VyIHNtYWxsXCI+Rmlyc3QgbmFtZSBpcyByZXF1aXJlZDwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGZvcm0ubG5hbWUuJHRvdWNoZWQgfHwgZm9ybS5sbmFtZS4kZGlydHkgfHwgZm9ybS4kc3VibWl0dGVkKSAmJiBmb3JtLmxuYW1lLiRlcnJvci5yZXF1aXJlZCB9XCI+PGxhYmVsIGNsYXNzPVwibWItMSBib2xkXCIgZm9yPWxuYW1lPkxhc3QgbmFtZTwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9cmVnaXN0ZXIubG5hbWUgaWQ9bG5hbWUgbmctY2xhc3M9XCJ7IFxcJ2lzLWludmFsaWRcXCcgOiAoZm9ybS5sbmFtZS4kdG91Y2hlZCB8fCBmb3JtLmxuYW1lLiRkaXJ0eSB8fCBmb3JtLiRzdWJtaXR0ZWQpICYmIGZvcm0ubG5hbWUuJGVycm9yLnJlcXVpcmVkIH1cIiBuZy1yZXF1aXJlZD10cnVlIG5nLWRpc2FibGVkPWRhdGFMb2FkaW5nIGFyaWEtbGFiZWw9bG5hbWUgY2xhc3M9Zm9ybS1jb250cm9sIG5hbWU9bG5hbWUgcGxhY2Vob2xkZXI9XCJMYXN0IG5hbWVcIj4gPHNwYW4gbmctc2hvdz1cIihmb3JtLmxuYW1lLiR0b3VjaGVkIHx8IGZvcm0ubG5hbWUuJGRpcnR5IHx8IGZvcm0uJHN1Ym1pdHRlZCkgJiYgZm9ybS5sbmFtZS4kaW52YWxpZFwiIGNsYXNzPVwidGV4dC1kYW5nZXIgc21hbGxcIj5MYXN0IG5hbWUgaXMgcmVxdWlyZWQ8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlclxcJyA6IChmb3JtLnVzZXJuYW1lLiR0b3VjaGVkIHx8IGZvcm0udXNlcm5hbWUuJGRpcnR5IHx8IGZvcm0uJHN1Ym1pdHRlZCkgJiYgZm9ybS51c2VybmFtZS4kZXJyb3IucmVxdWlyZWQgfVwiPjxsYWJlbCBjbGFzcz1cIm1iLTEgYm9sZFwiIGZvcj11c2VybmFtZT5Vc2VybmFtZTwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgbmctcmVxdWlyZWQ9dHJ1ZSBuZy1tb2RlbD1yZWdpc3Rlci51c2VybmFtZSBpZD11c2VybmFtZSBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZFxcJyA6IChmb3JtLnVzZXJuYW1lLiR0b3VjaGVkIHx8IGZvcm0udXNlcm5hbWUuJGRpcnR5IHx8IGZvcm0uJHN1Ym1pdHRlZCkgJiYgZm9ybS51c2VybmFtZS4kZXJyb3IucmVxdWlyZWQgfVwiIG5nLWRpc2FibGVkPWRhdGFMb2FkaW5nIGFyaWEtbGFiZWw9VXNlcm5hbWUgYXJpYS1kZXNjcmliZWRieT1iYXNpYy1hZGRvbjEgY2xhc3M9Zm9ybS1jb250cm9sIG5hbWU9dXNlcm5hbWUgcGxhY2Vob2xkZXI9VXNlcm5hbWU+IDxzcGFuIG5nLXNob3c9XCIoZm9ybS51c2VybmFtZS4kdG91Y2hlZCB8fCBmb3JtLnVzZXJuYW1lLiRkaXJ0eSB8fCBmb3JtLiRzdWJtaXR0ZWQpICYmIGZvcm0udXNlcm5hbWUuJGludmFsaWRcIiBjbGFzcz1cInRleHQtZGFuZ2VyIHNtYWxsXCI+VXNlcm5hbWUgaXMgcmVxdWlyZWQ8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwPjxsYWJlbCBjbGFzcz1cIm1iLTEgYm9sZFwiIG5nLWNsYXNzPVwieyBcXCd0ZXh0LXN1Y2Nlc3NcXCc6KGZvcm0ucGFzc3dvcmQuJGRpcnR5IHx8IGZvcm0ucGFzc3dvcmQuJHRvdWNoZWQgfHwgZm9ybS4kc3VibWl0dGVkKSAmJiBmb3JtLnBhc3N3b3JkLiR2YWxpZCwgXFwndGV4dC1kYW5nZXJcXCc6IChmb3JtLnBhc3N3b3JkLiRkaXJ0eSB8fCBmb3JtLnBhc3N3b3JkLiR0b3VjaGVkIHx8IGZvcm0uJHN1Ym1pdHRlZCkgJiYgZm9ybS5wYXNzd29yZC4kaW52YWxpZH1cIiBmb3I9cGFzc3dvcmQ+UGFzc3dvcmQ8L2xhYmVsPiA8aSBuZy1pZj1cIihmb3JtLnBhc3N3b3JkLiRkaXJ0eSB8fCBmb3JtLnBhc3N3b3JkLiR0b3VjaGVkIHx8IGZvcm0uJHN1Ym1pdHRlZCkgJiYgZm9ybS5wYXNzd29yZC4kdmFsaWRcIiBjbGFzcz1cImZhIGZhLWNoZWNrIHRleHQtc3VjY2Vzc1wiPjwvaT4gPGlucHV0IHR5cGU9cGFzc3dvcmQgbmctcmVxdWlyZWQ9dHJ1ZSBuZy1tb2RlbC1vcHRpb25zPVwieyBkZWJvdW5jZTogMTAwMCB9XCIgbmctY2hhbmdlPWNoZWNrUGFzc3dvcmQoZm9ybS5wYXNzd29yZCkgbmctY2xhc3M9XCJ7IFxcJ2lzLWludmFsaWRcXCcgOiAoZm9ybS5wYXNzd29yZC4kdG91Y2hlZCB8fCBmb3JtLnBhc3N3b3JkLiRkaXJ0eSB8fCBmb3JtLiRzdWJtaXR0ZWQpICYmIGZvcm0ucGFzc3dvcmQuJGludmFsaWR9XCIgbmctbW9kZWw9cmVnaXN0ZXIucGFzc3dvcmQgaWQ9cGFzc3dvcmQgbmctZGlzYWJsZWQ9ZGF0YUxvYWRpbmcgYXJpYS1sYWJlbD1QYXNzd29yZCBjbGFzcz1mb3JtLWNvbnRyb2wgbmFtZT1wYXNzd29yZCBwbGFjZWhvbGRlcj1QYXNzd29yZD4gPHNwYW4gbmctc2hvdz1cIihmb3JtLnBhc3N3b3JkLiRkaXJ0eSB8fCBmb3JtLnBhc3N3b3JkLiR0b3VjaGVkIHx8IGZvcm0uJHN1Ym1pdHRlZCkgJiYgZm9ybS5wYXNzd29yZC4kaW52YWxpZFwiIGNsYXNzPVwidGV4dC1kYW5nZXIgc21hbGxcIj5QbGVhc2UgZW50ZXIgc3Ryb25nIHBhc3N3b3JkIChNaW5pbXVtIGVpZ2h0IGNoYXJhY3RlcnMsIGF0IGxlYXN0IG9uZSB1cHBlcmNhc2UgbGV0dGVyLCBvbmUgbG93ZXJjYXNlIGxldHRlciwgb25lIG51bWJlciBhbmQgb25lIHNwZWNpYWwgY2hhcmFjdGVyKTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXA+PGxhYmVsIGNsYXNzPVwibWItMSBib2xkXCIgbmctY2xhc3M9XCJ7IFxcJ3RleHQtc3VjY2Vzc1xcJzooZm9ybS5jb25maXJtUGFzc3dvcmQuJGRpcnR5IHx8IGZvcm0uY29uZmlybVBhc3N3b3JkLiR0b3VjaGVkIHx8IGZvcm0uJHN1Ym1pdHRlZCkgJiYgZm9ybS5wYXNzd29yZC4kdmFsaWQgJiYgcmVnaXN0ZXIucGFzc3dvcmQ9PXJlZ2lzdGVyLmNvbmZpcm1QYXNzd29yZCAmJiByZWdpc3Rlci5jb25maXJtUGFzc3dvcmQhPVxcJ1xcJyAmJiByZWdpc3Rlci5jb25maXJtUGFzc3dvcmQhPXVuZGVmaW5lZCwgXFwndGV4dC1kYW5nZXJcXCc6IChmb3JtLmNvbmZpcm1QYXNzd29yZC4kZGlydHkgfHwgZm9ybS5jb25maXJtUGFzc3dvcmQuJHRvdWNoZWQpICYmIGZvcm0ucGFzc3dvcmQuJHZhbGlkICYmIHJlZ2lzdGVyLnBhc3N3b3JkIT1yZWdpc3Rlci5jb25maXJtUGFzc3dvcmQgJiYgY29uZmlybVBhc3N3b3JkIT1cXCdcXCd9XCIgZm9yPWNvbmZpcm1QYXNzd29yZD5Db25maXJtIHBhc3N3b3JkPC9sYWJlbD4gPGkgbmctaWY9XCIoZm9ybS5jb25maXJtUGFzc3dvcmQuJGRpcnR5IHx8IGZvcm0uY29uZmlybVBhc3N3b3JkLiR0b3VjaGVkIHx8IGZvcm0uJHN1Ym1pdHRlZCkgJiYgZm9ybS5wYXNzd29yZC4kdmFsaWQgJiYgcmVnaXN0ZXIucGFzc3dvcmQ9PXJlZ2lzdGVyLmNvbmZpcm1QYXNzd29yZCAmJiByZWdpc3Rlci5jb25maXJtUGFzc3dvcmQhPVxcJ1xcJyAmJiByZWdpc3Rlci5jb25maXJtUGFzc3dvcmQhPXVuZGVmaW5lZFwiIGNsYXNzPVwiZmEgZmEtY2hlY2sgdGV4dC1zdWNjZXNzXCI+PC9pPiA8aW5wdXQgdHlwZT1wYXNzd29yZCBuZy1yZXF1aXJlZD10cnVlIG5nLW1vZGVsPXJlZ2lzdGVyLmNvbmZpcm1QYXNzd29yZCBpZD1jb25maXJtUGFzc3dvcmQgbmctY2xhc3M9XCJ7IFxcJ2lzLWludmFsaWRcXCcgOiAoZm9ybS5jb25maXJtUGFzc3dvcmQuJHRvdWNoZWQgfHwgZm9ybS5jb25maXJtUGFzc3dvcmQuJGRpcnR5IHx8IGZvcm0uJHN1Ym1pdHRlZCkgJiYgZm9ybS5wYXNzd29yZC4kdmFsaWQgJiYgZm9ybS5jb25maXJtUGFzc3dvcmQuJGludmFsaWR9XCIgbmctZGlzYWJsZWQ9ZGF0YUxvYWRpbmcgY2xhc3M9Zm9ybS1jb250cm9sIG5hbWU9Y29uZmlybVBhc3N3b3JkIHBsYWNlaG9sZGVyPVwiQ29uZmlybSBwYXNzd29yZFwiPjxzcGFuIG5nLXNob3c9XCIoZm9ybS5jb25maXJtUGFzc3dvcmQuJGRpcnR5IHx8IGZvcm0uY29uZmlybVBhc3N3b3JkLiR0b3VjaGVkKSAmJiBmb3JtLnBhc3N3b3JkLiR2YWxpZCAmJiByZWdpc3Rlci5wYXNzd29yZCE9cmVnaXN0ZXIuY29uZmlybVBhc3N3b3JkICYmIHJlZ2lzdGVyLmNvbmZpcm1QYXNzd29yZCE9XFwnXFwnICYmIHJlZ2lzdGVyLmNvbmZpcm1QYXNzd29yZCE9dW5kZWZpbmVkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlciBzbWFsbFwiPlBhc3N3b3JkcyBkb25cXCd0IG1hdGNoPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9ZmFsc2UgY2xhc3M9XCJjb2wtbGctMTIgY29sLW1kLTEyIGNvbC1zbS0yNCBjb2wteHMtMjRcIj48ZGl2IGNsYXNzPXRleHQtY2VudGVyIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMjBweDtib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RlZGVkZTtcIj48aDQ+PGkgY2xhc3M9XCJmYSBmYS11bml2ZXJzaXR5IG1yLTJcIj48L2k+RW50ZXIgb3JnYW5pc2F0aW9uIGRldGFpbHMgPGEgbmctaWY9ZmFsc2UgaHJlZj48aSBjbGFzcz1cImZhIGZhLXF1ZXN0aW9uXCI+PC9pPjwvYT48L2g0PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogZm9ybS51c2VybmFtZS4kZGlydHkgJiYgZm9ybS51c2VybmFtZS4kZXJyb3IucmVxdWlyZWQgfVwiPjxsYWJlbCBmb3I9dXNlcm5hbWU+T3JnYW5pc2F0aW9uIG5hbWU8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IG5nLXJlcXVpcmVkPXRydWUgbmctbW9kZWw9b3JnYW5pc2F0aW9uX25hbWUgaWQ9b3JnYW5pc2F0aW9uX25hbWUgbmctZGlzYWJsZWQ9ZGF0YUxvYWRpbmcgYXJpYS1sYWJlbD1vcmdhbmlzYXRpb25fbmFtZSBhcmlhLWRlc2NyaWJlZGJ5PWJhc2ljLWFkZG9uNiBjbGFzcz1mb3JtLWNvbnRyb2wgbmFtZT1vcmdhbmlzYXRpb25fbmFtZSBwbGFjZWhvbGRlcj1cIk9yZ2FuaXNhdGlvbiBuYW1lXCI+IDxzcGFuIG5nLXNob3c9XCJmb3JtLm9yZ2FuaXNhdGlvbl9uYW1lLiRkaXJ0eSAmJiBmb3JtLm9yZ2FuaXNhdGlvbl9uYW1lLiRlcnJvci5yZXF1aXJlZFwiIGNsYXNzPWhlbHAtYmxvY2s+T3JnYW5pc2F0aW9uIG5hbWUgaXMgcmVxdWlyZWQ8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uY291bnRyeS4kdG91Y2hlZCkgJiYgZm9ybS5jb3VudHJ5LiRpbnZhbGlkIH1cIj48bGFiZWwgZm9yPWNvdW50cnk+Q291bnRyeTwvbGFiZWw+PHVpLXNlbGVjdCBuZy1tb2RlbD1vcmdhbmlzYXRpb24uQ291bnRyeSBuZy1kaXNhYmxlZD1kaXNhYmxlZCBuYW1lPWNvdW50cnkgbmctcmVxdWlyZWQ9dHJ1ZSByZXNldC1zZWFyY2gtaW5wdXQ9ZmFsc2U+PHVpLXNlbGVjdC1tYXRjaCBjbGFzcz11aS1zZWxlY3QtbWF0Y2ggcGxhY2Vob2xkZXI9XCJTZWFyY2ggb3Igc2VsZWN0IGNvdW50cnkuLi5cIj48c3Bhbj57eyRzZWxlY3Quc2VsZWN0ZWQubmFtZX19PC9zcGFuPiA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmsgZmxvYXQtcmlnaHRcIiBuZy1jbGljaz1cImNsZWFyKCRldmVudCwgJHNlbGVjdClcIj48aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPjwvYT48L3VpLXNlbGVjdC1tYXRjaD48dWktc2VsZWN0LWNob2ljZXMgY2xhc3M9dWktc2VsZWN0LWNob2ljZXMgcmVwZWF0PVwiY291bnRyeSBpbiAoY291bnRyeUxpc3QgfCBmaWx0ZXI6IHsgbmFtZTogJHNlbGVjdC5zZWFyY2ggfSkgdHJhY2sgYnkgY291bnRyeS5pZFwiIHJlZnJlc2g9cmVmcmVzaFJlc3VsdHMoJHNlbGVjdCkgcmVmcmVzaC1kZWxheT0wPjxzcGFuPnt7Y291bnRyeS5uYW1lfX08L3NwYW4+PC91aS1zZWxlY3QtY2hvaWNlcz48L3VpLXNlbGVjdD48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvdW50cnkuJHRvdWNoZWQpICYmIGZvcm0uY291bnRyeS4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+U2VsZWN0IGNvdW50cnk8L3A+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uaW5kdXN0cnkuJHRvdWNoZWQpICYmIGZvcm0uaW5kdXN0cnkuJGludmFsaWQgfVwiPjxsYWJlbCBmb3I9aW5kdXN0cnk+SW5kdXN0cnk8L2xhYmVsPjx1aS1zZWxlY3QgbmctbW9kZWw9b3JnYW5pc2F0aW9uLkluZHVzdHJ5IG5nLWRpc2FibGVkPWRpc2FibGVkIG5hbWU9aW5kdXN0cnkgbmctcmVxdWlyZWQ9dHJ1ZSByZXNldC1zZWFyY2gtaW5wdXQ9ZmFsc2U+PHVpLXNlbGVjdC1tYXRjaCBjbGFzcz11aS1zZWxlY3QtbWF0Y2ggcGxhY2Vob2xkZXI9XCJTZWFyY2ggb3Igc2VsZWN0IGluZHVzdHJ5Li4uXCI+PHNwYW4+e3skc2VsZWN0LnNlbGVjdGVkLm5hbWV9fTwvc3Bhbj4gPGEgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saW5rIGZsb2F0LXJpZ2h0XCIgbmctY2xpY2s9XCJjbGVhcigkZXZlbnQsICRzZWxlY3QpXCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2E+PC91aS1zZWxlY3QtbWF0Y2g+PHVpLXNlbGVjdC1jaG9pY2VzIGNsYXNzPXVpLXNlbGVjdC1jaG9pY2VzIHJlcGVhdD1cImluZHVzdHJ5IGluIChpbmR1c3RyeUxpc3QgfCBmaWx0ZXI6IHsgbmFtZTogJHNlbGVjdC5zZWFyY2ggfSkgdHJhY2sgYnkgaW5kdXN0cnkuaWRcIiByZWZyZXNoPXJlZnJlc2hSZXN1bHRzKCRzZWxlY3QpIHJlZnJlc2gtZGVsYXk9MD48c3Bhbj57e2luZHVzdHJ5Lm5hbWV9fTwvc3Bhbj48L3VpLXNlbGVjdC1jaG9pY2VzPjwvdWktc2VsZWN0PjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uaW5kdXN0cnkuJHRvdWNoZWQpICYmIGZvcm0uaW5kdXN0cnkuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPlNlbGVjdCBpbmR1c3RyeTwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXJvdyBuZy1pZj1mYWxzZT48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IGNvbC14cy0yNCBjb2wtc20tMjRcIj48ZGl2IGNsYXNzPXRleHQtY2VudGVyIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMjBweDtib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RlZGVkZTtcIj48aDUgY2xhc3M9dGV4dC1wcmltYXJ5PlJlZ2lzdGVyIEVPUyBhY2NvdW50PC9oNT48YSBuZy1pZj1mYWxzZSBocmVmPjxpIGNsYXNzPVwiZmEgZmEtcXVlc3Rpb25cIj48L2k+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wteHMtMjQgY29sLW1kLTE2XCI+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiBmb3JtLmVvc0FjY291bnQuJGRpcnR5ICYmIGZvcm0uZW9zQWNjb3VudC4kZXJyb3IucmVxdWlyZWQgfVwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMTYgY29sLW1kLTEyIGNvbC1zbS0xMiBjb2wteHMtMjRcIj48bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbm8tYm9yZGVyXCIgc3R5bGUgZm9yPWVvc0FjY291bnQ+RU9TIGFjY291bnQ8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMTYgY29sLW1kLTEyIGNvbC1zbS0xMiBjb2wteHMtMjRcIj48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPWVvc09iamVjdC5hY2NvdW50IGlkPWVvc0FjY291bnQgY2xhc3M9Zm9ybS1jb250cm9sIG5hbWU9ZW9zQWNjb3VudCBwbGFjZWhvbGRlcj1cIkVudGVyIEVPUyBhY2NvdW50XCI+IDxzcGFuIG5nLXNob3c9XCJmb3JtLmVvc0FjY291bnQuJGRpcnR5ICYmIGZvcm0uZW9zQWNjb3VudC4kZXJyb3IucmVxdWlyZWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVPUyBhY2NvdW50IGlzIHJlcXVpcmVkPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMTYgY29sLW1kLTEyIGNvbC1zbS0xMiBjb2wteHMtMjRcIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWNoZWNrRU9TQWNjb3VudCgpIGNsYXNzPVwiYnRuIGJ0bi1pbmZvXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1zZWFyY2hcIj48L3NwYW4+IEZpbmQgRU9TIGFjY291bnQ8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLXhzLTI0IGNvbC1zbS0yNFwiPjxkaXYgbmctaWY9Y2hlY2tpbmdFT1NBY2NvdW50IGNsYXNzPXRleHQtY2VudGVyPjxkaXYgY2xhc3M9XCJsb2FkZXIgbG9hZGVyLWxnXCI+PC9kaXY+PGRpdiBjbGFzcz1wYW5lbC10aXRsZSBzdHlsZT12ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y29sb3I6IzM0OThkYj48aDM+U2VhcmNoaW5nIGZvciBFT1MgYWNjb3VudC4uLjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImVvc0FjY291bnRPYmplY3QucmVzdWx0X2NvZGU9PTBcIj48ZGl2IGNsYXNzPWNvbC1sZy0yNCBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDIwcHg7Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZWRlZGU7XCI+PGRpdiBjbGFzcz1jb2wtbGctNT48ZGl2IGNsYXNzPXRleHQtcHJpbWFyeT48aDM+QWNjb3VudCBuYW1lPC9oMz48L2Rpdj48aDQ+PHNwYW4+e3tlb3NBY2NvdW50T2JqZWN0LmFjY291bnRfbmFtZX19PC9zcGFuPjwvaDQ+PC9kaXY+PGRpdiBjbGFzcz1jb2wtbGctNj48aDMgY2xhc3M9dGV4dC1wcmltYXJ5PlRvdGFsIGJhbGFuY2U8L2gzPjxoND48c3Bhbj57e2Vvc0FjY291bnRPYmplY3QuYmFsYW5jZV90b3RhbH19IEVPUzwvc3Bhbj48L2g0PjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTY+PGgzIGNsYXNzPXRleHQtcHJpbWFyeT5Qcm94eTwvaDM+PGg0PjxzcGFuPnt7ZW9zQWNjb3VudE9iamVjdC5pc19wcm94eX19PC9zcGFuPjwvaDQ+PC9kaXY+PGRpdiBjbGFzcz1jb2wtbGctNj48aDMgY2xhc3M9dGV4dC1wcmltYXJ5PlByaXZpbGVnZWQ8L2gzPjxoND48c3Bhbj57e2Vvc0FjY291bnRPYmplY3QucHJpdmlsZWdlZH19PC9zcGFuPjwvaDQ+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1yb3c+PGRpdiBjbGFzcz1cImNvbC1sZy0xNiBjb2wtbWQtMTIgY29sLXNtLTEyIGNvbC14cy0yNFwiPjxzcGFuPlN0YWtlZCBiYWxhbmNlPC9zcGFuPjxzcGFuIGNsYXNzPWZsb2F0LXJpZ2h0Pnt7ZW9zQWNjb3VudE9iamVjdC5iYWxhbmNlX3N0YWtlZH19IEVPUzwvc3Bhbj48ZGl2IGNsYXNzPXByb2dyZXNzPjxkaXYgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZCByZWQ7aGVpZ2h0OiBpbmhlcml0XCIgdGl0bGU9MCUgbmctaWY9XCJlb3NBY2NvdW50T2JqZWN0LmJhbGFuY2Vfc3Rha2VkPT0wXCI+PC9kaXY+PGRpdiB0aXRsZT1cInt7ZW9zQWNjb3VudE9iamVjdC5iYWxhbmNlX3N0YWtlZF9wcm9ncmVzc319ICVcIiBjbGFzcz1wcm9ncmVzcy1iYXIgcm9sZT1wcm9ncmVzc2JhciBhcmlhLXZhbHVlbm93PXt7ZW9zQWNjb3VudE9iamVjdC5iYWxhbmNlX3N0YWtlZH19IGFyaWEtdmFsdWVtaW49MCBhcmlhLXZhbHVlbWF4PWVvc0FjY291bnRPYmplY3QuYmFsYW5jZV9zdGFrZWRfdG90YWwgbmctc3R5bGU9e3tlb3NBY2NvdW50T2JqZWN0LmJhbGFuY2Vfc3Rha2VkX3N0eWxlX3NtYWxsfX0gc3R5bGU9XCJ3aWR0aDoge3tlb3NBY2NvdW50T2JqZWN0LmJhbGFuY2Vfc3Rha2VkX3Byb2dyZXNzfX0lXCI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0xNiBjb2wtbWQtMTIgY29sLXNtLTEyIGNvbC14cy0yNFwiPjxzcGFuPlVuc3Rha2VkIGJhbGFuY2U8L3NwYW4+PHNwYW4gY2xhc3M9ZmxvYXQtcmlnaHQ+e3tlb3NBY2NvdW50T2JqZWN0LmJhbGFuY2VfdW5zdGFrZWR9fSBFT1M8L3NwYW4+PGRpdiBjbGFzcz1wcm9ncmVzcz48ZGl2IHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQgcmVkO2hlaWdodDogaW5oZXJpdFwiIHRpdGxlPTAlIG5nLWlmPVwiZW9zQWNjb3VudE9iamVjdC5iYWxhbmNlX3Vuc3Rha2VkPT0wXCI+PC9kaXY+PGRpdiB0aXRsZT1cInt7ZW9zQWNjb3VudE9iamVjdC5iYWxhbmNlX3Vuc3Rha2VkX3Byb2dyZXNzfX0gJVwiIGNsYXNzPVwicHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci13YXJuaW5nXCIgcm9sZT1wcm9ncmVzc2JhciBhcmlhLXZhbHVlbm93PXt7ZW9zQWNjb3VudE9iamVjdC5iYWxhbmNlX3Vuc3Rha2VkfX0gYXJpYS12YWx1ZW1pbj0wIGFyaWEtdmFsdWVtYXg9e3tlb3NBY2NvdW50T2JqZWN0LmJhbGFuY2VfdG90YWx9fSBuZy1zdHlsZT17e2Vvc0FjY291bnRPYmplY3QuYmFsYW5jZV91bnN0YWtlZF9zdHlsZV9zbWFsbH19IHN0eWxlPVwid2lkdGg6IHt7ZW9zQWNjb3VudE9iamVjdC5iYWxhbmNlX3Vuc3Rha2VkX3Byb2dyZXNzfX0lXCI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0xNiBjb2wtbWQtMTIgY29sLXNtLTEyIGNvbC14cy0yNFwiPjxzcGFuPkNQVTwvc3Bhbj4gPHNwYW4gY2xhc3M9ZmxvYXQtcmlnaHQ+e3tlb3NBY2NvdW50T2JqZWN0LmNwdV9saW1pdF91c2VkfX0ge3tlb3NBY2NvdW50T2JqZWN0LmNwdV91bml0X3VzZWR9fSAvIHt7ZW9zQWNjb3VudE9iamVjdC5jcHVfbGltaXRfbWF4fX0ge3tlb3NBY2NvdW50T2JqZWN0LmNwdV91bml0X21heH19ICh7e2Vvc0FjY291bnRPYmplY3QuY3B1X3dlaWdodH19KTwvc3Bhbj48ZGl2IGNsYXNzPXByb2dyZXNzPjxkaXYgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZCByZWQ7aGVpZ2h0OiBpbmhlcml0XCIgdGl0bGU9MCUgbmctaWY9XCJlb3NBY2NvdW50T2JqZWN0LmNwdV9saW1pdF91c2VkPT0wXCI+PC9kaXY+PGRpdiB0aXRsZT1cInt7ZW9zQWNjb3VudE9iamVjdC5jcHVfbGltaXRfcHJvZ3Jlc3N9fSAlXCIgY2xhc3M9XCJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLWRhbmdlclwiIHJvbGU9cHJvZ3Jlc3NiYXIgYXJpYS12YWx1ZW5vdz17e2Vvc0FjY291bnRPYmplY3QuY3B1X2xpbWl0X3VzZWR9fSBhcmlhLXZhbHVlbWluPTAgYXJpYS12YWx1ZW1heD17e2Vvc0FjY291bnRPYmplY3QuY3B1X2xpbWl0X21heH19IG5nLXN0eWxlPXt7ZW9zQWNjb3VudE9iamVjdC5jcHVfc3R5bGVfc21hbGx9fSBzdHlsZT17e2Vvc0FjY291bnRPYmplY3QuY3B1X2xpbWl0X3Byb2dyZXNzfX0lPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMTYgY29sLW1kLTEyIGNvbC1zbS0xMiBjb2wteHMtMjRcIj48c3Bhbj5SQU08L3NwYW4+IDxzcGFuIGNsYXNzPWZsb2F0LXJpZ2h0Pnt7ZW9zQWNjb3VudE9iamVjdC5yYW1fdXNhZ2V9fSB7e2Vvc0FjY291bnRPYmplY3QucmFtX3VuaXRfdXNhZ2V9fSAvIHt7ZW9zQWNjb3VudE9iamVjdC5yYW1fcXVvdGF9fSB7e2Vvc0FjY291bnRPYmplY3QucmFtX3VuaXRfcXVvdGF9fTwvc3Bhbj48ZGl2IGNsYXNzPXByb2dyZXNzPjxkaXYgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZCByZWQ7aGVpZ2h0OiBpbmhlcml0XCIgdGl0bGU9MCUgbmctaWY9XCJlb3NBY2NvdW50T2JqZWN0LnJhbV91c2FnZT09MFwiPjwvZGl2PjxkaXYgdGl0bGU9XCJ7e2Vvc0FjY291bnRPYmplY3QucmFtX3Byb2dyZXNzfX0gJVwiIGNsYXNzPVwicHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci1pbmZvXCIgcm9sZT1wcm9ncmVzc2JhciBhcmlhLXZhbHVlbm93PXt7ZW9zQWNjb3VudE9iamVjdC5yYW1fdXNhZ2V9fSBhcmlhLXZhbHVlbWluPTAgYXJpYS12YWx1ZW1heD17e2Vvc0FjY291bnRPYmplY3QucmFtX3F1b3RhfX0gbmctc3R5bGU9e3tlb3NBY2NvdW50T2JqZWN0LnJhbV9zdHlsZV9zbWFsbH19IHN0eWxlPVwid2lkdGg6IHt7ZW9zQWNjb3VudE9iamVjdC5yYW1fcHJvZ3Jlc3N9fSVcIj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTE2IGNvbC1tZC0xMiBjb2wtc20tMTIgY29sLXhzLTI0XCI+PHNwYW4+TmV0d29yazwvc3Bhbj4gPHNwYW4gY2xhc3M9ZmxvYXQtcmlnaHQ+e3tlb3NBY2NvdW50T2JqZWN0Lm5ldF9saW1pdF91c2VkfX0ge3tlb3NBY2NvdW50T2JqZWN0Lm5ldF91bml0X3VzZWR9fSAvIHt7ZW9zQWNjb3VudE9iamVjdC5uZXRfbGltaXRfbWF4fX0ge3tlb3NBY2NvdW50T2JqZWN0Lm5ldF91bml0X21heH19ICh7e2Vvc0FjY291bnRPYmplY3QubmV0X3dlaWdodH19KTwvc3Bhbj48ZGl2IGNsYXNzPXByb2dyZXNzPjxkaXYgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZCByZWQ7aGVpZ2h0OiBpbmhlcml0XCIgdGl0bGU9MCUgbmctaWY9XCJlb3NBY2NvdW50T2JqZWN0Lm5ldF9saW1pdF91c2VkPT0wXCI+PC9kaXY+PGRpdiB0aXRsZT1cInt7ZW9zQWNjb3VudE9iamVjdC5uZXRfbGltaXRfcHJvZ3Jlc3N9fSAlXCIgY2xhc3M9XCJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLXByaW1hcnlcIiByb2xlPXByb2dyZXNzYmFyIGFyaWEtdmFsdWVub3c9e3tlb3NBY2NvdW50T2JqZWN0Lm5ldF9saW1pdF91c2VkfX0gYXJpYS12YWx1ZW1pbj0wIGFyaWEtdmFsdWVtYXg9e3tlb3NBY2NvdW50T2JqZWN0Lm5ldF9saW1pdF9tYXh9fSBuZy1zdHlsZT17e2Vvc0FjY291bnRPYmplY3QubmV0X3N0eWxlX3NtYWxsfX0gc3R5bGU9XCJ3aWR0aDoge3tlb3NBY2NvdW50T2JqZWN0Lm5ldF9saW1pdF9wcm9ncmVzc319JVwiPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9IWRhdGFMb2FkaW5nIGNsYXNzPVwib2Zmc2V0LWxnLTQgY29sLWxnLTE2IHAtNCBweC00IHBiLTQgdGV4dC1jZW50ZXJcIj48YnV0dG9uIHR5cGU9c3VibWl0IGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIHctMTAwXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1oYW5kc2hha2VcIj48L3NwYW4+IENvbXBsZXRlIG9uYm9hcmRpbmc8L2J1dHRvbj48L2Rpdj48ZGl2IG5nLWlmPWRhdGFMb2FkaW5nIGNsYXNzPVwiY29sLWxnLTI0IG15LTQgdGV4dC1jZW50ZXJcIj48ZGl2IGNsYXNzPWxvYWRlcj48L2Rpdj48YiBjbGFzcz1cInBhbmVsLXRpdGxlIG1sLTJcIiBzdHlsZT12ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y29sb3I6IzM0OThkYj5Qcm9jZXNzaW5nIG9uYm9hcmRpbmcuLi48L2I+PC9kaXY+PGRpdiBuZy1pZj1cImVycm9yTXNnICYmIHNpZ251cENoZWNrRG9uZSAmJiBzaWdudXBPSyAmJiAhZGF0YUxvYWRpbmdcIiBjbGFzcz1jb2wtbGctMjQ+PGRpdiBjbGFzcz1cIm15LTIgdGV4dC1jZW50ZXIgdGV4dC1kYW5nZXJcIj48aDY+e3tlcnJvck1zZ319PC9oNj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Zvcm0+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAxX2luZGV4L2FuZ3VsYXJUZW1wbGF0ZXMvc2lnbnVwLW9sZC5odG1sJywnPGRpdiBjbGFzcz1cImNhcmQgbS00XCI+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTkgdGV4dC1jZW50ZXJcIiBzdHlsZT1cImJvcmRlci1yaWdodDogMC4zcmVtIHNvbGlkICMyQzYwRTU7cGFkZGluZzoyLjRyZW0gIWltcG9ydGFudDtcIj48aW1nIGNsYXNzPXctMTAwIHNyYz0vc3RhdGljL2ltZy9pZGVhLWRldmVsb3BtZW50LnBuZz48ZGl2IGNsYXNzPXAtMD48ZGl2IGNsYXNzPVwicHktMSBjb2wtMjQgYm9sZFwiIHN0eWxlPVwiZm9udC1zaXplOiAycmVtOyBjb2xvcjogOyB0ZXh0LWFsaWduOiBsZWZ0OyBiYWNrZ3JvdW5kLWNvbG9yOiA7XCI+QnVpbGQgd2l0aCBLYXRhbHlvLjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cC0wPjxkaXYgY2xhc3M9XCJweS0xIGNvbC0yNCBib2xkXCIgc3R5bGU9XCJmb250LXNpemU6IDJyZW07IGNvbG9yOiA7IHRleHQtYWxpZ246IGxlZnQ7IGJhY2tncm91bmQtY29sb3I6IDtcIj5VbmxlYXNoIGlubm92YXRpb24uPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1wLTA+PGRpdiBjbGFzcz1cInB5LTEgY29sLTI0IGJvbGRcIiBzdHlsZT1cImZvbnQtc2l6ZTogMnJlbTsgY29sb3I6ICMwZTFhMzk7IHRleHQtYWxpZ246IGxlZnQ7IGJhY2tncm91bmQtY29sb3I6IDtcIj5ObyBjb2RpbmcuPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1wLTA+PGRpdiBjbGFzcz1cInB5LTEgY29sLTI0XCIgc3R5bGU9XCJmb250LXNpemU6IDEuNXJlbTsgY29sb3I6ICMwZTFhMzk7IHRleHQtYWxpZ246IGxlZnQ7IGJhY2tncm91bmQtY29sb3I6IDtcIj5TaWdudXAgbm93ITwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cC0wPjxkaXYgY2xhc3M9XCJweS0xIGNvbC0yNFwiIHN0eWxlPVwiZm9udC1zaXplOiAxLjE3cmVtOyBjb2xvcjogIzBlMWEzOTsgdGV4dC1hbGlnbjogbGVmdDsgYmFja2dyb3VuZC1jb2xvcjogO1wiPk5vdCBvbmx5IGl0XFwncyBmcmVlIGJ1dCB5b3UgY2FuIGVhcm4gcmV3YXJkcyBmb3IgYnVpbGRpbmcgd2l0aCBLYXRhbHlvITwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cC0wPjxkaXYgY2xhc3M9XCJweS0xIGNvbC0yNFwiIHN0eWxlPVwiZm9udC1zaXplOiAwLjhyZW07IGNvbG9yOiAjMGUxYTM5OyB0ZXh0LWFsaWduOiBsZWZ0OyBiYWNrZ3JvdW5kLWNvbG9yOiA7XCI+QWxyZWFkeSBoYXZlIGFuIGFjY291bnQ/IDxhIGNsYXNzPW1sLTIgaHJlZj0vIyEvbG9naW4+TG9nIGluPC9hPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgbS0xIGJnLXdoaXRlXCIgc3R5bGU9XCJwYWRkaW5nOiAyLjRyZW0gIWltcG9ydGFudFwiPjxmb3JtIG5nLXN1Ym1pdD1zaWdudXAoZm9ybS4kdmFsaWQpIGlkPWxvZ2luRm9ybSBuYW1lPWZvcm0gY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYgbmctaWY9IXNpZ251cFN1Y2Nlc3M+PGRpdiBjbGFzcz48aDIgY2xhc3M9dGV4dC1jZW50ZXI+UmVhZHkgdG8gYnVpbGQgd2l0aCBLYXRhbHlvPzwvaDI+PGg1IG5nLWlmPSFkYXRhTG9hZGluZyBjbGFzcz1cInRleHQtaW5mbyB0ZXh0LWNlbnRlclwiPkVudGVyIHlvdXIgZS1tYWlsIGFuZCBzdGFydCBidWlsZGluZyB0b2RheTwvaDU+PGRpdiBuZy1pZj1kYXRhTG9hZGluZyBjbGFzcz10ZXh0LWNlbnRlcj48ZGl2IGNsYXNzPWxvYWRlcj48L2Rpdj48YiBjbGFzcz1cInBhbmVsLXRpdGxlIG1sLTJcIiBzdHlsZT12ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y29sb3I6IzM0OThkYj5Qcm9jZXNzaW5nIHNpZ251cCByZXF1ZXN0Li4uPC9iPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctc2hvdz0hc2lnbnVwU3VjY2VzcyBjbGFzcz1cImZvcm0tZ3JvdXAgcm93XCIgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IGZvcm0uZW1haWwuJGRpcnR5ICYmIGZvcm0uZW1haWwuJGVycm9yLnJlcXVpcmVkIH1cIj48ZGl2IGNsYXNzPWNvbC0yND48bGFiZWwgY2xhc3M9aDUgc3R5bGUgZm9yPWVtYWlsPkUtbWFpbDwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1jb2wtMjQ+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1lbWFpbCBpZD1lbWFpbCBuZy1kaXNhYmxlZD1kYXRhTG9hZGluZyBjbGFzcz1mb3JtLWNvbnRyb2wgbmFtZT1lbWFpbCBwbGFjZWhvbGRlcj1cIkVudGVyIGUtbWFpbFwiPiA8c3BhbiBuZy1zaG93PVwiZm9ybS5lbWFpbC4kZGlydHkgJiYgZm9ybS5lbWFpbC4kZXJyb3IucmVxdWlyZWRcIiBjbGFzcz1oZWxwLWJsb2NrPkUtbWFpbCBpcyByZXF1aXJlZDwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXQtMlwiPjxkaXYgdmMtcmVjYXB0Y2hhIGtleT1cIlxcJzZMZC1nbWNVQUFBQUFBWjZxNVk1dkc2R3JUME1weG5BT04wWGhYbmNcXCdcIiBvbi1jcmVhdGU9b25XaWRnZXRDcmVhdGUod2lkZ2V0SWQpIG5nLW1vZGVsPWNhcHRjaGFSZXNwb25zZSBzaXplPW5vcm1hbD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIG10LTJcIj48ZGl2IGNsYXNzPXRleHQtY2VudGVyPjxzbWFsbD5CeSBjbGlja2luZyBcIlNpZ24gdXAgZm9yIEthdGFseW9cIiwgeW91IGFncmVlIHRvIG91ciA8YSBocmVmPWh0dHBzOi8vYmV0YS5rYXRhbHlvLmNvbS8jIS9ubS9wdWJsaWMvMS90ZXJtcz50ZXJtcyBvZiBzZXJ2aWNlPC9hPiBhbmQgPGEgaHJlZj1odHRwczovL2JldGEua2F0YWx5by5jb20vIyEvbm0vcHVibGljLzEvcHJpdmFjeT5wcml2YWN5IHN0YXRlbWVudDwvYT4uPC9zbWFsbD48L2Rpdj48ZGl2IGNsYXNzPXRleHQtY2VudGVyPjxzbWFsbD5Zb3VyIGUtbWFpbCB3aWxsIGJlIHVzZWQgb25seSB0byBpbnRlcmFjdCB3aXRoIHRoZSBzeXN0ZW0gYW5kIHRvIHJlY2VpdmUgbm90aWZpY2F0aW9ucy48L3NtYWxsPjwvZGl2PjxkaXYgY2xhc3M9dGV4dC1jZW50ZXI+PHNtYWxsPkF0IEthdGFseW8gd2UgdmFsdWUgeW91ciBwcml2YWN5IHNvIHdlIHByb21pc2UgbmV2ZXIgdG8gc2hhcmUgeW91ciBlLW1haWwgd2l0aCBhbnlvbmU8L3NtYWxsPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9IXNpZ251cFN1Y2Nlc3MgY2xhc3M9Y29udHJvbHM+PGRpdiBjbGFzcz10ZXh0LXJpZ2h0PjxidXR0b24gdHlwZT1zdWJtaXQgbmctZGlzYWJsZWQ9XCJmb3JtLiRpbnZhbGlkIHx8IGRhdGFMb2FkaW5nXCIgaWQ9bG9naW5CdG4gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBkYXRhLWxvYWRpbmctdGV4dD1cIjxzcGFuIGNsYXNzPVxcJ2ZhIGZhLWhvdXJnbGFzc1xcJz48L3NwYW4+IFNpZ25pbmcgdXAuLi5cIj48c3BhbiBjbGFzcz1cImZhIGZhLXVzZXItcGx1c1wiPjwvc3Bhbj4gU2lnbiB1cCBmb3IgS2F0YWx5bzwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9c2lnbnVwU3VjY2Vzcz48ZGl2IGNsYXNzPVwidGV4dC1zdWNjZXNzIHRleHQtY2VudGVyXCI+PGkgY2xhc3M9XCJmYSBmYS1jaGVjay1zcXVhcmUgZmEtNHhcIj48L2k+PC9kaXY+PGRpdiBjbGFzcz1cInRleHQtc3VjY2VzcyBoNSB0ZXh0LWNlbnRlclwiPlRoYW5rIHlvdSBmb3Igc2lnbmluZyB1cCB0byBLYXRhbHlvICE8L2Rpdj48ZGl2IGNsYXNzPVwidGV4dC1wcmltYXJ5IGg2IHRleHQtY2VudGVyXCI+PHNwYW4gY2xhc3M9aDY+PGkgY2xhc3M9XCJmYSBmYS1lbnZlbG9wZSBtci0xXCI+PC9pPiBZb3UgaGF2ZSBzaWduZWQgdXAgd2l0aCBlbWFpbDoge3tlbWFpbH19PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJ0ZXh0LWRhcmsgdGV4dC1jZW50ZXJcIj48c3Bhbj5UbyBjb21wbGV0ZSB0aGUgc2lnbnVwIHByb2Nlc3MgcGxlYXNlIGNoZWNrIHlvdXIgaW5ib3ggYW5kIHZlcmlmeSBlbnRlcmVkIGUtbWFpbCE8L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1lcnJvck1zZyBjbGFzcz1cInJvdyBwLTIgcm91bmRlZCBhbGVydC1kYW5nZXJcIj48ZGl2IGNsYXNzPWNvbD57e2Vycm9yTXNnfX08L2Rpdj48ZGl2IGNsYXNzPWNvbC1hdXRvPjxhIGhyZWYgY2xhc3M9XCJ0ZXh0LWRhbmdlciBtbC0yXCIgbmctY2xpY2s9aGlkZUVycm9yKCk+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2E+PC9kaXY+PC9kaXY+PC9mb3JtPjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL3NpZ251cC5odG1sJywnPHN0eWxlPlxcclxcblxcclxcbi5maXJlcGl0IHtcXHJcXG5cXHRwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgIHRvcDogNjUlO1xcclxcbiAgICByaWdodDogMTEuNSU7XFxyXFxufVxcclxcblxcclxcbi5maXJlIHtcXHJcXG5cXHRwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XFxyXFxuXFx0ZmlsdGVyOiBibHVyKDAuMDRlbSk7XFxyXFxuXFx0d2lkdGg6My4ydnc7XFxyXFxuXFx0aGVpZ2h0OjMuMnZ3O1xcclxcbn1cXHJcXG5cXHJcXG5cXHJcXG5cXHJcXG5AbWVkaWEgKG1heC13aWR0aDogOTkycHgpIHtcXHJcXG5cXHQuZmlyZXtcXHJcXG5cXHRcXHR3aWR0aDogNy4ydnc7XFxyXFxuXFx0XFx0aGVpZ2h0OiA3LjJ2dztcXHJcXG5cXHR9XFxyXFxuXFx0LmZpcmVwaXQge1xcclxcblxcdFxcdHBvc2l0aW9uOiBhYnNvbHV0ZTsgIFxcclxcblxcdFxcdHRvcDogNjMlO1xcclxcblxcdFxcdGxlZnQ6IDc5JTtcXHJcXG5cXHR9XFxyXFxufVxcclxcblxcclxcbiAgXFxyXFxuLmZpcmVwaXQyIHtcXHJcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gIGJvdHRvbTogMDtcXHJcXG4gIGxlZnQ6IDQ3JTtcXHJcXG59XFxyXFxuICBcXHJcXG4uZmlyZUJpZyB7XFxyXFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICB3aWR0aDogNjBweDtcXHJcXG4gIGhlaWdodDogNjBweDtcXHJcXG59XFxyXFxuXFxyXFxuLmZpcmUgLmZsYW1lIHtcXHJcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gIGJvdHRvbTogMDtcXHJcXG4gIGxlZnQ6IDA7XFxyXFxuICBvcGFjaXR5OiAuOTtcXHJcXG4gIHdpZHRoOiAxMDAlO1xcclxcbiAgaGVpZ2h0OiAxMDAlO1xcclxcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDcwJTtcXHJcXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDcwJTtcXHJcXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDcwJTtcXHJcXG4gIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZykgc2tldygtMTBkZWcsIC0xMGRlZyk7XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYyMjAwO1xcclxcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSBsZWZ0LCByZ2JhKDI1NSwgMzQsIDAsIDAuOSksIHJnYmEoMjU1LCAxMDYsIDAsIDAuNykpO1xcclxcbiAgei1pbmRleDogMTtcXHJcXG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xcclxcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XFxyXFxuICBhbmltYXRpb24tbmFtZTogYnVybi1sZWZ0O1xcclxcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAzMDBtcztcXHJcXG59XFxyXFxuLmZpcmUgLmZsYW1lOm50aC1vZi10eXBlKDJuKSB7XFxyXFxuICBhbmltYXRpb24tbmFtZTogYnVybi1yaWdodDtcXHJcXG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogNDAwbXM7XFxyXFxufVxcclxcbi5maXJlIC5mbGFtZTpudGgtb2YtdHlwZSgyKSB7XFxyXFxuICBoZWlnaHQ6IDgwJTtcXHJcXG4gIHdpZHRoOiA4MCU7XFxyXFxuICBsZWZ0OiAxMCU7XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2YTAwO1xcclxcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSBsZWZ0LCByZ2JhKDI1NSwgMTA2LCAwLCAwLjEpLCByZ2JhKDI1NSwgMjAwLCAwLCAwLjEpKTtcXHJcXG4gIHotaW5kZXg6IDI7XFxyXFxufVxcclxcbi5maXJlIC5mbGFtZTpudGgtb2YtdHlwZSgzKSB7XFxyXFxuICBoZWlnaHQ6IDUwJTtcXHJcXG4gIHdpZHRoOiA1MCU7XFxyXFxuICBsZWZ0OiAyNSU7XFxyXFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tIGxlZnQsICNmZmM4MDAsICNmZmZmZmYpO1xcclxcbiAgei1pbmRleDogMztcXHJcXG59XFxyXFxuLmZpcmUgLmZsYW1lOm50aC1vZi10eXBlKDQpIHtcXHJcXG4gIGhlaWdodDogMzAlO1xcclxcbiAgd2lkdGg6IDMwJTtcXHJcXG4gIGxlZnQ6IDM1JTtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xcclxcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSBsZWZ0LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyksIHJnYmEoMCwgNTUsIDI1NSwgMC45KSk7XFxyXFxuICBvcGFjaXR5OiAxO1xcclxcbiAgei1pbmRleDogNDtcXHJcXG59XFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuXFxyXFxuQGtleWZyYW1lcyBidXJuLWxlZnQge1xcclxcbiAgMCUsIDEwMCUge1xcclxcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpIHNrZXcoLTEwZGVnLCAtMTBkZWcpIHNjYWxlKDEpO1xcclxcbiAgfVxcclxcbiAgMzAlLCA2MCUge1xcclxcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDRkZWcpIHNrZXcoLTEyZGVnLCAtMTJkZWcpIHNjYWxlKDEuMDEpO1xcclxcbiAgfVxcclxcbn1cXHJcXG5Aa2V5ZnJhbWVzIGJ1cm4tcmlnaHQge1xcclxcbiAgMCUsIDEwMCUge1xcclxcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpIHNrZXcoLTEwZGVnLCAtMTBkZWcpIHNjYWxlKDEpO1xcclxcbiAgfVxcclxcbiAgMzAlLCA2MCUge1xcclxcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDZkZWcpIHNrZXcoLTZkZWcsIC02ZGVnKSBzY2FsZSgxLjAxKTtcXHJcXG4gIH1cXHJcXG59XFxyXFxuQGtleWZyYW1lcyBmbHktdXAtYnVybm91dC0xIHtcXHJcXG4gIDAlIHtcXHJcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XFxyXFxuICAgIG9wYWNpdHk6IDE7XFxyXFxuICB9XFxyXFxuICAzMyUge1xcclxcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMnB4LCAtNzBweCk7XFxyXFxuICB9XFxyXFxuICA2NiUge1xcclxcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMTQwcHgpO1xcclxcbiAgICBvcGFjaXR5OiAuNjtcXHJcXG4gIH1cXHJcXG4gIDEwMCUge1xcclxcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg2cHgsIC0yMDBweCk7XFxyXFxuICAgIG9wYWNpdHk6IDA7XFxyXFxuICB9XFxyXFxufVxcclxcbkBrZXlmcmFtZXMgZmx5LXVwLWJ1cm5vdXQtMiB7XFxyXFxuICAwJSB7XFxyXFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xcclxcbiAgICBvcGFjaXR5OiAxO1xcclxcbiAgfVxcclxcbiAgNTAlIHtcXHJcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTEwcHgsIC04MHB4KTtcXHJcXG4gIH1cXHJcXG4gIDgwJSB7XFxyXFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC00cHgsIC0xNDBweCk7XFxyXFxuICAgIG9wYWNpdHk6IC42O1xcclxcbiAgfVxcclxcbiAgMTAwJSB7XFxyXFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC02cHgsIC0xNjBweCk7XFxyXFxuICAgIG9wYWNpdHk6IDA7XFxyXFxuICB9XFxyXFxufVxcclxcblxcclxcbjwvc3R5bGU+PGRpdiBjbGFzcz1cImNhcmQgY29sLTI0IHNoYWRvdy1zbVwiPjxkaXY+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTkgdGV4dC1jZW50ZXJcIiBzdHlsZT1cImJvcmRlci1yaWdodDogMC4zcmVtIHNvbGlkICMyQzYwRTU7cGFkZGluZzoyLjRyZW0gIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTowICFpbXBvcnRhbnQ7cGFkZGluZy10b3A6MXJlbSAhaW1wb3J0YW50O1wiPjxkaXYgY2xhc3M9XCJwLTMgdGV4dC1jZW50ZXJcIiBzdHlsZT1cImZvbnQtc2l6ZTogeHh4LWxhcmdlO1wiPlN0YXJ0IGJ1aWxkaW5nIHRvZGF5PC9kaXY+PGRpdiBjbGFzcz1cInctMTAwIG15LTRcIiBzdHlsZT1wb3NpdGlvbjpyZWxhdGl2ZT48aW1nIHNyYz0vaW1nL2lkZWEtZGV2ZWxvcG1lbnQucG5nIGNsYXNzPXctMTAwPjxkaXYgY2xhc3M9ZmlyZXBpdD48ZGl2IGNsYXNzPWZpcmU+PGRpdiBjbGFzcz1mbGFtZT48L2Rpdj48ZGl2IGNsYXNzPWZsYW1lPjwvZGl2PjxkaXYgY2xhc3M9ZmxhbWU+PC9kaXY+PGRpdiBjbGFzcz1mbGFtZT48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiZC1ub25lIG10LTQgZC1tZC1ibG9ja1wiPjxkaXYgY2xhc3M9cC0wPjxkaXYgY2xhc3M9XCJweS0xIGNvbC0yNFwiIHN0eWxlPVwiZm9udC1zaXplOiAycmVtOyBjb2xvcjogOyB0ZXh0LWFsaWduOiBtaWRkbGU7IGJhY2tncm91bmQtY29sb3I6IDtcIj5CdWlsZCB3aXRoIEthdGFseW8uPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1wLTA+PGRpdiBjbGFzcz1cInB5LTEgY29sLTI0XCIgc3R5bGU9XCJmb250LXNpemU6IDJyZW07IGNvbG9yOiAjMGUxYTM5OyB0ZXh0LWFsaWduOiBtaWRkbGU7IGJhY2tncm91bmQtY29sb3I6IDtcIj5VbmxlYXNoIGlubm92YXRpb24uPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1wLTA+PGRpdiBjbGFzcz1cInB5LTEgY29sLTI0XCIgc3R5bGU9XCJmb250LXNpemU6IDJyZW07IGNvbG9yOiAjMGUxYTM5OyB0ZXh0LWFsaWduOiBtaWRkbGU7IGJhY2tncm91bmQtY29sb3I6IDtcIj5ObyBjb2RpbmcuPC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImQtbm9uZSBwLTBcIj48ZGl2IGNsYXNzPVwicHQtNCBjb2wtMjRcIiBzdHlsZT1cImZvbnQtc2l6ZTogMXJlbTsgY29sb3I6ICMwZTFhMzk7IHRleHQtYWxpZ246IG1pZGRsZTsgYmFja2dyb3VuZC1jb2xvcjogO1wiPkRpZCB5b3Uga25vdyB5b3UgY2FuIGVhcm4gcmV3YXJkcyBmb3IgYnVpbGRpbmcgd2l0aCBLYXRhbHlvITwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJwLTAgZC1ub25lIGQtbWQtYmxvY2tcIj48ZGl2IGNsYXNzPVwicHktMSBjb2wtMjRcIiBzdHlsZT1cImZvbnQtc2l6ZTogMC44cmVtOyBjb2xvcjogIzBlMWEzOTsgdGV4dC1hbGlnbjogbWlkZGxlOyBiYWNrZ3JvdW5kLWNvbG9yOiA7XCI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCBtLTEgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGJnLXdoaXRlXCIgc3R5bGU9XCJwYWRkaW5nOiAyLjRyZW0gIWltcG9ydGFudDtwYWRkaW5nLXRvcDoxcmVtICFpbXBvcnRhbnQ7XCI+PGRpdiBjbGFzcz1cImQtbm9uZSBkLW1kLWJsb2NrIHB5LTRcIj48L2Rpdj48Zm9ybSBuZy1zdWJtaXQ9c2lnbnVwKGZvcm0uJHZhbGlkKSBpZD1sb2dpbkZvcm0gbmFtZT1mb3JtIGNsYXNzPWZvcm0taG9yaXpvbnRhbCByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2IG5nLWlmPSFzaWdudXBTdWNjZXNzPjxkaXYgY2xhc3M+PGRpdiBjbGFzcz1cInAtMyB0ZXh0LWNlbnRlclwiIHN0eWxlPVwiZm9udC1zaXplOiB4eHgtbGFyZ2U7XCI+U2lnbiB1cDwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctc2hvdz0hc2lnbnVwU3VjY2VzcyBjbGFzcz1cImZvcm0tZ3JvdXAgcm93XCIgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IGZvcm0uZW1haWwuJGRpcnR5ICYmIGZvcm0uZW1haWwuJGVycm9yLnJlcXVpcmVkIH1cIj48ZGl2IGNsYXNzPVwiY29sLXNtLTE4IG9mZnNldC1zbS0yIGNvbC1tZC0xNCBvZmZzZXQtbWQtNVwiPjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9ZW1haWwgaWQ9ZW1haWwgbmctZGlzYWJsZWQ9ZGF0YUxvYWRpbmcgY2xhc3M9Zm9ybS1jb250cm9sIG5hbWU9ZW1haWwgcGxhY2Vob2xkZXI9XCJFbnRlciBlLW1haWxcIj4gPHNwYW4gbmctc2hvdz1cImZvcm0uZW1haWwuJGRpcnR5ICYmIGZvcm0uZW1haWwuJGVycm9yLnJlcXVpcmVkXCIgY2xhc3M9aGVscC1ibG9jaz5FLW1haWwgaXMgcmVxdWlyZWQ8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0yNCBteS00XCI+PGRpdiBzdHlsZT1cIm1hcmdpbjogMCBhdXRvO2Rpc3BsYXk6IHRhYmxlXCIgdmMtcmVjYXB0Y2hhIGtleT1cIlxcJzZMZC1nbWNVQUFBQUFBWjZxNVk1dkc2R3JUME1weG5BT04wWGhYbmNcXCdcIiBvbi1jcmVhdGU9b25XaWRnZXRDcmVhdGUod2lkZ2V0SWQpIG5nLW1vZGVsPWNhcHRjaGFSZXNwb25zZSBzaXplPW5vcm1hbD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiZC1ibG9jayBkLW1kLW5vbmUgY29sLTI0IG10LTJcIj48ZGl2IGNsYXNzPXRleHQtY2VudGVyPjxzbWFsbD5CeSBjbGlja2luZyBcIlNpZ24gdXAgZm9yIEthdGFseW9cIiwgeW91IGFncmVlIHRvIG91ciA8YSBocmVmPWh0dHBzOi8vYmV0YS5rYXRhbHlvLmNvbS9ubS9wdWJsaWMvMS90ZXJtcz50ZXJtcyBvZiBzZXJ2aWNlPC9hPiBhbmQgPGEgaHJlZj1odHRwczovL2JldGEua2F0YWx5by5jb20vbm0vcHVibGljLzEvcHJpdmFjeT5wcml2YWN5IHN0YXRlbWVudDwvYT4uPC9zbWFsbD4gPHNtYWxsPllvdXIgZS1tYWlsIHdpbGwgYmUgdXNlZCBvbmx5IHRvIGludGVyYWN0IHdpdGggdGhlIHN5c3RlbSBhbmQgdG8gcmVjZWl2ZSBub3RpZmljYXRpb25zLjwvc21hbGw+IDxzbWFsbD5BdCBLYXRhbHlvIHdlIHZhbHVlIHlvdXIgcHJpdmFjeSBzbyB3ZSBwcm9taXNlIG5ldmVyIHRvIHNoYXJlIHlvdXIgZS1tYWlsIHdpdGggYW55b25lPC9zbWFsbD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwiIXNpZ251cFN1Y2Nlc3MgJiYgIWRhdGFMb2FkaW5nXCIgY2xhc3M9XCJyb3cgbXQtNFwiPjxkaXYgY2xhc3M9XCJjb2wtMjQgcHQtNCB0ZXh0LWNlbnRlclwiPjxidXR0b24gdHlwZT1zdWJtaXQgbmctZGlzYWJsZWQ9XCJmb3JtLiRpbnZhbGlkIHx8IGRhdGFMb2FkaW5nXCIgaWQ9bG9naW5CdG4gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBkYXRhLWxvYWRpbmctdGV4dD1cIjxzcGFuIGNsYXNzPVxcJ2ZhIGZhLWhvdXJnbGFzc1xcJz48L3NwYW4+IFNpZ25pbmcgdXAuLi5cIj5TaWduIHVwIGZvciBLYXRhbHlvPC9idXR0b24+PGRpdiBjbGFzcz1cImQtbm9uZSBkLW1kLWJsb2NrIGNvbC0yNCBtdC0yXCI+PGRpdiBjbGFzcz10ZXh0LWNlbnRlcj48c21hbGw+QnkgY2xpY2tpbmcgXCJTaWduIHVwIGZvciBLYXRhbHlvXCIsIHlvdSBhZ3JlZSB0byBvdXIgPGEgaHJlZj1odHRwczovL2JldGEua2F0YWx5by5jb20vbm0vcHVibGljLzEvdGVybXM+dGVybXMgb2Ygc2VydmljZTwvYT4gYW5kIDxhIGhyZWY9aHR0cHM6Ly9iZXRhLmthdGFseW8uY29tL25tL3B1YmxpYy8xL3ByaXZhY3k+cHJpdmFjeSBzdGF0ZW1lbnQ8L2E+Ljwvc21hbGw+PC9kaXY+PGRpdiBjbGFzcz10ZXh0LWNlbnRlcj48c21hbGw+WW91ciBlLW1haWwgd2lsbCBiZSB1c2VkIG9ubHkgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgc3lzdGVtIGFuZCB0byByZWNlaXZlIG5vdGlmaWNhdGlvbnMuPC9zbWFsbD48L2Rpdj48ZGl2IGNsYXNzPXRleHQtY2VudGVyPjxzbWFsbD5BdCBLYXRhbHlvIHdlIHZhbHVlIHlvdXIgcHJpdmFjeSBzbyB3ZSBwcm9taXNlIG5ldmVyIHRvIHNoYXJlIHlvdXIgZS1tYWlsIHdpdGggYW55b25lPC9zbWFsbD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTI0IHRleHQtY2VudGVyXCI+PGRpdiBjbGFzcz1cIm10LTUgcHktNSBjb2wtMjRcIiBzdHlsZT1cImZvbnQtc2l6ZTogMC44cmVtOyBjb2xvcjogIzBlMWEzOTsgdGV4dC1hbGlnbjogbWlkZGxlOyBiYWNrZ3JvdW5kLWNvbG9yOiA7XCI+QWxyZWFkeSBoYXZlIGFuIGFjY291bnQ/IDxhIGNsYXNzPW1sLTIgaHJlZj0vbG9naW4+TG9nIGluPC9hPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCIhc2lnbnVwU3VjY2VzcyAmJiBkYXRhTG9hZGluZ1wiIGNsYXNzPXJvdz48ZGl2IGNsYXNzPVwiY29sLTI0IHRleHQtY2VudGVyXCI+PGRpdiBjbGFzcz1sb2FkZXI+PC9kaXY+PGIgY2xhc3M9XCJwYW5lbC10aXRsZSBtbC0yXCIgc3R5bGU9dmVydGljYWwtYWxpZ246bWlkZGxlO2NvbG9yOiMzNDk4ZGI+UHJvY2Vzc2luZyBzaWdudXAgcmVxdWVzdC4uLjwvYj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPXNpZ251cFN1Y2Nlc3M+PGRpdiBjbGFzcz1cInRleHQtc3VjY2VzcyB0ZXh0LWNlbnRlclwiPjxpIGNsYXNzPVwiZmEgZmEtY2hlY2stc3F1YXJlIGZhLTR4XCI+PC9pPjwvZGl2PjxkaXYgY2xhc3M9XCJtLTMgdGV4dC1zdWNjZXNzIGg1IHRleHQtY2VudGVyXCI+VGhhbmsgeW91IGZvciBzaWduaW5nIHVwIGZvciBLYXRhbHlvICE8L2Rpdj48ZGl2IGNsYXNzPVwidGV4dC1kYXJrIHRleHQtY2VudGVyXCIgc3R5bGU9XCJib3JkZXItcmFkaXVzOiA0cHg7cGFkZGluZzogN3B4O2ZvbnQtd2VpZ2h0OiA3MDA7XCI+PHNwYW4gc3R5bGU+VG8gY29tcGxldGUgdGhlIHNpZ251cCBwcm9jZXNzIHBsZWFzZSBjaGVjayB5b3VyIGluYm94IGF0PC9zcGFuPiA8c3BhbiBjbGFzcz1cInRleHQtcHJpbWFyeSBib2xkXCI+e3tlbWFpbH19PC9zcGFuPiAhPC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1lcnJvck1zZyBjbGFzcz1cInJvdyBwLTIgcm91bmRlZCBhbGVydC1kYW5nZXJcIj48ZGl2IGNsYXNzPWNvbD57e2Vycm9yTXNnfX08L2Rpdj48ZGl2IGNsYXNzPWNvbC1hdXRvPjxhIGhyZWYgY2xhc3M9XCJ0ZXh0LWRhbmdlciBtbC0yXCIgbmctY2xpY2s9aGlkZUVycm9yKCk+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2E+PC9kaXY+PC9kaXY+PC9mb3JtPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL3NpbXBsZWhlYWRlci5odG1sJywnPGRpdiBjbGFzcz1qdW1ib3Ryb24+PGgzIGNsYXNzPXRleHQtY2VudGVyPkthdGFseW88L2gzPjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL3Rhc2t0b29sYm94Lmh0bWwnLCc8ZGl2IGt0LXRhc2stdG9vbGJveCBjbGFzcz1wci0yIG5nLWlmPVwiZ3NydmMuZ2V0Rm9ybVZpZXdUeXBlKCk9PTEgJiYgIWdzcnZjLkdldFRhc2tUb29sQm94TG9hZGVkKClcIj48L2Rpdj48ZGl2IGNsYXNzPXByLTIgbmctaWY9XCJnc3J2Yy5nZXRGb3JtVmlld1R5cGUoKSE9MVwiPjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL3Rvb2xib3guaHRtbCcsJzxkaXYga3QtdG9vbGJveCBjbGFzcz1wci0yIG5nLXNob3c9XCJnc3J2Yy5nZXRGb3JtVmlld1R5cGUoKT09MVwiPjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwMV9pbmRleC9hbmd1bGFyVGVtcGxhdGVzL3VucmVnaXN0ZXIuaHRtbCcsJzxkaXYgY2xhc3M9Y29sLWxnLTI0PjxzdHlsZT5cXHJcXG4gICAgICAgICoge1xcclxcbiAgICAgICAgICAgIG1hcmdpbjogMDtcXHJcXG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xcclxcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjtcXHJcXG4gICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgLm1haW4tY29udGFpbmVyIHtcXHJcXG4gICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xcclxcbiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDI0LCAxZnIpO1xcclxcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICBoMSB7XFxyXFxuICAgICAgICAgICAgZm9udC1zaXplOiA2NHB4O1xcclxcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xcclxcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG4gICAgICAgICAgICBjb2xvcjogIzRDNEU1QztcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIGgyIHtcXHJcXG4gICAgICAgICAgICBmb250LXNpemU6IDI0cHg7XFxyXFxuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcXHJcXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMTtcXHJcXG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xcclxcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG4gICAgICAgICAgICBjb2xvcjogIzRDNEU1QztcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICNsZWZ0IHtcXHJcXG4gICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XFxyXFxuICAgICAgICAgICAgdG9wOiAwO1xcclxcbiAgICAgICAgICAgIGxlZnQ6IDA7XFxyXFxuICAgICAgICAgICAgd2lkdGg6IDYwJTtcXHJcXG4gICAgICAgICAgICB6LWluZGV4OiAtMTtcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICNyaWdodCB7XFxyXFxuICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkO1xcclxcbiAgICAgICAgICAgIGJvdHRvbTogMDtcXHJcXG4gICAgICAgICAgICByaWdodDogMDtcXHJcXG4gICAgICAgICAgICB3aWR0aDogNjAlO1xcclxcbiAgICAgICAgICAgIHotaW5kZXg6IC0xO1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgLmNscy1mb3JtIHtcXHJcXG4gICAgICAgICAgICBncmlkLWFyZWE6IDEgLyA2IC8gMiAvIDIwO1xcclxcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNFOEY2Rjg7XFxyXFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcXHJcXG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcclxcbiAgICAgICAgICAgIHBhZGRpbmc6IDQ4cHggMjRweDtcXHJcXG4gICAgICAgICAgICBnYXA6IDQ4cHg7XFxyXFxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxyXFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXHJcXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzMnB4O1xcclxcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAzMjBweDtcXHJcXG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHZoO1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgLmZvcm0tY29udHJvbCB7XFxyXFxuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XFxyXFxuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XFxyXFxuICAgICAgICAgICAgcGFkZGluZzogMC4zNzVyZW0gMC43NXJlbTtcXHJcXG4gICAgICAgICAgICBmb250LXNpemU6IDFyZW07XFxyXFxuICAgICAgICAgICAgLypmb250LXdlaWdodDogJGlucHV0LWZvbnQtd2VpZ2h0OyovXFxyXFxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcXHJcXG4gICAgICAgICAgICBjb2xvcjogIzI2MzE0RDtcXHJcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcclxcbiAgICAgICAgICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XFxyXFxuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0U3RTlFQztcXHJcXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xcclxcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDtcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XFxyXFxuICAgICAgICAgICAgLmZvcm0tY29udHJvbCB7XFxyXFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IG5vbmU7XFxyXFxuICAgICAgICAgICAgfVxcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgLmZvcm0tY29udHJvbDo6LW1zLWV4cGFuZCB7XFxyXFxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxyXFxuICAgICAgICAgICAgYm9yZGVyOiAwO1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgLmZvcm0tY29udHJvbDpmb2N1cyB7XFxyXFxuICAgICAgICAgICAgY29sb3I6IHJnYmEoMTQsIDI2LCA1NywgMC45KTtcXHJcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcclxcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogIzllYjZmMztcXHJcXG4gICAgICAgICAgICBvdXRsaW5lOiAwO1xcclxcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMTVyZW0gcmdiYSg0NCwgOTYsIDIyOSwgMC4yNSk7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAuZm9ybS1jb250cm9sOjpwbGFjZWhvbGRlciB7XFxyXFxuICAgICAgICAgICAgY29sb3I6ICNCN0JBQzQ7XFxyXFxuICAgICAgICAgICAgb3BhY2l0eTogMTtcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIC5mb3JtLWNvbnRyb2w6ZGlzYWJsZWQsXFxyXFxuICAgICAgICAuZm9ybS1jb250cm9sW3JlYWRvbmx5XSB7XFxyXFxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0YzRjNGNTtcXHJcXG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgZGl2LmlucHV0IHtcXHJcXG4gICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgLmJ0bi1vbmJvYXJkaW5nIHtcXHJcXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcclxcbiAgICAgICAgICAgIGdhcDogOHB4O1xcclxcbiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAyMHB4O1xcclxcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcXHJcXG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XFxyXFxuICAgICAgICAgICAgYmFja2dyb3VuZDogIzE3QTJCODtcXHJcXG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjMTdBMkI4O1xcclxcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDMuNnB4O1xcclxcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAuYnRuLW9uYm9hcmRpbmc6aG92ZXIge1xcclxcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIC5idG4tb25ib2FyZGluZz5pIHtcXHJcXG4gICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICBkaXYuaW5uZXItZm9ybSB7XFxyXFxuICAgICAgICAgICAgd2lkdGg6IDYwJTtcXHJcXG4gICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xcclxcbiAgICAgICAgICAgIGdhcDogMjRweDtcXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIC5pbWctcGFqYWphYyB7XFxyXFxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcclxcbiAgICAgICAgICAgIHdpZHRoOiAzMjBweDtcXHJcXG4gICAgICAgICAgICByaWdodDogLTEwMHB4O1xcclxcbiAgICAgICAgICAgIHRvcDogLTE5MHB4O1xcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgZGl2LmhlYWRlcnMge1xcclxcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XFxyXFxuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXHJcXG4gICAgICAgICAgICBnYXA6IDEycHg7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogMTkyMHB4KSB7XFxyXFxuICAgICAgICAgICAgaDEge1xcclxcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDUycHg7XFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgICAgIGgyIHtcXHJcXG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xcclxcbiAgICAgICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICAgICAuY2xzLWZvcm0ge1xcclxcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAxNjBweDtcXHJcXG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDtcXHJcXG4gICAgICAgICAgICAgICAgZ2FwOiAyNHB4O1xcclxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiA0MHB4IDI0cHg7XFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgICAgIGRpdi5pbm5lci1mb3JtIHtcXHJcXG4gICAgICAgICAgICAgICAgZ2FwOiAxNnB4O1xcclxcbiAgICAgICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICAgICAuaW1nLXBhamFqYWMge1xcclxcbiAgICAgICAgICAgICAgICB3aWR0aDogMjAwcHg7XFxyXFxuICAgICAgICAgICAgICAgIHJpZ2h0OiAtNzBweDtcXHJcXG4gICAgICAgICAgICAgICAgdG9wOiAtMTE2cHg7XFxyXFxuICAgICAgICAgICAgfVxcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDEyODBweCkge1xcclxcbiAgICAgICAgICAgIGgxIHtcXHJcXG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiA0MHB4O1xcclxcbiAgICAgICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICAgICBoMiB7XFxyXFxuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHtcXHJcXG4gICAgICAgICAgICAuY2xzLWZvcm0ge1xcclxcbiAgICAgICAgICAgICAgICBncmlkLWFyZWE6IDEgLyAzIC8gMiAvIDIzXFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgICAgIGgxIHtcXHJcXG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAzMnB4O1xcclxcbiAgICAgICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICAgICBoMiB7XFxyXFxuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAgICAgI2xlZnQge1xcclxcbiAgICAgICAgICAgICAgICB3aWR0aDogNzAlO1xcclxcbiAgICAgICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICAgICAjcmlnaHQge1xcclxcbiAgICAgICAgICAgICAgICB3aWR0aDogNzAlO1xcclxcbiAgICAgICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICAgICAuaW1nLXBhamFqYWMge1xcclxcbiAgICAgICAgICAgICAgICB3aWR0aDogMTgwcHg7XFxyXFxuICAgICAgICAgICAgICAgIHJpZ2h0OiAtNTVweDtcXHJcXG4gICAgICAgICAgICAgICAgdG9wOiAtMTA4cHg7XFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgICAgIGRpdi5pbm5lci1mb3JtIHtcXHJcXG4gICAgICAgICAgICAgICAgd2lkdGg6IDcwJTtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAgICAgLmJ0bi1vbmJvYXJkaW5nIHtcXHJcXG4gICAgICAgICAgICAgICAgZ2FwOiA4cHg7XFxyXFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxNnB4O1xcclxcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgICAgIC5idG4tb25ib2FyZGluZz5pIHtcXHJcXG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xcclxcbiAgICAgICAgICAgIH1cXHJcXG4gICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3MjBweCkge1xcclxcbiAgICAgICAgICAgIC5pbWctcGFqYWphYyB7XFxyXFxuICAgICAgICAgICAgICAgIHdpZHRoOiAxNDBweDtcXHJcXG4gICAgICAgICAgICAgICAgcmlnaHQ6IC00MHB4O1xcclxcbiAgICAgICAgICAgICAgICB0b3A6IC04MHB4O1xcclxcbiAgICAgICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICAgICAuY2xzLWZvcm0ge1xcclxcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAxNDBweDtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNTAwcHgpIHtcXHJcXG4gICAgICAgICAgICAuY2xzLWZvcm0ge1xcclxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiA2NHB4IDE2cHggMTZweCAxNnB4O1xcclxcbiAgICAgICAgICAgICAgICBncmlkLWFyZWE6IDEgLyAyIC8gMiAvIDI0XFxyXFxuICAgICAgICAgICAgfVxcclxcblxcclxcbiAgICAgICAgICAgIGgxIHtcXHJcXG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAyOHB4O1xcclxcbiAgICAgICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICAgICAuY2xzLWZvcm0ge1xcclxcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAxMjBweDtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAgICAgLmltZy1wYWphamFjIHtcXHJcXG4gICAgICAgICAgICAgICAgcmlnaHQ6IC0xMHB4O1xcclxcbiAgICAgICAgICAgICAgICB0b3A6IC04MHB4O1xcclxcbiAgICAgICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICAgICAjbGVmdCB7XFxyXFxuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xcclxcbiAgICAgICAgICAgIH1cXHJcXG5cXHJcXG4gICAgICAgICAgICAjcmlnaHQge1xcclxcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAgICAgZGl2LmlubmVyLWZvcm0ge1xcclxcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICB9XFxyXFxuPC9zdHlsZT48ZGl2IGNsYXNzPW1haW4tYm9keT48c3ZnIGlkPWxlZnQgdmlld2JveD1cIjAgMCAxMzQ5IDgwMlwiIGZpbGw9bm9uZSB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zz48cGF0aCBkPVwiTTc4MCAxMTlDMTAyNS45OCAxMjYuMjM0IDEzNzQuMTEgNDUuOTA4MSAxMzQ3LjQ1IDAuMDAwMTIxOTQ0TDAuMDAzMjQzOTQgMC4wMDAxODcyNTJMMC4wMDMxNzM4MyA4MDJDMzguMjYzMSA4MDIgODUuMDQ1MSA2ODkuMTg1IDEyNC4wMDEgMzg4QzE2Mi45NTYgODYuODE1NCA0NzIuNTMgMTA5Ljk1OCA3ODAgMTE5WlwiIGZpbGw9IzE3QTJCOCBmaWxsLW9wYWNpdHk9MC4xNT48L3BhdGg+PHBhdGggZD1cIk01NzkuOTk0IDkwQzc1Ni43OTQgOTUuMiA5ODcuNjY0IDMyLjk5OTggOTY4LjQ5OCAtMC4wMDAxODMyMDNMLTAuMDAyNjk2MTggLTAuMDAwMTQ1ODAyTC0wLjAwMjY4NTU1IDU3Ni41QzI3LjQ5NzMgNTc2LjUgMTU0Ljk5OCA1MzMuNDk5IDE4Mi45OTggMzE2Ljk5OUMyMTAuOTk4IDEwMC40OTkgMzU4Ljk5NCA4My41IDU3OS45OTQgOTBaXCIgZmlsbD0jMTdBMkI4IGZpbGwtb3BhY2l0eT0wLjM+PC9wYXRoPjxwYXRoIGQ9XCJNMTAxIDI3Mi41QzEwMSA0NjAuOSA0OS4xNjY3IDU5MC44MzMgMCA2MzdWMEg4NzRDODUyLjgzMyAyOS45OTk5IDY5NS41IDEzMy41IDUyMyAxMzMuNUMzNTAuNSAxMzMuNSAxMDEgMzcgMTAxIDI3Mi41WlwiIGZpbGw9IzE3QTJCOCBmaWxsLW9wYWNpdHk9MC4zPjwvcGF0aD48L3N2Zz48ZGl2IGNsYXNzPW1haW4tY29udGFpbmVyPjxkaXYgbmctaWY9XCJjaGVja2luZ1NpZ251cCB8fCAhc2lnbnVwT0sgfHwgdW5yZWdpc3Rlck9rXCIgY2xhc3M9Y2xzLWZvcm0+PGltZyBjbGFzcz1pbWctcGFqYWphYyBzcmM9L2ltZy9vb3BzLnBuZyBhbHQ+PGRpdiBjbGFzcyBuZy1pZj1cInNpZ251cENoZWNrRG9uZSAmJiAhc2lnbnVwT0tcIj48ZGl2IGNsYXNzPXRleHQtY2VudGVyPjxpbWcgc3JjPS9pbWcvS2F0YWx5b19maW5hbF9hcXVhLnBuZyBzdHlsZT1cIndpZHRoOiBjYWxjKDYwcHggKyAzdncpOyBtYXJnaW4tdG9wOjIwcHg7XCI+PGRpdiBzdHlsZT1cImZvbnQtZmFtaWx5OiBSb2JvdG87IGZvbnQtc2l6ZTogNDBweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiMxOWEzYjg7IHRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luLXRvcDogM3JlbTtcIj5Pb29wcyE8L2Rpdj48ZGl2IG5nLWlmPWVycm9yTXNnIGNsYXNzPWNvbC1sZy0yND48ZGl2IGNsYXNzPVwibXktMiB0ZXh0LWNlbnRlciB0ZXh0LWRhbmdlclwiPjxoNj57e2Vycm9yTXNnfX08L2g2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cHQtNT48aDY+PGEgdWktc3JlZj1hcHAuc2lnbnVwPlNpZ24gdXA8L2E+IGZvciBLYXRhbHlvPC9oNj48aDYgbmctaWY9IXVucmVnaXN0ZXJPaz5HbyB0byA8YSB1aS1zcmVmPWFwcC5sb2dpbj5sb2dpbiBwYWdlPC9hPjwvaDY+PGg2PlZpc2l0IG91ciA8YSBocmVmPWh0dHBzOi8vd3d3LmthdGFseW8uY29tPndlYnNpdGU8L2E+PC9oNj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzIG5nLWlmPVwic2lnbnVwQ2hlY2tEb25lICYmIHVucmVnaXN0ZXJPa1wiPjxkaXYgY2xhc3M9dGV4dC1jZW50ZXI+PGltZyBzcmM9L2ltZy9LYXRhbHlvX2ZpbmFsX2FxdWEucG5nIHN0eWxlPVwid2lkdGg6IGNhbGMoNjBweCArIDN2dyk7IG1hcmdpbi10b3A6MjBweDtcIj48ZGl2IG5nLWlmPXJldE1zZyBjbGFzcz1jb2wtbGctMjQ+PGRpdiBjbGFzcz1cIm15LTIgdGV4dC1jZW50ZXIgdGV4dC1kYW5nZXJcIj48ZGl2IHN0eWxlPVwiZm9udC1mYW1pbHk6IFJvYm90bzsgZm9udC1zaXplOiA0MHB4OyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6I2RjMzU0NTsgdGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW4tdG9wOiAzcmVtO1wiPnt7cmV0TXNnfX08L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXB0LTU+PGg2PjxhIHVpLXNyZWY9YXBwLnNpZ251cD5TaWduIHVwPC9hPiBmb3IgS2F0YWx5bzwvaDY+PGg2IG5nLWlmPSF1bnJlZ2lzdGVyT2s+R28gdG8gPGEgdWktc3JlZj1hcHAubG9naW4+bG9naW4gcGFnZTwvYT48L2g2PjxoNj5WaXNpdCBvdXIgPGEgaHJlZj1odHRwczovL3d3dy5rYXRhbHlvLmNvbT53ZWJzaXRlPC9hPjwvaDY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1jaGVja2luZ1NpZ251cCBjbGFzcz10ZXh0LWNlbnRlcj48ZGl2IGNsYXNzPVwibG9hZGVyIGxvYWRlci1sZ1wiPjwvZGl2PjxkaXYgY2xhc3M9bXktMj48ZGl2IGNsYXNzPVwicGFuZWwtdGl0bGUgcHgtMVwiIHN0eWxlPXZlcnRpY2FsLWFsaWduOm1pZGRsZTtjb2xvcjojMzQ5OGRiPjxzcGFuIGNsYXNzPWg1PkNoZWNraW5nIHJlcXVlc3QuLi48L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGZvcm0gbmctaWY9XCJzaWdudXBPSyAmJiAhdW5yZWdpc3Rlck9rXCIgbmctc3VibWl0PWZuX3VucmVnaXN0ZXIoKSBuYW1lPWZvcm0gY2xhc3M9Y2xzLWZvcm0gbm92YWxpZGF0ZT48aW1nIGNsYXNzPWltZy1wYWphamFjIHNyYz0vaW1nL29vcHMucG5nIGFsdD48ZGl2IGNsYXNzPWhlYWRlcnM+PGgxPldlXFwncmUgc29ycnkgdG8gc2VlIHlvdSBnbyE8L2gxPjxoMj5JZiB5b3VcXCd2ZSBjaGFuZ2VkIHlvdXIgbWluZCB5b3UgY2FuIGNvbnRpbnVlIHdpdGggc2lnbnVwITwvaDI+PC9kaXY+PGJ1dHRvbiBuZy1pZj0hZGF0YUxvYWRpbmcgdHlwZT1idXR0b24gbmctY2xpY2s9Z290b19yZWdpc3RyYXRpb24oKSBjbGFzcz1idG4tb25ib2FyZGluZz48aSBjbGFzcz1cImZhIGZhLWhhbmRzaGFrZVwiPjwvaT4gQ29udGludWUgd2l0aCBzaWdudXA8L2J1dHRvbj4gPGJ1dHRvbiBuZy1pZj0hZGF0YUxvYWRpbmcgdHlwZT1zdWJtaXQgY2xhc3M9YnRuLW9uYm9hcmRpbmc+PGkgY2xhc3M9XCJmYSBmYS10cmFzaFwiPjwvaT4gTm8ganVzdCBkZWxldGUgbXkgZS1tYWlsPC9idXR0b24+PGRpdiBuZy1pZj1kYXRhTG9hZGluZyBjbGFzcz1cIm15LTQgdGV4dC1jZW50ZXJcIj48ZGl2IGNsYXNzPWxvYWRlcj48L2Rpdj48YiBjbGFzcz1cInBhbmVsLXRpdGxlIG1sLTJcIiBzdHlsZT12ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y29sb3I6IzM0OThkYj5Qcm9jZXNzaW5nLi4uPC9iPjwvZGl2PjxkaXYgbmctaWY9XCJlcnJvck1zZyAmJiBzaWdudXBDaGVja0RvbmUgJiYgc2lnbnVwT0sgJiYgIWRhdGFMb2FkaW5nXCIgY2xhc3M+PGRpdiBjbGFzcz1cIm15LTIgdGV4dC1jZW50ZXIgdGV4dC1kYW5nZXJcIj48aDY+e3tlcnJvck1zZ319PC9oNj48L2Rpdj48L2Rpdj48L2Zvcm0+PC9kaXY+PHN2ZyBpZD1yaWdodCB2aWV3Ym94PVwiMCAwIDE0MDggNjEzXCIgZmlsbD1ub25lIHhtbG5zPWh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnPjxwYXRoIGQ9XCJNNjMxLjUgNDU2QzQ1NC43IDQ1MC44IDQ0OC44MzQgNTgwIDQ2OC4wMDEgNjEzSDE0MDhMMTQwOCAxMTRDMTM4MC41IDExNCAxMjgyIDE1Ny41IDEyNTQgMzc0QzEyMjYgNTkwLjUgODUyLjUgNDYyLjUgNjMxLjUgNDU2WlwiIGZpbGw9IzE3QTJCOCBmaWxsLW9wYWNpdHk9MC4zPjwvcGF0aD48cGF0aCBkPVwiTTU0NyA0NzkuNUMxMTAuNTYgNDcyLjY5OSAtMy44OTM2MSA1NTIuNDY4IDEuMDAwMzcgNjEzTDE0MDggNjEyLjk5OVYxLjQ5OTNDMTI5MC41NCAtMTYuNzg5MiAxMjI4IDIwMi4wMDEgMTIwNyAzMzQuNDk5QzExODYgNDY2Ljk5OCAxMDkyLjU1IDQ4OCA1NDcgNDc5LjVaXCIgZmlsbD0jMTdBMkI4IGZpbGwtb3BhY2l0eT0wLjE1PjwvcGF0aD48cGF0aCBkPVwiTTcyMS41IDUwMUM0MzkuMSA0OTYuNiAzNzQuODM0IDU3My44MzQgMzc4IDYxM0wxNDA4IDYxM1YxOTlDMTMzMiAxODcuMTY2IDExODAgMTkwLjcgMTE4MCAyOTkuNUMxMTgwIDQzNS41IDEwNzQuNSA1MDYuNSA3MjEuNSA1MDFaXCIgZmlsbD0jMTdBMkI4IGZpbGwtb3BhY2l0eT0wLjM+PC9wYXRoPjxwYXRoIGQ9XCJNNzIxLjUgNTAxQzQzOS4xIDQ5Ni42IDM3NC44MzQgNTczLjgzNCAzNzggNjEzTDE0MDggNjEzVjE5OUMxMzMyIDE4Ny4xNjYgMTE4MCAxOTAuNyAxMTgwIDI5OS41QzExODAgNDM1LjUgMTA3NC41IDUwNi41IDcyMS41IDUwMVpcIiBmaWxsPSMxN0EyQjggZmlsbC1vcGFjaXR5PTAuMz48L3BhdGg+PC9zdmc+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAyX2F1dGgvYW5ndWxhclRlbXBsYXRlcy9jaGFuZ2VQYXNzd29yZC5odG1sJywnPGRpdiBjbGFzcz1jb2wtbGctMjQ+PGZvcm0gbmctc3VibWl0PVJlc2V0UGFzc3dvcmQoY3AudXNlcm5hbWUsdXNlcklkLGNwLnBhc3N3b3JkMSxjcC5wYXNzd29yZDIsc2lnbnVwa2V5KSBuYW1lPWZvcm0gY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYgbmctaWY9ZXJyb3JNc2cgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LW1kLWNlbnRlclwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMTIgcC0wXCI+PGRpdiBjbGFzcz1cInRleHQtY2VudGVyIGFsZXJ0IGFsZXJ0LWRhbmdlclwiPjxzcGFuIGNsYXNzPWg1Pnt7ZXJyb3JNc2d9fTxhIGhyZWYgc3R5bGU9ZmxvYXQ6cmlnaHQ7bWFyZ2luLWxlZnQ6MTBweCBuZy1jbGljaz1oaWRlRXJyb3IoKT48aSBjbGFzcz1cImZhIGZhLXRpbWVzIHRleHQtZGFuZ2VyXCI+PC9pPjwvYT48L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtbWQtY2VudGVyXCI+PGRpdiBjbGFzcyBuZy1pZj1cImNoZWNrRG9uZSAmJiAhY2hlY2tEaWdlc3RPa1wiPjxkaXYgY2xhc3M9dGV4dC1jZW50ZXI+PGRpdiBzdHlsZT1cImZvbnQtZmFtaWx5OiBSb2JvdG87IGZvbnQtc2l6ZTogNDBweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiMxOWEzYjg7IHRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luLXRvcDogM3JlbTsgbWFyZ2luLWJvdHRvbTogM3JlbTtcIiBuZy1iaW5kPVwicGFnZUxhYmVscy51cHNNc2cgfHwgXFwnT29vcHMhXFwnXCI+PC9kaXY+PGg0IGNsYXNzPVwiYWxlcnQtZGFuZ2VyIHJvdW5kZWQgdGV4dC1jZW50ZXIgcC0yIHB4LTRcIj48aSBjbGFzcz1cImZhIGZhLXRpbWVzIG1yLTJcIj48L2k+PHNwYW4gbmctYmluZD1cInBhZ2VMYWJlbHMuaW52YWxpZFJlcXVlc3RNc2cgfHwgXFwnSW52YWxpZCByZXF1ZXN0XFwnXCI+PC9zcGFuPjwvaDQ+PGRpdiBuZy1pZj1lcnJvck1zZyBjbGFzcz1jb2wtbGctMjQ+PGRpdiBjbGFzcz1cIm15LTIgdGV4dC1jZW50ZXIgdGV4dC1kYW5nZXJcIj48aDY+e3tlcnJvck1zZ319PC9oNj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiaDUgbXQtNFwiPjxhIHVpLXNyZWY9YXBwLmxvZ2luPjxzcGFuIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLmdvdG9Mb2dpbkxpbmsgfHwgXFwnR28gdG8gbG9naW4gcGFnZVxcJ1wiPjwvc3Bhbj48L2E+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj0hY2hlY2tEb25lIGNsYXNzPXRleHQtY2VudGVyPjxkaXYgY2xhc3M9XCJsb2FkZXIgbG9hZGVyLWxnXCI+PC9kaXY+PGRpdiBjbGFzcz1tdC0yPjxkaXYgY2xhc3M9XCJwYW5lbC10aXRsZSBweC0xXCIgc3R5bGU9dmVydGljYWwtYWxpZ246bWlkZGxlO2NvbG9yOiMzNDk4ZGI+PHNwYW4gbmctYmluZD1cInBhZ2VMYWJlbHMuY2hlY2tkUmVxdWVzdE1zZyB8fCBcXCdDaGVja2luZyByZXF1ZXN0Li4uXFwnXCI+PC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LW1kLWNlbnRlclwiIG5nLWlmPWNoZWNrRGlnZXN0T2s+PGRpdiBjbGFzcz1cImNvbC1sZy0xMiBjYXJkIHAtMFwiPjxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciB0ZXh0LWNlbnRlclwiPjxiIGNsYXNzPWNhcmQtdGl0bGUgbmctaWY9IWRhdGFMb2FkaW5nPjxpIGNsYXNzPVwiZmEgZmEtbG9jayBtci0yXCI+PC9pPjxzcGFuIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLnJlc2V0UGFzc3dvcmRMYWJlbCB8fCBcXCdSZXNldCBwYXNzd29yZFxcJ1wiPjwvc3Bhbj48L2I+PGRpdiBuZy1pZj1kYXRhTG9hZGluZyBjbGFzcz10ZXh0LWNlbnRlcj48ZGl2IGNsYXNzPWxvYWRlcj48L2Rpdj48YiBjbGFzcz1cImNhcmQtdGl0bGUgbWwtMlwiIHN0eWxlPXZlcnRpY2FsLWFsaWduOm1pZGRsZTtjb2xvcjojMzQ5OGRiPjxzcGFuIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLnByb2Nlc3NpbmdMYWJlbCB8fCBcXCdQcm9jZXNzaW5nLi4uXFwnXCI+PC9zcGFuPjwvYj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNhcmQtYm9keT48ZGl2IGNsYXNzPjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiB1c2VybmFtZUludmFsaWR9XCI+PGxhYmVsIGNsYXNzPVwibXItMSBtYi0yXCIgZm9yPXVzZXJuYW1lIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLnVzZXJuYW1lIHx8IFxcJ1VzZXJuYW1lXFwnXCI+PC9sYWJlbD48ZGl2IGNsYXNzPWlucHV0LWdyb3VwPjxkaXYgY2xhc3M9aW5wdXQtZ3JvdXAtcHJlcGVuZD48ZGl2IGNsYXNzPWlucHV0LWdyb3VwLXRleHQ+PGkgY2xhc3M9XCJmYXMgZmEtdXNlclwiIGlkPWJhc2ljLWFkZG9uMT48L2k+PC9kaXY+PC9kaXY+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1jcC51c2VybmFtZSBuZy1jaGFuZ2U9Y2hlY2tVc2VybmFtZVZhbGlkaXR5KCkgbmctZGlzYWJsZWQ9ZGF0YUxvYWRpbmcgYXJpYS1sYWJlbD1QYXNzd29yZCBhcmlhLWRlc2NyaWJlZGJ5PWJhc2ljLWFkZG9uMiBjbGFzcz1mb3JtLWNvbnRyb2wgbmFtZT11c2VybmFtZSBwbGFjZWhvbGRlcj17e3BhZ2VMYWJlbHMudXNlcm5hbWV9fT48L2Rpdj48c3BhbiBuZy1zaG93PXVzZXJuYW1lSW52YWxpZCBjbGFzcz1cInRleHQtZGFuZ2VyIHNtYWxsXCIgbmctYmluZD1cInBhZ2VMYWJlbHMudXNlcm5hbWVFcnJvciB8fCBcXCdVc2VybmFtZSBpcyByZXF1aXJlZFxcJ1wiPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogcGFzc3dvcmRJbnZhbGlkMX1cIj48bGFiZWwgY2xhc3M9XCJtci0xIG1iLTJcIiBmb3I9cGFzc3dvcmQgbmctYmluZD1cInBhZ2VMYWJlbHMubmV3UGFzc3dvcmRMYWJlbCB8fCBcXCdOZXcgcGFzc3dvcmRcXCdcIj48L2xhYmVsPjxkaXYgY2xhc3M9aW5wdXQtZ3JvdXA+PGRpdiBjbGFzcz1pbnB1dC1ncm91cC1wcmVwZW5kPjxkaXYgY2xhc3M9aW5wdXQtZ3JvdXAtdGV4dD48aSBjbGFzcz1cImZhcyBmYS1rZXlcIiBpZD1iYXNpYy1hZGRvbjE+PC9pPjwvZGl2PjwvZGl2PjxpbnB1dCB0eXBlPXBhc3N3b3JkIG5nLWNoYW5nZT1jaGVja1Bhc3N3b3JkVmFsaWRpdHkxKCkgbmctbW9kZWw9Y3AucGFzc3dvcmQxIG5nLWRpc2FibGVkPWRhdGFMb2FkaW5nIGFyaWEtbGFiZWw9UGFzc3dvcmQgYXJpYS1kZXNjcmliZWRieT1iYXNpYy1hZGRvbjIgY2xhc3M9Zm9ybS1jb250cm9sIG5hbWU9cGFzc3dvcmQxIHBsYWNlaG9sZGVyPXt7cGFnZUxhYmVscy5uZXdQYXNzd29yZExhYmVsfX0+PC9kaXY+PHNwYW4gbmctc2hvdz1wYXNzd29yZEludmFsaWQxIGNsYXNzPVwidGV4dC1kYW5nZXIgc21hbGxcIiBuZy1iaW5kPVwicGFnZUxhYmVscy5uZXdDaGFuZ2VQYXNzRXJyb3IgfHwgXFwnUGFzc3dvcmQgaXMgcmVxdWlyZWRcXCdcIj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbXQtMlwiIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlclxcJyA6IHBhc3N3b3JkSW52YWxpZDJ9XCI+PGxhYmVsIGNsYXNzPVwibXItMSBtYi0yXCIgZm9yPXBhc3N3b3JkIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLmNvbmZpcm1OZXdQYXNzd29yZExhYmVsIHx8IFxcJ0NvbmZpcm0gbmV3IHBhc3N3b3JkXFwnXCI+PC9sYWJlbD48ZGl2IGNsYXNzPWlucHV0LWdyb3VwPjxkaXYgY2xhc3M9aW5wdXQtZ3JvdXAtcHJlcGVuZD48ZGl2IGNsYXNzPWlucHV0LWdyb3VwLXRleHQ+PGkgY2xhc3M9XCJmYXMgZmEta2V5XCIgaWQ9YmFzaWMtYWRkb24yPjwvaT48L2Rpdj48L2Rpdj48aW5wdXQgdHlwZT1wYXNzd29yZCBuZy1jaGFuZ2U9Y2hlY2tQYXNzd29yZFZhbGlkaXR5MigpIG5nLS1tb2RlbD1jcC5wYXNzd29yZDIgbmctZGlzYWJsZWQ9ZGF0YUxvYWRpbmcgYXJpYS1sYWJlbD1QYXNzd29yZCBhcmlhLWRlc2NyaWJlZGJ5PWJhc2ljLWFkZG9uMiBjbGFzcz1mb3JtLWNvbnRyb2wgbmFtZT1wYXNzd29yZDIgcGxhY2Vob2xkZXI9e3twYWdlTGFiZWxzLmNvbmZpcm1OZXdQYXNzd29yZExhYmVsfX0+PC9kaXY+PHNwYW4gbmctc2hvdz1cImNwLnBhc3N3b3JkMSAmJiAoY3AucGFzc3dvcmQxIT09Y3AucGFzc3dvcmQyKVwiIGNsYXNzPVwidGV4dC1kYW5nZXIgc21hbGxcIiBuZy1iaW5kPVwicGFnZUxhYmVscy5jb25maXJtUGFzc3dvcmRFcnJvciB8fCBcXCdQYXNzd29yZHMgbXVzdCBtYXRjaFxcJ1wiPjwvc3Bhbj48L2Rpdj48YnI+PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY29udHJvbHNcIj48YnV0dG9uIHR5cGU9c3VibWl0IG5nLXNob3c9IXBhc3N3b3JkQ2hhbmdlU3VjY2VzcyBuZy1kaXNhYmxlZD1cImNwLnVzZXJuYW1lPT11bmRlZmluZWQgfHwgY3AudXNlcm5hbWU9PVxcJ1xcJyB8fCBjcC5wYXNzd29yZDE9PXVuZGVmaW5lZCB8fCBjcC5wYXNzd29yZDE9PVxcJ1xcJyB8fCBjcC5wYXNzd29yZDEhPT1jcC5wYXNzd29yZDIgfHwgZGF0YUxvYWRpbmdcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtbG9ja1wiPjwvc3Bhbj4gPHNwYW4gbmctYmluZD1cInBhZ2VMYWJlbHMuY2hhbmdlUGFzc3dvcmRCdXR0b24gfHwgXFwnQ2hhbmdlIHBhc3N3b3JkXFwnXCI+PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxkaXY+PGRpdiBuZy1pZj1cInBhc3N3b3JkQ2hhbmdlU3VjY2VzcyAmJiBzdWNjZXNzTXNnXCIgY2xhc3M9dGV4dC1jZW50ZXIgc3R5bGU9XCJwYWRkaW5nOjIwcHggIWltcG9ydGFudFwiPjxzcGFuIGNsYXNzPVwiaDQgYWxlcnQgYWxlcnQtc3VjY2Vzc1wiPjxpIGNsYXNzPVwiZmEgZmEtdGh1bWJzLXVwXCI+PC9pPiB7e3N1Y2Nlc3NNc2d9fTwvc3Bhbj48ZGl2IGNsYXNzPVwiaDUgbXQtNFwiPjxhIHVpLXNyZWY9YXBwLmxvZ2luPjxzcGFuIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLmdvdG9Mb2dpbkxpbmsgfHwgXFwnR28gdG8gbG9naW4gcGFnZVxcJ1wiPjwvc3Bhbj48L2E+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JtPjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwMl9hdXRoL2FuZ3VsYXJUZW1wbGF0ZXMvY2hhbmdlUGFzc3dvcmRSZXF1ZXN0Lmh0bWwnLCc8Zm9ybSBuZy1zdWJtaXQ9cmVxdWVzdENoZygkZXZlbnQpIGlkPWxvZ2luRm9ybSBuYW1lPWZvcm0gY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYgdi1pZj1lcnJvck1zZyBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtbWQtY2VudGVyXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0xMiBwLTBcIj48ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgYWxlcnQgYWxlcnQtZGFuZ2VyXCI+PGg1Pnt7ZXJyb3JNc2d9fTwvaDU+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtbWQtY2VudGVyXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0xMiBjYXJkIHAtMFwiPjxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciB0ZXh0LWNlbnRlclwiPjxiIGNsYXNzPWNhcmQtdGl0bGUgbmctaWY9IWRhdGFMb2FkaW5nPjxpIGNsYXNzPVwiZmEgZmEtbG9ja1wiPjwvaT4mbmJzcCBQYXNzd29yZCByZXNldDwvYj48ZGl2IG5nLWlmPWRhdGFMb2FkaW5nIGNsYXNzPXRleHQtY2VudGVyPjxkaXYgY2xhc3M9bG9hZGVyPjwvZGl2PjxiIGNsYXNzPWNhcmQtdGl0bGUgc3R5bGU9dmVydGljYWwtYWxpZ246bWlkZGxlO2NvbG9yOiMzNDk4ZGI+Jm5ic3AmbmJzcCBMb2dnaW5nIGluLi4uPC9iPjwvZGl2PjxkaXY+PGIgY2xhc3M9cGFuZWwtdGl0bGUgbmctc2hvdz0hc2lnbnVwU3VjY2Vzcz48aSBjbGFzcz10ZXh0LXdhcm5pbmcgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEwcHg7XCI+PC9pPjxoMyBjbGFzcz10ZXh0LXdhcm5pbmc+RW50ZXIgeW91ciBlLW1haWwgdG8gcmVzZXQgcGFzc3dvcmQ8L2gzPjwvYj4gPGIgY2xhc3M9cGFuZWwtdGl0bGUgbmctc2hvdz1cIiFkYXRhTG9hZGluZyAmJiBzaWdudXBTdWNjZXNzXCI+PGkgY2xhc3M9XCJ0ZXh0LXN1Y2Nlc3MgZmEgZmEtY2hlY2sgZmEtNHhcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMTBweDtcIj48L2k+PGgzIGNsYXNzPXRleHQtc3VjY2Vzcz5UbyBjb21wbGV0ZSB0aGUgcGFzc3dvcmQgcmVzZXQgcHJvY2VzcyBwbGVhc2UgY2hlY2sgeW91ciBpbmJveCBhdDwvaDM+PC9iPjxkaXYgbmctc2hvdz1kYXRhTG9hZGluZyBjbGFzcz10ZXh0LWNlbnRlcj48ZGl2IGNsYXNzPWxvYWRlcj48L2Rpdj48YiBjbGFzcz1wYW5lbC10aXRsZSBzdHlsZT12ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y29sb3I6IzM0OThkYj4mbmJzcCZuYnNwIFByb2Nlc3NpbmcgcmVxdWVzdC4uLjwvYj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMVwiPjxkaXYgY2xhc3M9XCJ3ZWxsLWN1c3RvbSBiZy13aGl0ZVwiIHN0eWxlPVwicGFkZGluZzoxMHB4ICFpbXBvcnRhbnRcIj48ZGl2IG5nLXNob3c9IXNpZ251cFN1Y2Nlc3MgY2xhc3M9XCJmb3JtLWdyb3VwIHJvd1wiIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiBlbWFpbEludmFsaWR9XCI+PGRpdiBjbGFzcz1jb2wtbWQtND48L2Rpdj48ZGl2IGNsYXNzPWNvbC1tZC0xNj48aW5wdXQgcmVxdWlyZWQgdHlwZT1lbWFpbCBuZy1jaGFuZ2U9Y2hlY2tFbWFpbFZhbGlkaXR5KCkgbmctbW9kZWw9ZW1haWwgaWQ9ZW1haWwgbmctZGlzYWJsZWQ9ZGF0YUxvYWRpbmcgbmctY2xhc3M9XCJbIFxcJ2Zvcm0tY29udHJvbFxcJyxpc0VtYWlsVmFsaWQoKV1cIiBjbGFzcz1mb3JtLWNvbnRyb2wgbmFtZT1lbWFpbCBwbGFjZWhvbGRlcj1cIkVudGVyIGUtbWFpbFwiPiA8c3BhbiBuZy1zaG93PWVtYWlsSW52YWxpZCBjbGFzcz1oZWxwLWJsb2NrPkUtbWFpbCBpcyByZXF1aXJlZDwvc3Bhbj48YnI+PC9kaXY+PC9kaXY+PGRpdiBuZy1zaG93PSFzaWdudXBTdWNjZXNzIGNsYXNzPVwiY29udHJvbHMgcm93IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj48YnV0dG9uIG5nLWRpc2FibGVkPSF2YWxpZGl0eSB0eXBlPXN1Ym1pdCBpZD1sb2dpbkJ0biBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIGRhdGEtbG9hZGluZy10ZXh0PVwiPHNwYW4gY2xhc3M9XFwnZmEgZmEtaG91cmdsYXNzXFwnPjwvc3Bhbj4gQ2hlY2tpbmcgcmVxdWVzdC4uLlwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtdXNlci1wbHVzXCI+PC9zcGFuPiBSZXNldCBwYXNzd29yZDwvYnV0dG9uPjxicj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1jZW50ZXJcIiBuZy1zaG93PXNpZ251cFN1Y2Nlc3M+PHNwYW4gY2xhc3M9dGV4dC1wcmltYXJ5PjxoMz48aSBjbGFzcz1cImZhIGZhLWVudmVsb3BlXCI+Jm5ic3BFLW1haWwgOjwvaT4ge3tlbWFpbH19PC9oMz48L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JtPicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwMl9hdXRoL2FuZ3VsYXJUZW1wbGF0ZXMvbG9nZ2VkX291dC5odG1sJywnPGRpdiBjbGFzcz1cImNvbCB0ZXh0LWNlbnRlciBwLTQgbXktNSBuZy1zY29wZVwiPjxpbWcgd2lkdGg9MjAwIGxvYWRpbmc9bGF6eSBzcmM9e3tjb25maWcuZGVwbG95ZGlyfX17e2NvbmZpZy5rdGx5b19sb2dvX2ltZ319PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgdGV4dC1jZW50ZXJcIj48ZGl2IG5nLWlmPWVycm9yTXNnIGNsYXNzPVwidGV4dC1jZW50ZXIgYWxlcnQgYWxlcnQtZGFuZ2VyXCI+PGg0Pnt7ZXJyb3JNc2d9fTwvaDQ+PC9kaXY+PGgzIG5nLWlmPSFlcnJvck1zZz48c3BhbiBuZy1iaW5kPVwicGFnZUxhYmVscy5sb2dvdXRNc2cxIHx8IFxcJ1lvdSBhcmUgbG9nZ2VkIG91dC4gVG8gbG9nIGluIGFnYWluLCBjbGlja1xcJ1wiPjwvc3Bhbj4gPGEgbmctY2xpY2s9bG9naW5fcGFnZSgpIGhyZWYgY2xhc3M9dGV4dC1pbmZvPjxzcGFuIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLmxvZ291dFBhZ2VMb2dpbkxpbmsgfHwgXFwnTG9naW5cXCdcIj48L3NwYW4+PC9hPi48L2gzPjxoMyBuZy1pZj1lcnJvck1zZz48c3BhbiBuZy1iaW5kPVwicGFnZUxhYmVscy5sb2dvdXRNc2cyIHx8IFxcJ1RvIGxvZyBpbiBjbGlja1xcJ1wiPjwvc3Bhbj4gPGEgbmctY2xpY2s9bG9naW5fcGFnZSgpIGhyZWYgY2xhc3M9dGV4dC1pbmZvPjxzcGFuIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLmxvZ291dFBhZ2VMb2dpbkxpbmsgfHwgXFwnTG9naW5cXCdcIj48L3NwYW4+PC9hPi48L2gzPjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwMl9hdXRoL2FuZ3VsYXJUZW1wbGF0ZXMvbG9naW4uaHRtbCcsJzxkaXYgaWQ9bG9naW5Gb3JtIGNsYXNzPWNvbC1sZy0yND48ZGl2IGNsYXNzPVwiY29sIHRleHQtY2VudGVyIHAtNCBteS01IG5nLXNjb3BlXCI+PGltZyB3aWR0aD0yMDAgbG9hZGluZz1sYXp5IHNyYz17e2NvbmZpZy5kZXBsb3lkaXJ9fXt7Y29uZmlnLmt0bHlvX2xvZ29faW1nfX0+PC9kaXY+PGZvcm0gbmFtZT1mb3JtIGNsYXNzPWZvcm0taG9yaXpvbnRhbCByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1tZC1jZW50ZXJcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTEyIHAtMFwiPjxkaXYgbmctaWY9ZXJyb3JNc2cgY2xhc3M9XCJ0ZXh0LWNlbnRlciBhbGVydCBhbGVydC1kYW5nZXJcIj48c3BhbiBjbGFzcz1oNT57e2Vycm9yTXNnfX08L3NwYW4+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJmbG9hdC1yaWdodCBidG4gYnRuLW91dGxpbmUtZGFuZ2VyIHAtMCBweC0yIGJvcmRlci0wXCIgbmctY2xpY2s9XCJlcnJvck1zZz1udWxsXCI+eDwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LW1kLWNlbnRlclwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMTIgY2FyZFwiPjxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciB0ZXh0LWNlbnRlclwiPjxiIGNsYXNzPWNhcmQtdGl0bGUgbmctaWY9IWRhdGFMb2FkaW5nPjxpIGNsYXNzPVwiZmEgZmEtbG9jayBtci0yXCI+PC9pPjxzcGFuIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLmxvZ2luUGFnZUhlYWRlciB8fCBcXCdQbGVhc2UgbG9naW5cXCdcIj48L3NwYW4+PC9iPjxkaXYgbmctaWY9ZGF0YUxvYWRpbmcgY2xhc3M9dGV4dC1jZW50ZXI+PGRpdiBjbGFzcz1sb2FkZXI+PC9kaXY+PGIgY2xhc3M9XCJjYXJkLXRpdGxlIG1sLTJcIiBzdHlsZT12ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y29sb3I6IzM0OThkYj57e3BhZ2VMYWJlbHMubG9naW5Nc2cgfHwgXFwnTG9nZ2luZyBpbi4uLlxcJ319PC9iPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y2FyZC1ib2R5PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiB1c2VybmFtZUludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1cIm1yLTEgbWItMlwiIGZvcj11c2VybmFtZSBuZy1iaW5kPVwicGFnZUxhYmVscy51c2VybmFtZSB8fCBcXCdVc2VybmFtZVxcJ1wiPjwvbGFiZWw+PGRpdiBjbGFzcz1pbnB1dC1ncm91cD48ZGl2IGNsYXNzPWlucHV0LWdyb3VwLXByZXBlbmQ+PGRpdiBjbGFzcz1pbnB1dC1ncm91cC10ZXh0IG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlciBib3JkZXIgYm9yZGVyLWRhbmdlclxcJyA6IHVzZXJuYW1lSW52YWxpZCB9XCI+PGkgY2xhc3M9XCJmYSBmYS11c2VyXCIgaWQ9YmFzaWMtYWRkb24xPjwvaT48L2Rpdj48L2Rpdj48aW5wdXQgdHlwZT10ZXh0IG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlciBib3JkZXIgYm9yZGVyLWRhbmdlclxcJyA6IHVzZXJuYW1lSW52YWxpZCB9XCIgbmctY2hhbmdlPWNoZWNrVXNlcm5hbWVWYWxpZGl0eSgpIG5nLW1vZGVsPXVzZXJuYW1lIGlkPXVzZXJuYW1lIG5nLWRpc2FibGVkPWRhdGFMb2FkaW5nIGFyaWEtbGFiZWw9VXNlcm5hbWUgYXJpYS1kZXNjcmliZWRieT1iYXNpYy1hZGRvbjEgY2xhc3M9Zm9ybS1jb250cm9sIG5hbWU9dXNlcm5hbWUgcGxhY2Vob2xkZXI9XCJ7e3BhZ2VMYWJlbHMudXNlcm5hbWUgfHwgXFwnVXNlcm5hbWVcXCd9fVwiPjwvZGl2PjxzcGFuIG5nLXNob3c9dXNlcm5hbWVJbnZhbGlkIGNsYXNzPVwidGV4dC1kYW5nZXIgc21hbGxcIiBuZy1iaW5kPVwicGFnZUxhYmVscy51c2VybmFtZUVycm9yIHx8IFxcJ1VzZXJuYW1lIGlzIHJlcXVpcmVkXFwnXCI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiBwYXNzd29yZEludmFsaWR9XCI+PGxhYmVsIGNsYXNzPVwibXItMSBtYi0yXCIgZm9yPXBhc3N3b3JkIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLnBhc3N3b3JkIHx8IFxcJ1Bhc3N3b3JkXFwnXCI+PC9sYWJlbD48ZGl2IGNsYXNzPWlucHV0LWdyb3VwPjxkaXYgY2xhc3M9aW5wdXQtZ3JvdXAtcHJlcGVuZD48ZGl2IGNsYXNzPWlucHV0LWdyb3VwLXRleHQgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyIGJvcmRlciBib3JkZXItZGFuZ2VyXFwnIDogcGFzc3dvcmRJbnZhbGlkfVwiPjxpIGNsYXNzPVwiZmFzIGZhLWtleVwiIGlkPWJhc2ljLWFkZG9uMj48L2k+PC9kaXY+PC9kaXY+PGlucHV0IHR5cGU9cGFzc3dvcmQgbmcta2V5cHJlc3M9Y2hlY2tFbnRlcktleSgkZXZlbnQpIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlciBib3JkZXIgYm9yZGVyLWRhbmdlclxcJyA6IHBhc3N3b3JkSW52YWxpZCB9XCIgbmctY2hhbmdlPWNoZWNrUGFzc3dvcmRWYWxpZGl0eSgpIG5nLW1vZGVsPXBhc3N3b3JkIGlkPXBhc3N3b3JkIG5nLWRpc2FibGVkPWRhdGFMb2FkaW5nIGFyaWEtbGFiZWw9UGFzc3dvcmQgYXJpYS1kZXNjcmliZWRieT1iYXNpYy1hZGRvbjIgY2xhc3M9Zm9ybS1jb250cm9sIG5hbWU9cGFzc3dvcmQgcGxhY2Vob2xkZXI9XCJ7e3BhZ2VMYWJlbHMucGFzc3dvcmQgfHwgXFwnUGFzc3dvcmRcXCd9fVwiPjwvZGl2PjxzcGFuIG5nLXNob3c9cGFzc3dvcmRJbnZhbGlkIGNsYXNzPVwidGV4dC1kYW5nZXIgc21hbGxcIiBuZy1iaW5kPVwicGFnZUxhYmVscy5wYXNzd29yZEVycm9yIHx8IFxcJ1Bhc3N3b3JkIGlzIHJlcXVpcmVkXFwnXCI+PC9zcGFuPjwvZGl2Pjxicj48ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjb250cm9sc1wiPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbCBwLTBcIj48YnV0dG9uIGRhdGEtbG9hZGluZy10ZXh0PXt7ZGF0YUxvYWRpbmdUZXh0fX0gbmctZGlzYWJsZWQ9XCJ1c2VybmFtZUludmFsaWQgfHwgcGFzc3dvcmRJbnZhbGlkIHx8IGRhdGFMb2FkaW5nXCIgdHlwZT1idXR0b24gbmctY2xpY2s9bG9naW4oJGV2ZW50KSBpZD1sb2dpbkJ0biBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtbG9ja1wiPjwvc3Bhbj4ge3sgcGFnZUxhYmVscy5sb2dpbkJ1dHRvbiB8fCBcXCd4TG9naW5cXCcgfX08L2J1dHRvbj48L2Rpdj48ZGl2IG5nLWlmPVwicGFnZUxhYmVscy5jaGFuZ2VQYXNzd29yZFR5cGUgPT1cXCdpbnRlcm5hbFxcJ1wiIGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGEgaHJlZj0vY2hhbmdlcGFzc3JlcXVlc3Q+Rm9yZ290IHBhc3N3b3JkPzwvYT48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Zvcm0+PC9kaXY+PGRpdiBpZD1hbGVydCBjbGFzcz1hcHAtbXNnLWNvbnRhaW5lciBhcHAtbWVzc2FnZXMgbWVzc2FnZS1saXN0PWFsZXJ0cz48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDJfYXV0aC9hbmd1bGFyVGVtcGxhdGVzL2xvZ2luVnVlLmh0bWwnLCc8ZGl2IGlkPWxvZ2luRm9ybSBjbGFzcz1jb2wtbGctMjQgbmctbm9uLWJpbmRhYmxlPjxkaXYgY2xhc3M9XCJjb2wgdGV4dC1jZW50ZXIgcC00IG15LTUgbmctc2NvcGVcIj48aW1nIHdpZHRoPTIwMCBsb2FkaW5nPWxhenkgOnNyYz1jb25maWcuZGVwbG95ZGlyK2NvbmZpZy5rdGx5b19sb2dvX2ltZz48L2Rpdj48Zm9ybSBAc3VibWl0LnByZXZlbnQ9bG9naW4gbmFtZT1mb3JtIGNsYXNzPWZvcm0taG9yaXpvbnRhbCByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1tZC1jZW50ZXJcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTEyIHAtMFwiPjxkaXYgdi1pZj1lcnJvck1zZyBjbGFzcz1cInRleHQtY2VudGVyIGFsZXJ0IGFsZXJ0LWRhbmdlclwiPjxzcGFuIGNsYXNzPWg1Pnt7ZXJyb3JNc2d9fTwvc3Bhbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImZsb2F0LXJpZ2h0IGJ0biBidG4tb3V0bGluZS1kYW5nZXIgcC0wIHB4LTIgYm9yZGVyLTBcIiBAY2xpY2s9XCJlcnJvck1zZz1udWxsXCI+eDwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LW1kLWNlbnRlclwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMTIgY2FyZFwiPjxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciB0ZXh0LWNlbnRlclwiPjxiIGNsYXNzPWNhcmQtdGl0bGUgdi1pZj0hZGF0YUxvYWRpbmc+PGkgY2xhc3M9XCJmYSBmYS1sb2NrIG1yLTJcIj48L2k+PHNwYW4+e3twYWdlTGFiZWxzPy5sb2dpblBhZ2VIZWFkZXIgfHwgXFwnUGxlYXNlIGxvZ2luXFwnfX08L3NwYW4+PC9iPjxkaXYgdi1pZj1kYXRhTG9hZGluZyBjbGFzcz10ZXh0LWNlbnRlcj48ZGl2IGNsYXNzPWxvYWRlcj48L2Rpdj48YiBjbGFzcz1cImNhcmQtdGl0bGUgbWwtMlwiIHN0eWxlPXZlcnRpY2FsLWFsaWduOm1pZGRsZTtjb2xvcjojMzQ5OGRiPnt7cGFnZUxhYmVscz8ubG9naW5Nc2cgfHwgXFwnTG9naW5nIGluLi4uXFwnfX08L2I+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jYXJkLWJvZHk+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIHYtYmluZDpjbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiB1c2VybmFtZUludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1cIm1yLTEgbWItMlwiIGZvcj11c2VybmFtZT57e3BhZ2VMYWJlbHM/LnVzZXJuYW1lIHx8IFxcJ1VzZXJuYW1lXFwnfX08L2xhYmVsPjxkaXYgY2xhc3M9aW5wdXQtZ3JvdXA+PGRpdiBjbGFzcz1pbnB1dC1ncm91cC1wcmVwZW5kPjxkaXYgY2xhc3M9aW5wdXQtZ3JvdXAtdGV4dCB2LWJpbmQ6Y2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyIGJvcmRlciBib3JkZXItZGFuZ2VyXFwnIDogdXNlcm5hbWVJbnZhbGlkIH1cIj48aSBjbGFzcz1cImZhIGZhLXVzZXJcIiBpZD1iYXNpYy1hZGRvbjE+PC9pPjwvZGl2PjwvZGl2PjxpbnB1dCB0eXBlPXRleHQgdi1iaW5kOmNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlciBib3JkZXIgYm9yZGVyLWRhbmdlclxcJyA6IHVzZXJuYW1lSW52YWxpZCB9XCIgQGtleXVwPWNoZWNrVXNlcm5hbWVWYWxpZGl0eSB2LW1vZGVsPXVzZXJuYW1lIGlkPXVzZXJuYW1lIDpkaXNhYmxlZD1kYXRhTG9hZGluZyBhcmlhLWxhYmVsPVVzZXJuYW1lIGFyaWEtZGVzY3JpYmVkYnk9YmFzaWMtYWRkb24xIGNsYXNzPWZvcm0tY29udHJvbCBuYW1lPXVzZXJuYW1lIDpwbGFjZWhvbGRlcj1cInBhZ2VMYWJlbHM/LnVzZXJuYW1lIHx8IFxcJ1VzZXJuYW1lXFwnXCI+PC9kaXY+PHNwYW4gdi1zaG93PXVzZXJuYW1lSW52YWxpZCBjbGFzcz1cInRleHQtZGFuZ2VyIHNtYWxsXCI+e3sgcGFnZUxhYmVscz8udXNlcm5hbWVFcnJvciB8fCBcXCdVc2VybmFtZSBpcyByZXF1aXJlZFxcJ319PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCB2LWJpbmQ6Y2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogcGFzc3dvcmRJbnZhbGlkfVwiPjxsYWJlbCBjbGFzcz1cIm1yLTEgbWItMlwiIGZvcj1wYXNzd29yZD57e3BhZ2VMYWJlbHM/LnBhc3N3b3JkIHx8IFxcJ1Bhc3N3b3JkXFwnfX08L2xhYmVsPjxkaXYgY2xhc3M9aW5wdXQtZ3JvdXA+PGRpdiBjbGFzcz1pbnB1dC1ncm91cC1wcmVwZW5kPjxkaXYgY2xhc3M9aW5wdXQtZ3JvdXAtdGV4dCB2LWJpbmQ6Y2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyIGJvcmRlciBib3JkZXItZGFuZ2VyXFwnIDogcGFzc3dvcmRJbnZhbGlkfVwiPjxpIGNsYXNzPVwiZmFzIGZhLWtleVwiIGlkPWJhc2ljLWFkZG9uMj48L2k+PC9kaXY+PC9kaXY+PGlucHV0IHR5cGU9cGFzc3dvcmQgdi1iaW5kOmNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlciBib3JkZXIgYm9yZGVyLWRhbmdlclxcJyA6IHBhc3N3b3JkSW52YWxpZCB9XCIgQGtleXVwPWNoZWNrUGFzc3dvcmRWYWxpZGl0eSB2LW1vZGVsPXBhc3N3b3JkIGlkPXBhc3N3b3JkIDpkaXNhYmxlZD1kYXRhTG9hZGluZyBhcmlhLWxhYmVsPVBhc3N3b3JkIGFyaWEtZGVzY3JpYmVkYnk9YmFzaWMtYWRkb24yIGNsYXNzPWZvcm0tY29udHJvbCBuYW1lPXBhc3N3b3JkIDpwbGFjZWhvbGRlcj1cInBhZ2VMYWJlbHM/LnBhc3N3b3JkIHx8IFxcJ1Bhc3N3b3JkXFwnXCI+PC9kaXY+PHNwYW4gdi1zaG93PXBhc3N3b3JkSW52YWxpZCBjbGFzcz1cInRleHQtZGFuZ2VyIHNtYWxsXCI+e3twYWdlTGFiZWxzPy5wYXNzd29yZEVycm9yIHx8IFxcJ1Bhc3N3b3JkIGlzIHJlcXVpcmVkXFwnfX08L3NwYW4+PC9kaXY+PGJyPjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGNvbnRyb2xzXCI+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sIHAtMFwiPjxidXR0b24gOmRhdGEtbG9hZGluZy10ZXh0PWRhdGFMb2FkaW5nVGV4dCA6ZGlzYWJsZWQ9XCJ1c2VybmFtZUludmFsaWQgfHwgcGFzc3dvcmRJbnZhbGlkIHx8IGRhdGFMb2FkaW5nXCIgdHlwZT1zdWJtaXQgaWQ9bG9naW5CdG4gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIj48c3BhbiBjbGFzcz1cImZhIGZhLWxvY2tcIj48L3NwYW4+IHt7IHBhZ2VMYWJlbHM/LmxvZ2luQnV0dG9uIHx8IFxcJ3hMb2dpblxcJyB9fTwvYnV0dG9uPjwvZGl2PjxkaXYgdi1pZj1cInBhZ2VMYWJlbHM/LmNoYW5nZVBhc3N3b3JkVHlwZSA9PVxcJ2ludGVybmFsXFwnXCIgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48YSBocmVmPS9jaGFuZ2VwYXNzcmVxdWVzdD5Gb3Jnb3QgcGFzc3dvcmQ/PC9hPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9ybT48L2Rpdj48ZGl2IGlkPWFsZXJ0IGNsYXNzPWFwcC1tc2ctY29udGFpbmVyIGFwcC1tZXNzYWdlcyBtZXNzYWdlLWxpc3Q9YWxlcnRzPjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwMl9hdXRoL2FuZ3VsYXJUZW1wbGF0ZXMvc2VsZWN0ZW52aXJvbm1lbnQuaHRtbCcsJzxkaXYgaWQ9c2VsZWN0RU5WSVJPTk1FTlQgY2xhc3M9Y29sLWxnLTI0PjxkaXYgY2xhc3M9XCJjb2wgdGV4dC1jZW50ZXIgcC00IG15LTJcIj48aW1nIHdpZHRoPTE1MCBsb2FkaW5nPWxhenkgc3JjPXt7Y29uZmlnLmRlcGxveWRpcn19e3tjb25maWcua3RseW9fbG9nb19pbWd9fT48L2Rpdj48Zm9ybSBAc3VibWl0LnByZXZlbnQ9bG9naW4gbmFtZT1mb3JtIGNsYXNzPWZvcm0taG9yaXpvbnRhbCByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1tZC1jZW50ZXJcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTEyIHAtMFwiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LW1kLWNlbnRlciBtYi0yXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0xMiBjYXJkXCI+PGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGg1IHRleHQtY2VudGVyXCI+PGEgdGl0bGU9XCJHbyB0byBob21lIHBhZ2VcIiB1aS1zcmVmPWFwcC5uYXZiYXIuaG9tZSh7YXBwX3JlZjp1bmRlZmluZWR9KSBjbGFzcz1uYXYtbGluaz48aSBjbGFzcz1cImZhIGZhLWhvbWVcIj48L2k+IDxzcGFuIGNsYXNzPXB4LTEgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwO1wiPkhvbWUgcGFnZTwvc3Bhbj48L2E+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtbWQtY2VudGVyIG1iLTJcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTEyIGNhcmRcIj48ZGl2IGNsYXNzPWNhcmQtYm9keT48ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj48ZGl2IGNsYXNzPVwiY29sLTI0IG0tMSB0ZXh0LWNlbnRlclwiPjxzcGFuIGNsYXNzPWg0PllvdSBhcmUgaW4gPGI+PHE+e3ttZW51X3NlcnZpY2UuZ2V0Y3VycmVudEVudigpLmRlc2NyaXB0aW9ufX08L3E+PC9iPjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1tZC1jZW50ZXJcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTEyIGNhcmRcIj48ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgaDUgdGV4dC1jZW50ZXJcIj48c3BhbiBjbGFzcz1jYXJkLXRpdGxlIG5nLWlmPVwiIWRhdGFMb2FkaW5nICYmIGFjdGlvblR5cGUhPVxcJ2NoYW5nZVxcJ1wiPjxpIGNsYXNzPVwiZmFyIGZhLWJ1aWxkaW5nIG1yLTJcIj48L2k+IFNlbGVjdCBFbnZpcm9ubWVudDo8L3NwYW4+IDxzcGFuIGNsYXNzPWNhcmQtdGl0bGUgbmctaWY9XCIhZGF0YUxvYWRpbmcgJiYgYWN0aW9uVHlwZT09XFwnY2hhbmdlXFwnXCI+U3dpdGNoIHRvOjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPjxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlclwiPjxkaXYgY2xhc3M9XCJjb2wtOSBtYi0yXCI+PGRpdiBjbGFzcz1cImNvbC0yNCBtLTFcIiBuZy1yZXBlYXQ9XCIoa2V5LCBlbnYpIGluIGdldFVzZXJFbnZpcm9ubWVudHMoKVwiIG5nLWlmPVwiZW52LmlkLnRvU3RyaW5nKCkhPSRzY29wZS5jdXJyZW50RW52SWRcIj48YnV0dG9uIG5nLWNsaWNrPWdvVG9FbnYoZW52KSBzdHlsZT13aWR0aDoxMDAlIDpkaXNhYmxlZD1cInVzZXJuYW1lSW52YWxpZCB8fCBwYXNzd29yZEludmFsaWQgfHwgZGF0YUxvYWRpbmdcIiBpZD1sb2dpbkJ0biBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIDpkYXRhLWxvYWRpbmctdGV4dD1kYXRhTG9hZGluZ1RleHQ+PGkgY2xhc3M9XCJmYXIgZmEtYnVpbGRpbmcgbXItMlwiPjwvaT4gPHNwYW4+e3tlbnYuZGVzY3JpcHRpb259fSAoe3tlbnYuaWR9fSk8L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JtPjxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LW1kLWNlbnRlciBtdC0yXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0xMiBjYXJkXCI+PGRpdiBjbGFzcz1jYXJkLWJvZHk+PGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+PGRpdiBjbGFzcz1cImNvbC0yNCBtLTEgdGV4dC1jZW50ZXIgdGV4dC1wcmltYXJ5XCI+PHNwYW4+S2F0YWx5byBwbGF0Zm9ybSB2ZXJzaW9uIDxiPjAuOS41YmV0YTwvYj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0yNCBtLTEgdGV4dC1jZW50ZXJcIj48c3Bhbj5CdWlsZCA8Yj5hYzlkOTY1NzI5NzM3ZTk2NjFhY2RlMmY2ZTVlZGUwOGE2ODI0NTY1PC9iPjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDJfYXV0aC9hbmd1bGFyVGVtcGxhdGVzL3NpbXBsZWhlYWRlci5odG1sJywnJyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAyX2F1dGgvYW5ndWxhclRlbXBsYXRlcy9zc28uaHRtbCcsJzxmb3JtIEBzdWJtaXQucHJldmVudD1sb2dpblNzbygpIGlkPWxvZ2luRm9ybSBuYW1lPWZvcm0gY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYgdi1pZj1lcnJvck1zZyBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtbWQtY2VudGVyXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0xMiBwLTBcIj48ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgYWxlcnQgYWxlcnQtZGFuZ2VyXCI+PGg1Pnt7ZXJyb3JNc2d9fTwvaDU+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtbWQtY2VudGVyXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0xMiBjYXJkIHAtMFwiPjxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciB0ZXh0LWNlbnRlclwiPjxiIGNsYXNzPWNhcmQtdGl0bGUgdi1pZj0hZGF0YUxvYWRpbmc+PGkgY2xhc3M9XCJmYSBmYS1sb2NrXCI+PC9pPiZuYnNwIFBsZWFzZSBsb2dpbjwvYj48ZGl2IHYtaWY9ZGF0YUxvYWRpbmcgY2xhc3M9dGV4dC1jZW50ZXI+PGRpdiBjbGFzcz1sb2FkZXI+PC9kaXY+PGIgY2xhc3M9Y2FyZC10aXRsZSBzdHlsZT12ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y29sb3I6IzM0OThkYj4mbmJzcCZuYnNwIExvZ2dpbmcgaW4uLi48L2I+PC9kaXY+PC9kaXY+PGJyPjxkaXYgdi1pZj1lcnJvck1zZyBjbGFzcz1cImZvcm0tZ3JvdXAgY29udHJvbHNcIj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wgdGV4dC1jZW50ZXJcIj48YnV0dG9uIHR5cGU9c3VibWl0IDpkaXNhYmxlZD1kYXRhTG9hZGluZyBpZD1sb2dpbkJ0biBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIGRhdGEtbG9hZGluZy10ZXh0PVwiPHNwYW4gY2xhc3M9XFwnZmEgZmEtaG91cmdsYXNzXFwnPjwvc3Bhbj4gTG9nZ2luZyBpbi4uLlwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtbG9ja1wiPjwvc3Bhbj4gU3NvIGxvZ2luPC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JtPicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwM19yZXNvdXJjZXMvYW5ndWxhclRlbXBsYXRlcy9hcHBsaWNhdGlvbkRlZmluaXRpb24uaHRtbCcsJzxkaXYgY2xhc3M9bS0zPjxkaXYga3QtaGVscC1jZW50ZXIgaGVscC1pZD1cIlxcJ2FwcGRlZlxcJ1wiPjwvZGl2PjxkaXYgY2xhc3M9XCJjYXJkIG10LTFcIj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wtbGctNiB0ZXh0LWxlZnQgbXktYXV0b1wiPjxhIGNsYXNzPXRleHQtcHJpbWFyeSBocmVmIHRpdGxlPVwiUmV0dXJuIHRvIHByZXZpb3VzIHBhZ2VcIiBuZy1jbGljaz1yZXR1cm5Ub1ByZXZpb3VzUGFnZSgpPjxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tbGVmdCBtci0yXCI+PC9pPlJldHVybiB0byBwcmV2aW91cyBwYWdlPC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMTIgaDQgcHQtMiB0ZXh0LWNlbnRlclwiPjxzcGFuIGNsYXNzPWJvbGQ+e3tyZXNvdXJjZS5SZXNvdXJjZU5hbWV9fTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJteC0xIGJvbGQgdGV4dC1wcmltYXJ5XCI+e3tyZXNvdXJjZS5OYW1lfX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy02IGg0IG1iLTAgdGV4dC1yaWdodFwiPjxkaXYgY2xhc3M9XCJyb3cgbS0yIGp1c3RpZnktY29udGVudC1lbmRcIj48ZGl2IG5nLWlmPVwiKHJlc291cmNlLmlkICE9IG51bGwgfHwgcmVzb3VyY2UuaWQgPiAwKVwiIGNsYXNzPWNvbC1hdXRvPjxzcGFuIGNsYXNzPVwiZm50OCBtdC0xXCI+SUQ6IHt7cmVzb3VyY2UuaWR9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXgtMVwiPjxkaXY+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4teHNcIiB0aXRsZT1cIkNsaWNrIGZvciBkZXRhaWxzXCIgbmctY2xhc3M9XCJ7XFwnYnRuLW91dGxpbmUtc3VjY2Vzc1xcJzpnc3J2Yy5yZXNvdXJjZUZvcm1WZXJzaW9uW3Jlc291cmNlLnVpZF0uUHVibGlzaGVkLFxcJ2J0bi13YXJuaW5nXFwnOiFnc3J2Yy5yZXNvdXJjZUZvcm1WZXJzaW9uW3Jlc291cmNlLnVpZF0uUHVibGlzaGVkfVwiIG5nLWNsaWNrPVwic2hvd01vZGFsKFxcJ3ZlcnNpb25cXCcpXCI+PHNwYW4+VmVyc2lvbiB7e2dzcnZjLnJlc291cmNlRm9ybVZlcnNpb25bcmVzb3VyY2UudWlkXS5WZXJzaW9ufX08L3NwYW4+IDxpIG5nLWlmPWdzcnZjLnJlc291cmNlRm9ybVZlcnNpb25bcmVzb3VyY2UudWlkXS5QdWJsaXNoZWQgY2xhc3M9XCJmYSBmYS1jaGVjayBtbC0yXCI+PC9pPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBmbnQ4IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBpZGQ9YWN0aXZlT3JOb3Q+PHNwYW4gbmctaWY9XCJyZXNvdXJjZS5BY3RpdmUgJiYgKHJlc291cmNlLmlkICE9IG51bGwgfHwgcmVzb3VyY2UuaWQgPiAwKVwiIGNsYXNzPVwic21hbGwgYm9sZCBtdC0xXCI+QWN0aXZlIDxpIGNsYXNzPVwidGV4dC1zdWNjZXNzIGZhIGZhLWNoZWNrXCI+PC9pPjwvc3Bhbj4gPHNwYW4gbmctaWY9XCIhcmVzb3VyY2UuQWN0aXZlICYmIChyZXNvdXJjZS5pZCAhPSBudWxsIHx8IHJlc291cmNlLmlkID4gMClcIiBjbGFzcz1cInNtYWxsIGJvbGQgbXQtMVwiPk5vdCBhY3RpdmUgPGkgY2xhc3M9XCJ0ZXh0LWRhbmdlciBmYSBmYS10aW1lc1wiPjwvaT48L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQgbXQtMVwiPjxkaXYga3QtcmVzb3VyY2UtZGVmaW5pdGlvbiByZXNvdXJjZT1yZXNvdXJjZT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY2FyZCBtdC0xXCI+PGRpdiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIiBjbGFzcz1cInAtMSByb3cgbXgtMVwiIG5nLWNsaWNrPVwiaXNDb2xsYXBzZWRQdWJsaXNoID0gIWlzQ29sbGFwc2VkUHVibGlzaFwiPjxzcGFuIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBwLTFcIj48c3BhbiBuZy1jbGFzcz1cIntcXCdmYXMgZmEtY2hldnJvbi11cFxcJzogaXNDb2xsYXBzZWRQdWJsaXNoLFxcJ2ZhcyBmYS1jaGV2cm9uLWRvd25cXCc6ICFpc0NvbGxhcHNlZFB1Ymxpc2ggfVwiPjwvc3Bhbj48L3NwYW4+PGQgY2xhc3M9dGFnPnt7cmVzb3VyY2UuUmVzb3VyY2VOYW1lfX0gUFVCTElTSDwvZD48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHAtMFwiIHVpYi1jb2xsYXBzZT0haXNDb2xsYXBzZWRQdWJsaXNoPjxkaXYgbmctaWY9cHVibGlzaGVkUmVzb3VyY2VzLmxlbmd0aCBjbGFzcz1wLTE+PGRpdiBuZy1yZXBlYXQ9XCJlbGVtZW50IGluIHB1Ymxpc2hlZFJlc291cmNlcyB0cmFjayBieSBlbGVtZW50LmlkXCI+PGRpdiBuZy1pZj1cIiRpbmRleD09MFwiIGNsYXNzPVwicm93IG0tMCBib2xkIHRleHQtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTIgbXktMSBib3JkZXItYm90dG9tXCIgc3R5bGU9XCJjb2xvcjp3aGl0ZTtiYWNrZ3JvdW5kLWNvbG9yOiAjNTU1NTU1O1wiPjxzcGFuIGNsYXNzPlZlcnNpb248L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy01IG15LTEgYm9yZGVyLWJvdHRvbVwiIHN0eWxlPVwiY29sb3I6d2hpdGU7YmFja2dyb3VuZC1jb2xvcjogIzU1NTU1NTtcIj48c3BhbiBjbGFzcz5EZXNjcmlwdGlvbjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTIgbXktMSBib3JkZXItYm90dG9tXCIgc3R5bGU9XCJjb2xvcjp3aGl0ZTtiYWNrZ3JvdW5kLWNvbG9yOiAjNTU1NTU1O1wiPjxzcGFuIGNsYXNzPlByb2R1Y3Rpb248L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0yIG15LTEgYm9yZGVyLWJvdHRvbVwiIHN0eWxlPVwiY29sb3I6d2hpdGU7YmFja2dyb3VuZC1jb2xvcjogIzU1NTU1NTtcIj48c3BhbiBjbGFzcz5NYXJrZXQ8L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTAgaXRlbSB0ZXh0LWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+PGRpdiBjbGFzcz1jb2wtbGctMj48c3Bhbj57e2VsZW1lbnQuVmVyc2lvbn19PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTU+PHNwYW4+e3tlbGVtZW50LkRlc2NyaXB0aW9ufX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1jb2wtbGctMj48c3BhbiBuZy1pZj1lbGVtZW50LlByb2Q+PGkgY2xhc3M9XCJmYXMgZmEtY2hlY2tcIj48L2k+PC9zcGFuPiA8c3BhbiBuZy1pZj0hZWxlbWVudC5Qcm9kPjxpIGNsYXNzPlg8L2k+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTI+PGJ1dHRvbiBuZy1pZj1lbGVtZW50Lk1hcmtldCBkaXNhYmxlZCB0eXBlPWJ1dHRvbiBjbGFzcz1cIm9wYWNpdHktMTAwIGJ0biBidG4tc21cIj48aSBjbGFzcz1cInRleHQtc3VjY2VzcyBmYXMgZmEtY2hlY2tcIj48L2k+PC9idXR0b24+PGJ1dHRvbiBuZy1jbGljaz1cInNob3dNYW5pZmVzdChcXCdwdWJsaXNoMm1hcmtldFxcJywgZWxlbWVudClcIiBuZy1pZj0hZWxlbWVudC5NYXJrZXQgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXNtXCI+PGkgY2xhc3M9XCJmYXMgZmEtc3RvcmUgdGV4dC1wcmltYXJ5XCI+PC9pPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY3VycmVudC12ZXJzaW9uIGNsYXNzPVwicm93IG0tNCBpdGVtIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj48ZGl2IGNsYXNzPVwiY29sLTEyIG0tMiBwLTJcIiBzdHlsZT1iYWNrZ3JvdW5kOmFsaWNlYmx1ZTs+PGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj48ZGl2IGNsYXNzPVwiY29sLTIwIG15LTEgZm50OFwiPjxkaXYgY2xhc3M9Y29sLTI0PjxzcGFuPkN1cnJlbnQgdmVyc2lvbjogPGI+e3tyZXNvdXJjZS5WZXJzaW9ufX0uMDwvYj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1jb2wtMjQ+PGRpdiBuZy1pZj1wdWJsaXNoZWRSZXNvdXJjZS5QdWJsaXNoZWQgY2xhc3M+PHNwYW4gY2xhc3M9XCJtci0yIGZudDhcIj5QdWJsaXNoZWQ6PC9zcGFuPiA8c3BhbiBjbGFzcz1cImZhIGZhLWNoZWNrLWNpcmNsZSBtci0yIHRleHQtc3VjY2VzcyBmbnQ4XCI+PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgdGV4dC1jZW50ZXJcIiBuZy1pZj1wdWJsaXNoZWRSZXNvdXJjZS5QdWJsaXNoZWQ+PGRpdiBuZy1pZj1cInB1Ymxpc2hlZFJlc291cmNlLnJtZCAmJiBwdWJsaXNoZWRSZXNvdXJjZS5jb3VudD09MFwiPjxzcGFuIGNsYXNzPVwiYm9yZGVyLWJvdHRvbSBoNVwiPlB1Ymxpc2hlZCBkZWZpbml0aW9uIChubyBjaGFuZ2VzKTwvc3Bhbj48ZGl2IGNsYXNzPW15LTIga3QtYmFzaWMtdGFibGUgY29sdW1ucz1kYXRhc2V0RGVwbG95Q29scyBkYXRhPXB1Ymxpc2hlZFJlc291cmNlLnJtZCBtYXBwaW5nPWRlcGxveUFjdGlvbk1hcHBpbmdzPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJwdWJsaXNoZWRSZXNvdXJjZS5ybWQgJiYgcHVibGlzaGVkUmVzb3VyY2UuY291bnQ+MFwiPjxzcGFuIGNsYXNzPVwiYm9yZGVyLWJvdHRvbSBoNVwiPkNoYW5nZXMgZm9yIHB1Ymxpc2hpbmc8L3NwYW4+PGRpdiBjbGFzcz1teS0yIGt0LWJhc2ljLXRhYmxlIGNvbHVtbnM9ZGF0YXNldERlcGxveUNvbHMgZGF0YT1wdWJsaXNoZWRSZXNvdXJjZS5ybWQgbWFwcGluZz1kZXBsb3lBY3Rpb25NYXBwaW5ncz48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC0yND48c3BhbiBuZy1pZj1yZXNvdXJjZS5DaGFuZ2VkQnk+TGFzdCBjaGFuZ2U6IHt7cmVzb3VyY2UuQ2hhbmdlZERhdGVUaW1lIHwgZGF0ZTpcImRkLk1NLnl5eXkgXFwnYXRcXCcgSEg6bW06c3NcIn19PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLTQ+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIG5nLWNsaWNrPVwic2hvd01hbmlmZXN0KFxcJ21hbmlmZXN0XFwnKVwiPjxzcGFuPlB1Ymxpc2g8L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImg1IHRleHQtY2VudGVyIG10LTVcIiBuZy1pZj0hcHVibGlzaGVkUmVzb3VyY2VzLmxlbmd0aD5Ob3RoaW5nIHlldCBwdWJsaXNoZWQgITwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJtdC0xIHB5LTIgcHgtNFwiPjxkaXYgY2xhc3M9XCJjb2wtMjQgbXktMyBoNSB0ZXh0LWNlbnRlclwiPjwvZGl2PjxkaXYgc3R5bGU9XCJtaW4taGVpZ2h0OiAyNTBweDsgZmxleC1kaXJlY3Rpb246IHJvdztqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlclwiIGNsYXNzPVwiZC1mbGV4IG0tYXV0b1wiPjxkaXYgY2xhc3M9XCJjYXJkIHNoYWRvdy1zbVwiIHN0eWxlPVwibWluLXdpZHRoOiA2MCVcIj48ZGl2IGNsYXNzPVwicm93IG0tMCBiZy1saWdodCBwLTFcIj48ZGl2IGNsYXNzPVwiY29sLTUgbXQtMSBwLTJcIj48ZGl2IGNsYXNzPVwiYm9sZCBkLWlubGluZSBteS1hdXRvIHRleHQtbXV0ZWRcIj48aSBjbGFzcz1cImZhIGZhLWJhcnMgcGwtMSBwdC0xXCI+PC9pPjwvZGl2PjxkaXYgY2xhc3M9XCJib2xkIGQtaW5saW5lIG15LWF1dG8gcHktYXV0byBtbC0yIHRleHQtbXV0ZWRcIj57ezo6cGFnZUxhYmVscy5hcHBsaWNhdGlvbk1lbnUgfHwgXFwnQXBwbGljYXRpb24gbWVudVxcJ319PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCBkLWZsZXhcIj48ZGl2IGt0LWJvb3RzdHJhcC10b29sdGlwIGRhdGEtdG9nZ2xlPXRvb2x0aXAgZGF0YS1wbGFjZW1lbnQ9dG9wIHRpdGxlPVwiSUQ6IHt7cGFnZVN0YXRlLnNlbGVjdGVkTWVudS5pZH19LCAmbmJzcDt7eyBwYWdlU3RhdGUuc2VsZWN0ZWRNZW51LnNlbGVjdGVkUHVibGlzaGVkUmVzb3VyY2UuVmVyc2lvbiA/IFxcJ3ZlcnNpb246XFwnICsgcGFnZVN0YXRlLnNlbGVjdGVkTWVudS5zZWxlY3RlZFB1Ymxpc2hlZFJlc291cmNlLlZlcnNpb24gOiBcXCcodXNpbmcgbGF0ZXN0IHZlcnNpb24pXFwnfX1cIiBuZy1zaG93PXBhZ2VTdGF0ZS5zZWxlY3RlZE1lbnUuaWQgY2xhc3M9XCJib2xkIG10LTIgdGV4dC1jZW50ZXIgY29sIGg1IHRleHQtcHJpbWFyeVwiPnt7cGFnZVN0YXRlLnNlbGVjdGVkTWVudS5uYW1lfX08c3BhbiBjbGFzcz1cImg2IHRleHQtc3VjY2Vzc1wiIG5nLWlmPXBhZ2VTdGF0ZS5zZWxlY3RlZE1lbnUuc2VsZWN0ZWRQdWJsaXNoZWRSZXNvdXJjZS5WZXJzaW9uPjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTUgcC0yXCI+PGJ1dHRvbiBuZy1zaG93PSFwYWdlU3RhdGUuc2VsZWN0TWVudSBuZy1pbml0PVwicGFnZVN0YXRlLnNlbGVjdGVkTWVudS5TZWxlY3RWZXJzaW9uRGlyZWN0ID0gcGFnZVN0YXRlLnNlbGVjdGVkTWVudS5pZCA/IHRydWU6ZmFsc2VcIiB0eXBlPWJ1dHRvbiBjbGFzcz1cImZsb2F0LXJpZ2h0IGJ0biBidG4taW5mbyBidG4tc21cIiBuZy1jbGljaz1vcGVuU2VsZWN0TWVudSgpPjxpIGNsYXNzPVwiZmEgZmEtZWRpdCBtci0yXCI+PC9pPiA8c3BhbiBrdC1wb3BvdmVyIGRhdGEtcGxhY2VtZW50PXRvcCB0aWQ9XCJcXCdzZWxlY3QtbWVudVxcJ1wiIHNob3ctb24tc3RhcnQ9dHJ1ZSBlbmFibGU9cGFnZVN0YXRlLnNlbGVjdGVkUGFnZS5pZCBuZy1pZj0hcGFnZVN0YXRlLnNlbGVjdGVkTWVudS5pZD5TZWxlY3QgbWVudTwvc3Bhbj4gPHNwYW4gbmctaWY9cGFnZVN0YXRlLnNlbGVjdGVkTWVudS5pZD5DaGFuZ2UgbWVudTwvc3Bhbj48L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1zaG93PXBhZ2VTdGF0ZS5zZWxlY3RNZW51IG5nLWNsaWNrPVwicGFnZVN0YXRlLnNlbGVjdE1lbnU9ZmFsc2U7cGFnZVN0YXRlLnNlbGVjdGVkTWVudU9wdGlvbj1cXCdcXCdcIiBjbGFzcz1cImZsb2F0LXJpZ2h0IGJ0biBidG4tZGFuZ2VyIGJ0bi1zbSBteC0yIG1iLTJcIj5YPC9idXR0b24+PC9kaXY+PGRpdiBuZy1pZj1wYWdlU3RhdGUuc2VsZWN0TWVudSBjbGFzcz1cImNvbC0yNCB0ZXh0LWNlbnRlciBteS0yXCI+PGRpdiBuZy1pZj1wYWdlU3RhdGUuc2VsZWN0ZWRNZW51LmlkIGNsYXNzPVwiY29sLTI0IG1iLTRcIj48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWw+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmctY2hhbmdlPW9uY2hlY2soKSBuZy1pbml0PVwicGFnZVN0YXRlLnNlbGVjdGVkTWVudS5TZWxlY3RWZXJzaW9uRGlyZWN0ID0gcGFnZVN0YXRlLnNlbGVjdGVkTWVudS5zZWxlY3RlZFB1Ymxpc2hlZFJlc291cmNlLlZlcnNpb24gPyB0cnVlOmZhbHNlXCIgbmctbW9kZWw9cGFnZVN0YXRlLnNlbGVjdGVkTWVudS5TZWxlY3RWZXJzaW9uRGlyZWN0IG5nLWNsaWNrPVwiZ2V0UHVibGlzaGVkUmVzb3VyY2VzKHBhZ2VTdGF0ZS5zZWxlY3RlZE1lbnUsXFwnYWxsXFwnKVwiIGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIj4gU2VsZWN0IG1lbnUgdmVyc2lvbiBtYW51YWxseSA8c3BhbiBuZy1pZj0hcGFnZVN0YXRlLnNlbGVjdGVkTWVudS5TZWxlY3RWZXJzaW9uRGlyZWN0PihpZiB1bmNoZWNrZWQsIGxhdGVzdCB2ZXJzaW9uIGlzIHVzZWQpKTwvc3Bhbj48L2xhYmVsPjxkaXYgbmctaWY9XCJ0cnVlIHx8IHBhZ2VTdGF0ZS5zZWxlY3RlZE1lbnUuU2VsZWN0VmVyc2lvbkRpcmVjdFwiIGNsYXNzPVwidy01MCBtLWF1dG9cIj48ZGl2IGNsYXNzPW10LTIgbmctZm9ybT1pbm5lclBhZ2VWZXJzaW9ue3twYWdlU3RhdGUuc2VsZWN0ZWRNZW51LmlkfX0+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLWlmPVwicGFnZVN0YXRlLnNlbGVjdGVkTWVudS5TZWxlY3RWZXJzaW9uRGlyZWN0ICYmIHNlbGVjdGVkUmVzb3VyY2VzUHVibGlzaGVkTGlzdFtwYWdlU3RhdGUuc2VsZWN0ZWRNZW51LmlkXS5sZW5ndGhcIiBpcy1tdWx0aXBsZT1mYWxzZSBuZy1tb2RlbD1wYWdlU3RhdGUuc2VsZWN0ZWRNZW51LnNlbGVjdGVkUHVibGlzaGVkUmVzb3VyY2Ugc2VsZWN0ZWQtaXRlbXM9cGFnZVN0YXRlLnNlbGVjdGVkTWVudS5zZWxlY3RlZFB1Ymxpc2hlZFJlc291cmNlIHJlcXVpcmVkLWZpZWxkPWZhbHNlIGRyb3Bkb3duLWl0ZW1zPXNlbGVjdGVkUmVzb3VyY2VzUHVibGlzaGVkTGlzdFtwYWdlU3RhdGUuc2VsZWN0ZWRNZW51LmlkXSBkcm9wZG93bi1pZD1cIlxcJ3ZlcnNpb25cXCdcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2lubmVyRm9ybVZlcnNpb25cXCcrcGFnZVN0YXRlLnNlbGVjdGVkTWVudS5pZFwiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IHZlcnNpb25cXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjxkaXYgbmctaWY9XCJzZWxlY3RlZFJlc291cmNlc1B1Ymxpc2hlZExpc3RbcGFnZVN0YXRlLnNlbGVjdGVkTWVudS5pZF0ubGVuZ3RoPT0wXCIgY2xhc3M9dGV4dC1kYW5nZXI+Tm8gdmVyc2lvbnMgZm91bmQhPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cInBhZ2VTdGF0ZS5zZWxlY3RlZE1lbnVPcHRpb24hPVxcJ2V4aXN0aW5nXFwnXCIgY2xhc3M9bXQtMD48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWV4aXN0aW5nTWVudSgpIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBteC0yIG1iLTJcIiBrdC1ib290c3RyYXAtdG9vbHRpcCBkYXRhLXRvZ2dsZT10b29sdGlwIGRhdGEtcGxhY2VtZW50PWJvdHRvbSB0aXRsZT1cIkNsaWNrIHRvIHVzZSBleGlzdGluZyBtZW51XCI+e3sgcGFnZVN0YXRlLnNlbGVjdGVkTWVudS5pZCA/IFxcJ1NlbGVjdCBtZW51IFxcJyA6IFxcJ1NlbGVjdCBleGlzdGluZyBtZW51XFwnIH19PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9bmV3TWVudSgpIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBteC0yIG1iLTJcIiBrdC1ib290c3RyYXAtdG9vbHRpcCBkYXRhLXRvZ2dsZT10b29sdGlwIGRhdGEtcGxhY2VtZW50PWJvdHRvbSB0aXRsZT1cIkNsaWNrIHRvIGNyZWF0ZSBuZXcgbWVudSBmcm9tIHNjcmF0Y2hcIj5DcmVhdGUgbmV3IG1lbnU8L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwicGFnZVN0YXRlLnNlbGVjdGVkTWVudU9wdGlvbj09XFwnZXhpc3RpbmdcXCdcIiBjbGFzcz1cImJnLXdoaXRlIHJvdW5kZWQgY29sLWxnLTE2IHAtMiBtLWF1dG8gc2hhZG93LXNtIGJvcmRlclwiPjxkaXYgY2xhc3M9XCJib2xkIHRleHQtY2VudGVyIG1iLTNcIj5TZWxlY3QgYXBsaWNhdGlvbiBtZW51PC9kaXY+PGRpdiBjbGFzcz1teS0yPjxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgcGxhY2Vob2xkZXI9U2VhcmNoLi4uIG5nLW1vZGVsPXBhZ2VTdGF0ZS5maWx0ZXJNZW51cz48L2Rpdj48ZGl2IGlkPWFwcC1tZW51LXRhc2stbGlzdCBzdHlsZT1cIm1heC1oZWlnaHQ6IDI1cmVtO292ZXJmbG93LXk6IGF1dG87cGFkZGluZzogMXJlbTttYXJnaW4tYm90dG9tOiAwLjVyZW07XCI+PGRpdiBuZy1yZXBlYXQ9XCJtZW51IGluIG1lbnVMaXN0IHRyYWNrIGJ5IG1lbnUuaWRcIiBuZy1zaG93PVwiKFttZW51Lm5hbWVdIHwgZmlsdGVyOnBhZ2VTdGF0ZS5maWx0ZXJNZW51cykubGVuZ3RoXCIgY2xhc3M9XCJib3JkZXIgcm91bmRlZCB0ZXh0LXByaW1hcnkgc2hhZG93LXNtIG1iLTFcIj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9c2VsZWN0TWVudShtZW51KSBjbGFzcz1cImQtZmxleCB3LTEwMCBweS0yIGJ0biBidG4tb3V0bGluZS1zdWNjZXNzIGJ0bi14c1wiPjxkaXYgY2xhc3M9XCJjb2wgdGV4dC1sZWZ0XCI+e3skaW5kZXgrMX19LiB7e21lbnUubmFtZX19ICh7e21lbnUuaWR9fSk8L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcHItMFwiPjwvZGl2PjxpIGNsYXNzPVwic2hvd09uSG92ZXIgdGV4dC13aGl0ZSBmYXMgZmEtY2hlY2tcIj48L2k+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm0tMyBwLTNcIj48L2Rpdj48ZGl2IGRlZi1wYWdlLXNlbGVjdGlvbiBjbGFzcz1wLTI+PGRpdiBuZy1pZj1sb2NhbFZhcnMucGFnZXNkb3dubG9hZGVkIGNsYXNzPVwicm93IG0tMCBtdC0yIHRleHQtY2VudGVyXCI+PGRpdiBuZy1mb3JtPXBhZ2VTZWxlY3QgY2xhc3M9XCJjb2wtMTIgcC0xIHBiLTMgbXgtYXV0byBtYi0yXCIgc3R5bGU9YmFja2dyb3VuZDphbGljZWJsdWU+PGRpdiBjbGFzcz1cImJvbGQgbXktMlwiPlNlbGVjdCBkZWZhdWx0IHBhZ2U8L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tM1wiPjxkaXYgY2xhc3M9XCJjb2wtMjQgcHgtMFwiIGt0LXBvcG92ZXIgZGF0YS1wbGFjZW1lbnQ9bGVmdCB0aWQ9XCJcXCdzZWxlY3QtZGVmYXVsdC1wYWdlXFwnXCIgc2hvdy1vbi1zdGFydD10cnVlIGVuYWJsZT1cImxvY2FsVmFycy5wYWdlc2Rvd25sb2FkZWQgJiYgbG9jYWxWYXJzLnJlc291cmNlZGVmZG93bmxvYWRlZCAmJiAhcGFnZVN0YXRlLnNlbGVjdGVkUGFnZS5pZCAmJiAhcGFnZVN0YXRlLnNlbGVjdGVkTWVudS5pZFwiPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBpcy1tdWx0aXBsZT1mYWxzZSBuZy1tb2RlbD1wYWdlU3RhdGUuc2VsZWN0ZWRQYWdlIHNlbGVjdGVkLWl0ZW1zPXBhZ2VTdGF0ZS5zZWxlY3RlZFBhZ2UgcmVxdWlyZWQtZmllbGQ9ZmFsc2UgZHJvcGRvd24taXRlbXM9cGFnZUxpc3QgZHJvcGRvd24taWQ9XCJcXCdwYWdlTGlzdFxcJ1wiIHBhcmVudC1mb3JtLWlkPVwiXFwncGFnZVNlbGVjdFxcJ1wiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IHBhZ2UuLi5cXCdcIiBjbGVhci1mbj10ZXN0Pjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PC9kaXY+PC9kaXY+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsPjxpbnB1dCB0eXBlPWNoZWNrYm94IG5nLW1vZGVsPXBhZ2VTdGF0ZS5zZWxlY3RlZFBhZ2UuU2VsZWN0VmVyc2lvbkRpcmVjdCBuZy1jbGljaz1cImdldFB1Ymxpc2hlZFJlc291cmNlcyhwYWdlU3RhdGUuc2VsZWN0ZWRQYWdlLFxcJ2Zvcm1cXCcpXCIgY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiPiBTZWxlY3QgcGFnZSB2ZXJzaW9uIG1hbnVhbGx5IDxzcGFuIG5nLWlmPSFwYWdlU3RhdGUuc2VsZWN0ZWRQYWdlLlNlbGVjdFZlcnNpb25EaXJlY3Q+KGlmIHVuY2hlY2tlZCwgbGF0ZXN0IHZlcnNpb24gaXMgdXNlZCk8L3NwYW4+PC9sYWJlbD48ZGl2IG5nLWlmPXBhZ2VTdGF0ZS5zZWxlY3RlZFBhZ2UuU2VsZWN0VmVyc2lvbkRpcmVjdCBjbGFzcz1tLTM+PGRpdiBuZy1pZj1cInNlbGVjdGVkUmVzb3VyY2VzUHVibGlzaGVkTGlzdFtwYWdlU3RhdGUuc2VsZWN0ZWRQYWdlLmlkXS5sZW5ndGg+MFwiIGNsYXNzPW10LTI+PHNwYW4gY2xhc3M9dGV4dC1kYXJrPlNlbGVjdCB2ZXJzaW9uPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9bXQtMiBuZy1mb3JtPWlubmVyUGFnZVZlcnNpb257e3BhZ2VTdGF0ZS5zZWxlY3RlZFBhZ2UuaWR9fT48a3QtZHJvcGRvd24tc3RhbmRhcmQgbmctaWY9c2VsZWN0ZWRSZXNvdXJjZXNQdWJsaXNoZWRMaXN0W3BhZ2VTdGF0ZS5zZWxlY3RlZFBhZ2UuaWRdLmxlbmd0aCBpcy1tdWx0aXBsZT1mYWxzZSBuZy1tb2RlbD1wYWdlU3RhdGUuc2VsZWN0ZWRQYWdlLnNlbGVjdGVkUHVibGlzaGVkUmVzb3VyY2Ugc2VsZWN0ZWQtaXRlbXM9cGFnZVN0YXRlLnNlbGVjdGVkUGFnZS5zZWxlY3RlZFB1Ymxpc2hlZFJlc291cmNlIHJlcXVpcmVkLWZpZWxkPXRydWUgZHJvcGRvd24taXRlbXM9c2VsZWN0ZWRSZXNvdXJjZXNQdWJsaXNoZWRMaXN0W3BhZ2VTdGF0ZS5zZWxlY3RlZFBhZ2UuaWRdIGRyb3Bkb3duLWlkPVwiXFwndmVyc2lvblxcJ1wiIHBhcmVudC1mb3JtLWlkPVwiXFwnaW5uZXJGb3JtVmVyc2lvblxcJytwYWdlU3RhdGUuc2VsZWN0ZWRQYWdlLmlkXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgdmVyc2lvblxcJ1wiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PGRpdiBuZy1pZj1cInNlbGVjdGVkUmVzb3VyY2VzUHVibGlzaGVkTGlzdFtwYWdlU3RhdGUuc2VsZWN0ZWRQYWdlLmlkXS5sZW5ndGg9PTBcIiBjbGFzcz10ZXh0LWRhbmdlcj5ObyB2ZXJzaW9ucyBmb3VuZCE8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGhlbHAtcGFnZSBjbGFzcz1wLTI+PGRpdiBuZy1pZj1sb2NhbFZhcnMucGFnZXNkb3dubG9hZGVkIGNsYXNzPVwicm93IG0tMCBtdC0yIHRleHQtY2VudGVyXCI+PGRpdiBuZy1mb3JtPWhlbHBQYWdlU2VsZWN0IGNsYXNzPVwiY29sLTEyIHAtMSBwYi0zIG14LWF1dG8gbWItMlwiIHN0eWxlPWJhY2tncm91bmQ6YWxpY2VibHVlPjxkaXYgY2xhc3M9XCJib2xkIG15LTJcIj5TZWxlY3QgaGVscCBwYWdlPC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTNcIj48ZGl2IGNsYXNzPVwiY29sLTI0IHB4LTBcIiBrdC1wb3BvdmVyIGRhdGEtcGxhY2VtZW50PWxlZnQgdGlkPVwiXFwnc2VsZWN0LWhlbHAtcGFnZVxcJ1wiIHNob3ctb24tc3RhcnQ9dHJ1ZSBlbmFibGU9XCJsb2NhbFZhcnMucGFnZXNkb3dubG9hZGVkICYmIGxvY2FsVmFycy5yZXNvdXJjZWRlZmRvd25sb2FkZWQgJiYgIXBhZ2VTdGF0ZS5oZWxwUGFnZS5pZFwiPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBpcy1tdWx0aXBsZT1mYWxzZSBuZy1tb2RlbD1wYWdlU3RhdGUuaGVscFBhZ2Ugc2VsZWN0ZWQtaXRlbXM9cGFnZVN0YXRlLmhlbHBQYWdlIHJlcXVpcmVkLWZpZWxkPWZhbHNlIGRyb3Bkb3duLWl0ZW1zPXBhZ2VMaXN0IGRyb3Bkb3duLWlkPVwiXFwnaGVscFBhZ2VMaXN0XFwnXCIgcGFyZW50LWZvcm0taWQ9XCJcXCdoZWxwUGFnZVNlbGVjdFxcJ1wiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IGhlbHAgcGFnZS4uLlxcJ1wiIGNsZWFyLWZuPXRlc3Q+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48L2Rpdj48L2Rpdj48bGFiZWwgY2xhc3M9a3QtY2hlY2tib3gtbGFiZWw+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmctbW9kZWw9cGFnZVN0YXRlLmhlbHBQYWdlIG5nLWNsaWNrPVwiZ2V0UHVibGlzaGVkUmVzb3VyY2VzKHBhZ2VTdGF0ZS5oZWxwUGFnZSxcXCdmb3JtXFwnKVwiIGNsYXNzPVwia3QtY2hlY2tib3gtcHJvcGVydGllcyBteS0yIG1yLTJcIj4gU2VsZWN0IHBhZ2UgdmVyc2lvbiBtYW51YWxseSA8c3BhbiBuZy1pZj0hcGFnZVN0YXRlLmhlbHBQYWdlLlNlbGVjdFZlcnNpb25EaXJlY3Q+KGlmIHVuY2hlY2tlZCwgbGF0ZXN0IHZlcnNpb24gaXMgdXNlZCk8L3NwYW4+PC9sYWJlbD48ZGl2IG5nLWlmPXBhZ2VTdGF0ZS5oZWxwUGFnZS5TZWxlY3RWZXJzaW9uRGlyZWN0IGNsYXNzPW0tMz48ZGl2IG5nLWlmPVwic2VsZWN0ZWRSZXNvdXJjZXNQdWJsaXNoZWRMaXN0W3BhZ2VTdGF0ZS5oZWxwUGFnZS5pZF0ubGVuZ3RoPjBcIiBjbGFzcz1tdC0yPjxzcGFuIGNsYXNzPXRleHQtZGFyaz5TZWxlY3QgdmVyc2lvbjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPW10LTIgbmctZm9ybT1pbm5lckhlbHBQYWdlVmVyc2lvbnt7cGFnZVN0YXRlLmhlbHBQYWdlLmlkfX0+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLWlmPXNlbGVjdGVkUmVzb3VyY2VzUHVibGlzaGVkTGlzdFtwYWdlU3RhdGUuaGVscFBhZ2UuaWRdLmxlbmd0aCBpcy1tdWx0aXBsZT1mYWxzZSBuZy1tb2RlbD1wYWdlU3RhdGUuaGVscFBhZ2Uuc2VsZWN0ZWRQdWJsaXNoZWRIZWxwIHNlbGVjdGVkLWl0ZW1zPXBhZ2VTdGF0ZS5oZWxwUGFnZS5zZWxlY3RlZFB1Ymxpc2hlZEhlbHAgcmVxdWlyZWQtZmllbGQ9dHJ1ZSBkcm9wZG93bi1pdGVtcz1zZWxlY3RlZFJlc291cmNlc1B1Ymxpc2hlZExpc3RbcGFnZVN0YXRlLmhlbHBQYWdlLmlkXSBkcm9wZG93bi1pZD1cIlxcJ3ZlcnNpb25cXCdcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2lubmVyRm9ybVZlcnNpb25cXCcrcGFnZVN0YXRlLmhlbHBQYWdlLmlkXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgdmVyc2lvblxcJ1wiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PGRpdiBuZy1pZj1cInNlbGVjdGVkUmVzb3VyY2VzUHVibGlzaGVkTGlzdFtwYWdlU3RhdGUuaGVscFBhZ2UuaWRdLmxlbmd0aD09MFwiIGNsYXNzPXRleHQtZGFuZ2VyPk5vIHZlcnNpb25zIGZvdW5kITwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgcC0zIG0tM1wiIHN0eWxlPjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0zXCIgc3R5bGU+PGRpdiBjbGFzcz1cImNvbCBwLTAgdGV4dC1sZWZ0XCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBidG4tc21cIiBuZy1kaXNhYmxlZD0hcGFnZVN0YXRlLnNhdmVFbmFibGVkIG5nLWNsaWNrPVwic2hvd01vZGFsKFxcJ3NhdmVcXCcpXCI+PGkgY2xhc3M9XCJmYSBmYS1zYXZlIG1yLTJcIj48L2k+U2F2ZTwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pjxmb3JtIG5nLXN1Ym1pdD1zYXZlQXBwbGljYXRpb24oZm9ybU1vZGFsLiR2YWxpZCkgbmFtZT1mb3JtTW9kYWwgY2xhc3M9XCJtb2RhbCBmYWRlIGJkLWV4YW1wbGUtbW9kYWwtbGdcIiBpZD1hcHBTYXZlTW9kYWwgdGFiaW5kZXg9LTEgcm9sZT1kaWFsb2cgYXJpYS1sYWJlbGxlZGJ5PWFwcFNhdmVNb2RhbExibCBhcmlhLWhpZGRlbj10cnVlPjxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwteGxcIiByb2xlPWRvY3VtZW50PjxkaXYgY2xhc3M9bW9kYWwtY29udGVudD48ZGl2IGNsYXNzPW1vZGFsLWhlYWRlcj48c3BhbiBjbGFzcz1cImZhIGZhLWxnIGZhLWRhdGFiYXNlIG0tMlwiPjwvc3Bhbj48aDUgY2xhc3M9bW9kYWwtdGl0bGUgaWQ9ZXhhbXBsZU1vZGFsTG9uZ1RpdGxlPnt7cmVzb3VyY2UuUmVzb3VyY2VOYW1lfX0gPGI+e3tyZXNvdXJjZS5OYW1lfX08L2I+PC9oNT48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPWNsb3NlIGRhdGEtZGlzbWlzcz1tb2RhbCBhcmlhLWxhYmVsPUNsb3NlPjxzcGFuIGFyaWEtaGlkZGVuPXRydWU+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBtb2RhbC1ib2R5XCI+PGRpdiBjbGFzcz1cImNvbC1sZy04IHAtMFwiPjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogZm9ybU1vZGFsLklkLiR0b3VjaGVkICYmIGZvcm1Nb2RhbC5JZC4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1sZy0yNCBmb3I9SWQ+SWQ8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9cmVzb3VyY2UuaWQgbmctZGlzYWJsZWQ9dHJ1ZSBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1JZCBuYW1lPUlkIHBsYWNlaG9sZGVyPUlkPjxwIG5nLXNob3c9XCJmb3JtTW9kYWwuSWQuJHRvdWNoZWQgJiYgZm9ybU1vZGFsLklkLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5FbnRlciByZXNvdXJjZSBJZDwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IGZvcm1Nb2RhbC5WZXJzaW9uLiR0b3VjaGVkICYmIGZvcm1Nb2RhbC5WZXJzaW9uLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTI0IGZvcj1WZXJzaW9uPlZlcnNpb248L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxpbnB1dCB0eXBlPXRleHQgbmctZGlzYWJsZWQ9dHJ1ZSBuZy1tb2RlbD1uZXdQdWJsaXNoVmVyc2lvbiBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1WZXJzaW9uIG5hbWU9VmVyc2lvbiBwbGFjZWhvbGRlcj1cIlJlc291cmNlIFZlcnNpb25cIj48cCBuZy1zaG93PVwiKGZvcm1Nb2RhbC5WZXJzaW9uLiR0b3VjaGVkKSAmJiBmb3JtTW9kYWwuVmVyc2lvbi4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIgcmVzb3VyY2UgVmVyc2lvbjwvcD48L2Rpdj48L2Rpdj48ZGl2PjxkaXYgY2xhc3M9bS0yPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJtb2RhbEFjdGlvbj09XFwnc2F2ZVxcJ1wiIGNsYXNzPVwiY29sLWxnLTE2IHAtMFwiPjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiBmb3JtTW9kYWwuRGVzY3JpcHRpb24uJHRvdWNoZWQgJiYgZm9ybU1vZGFsLkRlc2NyaXB0aW9uLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTI0IGZvcj1EZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PHRleHRhcmVhIG5nLW1vZGVsPWxvY2FsVmFycy5uZXdEZXNjcmlwdGlvbiBuYW1lPURlc2NyaXB0aW9uIG5nLXJlcXVpcmVkPXRydWUgbmctbWluLWxlbmd0aD0xMCBuZy1jbGFzcz1cInsgXFwnYm9yZGVyLWRhbmdlclxcJyA6IGZvcm1Nb2RhbC5EZXNjcmlwdGlvbi4kdG91Y2hlZCAmJiBmb3JtTW9kYWwuRGVzY3JpcHRpb24uJGludmFsaWQgfVwiIGNsYXNzPWZvcm0tY29udHJvbD48L3RleHRhcmVhPjxwIG5nLXNob3c9XCIoIGZvcm1Nb2RhbC5EZXNjcmlwdGlvbi4kdG91Y2hlZCkgJiYgZm9ybU1vZGFsLkRlc2NyaXB0aW9uLiRpbnZhbGlkXCIgY2xhc3M9XCJzbWFsbCB0ZXh0LWRhbmdlclwiPkVudGVyIHJlc291cmNlIGRlc2NyaXB0aW9uIChtaW4gMTAgY2hhcnMpPC9wPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJERVBMT1kgdy0xMDBcIj48ZGl2IGNsYXNzPVwiYm9yZGVyLXRvcCBib3JkZXItYm90dG9tIG0tM1wiPjxkaXYgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCIgY2xhc3M9XCJwLTEgcm93IG14LTFcIiBuZy1jbGljaz1cImlzQ29sbGFwc2VkVmVySGlzdG9yeSA9ICFpc0NvbGxhcHNlZFZlckhpc3RvcnlcIj48c3BhbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gcC0xXCI+PHNwYW4gbmctY2xhc3M9XCJ7XFwnZmFzIGZhLWNoZXZyb24tZG93blxcJzogIWlzQ29sbGFwc2VkVmVySGlzdG9yeSxcXCdmYXMgZmEtY2hldnJvbi1yaWdodFxcJzogaXNDb2xsYXBzZWRWZXJIaXN0b3J5IH1cIj48L3NwYW4+PC9zcGFuPiA8c3BhbiBjbGFzcz10YWc+VkVSU0lPTiBISVNUT1JZPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJtb2RhbEFjdGlvbj09XFwndmVyc2lvblxcJ1wiIGNsYXNzPVwiaDUgdGV4dC1jZW50ZXJcIj5WZXJzaW9uIHt7cmVzb3VyY2UuVmVyc2lvbn19IHdpbGwgYmUgZmluYWxpc2VkIGFuZCBsb2NrZWQgZm9yIGNoYW5nZXMhPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm0tMiB0ZXh0LWNlbnRlciBjb2wtMjRcIj48YnV0dG9uIG5nLWlmPVwibW9kYWxBY3Rpb249PVxcJ3NhdmVcXCdcIiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBidG4tbGdcIiB0eXBlPXN1Ym1pdD48c3BhbiBuZy1pZj1zYXZpbmdBcHA+PGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lciBmYS1zcGluIG1yLTFcIj48L2k+PC9zcGFuPiA8c3BhbiBuZy1pZj1zYXZpbmdBcHA+U2F2aW5nLi4uPC9zcGFuPiA8c3BhbiBuZy1pZj0hc2F2aW5nQXBwPjxpIGNsYXNzPVwiZmEgZmEtbmV3c3BhcGVyLW8gbXItMVwiPjwvaT48L3NwYW4+IDxzcGFuIG5nLWlmPSFzYXZpbmdBcHA+U2F2ZSBhcHBsaWNhdGlvbjwvc3Bhbj48L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1pZj1cIm1vZGFsQWN0aW9uPT1cXCd2ZXJzaW9uXFwnICYmIHJlc291cmNlLlZlcnNpb249PXJlc291cmNlLk5ld1ZlcnNpb25cIiBuZy1jbGljaz1uZXdWZXJzaW9uKCkgbmctZGlzYWJsZWQ9Y3JlYXRpbmdOZXdWZXJzaW9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taW5mbyBtci0yXCI+PHNwYW4gbmctaWY9IWNyZWF0aW5nTmV3VmVyc2lvbj48aSBjbGFzcz1cImZhIGZhLWNvZGUtYnJhbmNoIG1yLTFcIj48L2k+PC9zcGFuPiA8c3BhbiBuZy1pZj1jcmVhdGluZ05ld1ZlcnNpb24+PGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lciBmYS1zcGluIG1yLTFcIj48L2k+PC9zcGFuPiA8c3BhbiBuZy1pZj1jcmVhdGluZ05ld1ZlcnNpb24+RmluYWxpc2luZyB2ZXJzaW9uIHt7cmVzb3VyY2UuVmVyc2lvbn19Li4uPC9zcGFuPiA8c3BhbiBuZy1pZj0hY3JlYXRpbmdOZXdWZXJzaW9uPkZpbmFsaXNlIHZlcnNpb24ge3tyZXNvdXJjZS5WZXJzaW9ufX08L3NwYW4+PC9idXR0b24+PGRpdiBjbGFzcz1cImg2IHRleHQtY2VudGVyIHRleHQtc3VjY2Vzc1wiIG5nLWlmPVwicmVzb3VyY2UuVmVyc2lvbiE9cmVzb3VyY2UuTmV3VmVyc2lvbiAmJiBtb2RhbEFjdGlvbj09XFwndmVyc2lvblxcJ1wiPjxpIGNsYXNzPVwiZmEgZmEtY2hlY2stY2lyY2xlIG1yLTJcIj48L2k+VmVyc2lvbiB7e3Jlc291cmNlLk5ld1ZlcnNpb259fS4gY3JlYXRlZCBzdWNjZXNzZnVseSE8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Zvcm0+PC9kaXY+PGZvcm0gbmctc3VibWl0PXB1Ymxpc2hQdWJsaWNSZXNvdXJjZShtb2RhbC5yZXNvdXJjZSkgbmFtZT1wdWJsaXNoMm1hcmtldCBjbGFzcz1cIm1vZGFsIGZhZGUgYmQtZXhhbXBsZS1tb2RhbC1sZ1wiIGlkPXB1Ymxpc2gybWFya2V0IHRhYmluZGV4PS0xIHJvbGU9ZGlhbG9nIGFyaWEtbGFiZWxsZWRieT1wdWJsaXNoMm1hcmtldCBhcmlhLWhpZGRlbj10cnVlPjxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwteGxcIiByb2xlPWRvY3VtZW50PjxkaXYgY2xhc3M9bW9kYWwtY29udGVudD48ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHctMTAwXCI+PGRpdiBjbGFzcz1cInctMTAwIG0tMlwiPjxkaXYgY2xhc3M9dGV4dC1jZW50ZXI+PHNwYW4gY2xhc3M9XCJmYXMgZm50MTQgZmEtc3RvcmUgdGV4dC1wcmltYXJ5IG0tMlwiPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbS0yXCI+PGg1IGNsYXNzPW1vZGFsLXRpdGxlIGlkPWV4YW1wbGVNb2RhbExvbmdUaXRsZT5QdWJsaXNoIGFwcGxpY2F0aW9uIDxiPnt7cmVzb3VyY2UuTmFtZX19PC9iPiB0byBNYXJrZXRwbGFjZSA/PC9oNT48L2Rpdj48L2Rpdj48ZGl2PjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9Y2xvc2UgZGF0YS1kaXNtaXNzPW1vZGFsIGFyaWEtbGFiZWw9Q2xvc2U+PHNwYW4gYXJpYS1oaWRkZW49dHJ1ZT4mdGltZXM7PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wIG1vZGFsLWJvZHlcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTggcC0wXCI+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiBmb3JtTW9kYWwuSWQuJHRvdWNoZWQgJiYgZm9ybU1vZGFsLklkLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTI0IGZvcj1JZD5JZDwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1tb2RhbC5yZXNvdXJjZS5pZCBuZy1kaXNhYmxlZD10cnVlIG5nLXJlcXVpcmVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPUlkIG5hbWU9SWQgcGxhY2Vob2xkZXI9SWQ+PHAgbmctc2hvdz1cImZvcm1Nb2RhbC5JZC4kdG91Y2hlZCAmJiBmb3JtTW9kYWwuSWQuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIHJlc291cmNlIElkPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogZm9ybU1vZGFsLlZlcnNpb24uJHRvdWNoZWQgJiYgZm9ybU1vZGFsLlZlcnNpb24uJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtbGctMjQgZm9yPVZlcnNpb24+VmVyc2lvbjwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PGlucHV0IHR5cGU9dGV4dCBuZy1kaXNhYmxlZD10cnVlIG5nLW1vZGVsPW1vZGFsLnJlc291cmNlLlZlcnNpb24gbmctcmVxdWlyZWQ9dHJ1ZSBjbGFzcz1mb3JtLWNvbnRyb2wgaWQ9VmVyc2lvbiBuYW1lPVZlcnNpb24gcGxhY2Vob2xkZXI9XCJSZXNvdXJjZSBWZXJzaW9uXCI+PHAgbmctc2hvdz1cIihmb3JtTW9kYWwuVmVyc2lvbi4kdG91Y2hlZCkgJiYgZm9ybU1vZGFsLlZlcnNpb24uJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIHJlc291cmNlIFZlcnNpb248L3A+PC9kaXY+PC9kaXY+PGRpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTE2IHAtMFwiPjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiBmb3JtTW9kYWwuRGVzY3JpcHRpb24uJHRvdWNoZWQgJiYgZm9ybU1vZGFsLkRlc2NyaXB0aW9uLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTI0IGZvcj1EZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PHRleHRhcmVhIG5nLW1vZGVsPW1vZGFsLnJlc291cmNlLkRlc2NyaXB0aW9uIG5hbWU9RGVzY3JpcHRpb24gbmctcmVxdWlyZWQ9dHJ1ZSBuZy1taW4tbGVuZ3RoPTEwIG5nLWNsYXNzPVwieyBcXCdib3JkZXItZGFuZ2VyXFwnIDogZm9ybU1vZGFsLkRlc2NyaXB0aW9uLiR0b3VjaGVkICYmIGZvcm1Nb2RhbC5EZXNjcmlwdGlvbi4kaW52YWxpZCB9XCIgY2xhc3M9Zm9ybS1jb250cm9sPjwvdGV4dGFyZWE+PHAgbmctc2hvdz1cIiggZm9ybU1vZGFsLkRlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtTW9kYWwuRGVzY3JpcHRpb24uJGludmFsaWRcIiBjbGFzcz1cInNtYWxsIHRleHQtZGFuZ2VyXCI+RW50ZXIgcmVzb3VyY2UgZGVzY3JpcHRpb24gKG1pbiAxMCBjaGFycyk8L3A+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm0tMiB0ZXh0LWNlbnRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBjb2wtMjRcIj48ZGl2IGNsYXNzPW14LTI+PGJ1dHRvbiBuZy1jbGljaz1cImhpZGVNb2RhbChcXCcjcHVibGlzaDJtYXJrZXRcXCcpXCIgbmctaWY9XCJtb2RhbEFjdGlvbj09XFwncHVibGlzaDJtYXJrZXRcXCdcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeS1vdXRsaW5lXCIgdHlwZT1idXR0b24+PHNwYW4+TWF5YmUgbGF0ZXI8L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1teC0yPjxidXR0b24gbmctaWY9XCJtb2RhbEFjdGlvbj09XFwncHVibGlzaDJtYXJrZXRcXCdcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIHR5cGU9c3VibWl0PjxzcGFuIG5nLWlmPXNhdmluZ0FwcD48aSBjbGFzcz1cImZhcyBmYS1zcGlubmVyIGZhLXNwaW4gbXItMVwiPjwvaT48L3NwYW4+IDxzcGFuIG5nLWlmPXNhdmluZ0FwcD5QdWJsaXNoaW5nLi4uPC9zcGFuPiA8c3BhbiBuZy1pZj0hc2F2aW5nQXBwPjxpIGNsYXNzPVwiZmEgZmEtbmV3c3BhcGVyLW8gbXItMVwiPjwvaT48L3NwYW4+IDxzcGFuIG5nLWlmPSFzYXZpbmdBcHA+WWVzPC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9ybT48Zm9ybSBuZy1zdWJtaXQ9XCJhbGVydChcXCdtYW5pZmVzdFxcJylcIiBuYW1lPW1hbmlmZXN0IGNsYXNzPVwibW9kYWwgZmFkZSBiZC1leGFtcGxlLW1vZGFsLWxnXCIgaWQ9bWFuaWZlc3QgdGFiaW5kZXg9LTEgcm9sZT1kaWFsb2cgYXJpYS1sYWJlbGxlZGJ5PW1hbmlmZXN0IGFyaWEtaGlkZGVuPXRydWU+PGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC14bFwiIHJvbGU9ZG9jdW1lbnQ+PGRpdiBjbGFzcz1tb2RhbC1jb250ZW50PjxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgdy0xMDBcIj48ZGl2IGNsYXNzPXctMTAwPjxkaXYgbmctaWY9XCJtb2RhbEFjdGlvbj09XFwncHVibGlzaDJtYXJrZXRcXCdcIiBjbGFzcz10ZXh0LWNlbnRlcj48c3BhbiBjbGFzcz1cImZhcyBmbnQxNCBmYS1zdG9yZSB0ZXh0LXByaW1hcnkgbS0yXCI+PC9zcGFuPjwvZGl2PjxkaXYgbmctaWY9XCJtb2RhbEFjdGlvbj09XFwncHVibGlzaDJtYXJrZXRcXCdcIiBjbGFzcz1cInRleHQtY2VudGVyIG0tMlwiPjxoNSBjbGFzcz1tb2RhbC10aXRsZT5QdWJsaXNoIGFwcGxpY2F0aW9uIDxiPnt7cmVzb3VyY2UuTmFtZX19PC9iPiB0byBNYXJrZXRwbGFjZSA/PC9oNT48L2Rpdj48ZGl2IG5nLWlmPVwibW9kYWxBY3Rpb24hPVxcJ3B1Ymxpc2gybWFya2V0XFwnXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtLTJcIj48aDUgY2xhc3M9bW9kYWwtdGl0bGU+UHVibGlzaCBhcHBsaWNhdGlvbiA8Yj57e3Jlc291cmNlLk5hbWV9fTwvYj48L2g1PjwvZGl2PjxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtLTJcIj48ZGl2IG5nLWlmPVwibW9kYWxBY3Rpb24hPVxcJ3B1Ymxpc2gybWFya2V0XFwnXCIgY2xhc3M9XCJtb2RhbC10aXRsZSBmbnQ5XCIgaWQ9bWFuaWZlc3RNb2RhbExvbmdUaXRsZT4oIHZlcnNpb24ge3tyZXNvdXJjZS5WZXJzaW9uIH19ICk8L2Rpdj48ZGl2IG5nLWlmPVwibW9kYWxBY3Rpb249PVxcJ3B1Ymxpc2gybWFya2V0XFwnXCIgY2xhc3M9XCJtb2RhbC10aXRsZSBmbnQ5XCIgaWQ9bWFuaWZlc3RNb2RhbExvbmdUaXRsZT4oIHZlcnNpb24ge3ttb2RhbC5yZXNvdXJjZS5WZXJzaW9uIH19ICk8L2Rpdj48L2Rpdj48L2Rpdj48ZGl2PjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9Y2xvc2UgZGF0YS1kaXNtaXNzPW1vZGFsIGFyaWEtbGFiZWw9Q2xvc2U+PHNwYW4gYXJpYS1oaWRkZW49dHJ1ZT4mdGltZXM7PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wIHAtMCBtb2RhbC1ib2R5XCI+PGRpdiBtYW5pZmVzdCBjbGFzcz1jb2wtMjQ+PGRpdiBuZy1pZj0hYXBwTWFuaWZlc3QubGVuZ3RoIGNsYXNzPVwidGV4dC1jZW50ZXIgbXktNCBweS00XCI+PGRpdiBuZy1zd2l0Y2ggb249YnVpbGRpbmdBcHA+PGRpdiBuZy1zd2l0Y2gtd2hlbj10cnVlIHN0eWxlIGNsYXNzPVwiaDUgdGV4dC1wcmltYXJ5IGJnLXdoaXRlIHctMTAwXCI+PHNwYW4+PGkgY2xhc3M9XCJmYSBmYS1zcGlubmVyIGZhLXNwaW4gbXItMlwiPjwvaT48L3NwYW4+IDxzcGFuPkJ1aWxkaW5nIG1hbmlmZXN0Li4uPC9zcGFuPjwvZGl2PjxkaXYgbmctc3dpdGNoLWRlZmF1bHQ+PGRpdiBjbGFzcz1oNT5UaGVyZSBpcyBubyBhdmFpbGFibGUgdmVyc2lvbiB0byBwdWJsaXNoITwvZGl2PjxkaXYgY2xhc3M+KCBTYXZlIGFwcGxpY2F0aW9uIGZpcnN0IGFuZCB0aGFuIHRyeSBhZ2FpbiApPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cImFwcE1hbmlmZXN0Lmxlbmd0aCAmJiAhYnVpbGRpbmdBcHBcIiBcIiBjbGFzcz1cInRleHQtY2VudGVyIG0tMlwiPjxoNSBjbGFzcz1tb2RhbC10aXRsZSBpZD1leGFtcGxlTW9kYWxMb25nVGl0bGU+QXBwbGljYXRpb24gbWFuaWZlc3Q8L2g1PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbXgtMCBteS0zXCIgbmctc2hvdz1cImFwcE1hbmlmZXN0Lmxlbmd0aCAmJiAhYnVpbGRpbmdBcHBcIj48ZGl2IGNsYXNzPVwiZm50MTAgbXgtYXV0b1wiPjxzcGFuIGNsYXNzPVwicGItMSBib3JkZXItYm90dG9tXCI+PGEgaHJlZiB0aXRsZT1cIkxpc3Qgb2YgcmVzb3VyY2VzXCIgY2xhc3M9XCJteC0yIHRhYi1pdGVtLXNlbGVjdGVkXCIgbmctY2xhc3M9XCJ7XFwndGFiLWl0ZW0tc2VsZWN0ZWRcXCc6c2VsZWN0ZWRUYWI9PTEsXFwndGFiLWl0ZW1cXCc6c2VsZWN0ZWRUYWIhPTF9XCIgbmctY2xpY2s9XCJzZWxlY3RlZFRhYj0xXCI+UmVzb3VyY2VzPC9hPiA8YSBocmVmIHRpdGxlPVwiTGlzdCBvZiBjb2Rlc1wiIGNsYXNzPVwibXgtMiB0YWItaXRlbVwiIG5nLWNsYXNzPVwie1xcJ3RhYi1pdGVtLXNlbGVjdGVkXFwnOnNlbGVjdGVkVGFiPT0yLFxcJ3RhYi1pdGVtXFwnOnNlbGVjdGVkVGFiIT0yfVwiIG5nLWNsaWNrPVwic2VsZWN0ZWRUYWI9MlwiPkNvZGVzPC9hPiA8YSBocmVmIHRpdGxlPVwiTGlzdCBvZiBncm91cHNcIiBjbGFzcz1cIm14LTIgdGFiLWl0ZW1cIiBuZy1jbGFzcz1cIntcXCd0YWItaXRlbS1zZWxlY3RlZFxcJzpzZWxlY3RlZFRhYj09MyxcXCd0YWItaXRlbVxcJzpzZWxlY3RlZFRhYiE9M31cIiBuZy1jbGljaz1cInNlbGVjdGVkVGFiPTNcIj5Hcm91cHM8L2E+PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJtLWF1dG8gcC00XCIgbmctaWY9XCJhcHBNYW5pZmVzdC5sZW5ndGggJiYgc2VsZWN0ZWRUYWI9PTEgJiYgIWJ1aWxkaW5nQXBwXCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgYm9sZCBib3JkZXItYm90dG9tXCIgc3R5bGU9XCJjb2xvcjp3aGl0ZTtiYWNrZ3JvdW5kLWNvbG9yOiAjNTU1NTU1O1wiPjxkaXYgY2xhc3M9Y29sLTI+aWQ8L2Rpdj48ZGl2IGNsYXNzPWNvbC0zPlJlc291cmNlIHR5cGU8L2Rpdj48ZGl2IGNsYXNzPWNvbC0zPlBhcmVudDwvZGl2PjxkaXYgY2xhc3M9Y29sPk5hbWU8L2Rpdj48ZGl2IGNsYXNzPWNvbC0yPlZlcnNpb248L2Rpdj48ZGl2IGNsYXNzPWNvbC1hdXRvPlB1Ymxpc2hlZDwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9b3ZlcmZsb3cteTphdXRvO21heC1oZWlnaHQ6MzByZW0+PGRpdiBuZy1yZXBlYXQ9XCJyZXNvdXJjZSBpbiBhcHBNYW5pZmVzdFwiIG5nLWlmPVwicmVzb3VyY2UuaXRlbVR5cGU9PVxcJ3Jlc291cmNlXFwnXCIgY2xhc3M9XCJyb3cgbS0wIG15LTFcIj48ZGl2IGNsYXNzPWNvbC0yPnt7cmVzb3VyY2UuaWR9fTwvZGl2PjxkaXYgY2xhc3M9Y29sLTM+e3tyZXNvdXJjZS5pdGVtU3ViVHlwZX19PC9kaXY+PGRpdiBjbGFzcz1jb2wtMz57e3Jlc291cmNlLnBhcmVudFR5cGV9fTwvZGl2PjxkaXYgY2xhc3M9Y29sPnt7cmVzb3VyY2UuaXRlbU5hbWV9fTwvZGl2PjxkaXYgY2xhc3M9Y29sLTI+e3tyZXNvdXJjZS52ZXJzaW9ufX08L2Rpdj48ZGl2IGNsYXNzPWNvbC1hdXRvPjxpbnB1dCBkaXNhYmxlZCB0eXBlPWNoZWNrYm94IG5nLW1vZGVsPXJlc291cmNlLnB1Ymxpc2hlZD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwibS1hdXRvIHctNzUgcHktM1wiIG5nLWlmPVwiYXBwTWFuaWZlc3QubGVuZ3RoICYmIHNlbGVjdGVkVGFiPT0yICYmICFidWlsZGluZ0FwcFwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wIGJvbGQgYm9yZGVyLWJvdHRvbVwiIHN0eWxlPVwiY29sb3I6d2hpdGU7YmFja2dyb3VuZC1jb2xvcjogIzU1NTU1NTtcIj48ZGl2IGNsYXNzPWNvbC05PmlkPC9kaXY+PGRpdiBjbGFzcz1jb2w+bmFtZTwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9b3ZlcmZsb3cteTphdXRvO21heC1oZWlnaHQ6MzByZW0+PGRpdiBuZy1yZXBlYXQ9XCJyZXNvdXJjZSBpbiBhcHBNYW5pZmVzdFwiIG5nLWlmPVwicmVzb3VyY2UuaXRlbVR5cGU9PVxcJ2NvZGVcXCdcIiBjbGFzcz1cInJvdyBtLTAgbXktMVwiPjxkaXYgY2xhc3M9Y29sLTk+e3tyZXNvdXJjZS5pZH19PC9kaXY+PGRpdiBjbGFzcz1jb2w+e3tyZXNvdXJjZS5pdGVtTmFtZX19PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm0tYXV0byB3LTc1IHB5LTNcIiBuZy1pZj1cImFwcE1hbmlmZXN0Lmxlbmd0aCAmJiBzZWxlY3RlZFRhYj09MyAmJiAhYnVpbGRpbmdBcHBcIj48ZGl2IGNsYXNzPVwicm93IG0tMCBib2xkIGJvcmRlci1ib3R0b21cIiBzdHlsZT1cImNvbG9yOndoaXRlO2JhY2tncm91bmQtY29sb3I6ICM1NTU1NTU7XCI+PGRpdiBjbGFzcz1jb2wtOT5pZDwvZGl2PjxkaXYgY2xhc3M9Y29sPm5hbWU8L2Rpdj48L2Rpdj48ZGl2IHN0eWxlPW92ZXJmbG93LXk6YXV0bzttYXgtaGVpZ2h0OjMwcmVtPjxkaXYgbmctcmVwZWF0PVwicmVzb3VyY2UgaW4gYXBwTWFuaWZlc3RcIiBuZy1pZj1cInJlc291cmNlLml0ZW1UeXBlPT1cXCdncm91cFxcJ1wiIGNsYXNzPVwicm93IG0tMCBteS0xXCI+PGRpdiBjbGFzcz1jb2wtOT57e3Jlc291cmNlLmlkfX08L2Rpdj48ZGl2IGNsYXNzPWNvbD57e3Jlc291cmNlLml0ZW1OYW1lfX08L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgbXktNFwiPjxkaXYgY2xhc3M9XCJjb2wtMjQgbS0xIHRleHQtY2VudGVyXCIgbmctaWY9XCIhcmVhZHlUb1B1Ymxpc2ggJiYgIWJ1aWxkaW5nQXBwXCI+PHNwYW4gY2xhc3M9dGV4dC1kYW5nZXI+Q2F1dGlvbiEgQXBwbGljYXRpb24gbWF5IG5vdCB3b3JrIGJlZm9yZSBhbGwgcmVzb3VyY2VzIGZyb20gbWFuaWZlc3QgYXJlIHB1Ymxpc2hlZCE8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0yNCBtLTEgdGV4dC1jZW50ZXJcIiBuZy1pZj0hYnVpbGRpbmdBcHA+PHNwYW4gY2xhc3M9dGV4dC1wcmltYXJ5PlBsZWFzZSBwdWJsaXNoIGFsbCByZXNvdXJjZXMhPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMiBtLTFcIiBuZy1pZj1cImFwcE1hbmlmZXN0Lmxlbmd0aCAmJiAhYnVpbGRpbmdBcHBcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhbmdlclwiIG5nLWNsaWNrPVwiaGlkZU1vZGFsKFxcJyNtYW5pZmVzdFxcJylcIj48c3Bhbj5DYW5jZWw8L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIG0tMSBmbnQxMSB0ZXh0LWNlbnRlclwiIG5nLWlmPVwiYXBwTWFuaWZlc3QubGVuZ3RoICYmICFidWlsZGluZ0FwcFwiPjxidXR0b24gbmctaWY9XCJtb2RhbEFjdGlvbiE9XFwncHVibGlzaDJtYXJrZXRcXCdcIiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIG5nLWNsaWNrPVB1Ymxpc2gyUHJvZCgpPjxzcGFuIG5nLWlmPXB1Ymxpc2hpbmdBcHA+PGkgY2xhc3M9XCJmYSBmYS1zcGlubmVyIGZhLXNwaW4gbXItMVwiPjwvaT48L3NwYW4+IDxzcGFuIG5nLWlmPXB1Ymxpc2hpbmdBcHA+UHVibGlzaGluZy4uLjwvc3Bhbj4gPHNwYW4gbmctaWY9IXB1Ymxpc2hpbmdBcHA+UHVibGlzaDwvc3Bhbj48L2J1dHRvbj4gPGJ1dHRvbiBuZy1pZj1cIm1vZGFsQWN0aW9uPT1cXCdwdWJsaXNoMm1hcmtldFxcJ1wiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgdHlwZT1idXR0b24gbmctY2xpY2s9cHVibGlzaFB1YmxpY1Jlc291cmNlKG1vZGFsLnJlc291cmNlKT48c3BhbiBuZy1pZj1zYXZpbmdBcHA+PGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lciBmYS1zcGluIG1yLTFcIj48L2k+PC9zcGFuPiA8c3BhbiBuZy1pZj1zYXZpbmdBcHA+UHVibGlzaGluZy4uLjwvc3Bhbj4gPHNwYW4gbmctaWY9IXNhdmluZ0FwcD5QdWJsaXNoPC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJtLTIgdGV4dC1jZW50ZXIgY29sLTI0XCI+PGRpdiBjbGFzcz1cImg2IHRleHQtY2VudGVyIHRleHQtc3VjY2Vzc1wiIG5nLWlmPVwicmVzb3VyY2UuVmVyc2lvbiE9cmVzb3VyY2UuTmV3VmVyc2lvbiAmJiBtb2RhbEFjdGlvbj09XFwndmVyc2lvblxcJ1wiPjxpIGNsYXNzPVwiZmEgZmEtY2hlY2stY2lyY2xlIG1yLTJcIj48L2k+IFZlcnNpb24ge3tyZXNvdXJjZS5OZXdWZXJzaW9ufX0uIGNyZWF0ZWQgc3VjY2Vzc2Z1bHkhPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JtPjwvZGl2PjxzdHlsZT5cXHJcXG5cXHJcXG5cXHJcXG4gZGl2ID4gLnNob3dPbkhvdmVyIHtcXHJcXG4gICAgICAgIHZpc2liaWxpdHk6aGlkZGVuXFxyXFxuICAgIH0gICBcXHJcXG4gXFxyXFxuIGRpdjpob3ZlciA+IC5zaG93T25Ib3ZlciB7XFxyXFxuICAgICAgICB2aXNpYmlsaXR5OnZpc2libGVcXHJcXG4gICAgfSAgIFxcclxcbiBcXHJcXG4uaW5zZXJ0LWJ1dHRvblxcclxcbntcXHJcXG4gICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcXHJcXG4gICAgIG1heC13aWR0aDogNTAlO1xcclxcbn1cXHJcXG4uZGVsZXRlLWJ1dHRvblxcclxcbntcXHJcXG4gICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcXHJcXG4gICAgIG1heC13aWR0aDogNTAlO1xcclxcbiAgICBwb3NpdGlvbjphYnNvbHV0ZTtcXHJcXG4gICAgdG9wOjBweDtcXHJcXG4gICAgcmlnaHQ6MHB4XFxyXFxufVxcclxcbi50YWItaXRlbVxcclxcbntcXHJcXG4gY29sb3I6IzJDNjBFNTtcXHJcXG4gcGFkZGluZzogMC4yNXJlbSAhaW1wb3J0YW50O1xcclxcbiB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxyXFxufVxcclxcbi50YWItaXRlbTpob3ZlciwudGFiLWl0ZW06Zm9jdXNcXHJcXG57XFxyXFxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMkM2MEU1O1xcclxcbiAgY29sb3I6I2ZmZmZmZjsgIFxcclxcbn1cXHJcXG4udGFiLWl0ZW0tc2VsZWN0ZWQ6aG92ZXIsLnRhYi1pdGVtLXNlbGVjdGVkOmZvY3VzXFxyXFxue1xcclxcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBcXHJcXG59XFxyXFxuLnRhYi1pdGVtLXNlbGVjdGVkXFxyXFxue1xcclxcbiAgICAgY29sb3I6IzJDNjBFNTtcXHJcXG4gICAgIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDtcXHJcXG4gICAgIGJvcmRlci1ib3R0b206MnB4IHNvbGlkICMyQzYwRTU7XFxyXFxuICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxyXFxufVxcclxcbjwvc3R5bGU+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAzX3Jlc291cmNlcy9hbmd1bGFyVGVtcGxhdGVzL2FwcE1lbnVEZWZpbml0aW9uLmh0bWwnLCc8ZGl2IGlkPUFwcE1lbnVEZWZpbml0aW9uPjxkaXYgY2xhc3M9XCJjYXJkIG0tMSBtdC0xIHAtMVwiPjxkaXYgY2xhc3M9XCJoNCBweS0yIHRleHQtY2VudGVyIG15LWF1dG9cIj48ZGl2IGNsYXNzIHN0eWxlPWZsb2F0OmxlZnQ7PjxhIGNsYXNzPVwibWwtMiBoNiB0ZXh0LXByaW1hcnlcIiBocmVmIHRpdGxlPVwiUmV0dXJuIHRvIHByZXZpb3VzIHBhZ2VcIiBuZy1jbGljaz1yZXR1cm5Ub1ByZXZpb3VzUGFnZSgpPjxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tbGVmdCBtci0yXCI+PC9pPlJldHVybiB0byBwcmV2aW91cyBwYWdlPC9hPjwvZGl2PjxzcGFuIGNsYXNzPWJvbGQ+e3tyZXNvdXJjZS5SZXNvdXJjZU5hbWV9fTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJteC0xIGJvbGQgdGV4dC1wcmltYXJ5XCI+e3tyZXNvdXJjZS5OYW1lfX08L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQgbXQtMVwiPjxkaXYga3QtcmVzb3VyY2UtZGVmaW5pdGlvbiByZXNvdXJjZT1yZXNvdXJjZT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY2FyZCBtdC0xXCI+PGRpdiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIiBjbGFzcz1cInAtMSByb3cgbXgtMVwiIG5nLWNsaWNrPVwiaXNDb2xsYXBzZWRBZHZhbmNlZCA9ICFpc0NvbGxhcHNlZEFkdmFuY2VkXCI+PHNwYW4gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIHAtMVwiPjxzcGFuIG5nLWNsYXNzPVwie1xcJ2ZhcyBmYS1jaGV2cm9uLXVwXFwnOiBpc0NvbGxhcHNlZEFkdmFuY2VkLFxcJ2ZhcyBmYS1jaGV2cm9uLWRvd25cXCc6ICFpc0NvbGxhcHNlZEFkdmFuY2VkIH1cIj48L3NwYW4+PC9zcGFuPiA8c3BhbiBjbGFzcz10YWc+QURWQU5DRUQge3tyZXNvdXJjZS5SZXNvdXJjZU5hbWV9fSBQUk9QRVJUSUVTPC9zcGFuPjwvZGl2PjxkaXYgdWliLWNvbGxhcHNlPSFpc0NvbGxhcHNlZEFkdmFuY2VkPjxmb3JtIG5nLXN1Ym1pdD1zYXZlUmVzb3VyY2VEZWYoZm9ybTEpIG5hbWU9Zm9ybTEgY2xhc3M9Zm9ybS1ob3Jpem9udGFsIGlkPXBhZ2Vmb3JtIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYgY2xhc3M9XCJyb3cgbS0yXCI+PGRpdiBjbGFzcz1cImg1IHAtMSBib3JkZXItYm90dG9tIHRleHQtY2VudGVyIGNvbC0yNFwiPk1lbnUgc3R5bGU8L2Rpdj48ZGl2IGNsYXNzPVwibXQtMiBjb2wtMjRcIj48bGFiZWwgY2xhc3M9dGV4dC1tdXRlZD5CYWNrZ3JvdW5kIGNvbG9yPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPVwibXktMiBjb2wtMjRcIj48aW5wdXQgdHlwZT1jb2xvciBuZy1tb2RlbD1yZXNvdXJjZS5QYXJhbWV0ZXJzLmN1c3RvbUJnQ29sb3IgY2xhc3M+IDxsYWJlbCBjbGFzcz1cInRleHQtbXV0ZWQgbXgtMlwiPnt7cmVzb3VyY2UuUGFyYW1ldGVycy5jdXN0b21CZ0NvbG9yfX08L2xhYmVsPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0yXCI+PGRpdiBjbGFzcz1jb2wtbGctOD48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtMS4kc3VibWl0dGVkIHx8IGZvcm0xLmN1c3RvbUNzcy4kdG91Y2hlZCkgJiYgZm9ybTEuY3VzdG9tQ3NzLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M+TWVudSBpdGVtIHN0eWxlPC9sYWJlbD48ZGl2IGNsYXNzPjx0ZXh0YXJlYSBuZy1tb2RlbD1yZXNvdXJjZS5QYXJhbWV0ZXJzLmN1c3RvbUNzcyBuZy1yZXF1aXJlZD1mYWxzZSBjbGFzcz1mb3JtLWNvbnRyb2wgcGxhY2Vob2xkZXI9XCJDdXN0b20gY3NzXCI+XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBuZy1zaG93PVwiKGZvcm0xLiRzdWJtaXR0ZWQgfHwgZm9ybTEuY3VzdG9tQ3NzLiR0b3VjaGVkKSAmJiBmb3JtMS5jdXN0b21Dc3MuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIGNzcyA8L3A+XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGV4dGFyZWE+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb2wtbGctOD48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtMS4kc3VibWl0dGVkIHx8IGZvcm0xLmN1c3RvbUNzc0hvdmVyLiR0b3VjaGVkKSAmJiBmb3JtMS5jdXN0b21Dc3NIb3Zlci4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzIGZvcj1Mb2FkUGFnZVRleHQ+TWVudSBpdGVtIGhvdmVyPC9sYWJlbD48ZGl2IGNsYXNzPjx0ZXh0YXJlYSBuZy1tb2RlbD1yZXNvdXJjZS5QYXJhbWV0ZXJzLmN1c3RvbUNzc0hvdmVyIG5nLXJlcXVpcmVkPWZhbHNlIGNsYXNzPWZvcm0tY29udHJvbCBwbGFjZWhvbGRlcj1cIkhvdmVyIHN0eWxlXCI+XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBuZy1zaG93PVwiKGZvcm0xLiRzdWJtaXR0ZWQgfHwgZm9ybTEuY3VzdG9tQ3NzSG92ZXIuJHRvdWNoZWQpICYmIGZvcm0xLmN1c3RvbUNzc0hvdmVyLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5FbnRlciBob3ZlciBzdHlsZTwvcD5cXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZXh0YXJlYT48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy04PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0xLiRzdWJtaXR0ZWQgfHwgZm9ybTEuY3VzdG9tQ3NzQWN0aXZlLiR0b3VjaGVkKSAmJiBmb3JtMS5jdXN0b21Dc3NBY3RpdmUuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcyBmb3I9TG9hZFBhZ2VUZXh0Pk1lbnUgaXRlbSBhY3RpdmU8L2xhYmVsPjxkaXYgY2xhc3M+PHRleHRhcmVhIG5nLW1vZGVsPXJlc291cmNlLlBhcmFtZXRlcnMuY3VzdG9tQ3NzQWN0aXZlIG5nLXJlcXVpcmVkPWZhbHNlIGNsYXNzPWZvcm0tY29udHJvbCBwbGFjZWhvbGRlcj1cIkFjdGl2ZSBzdHlsZVwiPlxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgbmctc2hvdz1cIihmb3JtMS4kc3VibWl0dGVkIHx8IGZvcm0xLmN1c3RvbUNzc0FjdGl2ZS4kdG91Y2hlZCkgJiYgZm9ybTEuY3VzdG9tQ3NzQWN0aXZlLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5FbnRlciBhY3RpdmUgc3R5bGUgPC9wPlxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RleHRhcmVhPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJteS0yIG14LTNcIj48YnV0dG9uIHR5cGU9c3VibWl0IG5nLWRpc2FibGVkPWZvcm0xLiRpbnZhbGlkIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIGJ0bi1zbVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtc2F2ZSBtci0yXCI+PC9zcGFuPlNhdmUgc3R5bGU8L2J1dHRvbj48L2Rpdj48L2Zvcm0+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQgbS0xXCIgc3R5bGU+PGRpdiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIiBjbGFzcz1cInAtMSByb3cgbXgtMVwiIG5nLWNsaWNrPVwiaXNDb2xsYXBzZWRQdWJsaXNoID0gIWlzQ29sbGFwc2VkUHVibGlzaFwiPjxzcGFuIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBwLTFcIj48c3BhbiBuZy1jbGFzcz1cIntcXCdmYXMgZmEtY2hldnJvbi1kb3duXFwnOiBpc0NvbGxhcHNlZFB1Ymxpc2gsXFwnZmFzIGZhLWNoZXZyb24tcmlnaHRcXCc6ICFpc0NvbGxhcHNlZFB1Ymxpc2ggfVwiPjwvc3Bhbj48L3NwYW4+IDxzcGFuIGNsYXNzPXRhZz5QdWJsaXNoIHt7cmVzb3VyY2VEZWZpbml0aW9uLlJlc291cmNlTmFtZX19PC9zcGFuPjwvZGl2Pjxmb3JtIHVpYi1jb2xsYXBzZT0haXNDb2xsYXBzZWRQdWJsaXNoIG5nLXN1Ym1pdD1QdWJsaXNoMlByb2QoZm9ybVB1Ymxpc2guJHZhbGlkKSBpZD1wdWJsaXNoUmVzb3VyZUZvcm0gbmFtZT1mb3JtUHVibGlzaCBjbGFzcz1mb3JtLWhvcml6b250YWwgcm9sZT1mb3JtIG5vdmFsaWRhdGU+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHRleHQtY2VudGVyXCI+PGRpdiBuZy1pZj1wdWJsaXNoZWRSZXNvdXJjZS5QdWJsaXNoZWQgY2xhc3M9bWItND48c3BhbiBjbGFzcz1cIm1yLTIgaDRcIj5QdWJsaXNoZWQ8L3NwYW4+IDxzcGFuIGNsYXNzPVwiZmEgZmEtY2hlY2stY2lyY2xlIG1yLTIgdGV4dC1zdWNjZXNzIGg0XCI+PC9zcGFuPjxkaXY+PHNwYW4gbmctaWY9XCJwdWJsaXNoZWRSZXNvdXJjZS5QdWJsaXNoZWRWZXJzaW9uPjFcIj5WZXJzaW9uIHt7cHVibGlzaGVkUmVzb3VyY2UuUHVibGlzaGVkVmVyc2lvbn19IHB1Ymxpc2hlZCBieSB7e3B1Ymxpc2hlZFJlc291cmNlLkNoYW5nZWRCeX19IG9uIHt7cHVibGlzaGVkUmVzb3VyY2UuQ2hhbmdlZERhdGVUaW1lIHwgZGF0ZTpcImRkLk1NLnl5eXkgXFwnYXRcXCcgSEg6bW06c3NcIn19PC9zcGFuPiA8c3BhbiBuZy1pZj1cInB1Ymxpc2hlZFJlc291cmNlLlB1Ymxpc2hlZFZlcnNpb249PTFcIj5WZXJzaW9uIHt7cHVibGlzaGVkUmVzb3VyY2UuUHVibGlzaGVkVmVyc2lvbn19IHB1Ymxpc2hlZCBieSB7e3B1Ymxpc2hlZFJlc291cmNlLlB1Ymxpc2hlZEJ5fX0gb24ge3twdWJsaXNoZWRSZXNvdXJjZS5EYXRlVGltZSB8IGRhdGU6XCJkZC5NTS55eXl5IFxcJ2F0XFwnIEhIOm1tOnNzXCJ9fTwvc3Bhbj4gPHNwYW4gbmctaWY9XCJwdWJsaXNoZWRSZXNvdXJjZS5QdWJsaXNoZWRWZXJzaW9uPjFcIj4oVmVyc2lvbiAxIHB1Ymxpc2hlZCBieSB7e3B1Ymxpc2hlZFJlc291cmNlLlB1Ymxpc2hlZEJ5fX0gb24ge3twdWJsaXNoZWRSZXNvdXJjZS5EYXRlVGltZSB8IGRhdGU6XCJkZC5NTS55eXl5IFxcJ2F0XFwnIEhIOm1tOnNzXCJ9fSk8L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj0hcHVibGlzaGVkUmVzb3VyY2UuUHVibGlzaGVkIGNsYXNzPWg0PjxzcGFuIGNsYXNzPW1yLTI+Tm90IHB1Ymxpc2hlZDwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJmYSBmYS10aW1lcyB0ZXh0LWRhbmdlclwiPjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHRleHQtY2VudGVyXCIgbmctaWY9cHVibGlzaGVkUmVzb3VyY2UuUHVibGlzaGVkPjxkaXYgbmctaWY9XCJwdWJsaXNoZWRSZXNvdXJjZS5ybWQgJiYgcHVibGlzaGVkUmVzb3VyY2UuY291bnQ9PTBcIj48c3BhbiBjbGFzcz1cImJvcmRlci1ib3R0b20gaDVcIj5QdWJsaXNoZWQgZGVmaW5pdGlvbiAobm8gY2hhbmdlcyk8L3NwYW4+PGRpdiBjbGFzcz1teS0yIGt0LWJhc2ljLXRhYmxlIGNvbHVtbnM9ZGF0YXNldERlcGxveUNvbHMgZGF0YT1wdWJsaXNoZWRSZXNvdXJjZS5ybWQgbWFwcGluZz1kZXBsb3lBY3Rpb25NYXBwaW5ncz48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwicHVibGlzaGVkUmVzb3VyY2Uucm1kICYmIHB1Ymxpc2hlZFJlc291cmNlLmNvdW50PjBcIj48c3BhbiBjbGFzcz1cImJvcmRlci1ib3R0b20gaDVcIj5DaGFuZ2VzIGZvciBwdWJsaXNoaW5nPC9zcGFuPjxkaXYgY2xhc3M9bXktMiBrdC1iYXNpYy10YWJsZSBjb2x1bW5zPWRhdGFzZXREZXBsb3lDb2xzIGRhdGE9cHVibGlzaGVkUmVzb3VyY2Uucm1kIG1hcHBpbmc9ZGVwbG95QWN0aW9uTWFwcGluZ3M+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCB0ZXh0LWNlbnRlclwiPjxidXR0b24gdHlwZT1zdWJtaXQgaWQ9cHVibGlzaFJlc291cmNlQnRuIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc3VjY2VzcyBteS0yXCI+PHNwYW4gbmctaWY9IXB1Ymxpc2hpbmdEYXRhc2V0PjxpIGNsYXNzPVwiZmEgZmEtdXBsb2FkIG1yLTFcIj48L2k+PC9zcGFuPiA8c3BhbiBuZy1pZj1wdWJsaXNoaW5nRGF0YXNldD48aSBjbGFzcz1cImZhcyBmYS1zcGlubmVyIGZhLXNwaW4gbXItMVwiPjwvaT48L3NwYW4+IDxzcGFuIG5nLWlmPXB1Ymxpc2hpbmdEYXRhc2V0PlB1Ymxpc2hpbmcuLi48L3NwYW4+IDxzcGFuIG5nLWlmPSFwdWJsaXNoaW5nRGF0YXNldD5QdWJsaXNoPC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZm9ybT48L2Rpdj48ZGl2IGNsYXNzPVwiY2FyZCBtdC0xIHB5LTIgcHgtMlwiPjxkaXYgbmctaWY9XCJyZXNvdXJjZS5SZXNvdXJjZUNvZGU9PVxcJ3BhZ2VtZW51XFwnICYmIG1lbnVMb2FkZWRcIiBrdC1wYWdlLW1lbnUgY2xhc3M9cC0yIGxvY2FsLXZhcnM9bG9jYWxWYXJzIHJlc291cmNlPXJlc291cmNlIHBhZ2UtbWVudT1yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkLnBhZ2VNZW51PjwvZGl2PjxkaXYgbmctaWY9XCJyZXNvdXJjZS5SZXNvdXJjZUNvZGU9PVxcJ21lbnVcXCcgJiYgbWVudUxvYWRlZFwiIGt0LWFwcC1uYXZiYXIgY2xhc3M9cC0yIGxvY2FsLXZhcnM9bG9jYWxWYXJzIHJlc291cmNlPXJlc291cmNlIG5hdmJhci1pdGVtcy1sZWZ0PXJlc291cmNlLlJlc291cmNlRXh0ZW5kZWQubmF2YmFySXRlbXNMZWZ0IG5hdmJhci1pdGVtcy1yaWdodD1yZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkLm5hdmJhckl0ZW1zUmlnaHQ+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAzX3Jlc291cmNlcy9hbmd1bGFyVGVtcGxhdGVzL2RhdGFzZXRUcmFuc2Zvcm0uaHRtbCcsJzxmb3JtIGlkPWZvcm1hMSBuYW1lPWZvcm1hIGNsYXNzPWZvcm0taG9yaXpvbnRhbCByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2IGNsYXNzPWNhcmQ+PGRpdiBjbGFzcz1cInJvdyBtLTFcIj48ZGl2IGNsYXNzPVwiY29sLTEyIHBhZEwwXCI+PGg0IGNsYXNzPVwibS00IHRleHQtY2VudGVyXCI+RGF0YXNldCBtYXBwaW5nczwvaDQ+PGRpdiBpZD1tYXBwaW5nZ3JpZCB1aS1ncmlkPWdyaWRPcHRpb25zMSB1aS1ncmlkLXNlbGVjdGlvbiB1aS1ncmlkLXJlc2l6ZS1jb2x1bW5zIGNsYXNzPW15R3JpZD48L2Rpdj48ZGl2IG5nLWhpZGU9XCJzYXZlRGF0YXNldE1hcHBpbmdIZWFkU3RhdHVzIT1cXCdDYW5jZWxPckluaXRcXCdcIiBjbGFzcz1wLTE+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1kaXNhYmxlZD1cInNhdmVEYXRhc2V0TWFwcGluZ0hlYWRTdGF0dXMhPVxcJ0NhbmNlbE9ySW5pdFxcJ1wiIG5nLWNsaWNrPXNob3dNYXBwaW5nRGF0YSgpIGNsYXNzPVwiYnRuIGJ0bi1saWdodFwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtcGx1c1wiPjwvc3Bhbj4gQ3JlYXRlIE5ldyBNYXBwaW5nPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gbmctZGlzYWJsZWQ9XCJzYXZlRGF0YXNldE1hcHBpbmdIZWFkU3RhdHVzIT1cXCdDYW5jZWxPckluaXRcXCdcIiBuZy1zaG93PXJlc291cmNlU2VsZWN0ZWQgbmctY2xpY2s9c2hvd01hcHBpbmdEYXRhKHJlc291cmNlU2VsZWN0ZWQpIGNsYXNzPVwiYnRuIGJ0bi1saWdodFwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtcGx1c1wiPjwvc3Bhbj4gVXBkYXRlIHNlbGVjdGVkIE1hcHBpbmc8L2J1dHRvbj48L2Rpdj48ZGl2IG5hbWU9YWRkTmV3TWFwcGluZyBuZy1pZj1cInNhdmVEYXRhc2V0TWFwcGluZ0hlYWRTdGF0dXMhPVxcJ0NhbmNlbE9ySW5pdFxcJ1wiIGNsYXNzPXBsLTI+PGRpdj48Yj5NYXBwaW5nIE5hbWU6PC9iPiA8aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPW1hcHBpbmdGaWVsZHMubWFwcGluZ05hbWUgcGxhY2Vob2xkZXI9XCJFbnRlciBuYW1lLi4uXCIgY2xhc3M9Zm9ybS1jb250cm9sPjwvZGl2PjxkaXY+PGJyPjxiPkRpc3BsYXkgTmFtZTo8L2I+IDxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9bWFwcGluZ0ZpZWxkcy5tYXBwaW5nRGlzcGxheU5hbWUgcGxhY2Vob2xkZXI9XCJFbnRlciBkaXNwbGF5IG5hbWUuLi5cIiBjbGFzcz1mb3JtLWNvbnRyb2w+PC9kaXY+PGRpdiBjbGFzcz1yb3cgaWRkPVwiU0VMRUNUIERBVEFTRVQxXCI+PGRpdiBjbGFzcz1jb2wtMTQgbmctZm9ybT1zZWxlY3QxPjxzcGFuIGNsYXNzPiZuYnNwPGJyPjxiPlNlbGVjdCBkYXRhc2V0MTo8L2I+PC9zcGFuPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBpcy1tdWx0aXBsZT1mYWxzZSBuZy1tb2RlbD1tYXBwaW5nRmllbGRzLmRhdGFzZXQxIHNlbGVjdGVkLWl0ZW1zPW1hcHBpbmdGaWVsZHMuZGF0YXNldDEgZHJvcGRvd24taXRlbXM9ZGF0YXNldExpc3QgZHJvcGRvd24taWQ9XCJcXCd2ZXJzaW9uXFwnK2ZkLk5hbWUrZmQuSXRlbUlkXCIgcGFyZW50LWZvcm0taWQ9c2VsZWN0MSBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCBkYXRhc2V0XFwnXCIgb24tc2VsZWN0LWZuPVwib25OZXdNYXBwaW5nU2VsZWN0Q2FsbGJhY2sobWFwcGluZ0ZpZWxkcy5kYXRhc2V0MSxcXCdkYXRhc2V0MVxcJyApXCI+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48L2Rpdj48ZGl2IGNsYXNzPWNvbC04IG5nLWZvcm09c2VsZWN0dmVyc2lvbjE+PHNwYW4gY2xhc3M+Jm5ic3A8YnI+PGI+U2VsZWN0IHZlcnNpb246PC9iPjwvc3Bhbj48a3QtZHJvcGRvd24tc3RhbmRhcmQgbmctZGlzYWJsZWQ9XCJwdWJsaXNoZWRGb3Jtc1tzZWxlY3RlZERhdGFzZXRdLmxlbmd0aD09MFwiIGlzLW11bHRpcGxlPWZhbHNlIG5nLW1vZGVsPVwibWFwcGluZ0ZpZWxkc1tcXCdkYXRhc2V0MVxcJ10udmVyc2lvblwiIHNlbGVjdGVkLWl0ZW1zPVwibWFwcGluZ0ZpZWxkc1tcXCdkYXRhc2V0MVxcJ10udmVyc2lvblwiIGRyb3Bkb3duLWl0ZW1zPVwicHVibGlzaGVkRm9ybXNbXFwnZGF0YXNldDFcXCddXCIgZHJvcGRvd24taWQ9XCJcXCd2ZXJzaW9uXFwnK2ZkLk5hbWUrZmQuSXRlbUlkXCIgcGFyZW50LWZvcm0taWQ9c2VsZWN0dmVyc2lvbjEgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgdmVyc2lvblxcJ1wiIG9uLXNlbGVjdC1mbj1cIkdldFB1Ymxpc2hlZFJlc291cmNlQnlJZChcXCdkYXRhc2V0MUZpZWxkc1xcJyAsIG1hcHBpbmdGaWVsZHMpXCI+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXJvdyBpZGQ9XCJTRUxFQ1QgREFUQVNFVDJcIj48ZGl2IGNsYXNzPWNvbC0xNCBuZy1mb3JtPXNlbGVjdDI+PHNwYW4gY2xhc3M+Jm5ic3A8YnI+PGI+U2VsZWN0IGRhdGFzZXQyOjwvYj48L3NwYW4+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIGlzLW11bHRpcGxlPWZhbHNlIG5nLW1vZGVsPW1hcHBpbmdGaWVsZHMuZGF0YXNldDIgc2VsZWN0ZWQtaXRlbXM9bWFwcGluZ0ZpZWxkcy5kYXRhc2V0MiBkcm9wZG93bi1pdGVtcz1kYXRhc2V0TGlzdCBkcm9wZG93bi1pZD1cIlxcJ3ZlcnNpb25cXCcrZmQuTmFtZStmZC5JdGVtSWRcIiBwYXJlbnQtZm9ybS1pZD1zZWxlY3QyIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IGRhdGFzZXRcXCdcIiBvbi1zZWxlY3QtZm49XCJvbk5ld01hcHBpbmdTZWxlY3RDYWxsYmFjayhtYXBwaW5nRmllbGRzLmRhdGFzZXQyLFxcJ2RhdGFzZXQyXFwnIClcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjwvZGl2PjxkaXYgY2xhc3M9Y29sLTggbmctZm9ybT1zZWxlY3R2ZXJzaW9uMj48c3BhbiBjbGFzcz4mbmJzcDxicj48Yj5TZWxlY3QgdmVyc2lvbjo8L2I+PC9zcGFuPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBpcy1tdWx0aXBsZT1mYWxzZSBuZy1tb2RlbD1cIm1hcHBpbmdGaWVsZHNbXFwnZGF0YXNldDJcXCddLnZlcnNpb25cIiBzZWxlY3RlZC1pdGVtcz1cIm1hcHBpbmdGaWVsZHNbXFwnZGF0YXNldDJcXCddLnZlcnNpb25cIiBkcm9wZG93bi1pdGVtcz1cInB1Ymxpc2hlZEZvcm1zW1xcJ2RhdGFzZXQyXFwnXVwiIGRyb3Bkb3duLWlkPVwiXFwndmVyc2lvblxcJytmZC5OYW1lK2ZkLkl0ZW1JZFwiIHBhcmVudC1mb3JtLWlkPXNlbGVjdHZlcnNpb24yIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IHZlcnNpb25cXCdcIiBvbi1zZWxlY3QtZm49XCJHZXRQdWJsaXNoZWRSZXNvdXJjZUJ5SWQoXFwnZGF0YXNldDJGaWVsZHNcXCcgLCBtYXBwaW5nRmllbGRzIClcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgY29sLThcIiBuZy1mb3JtPW1hcHBpbmd0eXBlPjxzcGFuIGNsYXNzPiZuYnNwPGJyPjxiPlNlbGVjdCBtYXBwaW5nIHR5cGU6PC9iPjwvc3Bhbj48a3QtZHJvcGRvd24tc3RhbmRhcmQgaXMtbXVsdGlwbGU9ZmFsc2UgbmctbW9kZWw9bWFwcGluZ0ZpZWxkcy5tYXBwaW5nVHlwZSBzZWxlY3RlZC1pdGVtcz1tYXBwaW5nRmllbGRzLm1hcHBpbmdUeXBlIGRyb3Bkb3duLWl0ZW1zPWNvZGVMaXN0IGRyb3Bkb3duLWlkPVwiXFwndmVyc2lvblxcJytmZC5OYW1lK2ZkLkl0ZW1JZFwiIHBhcmVudC1mb3JtLWlkPW1hcHBpbmd0eXBlIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IG1hcHBpbmcgdHlwZVxcJ1wiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PC9kaXY+PGJyPjxicj48ZGl2IGNsYXNzPXJvdyBzdHlsZT1wYWRkaW5nLWxlZnQ6MTBweCBuZy1zaG93PVwic2F2ZURhdGFzZXRNYXBwaW5nSGVhZFN0YXR1cyE9XFwnQ2FuY2VsT3JJbml0XFwnXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHRcIiBuZy1zaG93PVwic2F2ZURhdGFzZXRNYXBwaW5nSGVhZFN0YXR1cz09XFwndXBkYXRlTWFwcGluZ1xcJ1wiIG5nLWNsaWNrPXNhdmVEYXRhc2V0TWFwcGluZ0hlYWQoc2VsZWN0ZWRSZXNvdXJjZSk+PHNwYW4gY2xhc3M9XCJmYSBmYS1mbG9wcHktb1wiPjwvc3Bhbj4gU2F2ZTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWRpc2FibGVkPVwibWFwcGluZ0ZpZWxkc1tcXCdkYXRhc2V0MVxcJ10udmVyc2lvbj09dW5kZWZpbmVkIHx8IG1hcHBpbmdGaWVsZHNbXFwnZGF0YXNldDJcXCddLnZlcnNpb249PXVuZGVmaW5lZCB8fCBtYXBwaW5nRmllbGRzLm1hcHBpbmdUeXBlPT11bmRlZmluZWRcIiBjbGFzcz1cImJ0biBidG4tbGlnaHRcIiBuZy1zaG93PVwic2F2ZURhdGFzZXRNYXBwaW5nSGVhZFN0YXR1cz09XFwnY3JlYXRlTWFwcGluZ1xcJ1wiIG5nLWNsaWNrPXNhdmVEYXRhc2V0TWFwcGluZ0hlYWQoKT48c3BhbiBjbGFzcz1cImZhIGZhLWZsb3BweS1vXCI+PC9zcGFuPiBTYXZlPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWRhbmdlclwiIG5nLWNsaWNrPWNhbmNlbE1hcHBpbmcoKT5DYW5jZWw8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTEyIHBhZEwwXCI+PGg0IGNsYXNzPVwibS00IHRleHQtY2VudGVyXCI+RGF0YXNldCB0cmFuc2Zvcm1zPC9oND48ZGl2IGlkPXRyYW5zZm9ybWdyaWQgdWktZ3JpZD1ncmlkT3B0aW9uczIgdWktZ3JpZC1zZWxlY3Rpb24gdWktZ3JpZC1yZXNpemUtY29sdW1ucyBjbGFzcz1teUdyaWQ+PC9kaXY+PGRpdiBuZy1oaWRlPVwic2F2ZURhdGFzZXRUcmFuc2Zvcm1IZWFkU3RhdHVzIT1cXCdDYW5jZWxPckluaXRcXCdcIiBjbGFzcz1wLTE+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1kaXNhYmxlZD1cInNhdmVEYXRhc2V0VHJhbnNmb3JtSGVhZFN0YXR1cyE9XFwnQ2FuY2VsT3JJbml0XFwnXCIgbmctY2xpY2s9c2hvd1RyYW5zZm9ybURhdGEoKSBjbGFzcz1cImJ0biBidG4tbGlnaHRcIj48c3BhbiBjbGFzcz1cImZhIGZhLXBsdXNcIj48L3NwYW4+IENyZWF0ZSBOZXcgUGFja2FnZTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWRpc2FibGVkPVwic2F2ZURhdGFzZXRUcmFuc2Zvcm1IZWFkU3RhdHVzIT1cXCdDYW5jZWxPckluaXRcXCdcIiBuZy1zaG93PXRyYW5zZm9ybVNlbGVjdGVkIG5nLWNsaWNrPXNob3dUcmFuc2Zvcm1EYXRhKHNlbGVjdGVkVHJhbnNmb3JtKSBjbGFzcz1cImJ0biBidG4tbGlnaHRcIj48c3BhbiBjbGFzcz1cImZhIGZhLXBsdXNcIj48L3NwYW4+IFVwZGF0ZSBzZWxlY3RlZCBQYWNrYWdlPC9idXR0b24+PC9kaXY+PGJyPjxicj48ZGl2IG5hbWU9YWRkTmV3VHJhbnNmb3JtIG5nLXNob3c9XCJzYXZlRGF0YXNldFRyYW5zZm9ybUhlYWRTdGF0dXMhPVxcJ0NhbmNlbE9ySW5pdFxcJ1wiPjxkaXY+PGI+VHJhbnNmb3JtIE5hbWU6PC9iPiA8aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPXRyYW5zZm9ybVBhY2thZ2UudHJhbnNmb3JtTmFtZSBwbGFjZWhvbGRlcj1cIkVudGVyIG5hbWUuLi5cIiBjbGFzcz1mb3JtLWNvbnRyb2w+PC9kaXY+PGRpdj48YnI+PGI+RGlzcGxheSBOYW1lOjwvYj4gPGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD10cmFuc2Zvcm1QYWNrYWdlLnRyYW5zZm9ybURpc3BsYXlOYW1lIHBsYWNlaG9sZGVyPVwiRW50ZXIgZGlzcGxheSBuYW1lLi4uXCIgY2xhc3M9Zm9ybS1jb250cm9sPjwvZGl2PjxkaXYgY2xhc3M9Y2FyZD48ZGl2IGNsYXNzPWNhcmQtaGVhZGVyPkZpZWxkMTwvZGl2PjxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHQtMFwiPjxzcGFuIGNsYXNzPiZuYnNwPGI+VHJhbnNmb3JtIFR5cGUgZm9yIEZpZWxkMTwvYj48L3NwYW4+PHVpLXNlbGVjdCBuZy1tb2RlbD10cmFuc2Zvcm1QYWNrYWdlLmZpZWxkVHlwZTEgb24tc2VsZWN0PW9uU2VsZWN0RmllbGQxKCRpdGVtKSBuZy1kaXNhYmxlZD1kaXNhYmxlZCBuYW1lPXNlbGVjdERhdGFzZXQgbmctcmVxdWlyZWQ9dHJ1ZSByZXNldC1zZWFyY2gtaW5wdXQ9ZmFsc2U+PHVpLXNlbGVjdC1tYXRjaCBjbGFzcz11aS1zZWxlY3QtbWF0Y2ggcGxhY2Vob2xkZXI9XCJTZWxlY3QgSW5wdXQgVHlwZS4uLlwiPjxzcGFuPnt7JHNlbGVjdC5zZWxlY3RlZC5OYW1lfX0gKHt7JHNlbGVjdC5zZWxlY3RlZC5pZH19KSA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmtcIiBuZy1jbGljaz1cImNsZWFyKCRldmVudCwgJHNlbGVjdClcIj48aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPjwvYT48L3NwYW4+PC91aS1zZWxlY3QtbWF0Y2g+PHVpLXNlbGVjdC1jaG9pY2VzIGNsYXNzPXVpLXNlbGVjdC1jaG9pY2VzIHJlcGVhdD1cImRhdGFzZXQgaW4gY29kZXNEZXRhaWxzXCIgcmVmcmVzaD1yZWZyZXNoUmVzdWx0cygkc2VsZWN0KSByZWZyZXNoLWRlbGF5PTA+PHNwYW4+e3tkYXRhc2V0Lk5hbWV9fSAoe3tkYXRhc2V0LmlkfX0pPC9zcGFuPjwvdWktc2VsZWN0LWNob2ljZXM+PC91aS1zZWxlY3Q+PGRpdiBuZy1pZj1cInRyYW5zZm9ybVBhY2thZ2UuZmllbGRUeXBlMS5OYW1lPT1cXCdkYXRhc2V0XFwnXCI+PHNwYW4gY2xhc3M+Jm5ic3A8YnI+PGI+RGF0YXNldCBmb3IgRmllbGQxPC9iPjwvc3Bhbj48dWktc2VsZWN0IG5nLW1vZGVsPXRyYW5zZm9ybVBhY2thZ2UuZGF0YXNldDEgb24tc2VsZWN0PW9uU2VsZWN0RGF0YXNldDEoJGl0ZW0pIG5nLWRpc2FibGVkPWRpc2FibGVkIG5hbWU9c2VsZWN0RGF0YXNldCBuZy1yZXF1aXJlZD10cnVlIHJlc2V0LXNlYXJjaC1pbnB1dD1mYWxzZT48dWktc2VsZWN0LW1hdGNoIGNsYXNzPXVpLXNlbGVjdC1tYXRjaCBwbGFjZWhvbGRlcj1cIlNlbGVjdCBkYXRhc2V0Li4uXCI+PHNwYW4+e3skc2VsZWN0LnNlbGVjdGVkLm5hbWV9fSAoe3skc2VsZWN0LnNlbGVjdGVkLmlkfX0pIDxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlua1wiIG5nLWNsaWNrPVwiY2xlYXIoJGV2ZW50LCAkc2VsZWN0KVwiPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+PC9hPjwvc3Bhbj48L3VpLXNlbGVjdC1tYXRjaD48dWktc2VsZWN0LWNob2ljZXMgY2xhc3M9dWktc2VsZWN0LWNob2ljZXMgcmVwZWF0PVwiZGF0YXNldCBpbiBkYXRhc2V0TGlzdFwiIHJlZnJlc2g9cmVmcmVzaFJlc3VsdHMoJHNlbGVjdCkgcmVmcmVzaC1kZWxheT0wPjxzcGFuPnt7ZGF0YXNldC5uYW1lfX0gKHt7ZGF0YXNldC5pZH19KTwvc3Bhbj4gPGkgY2xhc3M9XCJ0YXNrLWVsZW1lbnQtZHJhZy1oYW5kbGUgaGFuZGxlciBmYXMgZmEtZ3JpcC12ZXJ0aWNhbCB0ZXh0LWRhcmsgbXItMVwiIHN0eWxlPW9wYWNpdHk6MC4yPjwvaT48L3VpLXNlbGVjdC1jaG9pY2VzPjwvdWktc2VsZWN0PjxkaXYgbmctaWY9ZmllbGQxcmVzb3VyY2VzPjxzcGFuIGNsYXNzPiZuYnNwPGJyPjxiPlNlbGVjdCBEYXRhc2V0IFByb3BlcnR5PC9iPjwvc3Bhbj48dWktc2VsZWN0IG5nLW1vZGVsPXRyYW5zZm9ybVBhY2thZ2UuZGF0YXNldDFGaWVsZCBvbi1zZWxlY3QgbmctZGlzYWJsZWQ9ZGlzYWJsZWQgbmFtZT1zZWxlY3REYXRhc2V0IG5nLXJlcXVpcmVkPXRydWUgcmVzZXQtc2VhcmNoLWlucHV0PWZhbHNlPjx1aS1zZWxlY3QtbWF0Y2ggY2xhc3M9dWktc2VsZWN0LW1hdGNoIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGRhdGFzZXQuLi5cIj48c3Bhbj57eyRzZWxlY3Quc2VsZWN0ZWQuRmllbGROYW1lfX0gKHt7JHNlbGVjdC5zZWxlY3RlZC5pZH19KSA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmtcIiBuZy1jbGljaz1cImNsZWFyKCRldmVudCwgJHNlbGVjdClcIj48aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPjwvYT48L3NwYW4+PC91aS1zZWxlY3QtbWF0Y2g+PHVpLXNlbGVjdC1jaG9pY2VzIGNsYXNzPXVpLXNlbGVjdC1jaG9pY2VzIHJlcGVhdD1cImRhdGFzZXQgaW4gZmllbGQxcmVzb3VyY2VzXCIgcmVmcmVzaD1yZWZyZXNoUmVzdWx0cygkc2VsZWN0KSByZWZyZXNoLWRlbGF5PTA+PHNwYW4+e3tkYXRhc2V0LkZpZWxkTmFtZX19IHt7ZGF0YXNldC5GaWVsZFR5cGV9fSAoe3tkYXRhc2V0LmlkfX0pPC9zcGFuPjwvdWktc2VsZWN0LWNob2ljZXM+PC91aS1zZWxlY3Q+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jYXJkPjxkaXYgY2xhc3M9Y2FyZC1oZWFkZXI+RmllbGQyPC9kaXY+PGRpdiBjbGFzcz1cImNhcmQtYm9keSBwdC0wXCI+PHVpLXNlbGVjdCBuZy1tb2RlbD10cmFuc2Zvcm1QYWNrYWdlLmZpZWxkVHlwZTIgb24tc2VsZWN0PW9uU2VsZWN0RmllbGQyKCRpdGVtKSBuZy1kaXNhYmxlZD1kaXNhYmxlZCBuYW1lPXNlbGVjdERhdGFzZXQgbmctcmVxdWlyZWQ9dHJ1ZSByZXNldC1zZWFyY2gtaW5wdXQ9ZmFsc2U+PHVpLXNlbGVjdC1tYXRjaCBjbGFzcz11aS1zZWxlY3QtbWF0Y2ggcGxhY2Vob2xkZXI9XCJTZWxlY3QgT3V0cHV0IFR5cGUuLi5cIj48c3Bhbj57eyRzZWxlY3Quc2VsZWN0ZWQuTmFtZX19ICh7eyRzZWxlY3Quc2VsZWN0ZWQuaWR9fSkgPGEgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saW5rXCIgbmctY2xpY2s9XCJjbGVhcigkZXZlbnQsICRzZWxlY3QpXCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2E+PC9zcGFuPjwvdWktc2VsZWN0LW1hdGNoPjx1aS1zZWxlY3QtY2hvaWNlcyBjbGFzcz11aS1zZWxlY3QtY2hvaWNlcyByZXBlYXQ9XCJkYXRhc2V0IGluIGNvZGVzRGV0YWlsc1wiIHJlZnJlc2g9cmVmcmVzaFJlc3VsdHMoJHNlbGVjdCkgcmVmcmVzaC1kZWxheT0wPjxzcGFuPnt7ZGF0YXNldC5OYW1lfX0gKHt7ZGF0YXNldC5pZH19KTwvc3Bhbj48L3VpLXNlbGVjdC1jaG9pY2VzPjwvdWktc2VsZWN0PjxkaXYgbmctaWY9XCJ0cmFuc2Zvcm1QYWNrYWdlLmZpZWxkVHlwZTIuTmFtZT09XFwnZGF0YXNldFxcJ1wiIDxzcGFuIGNsYXNzPiZuYnNwPGJyPjxiPlNlbGVjdCBEYXRhc2V0IGZvciBGaWVsZDI8L2I+PHVpLXNlbGVjdCBuZy1tb2RlbD10cmFuc2Zvcm1QYWNrYWdlLmRhdGFzZXQyIG9uLXNlbGVjdD1vblNlbGVjdERhdGFzZXQyKCRpdGVtKSBuZy1kaXNhYmxlZD1kaXNhYmxlZCBuYW1lPXNlbGVjdERhdGFzZXQgbmctcmVxdWlyZWQ9dHJ1ZSByZXNldC1zZWFyY2gtaW5wdXQ9ZmFsc2U+PHVpLXNlbGVjdC1tYXRjaCBjbGFzcz11aS1zZWxlY3QtbWF0Y2ggcGxhY2Vob2xkZXI9XCJTZWxlY3QgZGF0YXNldC4uLlwiPjxzcGFuPnt7JHNlbGVjdC5zZWxlY3RlZC5uYW1lfX0gKHt7JHNlbGVjdC5zZWxlY3RlZC5pZH19KSA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmtcIiBuZy1jbGljaz1cImNsZWFyKCRldmVudCwgJHNlbGVjdClcIj48aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPjwvYT48L3NwYW4+PC91aS1zZWxlY3QtbWF0Y2g+PHVpLXNlbGVjdC1jaG9pY2VzIGNsYXNzPXVpLXNlbGVjdC1jaG9pY2VzIHJlcGVhdD1cImRhdGFzZXQgaW4gZGF0YXNldExpc3RcIiByZWZyZXNoPXJlZnJlc2hSZXN1bHRzKCRzZWxlY3QpIHJlZnJlc2gtZGVsYXk9MD48c3Bhbj57e2RhdGFzZXQubmFtZX19ICh7e2RhdGFzZXQuaWR9fSk8L3NwYW4+PC91aS1zZWxlY3QtY2hvaWNlcz48L3VpLXNlbGVjdD48ZGl2IG5nLWlmPWZpZWxkMnJlc291cmNlcz48c3BhbiBjbGFzcz4mbmJzcDxicj48Yj5GaWVsZDI8L2I+PC9zcGFuPjx1aS1zZWxlY3QgbmctbW9kZWw9dHJhbnNmb3JtUGFja2FnZS5kYXRhc2V0MkZpZWxkIG9uLXNlbGVjdCBuZy1kaXNhYmxlZD1kaXNhYmxlZCBuYW1lPXNlbGVjdERhdGFzZXQgbmctcmVxdWlyZWQ9dHJ1ZSByZXNldC1zZWFyY2gtaW5wdXQ9ZmFsc2U+PHVpLXNlbGVjdC1tYXRjaCBjbGFzcz11aS1zZWxlY3QtbWF0Y2ggcGxhY2Vob2xkZXI9XCJTZWxlY3QgRmllbGQyLi4uXCI+PHNwYW4+e3skc2VsZWN0LnNlbGVjdGVkLkZpZWxkTmFtZX19ICh7eyRzZWxlY3Quc2VsZWN0ZWQuaWR9fSkgPGEgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saW5rXCIgbmctY2xpY2s9XCJjbGVhcigkZXZlbnQsICRzZWxlY3QpXCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2E+PC9zcGFuPjwvdWktc2VsZWN0LW1hdGNoPjx1aS1zZWxlY3QtY2hvaWNlcyBjbGFzcz11aS1zZWxlY3QtY2hvaWNlcyByZXBlYXQ9XCJkYXRhc2V0IGluIGZpZWxkMnJlc291cmNlc1wiIHJlZnJlc2g9cmVmcmVzaFJlc3VsdHMoJHNlbGVjdCkgcmVmcmVzaC1kZWxheT0wPjxzcGFuPnt7ZGF0YXNldC5GaWVsZE5hbWV9fSB7e2RhdGFzZXQuRmllbGRUeXBlfX0gKHt7ZGF0YXNldC5pZH19KTwvc3Bhbj48L3VpLXNlbGVjdC1jaG9pY2VzPjwvdWktc2VsZWN0PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pjxicj48YnI+PGRpdiBjbGFzcz1yb3cgc3R5bGU9cGFkZGluZy1sZWZ0OjEwcHggbmctc2hvdz1cInNhdmVEYXRhc2V0VHJhbnNmb3JtSGVhZFN0YXR1cyE9XFwnQ2FuY2VsT3JJbml0XFwnXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHRcIiBuZy1zaG93PVwic2F2ZURhdGFzZXRUcmFuc2Zvcm1IZWFkU3RhdHVzPT1cXCd1cGRhdGVUcmFuc2Zvcm1cXCdcIiBuZy1jbGljaz1zYXZlRGF0YXNldFRyYW5zZm9ybUhlYWQoc2VsZWN0ZWRUcmFuc2Zvcm0pPjxzcGFuIGNsYXNzPVwiZmEgZmEtZmxvcHB5LW9cIj48L3NwYW4+IFNhdmU8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHRcIiBuZy1zaG93PVwic2F2ZURhdGFzZXRUcmFuc2Zvcm1IZWFkU3RhdHVzPT1cXCdjcmVhdGVUcmFuc2Zvcm1cXCdcIiBuZy1jbGljaz1zYXZlRGF0YXNldFRyYW5zZm9ybUhlYWQoKT48c3BhbiBjbGFzcz1cImZhIGZhLWZsb3BweS1vXCI+PC9zcGFuPiBTYXZlPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWRhbmdlclwiIG5nLWNsaWNrPWNhbmNlbFRyYW5zZm9ybSgpPkNhbmNlbDwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pjxocj48ZGl2IGNsYXNzPVwicm93IHB4LTJcIj48ZGl2IGlkPU1hcHBpbmdzIG5nLXNob3c9XCJkYXRhc2V0MUZpZWxkcy5sZW5ndGg+MCAmJiBkYXRhc2V0MkZpZWxkcy5sZW5ndGg+MFwiIGNsYXNzPVwicHgtMCBjb2wtMTJcIj48ZGl2IGNsYXNzPXJvdz48ZGl2IGNsYXNzPVwiY29sLTI0IHRleHQtY2VudGVyIGgyIHBiLTNcIj57e21hcHBpbmdGaWVsZHMubWFwcGluZ05hbWV9fTwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cm93PjxkaXYgY2xhc3M9Y29sLTEyPjxoNSBjbGFzcz10ZXh0LWNlbnRlciBuZy1pZj1yZXNvdXJjZVNlbGVjdGVkPkRBVEFTRVQgPGI+e3ttYXBwaW5nRmllbGRzLmRhdGFzZXQxLmlkfX08L2I+PC9oNT48ZGl2IGNsYXNzPWRhdGFzZXQxQ29udGFpbmVyIHN0eWxlPVwibWF4LWhlaWdodDo0MHJlbTtvdmVyZmxvdzogYXV0b1wiPjxkaXYgbmctcmVwZWF0PVwiaXRlbSBpbiBkYXRhc2V0MUZpZWxkcyB0cmFjayBieSBpdGVtLmlkXCIgY2xhc3M9XCJlbGVtZW50LWRyYWctaGFuZGxlIGV4YW1wbGVSb3cgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+PGRpdiBjbGFzcz1lbGVtZW50LWRyYWctaGFuZGxlPjxiIGNsYXNzPWVsZW1lbnQtZHJhZy1oYW5kbGU+e3tpdGVtLkxhYmVsIH19PC9iPiA8aSBjbGFzcz1lbGVtZW50LWRyYWctaGFuZGxlPih7e2l0ZW0uR2VuZXJpY1R5cGV9fSk8L2k+PC9kaXY+PGkgY2xhc3M9XCJlbGVtZW50LWRyYWctaGFuZGxlIGhhbmRsZXIgZmFzIGZhLWdyaXAtdmVydGljYWwgbXktMSBtci0yXCIgc3R5bGU9b3BhY2l0eTowLjI+PC9pPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMTIgcGwtMFwiPjxoNSBjbGFzcz10ZXh0LWNlbnRlciBuZy1pZj1yZXNvdXJjZVNlbGVjdGVkPkRBVEFTRVQgPGI+e3ttYXBwaW5nRmllbGRzLmRhdGFzZXQyLmlkfX08L2I+PC9oNT48ZGl2IGNsYXNzPWRhdGFzZXQxQ29udGFpbmVyIHN0eWxlPVwibWF4LWhlaWdodDo0MHJlbTtvdmVyZmxvdzogYXV0b1wiPjxkaXYgY2xhc3M9cHItMSBuZy1yZXBlYXQ9XCJpdGVtMiBpbiBkYXRhc2V0MkZpZWxkcyB0cmFjayBieSAkaW5kZXhcIj48ZGl2IG5nLXN3aXRjaD1pdGVtMi50eXBlPjxkaXYgbmctc3dpdGNoLXdoZW49ZGF0ZT48ZGl2IGNsYXNzPjxiPnt7JGluZGV4KzF9fS4ge3tpdGVtMi5MYWJlbH19PC9iPiA8aT4oe3tpdGVtMi5HZW5lcmljVHlwZX19IC0gZnJvbSk8L2k+PC9kaXY+PGRpdiBjbGFzcz1cImV4YW1wbGVSb3d7eyRpbmRleH19IHB5LTFcIiBzdHlsZT1cIm1pbi1oZWlnaHQ6NTBweDsgYm9yZGVyLXJhZGl1czogNHB4O2JhY2tncm91bmQtY29sb3I6cmdiYSgwLCAwLCAwLCAwLjEpXCI+PGRpdiBuZy1yZXBlYXQ9XCJmaWVsZCBpbiBpdGVtMi5maWVsZHMgdHJhY2sgYnkgJGluZGV4XCIgY2xhc3M9XCJleGFtcGxlQ2VsbCByb3cgbS0xIGVsZW1lbnQtZHJhZy1oYW5kbGVcIj48ZGl2IGNsYXNzPWNvbD48YiBjbGFzcz1lbGVtZW50LWRyYWctaGFuZGxlPnt7ZmllbGQuTGFiZWx9fTwvYj4gPGkgY2xhc3M9ZWxlbWVudC1kcmFnLWhhbmRsZT4oe3tmaWVsZC5HZW5lcmljVHlwZX19KTwvaT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGEgY2xhc3M9XCJidG4gYnR4LXhzIGJ0bi1vdXRsaW5lLWxpZ2h0IGJvcmRlci0wIHAtMCBweC0xXCIgaHJlZiBuZy1jbGljaz1yZW1vdmVJdGVtKCRwYXJlbnQuJGluZGV4LCRpbmRleCk+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2E+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz48Yj57eyRpbmRleCsxfX0uIHt7aXRlbTIuTGFiZWx9fTwvYj4gPGk+KHt7aXRlbTIuR2VuZXJpY1R5cGV9fSAtIHRvKTwvaT48L2Rpdj48ZGl2IGNsYXNzPVwiZXhhbXBsZVJvd0ZpZWxkczJ7eyRpbmRleH19IHB5LTFcIiBzdHlsZT1cIm1pbi1oZWlnaHQ6NTBweDtib3JkZXItcmFkaXVzOiA0cHg7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsIDAsIDAsIDAuMSlcIj48ZGl2IG5nLXJlcGVhdD1cImZpZWxkIGluIGl0ZW0yLmZpZWxkczIgdHJhY2sgYnkgJGluZGV4XCIgY2xhc3M9XCJleGFtcGxlQ2VsbCByb3cgbS0xIGVsZW1lbnQtZHJhZy1oYW5kbGVcIj48ZGl2IGNsYXNzPWNvbD48YiBjbGFzcz1lbGVtZW50LWRyYWctaGFuZGxlPnt7ZmllbGQuTGFiZWx9fTwvYj4gPGkgY2xhc3M9ZWxlbWVudC1kcmFnLWhhbmRsZT4oe3tmaWVsZC5HZW5lcmljVHlwZX19KTwvaT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGEgY2xhc3M9XCJidG4gYnR4LXhzIGJ0bi1vdXRsaW5lLWxpZ2h0IGJvcmRlci0wIHAtMCBweC0xXCIgaHJlZiBuZy1jbGljaz1yZW1vdmVJdGVtRjIoJHBhcmVudC4kaW5kZXgsJGluZGV4KT48aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPjwvYT48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLXN3aXRjaC1kZWZhdWx0PjxkaXYgY2xhc3M+PGI+e3skaW5kZXgrMX19LiB7e2l0ZW0yLkxhYmVsfX08L2I+IDxpPih7e2l0ZW0yLkdlbmVyaWNUeXBlfX0pPC9pPjwvZGl2PjxkaXYgY2xhc3M9XCJleGFtcGxlUm93e3skaW5kZXh9fSBweS0xXCIgc3R5bGU9XCJtaW4taGVpZ2h0OjUwcHg7Ym9yZGVyLXJhZGl1czogNHB4O2JhY2tncm91bmQtY29sb3I6cmdiYSgwLCAwLCAwLCAwLjEpXCI+PGRpdiBuZy1yZXBlYXQ9XCJmaWVsZCBpbiBpdGVtMi5maWVsZHMgdHJhY2sgYnkgJGluZGV4XCIgY2xhc3M9XCJleGFtcGxlQ2VsbCByb3cgbS0xIGVsZW1lbnQtZHJhZy1oYW5kbGVcIj48ZGl2IGNsYXNzPWNvbD48YiBjbGFzcz1lbGVtZW50LWRyYWctaGFuZGxlPnt7ZmllbGQuTGFiZWx9fTwvYj4gPGkgY2xhc3M9ZWxlbWVudC1kcmFnLWhhbmRsZT4oe3tmaWVsZC5HZW5lcmljVHlwZX19KTwvaT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGEgY2xhc3M9XCJidG4gYnR4LXhzIGJ0bi1vdXRsaW5lLWxpZ2h0IGJvcmRlci0wIHAtMCBweC0xXCIgaHJlZiBuZy1jbGljaz1yZW1vdmVJdGVtKCRwYXJlbnQuJGluZGV4LCRpbmRleCk+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2E+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1tLTQ+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1kaXNhYmxlZD1cImRhdGFzZXQyRmllbGRzLmxlbmd0aD09MFwiIG5nLWNsaWNrPXNhdmVEYXRhc2V0TWFwcGluZ0RldGFpbHMoKSBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiPlNhdmUgbWFwcGluZ3M8L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGlkPVRyYW5zZm9ybXMgY2xhc3M9Y29sLTEyPjxkaXYgbmctaWY9dHJhbnNmb3JtU2VsZWN0ZWQgY2xhc3M9Y29sLTI0PjxkaXYgY2xhc3M+PGRpdiBjbGFzcz1jb2wtMTQ+PGg0PkZpZWxkIDE8L2g0PjwvZGl2PjxkaXYgY2xhc3M9Y29sLTEwPjxoND5GaWVsZCAyPC9oND48L2Rpdj48L2Rpdj48ZGl2IG5nLXJlcGVhdD1cInRmIGluIHRyYW5zZm9ybUZpZWxkcyB0cmFjayBieSAkaW5kZXhcIj48ZGl2IGNsYXNzPXJvdz48ZGl2IGNsYXNzPWNvbC0yIHN0eWxlPW1hcmdpbi10b3A6NXB4PjxiIGNsYXNzPnt7dGYuaWR9fTwvYj48L2Rpdj48ZGl2IGNsYXNzPWNvbC0xMD48ZGl2IG5nLXN3aXRjaD10Zi5GaWVsZFR5cGUxPjxkaXYgbmctc3dpdGNoLXdoZW49dGV4dD48aW5wdXQgdHlwZT10ZXh0IHN0eWxlPW1hcmdpbi10b3A6NXB4IG5nLW1vZGVsPXRmLlRleHRJdGVtMSBuZy1yZXF1aXJlZD10cnVlIHBsYWNlaG9sZGVyPVwiVGV4dCBpdGVtIDFcIiBjbGFzcz1mb3JtLWNvbnRyb2w+PC9kaXY+PGRpdiBuZy1zd2l0Y2gtd2hlbj11c2VyPjxkaXYga3Qtc2ltcGxlLXVzZXIgdXNlci1saXN0PXVzZXJMaXN0IHNlbGVjdGVkLXVzZXI9dGYuVXNlcjEuaWQgc2VsZWN0ZWQtdXNlci1tb2RlbD10Zi5Vc2VyMT48L2Rpdj48L2Rpdj48ZGl2IG5nLXN3aXRjaC13aGVuPWdyb3VwPmdyb3VwPC9kaXY+PGRpdiBuZy1zd2l0Y2gtd2hlbj1jb2RlPmNvZGU8L2Rpdj48ZGl2IG5nLXN3aXRjaC13aGVuPWRhdGFzZXQ+ZGF0YXNldDwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLTEwPjxkaXYgbmctc3dpdGNoPXRmLkZpZWxkVHlwZTI+PGRpdiBuZy1zd2l0Y2gtd2hlbj10ZXh0PjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9dGYuVGV4dEl0ZW0yIG5nLXJlcXVpcmVkPXRydWUgcGxhY2Vob2xkZXI9XCJUZXh0IGl0ZW0gMlwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGlucHV0LXNtIG10LTFcIj48L2Rpdj48ZGl2IG5nLXN3aXRjaC13aGVuPXVzZXI+PGRpdiBrdC1zaW1wbGUtdXNlciB1c2VyLWxpc3Q9dXNlckxpc3Qgc2VsZWN0ZWQtdXNlcj10Zi5Vc2VyMi5pZCBzZWxlY3RlZC11c2VyLW1vZGVsPXRmLlVzZXIyIGNsYXNzPWNvbC0yND48L2Rpdj48L2Rpdj48ZGl2IG5nLXN3aXRjaC13aGVuPWdyb3VwPmdyb3VwPC9kaXY+PGRpdiBuZy1zd2l0Y2gtd2hlbj1jb2RlPmNvZGU8L2Rpdj48ZGl2IG5nLXN3aXRjaC13aGVuPWRhdGFzZXQ+ZGF0YXNldDwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9dHJhbnNmb3JtU2VsZWN0ZWQgY2xhc3M9cm93PjxkaXYgY2xhc3M9bS00PjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9YWRkVHJhbnNmb3JtRmllbGQoKSBjbGFzcz1cImJ0biBidG4tbGlnaHRcIj48c3BhbiBjbGFzcz1cImZhIGZhLXBsdXNcIj48L3NwYW4+IEFkZCBpdGVtPC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1yb3c+PGRpdiBjbGFzcz1tLTQ+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1zaG93PSF0cmFuc2Zvcm1TZWxlY3RlZCBuZy1jbGljaz1zYXZlVHJhbnNmb3JtRmllbGRzKCkgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIj48c3BhbiBjbGFzcz1cImZhIGZhLWZsb3BweS1vXCI+PC9zcGFuPiBTYXZlIHRyYW5zZm9ybXM8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Zvcm0+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAzX3Jlc291cmNlcy9hbmd1bGFyVGVtcGxhdGVzL2VkaXRSZXNvdXJjZS5odG1sJywnPGRpdj48ZGl2IGNsYXNzPVwiY2FyZCBtdC0xXCI+PGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHAtMVwiPjxoNCBjbGFzcz1teS1hdXRvPkVkaXQge3tyZXNvdXJjZS5SZXNvdXJjZVR5cGUubmFtZX19PC9oND48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY2FyZCBtdC0xIHAtMVwiPjxkaXYgY2xhc3M9XCJwLTEgbWItMlwiIG5nLWlmPXNob3dSZXR1cm5MaW5rPjxhIGNsYXNzPVwibWItMiB0ZXh0LXByaW1hcnlcIiBocmVmIHRpdGxlPVwiUmV0dXJuIHRvIHt7cmVzb3VyY2UuUmVzb3VyY2VUeXBlLm5hbWV9fSBkZWZpbml0aW9uXCIgbmctY2xpY2s9cmV0dXJuVG9QcmV2aW91c1BhZ2UoKT48aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWxlZnQgbXItMlwiPjwvaT5SZXR1cm4gdG8ge3tyZXNvdXJjZS5SZXNvdXJjZVR5cGUubmFtZX19IGRlZmluaXRpb248L2E+PC9kaXY+PGZvcm0gbmctc3VibWl0PXNhdmVSZXNvdXJjZURlZihmb3JtLiR2YWxpZCkgaWQ9ZWRpdEZvcm0gbmFtZT1mb3JtIGNsYXNzPWZvcm0taG9yaXpvbnRhbCByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2IGNsYXNzPVwiY29sLTI0IHRleHQtcHJpbWFyeVwiPjxpIGNsYXNzPVwiZmFyIGZhLW5ld3NwYXBlciB0ZXh0LXByaW1hcnkgbXItMlwiPjwvaT48c3BhbiBjbGFzcz1ib2xkPnt7cmVzb3VyY2UuUmVzb3VyY2VUeXBlLm5hbWV9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctaWY9XCJyZXNvdXJjZS5pZCAhPSBudWxsIHx8IHJlc291cmNlLmlkID4gMFwiIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uU3ViamVjdC4kdG91Y2hlZCkgJiYgZm9ybS5TdWJqZWN0LiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLTI0IGZvcj1SZXNvdXJjZUlkPklkPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC0xMj48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPXJlc291cmNlLmlkIG5nLWRpc2FibGVkPXRydWUgbmctcmVxdWlyZWQ9dHJ1ZSBjbGFzcz1mb3JtLWNvbnRyb2wgbmFtZT1SZXNvdXJjZUlkPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLk5hbWUuJHRvdWNoZWQpICYmIGZvcm0uTmFtZS4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC0yNCBmb3I9cmVzb3VyY2VOYW1lPnt7cmVzb3VyY2UuUmVzb3VyY2VUeXBlLm5hbWV9fSBuYW1lPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC0xMj48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPXJlc291cmNlLnJlc291cmNlZGVmbGFuZ19zZXRbMF0uTmFtZSBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1OYW1lIG5hbWU9TmFtZSBwbGFjZWhvbGRlcj1cIlJlc291cmNlIG5hbWVcIj48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLk5hbWUuJHRvdWNoZWQpICYmIGZvcm0uTmFtZS4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIgcmVzb3VyY2UgbmFtZTwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5TdWJqZWN0LiR0b3VjaGVkKSAmJiBmb3JtLlN1YmplY3QuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtMjQgZm9yPVN1YmplY3Q+e3tyZXNvdXJjZS5SZXNvdXJjZVR5cGUubmFtZX19IHN1YmplY3Q8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLTEyPjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9cmVzb3VyY2UucmVzb3VyY2VkZWZsYW5nX3NldFswXS5TdWJqZWN0IG5nLXJlcXVpcmVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPVN1YmplY3QgbmFtZT1TdWJqZWN0IHBsYWNlaG9sZGVyPVwiUmVzb3VyY2Ugc3ViamVjdFwiPjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uU3ViamVjdC4kdG91Y2hlZCkgJiYgZm9ybS5TdWJqZWN0LiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5FbnRlciByZXNvdXJjZSBzdWJqZWN0PC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLkRlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtLkRlc2NyaXB0aW9uLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLTI0IGZvcj1EZXNjcmlwdGlvbj57e3Jlc291cmNlLlJlc291cmNlVHlwZS5uYW1lfX0gZGVzY3JpcHRpb248L2xhYmVsPjxkaXYgY2xhc3M9Y29sLTEyPjx0ZXh0YXJlYSBuZy1tb2RlbD1yZXNvdXJjZS5yZXNvdXJjZWRlZmxhbmdfc2V0WzBdLkRlc2NyaXB0aW9uIG5hbWU9RGVzY3JpcHRpb24gbmctcmVxdWlyZWQ9dHJ1ZSBuZy1taW4tbGVuZ3RoPTIwIGNsYXNzPWZvcm0tY29udHJvbD48L3RleHRhcmVhPjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uRGVzY3JpcHRpb24uJHRvdWNoZWQpICYmIGZvcm0uRGVzY3JpcHRpb24uJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIHJlc291cmNlIGRlc2NyaXB0aW9uKG1pbiAyMCBjaGFycykuPC9wPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9ZmFsc2UgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnJlc291cmNlVHlwZS4kdG91Y2hlZCkgJiYgZm9ybS5yZXNvdXJjZVR5cGUuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtMjQgZm9yPWRkbFJlc291cmNlVHlwZT5SZXNvdXJjZSB0eXBlPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC0xMj48dWktc2VsZWN0IG5nLW1vZGVsPXJlc291cmNlLlJlc291cmNlVHlwZSBuZy1kaXNhYmxlZD1kaXNhYmxlZCBuYW1lPXJlc291cmNlVHlwZSBuZy1yZXF1aXJlZD10cnVlIHJlc2V0LXNlYXJjaC1pbnB1dD1mYWxzZT48dWktc2VsZWN0LW1hdGNoIGNsYXNzPXVpLXNlbGVjdC1tYXRjaCBwbGFjZWhvbGRlcj1cIlNlYXJjaCBvciBzZWxlY3QgcmVzb3VyY2UgdHlwZS4uLlwiPjxzcGFuIGNsYXNzPXAtMD57eyRzZWxlY3Quc2VsZWN0ZWQubmFtZX19IDxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGluayBwLTBcIiBuZy1jbGljaz1cImNsZWFyKCRldmVudCwgJHNlbGVjdClcIj48aSBjbGFzcz1cIm1sLTMgZmEgZmEtdGltZXMgZmxvYXQtcmlnaHRcIj48L2k+PC9hPjwvc3Bhbj48L3VpLXNlbGVjdC1tYXRjaD48dWktc2VsZWN0LWNob2ljZXMgY2xhc3M9dWktc2VsZWN0LWNob2ljZXMgcmVwZWF0PVwicnQgaW4gKHJlc291cmNlVHlwZUxpc3QgfCBmaWx0ZXI6IHsgbmFtZTogJHNlbGVjdC5zZWFyY2ggfSkgdHJhY2sgYnkgcnQuaWRcIiByZWZyZXNoPXJlZnJlc2hSZXN1bHRzKCRzZWxlY3QpIHJlZnJlc2gtZGVsYXk9MD48c3Bhbj57e3J0Lm5hbWV9fTwvc3Bhbj48L3VpLXNlbGVjdC1jaG9pY2VzPjwvdWktc2VsZWN0PjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ucmVzb3VyY2VUeXBlLiR0b3VjaGVkKSAmJiBmb3JtLnJlc291cmNlVHlwZS4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+U2VsZWN0IHJlc291cmNlIHR5cGU8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ucmVzb3VyY2VUYWdzLiR0b3VjaGVkKSAmJiBmb3JtLnJlc291cmNlVGFncy4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC0yNCBmb3I9ZGRsUmVzb3VyY2VUeXBlPiNIYXNoVGFnczwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtMTI+PHVpLXNlbGVjdCBuZy1tb2RlbD1yZXNvdXJjZS5UYWdzIHVpLXNlbGVjdC1tdWx0aXBsZS1saXN0IG5nLWRpc2FibGVkPWRpc2FibGVkIG5hbWU9cmVzb3VyY2VUeXBlIG5nLXJlcXVpcmVkPWZhbHNlIHJlc2V0LXNlYXJjaC1pbnB1dD1mYWxzZT48dWktc2VsZWN0LW1hdGNoIGNsYXNzPXVpLXNlbGVjdC1tYXRjaCBwbGFjZWhvbGRlcj1cIlNlYXJjaCBvciBzZWxlY3QgcmVzb3VyY2UgI2hhc2h0YWdzLi4uXCI+PHNwYW4gY2xhc3M9cC0wPnt7JHNlbGVjdC5zZWxlY3RlZC5uYW1lfX0gPGEgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saW5rIHAtMFwiIG5nLWNsaWNrPVwiY2xlYXIoJGV2ZW50LCAkc2VsZWN0KVwiPjxpIGNsYXNzPVwibWwtMyBmYSBmYS10aW1lcyBmbG9hdC1yaWdodFwiPjwvaT48L2E+PC9zcGFuPjwvdWktc2VsZWN0LW1hdGNoPjx1aS1zZWxlY3QtY2hvaWNlcyBjbGFzcz11aS1zZWxlY3QtY2hvaWNlcyByZXBlYXQ9XCJydCBpbiAocmVzb3VyY2VUYWdzTGlzdCB8IGZpbHRlcjogeyBuYW1lOiAkc2VsZWN0LnNlYXJjaCB9KSB0cmFjayBieSBydC5pZFwiIHJlZnJlc2g9cmVmcmVzaFJlc3VsdHMoJHNlbGVjdCkgcmVmcmVzaC1kZWxheT0wPjxzcGFuPnt7cnQubmFtZX19PC9zcGFuPjwvdWktc2VsZWN0LWNob2ljZXM+PC91aS1zZWxlY3Q+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5yZXNvdXJjZVRhZ3MuJHRvdWNoZWQpICYmIGZvcm0ucmVzb3VyY2VUYWdzLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5TZWxlY3QgcmVzb3VyY2UgaGFzaHRhZ3M8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ucmVzb3VyY2VTdGF0dXMuJHRvdWNoZWQpICYmIGZvcm0ucmVzb3VyY2VTdGF0dXMuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtMjQgZm9yPWRkbFJlc291cmNlU3RhdHVzPnt7cmVzb3VyY2UuUmVzb3VyY2VUeXBlLm5hbWV9fSBzdGF0dXM8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLTEyPjx1aS1zZWxlY3QgbmctbW9kZWw9cmVzb3VyY2UuU3RhdHVzIG5nLWRpc2FibGVkPWRpc2FibGVkIG5hbWU9cmVzb3VyY2VTdGF0dXMgbmctcmVxdWlyZWQ9dHJ1ZSByZXNldC1zZWFyY2gtaW5wdXQ9ZmFsc2U+PHVpLXNlbGVjdC1tYXRjaCBjbGFzcz11aS1zZWxlY3QtbWF0Y2ggcGxhY2Vob2xkZXI9XCJTZWFyY2ggb3Igc2VsZWN0IHJlc291cmNlIHN0YXR1cy4uLlwiPjxzcGFuIGNsYXNzPXAtMD57eyRzZWxlY3Quc2VsZWN0ZWQubmFtZX19IDxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGluayBwLTBcIiBuZy1jbGljaz1cImNsZWFyKCRldmVudCwgJHNlbGVjdClcIj48aSBjbGFzcz1cIm1sLTMgZmEgZmEtdGltZXMgZmxvYXQtcmlnaHRcIj48L2k+PC9hPjwvc3Bhbj48L3VpLXNlbGVjdC1tYXRjaD48dWktc2VsZWN0LWNob2ljZXMgY2xhc3M9dWktc2VsZWN0LWNob2ljZXMgcmVwZWF0PVwicnMgaW4gKHJlc291cmNlU3RhdHVzTGlzdCB8IGZpbHRlcjogeyBuYW1lOiAkc2VsZWN0LnNlYXJjaCB9KSB0cmFjayBieSBycy5pZFwiIHJlZnJlc2g9cmVmcmVzaFJlc3VsdHMoJHNlbGVjdCkgcmVmcmVzaC1kZWxheT0wPjxzcGFuPnt7cnMubmFtZX19PC9zcGFuPjwvdWktc2VsZWN0LWNob2ljZXM+PC91aS1zZWxlY3Q+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5yZXNvdXJjZVN0YXR1cy4kdG91Y2hlZCkgJiYgZm9ybS5yZXNvdXJjZVN0YXR1cy4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+U2VsZWN0IHJlc291cmNlIHN0YXR1czwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0yNCBuZy1pZj1cInJlc291cmNlLlJlc291cmNlVHlwZS52YWx1ZT09XFwnZGF0YXNldFxcJyB8fCByZXNvdXJjZS5SZXNvdXJjZVR5cGUudmFsdWU9PVxcJ2ZpbGVcXCdcIj48YSBocmVmIG5nLWNsaWNrPXNldEltbXV0YWJsZSgpIHN0eWxlPVwidGV4dC1kZWNvcmF0aW9uOiBub25lO1wiPjxpIG5nLWNsYXNzPVwie1xcJ2ZhIGZhLWxvY2sgdGV4dC1zdWNjZXNzXFwnOnJlc291cmNlLklzQmxvY2tjaGFpbiwgXFwnZmEgZmEtdW5sb2NrIHRleHQtZGFuZ2VyXFwnOiFyZXNvdXJjZS5Jc0Jsb2NrY2hhaW59XCI+Jm5ic3Age3tyZXNvdXJjZS5SZXNvdXJjZVR5cGUubmFtZX19IGlzIGltbXV0YWJsZSAoc2VjdXJlZCBvbiB0aGUgYmxvY2tjaGFpbikgJm5ic3A8L2k+IDxpIGNsYXNzPVwiZmFyIGZhLWNoZWNrLXNxdWFyZSB0ZXh0LXN1Y2Nlc3NcIiBuZy1pZj1yZXNvdXJjZS5Jc0Jsb2NrY2hhaW4+PC9pPiA8aSBjbGFzcz1cImZhciBmYS1zcXVhcmUgdGV4dC1kYW5nZXJcIiBuZy1pZj0hcmVzb3VyY2UuSXNCbG9ja2NoYWluPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1jb250cm9sLWdyb3VwPjxidXR0b24gdHlwZT1zdWJtaXQgaWQ9ZWRpdEJ0biBuZy1kaXNhYmxlZD1mb3JtLiRpbnZhbGlkIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXN1Y2Nlc3NcIj48aSBjbGFzcz1cImZhIGZhLXNhdmUgbXItMlwiPjwvaT4gU2F2ZTwvYnV0dG9uPjwvZGl2PjwvZm9ybT48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDNfcmVzb3VyY2VzL2FuZ3VsYXJUZW1wbGF0ZXMvZm9ybURlZmluaXRpb24uaHRtbCcsJzxzdHlsZT5cXHJcXG5cXHJcXG4uc2hhZG93YnV0dG9uIHtcXHJcXG4gICAgYm94LXNoYWRvdzogMCAwLjEyNXJlbSAwLjI1cmVtIHJnYigxNCAyNiA1NyAvIDglKSAhaW1wb3J0YW50O1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBhbGljZWJsdWU7XFxyXFxufVxcclxcbi5zaGFkb3didXR0b246aG92ZXIge1xcclxcbiAgICBib3gtc2hhZG93OiB2YXIoLS1kcy1vdmVybGF5LDAgOHB4IDE2cHggLTRweCByZ2JhKDksMzAsNjYsMC4yNSksMCAwIDFweCByZ2JhKDksMzAsNjYsMC4zMSkpICFpbXBvcnRhbnQ7XFxyXFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXHJcXG59XFxyXFxuXFxyXFxuLnNoYWRvd2J1dHRvbi5kaXNhYmxlZCwgLnNoYWRvd2J1dHRvbjpkaXNhYmxlZCB7XFxyXFxuICAgIGNvbG9yOmJsdWU7XFxyXFxuICAgIG9wYWNpdHk6IDE7XFxyXFxufVxcclxcblxcclxcbi5zaGFkb3didXR0b24gLmJsdWVvbmhvdmVyIHtcXHJcXG4gICBib3JkZXItYm90dG9tOiBzb2xpZCB0aGljayBsaWdodGdyYXk7XFxyXFxufVxcclxcblxcclxcbi5zaGFkb3didXR0b246ZGlzYWJsZWQgLmJsdWVvbmhvdmVyLCAuc2hhZG93YnV0dG9uOmhvdmVyIC5ibHVlb25ob3ZlciB7XFxyXFxuIGJvcmRlci1ib3R0b206IHNvbGlkIHRoaWNrIGJsdWUgOyAgXFxyXFxufVxcclxcbiBcXHJcXG5hOmFjdGl2ZSwgLmxpbms6YWN0aXZlIHtcXHJcXG4gICAgY29sb3I6IHZhcigtLWRzLXRleHQtbGluay1wcmVzc2VkLCMwMDY1RkYpO1xcclxcbiAgICB9XFxyXFxuICAgIFxcclxcblxcclxcbjwvc3R5bGU+PGRpdiBpZD1yZXNvdXJjZUZvcm0gc3R5bGU+PGRpdiBjbGFzcz1cImNhcmQgbS0xXCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgcC0xXCI+PGRpdiBjbGFzcz1cImNvbCBoNCBwLTIgYm9yZGVyLWJvdHRvbSB0ZXh0LWNlbnRlciBteS1hdXRvXCI+PHNwYW4gY2xhc3M9XCJoNCBtdC0xIG1yLTJcIj48Yj57e3Jlc291cmNlLk5hbWV9fTwvYj4ge3tyZXNvdXJjZS5SZXNvdXJjZUNvZGV9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwicC0xIG15LTJcIiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTtcIj48YSBjbGFzcz1cInRleHQtcHJpbWFyeSBoNlwiIGhyZWYgdGl0bGU9e3tyZXR1cm5TdGF0ZS5MYWJlbH19IG5nLWNsaWNrPXJldHVyblRvUHJldmlvdXNQYWdlKCk+PGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1sZWZ0IG1yLTJcIj48L2k+e3tyZXR1cm5TdGF0ZS5MYWJlbH19PC9hPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0yIHAtMSBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHJvd1wiPjxkaXYgbmctaWY9XCIocmVzb3VyY2UuaWQgIT0gbnVsbCB8fCByZXNvdXJjZS5pZCA+IDApXCIgY2xhc3M9XCJjb2wtYXV0byBteC0xXCIgaWQ9dmVyc2lvbj48c3BhbiBjbGFzcz1tdC0xPjxiIGNsYXNzPVwidGFnIHNtYWxsIHRleHQtc3VjY2VzcyBteS0xIG1yLTJcIj5JRDwvYj4ge3tyZXNvdXJjZS5pZH19PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBteC0xXCIgaWRkPWFjdGl2ZU9yTm90PjxzcGFuIHRpdGxlPVwiUmVzb3VyY2UgdHlwZVwiIG5nLWlmPVwiKHJlc291cmNlLmlkICE9IG51bGwgfHwgcmVzb3VyY2UuaWQgPiAwKVwiIGNsYXNzPVwidGFnIHRleHQtc3VjY2VzcyBteS0xXCI+U1RBVFVTPC9zcGFuPiA8c3BhbiBuZy1pZj1cInJlc291cmNlLkFjdGl2ZSAmJiAocmVzb3VyY2UuaWQgIT0gbnVsbCB8fCByZXNvdXJjZS5pZCA+IDApXCIgY2xhc3M9XCJzbWFsbCBib2xkIG1yLTRcIj5BY3RpdmUgPGkgY2xhc3M9XCJ0ZXh0LXN1Y2Nlc3MgZmEgZmEtY2hlY2tcIj48L2k+PC9zcGFuPiA8c3BhbiBuZy1pZj1cIiFyZXNvdXJjZS5BY3RpdmUgJiYgKHJlc291cmNlLmlkICE9IG51bGwgfHwgcmVzb3VyY2UuaWQgPiAwKVwiIGNsYXNzPVwic21hbGwgYm9sZCBtci00XCI+Tm90IGFjdGl2ZSA8aSBjbGFzcz1cInRleHQtZGFuZ2VyIGZhIGZhLXRpbWVzXCI+PC9pPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXgtMVwiPjxzcGFuIGNsYXNzPVwic21hbGwgbXItMlwiIHRpdGxlPVwiQ2hhbmdlcyB0byBmb3JtIHdpbGwgYmUgc2F2ZWQgdW5kZXIgdGhpcyB2ZXJzaW9uXCI+PGIgY2xhc3M9XCJ0YWcgdGV4dC1zdWNjZXNzIG15LTEgbXItMlwiPlZFUlNJT048L2I+IHt7cmVzb3VyY2UuVmVyc2lvbn19PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBteC0xXCI+PGRpdiBuZy1pZj1cIihyZXNvdXJjZS5pZCAhPSBudWxsIHx8IHJlc291cmNlLmlkID4gMClcIiBjbGFzcz1zbWFsbD48YiBjbGFzcz1cInRhZyB0ZXh0LXN1Y2Nlc3MgbXktMSBtci0yXCI+VFlQRTwvYj48L2Rpdj48ZGl2PjxzcGFuIGNsYXNzPVwic21hbGwgYm9sZCBtci00XCI+e3tyZXNvdXJjZS5SZXNvdXJjZU5hbWV9fTwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXgtMSBzbWFsbFwiIHRpdGxlPVwiQ3JlYXRlZCBieSB7e3Jlc291cmNlLkNyZWF0ZWRCeS5maXJzdF9uYW1lfX0ge3tyZXNvdXJjZS5DcmVhdGVkQnkubGFzdF9uYW1lfX1cIiBuZy1pZj1yZXNvdXJjZS5DcmVhdGVkQnk+PGIgY2xhc3M9XCJ0YWcgdGV4dC1zdWNjZXNzIG10LTEgbWItMiBtci0yXCI+Q1JFQVRFRDwvYj4ge3tyZXNvdXJjZS5DcmVhdGVkRGF0ZVRpbWUgfCBkYXRlOiBcImRkLk1NLnl5eXkgXFwnYXRcXCcgSEg6bW06c3NcIn19IDxzcGFuIG5nLWlmPXJlc291cmNlLkNyZWF0ZWRCeS5maXJzdF9uYW1lPihieSA8Yj57e3Jlc291cmNlLkNyZWF0ZWRCeS5maXJzdF9uYW1lfX0ge3tyZXNvdXJjZS5DcmVhdGVkQnkubGFzdF9uYW1lfX08L2I+KTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gc21hbGxcIj48c3BhbiB0aXRsZT1cIkNoYW5nZWQgYnkge3tyZXNvdXJjZS5DaGFuZ2VkQnkuZmlyc3RfbmFtZX19IHt7cmVzb3VyY2UuQ2hhbmdlZEJ5Lmxhc3RfbmFtZX19XCIgbmctaWY9cmVzb3VyY2UuQ2hhbmdlZEJ5PjxiIGNsYXNzPVwidGFnIHRleHQtc3VjY2VzcyBteS0xIG1iLTIgbXItMlwiPk1PRElGSUVEPC9iPjwvc3Bhbj4ge3tyZXNvdXJjZS5DaGFuZ2VkRGF0ZVRpbWUgfCBkYXRlOlwiZGQuTU0ueXl5eSBcXCdhdFxcJyBISDptbTpzc1wifX0gPHNwYW4gbmctaWY9cmVzb3VyY2UuQ2hhbmdlZEJ5LmZpcnN0X25hbWU+KGJ5IDxiPnt7cmVzb3VyY2UuQ2hhbmdlZEJ5LmZpcnN0X25hbWV9fSB7e3Jlc291cmNlLkNoYW5nZWRCeS5sYXN0X25hbWV9fTwvYj4pPC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjYXJkIG0tMVwiIHN0eWxlPjxkaXYgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCIgY2xhc3M9XCJwLTEgcm93IG14LTFcIiBuZy1jbGljaz1cImlzQ29sbGFwc2VkRGF0YVByb3BlcnR5ID0gIWlzQ29sbGFwc2VkRGF0YVByb3BlcnR5XCI+PHNwYW4gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIHAtMVwiPjxzcGFuIG5nLWNsYXNzPVwie1xcJ2ZhcyBmYS1jaGV2cm9uLWRvd25cXCc6IGlzQ29sbGFwc2VkRGF0YVByb3BlcnR5LFxcJ2ZhcyBmYS1jaGV2cm9uLXJpZ2h0XFwnOiAhaXNDb2xsYXBzZWREYXRhUHJvcGVydHkgfVwiPjwvc3Bhbj48L3NwYW4+IDxzcGFuIGNsYXNzPXRhZz57e3Jlc291cmNlLlJlc291cmNlTmFtZX19IFBST1BFUlRJRVM8L3NwYW4+PC9kaXY+PGZvcm0gdWliLWNvbGxhcHNlPSFpc0NvbGxhcHNlZERhdGFQcm9wZXJ0eSBuZy1zdWJtaXQ9c2F2ZVJlc291cmNlRGVmKGZvcm0uJHZhbGlkKSBpZD1kYXRhc2V0UHJvcHNGb3JtIG5hbWU9Zm9ybSBjbGFzcz1mb3JtLWhvcml6b250YWwgcm9sZT1mb3JtIG5vdmFsaWRhdGU+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPWNvbC1sZy0xMj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5OYW1lLiR0b3VjaGVkKSAmJiBmb3JtLk5hbWUuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtbGctMjQgZm9yPXJlc291cmNlTmFtZT5OYW1lPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1sZy0yND48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPXJlc291cmNlLk5hbWUgbmctcmVxdWlyZWQ9dHJ1ZSBjbGFzcz1mb3JtLWNvbnRyb2wgaWQ9TmFtZSBuYW1lPU5hbWUgcGxhY2Vob2xkZXI9XCJSZXNvdXJjZSBuYW1lXCI+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5OYW1lLiR0b3VjaGVkKSAmJiBmb3JtLk5hbWUuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIHJlc291cmNlIG5hbWU8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uU3ViamVjdC4kdG91Y2hlZCkgJiYgZm9ybS5TdWJqZWN0LiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTI0IGZvcj1TdWJqZWN0PlN1YmplY3Q8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9cmVzb3VyY2UuU3ViamVjdCBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1TdWJqZWN0IG5hbWU9U3ViamVjdCBwbGFjZWhvbGRlcj1cIlJlc291cmNlIHN1YmplY3RcIj48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLlN1YmplY3QuJHRvdWNoZWQpICYmIGZvcm0uU3ViamVjdC4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIgcmVzb3VyY2Ugc3ViamVjdDwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5EZXNjcmlwdGlvbi4kdG91Y2hlZCkgJiYgZm9ybS5EZXNjcmlwdGlvbi4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1sZy0yNCBmb3I9RGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTI0Pjx0ZXh0YXJlYSBuZy1tb2RlbD1yZXNvdXJjZS5EZXNjcmlwdGlvbiBuYW1lPURlc2NyaXB0aW9uIG5nLXJlcXVpcmVkPXRydWUgbmctbWluLWxlbmd0aD0yMCBjbGFzcz1mb3JtLWNvbnRyb2w+PC90ZXh0YXJlYT48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLkRlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtLkRlc2NyaXB0aW9uLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5FbnRlciByZXNvdXJjZSBkZXNjcmlwdGlvbihtaW4gMjAgY2hhcnMpLjwvcD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0xMj48ZGl2IG5nLWlmPWZhbHNlIGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5yZXNvdXJjZVRhZ3MuJHRvdWNoZWQpICYmIGZvcm0ucmVzb3VyY2VUYWdzLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTI0IGZvcj1kZGxSZXNvdXJjZVR5cGU+I0hhc2hUYWdzPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1sZy0yND48dWktc2VsZWN0IG5nLW1vZGVsPXJlc291cmNlLlRhZ3MgdWktc2VsZWN0LW11bHRpcGxlLWxpc3QgbmctZGlzYWJsZWQ9ZGlzYWJsZWQgY2xvc2Utb24tc2VsZWN0PWZhbHNlIG5hbWU9cmVzb3VyY2VUeXBlIG5nLXJlcXVpcmVkPWZhbHNlIHJlc2V0LXNlYXJjaC1pbnB1dD1mYWxzZT48dWktc2VsZWN0LW1hdGNoIGNsYXNzPXVpLXNlbGVjdC1tYXRjaCBwbGFjZWhvbGRlcj1cIlNlYXJjaCBvciBzZWxlY3QgZGF0YXNldCAjaGFzaHRhZ3MuLi5cIj48c3BhbiBjbGFzcz1wLTA+e3skc2VsZWN0LnNlbGVjdGVkLm5hbWV9fSA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmsgcC0wXCIgbmctY2xpY2s9XCJjbGVhcigkZXZlbnQsICRzZWxlY3QpXCI+PGkgY2xhc3M9XCJtbC0zIGZhIGZhLXRpbWVzIGZsb2F0LXJpZ2h0XCI+PC9pPjwvYT48L3NwYW4+PC91aS1zZWxlY3QtbWF0Y2g+PHVpLXNlbGVjdC1jaG9pY2VzIGNsYXNzPXVpLXNlbGVjdC1jaG9pY2VzIHJlcGVhdD1cInJ0IGluIChyZXNvdXJjZVRhZ3NMaXN0IHwgZmlsdGVyOiB7IG5hbWU6ICRzZWxlY3Quc2VhcmNoIH0pIHRyYWNrIGJ5IHJ0LmlkXCIgcmVmcmVzaD1yZWZyZXNoUmVzdWx0cygkc2VsZWN0KSByZWZyZXNoLWRlbGF5PTA+PHNwYW4+e3tydC5uYW1lfX08L3NwYW4+PC91aS1zZWxlY3QtY2hvaWNlcz48dWktc2VsZWN0LWZvb3Rlcj48L3VpLXNlbGVjdC1mb290ZXI+PHVpLXNlbGVjdC1uby1jaG9pY2U+PC91aS1zZWxlY3Qtbm8tY2hvaWNlPjwvdWktc2VsZWN0PjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ucmVzb3VyY2VUYWdzLiR0b3VjaGVkKSAmJiBmb3JtLnJlc291cmNlVGFncy4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+U2VsZWN0IHJlc291cmNlIGhhc2h0YWdzPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgbWItNFwiPjxkaXYgY2xhc3M9bXktYXV0bz5BY3RpdmU8L2Rpdj48bGFiZWwgY2xhc3M9XCJzd2l0Y2ggc3dpdGNoLWdyZWVuXCI+PGlucHV0IG5nLW1vZGVsPXJlc291cmNlLkFjdGl2ZSB0eXBlPWNoZWNrYm94IG5nLXRydWUtdmFsdWU9dHJ1ZSBuZy1mYWxzZS12YWx1ZT1mYWxzZSBjbGFzcz1zd2l0Y2gtaW5wdXQ+IDxzcGFuIGNsYXNzPXN3aXRjaC1sYWJlbCBkYXRhLW9uPU9uIGRhdGEtb2ZmPU9mZj48L3NwYW4+IDxzcGFuIGNsYXNzPXN3aXRjaC1oYW5kbGU+PC9zcGFuPjwvbGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PGRpdiBrdC11c2Vycy1ncm91cHMtc2VsZWN0IG5nLWlmPWZvcm1Mb2FkZWQgc2VsZWN0ZWQtdXNlcnM9cmVzb3VyY2UuQWRtaW5Vc2VycyBzZWxlY3RlZC1ncm91cHM9cmVzb3VyY2UuQWRtaW5Hcm91cHMgaGVhZGVyLWxhYmVsPWFkbWluSGVhZGVyTGFiZWwgdXNlcnMtbGFiZWw9XCJcXCdBZG1pbiB1c2Vyc1xcJ1wiIGdyb3Vwcy1sYWJlbD1cIlxcJ0FkbWluIGdyb3Vwc1xcJ1wiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxidXR0b24gdHlwZT1zdWJtaXQgaWQ9c2F2ZVJlc291cmNlQnRuIG5nLWRpc2FibGVkPWZvcm0uJGludmFsaWQgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1zdWNjZXNzIG15LTJcIj48c3BhbiBjbGFzcz1cImZhIGZhLXNhdmUgbXItMlwiPjwvc3Bhbj5TYXZlIHByb3BlcnRpZXM8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Zvcm0+PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQgbS0xXCIgc3R5bGU+PGRpdiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIiBjbGFzcz1cInAtMSByb3cgbXgtMVwiIG5nLWNsaWNrPVwiaXNDb2xsYXBzZWRQdWJsaXNoID0gIWlzQ29sbGFwc2VkUHVibGlzaFwiPjxzcGFuIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBwLTFcIj48c3BhbiBuZy1jbGFzcz1cIntcXCdmYXMgZmEtY2hldnJvbi1kb3duXFwnOiBpc0NvbGxhcHNlZFB1Ymxpc2gsXFwnZmFzIGZhLWNoZXZyb24tcmlnaHRcXCc6ICFpc0NvbGxhcHNlZFB1Ymxpc2ggfVwiPjwvc3Bhbj48L3NwYW4+IDxzcGFuIGNsYXNzPXRhZz5QdWJsaXNoIHt7cmVzb3VyY2UuUmVzb3VyY2VOYW1lfX08L3NwYW4+PC9kaXY+PGZvcm0gdWliLWNvbGxhcHNlPSFpc0NvbGxhcHNlZFB1Ymxpc2ggbmctc3VibWl0PVB1Ymxpc2gyUHJvZChmb3JtUHVibGlzaC4kdmFsaWQpIGlkPXB1Ymxpc2hSZXNvdXJlRm9ybSBuYW1lPWZvcm1QdWJsaXNoIGNsYXNzPWZvcm0taG9yaXpvbnRhbCByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgdGV4dC1jZW50ZXJcIj48ZGl2IG5nLWlmPXB1Ymxpc2hlZFJlc291cmNlLlB1Ymxpc2hlZCBjbGFzcz1tYi00PjxzcGFuIGNsYXNzPVwibXItMiBoNFwiPlB1Ymxpc2hlZDwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJmYSBmYS1jaGVjay1jaXJjbGUgbXItMiB0ZXh0LXN1Y2Nlc3MgaDRcIj48L3NwYW4+PGRpdj48c3Bhbj5WZXJzaW9uIHt7cHVibGlzaGVkUmVzb3VyY2UuUHVibGlzaGVkVmVyc2lvbn19IHB1Ymxpc2hlZCBieSB7e3B1Ymxpc2hlZFJlc291cmNlLlB1Ymxpc2hlZEJ5fX0gb24ge3twdWJsaXNoZWRSZXNvdXJjZS5EYXRlVGltZSB8IGRhdGU6XCJkZC5NTS55eXl5IFxcJ2F0XFwnIEhIOm1tOnNzXCJ9fTwvc3Bhbj4gPHNwYW4gbmctaWY9cHVibGlzaGVkUmVzb3VyY2UuQ2hhbmdlZEJ5PihsYXN0IGNoYW5nZWQgYnkge3twdWJsaXNoZWRSZXNvdXJjZS5DaGFuZ2VkQnl9fSBvbiB7e3B1Ymxpc2hlZFJlc291cmNlLkNoYW5nZWREYXRlVGltZSB8IGRhdGU6XCJkZC5NTS55eXl5IFxcJ2F0XFwnIEhIOm1tOnNzXCJ9fSk8L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj0hcHVibGlzaGVkUmVzb3VyY2UuUHVibGlzaGVkIGNsYXNzPWg0PjxzcGFuIGNsYXNzPW1yLTI+Tm90IHB1Ymxpc2hlZDwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJmYSBmYS10aW1lcyB0ZXh0LWRhbmdlclwiPjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTIwIG9mZnNldC1sZy0yIHRleHQtY2VudGVyXCIgbmctaWY9cHVibGlzaGVkUmVzb3VyY2UuUHVibGlzaGVkPjxkaXYgbmctaWY9XCJwdWJsaXNoZWRSZXNvdXJjZS5ybWQgJiYgcHVibGlzaGVkUmVzb3VyY2UuY291bnQ9PTBcIj48ZGl2IGNsYXNzPW15LTIga3QtYmFzaWMtdGFibGUgY29sdW1ucz1kYXRhc2V0RGVwbG95Q29scyBkYXRhPXB1Ymxpc2hlZFJlc291cmNlLnJtZCBtYXBwaW5nPWRlcGxveUFjdGlvbk1hcHBpbmdzPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJwdWJsaXNoZWRSZXNvdXJjZS5ybWQgJiYgcHVibGlzaGVkUmVzb3VyY2UuY291bnQ+MFwiPjxzcGFuIGNsYXNzPVwiYm9yZGVyLWJvdHRvbSBoNVwiPlBlbmRpbmcgY2hhbmdlczwvc3Bhbj48ZGl2IGNsYXNzPW15LTIga3QtYmFzaWMtdGFibGUgY29sdW1ucz1kYXRhc2V0RGVwbG95Q29scyBkYXRhPXB1Ymxpc2hlZFJlc291cmNlLnJtZCBtYXBwaW5nPWRlcGxveUFjdGlvbk1hcHBpbmdzPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgdGV4dC1jZW50ZXJcIiBuZy1pZj0hcHVibGlzaGVkUmVzb3VyY2UuUHVibGlzaGVkPjxkaXYgY2xhc3M9XCJib3JkZXItYm90dG9tIGZudDEwIHBiLTJcIj57e3Jlc291cmNlLlJlc291cmNlTmFtZX19IGNoYW5nZXMgdG8gcHVibGlzaDwvZGl2PjxkaXYgY2xhc3M9bXQtMiBrdC1iYXNpYy10YWJsZSBjb2x1bW5zPWRhdGFzZXREZXBsb3lDb2xzIGRhdGE9cHVibGlzaGVkUmVzb3VyY2Uucm1kIG1hcHBpbmc9ZGVwbG95QWN0aW9uTWFwcGluZ3M+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCB0ZXh0LWNlbnRlclwiPjxkaXYgbmctaWY9ZGF0YXNldERlcGxveS5sZW5ndGggY2xhc3M9XCJteS0yIHRleHQtZGFuZ2VyXCI+VG8gcHVibGlzaCBkYXRhc2V0IGZpcnN0IGRlcGxveSBhbGwgcGVuZGluZyBkYXRhYmFzZSBjaGFuZ2VzITwvZGl2PjxidXR0b24gdHlwZT1zdWJtaXQgaWQ9cHVibGlzaFJlc291cmNlQnRuIG5nLWhpZGU9XCJmb3JtUHVibGlzaC4kaW52YWxpZCB8fCBkYXRhc2V0RGVwbG95Lmxlbmd0aCB8fCBwdWJsaXNoZWRSZXNvdXJjZS5jb3VudD09MFwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc3VjY2VzcyBteS0yXCI+PHNwYW4gbmctaWY9IXB1Ymxpc2hpbmdEYXRhc2V0PjxpIGNsYXNzPVwiZmEgZmEtdXBsb2FkIG1yLTFcIj48L2k+PC9zcGFuPiA8c3BhbiBuZy1pZj1wdWJsaXNoaW5nRGF0YXNldD48aSBjbGFzcz1cImZhcyBmYS1zcGlubmVyIGZhLXNwaW4gbXItMVwiPjwvaT48L3NwYW4+IDxzcGFuIG5nLWlmPXB1Ymxpc2hpbmdEYXRhc2V0PlB1Ymxpc2hpbmcuLi48L3NwYW4+IDxzcGFuIG5nLWlmPSFwdWJsaXNoaW5nRGF0YXNldD5QdWJsaXNoPC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZm9ybT48L2Rpdj48ZGl2IG5nLWlmPWRlZmluaXRpb25UeXBlIGNsYXNzPWNhcmQgbmctc3R5bGU9XCIocmVzb3VyY2UuZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgfHwgcmVzb3VyY2UuZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTMgfHwgcmVzb3VyY2UuZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTQpICYmIGdzcnZjLmdldFRvcEZvclN0aWNreSgwKVwiIG5nLWNsYXNzPVwie1xcJ2Zvcm0tYnRucy10b3AgcG9zaXRpb24tc3RpY2t5XFwnOnJlc291cmNlLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xIHx8IHJlc291cmNlLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0zIHx8IHJlc291cmNlLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT00fVwiPjxmb3JtIGlkPWZvcm1hMSBuYW1lPXt7Zm9ybURlZmluaXRpb24uZm9ybU5hbWV9fSBjbGFzcz1mb3JtLWhvcml6b250YWwgbmctY2xhc3M9XCJ7XFwnZWRpdC1tb2RlXFwnOnJlc291cmNlLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xfVwiIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlci1hY3Rpb25zIGQtZmxleCBwLTEgcHgtNFwiPjxzcGFuIGNsYXNzPVwidGFnIHRleHQtZGFyayBteS0yXCI+Rm9ybSBkZWZpbml0aW9uPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9cm93PjxkaXYgY2xhc3M9Y29sPjx1bCBjbGFzcz1cIm5hdiBuYXYtdGFicyBzaW1wbGUtdGFicyBib3JkZXItMCBteC00XCIgaWQ9bXlUYWIgcm9sZT10YWJsaXN0PjxsaSBjbGFzcz1uYXYtaXRlbT48YSBjbGFzcz1uYXYtbGluayBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6cmVzb3VyY2UuZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTF9XCIgaWQ9YnVpbGQtdGFiIGhyZWYgZGF0YS10b2dnbGU9dGFiIG5nLWNsaWNrPVNob3dGb3JtVmlldygxLGZhbHNlKSByb2xlPXRhYiBhcmlhLWNvbnRyb2xzPWJ1aWxkIGFyaWEtc2VsZWN0ZWQ9ZmFsc2U+QnVpbGQgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodCBtbC0yIHRleHQtcHJpbWFyeVwiPkN0cmwrQjwvc3Bhbj48L2E+PC9saT48bGkgY2xhc3M9bmF2LWl0ZW0+PGEgY2xhc3M9bmF2LWxpbmsgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOnJlc291cmNlLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0zIHx8IHJlc291cmNlLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT00fVwiIGlkPWxheW91dC10YWIgaHJlZiBkYXRhLXRvZ2dsZT10YWIgbmctY2xpY2s9U2hvd0Zvcm1WaWV3KDQpIHJvbGU9dGFiIGFyaWEtY29udHJvbHM9bGF5b3V0IGFyaWEtc2VsZWN0ZWQ9ZmFsc2U+PGkgY2xhc3M9XCJmYSBmYS10aC1sYXJnZSBtci0xXCI+PC9pPiBBcnJhbmdlIGxheW91dDwvYT48L2xpPjxsaSBjbGFzcz1uYXYtaXRlbT48YSBjbGFzcz1uYXYtbGluayBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6cmVzb3VyY2UuZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTJ9XCIgaHJlZiBpZD1wcmV2aWV3LXRhYiBkYXRhLXRvZ2dsZT10YWIgbmctY2xpY2s9U2hvd0Zvcm1WaWV3KDIsdHJ1ZSkgcm9sZT10YWIgYXJpYS1jb250cm9scz1wcmV2aWV3IGFyaWEtc2VsZWN0ZWQ9dHJ1ZT5QcmV2aWV3IDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQgbWwtMiB0ZXh0LXByaW1hcnlcIj5DdHJsK1A8L3NwYW4+PC9hPjwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPWNvbC1hdXRvPjxidXR0b24gbmctY2xpY2s9XCJzaG93TW9kYWwoXFwnc2F2ZVxcJylcIiBuZy1kaXNhYmxlZD1zYXZpbmdGb3JtIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc3VjY2VzcyBtci0yXCI+PGkgY2xhc3M9XCJmYSBmYS1zYXZlIG1yLTFcIj48L2k+IDxzcGFuPlNhdmUgY2hhbmdlczwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Zvcm0+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTFcIj48ZGl2IGlkPXJlc291cmNlVG9vbGJveCBjbGFzcz1cImNvbC1sZy00IHBsLTAgcHItMlwiIG5nLWNsYXNzPVwie1xcJ21heC1oZWlnaHQtMS1yZW0gdmlzaWJpbGl0eS1oaWRkZW5cXCc6Z3NydmMuZ2V0Rm9ybVZpZXdUeXBlKCkhPTF9XCI+PGRpdiBrdC10b29sYm94IGNsYXNzPVwicHgtMSBzdGlja3kgZGF0YXNldC1mb3JtLXByb3BzLXBvc1wiIG5nLXN0eWxlPWdzcnZjLmdldFRvcEZvclN0aWNreSg1KT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIHAtMFwiIHN0eWxlPW1pbi13aWR0aDowIG5nLWNsYXNzPVwie1xcJ2NvbFxcJzpyZXNvdXJjZS5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSxcXCdidWlsZC1tb2RlXFwnOnJlc291cmNlLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xIHx8IHJlc291cmNlLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0zIHx8IHJlc291cmNlLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT00LFxcJ2NvbC1sZy0yNFxcJzpyZXNvdXJjZS5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MiB8fCByZXNvdXJjZS5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MyB8fCByZXNvdXJjZS5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09NH1cIj48ZGl2IGNsYXNzPVwiY2FyZCBwLTBcIj48ZGl2IGt0LWdyaWQgcmVzb3VyY2UtZm9ybS1sb2FkZWQ9Zm9ybUxvYWRlZCBncmlkLXR5cGU9Z3JpZHN0ZXJUeXBlIHJlc291cmNlLWRlZmluaXRpb249cmVzb3VyY2VEZWYgZm9ybS1wYXJhbXM9cmVzb3VyY2UuZm9ybVBhcmFtcyBwYXJlbnQ9ZGFzaGJvYXJkLndpZGdldHMgYWxsLWNvbHVtbnM9ZGFzaGJvYXJkLndpZGdldHMgaXMtZGVmaW5pdGlvbj10cnVlIGNsYXNzPWt0R3JpZD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicHJvcGVydGllc0NvbnRhaW5lciBweC0wIHB0LTJcIiBuZy1zdHlsZT1wcm9wZXJ0aWVzVG9wIG5nLWNsYXNzPVwie1xcJ2RhdGFzZXQtZm9ybS1wcm9wcy1wb3MgYm9yZGVyLTAgc3RpY2t5XFwnOmxvY2FsVmFycy5Qcm9wZXJ0aWVzU2l6ZSA9PVxcJ3N0YW5kYXJkXFwnLFxcJ3Byb3BlcnRpZXMtZXh0ZW5kZWRcXCc6bG9jYWxWYXJzLlByb3BlcnRpZXNTaXplID09XFwnbGFyZ2VcXCcgJiYgc2hvd0ZpZWxkUHJvcGVydGllcyxcXCdjb2wtbGctNVxcJzpzaG93RmllbGRQcm9wZXJ0aWVzICYmIGxvY2FsVmFycy5Qcm9wZXJ0aWVzU2l6ZSAhPT1cXCdsYXJnZVxcJyxcXCdcXCc6IXNob3dGaWVsZFByb3BlcnRpZXN9XCIgbmctaWY9XCJyZXNvdXJjZS5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MVwiPjxkaXYgY2xhc3M9cHgtMT48ZGl2IGNsYXNzPVwiY2FyZCBtLTBcIiBuZy1pZj1zaG93RmllbGRQcm9wZXJ0aWVzPjxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBiZy1saWdodCBwLTBcIj48YnV0dG9uIHR5cGU9YnV0dG9uIHRpdGxlPVwiRXh0ZW5kIHByb3BlcnRpZXNcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHAtMCBwbC0xIHByLTEgbXItMlwiIG5nLWNsaWNrPWxvY2FsVmFycy5DaGFuZ2VQcm9wZXJ0aWVzU2l6ZSgpPjxzbWFsbD48c3BhbiBjbGFzcz1cImZhIGZhLWFycm93LWxlZnRcIiBuZy1jbGFzcz1cIntcXCdmYSBmYS1hcnJvdy1sZWZ0XFwnOmxvY2FsVmFycy5Qcm9wZXJ0aWVzU2l6ZSA9PVxcJ3N0YW5kYXJkXFwnLFxcJ2ZhIGZhLWFycm93LXJpZ2h0XFwnOmxvY2FsVmFycy5Qcm9wZXJ0aWVzU2l6ZSA9PVxcJ2xhcmdlXFwnfVwiPjwvc3Bhbj48L3NtYWxsPjwvYnV0dG9uPiA8c3BhbiBjbGFzcz1cIm1sLTIgbGFiZWwteHMgYm9sZFwiPlByb3BlcnRpZXM8L3NwYW4+IDxidXR0b24gdHlwZT1idXR0b24gdGl0bGU9XCJDbG9zZSBwcm9wZXJ0aWVzXCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBwLTAgcGwtMSBwci0xIGZsb2F0LXJpZ2h0XCIgbmctY2xpY2s9c2hvd0hpZGVQcm9wZXJ0aWVzKGZhbHNlKT48c21hbGw+PHNwYW4gY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvc3Bhbj48L3NtYWxsPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9c2hvd0ZpZWxkUHJvcGVydGllcyBrdC1mb3JtLWVsZW1lbnQtcHJvcGVydGllcyBsb2NhbC12YXJzPWxvY2FsVmFycyBmZD1zZWxlY3RlZEZpZWxkIHJlc291cmNlLWRlZmluaXRpb249cmVzb3VyY2U+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm1vZGFsIGZhZGUgYmQtZXhhbXBsZS1tb2RhbC1sZ1wiIGlkPWRhdGFzZXREZXBsb3kgdGFiaW5kZXg9LTEgcm9sZT1kaWFsb2cgYXJpYS1sYWJlbGxlZGJ5PWRhdGFzZXREZXBsb3kgYXJpYS1oaWRkZW49dHJ1ZT48ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLXhsXCIgcm9sZT1kb2N1bWVudD48ZGl2IGNsYXNzPW1vZGFsLWNvbnRlbnQ+PGRpdiBjbGFzcz1tb2RhbC1oZWFkZXI+PHNwYW4gY2xhc3M9XCJmYSBmYS1sZyBmYS1kYXRhYmFzZSBtLTJcIj48L3NwYW4+PGg1IGNsYXNzPW1vZGFsLXRpdGxlIGlkPWV4YW1wbGVNb2RhbExvbmdUaXRsZT5EZXBsb3kgY2hhbmdlcyB0byBkYXRhYmFzZTwvaDU+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1jbG9zZSBkYXRhLWRpc21pc3M9bW9kYWwgYXJpYS1sYWJlbD1DbG9zZT48c3BhbiBhcmlhLWhpZGRlbj10cnVlPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1tb2RhbC1ib2R5PjxkaXYgbmctaWY9ZGF0YXNldERlcGxveS5sZW5ndGggY2xhc3M9cC0xPjxkaXYgbmctcmVwZWF0PVwiZWxlbWVudCBpbiBkYXRhc2V0RGVwbG95IHRyYWNrIGJ5IGVsZW1lbnQuaWRcIj48ZGl2IG5nLWlmPVwiJGluZGV4PT0wXCIgY2xhc3M9XCJyb3cgbS0wIGZudDcgYm9sZCB0ZXh0LWNlbnRlclwiPjxkaXYgY2xhc3M9XCJjb2wtMSBtLTEgYmctcHJpbWFyeVwiPjxzcGFuIGNsYXNzPXRleHQtd2hpdGU+SUQ8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0zIG0tMSBiZy1wcmltYXJ5XCI+PHNwYW4gY2xhc3M9dGV4dC13aGl0ZT5GaWVsZCBuYW1lPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMyBtLTEgYmctcHJpbWFyeVwiPjxzcGFuIGNsYXNzPXRleHQtd2hpdGU+RmllbGQgdHlwZTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTIgbS0xIGJnLXByaW1hcnlcIj48c3BhbiBjbGFzcz10ZXh0LXdoaXRlPlRhYmxlIGNvbHVtbjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTEgbS0xIGJnLXByaW1hcnlcIj48c3BhbiBjbGFzcz10ZXh0LXdoaXRlPk1heCBsZW48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0yIG0tMSBiZy1wcmltYXJ5XCI+PHNwYW4gY2xhc3M9dGV4dC13aGl0ZT5SZXF1aXJlZDwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTIgbS0xIGJnLXByaW1hcnlcIj48c3BhbiBjbGFzcz10ZXh0LXdoaXRlPkRlcGxveWVkPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMiBtLTEgYmctcHJpbWFyeVwiPjxzcGFuIGNsYXNzPXRleHQtd2hpdGU+U3RhdHVzPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMiBtLTEgYmctcHJpbWFyeVwiPjxzcGFuIGNsYXNzPXRleHQtd2hpdGU+QWN0aW9uPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMiBtLTEgYmctcHJpbWFyeVwiPjxzcGFuIGNsYXNzPXRleHQtd2hpdGU+VmVyc2lvbjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTIgbS0xIGJnLXByaW1hcnlcIj48c3BhbiBjbGFzcz10ZXh0LXdoaXRlPkRlcGxveWVkIHZlcnNpb248L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTAgaXRlbSBzbWFsbFwiPjxkaXYgY2xhc3M9XCJjb2wtMSBtLTEgYmctcHJpbWFyeS1saWdodFwiPjxzcGFuPnt7ZWxlbWVudC5pZH19PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMyBtLTFcIj48c3Bhbj57e2VsZW1lbnQubGFiZWx9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTMgbS0xXCI+PHNwYW4+e3tlbGVtZW50LmRidHlwZX19PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMiBtLTFcIj48c3Bhbj57e2VsZW1lbnQuZmllbGR9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTEgbS0xXCI+PHNwYW4+e3tlbGVtZW50Lm1heExlbmd0aH19PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMiBtLTEgdGV4dC1jZW50ZXJcIj48ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLWNoZWNrYm94XCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmctZGlzYWJsZWQ9dHJ1ZSBjbGFzcz1jdXN0b20tY29udHJvbC1pbnB1dCBpZD1jYlJlcXVpcmVke3tlbGVtZW50LmlkfX0gbmctbW9kZWw9ZWxlbWVudC5yZXF1aXJlZD4gPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgbGFiZWwteHNcIiBmb3I9Y2JSZXF1aXJlZHt7ZWxlbWVudC5pZH19PjwvbGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0yIG0tMSB0ZXh0LWNlbnRlclwiPjxkaXYgY2xhc3M9XCJjdXN0b20tY29udHJvbCBjdXN0b20tY2hlY2tib3hcIj48aW5wdXQgdHlwZT1jaGVja2JveCBuZy1kaXNhYmxlZD10cnVlIGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IGlkPWNiRGVwbG95ZWR7e2VsZW1lbnQuaWR9fSBuZy1tb2RlbD1lbGVtZW50LmRlcGxveWVkPiA8bGFiZWwgY2xhc3M9XCJjdXN0b20tY29udHJvbC1sYWJlbCBsYWJlbC14c1wiIGZvcj1jYkRlcGxveWVke3tlbGVtZW50LmlkfX0+PC9sYWJlbD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTIgbS0xXCI+PHNwYW4+e3tlbGVtZW50LnN0YXR1c319PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMiBtLTFcIiBuZy1jbGFzcz1cIntcXCdiZy1kYW5nZXItbGlnaHQgYm9sZFxcJzplbGVtZW50LmRlcGxveUFjdGlvbiE9XFwnTlxcJ31cIj48c3Bhbj57e2dldERlcGxveUFjdGlvbihlbGVtZW50LmRlcGxveUFjdGlvbil9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTIgbS0xXCI+PHNwYW4+e3tlbGVtZW50LnZlcnNpb259fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTIgbS0xXCI+PHNwYW4+e3tlbGVtZW50LmRlcGxveWVkVmVyc2lvbn19PC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJoNSB0ZXh0LWNlbnRlclwiIG5nLWlmPSFkYXRhc2V0RGVwbG95Lmxlbmd0aD5Ob3RoaW5nIHRvIGRlcGxveSAhPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+PGRpdiBuZy1pZj1kYXRhc2V0RGVwbG95Lmxlbmd0aD48ZGl2IGNsYXNzPW15LTI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIG5nLWNsaWNrPXN5bmNkYigpPjxzcGFuIGNsYXNzPVwiZmEgZmEtZGF0YWJhc2UgbXItMVwiPjwvc3Bhbj5EZXBsb3k8L2J1dHRvbj4gPGJ1dHRvbiBuZy1jbGljaz1jbG9zZURhdGFzZXREZXBsb3koZm9ybWEuJHZhbGlkKSB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCI+Tm90IG5vdzwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9IWRhdGFzZXREZXBsb3kubGVuZ3RoPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saW5rIHRleHQtbXV0ZWQgbWwtYXV0b1wiIGRhdGEtZGlzbWlzcz1tb2RhbCBhcmlhLWxhYmVsPUNsb3NlPkNsb3NlPC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGZvcm0gbmctc3VibWl0PXNhdmVfcmVzb3VyY2UoZm9ybS4kdmFsaWQpIG5hbWU9Zm9ybU1vZGFsIGNsYXNzPVwibW9kYWwgZmFkZSBiZC1leGFtcGxlLW1vZGFsLWxnXCIgaWQ9ZGF0YXNldFB1Ymxpc2ggdGFiaW5kZXg9LTEgcm9sZT1kaWFsb2cgYXJpYS1sYWJlbGxlZGJ5PWRhdGFzZXRQdWJsaXNoIGFyaWEtaGlkZGVuPXRydWU+PGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC14bFwiIHJvbGU9ZG9jdW1lbnQ+PGRpdiBjbGFzcz1tb2RhbC1jb250ZW50PjxkaXYgY2xhc3M9bW9kYWwtaGVhZGVyPjxzcGFuIGNsYXNzPVwiZmEgZmEtbGcgZmEtZGF0YWJhc2UgbS0yXCI+PC9zcGFuPjxoNSBjbGFzcz1tb2RhbC10aXRsZSBpZD1leGFtcGxlTW9kYWxMb25nVGl0bGU+e3tyZXNvdXJjZS5SZXNvdXJjZU5hbWV9fSA8Yj57e3Jlc291cmNlLk5hbWV9fTwvYj48L2g1PjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9Y2xvc2UgZGF0YS1kaXNtaXNzPW1vZGFsIGFyaWEtbGFiZWw9Q2xvc2U+PHNwYW4gYXJpYS1oaWRkZW49dHJ1ZT4mdGltZXM7PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wIG1vZGFsLWJvZHlcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTggcC0wXCI+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiBmb3JtTW9kYWwuSWQuJHRvdWNoZWQgJiYgZm9ybU1vZGFsLklkLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTI0IGZvcj1JZD5JZDwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1yZXNvdXJjZS5pZCBuZy1kaXNhYmxlZD10cnVlIG5nLXJlcXVpcmVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPUlkIG5hbWU9SWQgcGxhY2Vob2xkZXI9SWQ+PHAgbmctc2hvdz1cImZvcm1Nb2RhbC5JZC4kdG91Y2hlZCAmJiBmb3JtTW9kYWwuSWQuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIHJlc291cmNlIElkPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogZm9ybU1vZGFsLlZlcnNpb24uJHRvdWNoZWQgJiYgZm9ybU1vZGFsLlZlcnNpb24uJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtbGctMjQgZm9yPVZlcnNpb24+VmVyc2lvbjwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PGlucHV0IHR5cGU9dGV4dCBuZy1kaXNhYmxlZD10cnVlIG5nLW1vZGVsPW5ld1B1Ymxpc2hWZXJzaW9uIG5nLXJlcXVpcmVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPVZlcnNpb24gbmFtZT1WZXJzaW9uIHBsYWNlaG9sZGVyPVwiUmVzb3VyY2UgVmVyc2lvblwiPjxwIG5nLXNob3c9XCIoZm9ybU1vZGFsLlZlcnNpb24uJHRvdWNoZWQpICYmIGZvcm1Nb2RhbC5WZXJzaW9uLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5FbnRlciByZXNvdXJjZSBWZXJzaW9uPC9wPjwvZGl2PjwvZGl2PjxkaXY+PGRpdiBjbGFzcz1tLTI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cIm1vZGFsQWN0aW9uPT1cXCdzYXZlXFwnXCIgY2xhc3M9XCJjb2wtbGctMTYgcC0wXCI+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlclxcJyA6IGZvcm1Nb2RhbC5EZXNjcmlwdGlvbi4kdG91Y2hlZCAmJiBmb3JtTW9kYWwuRGVzY3JpcHRpb24uJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtbGctMjQgZm9yPURlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1sZy0yND48dGV4dGFyZWEgbmctbW9kZWw9bG9jYWxWYXJzLm5ld0Rlc2NyaXB0aW9uIG5hbWU9RGVzY3JpcHRpb24gbmctcmVxdWlyZWQ9dHJ1ZSBuZy1taW4tbGVuZ3RoPTEwIG5nLWNsYXNzPVwieyBcXCdib3JkZXItZGFuZ2VyXFwnIDogZm9ybU1vZGFsLkRlc2NyaXB0aW9uLiR0b3VjaGVkICYmIGZvcm1Nb2RhbC5EZXNjcmlwdGlvbi4kaW52YWxpZCB9XCIgY2xhc3M9Zm9ybS1jb250cm9sPjwvdGV4dGFyZWE+PHAgbmctc2hvdz1cIiggZm9ybU1vZGFsLkRlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtTW9kYWwuRGVzY3JpcHRpb24uJGludmFsaWRcIiBjbGFzcz1cInNtYWxsIHRleHQtZGFuZ2VyXCI+RW50ZXIgcmVzb3VyY2UgZGVzY3JpcHRpb24gKG1pbiAxMCBjaGFycyk8L3A+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIkRFUExPWSB3LTEwMFwiPjxkaXYgY2xhc3M9XCJib3JkZXItdG9wIGJvcmRlci1ib3R0b20gbS0zXCI+PGRpdiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIiBjbGFzcz1cInAtMSByb3cgbXgtMVwiIG5nLWNsaWNrPVwiaXNDb2xsYXBzZWRWZXJIaXN0b3J5ID0gIWlzQ29sbGFwc2VkVmVySGlzdG9yeVwiPjxzcGFuIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBwLTFcIj48c3BhbiBuZy1jbGFzcz1cIntcXCdmYXMgZmEtY2hldnJvbi1kb3duXFwnOiAhaXNDb2xsYXBzZWRWZXJIaXN0b3J5LFxcJ2ZhcyBmYS1jaGV2cm9uLXJpZ2h0XFwnOiBpc0NvbGxhcHNlZFZlckhpc3RvcnkgfVwiPjwvc3Bhbj48L3NwYW4+IDxzcGFuIGNsYXNzPXRhZz5WRVJTSU9OIEhJU1RPUlk8L3NwYW4+PC9kaXY+PGRpdiB1aWItY29sbGFwc2U9aXNDb2xsYXBzZWRWZXJIaXN0b3J5PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcC0wXCI+PGRpdiBuZy1pZj1sb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VzLmxlbmd0aCBjbGFzcz1wLTE+PGRpdiBuZy1yZXBlYXQ9XCJlbGVtZW50IGluIGxvY2FsVmFycy5wdWJsaXNoZWRSZXNvdXJjZXMgdHJhY2sgYnkgZWxlbWVudC5pZFwiPjxkaXYgbmctaWY9XCIkaW5kZXg9PTBcIiBjbGFzcz1cInJvdyBtLTAgYm9sZCB0ZXh0LWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+PGRpdiBjbGFzcz1cImNvbC1sZy00IG15LTEgYm9yZGVyLWJvdHRvbVwiPjxzcGFuIGNsYXNzPVwiXCI+UHVibGlzaCBpZDwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTQgbXktMSBib3JkZXItYm90dG9tXCI+PHNwYW4gY2xhc3M+VmVyc2lvbjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTEwIG15LTEgYm9yZGVyLWJvdHRvbVwiPjxzcGFuIGNsYXNzPkRlc2NyaXB0aW9uPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wIGl0ZW0gdGV4dC1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPjxkaXYgY2xhc3M9XCJjb2wtbGctNCBteS0xXCI+PHNwYW4+e3tlbGVtZW50LmlkfX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy00IG15LTFcIj48c3Bhbj57e2VsZW1lbnQuVmVyc2lvbn19PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMTAgbXktMVwiPjxzcGFuPnt7ZWxlbWVudC5EZXNjcmlwdGlvbn19PC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJyZXNvdXJjZS5SZXNvdXJjZVN1YlR5cGU9PVxcJ3N0YW5kYXJkXFwnICYmIGRhdGFzZXREZXBsb3kubGVuZ3RoICYmIG1vZGFsQWN0aW9uPT1cXCdwdWJsaXNoXFwnXCIgY2xhc3M9XCJoNSBib2xkIHRleHQtY2VudGVyIHAtM1wiPlBlbmRpbmcgZGF0YWJhc2UgY2hhbmdlczwvZGl2PjxkaXYgbmctaWY9XCJkYXRhc2V0RGVwbG95Lmxlbmd0aCAmJiBtb2RhbEFjdGlvbj09XFwncHVibGlzaFxcJ1wiIGNsYXNzPXAtMT48ZGl2IGt0LWJhc2ljLXRhYmxlIGNvbHVtbnM9ZGF0YXNldERlcGxveUNvbHMgZGF0YT1kYXRhc2V0RGVwbG95IG1hcHBpbmc9ZGVwbG95QWN0aW9uTWFwcGluZ3M+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cInJlc291cmNlLlJlc291cmNlU3ViVHlwZT09XFwnc3RhbmRhcmRcXCcgJiYgIWRhdGFzZXREZXBsb3kubGVuZ3RoICYmIG1vZGFsQWN0aW9uPT1cXCdwdWJsaXNoXFwnXCIgY2xhc3M9XCJoNSBwdC00IHRleHQtY2VudGVyXCI+Tm8gcGVuZGluZyBjaGFuZ2VzIHRvIGRhdGFiYXNlIGRldGVjdGVkITwvZGl2PjxkaXYgbmctaWY9XCJyZXNvdXJjZS5SZXNvdXJjZVN1YlR5cGU9PVxcJ3N0YW5kYXJkXFwnICYmICFkYXRhc2V0RGVwbG95Lmxlbmd0aCAmJiBtb2RhbEFjdGlvbj09XFwndmVyc2lvblxcJ1wiIGNsYXNzPVwiaDUgdGV4dC1jZW50ZXJcIj5WZXJzaW9uIHt7cmVzb3VyY2UuVmVyc2lvbn19IHdpbGwgYmUgZmluYWxpc2VkIGFuZCBsb2NrZWQgZm9yIGNoYW5nZXMhPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm0tMiB0ZXh0LWNlbnRlciBjb2wtMjRcIj48YnV0dG9uIG5nLWlmPVwicmVzb3VyY2UuUmVzb3VyY2VTdWJUeXBlPT1cXCdzdGFuZGFyZFxcJyAmJiBtb2RhbEFjdGlvbj09XFwncHVibGlzaFxcJyAmJiBkYXRhc2V0RGVwbG95Lmxlbmd0aD4wXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIiB0eXBlPXN1Ym1pdD48aSBuZy1pZj0hcHVibGlzaGluZ0Zvcm0gY2xhc3M9XCJmYSBmYS1kYXRhYmFzZSBtci0xXCI+PC9pPiA8aSBuZy1pZj1wdWJsaXNoaW5nRm9ybSBjbGFzcz1cImZhcyBmYS1zcGlubmVyIGZhLXNwaW4gbXItMVwiPjwvaT4gPHNwYW4gbmctaWY9cHVibGlzaGluZ0Zvcm0+RGVwbG95aW5nLi4uPC9zcGFuPiA8c3BhbiBuZy1pZj0hcHVibGlzaGluZ0Zvcm0+RGVwbG95PC9zcGFuPjwvYnV0dG9uPiA8YnV0dG9uIG5nLWlmPVwibW9kYWxBY3Rpb249PVxcJ3NhdmVcXCdcIiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBidG4tbGdcIiB0eXBlPXN1Ym1pdD48aSBuZy1pZj1zYXZpbmdGb3JtIGNsYXNzPVwiZmFzIGZhLXNwaW5uZXIgZmEtc3BpbiBtci0xXCI+PC9pPiA8c3BhbiBuZy1pZj1zYXZpbmdGb3JtPlNhdmluZy4uLjwvc3Bhbj4gPGkgbmctaWY9IXNhdmluZ0Zvcm0gY2xhc3M9XCJmYSBmYS1uZXdzcGFwZXItbyBtci0xXCI+PC9pPiA8c3BhbiBuZy1pZj0hc2F2aW5nRm9ybT5TYXZlIGZvcm08L3NwYW4+PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gbmctaWY9XCJtb2RhbEFjdGlvbj09XFwndmVyc2lvblxcJyAmJiByZXNvdXJjZS5WZXJzaW9uPT1yZXNvdXJjZS5OZXdWZXJzaW9uXCIgbmctY2xpY2s9bmV3VmVyc2lvbigpIG5nLWRpc2FibGVkPWNyZWF0aW5nTmV3VmVyc2lvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWluZm8gbXItMlwiPjxpIG5nLWlmPSFjcmVhdGluZ05ld1ZlcnNpb24gY2xhc3M9XCJmYSBmYS1jb2RlLWJyYW5jaCBtci0xXCI+PC9pPiA8aSBuZy1pZj1jcmVhdGluZ05ld1ZlcnNpb24gY2xhc3M9XCJmYXMgZmEtc3Bpbm5lciBmYS1zcGluIG1yLTFcIj48L2k+IDxzcGFuIG5nLWlmPWNyZWF0aW5nTmV3VmVyc2lvbj5GaW5hbGlzaW5nIHZlcnNpb24ge3tyZXNvdXJjZS5WZXJzaW9ufX0uLi48L3NwYW4+IDxzcGFuIG5nLWlmPSFjcmVhdGluZ05ld1ZlcnNpb24+RmluYWxpc2UgdmVyc2lvbiB7e3Jlc291cmNlLlZlcnNpb259fTwvc3Bhbj48L2J1dHRvbj48ZGl2IGNsYXNzPVwiaDYgdGV4dC1jZW50ZXIgdGV4dC1zdWNjZXNzXCIgbmctaWY9XCJyZXNvdXJjZS5WZXJzaW9uIT1yZXNvdXJjZS5OZXdWZXJzaW9uICYmIG1vZGFsQWN0aW9uPT1cXCd2ZXJzaW9uXFwnXCI+PGkgY2xhc3M9XCJmYSBmYS1jaGVjay1jaXJjbGUgbXItMlwiPjwvaT5WZXJzaW9uIHt7cmVzb3VyY2UuTmV3VmVyc2lvbn19LiBjcmVhdGVkIHN1Y2Nlc3NmdWx5ITwvZGl2PjxkaXYgY2xhc3M9XCJoNSB0ZXh0LWNlbnRlclwiIG5nLWlmPWZhbHNlPlZlcnNpb24ge3tyZXNvdXJjZS5OZXdWZXJzaW9ufX0uIGFscmVhZHkgcHVibGlzaGVkICEgbmctaWY9XCJyZXNvdXJjZS5QdWJsaXNoZWQgPT0gdHJ1ZSAmJiBtb2RhbEFjdGlvbj09XFwncHVibGlzaGVkXFwnXCIgbmctaWY9XCIhZGF0YXNldERlcGxveS5sZW5ndGhcIjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9ybT4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDNfcmVzb3VyY2VzL2FuZ3VsYXJUZW1wbGF0ZXMvaW1wb3J0RGF0YS5odG1sJywnPGRpdiBjbGFzcz1cImNhcmQgbXQtMVwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlua1wiIHVpLXNyZWY9XCJhcHAubmF2YmFyLnJlc291cmNlcy5kYXRhKHtpZDogcmVzb3VyY2VJZH0pXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1hcnJvdy1jaXJjbGUtbGVmdFwiPjwvc3Bhbj4gQmFjayB0byBsaXN0IG9mIGRhdGFzZXQgcmVjb3JkczwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC0yNCB0ZXh0LWNlbnRlciBib3JkZXItYm90dG9tXCI+PGg0PkltcG9ydCBEYXRhPC9oND48L2Rpdj48L2Rpdj48ZGl2IGlkPWNvbnRlbnRHcmlkIGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9Y29sLTI0PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1mb3JtPXVwbG9hZGVyRm9ybT48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9Y29sLTI0PjxoND5TZWxlY3QgbWFwcGluZzwvaDQ+PC9kaXY+PGRpdiBuZy1pZj1zaG93R3JpZCBjbGFzcz1jb2wtMjQ+PGRpdiBpZD1tYXBwaW5nZ3JpZCB1aS1ncmlkPWdyaWRPcHRpb25zIHVpLWdyaWQtc2VsZWN0aW9uIHVpLWdyaWQtcmVzaXplLWNvbHVtbnMgY2xhc3M9XCJteUdyaWQgYm9yZGVyXCI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQgbS0yIHAtM1wiPjxkaXYgY2xhc3Mgbmctc2hvdz1cIiFmZC5yZWFkT25seSAmJiBpc1NlbGVjdGVkXCI+PGlucHV0IHR5cGU9ZmlsZSBuYW1lPWltcG9ydGZpbGUgY2xhc3M9ZmlsZUVsZW1lbnQgbmctbW9kZWw9ZmlsZXM+PC9kaXY+PGRpdiBuZy1yZXBlYXQ9XCJmaWxlIGluIGZpbGVzXCIgaW5kZXg9JGluZGV4IGNsYXNzPW10LTE+PGhyPjxkaXYgY2xhc3M9cm93PjxkaXYgY2xhc3M9Y29sLTg+PHNwYW4+e3skaW5kZXgrMX19LiB7e2ZpbGUubmFtZX19PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Y29sLTY+PHByb2dyZXNzIHN0eWxlPXdpZHRoOjEwMCUgdmFsdWU9e3tmaWxlLmxvYWRlZH19IG1heD17e2ZpbGUuc2l6ZX19PjwvcHJvZ3Jlc3M+PC9kaXY+PGRpdiBjbGFzcz1jb2wtMz48c3Bhbj5TaXplOiAoe3sgKGZpbGUuc2l6ZS8xMDAwKS50b0ZpeGVkKDIpIH19IGtiKTwvc3Bhbj4gPGkgbmctc2hvdz1cImZpbGUudXBsb2FkU3VjY2VzcyB8fCBmaWxlLnVwbG9hZEVycm9yXCIgdGl0bGU9XCJGaWxlIHVwbG9hZFwiIGNsYXNzPVwiZmEgZmEtdXBsb2FkIGZhLWxnXCI+PC9pPiA8aSBuZy1zaG93PWZpbGUudXBsb2FkU3VjY2VzcyB0aXRsZT1TdWNjZXNzIGNsYXNzPVwiZmEgZmEtY2hlY2stc3F1YXJlIGZhLWxnXCIgc3R5bGU9Y29sb3I6Z3JlZW4+PC9pPiA8aSBuZy1zaG93PWZpbGUudXBsb2FkRXJyb3IgdGl0bGU9RXJyb3IgY2xhc3M9XCJmYSBmYS10aW1lcy1jaXJjbGUgZmEtbGdcIiBzdHlsZT1jb2xvcjpyZWQ+PC9pPiA8YSBuZy1zaG93PWZpbGUubWV0YVN1Y2Nlc3MgbmctY2xpY2s9b3Blbk1vZGFsRmlsZU1ldGFkYXRhKCRpbmRleCkgaHJlZj48aSBuZy1zaG93PVwiKGZpbGUubWV0YVN1Y2Nlc3MgfHwgZmlsZS5tZXRhRXJyb3IpICYmICFmaWxlLm5vTWV0YVwiIHRpdGxlPVwiRmlsZSBtZXRhZGF0YSB1cGxvYWRcIiBjbGFzcz1cImZhIGZhLWxpc3QtYWx0IGZhLWxnXCI+PC9pPjwvYT4gPGkgbmctc2hvdz1cImZpbGUubWV0YVN1Y2Nlc3MgJiYgIWZpbGUubm9NZXRhXCIgdGl0bGU9U3VjY2VzcyBjbGFzcz1cImZhIGZhLWNoZWNrLXNxdWFyZSBmYS1sZ1wiIHN0eWxlPWNvbG9yOmdyZWVuPjwvaT4gPGkgbmctc2hvdz1maWxlLm1ldGFFcnJvciB0aXRsZT1FcnJvciBjbGFzcz1cImZhIGZhLXRpbWVzLWNpcmNsZSBmYS1sZ1wiIHN0eWxlPWNvbG9yOnJlZD48L2k+IDxzcGFuIG5nLWhpZGU9ZmlsZS51cGxvYWRTdWNjZXNzPnt7ZmlsZS5zdGF0dXN9fTwvc3Bhbj4gPHNwYW4gbmctaGlkZT1maWxlLm1ldGFTdWNjZXNzPnt7ZmlsZS5tZXRhU3RhdHVzfX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1jb2wgbmctaGlkZT1maWxlLnVwbG9hZFN1Y2Nlc3M+PGEgaHJlZiBzdHlsZT1kaXNwbGF5OmlubGluZS1ibG9jayBuZy1jbGljaz1cInNob3dGaWxlTWV0YURhdGE9IXNob3dGaWxlTWV0YURhdGFcIj48aSBuZy1zaG93PXNob3dGaWxlTWV0YURhdGEgY2xhc3M9XCJmYSBmYS1saXN0LWFsdCBmYS1sZ1wiPjwvaT48L2E+IDxhIG5nLWNsaWNrPWJ0bl9yZW1vdmUoJGluZGV4LGZpbGUpIGhyZWYgY2xhc3MgdGl0bGU9XCJSZW1vdmUgZnJvbSBsaXN0IHRvIGJlIHVwbG9hZGVkXCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lcyBmYS1sZ1wiPiZuYnNwPC9pPjwvYT48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wtMjQgbXktMlwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeVwiIG5nLWRpc2FibGVkPWlzU2F2aW5nIG5nLWlmPSFmZC5yZWFkT25seSBuZy1jbGljaz1idG5fdXBsb2FkKCk+VXBsb2FkPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeVwiIG5nLWNsaWNrPWltcG9ydFRlc3QoKT5UZXN0IGltcG9ydDwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhbmdlciBmbG9hdC1yaWdodFwiIG5nLWlmPSFmZC5yZWFkT25seSBuZy1jbGljaz1idG5fY2xlYW4oKT5SZW1vdmUgYWxsPC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAzX3Jlc291cmNlcy9hbmd1bGFyVGVtcGxhdGVzL2ludGVncmF0aW9uRGVmaW5pdGlvbi5odG1sJywnPGRpdiBjbGFzcz1cIm0tMSBtdC0yIHAtMVwiPjxkaXYgY2xhc3M9XCJjYXJkIHAtMiBtdC0xXCI+PGRpdiBjbGFzcz1cImg0IHAtMSBib3JkZXItYm90dG9tIHRleHQtY2VudGVyIG15LWF1dG9cIj57e3Jlc291cmNlLk5hbWV9fTwvZGl2PjxkaXYgY2xhc3M9XCJwLTEgbWItMlwiIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlO1wiPjxhIGNsYXNzPVwibWItMiB0ZXh0LXByaW1hcnlcIiBocmVmIHRpdGxlPVwiUmV0dXJuIHRvIHBhZ2VzIGxpc3RcIiBuZy1jbGljaz1yZXR1cm5Ub1ByZXZpb3VzUGFnZSgpPjxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tbGVmdCBtci0yXCI+PC9pPlJldHVybiB0byByZXNvdXJjZXM8L2E+PC9kaXY+PGRpdiBjbGFzcz1cInAtMiBtdC0yXCI+PGRpdiBjbGFzcz1ib3JkZXItYm90dG9tPjxhIGhyZWYgdGl0bGU9XCJTaG93IHBhcmFtc1wiIG5nLWNsYXNzPVwie1xcJ3RhYi1pdGVtLXNlbGVjdGVkXFwnOnNlbGVjdGVkVGFiPT0xLFxcJ3RhYi1pdGVtXFwnOnNlbGVjdGVkVGFiIT0xfVwiIG5nLWNsaWNrPVwic2VsZWN0ZWRUYWI9MVwiPkludGVncmF0aW9uIGRlZmluaXRpb248L2E+IDxhIGhyZWYgdGl0bGU9XCJFZGl0IGludGVncmF0aW9uIGRldGFpbHNcIiBuZy1jbGFzcz1cIntcXCd0YWItaXRlbS1zZWxlY3RlZFxcJzpzZWxlY3RlZFRhYj09MixcXCd0YWItaXRlbVxcJzpzZWxlY3RlZFRhYiE9Mn1cIiBuZy1jbGljaz1cInNlbGVjdGVkVGFiPTJcIj5JbnRlZ3JhdGlvbiBpbmZvPC9hPiA8YSBocmVmIHRpdGxlPVwiU2hvdyBwYXJhbXNcIiBuZy1jbGFzcz1cIntcXCd0YWItaXRlbS1zZWxlY3RlZFxcJzpzZWxlY3RlZFRhYj09MyxcXCd0YWItaXRlbVxcJzpzZWxlY3RlZFRhYiE9M31cIiBuZy1jbGljaz1cInNlbGVjdGVkVGFiPTNcIj5TZWN1cml0eSAmIHBlcm1pc3Npb25zPC9hPjwvZGl2PjxkaXYgc3R5bGU9XCJkaXNwbGF5OmdyaWQ7Z3JpZC1nYXA6IDIwcHggMjBweDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6YXV0b1wiPjxkaXYgbmctaWY9XCJzZWxlY3RlZFRhYj09MVwiIGNsYXNzPXAtMz48ZGl2IGNsYXNzPVwicGItMiB0ZXh0LXJpZ2h0XCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1zYXZlUmVzb3VyY2VEZWYodHJ1ZSkgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIj48c3BhbiBjbGFzcz1cImZhIGZhLXNhdmUgbXItMlwiPjwvc3Bhbj5TYXZlIGludGVncmF0aW9uPC9idXR0b24+PC9kaXY+PGRpdj48ZGl2IGNsYXNzPW15LTIgc3R5bGU9XCJkaXNwbGF5OmdyaWQ7Z3JpZC1nYXA6IDIwcHggMjBweDtncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gYXV0bztncmlkLXRlbXBsYXRlLWNvbHVtbnM6YXV0byBhdXRvXCI+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybTEuJHN1Ym1pdHRlZCB8fCBmb3JtMS5BcGkuJHRvdWNoZWQpICYmIGZvcm0uQXBpLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3MgZm9yPWFwaT5BUEkgZW5kcG9pbnQ8L2xhYmVsPjxkaXYgY2xhc3M+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1yZXNvdXJjZS5QYXJhbWV0ZXJzLkFQSUVuZHBvaW50IG5nLXJlcXVpcmVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPWFwaSBuYW1lPWFwaSBwbGFjZWhvbGRlcj1cIkFQSSBlbmRwb2ludFwiPjxwIG5nLXNob3c9XCIoZm9ybTEuJHN1Ym1pdHRlZCB8fCBmb3JtMS5BcGkuJHRvdWNoZWQpICYmIGZvcm0xLkFwaS4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIgQVBJIGVuZHBvaW50PC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0xLiRzdWJtaXR0ZWQgfHwgZm9ybTEuQVBJTWV0aG9kLiR0b3VjaGVkKSAmJiBmb3JtLkFQSU1ldGhvZC4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzIGZvcj1BUElNZXRob2Q+QVBJIG1ldGhvZDwvbGFiZWw+PGRpdiBjbGFzcz48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPXJlc291cmNlLlBhcmFtZXRlcnMuQVBJTWV0aG9kIG5nLXJlcXVpcmVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPWFwaU1ldGhvZCBuYW1lPWFwaU1ldGhvZCBwbGFjZWhvbGRlcj1cIkFQSSBtZXRob2QgKFBPU1QsIEdFVCwuLi4pXCI+PHAgbmctc2hvdz1cIihmb3JtMS4kc3VibWl0dGVkIHx8IGZvcm0xLkFQSU1ldGhvZC4kdG91Y2hlZCkgJiYgZm9ybTEuQVBJTWV0aG9kLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5FbnRlciBBUEkgbWV0aG9kIChQT1NULCBHRVQsLi4uKTwvcD48L2Rpdj48L2Rpdj48ZGl2IG5nLWZvcm09Zm9ybURhdGFzZXRTZWxlY3Q+PGxhYmVsIGNsYXNzPXRleHQtbXV0ZWQgZm9yPWRhdGFzZXRJZD5TZWxlY3QgZGF0YXNldDwvbGFiZWw+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLW1vZGVsPXJlc291cmNlLlBhcmFtZXRlcnMuZGF0YXNldCBuZy1pZj1yZXNvdXJjZXNMb2FkZWQgc2VsZWN0ZWQtaXRlbXM9cmVzb3VyY2UuUGFyYW1ldGVycy5kYXRhc2V0IGlzLW11bHRpcGxlPWZhbHNlIG5hbWU9ZGF0YXNldElkIG5nLXJlcXVpcmVkPXRydWUgZHJvcGRvd24taXRlbXM9cmVzb3VyY2VMaXN0IGRyb3Bkb3duLWlkPVwiXFwncmVzb3VyY2VMaXN0XFwnK3Jlc291cmNlLlBhcmFtZXRlcnMuZGF0YXNldC5pZFwiIHBhcmVudC1mb3JtLWlkPVwiXFwnZm9ybVJlc291cmNlXFwnK3Jlc291cmNlLlBhcmFtZXRlcnMuZGF0YXNldC5pZFwiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IGRhdGFzZXRcXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9XCJkaXNwbGF5OmdyaWQ7Z3JpZC1nYXA6IDEwcHggMTBweDtncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gYXV0bztncmlkLXRlbXBsYXRlLWNvbHVtbnM6MTAlIGF1dG9cIj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwic2VsZWN0ZWRUYWI9PTJcIiBjbGFzcz1wLTEgc3R5bGU9XCJkaXNwbGF5OmdyaWQ7Z3JpZC1nYXA6IDIwcHggMjBweDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MTAwJSAxMDAlXCI+PGZvcm0gbmctc3VibWl0PXNhdmVJbnRlZ3JhdGlvbkRlZihmb3JtMS4kdmFsaWQpIG5hbWU9Zm9ybTEgY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYgY2xhc3M9cm93PjxkaXYgY2xhc3M9Y29sLWxnLTEyPjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0xLiRzdWJtaXR0ZWQgfHwgZm9ybTEuTmFtZS4kdG91Y2hlZCkgJiYgZm9ybS5OYW1lLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3MgZm9yPXJlc291cmNlTmFtZT5OYW1lPC9sYWJlbD48ZGl2IGNsYXNzPjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9cmVzb3VyY2UuTmFtZSBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1OYW1lIG5hbWU9TmFtZSBwbGFjZWhvbGRlcj1cIlJlc291cmNlIG5hbWVcIj48cCBuZy1zaG93PVwiKGZvcm0xLiRzdWJtaXR0ZWQgfHwgZm9ybTEuTmFtZS4kdG91Y2hlZCkgJiYgZm9ybTEuTmFtZS4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIgcmVzb3VyY2UgbmFtZTwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtMS4kc3VibWl0dGVkIHx8IGZvcm0xLlN1YmplY3QuJHRvdWNoZWQpICYmIGZvcm0xLlN1YmplY3QuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcyBmb3I9U3ViamVjdD5TdWJqZWN0PC9sYWJlbD48ZGl2IGNsYXNzPjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9cmVzb3VyY2UuU3ViamVjdCBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1TdWJqZWN0IG5hbWU9U3ViamVjdCBwbGFjZWhvbGRlcj1cIlJlc291cmNlIHN1YmplY3RcIj48cCBuZy1zaG93PVwiKGZvcm0xLiRzdWJtaXR0ZWQgfHwgZm9ybTEuU3ViamVjdC4kdG91Y2hlZCkgJiYgZm9ybTEuU3ViamVjdC4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIgcmVzb3VyY2Ugc3ViamVjdDwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtMS4kc3VibWl0dGVkIHx8IGZvcm0xLkRlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtMS5EZXNjcmlwdGlvbi4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzIGZvcj1EZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvbGFiZWw+PGRpdiBjbGFzcz48dGV4dGFyZWEgbmctbW9kZWw9cmVzb3VyY2UuRGVzY3JpcHRpb24gbmFtZT1EZXNjcmlwdGlvbiBuZy1yZXF1aXJlZD10cnVlIG5nLW1pbi1sZW5ndGg9MjAgY2xhc3M9Zm9ybS1jb250cm9sPjwvdGV4dGFyZWE+PHAgbmctc2hvdz1cIihmb3JtMS4kc3VibWl0dGVkIHx8IGZvcm0xLkRlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtMS5EZXNjcmlwdGlvbi4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIgcmVzb3VyY2UgZGVzY3JpcHRpb24obWluIDIwIGNoYXJzKS48L3A+PC9kaXY+PC9kaXY+PGRpdj48c3BhbiBuZy1pZj1yZXNvdXJjZS5DcmVhdGVkQnkgY2xhc3M9c21hbGw+Q3JlYXRlZCBieSB7e3Jlc291cmNlLkNyZWF0ZWRCeS5maXJzdF9uYW1lfX0ge3tyZXNvdXJjZS5DcmVhdGVkQnkubGFzdF9uYW1lfX0sIHt7cmVzb3VyY2UuQ3JlYXRlZERhdGVUaW1lIHwgZGF0ZTogXCJkZC5NTS55eXl5IFxcJ2F0XFwnIEhIOm1tOnNzXCJ9fTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIG5nLWlmPXJlc291cmNlLkNoYW5nZWRCeSBjbGFzcz1zbWFsbD5MYXN0IGNoYW5nZSBieSB7e3Jlc291cmNlLkNoYW5nZWRCeS5maXJzdF9uYW1lfX0ge3tyZXNvdXJjZS5DaGFuZ2VkQnkubGFzdF9uYW1lfX0sIHt7cmVzb3VyY2UuQ2hhbmdlZERhdGVUaW1lIHwgZGF0ZTpcImRkLk1NLnl5eXkgXFwnYXRcXCcgSEg6bW06c3NcIn19PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTEyPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9dGV4dC1yaWdodD48YnV0dG9uIHR5cGU9c3VibWl0IG5nLWRpc2FibGVkPWZvcm0xLiRpbnZhbGlkIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1zYXZlIG1yLTJcIj48L3NwYW4+U2F2ZSBpbnRlZ3JhdGlvbiBpbmZvPC9idXR0b24+PC9kaXY+PC9mb3JtPjwvZGl2PjxkaXYgbmctaWY9XCJzZWxlY3RlZFRhYj09M1wiIG5nLWNsYXNzIGNsYXNzPXAtMz48Zm9ybSBuZy1zdWJtaXQ9c2F2ZVBhZ2VQZXJtaXNzaW9ucyhmb3JtMi4kdmFsaWQpIG5hbWU9Zm9ybTIgY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYgY2xhc3M9cm93PjxkaXYgY2xhc3M9Y29sLWxnLTEyPjxkaXYga3QtdXNlcnMtZ3JvdXBzLXNlbGVjdCBzZWxlY3RlZC11c2Vycz1yZXNvdXJjZS5BZG1pblVzZXJzIHNlbGVjdGVkLWdyb3Vwcz1yZXNvdXJjZS5BZG1pbkdyb3VwcyBoZWFkZXItbGFiZWw9XCJcXCdQYWdlIGFkbWluaXN0cmF0b3JzICh1c2VycyB0aGF0IGNhbiBjaGFuZ2UgaW50ZWdyYXRpb24gZGVmaW5pdGlvbilcXCdcIiB1c2Vycy1sYWJlbD1cIlxcJ0FkbWluIHVzZXJzXFwnXCIgZ3JvdXBzLWxhYmVsPVwiXFwnQWRtaW4gZ3JvdXBzXFwnXCI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0yXCI+PGRpdiBrdC11c2Vycy1ncm91cHMtc2VsZWN0IHNlbGVjdGVkLXVzZXJzPWludGVncmF0aW9uLlVzZXJzIHNlbGVjdGVkLWdyb3Vwcz1pbnRlZ3JhdGlvbi5Hcm91cHMgaGVhZGVyLWxhYmVsPWludGVncmF0aW9uLmhlYWRlckxhYmVsIHVzZXJzLWxhYmVsPWludGVncmF0aW9uLnVzZXJzTGFiZWwgZ3JvdXBzLWxhYmVsPWludGVncmF0aW9uLmdyb3Vwc0xhYmVsPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJweS0zIHRleHQtcmlnaHRcIj48YnV0dG9uIHR5cGU9c3VibWl0IGlkPWNsZWFyQnRuIG5nLWRpc2FibGVkPWZvcm0yLiRpbnZhbGlkIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1zYXZlIG1yLTJcIj48L3NwYW4+U2F2ZSBwZXJtaXNzaW9uczwvYnV0dG9uPjwvZGl2PjwvZm9ybT48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48c3R5bGU+XFxyXFxuXFxyXFxuLm5vLW5hdmJhci1tZW51XFxyXFxue1xcclxcbiAgICBib3JkZXI6IDFweCBkYXNoZWQgI2ZmMDAwMDQwICFpbXBvcnRhbnQ7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmEwN2ExZiAhaW1wb3J0YW50O1xcclxcbiAgICBjb2xvcjogI2ZmMDAwMDQwICFpbXBvcnRhbnQ7XFxyXFxufVxcclxcbi5pbnNlcnQtYnV0dG9uXFxyXFxue1xcclxcbiAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xcclxcbiAgICAgbWF4LXdpZHRoOiA1MCU7XFxyXFxufVxcclxcbi5kZWxldGUtYnV0dG9uXFxyXFxue1xcclxcbiAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xcclxcbiAgICAgbWF4LXdpZHRoOiA1MCU7XFxyXFxuXFx0cG9zaXRpb246YWJzb2x1dGU7XFxyXFxuXFx0dG9wOjBweDtcXHJcXG5cXHRyaWdodDowcHhcXHJcXG59XFxyXFxuLnBhZ2UtZ3JpZC1pdGVtXFxyXFxue1xcclxcbiAgICAgXFxyXFxuXFx0bWluLXdpZHRoOiAwO1xcclxcblxcdHBvc2l0aW9uOiByZWxhdGl2ZTtcXHJcXG5cXHRiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7XFxyXFxuXFx0Ym9yZGVyOjFweCBzb2xpZCBsaWdodGdyYXk7XFxyXFxufVxcclxcbi5wYWdlLWdyaWQtaXRlbS1vbmx5XFxyXFxue1xcclxcbiAgICAgYm9yZGVyOiAxcHggZGFzaGVkIGdyYXk7XFxyXFxuXFx0bWluLXdpZHRoOiAwO1xcclxcblxcdHBhZGRpbmc6MTBweDtcXHJcXG5cXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xcclxcblxcdFxcclxcbn1cXHJcXG4ucGFnZS1ncmlkLWl0ZW0tb25seTpob3ZlciAuaW5zZXJ0LWJ1dHRvblxcclxcbntcXHJcXG4gICAgIHZpc2liaWxpdHk6IHZpc2libGU7XFxyXFxufVxcclxcbi5wYWdlLWdyaWQtaXRlbTpob3ZlciAuZGVsZXRlLWJ1dHRvblxcclxcbntcXHJcXG4gICAgIHZpc2liaWxpdHk6IHZpc2libGU7XFxyXFxufVxcclxcbi50YWItaXRlbVxcclxcbntcXHJcXG4gY29sb3I6IzJDNjBFNTtcXHJcXG4gLypmb250LXNpemU6IDgwJTtcXHJcXG4gZm9udC13ZWlnaHQ6IDQwMDsqL1xcclxcbiBwYWRkaW5nOiAwLjI1cmVtICFpbXBvcnRhbnQ7XFxyXFxuIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXHJcXG59XFxyXFxuLnRhYi1pdGVtOmhvdmVyLC50YWItaXRlbTpmb2N1c1xcclxcbntcXHJcXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXHJcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyQzYwRTU7XFxyXFxuICBjb2xvcjojZmZmZmZmOyAgXFxyXFxufVxcclxcbi50YWItaXRlbS1zZWxlY3RlZDpob3ZlciwudGFiLWl0ZW0tc2VsZWN0ZWQ6Zm9jdXNcXHJcXG57XFxyXFxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IFxcclxcbn1cXHJcXG4udGFiLWl0ZW0tc2VsZWN0ZWRcXHJcXG57XFxyXFxuICAgICBjb2xvcjojMkM2MEU1O1xcclxcbiAgLyogICBmb250LXNpemU6IDgwJTtcXHJcXG4gICAgIGZvbnQtd2VpZ2h0OiA0MDA7Ki9cXHJcXG4gICAgIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDtcXHJcXG4gICAgIGJvcmRlci1ib3R0b206MnB4IHNvbGlkICMyQzYwRTU7XFxyXFxuICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxyXFxufVxcclxcbi5wYWdlLW5hdmlnYXRpb24tYmFye1xcclxcbiAgICBncmlkLWNvbHVtbjogMSAvIHNwYW4gMjtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzkwZWU5MDBkO1xcclxcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjMWRiNDZiODA7XFxyXFxuICAgIHBhZGRpbmc6IDEwcHg7XFxyXFxuICAgIGNvbG9yOiAjMWRiNDZiO1xcclxcbiAgICB9XFxyXFxuLnBhZ2Utc2lkZS1tZW51e1xcclxcbiAgIGJhY2tncm91bmQtY29sb3I6ICM5MGVlOTAwZDtcXHJcXG4gICAgYm9yZGVyOiAxcHggc29saWQgIzFkYjQ2YjgwO1xcclxcbiAgICBwYWRkaW5nOiA1cHg7XFxyXFxuICAgIGNvbG9yOiAjMWRiNDZiO1xcclxcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxyXFxuICAgIH1cXHJcXG48L3N0eWxlPicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwM19yZXNvdXJjZXMvYW5ndWxhclRlbXBsYXRlcy9tYXBwaW5nRGVmaW5pdGlvbi5odG1sJywnPGRpdiBpZD1tYXBwaW5nRGVmaW5pdGlvbj48ZGl2IGt0LWhlbHAtY2VudGVyIGhlbHAtaWQ9XCJcXCdtYXBwZGVmXFwnXCI+PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQgbS0xIHAtMVwiPjxkaXYgY2xhc3M9XCJoNCBweS0yIGJvcmRlci1ib3R0b20gdGV4dC1jZW50ZXIgbXktYXV0b1wiPjxkaXYgY2xhc3Mgc3R5bGU9ZmxvYXQ6bGVmdDs+PGEgY2xhc3M9XCJtbC0yIGg2IHRleHQtcHJpbWFyeVwiIGhyZWYgdGl0bGU9XCJSZXR1cm4gdG8gcHJldmlvdXMgcGFnZVwiIG5nLWNsaWNrPXJldHVyblRvUHJldmlvdXNQYWdlKCk+PGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1sZWZ0IG1yLTJcIj48L2k+UmV0dXJuIHRvIHByZXZpb3VzIHBhZ2U8L2E+PC9kaXY+PHNwYW4gY2xhc3M9Ym9sZD57e3Jlc291cmNlLlJlc291cmNlTmFtZX19PC9zcGFuPiA8c3BhbiBjbGFzcz1cIm14LTEgYm9sZCB0ZXh0LXByaW1hcnlcIj57e3Jlc291cmNlLk5hbWV9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9Y29sPjxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlci1hY3Rpb25zIHJvdyBwLTEgbS0yIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj48ZGl2IG5nLWlmPVwiKHJlc291cmNlLmlkICE9IG51bGwgfHwgcmVzb3VyY2UuaWQgPiAwKVwiIGNsYXNzPVwiY29sLWF1dG8gbXgtMVwiPjxzcGFuIGNsYXNzPW10LTE+PGIgY2xhc3M9XCJ0YWcgc21hbGwgdGV4dC1zdWNjZXNzIG15LTEgbXItMlwiPklEPC9iPiB7e3Jlc291cmNlLmlkfX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIG14LTFcIiBpZGQ9YWN0aXZlT3JOb3Q+PHNwYW4gbmctaWY9XCIocmVzb3VyY2UuaWQgIT0gbnVsbCB8fCByZXNvdXJjZS5pZCA+IDApXCIgY2xhc3M9XCJ0YWcgdGV4dC1zdWNjZXNzIG15LTFcIj57e3Jlc291cmNlLlJlc291cmNlTmFtZX19PC9zcGFuPiA8c3BhbiBuZy1pZj1cInJlc291cmNlLkFjdGl2ZSAmJiAocmVzb3VyY2UuaWQgIT0gbnVsbCB8fCByZXNvdXJjZS5pZCA+IDApXCIgY2xhc3M9XCJzbWFsbCBib2xkIG1yLTRcIj5BY3RpdmUgPGkgY2xhc3M9XCJ0ZXh0LXN1Y2Nlc3MgZmEgZmEtY2hlY2tcIj48L2k+PC9zcGFuPiA8c3BhbiBuZy1pZj1cIiFyZXNvdXJjZS5BY3RpdmUgJiYgKHJlc291cmNlLmlkICE9IG51bGwgfHwgcmVzb3VyY2UuaWQgPiAwKVwiIGNsYXNzPVwic21hbGwgYm9sZCBtci00XCI+Tm90IGFjdGl2ZSA8aSBjbGFzcz1cInRleHQtZGFuZ2VyIGZhIGZhLXRpbWVzXCI+PC9pPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXgtMVwiPjxzcGFuIG5nLWlmPXJlc291cmNlLk5ld1ZlcnNpb24gY2xhc3M9XCJzbWFsbCBtci0yXCI+PGIgY2xhc3M9XCJ0YWcgdGV4dC1zdWNjZXNzIG15LTEgbXItMlwiPlZFUlNJT048L2I+IHt7cmVzb3VyY2UuTmV3VmVyc2lvbn19PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBteC0xXCIgaWQ9cHVibGlzaGVkT3JOb3Q+PGRpdiBuZy1pZj1cIihyZXNvdXJjZS5pZCAhPSBudWxsIHx8IHJlc291cmNlLmlkID4gMClcIiBjbGFzcz1zbWFsbD48YiBjbGFzcz1cInRhZyB0ZXh0LXN1Y2Nlc3MgbXktMSBtci0yXCI+U1RBVFVTPC9iPjwvZGl2PjxkaXY+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4teHNcIiB0aXRsZT1cIkNsaWNrIGZvciB2ZXJzaW9uIGRldGFpbHNcIiBuZy1jbGFzcz1cIntcXCdidG4tb3V0bGluZS1zdWNjZXNzXFwnOnJlc291cmNlLlB1Ymxpc2hlZCxcXCdidG4td2FybmluZ1xcJzohcmVzb3VyY2UuUHVibGlzaGVkfVwiIG5nLWNsaWNrPVwic2hvd01vZGFsKFxcJ2Zvcm1cXCcpXCI+PHNwYW4gbmctaWY9cmVzb3VyY2UuUHVibGlzaGVkPlZlcnNpb24ge3tyZXNvdXJjZS5OZXdWZXJzaW9ufX0gcmVhZHk8L3NwYW4+IDxzcGFuIHRpdGxlPVwiU2F2ZSBjaGFuZ2VzIHRvIGFjdGl2YXRlIHZlcnNpb25cIiBuZy1pZj1cIiFyZXNvdXJjZS5QdWJsaXNoZWQgJiYgcmVzb3VyY2UuTmV3VmVyc2lvbiE9cmVzb3VyY2UuVmVyc2lvblwiPlZlcnNpb24ge3tyZXNvdXJjZS5OZXdWZXJzaW9ufX0gbm90IHJlYWR5PC9zcGFuPiA8aSBuZy1pZj1yZXNvdXJjZS5QdWJsaXNoZWQgY2xhc3M9XCJmYSBmYS1jaGVjayBtbC0yXCI+PC9pPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBteC0xIHNtYWxsXCIgdGl0bGU9XCJDcmVhdGVkIGJ5IHt7cmVzb3VyY2UuQ3JlYXRlZEJ5LmZpcnN0X25hbWV9fSB7e3Jlc291cmNlLkNyZWF0ZWRCeS5sYXN0X25hbWV9fVwiIG5nLWlmPVwicmVzb3VyY2UuQ3JlYXRlZEJ5LmlkIT1udWxsXCI+PGIgY2xhc3M9XCJ0YWcgdGV4dC1zdWNjZXNzIG10LTEgbWItMiBtci0yXCI+Q1JFQVRFRDwvYj4ge3tyZXNvdXJjZS5DcmVhdGVkRGF0ZVRpbWUgfCBkYXRlOiBcImRkLk1NLnl5eXkgXFwnYXRcXCcgSEg6bW06c3NcIn19IDxzcGFuIG5nLWlmPXJlc291cmNlLkNyZWF0ZWRCeS5maXJzdF9uYW1lPihieSA8Yj57e3Jlc291cmNlLkNyZWF0ZWRCeS5maXJzdF9uYW1lfX0ge3tyZXNvdXJjZS5DcmVhdGVkQnkubGFzdF9uYW1lfX08L2I+KTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gc21hbGxcIj48c3BhbiB0aXRsZT1cIkNoYW5nZWQgYnkge3tyZXNvdXJjZS5DaGFuZ2VkQnkuZmlyc3RfbmFtZX19IHt7cmVzb3VyY2UuQ2hhbmdlZEJ5Lmxhc3RfbmFtZX19XCIgbmctaWY9XCJyZXNvdXJjZS5DaGFuZ2VkQnkuaWQhPW51bGxcIj48YiBjbGFzcz1cInRhZyB0ZXh0LXN1Y2Nlc3MgbXktMSBtYi0yIG1yLTJcIj5NT0RJRklFRDwvYj48L3NwYW4+IHt7cmVzb3VyY2UuQ2hhbmdlZERhdGVUaW1lIHwgZGF0ZTpcImRkLk1NLnl5eXkgXFwnYXRcXCcgSEg6bW06c3NcIn19IDxzcGFuIG5nLWlmPXJlc291cmNlLkNoYW5nZWRCeS5maXJzdF9uYW1lPihieSA8Yj57e3Jlc291cmNlLkNoYW5nZWRCeS5maXJzdF9uYW1lfX0ge3tyZXNvdXJjZS5DaGFuZ2VkQnkubGFzdF9uYW1lfX08L2I+KTwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY2FyZCBtLTFcIj48ZGl2IGt0LXJlc291cmNlLWRlZmluaXRpb24gcmVzb3VyY2U9cmVzb3VyY2U+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQgbS0xXCIgc3R5bGU+PGRpdiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIiBjbGFzcz1cInAtMSByb3cgbXgtMVwiIG5nLWNsaWNrPVwiaXNDb2xsYXBzZWRQdWJsaXNoID0gIWlzQ29sbGFwc2VkUHVibGlzaFwiPjxzcGFuIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBwLTFcIj48c3BhbiBuZy1jbGFzcz1cIntcXCdmYXMgZmEtY2hldnJvbi1kb3duXFwnOiBpc0NvbGxhcHNlZFB1Ymxpc2gsXFwnZmFzIGZhLWNoZXZyb24tcmlnaHRcXCc6ICFpc0NvbGxhcHNlZFB1Ymxpc2ggfVwiPjwvc3Bhbj48L3NwYW4+IDxzcGFuIGNsYXNzPXRhZz5QdWJsaXNoIHt7cmVzb3VyY2VEZWZpbml0aW9uLlJlc291cmNlTmFtZX19PC9zcGFuPjwvZGl2Pjxmb3JtIHVpYi1jb2xsYXBzZT0haXNDb2xsYXBzZWRQdWJsaXNoIG5nLXN1Ym1pdD1QdWJsaXNoMlByb2QoZm9ybVB1Ymxpc2guJHZhbGlkKSBpZD1wdWJsaXNoUmVzb3VyZUZvcm0gbmFtZT1mb3JtUHVibGlzaCBjbGFzcz1mb3JtLWhvcml6b250YWwgcm9sZT1mb3JtIG5vdmFsaWRhdGU+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHRleHQtY2VudGVyXCI+PGRpdiBuZy1pZj1wdWJsaXNoZWRSZXNvdXJjZS5QdWJsaXNoZWQgY2xhc3M9bWItND48c3BhbiBjbGFzcz1cIm1yLTIgaDRcIj5QdWJsaXNoZWQ8L3NwYW4+IDxzcGFuIGNsYXNzPVwiZmEgZmEtY2hlY2stY2lyY2xlIG1yLTIgdGV4dC1zdWNjZXNzIGg0XCI+PC9zcGFuPjxkaXY+PHNwYW4+VmVyc2lvbiB7e3B1Ymxpc2hlZFJlc291cmNlLlZlcnNpb259fSBwdWJsaXNoZWQgYnkge3twdWJsaXNoZWRSZXNvdXJjZS5QdWJsaXNoZWRCeX19IG9uIHt7cHVibGlzaGVkUmVzb3VyY2UuRGF0ZVRpbWUgfCBkYXRlOlwiZGQuTU0ueXl5eSBcXCdhdFxcJyBISDptbTpzc1wifX08L3NwYW4+IDxzcGFuIG5nLWlmPXB1Ymxpc2hlZFJlc291cmNlLkNoYW5nZWRCeT4obGFzdCBjaGFuZ2VkIGJ5IHt7cHVibGlzaGVkUmVzb3VyY2UuQ2hhbmdlZEJ5fX0gb24ge3twdWJsaXNoZWRSZXNvdXJjZS5DaGFuZ2VkRGF0ZVRpbWUgfCBkYXRlOlwiZGQuTU0ueXl5eSBcXCdhdFxcJyBISDptbTpzc1wifX0pPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9IXB1Ymxpc2hlZFJlc291cmNlLlB1Ymxpc2hlZCBjbGFzcz1oND48c3BhbiBjbGFzcz1tci0yPk5vdCBwdWJsaXNoZWQ8L3NwYW4+IDxzcGFuIGNsYXNzPVwiZmEgZmEtdGltZXMgdGV4dC1kYW5nZXJcIj48L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCB0ZXh0LWNlbnRlclwiIG5nLWlmPXB1Ymxpc2hlZFJlc291cmNlLlB1Ymxpc2hlZD48ZGl2IG5nLWlmPVwicHVibGlzaGVkUmVzb3VyY2Uucm1kICYmIHB1Ymxpc2hlZFJlc291cmNlLmNvdW50PT0wXCI+PHNwYW4gY2xhc3M9XCJib3JkZXItYm90dG9tIGg1XCI+UHVibGlzaGVkIGRlZmluaXRpb24gKG5vIGNoYW5nZXMpPC9zcGFuPjxkaXYgY2xhc3M9bXktMiBrdC1iYXNpYy10YWJsZSBjb2x1bW5zPWRhdGFzZXREZXBsb3lDb2xzIGRhdGE9cHVibGlzaGVkUmVzb3VyY2Uucm1kIG1hcHBpbmc9ZGVwbG95QWN0aW9uTWFwcGluZ3M+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cInB1Ymxpc2hlZFJlc291cmNlLnJtZCAmJiBwdWJsaXNoZWRSZXNvdXJjZS5jb3VudD4wXCI+PHNwYW4gY2xhc3M9XCJib3JkZXItYm90dG9tIGg1XCI+Q2hhbmdlcyBmb3IgcHVibGlzaGluZzwvc3Bhbj48ZGl2IGNsYXNzPW15LTIga3QtYmFzaWMtdGFibGUgY29sdW1ucz1kYXRhc2V0RGVwbG95Q29scyBkYXRhPXB1Ymxpc2hlZFJlc291cmNlLnJtZCBtYXBwaW5nPWRlcGxveUFjdGlvbk1hcHBpbmdzPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgdGV4dC1jZW50ZXJcIj48YnV0dG9uIHR5cGU9c3VibWl0IGlkPXB1Ymxpc2hSZXNvdXJjZUJ0biBjbGFzcz1cImJ0biBidG4tc20gYnRuLXN1Y2Nlc3MgbXktMlwiPjxzcGFuIG5nLWlmPSFwdWJsaXNoaW5nRGF0YXNldD48aSBjbGFzcz1cImZhIGZhLXVwbG9hZCBtci0xXCI+PC9pPjwvc3Bhbj4gPHNwYW4gbmctaWY9cHVibGlzaGluZ0RhdGFzZXQ+PGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lciBmYS1zcGluIG1yLTFcIj48L2k+PC9zcGFuPiA8c3BhbiBuZy1pZj1wdWJsaXNoaW5nRGF0YXNldD5QdWJsaXNoaW5nLi4uPC9zcGFuPiA8c3BhbiBuZy1pZj0hcHVibGlzaGluZ0RhdGFzZXQ+UHVibGlzaDwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Zvcm0+PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQgbS0xIHB5LTIgcHgtMlwiPjxkaXYgY2xhc3M9XCJyb3cgbS0yXCI+PGRpdiBuZy1zaG93PVwiZGF0YXNldDFGaWVsZHMubGVuZ3RoPjAgJiYgZGF0YXNldDJGaWVsZHMubGVuZ3RoPjBcIiBjbGFzcz1cImNvbCB0ZXh0LXJpZ2h0XCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1kaXNhYmxlZD1cImRhdGFzZXQyRmllbGRzLmxlbmd0aD09MFwiIG5nLWNsaWNrPXNhdmVEYXRhc2V0TWFwcGluZ0RldGFpbHMoKSBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiPjxzcGFuIG5nLWlmPSFzYXZpbmdIZWFkPjxpIGNsYXNzPVwiZmEgZmEtc2F2ZSBtci0xXCI+PC9pPjwvc3Bhbj4gPHNwYW4gbmctaWY9c2F2aW5nSGVhZD48aSBjbGFzcz1cImZhcyBmYS1zcGlubmVyIGZhLXNwaW4gbXItMVwiPjwvaT48L3NwYW4+IDxzcGFuIG5nLWlmPXNhdmluZ0hlYWQ+U2F2aW5nLi4uPC9zcGFuPiA8c3BhbiBuZy1pZj0hc2F2aW5nSGVhZD5TYXZlIG1hcHBpbmdzPC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgdGV4dC1yaWdodFwiIG5nLWhpZGU9XCJkYXRhc2V0MUZpZWxkcy5sZW5ndGg+MCAmJiBkYXRhc2V0MkZpZWxkcy5sZW5ndGg+MFwiPjxidXR0b24gdHlwZT1idXR0b24gbmctZGlzYWJsZWQ9XCJtYXBwaW5nRmllbGRzW1xcJ2RhdGFzZXQxXFwnXS52ZXJzaW9uPT11bmRlZmluZWQgfHwgbWFwcGluZ0ZpZWxkc1tcXCdkYXRhc2V0MlxcJ10udmVyc2lvbj09dW5kZWZpbmVkXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIiBuZy1jbGljaz1zYXZlRGF0YXNldE1hcHBpbmdIZWFkKCk+PHNwYW4gbmctaWY9IXNhdmluZ0hlYWQ+PGkgY2xhc3M9XCJmYSBmYS1zYXZlIG1yLTFcIj48L2k+PC9zcGFuPiA8c3BhbiBuZy1pZj1zYXZpbmdIZWFkPjxpIGNsYXNzPVwiZmFzIGZhLXNwaW5uZXIgZmEtc3BpbiBtci0xXCI+PC9pPjwvc3Bhbj4gPHNwYW4gbmctaWY9c2F2aW5nSGVhZD5TYXZpbmcuLi48L3NwYW4+IDxzcGFuIG5nLWlmPSFzYXZpbmdIZWFkPlNhdmU8L3NwYW4+PC9idXR0b24+IDxidXR0b24gbmctaWY9bWFwcEhlYWQuaWQgdHlwZT1idXR0b24gbmctY2xpY2s9Z2V0UmVzb3VyY2VBbGwoKSBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCI+PHNwYW4+PGkgY2xhc3M9XCJmYSBmYS10aW1lcyBtci0xXCI+PC9pPjwvc3Bhbj4gPHNwYW4+Q2FuY2VsPC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBoNCBteS0zXCI+TWFwcGluZyBkZWZpbml0aW9uPC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTJcIiBpZGQ9XCJTRUxFQ1QgREFUQVNFVDFcIj48ZGl2IGNsYXNzPWNvbC0xNCBuZy1mb3JtPXNlbGVjdDE+PHNwYW4gY2xhc3M+Jm5ic3A8YnI+PGI+U2VsZWN0IGRhdGFzZXQxOjwvYj48L3NwYW4+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIGlzLW11bHRpcGxlPWZhbHNlIG5nLW1vZGVsPW1hcHBpbmdGaWVsZHMuZGF0YXNldDEgc2VsZWN0ZWQtaXRlbXM9bWFwcGluZ0ZpZWxkcy5kYXRhc2V0MSBkcm9wZG93bi1pdGVtcz1kYXRhc2V0TGlzdCBkcm9wZG93bi1pZD1cIlxcJ3ZlcnNpb25cXCcrZmQuTmFtZStmZC5JdGVtSWRcIiBwYXJlbnQtZm9ybS1pZD1zZWxlY3QxIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IGRhdGFzZXRcXCdcIiBvbi1zZWxlY3QtZm49XCJvbk5ld01hcHBpbmdTZWxlY3RDYWxsYmFjayhtYXBwaW5nRmllbGRzLmRhdGFzZXQxLFxcJ2RhdGFzZXQxXFwnIClcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjwvZGl2PjxkaXYgY2xhc3M9Y29sLTggbmctZm9ybT1zZWxlY3R2ZXJzaW9uMT48c3BhbiBjbGFzcz4mbmJzcDxicj48Yj5TZWxlY3QgdmVyc2lvbjo8L2I+PC9zcGFuPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1kaXNhYmxlZD1cInB1Ymxpc2hlZEZvcm1zW3NlbGVjdGVkRGF0YXNldF0ubGVuZ3RoPT0wXCIgaXMtbXVsdGlwbGU9ZmFsc2UgbmctbW9kZWw9XCJtYXBwaW5nRmllbGRzW1xcJ2RhdGFzZXQxXFwnXS52ZXJzaW9uXCIgc2VsZWN0ZWQtaXRlbXM9XCJtYXBwaW5nRmllbGRzW1xcJ2RhdGFzZXQxXFwnXS52ZXJzaW9uXCIgZHJvcGRvd24taXRlbXM9XCJwdWJsaXNoZWRGb3Jtc1tcXCdkYXRhc2V0MVxcJ11cIiBkcm9wZG93bi1pZD1cIlxcJ3ZlcnNpb25cXCcrZmQuTmFtZStmZC5JdGVtSWRcIiBwYXJlbnQtZm9ybS1pZD1zZWxlY3R2ZXJzaW9uMSBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCB2ZXJzaW9uXFwnXCIgb24tc2VsZWN0LWZuPVwib25DaGFuZ2VSZXNvdXJjZVZlcnNpb24oXFwnZGF0YXNldDFGaWVsZHNcXCcpXCI+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMlwiIGlkZD1cIlNFTEVDVCBEQVRBU0VUMlwiPjxkaXYgY2xhc3M9Y29sLTE0IG5nLWZvcm09c2VsZWN0Mj48c3BhbiBjbGFzcz4mbmJzcDxicj48Yj5TZWxlY3QgZGF0YXNldDI6PC9iPjwvc3Bhbj48a3QtZHJvcGRvd24tc3RhbmRhcmQgaXMtbXVsdGlwbGU9ZmFsc2UgbmctbW9kZWw9bWFwcGluZ0ZpZWxkcy5kYXRhc2V0MiBzZWxlY3RlZC1pdGVtcz1tYXBwaW5nRmllbGRzLmRhdGFzZXQyIGRyb3Bkb3duLWl0ZW1zPWRhdGFzZXRMaXN0IGRyb3Bkb3duLWlkPVwiXFwndmVyc2lvblxcJytmZC5OYW1lK2ZkLkl0ZW1JZFwiIHBhcmVudC1mb3JtLWlkPXNlbGVjdDIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgZGF0YXNldFxcJ1wiIG9uLXNlbGVjdC1mbj1cIm9uTmV3TWFwcGluZ1NlbGVjdENhbGxiYWNrKG1hcHBpbmdGaWVsZHMuZGF0YXNldDIsXFwnZGF0YXNldDJcXCcgKVwiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PC9kaXY+PGRpdiBjbGFzcz1jb2wtOCBuZy1mb3JtPXNlbGVjdHZlcnNpb24yPjxzcGFuIGNsYXNzPiZuYnNwPGJyPjxiPlNlbGVjdCB2ZXJzaW9uOjwvYj48L3NwYW4+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIGlzLW11bHRpcGxlPWZhbHNlIG5nLW1vZGVsPVwibWFwcGluZ0ZpZWxkc1tcXCdkYXRhc2V0MlxcJ10udmVyc2lvblwiIHNlbGVjdGVkLWl0ZW1zPVwibWFwcGluZ0ZpZWxkc1tcXCdkYXRhc2V0MlxcJ10udmVyc2lvblwiIGRyb3Bkb3duLWl0ZW1zPVwicHVibGlzaGVkRm9ybXNbXFwnZGF0YXNldDJcXCddXCIgZHJvcGRvd24taWQ9XCJcXCd2ZXJzaW9uXFwnK2ZkLk5hbWUrZmQuSXRlbUlkXCIgcGFyZW50LWZvcm0taWQ9c2VsZWN0dmVyc2lvbjIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgdmVyc2lvblxcJ1wiIG9uLXNlbGVjdC1mbj1cIm9uQ2hhbmdlUmVzb3VyY2VWZXJzaW9uKFxcJ2RhdGFzZXQyRmllbGRzXFwnKVwiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PC9kaXY+PC9kaXY+PGRpdiBpZD1NYXBwaW5ncyBuZy1zaG93PVwiZGF0YXNldDFGaWVsZHMubGVuZ3RoPjAgJiYgZGF0YXNldDJGaWVsZHMubGVuZ3RoPjAgJiYgbWFwcEhlYWQuaWRcIiBuZy1pZj1cIiFsb2FkaW5nUmVzb3VyY2UgJiYgIXNhdmluZ0hlYWRcIiBjbGFzcz1yb3c+PGRpdiBjbGFzcz1cImNvbC0yNCB0ZXh0LWNlbnRlciBoNCBteS0zXCI+RmllbGQgbGV2ZWwgbWFwcGluZzwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMTYgbXgtYXV0b1wiPjxkaXYgY2xhc3M9cm93PjxkaXYgY2xhc3M9Y29sLTEyPjxoNSBjbGFzcz10ZXh0LWNlbnRlcj5EQVRBU0VUIDxiPnt7bWFwcEhlYWQuRGF0YXNldDFOYW1lfX0gKHt7bWFwcEhlYWQuRGF0YXNldDF1aWR9fSk8L2I+PC9oNT48ZGl2IGNsYXNzPWRhdGFzZXQxQ29udGFpbmVyIHN0eWxlPVwibWF4LWhlaWdodDo0MHJlbTtvdmVyZmxvdzogYXV0b1wiPjxkaXYgbmctcmVwZWF0PVwiaXRlbSBpbiBkYXRhc2V0MUZpZWxkcyB0cmFjayBieSBpdGVtLmlkXCIgY2xhc3M9XCJlbGVtZW50LWRyYWctaGFuZGxlIGV4YW1wbGVSb3cgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+PGRpdiBjbGFzcz1lbGVtZW50LWRyYWctaGFuZGxlPjxiIGNsYXNzPWVsZW1lbnQtZHJhZy1oYW5kbGU+e3tpdGVtLkxhYmVsIH19PC9iPiA8aSBjbGFzcz1lbGVtZW50LWRyYWctaGFuZGxlPih7e2l0ZW0uR2VuZXJpY1R5cGV9fSk8L2k+PC9kaXY+PHNwYW4gY2xhc3M+PHNwYW4gbmctaGlkZT1cIml0ZW0uRWxlbWVudFR5cGU9PVxcJ3Jlc291cmNlaWRcXCdcIiBjbGFzcz1cImZudDYgY29sLTRcIj57e2l0ZW0uRmllbGROYW1lfX08L3NwYW4+IDxpIGNsYXNzPVwiZWxlbWVudC1kcmFnLWhhbmRsZSBoYW5kbGVyIGZhcyBmYS1ncmlwLXZlcnRpY2FsIG15LTEgbXItMlwiIHN0eWxlPW9wYWNpdHk6MC4yPjwvaT48L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb2wtMTI+PGg1IGNsYXNzPXRleHQtY2VudGVyPkRBVEFTRVQgPGI+e3ttYXBwSGVhZC5EYXRhc2V0Mk5hbWV9fSAoe3ttYXBwSGVhZC5EYXRhc2V0MnVpZH19KTwvYj48L2g1PjxkaXYgY2xhc3M9ZGF0YXNldDFDb250YWluZXIgc3R5bGU9XCJtYXgtaGVpZ2h0OjQwcmVtO292ZXJmbG93OiBhdXRvXCI+PGRpdiBjbGFzcz1wci0xIG5nLXJlcGVhdD1cIml0ZW0yIGluIGRhdGFzZXQyRmllbGRzIHRyYWNrIGJ5ICRpbmRleFwiPjxkaXYgbmctc3dpdGNoPWl0ZW0yLnR5cGU+PGRpdiBuZy1zd2l0Y2gtd2hlbj1kYXRlPjxkaXYgY2xhc3M+PGI+e3skaW5kZXgrMX19LiB7e2l0ZW0yLkxhYmVsfX08L2I+IDxpPih7e2l0ZW0yLkdlbmVyaWNUeXBlfX0gLSBmcm9tKTwvaT48L2Rpdj48ZGl2IGNsYXNzPVwiZXhhbXBsZVJvd3t7JGluZGV4fX0gcHktMVwiIHN0eWxlPVwibWluLWhlaWdodDo1MHB4OyBib3JkZXItcmFkaXVzOiA0cHg7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsIDAsIDAsIDAuMSlcIj48ZGl2IG5nLXJlcGVhdD1cImZpZWxkIGluIGl0ZW0yLmZpZWxkcyB0cmFjayBieSAkaW5kZXhcIiBjbGFzcz1cImV4YW1wbGVDZWxsIHJvdyBtLTEgZWxlbWVudC1kcmFnLWhhbmRsZVwiPjxkaXYgY2xhc3M9Y29sPjxiIGNsYXNzPWVsZW1lbnQtZHJhZy1oYW5kbGU+e3tmaWVsZC5MYWJlbH19PC9iPiA8aSBjbGFzcz1lbGVtZW50LWRyYWctaGFuZGxlPih7e2ZpZWxkLkdlbmVyaWNUeXBlfX0pPC9pPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48YSBjbGFzcz1cImJ0biBidHgteHMgYnRuLW91dGxpbmUtbGlnaHQgYm9yZGVyLTAgcC0wIHB4LTFcIiBocmVmIG5nLWNsaWNrPXJlbW92ZUl0ZW0oJHBhcmVudC4kaW5kZXgsJGluZGV4KT48aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPjwvYT48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPjxiPnt7JGluZGV4KzF9fS4ge3tpdGVtMi5MYWJlbH19PC9iPiA8aT4oe3tpdGVtMi5HZW5lcmljVHlwZX19IC0gdG8pPC9pPjwvZGl2PjxkaXYgY2xhc3M9XCJleGFtcGxlUm93RmllbGRzMnt7JGluZGV4fX0gcHktMVwiIHN0eWxlPVwibWluLWhlaWdodDo1MHB4O2JvcmRlci1yYWRpdXM6IDRweDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwgMCwgMCwgMC4xKVwiPjxkaXYgbmctcmVwZWF0PVwiZmllbGQgaW4gaXRlbTIuZmllbGRzMiB0cmFjayBieSAkaW5kZXhcIiBjbGFzcz1cImV4YW1wbGVDZWxsIHJvdyBtLTEgZWxlbWVudC1kcmFnLWhhbmRsZVwiPjxkaXYgY2xhc3M9Y29sPjxiIGNsYXNzPWVsZW1lbnQtZHJhZy1oYW5kbGU+e3tmaWVsZC5MYWJlbH19PC9iPiA8aSBjbGFzcz1lbGVtZW50LWRyYWctaGFuZGxlPih7e2ZpZWxkLkdlbmVyaWNUeXBlfX0pPC9pPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48YSBjbGFzcz1cImJ0biBidHgteHMgYnRuLW91dGxpbmUtbGlnaHQgYm9yZGVyLTAgcC0wIHB4LTFcIiBocmVmIG5nLWNsaWNrPXJlbW92ZUl0ZW1GMigkcGFyZW50LiRpbmRleCwkaW5kZXgpPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+PC9hPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctc3dpdGNoLWRlZmF1bHQ+PGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1lbmRcIj48c3Bhbj48Yj57eyRpbmRleCsxfX0uIHt7aXRlbTIuTGFiZWx9fTwvYj4gPGk+KHt7aXRlbTIuR2VuZXJpY1R5cGV9fTxzcGFuIG5nLWhpZGU9XCJpdGVtMi5HZW5lcmljVHlwZT09XFwncmVzb3VyY2VpZFxcJ1wiIGNsYXNzPjpGaWVsZHt7aXRlbTIuSXRlbUlkfX1fe3tyZXNvdXJjZS5PcmdhbmlzYXRpb25JZH19PC9zcGFuPik8L2k+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJleGFtcGxlUm93e3skaW5kZXh9fSBweS0xXCIgc3R5bGU9XCJtaW4taGVpZ2h0OjUwcHg7Ym9yZGVyLXJhZGl1czogNHB4O2JhY2tncm91bmQtY29sb3I6cmdiYSgwLCAwLCAwLCAwLjEpXCI+PGRpdiBuZy1yZXBlYXQ9XCJmaWVsZCBpbiBpdGVtMi5maWVsZHMgdHJhY2sgYnkgJGluZGV4XCIgY2xhc3M9XCJleGFtcGxlQ2VsbCByb3cgbS0xIGVsZW1lbnQtZHJhZy1oYW5kbGVcIj48ZGl2IGNsYXNzPWNvbD48YiBjbGFzcz1lbGVtZW50LWRyYWctaGFuZGxlPnt7ZmllbGQuTGFiZWx9fTwvYj4gPGkgY2xhc3M9ZWxlbWVudC1kcmFnLWhhbmRsZT4oe3tmaWVsZC5HZW5lcmljVHlwZX19KTwvaT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGEgY2xhc3M9XCJidG4gYnR4LXhzIGJ0bi1vdXRsaW5lLWxpZ2h0IGJvcmRlci0wIHAtMCBweC0xXCIgaHJlZiBuZy1jbGljaz1yZW1vdmVJdGVtKCRwYXJlbnQuJGluZGV4LCRpbmRleCk+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2E+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAzX3Jlc291cmNlcy9hbmd1bGFyVGVtcGxhdGVzL21hcHBpbmdzRm9ybS5odG1sJywnPGZvcm0gbmctc3VibWl0PXNhdmVSZXNvdXJjZUZvcm0oZm9ybWEuJHZhbGlkKSBpZD1mb3JtYTEgbmFtZT17e2Zvcm1EZWZpbml0aW9uLmZvcm1OYW1lfX0gY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYgY2xhc3M9XCJib3hzaGFkb3cgc29ydC1ib3hcIj48ZGl2IGNsYXNzPXRleHQtY2VudGVyPjxoND57e3Jlc291cmNlRGVmaW5pdGlvbi5uYW1lfX08L2g0PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJib3hzaGFkb3cgc29ydC1ib3hcIj48ZGl2IGNsYXNzPXJvdz48ZGl2IGNsYXNzPWNvbC1tZC0xMj48aDQ+QXZhaWxhYmxlIG1hcHBpbmdzOjwvaDQ+PGRpdiBpZD1tYXBwaW5nZ3JpZCB1aS1ncmlkPWdyaWRPcHRpb25zIHVpLWdyaWQtc2VsZWN0aW9uIHVpLWdyaWQtcmVzaXplLWNvbHVtbnMgY2xhc3M9bXlHcmlkPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgcGFkTDBcIj48aDQ+VHJhbnNmb3JtIHBhY2thZ2VzOjwvaDQ+PGRpdiBpZD10cmFuc2Zvcm1ncmlkIHVpLWdyaWQ9Z3JpZE9wdGlvbnMyIHVpLWdyaWQtc2VsZWN0aW9uIHVpLWdyaWQtcmVzaXplLWNvbHVtbnMgY2xhc3M9bXlHcmlkPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJib3hzaGFkb3cgc29ydC1ib3hcIiBzdHlsZT1wYWRkaW5nLWxlZnQ6MTVweDs+PGRpdiBjbGFzcz1yb3cgc3R5bGU9cGFkZGluZy1sZWZ0OjEwcHg+PGRpdiBjbGFzcz1jb2wtbWQtNj48aDMgbmctaWY9aXRlbXNbMF0uY2VsbHMubGVuZ3RoPkZJTEU8L2gzPjxkaXYgc3R5bGU9bWluLWhlaWdodDoyMHB4Oz48aDQ+SW1wb3J0IGZpZWxkcyBmcm9tIENTViBmaWxlOjwvaDQ+PGRpdj48aW5wdXQgdHlwZT1maWxlIGlkPW15ZmlsZSBmaWxlLXJlYWRlcj1maWxlQ29udGVudD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IHN0eWxlPVwiaGVpZ2h0OiA1MDBweDsgb3ZlcmZsb3cteTogc2Nyb2xsO1wiIGNsYXNzPWNvbC1tZC02PjxoMz5GSUxFIEZJRUxEUzwvaDM+PGRpdiBuZy1yZXBlYXQ9XCJpdGVtIGluIGl0ZW1zXCI+PGRpdiBjbGFzcz48L2Rpdj48ZGl2IGNsYXNzPWV4YW1wbGVSb3d7eyRpbmRleH19IHN0eWxlPVwibWluLWhlaWdodDoyMHB4OyBib3JkZXI6MXB4IGRhc2hlZCA7Ym9yZGVyLXJhZGl1czogNHB4O2JhY2tncm91bmQtY29sb3I6cmdiYSgwLCAwLCAwLCAwLjEpXCI+PGRpdiBuZy1yZXBlYXQ9XCJjZWxscyBpbiBpdGVtLmNlbGxzXCIgY2xhc3M9XCJleGFtcGxlQ2VsbCBlbGVtZW50LWRyYWctaGFuZGxlXCI+PGIgY2xhc3M9ZWxlbWVudC1kcmFnLWhhbmRsZT57e2NlbGxzLm5hbWV9fTwvYj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IHN0eWxlPVwiaGVpZ2h0OiA1MDBweDsgb3ZlcmZsb3cteTogc2Nyb2xsO1wiIGNsYXNzPWNvbC1tZC02PjxoMz5SRVNPVVJDRSBGSUVMRFM8L2gzPjxkaXYgbmctcmVwZWF0PVwiaXRlbSBpbiBpdGVtczJcIj48ZGl2IGNsYXNzPjxiPnt7aXRlbS5wbGFjZWhvbGRlcn19PC9iPiA8aT4oe3tpdGVtLm5hbWV9fSk8L2k+PC9kaXY+PGRpdiBjbGFzcz1leGFtcGxlUm93c3t7JGluZGV4fX0gc3R5bGU9XCJtaW4taGVpZ2h0OjUwcHg7IGJvcmRlcjoxcHggZGFzaGVkIDtib3JkZXItcmFkaXVzOiA0cHg7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsIDAsIDAsIDAuMSlcIj48ZGl2IG5nLXJlcGVhdD1cImNlbGxzIGluIGl0ZW0uY2VsbHNcIiBuZy1jbGFzcz1cImNlbGxzLnR5cGUgPyBcXCdleGFtcGxlQ2VsbDJcXCc6XFwnZXhhbXBsZUNlbGxcXCdcIiBjbGFzcz1lbGVtZW50LWRyYWctaGFuZGxlPjxpIG5nLWlmPWNlbGxzLnR5cGUgY2xhc3M9XCJmYSBmYS1jb2dzIHdoaXRlXCI+PC9pPiA8YiBjbGFzcz1lbGVtZW50LWRyYWctaGFuZGxlPnt7Y2VsbHMubmFtZX19PC9iPiA8c3BhbiBuZy1pZj1jZWxscy50eXBlIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGluayBmbG9hdC1yaWdodCB0ZXh0LWRhbmdlclwiIHRhYmluZGV4PTIgbmctY2xpY2s9XCJpdGVtLmNlbGxzLnNwbGljZSgkaW5kZXgsIDEpO1wiIGFyaWEtbGFiZWw9Y2xvc2U+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L3NwYW4+PGRpdiBuZy1pZj1jZWxscy50eXBlPjx1aS1zZWxlY3QgbmctbW9kZWw9Y2VsbHMucGFyYW1zLmRhdGFzZXQgb24tc2VsZWN0PW9uU2VsZWN0RGF0YXNldCgkaXRlbSkgbmctZGlzYWJsZWQ9ZGlzYWJsZWQgbmFtZT1zZWxlY3REYXRhc2V0IG5nLXJlcXVpcmVkPXRydWUgcmVzZXQtc2VhcmNoLWlucHV0PWZhbHNlPjx1aS1zZWxlY3QtbWF0Y2ggY2xhc3M9dWktc2VsZWN0LW1hdGNoIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGRhdGFzZXQuLi5cIj48c3Bhbj57eyRzZWxlY3Quc2VsZWN0ZWR9fSA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmtcIiBuZy1jbGljaz1cImNsZWFyKCRldmVudCwgJHNlbGVjdClcIj48aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPjwvYT48L3NwYW4+PC91aS1zZWxlY3QtbWF0Y2g+PHVpLXNlbGVjdC1jaG9pY2VzIGNsYXNzPXVpLXNlbGVjdC1jaG9pY2VzIHJlcGVhdD1cImRhdGFzZXQgaW4gZGF0YXNldExpc3RcIiByZWZyZXNoPXJlZnJlc2hSZXN1bHRzKCRzZWxlY3QpIHJlZnJlc2gtZGVsYXk9MD48c3Bhbj57e2RhdGFzZXQubmFtZX19ICh7e2RhdGFzZXQuaWR9fSk8L3NwYW4+PC91aS1zZWxlY3QtY2hvaWNlcz48L3VpLXNlbGVjdD48dWktc2VsZWN0IG5nLW1vZGVsPWNlbGxzLnBhcmFtcy5maWVsZCBvbi1zZWxlY3QgbmctZGlzYWJsZWQ9ZGlzYWJsZWQgbmFtZT1zZWxlY3REYXRhc2V0IG5nLXJlcXVpcmVkPXRydWUgcmVzZXQtc2VhcmNoLWlucHV0PWZhbHNlPjx1aS1zZWxlY3QtbWF0Y2ggY2xhc3M9dWktc2VsZWN0LW1hdGNoIHBsYWNlaG9sZGVyPVwiU2VsZWN0IEZpZWxkLi4uXCI+PHNwYW4+e3skc2VsZWN0LnNlbGVjdGVkLkZpZWxkTmFtZX19IHt7JHNlbGVjdC5zZWxlY3RlZC5GaWVsZFR5cGV9fSAoe3skc2VsZWN0LnNlbGVjdGVkLmlkfX0pIDxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlua1wiIG5nLWNsaWNrPVwiY2xlYXIoJGV2ZW50LCAkc2VsZWN0KVwiPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+PC9hPjwvc3Bhbj48L3VpLXNlbGVjdC1tYXRjaD48dWktc2VsZWN0LWNob2ljZXMgY2xhc3M9dWktc2VsZWN0LWNob2ljZXMgcmVwZWF0PVwiZGF0YXNldCBpbiBmaWVsZFJlc291cmNlc1wiIHJlZnJlc2g9cmVmcmVzaFJlc3VsdHMoJHNlbGVjdCkgcmVmcmVzaC1kZWxheT0wPjxzcGFuPnt7ZGF0YXNldC5GaWVsZE5hbWV9fSB7e2RhdGFzZXQuRmllbGRUeXBlfX0gKHt7ZGF0YXNldC5pZH19KTwvc3Bhbj48L3VpLXNlbGVjdC1jaG9pY2VzPjwvdWktc2VsZWN0PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLW1kLTQ+PGgzPlRSQU5TRk9STTwvaDM+PGRpdiBuZy1yZXBlYXQ9XCJpdGVtIGluIHRyYW5zZm9ybUl0ZW1zXCI+PGRpdiBjbGFzcz48L2Rpdj48ZGl2IGNsYXNzPWV4YW1wbGVSb3d6e3skaW5kZXh9fSBzdHlsZT1cIm1pbi1oZWlnaHQ6NTBweDsgYm9yZGVyOjFweCBkYXNoZWQgO2JvcmRlci1yYWRpdXM6IDRweDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwgMCwgMCwgMC4xKVwiPjxkaXYgbmctcmVwZWF0PVwiY2VsbHMgaW4gaXRlbS5jZWxsc1wiIG5nLWNsYXNzPVwiY2VsbHMudHlwZSA/IFxcJ2V4YW1wbGVDZWxsMlxcJzpcXCdleGFtcGxlQ2VsbFxcJ1wiIGNsYXNzPWVsZW1lbnQtZHJhZy1oYW5kbGU+PGkgbmctaWY9Y2VsbHMudHlwZSBjbGFzcz1cImZhIGZhLWNvZ3Mgd2hpdGVcIj48L2k+IDxiIGNsYXNzPWVsZW1lbnQtZHJhZy1oYW5kbGU+e3tjZWxscy5uYW1lfX08L2I+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImJveHNoYWRvdyBzb3J0LWJveFwiPjxkaXYgY2xhc3M9cm93IHN0eWxlPXBhZGRpbmctbGVmdDoxMHB4PjxidXR0b24gdHlwZT1idXR0b24gbmctc2hvdz1pc1NlbGVjdGVkIGNsYXNzPVwiYnRuIGJ0bi1saWdodFwiIG5nLWNsaWNrPXNhdmVNYXBwaW5ncyhzZWxlY3RlZElkKT48c3BhbiBjbGFzcz1cImZhIGZhLWZsb3BweS1vXCI+PC9zcGFuPiBVcGRhdGUgZXhpc3Rpbmc8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cInNob3dEZXRhaWxzPXRydWVcIiBjbGFzcz1cImJ0biBidG4tbGlnaHRcIj48c3BhbiBjbGFzcz1cImZhIGZhLXBsdXMtc3F1YXJlXCI+PC9zcGFuPiBTYXZlIGFzIE5ldzwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9cm93IHN0eWxlPXBhZGRpbmctbGVmdDoxMHB4IHVpYi1jb2xsYXBzZT0hc2hvd0RldGFpbHM+PGRpdj48Yj5OYW1lPC9iPiA8aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPW1hcHBpbmdOYW1lIHBsYWNlaG9sZGVyPVwiRW50ZXIgbWFwcGluZyBuYW1lLi4uXCIgY2xhc3M9Zm9ybS1jb250cm9sPjwvZGl2PjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9XCJzYXZlTWFwcGluZ3MoXFwnTmV3XFwnKVwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodFwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtZmxvcHB5LW9cIj48L3NwYW4+IFNhdmU8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cInNob3dEZXRhaWxzPWZhbHNlXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCI+Q2FuY2VsPC9idXR0b24+PC9kaXY+PC9kaXY+PC9mb3JtPicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwM19yZXNvdXJjZXMvYW5ndWxhclRlbXBsYXRlcy9tZW51c0RlZmluaXRpb24uaHRtbCcsJzxkaXYgY2xhc3M9XCJjYXJkIG10LTFcIj48ZGl2IGt0LWhlbHAtY2VudGVyIGhlbHAtaWQ9XCJcXCdtZW51ZGVmXFwnXCI+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXktYXV0b1wiPk1lbnUgZWRpdCBtb2RlPC9kaXY+PGRpdiBjbGFzcz1jb2wtYXV0bz48aSBjbGFzcz1cImZhIGZhLXRvZ2dsZS1vbiBhY3RpdmVFZGl0TW9kZVwiIHRpdGxlPShFbmFibGVkKSBuZy1pZj1tZW51cy5lZGl0TW9kZSBuZy1jbGljaz1jaGFuZ2VFZGl0TW9kZSgpOz48L2k+IDxpIGNsYXNzPVwiZmEgZmEtdG9nZ2xlLW9uIGZhLXJvdGF0ZS0xODAgaW5hY3RpdmVFZGl0TW9kZVwiIHRpdGxlPShEaXNhYmxlZCkgbmctaWY9IW1lbnVzLmVkaXRNb2RlIG5nLWNsaWNrPWNoYW5nZUVkaXRNb2RlKCk7PjwvaT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXktYXV0b1wiIG5nLWlmPW1lbnVzLmVkaXRNb2RlPkNsaWNrIG9uIG5hdmlnYXRpb24gYmFyIGxpbmsocykgdG8gZWRpdCBtZW51IGl0ZW1zPC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQgbXQtMlwiIG5nLWluaXQ9aW5pdE1lbnUoKT48ZGl2IG5nLWlmPW1lbnVzLmVkaXRNb2RlPjxkaXYgY2xhc3M9XCJib3JkZXIgbXQtMSByb3VuZGVkXCIgbmctaWY9bG9hZGluZ01lbnUgYW5pbWF0aW9uLXR5cGU9XCJcXCdmb3JtXFwnXCIga3QtcHJvY2Vzc2luZy1hbmltYXRpb24tdGltZWxpbmUgc2hvdy1tc2c9dHJ1ZSBtZXNzYWdlPVwiTG9hZGluZyBmb3JtLi4uXCI+PC9kaXY+PGRpdiBuZy1pZj1cIiFsb2FkaW5nTWVudSAmJiBtZW51X3NlcnZpY2UubmF2YmFyU2VsZWN0ZWQgJiYgbWVudV9zZXJ2aWNlLnNlbGVjdGVkTmF2YmFyIT1udWxsXCIga3QtbmF2YmFyLWRlZmluaXRpb24tZGVwcmVjYXRlZCBuYXZiYXItaXRlbT1tZW51X3NlcnZpY2Uuc2VsZWN0ZWROYXZiYXIgbG9jYWwtdmFycz1sb2NhbFZhcnM+PC9kaXY+PGRpdiBuZy1pZj1cIiFsb2FkaW5nTWVudSAmJiBtZW51X3NlcnZpY2Uuc2lkZU1lbnVTZWxlY3RlZCAmJiBtZW51X3NlcnZpY2Uuc2VsZWN0ZWRTaWRlTWVudSE9bnVsbFwiIGt0LW1lbnUtZGVmaW5pdGlvbi1kZXByZWNhdGVkIG1lbnUtaXRlbT1tZW51X3NlcnZpY2Uuc2VsZWN0ZWRTaWRlTWVudSBsb2NhbC12YXJzPWxvY2FsVmFycz48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDNfcmVzb3VyY2VzL2FuZ3VsYXJUZW1wbGF0ZXMvbmV3UmVzb3VyY2UuaHRtbCcsJzxmb3JtIG5nLXN1Ym1pdD1uZXdSZXNvdXJjZShmb3JtLiR2YWxpZCkgaWQ9bmV3Rm9ybSBuYW1lPWZvcm0gY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYga3QtaGVscC1jZW50ZXIgaGVscC1pZD1cIlxcJ25ld3Jlc291cmNlXFwnXCI+PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQgbXktM1wiIG5nLWlmPSFzZWxlY3RlZFJlc291cmNlVHlwZS5WYWx1ZT48ZGl2IGNsYXNzPVwiYm9yZGVyLWJvdHRvbSBweS0yIG14LTIgbWItNCBib3JkZXItYm90dG9tXCI+PGg1IGNsYXNzPVwidGV4dC1jZW50ZXIgbXktYXV0b1wiPkNyZWF0ZSBuZXcgcmVzb3VyY2U8L2g1PjxpbnB1dCB0eXBlPWhpZGRlbiBuZy1tb2RlbD1pZCBjbGFzcz1jb2wtNiBpZD1pZCBuYW1lPWlkPiA8aW5wdXQgdHlwZT1oaWRkZW4gbmctbW9kZWw9cmVzb3VyY2UuY3VycmVudFVzZXIgY2xhc3M9Y29sLTYgaWQ9Y3VycmVudFVzZXIgbmFtZT1jdXJyZW50VXNlcj48L2Rpdj48ZGl2IG5nLWlmPVwicmVzb3VyY2VUeXBlTGlzdCAmJiByb290c2NvcGUuZ2xvYmFscy5lbnZpbmZvXCIgY2xhc3M9XCJ3LTUwIG14LWF1dG8gbWItNCBsaXN0LWdyb3VwIGxpc3QtcmVzb3VyY2VzLW1lbnVcIj48ZGl2IG5nLWlmPXNob3dtZShyZXNvdXJjZVR5cGUuUmVzb3VyY2VDb2RlKSBrdC1wb3BvdmVyIGRhdGEtcGxhY2VtZW50PWxlZnQgdGlkPVwiXFwnbmV3cmVzb3VyY2UtXFwnK3Jlc291cmNlVHlwZS5SZXNvdXJjZUNvZGVcIiBzaG93LW9uLXN0YXJ0PVwicmVzb3VyY2VUeXBlLlJlc291cmNlQ29kZT09XFwncGFnZVxcJ1wiIGVuYWJsZT1cIihyZXNvdXJjZVR5cGUuUmVzb3VyY2VDb2RlPT1cXCdwYWdlXFwnICYmIHJvb3RzY29wZS5nbG9iYWxzLmVudmluZm8ucGFnZT09MCkgfHwgKHJlc291cmNlVHlwZS5SZXNvdXJjZUNvZGU9PVxcJ2RhdGFzZXRcXCcgJiYgcm9vdHNjb3BlLmdsb2JhbHMuZW52aW5mby5kYXRhc2V0PT0wKVwiIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24gdGV4dC1kYXJrIG1lZGl1bSBwLTFcIiBuZy1yZXBlYXQ9XCJyZXNvdXJjZVR5cGUgaW4gcmVzb3VyY2VUeXBlTGlzdCB8IGZpbHRlcjogeyBSZXNvdXJjZUNvZGU6cmVzb3VyY2VfdHlwZV9maWx0ZXJ9IHRyYWNrIGJ5IHJlc291cmNlVHlwZS5pZFwiPjxkaXYgY2xhc3M9XCJjb2wtMiB0ZXh0LWNlbnRlclwiPjxpIGNsYXNzPVwie3tyZXNvdXJjZVR5cGUuUGFyYW1ldGVycy5JY29ufX0gZmEtMnggdGV4dC1wcmltYXJ5XCI+PC9pPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtNSBib2xkXCI+e3tyZXNvdXJjZVR5cGUuUmVzb3VyY2VOYW1lfX08L2Rpdj48ZGl2IGNsYXNzPWNvbC0xMj48ZGl2IGNsYXNzPXAtMiBuZy1iaW5kLWh0bWw9cmVzb3VyY2VUeXBlLkRlc2NyPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgdGV4dC1yaWdodCBib2xkXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cInB5LTIgYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiIG5nLWNsaWNrPXJlc291cmNlVHlwZVNlbGVjdGVkKHJlc291cmNlVHlwZS5SZXNvdXJjZUNvZGUpPiZuYnNwIENyZWF0ZSBcXCd7e3Jlc291cmNlVHlwZS5SZXNvdXJjZU5hbWV9fVxcJyAmbmJzcDwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjYXJkIHctMTAwIG15LTJcIiBuZy1pZj1zZWxlY3RlZFJlc291cmNlVHlwZS5WYWx1ZT48ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgcC0xIG1iLTJcIj48YSBuZy1pZj1cIiFzYXZlU3VjY2VzcyAmJiAhc2VsZWN0ZWRSZXNvdXJjZVR5cGUuSGlkZUJhY2tcIiBjbGFzcz1cIm1iLTIgdGV4dC1wcmltYXJ5XCIgaHJlZiB0aXRsZT1cIlJldHVybiByZXNvdXJjZSB0eXBlXCIgbmctY2xpY2s9XCJzZWxlY3RlZFJlc291cmNlVHlwZS5WYWx1ZT1mYWxzZVwiPjxpIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1sZWZ0IG1yLTFcIj48L2k+IHJldHVybiB0byByZXNvdXJjZSB0eXBlIHNlbGVjdGlvbjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwidy01MCBteC1hdXRvIG1iLTQgYm9yZGVyIHJvdW5kZWQgbGlzdC1ncm91cCBsaXN0LXJlc291cmNlcy1tZW51XCI+PGRpdiBpZD1wYWdlX3N1YnR5cGVfc2VsZWN0aW9uIG5nLWlmPVwiZmFsc2UgJiYgcmVzb3VyY2UuUmVzb3VyY2VUeXBlLlJlc291cmNlQ29kZSA9PSBcXCdkYXRhc2V0XFwnXCI+PGRpdiBjbGFzcz1cIm15LTQgdGV4dC1wcmltYXJ5IHRleHQtY2VudGVyXCI+PGRpdiBjbGFzcz1oNT5TZWxlY3QgZGF0YXNldCB0eXBlPC9kaXY+PC9kaXY+PGRpdiBuZy1oaWRlPXN1YlR5cGVTZWxlY3RlZCBjbGFzcz1cImp1c3RpZnktY29udGVudC1zdGFydCBwbC0wIGxpc3QtZ3JvdXAtaXRlbSBsaXN0LWdyb3VwLWl0ZW0tYWN0aW9uIHRleHQtZGFyayBtZWRpdW1cIj48ZGl2IG5nLWlmPVwic3ViVHlwZVNlbGVjdGVkPT11bmRlZmluZWRcIiBzdHlsZT13aWR0aDoyJT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTEgdGV4dC1jZW50ZXJcIj48aSBjbGFzcz1cImZhcyBmYS1kYXRhYmFzZSBmYS0yeCB0ZXh0LXByaW1hcnlcIj48L2k+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIGJvbGQgbXgtMlwiPkRhdGFiYXNlIHRhYmxlPC9kaXY+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LW11dGVkIHNtYWxsIG14LTIgdGV4dC1jZW50ZXJcIj5EZWZpbmUgYW5kIGNyZWF0ZSBkYXRhYmFzZSB0YWJsZTwvZGl2PjxidXR0b24gbmctaGlkZT1zdWJUeXBlU2VsZWN0ZWQgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCIgbmctY2xpY2s9XCJyZXNvdXJjZXN1YlR5cGVTZWxlY3RlZChcXCdzdGFuZGFyZFxcJylcIj5DcmVhdGU8L2J1dHRvbj48L2Rpdj48ZGl2IG5nLWhpZGU9XCJzdWJUeXBlU2VsZWN0ZWQgJiYgc3ViVHlwZVNlbGVjdGVkIT1cXCdleHRlcm5hbFxcJ1wiIGNsYXNzPVwianVzdGlmeS1jb250ZW50LXN0YXJ0IHBsLTAgbGlzdC1ncm91cC1pdGVtIGxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24gdGV4dC1kYXJrIG1lZGl1bVwiPjxkaXYgbmctaWY9XCJzdWJUeXBlU2VsZWN0ZWQ9PXVuZGVmaW5lZFwiIHN0eWxlPXdpZHRoOjIlPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMSB0ZXh0LWNlbnRlclwiPjxpIHN0eWxlPXBvc2l0aW9uOmFic29sdXRlIGNsYXNzPVwiZmEgZmEtYXJyb3ctY2lyY2xlLWxlZnQgbWwtNFwiPjwvaT4gPGkgY2xhc3M9XCJmYXMgZmEtZGF0YWJhc2UgZmEtMnggdGV4dC1wcmltYXJ5XCI+PC9pPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBib2xkIG14LTJcIj5FeHRlcm5hbCB0YWJsZTwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgdGV4dC1tdXRlZCBzbWFsbCBteC0yIHRleHQtY2VudGVyXCI+Q29ubmVjdCB0byBleGlzdGluZyBkYXRhYmFzZSB0YWJsZTwvZGl2PjxidXR0b24gbmctaGlkZT1zdWJUeXBlU2VsZWN0ZWQgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCIgbmctY2xpY2s9XCJyZXNvdXJjZXN1YlR5cGVTZWxlY3RlZChcXCdleHRlcm5hbFxcJylcIj5DcmVhdGU8L2J1dHRvbj48L2Rpdj48ZGl2IG5nLWlmPWZhbHNlIG5nLWhpZGU9XCJzdWJUeXBlU2VsZWN0ZWQgJiYgc3ViVHlwZVNlbGVjdGVkIT1cXCdleHRlcm5hbFxcJ1wiIGNsYXNzPVwianVzdGlmeS1jb250ZW50LXN0YXJ0IHBsLTAgbGlzdC1ncm91cC1pdGVtIGxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24gdGV4dC1kYXJrIG1lZGl1bVwiPjxkaXYgbmctaWY9XCJzdWJUeXBlU2VsZWN0ZWQ9PXVuZGVmaW5lZFwiIHN0eWxlPXdpZHRoOjIlPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMSB0ZXh0LWNlbnRlclwiPjxpIHN0eWxlPXBvc2l0aW9uOmFic29sdXRlIGNsYXNzPVwiZmEgZmEtZXllIG1sLTRcIj48L2k+IDxpIGNsYXNzPVwiZmFzIGZhLWRhdGFiYXNlIGZhLTJ4IHRleHQtcHJpbWFyeVwiPjwvaT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gYm9sZCBteC0yXCI+UmVzb3VyY2UgdmlldzwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgdGV4dC1tdXRlZCBzbWFsbCBteC0yIHRleHQtY2VudGVyXCI+Q29tYmluZSBtdWx0aXBsZSBkYXRhIHNvdXJjZXMgaW50byBhIHNpbmdsZSB2aWV3PC9kaXY+PGJ1dHRvbiBuZy1oaWRlPXN1YlR5cGVTZWxlY3RlZCB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiBuZy1jbGljaz1cInJlc291cmNlc3ViVHlwZVNlbGVjdGVkKFxcJ3ZpZXdcXCcpXCI+Q3JlYXRlPC9idXR0b24+PC9kaXY+PGRpdiBuZy1pZj1mYWxzZSBuZy1oaWRlPVwic3ViVHlwZVNlbGVjdGVkICYmIHN1YlR5cGVTZWxlY3RlZCE9XFwnYXBpXFwnXCIgY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgcGwtMCBsaXN0LWdyb3VwLWl0ZW0gbGlzdC1ncm91cC1pdGVtLWFjdGlvbiB0ZXh0LWRhcmsgbWVkaXVtXCI+PGRpdiBuZy1pZj1cInN1YlR5cGVTZWxlY3RlZD09dW5kZWZpbmVkXCIgc3R5bGU9d2lkdGg6MiU+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0xIHRleHQtY2VudGVyXCI+PGkgY2xhc3M9XCJmYSBmYS1jbG91ZC1kb3dubG9hZC1hbHQgZmEtMnggdGV4dC1wcmltYXJ5XCI+PC9pPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBib2xkIG14LTJcIj5BUEkgcHJveHkgZGF0YXNldDwvZGl2PjxidXR0b24gbmctaGlkZT1zdWJUeXBlU2VsZWN0ZWQgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCIgbmctY2xpY2s9XCJyZXNvdXJjZXN1YlR5cGVTZWxlY3RlZChcXCdhcGlcXCcpXCI+Q3JlYXRlPC9idXR0b24+PC9kaXY+PGRpdiBuZy1pZj1mYWxzZSBuZy1oaWRlPVwic3ViVHlwZVNlbGVjdGVkICYmIHN1YlR5cGVTZWxlY3RlZCE9XFwnc21hcnRjb250cmFjdFxcJ1wiIGNsYXNzPVwianVzdGlmeS1jb250ZW50LXN0YXJ0IHBsLTAgbGlzdC1ncm91cC1pdGVtIGxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24gdGV4dC1kYXJrIG1lZGl1bVwiPjxkaXYgbmctaWY9XCJzdWJUeXBlU2VsZWN0ZWQ9PXVuZGVmaW5lZFwiIHN0eWxlPXdpZHRoOjIlPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMSB0ZXh0LWNlbnRlclwiPjxpIGNsYXNzPVwiZmEgZmEtY29kZSBmYS0yeCB0ZXh0LXByaW1hcnlcIj48L2k+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIGJvbGQgbXgtMlwiPlNtYXJ0Y29udHJhY3QgZGF0YXNldDwvZGl2PjxidXR0b24gbmctaGlkZT1zdWJUeXBlU2VsZWN0ZWQgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCIgbmctY2xpY2s9XCJyZXNvdXJjZXN1YlR5cGVTZWxlY3RlZChcXCdzbWFydGNvbnRyYWN0XFwnKVwiPkNyZWF0ZTwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJ3LTEwMCBteS0yIHB4LTRcIiBuZy1pZj1cInNlbGVjdGVkUmVzb3VyY2VUeXBlLlZhbHVlICYmIHN1YlR5cGVTZWxlY3RlZFwiPjxkaXYgY2xhc3M9XCJoNCBib3JkZXItYm90dG9tIHRleHQtY2VudGVyIHB5LTEgbWItNFwiPjxpIGNsYXNzPVwie3tyZXNvdXJjZS5SZXNvdXJjZVR5cGUuUGFyYW1ldGVycy5JY29ufX0gbS0xIGZhLTF4IHRleHQtcHJpbWFyeVwiPjwvaT4ge3tyZXNvdXJjZS5SZXNvdXJjZVR5cGUuUmVzb3VyY2VOYW1lfX0gZGVmaW5pdGlvbjwvZGl2PjxkaXYgbmctc2hvdz1cInJlc291cmNlLnJlc291cmNlSUQgIT0gbnVsbCB8fCByZXNvdXJjZS5yZXNvdXJjZUlEID4gMFwiPjxsYWJlbCBjbGFzcz1jb2wtbGctMjQgZm9yPXJlc291cmNlSUQ+e3tyZXNvdXJjZS5SZXNvdXJjZVR5cGUuUmVzb3VyY2VOYW1lfX0gSUQ8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTg+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1yZXNvdXJjZS5yZXNvdXJjZUlEIGlkPXJlc291cmNlSUQgbmctZGlzYWJsZWQ9dHJ1ZSBjbGFzcz1mb3JtLWNvbnRyb2w+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5OYW1lLiR0b3VjaGVkKSAmJiBmb3JtLk5hbWUuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtbGctMjQgZm9yPXJlc291cmNlTmFtZT57eyByZXNvdXJjZS5SZXNvdXJjZVR5cGUuUmVzb3VyY2VOYW1lfX0gbmFtZTwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1yZXNvdXJjZS5OYW1lIG5nLXJlcXVpcmVkPXRydWUgbmctZGlzYWJsZWQ9c2F2ZVN1Y2Nlc3MgY2xhc3M9Zm9ybS1jb250cm9sIGlkPU5hbWUgbmFtZT1OYW1lIHBsYWNlaG9sZGVyPVwie3sgcmVzb3VyY2UuUmVzb3VyY2VUeXBlLm5hbWV9fSBuYW1lXCIgbmctY2xhc3M9XCJ7XFwnYm9yZGVyLWRhbmdlclxcJzooZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uTmFtZS4kdG91Y2hlZCkgJiYgZm9ybS5OYW1lLiRpbnZhbGlkfVwiPjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uTmFtZS4kdG91Y2hlZCkgJiYgZm9ybS5OYW1lLiRpbnZhbGlkXCIgY2xhc3M9c21hbGw+PHNwYW4gc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjOTcxOTE5O3BhZGRpbmc6IDNweDtjb2xvcjogd2hpdGU7XCI+RW50ZXIge3sgcmVzb3VyY2UuUmVzb3VyY2VUeXBlLlJlc291cmNlTmFtZX19IG5hbWUgITwvc3Bhbj48L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5TdWJqZWN0LiR0b3VjaGVkKSAmJiBmb3JtLlN1YmplY3QuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtbGctMjQgZm9yPVN1YmplY3Q+e3sgcmVzb3VyY2UuUmVzb3VyY2VUeXBlLlJlc291cmNlTmFtZX19IHN1YmplY3Q8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9cmVzb3VyY2UuU3ViamVjdCBuZy1kaXNhYmxlZD1zYXZlU3VjY2VzcyBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1TdWJqZWN0IG5hbWU9U3ViamVjdCBwbGFjZWhvbGRlcj1cInt7IHJlc291cmNlLlJlc291cmNlVHlwZS5uYW1lfX0gc3ViamVjdFwiIG5nLWNsYXNzPVwie1xcJ2JvcmRlci1kYW5nZXJcXCc6KGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLlN1YmplY3QuJHRvdWNoZWQpICYmIGZvcm0uU3ViamVjdC4kaW52YWxpZH1cIj48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLlN1YmplY3QuJHRvdWNoZWQpICYmIGZvcm0uU3ViamVjdC4kaW52YWxpZFwiIGNsYXNzPVwic21hbGwgdGV4dC1kYW5nZXJcIj48c3BhbiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICM5NzE5MTk7cGFkZGluZzogM3B4O2NvbG9yOiB3aGl0ZTtcIj5FbnRlciB7eyByZXNvdXJjZS5SZXNvdXJjZVR5cGUuUmVzb3VyY2VOYW1lfX0gc3ViamVjdCAhPC9zcGFuPjwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLkRlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtLkRlc2NyaXB0aW9uLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTI0IGZvcj1EZXNjcmlwdGlvbj57eyByZXNvdXJjZS5SZXNvdXJjZVR5cGUuUmVzb3VyY2VOYW1lfX0gZGVzY3JpcHRpb248L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTI0Pjx0ZXh0YXJlYSBuZy1tb2RlbD1yZXNvdXJjZS5EZXNjcmlwdGlvbiBuYW1lPURlc2NyaXB0aW9uIG5nLXJlcXVpcmVkPXRydWUgbmctZGlzYWJsZWQ9c2F2ZVN1Y2Nlc3MgbmctbWluLWxlbmd0aD0yMCBuZy1jbGFzcz1cIntcXCdib3JkZXItZGFuZ2VyXFwnOihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5EZXNjcmlwdGlvbi4kdG91Y2hlZCkgJiYgZm9ybS5EZXNjcmlwdGlvbi4kaW52YWxpZH1cIiBjbGFzcz1mb3JtLWNvbnRyb2w+PC90ZXh0YXJlYT48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLkRlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtLkRlc2NyaXB0aW9uLiRpbnZhbGlkXCIgY2xhc3M9XCJzbWFsbCB0ZXh0LWRhbmdlclwiPjxzcGFuIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogIzk3MTkxOTtwYWRkaW5nOiAzcHg7Y29sb3I6IHdoaXRlO1wiPkVudGVyIHt7IHJlc291cmNlLlJlc291cmNlVHlwZS5SZXNvdXJjZU5hbWV9fSBkZXNjcmlwdGlvbihtaW4gMjAgY2hhcnMpICE8L3NwYW4+PC9wPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJyZXNvdXJjZS5SZXNvdXJjZVR5cGUudmFsdWU9PVxcJ3Rhc2tcXCdcIiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ucmVzb3VyY2VUYWdzLiR0b3VjaGVkKSAmJiBmb3JtLnJlc291cmNlVGFncy4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1sZy0yNCBmb3I9ZGRsUmVzb3VyY2VUeXBlPiNIYXNoVGFnczwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctOD48dWktc2VsZWN0IG5nLW1vZGVsPXJlc291cmNlLlRhZ3MgdWktc2VsZWN0LW11bHRpcGxlLWxpc3QgbmctZGlzYWJsZWQ9ZGlzYWJsZWQgbmFtZT1yZXNvdXJjZVR5cGUgbmctcmVxdWlyZWQ9ZmFsc2UgcmVzZXQtc2VhcmNoLWlucHV0PWZhbHNlPjx1aS1zZWxlY3QtbWF0Y2ggY2xhc3M9dWktc2VsZWN0LW1hdGNoIHBsYWNlaG9sZGVyPVwiU2VhcmNoIG9yIHNlbGVjdCByZXNvdXJjZSAjaGFzaHRhZ3MuLi5cIj48c3BhbiBjbGFzcz1wLTA+e3skc2VsZWN0LnNlbGVjdGVkLm5hbWV9fSA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmsgcC0wXCIgbmctY2xpY2s9XCJjbGVhcigkZXZlbnQsICRzZWxlY3QpXCI+PGkgY2xhc3M9XCJtbC0zIGZhIGZhLXRpbWVzIGZsb2F0LXJpZ2h0XCI+PC9pPjwvYT48L3NwYW4+PC91aS1zZWxlY3QtbWF0Y2g+PHVpLXNlbGVjdC1jaG9pY2VzIGNsYXNzPXVpLXNlbGVjdC1jaG9pY2VzIHJlcGVhdD1cInJ0IGluIChyZXNvdXJjZVRhZ3NMaXN0IHwgZmlsdGVyOiB7IG5hbWU6ICRzZWxlY3Quc2VhcmNoIH0pIHRyYWNrIGJ5IHJ0LmlkXCIgcmVmcmVzaD1yZWZyZXNoUmVzdWx0cygkc2VsZWN0KSByZWZyZXNoLWRlbGF5PTA+PHNwYW4+e3tydC5uYW1lfX08L3NwYW4+PC91aS1zZWxlY3QtY2hvaWNlcz48L3VpLXNlbGVjdD48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnJlc291cmNlVGFncy4kdG91Y2hlZCkgJiYgZm9ybS5yZXNvdXJjZVRhZ3MuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPlNlbGVjdCByZXNvdXJjZSBoYXNodGFnczwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0yNCBuZy1pZj1cInJlc291cmNlLlJlc291cmNlVHlwZS52YWx1ZT09XFwnZGF0YXNldFxcJyB8fCByZXNvdXJjZS5SZXNvdXJjZVR5cGUudmFsdWU9PVxcJ2ZpbGVcXCdcIj48YSBocmVmIG5nLWNsaWNrPXNldEltbXV0YWJsZSgpIHN0eWxlPVwidGV4dC1kZWNvcmF0aW9uOiBub25lO1wiPjxpIG5nLWNsYXNzPVwie1xcJ2ZhIGZhLWxvY2sgdGV4dC1zdWNjZXNzXFwnOnJlc291cmNlLklzQmxvY2tjaGFpbiwgXFwnZmEgZmEtdW5sb2NrIHRleHQtZGFuZ2VyXFwnOiFyZXNvdXJjZS5Jc0Jsb2NrY2hhaW59XCI+Jm5ic3Age3tyZXNvdXJjZS5SZXNvdXJjZVR5cGUubmFtZX19IGlzIGltbXV0YWJsZSAoc2VjdXJlZCBvbiB0aGUgYmxvY2tjaGFpbikgJm5ic3A8L2k+IDxpIGNsYXNzPVwiZmFyIGZhLWNoZWNrLXNxdWFyZSB0ZXh0LXN1Y2Nlc3NcIiBuZy1pZj1yZXNvdXJjZS5Jc0Jsb2NrY2hhaW4+PC9pPiA8aSBjbGFzcz1cImZhciBmYS1zcXVhcmUgdGV4dC1kYW5nZXJcIiBuZy1pZj0hcmVzb3VyY2UuSXNCbG9ja2NoYWluPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBtdC0yIG1iLTJcIiBuZy1pZj0hc2F2ZVN1Y2Nlc3M+PGJ1dHRvbiB0eXBlPXN1Ym1pdCBpZD1jbGVhckJ0biBuZy1kaXNhYmxlZD1cImZvcm0uJGludmFsaWQgfHwgc2F2aW5nUmVzb3VyY2VcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zdWNjZXNzXCI+PGkgY2xhc3M9XCJmYSBmYS1zYXZlXCI+PC9pPjxzcGFuIGNsYXNzPW1sLTE+U2F2ZTwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Zvcm0+PGRpdiBuZy1pZj1zYXZlU3VjY2VzcyBjbGFzcz1cImNvbC1sZy0yNCBteS0zXCI+PGRpdiBjbGFzcz1cImNhcmQgbS0xXCI+PGRpdiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIiBjbGFzcz1cInAtMSByb3cgbXgtMVwiPjxzcGFuIGNsYXNzPXRhZz5HbyB0byB7e3Jlc291cmNlLlJlc291cmNlVHlwZS5uYW1lfX0gZGVmaW5pdGlvbjwvc3Bhbj48L2Rpdj48Zm9ybSBuZy1pZj1cInN1YlR5cGVTZWxlY3RlZD09XFwnZXh0ZXJuYWxcXCdcIiB1aWItY29sbGFwc2U9ZmFsc2Ugbmctc3VibWl0PXNhdmVSZXNvdXJjZURlZihmb3JtMS4kdmFsaWQpIGlkPWVkaXREYXRhc2V0Rm9ybSBuYW1lPWZvcm0xIGNsYXNzPWZvcm0taG9yaXpvbnRhbCByb2xlPWZvcm0+PGRpdiBjbGFzcz1cImNvbC1sZy0xMiBweC0xXCI+PGlucHV0IHR5cGU9aGlkZGVuIGNsYXNzPWN1c3RvbS1jb250cm9sLWlucHV0IGlkPWNiSXNleHRlcm5hbERhdGFTb3VyY2UgbmctbW9kZWw9cmVzb3VyY2UuUGFyYW1ldGVycy5leHRlcm5hbERhdGFTb3VyY2UgbmctaW5pdD1cInJlc291cmNlLlBhcmFtZXRlcnMuZXh0ZXJuYWxEYXRhU291cmNlID0gc3ViVHlwZVNlbGVjdGVkPT1cXCdleHRlcm5hbFxcJyA/IHRydWU6ZmFsc2VcIj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtMS4kc3VibWl0dGVkIHx8IGZvcm0xLmV4dERhdGFTb3VyY2VMaW5rLiR0b3VjaGVkKSAmJiBmb3JtMS5leHREYXRhU291cmNlTGluay4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1sZy0yNCBmb3I9ZXh0RGF0YVNvdXJjZUxpbms+TGluayB0byBleHRlcm5hbCBkYXRhIHNvdXJjZTwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1yZXNvdXJjZS5QYXJhbWV0ZXJzLmV4dERhdGFTb3VyY2VMaW5rIG5nLXJlcXVpcmVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPWV4dERhdGFTb3VyY2VMaW5rIG5hbWU9ZXh0RGF0YVNvdXJjZUxpbmsgcGxhY2Vob2xkZXI9XCJFeHRlcm5hbCByZXNvdXJjZVwiPjxwIG5nLXNob3c9XCIoZm9ybTEuJHN1Ym1pdHRlZCB8fCBmb3JtMS5leHREYXRhU291cmNlTGluay4kdG91Y2hlZCkgJiYgZm9ybTEuZXh0RGF0YVNvdXJjZUxpbmsuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkV4dGVybmFsIHJlc291cmNlIGxpbms8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm0tMiBjdXN0b20tY29udHJvbCBjdXN0b20tY2hlY2tib3hcIj48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1jdXN0b20tY29udHJvbC1pbnB1dCBpZD1jYkNyZWF0ZURhdGFTb3VyY2UgbmctbW9kZWw9cmVzb3VyY2UuUGFyYW1ldGVycy5jcmVhdGVEYXRhU291cmNlPiA8bGFiZWwgY2xhc3M9XCJjdXN0b20tY29udHJvbC1sYWJlbCBsYWJlbC14c1wiIGZvcj1jYkNyZWF0ZURhdGFTb3VyY2U+Q3JlYXRlIGRhdGEgc291cmNlPzwvbGFiZWw+PC9kaXY+PGRpdiBuZy1oaWRlPVwic2F2ZVN1Y2Nlc3MgJiYgc2F2ZVN1Y2Nlc3MyXCIgY2xhc3M+PGJ1dHRvbiB0eXBlPXN1Ym1pdCBpZD1zYXZlRGF0YVNvdXJjZUJ0biBuZy1kaXNhYmxlZD1mb3JtMS4kaW52YWxpZCBjbGFzcz1cImJ0biBidG4tc20gYnRuLXN1Y2Nlc3MgbXktMlwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtc2F2ZSBtci0yXCI+PC9zcGFuPlNhdmUgZGF0YSBzb3VyY2U8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Zvcm0+PGRpdiBjbGFzcz1tLTMgbmctaWY9XCJzdWJUeXBlU2VsZWN0ZWQ9PVxcJ2V4dGVybmFsXFwnICYmIHNhdmVTdWNjZXNzICYmIHNhdmVTdWNjZXNzMlwiIGlkPTM+PGJ1dHRvbiB0eXBlPWJ1dHRvbiB1aS1zcmVmPVwie3tyZXNvdXJjZS5SZXNvdXJjZVR5cGUuUGFyYW1ldGVycy5EZWZpbml0aW9uUGFnZX19KHtpZDpyZXNvdXJjZS51aWQsIHN1YlR5cGVTZWxlY3RlZDpzdWJUeXBlU2VsZWN0ZWQgfSlcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zdWNjZXNzXCI+TmV4dCA8c3BhbiBjbGFzcz1cImZhIGZhLWFycm93LXJpZ2h0IG1sLTJcIj48L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiBuZy1pZj1cInN1YlR5cGVTZWxlY3RlZCE9XFwnZXh0ZXJuYWxcXCdcIiBjbGFzcz1tLTMgaWQ9Mz48YnV0dG9uIHR5cGU9YnV0dG9uIHVpLXNyZWY9XCJ7e3Jlc291cmNlLlJlc291cmNlVHlwZS5QYXJhbWV0ZXJzLkRlZmluaXRpb25QYWdlfX0oe2lkOnJlc291cmNlLnVpZCwgc3ViVHlwZVNlbGVjdGVkOnN1YlR5cGVTZWxlY3RlZCB9KVwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXN1Y2Nlc3NcIj5OZXh0IDxzcGFuIGNsYXNzPVwiZmEgZmEtYXJyb3ctcmlnaHQgbWwtMlwiPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDNfcmVzb3VyY2VzL2FuZ3VsYXJUZW1wbGF0ZXMvbmV3UmVzb3VyY2VfdjFfbXVsdGlzZWxlY3QuaHRtbCcsJzxmb3JtIG5nLXN1Ym1pdD1uZXdSZXNvdXJjZShmb3JtLiR2YWxpZCkgaWQ9bmV3Rm9ybSBuYW1lPWZvcm0gY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBuZy1jb250cm9sbGVyPVwibmV3UmVzb3VyY2VDdHJsIGFzIG5yY1wiIG5vdmFsaWRhdGU+PGRpdiBjbGFzcz10ZXh0LWNlbnRlcj48aDM+TmV3IHJlc291cmNlPC9oMz48L2Rpdj48aHI+PGlucHV0IHR5cGU9aGlkZGVuIG5nLW1vZGVsPWlkIGNsYXNzPWNvbC14cy02IGlkPWlkIG5hbWU9aWQ+IDxpbnB1dCB0eXBlPWhpZGRlbiBuZy1tb2RlbD1yZXNvdXJjZS5jdXJyZW50VXNlciBjbGFzcz1jb2wteHMtNiBpZD1jdXJyZW50VXNlciBuYW1lPWN1cnJlbnRVc2VyPjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHJvd1wiIG5nLXNob3c9XCJyZXNvdXJjZS5yZXNvdXJjZUlEICE9IG51bGwgfHwgcmVzb3VyY2UucmVzb3VyY2VJRCA+IDBcIj48bGFiZWwgY2xhc3M9Y29sLXNtLTIgZm9yPXJlc291cmNlSUQ+UmVzb3VyY2UgSUQ8L2xhYmVsPjxkaXY+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1yZXNvdXJjZS5yZXNvdXJjZUlEIGlkPXJlc291cmNlSUQgbmctZGlzYWJsZWQ9dHJ1ZSBjbGFzcz1mb3JtLWNvbnRyb2w+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ucmVzb3VyY2VOYW1lLiR0b3VjaGVkKSAmJiBmb3JtLnJlc291cmNlTmFtZS4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1zbS0yIGZvcj1yZXNvdXJjZU5hbWU+UmVzb3VyY2UgbmFtZTwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtc20tNj48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPXJlc291cmNlLnJlc291cmNlTmFtZSBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1yZXNvdXJjZU5hbWUgbmFtZT1yZXNvdXJjZU5hbWUgcGxhY2Vob2xkZXI9XCJSZXNvdXJjZSBuYW1lXCI+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5yZXNvdXJjZU5hbWUuJHRvdWNoZWQpICYmIGZvcm0ucmVzb3VyY2VOYW1lLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5FbnRlciByZXNvdXJjZSBuYW1lPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnJlc291cmNlRGVzY3JpcHRpb24uJHRvdWNoZWQpICYmIGZvcm0ucmVzb3VyY2VEZXNjcmlwdGlvbi4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1zbS0yIGZvcj1yZXNvdXJjZURlc2NyaXB0aW9uPlJlc291cmNlIGRlc2NyaXB0aW9uPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1zbS02Pjx0ZXh0YXJlYSBuZy1tb2RlbD1yZXNvdXJjZS5yZXNvdXJjZURlc2NyaXB0aW9uIG5hbWU9cmVzb3VyY2VEZXNjcmlwdGlvbiBuZy1yZXF1aXJlZD10cnVlIG5nLW1pbi1sZW5ndGg9MjAgY2xhc3M9Zm9ybS1jb250cm9sPjwvdGV4dGFyZWE+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5yZXNvdXJjZURlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtLnJlc291cmNlRGVzY3JpcHRpb24uJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIHJlc291cmNlIGRlc2NyaXB0aW9uKG1pbiAyMCBjaGFycykuPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnJlc291cmNlVHlwZS4kdG91Y2hlZCkgJiYgZm9ybS5yZXNvdXJjZVR5cGUuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtc20tMiBmb3I9ZGRsUmVzb3VyY2VUeXBlPlJlc291cmNlIHR5cGU8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLXNtLTY+PHVpLXNlbGVjdCBuZy1tb2RlbD1yZXNvdXJjZS5yZXNvdXJjZVR5cGUgbmctZGlzYWJsZWQ9ZGlzYWJsZWQgbmFtZT1yZXNvdXJjZVR5cGUgbmctcmVxdWlyZWQ9dHJ1ZSByZXNldC1zZWFyY2gtaW5wdXQ9ZmFsc2U+PHVpLXNlbGVjdC1tYXRjaCBwbGFjZWhvbGRlcj1cIlNlYXJjaCBvciBzZWxlY3QgcmVzb3VyY2UgdHlwZS4uLlwiPjxzcGFuPnt7JHNlbGVjdC5zZWxlY3RlZC5uYW1lfX08L3NwYW4+IDxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGluayBmbG9hdC1yaWdodFwiIG5nLWNsaWNrPVwiY2xlYXIoJGV2ZW50LCAkc2VsZWN0KVwiPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+PC9hPjwvdWktc2VsZWN0LW1hdGNoPjx1aS1zZWxlY3QtY2hvaWNlcyByZXBlYXQ9XCJydCBpbiAocmVzb3VyY2VUeXBlTGlzdCB8IGZpbHRlcjogeyBuYW1lOiAkc2VsZWN0LnNlYXJjaCB9KSB0cmFjayBieSBydC5pZFwiIHJlZnJlc2g9cmVmcmVzaFJlc3VsdHMoJHNlbGVjdCkgcmVmcmVzaC1kZWxheT0wPjxzcGFuPnt7cnQubmFtZX19PC9zcGFuPjwvdWktc2VsZWN0LWNob2ljZXM+PC91aS1zZWxlY3Q+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5yZXNvdXJjZVR5cGUuJHRvdWNoZWQpICYmIGZvcm0ucmVzb3VyY2VUeXBlLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5TZWxlY3QgcmVzb3VyY2UgdHlwZTwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5yZXNvdXJjZVN0YXR1cy4kdG91Y2hlZCkgJiYgZm9ybS5yZXNvdXJjZVN0YXR1cy4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1zbS0yIGZvcj1kZGxSZXNvdXJjZVN0YXR1cz5SZXNvdXJjZSBzdGF0dXM8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLXNtLTY+PHVpLXNlbGVjdCBuZy1tb2RlbD1yZXNvdXJjZS5yZXNvdXJjZVN0YXR1cyBuZy1kaXNhYmxlZD1kaXNhYmxlZCBuYW1lPXJlc291cmNlU3RhdHVzIG5nLXJlcXVpcmVkPXRydWUgcmVzZXQtc2VhcmNoLWlucHV0PWZhbHNlPjx1aS1zZWxlY3QtbWF0Y2ggcGxhY2Vob2xkZXI9XCJTZWFyY2ggb3Igc2VsZWN0IHJlc291cmNlIHN0YXR1cy4uLlwiPjxzcGFuPnt7JHNlbGVjdC5zZWxlY3RlZC5uYW1lfX08L3NwYW4+IDxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGluayBmbG9hdC1yaWdodFwiIG5nLWNsaWNrPVwiY2xlYXIoJGV2ZW50LCAkc2VsZWN0KVwiPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+PC9hPjwvdWktc2VsZWN0LW1hdGNoPjx1aS1zZWxlY3QtY2hvaWNlcyByZXBlYXQ9XCJycyBpbiAocmVzb3VyY2VTdGF0dXNMaXN0IHwgZmlsdGVyOiB7IG5hbWU6ICRzZWxlY3Quc2VhcmNoIH0pIHRyYWNrIGJ5IHJzLmlkXCIgcmVmcmVzaD1yZWZyZXNoUmVzdWx0cygkc2VsZWN0KSByZWZyZXNoLWRlbGF5PTA+PHNwYW4+e3tycy5uYW1lfX08L3NwYW4+PC91aS1zZWxlY3QtY2hvaWNlcz48L3VpLXNlbGVjdD48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnJlc291cmNlU3RhdHVzLiR0b3VjaGVkKSAmJiBmb3JtLnJlc291cmNlU3RhdHVzLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5TZWxlY3QgcmVzb3VyY2Ugc3RhdHVzPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnJlc291cmNlVGVzdC4kdG91Y2hlZCkgJiYgZm9ybS5yZXNvdXJjZVRlc3QuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtc20tMiBmb3I+UmVzb3VyY2UgdGVzdDwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtc20tNj48dWktc2VsZWN0IHVpLXNlbGVjdC1tdWx0aXBsZS1saXN0dWktc2VsZWN0LW11bHRpcGxlLWxpc3QgbXVsdGlwbGUtbGlzdCBuZy1tb2RlbD1yZXNvdXJjZS5yZXNvdXJjZVRlc3QgbmctZGlzYWJsZWQ9ZGlzYWJsZWQgbmFtZT1yZXNvdXJjZVRlc3QgbmctcmVxdWlyZWQ9dHJ1ZSByZXNldC1zZWFyY2gtaW5wdXQ9ZmFsc2U+PHVpLXNlbGVjdC1tYXRjaCBwbGFjZWhvbGRlcj1cIlNlYXJjaCBvciBzZWxlY3QgcmVzb3VyY2UgdGVzdC4uLlwiPjxzcGFuPnt7JHNlbGVjdC5zZWxlY3RlZC5uYW1lfX08L3NwYW4+IDxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGluayBmbG9hdC1yaWdodFwiIG5nLWNsaWNrPVwiJHNlbGVjdC5jbGVhcigkZXZlbnQsICRzZWxlY3QpXCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2E+PC91aS1zZWxlY3QtbWF0Y2g+PHVpLXNlbGVjdC1jaG9pY2VzIHJlcGVhdD1cInJzIGluIChyZXNvdXJjZVN0YXR1c0xpc3QgfCBmaWx0ZXI6IHsgbmFtZTogJHNlbGVjdC5zZWFyY2ggfSkgdHJhY2sgYnkgcnMuaWRcIiByZWZyZXNoPXJlZnJlc2hSZXN1bHRzKCRzZWxlY3QpIHJlZnJlc2gtZGVsYXk9MD48c3Bhbj57e3JzLm5hbWV9fTwvc3Bhbj48L3VpLXNlbGVjdC1jaG9pY2VzPjwvdWktc2VsZWN0PjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ucmVzb3VyY2VUZXN0LiR0b3VjaGVkKSAmJiBmb3JtLnJlc291cmNlVGVzdC4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+U2VsZWN0IHJlc291cmNlIHRlc3Q8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb250cm9sLWdyb3VwPjxidXR0b24gdHlwZT1idXR0b24gaWQ9Y2xlYXJCdG4gbmctZGlzYWJsZWQ9Zm9ybS4kaW52YWxpZCBjbGFzcz1cImJ0biBidG4tbGlnaHRcIiBuZy1jbGljaz1uZXdSZXNvdXJjZVRlc3QocmVzb3VyY2UpPjxzcGFuIGNsYXNzPVwiZmEgZmEtc2F2ZVwiPjwvc3Bhbj5TYXZlIG5ldyByZXNvdXJjZSBkZWZpbml0aW9uPC9idXR0b24+PGJyPjxicj48L2Rpdj48L2Zvcm0+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAzX3Jlc291cmNlcy9hbmd1bGFyVGVtcGxhdGVzL25vdGlmaWNhdGlvbkRlZmluaXRpb24uaHRtbCcsJzxkaXYgaWQ9bm90aWZpY2F0aW9uRGVmaW5pdGlvbkNvbXBvbmVudCBjbGFzcz1tLTM+PGRpdiBrdC1oZWxwLWNlbnRlciBoZWxwLWlkPVwiXFwnbm90aWZpY2F0aW9uZGVmXFwnXCI+PC9kaXY+PGRpdiBjbGFzcz1tdC0xPjxkaXYgY2xhc3M9XCJjYXJkIHAtMSBteS0yXCIgc3R5bGU+PGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHAtMSBmbnQxMlwiPk5vdGlmaWNhdGlvbjwvZGl2PjxhIHN0eWxlPXBvc2l0aW9uOmFic29sdXRlIGNsYXNzPVwidGV4dC1wcmltYXJ5IHAtMlwiIGhyZWYgdGl0bGU9e3tyZXR1cm5TdGF0ZS5MYWJlbH19IG5nLWNsaWNrPXJldHVyblRvUHJldmlvdXNQYWdlKCk+PGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1sZWZ0IG1yLTFcIj48L2k+IFJldHVybiB0byByZXNvdXJjZSBsaXN0PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjYXJkIHJvdyBtLTBcIj48ZGl2IGt0LXJlc291cmNlLWRlZmluaXRpb24gcmVzb3VyY2U9cmVzb3VyY2U+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQgbXQtMlwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wIHAtMiBib3JkZXItYm90dG9tXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiB0aXRsZT1cIkRlZmluZSBtZXNzYWdlXCIgcm9sZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgbmctY2xpY2s9R290b01lc3NhZ2VEZWYoKT5EZWZpbmUgbm90aWZpY2F0aW9uIG1lc3NhZ2U8L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBwLTJcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTEyIGJvcmRlci1yaWdodFwiPjxzcGFuIGNsYXNzPVwiYm9sZCBzbWFsbCBib3JkZXItYm90dG9tIGJvcmRlci1wcmltYXJ5IHRleHQtcHJpbWFyeVwiPkRlZmluZSBub3RpZmljYXRpb24gcmVjZXBpZW50czwvc3Bhbj48ZGl2IGNsYXNzPW10LTM+PGxhYmVsIGNsYXNzPWxhYmVsLXhzIGZvcj1jYlRhc2tDcmVhdG9yPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPW1yLTIgc3R5bGU9dHJhbnNmb3JtOnNjYWxlKDEuMjUpIG5hbWU9Y2JUYXNrQ3JlYXRvciBpZD1jYlRhc2tDcmVhdG9yIG5nLW1vZGVsPXJlc291cmNlLlBhcmFtZXRlcnMuVGFza0NyZWF0b3I+IFRhc2sgY3JlYXRvcjwvbGFiZWw+PC9kaXY+PGRpdj48bGFiZWwgY2xhc3M9bGFiZWwteHMgZm9yPWNiVGFza093bmVyPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPW1yLTIgc3R5bGU9dHJhbnNmb3JtOnNjYWxlKDEuMjUpIG5hbWU9Y2JUYXNrT3duZXIgaWQ9Y2JUYXNrT3duZXIgbmctbW9kZWw9cmVzb3VyY2UuUGFyYW1ldGVycy5UYXNrT3duZXI+IFRhc2sgb3duZXI8L2xhYmVsPjwvZGl2PjxkaXY+PGxhYmVsIGNsYXNzPWxhYmVsLXhzIGZvcj1jYlVzZXJHcm91cHM+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9bXItMiBzdHlsZT10cmFuc2Zvcm06c2NhbGUoMS4yNSkgbmFtZT1jYlVzZXJHcm91cHMgaWQ9Y2JVc2VyR3JvdXBzIG5nLW1vZGVsPXJlc291cmNlLlBhcmFtZXRlcnMuVXNlckdyb3Vwc01hbnVhbD4gVXNlciBhbmQgZ3JvdXBzIC0gbWFudWFsIHNlbGVjdGlvbjwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1tdC0yIG5nLWlmPXJlc291cmNlLlBhcmFtZXRlcnMuVXNlckdyb3Vwc01hbnVhbD48bGFiZWwgY2xhc3M9dGV4dC1tdXRlZCBmb3I9dXNlcjE+U2VsZWN0IHVzZXJzPC9sYWJlbD48ZGl2IGt0LXNlbGVjdC11c2Vycy13aXRoLXNjb3BlIHNlbGVjdC1pZD0xIHNpemU9XCJcXCdzbWFsbFxcJ1wiIHNlbGVjdGVkLWl0ZW1zPXJlc291cmNlLlBhcmFtZXRlcnMuVXNlcnM+PC9kaXY+PGxhYmVsIGNsYXNzPXRleHQtbXV0ZWQgZm9yPWdyb3VwMT5TZWxlY3QgZ3JvdXBzPC9sYWJlbD48ZGl2IGt0LXNlbGVjdC1ncm91cHMtd2l0aC1zY29wZSBzZWxlY3QtaWQ9MSBzaXplPVwiXFwnc21hbGxcXCdcIiBzZWxlY3RlZC1pdGVtcz1yZXNvdXJjZS5QYXJhbWV0ZXJzLlVzZXJHcm91cHNNYW51YWwuR3JvdXBzPjwvZGl2PjwvZGl2PjxkaXY+PGxhYmVsIGNsYXNzPWxhYmVsLXhzIGZvcj1jYlVzZXJHcm91cHM+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9bXItMiBzdHlsZT10cmFuc2Zvcm06c2NhbGUoMS4yNSkgbmFtZT1jYlVzZXJHcm91cHNEYXRhc2V0cyBpZD1jYlVzZXJHcm91cHNEYXRhc2V0cyBuZy1tb2RlbD1yZXNvdXJjZS5QYXJhbWV0ZXJzLlVzZXJHcm91cHNUYWdzPiBVc2VyIGFuZCBncm91cHMgZnJvbSBkYXRhc2V0czwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1tdC0yIG5nLWlmPXJlc291cmNlLlBhcmFtZXRlcnMuVXNlckdyb3Vwc1RhZ3MgbmctZm9ybT1kYXRhc2V0VGFnRm9ybT48bGFiZWwgY2xhc3M9dGV4dC1tdXRlZCBmb3I9dXNlcjI+U2VsZWN0IHVzZXIgdGFnPC9sYWJlbD48a3QtZHJvcGRvd24tbXVsdGlwbGUgbmctaWY9XCJ0YWdMaXN0VXNlcnMubGVuZ3RoPjBcIiBuZy1tb2RlbD1yZXNvdXJjZS5QYXJhbWV0ZXJzLlVzZXJUYWdzIHNlbGVjdGVkLWl0ZW1zPXJlc291cmNlLlBhcmFtZXRlcnMuVXNlclRhZ3MgbmFtZT11c2VyVGFncyByZXF1aXJlZD1mYWxzZSBkcm9wZG93bi1pdGVtcz10YWdMaXN0VXNlcnMgZHJvcGRvd24taWQ9XCJcXCd1c2VyVGFnc1xcJ1wiIHBhcmVudC1mb3JtLWlkPVwiXFwndXNlclRhZ1xcJ1wiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IHVzZXJcXCdcIj48L2t0LWRyb3Bkb3duLW11bHRpcGxlPjxsYWJlbCBjbGFzcz10ZXh0LW11dGVkIGZvcj1ncm91cDI+U2VsZWN0IGdyb3VwIHRhZzwvbGFiZWw+PGt0LWRyb3Bkb3duLW11bHRpcGxlIG5nLWlmPVwidGFnTGlzdEdyb3Vwcy5sZW5ndGg+MFwiIG5nLW1vZGVsPXJlc291cmNlLlBhcmFtZXRlcnMuR3JvdXBUYWdzIHNlbGVjdGVkLWl0ZW1zPXJlc291cmNlLlBhcmFtZXRlcnMuR3JvdXBUYWdzIG5hbWU9Z3JvdXBUYWdzIHJlcXVpcmVkPWZhbHNlIGRyb3Bkb3duLWl0ZW1zPXRhZ0xpc3RHcm91cHMgZHJvcGRvd24taWQ9XCJcXCdncm91cFRhZ3NcXCdcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2dyb3VwVGFnXFwnXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgZ3JvdXBcXCdcIj48L2t0LWRyb3Bkb3duLW11bHRpcGxlPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTEyPjxzcGFuIGNsYXNzPVwiYm9sZCBzbWFsbCBib3JkZXItYm90dG9tIGJvcmRlci1wcmltYXJ5IHRleHQtcHJpbWFyeVwiPkUtbWFpbDwvc3Bhbj48ZGl2IGNsYXNzPVwibXQtMyBtYi0yXCI+PGxhYmVsIGNsYXNzPWxhYmVsLXhzIGZvcj1jYlNlbmRFbWFpbD48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1tci0yIHN0eWxlPXRyYW5zZm9ybTpzY2FsZSgxLjI1KSBuYW1lPWNiU2VuZEVtYWlsIGlkPWNiU2VuZEVtYWlsIG5nLW1vZGVsPXJlc291cmNlLlBhcmFtZXRlcnMuU2VuZEVtYWlsPiBTZW5kIGUtbWFpbDwvbGFiZWw+PC9kaXY+PGRpdiBuZy1pZj1yZXNvdXJjZS5QYXJhbWV0ZXJzLlNlbmRFbWFpbCBuZy1mb3JtPWVtYWlsVGFnRm9ybT48bGFiZWwgY2xhc3M9dGV4dC1tdXRlZCBmb3I9dXNlcjI+U2VsZWN0IHRhZ3Mgb2YgdGhlIGUtbWFpbCBmaWVsZDwvbGFiZWw+PGt0LWRyb3Bkb3duLW11bHRpcGxlIG5nLWlmPVwidGFnTGlzdC5sZW5ndGg+MFwiIG5nLW1vZGVsPXJlc291cmNlLlBhcmFtZXRlcnMuRW1haWxUYWdzIHNlbGVjdGVkLWl0ZW1zPXJlc291cmNlLlBhcmFtZXRlcnMuRW1haWxUYWdzIG5hbWU9ZW1haWxUYWdzIHJlcXVpcmVkPWZhbHNlIGRyb3Bkb3duLWl0ZW1zPXRhZ0xpc3QgZHJvcGRvd24taWQ9XCJcXCdlbWFpbFRhZ1xcJ1wiIHBhcmVudC1mb3JtLWlkPVwiXFwnZW1haWxUYWdGb3JtXFwnXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgZS1tYWlsIHRhZy4uLlxcJ1wiPjwva3QtZHJvcGRvd24tbXVsdGlwbGU+PGxhYmVsIGNsYXNzPXRleHQtbXV0ZWQgZm9yPXVzZXIyPlNlbGVjdCBzdWJqZWN0PC9sYWJlbD48a3QtZHJvcGRvd24tc3RhbmRhcmQgbmctbW9kZWw9cmVzb3VyY2UuUGFyYW1ldGVycy5FbWFpbFN1YmplY3RGaWVsZCBuZy1pZj10YWdMaXN0MSBzZWxlY3RlZC1pdGVtcz1yZXNvdXJjZS5QYXJhbWV0ZXJzLkVtYWlsU3ViamVjdEZpZWxkIGlzLW11bHRpcGxlPWZhbHNlIG5hbWU9c3ViamVjdFRhZyBuZy1yZXF1aXJlZD1mYWxzZSBkcm9wZG93bi1pdGVtcz10YWdMaXN0MSBkcm9wZG93bi1pZD1cIlxcJ3N1YmplY3RUYWdcXCdcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2VtYWlsVGFnRm9ybVxcJ1wiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IHN1YmplY3QgdGFnXFwnXCI+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48bGFiZWwgY2xhc3M9dGV4dC1tdXRlZCBmb3I9dXNlcjI+U2VsZWN0IG1lc3NhZ2U8L2xhYmVsPjxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1tb2RlbD1yZXNvdXJjZS5QYXJhbWV0ZXJzLkVtYWlsTWVzc2FnZUZpZWxkIG5nLWlmPXRhZ0xpc3QyIHNlbGVjdGVkLWl0ZW1zPXJlc291cmNlLlBhcmFtZXRlcnMuRW1haWxNZXNzYWdlRmllbGQgaXMtbXVsdGlwbGU9ZmFsc2UgbmFtZT1tZXNzYWdlVGFnIG5nLXJlcXVpcmVkPWZhbHNlIGRyb3Bkb3duLWl0ZW1zPXRhZ0xpc3QyIGRyb3Bkb3duLWlkPVwiXFwnbWVzc2FnZVRhZ1xcJ1wiIHBhcmVudC1mb3JtLWlkPVwiXFwnZW1haWxUYWdGb3JtXFwnXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgbWVzc2FnZSB0YWdcXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJweC0yIG10LTEgYm9yZGVyLXRvcFwiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9c2F2ZVJlc291cmNlUGFyYW1ldGVycygpIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc3VjY2VzcyBteS0yXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1zYXZlIG1yLTJcIj48L3NwYW4+U2F2ZSBub3RpZmljYXRpb248L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDNfcmVzb3VyY2VzL2FuZ3VsYXJUZW1wbGF0ZXMvcGFnZXMuaHRtbCcsJzxkaXY+PGRpdiBjbGFzcz1cImNhcmQgbXQtMVwiPjxoNCBjbGFzcz1cInRleHQtY2VudGVyIG15LWF1dG9cIj5QYWdlczwvaDQ+PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQgbXQtMVwiIGlkPWNvbnRlbnRHcmlkPjxkaXYgY2xhc3M9XCJjb2wgcC0xXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiB1aS1zcmVmPVwiYXBwLm5hdmJhci5yZXNvdXJjZXMucGFnZXMtZGVmaW5pdGlvbih7aWQ6IHNlbGVjdGVkUGFnZSxwcmV2X3N0YXRlOnByZXZpb3VzU3RhdGV9KVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgbmctZGlzYWJsZWQ9IXBhZ2VTZWxlY3RlZCBuZy1jbGljaz1lZGl0VGFzaygpPjxzcGFuIGNsYXNzPVwiZmEgZmEtZWRpdFwiPjwvc3Bhbj4gRWRpdCBwYWdlIGRlZmluaXRpb248L2J1dHRvbj4gPGJ1dHRvbiBuZy1pZj1mYWxzZSB0eXBlPWJ1dHRvbiB1aS1zcmVmPVwiYXBwLm5hdmJhci5yZXNvdXJjZXMucGFnZXMtZm9ybSh7aWQ6IHNlbGVjdGVkUGFnZX0pXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBuZy1kaXNhYmxlZD0hcGFnZVNlbGVjdGVkPjxzcGFuIGNsYXNzPVwiZmEgZmEtbmV3c3BhcGVyLW9cIj48L3NwYW4+IFBhZ2UgLSBmb3JtIGRlZmluaXRpb248L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwiY2FyZCBtdC0xXCI+PGRpdiBpZD1ncmlkMSB1aS1ncmlkPWdyaWRPcHRpb25zIHVpLWdyaWQtc2VsZWN0aW9uIHVpLWdyaWQtcmVzaXplLWNvbHVtbnMgY2xhc3M9bXlHcmlkPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwM19yZXNvdXJjZXMvYW5ndWxhclRlbXBsYXRlcy9wYWdlc0RlZmluaXRpb24uaHRtbCcsJzxkaXYgaWQ9cGFnZXNEZWZpbml0aW9uIGNsYXNzPjxkaXYga3QtaGVscC1jZW50ZXIgaGVscC1pZD1cIlxcJ3BhZ2VkZWZcXCdcIj48L2Rpdj48ZGl2IGNsYXNzPVwiY2FyZCBtdC0xXCI+PGRpdiBjbGFzcz1cInJvdyBjb2xcIj48ZGl2IGNsYXNzPVwiY29sLTQgaDQgdGV4dC1jZW50ZXJcIj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTE0IGg0IHB0LTIgdGV4dC1jZW50ZXJcIj5cXCd7e3Jlc291cmNlLk5hbWV9fVxcJyBwYWdlPC9kaXY+PGRpdiBjbGFzcz1cImNvbC02IGg0IHB0LTEgdGV4dC1yaWdodFwiPjxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlci1hY3Rpb25zIHJvdyBwLTEganVzdGlmeS1jb250ZW50LWVuZFwiPjxkaXYgbmctaWY9XCIocmVzb3VyY2UuaWQgIT0gbnVsbCB8fCByZXNvdXJjZS5pZCA+IDApXCIgY2xhc3M9Y29sLWF1dG8+PHNwYW4gY2xhc3M9XCJmbnQ4IG10LTFcIj5JRDoge3tyZXNvdXJjZS5pZH19ICh7e3Jlc291cmNlLm5pZH19KTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXgtMVwiPjxkaXY+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4teHNcIiB0aXRsZT1cIkNsaWNrIGZvciBwdWJsaXNoaW5nIGRldGFpbHNcIiBuZy1jbGFzcz1cIntcXCdidG4tb3V0bGluZS1zdWNjZXNzXFwnOmdzcnZjLnJlc291cmNlRm9ybVZlcnNpb25bcmVzb3VyY2UudWlkXS5QdWJsaXNoZWQsXFwnYnRuLXdhcm5pbmdcXCc6IWdzcnZjLnJlc291cmNlRm9ybVZlcnNpb25bcmVzb3VyY2UudWlkXS5QdWJsaXNoZWR9XCIgbmctY2xpY2s9XCJzaG93UHVibGlzaChcXCdmb3JtXFwnKVwiPjxzcGFuPlZlcnNpb24ge3tnc3J2Yy5yZXNvdXJjZUZvcm1WZXJzaW9uW3Jlc291cmNlLnVpZF0uVmVyc2lvbn19PC9zcGFuPiA8aSBuZy1pZj1nc3J2Yy5yZXNvdXJjZUZvcm1WZXJzaW9uW3Jlc291cmNlLnVpZF0uUHVibGlzaGVkIGNsYXNzPVwiZmEgZmEtY2hlY2sgbWwtMlwiPjwvaT48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gZm50OCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgaWRkPWFjdGl2ZU9yTm90PjxzcGFuIG5nLWlmPVwicmVzb3VyY2UuQWN0aXZlICYmIChyZXNvdXJjZS5pZCAhPSBudWxsIHx8IHJlc291cmNlLmlkID4gMClcIiBjbGFzcz1cInNtYWxsIGJvbGQgbXQtMVwiPkFjdGl2ZSA8aSBjbGFzcz1cInRleHQtc3VjY2VzcyBmYSBmYS1jaGVja1wiPjwvaT48L3NwYW4+IDxzcGFuIG5nLWlmPVwiIXJlc291cmNlLkFjdGl2ZSAmJiAocmVzb3VyY2UuaWQgIT0gbnVsbCB8fCByZXNvdXJjZS5pZCA+IDApXCIgY2xhc3M9XCJzbWFsbCBib2xkIG10LTFcIj5Ob3QgYWN0aXZlIDxpIGNsYXNzPVwidGV4dC1kYW5nZXIgZmEgZmEtdGltZXNcIj48L2k+PC9zcGFuPjwvZGl2PjxkaXYgbmctaWY9cmVzb3VyY2UuaWQgY2xhc3M9XCJjb2wtYXV0byBmbnQ4IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj48YSB0aXRsZT1cIlByZXZpZXcgcGFnZVwiIHRhcmdldD1fYmxhbmsgbmctY2xpY2s9b3BlblByZXZpZXdQYWdlKCkgaHJlZiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi14c1wiPjxpIGNsYXNzPVwiZmEgZmEtZXllIG1yLTFcIj48L2k+PHNwYW4+UHJldmlldyBwYWdlPC9zcGFuPjwvYT48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicC0wIG0tM1wiIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlO1wiPjxhIGNsYXNzPVwibWItMiB0ZXh0LXByaW1hcnlcIiBocmVmIHRpdGxlPVwiUmV0dXJuIHRvIHJlc291cmNlIGxpc3RcIiBuZy1jbGljaz1yZXR1cm5Ub1ByZXZpb3VzUGFnZSgpPjxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tbGVmdCBtci0yXCI+PC9pPlJldHVybiB0byByZXNvdXJjZXM8L2E+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQgbXQtMVwiPjxkaXYga3QtcmVzb3VyY2UtZGVmaW5pdGlvbiByZXNvdXJjZT1yZXNvdXJjZT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY2FyZCBtdC0xXCI+PGRpdiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIiBjbGFzcz1cInAtMSByb3cgbXgtMVwiIG5nLWNsaWNrPVwiaXNDb2xsYXBzZWRBZHZhbmNlZCA9ICFpc0NvbGxhcHNlZEFkdmFuY2VkXCI+PHNwYW4gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIHAtMVwiPjxzcGFuIG5nLWNsYXNzPVwie1xcJ2ZhcyBmYS1jaGV2cm9uLXVwXFwnOiBpc0NvbGxhcHNlZEFkdmFuY2VkLFxcJ2ZhcyBmYS1jaGV2cm9uLWRvd25cXCc6ICFpc0NvbGxhcHNlZEFkdmFuY2VkIH1cIj48L3NwYW4+PC9zcGFuPiA8c3BhbiBjbGFzcz10YWc+QURWQU5DRUQge3tyZXNvdXJjZS5SZXNvdXJjZU5hbWV9fSBQUk9QRVJUSUVTPC9zcGFuPjwvZGl2PjxkaXYgdWliLWNvbGxhcHNlPSFpc0NvbGxhcHNlZEFkdmFuY2VkPjxmb3JtIG5nLXN1Ym1pdD1cInNhdmVQYWdlRGVmKGZvcm0xLiR2YWxpZCxcXCdpbmZvXFwnKVwiIG5hbWU9Zm9ybTEgY2xhc3M9Zm9ybS1ob3Jpem9udGFsIGlkPXBhZ2Vmb3JtIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYgY2xhc3M9XCJyb3cgbS0yIHB5LTJcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IGFsaWNlYmx1ZTtcIj48ZGl2IGNsYXNzPWNvbC1sZy03PjxkaXYgY2xhc3M9XCJoNSBwLTEgYm9yZGVyLWJvdHRvbSB0ZXh0LWNlbnRlclwiIHN0eWxlPVwiY29sb3I6IGRhcmtibHVlXCI+UGFnZSBwYXJhbWV0ZXJzPC9kaXY+PGRpdiBuZy1pZj11c2VyX2lzX2FkbWluPjxkaXYgY2xhc3M9XCJwYi0yIGZvcm0tZ3JvdXBcIiBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnBhZ2VUeXBlLiR0b3VjaGVkKSAmJiBmb3JtLnBhZ2VUeXBlLiRpbnZhbGlkIH1cIj48bGFiZWwgZm9yPXBhZ2VUeXBlPlBhZ2UgdHlwZTwvbGFiZWw+PGRpdj48dWktc2VsZWN0IG5nLW1vZGVsPXJlc291cmNlLlJlc291cmNlRXh0ZW5kZWQuUGFnZVR5cGUgbmctZGlzYWJsZWQ9ZGlzYWJsZWQgb24tc2VsZWN0PVBhZ2VUeXBlQ2hhbmdlZCgkaXRlbSwkbW9kZWwpIG5hbWU9cGFnZVR5cGUgbmctcmVxdWlyZWQ9dHJ1ZSByZXNldC1zZWFyY2gtaW5wdXQ9ZmFsc2U+PHVpLXNlbGVjdC1tYXRjaCBjbGFzcz11aS1zZWxlY3QtbWF0Y2ggcGxhY2Vob2xkZXI9XCJTZWFyY2ggb3Igc2VsZWN0IHBhZ2UgdHlwZS4uLlwiPjxzcGFuPnt7JHNlbGVjdC5zZWxlY3RlZC5uYW1lfX0gPGEgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saW5rXCIgbmctY2xpY2s9XCJjbGVhcigkZXZlbnQsICRzZWxlY3QpXCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2E+PC9zcGFuPjwvdWktc2VsZWN0LW1hdGNoPjx1aS1zZWxlY3QtY2hvaWNlcyBjbGFzcz11aS1zZWxlY3QtY2hvaWNlcyByZXBlYXQ9XCJwdCBpbiAocGFnZVR5cGVMaXN0IHwgZmlsdGVyOiB7IG5hbWU6ICRzZWxlY3Quc2VhcmNoIH0pIHRyYWNrIGJ5IHB0LmlkXCIgcmVmcmVzaD1yZWZyZXNoUmVzdWx0cygkc2VsZWN0KSByZWZyZXNoLWRlbGF5PTA+PHNwYW4+e3twdC5uYW1lfX08L3NwYW4+PC91aS1zZWxlY3QtY2hvaWNlcz48L3VpLXNlbGVjdD48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnBhZ2VUeXBlLiR0b3VjaGVkKSAmJiBmb3JtLnBhZ2VUeXBlLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5TZWxlY3QgcGFnZSB0eXBlPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJwYi0yIGZvcm0tZ3JvdXBcIiBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnRhcmdldC4kdG91Y2hlZCkgJiYgZm9ybS50YXJnZXQuJGludmFsaWQgfVwiPjxsYWJlbCBmb3I9dGFyZ2V0PlRhcmdldDwvbGFiZWw+PGRpdj48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPXJlc291cmNlLlJlc291cmNlRXh0ZW5kZWQuVGFyZ2V0IG5nLXJlcXVpcmVkPXRydWUgbmctZGlzYWJsZWQ9cmVzb3VyY2UuZGlzYWJsZWRUYXJnZXQgY2xhc3M9Zm9ybS1jb250cm9sIG5hbWU9dGFyZ2V0IHBsYWNlaG9sZGVyPVRhcmdldD48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnRhcmdldC4kdG91Y2hlZCkgJiYgZm9ybS50YXJnZXQuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIHBhZ2UgdGFyZ2V0PC9wPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9IXVzZXJfaXNfYWRtaW4+PGRpdiBjbGFzcz1wYi0yPjxsYWJlbCBmb3I9cGFnZVR5cGU+UGFnZSB0eXBlPC9sYWJlbD48ZGl2IGNsYXNzPWZvcm0tY29udHJvbD57e3Jlc291cmNlLlJlc291cmNlRXh0ZW5kZWQuUGFnZVR5cGUubmFtZX19PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1wYi0yPjxsYWJlbCBmb3I9dGFyZ2V0PlRhcmdldDwvbGFiZWw+PGRpdiBjbGFzcz1mb3JtLWNvbnRyb2w+e3tyZXNvdXJjZS5SZXNvdXJjZUV4dGVuZGVkLlRhcmdldH19PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybTEuJHN1Ym1pdHRlZCB8fCBmb3JtMS5Mb2FkUGFnZVRleHQuJHRvdWNoZWQpICYmIGZvcm0xLkxvYWRQYWdlVGV4dC4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzIGZvcj1Mb2FkUGFnZVRleHQ+TG9hZGluZyBwYWdlIHRleHQ8L2xhYmVsPjxkaXYgY2xhc3M+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1yZXNvdXJjZS5QYXJhbWV0ZXJzTGFuZy5Mb2FkUGFnZVRleHQgbmctcmVxdWlyZWQ9ZmFsc2UgY2xhc3M9Zm9ybS1jb250cm9sIGlkPUxvYWRQYWdlVGV4dCBuYW1lPUxvYWRQYWdlVGV4dCBwbGFjZWhvbGRlcj1cIkxvYWRpbmcgcGFnZSB0ZXh0XCI+PHAgbmctc2hvdz1cIihmb3JtMS4kc3VibWl0dGVkIHx8IGZvcm0xLkxvYWRQYWdlVGV4dC4kdG91Y2hlZCkgJiYgZm9ybTEuTG9hZFBhZ2VUZXh0LiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5FbnRlciBsb2FkaW5nIHBhZ2UgdGV4dDwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwibXktNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+PGxhYmVsIGNsYXNzPVwic3dpdGNoIHN3aXRjaC1ncmVlbiBteC0yIG1iLTFcIj48aW5wdXQgbmctbW9kZWw9cmVzb3VyY2UuUGFyYW1ldGVycy5Db3VudFByb2Nlc3NXaWRnZXRzTXNnIHR5cGU9Y2hlY2tib3ggY2xhc3M9c3dpdGNoLWlucHV0PiA8c3BhbiBjbGFzcz1zd2l0Y2gtbGFiZWwgZGF0YS1vbj1PbiBkYXRhLW9mZj1PZmY+PC9zcGFuPiA8c3BhbiBjbGFzcz1zd2l0Y2gtaGFuZGxlPjwvc3Bhbj48L2xhYmVsPiA8c3BhbiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTFcIiBuZy1zaG93PXJlc291cmNlLlBhcmFtZXRlcnMuQ291bnRQcm9jZXNzV2lkZ2V0c01zZz5Db3VudCBwcm9jZXNzZWQgd2lkZ2V0cyE8L3NwYW4+IDxzcGFuIGNsYXNzIG5nLWhpZGU9cmVzb3VyY2UuUGFyYW1ldGVycy5Db3VudFByb2Nlc3NXaWRnZXRzTXNnPkRvIE5PVCBjb3VudCBwcm9jZXNzZWQgd2lkZ2V0cyE8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1teS0yPjxidXR0b24gdHlwZT1zdWJtaXQgbmctZGlzYWJsZWQ9Zm9ybTEuJGludmFsaWQgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc3VjY2VzcyBidG4teHNcIj48c3BhbiBjbGFzcz1cImZhIGZhLXNhdmUgbXItMlwiPjwvc3Bhbj5TYXZlIHBhZ2UgaW5mbzwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTEwPjxkaXYgdGl0bGU9XCJXaG8gY2FuIGFjY2VzcyB0aGlzIHBhZ2VcIiBjbGFzcz1cImg1IHAtMSBib3JkZXItYm90dG9tIHRleHQtY2VudGVyXCIgc3R5bGU9XCJjb2xvcjogZGFya2JsdWVcIj5QYWdlIGFjY2VzczwvZGl2PjxkaXYgY2xhc3M9XCJteS00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj48bGFiZWwgY2xhc3M9XCJzd2l0Y2ggc3dpdGNoLWdyZWVuIG14LTIgbWItMVwiPjxpbnB1dCBuZy1tb2RlbD1yZXNvdXJjZS5QYXJhbWV0ZXJzLlB1YmxpY1BhZ2UgdHlwZT1jaGVja2JveCBjbGFzcz1zd2l0Y2gtaW5wdXQ+IDxzcGFuIGNsYXNzPXN3aXRjaC1sYWJlbCBkYXRhLW9uPU9uIGRhdGEtb2ZmPU9mZj48L3NwYW4+IDxzcGFuIGNsYXNzPXN3aXRjaC1oYW5kbGU+PC9zcGFuPjwvbGFiZWw+IDxzcGFuIGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtMVwiIG5nLXNob3c9cmVzb3VyY2UuUGFyYW1ldGVycy5QdWJsaWNQYWdlPlRoaXMgaXMgcHVibGljIHBhZ2UgKGF1dGhlbnRpY2F0aW9uIGlzIG5vdCByZXF1aXJlZCk8L3NwYW4+IDxzcGFuIGNsYXNzIG5nLWhpZGU9cmVzb3VyY2UuUGFyYW1ldGVycy5QdWJsaWNQYWdlPlRoaXMgaXMgc2VjdXJlZCBwYWdlIChzZWxlY3RlZCB1c2VycyBhbmQgZ3JvdXBzIGNhbiBhY2Nlc3MgdGhpcyBwYWdlKTwvc3Bhbj48L2Rpdj48ZGl2IG5nLWlmPXJlc291cmNlLlBhcmFtZXRlcnMuUHVibGljUGFnZSBjbGFzcz48ZGl2IGNsYXNzPW1iLTI+PGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZFwiPlB1YmxpYyBwYWdlIGFkZHJlc3M6PC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPjxzcGFuIGNsYXNzPi9uL3B2cGFnZS97e29yZ2FuaXNhdGlvbl9pZH19L3t7Z3NydmMucmVzb3VyY2VGb3JtVmVyc2lvbltyZXNvdXJjZS51aWRdLk5ld1ZlcnNpb259fS88L3NwYW4+IDxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9cmVzb3VyY2UuUmVzb3VyY2VFeHRlbmRlZC5VbmlxdWVVcmwgcGxhY2Vob2xkZXI9XCJFbnRlciB1bmlxdWUgcGFnZSB1cmxcIiBjbGFzcz13LTc1PiA8c3BhbiBjbGFzcz4/ZW52PXt7ZW52X2lkfX08L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBrdC11c2Vycy1ncm91cHMtc2VsZWN0IG5nLWlmPVwicmVzb3VyY2UucmVzb3VyY2VEZWZEb3dubG9hZGVkICYmICFyZXNvdXJjZS5QYXJhbWV0ZXJzLlB1YmxpY1BhZ2VcIiBzZWxlY3RlZC11c2Vycz1yZXNvdXJjZS5BY2Nlc3NVc2VycyBzZWxlY3RlZC1ncm91cHM9cmVzb3VyY2UuQWNjZXNzR3JvdXBzIGhlYWRlci1sYWJlbD1cIlxcJ0RlZmluZSBhY2Nlc3MgcmlnaHRzIHRvIHBhZ2VcXCdcIiB1c2Vycy1sYWJlbD1cIlxcJ0FjY2VzcyB1c2Vyc1xcJ1wiIGdyb3Vwcy1sYWJlbD1cIlxcJ0FjY2VzcyBncm91cHNcXCdcIj48L2Rpdj48ZGl2IGNsYXNzPW15LTI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cInNhdmVQYWdlRGVmKHRydWUsXFwnYXV0aFxcJylcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zdWNjZXNzIGJ0bi14c1wiPjxzcGFuIGNsYXNzPVwiZmEgZmEtbG9jayBtci0yXCI+PC9zcGFuPiBTYXZlIGF1dGggaW5mbzwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTc+PGRpdiBjbGFzcz1cImg1IHAtMSBib3JkZXItYm90dG9tIHRleHQtY2VudGVyXCIgc3R5bGU9XCJjb2xvcjogZGFya2JsdWVcIj5QYWdlIHN0eWxlPC9kaXY+PGRpdiBjbGFzcz1teS0zIG5nLWNsYXNzPVwie1xcJ2NhcmRcXCc6cmVzb3VyY2UuUGFyYW1ldGVycy5TaG93Q2FyZH1cIj48ZGl2IGNsYXNzPjxsYWJlbCBjbGFzcz1cInN3aXRjaCBzd2l0Y2gtZ3JlZW4gbXgtMlwiPjxpbnB1dCBuZy1tb2RlbD1yZXNvdXJjZS5QYXJhbWV0ZXJzLlNob3dDYXJkIHR5cGU9Y2hlY2tib3ggY2xhc3M9c3dpdGNoLWlucHV0PiA8c3BhbiBjbGFzcz1zd2l0Y2gtbGFiZWwgZGF0YS1vbj1PbiBkYXRhLW9mZj1PZmY+PC9zcGFuPiA8c3BhbiBjbGFzcz1zd2l0Y2gtaGFuZGxlPjwvc3Bhbj48L2xhYmVsPiA8c3BhbiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTFcIiBuZy1zaG93PXJlc291cmNlLlBhcmFtZXRlcnMuU2hvd0NhcmQ+UGFnZSBpcyBzdHlsZWQgYXMgY2FyZDwvc3Bhbj4gPHNwYW4gY2xhc3MgbmctaGlkZT1yZXNvdXJjZS5QYXJhbWV0ZXJzLlNob3dDYXJkPk5vIHN0eWxlIChlbmFibGUgdG8gc3R5bGUgcGFnZSBhcyBjYXJkKTwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPW15LTI+PGRpdiBjbGFzcz48bGFiZWwgY2xhc3M9XCJzd2l0Y2ggc3dpdGNoLWdyZWVuIG14LTJcIj48aW5wdXQgbmctbW9kZWw9cmVzb3VyY2UuUGFyYW1ldGVycy5zZXRCZ0NvbG9yIHR5cGU9Y2hlY2tib3ggY2xhc3M9c3dpdGNoLWlucHV0PiA8c3BhbiBjbGFzcz1zd2l0Y2gtbGFiZWwgZGF0YS1vbj1PbiBkYXRhLW9mZj1PZmY+PC9zcGFuPiA8c3BhbiBjbGFzcz1zd2l0Y2gtaGFuZGxlPjwvc3Bhbj48L2xhYmVsPiA8c3BhbiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTFcIiB0aXRsZT1cIlRvZ2dsZSB0byBhcHBseSBjdXN0b20gYmFja2dyb3VuZCBjb2xvclwiIG5nLXNob3c9IXJlc291cmNlLlBhcmFtZXRlcnMuc2V0QmdDb2xvcj5BcHBseSBkZWZhdWx0IGJhY2tncm91bmQgY29sb3IgKHRvZ2dsZSB0byBhcHBseSBjdXN0b20gY29sb3IpPC9zcGFuPiA8c3BhbiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTFcIiBuZy1zaG93PXJlc291cmNlLlBhcmFtZXRlcnMuc2V0QmdDb2xvcj5BcHBseSBjdXN0b20gYmFja2dyb3VuZCBjb2xvcjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwibXgtMiB3LTUwXCIgbmctaWY9cmVzb3VyY2UuUGFyYW1ldGVycy5zZXRCZ0NvbG9yPjxpbnB1dCB0eXBlPWNvbG9yIG5nLW1vZGVsPXJlc291cmNlLlBhcmFtZXRlcnMuYmdDb2xvciBjbGFzcz4gPGxhYmVsIGNsYXNzPVwidGV4dC1tdXRlZCBtbC0yXCI+e3tyZXNvdXJjZS5QYXJhbWV0ZXJzLmJnQ29sb3J9fTwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1tdC0xPjxsYWJlbD5DU1M8L2xhYmVsPiA8dGV4dGFyZWEgdHlwZT10ZXh0IHJvd3M9NSBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1yZXNvdXJjZS5QYXJhbWV0ZXJzLlJhd0NTUz5cXHJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L3RleHRhcmVhPjwvZGl2PjxkaXYgY2xhc3M9bXktMz48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwic2F2ZVBhZ2VEZWYodHJ1ZSxcXCdsYXlvdXRcXCcpXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc3VjY2VzcyBidG4teHNcIj48c3BhbiBjbGFzcz1cImZhIGZhLXNhdmUgbXItMlwiPjwvc3Bhbj4gU2F2ZSBzdHlsZSBjaGFuZ2VzPC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JtPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjYXJkIG0tMVwiIHN0eWxlPjxkaXYgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCIgY2xhc3M9XCJwLTEgcm93IG14LTFcIiBuZy1jbGljaz1cImlzQ29sbGFwc2VkUHVibGlzaCA9ICFpc0NvbGxhcHNlZFB1Ymxpc2hcIj48c3BhbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gcC0xXCI+PHNwYW4gbmctY2xhc3M9XCJ7XFwnZmFzIGZhLWNoZXZyb24tZG93blxcJzogaXNDb2xsYXBzZWRQdWJsaXNoLFxcJ2ZhcyBmYS1jaGV2cm9uLXJpZ2h0XFwnOiAhaXNDb2xsYXBzZWRQdWJsaXNoIH1cIj48L3NwYW4+PC9zcGFuPiA8c3BhbiBjbGFzcz10YWc+UHVibGlzaCB7e3Jlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZU5hbWV9fTwvc3Bhbj48L2Rpdj48Zm9ybSB1aWItY29sbGFwc2U9IWlzQ29sbGFwc2VkUHVibGlzaCBuZy1zdWJtaXQ9UHVibGlzaDJQcm9kKGZvcm1QdWJsaXNoLiR2YWxpZCkgaWQ9cHVibGlzaFJlc291cmVGb3JtIG5hbWU9Zm9ybVB1Ymxpc2ggY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCB0ZXh0LWNlbnRlclwiPjxkaXYgbmctaWY9cHVibGlzaGVkUmVzb3VyY2UuUHVibGlzaGVkIGNsYXNzPW1iLTQ+PHNwYW4gY2xhc3M9XCJtci0yIGg0XCI+UHVibGlzaGVkPC9zcGFuPiA8c3BhbiBjbGFzcz1cImZhIGZhLWNoZWNrLWNpcmNsZSBtci0yIHRleHQtc3VjY2VzcyBoNFwiPjwvc3Bhbj48ZGl2PjxzcGFuIG5nLWlmPXB1Ymxpc2hlZFJlc291cmNlLkNoYW5nZWRCeT5DdXJyZW50IHZlcnNpb24ge3twdWJsaXNoZWRSZXNvdXJjZS5QdWJsaXNoZWRWZXJzaW9ufX0gcHVibGlzaGVkIGJ5IHt7cHVibGlzaGVkUmVzb3VyY2UuQ2hhbmdlZEJ5fX0gb24ge3twdWJsaXNoZWRSZXNvdXJjZS5DaGFuZ2VkRGF0ZVRpbWUgfCBkYXRlOlwiZGQuTU0ueXl5eSBcXCdhdFxcJyBISDptbTpzc1wifX08L3NwYW4+IDxzcGFuIG5nLWlmPSFwdWJsaXNoZWRSZXNvdXJjZS5DaGFuZ2VkQnk+KFZlcnNpb24gMSBwdWJsaXNoZWQgYnkge3twdWJsaXNoZWRSZXNvdXJjZS5QdWJsaXNoZWRCeX19IG9uIHt7cHVibGlzaGVkUmVzb3VyY2UuRGF0ZVRpbWUgfCBkYXRlOlwiZGQuTU0ueXl5eSBcXCdhdFxcJyBISDptbTpzc1wifX0pPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9IXB1Ymxpc2hlZFJlc291cmNlLlB1Ymxpc2hlZCBjbGFzcz1oND48c3BhbiBjbGFzcz1tci0yPk5vdCBwdWJsaXNoZWQ8L3NwYW4+IDxzcGFuIGNsYXNzPVwiZmEgZmEtdGltZXMgdGV4dC1kYW5nZXJcIj48L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCB0ZXh0LWNlbnRlclwiIG5nLWlmPXB1Ymxpc2hlZFJlc291cmNlLlB1Ymxpc2hlZD48ZGl2IG5nLWlmPVwicHVibGlzaGVkUmVzb3VyY2Uucm1kICYmIHB1Ymxpc2hlZFJlc291cmNlLmNvdW50PT0wXCI+PHNwYW4gY2xhc3M9XCJib3JkZXItYm90dG9tIGg1XCI+UHVibGlzaGVkIGRlZmluaXRpb24gKG5vIGNoYW5nZXMpPC9zcGFuPjxkaXYgY2xhc3M9bXktMiBrdC1iYXNpYy10YWJsZSBjb2x1bW5zPWRhdGFzZXREZXBsb3lDb2xzIGRhdGE9cHVibGlzaGVkUmVzb3VyY2Uucm1kIG1hcHBpbmc9ZGVwbG95QWN0aW9uTWFwcGluZ3M+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cInB1Ymxpc2hlZFJlc291cmNlLnJtZCAmJiBwdWJsaXNoZWRSZXNvdXJjZS5jb3VudD4wXCI+PHNwYW4gY2xhc3M9XCJib3JkZXItYm90dG9tIGg1XCI+Q2hhbmdlcyBmb3IgcHVibGlzaGluZzwvc3Bhbj48ZGl2IGNsYXNzPW15LTIga3QtYmFzaWMtdGFibGUgY29sdW1ucz1kYXRhc2V0RGVwbG95Q29scyBkYXRhPXB1Ymxpc2hlZFJlc291cmNlLnJtZCBtYXBwaW5nPWRlcGxveUFjdGlvbk1hcHBpbmdzPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgdGV4dC1jZW50ZXJcIj48YnV0dG9uIHR5cGU9c3VibWl0IGlkPXB1Ymxpc2hSZXNvdXJjZUJ0biBjbGFzcz1cImJ0biBidG4tc20gYnRuLXN1Y2Nlc3MgbXktMlwiPjxzcGFuIG5nLWlmPSFwdWJsaXNoaW5nRGF0YXNldD48aSBjbGFzcz1cImZhIGZhLXVwbG9hZCBtci0xXCI+PC9pPjwvc3Bhbj4gPHNwYW4gbmctaWY9cHVibGlzaGluZ0RhdGFzZXQ+PGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lciBmYS1zcGluIG1yLTFcIj48L2k+PC9zcGFuPiA8c3BhbiBuZy1pZj1wdWJsaXNoaW5nRGF0YXNldD5QdWJsaXNoaW5nLi4uPC9zcGFuPiA8c3BhbiBuZy1pZj0hcHVibGlzaGluZ0RhdGFzZXQ+UHVibGlzaDwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Zvcm0+PC9kaXY+PGRpdiBuZy1pZj1cInJlc291cmNlLlJlc291cmNlRXh0ZW5kZWQucmxpbmtzWzBdLmlkICYmIGxvY2FsVmFycy5wYWdlTWVudUxpc3QubGVuZ3RoICYmICFsb2NhbFZhcnMubG9hZGVkU2VsZWN0ZWRQYWdlICYmIGxvYWRTZWxlY3RlZFBhZ2UoKVwiPjwvZGl2PjxkaXYgY2xhc3M9XCJwLTAgbXQtMlwiPjxkaXYgc3R5bGU9XCJkaXNwbGF5OmdyaWQ7Z3JpZC1nYXA6IDIwcHggMjBweDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6YXV0b1wiPjxkaXYgY2xhc3M9cGwtMD48ZGl2IGlkPXRhYlNlbGVjdCBjbGFzcz1cInJvdyBteC0wIG15LTMgYnVpbGQtbW9kZVwiPjxzcGFuIGNsYXNzPVwicGItMSBib3JkZXItYm90dG9tXCI+PGEgaHJlZiBjbGFzcz1cIm1yLTIgdGFiLWl0ZW0tc2VsZWN0ZWRcIiBuZy1jbGFzcz1cIntcXCd0YWItaXRlbS1zZWxlY3RlZFxcJzpzZWxlY3RlZFRhYj09MSxcXCd0YWItaXRlbVxcJzpzZWxlY3RlZFRhYiE9MX1cIiBuZy1jbGljaz1cInNlbGVjdGVkVGFiPTFcIiBrdC1wb3BvdmVyIGRhdGEtcGxhY2VtZW50PXRvcCB0aWQ9d2lkZ2V0LXRvb2xib3ggc2hvdy1vbi1zdGFydD10cnVlIGVuYWJsZT10cnVlPldpZGdldCB0b29sYm94PC9hPjxhIGhyZWYgdGl0bGU9XCJQYWdlIG1lbnVcIiBjbGFzcz1cIm1yLTIgdGFiLWl0ZW1cIiBuZy1jbGFzcz1cIntcXCd0YWItaXRlbS1zZWxlY3RlZFxcJzpzZWxlY3RlZFRhYj09MixcXCd0YWItaXRlbVxcJzpzZWxlY3RlZFRhYiE9Mn1cIiBuZy1jbGljaz1cInNlbGVjdGVkVGFiPTJcIj5QYWdlIG1lbnVzPC9hPjwvc3Bhbj48L2Rpdj48ZGl2IG5nLXNob3c9XCJzZWxlY3RlZFRhYj09MlwiIGNsYXNzPVwicGFnZS1uYXZpZ2F0aW9uLWJhciB0ZXh0LWNlbnRlclwiIG5nLWNsYXNzPVwie1xcJ25vLW5hdmJhci1tZW51XFwnOiFyZXNvdXJjZS5QYXJhbWV0ZXJzLm5hdmJhcn1cIj48ZGl2IGNsYXNzPXAtMT48bGFiZWwgY2xhc3M9XCJzd2l0Y2ggc3dpdGNoLWdyZWVuIG14LTJcIj48aW5wdXQgbmctbW9kZWw9cmVzb3VyY2UuUGFyYW1ldGVycy5uYXZiYXIgdHlwZT1jaGVja2JveCBuZy1jaGFuZ2U9XCJzYXZlUGFnZURlZih0cnVlLFxcJ2xheW91dFxcJylcIiBjbGFzcz1zd2l0Y2gtaW5wdXQ+IDxzcGFuIGNsYXNzPXN3aXRjaC1sYWJlbCBkYXRhLW9uPU9uIGRhdGEtb2ZmPU9mZj48L3NwYW4+IDxzcGFuIGNsYXNzPXN3aXRjaC1oYW5kbGU+PC9zcGFuPjwvbGFiZWw+IDxzcGFuIGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtMVwiIG5nLXNob3c9cmVzb3VyY2UuUGFyYW1ldGVycy5uYXZiYXI+QXBwbGljYXRpb24gbWVudSBpcyB2aXNpYmxlPC9zcGFuPiA8c3BhbiBjbGFzcyBuZy1oaWRlPXJlc291cmNlLlBhcmFtZXRlcnMubmF2YmFyPkFwcGxpY2F0aW9uIG1lbnUgaXMgaGlkZGVuPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgaWQ9cGFnZUxheW91dCBjbGFzcz1cInJvdyBtLTAgYnVpbGQtbW9kZVwiPjxkaXYgY2xhc3M9XCJjb2wtNCBwLTBcIj48ZGl2IG5nLXNob3c9XCJzZWxlY3RlZFRhYj09MVwiIGNsYXNzPVwicC0wIHByLTEgbXktMlwiPjxkaXYga3Qtd2lkZ2V0LXRvb2xib3ggY2xhc3M9XCJzdGlja3kgbWVudS1zdGlja3ktcG9zXCIgbmctc3R5bGU9Z3NydmMuZ2V0VG9wRm9yU3RpY2t5KDUpPj48L2Rpdj48L2Rpdj48ZGl2IG5nLXNob3c9XCJzZWxlY3RlZFRhYj09MlwiIGNsYXNzPVwicGFnZS1zaWRlLW1lbnUgbXktMiBhbGlnbi1pdGVtcy1jZW50ZXJcIiBuZy1jbGFzcz1cIntcXCduby1uYXZiYXItbWVudVxcJzohcmVzb3VyY2UuUGFyYW1ldGVycy5zaWRlTWVudX1cIj48ZGl2IGNsYXNzPW0tMz5QYWdlIE1lbnU8L2Rpdj48ZGl2IG5nLWZvcm09aW5uZXJGb3JtNDQ1PjxrdC1kcm9wZG93bi1zdGFuZGFyZCBzaXplPVwiXFwnc21hbGxcXCdcIiBuZy1tb2RlbD1sb2NhbFZhcnMuc2VsZWN0ZWRQYWdlTWVudSBuZy1pZj1sb2NhbFZhcnMucGFnZU1lbnVMaXN0IHNlbGVjdGVkLWl0ZW1zPWxvY2FsVmFycy5zZWxlY3RlZFBhZ2VNZW51IGlzLW11bHRpcGxlPWZhbHNlIHJlcXVpcmVkLWZpZWxkPXRydWUgZHJvcGRvd24taXRlbXM9bG9jYWxWYXJzLnBhZ2VNZW51TGlzdCBkcm9wZG93bi1pZD1cIlxcJ3NlbGVjdHBhZ2U5OTlcXCdcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2lubmVyRm9ybTQ0NVxcJ1wiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IHBhZ2UgbWVudVxcJ1wiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PC9kaXY+PGRpdiBuZy1pZj1sb2NhbFZhcnMuc2VsZWN0ZWRQYWdlTWVudSBjbGFzcz1cIm0tYXV0byBtYi0yXCI+PGxhYmVsIGNsYXNzPWt0LWNoZWNrYm94LWxhYmVsPjxpbnB1dCB0eXBlPWNoZWNrYm94IG5nLW1vZGVsPWxvY2FsVmFycy5zZWxlY3RlZFBhZ2VNZW51LlNlbGVjdFZlcnNpb25EaXJlY3QgbmctY2xpY2s9XCJsb2NhbFZhcnMuc2VsZWN0ZWRQYWdlTWVudS5TZWxlY3RWZXJzaW9uRGlyZWN0ID8gMCA6IGdldFB1Ymxpc2hlZFJlc291cmNlcyhsb2NhbFZhcnMuc2VsZWN0ZWRQYWdlTWVudSxcXCdhbGxcXCcpXCIgY2xhc3M9XCJrdC1jaGVja2JveC1wcm9wZXJ0aWVzIG15LTIgbXItMlwiPiBTZWxlY3QgcGFnZSB2ZXJzaW9uIG1hbnVhbGx5IDxzcGFuIG5nLWlmPSFsb2NhbFZhcnMuc2VsZWN0ZWRQYWdlTWVudS5TZWxlY3RWZXJzaW9uRGlyZWN0PihpZiB1bmNoZWNrZWQsIGxhdGVzdCB2ZXJzaW9uIHdpbGwgYmUgdXNlZCk8L3NwYW4+PC9sYWJlbD48ZGl2IG5nLWlmPWxvY2FsVmFycy5zZWxlY3RlZFBhZ2VNZW51LlNlbGVjdFZlcnNpb25EaXJlY3QgY2xhc3M9XCJ3LTEwMCBtLWF1dG9cIj48ZGl2IG5nLWlmPVwic2VsZWN0ZWRSZXNvdXJjZXNQdWJsaXNoZWRMaXN0W2xvY2FsVmFycy5zZWxlY3RlZFBhZ2VNZW51LmlkXS5sZW5ndGg+MFwiIGNsYXNzPVwibXQtMiB0ZXh0LWxlZnRcIj48c3BhbiBjbGFzcz10ZXh0LWRhcms+U2VsZWN0IHZlcnNpb248L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1tdC0yIG5nLWZvcm09aW5uZXJQYWdlVmVyc2lvbnt7bG9jYWxWYXJzLnNlbGVjdGVkUGFnZU1lbnUuaWR9fT48a3QtZHJvcGRvd24tc3RhbmRhcmQgbmctaWY9c2VsZWN0ZWRSZXNvdXJjZXNQdWJsaXNoZWRMaXN0W2xvY2FsVmFycy5zZWxlY3RlZFBhZ2VNZW51LmlkXS5sZW5ndGggaXMtbXVsdGlwbGU9ZmFsc2Ugc2l6ZT1cIlxcJ3NtYWxsXFwnXCIgXCIgbmctbW9kZWw9bG9jYWxWYXJzLnNlbGVjdGVkUGFnZU1lbnUuc2VsZWN0ZWRQdWJsaXNoZWRSZXNvdXJjZSBzZWxlY3RlZC1pdGVtcz1sb2NhbFZhcnMuc2VsZWN0ZWRQYWdlTWVudS5zZWxlY3RlZFB1Ymxpc2hlZFJlc291cmNlIHJlcXVpcmVkLWZpZWxkPXRydWUgZHJvcGRvd24taXRlbXM9c2VsZWN0ZWRSZXNvdXJjZXNQdWJsaXNoZWRMaXN0W2xvY2FsVmFycy5zZWxlY3RlZFBhZ2VNZW51LmlkXSBkcm9wZG93bi1pZD1cIlxcJ3ZlcnNpb25cXCdcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2lubmVyRm9ybVZlcnNpb25cXCcrbG9jYWxWYXJzLnNlbGVjdGVkUGFnZU1lbnUuaWRcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCB2ZXJzaW9uXFwnXCI+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48ZGl2IG5nLWlmPVwic2VsZWN0ZWRSZXNvdXJjZXNQdWJsaXNoZWRMaXN0W2xvY2FsVmFycy5zZWxlY3RlZFBhZ2VNZW51LmlkXS5sZW5ndGg9PTBcIiBjbGFzcz10ZXh0LWRhbmdlcj5ObyB2ZXJzaW9ucyBmb3VuZCE8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPW0tMz48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPXNhdmVQYWdlTWVudSgpIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIGJ0bi1zbVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtc2F2ZSBtci0yXCI+PC9zcGFuPiBTYXZlIG1lbnU8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbD48ZGl2IGNsYXNzPVwicm93IHB5LTIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIiBuZy1pZj1mYWxzZT48ZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJteS0yIHRleHQtcHJpbWFyeSBoNSB0ZXh0LWNlbnRlclwiPlBhZ2UgZm9ybTwvZGl2PjxkaXYgY2xhc3M9XCJweC0wIHRleHQtcmlnaHRcIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPXNhdmVQYWdlRm9ybSgpIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCI+PGkgbmctaWY9IXNhdmluZ0Zvcm0gY2xhc3M9XCJmYSBmYS1zYXZlIG1yLTJcIj48L2k+IDxpIG5nLWlmPXNhdmluZ0Zvcm0gY2xhc3M9XCJmYXMgZmEtc3Bpbm5lciBmYS1zcGluIG1yLTFcIj48L2k+IDxzcGFuIG5nLWlmPSFzYXZpbmdGb3JtPlNhdmUgcGFnZSBmb3JtPC9zcGFuPiA8c3BhbiBuZy1pZj1zYXZpbmdGb3JtPlNhdmluZyBmb3JtPC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgYm9yZGVyLXRvcCBwdC0yXCI+PGRpdiBuZy1jbGFzcz1cIntcXCdjb2wtbGctMTkgcHgtMFxcJzpnc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKSxcXCdjb2xcXCc6IWdzcnZjLmdldEZpZWxkUHJvcGVydGllc09wZW5lZCgpfVwiIHN0eWxlPXdpZHRoOjBweD48ZGl2IG5nLWlmPXBhZ2VEb3dubG9hZGVkIGt0LXBhZ2UtZm9ybT48L2Rpdj48L2Rpdj48ZGl2IGlkPVByb3BlcnRpZXNfbWVudSBjbGFzcz1zdGlja3kgbmctY2xhc3M9XCJ7XFwnY29sLWxnLTUgcC0wXFwnOmdzcnZjLmdldEZpZWxkUHJvcGVydGllc09wZW5lZCgpfVwiIHN0eWxlPXotaW5kZXg6MTAwO3RvcDo1MHB4Oz48ZGl2IGNsYXNzPXAtMT48ZGl2IGNsYXNzPVwiY2FyZCBtLTBcIiBuZy1pZj1nc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKT48ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYmctbGlnaHQgcC0wXCI+PHNwYW4gY2xhc3M9XCJtbC0xIGxhYmVsLXhzIGJvbGRcIj5Qcm9wZXJ0aWVzPC9zcGFuPjxidXR0b24gdHlwZT1idXR0b24gdGl0bGU9XCJDbG9zZSBwcm9wZXJ0aWVzXCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBwLTAgcGwtMSBwci0xIGZsb2F0LXJpZ2h0XCIgbmctY2xpY2s9c2hvd0hpZGVQcm9wZXJ0aWVzKGZhbHNlKT48c21hbGw+PHNwYW4gY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvc3Bhbj48L3NtYWxsPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9bXQtMiBuZy1pZj1nc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKSBrdC1mb3JtLWVsZW1lbnQtcHJvcGVydGllcyBsb2NhbC12YXJzPWxvY2FsVmFycyBmZD1zZWxlY3RlZEZpZWxkPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxzdHlsZT5cXHJcXG5cXHJcXG4ubm8tbmF2YmFyLW1lbnVcXHJcXG57XFxyXFxuICAgIGJvcmRlcjogMXB4IGRhc2hlZCBsaWdodGdyZXkgIWltcG9ydGFudDtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYSAhaW1wb3J0YW50O1xcclxcbiAgICBjb2xvcjogI2QxZDFkMSAhaW1wb3J0YW50O1xcclxcbn1cXHJcXG4uaW5zZXJ0LWJ1dHRvblxcclxcbntcXHJcXG4gICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcXHJcXG4gICAgIG1heC13aWR0aDogNTAlO1xcclxcbn1cXHJcXG4uZGVsZXRlLWJ1dHRvblxcclxcbntcXHJcXG4gICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcXHJcXG4gICAgIG1heC13aWR0aDogNTAlO1xcclxcblxcdHBvc2l0aW9uOmFic29sdXRlO1xcclxcblxcdHRvcDowcHg7XFxyXFxuXFx0cmlnaHQ6MHB4XFxyXFxufVxcclxcbi5wYWdlLWdyaWQtaXRlbVxcclxcbntcXHJcXG4gICAgIFxcclxcblxcdG1pbi13aWR0aDogMDtcXHJcXG5cXHRwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuXFx0YmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcXHJcXG5cXHRib3JkZXI6MXB4IHNvbGlkIGxpZ2h0Z3JheTtcXHJcXG59XFxyXFxuXFxyXFxuXFxyXFxuLypcXHJcXG4ucGFnZS1ncmlkLWl0ZW0tb25seTpmaXJzdC1vZi10eXBlIHtcXHJcXG4gIGJvcmRlcjpkYXNoZWQ7XFxyXFxufVxcclxcblxcclxcbi5wYWdlLWdyaWQtaXRlbS1vbmx5Om50aC1sYXN0LW9mLXR5cGUoMCkge1xcclxcbiAgICBib3JkZXI6IDJweCBzb2xpZCBvcmFuZ2U7XFxyXFxufVxcclxcbiovXFxyXFxuXFxyXFxuLnBhZ2UtZ3JpZC1pdGVtLW9ubHlcXHJcXG57XFxyXFxuICAgICBib3JkZXI6IDFweCBkYXNoZWQgZ3JheTtcXHJcXG5cXHRtaW4td2lkdGg6IDA7XFxyXFxuXFx0cGFkZGluZzoxMHB4O1xcclxcblxcdGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XFxyXFxuXFx0XFxyXFxufVxcclxcbi5wYWdlLWdyaWQtaXRlbS1vbmx5OmhvdmVyIC5pbnNlcnQtYnV0dG9uXFxyXFxue1xcclxcbiAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXHJcXG59XFxyXFxuLnBhZ2UtZ3JpZC1pdGVtOmhvdmVyIC5kZWxldGUtYnV0dG9uXFxyXFxue1xcclxcbiAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXHJcXG59XFxyXFxuLnRhYi1pdGVtXFxyXFxue1xcclxcbiBjb2xvcjojMkM2MEU1O1xcclxcbiAvKmZvbnQtc2l6ZTogODAlO1xcclxcbiBmb250LXdlaWdodDogNDAwOyovXFxyXFxuIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDtcXHJcXG4gdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcclxcbn1cXHJcXG4udGFiLWl0ZW06aG92ZXIsLnRhYi1pdGVtOmZvY3VzXFxyXFxue1xcclxcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcclxcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJDNjBFNTtcXHJcXG4gIGNvbG9yOiNmZmZmZmY7ICBcXHJcXG59XFxyXFxuLnRhYi1pdGVtLXNlbGVjdGVkOmhvdmVyLC50YWItaXRlbS1zZWxlY3RlZDpmb2N1c1xcclxcbntcXHJcXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgXFxyXFxufVxcclxcbi50YWItaXRlbS1zZWxlY3RlZFxcclxcbntcXHJcXG4gICAgIGNvbG9yOiMyQzYwRTU7XFxyXFxuICAvKiAgIGZvbnQtc2l6ZTogODAlO1xcclxcbiAgICAgZm9udC13ZWlnaHQ6IDQwMDsqL1xcclxcbiAgICAgcGFkZGluZzogMC4yNXJlbSAhaW1wb3J0YW50O1xcclxcbiAgICAgYm9yZGVyLWJvdHRvbToycHggc29saWQgIzJDNjBFNTtcXHJcXG4gICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXHJcXG59XFxyXFxuLnBhZ2UtbmF2aWdhdGlvbi1iYXJ7XFxyXFxuICAgIGdyaWQtY29sdW1uOiAxIC8gc3BhbiAyO1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTBlZTkwMGQ7XFxyXFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICMxZGI0NmI4MDtcXHJcXG4gICAgcGFkZGluZzogMTBweDtcXHJcXG4gICAgY29sb3I6ICMxZGI0NmI7XFxyXFxuICAgIH1cXHJcXG4ucGFnZS1zaWRlLW1lbnV7XFxyXFxuICAgYmFja2dyb3VuZC1jb2xvcjogIzkwZWU5MDBkO1xcclxcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjMWRiNDZiODA7XFxyXFxuICAgIHBhZGRpbmc6IDVweDtcXHJcXG4gICAgY29sb3I6ICMxZGI0NmI7XFxyXFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG4gICAgfVxcclxcbjwvc3R5bGU+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAzX3Jlc291cmNlcy9hbmd1bGFyVGVtcGxhdGVzL3BhZ2VzRm9ybS5odG1sJywnPGZvcm0gbmctc3VibWl0PXNhdmVQYWdlRm9ybShmb3JtYS4kdmFsaWQpIGlkPWZvcm1hMSBuYW1lPWZvcm1hIGNsYXNzPWZvcm0taG9yaXpvbnRhbCByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2IGNsYXNzPWNvbC1tZC0xMj48YnV0dG9uIHR5cGU9YnV0dG9uIHVpLXNyZWY9XCJhcHAubmF2YmFyLnJlc291cmNlcy5wYWdlcy1kZWZpbml0aW9uKHtpZDogcmVzb3VyY2VJZH0pXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1lZGl0XCI+PC9zcGFuPiBFZGl0IHBhZ2UgZGVmaW5pdGlvbjwvYnV0dG9uPiA8YnV0dG9uIHRpdGxlPVwiTG9jay9VbmxvY2sgZm9ybVwiIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBmbG9hdC1yaWdodFwiIG5nLWNsaWNrPVwicmVzb3VyY2VEZWZpbml0aW9uLmZvcm1Mb2NrZWQ9IXJlc291cmNlRGVmaW5pdGlvbi5mb3JtTG9ja2VkXCI+PGkgbmctY2xhc3M9XCJ7XFwnZmEgZmEtbG9jayBmYS1sZ1xcJzogcmVzb3VyY2VEZWZpbml0aW9uLmZvcm1Mb2NrZWQgLFxcJ2ZhIGZhLXVubG9jay1hbHQgZmEtbGdcXCc6ICFyZXNvdXJjZURlZmluaXRpb24uZm9ybUxvY2tlZCxcXCdjb2xvcjpibGFja1xcJzogcmVzb3VyY2VEZWZpbml0aW9uLmZvcm1Mb2NrZWR9XCI+PC9pPjwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9cm93PjxkaXYgY2xhc3M9Y29sLW1kLTEyPjxkaXYgY2xhc3M9dGV4dC1jZW50ZXI+PGg0Pnt7cmVzb3VyY2VEZWZpbml0aW9uLm5hbWV9fTwvaDQ+PC9kaXY+PC9kaXY+PC9kaXY+PGJyPjxkaXYgY2xhc3M9c29ydC1ib3g+PGRpdiBrdC1ncmlkIGdyaWQtdHlwZT1ncmlkc3RlclR5cGUgZm9ybS1wYXJhbXM9cmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMgcGFyZW50PWRhc2hib2FyZC53aWRnZXRzIGFsbC1jb2x1bW5zPWRhc2hib2FyZC53aWRnZXRzIGNsYXNzPWt0R3JpZD48L2Rpdj48L2Rpdj48aHI+PGRpdiBjbGFzcz1jb250cm9sLWdyb3VwPjxidXR0b24gdHlwZT1zdWJtaXQgaWQ9Y2xlYXJCdG4gY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1zYXZlXCI+PC9zcGFuPiZuYnNwIFNhdmUge3tyZXNvdXJjZURlZmluaXRpb24ubmFtZX19IGZvcm08L2J1dHRvbj48YnI+PGJyPjwvZGl2PjwvZm9ybT48ZGl2IGNsYXNzPXJvdz48aHI+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAzX3Jlc291cmNlcy9hbmd1bGFyVGVtcGxhdGVzL3Jlc291cmNlRGF0YS5odG1sJywnPGRpdj48ZGl2IGNsYXNzPVwiY2FyZCBtdC0xXCI+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCIgdWktc3JlZj1cImFwcC5uYXZiYXIucmVzb3VyY2VzLmZvcm0oe2lkOiByZXNvdXJjZUlkfSlcIj48c3BhbiBjbGFzcz1cImZhIGZhLWFycm93LWNpcmNsZS1sZWZ0XCI+PC9zcGFuPiBCYWNrIHRvIGRhdGFzZXQgZm9ybTwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cInRleHQtY2VudGVyIGNvbC0yNFwiPjxoND57e3Jlc291cmNlTmFtZX19PC9oND48L2Rpdj48ZGl2IGNsYXNzPVwibXktMSBjb250cm9sLWdyb3VwXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHRcIiB1aS1zcmVmPVwiYXBwLm5hdmJhci5yZXNvdXJjZXMuZGF0YS1yZWNvcmQoe3Jlc291cmNlX2lkOiByZXNvdXJjZUlkLGlkOiBzZWxlY3RlZFJlY29yZElkfSlcIiBuZy1kaXNhYmxlZD0hcmVzb3VyY2VSZWNvcmRTZWxlY3RlZCBuZy1jbGljaz1lZGl0UmVzb3VyY2VEYXRhKCk+PHNwYW4gY2xhc3M9XCJmYSBmYS1uZXdzcGFwZXJcIj48L3NwYW4+IEVkaXQgc2VsZWN0ZWQgcmVjb3JkPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCIgdWktc3JlZj1cImFwcC5uYXZiYXIucmVzb3VyY2VzLmRhdGEtcmVjb3JkKHtyZXNvdXJjZV9pZDogcmVzb3VyY2VJZH0pXCIgbmctZGlzYWJsZWQgbmctY2xpY2s9YWRkUmVzb3VyY2VEYXRhKCk+PHNwYW4gY2xhc3M9XCJmYSBmYS1uZXdzcGFwZXJcIj48L3NwYW4+IEFkZCBuZXcgcmVjb3JkPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCIgdWktc3JlZj1cImFwcC5uYXZiYXIucmVzb3VyY2VzLmltcG9ydCh7cmVzb3VyY2VfaWQ6IHJlc291cmNlSWR9KVwiIG5nLWRpc2FibGVkIG5nLWNsaWNrPWltcG9ydFJlc291cmNlRGF0YSgpPjxzcGFuIGNsYXNzPVwiZmEgZmEtbmV3c3BhcGVyXCI+PC9zcGFuPiBJbXBvcnQgcmVjb3JkcyBmcm9tIGZpbGU8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY2FyZCBtdC0xXCI+PGRpdiBpZD1ncmlkMSB1aS1ncmlkPWdyaWRPcHRpb25zIHVpLWdyaWQtc2VsZWN0aW9uIHVpLWdyaWQtcmVzaXplLWNvbHVtbnMgdWktZ3JpZC1wYWdpbmF0aW9uIHVpLWdyaWQtZXhwb3J0ZXIgY2xhc3M9bXlHcmlkPjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wIG15LTFcIj48ZGl2IGNsYXNzPWNvbC1hdXRvPjx1bCBzdHlsZT1tYXJnaW46MCB1aWItcGFnaW5hdGlvbiBib3VuZGFyeS1saW5rcz10cnVlIG1heC1zaXplPTEwIGl0ZW1zLXBlci1wYWdlPXBhZ2VTaXplIGZvcmNlLWVsbGlwc2VzPXRydWUgdG90YWwtaXRlbXM9dG90YWxDb3VudCBuZy1tb2RlbD1jdXJyZW50UGFnZSBjbGFzcz1wYWdpbmF0aW9uLW1kIHByZXZpb3VzLXRleHQ9JmxzYXF1bzsgbmctY2hhbmdlPXBhZ2VDaGFuZ2VkKCkgbmV4dC10ZXh0PSZyc2FxdW87IGZpcnN0LXRleHQ9JmxhcXVvOyBsYXN0LXRleHQ9JnJhcXVvOz48L3VsPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgdGV4dC1yaWdodFwiPjxzZWxlY3QgY2xhc3M9aW5wdXQtc20gbmctY2hhbmdlPXBhZ2VDaGFuZ2VkKCkgbmctbW9kZWw9cGFnZVNpemU+PG9wdGlvbiBuZy1yZXBlYXQ9XCJwcyBpbiBncmlkT3B0aW9ucy5wYWdpbmF0aW9uUGFnZVNpemVzIHRyYWNrIGJ5IHBzXCIgbmctc2VsZWN0ZWQ9XCJwYWdlU2l6ZT09cHNcIiBuZy12YWx1ZT1wcz57e3BzfX08L29wdGlvbj48L3NlbGVjdD5pdGVtcyBwZXIgcGFnZSAmbmJzcCZuYnNwIHwgJm5ic3AmbmJzcCBQYWdlOiB7e2N1cnJlbnRQYWdlfX0gLyB7e251bVBhZ2VzfX0gJm5ic3AmbmJzcCB8ICZuYnNwJm5ic3Age3twYWdlU2l6ZSpjdXJyZW50UGFnZSsxLXBhZ2VTaXplfX0gLSB7e3BhZ2VTaXplKmN1cnJlbnRQYWdlPnRvdGFsQ291bnQgPyB0b3RhbENvdW50IDogcGFnZVNpemUqY3VycmVudFBhZ2V9fSBvZiB7e3RvdGFsQ291bnR9fSBpdGVtczwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjYXJkIG10LTFcIj48ZGl2IGlkPWdyaWQyIHVpLWdyaWQ9Z3JpZE9wdGlvbnNSZWxhdGVkIHVpLWdyaWQtc2VsZWN0aW9uIHVpLWdyaWQtcmVzaXplLWNvbHVtbnMgdWktZ3JpZC1leHBvcnRlciBjbGFzcz1teUdyaWQ+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAzX3Jlc291cmNlcy9hbmd1bGFyVGVtcGxhdGVzL3Jlc291cmNlRGF0YVJlY29yZC5odG1sJywnPGZvcm0gbmctc3VibWl0PXNhdmVSZXNvdXJjZURhdGEoZm9ybWEuJHZhbGlkKSBpZD1mb3JtYTEgbmFtZT17e2Zvcm1EZWZpbml0aW9uLmZvcm1OYW1lfX0gY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYgY2xhc3M9XCJjYXJkIG10LTFcIj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpbmtcIiB1aS1zcmVmPVwiYXBwLm5hdmJhci5yZXNvdXJjZXMuZGF0YSh7aWQ6IHJlc291cmNlSWR9KVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtYXJyb3ctY2lyY2xlLWxlZnRcIj48L3NwYW4+IEJhY2sgdG8gbGlzdCBvZiB7e3Jlc291cmNlRGVmaW5pdGlvbi5uYW1lfX08L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9Y29sLTY+PGRpdiBjbGFzcz10ZXh0LWxlZnQ+PGg0Pnt7cmVzb3VyY2VEZWZpbml0aW9uLm5hbWV9fTwvaDQ+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPWNvbC0yND48ZGl2IGt0LWdyaWQgcmVzb3VyY2UtZm9ybS1sb2FkZWQ9Zm9ybUxvYWRlZCBncmlkLXR5cGU9Z3JpZHN0ZXJUeXBlIHJlc291cmNlLWRlZmluaXRpb249dGFza0RlZmluaXRpb24gZm9ybS1wYXJhbXM9cmVzb3VyY2VEZWZpbml0aW9uLmZvcm1QYXJhbXMgZm9ybS1kYXRhPWZvcm1EYXRhIHBhcmVudD1kYXNoYm9hcmQud2lkZ2V0cyBhbGwtY29sdW1ucz1kYXNoYm9hcmQud2lkZ2V0cyBjbGFzcz1rdEdyaWQ+PC9kaXY+PC9kaXY+PC9kaXY+PGhyPjxkaXYgY2xhc3M9XCJyb3cgbS0wIHAtMSBjb250cm9sLWdyb3VwXCI+PGJ1dHRvbiB0eXBlPXN1Ym1pdCBpZD1jbGVhckJ0biBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IG1yLTJcIj48c3BhbiBjbGFzcz1cImZhIGZhLXNhdmUgbXItMlwiPjwvc3Bhbj48c3BhbiBjbGFzcz1tci0xPnt7YWN0aW9ufX08L3NwYW4+IHt7cmVzb3VyY2VEZWZpbml0aW9uLm5hbWV9fSByZWNvcmQ8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1kZWxldGVTZWxlY3RlZFJlY29yZCgpIG5nLWlmPVwiYWN0aW9uPT1cXCdVcGRhdGVcXCdcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kYW5nZXJcIj48c3BhbiBjbGFzcz1cImZhIGZhLXRpbWVzIG1yLTJcIj48L3NwYW4+RGVsZXRlIHt7cmVzb3VyY2VEZWZpbml0aW9uLm5hbWV9fSByZWNvcmQ8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Zvcm0+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAzX3Jlc291cmNlcy9hbmd1bGFyVGVtcGxhdGVzL3Jlc291cmNlRm9ybS5odG1sJywnPHN0eWxlPlxcclxcblxcclxcbi5zaGFkb3didXR0b24ge1xcclxcbiAgICBib3gtc2hhZG93OiAwIDAuMTI1cmVtIDAuMjVyZW0gcmdiKDE0IDI2IDU3IC8gOCUpICFpbXBvcnRhbnQ7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6IGFsaWNlYmx1ZTtcXHJcXG59XFxyXFxuLnNoYWRvd2J1dHRvbjpob3ZlciB7XFxyXFxuICAgIGJveC1zaGFkb3c6IHZhcigtLWRzLW92ZXJsYXksMCA4cHggMTZweCAtNHB4IHJnYmEoOSwzMCw2NiwwLjI1KSwwIDAgMXB4IHJnYmEoOSwzMCw2NiwwLjMxKSkgIWltcG9ydGFudDtcXHJcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcclxcbn1cXHJcXG5cXHJcXG4uc2hhZG93YnV0dG9uLmRpc2FibGVkLCAuc2hhZG93YnV0dG9uOmRpc2FibGVkIHtcXHJcXG4gICAgY29sb3I6Ymx1ZTtcXHJcXG4gICAgb3BhY2l0eTogMTtcXHJcXG59XFxyXFxuXFxyXFxuLnNoYWRvd2J1dHRvbiAuYmx1ZW9uaG92ZXIge1xcclxcbiAgIGJvcmRlci1ib3R0b206IHNvbGlkIHRoaWNrIGxpZ2h0Z3JheTtcXHJcXG59XFxyXFxuXFxyXFxuLnNoYWRvd2J1dHRvbjpkaXNhYmxlZCAuYmx1ZW9uaG92ZXIsIC5zaGFkb3didXR0b246aG92ZXIgLmJsdWVvbmhvdmVyIHtcXHJcXG4gYm9yZGVyLWJvdHRvbTogc29saWQgdGhpY2sgYmx1ZSA7ICBcXHJcXG59XFxyXFxuIFxcclxcbmE6YWN0aXZlLCAubGluazphY3RpdmUge1xcclxcbiAgICBjb2xvcjogdmFyKC0tZHMtdGV4dC1saW5rLXByZXNzZWQsIzAwNjVGRik7XFxyXFxuICAgIH1cXHJcXG4gICAgXFxyXFxuXFxyXFxuPC9zdHlsZT48ZGl2IGlkPXJlc291cmNlRm9ybSBzdHlsZT48ZGl2IGt0LWhlbHAtY2VudGVyIGhlbHAtaWQ9XCJcXCdkYXRhc2V0ZGVmXFwnXCI+PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQgbS0xXCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgcC0xXCI+PGRpdiBjbGFzcz1cImNvbCBoNCBwLTIgYm9yZGVyLWJvdHRvbSB0ZXh0LWNlbnRlciBteS1hdXRvXCI+PHNwYW4gY2xhc3M9XCJoNCBtdC0xIG1yLTJcIj48Yj57e3Jlc291cmNlLk5hbWV9fTwvYj4ge3tyZXNvdXJjZS5SZXNvdXJjZUNvZGV9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwicC0xIG15LTJcIiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTtcIj48YSBjbGFzcz1cInRleHQtcHJpbWFyeSBoNlwiIGhyZWYgdGl0bGU9e3tyZXR1cm5TdGF0ZS5MYWJlbH19IG5nLWNsaWNrPXJldHVyblRvUHJldmlvdXNQYWdlKCk+PGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1sZWZ0IG1yLTJcIj48L2k+e3tyZXR1cm5TdGF0ZS5MYWJlbH19PC9hPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0yIHAtMSBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHJvd1wiPjxkaXYgbmctaWY9XCIocmVzb3VyY2UuaWQgIT0gbnVsbCB8fCByZXNvdXJjZS5pZCA+IDApXCIgY2xhc3M9XCJjb2wtYXV0byBteC0xXCIgaWQ9dmVyc2lvbj48c3BhbiBjbGFzcz1tdC0xPjxiIGNsYXNzPVwidGFnIHNtYWxsIHRleHQtc3VjY2VzcyBteS0xIG1yLTJcIj5JRDwvYj4ge3tyZXNvdXJjZS5pZH19ICh7e3Jlc291cmNlLm5pZH19KTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXgtMVwiIGlkZD1hY3RpdmVPck5vdD48c3BhbiB0aXRsZT1cIlJlc291cmNlIHR5cGVcIiBuZy1pZj1cIihyZXNvdXJjZS5pZCAhPSBudWxsIHx8IHJlc291cmNlLmlkID4gMClcIiBjbGFzcz1cInRhZyB0ZXh0LXN1Y2Nlc3MgbXktMVwiPnt7cmVzb3VyY2UuUmVzb3VyY2VOYW1lfX08L3NwYW4+IDxzcGFuIG5nLWlmPVwicmVzb3VyY2UuQWN0aXZlICYmIChyZXNvdXJjZS5pZCAhPSBudWxsIHx8IHJlc291cmNlLmlkID4gMClcIiBjbGFzcz1cInNtYWxsIGJvbGQgbXItNFwiPkFjdGl2ZSA8aSBjbGFzcz1cInRleHQtc3VjY2VzcyBmYSBmYS1jaGVja1wiPjwvaT48L3NwYW4+IDxzcGFuIG5nLWlmPVwiIXJlc291cmNlLkFjdGl2ZSAmJiAocmVzb3VyY2UuaWQgIT0gbnVsbCB8fCByZXNvdXJjZS5pZCA+IDApXCIgY2xhc3M9XCJzbWFsbCBib2xkIG1yLTRcIj5Ob3QgYWN0aXZlIDxpIGNsYXNzPVwidGV4dC1kYW5nZXIgZmEgZmEtdGltZXNcIj48L2k+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBteC0xXCI+PHNwYW4gY2xhc3M9XCJzbWFsbCBtci0yXCIgdGl0bGU9XCJDaGFuZ2VzIHRvIGZvcm0gd2lsbCBiZSBzYXZlZCB1bmRlciB0aGlzIHZlcnNpb25cIj48YiBjbGFzcz1cInRhZyB0ZXh0LXN1Y2Nlc3MgbXktMSBtci0yXCI+VkVSU0lPTjwvYj4ge3tyZXNvdXJjZS5WZXJzaW9ufX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIG14LTFcIiBpZD1wdWJsaXNoZWRPck5vdD48ZGl2IG5nLWlmPVwiKHJlc291cmNlLmlkICE9IG51bGwgfHwgcmVzb3VyY2UuaWQgPiAwKVwiIGNsYXNzPXNtYWxsPjxiIGNsYXNzPVwidGFnIHRleHQtc3VjY2VzcyBteS0xIG1yLTJcIj5TVEFUVVM8L2I+PC9kaXY+PGRpdj48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi14c1wiIHRpdGxlPVwiQ2xpY2sgZm9yIHZlcnNpb24gZGV0YWlsc1wiIG5nLWNsYXNzPVwie1xcJ2J0bi1vdXRsaW5lLXN1Y2Nlc3NcXCc6IWRhdGFzZXREZXBsb3kubGVuZ3RoLFxcJ2J0bi13YXJuaW5nXFwnOmRhdGFzZXREZXBsb3kubGVuZ3RofVwiIG5nLWNsaWNrPVwic2hvd1B1Ymxpc2goXFwnZm9ybVxcJylcIj48c3BhbiBuZy1pZj0hZGF0YXNldERlcGxveS5sZW5ndGg+Tm8gY2hhbmdlczwvc3Bhbj48c3BhbiBuZy1pZj1cImRhdGFzZXREZXBsb3kubGVuZ3RoPT0xXCI+e3tkYXRhc2V0RGVwbG95Lmxlbmd0aH19IHBlbmRpbmcgZGF0YWJhc2UgY2hhbmdlPC9zcGFuPiA8c3BhbiBuZy1pZj1cImRhdGFzZXREZXBsb3kubGVuZ3RoPjFcIj57e2RhdGFzZXREZXBsb3kubGVuZ3RofX0gcGVuZGluZyBkYXRhYmFzZSBjaGFuZ2VzPC9zcGFuPiA8aSBuZy1pZj0hZGF0YXNldERlcGxveS5sZW5ndGggY2xhc3M9XCJmYSBmYS1jaGVjayBtbC0yXCI+PC9pPiA8aSBuZy1pZj1kYXRhc2V0RGVwbG95Lmxlbmd0aCBjbGFzcz1cImZhIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZSBtbC0yXCI+PC9pPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBteC0xIHNtYWxsXCIgdGl0bGU9XCJDcmVhdGVkIGJ5IHt7cmVzb3VyY2UuQ3JlYXRlZEJ5LmZpcnN0X25hbWV9fSB7e3Jlc291cmNlLkNyZWF0ZWRCeS5sYXN0X25hbWV9fVwiIG5nLWlmPXJlc291cmNlLkNyZWF0ZWRCeT48YiBjbGFzcz1cInRhZyB0ZXh0LXN1Y2Nlc3MgbXQtMSBtYi0yIG1yLTJcIj5DUkVBVEVEPC9iPiB7e3Jlc291cmNlLkNyZWF0ZWREYXRlVGltZSB8IGRhdGU6IFwiZGQuTU0ueXl5eSBcXCdhdFxcJyBISDptbTpzc1wifX0gPHNwYW4gbmctaWY9cmVzb3VyY2UuQ3JlYXRlZEJ5LmZpcnN0X25hbWU+KGJ5IDxiPnt7cmVzb3VyY2UuQ3JlYXRlZEJ5LmZpcnN0X25hbWV9fSB7e3Jlc291cmNlLkNyZWF0ZWRCeS5sYXN0X25hbWV9fTwvYj4pPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBzbWFsbFwiPjxzcGFuIHRpdGxlPVwiQ2hhbmdlZCBieSB7e3Jlc291cmNlLkNoYW5nZWRCeS5maXJzdF9uYW1lfX0ge3tyZXNvdXJjZS5DaGFuZ2VkQnkubGFzdF9uYW1lfX1cIiBuZy1pZj1yZXNvdXJjZS5DaGFuZ2VkQnk+PGIgY2xhc3M9XCJ0YWcgdGV4dC1zdWNjZXNzIG15LTEgbWItMiBtci0yXCI+TU9ESUZJRUQ8L2I+PC9zcGFuPiB7e3Jlc291cmNlLkNoYW5nZWREYXRlVGltZSB8IGRhdGU6XCJkZC5NTS55eXl5IFxcJ2F0XFwnIEhIOm1tOnNzXCJ9fSA8c3BhbiBuZy1pZj1yZXNvdXJjZS5DaGFuZ2VkQnkuZmlyc3RfbmFtZT4oYnkgPGI+e3tyZXNvdXJjZS5DaGFuZ2VkQnkuZmlyc3RfbmFtZX19IHt7cmVzb3VyY2UuQ2hhbmdlZEJ5Lmxhc3RfbmFtZX19PC9iPik8L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBzdHlsZSBuZy1pZj1cImRlZmluaXRpb25UeXBlPT1cXCdkYXRhc291cmNlXFwnICYmIHJlc291cmNlLlBhcmFtZXRlcnMuZXh0ZXJuYWxEYXRhU291cmNlICYmIHJlc291cmNlLlBhcmFtZXRlcnMuZXh0RGF0YVNvdXJjZVR5cGUuaWQ8M1wiIGNsYXNzPVwiY2FyZCBtdC0zXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBteS0yXCI+PHNwYW4gY2xhc3M9XCJ0YWcgbXQtMVwiPkRhdGFzZXQgY29sdW1ucyBkZWZpbml0aW9uPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxkaXYgbmctcmVwZWF0PVwiZWxlbWVudCBpbiByZXNvdXJjZS5QYXJhbWV0ZXJzLmV4dERhdGFTb3VyY2VQYXJhbXMuZm9ybUZpZWxkc0xpc3QgdHJhY2sgYnkgJGluZGV4XCI+PGRpdiBuZy1pZj1cIiRpbmRleD09MFwiIGNsYXNzPVwicm93IG0tMCBzbWFsbCBib2xkIHRleHQtY2VudGVyXCI+PGRpdiBjbGFzcz1cImNvbC0yIG0tMSBiZy1wcmltYXJ5XCI+PHNwYW4gY2xhc3M9dGV4dC13aGl0ZT5pZDwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTQgbS0xIGJnLXByaW1hcnlcIj48c3BhbiBjbGFzcz10ZXh0LXdoaXRlPkZpZWxkIG5hbWU8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC00IG0tMSBiZy1wcmltYXJ5XCI+PHNwYW4gY2xhc3M9dGV4dC13aGl0ZT5GaWVsZCB0eXBlPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtNCBtLTEgYmctcHJpbWFyeVwiPjxzcGFuIGNsYXNzPXRleHQtd2hpdGU+VGFibGUgY29sdW1uPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wIGl0ZW0gc21hbGxcIj48ZGl2IGNsYXNzPVwiY29sLTIgbS0xXCI+PHNwYW4+e3tlbGVtZW50Lkl0ZW1JZH19PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtNCBtLTFcIj48c3Bhbj57e2VsZW1lbnQuTGFiZWx9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTQgbS0xXCI+PHNwYW4+e3tlbGVtZW50LkVsZW1lbnRUeXBlfX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC00IHRleHQtY2VudGVyXCI+PGRpdiBjbGFzcz1cIlwiPjxpbnB1dCB0eXBlPXRleHQgY2xhc3MgaWQ9Y2JJbWUye3tlbGVtZW50LmlkfX0gbmctbW9kZWw9ZWxlbWVudC53aWRnZXQuRmllbGROYW1lPiA8bGFiZWwgY2xhc3M9bGFiZWwteHMgZm9yPWNiSW1lMnt7ZWxlbWVudC5pZH19PjwvbGFiZWw+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz48YnV0dG9uIHR5cGU9YnV0dG9uIGlkPXNhdmVEYXRhU291cmNlQnRuIG5nLWRpc2FibGVkPWZvcm0xLiRpbnZhbGlkIG5nLWNsaWNrPXNhdmVSZXNvdXJjZUZvcm0odHJ1ZSkgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1zdWNjZXNzIG15LTJcIj48c3BhbiBjbGFzcz1cImZhIGZhLXNhdmUgbXItMlwiPjwvc3Bhbj5TYXZlIHRhYmxlIGNvbHVtbnM8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY2FyZCBtLTFcIiBzdHlsZT48ZGl2IHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiIGNsYXNzPVwicC0xIHJvdyBteC0xXCIgbmctY2xpY2s9XCJpc0NvbGxhcHNlZERhdGFQcm9wZXJ0eSA9ICFpc0NvbGxhcHNlZERhdGFQcm9wZXJ0eVwiPjxzcGFuIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBwLTFcIj48c3BhbiBuZy1jbGFzcz1cIntcXCdmYXMgZmEtY2hldnJvbi1kb3duXFwnOiBpc0NvbGxhcHNlZERhdGFQcm9wZXJ0eSxcXCdmYXMgZmEtY2hldnJvbi1yaWdodFxcJzogIWlzQ29sbGFwc2VkRGF0YVByb3BlcnR5IH1cIj48L3NwYW4+PC9zcGFuPiA8c3BhbiBjbGFzcz10YWc+e3tyZXNvdXJjZS5SZXNvdXJjZU5hbWV9fSBQUk9QRVJUSUVTPC9zcGFuPjwvZGl2Pjxmb3JtIHVpYi1jb2xsYXBzZT0haXNDb2xsYXBzZWREYXRhUHJvcGVydHkgbmctc3VibWl0PXNhdmVSZXNvdXJjZURlZihmb3JtLiR2YWxpZCkgaWQ9ZGF0YXNldFByb3BzRm9ybSBuYW1lPWZvcm0gY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1jb2wtbGctMTI+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uTmFtZS4kdG91Y2hlZCkgJiYgZm9ybS5OYW1lLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTI0IGZvcj1yZXNvdXJjZU5hbWU+TmFtZTwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1yZXNvdXJjZS5OYW1lIG5nLXJlcXVpcmVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPU5hbWUgbmFtZT1OYW1lIHBsYWNlaG9sZGVyPVwiUmVzb3VyY2UgbmFtZVwiPjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uTmFtZS4kdG91Y2hlZCkgJiYgZm9ybS5OYW1lLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5FbnRlciByZXNvdXJjZSBuYW1lPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLlN1YmplY3QuJHRvdWNoZWQpICYmIGZvcm0uU3ViamVjdC4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1sZy0yNCBmb3I9U3ViamVjdD5TdWJqZWN0PC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1sZy0yND48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPXJlc291cmNlLlN1YmplY3QgbmctcmVxdWlyZWQ9dHJ1ZSBjbGFzcz1mb3JtLWNvbnRyb2wgaWQ9U3ViamVjdCBuYW1lPVN1YmplY3QgcGxhY2Vob2xkZXI9XCJSZXNvdXJjZSBzdWJqZWN0XCI+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5TdWJqZWN0LiR0b3VjaGVkKSAmJiBmb3JtLlN1YmplY3QuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIHJlc291cmNlIHN1YmplY3Q8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBtYi00XCI+PGRpdiBjbGFzcz1teS1hdXRvPkFjdGl2ZTwvZGl2PjxsYWJlbCBjbGFzcz1cInN3aXRjaCBzd2l0Y2gtZ3JlZW5cIj48aW5wdXQgbmctbW9kZWw9cmVzb3VyY2UuQWN0aXZlIHR5cGU9Y2hlY2tib3ggbmctdHJ1ZS12YWx1ZT10cnVlIG5nLWZhbHNlLXZhbHVlPWZhbHNlIGNsYXNzPXN3aXRjaC1pbnB1dD4gPHNwYW4gY2xhc3M9c3dpdGNoLWxhYmVsIGRhdGEtb249T24gZGF0YS1vZmY9T2ZmPjwvc3Bhbj4gPHNwYW4gY2xhc3M9c3dpdGNoLWhhbmRsZT48L3NwYW4+PC9sYWJlbD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0xMj48ZGl2IG5nLWlmPWZhbHNlIGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5yZXNvdXJjZVRhZ3MuJHRvdWNoZWQpICYmIGZvcm0ucmVzb3VyY2VUYWdzLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTI0IGZvcj1kZGxSZXNvdXJjZVR5cGU+I0hhc2hUYWdzPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1sZy0yND48dWktc2VsZWN0IG5nLW1vZGVsPXJlc291cmNlLlRhZ3MgdWktc2VsZWN0LW11bHRpcGxlLWxpc3QgbmctZGlzYWJsZWQ9ZGlzYWJsZWQgY2xvc2Utb24tc2VsZWN0PWZhbHNlIG5hbWU9cmVzb3VyY2VUeXBlIG5nLXJlcXVpcmVkPWZhbHNlIHJlc2V0LXNlYXJjaC1pbnB1dD1mYWxzZT48dWktc2VsZWN0LW1hdGNoIGNsYXNzPXVpLXNlbGVjdC1tYXRjaCBwbGFjZWhvbGRlcj1cIlNlYXJjaCBvciBzZWxlY3QgZGF0YXNldCAjaGFzaHRhZ3MuLi5cIj48c3BhbiBjbGFzcz1wLTA+e3skc2VsZWN0LnNlbGVjdGVkLm5hbWV9fSA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmsgcC0wXCIgbmctY2xpY2s9XCJjbGVhcigkZXZlbnQsICRzZWxlY3QpXCI+PGkgY2xhc3M9XCJtbC0zIGZhIGZhLXRpbWVzIGZsb2F0LXJpZ2h0XCI+PC9pPjwvYT48L3NwYW4+PC91aS1zZWxlY3QtbWF0Y2g+PHVpLXNlbGVjdC1jaG9pY2VzIGNsYXNzPXVpLXNlbGVjdC1jaG9pY2VzIHJlcGVhdD1cInJ0IGluIChyZXNvdXJjZVRhZ3NMaXN0IHwgZmlsdGVyOiB7IG5hbWU6ICRzZWxlY3Quc2VhcmNoIH0pIHRyYWNrIGJ5IHJ0LmlkXCIgcmVmcmVzaD1yZWZyZXNoUmVzdWx0cygkc2VsZWN0KSByZWZyZXNoLWRlbGF5PTA+PHNwYW4+e3tydC5uYW1lfX08L3NwYW4+PC91aS1zZWxlY3QtY2hvaWNlcz48dWktc2VsZWN0LWZvb3Rlcj48L3VpLXNlbGVjdC1mb290ZXI+PHVpLXNlbGVjdC1uby1jaG9pY2U+PC91aS1zZWxlY3Qtbm8tY2hvaWNlPjwvdWktc2VsZWN0PjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ucmVzb3VyY2VUYWdzLiR0b3VjaGVkKSAmJiBmb3JtLnJlc291cmNlVGFncy4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+U2VsZWN0IHJlc291cmNlIGhhc2h0YWdzPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLkRlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtLkRlc2NyaXB0aW9uLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTI0IGZvcj1EZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PHRleHRhcmVhIHN0eWxlPWhlaWdodDoxMDBweCBuZy1tb2RlbD1yZXNvdXJjZS5EZXNjcmlwdGlvbiBuYW1lPURlc2NyaXB0aW9uIG5nLXJlcXVpcmVkPXRydWUgbmctbWluLWxlbmd0aD0yMCBjbGFzcz1mb3JtLWNvbnRyb2w+PC90ZXh0YXJlYT48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLkRlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtLkRlc2NyaXB0aW9uLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5FbnRlciByZXNvdXJjZSBkZXNjcmlwdGlvbihtaW4gMjAgY2hhcnMpLjwvcD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0yND48ZGl2IGt0LXVzZXJzLWdyb3Vwcy1zZWxlY3QgbmctaWY9Zm9ybUxvYWRlZCBzZWxlY3RlZC11c2Vycz1yZXNvdXJjZS5BZG1pblVzZXJzIHNlbGVjdGVkLWdyb3Vwcz1yZXNvdXJjZS5BZG1pbkdyb3VwcyBoZWFkZXItbGFiZWw9YWRtaW5IZWFkZXJMYWJlbCB1c2Vycy1sYWJlbD1cIlxcJ0FkbWluIHVzZXJzXFwnXCIgZ3JvdXBzLWxhYmVsPVwiXFwnQWRtaW4gZ3JvdXBzXFwnXCI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PGJ1dHRvbiB0eXBlPXN1Ym1pdCBpZD1zYXZlUmVzb3VyY2VCdG4gbmctZGlzYWJsZWQ9Zm9ybS4kaW52YWxpZCBjbGFzcz1cImJ0biBidG4tc20gYnRuLXN1Y2Nlc3MgbXktMlwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtc2F2ZSBtci0yXCI+PC9zcGFuPlNhdmUgcHJvcGVydGllczwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZm9ybT48L2Rpdj48ZGl2IGNsYXNzPVwiY2FyZCBtLTFcIiBzdHlsZT48ZGl2IHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiIGNsYXNzPVwicC0xIHJvdyBteC0xXCIgbmctY2xpY2s9XCJpc0NvbGxhcHNlZFB1Ymxpc2ggPSAhaXNDb2xsYXBzZWRQdWJsaXNoXCI+PHNwYW4gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIHAtMVwiPjxzcGFuIG5nLWNsYXNzPVwie1xcJ2ZhcyBmYS1jaGV2cm9uLWRvd25cXCc6IGlzQ29sbGFwc2VkUHVibGlzaCxcXCdmYXMgZmEtY2hldnJvbi1yaWdodFxcJzogIWlzQ29sbGFwc2VkUHVibGlzaCB9XCI+PC9zcGFuPjwvc3Bhbj4gPHNwYW4gY2xhc3M9dGFnPlB1Ymxpc2gge3tyZXNvdXJjZS5SZXNvdXJjZU5hbWV9fTwvc3Bhbj48L2Rpdj48Zm9ybSB1aWItY29sbGFwc2U9IWlzQ29sbGFwc2VkUHVibGlzaCBuZy1zdWJtaXQ9UHVibGlzaDJQcm9kKGZvcm1QdWJsaXNoLiR2YWxpZCkgaWQ9cHVibGlzaFJlc291cmVGb3JtIG5hbWU9Zm9ybVB1Ymxpc2ggY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCB0ZXh0LWNlbnRlclwiPjxkaXYgbmctaWY9cHVibGlzaGVkUmVzb3VyY2UuUHVibGlzaGVkIGNsYXNzPW1iLTQ+PHNwYW4gY2xhc3M9XCJtci0yIGg0XCI+UHVibGlzaGVkPC9zcGFuPiA8c3BhbiBjbGFzcz1cImZhIGZhLWNoZWNrLWNpcmNsZSBtci0yIHRleHQtc3VjY2VzcyBoNFwiPjwvc3Bhbj48ZGl2PjxzcGFuPlZlcnNpb24ge3twdWJsaXNoZWRSZXNvdXJjZS5QdWJsaXNoZWRWZXJzaW9ufX0gcHVibGlzaGVkIGJ5IHt7cHVibGlzaGVkUmVzb3VyY2UuUHVibGlzaGVkQnl9fSBvbiB7e3B1Ymxpc2hlZFJlc291cmNlLkRhdGVUaW1lIHwgZGF0ZTpcImRkLk1NLnl5eXkgXFwnYXRcXCcgSEg6bW06c3NcIn19PC9zcGFuPiA8c3BhbiBuZy1pZj1wdWJsaXNoZWRSZXNvdXJjZS5DaGFuZ2VkQnk+KGxhc3QgY2hhbmdlZCBieSB7e3B1Ymxpc2hlZFJlc291cmNlLkNoYW5nZWRCeX19IG9uIHt7cHVibGlzaGVkUmVzb3VyY2UuQ2hhbmdlZERhdGVUaW1lIHwgZGF0ZTpcImRkLk1NLnl5eXkgXFwnYXRcXCcgSEg6bW06c3NcIn19KTwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPSFwdWJsaXNoZWRSZXNvdXJjZS5QdWJsaXNoZWQgY2xhc3M9aDQ+PHNwYW4gY2xhc3M9bXItMj5Ob3QgcHVibGlzaGVkPC9zcGFuPiA8c3BhbiBjbGFzcz1cImZhIGZhLXRpbWVzIHRleHQtZGFuZ2VyXCI+PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMjAgb2Zmc2V0LWxnLTIgdGV4dC1jZW50ZXJcIiBuZy1pZj1wdWJsaXNoZWRSZXNvdXJjZS5QdWJsaXNoZWQ+PGRpdiBuZy1pZj1cInB1Ymxpc2hlZFJlc291cmNlLnJtZCAmJiBwdWJsaXNoZWRSZXNvdXJjZS5jb3VudD09MFwiPjxkaXYgY2xhc3M9bXktMiBrdC1iYXNpYy10YWJsZSBjb2x1bW5zPWRhdGFzZXREZXBsb3lDb2xzIGRhdGE9cHVibGlzaGVkUmVzb3VyY2Uucm1kIG1hcHBpbmc9ZGVwbG95QWN0aW9uTWFwcGluZ3M+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cInB1Ymxpc2hlZFJlc291cmNlLnJtZCAmJiBwdWJsaXNoZWRSZXNvdXJjZS5jb3VudD4wXCI+PHNwYW4gY2xhc3M9XCJib3JkZXItYm90dG9tIGg1XCI+UGVuZGluZyBjaGFuZ2VzPC9zcGFuPjxkaXYgY2xhc3M9bXktMiBrdC1iYXNpYy10YWJsZSBjb2x1bW5zPWRhdGFzZXREZXBsb3lDb2xzIGRhdGE9cHVibGlzaGVkUmVzb3VyY2Uucm1kIG1hcHBpbmc9ZGVwbG95QWN0aW9uTWFwcGluZ3M+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCB0ZXh0LWNlbnRlclwiIG5nLWlmPSFwdWJsaXNoZWRSZXNvdXJjZS5QdWJsaXNoZWQ+PGRpdiBjbGFzcz1cImJvcmRlci1ib3R0b20gZm50MTAgcGItMlwiPnt7cmVzb3VyY2UuUmVzb3VyY2VOYW1lfX0gY2hhbmdlcyB0byBwdWJsaXNoPC9kaXY+PGRpdiBjbGFzcz1tdC0yIGt0LWJhc2ljLXRhYmxlIGNvbHVtbnM9ZGF0YXNldERlcGxveUNvbHMgZGF0YT1wdWJsaXNoZWRSZXNvdXJjZS5ybWQgbWFwcGluZz1kZXBsb3lBY3Rpb25NYXBwaW5ncz48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHRleHQtY2VudGVyXCI+PGRpdiBuZy1pZj1kYXRhc2V0RGVwbG95Lmxlbmd0aCBjbGFzcz1cIm15LTIgdGV4dC1kYW5nZXJcIj5UbyBwdWJsaXNoIGRhdGFzZXQgZmlyc3QgZGVwbG95IGFsbCBwZW5kaW5nIGRhdGFiYXNlIGNoYW5nZXMhPC9kaXY+PGJ1dHRvbiB0eXBlPXN1Ym1pdCBpZD1wdWJsaXNoUmVzb3VyY2VCdG4gbmctaGlkZT1cImZvcm1QdWJsaXNoLiRpbnZhbGlkIHx8IGRhdGFzZXREZXBsb3kubGVuZ3RoIHx8IHB1Ymxpc2hlZFJlc291cmNlLmNvdW50PT0wXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1zdWNjZXNzIG15LTJcIj48c3BhbiBuZy1pZj0hcHVibGlzaGluZ0RhdGFzZXQ+PGkgY2xhc3M9XCJmYSBmYS11cGxvYWQgbXItMVwiPjwvaT48L3NwYW4+IDxzcGFuIG5nLWlmPXB1Ymxpc2hpbmdEYXRhc2V0PjxpIGNsYXNzPVwiZmFzIGZhLXNwaW5uZXIgZmEtc3BpbiBtci0xXCI+PC9pPjwvc3Bhbj4gPHNwYW4gbmctaWY9cHVibGlzaGluZ0RhdGFzZXQ+UHVibGlzaGluZy4uLjwvc3Bhbj4gPHNwYW4gbmctaWY9IXB1Ymxpc2hpbmdEYXRhc2V0PlB1Ymxpc2g8L3NwYW4+PC9idXR0b24+PC9kaXY+PC9mb3JtPjwvZGl2PjxkaXYgbmctaWY9ZGVmaW5pdGlvblR5cGUgY2xhc3M9Y2FyZCBuZy1zdHlsZT1cIihyZXNvdXJjZS5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSB8fCByZXNvdXJjZS5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MyB8fCByZXNvdXJjZS5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09NCkgJiYgZ3NydmMuZ2V0VG9wRm9yU3RpY2t5KDApXCIgbmctY2xhc3M9XCJ7XFwnZm9ybS1idG5zLXRvcCBwb3NpdGlvbi1zdGlja3lcXCc6cmVzb3VyY2UuZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTEgfHwgcmVzb3VyY2UuZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTMgfHwgcmVzb3VyY2UuZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTR9XCI+PGZvcm0gaWQ9Zm9ybWExIG5hbWU9e3tmb3JtRGVmaW5pdGlvbi5mb3JtTmFtZX19IGNsYXNzPWZvcm0taG9yaXpvbnRhbCBuZy1jbGFzcz1cIntcXCdlZGl0LW1vZGVcXCc6cmVzb3VyY2UuZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTF9XCIgcm9sZT1mb3JtIG5vdmFsaWRhdGU+PGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyLWFjdGlvbnMgZC1mbGV4IHAtMSBweC00XCI+PHNwYW4gY2xhc3M9XCJ0YWcgdGV4dC1kYXJrIG15LTJcIj5Gb3JtIGRlZmluaXRpb248L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1yb3c+PGRpdiBjbGFzcz1jb2w+PHVsIGNsYXNzPVwibmF2IG5hdi10YWJzIHNpbXBsZS10YWJzIGJvcmRlci0wIG14LTRcIiBpZD1teVRhYiByb2xlPXRhYmxpc3Q+PGxpIGNsYXNzPW5hdi1pdGVtPjxhIGNsYXNzPW5hdi1saW5rIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpyZXNvdXJjZS5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MX1cIiBpZD1idWlsZC10YWIgaHJlZiBkYXRhLXRvZ2dsZT10YWIgbmctY2xpY2s9U2hvd0Zvcm1WaWV3KDEsZmFsc2UpIHJvbGU9dGFiIGFyaWEtY29udHJvbHM9YnVpbGQgYXJpYS1zZWxlY3RlZD1mYWxzZT5CdWlsZCA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0IG1sLTIgdGV4dC1wcmltYXJ5XCI+Q3RybCtCPC9zcGFuPjwvYT48L2xpPjxsaSBjbGFzcz1uYXYtaXRlbT48YSBjbGFzcz1uYXYtbGluayBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6cmVzb3VyY2UuZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTMgfHwgcmVzb3VyY2UuZm9ybVBhcmFtcy5mb3JtVmlld1R5cGU9PTR9XCIgaWQ9bGF5b3V0LXRhYiBocmVmIGRhdGEtdG9nZ2xlPXRhYiBuZy1jbGljaz1TaG93Rm9ybVZpZXcoNCkgcm9sZT10YWIgYXJpYS1jb250cm9scz1sYXlvdXQgYXJpYS1zZWxlY3RlZD1mYWxzZT48aSBjbGFzcz1cImZhIGZhLXRoLWxhcmdlIG1yLTFcIj48L2k+IEFycmFuZ2UgbGF5b3V0PC9hPjwvbGk+PGxpIGNsYXNzPW5hdi1pdGVtPjxhIGNsYXNzPW5hdi1saW5rIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpyZXNvdXJjZS5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09Mn1cIiBocmVmIGlkPXByZXZpZXctdGFiIGRhdGEtdG9nZ2xlPXRhYiBuZy1jbGljaz1TaG93Rm9ybVZpZXcoMix0cnVlKSByb2xlPXRhYiBhcmlhLWNvbnRyb2xzPXByZXZpZXcgYXJpYS1zZWxlY3RlZD10cnVlPlByZXZpZXcgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodCBtbC0yIHRleHQtcHJpbWFyeVwiPkN0cmwrUDwvc3Bhbj48L2E+PC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9Y29sLWF1dG8+PGJ1dHRvbiBuZy1jbGljaz1cInNob3dNb2RhbChcXCdzYXZlXFwnKVwiIG5nLWRpc2FibGVkPXNhdmluZ0Zvcm0gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1zdWNjZXNzIG1yLTJcIj48aSBjbGFzcz1cImZhIGZhLXNhdmUgbXItMVwiPjwvaT4gPHNwYW4+U2F2ZSBjaGFuZ2VzPC9zcGFuPjwvYnV0dG9uPjxidXR0b24gbmctaWY9U2F2ZWRCdXROb3REZXBsb3llZCB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXdhcm5pbmdcIiBuZy1jbGljaz1jb21waWxlZGIoKT48c3BhbiBjbGFzcz1cImZhIGZhLWRhdGFiYXNlXCI+PC9zcGFuPiBEZXBsb3kgRGF0YWJhc2U8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Zvcm0+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTFcIj48ZGl2IGlkPXJlc291cmNlVG9vbGJveCBjbGFzcz1cImNvbC1sZy00IHBsLTAgcHItMlwiIG5nLWNsYXNzPVwie1xcJ21heC1oZWlnaHQtMS1yZW0gdmlzaWJpbGl0eS1oaWRkZW5cXCc6Z3NydmMuZ2V0Rm9ybVZpZXdUeXBlKCkhPTF9XCI+PGRpdiBrdC10b29sYm94IGNsYXNzPVwicHgtMSBzdGlja3kgZGF0YXNldC1mb3JtLXByb3BzLXBvc1wiIG5nLXN0eWxlPWdzcnZjLmdldFRvcEZvclN0aWNreSg1KT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIHAtMFwiIHN0eWxlPW1pbi13aWR0aDowIG5nLWNsYXNzPVwie1xcJ2NvbFxcJzpyZXNvdXJjZS5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MSxcXCdidWlsZC1tb2RlXFwnOnJlc291cmNlLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0xIHx8IHJlc291cmNlLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT0zIHx8IHJlc291cmNlLmZvcm1QYXJhbXMuZm9ybVZpZXdUeXBlPT00LFxcJ2NvbC1sZy0yNFxcJzpyZXNvdXJjZS5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MiB8fCByZXNvdXJjZS5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MyB8fCByZXNvdXJjZS5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09NH1cIj48ZGl2IGNsYXNzPVwicC0wIG1iLTFcIj48ZGl2IGNsYXNzPXRleHQtY2VudGVyPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLWluZm9cIiBuZy1jbGljaz1cInNob3dSZWxhdGlvbnNoaXBzPSFzaG93UmVsYXRpb25zaGlwc1wiPjxpIGNsYXNzPVwiZmEgZmEtc2l0ZW1hcCBtci0yXCI+PC9pPjxzcGFuPlJlbGF0aW9uc2hpcHM8L3NwYW4+PC9idXR0b24+PGRpdiBjbGFzcz1cInJvdyBtLWF1dG9cIiBuZy1pZj1zaG93UmVsYXRpb25zaGlwcz48ZGl2IGNsYXNzPVwiY29sIG10LTIgbXItMSBweS0xIGNhcmRcIj48ZGl2IG5nLWlmPWV4aXN0aW5nUmVsYXRpb25zaGlwcy5sZW5ndGgga3QtYm9vdHN0cmFwLXRvb2x0aXAgZGF0YS10b2dnbGU9dG9vbHRpcCBkYXRhLXBsYWNlbWVudD10b3AgZGF0YS1vcmlnaW5hbC10aXRsZT1cIkRyYWcgJiBkcm9wIGNoaWxkcmVuIHRvIGZvcm1cIiB0aXRsZT1cIkRyYWcgJiBkcm9wIGNoaWxkcmVuIHRvIGZvcm1cIiBjbGFzcz1cIm15LTIgdGV4dC1wcmltYXJ5XCI+VG9vbGJveDwvZGl2PjxkaXYgbmctaWY9ZXhpc3RpbmdSZWxhdGlvbnNoaXBzLmxlbmd0aCBpZD1jaGlsZHJlbi10b29sYm94IGNsYXNzPVwibGlzdC1jb21wb25lbnQtbGlicmFyeSBteS0yXCIgZHJhZ3VsYS1zY29wZT0kcm9vdCBkcmFndWxhPVwiXFwnYmFnLWRhdGFzZXRcXCdcIiBkcmFndWxhLW1vZGVsPWV4aXN0aW5nUmVsYXRpb25zaGlwcyBuZy1tb2RlbD1leGlzdGluZ1JlbGF0aW9uc2hpcHM+PGRpdiBuZy1yZXBlYXQ9XCJ0b29sYm94SXRlbSBpbiBleGlzdGluZ1JlbGF0aW9uc2hpcHMgdHJhY2sgYnkgdG9vbGJveEl0ZW0uaWRcIiB0aXRsZT1cIkRyYWcgbWVcIiBuZy1jbGFzcz1cIntcXCdpdGVtIGVsZW1lbnQtZHJhZy1oYW5kbGVcXCc6dG9vbGJveEl0ZW0uRWxlbWVudFR5cGUhPVxcJ3Rvb2xib3hncm91cFxcJ31cIj48c3BhbiBuZy1pZj1cInRvb2xib3hJdGVtLkVsZW1lbnRUeXBlIT1cXCd0b29sYm94Z3JvdXBcXCdcIiBjbGFzcz1cImVsZW1lbnQtZHJhZy1oYW5kbGUgaWNvbi1tdXRlZFwiIG5nLWNsYXNzPXRvb2xib3hJdGVtLkZhY3NzPjwvc3Bhbj4gPHNwYW4gbmctaWY9XCJ0b29sYm94SXRlbS5FbGVtZW50VHlwZSE9XFwndG9vbGJveGdyb3VwXFwnXCIgY2xhc3M9XCJlbGVtZW50LWRyYWctaGFuZGxlIG14LTFcIj57e3Rvb2xib3hJdGVtLm5hbWV9fSAoe3t0b29sYm94SXRlbS5SZWxhdGVkfX0pPC9zcGFuPiA8aSBuZy1pZj1cInRvb2xib3hJdGVtLkVsZW1lbnRUeXBlIT1cXCd0b29sYm94Z3JvdXBcXCdcIiBjbGFzcz1cImVsZW1lbnQtZHJhZy1oYW5kbGUgaGFuZGxlciBmYXMgZmEtZ3JpcC12ZXJ0aWNhbCB0ZXh0LWRhcmsgbXItMVwiIHN0eWxlPW9wYWNpdHk6MC4yPjwvaT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwibXktMiB0ZXh0LXByaW1hcnlcIj5DaGlsZCByZXNvdXJjZXM8L2Rpdj48ZGl2IG5nLWlmPVwiIWV4aXN0aW5nUmVsYXRpb25zaGlwcy5sZW5ndGggJiYgIWV4aXN0aW5nUmVsYXRpb25zaGlwc0NvcHkubGVuZ3RoXCIgY2xhc3M9bXktMj5Ob25lPC9kaXY+PGRpdiBjbGFzcz1cImJvcmRlciBwLTEgcm91bmRlZCB0ZXh0LWxlZnQgYmctZ3JheS0yMCBtYi0xXCIgbmctaWY9Y2hlY2tEcm9wcGVkQ2hpbGRyZW4oY2hpbGQpIG5nLXJlcGVhdD1cImNoaWxkIGluIGV4aXN0aW5nUmVsYXRpb25zaGlwc0NvcHkgdHJhY2sgYnkgY2hpbGQuaWRcIj57e2NoaWxkLm5hbWV9fSAoe3tjaGlsZC5SZWxhdGVkfX0pPC9kaXY+PC9kaXY+PGRpdiBpZGQ9XCJQQVJFTlQgUkVTT1VSQ0VTIExJU1RcIiBjbGFzcz1cImNvbCBtdC0yIG1sLTEgcHktMSBjYXJkXCI+PGRpdiBrdC1ib290c3RyYXAtdG9vbHRpcCBkYXRhLXRvZ2dsZT10b29sdGlwIGRhdGEtcGxhY2VtZW50PXRvcCBkYXRhLW9yaWdpbmFsLXRpdGxlPVwiTGlzdCBvZiBwYXJlbnQgcmVzb3VyY2VzXCIgY2xhc3M9XCJteS0yIHRleHQtcHJpbWFyeVwiPlBhcmVudCByZXNvdXJjZXM8L2Rpdj48ZGl2IGlkPXBhcmVudHMtbGlzdCBjbGFzcz1cImxpc3QtY29tcG9uZW50LWxpYnJhcnkgbXktMlwiPjxzcGFuIG5nLWlmPSFwYXJlbnRSZXNvdXJjZXMubGVuZ3RoPk5vbmU8L3NwYW4+PGRpdiBuZy1yZXBlYXQ9XCJ0b29sYm94SXRlbSBpbiBwYXJlbnRSZXNvdXJjZXMgdHJhY2sgYnkgdG9vbGJveEl0ZW0uaWRcIiBuZy1jbGFzcz1cIntcXCdpdGVtIGVsZW1lbnQtZHJhZy1oYW5kbGVcXCc6dG9vbGJveEl0ZW0uRWxlbWVudFR5cGUhPVxcJ3Rvb2xib3hncm91cFxcJ31cIiBzdHlsZT1cImN1cnNvcjphdXRvICFpbXBvcnRhbnRcIj48c3BhbiBuZy1pZj1cInRvb2xib3hJdGVtLkVsZW1lbnRUeXBlIT1cXCd0b29sYm94Z3JvdXBcXCdcIiBjbGFzcz1cImVsZW1lbnQtZHJhZy1oYW5kbGUgaWNvbi1tdXRlZFwiIG5nLWNsYXNzPXRvb2xib3hJdGVtLkZhY3NzPjwvc3Bhbj4gPHNwYW4gbmctaWY9XCJ0b29sYm94SXRlbS5FbGVtZW50VHlwZSE9XFwndG9vbGJveGdyb3VwXFwnXCIgY2xhc3M9XCJlbGVtZW50LWRyYWctaGFuZGxlIG14LTFcIj57e3Rvb2xib3hJdGVtLkxhYmVsfX0gKHt7dG9vbGJveEl0ZW0uUmVsYXRlZH19KTwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tYXV0b1wiIG5nLWlmPXNob3dSZWxhdGlvbnNoaXBzPjxkaXYgY2xhc3M9Y29sPjxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctdXAgZmEtMnhcIj48L2k+PC9kaXY+PGRpdiBjbGFzcz1jb2w+PGkgY2xhc3M9XCJmYSBmYS1hcnJvdy11cCBmYS0yeFwiPjwvaT48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY2FyZCBwLTBcIj48ZGl2IGt0LWdyaWQgcmVzb3VyY2UtZm9ybS1sb2FkZWQ9Zm9ybUxvYWRlZCBncmlkLXR5cGU9Z3JpZHN0ZXJUeXBlIHJlc291cmNlLWRlZmluaXRpb249cmVzb3VyY2VEZWYgZm9ybS1wYXJhbXM9cmVzb3VyY2UuZm9ybVBhcmFtcyBwYXJlbnQ9ZGFzaGJvYXJkLndpZGdldHMgYWxsLWNvbHVtbnM9ZGFzaGJvYXJkLndpZGdldHMgaXMtZGVmaW5pdGlvbj10cnVlIGNsYXNzPWt0R3JpZD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicHJvcGVydGllc0NvbnRhaW5lciBweC0wIHB0LTJcIiBzdHlsZT16LWluZGV4OjEwMCBuZy1zdHlsZT1wcm9wZXJ0aWVzVG9wIG5nLWNsYXNzPVwie1xcJ2RhdGFzZXQtZm9ybS1wcm9wcy1wb3MgYm9yZGVyLTAgc3RpY2t5XFwnOmxvY2FsVmFycy5Qcm9wZXJ0aWVzU2l6ZSA9PVxcJ3N0YW5kYXJkXFwnLFxcJ3Byb3BlcnRpZXMtZXh0ZW5kZWRcXCc6bG9jYWxWYXJzLlByb3BlcnRpZXNTaXplID09XFwnbGFyZ2VcXCcgJiYgc2hvd0ZpZWxkUHJvcGVydGllcyxcXCdjb2wtbGctNVxcJzpzaG93RmllbGRQcm9wZXJ0aWVzICYmIGxvY2FsVmFycy5Qcm9wZXJ0aWVzU2l6ZSAhPT1cXCdsYXJnZVxcJyxcXCdcXCc6IXNob3dGaWVsZFByb3BlcnRpZXN9XCIgbmctaWY9XCJyZXNvdXJjZS5mb3JtUGFyYW1zLmZvcm1WaWV3VHlwZT09MVwiPjxkaXYgY2xhc3M9cHgtMT48ZGl2IGNsYXNzPVwiY2FyZCBtLTBcIiBuZy1pZj1zaG93RmllbGRQcm9wZXJ0aWVzPjxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBiZy1saWdodCBwLTBcIj48YnV0dG9uIHR5cGU9YnV0dG9uIHRpdGxlPVwiRXh0ZW5kIHByb3BlcnRpZXNcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHAtMCBwbC0xIHByLTEgbXItMlwiIG5nLWNsaWNrPWxvY2FsVmFycy5DaGFuZ2VQcm9wZXJ0aWVzU2l6ZSgpPjxzbWFsbD48c3BhbiBjbGFzcz1cImZhIGZhLWFycm93LWxlZnRcIiBuZy1jbGFzcz1cIntcXCdmYSBmYS1hcnJvdy1sZWZ0XFwnOmxvY2FsVmFycy5Qcm9wZXJ0aWVzU2l6ZSA9PVxcJ3N0YW5kYXJkXFwnLFxcJ2ZhIGZhLWFycm93LXJpZ2h0XFwnOmxvY2FsVmFycy5Qcm9wZXJ0aWVzU2l6ZSA9PVxcJ2xhcmdlXFwnfVwiPjwvc3Bhbj48L3NtYWxsPjwvYnV0dG9uPiA8c3BhbiBjbGFzcz1cIm1sLTIgbGFiZWwteHMgYm9sZFwiPlByb3BlcnRpZXM8L3NwYW4+IDxidXR0b24gdHlwZT1idXR0b24gdGl0bGU9XCJDbG9zZSBwcm9wZXJ0aWVzXCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBwLTAgcGwtMSBwci0xIGZsb2F0LXJpZ2h0XCIgbmctY2xpY2s9c2hvd0hpZGVQcm9wZXJ0aWVzKGZhbHNlKT48c21hbGw+PHNwYW4gY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvc3Bhbj48L3NtYWxsPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9c2hvd0ZpZWxkUHJvcGVydGllcyBrdC1mb3JtLWVsZW1lbnQtcHJvcGVydGllcyBsb2NhbC12YXJzPWxvY2FsVmFycyBmZD1zZWxlY3RlZEZpZWxkPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJtb2RhbCBmYWRlIGJkLWV4YW1wbGUtbW9kYWwtbGdcIiBpZD1kYXRhc2V0RGVwbG95IHRhYmluZGV4PS0xIHJvbGU9ZGlhbG9nIGFyaWEtbGFiZWxsZWRieT1kYXRhc2V0RGVwbG95IGFyaWEtaGlkZGVuPXRydWU+PGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC14bFwiIHJvbGU9ZG9jdW1lbnQ+PGRpdiBjbGFzcz1tb2RhbC1jb250ZW50PjxkaXYgY2xhc3M9bW9kYWwtaGVhZGVyPjxzcGFuIGNsYXNzPVwiZmEgZmEtbGcgZmEtZGF0YWJhc2UgbS0yXCI+PC9zcGFuPjxoNSBjbGFzcz1tb2RhbC10aXRsZSBpZD1leGFtcGxlTW9kYWxMb25nVGl0bGU+RGVwbG95IGNoYW5nZXMgdG8gZGF0YWJhc2U8L2g1PjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9Y2xvc2UgZGF0YS1kaXNtaXNzPW1vZGFsIGFyaWEtbGFiZWw9Q2xvc2U+PHNwYW4gYXJpYS1oaWRkZW49dHJ1ZT4mdGltZXM7PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9bW9kYWwtYm9keT48ZGl2IG5nLWlmPWRhdGFzZXREZXBsb3kubGVuZ3RoIGNsYXNzPXAtMT48ZGl2IG5nLXJlcGVhdD1cImVsZW1lbnQgaW4gZGF0YXNldERlcGxveSB0cmFjayBieSBlbGVtZW50LmlkXCI+PGRpdiBuZy1pZj1cIiRpbmRleD09MFwiIGNsYXNzPVwicm93IG0tMCBmbnQ3IGJvbGQgdGV4dC1jZW50ZXJcIj48ZGl2IGNsYXNzPVwiY29sLTEgbS0xIGJnLXByaW1hcnlcIj48c3BhbiBjbGFzcz10ZXh0LXdoaXRlPklEPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMyBtLTEgYmctcHJpbWFyeVwiPjxzcGFuIGNsYXNzPXRleHQtd2hpdGU+RmllbGQgbmFtZTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTMgbS0xIGJnLXByaW1hcnlcIj48c3BhbiBjbGFzcz10ZXh0LXdoaXRlPkZpZWxkIHR5cGU8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0yIG0tMSBiZy1wcmltYXJ5XCI+PHNwYW4gY2xhc3M9dGV4dC13aGl0ZT5UYWJsZSBjb2x1bW48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0xIG0tMSBiZy1wcmltYXJ5XCI+PHNwYW4gY2xhc3M9dGV4dC13aGl0ZT5NYXggbGVuPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMiBtLTEgYmctcHJpbWFyeVwiPjxzcGFuIGNsYXNzPXRleHQtd2hpdGU+UmVxdWlyZWQ8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0yIG0tMSBiZy1wcmltYXJ5XCI+PHNwYW4gY2xhc3M9dGV4dC13aGl0ZT5EZXBsb3llZDwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTIgbS0xIGJnLXByaW1hcnlcIj48c3BhbiBjbGFzcz10ZXh0LXdoaXRlPlN0YXR1czwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTIgbS0xIGJnLXByaW1hcnlcIj48c3BhbiBjbGFzcz10ZXh0LXdoaXRlPkFjdGlvbjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTIgbS0xIGJnLXByaW1hcnlcIj48c3BhbiBjbGFzcz10ZXh0LXdoaXRlPlZlcnNpb248L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0yIG0tMSBiZy1wcmltYXJ5XCI+PHNwYW4gY2xhc3M9dGV4dC13aGl0ZT5EZXBsb3llZCB2ZXJzaW9uPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wIGl0ZW0gc21hbGxcIj48ZGl2IGNsYXNzPVwiY29sLTEgbS0xIGJnLXByaW1hcnktbGlnaHRcIj48c3Bhbj57e2VsZW1lbnQuaWR9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTMgbS0xXCI+PHNwYW4+e3tlbGVtZW50LmxhYmVsfX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0zIG0tMVwiPjxzcGFuPnt7ZWxlbWVudC5kYnR5cGV9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTIgbS0xXCI+PHNwYW4+e3tlbGVtZW50LmZpZWxkfX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0xIG0tMVwiPjxzcGFuPnt7ZWxlbWVudC5tYXhMZW5ndGh9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTIgbS0xIHRleHQtY2VudGVyXCI+PGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveFwiPjxpbnB1dCB0eXBlPWNoZWNrYm94IG5nLWRpc2FibGVkPXRydWUgY2xhc3M9Y3VzdG9tLWNvbnRyb2wtaW5wdXQgaWQ9Y2JSZXF1aXJlZHt7ZWxlbWVudC5pZH19IG5nLW1vZGVsPWVsZW1lbnQucmVxdWlyZWQ+IDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGxhYmVsLXhzXCIgZm9yPWNiUmVxdWlyZWR7e2VsZW1lbnQuaWR9fT48L2xhYmVsPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMiBtLTEgdGV4dC1jZW50ZXJcIj48ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLWNoZWNrYm94XCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmctZGlzYWJsZWQ9dHJ1ZSBjbGFzcz1jdXN0b20tY29udHJvbC1pbnB1dCBpZD1jYkRlcGxveWVke3tlbGVtZW50LmlkfX0gbmctbW9kZWw9ZWxlbWVudC5kZXBsb3llZD4gPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgbGFiZWwteHNcIiBmb3I9Y2JEZXBsb3llZHt7ZWxlbWVudC5pZH19PjwvbGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0yIG0tMVwiPjxzcGFuPnt7ZWxlbWVudC5zdGF0dXN9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTIgbS0xXCIgbmctY2xhc3M9XCJ7XFwnYmctZGFuZ2VyLWxpZ2h0IGJvbGRcXCc6ZWxlbWVudC5kZXBsb3lBY3Rpb24hPVxcJ05cXCd9XCI+PHNwYW4+e3tnZXREZXBsb3lBY3Rpb24oZWxlbWVudC5kZXBsb3lBY3Rpb24pfX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0yIG0tMVwiPjxzcGFuPnt7ZWxlbWVudC52ZXJzaW9ufX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0yIG0tMVwiPjxzcGFuPnt7ZWxlbWVudC5kZXBsb3llZFZlcnNpb259fTwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiaDUgdGV4dC1jZW50ZXJcIiBuZy1pZj0hZGF0YXNldERlcGxveS5sZW5ndGg+Tm90aGluZyB0byBkZXBsb3kgITwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPjxkaXYgbmctaWY9ZGF0YXNldERlcGxveS5sZW5ndGg+PGRpdiBjbGFzcz1teS0yPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIiBuZy1jbGljaz1zeW5jZGIoKT48c3BhbiBjbGFzcz1cImZhIGZhLWRhdGFiYXNlIG1yLTFcIj48L3NwYW4+RGVwbG95PC9idXR0b24+IDxidXR0b24gbmctY2xpY2s9Y2xvc2VEYXRhc2V0RGVwbG95KGZvcm1hLiR2YWxpZCkgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWRhbmdlclwiPk5vdCBub3c8L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPSFkYXRhc2V0RGVwbG95Lmxlbmd0aD48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGluayB0ZXh0LW11dGVkIG1sLWF1dG9cIiBkYXRhLWRpc21pc3M9bW9kYWwgYXJpYS1sYWJlbD1DbG9zZT5DbG9zZTwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pjxmb3JtIG5nLXN1Ym1pdD1zYXZlX3Jlc291cmNlKGZvcm0uJHZhbGlkKSBuYW1lPWZvcm1Nb2RhbCBjbGFzcz1cIm1vZGFsIGZhZGUgYmQtZXhhbXBsZS1tb2RhbC1sZ1wiIGlkPWRhdGFzZXRQdWJsaXNoIHRhYmluZGV4PS0xIHJvbGU9ZGlhbG9nIGFyaWEtbGFiZWxsZWRieT1kYXRhc2V0UHVibGlzaCBhcmlhLWhpZGRlbj10cnVlPjxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwteGxcIiByb2xlPWRvY3VtZW50PjxkaXYgY2xhc3M9bW9kYWwtY29udGVudD48ZGl2IGNsYXNzPW1vZGFsLWhlYWRlcj48c3BhbiBjbGFzcz1cImZhIGZhLWxnIGZhLWRhdGFiYXNlIG0tMlwiPjwvc3Bhbj48aDUgY2xhc3M9bW9kYWwtdGl0bGUgaWQ9ZXhhbXBsZU1vZGFsTG9uZ1RpdGxlPnt7cmVzb3VyY2UuUmVzb3VyY2VOYW1lfX0gPGI+e3tyZXNvdXJjZS5OYW1lfX08L2I+PC9oNT48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPWNsb3NlIGRhdGEtZGlzbWlzcz1tb2RhbCBhcmlhLWxhYmVsPUNsb3NlPjxzcGFuIGFyaWEtaGlkZGVuPXRydWU+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBtb2RhbC1ib2R5XCI+PGRpdiBjbGFzcz1cImNvbC1sZy04IHAtMFwiPjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogZm9ybU1vZGFsLklkLiR0b3VjaGVkICYmIGZvcm1Nb2RhbC5JZC4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1sZy0yNCBmb3I9SWQ+SWQ8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9cmVzb3VyY2UuaWQgbmctZGlzYWJsZWQ9dHJ1ZSBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1JZCBuYW1lPUlkIHBsYWNlaG9sZGVyPUlkPjxwIG5nLXNob3c9XCJmb3JtTW9kYWwuSWQuJHRvdWNoZWQgJiYgZm9ybU1vZGFsLklkLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5FbnRlciByZXNvdXJjZSBJZDwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IGZvcm1Nb2RhbC5WZXJzaW9uLiR0b3VjaGVkICYmIGZvcm1Nb2RhbC5WZXJzaW9uLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTI0IGZvcj1WZXJzaW9uPlZlcnNpb248L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxpbnB1dCB0eXBlPXRleHQgbmctZGlzYWJsZWQ9dHJ1ZSBuZy1tb2RlbD1uZXdQdWJsaXNoVmVyc2lvbiBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1WZXJzaW9uIG5hbWU9VmVyc2lvbiBwbGFjZWhvbGRlcj1cIlJlc291cmNlIFZlcnNpb25cIj48cCBuZy1zaG93PVwiKGZvcm1Nb2RhbC5WZXJzaW9uLiR0b3VjaGVkKSAmJiBmb3JtTW9kYWwuVmVyc2lvbi4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIgcmVzb3VyY2UgVmVyc2lvbjwvcD48L2Rpdj48L2Rpdj48ZGl2PjxkaXYgY2xhc3M9bS0yPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJtb2RhbEFjdGlvbj09XFwnc2F2ZVxcJ1wiIGNsYXNzPVwiY29sLWxnLTE2IHAtMFwiPjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiBmb3JtTW9kYWwuRGVzY3JpcHRpb24uJHRvdWNoZWQgJiYgZm9ybU1vZGFsLkRlc2NyaXB0aW9uLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTI0IGZvcj1EZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PHRleHRhcmVhIG5nLW1vZGVsPWxvY2FsVmFycy5uZXdEZXNjcmlwdGlvbiBuYW1lPURlc2NyaXB0aW9uIG5nLXJlcXVpcmVkPXRydWUgbmctbWluLWxlbmd0aD0xMCBuZy1jbGFzcz1cInsgXFwnYm9yZGVyLWRhbmdlclxcJyA6IGZvcm1Nb2RhbC5EZXNjcmlwdGlvbi4kdG91Y2hlZCAmJiBmb3JtTW9kYWwuRGVzY3JpcHRpb24uJGludmFsaWQgfVwiIGNsYXNzPWZvcm0tY29udHJvbD48L3RleHRhcmVhPjxwIG5nLXNob3c9XCIoIGZvcm1Nb2RhbC5EZXNjcmlwdGlvbi4kdG91Y2hlZCkgJiYgZm9ybU1vZGFsLkRlc2NyaXB0aW9uLiRpbnZhbGlkXCIgY2xhc3M9XCJzbWFsbCB0ZXh0LWRhbmdlclwiPkVudGVyIHJlc291cmNlIGRlc2NyaXB0aW9uIChtaW4gMTAgY2hhcnMpPC9wPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJERVBMT1kgdy0xMDBcIj48ZGl2IGNsYXNzPVwiYm9yZGVyLXRvcCBib3JkZXItYm90dG9tIG0tM1wiPjxkaXYgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCIgY2xhc3M9XCJwLTEgcm93IG14LTFcIiBuZy1jbGljaz1cImlzQ29sbGFwc2VkVmVySGlzdG9yeSA9ICFpc0NvbGxhcHNlZFZlckhpc3RvcnlcIj48c3BhbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gcC0xXCI+PHNwYW4gbmctY2xhc3M9XCJ7XFwnZmFzIGZhLWNoZXZyb24tZG93blxcJzogIWlzQ29sbGFwc2VkVmVySGlzdG9yeSxcXCdmYXMgZmEtY2hldnJvbi1yaWdodFxcJzogaXNDb2xsYXBzZWRWZXJIaXN0b3J5IH1cIj48L3NwYW4+PC9zcGFuPiA8c3BhbiBjbGFzcz10YWc+VkVSU0lPTiBISVNUT1JZPC9zcGFuPjwvZGl2PjxkaXYgdWliLWNvbGxhcHNlPWlzQ29sbGFwc2VkVmVySGlzdG9yeT48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHAtMFwiPjxkaXYgbmctaWY9bG9jYWxWYXJzLnB1Ymxpc2hlZFJlc291cmNlcy5sZW5ndGggY2xhc3M9cC0xPjxkaXYgbmctcmVwZWF0PVwiZWxlbWVudCBpbiBsb2NhbFZhcnMucHVibGlzaGVkUmVzb3VyY2VzIHRyYWNrIGJ5IGVsZW1lbnQuaWRcIj48ZGl2IG5nLWlmPVwiJGluZGV4PT0wXCIgY2xhc3M9XCJyb3cgbS0wIGJvbGQgdGV4dC1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPjxkaXYgY2xhc3M9XCJjb2wtbGctNCBteS0xIGJvcmRlci1ib3R0b21cIj48c3BhbiBjbGFzcz1cIlwiPlB1Ymxpc2ggaWQ8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy00IG15LTEgYm9yZGVyLWJvdHRvbVwiPjxzcGFuIGNsYXNzPlZlcnNpb248L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0xMCBteS0xIGJvcmRlci1ib3R0b21cIj48c3BhbiBjbGFzcz5EZXNjcmlwdGlvbjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBpdGVtIHRleHQtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTQgbXktMVwiPjxzcGFuPnt7ZWxlbWVudC5pZH19PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctNCBteS0xXCI+PHNwYW4+e3tlbGVtZW50LlZlcnNpb259fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTEwIG15LTFcIj48c3Bhbj57e2VsZW1lbnQuRGVzY3JpcHRpb259fTwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwicmVzb3VyY2UuUmVzb3VyY2VTdWJUeXBlPT1cXCdzdGFuZGFyZFxcJyAmJiBkYXRhc2V0RGVwbG95Lmxlbmd0aCAmJiBtb2RhbEFjdGlvbj09XFwncHVibGlzaFxcJ1wiIGNsYXNzPVwiaDUgYm9sZCB0ZXh0LWNlbnRlciBwLTNcIj5QZW5kaW5nIGRhdGFiYXNlIGNoYW5nZXM8L2Rpdj48ZGl2IG5nLWlmPVwiZGF0YXNldERlcGxveS5sZW5ndGggJiYgbW9kYWxBY3Rpb249PVxcJ3B1Ymxpc2hcXCdcIiBjbGFzcz1wLTE+PGRpdiBrdC1iYXNpYy10YWJsZSBjb2x1bW5zPWRhdGFzZXREZXBsb3lDb2xzIGRhdGE9ZGF0YXNldERlcGxveSBtYXBwaW5nPWRlcGxveUFjdGlvbk1hcHBpbmdzPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJyZXNvdXJjZS5SZXNvdXJjZVN1YlR5cGU9PVxcJ3N0YW5kYXJkXFwnICYmICFkYXRhc2V0RGVwbG95Lmxlbmd0aCAmJiBtb2RhbEFjdGlvbj09XFwncHVibGlzaFxcJ1wiIGNsYXNzPVwiaDUgcHQtNCB0ZXh0LWNlbnRlclwiPk5vIHBlbmRpbmcgY2hhbmdlcyB0byBkYXRhYmFzZSBkZXRlY3RlZCE8L2Rpdj48ZGl2IG5nLWlmPVwicmVzb3VyY2UuUmVzb3VyY2VTdWJUeXBlPT1cXCdzdGFuZGFyZFxcJyAmJiAhZGF0YXNldERlcGxveS5sZW5ndGggJiYgbW9kYWxBY3Rpb249PVxcJ3ZlcnNpb25cXCdcIiBjbGFzcz1cImg1IHRleHQtY2VudGVyXCI+VmVyc2lvbiB7e3Jlc291cmNlLlZlcnNpb259fSB3aWxsIGJlIGZpbmFsaXNlZCBhbmQgbG9ja2VkIGZvciBjaGFuZ2VzITwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJtLTIgdGV4dC1jZW50ZXIgY29sLTI0XCI+PGJ1dHRvbiBuZy1pZj1cInJlc291cmNlLlJlc291cmNlU3ViVHlwZT09XFwnc3RhbmRhcmRcXCcgJiYgbW9kYWxBY3Rpb249PVxcJ3B1Ymxpc2hcXCcgJiYgZGF0YXNldERlcGxveS5sZW5ndGg+MFwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgdHlwZT1zdWJtaXQ+PGkgbmctaWY9IXB1Ymxpc2hpbmdGb3JtIGNsYXNzPVwiZmEgZmEtZGF0YWJhc2UgbXItMVwiPjwvaT4gPGkgbmctaWY9cHVibGlzaGluZ0Zvcm0gY2xhc3M9XCJmYXMgZmEtc3Bpbm5lciBmYS1zcGluIG1yLTFcIj48L2k+IDxzcGFuIG5nLWlmPXB1Ymxpc2hpbmdGb3JtPkRlcGxveWluZy4uLjwvc3Bhbj4gPHNwYW4gbmctaWY9IXB1Ymxpc2hpbmdGb3JtPkRlcGxveTwvc3Bhbj48L2J1dHRvbj4gPGJ1dHRvbiBuZy1pZj1cIm1vZGFsQWN0aW9uPT1cXCdzYXZlXFwnXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgYnRuLWxnXCIgdHlwZT1zdWJtaXQ+PGkgbmctaWY9c2F2aW5nRm9ybSBjbGFzcz1cImZhcyBmYS1zcGlubmVyIGZhLXNwaW4gbXItMVwiPjwvaT4gPHNwYW4gbmctaWY9c2F2aW5nRm9ybT5TYXZpbmcuLi48L3NwYW4+IDxpIG5nLWlmPSFzYXZpbmdGb3JtIGNsYXNzPVwiZmEgZmEtbmV3c3BhcGVyLW8gbXItMVwiPjwvaT4gPHNwYW4gbmctaWY9IXNhdmluZ0Zvcm0+U2F2ZSBmb3JtPC9zcGFuPjwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWlmPVwibW9kYWxBY3Rpb249PVxcJ3ZlcnNpb25cXCcgJiYgcmVzb3VyY2UuVmVyc2lvbj09cmVzb3VyY2UuTmV3VmVyc2lvblwiIG5nLWNsaWNrPW5ld1ZlcnNpb24oKSBuZy1kaXNhYmxlZD1jcmVhdGluZ05ld1ZlcnNpb24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pbmZvIG1yLTJcIj48aSBuZy1pZj0hY3JlYXRpbmdOZXdWZXJzaW9uIGNsYXNzPVwiZmEgZmEtY29kZS1icmFuY2ggbXItMVwiPjwvaT4gPGkgbmctaWY9Y3JlYXRpbmdOZXdWZXJzaW9uIGNsYXNzPVwiZmFzIGZhLXNwaW5uZXIgZmEtc3BpbiBtci0xXCI+PC9pPiA8c3BhbiBuZy1pZj1jcmVhdGluZ05ld1ZlcnNpb24+RmluYWxpc2luZyB2ZXJzaW9uIHt7cmVzb3VyY2UuVmVyc2lvbn19Li4uPC9zcGFuPiA8c3BhbiBuZy1pZj0hY3JlYXRpbmdOZXdWZXJzaW9uPkZpbmFsaXNlIHZlcnNpb24ge3tyZXNvdXJjZS5WZXJzaW9ufX08L3NwYW4+PC9idXR0b24+PGRpdiBjbGFzcz1cImg2IHRleHQtY2VudGVyIHRleHQtc3VjY2Vzc1wiIG5nLWlmPVwicmVzb3VyY2UuVmVyc2lvbiE9cmVzb3VyY2UuTmV3VmVyc2lvbiAmJiBtb2RhbEFjdGlvbj09XFwndmVyc2lvblxcJ1wiPjxpIGNsYXNzPVwiZmEgZmEtY2hlY2stY2lyY2xlIG1yLTJcIj48L2k+VmVyc2lvbiB7e3Jlc291cmNlLk5ld1ZlcnNpb259fS4gY3JlYXRlZCBzdWNjZXNzZnVseSE8L2Rpdj48ZGl2IGNsYXNzPVwiaDUgdGV4dC1jZW50ZXJcIiBuZy1pZj1mYWxzZT5WZXJzaW9uIHt7cmVzb3VyY2UuTmV3VmVyc2lvbn19LiBhbHJlYWR5IHB1Ymxpc2hlZCAhIG5nLWlmPVwicmVzb3VyY2UuUHVibGlzaGVkID09IHRydWUgJiYgbW9kYWxBY3Rpb249PVxcJ3B1Ymxpc2hlZFxcJ1wiIG5nLWlmPVwiIWRhdGFzZXREZXBsb3kubGVuZ3RoXCI8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Zvcm0+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAzX3Jlc291cmNlcy9hbmd1bGFyVGVtcGxhdGVzL3Jlc291cmNlTGlzdC5odG1sJywnPGZvcm0gbmctc3VibWl0PVJlc291cmNlU2VhcmNoKDEpIG5hbWU9Zm9ybSBjbGFzcz1mb3JtLWhvcml6b250YWwgcm9sZT1mb3JtIG5vdmFsaWRhdGU+PGRpdiBjbGFzcz1cImNhcmQgbXQtM1wiPjxkaXYgY2xhc3M+PGRpdiBjbGFzcz1cInJvdyBteC0yXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBwLTIgdGV4dC1jZW50ZXIgYm9yZGVyLWJvdHRvbSBweS0zIG1iLTRcIj48c3BhbiBjbGFzcz1oND5TZWFyY2ggUmVzb3VyY2VzPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLk5hbWUuJHRvdWNoZWQpICYmIGZvcm0uTmFtZS4kaW52YWxpZCB9XCI+PGRpdiBjbGFzcz1yb3c+PGRpdiBjbGFzcz1cImNvbC1sZy0yMCBteC1hdXRvXCI+PGRpdiBjbGFzcz1yb3c+PGRpdiBjbGFzcz1jb2wtbGctMz48bGFiZWwgZm9yPU5pZD5JRDwvbGFiZWw+IDxpbnB1dCB0eXBlPW51bWJlciBuZy1tb2RlbD1yZXNvdXJjZS5uaWQgbmctcmVxdWlyZWQ9ZmFsc2UgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcC0xXCIgaWQ9TmlkIG5hbWU9TmlkIHBsYWNlaG9sZGVyPVwiRW50ZXIgaWRcIj48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLk5pZC4kdG91Y2hlZCkgJiYgZm9ybS5OaWQuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIHt7IHJlc291cmNlLlJlc291cmNlRGVmSWQuUmVzb3VyY2VUeXBlLm5hbWV9fSBpZDwvcD48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0zPjxsYWJlbCBmb3I9SWQ+R1VJRDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9cmVzb3VyY2UuaWQgbmctcmVxdWlyZWQ9ZmFsc2UgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcC0xXCIgaWQ9SWQgbmFtZT1JZCBwbGFjZWhvbGRlcj1cIkVudGVyIGd1aWRcIj48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLklkLiR0b3VjaGVkKSAmJiBmb3JtLklkLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5FbnRlciB7eyByZXNvdXJjZS5SZXNvdXJjZURlZklkLlJlc291cmNlVHlwZS5uYW1lfX0gZ3VpZDwvcD48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy02PjxsYWJlbCBmb3I9cmVzb3VyY2VOYW1lPlJlc291cmNlIG5hbWU8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPXJlc291cmNlLk5hbWUgbmctcmVxdWlyZWQ9ZmFsc2UgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcC0xXCIgaWQ9TmFtZSBuYW1lPU5hbWUgcGxhY2Vob2xkZXI9XCJFbnRlciByZXNvdXJjZSBuYW1lXCI+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5OYW1lLiR0b3VjaGVkKSAmJiBmb3JtLk5hbWUuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIHt7IHJlc291cmNlLlJlc291cmNlRGVmSWQuUmVzb3VyY2VUeXBlLm5hbWV9fSBuYW1lPC9wPjwvZGl2PjxkaXYgY2xhc3M9XCJ7e3Jlc291cmNlLlJlc291cmNlVHlwZS5sZW5ndGg+MiA/IFxcJ2NvbC1sZy02XFwnOlxcJ2NvbC1sZy01XFwnfX1cIj48bGFiZWwgZm9yPXJlc291cmNlVHlwZT5SZXNvdXJjZSB0eXBlPC9sYWJlbD48a3QtZHJvcGRvd24tbXVsdGlwbGUgY2xhc3M9cmVzb3VyY2UtdHlwZS1sZyBuZy1pZj1cInJlc291cmNlVHlwZUxpc3QubGVuZ3RoPjBcIiBuZy1tb2RlbD1yZXNvdXJjZS5SZXNvdXJjZVR5cGUgc2VsZWN0ZWQtaXRlbXM9cmVzb3VyY2UuUmVzb3VyY2VUeXBlIG5hbWU9cmVzb3VyY2VUeXBlcyBuZy1yZXF1aXJlZD1mYWxzZSBkcm9wZG93bi1pdGVtcz1yZXNvdXJjZVR5cGVMaXN0IGRyb3Bkb3duLWlkPVwiXFwncmVzb3VyY2VUeXBlXFwnXCIgcGFyZW50LWZvcm0taWQ9XCJcXCdmb3JtXFwnXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWFyY2ggb3Igc2VsZWN0IHJlc291cmNlIHR5cGUuLi5cXCdcIj48L2t0LWRyb3Bkb3duLW11bHRpcGxlPjxzZWxlY3QgbmctbW9kZWw9cmVzb3VyY2UuUmVzb3VyY2VUeXBlIG5hbWU9cmVzb3VyY2VUeXBlcyBjbGFzcz1cImZvcm0tY29udHJvbCB3LTEwMCByZXNvdXJjZS10eXBlLXNtXCIgbXVsdGlwbGU+PG9wdGlvbiBuZy1yZXBlYXQ9XCJvcHRpb24gaW4gcmVzb3VyY2VUeXBlTGlzdFwiIG5nLXZhbHVlPW9wdGlvbj57e29wdGlvbi5uYW1lfX0gKHt7b3B0aW9uLmlkfX0pPC9vcHRpb24+PC9zZWxlY3Q+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0zIHAtMCBtbC0yXCI+PGxhYmVsIGZvcj1yZXNvdXJjZVR5cGU+U3RhdHVzPC9sYWJlbD48a3QtZHJvcGRvd24tbXVsdGlwbGUgY2xhc3M9cmVzb3VyY2UtdHlwZS1sZyBuZy1tb2RlbD1yZXNvdXJjZS5TdGF0dXMgc2VsZWN0ZWQtaXRlbXM9cmVzb3VyY2UuU3RhdHVzIG5hbWU9cmVzb3VyY2VUeXBlcyBuZy1yZXF1aXJlZD1mYWxzZSBkcm9wZG93bi1pdGVtcz1zdGF0dXNMaXN0IGRyb3Bkb3duLWlkPVwiXFwncmVzb3VyY2VTdGF0dXNcXCdcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2Zvcm1cXCdcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlYXJjaCBvciBzZWxlY3QgcmVzb3VyY2UgdHlwZS4uLlxcJ1wiPjwva3QtZHJvcGRvd24tbXVsdGlwbGU+PHNlbGVjdCBuZy1tb2RlbD1yZXNvdXJjZS5TdGF0dXMgbmFtZT1TdGF0dXMgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdy0xMDAgcmVzb3VyY2UtdHlwZS1zbVwiIG11bHRpcGxlPjxvcHRpb24gbmctcmVwZWF0PVwib3B0aW9uIGluIHJlc291cmNlVHlwZUxpc3RcIiBuZy12YWx1ZT1vcHRpb24+e3tvcHRpb24ubmFtZX19ICh7e29wdGlvbi5pZH19KTwvb3B0aW9uPjwvc2VsZWN0PjwvZGl2PjxkaXYgY2xhc3M9Y29sLWF1dG8+PGRpdiBzdHlsZT12aXNpYmlsaXR5OmhpZGRlbjs+aGlkZGVuIHBsYWNlaG9sZGVyPC9kaXY+PGJ1dHRvbiB0eXBlPXN1Ym1pdCBjbGFzcz1cImJ0biBidG4taW5mb1wiPjxzcGFuIGNsYXNzPVwiZmEgZmEtc2VhcmNoIG1yLTJcIj48L3NwYW4+IFNlYXJjaDwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9YWR2YW5jZWRTZWFyY2ggY2xhc3M9XCJyb3cgc2VhcmNoLXJlc291cmNlcyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC0yNCBwLTBcIj48ZGl2IGNsYXNzPVwicm93IGZvcm0tZ3JvdXBcIiBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLlN1YmplY3QuJHRvdWNoZWQpICYmIGZvcm0uU3ViamVjdC4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1sZy0xMiBmb3I9U3ViamVjdD5TdWJqZWN0PC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1sZy0yND48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPXJlc291cmNlLlN1YmplY3QgbmctcmVxdWlyZWQ9ZmFsc2UgY2xhc3M9Zm9ybS1jb250cm9sIGlkPVN1YmplY3QgbmFtZT1TdWJqZWN0IHBsYWNlaG9sZGVyPVwie3sgcmVzb3VyY2UuUmVzb3VyY2VEZWZJZC5SZXNvdXJjZVR5cGUubmFtZX19IHN1YmplY3RcIj48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLlN1YmplY3QuJHRvdWNoZWQpICYmIGZvcm0uU3ViamVjdC4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIge3sgcmVzb3VyY2UuUmVzb3VyY2VEZWZJZC5SZXNvdXJjZVR5cGUubmFtZX19IHN1YmplY3Q8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBmb3JtLWdyb3VwXCIgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5EZXNjcmlwdGlvbi4kdG91Y2hlZCkgJiYgZm9ybS5EZXNjcmlwdGlvbi4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1sZy0xMiBmb3I9RGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTI0Pjx0ZXh0YXJlYSBuZy1tb2RlbD1yZXNvdXJjZS5EZXNjcmlwdGlvbiBuYW1lPURlc2NyaXB0aW9uIG5nLXJlcXVpcmVkPWZhbHNlIG5nLW1pbi1sZW5ndGg9MjAgY2xhc3M9Zm9ybS1jb250cm9sPjwvdGV4dGFyZWE+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5EZXNjcmlwdGlvbi4kdG91Y2hlZCkgJiYgZm9ybS5EZXNjcmlwdGlvbi4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIge3sgcmVzb3VyY2UuUmVzb3VyY2VEZWZJZC5SZXNvdXJjZVR5cGUubmFtZX19IGRlc2NyaXB0aW9uKG1pbiAyMCBjaGFycykuPC9wPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbS0wXCIgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5yZXNvdXJjZVR5cGUuJHRvdWNoZWQpICYmIGZvcm0ucmVzb3VyY2VUeXBlLiRpbnZhbGlkIH1cIj48ZGl2IGNsYXNzPWNvbD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwicGFnaW5hdGlvbk9wdGlvbnMudG90YWxJdGVtQ291bnQ9PTAgJiYgZmlyc3RRdWVyeSAmJiAhcmVzb3VyY2VMb2FkaW5nXCIgY2xhc3M9XCJtdC0xIHAtMiB0ZXh0LWRhcmsgdGV4dC1jZW50ZXJcIj48ZmlndXJlPjxzdmcgd2lkdGg9MTQwIGhlaWdodD0xMDAgdmlld2JveD1cIjAgMCAyMTYgMTczXCIgZmlsbD1ub25lIHhtbG5zPWh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnPjxwYXRoIGQ9XCJNMjE2IDExOC4zMDhIMi41MjA2OWUtMDVWNzAuNzYwOUMtMC4wMDMwOTAzNSA2OS42MjU3IDAuMjgyNjUzIDY4LjUwODMgMC44MzAzNzggNjcuNTE0QzEuMzc4MSA2Ni41MTk3IDIuMTY5OCA2NS42ODExIDMuMTMwOTYgNjUuMDc3MUwxMDQuNDA2IDEuMDM1NTVDMTA1LjQ4MiAwLjM1ODkzOSAxMDYuNzI4IDAgMTA4IDBDMTA5LjI3MiAwIDExMC41MTggMC4zNTg5MzkgMTExLjU5NCAxLjAzNTU1TDIxMi44NjkgNjUuMDc3MUMyMTMuODMgNjUuNjgxMSAyMTQuNjIyIDY2LjUxOTcgMjE1LjE3IDY3LjUxNEMyMTUuNzE3IDY4LjUwODMgMjE2LjAwMyA2OS42MjU3IDIxNiA3MC43NjA5VjExOC4zMDhaXCIgZmlsbD0jQjNDNUY2PjwvcGF0aD48cGF0aCBkPVwiTTE4MS41ODUgMTIxLjQ3MkgzNC40MjA2QzMyLjYzNzYgMTIxLjQ3IDMwLjkyODEgMTIwLjc2MSAyOS42NjczIDExOS41QzI4LjQwNjUgMTE4LjI0IDI3LjY5NzMgMTE2LjUzIDI3LjY5NTMgMTE0Ljc0N1YxOS4wMTA5QzI3LjY5NzMgMTcuMjI3OSAyOC40MDY1IDE1LjUxODUgMjkuNjY3MyAxNC4yNTc3QzMwLjkyODEgMTIuOTk2OSAzMi42Mzc2IDEyLjI4NzcgMzQuNDIwNiAxMi4yODU2SDE4MS41ODVDMTgzLjM2OCAxMi4yODc2IDE4NS4wNzggMTIuOTk2OCAxODYuMzM5IDE0LjI1NzZDMTg3LjYgMTUuNTE4NCAxODguMzA5IDE3LjIyNzkgMTg4LjMxMSAxOS4wMTA5VjExNC43NDdDMTg4LjMwOSAxMTYuNTMgMTg3LjYgMTE4LjI0IDE4Ni4zMzkgMTE5LjVDMTg1LjA3OCAxMjAuNzYxIDE4My4zNjggMTIxLjQ3IDE4MS41ODUgMTIxLjQ3MlpcIiBmaWxsPSM3RkExRkU+PC9wYXRoPjxwYXRoIGQ9XCJNODcuNDI5NCAzNC40Mzk2SDQzLjkxMjlDNDMuMzQwOSAzNC40NDA1IDQyLjc3NDMgMzQuMzI4NiA0Mi4yNDU2IDM0LjExMDNDNDEuNzE2OSAzMy44OTIgNDEuMjM2NCAzMy41NzE2IDQwLjgzMTYgMzMuMTY3NEM0MC40MjY4IDMyLjc2MzIgNDAuMTA1NyAzMi4yODMyIDM5Ljg4NjYgMzEuNzU0OEMzOS42Njc1IDMxLjIyNjQgMzkuNTU0NyAzMC42NiAzOS41NTQ3IDMwLjA4OEMzOS41NTQ3IDI5LjUxNiAzOS42Njc1IDI4Ljk0OTUgMzkuODg2NiAyOC40MjExQzQwLjEwNTcgMjcuODkyOCA0MC40MjY4IDI3LjQxMjggNDAuODMxNiAyNy4wMDg2QzQxLjIzNjQgMjYuNjA0NCA0MS43MTY5IDI2LjI4NCA0Mi4yNDU2IDI2LjA2NTdDNDIuNzc0MyAyNS44NDc0IDQzLjM0MDkgMjUuNzM1NSA0My45MTI5IDI1LjczNjNIODcuNDI5NEM4OC4wMDE0IDI1LjczNTUgODguNTY4IDI1Ljg0NzQgODkuMDk2NyAyNi4wNjU3Qzg5LjYyNTUgMjYuMjg0IDkwLjEwNiAyNi42MDQ0IDkwLjUxMDcgMjcuMDA4NkM5MC45MTU1IDI3LjQxMjggOTEuMjM2NyAyNy44OTI4IDkxLjQ1NTggMjguNDIxMUM5MS42NzQ5IDI4Ljk0OTUgOTEuNzg3NyAyOS41MTYgOTEuNzg3NyAzMC4wODhDOTEuNzg3NyAzMC42NiA5MS42NzQ5IDMxLjIyNjQgOTEuNDU1OCAzMS43NTQ4QzkxLjIzNjcgMzIuMjgzMiA5MC45MTU1IDMyLjc2MzIgOTAuNTEwNyAzMy4xNjc0QzkwLjEwNiAzMy41NzE2IDg5LjYyNTUgMzMuODkyIDg5LjA5NjcgMzQuMTEwM0M4OC41NjggMzQuMzI4NiA4OC4wMDE0IDM0LjQ0MDUgODcuNDI5NCAzNC40Mzk2WlwiIGZpbGw9d2hpdGU+PC9wYXRoPjxwYXRoIGQ9XCJNMTcwLjkwMyA1Ni41OTM2SDQ0LjMwOThDNDMuMDUwNyA1Ni41OTM2IDQxLjg0MzIgNTYuMDkzNSA0MC45NTI5IDU1LjIwMzJDNDAuMDYyNyA1NC4zMTI5IDM5LjU2MjUgNTMuMTA1NCAzOS41NjI1IDUxLjg0NjRDMzkuNTYyNSA1MC41ODczIDQwLjA2MjcgNDkuMzc5OCA0MC45NTI5IDQ4LjQ4OTZDNDEuODQzMiA0Ny41OTkzIDQzLjA1MDcgNDcuMDk5MSA0NC4zMDk4IDQ3LjA5OTFIMTcwLjkwM0MxNzIuMTYxIDQ3LjEwMDkgMTczLjM2NyA0Ny42MDE5IDE3NC4yNTYgNDguNDkyQzE3NS4xNDQgNDkuMzgyMSAxNzUuNjQ0IDUwLjU4ODUgMTc1LjY0NCA1MS44NDY0QzE3NS42NDQgNTMuMTA0MiAxNzUuMTQ0IDU0LjMxMDcgMTc0LjI1NiA1NS4yMDA3QzE3My4zNjcgNTYuMDkwOCAxNzIuMTYxIDU2LjU5MTggMTcwLjkwMyA1Ni41OTM2WlwiIGZpbGw9d2hpdGU+PC9wYXRoPjxwYXRoIGQ9XCJNMTcwLjkwMyA3My4yMDg5SDQ0LjMwOThDNDMuMDUwNyA3My4yMDg5IDQxLjg0MzIgNzIuNzA4NyA0MC45NTI5IDcxLjgxODRDNDAuMDYyNyA3MC45MjgxIDM5LjU2MjUgNjkuNzIwNyAzOS41NjI1IDY4LjQ2MTZDMzkuNTYyNSA2Ny4yMDI2IDQwLjA2MjcgNjUuOTk1MSA0MC45NTI5IDY1LjEwNDhDNDEuODQzMiA2NC4yMTQ1IDQzLjA1MDcgNjMuNzE0NCA0NC4zMDk4IDYzLjcxNDRIMTcwLjkwM0MxNzIuMTYyIDYzLjcxNDQgMTczLjM3IDY0LjIxNDUgMTc0LjI2IDY1LjEwNDhDMTc1LjE1IDY1Ljk5NTEgMTc1LjY1IDY3LjIwMjYgMTc1LjY1IDY4LjQ2MTZDMTc1LjY1IDY5LjcyMDcgMTc1LjE1IDcwLjkyODEgMTc0LjI2IDcxLjgxODRDMTczLjM3IDcyLjcwODcgMTcyLjE2MiA3My4yMDg5IDE3MC45MDMgNzMuMjA4OVpcIiBmaWxsPXdoaXRlPjwvcGF0aD48cGF0aCBkPVwiTTE3MC45MDMgODkuODI0MUg0NC4zMDk4QzQzLjA1MDcgODkuODI0MSA0MS44NDMyIDg5LjMyMzkgNDAuOTUyOSA4OC40MzM3QzQwLjA2MjcgODcuNTQzNCAzOS41NjI1IDg2LjMzNTkgMzkuNTYyNSA4NS4wNzY4QzM5LjU2MjUgODMuODE3OCA0MC4wNjI3IDgyLjYxMDMgNDAuOTUyOSA4MS43MkM0MS44NDMyIDgwLjgyOTcgNDMuMDUwNyA4MC4zMjk2IDQ0LjMwOTggODAuMzI5NkgxNzAuOTAzQzE3Mi4xNjEgODAuMzMxNCAxNzMuMzY3IDgwLjgzMjQgMTc0LjI1NiA4MS43MjI1QzE3NS4xNDQgODIuNjEyNiAxNzUuNjQ0IDgzLjgxOSAxNzUuNjQ0IDg1LjA3NjhDMTc1LjY0NCA4Ni4zMzQ3IDE3NS4xNDQgODcuNTQxMSAxNzQuMjU2IDg4LjQzMTJDMTczLjM2NyA4OS4zMjEzIDE3Mi4xNjEgODkuODIyMyAxNzAuOTAzIDg5LjgyNDFaXCIgZmlsbD13aGl0ZT48L3BhdGg+PHBhdGggZD1cIk0yMDkuMjc1IDE3Mi4xMUg2LjcyNTI4QzQuOTQyMjQgMTcyLjEwOCAzLjIzMjgyIDE3MS4zOTkgMS45NzIwMiAxNzAuMTM4QzAuNzExMjE2IDE2OC44NzcgMC4wMDIwMDg5IDE2Ny4xNjggMCAxNjUuMzg1Vjc4LjM1MTdDMC4wMDIwMDg5IDc2LjU2ODcgMC43MTEyMTYgNzQuODU5MyAxLjk3MjAyIDczLjU5ODVDMy4yMzI4MiA3Mi4zMzc3IDQuOTQyMjQgNzEuNjI4NSA2LjcyNTI4IDcxLjYyNjVMNi44NzkwNCA3MS42NTc4TDk1Ljk5NiAxMDkuMjU0Qzk5Ljc5NzYgMTEwLjg0NyAxMDMuODc4IDExMS42NjcgMTA4IDExMS42NjdDMTEyLjEyMiAxMTEuNjY3IDExNi4yMDIgMTEwLjg0NyAxMjAuMDA0IDEwOS4yNTRMMjA5LjE5NSA3MS42MjY1SDIwOS4yNzVDMjExLjA1OCA3MS42Mjg1IDIxMi43NjcgNzIuMzM3NyAyMTQuMDI4IDczLjU5ODVDMjE1LjI4OSA3NC44NTkzIDIxNS45OTggNzYuNTY4OCAyMTYgNzguMzUxOFYxNjUuMzg1QzIxNS45OTggMTY3LjE2OCAyMTUuMjg5IDE2OC44NzcgMjE0LjAyOCAxNzAuMTM4QzIxMi43NjcgMTcxLjM5OSAyMTEuMDU4IDE3Mi4xMDggMjA5LjI3NSAxNzIuMTFaXCIgZmlsbD0jQjNDNUY2PjwvcGF0aD48L3N2Zz48L2ZpZ3VyZT48YnI+PGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+PGRpdiBjbGFzcz1jb2wtMTI+PGRpdiBjbGFzcz1cImJvbGQgZm50MTQgbXktNFwiPk5vIHJlc291cmNlcyB3ZXJlIGZvdW5kPC9kaXY+PGRpdiBjbGFzcz1cImZudDggbWItNFwiPlRyeSBhZGp1c3RpbmcgeW91ciBzZWFyY2ghIElmIHlvdSBoYXZlblxcJ3QgY3JlYXRlZCBhbnkgcmVzb3VyY2UgeWV0LCBpdFxcJ3MgdGltZSB0byA8YSB1aS1zcmVmPWFwcC5uYXZiYXIucmVzb3VyY2VzLm5ldygpIGNsYXNzPVwicHgtMSBib2xkXCI+Y3JlYXRlPC9hPiByZXNvdXJjZSAhPC9kaXY+PGRpdiBjbGFzcz1teS00PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9bXQtMSBzdHlsZT1cIm1pbi1oZWlnaHQ6NDAwcHg7cG9zaXRpb246IHJlbGF0aXZlO292ZXJmbG93LXg6aGlkZGVuXCIgbmctc2hvdz1cInJlc291cmNlTG9hZGluZyB8fCByZXNvdXJjZVNlbGVjdGVkIHx8IHBhZ2luYXRpb25PcHRpb25zLnRvdGFsSXRlbUNvdW50PjBcIj48ZGl2IGNsYXNzIG5nLXNob3c9XCJyZXNvdXJjZVRhYmxlRGF0YS5sZW5ndGg+MFwiPjxkaXYgbmctaWY9ZmFsc2U+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1nb3RvU3RhdGUoKSBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtc3VjY2Vzc1wiIG5nLWRpc2FibGVkPSFyZXNvdXJjZVNlbGVjdGVkPjxzcGFuIGNsYXNzPVwiZmEgZmEte3tyZXNvdXJjZUljb25TZWxlY3RlZH19XCI+PC9zcGFuPiBFZGl0IHt7c2VsZWN0ZWRSZXNvdXJjZVR5cGV9fSBkZWZpbml0aW9uPC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1wLTM+PGRpdiBjbGFzcz1yb3cgc3R5bGU9XCJ0b3A6MDttYXJnaW4tbGVmdDotMXJlbSAhaW1wb3J0YW50XCIgbmctaWY9cmVzb3VyY2VMb2FkaW5nIG5nLWNsYXNzPVwie1xcJ3Byb2Nlc3Npbmctb3ZlcmxheVxcJzpyZXNvdXJjZUxvYWRpbmd9XCIga3QtcHJvY2Vzc2luZy1hbmltYXRpb24gc2hvdy1tc2c9dHJ1ZSBzaG93LWFzLWNhcmQ9dHJ1ZSBtZXNzYWdlPVwiTG9hZGluZyByZXNvdXJjZSBsaXN0XCI+PC9kaXY+PGRpdiBzaG93LWFjdGlvbi1idXR0b25zPXNob3dUYWJsZUFjdGlvbnMgbmctaWY9c2VhcmNoSW5pdGlhdGVkIGt0LXNtYXJ0LXRhYmxlIGt0LXJlZnJlc2gtZGF0YT1nZXRSZXNvdXJjZURlZihwYWdlTnVtYmVyLHBhZ2VTaXplKSBrdC1wcm9jZXNzLWFjdGlvbj1wcm9jZXNzVGFibGVBY3Rpb24oaXRlbSxhY3Rpb25JZCkgYWN0aW9uLWRlZmluaXRpb249YWN0aW9uRGVmIHBhcmFtZXRlcnM9c21QYXJhbXMgaXRlbXMtb24tcGFnZT1yZXN1bHRzLnBhZ2VTaXplIGluaXRpYWwtcGFnZT1jdXJyZW50UGFnZSByb3ctc2VsZWN0ZWQtY2hhbmdlPXJvd1NlbGVjdGlvbkNoYW5nZWQoaXRlbSk+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JtPjxkaXYgY2xhc3M9XCJjb2wtMjQgcC0xIG0tMVwiPjxzcGFuIGNsYXNzPWg1Pjwvc3Bhbj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDNfcmVzb3VyY2VzL2FuZ3VsYXJUZW1wbGF0ZXMvcmVzb3VyY2VNZW51Lmh0bWwnLCc8ZGl2PjxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+PGRpdiBjbGFzcz1wYW5lbC1oZWFkaW5nPjxzcGFuIGNsYXNzPVwiZmEgZmEtYmFyc1wiPiZuYnNwIE1lbnU8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz48dWwgY2xhc3M9XCJuYXYgbmF2LXBpbGxzIG5hdi1zdGFja2VkXCI+PGxpIG5nLWNsYXNzPVwiYWN0aXZlTGlua1NpZGVtZW51KFxcJ2FwcC5uYXZiYXIucmVzb3VyY2VzLmxpc3RcXCcpXCI+PGEgdWktc3JlZj1hcHAubmF2YmFyLnJlc291cmNlcy5saXN0PjxpIGNsYXNzPVwiZmEgZmEtZ2xvYmVcIj4mbmJzcDsgUmVzb3VyY2VzPC9pPjwvYT48L2xpPjxsaSBuZy1jbGFzcz1cImFjdGl2ZUxpbmtTaWRlbWVudShcXCdhcHAubmF2YmFyLnJlc291cmNlcy5uZXdcXCcpXCI+PGEgdWktc3JlZj1hcHAubmF2YmFyLnJlc291cmNlcy5uZXc+PGkgY2xhc3M9XCJmYSBmYS1wbHVzXCI+Jm5ic3A7IE5ldyByZXNvdXJjZTwvaT48L2E+PC9saT48L3VsPjwvZGl2PjxkaXYga3QtdG9vbGJveCBuZy1zaG93PVwiISFhY3RpdmVMaW5rKFxcJ2FwcC5uYXZiYXIucmVzb3VyY2VzLmZvcm1cXCcpXCI+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAzX3Jlc291cmNlcy9hbmd1bGFyVGVtcGxhdGVzL3Jlc291cmNlcy5odG1sJywnPGRpdiBpZD1jb250ZW50SG9sZGVyIG5nLWNvbnRyb2xsZXI9cmVzb3VyY2VVbmlmaWVkQ3RybCBjbGFzcz1yb3c+PGRpdiBjbGFzcz1cImNvbC1sZy00IHBhZGRpbmctMFwiPjxkaXYgdWktdmlldz1tZW51PjwvZGl2PjwvZGl2PjxkaXYgaWQ9Y29udGVudCBjbGFzcz1jb2wtbGctMjA+PGRpdiB1aS12aWV3PWNvbnRlbnRSPjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwM19yZXNvdXJjZXMvYW5ndWxhclRlbXBsYXRlcy9zbWFydENvbnRyYWN0RGVmaW5pdGlvbi5odG1sJywnPGRpdiBpZD1ub3RpZmljYXRpb25EZWZpbml0aW9uQ29tcG9uZW50IGNsYXNzPW0tMz48ZGl2IGt0LWhlbHAtY2VudGVyIGhlbHAtaWQ9XCJcXCdzbWFydGNvbnRyYWN0ZGVmXFwnXCI+PC9kaXY+PGRpdiBjbGFzcz1tdC0xPjxkaXYgY2xhc3M9XCJjYXJkIHJvdyBtLTBcIj48ZGl2IGt0LXJlc291cmNlLWRlZmluaXRpb24gcmVzb3VyY2U9cmVzb3VyY2U+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQgbXQtMlwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wIHAtMlwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMTIgYm9yZGVyLXJpZ2h0XCI+PGZvcm0gbmctc3VibWl0PXNhdmVSZXNvdXJjZVBhcmFtZXRlcnMoZm9ybS4kdmFsaWQpIG5hbWU9Zm9ybSBjbGFzcz1mb3JtLWhvcml6b250YWwgcm9sZT1mb3JtIG5vdmFsaWRhdGU+PGRpdiBjbGFzcz1tYi0yPjxzcGFuIGNsYXNzPVwiYm9sZCBzbWFsbCBib3JkZXItYm90dG9tIGJvcmRlci1wcmltYXJ5IHAtMSB0ZXh0LXByaW1hcnlcIj5TbWFydCBjb250cmFjdCBkZWZpbml0aW9uPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZFxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5Db250cmFjdElkLiR0b3VjaGVkKSAmJiBmb3JtLkNvbnRyYWN0SWQuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcyBmb3I9Q29udHJhY3RJZD5TbWFydCBjb250cmFjdCBpZDwvbGFiZWw+PGRpdiBjbGFzcz48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPXJlc291cmNlLlBhcmFtZXRlcnMuQ29udHJhY3RJZCBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1Db250cmFjdElkIG5hbWU9Q29udHJhY3RJZCBwbGFjZWhvbGRlcj1cIlNtYXJ0IGNvbnRyYWN0IGlkXCI+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5Db250cmFjdElkLiR0b3VjaGVkKSAmJiBmb3JtLkNvbnRyYWN0SWQuJGludmFsaWRcIiBuZy1jbGFzcz1cIntcXCdpbnZhbGlkLWZlZWRiYWNrXFwnOihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5Db250cmFjdElkLiR0b3VjaGVkKSAmJiBmb3JtLkNvbnRyYWN0SWQuJGludmFsaWR9XCI+RW50ZXIgc21hcnQgY29udHJhY3QgaWQ8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdpcy1pbnZhbGlkXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLkNvbnRyYWN0QWJpLiR0b3VjaGVkKSAmJiBmb3JtLkNvbnRyYWN0QWJpLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3MgZm9yPUNvbnRyYWN0QWJpPlNtYXJ0IGNvbnRyYWN0IEFCSTwvbGFiZWw+PGRpdiBjbGFzcz48dGV4dGFyZWEgcm93cz01IG5nLW1vZGVsPXJlc291cmNlLlBhcmFtZXRlcnMuQ29udHJhY3RBYmkgbmctcmVxdWlyZWQ9ZmFsc2UgcGxhY2Vob2xkZXI9XCJFbnRlci9QYXN0ZSBBQklcIiBuYW1lPUNvbnRyYWN0QWJpIG5nLW1vZGVsLW9wdGlvbnM9XCJ7IGRlYm91bmNlOiAyNTAgfVwiIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlciBpcy1pbnZhbGlkXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLkNvbnRyYWN0QWJpLiR0b3VjaGVkKSAmJiBmb3JtLkNvbnRyYWN0QWJpLiRpbnZhbGlkIH1cIiBjbGFzcz1mb3JtLWNvbnRyb2w+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PC90ZXh0YXJlYT48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLkNvbnRyYWN0QWJpLiR0b3VjaGVkKSAmJiBmb3JtLkNvbnRyYWN0QWJpLiRpbnZhbGlkXCIgbmctY2xhc3M9XCJ7XFwnaW52YWxpZC1mZWVkYmFja1xcJzooZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uQ29udHJhY3RBYmkuJHRvdWNoZWQpICYmIGZvcm0uQ29udHJhY3RBYmkuJGludmFsaWR9XCI+RW50ZXIgc21hcnQgY29udHJhY3QgQUJJPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZFxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5QdWJsaWNWYXJzRGF0YXNldElkLiR0b3VjaGVkKSAmJiBmb3JtLlB1YmxpY1ZhcnNEYXRhc2V0SWQuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz10ZXh0LW11dGVkIGZvcj11c2VyMj5Db250cmFjdCB2YXJpYWJsZXMgKHNlbGVjdCBkYXRhc2V0KTwvbGFiZWw+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLW1vZGVsPXJlc291cmNlLlBhcmFtZXRlcnMuUHVibGljVmFyc0RhdGFzZXRJZCBuZy1pZj1yZXNvdXJjZUxvYWRlZCBzZWxlY3RlZC1pdGVtcz1yZXNvdXJjZS5QYXJhbWV0ZXJzLlB1YmxpY1ZhcnNEYXRhc2V0SWQgaXMtbXVsdGlwbGU9ZmFsc2UgbmFtZT1tZXNzYWdlVGFnIG5nLXJlcXVpcmVkPWZhbHNlIGRyb3Bkb3duLWl0ZW1zPWRhdGFzZXRMaXN0IGRyb3Bkb3duLWlkPVwiXFwnaW5wdXRJZFxcJ1wiIHBhcmVudC1mb3JtLWlkPVwiXFwnZm9ybVxcJ1wiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IGlucHV0IGRhdGFzZXRcXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uUHVibGljVmFyc0RhdGFzZXRJZC4kdG91Y2hlZCkgJiYgZm9ybS5QdWJsaWNWYXJzRGF0YXNldElkLiRpbnZhbGlkXCIgbmctY2xhc3M9XCJ7XFwnaW52YWxpZC1mZWVkYmFja1xcJzooZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uUHVibGljVmFyc0RhdGFzZXRJZC4kdG91Y2hlZCkgJiYgZm9ybS5QdWJsaWNWYXJzRGF0YXNldElkLiRpbnZhbGlkfVwiPlNlbGVjdCBwdWJsaWMgdmFyaWFibGVzPC9wPjwvZGl2PjxkaXYgbmctcmVwZWF0PVwiZnVuY3Rpb24gaW4gcmVzb3VyY2UuUGFyYW1ldGVycy5GdW5jdGlvbnMgdHJhY2sgYnkgJGluZGV4XCIgY2xhc3M9cC0yPjxkaXYgY2xhc3M9bWItMj48c3BhbiBjbGFzcz1cImJvbGQgc21hbGwgYm9yZGVyLWJvdHRvbSBib3JkZXItaW5mbyBwLTEgdGV4dC1pbmZvXCI+RnVuY3Rpb24ge3skaW5kZXgrMX19PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZFxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5GdW5jdGlvbk5hbWV7eyRpbmRleH19LiR0b3VjaGVkKSAmJiBmb3JtLkZ1bmN0aW9uTmFtZXt7JGluZGV4fX0uJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcyBmb3I9RnVuY3Rpb25OYW1lPkZ1bmN0aW9uIG5hbWU8L2xhYmVsPjxkaXYgY2xhc3M+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1yZXNvdXJjZS5QYXJhbWV0ZXJzLkZ1bmN0aW9uc1skaW5kZXhdLkZ1bmN0aW9uTmFtZSBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1GdW5jdGlvbk5hbWV7eyRpbmRleH19IG5hbWU9RnVuY3Rpb25OYW1le3skaW5kZXh9fSBwbGFjZWhvbGRlcj1cIkZ1bmN0aW9uIG5hbWVcIj48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLkZ1bmN0aW9uTmFtZXt7JGluZGV4fX0uJHRvdWNoZWQpICYmIGZvcm0uRnVuY3Rpb25OYW1le3skaW5kZXh9fS4kaW52YWxpZFwiIG5nLWNsYXNzPVwie1xcJ2ludmFsaWQtZmVlZGJhY2tcXCc6KGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLkZ1bmN0aW9uTmFtZXt7JGluZGV4fX0uJHRvdWNoZWQpICYmIGZvcm0uRnVuY3Rpb25OYW1le3skaW5kZXh9fS4kaW52YWxpZH1cIj5FbnRlciBmdW5jdGlvbiBuYW1lPC9wPjwvZGl2PjwvZGl2PjxsYWJlbCBjbGFzcz10ZXh0LW11dGVkIGZvcj11c2VyMj5TZWxlY3QgZnVuY3Rpb24gaW5wdXQgcGFyYW1ldGVyczwvbGFiZWw+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLW1vZGVsPWZ1bmN0aW9uLklucHV0RGF0YXNldElkIG5nLWlmPXJlc291cmNlTG9hZGVkIHNlbGVjdGVkLWl0ZW1zPWZ1bmN0aW9uLklucHV0RGF0YXNldElkIGlzLW11bHRpcGxlPWZhbHNlIG5hbWU9bWVzc2FnZVRhZyBuZy1yZXF1aXJlZD1mYWxzZSBkcm9wZG93bi1pdGVtcz1kYXRhc2V0TGlzdCBkcm9wZG93bi1pZD1cIlxcJ2lucHV0SWRcXCdcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2Zvcm1cXCdcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCBpbnB1dCBkYXRhc2V0XFwnXCI+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48bGFiZWwgY2xhc3M9dGV4dC1tdXRlZCBmb3I9dXNlcjI+U2VsZWN0IHJldHVybiB2YWx1ZTwvbGFiZWw+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLW1vZGVsPWZ1bmN0aW9uLk91dHB1dERhdGFzZXRJZCBuZy1pZj1yZXNvdXJjZUxvYWRlZCBzZWxlY3RlZC1pdGVtcz1mdW5jdGlvbi5PdXRwdXREYXRhc2V0SWQgaXMtbXVsdGlwbGU9ZmFsc2UgbmFtZT1tZXNzYWdlVGFnIG5nLXJlcXVpcmVkPWZhbHNlIGRyb3Bkb3duLWl0ZW1zPWRhdGFzZXRMaXN0IGRyb3Bkb3duLWlkPVwiXFwnb3V0cHV0SWRcXCdcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2Zvcm1cXCdcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCBvdXRwdXQgZGF0YXNldFxcJ1wiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1yZXNvdXJjZS5QYXJhbWV0ZXJzLkZ1bmN0aW9ucy5zcGxpY2UoJGluZGV4LDEpIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhbmdlciBtdC0xXCI+PGkgY2xhc3M9XCJmYSBmYS10cmFzaFwiPjwvaT48L2J1dHRvbj48L2Rpdj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPW5ld0Z1bmN0aW9uKCkgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLWluZm8gbXktMlwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtcGx1c1wiPjwvc3Bhbj4mbmJzcCBBZGQgZnVuY3Rpb248L2J1dHRvbj48L2Zvcm0+PC9kaXY+PGRpdiBuZy1mb3JtPWZvcm0gY2xhc3M9Y29sLWxnLTEyPjxkaXYgY2xhc3M9bWItMj48c3BhbiBjbGFzcz1cImJvbGQgc21hbGwgYm9yZGVyLWJvdHRvbSBib3JkZXItcHJpbWFyeSBwLTEgdGV4dC1wcmltYXJ5XCI+QmxvY2tjaGFpbiBkYXRhc2V0czwvc3Bhbj48L2Rpdj48ZGl2IG5nLXJlcGVhdD1cImRhdGFzZXQgaW4gcmVzb3VyY2UuUGFyYW1ldGVycy5EYXRhc2V0cyB0cmFjayBieSAkaW5kZXhcIiBjbGFzcz1wLTI+PGRpdiBjbGFzcz1tYi0yPjxzcGFuIGNsYXNzPVwiYm9sZCBzbWFsbCBib3JkZXItYm90dG9tIGJvcmRlci1pbmZvIHAtMSB0ZXh0LWluZm9cIj5EYXRhc2V0IHt7JGluZGV4KzF9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2lzLWludmFsaWRcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uRGF0YXNldE5hbWV7eyRpbmRleH19LiR0b3VjaGVkKSAmJiBmb3JtLkRhdGFzZXROYW1le3skaW5kZXh9fS4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzIGZvcj1EYXRhc2V0TmFtZT5EYXRhc2V0IG5hbWU8L2xhYmVsPjxkaXYgY2xhc3M+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1kYXRhc2V0LkRhdGFzZXROYW1lIG5nLXJlcXVpcmVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPURhdGFzZXROYW1le3skaW5kZXh9fSBuYW1lPURhdGFzZXROYW1le3skaW5kZXh9fSBwbGFjZWhvbGRlcj1cIkRhdGFzZXQgbmFtZVwiPjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uRGF0YXNldE5hbWV7eyRpbmRleH19LiR0b3VjaGVkKSAmJiBmb3JtLkRhdGFzZXROYW1le3skaW5kZXh9fS4kaW52YWxpZFwiIG5nLWNsYXNzPVwie1xcJ2ludmFsaWQtZmVlZGJhY2tcXCc6KGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLkRhdGFzZXROYW1le3skaW5kZXh9fS4kdG91Y2hlZCkgJiYgZm9ybS5EYXRhc2V0TmFtZXt7JGluZGV4fX0uJGludmFsaWR9XCI+RW50ZXIgZGF0YXNldCBuYW1lPC9wPjwvZGl2PjwvZGl2PjxsYWJlbCBjbGFzcz10ZXh0LW11dGVkIGZvcj11c2VyMj5TZWxlY3QgZGF0YXNldDwvbGFiZWw+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLW1vZGVsPWRhdGFzZXQuRGF0YXNldElkIG5nLWlmPXJlc291cmNlTG9hZGVkIHNlbGVjdGVkLWl0ZW1zPWRhdGFzZXQuUGFyYW1ldGVycy5EYXRhc2V0SWQgaXMtbXVsdGlwbGU9ZmFsc2UgbmFtZT1tZXNzYWdlVGFnIG5nLXJlcXVpcmVkPWZhbHNlIGRyb3Bkb3duLWl0ZW1zPWRhdGFzZXRMaXN0IGRyb3Bkb3duLWlkPVwiXFwnaW5wdXRJZFxcJ1wiIHBhcmVudC1mb3JtLWlkPVwiXFwnZm9ybVxcJ1wiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IGRhdGFzZXRcXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9cmVzb3VyY2UuUGFyYW1ldGVycy5EYXRhc2V0cy5zcGxpY2UoJGluZGV4LDEpIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhbmdlciBtdC0xXCI+PGkgY2xhc3M9XCJmYSBmYS10cmFzaFwiPjwvaT48L2J1dHRvbj48L2Rpdj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPW5ld0Jsb2NrY2hhaW5EYXRhc2V0KCkgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLWluZm8gbXktMlwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtcGx1c1wiPjwvc3Bhbj4mbmJzcCBBZGQgZGF0YXNldDwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJweC0yIG10LTEgYm9yZGVyLXRvcFwiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9c2F2ZVJlc291cmNlUGFyYW1ldGVycygpIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc3VjY2VzcyBteS0yXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1zYXZlXCI+PC9zcGFuPiZuYnNwIFNhdmUgc21hcnQgY29udHJhY3QgZGVmaW5pdGlvbjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwM19yZXNvdXJjZXMvYW5ndWxhclRlbXBsYXRlcy90b2tlbkRlZmluaXRpb24uaHRtbCcsJzxkaXYgaWQ9bm90aWZpY2F0aW9uRGVmaW5pdGlvbkNvbXBvbmVudCBjbGFzcz1tLTM+PGRpdiBjbGFzcz1tdC0xPjxkaXYgY2xhc3M9XCJjYXJkIHJvdyBtLTBcIj48ZGl2IGt0LXJlc291cmNlLWRlZmluaXRpb24gcmVzb3VyY2U9cmVzb3VyY2U+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQgbXQtMlwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wIHAtMlwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMTIgYm9yZGVyLXJpZ2h0XCI+PGZvcm0gbmctc3VibWl0PXNhdmVSZXNvdXJjZVBhcmFtZXRlcnMoZm9ybS4kdmFsaWQpIG5hbWU9Zm9ybSBjbGFzcz1mb3JtLWhvcml6b250YWwgcm9sZT1mb3JtIG5vdmFsaWRhdGU+PGRpdiBjbGFzcz1tYi0yPjxzcGFuIGNsYXNzPVwiYm9sZCBzbWFsbCBib3JkZXItYm90dG9tIGJvcmRlci1wcmltYXJ5IHAtMSB0ZXh0LXByaW1hcnlcIj5EZWZpbmUgdG9rZW4gcHJvcGVydGllczwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2lzLWludmFsaWRcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uVGlja2VyLiR0b3VjaGVkKSAmJiBmb3JtLlRpY2tlci4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzIGZvcj1UaWNrZXI+VGlja2VyPC9sYWJlbD48ZGl2IGNsYXNzPjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9cmVzb3VyY2UucmVzb3VyY2VkZWZsYW5nX3NldFswXS5QYXJhbWV0ZXJzTGFuZy5UaWNrZXIgbmctcmVxdWlyZWQ9dHJ1ZSBjbGFzcz1mb3JtLWNvbnRyb2wgaWQ9VGlja2VyIG5hbWU9VGlja2VyIHBsYWNlaG9sZGVyPVwiVG9rZW4gdGlja2VyXCI+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5UaWNrZXIuJHRvdWNoZWQpICYmIGZvcm0uVGlja2VyLiRpbnZhbGlkXCIgbmctY2xhc3M9XCJ7XFwnaW52YWxpZC1mZWVkYmFja1xcJzooZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uVGlja2VyLiR0b3VjaGVkKSAmJiBmb3JtLlRpY2tlci4kaW52YWxpZH1cIj5FbnRlciB0b2tlbiB0aWNrZXI8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdpcy1pbnZhbGlkXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLlN1cHBseS4kdG91Y2hlZCkgJiYgZm9ybS5TdXBwbHkuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcyBmb3I9RGVjaW1hbHM+U3VwcGx5PC9sYWJlbD48ZGl2IGNsYXNzPjxpbnB1dCB0eXBlPW51bWJlciBuZy1tb2RlbD1yZXNvdXJjZS5yZXNvdXJjZWRlZmxhbmdfc2V0WzBdLlBhcmFtZXRlcnMuU3VwcGx5IG5nLXJlcXVpcmVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPVN1cHBseSBuYW1lPVN1cHBseSBwbGFjZWhvbGRlcj1cIkVudGVyIHRva2VuIHN1cHBseVwiPjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uU3VwcGx5LiR0b3VjaGVkKSAmJiBmb3JtLlN1cHBseS4kaW52YWxpZFwiIG5nLWNsYXNzPVwie1xcJ2ludmFsaWQtZmVlZGJhY2tcXCc6KGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLlN1cHBseS4kdG91Y2hlZCkgJiYgZm9ybS5TdXBwbHkuJGludmFsaWR9XCI+RW50ZXIgdG9rZW4gc3VwcGx5PC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZFxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5EZWNpbWFscy4kdG91Y2hlZCkgJiYgZm9ybS5EZWNpbWFscy4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzIGZvcj1EZWNpbWFscz5OdW1iZXIgb2YgZGVjaW1hbHM8L2xhYmVsPjxkaXYgY2xhc3M+PGlucHV0IHR5cGU9bnVtYmVyIG5nLW1vZGVsPXJlc291cmNlLnJlc291cmNlZGVmbGFuZ19zZXRbMF0uUGFyYW1ldGVycy5EZWNpbWFscyBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1EZWNpbWFscyBuYW1lPURlY2ltYWxzIHBsYWNlaG9sZGVyPVwiTnVtYmVyIG9mIGRlY2ltYWxzXCI+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5EZWNpbWFscy4kdG91Y2hlZCkgJiYgZm9ybS5EZWNpbWFscy4kaW52YWxpZFwiIG5nLWNsYXNzPVwie1xcJ2ludmFsaWQtZmVlZGJhY2tcXCc6KGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLlRpY2tlci4kdG91Y2hlZCkgJiYgZm9ybS5UaWNrZXIuJGludmFsaWR9XCI+RW50ZXIgbnVtYmVyIG9mIGRlY2ltYWxzPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9bXQtMj48bGFiZWwgY2xhc3M9bGFiZWwteHMgZm9yPWNiSW5maW5pdGVTdXBwbHk+PGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9bXItMiBzdHlsZT10cmFuc2Zvcm06c2NhbGUoMS4yNSkgbmFtZT1jYkluZmluaXRlU3VwcGx5IGlkPWNiSW5maW5pdGVTdXBwbHkgbmctbW9kZWw9cmVzb3VyY2UuUGFyYW1ldGVycy5UYXNrQ3JlYXRvcj4gSW5maW5pdGUgc3VwcGx5PC9sYWJlbD48L2Rpdj48L2Zvcm0+PC9kaXY+PGRpdiBjbGFzcz1jb2wtbGctMTI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInB4LTIgbXQtMSBib3JkZXItdG9wXCI+PGJ1dHRvbiB0eXBlPXN1Ym1pdCBjbGFzcz1cImJ0biBidG4tc20gYnRuLXN1Y2Nlc3MgbXItMyBteS0yXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1zYXZlXCI+PC9zcGFuPiZuYnNwIFNhdmUgdG9rZW4gZGVmaW5pdGlvbjwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWRlcGxveVRva2VuKCkgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IG15LTJcIj48c3BhbiBjbGFzcz1cImZhIGZhLXNhdmVcIj48L3NwYW4+Jm5ic3AgRGVwbG95IHRva2VuPC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDAzX3Jlc291cmNlcy9hbmd1bGFyVGVtcGxhdGVzL3ZpZXdSZXNvdXJjZS5odG1sJywnPGRpdiBjbGFzcz1tdC00PjxkaXYgY2xhc3M9XCJjb2wtbGctMTYgbS1hdXRvXCI+PGRpdiBjbGFzcz1cImNhcmQgbXgtNCBtdC0yIHAtMVwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcC0yIHRleHQtY2VudGVyIHRleHQtcHJpbWFyeVwiPjxpIGNsYXNzPVwie3tyZXNvdXJjZS5SZXNvdXJjZVBhcmFtcy5pY29ufX0gdGV4dC1wcmltYXJ5IG1yLTJcIj48L2k+PHNwYW4gY2xhc3M9Ym9sZD57e3Jlc291cmNlLlJlc291cmNlTmFtZX19PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBtLTJcIj48YSBjbGFzcz1cIm1iLTIgdGV4dC1wcmltYXJ5XCIgaHJlZiB0aXRsZT1cIlJldHVybiB0byBwYWdlcyBsaXN0XCIgbmctY2xpY2s9cmV0dXJuVG9QcmV2aW91c1BhZ2UoKT48aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWxlZnQgbXItMlwiPjwvaT5SZXR1cm4gdG8gcHJldmlvdXMgcGFnZTwvYT48L2Rpdj48ZGl2IGNsYXNzPVwicm93IHAtMyBtLTAgbXQtMSBib3JkZXItdG9wXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yMCBteC1hdXRvXCI+PGRpdiBjbGFzcz1teS00PjxsYWJlbCBjbGFzcz1jb2wtbGctMjQgZm9yPVJlc291cmNlSWQ+PHU+e3tyZXNvdXJjZS5SZXNvdXJjZU5hbWV9fSBpZDwvdT48L2xhYmVsPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgbXktMVwiPjxkaXYgY2xhc3M9Ym9sZD57e3Jlc291cmNlLmlkfX08L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPW15LTQ+PGxhYmVsIGNsYXNzPWNvbC1sZy0yNCBmb3I9cmVzb3VyY2VOYW1lPjx1Pnt7cmVzb3VyY2UuUmVzb3VyY2VOYW1lfX0gbmFtZTwvdT48L2xhYmVsPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgbXktMVwiPjxkaXYgY2xhc3M9Ym9sZD57e3Jlc291cmNlLk5hbWV9fTwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9bXktND48bGFiZWwgY2xhc3M9Y29sLWxnLTI0IGZvcj1TdWJqZWN0Pjx1Pnt7cmVzb3VyY2UuUmVzb3VyY2VOYW1lfX0gc3ViamVjdDwvdT48L2xhYmVsPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgbXktMVwiPjxkaXYgY2xhc3M9Ym9sZD57e3Jlc291cmNlLlN1YmplY3R9fTwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9bXktND48bGFiZWwgY2xhc3M9Y29sLWxnLTI0IGZvcj1EZXNjcmlwdGlvbj48dT57e3Jlc291cmNlLlJlc291cmNlTmFtZX19IGRlc2NyaXB0aW9uPC91PjwvbGFiZWw+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBteS0xXCI+PGRpdiBjbGFzcz1ib2xkPnt7cmVzb3VyY2UuRGVzY3JpcHRpb259fTwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9bXktND48bGFiZWwgY2xhc3M9Y29sLWxnLTI0IGZvcj1kZGxSZXNvdXJjZVN0YXR1cz48dT57e3Jlc291cmNlLlJlc291cmNlTmFtZX19IHN0YXR1czwvdT48L2xhYmVsPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgbXktMVwiPjxkaXYgbmctaWY9cmVzb3VyY2UuQWN0aXZlIGNsYXNzPVwiYm9sZCB0ZXh0LXN1Y2Nlc3NcIj5BY3RpdmU8L2Rpdj48ZGl2IG5nLWlmPSFyZXNvdXJjZS5BY3RpdmUgY2xhc3M9XCJib2xkIHRleHQtZGFuZ2VyXCI+Tm90IGFjdGl2ZTwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJzbWFsbCBweC0yXCIgbmctaWY9cmVzb3VyY2UuQ3JlYXRlZERhdGVUaW1lPjxzcGFuPkNyZWF0ZWQgYnkgPGI+e3tyZXNvdXJjZS5DcmVhdGVkQnkuZmlyc3RfbmFtZX19IHt7cmVzb3VyY2UuQ3JlYXRlZEJ5Lmxhc3RfbmFtZX19PC9iPiBhdCB7e3Jlc291cmNlLkNyZWF0ZWREYXRlVGltZSB8IGRhdGU6IFwiZGQuTU0ueXl5eSBcXCdhdFxcJyBISDptbTpzc1wifX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cInNtYWxsIHB4LTJcIiBuZy1pZj1yZXNvdXJjZS5DaGFuZ2VkRGF0ZVRpbWU+PHNwYW4+Q2hhbmdlZCBieSA8Yj57e3Jlc291cmNlLkNoYW5nZWRCeS5maXJzdF9uYW1lfX0ge3tyZXNvdXJjZS5DaGFuZ2VkQnkubGFzdF9uYW1lfX08L2I+IGF0IHt7cmVzb3VyY2UuQ2hhbmdlZERhdGVUaW1lIHwgZGF0ZTogXCJkZC5NTS55eXl5IFxcJ2F0XFwnIEhIOm1tOnNzXCJ9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0yNCBuZy1pZj1cInJlc291cmNlLlJlc291cmNlVHlwZS5SZXNvdXJjZUNvZGU9PVxcJ2RhdGFzZXRcXCcgfHwgcmVzb3VyY2UuUmVzb3VyY2VUeXBlLlJlc291cmNlQ29kZT09XFwnZmlsZVxcJ1wiPjxhIGhyZWYgc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246IG5vbmU7XCI+PGkgbmctY2xhc3M9XCJ7XFwnZmEgZmEtbG9jayB0ZXh0LXN1Y2Nlc3NcXCc6cmVzb3VyY2UuSXNCbG9ja2NoYWluLCBcXCdmYSBmYS11bmxvY2sgdGV4dC1kYW5nZXJcXCc6IXJlc291cmNlLklzQmxvY2tjaGFpbn1cIj4mbmJzcCB7e3Jlc291cmNlLlJlc291cmNlVHlwZS5uYW1lfX0gaXMgaW1tdXRhYmxlIChzZWN1cmVkIG9uIHRoZSBibG9ja2NoYWluKSAmbmJzcDwvaT4gPGkgY2xhc3M9XCJmYXIgZmEtY2hlY2stc3F1YXJlIHRleHQtc3VjY2Vzc1wiIG5nLWlmPXJlc291cmNlLklzQmxvY2tjaGFpbj48L2k+IDxpIGNsYXNzPVwiZmFyIGZhLXNxdWFyZSB0ZXh0LWRhbmdlclwiIG5nLWlmPSFyZXNvdXJjZS5Jc0Jsb2NrY2hhaW4+PC9pPjwvYT48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDRfc2V0dGluZ3MvYW5ndWxhclRlbXBsYXRlcy9jb2Rlc0RhdGEuaHRtbCcsJzxmb3JtIGlkPWNvZGVzRGF0YS5odG1sIG5nLXN1Ym1pdD1SZXNvdXJjZVNlYXJjaCgxKSBuYW1lPWZvcm0gY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYga3QtaGVscC1jZW50ZXIgaGVscC1pZD1cIlxcJ2NvZGVzZGVmXFwnXCI+PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQgbXQtM1wiIHN0eWxlPVwib3ZlcmZsb3cteDogaGlkZGVuO1wiPjxkaXYgY2xhc3M+PGRpdiBjbGFzcz1cInJvdyBteC0yXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCB0ZXh0LWNlbnRlciBweS0yIGJvcmRlci1ib3R0b21cIj48c3BhbiBjbGFzcz1oND5Db2Rlczwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IG10LTRcIj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5OYW1lLiR0b3VjaGVkKSAmJiBmb3JtLk5hbWUuJGludmFsaWQgfVwiPjxkaXYgY2xhc3M9cm93IHN0eWxlPVwibWFyZ2luLWJvdHRvbTogLTEwcHg7XCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+PGRpdiBjbGFzcz13LTEwMD48ZGl2PjxsYWJlbCBjbGFzcz1tYi0xIGZvcj1yZXNvdXJjZU5hbWU+Q29kZSBuYW1lPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPVwib3N0YWxvIHJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj48ZGl2IGNsYXNzPWNvbC0xNj48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPXJlc291cmNlLk5hbWUgbmctcmVxdWlyZWQ9ZmFsc2UgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcC0xXCIgaWQ9TmFtZSBuYW1lPU5hbWUgcGxhY2Vob2xkZXI9XCJFbnRlciBDb2RlIG5hbWVcIj48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLk5hbWUuJHRvdWNoZWQpICYmIGZvcm0uTmFtZS4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIgQ29kZSBuYW1lPC9wPjwvZGl2PjxkaXYgY2xhc3M9bS0xPjxidXR0b24gdHlwZT1zdWJtaXQgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtaW5mb1wiPjxzcGFuIGNsYXNzPVwiZmEgZmEtc2VhcmNoIG1yLTJcIj48L3NwYW4+IFNlYXJjaDwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9bS0xPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9Z290b01lc3NhZ2VEZWYoKSBjbGFzcz1cImJ0biBidG4taW5mb1wiPkNyZWF0ZSBOZXc8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPWFkdmFuY2VkU2VhcmNoIGNsYXNzPVwicm93IHNlYXJjaC1yZXNvdXJjZXMgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtMjQgcC0wXCI+PGRpdiBjbGFzcz1cInJvdyBmb3JtLWdyb3VwXCIgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5TdWJqZWN0LiR0b3VjaGVkKSAmJiBmb3JtLlN1YmplY3QuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtbGctMTIgZm9yPVN1YmplY3Q+U3ViamVjdDwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1yZXNvdXJjZS5TdWJqZWN0IG5nLXJlcXVpcmVkPWZhbHNlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1TdWJqZWN0IG5hbWU9U3ViamVjdCBwbGFjZWhvbGRlcj1cInt7IHJlc291cmNlLlJlc291cmNlRGVmSWQuUmVzb3VyY2VUeXBlLm5hbWV9fSBzdWJqZWN0XCI+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5TdWJqZWN0LiR0b3VjaGVkKSAmJiBmb3JtLlN1YmplY3QuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIHt7IHJlc291cmNlLlJlc291cmNlRGVmSWQuUmVzb3VyY2VUeXBlLm5hbWV9fSBzdWJqZWN0PC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgZm9ybS1ncm91cFwiIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uRGVzY3JpcHRpb24uJHRvdWNoZWQpICYmIGZvcm0uRGVzY3JpcHRpb24uJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtbGctMTIgZm9yPURlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1sZy0yND48dGV4dGFyZWEgbmctbW9kZWw9cmVzb3VyY2UuRGVzY3JpcHRpb24gbmFtZT1EZXNjcmlwdGlvbiBuZy1yZXF1aXJlZD1mYWxzZSBuZy1taW4tbGVuZ3RoPTIwIGNsYXNzPWZvcm0tY29udHJvbD48L3RleHRhcmVhPjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uRGVzY3JpcHRpb24uJHRvdWNoZWQpICYmIGZvcm0uRGVzY3JpcHRpb24uJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIHt7IHJlc291cmNlLlJlc291cmNlRGVmSWQuUmVzb3VyY2VUeXBlLm5hbWV9fSBkZXNjcmlwdGlvbihtaW4gMjAgY2hhcnMpLjwvcD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMFwiIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ucmVzb3VyY2VUeXBlLiR0b3VjaGVkKSAmJiBmb3JtLnJlc291cmNlVHlwZS4kaW52YWxpZCB9XCI+PGRpdiBjbGFzcz1jb2w+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm10LTQgcC0yIHRleHQtcHJpbWFyeSB0ZXh0LWNlbnRlclwiIG5nLWlmPVwicGFnaW5hdGlvbk9wdGlvbnMudG90YWxJdGVtQ291bnQ9PTAgJiYgZmlyc3RRdWVyeSAmJiAhcmVzb3VyY2VMb2FkaW5nXCI+PGkgY2xhc3M9XCJmYSBmYS1mb2xkZXItb3BlbiBmYS02eFwiPjwvaT48YnI+PHNwYW4gY2xhc3M9aDM+Tm8gY29kZXMgZm9yIHlvdXIgc2VhcmNoPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9bXQtMyBzdHlsZT1taW4taGVpZ2h0OjE5NXB4IG5nLXNob3c9XCIhZmlyc3RRdWVyeSB8fCByZXNvdXJjZVRhYmxlRGF0YS5sZW5ndGg+MFwiPjxkaXYgY2xhc3Mgbmctc2hvdz1cInJlc291cmNlVGFibGVEYXRhLmxlbmd0aD4wXCI+PGRpdiBuZy1pZj1mYWxzZT48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWdvdG9TdGF0ZSgpIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1zdWNjZXNzXCIgbmctZGlzYWJsZWQ9IXJlc291cmNlU2VsZWN0ZWQ+PHNwYW4gY2xhc3M9XCJmYSBmYS17e3Jlc291cmNlSWNvblNlbGVjdGVkfX1cIj48L3NwYW4+IEVkaXQge3tzZWxlY3RlZFJlc291cmNlVHlwZX19IGRlZmluaXRpb248L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2PjxkaXYgY2xhc3M9cm93IG5nLWlmPXJlc291cmNlTG9hZGluZyBuZy1jbGFzcz1cIntcXCdwcm9jZXNzaW5nLW92ZXJsYXlcXCc6cmVzb3VyY2VMb2FkaW5nfVwiIGt0LXByb2Nlc3NpbmctYW5pbWF0aW9uIHNob3ctbXNnPXRydWUgc2hvdy1hcy1jYXJkPXRydWUgbWVzc2FnZT1cIkxvYWRpbmcgY29kZXMuLi5cIj48L2Rpdj48ZGl2IGNsYXNzPVwidGFibGUta2F0YWx5by13cmFwcGVyIHB0LTBcIiBuZy1pZj1zZWFyY2hJbml0aWF0ZWQgc2hvdy1hY3Rpb24tYnV0dG9ucz1zaG93VGFibGVBY3Rpb25zIGt0LXNtYXJ0LXRhYmxlIGt0LXJlZnJlc2gtZGF0YT1nZXRSZXNvdXJjZURlZihwYWdlTnVtYmVyLHBhZ2VTaXplKSBrdC1wcm9jZXNzLWFjdGlvbj1wcm9jZXNzVGFibGVBY3Rpb24oaXRlbSxhY3Rpb25JZCkgYWN0aW9uLWRlZmluaXRpb249YWN0aW9uRGVmIHBhcmFtZXRlcnM9c21QYXJhbXMgaXRlbXMtb24tcGFnZT1yZXN1bHRzLnBhZ2VTaXplIGluaXRpYWwtcGFnZT1jdXJyZW50UGFnZSByb3ctc2VsZWN0ZWQtY2hhbmdlPXJvd1NlbGVjdGlvbkNoYW5nZWQoaXRlbSk+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JtPjxkaXYgY2xhc3M9XCJjb2wtMjQgcC0xIG0tMVwiPjxzcGFuIGNsYXNzPWg1Pjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPW10LTI+PGRpdiBrdC1jb2Rlcy1kZXRhaWwtbGlzdCBjbGFzcz48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDRfc2V0dGluZ3MvYW5ndWxhclRlbXBsYXRlcy9jb2Rlc0RldGFpbHMuaHRtbCcsJzxmb3JtIG5nLXN1Ym1pdD1zYXZlT3JnYW5pc2F0aW9uKGZvcm0uJHZhbGlkKSBpZD1zYXZlRm9ybSBuYW1lPWZvcm0gY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYgY2xhc3M9dGV4dC1jZW50ZXI+PGgzPk9yZ2FuaXNhdGlvbiBkZXRhaWxzPC9oMz48L2Rpdj48aHI+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ub3JnYW5pc2F0aW9uTmFtZS4kdG91Y2hlZCkgJiYgZm9ybS5vcmdhbmlzYXRpb25OYW1lLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLXNtLTIgZm9yPW9yZ2FuaXNhdGlvbk5hbWU+T3JnYW5pc2F0aW9uIG5hbWU8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLXNtLTY+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1vcmdhbmlzYXRpb24ub3JnYW5pc2F0aW9uTmFtZSBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1vcmdhbmlzYXRpb25OYW1lIG5hbWU9b3JnYW5pc2F0aW9uTmFtZSBwbGFjZWhvbGRlcj1cIk9yZ2FuaXNhdGlvbiBuYW1lXCI+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5vcmdhbmlzYXRpb25OYW1lLiR0b3VjaGVkKSAmJiBmb3JtLm9yZ2FuaXNhdGlvbk5hbWUuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIG9yZ2FuaXNhdGlvbiBuYW1lPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLm9yZ2FuaXNhdGlvbkRlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtLm9yZ2FuaXNhdGlvbkRlc2NyaXB0aW9uLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLXNtLTIgZm9yPW9yZ2FuaXNhdGlvbkRlc2NyaXB0aW9uPk9yZ2FuaXNhdGlvbiBkZXNjcmlwdGlvbjwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtc20tNj48dGV4dGFyZWEgbmctbW9kZWw9b3JnYW5pc2F0aW9uLm9yZ2FuaXNhdGlvbkRlc2NyaXB0aW9uIG5hbWU9b3JnYW5pc2F0aW9uRGVzY3JpcHRpb24gbmctcmVxdWlyZWQ9dHJ1ZSBuZy1taW4tbGVuZ3RoPTIwIGNsYXNzPWZvcm0tY29udHJvbD48L3RleHRhcmVhPjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ub3JnYW5pc2F0aW9uRGVzY3JpcHRpb24uJHRvdWNoZWQpICYmIGZvcm0ub3JnYW5pc2F0aW9uRGVzY3JpcHRpb24uJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIG9yZ2FuaXNhdGlvbiBkZXNjcmlwdGlvbihtaW4gMjAgY2hhcnMpLjwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5vcmdhbmlzYXRpb25UeXBlLiR0b3VjaGVkKSAmJiBmb3JtLm9yZ2FuaXNhdGlvblR5cGUuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtc20tMiBmb3I9b3JnYW5pc2F0aW9uVHlwZT5PcmdhbmlzYXRpb24gdHlwZTwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtc20tNj48dWktc2VsZWN0IG5nLW1vZGVsPW9yZ2FuaXNhdGlvbi5PcmdUeXBlIG5nLWRpc2FibGVkPWRpc2FibGVkIG5hbWU9b3JnYW5pc2F0aW9uVHlwZSBuZy1yZXF1aXJlZD10cnVlIHJlc2V0LXNlYXJjaC1pbnB1dD1mYWxzZT48dWktc2VsZWN0LW1hdGNoIHBsYWNlaG9sZGVyPVwiU2VhcmNoIG9yIHNlbGVjdCBvcmdhbmlzYXRpb24gdHlwZS4uLlwiPjxzcGFuPnt7JHNlbGVjdC5zZWxlY3RlZC5uYW1lfX08L3NwYW4+IDxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGluayBmbG9hdC1yaWdodFwiIG5nLWNsaWNrPVwiY2xlYXIoJGV2ZW50LCAkc2VsZWN0KVwiPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+PC9hPjwvdWktc2VsZWN0LW1hdGNoPjx1aS1zZWxlY3QtY2hvaWNlcyByZXBlYXQ9XCJydCBpbiAob3JnYW5pc2F0aW9uVHlwZUxpc3QgfCBmaWx0ZXI6IHsgbmFtZTogJHNlbGVjdC5zZWFyY2ggfSkgdHJhY2sgYnkgcnQuaWRcIiByZWZyZXNoPXJlZnJlc2hSZXN1bHRzKCRzZWxlY3QpIHJlZnJlc2gtZGVsYXk9MD48c3Bhbj57e3J0Lm5hbWV9fTwvc3Bhbj48L3VpLXNlbGVjdC1jaG9pY2VzPjwvdWktc2VsZWN0PjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ub3JnYW5pc2F0aW9uVHlwZS4kdG91Y2hlZCkgJiYgZm9ybS5vcmdhbmlzYXRpb25UeXBlLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5TZWxlY3Qgb3JnYW5pc2F0aW9uIHR5cGU8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ub3JnYW5pc2F0aW9uVHlwZS4kdG91Y2hlZCkgJiYgZm9ybS5vcmdhbmlzYXRpb25UeXBlLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLXNtLTIgZm9yPWNvdW50cnk+Q291bnRyeTwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtc20tNj48dWktc2VsZWN0IG5nLW1vZGVsPW9yZ2FuaXNhdGlvbi5vcmdhbmlzYXRpb25jb3VudHJ5IG5nLWRpc2FibGVkPWRpc2FibGVkIG5hbWU9Y291bnRyeSBuZy1yZXF1aXJlZD10cnVlIHJlc2V0LXNlYXJjaC1pbnB1dD1mYWxzZT48dWktc2VsZWN0LW1hdGNoIHBsYWNlaG9sZGVyPVwiU2VhcmNoIG9yIHNlbGVjdCBvcmdhbmlzYXRpb24gdHlwZS4uLlwiPjxzcGFuPnt7JHNlbGVjdC5zZWxlY3RlZC5uYW1lfX08L3NwYW4+IDxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGluayBmbG9hdC1yaWdodFwiIG5nLWNsaWNrPVwiY2xlYXIoJGV2ZW50LCAkc2VsZWN0KVwiPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+PC9hPjwvdWktc2VsZWN0LW1hdGNoPjx1aS1zZWxlY3QtY2hvaWNlcyByZXBlYXQ9XCJydCBpbiAob3JnYW5pc2F0aW9uVHlwZUxpc3QgfCBmaWx0ZXI6IHsgbmFtZTogJHNlbGVjdC5zZWFyY2ggfSkgdHJhY2sgYnkgcnQuaWRcIiByZWZyZXNoPXJlZnJlc2hSZXN1bHRzKCRzZWxlY3QpIHJlZnJlc2gtZGVsYXk9MD48c3Bhbj57e3J0Lm5hbWV9fTwvc3Bhbj48L3VpLXNlbGVjdC1jaG9pY2VzPjwvdWktc2VsZWN0PjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ub3JnYW5pc2F0aW9uVHlwZS4kdG91Y2hlZCkgJiYgZm9ybS5vcmdhbmlzYXRpb25UeXBlLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5TZWxlY3Qgb3JnYW5pc2F0aW9uIHR5cGU8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uaW5kdXN0cnkuJHRvdWNoZWQpICYmIGZvcm0uaW5kdXN0cnkuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtc20tMiBmb3I9aW5kdXN0cnk+SW5kdXN0cnk8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLXNtLTY+PHVpLXNlbGVjdCBuZy1tb2RlbD1vcmdhbmlzYXRpb24ub3JnYW5pc2F0aW9uU3RhdHVzIG5nLWRpc2FibGVkPWRpc2FibGVkIG5hbWU9aW5kdXN0cnkgbmctcmVxdWlyZWQ9dHJ1ZSByZXNldC1zZWFyY2gtaW5wdXQ9ZmFsc2U+PHVpLXNlbGVjdC1tYXRjaCBwbGFjZWhvbGRlcj1cIlNlYXJjaCBvciBzZWxlY3Qgb3JnYW5pc2F0aW9uIGluZHVzdHJ5Li4uXCI+PHNwYW4+e3skc2VsZWN0LnNlbGVjdGVkLm5hbWV9fTwvc3Bhbj4gPGEgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saW5rIGZsb2F0LXJpZ2h0XCIgbmctY2xpY2s9XCJjbGVhcigkZXZlbnQsICRzZWxlY3QpXCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2E+PC91aS1zZWxlY3QtbWF0Y2g+PHVpLXNlbGVjdC1jaG9pY2VzIHJlcGVhdD1cImluZCBpbiAoaW5kdXN0cnlMaXN0IHwgZmlsdGVyOiB7IG5hbWU6ICRzZWxlY3Quc2VhcmNoIH0pIHRyYWNrIGJ5IGluZC5pZFwiIHJlZnJlc2g9cmVmcmVzaFJlc3VsdHMoJHNlbGVjdCkgcmVmcmVzaC1kZWxheT0wPjxzcGFuPnt7aW5kLm5hbWV9fTwvc3Bhbj48L3VpLXNlbGVjdC1jaG9pY2VzPjwvdWktc2VsZWN0PjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uaW5kdXN0cnkuJHRvdWNoZWQpICYmIGZvcm0uaW5kdXN0cnkuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPlNlbGVjdCBpbmR1c3RyeTwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5vcmdhbmlzYXRpb25TdGF0dXMuJHRvdWNoZWQpICYmIGZvcm0ub3JnYW5pc2F0aW9uU3RhdHVzLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLXNtLTIgZm9yPW9yZ2FuaXNhdGlvblN0YXR1cz5TdGF0dXM8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLXNtLTY+PHVpLXNlbGVjdCBuZy1tb2RlbD1vcmdhbmlzYXRpb24ub3JnYW5pc2F0aW9uU3RhdHVzIG5nLWRpc2FibGVkPWRpc2FibGVkIG5hbWU9b3JnYW5pc2F0aW9uU3RhdHVzIG5nLXJlcXVpcmVkPXRydWUgcmVzZXQtc2VhcmNoLWlucHV0PWZhbHNlPjx1aS1zZWxlY3QtbWF0Y2ggcGxhY2Vob2xkZXI9XCJTZWFyY2ggb3Igc2VsZWN0IG9yZ2FuaXNhdGlvbiBzdGF0dXMuLi5cIj48c3Bhbj57eyRzZWxlY3Quc2VsZWN0ZWQubmFtZX19PC9zcGFuPiA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmsgZmxvYXQtcmlnaHRcIiBuZy1jbGljaz1cImNsZWFyKCRldmVudCwgJHNlbGVjdClcIj48aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPjwvYT48L3VpLXNlbGVjdC1tYXRjaD48dWktc2VsZWN0LWNob2ljZXMgcmVwZWF0PVwib3MgaW4gKG9yZ2FuaXNhdGlvblN0YXR1c0xpc3QgfCBmaWx0ZXI6IHsgbmFtZTogJHNlbGVjdC5zZWFyY2ggfSkgdHJhY2sgYnkgcnMuaWRcIiByZWZyZXNoPXJlZnJlc2hSZXN1bHRzKCRzZWxlY3QpIHJlZnJlc2gtZGVsYXk9MD48c3Bhbj57e29zLm5hbWV9fTwvc3Bhbj48L3VpLXNlbGVjdC1jaG9pY2VzPjwvdWktc2VsZWN0PjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ub3JnYW5pc2F0aW9uU3RhdHVzLiR0b3VjaGVkKSAmJiBmb3JtLm9yZ2FuaXNhdGlvblN0YXR1cy4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+U2VsZWN0IG9yZ2FuaXNhdGlvbiBzdGF0dXM8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb250cm9sLWdyb3VwPjxidXR0b24gdHlwZT1zdWJtaXQgaWQ9Y2xlYXJCdG4gbmctZGlzYWJsZWQ9Zm9ybS4kaW52YWxpZCBjbGFzcz1cImJ0biBidG4tbGlnaHRcIj48c3BhbiBjbGFzcz1cImZhIGZhLXNhdmVcIj48L3NwYW4+Jm5ic3AgU2F2ZSBvcmdhbmlzYXRpb248L2J1dHRvbj48YnI+PGJyPjwvZGl2PjwvZm9ybT4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDRfc2V0dGluZ3MvYW5ndWxhclRlbXBsYXRlcy9jb2Rlc0VkaXQuaHRtbCcsJzxkaXYgY2xhc3M9Y2FyZD48ZGl2IGNsYXNzPXRleHQtY2VudGVyPjxoMz5FZGl0IGNvZGU8L2gzPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y2FyZD48Zm9ybSBuZy1zdWJtaXQ9c2F2ZUNvZGUoZm9ybS4kdmFsaWQpIGlkPXNhdmVGb3JtIG5hbWU9Zm9ybSBjbGFzcz1mb3JtLWhvcml6b250YWwgcm9sZT1mb3JtIG5vdmFsaWRhdGU+PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcm93IG1sLTJcIiBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvZGVJZC4kdG91Y2hlZCkgJiYgZm9ybS5jb2RlSWQuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtbGctOCBmb3I9Y29kZUlkPkNvZGUgSUQ8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTY+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1Db2RlSGVhZC5pZCBuZy1yZXF1aXJlZD10cnVlIG5nLWRpc2FibGVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPWNvZGVJZCBuYW1lPWNvZGVJZCBwbGFjZWhvbGRlcj1cIkNvZGUgSURcIj48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvZGVJZC4kdG91Y2hlZCkgJiYgZm9ybS5jb2RlSWQuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIGNvZGUgaWQ8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcm93IG1sLTJcIiBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvZGVOYW1lLiR0b3VjaGVkKSAmJiBmb3JtLmNvZGVOYW1lLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTggZm9yPWNvZGVOYW1lPkNvZGUgbmFtZTwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctNj48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPUNvZGVIZWFkLkNvZGVzSGVhZExhbmdbMF0uQ29kZU5hbWUgbmctcmVxdWlyZWQ9dHJ1ZSBjbGFzcz1mb3JtLWNvbnRyb2wgaWQ9Y29kZU5hbWUgbmFtZT1jb2RlTmFtZSBwbGFjZWhvbGRlcj1cIkNvZGUgbmFtZVwiPjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uY29kZU5hbWUuJHRvdWNoZWQpICYmIGZvcm0uY29kZU5hbWUuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIGNvZGUgbmFtZTwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCByb3cgbWwtMlwiIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uQ29kZUhlYWROYW1lLiR0b3VjaGVkKSAmJiBmb3JtLkNvZGVIZWFkTmFtZS4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1sZy04IGZvcj1jb2RlSGVhZE5hbWU+Q29kZSB1bmlxdWUgaWRlbnRpZmllcjwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctNj48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPUNvZGVIZWFkLkNvZGVIZWFkTmFtZSBuZy1yZXF1aXJlZD1mYWxzZSBjbGFzcz1mb3JtLWNvbnRyb2wgaWQ9Y29kZUhlYWROYW1lIG5hbWU9Y29kZUhlYWROYW1lIHBsYWNlaG9sZGVyPVwiQ29kZSB1bmlxdWUgaWRlbnRpZmllclwiPjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uY29kZUhlYWROYW1lLiR0b3VjaGVkKSAmJiBmb3JtLmNvZGVIZWFkTmFtZS4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIgdW5pcXVlIGlkZW50aWZpZXIgKGFueSB0ZXh0IHVwIHRvIDI1NSBjaGFyYWN0ZXJzKTwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCByb3cgbWwtMlwiIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uY29kZURlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtLmNvZGVEZXNjcmlwdGlvbi4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1sZy04IGZvcj1jb2RlRGVzY3JpcHRpb24+Q29kZSBkZXNjcmlwdGlvbjwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctNj48dGV4dGFyZWEgbmctbW9kZWw9Q29kZUhlYWQuQ29kZXNIZWFkTGFuZ1swXS5EZXNjcmlwdGlvbiBuYW1lPWNvZGVEZXNjcmlwdGlvbiBuZy1yZXF1aXJlZD10cnVlIG5nLW1pbi1sZW5ndGg9MjAgY2xhc3M9Zm9ybS1jb250cm9sPjwvdGV4dGFyZWE+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5jb2RlRGVzY3JpcHRpb24uJHRvdWNoZWQpICYmIGZvcm0uY29kZURlc2NyaXB0aW9uLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5FbnRlciBjb2RlIGRlc2NyaXB0aW9uKG1pbiAyMCBjaGFycykuPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHJvdyBtbC0yXCIgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5jb2RlVHlwZS4kdG91Y2hlZCkgJiYgZm9ybS5jb2RlVHlwZS4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1sZy04IGZvcj1jb2RlVHlwZT5Db2RlIHR5cGU8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTY+PHVpLXNlbGVjdCBuZy1tb2RlbD1Db2RlSGVhZC5Db2RlVHlwZSBuZy1kaXNhYmxlZD1kaXNhYmxlZCBuYW1lPWNvZGVUeXBlIG5nLXJlcXVpcmVkPXRydWUgcmVzZXQtc2VhcmNoLWlucHV0PWZhbHNlPjx1aS1zZWxlY3QtbWF0Y2ggY2xhc3M9dWktc2VsZWN0LW1hdGNoIHBsYWNlaG9sZGVyPVwiU2VhcmNoIG9yIHNlbGVjdCBjb2RlIHR5cGUuLi5cIj48c3Bhbj57eyRzZWxlY3Quc2VsZWN0ZWQubmFtZX19IDxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGluayBwLTBcIiBuZy1jbGljaz1cImNsZWFyKCRldmVudCwgJHNlbGVjdClcIj48aSBjbGFzcz1cIm1sLTMgZmEgZmEtdGltZXMgZmxvYXQtcmlnaHRcIj48L2k+PC9hPjwvc3Bhbj48L3VpLXNlbGVjdC1tYXRjaD48dWktc2VsZWN0LWNob2ljZXMgY2xhc3M9dWktc2VsZWN0LWNob2ljZXMgcmVwZWF0PVwiY3QgaW4gKGNvZGVUeXBlTGlzdCB8IGZpbHRlcjogeyBuYW1lOiAkc2VsZWN0LnNlYXJjaCB9KSB0cmFjayBieSBjdC5pZFwiIHJlZnJlc2g9cmVmcmVzaFJlc3VsdHMoJHNlbGVjdCkgcmVmcmVzaC1kZWxheT0wPjxzcGFuIGNsYXNzPXAtMD57e2N0Lm5hbWV9fTwvc3Bhbj48L3VpLXNlbGVjdC1jaG9pY2VzPjwvdWktc2VsZWN0PjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uY29kZVR5cGUuJHRvdWNoZWQpICYmIGZvcm0uY29kZVR5cGUuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPlNlbGVjdCBjb2RlIHR5cGU8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcm93IG1sLTJcIiBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmxhbmcuJHRvdWNoZWQpICYmIGZvcm0ubGFuZy4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1sZy04IGZvcj1sYW5nPkxhbmd1YWdlPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1sZy02Pjx1aS1zZWxlY3QgbmctbW9kZWw9Q29kZUhlYWQuQ29kZXNIZWFkTGFuZ1swXS5MYW5nIG5nLWRpc2FibGVkPWRpc2FibGVkIG5hbWU9bGFuZyBuZy1yZXF1aXJlZD10cnVlIHJlc2V0LXNlYXJjaC1pbnB1dD1mYWxzZT48dWktc2VsZWN0LW1hdGNoIGNsYXNzPXVpLXNlbGVjdC1tYXRjaCBwbGFjZWhvbGRlcj1cIlNlYXJjaCBvciBzZWxlY3QgbGFuZ3VhZ2UuLi5cIj48c3BhbiBjbGFzcz1wLTA+e3skc2VsZWN0LnNlbGVjdGVkLm5hbWV9fSA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmsgcC0wXCIgbmctY2xpY2s9XCJjbGVhcigkZXZlbnQsICRzZWxlY3QpXCI+PGkgY2xhc3M9XCJtbC0zIGZhIGZhLXRpbWVzIGZsb2F0LXJpZ2h0XCI+PC9pPjwvYT48L3NwYW4+PC91aS1zZWxlY3QtbWF0Y2g+PHVpLXNlbGVjdC1jaG9pY2VzIGNsYXNzPXVpLXNlbGVjdC1jaG9pY2VzIHJlcGVhdD1cImNsIGluIChjb2RlTGFuZ3VhZ2VMaXN0IHwgZmlsdGVyOiB7IG5hbWU6ICRzZWxlY3Quc2VhcmNoIH0pIHRyYWNrIGJ5ICRpbmRleFwiIHJlZnJlc2g9cmVmcmVzaFJlc3VsdHMoJHNlbGVjdCkgcmVmcmVzaC1kZWxheT0wPjxzcGFuPnt7Y2wubmFtZX19PC9zcGFuPjwvdWktc2VsZWN0LWNob2ljZXM+PC91aS1zZWxlY3Q+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5sYW5nLiR0b3VjaGVkKSAmJiBmb3JtLmxhbmcuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPlNlbGVjdCBsYW5ndWFnZTwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCByb3cgbWwtMlwiIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uc3RhdHVzLiR0b3VjaGVkKSAmJiBmb3JtLnN0YXR1cy4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1sZy04IGZvcj1sYW5nPlN0YXR1czwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctNj48dWktc2VsZWN0IG5nLW1vZGVsPUNvZGVIZWFkLlN0YXR1cyBuZy1kaXNhYmxlZD1kaXNhYmxlZCBuYW1lPXN0YXR1cyBuZy1yZXF1aXJlZD10cnVlIHJlc2V0LXNlYXJjaC1pbnB1dD1mYWxzZT48dWktc2VsZWN0LW1hdGNoIGNsYXNzPXVpLXNlbGVjdC1tYXRjaCBwbGFjZWhvbGRlcj1cIlNlYXJjaCBvciBzZWxlY3Qgc3RhdHVzLi4uXCI+PHNwYW4gY2xhc3M9cC0wPnt7JHNlbGVjdC5zZWxlY3RlZC5uYW1lfX0gPGEgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saW5rIHAtMFwiIG5nLWNsaWNrPVwiY2xlYXIoJGV2ZW50LCAkc2VsZWN0KVwiPjxpIGNsYXNzPVwibWwtMyBmYSBmYS10aW1lcyBmbG9hdC1yaWdodFwiPjwvaT48L2E+PC9zcGFuPjwvdWktc2VsZWN0LW1hdGNoPjx1aS1zZWxlY3QtY2hvaWNlcyBjbGFzcz11aS1zZWxlY3QtY2hvaWNlcyByZXBlYXQ9XCJjcyBpbiAoY29kZVN0YXR1c0xpc3QgfCBmaWx0ZXI6IHsgbmFtZTogJHNlbGVjdC5zZWFyY2ggfSkgdHJhY2sgYnkgY3MuaWRcIiByZWZyZXNoPXJlZnJlc2hSZXN1bHRzKCRzZWxlY3QpIHJlZnJlc2gtZGVsYXk9MD48c3Bhbj57e2NzLm5hbWV9fTwvc3Bhbj48L3VpLXNlbGVjdC1jaG9pY2VzPjwvdWktc2VsZWN0PjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uc3RhdHVzLiR0b3VjaGVkKSAmJiBmb3JtLnN0YXR1cy4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+U2VsZWN0IHN0YXR1czwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCByb3cgbWwtMlwiPjxsYWJlbCBjbGFzcz1jb2wtbGctOCBmb3I9bGFuZz5Vc2VyIGdlbmVyYXRlZCBpZDwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctNj48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1jaGVja2JveC16b29tLWxhcmdlIG5nLW1vZGVsPUNvZGVIZWFkLlVzZXJHZW5lcmF0ZWRJZCBuYW1lPXVzZXJHZW5lcmF0ZWRJZCBuZy1yZXF1aXJlZD1mYWxzZT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29udHJvbC1ncm91cCByb3cgbWwtMlwiPjxidXR0b24gdHlwZT1zdWJtaXQgaWQ9Y2xlYXJCdG4gbmctZGlzYWJsZWQ9Zm9ybS4kaW52YWxpZCBjbGFzcz1cImJ0biBidG4tbGlnaHRcIj48c3BhbiBjbGFzcz1cImZhIGZhLXNhdmVcIj48L3NwYW4+Jm5ic3AgU2F2ZSBjb2RlPC9idXR0b24+PC9kaXY+PC9mb3JtPjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwNF9zZXR0aW5ncy9hbmd1bGFyVGVtcGxhdGVzL2NvZGVzTWVudS5odG1sJywnPGRpdj48ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiPjxkaXYgY2xhc3M9cGFuZWwtaGVhZGluZz48c3BhbiBjbGFzcz1cImZhIGZhLWJhcnNcIj4mbmJzcCBNZW51PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M+PHVsIGNsYXNzPVwibmF2IG5hdi1waWxscyBuYXYtc3RhY2tlZFwiPjxsaSBuZy1jbGFzcz1cImFjdGl2ZUxpbmtTaWRlbWVudShcXCdhcHAubmF2YmFyLmNvZGVzLmxpc3RcXCcpXCI+PGEgdWktc3JlZj1hcHAubmF2YmFyLmNvZGVzLmxpc3Q+PGkgY2xhc3M9XCJmYSBmYS11bml2ZXJzaXR5XCI+Jm5ic3A7IENvZGVzPC9pPjwvYT48L2xpPjxsaSBuZy1jbGFzcz1cImFjdGl2ZUxpbmtTaWRlbWVudShcXCdhcHAubmF2YmFyLmNvZGVzLm5ld1xcJylcIj48YSB1aS1zcmVmPWFwcC5uYXZiYXIuY29kZXMubmV3PjxpIGNsYXNzPVwiZmEgZmEtcGx1c1wiPiZuYnNwOyBOZXcgY29kZTwvaT48L2E+PC9saT48L3VsPjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwNF9zZXR0aW5ncy9hbmd1bGFyVGVtcGxhdGVzL2NvZGVzTmV3Lmh0bWwnLCc8ZGl2IGNsYXNzPVwiY2FyZCBteS0xXCI+PGRpdiBjbGFzcz10ZXh0LWNlbnRlcj48ZGl2IGNsYXNzPVwiaDQgbXktMlwiPkVudGVyIG5ldyBjb2RlPC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQgcC0yXCI+PGRpdiBjbGFzcz1cInJvdyBwLTBcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTEwIHAtNFwiIG5nLWNsYXNzPVwie1xcJ2NvbC1sZy02XFwnOkNvZGVIZWFkLmlkPjB9XCI+PGZvcm0gbmctc3VibWl0PXNhdmVOZXdDb2RlKGZvcm0uJHZhbGlkKSBpZD1mb3JtIG5hbWU9Zm9ybSBjbGFzcz1cIm5lZWRzLXZhbGlkYXRpb24gZm9ybS1ob3Jpem9udGFsXCIgcm9sZT1mb3JtIG5vdmFsaWRhdGU+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWlmPVwiQ29kZUhlYWQuaWQ+MFwiPjxsYWJlbCBjbGFzcyBmb3I9Y29kZU5hbWU+Q29kZSBpZDwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9Q29kZUhlYWQuaWQgbmctZGlzYWJsZWQ9dHJ1ZSBjbGFzcz1mb3JtLWNvbnRyb2wgaWQ9Y29kZUlkIG5hbWU9Y29kZUlkIHBsYWNlaG9sZGVyPVwiQ29kZSBpZFwiPjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZCB3YXMtdmFsaWRhdGVkXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvZGVOYW1lLiR0b3VjaGVkKSAmJiBmb3JtLmNvZGVOYW1lLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9XCJmb3I9XCIgY29kZW5hbWVcIiBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uY29kZU5hbWUuJHRvdWNoZWQpICYmIGZvcm0uY29kZU5hbWUuJGludmFsaWR9XCI+Q29kZSBuYW1lPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1Db2RlSGVhZC5Db2RlTmFtZSBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1jb2RlTmFtZSBuYW1lPWNvZGVOYW1lIHBsYWNlaG9sZGVyPVwiQ29kZSBuYW1lXCI+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5jb2RlTmFtZS4kdG91Y2hlZCkgJiYgZm9ybS5jb2RlTmFtZS4kaW52YWxpZFwiIG5nLWNsYXNzPVwie1xcJ2ludmFsaWQtZmVlZGJhY2tcXCc6KGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvZGVOYW1lLiR0b3VjaGVkKSAmJiBmb3JtLmNvZGVOYW1lLiRpbnZhbGlkfVwiPkVudGVyIGNvZGUgbmFtZTwvcD48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2lzLWludmFsaWQgd2FzLXZhbGlkYXRlZFxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5Db2RlSGVhZE5hbWUuJHRvdWNoZWQpICYmIGZvcm0uQ29kZUhlYWROYW1lLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3MgZm9yPWNvZGVIZWFkTmFtZSBuZy1jbGFzcz1cIntcXCd0ZXh0LWRhbmdlclxcJzooZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uQ29kZUhlYWROYW1lLiR0b3VjaGVkKSAmJiBmb3JtLkNvZGVIZWFkTmFtZS4kaW52YWxpZH1cIj5Db2RlIGhhc2h0YWc8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPUNvZGVIZWFkLkNvZGVIZWFkTmFtZSBuZy1yZXF1aXJlZD1mYWxzZSBjbGFzcz1mb3JtLWNvbnRyb2wgaWQ9Y29kZUhlYWROYW1lIG5hbWU9Y29kZUhlYWROYW1lIHBsYWNlaG9sZGVyPVwiQ29kZSB1bmlxdWUgaWRlbnRpZmllclwiPjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uQ29kZUhlYWROYW1lLiR0b3VjaGVkKSAmJiBmb3JtLkNvZGVIZWFkTmFtZS4kaW52YWxpZFwiIG5nLWNsYXNzPVwie1xcJ2QtYmxvY2sgaW52YWxpZC1mZWVkYmFja1xcJzooZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uQ29kZUhlYWROYW1lLiR0b3VjaGVkKSAmJiBmb3JtLkNvZGVIZWFkTmFtZS4kaW52YWxpZH1cIj5FbnRlciB1bmlxdWUgaGFzaHRhZyAoYW55IHRleHQgdXAgdG8gMjU1IGNoYXJhY3RlcnMpPC9wPjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZCB3YXMtdmFsaWRhdGVkXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvZGVEZXNjcmlwdGlvbi4kdG91Y2hlZCB8fCBmb3JtLmNvZGVEZXNjcmlwdGlvbi4kZGlydHkpICYmIGZvcm0uY29kZURlc2NyaXB0aW9uLiRpbnZhbGlkLFxcJ2lzLXZhbGlkXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvZGVEZXNjcmlwdGlvbi4kdG91Y2hlZCB8fCBmb3JtLmNvZGVEZXNjcmlwdGlvbi4kZGlydHkpICYmIGZvcm0uY29kZURlc2NyaXB0aW9uLiR2YWxpZH1cIj48bGFiZWwgY2xhc3MgZm9yPWNvZGVEZXNjcmlwdGlvbiBuZy1jbGFzcz1cIntcXCd0ZXh0LWRhbmdlclxcJzooZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uY29kZURlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtLmNvZGVEZXNjcmlwdGlvbi4kaW52YWxpZH1cIj5Db2RlIGRlc2NyaXB0aW9uPC9sYWJlbD48ZGl2IGNsYXNzPjx0ZXh0YXJlYSBuZy1tb2RlbD1Db2RlSGVhZC5EZXNjcmlwdGlvbiBuYW1lPWNvZGVEZXNjcmlwdGlvbiBuZy1yZXF1aXJlZD10cnVlIG5nLW1pbi1sZW5ndGg9MjAgY2xhc3M9Zm9ybS1jb250cm9sPjwvdGV4dGFyZWE+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5jb2RlRGVzY3JpcHRpb24uJHRvdWNoZWQpICYmIGZvcm0uY29kZURlc2NyaXB0aW9uLiRpbnZhbGlkXCIgbmctY2xhc3M9XCJ7XFwnaW52YWxpZC1mZWVkYmFja1xcJzooZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uY29kZURlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtLmNvZGVEZXNjcmlwdGlvbi4kaW52YWxpZH1cIj5FbnRlciBjb2RlIGRlc2NyaXB0aW9uKG1pbiAyMCBjaGFycyk8L3A+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1jb2RlVHlwZUxpc3REb3dubG9hZGVkIGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2lzLWludmFsaWQgd2FzLXZhbGlkYXRlZFxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5jb2RlVHlwZS4kdG91Y2hlZCB8fCBmb3JtLmNvZGVUeXBlLiRkaXJ0eSkgJiYgZm9ybS5jb2RlVHlwZS4kaW52YWxpZCxcXCdpcy12YWxpZFxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5jb2RlVHlwZS4kdG91Y2hlZCB8fCBmb3JtLmNvZGVUeXBlLiRkaXJ0eSkgJiYgZm9ybS5jb2RlVHlwZS4kdmFsaWR9XCI+PGxhYmVsIGNsYXNzIGZvcj1jb2RlVHlwZSBuZy1jbGFzcz1cIntcXCd0ZXh0LWRhbmdlclxcJzooZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uY29kZVR5cGUuJHRvdWNoZWQpICYmIGZvcm0uY29kZVR5cGUuJGludmFsaWR9XCI+Q29kZSB0eXBlPC9sYWJlbD48a3QtZHJvcGRvd24tc3RhbmRhcmQgbmctbW9kZWw9Q29kZUhlYWQuQ29kZVR5cGUgc2VsZWN0ZWQtaXRlbXM9Q29kZUhlYWQuQ29kZVR5cGUgaXMtbXVsdGlwbGU9ZmFsc2UgbmFtZT1jb2RlVHlwZSByZXF1aXJlZD10cnVlIGRyb3Bkb3duLWl0ZW1zPWNvZGVUeXBlTGlzdCBkcm9wZG93bi1pZD1cIlxcJ2NvZGVUeXBlXFwnXCIgcGFyZW50LWZvcm0taWQ9XCJcXCdmb3JtXFwnXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWFyY2ggb3Igc2VsZWN0IGNvZGUgdHlwZVxcJ1wiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5jb2RlVHlwZS4kdG91Y2hlZCkgJiYgZm9ybS5jb2RlVHlwZS4kaW52YWxpZFwiIG5nLWNsYXNzPVwie1xcJ2QtYmxvY2sgaW52YWxpZC1mZWVkYmFja1xcJzooZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uY29kZVR5cGUuJHRvdWNoZWQpICYmIGZvcm0uY29kZVR5cGUuJGludmFsaWR9XCI+U2VsZWN0IGNvZGUgdHlwZTwvcD48L2Rpdj48ZGl2IGNsYXNzPVwicm93IHB5LTJcIj48ZGl2IGNsYXNzPVwiY29sLTIxIGZvcm0tZ3JvdXBcIj48bGFiZWwgY2xhc3MgZm9yPXVzZXJHZW5lcmF0ZWRJZD5Vc2VyIGdlbmVyYXRlZCBpZCA8aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cIm1sLTIgbXktMlwiIHN0eWxlPVwidHJhbnNmb3JtOiBzY2FsZSgxLjQpXCIgbmctbW9kZWw9Q29kZUhlYWQuVXNlckdlbmVyYXRlZElkIG5hbWU9dXNlckdlbmVyYXRlZElkIG5nLXJlcXVpcmVkPWZhbHNlPjwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0zIGZvcm0tZ3JvdXBcIj48bGFiZWwgY2xhc3MgZm9yPWFjdGl2ZT5BY3RpdmUgPGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJtbC0yIG15LTJcIiBzdHlsZT1cInRyYW5zZm9ybTogc2NhbGUoMS40KVwiIG5nLW1vZGVsPUNvZGVIZWFkLkFjdGl2ZSBuYW1lPWFjdGl2ZSBuZy1yZXF1aXJlZD1mYWxzZT48L2xhYmVsPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb250cm9sLWdyb3VwIG1iLTJcIiBuZy1oaWRlPVwiQ29kZUhlYWQuaWQ+MFwiPjxidXR0b24gdHlwZT1zdWJtaXQgaWQ9Y2xlYXJCdG4gbmctZGlzYWJsZWQ9Zm9ybS4kaW52YWxpZCBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zdWNjZXNzXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1zYXZlIG1yLTJcIj48L3NwYW4+IFNhdmUgY29kZTwvYnV0dG9uPjwvZGl2PjwvZm9ybT48L2Rpdj48ZGl2IGNsYXNzPWNvbC0yPjwvZGl2PjxkaXYgY2xhc3M9Y29sLTEwPjxkaXYga3QtY29kZXMtZGV0YWlsLWVkaXQgY29kZS1pZD1Db2RlSGVhZC5pZCBjb2Rlcy1saXN0PWNvZGVzTGlzdCBjbGFzcz13LTEwMD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC0yPjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwNF9zZXR0aW5ncy9hbmd1bGFyVGVtcGxhdGVzL2NvbW11bml0eS5odG1sJywnPGRpdiBjbGFzcz1cImNhcmQgbXQtMSBwLTJcIj48Zm9ybSBuZy1zdWJtaXQ9c2F2ZU9yZ2FuaXNhdGlvbihmb3JtLiR2YWxpZCkgaWQ9c2F2ZUZvcm0gbmFtZT1mb3JtIGNsYXNzPWZvcm0taG9yaXpvbnRhbCByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcC0yIHRleHQtY2VudGVyIGJvcmRlci1ib3R0b20gbWItNFwiPjxzcGFuIGNsYXNzPWg1PkNvbW11bml0eSBpbmZvPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgbWItNFwiPjx1bCBjbGFzcz1cIm5hdiBuYXYtdGFicyBib3JkZXItMCBzaW1wbGUtdGFic1wiIGlkPW15VGFiIHJvbGU9dGFibGlzdD48bGkgY2xhc3M9XCJuYXYtaXRlbSBib2xkXCI+PGEgY2xhc3M9bmF2LWxpbmsgbmctY2xpY2s9XCJzaG93VGFiPTFcIiBuZy1jbGFzcz1cIntcXCdhY3RpdmUgc2hvd1xcJzpzaG93VGFiPT0xfVwiIGhyZWYgaWQ9aW5mb190YWIgZGF0YS10b2dnbGU9dGFiIHJvbGU9dGFiIGFyaWEtY29udHJvbHM9YWxsX2FwcHMgYXJpYS1zZWxlY3RlZD10cnVlPjxpIGNsYXNzPVwiZmEgZmEtaW5mbyBtci0yXCI+PC9pPiBCYXNpYyBpbmZvPC9hPjwvbGk+PGxpIGNsYXNzPVwibmF2LWl0ZW0gYm9sZFwiPjxhIGNsYXNzPW5hdi1saW5rIGlkPW15X3RhYiBuZy1jbGFzcz1cIntcXCdhY3RpdmUgc2hvd1xcJzpzaG93VGFiPT0yfVwiIG5nLWNsaWNrPVwic2hvd1RhYj0yXCIgaHJlZiBkYXRhLXRvZ2dsZT10YWIgcm9sZT10YWIgYXJpYS1jb250cm9scz1jcmVkaXRzIGFyaWEtc2VsZWN0ZWQ9ZmFsc2U+PGkgY2xhc3M9XCJmYXMgZmEtbW9uZXktYmlsbC13YXZlIG1yLTJcIj48L2k+IENyZWRpdHM8L2E+PC9saT48L3VsPjwvZGl2PjxkaXYgbmctaWY9XCJzaG93VGFiPT0xXCIgY2xhc3M9Y29sLWxnLTI0PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZCB3YXMtdmFsaWRhdGVkXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLm9yZ2FuaXNhdGlvbk5hbWUuJHRvdWNoZWQpICYmIGZvcm0ub3JnYW5pc2F0aW9uTmFtZS4kaW52YWxpZCB9XCI+PGxhYmVsIG5nLWNsYXNzPVwie1xcJ3RleHQtZGFuZ2VyXFwnOihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5vcmdhbmlzYXRpb25OYW1lLiR0b3VjaGVkKSAmJiBmb3JtLm9yZ2FuaXNhdGlvbk5hbWUuJGludmFsaWR9XCIgZm9yPW9yZ2FuaXNhdGlvbk5hbWU+Q29tbXVuaXR5IG5hbWU8L2xhYmVsPjxkaXYgY2xhc3M+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1vcmdhbmlzYXRpb24uTmFtZSBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1vcmdhbmlzYXRpb25OYW1lIG5hbWU9b3JnYW5pc2F0aW9uTmFtZSBwbGFjZWhvbGRlcj1cIk9yZ2FuaXNhdGlvbiBuYW1lXCI+PHAgbmctaWY9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ub3JnYW5pc2F0aW9uTmFtZS4kdG91Y2hlZCkgJiYgZm9ybS5vcmdhbmlzYXRpb25OYW1lLiRpbnZhbGlkXCIgbmctY2xhc3M9XCJ7XFwnaW52YWxpZC1mZWVkYmFja1xcJzooZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ub3JnYW5pc2F0aW9uTmFtZS4kdG91Y2hlZCkgJiYgZm9ybS5vcmdhbmlzYXRpb25OYW1lLiRpbnZhbGlkfVwiPkVudGVyIGNvbW11bml0eSBuYW1lPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZCB3YXMtdmFsaWRhdGVkXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLm9yZ2FuaXNhdGlvbkRlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtLm9yZ2FuaXNhdGlvbkRlc2NyaXB0aW9uLiRpbnZhbGlkIH1cIj48bGFiZWwgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLm9yZ2FuaXNhdGlvbkRlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtLm9yZ2FuaXNhdGlvbkRlc2NyaXB0aW9uLiRpbnZhbGlkIH1cIiBmb3I9b3JnYW5pc2F0aW9uRGVzY3JpcHRpb24+Q29tbXVuaXR5IGRlc2NyaXB0aW9uPC9sYWJlbD48ZGl2IGNsYXNzPjx0ZXh0YXJlYSBuZy1tb2RlbD1vcmdhbmlzYXRpb24uRGVzY3JpcHRpb24gbmFtZT1vcmdhbmlzYXRpb25EZXNjcmlwdGlvbiBuZy1yZXF1aXJlZD10cnVlIG5nLW1pbi1sZW5ndGg9MjAgY2xhc3M9Zm9ybS1jb250cm9sPjwvdGV4dGFyZWE+PHAgbmctaWY9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ub3JnYW5pc2F0aW9uRGVzY3JpcHRpb24uJHRvdWNoZWQpICYmIGZvcm0ub3JnYW5pc2F0aW9uRGVzY3JpcHRpb24uJGludmFsaWRcIiBuZy1jbGFzcz1cIntcXCdpbnZhbGlkLWZlZWRiYWNrXFwnOihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5vcmdhbmlzYXRpb25EZXNjcmlwdGlvbi4kdG91Y2hlZCkgJiYgZm9ybS5vcmdhbmlzYXRpb25EZXNjcmlwdGlvbi4kaW52YWxpZH1cIj5FbnRlciBjb21tdW5pdHkgZGVzY3JpcHRpb24obWluIDIwIGNoYXJzKS48L3A+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1mYWxzZSBjbGFzcz1cInJvdyBtLTAgbXktMVwiPjxkaXYgY2xhc3M9XCJjb2wtMjQgcC0wXCI+PGxhYmVsIGNsYXNzPW1iLTE+T3JnYW5pc2F0aW9uIHR5cGU8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9YnRuLWdyb3VwIHJvbGU9Z3JvdXAgYXJpYS1sYWJlbD1cIk1lbnUgdHlwZVwiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9XCJvcmdhbmlzYXRpb24uT3JnVHlwZT1cXCdGb3JQcm9maXRcXCdcIiBuZy1jbGFzcz1cIntcXCdhY3RpdmVcXCc6b3JnYW5pc2F0aW9uLk9yZ1R5cGU9PVxcJ0ZvclByb2ZpdFxcJ31cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeVwiPkZvciBwcm9maXQ8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cIm9yZ2FuaXNhdGlvbi5PcmdUeXBlPVxcJ05vblByb2ZpdFxcJ1wiIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpvcmdhbmlzYXRpb24uT3JnVHlwZT09XFwnTm9uUHJvZml0XFwnfVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5XCI+Tm9uIHByb2ZpdDwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZCB3YXMtdmFsaWRhdGVkXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnN0YXR1cy4kdG91Y2hlZCkgJiYgZm9ybS5zdGF0dXMuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1mb3JtLWNvbnRyb2wtbGFiZWwgZm9yPXN0YXR1cz5BY3RpdmUgPGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9XCJteS0yIG1sLTJcIiBzdHlsZT1cInRyYW5zZm9ybTogc2NhbGUoMS40KTtcIiBuYW1lPXN0YXR1cyBuZy1tb2RlbD1vcmdhbmlzYXRpb24uQWN0aXZlIG5nLWNoZWNrZWQ9b3JnYW5pc2F0aW9uLkFjdGl2ZT48L2xhYmVsPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJzaG93VGFiPT0xXCIgY2xhc3M9XCJjb2wtbGctMjQgbS0wIG15LTFcIj48ZGl2IGNsYXNzPjxidXR0b24gdHlwZT1zdWJtaXQgaWQ9Y2xlYXJCdG4gbmctZGlzYWJsZWQ9Zm9ybS4kaW52YWxpZCBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zdWNjZXNzXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1zYXZlIG1yLTJcIj48L3NwYW4+IFNhdmUgY29tbXVuaXR5IGluZm88L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwic2hvd1RhYj09MlwiIGNsYXNzPVwiY29sLWxnLTI0IG1iLTJcIj48ZGl2IGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgdy0yNVwiIHN0eWxlPVwidmVydGljYWwtYWxpZ246IHRvcDtcIj48ZGl2IGNsYXNzPVwidGV4dC1wcmltYXJ5IGJvbGRcIj48aSBjbGFzcz1cImZhIGZhLWRvbGxhci1zaWduIG1yLTJcIj48L2k+IEJhbGFuY2VzPC9kaXY+PGRpdiBuZy1yZXBlYXQ9XCJiYWwgaW4gYmFsYW5jZXMgdHJhY2sgYnkgYmFsLmNjeVwiIGNsYXNzPVwibXktMyBib2xkXCI+PGRpdj48c3BhbiBjbGFzcz57e2JhbC5hbXQudG9Mb2NhbGVTdHJpbmcoKX19PC9zcGFuPjxzcGFuIGNsYXNzPW1sLTIgc3R5bGU9XCJjb2xvcjogZGFya2dyYXk7XCI+e3tiYWwuY2N5fX08L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImQtaW5saW5lLWJsb2NrIHctNzVcIiBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiB0b3A7XCI+PGRpdiBjbGFzcz1cInRleHQtcHJpbWFyeSBib2xkXCI+PGkgY2xhc3M9XCJmYXMgZmEtY3JlZGl0LWNhcmQgbXItMlwiPjwvaT4gVHJhbnNhY3Rpb25zPC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtdC0zIG1iLTIgYm9sZCBib3JkZXItYm90dG9tXCI+PGRpdiBjbGFzcz1jb2wtMj5JRDwvZGl2PjxkaXYgY2xhc3M9Y29sLTI+QW1vdW50PC9kaXY+PGRpdiBjbGFzcz1jb2wtMz5DdXJyZW5jeTwvZGl2PjxkaXYgY2xhc3M9Y29sLTM+RGF0ZTwvZGl2PjxkaXYgY2xhc3M9Y29sLTEwPkRlc2NyaXB0aW9uPC9kaXY+PC9kaXY+PGRpdiBuZy1yZXBlYXQ9XCJ0ciBpbiB0cmFucyB0cmFjayBieSB0ci5pZFwiIGNsYXNzPVwicm93IG15LTFcIj48ZGl2IGNsYXNzPWNvbC0yPnt7dHIuaWR9fTwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMiB0ZXh0LXJpZ2h0XCIgbmctYmluZD10ci5hbXQudG9Mb2NhbGVTdHJpbmcoKT48L2Rpdj48ZGl2IGNsYXNzPWNvbC0zPnt7dHIuY2N5fX08L2Rpdj48ZGl2IGNsYXNzPWNvbC0zPnt7dHIudGRhdGV9fTwvZGl2PjxkaXYgY2xhc3M9Y29sLTEwPnt7dHIudGRlc2N9fTwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9ybT48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDRfc2V0dGluZ3MvYW5ndWxhclRlbXBsYXRlcy9jcmVhdGVOYXZiYXIuaHRtbCcsJzxmb3JtIG5nLXN1Ym1pdD1zYXZlTmF2YmFyKGZvcm0uJHZhbGlkKSBpZD1zYXZlRm9ybSBuYW1lPWZvcm0gY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYgY2xhc3M9dGV4dC1jZW50ZXI+PGgzPk5ldyBuYXZiYXI8L2gzPjwvZGl2Pjxocj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5uYW1lLiR0b3VjaGVkKSAmJiBmb3JtLm5hbWUuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtc20tMiBmb3I9bmFtZT5OYW1lPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1zbS02PjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9bWVudS5uYW1lIG5nLXJlcXVpcmVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPW5hbWUgbmFtZT1uYW1lIHBsYWNlaG9sZGVyPU5hbWU+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5uYW1lLiR0b3VjaGVkKSAmJiBmb3JtLm5hbWUuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIG5hbWU8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0udGFyZ2V0LiR0b3VjaGVkKSAmJiBmb3JtLnRhcmdldC4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1zbS0yIGZvcj10YXJnZXQ+VGFyZ2V0PC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1zbS02PjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9bWVudS50YXJnZXQgbmctcmVxdWlyZWQ9dHJ1ZSBjbGFzcz1mb3JtLWNvbnRyb2wgbmFtZT10YXJnZXQgcGxhY2Vob2xkZXI9VGFyZ2V0PjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0udGFyZ2V0LiR0b3VjaGVkKSAmJiBmb3JtLnRhcmdldC4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIgdGFyZ2V0PC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLm9yZ2FuaXNhdGlvbkRlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtLm9yZ2FuaXNhdGlvbkRlc2NyaXB0aW9uLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLXNtLTIgZm9yPW9yZ2FuaXNhdGlvbkRlc2NyaXB0aW9uPk9yZ2FuaXNhdGlvbiBkZXNjcmlwdGlvbjwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtc20tNj48dGV4dGFyZWEgbmctbW9kZWw9b3JnYW5pc2F0aW9uLm9yZ2FuaXNhdGlvbkRlc2NyaXB0aW9uIG5hbWU9b3JnYW5pc2F0aW9uRGVzY3JpcHRpb24gbmctcmVxdWlyZWQ9dHJ1ZSBuZy1taW4tbGVuZ3RoPTIwIGNsYXNzPWZvcm0tY29udHJvbD48L3RleHRhcmVhPjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ub3JnYW5pc2F0aW9uRGVzY3JpcHRpb24uJHRvdWNoZWQpICYmIGZvcm0ub3JnYW5pc2F0aW9uRGVzY3JpcHRpb24uJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIG9yZ2FuaXNhdGlvbiBkZXNjcmlwdGlvbihtaW4gMjAgY2hhcnMpLjwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5vcmdhbmlzYXRpb25UeXBlLiR0b3VjaGVkKSAmJiBmb3JtLm9yZ2FuaXNhdGlvblR5cGUuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtc20tMiBmb3I9b3JnYW5pc2F0aW9uVHlwZT5PcmdhbmlzYXRpb24gdHlwZTwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtc20tNj48dWktc2VsZWN0IG5nLW1vZGVsPW9yZ2FuaXNhdGlvbi5PcmdhbmlzYXRpb25UeXBlIG5nLWRpc2FibGVkPWRpc2FibGVkIG5hbWU9b3JnYW5pc2F0aW9uVHlwZSBuZy1yZXF1aXJlZD10cnVlIHJlc2V0LXNlYXJjaC1pbnB1dD1mYWxzZT48dWktc2VsZWN0LW1hdGNoIGNsYXNzPXVpLXNlbGVjdC1tYXRjaCBwbGFjZWhvbGRlcj1cIlNlYXJjaCBvciBzZWxlY3Qgb3JnYW5pc2F0aW9uIHR5cGUuLi5cIj48c3Bhbj57eyRzZWxlY3Quc2VsZWN0ZWQubmFtZX19IDxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlua1wiIG5nLWNsaWNrPVwiY2xlYXIoJGV2ZW50LCAkc2VsZWN0KVwiPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+PC9hPjwvc3Bhbj48L3VpLXNlbGVjdC1tYXRjaD48dWktc2VsZWN0LWNob2ljZXMgY2xhc3M9dWktc2VsZWN0LWNob2ljZXMgcmVwZWF0PVwib3JnVHlwZSBpbiAob3JnYW5pc2F0aW9uVHlwZUxpc3QgfCBmaWx0ZXI6IHsgbmFtZTogJHNlbGVjdC5zZWFyY2ggfSkgdHJhY2sgYnkgb3JnVHlwZS5pZFwiIHJlZnJlc2g9cmVmcmVzaFJlc3VsdHMoJHNlbGVjdCkgcmVmcmVzaC1kZWxheT0wPjxzcGFuPnt7b3JnVHlwZS5uYW1lfX08L3NwYW4+PC91aS1zZWxlY3QtY2hvaWNlcz48L3VpLXNlbGVjdD48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLm9yZ2FuaXNhdGlvblR5cGUuJHRvdWNoZWQpICYmIGZvcm0ub3JnYW5pc2F0aW9uVHlwZS4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+U2VsZWN0IG9yZ2FuaXNhdGlvbiB0eXBlPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvdW50cnkuJHRvdWNoZWQpICYmIGZvcm0uY291bnRyeS4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1zbS0yIGZvcj1jb3VudHJ5PkNvdW50cnk8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLXNtLTY+PHVpLXNlbGVjdCBuZy1tb2RlbD1vcmdhbmlzYXRpb24uQ291bnRyeSBuZy1kaXNhYmxlZD1kaXNhYmxlZCBuYW1lPWNvdW50cnkgbmctcmVxdWlyZWQ9dHJ1ZSByZXNldC1zZWFyY2gtaW5wdXQ9ZmFsc2U+PHVpLXNlbGVjdC1tYXRjaCBjbGFzcz11aS1zZWxlY3QtbWF0Y2ggcGxhY2Vob2xkZXI9XCJTZWFyY2ggb3Igc2VsZWN0IGNvdW50cnkuLi5cIj48c3Bhbj57eyRzZWxlY3Quc2VsZWN0ZWQubmFtZX19IDxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlua1wiIG5nLWNsaWNrPVwiY2xlYXIoJGV2ZW50LCAkc2VsZWN0KVwiPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+PC9hPjwvc3Bhbj48L3VpLXNlbGVjdC1tYXRjaD48dWktc2VsZWN0LWNob2ljZXMgY2xhc3M9dWktc2VsZWN0LWNob2ljZXMgcmVwZWF0PVwiY291bnRyeSBpbiAoY291bnRyeUxpc3QgfCBmaWx0ZXI6IHsgbmFtZTogJHNlbGVjdC5zZWFyY2ggfSkgdHJhY2sgYnkgY291bnRyeS5pZFwiIHJlZnJlc2g9cmVmcmVzaFJlc3VsdHMoJHNlbGVjdCkgcmVmcmVzaC1kZWxheT0wPjxzcGFuPnt7Y291bnRyeS5uYW1lfX08L3NwYW4+PC91aS1zZWxlY3QtY2hvaWNlcz48L3VpLXNlbGVjdD48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvdW50cnkuJHRvdWNoZWQpICYmIGZvcm0uY291bnRyeS4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+U2VsZWN0IGNvdW50cnk8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uaW5kdXN0cnkuJHRvdWNoZWQpICYmIGZvcm0uaW5kdXN0cnkuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtc20tMiBmb3I9aW5kdXN0cnk+SW5kdXN0cnk8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLXNtLTY+PHVpLXNlbGVjdCBuZy1tb2RlbD1vcmdhbmlzYXRpb24uSW5kdXN0cnkgbmctZGlzYWJsZWQ9ZGlzYWJsZWQgbmFtZT1pbmR1c3RyeSBuZy1yZXF1aXJlZD10cnVlIHJlc2V0LXNlYXJjaC1pbnB1dD1mYWxzZT48dWktc2VsZWN0LW1hdGNoIGNsYXNzPXVpLXNlbGVjdC1tYXRjaCBwbGFjZWhvbGRlcj1cIlNlYXJjaCBvciBzZWxlY3QgaW5kdXN0cnkuLi5cIj48c3Bhbj57eyRzZWxlY3Quc2VsZWN0ZWQubmFtZX19IDxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlua1wiIG5nLWNsaWNrPVwiY2xlYXIoJGV2ZW50LCAkc2VsZWN0KVwiPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+PC9hPjwvc3Bhbj48L3VpLXNlbGVjdC1tYXRjaD48dWktc2VsZWN0LWNob2ljZXMgY2xhc3M9dWktc2VsZWN0LWNob2ljZXMgcmVwZWF0PVwiaW5kdXN0cnkgaW4gKGluZHVzdHJ5TGlzdCB8IGZpbHRlcjogeyBuYW1lOiAkc2VsZWN0LnNlYXJjaCB9KSB0cmFjayBieSBpbmR1c3RyeS5pZFwiIHJlZnJlc2g9cmVmcmVzaFJlc3VsdHMoJHNlbGVjdCkgcmVmcmVzaC1kZWxheT0wPjxzcGFuPnt7aW5kdXN0cnkubmFtZX19PC9zcGFuPjwvdWktc2VsZWN0LWNob2ljZXM+PC91aS1zZWxlY3Q+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5pbmR1c3RyeS4kdG91Y2hlZCkgJiYgZm9ybS5pbmR1c3RyeS4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+U2VsZWN0IGluZHVzdHJ5PC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnN0YXR1cy4kdG91Y2hlZCkgJiYgZm9ybS5zdGF0dXMuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtc20tMiBmb3I9c3RhdHVzPlN0YXR1czwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtc20tNj48dWktc2VsZWN0IG5nLW1vZGVsPW9yZ2FuaXNhdGlvbi5TdGF0dXMgbmctZGlzYWJsZWQ9ZGlzYWJsZWQgbmFtZT1zdGF0dXMgbmctcmVxdWlyZWQ9dHJ1ZSByZXNldC1zZWFyY2gtaW5wdXQ9ZmFsc2U+PHVpLXNlbGVjdC1tYXRjaCBjbGFzcz11aS1zZWxlY3QtbWF0Y2ggcGxhY2Vob2xkZXI9XCJTZWFyY2ggb3Igc2VsZWN0IHN0YXR1cy4uLlwiPjxzcGFuPnt7JHNlbGVjdC5zZWxlY3RlZC5uYW1lfX0gPGEgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saW5rXCIgbmctY2xpY2s9XCJjbGVhcigkZXZlbnQsICRzZWxlY3QpXCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2E+PC9zcGFuPjwvdWktc2VsZWN0LW1hdGNoPjx1aS1zZWxlY3QtY2hvaWNlcyBjbGFzcz11aS1zZWxlY3QtY2hvaWNlcyByZXBlYXQ9XCJzdGF0dXMgaW4gKHN0YXR1c0xpc3QgfCBmaWx0ZXI6IHsgbmFtZTogJHNlbGVjdC5zZWFyY2ggfSkgdHJhY2sgYnkgc3RhdHVzLmlkXCIgcmVmcmVzaD1yZWZyZXNoUmVzdWx0cygkc2VsZWN0KSByZWZyZXNoLWRlbGF5PTA+PHNwYW4+e3tzdGF0dXMubmFtZX19PC9zcGFuPjwvdWktc2VsZWN0LWNob2ljZXM+PC91aS1zZWxlY3Q+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5zdGF0dXMuJHRvdWNoZWQpICYmIGZvcm0uc3RhdHVzLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5TZWxlY3Qgc3RhdHVzPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29udHJvbC1ncm91cD48YnV0dG9uIHR5cGU9c3VibWl0IGlkPWNsZWFyQnRuIGNsYXNzPVwiYnRuIGJ0bi1saWdodFwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtc2F2ZVwiPjwvc3Bhbj4mbmJzcCBTYXZlIG5hdmJhcjwvYnV0dG9uPjxicj48YnI+PC9kaXY+PC9mb3JtPicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwNF9zZXR0aW5ncy9hbmd1bGFyVGVtcGxhdGVzL2dyb3Vwc0RlZmluaXRpb24uaHRtbCcsJzxkaXYgY2xhc3M9XCJjYXJkIG10LTFcIj48ZGl2IGNsYXNzPVwicm93IG14LTJcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHAtMiB0ZXh0LWNlbnRlciBib3JkZXItYm90dG9tIHB5LTMgbWItNFwiPjxzcGFuIGNsYXNzPWg1Pkdyb3Vwczwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IG1iLTRcIj48YnV0dG9uIG5nLWhpZGU9aXNTaG93TmV3R3JvdXAgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnlcIiBuZy1jbGljaz1zaG93TmV3R3JvdXAoZm9ybSk+PGkgY2xhc3M9XCJmYSBmYS1wbHVzXCI+PC9pPjxzcGFuIGNsYXNzPW1sLTE+Q3JlYXRlIG5ldyBncm91cDwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IG5nLWlmPSFncm91cHNMb2FkZWQgc3R5bGU9XCJtaW4td2lkdGg6IDE2JTtiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgei1pbmRleDogMjAwMCAhaW1wb3J0YW50OyB0b3A6IDUwJTtsZWZ0OiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUpOyBwb3NpdGlvbjogYWJzb2x1dGU7cGFkZGluZzogMS41cmVtICFpbXBvcnRhbnQ7dGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7Ym9yZGVyOiAxcHggc29saWQgI0U3RTlFQztib3JkZXItcmFkaXVzOiAwLjVyZW0gIWltcG9ydGFudDtcIj48ZGl2IGNsYXNzPVwibG9hZGVyIGxvYWRlci1sZ1wiPjwvZGl2PjxkaXYgY2xhc3M9bXQtMj48ZGl2IGNsYXNzPVwicGFuZWwtdGl0bGUgcHgtMVwiIHN0eWxlPXZlcnRpY2FsLWFsaWduOm1pZGRsZTtjb2xvcjojMzQ5OGRiPjxzcGFuIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLmxvYWRHcm91cE1zZyB8fCBcXCdMb2FkaW5nIGdyb3Vwcy4uLlxcJ1wiPjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPWlzU2hvd05ld0dyb3VwIGNsYXNzPVwiY29sLWxnLTI0IHNoYWRvdy1zbSBwLTIgbWItMiBib3JkZXJcIj48Zm9ybSBuZy1zdWJtaXQ9c2F2ZUdyb3VwKG5ld0dyb3VwLGZvcm1OZXcuJHZhbGlkKSBpZD1zYXZlRm9ybSBuYW1lPWZvcm1OZXcgY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYgY2xhc3M9XCJoNSB0ZXh0LWNlbnRlciBib3JkZXItYm90dG9tIG15LWF1dG8gcC0xXCI+TmV3IGdyb3VwPC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTAgcHktMlwiPjxkaXYgY2xhc3M9Y29sLTEyPjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiAoZm9ybU5ldy4kc3VibWl0dGVkIHx8IGZvcm1OZXcuZ3JvdXBOYW1lTmV3LiR0b3VjaGVkKSAmJiBmb3JtTmV3Lmdyb3VwTmFtZU5ldy4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC0xOCBmb3I9Z3JvdXBOYW1lTmV3Pkdyb3VwIG5hbWU8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLTE4PjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9bmV3R3JvdXAuR3JvdXBOYW1lIG5nLXJlcXVpcmVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPWdyb3VwTmFtZU5ldyBuYW1lPWdyb3VwTmFtZU5ldyBwbGFjZWhvbGRlcj1cIkdyb3VwIG5hbWVcIj48cCBuZy1zaG93PVwiKGZvcm1OZXcuJHN1Ym1pdHRlZCB8fCBmb3JtTmV3Lmdyb3VwTmFtZU5ldy4kdG91Y2hlZCkgJiYgZm9ybU5ldy5ncm91cE5hbWVOZXcuJGludmFsaWRcIiBjbGFzcz1cInRleHQtZGFuZ2VyIHNtYWxsXCI+RW50ZXIgZ3JvdXAgbmFtZTwvcD48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPWZhbHNlIGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtTmV3LiRzdWJtaXR0ZWQgfHwgZm9ybU5ldy5kZXNjcmlwdGlvbk5ldy4kdG91Y2hlZCkgJiYgZm9ybU5ldy5kZXNjcmlwdGlvbk5ldy4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1zbS0yIGZvcj1kZXNjcmlwdGlvbk5ldz5Hcm91cCBkZXNjcmlwdGlvbjwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtc20tNj48dGV4dGFyZWEgbmctbW9kZWw9bmV3R3JvdXAuZGVzY3JpcHRpb24gbmctcmVxdWlyZWQ9dHJ1ZSBjbGFzcz1mb3JtLWNvbnRyb2wgaWQ9ZGVzY3JpcHRpb25OZXcgbmFtZT1kZXNjcmlwdGlvbk5ldyBwbGFjZWhvbGRlcj1cIkdyb3VwIGRlc2NyaXB0aW9uXCI+XFxyXFxuXFx0XFx0XFx0XFxyXFxuXFx0XFx0XFx0XFx0XFx0XFx0PHAgbmctc2hvdz1cIihmb3JtTmV3LiRzdWJtaXR0ZWQgfHwgZm9ybU5ldy5kZXNjcmlwdGlvbk5ldy4kdG91Y2hlZCkgJiYgZm9ybU5ldy5kZXNjcmlwdGlvbk5ldy4kaW52YWxpZFwiIGNsYXNzPVwidGV4dC1kYW5nZXIgc21hbGxcIj5FbnRlciBncm91cCBkZXNjcmlwdGlvbjwvcD5cXHJcXG5cXHRcXHRcXHRcXHRcXHQgPC90ZXh0YXJlYT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtTmV3LiRzdWJtaXR0ZWQgfHwgZm9ybU5ldy5uZXdHcm91cE93bmVycy4kdG91Y2hlZCkgJiYgZm9ybU5ldy5vd25lcnMuJGludmFsaWQgfVwiPjxzcGFuIGNsYXNzPWNvbC0xOD5Hcm91cCBvd25lcnM8L3NwYW4+PGRpdiBjbGFzcz1jb2wtMTg+PGt0LWRyb3Bkb3duLW11bHRpcGxlIG5nLWlmPWlzU2hvd05ld0dyb3VwIG9uLXNlbGVjdC1mbj1vd25lcl9zZWxlY3Rpb25fY2hhbmdlZChpdGVtLG1vZGVsKSBuZy1tb2RlbD1uZXdHcm91cC5Hcm91cE93bmVycyBzZWxlY3RlZC1pdGVtcz1uZXdHcm91cC5Hcm91cE93bmVycyBuYW1lPW5ld0dyb3VwT3duZXJzIG5nLXJlcXVpcmVkPXRydWUgcmVxdWlyZWQtZmllbGQ9dHJ1ZSBkcm9wZG93bi1pdGVtcz11c2VyTGlzdCBkcm9wZG93bi1pZD1cIlxcJ2dyb3VwT3duZXJVc2VyTGlzdFxcJ1wiIHBhcmVudC1mb3JtLWlkPVwiXFwnZm9ybU5ld1xcJ1wiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IGdyb3VwIG93bmVyc1xcJ1wiPjwva3QtZHJvcGRvd24tbXVsdGlwbGU+PHAgbmctc2hvdz1cIihmb3JtTmV3LiRzdWJtaXR0ZWQgfHwgZm9ybU5ldy5uZXdHcm91cE93bmVycy4kdG91Y2hlZCkgJiYgZm9ybU5ldy5uZXdHcm91cE93bmVycy4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+U2VsZWN0IG93bmVyczwvcD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC0xMj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7XFwndGV4dC1kYW5nZXJcXCcgOiAoZm9ybU5ldy4kc3VibWl0dGVkIHx8IGZvcm1OZXcubmV3R3JvdXBVc2Vycy4kdG91Y2hlZCkgJiYgZm9ybU5ldy5ncm91cHMuJGludmFsaWR9XCI+PHNwYW4gY2xhc3M9Y29sLTE4PlVzZXJzPC9zcGFuPjxkaXYgY2xhc3M9Y29sLTE4PjxrdC1kcm9wZG93bi1tdWx0aXBsZSBuZy1pZj1pc1Nob3dOZXdHcm91cCBvbi1zZWxlY3QtZm49dXNlclNlbGVjdGVkKGl0ZW0sbW9kZWwpIG5nLW1vZGVsPW5ld0dyb3VwLkdyb3VwSWQudXNlcnMgc2VsZWN0ZWQtaXRlbXM9bmV3R3JvdXAuR3JvdXBJZC51c2VycyBuYW1lPW5ld0dyb3VwVXNlcnMgbmctcmVxdWlyZWQ9ZmFsc2UgcmVxdWlyZWQtZmllbGQ9ZmFsc2UgZHJvcGRvd24taXRlbXM9dXNlckxpc3QgZHJvcGRvd24taWQ9XCJcXCd1c2VyTWVtYmVyTGlzdFxcJ1wiIHBhcmVudC1mb3JtLWlkPVwiXFwnZm9ybU5ld1xcJ1wiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IHVzZXJzXFwnXCI+PC9rdC1kcm9wZG93bi1tdWx0aXBsZT48cCBuZy1zaG93PVwiKGZvcm1OZXcuJHN1Ym1pdHRlZCB8fCBmb3JtTmV3Lm5ld0dyb3VwVXNlcnMuJHRvdWNoZWQpICYmIGZvcm1OZXcubmV3R3JvdXBVc2Vycy4kaW52YWxpZFwiIGNsYXNzPVwidGV4dC1kYW5nZXIgc21hbGxcIj5TZWxlY3QgdXNlcihzKTwvcD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBwLTIgcHgtNCBjb250cm9sLWdyb3VwXCI+PGJ1dHRvbiB0eXBlPXN1Ym1pdCBuZy1kaXNhYmxlZD1mb3JtTmV3LiRpbnZhbGlkIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc3VjY2Vzc1wiPjxpIGNsYXNzPVwiZmEgZmEtc2F2ZSBtci0yXCI+PC9pPiBTYXZlPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9ZGVzZWxlY3RHcm91cCgpIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tZGFuZ2VyIG1sLTJcIj48aSBjbGFzcz1cImZhIGZhLWNhbmNlbCBtci0yXCI+PC9pPiBDYW5jZWw8L2J1dHRvbj48L2Rpdj48L2Zvcm0+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBmb3JtLWdyb3VwXCI+PGZvcm0gbmctc3VibWl0PXNhdmVHcm91cChzZWxlY3RlZEdyb3VwLGZvcm0uJHZhbGlkKSBpZD1zYXZlRm9ybSBuYW1lPWZvcm0gY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjx1bCBuZy1tb2RlbD1ncm91cHMgY2xhc3M9cGVybWlzc2lvbi1saXN0PjxsaSBzdHlsZT1cInRvcDo1MHB4O3otaW5kZXg6IDE7XCIgY2xhc3M9XCJpdGVtIHN0aWNreSBhbGlnbi1zZWxmLXN0YXJ0IHNoYWRvdy1zbSBib3JkZXIgcm91bmRlZCBtYi0zIGJnLXdoaXRlXCI+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXktYXV0b1wiPjxsYWJlbCBmb3I9c2VhcmNoR3JvdXA+R3JvdXAgTmFtZTwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1jb2wtMTA+PGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gY29sIG1sLTNcIiBpZD1zZWFyY2hHcm91cCBuYW1lPXNlYXJjaEdyb3VwIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGdyb3Vwcy4uLlwiIG5nLW1vZGVsPWdyb3VwRmlsdGVyPjwvZGl2PjwvZGl2PjwvbGk+PGxpIGNsYXNzPVwidGV4dC1sZWZ0IHAtMSBib3JkZXItYm90dG9tXCIgbmctcmVwZWF0PVwiZ3JvdXAgaW4gZ3JvdXBzIHwgZmlsdGVyOiBncm91cEZpbHRlciB0cmFjayBieSBncm91cC5ncm91cFVpZFwiPjxkaXYgY2xhc3M9cm93PjxkaXYgY2xhc3M9Y29sPnt7Z3JvdXAuR3JvdXBOYW1lfX0gPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZCBtbC0yXCI+KCBpZD17e2dyb3VwLkdyb3VwSWQuaWR9fSApPC9zbWFsbD48L2Rpdj48ZGl2IGNsYXNzPWNvbC1hdXRvPjxidXR0b24gbmctaGlkZT1cInNlbGVjdGVkR3JvdXAuaWQ9PWdyb3VwLmlkXCIgdHlwZT1idXR0b24gbmctY2xpY2s9ZWRpdEdyb3VwKGdyb3VwLCRpbmRleCkgY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1vdXRsaW5lLXByaW1hcnkgbWwtM1wiPkVkaXQ8L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IG5nLXNob3c9XCJzZWxlY3RlZEdyb3VwLkdyb3VwSWQgJiYgc2VsZWN0ZWRHcm91cC5pZD09Z3JvdXAuaWRcIiBjbGFzcz1cInJvdyBzaGFkb3ctc20gcC0zIG1iLTIgYm9yZGVyXCI+PGRpdiBjbGFzcz1jb2wtMTI+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uZ3JvdXBJZHt7JGluZGV4fX0uJHRvdWNoZWQpICYmIGZvcm0uZ3JvdXBJZHt7JGluZGV4fX0uJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtMTggZm9yPWdyb3VwSWR7eyRpbmRleH19Pkdyb3VwIElEPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC0xOD48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPXNlbGVjdGVkR3JvdXAuR3JvdXBJZC5pZCBuZy1yZXF1aXJlZD1mYWxzZSBkaXNhYmxlZCBjbGFzcz1mb3JtLWNvbnRyb2wgaWQ9Z3JvdXBJZHt7JGluZGV4fX0gbmFtZT1ncm91cElke3skaW5kZXh9fSBwbGFjZWhvbGRlcj1cIkdyb3VwIElEXCI+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5ncm91cElke3skaW5kZXh9fS4kdG91Y2hlZCkgJiYgZm9ybS5ncm91cElke3skaW5kZXh9fS4kaW52YWxpZFwiIGNsYXNzPVwidGV4dC1kYW5nZXIgc21hbGxcIj5FbnRlciBncm91cCBpZDwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5ncm91cE5hbWV7eyRpbmRleH19LiR0b3VjaGVkKSAmJiBmb3JtLmdyb3VwTmFtZXt7JGluZGV4fX0uJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtMTggZm9yPWdyb3VwTmFtZXt7JGluZGV4fX0+R3JvdXAgbmFtZTwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtMTg+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1zZWxlY3RlZEdyb3VwLkdyb3VwTmFtZSBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1ncm91cE5hbWV7eyRpbmRleH19IG5hbWU9Z3JvdXBOYW1le3skaW5kZXh9fSBwbGFjZWhvbGRlcj1cIkdyb3VwIG5hbWVcIj48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmdyb3VwTmFtZXt7JGluZGV4fX0uJHRvdWNoZWQpICYmIGZvcm0uZ3JvdXBOYW1le3skaW5kZXh9fS4kaW52YWxpZFwiIGNsYXNzPVwidGV4dC1kYW5nZXIgc21hbGxcIj5FbnRlciBncm91cCBuYW1lPC9wPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9ZmFsc2UgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmRlc2NyaXB0aW9ue3skaW5kZXh9fS4kdG91Y2hlZCkgJiYgZm9ybS5kZXNjcmlwdGlvbnt7JGluZGV4fX0uJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtMTggZm9yPWRlc2NyaXB0aW9ue3skaW5kZXh9fT5Hcm91cCBkZXNjcmlwdGlvbjwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtMTg+PHRleHRhcmVhIG5nLW1vZGVsPXNlbGVjdGVkR3JvdXAuZGVzY3JpcHRpb24gbmctcmVxdWlyZWQ9dHJ1ZSBjbGFzcz1mb3JtLWNvbnRyb2wgaWQ9ZGVzY3JpcHRpb257eyRpbmRleH19IG5hbWU9ZGVzY3JpcHRpb257eyRpbmRleH19IHBsYWNlaG9sZGVyPVwiR3JvdXAgZGVzY3JpcHRpb25cIj5cXHJcXG5cXHRcXHRcXHRcXHQgICAgXFxyXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIDxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uZGVzY3JpcHRpb257eyRpbmRleH19LiR0b3VjaGVkKSAmJiBmb3JtLmRlc2NyaXB0aW9ue3skaW5kZXh9fS4kaW52YWxpZFwiIGNsYXNzPVwidGV4dC1kYW5nZXIgc21hbGxcIj5FbnRlciBncm91cCBkZXNjcmlwdGlvbjwvcD5cXHJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L3RleHRhcmVhPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnNlbGVjdGVkR3JvdXBPd25lcnN7eyRpbmRleH19LiR0b3VjaGVkKSAmJiBmb3JtLnNlbGVjdGVkR3JvdXBPd25lcnN7eyRpbmRleH19LiRpbnZhbGlkIH1cIj48c3BhbiBjbGFzcz1jb2wtMTg+R3JvdXAgb3duZXJzPC9zcGFuPjxkaXYgY2xhc3M9Y29sLTE4PjxrdC1kcm9wZG93bi1tdWx0aXBsZSBuZy1pZj1zZWxlY3RlZEdyb3VwIG9uLXNlbGVjdC1mbj1vd25lclNlbGVjdGVkKGl0ZW0sbW9kZWwpIG5nLW1vZGVsPWdyb3VwLkdyb3VwT3duZXJzIHNlbGVjdGVkLWl0ZW1zPWdyb3VwLkdyb3VwT3duZXJzIG5hbWU9c2VsZWN0ZWRHcm91cE93bmVyc3t7JGluZGV4fX0gbmctcmVxdWlyZWQ9dHJ1ZSByZXF1aXJlZC1maWVsZD10cnVlIGRyb3Bkb3duLWl0ZW1zPXVzZXJMaXN0IGRyb3Bkb3duLWlkPVwiXFwnZ3JvdXBPd25lclNlbGVjdGVkVXNlckxpc3RcXCdcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2Zvcm1cXCdcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCBncm91cCBvd25lcnNcXCdcIj48L2t0LWRyb3Bkb3duLW11bHRpcGxlPjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uc2VsZWN0ZWRHcm91cE93bmVyc3t7JGluZGV4fX0uJHRvdWNoZWQpICYmIGZvcm0uc2VsZWN0ZWRHcm91cE93bmVyc3t7JGluZGV4fX0uJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPlNlbGVjdCBvd25lcnM8L3A+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb2wtMTI+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwie1xcJ3RleHQtZGFuZ2VyXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnNlbGVjdGVkR3JvdXBVc2Vyc3t7JGluZGV4fX0uJHRvdWNoZWQpICYmIGZvcm0uc2VsZWN0ZWRHcm91cFVzZXJze3skaW5kZXh9fS4kaW52YWxpZH1cIj48c3BhbiBjbGFzcz1jb2wtMTg+VXNlcnM8L3NwYW4+PGRpdiBjbGFzcz1jb2wtMTg+PGt0LWRyb3Bkb3duLW11bHRpcGxlIG5nLWlmPXNlbGVjdGVkR3JvdXAgb24tc2VsZWN0LWZuPXVzZXJTZWxlY3RlZChpdGVtLG1vZGVsKSBuZy1tb2RlbD1ncm91cC5Hcm91cElkLnVzZXJzIHNlbGVjdGVkLWl0ZW1zPWdyb3VwLkdyb3VwSWQudXNlcnMgbmFtZT1zZWxlY3RlZEdyb3VwVXNlcnN7eyRpbmRleH19IG5nLXJlcXVpcmVkPWZhbHNlIHJlcXVpcmVkLWZpZWxkPWZhbHNlIGRyb3Bkb3duLWl0ZW1zPXVzZXJMaXN0IGRyb3Bkb3duLWlkPVwiXFwndXNlck1lbWJlckxpc3RTZWxlY3RlZFxcJ1wiIHBhcmVudC1mb3JtLWlkPVwiXFwnZm9ybVxcJ1wiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IHVzZXJzXFwnXCI+PC9rdC1kcm9wZG93bi1tdWx0aXBsZT48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnNlbGVjdGVkR3JvdXBVc2Vyc3t7JGluZGV4fX0uJHRvdWNoZWQpICYmIGZvcm0uc2VsZWN0ZWRHcm91cFVzZXJze3skaW5kZXh9fS4kaW52YWxpZFwiIGNsYXNzPVwidGV4dC1kYW5nZXIgc21hbGxcIj5TZWxlY3QgdXNlcihzKTwvcD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBwLTIgcHgtNCBjb250cm9sLWdyb3VwXCI+PGJ1dHRvbiB0eXBlPXN1Ym1pdCBpZD1jbGVhckJ0biBuZy1kaXNhYmxlZD1mb3JtLiRpbnZhbGlkIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc3VjY2Vzc1wiPjxzcGFuIGNsYXNzPVwiZmEgZmEtc2F2ZVwiPjwvc3Bhbj4gPHNwYW4gY2xhc3M9bWwtMT5TYXZlPC9zcGFuPjwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPWRlc2VsZWN0R3JvdXAoKSBpZD1jbGVhckJ0biBjbGFzcz1cImJ0biBidG4tc20gYnRuLWRhbmdlciBtbC0yXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvc3Bhbj4gPHNwYW4gY2xhc3M9bWwtMT5DYW5jZWw8L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9saT48L3VsPjwvZm9ybT48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDRfc2V0dGluZ3MvYW5ndWxhclRlbXBsYXRlcy9tZW51Lmh0bWwnLCc8aDU+QnVpbGQgbWVudSBoZXJlIDE8L2g1PjxoNT5CdWlsZCBtZW51IGhlcmUgMjwvaDU+PGg1PkJ1aWxkIG1lbnUgaGVyZSAzPC9oNT48aDU+QnVpbGQgbWVudSBoZXJlIDQ8L2g1PjxoNT5CdWlsZCBtZW51IGhlcmUgNTwvaDU+PGg1PkJ1aWxkIG1lbnUgaGVyZSA2PC9oNT4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDRfc2V0dGluZ3MvYW5ndWxhclRlbXBsYXRlcy9vcmdhbmlzYXRpb24uaHRtbCcsJzxkaXYgY2xhc3M9XCJjYXJkIG10LTEgcC0yXCI+PGZvcm0gbmctc3VibWl0PXNhdmVPcmdhbmlzYXRpb24oZm9ybS4kdmFsaWQpIGlkPXNhdmVGb3JtIG5hbWU9Zm9ybSBjbGFzcz1mb3JtLWhvcml6b250YWwgcm9sZT1mb3JtIG5vdmFsaWRhdGU+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHAtMiB0ZXh0LWNlbnRlciBib3JkZXItYm90dG9tIG1iLTRcIj48c3BhbiBjbGFzcz1oNT5PcmdhbmlzYXRpb24gaW5mbzwvc3Bhbj48L2Rpdj48Zm9ybSBuZy1zdWJtaXQ9c2F2ZVVzZXIoZm9ybS4kdmFsaWQpIGlkPXNhdmVGb3JtIG5hbWU9Zm9ybSBjbGFzcz1mb3JtLWhvcml6b250YWwgcm9sZT1mb3JtIG5vdmFsaWRhdGU+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdpcy1pbnZhbGlkIHdhcy12YWxpZGF0ZWRcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ub3JnYW5pc2F0aW9uTmFtZS4kdG91Y2hlZCkgJiYgZm9ybS5vcmdhbmlzYXRpb25OYW1lLiRpbnZhbGlkIH1cIj48bGFiZWwgbmctY2xhc3M9XCJ7XFwndGV4dC1kYW5nZXJcXCc6KGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLm9yZ2FuaXNhdGlvbk5hbWUuJHRvdWNoZWQpICYmIGZvcm0ub3JnYW5pc2F0aW9uTmFtZS4kaW52YWxpZH1cIiBmb3I9b3JnYW5pc2F0aW9uTmFtZT5PcmdhbmlzYXRpb24gbmFtZTwvbGFiZWw+PGRpdiBjbGFzcz48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPW9yZ2FuaXNhdGlvbi5OYW1lIG5nLXJlcXVpcmVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPW9yZ2FuaXNhdGlvbk5hbWUgbmFtZT1vcmdhbmlzYXRpb25OYW1lIHBsYWNlaG9sZGVyPVwiT3JnYW5pc2F0aW9uIG5hbWVcIj48cCBuZy1pZj1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5vcmdhbmlzYXRpb25OYW1lLiR0b3VjaGVkKSAmJiBmb3JtLm9yZ2FuaXNhdGlvbk5hbWUuJGludmFsaWRcIiBuZy1jbGFzcz1cIntcXCdpbnZhbGlkLWZlZWRiYWNrXFwnOihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5vcmdhbmlzYXRpb25OYW1lLiR0b3VjaGVkKSAmJiBmb3JtLm9yZ2FuaXNhdGlvbk5hbWUuJGludmFsaWR9XCI+RW50ZXIgb3JnYW5pc2F0aW9uIG5hbWU8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdpcy1pbnZhbGlkIHdhcy12YWxpZGF0ZWRcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ub3JnYW5pc2F0aW9uRGVzY3JpcHRpb24uJHRvdWNoZWQpICYmIGZvcm0ub3JnYW5pc2F0aW9uRGVzY3JpcHRpb24uJGludmFsaWQgfVwiPjxsYWJlbCBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ub3JnYW5pc2F0aW9uRGVzY3JpcHRpb24uJHRvdWNoZWQpICYmIGZvcm0ub3JnYW5pc2F0aW9uRGVzY3JpcHRpb24uJGludmFsaWQgfVwiIGZvcj1vcmdhbmlzYXRpb25EZXNjcmlwdGlvbj5PcmdhbmlzYXRpb24gZGVzY3JpcHRpb248L2xhYmVsPjxkaXYgY2xhc3M+PHRleHRhcmVhIG5nLW1vZGVsPW9yZ2FuaXNhdGlvbi5EZXNjcmlwdGlvbiBuYW1lPW9yZ2FuaXNhdGlvbkRlc2NyaXB0aW9uIG5nLXJlcXVpcmVkPXRydWUgbmctbWluLWxlbmd0aD0yMCBjbGFzcz1mb3JtLWNvbnRyb2w+PC90ZXh0YXJlYT48cCBuZy1pZj1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5vcmdhbmlzYXRpb25EZXNjcmlwdGlvbi4kdG91Y2hlZCkgJiYgZm9ybS5vcmdhbmlzYXRpb25EZXNjcmlwdGlvbi4kaW52YWxpZFwiIG5nLWNsYXNzPVwie1xcJ2ludmFsaWQtZmVlZGJhY2tcXCc6KGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLm9yZ2FuaXNhdGlvbkRlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtLm9yZ2FuaXNhdGlvbkRlc2NyaXB0aW9uLiRpbnZhbGlkfVwiPkVudGVyIG9yZ2FuaXNhdGlvbiBkZXNjcmlwdGlvbihtaW4gMjAgY2hhcnMpLjwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBteS0xXCI+PGRpdiBjbGFzcz1cImNvbC0yNCBwLTBcIj48bGFiZWwgY2xhc3M9bWItMT5PcmdhbmlzYXRpb24gdHlwZTwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1idG4tZ3JvdXAgcm9sZT1ncm91cCBhcmlhLWxhYmVsPVwiTWVudSB0eXBlXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cIm9yZ2FuaXNhdGlvbi5PcmdUeXBlPVxcJ0ZvclByb2ZpdFxcJ1wiIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzpvcmdhbmlzYXRpb24uT3JnVHlwZT09XFwnRm9yUHJvZml0XFwnfVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5XCI+Rm9yIHByb2ZpdDwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwib3JnYW5pc2F0aW9uLk9yZ1R5cGU9XFwnTm9uUHJvZml0XFwnXCIgbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOm9yZ2FuaXNhdGlvbi5PcmdUeXBlPT1cXCdOb25Qcm9maXRcXCd9XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnlcIj5Ob24gcHJvZml0PC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWZvcm09Zm9ybSBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZCB3YXMtdmFsaWRhdGVkXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvdW50cnkuJHRvdWNoZWQpICYmIGZvcm0uY291bnRyeS4kaW52YWxpZCB9XCI+PGxhYmVsIG5nLWNsYXNzPVwie1xcJ3RleHQtZGFuZ2VyXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvdW50cnkuJHRvdWNoZWQpICYmIGZvcm0uY291bnRyeS4kaW52YWxpZCB9XCIgZm9yPWNvdW50cnk+Q291bnRyeTwvbGFiZWw+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLWlmPWNvdW50cnlMaXN0IG5nLW1vZGVsPW9yZ2FuaXNhdGlvbi5Db3VudHJ5IGlzLW11bHRpcGxlPWZhbHNlIG5hbWU9Y291bnRyeSBzZWxlY3RlZC1pdGVtcz1vcmdhbmlzYXRpb24uQ291bnRyeSByZXF1aXJlZD10cnVlIGRyb3Bkb3duLWl0ZW1zPWNvdW50cnlMaXN0IGRyb3Bkb3duLWlkPVwiXFwnY291bnRyeVxcJ1wiIHBhcmVudC1mb3JtLWlkPVwiXFwnZm9ybVxcJ1wiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IGNvdW50cnlcXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjxwIG5nLWlmPVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvdW50cnkuJHRvdWNoZWQpICYmIGZvcm0uY291bnRyeS4kaW52YWxpZFwiIG5nLWNsYXNzPVwie1xcJ2ludmFsaWQtZmVlZGJhY2sgZC1ibG9ja1xcJzooZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uY291bnRyeS4kdG91Y2hlZCkgJiYgZm9ybS5jb3VudHJ5LiRpbnZhbGlkfVwiPlNlbGVjdCBjb3VudHJ5PC9wPjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaXMtaW52YWxpZCB3YXMtdmFsaWRhdGVkXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmluZHVzdHJ5LiR0b3VjaGVkKSAmJiBmb3JtLmluZHVzdHJ5LiRpbnZhbGlkIH1cIj48bGFiZWwgbmctY2xhc3M9XCJ7XFwndGV4dC1kYW5nZXJcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uaW5kdXN0cnkuJHRvdWNoZWQpICYmIGZvcm0uaW5kdXN0cnkuJGludmFsaWQgfVwiIGZvcj1pbmR1c3RyeT5JbmR1c3RyeTwvbGFiZWw+PGt0LWRyb3Bkb3duLXN0YW5kYXJkIG5nLWlmPWluZHVzdHJ5TGlzdCBuZy1tb2RlbD1vcmdhbmlzYXRpb24uSW5kdXN0cnkgaXMtbXVsdGlwbGU9ZmFsc2Ugc2VsZWN0ZWQtaXRlbXM9b3JnYW5pc2F0aW9uLkluZHVzdHJ5IHJlcXVpcmVkPWZhbHNlIGRyb3Bkb3duLWl0ZW1zPWluZHVzdHJ5TGlzdCBkcm9wZG93bi1pZD1cIlxcJ2luZHVzdHJ5XFwnXCIgcGFyZW50LWZvcm0taWQ9XCJcXCdmb3JtXFwnXCIgc2VhcmNoLXRleHQ9XCJcXCdTZWxlY3QgaW5kdXN0cnlcXCdcIj48L2t0LWRyb3Bkb3duLXN0YW5kYXJkPjxwIG5nLWlmPVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmluZHVzdHJ5LiR0b3VjaGVkKSAmJiBmb3JtLmluZHVzdHJ5LiRpbnZhbGlkXCIgbmctY2xhc3M9XCJ7XFwnaW52YWxpZC1mZWVkYmFjayBkLWJsb2NrXFwnOihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5pbmR1c3RyeS4kdG91Y2hlZCkgJiYgZm9ybS5pbmR1c3RyeS4kaW52YWxpZH1cIj5TZWxlY3QgaW5kdXN0cnk8L3A+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdpcy1pbnZhbGlkIHdhcy12YWxpZGF0ZWRcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uc3RhdHVzLiR0b3VjaGVkKSAmJiBmb3JtLnN0YXR1cy4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWZvcm0tY29udHJvbC1sYWJlbCBmb3I9c3RhdHVzPkFjdGl2ZSA8aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cIm15LTIgbWwtMlwiIHN0eWxlPVwidHJhbnNmb3JtOiBzY2FsZSgxLjQpO1wiIG5hbWU9c3RhdHVzIG5nLW1vZGVsPW9yZ2FuaXNhdGlvbi5BY3RpdmUgbmctY2hlY2tlZD1vcmdhbmlzYXRpb24uQWN0aXZlPjwvbGFiZWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PGRpdiBjbGFzcz1teS00PjxzcGFuIGNsYXNzPVwiYm9sZCBoNiBib3JkZXItYm90dG9tIGJvcmRlci1wcmltYXJ5IHAtMSBtYi0yIHRleHQtcHJpbWFyeVwiPkFQSSBzZXR1cDwvc3Bhbj48L2Rpdj48ZGl2PjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9R2VuZXJhdGVBcGlLZXlzKCkgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEta2V5IG1yLTJcIj48L3NwYW4+IEdlbmVyYXRlIEFQSSBrZXk8L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPW15LTQ+PGRpdj48c3BhbiBjbGFzcz1cImJvbGQgaDYgYm9yZGVyLXByaW1hcnkgcC0xXCI+QXBpIGlkOiB7e29yZ2FuaXNhdGlvbi5BcGlVc2VyLnVzZXJuYW1lfX08L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBuZy1pZj1hcGlfaWQgY2xhc3M9XCJib2xkIGg2IGJvcmRlci1wcmltYXJ5IHAtMVwiPkFwaSBpZCBjcmVhdGVkOiB7e2FwaV9pZH19PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gbmctaWY9YXBpX2tleSBjbGFzcz1cImJvbGQgaDYgYm9yZGVyLXByaW1hcnkgcC0xXCI+QXBpIGtleToge3thcGlfa2V5fX08L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBtLTAgbXktMVwiPjxkaXYgY2xhc3M+PGJ1dHRvbiB0eXBlPXN1Ym1pdCBpZD1jbGVhckJ0biBuZy1kaXNhYmxlZD1mb3JtLiRpbnZhbGlkIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXN1Y2Nlc3NcIj48c3BhbiBjbGFzcz1cImZhIGZhLXNhdmUgbXItMlwiPjwvc3Bhbj4gU2F2ZSBvcmdhbmlzYXRpb24gaW5mbzwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZm9ybT48L2Rpdj48L2Zvcm0+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDA0X3NldHRpbmdzL2FuZ3VsYXJUZW1wbGF0ZXMvb3JnYW5pc2F0aW9uTWVudS5odG1sJywnPGRpdj48ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiPjxkaXYgY2xhc3M9cGFuZWwtaGVhZGluZz48c3BhbiBjbGFzcz1cImZhIGZhLWJhcnNcIj4mbmJzcCBNZW51PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M+PHVsIGNsYXNzPVwibmF2IG5hdi1waWxscyBuYXYtc3RhY2tlZFwiPjxsaSBuZy1jbGFzcz1cImFjdGl2ZUxpbmsoXFwnYXBwLm5hdmJhci5vcmdhbmlzYXRpb25cXCcpXCI+PGEgdWktc3JlZj1hcHAubmF2YmFyLm9yZ2FuaXNhdGlvbj48aSBjbGFzcz1cImZhIGZhLXVuaXZlcnNpdHlcIj4mbmJzcDsgT3JnYW5pc2F0aW9uPC9pPjwvYT48L2xpPjwvdWw+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDA0X3NldHRpbmdzL2FuZ3VsYXJUZW1wbGF0ZXMvdXNlckRldGFpbHMuaHRtbCcsJzxkaXYgY2xhc3M9XCJjYXJkIG10LTEgcC0yXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBwLTIgdGV4dC1jZW50ZXIgYm9yZGVyLWJvdHRvbSBtYi00XCI+PHNwYW4gY2xhc3M9aDUgbmctYmluZD1cInBhZ2VMYWJlbHMubXlEZXRhaWxzUGFnZUhlYWRlciB8fCBcXCdVc2VyIGRldGFpbHNcXCdcIj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTAgbXQtM1wiPjxkaXYgY2xhc3M9XCJjb2wtMTIgbXktMlwiPjxkaXYgY2xhc3M9XCJoNSBib3JkZXItYm90dG9tIHBiLTJcIiBuZy1iaW5kPVwicGFnZUxhYmVscy5lZGl0VXNlckhlYWRlciB8fCBcXCdVc2VyIGluZm9cXCdcIj48L2Rpdj48Zm9ybSBuZy1zdWJtaXQ9c2F2ZVVzZXIoZm9ybS4kdmFsaWQpIGlkPXNhdmVGb3JtIG5hbWU9Zm9ybSBjbGFzcz1mb3JtLWhvcml6b250YWwgcm9sZT1mb3JtIG5vdmFsaWRhdGU+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0udXNlcm5hbWUuJHRvdWNoZWQpICYmIGZvcm0udXNlcm5hbWUuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtMjQgZm9yPW9yZ2FuaXNhdGlvbk5hbWUgbmctYmluZD1cInBhZ2VMYWJlbHMudXNlcm5hbWUgfHwgXFwnVXNlcm5hbWVcXCdcIj48L2xhYmVsPjxkaXYgbmctaWY9ZmFsc2UgY2xhc3M9Y29sLTI0PjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9dXNlci51c2VybmFtZSBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD11c2VybmFtZSBuYW1lPXVzZXJuYW1lIHBsYWNlaG9sZGVyPVVzZXJuYW1lPjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0udXNlcm5hbWUuJHRvdWNoZWQpICYmIGZvcm0udXNlcm5hbWUuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIHVzZXJuYW1lPC9wPjwvZGl2PjxkaXYgY2xhc3M9Y29sLTI0PjxzcGFuIGNsYXNzPWZvcm0tY29udHJvbD57e3VzZXIudXNlcm5hbWV9fTwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5maXJzdF9uYW1lLiR0b3VjaGVkKSAmJiBmb3JtLmZpcnN0X25hbWUuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtMjQgZm9yPWZpcnN0X25hbWUgbmctYmluZD1cInBhZ2VMYWJlbHMuZmlyc3RfbmFtZSB8fCBcXCdGaXJzdCBuYW1lXFwnXCI+PC9sYWJlbD48ZGl2IG5nLWlmPWZhbHNlIGNsYXNzPWNvbC0yND48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPXVzZXIuZmlyc3RfbmFtZSBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1maXJzdF9uYW1lIG5hbWU9Zmlyc3RfbmFtZSBwbGFjZWhvbGRlcj1cIkZpcnN0IG5hbWVcIj48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmZpcnN0X25hbWUuJHRvdWNoZWQpICYmIGZvcm0uZmlyc3RfbmFtZS4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIgZmlyc3QgbmFtZTwvcD48L2Rpdj48ZGl2IGNsYXNzPWNvbC0yND48c3BhbiBjbGFzcz1mb3JtLWNvbnRyb2w+e3t1c2VyLmZpcnN0X25hbWV9fTwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5sYXN0X25hbWUuJHRvdWNoZWQpICYmIGZvcm0ubGFzdF9uYW1lLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLTI0IGZvcj1sYXN0X25hbWUgbmctYmluZD1cInBhZ2VMYWJlbHMubGFzdF9uYW1lIHx8IFxcJ0xhc3QgbmFtZVxcJ1wiPjwvbGFiZWw+PGRpdiBuZy1pZj1mYWxzZSBjbGFzcz1jb2wtMjQ+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD11c2VyLmxhc3RfbmFtZSBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1sYXN0X25hbWUgbmFtZT1sYXN0X25hbWUgcGxhY2Vob2xkZXI9XCJMYXN0IG5hbWVcIj48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmxhc3RfbmFtZS4kdG91Y2hlZCkgJiYgZm9ybS5sYXN0X25hbWUuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIGxhc3QgbmFtZTwvcD48L2Rpdj48ZGl2IGNsYXNzPWNvbC0yND48c3BhbiBjbGFzcz1mb3JtLWNvbnRyb2w+e3t1c2VyLmxhc3RfbmFtZX19PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmVtYWlsLiR0b3VjaGVkKSAmJiBmb3JtLmVtYWlsLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLTI0IGZvcj1lbWFpbCBuZy1iaW5kPVwicGFnZUxhYmVscy5lbWFpbCB8fCBcXCdFLW1haWxcXCdcIj48L2xhYmVsPjxkaXYgbmctaWY9ZmFsc2UgY2xhc3M9Y29sLTI0PjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9dXNlci5lbWFpbCBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1lbWFpbCBuYW1lPWVtYWlsIHBsYWNlaG9sZGVyPUUtbWFpbD48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmVtYWlsLiR0b3VjaGVkKSAmJiBmb3JtLmVtYWlsLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5FbnRlciBlLW1haWw8L3A+PC9kaXY+PGRpdiBjbGFzcz1jb2wtMjQ+PHNwYW4gY2xhc3M9Zm9ybS1jb250cm9sPnt7dXNlci5lbWFpbH19PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9ZmFsc2UgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmxhbmcuJHRvdWNoZWQpICYmIGZvcm0ubGFuZy4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC0yNCBmb3I9bGFuZz5MYW5ndWFnZTwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtMjQ+PHNwYW4gY2xhc3M9Zm9ybS1jb250cm9sIHRpdGxlPVwiKGlkPXt7dXNlci5sYW5nT2JqLmlkfX0pXCI+e3t1c2VyLmxhbmdPYmouTmFtZX19ICh7e3VzZXIubGFuZ09iai5Db2RlfX0pPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cD48ZGl2IGNsYXNzPWNvbC0yND48c3BhbiBjbGFzcz1tci0yIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLnN1cGVyVXNlckxhYmVsIHx8IFxcJ1N1cGVyIHVzZXJcXCdcIj48L3NwYW4+IDxpIGNsYXNzPVwiZmFzIGZhLWNoZWNrLXNxdWFyZVwiIHRpdGxlPXt7cGFnZUxhYmVscy5zdXBlclVzZXJUaXRsZX19IG5nLWlmPXVzZXIuaXNfc3VwZXJ1c2VyPjwvaT4gPGkgY2xhc3M9XCJmYXIgZmEtc3F1YXJlXCIgdGl0bGU9e3twYWdlTGFiZWxzLm5vdFN1cGVyVXNlclRpdGxlfX0gbmctaWY9IXVzZXIuaXNfc3VwZXJ1c2VyPjwvaT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXA+PGRpdiBjbGFzcz1jb2wtc20tMTI+PHNwYW4gY2xhc3M9bXItMiBuZy1iaW5kPVwicGFnZUxhYmVscy5sYXN0TG9naW5MYWJlbCB8fCBcXCdMYXN0IGxvZ2luXFwnXCI+PC9zcGFuPiA8c3BhbiBjbGFzcz1cInRleHQtbXV0ZWQgbWwtMlwiPnt7dXNlci5sYXN0X2xvZ2luIHwgZGF0ZTpcXCdkZC5NTS55eXl5IEhIOm1tOnNzOm1zXFwnfX08L3NwYW4+PC9kaXY+PC9kaXY+PC9mb3JtPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtMTIgbXktMlwiPjxkaXYgY2xhc3M9XCJoNSBib3JkZXItYm90dG9tIHBiLTJcIiBuZy1iaW5kPVwicGFnZUxhYmVscy5jaGFuZ2VQYXNzd29yZEhlYWRlciB8fCBcXCdDaGFuZ2UgcGFzc3dvcmRcXCdcIj48L2Rpdj48Zm9ybSBpZD1jaGFuZ2VQYXNzRm9ybSBuYW1lPWZvcm1hIGNsYXNzPWZvcm0taG9yaXpvbnRhbCByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyIGJnLWRhbmdlci1saWdodFxcJyA6IChmb3JtYS4kc3VibWl0dGVkIHx8IGZvcm1hLmN1cnJlbnRQYXNzLiR0b3VjaGVkKSAmJiBmb3JtYS5jdXJyZW50UGFzcy4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC0yNCBmb3I9Y3VycmVudFBhc3MgbmctYmluZD1cInBhZ2VMYWJlbHMuY3VycmVudFBhc3N3b3JkTGFiZWwgfHwgXFwnQ3VycmVudCBwYXNzd29yZFxcJ1wiPjwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtMjQ+PGlucHV0IHR5cGU9cGFzc3dvcmQgbmctbW9kZWw9Y3VycmVudFBhc3MgbmctcmVxdWlyZWQ9dHJ1ZSBjbGFzcz1mb3JtLWNvbnRyb2wgaWQ9Y3VycmVudFBhc3MgbmFtZT1jdXJyZW50UGFzcyBwbGFjZWhvbGRlcj17e3BhZ2VMYWJlbHMuY3VycmVudFBhc3N3b3JkTGFiZWx9fT48cCBuZy1zaG93PVwiKGZvcm1hLiRzdWJtaXR0ZWQgfHwgZm9ybWEuY3VycmVudFBhc3MuJHRvdWNoZWQpICYmIGZvcm1hLmN1cnJlbnRQYXNzLiRpbnZhbGlkXCIgY2xhc3M9XCJzbWFsbCB0ZXh0LWRhbmdlclwiIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLmN1cnJlbnRQYXNzRXJyb3IgfHwgXFwnRW50ZXIgY3VycmVudCBwYXNzd29yZFxcJ1wiPjwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyIGJnLWRhbmdlci1saWdodFxcJyA6IChmb3JtYS4kc3VibWl0dGVkIHx8IGZvcm1hLnBhc3MxLiR0b3VjaGVkKSAmJiBmb3JtYS5wYXNzMS4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC0yNCBmb3I9cGFzczEgbmctYmluZD1cInBhZ2VMYWJlbHMubmV3UGFzc3dvcmRMYWJlbCB8fCBcXCdOZXcgcGFzc3dvcmRcXCdcIj48L2xhYmVsPjxkaXYgY2xhc3M9Y29sLTI0PjxpbnB1dCB0eXBlPXBhc3N3b3JkIG5nLW1vZGVsPXBhc3MxIG5nLXJlcXVpcmVkPXRydWUgbmctcGF0dGVybj1zdHJvbmdQYXNzUmVnZXggY2xhc3M9Zm9ybS1jb250cm9sIGlkPXBhc3MxIG5hbWU9cGFzczEgcGxhY2Vob2xkZXI9e3twYWdlTGFiZWxzLm5ld1Bhc3N3b3JkTGFiZWx9fT48cCBuZy1zaG93PVwiKGZvcm1hLiRzdWJtaXR0ZWQgfHwgZm9ybWEucGFzczEuJHRvdWNoZWQpICYmIGZvcm1hLnBhc3MxLiRpbnZhbGlkXCIgY2xhc3M9XCJzbWFsbCB0ZXh0LWRhbmdlclwiIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLm5ld1Bhc3NFcnJvciB8fCBcXCdFbnRlciB2YWxpZCBwYXNzd29yZCAoYXQgbGVhc3QgOCBjaGFyYWN0ZXJzIGxvbmcsIGF0IGxlYXN0IDEgbnVtYmVyLCAxIGxvd2VyIGNhc2UgYW5kIDEgdXBwZXIgY2FzZSBsZXR0ZXIgYW5kIDEgc3BlY2lhbCBjaGFyYWN0ZXIpXFwnXCI+PC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXIgYmctZGFuZ2VyLWxpZ2h0XFwnIDogKGZvcm1hLiRzdWJtaXR0ZWQgfHwgZm9ybWEucGFzczIuJHRvdWNoZWQpICYmIGZvcm1hLnBhc3MyLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLTI0IGZvcj1wYXNzMiBuZy1iaW5kPVwicGFnZUxhYmVscy5jb25maXJtTmV3UGFzc3dvcmRMYWJlbCB8fCBcXCdDb25maXJtIG5ldyBwYXNzd29yZFxcJ1wiPjwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtMjQ+PGlucHV0IHR5cGU9cGFzc3dvcmQgbmctbW9kZWw9cGFzczIgbmctcmVxdWlyZWQ9dHJ1ZSBuZy1jaGFuZ2U9dmFsaWRhdGVfcGFzczIoZm9ybWEpIGRlYm91bmNlPTEwMDAgY2xhc3M9Zm9ybS1jb250cm9sIGlkPXBhc3MyIG5hbWU9cGFzczIgcGxhY2Vob2xkZXI9e3twYWdlTGFiZWxzLmNvbmZpcm1OZXdQYXNzd29yZExhYmVsfX0+PHAgbmctc2hvdz1cIihmb3JtYS4kc3VibWl0dGVkIHx8IGZvcm1hLnBhc3MyLiR0b3VjaGVkKSAmJiBmb3JtYS5wYXNzMi4kaW52YWxpZFwiIGNsYXNzPVwic21hbGwgdGV4dC1kYW5nZXJcIiBuZy1iaW5kPVwicGFnZUxhYmVscy5jb25maXJtUGFzc0Vycm9yIHx8IFxcJ1Bhc3N3b3JkcyBtdXN0IG1hdGNoXFwnXCI+PC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGNvbC0yNFwiPjxidXR0b24gdHlwZT1idXR0b24gbmctZGlzYWJsZWQ9Zm9ybWEuJGludmFsaWQgbmctY2xpY2s9Y2hhbmdlX3Bhc3N3b3JkKCkgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIj48c3BhbiBjbGFzcz1cImZhIGZhLWxvY2sgbXItMlwiPjwvc3Bhbj48c3BhbiBuZy1iaW5kPVwicGFnZUxhYmVscy5jaGFuZ2VQYXNzd29yZEJ1dHRvbiB8fCBcXCdDaGFuZ2UgcGFzc3dvcmRcXCdcIj48L3NwYW4+PC9idXR0b24+PC9kaXY+PC9mb3JtPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9ZmFsc2UgY2xhc3M9XCJyb3cgbS0wIG10LTNcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IG15LTFcIj48ZGl2IGNsYXNzPVwiaDUgYm9yZGVyLWJvdHRvbSBwYi0yXCI+R3JvdXBzPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBteS0xXCI+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTIgYm9yZGVyLXJpZ3RoXCI+PGI+R3JvdXAgaWQ8L2I+PC9kaXY+PGRpdiBjbGFzcz1jb2wtbGctMjI+PGI+R3JvdXAgbmFtZTwvYj48L2Rpdj48L2Rpdj48dWwgY2xhc3M9bGlzdC1ncm91cCBuZy1tb2RlbD11c2VyLmdyb3Vwcz48bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gcHgtMFwiIG5nLXJlcGVhdD1cImdyb3VwIGluIHVzZXIuZ3JvdXBzIHRyYWNrIGJ5IGdyb3VwLmlkXCI+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTIgYm9yZGVyLXJpZ3RoXCI+e3tncm91cC5pZH19PC9kaXY+PGRpdiBjbGFzcz1jb2wtbGctMjI+e3tncm91cC5uYW1lfX08L2Rpdj48L2Rpdj48L2xpPjwvdWw+PC9kaXY+PC9kaXY+PGJ1dHRvbiBuZy1pZj1mYWxzZSB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHRcIj48c3BhbiBjbGFzcz1cImZhIGZhLWdyb3VwXCI+PC9zcGFuPiZuYnNwIFJlcXVlc3QgdG8gam9pbiBncm91cDwvYnV0dG9uPjwvZGl2PjxkaXYgbmctaWY9ZmFsc2UgY2xhc3M+PGJ1dHRvbiB0eXBlPXN1Ym1pdCBpZD1jbGVhckJ0biBuZy1kaXNhYmxlZD1mb3JtLiRpbnZhbGlkIGNsYXNzPVwiYnRuIGJ0bi1saWdodFwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtc2F2ZVwiPjwvc3Bhbj4mbmJzcCBTYXZlIHVzZXIgZGV0YWlsczwvYnV0dG9uPjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwNF9zZXR0aW5ncy9hbmd1bGFyVGVtcGxhdGVzL3VzZXJNZW51Lmh0bWwnLCc8ZGl2PjxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+PGRpdiBjbGFzcz1wYW5lbC1oZWFkaW5nPjxzcGFuIGNsYXNzPVwiZmEgZmEtYmFyc1wiPiZuYnNwIE1lbnU8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz48dWwgY2xhc3M9XCJuYXYgbmF2LXBpbGxzIG5hdi1zdGFja2VkXCI+PC91bD48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDRfc2V0dGluZ3MvYW5ndWxhclRlbXBsYXRlcy91c2Vyc0RlZmluaXRpb24uaHRtbCcsJzxkaXYgY2xhc3M9XCJjYXJkIG10LTEgcHgtMlwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcC0yIHRleHQtY2VudGVyIGJvcmRlci1ib3R0b20gcHktMyBtYi00XCI+PHNwYW4gY2xhc3M9aDUgbmctYmluZD1cInBhZ2VMYWJlbHMucGFnZUhlYWRlciB8fCBcXCdVc2Vyc1xcJ1wiPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9Y29sLWxnLTE2Pjxmb3JtIG5nLXN1Ym1pdD1zYXZlVXNlcihmb3JtLiR2YWxpZCkgaWQ9c2F2ZUZvcm0gbmFtZT1mb3JtIGNsYXNzPWZvcm0taG9yaXpvbnRhbCByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2IGNsYXNzPW1iLTQ+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeVwiIG5nLWNsaWNrPW5ld1VzZXJGdW5jKGZvcm0pPjxzcGFuIGNsYXNzPVwiZmEgZmEtcGx1cyBtci0yXCI+PC9zcGFuPjxzcGFuIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLm5ld1VzZXJCdG5MYWJlbCB8fCBcXCdDcmVhdGUgbmV3IHVzZXJcXCdcIj48L3NwYW4+PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnkgbWwtMlwiIG5nLWNsaWNrPWludml0ZVVzZXJGdW5jKGZvcm0pPjxzcGFuIGNsYXNzPVwiZmEgZmEtZW52ZWxvcGUgbXItMlwiPjwvc3Bhbj48c3BhbiBuZy1iaW5kPVwicGFnZUxhYmVscy5qb2luVXNlckJ0bkxhYmVsIHx8IFxcJ0ludml0ZSBwZW9wbGUgdG8gam9pblxcJ1wiPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IG5nLWlmPVwiYWN0aW9uVHlwZT09MFwiPjxkaXYgY2xhc3M9XCJweC0zIHBiLTRcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHAtMSB0ZXh0LWNlbnRlciBib3JkZXItYm90dG9tIG1iLTRcIj48c3BhbiBjbGFzcz1cImg2IHRleHQtcHJpbWFyeVwiIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLmludml0ZVVzZXJIZWFkZXIgfHwgXFwnSW52aXRlIHVzZXJcXCdcIj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBmb3JtLWdyb3VwXCIgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmVtYWlsLiR0b3VjaGVkKSAmJiBmb3JtLmVtYWlsLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLTI0IGZvcj1lbWFpbCBuZy1iaW5kPVwicGFnZUxhYmVscy5lbWFpbCB8fCBcXCdFLW1haWxcXCdcIj48L2xhYmVsPjxkaXYgY2xhc3M9Y29sLTI0PjxpbnB1dCB0eXBlPXRleHQgbmctY2xhc3M9XCJ7XFwnYm9yZGVyLWRhbmdlciB0ZXh0LWRhbmdlclxcJzooZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uZW1haWwuJHRvdWNoZWQpICYmIGZvcm0uZW1haWwuJGludmFsaWR9XCIgbmctbW9kZWw9aW52aXRlVXNlck9iai5lbWFpbCBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1lbWFpbCBuYW1lPWVtYWlsIHBsYWNlaG9sZGVyPXt7cGFnZUxhYmVscy5lbWFpbH19PjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uZW1haWwuJHRvdWNoZWQpICYmIGZvcm0uZW1haWwuJGludmFsaWRcIiBjbGFzcz1cInRleHQtZGFuZ2VyIHNtYWxsXCIgbmctYmluZD1cInBhZ2VMYWJlbHMuZW1haWxFcnJvciB8fCBcXCdFbnRlciBlLW1haWxcXCdcIj48L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBmb3JtLWdyb3VwXCIgbmctY2xhc3M9XCJ7XFwndGV4dC1kYW5nZXJcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uZ3JvdXBzLiR0b3VjaGVkKSAmJiBmb3JtLmdyb3Vwcy4kaW52YWxpZH1cIj48bGFiZWwgY2xhc3M9Y29sLTI0IGZvcj1kZXNjcmlwdGlvbiBuZy1iaW5kPVwicGFnZUxhYmVscy5ncm91cHMgfHwgXFwnR3JvdXBzXFwnXCI+PC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1sZy0yND48a3QtZHJvcGRvd24tbXVsdGlwbGUgbmctaWY9Z3JvdXBzRG93bmxvYWRlZCBuZy1tb2RlbD1pbnZpdGVVc2VyT2JqLmdyb3VwcyBzZWxlY3RlZC1pdGVtcz1pbnZpdGVVc2VyT2JqLmdyb3VwcyBuYW1lPWdyb3VwcyByZXF1aXJlZD1mYWxzZSBkcm9wZG93bi1pdGVtcz1ncm91cExpc3QgZHJvcGRvd24taWQ9XCJcXCdncm91cHNcXCdcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2Zvcm1cXCdcIiBzZWFyY2gtdGV4dD1wYWdlTGFiZWxzLnNlYXJjaEdyb3Vwc1RleHQ+PC9rdC1kcm9wZG93bi1tdWx0aXBsZT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPW15LTM+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtc3VjY2Vzc1wiIG5nLWNsaWNrPXNlbmRJbnZpdGF0aW9uKGZvcm0pPjxzcGFuIGNsYXNzPVwiZmEgZmEtZW52ZWxvcGUgbXItMlwiPjwvc3Bhbj48c3BhbiBuZy1iaW5kPVwicGFnZUxhYmVscy5pbnZpdGVCdXR0b25sYWJlbCB8fCBcXCdTZW5kIGludml0YXRpb25cXCdcIj48L3NwYW4+PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gaWQ9Y2xlYXJCdG4gbmctY2xpY2s9c2hvd1VzZXJEZXRhaWxzRm4oZmFsc2UpIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1kYW5nZXJcIj48c3BhbiBjbGFzcz1cImZhIGZhLXRpbWVzIG1yLTJcIj48L3NwYW4+PHNwYW4gbmctYmluZD1cInBhZ2VMYWJlbHMuY2FuY2VsQnV0dG9ubGFiZWwgfHwgXFwnQ2FuY2VsXFwnXCI+PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJhY3Rpb25UeXBlPT0xXCI+PGRpdiBjbGFzcz1cInB4LTMgcGItNFwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcC0xIHRleHQtY2VudGVyIGJvcmRlci1ib3R0b20gbWItNFwiPjxzcGFuIGNsYXNzPVwiaDYgdGV4dC1wcmltYXJ5XCIgbmctYmluZD1cInBhZ2VMYWJlbHMubmV3VXNlckhlYWRlciB8fCBcXCdOZXcgdXNlclxcJ1wiPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IGZvcm0tZ3JvdXBcIiBuZy1jbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0udXNlcm5hbWUuJHRvdWNoZWQpICYmIGZvcm0udXNlcm5hbWUuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtMjQgZm9yPW9yZ2FuaXNhdGlvbk5hbWUgbmctYmluZD1cInBhZ2VMYWJlbHMudXNlcm5hbWUgfHwgXFwnVXNlcm5hbWVcXCdcIj48L2xhYmVsPjxkaXYgY2xhc3M9Y29sLTI0PjxpbnB1dCBuZy1jbGFzcz1cIntcXCdib3JkZXItZGFuZ2VyIHRleHQtZGFuZ2VyXFwnOihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS51c2VybmFtZS4kdG91Y2hlZCkgJiYgZm9ybS51c2VybmFtZS4kaW52YWxpZCB9XCIgdHlwZT10ZXh0IG5nLW1vZGVsPXNlbGVjdGVkVXNlci5Vc2VySWQudXNlcm5hbWUgbmctcmVxdWlyZWQ9dHJ1ZSBjbGFzcz1mb3JtLWNvbnRyb2wgaWQ9dXNlcm5hbWUgbmFtZT11c2VybmFtZSBwbGFjZWhvbGRlcj17e3BhZ2VMYWJlbHMudXNlcm5hbWV9fT48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnVzZXJuYW1lLiR0b3VjaGVkKSAmJiBmb3JtLnVzZXJuYW1lLiRpbnZhbGlkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlciBzbWFsbFwiIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLnVzZXJuYW1lRXJyb3IgfHwgXFwnRW50ZXIgdXNlcm5hbWVcXCdcIj48L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBmb3JtLWdyb3VwXCIgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnBhc3N3b3JkLiR0b3VjaGVkKSAmJiBmb3JtLnBhc3N3b3JkLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLTI0IGZvcj1wYXNzd29yZCBuZy1iaW5kPVwicGFnZUxhYmVscy5wYXNzd29yZCB8fCBcXCdQYXNzd29yZFxcJ1wiPjwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtMjQ+PGlucHV0IG5nLWNsYXNzPVwie1xcJ2JvcmRlci1kYW5nZXIgdGV4dC1kYW5nZXJcXCc6KGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnBhc3N3b3JkLiR0b3VjaGVkKSAmJiBmb3JtLnBhc3N3b3JkLiRpbnZhbGlkIH1cIiB0eXBlPXBhc3N3b3JkIG5nLW1vZGVsPXNlbGVjdGVkVXNlci5Vc2VySWQucGFzc3dvcmQgbmctcmVxdWlyZWQ9bmV3VXNlciBjbGFzcz1mb3JtLWNvbnRyb2wgaWQ9cGFzc3dvcmQgbmFtZT1wYXNzd29yZCBwbGFjZWhvbGRlcj17e3BhZ2VMYWJlbHMucGFzc3dvcmR9fT48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnBhc3N3b3JkLiR0b3VjaGVkKSAmJiBmb3JtLnBhc3N3b3JkLiRpbnZhbGlkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlciBzbWFsbFwiIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLnBhc3N3b3JkRXJyb3IgfHwgXFwnRW50ZXIgcGFzc3dvcmRcXCdcIj48L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBmb3JtLWdyb3VwXCIgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmZpcnN0X25hbWUuJHRvdWNoZWQpICYmIGZvcm0uZmlyc3RfbmFtZS4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC0yNCBmb3I9Zmlyc3RfbmFtZSBuZy1iaW5kPVwicGFnZUxhYmVscy5maXJzdF9uYW1lIHx8IFxcJ0ZpcnN0IG5hbWVcXCdcIj48L2xhYmVsPjxkaXYgY2xhc3M9Y29sLTI0PjxpbnB1dCB0eXBlPXRleHQgbmctY2xhc3M9XCJ7XFwnYm9yZGVyLWRhbmdlciB0ZXh0LWRhbmdlclxcJzooZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uZmlyc3RfbmFtZS4kdG91Y2hlZCkgJiYgZm9ybS5maXJzdF9uYW1lLiRpbnZhbGlkfVwiIG5nLW1vZGVsPXNlbGVjdGVkVXNlci5Vc2VySWQuZmlyc3RfbmFtZSBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1maXJzdF9uYW1lIG5hbWU9Zmlyc3RfbmFtZSBwbGFjZWhvbGRlcj17e3BhZ2VMYWJlbHMuZmlyc3RfbmFtZX19PjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uZmlyc3RfbmFtZS4kdG91Y2hlZCkgJiYgZm9ybS5maXJzdF9uYW1lLiRpbnZhbGlkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlciBzbWFsbFwiIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLmZpcnN0TmFtZUVycm9yIHx8IFxcJ0VudGVyIGZpcnN0IG5hbWVcXCdcIj48L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBmb3JtLWdyb3VwXCIgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmxhc3RfbmFtZS4kdG91Y2hlZCkgJiYgZm9ybS5sYXN0X25hbWUuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtMjQgZm9yPWxhc3RfbmFtZSBuZy1iaW5kPVwicGFnZUxhYmVscy5sYXN0X25hbWUgfHwgXFwnTGFzdCBuYW1lXFwnXCI+PC9sYWJlbD48ZGl2IGNsYXNzPWNvbC0yND48aW5wdXQgbmctY2xhc3M9XCJ7XFwnYm9yZGVyLWRhbmdlciB0ZXh0LWRhbmdlclxcJzooZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ubGFzdF9uYW1lLiR0b3VjaGVkKSAmJiBmb3JtLmxhc3RfbmFtZS4kaW52YWxpZH1cIiB0eXBlPXRleHQgbmctbW9kZWw9c2VsZWN0ZWRVc2VyLlVzZXJJZC5sYXN0X25hbWUgbmctcmVxdWlyZWQ9dHJ1ZSBjbGFzcz1mb3JtLWNvbnRyb2wgaWQ9bGFzdF9uYW1lIG5hbWU9bGFzdF9uYW1lIHBsYWNlaG9sZGVyPXt7cGFnZUxhYmVscy5sYXN0X25hbWV9fT48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmxhc3RfbmFtZS4kdG91Y2hlZCkgJiYgZm9ybS5sYXN0X25hbWUuJGludmFsaWRcIiBjbGFzcz1cInRleHQtZGFuZ2VyIHNtYWxsXCIgbmctYmluZD1cInBhZ2VMYWJlbHMubGFzdE5hbWVFcnJvciB8fCBcXCdFbnRlciBsYXN0IG5hbWVcXCdcIj48L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBmb3JtLWdyb3VwXCIgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmVtYWlsLiR0b3VjaGVkKSAmJiBmb3JtLmVtYWlsLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLTI0IGZvcj1lbWFpbCBuZy1iaW5kPVwicGFnZUxhYmVscy5lbWFpbCB8fCBcXCdFLW1haWxcXCdcIj48L2xhYmVsPjxkaXYgY2xhc3M9Y29sLTI0PjxpbnB1dCB0eXBlPXRleHQgbmctY2xhc3M9XCJ7XFwnYm9yZGVyLWRhbmdlciB0ZXh0LWRhbmdlclxcJzooZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uZW1haWwuJHRvdWNoZWQpICYmIGZvcm0uZW1haWwuJGludmFsaWR9XCIgbmctbW9kZWw9c2VsZWN0ZWRVc2VyLlVzZXJJZC5lbWFpbCBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1lbWFpbCBuYW1lPWVtYWlsIHBsYWNlaG9sZGVyPXt7cGFnZUxhYmVscy5lbWFpbH19PjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uZW1haWwuJHRvdWNoZWQpICYmIGZvcm0uZW1haWwuJGludmFsaWRcIiBjbGFzcz1cInRleHQtZGFuZ2VyIHNtYWxsXCIgbmctYmluZD1cInBhZ2VMYWJlbHMuZW1haWxFcnJvciB8fCBcXCdFbnRlciBlLW1haWxcXCdcIj48L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBmb3JtLWdyb3VwXCIgbmctY2xhc3M9XCJ7XFwndGV4dC1kYW5nZXJcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uZ3JvdXBzLiR0b3VjaGVkKSAmJiBmb3JtLmdyb3Vwcy4kaW52YWxpZH1cIj48bGFiZWwgY2xhc3M9Y29sLTI0IGZvcj1kZXNjcmlwdGlvbiBuZy1iaW5kPVwicGFnZUxhYmVscy5ncm91cHMgfHwgXFwnR3JvdXBzXFwnXCI+PC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1sZy0yND48a3QtZHJvcGRvd24tbXVsdGlwbGUgbmctaWY9Z3JvdXBzRG93bmxvYWRlZCBuZy1tb2RlbD1zZWxlY3RlZFVzZXIuVXNlcklkLmdyb3VwcyBzZWxlY3RlZC1pdGVtcz1zZWxlY3RlZFVzZXIuVXNlcklkLmdyb3VwcyBuYW1lPWdyb3VwcyByZXF1aXJlZD1mYWxzZSBkcm9wZG93bi1pdGVtcz1ncm91cExpc3QgZHJvcGRvd24taWQ9XCJcXCdncm91cHNcXCdcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2Zvcm1cXCdcIiBzZWFyY2gtdGV4dD1wYWdlTGFiZWxzLnNlYXJjaEdyb3Vwc1RleHQ+PC9rdC1kcm9wZG93bi1tdWx0aXBsZT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPW15LTM+PGJ1dHRvbiB0eXBlPXN1Ym1pdCBpZD1zYXZlQnRuIG5nLWRpc2FibGVkPWZvcm0uJGludmFsaWQgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXN1Y2Nlc3NcIj48c3BhbiBjbGFzcz1cImZhIGZhLXNhdmUgbXItMlwiPjwvc3Bhbj48c3BhbiBuZy1iaW5kPVwicGFnZUxhYmVscy5zYXZlQnV0dG9ubGFiZWwgfHwgXFwnU2F2ZSB1c2VyIGRldGFpbHNcXCdcIj48L3NwYW4+PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gaWQ9Y2xlYXJCdG4gbmctY2xpY2s9c2hvd1VzZXJEZXRhaWxzRm4oZmFsc2UpIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1kYW5nZXJcIj48c3BhbiBjbGFzcz1cImZhIGZhLXRpbWVzIG1yLTJcIj48L3NwYW4+PHNwYW4gbmctYmluZD1cInBhZ2VMYWJlbHMuY2FuY2VsQnV0dG9ubGFiZWwgfHwgXFwnQ2FuY2VsXFwnXCI+PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9IXVzZXJzTG9hZGVkIHN0eWxlPVwibWluLXdpZHRoOiAxNiU7YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IHotaW5kZXg6IDIwMDAgIWltcG9ydGFudDsgdG9wOiA1MCU7bGVmdDogNTAlOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlKTsgcG9zaXRpb246IGFic29sdXRlO3BhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50O3RleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O2JvcmRlcjogMXB4IHNvbGlkICNFN0U5RUM7Ym9yZGVyLXJhZGl1czogMC41cmVtICFpbXBvcnRhbnQ7XCI+PGRpdiBjbGFzcz1cImxvYWRlciBsb2FkZXItbGdcIj48L2Rpdj48ZGl2IGNsYXNzPW10LTI+PGRpdiBjbGFzcz1cInBhbmVsLXRpdGxlIHB4LTFcIiBzdHlsZT12ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y29sb3I6IzM0OThkYj48c3BhbiBuZy1iaW5kPVwicGFnZUxhYmVscy5sb2FkVXNlcnNNc2cgfHwgXFwnTG9hZGluZyB1c2Vycy4uLlxcJ1wiPjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicC0wIG1iLTQgY29sLWxnLTEwXCI+PGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuZy1tb2RlbC1vcHRpb25zPXtkZWJvdW5jZTozMDB9IHBsYWNlaG9sZGVyPXt7cGFnZUxhYmVscy5zZWFyY2hMYWJlbH19IG5nLW1vZGVsPXVzZXJGaWx0ZXI+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwPjxkaXYgY2xhc3M9XCJyb3cgbS0xXCIgc3R5bGU9XCJib3JkZXItYm90dG9tOiAxcHggc29saWQgI0U3RTlFQztcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTEgbXktYXV0byBib2xkXCIgbmctYmluZD1cInBhZ2VMYWJlbHMuSWRIZWFkZXIgfHwgXFwnSWRcXCdcIj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTUgbXktYXV0byBib2xkXCIgbmctYmluZD1cInBhZ2VMYWJlbHMudXNlckxpc3RVc2VybmFtZUhlYWRlciB8fCBcXCdVc2VybmFtZVxcJ1wiPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMTQgYm9sZCBteS1hdXRvIHRleHQtbGVmdFwiIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLnVzZXJMaXN0R3JvdXBzSGVhZGVyIHx8IFxcJ0dyb3Vwc1xcJ1wiPjwvZGl2PjwvZGl2Pjx1bCBuZy1tb2RlbD11c2VycyBjbGFzcz1wZXJtaXNzaW9uLWxpc3Q+PGxpIGNsYXNzPWl0ZW0gbmctcmVwZWF0PVwidXNlciBpbiB1c2VycyB8IGZpbHRlcjp7VXNlcklkOiB7IHVzZXJuYW1lOiB1c2VyRmlsdGVyfX0gdHJhY2sgYnkgdXNlci5pZFwiIG5nLWNsYXNzPVwie1xcJ2FjdGl2ZVxcJzp1c2VyLmlkPT1zZWxlY3RlZFVzZXIuaWR9XCI+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPWNvbC1sZy0xPjxkaXYgY2xhc3M9dGV4dC1tdXRlZD57e3VzZXIuVXNlcklkLmlkfX08L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy01PjxkaXY+e3t1c2VyLlVzZXJJZC51c2VybmFtZX19PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0xNCB0ZXh0LWxlZnRcIj48ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQgdGV4dC1tdXRlZCBtLTFcIiBuZy1yZXBlYXQ9XCJncm91cCBpbiB1c2VyLlVzZXJJZC5ncm91cHNcIj57e2dyb3VwLm5hbWV9fTwvZGl2PjxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodCB0ZXh0LW11dGVkIG0tMVwiIG5nLWlmPSF1c2VyLlVzZXJJZC5ncm91cHM+Tm9uZTwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctNCB0ZXh0LXJpZ2h0XCI+PGJ1dHRvbiBuZy1oaWRlPVwic2VsZWN0ZWRVc2VyICYmIHVzZXIgIT0gc2VsZWN0ZWRVc2VyXCIgdHlwZT1idXR0b24gbmctY2xpY2s9ZWRpdFVzZXIodXNlciwkaW5kZXgpIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tb3V0bGluZS1wcmltYXJ5IG1yLTFcIj48c3BhbiBuZy1iaW5kPVwicGFnZUxhYmVscy5lZGl0QnV0dG9uTGFiZWwgfHwgXFwnRWRpdFxcJ1wiPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IG10LTRcIiBuZy1zaG93PVwic2VsZWN0ZWRVc2VyICYmIHNlbGVjdGVkVXNlci5pZD09dXNlci5pZFwiPjxkaXYgY2xhc3M9XCJweC0zIHBiLTRcIj48ZGl2IG5nLWlmPSFuZXdVc2VyIGNsYXNzPVwicm93IHBiLTIgZm9ybS1ncm91cFwiPjxkaXYgY2xhc3M9XCJjb2wtMTggc3VwZXJ1c2VyIG0tMVwiPjxzcGFuIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLnN1cGVyVXNlckxhYmVsIHx8IFxcJ1N1cGVyIHVzZXJcXCdcIj48L3NwYW4+OiA8aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1rdC1jaGVja2JveC1wcm9wZXJ0aWVzIG5hbWU9aXNBZG1pbiBuZy1tb2RlbD1zZWxlY3RlZFVzZXIuVXNlcklkLmlzX3N1cGVydXNlciBuZy1jaGVja2VkPXNlbGVjdGVkVXNlci5Vc2VySWQuaXNfc3VwZXJ1c2VyPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj48bGFiZWwgY2xhc3MgZm9yPWxhbmcgbmctYmluZD1cInBhZ2VMYWJlbHMubGFzdExvZ2luTGFiZWwgfHwgXFwnTGFzdCBsb2dpbjpcXCdcIj48L2xhYmVsPiA8c3BhbiBjbGFzcz46IHt7c2VsZWN0ZWRVc2VyLlVzZXJJZC5sYXN0X2xvZ2luIHwgZGF0ZTpcXCdkZC5NTS55eXl5IEhIOm1tOnNzXFwnfX08L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBmb3JtLWdyb3VwXCIgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnVzZXJuYW1lLiR0b3VjaGVkKSAmJiBmb3JtLnVzZXJuYW1lLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLTI0IGZvcj1vcmdhbmlzYXRpb25OYW1lIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLnVzZXJuYW1lIHx8IFxcJ1VzZXJuYW1lXFwnXCI+PC9sYWJlbD48ZGl2IGNsYXNzPWNvbC0yND48aW5wdXQgbmctY2xhc3M9XCJ7XFwnYm9yZGVyLWRhbmdlciB0ZXh0LWRhbmdlclxcJzooZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0udXNlcm5hbWUuJHRvdWNoZWQpICYmIGZvcm0udXNlcm5hbWUuJGludmFsaWQgfVwiIHR5cGU9dGV4dCBuZy1tb2RlbD1zZWxlY3RlZFVzZXIuVXNlcklkLnVzZXJuYW1lIG5nLXJlcXVpcmVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPXVzZXJuYW1lIG5hbWU9dXNlcm5hbWUgcGxhY2Vob2xkZXI9e3twYWdlTGFiZWxzLnVzZXJuYW1lfX0+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS51c2VybmFtZS4kdG91Y2hlZCkgJiYgZm9ybS51c2VybmFtZS4kaW52YWxpZFwiIGNsYXNzPVwidGV4dC1kYW5nZXIgc21hbGxcIiBuZy1iaW5kPVwicGFnZUxhYmVscy51c2VybmFtZUVycm9yIHx8IFxcJ0VudGVyIHVzZXJuYW1lXFwnXCI+PC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgZm9ybS1ncm91cFwiIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5maXJzdF9uYW1lLiR0b3VjaGVkKSAmJiBmb3JtLmZpcnN0X25hbWUuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtMjQgZm9yPWZpcnN0X25hbWUgbmctYmluZD1cInBhZ2VMYWJlbHMuZmlyc3RfbmFtZSB8fCBcXCdGaXJzdCBuYW1lXFwnXCI+PC9sYWJlbD48ZGl2IGNsYXNzPWNvbC0yND48aW5wdXQgdHlwZT10ZXh0IG5nLWNsYXNzPVwie1xcJ2JvcmRlci1kYW5nZXIgdGV4dC1kYW5nZXJcXCc6KGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmZpcnN0X25hbWUuJHRvdWNoZWQpICYmIGZvcm0uZmlyc3RfbmFtZS4kaW52YWxpZH1cIiBuZy1tb2RlbD1zZWxlY3RlZFVzZXIuVXNlcklkLmZpcnN0X25hbWUgbmctcmVxdWlyZWQ9dHJ1ZSBjbGFzcz1mb3JtLWNvbnRyb2wgaWQ9Zmlyc3RfbmFtZSBuYW1lPWZpcnN0X25hbWUgcGxhY2Vob2xkZXI9e3twYWdlTGFiZWxzLmZpcnN0X25hbWV9fT48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmZpcnN0X25hbWUuJHRvdWNoZWQpICYmIGZvcm0uZmlyc3RfbmFtZS4kaW52YWxpZFwiIGNsYXNzPVwidGV4dC1kYW5nZXIgc21hbGxcIiBuZy1iaW5kPVwicGFnZUxhYmVscy5maXJzdE5hbWVFcnJvciB8fCBcXCdFbnRlciBmaXJzdCBuYW1lXFwnXCI+PC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgZm9ybS1ncm91cFwiIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5sYXN0X25hbWUuJHRvdWNoZWQpICYmIGZvcm0ubGFzdF9uYW1lLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLTI0IGZvcj1sYXN0X25hbWUgbmctYmluZD1cInBhZ2VMYWJlbHMubGFzdF9uYW1lIHx8IFxcJ0xhc3QgbmFtZVxcJ1wiPjwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtMjQ+PGlucHV0IG5nLWNsYXNzPVwie1xcJ2JvcmRlci1kYW5nZXIgdGV4dC1kYW5nZXJcXCc6KGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmxhc3RfbmFtZS4kdG91Y2hlZCkgJiYgZm9ybS5sYXN0X25hbWUuJGludmFsaWR9XCIgdHlwZT10ZXh0IG5nLW1vZGVsPXNlbGVjdGVkVXNlci5Vc2VySWQubGFzdF9uYW1lIG5nLXJlcXVpcmVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPWxhc3RfbmFtZSBuYW1lPWxhc3RfbmFtZSBwbGFjZWhvbGRlcj17e3BhZ2VMYWJlbHMubGFzdF9uYW1lfX0+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5sYXN0X25hbWUuJHRvdWNoZWQpICYmIGZvcm0ubGFzdF9uYW1lLiRpbnZhbGlkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlciBzbWFsbFwiIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLmxhc3ROYW1lRXJyb3IgfHwgXFwnRW50ZXIgbGFzdCBuYW1lXFwnXCI+PC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgZm9ybS1ncm91cFwiIG5nLWNsYXNzPVwieyBcXCd0ZXh0LWRhbmdlclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5lbWFpbC4kdG91Y2hlZCkgJiYgZm9ybS5lbWFpbC4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC0yNCBmb3I9ZW1haWwgbmctYmluZD1cInBhZ2VMYWJlbHMuZW1haWwgfHwgXFwnRS1tYWlsXFwnXCI+PC9sYWJlbD48ZGl2IGNsYXNzPWNvbC0yND48aW5wdXQgdHlwZT10ZXh0IG5nLWNsYXNzPVwie1xcJ2JvcmRlci1kYW5nZXIgdGV4dC1kYW5nZXJcXCc6KGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmVtYWlsLiR0b3VjaGVkKSAmJiBmb3JtLmVtYWlsLiRpbnZhbGlkfVwiIG5nLW1vZGVsPXNlbGVjdGVkVXNlci5Vc2VySWQuZW1haWwgbmctcmVxdWlyZWQ9dHJ1ZSBjbGFzcz1mb3JtLWNvbnRyb2wgaWQ9ZW1haWwgbmFtZT1lbWFpbCBwbGFjZWhvbGRlcj17e3BhZ2VMYWJlbHMuZW1haWx9fT48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmVtYWlsLiR0b3VjaGVkKSAmJiBmb3JtLmVtYWlsLiRpbnZhbGlkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlciBzbWFsbFwiIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLmVtYWlsRXJyb3IgfHwgXFwnRW50ZXIgZS1tYWlsXFwnXCI+PC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgZm9ybS1ncm91cFwiIG5nLWNsYXNzPVwie1xcJ3RleHQtZGFuZ2VyXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmdyb3Vwcy4kdG91Y2hlZCkgJiYgZm9ybS5ncm91cHMuJGludmFsaWR9XCI+PGxhYmVsIGNsYXNzPWNvbC0yNCBmb3I9ZGVzY3JpcHRpb24gbmctYmluZD1cInBhZ2VMYWJlbHMudXNlckxpc3RHcm91cHNIZWFkZXIgfHwgXFwnR3JvdXBzXFwnXCI+PC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1sZy0yND48a3QtZHJvcGRvd24tbXVsdGlwbGUgbmctaWY9Z3JvdXBzRG93bmxvYWRlZCBuZy1tb2RlbD11c2VyLlVzZXJJZC5ncm91cHMgc2VsZWN0ZWQtaXRlbXM9dXNlci5Vc2VySWQuZ3JvdXBzIG5hbWU9Z3JvdXBzIHJlcXVpcmVkPWZhbHNlIGRyb3Bkb3duLWl0ZW1zPWdyb3VwTGlzdCBkcm9wZG93bi1pZD1cIlxcJ2dyb3Vwc1xcJ1wiIHBhcmVudC1mb3JtLWlkPVwiXFwnZm9ybVxcJ1wiIHNlYXJjaC10ZXh0PVwicGFnZUxhYmVscy5zZWFyY2hHcm91cHNUZXh0IHx8IFxcJ1NlYXJjaCBvciBzZWxlY3QgZ3JvdXBzLi4uXFwnXCI+PC9rdC1kcm9wZG93bi1tdWx0aXBsZT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG10LTRcIj48ZGl2IGNsYXNzPWNvbC0xOD48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVJlc2V0UGFzc3dvcmQoc2VsZWN0ZWRVc2VyLlVzZXJJZC5pZCkgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXdhcm5pbmdcIj48c3BhbiBjbGFzcz1cImZhIGZhLXBhc3N3b3JkIG1yLTJcIj48L3NwYW4+PHNwYW4gbmctYmluZD1cInBhZ2VMYWJlbHMucmVzZXRCdXR0b25sYWJlbCB8fCBcXCdSZXNldCBwYXNzd29yZFxcJ1wiPjwvc3Bhbj48L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1pZj1zZWxlY3RlZFVzZXIucmVzZXRQYXNzd29yZFJlZiBuZy1jbGljaz1Db3B5UmVzZXRQYXNzd29yZExpbmsoKSBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBteC0zXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1jb3B5IG1yLTJcIj48L3NwYW4+PHNwYW4gbmctYmluZD1cInBhZ2VMYWJlbHMuY29weUJ1dHRvbmxhYmVsIHx8IFxcJ0NsaWNrIHRvIGNvcHkgcmVzZXQgcGFzc3dvcmQgbGlua1xcJ1wiPjwvc3Bhbj48L2J1dHRvbj4gPHNwYW4gbmctY2xhc3M9XCJ7XFwndmlzaWJpbGl0eS12aXNpYmxlXFwnOmNvcHlQYXNzUmVzZXRMaW5rLFxcJ3Zpc2liaWxpdHktaGlkZGVuXFwnOiFjb3B5UGFzc1Jlc2V0TGlua31cIiBjbGFzcz1cInRleHQtcHJpbWFyeSBzbWFsbCBtbC0xXCIgbmctYmluZD1cInBhZ2VMYWJlbHMuY29weU1zZyB8fCBcXCdDb3BpZWQhXFwnXCI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj48YnV0dG9uIHR5cGU9c3VibWl0IGlkPXNhdmVCdG4gbmctZGlzYWJsZWQ9Zm9ybS4kaW52YWxpZCBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtc3VjY2VzcyBteC0yXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1zYXZlIG1yLTJcIj48L3NwYW4+PHNwYW4gbmctYmluZD1cInBhZ2VMYWJlbHMuc2F2ZUJ1dHRvbmxhYmVsIHx8IFxcJ1NhdmUgdXNlciBkZXRhaWxzXFwnXCI+PC9zcGFuPjwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGlkPWNsZWFyQnRuIG5nLWNsaWNrPXNob3dVc2VyRGV0YWlsc0ZuKGZhbHNlKSBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtZGFuZ2VyXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS10aW1lcyBtci0yXCI+PC9zcGFuPjxzcGFuIG5nLWJpbmQ9XCJwYWdlTGFiZWxzLmNhbmNlbEJ1dHRvbmxhYmVsIHx8IFxcJ0NhbmNlbFxcJ1wiPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2xpPjwvdWw+PC9kaXY+PC9mb3JtPjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTggbmctZm9ybT1mb3JtQWR2PjxkaXYgY2xhc3M9ZGl2LTIgc3R5bGU9XCJwYWRkaW5nOjAgMCAxMnB4XCI+PGRpdiBjbGFzcz1kaXYtMz57ezo6cGFnZUxhYmVscy51c2VyQWR2YW5jZWRTZXR0aW5nc319PC9kaXY+PGJ1dHRvbiBuZy1jbGljaz1zYXZlQWR2YW5jZWRVc2VyUGFyYW1zKCkgdHlwZT1idXR0b24gY2xhc3M9XCJkaXYtNiBidG4gYnRuLXN1Y2Nlc3NcIj57eyA6OnBhZ2VMYWJlbHMuc2F2ZSB9fTwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9ZGl2LTc+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5XCIgbmctY2xpY2s9YWRkRGF0YXNldCgpIHN0eWxlPVwiYm9yZGVyOiAxcHggZGFzaGVkIHZhcigtLXByaW1hcnktcHJpbWFyeS0xMDAsICMyYzYwZTUpO1wiPjxkaXYgY2xhc3M9ZGl2LTk+KyB7ezo6cGFnZUxhYmVscy5hZGREYXRhc2V0IH19PC9kaXY+PC9idXR0b24+PC9kaXY+PGRpdiBuZy1pZj1hZHZhbmNlZFVzZXJQcm9wTGlzdD48ZGl2IG5nLXJlcGVhdD1cImRhdGFzZXQgaW4gYWR2YW5jZWRVc2VyUHJvcExpc3QgfCBmaWx0ZXI6ICgge2lzRGVsZXRlZCA6IFxcJyF0cnVlXFwnfSlcIiBjbGFzcz1kaXYtMTA+PGRpdiBjbGFzcz1kaXYtMTE+PGRpdiBjbGFzcz1kaXYtMTI+RGF0YXNldCB7eyRpbmRleCsxfX08L2Rpdj48YnV0dG9uIG5nLWNsaWNrPXJlbW92ZURhdGFzZXQoZGF0YXNldCwkaW5kZXgpIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgYnRuLXhzIGRpdi0xM1wiPjxpIGNsYXNzPVwiZmFzIGZhLXRyYXNoLWFsdFwiPjwvaT48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPW10LTI+RGF0YXNldDxrdC1kcm9wZG93bi1zdGFuZGFyZCBuZy1pZj1yZXNvdXJjZUxpc3QgaXMtbXVsdGlwbGU9ZmFsc2UgbmctbW9kZWw9ZGF0YXNldC5zZWxlY3RlZEl0ZW0gc2VsZWN0ZWQtaXRlbXM9ZGF0YXNldC5zZWxlY3RlZEl0ZW0gcmVxdWlyZWQtZmllbGQ9dHJ1ZSBkcm9wZG93bi1pdGVtcz1yZXNvdXJjZUxpc3QgZHJvcGRvd24taWQ9XCJcXCdyZXNvdXJjZVxcJytOYW1lK0l0ZW1JZFwiIHBhcmVudC1mb3JtLWlkPVwiXFwnZm9ybUFkdlxcJ1wiIHNlYXJjaC10ZXh0PVwiXFwnU2VsZWN0IGRhdGFzZXQuLi5cXCdcIiBvbi1zZWxlY3QtZm49XCJvblNlbGVjdFJlc291cmNlQ2FsbGJhY2soZGF0YXNldCwgJGluZGV4KVwiPjwva3QtZHJvcGRvd24tc3RhbmRhcmQ+PGRpdiBuZy1pZj1cInJlc291cmNlTGlzdC5sZW5ndGg9PTBcIj5ObyBhcHBsaWNhYmxlIGRhdGFzZXRzICE8L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPWRhdGFzZXRGaWVsZHNMaXN0W2RhdGFzZXQuc2VsZWN0ZWRJdGVtLmlkXSBjbGFzcz1tdC0yPlVzZXIgZmllbGQ8a3QtZHJvcGRvd24tc3RhbmRhcmQgaXMtbXVsdGlwbGU9ZmFsc2UgbmctbW9kZWw9ZGF0YXNldC5zZWxlY3RlZEZpZWxkIHNlbGVjdGVkLWl0ZW1zPWRhdGFzZXQuc2VsZWN0ZWRGaWVsZCByZXF1aXJlZC1maWVsZD10cnVlIGRyb3Bkb3duLWl0ZW1zPWRhdGFzZXRGaWVsZHNMaXN0W2RhdGFzZXQuc2VsZWN0ZWRJdGVtLmlkXSBkcm9wZG93bi1pZD1cIlxcJ2RhdGFzZXRcXCcrTmFtZStJdGVtSWRcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2Zvcm1BZHZcXCdcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlbGVjdCBmaWVsZC4uLlxcJ1wiIG9uLXNlbGVjdC1mbj1vblNlbGVjdFJlc291cmNlQ2FsbGJhY2syKGRhdGFzZXQuc2VsZWN0ZWRGaWVsZCxtb2RlbCk+PC9rdC1kcm9wZG93bi1zdGFuZGFyZD48L2Rpdj48bGFiZWwgY2xhc3M9bXQtMiBmb3I9cmVxdWlyZWR7e2ZkLlByZXNlbnRhdGlvbklkfX0+UmVxdWlyZWQgPGlucHV0IG5hbWU9cmVxdWlyZWR7e2ZkLlByZXNlbnRhdGlvbklkfX0gdHlwZT1jaGVja2JveCBjbGFzcz1rdC1jaGVja2JveC1wcm9wZXJ0aWVzIG5nLW1vZGVsPWRhdGFzZXQucmVxdWlyZWQ+PC9sYWJlbD4gPGxhYmVsIGNsYXNzPW10LTIgZm9yPXVzZXJub3Rhc3NpZ25lZHt7ZmQuUHJlc2VudGF0aW9uSWR9fT5FcnJvciBtZXNzYWdlIHdoZW4gcmVxdWlyZWQgdXNlciBkYXRhIGlzIG5vdCBwcmVzZW50IGFmdGVyIGxvZ2luIDxpbnB1dCBuYW1lPXVzZXJub3Rhc3NpZ25lZHt7ZmQuUHJlc2VudGF0aW9uSWR9fSB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9ZGF0YXNldC5hZHZhbmNlZFVzZXJQcm9wRXJyb3JNZXNzYWdlPjwvbGFiZWw+IDxsYWJlbCBjbGFzcz1tdC0yIGZvcj11c2Vybm90YXNzaWduZWR7e2ZkLlByZXNlbnRhdGlvbklkfX0+UmVkaXJlY3Rpb24gcGFnZSB3aGVuIHJlcXVpcmVkIHVzZXIgZGF0YSBpcyBub3QgcHJlc2VudCBhZnRlciBsb2dpbiA8aW5wdXQgbmFtZT11c2Vybm90YXNzaWduZWR7e2ZkLlByZXNlbnRhdGlvbklkfX0gdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWRhdGFzZXQuYWR2YW5jZWRVc2VyUHJvcEVycm9yUGFnZT48L2xhYmVsPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxzdHlsZT5cXHJcXG5cXHJcXG4gLml0ZW0uYWN0aXZlIHtcXHJcXG5cXHRiYWNrZ3JvdW5kLWNvbG9yOmNvcm5zaWxrO1xcclxcbiB9XFxyXFxuIFxcclxcbiAgLmRpdiB7XFxyXFxuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxyXFxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XFxyXFxuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxyXFxuICAgICAgICB9XFxyXFxuICAgIFxcclxcbiAgLmRpdi0yIHtcXHJcXG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcclxcbiAgICAgICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XFxyXFxuICAgICAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XFxyXFxuICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCA7XFxyXFxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XFxyXFxuICAgICAgICAgIHdpZHRoOiAxMDAlO1xcclxcbiAgICAgICAgICBnYXA6IDIwcHg7XFxyXFxuICAgICAgICAgIHBhZGRpbmc6IDAgMjBweCAxMnB4O1xcclxcbiAgICAgICAgfVxcclxcbiAgICAgICBcXHJcXG4gICAgICAgIC5kaXYtMyB7XFxyXFxuXFxyXFxuICAgICAgICAgIG1hcmdpbi10b3A6IDdweDtcXHJcXG4gICAgICAgICAgZmxleC1ncm93OiAxO1xcclxcbiAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcclxcbiAgICAgICAgICBmb250OiA1MDAgMjBweCBSb2JvdG8sIHNhbnMtc2VyaWY7XFxyXFxuICAgICAgICB9XFxyXFxuXFx0XFx0XFxyXFxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHtcXHJcXG4gICAgICAgICAgLmRpdi0zIHtcXHJcXG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogaW5pdGlhbDtcXHJcXG4gICAgICAgICAgfVxcclxcbiAgICAgICAgfVxcclxcblxcclxcbiAgICAgICBcXHJcXG4gICAgICAgIC5kaXYtNiB7XFxyXFxuICAgICAgICAgIGNvbG9yOiAjZmZmO1xcclxcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxyXFxuICAgICAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XFxyXFxuICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxyXFxuICAgICAgICAgIGZvbnQ6IDUwMCAxNnB4LzIwcHggUm9ib3RvLCAtYXBwbGUtc3lzdGVtLCBSb2JvdG8sIEhlbHZldGljYSxcXHJcXG4gICAgICAgICAgICBzYW5zLXNlcmlmO1xcclxcbiAgICAgICAgfVxcclxcbiAgICAgICBcXHJcXG5cXHQgICBcXHJcXG4gICAgICAgIC5kaXYtNyB7XFxyXFxuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcclxcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcclxcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcclxcbiAgICAgICAgICBtYXJnaW4tdG9wOiAxMnB4O1xcclxcbiAgICAgICAgICBnYXA6IDEwcHg7XFxyXFxuICAgICAgICAgIHBhZGRpbmc6IDhweCAxN3B4O1xcclxcbiAgICAgICAgfVxcclxcblxcdFxcclxcbiAgICAgICBcXHJcXG4gICAgICAgIC5kaXYtOSB7XFxyXFxuXFxyXFxuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG4gICAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcXHJcXG4gICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXHJcXG4gICAgICAgICAgZm9udDogNTAwIDE2cHgvMjBweCBSb2JvdG8sIC1hcHBsZS1zeXN0ZW0sIFJvYm90bywgSGVsdmV0aWNhLFxcclxcbiAgICAgICAgICAgIHNhbnMtc2VyaWY7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAuZGl2LTEwIHtcXHJcXG4gICAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcXHJcXG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xcclxcbiAgICAgICAgICBib3gtc2hhZG93OiAwcHggMHB4IDhweCAwcHggcmdiYSg0NCwgOTYsIDIyOSwgMC4xMik7XFxyXFxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWxpZ2h0LWxpZ2h0LTEwMCwgI2ZmZik7XFxyXFxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XFxyXFxuICAgICAgICAgIG1hcmdpbi10b3A6IDEycHg7XFxyXFxuICAgICAgICAgIHdpZHRoOiAxMDAlO1xcclxcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcclxcbiAgICAgICAgICBwYWRkaW5nOiAyNHB4IDE2cHg7XFxyXFxuICAgICAgICB9XFxyXFxuICAgICAgIFxcclxcbiAgICAgICAgLmRpdi0xMSB7XFxyXFxuICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXHJcXG4gICAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xcclxcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcclxcbiAgICAgICAgICBnYXA6IDIwcHg7XFxyXFxuICAgICAgICB9XFxyXFxuICAgICAgIFxcclxcbiAgICAgICAgLmRpdi0xMiB7XFxyXFxuICAgICAgXFxyXFxuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG4gICAgICAgICAgbWFyZ2luLXRvcDogNXB4O1xcclxcbiAgICAgICAgICBmbGV4LWdyb3c6IDE7XFxyXFxuICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxyXFxuICAgICAgICAgIGZvbnQ6IDcwMCAxNnB4IFJvYm90bywgc2Fucy1zZXJpZjtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgXFxyXFxuICAgICAgICAuZGl2LTEzIHtcXHJcXG4gICAgICAgICAgY29sb3I6ICNmZmY7IFxcclxcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kZXN0cnVjdGl2ZS1kZXN0cnVjdGl2ZS0xMDAtYWN0aXZlLCAjZTU0YzNjKTtcXHJcXG5cXHRcXHRwYWRkaW5nOiAzcHg7XFxyXFxuXFx0XFx0Ym9yZGVyLXJhZGl1czogM3B4O1xcclxcblxcdFxcdHRvcDogLTE1cHg7XFxyXFxuXFx0XFx0cG9zaXRpb246IHJlbGF0aXZlO1xcclxcblxcdFxcclxcbiAgICAgICAgfVxcclxcbiAgICBcXHJcXG48L3N0eWxlPicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwNF9zZXR0aW5ncy9hbmd1bGFyVGVtcGxhdGVzL3VzZXJzU2VjdXJpdHkuaHRtbCcsJzxkaXYgY2xhc3M9XCJjYXJkIG10LTEgcHgtMlwiPjxkaXYga3QtaGVscC1jZW50ZXIgaGVscC1pZD1cIlxcJ3VzZXJzZWN1cml0eWRlZlxcJ1wiPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMjQgcC0yIHRleHQtY2VudGVyIGJvcmRlci1ib3R0b20gcHktMyBtYi00XCI+PHNwYW4gY2xhc3M9aDUgbmctYmluZD1cIjo6bGFiZWwucGFnZUhlYWRlciB8fCBcXCdVc2Vyc1xcJ1wiPjwvc3Bhbj48L2Rpdj48Zm9ybSBuZy1zdWJtaXQ9c2F2ZVVzZXJTZWN1cml0eShmb3JtLiR2YWxpZCkgaWQ9c2VjdXJpdHkgbmFtZT1mb3JtIGNsYXNzPWZvcm0taG9yaXpvbnRhbCByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxkaXYgY2xhc3M9Zm9ybS1ncm91cD48ZGl2IGNsYXNzPVwiY29sLWxnLTQgbWItNFwiPjxpbnB1dCBuZy1jaGFuZ2U9Y2hhbmdlZEZpbHRlcigpIG5nLW1vZGVsPXVzZXJGaWx0ZXIgdHlwZT10ZXh0IG5nLW1vZGVsLW9wdGlvbnM9e2RlYm91bmNlOjMwMH0gcGxhY2Vob2xkZXI9e3s6OmxhYmVsLnNlYXJjaFJlc291cmNlfX0gY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCI+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBteS00XCI+PGRpdiBjbGFzcz1cInBsLTQgY29sLWxnLTYgbXktYXV0byBib2xkXCIgbmctYmluZD1cIjo6bGFiZWwucmVzb3VyY2VOYW1lIHx8IFxcJ1Jlc291cmNlXFwnXCI+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy04IG1sLTIgYm9sZCBteS1hdXRvIHRleHQtbGVmdFwiIG5nLWJpbmQ9XCI6OmxhYmVsLnVzZXJMaXN0R3JvdXBzSGVhZGVyIHx8IFxcJ0dyb3Vwc1xcJ1wiPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctOCBtbC0yIGJvbGQgbXktYXV0byB0ZXh0LWxlZnRcIiBuZy1iaW5kPVwiOjpsYWJlbC51c2VyTGlzdEdyb3Vwc0hlYWRlciB8fCBcXCdVc2Vyc1xcJ1wiPjwvZGl2PjwvZGl2Pjx1bCBuZy1pZj1saXN0UmVhZHkgY2xhc3M9XCJwbC0wIHBlcm1pc3Npb25saXN0XCI+PGxpIGNsYXNzPVwiaXRlbSBweS0xXCIgbmctcmVwZWF0PVwiaXRlbSBpbiA6Omdyb3Vwc2VjdXJpdHlMaXN0XCI+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTYgYm9sZFwiPnt7OjppdGVtLnJlc291cmNlZGVmX25hbWV9fSAoe3s6Oml0ZW0ucmVzb3VyY2VkZWZ1aWQgfX0gdnt7OjppdGVtLnZlcnNpb24gfX0pPC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy04IHRleHQtbGVmdFwiPjxrdC1kcm9wZG93bi1tdWx0aXBsZSBzZWxlY3RlZC1pdGVtcz06Oml0ZW0uZ3JvdXBzIG5hbWU9Z3JvdXBzIGRyb3Bkb3duLWl0ZW1zPTo6Z3JvdXBMaXN0IGRyb3Bkb3duLWlkPVwiXFwnZ3JvdXBcXCdcIiBwYXJlbnQtZm9ybS1pZD1cIlxcJ2lubmVyRm9ybVxcJ1wiIHNlYXJjaC10ZXh0PVwiXFwnU2VhcmNoIG9yIHNlbGVjdCBncm91cC4uLlxcJ1wiPjwva3QtZHJvcGRvd24tbXVsdGlwbGU+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy04IHRleHQtbGVmdFwiPjxrdC1kcm9wZG93bi1tdWx0aXBsZSBzZWxlY3RlZC1pdGVtcz06Oml0ZW0udXNlcnMgbmFtZT1ncm91cHMgZHJvcGRvd24taXRlbXM9Ojp1c2VyTGlzdCBkcm9wZG93bi1pZD1cIlxcJ2dyb3VwXFwnXCIgcGFyZW50LWZvcm0taWQ9XCJcXCdpbm5lckZvcm1cXCdcIiBzZWFyY2gtdGV4dD1cIlxcJ1NlYXJjaCBvciBzZWxlY3QgZ3JvdXAuLi5cXCdcIj48L2t0LWRyb3Bkb3duLW11bHRpcGxlPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMSB0ZXh0LWNlbnRlclwiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9c2F2ZVVzZXJzR3JvdXBzU2VjdXJpdHkoaXRlbSwkaW5kZXgpIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tb3V0bGluZS1wcmltYXJ5IG1yLTFcIj48c3BhbiBuZy1iaW5kPVwiXFwnVXBkYXRlXFwnXCI+PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvbGk+PC91bD48L2Rpdj48L2Rpdj48L2Rpdj48L2Zvcm0+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDA1X3Rhc2tzL2FuZ3VsYXJUZW1wbGF0ZXMvdGFza3NEYXRhLmh0bWwnLCc8ZGl2PjxkaXYgY2xhc3M9dGV4dC1jZW50ZXI+PGgzPkNvZGVzPC9oMz48L2Rpdj48aHI+PGRpdiBpZD1jb250ZW50R3JpZCBjbGFzcz1jb2wtbWQtMTI+PGRpdiB1aWItY29sbGFwc2U9aXNDb2xsYXBzZWQ+PGRpdiBjbGFzcz1jb250cm9sLWdyb3VwPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCIgbmctZGlzYWJsZWQ9IWNvZGVTZWxlY3RlZCBuZy1jbGljaz1nZXRPdGhlckxhbmd1YWdlcyhzZWxlY3RlZENvZGUpPjxzcGFuIGNsYXNzPVwiZmEgZmEtbmV3c3BhcGVyLW9cIj48L3NwYW4+Jm5ic3AgU2hvdyBkZXRhaWxzPC9idXR0b24+PC9kaXY+PGJyPjxkaXYgY2xhc3M9cm93PjxkaXYgaWQ9Z3JpZDEgdWktZ3JpZD1ncmlkT3B0aW9uczEgdWktZ3JpZC1zZWxlY3Rpb24gdWktZ3JpZC1yZXNpemUtY29sdW1ucyB1aS1ncmlkLWdyb3VwaW5nIGNsYXNzPW15R3JpZD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IHVpYi1jb2xsYXBzZT0haXNDb2xsYXBzZWQ+PGRpdiBjbGFzcz1jb250cm9sLWdyb3VwPjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCIgbmctY2xpY2s9XCJpc0NvbGxhcHNlZCA9ICFpc0NvbGxhcHNlZFwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtYXJyb3ctY2lyY2xlLWxlZnRcIj48L3NwYW4+Jm5ic3AgQmFjayB0byBjb2RlcyBsaXN0PC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCIgbmctZGlzYWJsZWQ9IWNvZGVMYW5nU2VsZWN0ZWQgbmctY2xpY2s9ZWRpdENvZGVMYW5nKCk+PHNwYW4gY2xhc3M9XCJmYSBmYS1lZGl0XCI+PC9zcGFuPiZuYnNwIEVkaXQgbGFuZ3VhZ2U8L2J1dHRvbj48L2Rpdj48YnI+PGRpdiB1aWItY29sbGFwc2U9aXNDb2xsYXBzZWRFZGl0TGFuZyBjbGFzcz1yb3c+PGRpdiBpZD1ncmlkMiB1aS1ncmlkPWdyaWRPcHRpb25zMiBuZy1pZj1pc0NvbGxhcHNlZCB1aS1ncmlkLXNlbGVjdGlvbiB1aS1ncmlkLXJlc2l6ZS1jb2x1bW5zIGNsYXNzPW15R3JpZFNtYWxsPjwvZGl2PjwvZGl2PjxkaXYgdWliLWNvbGxhcHNlPSFpc0NvbGxhcHNlZEVkaXRMYW5nIGNsYXNzPXJvdz48Zm9ybSBuZy1zdWJtaXQ9c2F2ZUNvZGVzTGFuZyhmb3JtLiR2YWxpZCkgaWQ9c2F2ZUZvcm0gbmFtZT1mb3JtIGNsYXNzPWZvcm0taG9yaXpvbnRhbCByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2IGNsYXNzPXRleHQtY2VudGVyPjxoMz5FZGl0IGNvZGU8L2gzPjwvZGl2Pjxocj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgXCI+PGxhYmVsIGNsYXNzPWNvbC1zbS0yIGZvcj1jb2RlTmFtZT5Db2RlIElEPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1zbS02PjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9Q29kZXNMYW5nLmlkIG5nLWRpc2FibGVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPWNvZGVOYW1lIG5hbWU9Y29kZUlEIHBsYWNlaG9sZGVyPVwiQ29kZSBJRFwiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cD48bGFiZWwgY2xhc3M9Y29sLXNtLTIgZm9yPWNvZGVOYW1lPkxhbmd1YWdlPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1zbS02PjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9Q29kZXNMYW5nLkxhbmcgbmctZGlzYWJsZWQ9dHJ1ZSBjbGFzcz1mb3JtLWNvbnRyb2wgbmFtZT1MYW5nIHBsYWNlaG9sZGVyPUxhbmd1YWdlPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvZGVOYW1lLiR0b3VjaGVkKSAmJiBmb3JtLmNvZGVOYW1lLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLXNtLTIgZm9yPWNvZGVOYW1lPkNvZGUgbmFtZTwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtc20tNj48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPUNvZGVzRGV0YWlsTGFuZy5Db2Rlc0RldGFpbC5OYW1lIG5nLXJlcXVpcmVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPWNvZGVOYW1lIG5hbWU9Y29kZU5hbWUgcGxhY2Vob2xkZXI9XCJDb2RlIG5hbWVcIj48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvZGVOYW1lLiR0b3VjaGVkKSAmJiBmb3JtLmNvZGVOYW1lLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5FbnRlciBjb2RlIG5hbWU8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uY29kZURlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtLmNvZGVEZXNjcmlwdGlvbi4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1zbS0yIGZvcj1jb2RlRGVzY3JpcHRpb24+Q29kZSBkZXNjcmlwdGlvbjwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtc20tNj48dGV4dGFyZWEgbmctbW9kZWw9Q29kZXNMYW5nLkRlc2NyaXB0aW9uIG5hbWU9Y29kZURlc2NyaXB0aW9uIG5nLXJlcXVpcmVkPXRydWUgbmctbWluLWxlbmd0aD0yMCBjbGFzcz1mb3JtLWNvbnRyb2w+PC90ZXh0YXJlYT48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvZGVEZXNjcmlwdGlvbi4kdG91Y2hlZCkgJiYgZm9ybS5jb2RlRGVzY3JpcHRpb24uJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIGNvZGUgZGVzY3JpcHRpb24obWluIDIwIGNoYXJzKS48L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb250cm9sLWdyb3VwPjxidXR0b24gdHlwZT1zdWJtaXQgaWQ9Y2xlYXJCdG4gbmctZGlzYWJsZWQ9Zm9ybS4kaW52YWxpZCBjbGFzcz1cImJ0biBidG4tbGlnaHRcIj48c3BhbiBjbGFzcz1cImZhIGZhLXNhdmVcIj48L3NwYW4+Jm5ic3AgU2F2ZSBjb2RlPC9idXR0b24+PGJyPjxicj48L2Rpdj48L2Zvcm0+PC9kaXY+PGJyPjxkaXYgY2xhc3M9cm93IHVpYi1jb2xsYXBzZT1pc0NvbGxhcHNlZEVkaXRJdGVtPjxkaXYgY2xhc3M9Y29udHJvbC1ncm91cD48YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodFwiIG5nLWRpc2FibGVkPSFjb2RlTGFuZ1NlbGVjdGVkIG5nLWNsaWNrPW5ld0NvZGVJdGVtKCk+PHNwYW4gY2xhc3M9XCJmYSBmYS1wbHVzLWNpcmNsZVwiPjwvc3Bhbj4mbmJzcCBOZXcgY29kZSBpdGVtPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCIgbmctZGlzYWJsZWQ9IWNvZGVJdGVtU2VsZWN0ZWQgbmctY2xpY2s9ZWRpdENvZGVJdGVtKCk+PHNwYW4gY2xhc3M9XCJmYSBmYS1lZGl0XCI+PC9zcGFuPiZuYnNwIEVkaXQgY29kZSBpdGVtPC9idXR0b24+PC9kaXY+PGJyPjxkaXYgaWQ9Z3JpZDMgdWktZ3JpZD1ncmlkT3B0aW9uczMgbmctaWY9aXNDb2xsYXBzZWQgdWktZ3JpZC1zZWxlY3Rpb24gdWktZ3JpZC1yZXNpemUtY29sdW1ucyBjbGFzcz1teUdyaWQ+PC9kaXY+PC9kaXY+PGRpdiB1aWItY29sbGFwc2U9IWlzQ29sbGFwc2VkRWRpdEl0ZW0gY2xhc3M9cm93Pjxmb3JtIG5nLXN1Ym1pdD1zYXZlQ29kZUl0ZW0oZm9ybUVkaXRDb2RlRGV0YWlsLiR2YWxpZCkgbmFtZT1mb3JtRWRpdENvZGVEZXRhaWwgY2xhc3M9Zm9ybS1ob3Jpem9udGFsIHJvbGU9Zm9ybSBub3ZhbGlkYXRlPjxkaXYgY2xhc3M9dGV4dC1jZW50ZXI+PGgzPnt7Y29kZUl0ZW1IZWFkZXIuVGV4dH19PC9oMz48L2Rpdj48aHI+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIFwiPjxsYWJlbCBjbGFzcz1jb2wtc20tMiBmb3I9Y29kZU5hbWU+Q29kZSBJRDwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtc20tNj48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPUNvZGVzRGV0YWlsTGFuZy5pZCBuZy1kaXNhYmxlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBuYW1lPWNvZGVJRCBwbGFjZWhvbGRlcj1cIkNvZGUgSURcIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgXCI+PGxhYmVsIGNsYXNzPWNvbC1zbS0yIGZvcj1sYW5nPkxhbmd1YWdlPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1zbS02PjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9Q29kZXNEZXRhaWxMYW5nLkxhbmcgbmctZGlzYWJsZWQ9dHJ1ZSBjbGFzcz1mb3JtLWNvbnRyb2wgbmFtZT1sYW5nIHBsYWNlaG9sZGVyPUxhbmd1YWdlPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm1FZGl0Q29kZURldGFpbC4kc3VibWl0dGVkIHx8IGZvcm1FZGl0Q29kZURldGFpbC5jb2RlTmFtZS4kdG91Y2hlZCkgJiYgZm9ybUVkaXRDb2RlRGV0YWlsLmNvZGVOYW1lLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLXNtLTIgZm9yPWNvZGVOYW1lPkNvZGUgbmFtZTwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtc20tNj48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPUNvZGVzRGV0YWlsTGFuZy5Db2Rlc0RldGFpbElkLk5hbWUgbmctcmVxdWlyZWQ9dHJ1ZSBjbGFzcz1mb3JtLWNvbnRyb2wgbmFtZT1jb2RlTmFtZSBwbGFjZWhvbGRlcj1cIkNvZGUgbmFtZVwiPjxwIG5nLXNob3c9XCIoZm9ybUVkaXRDb2RlRGV0YWlsLiRzdWJtaXR0ZWQgfHwgZm9ybUVkaXRDb2RlRGV0YWlsLmNvZGVOYW1lLiR0b3VjaGVkKSAmJiBmb3JtRWRpdENvZGVEZXRhaWwuY29kZU5hbWUuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIGNvZGUgbmFtZTwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtRWRpdENvZGVEZXRhaWwuJHN1Ym1pdHRlZCB8fCBmb3JtRWRpdENvZGVEZXRhaWwuY29kZVZhbHVlLiR0b3VjaGVkKSAmJiBmb3JtRWRpdENvZGVEZXRhaWwuY29kZVZhbHVlLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLXNtLTIgZm9yPWNvZGVWYWx1ZT5Db2RlIHZhbHVlPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1zbS02PjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9Q29kZXNEZXRhaWxMYW5nLlZhbHVlIG5nLXJlcXVpcmVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIG5hbWU9Y29kZVZhbHVlIHBsYWNlaG9sZGVyPVwiQ29kZSB2YWx1ZVwiPjxwIG5nLXNob3c9XCIoZm9ybUVkaXRDb2RlRGV0YWlsLiRzdWJtaXR0ZWQgfHwgZm9ybUVkaXRDb2RlRGV0YWlsLmNvZGVWYWx1ZS4kdG91Y2hlZCkgJiYgZm9ybUVkaXRDb2RlRGV0YWlsLmNvZGVWYWx1ZS4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIgY29kZSB2YWx1ZTwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbnRyb2wtZ3JvdXA+PGJ1dHRvbiB0eXBlPXN1Ym1pdCBpZD1jbGVhckJ0biBuZy1kaXNhYmxlZD1mb3JtRWRpdENvZGVEZXRhaWwuJGludmFsaWQgY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1zYXZlXCI+PC9zcGFuPiZuYnNwIFNhdmUgY29kZSBpdGVtPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gaWQ9Y2xlYXJCdG4gbmctY2xpY2s9XCJpc0NvbGxhcHNlZEVkaXRJdGVtPSFpc0NvbGxhcHNlZEVkaXRJdGVtXCIgY2xhc3M9XCJidG4gYnRuLXdhcm5pbmdcIj48c3BhbiBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9zcGFuPiZuYnNwIENhbmNlbDwvYnV0dG9uPjxicj48YnI+PC9kaXY+PC9mb3JtPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwNV90YXNrcy9hbmd1bGFyVGVtcGxhdGVzL3Rhc2tzRGVmaW5pdGlvbi5odG1sJywnPHN0eWxlPlxcclxcblxcclxcbi8qIHdpZHRoICovXFxyXFxuOjotd2Via2l0LXNjcm9sbGJhciB7XFxyXFxuICB3aWR0aDogOXB4O1xcclxcbn1cXHJcXG5cXHJcXG4vKiBUcmFjayAqL1xcclxcbjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xcclxcbiAgYmFja2dyb3VuZDogI2YxZjFmMTsgXFxyXFxufVxcclxcbiBcXHJcXG4vKiBIYW5kbGUgKi9cXHJcXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcXHJcXG4gIGJhY2tncm91bmQ6ICNhMWExYTE7IFxcclxcbn1cXHJcXG5cXHJcXG4vKiBIYW5kbGUgb24gaG92ZXIgKi9cXHJcXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcXHJcXG4gIGJhY2tncm91bmQ6ICM1NTU7IFxcclxcbn1cXHJcXG5cXHJcXG48L3N0eWxlPjxkaXYgaWRkPWt0dGFza3NEZWZpbml0aW9uPjxkaXYgY2xhc3M9XCJjYXJkIG0tMVwiPjxkaXYgY2xhc3M9XCJyb3cgbXgtMCBwLTFcIj48ZGl2IGNsYXNzPVwiY29sIGg0IHAtMSBib3JkZXItYm90dG9tIHRleHQtY2VudGVyIG15LWF1dG9cIj5EZWZpbml0aW9uIGZvciA8c3BhbiBuZy1pZj1cIihyZXNvdXJjZURlZmluaXRpb24uaWQgIT0gbnVsbCB8fCByZXNvdXJjZURlZmluaXRpb24uaWQgPiAwKVwiIGNsYXNzPVwiaDUgbXQtMVwiPjxpIGNsYXNzPVwiZmFzIGZhLWluZm8tY2lyY2xlXCIgdGl0bGU9XCJyZXNvdXJjZSBpZDoge3tyZXNvdXJjZURlZmluaXRpb24uaWR9fVwiPjwvaT48L3NwYW4+IDxzcGFuIGNsYXNzPVwiaDQgbXQtMSBtci0yXCI+PGI+e3tyZXNvdXJjZURlZmluaXRpb24uTmFtZX19PC9iPiB7e3Jlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZUNvZGV9fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwicC0xIG1iLTJcIiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTtcIj48YSBjbGFzcz1cIm1iLTIgaDYgdGV4dC1wcmltYXJ5XCIgaHJlZiB0aXRsZT1cIlJldHVybiB0byByZXNvdXJjZSBsaXN0XCIgbmctY2xpY2s9cmV0dXJuVG9QcmV2aW91c1BhZ2UoKT48aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWxlZnQgbXItMlwiPjwvaT5SZXR1cm4gdG8gcHJldmlvdXMgcGFnZTwvYT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMSBwLTFcIj48ZGl2IGNsYXNzPWNvbD48ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXItYWN0aW9ucyByb3cgcC0xIG0tMiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+PGRpdiBuZy1pZj1cIihyZXNvdXJjZURlZmluaXRpb24uaWQgIT0gbnVsbCB8fCByZXNvdXJjZURlZmluaXRpb24uaWQgPiAwKVwiIGNsYXNzPVwiY29sLWF1dG8gbXgtMVwiPjxzcGFuIGNsYXNzPW10LTE+PGIgY2xhc3M9XCJ0YWcgc21hbGwgdGV4dC1zdWNjZXNzIG15LTEgbXItMlwiPklEPC9iPiB7e3Jlc291cmNlRGVmaW5pdGlvbi5pZH19PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBteC0xXCIgaWRkPWFjdGl2ZU9yTm90PjxzcGFuIG5nLWlmPVwiKHJlc291cmNlRGVmaW5pdGlvbi5pZCAhPSBudWxsIHx8IHJlc291cmNlRGVmaW5pdGlvbi5pZCA+IDApXCIgY2xhc3M9XCJ0YWcgdGV4dC1zdWNjZXNzIG15LTFcIj57e3Jlc291cmNlRGVmaW5pdGlvbi5SZXNvdXJjZU5hbWV9fTwvc3Bhbj4gPHNwYW4gbmctaWY9XCJyZXNvdXJjZURlZmluaXRpb24uQWN0aXZlICYmIChyZXNvdXJjZURlZmluaXRpb24uaWQgIT0gbnVsbCB8fCByZXNvdXJjZURlZmluaXRpb24uaWQgPiAwKVwiIGNsYXNzPVwic21hbGwgYm9sZCBtci00XCI+QWN0aXZlIDxpIGNsYXNzPVwidGV4dC1zdWNjZXNzIGZhIGZhLWNoZWNrXCI+PC9pPjwvc3Bhbj4gPHNwYW4gbmctaWY9XCIhcmVzb3VyY2VEZWZpbml0aW9uLkFjdGl2ZSAmJiAocmVzb3VyY2VEZWZpbml0aW9uLmlkICE9IG51bGwgfHwgcmVzb3VyY2VEZWZpbml0aW9uLmlkID4gMClcIiBjbGFzcz1cInNtYWxsIGJvbGQgbXItNFwiPk5vdCBhY3RpdmUgPGkgY2xhc3M9XCJ0ZXh0LWRhbmdlciBmYSBmYS10aW1lc1wiPjwvaT48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIG14LTFcIiBpZD12ZXJzaW9uPjxzcGFuIGNsYXNzPVwic21hbGwgbXItMlwiPjxiIGNsYXNzPVwidGFnIHRleHQtc3VjY2VzcyBteS0xIG1yLTJcIj5WRVJTSU9OPC9iPiB7e2dzcnZjLnJlc291cmNlRm9ybVZlcnNpb25bcmVzb3VyY2VEZWZpbml0aW9uLmlkK3Rkcy5zaG93VGFza0Zvcm1dLlZlcnNpb259fTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXgtMVwiPjxzcGFuIG5nLWlmPWdzcnZjLnJlc291cmNlRm9ybVZlcnNpb25bcmVzb3VyY2VEZWZpbml0aW9uLmlkK3Rkcy5zaG93VGFza0Zvcm1dLk5ld1ZlcnNpb24gY2xhc3M9XCJzbWFsbCBtci0yXCI+PGIgY2xhc3M9XCJ0YWcgdGV4dC1zdWNjZXNzIG15LTEgbXItMlwiPldPUksgVkVSU0lPTjwvYj4ge3tnc3J2Yy5yZXNvdXJjZUZvcm1WZXJzaW9uW3Jlc291cmNlRGVmaW5pdGlvbi5pZCt0ZHMuc2hvd1Rhc2tGb3JtXS5OZXdWZXJzaW9ufX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIG14LTFcIiBpZD1wdWJsaXNoZWRPck5vdD48ZGl2IG5nLWlmPVwiKHJlc291cmNlRGVmaW5pdGlvbi5pZCAhPSBudWxsIHx8IHJlc291cmNlRGVmaW5pdGlvbi5pZCA+IDApXCIgY2xhc3M9c21hbGw+PGIgY2xhc3M9XCJ0YWcgdGV4dC1zdWNjZXNzIG15LTEgbXItMlwiPlNUQVRVUzwvYj48L2Rpdj48ZGl2PjxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXhzXCIgdGl0bGU9XCJDbGljayBmb3IgcHVibGlzaGluZyBkZXRhaWxzXCIgbmctY2xhc3M9XCJ7XFwnYnRuLW91dGxpbmUtc3VjY2Vzc1xcJzpnc3J2Yy5yZXNvdXJjZUZvcm1WZXJzaW9uW3Jlc291cmNlRGVmaW5pdGlvbi5pZCt0ZHMuc2hvd1Rhc2tGb3JtXS5QdWJsaXNoZWQsXFwnYnRuLXdhcm5pbmdcXCc6IWdzcnZjLnJlc291cmNlRm9ybVZlcnNpb25bcmVzb3VyY2VEZWZpbml0aW9uLmlkK3Rkcy5zaG93VGFza0Zvcm1dLlB1Ymxpc2hlZH1cIiBuZy1jbGljaz1cInNob3dQdWJsaXNoKFxcJ2Zvcm1cXCcpXCI+PHNwYW4gbmctaWY9Z3NydmMucmVzb3VyY2VGb3JtVmVyc2lvbltyZXNvdXJjZURlZmluaXRpb24uaWQrdGRzLnNob3dUYXNrRm9ybV0uUHVibGlzaGVkPlB1Ymxpc2hlZDwvc3Bhbj4gPHNwYW4gbmctaWY9IWdzcnZjLnJlc291cmNlRm9ybVZlcnNpb25bcmVzb3VyY2VEZWZpbml0aW9uLmlkK3Rkcy5zaG93VGFza0Zvcm1dLlB1Ymxpc2hlZD5Ob3QgcHVibGlzaGVkPC9zcGFuPiA8aSBuZy1pZj1nc3J2Yy5yZXNvdXJjZUZvcm1WZXJzaW9uW3Jlc291cmNlRGVmaW5pdGlvbi5pZCt0ZHMuc2hvd1Rhc2tGb3JtXS5QdWJsaXNoZWQgY2xhc3M9XCJmYSBmYS1jaGVjayBtbC0yXCI+PC9pPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBteC0xIHNtYWxsXCIgdGl0bGU9XCJDcmVhdGVkIGJ5IHt7cmVzb3VyY2VEZWZpbml0aW9uLkNyZWF0ZWRCeS5maXJzdF9uYW1lfX0ge3tyZXNvdXJjZURlZmluaXRpb24uQ3JlYXRlZEJ5Lmxhc3RfbmFtZX19XCIgbmctaWY9XCJyZXNvdXJjZURlZmluaXRpb24uQ3JlYXRlZEJ5LmlkIT1udWxsXCI+PGIgY2xhc3M9XCJ0YWcgdGV4dC1zdWNjZXNzIG10LTEgbWItMiBtci0yXCI+Q1JFQVRFRDwvYj4ge3tyZXNvdXJjZURlZmluaXRpb24uQ3JlYXRlZERhdGVUaW1lIHwgZGF0ZTogXCJkZC5NTS55eXl5IFxcJ2F0XFwnIEhIOm1tOnNzXCJ9fSA8c3BhbiBuZy1pZj1yZXNvdXJjZURlZmluaXRpb24uQ3JlYXRlZEJ5LmZpcnN0X25hbWU+KGJ5IDxiPnt7cmVzb3VyY2VEZWZpbml0aW9uLkNyZWF0ZWRCeS5maXJzdF9uYW1lfX0ge3tyZXNvdXJjZURlZmluaXRpb24uQ3JlYXRlZEJ5Lmxhc3RfbmFtZX19PC9iPik8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHNtYWxsXCI+PHNwYW4gdGl0bGU9XCJDaGFuZ2VkIGJ5IHt7cmVzb3VyY2VEZWZpbml0aW9uLkNoYW5nZWRCeS5maXJzdF9uYW1lfX0ge3tyZXNvdXJjZURlZmluaXRpb24uQ2hhbmdlZEJ5Lmxhc3RfbmFtZX19XCIgbmctaWY9XCJyZXNvdXJjZURlZmluaXRpb24uQ2hhbmdlZEJ5LmlkIT1udWxsXCI+PGIgY2xhc3M9XCJ0YWcgdGV4dC1zdWNjZXNzIG15LTEgbWItMiBtci0yXCI+TU9ESUZJRUQ8L2I+PC9zcGFuPiB7e3Jlc291cmNlRGVmaW5pdGlvbi5DaGFuZ2VkRGF0ZVRpbWUgfCBkYXRlOlwiZGQuTU0ueXl5eSBcXCdhdFxcJyBISDptbTpzc1wifX0gPHNwYW4gbmctaWY9cmVzb3VyY2VEZWZpbml0aW9uLkNoYW5nZWRCeS5maXJzdF9uYW1lPihieSA8Yj57e3Jlc291cmNlRGVmaW5pdGlvbi5DaGFuZ2VkQnkuZmlyc3RfbmFtZX19IHt7cmVzb3VyY2VEZWZpbml0aW9uLkNoYW5nZWRCeS5sYXN0X25hbWV9fTwvYj4pPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBteC0yXCI+PHNwYW4gbmctaWY9cmVzb3VyY2VEZWZpbml0aW9uLkZvcm1WZXJzaW9uIGNsYXNzPVwic21hbGwgbXItMlwiPjxiIGNsYXNzPW1yLTI+VmVyc2lvbjo8L2I+e3tyZXNvdXJjZURlZmluaXRpb24uRm9ybVZlcnNpb259fTwvc3Bhbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiB0aXRsZT1cIlNob3cgcGFyYW1zXCIgcm9sZT1idXR0b24gY2xhc3M9XCJmbG9hdC1yaWdodCBtbC0zIGJ0biBidG4teHMgYnRuLWxpbmtcIiBuZy1jbGljaz1cInNob3dUYXNrUGFyYW1ldGVycz0hc2hvd1Rhc2tQYXJhbWV0ZXJzXCI+U2hvdyB0YXNrIHBhcmFtZXRlcnMgKGRlYnVnIGluZm8pPC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1zaG93VGFza1BhcmFtZXRlcnMgY2xhc3M9XCJyb3cgbS0wXCI+PHByZSBjbGFzcz1jb2wtMjQ+e3twcmV0dHlUYXNrfX08L3ByZT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY2FyZCBtLTFcIj48ZGl2IHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiIGNsYXNzPVwicC0xIHJvdyBteC0xXCIgbmctY2xpY2s9XCJpc0NvbGxhcHNlZERhdGFQcm9wZXJ0eSA9ICFpc0NvbGxhcHNlZERhdGFQcm9wZXJ0eVwiPjxzcGFuIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBwLTFcIj48c3BhbiBuZy1jbGFzcz1cIntcXCdmYXMgZmEtY2hldnJvbi1kb3duXFwnOiBpc0NvbGxhcHNlZERhdGFQcm9wZXJ0eSxcXCdmYXMgZmEtY2hldnJvbi1yaWdodFxcJzogIWlzQ29sbGFwc2VkRGF0YVByb3BlcnR5IH1cIj48L3NwYW4+PC9zcGFuPiA8c3BhbiBjbGFzcz10YWc+e3tyZXNvdXJjZURlZmluaXRpb24uUmVzb3VyY2VOYW1lfX0gUFJPUEVSVElFUzwvc3Bhbj48L2Rpdj48Zm9ybSBpZGQ9c2F2ZXRhc2tkZWYgdWliLWNvbGxhcHNlPSFpc0NvbGxhcHNlZERhdGFQcm9wZXJ0eSBuZy1zdWJtaXQ9c2F2ZVRhc2tEZWYoZm9ybS4kdmFsaWQpIGlkPWVkaXREYXRhc2V0IG5hbWU9Zm9ybSBjbGFzcz1mb3JtLWhvcml6b250YWwgcm9sZT1mb3JtIG5vdmFsaWRhdGU+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPWNvbC1sZy0xMj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXA+PGxhYmVsIGNsYXNzPWNvbC1sZy0yNCBmb3I9cmVzb3VyY2VOYW1lPlRhc2sgSUQ8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTI0PjxpbnB1dCBkaXNhYmxlZCB0eXBlPXRleHQgbmctbW9kZWw9cmVzb3VyY2VEZWZpbml0aW9uLmlkIG5nLXJlcXVpcmVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPU5hbWUgbmFtZT1OYW1lIHBsYWNlaG9sZGVyPVwiVGFzayBJRFwiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLk5hbWUuJHRvdWNoZWQpICYmIGZvcm0uTmFtZS4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1sZy0yNCBmb3I9cmVzb3VyY2VOYW1lPlRhc2sgbmFtZTwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1yZXNvdXJjZURlZmluaXRpb24uTmFtZSBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1OYW1lIG5hbWU9TmFtZSBwbGFjZWhvbGRlcj1cIlJlc291cmNlIG5hbWVcIj48cCBjbGFzcz10ZXh0LWRhbmdlciBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLk5hbWUuJHRvdWNoZWQpICYmIGZvcm0uTmFtZS4kaW52YWxpZFwiPkVudGVyIHRhc2sgbmFtZSE8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uU3ViamVjdC4kdG91Y2hlZCkgJiYgZm9ybS5TdWJqZWN0LiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLWxnLTI0IGZvcj1TdWJqZWN0PlRhc2sgc3ViamVjdDwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtbGctMjQ+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1yZXNvdXJjZURlZmluaXRpb24uU3ViamVjdCBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1TdWJqZWN0IG5hbWU9U3ViamVjdCBwbGFjZWhvbGRlcj1cIlJlc291cmNlIHN1YmplY3RcIj48cCBjbGFzcz10ZXh0LWRhbmdlciBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLlN1YmplY3QuJHRvdWNoZWQpICYmIGZvcm0uU3ViamVjdC4kaW52YWxpZFwiPkVudGVyIHRhc2sgc3ViamVjdCE8L3A+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb2wtbGctMTI+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uRGVzY3JpcHRpb24uJHRvdWNoZWQpICYmIGZvcm0uRGVzY3JpcHRpb24uJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtbGctMjQgZm9yPURlc2NyaXB0aW9uPlRhc2sgZGVzY3JpcHRpb248L2xhYmVsPjxkaXYgY2xhc3M9Y29sLWxnLTI0Pjx0ZXh0YXJlYSBuZy1tb2RlbD1yZXNvdXJjZURlZmluaXRpb24uRGVzY3JpcHRpb24gbmFtZT1EZXNjcmlwdGlvbiBuZy1yZXF1aXJlZD10cnVlIG5nLW1pbi1sZW5ndGg9MjAgY2xhc3M9Zm9ybS1jb250cm9sPjwvdGV4dGFyZWE+PHAgY2xhc3M9dGV4dC1kYW5nZXIgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5EZXNjcmlwdGlvbi4kdG91Y2hlZCkgJiYgZm9ybS5EZXNjcmlwdGlvbi4kaW52YWxpZFwiPkVudGVyIHRhc2sgZGVzY3JpcHRpb24obWluIDIwIGNoYXJzKSAhPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9cm93PjxkaXYgY2xhc3M9XCJjb2wtOCBmb3JtLWdyb3VwXCIgbmctY2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyIGlzLWludmFsaWQgd2FzLXZhbGlkYXRlZFxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5yZXNvdXJjZVN0YXR1cy4kdG91Y2hlZCkgJiYgZm9ybS5yZXNvdXJjZVN0YXR1cy4kaW52YWxpZCB9XCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBtYi00XCI+PGRpdiBjbGFzcz1teS1hdXRvPkFjdGl2ZTwvZGl2PjxsYWJlbCBjbGFzcz1cInN3aXRjaCBzd2l0Y2gtZ3JlZW5cIj48aW5wdXQgbmctbW9kZWw9cmVzb3VyY2VEZWZpbml0aW9uLkFjdGl2ZSB0eXBlPWNoZWNrYm94IG5nLXRydWUtdmFsdWU9dHJ1ZSBuZy1mYWxzZS12YWx1ZT1mYWxzZSBjbGFzcz1zd2l0Y2gtaW5wdXQ+IDxzcGFuIGNsYXNzPXN3aXRjaC1sYWJlbCBkYXRhLW9uPU9uIGRhdGEtb2ZmPU9mZj48L3NwYW4+IDxzcGFuIGNsYXNzPXN3aXRjaC1oYW5kbGU+PC9zcGFuPjwvbGFiZWw+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC0yNCBmb3JtLWdyb3VwXCIgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5JbnZhbGlkRm9ybU1lc3NhZ2UuJHRvdWNoZWQpICYmIGZvcm0uSW52YWxpZEZvcm1NZXNzYWdlLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M+SW52YWxpZCBmb3JtIG1lc3NhZ2U8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IHBsYWNlaG9sZGVyPVwiSW52YWxpZCBmb3JtIG1lc3NhZ2VcIiBjbGFzcz1mb3JtLWNvbnRyb2wgbmFtZT1JbnZhbGlkRm9ybU1lc3NhZ2UgbmctbW9kZWw9cmVzb3VyY2VEZWZpbml0aW9uLlBhcmFtZXRlcnNMYW5nLkludmFsaWRGb3JtTWVzc2FnZT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHAtM1wiPjxkaXYga3QtdXNlcnMtZ3JvdXBzLXNlbGVjdCBuZy1pZj1yZXNvdXJjZURlZkRvd25sb2FkZWQgc2VsZWN0ZWQtdXNlcnM9cmVzb3VyY2VEZWZpbml0aW9uLkFkbWluVXNlcnMgc2VsZWN0ZWQtZ3JvdXBzPXJlc291cmNlRGVmaW5pdGlvbi5BZG1pbkdyb3VwcyBoZWFkZXItbGFiZWw9XCJcXCdTZWxlY3QgdGFzayBhZG1pbmlzdHJhdG9yc1xcJ1wiIHVzZXJzLWxhYmVsPVwiXFwnQWRtaW4gdXNlcnNcXCdcIiBncm91cHMtbGFiZWw9XCJcXCdBZG1pbiBncm91cHNcXCdcIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTI0IHBsLTNcIj48ZGl2IGNsYXNzPVwicm93IG0tMlwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMTIgcC0wXCI+PGRpdiBjbGFzcz1ib2xkPlRhc2sgdmlzdWFsczwvZGl2PjxkaXYgY2xhc3M9cC0xPjxsYWJlbCBjbGFzcyBmb3I9Y2JIaWRlSGVhZGVyPjxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPVwibXktMiBtci0yXCIgc3R5bGU9XCJ0cmFuc2Zvcm06IHNjYWxlKDEuNCk7XCIgbmFtZT1jYkhpZGVIZWFkZXIgbmctbW9kZWw9cmVzb3VyY2VEZWZpbml0aW9uLlBhcmFtZXRlcnMuSGlkZUhlYWRlciBuZy1jaGVja2VkPXJlc291cmNlRGVmaW5pdGlvbi5QYXJhbWV0ZXJzLkhpZGVIZWFkZXI+IEhpZGUgdGFzayBoZWFkZXI8L2xhYmVsPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTEyPjxkaXYgY2xhc3M9Ym9sZD5UYXNrIGV4ZWN1dGlvbiBwYXJhbWV0ZXJzPC9kaXY+PGRpdiBjbGFzcz1wLTE+PGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sLWxhYmVsIG1yLTRcIiBmb3I9Y2JSZXN0YXJ0VGFzaz48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cIm15LTIgbXItMlwiIHN0eWxlPVwidHJhbnNmb3JtOiBzY2FsZSgxLjQpO1wiIG5hbWU9Y2JSZXN0YXJ0VGFzayBuZy1jbGljaz1zYXZlVGFza1BhcmFtZXRlcnMoKSBuZy1tb2RlbD10YXNrRGVmaW5pdGlvbi5QYXJhbWV0ZXJzLlJlc3RhcnRUYXNrIG5nLWNoZWNrZWQ9dGFza0RlZmluaXRpb24uUGFyYW1ldGVycy5SZXN0YXJ0VGFzaz4gUmVzdGFydCB0YXNrIHdoZW4gY29tcGxldGVkPC9sYWJlbD4gPGxhYmVsIGNsYXNzPWZvcm0tY29udHJvbC1sYWJlbCBmb3I9Y2JBdXRvTG9hZEV4ZT48aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1cIm15LTIgbXItMlwiIHN0eWxlPVwidHJhbnNmb3JtOiBzY2FsZSgxLjQpO1wiIG5hbWU9Y2JBdXRvTG9hZEV4ZSBuZy1jbGljaz1zYXZlVGFza1BhcmFtZXRlcnMoKSBuZy1tb2RlbD10YXNrRGVmaW5pdGlvbi5QYXJhbWV0ZXJzLkF1dG9Mb2FkRXhlRm9ybSBuZy1jaGVja2VkPXRhc2tEZWZpbml0aW9uLlBhcmFtZXRlcnMuQXV0b0xvYWRFeGVGb3JtPiBBdXRvIGxvYWQgZXhlY3V0ZSBmb3JtPC9sYWJlbD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTI0IHAtNFwiPjxidXR0b24gdHlwZT1zdWJtaXQgaWQ9ZWRpdEJ0biBjbGFzcz1cImJ0biBidG4tc20gYnRuLXN1Y2Nlc3MgbXktMlwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtc2F2ZSBtci0xXCI+PC9zcGFuPlNhdmUgdGFzayBwcm9wZXJ0aWVzPC9idXR0b24+PC9kaXY+PC9kaXY+PC9mb3JtPjwvZGl2PjxkaXYgY2xhc3M+PGRpdiBjbGFzcz1cInJvdyBtLTAgbXQtMlwiPjxkaXYgaWQ9dG9vbGJveCBuZy1pZj1cImdzcnZjLmdldEZvcm1WaWV3VHlwZSgpPT0xXCIgY2xhc3M9XCJjb2wtNCBwLTAgcHItMlwiIG5nLWNsYXNzPVwie1xcJ21heC1oZWlnaHQtMS1yZW1cXCc6Z3NydmMuZ2V0Rm9ybVZpZXdUeXBlKCkhPTEgfHwgdGRzLnNob3dUYXNrRm9ybUZuKCk9PVxcJ1xcJ31cIj48ZGl2IGt0LXRhc2stdG9vbGJveCBuZy1zaG93PXRkcy5zaG93VGFza0Zvcm1GbigpIGNsYXNzPVwicHgtMSBzdGlja3kgbWVudS1zdGlja3ktcG9zXCI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQgcC0wIGNvbFwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wIG10LTJcIj48ZGl2IGNsYXNzPVwiY29sIHRleHQtY2VudGVyXCIgbmctaWY9XCJ0ZHMuc2hvd1Rhc2tGb3JtRm4oKT09XFwnaVxcJyB8fCB0ZHMuc2hvd1Rhc2tGb3JtRm4oKT09XFwnZVxcJ1wiIG5nLWNsYXNzPVwie1xcJ21iLTJcXCc6ISh0ZHMuc2hvd1Rhc2tGb3JtRm4oKT09XFwnaVxcJyB8fCB0ZHMuc2hvd1Rhc2tGb3JtRm4oKT09XFwnZVxcJykgJiYgIXRkcy5zaG93VGFza0luaXRpYXRvcnNGbigpICYmICF0ZHMuc2hvd1Rhc2tPd25lcnNGbigpICYmICF0ZHMuc2hvd1Rhc2tTdGF0dXNGbigpfVwiPjxkaXYgdGl0bGU9XCJEZXNpZ24gZm9ybVwiIG5nLWNsYXNzPVwie1xcJ21iLTJcXCc6ISh0ZHMuc2hvd1Rhc2tGb3JtRm4oKT09XFwnaVxcJyB8fCB0ZHMuc2hvd1Rhc2tGb3JtRm4oKT09XFwnZVxcJykgJiYgIXRkcy5zaG93VGFza0luaXRpYXRvcnNGbigpICYmICF0ZHMuc2hvd1Rhc2tPd25lcnNGbigpICYmICF0ZHMuc2hvd1Rhc2tTdGF0dXNGbigpLFxcJ3NoYWRvdyBib3JkZXIgYm9yZGVyLXByaW1hcnkgcm91bmRlZFxcJzogdGRzLnNob3dUYXNrSW5pdGlhdG9yc0ZuKCl9XCI+PGJ1dHRvbiBhY3RpdmUgdHlwZT1idXR0b24gaHJlZiBjbGFzcz1cImJvcmRlciBzaGFkb3cgYm9yZGVyLXByaW1hcnkgYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYnRuLWZvcm0tZGVmLWRpc2FibGVkIHAtMSB3LTEwMCBoLTEwMFwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIG0tMSBwLTBcIj48aSBuZy1jbGFzcz1cIntcXCdmYXIgZmEtY2hlY2stY2lyY2xlIGZhLWxnIHRleHQtc3VjY2Vzc1xcJzpyZXNvdXJjZURlZmluaXRpb24ucmVzb3VyY2VkZWZsYW5nX3NldFswXS5Jbml0aWF0ZUZvcm0sXFwndGV4dC1tdXRlZFxcJzohcmVzb3VyY2VEZWZpbml0aW9uLnJlc291cmNlZGVmbGFuZ19zZXRbMF0uSW5pdGlhdGVGb3JtfVwiPjwvaT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIG0tMSBwLTBcIj5EZXNpZ24gZm9ybTwvZGl2PjwvZGl2PjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgdGV4dC1jZW50ZXJcIiB0aXRsZT1cIkRlZmluZSB0YXNrIGZvcm1zXCIgbmctaWY9XCJ0ZHMuc2hvd1Rhc2tGb3JtRm4oKSE9XFwnaVxcJyAmJiB0ZHMuc2hvd1Rhc2tGb3JtRm4oKSE9XFwnZVxcJ1wiIG5nLWNsYXNzPVwie1xcJ21iLTJcXCc6ISh0ZHMuc2hvd1Rhc2tGb3JtRm4oKT09XFwnaVxcJyB8fCB0ZHMuc2hvd1Rhc2tGb3JtRm4oKT09XFwnZVxcJykgJiYgIXRkcy5zaG93VGFza0luaXRpYXRvcnNGbigpICYmICF0ZHMuc2hvd1Rhc2tPd25lcnNGbigpICYmICF0ZHMuc2hvd1Rhc2tTdGF0dXNGbigpLFxcJ3NoYWRvdyBib3JkZXIgYm9yZGVyLXByaW1hcnkgcm91bmRlZFxcJzogdGRzLnNob3dUYXNrRm9ybUZuKCk9PVxcJ2lcXCcgfHwgdGRzLnNob3dUYXNrRm9ybUZuKCk9PVxcJ2VcXCd9XCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBocmVmIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcC0xIHctMTAwIGgtMTAwXCIgbmctY2xpY2s9XCJ0ZHMuc2hvd0hpZGVUYXNrRm9ybShcXCdlXFwnKTtTaG93Rm9ybVZpZXcoMSxmYWxzZSlcIj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48aSBuZy1jbGFzcz1cIntcXCdmYXIgZmEtY2hlY2stY2lyY2xlIGZhLWxnIHRleHQtc3VjY2Vzc1xcJzpyZXNvdXJjZURlZmluaXRpb24ucmVzb3VyY2VkZWZsYW5nX3NldFswXS5Jbml0aWF0ZUZvcm0sXFwndGV4dC1tdXRlZFxcJzohcmVzb3VyY2VEZWZpbml0aW9uLnJlc291cmNlZGVmbGFuZ19zZXRbMF0uSW5pdGlhdGVGb3JtfVwiPjwvaT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIHAtMFwiPkRlc2lnbiBmb3JtPC9kaXY+PC9kaXY+PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LWNlbnRlclwiPjxkaXYgdGl0bGU9XCJEZWZpbmUgd2hvIGNhbiBpbml0aWF0ZSB0aGlzIHRhc2tcIiBuZy1jbGFzcz1cIntcXCdtYi0yXFwnOiEodGRzLnNob3dUYXNrRm9ybUZuKCk9PVxcJ2lcXCcgfHwgdGRzLnNob3dUYXNrRm9ybUZuKCk9PVxcJ2VcXCcpICYmICF0ZHMuc2hvd1Rhc2tJbml0aWF0b3JzRm4oKSAmJiAhdGRzLnNob3dUYXNrT3duZXJzRm4oKSAmJiAhdGRzLnNob3dUYXNrU3RhdHVzRm4oKSxcXCdzaGFkb3cgYm9yZGVyIGJvcmRlci1wcmltYXJ5IHJvdW5kZWRcXCc6IHRkcy5zaG93VGFza0luaXRpYXRvcnNGbigpfVwiPjxidXR0b24gdHlwZT1idXR0b24gdGl0bGU9XCJEZWZpbmUgd2hvIGNhbiBpbml0aWF0ZSB0aGlzIHRhc2tcIiBocmVmIG5nLWNsYXNzPVwie1xcJ2JvcmRlci0wXFwnOnRkcy5zaG93VGFza0luaXRpYXRvcnNGbigpfVwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYnRuLWZvcm0tZGVmLWRpc2FibGVkIHAtMSB3LTEwMFwiIG5nLWRpc2FibGVkPXRkcy5zaG93VGFza0luaXRpYXRvcnNGbigpIG5nLWNsaWNrPXNob3dIaWRlUHJvcGVydGllcyhmYWxzZSk7dGRzLnNob3dIaWRlVGFza1JvbGVzKDApO2dldFRhc2tBc3NpZ25tZW50cygpOz48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBtLTEgcC0wXCI+PGkgY2xhc3M9dGV4dC1zdWNjZXNzIG5nLWNsYXNzPVwie1xcJ2ZhciBmYS1jaGVjay1jaXJjbGUgZmEtbGdcXCc6dGFza0RlZmluaXRpb24uVGFza0luaXRpYXRvcnNTYXZlZCxcXCd0ZXh0LW11dGVkXFwnOiF0YXNrRGVmaW5pdGlvbi5UYXNrSW5pdGlhdG9yc1NhdmVkfVwiPjwvaT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIG0tMSBwLTBcIj5QZXJtaXNzaW9uczwvZGl2PjwvZGl2PjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgdGV4dC1jZW50ZXJcIj48ZGl2IHRpdGxlPVwiRGVmaW5lIHdobyBjYW4gZXhlY3V0ZSB0aGlzIHRhc2tcIiBuZy1jbGFzcz1cIntcXCdtYi0yXFwnOiEodGRzLnNob3dUYXNrRm9ybUZuKCk9PVxcJ2lcXCcgfHwgdGRzLnNob3dUYXNrRm9ybUZuKCk9PVxcJ2VcXCcpICYmICF0ZHMuc2hvd1Rhc2tJbml0aWF0b3JzRm4oKSAmJiAhdGRzLnNob3dUYXNrT3duZXJzRm4oKSAmJiAhdGRzLnNob3dUYXNrU3RhdHVzRm4oKSxcXCdzaGFkb3cgYm9yZGVyIGJvcmRlci1wcmltYXJ5IHJvdW5kZWRcXCc6IHRkcy5zaG93VGFza093bmVyc0ZuKCl9XCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiB0aXRsZT1cIkRlZmluZSB3aG8gY2FuIGV4ZWN1dGUgdGhpcyB0YXNrXCIgaHJlZiBuZy1kaXNhYmxlZD10ZHMuc2hvd1Rhc2tPd25lcnNGbigpIG5nLWNsYXNzPVwie1xcJ2JvcmRlci0wXFwnOnRkcy5zaG93VGFza093bmVyc0ZuKCl9XCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4tZm9ybS1kZWYtZGlzYWJsZWQgcC0xIHctMTAwXCIgbmctY2xpY2s9c2hvd0hpZGVQcm9wZXJ0aWVzKGZhbHNlKTt0ZHMuc2hvd0hpZGVUYXNrUm9sZXMoMSk7Z2V0VGFza0Fzc2lnbm1lbnRzKCk7PjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIG0tMSBwLTBcIj48aSBjbGFzcz10ZXh0LXN1Y2Nlc3MgbmctY2xhc3M9XCJ7XFwnZmFyIGZhLWNoZWNrLWNpcmNsZSBmYS1sZ1xcJzp0YXNrRGVmaW5pdGlvbi5Qb3RlbnRpYWxPd25lcnNTYXZlZCxcXCd0ZXh0LW11dGVkXFwnOiF0YXNrRGVmaW5pdGlvbi5Qb3RlbnRpYWxPd25lcnNTYXZlZH1cIj48L2k+PC9kaXY+PGRpdiBjbGFzcz1cImNvbCBtLTEgcC0wXCI+QXNzaWduIHRhc2s8L2Rpdj48L2Rpdj48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIHRleHQtY2VudGVyXCI+PGRpdiB0aXRsZT1cIkRlZmluZSB0YXNrIGFjdGlvbnNcIiBuZy1jbGFzcz1cIntcXCdtYi0yXFwnOiEodGRzLnNob3dUYXNrRm9ybUZuKCk9PVxcJ2lcXCcgfHwgdGRzLnNob3dUYXNrRm9ybUZuKCk9PVxcJ2VcXCcpICYmICF0ZHMuc2hvd1Rhc2tJbml0aWF0b3JzRm4oKSAmJiAhdGRzLnNob3dUYXNrT3duZXJzRm4oKSAmJiAhdGRzLnNob3dUYXNrU3RhdHVzRm4oKSwgXFwnc2hhZG93IGJvcmRlciBib3JkZXItcHJpbWFyeSByb3VuZGVkXFwnOiB0ZHMuc2hvd1Rhc2tTdGF0dXNGbigpfVwiPjxidXR0b24gdHlwZT1idXR0b24gdGl0bGU9XCJEZWZpbmUgdGFzayBhY3Rpb25zXCIgaHJlZiBuZy1kaXNhYmxlZD10ZHMuc2hvd1Rhc2tTdGF0dXNGbigpIG5nLWNsYXNzPVwie1xcJ2JvcmRlci0wXFwnOnRkcy5zaG93VGFza1N0YXR1c0ZuKCl9XCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4tZm9ybS1kZWYtZGlzYWJsZWQgcC0xIHctMTAwIGgtMTAwXCIgbmctY2xpY2s9XCJzaG93SGlkZVByb3BlcnRpZXMoZmFsc2UpO3Rkcy5zaG93SGlkZVRhc2tTdGF0dXNlcygxLHRydWUpO3Rkcy5nZXRUYXNrU3RhdHVzQWN0aW9ucyhcXCdjcmVhdGVkXFwnLFxcJ2NyZWF0ZWRcXCcsMCx0cnVlKVwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIG0tMSBwLTBcIj48aSBjbGFzcz10ZXh0LXN1Y2Nlc3MgbmctY2xhc3M9XCJ7XFwnZmFyIGZhLWNoZWNrLWNpcmNsZSBmYS1sZ1xcJzp0YXNrRGVmaW5pdGlvbi50YXNrLmFjdGlvbnNbMV0uU2F2ZWQsXFwndGV4dC1tdXRlZFxcJzohdGFza0RlZmluaXRpb24udGFzay5hY3Rpb25zWzFdLlNhdmVkfVwiPjwvaT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIG0tMSBwLTBcIj5UYXNrIGFjdGlvbnM8L2Rpdj48L2Rpdj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMFwiIG5nLWlmPXRkcy5zaG93VGFza0luaXRpYXRvcnNGbigpPjxkaXYgY2xhc3M9XCJjb2wtOSBib3JkZXItcmlnaHQgYm9yZGVyLXByaW1hcnlcIiBzdHlsZT1cIm1pbi1oZWlnaHQ6IDJyZW1cIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMFwiIG5nLWlmPXRkcy5zaG93VGFza093bmVyc0ZuKCk+PGRpdiBjbGFzcz1cImNvbC0xNSBib3JkZXItcmlnaHQgYm9yZGVyLXByaW1hcnlcIiBzdHlsZT1cIm1pbi1oZWlnaHQ6IDJyZW1cIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMFwiIG5nLWlmPXRkcy5zaG93VGFza1N0YXR1c0ZuKCk+PGRpdiBjbGFzcz1cImNvbC0yMSBib3JkZXItcmlnaHQgYm9yZGVyLXByaW1hcnlcIiBzdHlsZT1cIm1pbi1oZWlnaHQ6IDJyZW1cIj48L2Rpdj48L2Rpdj48ZGl2IGt0LXRhc2stZm9ybSBuZy1pZj1cInRkcy5zaG93VGFza0Zvcm1GbigpIT1cXCdcXCcgJiYgdGRzLnNob3dUYXNrRm9ybUZuKCkhPXVuZGVmaW5lZFwiPjwvZGl2PjxkaXYgaWQ9c2hvd1Rhc2tJbml0aWF0b3JzX3Nob3dUYXNrT3duZXJzX3Nob3dUYXNrU3RhdHVzIGNsYXNzPVwiY2FyZCBtLTAgcC0zIGJvcmRlci1wcmltYXJ5IHNoYWRvd1wiIG5nLWlmPVwidGRzLnNob3dUYXNrSW5pdGlhdG9yc0ZuKCkgfHwgdGRzLnNob3dUYXNrT3duZXJzRm4oKSB8fCB0ZHMuc2hvd1Rhc2tTdGF0dXNGbigpXCI+PGRpdiBuZy1pZj10ZHMuc2hvd1Rhc2tJbml0aWF0b3JzRm4oKSBjbGFzcz1cImNhcmQgcC0yIGJvcmRlci0wXCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgcHgtNFwiPjxzcGFuIGNsYXNzPVwidGFnIGxnXCI+VEFTSyBQRVJNSVNTSU9OUzwvc3Bhbj48ZGl2IGNsYXNzPVwiYWN0aW9uLWJhciBtbC1hdXRvXCI+PGJ1dHRvbiBuZy1jbGljaz10ZHMuc2hvd0hpZGVUYXNrUm9sZXMoMikgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodFwiPkNhbmNlbDwvYnV0dG9uPiA8YnV0dG9uIG5nLWNsaWNrPXNhdmVUYXNrQXNzaWdubWVudHMoMCkgdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1zdWNjZXNzIG1sLTJcIj5TYXZlIHBlcm1pc3Npb25zPC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNhcmQtYm9keSBwYi0xXCI+PGRpdiBjbGFzcz1jYXJkPjxkaXYgY2xhc3M9cC0yPjxkaXYgY2xhc3M9bWItMz48bGFiZWwgY2xhc3M9XCJib2xkIG1iLTIgdy0xMDBcIj5XaG8gY2FuIHN0YXJ0IHRoaXMgdGFzazwvbGFiZWw+PGRpdiBjbGFzcz1cImJ0bi1ncm91cCBidG4tZ3JvdXAtdG9nZ2xlIHctMTAwXCIgZGF0YS10b2dnbGU9YnV0dG9ucz48bGFiZWwgbmctY2xpY2s9XCJ0YXNrRGVmaW5pdGlvbi5QdWJsaWNUYXNrPXRydWVcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiBuZy1jbGFzcz1cInsgXFwnYWN0aXZlXFwnIDogdGFza0RlZmluaXRpb24uUHVibGljVGFza31cIj48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPWFzc2lnbnR5cGUgYXV0b2NvbXBsZXRlPW9mZiBjaGVja2VkPiBQdWJsaWMgdGFzayAoYXV0aG9yaXNhdGlvbiBpcyBub3QgcmVxdWlyZWQpPC9sYWJlbD4gPGxhYmVsIG5nLWNsaWNrPVwic2VsZWN0UHJldmlvdXNUYXNrVXNlcihcXCdpXFwnKVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiIG5nLWNsYXNzPVwieyBcXCdhY3RpdmVcXCcgOiB0YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNVc2Vycy5Bc3NpZ25UeXBlPT1cXCdpXFwnfVwiPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9YXNzaWdudHlwZSBhdXRvY29tcGxldGU9b2ZmIGNoZWNrZWQ+IFByZXZpb3VzIFRhc2sgQ3JlYXRvcjwvbGFiZWw+IDxsYWJlbCBuZy1jbGljaz1cInNlbGVjdFByZXZpb3VzVGFza1VzZXIoXFwnb1xcJylcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiBuZy1jbGFzcz1cInsgXFwnYWN0aXZlXFwnIDogdGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzVXNlcnMuQXNzaWduVHlwZT09XFwnb1xcJ31cIj48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPWFzc2lnbnR5cGUgYXV0b2NvbXBsZXRlPW9mZj4gUHJldmlvdXMgVGFzayBPd25lcjwvbGFiZWw+IDxsYWJlbCBuZy1jbGljaz1cInNlbGVjdFByZXZpb3VzVGFza1VzZXIoXFwnYVxcJylcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiBuZy1jbGFzcz1cInsgXFwnYWN0aXZlXFwnIDogKHRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc1VzZXJzLkFzc2lnblR5cGU9PVxcJ2FcXCcgfHwgdGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzVXNlcnMuQXNzaWduVHlwZT09XFwnZVxcJyl9XCI+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT1hc3NpZ250eXBlIGF1dG9jb21wbGV0ZT1vZmY+IEN1c3RvbSBVc2VyIEdyb3VwPC9sYWJlbD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPW1iLTM+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj10YXNrRGVmaW5pdGlvbi5QdWJsaWNUYXNrIGNsYXNzPVwicm93IHB4LTMgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yNCBtYi0yXCI+PGxhYmVsIGNsYXNzPVwibGFiZWwgdGV4dC1tdXRlZFwiPlB1YmxpYyB0YXNrIGFkZHJlc3M6PC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPW1sLTQ+PHNwYW4gY2xhc3M9cGwtMj4vbm0vcHVibGljL3t7b3JnYW5pc2F0aW9uX2lkfX0vPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgcGwtMlwiPjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9dGFza0RlZmluaXRpb24uVW5pcXVlTmFtZSBwbGFjZWhvbGRlcj1cIkVudGVyIHVuaXF1ZSB0YXNrIG5hbWVcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwiIXRhc2tEZWZpbml0aW9uLlB1YmxpY1Rhc2sgJiYgW1xcJ2FcXCcsXFwnZVxcJ10uaW5jbHVkZXModGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzVXNlcnMuQXNzaWduVHlwZSlcIiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTEyIGNhcmQgcC0xIGJvcmRlci0wXCI+PGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTJcIj48ZGl2IGNsYXNzPVwiY2FyZCBiZy13aGl0ZVwiPjxkaXYgY2xhc3M9cC0zPjxkaXY+PGkgY2xhc3M9XCJmYSBmYS11c2VyXCI+PC9pPiA8c3BhbiBjbGFzcz1cImJvbGQgcC0xXCI+VXNlcnM8L3NwYW4+PC9kaXY+PGRpdiBrdC1zZWxlY3QtdXNlcnMtd2l0aC1zY29wZSBuZy1pZj1maXJzdERvd25sb2FkQXNzaWdubWVudHMgc2VsZWN0ZWQtaXRlbXM9dGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzVXNlcnMuQXNzaWduZWVMaXN0PjwvZGl2PjxkaXYgY2xhc3M9XCJtdC00IGNvbC1hdXRvIGQtZmxleFwiPjxsYWJlbCBjbGFzcz1cInN3aXRjaCBzd2l0Y2gtZ3JlZW5cIj48aW5wdXQgbmctbW9kZWw9dGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzVXNlcnMuQXNzaWduVHlwZSB0eXBlPWNoZWNrYm94IG5nLXRydWUtdmFsdWU9XCJcXCdhXFwnXCIgbmctZmFsc2UtdmFsdWU9XCJcXCdlXFwnXCIgY2xhc3M9c3dpdGNoLWlucHV0PiA8c3BhbiBjbGFzcz1zd2l0Y2gtbGFiZWwgZGF0YS1vbj1PbiBkYXRhLW9mZj1PZmY+PC9zcGFuPiA8c3BhbiBjbGFzcz1zd2l0Y2gtaGFuZGxlPjwvc3Bhbj48L2xhYmVsPiA8c3BhbiBuZy1zaG93PVwidGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzVXNlcnMuQXNzaWduVHlwZSA9PSBcXCdhXFwnXCIgY2xhc3M9bXgtMj5TZWxlY3RlZCB1c2VycyBhcmUgYWxvd2VkIHRvIHN0YXJ0IHRoaXMgdGFzazwvc3Bhbj4gPHNwYW4gbmctc2hvdz1cInRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc1VzZXJzLkFzc2lnblR5cGUgPT0gXFwnZVxcJ1wiIGNsYXNzPW14LTI+U2VsZWN0ZWQgdXNlcnMgYXJlIGZvcmJpZGVuIHRvIHN0YXJ0IHRoaXMgdGFzazwvc3Bhbj48ZGl2IGNsYXNzPW15LTI+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0xMiBjYXJkIHAtMSBib3JkZXItMFwiPjxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0yXCI+PGRpdiBjbGFzcz1cImNhcmQgYmctd2hpdGVcIj48ZGl2IGNsYXNzPXAtMz48ZGl2PjxpIGNsYXNzPVwibXItMSBmYSBmYS1sZyBmYS11c2Vyc1wiPjwvaT4gPHNwYW4gY2xhc3M9Ym9sZD5Hcm91cHM8L3NwYW4+PC9kaXY+PGRpdiBrdC1zZWxlY3QtZ3JvdXBzLXdpdGgtc2NvcGUgbmctaWY9Zmlyc3REb3dubG9hZEFzc2lnbm1lbnRzIHNlbGVjdGVkLWl0ZW1zPXRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc0dyb3Vwcy5Bc3NpZ25lZUxpc3Q+PC9kaXY+PGRpdiBjbGFzcz1cIm10LTQgY29sLWF1dG8gZC1mbGV4XCI+PGxhYmVsIGNsYXNzPVwic3dpdGNoIHN3aXRjaC1ncmVlblwiPjxpbnB1dCBuZy1tb2RlbD10YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNHcm91cHMuQXNzaWduVHlwZSB0eXBlPWNoZWNrYm94IG5nLXRydWUtdmFsdWU9XCJcXCdhXFwnXCIgbmctZmFsc2UtdmFsdWU9XCJcXCdlXFwnXCIgY2xhc3M9c3dpdGNoLWlucHV0PiA8c3BhbiBjbGFzcz1zd2l0Y2gtbGFiZWwgZGF0YS1vbj1PbiBkYXRhLW9mZj1PZmY+PC9zcGFuPiA8c3BhbiBjbGFzcz1zd2l0Y2gtaGFuZGxlPjwvc3Bhbj48L2xhYmVsPiA8c3BhbiBuZy1zaG93PVwidGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzR3JvdXBzLkFzc2lnblR5cGUgPT0gXFwnYVxcJ1wiIGNsYXNzPW14LTI+U2VsZWN0ZWQgZ3JvdXBzIGFyZSBhbG93ZWQgdG8gc3RhcnQgdGhpcyB0YXNrPC9zcGFuPiA8c3BhbiBuZy1zaG93PVwidGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzR3JvdXBzLkFzc2lnblR5cGUgPT0gXFwnZVxcJ1wiIGNsYXNzPW14LTI+U2VsZWN0ZWQgZ3JvdXBzIGFyZSBmb3JiaWRlbiB0byBzdGFydCB0aGlzIHRhc2s8L3NwYW4+PGRpdiBjbGFzcz1teS0yPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9dGRzLnNob3dUYXNrT3duZXJzRm4oKSBjbGFzcz1cImNhcmQgcC0yIGJvcmRlci0wXCI+PGRpdiBjbGFzcz1cInJvdyBtLTAgcHgtNFwiPjxzcGFuIG5nLWlmPVwic2VsZWN0ZWREZWZpbmVkQWN0aW9ucyE9MlwiIGNsYXNzPVwidGFnIGxnIG5nLXNjb3BlXCI+VGFzayBhc3NpZ25tZW50PC9zcGFuPjxkaXYgY2xhc3M9XCJhY3Rpb24tYmFyIG1sLWF1dG9cIj48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPXRkcy5zaG93SGlkZVRhc2tSb2xlcygzKSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0XCI+Q2FuY2VsPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9c2F2ZVRhc2tBc3NpZ25tZW50cygxKSBjbGFzcz1cImJ0biBidG4tc20gYnRuLXN1Y2Nlc3MgbWwtMlwiPlNhdmU8L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHBiLTFcIj48ZGl2IGNsYXNzPVwiY2FyZCBwLTJcIj48ZGl2IGNsYXNzPW1iLTM+PGxhYmVsIGNsYXNzPVwiYm9sZCBtYi0yIHctMTAwXCI+V2hvIGNhbiBiZSBhc3NpZ25lZCB0byB3b3JrIG9uIHRoaXMgdGFzazwvbGFiZWw+PGRpdiBjbGFzcz1cImJ0bi1ncm91cCBidG4tZ3JvdXAtdG9nZ2xlIHctMTAwXCIgZGF0YS10b2dnbGU9YnV0dG9ucz48bGFiZWwgbmctY2xpY2s9XCJzZWxlY3RQcmV2aW91c1Rhc2tGb3JPd25lclVzZXIoXFwnc1xcJylcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiBuZy1jbGFzcz1cInsgXFwnYWN0aXZlXFwnIDogdGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc1VzZXJzLkFzc2lnblR5cGU9PVxcJ3NcXCd9XCI+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT1hc3NpZ250eXBlIGF1dG9jb21wbGV0ZT1vZmY+IFRhc2sgY3JlYXRvcjwvbGFiZWw+IDxsYWJlbCBuZy1jbGljaz1cInNlbGVjdFByZXZpb3VzVGFza0Zvck93bmVyVXNlcihcXCdpXFwnKVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiIG5nLWNsYXNzPVwieyBcXCdhY3RpdmVcXCcgOiB0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZT09XFwnaVxcJ31cIj48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPWFzc2lnbnR5cGUgYXV0b2NvbXBsZXRlPW9mZiBjaGVja2VkPiBQcmV2aW91cyBUYXNrIENyZWF0b3I8L2xhYmVsPiA8bGFiZWwgbmctY2xpY2s9XCJzZWxlY3RQcmV2aW91c1Rhc2tGb3JPd25lclVzZXIoXFwnb1xcJylcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiBuZy1jbGFzcz1cInsgXFwnYWN0aXZlXFwnIDogdGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc1VzZXJzLkFzc2lnblR5cGU9PVxcJ29cXCd9XCI+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT1hc3NpZ250eXBlIGF1dG9jb21wbGV0ZT1vZmY+IFByZXZpb3VzIFRhc2sgT3duZXI8L2xhYmVsPiA8bGFiZWwgbmctY2xpY2s9XCJzZWxlY3RQcmV2aW91c1Rhc2tGb3JPd25lclVzZXIoXFwnYVxcJylcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiBuZy1jbGFzcz1cInsgXFwnYWN0aXZlXFwnIDogKHRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNVc2Vycy5Bc3NpZ25UeXBlPT1cXCdhXFwnIHx8IHRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNVc2Vycy5Bc3NpZ25UeXBlPT1cXCdlXFwnKX1cIj48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPWFzc2lnbnR5cGUgYXV0b2NvbXBsZXRlPW9mZj4gQ3VzdG9tIFVzZXIgR3JvdXA8L2xhYmVsPiA8bGFiZWwgbmctY2xpY2s9XCJzZWxlY3RQcmV2aW91c1Rhc2tGb3JPd25lclVzZXIoXFwnZFxcJylcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiBuZy1jbGFzcz1cInsgXFwnYWN0aXZlXFwnIDogdGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc1VzZXJzLkFzc2lnblR5cGU9PVxcJ2RcXCd9XCI+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT1hc3NpZ250eXBlIGF1dG9jb21wbGV0ZT1vZmY+IFVzZXJzIGZyb20gZGF0YXNldDwvbGFiZWw+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1tLTI+PGRpdiBjbGFzcz1cInJvdyBtLTAgcC0wXCIgbmctaWY9XCJ0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZT09XFwnYVxcJyB8fCB0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZT09XFwnZVxcJ1wiIG5nLWNsYXNzPVwie1xcJ3dlbGwtY3VzdG9tXFwnOnRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc1VzZXJzLkFzc2lnblR5cGU9PVxcJ2FcXCcgfHwgdGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzVXNlcnMuQXNzaWduVHlwZT09XFwnZVxcJ31cIj48ZGl2IGNsYXNzPVwiY29sLWxnLTEyIGNhcmQgcHgtMSBib3JkZXItMFwiPjxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0yXCI+PGRpdiBjbGFzcz1cImNhcmQgYmctd2hpdGVcIj48ZGl2IGNsYXNzPXAtMz48ZGl2IGNsYXNzPjxpIGNsYXNzPVwiZmEgZmEtdXNlclwiPjwvaT4gPHNwYW4gY2xhc3M9XCJib2xkIHAtMVwiPiZuYnNwOyBVc2Vyczwvc3Bhbj48L2Rpdj48ZGl2IGt0LXNlbGVjdC11c2Vycy13aXRoLXNjb3BlIG5nLWlmPWZpcnN0RG93bmxvYWRBc3NpZ25tZW50cyBzZWxlY3RlZC1pdGVtcz10YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduZWVMaXN0PjwvZGl2PjxkaXYgY2xhc3M9XCJtdC00IGNvbC1hdXRvIGQtZmxleFwiPjxsYWJlbCBjbGFzcz1cInN3aXRjaCBzd2l0Y2gtZ3JlZW5cIj48aW5wdXQgbmctbW9kZWw9dGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc1VzZXJzLkFzc2lnblR5cGUgdHlwZT1jaGVja2JveCBuZy10cnVlLXZhbHVlPVwiXFwnYVxcJ1wiIG5nLWZhbHNlLXZhbHVlPVwiXFwnZVxcJ1wiIGNsYXNzPXN3aXRjaC1pbnB1dD4gPHNwYW4gY2xhc3M9c3dpdGNoLWxhYmVsIGRhdGEtb249T24gZGF0YS1vZmY9T2ZmPjwvc3Bhbj4gPHNwYW4gY2xhc3M9c3dpdGNoLWhhbmRsZT48L3NwYW4+PC9sYWJlbD4gPHNwYW4gbmctc2hvdz1cInRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNVc2Vycy5Bc3NpZ25UeXBlID09IFxcJ2FcXCdcIiBjbGFzcz1teC0yPlRhc2sgaXMgYXNzaWduZWQgb25seSB0byBzZWxlY3RlZCB1c2Vyczwvc3Bhbj4gPHNwYW4gbmctc2hvdz1cInRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNVc2Vycy5Bc3NpZ25UeXBlID09IFxcJ2VcXCdcIiBjbGFzcz1teC0yPlRhc2sgaXMgZm9iaWRkZW4gdG8gYmUgYXNzaWduZWQgdG8gc2VsZWN0ZWQgdXNlcnM8L3NwYW4+PGRpdiBjbGFzcz1teS0yPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMTIgY2FyZCBweC0xIGJvcmRlci0wXCI+PGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTJcIj48ZGl2IGNsYXNzPVwiY2FyZCBiZy13aGl0ZVwiPjxkaXYgY2xhc3M9cC0zPjxkaXYgY2xhc3M+PGkgY2xhc3M9XCJtci0xIGZhIGZhLWxnIGZhLXVzZXJzXCI+PC9pPiA8c3BhbiBjbGFzcz1ib2xkPiZuYnNwOyBHcm91cHM8L3NwYW4+PC9kaXY+PGRpdiBuZy1pZj1maXJzdERvd25sb2FkQXNzaWdubWVudHMga3Qtc2VsZWN0LWdyb3Vwcy13aXRoLXNjb3BlIHNlbGVjdGVkLWl0ZW1zPXRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNHcm91cHMuQXNzaWduZWVMaXN0PjwvZGl2PjxkaXYgY2xhc3M9XCJtdC00IGNvbC1hdXRvIGQtZmxleFwiPjxsYWJlbCBjbGFzcz1cInN3aXRjaCBzd2l0Y2gtZ3JlZW5cIj48aW5wdXQgbmctbW9kZWw9dGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc0dyb3Vwcy5Bc3NpZ25UeXBlIHR5cGU9Y2hlY2tib3ggbmctdHJ1ZS12YWx1ZT1cIlxcJ2FcXCdcIiBuZy1mYWxzZS12YWx1ZT1cIlxcJ2VcXCdcIiBjbGFzcz1zd2l0Y2gtaW5wdXQ+IDxzcGFuIGNsYXNzPXN3aXRjaC1sYWJlbCBkYXRhLW9uPU9uIGRhdGEtb2ZmPU9mZj48L3NwYW4+IDxzcGFuIGNsYXNzPXN3aXRjaC1oYW5kbGU+PC9zcGFuPjwvbGFiZWw+IDxzcGFuIG5nLXNob3c9XCJ0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzR3JvdXBzLkFzc2lnblR5cGUgPT0gXFwnYVxcJ1wiIGNsYXNzPW14LTI+VGFzayBpcyBhc3NpZ25lZCBvbmx5IHRvIHNlbGVjdGVkIGdyb3Vwczwvc3Bhbj4gPHNwYW4gbmctc2hvdz1cInRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNHcm91cHMuQXNzaWduVHlwZSA9PSBcXCdlXFwnXCIgY2xhc3M9bXgtMj5UYXNrIGlzIGZvYmlkZGVuIHRvIGJlIGFzc2lnbmVkIHRvIHNlbGVjdGVkIGdyb3Vwczwvc3Bhbj48ZGl2IGNsYXNzPW15LTI+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTAgcC0xXCIgbmctaWY9XCJ0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZT09XFwnZFxcJ1wiPlBsZWFzZSBzZWxlY3QgdXNlciBmcm9tIGRhdGFzZXQ8ZGl2IGNsYXNzPWNvbC1sZy0xMj48ZGl2IGt0LWNvZGVzLWRyb3Bkb3duIHNlYXJjaC10ZXh0PVwiU2VsZWN0IHVuaXF1ZSB1c2VyIHRhZ1wiIGxhYmVsIHZhbHVlLWxlbmd0aD1jb2wtc20tMTIgY29kZS1uYW1lPXVzZXJ0YWdzIHNlbGVjdGVkLWNvZGUtaWQ9dGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc1VzZXJzLlVuaXF1ZUlkPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgYm9yZGVyIHJvdW5kZWQgbXgtNFwiIG5nLXNob3c9XCJ0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZT09XFwnYVxcJyB8fCB0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZT09XFwnZVxcJ1wiPjxkaXYgY2xhc3M9XCJwLTIgY29sLWxnLTI0XCI+PGxhYmVsIGNsYXNzPVwiYm9sZCBtbC0yXCI+SG93IG1hbnkgdGFza3MgZG8geW91IHdhbnQgdG8gY3JlYXRlPzwvbGFiZWw+PGRpdiBjbGFzcz1cImNvbC0xMCBteS0zXCI+PHNlbGVjdCBuZy1vcHRpb25zPVwidGkubmFtZSBmb3IgdGkgaW4gdGFza1R5cGVMaXN0XCIgbmctaW5pdD1sb2NhbFZhcnMuaW5pdFRhc2tUeXBlU2VsZWN0aW9uKCkgbmctY2hhbmdlPXNldFRhc2tUeXBlKHNlbGVjdGVkKSBuZy1tb2RlbD10YXNrRGVmaW5pdGlvbi5UYXNrVHlwZU9iamVjdCBjbGFzcz1mb3JtLWNvbnRyb2wgaWQ9dGVzdHQ+PC9zZWxlY3Q+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBpZD1UQVNLX0FDVElPTlMgbmctaWY9dGRzLnNob3dUYXNrU3RhdHVzRm4oKSBjbGFzcz1cInJvdyBwLTEgbS0wXCI+PGRpdiBjbGFzcz1jb2wtMjQ+PGRpdiBjbGFzcz1cInJvdyBteS0wXCI+PGRpdiBjbGFzcz1cImNvbCBweC0yXCI+PGRpdiBjbGFzcz1cImQtZmxleCBwYi0zXCI+PHNwYW4gbmctaWY9XCJzZWxlY3RlZERlZmluZWRBY3Rpb25zIT0yXCIgY2xhc3M9XCJ0YWcgbGdcIj5UQVNLIEFDVElPTlM8L3NwYW4+PGRpdiBjbGFzcz1cImFjdGlvbi1iYXIgbWwtYXV0b1wiPjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9dGRzLnNob3dIaWRlVGFza1N0YXR1c2VzKHNlbGVjdGVkRGVmaW5lZEFjdGlvbnMsZmFsc2UpIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHRcIj5DYW5jZWw8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1zYXZlVGFza1BhcmFtZXRlcnMoKTtzYXZlVGFza1N0YXR1c2VzKCk7IGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc3VjY2VzcyBtbC0yXCI+U2F2ZTwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJzZWxlY3RlZERlZmluZWRBY3Rpb25zPT0yXCIgY2xhc3M9Y2FyZD48ZGl2IGNsYXNzPWNhcmQtaGVhZGVyPjxsYWJlbCBjbGFzcz1cImJvbGQgbWItM1wiPlRhc2sgcGFyYW1ldGVyczwvbGFiZWw+PGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgdy0xMDAgbWItMlwiPjxpbnB1dCBuZy1tb2RlbD10YXNrRGVmaW5pdGlvbi5BdXRvSW5pdGlhdGUgdHlwZT1jaGVja2JveCBjbGFzcz1mb3JtLWNoZWNrLWlucHV0IGlkPWNoZWNrMT4gPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCB0ZXh0LW11dGVkXCIgZm9yPWNoZWNrMT5BdXRvIGNyZWF0ZSB0YXNrIGFuZCBza2lwIGZvcm0gcHJvY2Vzc2luZzwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgdy0xMDAgbWItMlwiPjxpbnB1dCBuZy1tb2RlbD10YXNrRGVmaW5pdGlvbi5BdXRvRXhlY3V0ZSB0eXBlPWNoZWNrYm94IGNsYXNzPWZvcm0tY2hlY2staW5wdXQgaWQ9Y2hlY2syPiA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHRleHQtbXV0ZWRcIiBmb3I9Y2hlY2syPlRhc2sgaXMgY29tcGxldGVkIGFmdGVyIGJlaW5nIGNyZWF0ZWQ8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIHctMTAwIG1iLTJcIj48aW5wdXQgbmctbW9kZWw9dGFza0RlZmluaXRpb24uQXV0b1N0YXJ0IHR5cGU9Y2hlY2tib3ggY2xhc3M9Zm9ybS1jaGVjay1pbnB1dCBpZD1jaGVjazM+IDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdGV4dC1tdXRlZFwiIGZvcj1jaGVjazM+QXV0b21hdGljYWxseSBzdGFydCB3b3JraW5nIG9uIHRoZSB0YXNrIGFmdGVyIGNsYWltaW5nPC9sYWJlbD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwic2VsZWN0ZWREZWZpbmVkQWN0aW9ucyE9MlwiIGNsYXNzPVwicm93IG1iLTJcIj48bGFiZWwgY2xhc3M9XCJwbC0yIHBiLTJcIj5QaWNrIHRyYW5zaXRpb24gYW5kIGNob29zZSBhcHByb3ByaWF0ZSBhY3Rpb25zIHZpYSBkcmFnIGFuZCBkcm9wPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPXJvdz48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+PGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBoLTEwMCB3LTEwMFwiPjxkaXYgaWQ9bGVmdFBhbmUgY2xhc3M9XCJjb2wgcC0wXCI+PGRpdiBjbGFzcz1hY3Rpb24tdGFiLWl0ZW0gbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOnRkcy5nZXRTZWxlY3RlZFRyYW5zaXRpb24oKT09MH1cIj48YSBuZy1kaXNhYmxlZD1cInRkcy5nZXRTZWxlY3RlZFRyYW5zaXRpb24oKT09MFwiIGNsYXNzIGhyZWYgbmctaWY9XCJzZWxlY3RlZERlZmluZWRBY3Rpb25zPT0xXCIgbmctY2xhc3M9XCJ7IFxcJ2FjdGl2ZVxcJyA6IHRkcy5nZXRTZWxlY3RlZFRyYW5zaXRpb24oKT09MH1cIiBuZy1jbGljaz1cInRkcy5nZXRUYXNrU3RhdHVzQWN0aW9ucyhcXCdjcmVhdGVkXFwnLFxcJ2NyZWF0ZWRcXCcsMCx0cnVlKVwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPkNyZWF0ZWQgPGkgY2xhc3M9XCJmYXMgZmEtYW5nbGUtcmlnaHQgbXgtMVwiPjwvaT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sIHRleHQtcmlnaHQgcC0wXCIgbmctaWY9XCJ0ZHMuZ2V0VHJhbnNpdGlvbkFjdGlvbnNDb3VudChcXCdjcmVhdGVkY3JlYXRlZFxcJyk+MFwiPjxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1pbmZvIHJvdW5kZWQgbXgtMlwiPnt7dGRzLmdldFRyYW5zaXRpb25BY3Rpb25zQ291bnQoXFwnY3JlYXRlZGNyZWF0ZWRcXCcpfX08L2Rpdj48L2Rpdj48L2Rpdj48L2E+PC9kaXY+PGRpdiBjbGFzcz1hY3Rpb24tdGFiLWl0ZW0gbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOnRkcy5nZXRTZWxlY3RlZFRyYW5zaXRpb24oKT09MX1cIj48YSBuZy1kaXNhYmxlZD1cInRkcy5nZXRTZWxlY3RlZFRyYW5zaXRpb24oKT09MVwiIGhyZWYgbmctaWY9XCJzZWxlY3RlZERlZmluZWRBY3Rpb25zPT0xXCIgbmctY2xhc3M9XCJ7IFxcJ2FjdGl2ZVxcJyA6IHRkcy5nZXRTZWxlY3RlZFRyYW5zaXRpb24oKT09MX1cIiBuZy1jbGljaz1cInRkcy5nZXRUYXNrU3RhdHVzQWN0aW9ucyhcXCdjcmVhdGVkXFwnLFxcJ3JlYWR5XFwnLDEsdHJ1ZSlcIj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj5DcmVhdGVkIDxpIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLXJpZ2h0IG14LTFcIj48L2k+IFJlYWR5PC9kaXY+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LXJpZ2h0IHAtMFwiIG5nLWlmPVwidGRzLmdldFRyYW5zaXRpb25BY3Rpb25zQ291bnQoXFwnY3JlYXRlZHJlYWR5XFwnKT4wXCI+PGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWluZm8gcm91bmRlZCBteC0yXCI+e3t0ZHMuZ2V0VHJhbnNpdGlvbkFjdGlvbnNDb3VudChcXCdjcmVhdGVkcmVhZHlcXCcpfX08L2Rpdj48L2Rpdj48L2Rpdj48L2E+PC9kaXY+PGRpdiBjbGFzcz1hY3Rpb24tdGFiLWl0ZW0gbmctY2xhc3M9XCJ7XFwnYWN0aXZlXFwnOnRkcy5nZXRTZWxlY3RlZFRyYW5zaXRpb24oKT09Mn1cIj48YSBocmVmIG5nLWlmPVwic2VsZWN0ZWREZWZpbmVkQWN0aW9ucz09MSAmJiAhdGFza0RlZmluaXRpb24uQXV0b1N0YXJ0XCIgbmctY2xhc3M9XCJ7IFxcJ2FjdGl2ZVxcJyA6IHRkcy5nZXRTZWxlY3RlZFRyYW5zaXRpb24oKT09Mn1cIiBuZy1jbGljaz1cInRkcy5nZXRUYXNrU3RhdHVzQWN0aW9ucyhcXCdyZWFkeVxcJyxcXCdjbGFpbVxcJywyLHRydWUpXCI+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+UmVhZHkgPGkgY2xhc3M9XCJmYXMgZmEtYW5nbGUtcmlnaHQgbXgtMVwiPjwvaT4gQ2xhaW1lZDwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgdGV4dC1yaWdodCBwLTBcIiBuZy1pZj1cInRkcy5nZXRUcmFuc2l0aW9uQWN0aW9uc0NvdW50KFxcJ3JlYWR5Y2xhaW1lZFxcJyk+MFwiPjxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1pbmZvIHJvdW5kZWQgbXgtMlwiPnt7dGRzLmdldFRyYW5zaXRpb25BY3Rpb25zQ291bnQoXFwncmVhZHljbGFpbWVkXFwnKX19PC9kaXY+PC9kaXY+PC9kaXY+PC9hPjwvZGl2PjxkaXYgY2xhc3M9YWN0aW9uLXRhYi1pdGVtPjxhIGhyZWYgbmctaWY9XCJzZWxlY3RlZERlZmluZWRBY3Rpb25zPT0xXCIgbmctY2xhc3M9XCJ7IFxcJ2FjdGl2ZVxcJyA6IHRkcy5nZXRTZWxlY3RlZFRyYW5zaXRpb24oKT09M31cIiBuZy1jbGljaz1cInRkcy5nZXRUYXNrU3RhdHVzQWN0aW9ucyhcXCdjbGFpbVxcJyxcXCdJblByb2dyZXNzXFwnLDMsdHJ1ZSlcIj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj5DbGFpbWVkIDxpIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLXJpZ2h0IG14LTFcIj48L2k+IEluIHByb2dyZXNzPC9kaXY+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LXJpZ2h0IHAtMFwiIG5nLWlmPVwidGRzLmdldFRyYW5zaXRpb25BY3Rpb25zQ291bnQoXFwnY2xhaW1JblByb2dyZXNzXFwnKT4wXCI+PGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWluZm8gcm91bmRlZCBteC0yXCI+e3t0ZHMuZ2V0VHJhbnNpdGlvbkFjdGlvbnNDb3VudChcXCdjbGFpbUluUHJvZ3Jlc3NcXCcpfX08L2Rpdj48L2Rpdj48L2Rpdj48L2E+PC9kaXY+PGRpdiBjbGFzcz1hY3Rpb24tdGFiLWl0ZW0+PGEgaHJlZiBuZy1pZj1cInNlbGVjdGVkRGVmaW5lZEFjdGlvbnM9PTEgJiYgdGFza0RlZmluaXRpb24uQXV0b1N0YXJ0XCIgbmctY2xhc3M9XCJ7IFxcJ2FjdGl2ZVxcJyA6IHRkcy5nZXRTZWxlY3RlZFRyYW5zaXRpb24oKT09NH1cIiBuZy1jbGljaz1cInRkcy5nZXRUYXNrU3RhdHVzQWN0aW9ucyhcXCdyZWFkeVxcJyxcXCdJblByb2dyZXNzXFwnLDQsdHJ1ZSlcIj48ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj5SZWFkeSA8aSBjbGFzcz1cImZhcyBmYS1hbmdsZS1yaWdodCBteC0xXCI+PC9pPiBJbiBwcm9ncmVzczwvZGl2PjxkaXYgY2xhc3M9XCJjb2wgcC0wIHRleHQtcmlnaHRcIiBuZy1pZj1cInRkcy5nZXRUcmFuc2l0aW9uQWN0aW9uc0NvdW50KFxcJ3JlYWR5SW5Qcm9ncmVzc1xcJyk+MFwiPjxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1pbmZvIHJvdW5kZWQgbXgtMlwiPnt7dGRzLmdldFRyYW5zaXRpb25BY3Rpb25zQ291bnQoXFwncmVhZHlJblByb2dyZXNzXFwnKX19PC9kaXY+PC9kaXY+PC9kaXY+PC9hPjwvZGl2PjxkaXYgY2xhc3M9YWN0aW9uLXRhYi1pdGVtPjxhIGhyZWYgbmctaWY9XCJzZWxlY3RlZERlZmluZWRBY3Rpb25zPT0xICYmIHRhc2tEZWZpbml0aW9uLkF1dG9FeGVjdXRlXCIgbmctY2xhc3M9XCJ7IFxcJ2FjdGl2ZVxcJyA6IHRkcy5nZXRTZWxlY3RlZFRyYW5zaXRpb24oKT09NX1cIiBuZy1jbGljaz1cInRkcy5nZXRUYXNrU3RhdHVzQWN0aW9ucyhcXCdJblByb2dyZXNzXFwnLFxcJ2NvbXBsZXRlZFxcJyw1LHRydWUpXCI+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+SW4gcHJvZ3Jlc3MgPGkgY2xhc3M9XCJmYXMgZmEtYW5nbGUtcmlnaHQgbXgtMVwiPjwvaT4gQ29tcGxldGVkPC9kaXY+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LXJpZ2h0IHAtMFwiIG5nLWlmPVwidGRzLmdldFRyYW5zaXRpb25BY3Rpb25zQ291bnQoXFwnSW5Qcm9ncmVzc2NvbXBsZXRlZFxcJyk+MFwiPjxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1pbmZvIHJvdW5kZWQgbXgtMlwiPnt7dGRzLmdldFRyYW5zaXRpb25BY3Rpb25zQ291bnQoXFwnSW5Qcm9ncmVzc2NvbXBsZXRlZFxcJyl9fTwvZGl2PjwvZGl2PjwvZGl2PjwvYT48L2Rpdj48ZGl2IGNsYXNzPWFjdGlvbi10YWItaXRlbT48YSBocmVmIG5nLWlmPVwic2VsZWN0ZWREZWZpbmVkQWN0aW9ucz09MVwiIG5nLWNsYXNzPVwieyBcXCdhY3RpdmVcXCcgOiB0ZHMuZ2V0U2VsZWN0ZWRUcmFuc2l0aW9uKCk9PTZ9XCIgbmctY2xpY2s9XCJ0ZHMuZ2V0VGFza1N0YXR1c0FjdGlvbnMoXFwnSW5Qcm9ncmVzc1xcJyxcXCdPbkhvbGRcXCcsNix0cnVlKVwiPjxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMFwiPkluIHByb2dyZXNzIDxpIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLXJpZ2h0IG14LTFcIj48L2k+IE9uIGhvbGQ8L2Rpdj48ZGl2IGNsYXNzPVwiY29sIHRleHQtcmlnaHQgcC0wXCIgbmctaWY9XCJ0ZHMuZ2V0VHJhbnNpdGlvbkFjdGlvbnNDb3VudChcXCdJblByb2dyZXNzT25Ib2xkXFwnKT4wXCI+PGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWluZm8gcm91bmRlZCBteC0yXCI+e3t0ZHMuZ2V0VHJhbnNpdGlvbkFjdGlvbnNDb3VudChcXCdJblByb2dyZXNzT25Ib2xkXFwnKX19PC9kaXY+PC9kaXY+PC9kaXY+PC9hPjwvZGl2PjxkaXYgY2xhc3M9YWN0aW9uLXRhYi1pdGVtPjxhIGhyZWYgbmctaWY9XCJzZWxlY3RlZERlZmluZWRBY3Rpb25zPT0xXCIgbmctY2xhc3M9XCJ7IFxcJ2FjdGl2ZVxcJyA6IHRkcy5nZXRTZWxlY3RlZFRyYW5zaXRpb24oKT09N31cIiBuZy1jbGljaz1cInRkcy5nZXRUYXNrU3RhdHVzQWN0aW9ucyhcXCdJblByb2dyZXNzXFwnLFxcJ2NvbXBsZXRlZFxcJyw3LHRydWUpXCI+PGRpdiBjbGFzcz1cInJvdyBtLTBcIj48ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+SW4gcHJvZ3Jlc3MgPGkgY2xhc3M9XCJmYXMgZmEtYW5nbGUtcmlnaHQgbXgtMVwiPjwvaT4gQ29tcGxldGVkPC9kaXY+PGRpdiBjbGFzcz1cImNvbCB0ZXh0LXJpZ2h0IHAtMFwiIG5nLWlmPVwidGRzLmdldFRyYW5zaXRpb25BY3Rpb25zQ291bnQoXFwnSW5Qcm9ncmVzc2NvbXBsZXRlZFxcJyk+MFwiPjxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1pbmZvIHJvdW5kZWQgbXgtMlwiPnt7dGRzLmdldFRyYW5zaXRpb25BY3Rpb25zQ291bnQoXFwnSW5Qcm9ncmVzc2NvbXBsZXRlZFxcJyl9fTwvZGl2PjwvZGl2PjwvZGl2PjwvYT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLTI0IGJvcmRlci1yaWdodCBib3JkZXItd2FybmluZ1wiIHN0eWxlPWZsZXg6MT48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGlkPVJpZ2h0UGFuZSBjbGFzcz1cImNvbCByaWdodC1wYW5lLXRvcC1ib3JkZXJcIj48ZGl2IGlkPUVudGVyX1BhcmFtZXRlcnM+PGRpdiBuZy1pZj1cInNlbGVjdGVkRGVmaW5lZEFjdGlvbnM9PTBcIiBjbGFzcz1cIm0tMCB0ZXh0LWxlZnRcIj48ZGl2IGNsYXNzPjxhIGhyZWYgbmctY2xpY2s9XCJ0YXNrRGVmaW5pdGlvbi5BdXRvSW5pdGlhdGU9IXRhc2tEZWZpbml0aW9uLkF1dG9Jbml0aWF0ZVwiIHN0eWxlPVwidGV4dC1kZWNvcmF0aW9uOiBub25lO1wiPjxpIGNsYXNzPVwiZmEgZmEtYW5nbGUtZG91YmxlLXJpZ2h0XCIgbmctY2xhc3M9XCJ7XFwndGV4dC1zdWNjZXNzXFwnOnRhc2tEZWZpbml0aW9uLkF1dG9Jbml0aWF0ZSwgXFwndGV4dC1kYW5nZXJcXCc6IXRhc2tEZWZpbml0aW9uLkF1dG9Jbml0aWF0ZX1cIj4mbmJzcCBBdXRvIGNyZWF0ZSB0YXNrIGFuZCBza2lwIGZvcm0gcHJvY2Vzc2luZyAmbmJzcDwvaT4gPGkgY2xhc3M9XCJmYXIgZmEtY2hlY2stc3F1YXJlIHRleHQtc3VjY2Vzc1wiIG5nLWlmPXRhc2tEZWZpbml0aW9uLkF1dG9Jbml0aWF0ZT48L2k+IDxpIGNsYXNzPVwiZmFyIGZhLXNxdWFyZSB0ZXh0LWRhbmdlclwiIG5nLWlmPSF0YXNrRGVmaW5pdGlvbi5BdXRvSW5pdGlhdGU+PC9pPjwvYT48L2Rpdj48ZGl2IGNsYXNzPW1hcmdpbi10b3AtNT48YSBocmVmIG5nLWNsaWNrPXNldEF1dG9FeGVjdXRlKCkgc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246IG5vbmU7XCI+PGkgY2xhc3M9XCJmYSBmYS1jaGVja1wiIG5nLWNsYXNzPVwie1xcJ3RleHQtc3VjY2Vzc1xcJzp0YXNrRGVmaW5pdGlvbi5BdXRvRXhlY3V0ZSwgXFwndGV4dC1kYW5nZXJcXCc6IXRhc2tEZWZpbml0aW9uLkF1dG9FeGVjdXRlfVwiPiZuYnNwIFRhc2sgaXMgY29tcGxldGVkIGFmdGVyIGJlaW5nIGNyZWF0ZWQgJm5ic3A8L2k+IDxpIGNsYXNzPVwiZmFyIGZhLWNoZWNrLXNxdWFyZSB0ZXh0LXN1Y2Nlc3NcIiBuZy1pZj10YXNrRGVmaW5pdGlvbi5BdXRvRXhlY3V0ZT48L2k+IDxpIGNsYXNzPVwiZmFyIGZhLXNxdWFyZSB0ZXh0LWRhbmdlclwiIG5nLWlmPSF0YXNrRGVmaW5pdGlvbi5BdXRvRXhlY3V0ZT48L2k+PC9hPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9ZmFsc2UgY2xhc3M9XCJweC0wIG0tMCBjYXJkLWhlYWRlciB0ZXh0LWxlZnRcIj48ZGl2IGNsYXNzPXRleHQtY2VudGVyPjxhIGhyZWYgbmctY2xpY2s9c2hvd05vdGlmaWNhdGlvbnMoKT48aSBjbGFzcz1cImZhIGZhLWJlbGwgdGV4dC1kYXJrXCI+Jm5ic3AgTm90aWZpY2F0aW9uczwvaT48L2E+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm0tMCBtdC0yIG1iLTIgdGV4dC1sZWZ0XCI+PGRpdiBrdC1jb2Rlcy1kZWYtYWN0aW9ucyBzdGF0dXMtZnJvbT10YXNrU3RhdHVzRnJvbSBzdGF0dXMtdG89dGFza1N0YXR1c1RvIGNvZGVzPWNvZGVzTGlzdCBjb2Rlcy1hY3Rpb25zPWNvZGVzQWN0aW9ucyBkZWZhdWx0LWNvZGU9dGFza3N0YXR1c2VzIHRhc2stdWlkPXRhc2tVaWQgdGFzaz10YXNrIHRhc2staWQ9dGFza0lkIGFjdGlvbnMtbGlzdD1cIkRyYWcgQWN0aW9ucyBmcm9tIGhlcmUhXCIgc2VsZWN0LWNvZGU9ZmFsc2U+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBpZD1Qcm9wZXJ0aWVzX21lbnUgbmctaWY9XCJnc3J2Yy5nZXRGaWVsZFByb3BlcnRpZXNPcGVuZWQoKSAmJiBnc3J2Yy5nZXRGb3JtVmlld1R5cGUoKT09MVwiIGNsYXNzPVwiYm9yZGVyLTAgcC0wIGNvbC1hdXRvIG14LTFcIiBzdHlsZT1cIm1heC13aWR0aDogMjAlO1wiPjxkaXYgc3R5bGU9dG9wOjUwcHggY2xhc3M9c3RpY2t5PjxkaXYgY2xhc3M9XCJyb3cgbS0wIGJnLWxpZ2h0IHJvdW5kZWRcIj48ZGl2IGNsYXNzPVwiY29sIHAtMCBteS1hdXRvXCI+PHNwYW4gY2xhc3M9XCJtbC0xIGxhYmVsLXhzIGJvbGRcIj5Qcm9wZXJ0aWVzPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtYXV0byBwLTBcIj48YnV0dG9uIHR5cGU9YnV0dG9uIHRpdGxlPVwiQ2xvc2UgcHJvcGVydGllc1wiIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgcC0wIHBsLTEgcHItMVwiIG5nLWNsaWNrPXNob3dIaWRlUHJvcGVydGllcyhmYWxzZSk+PHNtYWxsPjxzcGFuIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L3NwYW4+PC9zbWFsbD48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG0tMCBwLTFcIiBzdHlsZT1cIm1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSA0cmVtKTtcIiBuZy1pZj1cImdzcnZjLmdldEZpZWxkUHJvcGVydGllc09wZW5lZCgpICYmIGdzcnZjLmdldEZvcm1WaWV3VHlwZSgpPT0xXCIga3QtZm9ybS1lbGVtZW50LXByb3BlcnRpZXMgbG9jYWwtdmFycz1sb2NhbFZhcnMgZmQ9c2VsZWN0ZWRGaWVsZD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDVfdGFza3MvYW5ndWxhclRlbXBsYXRlcy90YXNrc0RlZmluaXRpb25EZXRhaWxlZC5odG1sJywnPGRpdiBjbGFzcz1cInJvdyB3ZWxsLWN1c3RvbSBtLTBcIj48ZGl2IGNsYXNzPWNvbC1sZy0yND48ZGl2IGNsYXNzPXRleHQtaW5mbz48Yj5UYXNrIGluZm88L2I+IDxidXR0b24gdHlwZT1idXR0b24gY2xhc3M9XCJidG4gYnRuLWxpbmsgZmxvYXQtcmlnaHRcIiBuZy1jbGljaz1cImlzQ29sbGFwc2VkVGFza0luZm8gPSAhaXNDb2xsYXBzZWRUYXNrSW5mb1wiPjxzcGFuIG5nLWNsYXNzPVwie1xcJ2ZhIGZhLXBsdXNcXCc6ICFpc0NvbGxhcHNlZFRhc2tJbmZvLFxcJ2ZhIGZhLW1pbnVzXFwnOiBpc0NvbGxhcHNlZFRhc2tJbmZvIH1cIj48L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz1tYXJnaW4wIGt0LXRhc2stZGVmLWRldGFpbHMgaXMtY29sbGFwc2VkPWlzQ29sbGFwc2VkVGFza0luZm8gdGFzay1kZWZpbml0aW9uPXJlc291cmNlRGVmaW5pdGlvbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPWZhbHNlIGNsYXNzPVwicm93IHdlbGwtY3VzdG9tIG0tMFwiPjxkaXY+PGRpdj48Yj5EZWZpbml0aW9uIGNoZWNrbGlzdDwvYj4gPGkgbmctY2xhc3M9XCJ7XFwndGV4dC1kYW5nZXJcXCc6ICFjaGVja2xpc3QuZm9ybSxcXCd0ZXh0LXN1Y2Nlc3NcXCc6IGNoZWNrbGlzdC5mb3JtfVwiPiZuYnNwICZuYnNwIDxiPkZvcm1zPC9iPiA8aSBuZy1jbGFzcz1cIntcXCdmYSBmYS10aW1lcy1jaXJjbGUgZmEtbGdcXCc6ICFjaGVja2xpc3QuZm9ybSxcXCdmYSBmYS1jaGVjay1jaXJjbGUgZmEtbGdcXCc6IGNoZWNrbGlzdC5mb3JtIH1cIj48L2k+PC9pPiA8c3BhbiBuZy1jbGFzcz1cIntcXCd0ZXh0LWRhbmdlclxcJzogIWNoZWNrbGlzdC5hc3NpZ24sXFwndGV4dC1zdWNjZXNzXFwnOiBjaGVja2xpc3QuYXNzaWdufVwiPiZuYnNwICZuYnNwIDxiPkFzc2lnbm1lbnRzPC9iPiA8aSBuZy1jbGFzcz1cIntcXCdmYSBmYS10aW1lcy1jaXJjbGUgZmEtbGdcXCc6ICFjaGVja2xpc3QuYXNzaWduLFxcJ2ZhIGZhLWNoZWNrLWNpcmNsZSBmYS1sZ1xcJzogY2hlY2tsaXN0LmFzc2lnbiB9XCI+PC9pPiA8c3BhbiBuZy1jbGFzcz1cIntcXCd0ZXh0LWRhbmdlclxcJzogIWNoZWNrbGlzdC5vdXRjb21lcyxcXCd0ZXh0LXN1Y2Nlc3NcXCc6IGNoZWNrbGlzdC5vdXRjb21lc31cIj4mbmJzcCAmbmJzcCA8Yj5PdXRjb21lczwvYj4gPGkgbmctY2xhc3M9XCJ7XFwnZmEgZmEtdGltZXMtY2lyY2xlIGZhLWxnXFwnOiAhY2hlY2tsaXN0Lm91dGNvbWVzLFxcJ2ZhIGZhLWNoZWNrLWNpcmNsZSBmYS1sZ1xcJzogY2hlY2tsaXN0Lm91dGNvbWVzIH1cIj48L2k+IDxzcGFuIG5nLWNsYXNzPVwie1xcJ3RleHQtZGFuZ2VyXFwnOiAhY2hlY2tsaXN0LnN0YXR1cyxcXCd0ZXh0LXN1Y2Nlc3NcXCc6IGNoZWNrbGlzdC5zdGF0dXN9XCI+Jm5ic3AgJm5ic3AgPGI+U3RhdHVzZXM8L2I+IDxpIG5nLWNsYXNzPVwie1xcJ2ZhIGZhLXRpbWVzLWNpcmNsZSBmYS1sZ1xcJzogIWNoZWNrbGlzdC5zdGF0dXMsXFwnZmEgZmEtY2hlY2stY2lyY2xlIGZhLWxnXFwnOiBjaGVja2xpc3Quc3RhdHVzIH1cIj48L2k+IDxpPiZuYnNwICZuYnNwIDxiPlBhcmFtZXRlcnM8L2I+IDxpIG5nLWNsYXNzPVwie1xcJ2ZhIGZhLXRpbWVzLWNpcmNsZSBmYS1sZ1xcJzogIWNoZWNrbGlzdC5wYXJhbXMsXFwnZmEgZmEtY2hlY2stY2lyY2xlIGZhLWxnXFwnOiBjaGVja2xpc3QucGFyYW1zIH1cIj48L2k+PC9pPjwvc3Bhbj48L3NwYW4+PC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9XCJ0YXNrQXNzaWdubWVudHMuc2hvd1ByZXZpb3VzVGFzayAmJiBzaG93VGFza0luaXRpYXRvcnNcIiBjbGFzcz1cInJvdyBtYXJnaW4wXCI+PGRpdiBjbGFzcz1cIm9mZnNldC1sZy02IGNvbC1sZy02IHdlbGwtY3VzdG9tIGJnLXdoaXRlXCI+PGRpdiBjbGFzcz1cIndlbGwgd2VsbC1zbSB0ZXh0LWluZm9cIj5QcmV2aW91cyB0YXNrPC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy02IHRleHQtY2VudGVyXCI+PGEgaHJlZiBuZy1jbGljaz1cInNlbGVjdFByZXZpb3VzVGFza1VzZXIoXFwnaVxcJylcIiBzdHlsZT1cInRleHQtZGVjb3JhdGlvbjogbm9uZTtcIj48aSBjbGFzcz1cImZhIGZhLXVzZXIgZmEtMnggdGV4dC1wcmltYXJ5XCIgbmctY2xhc3M9XCJ7XFwndGV4dC1zdWNjZXNzXFwnOnRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc1VzZXJzLkFzc2lnblR5cGU9PVxcJ2lcXCd9XCI+PC9pPiA8aSBjbGFzcz1cImZhIGZhLWNoZWNrIHRleHQtc3VjY2Vzc1wiIG5nLWNsYXNzPVwie1xcJ3Zpc2liaWxpdHktdmlzaWJsZVxcJzp0YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNVc2Vycy5Bc3NpZ25UeXBlPT1cXCdpXFwnLFxcJ3Zpc2liaWxpdHktaGlkZGVuXFwnOnRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc1VzZXJzLkFzc2lnblR5cGUhPVxcJ2lcXCd9XCI+PC9pPjxkaXYgY2xhc3M9dGV4dC1wcmltYXJ5IG5nLWNsYXNzPVwie1xcJ3RleHQtc3VjY2Vzc1xcJzp0YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNVc2Vycy5Bc3NpZ25UeXBlPT1cXCdpXFwnfVwiPlRhc2sgY3JlYXRvcjwvZGl2PjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTYgdGV4dC1jZW50ZXJcIj48YSBocmVmIG5nLWNsaWNrPVwic2VsZWN0UHJldmlvdXNUYXNrVXNlcihcXCdvXFwnKVwiIHN0eWxlPVwidGV4dC1kZWNvcmF0aW9uOiBub25lO1wiPjxpIGNsYXNzPVwiZmEgZmEtdXNlciBmYS0yeCB0ZXh0LXByaW1hcnlcIiBuZy1jbGFzcz1cIntcXCd0ZXh0LXN1Y2Nlc3NcXCc6dGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzVXNlcnMuQXNzaWduVHlwZT09XFwnb1xcJ31cIj48L2k+IDxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgdGV4dC1zdWNjZXNzXCIgbmctY2xhc3M9XCJ7XFwndmlzaWJpbGl0eS12aXNpYmxlXFwnOnRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc1VzZXJzLkFzc2lnblR5cGU9PVxcJ29cXCcsXFwndmlzaWJpbGl0eS1oaWRkZW5cXCc6dGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzVXNlcnMuQXNzaWduVHlwZSE9XFwnb1xcJ31cIj48L2k+PGRpdiBjbGFzcz10ZXh0LXByaW1hcnkgbmctY2xhc3M9XCJ7XFwndGV4dC1zdWNjZXNzXFwnOnRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc1VzZXJzLkFzc2lnblR5cGU9PVxcJ29cXCd9XCI+VGFzayBvd25lcjwvZGl2PjwvYT48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPVwidGFza0Fzc2lnbm1lbnRzLnNob3dQcmV2aW91c1Rhc2tGb3JPd25lciAmJiBzaG93VGFza093bmVyc1wiIGNsYXNzPVwicm93IG1hcmdpbjBcIj48ZGl2IGNsYXNzPVwib2Zmc2V0LWxnLTYgY29sLWxnLTYgd2VsbC1jdXN0b20gYmctd2hpdGVcIj48ZGl2IGNsYXNzPVwid2VsbCB3ZWxsLXNtIHRleHQtaW5mb1wiPlByZXZpb3VzIHRhc2s8L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTYgdGV4dC1jZW50ZXJcIj48YSBocmVmIG5nLWNsaWNrPVwic2VsZWN0UHJldmlvdXNUYXNrRm9yT3duZXJVc2VyKFxcJ2lcXCcpXCIgc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246IG5vbmU7XCI+PGkgY2xhc3M9XCJmYSBmYS11c2VyIGZhLTJ4IHRleHQtcHJpbWFyeVwiIG5nLWNsYXNzPVwie1xcJ3RleHQtc3VjY2Vzc1xcJzp0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZT09XFwnaVxcJ31cIj48L2k+IDxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgdGV4dC1zdWNjZXNzXCIgbmctY2xhc3M9XCJ7XFwndmlzaWJpbGl0eS12aXNpYmxlXFwnOnRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNVc2Vycy5Bc3NpZ25UeXBlPT1cXCdpXFwnLFxcJ3Zpc2liaWxpdHktaGlkZGVuXFwnOnRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNVc2Vycy5Bc3NpZ25UeXBlIT1cXCdpXFwnfVwiPjwvaT48ZGl2IGNsYXNzPXRleHQtcHJpbWFyeSBuZy1jbGFzcz1cIntcXCd0ZXh0LXN1Y2Nlc3NcXCc6dGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc1VzZXJzLkFzc2lnblR5cGU9PVxcJ2lcXCd9XCI+VGFzayBjcmVhdG9yPC9kaXY+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctNiB0ZXh0LWNlbnRlclwiPjxhIGhyZWYgbmctY2xpY2s9XCJzZWxlY3RQcmV2aW91c1Rhc2tGb3JPd25lclVzZXIoXFwnb1xcJylcIiBzdHlsZT1cInRleHQtZGVjb3JhdGlvbjogbm9uZTtcIj48aSBjbGFzcz1cImZhIGZhLXVzZXIgZmEtMnggdGV4dC1wcmltYXJ5XCIgbmctY2xhc3M9XCJ7XFwndGV4dC1zdWNjZXNzXFwnOnRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNVc2Vycy5Bc3NpZ25UeXBlPT1cXCdvXFwnfVwiPjwvaT4gPGkgY2xhc3M9XCJmYSBmYS1jaGVjayB0ZXh0LXN1Y2Nlc3NcIiBuZy1jbGFzcz1cIntcXCd2aXNpYmlsaXR5LXZpc2libGVcXCc6dGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc1VzZXJzLkFzc2lnblR5cGU9PVxcJ29cXCcsXFwndmlzaWJpbGl0eS1oaWRkZW5cXCc6dGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc1VzZXJzLkFzc2lnblR5cGUhPVxcJ29cXCd9XCI+PC9pPjxkaXYgY2xhc3M9dGV4dC1wcmltYXJ5IG5nLWNsYXNzPVwie1xcJ3RleHQtc3VjY2Vzc1xcJzp0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZT09XFwnb1xcJ31cIj5UYXNrIG93bmVyPC9kaXY+PC9hPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbWFyZ2luMFwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMTIgcGFkZGluZzBcIj48ZGl2IGNsYXNzPVwicm93IG1hcmdpbjBcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7ZmxleC13cmFwOiB3cmFwO1wiPjxkaXYgY2xhc3M9XCJjb2wtbGctNCBjb2wtc20tMTIgY29sLTEyIHRleHQtY2VudGVyIHdlbGwtY3VzdG9tIGJnLXdoaXRlXCI+PGRpdiBjbGFzcyBzdHlsZT1cImRpc3BsYXk6IGZsZXg7YWxpZ24taXRlbXM6IGNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtoZWlnaHQ6MTAwJVwiPjxkaXY+PGkgY2xhc3M9XCJmYSBmYS11c2VyIGZhLTR4IHRleHQtcHJpbWFyeVwiPjwvaT48aDUgY2xhc3M9dGV4dC1wcmltYXJ5PlRhc2sgY3JlYXRvcjwvaDU+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0xNiBjb2wtc20tMTYgcGFkZGluZzBcIj48ZGl2IGNsYXNzPVwicm93IG1hcmdpbjBcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTIgY29sLXNtLTEyIGNvbC0xMiB0ZXh0LWxlZnQgcGFkZGluZzBcIj48ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO21hcmdpbi10b3A6MjUlO21hcmdpbi1sZWZ0OjJweDtcIj48ZGl2IGNsYXNzPVwiYXJyb3ctdHJpYW5nbGUgYXJyb3ctbGVmdCB0ZXh0LWluZm8gZmxvYXQtbGVmdFwiPjwvZGl2PjxkaXYgY2xhc3M9XCJhcnJvdy1saW5lLWxlZnQtcmlnaHQgdGV4dC1pbmZvXCI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0xMiBjb2wtc20tMTIgY29sLTEyIHRleHQtY2VudGVyIHBhZGRpbmcwXCI+PGRpdiBjbGFzcz1cIndlbGwtY3VzdG9tIGJnLXdoaXRlXCI+PGEgaHJlZiB0aXRsZT1cIkRlZmluZSB3aG8gd2lsbCBiZSBhdXRob3Jpc2VkIHRvIHN0YXJ0IHRoaXMgdGFza1wiIG5nLWNsaWNrPXNob3dIaWRlVGFza1JvbGVzKDApIHN0eWxlPVwidGV4dC1kZWNvcmF0aW9uOiBub25lO1wiPjxpIG5nLWNsYXNzPVwie1xcJ3RleHQtc3VjY2Vzc1xcJzp0YXNrLlRhc2tJbml0aWF0b3JzU2F2ZWQsXFwndGV4dC1kYW5nZXJcXCc6IXRhc2suVGFza0luaXRpYXRvcnNTYXZlZH1cIiBjbGFzcz1cImZhIGZhLXVzZXItc2hpZWxkXCI+Jm5ic3AgUGVybWlzc2lvbnM8L2k+IDxpIG5nLWNsYXNzPVwie1xcJ2ZhIGZhLWNoZWNrIHRleHQtc3VjY2Vzc1xcJzp0YXNrLlRhc2tJbml0aWF0b3JzU2F2ZWQsXFwnZmEgZmEtdGltZXMgdGV4dC1kYW5nZXJcXCc6IXRhc2suVGFza0luaXRpYXRvcnNTYXZlZH1cIj48L2k+PC9hPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbWFyZ2luMFwiPjxkaXYgY2xhc3M9XCJjb2wtbGctMiBjb2wtc20tNiBjb2wtMTIgcGFkZGluZzBcIj48ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO21hcmdpbi10b3A6MTUlO21hcmdpbi1yaWdodDoycHg7XCI+PGRpdiBjbGFzcz1cImFycm93LWxpbmUtbGVmdC1yaWdodCB0ZXh0LWluZm9cIj48L2Rpdj48ZGl2IGNsYXNzPVwiYXJyb3ctdHJpYW5nbGUgYXJyb3ctcmlnaHQgdGV4dC1pbmZvIGZsb2F0LXJpZ2h0XCI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0xMiBjb2wtc20tMTIgY29sLTEyIHRleHQtY2VudGVyIHBhZGRpbmcwXCI+PGRpdiBjbGFzcz1cIndlbGwtY3VzdG9tIGJnLXdoaXRlXCI+PGEgdGl0bGU9XCJEZWZpbmUgdGhlIGZvcm0gdGhhdCBwcm92aWRlcyBpbnB1dCBmb3IgdGFzayBleGVjdXRpb25cIiB1aS1zcmVmPVwiYXBwLm5hdmJhci50YXNrcy5mb3JtKHtmb3JtVHlwZTpcXCdpXFwnLGlkOnRhc2tJZH0pXCIgbmctc3R5bGU9XCJ7XFwndGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaDtcXCc6dGFzay5BdXRvSW5pdGlhdGUsXFwndGV4dC1kZWNvcmF0aW9uOm5vbmU7XFwnOiF0YXNrLkF1dG9Jbml0aWF0ZX1cIj48aSBuZy1jbGFzcz1cIntcXCd0ZXh0LXN1Y2Nlc3NcXCc6cmVzb3VyY2VEZWZpbml0aW9uLnJlc291cmNlZGVmbGFuZ19zZXRbMF0uSW5pdGlhdGVGb3JtLFxcJ3RleHQtZGFuZ2VyXFwnOiFyZXNvdXJjZURlZmluaXRpb24ucmVzb3VyY2VkZWZsYW5nX3NldFswXS5Jbml0aWF0ZUZvcm19XCIgY2xhc3M9XCJmYSBmYS1saXN0LWFsdFwiPiZuYnNwIEZvcm08L2k+IDxpIG5nLWNsYXNzPVwie1xcJ2ZhIGZhLWNoZWNrIHRleHQtc3VjY2Vzc1xcJzpyZXNvdXJjZURlZmluaXRpb24ucmVzb3VyY2VkZWZsYW5nX3NldFswXS5Jbml0aWF0ZUZvcm0sXFwnZmEgZmEtdGltZXMgdGV4dC1kYW5nZXJcXCc6IXJlc291cmNlRGVmaW5pdGlvbi5yZXNvdXJjZWRlZmxhbmdfc2V0WzBdLkluaXRpYXRlRm9ybX1cIj48L2k+PC9hPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbWFyZ2luMFwiPjxkaXYgY2xhc3M9XCJvZmZzZXQtbGctMiBjb2wtbGctMTIgdGV4dC1jZW50ZXIgcGFkZGluZzBcIj48ZGl2IGNsYXNzPVwiYXJyb3ctbGluZS11cC1kb3duIHRleHQtaW5mb1wiPjwvZGl2PjxhIGhyZWYgbmctY2xpY2s9XCJzaG93SGlkZVRhc2tTdGF0dXNlcyhcXCdjcmVhdGVkXFwnLFxcJ2NyZWF0ZWRcXCcsdHJ1ZSlcIiBzdHlsZT1cInRleHQtZGVjb3JhdGlvbjogbm9uZTt0b3A6IDVweDtwb3NpdGlvbjogcmVsYXRpdmVcIj48aSBjbGFzcz1cImZhIGZhLWVkaXQgdGV4dC1pbmZvXCI+Jm5ic3AgQ3JlYXRlIHRhc2s8L2k+PC9hPjxkaXYgY2xhc3M9XCJhcnJvdy1saW5lLWRvd24gdGV4dC1pbmZvXCI+PC9kaXY+PGRpdiBjbGFzcz1cImFycm93LXRyaWFuZ2xlIGFycm93LWRvd24gdGV4dC1pbmZvXCI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtYXJnaW4wXCI+PGRpdiBjbGFzcz1cIm9mZnNldC1sZy0yIGNvbC1sZy0xMiB0ZXh0LWNlbnRlciB3ZWxsLWN1c3RvbSBiZy13aGl0ZSBtYXJnaW4tdG9wLTVcIj48YSBocmVmIHN0eWxlPVwidGV4dC1kZWNvcmF0aW9uOiBub25lO1wiPjxpIGNsYXNzPVwiZmEgZmEtcm9ja2V0IHRleHQtaW5mb1wiPiZuYnNwIENyZWF0ZWQ8L2k+PC9hPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbWFyZ2luMFwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtmbGV4LXdyYXA6IHdyYXA7XCI+PGRpdiBjbGFzcz1cImNvbC1sZy00IGNvbC1zbS02IHRleHQtY2VudGVyIHdlbGwtY3VzdG9tIGJnLXdoaXRlXCI+PGRpdiBjbGFzcyBzdHlsZT1cImRpc3BsYXk6IGZsZXg7YWxpZ24taXRlbXM6IGNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtoZWlnaHQ6MTAwJVwiPjxkaXY+PGkgY2xhc3M9XCJmYSBmYS1yb2JvdCBmYS00eCB0ZXh0LXByaW1hcnlcIj48L2k+PGg1IGNsYXNzPXRleHQtcHJpbWFyeT5TeXN0ZW08L2g1PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMTYgY29sLXNtLTggcGFkZGluZzBcIj48ZGl2IGNsYXNzPVwicm93IG1hcmdpbjBcIj48ZGl2IGNsYXNzPVwib2Zmc2V0LWxnLTIgY29sLWxnLTEyIGNvbC1zbS0xMCBjb2wtMTIgdGV4dC1jZW50ZXIgcGFkZGluZzBcIj48ZGl2IGNsYXNzPVwiYXJyb3ctbGluZS11cC1kb3duIHRleHQtaW5mb1wiPjwvZGl2PjxkaXYgbmctaWY9IXRhc2suQXV0b0V4ZWN1dGUgY2xhc3M9XCJ3ZWxsLWN1c3RvbSBiZy13aGl0ZSBtYXJnaW4tdG9wLTVcIj48YSBocmVmIHRpdGxlPVwiRGVmaW5lIHdobyBjYW4gYmUgdGhlIG93bmVyIGFuZCBleGVjdXRlIHRoaXMgdGFza1wiIG5nLWNsaWNrPXNob3dIaWRlVGFza1JvbGVzKDEpIHN0eWxlPVwidGV4dC1kZWNvcmF0aW9uOiBub25lO1wiPjxpIG5nLWNsYXNzPVwie1xcJ3RleHQtc3VjY2Vzc1xcJzp0YXNrLlBvdGVudGlhbE93bmVyc1NhdmVkLFxcJ3RleHQtZGFuZ2VyXFwnOiF0YXNrLlBvdGVudGlhbE93bmVyc1NhdmVkfVwiIGNsYXNzPVwiZmEgZmEtdXNlcnMtY29nXCI+Jm5ic3AgQXNzaWduIHRhc2s8L2k+IDxpIG5nLWNsYXNzPVwie1xcJ2ZhIGZhLWNoZWNrIHRleHQtc3VjY2Vzc1xcJzp0YXNrLlBvdGVudGlhbE93bmVyc1NhdmVkLFxcJ2ZhIGZhLXRpbWVzIHRleHQtZGFuZ2VyXFwnOiF0YXNrLlBvdGVudGlhbE93bmVyc1NhdmVkfVwiPjwvaT48L2E+PC9kaXY+PGEgbmctaWY9dGFzay5BdXRvRXhlY3V0ZSBuZy1jbGljaz1cInNob3dIaWRlVGFza1N0YXR1c2VzKFxcJ0luUHJvZ3Jlc3NcXCcsXFwnY29tcGxldGVkXFwnLHRydWUpXCIgaHJlZiBzdHlsZT1cInRleHQtZGVjb3JhdGlvbjogbm9uZTt0b3A6IDVweDtwb3NpdGlvbjogcmVsYXRpdmVcIj48aSBjbGFzcz1cImZhIGZhLWVkaXQgdGV4dC1pbmZvXCI+Jm5ic3AgQ29tcGxldGUgdGFzazwvaT48L2E+PGRpdiBjbGFzcz1cImFycm93LWxpbmUtZG93biB0ZXh0LWluZm9cIiBuZy1zdHlsZT1cIntcXCdtYXJnaW4tdG9wOi0xMHB4ICFpbXBvcnRhbnQ7XFwnOiF0YXNrLkF1dG9FeGVjdXRlfVwiPjwvZGl2PjxkaXYgY2xhc3M9XCJhcnJvdy10cmlhbmdsZSBhcnJvdy1kb3duIHRleHQtaW5mb1wiPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbWFyZ2luMFwiPjxkaXYgY2xhc3M9XCJvZmZzZXQtbGctMiBjb2wtbGctMTIgdGV4dC1jZW50ZXIgd2VsbC1jdXN0b20gYmctd2hpdGUgbWFyZ2luLXRvcC01XCI+PGkgbmctaWY9IXRhc2suQXV0b0V4ZWN1dGUgY2xhc3M9XCJmYSBmYS10aHVtYnMtdXAgdGV4dC1pbmZvXCI+Jm5ic3AgUmVhZHk8L2k+IDxpIG5nLWlmPXRhc2suQXV0b0V4ZWN1dGUgY2xhc3M9XCJmYSBmYS1jaGVjayB0ZXh0LWluZm9cIj4mbmJzcCBDb21wbGV0ZWQ8L2k+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1cInRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc1VzZXJzLkFzc2lnblR5cGUhPVxcJ3NcXCcgJiYgIXRhc2suQXV0b0V4ZWN1dGVcIiBjbGFzcz1cInJvdyBtYXJnaW4wXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O2ZsZXgtd3JhcDogd3JhcDtcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTQgY29sLXNtLTYgY29sLTEyIHRleHQtY2VudGVyIHdlbGwtY3VzdG9tIGJnLXdoaXRlXCI+PGRpdiBjbGFzcyBzdHlsZT1cImRpc3BsYXk6IGZsZXg7YWxpZ24taXRlbXM6IGNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtoZWlnaHQ6MTAwJVwiPjxkaXY+PGkgY2xhc3M9XCJmYSBmYS11c2VyIGZhLTR4IHRleHQtcHJpbWFyeVwiPjwvaT48aDUgY2xhc3M9dGV4dC1wcmltYXJ5PlRhc2sgb3duZXI8L2g1PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMTYgY29sLXNtLTggcGFkZGluZzBcIj48ZGl2IGNsYXNzPVwicm93IG1hcmdpbjBcIj48ZGl2IGNsYXNzPVwib2Zmc2V0LWxnLTIgY29sLWxnLTEyIHRleHQtY2VudGVyIHBhZGRpbmcwXCI+PGRpdiBjbGFzcz1cImFycm93LWxpbmUtdXAtZG93biB0ZXh0LWluZm9cIj48L2Rpdj48YSBocmVmIG5nLWNsaWNrPVwic2hvd0hpZGVUYXNrU3RhdHVzZXMoXFwncmVhZHlcXCcsXFwnY2xhaW1cXCcsdHJ1ZSlcIiBzdHlsZT1cInRleHQtZGVjb3JhdGlvbjogbm9uZTt0b3A6IDVweDtwb3NpdGlvbjogcmVsYXRpdmVcIj48aSBjbGFzcz1cImZhIGZhLWVkaXQgdGV4dC1pbmZvXCI+Jm5ic3AgQ2xhaW0gdGFzazwvaT48L2E+PGRpdiBjbGFzcz1cImFycm93LWxpbmUtZG93biB0ZXh0LWluZm9cIj48L2Rpdj48ZGl2IGNsYXNzPVwiYXJyb3ctdHJpYW5nbGUgYXJyb3ctZG93biB0ZXh0LWluZm9cIj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG1hcmdpbjBcIj48ZGl2IGNsYXNzPVwib2Zmc2V0LWxnLTIgY29sLWxnLTEyIHRleHQtY2VudGVyIHdlbGwtY3VzdG9tIGJnLXdoaXRlIG1hcmdpbi10b3AtNVwiPjxpIGNsYXNzPVwiZmEgZmEtaGFuZC1yb2NrIHRleHQtaW5mb1wiPiZuYnNwIENsYWltZWQ8L2k+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtYXJnaW4wXCI+PGRpdiBjbGFzcz1cIm9mZnNldC1sZy0yIGNvbC1sZy0xMiB0ZXh0LWNlbnRlciBwYWRkaW5nMFwiPjxkaXYgY2xhc3M9XCJhcnJvdy1saW5lLXVwLWRvd24gdGV4dC1pbmZvXCI+PC9kaXY+PGEgaHJlZiBuZy1jbGljaz1cInNob3dIaWRlVGFza1N0YXR1c2VzKFxcJ2NsYWltXFwnLFxcJ0luUHJvZ3Jlc3NcXCcsdHJ1ZSlcIiBzdHlsZT1cInRleHQtZGVjb3JhdGlvbjogbm9uZTt0b3A6IDVweDtwb3NpdGlvbjogcmVsYXRpdmVcIj48aSBkYXRhLW5nLWF0dHItdGl0bGU9XCJ7e3Rhc2suQXV0b3N0YXJ0ID8gXFwnVGFzayBpcyBzdGFydGVkIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgY2xhaW1pbmdcXCcgOiBcXCdcXCd9fVwiIGNsYXNzPVwidGV4dC1pbmZvIGZhXCIgbmctY2xhc3M9XCJ7XFwnZmEtY29nXFwnOnRhc2suQXV0b1N0YXJ0fVwiPiZuYnNwIFN0YXJ0IHRhc2s8L2k+PC9hPjxkaXYgY2xhc3M9XCJhcnJvdy1saW5lLWRvd24gdGV4dC1pbmZvXCI+PC9kaXY+PGRpdiBjbGFzcz1cImFycm93LXRyaWFuZ2xlIGFycm93LWRvd24gdGV4dC1pbmZvXCI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtYXJnaW4wXCI+PGRpdiBjbGFzcz1cIm9mZnNldC1sZy0yIGNvbC1sZy0xMiB0ZXh0LWNlbnRlciB3ZWxsLWN1c3RvbSBiZy13aGl0ZSBtYXJnaW4tdG9wLTVcIj48aSBjbGFzcz1cImZhIGZhLWNvZ3MgdGV4dC1pbmZvXCI+Jm5ic3AgSW4gUHJvZ3Jlc3M8L2k+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtYXJnaW4wXCI+PGRpdiBjbGFzcz1cIm9mZnNldC1sZy0yIGNvbC1sZy0xMiB0ZXh0LWNlbnRlclwiPjxkaXYgY2xhc3M9XCJhcnJvdy1saW5lLWRvd24gdGV4dC1pbmZvXCIgc3R5bGU9XCJtYXJnaW4tdG9wOi0xMHB4ICFpbXBvcnRhbnQ7XCI+PC9kaXY+PGRpdiBjbGFzcz1cImFycm93LXRyaWFuZ2xlIGFycm93LWRvd24gdGV4dC1pbmZvXCI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtYXJnaW4wXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0yIGNvbC1zbS0xMiBjb2wtMTIgcGFkZGluZzBcIj48ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO21hcmdpbi10b3A6NDAlO21hcmdpbi1yaWdodDoycHg7XCI+PGRpdiBjbGFzcz1cImFycm93LWxpbmUtbGVmdC1yaWdodCB0ZXh0LWluZm9cIj48L2Rpdj48ZGl2IGNsYXNzPVwiYXJyb3ctdHJpYW5nbGUgYXJyb3ctcmlnaHQgdGV4dC1pbmZvIGZsb2F0LXJpZ2h0XCI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0xMiBjb2wtc20tMTAgY29sLTEyIHRleHQtY2VudGVyIHBhZGRpbmcwXCI+PGRpdiBjbGFzcz1cIndlbGwtY3VzdG9tIGJnLXdoaXRlIG1hcmdpbi10b3AtNVwiPjxhIHRpdGxlPVwiRGVmaW5lIHRoZSBmb3JtIHRoYXQgcHJvdmlkZXMgaW5wdXQgZm9yIHRhc2sgZXhlY3V0aW9uXCIgdWktc3JlZj1cImFwcC5uYXZiYXIudGFza3MuZm9ybSh7Zm9ybVR5cGU6XFwnZVxcJyxpZDp0YXNrSWR9KVwiIHN0eWxlPVwidGV4dC1kZWNvcmF0aW9uOiBub25lO1wiPjxkaXY+PGkgbmctY2xhc3M9XCJ7XFwndGV4dC1zdWNjZXNzXFwnOnJlc291cmNlRGVmaW5pdGlvbi5yZXNvdXJjZWRlZmxhbmdfc2V0WzBdLkV4ZWN1dGVGb3JtLFxcJ3RleHQtZGFuZ2VyXFwnOiFyZXNvdXJjZURlZmluaXRpb24ucmVzb3VyY2VkZWZsYW5nX3NldFswXS5FeGVjdXRlRm9ybX1cIiBjbGFzcz1cImZhIGZhLWxpc3QtYWx0XCI+Jm5ic3AgRm9ybTwvaT4gPGkgbmctY2xhc3M9XCJ7XFwnZmEgZmEtY2hlY2sgdGV4dC1zdWNjZXNzXFwnOnJlc291cmNlRGVmaW5pdGlvbi5yZXNvdXJjZWRlZmxhbmdfc2V0WzBdLkV4ZWN1dGVGb3JtLFxcJ2ZhIGZhLXRpbWVzIHRleHQtZGFuZ2VyXFwnOiFyZXNvdXJjZURlZmluaXRpb24ucmVzb3VyY2VkZWZsYW5nX3NldFswXS5FeGVjdXRlRm9ybX1cIj48L2k+PC9kaXY+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJhcnJvdy1saW5lLWRvd24gdGV4dC1pbmZvXCIgc3R5bGU9XCJtYXJnaW4tdG9wOi0xMHB4ICFpbXBvcnRhbnQ7XCI+PC9kaXY+PGRpdiBjbGFzcz1cImFycm93LXRyaWFuZ2xlIGFycm93LWRvd24gdGV4dC1pbmZvXCI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtYXJnaW4wXCI+PGRpdiBjbGFzcz1cIm9mZnNldC1sZy0yIGNvbC1sZy0xMiBjb2wtc20tMTAgY29sLTEyIHRleHQtY2VudGVyIHBhZGRpbmcwXCI+PGRpdiBjbGFzcz1cIndlbGwtY3VzdG9tIGJnLXdoaXRlIG1hcmdpbi10b3AtNVwiPjxhIGhyZWYgdGl0bGU9XCJEZWZpbmUgdGFzayBvdXRjb21lc1wiIHVpLXNyZWY9XCJhcHAubmF2YmFyLnRhc2tzLmZvcm0oe2Zvcm1UeXBlOlxcJ2VcXCcsaWQ6dGFza0lkfSlcIiBzdHlsZT1cInRleHQtZGVjb3JhdGlvbjogbm9uZTtcIj48aSBuZy1jbGFzcz1cIntcXCd0ZXh0LXN1Y2Nlc3NcXCc6dGFzay5UYXNrT3V0Y29tZXNTYXZlZCxcXCd0ZXh0LWRhbmdlclxcJzohdGFzay5UYXNrT3V0Y29tZXNTYXZlZH1cIiBjbGFzcz1cImZhIGZhLWJ1bGxzZXllXCI+Jm5ic3AgT3V0Y29tZXM8L2k+IDxpIG5nLWNsYXNzPVwie1xcJ2ZhIGZhLWNoZWNrIHRleHQtc3VjY2Vzc1xcJzp0YXNrLlRhc2tPdXRjb21lc1NhdmVkLFxcJ2ZhIGZhLXRpbWVzIHRleHQtZGFuZ2VyXFwnOiF0YXNrLlRhc2tPdXRjb21lc1NhdmVkfVwiPjwvaT48L2E+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtYXJnaW4wXCI+PGRpdiBjbGFzcz1cIm9mZnNldC1sZy0yIGNvbC1sZy0xMiB0ZXh0LWNlbnRlciBwYWRkaW5nMFwiPjxkaXYgY2xhc3M9XCJhcnJvdy1saW5lLXVwLWRvd24gdGV4dC1pbmZvXCI+PC9kaXY+PGEgbmctc2hvdz0hdGFzay5JbmZpbml0ZVRhc2sgaHJlZiBuZy1jbGljaz1cInNob3dIaWRlVGFza1N0YXR1c2VzKFxcJ0luUHJvZ3Jlc3NcXCcsXFwnY29tcGxldGVkXFwnLHRydWUpXCIgc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246IG5vbmU7dG9wOiA1cHg7cG9zaXRpb246IHJlbGF0aXZlXCI+PGkgY2xhc3M9XCJmYSBmYS1lZGl0IHRleHQtaW5mb1wiPiZuYnNwIENvbXBsZXRlIHRhc2s8L2k+PC9hPiA8aSBuZy1zaG93PXRhc2suSW5maW5pdGVUYXNrIGNsYXNzPVwiZmEgZmEtZWRpdCB0ZXh0LWRhbmdlclwiIHN0eWxlPVwidGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XCI+Jm5ic3AgQ29tcGxldGUgdGFzazwvaT48ZGl2IGNsYXNzPVwiYXJyb3ctbGluZS1kb3duIHRleHQtaW5mb1wiPjwvZGl2PjxkaXYgY2xhc3M9XCJhcnJvdy10cmlhbmdsZSBhcnJvdy1kb3duIHRleHQtaW5mb1wiPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbWFyZ2luMFwiPjxkaXYgY2xhc3M9XCJvZmZzZXQtbGctMiBjb2wtbGctMTIgdGV4dC1jZW50ZXIgd2VsbC1jdXN0b20gYmctd2hpdGUgbWFyZ2luLXRvcC01XCI+PGkgbmctaWY9IXRhc2suSW5maW5pdGVUYXNrIGNsYXNzPVwiZmEgZmEtY2hlY2sgdGV4dC1pbmZvXCI+Jm5ic3AgQ29tcGxldGVkPC9pPiA8aSBuZy1pZj10YXNrLkluZmluaXRlVGFzayB0aXRsZT1cIlRhc2sgY2FuIG5vdCBiZSBDb21wbGV0ZWQuIERvblxcJ3Qgd29ycnkgdGhpcyBpcyBub3JtYWwgYmVoYXZpb3VyIGZvciByZXBlYXRpbmcgdGFza3MuXCIgY2xhc3M9XCJmYSBmYS1jaGVjayB0ZXh0LWRhbmdlclwiIHN0eWxlPVwidGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XCI+Jm5ic3AgQ29tcGxldGVkPC9pPjwvZGl2PjwvZGl2PjxkaXYgbmctaWY9ZmFsc2UgY2xhc3M9XCJyb3cgbWFyZ2luMFwiPjxkaXYgY2xhc3M9XCJvZmZzZXQtbGctMiBjb2wtbGctMTIgdGV4dC1jZW50ZXIgcGFkZGluZzBcIj48ZGl2IGNsYXNzPVwiYXJyb3ctbGluZS11cC1kb3duIHRleHQtaW5mb1wiPjwvZGl2PjxhIGhyZWYgc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246IG5vbmU7dG9wOiA1cHg7cG9zaXRpb246IHJlbGF0aXZlXCI+PGkgY2xhc3M9dGV4dC1pbmZvPiZuYnNwIFBhdXNlIHRhc2s8L2k+PC9hPjxkaXYgY2xhc3M9XCJhcnJvdy1saW5lLWRvd24gdGV4dC1pbmZvXCI+PC9kaXY+PGRpdiBjbGFzcz1cImFycm93LXRyaWFuZ2xlIGFycm93LWRvd24gdGV4dC1pbmZvXCI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0xNiB0ZXh0LWNlbnRlciBwYWRkaW5nMFwiPjxkaXYgY2xhc3M9XCJhcnJvdy10cmlhbmdsZSBhcnJvdy11cCB0ZXh0LWluZm9cIj48L2Rpdj48ZGl2IGNsYXNzPVwiYXJyb3ctbGluZS11cCB0ZXh0LWluZm9cIj48L2Rpdj48YSBocmVmIHN0eWxlPVwidGV4dC1kZWNvcmF0aW9uOiBub25lO2JvdHRvbTogNXB4O3Bvc2l0aW9uOiByZWxhdGl2ZVwiPjxpIGNsYXNzPXRleHQtaW5mbz4mbmJzcCBSZXN1bWUgdGFzazwvaT48L2E+PGRpdiBjbGFzcz1cImFycm93LWxpbmUtdXAtZG93biB0ZXh0LWluZm9cIj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IG5nLWlmPWZhbHNlIGNsYXNzPVwicm93IG1hcmdpbjBcIj48ZGl2IGNsYXNzPVwib2Zmc2V0LWxnLTEgY29sLWxnLTE2IHRleHQtY2VudGVyIHdlbGwtY3VzdG9tIGJnLXdoaXRlIG1hcmdpbi10b3AtNVwiPjxpIGNsYXNzPVwiZmEgZmEtaGFuZC1vIHRleHQtaW5mb1wiPiZuYnNwIE9uIEhvbGQ8L2k+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1sZy0xNjggd2VsbC1jdXN0b20gYmctd2hpdGUtZmxleFwiIG5nLXNob3c9XCJzaG93VGFza0luaXRpYXRvcnMgfHwgc2hvd1Rhc2tPd25lcnMgfHwgc2hvd1Rhc2tTdGF0dXNcIj48ZGl2IG5nLWlmPXNob3dUYXNrSW5pdGlhdG9ycyBjbGFzcz1cInJvdyBtYXJnaW4wXCI+PGRpdiBjbGFzcz1cInJvdyBtYXJnaW4wXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0xNiB0ZXh0LWNlbnRlclwiIG5nLWNsYXNzPVwie1xcJ3dlbGwtY3VzdG9tIGJnLXdoaXRlXFwnOiF0YXNrQXNzaWdubWVudHMuc2hvd1ByZXZpb3VzVGFza31cIj48YSBocmVmIG5nLWNsaWNrPXNob3dIaWRlUHJldmlvdXNUYXNrKCk+PGkgY2xhc3M9XCJmYSBmYS1hcnJvdy11cCBmYS0yeCB0ZXh0LWluZm9cIj48L2k+PGRpdiBjbGFzcz10ZXh0LXByaW1hcnk+UHJldmlvdXMgdGFzazwvZGl2PjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTE2IHRleHQtY2VudGVyIHdlbGwtY3VzdG9tIGJnLXdoaXRlXCI+PGEgaHJlZiBuZy1jbGljaz1cInNlbGVjdFByZXZpb3VzVGFza1VzZXIoXFwnYVxcJylcIiBzdHlsZT1cInRleHQtZGVjb3JhdGlvbjogbm9uZTtcIj48aSBjbGFzcz1cImZhIGZhLWxpc3QtYWx0IGZhLTJ4IHRleHQtcHJpbWFyeVwiIG5nLWNsYXNzPVwie1xcJ3RleHQtc3VjY2Vzc1xcJzp0YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNVc2Vycy5Bc3NpZ25UeXBlPT1cXCdhXFwnIHx8IHRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc1VzZXJzLkFzc2lnblR5cGU9PVxcJ2VcXCd9XCI+PC9pPiA8aSBjbGFzcz1cImZhIGZhLWNoZWNrIHRleHQtc3VjY2Vzc1wiIG5nLWNsYXNzPVwie1xcJ3Zpc2liaWxpdHktdmlzaWJsZVxcJzp0YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNVc2Vycy5Bc3NpZ25UeXBlPT1cXCdhXFwnIHx8IHRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc1VzZXJzLkFzc2lnblR5cGU9PVxcJ2VcXCcsXFwndmlzaWJpbGl0eS1oaWRkZW5cXCc6dGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzVXNlcnMuQXNzaWduVHlwZSE9XFwnYVxcJyAmJiB0YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNVc2Vycy5Bc3NpZ25UeXBlIT1cXCdlXFwnfVwiPjwvaT48ZGl2IGNsYXNzPXRleHQtcHJpbWFyeSBuZy1jbGFzcz1cIntcXCd0ZXh0LXN1Y2Nlc3NcXCc6dGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzVXNlcnMuQXNzaWduVHlwZT09XFwnYVxcJyB8fCB0YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNVc2Vycy5Bc3NpZ25UeXBlPT1cXCdlXFwnfVwiPlNlbGVjdCB1c2Vycy9ncm91cHM8L2Rpdj48L2E+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtYXJnaW4wXCIgbmctY2xhc3M9XCJ7XFwnd2VsbC1jdXN0b20gYmctd2hpdGVcXCc6dGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzVXNlcnMuQXNzaWduVHlwZT09XFwnYVxcJyB8fCB0YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNVc2Vycy5Bc3NpZ25UeXBlPT1cXCdlXFwnfVwiPjxkaXYgbmctc2hvdz1cInRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc1VzZXJzLkFzc2lnblR5cGU9PVxcJ2FcXCcgfHwgdGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzVXNlcnMuQXNzaWduVHlwZT09XFwnZVxcJ1wiIGNsYXNzPXJvdz48ZGl2IGNsYXNzPWNvbC1sZy02PjxhIGhyZWYgbmctY2xpY2s9Y2hhbmdlSW5pdEFzc2lnblR5cGVVc2VyKCk+PGkgbmctY2xhc3M9XCJ7XFwnZmEgZmEtdXNlci1jaGVjayB0ZXh0LXN1Y2Nlc3NcXCc6dGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzVXNlcnMuQXNzaWduVHlwZT09XFwnYVxcJyxcXCdmYSBmYS11c2VyLXRpbWVzIHRleHQtZGFuZ2VyXFwnOnRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc1VzZXJzLkFzc2lnblR5cGU9PVxcJ2VcXCd9XCI+PC9pPjwvYT4gPHNwYW4gY2xhc3M9XCJib2xkIGZsb2F0LXJpZ2h0XCI+Jm5ic3AgVXNlcnM8L3NwYW4+IDxzcGFuIGNsYXNzPXRleHQtc3VjY2VzcyBuZy1pZj1cInRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc1VzZXJzLkFzc2lnblR5cGU9PVxcJ2FcXCdcIj4mbmJzcFNlbGVjdGVkIHVzZXJzIGhhdmUgdGhlIHBlcm1pc3Npb24gdG8gY3JlYXRlIHRoaXMgdGFzazwvc3Bhbj4gPHNwYW4gY2xhc3M9dGV4dC1kYW5nZXIgbmctaWY9XCJ0YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNVc2Vycy5Bc3NpZ25UeXBlPT1cXCdlXFwnXCI+Jm5ic3BTZWxlY3RlZCB1c2VycyBkbyBOT1QgaGF2ZSB0aGUgcGVybWlzc2lvbiB0byBjcmVhdGUgdGhpcyB0YXNrPC9zcGFuPjxkaXYga3Qtc2VsZWN0LXVzZXJzLXdpdGgtc2NvcGUgc2VsZWN0ZWQtaXRlbXM9dGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzVXNlcnMuQXNzaWduZWVMaXN0PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTY+PGEgaHJlZiBuZy1jbGljaz1jaGFuZ2VJbml0QXNzaWduVHlwZUdyb3VwKCk+PGkgbmctY2xhc3M9XCJ7XFwnZmEgZmEtdXNlcnMgdGV4dC1zdWNjZXNzXFwnOnRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc0dyb3Vwcy5Bc3NpZ25UeXBlPT1cXCdhXFwnLFxcJ2ZhIGZhLXVzZXJzIHRleHQtZGFuZ2VyXFwnOnRhc2tBc3NpZ25tZW50cy50YXNrSW5pdGlhdG9yc0dyb3Vwcy5Bc3NpZ25UeXBlPT1cXCdlXFwnfVwiPiZuYnNwIEdyb3VwczwvaT48L2E+IDxzcGFuIGNsYXNzPVwiYm9sZCBmbG9hdC1yaWdodFwiPiZuYnNwIEdyb3Vwczwvc3Bhbj4gPHNwYW4gY2xhc3M9dGV4dC1zdWNjZXNzIG5nLWlmPVwidGFza0Fzc2lnbm1lbnRzLnRhc2tJbml0aWF0b3JzR3JvdXBzLkFzc2lnblR5cGU9PVxcJ2FcXCdcIj4mbmJzcFNlbGVjdGVkIGdyb3VwcyBoYXZlIHRoZSBwZXJtaXNzaW9uIHRvIHN0YXJ0IHRoaXMgdGFzazwvc3Bhbj4gPHNwYW4gY2xhc3M9dGV4dC1kYW5nZXIgbmctaWY9XCJ0YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNHcm91cHMuQXNzaWduVHlwZT09XFwnZVxcJ1wiPiZuYnNwU2VsZWN0ZWQgZ3JvdXBzIGRvIE5PVCBoYXZlIHRoZSBwZXJtaXNzaW9uIHRvIHN0YXJ0IHRoaXMgdGFzazwvc3Bhbj48ZGl2IGt0LXNlbGVjdC1ncm91cHMtd2l0aC1zY29wZSBzZWxlY3RlZC1pdGVtcz10YXNrQXNzaWdubWVudHMudGFza0luaXRpYXRvcnNHcm91cHMuQXNzaWduZWVMaXN0PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9c2F2ZVRhc2tBc3NpZ25tZW50cygwKSBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiPjxzcGFuIGNsYXNzPVwiZmEgZmEtc2F2ZVwiPjwvc3Bhbj4mbmJzcCBTYXZlIHBlcm1pc3Npb25zPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9c2hvd0hpZGVUYXNrUm9sZXMoMikgY2xhc3M9XCJidG4gYnRuLWRhbmdlclwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L3NwYW4+Jm5ic3AgQ2xvc2U8L2J1dHRvbj48L2Rpdj48ZGl2IG5nLWlmPXNob3dUYXNrT3duZXJzIGNsYXNzPVwicm93IG1hcmdpbjBcIj48ZGl2IGNsYXNzPVwicm93IG1hcmdpbjBcIj48ZGl2IGNsYXNzPVwiY29sLWxnLTE2IHRleHQtY2VudGVyXCIgbmctY2xhc3M9XCJ7XFwnd2VsbC1jdXN0b20gYmctd2hpdGVcXCc6IXRhc2tBc3NpZ25tZW50cy5zaG93UHJldmlvdXNUYXNrRm9yT3duZXJ9XCI+PGEgaHJlZiBuZy1jbGljaz1zaG93SGlkZVByZXZpb3VzVGFza0Zvck93bmVyKCk+PGkgY2xhc3M9XCJmYSBmYS1hcnJvdy11cCBmYS0yeCB0ZXh0LWluZm9cIj48L2k+PGRpdiBjbGFzcz10ZXh0LXByaW1hcnk+UHJldmlvdXMgdGFzazwvZGl2PjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwiY29sLWxnLTE2IHRleHQtY2VudGVyIHdlbGwtY3VzdG9tIGJnLXdoaXRlXCI+PGEgaHJlZiBuZy1jbGljaz1cInNlbGVjdFByZXZpb3VzVGFza0Zvck93bmVyVXNlcihcXCdhXFwnKVwiIHN0eWxlPVwidGV4dC1kZWNvcmF0aW9uOiBub25lO1wiPjxpIGNsYXNzPVwiZmEgZmEtbGlzdC1hbHQgZmEtMnggdGV4dC1wcmltYXJ5XCIgbmctY2xhc3M9XCJ7XFwndGV4dC1zdWNjZXNzXFwnOnRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNVc2Vycy5Bc3NpZ25UeXBlPT1cXCdhXFwnIHx8IHRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNVc2Vycy5Bc3NpZ25UeXBlPT1cXCdlXFwnfVwiPjwvaT4gPGkgY2xhc3M9XCJmYSBmYS1jaGVjayB0ZXh0LXN1Y2Nlc3NcIiBuZy1jbGFzcz1cIntcXCd2aXNpYmlsaXR5LXZpc2libGVcXCc6dGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc1VzZXJzLkFzc2lnblR5cGU9PVxcJ2FcXCcgfHwgdGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc1VzZXJzLkFzc2lnblR5cGU9PVxcJ2VcXCcsXFwndmlzaWJpbGl0eS1oaWRkZW5cXCc6dGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc1VzZXJzLkFzc2lnblR5cGUhPVxcJ2FcXCcgJiYgdGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc1VzZXJzLkFzc2lnblR5cGUhPVxcJ2VcXCd9XCI+PC9pPjxkaXYgY2xhc3M9dGV4dC1wcmltYXJ5IG5nLWNsYXNzPVwie1xcJ3RleHQtc3VjY2Vzc1xcJzp0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZT09XFwnYVxcJyB8fCB0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZT09XFwnZVxcJ31cIj5TZWxlY3QgdXNlcnMvZ3JvdXBzPC9kaXY+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMTYgdGV4dC1jZW50ZXIgd2VsbC1jdXN0b20gYmctd2hpdGVcIj48YSBocmVmIG5nLWNsaWNrPVwic2VsZWN0UHJldmlvdXNUYXNrRm9yT3duZXJVc2VyKFxcJ2RcXCcpXCIgc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246IG5vbmU7XCI+PGkgY2xhc3M9XCJmYSBmYS1kYXRhYmFzZSBmYS0yeCB0ZXh0LXByaW1hcnlcIiBuZy1jbGFzcz1cIntcXCd0ZXh0LXN1Y2Nlc3NcXCc6dGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc1VzZXJzLkFzc2lnblR5cGU9PVxcJ2RcXCd9XCI+PC9pPiA8aSBjbGFzcz1cImZhIGZhLWNoZWNrIHRleHQtc3VjY2Vzc1wiIG5nLWNsYXNzPVwie1xcJ3Zpc2liaWxpdHktdmlzaWJsZVxcJzp0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZT09XFwnZFxcJyxcXCd2aXNpYmlsaXR5LWhpZGRlblxcJzp0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZSE9XFwnZFxcJ31cIj48L2k+PGRpdiBjbGFzcz10ZXh0LXByaW1hcnkgbmctY2xhc3M9XCJ7XFwndGV4dC1zdWNjZXNzXFwnOnRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNVc2Vycy5Bc3NpZ25UeXBlPT1cXCdkXFwnfVwiPlVzZXIgZnJvbSBkYXRhc2V0PC9kaXY+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctMTYgdGV4dC1jZW50ZXIgd2VsbC1jdXN0b20gYmctd2hpdGVcIj48YSBocmVmIG5nLWNsaWNrPVwic2VsZWN0UHJldmlvdXNUYXNrRm9yT3duZXJVc2VyKFxcJ3NcXCcpXCIgc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246IG5vbmU7XCI+PGkgY2xhc3M9XCJmYSBmYS11c2VyLXNoaWVsZCBmYS0yeCB0ZXh0LXByaW1hcnlcIiBuZy1jbGFzcz1cIntcXCd0ZXh0LXN1Y2Nlc3NcXCc6dGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc1VzZXJzLkFzc2lnblR5cGU9PVxcJ3NcXCd9XCI+PC9pPiA8aSBjbGFzcz1cImZhIGZhLWNoZWNrIHRleHQtc3VjY2Vzc1wiIG5nLWNsYXNzPVwie1xcJ3Zpc2liaWxpdHktdmlzaWJsZVxcJzp0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZT09XFwnc1xcJyxcXCd2aXNpYmlsaXR5LWhpZGRlblxcJzp0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZSE9XFwnc1xcJ31cIj48L2k+PGRpdiBjbGFzcz10ZXh0LXByaW1hcnkgbmctY2xhc3M9XCJ7XFwndGV4dC1zdWNjZXNzXFwnOnRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNVc2Vycy5Bc3NpZ25UeXBlPT1cXCdzXFwnfVwiPlNhbWUgYXMgdGFzayBjcmVhdG9yPC9kaXY+PC9hPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbWFyZ2luMFwiIG5nLXNob3c9XCJ0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZT09XFwnYVxcJyB8fCB0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZT09XFwnZVxcJ1wiIG5nLWNsYXNzPVwie1xcJ3dlbGwtY3VzdG9tIGJnLXdoaXRlXFwnOnRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNVc2Vycy5Bc3NpZ25UeXBlPT1cXCdhXFwnIHx8IHRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNVc2Vycy5Bc3NpZ25UeXBlPT1cXCdlXFwnfVwiPjxoMyBjbGFzcz1cInJvdyBtYXJnaW4wIHRleHQtcHJpbWFyeVwiPkhvdyBtYW55IHRhc2tzIGRvIHlvdSB3YW50IHRvIGNyZWF0ZT88L2gzPjxkaXYgY2xhc3M9XCJyb3cgbWFyZ2luMCB0ZXh0LWNlbnRlclwiPjxkaXYgY2xhc3M9Y29sLWxnLTE2PjxhIGhyZWYgbmctY2xpY2s9XCJzZXRUYXNrVHlwZShcXCdvbmVpbnN0YW5jZVxcJylcIiBzdHlsZT1cInRleHQtZGVjb3JhdGlvbjogbm9uZTtcIj48aSBjbGFzcz1cImZhIGZhLTJ4IHRleHQtcHJpbWFyeVwiIG5nLWNsYXNzPVwie1xcJ3RleHQtc3VjY2Vzc1xcJzp0YXNrLlRhc2tUeXBlT2JqZWN0Lk5hbWU9PVxcJ29uZWluc3RhbmNlXFwnfVwiPjE8L2k+IDxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgdGV4dC1zdWNjZXNzXCIgbmctY2xhc3M9XCJ7XFwndmlzaWJpbGl0eS12aXNpYmxlXFwnOnRhc2suVGFza1R5cGVPYmplY3QuTmFtZT09XFwnb25laW5zdGFuY2VcXCcsXFwndmlzaWJpbGl0eS1oaWRkZW5cXCc6dGFzay5UYXNrVHlwZU9iamVjdC5OYW1lIT1cXCdvbmVpbnN0YW5jZVxcJ31cIj48L2k+PGRpdiBjbGFzcz10ZXh0LXByaW1hcnkgbmctY2xhc3M9XCJ7XFwndGV4dC1zdWNjZXNzXFwnOnRhc2suVGFza1R5cGVPYmplY3QuTmFtZT09XFwnb25laW5zdGFuY2VcXCd9XCI+T25seSAxPC9kaXY+PC9hPjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTE2PjxhIGhyZWYgbmctY2xpY2s9XCJzZXRUYXNrVHlwZShcXCdvbmVpbnN0YW5jZXBlcnVzZXJcXCcpXCIgc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246IG5vbmU7XCI+PGkgY2xhc3M9XCJmYSBmYS11c2VyIGZhLTJ4IHRleHQtcHJpbWFyeVwiIG5nLWNsYXNzPVwie1xcJ3RleHQtc3VjY2Vzc1xcJzp0YXNrLlRhc2tUeXBlT2JqZWN0Lk5hbWU9PVxcJ29uZWluc3RhbmNlcGVydXNlclxcJ31cIj48L2k+IDxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgdGV4dC1zdWNjZXNzXCIgbmctY2xhc3M9XCJ7XFwndmlzaWJpbGl0eS12aXNpYmxlXFwnOnRhc2suVGFza1R5cGVPYmplY3QuTmFtZT09XFwnb25laW5zdGFuY2VwZXJ1c2VyXFwnLFxcJ3Zpc2liaWxpdHktaGlkZGVuXFwnOnRhc2suVGFza1R5cGVPYmplY3QuTmFtZSE9XFwnb25laW5zdGFuY2VwZXJ1c2VyXFwnfVwiPjwvaT48ZGl2IGNsYXNzPXRleHQtcHJpbWFyeSBuZy1jbGFzcz1cIntcXCd0ZXh0LXN1Y2Nlc3NcXCc6dGFzay5UYXNrVHlwZU9iamVjdC5OYW1lPT1cXCdvbmVpbnN0YW5jZXBlcnVzZXJcXCd9XCI+MSBwZXIgdXNlcjwvZGl2PjwvYT48L2Rpdj48ZGl2IGNsYXNzPWNvbC1sZy0xNj48YSBocmVmIG5nLWNsaWNrPVwic2V0VGFza1R5cGUoXFwnb25laW5zdGFuY2VwZXJncm91cFxcJylcIiBzdHlsZT1cInRleHQtZGVjb3JhdGlvbjogbm9uZTtcIj48aSBjbGFzcz1cImZhIGZhLXVzZXJzIGZhLTJ4IHRleHQtcHJpbWFyeVwiIG5nLWNsYXNzPVwie1xcJ3RleHQtc3VjY2Vzc1xcJzp0YXNrLlRhc2tUeXBlT2JqZWN0Lk5hbWU9PVxcJ29uZWluc3RhbmNlcGVyZ3JvdXBcXCd9XCI+PC9pPiA8aSBjbGFzcz1cImZhIGZhLWNoZWNrIHRleHQtc3VjY2Vzc1wiIG5nLWNsYXNzPVwie1xcJ3Zpc2liaWxpdHktdmlzaWJsZVxcJzp0YXNrLlRhc2tUeXBlT2JqZWN0Lk5hbWU9PVxcJ29uZWluc3RhbmNlcGVyZ3JvdXBcXCcsXFwndmlzaWJpbGl0eS1oaWRkZW5cXCc6dGFzay5UYXNrVHlwZU9iamVjdC5OYW1lIT1cXCdvbmVpbnN0YW5jZXBlcmdyb3VwXFwnfVwiPjwvaT48ZGl2IGNsYXNzPXRleHQtcHJpbWFyeSBuZy1jbGFzcz1cIntcXCd0ZXh0LXN1Y2Nlc3NcXCc6dGFzay5UYXNrVHlwZU9iamVjdC5OYW1lPT1cXCdvbmVpbnN0YW5jZXBlcmdyb3VwXFwnfVwiPjEgcGVyIGdyb3VwPC9kaXY+PC9hPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJyb3cgbWFyZ2luMFwiIG5nLXNob3c9XCJ0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZT09XFwnYVxcJyB8fCB0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZT09XFwnZVxcJ1wiIG5nLWNsYXNzPVwie1xcJ3dlbGwtY3VzdG9tIGJnLXdoaXRlXFwnOnRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNVc2Vycy5Bc3NpZ25UeXBlPT1cXCdhXFwnIHx8IHRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNVc2Vycy5Bc3NpZ25UeXBlPT1cXCdlXFwnfVwiPjxkaXYgY2xhc3M9Y29sLWxnLTY+PGEgaHJlZiBuZy1jbGljaz1jaGFuZ2VPd25lckFzc2lnblR5cGVVc2VyKCk+PGkgbmctY2xhc3M9XCJ7XFwnZmEgZmEtdXNlci1jaGVjayB0ZXh0LXN1Y2Nlc3NcXCc6dGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc1VzZXJzLkFzc2lnblR5cGU9PVxcJ2FcXCcsXFwnZmEgZmEtdXNlci10aW1lcyB0ZXh0LWRhbmdlclxcJzp0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZT09XFwnZVxcJ31cIj4mbmJzcCBVc2VyczwvaT48L2E+IDxzcGFuIGNsYXNzPXRleHQtc3VjY2VzcyBuZy1pZj1cInRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNVc2Vycy5Bc3NpZ25UeXBlPT1cXCdhXFwnXCI+Jm5ic3BTZWxlY3RlZCB1c2VycyBjYW4gYmUgdGhlIG93bmVycyBhbmQgZXhlY3V0ZSB0aGlzIHRhc2s8L3NwYW4+IDxzcGFuIGNsYXNzPXRleHQtZGFuZ2VyIG5nLWlmPVwidGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc1VzZXJzLkFzc2lnblR5cGU9PVxcJ2VcXCdcIj4mbmJzcFNlbGVjdGVkIHVzZXJzIGNhbiBOT1QgYmUgdGhlIG93bmVycyBhbmQgZXhlY3V0ZSB0aGlzIHRhc2s8L3NwYW4+PGRpdiBrdC1zZWxlY3QtdXNlcnMtd2l0aC1zY29wZSBzZWxlY3RlZC1pdGVtcz10YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduZWVMaXN0PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29sLWxnLTY+PGEgaHJlZiBuZy1jbGljaz1jaGFuZ2VPd25lckFzc2lnblR5cGVHcm91cCgpPjxpIG5nLWNsYXNzPVwie1xcJ2ZhIGZhLXVzZXJzIHRleHQtc3VjY2Vzc1xcJzp0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzR3JvdXBzLkFzc2lnblR5cGU9PVxcJ2FcXCcsXFwnZmEgZmEtdXNlcnMgdGV4dC1kYW5nZXJcXCc6dGFza0Fzc2lnbm1lbnRzLnBvdGVudGlhbE93bmVyc0dyb3Vwcy5Bc3NpZ25UeXBlPT1cXCdlXFwnfVwiPiZuYnNwIEdyb3VwczwvaT48L2E+IDxzcGFuIGNsYXNzPXRleHQtc3VjY2VzcyBuZy1pZj1cInRhc2tBc3NpZ25tZW50cy5wb3RlbnRpYWxPd25lcnNHcm91cHMuQXNzaWduVHlwZT09XFwnYVxcJ1wiPiZuYnNwU2VsZWN0ZWQgZ3JvdXBzIGNhbiBiZSB0aGUgb3duZXJzIGFuZCBleGVjdXRlIHRoaXMgdGFzazwvc3Bhbj4gPHNwYW4gY2xhc3M9dGV4dC1kYW5nZXIgbmctaWY9XCJ0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzR3JvdXBzLkFzc2lnblR5cGU9PVxcJ2VcXCdcIj4mbmJzcFNlbGVjdGVkIGdyb3VwcyBjYW4gTk9UIGNhbiBiZSB0aGUgb3duZXJzIGFuZCBleGVjdXRlIHRoaXMgdGFzazwvc3Bhbj48ZGl2IGt0LXNlbGVjdC1ncm91cHMtd2l0aC1zY29wZSBzZWxlY3RlZC1pdGVtcz10YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzR3JvdXBzLkFzc2lnbmVlTGlzdD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwicm93IG1hcmdpbjBcIiBuZy1jbGFzcz1cIntcXCd3ZWxsLWN1c3RvbSBiZy13aGl0ZVxcJzp0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZT09XFwnZFxcJ31cIj48ZGl2IG5nLXNob3c9XCJ0YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuQXNzaWduVHlwZT09XFwnZFxcJ1wiIGNsYXNzPXJvdz48ZGl2IGNsYXNzPWNvbC1sZy02PjxkaXYga3QtY29kZXMtZHJvcGRvd24gc2VhcmNoLXRleHQ9XCJTZWxlY3QgdW5pcXVlIHVzZXIgdGFnXCIgbGFiZWwgdmFsdWUtbGVuZ3RoPWNvbC1zbS0xMiBjb2RlLW5hbWU9dXNlcnRhZ3Mgc2VsZWN0ZWQtY29kZS1pZD10YXNrQXNzaWdubWVudHMucG90ZW50aWFsT3duZXJzVXNlcnMuVW5pcXVlSWQ+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1zYXZlVGFza0Fzc2lnbm1lbnRzKDEpIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1zYXZlXCI+PC9zcGFuPiZuYnNwIFNhdmUgYXNzaWdubWVudHM8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1zaG93SGlkZVRhc2tSb2xlcygzKSBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvc3Bhbj4mbmJzcCBDbG9zZTwvYnV0dG9uPjwvZGl2PjxkaXYgbmctaWY9c2hvd1Rhc2tTdGF0dXMgY2xhc3M9XCJyb3cgbWFyZ2luMFwiPjxkaXYgY2xhc3M9XCJyb3cgbWFyZ2luMCB0ZXh0LWxlZnQgd2VsbC1jdXN0b20gYmctd2hpdGVcIj48c3BhbiBjbGFzcz1cInRleHQtaW5mbyBmYSBmYS0yeFwiPlN0YXR1cyB0cmFuc2l0aW9uICZuYnNwJm5ic3AmbmJzcDwvc3Bhbj4gPGkgbmctaWY9XCJ0YXNrU3RhdHVzRnJvbS5uYW1lIT1cXCdjcmVhdGVkXFwnXCIgY2xhc3M9XCJmYSBmYS0yeCB0ZXh0LXByaW1hcnlcIj4mbmJzcCB7e3Rhc2tTdGF0dXNGcm9tLnZhbHVlfX08L2k+IDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctcmlnaHQgZmEtMnggdGV4dC1pbmZvXCI+Jm5ic3Age3t0YXNrU3RhdHVzVG8udmFsdWV9fTwvaT48L2Rpdj48ZGl2IG5nLXNob3c9XCJ0YXNrU3RhdHVzVG8ubmFtZT09XFwnY3JlYXRlZFxcJ1wiIGNsYXNzPVwicm93IG1hcmdpbjAgdGV4dC1sZWZ0IHdlbGwtY3VzdG9tIGJnLXdoaXRlXCI+PGRpdj48YSBocmVmIG5nLWNsaWNrPVwidGFzay5BdXRvSW5pdGlhdGU9IXRhc2suQXV0b0luaXRpYXRlXCIgc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246IG5vbmU7XCI+PGkgY2xhc3M9XCJmYSBmYS1hbmdsZS1kb3VibGUtcmlnaHQgZmEtMnhcIiBuZy1jbGFzcz1cIntcXCd0ZXh0LXN1Y2Nlc3NcXCc6dGFzay5BdXRvSW5pdGlhdGUsIFxcJ3RleHQtZGFuZ2VyXFwnOiF0YXNrLkF1dG9Jbml0aWF0ZX1cIj4mbmJzcCBBdXRvIGNyZWF0ZSB0YXNrIGFuZCBza2lwIGZvcm0gcHJvY2Vzc2luZyAmbmJzcDwvaT4gPGkgY2xhc3M9XCJmYXIgZmEtY2hlY2stc3F1YXJlIGZhLTJ4IHRleHQtc3VjY2Vzc1wiIG5nLWlmPXRhc2suQXV0b0luaXRpYXRlPjwvaT4gPGkgY2xhc3M9XCJmYXIgZmEtc3F1YXJlIGZhLTJ4IHRleHQtZGFuZ2VyXCIgbmctaWY9IXRhc2suQXV0b0luaXRpYXRlPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1tYXJnaW4tdG9wLTU+PGEgaHJlZiBuZy1jbGljaz1zZXRBdXRvRXhlY3V0ZSgpIHN0eWxlPVwidGV4dC1kZWNvcmF0aW9uOiBub25lO1wiPjxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgZmEtMnhcIiBuZy1jbGFzcz1cIntcXCd0ZXh0LXN1Y2Nlc3NcXCc6dGFzay5BdXRvRXhlY3V0ZSwgXFwndGV4dC1kYW5nZXJcXCc6IXRhc2suQXV0b0V4ZWN1dGV9XCI+Jm5ic3AgVGFzayBpcyBjb21wbGV0ZWQgYWZ0ZXIgYmVpbmcgY3JlYXRlZCAmbmJzcDwvaT4gPGkgY2xhc3M9XCJmYXIgZmEtY2hlY2stc3F1YXJlIGZhLTJ4IHRleHQtc3VjY2Vzc1wiIG5nLWlmPXRhc2suQXV0b0V4ZWN1dGU+PC9pPiA8aSBjbGFzcz1cImZhciBmYS1zcXVhcmUgZmEtMnggdGV4dC1kYW5nZXJcIiBuZy1pZj0hdGFzay5BdXRvRXhlY3V0ZT48L2k+PC9hPjwvZGl2PjwvZGl2PjxkaXYgbmctc2hvdz1cInRhc2tTdGF0dXNUby5uYW1lPT1cXCdJblByb2dyZXNzXFwnXCIgY2xhc3M9XCJyb3cgbWFyZ2luMCB0ZXh0LWxlZnQgd2VsbC1jdXN0b20gYmctd2hpdGVcIj48ZGl2PjxhIGhyZWYgbmctY2xpY2s9XCJ0YXNrLkF1dG9TdGFydD0hdGFzay5BdXRvU3RhcnRcIiBzdHlsZT1cInRleHQtZGVjb3JhdGlvbjogbm9uZTtcIj48aSBjbGFzcz1cImZhIGZhLWFuZ2xlLWRvdWJsZS1yaWdodCBmYS0yeFwiIG5nLWNsYXNzPVwie1xcJ3RleHQtc3VjY2Vzc1xcJzp0YXNrLkF1dG9TdGFydCwgXFwndGV4dC1kYW5nZXJcXCc6IXRhc2suQXV0b1N0YXJ0fVwiPiZuYnNwIEF1dG9tYXRpY2FsbHkgc3RhcnQgd29ya2luZyBvbiB0aGUgdGFzayBhZnRlciBjbGFpbWluZyAmbmJzcDwvaT4gPGkgY2xhc3M9XCJmYXIgZmEtY2hlY2stc3F1YXJlIGZhLTJ4IHRleHQtc3VjY2Vzc1wiIG5nLWlmPXRhc2suQXV0b1N0YXJ0PjwvaT4gPGkgY2xhc3M9XCJmYXIgZmEtc3F1YXJlIGZhLTJ4IHRleHQtZGFuZ2VyXCIgbmctaWY9IXRhc2suQXV0b1N0YXJ0PjwvaT48L2E+PC9kaXY+PC9kaXY+PGJ1dHRvbiBuZy1pZj1cInRhc2tTdGF0dXNUby5uYW1lIT1cXCdjbGFpbVxcJyAmJiB0YXNrU3RhdHVzVG8ubmFtZSE9XFwnY29tcGxldGVkXFwnXCIgdHlwZT1idXR0b24gbmctY2xpY2s9c2F2ZVRhc2tQYXJhbWV0ZXJzKCkgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIj48c3BhbiBjbGFzcz1cImZhIGZhLXNhdmVcIj48L3NwYW4+Jm5ic3AgU2F2ZSBwYXJhbWV0ZXJzPC9idXR0b24+PGRpdiBjbGFzcz1cInJvdyBtYXJnaW4wIHRleHQtY2VudGVyIHdlbGwtY3VzdG9tIGJnLXdoaXRlXCI+PGRpdiBjbGFzcz1cInJvdyBtYXJnaW4wXCI+PGRpdiBjbGFzcz1cImNvbC1sZy0xNiB0ZXh0LWNlbnRlciB3ZWxsLWN1c3RvbSBiZy13aGl0ZVwiPjxhIGhyZWYgbmctY2xpY2s9c2hvd0FjdGlvbnMoKT48aSBjbGFzcz1cImZhIGZhLWNvZ3MgdGV4dC1pbmZvXCI+Jm5ic3AgQWN0aW9uczwvaT48L2E+PC9kaXY+PGRpdiBuZy1pZj1mYWxzZSBjbGFzcz1cImNvbC1sZy0xNiB0ZXh0LWNlbnRlclwiPjxhIGhyZWYgbmctY2xpY2s9c2hvd05vdGlmaWNhdGlvbnMoKT48aSBjbGFzcz1cImZhIGZhLWJlbGwgdGV4dC1pbmZvXCI+Jm5ic3AgTm90aWZpY2F0aW9uczwvaT48L2E+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj1sb2FkaW5nQWN0aW9ucy5sb2FkaW5nIGt0LXByb2Nlc3NpbmctYW5pbWF0aW9uIHNob3ctbXNnPXRydWUgbWVzc2FnZT1cIkxvYWRpbmcgYWN0aW9ucy4uLlwiPjwvZGl2PjxkaXYgbmctc2hvdz0hbG9hZGluZ0FjdGlvbnMubG9hZGluZyBjbGFzcz1cInJvdyBtYXJnaW4wIHRleHQtbGVmdFwiPjxkaXYga3QtY29kZXMtZGVmLWFjdGlvbnMgc3RhdHVzLWZyb209dGFza1N0YXR1c0Zyb20gbG9hZGluZy1hY3Rpb25zPWxvYWRpbmdBY3Rpb25zIHN0YXR1cy10bz10YXNrU3RhdHVzVG8gY29kZXM9Y29kZXNMaXN0IGNvZGVzLWFjdGlvbnM9Y29kZXNBY3Rpb25zIGRlZmF1bHQtY29kZT10YXNrc3RhdHVzZXMgdGFzaz10YXNrIGFjdGlvbnMtbGlzdD1BY3Rpb25zIHNlbGVjdC1jb2RlPWZhbHNlPjwvZGl2PjxidXR0b24gdHlwZT1idXR0b24gbmctY2xpY2s9c2F2ZVRhc2tTdGF0dXNlcygpIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1zYXZlXCI+PC9zcGFuPiZuYnNwIFNhdmUgYWN0aW9uczwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPXNob3dIaWRlVGFza1N0YXR1c2VzKHRhc2tTdGF0dXNGcm9tLm5hbWUsdGFza1N0YXR1c1RvLm5hbWUsZmFsc2UpIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXJcIj48c3BhbiBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9zcGFuPiZuYnNwIENsb3NlPC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDA1X3Rhc2tzL2FuZ3VsYXJUZW1wbGF0ZXMvdGFza3NEZWZpbml0aW9uTGlzdC5odG1sJywnPGRpdiBjbGFzcz1cIm0tMCBwLTFcIj48ZGl2IGNsYXNzPVwic2lkZW1lbnUtY3VzdG9tIGNhcmRcIiBuZy1pZj1cInRkcy5zaG93VGFza0Zvcm1GbigpPT1cXCdcXCcgfHwgdGRzLnNob3dUYXNrRm9ybUZuKCk9PXVuZGVmaW5lZFwiPjx1bCBjbGFzcz1cIm5hdmJhci1uYXYgc2lkZS1tZW51LWNvbG9yXCI+PGxpIGNsYXNzPVwicm93IG0tMCBwbC0xXCIgbmctY2xhc3M9XCJ7XFwnYmctZ3JheS0xMDBcXCc6dGRzLnNob3dUYXNrSW5pdGlhdG9yc0ZuKCl9XCI+PGEgaHJlZiB0aXRsZT1cIkRlZmluZSB3aG8gd2lsbCBiZSBhdXRob3Jpc2VkIHRvIHN0YXJ0IHRoaXMgdGFza1wiIGNsYXNzPVwiY29sLTI0IHAtMVwiIG5nLWNsaWNrPXRkcy5zaG93SGlkZVRhc2tSb2xlcygwKSBzdHlsZT1cInRleHQtZGVjb3JhdGlvbjogbm9uZTtcIj48aSBjbGFzcz1cImZhcyBmYS1rZXlcIj48L2k+PHNwYW4gY2xhc3M9bWwtMj5QZXJtaXNzaW9uczwvc3Bhbj4gPGkgY2xhc3M9XCJwLTEgbXItMiBmbG9hdC1yaWdodFwiIG5nLWNsYXNzPVwie1xcJ2ZhciBmYS1jaGVjay1jaXJjbGUgXFwnOnRhc2suVGFza0luaXRpYXRvcnNTYXZlZCxcXCcgXFwnOiF0YXNrLlRhc2tJbml0aWF0b3JzU2F2ZWR9XCI+PC9pPjwvYT48L2xpPjxsaSBjbGFzcz1cInJvdyBtLTAgcGwtMVwiIG5nLWNsYXNzPVwie1xcJ2JnLWdyYXktMTAwXFwnOnRkcy5zaG93VGFza0Zvcm1GbigpPT1cXCdpXFwnfVwiPjxhIHRpdGxlPVwiRGVmaW5lIHRoZSBmb3JtIHRoYXQgcHJvdmlkZXMgaW5wdXQgZm9yIHRhc2sgZXhlY3V0aW9uXCIgaHJlZiBjbGFzcz1cImNvbC0yNCBwLTFcIiBuZy1jbGljaz1cInRkcy5zaG93SGlkZVRhc2tGb3JtKFxcJ2lcXCcpXCIgc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246IG5vbmU7XCIgbmctc3R5bGU9XCJ7XFwndGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaDtcXCc6dGFzay5BdXRvSW5pdGlhdGUsXFwndGV4dC1kZWNvcmF0aW9uOm5vbmU7XFwnOiF0YXNrLkF1dG9Jbml0aWF0ZX1cIj48aSBjbGFzcz1cImZhcyBmYS1wb2xsLWhcIj48L2k+PHNwYW4gY2xhc3M9bWwtMj5EZXNpZ24gYW5kIGJ1aWxkIGZvcm1zPC9zcGFuPiA8aSBjbGFzcz1cInAtMSBtci0yIGZsb2F0LXJpZ2h0XCIgbmctY2xhc3M9XCJ7XFwnZmFyIGZhLWNoZWNrLWNpcmNsZSBcXCc6cmVzb3VyY2VEZWZpbml0aW9uLnJlc291cmNlZGVmbGFuZ19zZXRbMF0uSW5pdGlhdGVGb3JtLFxcJyB0ZXh0LW11dGVkXFwnOiFyZXNvdXJjZURlZmluaXRpb24ucmVzb3VyY2VkZWZsYW5nX3NldFswXS5Jbml0aWF0ZUZvcm19XCI+PC9pPjwvYT48L2xpPjxsaSBuZy1pZj0hdGFzay5BdXRvRXhlY3V0ZSBjbGFzcz1cInJvdyBtLTAgcGwtMVwiIG5nLWNsYXNzPVwie1xcJ2JnLWdyYXktMTAwXFwnOnRkcy5zaG93VGFza093bmVyc0ZuKCl9XCI+PGEgaHJlZiB0aXRsZT1cIkRlZmluZSB3aG8gY2FuIGJlIHRoZSBvd25lciBhbmQgZXhlY3V0ZSB0aGlzIHRhc2tcIiBjbGFzcz1cImNvbC0yNCBwLTFcIiBuZy1jbGljaz10ZHMuc2hvd0hpZGVUYXNrUm9sZXMoMSkgc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246IG5vbmU7XCI+PGkgY2xhc3M9XCJmYXMgZmEtdXNlclwiPjwvaT4gPHNwYW4gY2xhc3M9bWwtMj5Bc3NpZ24gdGFzazwvc3Bhbj4gPGkgY2xhc3M9XCJmbG9hdC1yaWdodCBwLTEgbXItMlwiIG5nLWNsYXNzPVwie1xcJ2ZhciBmYS1jaGVjay1jaXJjbGUgXFwnOnRhc2suUG90ZW50aWFsT3duZXJzU2F2ZWQsXFwnXFwnOiF0YXNrLlBvdGVudGlhbE93bmVyc1NhdmVkfVwiPjwvaT48L2E+PC9saT48bGkgbmctaWY9ZmFsc2UgY2xhc3M9XCJyb3cgbS0wIHBsLTFcIiBuZy1jbGFzcz1cIntcXCdiZy1ncmF5LTEwMFxcJzp0ZHMuc2hvd1Rhc2tGb3JtRm4oKT09XFwnZVxcJ31cIj48YSB0aXRsZT1cIkRlZmluZSB0aGUgZm9ybSB0aGF0IHByb3ZpZGVzIGlucHV0IGZvciB0YXNrIGV4ZWN1dGlvblwiIGNsYXNzPVwiY29sLTI0IHAtMVwiIGhyZWYgbmctY2xpY2s9XCJ0ZHMuc2hvd0hpZGVUYXNrRm9ybShcXCdlXFwnKVwiIHN0eWxlPVwidGV4dC1kZWNvcmF0aW9uOiBub25lO1wiPjxpIGNsYXNzPVwiZmFzIGZhLXBvbGwtaFwiPjwvaT4gPHNwYW4gY2xhc3M9bWwtMj5Pd25lciBGb3JtPC9zcGFuPiA8aSBjbGFzcz1cImZsb2F0LXJpZ2h0IHAtMSBtci0yXCIgbmctY2xhc3M9XCJ7XFwnZmFyIGZhLWNoZWNrLWNpcmNsZSBcXCc6cmVzb3VyY2VEZWZpbml0aW9uLnJlc291cmNlZGVmbGFuZ19zZXRbMF0uRXhlY3V0ZUZvcm0sXFwnXFwnOiFyZXNvdXJjZURlZmluaXRpb24ucmVzb3VyY2VkZWZsYW5nX3NldFswXS5FeGVjdXRlRm9ybX1cIj48L2k+PC9hPjwvbGk+PGxpIGNsYXNzPVwicm93IG0tMCBwbC0xXCIgbmctY2xhc3M9XCJ7XFwnYmctZ3JheS0xMDBcXCc6dGRzLmdldFNlbGVjdGVkQWN0aW9uRm4oKT09MX1cIj48YSBocmVmIHRpdGxlPVwiRGVmaW5lIHRhc2sgYWN0aW9uc1wiIGNsYXNzPVwicC0xIGNvbC0yNFwiIG5nLWNsaWNrPXRkcy5zaG93SGlkZVRhc2tTdGF0dXNlcygxLHRydWUpIHN0eWxlPVwidGV4dC1kZWNvcmF0aW9uOiBub25lO1wiPjxpIGNsYXNzPVwiZmEgZmEtcm9ib3RcIj48L2k+IDxzcGFuIGNsYXNzPW1sLTI+VGFzayBBY3Rpb25zPC9zcGFuPiA8aSBjbGFzcz1cImZsb2F0LXJpZ2h0IHAtMSBtci0yXCIgbmctY2xhc3M9XCJ7XFwnZmFyIGZhLWNoZWNrLWNpcmNsZSBcXCc6dGFzay50YXNrLmFjdGlvbnNbMV0uU2F2ZWQsXFwnXFwnOiF0YXNrLnRhc2suYWN0aW9uc1sxXS5TYXZlZH1cIj48L2k+PC9hPjwvbGk+PGxpIG5nLWlmPWZhbHNlIGNsYXNzPVwicm93IG1sLTEgcC0xXCIgbmctY2xhc3M9XCJ7XFwnYmctZ3JheS0xMDBcXCc6dGRzLnNob3dUYXNrRm9ybUZuKCk9PVxcJ2VcXCd9XCI+PGEgaHJlZiB0aXRsZT1cIkRlZmluZSB0YXNrIG91dGNvbWVzXCIgY2xhc3M9XCJjb2wtMjQgcC0xXCIgbmctY2xpY2s9XCJ0ZHMuc2hvd0hpZGVUYXNrRm9ybShcXCdlXFwnKVwiIHN0eWxlPVwidGV4dC1kZWNvcmF0aW9uOiBub25lO1wiPjxpIGNsYXNzPVwiZmFzIGZhLWRvd25sb2FkXCI+PC9pPiA8c3BhbiBjbGFzcz1tbC0yPk91dGNvbWVzPC9zcGFuPiA8aSBjbGFzcz1cImZsb2F0LXJpZ2h0IHAtMSBtci0yXCIgbmctY2xhc3M9XCJ7XFwnZmFyIGZhLWNoZWNrLWNpcmNsZSBcXCc6dGFzay5UYXNrT3V0Y29tZXNTYXZlZCxcXCdcXCc6IXRhc2suVGFza091dGNvbWVzU2F2ZWR9XCI+PC9pPjwvYT48L2xpPjxsaSBjbGFzcz1cInJvdyBtLTAgcGwtMVwiIG5nLWNsYXNzPVwie1xcJ2JnLWdyYXktMTAwXFwnOnRkcy5nZXRTZWxlY3RlZEFjdGlvbkZuKCk9PTJ9XCI+PGEgaHJlZiB0aXRsZT1cIkRlZmluZSB0YXNrIGFjdGlvbnNcIiBjbGFzcz1cInAtMSBjb2wtMjRcIiBuZy1jbGljaz10ZHMuc2hvd0hpZGVUYXNrU3RhdHVzZXMoMix0cnVlKSBzdHlsZT1cInRleHQtZGVjb3JhdGlvbjogbm9uZTtcIj48aSBjbGFzcz1cImZhcyBmYS10b29sc1wiPjwvaT4gPHNwYW4gY2xhc3M9bWwtMj5UYXNrIFBhcmFtZXRlcnM8L3NwYW4+IDxpIGNsYXNzPVwiZmxvYXQtcmlnaHQgcC0xIG1yLTJcIiBuZy1jbGFzcz1cIntcXCdmYXIgZmEtY2hlY2stY2lyY2xlIFxcJzp0YXNrLmFjdGlvbnNbMl0uU2F2ZWQsXFwnXFwnOiF0YXNrLnRhc2suYWN0aW9uc1syXS5TYXZlZH1cIj48L2k+PC9hPjwvbGk+PC91bD48L2Rpdj48ZGl2IGt0LXRhc2stdG9vbGJveCBjbGFzcz1wci0yIG5nLWlmPVwiZ3NydmMuZ2V0Rm9ybVZpZXdUeXBlKCk9PTEgJiYgdGRzLnNob3dUYXNrRm9ybUZuKCkhPVxcJ1xcJyAmJiB0ZHMuc2hvd1Rhc2tGb3JtRm4oKSE9dW5kZWZpbmVkXCI+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDA1X3Rhc2tzL2FuZ3VsYXJUZW1wbGF0ZXMvdGFza3NEZXRhaWxzLmh0bWwnLCc8Zm9ybSBuZy1zdWJtaXQ9c2F2ZU9yZ2FuaXNhdGlvbihmb3JtLiR2YWxpZCkgaWQ9c2F2ZUZvcm0gbmFtZT1mb3JtIGNsYXNzPWZvcm0taG9yaXpvbnRhbCByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2IGNsYXNzPXRleHQtY2VudGVyPjxoMz5UYXNrIGRlZmluaXRpb248L2gzPjwvZGl2Pjxocj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS50YXNrVHlwZS4kdG91Y2hlZCkgJiYgZm9ybS50YXNrVHlwZS4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1zbS0yIGZvcj10YXNrVHlwZT5UYXNrIHR5cGU8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLXNtLTY+PHVpLXNlbGVjdCBuZy1tb2RlbD10YXNrLnRhc2tUeXBlIG5nLWRpc2FibGVkPWRpc2FibGVkIG5hbWU9dGFza1R5cGUgbmctcmVxdWlyZWQ9dHJ1ZSByZXNldC1zZWFyY2gtaW5wdXQ9ZmFsc2U+PHVpLXNlbGVjdC1tYXRjaCBwbGFjZWhvbGRlcj1cIlNlYXJjaCBvciBzZWxlY3QgdGFzayB0eXBlLi4uXCI+PHNwYW4+e3skc2VsZWN0LnNlbGVjdGVkLm5hbWV9fTwvc3Bhbj4gPGEgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saW5rIGZsb2F0LXJpZ2h0XCIgbmctY2xpY2s9XCJjbGVhcigkZXZlbnQsICRzZWxlY3QpXCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2E+PC91aS1zZWxlY3QtbWF0Y2g+PHVpLXNlbGVjdC1jaG9pY2VzIHJlcGVhdD1cInR0IGluICh0YXNrVHlwZUxpc3QgfCBmaWx0ZXI6IHsgbmFtZTogJHNlbGVjdC5zZWFyY2ggfSkgdHJhY2sgYnkgdHQuaWRcIiByZWZyZXNoPXJlZnJlc2hSZXN1bHRzKCRzZWxlY3QpIHJlZnJlc2gtZGVsYXk9MD48c3Bhbj57e3R0Lm5hbWV9fTwvc3Bhbj48L3VpLXNlbGVjdC1jaG9pY2VzPjwvdWktc2VsZWN0PjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0udGFza1R5cGUuJHRvdWNoZWQpICYmIGZvcm0udGFza1R5cGUuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPlNlbGVjdCB0YXNrIHR5cGU8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ub3JnYW5pc2F0aW9uRGVzY3JpcHRpb24uJHRvdWNoZWQpICYmIGZvcm0ub3JnYW5pc2F0aW9uRGVzY3JpcHRpb24uJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtc20tMiBmb3I9b3JnYW5pc2F0aW9uRGVzY3JpcHRpb24+T3JnYW5pc2F0aW9uIGRlc2NyaXB0aW9uPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1zbS02Pjx0ZXh0YXJlYSBuZy1tb2RlbD1vcmdhbmlzYXRpb24ub3JnYW5pc2F0aW9uRGVzY3JpcHRpb24gbmFtZT1vcmdhbmlzYXRpb25EZXNjcmlwdGlvbiBuZy1yZXF1aXJlZD10cnVlIG5nLW1pbi1sZW5ndGg9MjAgY2xhc3M9Zm9ybS1jb250cm9sPjwvdGV4dGFyZWE+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5vcmdhbmlzYXRpb25EZXNjcmlwdGlvbi4kdG91Y2hlZCkgJiYgZm9ybS5vcmdhbmlzYXRpb25EZXNjcmlwdGlvbi4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIgb3JnYW5pc2F0aW9uIGRlc2NyaXB0aW9uKG1pbiAyMCBjaGFycykuPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLm9yZ2FuaXNhdGlvblR5cGUuJHRvdWNoZWQpICYmIGZvcm0ub3JnYW5pc2F0aW9uVHlwZS4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1zbS0yIGZvcj1jb3VudHJ5PkNvdW50cnk8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLXNtLTY+PHVpLXNlbGVjdCBuZy1tb2RlbD1vcmdhbmlzYXRpb24ub3JnYW5pc2F0aW9uY291bnRyeSBuZy1kaXNhYmxlZD1kaXNhYmxlZCBuYW1lPWNvdW50cnkgbmctcmVxdWlyZWQ9dHJ1ZSByZXNldC1zZWFyY2gtaW5wdXQ9ZmFsc2U+PHVpLXNlbGVjdC1tYXRjaCBwbGFjZWhvbGRlcj1cIlNlYXJjaCBvciBzZWxlY3Qgb3JnYW5pc2F0aW9uIHR5cGUuLi5cIj48c3Bhbj57eyRzZWxlY3Quc2VsZWN0ZWQubmFtZX19PC9zcGFuPiA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmsgZmxvYXQtcmlnaHRcIiBuZy1jbGljaz1cImNsZWFyKCRldmVudCwgJHNlbGVjdClcIj48aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPjwvYT48L3VpLXNlbGVjdC1tYXRjaD48dWktc2VsZWN0LWNob2ljZXMgcmVwZWF0PVwicnQgaW4gKG9yZ2FuaXNhdGlvblR5cGVMaXN0IHwgZmlsdGVyOiB7IG5hbWU6ICRzZWxlY3Quc2VhcmNoIH0pIHRyYWNrIGJ5IHJ0LmlkXCIgcmVmcmVzaD1yZWZyZXNoUmVzdWx0cygkc2VsZWN0KSByZWZyZXNoLWRlbGF5PTA+PHNwYW4+e3tydC5uYW1lfX08L3NwYW4+PC91aS1zZWxlY3QtY2hvaWNlcz48L3VpLXNlbGVjdD48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLm9yZ2FuaXNhdGlvblR5cGUuJHRvdWNoZWQpICYmIGZvcm0ub3JnYW5pc2F0aW9uVHlwZS4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+U2VsZWN0IG9yZ2FuaXNhdGlvbiB0eXBlPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmluZHVzdHJ5LiR0b3VjaGVkKSAmJiBmb3JtLmluZHVzdHJ5LiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLXNtLTIgZm9yPWluZHVzdHJ5PkluZHVzdHJ5PC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1zbS02Pjx1aS1zZWxlY3QgbmctbW9kZWw9b3JnYW5pc2F0aW9uLm9yZ2FuaXNhdGlvblN0YXR1cyBuZy1kaXNhYmxlZD1kaXNhYmxlZCBuYW1lPWluZHVzdHJ5IG5nLXJlcXVpcmVkPXRydWUgcmVzZXQtc2VhcmNoLWlucHV0PWZhbHNlPjx1aS1zZWxlY3QtbWF0Y2ggcGxhY2Vob2xkZXI9XCJTZWFyY2ggb3Igc2VsZWN0IG9yZ2FuaXNhdGlvbiBpbmR1c3RyeS4uLlwiPjxzcGFuPnt7JHNlbGVjdC5zZWxlY3RlZC5uYW1lfX08L3NwYW4+IDxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGluayBmbG9hdC1yaWdodFwiIG5nLWNsaWNrPVwiY2xlYXIoJGV2ZW50LCAkc2VsZWN0KVwiPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+PC9hPjwvdWktc2VsZWN0LW1hdGNoPjx1aS1zZWxlY3QtY2hvaWNlcyByZXBlYXQ9XCJpbmQgaW4gKGluZHVzdHJ5TGlzdCB8IGZpbHRlcjogeyBuYW1lOiAkc2VsZWN0LnNlYXJjaCB9KSB0cmFjayBieSBpbmQuaWRcIiByZWZyZXNoPXJlZnJlc2hSZXN1bHRzKCRzZWxlY3QpIHJlZnJlc2gtZGVsYXk9MD48c3Bhbj57e2luZC5uYW1lfX08L3NwYW4+PC91aS1zZWxlY3QtY2hvaWNlcz48L3VpLXNlbGVjdD48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmluZHVzdHJ5LiR0b3VjaGVkKSAmJiBmb3JtLmluZHVzdHJ5LiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5TZWxlY3QgaW5kdXN0cnk8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0ub3JnYW5pc2F0aW9uU3RhdHVzLiR0b3VjaGVkKSAmJiBmb3JtLm9yZ2FuaXNhdGlvblN0YXR1cy4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1zbS0yIGZvcj1vcmdhbmlzYXRpb25TdGF0dXM+U3RhdHVzPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1zbS02Pjx1aS1zZWxlY3QgbmctbW9kZWw9b3JnYW5pc2F0aW9uLm9yZ2FuaXNhdGlvblN0YXR1cyBuZy1kaXNhYmxlZD1kaXNhYmxlZCBuYW1lPW9yZ2FuaXNhdGlvblN0YXR1cyBuZy1yZXF1aXJlZD10cnVlIHJlc2V0LXNlYXJjaC1pbnB1dD1mYWxzZT48dWktc2VsZWN0LW1hdGNoIHBsYWNlaG9sZGVyPVwiU2VhcmNoIG9yIHNlbGVjdCBvcmdhbmlzYXRpb24gc3RhdHVzLi4uXCI+PHNwYW4+e3skc2VsZWN0LnNlbGVjdGVkLm5hbWV9fTwvc3Bhbj4gPGEgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saW5rIGZsb2F0LXJpZ2h0XCIgbmctY2xpY2s9XCJjbGVhcigkZXZlbnQsICRzZWxlY3QpXCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2E+PC91aS1zZWxlY3QtbWF0Y2g+PHVpLXNlbGVjdC1jaG9pY2VzIHJlcGVhdD1cIm9zIGluIChvcmdhbmlzYXRpb25TdGF0dXNMaXN0IHwgZmlsdGVyOiB7IG5hbWU6ICRzZWxlY3Quc2VhcmNoIH0pIHRyYWNrIGJ5IHJzLmlkXCIgcmVmcmVzaD1yZWZyZXNoUmVzdWx0cygkc2VsZWN0KSByZWZyZXNoLWRlbGF5PTA+PHNwYW4+e3tvcy5uYW1lfX08L3NwYW4+PC91aS1zZWxlY3QtY2hvaWNlcz48L3VpLXNlbGVjdD48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLm9yZ2FuaXNhdGlvblN0YXR1cy4kdG91Y2hlZCkgJiYgZm9ybS5vcmdhbmlzYXRpb25TdGF0dXMuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPlNlbGVjdCBvcmdhbmlzYXRpb24gc3RhdHVzPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29udHJvbC1ncm91cD48YnV0dG9uIHR5cGU9c3VibWl0IGlkPWNsZWFyQnRuIG5nLWRpc2FibGVkPWZvcm0uJGludmFsaWQgY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1zYXZlXCI+PC9zcGFuPiZuYnNwIFNhdmUgdGFzayBwYXJhbWV0ZXJzPC9idXR0b24+PGJyPjxicj48L2Rpdj48L2Zvcm0+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDA1X3Rhc2tzL2FuZ3VsYXJUZW1wbGF0ZXMvdGFza3NFeGVjdXRlLmh0bWwnLCc8ZGl2IG5nLWlmPWV4ZWN1dGVUYXNrRGF0YUxvYWRlZCBrdC10YXNrLXByb2MtZXhlY3V0ZSB0YXNrLWRlZmluaXRpb249dGFza0RlZmluaXRpb24gZGFzaGJvYXJkPWRhc2hib2FyZCByZXNvdXJjZS1kZWZpbml0aW9uPXJlc291cmNlRGVmaW5pdGlvbiB0YXNrLWV4ZWN1dGUtaW5zdGFuY2U9dGFza0V4ZWN1dGVJbnN0YW5jZSB0YXNrLWluaXRpYXRlLWluc3RhbmNlPXRhc2tJbml0aWF0ZUluc3RhbmNlIGxvY2FsLXZhcnM9bG9jYWxWYXJzPjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwNV90YXNrcy9hbmd1bGFyVGVtcGxhdGVzL3Rhc2tzRXhlY3V0ZUxpc3QuaHRtbCcsJzxkaXY+PGRpdiBjbGFzcz1cIndlbGwtY3VzdG9tIGJnLXdoaXRlXCI+PGg0IGNsYXNzPXRleHQtY2VudGVyPkV4ZWN1dGUgdGFza3M8L2g0PjwvZGl2PjxkaXYgaWQ9Y29udGVudEdyaWQ+PGRpdiBjbGFzcz1cIndlbGwtY3VzdG9tIGJnLXdoaXRlXCI+PGJ1dHRvbiB0eXBlPWJ1dHRvbiB1aS1zcmVmPVwiYXBwLm5hdmJhci50YXNrcy5leGVjdXRlKHtpZDogc2VsZWN0ZWRUYXNrRGVmSWQsdGFza19pbml0aWF0ZV9pZDp0YXNrSW5pdGlhdGVJZCx0YXNrX2V4ZWN1dGVfaWQ6dGFza0V4ZWN1dGVJZCxmcm9tU3RhdGVOYW1lOnN0YXRlTmFtZSxmcm9tU3RhdGVQYXJhbXM6c3RhdGVQYXJhbXN9KVwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodFwiIG5nLWRpc2FibGVkPSF0YXNrU2VsZWN0ZWQ+PHNwYW4gY2xhc3M9XCJmYSBmYS1nZWFyc1wiPjwvc3Bhbj4gRGV0YWlsczwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPUNsYWltU2VsZWN0ZWQoKSBjbGFzcz1cImJ0biBidG4tbGlnaHRcIiBuZy1kaXNhYmxlZD1cIiF0YXNrU2VsZWN0ZWQgfHwgc2VsZWN0ZWRUYXNrT2JqZWN0LlN0YXR1cyE9XFwnUmVhZHlcXCdcIj48c3BhbiBjbGFzcz1cImZhIGZhLWhhbmQtZ3JhYi1vXCI+PC9zcGFuPiBDbGFpbSBzZWxlY3RlZCB0YXNrPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gbmctaWY9aXNfc3VwZXJ1c2VyIGNsYXNzPVwiYnRuIGJ0bi1saWdodFwiIG5nLWNsaWNrPUV4ZWN1dGVMaXN0UHJlUGFnaW5hdGVkKDEpPjxzcGFuIGNsYXNzPVwiZmEgZmEtbGlzdFwiPjwvc3Bhbj4gU2hvdyBvbmx5IG15IHRhc2tzPC9idXR0b24+IDxidXR0b24gdHlwZT1idXR0b24gbmctaWY9aXNfc3VwZXJ1c2VyIGNsYXNzPVwiYnRuIGJ0bi1saWdodFwiIG5nLWNsaWNrPUV4ZWN1dGVMaXN0UHJlUGFnaW5hdGVkKDApPjxzcGFuIGNsYXNzPVwiZmEgZmEtbGlzdFwiPjwvc3Bhbj4gU2hvdyBhbGwgdGFza3M8L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPVwid2VsbC1jdXN0b20gYmctd2hpdGVcIj48ZGl2IGlkPWdyaWQxIHVpLWdyaWQ9Z3JpZE9wdGlvbnMgdWktZ3JpZC1zZWxlY3Rpb24gdWktZ3JpZC1yZXNpemUtY29sdW1ucyB1aS1ncmlkLXBhZ2luYXRpb24gY2xhc3M9bXlHcmlkPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJ3ZWxsLWN1c3RvbSBiZy13aGl0ZSByb3cgbS0wIHAtMFwiPjxkaXYgY2xhc3M9XCJjb2wgcGwtMFwiPjx1bCB1aWItcGFnaW5hdGlvbiBib3VuZGFyeS1saW5rcz10cnVlIG1heC1zaXplPTEwIGl0ZW1zLXBlci1wYWdlPXBhZ2VTaXplIGZvcmNlLWVsbGlwc2VzPXRydWUgdG90YWwtaXRlbXM9dG90YWxDb3VudCBuZy1tb2RlbD1jdXJyZW50UGFnZSBjbGFzcz1cImQtaW5saW5lLWZsZXggcGFnaW5hdGlvbiBwYWdpbmF0aW9uLXNtIG0tMFwiIHByZXZpb3VzLXRleHQ9JmxzYXF1bzsgbmctY2hhbmdlPXBhZ2VDaGFuZ2VkKCkgbmV4dC10ZXh0PSZyc2FxdW87IGZpcnN0LXRleHQ9JmxhcXVvOyBsYXN0LXRleHQ9JnJhcXVvOz48L3VsPjwvZGl2PjxkaXYgY2xhc3M9XCJjb2wtbGctYXV0byBwLTFcIj48c2VsZWN0IGNsYXNzPWlucHV0LXNtIG5nLWNoYW5nZT1wYWdlQ2hhbmdlZCgpIG5nLW1vZGVsPXBhZ2VTaXplPjxvcHRpb24gbmctcmVwZWF0PVwicHMgaW4gZ3JpZE9wdGlvbnMucGFnaW5hdGlvblBhZ2VTaXplcyB0cmFjayBieSBwc1wiIG5nLXNlbGVjdGVkPVwicGFnZVNpemU9PXBzXCIgbmctdmFsdWU9cHM+e3twc319PC9vcHRpb24+PC9zZWxlY3Q+Jm5ic3AgaXRlbXMgcGVyIHBhZ2UgJm5ic3AmbmJzcCB8ICZuYnNwJm5ic3AgUGFnZToge3tjdXJyZW50UGFnZX19IC8ge3tudW1QYWdlc319ICZuYnNwJm5ic3AgfCAmbmJzcCZuYnNwIHt7cGFnZVNpemUqY3VycmVudFBhZ2UrMS1wYWdlU2l6ZX19IC0ge3twYWdlU2l6ZSpjdXJyZW50UGFnZT50b3RhbENvdW50ID8gdG90YWxDb3VudCA6IHBhZ2VTaXplKmN1cnJlbnRQYWdlfX0gb2Yge3t0b3RhbENvdW50fX0gaXRlbXM8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDVfdGFza3MvYW5ndWxhclRlbXBsYXRlcy90YXNrc0luaXRpYXRlLmh0bWwnLCc8ZGl2IG5nLXNob3c9IWluaXRpYXRlRm9ybUxvYWRlZD48ZGl2IGt0LXByb2Nlc3NpbmctYW5pbWF0aW9uIHNob3ctbXNnPXRydWUgbWVzc2FnZT1cIkxvYWRpbmcgZm9ybVwiPjwvZGl2PjwvZGl2PjxkaXYgbmctc2hvdz1pbml0aWF0ZUZvcm1Mb2FkZWQ+PGZvcm0gbmctc3VibWl0PUluaXRpYXRlVGFzayhmb3JtYSkgbmFtZT1mb3JtYSBjbGFzcz1mb3JtLWhvcml6b250YWwgcm9sZT1mb3JtIG5vdmFsaWRhdGU+PGZpZWxkc2V0IG5nLWRpc2FibGVkPWlzU2F2aW5nPjxkaXYgY2xhc3M9XCJib3hzaGFkb3cgc29ydC1ib3hcIj48YnV0dG9uIHRpdGxlPVwiTG9jay9VbmxvY2sgZm9ybVwiIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBmbG9hdC1yaWdodFwiIG5nLWNsaWNrPUZvcm1Mb2NrVW5sb2NrKCk+PGkgbmctY2xhc3M9XCJ7XFwnZmEgZmEtbG9jayBmYS1sZ1xcJzogcmVzb3VyY2VEZWZpbml0aW9uLmZvcm1Mb2NrZWQgLFxcJ2ZhIGZhLXVubG9jay1hbHQgZmEtbGdcXCc6ICFyZXNvdXJjZURlZmluaXRpb24uZm9ybUxvY2tlZCxcXCdjb2xvcjpibGFja1xcJzogcmVzb3VyY2VEZWZpbml0aW9uLmZvcm1Mb2NrZWR9XCI+PC9pPjwvYnV0dG9uPjxoNCBjbGFzcz10ZXh0LWNlbnRlcj57e3Jlc291cmNlRGVmaW5pdGlvbi5uYW1lfX08L2g0PjwvZGl2PjxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCIgbmctaWY9IXRhc2tEZWZpbml0aW9uLkF1dG9Bc3NpZ24+PGRpdiBjbGFzcz1wYW5lbC1oZWFkaW5nPlBvdGVudGlhbCBvd25lcnMgPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cImlzQ29sbGFwc2VkID0gIWlzQ29sbGFwc2VkXCI+PHNwYW4gbmctY2xhc3M9XCJ7XFwnZmEgZmEtcGx1cy1zcXVhcmVcXCc6IGlzQ29sbGFwc2VkLFxcJ2ZhIGZhLW1pbnVzLXNxdWFyZVxcJzogIWlzQ29sbGFwc2VkIH1cIj48L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiB1aWItY29sbGFwc2U9aXNDb2xsYXBzZWQgY2xhc3M9cGFuZWwtYm9keT48ZGl2IGNsYXNzPVxcJ3Jvd1wiXFwnPjxkaXYgY2xhc3M9Y29sLXNtLTY+PGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLXN1Y2Nlc3NcIj48ZGl2IGNsYXNzPXBhbmVsLWhlYWRpbmc+VXNlcnMgPGJ1dHRvbiB0eXBlPWJ1dHRvbiBuZy1jbGljaz1cImlzQ29sbGFwc2VkMSA9ICFpc0NvbGxhcHNlZDFcIj48c3BhbiBuZy1jbGFzcz1cIntcXCdmYSBmYS1wbHVzLXNxdWFyZVxcJzogaXNDb2xsYXBzZWQxLFxcJ2ZhIGZhLW1pbnVzLXNxdWFyZVxcJzogIWlzQ29sbGFwc2VkMSB9XCI+PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgdWliLWNvbGxhcHNlPWlzQ29sbGFwc2VkMSBjbGFzcz1wYW5lbC1ib2R5PjxkaXYga3Qtc2VsZWN0LXVzZXJzIHNlbGVjdGVkLWl0ZW1zPXBvdGVudGlhbE93bmVycy5wb3RlbnRpYWxPd25lcnNVc2Vycz48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWNvbC1zbS02PjxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC13YXJuaW5nXCI+PGRpdiBjbGFzcz1wYW5lbC1oZWFkaW5nPkdyb3VwcyA8YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWNsaWNrPVwiaXNDb2xsYXBzZWQyID0gIWlzQ29sbGFwc2VkMlwiPjxzcGFuIG5nLWNsYXNzPVwie1xcJ2ZhIGZhLXBsdXMtc3F1YXJlXFwnOiBpc0NvbGxhcHNlZDIsXFwnZmEgZmEtbWludXMtc3F1YXJlXFwnOiAhaXNDb2xsYXBzZWQyIH1cIj48L3NwYW4+PC9idXR0b24+PC9kaXY+PGRpdiB1aWItY29sbGFwc2U9aXNDb2xsYXBzZWQyIGNsYXNzPXBhbmVsLWJvZHk+PGRpdiBrdC1zZWxlY3QtZ3JvdXBzIHNlbGVjdGVkLWl0ZW1zPXBvdGVudGlhbE93bmVycy5wb3RlbnRpYWxPd25lcnNHcm91cHM+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1ib3hzaGFkb3c+PGRpdiBrdC1ncmlkIGdyaWQtdHlwZT1ncmlkc3RlclR5cGUgcmVzb3VyY2UtZm9ybS1sb2FkZWQ9aW5pdGlhdGVGb3JtTG9hZGVkIHJlc291cmNlLWRlZmluaXRpb249dGFza0RlZmluaXRpb24gZm9ybS1kYXRhPWRhc2hib2FyZC5kYXRhIGZvcm0tcGFyYW1zPXJlc291cmNlRGVmaW5pdGlvbi5mb3JtUGFyYW1zIHBhcmVudD1kYXNoYm9hcmQud2lkZ2V0cyBhbGwtY29sdW1ucz1kYXNoYm9hcmQud2lkZ2V0cyBjbGFzcz1rdEdyaWQ+PC9kaXY+PC9kaXY+PC9maWVsZHNldD48ZGl2IGNsYXNzPVwiYm94c2hhZG93IHNvcnQtYm94XCI+PGJ1dHRvbiB0eXBlPXN1Ym1pdCBuZy1pZj0hdGFza0luaXRpYXRlZCBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiPjxzcGFuIGNsYXNzPVwiZmEgZmEtcm9ja2V0XCI+PC9zcGFuPiZuYnNwIHt7cmVzb3VyY2VEZWZpbml0aW9uLm5hbWV9fTwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXJcIiBuZy1jbGljaz1DYW5jZWxDbGlja2VkKCkgXCI+PHNwYW4gbmctY2xhc3M9YmFja0Nsb3NlSWNvbj48L3NwYW4+Jm5ic3Age3tjYW5jZWxCYWNrQnRuVHh0fX08L2J1dHRvbj48YnI+PC9kaXY+PC9mb3JtPjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwNV90YXNrcy9hbmd1bGFyVGVtcGxhdGVzL3Rhc2tzSW5pdGlhdGVMaXN0Lmh0bWwnLCc8ZGl2PjxkaXYgY2xhc3M9XCJ3ZWxsLWN1c3RvbSBiZy13aGl0ZVwiPjxoNCBjbGFzcz10ZXh0LWNlbnRlcj5TdGFydCB0YXNrczwvaDQ+PC9kaXY+PGRpdiBpZD1jb250ZW50R3JpZD48ZGl2IGNsYXNzPVwid2VsbC1jdXN0b20gYmctd2hpdGVcIj48YnV0dG9uIHR5cGU9YnV0dG9uIHVpLXNyZWY9XCJhcHAubmF2YmFyLnRhc2tzLnByb2Moe2lkOiBzZWxlY3RlZFRhc2ssaW5pdF90eXBlOlxcJ3RcXCcsZnJvbVN0YXRlTmFtZTogY3VycmVudFN0YXRlTmFtZSxmcm9tU3RhdGVQYXJhbXM6Y3VycmVudFN0YXRlUGFyYW1zLCBwcmV2X3Rhc2tfZXhlY3V0ZV9pZDowLG91dGNvbWVfaWQ6MH0pXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCIgbmctZGlzYWJsZWQ9IXRhc2tTZWxlY3RlZD48c3BhbiBjbGFzcz1cImZhIGZhLXJvY2tldFwiPjwvc3Bhbj4gU3RhcnQgc2VsZWN0ZWQgdGFzazwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJ3ZWxsLWN1c3RvbSBiZy13aGl0ZVwiPjxkaXYgaWQ9Z3JpZDEgdWktZ3JpZD1ncmlkT3B0aW9ucyB1aS1ncmlkLXNlbGVjdGlvbiB1aS1ncmlkLXJlc2l6ZS1jb2x1bW5zIGNsYXNzPW15R3JpZD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nKTtcbiR0ZW1wbGF0ZUNhY2hlLnB1dCgnLzAwMDVfdGFza3MvYW5ndWxhclRlbXBsYXRlcy90YXNrc0xpc3QuaHRtbCcsJzxkaXY+PGRpdiBjbGFzcz1cImNhcmQgbXQtMVwiPjxzcGFuIGNsYXNzPVwiaDQgbS0wIHAtMSB0ZXh0LWNlbnRlclwiPlRhc2tzPC9zcGFuPjwvZGl2PjxkaXYgaWQ9Y29udGVudEdyaWQ+PGRpdiBjbGFzcz1cImNhcmQgbXQtMVwiPjxidXR0b24gdHlwZT1idXR0b24gbmctaWY9ZmFsc2UgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiB1aS1zcmVmPVwiYXBwLm5hdmJhci5yZXNvdXJjZXMuZWRpdCh7aWQ6IHNlbGVjdGVkVGFza30pXCIgbmctZGlzYWJsZWQ9IXRhc2tTZWxlY3RlZD48c3BhbiBjbGFzcz1cImZhIGZhLWVkaXRcIj48L3NwYW4+IEVkaXQgdGFzayBkZXRhaWxzPC9idXR0b24+PGRpdj48YnV0dG9uIHR5cGU9YnV0dG9uIHVpLXNyZWY9XCJhcHAubmF2YmFyLnRhc2tzLmRlZmluaXRpb24oe2lkOiBzZWxlY3RlZFRhc2t9KVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1kYXJrXCIgbmctZGlzYWJsZWQ9IXRhc2tTZWxlY3RlZCBuZy1jbGljaz1lZGl0VGFzaygpPjxzcGFuIGNsYXNzPVwiZmEgZmEtdGFza3NcIj48L3NwYW4+IEVkaXQgdGFzayBkZWZpbml0aW9uPC9idXR0b24+PC9kaXY+PGJ1dHRvbiBuZy1pZj1mYWxzZSB0eXBlPWJ1dHRvbiB1aS1zcmVmPVwiYXBwLm5hdmJhci50YXNrcy5mb3JtKHtpZDogc2VsZWN0ZWRUYXNrLGZvcm1UeXBlOlxcJ2lcXCd9KVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgbmctZGlzYWJsZWQ9IXRhc2tTZWxlY3RlZD48c3BhbiBjbGFzcz1cImZhIGZhLW5ld3NwYXBlci1vXCI+PC9zcGFuPiBTdGFydCB0YXNrIC0gZm9ybSBkZWZpbml0aW9uPC9idXR0b24+IDxidXR0b24gbmctaWY9ZmFsc2UgdHlwZT1idXR0b24gdWktc3JlZj1cImFwcC5uYXZiYXIudGFza3MuZm9ybSh7aWQ6IHNlbGVjdGVkVGFzayxmb3JtVHlwZTpcXCdlXFwnLHJlc291cmNlOnNlbGVjdGVkVGFza09iamVjdH0pXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBuZy1kaXNhYmxlZD0hdGFza1NlbGVjdGVkPjxzcGFuIGNsYXNzPVwiZmEgZmEtbmV3c3BhcGVyLW9cIj48L3NwYW4+IEV4ZWN1dGUgdGFzayAtIGZvcm0gZGVmaW5pdGlvbjwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9XCJjYXJkIG10LTFcIj48ZGl2IGlkPWdyaWQxIHVpLWdyaWQ9Z3JpZE9wdGlvbnMgdWktZ3JpZC1zZWxlY3Rpb24gdWktZ3JpZC1yZXNpemUtY29sdW1ucyBjbGFzcz1teUdyaWQ+PC9kaXY+PGRpdiBjbGFzcz1cInJvdyBtLTEgcC0wXCI+PGRpdiBjbGFzcz1cImNvbCBwbC0wXCI+PHVsIHVpYi1wYWdpbmF0aW9uIGJvdW5kYXJ5LWxpbmtzPXRydWUgbWF4LXNpemU9MTAgaXRlbXMtcGVyLXBhZ2U9cGFnZVNpemUgZm9yY2UtZWxsaXBzZXM9dHJ1ZSB0b3RhbC1pdGVtcz10b3RhbENvdW50IG5nLW1vZGVsPWN1cnJlbnRQYWdlIGNsYXNzPVwiZC1pbmxpbmUtZmxleCBwYWdpbmF0aW9uIHBhZ2luYXRpb24tc20gbS0wXCIgcHJldmlvdXMtdGV4dD0mbHNhcXVvOyBuZy1jaGFuZ2U9cGFnZUNoYW5nZWQoKSBuZXh0LXRleHQ9JnJzYXF1bzsgZmlyc3QtdGV4dD0mbGFxdW87IGxhc3QtdGV4dD0mcmFxdW87PjwvdWw+PC9kaXY+PGRpdiBjbGFzcz1cImNvbC1hdXRvIHAtMVwiPjxzZWxlY3QgY2xhc3M9aW5wdXQtc20gbmctY2hhbmdlPXBhZ2VDaGFuZ2VkKCkgbmctbW9kZWw9cGFnZVNpemU+PG9wdGlvbiBuZy1yZXBlYXQ9XCJwcyBpbiBncmlkT3B0aW9ucy5wYWdpbmF0aW9uUGFnZVNpemVzIHRyYWNrIGJ5IHBzXCIgbmctc2VsZWN0ZWQ9XCJwYWdlU2l6ZT09cHNcIiBuZy12YWx1ZT1wcz57e3BzfX08L29wdGlvbj48L3NlbGVjdD4mbmJzcCBpdGVtcyBwZXIgcGFnZSAmbmJzcCZuYnNwIHwgJm5ic3AmbmJzcCBQYWdlOiB7e2N1cnJlbnRQYWdlfX0gLyB7e251bVBhZ2VzfX0gJm5ic3AmbmJzcCB8ICZuYnNwJm5ic3Age3twYWdlU2l6ZSpjdXJyZW50UGFnZSsxLXBhZ2VTaXplfX0gLSB7e3BhZ2VTaXplKmN1cnJlbnRQYWdlPnRvdGFsQ291bnQgPyB0b3RhbENvdW50IDogcGFnZVNpemUqY3VycmVudFBhZ2V9fSBvZiB7e3RvdGFsQ291bnR9fSBpdGVtczwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwNV90YXNrcy9hbmd1bGFyVGVtcGxhdGVzL3Rhc2tzTWVudS5odG1sJywnPGRpdiBuZy1jb250cm9sbGVyPXRhc2tJbml0aWF0ZUxpc3RDdHJsPjxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+PGRpdiBjbGFzcz1wYW5lbC1oZWFkaW5nPjxzcGFuIGNsYXNzPVwiZmEgZmEtYmFyc1wiPiZuYnNwIE1lbnU8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz48dWwgY2xhc3M9XCJuYXYgbmF2LXBpbGxzIG5hdi1zdGFja2VkXCI+PGxpIG5nLWlmPWlzX3N1cGVydXNlciBuZy1jbGFzcz1cImFjdGl2ZUxpbmsoXFwnYXBwLm5hdmJhci50YXNrcy5saXN0XFwnKVwiPjxhIHVpLXNyZWY9YXBwLm5hdmJhci50YXNrcy5saXN0PjxpIGNsYXNzPVwiZmEgZmEtdGFza3NcIj4mbmJzcDsgVGFza3M8L2k+PC9hPjwvbGk+PGxpIG5nLWNsYXNzPVwiYWN0aXZlTGlua1NpZGVtZW51KFxcJ2FwcC5uYXZiYXIudGFza3MuaW5pdGlhdGVcXCcpXCI+PGEgdWktc3JlZj1hcHAubmF2YmFyLnRhc2tzLmluaXRpYXRlLWxpc3Q+PGkgY2xhc3M9XCJmYSBmYS1yb2NrZXRcIj4mbmJzcDsgU3RhcnQgbmV3IHRhc2tzPC9pPjwvYT48L2xpPjxsaSBuZy1jbGFzcz1cImFjdGl2ZUxpbmtTaWRlbWVudShcXCdhcHAubmF2YmFyLnRhc2tzLmNsYWltXFwnKVwiPjxhIHVpLXNyZWY9YXBwLm5hdmJhci50YXNrcy5jbGFpbT48aSBjbGFzcz1cImZhIGZhLWhhbmQtZ3JhYi1vXCI+Jm5ic3A7IENsYWltIHRhc2tzPC9pPjwvYT48L2xpPjxsaSBuZy1jbGFzcz1cImFjdGl2ZUxpbmtTaWRlbWVudShcXCdhcHAubmF2YmFyLnRhc2tzLmV4ZWN1dGVcXCcpXCI+PGEgdWktc3JlZj1hcHAubmF2YmFyLnRhc2tzLmV4ZWN1dGUtbGlzdD48aSBjbGFzcz1cImZhIGZhLWdlYXJzXCI+Jm5ic3A7IFdvcmsgb24gdGFza3M8L2k+PC9hPjwvbGk+PC91bD48dWwgbmctaWY9XCJzZWxlY3RlZFJlc291cmNlR3JvdXA+MFwiIGNsYXNzPVwibmF2IG5hdi1waWxscyBuYXYtc3RhY2tlZFwiPjxsaSBuZy1yZXBlYXQ9XCJtaXRsIGluIG15SW5pdGlhdGVUYXNrTGlzdCB0cmFjayBieSBtaXRsLmlkXCI+PGEgaHJlZiBuZy1jbGljaz1Jbml0aWF0ZVRhc2sobWl0bC5pZCk+e3ttaXRsLm5hbWV9fTwvYT48L2xpPjwvdWw+PC9kaXY+PGRpdiBrdC10YXNrLXRvb2xib3ggbmctc2hvdz1cIiEhYWN0aXZlTGluayhcXCdhcHAubmF2YmFyLnRhc2tzLmZvcm1cXCcpXCI+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDA1X3Rhc2tzL2FuZ3VsYXJUZW1wbGF0ZXMvdGFza3NOZXcuaHRtbCcsJzxmb3JtIG5nLXN1Ym1pdD1zYXZlTmV3Q29kZShmb3JtLiR2YWxpZCkgaWQ9c2F2ZUZvcm0gbmFtZT1mb3JtIGNsYXNzPWZvcm0taG9yaXpvbnRhbCByb2xlPWZvcm0gbm92YWxpZGF0ZT48ZGl2IGNsYXNzPXRleHQtY2VudGVyPjxoMz5FbnRlciBuZXcgY29kZTwvaDM+PC9kaXY+PGhyPjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvZGVOYW1lLiR0b3VjaGVkKSAmJiBmb3JtLmNvZGVOYW1lLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLXNtLTIgZm9yPWNvZGVOYW1lPkNvZGUgbmFtZTwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtc20tNj48aW5wdXQgdHlwZT10ZXh0IG5nLW1vZGVsPUNvZGVIZWFkLmNvZGVzaGVhZGxhbmdfc2V0WzBdLkNvZGVOYW1lIG5nLXJlcXVpcmVkPXRydWUgY2xhc3M9Zm9ybS1jb250cm9sIGlkPWNvZGVOYW1lIG5hbWU9Y29kZU5hbWUgcGxhY2Vob2xkZXI9XCJDb2RlIG5hbWVcIj48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLmNvZGVOYW1lLiR0b3VjaGVkKSAmJiBmb3JtLmNvZGVOYW1lLiRpbnZhbGlkXCIgY2xhc3M9aGVscC1ibG9jaz5FbnRlciBjb2RlIG5hbWU8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1mb3JtLWdyb3VwIG5nLWNsYXNzPVwieyBcXCdoYXMtZXJyb3JcXCcgOiAoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uY29kZURlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtLmNvZGVEZXNjcmlwdGlvbi4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1zbS0yIGZvcj1jb2RlRGVzY3JpcHRpb24+Q29kZSBkZXNjcmlwdGlvbjwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtc20tNj48dGV4dGFyZWEgbmctbW9kZWw9Q29kZUhlYWQuY29kZXNoZWFkbGFuZ19zZXRbMF0uRGVzY3JpcHRpb24gbmFtZT1jb2RlRGVzY3JpcHRpb24gbmctcmVxdWlyZWQ9dHJ1ZSBuZy1taW4tbGVuZ3RoPTIwIGNsYXNzPWZvcm0tY29udHJvbD48L3RleHRhcmVhPjxwIG5nLXNob3c9XCIoZm9ybS4kc3VibWl0dGVkIHx8IGZvcm0uY29kZURlc2NyaXB0aW9uLiR0b3VjaGVkKSAmJiBmb3JtLmNvZGVEZXNjcmlwdGlvbi4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIgY29kZSBkZXNjcmlwdGlvbihtaW4gMjAgY2hhcnMpLjwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5jb2RlVHlwZS4kdG91Y2hlZCkgJiYgZm9ybS5jb2RlVHlwZS4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1zbS0yIGZvcj1jb2RlVHlwZT5Db2RlIHR5cGU8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLXNtLTY+PHVpLXNlbGVjdCBuZy1tb2RlbD1Db2RlSGVhZC5Db2RlVHlwZSBuZy1kaXNhYmxlZD1kaXNhYmxlZCBuYW1lPWNvZGVUeXBlIG5nLXJlcXVpcmVkPXRydWUgcmVzZXQtc2VhcmNoLWlucHV0PWZhbHNlPjx1aS1zZWxlY3QtbWF0Y2ggY2xhc3M9dWktc2VsZWN0LW1hdGNoIHBsYWNlaG9sZGVyPVwiU2VhcmNoIG9yIHNlbGVjdCBjb2RlIHR5cGUuLi5cIj48c3Bhbj57eyRzZWxlY3Quc2VsZWN0ZWQubmFtZX19PC9zcGFuPiA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmsgZmxvYXQtcmlnaHRcIiBuZy1jbGljaz1cImNsZWFyKCRldmVudCwgJHNlbGVjdClcIj48aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPjwvYT48L3VpLXNlbGVjdC1tYXRjaD48dWktc2VsZWN0LWNob2ljZXMgY2xhc3M9dWktc2VsZWN0LWNob2ljZXMgcmVwZWF0PVwiY3QgaW4gKGNvZGVUeXBlTGlzdCB8IGZpbHRlcjogeyBuYW1lOiAkc2VsZWN0LnNlYXJjaCB9KSB0cmFjayBieSBjdC5pZFwiIHJlZnJlc2g9cmVmcmVzaFJlc3VsdHMoJHNlbGVjdCkgcmVmcmVzaC1kZWxheT0wPjxzcGFuPnt7Y3QubmFtZX19PC9zcGFuPjwvdWktc2VsZWN0LWNob2ljZXM+PC91aS1zZWxlY3Q+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5jb2RlVHlwZS4kdG91Y2hlZCkgJiYgZm9ybS5jb2RlVHlwZS4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+U2VsZWN0IGNvZGUgdHlwZTwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5sYW5nLiR0b3VjaGVkKSAmJiBmb3JtLmxhbmcuJGludmFsaWQgfVwiPjxsYWJlbCBjbGFzcz1jb2wtc20tMiBmb3I9bGFuZz5MYW5ndWFnZTwvbGFiZWw+PGRpdiBjbGFzcz1jb2wtc20tNj48dWktc2VsZWN0IG5nLW1vZGVsPUNvZGVIZWFkLmNvZGVzaGVhZGxhbmdfc2V0WzBdLkxhbmcgbmctZGlzYWJsZWQ9ZGlzYWJsZWQgbmFtZT1sYW5nIG5nLXJlcXVpcmVkPXRydWUgcmVzZXQtc2VhcmNoLWlucHV0PWZhbHNlPjx1aS1zZWxlY3QtbWF0Y2ggY2xhc3M9dWktc2VsZWN0LW1hdGNoIHBsYWNlaG9sZGVyPVwiU2VhcmNoIG9yIHNlbGVjdCBsYW5ndWFnZS4uLlwiPjxzcGFuPnt7JHNlbGVjdC5zZWxlY3RlZC5uYW1lfX08L3NwYW4+IDxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGluayBmbG9hdC1yaWdodFwiIG5nLWNsaWNrPVwiY2xlYXIoJGV2ZW50LCAkc2VsZWN0KVwiPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+PC9hPjwvdWktc2VsZWN0LW1hdGNoPjx1aS1zZWxlY3QtY2hvaWNlcyBjbGFzcz11aS1zZWxlY3QtY2hvaWNlcyByZXBlYXQ9XCJjbCBpbiAoY29kZUxhbmd1YWdlTGlzdCB8IGZpbHRlcjogeyBuYW1lOiAkc2VsZWN0LnNlYXJjaCB9KSB0cmFjayBieSBjbC5pZFwiIHJlZnJlc2g9cmVmcmVzaFJlc3VsdHMoJHNlbGVjdCkgcmVmcmVzaC1kZWxheT0wPjxzcGFuPnt7Y2wubmFtZX19PC9zcGFuPjwvdWktc2VsZWN0LWNob2ljZXM+PC91aS1zZWxlY3Q+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5sYW5nLiR0b3VjaGVkKSAmJiBmb3JtLmxhbmcuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPlNlbGVjdCBsYW5ndWFnZTwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5zdGF0dXMuJHRvdWNoZWQpICYmIGZvcm0uc3RhdHVzLiRpbnZhbGlkIH1cIj48bGFiZWwgY2xhc3M9Y29sLXNtLTIgZm9yPWxhbmc+U3RhdHVzPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1zbS02Pjx1aS1zZWxlY3QgbmctbW9kZWw9Q29kZUhlYWQuU3RhdHVzIG5nLWRpc2FibGVkPWRpc2FibGVkIG5hbWU9c3RhdHVzIG5nLXJlcXVpcmVkPXRydWUgcmVzZXQtc2VhcmNoLWlucHV0PWZhbHNlPjx1aS1zZWxlY3QtbWF0Y2ggY2xhc3M9dWktc2VsZWN0LW1hdGNoIHBsYWNlaG9sZGVyPVwiU2VhcmNoIG9yIHNlbGVjdCBzdGF0dXMuLi5cIj48c3Bhbj57eyRzZWxlY3Quc2VsZWN0ZWQubmFtZX19PC9zcGFuPiA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpbmsgZmxvYXQtcmlnaHRcIiBuZy1jbGljaz1cImNsZWFyKCRldmVudCwgJHNlbGVjdClcIj48aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPjwvYT48L3VpLXNlbGVjdC1tYXRjaD48dWktc2VsZWN0LWNob2ljZXMgY2xhc3M9dWktc2VsZWN0LWNob2ljZXMgcmVwZWF0PVwiY3MgaW4gKGNvZGVTdGF0dXNMaXN0IHwgZmlsdGVyOiB7IG5hbWU6ICRzZWxlY3Quc2VhcmNoIH0pIHRyYWNrIGJ5IGNzLmlkXCIgcmVmcmVzaD1yZWZyZXNoUmVzdWx0cygkc2VsZWN0KSByZWZyZXNoLWRlbGF5PTA+PHNwYW4+e3tjcy5uYW1lfX08L3NwYW4+PC91aS1zZWxlY3QtY2hvaWNlcz48L3VpLXNlbGVjdD48cCBuZy1zaG93PVwiKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLnN0YXR1cy4kdG91Y2hlZCkgJiYgZm9ybS5zdGF0dXMuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPlNlbGVjdCBzdGF0dXM8L3A+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1jb250cm9sLWdyb3VwPjxidXR0b24gdHlwZT1zdWJtaXQgaWQ9Y2xlYXJCdG4gbmctZGlzYWJsZWQ9Zm9ybS4kaW52YWxpZCBjbGFzcz1cImJ0biBidG4tbGlnaHRcIj48c3BhbiBjbGFzcz1cImZhIGZhLXNhdmVcIj48L3NwYW4+Jm5ic3AgU2F2ZSBjb2RlPC9idXR0b24+PGJyPjxicj48L2Rpdj48L2Zvcm0+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDA1X3Rhc2tzL2FuZ3VsYXJUZW1wbGF0ZXMvdGFza3NPdXRjb21lRGVmaW5pdGlvbi5odG1sJywnPGZvcm0gbmctc3VibWl0PXNhdmVPdXRjb21lRGVmaW5pdGlvbihmb3JtLiR2YWxpZCkgaWQ9c2F2ZUZvcm0gbmFtZT1mb3JtIGNsYXNzPWZvcm0taG9yaXpvbnRhbCByb2xlPWZvcm0gbm92YWxpZGF0ZT48YnV0dG9uIHR5cGU9YnV0dG9uIG5nLWlmPSFub0JhY2tCdXR0b24gY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgZmxvYXQtbGVmdFwiIG5nLWNsaWNrPWdvQmFjaygpPjxzcGFuIGNsYXNzPVwiZmEgZmEtYXJyb3ctY2lyY2xlLWxlZnRcIj48L3NwYW4+IEdvIGJhY2s8L2J1dHRvbj48ZGl2IGNsYXNzPXRleHQtY2VudGVyPjxoMz5PdXRjb21lIGRlZmluaXRpb248L2gzPjwvZGl2Pjxocj48ZGl2IGNsYXNzPWNvbC1tZC0xMj48ZGl2IGNsYXNzPWZvcm0tZ3JvdXAgbmctY2xhc3M9XCJ7IFxcJ2hhcy1lcnJvclxcJyA6IChmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5vdXRjb21lTmFtZS4kdG91Y2hlZCkgJiYgZm9ybS5vdXRjb21lTmFtZS4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1zbS0yIGZvcj1vdXRjb21lTmFtZT5PdXRjb21lIG5hbWU8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLXNtLTY+PGlucHV0IHR5cGU9dGV4dCBuZy1tb2RlbD1PdXRjb21lSGVhZC5PdXRjb21lTmFtZSBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1jb2RlTmFtZSBuYW1lPW91dGNvbWVOYW1lIHBsYWNlaG9sZGVyPVwiT3V0Y29tZSBuYW1lXCI+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5vdXRjb21lTmFtZS4kdG91Y2hlZCkgJiYgZm9ybS5vdXRjb21lTmFtZS4kaW52YWxpZFwiIGNsYXNzPWhlbHAtYmxvY2s+RW50ZXIgb3V0Y29tZSBuYW1lPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cCBuZy1jbGFzcz1cInsgXFwnaGFzLWVycm9yXFwnIDogKGZvcm0uJHN1Ym1pdHRlZCB8fCBmb3JtLm5hbWUuJHRvdWNoZWQpICYmIGZvcm0ubmFtZS4kaW52YWxpZCB9XCI+PGxhYmVsIGNsYXNzPWNvbC1zbS0yIGZvcj1OYW1lPk91dGNvbWUgZGlzcGxheSBuYW1lPC9sYWJlbD48ZGl2IGNsYXNzPWNvbC1zbS02PjxpbnB1dCB0eXBlPXRleHQgbmctbW9kZWw9T3V0Y29tZUhlYWQuTmFtZSBuZy1yZXF1aXJlZD10cnVlIGNsYXNzPWZvcm0tY29udHJvbCBpZD1uYW1lIG5hbWU9bmFtZSBwbGFjZWhvbGRlcj1cIk91dGNvbWUgZGlzcGxheSBuYW1lXCI+PHAgbmctc2hvdz1cIihmb3JtLiRzdWJtaXR0ZWQgfHwgZm9ybS5uYW1lLiR0b3VjaGVkKSAmJiBmb3JtLm5hbWUuJGludmFsaWRcIiBjbGFzcz1oZWxwLWJsb2NrPkVudGVyIG91dGNvbWUgZGlzcGxheSBuYW1lPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Zm9ybS1ncm91cD48bGFiZWwgY2xhc3M9Y29sLXNtLTIgZm9yPWFjdGl2ZT5BY3RpdmU8L2xhYmVsPjxkaXYgY2xhc3M9Y29sLXNtLTY+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmctbW9kZWw9T3V0Y29tZUhlYWQuQWN0aXZlIG5hbWU9YWN0aXZlIG5nLXJlcXVpcmVkPWZhbHNlIG5nLWNoZWNrZWQ9T3V0Y29tZUhlYWQuQWN0aXZlPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Y29udHJvbC1ncm91cD48YnV0dG9uIHR5cGU9c3VibWl0IGlkPWNsZWFyQnRuIG5nLWRpc2FibGVkPWZvcm0uJGludmFsaWQgY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1zYXZlXCI+PC9zcGFuPiZuYnNwIFNhdmUgb3V0Y29tZSBkZWZpbml0aW9uPC9idXR0b24+PGJyPjxicj48L2Rpdj48L2Rpdj48L2Zvcm0+Jyk7XG4kdGVtcGxhdGVDYWNoZS5wdXQoJy8wMDA1X3Rhc2tzL2FuZ3VsYXJUZW1wbGF0ZXMvdGFza3NQcm9jLmh0bWwnLCc8ZGl2PjxkaXYga3QtbWVudS1jbGljayBuZy1oaWRlPVwiZ3NydmMuZ2V0T3BlblRhc2tUeXBlKCk9PVxcJ25ld1BhZ2VcXCdcIj48L2Rpdj48ZGl2IG5nLWlmPVwiZ3NydmMuZ2V0T3BlblRhc2tUeXBlKCk9PVxcJ25ld1BhZ2VcXCdcIiBuZy1pbml0PW9wZW5UYXNrSW5OZXdQYWdlKCk+PGRpdiBjbGFzcz1jb2xsYXBzZSBuZy1jbGFzcz1cIntcXCdzaG93XFwnOmdzcnZjLmdldE9wZW5UYXNrVHlwZSgpPT1cXCduZXdQYWdlXFwnfVwiPjxkaXYga3QtdGFzay1wcm9jLWRpcmVjdGl2ZSBmZD1mZCBsb2NhbC12YXJzPW9wZW5lZFRhc2tJbk5ld1BhZ2UubG9jYWxWYXJzIHRhc2stZGVmaW5pdGlvbj1vcGVuZWRUYXNrSW5OZXdQYWdlLnRhc2tEZWZpbml0aW9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwNV90YXNrcy9hbmd1bGFyVGVtcGxhdGVzL3Rhc2tzUHVibGljRXhlY3V0ZS5odG1sJywnPGRpdj48ZGl2IGt0LXRhc2stcHJvYy1kaXJlY3RpdmUgZmQ9ZmQgbG9jYWwtdmFycz1sb2NhbFZhcnMgdGFzay1kZWZpbml0aW9uPXRhc2tEZWZpbml0aW9uPjwvZGl2PjwvZGl2PicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwNl92cGFnZS9hbmd1bGFyVGVtcGxhdGVzL3ZwYWdlLmh0bWwnLCc8ZGl2IGNsYXNzPVwicm93IG0tMFwiPjxkaXYgY2xhc3M9XCJwYWdlLTEwMCBwLTBcIj48ZGl2IG5nLWlmPXVuYXV0aG9yaXNlZD48aDQgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LWRhbmdlclwiPlVuYXV0aG9yaXNlZCE8L2g0PjwvZGl2PjxkaXYgbmctc2hvdz1cIihmb3JtTG9hZGVkIHx8IHBhZ2VMb2FkZWQpICYmICF1bmF1dGhvcmlzZWRcIiBjbGFzcz48ZGl2IGNsYXNzPjxkaXYgY2xhc3M9cGFnZS1ncmlkLWNvbnRhaW5lcj48Zm9ybSBuYW1lPWZvcm17e3Jlc291cmNlSWR9fSBjbGFzcz1mb3JtLWhvcml6b250YWwgcm9sZT1mb3JtIG5vdmFsaWRhdGU+PGRpdiBjbGFzcyBuZy1pZj1cInBhZ2VMb2FkZWQgJiYgcmVzb3VyY2VEZWZpbml0aW9uLnBhZ2Vfc3RhdGVfaWRcIj48ZGl2IGt0LWdyaWQgZ3JpZC10eXBlPTo6Z3JpZHN0ZXJUeXBlIHJlc291cmNlLWZvcm0tbG9hZGVkPXBhZ2VMb2FkZWQgcmVzb3VyY2UtZGVmaW5pdGlvbj06OnJlc291cmNlRGVmaW5pdGlvbiBmb3JtLXBhcmFtcz1yZXNvdXJjZURlZmluaXRpb24uZm9ybVBhcmFtcyBmb3JtLWRhdGE9ZGFzaGJvYXJkLmRhdGEgcGFyZW50PTo6ZGFzaGJvYXJkLndpZGdldHMgYWxsLWNvbHVtbnM9OjpkYXNoYm9hcmQud2lkZ2V0cyBjbGFzcz1rdEdyaWQ+PGRpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Zvcm0+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBuZy1pZj0hcGFnZUxvYWRlZCBjbGFzcz1cIm1vZGFsLWJhY2tkcm9wIHNob3dcIiBuZy1jbGFzcz1cIntcXCdjb250ZW50Q2VudGVyZWRcXCc6IXBhZ2VMb2FkZWQgJiYgcmVzb3VyY2V9XCI+PGRpdiBuZy1pZj1cIiFwYWdlTG9hZGVkICYmIHJlc291cmNlXCIgY2xhc3M9bG9hZGVyLXN0eWxlPjxkaXYgY2xhc3M9XCJsb2FkZXIgbG9hZGVyLWxnXCI+PC9kaXY+PGRpdiBjbGFzcz1tdC0yPjxkaXYgY2xhc3M9XCJwYW5lbC10aXRsZSBweC0xXCIgc3R5bGU9dmVydGljYWwtYWxpZ246bWlkZGxlO2NvbG9yOiMzNDk4ZGI+PHNwYW4+e3tyZXNvdXJjZS5QYXJhbWV0ZXJzTGFuZy5Mb2FkUGFnZVRleHR9fTwvc3Bhbj48L2Rpdj48L2Rpdj4tPC9kaXY+PC9kaXY+PC9kaXY+PHN0eWxlPlxcclxcblxcclxcbjpyb290IHtcXHJcXG4gIC0tc2lkZU1lbnVXaWR0aDoge3sgbWVudV9zZXJ2aWNlLmdldFNpZGVNZW51U2l6ZSgpID8gXFwnMzAwcHhcXCc6XFwnNjBweFxcJyB9fTtcXHJcXG59XFxyXFxuXFxyXFxuLmdhcC0xMiB7XFxyXFxuXFx0Y29sdW1uLWdhcDogMTJweDtcXHJcXG59XFxyXFxuXFxyXFxuLnBhZ2UtMTAwIHtcXHJcXG5cXHR3aWR0aDogMTAwJTtcXHJcXG59XFxyXFxuXFxyXFxuLnNpZGUtbWVudS1oaWRkZW4ge1xcclxcblxcdHdpZHRoOiB2YXIoLS1zaWRlTWVudVdpZHRoKTtcXHJcXG5cXHRtYXJnaW4tbGVmdDogLTEycHg7XFxyXFxufVxcclxcblxcclxcbi5zaWRlLW1lbnUtdmlzaWJsZSB7XFxyXFxuXFx0d2lkdGg6IHZhcigtLXNpZGVNZW51V2lkdGgpO1xcclxcblxcdG1hcmdpbi1sZWZ0OiAtMTJweDtcXHJcXG5cXHRcXHJcXG59XFxyXFxuXFxyXFxuLnNpZGUtbWVudS1zdHlsZSB7XFxyXFxuXFx0cG9zaXRpb246Zml4ZWQ7XFxyXFxuXFx0ei1pbmRleDogMTAyNDtcXHJcXG5cXHRoZWlnaHQ6IDEwMHZoO1xcclxcblxcdHdpZHRoOiAgdmFyKC0tc2lkZU1lbnVXaWR0aCk7XFxyXFxuXFx0XFxyXFxuXFx0Ym9yZGVyLXJpZ2h0OiAycHggc29saWQgI2RlZTdlOTsgLyogbW92ZSB0byBjdXN0b20gc3R5bGUqL1xcclxcblxcdGJhY2tncm91bmQ6ICNmY2ZkZmQ7IC8qIG1vdmUgdG8gY3VzdG9tIHN0eWxlKi9cXHJcXG5cXHRcXHJcXG59XFxyXFxuXFxyXFxuLnBhZ2UtbWVudS12aXNpYmxlIHtcXHJcXG5cXHR3aWR0aDogY2FsYygxMDAlIC0gdmFyKC0tc2lkZU1lbnVXaWR0aCkgLSAxMnB4KTtcXHJcXG59XFxyXFxuXFxyXFxuXFxyXFxuLmNvbnRlbnRDZW50ZXJlZCB7XFxyXFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxyXFxufVxcclxcblxcclxcblxcclxcbi5jb250ZW50Q2VudGVyZWQ6OmJlZm9yZSB7XFxyXFxuICBjb250ZW50OiBcXCdcXCc7XFxyXFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICBoZWlnaHQ6IDEwMCU7IFxcclxcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXHJcXG4gIG1hcmdpbi1yaWdodDogLS4yNWVtOyAgLypBZGp1c3RzIGZvciBzcGFjaW5nKi9cXHJcXG59XFxyXFxuXFxyXFxuLmNvbnRlbnRDZW50ZXJlZCA+ICoge1xcclxcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcclxcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXHJcXG59XFxyXFxuLmxvYWRlci1zdHlsZXtcXHJcXG4gIG1pbi13aWR0aDogMTYlO1xcclxcbiAgLyp6LWluZGV4OiAyMDAwICFpbXBvcnRhbnQ7Ki9cXHJcXG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xcclxcbiAgcGFkZGluZzogMS41cmVtICFpbXBvcnRhbnQ7XFxyXFxuICBib3JkZXI6IDFweCBzb2xpZCAjRTdFOUVDO1xcclxcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtICFpbXBvcnRhbnQ7XFxyXFxuLyogIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXHJcXG4gIHRvcDogNTAlO1xcclxcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwtNTAlKTtcXHJcXG4gIGxlZnQ6IDUwJTsqL1xcclxcbn1cXHJcXG5cXHJcXG5AbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHtcXHJcXG5cXHJcXG5cXHQuc2lkZS1tZW51LXN0eWxlIHtcXHJcXG5cXHRcXHR3aWR0aDogMDtcXHJcXG5cXHRcXHRoZWlnaHQ6IDA7XFxyXFxuXFx0XFx0cG9zaXRpb246IHN0YXRpYztcXHJcXG5cXHR9XFxyXFxuXFxyXFxuXFx0LnBhZ2UtbWVudS12aXNpYmxlIHtcXHJcXG5cXHRcXHR3aWR0aDoxMDAlO1xcclxcblxcdH1cXHJcXG5cXHJcXG5cXHQuZ2FwLTEyIHtcXHJcXG5cXHRcXHRjb2x1bW4tZ2FwOiAwcHg7XFxyXFxuXFx0fVxcclxcblxcclxcblxcclxcbn1cXHJcXG5cXHJcXG48L3N0eWxlPicpO1xuJHRlbXBsYXRlQ2FjaGUucHV0KCcvMDAwNl92cGFnZS9hbmd1bGFyVGVtcGxhdGVzL3ZwYWdlX3YxLmh0bWwnLCc8ZGl2PjxkaXYgbmctc2hvdz1cIiFmb3JtTG9hZGVkICYmICFwYWdlTG9hZGVkXCIgY2xhc3M9XCJjb2wtbGctMTYgbXQtMlwiPjxoNCBjbGFzcz10ZXh0LWNlbnRlcj5Mb2FkaW5nIHBhZ2UuLi48L2g0PjwvZGl2PjxkaXYgbmctaWY9dW5hdXRob3Jpc2VkIGNsYXNzPWNvbC1sZy0xNj48aDQgY2xhc3M9dGV4dC1jZW50ZXI+VW5hdXRob3Jpc2VkITwvaDQ+PC9kaXY+PGRpdiBuZy1zaG93PVwiKGZvcm1Mb2FkZWQgfHwgcGFnZUxvYWRlZCkgJiYgIXVuYXV0aG9yaXNlZFwiIGNsYXNzPjxkaXYgY2xhc3M9cm93PjxkaXYgY2xhc3M9Y29sLWxnLTE2PjxkaXYgY2xhc3M9dGV4dC1jZW50ZXI+PGg0Pnt7cmVzb3VyY2VEZWZpbml0aW9uLk5hbWV9fTwvaDQ+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdj48ZGl2IGNsYXNzPVwibXktMiBwLTJcIj48ZGl2IGNsYXNzPVwiaDQgdGV4dC1jZW50ZXJcIj5CdWlsZCB0aGUgbGF5b3V0IG9mIHlvdXIgcGFnZTwvZGl2PjxkaXYgY2xhc3M9XCJoNiB0ZXh0LWNlbnRlclwiPkthdGFseW8gdXNlcyBjc3MzIGdyaWQgdG8gYnVpbGQgdGhlIGxheW91dCBvZiB5b3VyIHBhZ2UuIElmIHlvdVxcJ3JlIGZhbWlsaWFyIHdpdGggaXQgZ3JlYXQgYnV0IGRvblxcJ3Qgd29ycnkgaWYgeW91XFwncmUgbm90LCBpdFxcJ3MgZWFzeSBhcyBpdCBnZXRzLjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJoNCBweS0xIGJvcmRlci1ib3R0b20gdGV4dC1wcmltYXJ5IGJvcmRlci1wcmltYXJ5XCI+RGVmaW5lIHRoZSBwYWdlIGxheW91dCBjb250YWluZXJzPC9kaXY+PGRpdiBjbGFzcz1cIm15LTIgcC0yXCIgc3R5bGU9XCJkaXNwbGF5OmdyaWQ7Z3JpZC1nYXA6IDIwcHggMjBweDtncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gYXV0bztncmlkLXRlbXBsYXRlLWNvbHVtbnM6YXV0byBhdXRvXCI+PGRpdj48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+TnVtYmVyIG9mIHJvd3M8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLWNoYW5nZT1jYWxjUm93U2l6ZSgpIG5nLW1vZGVsPU5vT2ZSb3dzPiA8bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+TnVtYmVyIG9mIGNvbHVtbnM8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLWNoYW5nZT1jYWxjQ29sdW1uU2l6ZSgpIG5nLW1vZGVsPU5vT2ZDb2x1bW5zPjwvZGl2PjxkaXY+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkdyaWQgZ2FwcyBiZXR3ZWVuIHJvd3M8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPVJvd0dhcD4gPGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPkdyaWQgZ2FwcyBiZXR3ZWVuIGNvbHVtbnM8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPUNvbHVtbkdhcD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPXBhZ2UtZ3JpZC1jb250YWluZXIgc3R5bGU9XCJkaXNwbGF5OmdyaWQ7Z3JpZC1yb3ctZ2FwOiB7e1Jvd0dhcH19cHg7Z3JpZC1jb2x1bW4tZ2FwOiB7e0NvbHVtbkdhcH19cHg7Z3JpZC10ZW1wbGF0ZS1yb3dzOnt7cm93U2l6ZXN9fTtncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHt7Y29sdW1uU2l6ZXN9fVwiPjxkaXYgbmctcmVwZWF0PVwiaXRlbSBpbiBwYWdlR3JpZEl0ZW1zXCIgY2xhc3M9XCJwYWdlLWdyaWQtaXRlbSBwLTMgc2hhZG93LXNtXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7Ym9yZGVyOjFweCBzb2xpZCBsaWdodGdyYXk7Z3JpZC1jb2x1bW46IHt7aXRlbS5Db2x1bW5TdGFydH19IC8gc3BhbiB7e2l0ZW0uSG9yaXpvbnRhbFNpemV9fTtncmlkLXJvdzoge3tpdGVtLlJvd1N0YXJ0fX0gLyBzcGFuIHt7aXRlbS5WZXJ0aWNhbFNpemV9fVwiPjxzcGFuIGNsYXNzPWg1PkxheW91dCBjb250YWluZXIge3tpdGVtLmlkfX08L3NwYW4+PGRpdiBzdHlsZT1cImRpc3BsYXk6Z3JpZDtncmlkLWdhcDogMTBweCAxMHB4O2dyaWQtdGVtcGxhdGUtY29sdW1uczphdXRvIGF1dG9cIj48ZGl2IGNsYXNzPVwiYmctbGlnaHQgcC0yIGJvcmRlciBzaGFkb3ctc20gdGV4dC1wcmltYXJ5XCI+PGRpdiBjbGFzcz1cImg2IGJvcmRlci1ib3R0b20gYm9yZGVyLXByaW1hcnlcIj5Qb3NpdGlvbjwvZGl2PjxkaXY+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPlN0YXJ0IGZyb20gcm93PC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1pdGVtLlJvd1N0YXJ0PjwvZGl2PjxkaXY+PGxhYmVsIGNsYXNzPVwibGFiZWwteHMgdGV4dC1tdXRlZFwiPlN0YXJ0IGZyb20gY29sdW1uPC9sYWJlbD4gPGlucHV0IHR5cGU9dGV4dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wteHNcIiBuZy1tb2RlbD1pdGVtLkNvbHVtblN0YXJ0PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJiZy1saWdodCBwLTIgYm9yZGVyIHNoYWRvdy1zbSB0ZXh0LXByaW1hcnlcIj48ZGl2IGNsYXNzPVwiaDYgYm9yZGVyLWJvdHRvbSBib3JkZXItcHJpbWFyeVwiPlNpemU8L2Rpdj48ZGl2PjxsYWJlbCBjbGFzcz1cImxhYmVsLXhzIHRleHQtbXV0ZWRcIj5Ib3Jpem9udGFsIHNpemU8L2xhYmVsPiA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC14c1wiIG5nLW1vZGVsPWl0ZW0uSG9yaXpvbnRhbFNpemU+PC9kaXY+PGRpdj48bGFiZWwgY2xhc3M9XCJsYWJlbC14cyB0ZXh0LW11dGVkXCI+VmVydGljYWwgc2l6ZTwvbGFiZWw+IDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXhzXCIgbmctbW9kZWw9aXRlbS5WZXJ0aWNhbFNpemU+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7fV0pOyJdfQ=="}